From 95fd8a2a4fd6bd3b52caf3c923ae3d4827887765 Mon Sep 17 00:00:00 2001 From: Leah Bush <157434496+LeahMarieBush@users.noreply.github.com> Date: Wed, 14 May 2025 15:33:56 -0500 Subject: [PATCH 01/47] feat: add all-docs-paths to compare-api-responses script (#391) --- scripts/compare-api-responses/index.mjs | 100 +++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/scripts/compare-api-responses/index.mjs b/scripts/compare-api-responses/index.mjs index 9cb56ebe66..fa6376b269 100644 --- a/scripts/compare-api-responses/index.mjs +++ b/scripts/compare-api-responses/index.mjs @@ -45,7 +45,7 @@ program .option('-p, --product ', 'Product') .option( '-a, --api ', - 'API type: "content", "nav-data", "version-metadata", or "content-versions"', + 'API type: "content", "nav-data", "version-metadata", "content-versions", or "all-docs-paths"', 'version-metadata', ) .option('-d, --drop-keys ', 'Result keys to drop', (value) => { @@ -334,6 +334,104 @@ if (options.api === 'content-versions') { saveTestOutputIfSelected(outputString, newApiURL) } +if (options.api === 'all-docs-paths') { + const allProducts = [ + 'boundary', + 'consul', + 'hcp-docs', + 'nomad', + 'packer', + 'ptfe-releases', + 'sentinel', + 'terraform', + 'terraform-cdk', + 'terraform-docs-agents', + 'terraform-docs-common', + 'terraform-plugin-framework', + 'terraform-plugin-log', + 'terraform-plugin-mux', + 'terraform-plugin-sdk', + 'terraform-plugin-testing', + 'vagrant', + 'vault', + 'waypoint', + ] + let newApiURL + let oldApiURL + if (options.product) { + newApiURL = `${options.newApiUrl}/api/all-docs-paths?products=${options.product}` + + const contentAPIFilter = allProducts.map((repo) => { + if (repo !== options.product) { + return `filterOut=${repo}` + } + }) + const contentAPIFilterString = contentAPIFilter.join('&') + + oldApiURL = `${options.oldApiUrl}/api/all-docs-paths?${contentAPIFilterString}` + } else { + newApiURL = `${options.newApiUrl}/api/all-docs-paths` + oldApiURL = `${options.oldApiUrl}/api/all-docs-paths` + } + + let newApiResponse, oldApiResponse + try { + newApiResponse = await fetch(newApiURL) + oldApiResponse = await fetch(oldApiURL) + + if (!newApiResponse.ok) { + console.log( + `Error fetching API response:\n${newApiURL}\n${newApiResponse.statusText}`, + ) + } + if (!oldApiResponse.ok) { + console.log( + `Error fetching API response:\n${oldApiURL}\n${oldApiResponse.statusText}`, + ) + } + } catch (error) { + console.log(`Error fetching API response\n${error}`) + } + + let newApiData, oldApiData + try { + newApiData = await newApiResponse.json() + oldApiData = await oldApiResponse.json() + } catch (error) { + console.log(`Error decoding JSON\n${error}`) + } + + // Filter out just the paths to compare and sort them alphabetically + const newDataToCompare = newApiData.result + .map((item) => { + return item.path + }) + .sort() + const oldDataToCompare = oldApiData.result + .map((item) => { + return item.path + }) + .sort() + + const diffOptions = { + contextLines: 1, + expand: false, + } + + const difference = diff(oldDataToCompare, newDataToCompare, diffOptions) + + const outputString = `Testing API URL:\n${newApiURL}` + console.log(outputString) + + if (difference.includes('Compared values have no visual difference.')) { + console.log('✅ No visual difference found.\n') + } else { + console.log(`${difference}\n`) + } + + saveTestOutputIfSelected(outputString, newApiURL) +} + if ( options.api === 'content' || options.api === 'nav-data' || From d6571cc3a2be347898b030043d7a6230210e6271 Mon Sep 17 00:00:00 2001 From: Kelsi Hoyle Date: Fri, 16 May 2025 09:04:27 -0600 Subject: [PATCH 02/47] remove inlcude, add warning comment --- .../v1.22.x/docs/cloud-docs/agents/agents.mdx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx b/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx index 8b04a23b5a..53794c50c0 100644 --- a/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx +++ b/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx @@ -1,3 +1,8 @@ + + --- page_title: Install and run HCP Terraform agents description: >- @@ -247,7 +252,6 @@ After initiating a graceful shutdown by either of these methods, the terminal us Environment variable: `TFC_AGENT_ACCEPT` -@include 'policy.mdx' * `-request-forwarding`: Enable handling of forwarded HTTP requests. Enable this option only if you From a0c0270acc77b6055a31ab4b6a0711f6a7a92d53 Mon Sep 17 00:00:00 2001 From: Kelsi Hoyle Date: Fri, 16 May 2025 10:01:44 -0600 Subject: [PATCH 03/47] comment on just the cli options --- .../v1.22.x/docs/cloud-docs/agents/agents.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx b/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx index 53794c50c0..9b3d9375bd 100644 --- a/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx +++ b/content/terraform-docs-agents/v1.22.x/docs/cloud-docs/agents/agents.mdx @@ -1,8 +1,3 @@ - - --- page_title: Install and run HCP Terraform agents description: >- @@ -128,6 +123,11 @@ The agent maintains a registration and a liveness indicator within HCP Terraform After initiating a graceful shutdown by either of these methods, the terminal user or parent program should wait for the agent to exit. The amount of time this exit takes depends on the agent's current workload. The agent waits for any current operations to complete before deregistering and exiting. + + # CLI Options From 063ca005ab2aefbe2429301b7a9d16edbd1fef24 Mon Sep 17 00:00:00 2001 From: Austin Valle Date: Fri, 16 May 2025 14:47:07 -0400 Subject: [PATCH 04/47] Add `terraform-plugin-mux@0.19.x` documentation (#400) --- .../v0.19.x/data/plugin-mux-nav-data.json | 25 ++++ ...combining-protocol-version-5-providers.mdx | 139 ++++++++++++++++++ ...combining-protocol-version-6-providers.mdx | 128 ++++++++++++++++ .../v0.19.x/docs/plugin/mux/index.mdx | 34 +++++ .../translating-protocol-version-5-to-6.mdx | 92 ++++++++++++ .../translating-protocol-version-6-to-5.mdx | 92 ++++++++++++ .../terraform-plugin-mux/v0.19.x/img/.gitkeep | 0 7 files changed, 510 insertions(+) create mode 100644 content/terraform-plugin-mux/v0.19.x/data/plugin-mux-nav-data.json create mode 100644 content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-5-providers.mdx create mode 100644 content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-6-providers.mdx create mode 100644 content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/index.mdx create mode 100644 content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-5-to-6.mdx create mode 100644 content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-6-to-5.mdx create mode 100644 content/terraform-plugin-mux/v0.19.x/img/.gitkeep diff --git a/content/terraform-plugin-mux/v0.19.x/data/plugin-mux-nav-data.json b/content/terraform-plugin-mux/v0.19.x/data/plugin-mux-nav-data.json new file mode 100644 index 0000000000..ce4b003fec --- /dev/null +++ b/content/terraform-plugin-mux/v0.19.x/data/plugin-mux-nav-data.json @@ -0,0 +1,25 @@ +[ + { + "heading": "Combining and Translating" + }, + { + "title": "Overview", + "path": "" + }, + { + "title": "Combining Protocol v5 Providers", + "path": "combining-protocol-version-5-providers" + }, + { + "title": "Combining Protocol v6 Providers", + "path": "combining-protocol-version-6-providers" + }, + { + "title": "Translating Protocol v5 to v6", + "path": "translating-protocol-version-5-to-6" + }, + { + "title": "Translating Protocol v6 to v5", + "path": "translating-protocol-version-6-to-5" + } +] diff --git a/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-5-providers.mdx b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-5-providers.mdx new file mode 100644 index 0000000000..28397885b7 --- /dev/null +++ b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-5-providers.mdx @@ -0,0 +1,139 @@ +--- +page_title: 'Plugin Development - Combining Protocol Version 5 Providers' +description: >- + Use the tf5muxserver package in terraform-plugin-mux to combine protocol version 5 providers. +--- + +# Combining Protocol Version 5 Providers + +The [`tf5muxserver`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf5muxserver) package enables combining any number of [protocol version 5 provider servers](/terraform/plugin/how-terraform-works#protocol-version-5) into a single server. + +Use this package to: + +* Support multiple development teams across separate codebases. +* Support multiple provider SDK implementations. For example, you could downgrade an existing [terraform-plugin-framework](/terraform/plugin/framework) provider to protocol version 5 and then combine it with one or more providers built with [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2). + +## Compatibility + +Protocol version 5 provider servers are compatible with Terraform CLI 0.12 and later. + +The following provider server implementations are supported: + +* [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2): A higher-level SDK that makes Terraform provider development easier by abstracting implementation details. +* [terraform-plugin-go tf5server](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server): A lower-level SDK to develop Terraform providers for more advanced use cases. +* [tf6to5server](/terraform/plugin/mux/translating-protocol-version-6-to-5): A package to translate protocol version 6 providers into protocol version 5. + +## Requirements + +To be combined, provider servers must meet the following requirements: + +* All provider schemas (except block `MinItems`/`MaxItems`) must match. +* All provider meta schemas must match. +* Only one provider may implement each resource and data source. + +If publishing to the [Terraform Registry](/terraform/registry), set `metadata.protocol_versions` to `["5.0"]` in the [Terraform Registry manifest file](/terraform/registry/providers/publishing#terraform-registry-manifest-file). + +## Code Implementation + +Use the [`tf5muxserver.NewMuxServer()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf5muxserver#NewMuxServer) function to create a combined provider server. Most providers implement this method in the provider `main()` function of the root directory `main.go` file or within a shared internal package to enable [testing for the combined provider](#testing-implementation). You can use [`tf5server.WithManagedDebug()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server#WithManagedDebug) to enable debugger support. + +The following example implements `tf5muxserver.NewMuxServer()` in a `main()` function. + +```go +package main + +import ( + "context" + "flag" + "log" + + "github.com/example/terraform-provider-example/internal/provider1" + "github.com/example/terraform-provider-example/internal/provider2" + "github.com/example/terraform-provider-example/internal/framework_provider" + "github.com/hashicorp/terraform-plugin-framework/providerserver" + "github.com/hashicorp/terraform-plugin-go/tfprotov5" + "github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server" + "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" +) + +var ( + // Version can be updated by goreleaser on release + version string = "dev" +) + +func main() { + debugFlag := flag.Bool("debug", false, "Start provider in debug mode.") + flag.Parse() + + ctx := context.Background() + providers := []func() tfprotov5.ProviderServer{ + // Example terraform-plugin-sdk/v2 providers + provider1.New(version)().GRPCProvider, + provider2.New(version)().GRPCProvider, + + // Example terraform-plugin-framework provider + providerserver.NewProtocol5( + framework_provider.New(version)(), + ), + } + + muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + log.Fatal(err) + } + + var serveOpts []tf5server.ServeOpt + + if *debugFlag { + serveOpts = append(serveOpts, tf5server.WithManagedDebug()) + } + + err = tf5server.Serve( + "registry.terraform.io/example/example", + muxServer.ProviderServer, + serveOpts..., + ) + + if err != nil { + log.Fatal(err) + } +} +``` + +## Testing Implementation + +You can test individual providers using the same [acceptance tests](/terraform/plugin/testing/acceptance-tests) as before. Set the `ProtoV5ProviderFactories` field of `TestCase` with an instance of the mux server, instead of declaring the provider with other `TestCase` fields such as `ProviderFactories`. + +The following example uses the acceptance testing framework to create a test for two providers. + +```go +resource.Test(t, resource.TestCase{ + // ... other TestCase fields ... + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error) { + "example": func() (tfprotov5.ProviderServer, error) { + ctx := context.Background() + providers := []func() tfprotov5.ProviderServer{ + // Example terraform-plugin-sdk/v2 providers + provider1.New(version)().GRPCProvider, + provider2.New(version)().GRPCProvider, + + // Example terraform-plugin-framework provider + providerserver.NewProtocol5( + framework_provider.New(version)(), + ), + } + + muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + return nil, err + } + + return muxServer.ProviderServer(), nil + }, + }, +}) +``` + +Refer to the [acceptance tests](/terraform/plugin/testing/acceptance-tests) documentation for more details. diff --git a/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-6-providers.mdx b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-6-providers.mdx new file mode 100644 index 0000000000..9b5dcc7ddd --- /dev/null +++ b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/combining-protocol-version-6-providers.mdx @@ -0,0 +1,128 @@ +--- +page_title: 'Plugin Development - Combining Protocol Version 6 Providers' +description: >- + Use the tf6muxserver package in terraform-plugin-mux to combine protocol version 6 providers. +--- + +# Combining Protocol Version 6 Providers + +The [`tf6muxserver`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf6muxserver) package enables combining any number of [protocol version 6 provider servers](/terraform/plugin/how-terraform-works#protocol-version-6) into a single server. + +Use this package to: + +* Support multiple development teams across separate codebases. +* Support multiple provider SDK implementations. For example, you could upgrade an existing [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2) provider to protocol version 6 and then combine it with one or more providers built with [terraform-plugin-framework](/terraform/plugin/framework). + +## Compatibility + +Protocol version 6 provider servers are compatible with Terraform CLI 1.0 and later. + +The following provider server implementations are supported: + +* [terraform-plugin-framework](/terraform/plugin/framework): A higher-level SDK that makes Terraform provider development easier by abstracting implementation details. +* [terraform-plugin-go tf6server](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server): A lower-level SDK to develop Terraform providers for more advanced use cases. +* [tf5to6server](/terraform/plugin/mux/translating-protocol-version-5-to-6): A package to translate protocol version 5 providers into protocol version 6. + +## Requirements + +To be combined, provider servers must meet the following requirements: + +* All provider schemas must match. +* All provider meta schemas must match. +* Only one provider may implement each resource and data source. + +If publishing to the [Terraform Registry](/terraform/registry), set `metadata.protocol_versions` to `["6.0"]` in the [Terraform Registry manifest file](/terraform/registry/providers/publishing#terraform-registry-manifest-file). + +## Code Implementation + +Use the [`tf6muxserver.NewMuxServer()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf6muxserver#NewMuxServer) function to create a combined provider server. Most providers implement this in the provider `main()` function of the root directory `main.go` file or within a shared internal package to enable [testing for the combined provider](#testing-implementation). You can use [`tf6server.WithManagedDebug()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server#WithManagedDebug) to enable debugger support. + +The following example implements `tf6muxserver.NewMuxServer()` in a `main()` function. + +```go +package main + +import ( + "context" + "flag" + "log" + + "github.com/example/terraform-provider-example/internal/provider1" + "github.com/example/terraform-provider-example/internal/provider2" + "github.com/hashicorp/terraform-plugin-framework/tfsdk" + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server" + "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" +) + +var ( + // Version can be updated by goreleaser on release + version string = "dev" +) + +func main() { + debugFlag := flag.Bool("debug", false, "Start provider in debug mode.") + flag.Parse() + + ctx := context.Background() + providers := []func() tfprotov6.ProviderServer{ + // Example terraform-plugin-framework providers + providerserver.NewProtocol6(provider1.New("test")()) + providerserver.NewProtocol6(provider2.New("test")()) + } + + muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + log.Fatal(err) + } + + var serveOpts []tf6server.ServeOpt + + if *debugFlag { + serveOpts = append(serveOpts, tf6server.WithManagedDebug()) + } + + err = tf6server.Serve( + "registry.terraform.io/example/example", + muxServer.ProviderServer, + serveOpts..., + ) + + if err != nil { + log.Fatal(err) + } +} +``` + +## Testing Implementation + +You can test individual providers using the same [acceptance tests](/terraform/plugin/testing/acceptance-tests) as before. Set the `ProtoV6ProviderFactories` field of `TestCase` with an instance of the mux server, instead of declaring the provider with other `TestCase` fields such as `ProviderFactories`. + +The following example uses the acceptance testing framework to create a test for two providers. + +```go +resource.Test(t, resource.TestCase{ + // ... other TestCase fields ... + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "example": func() (tfprotov6.ProviderServer, error) { + ctx := context.Background() + providers := []func() tfprotov6.ProviderServer{ + // Example terraform-plugin-framework providers + providerserver.NewProtocol6(provider1.New("test")()) + providerserver.NewProtocol6(provider2.New("test")()) + } + + muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + return nil, err + } + + return muxServer.ProviderServer(), nil + }, + }, +}) +``` + +Refer to the [acceptance tests](/terraform/plugin/testing/acceptance-tests) documentation for more details. diff --git a/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/index.mdx b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/index.mdx new file mode 100644 index 0000000000..4baffa45cf --- /dev/null +++ b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/index.mdx @@ -0,0 +1,34 @@ +--- +page_title: "Plugin Development - Combining and Translating Providers: Overview" +description: >- + Use terraform-plugin-mux to combine and translate providers. It minimizes code changes by wrapping existing provider servers. +--- + +# Combining and Translating Providers + +The [terraform-plugin-mux](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux) Go module is a collection of Go packages for combining (multiplexing) and translating provider servers. It helps minimize provider code changes by wrapping existing provider servers. This functionality is based on the [Terraform Plugin Protocol](/terraform/plugin/how-terraform-works#terraform-plugin-protocol) and [`terraform-plugin-go`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go) provider servers. + +## Use Cases + +The `terraform-plugin-mux` Go module enables flexibility when you develop and maintain Terraform providers. It is especially useful when you need to upgrade an existing provider to use the plugin framework SDK or the latest version of the plugin protocol. We recommend using `terraform-plugin-mux` for the following use cases: + +- Combine providers to reduce maintenance burden while still supporting varying Terraform requirements or multiple provider SDK implementations. +- Migrate resources and data sources from [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2) to [terraform-plugin-framework](/terraform/plugin/framework) over time. +- Develop with [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2), but require Terraform CLI 1.0 or later. +- Develop with [terraform-plugin-framework](/terraform/plugin/framework), but support Terraform CLI 0.12 or later. + +## Combine Protocol 6 Providers + +Use the [tf6muxserver](/terraform/plugin/mux/combining-protocol-version-6-providers) package to combine any number of [protocol version 6 provider servers](/terraform/plugin/how-terraform-works#protocol-version-6) into a single server. + +## Combine Protocol 5 Providers + +Use the [tf5muxserver](/terraform/plugin/mux/combining-protocol-version-5-providers) package to combine any number of [protocol version 5 provider servers](/terraform/plugin/how-terraform-works#protocol-version-5) into a single server. + +## Translate Protocol 5 Providers to Protocol 6 + +Use the [tf5to6server](/terraform/plugin/mux/translating-protocol-version-5-to-6) package to translate a [protocol version 5 provider server](/terraform/plugin/how-terraform-works#protocol-version-5) into a [protocol version 6 provider server](/terraform/plugin/how-terraform-works#protocol-version-6). + +## Translate Protocol 6 Providers to Protocol 5 + +Use the [tf6to5server](/terraform/plugin/mux/translating-protocol-version-6-to-5) package to translate a [protocol version 6 provider server](/terraform/plugin/how-terraform-works#protocol-version-6) into a [protocol version 5 provider server](/terraform/plugin/how-terraform-works#protocol-version-5). diff --git a/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-5-to-6.mdx b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-5-to-6.mdx new file mode 100644 index 0000000000..f61761d430 --- /dev/null +++ b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-5-to-6.mdx @@ -0,0 +1,92 @@ +--- +page_title: 'Plugin Development - Translating Protocol Version 5 to 6' +description: >- + Use the tf5to6server package in terraform-plugin-mux to translate protocol version 5 providers to protocol version 6. +--- + +# Translating Protocol Version 5 to 6 + +The [`tf5to6server`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf5to6server) package enables translating a [protocol version 5](/terraform/plugin/how-terraform-works#protocol-version-5) provider server into a [protocol version 6](/terraform/plugin/how-terraform-works#protocol-version-6) provider server. + +Use this package to: + +* Migrate individual resources and data sources from [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2) to [terraform-plugin-framework](/terraform/plugin/framework) over time, while using protocol version 6 features in terraform-plugin-framework. +* Develop with [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2), but require Terraform CLI 1.0 or later. + +## Compatibility + +Protocol version 6 provider servers are compatible with Terraform CLI 1.0 and later. Terraform CLI 1.1.5 and later is required to upgrade [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2). + +The following provider server implementations are supported: + +* [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2): A higher-level SDK that makes Terraform provider development easier by abstracting implementation details. +* [terraform-plugin-go tf5server](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server): A lower-level SDK to develop Terraform providers for more advanced use cases. + +## Requirements + +Upgrading provider servers from protocol version 5 to protocol version 6 has no provider code requirements. + +If publishing to the [Terraform Registry](/terraform/registry), set `metadata.protocol_versions` to `["6.0"]` in the [Terraform Registry manifest file](/terraform/registry/providers/publishing#terraform-registry-manifest-file). + +## Code Implementation + +Use the [`tf5to6server.UpgradeServer()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf5to6server#UpgradeServer) function to wrap a provider server. For most providers, this is either in the provider `main()` function of the root directory `main.go` file or where [`tf6muxserver`](/terraform/plugin/mux/combining-protocol-version-6-providers) is implemented in the codebase. + +The following example upgrades a terraform-plugin-sdk/v2 provider. + +```go +upgradedSdkProvider, err := tf5to6server.UpgradeServer( + context.Background(), + sdkprovider.New(version)().GRPCProvider, +) +``` + +The following example uses [`tf6server`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server) to serve the upgraded provider directly. + +```go +err = tf6server.Serve( + "registry.terraform.io/example/example", + func() tfprotov6.ProviderServer { + return upgradedSdkProvider + }, +) +``` + +The following example uses [`tf6muxserver`](/terraform/plugin/mux/combining-protocol-version-6-providers) to serve the upgraded provider while it is combined with others. + +```go +providers := []func() tfprotov6.ProviderServer{ + func() tfprotov6.ProviderServer { + return upgradedSdkProvider + }, + + // Example terraform-plugin-framework provider + providerserver.NewProtocol6(frameworkprovider.New(version)()) +} + +muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) +``` + +Refer to the [`tf6muxserver`](/terraform/plugin/mux/combining-protocol-version-6-providers) documentation for more details about how to serve the combined provider. + +## Testing Implementation + +You can test the original provider using the same [acceptance tests](/terraform/plugin/testing/acceptance-tests) as before. Set the `ProtoV6ProviderFactories` field of `TestCase` with an instance of the upgraded server, instead of declaring the provider with other `TestCase` fields such as `ProviderFactories`. + +The following example creates a test for a combined provider. + +```go +resource.Test(t, resource.TestCase{ + // ... other TestCase fields ... + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "example": func() (tfprotov6.ProviderServer, error) { + return tf5to6server.UpgradeServer( + context.Background(), + sdkprovider.New("test")().GRPCProvider, + ) + }, + }, +}) +``` + +Refer to the [acceptance tests](/terraform/plugin/testing/acceptance-tests) documentation for more details. diff --git a/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-6-to-5.mdx b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-6-to-5.mdx new file mode 100644 index 0000000000..7fd0188dae --- /dev/null +++ b/content/terraform-plugin-mux/v0.19.x/docs/plugin/mux/translating-protocol-version-6-to-5.mdx @@ -0,0 +1,92 @@ +--- +page_title: 'Plugin Development - Translating Protocol Version 6 to 5' +description: >- + Use the tf6to5server package in terraform-plugin-mux to translate protocol version 6 providers to protocol version 5. +--- + +# Translating Protocol Version 6 to 5 + +The [`tf6to5server`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf6to5server) package enables translating a [protocol version 6](/terraform/plugin/how-terraform-works#protocol-version-6) provider server into a [protocol version 5](/terraform/plugin/how-terraform-works#protocol-version-5) provider server. + +Use this package to: + +* Migrate individual resources and data sources from [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2) to [terraform-plugin-framework](/terraform/plugin/framework) over time, while maintaining Terraform CLI 0.12 and later compatibility. +* Develop with [terraform-plugin-framework](/terraform/plugin/framework), but support Terraform CLI 0.12 and later. + +## Compatibility + +Protocol version 5 provider servers are compatible with Terraform CLI 0.12 and later. + +The following provider server implementations are supported: + +* [terraform-plugin-framework](/terraform/plugin/framework): A higher-level SDK that makes Terraform provider development easier by abstracting implementation details. +* [terraform-plugin-go tf6server](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server): A lower-level SDK to develop Terraform providers for more advanced use cases. + +## Requirements + +Downgrading provider servers from protocol version 6 to protocol version 5 will return an error if there are protocol version 6 features that are in use that are not available in protocol version 5. Refer to the [protocol version 6](/terraform/plugin/how-terraform-works#protocol-version-6) documentation for more information. + +If publishing to the [Terraform Registry](/terraform/registry), set `metadata.protocol_versions` to `["5.0"]` in the [Terraform Registry manifest file](/terraform/registry/providers/publishing#terraform-registry-manifest-file). + +## Code Implementation + +Use the [`tf6to5server.DowngradeServer()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux/tf6to5server#DowngradeServer) function to wrap a provider server. For most providers, this is in the provider `main()` function of the root directory `main.go` file or where [`tf5muxserver`](/terraform/plugin/mux/combining-protocol-version-5-providers) is implemented in the codebase, if applicable. + +The following example downgrades a `terraform-plugin-framework` provider. + +```go +downgradedFrameworkProvider, err := tf6to5server.DowngradeServer( + context.Background(), + providerserver.NewProtocol6(frameworkprovider.New(version)()), +) +``` + +The following example uses [`tf5server`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server) to serve the downgraded provider directly. + +```go +err = tf5server.Serve( + "registry.terraform.io/example/example", + func() tfprotov5.ProviderServer { + return downgradedFrameworkProvider + }, +) +``` + +The following example uses [`tf5muxserver`](/terraform/plugin/mux/combining-protocol-version-5-providers) to serve the downgraded provider while it is combined with other providers. + +```go +providers := []func() tfprotov5.ProviderServer{ + func() tfprotov5.ProviderServer { + return downgradedFrameworkProvider + }, + + // Example terraform-plugin-sdk/v2 provider + sdkprovider.New(version)().GRPCProvider, +} + +muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) +``` + +Refer to the [`tf5muxserver`](/terraform/plugin/mux/combining-protocol-version-5-providers) documentation for more details about how to serve the combined provider. + +## Testing Implementation + +You can test the original provider using the same [acceptance tests](/terraform/plugin/testing/acceptance-tests) as before. Set the `ProtoV5ProviderFactories` field of `TestCase` with an instance of the upgraded server, instead of declaring the provider with other `TestCase` fields such as `ProviderFactories`. + +The following example creates a test case for a downgraded provider. + +```go +resource.Test(t, resource.TestCase{ + // ... other TestCase fields ... + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error) { + "example": func() (tfprotov5.ProviderServer, error) { + return tf6to5server.DowngradeServer( + context.Background(), + providerserver.NewProtocol6(frameworkprovider.New("test")()), + ) + }, + }, +}) +``` + +Refer to the [acceptance tests](/terraform/plugin/sdkv2/testing/acceptance-tests) documentation for more details. diff --git a/content/terraform-plugin-mux/v0.19.x/img/.gitkeep b/content/terraform-plugin-mux/v0.19.x/img/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 From da70862df732f467d545a39ffa0710a4acbdc172 Mon Sep 17 00:00:00 2001 From: Baraa Basata Date: Fri, 16 May 2025 15:12:51 -0400 Subject: [PATCH 05/47] Add `terraform-plugin-testing@1.13.x` documentation (#346) * initial copy of terraform-plugin-testing 1.12.x to 1.13.x $ cp -r content/terraform-plugin-testing/v1.12.x content/terraform-plugin-testing/v1.13.x $ git add content/terraform-plugin-testing/v1.13.x * Add import mode to testing-patterns.mdx * fixup! Add import mode to testing-patterns.mdx * Update content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/testing-patterns.mdx * Update content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/testing-patterns.mdx Co-authored-by: Austin Valle * Add teststep subsection for import mode * Add teststep subsection for import mode * Add teststep subsection for import mode * Expand on import mode * Update plugin/testing/acceptance-tests/index.mdx * Update acceptance-tests/index.mdx * Update acceptance-tests/index.mdx * em dash * Update acceptance-tests/continuous-integration * Update acceptance-tests/index.mdx * Update import-mode.mdx * Update acceptance-tests/index.mdx * tidy * Update testing/index.mdx * Update testing/index.mdx * Update testing nav * Update testing/index.mdx * Update testing/index.mdx * Fix code block * Update testing/* * Simplify acceptance-tests * Omit import example * Update content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/environment-variables.mdx Co-authored-by: Austin Valle * Fix environment-variables.mdx formatting * Fix environment-variables.mdx formatting * Tidy * Update content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/continuous-integration.mdx Co-authored-by: Austin Valle * Update content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/import-mode.mdx Co-authored-by: Austin Valle * Apply suggestions from code review Co-authored-by: Austin Valle * Tidy * Make heading H1 * Tidy import-mode --------- Co-authored-by: Austin Valle --- .../v1.13.x/data/plugin-testing-nav-data.json | 192 +++++ .../acceptance-tests/configuration.mdx | 277 +++++++ .../continuous-integration.mdx | 149 ++++ .../environment-variables.mdx | 55 ++ .../acceptance-tests/ephemeral-resources.mdx | 271 +++++++ .../testing/acceptance-tests/import-mode.mdx | 94 +++ .../plugin/testing/acceptance-tests/index.mdx | 166 +++++ .../known-value-checks/bool.mdx | 77 ++ .../known-value-checks/custom.mdx | 76 ++ .../known-value-checks/float32.mdx | 77 ++ .../known-value-checks/float64.mdx | 77 ++ .../known-value-checks/index.mdx | 56 ++ .../known-value-checks/int32.mdx | 77 ++ .../known-value-checks/int64.mdx | 77 ++ .../known-value-checks/list.mdx | 111 +++ .../known-value-checks/map.mdx | 113 +++ .../known-value-checks/not-null.mdx | 40 + .../known-value-checks/null.mdx | 40 + .../known-value-checks/number.mdx | 83 +++ .../known-value-checks/object.mdx | 81 ++ .../known-value-checks/set.mdx | 111 +++ .../known-value-checks/string.mdx | 107 +++ .../known-value-checks/tuple.mdx | 123 ++++ .../acceptance-tests/plan-checks/custom.mdx | 87 +++ .../acceptance-tests/plan-checks/index.mdx | 128 ++++ .../acceptance-tests/plan-checks/output.mdx | 309 ++++++++ .../acceptance-tests/plan-checks/resource.mdx | 286 ++++++++ .../acceptance-tests/state-checks/custom.mdx | 122 +++ .../acceptance-tests/state-checks/index.mdx | 20 + .../acceptance-tests/state-checks/output.mdx | 119 +++ .../state-checks/resource.mdx | 310 ++++++++ .../testing/acceptance-tests/sweepers.mdx | 121 +++ .../testing/acceptance-tests/testcase.mdx | 352 +++++++++ .../testing/acceptance-tests/teststep.mdx | 375 ++++++++++ .../testing/acceptance-tests/tfjson-paths.mdx | 692 ++++++++++++++++++ .../acceptance-tests/tfversion-checks.mdx | 267 +++++++ .../value-comparers/index.mdx | 183 +++++ .../v1.13.x/docs/plugin/testing/index.mdx | 55 ++ .../v1.13.x/docs/plugin/testing/migrating.mdx | 133 ++++ .../docs/plugin/testing/testing-patterns.mdx | 392 ++++++++++ .../docs/plugin/testing/unit-testing.mdx | 93 +++ .../v1.13.x/img/.gitkeep | 0 42 files changed, 6574 insertions(+) create mode 100644 content/terraform-plugin-testing/v1.13.x/data/plugin-testing-nav-data.json create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/configuration.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/continuous-integration.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/environment-variables.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/ephemeral-resources.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/import-mode.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/bool.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/custom.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float32.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float64.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/index.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int32.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int64.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/list.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/map.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/not-null.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/null.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/number.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/object.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/set.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/string.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/tuple.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/custom.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/index.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/output.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/resource.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/custom.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/index.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/output.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/resource.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/sweepers.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/testcase.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/teststep.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfjson-paths.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfversion-checks.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/value-comparers/index.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/index.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/migrating.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/testing-patterns.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/unit-testing.mdx create mode 100644 content/terraform-plugin-testing/v1.13.x/img/.gitkeep diff --git a/content/terraform-plugin-testing/v1.13.x/data/plugin-testing-nav-data.json b/content/terraform-plugin-testing/v1.13.x/data/plugin-testing-nav-data.json new file mode 100644 index 0000000000..0cb8e53de8 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/data/plugin-testing-nav-data.json @@ -0,0 +1,192 @@ +[ + { + "heading": "Testing" + }, + { + "title": "Overview", + "path": "" + }, + { + "title": "Acceptance Testing", + "routes": [ + { + "title": "Overview", + "path": "acceptance-tests" + }, + { + "title": "Test Cases", + "path": "acceptance-tests/testcase" + }, + { + "title": "Test Steps", + "routes": [{ + "title": "Overview", + "path": "acceptance-tests/teststep" + }, { + "title": "Import mode", + "path": "acceptance-tests/import-mode" + }] + }, + { + "title": "Terraform Version Checks", + "path": "acceptance-tests/tfversion-checks" + }, + { + "title": "Plan Checks", + "routes": [ + { + "title": "Overview", + "path": "acceptance-tests/plan-checks" + }, + { + "title": "Resource Plan Checks", + "path": "acceptance-tests/plan-checks/resource" + }, + { + "title": "Output Plan Checks", + "path": "acceptance-tests/plan-checks/output" + }, + { + "title": "Custom Plan Checks", + "path": "acceptance-tests/plan-checks/custom" + } + ] + }, + { + "title": "State Checks", + "routes": [ + { + "title": "Overview", + "path": "acceptance-tests/state-checks" + }, + { + "title": "Resource State Checks", + "path": "acceptance-tests/state-checks/resource" + }, + { + "title": "Output State Checks", + "path": "acceptance-tests/state-checks/output" + }, + { + "title": "Custom State Checks", + "path": "acceptance-tests/state-checks/custom" + } + ] + }, + { + "title": "Known Value Checks", + "routes": [ + { + "title": "Overview", + "path": "acceptance-tests/known-value-checks" + }, + { + "title": "Bool", + "path": "acceptance-tests/known-value-checks/bool" + }, + { + "title": "Custom", + "path": "acceptance-tests/known-value-checks/custom" + }, + { + "title": "Float32", + "path": "acceptance-tests/known-value-checks/float32" + }, + { + "title": "Float64", + "path": "acceptance-tests/known-value-checks/float64" + }, + { + "title": "Int32", + "path": "acceptance-tests/known-value-checks/int32" + }, + { + "title": "Int64", + "path": "acceptance-tests/known-value-checks/int64" + }, + { + "title": "List", + "path": "acceptance-tests/known-value-checks/list" + }, + { + "title": "Map", + "path": "acceptance-tests/known-value-checks/map" + }, + { + "title": "NotNull", + "path": "acceptance-tests/known-value-checks/not-null" + }, + { + "title": "Null", + "path": "acceptance-tests/known-value-checks/null" + }, + { + "title": "Number", + "path": "acceptance-tests/known-value-checks/number" + }, + { + "title": "Object", + "path": "acceptance-tests/known-value-checks/object" + }, + { + "title": "Set", + "path": "acceptance-tests/known-value-checks/set" + }, + { + "title": "String", + "path": "acceptance-tests/known-value-checks/string" + }, + { + "title": "Tuple", + "path": "acceptance-tests/known-value-checks/tuple" + } + ] + }, + { + "title": "Value Comparers", + "routes": [ + { + "title": "Overview", + "path": "acceptance-tests/value-comparers" + } + ] + }, + { + "title": "Sweepers", + "path": "acceptance-tests/sweepers" + }, + { + "title": "Terraform JSON Paths", + "path": "acceptance-tests/tfjson-paths" + }, + { + "title": "Terraform Configuration", + "path": "acceptance-tests/configuration" + }, + { + "title": "Ephemeral Resources", + "path": "acceptance-tests/ephemeral-resources" + }, + { + "title": "Environment Variables", + "path": "acceptance-tests/environment-variables" + }, + { + "title": "Continuous Integration", + "path": "acceptance-tests/continuous-integration" + } + ] + }, + { + "title": "Testing Patterns", + "path": "testing-patterns" + }, + { + "title": "Unit Testing", + "path": "unit-testing" + }, + { + "title": "Migrating from SDK", + "path": "migrating" + } +] diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/configuration.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/configuration.mdx new file mode 100644 index 0000000000..f18c2a9401 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/configuration.mdx @@ -0,0 +1,277 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Terraform Configuration' +description: >- + Terraform Configuration specifies the configuration to be used during an acceptance test at the TestStep level. Terraform variables define the values to be used + in conjunction with Terraform configuration. +--- + +# Terraform Configuration + +The configuration used during the execution of an acceptance test can be specified at the [TestStep](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep) level by populating one of the following mutually exclusive fields: + +* [TestStep.Config](#teststep-config) +* [TestStep.ConfigDirectory](#teststep-configdirectory) +* [TestStep.ConfigFile](#teststep-configfile) + +Terraform configuration can be used in conjunction with Terraform variables defined via [TestStep.ConfigVariables](/terraform/plugin/testing/acceptance-tests/configuration#teststep-configvariables). + +## TestStep Config + +The `TestStep.Config` field accepts a string containing valid Terraform configuration. + +In the following example, the `Config` field specifies a resource which is used in combination with `ExternalProviders` to specify the version and source for the provider: + +```go +func TestAccResourcePassword_UpgradeFromVersion3_2_0(t *testing.T) { + resource.Test(t, resource.TestCase{ + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "random": { + VersionConstraint: "3.2.0", + Source: "hashicorp/random", + }, + }, + Config: `resource "random_password" "min" { + length = 12 + override_special = "!#@" + min_lower = 2 + min_upper = 3 + min_special = 1 + min_numeric = 4 + }`, + +``` + +## TestStep ConfigDirectory + +The `TestStep.ConfigDirectory` field accepts a [TestStepConfigFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigFunc) which is a function that accepts a [TestStepConfigRequest](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigRequest) and returns a string containing a path to a directory containing Terraform configuration files. The path can be a relative or absolute path. + +There are helper methods available for generating a [TestStepConfigFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigFunc) including: + +* [StaticDirectory(directory string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#StaticDirectory) +* [TestNameDirectory()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestNameDirectory) +* [TestStepDirectory()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepDirectory) + +~> **Note**: `TestStep.ExternalProviders` cannot be specified when using ConfigDirectory. It is expected that [required_providers](/terraform/language/providers/requirements#requiring-providers) are defined within the configuration files. + +Custom functions can be written and used in the `TestStep.ConfigDirectory` field as long as the function is a [TestStepConfigFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigFunc) type. + +### StaticDirectory + +The [StaticDirectory(directory string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#StaticDirectory) function accepts a string specifying a path to a directory containing Terraform configuration. + +For example: + +```go +func Test_ConfigDirectory_StaticDirectory(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigDirectory: config.StaticDirectory(`testdata/directory_containing_config`), + /* ... */ + }, + }, + }) +} +``` + +In this instance, the testing configuration is expected to be in the `testdata/directory_containing_config` directory relative to the file containing the `Test_ConfigDirectory_StaticDirectory` test. + +### TestNameDirectory + +The [TestNameDirectory()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestNameDirectory) function will use the name of the executing test to specify a path to a directory containing Terraform configuration. + +For example: + +```go +func Test_ConfigDirectory_TestNameDirectory(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigDirectory: config.TestNameDirectory(), + /* ... */ + }, + }, + }) +} +``` + +In this instance, the testing configuration is expected to be in the `testdata/Test_ConfigDirectory_TestNameDirectory` directory relative to the file containing the `Test_ConfigDirectory_TestNameDirectory` test. + +### TestStepDirectory + +The [TestStepDirectory()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepDirectory) function will use the name of the executing test and the current test step number to specify a path to a directory containing Terraform configuration. + +For example: + +```go +func Test_ConfigDirectory_TestStepDirectory(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigDirectory: config.TestStepDirectory(), + /* ... */ + }, + }, + }) +} +``` + +In this instance, because this is the first test step in the test, the testing configuration is expected to be in the `testdata/Test_ConfigDirectory_TestStepDirectory/1` directory relative to the file containing the `Test_ConfigDirectory_TestStepDirectory` test. + +## TestStep ConfigFile + +The `TestStep.ConfigFile` field accepts a [TestStepConfigFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigFunc) which is a function that accepts a [TestStepConfigRequest](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigRequest) and returns a string containing a path to a file containing Terraform configuration. The path can be a relative or absolute path. + +There are helper methods available for generating a [TestStepConfigFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigFunc) including: + +* [StaticFile(file string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#StaticFile) +* [TestNameFile(file string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestNameFile) +* [TestStepFile(file string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepFile) + +~> **Note**: `TestStep.ExternalProviders` cannot be specified when using `ConfigFile`. It is expected that [required_providers](/terraform/language/providers/requirements#requiring-providers) are defined within the configuration file. + +Custom functions can be written and used in the `TestStep.ConfigFile` field as long as the function is a [TestStepConfigFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepConfigFunc) type. + +### StaticFile + +The [StaticFile(file string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#Staticfile) function accepts a string specifying a path to a file containing Terraform configuration. + +For example: + +```go +func Test_ConfigFile_StaticFile(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigFile: config.StaticFile(`testdata/directory_containing_config/main.tf`), + /* ... */ + }, + }, + }) +} +``` + +In this instance, the testing configuration is expected to be in the `testdata/directory_containing_config/main.tf` file relative to the file containing the `Test_ConfigFile_StaticFile` test. + +### TestNameFile + +The [TestNameFile(file string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestNameFile) function will use the name of the executing test to specify a path to a file containing Terraform configuration. + +For example: + +```go +func Test_ConfigFile_TestNameFile(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigFile: config.TestNameFile("main.tf"), + /* ... */ + }, + }, + }) +} +``` + +In this instance, the testing configuration is expected to be in the `testdata/Test_ConfigFile_TestNameFile` directory relative to the file containing the `Test_ConfigFile_TestNameFile` test. + +### TestStepFile + +The [TestStepFile(file string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TestStepFile) function will use the name of the executing test and the current test step number to specify a path to a file containing Terraform configuration. + +For example: + +```go +func Test_ConfigFile_TestStepFile(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigFile: config.TestStepFile("main.tf"), + /* ... */ + }, + }, + }) +} +``` + +In this instance, because this is the first test step in the test, the testing configuration is expected to be in the `testdata/Test_ConfigFile_TestStepFile/1/main.tf` file relative to the file containing the `Test_ConfigDirectory_TestNameDirectory` test. + +## TestStep ConfigVariables + +[Terraform input variables](https://developer.hashicorp.com/terraform/language/values/variables) allow customization of a Terraform configuration without altering the configuration itself. + +The `TestStep.ConfigVariables` field accepts a [Variables](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#Variables) type which is a key-value map of string to [Variable](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#Variable). + +The following functions return types implementing [Variable](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#Variable) that correlate with the [Terraform type constraints](https://developer.hashicorp.com/terraform/language/values/variables#type-constraints): + +* [BoolVariable(value bool)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#BoolVariable) +* [FloatVariable[T constraints.Float](value T)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#FloatVariable) +* [IntegerVariable[T constraints.Integer](value T)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#IntegerVariable) +* [func ListVariable(value ...Variable)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#ListVariable) +* [MapVariable(value map[string]Variable)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#MapVariable) +* [ObjectVariable(value map[string]Variable)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#ObjectVariable) +* [SetVariable(value ...Variable)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#SetVariable) +* [StringVariable(value string)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#StringVariable) +* [TupleVariable(value ...Variable)](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/config#TupleVariable) + +The following example shows the usage of `TestStep.ConfigVariables` in conjunction with `TestStep.ConfigFile`: + +```go +func Test_ConfigFile_TestNameFile(t *testing.T) { + t.Parallel() + + Test(t, TestCase{ + Steps: []TestStep{ + { + ConfigFile: config.TestNameFile("random.tf"), + ConfigVariables: config.Variables{ + "length": config.IntegerVariable(8), + "numeric": config.BoolVariable(false), + }, + /* ... */ + }, + }, + }) +} +``` + +The configuration would be expected to be in the `testdata/Test_ConfigFile_TestNameFile/random.tf` file, for example: + +```terraform +terraform { + required_providers { + random = { + source = "registry.terraform.io/hashicorp/random" + version = "3.5.1" + } + } +} + +provider "random" {} + +resource "random_password" "test" { + length = var.length + numeric = var.numeric +} + +variable "length" { + type = number +} + +variable "numeric" { + type = bool +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/continuous-integration.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/continuous-integration.mdx new file mode 100644 index 0000000000..290f70226b --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/continuous-integration.mdx @@ -0,0 +1,149 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Continuous Integration' +description: +--- + +# Acceptance Tests: Continuous Integration + +## GitHub Actions Workflow + +If using [GitHub](https://github.com/), run acceptance testing via [GitHub +Actions](https://github.com/features/actions). Other continuous integration +runners are also supported. + +Ensure the [GitHub Organization settings for GitHub +Actions](https://docs.github.com/en/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization) +and [GitHub Repository settings for GitHub +Actions](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository) +allows running workflows and allows the `actions/checkout`, `actions/setup-go`, +and `hashicorp/setup-terraform` actions. + +Create a [GitHub Actions +workflow](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions) +file, such as `.github/workflows/test.yaml`, that does the following: + +- Runs when pull requests are submitted or on [other + events](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows) +as appropriate. +- Uses [`actions/checkout`](https://github.com/actions/checkout) to checkout + the provider codebase. +- Uses [`actions/setup-go`](https://github.com/actions/setup-go) to install Go. +- Uses + [`hashicorp/setup-terraform`](https://github.com/hashicorp/setup-terraform) +to install Terraform CLI. +- Runs the `go test` command with the appropriate environment variables and + flags. + +Use the +[`matrix`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) +strategy for more advanced configuration, such as running acceptance testing +against multiple Terraform CLI versions. + +The following example workflow runs acceptance testing for the provider using +the latest patch versions of the Go version in the `go.mod` file and Terraform +CLI 1.11: + +```yaml +--- +name: Terraform Provider Tests + +on: + pull_request: + paths: + - '.github/workflows/test.yaml' + - '**.go' + +permissions: + # Permission for checking out code + contents: read + +jobs: + acceptance: + name: Acceptance Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version-file: 'go.mod' + - uses: hashicorp/setup-terraform@v2 + with: + terraform_version: '1.11.*' + terraform_wrapper: false + - run: go test -v -cover ./... + env: TF_ACC: '1'r + + unit: + name: Unit Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version-file: 'go.mod' + - run: go test -v -cover ./... ``` +``` + +The following example workflow runs acceptance testing for the provider using +the latest patch versions of Go version in the `go.mod` file and Terraform CLI +0.12 through 1.11: + +```yaml +name: Terraform Provider Tests + +on: + pull_request: + paths: + - '.github/workflows/test.yaml' + - '**.go' + +permissions: + # Permission for checking out code + contents: read + +jobs: + acceptance: + name: Acceptance Tests (Terraform ${{ matrix.terraform-version }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + terraform-version: + - '0.12.*' + - '0.13.*' + - '0.14.*' + - '0.15.*' + - '1.0.*' + - '1.1.*' + - '1.2.*' + - '1.3.*' + - '1.4.*' + - '1.5.*' + - '1.6.*' + - '1.7.*' + - '1.8.*' + - '1.9.*' + - '1.10.*' + - '1.11.*' + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version-file: 'go.mod' + - uses: hashicorp/setup-terraform@v2 + with: + terraform_version: ${{ matrix.terraform-version }} + terraform_wrapper: false + - run: go test -v -cover ./... + env: + TF_ACC: '1' + unit: + name: Unit Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v4 + with: + go-version-file: 'go.mod' + - run: go test -v -cover ./... +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/environment-variables.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/environment-variables.mdx new file mode 100644 index 0000000000..23eee51940 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/environment-variables.mdx @@ -0,0 +1,55 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Environment Variables' +description: |- + Reference for environment variables that control aspects of acceptance test + execution. +--- + +# Acceptance Testing: Environment Variables + +A number of environment variables are available to control aspects of +acceptance test execution. + +| Environment Variable Name | Default | Description | +|------------------------------|-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `TF_ACC` | N/A | Set to any value to enable acceptance testing via the [`helper/resource.ParallelTest()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#ParallelTest) and [`helper/resource.Test()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#Test) functions. | +| `TF_ACC_PROVIDER_HOST`: | `registry.terraform.io` | Set the hostname of the provider under test, such as `example.com` in the `example.com/myorg/myprovider` provider source address. This is only required if any [`TestStep.Config`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep.Config) specifies a provider source address, such as in the [`terraform` configuration block `required_providers` attribute](/terraform/language/settings#specifying-provider-requirements). | +| `TF_ACC_PROVIDER_NAMESPACE` | `hashicorp` | Set the namespace of the provider under test, such as `myorg` in the `registry.terraform.io/myorg/myprovider` provider source address. This is only required if any [`TestStep.Config`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep.Config) specifies a provider source address, such as in the [`terraform` configuration block `required_providers` attribute](/terraform/language/settings#specifying-provider-requirements). | +| `TF_ACC_STATE_LINEAGE` | N/A | Set to `1` to enable state lineage debug logs, which are normally suppressed during acceptance testing. | +| `TF_ACC_TEMP_DIR` | Operating system specific via [`os.TempDir()`](https://pkg.go.dev/os#TempDir) | Set a temporary directory used for testing files and installing Terraform CLI, if installation is required. | +| `TF_ACC_TERRAFORM_PATH` | N/A | Set the path to a Terraform CLI binary on the local filesystem to be used during testing. It must be executable. If not found and `TF_ACC_TERRAFORM_VERSION` is not set, an error is returned. | +| `TF_ACC_TERRAFORM_VERSION` | N/A | Set the exact version of Terraform CLI to automatically install into `TF_ACC_TEMP_DIR`. For example, `1.1.6` or `v1.0.11`. | +| `TF_ACC_PERSIST_WORKING_DIR` | N/A | Set to any value to enable persisting the working directory and the files generated during execution of each `TestStep`. The location of each directory is written to the test output for each `TestStep` when the `go test -v` (verbose) flag is provided. | + +### Logging Environment Variables + +A number of environment variables available to control logging aspects during acceptance test execution. Some of these modify or replace the production behaviors defined in [managing provider log output](/terraform/plugin/log/managing) and [debugging Terraform](/terraform/internals/debugging). + +#### Logging Levels + +| Environment Variable Name | Default | Description | +|---------------------------|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `TF_ACC_LOG` | N/A | Set the `TF_LOG` environment variable used by Terraform CLI while testing. If set, overrides `TF_LOG_CORE`. Use `TF_LOG_CORE` and `TF_LOG_PROVIDER` to configure separate levels for Terraform CLI logging. | +| `TF_LOG` | N/A | Set the log level for the Go standard library `log` package. If set to any level, sets the `TRACE` log level for any SDK and provider logs written by [`terraform-plugin-log`](/terraform/plugin/log/writing). Use the `TF_LOG_SDK*` and `TF_LOG_PROVIDER_*` environment variables described in [managing log output](/terraform/plugin/log/managing) to decrease or disable SDK and provider logs written by [`terraform-plugin-log`](/terraform/plugin/log/writing). Use `TF_ACC_LOG`, `TF_LOG_CORE`, or `TF_LOG_PROVIDER` environment variables to set the logging levels used by Terraform CLI while testing. | +| `TF_LOG_CORE` | `TF_ACC_LOG` | Set the `TF_LOG_CORE` environment variable used by Terraform CLI logging of graph operations and other core functionality while testing. If `TF_ACC_LOG` is set, this setting has no effect. Use `TF_LOG_PROVIDER` to configure a separate level for Terraform CLI logging of external providers while testing (e.g. defined by the `TestCase` or `TestStep` type `ExternalProviders` field). | +| `TF_LOG_PROVIDER` | `TF_ACC_LOG` | Set the `TF_LOG_PROVIDER` environment variable used by Terraform CLI logging of external providers while testing (e.g. defined by the `TestCase` or `TestStep` type `ExternalProviders` field). If set, overrides `TF_ACC_LOG`. Use `TF_LOG_CORE` to configure a separate level for Terraform CLI logging of graph operations and other core functionality while testing. | + +#### Logging Output + +By default, there is no logging output when running the `go test` command. Use one of the below environment variables to output logs to the local filesystem or use the `go test` command `-v` (verbose) flag to view logging without writing file(s). + +| Environment Variable Name | Default | Description | +|---------------------------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `TF_ACC_LOG_PATH` | N/A | Set a file path for all logs during testing. Use `TF_LOG_PATH_MASK` to configure individual log files per test. | +| `TF_LOG_PATH_MASK` | N/A | Set a file path containing the string `%s`, which is replaced with the test name, to write a separate log file per test. Use `TF_ACC_LOG_PATH` to configure a single log file for all tests. | + +The logs associated with each test can output across incorrect files as each +new test starts if the provider is using the Go standard library [`log` +package](https://pkg.go.dev/log) for logging, acceptance testing that uses +[`helper/resource.ParallelTest()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#ParallelTest), +and `TF_LOG_PATH_MASK`. To resolve this issue, choose one of the following +approaches: + +* Use [`terraform-plugin-log`](/terraform/plugin/log/writing) based logging. Each logger will be correctly associated with each test name output. +* Wrap testing execution so that each test is individually executed with `go test`. Since each `go test` process will have its own `log` package output handling,logging will be correctly associated with each test name output. +* Replace [`helper/resource.ParallelTest()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#ParallelTest) with [`helper/resource.Test()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#Test) and ensure [`(*testing.T).Parallel()`](https://pkg.go.dev/testing#T.Parallel) is not called in tests. This serializes all testing so each test will be associated with each test name output. diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/ephemeral-resources.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/ephemeral-resources.mdx new file mode 100644 index 0000000000..36c6fea291 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/ephemeral-resources.mdx @@ -0,0 +1,271 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Ephemeral Resources' +description: >- + Guidance on how to test ephemeral resources and data. +--- + + + +Ephemeral resource support is in technical preview and offered without compatibility promises until Terraform 1.10 is generally available. + + + +# Ephemeral Resources + +[Ephemeral Resources](/terraform/language/v1.10.x/resources/ephemeral) are an abstraction that allows Terraform to reference external data, similar to [data sources](/terraform/language/data-sources), without persisting that data to plan or state artifacts. The `terraform-plugin-testing` module exclusively uses Terraform plan and state artifacts for it's assertion-based test checks, like [plan checks](/terraform/plugin/testing/acceptance-tests/plan-checks) or [state checks](/terraform/plugin/testing/acceptance-tests/state-checks), which means that ephemeral resource data cannot be asserted using these methods alone. + +The following is a test for a hypothetical `examplecloud_secret` ephemeral resource which is referenced by a provider configuration that has a single managed resource. For this test to pass, the ephemeral `examplecloud_secret` resource must return valid data, specifically a kerberos `username`, `password`, and `realm`, which are used to configure the `dns` provider and create a DNS record via the `dns_a_record_set` managed resource. + +```go +func TestExampleCloudSecret_DnsKerberos(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + // Ephemeral resources are only available in 1.10 and later + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_10_0), + }, + ExternalProviders: map[string]resource.ExternalProvider{ + "dns": { + Source: "hashicorp/dns", + }, + }, + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){ + "examplecloud": providerserver.NewProtocol5WithError(New()), + }, + Steps: []resource.TestStep{ + { + Config: ` + # Retrieves a secret containing user kerberos configuration + ephemeral "examplecloud_secret" "krb" { + name = "example_kerberos_user" + } + + # Ephemeral data can be referenced in provider configuration + provider "dns" { + update { + server = "ns.example.com" + gssapi { + realm = ephemeral.examplecloud_secret.krb.secret_data.realm + username = ephemeral.examplecloud_secret.krb.secret_data.username + password = ephemeral.examplecloud_secret.krb.secret_data.password + } + } + } + + # If we can create this DNS record successfully, then the ephemeral resource returned valid data. + resource "dns_a_record_set" "record_set" { + zone = "example.com." + addresses = [ + "192.168.0.1", + "192.168.0.2", + "192.168.0.3", + ] + } + `, + }, + }, + }) +} +``` + +See the Terraform [ephemeral documentation](http://localhost:3000/terraform/language/v1.10.x/resources/ephemeral#referencing-ephemeral-resources) for more details on where ephemeral data can be referenced in configurations. + +## Testing ephemeral data with `echo` provider + +Test assertions on [result data](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#OpenResponse.Result) returned by an ephemeral resource during [`Open`](/terraform/plugin/framework/ephemeral-resources/open) can be arranged using the `echoprovider` package. + +This package contains a [Protocol V6 Terraform Provider](/terraform/plugin/terraform-plugin-protocol#protocol-version-6) named `echo`, with a single managed resource also named `echo`. Using the `echo` provider configuration and an instance of the managed resource, ephemeral data can be "echoed" from the provider configuration into Terraform state, where it can be referenced in test assertions with [state checks](/terraform/plugin/testing/acceptance-tests/state-checks). For example: + +```terraform +ephemeral "examplecloud_secret" "krb" { + name = "example_kerberos_user" +} + +provider "echo" { + # Provide the ephemeral data we want to run test assertions against + data = ephemeral.examplecloud_secret.krb.secret_data +} + +# The ephemeral data will be echoed into state +resource "echo" "test_krb" {} +``` + + + +This provider is designed specifically to be used as a utility for acceptance testing ephemeral data and is only available via the `terraform-plugin-testing` Go module. + + + +### Using `echo` provider in acceptance tests + +First, we include the `echo` provider using the [`echoprovider.NewProviderServer`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/echoprovider#NewProviderServer) function in the `(TestCase).ProtoV6ProviderFactories` property: + +```go +import ( + // .. other imports + + "github.com/hashicorp/terraform-plugin-testing/echoprovider" +) + +func TestExampleCloudSecret(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + // Ephemeral resources are only available in 1.10 and later + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_10_0), + }, + // Include the provider we want to test: `examplecloud` + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){ + "examplecloud": providerserver.NewProtocol5WithError(New()), + }, + // Include `echo` as a v6 provider from `terraform-plugin-testing` + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){ + "echo": echoprovider.NewProviderServer(), + }, + Steps: []resource.TestStep{ + // .. test step configurations can now use the `echo` and `examplecloud` providers + }, + }) +} +``` + +After including both providers, our test step `Config` references the ephemeral data from `examplecloud_secret` in the `echo` provider configuration `data` attribute: + +```go +func TestExampleCloudSecret(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + // .. test case setup + + Steps: []resource.TestStep{ + { + Config: ` + ephemeral "examplecloud_secret" "krb" { + name = "example_kerberos_user" + } + + provider "echo" { + data = ephemeral.examplecloud_secret.krb.secret_data + } + + resource "echo" "test_krb" {} + `, + }, + }, + }) +} +``` + +The `echo.test_krb` managed resource has a single computed `data` attribute, which will contain the provider configuration `data` results. This data is then used in assertions with the [state check](/terraform/plugin/testing/acceptance-tests/state-checks) functionality: + +```go +func TestExampleCloudSecret(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + // .. test case setup + + Steps: []resource.TestStep{ + { + Config: ` + ephemeral "examplecloud_secret" "krb" { + name = "example_kerberos_user" + } + + provider "echo" { + data = ephemeral.examplecloud_secret.krb.secret_data + } + + resource "echo" "test_krb" {} + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue("echo.test_krb", tfjsonpath.New("data").AtMapKey("realm"), knownvalue.StringExact("EXAMPLE.COM")), + statecheck.ExpectKnownValue("echo.test_krb", tfjsonpath.New("data").AtMapKey("username"), knownvalue.StringExact("john-doe")), + statecheck.ExpectKnownValue("echo.test_krb", tfjsonpath.New("data").AtMapKey("password"), knownvalue.StringRegexp(regexp.MustCompile(`^.{12}$`))), + }, + }, + }, + }) +} +``` + +`data` is a `dynamic` attribute, so whatever [type](/terraform/language/expressions/types) you pass in will be directly reflected in the managed resource `data` attribute. In the config above, we reference an object (`secret_data`) from the ephemeral resource instance, so the resulting type of `echo.test_krb.data` is also an `object`. + +You can also reference the entire ephemeral resource instance for assertions, rather than specific attributes: + +```go +func TestExampleCloudSecret(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + // .. test case setup + + Steps: []resource.TestStep{ + { + Config: ` + ephemeral "examplecloud_secret" "krb" { + name = "example_kerberos_user" + } + + provider "echo" { + data = ephemeral.examplecloud_secret.krb + } + + resource "echo" "test_krb" {} + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue("echo.test_krb", tfjsonpath.New("data").AtMapKey("name"), knownvalue.StringExact("example_kerberos_user")), + }, + }, + }, + }) +} +``` + +### Caveats with `echo` provider + +Since data produced by an ephemeral resource is allowed to change between plan/apply operations, the `echo` resource has special handling to allow this data to be used in the `terraform-plugin-testing` Go module without producing confusing error messages: + +* During plan, if the `echo` resource is being created, the `data` attribute will always be marked as unknown. +* During plan, if the `echo` resource already exists and is not being destroyed, prior state will always be fully preserved regardless of changes to the provider configuration. This essentially means an instance of the `echo` resource is immutable. +* During refresh, the prior state of the `echo` resource is always returned, regardless of changes to the provider configuration. + +Due to this special handling, if multiple test steps are required for testing data, provider developers should create new instances of `echo` for each new test step, for example: + +```go +func TestExampleCloudSecret(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + // .. test case setup + + Steps: []resource.TestStep{ + { + Config: ` + ephemeral "examplecloud_secret" "krb" { + name = "user_one" + } + + provider "echo" { + data = ephemeral.examplecloud_secret.krb + } + + # First test object -> 1 + resource "echo" "test_krb_one" {} + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue("echo.test_krb_one", tfjsonpath.New("data").AtMapKey("name"), knownvalue.StringExact("user_one")), + }, + }, + { + Config: ` + ephemeral "examplecloud_secret" "krb" { + name = "user_two" + } + + provider "echo" { + data = ephemeral.examplecloud_secret.krb + } + + # New test object -> 2 + resource "echo" "test_krb_two" {} + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue("echo.test_krb_two", tfjsonpath.New("data").AtMapKey("name"), knownvalue.StringExact("user_two")), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/import-mode.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/import-mode.mdx new file mode 100644 index 0000000000..a3622b1722 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/import-mode.mdx @@ -0,0 +1,94 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Import mode' +description: |- + _Import_ mode is used for testing resource functionality to import existing + infrastructure into a Terraform statefile, using real Terraform import logic. +--- + +# Acceptance Tests: Import mode + +_Import_ is the workflow that brings existing infrastructure into Terraform, +without altering the infrastructure itself. For reference information about the +_Import_ workflow: [Terraform +CLI](https://developer.hashicorp.com/terraform/cli/import), +[Framework](https://developer.hashicorp.com/terraform/plugin/framework/resources/import), +[SDKv2](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/import). + +In provider acceptance tests, _Import_ mode is used for testing resource +functionality to import existing infrastructure into a Terraform statefile, +using real Terraform import functionality. + +At its core, _Import_ mode runs the _Import_ workflow and checks: does a +resource added by _Import_ match a resource added by _Lifecycle_ methods (i.e. +_Create_)? + +In common testing terminology, _Import_ mode uses a resource added to Terraform +by _Create_ as the _expected result_. + +_Import_ mode uses a resource added to Terraform by _Import_ as the _actual +result_. + +_Import_ mode runs a deep comparison of the two data structures. The test step +passes only if the two data structures match. + +## Examples + +### Testing the `terraform import` workflow + +```go +func TestImportCommand(t *testing.T) { + r.ParallelTest(t, r.TestCase{ + ProtoV5ProviderFactories: providerFactories, + Steps: []r.TestStep{ + { + Config: `resource "examplecloud_thing" "test" {}`, + }, + { + ImportState: true, + ResourceName: "examplecloud_thing.test", + ImportStateVerify: true, + }, + }, + }) +} +``` + +### Testing the plannable import workflow + +```go +func TestImportBlockWithID(t *testing.T) { + r.ParallelTest(t, r.TestCase{ + ProtoV5ProviderFactories: providerFactories, + Steps: []r.TestStep{ + { + Config: `resource "examplecloud_thing" "test" {}`, + }, + { + ImportState: true, + ImportStateKind: resource.ImportBlockWithID, + ResourceName: "examplecloud_thing.test", + }, + }, + }) +} +``` + +#### Testing the plannable import workflow using a managed resource identity + +```go +func TestImportBlockWithResourceIdentity(t *testing.T) { + r.ParallelTest(t, r.TestCase{ + ProtoV5ProviderFactories: providerFactories, + Steps: []r.TestStep{ + { + Config: `resource "examplecloud_thing" "test" {}`, + }, + { + ImportState: true, + ImportStateKind: resource.ImportBlockWithResourceIdentity, + ResourceName: "examplecloud_thing.test", + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx new file mode 100644 index 0000000000..8eb866538a --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx @@ -0,0 +1,166 @@ +--- +page_title: Plugin Development - Acceptance Testing +description: |- + Terraform includes a framework for constructing acceptance tests that + imitate applying one or more configuration files. +--- + +# Acceptance Tests + +Acceptance tests for Terraform providers are a feature of the +[`terraform-plugin-testing`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing) +framework. The testing framework uses standard Go features such as the `go +test` command. It runs a local Terraform binary to perform real plan, apply, +refresh, and destroy operations, and enables developers to make assertions +about what happens during those actions. + +When testing the happy path, developers can make assertions about the data +stored in state after successfully provisioning a resource. When testing +unhappy paths, developers are able to make assertions about errors returned by +Terraform, non-empty plans, and the actual cloud resources created by +Terraform. + +~> **Note**: Acceptance tests can create and destroy real infrastructure +resources; as a result, they can incur expenses and consume quotas. The testing +framework provides a way to check that all resources created by tests are +destroyed. Refer to the [requirements and +recommendations](#requirements-and-recommendations) section. + +## Test files + +Terraform follows many of the Go programming language conventions with regards +to testing. Tests are placed in a file that matches the file under test, with +an added `_test.go` suffix. Here's an example file structure: + +``` +terraform-plugin-example/ +├── provider.go +├── provider_test.go +├── example/ +│ ├── resource_example_compute.go +│ ├── resource_example_compute_test.go +``` + +To create an acceptance test in the example `resource_example_compute_test.go` +file, add a test function with name that begins with `TestAcc`. + +``` +import "testing" + +func TestAccExampleComputeResource(*testing.T) { +} +``` + +## Requirements and recommendations + +Acceptance tests have the following requirements: + +- **[Go](https://go.dev/)**: The most recent stable version. +- **Terraform CLI**: Version 0.12.26 or later. +- **Provider Access**: Network or system access to the provider and any + resources being tested. +- **Provider Credentials**: Authorized credentials to the provider and any + resources being tested. +- **`TF_ACC` environment variable**: Set to any value. Prevents developers from + incurring unintended charges when running other Go tests. + +We also recommend the following when running acceptance tests: + +- **A separate Account**: Use a separate provider account or namespace for + acceptance testing. This prevents Terraform from unexpectedly modifying or +destroying infrastructure due to code or testing issues. +- **Previous Terraform CLI Installation**: Install Terraform CLI either into + the operating system `PATH` or use the `TF_ACC_TERRAFORM_PATH` environment +variable prior to running acceptance tests. Otherwise, the testing framework +will download and install the latest Terraform CLI version into a temporary +directory for every test invocation. Refer to the [Terraform CLI Installation +Behaviors](#terraform-cli-installation-behaviors) section for details. + +Each provider may have additional requirements and setup recommendations. Refer +to the provider's codebase for more details. + +## Running Acceptance Tests + +Use the [`go test`](https://pkg.go.dev/cmd/go/internal/test) command to run +acceptance tests. You can run the acceptance tests on any environment capable +of running `go test`, such as a local workstation [command +line](#command-line-workflow) or a [continuous integration +runner](/terraform/plugin/testing/acceptance-tests/continuous-integration), +such as GitHub Actions. + +### Command Line Workflow + +This example will execute all available acceptance tests in a provider +codebase: + +```shell +TF_ACC=1 go test -v ./... +``` + +#### Makefiles + +For convenience, provider codebases can place common tasks in a +[Makefile](https://www.gnu.org/software/make/manual/make.html#Makefiles). + +This example defines a `testacc` target, which sets `TF_ACC` and the verbose +(`-v`) flag. + +```make +testacc: + TF_ACC=1 go test -v ./... +``` + +To run acceptance tests: + +```shell +make testacc +``` + +-> **Note**: Refer to the [Environment +Variables](/terraform/plugin/testing/acceptance-tests/environment-variables) +section for more details about behaviors and valid configurations. + +### Terraform CLI Installation Behaviors + +The testing framework implements the following Terraform CLI discovery and +installation behaviors: + +- If the `TF_ACC_TERRAFORM_PATH` environment variable is set, the framework + will use that Terraform CLI binary if it exists and is executable. If the +framework cannot find the binary or it is not executable, the framework returns +an error unless the `TF_ACC_TERRAFORM_VERSION` environment variable is also +set. +- If the `TF_ACC_TERRAFORM_VERSION` environment variable is set, the framework + will install and use that Terraform CLI version. +- If both the `TF_ACC_TERRAFORM_PATH` and `TF_ACC_TERRAFORM_VERSION` + environment variables are unset, the framework will search for the Terraform +CLI binary based on the operating system `PATH`. If the framework cannot find +the specified binary, it installs the latest available Terraform CLI binary. + +## Troubleshooting + +This section lists common errors encountered during testing. + +### Unrecognized remote plugin message + +``` +terraform failed: exit status 1 + + stderr: + + Error: Failed to instantiate provider "random" to obtain schema: +Unrecognized remote plugin message: --- FAIL: TestAccResourceID (4.28s) + + This usually means that the plugin is either invalid or simply needs to +be recompiled to support the latest protocol. +``` + +This error indicates that the provider server could not connect to Terraform +Core. Verify that the output of `terraform version` is v0.12.26 or above. + +## Next Steps + +The next step is to create _Test Cases_ using Terraform's testing +framework.build and verify real infrastructure. + +Proceed to [_Test Cases_](/terraform/plugin/testing/acceptance-tests/testcase). diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/bool.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/bool.mdx new file mode 100644 index 0000000000..51c08f5ed8 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/bool.mdx @@ -0,0 +1,77 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Bool Value Checks for use with Plan and State Checks. +--- + +# Bool Known Value Checks + +The known value checks that are available for bool values are: + +* [Bool](/terraform/plugin/testing/acceptance-tests/known-value-checks/bool#bool-check) +* [BoolFunc](/terraform/plugin/testing/acceptance-tests/known-value-checks/bool#boolfunc-check) + +## `Bool` Check + +The [Bool](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Bool) check tests that a resource attribute, or output value has an exactly matching bool value. + +Example usage of [Bool](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Bool) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Bool(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed boolean attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Bool(true), + ), + }, + }, + }, + }, + }) +} +``` + +## `BoolFunc` Check + +The [BoolFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#BoolFunc) check allows defining a custom function to validate whether the bool value of a resource attribute or output satisfies specific conditions. + +Example usage of [BoolFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#BoolFunc) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_BoolFunc(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a boolean attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.BoolFunc(func(v bool) error { + if !v { + return fmt.Errorf("expected true, got %t", v) + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/custom.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/custom.mdx new file mode 100644 index 0000000000..ef92d4e806 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/custom.mdx @@ -0,0 +1,76 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Custom Value Checks for use with Plan Checks. +--- + +# Custom Known Value Checks + +Custom known value checks can be created by implementing the [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) interface. + +```go +type Check interface { + CheckValue(value any) error + String() string +} +``` + +For example, a `StringContains` implementation could look as follows: + +```go +var _ knownvalue.Check = stringContains{} + +type stringContains struct { + value string +} + +func (v stringContains) CheckValue(other any) error { + otherVal, ok := other.(string) + + if !ok { + return fmt.Errorf("expected string value for StringContains check, got: %T", other) + } + + if !strings.Contains(otherVal, v.value) { + return fmt.Errorf("expected string %q to contain %q for StringContains check", otherVal, v.value) + } + + return nil +} + +func (v stringContains) String() string { + return v.value +} + +func StringContains(value string) stringContains { + return stringContains{ + value: value, + } +} +``` + +## `CheckValue` Method Implementation + +The `other` parameter passed to the `CheckValue` method is one of the following types: + +* bool +* map[string]any +* []any +* string + +-> **Note:** Numerical values will be of type `json.Number`, with an underlying type of `string`. + +Refer to the following built-in known value checks for implementations that handle the different types that can be passed to the `CheckValue` method in the `other` parameter: + +* [Bool](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Bool) +* [Float32Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float32Exact) +* [Float64Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float64Exact) +* [Int32Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int32Exact) +* [Int64Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int64Exact) +* [ListExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListExact) +* [MapExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapExact) +* [NumberExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NumberExact) +* [ObjectExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ObjectExact) +* [SetExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetExact) +* [StringExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringExact) +* [TupleExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TupleExact) diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float32.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float32.mdx new file mode 100644 index 0000000000..613e69a217 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float32.mdx @@ -0,0 +1,77 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Float32 Value Checks for use with Plan and State Checks. +--- + +# Float32 Known Value Checks + +The known value checks that are available for float32 values are: + +* [Float32Exact](/terraform/plugin/testing/acceptance-tests/known-value-checks/float32#float32exact-check) +* [Float32Func](/terraform/plugin/testing/acceptance-tests/known-value-checks/float32#float32func-check) + +## `Float32Exact` Check + +The [Float32Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float32Exact) check tests that a resource attribute, or output value has an exactly matching float32 value. + +Example usage of [Float32Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float32Exact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Float32(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed float32 attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Float32Exact(1.23), + ), + }, + }, + }, + }, + }) +} +``` + +## `Float32Func` Check + +The [Float32Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float32Func) check allows defining a custom function to validate whether the float32 value of a resource attribute or output satisfies specific conditions. + +Example usage of [Float32Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float32Func) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_Float32Func(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a float32 attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.Float32Func(func(v float32) error { + if v > 1.0 && v < 5.0 { + return fmt.Errorf("value must be between 1.0 and 5.0") + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float64.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float64.mdx new file mode 100644 index 0000000000..04294ebb9f --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/float64.mdx @@ -0,0 +1,77 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Float64 Value Checks for use with Plan and State Checks. +--- + +# Float64 Known Value Checks + +The known value checks that are available for float64 values are: + +* [Float64Exact](/terraform/plugin/testing/acceptance-tests/known-value-checks/float64#float64exact-check) +* [Float64Func](/terraform/plugin/testing/acceptance-tests/known-value-checks/float64#float64func-check) + +## `Float64Exact` Check + +The [Float64Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float64Exact) check tests that a resource attribute, or output value has an exactly matching float64 value. + +Example usage of [Float64Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float64Exact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Float64(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed float64 attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Float64Exact(1.23), + ), + }, + }, + }, + }, + }) +} +``` + +## `Float64Func` Check + +The [Float64Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float64Func) check allows defining a custom function to validate whether the float64 value of a resource attribute or output satisfies specific conditions. + +Example usage of [Float64Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Float64Func) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_Float64Func(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a float64 attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.Float64Func(func(v float64) error { + if v > 1.0 && v < 5.0 { + return fmt.Errorf("value must be between 1.0 and 5.0") + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/index.mdx new file mode 100644 index 0000000000..569f6b5b6b --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/index.mdx @@ -0,0 +1,56 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + How to use known values in the testing module. + Known values define an expected type, and value for a resource attribute, or output value in a Terraform plan or state for use in Plan Checks or State Checks. +--- + +# Known Value Checks + +Known Value Checks are for use in conjunction with [Plan Checks](/terraform/plugin/testing/acceptance-tests/plan-checks), and [State Checks](/terraform/plugin/testing/acceptance-tests/state-checks) which leverage the [terraform-json](https://pkg.go.dev/github.com/hashicorp/terraform-json) representation of a Terraform plan. + +## Usage + +Example uses in the testing module include: + +- **Plan Checks**: The [`ExpectKnownValue()`](/terraform/plugin/testing/acceptance-tests/plan-checks/resource#expectknownvalue-plan-check), [`ExpectKnownOutputValue()`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalue-plan-check) and [`ExpectKnownOutputValueAtPath()`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalueatpath-plan-check) [built-in plan checks](/terraform/plugin/testing/acceptance-tests/plan-checks) use known value checks for asserting whether a specific resource attribute, or output value has a particular type, and value. +- **State Checks**: The [`ExpectKnownValue()`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#expectknownvalue-state-check), [`ExpectKnownOutputValue()`](/terraform/plugin/testing/acceptance-tests/state-checks/output#expectknownoutputvalue-state-check) and [`ExpectKnownOutputValueAtPath()`](/terraform/plugin/testing/acceptance-tests/state-checks/output#expectknownoutputvalueatpath-state-check) [built-in state checks](/terraform/plugin/testing/acceptance-tests/state-checks) use known value checks for asserting whether a specific resource attribute, or output value has a particular type, and value. + +## Using a Known Value Check + +The known value check types are implemented within the `terraform-plugin-testing` module in the [`knownvalue` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue). Known value checks are instantiated by calling the relevant constructor function. + +```go +knownvalue.Bool(true) +``` + +For known value checks that represent collections, or objects, nesting of known value checks can be used to define a "composite" known value check for use in asserting against a resource attribute, or output value that contains other values. + +```go +knownvalue.ListExact([]knownvalue.Check{ + knownvalue.StringExact("value1"), + knownvalue.StringExact("value2"), +}) +``` + +## Known Value Check Types + +The following table shows the correspondence between [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types, and attributes. + +| Known Value Check Type | Framework Attribute Type | SDKv2 Attribute Type | +|------------------------------------------------------------------------------------------------------|---------------------------|----------------------| +| [Bool Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/bool) | `schema.BoolAttribute` | `schema.TypeBool` | +| [Float32 Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/float32) | `schema.Float32Attribute` | `schema.TypeFloat` | +| [Float64 Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/float64) | `schema.Float64Attribute` | `schema.TypeFloat` | +| [Int32 Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/int32) | `schema.Int32Attribute` | `schema.TypeInt` | +| [Int64 Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/int64) | `schema.Int64Attribute` | `schema.TypeInt` | +| [List Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/list) | `schema.ListAttribute` | `schema.TypeList` | +| [Map Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/map) | `schema.MapAttribute` | `schema.TypeMap` | +| [NotNull Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/not-null) | All | All | +| [Null Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/null) | All | All | +| [Number Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/number) | `schema.NumberAttribute` | N/A | +| [Object Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/object) | `schema.ObjectAttribute` | N/A | +| [Set Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/set) | `schema.SetAttribute` | `schema.TypeSet` | +| [String Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/string) | `schema.StringAttribute` | `schema.TypeString` | +| [Tuple Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks/tuple) | `schema.DynamicAttribute` | N/A | + diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int32.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int32.mdx new file mode 100644 index 0000000000..254b28aed6 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int32.mdx @@ -0,0 +1,77 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Int32 Value Checks for use with Plan and State Checks. +--- + +# Int32 Known Value Checks + +The known value checks that are available for int32 values are: + +* [Int32Exact](/terraform/plugin/testing/acceptance-tests/known-value-checks/int32#int32exact-check) +* [Int32Func](/terraform/plugin/testing/acceptance-tests/known-value-checks/int32#int32func-check) + +## `Int32Exact` Check + +The [Int32Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int32Exact) check tests that a resource attribute, or output value has an exactly matching int32 value. + +Example usage of [Int32Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int32Exact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Int32(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed int32 attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Int32Exact(123), + ), + }, + }, + }, + }, + }) +} +``` + +## `Int32Func` Check + +The [Int32Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int32Func) check allows defining a custom function to validate whether the int32 value of a resource attribute or output satisfies specific conditions. + +Example usage of [Int32Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int32Func) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_Int32Func(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing an int32 attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.Int32Func(func(v int32) error { + if v > 1 && v < 12 { + return fmt.Errorf("value must be between 1 and 12") + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int64.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int64.mdx new file mode 100644 index 0000000000..cb43441318 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/int64.mdx @@ -0,0 +1,77 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Int64 Value Checks for use with Plan and State Checks. +--- + +# Int64 Known Value Checks + +The known value checks that are available for int64 values are: + +* [Int64Exact](/terraform/plugin/testing/acceptance-tests/known-value-checks/int64#int64exact-check) +* [Int64Func](/terraform/plugin/testing/acceptance-tests/known-value-checks/int64#int64func-check) + +## `Int64Exact` Check + +The [Int64Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int64Exact) check tests that a resource attribute, or output value has an exactly matching int64 value. + +Example usage of [Int64Exact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int64Exact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Int64(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed int64 attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Int64Exact(123), + ), + }, + }, + }, + }, + }) +} +``` + +## `Int64Func` Check + +The [Int64Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int64Func) check allows defining a custom function to validate whether the int64 value of a resource attribute or output satisfies specific conditions. + +Example usage of [Int64Func](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Int64Func) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_Int64Func(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing an int64 attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.Int64Func(func(v int64) error { + if v > 1 && v < 12 { + return fmt.Errorf("value must be between 1 and 12") + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/list.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/list.mdx new file mode 100644 index 0000000000..92963b91e4 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/list.mdx @@ -0,0 +1,111 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + List Value Checks for use with Plan Checks. +--- + +# List Known Value Checks + +The known value checks that are available for list values are: + +* [ListExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/list#listexact-check) +* [ListPartial](/terraform/plugin/testing/acceptance-tests/known-value-checks/list#listpartial-check) +* [ListSizeExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/list#listsizeexact-check) + +## `ListExact` Check + +The [ListExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListExact) check tests that a resource attribute, or output value has an order-dependent, matching collection of element values. + +Example usage of [ListExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_List(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed list attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.ListExact([]knownvalue.Check{ + knownvalue.StringExact("value1"), + knownvalue.StringExact("value2"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `ListPartial` Check + +The [ListPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListPartial) check tests that a resource attribute, or output value has matching element values for the specified collection indices. + +Example usage of [ListPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListPartial) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. In this example, only the first element within the list, the element defined at index `0`, is checked. + +```go +func TestExpectKnownValue_CheckPlan_ListPartial(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed list attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.ListPartial(map[int]knownvalue.Check{ + 0: knownvalue.StringExact("value1"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `ListSizeExact` Check + +The [ListSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListSizeExact) check tests that a resource attribute, or output value contains the specified number of elements. + +Example usage of [ListSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ListSizeExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_ListElements(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed list attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.ListSizeExact(2), + ), + }, + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/map.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/map.mdx new file mode 100644 index 0000000000..9685249c4b --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/map.mdx @@ -0,0 +1,113 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Map Value Checks for use with Plan Checks. +--- + +# Map Known Value Checks + +The known value checks that are available for map values are: + +* [MapExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/map#mapexact-check) +* [MapPartial](/terraform/plugin/testing/acceptance-tests/known-value-checks/map#mappartial-check) +* [MapSizeExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/map#mapsizeexact-check) + +## `MapExact` Check + +The [MapExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapExact) check tests that a resource attribute, or output value has a key-specified, matching collection of element values. + +Example usage of [MapExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Map(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed map attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.MapExact(map[string]knownvalue.Check{ + "key1": knownvalue.StringExact("value1"), + "key2": knownvalue.StringExact("value2"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `MapPartial` Check + +The [MapPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapPartial) check tests that a resource attribute, or output value has matching element values for the specified keys. + +Example usage of [MapPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapPartial) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +In this example, only the element associated with `key1` within the map is checked. + +```go +func TestExpectKnownValue_CheckPlan_MapPartial(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed map attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.MapPartial(map[string]knownvalue.Check{ + "key1": knownvalue.StringExact("value1"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `MapSizeExact` Check + +The [MapSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapSizeExact) check tests that a resource attribute, or output value contains the specified number of elements. + +Example usage of [MapSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#MapSizeExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_MapElements(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed map attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.MapSizeExact(2), + ), + }, + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/not-null.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/not-null.mdx new file mode 100644 index 0000000000..b6e39030f3 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/not-null.mdx @@ -0,0 +1,40 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + NotNull Value Checks for use with Plan Checks or State Checks. +--- + +# NotNull Known Value Checks + +The known value checks that are available for values that are not null are: + +* [NotNull](/terraform/plugin/testing/acceptance-tests/known-value-checks/null#notnull-check) + +## `NotNull` Check + +The [NotNull](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NotNull) check tests that a resource attribute, or output value is not null (i.e., any known value). + +Example usage of [NotNull](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NotNull) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_AttributeValueNull(t *testing.T) { + t.Parallel() + + r.Test(t, r.TestCase{ + // Provider definition omitted. + Steps: []r.TestStep{ + { + // Example resource containing a computed attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.NotNull(), + ), + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/null.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/null.mdx new file mode 100644 index 0000000000..8cd4bee006 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/null.mdx @@ -0,0 +1,40 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Null Value Checks for use with Plan Checks or State Checks. +--- + +# Null Known Value Checks + +The known value checks that are available for null values are: + +* [Null](/terraform/plugin/testing/acceptance-tests/known-value-checks/null#null-check) + +## `Null` Check + +The [Null](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Null) check tests that a resource attribute, or output value has an exactly matching null value. + +Example usage of [Null](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Null) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_AttributeValueNull(t *testing.T) { + t.Parallel() + + r.Test(t, r.TestCase{ + // Provider definition omitted. + Steps: []r.TestStep{ + { + // Example resource containing a computed attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Null(), + ), + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/number.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/number.mdx new file mode 100644 index 0000000000..220cd8f5d6 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/number.mdx @@ -0,0 +1,83 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Number Value Checks for use with Plan and State Checks. +--- + +# Number Known Value Checks + +The known value checks that are available for number values are: + +* [NumberExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/number#numberexact-check) +* [NumberFunc](/terraform/plugin/testing/acceptance-tests/known-value-checks/number#numberfunc-check) + +## `NumberExact` Check + +The [NumberExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NumberExact) check tests that a resource attribute, or output value has an exactly matching number value. + +Example usage of [NumberExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NumberExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Number(t *testing.T) { + t.Parallel() + + num, _, err := big.ParseFloat("1.797693134862315797693134862315797693134862315", 10, 512, big.ToNearestEven) + + if err != nil { + t.Errorf("%s", err) + } + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed number attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.NumberExact(num), + ), + }, + }, + }, + }, + }) +} +``` + +## `NumberFunc` Check + +The [NumberFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NumberFunc) check allows defining a custom function to validate whether the number value of a resource attribute or output satisfies specific conditions. + +Example usage of [NumberFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#NumberFunc) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_NumberFunc(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a number attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.NumberFunc(func(v *big.Float) error { + if err := testConfigurableAttribute(v); err != nil { + return fmt.Errorf("attribute validation failed: %w", err) + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/object.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/object.mdx new file mode 100644 index 0000000000..68569dcdee --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/object.mdx @@ -0,0 +1,81 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Object Value Checks for use with Plan Checks. +--- + +# Object Known Value Checks + +The known value checks that are available for object values are: + +* [ObjectExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/object#objectexact-check) +* [ObjectPartial](/terraform/plugin/testing/acceptance-tests/known-value-checks/object#objectpartial-check) + +## `ObjectExact` Check + +The [ObjectExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ObjectExact) check tests that a resource attribute, or output value has a matching collection of attribute name, and attribute values. + +Example usage of [ObjectExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ObjectExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Object(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed object attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.ObjectExact(map[string]knownvalue.Check{ + "attr1": knownvalue.StringExact("value1"), + "attr2": knownvalue.StringExact("value2"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `ObjectPartial` Check + +The [ObjectPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ObjectPartial) check tests that a resource attribute, or output value has matching attribute values for the specified attribute names. + +Example usage of [ObjectPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#ObjectPartial) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +In this example, only the attribute value associated with the attribute name `attr1` within the object is checked. + +```go +func TestExpectKnownValue_CheckPlan_ObjectPartial(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed object attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.ObjectPartial(map[string]knownvalue.Check{ + "attr1": knownvalue.StringExact("value1"), + }), + ), + }, + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/set.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/set.mdx new file mode 100644 index 0000000000..48d9069269 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/set.mdx @@ -0,0 +1,111 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Set Value Checks for use with Plan Checks. +--- + +# Set Known Value Checks + +The known value checks that are available for set values are: + +* [SetExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/set#setexact-check) +* [SetPartial](/terraform/plugin/testing/acceptance-tests/known-value-checks/set#setpartial-check) +* [SetSizeExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/set#setsizeexact-check) + +## `SetExact` Check + +The [SetExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetExact) check tests that a resource attribute, or output value has an order-independent, matching collection of element values. + +Example usage of [SetExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Set(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed set attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.SetExact([]knownvalue.Check{ + knownvalue.StringExact("value2"), + knownvalue.StringExact("value1"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `SetPartial` Check + +The [SetPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetPartial) check tests that a resource attribute, or output value contains matching element values. + +Example usage of [SetPartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetPartial) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. In this example, only the one element within the set is checked. + +```go +func TestExpectKnownValue_CheckPlan_SetPartial(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed set attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.SetPartial([]knownvalue.Check{ + knownvalue.StringExact("value2"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `SetSizeExact` Check + +The [SetSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetSizeExact) check tests that a resource attribute, or output value contains the specified number of elements. + +Example usage of [SetSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#SetSizeExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_SetElements(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed set attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.SetSizeExact(2), + ), + }, + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/string.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/string.mdx new file mode 100644 index 0000000000..2cbc7fe944 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/string.mdx @@ -0,0 +1,107 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + String Value Checks for use with Plan and State Checks. +--- + +# String Known Value Checks + +The known value checks that are available for string values are: + +* [StringExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/string#stringexact-check) +* [StringRegexp](/terraform/plugin/testing/acceptance-tests/known-value-checks/string#stringregexp-check) +* [StringFunc](/terraform/plugin/testing/acceptance-tests/known-value-checks/string#stringfunc-check) + +## `StringExact` Check + +The [StringExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringExact) check tests that a resource attribute, or output value has an exactly matching string value. + +Example usage of [StringExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_StringExact(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed string attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.StringExact("str")), + }, + }, + }, + }, + }) +} +``` + +## `StringRegexp` Check + +The [StringRegexp](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringRegexp) check tests that a resource attribute, or output value has a string value which matches the supplied regular expression. + +Example usage of [StringRegexp](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringRegexp) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_StringRegexp(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed string attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.StringRegexp(regexp.MustCompile("str"))), + }, + }, + }, + }, + }) +} +``` + +## `StringFunc` Check + +The [StringFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringFunc) check allows defining a custom function to validate whether the string value of a resource attribute or output satisfies specific conditions. + +Example usage of [StringFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#StringFunc) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource) state check. + +```go +func TestExpectKnownValue_CheckState_StringFunc(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a string attribute named "configurable_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("configurable_attribute"), + knownvalue.StringFunc(func(v string) error { + if !strings.HasPrefix(v, "str") { + return fmt.Errorf("value must start with 'str'") + } + return nil + }), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/tuple.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/tuple.mdx new file mode 100644 index 0000000000..95129a23a9 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/known-value-checks/tuple.mdx @@ -0,0 +1,123 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Known Values' +description: >- + Tuple Value Checks for use with Plan Checks. +--- + +# Tuple Known Value Checks + + + +Provider developers will only encounter tuples when testing [dynamic data values](/terraform/plugin/framework/handling-data/dynamic-data). + + + +The known value checks that are available for tuple values are: + +* [TupleExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/tuple#tupleexact-check) +* [TuplePartial](/terraform/plugin/testing/acceptance-tests/known-value-checks/tuple#tuplepartial-check) +* [TupleSizeExact](/terraform/plugin/testing/acceptance-tests/known-value-checks/tuple#tuplesizeexact-check) + +## `TupleExact` Check + +The [TupleExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TupleExact) check tests that a resource attribute, or output value has an order-dependent, matching collection of element values. + +Example usage of [TupleExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TupleExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_Tuple(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a required dynamic attribute named "example_attribute" + Config: `resource "test_resource" "one" { + example_attribute = [true, "hello world"] + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("example_attribute"), + knownvalue.TupleExact([]knownvalue.Check{ + knownvalue.Bool(true), + knownvalue.StringExact("hello world"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `TuplePartial` Check + +The [TuplePartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TuplePartial) check tests that a resource attribute, or output value has matching element values for the specified collection indices. + +Example usage of [TuplePartial](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TuplePartial) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. In this example, only the second element within the tuple, the element defined at index `1`, is checked. + +```go +func TestExpectKnownValue_CheckPlan_TuplePartial(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a required dynamic attribute named "example_attribute" + Config: `resource "test_resource" "one" { + example_attribute = [true, "hello world"] + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("example_attribute"), + knownvalue.TuplePartial(map[int]knownvalue.Check{ + 1: knownvalue.StringExact("hello world"), + }), + ), + }, + }, + }, + }, + }) +} +``` + +## `TupleSizeExact` Check + +The [TupleSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TupleSizeExact) check tests that a resource attribute, or output value contains the specified number of elements. + +Example usage of [TupleSizeExact](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#TupleSizeExact) in an [ExpectKnownValue](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) plan check. + +```go +func TestExpectKnownValue_CheckPlan_TupleElements(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a required dynamic attribute named "example_attribute" + Config: `resource "test_resource" "one" { + example_attribute = [true, "hello world"] + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("example_attribute"), + knownvalue.TupleSizeExact(2), + ), + }, + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/custom.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/custom.mdx new file mode 100644 index 0000000000..5e3672a515 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/custom.mdx @@ -0,0 +1,87 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Plan Checks' +description: >- + Plan Checks are test assertions that can inspect a plan at different phases in a TestStep. Custom Plan Checks can be implemented. +--- + +# Custom Plan Checks + +The package [`plancheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck) also provides the [`PlanCheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#PlanCheck) interface, which can be implemented for a custom plan check. + +The [`plancheck.CheckPlanRequest`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#CheckPlanRequest) contains the current plan file, parsed by the [terraform-json package](https://pkg.go.dev/github.com/hashicorp/terraform-json#Plan). + +Here is an example implementation of a plan check that asserts that every resource change is a no-op, aka, an empty plan: +```go +package example_test + +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +var _ plancheck.PlanCheck = expectEmptyPlan{} + +type expectEmptyPlan struct{} + +func (e expectEmptyPlan) CheckPlan(ctx context.Context, req plancheck.CheckPlanRequest, resp *plancheck.CheckPlanResponse) { + var result error + + for _, rc := range req.Plan.ResourceChanges { + if !rc.Change.Actions.NoOp() { + result = errors.Join(result, fmt.Errorf("expected empty plan, but %s has planned action(s): %v", rc.Address, rc.Change.Actions)) + } + } + + resp.Error = result +} + +func ExpectEmptyPlan() plancheck.PlanCheck { + return expectEmptyPlan{} +} +``` + +And example usage: +```go +package example_test + +import ( + "context" + "errors" + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_CustomPlanCheck_ExpectEmptyPlan(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "random": { + Source: "registry.terraform.io/hashicorp/random", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "random_string" "one" { + length = 16 + }`, + }, + { + Config: `resource "random_string" "one" { + length = 16 + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/index.mdx new file mode 100644 index 0000000000..9c1960b547 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/index.mdx @@ -0,0 +1,128 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Plan Checks' +description: >- + Plan Checks are test assertions that can inspect a plan at different phases in a TestStep. The testing module + provides built-in Plan Checks for common use-cases, and custom Plan Checks can also be implemented. +--- + +# Plan Checks + +During the **Lifecycle (config)** and **Refresh** [modes](/terraform/plugin/testing/acceptance-tests/teststep#test-modes) of a `TestStep`, the testing framework will run `terraform plan` before and after certain operations. For example, the **Lifecycle (config)** mode will run a plan before the `terraform apply` phase, as well as a plan before and after the `terraform refresh` phase. + +These `terraform plan` operations results in a [plan file](/terraform/cli/commands/plan#out-filename) and can be represented by this [JSON format](/terraform/internals/json-format#plan-representation). + +A **plan check** is a test assertion that inspects the plan file at a specific phase during the current testing mode. Multiple plan checks can be run at each defined phase, all assertion errors returned are aggregated, reported as a test failure, and all test cleanup logic is executed. + +- Available plan phases for **Lifecycle (config)** mode are defined in the [`TestStep.ConfigPlanChecks`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep) struct +- Available plan phases for **Refresh** mode are defined in the [`TestStep.RefreshPlanChecks`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep) struct +- **Import** mode currently does not run any plan operations, and therefore does not support plan checks. + +Refer to: + +- [General Plan Checks](#general-plan-checks) for built-in general purpose plan checks. +- [Resource Plan Checks](/terraform/plugin/testing/acceptance-tests/plan-checks/resource) for built-in managed resource and data source plan checks. +- [Output Plan Checks](/terraform/plugin/testing/acceptance-tests/plan-checks/output) for built-in output-related plan checks. +- [Custom Plan Checks](/terraform/plugin/testing/acceptance-tests/plan-checks/custom) for defining bespoke plan checks. + +## General Plan Checks + +The `terraform-plugin-testing` module provides a package [`plancheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck) with built-in general plan checks for common use-cases: + +| Check | Description | +|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| +| [`ExpectEmptyPlan`](/terraform/plugin/testing/acceptance-tests/plan-checks#expectemptyplan-plan-check) | Asserts the entire plan has no operations for apply. | +| [`ExpectNonEmptyPlan`](/terraform/plugin/testing/acceptance-tests/plan-checks#expectnonemptyplan-plan-check) | Asserts the entire plan contains at least one operation for apply. | + +## `ExpectEmptyPlan` Plan Check + +One of the built-in plan checks, [`plancheck.ExpectEmptyPlan`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectEmptyPlan), is useful for determining a plan is a no-op prior to, for instance, the `terraform apply` phase. + +Given the following example with the [random provider](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string), we have written a test that asserts that there are no planned changes: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_Random_EmptyPlan(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "random": { + Source: "registry.terraform.io/hashicorp/random", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "random_string" "one" { + length = 16 + }`, + }, + { + Config: `resource "random_string" "one" { + length = 16 + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} +``` + +## `ExpectNonEmptyPlan` Plan Check + +One of the built-in plan checks, [`plancheck.ExpectNonEmptyPlan`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectNonEmptyPlan), is useful for determining whether a plan contains changes prior to, for instance, the `terraform apply` phase. + +The following example, which uses the built-in [terraform_data resource](https://developer.hashicorp.com/terraform/language/resources/terraform-data), asserts that there are planned changes: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_ExpectNonEmptyPlan_ResourceChanges(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_4_0), + }, + ExternalProviders: map[string]resource.ExternalProvider{ + "terraform": {Source: "terraform.io/builtin/terraform"}, + }, + Steps: []resource.TestStep{ + { + Config: `resource "terraform_data" "one" { + triggers_replace = ["original"] + }`, + }, + { + Config: `resource "terraform_data" "one" { + triggers_replace = ["new"] + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectNonEmptyPlan(), + }, + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/output.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/output.mdx new file mode 100644 index 0000000000..3f0b97bf72 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/output.mdx @@ -0,0 +1,309 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Plan Checks' +description: >- + Plan Checks are test assertions that can inspect a plan at different phases in a TestStep. The testing module + provides built-in Output Value Plan Checks for common use-cases. +--- + +# Output Plan Checks + +The `terraform-plugin-testing` module provides a package [`plancheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck) with built-in output value plan checks for common use-cases: + +| Check | Description | +|-------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| +| [`ExpectKnownOutputValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalue-plan-check) | Asserts the output at the specified address has the specified type, and value. | +| [`ExpectKnownOutputValueAtPath`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalueatpath-plan-check) | Asserts the output at the specified address, and path has the specified type, and value. | +| [`ExpectNullOutputValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectnulloutputvalue-plan-check) | Asserts the output at the specified address has a null value. | +| [`ExpectNullOutputValueAtPath`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectnulloutputvalueatpath-plan-check) | Asserts the output at the specified address, and path has a null value. | +| [`ExpectUnknownOutputValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectunknownoutputvalue-plan-check) | Asserts the output at the specified address has an unknown value. | +| [`ExpectUnknownOutputValueAtPath`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalueatpath-plan-check) | Asserts the output at the specified address, and path has an unknown value. | + +## `ExpectKnownOutputValue` Plan Check + +The [`plancheck.ExpectKnownOutputValue(address, value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectKnownOutputValue) plan check verifies that a specific output value has a known type, and value. + +Refer to [Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks) for details, and examples of the available [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types that can be used with the `ExpectKnownOutputValue` plan check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func TestExpectKnownOutputValue_CheckPlan_Bool(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_8_0), + }, + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: ` + output "test" { + value = provider::example::bool(true) + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownOutputValue( + "test", + knownvalue.Bool(true), + ), + }, + }, + }, + }, + }) +} +``` + +## `ExpectKnownOutputValueAtPath` Plan Check + +The [`plancheck.ExpectKnownOutputValueAtPath(address, path, value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectKnownOutputValueAtPath) plan check verifies that a specific output value at a defined path has a known type, and value. + +~> **Note**: Prior to Terraform v1.3.0 a planned output is marked as fully unknown if any attribute is unknown. + +Refer to [Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks) for details, and examples of the available [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types that can be used with the `ExpectKnownOutputValueAtPath` plan check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func TestExpectKnownOutputValue_CheckPlan_Bool(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed boolean attribute named "computed_attribute" + Config: `resource "test_resource" "one" {} + + // Generally, it is not necessary to use an output to test a resource attribute, + // the resource attribute should be tested directly instead. This is only shown as + // an example. + // + // ConfigPlanChecks: resource.ConfigPlanChecks{ + // PreApply: []plancheck.PlanCheck{ + // plancheck.ExpectKnownValue( + // "test_resource.one", + // tfjsonpath.New("computed_attribute"), + // knownvalue.Bool(true), + // ), + // }, + // }, + // + // This is only shown as an example. + output test { + value = test_resource.one + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownOutputValueAtPath( + "test", + tfjsonpath.New("computed_attribute"), + knownvalue.Bool(true), + ), + }, + }, + }, + }, + }) +} +``` + +## `ExpectNullOutputValue` Plan Check + +~> **Note**: `ExpectNullOutputValue` is deprecated. Use [`ExpectKnownOutputValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalue-plan-check) with [`knownvalue.Null()`](/terraform/plugin/testing/acceptance-tests/known-value-checks/null) instead. + +The built-in [`plancheck.ExpectNullOutputValue(address)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectNullOutputValue) plan check determines whether an output at the specified address has a null value. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_ExpectNullOutputValue_StringAttribute_NullConfig(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: `resource "test_resource" "test" { + string_attribute = null + } + + output "string_attribute" { + value = test_resource.test.string_attribute + } + `, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectNullOutputValue("string_attribute"), + }, + }, + }, + }, + }) +} +``` + +## `ExpectNullOutputValueAtPath` Plan Check + +~> **Note**: `ExpectNullOutputValueAtPath` is deprecated. Use [`ExpectKnownOutputValueAtPath`](/terraform/plugin/testing/acceptance-tests/plan-checks/output#expectknownoutputvalueatpath-plan-check) with [`knownvalue.Null()`](/terraform/plugin/testing/acceptance-tests/known-value-checks/null) instead. + +The built-in [`plancheck.ExpectNullOutputValueAtPath(address, path)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectNullOutputValueAtPath) plan check determines whether an output at the specified address, and path has a null value. | + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_ExpectNullOutputValueAtPath_StringAttribute_NullConfig(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Prior to Terraform v1.3.0 a planned output is marked as fully unknown + // if any attribute is unknown. The id attribute within the test provider + // is unknown. + // Reference: https://github.com/hashicorp/terraform/blob/v1.3/CHANGELOG.md#130-september-21-2022 + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_3_0), + }, + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: `resource "test_resource" "test" { + string_attribute = null + } + + output "resource" { + value = test_resource.test + } + `, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectNullOutputValueAtPath("resource", tfjsonpath.New("string_attribute")), + }, + }, + }, + }, + }) +} +``` + +## `ExpectUnknownOutputValue` Plan Check + +One of the built-in plan checks, [`plancheck.ExpectUnknownOutputValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectUnknownOutputValue), determines whether an output value is unknown, for example, prior to the `terraform apply` phase. + +The following uses the [time_offset](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/offset) resource from the [time provider](https://registry.terraform.io/providers/hashicorp/time/latest), to illustrate usage of the [`plancheck.ExpectUnknownOutputValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectUnknownOutputValue), and verifies that `day` is unknown. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_Time_Unknown(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "time": { + Source: "registry.terraform.io/hashicorp/time", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "time_offset" "one" { + offset_days = 1 + } + + output day { + value = time_offset.one.day + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectUnknownOutputValue("day"), + }, + }, + }, + }, + }) +} +``` + +## `ExpectUnknownOutputValueAtPath` Plan Check + +Output values can contain objects or collections as well as primitive (e.g., string) values. Output value plan checks provide two forms for the plan checks, for example `ExpectUnknownOutputValue()`, and `ExpectUnknownOutputValueAtPath()`. The `Expect<...>OutputValueAtPath()` form is used to access a value contained within an object or collection, as illustrated in the following example. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func Test_Time_Unknown(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "time": { + Source: "registry.terraform.io/hashicorp/time", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "time_offset" "one" { + offset_days = 1 + } + + output time_offset_one { + value = time_offset.one + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectUnknownOutputValueAtPath("time_offset_one", tfjsonpath.New("day")), + }, + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/resource.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/resource.mdx new file mode 100644 index 0000000000..b96ae68bb9 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/plan-checks/resource.mdx @@ -0,0 +1,286 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Plan Checks' +description: >- + Plan Checks are test assertions that can inspect a plan at different phases in a TestStep. The testing module + provides built-in Managed Resource and Data Source Plan Checks for common use-cases. +--- + +# Resource Plan Checks + +The `terraform-plugin-testing` module provides a package [`plancheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck) with built-in managed resource, and data source plan checks for common use-cases: + +| Check | Description | +|---------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------| +| [`ExpectKnownValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/resource#expectknownvalue-plan-check) | Asserts the specified attribute at the given managed resource, or data source, has the specified type, and value. | +| [`ExpectResourceAction`](/terraform/plugin/testing/acceptance-tests/plan-checks/resource#expectresourceaction-plan-check) | Asserts the given managed resource, or data source, has the specified operation for apply. | +| [`ExpectSensitiveValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/resource#expectsensitivevalue-plan-check) | Asserts the specified attribute at the given managed resource, or data source, has a sensitive value. | +| [`ExpectUnknownValue`](/terraform/plugin/testing/acceptance-tests/plan-checks/resource#expectunknownvalue-plan-check) | Asserts the specified attribute at the given managed resource, or data source, has an unknown value. | + +## `ExpectKnownValue` Plan Check + +The [`plancheck.ExpectKnownValue(address, path, value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectKnownValue) plan check provides a basis for asserting that a specific resource attribute has a known type, and value. + +Refer to [Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks) for details, and examples of the available [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types that can be used with the `ExpectKnownValue` plan check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestExpectKnownValue_CheckPlan_String(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed string attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.StringExact("str")), + }, + }, + }, + }, + }) +} +``` + +## `ExpectResourceAction` Plan Check + +One of the built-in plan checks, [`plancheck.ExpectResourceAction`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectResourceAction), is useful for determining the exact action type a resource will under-go during, say, the `terraform apply` phase. + +Given the following example with the [random provider](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string), we have written a test that asserts that `random_string.one` will be destroyed and re-created when the `length` attribute is changed: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_Random_ForcesRecreate(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "random": { + Source: "registry.terraform.io/hashicorp/random", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "random_string" "one" { + length = 16 + }`, + }, + { + Config: `resource "random_string" "one" { + length = 15 + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction("random_string.one", plancheck.ResourceActionDestroyBeforeCreate), + }, + }, + }, + }, + }) +} +``` + +Another example with the [time provider](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/offset) asserts that `time_offset.one` will be updated in-place when the `offset_days` attribute is changed: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_Time_UpdateInPlace(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "time": { + Source: "registry.terraform.io/hashicorp/time", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "time_offset" "one" { + offset_days = 1 + }`, + }, + { + Config: `resource "time_offset" "one" { + offset_days = 2 + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction("time_offset.one", plancheck.ResourceActionUpdate), + }, + }, + }, + }, + }) +} +``` + +Multiple plan checks can be combined if you want to assert multiple resource actions: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" +) + +func Test_Time_UpdateInPlace_and_NoOp(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "time": { + Source: "registry.terraform.io/hashicorp/time", + }, + }, + Steps: []resource.TestStep{ + { + Config: `resource "time_offset" "one" { + offset_days = 1 + } + resource "time_offset" "two" { + offset_days = 1 + }`, + }, + { + Config: `resource "time_offset" "one" { + offset_days = 2 + } + resource "time_offset" "two" { + offset_days = 1 + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction("time_offset.one", plancheck.ResourceActionUpdate), + plancheck.ExpectResourceAction("time_offset.two", plancheck.ResourceActionNoop), + }, + }, + }, + }, + }) +} +``` + +## `ExpectSensitiveValue` Plan Check + +The built-in [`plancheck.ExpectSensitiveValue(address, path)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectSensitiveValue) plan check is used to determine whether the specified attribute at the given managed resource, or data source, has a sensitive value. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_ExpectSensitiveValue_SensitiveStringAttribute(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_0_0), // Change.AfterSensitive + }, + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: ` + resource "test_resource" "one" { + sensitive_string_attribute = "test" + } + `, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectSensitiveValue("test_resource.one", + tfjsonpath.New("sensitive_string_attribute")), + }, + }, + }, + }, + }) +} +``` + +## `ExpectUnknownValue` Plan Check + +The built-in [`plancheck.ExpectUnknownValue(address, path)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/plancheck#ExpectUnknownValue) plan check is used to determine whether the specified attribute at the given managed resource, or data source, has an unknown value. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func Test_ExpectUnknownValue_StringAttribute(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + ExternalProviders: map[string]resource.ExternalProvider{ + "time": { + Source: "registry.terraform.io/hashicorp/time", + }, + }, + // Provider definition for `test` omitted. + Steps: []resource.TestStep{ + { + Config: `resource "time_static" "one" {} + + resource "test_resource" "two" { + string_attribute = time_static.one.rfc3339 + } + `, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectUnknownValue("test_resource.two", tfjsonpath.New("string_attribute")), + }, + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/custom.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/custom.mdx new file mode 100644 index 0000000000..46cd3877ee --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/custom.mdx @@ -0,0 +1,122 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: State Checks' +description: >- + State Checks are test assertions that can inspect state during a TestStep. Custom State Checks can be implemented. +--- + +# Custom State Checks + +The package [`statecheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck) also provides the [`StateCheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#StateCheck) interface, which can be implemented for a custom state check. + +The [`statecheck.CheckStateRequest`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#CheckStateRequest) contains the current state file, parsed by the [terraform-json package](https://pkg.go.dev/github.com/hashicorp/terraform-json#State). + +Here is an example implementation of a state check that asserts that a specific resource attribute has a known type and value: + +```go +package example_test + +import ( + "context" + "fmt" + + tfjson "github.com/hashicorp/terraform-json" + + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +var _ statecheck.StateCheck = expectKnownValue{} + +type expectKnownValue struct { + resourceAddress string + attributePath tfjsonpath.Path + knownValue knownvalue.Check +} + +func (e expectKnownValue) CheckState(ctx context.Context, req statecheck.CheckStateRequest, resp *statecheck.CheckStateResponse) { + var resource *tfjson.StateResource + + if req.State == nil { + resp.Error = fmt.Errorf("state is nil") + } + + if req.State.Values == nil { + resp.Error = fmt.Errorf("state does not contain any state values") + } + + if req.State.Values.RootModule == nil { + resp.Error = fmt.Errorf("state does not contain a root module") + } + + for _, r := range req.State.Values.RootModule.Resources { + if e.resourceAddress == r.Address { + resource = r + + break + } + } + + if resource == nil { + resp.Error = fmt.Errorf("%s - Resource not found in state", e.resourceAddress) + + return + } + + result, err := tfjsonpath.Traverse(resource.AttributeValues, e.attributePath) + + if err != nil { + resp.Error = err + + return + } + + if err := e.knownValue.CheckValue(result); err != nil { + resp.Error = err + } +} + +func ExpectKnownValue(resourceAddress string, attributePath tfjsonpath.Path, knownValue knownvalue.Check) statecheck.StateCheck { + return expectKnownValue{ + resourceAddress: resourceAddress, + attributePath: attributePath, + knownValue: knownValue, + } +} +``` + +And example usage: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestExpectKnownValue_CheckState_Bool(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed boolean attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Bool(true), + ), + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/index.mdx new file mode 100644 index 0000000000..36304e3880 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/index.mdx @@ -0,0 +1,20 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: State Checks' +description: >- + State Checks are test assertions that can inspect state during a TestStep. The testing module + provides built-in State Checks for common use-cases, and custom State Checks can also be implemented. +--- + +# State Checks + +During the **Lifecycle (config)** [mode](/terraform/plugin/testing/acceptance-tests/teststep#test-modes) of a `TestStep`, the testing framework will run `terraform apply`. + +The execution of `terraform apply` results in a [state file](/terraform/language/state), and can be represented by this [JSON format](/terraform/internals/json-format#state-representation). + +A **state check** is a test assertion that inspects the state file. Multiple state checks can be run, all assertion errors returned are aggregated, reported as a test failure, and all test cleanup logic is executed. + +Refer to: + +- [Resource State Checks](/terraform/plugin/testing/acceptance-tests/state-checks/resource) for built-in managed resource and data source state checks. +- [Output State Checks](/terraform/plugin/testing/acceptance-tests/state-checks/output) for built-in output-related state checks. +- [Custom State Checks](/terraform/plugin/testing/acceptance-tests/state-checks/custom) for defining bespoke state checks. diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/output.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/output.mdx new file mode 100644 index 0000000000..434e7486b9 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/output.mdx @@ -0,0 +1,119 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: State Checks' +description: >- + State Checks are test assertions that can inspect state during a TestStep. The testing module + provides built-in Output Value State Checks for common use-cases. +--- + +# Output State Checks + +The `terraform-plugin-testing` module provides a package [`statecheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck) with built-in output value state checks for common use-cases: + +| Check | Description | +|-------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| +| [`ExpectKnownOutputValue`](/terraform/plugin/testing/acceptance-tests/state-checks/output#expectknownoutputvalue-state-check) | Asserts the output at the specified address has the specified type, and value. | +| [`ExpectKnownOutputValueAtPath`](/terraform/plugin/testing/acceptance-tests/state-checks/output#expectknownoutputvalueatpath-state-check) | Asserts the output at the specified address, and path has the specified type, and value. | + +## `ExpectKnownOutputValue` State Check + +The [`statecheck.ExpectKnownOutputValue(address, value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#ExpectKnownOutputValue) state check verifies that a specific output value has a known type, and value. + +Refer to [Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks) for details, and examples of the available [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types that can be used with the `ExpectKnownOutputValue` state check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func TestExpectKnownOutputValue_CheckState_Bool(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_8_0), + }, + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: ` + output "test" { + value = provider::example::bool(true) + }`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownOutputValue( + "test", + knownvalue.Bool(true), + ), + }, + }, + }, + }) +} +``` + +## `ExpectKnownOutputValueAtPath` State Check + +The [`statecheck.ExpectKnownOutputValueAtPath(address, path, value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#ExpectKnownOutputValueAtPath) state check verifies that a specific output value at a defined path has a known type, and value. + +Refer to [Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks) for details, and examples of the available [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types that can be used with the `ExpectKnownOutputValueAtPath` state check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestExpectKnownOutputValueAtPath_CheckState_Bool(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed boolean attribute named "computed_attribute" + Config: `resource "test_resource" "one" {} + + // Generally, it is not necessary to use an output to test a resource attribute, + // the resource attribute should be tested directly instead. This is only shown as + // an example. + // Generally, it is not necessary to use an output to test a resource attribute, + // the resource attribute should be tested directly instead, by inspecting the + // value of the resource attribute. For instance: + // + // ConfigStateChecks: []statecheck.StateCheck{ + // statecheck.ExpectKnownValue( + // "test_resource.one", + // tfjsonpath.New("computed_attribute"), + // knownvalue.Bool(true), + // ), + // }, + // + // This is only shown as an example. + output test_resource_one_output { + value = test_resource.one + }`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownOutputValueAtPath( + "test_resource_one_output", + tfjsonpath.New("computed_attribute"), + knownvalue.Bool(true), + ), + }, + }, + }, + }) +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/resource.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/resource.mdx new file mode 100644 index 0000000000..d11db8f63f --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/state-checks/resource.mdx @@ -0,0 +1,310 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: State Checks' +description: >- + State Checks are test assertions that can inspect state during a TestStep. The testing module + provides built-in Managed Resource and Data Source State Checks for common use-cases. +--- + +# Resource State Checks + +The `terraform-plugin-testing` module provides a package [`statecheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck) with built-in managed resource, and data source state checks for common use-cases: + +| Check | Description | +|---------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`CompareValue`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevalue-state-check) | Compares sequential values of the specified attribute at the given managed resource, or data source, using the supplied [value comparer](/terraform/plugin/testing/acceptance-tests/value-comparers). | +| [`CompareValueCollection`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevaluecollection-state-check) | Compares each item in the specified collection (e.g., list, set) attribute, with the second specified attribute at the given managed resources, or data sources, using the supplied [value comparer](/terraform/plugin/testing/acceptance-tests/value-comparers). | +| [`CompareValuePairs`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevaluecollection-state-check) | Compares the specified attributes at the given managed resources, or data sources, using the supplied [value comparer](/terraform/plugin/testing/acceptance-tests/value-comparers). | +| [`ExpectKnownValue`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#expectknownvalue-state-check) | Asserts the specified attribute at the given managed resource, or data source, has the specified type, and value. | +| [`ExpectSensitiveValue`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#expectsensitivevalue-state-check) | Asserts the specified attribute at the given managed resource, or data source, has a sensitive value. | + +## `CompareValue` State Check + +The intended usage of [`statecheck.CompareValue(comparer)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#CompareValue) state check is to retrieve a specific resource attribute value from state during sequential test steps, and to compare these values using the supplied value comparer. + +Refer to [Value Comparers](/terraform/plugin/testing/acceptance-tests/value-comparers) for details, and examples of the available [compare.ValueComparer](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValueComparer) types that can be used with the `CompareValue` state check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/compare" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestCompareValue_CheckState_ValuesSame(t *testing.T) { + t.Parallel() + + compareValuesSame := statecheck.CompareValue(compare.ValuesSame()) + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + compareValuesSame.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + { + // Example resource containing a computed attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + compareValuesSame.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + }, + }) +} +``` + +## `CompareValueCollection` State Check + +The [`statecheck.CompareValueCollection(resourceAddressOne, collectionPath, resourceAddressTwo, attributePath, comparer)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#CompareValueCollection) state check retrieves a specific collection (e.g., list, set) resource attribute, and a second resource attribute from state, and compares each of the items in the collection with the second attribute using the supplied value comparer. + +Refer to [Value Comparers](/terraform/plugin/testing/acceptance-tests/value-comparers) for details, and examples of the available [compare.ValueComparer](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValueComparer) types that can be used with the `CompareValueCollection` state check. + +The following example illustrates how a `CompareValue` state check can be used to determine whether an attribute value appears in a collection attribute. Note that this is for illustrative purposes only, `CompareValue` should only be used for checking computed values. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/compare" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestCompareValueCollection_CheckState_ValuesSame(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // The following is for illustrative purposes. State checking + // should only be used for computed attributes + Config: `resource "test_resource" "one" { + string_attribute = "str" + } + + resource "test_resource" "two" { + list_attribute = [ + "str2", + "str", + ] + } + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.CompareValueCollection( + "test_resource.two", + []tfjsonpath.Path{ + tfjsonpath.New("list_attribute"), + }, + "test_resource.one", + tfjsonpath.New("string_attribute"), + compare.ValuesSame(), + ), + }, + }, + }, + }) +} +``` + +The following example illustrates how a `CompareValue` state check can be used to determine whether an object attribute value appears in a collection (e.g., list) attribute containing objects. Note that this is for illustrative purposes only, `CompareValue` should only be used for checking computed values. + + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/compare" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestCompareValueCollection_CheckState_ValuesSame(t *testing.T) { + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // The following is for illustrative purposes. State checking + // should only be used for computed attributes + Config: `resource "test_resource" "one" { + list_nested_attribute = [ + { + a = false + b = "two" + }, + { + a = true + b = "four" + } + ] + single_nested_attribute = { + a = true + b = "four" + } + }`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.CompareValueCollection( + "test_resource.one", + []tfjsonpath.Path{ + tfjsonpath.New("list_nested_attribute"), + tfjsonpath.New("b"), + }, + "test_resource.one", + tfjsonpath.New("single_nested_attribute").AtMapKey("b"), + compare.ValuesSame(), + ), + }, + }, + }, + }) +} +``` + +## `CompareValuePairs` State Check + +The [`statecheck.CompareValuePairs(resourceAddressOne, attributePathOne, resourceAddressTwo, attributePathTwo, comparer)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#CompareValuePairs) state check provides a basis for retrieving a pair of attribute values, and comparing them using the supplied value comparer. + +Refer to [Value Comparers](/terraform/plugin/testing/acceptance-tests/value-comparers) for details, and examples of the available [compare.ValueComparer](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValueComparer) types that can be used with the `CompareValuePairs` state check. + +```go +package statecheck_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/compare" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestCompareValuePairs_CheckState_ValuesSame(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed attribute named "computed_attribute" + Config: `resource "test_resource" "one" {} + + resource "test_resource" "two" {} + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.CompareValuePairs( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + "test_resource.two", + tfjsonpath.New("computed_attribute"), + compare.ValuesSame(), + ), + }, + }, + }, + }) +} +``` + +## `ExpectKnownValue` State Check + +The [`statecheck.ExpectKnownValue(address, path, value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#ExpectKnownValue) state check provides a basis for asserting that a specific resource attribute has a known type, and value. + +Refer to [Known Value Checks](/terraform/plugin/testing/acceptance-tests/known-value-checks) for details, and examples of the available [knownvalue.Check](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/knownvalue#Check) types that can be used with the `ExpectKnownValue` state check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestExpectKnownValue_CheckState_Bool(t *testing.T) { + t.Parallel() + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + // Example resource containing a computed boolean attribute named "computed_attribute" + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + knownvalue.Bool(true), + ), + }, + }, + }, + }) +} +``` + +## `ExpectSensitiveValue` State Check + +The [`statecheck.ExpectSensitiveValue(address, path)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck#ExpectSensitiveValue) state check provides a basis for asserting that a specific resource attribute is marked as sensitive. + +-> **Note:** In this example, a [TerraformVersionCheck](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#TerraformVersionCheck) is being used to prevent execution of this test prior to Terraform version `1.4.6` (refer to the release notes for Terraform [v1.4.6](https://github.com/hashicorp/terraform/releases/tag/v1.4.6)). + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_ExpectSensitiveValue_SensitiveStringAttribute(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_4_6), // StateResource.SensitiveValues + }, + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: ` + resource "test_resource" "one" { + sensitive_string_attribute = "test" + } + `, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectSensitiveValue("test_resource.one", + tfjsonpath.New("sensitive_string_attribute")), + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/sweepers.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/sweepers.mdx new file mode 100644 index 0000000000..2fff9834f8 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/sweepers.mdx @@ -0,0 +1,121 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Sweepers' +description: >- + Acceptance tests provision and verify real infrastructure with Terraform's + testing framework. Sweepers clean up leftover infrastructure. +--- + +# Sweepers + +Acceptance tests in Terraform provision and verify real infrastructure using [Terraform's testing framework](/terraform/plugin/testing/acceptance-tests). Ideally all infrastructure created is then destroyed within the lifecycle of a test, however the reality is that there are several situations that can arise where resources created during a test are “leaked”. Leaked test resources are resources created by Terraform during a test, but Terraform either failed to destroy them as part of the test, or the test falsely reported all resources were destroyed after completing the test. Common causes are intermittent errors or failures in vendor APIs, or developer error in the resource code or test. + +To address the possibility of leaked resources, Terraform provides a mechanism called sweepers to cleanup leftover infrastructure. We will add a file to our folder structure that will invoke the sweeper helper. + +``` +terraform-plugin-example/ +├── provider.go +├── provider_test.go +├── example/ +│ ├── example_sweeper_test.go +│ ├── resource_example_compute.go +│ ├── resource_example_compute_test.go +``` + +**`example_sweeper_test.go`** + +```go +package example + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestMain(m *testing.M) { + resource.TestMain(m) +} + +// sharedClientForRegion returns a common provider client configured for the specified region +func sharedClientForRegion(region string) (any, error) { + ... + return client, nil +} +``` + +`resource.TestMain` is responsible for parsing the special test flags and invoking the sweepers. Sweepers should be added within the acceptance test file of a resource. + +**`resource_example_compute_test.go`** + +```go +package example + +import ( + "log" + "strings" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func init() { + resource.AddTestSweepers("example_compute", &resource.Sweeper{ + Name: "example_compute", + F: func (region string) error { + client, err := sharedClientForRegion(region) + if err != nil { + return fmt.Errorf("Error getting client: %s", err) + } + conn := client.(*ExampleClient) + + instances, err := conn.DescribeComputeInstances() + if err != nil { + return fmt.Errorf("Error getting instances: %s", err) + } + for _, instance := range instances { + if strings.HasPrefix(instance.Name, "test-acc") { + err := conn.DestroyInstance(instance.ID) + + if err != nil { + log.Printf("Error destroying %s during sweep: %s", instance.Name, err) + } + } + } + return nil + }, + }) +} +``` + +This example demonstrates adding a sweeper, it is important to note that the string passed to `resource.AddTestSweepers` is added to a map, this name must therefore be unique. Also note there needs to be a way of identifying resources created by Terraform during acceptance tests, a common practice is to prefix all resource names created during acceptance tests with `"test-acc"` or something similar. + +For more complex leaks, sweepers can also specify a list of sweepers that need to be run prior to the one being defined. + +**`resource_example_compute_disk_test.go`** + +```go +package example + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func init() { + resource.AddTestSweepers("example_compute_disk", &resource.Sweeper{ + Name: "example_compute_disk", + Dependencies: []string{"example_compute"} + ... + }) +} +``` + +The sweepers can be invoked with the common make target `sweep`: + +``` +$ make sweep +WARNING: This will destroy infrastructure. Use only in development accounts. +go test ... +... +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/testcase.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/testcase.mdx new file mode 100644 index 0000000000..0ecdcce202 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/testcase.mdx @@ -0,0 +1,352 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: TestCase' +description: |- + Acceptance tests are expressed in terms of Test Cases. Each Test Case + creates a set of resources then verifies the new infrastructure. +--- + +# Acceptance Tests: TestCases + +Acceptance tests are expressed in terms of **Test Cases**, each using one or +more Terraform configurations designed to create a set of resources under test, +and then verify the actual infrastructure created. Terraform's `resource` +package offers a method `Test()`, accepting two parameters and acting as the +entry point to Terraform's acceptance test framework. The first parameter is the +standard [\*testing.T struct from Golang's Testing package][3], and the second is +[TestCase][1], a Go struct that developers use to setup the acceptance tests. + +Here's an example acceptance test. Here the Provider is named `Example`, and the +Resource under test is `Widget`. The parts of this test are explained below the +example. + +```go +package example + +// example.Widget represents a concrete Go type that represents an API resource +func TestAccExampleWidget_basic(t *testing.T) { + var widgetBefore, widgetAfter example.Widget + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccExampleResource(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widgetBefore), + }, + }, + { + Config: testAccExampleResource_removedPolicy(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widgetAfter), + }, + }, + }, + }) +} +``` + +## Creating Acceptance Tests Functions + +Terraform acceptance tests are declared with the naming pattern `TestAccXxx` +and with the standard Go test function signature of `func TestAccXxx(*testing.T)`. +Using the above test as an example: + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + // ... +} +``` + +Inside this function we invoke `resource.Test()` with the `*testing.T` input and +a new testcase object: + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + // ... + }) +} +``` + +The majority of acceptance tests will only invoke `resource.Test()` and exit. If +at any point this method encounters an error, either in executing the provided +Terraform configurations or subsequent developer defined checks, `Test()` will +invoke the `t.Error` method of Go's standard testing framework and the test will +fail. A failed test will not halt or otherwise interrupt any other tests +currently running. + +## TestCase Reference API + +`TestCase` offers several fields for developers to add to customize and validate +each test, defined below. The source for `TestCase` can be viewed [here on +godoc.org](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCase) + +### IsUnitTest + +**Type:** [bool](https://pkg.go.dev/builtin#bool) + +**Default:** `false` + +**Required:** no + +**IsUnitTest** allows a test to run regardless of the TF_ACC environment +variable. This should be used with care - only for fast tests on local resources +(e.g. remote state with a local backend) but can be used to increase confidence +in correct operation of Terraform without waiting for a full acceptance test +run. + +### PreCheck + +**Type:** `function` + +**Default:** `nil` + +**Required:** no + +**PreCheck** if non-nil, will be called before any test steps are executed. It +is commonly used to verify that required values exist for testing, such as +environment variables containing test keys that are used to configure the +Provider or Resource under test. + +**Example usage:** + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + // ... + }) +} + + +// testAccPreCheck validates the necessary test API keys exist +// in the testing environment +func testAccPreCheck(t *testing.T) { + if v := os.Getenv("EXAMPLE_KEY"); v == "" { + t.Fatal("EXAMPLE_KEY must be set for acceptance tests") + } + if v := os.Getenv("EXAMPLE_SECRET"); v == "" { + t.Fatal("EXAMPLE_SECRET must be set for acceptance tests") + } +} +``` + +### TerraformVersionChecks + +**Type:** [`[]tfversion.TerraformVersionCheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#TerraformVersionCheck) + +**Default:** `nil` + +**Required:** no + +**TerraformVersionChecks** if non-nil, will be called after any defined PreChecks +but before any test steps are executed. The [Terraform Version Checks](/terraform/plugin/testing/acceptance-tests/tfversion-checks) +are generic checks that check logic against the Terraform CLI version and can +immediately pass or fail a test before any test steps are executed. + +The [`tfversion`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion) package provides built-in checks for common scenarios. + +**Example usage:** + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_1_0), // built-in check from tfversion package + }, + // ... + }) +} + +``` + +### Providers + +**Type:** [`map[string]*schema.Provider`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema#Provider) + +**Required:** Yes + +**Providers** is a map of `*schema.Provider` values with `string` +keys, representing the Providers that will be under test. Only the Providers +included in this map will be loaded during the test, so any Provider included in +a configuration file for testing must be represented in this map or the test +will fail during initialization. + +This map is most commonly constructed once in a common `init()` method of the +Provider's main test file, and includes an object of the current Provider type. + +**Example usage:** (note the different files `widget_test.go` and `provider_test.go`) + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_1_0), + }, + Providers: testAccProviders, + // ... + }) +} + +// File: example/provider_test.go +package example + +var testAccProviders map[string]*schema.Provider +var testAccProvider *schema.Provider + +func init() { + testAccProvider = Provider() + testAccProviders = map[string]*schema.Provider{ + "example": testAccProvider, + } +} +``` + +### CheckDestroy + +**Type:** [TestCheckFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckFunc) + +**Default:** `nil` + +**Required:** no + +**CheckDestroy** is called after all test steps have been run and Terraform +has run `destroy` on the remaining state. This allows developers to ensure any +resource created is truly destroyed. This method receives the last known +Terraform state as input, and commonly uses infrastructure SDKs to query APIs +directly to verify the expected objects are no longer found, and should return +an error if any resources remain. + +**Example usage:** + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_1_0), + }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + // ... + }) +} + +// testAccCheckExampleResourceDestroy verifies the Widget +// has been destroyed +func testAccCheckExampleResourceDestroy(s *terraform.State) error { + // retrieve the connection established in Provider configuration + conn := testAccProvider.Meta().(*ExampleClient) + + // loop through the resources in state, verifying each widget + // is destroyed + for _, rs := range s.RootModule().Resources { + if rs.Type != "example_widget" { + continue + } + + // Retrieve our widget by referencing it's state ID for API lookup + request := &example.DescribeWidgets{ + IDs: []string{rs.Primary.ID}, + } + + response, err := conn.DescribeWidgets(request) + if err == nil { + if len(response.Widgets) > 0 && *response.Widgets[0].ID == rs.Primary.ID { + return fmt.Errorf("Widget (%s) still exists.", rs.Primary.ID) + } + + return nil + } + + // If the error is equivalent to 404 not found, the widget is destroyed. + // Otherwise return the error + if !strings.Contains(err.Error(), "Widget not found") { + return err + } + } + + return nil +} +``` + +### Steps + +**Type:** [`[]TestStep`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep) + +**Required:** yes + +**TestStep** is a single apply sequence of a test, done within the context of a +state. Multiple `TestStep`s can be sequenced in a Test to allow testing +potentially complex update logic and usage. Basic tests typically contain one to +two steps, to verify the resource can be created and subsequently updated, +depending on the properties of the resource. In general, simply create/destroy +tests will only need one step. + +`TestStep`s are covered in detail in [the next section, `TestSteps`](/terraform/plugin/testing/acceptance-tests/teststep). + +**Example usage:** + +```go +// File: example/widget_test.go +package example + +func TestAccExampleWidget_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_1_0), + }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccExampleResource(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widgetBefore), + }, + }, + { + Config: testAccExampleResource_removedPolicy(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widgetAfter), + }, + }, + }, + }) +} +``` + +## Next Steps + +Proceed to define [`TestSteps`][2]. + +[1]: https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCase + +[2]: /terraform/plugin/testing/acceptance-tests/teststep + +[3]: https://pkg.go.dev/testing#T diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/teststep.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/teststep.mdx new file mode 100644 index 0000000000..192406852b --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/teststep.mdx @@ -0,0 +1,375 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: TestStep' +description: |- + TestSteps represent the application of an actual Terraform configuration + file to a given state. +--- + +# Acceptance Tests: TestSteps + +`TestStep`s represent the application of an actual Terraform configuration file +to a given state. Each step requires a configuration as input and provides +developers several means of validating the behavior of the specific resource +under test. + +## Test Modes + +Terraform's test framework facilitates three distinct modes of acceptance tests, +_Lifecycle (config)_, _Import_ and _Refresh_. + +### Lifecycle (config) mode + +_Lifecycle (config)_ mode is the most common mode. It tests plugins by +providing one or more configuration files with the same logic as would be used +when running `terraform apply`. Configuration is supplied by specifying +[TestStep.Config](/terraform/plugin/testing/acceptance-tests/configuration#teststep-config), +[TestStep.ConfigDirectory](/terraform/plugin/testing/acceptance-tests/configuration#teststep-configdirectory), or +[TestStep.ConfigFile](/terraform/plugin/testing/acceptance-tests/configuration#teststep-configfile). +Variables for use with configuration are defined by specifying +[TestStep.ConfigVariables](/terraform/plugin/testing/acceptance-tests/configuration#teststep-configvariables). + +-> **Note:** To define a _Lifecycle (config)_ mode test step, use one of the +`Config`, `ConfigFile`, or `ConfigDirectory` fields. + +```go +steps := []TestStep{ + { + Config: `resource "random_string" { length = 12 }`, + }, +} +``` + +### Import mode + +[_Import_ mode](/terraform/plugin/testing/acceptance-tests/import-mode) +exercises provider logic for importing existing infrastructure resources into a +Terraform statefile, using real Terraform import functionality. + +-> **Note:** To define an _Import_ mode test step, set the `ImportState` field to `true`. + +The recommended use of _Import_ mode is to run it after a _Lifecycle (config)_ +mode test step. The testing framework uses the configuration and state of the +_Lifecycle (config)_ mode test step as known good values for any `_Import_` +mode test steps that follow it. As a result, _Import_ mode blocks tend to be +concise and idiomatic. + +```go +steps := []TestStep{ + { + Config: `resource "random_string" "puzzle" { length = 12 }`, + }, + { + ImportState: true, + ImportStateKind: resource.ImportBlockWithID, + ResourceName: `random_string.puzzle`, + }, +} +``` + + +### Refresh mode + +_Refresh_ mode runs `terraform refresh` to refresh the test case's Terraform state. + +-> **Note:** To define a _Refresh_ mode test step, set the `RefreshState` field to `true`. + +```go +steps := []TestStep{ + { + Config: `resource "random_string" "puzzle" { length = 12 }`, + }, + { + RefreshState: true, + }, +} +``` + +## Steps + +`Steps` is a field within +[TestCase](/terraform/plugin/testing/acceptance-tests/testcase), the struct used +to construct acceptance tests. Each step represents a full `terraform apply` of +a given configuration language, followed by zero or more checks (defined later) +to verify the application. Each `Step` is applied in order, and require its own +configuration and optional check functions. + +Below is a code example of a lifecycle test that provides two `TestStep` structs: + +```go +package example + +// example.Widget represents a concrete Go type that represents an API resource +func TestAccExampleWidget_basic(t *testing.T) { + var widgetBefore, widgetAfter example.Widget + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + Config: testAccExampleResource(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widgetBefore), + }, + }, + { + Config: testAccExampleResource_removedPolicy(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widgetAfter), + }, + }, + }, + }) +} +``` + +In the above example each `TestCase` invokes a function to retrieve it's desired +configuration, based on a randomized name provided, however an in-line string or +constant string would work as well, so long as they contain valid Terraform +configuration for the plugin or resource under test. This pattern of first +applying and checking a basic configuration, followed by applying a modified +configuration with updated or additional checks is a common pattern used to test +update functionality. + +## Plan Checks + +Before and after the configuration for a `TestStep` is applied, Terraform's +testing framework provides developers an opportunity to make test assertions +against `terraform plan` results via the plan file. This is provided via [Plan +Checks](/terraform/plugin/testing/acceptance-tests/plan-checks), which provide +both built-in plan checks and an interface to implement custom plan checks. + +## State Checks + +After the configuration for a `TestStep` is applied, Terraform's testing +framework provides developers an opportunity to check the results by providing +one or more [state check +implementations](/terraform/plugin/testing/acceptance-tests/state-checks). +While possible to only supply a single state check, it is recommended you use +multiple state checks to validate specific information about the results of the +`terraform apply` ran in each `TestStep`. + +Refer to the [State Checks](/terraform/plugin/testing/acceptance-tests/state-checks) +section for more information about the built-in state checks for resources, +data sources, output values, and how to write custom state checks. + +### Legacy Check function + + + +Use the new `ConfigStateChecks` attribute and [State Check implementations](/terraform/plugin/testing/acceptance-tests/state-checks) +instead of the `Check` function. + + + +The `Check` function is used to check results of a Terraform operation. The `Check` +attribute of `TestStep` is singular, so in order to include multiple checks +developers should use either `ComposeTestCheckFunc` or +`ComposeAggregateTestCheckFunc` (defined below) to group multiple check +functions, defined below: + +#### ComposeTestCheckFunc + +ComposeTestCheckFunc lets you compose multiple TestCheckFunc functions into a +single check. As a user testing their provider, this lets you decompose your +checks into smaller pieces more easily, with individual methods for checking +specific attributes. Each check is ran in the order provided, and on failure the +entire `TestCase` is stopped, and Terraform attempts to destroy any resources +created. + +Example: + +```go +Steps: []resource.TestStep{ + { + Config: testAccExampleResource(rName), + Check: resource.ComposeTestCheckFunc( + // if testAccCheckExampleResourceExists fails to find the resource, + // the parent TestStep and TestCase fail + testAccCheckExampleResourceExists("example_widget.foo", &widgetBefore), + resource.TestCheckResourceAttr("example_widget.foo", "size", "expected size"), + ), + }, +}, +``` + +#### ComposeAggregateTestCheckFunc + +ComposeAggregateTestCheckFunc lets you compose multiple TestCheckFunc functions +into a single check. It's purpose and usage is identical to +ComposeTestCheckFunc, however each check is ran in order even if a previous +check failed, collecting the errors returned from any checks and returning a +single aggregate error. The entire `TestCase` is still stopped, and Terraform +attempts to destroy any resources created. + +Example: + +```go +Steps: []resource.TestStep{ + { + Config: testAccExampleResource(rName), + Check: resource.ComposeAggregateTestCheckFunc( + // if testAccCheckExampleResourceExists fails to find the resource, + // the following TestCheckResourceAttr is still run, with any errors aggregated + testAccCheckExampleResourceExists("example_widget.foo", &widgetBefore), + resource.TestCheckResourceAttr("example_widget.foo", "active", "true"), + ), + }, +}, +``` + +#### Built-in check functions + +Terraform has several TestCheckFunc functions built in for developers to use for +common checks, such as verifying the status and value of a specific attribute in +the resulting state. Developers are encouraged to use as many as reasonable to +verify the behavior of the plugin/resource, and should combine them with the +above mentioned `ComposeTestCheckFunc` or `ComposeAggregateTestCheckFunc` +functions. + +Most builtin functions accept `name`, `key`, and/or `value` fields, derived from +the typical Terraform configuration stanzas: + +```hcl +resource "example_widget" "foo" { + active = true +} +``` + +Here the `name` represents the resource name in state (`example_widget.foo`), +the `key` represents the attribute to check (`active`), and `value` represents +the desired value to check against (`true`). In this case, an equality check +would be: + +```go +resource.TestCheckResourceAttr("example_widget.foo", "active", "true"), +``` + +The full list of functions can be seen in the [`helper/resource` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource). Names for these begin with `TestCheck...` and `TestMatch...`. The most common checks for non-`TypeSet` attributes are below. + +| Function | Purpose | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | +| [`TestCheckResourceAttr(name string, key string, value string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckResourceAttr) | Value equality checks | +| [`TestMatchResourceAttr(name string, key string, regex *regexp.Regexp)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestMatchResourceAttr) | | +| Value regular expression checks | | +| [`TestCheckResourceAttrPair(nameFirst string, keyFirst string, nameSecond string, keySecond string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckResourceAttrPair) | Value equality across two attributes (usually in different resources) | +| [`TestCheckResourceAttrSet(name string, key string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckResourceAttrSet) | Passes if any value was set | +| [`TestCheckNoResourceAttr(name string, key string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckNoResourceAttr) | Passes if no value was set | + +For `TypeSet` attributes, there are some additional functions that accept a `*` placeholder in attribute keys for indexing into the set. + +| Function | Purpose | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| [`TestCheckTypeSetElemAttr(name string, key string, value string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckTypeSetElemAttr) | Value is contained in set | +| [`TestCheckTypeSetElemAttrPair(nameFirst string, keyFirst string, nameSecond string, keySecond string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckTypeSetElemAttrPair) | Value is contained in set from another attribute (usually in different resources) | +| [`TestCheckTypeSetElemNestedAttrs(name string, key string, values map[string]string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckTypeSetElemNestedAttrs) | Map of values is contained in set (usually checking multiple attributes of a block) | + +All of these functions also accept the below syntax in attribute keys to enable additional behaviors. + +| Syntax | Purpose | Example | +| ----------- | --------------------------------- | ------------------------------------------------------------------------------- | +| `.{NUMBER}` | List index | `TestCheckResourceAttr("example_widget.foo", "some_block.0", "first value")` | +| `.{KEY}` | Map key | `TestCheckResourceAttr("example_widget.foo", "some_map.some_key", "map value")` | +| `.#` | Number of elements in list or set | `TestCheckResourceAttr("example_widget.foo", "some_list.#", "2")` | +| `.%` | Number of keys in map | `TestCheckResourceAttr("example_widget.foo", "some_map.%", "2")` | + +### Custom check functions + +The `Check` field of `TestStep` accepts any function of type +[TestCheckFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCheckFunc). +Developers are free to write their own `check` functions to create customized +validation functions for their plugin. Any function that matches the +`TestCheckFunc` function signature of `func(*terraform.State) error` can be used +individually, or with other `TestCheckFunc` functions with one of the above +Aggregate functions. + +It's common to write custom `TestCheckFunc` functions to validate resources were +created correctly by using SDKs directly to verify identity and properties of +resources. These functions can retrieve information by SDKs and provide the +results to other `TestCheckFunc` methods. The below example uses +`ComposeTestCheckFunc` to group a set of `TestCheckFunc` functions together. The +first function `testAccCheckExampleWidgetExists` uses the `Example` service SDK +directly, and queries it for the ID of the widget we have in state. Once found, +the result is stored into the `widget` struct declared at the beginning of the +test function. The next check function `testAccCheckExampleWidgetAttributes` +receives the updated `widget` and checks its attributes. The final check +`TestCheckResourceAttr` verifies that the same value is stored in state. + +```go +func TestAccExampleWidget_basic(t *testing.T) { + var widget example.WidgetDescription + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleWidgetDestroy, + Steps: []resource.TestStep{ + { + Config: testAccExampleWidgetConfig, + Check: resource.ComposeTestCheckFunc( + testAccCheckExampleWidgetExists("example_widget.bar", &widget), + testAccCheckExampleWidgetAttributes(&widget), + resource.TestCheckResourceAttr("example_widget.bar", "active", "true"), + ), + }, + }, + }) +} + +// testAccCheckExampleWidgetAttributes verifies attributes are set correctly by +// Terraform +func testAccCheckExampleWidgetAttributes(widget *example.WidgetDescription) resource.TestCheckFunc { + return func(s *terraform.State) error { + if *widget.active != true { + return fmt.Errorf("widget is not active") + } + + return nil + } +} + +// testAccCheckExampleWidgetExists uses the Example SDK directly to retrieve +// the Widget description, and stores it in the provided +// *example.WidgetDescription +func testAccCheckExampleWidgetExists(resourceName string, widget *example.WidgetDescription) resource.TestCheckFunc { + return func(s *terraform.State) error { + // retrieve the resource by name from state + rs, ok := s.RootModule().Resources[resourceName] + if !ok { + return fmt.Errorf("Not found: %s", resourceName) + } + + if rs.Primary.ID == "" { + return fmt.Errorf("Widget ID is not set") + } + + // retrieve the client from the test provider + client := testAccProvider.Meta().(*ExampleClient) + + response, err := client.DescribeWidgets(&example.DescribeWidgetsInput{ + WidgetIDs: []string{rs.Primary.ID}, + }) + + if err != nil { + return err + } + + // we expect only a single widget by this ID. If we find zero, or many, + // then we consider this an error + if len(response.WidgetDescriptions) != 1 || + *response.WidgetDescriptions[0].WidgetID != rs.Primary.ID { + return fmt.Errorf("Widget not found") + } + + // store the resulting widget in the *example.WidgetDescription pointer + *widget = *response.WidgetDescriptions[0] + return nil + } +} +``` + +## Sweepers + +Acceptance Testing is an essential approach to validating the implementation of a Terraform Provider. Using actual APIs to provision resources for testing can leave behind real infrastructure that costs money between tests. The reasons for these leaks can vary, regardless Terraform provides a mechanism known as [Sweepers](/terraform/plugin/testing/acceptance-tests/sweepers) to help keep the testing account clean. diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfjson-paths.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfjson-paths.mdx new file mode 100644 index 0000000000..a40e90f52b --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfjson-paths.mdx @@ -0,0 +1,692 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Terraform JSON Paths' +description: >- + How to implement attribute paths in the testing module. + Attribute paths represent the location of an attribute within Terraform JSON data. +--- + +# Terraform JSON Paths + +An exact location within Terraform JSON data is referred to as a Terraform JSON or tfjson path. + +## Usage + +Example uses in the testing module include: + +- The `ExpectUnknownValue()` and `ExpectSensitiveValue()` [built-in plan checks](/terraform/plugin/testing/acceptance-tests/plan-checks#built-in-plan-checks) for specifying an attribute to make the check assertion against. + +## Concepts + +Terraform JSON Paths are designed around the underlying Go types corresponding to the Terraform JSON implementation of a schema and schema-based data. The [terraform-json](https://pkg.go.dev/github.com/hashicorp/terraform-json) library serves as the de-facto documentation for Terraform JSON data. Paths are always absolute and start from the root, or top level, of a JSON object. + +Given the tree structure of JSON objects, descriptions of paths and their steps borrow certain hierarchy terminology such as parent and child. A parent path describes a path without one or more of the final steps of a given path, or put differently, a partial path closer to the root of the object. A child path describes a path with one or more additional steps beyond a given path, or put differently, a path containing the given path but further from the root of the object. + +## Building Paths + +The `terraform-plugin-testing` module implementation for tfjson paths is in the [`tfjsonpath` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfjsonpath), with the [`tfjsonpath.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfjsonpath#Path) being the main provider developer interaction point. Call the [`tfjsonpath.New()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfjsonpath#New) with a property name at the root of the object to begin a path. + +Given the following JSON object + +```json +{ + "first_name": "John", + "last_name": "Doe", + "age": 18, + "street_address": "123 Terraform Dr.", + "phone_numbers": [ + { "mobile": "111-111-1111" }, + { "home": "222-222-2222" } + ] +} +``` + +The call to `tfjsonpath.New()` which matches the location of `first_name` string value is: + +```go +tfjsonpath.New("first_name") +``` + +Once a `tfjsonpath.Path` is started, it supports a builder pattern, which allows for chaining method calls to construct a full path. + +The path which matches the location of the string value `"222-222-222"` is: + +```go +tfjsonpath.New("phone_numbers").AtSliceIndex(1).AtMapKey("home") +``` + +The most common usage of `tfjsonpath.Path` is to specify an attribute within Terraform JSON data. When used in this way, the root of the JSON object is the same as the root of a schema. +The follow sections show how to build attribute paths for [primitive attributes](#building-attribute-paths), [aggregate attributes](#building-aggregate-type-attribute-paths), [nested attributes](#building-nested-attribute-paths), and [blocks](#building-block-paths). + +### Building Attribute Paths + +The following table shows the different [`tfjsonpath.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfjsonpath#Path) methods associated with building paths for attribute implementations. Attribute types that cannot be traversed further are shown with N/A (not applicable). + +| Framework Attribute Type | SDKv2 Attribute Type | Child Path Method | +|---------------------------|----------------------|-------------------| +| `schema.BoolAttribute` | `schema.TypeBool` | N/A | +| `schema.Float32Attribute` | `schema.TypeFloat` | N/A | +| `schema.Float64Attribute` | `schema.TypeFloat` | N/A | +| `schema.Int32Attribute` | `schema.TypeInt` | N/A | +| `schema.Int64Attribute` | `schema.TypeInt` | N/A | +| `schema.ListAttribute` | `schema.TypeList` | `AtSliceIndex()` | +| `schema.MapAttribute` | `schema.TypeMap` | `AtMapKey()` | +| `schema.NumberAttribute` | N/A | N/A | +| `schema.ObjectAttribute` | N/A | `AtMapKey()` | +| `schema.SetAttribute` | `schema.TypeSet` | `AtSliceIndex()` | +| `schema.StringAttribute` | `schema.TypeString` | N/A | + + +Given this example schema with a root attribute named `example_root_attribute`: + +```go +//Terraform Plugin Framework +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_root_attribute": schema.StringAttribute{ + Required: true, + }, + }, +} + +//Terraform Plugin SDKv2 +Schema: map[string]*schema.Schema{ + "example_root_attribute": { + Type: schema.TypeString, + Required: true, + }, +}, +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "example_root_attribute": "example-value" +} +``` + +The call to `tfjsonpath.New()` which matches the location of `example_root_attribute` string value is: + +```go +tfjsonpath.New("example_root_attribute") +``` + +For blocks, the beginning of a path is similarly defined. + +Given this example schema with a root block named `example_root_block`: + +```go +//Terraform Plugin Framework +schema.Schema{ + Blocks: map[string]schema.Block{ + "example_root_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{/* ... */}, + }, + }, +} + +//Terraform Plugin SDKv2 +Schema: map[string]*schema.Schema{ + "example_root_block": { + Type: schema.TypeList, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{/* ... */}, + }, + }, +}, +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "example_root_block": [ + {} + ] +} +``` + +The call to `tfjsonpath.New()` which matches the location of `example_root_block` slice value is: + +```go +tfjsonpath.New("example_root_block") +``` + +### Building Aggregate Type Attribute Paths + +Given following schema example: + +```go +//Terraform Plugin Framework +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_map_attribute": schema.MapAttribute{ + ElementType: types.StringType, + Required: true, + }, + "root_list_attribute": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + }, + "root_set_attribute": schema.SetAttribute{ + ElementType: types.StringType, + Required: true, + }, + }, +} + +//Terraform Plugin SDKv2 +Schema: map[string]*schema.Schema{ + "root_map_attribute": { + Type: schema.TypeMap, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + Required: true, + }, + "root_list_attribute": { + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + Required: true, + }, + "root_set_attribute": { + Type: schema.TypeSet, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + Required: true, + }, +}, +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_map_attribute": { + "example-key": "map-value" + }, + "root_list_attribute": [ + "list-value1", + "list-value2" + ], + "root_set_attribute": [ + "set-value1", + "set-value2" + ] +} +``` + +The path which matches the string value associated with the map key `example-key` of the `root_map_attribute` attribute is: + +```go +tfjsonpath.New("root_map_attribute").AtMapKey("example-key") +``` + +The path which matches the string value `list-value1` in the `root_list_attribute` attribute is: + +```go +tfjsonpath.New("root_list_attribute").AtSliceIndex(0) +``` + +The path which matches the string value `set-value2` in the `root_set_attribute` attribute is: + +```go +tfjsonpath.New("root_set_attribute").AtSliceIndex(1) +``` + +Note that because Sets are unordered in Terraform, the ordering of Set elements in the Terraform JSON data is not guaranteed to be the same as the ordering in the configuration. + +### Building Nested Attribute Paths + +The following table shows the different [`tfjsonpath.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfjsonpath#Path) methods associated with building paths for nested attributes. + +| Nested Attribute Type | Child Path Method(s) | +|--------------------------------|-----------------------------| +| `schema.ListNestedAttribute` | `AtSliceIndex().AtMapKey()` | +| `schema.MapNestedAttribute` | `AtMapKey().AtMapKey()` | +| `schema.SetNestedAttribute` | `AtSliceIndex().AtMapKey()` | +| `schema.SingleNestedAttribute` | `AtMapKey()` | + +Nested attributes eventually follow the same path rules as attributes at child paths, which follow the methods shown in the [Building Attribute Paths section](#building-attribute-paths). + +#### Building List Nested Attributes Paths + +An attribute that implements `schema.ListNestedAttribute` conceptually is a slice containing a map with attribute names as keys. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_list_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_list_attribute": [ + { + "nested_string_attribute": "value" + } + ] +} +``` + +The path which matches the slice associated with the `root_list_attribute` attribute is: + +```go +tfjsonpath.New("root_list_attribute") +``` + +The path which matches the first map in the slice associated with the `root_list_attribute` attribute is: + +```go +tfjsonpath.New("root_list_attribute").AtSliceIndex(0) +``` + +The path which matches the `nested_string_attribute` map key in the first map in the slice associated with `root_list_attribute` attribute is: + +```go +tfjsonpath.New("root_list_attribute").AtSliceIndex(0).AtMapKey("nested_string_attribute") +``` + +#### Building Map Nested Attributes Paths + +An attribute that implements `schema.MapNestedAttribute` conceptually is a map containing values of maps with attribute names as keys. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_map_attribute": schema.MapNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_map_attribute": { + "example-key" : { + "nested_string_attribute": "value" + } + } +} +``` + +The path which matches the map associated with the `root_map_attribute` attribute is: + +```go +tfjsonpath.New("root_map_attribute") +``` + +The path which matches the `"example-key"` object in the map associated with the `root_map_attribute` attribute is: + +```go +tfjsonpath.New("root_map_attribute").AtMapKey("example-key") +``` + +The path which matches the `nested_string_attribute` string value in a `"example-key"` object in the map associated with `root_map_attribute` attribute is: + +```go +tfjsonpath.New("root_map_attribute").AtMapKey("example-key").AtMapKey("nested_string_attribute") +``` + +#### Building Set Nested Attributes Paths + +An attribute that implements `schema.SetNestedAttribute` conceptually is a slice containing maps with attribute names as keys. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_set_attribute": schema.SetNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_set_attribute": [ + { + "nested_string_attribute": "value" + } + ] +} +``` + +The path which matches the set associated with the `root_set_attribute` attribute is: + +```go +tfjsonpath.New("root_set_attribute") +``` + +The path which matches the first map in the slice associated with the `root_set_attribute` attribute is: + +```go +tfjsonpath.New("root_set_attribute").AtSliceIndex(0) +``` + +Note that because Sets are unordered in Terraform, the ordering of Set elements in the Terraform JSON data is not guaranteed to be the same as the ordering in the configuration. + +The path which matches the `nested_string_attribute` map key in the first map in the slice associated with `root_set_attribute` attribute is: + +```go +tfjsonpath.New("root_set_attribute").AtSliceIndex(0).AtMapKey("nested_string_attribute") +``` + +#### Building Single Nested Attributes Paths + +An attribute that implements `schema.SingleNestedAttribute` conceptually is a map with attribute names as keys. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_grouped_attributes": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + Required: true, + }, + }, +} +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_grouped_attributes": { + "nested_string_attribute": "value" + } +} +``` + +The path which matches the map associated with the `root_grouped_attributes` attribute is: + +```go +tfjsonpath.New("root_grouped_attributes") +``` + +The path which matches the `nested_string_attribute` string value in the map associated with the `root_grouped_attributes` attribute is: + +```go +tfjsonpath.New("root_grouped_attributes").AtMapKey("nested_string_attribute") +``` + +### Building Block Paths + +The following table shows the different [`tfjsonpath.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfjsonpath#Path) methods associated with building paths for blocks. + +| Block Type | Child Path Method(s) | +|---------------------|-----------------------------| +| `ListNestedBlock` | `AtSliceIndex().AtMapKey()` | +| `SetNestedBlock` | `AtSliceIndex().AtMapKey()` | +| `SingleNestedBlock` | `AtMapKey()` | + +Blocks can implement nested blocks. Paths can continue to be built using the associated method with each level of the block type. + +Blocks eventually follow the same path rules as attributes at child paths, which follow the methods shown in the [Building Attribute Paths section](#building-attribute-paths). Blocks cannot contain nested attributes. + +#### Building List Block Paths + +A `ListNestedBlock` conceptually is a slice containing maps with attribute or block names as keys. + +Given following schema example: + +```go +//Terraform Plugin Framework +schema.Schema{ + Blocks: map[string]schema.Block{ + "root_list_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + Blocks: map[string]schema.Block{ + "nested_list_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "nested_block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + }, + }, + }, + }, + }, +} + +//Terraform Plugin SDKv2 +Schema: map[string]*schema.Schema{ + "root_list_block": { + Type: schema.TypeList, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "block_string_attribute": { + Type: schema.TypeString, + Required: true, + }, + "nested_list_block": { + Type: schema.TypeList, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "nested_block_string_attribute": { + Type: schema.TypeString, + Required: true, + }, + }, + }, + }, + }, + }, + }, +}, +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_list_block": [ + { + "block_string_attribute": "value1", + "nested_list_block": [ + {"nested_block_string_attribute": "value2"} + ] + } + ] +} +``` + +The path which matches the slice associated with the `root_list_block` block is: + +```go +tfjsonpath.New("root_list_block") +``` + +The path which matches the first map in the slice associated with the `root_list_block` block is: + +```go +tfjsonpath.New("root_list_block").AtSliceIndex(0) +``` + +The path which matches the `block_string_attribute` string value in the first map in the slice associated with `root_list_block` block is: + +```go +tfjsonpath.New("root_list_block").AtSliceIndex(0).AtMapKey("block_string_attribute") +``` + +The path which matches the `nested_list_block` slice in the first object in the slice associated with `root_list_block` block is: + +```go +tfjsonpath.New("root_list_block").AtSliceIndex(0).AtMapKey("nested_list_block") +``` + +The path which matches the `nested_block_string_attribute` string value in the first map in the slice associated with the `nested_list_block` slice in the first map in the slice associated with `root_list_block` block is: + +```go +tfjsonpath.New("root_list_block").AtSliceIndex(0).AtMapKey("nested_list_block").AtSliceIndex(0).AtMapKey("nested_block_string_attribute") +``` + +#### Building Set Block Paths + +A `SetNestedBlock` conceptually is a slice containing maps with attribute or block names as keys. + +Given following schema example: + +```go +//Terraform Plugin Framework +schema.Schema{ + Blocks: map[string]schema.Block{ + "root_set_block": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "block_string_attribute": schema.StringAttribute{ + Optional: true, + }, + }, + }, + }, + }, +} + +//Terraform Plugin SDKv2 +Schema: map[string]*schema.Schema{ + "root_set_block": { + Type: schema.TypeSet, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "block_string_attribute": { + Type: schema.TypeString, + Optional: true, + }, + }, + }, + }, +}, +``` + +And the following Terraform JSON object representation of the state: +```json +{ + "root_set_block": [ + { + "block_string_attribute": "value1" + } + ] +} +``` + +The path which matches the slice associated with the `root_set_block` block is: + +```go +tfjsonpath.New("root_set_block") +``` + + +The path which matches the first map in the slice associated with the `root_set_block` block is: + +```go +tfjsonpath.New("root_set_block").AtSliceIndex(0) +``` + +Note that because sets are unordered in Terraform, the ordering of set elements in the Terraform JSON data is not guaranteed to be the same as the ordering in the configuration. + +The path which matches the `block_string_attribute` string value in the first map in the slice associated with `root_set_block` block is: + +```go +tfjsonpath.New("root_set_block").AtSliceIndex(0).AtMapKey("block_string_attribute") +```` + +#### Building Single Block Paths + +A `SingleNestedBlock` conceptually is a map with attribute or block names as keys. + +Given following schema example: + +```go +//Terraform Plugin Framework +schema.Schema{ + Blocks: map[string]schema.Block{ + "root_single_block": schema.SingleNestedBlock{ + Attributes: map[string]schema.Attribute{ + "block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + Blocks: map[string]schema.Block{ + "nested_single_block": schema.SingleNestedBlock{ + Attributes: map[string]schema.Attribute{ + "nested_block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + }, + }, + }, +} +``` + +The path which matches the map associated with the `root_single_block` block is: + +```go +tfjsonpath.New("root_single_block") +``` + +The path which matches the `block_string_attribute` string value in the map associated with `root_single_block` block is: + +```go +tfjsonpath.New("root_single_block").AtMapKey("block_string_attribute") +``` + +The path which matches the `nested_single_block` map in the map associated with `root_single_block` block is: + +```go +tfjsonpath.New("root_single_block").AtMapKey("nested_single_block") +``` + +The path which matches the `nested_block_string_attribute` string value in the map associated with the `nested_single_block` in the map associated with `root_single_block` block is: + +```go +tfjsonpath.New("root_single_block").AtMapKey("nested_single_block").AtMapKey("nested_block_string_attribute") +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfversion-checks.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfversion-checks.mdx new file mode 100644 index 0000000000..3c8efd4f03 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/tfversion-checks.mdx @@ -0,0 +1,267 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Terraform Version Checks' +description: >- + Terraform Version Checks are generic checks defined at the TestCase level that check logic against the Terraform CLI version. The testing module + provides built-in Version Checks for common use-cases, but custom Version Checks can also be implemented. +--- + +# Terraform Version Checks + +**Terraform Version Checks** are generic checks defined at the TestCase level that check logic against the Terraform CLI version. The checks are executed at the beginning of the TestCase before any TestStep is executed. + +The Terraform CLI version is determined by the binary selected by the [`TF_ACC_TERRAFORM_PATH`](/terraform/plugin/testing/acceptance-tests#environment-variables) environment variable value, installed by the [`TF_ACC_TERRAFORM_VERSION`](/terraform/plugin/testing/acceptance-tests#environment-variables) value, or already existing based on the `PATH` environment variable. + +A **version check** will either return an error and fail the associated test, return a skip message and pass the associated test immediately by skipping, or it will return nothing and allow the associated test to run. + +Terraform CLI prerelease versions include a `-alphaYYYYMMDD`, `-beta#`, or `rc#` (release candidate) suffix for a minor version with `0` patch version. For example, `1.8.0-rc1`. Prereleases of Terraform are considered semantically equivalent to the associated minor version since prereleases are when any new features are introduced. + +## Built-in Version Checks and Variables + +The `terraform-plugin-testing` module provides a package [`tfversion`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion) with built-in version checks for common use-cases. There are three types of version checks: Skip Checks, Require Checks, and Collection Checks. + + + +Built-in version checks handle prereleases of a minor version as semantically equivalent to given minor versions. For example, if the test includes `tfversion.SkipBelow(tfversion.Version1_8_0)` and the running Terraform CLI version is `1.8.0-rc1`, the test will run, not skip. This is intended to enable prerelease testing of new features. + + + +### Version Variables + +The built-in checks in the `tfversion` package typically require the use of the [`github.com/hashicorp/go-version`](https://pkg.go.dev/github.com/hashicorp/go-version) module [`version.Version`](https://pkg.go.dev/github.com/hashicorp/go-version#Version) type. To simplify provider testing implementations, the `tfversion` package provides [built-in variables](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#pkg-variables) for common use case versions, such as each released minor and major Terraform version. These follow the pattern of `Version{MAJOR}_{MINOR}_{PATCH}` with the major, minor, and patch version numbers, such as `Version1_2_0`. + +### Skip Version Checks + +Skip Version Checks will pass the associated test by skipping and provide a skip message if the detected Terraform CLI version satisfies the specified check criteria. + +| Check | Description | +|---------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------| +| [`tfversion.SkipAbove(maximumVersion)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#SkipAbove) | Skips the test if the Terraform CLI version is exclusively above the given maximum. | +| [`tfversion.SkipBelow(minimumVersion)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#SkipBelow) | Skips the test if the Terraform CLI version is exclusively below the given minimum. | +| [`tfversion.SkipBetween(minimumVersion, maximumVersion)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#SkipBetween) | Skips the test if the Terraform CLI version is between the given minimum (inclusive) and maximum (exclusive). | +| [`tfversion.SkipIf(version)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#SkipIf) | Skips the test if the Terraform CLI version matches the given version. | + +#### Example using `tfversion.SkipBetween` + +The built-in [`tfversion.SkipBetween`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#SkipBetween) version check is useful for skipping all patch versions associated with a minor version. + +In the following example, we have written a test that skips all Terraform CLI patch versions associated with 0.14.0: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_Skip_TF14(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){ + "test": func() (tfprotov6.ProviderServer, error) { + return nil, nil + }, + }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBetween(tfversion.Version0_14_0, tfversion.Version0_15_0), + }, + Steps: []resource.TestStep{ + { + Config: `//example test config`, + }, + }, + }) +} +``` + +### Require Version Checks + +Require Version Checks will raise an error and fail the associated test if the detected Terraform CLI version does not satisfy the specified check requirements. + +| Check | Description | +|---------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------| +| [`tfversion.RequireAbove(minimumVersion)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#RequireAbove) | Fails the test if the Terraform CLI version is exclusively below the given minimum. | +| [`tfversion.RequireBelow(maximumVersion)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#RequireBelow) | Fails the test if the Terraform CLI version is inclusively above the given maximum. | +| [`tfversion.RequireBetween(minimumVersion, maximumVersion)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#RequireBetween) | Fails the test if the Terraform CLI version is outside the given minimum (exclusive) and maximum (inclusive). | +| [`tfversion.RequireNot(version)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#RequireNot) | Fails the test if the Terraform CLI version matches the given version. | + + +#### Example using `tfversion.RequireAbove` + +The built-in [`tfversion.RequireAbove`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#RequireAbove) version check is useful for required tests that may use features only available in newer versions of the Terraform ClI. + +In the following example, the test Terraform configuration uses the `nullable` argument for an input variable, a feature that is only available in Terraform CLI versions `1.3.0` and above. The version check will fail the test with a specific error if the detected version is below `1.3.0`. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_Require_TF1_3(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){ + "test": func() (tfprotov6.ProviderServer, error) { + return nil, nil + }, + }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.RequireAbove(tfversion.Version1_3_0), + }, + Steps: []resource.TestStep{ + { + Config: `variable "a" { + nullable = true + default = "hello" + }`, + }, + }, + }) +} +``` + +### Collection Version Checks + +Collection Version Checks operate on multiple version checks and can be used to create more complex checks. + +[`tfversion.Any(TerraformVersionChecks...)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#Any) will run the associated test by returning a nil error and empty skip message +if any of the given version sub-checks return a nil error and empty skip message. If none of the sub-checks return a nil error and empty skip message, then the check will return all sub-check errors and fail the associated test. +Otherwise, if none of the sub-checks return a non-nil error, the check will pass the associated test by skipping and return all sub-check skip messages. + +[`tfversion.All(TerraformVersionChecks...)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#All) will either fail or skip the associated test if any of the given sub-checks return a non-nil error or non-empty skip message. The check will return the +first non-nil error or non-empty skip message from the given sub-checks in the order that they are given. Otherwise, if all sub-checks return a nil error and empty skip message, then the check will return a nil error and empty skip message and run the associated test. This check should only be +used in conjunction with `tfversion.Any()` as the behavior provided by this check is applied to the `TerraformVersionChecks` field by default. + +#### Example using `tfversion.Any` + +In the following example, the test will only run if either the Terraform CLI version is above `1.2.0` or if it's below `1.0.0` but not version `0.15.0`, otherwise an error will be returned. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_Any(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){ + "test": func() (tfprotov6.ProviderServer, error) { //nolint:unparam // required signature + return nil, nil + }, + }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.Any( + tfversion.All( + tfversion.RequireNot(tfversion.Version0_15_0), + tfversion.RequireBelow(tfversion.Version1_0_0), + ), + tfversion.RequireAbove(tfversion.Version1_2_0), + ), + }, + Steps: []resource.TestStep{ + { + Config: `//example test config`, + }, + }, + }) +} +``` + + +## Custom Version Checks + +The package [`tfversion`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion) also provides the [`TerraformVersionCheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#TerraformVersionCheck) interface, which can be implemented for a custom version check. + +The [`tfversion.CheckTerraformVersionRequest`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#CheckTerraformVersionRequest) has a `TerraformVersion` field of type [`*version.Version`](https://pkg.go.dev/github.com/hashicorp/go-version#Version) which contains the version of the Terraform CLI binary running the test. + +The [`tfversion.CheckTerraformVersionResponse`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/tfversion#CheckTerraformVersionResponse) has an `Error` field and a `Skip` field. The behavior of the version check depends on which field is populated. Populating the `Error` field will fail the associated test with the given error. +Populating the `Skip` field will pass the associated test by skipping the test with the given skip message. Only one of these fields should be populated. + +Here is an example implementation of a version check returns an error if the detected Terraform CLI version matches the given version: + +```go +package example_test + +import ( + "context" + "fmt" + + "github.com/hashicorp/go-version" +) + +// Ensure implementation satisfies the tfversion.TerraformVersionCheck interface. +var _ tfversion.TerraformVersionCheck = requireNotCheck{} + +// RequireNot will fail the test if the given version matches. +func RequireNot(v *version.Version) tfversion.TerraformVersionCheck { + return requireNotCheck{ + version: v, + } +} + +type requireNotCheck struct { + version *version.Version +} + +func (s requireNotCheck) CheckTerraformVersion(ctx context.Context, req tfversion.CheckTerraformVersionRequest, resp *tfversion.CheckTerraformVersionResponse) { + if req.TerraformVersion.Equal(s.version) { + resp.Error = fmt.Errorf("unexpected Terraform CLI version: %s", s.version) + } +} +``` + +And example usage: + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func Test_RequireNot(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){ + "test": func() (tfprotov6.ProviderServer, error) { + return nil, nil + }, + }, + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.RequireNot(tfversion.Version0_13_0), + }, + Steps: []resource.TestStep{ + { + Config: `//example test config`, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/value-comparers/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/value-comparers/index.mdx new file mode 100644 index 0000000000..3ef5e19d6a --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/value-comparers/index.mdx @@ -0,0 +1,183 @@ +--- +page_title: 'Plugin Development - Acceptance Testing: Value Comparers' +description: >- + How to use value comparers in the testing module. + Value comparers define a comparison for a resource attribute, or output value for use in State Checks. +--- + +# Value Comparers + + + +Value Comparers are for use in conjunction with [State Checks](/terraform/plugin/testing/acceptance-tests/state-checks), which leverage the [terraform-json](https://pkg.go.dev/github.com/hashicorp/terraform-json) representation of Terraform state. + + + +Value comparers can be used to assert a resource or data source attribute value across multiple [Test Steps](/terraform/plugin/testing/acceptance-tests/teststep), like asserting that a randomly generated resource attribute doesn't change after multiple apply steps. This is done by creating the value comparer, typically before the test case is defined, using the relevant constructor function: +```go +func TestExample(t *testing.T) { + // Create the value comparer so we can add state values to it during the test steps + compareValuesDiffer := statecheck.CompareValue(compare.ValuesDiffer()) + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + // .. test steps omitted + }, + }) +} +``` + +Once the value comparer is created, state values can be added in `TestStep.ConfigStateChecks`: +```go +func TestExample(t *testing.T) { + // Create the value comparer so we can add state values to it during the test steps + compareValuesDiffer := statecheck.CompareValue(compare.ValuesDiffer()) + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + // Add the current state value of "computed_attribute" to the value comparer. + // Since there are no other state values at this point, no assertion is made. + compareValuesDiffer.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + { + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + // Add the current state value of "computed_attribute" to the value comparer. + // Since there is an existing state value in the value comparer at this point, + // if the two values are equal, the test will produce an error. + compareValuesDiffer.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + }, + }) +} +``` + +The value comparer implementation (defined by the [`ValueComparer` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValueComparer)) determines what assertion occurs when a state value is added. The built-in value comparers are: +- [`CompareValue()`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevalue-state-check) +- [`CompareValueCollection()`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevaluecollection-state-check) +- [`CompareValuePairs()`](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevaluepairs-state-check) + +## Values Differ + +The [ValuesDiffer](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValuesDiffer) value comparer verifies that each value in the sequence of values supplied to the `CompareValues()` method differs from the preceding value. + +Example usage of [ValuesDiffer](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValuesDiffer) in a [CompareValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevalue-state-check) state check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/hashicorp/terraform-plugin-testing/compare" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestCompareValue_CheckState_ValuesDiffer(t *testing.T) { + t.Parallel() + + compareValuesDiffer := statecheck.CompareValue(compare.ValuesDiffer()) + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + // Add the current state value of "computed_attribute" to the value comparer. + // Since there are no other state values at this point, no assertion is made. + compareValuesDiffer.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + { + // Add the current state value of "computed_attribute" to the value comparer. + // Since there is an existing state value in the value comparer at this point, + // if the two values are equal, the test will produce an error. + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + compareValuesDiffer.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + }, + }) +} +``` + +## Values Same + +The [ValuesSame](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValuesSame) value comparer verifies that each value in the sequence of values supplied to the `CompareValues()` method is the same as the preceding value. + +Example usage of [ValuesSame](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/compare#ValuesSame) in a [CompareValue](/terraform/plugin/testing/acceptance-tests/state-checks/resource#comparevalue-state-check) state check. + +```go +package example_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + "github.com/hashicorp/terraform-plugin-testing/compare" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfjsonpath" +) + +func TestCompareValue_CheckState_ValuesSame(t *testing.T) { + t.Parallel() + + compareValuesSame := statecheck.CompareValue(compare.ValuesSame()) + + resource.Test(t, resource.TestCase{ + // Provider definition omitted. + Steps: []resource.TestStep{ + { + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + // Add the current state value of "computed_attribute" to the value comparer. + // Since there are no other state values at this point, no assertion is made. + compareValuesSame.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + { + Config: `resource "test_resource" "one" {}`, + ConfigStateChecks: []statecheck.StateCheck{ + // Add the current state value of "computed_attribute" to the value comparer. + // Since there is an existing state value in the value comparer at this point, + // if the two values are not equal, the test will produce an error. + compareValuesSame.AddStateValue( + "test_resource.one", + tfjsonpath.New("computed_attribute"), + ), + }, + }, + }, + }) +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/index.mdx new file mode 100644 index 0000000000..2ff339fb32 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/index.mdx @@ -0,0 +1,55 @@ +--- +page_title: Plugin Development - Testing +description: |- + Write acceptance tests and unit tests with the terraform-plugin-testing Go + module. +--- + +# Plugin Testing + +The testing framework for Terraform providers,`terraform-plugin-testing`, +uses standard Go features such as the `go test` command and the standard +library `testing` package. In addition to this documentation, refer to the +[generated Go +documentation](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing). + +This section introduces strategies for testing provider functionality with +acceptance tests and unit tests. + +## Acceptance Tests + +Acceptance tests for Terraform providers are a feature of the +[`terraform-plugin-testing`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing) +framework. The testing framework uses standard Go features such as the `go +test` command. It runs a local Terraform binary to perform real plan, apply, +refresh, and destroy operations, and enables developers to make assertions +about what happens during those actions. + +Refer to [Acceptance Testing](/terraform/plugin/testing/acceptance-tests) to learn more. + +## Unit Tests + +Testing plugin code in small, isolated units is distinct from Acceptance Tests, +and does not require network connections. Unit tests are commonly used for +testing helper methods that expand or flatten API response data into data +structures for storage into state by Terraform. This section covers the +specifics of writing Unit Tests for Terraform Plugin code. + +For a given plugin, Unit Tests can be run from the root of the project by using +a common make task: + +```shell +$ make test +``` + +Refer to [Unit Testing](/terraform/plugin/testing/unit-testing) to learn more. + +## Testing Patterns + +Terraform developers are encouraged to write acceptance tests that create real +resource to verify the behavior of plugins, ensuring a reliable and safe way to +manage infrastructure. In [Testing +Patterns](/terraform/plugin/testing/testing-patterns) we cover some basic +acceptance tests that almost all resources should have to validate not only the +functionality of the resource, but that the resource behaves as Terraform would +expect. diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/migrating.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/migrating.mdx new file mode 100644 index 0000000000..51de606104 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/migrating.mdx @@ -0,0 +1,133 @@ +--- +page_title: 'Plugin Development: Migrating testing from SDKv2 to the testing module' +description: >- + Migrate your provider's acceptance testing dependencies from SDKv2 to the testing module. +--- + +# Overview + +This guide helps you migrate a Terraform provider's acceptance testing dependencies from SDKv2 to the plugin testing module. We recommend migrating to terraform-plugin-testing to take advantage of new features of the testing module and to avoid importing the SDKv2 for providers that are built on the plugin Framework. + +This guide provides information and examples for most common use cases, but it does not discuss every nuance of migration. You can ask additional migration questions in the [HashiCorp Discuss forum](https://discuss.hashicorp.com/c/terraform-providers/tf-plugin-sdk/43). To request additions or updates to this guide, submit issues or pull requests to the [`terraform-plugin-testing` repository](https://github.com/hashicorp/terraform-plugin-testing). + +## Migration steps + +Take the following steps when you migrate a provider's acceptance tests from SDKv2 to the testing module. + +Change all instances of the following Go import statements in `*_test.go` files: + +| Original Import | Migrated Import | +|---|---| +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest` | `github.com/hashicorp/terraform-plugin-testing/helper/acctest` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource` | `github.com/hashicorp/terraform-plugin-testing/helper/resource` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/terraform` | `github.com/hashicorp/terraform-plugin-testing/terraform` | + +If the provider implements terraform-plugin-sdk based state migration unit testing with `github.com/hashicorp/terraform-plugin-sdk/v2/terraform.InstanceState`, this must remain with the original import since it is testing terraform-plugin-sdk functionality. + +Verify if the `TestStep` type `PlanOnly` field is enabled in any tests where the final `TestStep` is intentionally changing the provider setup to ensure schema changes (e.g. state upgrades or SDK to framework migrations) cause no plan differences. In those tests, replace `PlanOnly` with `ConfigPlanChecks` containing a `PreApply` check of `plancheck.ExpectEmptyPlan()` instead: + +```go +resource.Test(t, resource.TestCase{ + // ... + Steps: []resource.TestStep{ + { /* ... */ }, + { + // ... + // The below replacing PlanOnly: true + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, +}) +``` + +Change all instances of the following in **non-test** `*.go` files: + +| Original Reference | Migrated Reference | +|---|---| +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.NonRetryableError` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.NonRetryableError` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.NotFoundError` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.NotFoundError` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.PrefixedUniqueId` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/id.PrefixedUniqueId` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.Retry` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.Retry` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.RetryableError` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.RetryableError` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.RetryContext` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.RetryContext` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.RetryError` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.RetryError` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.RetryFunc` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.RetryFunc` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.StateChangeConf` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.StateChangeConf` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.StateRefreshFunc` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.StateRefreshFunc` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.TimeoutError` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.TimeoutError` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.UnexpectedStateError` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.UnexpectedStateError` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.UniqueId` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/id.UniqueId` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.UniqueIdPrefix` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/id.UniqueIdPrefix` | +| `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource.UniqueIDSuffixLength` | `github.com/hashicorp/terraform-plugin-sdk/v2/helper/id.UniqueIDSuffixLength` | + +Get and download the latest version of terraform-plugin-testing: + +```shell +$ go get github.com/hashicorp/terraform-plugin-testing@latest +``` + +Clean up `go.mod`: + +```shell +$ go mod tidy +``` + +Verify that the tests are working as expected. + +## Troubleshooting + +### flag redefined Panic + +This panic occurs when your provider code imports both the `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource` and `github.com/hashicorp/terraform-plugin-testing/helper/resource` packages because they contain a duplicate `TestMain` function: + +```text +panic: XXX flag redefined: sweep + +goroutine 1 [running]: +flag.(*FlagSet).Var(0x14000030240, {0x10132b6d8, 0x140002219c0}, {0x10103ad88, 0x5}, {0x10105d47b, 0x29}) + /usr/local/go/src/flag/flag.go:982 +0x2a4 +flag.(*FlagSet).StringVar(...) + /usr/local/go/src/flag/flag.go:847 +flag.(*FlagSet).String(0x1400031fb98?, {0x10103ad88, 0x5}, {0x0, 0x0}, {0x10105d47b, 0x29}) + /usr/local/go/src/flag/flag.go:860 +0x98 +flag.String(...) + /usr/local/go/src/flag/flag.go:867 +github.com/hashicorp/terraform-plugin-testing/helper/resource.init() + /XXX/go/pkg/mod/github.com/hashicorp/terraform-plugin-testing@v1.1.0/helper/resource/testing.go:53 +0x44 +``` + +Remove imports of `github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource` to resolve the issue. terraform-plugin-sdk version 2.26.0 introduced separate packages, [`github.com/hashicorp/terraform-plugin-sdk/v2/helper/id`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2/helper/id) and [`github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry), which contain all non-testing functionality. + +### Failed to marshal state to json + +This error can occur when your testing includes `PlanOnly: true` in final `TestStep` that is intentionally changing the provider setup to ensure schema changes (e.g. state upgrades or SDK to framework migrations) cause no plan differences: + +```text +Failed to marshal state to json: schema version 0 for examplecloud_thing.test in state does not match version 1 from the provider +# or in the case of removed attributes between provider versions: +Failed to marshal state to json: unsupported attribute +``` + +In those tests, replace `PlanOnly` with `ConfigPlanChecks` containing a `PreApply` check of `plancheck.ExpectEmptyPlan()` instead: + +```go +resource.Test(t, resource.TestCase{ + // ... + Steps: []resource.TestStep{ + { /* ... at least one prior step ... */ }, + { + // ... + // Replacing PlanOnly: true + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, +}) +``` diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/testing-patterns.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/testing-patterns.mdx new file mode 100644 index 0000000000..ab2bb4c781 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/testing-patterns.mdx @@ -0,0 +1,392 @@ +--- +page_title: Plugin Development - Testing Patterns +description: |- + Testing Patterns covers essential acceptance test patterns to implement for + Terraform resources. +--- + +# Testing Patterns + +In [Testing Terraform Plugins][1] we introduce Terraform's Testing Framework, +providing reference for its functionality and introducing the basic parts of +writing acceptance tests. In this section we'll cover some test patterns that +are common and considered a best practice to have when developing and verifying +your Terraform plugins. At time of writing these guides are particular to +Terraform Resources, but other testing best practices may be added later. + +## Table of Contents + +- [Built-in Patterns](#built-in-patterns) +- [Basic test to verify attributes](#basic-test-to-verify-attributes) +- [Update test verify configuration changes](#update-test-verify-configuration-changes) +- [Import mode: verify that import and create produce the same state](#import-mode-verify-that-import-and-create-produce-the-same-state) +- [Expecting errors or non-empty plans](#expecting-errors-or-non-empty-plans) +- [Regression tests](#regression-tests) + +## Built-in Patterns + +Acceptance tests use [TestCases][2] to construct scenarios that can be evaluated +with Terraform's lifecycle of plan, apply, refresh, and destroy. The test +framework has some behaviors built in that provide very basic workflow assurance +tests, such as verifying configurations apply with no diff generated by the next +plan. + +Each TestCase will run any [PreCheck][3] function provided before running the +test, and then any [CheckDestroy][4] functions after the test concludes. These +functions allow developers to verify the state of the resource and test before +and after it runs. + +When a test is ran, Terraform runs plan, apply, refresh, and then final plan for +each [TestStep][5] in the TestCase. If the last plan results in a non-empty +plan, Terraform will exit with an error. This enables developers to ensure that +configurations apply cleanly. In the case of introducing regression tests or +otherwise testing specific error behavior, TestStep offers a boolean field +[ExpectNonEmptyPlan][6] as well [ExpectError][7] regex field to specify ways the +test framework can handle expected failures. If these properties are omitted and +either a non-empty plan occurs or an error encountered, Terraform will fail the +test. + +After all TestSteps have been ran, Terraform then runs destroy, and ends by +running any CheckDestroy function provided. + +[Back to top](#table-of-contents) + +## Basic test to verify attributes + +The most basic resource acceptance test should use what is likely to be a common +configuration for the resource under test, and verify that Terraform can +correctly create the resource, and that resources attributes are what Terraform +expects them to be. At a high level, the first basic test for a resource should +establish the following: + +- Terraform can plan and apply a common resource configuration without error. +- Verify the expected attributes are saved to state, and contain the values + expected. +- Verify the values in the remote API/Service for the resource match + what is stored in state. +- Verify that a subsequent terraform plan does not produce + a diff/change. + +The first and last item are provided by the test framework as described above in +**Built-in Patterns**. The middle items are implemented by composing a series of +State Check implementations as described in [Acceptance Tests: State Checks][8]. + +To verify attributes are saved to the state file correctly, use a combination of +the built-in [`statecheck`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/statecheck) +implementations provided by the testing framework. See [Resource State Checks][9] to see available +state checks for managed resource and data source attributes. + +Checking the values in a remote API generally consists of two parts: a function +to verify the corresponding object exists remotely, and a state check implementation to +verify the values of the object. By separating the check used to verify the +object exists into its own function, developers are free to re-use it for all +TestSteps as a means of retrieving it's values, and can provide [custom state checks][10] +functions per TestStep to verify remote values or scenarios specific to that TestStep. + +Here's an example test, with in-line comments to demonstrate the key parts of a +basic test. + +```go +package example + +// example.Widget represents a concrete Go type that represents an API resource +func TestAccExampleWidget_basic(t *testing.T) { + var widget example.Widget + + // generate a random name for each widget test run, to avoid + // collisions from multiple concurrent tests. + // the acctest package includes many helpers such as RandStringFromCharSet + // See https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/helper/acctest + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + // use a dynamic configuration with the random name from above + Config: testAccExampleResource(rName), + // compose a basic test, checking both remote and local values + ConfigStateChecks: []statecheck.StateCheck{ + // custom state check - query the API to retrieve the widget object + stateCheckExampleResourceExists("example_widget.foo", &widget), + // custom state check - verify remote values + stateCheckExampleWidgetValues(widget, rName), + // built-in state checks - verify local (state) values + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("active"), knownvalue.Bool(true)), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + }, + }, + }) +} + +// testAccExampleResource returns an configuration for an Example Widget with the provided name +func testAccExampleResource(name string) string { + return fmt.Sprintf(` +resource "example_widget" "foo" { + active = true + name = "%s" +}`, name) +} +``` + +This example covers all the items needed for a basic test, and will be +referenced or added to in the other test cases to come. + +[Back to top](#table-of-contents) + +## Update test verify configuration changes + +A basic test covers a simple configuration that should apply successfully and +with no follow up differences in state. To verify a resource correctly applies +updates, the second most common test found is an extension of the basic test, +that simply applies another `TestStep` with a modified version of the original +configuration. + +Below is an example test, copied and modified from the basic test. Here we +preserve the `TestStep` from the basic test, but we add an additional +`TestStep`, changing the configuration and rechecking the values, with a +different configuration function `testAccExampleResourceUpdated` and state check +implementation `stateCheckExampleWidgetValuesUpdated` for verifying the values. + +```go +func TestAccExampleWidget_update(t *testing.T) { + var widget example.Widget + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + // use a dynamic configuration with the random name from above + Config: testAccExampleResource(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widget), + stateCheckExampleWidgetValues(widget, rName), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("active"), knownvalue.Bool(true)), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + }, + { + // use a dynamic configuration with the random name from above + Config: testAccExampleResourceUpdated(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widget), + stateCheckExampleWidgetValuesUpdated(widget, rName), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("active"), knownvalue.Bool(false)), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + }, + }, + }) +} + +// testAccExampleResource returns an configuration for an Example Widget with the provided name +func testAccExampleResourceUpdated(name string) string { + return fmt.Sprintf(` +resource "example_widget" "foo" { + active = false + name = "%s" +}`, name) +} +``` + +It's common for resources to just have the above update test, as it is a +superset of the basic test. So long as the basics are covered, combining the two +tests is sufficient as opposed to having two separate tests. + +[Back to top](#table-of-contents) + +## Import mode: verify that import and create produce the same state + +To exercise a provider's import behaviors, the test author adds a test step in import mode. +In this example, `ImportState: true` indicates an import mode test step. + +```go +func TestAccExampleWidget_update(t *testing.T) { + var widget example.Widget + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + // Test Step 1: config mode + Config: testAccExampleResource(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widget), + stateCheckExampleWidgetValues(widget, rName), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("active"), knownvalue.Bool(true)), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + }, + { + // Test Step 2: config mode + Config: testAccExampleResourceUpdated(rName), + ConfigStateChecks: []statecheck.StateCheck{ + stateCheckExampleResourceExists("example_widget.foo", &widget), + stateCheckExampleWidgetValuesUpdated(widget, rName), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("active"), knownvalue.Bool(false)), + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + }, + { + // Test Step 3: import mode + ImportState: true, + ImportStateKind: resource.ImportBlockWithID, + ResourceName: "example_widget.foo", + }, + }, + }) +} +``` +In this example, "Test Step 3" is a very concise import mode test step because it does not need a completely different Terraform configration. It simply reuses artifacts from its surrounding `TestCase`, in a "convention over configuration" style. As a detailed example: + +* After "Test Step 2" has run, the test case has two useful artifacts: (1) a Terraform configuration and (2) a statefile. These two artifacts act as inputs to "Test Step 3." +* "Test Step 3" uses the Terraform configuration input as a base configuration for verifying import behavior. The test step generates a new Terraform configuration: the base configuration plus a generated `import` block. + * This is a testing convenience; the test author can override this via their choice of `step.Config`, `step.ConfigFile`, or `step.ConfigDirectory` +* "Test Step 3" generates a plan from this Terraform configuration. It uses the statefile input as a "known good" reference for the generated plan. + * In other words, The statefile acts as a "golden file" reference. In import mode, the planned values are expected to match the state values in the "golden file" and the test will report an error if the values do not match. + +[Back to top](#table-of-contents) + +## Expecting errors or non-empty plans + +The number of acceptance tests for a given resource typically start small with +the basic and update scenarios covered. Other tests should be added to +demonstrate common expected configurations or behavior scenarios for a given +resource, such as typical updates or changes to configuration, or exercising +logic that uses polling for updates such as an autoscaling group adding or +draining instances. + +It is possible for scenarios to exist where a valid configuration (no errors +during `plan`) would result in a non-empty `plan` after successfully running +`terraform apply`. This is typically due to a valid but otherwise +misconfiguration of the resource, and is generally undesirable. Occasionally it +is useful to intentionally create this scenario in an early `TestStep` in order +to demonstrate correcting the state with proper configuration in a follow-up +`TestStep`. Normally a `TestStep` that results in a non-empty plan would fail +the test after apply, however developers can use the `ExpectNonEmptyPlan` +attribute to prevent failure and allow the `TestCase` to continue: + +```go +func TestAccExampleWidget_expectPlan(t *testing.T) { + var widget example.Widget + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + // use an incomplete configuration that we expect + // to result in a non-empty plan after apply + Config: testAccExampleResourceIncomplete(rName), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + ExpectNonEmptyPlan: true, + }, + { + // apply the complete configuration + Config: testAccExampleResourceComplete(rName), + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownValue("example_widget.foo", tfjsonpath.New("name"), knownvalue.StringExact(rName)), + }, + }, + }, + }) +} +``` + +In addition to `ExpectNonEmptyPlan`, `TestStep` also exposes an `ExpectError` +hook, allowing developers to test configuration that they expect to produce an +error, such as configuration that fails schema validators: + +```go +func TestAccExampleWidget_expectError(t *testing.T) { + var widget example.Widget + rName := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckExampleResourceDestroy, + Steps: []resource.TestStep{ + { + // use a configuration that we expect to fail a validator + // on the resource Name attribute, which only allows alphanumeric + // characters + Config: testAccExampleResourceError(rName + "*$%%^"), + // No check function is given because we expect this configuration + // to fail before any infrastructure is created + ExpectError: regexp.MustCompile("Widget names may only contain alphanumeric characters"), + }, + }, + }) +} +``` + +`ExpectError` expects a valid regular expression, and the error message must +match in order to consider the error as expected and allow the test to pass. If +the regular expression does not match, the `TestStep` fails explaining that the +configuration did not produce the error expected. + +[Back to top](#table-of-contents) + +## Regression tests + +As resources are put into use, issues can arise as bugs that need to be fixed +and released in a new version. Developers are encouraged to introduce regression +tests that demonstrate not only any bugs reported, but that code modified to +address any bug is verified as fixing the issues. These regression tests should +be named and documented appropriately to identify the issue(s) they demonstrate +fixes for. When possible the documentation for a regression test should include +a link to the original bug report. + +An ideal bug fix would include at least 2 commits to source control: + +A single commit introducing the regression test, verifying the issue(s) 1 or +more commits that modify code to fix the issue(s) + +This allows other developers to independently verify that a regression test +indeed reproduces the issue by checking out the source at that commit first, and +then advancing the revisions to evaluate the fix. + +[Back to top](#table-of-contents) + +# Conclusion + +Terraform's [Testing Framework][1] allows for powerful, iterative acceptance +tests that enable developers to fully test the behavior of Terraform plugins. By +following the above best practices, developers can ensure their plugin behaves +correctly across the most common use cases and everyday operations users will +have using their plugins, and ensure that Terraform remains a world-class tool +for safely managing infrastructure. + +[1]: /terraform/plugin/testing + +[2]: /terraform/plugin/testing/acceptance-tests/testcase + +[3]: /terraform/plugin/testing/acceptance-tests/testcase#precheck + +[4]: /terraform/plugin/testing/acceptance-tests/testcase#checkdestroy + +[5]: /terraform/plugin/testing/acceptance-tests/teststep + +[6]: https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep.ExpectNonEmptyPlan + +[7]: https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestStep.ExpectError + +[8]: /terraform/plugin/testing/acceptance-tests/state-checks + +[9]: /terraform/plugin/testing/acceptance-tests/state-checks/resource + +[10]: /terraform/plugin/testing/acceptance-tests/state-checks/custom \ No newline at end of file diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/unit-testing.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/unit-testing.mdx new file mode 100644 index 0000000000..c8b8690c11 --- /dev/null +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/unit-testing.mdx @@ -0,0 +1,93 @@ +--- +page_title: Plugin Development - Unit Testing +description: |- + Unit tests are commonly used for testing helper methods that expand or + flatten API responses into data structures that Terraform stores as state. +--- + +# Unit Testing + +Testing plugin code in small, isolated units is distinct from Acceptance Tests, +and does not require network connections. Unit tests are commonly used for +testing helper methods that expand or flatten API responses into data structures +for storage into state by Terraform. This section covers the specifics of +writing Unit Tests for Terraform Plugin code. + +The procedure for writing unit tests for Terraform follows the same setup and +conventions of writing any Go unit tests. We recommend naming tests to follow +the same convention as our acceptance tests, `Test_`. For more +information on Go tests, see the [official Golang docs on testing](https://pkg.go.dev/testing). + +Below is an example unit test used in flattening AWS security group rules, +demonstrating a typical `flattener` type method that's commonly used to convert +structures returned from APIs into data structures used by Terraform in saving +to state. This example is truncated for brevity, but you can see the full test in the +[aws/structure_test.go in the Terraform AWS Provider +repository on GitHub](https://github.com/hashicorp/terraform-provider-aws/blob/f22ae122d8407672bd38951f80a2813b8b9af683/aws/structure_test.go#L930-L1027) + +```go +func TestFlattenSecurityGroups(t *testing.T) { + cases := []struct { + ownerId *string + pairs []*ec2.UserIdGroupPair + expected []*GroupIdentifier + }{ + // simple, no user id included + { + ownerId: aws.String("user1234"), + pairs: []*ec2.UserIdGroupPair{ + &ec2.UserIdGroupPair{ + GroupId: aws.String("sg-12345"), + }, + }, + expected: []*GroupIdentifier{ + &GroupIdentifier{ + GroupId: aws.String("sg-12345"), + }, + }, + }, + // include the owner id, but keep it consitent with the same account. Tests + // EC2 classic situation + { + ownerId: aws.String("user1234"), + pairs: []*ec2.UserIdGroupPair{ + &ec2.UserIdGroupPair{ + GroupId: aws.String("sg-12345"), + UserId: aws.String("user1234"), + }, + }, + expected: []*GroupIdentifier{ + &GroupIdentifier{ + GroupId: aws.String("sg-12345"), + }, + }, + }, + + // include the owner id, but from a different account. This is reflects + // EC2 Classic when referring to groups by name + { + ownerId: aws.String("user1234"), + pairs: []*ec2.UserIdGroupPair{ + &ec2.UserIdGroupPair{ + GroupId: aws.String("sg-12345"), + GroupName: aws.String("somegroup"), // GroupName is only included in Classic + UserId: aws.String("user4321"), + }, + }, + expected: []*GroupIdentifier{ + &GroupIdentifier{ + GroupId: aws.String("sg-12345"), + GroupName: aws.String("user4321/somegroup"), + }, + }, + }, + } + + for _, c := range cases { + out := flattenSecurityGroups(c.pairs, c.ownerId) + if !reflect.DeepEqual(out, c.expected) { + t.Fatalf("Error matching output and expected: %#v vs %#v", out, c.expected) + } + } +} +``` diff --git a/content/terraform-plugin-testing/v1.13.x/img/.gitkeep b/content/terraform-plugin-testing/v1.13.x/img/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 From 7d9c058bd5556d672d3484bde4578f8a145ddfe6 Mon Sep 17 00:00:00 2001 From: Austin Valle Date: Fri, 16 May 2025 15:29:56 -0400 Subject: [PATCH 06/47] Add `terraform-plugin-framework@v1.15.x` documentation (#355) * copy 1.14.x to new folder * Framework - Resource Identity Documentation (#361) * add skeleton of thoughts on doc updates * Initial update to reflect the addition of resource identity.mdx * Second update of documentation to address some comments * Removing extra line * Update content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity.mdx Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> * adjust type pages * Apply suggestions from code review Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> * remove stack + note callout * add to nav * update code examples and change name back * update identity docs * more identity updates * updates + todos * space * remove sections * last updates to identity docs --------- Co-authored-by: Rain Co-authored-by: Rain Kwan <91649079+rainkwan@users.noreply.github.com> Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> --------- Co-authored-by: Rain Co-authored-by: Rain Kwan <91649079+rainkwan@users.noreply.github.com> Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> --- .../data/plugin-framework-nav-data.json | 656 +++++++++ .../docs/plugin/framework/acctests.mdx | 84 ++ .../framework/data-sources/configure.mdx | 104 ++ .../plugin/framework/data-sources/index.mdx | 147 ++ .../framework/data-sources/timeouts.mdx | 132 ++ .../data-sources/validate-configuration.mdx | 86 ++ .../docs/plugin/framework/debugging.mdx | 35 + .../docs/plugin/framework/deprecations.mdx | 1286 +++++++++++++++++ .../docs/plugin/framework/diagnostics.mdx | 378 +++++ .../framework/ephemeral-resources/close.mdx | 94 ++ .../ephemeral-resources/configure.mdx | 104 ++ .../framework/ephemeral-resources/index.mdx | 101 ++ .../framework/ephemeral-resources/open.mdx | 76 + .../framework/ephemeral-resources/renew.mdx | 113 ++ .../validate-configuration.mdx | 86 ++ .../plugin/framework/functions/concepts.mdx | 68 + .../framework/functions/documentation.mdx | 122 ++ .../plugin/framework/functions/errors.mdx | 162 +++ .../framework/functions/implementation.mdx | 335 +++++ .../docs/plugin/framework/functions/index.mdx | 34 + .../framework/functions/parameters/bool.mdx | 95 ++ .../functions/parameters/dynamic.mdx | 177 +++ .../functions/parameters/float32.mdx | 102 ++ .../functions/parameters/float64.mdx | 102 ++ .../framework/functions/parameters/index.mdx | 130 ++ .../framework/functions/parameters/int32.mdx | 102 ++ .../framework/functions/parameters/int64.mdx | 102 ++ .../framework/functions/parameters/list.mdx | 103 ++ .../framework/functions/parameters/map.mdx | 107 ++ .../framework/functions/parameters/number.mdx | 100 ++ .../framework/functions/parameters/object.mdx | 128 ++ .../framework/functions/parameters/set.mdx | 104 ++ .../framework/functions/parameters/string.mdx | 96 ++ .../framework/functions/returns/bool.mdx | 66 + .../framework/functions/returns/dynamic.mdx | 78 + .../framework/functions/returns/float32.mdx | 72 + .../framework/functions/returns/float64.mdx | 72 + .../framework/functions/returns/index.mdx | 60 + .../framework/functions/returns/int32.mdx | 72 + .../framework/functions/returns/int64.mdx | 72 + .../framework/functions/returns/list.mdx | 71 + .../framework/functions/returns/map.mdx | 74 + .../framework/functions/returns/number.mdx | 72 + .../framework/functions/returns/object.mdx | 83 ++ .../framework/functions/returns/set.mdx | 71 + .../framework/functions/returns/string.mdx | 66 + .../plugin/framework/functions/testing.mdx | 246 ++++ .../getting-started/code-walkthrough.mdx | 384 +++++ .../handling-data/accessing-values.mdx | 111 ++ .../handling-data/attributes/bool.mdx | 143 ++ .../handling-data/attributes/dynamic.mdx | 159 ++ .../handling-data/attributes/float32.mdx | 149 ++ .../handling-data/attributes/float64.mdx | 149 ++ .../handling-data/attributes/index.mdx | 95 ++ .../handling-data/attributes/int32.mdx | 149 ++ .../handling-data/attributes/int64.mdx | 149 ++ .../handling-data/attributes/list-nested.mdx | 190 +++ .../handling-data/attributes/list.mdx | 166 +++ .../handling-data/attributes/map-nested.mdx | 190 +++ .../handling-data/attributes/map.mdx | 160 ++ .../handling-data/attributes/number.mdx | 149 ++ .../handling-data/attributes/object.mdx | 194 +++ .../handling-data/attributes/set-nested.mdx | 176 +++ .../handling-data/attributes/set.mdx | 145 ++ .../attributes/single-nested.mdx | 186 +++ .../handling-data/attributes/string.mdx | 150 ++ .../framework/handling-data/blocks/index.mdx | 25 + .../handling-data/blocks/list-nested.mdx | 169 +++ .../handling-data/blocks/set-nested.mdx | 168 +++ .../handling-data/blocks/single-nested.mdx | 160 ++ .../framework/handling-data/dynamic-data.mdx | 223 +++ .../handling-data/path-expressions.mdx | 185 +++ .../plugin/framework/handling-data/paths.mdx | 556 +++++++ .../framework/handling-data/schemas.mdx | 99 ++ .../handling-data/terraform-concepts.mdx | 129 ++ .../framework/handling-data/types/bool.mdx | 107 ++ .../framework/handling-data/types/custom.mdx | 435 ++++++ .../framework/handling-data/types/dynamic.mdx | 155 ++ .../framework/handling-data/types/float32.mdx | 122 ++ .../framework/handling-data/types/float64.mdx | 121 ++ .../framework/handling-data/types/index.mdx | 89 ++ .../framework/handling-data/types/int32.mdx | 121 ++ .../framework/handling-data/types/int64.mdx | 121 ++ .../framework/handling-data/types/list.mdx | 125 ++ .../framework/handling-data/types/map.mdx | 130 ++ .../framework/handling-data/types/number.mdx | 117 ++ .../framework/handling-data/types/object.mdx | 246 ++++ .../framework/handling-data/types/set.mdx | 124 ++ .../framework/handling-data/types/string.mdx | 121 ++ .../framework/handling-data/types/tuple.mdx | 55 + .../framework/handling-data/writing-state.mdx | 85 ++ .../v1.15.x/docs/plugin/framework/index.mdx | 36 + .../docs/plugin/framework/internals/index.mdx | 16 + .../docs/plugin/framework/internals/rpcs.mdx | 214 +++ .../attributes-blocks/attribute-schema.mdx | 97 ++ .../attributes-blocks/blocks-computed.mdx | 110 ++ .../migrating/attributes-blocks/blocks.mdx | 159 ++ .../attributes-blocks/default-values.mdx | 105 ++ .../migrating/attributes-blocks/fields.mdx | 114 ++ .../migrating/attributes-blocks/force-new.mdx | 104 ++ .../migrating/attributes-blocks/types.mdx | 176 +++ .../attributes-blocks/validators-custom.mdx | 148 ++ .../validators-predefined.mdx | 193 +++ .../plugin/framework/migrating/benefits.mdx | 523 +++++++ .../migrating/data-sources/index.mdx | 167 +++ .../migrating/data-sources/timeouts.mdx | 130 ++ .../docs/plugin/framework/migrating/index.mdx | 48 + .../docs/plugin/framework/migrating/mux.mdx | 283 ++++ .../framework/migrating/providers/index.mdx | 343 +++++ .../framework/migrating/resources/crud.mdx | 259 ++++ .../framework/migrating/resources/import.mdx | 138 ++ .../framework/migrating/resources/index.mdx | 219 +++ .../migrating/resources/plan-modification.mdx | 182 +++ .../migrating/resources/state-upgrade.mdx | 158 ++ .../migrating/resources/timeouts.mdx | 136 ++ .../framework/migrating/schema/index.mdx | 140 ++ .../plugin/framework/migrating/testing.mdx | 230 +++ .../plugin/framework/provider-servers.mdx | 88 ++ .../docs/plugin/framework/providers/index.mdx | 346 +++++ .../providers/validate-configuration.mdx | 86 ++ .../plugin/framework/resources/configure.mdx | 104 ++ .../plugin/framework/resources/create.mdx | 176 +++ .../plugin/framework/resources/default.mdx | 104 ++ .../plugin/framework/resources/delete.mdx | 149 ++ .../framework/resources/identity-upgrade.mdx | 147 ++ .../plugin/framework/resources/identity.mdx | 257 ++++ .../plugin/framework/resources/import.mdx | 105 ++ .../docs/plugin/framework/resources/index.mdx | 105 ++ .../framework/resources/plan-modification.mdx | 206 +++ .../framework/resources/private-state.mdx | 95 ++ .../docs/plugin/framework/resources/read.mdx | 167 +++ .../plugin/framework/resources/state-move.mdx | 267 ++++ .../framework/resources/state-upgrade.mdx | 294 ++++ .../plugin/framework/resources/timeouts.mdx | 138 ++ .../plugin/framework/resources/update.mdx | 211 +++ .../resources/validate-configuration.mdx | 86 ++ .../resources/write-only-arguments.mdx | 114 ++ .../docs/plugin/framework/validation.mdx | 518 +++++++ .../v1.15.x/img/.gitkeep | 0 .../v1.15.x/img/README.md | 25 + .../img/apply-resource-change-detail.png | Bin 0 -> 329780 bytes .../img/apply-resource-change-overview.png | Bin 0 -> 116391 bytes .../v1.15.x/img/configure-provider-detail.png | Bin 0 -> 178677 bytes .../img/configure-provider-overview.png | Bin 0 -> 76726 bytes .../img/get-provider-schema-detail.png | Bin 0 -> 267142 bytes .../img/get-provider-schema-overview.png | Bin 0 -> 104725 bytes .../img/plan-resource-change-detail.png | Bin 0 -> 250759 bytes .../img/plan-resource-change-overview.png | Bin 0 -> 109755 bytes .../v1.15.x/img/read-data-source-detail.png | Bin 0 -> 197134 bytes .../v1.15.x/img/read-overview.png | Bin 0 -> 131147 bytes .../v1.15.x/img/read-resource-detail.png | Bin 0 -> 191824 bytes .../v1.15.x/img/validate-config-overview.png | Bin 0 -> 242410 bytes .../validate-data-resource-config-detail.png | Bin 0 -> 317002 bytes .../img/validate-provider-config-detail.png | Bin 0 -> 289747 bytes .../img/validate-resource-config-detail.png | Bin 0 -> 306257 bytes 155 files changed, 22224 insertions(+) create mode 100644 content/terraform-plugin-framework/v1.15.x/data/plugin-framework-nav-data.json create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/acctests.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/configure.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/timeouts.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/validate-configuration.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/debugging.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/deprecations.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/diagnostics.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/close.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/configure.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/open.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/renew.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/validate-configuration.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/concepts.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/documentation.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/errors.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/implementation.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/bool.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/dynamic.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/list.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/map.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/number.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/object.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/set.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/string.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/bool.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/dynamic.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/list.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/map.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/number.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/object.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/set.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/string.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/testing.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/getting-started/code-walkthrough.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/accessing-values.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/bool.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/dynamic.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/number.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/object.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/single-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/string.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/list-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/set-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/single-nested.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/dynamic-data.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/path-expressions.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/paths.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/schemas.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/terraform-concepts.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/bool.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/custom.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/dynamic.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int32.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int64.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/list.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/map.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/number.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/object.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/set.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/string.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/tuple.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/writing-state.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/rpcs.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/fields.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/types.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/benefits.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/timeouts.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/mux.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/providers/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/crud.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/import.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/plan-modification.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/state-upgrade.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/timeouts.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/schema/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/testing.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/provider-servers.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/validate-configuration.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/configure.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/create.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/default.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/delete.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity-upgrade.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/import.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/index.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/plan-modification.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/private-state.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/read.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-move.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-upgrade.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/timeouts.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/update.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/validate-configuration.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/write-only-arguments.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/validation.mdx create mode 100644 content/terraform-plugin-framework/v1.15.x/img/.gitkeep create mode 100644 content/terraform-plugin-framework/v1.15.x/img/README.md create mode 100644 content/terraform-plugin-framework/v1.15.x/img/apply-resource-change-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/apply-resource-change-overview.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/configure-provider-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/configure-provider-overview.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/get-provider-schema-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/get-provider-schema-overview.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/plan-resource-change-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/plan-resource-change-overview.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/read-data-source-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/read-overview.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/read-resource-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/validate-config-overview.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/validate-data-resource-config-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/validate-provider-config-detail.png create mode 100644 content/terraform-plugin-framework/v1.15.x/img/validate-resource-config-detail.png diff --git a/content/terraform-plugin-framework/v1.15.x/data/plugin-framework-nav-data.json b/content/terraform-plugin-framework/v1.15.x/data/plugin-framework-nav-data.json new file mode 100644 index 0000000000..c1585afa51 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/data/plugin-framework-nav-data.json @@ -0,0 +1,656 @@ +[ + { + "heading": "Framework" + }, + { + "title": "Overview", + "path": "" + }, + { + "title": "Getting Started", + "routes": [ + { + "title": "Provider Code Walkthrough", + "path": "getting-started/code-walkthrough" + }, + { + "title": "Tutorials", + "href": "https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS" + }, + { + "title": "Clone Template Repository", + "href": "https://github.com/hashicorp/terraform-provider-scaffolding-framework" + } + ] + }, + { + "title": "Provider Servers", + "path": "provider-servers" + }, + { + "title": "Providers", + "routes": [ + { + "title": "Overview", + "path": "providers" + }, + { + "title": "Validate Configuration", + "path": "providers/validate-configuration" + } + ] + }, + { + "title": "Resources", + "routes": [ + { + "title": "Overview", + "path": "resources" + }, + { + "title": "Create", + "path": "resources/create" + }, + { + "title": "Read", + "path": "resources/read" + }, + { + "title": "Update", + "path": "resources/update" + }, + { + "title": "Delete", + "path": "resources/delete" + }, + { + "title": "Identity", + "path": "resources/identity" + }, + { + "title": "Configure Clients", + "path": "resources/configure" + }, + { + "title": "Validate Configuration", + "path": "resources/validate-configuration" + }, + { + "title": "Modify Plan", + "path": "resources/plan-modification" + }, + { + "title": "Default Attribute Values", + "path": "resources/default" + }, + { + "title": "Import State", + "path": "resources/import" + }, + { + "title": "Move State", + "path": "resources/state-move" + }, + { + "title": "Upgrade State", + "path": "resources/state-upgrade" + }, + { + "title": "Upgrade Identity", + "path": "resources/identity-upgrade" + }, + { + "title": "Manage Private State", + "path": "resources/private-state" + }, + { + "title": "Timeouts", + "path": "resources/timeouts" + }, + { + "title": "Write-only Arguments", + "path": "resources/write-only-arguments" + } + ] + }, + { + "title": "Data Sources", + "routes": [ + { + "title": "Overview", + "path": "data-sources" + }, + { + "title": "Configure Clients", + "path": "data-sources/configure" + }, + { + "title": "Validate Configuration", + "path": "data-sources/validate-configuration" + }, + { + "title": "Timeouts", + "path": "data-sources/timeouts" + } + ] + }, + { + "title": "Functions", + "routes": [ + { + "title": "Overview", + "path": "functions" + }, + { + "title": "Concepts", + "path": "functions/concepts" + }, + { + "title": "Implementation", + "path": "functions/implementation" + }, + { + "title": "Parameters", + "routes": [ + { + "title": "Overview", + "path": "functions/parameters" + }, + { + "title": "Bool", + "path": "functions/parameters/bool" + }, + { + "title": "Dynamic", + "path": "functions/parameters/dynamic" + }, + { + "title": "Float32", + "path": "functions/parameters/float32" + }, + { + "title": "Float64", + "path": "functions/parameters/float64" + }, + { + "title": "Int32", + "path": "functions/parameters/int32" + }, + { + "title": "Int64", + "path": "functions/parameters/int64" + }, + { + "title": "List", + "path": "functions/parameters/list" + }, + { + "title": "Map", + "path": "functions/parameters/map" + }, + { + "title": "Number", + "path": "functions/parameters/number" + }, + { + "title": "Object", + "path": "functions/parameters/object" + }, + { + "title": "Set", + "path": "functions/parameters/set" + }, + { + "title": "String", + "path": "functions/parameters/string" + } + ] + }, + { + "title": "Returns", + "routes": [ + { + "title": "Overview", + "path": "functions/returns" + }, + { + "title": "Bool", + "path": "functions/returns/bool" + }, + { + "title": "Dynamic", + "path": "functions/returns/dynamic" + }, + { + "title": "Float32", + "path": "functions/returns/float32" + }, + { + "title": "Float64", + "path": "functions/returns/float64" + }, + { + "title": "Int32", + "path": "functions/returns/int32" + }, + { + "title": "Int64", + "path": "functions/returns/int64" + }, + { + "title": "List", + "path": "functions/returns/list" + }, + { + "title": "Map", + "path": "functions/returns/map" + }, + { + "title": "Number", + "path": "functions/returns/number" + }, + { + "title": "Object", + "path": "functions/returns/object" + }, + { + "title": "Set", + "path": "functions/returns/set" + }, + { + "title": "String", + "path": "functions/returns/string" + } + ] + }, + { + "title": "Errors", + "path": "functions/errors" + }, + { + "title": "Testing", + "path": "functions/testing" + }, + { + "title": "Documentation", + "path": "functions/documentation" + } + ] + }, + { + "title": "Ephemeral Resources", + "routes": [ + { + "title": "Overview", + "path": "ephemeral-resources" + }, + { + "title": "Open", + "path": "ephemeral-resources/open" + }, + { + "title": "Configure Clients", + "path": "ephemeral-resources/configure" + }, + { + "title": "Validate Configuration", + "path": "ephemeral-resources/validate-configuration" + }, + { + "title": "Renew", + "path": "ephemeral-resources/renew" + }, + { + "title": "Close", + "path": "ephemeral-resources/close" + } + ] + }, + { + "title": "Handling Data", + "routes": [ + { + "title": "Terraform Concepts", + "path": "handling-data/terraform-concepts" + }, + { + "title": "Schemas", + "path": "handling-data/schemas" + }, + { + "title": "Attributes", + "routes": [ + { + "title": "Overview", + "path": "handling-data/attributes" + }, + { + "title": "Bool", + "path": "handling-data/attributes/bool" + }, + { + "title": "Dynamic", + "path": "handling-data/attributes/dynamic" + }, + { + "title": "Float32", + "path": "handling-data/attributes/float32" + }, + { + "title": "Float64", + "path": "handling-data/attributes/float64" + }, + { + "title": "Int32", + "path": "handling-data/attributes/int32" + }, + { + "title": "Int64", + "path": "handling-data/attributes/int64" + }, + { + "title": "List", + "path": "handling-data/attributes/list" + }, + { + "title": "List Nested", + "path": "handling-data/attributes/list-nested" + }, + { + "title": "Map", + "path": "handling-data/attributes/map" + }, + { + "title": "Map Nested", + "path": "handling-data/attributes/map-nested" + }, + { + "title": "Number", + "path": "handling-data/attributes/number" + }, + { + "title": "Object", + "path": "handling-data/attributes/object" + }, + { + "title": "Set", + "path": "handling-data/attributes/set" + }, + { + "title": "Set Nested", + "path": "handling-data/attributes/set-nested" + }, + { + "title": "Single Nested", + "path": "handling-data/attributes/single-nested" + }, + { + "title": "String", + "path": "handling-data/attributes/string" + } + ] + }, + { + "title": "Blocks", + "routes": [ + { + "title": "Overview", + "path": "handling-data/blocks" + }, + { + "title": "List Nested", + "path": "handling-data/blocks/list-nested" + }, + { + "title": "Set Nested", + "path": "handling-data/blocks/set-nested" + }, + { + "title": "Single Nested", + "path": "handling-data/blocks/single-nested" + } + ] + }, + { + "title": "Types", + "routes": [ + { + "title": "Overview", + "path": "handling-data/types" + }, + { + "title": "Bool", + "path": "handling-data/types/bool" + }, + { + "title": "Dynamic", + "path": "handling-data/types/dynamic" + }, + { + "title": "Float32", + "path": "handling-data/types/float32" + }, + { + "title": "Float64", + "path": "handling-data/types/float64" + }, + { + "title": "Int32", + "path": "handling-data/types/int32" + }, + { + "title": "Int64", + "path": "handling-data/types/int64" + }, + { + "title": "List", + "path": "handling-data/types/list" + }, + { + "title": "Map", + "path": "handling-data/types/map" + }, + { + "title": "Number", + "path": "handling-data/types/number" + }, + { + "title": "Object", + "path": "handling-data/types/object" + }, + { + "title": "Set", + "path": "handling-data/types/set" + }, + { + "title": "String", + "path": "handling-data/types/string" + }, + { + "title": "Tuple", + "path": "handling-data/types/tuple" + }, + { + "title": "Custom Types", + "path": "handling-data/types/custom" + } + ] + }, + { + "title": "Paths", + "path": "handling-data/paths" + }, + { + "title": "Path Expressions", + "path": "handling-data/path-expressions" + }, + { + "title": "Accessing Terraform Data", + "path": "handling-data/accessing-values" + }, + { + "title": "Writing Data", + "path": "handling-data/writing-state" + }, + { + "title": "Dynamic Data", + "path": "handling-data/dynamic-data" + } + ] + }, + { + "title": "Returning Errors and Warnings", + "path": "diagnostics" + }, + { + "title": "Validation", + "path": "validation" + }, + { + "title": "Acceptance Tests", + "path": "acctests" + }, + { + "title": "Debugging", + "path": "debugging" + }, + { + "title": "Deprecations, Removals, and Renames", + "path": "deprecations" + }, + { + "title": "Migrating from SDK", + "routes": [ + { + "title": "Overview", + "path": "migrating" + }, + { + "title": "Benefits", + "path": "migrating/benefits" + }, + { + "title": "Muxing", + "path": "migrating/mux" + }, + { + "title": "Testing", + "path": "migrating/testing" + }, + { + "title": "Schema", + "routes": [ + { + "title": "Overview", + "path": "migrating/schema" + } + ] + }, + { + "title": "Providers", + "routes": [ + { + "title": "Overview", + "path": "migrating/providers" + } + ] + }, + { + "title": "Resources", + "routes": [ + { + "title": "Overview", + "path": "migrating/resources" + }, + { + "title": "CRUD Functions", + "path": "migrating/resources/crud" + }, + { + "title": "Import", + "path": "migrating/resources/import" + }, + { + "title": "Plan Modification", + "path": "migrating/resources/plan-modification" + }, + { + "title": "State Upgraders", + "path": "migrating/resources/state-upgrade" + }, + { + "title": "Timeouts", + "path": "migrating/resources/timeouts" + } + ] + }, + { + "title": "Data Sources", + "routes": [ + { + "title": "Overview", + "path": "migrating/data-sources" + }, + { + "title": "Timeouts", + "path": "migrating/data-sources/timeouts" + } + ] + }, + { + "title": "Attributes & Blocks", + "routes": [ + { + "title": "Attribute Schema", + "path": "migrating/attributes-blocks/attribute-schema" + }, + { + "title": "Attribute Types", + "path": "migrating/attributes-blocks/types" + }, + { + "title": "Attribute Fields", + "path": "migrating/attributes-blocks/fields" + }, + { + "title": "Default Values", + "path": "migrating/attributes-blocks/default-values" + }, + { + "title": "Force New", + "path": "migrating/attributes-blocks/force-new" + }, + { + "title": "Validators - Predefined", + "path": "migrating/attributes-blocks/validators-predefined" + }, + { + "title": "Validators - Custom", + "path": "migrating/attributes-blocks/validators-custom" + }, + { + "title": "Blocks", + "path": "migrating/attributes-blocks/blocks" + }, + { + "title": "Blocks with Computed Fields", + "path": "migrating/attributes-blocks/blocks-computed" + } + ] + } + ] + }, + { + "title": "Internals", + "routes": [ + { + "title": "Overview", + "path": "internals" + }, + { + "title": "RPCs and Framework Functionality", + "path": "internals/rpcs" + } + ] + } +] diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/acctests.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/acctests.mdx new file mode 100644 index 0000000000..e23cd6fbb0 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/acctests.mdx @@ -0,0 +1,84 @@ +--- +page_title: Acceptance tests +description: >- + Learn how to write acceptance tests for providers built on the framework. + Acceptance tests help ensure your provider works as expected by imitating + Terraform operations. +--- + +# Acceptance tests + +Implement provider resource and data source acceptance tests with the [terraform-plugin-testing module](/terraform/plugin/testing). These tests are designed to execute Terraform commands against real Terraform configurations, simulating practitioner experiences with creating, refreshing, updating, and deleting infrastructure. + +This page only describes requirements of using the testing module with a framework provider. Refer to the [testing module documentation](/terraform/plugin/testing) for additional information on all available functionality in tests. + +## Requirements + +The testing module must know how to reference your provider code before Terraform commands and configurations can succeed. This is achieved by pointing the testing module at a [provider server](/terraform/plugin/framework/provider-servers) which wraps your [provider](/terraform/plugin/framework/providers). + +Use one of the [`resource.TestCase` type](/terraform/plugin/testing/acceptance-tests/testcase) [`ProtoV6ProviderFactories` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCase.ProtoV6ProviderFactories) for [protocol version 6](/terraform/plugin/terraform-plugin-protocol#protocol-version-6) or [`ProtoV5ProviderFactories` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCase.ProtoV5ProviderFactories) for [protocol version 5](/terraform/plugin/terraform-plugin-protocol#protocol-version-5). It is only necessary to test with the single protocol version matching the production provider server, typically defined in the `main.go` file of the provider codebase. + +### Protocol Version 6 + +Use the [`providerserver.NewProtocol6WithError`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/providerserver#NewProtocol6WithError) helper function to implement the provider server in the [`ProtoV6ProviderFactories` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCase.ProtoV6ProviderFactories). + +```go +resource.Test(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + // newProvider is an example function that returns a provider.Provider + "examplecloud": providerserver.NewProtocol6WithError(newProvider()), + }, + Steps: []resource.TestStep{/* ... */}, +}) +``` + +### Protocol Version 5 + +Use the [`providerserver.NewProtocol5WithError`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/providerserver#NewProtocol5WithError) helper function to implement the provider server in the [`ProtoV5ProviderFactories` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-testing/helper/resource#TestCase.ProtoV5ProviderFactories). + +```go +resource.Test(t, resource.TestCase{ + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error) { + // newProvider is an example function that returns a provider.Provider + "examplecloud": providerserver.NewProtocol5WithError(newProvider()), + }, + Steps: []resource.TestStep{/* ... */}, +}) +``` + +## Troubleshooting + +### No id found in attributes + + + +terraform-plugin-testing version 1.5.0 and later no longer require managed resources and data resources to implement the `id` attribute. + + + +In SDKv2, resources and data sources automatically included an implicit, root level `id` attribute. In the framework, the `id` attribute is not implicitly added. + +When testing resources and data sources without the `id` attribute, the acceptance testing framework will return errors such as: + +```text +testing_new_config.go:111: no "id" found in attributes +testing_new.go:53: no "id" found in attributes +``` + +To avoid this, add a root level `id` attribute to resource and data source schemas. Ensure the attribute value is appropriately [written to state](/terraform/plugin/framework/writing-state). Conventionally, `id` is a computed attribute that contains the identifier for the resource. + +For example, in the `Schema` method implementation of a [`datasource.DataSource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource) or [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource): + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... potentially other schema configuration ... + Attributes: map[string]schema.Attribute{ + // ... potentially other schema attributes ... + "id": schema.StringAttribute{ + Computed: true, + }, + }, + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/configure.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/configure.mdx new file mode 100644 index 0000000000..11dda382b1 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/configure.mdx @@ -0,0 +1,104 @@ +--- +page_title: Configure data sources +description: >- + Learn how to configure data sources with provider data or clients in the + Terraform plugin framework. +--- + +# Configure data sources + +[Data sources](/terraform/plugin/framework/data-sources) may require provider-level data or remote system clients to operate correctly. The framework supports the ability to configure this data and/or clients once within the provider, then pass that information to data sources by adding the `Configure` method. + +## Prepare Provider Configure Method + +Implement the [`provider.ConfigureResponse.DataSourceData` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ConfigureResponse.DataSourceData) in the [`Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). This value can be set to any type, whether an existing client or vendor SDK type, a provider-defined custom type, or the provider implementation itself. It is recommended to use pointer types so that data sources can determine if this value was configured before attempting to use it. + +During execution of the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC, in which the framework calls the [`provider.Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). + +In this example, the Go standard library [`net/http.Client`](https://pkg.go.dev/net/http#Client) is configured in the provider, and made available for data sources: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.DataSourceData = &http.Client{/* ... */} +} +``` + +In this example, the code defines an `ExampleClient` type that is made available for data sources: + +```go +type ExampleClient struct { + /* ... */ +} + +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.DataSourceData = &ExampleClient{/* ... */} +} +``` + +In this example, the `ExampleCloudProvider` type itself is made available for data sources: + +```go +// With the provider.Provider implementation +type ExampleCloudProvider struct { + /* ... */ +} + +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.DataSourceData = p +} +``` + +## Define Data Source Configure Method + +Implement the [`datasource.DataSourceWithConfigure` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithConfigure) which receives the provider configured data from the [`Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure) and saves it into the [`datasource.DataSource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource) implementation. + +The [`datasource.DataSourceWithConfigure` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithConfigure.Configure) is called during execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the [`ValidateDataResourceConfig`](/terraform/plugin/framework/internals/rpcs#validatedataresourceconfig-rpc) RPC is sent. Additionally, the [`datasource.DataSourceWithConfigure` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithConfigure.Configure) is called during execution of the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the [`ReadDataSource`](/terraform/plugin/framework/internals/rpcs#readdatasource-rpc) RPC is sent. + +-> Note that Terraform calling the [`ValidateDataResourceConfig`](/terraform/plugin/framework/internals/rpcs#validatedataresourceconfig-rpc) RPC would not call the [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC first, so implementations need to account for that situation. Configuration validation in Terraform occurs without provider configuration ("offline"). + +In this example, the provider configured the Go standard library [`net/http.Client`](https://pkg.go.dev/net/http#Client) which the data source uses during `Read`: + +```go +// With the datasource.DataSource implementation +type ThingDataSource struct { + client *http.Client +} + +func (d *ThingDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + // Always perform a nil check when handling ProviderData because Terraform + // sets that data after it calls the ConfigureProvider RPC. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*http.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *http.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client +} + +func (d *ThingDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + // Prevent panic if the provider has not been configured. + if d.client == nil { + resp.Diagnostics.AddError( + "Unconfigured HTTP Client", + "Expected configured HTTP client. Please report this issue to the provider developers.", + ) + + return + } + + httpResp, err := d.client.Get("https://example.com") + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/index.mdx new file mode 100644 index 0000000000..64dfb2ecc7 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/index.mdx @@ -0,0 +1,147 @@ +--- +page_title: Data sources +description: >- + Data sources allow Terraform to reference external data. Learn how the + framework can help you implement data sources. +--- + +# Data sources + +[Data sources](/terraform/language/data-sources) are an abstraction that allow Terraform to reference external data. Unlike [managed resources](/terraform/language/resources), Terraform does not manage the lifecycle of the resource or data. Data sources are intended to have no side-effects. + +This page describes the basic implementation details required for supporting a data source within the provider. Further documentation is available for deeper data source concepts: + +- [Configure](/terraform/plugin/framework/data-sources/configure) data sources with provider-level data types or clients. +- [Validate](/terraform/plugin/framework/data-sources/validate-configuration) practitioner configuration against acceptable values. +- [Timeouts](/terraform/plugin/framework/data-sources/timeouts) in practitioner configuration for use in a data source read function. + +## Define Data Source Type + +Implement the [`datasource.DataSource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource). Each of the methods is described in more detail below. + +In this example, a data source named `examplecloud_thing` with hardcoded behavior is defined: + +```go +// Ensure the implementation satisfies the desired interfaces. +var _ datasource.DataSource = &ThingDataSource{} + +type ThingDataSource struct {} + +type ThingDataSourceModel struct { + ExampleAttribute types.String `tfsdk:"example_attribute"` + ID types.String `tfsdk:"id"` +} + +func (d *ThingDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = "examplecloud_thing" +} + +func (d *ThingDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + Required: true, + }, + "id": schema.StringAttribute{ + Computed: true, + }, + }, + } +} + +func (d *ThingDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data ThingDataSourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + // Typically data sources will make external calls, however this example + // hardcodes setting the id attribute to a specific value for brevity. + data.ID = types.StringValue("example-id") + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} +``` + +### Metadata Method + +The [`datasource.DataSource` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource.Metadata) defines the data source name as it would appear in Terraform configurations. This name should include the provider type prefix, an underscore, then the data source specific name. For example, a provider named `examplecloud` and a data source that reads "thing" resources would be named `examplecloud_thing`. Ensure the [Add Data Source To Provider](#add-data-source-to-provider) documentation is followed so the data source becomes part of the provider implementation, and therefore available to practitioners. + +In this example, the data source name in an `examplecloud` provider that reads "thing" resources is hardcoded to `examplecloud_thing`: + +```go +// With the datasource.DataSource implementation +func (d *ThingDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = "examplecloud_thing" +} +``` + +To simplify data source implementations, the [`provider.MetadataResponse.TypeName` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#MetadataResponse.TypeName) from the [`provider.Provider` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Metadata) can set the provider name so it is available in the [`datasource.MetadataRequest.ProviderTypeName` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#MetadataRequest.ProviderTypeName). + +In this example, the provider defines the `examplecloud` name for itself, and the data source is named `examplecloud_thing`: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "examplecloud" +} + +// With the datasource.DataSource implementation +func (d *ThingDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_thing" +} +``` + +### Schema Method + +The [`datasource.DataSource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource.Schema) defines a [schema](/terraform/plugin/framework/schemas) describing what data is available in the data source's configuration and state. + +### Read Method + +The [`datasource.DataSource` interface `Read` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource.Read) defines how the data source updates Terraform's state to reflect the retrieved data. There is no plan or prior state to work with in `Read` requests, only configuration. + +During the [`terraform apply`](/terraform/cli/commands/apply), [`terraform plan`](/terraform/cli/commands/plan), and [`terraform refresh`](/terraform/cli/commands/refresh) commands, Terraform calls the provider [`ReadDataSource`](/terraform/plugin/framework/internals/rpcs#readdatasource-rpc) RPC, in which the framework calls the [`datasource.DataSource` interface `Read` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource.Read). + +Implement the `Read` method by: + +1. [Accessing configuration data](/terraform/plugin/framework/accessing-values) from the [`datasource.ReadRequest.Config` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#ReadRequest.Config). +1. Retriving any additional data, such as remote system information. +1. [Writing state data](/terraform/plugin/framework/writing-state) into the [`datasource.ReadResponse.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#ReadResponse.State). + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can added into the [`datasource.ReadResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#ReadResponse.Diagnostics). + +## Add Data Source to Provider + +Data sources become available to practitioners when they are included in the [provider](/terraform/plugin/framework/providers) implementation via the [`provider.ProviderWithDataSources` interface `DataSources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithDataSources.DataSources). + +In this example, the `ThingDataSource` type, which implements the `datasource.DataSource` interface, is added to the provider implementation: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) DataSources(_ context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + func() datasource.DataSource { + return &ThingDataSource{}, + }, + } +} +``` + +To simplify provider implementations, a named function can be created with the data source implementation. + +In this example, the `ThingDataSource` code includes an additional `NewThingDataSource` function, which simplifies the provider implementation: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) DataSources(_ context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + NewThingDataSource, + } +} + +// With the datasource.DataSource implementation +func NewThingDataSource() datasource.DataSource { + return &ThingDataSource{} +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/timeouts.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/timeouts.mdx new file mode 100644 index 0000000000..7868dd4020 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/timeouts.mdx @@ -0,0 +1,132 @@ +--- +page_title: Timeouts +description: >- + Learn how to implement timeouts with the Terraform plugin framework. +--- + +# Timeouts + +The reality of cloud infrastructure is that it typically takes time to perform operations such as booting operating systems, discovering services, and replicating state across network edges. As the provider developer you should take known delays in data source APIs into account in the `Read` function of the data source. Terraform supports configurable timeouts to assist in these situations. + +The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in the `Read` function. + +## Specifying Timeouts in Configuration + +Timeouts can be defined using either nested blocks or nested attributes. + +If you are writing a new provider using [terraform-plugin-framework](https://github.com/hashicorp/terraform-plugin-framework) +then we recommend using nested attributes. + +If you are [migrating a provider from SDKv2 to the Framework](/terraform/plugin/framework/migrating) and +you are already using timeouts you can either continue to use block syntax, or switch to using nested attributes. +However, switching to using nested attributes will require that practitioners that are using your provider update their +Terraform configuration. + +#### Block + +If your configuration is using a nested block to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts { + read = "60m" + } +} +``` + +Import the [timeouts module](https://github.com/hashicorp/terraform-plugin-framework-timeouts). + +```go +import ( + /* ... */ + "github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts" +) +```` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (d *ThingDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + + Blocks: map[string]schema.Block{ + "timeouts": timeouts.Block(ctx), + }, +``` + +#### Attribute + +If your configuration is using nested attributes to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts = { + read = "60m" + } +} +``` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (d *ThingDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + /* ... */ + "timeouts": timeouts.Attributes(ctx), + }, +``` + +## Updating Models + +Given a `Read` method which fetches the entire configuration: + +```go +func (e *exampleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data exampleDataSourceData + + diags := req.Config.Get(ctx, &data) + resp.Diagnostics.Append(diags...) +``` + +Modify the `exampleDataSourceData` model to include a field for timeouts using a [`timeouts.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts#Value) type. + +```go +type exampleDataSourceData struct { + /* ... */ + Timeouts timeouts.Value `tfsdk:"timeouts"` +``` + +## Accessing Timeout in Read Method + +Call the [`timeouts.Read()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts#Value.Read). + +```go +func (e *exampleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data exampleDataSourceData + + diags := req.Config.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + readTimeout, diags := data.Timeouts.Read(ctx, 20*time.Minute) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + ctx, cancel := context.WithTimeout(ctx, readTimeout) + defer cancel() + + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/validate-configuration.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/validate-configuration.mdx new file mode 100644 index 0000000000..0a0a55dc67 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/data-sources/validate-configuration.mdx @@ -0,0 +1,86 @@ +--- +page_title: Validate data source configurations +description: >- + Learn how to validate data source configurations with the Terraform plugin + framework. +--- + +# Validate data source configurations + +[Data sources](/terraform/plugin/framework/data-sources) support validating an entire practitioner configuration in either declarative or imperative logic. Feedback, such as required syntax or acceptable combinations of values, is returned via [diagnostics](/terraform/plugin/framework/diagnostics). + +This page describes implementation details for validating entire data source configurations, typically referencing multiple attributes. Further documentation is available for other configuration validation concepts: + +- [Single attribute validation](/terraform/plugin/framework/validation#attribute-validation) is a schema-based mechanism for implementing attribute-specific validation logic. +- [Type validation](/terraform/plugin/framework/validation#type-validation) is a schema-based mechanism for implementing reusable validation logic for any attribute using the type. + +-> Configuration validation in Terraform occurs without provider configuration ("offline"), so therefore the data source `Configure` method will not have been called. To implement validation with a configured API client, use logic within the `Read` method, which occurs during Terraform's planning phase when possible. + +## ConfigValidators Method + +The [`datasource.DataSourceWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithConfigValidators) follows a similar pattern to attribute validation and allows for a more declarative approach. This enables consistent validation logic across multiple data sources. Each validator intended for this interface must implement the [`datasource.ConfigValidator` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#ConfigValidator). + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ValidateDataResourceConfig`](/terraform/plugin/framework/internals/rpcs#validatedataresourceconfig-rpc) RPC, in which the framework calls the `ConfigValidators` method on data sources that implement the [`datasource.DataSourceWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithConfigValidators). + +The [`terraform-plugin-framework-validators` Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) has a collection of common use case data source configuration validators in the [`datasourcevalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/datasourcevalidator). These use [path expressions](/terraform/plugin/framework/path-expressions) for matching attributes. + +This example will raise an error if a practitioner attempts to configure both `attribute_one` and `attribute_two`: + +```go +// Other methods to implement the datasource.DataSource interface are omitted for brevity +type ThingDataSource struct {} + +func (d ThingDataSource) ConfigValidators(ctx context.Context) []datasource.ConfigValidator { + return []datasource.ConfigValidator{ + datasourcevalidator.Conflicting( + path.MatchRoot("attribute_one"), + path.MatchRoot("attribute_two"), + ), + } +} +``` + +## ValidateConfig Method + +The [`datasource.DataSourceWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithValidateConfig) is more imperative in design and is useful for validating unique functionality across multiple attributes that typically applies to a single data source. + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ValidateDataResourceConfig`](/terraform/plugin/framework/internals/rpcs#validatedataresourceconfig-rpc) RPC, in which the framework calls the `ValidateConfig` method on providers that implement the [`datasource.DatasourceWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSourceWithValidateConfig). + +This example will raise a warning if a practitioner attempts to configure `attribute_one`, but not `attribute_two`: + +```go +// Other methods to implement the datasource.DataSource interface are omitted for brevity +type ThingDataSource struct {} + +type ThingDataSourceModel struct { + AttributeOne types.String `tfsdk:"attribute_one"` + AttributeTwo types.String `tfsdk:"attribute_two"` +} + +func (d ThingDataSource) ValidateConfig(ctx context.Context, req datasource.ValidateConfigRequest, resp *datasource.ValidateConfigResponse) { + var data ThingDataSourceModel + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + // If attribute_one is not configured, return without warning. + if data.AttributeOne.IsNull() || data.AttributeOne.IsUnknown() { + return + } + + // If attribute_two is not null, return without warning. + if !data.AttributeTwo.IsNull() { + return + } + + resp.Diagnostics.AddAttributeWarning( + path.Root("attribute_two"), + "Missing Attribute Configuration", + "Expected attribute_two to be configured with attribute_one. "+ + "The data source may return unexpected results.", + ) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/debugging.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/debugging.mdx new file mode 100644 index 0000000000..ddae1484b9 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/debugging.mdx @@ -0,0 +1,35 @@ +--- +page_title: Debugging framework providers +description: >- + Learn how to implement debugger support in framework Terraform providers. +--- + +# Debugging framework Providers + +This page contains implementation details for inspecting runtime information of a Terraform provider developed with Framework via a debugger tool by adjusting the [provider server](/terraform/plugin/framework/provider-servers) implementation. Review the top level [Debugging](/terraform/plugin/debugging) page for information pertaining to the overall Terraform provider debugging process and other inspection options, such as log-based debugging. + +## Code Implementation + +Update the `main` function for the project to conditionally enable the [`providerserver/ServeOpts.Debug` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/providerserver#ServeOpts.Debug). Conventionally, a `-debug` flag is used to control the `Debug` value. + +This example uses a `-debug` flag to enable debugging, otherwise starting the provider normally on protocol version 6: + +```go +func main() { + var debug bool + + flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") + flag.Parse() + + opts := providerserver.ServeOpts{ + Address: "registry.terraform.io/example-namespace/example", + Debug: debug, + } + + err := providerserver.Serve(context.Background(), provider.New(), opts) + + if err != nil { + log.Fatal(err.Error()) + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/deprecations.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/deprecations.mdx new file mode 100644 index 0000000000..c86ce0ae0c --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/deprecations.mdx @@ -0,0 +1,1286 @@ +--- +page_title: Deprecations, removals, and renames +description: + Use the following recommendations to handle deprecations, removals, and + renames in framework providers. +--- + +# Deprecations, removals, and renames + +Terraform is trusted for managing many facets of infrastructure across many organizations. Part of that trust is due to consistent versioning guidelines and setting expectations for various levels of upgrades. Ensuring backwards compatibility for all patch and minor releases, potentially in concert with any upcoming major changes, is recommended and supported by the Terraform development framework. This allows operators to iteratively update their Terraform configurations rather than require massive refactoring. + +This guide is designed to walk through various scenarios where existing Terraform functionality requires future removal, while maintaining backwards compatibility. Further information about the versioning terminology (e.g. `MAJOR`.`MINOR`.`PATCH`) in this guide can be found in [the versioning guidelines documentation](/terraform/plugin/best-practices/versioning). + +~> **NOTE:** Removals should only ever occur in `MAJOR` version upgrades. + +~> **NOTE:** This documentation references usage of the `DeprecationMessage` field, please see the [schema documentation](/terraform/plugin/framework/handling-data/schemas#deprecationmessage-1) for more detailed guidance on how to structure warning messages and when those warnings will be raised to practitioners. + +## Table of Contents + +- [Provider Attribute Removal](#provider-attribute-removal) +- [Provider Attribute Rename](#provider-attribute-rename) + - [Renaming a Required Attribute](#renaming-a-required-attribute) + - [Renaming an Optional Attribute](#renaming-an-optional-attribute) + - [Renaming a Computed Attribute](#renaming-a-computed-attribute) +- [Provider Data Source or Resource Removal](#provider-data-source-or-resource-removal) +- [Provider Data Source or Resource Rename](#provider-data-source-or-resource-rename) + +## Provider Attribute Removal + +The recommended process for removing an attribute from a data source or resource in a provider is as follows: + +1. Add a [`DeprecationMessage`](/terraform/plugin/framework/handling-data/schemas#deprecationmessage-1) in the attribute schema definition. Set this field to a practitioner actionable message such as `"Remove this attribute's configuration as it's no longer in use and the attribute will be removed in the next major version of the provider."` +2. Ensure the changelog has an entry noting the deprecation. +3. Release a `MINOR` version with the deprecation. +4. In the next `MAJOR` version, remove all code associated with the attribute including the schema definition. +5. Ensure the changelog has an entry noting the removal. +6. Release the `MAJOR` version. + +## Provider Attribute Rename + +When renaming an attribute from one name to another, it is important to keep backwards compatibility with both existing Terraform configurations and the [Terraform state](/terraform/language/state) while operators migrate. To accomplish this, there will be some duplicated logic to support both attributes until the next `MAJOR` release. Once both attributes are appropriately handled, the process for deprecating and removing the old attribute is the same as noted in the [Provider Attribute Removal section](#provider-attribute-removal). + +The procedure for renaming an attribute depends on what type of attribute it is: + +- [Renaming a Required Attribute](#renaming-a-required-attribute) +- [Renaming an Optional Attribute](#renaming-an-optional-attribute) +- [Renaming a Computed Attribute](#renaming-a-computed-attribute) + +### Renaming a Required Attribute + +~> **NOTE:** If the schema definition does not contain `Optional` or `Required`, see the [Renaming a Computed Attribute section](#renaming-a-computed-attribute) instead. If the schema definition contains `Optional` instead of `Required`, see the [Renaming an Optional Attribute section](#renaming-an-optional-attribute). + +-> [Required attributes](/terraform/plugin/framework/handling-data/schemas#required) are also referred to as required "arguments" throughout the Terraform documentation. + +In general, the procedure here does two things: + +- Prevents the operator from needing to define two attributes with the same value. +- Allows the operator to migrate the configuration to the new attribute at the same time requiring that any other references only work with the new attribute. This is to prevent a situation with Terraform showing a difference when the existing attribute is configured, but the new attribute is saved into the Terraform state. For example, in `terraform plan` output format: + +``` +existing_attribute: "" => "value" +new_attribute: "value" => "" +``` + +The recommended process is as follows: + +1. Replace `Required: true` with `Optional: true` in the existing attribute schema definition. +1. Replace `Required` with `Optional` in the existing attribute documentation. +1. Duplicate the schema definition of the existing attribute, renaming one of them with the new attribute name. +1. Duplicate the documentation of the existing attribute, renaming one of them with the new attribute name. +1. Add a [`DeprecationMessage`](/terraform/plugin/framework/handling-data/schemas#deprecationmessage-1) to the schema definition of the existing (now the "old") attribute, noting to use the new attribute in the message. +1. Add `**Deprecated**` to the documentation of the existing (now the "old") attribute, noting to use the new attribute. +1. Add a note to the documentation that either the existing (now the "old") attribute or new attribute must be configured. +1. Add the type-specific [validator](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) `{type}validator.ExactlyOneOf` to the schema definition of the new attribute, with a path expression matching the old attribute. This will ensure at least one of the attributes is configured, but present an error to the operator if both are configured at the same time. For example, an attribute of type string would use the [`stringvalidator.ExactlyOneOf`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator#ExactlyOneOf) validator. +1. Add conditional logic in the `Create` and `Update` functions of the data source or resource to handle both attributes. Generally, this involves using [`{type}.IsNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes). +1. Follow the rest of the procedures in the [Provider Attribute Removal section](#provider-attribute-removal). When the old attribute is removed, update the schema definition and documentation of the new attribute back to `Required`, and remove the `{type}validator.ExactlyOneOf` validator. + +#### Example Renaming of a Required Attribute + +Given this sample resource: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "existing_attribute": schema.StringAttribute{ + Required: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + ExistingAttribute types.String `tfsdk:"existing_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add attribute to provider create API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // ... other logic ... +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add attribute to provider update API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +In order to support renaming `existing_attribute` to `new_attribute`, this sample can be written as the following to support both attributes simultaneously until the `existing_attribute` is removed: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "existing_attribute": schema.StringAttribute{ + Optional: true, + DeprecationMessage: "use new_attribute instead", + }, + "new_attribute": schema.StringAttribute{ + Optional: true, + Validators: []validator.String{ + stringvalidator.ExactlyOneOf(path.Expressions{ + path.MatchRoot("existing_attribute"), + }...), + }, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + ExistingAttribute types.String `tfsdk:"existing_attribute"` + NewAttribute types.String `tfsdk:"new_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + if !data.NewAttribute.IsNull() { + // add NewAttribute to provider create API call + } else { + // add ExistingAttribute to provider create API call + } + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // ... other logic ... +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + if !data.NewAttribute.IsNull() { + // add NewAttribute to provider create API call + } else { + // add ExistingAttribute to provider create API call + } + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +When the `existing_attribute` is ready for removal, then this can be written as: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "new_attribute": schema.StringAttribute{ + Required: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + NewAttribute types.String `tfsdk:"new_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add NewAttribute to provider create API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // ... other logic ... +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add NewAttribute to provider create API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +### Renaming an Optional Attribute + +~> **NOTE:** If the schema definition does not contain `Optional` or `Required`, see the [Renaming a Computed Attribute section](#renaming-a-computed-attribute) instead. If the schema definition contains `Required` instead of `Optional`, see the [Renaming a Required Attribute section](#renaming-a-required-attribute). + +-> [Optional attributes](/terraform/plugin/framework/handling-data/schemas#optional) are also referred to as optional "arguments" throughout the Terraform documentation. + +In general, the procedure here allows the operator to migrate the configuration to the new attribute at the same time requiring that any other references only work with the new attribute. This is to prevent a situation with Terraform showing a difference when the existing attribute is configured, but the new attribute is saved into the Terraform state. For example, in `terraform plan` output format: + +```text +existing_attribute: "" => "value" +new_attribute: "value" => "" +``` + +The recommended process is as follows: + +1. Duplicate the schema definition of the existing attribute, renaming one of them with the new attribute name. +1. Duplicate the documentation of the existing attribute, renaming one of them with the new attribute name. +1. Add a [`DeprecationMessage`](/terraform/plugin/framework/handling-data/schemas#deprecationmessage-1) to the schema definition of the existing (now the "old") attribute, noting to use the new attribute in the message. +1. Add `**Deprecated**` to the documentation of the existing (now the "old") attribute, noting to use the new attribute. +1. Add the type-specific [validator](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) `{type}validator.ExactlyOneOf` to the schema definition of the new attribute, with a path expression matching the old attribute. This will ensure at least one of the attributes is configured, but present an error to the operator if both are configured at the same time. For example, an attribute of type string would use the [`stringvalidator.ExactlyOneOf`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator#ExactlyOneOf) validator. +1. Add conditional logic in the `Create` and `Update` functions of the data source or resource to handle both attributes. Generally, this involves using [`{type}.IsNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes). +1. Follow the rest of the procedures in the [Provider Attribute Removal section](#provider-attribute-removal). When the old attribute is removed, remove the `{type}validator.ExactlyOneOf` validator. + +#### Example Renaming of an Optional Attribute + +Given this sample resource: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "existing_attribute": schema.StringAttribute{ + Optional: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + ExistingAttribute types.String `tfsdk:"existing_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add attribute to provider create API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // ... other logic ... +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add attribute to provider update API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +In order to support renaming `existing_attribute` to `new_attribute`, this sample can be written as the following to support both attributes simultaneously until the `existing_attribute` is removed: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "existing_attribute": schema.StringAttribute{ + Optional: true, + DeprecationMessage: "use new_attribute instead", + }, + + "new_attribute": schema.StringAttribute{ + Optional: true, + Validators: []validator.String{ + stringvalidator.ExactlyOneOf(path.Expressions{ + path.MatchRoot("existing_attribute"), + }...), + }, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + ExistingAttribute types.String `tfsdk:"existing_attribute"` + NewAttribute types.String `tfsdk:"new_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + if !data.NewAttribute.IsNull() { + // add NewAttribute to provider create API call + } else { + // add ExistingAttribute to provider create API call + } + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // ... other logic ... +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + if !data.NewAttribute.IsNull() { + // add NewAttribute to provider create API call + } else { + // add ExistingAttribute to provider create API call + } + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +When the `existing_attribute` is ready for removal, then this can be written as: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "new_attribute": schema.StringAttribute{ + Optional: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + NewAttribute types.String `tfsdk:"new_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add NewAttribute to provider create API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // ... other logic ... +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // add NewAttribute to provider create API call + + // ... other logic ... + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +### Renaming a Computed Attribute + +~> **NOTE:** If the schema definition contains `Optional` see the [Renaming an Optional Attribute section](#renaming-an-optional-attribute) instead. If the schema definition contains `Required` see the [Renaming a Required Attribute section](#renaming-a-required-attribute) instead. + +The recommended process is as follows: + +1. Duplicate the schema definition of the existing attribute, renaming one of them with the new attribute name. +1. Duplicate the documentation of the existing attribute, renaming one of them with the new attribute name. +1. Add a [`DeprecationMessage`](/terraform/plugin/framework/handling-data/schemas#deprecationmessage-1) to the schema definition of the existing (now the "old") attribute, noting to use the new attribute in the message. +1. Add `**Deprecated**` to the documentation of the existing (now the "old") attribute, noting to use the new attribute. +1. Set both attributes in the Terraform state in the `Create`, `Update`, and `Read` functions of the resource (`Read` only for data source). +1. Follow the rest of the procedures in the [Provider Attribute Removal section](#provider-attribute-removal). + +#### Example Renaming of a Computed Attribute + +Given this sample resource: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "existing_attribute": schema.StringAttribute{ + Computed: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + ExistingAttribute types.String `tfsdk:"existing_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.ExistingAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.ExistingAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.ExistingAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +In order to support renaming `existing_attribute` to `new_attribute`, this sample can be written as the following to support both attributes simultaneously until the `existing_attribute` is removed: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "existing_attribute": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "use new_attribute instead", + }, + + "new_attribute": schema.StringAttribute{ + Computed: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + ExistingAttribute types.String `tfsdk:"existing_attribute"` + NewAttribute types.String `tfsdk:"new_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.ExistingAttribute = // set to computed value + data.NewAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.ExistingAttribute = // set to computed value + data.NewAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.ExistingAttribute = // set to computed value + data.NewAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +When the `existing_attribute` is ready for removal, then this can be written as: + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ resource.Resource = (*exampleWidgetResource)(nil) + +type exampleWidgetResource struct{} + +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_widget" +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + + "new_attribute": schema.StringAttribute{ + Computed: true, + }, + }, + } +} + +type exampleWidgetResourceData struct { + // ... other attributes ... + + NewAttribute types.String `tfsdk:"new_attribute"` +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.NewAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.NewAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleWidgetResourceData + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // ... other logic ... + data.NewAttribute = // set to computed value + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // ... other logic ... +} +``` + +## Provider Data Source or Resource Removal + +The recommended process for removing a data source or resource from a provider is as follows: + +1. Add a [`DeprecationMessage`](/terraform/plugin/framework/handling-data/schemas#deprecationmessage) in the data source or resource schema definition. After an operator upgrades to this version, they will be shown a warning with the message provided when using the deprecated data source or resource, but the Terraform run will still complete. +1. Ensure the changelog has an entry noting the deprecation. +1. Release a `MINOR` version with the deprecation. +1. In the next `MAJOR` version, remove all code associated with the deprecated data source or resource except for the schema and replace the `Create`, `Read`, `Update`, and `Delete` functions to always return an error diagnostic. Remove the documentation sidebar link and update the resource or data source documentation page to include information about the removal and any potential migration information. After an operator upgrades to this version, they will be shown an error about the missing data source or resource. +1. Ensure the changelog has an entry noting the removal. +1. Release the `MAJOR` version. +1. In the next `MAJOR` version, remove all code associated with the removed data source or resource. Remove the resource or data source documentation page. +1. Release the `MAJOR` version. + +### Example Resource Removal + +Given this sample provider and resource: + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewWidgetResource, + } +} +``` + +```go +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + } +} + +// ... resource implementation ... +``` + +In order to deprecate `example_widget`, this sample can be written as: + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewWidgetResource, + } +} +``` + +```go +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + DeprecationMessage: "use example_thing resource instead", + } +} + +// ... resource implementation ... +``` + +To soft remove `example_widget` with a friendly error message, this sample can be written as: + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewWidgetResource, + } +} +``` + +```go +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + DeprecationMessage: "use example_thing resource instead", + } +} + +func (e *exampleWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_widget resource deprecated", "use example_thing resource instead"), + ) +} + +func (e *exampleWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_widget resource deprecated", "use example_thing resource instead"), + ) +} + +func (e *exampleWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_widget resource deprecated", "use example_thing resource instead"), + ) +} + +func (e *exampleWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_widget resource deprecated", "use example_thing resource instead"), + ) +} + +``` + +To remove `example_widget`: +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + } +} +``` + +## Provider Data Source or Resource Rename + +When renaming a resource from one name to another, it is important to keep backwards compatibility with both existing Terraform configurations and the Terraform state while operators migrate. To accomplish this, there will be some duplicated logic to support both resources until the next `MAJOR` release. Once both resources are appropriately handled, the process for deprecating and removing the old resource is the same as noted in the [Provider Data Source or Resource Removal section](#provider-data-source-or-resource-removal). + +The recommended process is as follows: + +1. Duplicate the code of the existing resource, renaming (and potentially modifying) functions as necessary. +1. Duplicate the documentation of the existing resource, renaming (and potentially modifying) as necessary. +1. Add a [`DeprecationMessage`](/terraform/plugin/framework/handling-data/schemas#deprecationmessage) to the schema definition of the existing (now the "old") resource, noting to use the new resource in the message. +1. Add `~> This resource is deprecated and will be removed in the next major version` to the documentation of the existing (now the "old") resource, noting to use the new resource. +1. Add the new resource to the provider [`Resources`](/terraform/plugin/framework/providers#resources) function +1. Follow the rest of the procedures in the [Provider Data Source or Resource Removal section](#provider-data-source-or-resource-removal). + +### Example Resource Renaming + +Given this sample provider and resource: + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewExistingWidgetResource, + } +} +``` + +```go +func NewExistingWidgetResource() resource.Resource { + return &exampleExistingWidgetResource{} +} + +func (e *exampleExistingWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + } +} + +// ... resource implementation ... +``` + +In order to support renaming `example_existing_widget` to `example_new_widget`, this sample can be written as the following to support both resources simultaneously until the `example_existing_widget` resource is removed: + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewExistingWidgetResource, + NewWidgetResource, + } +} +``` + +```go +func NewExistingWidgetResource() resource.Resource { + return &exampleExistingWidgetResource{} +} + +func (e *exampleExistingWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + DeprecationMessage: "use example_new_widget resource instead", + } +} + +// ... resource implementation ... +``` + +```go +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + } +} + +// ... resource implementation ... +``` + +To soft remove `example_existing_widget` with a friendly error message: + + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewExistingWidgetResource, + NewWidgetResource, + } +} +``` + +```go +func NewExistingWidgetResource() resource.Resource { + return &exampleExistingWidgetResource{} +} + +func (e *exampleExistingWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + DeprecationMessage: "use example_new_widget resource instead", + } +} + +func (e *exampleExistingWidgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_existing_widget resource deprecated", "use example_new_widget resource instead"), + ) +} + +func (e *exampleExistingWidgetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_existing_widget resource deprecated", "use example_new_widget resource instead"), + ) +} + +func (e *exampleExistingWidgetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_existing_widget resource deprecated", "use example_new_widget resource instead"), + ) +} + +func (e *exampleExistingWidgetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + resp.Diagnostics.Append( + diag.NewErrorDiagnostic("example_existing_widget resource deprecated", "use example_new_widget resource instead"), + ) +} + +// ... resource implementation ... +``` + +```go +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + } +} + +// ... resource implementation ... +``` + +To remove `example_existing_widget`: + +```go +// ... provider implementation ... + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + //... other resources ... + NewWidgetResource, + } +} +``` + +```go +func NewWidgetResource() resource.Resource { + return &exampleWidgetResource{} +} + +func (e *exampleWidgetResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other configuration ... + + Attributes: map[string]schema.Attribute{ + // ... other attributes ... + }, + } +} + +// ... resource implementation ... +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/diagnostics.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/diagnostics.mdx new file mode 100644 index 0000000000..7208d4845a --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/diagnostics.mdx @@ -0,0 +1,378 @@ +--- +page_title: Errors and warnings +description: >- + Learn how to return errors and warnings from the Terraform plugin framework. +--- + +# Returning errors and warnings + +Providers use `Diagnostics` to surface errors and warnings to practitioners, +such as contextual messages returned from Terraform CLI at the end of +command output: + +```console +$ terraform plan +# ... other plan output ... +╷ +│ Error: Summary +│ +│ on example.tf line #: +│ #: source configuration line +│ +│ Details +╵ +``` + +In the framework, you may encounter them in response structs or as returns from +functions or methods: + +```go +func (m myResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) +``` + +This is the most common form for Diagnostics: a slice that has one or more +errors appended to it. This approach allows your provider to inform +practitioners about all relevant errors and warnings at the same time, allowing +practitioners to fix their configuration or environment more quickly. You +should only append to Diagnostics slices and never replace or remove +information from them. + +The next section will detail the concepts and typical behaviors of +diagnostics, while the final section will outline the typical methods for +working with diagnostics, using functionality from the available +[`diag` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag). + +## Diagnostic Concepts + +### Severity + +`Severity` specifies whether the diagnostic is an error or a warning. Neither Terraform, nor the framework, supports other severity levels. Use [logging](/terraform/plugin/log/writing) for debugging or informational purposes. + +- An **error** will be displayed to the practitioner and halt Terraform's + execution, not continuing to apply changes to later resources in the graph. + We recommend using errors to inform practitioners about a situation the + provider could not recover from. +- A **warning** will be displayed to the practitioner, but will not halt + further execution, and is considered informative only. We recommend using + warnings to inform practitioners about suboptimal situations that the + practitioner should resolve to ensure stable functioning (e.g., deprecations) + or to inform practitioners about possible unexpected behaviors. + +### Summary + +`Summary` is a short, practitioner-oriented description of the problem. Good +summaries are general—they don't contain specific details about +values—and concise. For example, "Error creating resource", "Invalid +value for foo", or "Field foo is deprecated". + +### Detail + +`Detail` is a longer, more specific practitioner-oriented description of +precisely what went wrong. Good details are specific—they tell the +practitioner exactly what they need to fix and how. For example, "The API +is currently unavailable, please try the request again.", "foo can only contain +letters, numbers, and digits.", or "foo has been deprecated in favor of bar. +Please update your configuration to use bar instead. foo will be removed in a +future release.". + +### Attribute + +`Attribute` identifies the specific part of a configuration that caused the +error or warning. Only diagnostics that pertain to a whole attribute or a +specific attribute value will include this information. + +### Argument + +`Argument` identifies the specific function argument position that caused the +error or warning. Only diagnostics that pertain to a function argument will +include this information. + +## How Errors Affect State + +**Returning an error diagnostic does not stop the state from being updated**. +Terraform will still persist the returned state even when an error diagnostic +is returned with it. This is to allow Terraform to persist the values that have +already been modified when a resource modification requires multiple API +requests or an API request fails after an earlier one succeeded. + +When returning error diagnostics, we recommend resetting the state in the +response to the prior state available in the configuration. + +## diag Package + +The framework provides the `diag` package for interacting with diagnostics. +While the [Go documentation](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag) +contains the complete functionality, this section will highlight the most +common methods. + +### Working With Existing Diagnostics + +#### Append + +When receiving `diag.Diagnostics` from a function or method, such as +`Config.Get()` or `State.Set()`, these should typically be appended to the +response diagnostics for the method. This can be accomplished with the +[`Append(in ...diag.Diagnostics)` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostics.Append). + +For example: + +```go +func (m myResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) { + // ... prior logic ... + diags := req.Config.Get(ctx, &resourceData) + resp.Diagnostics.Append(diags...) + // ... further logic ... +} +``` + +This method automatically ignores `nil` or empty slice diagnostics and +deduplicates where possible. + +#### HasError + +The most typical form of diagnostics checking is ensuring that execution should +not stop due to encountering an error, potentially causing further confusing +errors or crashes. The [`HasError()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostics.HasError) +will check each of the diagnostics for error severity and return true if found. + +For example: + +```go +func (m myResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) { + // ... prior logic ... + diags := req.Config.Get(ctx, &resourceData) + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + // ... further logic ... +} +``` + +In this example, you will note that we opted to check `resp.Diagnostics` +instead of `diags`. Technically checking either is correct, however, checking +the response diagnostics can help ensure that any response will include the +expected diagnostics. + +### Creating Diagnostics + +When working with logic outside the framework, such as interacting with the +vendor or `net/http` library to make the actual calls to manage infrastructure +or creating custom plan modifiers and validators, it will be necessary to +create diagnostics. The `diag` package provides helper methods and allows +custom abstractions as described below. + +To craft the summary of a diagnostic, it is recommended to use a concise title +or single sentence that immediately can allow the practitioner to determine +the error cause and when it occurred. + +To craft the details portion of diagnostics, it is recommended to provide +practitioners (and potentially you as the maintainer) as much contextual, +troubleshooting, and next action information as possible. These details can +use newlines for easier readability where necessary. + +For example, with the top line as a summary and below as details: + +```text +API Error Reading Resource +``` + +```text +An unexpected error was encountered while reading the resource. + +Please check that the credentials being used are active and have sufficient +permissions to perform the Example API call against the resource. + +Region: example +ID: example123 +API Response: 403 Access Denied +``` + +#### AddError and AddWarning + +When creating diagnostics that affect an entire data source, provider, or +resource, and where a `diag.Diagnostics` is already available such as within +a response type, the [`AddError(summary string, detail string)` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostics.AddError) +and [`AddWarning(summary string, detail string)` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostics.AddWarning) +can append a new error or warning diagnostic. + +For example: + +```go +func (m myResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) { + // ... prior logic ... + resp, err := http.Post("https://example.com") + + if err != nil { + resp.Diagnostics.AddError( + "API Error Creating Resource", + fmt.Sprintf("... details ... %s", err) + ) + return + } + // ... further logic ... +} +``` + +#### AddAttributeError and AddAttributeWarning + +When creating diagnostics that affect only a single attribute, which is +typical of attribute-level plan modifiers and validators, the +[`AddAttributeError(path path.Path, summary string, detail string)` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostics.AddAttributeError) +and [`AddAttributeWarning(path path.Path, summary string, detail string)` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostics.AddAttributeWarning) +can append a new error or warning diagnostic pointing specifically at the +attribute path. This provides additional context to practitioners, such as +showing the specific line(s) and value(s) of configuration where possible. + +For example: + +```go +func (s exampleType) Validate(ctx context.Context, in tftypes.Value, path path.Path) diag.Diagnostics { + var diags diag.Diagnostics + + if !in.Type().Is(tftypes.Set{}) { + err := fmt.Errorf() + diags.AddAttributeError( + path, + "Example Type Validation Error", + "An unexpected error was encountered trying to validate an attribute value. "+ + "This is always an error in the provider. "+ + "Please report the following to the provider developer:\n\n"+ + fmt.Sprintf("Expected Set value, received %T with value: %v", in, in), + ) + return diags + } + // ... further logic ... +``` + +### Consistent Diagnostic Creation + +Create a helper function in your provider code using the diagnostic creation functions available in the [`diag` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag) to generate consistent diagnostics for types of errors/warnings. It is also possible to use [custom diagnostics types](#custom-diagnostics-types) to accomplish this same goal. + +The [`diag` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag) provides these functions to create various diagnostics: + +| Function | Description | +|---|---| +| [`diag.NewArgumentErrorDiagnostic()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#NewArgumentErrorDiagnostic) | Create a new error diagnostic with a function argument position. | +| [`diag.NewArgumentWarningDiagnostic()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#NewArgumentWarningDiagnostic) | Create a new warning diagnostic with a function argument position. | +| [`diag.NewAttributeErrorDiagnostic()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#NewAttributeErrorDiagnostic) | Create a new error diagnostic with a [path](/terraform/plugin/framework/handling-data/paths). | +| [`diag.NewAttributeWarningDiagnostic()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#NewAttributeWarningDiagnostic) | Create a new warning diagnostic with a [path](/terraform/plugin/framework/handling-data/paths). | +| [`diag.NewErrorDiagnostic()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#NewErrorDiagnostic) | Create a new error diagnostic without a [path](/terraform/plugin/framework/handling-data/paths). | +| [`diag.NewWarningDiagnostic()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#NewWarningDiagnostic) | Create a new warning diagnostic without a [path](/terraform/plugin/framework/handling-data/paths). | + +In this example, the provider code is setup to always convert `error` returns from the API SDK to a consistent error diagnostic. + +```go +func APIErrorDiagnostic(err error) diag.Diagnostic { + return diag.NewErrorDiagnostic( + "Unexpected API Error", + "While calling the API, an unexpected error was returned in the response. "+ + "Please contact support if you are unsure how to resolve the error.\n\n"+ + "Error: "+err.Error(), + ) +} +``` + +This enables calling code in the provider, such as: + +```go +func (r ThingResource) Read(ctx context.Context, req resource.ReadRequest, resp resource.ReadResponse) { + // ... other logic ... + + apiResp, err := examplesdk.Read(/* ... */) // example API SDK call that may return an error + + if err != nil { + resp.Diagnostics.Append(APIErrorDiagnostic(err)) + + return + } + + // ... further logic ... +} +``` + +## Custom Diagnostics Types + +Advanced provider developers may want to store additional data in diagnostics for other logic or create custom diagnostics that include specialized logic. + +The [`diag.Diagnostic` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#Diagnostic) that can be implemented with these methods: + +```go +type Diagnostic interface { + Severity() Severity + Summary() string + Detail() string + Equal(Diagnostic) bool +} +``` + +To include attribute path information, the [`diag.DiagnosticWithPath` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#DiagnosticWithPath) can be implemented with the additional `Path()` method: + +```go +type DiagnosticWithPath interface { + Diagnostic + Path() path.Path +} +``` + +To include function argument information, the [`diag.DiagnosticWithFunctionArgument` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/diag#DiagnosticWithFunctionArgument) can be implemented with the additional `FunctionArgument()` method: + +```go +type DiagnosticWithFunctionArgument interface { + Diagnostic + FunctionArgument() int +} +``` + +In this example, a custom diagnostic type stores an underlying `error` that caused the diagnostic: + +```go +// UnderlyingErrorDiagnostic is an error diagnostic +// which also stores the underlying error. +type UnderlyingErrorDiagnostic struct { + Detail string + Summary string + UnderlyingError error +} + +func (d UnderlyingErrorDiagnostic) Detail() string { + return d.Detail +} + +func (d UnderlyingErrorDiagnostic) Equal(o SpecialDiagnostic) bool { + if d.Detail() != o.Detail() { + return false + } + + if d.Summary() != o.Summary() { + return false + } + + if d.UnderlyingError == nil { + return o.UnderlyingError == nil + } + + if o.UnderlyingError == nil { + return false + } + + if d.UnderlyingError.Error() != o.UnderlyingError.Error() { + return false + } + + return true +} + +func (d UnderlyingErrorDiagnostic) Severity() diag.Severity { + return diag.SeverityError +} + +func (d UnderlyingErrorDiagnostic) Summary() string { + return d.Summary +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/close.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/close.mdx new file mode 100644 index 0000000000..dade8f2bd4 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/close.mdx @@ -0,0 +1,94 @@ +--- +page_title: Closing ephemeral resources +description: >- + Learn how to close ephemeral resource in the Terraform plugin framework. +--- + +# Closing Ephemeral Resources + +Close is an optional part of the Terraform lifecycle for an ephemeral resource, which is different from the [managed resource lifecycle](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md). During any Terraform operation (like [`terraform plan`](/terraform/cli/commands/plan) or [`terraform apply`](/terraform/cli/commands/apply)), when an ephemeral resource's data is needed, Terraform initially retrieves that data with the [`Open`](/terraform/plugin/framework/ephemeral-resources/open) lifecycle handler. Once the ephemeral resource data is no longer needed, Terraform calls the provider `CloseEphemeralResource` RPC, in which the framework calls the [`ephemeral.EphemeralResourceWithClose` interface `Close` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithClose). The request contains any `Private` data set in the latest `Open` or `Renew` call. + +`Close` is an optional lifecycle implementation for an ephemeral resource, other lifecycle implementations include: + +- [Open](/terraform/plugin/framework/ephemeral-resources/open) an ephemeral resource by receiving Terraform configuration, retrieving a remote object, and returning ephemeral result data to Terraform. +- [Renew](/terraform/plugin/framework/ephemeral-resources/renew) an expired remote object at a specified time. + +## Define Close Method + +The [`ephemeral.EphemeralResourceWithClose` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithClose) on the [`ephemeral.EphemeralResource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource) implementation will enable close support for an ephemeral resource. + +Implement the `Close` method by: + +1. [Accessing private data](/terraform/plugin/framework/resources/private-state#reading-private-state-data) from [`ephemeral.CloseRequest.Private` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#CloseRequest.Private) needed to close the remote object. +1. Performing logic or external calls to close the remote object. + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can be added into the [`ephemeral.CloseResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#CloseResponse.Diagnostics). + +In this example, an ephemeral resource named `examplecloud_thing` with hardcoded behavior is defined. `Private` data needed to execute `Close` is passed from the `Open` response: + +```go +var _ ephemeral.EphemeralResourceWithClose = (*ThingEphemeralResource)(nil) + +// ThingEphemeralResource defines the ephemeral resource implementation, which also implements Close. +type ThingEphemeralResource struct{} + +type ThingEphemeralResourceModel struct { + Name types.String `tfsdk:"name"` + Token types.String `tfsdk:"token"` +} + +type ThingPrivateData struct { + Name string `json:"name"` +} + +func (e *ThingEphemeralResource) Schema(ctx context.Context, req ephemeral.SchemaRequest, resp *ephemeral.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + Description: "Name of the thing to retrieve a token for.", + Required: true, + }, + "token": schema.StringAttribute{ + Description: "Token for the thing.", + Computed: true, + }, + }, + } +} + +func (e *ThingEphemeralResource) Open(ctx context.Context, req ephemeral.OpenRequest, resp *ephemeral.OpenResponse) { + var data ThingEphemeralResourceModel + + // Read Terraform config data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // Typically ephemeral resources will make external calls and reference returned data, + // however this example hardcodes the setting of result and private data for brevity. + data.Token = types.StringValue("token-123") + + // When closing, pass along this data (error handling omitted for brevity). + privateData, _ := json.Marshal(ThingPrivateData{Name: data.Name.ValueString()}) + resp.Private.SetKey(ctx, "thing_data", privateData) + + // Save data into ephemeral result data + resp.Diagnostics.Append(resp.Result.Set(ctx, &data)...) +} + +func (e *ThingEphemeralResource) Close(ctx context.Context, req ephemeral.CloseRequest, resp *ephemeral.CloseResponse) { + privateBytes, diags := req.Private.GetKey(ctx, "thing_data") + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + // Unmarshal private data (error handling omitted for brevity). + var privateData ThingPrivateData + json.Unmarshal(privateBytes, &privateData) + + // Perform external call to close/clean up "thing" data +} + +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/configure.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/configure.mdx new file mode 100644 index 0000000000..fef8e4a12a --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/configure.mdx @@ -0,0 +1,104 @@ +--- +page_title: Configuring ephemeral resources +description: >- + Learn how to configure ephemeral resources with provider data or clients in + the Terraform plugin framework. +--- + +# Configuring ephemeral resources + +[Ephemeral Resources](/terraform/plugin/framework/ephemeral-resources) may require provider-level data or remote system clients to operate correctly. The framework supports the ability to configure this data and/or clients once within the provider, then pass that information to ephemeral resources by adding the `Configure` method. + +## Prepare Provider Configure Method + +Implement the [`provider.ConfigureResponse.EphemeralResourceData` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ConfigureResponse.EphemeralResourceData) in the [`Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). This value can be set to any type, whether an existing client or vendor SDK type, a provider-defined custom type, or the provider implementation itself. It is recommended to use pointer types so that ephemeral resources can determine if this value was configured before attempting to use it. + +During execution of the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC, in which the framework calls the [`provider.Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). + +In this example, the Go standard library [`net/http.Client`](https://pkg.go.dev/net/http#Client) is configured in the provider, and made available for ephemeral resources: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.EphemeralResourceData = &http.Client{/* ... */} +} +``` + +In this example, the code defines an `ExampleClient` type that is made available for ephemeral resources: + +```go +type ExampleClient struct { + /* ... */ +} + +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.EphemeralResourceData = &ExampleClient{/* ... */} +} +``` + +In this example, the `ExampleCloudProvider` type itself is made available for ephemeral resources: + +```go +// With the provider.Provider implementation +type ExampleCloudProvider struct { + /* ... */ +} + +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.EphemeralResourceData = p +} +``` + +## Define Ephemeral Resource Configure Method + +Implement the [`ephemeral.EphemeralResourceWithConfigure` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithConfigure) which receives the provider configured data from the [`Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure) and saves it into the [`ephemeral.EphemeralResource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource) implementation. + +The [`ephemeral.EphemeralResourceWithConfigure` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithConfigure.Configure) is called during execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the `ValidateEphemeralResourceConfig` RPC is sent. Additionally, the [`ephemeral.EphemeralResourceWithConfigure` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithConfigure.Configure) is called during execution of the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the `OpenEphemeralResource` RPC is sent. + +-> Note that Terraform calling the `ValidateEphemeralResourceConfig` RPC would not call the [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC first, so implementations need to account for that situation. Configuration validation in Terraform occurs without provider configuration ("offline"). + +In this example, the provider configured the Go standard library [`net/http.Client`](https://pkg.go.dev/net/http#Client) which the ephemeral resource uses during `Open`: + +```go +// With the ephemeral.EphemeralResource implementation +type ThingEphemeralResource struct { + client *http.Client +} + +func (d *ThingEphemeralResource) Configure(ctx context.Context, req ephemeral.ConfigureRequest, resp *ephemeral.ConfigureResponse) { + // Always perform a nil check when handling ProviderData because Terraform + // sets that data after it calls the ConfigureProvider RPC. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*http.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Ephemeral Resource Configure Type", + fmt.Sprintf("Expected *http.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client +} + +func (d *ThingEphemeralResource) Open(ctx context.Context, req ephemeral.OpenRequest, resp *ephemeral.OpenResponse) { + // Prevent panic if the provider has not been configured. + if d.client == nil { + resp.Diagnostics.AddError( + "Unconfigured HTTP Client", + "Expected configured HTTP client. Please report this issue to the provider developers.", + ) + + return + } + + httpResp, err := d.client.Get("https://example.com") + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/index.mdx new file mode 100644 index 0000000000..194d65d5f9 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/index.mdx @@ -0,0 +1,101 @@ +--- +page_title: Ephemeral resources +description: >- + Ephemeral resources allow Terraform to reference external data, while + guaranteeing that this data will not be persisted in plan or state. Learn how + to implement ephemeral resources in the Terraform plugin framework. +--- + +# Ephemeral resources + + + +Ephemeral resource support is in technical preview and offered without compatibility promises until Terraform 1.10 is generally available. + + + +[Ephemeral resources](/terraform/language/v1.10.x/resources/ephemeral) are an abstraction that allows Terraform to reference external data. Unlike [data sources](/terraform/language/data-sources), Terraform guarantees that ephemeral resource data will not be persisted in plan or state artifacts. The data produced by an ephemeral resource can only be referenced in [specific ephemeral contexts](/terraform/language/v1.10.x/resources/ephemeral#referencing-ephemeral-resources) or Terraform will throw an error. + +This page describes the basic implementation details required for supporting an ephemeral resource within the provider. Ephemeral resources, as a part of their lifecycle, must implement: + +- [Open](/terraform/plugin/framework/ephemeral-resources/open) an ephemeral resource by receiving Terraform configuration, retrieving a remote object, and returning ephemeral result data to Terraform. + +Further documentation is available for deeper ephemeral resource concepts: + +- [Configure](/terraform/plugin/framework/ephemeral-resources/configure) an ephemeral resource with provider-level data types or clients. +- [Validate](/terraform/plugin/framework/ephemeral-resources/validate-configuration) practitioner configuration against acceptable values. +- [Renew](/terraform/plugin/framework/ephemeral-resources/renew) an expired remote object at a specified time. +- [Close](/terraform/plugin/framework/ephemeral-resources/close) a remote object when Terraform no longer needs the data. + +## Define Ephemeral Resource Type + +Implement the [`ephemeral.EphemeralResource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource). Ensure the [Add Ephemeral Resource To Provider](#add-ephemeral-resource-to-provider) documentation is followed so the ephemeral resource becomes part of the provider implementation, and therefore available to practitioners. + +### Metadata Method + +The [`ephemeral.EphemeralResource` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource.Metadata) defines the ephemeral resource name as it would appear in Terraform configurations. This name should include the provider type prefix, an underscore, then the ephemeral resource specific name. For example, a provider named `examplecloud` and an ephemeral resource that reads "thing" ephemeral data would be named `examplecloud_thing`. + +In this example, the ephemeral resource name in an `examplecloud` provider that reads "thing" ephemeral resource data is hardcoded to `examplecloud_thing`: + +```go +// With the ephemeral.EphemeralResource implementation +func (r *ThingEphemeralResource) Metadata(ctx context.Context, req ephemeral.MetadataRequest, resp *ephemeral.MetadataResponse) { + resp.TypeName = "examplecloud_thing" +} +``` + +To simplify ephemeral resource implementations, the [`provider.MetadataResponse.TypeName` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#MetadataResponse.TypeName) from the [`provider.Provider` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Metadata) can set the provider name so it is available in the [`ephemeral.MetadataRequest.ProviderTypeName` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#MetadataRequest.ProviderTypeName). + +In this example, the provider defines the `examplecloud` name for itself, and the ephemeral resource is named `examplecloud_thing`: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "examplecloud" +} + +// With the ephemeral.EphemeralResource implementation +func (d *ThingEphemeralResource) Metadata(ctx context.Context, req ephemeral.MetadataRequest, resp *ephemeral.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_thing" +} +``` + +### Schema Method + +The [`ephemeral.EphemeralResource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource.Schema) defines a [schema](/terraform/plugin/framework/handling-data/schemas) describing what data is available in the ephemeral resource's configuration and result data. + +## Add Ephemeral Resource to Provider + +Ephemeral resources become available to practitioners when they are included in the [provider](/terraform/plugin/framework/providers) implementation via the optional [`provider.ProviderWithEphemeralResources` interface `EphemeralResources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithEphemeralResources.EphemeralResource). + +In this example, the `ThingEphemeralResource` type, which implements the `ephemeral.EphemeralResource` interface, is added to the provider implementation: + +```go +var _ provider.ProviderWithEphemeralResources = (*ExampleCloudProvider)(nil) + +func (p *ExampleCloudProvider) EphemeralResources(_ context.Context) []func() ephemeral.EphemeralResource { + return []func() ephemeral.EphemeralResource{ + func() ephemeral.EphemeralResource { + return &ThingResource{}, + }, + } +} +``` + +To simplify provider implementations, a named function can be created with the ephemeral resource implementation. + +In this example, the `ThingEphemeralResource` code includes an additional `NewThingEphemeralResource` function, which simplifies the provider implementation: + +```go +// With the provider.ProviderWithEphemeralResources implementation +func (p *ExampleCloudProvider) EphemeralResources(_ context.Context) []func() ephemeral.EphemeralResource { + return []func() ephemeral.EphemeralResource{ + NewThingEphemeralResource, + } +} + +// With the ephemeral.EphemeralResource implementation +func NewThingEphemeralResource() ephemeral.EphemeralResource { + return &ThingEphemeralResource{} +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/open.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/open.mdx new file mode 100644 index 0000000000..3f7ff646a2 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/open.mdx @@ -0,0 +1,76 @@ +--- +page_title: Opening ephemeral resources +description: >- + Learn how to open ephemeral resource in the Terraform plugin framework. +--- + +# Opening ephemeral resources + +Open is part of the Terraform lifecycle for an ephemeral resource, which is different from the [managed resource lifecycle](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md). During any Terraform operation (like [`terraform plan`](/terraform/cli/commands/plan) or [`terraform apply`](/terraform/cli/commands/apply)), when an ephemeral resource's data is needed, Terraform calls the provider `OpenEphemeralResource` RPC, in which the framework calls the [`ephemeral.EphemeralResource` interface `Open` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource.Open). The request contains the configuration supplied to Terraform for the ephemeral resource. The response contains the ephemeral result data. The data is defined by the [schema](/terraform/plugin/framework/handling-data/schemas) of the ephemeral resource. + +`Open` is the only required lifecycle implementation for an ephemeral resource, optional lifecycle implementations include: + +- [Renew](/terraform/plugin/framework/ephemeral-resources/renew) an expired remote object at a specified time. +- [Close](/terraform/plugin/framework/ephemeral-resources/close) a remote object when Terraform no longer needs the data. + +## Define Open Method + +Implement the `Open` method by: + +1. [Accessing the `Config` data](/terraform/plugin/framework/handling-data/accessing-values) from the [`ephemeral.OpenRequest` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#OpenRequest). +1. Performing logic or external calls to read the result data for the ephemeral resource. +1. Determining if a remote object needs to be renewed, setting the [`ephemeral.OpenResponse.RenewAt` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#OpenResponse.RenewAt) to indicate to Terraform when to call the provider [`Renew`](/terraform/plugin/framework/ephemeral-resources/renew) method. +1. [Writing private data](/terraform/plugin/framework/resources/private-state#saving-private-state-data) needed to `Renew` or `Close` the ephemeral resource to the [`ephemeral.OpenResponse.Private` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#OpenResponse.Private). +1. [Writing result data](/terraform/plugin/framework/writing-state) into the [`ephemeral.OpenResponse.Result` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#OpenResponse.Result). + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can be added into the [`ephemeral.OpenResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#OpenResponse.Diagnostics). + +In this example, an ephemeral resource named `examplecloud_thing` with hardcoded behavior is defined: + +```go +// ThingEphemeralResource defines the ephemeral resource implementation. +// Some ephemeral.EphemeralResource interface methods are omitted for brevity. +type ThingEphemeralResource struct {} + +type ThingEphemeralResourceModel struct { + Name types.String `tfsdk:"name"` + Token types.String `tfsdk:"token"` +} + +func (e *ThingEphemeralResource) Schema(ctx context.Context, req ephemeral.SchemaRequest, resp *ephemeral.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + Description: "Name of the thing to retrieve a token for.", + Required: true, + }, + "token": schema.StringAttribute{ + Description: "Token for the thing.", + Computed: true, + }, + }, + } +} + +func (e *ThingEphemeralResource) Open(ctx context.Context, req ephemeral.OpenRequest, resp *ephemeral.OpenResponse) { + var data ThingEphemeralResourceModel + + // Read Terraform config data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // Typically ephemeral resources will make external calls, however this example + // hardcodes setting the token attribute to a specific value for brevity. + data.Token = types.StringValue("token-123") + + // Save data into ephemeral result data + resp.Diagnostics.Append(resp.Result.Set(ctx, &data)...) +} +``` + +## Caveats + +* An error is returned if the `Result` data contains unknown values. Set all attributes to either null or known values in the response. +* An error is returned unless every non-computed known value in the request config is saved exactly as-is into the result data. Only null values marked as computed can be modified. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/renew.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/renew.mdx new file mode 100644 index 0000000000..dadd729f73 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/renew.mdx @@ -0,0 +1,113 @@ +--- +page_title: Renewing ephemeral resources +description: >- + Learn how to renew ephemeral resource in the Terraform plugin framework. +--- + +# Renewing ephemeral resources + +Renew is an optional part of the Terraform lifecycle for an ephemeral resource, which is different from the [managed resource lifecycle](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md). During any Terraform operation (like [`terraform plan`](/terraform/cli/commands/plan) or [`terraform apply`](/terraform/cli/commands/apply)), when an ephemeral resource's data is needed, Terraform initially retrieves that data with the [`Open`](/terraform/plugin/framework/ephemeral-resources/open) lifecycle handler. During `Open`, ephemeral resources can opt to include a timestamp in the `RenewAt` response field to indicate to Terraform when a provider must renew an ephemeral resource. If an ephemeral resource's data is still in-use and the `RenewAt` timestamp has passed, Terraform calls the provider `RenewEphemeralResource` RPC, in which the framework calls the [`ephemeral.EphemeralResourceWithRenew` interface `Renew` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithRenew). The request contains any `Private` data set in the latest `Open` or `Renew` call. The response contains `Private` data and an optional `RenewAt` field for further renew executions. + + + +`Renew` cannot return new result data for the ephemeral resource instance, so this logic is only appropriate for remote objects like HashiCorp Vault leases, which can be renewed without changing their data. + + + +`Renew` is an optional lifecycle implementation for an ephemeral resource, other lifecycle implementations include: + +- [Open](/terraform/plugin/framework/ephemeral-resources/open) an ephemeral resource by receiving Terraform configuration, retrieving a remote object, and returning ephemeral result data to Terraform. +- [Close](/terraform/plugin/framework/ephemeral-resources/close) a remote object when Terraform no longer needs the data. + +## Define Renew Method + +The [`ephemeral.EphemeralResourceWithRenew` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithRenew) on the [`ephemeral.EphemeralResource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource) implementation will enable renew support for an ephemeral resource. + +Implement the `Renew` method by: + +1. [Accessing private data](/terraform/plugin/framework/resources/private-state#reading-private-state-data) from [`ephemeral.RenewRequest.Private` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#RenewRequest.Private) needed to renew the remote object. +1. Performing logic or external calls to renew the remote object. +1. Determining if a remote object needs to be renewed again, setting the [`ephemeral.RenewResponse.RenewAt` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#RenewResponse.RenewAt) to indicate to Terraform when to call the provider [`Renew`](/terraform/plugin/framework/ephemeral-resources/renew) method. +1. [Writing private data](/terraform/plugin/framework/resources/private-state#saving-private-state-data) needed to `Renew` or `Close` the ephemeral resource to the [`ephemeral.RenewResponse.Private` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#RenewResponse.Private). + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can be added into the [`ephemeral.RenewResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#RenewResponse.Diagnostics). + +In this example, an ephemeral resource named `examplecloud_thing` with hardcoded behavior is defined. It indicates a renewal should occur 5 minutes from when either the `Open` or `Renew` method is executed: + +```go +var _ ephemeral.EphemeralResourceWithRenew = (*ThingEphemeralResource)(nil) + +// ThingEphemeralResource defines the ephemeral resource implementation, which also implements Renew. +type ThingEphemeralResource struct{} + +type ThingEphemeralResourceModel struct { + Name types.String `tfsdk:"name"` + Token types.String `tfsdk:"token"` +} + +type ThingPrivateData struct { + Name string `json:"name"` +} + +func (e *ThingEphemeralResource) Schema(ctx context.Context, req ephemeral.SchemaRequest, resp *ephemeral.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + Description: "Name of the thing to retrieve a token for.", + Required: true, + }, + "token": schema.StringAttribute{ + Description: "Token for the thing.", + Computed: true, + }, + }, + } +} + +func (e *ThingEphemeralResource) Open(ctx context.Context, req ephemeral.OpenRequest, resp *ephemeral.OpenResponse) { + var data ThingEphemeralResourceModel + + // Read Terraform config data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + // Typically ephemeral resources will make external calls and reference returned data, + // however this example hardcodes the setting of result and private data for brevity. + data.Token = types.StringValue("token-123") + + // Renew 5 minutes from now + resp.RenewAt = time.Now().Add(5 * time.Minute) + + // When renewing, pass along this data (error handling omitted for brevity). + privateData, _ := json.Marshal(ThingPrivateData{Name: data.Name.ValueString()}) + resp.Private.SetKey(ctx, "thing_data", privateData) + + // Save data into ephemeral result data + resp.Diagnostics.Append(resp.Result.Set(ctx, &data)...) +} + +func (e *ThingEphemeralResource) Renew(ctx context.Context, req ephemeral.RenewRequest, resp *ephemeral.RenewResponse) { + privateBytes, _ := req.Private.GetKey(ctx, "thing_data") + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + // Unmarshal private data (error handling omitted for brevity). + var privateData ThingPrivateData + json.Unmarshal(privateBytes, &privateData) + + // Perform external call to renew "thing" data + + // Renew again in 5 minutes + resp.RenewAt = time.Now().Add(5 * time.Minute) + + // If needed, you can also set new `Private` data on the response. +} +``` + +## Recommendations + +* When setting the `RenewAt` response field, add extra time (usually no more than a few minutes) before an ephemeral resource expires to account for latency. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/validate-configuration.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/validate-configuration.mdx new file mode 100644 index 0000000000..242dd4cfc0 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/ephemeral-resources/validate-configuration.mdx @@ -0,0 +1,86 @@ +--- +page_title: Validate ephemeral resource configurations +description: >- + Learn how to validate ephemeral resource configurations with the Terraform + plugin framework. +--- + +# Validate ephemeral resource configurations + +[Ephemeral resources](/terraform/plugin/framework/ephemeral-resources) support validating an entire practitioner configuration in either declarative or imperative logic. Feedback, such as required syntax or acceptable combinations of values, is returned via [diagnostics](/terraform/plugin/framework/diagnostics). + +This page describes implementation details for validating entire ephemeral resource configurations, typically referencing multiple attributes. Further documentation is available for other configuration validation concepts: + +- [Single attribute validation](/terraform/plugin/framework/validation#attribute-validation) is a schema-based mechanism for implementing attribute-specific validation logic. +- [Type validation](/terraform/plugin/framework/validation#type-validation) is a schema-based mechanism for implementing reusable validation logic for any attribute using the type. + +-> Configuration validation in Terraform occurs without provider configuration ("offline"), therefore the ephemeral resource `Configure` method will not have been called. To implement validation with a configured API client, use logic within the `Open` method, which occurs during Terraform's planning phase when possible. + +## ConfigValidators Method + +The [`ephemeral.EphemeralResourceWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithConfigValidators) follows a similar pattern to attribute validation and allows for a more declarative approach. This enables consistent validation logic across multiple ephemeral resources. Each validator intended for this interface must implement the [`ephemeral.ConfigValidator` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#ConfigValidator). + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider `ValidateEphemeralResourceConfig` RPC, in which the framework calls the `ConfigValidators` method on ephemeral resources that implement the [`ephemeral.EphemeralResourceWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithConfigValidators). + +The [`terraform-plugin-framework-validators` Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) has a collection of common use case ephemeral resource configuration validators in the [`ephemeralvalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/ephemeralvalidator). These use [path expressions](/terraform/plugin/framework/path-expressions) for matching attributes. + +This example will raise an error if a practitioner attempts to configure both `attribute_one` and `attribute_two`: + +```go +// Other methods to implement the ephemeral.EphemeralResource interface are omitted for brevity +type ThingEphemeralResource struct {} + +func (d ThingEphemeralResource) ConfigValidators(ctx context.Context) []ephemeral.ConfigValidator { + return []ephemeral.ConfigValidator{ + ephemeralvalidator.Conflicting( + path.MatchRoot("attribute_one"), + path.MatchRoot("attribute_two"), + ), + } +} +``` + +## ValidateConfig Method + +The [`ephemeral.EphemeralResourceWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithValidateConfig) is more imperative in design and is useful for validating unique functionality across multiple attributes that typically applies to a single ephemeral resource. + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider `ValidateEphemeralResourceConfig` RPC, in which the framework calls the `ValidateConfig` method on providers that implement the [`ephemeral.EphemeralResourceWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResourceWithValidateConfig). + +This example will raise a warning if a practitioner attempts to configure `attribute_one`, but not `attribute_two`: + +```go +// Other methods to implement the ephemeral.EphemeralResource interface are omitted for brevity +type ThingEphemeralResource struct {} + +type ThingEphemeralResourceModel struct { + AttributeOne types.String `tfsdk:"attribute_one"` + AttributeTwo types.String `tfsdk:"attribute_two"` +} + +func (d ThingEphemeralResource) ValidateConfig(ctx context.Context, req ephemeral.ValidateConfigRequest, resp *ephemeral.ValidateConfigResponse) { + var data ThingEphemeralResourceModel + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + // If attribute_one is not configured, return without warning. + if data.AttributeOne.IsNull() || data.AttributeOne.IsUnknown() { + return + } + + // If attribute_two is not null, return without warning. + if !data.AttributeTwo.IsNull() { + return + } + + resp.Diagnostics.AddAttributeWarning( + path.Root("attribute_two"), + "Missing Attribute Configuration", + "Expected attribute_two to be configured with attribute_one. "+ + "The ephemeral resource may return unexpected results.", + ) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/concepts.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/concepts.mdx new file mode 100644 index 0000000000..23835d778b --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/concepts.mdx @@ -0,0 +1,68 @@ +--- +page_title: Provider-defined functions +description: >- + Learn how provider-defined functions enable Terraform providers to define + functions for practitions to use in their Terraform configurations. +--- + +# Provider-defined functions + +This page describes Terraform concepts relating to provider-defined functions within framework-based provider code. Provider-defined functions are supported in Terraform 1.8 and later. The [What is Terraform](/terraform/intro), [Terraform language](/terraform/language), and [Plugin Development](/terraform/plugin) documentation covers more general concepts behind Terraform's workflow, its configuration, and how it interacts with providers. + +## Purpose + +The purpose of provider-defined functions is to encapsulate offline, computational logic beyond Terraform's built-in functions to simplify practitioner configurations. Terraform expects that provider-defined functions are implemented without side-effects and as pure functions where given the same input data that they always return the same output. Refer to [HashiCorp Provider Design Principles](/terraform/plugin/best-practices/hashicorp-provider-design-principles) for additional best practice details. + +Example use cases include: + +* Transforming existing data, such as merging complex data structures using a specific algorithm or converting between encodings. +* Parsing combined data into individual, referenceable components, such as taking an Amazon Resource Name (ARN) and returning an object of region, account identifier, etc. attributes. +* Building combined data from individual components, such as returning an Amazon Resource Name (ARN) based on given region, account identifier, etc. data. +* Static data lookups when there is no remote system query available, such as returning a data value typically necessary for a practitioner configuration. + +Differences from other provider-defined concepts include: + +* [Data Sources](/terraform/plugin/framework/data-sources): Intended to perform online or provider configuration dependent data lookup, which participate in Terraform's operational graph. +* [Resources](/terraform/plugin/framework/resources): Intended to manage the full lifecycle (create, update, destroy) of a remote system component, which participate in Terraform's operational graph. + +## Terminology + +There are two main components of provider-defined functions: + +* **Definition**: Defines the expected input and output data along with documentation descriptions. +* **Call**: When a practioner configuration causes a function's logic to be run. + +Within a function definition the components are: + +* **Parameters**: An ordered list of definitions for input data. + * **Variadic Parameter**: An optional, final parameter which accepts zero, one, or multiple parts of input data. +* **Return**: The definition for output data. + +Similar to many programming languages, when the function is called, the terminology for the data is slightly different than the terminology for the definition. + +* **Arguments**: Positionally ordered data based on the definitions of the parameters. +* **Result**: Data based on the definition of the return. + +## Implementation Overview + +For each provider listed as a [required provider](/terraform/language/providers/requirements), Terraform will query the provider for its function definitions. If a configuration attempts to call a provider-defined function without listing the provider as required, Terraform will return an error. + +Terraform will typically call functions before other provider concepts are evaluated. This includes before provider configuration being evaluated, which the framework enforces by not exposing provider configuration data to function implementations. + +### Naming + +Terraform requires that function names must be valid [identifiers](/terraform/language/syntax/configuration#identifiers). + +### Argument Handling + +Terraform will statically validate that the number and types of arguments in a configuration match the definitions of parameters, otherwise returning an error. + +If a null value is given as an argument, without individual parameter definition opt-in, Terraform will return an error. If an unknown value is given as an argument, without individual parameter definition opt-in, Terraform will skip calling the provider logic entirely and set the function result to an unknown value matching the return type. + +### Result Handling + +Terraform will statically validate that the return type is appropriately used in consuming configuration, otherwise returning an error. + +Function logic must always set the result to the return type, otherwise Terraform will return an error. + +Function logic can only set the result to an unknown value if there is a parameter that opted into unknown value handling and an unknown value argument was received for one of those parameters. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/documentation.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/documentation.mdx new file mode 100644 index 0000000000..fd731ae0f7 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/documentation.mdx @@ -0,0 +1,122 @@ +--- +page_title: Documenting functions +description: >- + Learn how to document provider-defined functions with the Terraform plugin + framework. +--- + +# Documenting functions + +When a function is [implemented](/terraform/plugin/framework/functions/implementation), ensure the function is discoverable by practitioners with usage information. + +There are two main components for function documentation: + +* [Implementation-Based Documentation](#implementation-based-documentation): Exposes function documentation to Terraform and downstream tooling, such as practitioner configuration editor integrations. +* [Registry-Based Documentation](#registry-based-documentation): Exposes function documentation to the [Terraform Registry](https://registry.terraform.io) when the [provider is published](/terraform/registry/providers/publishing), making it displayed and discoverable on the web. + +## Implementation-Based Documentation + +Add documentation directly inside the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). All implementation-based documentation is passed to Terraform, which downstream tooling such as pracitioner configuration editor integrations will automatically display. + +### Definition + +The [`function.Definition` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Definition) implements the following fields: + +| Field Name | Description | +|---|---| +| `Summary` | A short description of the function and its return, preferably a single sentence. | +| `Description` | Longer documentation about the function, its return, and pertinent implementation details in plaintext format. | +| `MarkdownDescription` | Longer documentation about the function, its return, and pertinent implementation details in Markdown format. | + +If there are no description formatting differences, set only one of `Description` or `MarkdownDescription`. When Terraform has not sent a preference for the description formatting, the framework will return `MarkdownDescription` if both are defined. + +In this example, the function definition sets summary and description documentation: + +```go +func (f *CidrContainsIpFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Summary: "Check if a network CIDR contains an IP", + Description: "Returns a boolean whether a RFC4632 CIDR contains an IP address", + } +} +``` + +### Parameters + +Each [parameter type](/terraform/plugin/framework/functions/parameters), whether in the definition `Parameters` or `VariadicParameter` field, implements the following fields: + +| Field Name | Description | +|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| `Name` | **Required**: Single word or abbreviation of parameter for function signature generation. If name is not provided, a runtime error will be generated. | +| `Description` | Documentation about the parameter and its expected values in plaintext format. | +| `MarkdownDescription` | Documentation about the parameter and its expected values in Markdown format. | + +The name must be unique in the context of the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). It is used for documentation purposes and displayed in error diagnostics presented to practitioners. The name should delineate the purpose of the parameter, especially to disambiguate between multiple parameters, such as the words `cidr` and `ip` in a generated function signature like `cidr_contains_ip(cidr string, ip string) bool`. + +If there are no description formatting differences, set only one of `Description` or `MarkdownDescription`. When Terraform has not sent a preference for the description formatting, the framework will return `MarkdownDescription` if both are defined. + +In this example, the function parameters set name and description documentation: + +```go +func (f *CidrContainsIpFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Parameters: []function.Parameter{ + function.StringParameter{ + Name: "cidr", + Description: "RFC4632 CIDR to check whether it contains the given IP address", + }, + function.StringParameter{ + Name: "ip", + Description: "IP address to check whether its contained in the RFC4632 CIDR", + }, + }, + } +} +``` + +## Registry-Based Documentation + +Add Markdown documentation files in conventional provider codebase locations before [publishing](/terraform/registry/providers/publishing) to the [Terraform Registry](https://registry.terraform.io). The documentation is displayed and discoverable on the web. These files can be manually created or automatically generated using tooling such as [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs). + +The [Registry provider documentation](/terraform/registry/providers/docs) covers the overall requirements, conventional file layout details, and how to enable additional features such as sub-categories for the navigation sidebar. Function documentation for most providers is expected under the `docs/functions/` directory with a file named after the function and with the extension `.md`. Older providers using the legacy file layout use `website/docs/functions/` and `.html.md`. + +Functions are conventionally documented with the following: + +* Description +* Example Usage +* Signature +* Arguments + +In this example, a `docs/functions/contains_ip.md` file (either manually or automatically created) will be displayed in the Terraform Registry after provider publishing: + +``````plain +--- +page_title: contains_ip Function - terraform-provider-cidr +description: |- + Returns a boolean whether a RFC4632 CIDR contains an IP address. +--- + +# Function: contains_ip + +Returns a boolean whether a RFC4632 CIDR contains an IP address. + +## Example Usage + +```terraform +# result: true +provider::cidr::contains_ip("10.0.0.0/8", "10.0.0.1") +``` + +## Signature + +```text +contains_ip(cidr string, ip string) bool +``` + +## Arguments + +1. `cidr` (String) RFC4632 CIDR to check whether it contains the given IP address. +2. `ip` (String) IP address to check whether its contained in the RFC4632 CIDR. +`````` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/errors.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/errors.mdx new file mode 100644 index 0000000000..64dc74931c --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/errors.mdx @@ -0,0 +1,162 @@ +--- +page_title: Returning errors from functions +description: >- + Learn how to return errors from provider-defined functions with the Terraform + plugin framework. +--- + +# Returning errors from function + +Providers use [`FuncError`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#FuncError) to +surface a practitioner-facing error generated during execution of provider-defined functions. These errors are +returned from Terraform CLI at the end of command output: + +```console +$ terraform plan +# ... other plan output ... +╷ +│ Error: Error in function call +│ +│ on example.tf line #: +│ #: source configuration line +│ +│ Call to function "{FUNCTION}" failed: {TEXT}. +``` + +```console +$ terraform plan +# ... other plan output ... +╷ +│ Error: Invalid function argument +│ +│ on example.tf line #: +│ #: source configuration line +│ +│ Invalid value for "{PARAMETER_NAME}" parameter: {TEXT}. +``` + +In the framework, you may encounter them in response structs or as returns from +provider-defined function execution.: + +```go +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { +``` + +This is the most common form for `FuncError`: a single error whose text +is the concatenated error text from one or more errors. This approach allows +your provider to inform practitioners about all relevant errors at the same +time, allowing practitioners to fix their configuration or environment more +quickly. You should only concatenate a `FuncError` and never replace or +remove information it. + +The next section will detail the concepts and typical behaviors of +function error, while the final section will outline the typical methods for +working with function error, using functionality from the available +[`function` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function). + +## Function Error Concepts + +### Text + +`Text` is a practitioner-oriented description of the problem. This should +contain sufficient detail to provide both general and more specific information +regarding the issue. For example "Error executing function: foo can only contain +letters, numbers, and digits." + +### FunctionArgument + +`FunctionArgument` is a zero-based, int64 value that identifies the specific +function argument position that caused the error. Only errors that pertain +to a function argument will include this information. + +### Working With Existing Function Errors + +#### ConcatFuncErrors + +When receiving `function.FuncError` from a function or method, such as +`Run()`, these should typically be concatenated with the +response function error for the method. This can be accomplished with the +[`ConcatFuncErrors(in ...*FuncError)` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ConcatFuncErrors). + +For example: + +```go +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var boolArg bool + var stringArg string + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &boolArg, &stringArg)) + + // ... other logic ... +} +``` + +This method automatically ignores `nil` function errors. + +### Creating Function Errors + +To craft the message of a function error, it is recommended to use sufficient +detail to convey both the cause of the error and as much contextual, +troubleshooting, and next action information as possible. These details can +use newlines for easier readability where necessary. + +#### NewFuncError + +When creating function errors where a `function.FunctionError` is already available, +such as within a response type, the [`ConcatFuncErrors(in ...*FuncError)` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#NewFuncError.AddError) +can be used with the [`NewFuncError(text string)` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#NewFuncError) to concatenate a new +function error. + +For example: + +```go +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... prior logic ... + + val, err := // operation that may return an error + + if err != nil { + resp.Error = ConcatFuncErrors(resp.Error, function.NewFuncError("Error performing operation: " + err.Error())) + return + } + + // ... further logic ... +} +``` + +#### NewArgumentFuncError + +When creating function errors that affect only a single function argument, the [`NewArgumentFuncError(functionArgument int, msg string)` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#NewArgumentFuncError) +can be used in conjunction with the [`ConcatFuncErrors(in ...*FuncError)` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#NewArgumentFuncError). This provides additional context to practitioners, such as showing the specific line(s) and value(s) of configuration where possible. + +For example: + +```go +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // Add function error associated with first function argument position + resp.Error = function.ConcatFuncErrors(resp.Error, function.NewArgumentFuncError(0, "Example Error Summary: Example Error Detail")) + + // ... other logic ... +} +``` + +#### FuncErrorFromDiags + +A function error is created from diagnostics by using the [`FuncErrorFromDiags(context.Context, diag.Diagnostics)` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#FuncErrorFromDiags). The function error will contain the concatenated summary and details of error-level +diagnostics. + +~> **Note**: The [`FuncErrorFromDiags(context.Context, diag.Diagnostics)` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#FuncErrorFromDiags) does not include warning-level diagnostics in the function error. Warning-level diagnostics are logged instead. + +For example: + +```go +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + _, diags := // operation that may return diagnostics + + resp.Error = function.ConcatFuncErrors(resp.Error, function.FuncErrorFromDiags(ctx, diags)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/implementation.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/implementation.mdx new file mode 100644 index 0000000000..c811870ee2 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/implementation.mdx @@ -0,0 +1,335 @@ +--- +page_title: Implement provider-defined functions +description: >- + Learn how to implement provider-defined functions with the Terraform + plugin framework. +--- + +# Implement provider-defined functions + +The framework supports implementing functions based on Terraform's [concepts for provider-defined functions](/terraform/plugin/framework/functions/concepts). It is recommended to understand those concepts before implementing a function since the terminology is used throughout this page and there are details that simplify function handling as compared to other provider concepts. Provider-defined functions are supported in Terraform 1.8 and later. + +The main code components of a function implementation are: + +* [Defining the function](#define-function-type) including its name, expected data types, descriptions, and logic. +* [Adding the function to the provider](#add-function-to-provider) so it is accessible by Terraform and practitioners. + +Once the code is implemented, it is always recommended to also add: + +* [Testing](/terraform/plugin/framework/functions/testing) to ensure expected function behaviors. +* [Documentation](/terraform/plugin/framework/functions/documentation) to ensure the function is discoverable by practitioners with usage information. + +## Define Function Type + +Implement the [`function.Function` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Function). Each of the methods is described in more detail below. + +In this example, a function named `echo` is defined, which takes a string argument and returns that value as the result: + +```go +import ( + "github.com/hashicorp/terraform-plugin-framework/function" +) + +// Ensure the implementation satisfies the desired interfaces. +var _ function.Function = &EchoFunction{} + +type EchoFunction struct {} + +func (f *EchoFunction) Metadata(ctx context.Context, req function.MetadataRequest, resp *function.MetadataResponse) { + resp.Name = "echo" +} + +func (f *EchoFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + Summary: "Echo a string", + Description: "Given a string value, returns the same value.", + + Parameters: []function.Parameter{ + function.StringParameter{ + Name: "input", + Description: "Value to echo", + }, + }, + Return: function.StringReturn{}, + } +} + +func (f *EchoFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var input string + + // Read Terraform argument data into the variable + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &input)) + + // Set the result to the same data + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, input)) +} +``` + +### Metadata Method + +The [`function.Function` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Function.Metadata) defines the function name as it would appear in Terraform configurations. Unlike resources and data sources, this name should **NOT** include the provider name as the configuration language syntax for calling functions will separately include the provider name. Refer to [naming](/terraform/plugin/best-practices/naming) for additional best practice details. + +In this example, the function name is set to `example`: + +```go +// With the function.Function implementation +func (f *ExampleFunction) Metadata(ctx context.Context, req function.MetadataRequest, resp *function.MetadataResponse) { + resp.Name = "example" +} +``` + +### Definition Method + +The [`function.Function` interface `Definition` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Function.Definition) defines the parameters, return, and various descriptions for documentation of the function. + +In this example, the function definition includes one string parameter, a string return, and descriptions for documentation: + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + Summary: "Echo a string", + Description: "Given a string value, returns the same value.", + + Parameters: []function.Parameter{ + function.StringParameter{ + Description: "Value to echo", + Name: "input", + }, + }, + Return: function.StringReturn{}, + } +} +``` + +#### Return + +The `Return` field must be defined as all functions must return a result. This influences how the [Run method](#run-method) must set the result data. Refer to the [returns](/terraform/plugin/framework/functions/returns) documentation for details about all available types and how to handle data with each type. + +#### Parameters + +There may be zero or more parameters, which are defined with the `Parameters` field. They are ordered, which influences how practitioners call the function in their configurations and how the [Run method](#run-method) must read the argument data. Refer to the [parameters](/terraform/plugin/framework/functions/parameters) documentation for details about all available types and how to handle data with each type. + +An optional `VariadicParameter` field enables a final variadic parameter which accepts zero, one, or more values of the same type. It may be optionally combined with `Parameters`, meaning it represents the any argument data after the final parameter. When reading argument data, a `VariadicParameter` is represented as a tuple, with each element matching the parameter type; the tuple has zero or more elements to match the given arguments. + +By default, Terraform will not pass null or unknown values to the provider logic when a function is called. Within each parameter, use the `AllowNullValue` and/or `AllowUnknownValues` fields to explicitly allow those kinds of values. Enabling `AllowNullValue` requires using a pointer type or [framework type](/terraform/plugin/framework/handling-data/types) when reading argument data. Enabling `AllowUnknownValues` requires using a [framework type](/terraform/plugin/framework/handling-data/types) when reading argument data. + +#### Documentation + +The [function documentation](/terraform/plugin/framework/functions/documentation) page describes how to implement documentation so it is available to Terraform, downstream tooling such as practitioner configuration editor integrations, and in the [Terraform Registry](https://registry.terraform.io). + +#### Deprecation + +If a function is being deprecated, such as for future removal, the `DeprecationMessage` field should be set. The message should be actionable for practitioners, such as telling them what to do with their configuration instead of calling this function. + +### Run Method + +The [`function.Function` interface `Run` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Function.Run) defines the logic that is invoked when Terraform calls the function. Only argument data is provided when a function is called. Refer to [HashiCorp Provider Design Principles](/terraform/plugin/best-practices/hashicorp-provider-design-principles) for additional best practice details. + +Implement the `Run` method by: + +1. Creating variables for argument data, based on the parameter definitions. Refer to the [parameters](/terraform/plugin/framework/functions/parameters) documentation for details about all available parameter types and how to handle data with each type. +1. Reading argument data from the [`function.RunRequest.Arguments` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#RunRequest.Arguments). +1. Performing any computational logic. +1. Setting the result value, based on the return definition, into the [`function.RunResponse.Result` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#RunResponse.Result). Refer to the [returns](/terraform/plugin/framework/functions/returns) documentation for details about all available return types and how to handle data with each type. + +If the logic needs to return a [function error](/terraform/plugin/framework/functions/errors), it can be added into the [`function.RunResponse.Error` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#RunResponse.Error). + +### Reading Argument Data + +The framework supports two methodologies for reading argument data from the [`function.RunRequest.Arguments` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#RunRequest.Arguments), which is of the [`function.ArgumentsData` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ArgumentsData). + +The first option is using the [`(function.ArgumentsData).Get()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ArgumentsData.Get) to read all arguments at once. The framework will return an error if the number and types of target variables does not match the argument data. + +In this example, the parameters are defined as a boolean and string which are read into Go built-in `bool` and `string` variables since they do not opt into null or unknown value handling: + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Parameters: []function.Parameter{ + function.BoolParameter{ + Name: "bool_param", + // ... other fields ... + }, + function.StringParameter{ + Name: "string_param", + // ... other fields ... + }, + }, + } +} + +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var boolArg bool + var stringArg string + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &boolArg, &stringArg)) + + // ... other logic ... +} +``` + +The second option is using [`(function.ArgumentsData).GetArgument()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ArgumentsData.GetArgument) to read individual arguments. The framework will return an error if the argument position does not exist or if the type of the target variable does not match the argument data. + +In this example, the parameters are defined as a boolean and string and the first argument is read into a Go built-in `bool` variable since it does not opt into null or unknown value handling: + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Parameters: []function.Parameter{ + function.BoolParameter{ + Name: "bool_param", + // ... other fields ... + }, + function.StringParameter{ + Name: "string_param", + // ... other fields ... + }, + }, + } +} + +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var boolArg bool + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.GetArgument(ctx, 0, &boolArg)) + + // ... other logic ... +} +``` + +#### Reading Variadic Parameter Argument Data + +The optional `VariadicParameter` field in a function definition enables a final variadic parameter which accepts zero, one, or more values of the same type. It may be optionally combined with `Parameters`, meaning it represents the argument data after the final parameter. When reading argument data, a `VariadicParameter` is represented as a tuple, with each element matching the parameter type; the tuple has zero or more elements to match the given arguments. + +Use either the [framework tuple type](/terraform/plugin/framework/handling-data/types/tuple) or a Go slice of an appropriate type to match the variadic parameter `[]T`. + +In this example, there is a boolean parameter and string variadic parameter, where the variadic parameter argument data is always fetched as a slice of `string`: + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Parameters: []function.Parameter{ + function.BoolParameter{ + Name: "bool_param", + // ... other fields ... + }, + }, + VariadicParameter: function.StringParameter{ + Name: "variadic_param", + // ... other fields ... + }, + } +} + +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var boolArg bool + var stringVarg []string + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &boolArg, &stringVarg)) + + // ... other logic ... +} +``` + +If it is necessary to return a [function error](/terraform/plugin/framework/functions/errors) for a specific variadic argument, note that Terraform treats each zero-based argument position individually unlike how the framework exposes the argument data. Add the number of non-variadic parameters (if any) to the variadic argument tuple element index to ensure the error is aligned to the correct argument in the configuration. + +In this example with two parameters and one variadic parameter, an error is returned for variadic arguments: + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Parameters: []function.Parameter{ + function.BoolParameter{ + Name: "bool_param", + // ... other fields ... + }, + function.Int64Parameter{ + Name: "int64_param", + // ... other fields ... + }, + }, + VariadicParameter: function.StringParameter{ + Name: "variadic_param", + // ... other fields ... + }, + } +} + +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var boolArg bool + var int64Arg int64 + var stringVarg []string + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &boolArg, &int64arg, &stringVarg)) + + for index, element := range stringVarg { + // Added by 2 to match the definition including two parameters. + resp.Error = function.ConcatFuncErrors(resp.Error, function.NewArgumentFuncError(2+index, "example summary: example detail")) + } + + // ... other logic ... +} +``` + +### Setting Result Data + +The framework supports setting a result value into the [`function.RunResponse.Result` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#RunResponse.Result), which is of the [`function.ResultData` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ResultData). The result value must match the return type, otherwise the framework or Terraform will return an error. + +In this example, the return is defined as a string and a string value is set: + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other fields ... + Return: function.StringReturn{}, + } +} + +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // Value based on the return type. Returns can also use the framework type system. + result := "hardcoded example" + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, result)) +} +``` + +## Add Function to Provider + +Functions become available to practitioners when they are included in the [provider](/terraform/plugin/framework/providers) implementation via the [`provider.ProviderWithFunctions` interface `Functions` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithFunctions.Functions). + +In this example, the `EchoFunction` type, which implements the `function.Function` interface, is added to the provider implementation: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Functions(_ context.Context) []func() function.Function { + return []func() function.Function{ + func() function.Function { + return &EchoFunction{}, + }, + } +} +``` + +To simplify provider implementations, a named function can be created with the function implementation. + +In this example, the `EchoFunction` code includes an additional `NewEchoFunction` function, which simplifies the provider implementation: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Functions(_ context.Context) []func() function.Function { + return []func() function.Function{ + NewEchoFunction, + } +} + +// With the function.Function implementation +func NewEchoFunction() function.Function { + return &EchoFunction{} +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/index.mdx new file mode 100644 index 0000000000..193c4ea1fa --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/index.mdx @@ -0,0 +1,34 @@ +--- +page_title: Provider-defined functions overview +description: >- + Provider-defined functions expose logic beyond Terraform's built-in functions + that practitioners can use to simplify Terraform configurations. Learn how the + plugin framework can help you implement provider-defined functions. +--- + + +# Provider-defined functions + +Functions are an abstraction that allow providers to expose computational logic beyond Terraform's [built-in functions](/terraform/language/functions) and simplify practitioner configurations. Provider-defined functions are supported in Terraform 1.8 and later. + + + +It is possible to add functions to an existing provider. If you do not have an existing provider, you will need to create your own provider to contain the functions. Please see [Getting Started - Code Walkthrough](/terraform/plugin/framework/getting-started/code-walkthrough) to learn how to create your first provider. + + + +## Concepts + +Learn about Terraform's [concepts](/terraform/plugin/framework/functions/concepts) for provider-defined functions, such as intended purpose, example use cases, and terminology. The framework's implementation details, such as naming, are based on these concepts. + +## Implementation + +Learn about how to [implement code](/terraform/plugin/framework/functions/implementation) for a provider-defined function in the framework. + +## Testing + +Learn about how to ensure a provider-defined function implementation works as expected via [unit testing and acceptance testing](/terraform/plugin/framework/functions/testing). + +## Documentation + +Learn about how to [document](/terraform/plugin/framework/functions/documentation) a provider-defined function implementation so practitioners can discover and use the function. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/bool.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/bool.mdx new file mode 100644 index 0000000000..3bf6875623 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/bool.mdx @@ -0,0 +1,95 @@ +--- +page_title: Boolean function parameters +description: >- + Learn how to use the boolean function parameter type with the Terraform + plugin framework. +--- + +# Boolean function parameters + +Bool function parameters expect a boolean true or false value from a practitioner configuration. Values are accessible in function logic by the Go built-in `bool` type, Go built-in `*bool` type, or the [framework bool type](/terraform/plugin/framework/handling-data/types/bool). + +In this Terraform configuration example, a bool parameter is set to the value `true`: + +```hcl +provider::example::example(true) +``` + +## Function Definition + +Use the [`function.BoolParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#BoolParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a bool value. + +In this example, a function definition includes a first position bool parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.BoolParameter{ + Name: "example", + // ... potentially other BoolParameter fields ... + }, + }, + } +} +``` + +If the bool value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework bool type](/terraform/plugin/framework/handling-data/types/bool). Refer to the collection parameter type documentation for additional details. + +If the bool value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework bool type](/terraform/plugin/framework/handling-data/types/bool). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework bool type](/terraform/plugin/framework/handling-data/types/bool) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework bool type](/terraform/plugin/framework/handling-data/types/bool) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework bool type](/terraform/plugin/framework/handling-data/types/bool). +* If `AllowNullValue` is enabled, you must use the Go built-in `*bool` type or [framework bool type](/terraform/plugin/framework/handling-data/types/bool). +* Otherwise, use the Go built-in `bool` type, Go built-in `*bool` type, or [framework bool type](/terraform/plugin/framework/handling-data/types/bool). + +In this example, a function defines a single bool parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.BoolParameter{ + Name: "bool_param", + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var boolArg bool + // var boolArg *bool // e.g. with AllowNullValue, where Go nil equals Terraform null + // var boolArg types.Bool // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &boolArg)) + + // boolArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/dynamic.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/dynamic.mdx new file mode 100644 index 0000000000..e088e5c55a --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/dynamic.mdx @@ -0,0 +1,177 @@ +--- +page_title: Dynamic function parameters +description: >- + Learn how to use dynamic fynction paramters with the Terraform plugin + framework. +--- + +# Dynamic function parameters + + + +Static types should always be preferred over dynamic types, when possible. + +Developers creating a function with a dynamic parameter will need to have extensive knowledge of the [Terraform type system](/terraform/language/expressions/types), as no type conversion will be performed to incoming argument data. + +Refer to [Dynamic Data - Considerations](/terraform/plugin/framework/handling-data/dynamic-data#considerations) for more information. + + + +Dynamic function parameters can receive **any** value type from a practitioner configuration. Values are accessible in function logic by the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic). + +In this Terraform configuration example, a dynamic parameter is set to the boolean value `true`: + +```hcl +provider::example::example(true) +``` + +In this example, the same dynamic parameter is set to a tuple (not a list) of string values `one` and `two`: + +```hcl +provider::example::example(["one", "two"]) +``` + +In this example, the same dynamic parameter is set to an object type with mapped values of `attr1` to `"value1"` and `attr2` to `123`: + +```hcl +provider::example::example({ + attr1 = "value1", + attr2 = 123, +}) +``` + +## Function Definition + +Use the [`function.DynamicParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#DynamicParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a dynamic value. + +In this example, a function definition includes a first position dynamic parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.DynamicParameter{ + Name: "dynamic_param", + // ... potentially other DynamicParameter fields ... + }, + }, + } +} +``` + +Dynamic values are not supported as the element type of a [collection type](/terraform/plugin/framework/handling-data/types#collection-types) or within [collection parameter types](/terraform/plugin/framework/functions/parameters#collection-parameter-types). + +If the dynamic value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + + + +A known dynamic value with an underlying value that contains nulls (such as a list with null element values) will always be sent to the function logic, regardless of the `AllowNullValue` setting. Data handling must always account for this situation. + + + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* Otherwise, you must use the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic). + +In this example, a function defines a single dynamic parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.DynamicParameter{ + Name: "dynamic_param", + // ... potentially other DynamicParameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var dynamicArg types.Dynamic + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &dynamicArg)) + + // dynamicArg is now populated + // ... other logic ... +} +``` + +For more detail on working with dynamic values, see the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic) documentation. + +## Using Dynamic as a Variadic Parameter + +Utilizing `function.DynamicParameter` in the [`VariadicParameter`](/terraform/plugin/framework/functions/implementation#reading-variadic-parameter-argument-data) field will allow zero, one, or more values of **potentially different** types. + +To handle this scenario of multiple values with different types, utilize [`types.Tuple`](/terraform/plugin/framework/handling-data/types/tuple) or [`[]types.Dynamic`](/terraform/plugin/framework/handling-data/types/dynamic) when reading a dynamic variadic argument. + +```go +func (f *ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + VariadicParameter: function.DynamicParameter{ + Name: "variadic_param", + }, + } +} + +func (f *ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var dynValues []types.Dynamic + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &dynValues)) + if resp.Error != nil { + return + } + + for _, dynValue := range dynValues { + if dynValue.IsNull() || dynValue.IsUnknown() { + continue + } + // ... do something with argument value, i.e. dynValue.UnderlyingValue() ... + } + + // ... other logic ... +} + +``` + +In these Terraform configuration examples, the function variadic argument will receive the following value types: + +```hcl +# []types.Dynamic{} +provider::example::example() + +# []types.Dynamic{types.String} +provider::example::example("hello world") + +# []types.Dynamic{types.Bool, types.Number} +provider::example::example(true, 1) + +# []types.Dynamic{types.String, types.Tuple[types.String, types.String], types.List[types.String]} +provider::example::example("hello", ["one", "two"], tolist(["one", "two"])) +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float32.mdx new file mode 100644 index 0000000000..423df0cb2c --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float32.mdx @@ -0,0 +1,102 @@ +--- +page_title: Float32 function parameters +description: >- + Learn how to use the 32-bit floating point function parameter type with the + Terraform plugin framework. +--- + +# Float32 Function Parameter + + + +Use [Int32 Parameter](/terraform/plugin/framework/functions/parameters/int32) for 32-bit integer numbers. Use [Number Parameter](/terraform/plugin/framework/functions/parameters/number) for arbitrary precision numbers. + + + +Float32 function parameters expect a 32-bit floating point number value from a practitioner configuration. Values are accessible in function logic by the Go built-in `float32` type, Go built-in `*float32` type, or the [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). + +In this Terraform configuration example, a float32 parameter is set to the value `1.23`: + +```hcl +provider::example::example(1.23) +``` + +## Function Definition + +Use the [`function.Float32Parameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Float32Parameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a float32 value. + +In this example, a function definition includes a first position float32 parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Float32Parameter{ + Name: "float32_param", + // ... potentially other Float32Parameter fields ... + }, + }, + } +} +``` + +If the float32 value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). Refer to the collection parameter type documentation for additional details. + +If the float32 value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework float32 type](/terraform/plugin/framework/handling-data/types/float32) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework float32 type](/terraform/plugin/framework/handling-data/types/float32) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). +* If `AllowNullValue` is enabled, you must use the Go built-in `*float32` type or [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). +* Otherwise, use the Go built-in `float32` type, Go built-in `*float32` type, or [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). + +In this example, a function defines a single float32 parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Float32Parameter{ + Name: "float32_param", + // ... potentially other Float32Parameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var float32Arg float32 + // var float32Arg *float32 // e.g. with AllowNullValue, where Go nil equals Terraform null + // var float32Arg types.Float32 // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &float32Arg)) + + // float32Arg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float64.mdx new file mode 100644 index 0000000000..7dbe213ac4 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/float64.mdx @@ -0,0 +1,102 @@ +--- +page_title: Float64 function parameters +description: >- + Learn how to use the 64-bit floating point function parameter type with the + Terraform plugin framework. +--- + +# Float64 function parameters + + + +Use [Int64 Parameter](/terraform/plugin/framework/functions/parameters/int64) for 64-bit integer numbers. Use [Number Parameter](/terraform/plugin/framework/functions/parameters/number) for arbitrary precision numbers. + + + +Float64 function parameters expect a 64-bit floating point number value from a practitioner configuration. Values are accessible in function logic by the Go built-in `float64` type, Go built-in `*float64` type, or the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). + +In this Terraform configuration example, a float64 parameter is set to the value `1.23`: + +```hcl +provider::example::example(1.23) +``` + +## Function Definition + +Use the [`function.Float64Parameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Float64Parameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a float64 value. + +In this example, a function definition includes a first position float64 parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Float64Parameter{ + Name: "float64_param", + // ... potentially other Float64Parameter fields ... + }, + }, + } +} +``` + +If the float64 value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). Refer to the collection parameter type documentation for additional details. + +If the float64 value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework float64 type](/terraform/plugin/framework/handling-data/types/float64) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). +* If `AllowNullValue` is enabled, you must use the Go built-in `*float64` type or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). +* Otherwise, use the Go built-in `float64` type, Go built-in `*float64` type, or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). + +In this example, a function defines a single float64 parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Float64Parameter{ + Name: "float64_param", + // ... potentially other Float64Parameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var float64Arg float64 + // var float64Arg *float64 // e.g. with AllowNullValue, where Go nil equals Terraform null + // var float64Arg types.Float64 // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &float64Arg)) + + // float64Arg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/index.mdx new file mode 100644 index 0000000000..76b4e6ed2f --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/index.mdx @@ -0,0 +1,130 @@ +--- +page_title: Function parameters +description: >- + The Terraform plugin framework includes multiple built-in function parameter + types and supports dynamic parameters. Parameters are positional data + arguments in a function definition. +--- + +# Function parameters + +Parameters in [function definitions](/terraform/plugin/framework/functions/implementation#definition-method) describes how data values are passed to the function logic. Every parameter type has an associated [value type](/terraform/plugin/framework/handling-data/types), although this data handling is simplified for function implementations over other provider concepts, such as resource implementations. + +## Available Parameter Types + +Function definitions support the following parameter types: + +- [Primitive](#primitive-parameter-types): Parameter that accepts a single value, such as a boolean, number, or string. +- [Collection](#collection-parameter-types): Parameter that accepts multiple values of a single element type, such as a list, map, or set. +- [Object](#object-parameter-type): Parameter that accepts a structure of explicit attribute names. +- [Dynamic](#dynamic-parameter-type): Parameter that accepts any value type. + +### Primitive Parameter Types + +Parameter types that accepts a single data value, such as a boolean, number, or string. + +| Parameter Type | Use Case | +|----------------|----------| +| [Bool](/terraform/plugin/framework/functions/parameters/bool) | Boolean true or false | +| [Float32](/terraform/plugin/framework/functions/parameters/float32) | 32-bit floating point number | +| [Float64](/terraform/plugin/framework/functions/parameters/float64) | 64-bit floating point number | +| [Int32](/terraform/plugin/framework/functions/parameters/int32) | 32-bit integer number | +| [Int64](/terraform/plugin/framework/functions/parameters/int64) | 64-bit integer number | +| [Number](/terraform/plugin/framework/functions/parameters/number) | Arbitrary precision (generally over 64-bit, up to 512-bit) number | +| [String](/terraform/plugin/framework/functions/parameters/string) | Collection of UTF-8 encoded characters | + +### Collection Parameter Types + +Parameter types that accepts multiple values of a single element type, such as a list, map, or set. + +| Parameter Type | Use Case | +|----------------|----------| +| [List](/terraform/plugin/framework/functions/parameters/list) | Ordered collection of single element type | +| [Map](/terraform/plugin/framework/functions/parameters/map) | Mapping of arbitrary string keys to values of single element type | +| [Set](/terraform/plugin/framework/functions/parameters/set) | Unordered, unique collection of single element type | + +### Object Parameter Type + +Parameter type that accepts a structure of explicit attribute names. + +| Parameter Type | Use Case | +|----------------|----------| +| [Object](/terraform/plugin/framework/functions/parameters/object) | Single structure mapping explicit attribute names | + +### Dynamic Parameter Type + + + +Dynamic value handling is an advanced use case. Prefer static parameter types when possible unless absolutely necessary for your use case. + + + +Parameter that accepts any value type, determined by Terraform at runtime. + +| Parameter Type | Use Case | +|----------------|----------| +| [Dynamic](/terraform/plugin/framework/functions/parameters/dynamic) | Accept any value type of data, determined at runtime. | + +## Parameter Naming + +All parameter types have a `Name` field that is **required**. + +### Missing Parameter Names + +Attempting to use unnamed parameters will generate runtime errors of the following form: + +```text +│ Error: Failed to load plugin schemas +│ +│ Error while loading schemas for plugin components: Failed to obtain provider schema: Could not load the schema for provider registry.terraform.io/cloud_provider/cloud_resource: failed to +│ retrieve schema from provider "registry.terraform.io/cloud_provider/cloud_resource": Invalid Function Definition: When validating the function definition, an implementation issue was +│ found. This is always an issue with the provider and should be reported to the provider developers. +│ +│ Function "example_function" - Parameter at position 0 does not have a name. +``` + +### Parameter Errors + +Parameter names are used in runtime errors to highlight which parameter is causing the issue. For example, using a value that is incompatible with the parameter type will generate an error message such as the following: + +```text +│ Error: Invalid function argument +│ +│ on resource.tf line 10, in resource "example_resource" "example": +│ 10: configurable_attribute = provider::example::example_function("string") +│ ├──────────────── +│ │ while calling provider::example::example_function(bool_param) +│ +│ Invalid value for "bool_param" parameter: a bool is required. +``` + +## Parameter Validation + +Validation handling for provider-defined function parameters can be enabled by using [custom types](/terraform/plugin/framework/handling-data/types/custom#validation). + +Implement the [`function.ValidateableParameter` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ValidateableParameter) on the custom value type to define and enable validation handling for a provider-defined function parameter, which will automatically raise an error when a value is determined to be invalid. + +```go +// Implementation of the function.ValidateableParameter interface +func (v CustomStringValue) ValidateParameter(ctx context.Context, req function.ValidateParameterRequest, resp *function.ValidateParameterResponse) { + if v.IsNull() || v.IsUnknown() { + return + } + + _, err := time.Parse(time.RFC3339, v.ValueString()) + + if err != nil { + resp.Error = function.NewArgumentFuncError( + req.Position, + "Invalid RFC 3339 String Value: "+ + "An unexpected error occurred while converting a string value that was expected to be RFC 3339 format. "+ + "The RFC 3339 string format is YYYY-MM-DDTHH:MM:SSZ, such as 2006-01-02T15:04:05Z or 2006-01-02T15:04:05+07:00.\n\n"+ + fmt.Sprintf("Position: %d", req.Position)+"\n"+ + "Given Value: "+v.ValueString()+"\n"+ + "Error: "+err.Error(), + ) + } +} +``` + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int32.mdx new file mode 100644 index 0000000000..de87e82b1c --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int32.mdx @@ -0,0 +1,102 @@ +--- +page_title: Int32 function parameters +description: >- + Learn how to use the 32-bit integer function parameter type with the + Terraform plugin framework. +--- + +# Int32 function parameters + + + +Use [Float32 Parameter](/terraform/plugin/framework/functions/parameters/float32) for 32-bit floating point numbers. Use [Number Parameter](/terraform/plugin/framework/functions/parameters/number) for arbitrary precision numbers. + + + +Int32 function parameters expect a 32-bit integer number value from a practitioner configuration. Values are accessible in function logic by the Go built-in `int32` type, Go built-in `*int32` type, or the [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). + +In this Terraform configuration example, a int32 parameter is set to the value `123`: + +```hcl +provider::example::example(123) +``` + +## Function Definition + +Use the [`function.Int32Parameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Int32Parameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a int32 value. + +In this example, a function definition includes a first position int32 parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Int32Parameter{ + Name: "int32_param", + // ... potentially other Int32Parameter fields ... + }, + }, + } +} +``` + +If the int32 value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). Refer to the collection parameter type documentation for additional details. + +If the int32 value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework int32 type](/terraform/plugin/framework/handling-data/types/int32) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework int32 type](/terraform/plugin/framework/handling-data/types/int32) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). +* If `AllowNullValue` is enabled, you must use the Go built-in `*int32` type or [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). +* Otherwise, use the Go built-in `int32` type, Go built-in `*int32` type, or [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). + +In this example, a function defines a single int32 parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Int32Parameter{ + Name: "int32_param", + // ... potentially other Int32Parameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var int32Arg int32 + // var int32Arg *int32 // e.g. with AllowNullValue, where Go nil equals Terraform null + // var int32Arg types.Int32 // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &int32Arg)) + + // int32Arg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int64.mdx new file mode 100644 index 0000000000..5e84115168 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/int64.mdx @@ -0,0 +1,102 @@ +--- +page_title: Int64 function parameters +description: >- + Learn how to use the 64-bit integer function parameter type with the + Terraform plugin framework. +--- + +# Int64 function parameters + + + +Use [Float64 Parameter](/terraform/plugin/framework/functions/parameters/float64) for 64-bit floating point numbers. Use [Number Parameter](/terraform/plugin/framework/functions/parameters/number) for arbitrary precision numbers. + + + +Int64 function parameters expect a 64-bit integer number value from a practitioner configuration. Values are accessible in function logic by the Go built-in `int64` type, Go built-in `*int64` type, or the [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). + +In this Terraform configuration example, a int64 parameter is set to the value `123`: + +```hcl +provider::example::example(123) +``` + +## Function Definition + +Use the [`function.Int64Parameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Int64Parameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a int64 value. + +In this example, a function definition includes a first position int64 parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Int64Parameter{ + Name: "int64_param", + // ... potentially other Int64Parameter fields ... + }, + }, + } +} +``` + +If the int64 value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). Refer to the collection parameter type documentation for additional details. + +If the int64 value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework int64 type](/terraform/plugin/framework/handling-data/types/int64) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework int64 type](/terraform/plugin/framework/handling-data/types/int64) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). +* If `AllowNullValue` is enabled, you must use the Go built-in `*int64` type or [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). +* Otherwise, use the Go built-in `int64` type, Go built-in `*int64` type, or [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). + +In this example, a function defines a single int64 parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.Int64Parameter{ + Name: "int64_param", + // ... potentially other Int64Parameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var int64Arg int64 + // var int64Arg *int64 // e.g. with AllowNullValue, where Go nil equals Terraform null + // var int64Arg types.Int64 // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &int64Arg)) + + // int64Arg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/list.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/list.mdx new file mode 100644 index 0000000000..edbca773a1 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/list.mdx @@ -0,0 +1,103 @@ +--- +page_title: List function parameters +description: >- + Learn how to use the list function parameter type with the + Terraform plugin framework. +--- + +# List function parameters + +List function parameters expect an ordered collection of single element type value from a practitioner configuration. Values are accessible in function logic by a Go slice of an appropriate pointer type to match the element type `[]*T` or the [framework list type](/terraform/plugin/framework/handling-data/types/list). + +In this Terraform configuration example, a list of string parameter is set to the ordered collection values `one` and `two`: + +```hcl +provider::example::example(["one", "two"]) +``` + +## Function Definition + +Use the [`function.ListParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ListParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a list value. + +The `ElementType` field must be defined, which represents the single [framework value type](/terraform/plugin/framework/handling-data/types) of every element of the list. An element type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a first position list of string parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.ListParameter{ + ElementType: types.StringType, + Name: "list_param", + // ... potentially other ListParameter fields ... + }, + }, + } +} +``` + +If the list value should be the element type of another [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework list type](/terraform/plugin/framework/handling-data/types/list). Refer to the collection parameter type documentation for additional details. + +If the list value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework list type](/terraform/plugin/framework/handling-data/types/list). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + + + +A known list value with null element values will always be sent to the function logic, regardless of the `AllowNullValue` setting. Data handling must always account for this situation. + + + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires no changes when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework list type](/terraform/plugin/framework/handling-data/types/list) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework list type](/terraform/plugin/framework/handling-data/types/list). +* Otherwise, use the Go slice of an appropriate pointer type to match the element type `[]*T` or [framework list type](/terraform/plugin/framework/handling-data/types/list). + +In this example, a function defines a single list of string parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.ListParameter{ + ElementType: types.StringType, + Name: "list_param", + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var listArg []*string // Go nil equals Terraform null + // var listArg types.List // e.g. with AllowUnknownValues + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &listArg)) + + // listArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/map.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/map.mdx new file mode 100644 index 0000000000..49d35d893c --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/map.mdx @@ -0,0 +1,107 @@ +--- +page_title: Map function parameters +description: >- + Learn how to use the map function parameter type with the + Terraform plugin framework. +--- + +# List function parameters + +Map function parameters expect a mapping of arbitrary string keys to values of single element type from a practitioner configuration. Values are accessible in function logic by a Go map of string keys to values of an appropriate pointer type to match the element type `map[string]*T` or the [framework map type](/terraform/plugin/framework/handling-data/types/map). + +In this Terraform configuration example, a map of string parameter is set to the mapped values of `"key1"` to `"value1"` and `"key2"` to `"value2"`: + +```hcl +provider::example::example({ + "key1" = "value1", + "key2" = "value2", +}) +``` + +## Function Definition + +Use the [`function.MapParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#MapParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a map value. + +The `ElementType` field must be defined, which represents the single [framework value type](/terraform/plugin/framework/handling-data/types) of every element of the map. An element type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a first position map of string parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.MapParameter{ + ElementType: types.StringType, + Name: "map_param", + // ... potentially other MapParameter fields ... + }, + }, + } +} +``` + +If the map value should be the element type of another [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework map type](/terraform/plugin/framework/handling-data/types/map). Refer to the collection parameter type documentation for additional details. + +If the map value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework map type](/terraform/plugin/framework/handling-data/types/map). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + + + +A known map value with null element values will always be sent to the function logic, regardless of the `AllowNullValue` setting. Data handling must always account for this situation. + + + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires no changes when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework map type](/terraform/plugin/framework/handling-data/types/map) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework map type](/terraform/plugin/framework/handling-data/types/map). +* Otherwise, use the Go map of string keys to values of an appropriate pointer type to match the element type `map[string]*T` or [framework map type](/terraform/plugin/framework/handling-data/types/map). + +In this example, a function defines a single map of string parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.MapParameter{ + ElementType: types.StringType, + Name: "map_param", + // ... potentially other MapParameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var mapArg map[string]*string // Go nil equals Terraform null + // var mapArg types.Map // e.g. with AllowUnknownValues + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &mapArg)) + + // mapArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/number.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/number.mdx new file mode 100644 index 0000000000..256d521ef3 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/number.mdx @@ -0,0 +1,100 @@ +--- +page_title: Number function parameters +description: >- + Learn how to use the arbitrary precision number function parameter type with + the Terraform plugin framework. +--- + +# Number function parameters + + + +Use [Float64 Parameter](/terraform/plugin/framework/functions/parameters/float64) for 64-bit floating point numbers. Use [Int64 Parameter](/terraform/plugin/framework/functions/parameters/int64) for 64-bit integer numbers. + + + +Number function parameters expect an arbitrary precision (generally over 64-bit, up to 512-bit) number value from a practitioner configuration. Values are accessible in function logic by the Go built-in `*big.Float` type or the [framework number type](/terraform/plugin/framework/handling-data/types/number). + +In this Terraform configuration example, a number parameter is set to the value greater than 64 bits: + +```hcl +provider::example::example(pow(2, 64) + 1) +``` + +## Function Definition + +Use the [`function.NumberParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#NumberParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a number value. + +In this example, a function definition includes a first position number parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.NumberParameter{ + Name: "number_param", + // ... potentially other NumberParameter fields ... + }, + }, + } +} +``` + +If the number value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework number type](/terraform/plugin/framework/handling-data/types/number). Refer to the collection parameter type documentation for additional details. + +If the number value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework number type](/terraform/plugin/framework/handling-data/types/number). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework number type](/terraform/plugin/framework/handling-data/types/number) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework number type](/terraform/plugin/framework/handling-data/types/number) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework number type](/terraform/plugin/framework/handling-data/types/number). +* Otherwise, use the Go built-in `*big.Float` type or [framework number type](/terraform/plugin/framework/handling-data/types/number). + +In this example, a function defines a single number parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.NumberParameter{ + Name: "number_param", + // ... potentially other NumberParameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var numberArg *big.Float + // var numberArg types.Number // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &numberArg)) + + // numberArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/object.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/object.mdx new file mode 100644 index 0000000000..41bdcbae42 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/object.mdx @@ -0,0 +1,128 @@ +--- +page_title: Object function parameters +description: >- + Learn how to use the object function parameter type with + the Terraform plugin framework. +--- + +# Object function parameters + +Object function parameters expect a single structure mapping explicit attribute names to type definitions from a practitioner configuration. Values are accessible in function logic by a Go structure type annotated with `tfsdk` field tags or the [framework object type](/terraform/plugin/framework/handling-data/types/object). + +Configurations must include all object attributes or a configuration error is raised. Configurations explicitly setting object attribute values to `null` will prevent this type of configuration error while leaving that object attribute value unset. The `AllowNullValue` setting does not need to be enabled for object attribute `null` values to work in this manner. + +In this Terraform configuration example, a object parameter is set to the mapped values of `attr1` to `"value1"`, `attr2` to `123`, and `attr3` to `null`: + +```hcl +provider::example::example({ + attr1 = "value1" + attr2 = 123 + attr3 = null +}) +``` + +## Function Definition + +Use the [`function.ObjectParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ObjectParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept an object value. + +The `AttributeTypes` field must be defined, which represents a mapping of attribute names to [framework value types](/terraform/plugin/framework/handling-data/types). An attribute type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a first position object parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.ObjectParameter{ + AttributeTypes: map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, + "attr3": types.BoolType, + }, + Name: "object_param", + // ... potentially other ObjectParameter fields ... + }, + }, + } +} +``` + +If the map value should be the element type of another [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework object type](/terraform/plugin/framework/handling-data/types/object). Refer to the collection parameter type documentation for additional details. + +If the map value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework object type](/terraform/plugin/framework/handling-data/types/object). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + + + +A known object value with null attribute values will always be sent to the function logic, regardless of the `AllowNullValue` setting. Data handling must always account for this situation. + + + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires no changes when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework object type](/terraform/plugin/framework/handling-data/types/object) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework object type](/terraform/plugin/framework/handling-data/types/object). +* If `AllowNullValue` is enabled, you must use a pointer to the Go structure type annotated with `tfsdk` field tags or the [framework object type](/terraform/plugin/framework/handling-data/types/object). +* Otherwise, use the Go structure type annotated with `tfsdk` field tags or [framework object type](/terraform/plugin/framework/handling-data/types/object). + +In this example, a function defines a single object parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.ObjectParameter{ + AttributeTypes: map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, + "attr3": types.BoolType, + }, + Name: "object_param", + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var objectArg struct{ + Attr1 *string `tfsdk:"attr1"` + Attr2 *int64 `tfsdk:"attr2"` + Attr3 *bool `tfsdk:"attr3"` + } + // e.g. with AllowNullValues + // var objectArg *struct{ + // Attr1 *string `tfsdk:"attr1"` + // Attr2 *int64 `tfsdk:"attr2"` + // Attr3 *bool `tfsdk:"attr3"` + // } + // var objectArg types.Object // e.g. with AllowUnknownValues or AllowNullValues + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &objectArg)) + + // objectArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/set.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/set.mdx new file mode 100644 index 0000000000..dc53f9952e --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/set.mdx @@ -0,0 +1,104 @@ +--- +page_title: Set function parameters +description: >- + Learn how to use the set function parameter type with + the Terraform plugin framework. +--- + +# Set function parameters + +Set function parameters expect an unordered, unique collection of single element type value from a practitioner configuration. Values are accessible in function logic by a Go slice of an appropriate pointer type to match the element type `[]*T` or the [framework set type](/terraform/plugin/framework/handling-data/types/set). + +In this Terraform configuration example, a set of string parameter is set to the collection values `one` and `two`: + +```hcl +provider::example::example(["one", "two"]) +``` + +## Function Definition + +Use the [`function.SetParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#SetParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a set value. + +The `ElementType` field must be defined, which represents the single [framework value type](/terraform/plugin/framework/handling-data/types) of every element of the set. An element type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a first position set of string parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.SetParameter{ + ElementType: types.StringType, + Name: "set_param", + // ... potentially other SetParameter fields ... + }, + }, + } +} +``` + +If the set value should be the element type of another [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework set type](/terraform/plugin/framework/handling-data/types/set). Refer to the collection parameter type documentation for additional details. + +If the set value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework set type](/terraform/plugin/framework/handling-data/types/set). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + + + +A known set value with null element values will always be sent to the function logic, regardless of the `AllowNullValue` setting. Data handling must always account for this situation. + + + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires no changes when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework set type](/terraform/plugin/framework/handling-data/types/set) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework set type](/terraform/plugin/framework/handling-data/types/set). +* Otherwise, use the Go slice of an appropriate pointer type to match the element type `[]*T` or [framework set type](/terraform/plugin/framework/handling-data/types/set). + +In this example, a function defines a single set of string parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.SetParameter{ + ElementType: types.StringType, + Name: "set_param", + // ... potentially other SetParameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var setArg []*string // Go nil equals Terraform null + // var setArg types.Set // e.g. with AllowUnknownValues + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &setArg)) + + // setArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/string.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/string.mdx new file mode 100644 index 0000000000..bb449009c3 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/parameters/string.mdx @@ -0,0 +1,96 @@ +--- +page_title: String function parameters +description: >- + Learn how to use the string function parameter type with + the Terraform plugin framework. +--- + +# String function parameters + +String function parameters expect a collection of UTF-8 encoded bytes from a practitioner configuration. Values are accessible in function logic by the Go built-in `string` type, Go built-in `*string` type, or the [framework string type](/terraform/plugin/framework/handling-data/types/string). + +In this Terraform configuration example, a string parameter is set to the value `"hello world"`: + +```hcl +provider::example::example("hello world") +``` + +## Function Definition + +Use the [`function.StringParameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#StringParameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a string value. + +In this example, a function definition includes a first position string parameter: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.StringParameter{ + Name: "string_param", + // ... potentially other StringParameter fields ... + }, + }, + } +} +``` + +If the string value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework string type](/terraform/plugin/framework/handling-data/types/string). Refer to the collection parameter type documentation for additional details. + +If the string value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework string type](/terraform/plugin/framework/handling-data/types/string). Refer to the object parameter type documentation for additional details. + +### Allow Null Values + +By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework string type](/terraform/plugin/framework/handling-data/types/string) when reading argument data. + +### Allow Unknown Values + +By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework string type](/terraform/plugin/framework/handling-data/types/string) when reading argument data. + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available. + +## Reading Argument Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic. + +When retrieving the argument value for this parameter: + +* If `CustomType` is set, use its associated value type. +* If `AllowUnknownValues` is enabled, you must use the [framework string type](/terraform/plugin/framework/handling-data/types/string). +* If `AllowNullValue` is enabled, you must use the Go built-in `*string` type or [framework string type](/terraform/plugin/framework/handling-data/types/string). +* Otherwise, use the Go built-in `string` type, Go built-in `*string` type, or [framework string type](/terraform/plugin/framework/handling-data/types/string). + +In this example, a function defines a single string parameter and accesses its argument value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Parameters: []function.Parameter{ + function.StringParameter{ + Name: "string_param", + // ... potentially other StringParameter fields ... + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + var stringArg string + // var stringArg *string // e.g. with AllowNullValue, where Go nil equals Terraform null + // var stringArg types.String // e.g. with AllowUnknownValues or AllowNullValue + + resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &stringArg)) + + // stringArg is now populated + // ... other logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/bool.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/bool.mdx new file mode 100644 index 0000000000..0da2af0d09 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/bool.mdx @@ -0,0 +1,66 @@ +--- +page_title: Boolean return values +description: >- + Learn how to use the boolean function return value type with the Terraform + plugin framework. +--- + +# Boolean return values + +Bool function return values expect a boolean true or false value from function logic. Set values in function logic with the Go built-in `bool` type, Go built-in `*bool` type, or the [framework bool type](/terraform/plugin/framework/handling-data/types/bool). + +## Function Definition + +Use the [`function.BoolReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#BoolReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a bool return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.BoolReturn{ + // ... potentially other BoolReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `bool` type, Go built-in `*bool` type, or [framework bool type](/terraform/plugin/framework/handling-data/types/bool). + +In this example, a function defines a bool return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.BoolReturn{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := true + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/dynamic.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/dynamic.mdx new file mode 100644 index 0000000000..844d5926ab --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/dynamic.mdx @@ -0,0 +1,78 @@ +--- +page_title: Dynamic function return values +description: >- + Learn how to use dynamic function return value types with the Terraform + plugin framework. +--- + +# Dynamic function return values + + + +Static types should always be preferred over dynamic types, when possible. + +Developers creating a function with a dynamic return will need to have extensive knowledge of the [Terraform type system](/terraform/language/expressions/types) to understand how the value type returned can impact practitioner configuration. + +Refer to [Dynamic Data - Considerations](/terraform/plugin/framework/handling-data/dynamic-data#considerations) for more information. + + + +Dynamic function return can be **any** value type from function logic. Set values in function logic with the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic). + +## Function Definition + +Use the [`function.DynamicReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#DynamicReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a dynamic return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.DynamicReturn{ + // ... potentially other DynamicReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic). + +In this example, a function defines a dynamic return and sets its value to a string: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.DynamicReturn{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := types.DynamicValue(types.StringValue("hello world!")) + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` + +For more detail on working with dynamic values, see the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic) documentation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float32.mdx new file mode 100644 index 0000000000..fbd0f48e58 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float32.mdx @@ -0,0 +1,72 @@ +--- +page_title: Float32 return values +description: >- + Learn how to use the 32-bit floating point function return value type with the + Terraform plugin framework. +--- + +# Float32 return values + + + +Use [Int32 Return](/terraform/plugin/framework/functions/returns/int32) for 32-bit integer numbers. Use [Number Return](/terraform/plugin/framework/functions/returns/number) for arbitrary precision numbers. + + + +Float32 function return expects a 32-bit floating point number value from function logic. Set values in function logic with the Go built-in `float32` type, Go built-in `*float32` type, or the [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). + +## Function Definition + +Use the [`function.Float32Return` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Float32Return) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a float32 return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Float32Return{ + // ... potentially other Float32Return fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `float32` type, Go built-in `*float32` type, or [framework float32 type](/terraform/plugin/framework/handling-data/types/float32). + +In this example, a function defines a float32 return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Float32Return{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + var result float32 = 1.23 + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float64.mdx new file mode 100644 index 0000000000..2769c1d98e --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/float64.mdx @@ -0,0 +1,72 @@ +--- +page_title: Float64 return values +description: >- + Learn how to use the 64-bit floating point function return value type with the + Terraform plugin framework. +--- + +# Float64 return values + + + +Use [Int64 Return](/terraform/plugin/framework/functions/returns/int64) for 64-bit integer numbers. Use [Number Return](/terraform/plugin/framework/functions/returns/number) for arbitrary precision numbers. + + + +Float64 function return expects a 64-bit floating point number value from function logic. Set values in function logic with the Go built-in `float64` type, Go built-in `*float64` type, or the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). + +## Function Definition + +Use the [`function.Float64Return` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Float64Return) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a float64 return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Float64Return{ + // ... potentially other Float64Return fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `float64` type, Go built-in `*float64` type, or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). + +In this example, a function defines a float64 return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Float64Return{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := 1.23 + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/index.mdx new file mode 100644 index 0000000000..a81c5bc830 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/index.mdx @@ -0,0 +1,60 @@ +--- +page_title: Function return values +description: >- + The Terraform plugin framework includes multiple built-in function return + value types and supports dynamic return values. A return describes the output + data in a function definition. +--- + +# Return values + +A return in a [function definition](/terraform/plugin/framework/functions/implementation#definition-method) describes the result data value from function logic. Every return type has an associated [value type](/terraform/plugin/framework/handling-data/types), although this data handling is simplified for function implementations over other provider concepts, such as resource implementations. + +## Available Return Types + +Function definitions support the following return types: + +- [Primitive](#primitive-return-types): Return that expects a single value, such as a boolean, number, or string. +- [Collection](#collection-return-types): Return that expects multiple values of a single element type, such as a list, map, or set. +- [Object](#object-return-type): Return that expects a structure of explicit attribute names. +- [Dynamic](#dynamic-return-type): Return that can be any value type. + +### Primitive Return Types + +Return types that expect a single data value, such as a boolean, number, or string. + +| Return Type | Use Case | +|----------------|----------| +| [Bool](/terraform/plugin/framework/functions/returns/bool) | Boolean true or false | +| [Float32](/terraform/plugin/framework/functions/returns/float32) | 32-bit floating point number | +| [Float64](/terraform/plugin/framework/functions/returns/float64) | 64-bit floating point number | +| [Int32](/terraform/plugin/framework/functions/returns/int32) | 32-bit integer number | +| [Int64](/terraform/plugin/framework/functions/returns/int64) | 64-bit integer number | +| [Number](/terraform/plugin/framework/functions/returns/number) | Arbitrary precision (generally over 64-bit, up to 512-bit) number | +| [String](/terraform/plugin/framework/functions/returns/string) | Collection of UTF-8 encoded characters | + +### Collection Return Types + +Return types that expect multiple values of a single element type, such as a list, map, or set. + +| Return Type | Use Case | +|----------------|----------| +| [List](/terraform/plugin/framework/functions/returns/list) | Ordered collection of single element type | +| [Map](/terraform/plugin/framework/functions/returns/map) | Mapping of arbitrary string keys to values of single element type | +| [Set](/terraform/plugin/framework/functions/returns/set) | Unordered, unique collection of single element type | + +### Object Return Type + +Return type that expects a structure of explicit attribute names. + +| Return Type | Use Case | +|----------------|----------| +| [Object](/terraform/plugin/framework/functions/returns/object) | Single structure mapping explicit attribute names | + +### Dynamic Return Type + +Return type that can be any value type, determined by the provider at runtime. + +| Return Type | Use Case | +|----------------|----------| +| [Dynamic](/terraform/plugin/framework/functions/returns/dynamic) | Return any value type of data, determined at runtime. | \ No newline at end of file diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int32.mdx new file mode 100644 index 0000000000..b0c4b0c547 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int32.mdx @@ -0,0 +1,72 @@ +--- +page_title: Int32 return values +description: >- + Learn how to use the 32-bit integer function return value type with the + Terraform plugin framework. +--- + +# Int32 return values + + + +Use [Float32 Return](/terraform/plugin/framework/functions/returns/float32) for 32-bit floating point numbers. Use [Number Return](/terraform/plugin/framework/functions/returns/number) for arbitrary precision numbers. + + + +Int32 function return expects a 32-bit integer number value from function logic. Set values in function logic with the Go built-in `int32` type, Go built-in `*int32` type, or the [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). + +## Function Definition + +Use the [`function.Int32Return` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Int32Return) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a int32 return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Int32Return{ + // ... potentially other Int32Return fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `int32` type, Go built-in `*int32` type, or [framework int32 type](/terraform/plugin/framework/handling-data/types/int32). + +In this example, a function defines a int32 return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Int32Return{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := 123 + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int64.mdx new file mode 100644 index 0000000000..a134eda667 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/int64.mdx @@ -0,0 +1,72 @@ +--- +page_title: Int64 return values +description: >- + Learn how to use the 64-bit integer function return value type with the + Terraform plugin framework. +--- + +# Int64 return values + + + +Use [Float64 Return](/terraform/plugin/framework/functions/returns/float64) for 64-bit floating point numbers. Use [Number Return](/terraform/plugin/framework/functions/returns/number) for arbitrary precision numbers. + + + +Int64 function return expects a 64-bit integer number value from function logic. Set values in function logic with the Go built-in `int64` type, Go built-in `*int64` type, or the [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). + +## Function Definition + +Use the [`function.Int64Return` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Int64Return) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a int64 return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Int64Return{ + // ... potentially other Int64Return fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `int64` type, Go built-in `*int64` type, or [framework int64 type](/terraform/plugin/framework/handling-data/types/int64). + +In this example, a function defines a int64 return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.Int64Return{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := 123 + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/list.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/list.mdx new file mode 100644 index 0000000000..39cc953c70 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/list.mdx @@ -0,0 +1,71 @@ +--- +page_title: List return values +description: >- + Learn how to use the list function return value type with the + Terraform plugin framework. +--- + +# List return values + +List function return expects an ordered collection of single element type value from function logic. Set values in function logic with a Go slice of an appropriate type to match the element type `[]T` or the [framework list type](/terraform/plugin/framework/handling-data/types/list). + +## Function Definition + +Use the [`function.ListReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ListReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +The `ElementType` field must be defined, which represents the single [framework value type](/terraform/plugin/framework/handling-data/types) of every element of the list. An element type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a list of string return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.ListReturn{ + ElementType: types.StringType, + // ... potentially other ListReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use a Go slice of an appropriate type to match the element type `[]T` or [framework list type](/terraform/plugin/framework/handling-data/types/list). + +In this example, a function defines a list of string return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.ListReturn{ + ElementType: types.StringType, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := []string{"one", "two"} + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/map.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/map.mdx new file mode 100644 index 0000000000..3ae20085a8 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/map.mdx @@ -0,0 +1,74 @@ +--- +page_title: Map return values +description: >- + Learn how to use the map function return value type with the + Terraform plugin framework. +--- + +# Map return values + +Map function return expects a mapping of arbitrary string keys to values of single element type from function logic. Set values in function logic with a Go map of string keys to values of an appropriate type to match the element type `map[string]T` or the [framework map type](/terraform/plugin/framework/handling-data/types/map). + +## Function Definition + +Use the [`function.MapReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#MapReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +The `ElementType` field must be defined, which represents the single [framework value type](/terraform/plugin/framework/handling-data/types) of every element of the map. An element type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a map of string return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.MapReturn{ + ElementType: types.StringType, + // ... potentially other MapReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use a Go map of string keys to values of an appropriate type to match the element type `map[string]T` or [framework map type](/terraform/plugin/framework/handling-data/types/map). + +In this example, a function defines a map of string return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.MapReturn{ + ElementType: types.StringType, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := map[string]string{ + "key1": "value1", + "key2": "value2", + } + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/number.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/number.mdx new file mode 100644 index 0000000000..74e6a2c013 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/number.mdx @@ -0,0 +1,72 @@ +--- +page_title: Number return values +description: >- + Learn how to use the arbitrary precision number function return value type + with the Terraform plugin framework. +--- + +# Number return values + + + +Use [Float64 Return](/terraform/plugin/framework/functions/returns/float64) for 64-bit floating point numbers. Use [Int64 Return](/terraform/plugin/framework/functions/returns/int64) for 64-bit integer numbers. + + + +Number function return expects an arbitrary precision (generally over 64-bit, up to 512-bit) number value from function logic. Set values in function logic with the Go built-in `*big.Float` type or the [framework number type](/terraform/plugin/framework/handling-data/types/number). + +## Function Definition + +Use the [`function.NumberReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#NumberReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a number return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.NumberReturn{ + // ... potentially other NumberReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `*big.Float` type or [framework number type](/terraform/plugin/framework/handling-data/types/number). + +In this example, a function defines a number return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.NumberReturn{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := big.NewFloat(1.23) + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/object.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/object.mdx new file mode 100644 index 0000000000..7f4a354a32 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/object.mdx @@ -0,0 +1,83 @@ +--- +page_title: Object return values +description: >- + Learn how to use the object function return value type with the Terraform + plugin framework. +--- + +# Object return values + +Object function return expects a single structure mapping explicit attribute names to type definitions from function logic. Set values in function logic with a Go structure type annotated with `tfsdk` field tags or the [framework map type](/terraform/plugin/framework/handling-data/types/map). + +## Function Definition + +Use the [`function.ObjectReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ObjectReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +The `AttributeTypes` field must be defined, which represents a mapping of attribute names to [framework value types](/terraform/plugin/framework/handling-data/types). An attribute type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes an object return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.ObjectReturn{ + AttributeTypes: map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, + }, + // ... potentially other ObjectReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use a Go structure type annotated with `tfsdk` field tags or [framework map type](/terraform/plugin/framework/handling-data/types/map). + +In this example, a function defines a map of string return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.ObjectReturn{ + AttributeTypes: map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, + }, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded structure type and value for example brevity + result := struct{ + Attr1 string `tfsdk:"attr1"` + Attr2 int64 `tfsdk:"attr2"` + }{ + Attr1: "value1", + Attr2: 123, + } + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/set.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/set.mdx new file mode 100644 index 0000000000..1c32dc7777 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/set.mdx @@ -0,0 +1,71 @@ +--- +page_title: Set return values +description: >- + Learn how to use the set function return value type with the Terraform + plugin framework. +--- + +# Set return values + +Set function return expects an unordered, unique collection of single element type value from function logic. Set values in function logic with a Go slice of an appropriate type to match the element type `[]T` or the [framework set type](/terraform/plugin/framework/handling-data/types/set). + +## Function Definition + +Use the [`function.SetReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#SetReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +The `ElementType` field must be defined, which represents the single [framework value type](/terraform/plugin/framework/handling-data/types) of every element of the set. An element type may itself contain further collection or object types, if necessary. + +In this example, a function definition includes a set of string return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.SetReturn{ + ElementType: types.StringType, + // ... potentially other SetReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use a Go slice of an appropriate type to match the element type `[]T` or [framework set type](/terraform/plugin/framework/handling-data/types/set). + +In this example, a function defines a set of string return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.SetReturn{ + ElementType: types.StringType, + }, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := []string{"one", "two"} + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/string.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/string.mdx new file mode 100644 index 0000000000..d80f9fa5b3 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/returns/string.mdx @@ -0,0 +1,66 @@ +--- +page_title: String return values +description: >- + Learn how to use the string function return value type with the Terraform + plugin framework. +--- + +# String return values + +String function return expects a collection of UTF-8 encoded bytes from function logic. Set values in function logic with the Go built-in `string` type, Go built-in `*string` type, or the [framework string type](/terraform/plugin/framework/handling-data/types/string). + +## Function Definition + +Use the [`function.StringReturn` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#StringReturn) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method). + +In this example, a function definition includes a string return: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.StringReturn{ + // ... potentially other StringReturn fields ... + }, + } +} +``` + +### Custom Types + +You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the return type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Documentation + +Return documentation is expected in the top-level function documentation. Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Summary`, `Description`, and `MarkdownDescription` fields available. + +## Setting Return Data + +The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for setting function return data in function logic. + +When setting the value for this return: + +* If `CustomType` is set, use its associated value type. +* Otherwise, use the Go built-in `string` type, Go built-in `*string` type, or [framework string type](/terraform/plugin/framework/handling-data/types/string). + +In this example, a function defines a string return and sets its value: + +```go +func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) { + resp.Definition = function.Definition{ + // ... other Definition fields ... + Return: function.StringReturn{}, + } +} + +func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) { + // ... other logic ... + + // hardcoded value for example brevity + result := "example" + + resp.Error = function.ConcatFuncErrors(resp.Error, resp.Result.Set(ctx, &result)) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/testing.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/testing.mdx new file mode 100644 index 0000000000..dad993547b --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/functions/testing.mdx @@ -0,0 +1,246 @@ +--- +page_title: Testing functions +description: >- + Learn how to implement tests for provider-defined functions with the Terraform + plugin framework. +--- + +# Testing functions + +When a function is [implemented](/terraform/plugin/framework/functions/implementation), ensure the function behaves as expected. Follow [recommendations](#recommendations) to cover how practitioner configurations may call the function. + +There are two methodologies for testing provider-defined functions: + +* [Acceptance Testing](#acceptance-testing): Verify implementation using real Terraform configurations and commands. +* [Unit Testing](#unit-testing): Verify implementation using with Terraform and framework implementation details. + +Similar to other provider concepts, many provider developers prefer acceptance testing over unit testing. Acceptance testing guarantees the function implementation works exactly as expected in real world use cases without trying to determine Terraform or framework implementation details. Unit testing details are provided, however, for function implementations which warrant a broad amount of input value testing, such as generic data handling functions or to perform [fuzzing](https://go.dev/security/fuzz/). + +Testing examples on this page are dependent on the example [echo function implementation](/terraform/plugin/framework/functions/implementation). + +## Recommendations + +Testing a provider-defined function should ensure at least the following behaviors are covered: + +* Known values return the expected results. +* For any list, map, object, and set parameters, null values for collection elements or object attributes. The `AllowNullValue` parameter setting does not affect Terraform sending these types of null values. +* If any parameters enable `AllowNullValue`, null values for those arguments. +* If any parameters enable `AllowUnknownValues`, unknown values for those arguments. +* Any errors, such as argument validation errors. + +## Acceptance Testing + +Use the [plugin testing Go module](/terraform/plugin/testing) to implement real world testing with Terraform configurations and commands. The documentation for that Go module covers many more available testing features, however this section example gives a high level overview of how to start writing these tests. + +In this example, a `echo_function_test.go` file is created: + +```go +package provider_test + +import ( + "testing" + + "example.com/terraform-provider-example/internal/provider" + "github.com/hashicorp/terraform-plugin-framework/providerserver" + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" + "github.com/hashicorp/terraform-plugin-testing/tfversion" +) + +func TestEchoFunction_Valid(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_8_0), + }, + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "example": providerserver.NewProtocol6WithError(provider.New()), + }, + Steps: []resource.TestStep{ + { + Config: ` + output "test" { + value = provider::example::echo("test-value") + }`, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownOutputValue("test", knownvalue.StringExact("test-value")), + }, + }, + }, + }) +} + +// The example implementation does not return any errors, however +// this acceptance test verifies how the function should behave if it did. +func TestEchoFunction_Invalid(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_8_0), + }, + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "example": providerserver.NewProtocol6WithError(provider.New()), + }, + Steps: []resource.TestStep{ + { + Config: ` + output "test" { + value = provider::example::echo("invalid") + }`, + ExpectError: regexp.MustCompile(`error summary`), + }, + }, + }) +} + +// The example implementation does not enable AllowNullValue, however this +// acceptance test shows how to verify the behavior. +func TestEchoFunction_Null(t *testing.T) { + t.Parallel() + + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_8_0), + }, + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "example": providerserver.NewProtocol6WithError(provider.New()), + }, + Steps: []resource.TestStep{ + { + Config: ` + output "test" { + value = provider::example::echo(null) + }`, + ExpectError: regexp.MustCompile(`Invalid Function Call`), + }, + }, + }) +} + +// The example implementation does not enable AllowUnknownValues, however this +// acceptance test shows how to verify the behavior. +func TestEchoFunction_Unknown(t *testing.T) { + resource.UnitTest(t, resource.TestCase{ + TerraformVersionChecks: []tfversion.TerraformVersionCheck{ + tfversion.SkipBelow(tfversion.Version1_8_0), + }, + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "example": providerserver.NewProtocol6WithError(provider.New()), + }, + Steps: []resource.TestStep{ + { + Config: ` + terraform_data "test" { + input = "test-value" + } + + output "test" { + value = provider::example::echo(terraform_data.test.output) + }`, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectUnknownOutputValue("test"), + }, + }, + ConfigStateChecks: []statecheck.StateCheck{ + statecheck.ExpectKnownOutputValue("test", knownvalue.StringExact("test-value")), + }, + }, + }, + }) +} +``` + +## Unit Testing + +Use the [`function.NewArgumentsData()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/functions#NewArgumentsData) and [`function.NewResultData()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/functions#NewResultData) as part of implementing a [Go test](https://go.dev/doc/tutorial/add-a-test). + +In this example, a `echo_function_test.go` file is created: + +```go +package provider_test + +import ( + "context" + "testing" + + "example.com/terraform-provider-example/internal/provider" + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/terraform-plugin-framework/function" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +func TestEchoFunctionRun(t *testing.T) { + t.Parallel() + + testCases := map[string]struct { + request function.RunRequest + expected function.RunResponse + }{ + // The example implementation uses the Go built-in string type, however + // if AllowNullValue was enabled and *string or types.String was used, + // this test case shows how the function would be expected to behave. + "null": { + request: function.RunRequest{ + Arguments: function.NewArgumentsData([]attr.Value{types.StringNull()}), + }, + expected: function.RunResponse{ + Result: function.NewResultData(types.StringNull()), + }, + }, + // The example implementation uses the Go built-in string type, however + // if AllowUnknownValues was enabled and types.String was used, + // this test case shows how the function would be expected to behave. + "unknown": { + request: function.RunRequest{ + Arguments: function.NewArgumentsData([]attr.Value{types.StringUnknown()}), + }, + expected: function.RunResponse{ + Result: function.NewResultData(types.StringUnknown()), + }, + }, + "value-valid": { + request: function.RunRequest{ + Arguments: function.NewArgumentsData([]attr.Value{types.StringValue("test-value")}), + }, + expected: function.RunResponse{ + Result: function.NewResultData(types.StringValue("test-value")), + }, + }, + // The example implementation does not return an error, however + // this test case shows how the function would be expected to behave if + // it did. + "value-invalid": { + request: function.RunRequest{ + Arguments: function.NewArgumentsData([]attr.Value{types.StringValue("")}), + }, + expected: function.RunResponse{ + Error: function.NewArgumentFuncError(0, "error summary: error detail"), + Result: function.NewResultData(types.StringUnknown()), + }, + }, + } + + for name, testCase := range testCases { + name, testCase := name, testCase + + t.Run(name, func(t *testing.T) { + t.Parallel() + + got := function.RunResponse{ + Result: function.NewResultData(types.StringUnknown()), + } + + provider.EchoFunction{}.Run(context.Background(), testCase.request, &got) + + if diff := cmp.Diff(got, testCase.expected); diff != "" { + t.Errorf("unexpected difference: %s", diff) + } + }) + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/getting-started/code-walkthrough.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/getting-started/code-walkthrough.mdx new file mode 100644 index 0000000000..8aecf55068 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/getting-started/code-walkthrough.mdx @@ -0,0 +1,384 @@ +--- +page_title: Provider code walkthrough +description: >- + The Terraform plugin framework is an SDK that you can use to implement + Terraform providers. Learn how the framework can help you create a provider + by exploring its main components and libraries. +--- + +# Provider code walkthrough + +[Terraform providers](/terraform/language/providers) let Terraform communicate with third parties, such as cloud providers, SaaS providers, and other APIs. Terraform and Terraform providers use gRPC to communicate. Terraform operates as a gRPC client and providers operate as gRPC servers. + +Each provider defines resources that let Terraform manage infrastructure objects and data sources that let Terraform read data. Terraform practitioners then write configuration to define resources, such as compute storage or networking resources. Terraform then communicates this configuration to the provider, and the provider creates the infrastructure. + +This example provider shows the relationship between the required provider components. The resources and data sources in a typical provider interact with a cloud provider through an API, but the example only stores values in state. + +## Core Provider Components + +A Terraform plugin provider requires at least the following components: + +- [provider server](#provider-server) +- [provider](#provider) +- [resource](#resource) or [data source](#data-source) + +The provider wraps the resource(s) and/or data source(s), and can be used to configure a client which communicates with a 3rd party service via an API. +Resources are used to manage infrastructure objects. +Data sources are used to read infrastructure objects. + +## Provider Server + +Each provider must implement a gRPC server that supports Terraform-specific connection and handshake handling on startup. A [provider server](/terraform/plugin/framework/provider-servers) is required in order for a Terraform provider to: + +* expose resources that can be managed by Terraform core. +* expose data sources that can be read by Terraform core. + +The `main()` function is used for defining a provider server. + +The `provider.New()` returns a function which returns a type that satisfies the `provider.Provider` interface. The `provider.Provider` interface defines functions for obtaining the resource(s) and/or data source(s) from a provider. + +```go +package main + +import ( + "context" + "flag" + "log" + + "github.com/hashicorp/terraform-plugin-framework/providerserver" + + "github.com/example_namespace/terraform-provider-example/internal/provider" +) + +func main() { + var debug bool + + flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") + flag.Parse() + + opts := providerserver.ServeOpts{ + Address: "registry.terraform.io/example_namespace/example", + Debug: debug, + } + + err := providerserver.Serve(context.Background(), provider.New(), opts) + + if err != nil { + log.Fatal(err.Error()) + } +} +``` + +Refer to [Provider Servers](/terraform/plugin/framework/provider-servers) for more details. + +## Provider + +The provider wraps resources and data sources which are typically used for interacting with cloud providers, SaaS providers, or other APIs. + +In this example the provider wraps a resource and a data source which simply interact with Terraform state. Refer to the [tutorial](/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider-configure) for an example of provider configuration that configures an API client. + +`New()` returns a function which returns a type that satisfies the `provider.Provider` interface. The `New()` function is called by the [provider server](#provider-server) to obtain the provider. + +The `exampleProvider` struct implements the `provider.Provider` interface. This interface defines the following functions: + +- [`Schema`](/terraform/plugin/framework/handling-data/schemas): This function returns a provider `schema.Schema` struct that defines the provider schema. Schemas specify the constraints of Terraform configuration blocks. They define what fields a provider, resource, or data source configuration block has, and give Terraform metadata about those fields. +- [`Configure`](/terraform/plugin/framework/providers#configure-method): This function lets you configure provider-level data or clients. These configuration values may be from the practitioner Terraform configuration as defined by the schema, environment variables, or other means such as reading vendor-specific configuration files. +- [`Resources`](/terraform/plugin/framework/providers#resources): This function returns a slice of functions that return types that implement the `resource.Resource` interface. Resources let Terraform manage infrastructure objects, such as a compute instance, an access policy, or disk. +- [`Data Sources`](/terraform/plugin/framework/providers#datasources): This function returns a slice of functions that return types which implement the `datasource.DataSource` interface. Data sources let Terraform reference external data. For example a database instance. + +The `exampleProvider` struct also implements the `provider.ProviderWithMetadata` interface which defines the `Metadata` function. The `Metadata` function returns metadata for the provider such as a `TypeName` and `Version`. The `TypeName` is used as a prefix within a provider by for naming [resources](#resource) and [data sources](#data-source). + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-framework/provider/schema" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +var _ provider.Provider = (*exampleProvider)(nil) +var _ provider.ProviderWithMetadata = (*exampleProvider)(nil) + +type exampleProvider struct{} + +func New() func() provider.Provider { + return func() provider.Provider { + return &exampleProvider{} + } +} + +func (p *exampleProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { +} + +func (p *exampleProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "example" +} + +func (p *exampleProvider) DataSources(ctx context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + NewDataSource, + } +} + +func (p *exampleProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + NewResource, + } +} + +func (p *exampleProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { +} +``` + +Refer to [Providers](/terraform/plugin/framework/providers) for more details and configuration examples. + +## Resource + +A resource is typically used to manage infrastructure objects such as virtual networks and compute instances. + +In this example the resource simply interacts with Terraform state. + +`NewResource()` returns a function which returns a type that satisfies the `resource.Resource` interface. The provider calls the `NewResource()` function within `provider.Resources` to obtain an instance of the resource. + +The `exampleResource` struct implements the `resource.Resource` interface. This interface defines the following functions: + +- [`Metadata`](/terraform/plugin/framework/resources#metadata-method): This function returns the full name (`TypeName`) of the resource. The full name is used in [Terraform configuration](#resource-configuration) as `resource `. +- [`Schema`](/terraform/plugin/framework/handling-data/schemas): This function returns a resource `schema.Schema` struct that defines the resource schema. The schema specifies the constraints of the resource Terraform configuration block. It defines what fields a resource configuration block has, and gives Terraform metadata about those fields. For instance, defining whether a field is required. +- [`Create`](/terraform/plugin/framework/resources/create): This function lets the provider create a new resource of this type. +- [`Read`](/terraform/plugin/framework/resources/read): This function lets the provider read resource values in order to update state. +- [`Update`](/terraform/plugin/framework/resources/update): This function lets the provider update the resource and state. +- [`Delete`](/terraform/plugin/framework/resources/delete): This function lets the provider delete the resource. + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +var _ resource.Resource = (*exampleResource)(nil) + +type exampleResource struct { + provider exampleProvider +} + +func NewResource() resource.Resource { + return &exampleResource{} +} + +func (e *exampleResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_resource" +} + +func (e *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "configurable_attribute": schema.StringAttribute{ + Optional: true, + }, + "id": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + } +} + +type exampleResourceData struct { + ConfigurableAttribute types.String `tfsdk:"configurable_attribute"` + Id types.String `tfsdk:"id"` +} + +func (e *exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleResourceData + + diags := req.Config.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // Create resource using 3rd party API. + + data.Id = types.StringValue("example-id") + + tflog.Trace(ctx, "created a resource") + + diags = resp.State.Set(ctx, &data) + resp.Diagnostics.Append(diags...) +} + +func (e *exampleResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var data exampleResourceData + + diags := req.State.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // Read resource using 3rd party API. + + diags = resp.State.Set(ctx, &data) + resp.Diagnostics.Append(diags...) +} + +func (e *exampleResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data exampleResourceData + + diags := req.Plan.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // Update resource using 3rd party API. + + diags = resp.State.Set(ctx, &data) + resp.Diagnostics.Append(diags...) +} + +func (e *exampleResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + var data exampleResourceData + + diags := req.State.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // Delete resource using 3rd party API. +} +``` + +Refer to [Resources](/terraform/plugin/framework/resources) for more details and configuration examples. + +## Data Source + +A data source is typically used to provide a read-only view of infrastructure objects. + +In this example the data source simply interacts with Terraform state. + +`NewDataSource()` returns a function which returns a type that satisfies the `datasource.DataSource` interface. The `NewDataSource()` function is used within the `provider.DataSources` function to make the data source available to the provider. + +The `exampleDataSource` struct implements the `datasource.DataSource` interface. This interface defines the following functions: + +- [`Metadata`](/terraform/plugin/framework/data-sources#metadata-method): This function returns the full name (`TypeName`) of the data source. The full name is used in [Terraform configuration](#data-source-configuration) as `data `. +- [`Schema`](/terraform/plugin/framework/handling-data/schemas): This function returns a data source `schema.Schema` struct that defines the data source schema. The schema specifies the constraints of the data source Terraform configuration block. It defines what fields a data source configuration block has, and gives Terraform metadata about those fields. For instance, defining whether a field is optional. +- [`Read`](/terraform/plugin/framework/data-sources#read-method): This function lets the provider read data source values in order to update state. + +```go +package provider + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +var _ datasource.DataSource = (*exampleDataSource)(nil) + +type exampleDataSource struct { + provider exampleProvider +} + +func NewDataSource() datasource.DataSource { + return &exampleDataSource{} +} + +func (e *exampleDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_datasource" +} + +func (e *exampleDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "configurable_attribute": schema.StringAttribute{ + MarkdownDescription: "Example configurable attribute", + Optional: true, + }, + "id": schema.StringAttribute{ + MarkdownDescription: "Example identifier", + Computed: true, + }, + }, + } +} + +type exampleDataSourceData struct { + ConfigurableAttribute types.String `tfsdk:"configurable_attribute"` + Id types.String `tfsdk:"id"` +} + +func (e *exampleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data exampleDataSourceData + + diags := req.Config.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // Interact with 3rd party API to read data source. + + data.Id = types.StringValue("example-id") + + tflog.Trace(ctx, "read a data source") + + diags = resp.State.Set(ctx, &data) + resp.Diagnostics.Append(diags...) +} +``` + +Refer to [Data Sources](/terraform/plugin/framework/data-sources) for more details and configuration examples. + +## Terraform Configuration + +Refer to [terraform-provider-scaffolding-framework](https://github.com/hashicorp/terraform-provider-scaffolding-framework) for details on how to wire together a [provider server](#provider-server), [provider](#provider), [resource](#resource) and [data source](#data-source). + +Once wired together, run the provider by specifying configuration and executing `terraform apply`. + +### Resource Configuration + +```hcl +resource "example_resource" "example" { + configurable_attribute = "some-value" +} +``` + +The `configurable_attribute` is defined within the [schema](#resource) as a string type attribute. + +Examples of the various types of attributes and their representation within Terraform configuration and schema definitions are detailed in [Terraform Concepts](/terraform/plugin/framework/handling-data/terraform-concepts). + +### Data Source Configuration + +```hcl +data "example_datasource" "example" { + configurable_attribute = "some-value" +} +``` + +The `configurable_attribute` is defined within the [schema](#data-source) as a string type attribute. + +Examples of the various types of attributes and their representation within Terraform configuration and schema definitions are detailed in [Terraform Concepts](/terraform/plugin/framework/handling-data/terraform-concepts). diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/accessing-values.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/accessing-values.mdx new file mode 100644 index 0000000000..a3d1777f40 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/accessing-values.mdx @@ -0,0 +1,111 @@ +--- +page_title: Access state, configuration, and plan data +description: >- + Learn how to read values from Terraform's state, configuration, and plan with + the Terraform plugin framework. +--- + +# Access state, configuration, and plan data + +There are various points at which the provider needs access to the data from +the practitioner's configuration, Terraform's state, or generated plan. +The same patterns are used for accessing this data, regardless of +its source. + +The data is usually stored in a request object: + +```go +func (r ThingResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) +``` + +In this example, `req` holds the configuration and plan, and there is no state +value because the resource does not yet exist in state. + +## Get the Entire Configuration, Plan, or State + +One way to interact with configuration, plan, and state values is to convert +the entire configuration, plan, or state into a Go type, then treat them as +regular Go values. This has the benefit of letting the compiler check all your +code that accesses values, but requires defining a type to contain the values. + +Use the `Get` method to retrieve the first level of configuration, plan, and state data. + +```go +type ThingResourceModel struct { + Address types.Object `tfsdk:"address"` + Age types.Int64 `tfsdk:"age"` + Name types.String `tfsdk:"name"` + Pets types.List `tfsdk:"pets"` + Registered types.Bool `tfsdk:"registered"` + Tags types.Map `tfsdk:"tags"` +} + +func (r ThingResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) { + var plan ThingResourceModel + + diags := req.Plan.Get(ctx, &plan) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // values can now be accessed like plan.Name.ValueString() + // check if things are null with plan.Name.IsNull() + // check if things are unknown with plan.Name.IsUnknown() +} +``` + +The configuration, plan, and state data is represented as an object, and +accessed like an object. Refer to the [object type](/terraform/plugin/framework/handling-data/types/object) documentation for an +explanation on how objects can be converted into Go types. + +To descend into deeper nested data structures, the `types.List`, `types.Map`, and `types.Set` types each have an `ElementsAs()` method. The `types.Object` type has an `As()` method. + +## Get a Single Attribute or Block Value + +Use the `GetAttribute` method to retrieve a top level attribute or block value from the configuration, plan, and state. + +```go +func (r ThingResource) Read(ctx context.Context, + req resource.ReadRequest, resp *resource.ReadResponse) { + var name types.String + + diags := req.State.GetAttribute(ctx, path.Root("name"), &name) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + // ... +} +``` + +## When Can a Value Be Unknown or Null? + +A lot of conversion rules say an error will be returned if a value is unknown +or null. It is safe to assume: + +* Required attributes will never be null or unknown in Create, Read, Update, or + Delete methods. +* Optional attributes that are not computed will never be unknown in Create, + Read, Update, or Delete methods. +* Computed attributes, whether optional or not, will never be null in the plan + for Create, Read, Update, or Delete methods. +* Computed attributes that are read-only (`Optional` is not `true`) will always + be unknown in the plan for Create, Read, Update, or Delete methods. They will + always be null in the configuration for Create, Read, Update, and Delete + methods. +* Required attributes will never be null in a provider's Configure method. They + may be unknown. +* The state never contains unknown values. +* The configuration for Create, Read, Update, and Delete methods never contains + unknown values. + +In any other circumstances, the provider is responsible for handling the +possibility that an unknown or null value may be presented to it. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/bool.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/bool.mdx new file mode 100644 index 0000000000..8da6da9349 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/bool.mdx @@ -0,0 +1,143 @@ +--- +page_title: Boolean attributes +description: >- + Learn how to use boolean attributes with the Terraform plugin framework. +--- + + +# Boolean attributes + +Bool attributes store a boolean true or false value. Values are represented by a [bool type](/terraform/plugin/framework/handling-data/types/bool) in the framework. + +In this Terraform configuration example, a bool attribute named `example_attribute` is set to the value `true`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = true +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a bool value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#BoolAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#BoolAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#BoolAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#BoolAttribute) | + +In this example, a resource schema defines a top level required bool attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.BoolAttribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the bool value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [bool type](/terraform/plugin/framework/handling-data/types/bool). Refer to the collection attribute type documentation for additional details. + +If the bool value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [bool type](/terraform/plugin/framework/handling-data/types/bool). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`booldefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault) package defines common use case `Default` implementations: + +- [`StaticBool(bool)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault#StaticBool): Define a static bool default value for the attribute. + +The [`boolplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`boolvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/boolvalidator) package within that module has bool attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [bool type](/terraform/plugin/framework/handling-data/types/bool#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [bool type](/terraform/plugin/framework/handling-data/types/bool#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/dynamic.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/dynamic.mdx new file mode 100644 index 0000000000..00eb1fc3e6 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/dynamic.mdx @@ -0,0 +1,159 @@ +--- +page_title: Dynamic attributes +description: >- + Learn how to use dynamic attributes with the Terraform plugin framework. +--- + +# Dynamic attribute + + + +Static attribute types should always be preferred over dynamic attribute types, when possible. + +Developers dealing with dynamic attribute data will need to have extensive knowledge of the [Terraform type system](/terraform/language/expressions/types) to properly handle all potential practitioner configuration scenarios. + +Refer to [Dynamic Data - Considerations](/terraform/plugin/framework/handling-data/dynamic-data#considerations) for more information. + + + +Dynamic attributes can store **any** value. Values are represented by a [dynamic type](/terraform/plugin/framework/handling-data/types/dynamic) in the framework. + +In this Terraform configuration example, a dynamic attribute named `example_attribute` is set to the boolean value `true`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = true +} +``` + +In this example, the same dynamic attribute is set to a tuple (not a list) of string values `one` and `two`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = ["one", "two"] +} +``` + +In this example, the same dynamic attribute is set to an object type with mapped values of `attr1` to `"value1"` and `attr2` to `123`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = { + attr1 = "value1" + attr2 = 123 + } +} +``` + + +## Schema Definition + +Use one of the following attribute types to directly add a dynamic value to a [schema](/terraform/plugin/framework/handling-data/schemas) or a [single nested attribute type](/terraform/plugin/framework/handling-data/attributes/single-nested): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#DynamicAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#DynamicAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#DynamicAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#DynamicAttribute) | + +In this example, a resource schema defines a top level required dynamic attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.DynamicAttribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Dynamic values are not supported as the element type of a [collection type](/terraform/plugin/framework/handling-data/types#collection-types) or within [collection attribute types](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types). + +If the dynamic value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [dynamic type](/terraform/plugin/framework/handling-data/types/dynamic). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`dynamicdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Dynamic)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicdefault#StaticValue): Define a static default value for the attribute. + +The [`dynamicplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [dynamic type](/terraform/plugin/framework/handling-data/types/dynamic#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [dynamic type](/terraform/plugin/framework/handling-data/types/dynamic#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float32.mdx new file mode 100644 index 0000000000..d8678fe887 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float32.mdx @@ -0,0 +1,149 @@ +--- +page_title: Float32 attributes +description: >- + Learn how to use 32-bit floating point attributes with the Terraform plugin + framework. +--- + +# Float32 attributes + + + +Use [Int32 Attribute](/terraform/plugin/framework/handling-data/attributes/int32) for 32-bit integer numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/attributes/number) for arbitrary precision numbers. + + + +Float32 attributes store a 32-bit floating point number. Values are represented by a [float32 type](/terraform/plugin/framework/handling-data/types/float32) in the framework. + +In this Terraform configuration example, a float32 attribute named `example_attribute` is set to the value `1.23`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = 1.23 +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a float32 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Float32Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Float32Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Float32Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Float32Attribute) | + +In this example, a resource schema defines a top level required float32 attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.Float32Attribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the float32 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [float32 type](/terraform/plugin/framework/handling-data/types/float32). Refer to the collection attribute type documentation for additional details. + +If the float32 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [float32 type](/terraform/plugin/framework/handling-data/types/float32). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`float32default`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32default) package defines common use case `Default` implementations: + +- [`StaticFloat32(float32)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32default#StaticFloat32): Define a static float32 default value for the attribute. + +The [`float32planmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32planmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`float32validator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/float32validator) package within that module has float32 attribute validators such as minimum, maximum, and defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [float32 type](/terraform/plugin/framework/handling-data/types/float32#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [float32 type](/terraform/plugin/framework/handling-data/types/float32#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float64.mdx new file mode 100644 index 0000000000..8ede950a8d --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/float64.mdx @@ -0,0 +1,149 @@ +--- +page_title: Float64 attributes +description: >- + Learn how to use 64-bit floating point attributes with the Terraform plugin + framework. +--- + +# Float64 attributes + + + +Use [Int64 Attribute](/terraform/plugin/framework/handling-data/attributes/int64) for 64-bit integer numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/attributes/number) for arbitrary precision numbers. + + + +Float64 attributes store a 64-bit floating point number. Values are represented by a [float64 type](/terraform/plugin/framework/handling-data/types/float64) in the framework. + +In this Terraform configuration example, a float64 attribute named `example_attribute` is set to the value `1.23`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = 1.23 +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a float64 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Float64Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Float64Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Float64Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Float64Attribute) | + +In this example, a resource schema defines a top level required float64 attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.Float64Attribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the float64 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [float64 type](/terraform/plugin/framework/handling-data/types/float64). Refer to the collection attribute type documentation for additional details. + +If the float64 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [float64 type](/terraform/plugin/framework/handling-data/types/float64). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`float64default`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64default) package defines common use case `Default` implementations: + +- [`StaticFloat64(float64)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64default#StaticFloat64): Define a static float64 default value for the attribute. + +The [`float64planmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`float64validator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/float64validator) package within that module has float64 attribute validators such as minimum, maximum, and defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [float64 type](/terraform/plugin/framework/handling-data/types/float64#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [float64 type](/terraform/plugin/framework/handling-data/types/float64#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/index.mdx new file mode 100644 index 0000000000..58397eacb6 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/index.mdx @@ -0,0 +1,95 @@ +--- +page_title: Attributes +description: >- + The Terraform plugin framework includes multiple built-in attribute types + and supports custom and dynamic attribute types. Each attribute and block in a + Terraform resource, data source, or provider schema maps to a framework or + custom type. +--- + +# Attributes + +Attributes are value storing fields in resource, data source, or provider [schemas](/terraform/plugin/framework/handling-data/schemas). Every attribute has an associated [value type](/terraform/plugin/framework/handling-data/types), which describes the kind of data the attribute can hold. Attributes also can describe value plan modifiers (resources only) and value validators in addition to those defined by the value type. + +## Available Attribute Types + +Schemas support the following attribute types: + +- [Primitive](#primitive-attribute-types): Attribute that contains a single value, such as a boolean, number, or string. +- [Collection](#collection-attribute-types): Attribute that contains multiple values of a single element type, such as a list, map, or set. +- [Nested](#nested-attribute-types): Attribute that defines a structure of explicit attibute names to attribute definitions, potentially with a wrapping collection type, such as a single structure of attributes or a list of structures of attributes. +- [Object](#object-attribute-type): Attribute that defines a structure of explicit attribute names to type-only definitions. +- [Dynamic](#dynamic-attribute-type): Attribute that accepts any value type. + +### Primitive Attribute Types + +Attribute types that contain a single data value, such as a boolean, number, or string. + +| Attribute Type | Use Case | +|----------------|----------| +| [Bool](/terraform/plugin/framework/handling-data/attributes/bool) | Boolean true or false | +| [Float32](/terraform/plugin/framework/handling-data/attributes/float32) | 32-bit floating point number | +| [Float64](/terraform/plugin/framework/handling-data/attributes/float64) | 64-bit floating point number | +| [Int32](/terraform/plugin/framework/handling-data/attributes/int32) | 32-bit integer number | +| [Int64](/terraform/plugin/framework/handling-data/attributes/int64) | 64-bit integer number | +| [Number](/terraform/plugin/framework/handling-data/attributes/number) | Arbitrary precision (generally over 64-bit, up to 512-bit) number | +| [String](/terraform/plugin/framework/handling-data/attributes/string) | Collection of UTF-8 encoded characters | + +### Collection Attribute Types + +Attribute types that contain multiple values of a single element type, such as a list, map, or set. + +| Attribute Type | Use Case | +|----------------|----------| +| [List](/terraform/plugin/framework/handling-data/attributes/list) | Ordered collection of single element type | +| [Map](/terraform/plugin/framework/handling-data/attributes/map) | Mapping of arbitrary string keys to values of single element type | +| [Set](/terraform/plugin/framework/handling-data/attributes/set) | Unordered, unique collection of single element type | + +### Nested Attribute Types + + + +Only supported when using [protocol version 6](/terraform/plugin/framework/provider-servers). + + + +Attribute types that define a structure of explicit attibute names to attribute definitions, potentially with a wrapping collection type, such as a single structure of attributes or a list of structures of attributes. + +| Attribute Type | Use Case | +|----------------|----------| +| [List Nested](/terraform/plugin/framework/handling-data/attributes/list-nested) | Ordered collection of structures of attributes | +| [Map Nested](/terraform/plugin/framework/handling-data/attributes/map-nested) | Mapping of arbitrary string keys to structures of attributes | +| [Set Nested](/terraform/plugin/framework/handling-data/attributes/set-nested) | Unordered, unique collection of structures of attributes | +| [Single Nested](/terraform/plugin/framework/handling-data/attributes/single-nested) | Single structure of attributes | + +### Object Attribute Type + + + +Use [nested attribute types](#nested-attribute-types) where possible. Objects have limited capabilities. + + + +Attribute type that defines a structure of explicit attribute names to type-only definitions. + +| Attribute Type | Use Case | +|----------------|----------| +| [Object](/terraform/plugin/framework/handling-data/attributes/object) | Single structure mapping explicit attribute names to type definitions | + +### Dynamic Attribute Type + + + +Static attribute types should always be preferred over dynamic attribute types, when possible. + +Developers dealing with dynamic attribute data will need to have extensive knowledge of the [Terraform type system](/terraform/language/expressions/types) to properly handle all potential practitioner configuration scenarios. + +Refer to [Dynamic Data - Considerations](/terraform/plugin/framework/handling-data/dynamic-data#considerations) for more information. + + + +Attribute type that can be any value type, determined by Terraform or the provider at runtime. + +| Attribute Type | Use Case | +|----------------|----------| +| [Dynamic](/terraform/plugin/framework/handling-data/attributes/dynamic) | Any value type of data, determined at runtime. | \ No newline at end of file diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int32.mdx new file mode 100644 index 0000000000..6ad24b31c9 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int32.mdx @@ -0,0 +1,149 @@ +--- +page_title: Int32 attributes +description: >- + Learn how to use 32-bit integer attributes with the Terraform plugin + framework. +--- + +# Int32 attributes + + + +Use [Float32 Attribute](/terraform/plugin/framework/handling-data/attributes/float32) for 32-bit floating point numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/attributes/number) for arbitrary precision numbers. + + + +Int32 attributes store a 32-bit integer number. Values are represented by a [int32 type](/terraform/plugin/framework/handling-data/types/int32) in the framework. + +In this Terraform configuration example, an int32 attribute named `example_attribute` is set to the value `123`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = 123 +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a int32 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Int32Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Int32Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Int32Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Int32Attribute) | + +In this example, a resource schema defines a top level required int32 attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.Int32Attribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the int32 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [int32 type](/terraform/plugin/framework/handling-data/types/int32). Refer to the collection attribute type documentation for additional details. + +If the int32 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [int32 type](/terraform/plugin/framework/handling-data/types/int32). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`int32default`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32default) package defines common use case `Default` implementations: + +- [`StaticInt32(int32)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32default#StaticInt32): Define a static int32 default value for the attribute. + +The [`int32planmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`int32validator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/int32validator) package within that module has int32 attribute validators such as minimum, maximum, and defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [int32 type](/terraform/plugin/framework/handling-data/types/int32#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [int32 type](/terraform/plugin/framework/handling-data/types/int32#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int64.mdx new file mode 100644 index 0000000000..82960707db --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/int64.mdx @@ -0,0 +1,149 @@ +--- +page_title: Int64 attributes +description: >- + Learn how to use 64-bit integer attributes with the Terraform plugin + framework. +--- + +# Int64 attributes + + + +Use [Float64 Attribute](/terraform/plugin/framework/handling-data/attributes/float64) for 64-bit floating point numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/attributes/number) for arbitrary precision numbers. + + + +Int64 attributes store a 64-bit integer number. Values are represented by a [int64 type](/terraform/plugin/framework/handling-data/types/int64) in the framework. + +In this Terraform configuration example, an int64 attribute named `example_attribute` is set to the value `123`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = 123 +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a int64 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Int64Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Int64Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Int64Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Int64Attribute) | + +In this example, a resource schema defines a top level required int64 attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.Int64Attribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the int64 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [int64 type](/terraform/plugin/framework/handling-data/types/int64). Refer to the collection attribute type documentation for additional details. + +If the int64 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [int64 type](/terraform/plugin/framework/handling-data/types/int64). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`int64default`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64default) package defines common use case `Default` implementations: + +- [`StaticInt64(int64)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64default#StaticInt64): Define a static int64 default value for the attribute. + +The [`int64planmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`int64validator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/int64validator) package within that module has int64 attribute validators such as minimum, maximum, and defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [int64 type](/terraform/plugin/framework/handling-data/types/int64#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [int64 type](/terraform/plugin/framework/handling-data/types/int64#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list-nested.mdx new file mode 100644 index 0000000000..c3525e0101 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list-nested.mdx @@ -0,0 +1,190 @@ +--- +page_title: List nested attributes +description: >- + Learn how to use list nested attributes with the Terraform plugin framework. +--- + +# List nested attributes + +List nested attributes store an ordered collection of nested objects. Values are represented by a [list type](/terraform/plugin/framework/handling-data/types/list) in the framework, containing elements of [object type](/terraform/plugin/framework/handling-data/types/object). + +In this Terraform configuration example, a list nested attribute named `example_attribute` is set to the ordered object values of `attr` to `"one"` and `attr` to `"two"`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = [ + { + attr = "one" + }, + { + attr = "two" + }, + ] +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a list nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ListNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ListNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ListNestedAttribute) | + +The `NestedObject` field must be defined, which represents the [object value type](/terraform/plugin/framework/handling-data/types/object) of every element of the list. + +In this example, a resource schema defines a top level required list nested attribute named `example_attribute` with a required string attribute named `attr`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "attr": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.List` of `types.Object` where the `types.Object` is a mapping of `attr` to `types.String`. + +A nested attribute type may itself contain further collection or nested attribute types, if necessary. + +In this example, a resource schema defines a top level required list nested attribute named `example_attribute` with a required list of strings attribute named `attr1` and an optional single nested attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ /* ... */ }, + Optional: true, + // ... potentially other fields ... + }, + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.List` of `types.Object` where the `types.Object` is a mapping of `attr1` to `types.List` of `types.String` and `attr2` to `types.Object`. + +### Configurability + + + +Only the list nested attribute itself is defined by the `schema.ListNestedAttribute` configurability fields. Nested attributes must define their own configurability fields within each attribute definition. + + + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`listdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.List)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault#StaticValue): Define a static list default value for the attribute. + +The [`listplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +If a nested attribute has the `WriteOnly` field set, all child attributes must also have `WriteOnly` set. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`listvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator) package within that module has list attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [list type](/terraform/plugin/framework/handling-data/types/list#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [list type](/terraform/plugin/framework/handling-data/types/list#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list.mdx new file mode 100644 index 0000000000..3d88ab1b70 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/list.mdx @@ -0,0 +1,166 @@ +--- +page_title: List attributes +description: >- + Learn how to use list attributes with the Terraform plugin framework. +--- + +# List attributes + +List attributes store an ordered collection of single element type. Values are represented by a [list type](/terraform/plugin/framework/handling-data/types/list) in the framework, containing elements of the element type. + +In this Terraform configuration example, a list of string attribute named `example_attribute` is set to the ordered values `"one"` and `"two"`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = ["one", "two"] +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a list value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ListAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ListAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ListAttribute) | + +The `ElementType` field must be defined, which represents the single [value type](/terraform/plugin/framework/handling-data/types) of every element of the list. + +In this example, a resource schema defines a top level required list of strings attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +An element type may itself contain further collection types, if necessary. + +In this example, a resource schema defines a top level required list of list of strings attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.ListAttribute{ + ElementType: types.ListType{ + ElemType: types.StringType, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the list value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [list type](/terraform/plugin/framework/handling-data/types/list). Refer to the collection attribute type documentation for additional details. + +If the list value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [list type](/terraform/plugin/framework/handling-data/types/list). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`listdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.List)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault#StaticValue): Define a static list default value for the attribute. + +The [`listplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`listvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator) package within that module has list attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [list type](/terraform/plugin/framework/handling-data/types/list#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [list type](/terraform/plugin/framework/handling-data/types/list#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map-nested.mdx new file mode 100644 index 0000000000..39b3a2a24a --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map-nested.mdx @@ -0,0 +1,190 @@ +--- +page_title: Map nested attributes +description: >- + Learn how to use map nested attributes with the Terraform plugin framework. +--- + +# Map Nested Attribute + +Map nested attributes store mapping of arbitrary string keys to nested objects. Values are represented by a [map type](/terraform/plugin/framework/handling-data/types/map) in the framework, containing elements of [object type](/terraform/plugin/framework/handling-data/types/object). + +In this Terraform configuration example, a map nested attribute named `example_attribute` is set to the mapped values of `"key1"` to the object value of `attr` to `"one"` and `"key2"` to the object value of `attr` to `"two"`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = { + "key1" = { + attr = "one" + }, + "key2" = { + attr = "two" + }, + } +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a map nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#MapNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#MapNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#MapNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#MapNestedAttribute) | + +The `NestedObject` field must be defined, which represents the [object value type](/terraform/plugin/framework/handling-data/types/object) of every element of the list. + +In this example, a resource schema defines a top level required map nested attribute named `example_attribute` with a required string attribute named `attr`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.MapNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "attr": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Map` of `types.Object` where the `types.Object` is a mapping of `attr` to `types.String`. + +A nested attribute type may itself contain further collection or nested attribute types, if necessary. + +In this example, a resource schema defines a top level required map nested attribute named `example_attribute` with a required list of strings attribute named `attr1` and an optional single nested attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.MapNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ /* ... */ }, + Optional: true, + // ... potentially other fields ... + }, + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Map` of `types.Object` where the `types.Object` is a mapping of `attr1` to `types.List` of `types.String` and `attr2` to `types.Object`. + +### Configurability + + + +Only the map nested attribute itself is defined by the `schema.MapNestedAttribute` configurability fields. Nested attributes must define their own configurability fields within each attribute definition. + + + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`mapdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Map)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapdefault#StaticValue): Define a static list default value for the attribute. + +The [`mapplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +If a nested attribute has the `WriteOnly` field set, all child attributes must also have `WriteOnly` set. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`mapvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/mapvalidator) package within that module has map attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [map type](/terraform/plugin/framework/handling-data/types/map#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [map type](/terraform/plugin/framework/handling-data/types/map#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map.mdx new file mode 100644 index 0000000000..5c791e3228 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/map.mdx @@ -0,0 +1,160 @@ +--- +page_title: Map attributes +description: >- + Learn how to use map attributes with the Terraform plugin framework. +--- + +# Map attributes + +Map attributes store a mapping of arbitrary string keys to values of single element type. Values are represented by a [map type](/terraform/plugin/framework/handling-data/types/map) in the framework, containing elements of the element type. + +In this Terraform configuration example, a map of string attribute named `example_attribute` is set to the mapped values of `"key1"` to `"value1"` and `"key2"` to `"value2"`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = { + "key1" = "value1" + "key2" = "value2" + } +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a map value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#MapAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#MapAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#MapAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#MapAttribute) | + +The `ElementType` field must be defined, which represents the single [value type](/terraform/plugin/framework/handling-data/types) of every element of the map. + +In this example, a resource schema defines a top level required map of strings attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.MapAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +An element type may itself contain further collection types, if necessary. + +In this example, a resource schema defines a top level required map of map of strings attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.MapAttribute{ + ElementType: types.MapType{ + ElemType: types.StringType, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the map value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [map type](/terraform/plugin/framework/handling-data/types/map). Refer to the collection attribute type documentation for additional details. + +If the map value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [map type](/terraform/plugin/framework/handling-data/types/map). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`mapdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Map)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapdefault#StaticValue): Define a static map default value for the attribute. + +The [`mapplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`mapvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/mapvalidator) package within that module has map attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [map type](/terraform/plugin/framework/handling-data/types/map#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [map type](/terraform/plugin/framework/handling-data/types/map#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/number.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/number.mdx new file mode 100644 index 0000000000..97466bbd37 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/number.mdx @@ -0,0 +1,149 @@ +--- +page_title: Number attributes +description: >- + Learn how to use arbitrary precision number attributes with the Terraform + plugin framework. +--- + +# Number attributes + + + +Use [Float64 Attribute](/terraform/plugin/framework/handling-data/attributes/float64) for 64-bit floating point numbers. Use [Int64 Attribute](/terraform/plugin/framework/handling-data/attributes/int64) for 64-bit integer numbers. + + + +Number attributes store an arbitrary precision (generally over 64-bit, up to 512-bit) number. Values are represented by a [number type](/terraform/plugin/framework/handling-data/types/number) in the framework. + +In this Terraform configuration example, an number attribute named `example_attribute` is set to a value greater than 64 bits: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = pow(2, 64) + 1 +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a number value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#NumberAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#NumberAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#NumberAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#NumberAttribute) | + +In this example, a resource schema defines a top level required number attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.NumberAttribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the number value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [number type](/terraform/plugin/framework/handling-data/types/number). Refer to the collection attribute type documentation for additional details. + +If the number value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [number type](/terraform/plugin/framework/handling-data/types/number). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`numberdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberdefault) package defines common use case `Default` implementations: + +- [`StaticNumber(number)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberdefault#StaticNumber): Define a static number default value for the attribute. + +The [`numberplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`numbervalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/numbervalidator) package within that module has number attribute validators such as minimum, maximum, and defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [number type](/terraform/plugin/framework/handling-data/types/number#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [number type](/terraform/plugin/framework/handling-data/types/number#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/object.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/object.mdx new file mode 100644 index 0000000000..a2328540e0 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/object.mdx @@ -0,0 +1,194 @@ +--- +page_title: Object attributes +description: >- + Learn how to use object attributes with the Terraform plugin framework. +--- + +# Object attributes + + + +Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of object attribute types where possible. Object attributes have limited utility as they can only define type information. A [single nested attribute type](/terraform/plugin/framework/handling-data/attributes/single-nested) supports the same configuration syntax as an object while each nested attribute can be fully defined in terms of configurability, validation, etc. + + + +Object attributes are a single structure mapping explicit attribute names to type definitions. Values are represented by a [object type](/terraform/plugin/framework/handling-data/types/object) in the framework, containing sub-attribute values of the mapped types. + +In this Terraform configuration example, an object attribute named `example_attribute` is set to the mapped values of `attr1` to `"value1"` and `attr2` to `123`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = { + attr1 = "value1" + attr2 = 123 + } +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a map value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ObjectAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ObjectAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ObjectAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ObjectAttribute) | + +The `AttributeTypes` field must be defined, which represents the mapping of explicit string object attribute names to [value types](/terraform/plugin/framework/handling-data/types). + +In this example, a resource schema defines a top level required object attribute named `example_attribute` with a string sub-attribute named `attr1` and integer sub-attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.ObjectAttribute{ + AttributeTypes: map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +A sub-attribute type may itself contain further collection types, if necessary. + +In this example, a resource schema defines a top level required object attribute named `example_attribute` with a list of strings sub-attribute named `attr1` and integer sub-attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.ObjectAttribute{ + AttributeTypes: map[string]attr.Type{ + "attr1": types.ListType{ + ElemType: types.StringType, + }, + "attr2": types.Int64Type, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the object value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [object type](/terraform/plugin/framework/handling-data/types/object). Refer to the collection attribute type documentation for additional details. + +### Configurability + + + +Only the object attribute itself, not individual sub-attributes, can define its configurability. Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) for full control of nested attribute capabilities. + + + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + + + +Only the object attribute itself, not individual sub-attributes, can define deprecation. Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) for full control of nested attribute capabilities. + + + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + + + +Only the object attribute itself, not individual sub-attributes, can define its description. Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) for full control of nested attribute capabilities. + + + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`objectdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Object)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault#StaticValue): Define a static object default value for the attribute. + +The [`objectplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + + + +Only the object attribute itself, not individual sub-attributes, can define its sensitivity. Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) for full control of nested attribute capabilities. + + + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`objectvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/objectvalidator) package within that module has map attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [object type](/terraform/plugin/framework/handling-data/types/object#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [object type](/terraform/plugin/framework/handling-data/types/object#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set-nested.mdx new file mode 100644 index 0000000000..8a54622d4f --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set-nested.mdx @@ -0,0 +1,176 @@ +--- +page_title: Set nested attributes +description: >- + Learn how to use set nested attributes with the Terraform plugin framework. +--- + +# Set nested attributes + +Set nested attributes store a unique, unordered collection of nested objects. Values are represented by a [set type](/terraform/plugin/framework/handling-data/types/set) in the framework, containing elements of [object type](/terraform/plugin/framework/handling-data/types/object). + +In this Terraform configuration example, a set nested attribute named `example_attribute` is set to the unordered object values of `attr` to `"one"` and `attr` to `"two"`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = [ + { + attr = "one" + }, + { + attr = "two" + }, + ] +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a set nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SetNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SetNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SetNestedAttribute) | + +The `NestedObject` field must be defined, which represents the [object value type](/terraform/plugin/framework/handling-data/types/object) of every element of the set. + +In this example, a resource schema defines a top level required set nested attribute named `example_attribute` with a required string attribute named `attr`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.SetNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "attr": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Set` of `types.Object` where the `types.Object` is a mapping of `attr` to `types.String`. + +A nested attribute type may itself contain further collection or nested attribute types, if necessary. + +In this example, a resource schema defines a top level required set nested attribute named `example_attribute` with a required list of strings attribute named `attr1` and an optional single nested attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.SetNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ /* ... */ }, + Optional: true, + // ... potentially other fields ... + }, + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Set` of `types.Object` where the `types.Object` is a mapping of `attr1` to `types.List` of `types.String` and `attr2` to `types.Object`. + +### Configurability + + + +Only the set nested attribute itself is defined by the `schema.SetNestedAttribute` configurability fields. Nested attributes must define their own configurability fields within each attribute definition. + + + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`setdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.List)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault#StaticValue): Define a static set default value for the attribute. + +The [`setplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`setvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator) package within that module has set attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [set type](/terraform/plugin/framework/handling-data/types/set#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [set type](/terraform/plugin/framework/handling-data/types/set#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set.mdx new file mode 100644 index 0000000000..01c6125407 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/set.mdx @@ -0,0 +1,145 @@ +--- +page_title: Set attributes +description: >- + Learn how to use set attributes with the Terraform plugin framework. +--- + +# Set attributes + +Set attributes store an unique, unordered collection of single element type. Values are represented by a [set type](/terraform/plugin/framework/handling-data/types/set) in the framework, containing elements of the element type. + +In this Terraform configuration example, a set of string attribute named `example_attribute` is set to the unordered values `"one"` and `"two"`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = ["one", "two"] +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a set value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SetAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SetAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SetAttribute) | + +The `ElementType` field must be defined, which represents the single [value type](/terraform/plugin/framework/handling-data/types) of every element of the set. + +In this example, a resource schema defines a top level required set of strings attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.SetAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +An element type may itself contain further collection types, if necessary. + +In this example, a resource schema defines a top level required set of set of strings attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.SetAttribute{ + ElementType: types.SetType{ + ElemType: types.StringType, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the set value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [set type](/terraform/plugin/framework/handling-data/types/set). Refer to the collection attribute type documentation for additional details. + +If the set value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value according to the [set type](/terraform/plugin/framework/handling-data/types/set). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`setdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Set)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault#StaticValue): Define a static set default value for the attribute. + +The [`setplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`setvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator) package within that module has set attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [set type](/terraform/plugin/framework/handling-data/types/set#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [set type](/terraform/plugin/framework/handling-data/types/set#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/single-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/single-nested.mdx new file mode 100644 index 0000000000..fe483016a3 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/single-nested.mdx @@ -0,0 +1,186 @@ +--- +page_title: Single nested attributes +description: >- + Learn how to use single nested attributes with the Terraform plugin framework. +--- + +# Single nested attributes + +Single nested attributes are a single structure mapping explicit attribute names to nested attribute definitions. Values are represented by a [object type](/terraform/plugin/framework/handling-data/types/object) in the framework, containing nested attribute values of the mapped attributes. + +In this Terraform configuration example, a single nested attribute named `example_attribute` is set to the mapped values of `attr1` to `"value1"` and `attr2` to `123`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = { + attr1 = "value1" + attr2 = 123 + } +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a single nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SingleNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SingleNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SingleNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SingleNestedAttribute) | + +In most use cases, the `Attributes` field should be defined, which represents the mapping of explicit string attribute names to nested attributes. + +In this example, a resource schema defines a top level required single nested attribute named `example_attribute` with a required string attribute named `attr1` and optional integer attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.Int64Attribute{ + Optional: true, + // ... potentially other fields ... + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Object` with a mapping of `attr1` to `types.String` and `attr2` to `types.Int64`. + +A nested attribute type may itself contain further collection or nested attribute types, if necessary. + +In this example, a resource schema defines a top level required single nested attribute named `example_attribute` with a required list of strings attribute named `attr1` and an optional single attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ /* ... */ }, + Optional: true, + // ... potentially other fields ... + }, + }, + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Object` with a mapping of `attr1` to `types.List` of `types.String` and `attr2` to `types.Object`. + +### Configurability + + + +Only the single nested attribute itself is defined by the `schema.SingleNestedAttribute` configurability fields. Nested attributes must define their own configurability fields within each attribute definition. + + + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`objectdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Object)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault#StaticValue): Define a static object default value for the attribute. + +The [`objectplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +If a nested attribute has the `WriteOnly` field set, all child attributes must also have `WriteOnly` set. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`objectvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/objectvalidator) package within that module has object attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [object type](/terraform/plugin/framework/handling-data/types/object#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [object type](/terraform/plugin/framework/handling-data/types/object#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/string.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/string.mdx new file mode 100644 index 0000000000..76232f93e9 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/attributes/string.mdx @@ -0,0 +1,150 @@ +--- +page_title: String attributes +description: >- + Learn how to use string attributes with the Terraform plugin framework. +--- + +# String attributes + +String attributes store a collection of UTF-8 encoded bytes. Values are represented by a [string type](/terraform/plugin/framework/handling-data/types/string) in the framework. + +In this Terraform configuration example, a string attribute named `example_attribute` is set to the value `terraform`: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = "terraform" +} +``` + +## Schema Definition + +Use one of the following attribute types to directly add a string value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#StringAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#StringAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#StringAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#StringAttribute) | + +In this example, a resource schema defines a top level required string attribute named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If the string value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field according to the [string type](/terraform/plugin/framework/handling-data/types/string). Refer to the collection attribute type documentation for additional details. + +If the string value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value according to the [string type](/terraform/plugin/framework/handling-data/types/string). Refer to the object attribute type documentation for additional details. + +### Configurability + +At least one of the `Computed`, `Optional`, or `Required` fields must be set to `true`. This defines how Terraform and the framework should expect data to set, whether the value is from the practitioner configuration or from the provider logic, such as API response value. + +The acceptable behaviors of these configurability options are: + +- `Required` only: The value must be practitioner configured to an eventually known value (not null), otherwise the framework will automatically raise an error diagnostic for the missing value. +- `Optional` only: The value may be practitioner configured to a known value or null. +- `Optional` and `Computed`: The value may be practitioner configured or the value may be set in provider logic when the practitioner configuration is null. +- `Computed` only: The value will be set in provider logic and any practitioner configuration causes the framework to automatically raise an error diagnostic for the unexpected configuration value. + +#### Resource Identity + +If creating a resource identity schema, set either `OptionalForImport` or `RequiredForImport` to `true` to inform Terraform if practitioners must set the attribute when importing with that resource's identity. + +The acceptable behaviors of these configurability options are: + +- `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`), otherwise Terraform automatically raises an error diagnostic for the missing value. +- `OptionalForImport` only: A practitioner must configure the value to a known value or `null`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +#### Common Use Case Types + +HashiCorp provides additional Go modules which contain custom string type implementations covering common use cases with validation and semantic equality logic: + +- [`terraform-plugin-framework-jsontypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-jsontypes): JSON encoded strings, such as exact byte strings and normalized strings +- [`terraform-plugin-framework-nettypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-nettypes): Networking strings, such as IPv4 addresses, IPv6 addresses, and CIDRs +- [`terraform-plugin-framework-timetypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timetypes): Timestamp strings, such as RFC3339 + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`stringdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault) package defines common use case `Default` implementations: + +- [`StaticString(string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault#StaticString): Define a static string default value for the attribute. + +The [`stringplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Sensitive + +Set the `Sensitive` field if the attribute value should always be considered [sensitive data](/terraform/language/state/sensitive-data). In Terraform, this will generally mask the value in practitioner output. This setting cannot be conditionally set and does not impact how data is stored in the state. + +### WriteOnly + + + + Only managed resources implement this concept. + + + +Set the `WriteOnly` field to define a [write-only argument](/terraform/plugin/framework/resources/write-only-arguments). +Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) +and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`stringvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator) package within that module has string attribute validators such as length, regular expression pattern, and defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [string type](/terraform/plugin/framework/handling-data/types/string#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [string type](/terraform/plugin/framework/handling-data/types/string#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/index.mdx new file mode 100644 index 0000000000..af96c50218 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/index.mdx @@ -0,0 +1,25 @@ +--- +page_title: Blocks +description: >- + Learn how to use block types with the Terraform plugin framework. Blocks are + containers for nested attributes and blocks in a resource, data source, or + provider schema. +--- + +# Blocks + + + +Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of block types for new schema implementations. Block support is mainly for migrating legacy SDK-based providers. + + + +Blocks are containers for other attributes and blocks in resource, data source, or provider [schemas](/terraform/plugin/framework/handling-data/schemas). Every block has an associated [value type](/terraform/plugin/framework/handling-data/types), which describes the kind of data the block holds. Blocks also can describe value plan modifiers (resources only) and value validators in addition to those defined by the value type. + +## Available Block Types + +| Block Type | Use Case | +|----------------|----------| +| [List Nested](/terraform/plugin/framework/handling-data/blocks/list-nested) | Ordered collection of structures of attributes/blocks | +| [Set Nested](/terraform/plugin/framework/handling-data/blocks/set-nested) | Unordered, unique collection of structures of attributes/blocks | +| [Single Nested](/terraform/plugin/framework/handling-data/blocks/single-nested) | Single structure of attributes/blocks | diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/list-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/list-nested.mdx new file mode 100644 index 0000000000..373c69d0be --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/list-nested.mdx @@ -0,0 +1,169 @@ +--- +page_title: List nested blocks +description: >- + Learn how to implement the list nested block type with the Terraform plugin + framework. +--- + +# List nested blocks + + + +Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of block types for new schema implementations. Block support is mainly for migrating legacy SDK-based providers. + + + +List nested blocks are an ordered collection of structures mapping explicit attribute names to nested attribute and block definitions. Values are represented by a [list type](/terraform/plugin/framework/handling-data/types/list) in the framework, containing [object type](/terraform/plugin/framework/handling-data/types/object) of the mapped attributes and blocks. + +In this Terraform configuration example, a list nested block named `example_block` is set to an ordered collection of an object value of `attr1` to `"value1"` and `attr2` to `123` and an object value of `attr1` to `"value2"` and `attr2` to `456`: + +```hcl +resource "examplecloud_thing" "example" { + example_block { + attr1 = "value1" + attr2 = 123 + } + + example_block { + attr1 = "value2" + attr2 = 456 + } +} +``` + +## Schema Definition + + + +Blocks can only be defined on schemas or nested blocks within a schema, not underneath an attribute or nested attribute. + + + +Use one of the following block types to directly add a list nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [block type](/terraform/plugin/framework/handling-data/blocks): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ListNestedBlock) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ListNestedBlock) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListNestedBlock) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ListNestedBlock) | + +The `NestedObject` field must be defined, which represents the [object value type](/terraform/plugin/framework/handling-data/types/object) of every element of the list. + +In this example, a resource schema defines a top level list nested block named `example_block` with a required string attribute named `attr1` and optional integer attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Block{ + "example_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.Int64Attribute{ + Optional: true, + // ... potentially other fields ... + }, + }, + }, + // ... potentially other fields ... + }, + // ... potentially other blocks ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as `types.List` of `types.Object` with a mapping of `attr1` to `types.String` and `attr2` to `types.Int64`. + +A block type may itself contain further collection or nested attribute/block types, if necessary. + +In this example, a resource schema defines a top level list nested block named `example_block` with a required list of strings attribute named `attr` and a single nested block named `block`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Block{ + "example_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "attr": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + }, + Blocks: map[string]schema.Block{ + "block": schema.ListNestedBlock{ /* ... */ }, + }, + }, + // ... potentially other fields ... + }, + // ... potentially other blocks ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.List` of `types.Object` with a mapping of `attr` to `types.List` of `types.String` and `block` to `types.Object`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`listdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.List)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault#StaticValue): Define a static list default value for the attribute. + +The [`listplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`listvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator) package within that module has list attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [list type](/terraform/plugin/framework/handling-data/types/list#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [list type](/terraform/plugin/framework/handling-data/types/list#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/set-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/set-nested.mdx new file mode 100644 index 0000000000..c7909aa0e8 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/set-nested.mdx @@ -0,0 +1,168 @@ +--- +page_title: Set nested blocks +description: >- + Learn to implement the set nested block type with the Terraform plugin framework. +--- + +# Set nested blocks + + + +Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of block types for new schema implementations. Block support is mainly for migrating legacy SDK-based providers. + + + +Set nested blocks are an unique, unordered collection of structures mapping explicit attribute names to nested attribute and block definitions. Values are represented by a [set type](/terraform/plugin/framework/handling-data/types/set) in the framework, containing [object type](/terraform/plugin/framework/handling-data/types/object) of the mapped attributes and blocks. + +In this Terraform configuration example, a set nested block named `example_block` is set to an unordered collection of an object value of `attr1` to `"value1"` and `attr2` to `123` and an object value of `attr1` to `"value2"` and `attr2` to `456`: + +```hcl +resource "examplecloud_thing" "example" { + example_block { + attr1 = "value1" + attr2 = 123 + } + + example_block { + attr1 = "value2" + attr2 = 456 + } +} +``` + +## Schema Definition + + + +Blocks can only be defined on schemas or nested blocks within a schema, not underneath an attribute or nested attribute. + + + +Use one of the following block types to directly add a list nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [block type](/terraform/plugin/framework/handling-data/blocks): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SetNestedBlock) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SetNestedBlock) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetNestedBlock) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SetNestedBlock) | + +The `NestedObject` field must be defined, which represents the [object value type](/terraform/plugin/framework/handling-data/types/object) of every element of the set. + +In this example, a resource schema defines a top level set nested block named `example_block` with a required string attribute named `attr1` and optional integer attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Attribute{ + "example_block": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.Int64Attribute{ + Optional: true, + // ... potentially other fields ... + }, + }, + }, + // ... potentially other fields ... + }, + // ... potentially other blocks ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as `types.Set` of `types.Object` with a mapping of `attr1` to `types.String` and `attr2` to `types.Int64`. + +A block type may itself contain further collection or nested attribute/block types, if necessary. + +In this example, a resource schema defines a top level set nested block named `example_block` with a required list of strings attribute named `attr` and a single nested block named `block`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Block{ + "example_block": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "attr": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + }, + Blocks: map[string]schema.Block{ + "block": schema.SetNestedBlock{ /* ... */ }, + }, + }, + // ... potentially other fields ... + }, + // ... potentially other blocks ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Set` of `types.Object` with a mapping of `attr` to `types.List` of `types.String` and `block` to `types.Object`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`setdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Set)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault#StaticValue): Define a static list default value for the attribute. + +The [`setplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`setvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator) package within that module has set attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [set type](/terraform/plugin/framework/handling-data/types/set#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [set type](/terraform/plugin/framework/handling-data/types/set#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/single-nested.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/single-nested.mdx new file mode 100644 index 0000000000..4f3d41b09d --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/blocks/single-nested.mdx @@ -0,0 +1,160 @@ +--- +page_title: Single nested blocks +description: >- + Learn to implement the single nested block type with the Terraform plugin + framework. +--- + +# Single nested blocks + + + +Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of block types for new schema implementations. Block support is mainly for migrating legacy SDK-based providers. + + + +Single nested blocks are a single structure mapping explicit attribute names to nested attribute and block definitions. Values are represented by a [object type](/terraform/plugin/framework/handling-data/types/object) in the framework, containing nested attribute values of the mapped attributes and blocks. + +In this Terraform configuration example, a single nested block named `example_block` is set to the mapped values of `attr1` to `"value1"` and `attr2` to `123`: + +```hcl +resource "examplecloud_thing" "example" { + example_block { + attr1 = "value1" + attr2 = 123 + } +} +``` + +## Schema Definition + + + +Blocks can only be defined on schemas or nested blocks within a schema, not underneath an attribute or nested attribute. + + + +Use one of the following block types to directly add a single nested value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [block type](/terraform/plugin/framework/handling-data/blocks): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SingleNestedBlock) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SingleNestedBlock) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SingleNestedBlock) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SingleNestedBlock) | + +In most use cases, the `Attributes` or `Blocks` field should be defined, which represents the mapping of explicit string attribute names to nested attributes and/or blocks. + +In this example, a resource schema defines a top level single nested block named `example_block` with a required string attribute named `attr1` and optional integer attribute named `attr2`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Block{ + "example_block": schema.SingleNestedBlock{ + Attributes: map[string]schema.Attribute{ + "attr1": schema.StringAttribute{ + Required: true, + // ... potentially other fields ... + }, + "attr2": schema.Int64Attribute{ + Optional: true, + // ... potentially other fields ... + }, + }, + // ... potentially other fields ... + }, + // ... potentially other blocks ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Object` with a mapping of `attr1` to `types.String` and `attr2` to `types.Int64`. + +A block type may itself contain further collection or nested attribute/block types, if necessary. + +In this example, a resource schema defines a top level single nested block named `example_block` with a required list of strings attribute named `attr` and a single nested block named `block`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Block{ + "example_block": schema.SingleNestedBlock{ + Attributes: map[string]schema.Attribute{ + "attr": schema.ListAttribute{ + ElementType: types.StringType, + Required: true, + // ... potentially other fields ... + }, + }, + Blocks: map[string]schema.Block{ + "block": schema.SingleNestedBlock{ /* ... */ }, + }, + // ... potentially other fields ... + }, + // ... potentially other blocks ... + }, + } +} +``` + +Its [value type](/terraform/plugin/framework/handling-data/types) would be represented as a `types.Object` with a mapping of `attr` to `types.List` of `types.String` and `block` to `types.Object`. + +### Custom Types + +You may want to build your own attribute value and type implementations to allow your provider to combine validation, description, and plan customization behaviors into a reusable bundle. This helps avoid duplication or reimplementation and ensures consistency. These implementations use the `CustomType` field in the attribute type. + +Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values. + +### Deprecation + +Set the `DeprecationMessage` field to a practitioner-focused message for how to handle the deprecation. The framework will automatically raise a warning diagnostic with this message if the practitioner configuration contains a known value for the attribute. Terraform version 1.2.7 and later will raise a warning diagnostic in certain scenarios if the deprecated attribute value is referenced elsewhere in a practitioner configuration. The framework [deprecations](/terraform/plugin/framework/deprecations) documentation fully describes the recommended practices for deprecating an attribute or resource. + +Some practitioner-focused examples of a deprecation message include: + +- Configure `other_attribute` instead. This attribute will be removed in the next major version of the provider. +- Remove this attribute's configuration as it no longer is used and the attribute will be removed in the next major version of the provider. + +### Description + +The framework provides two description fields, `Description` and `MarkdownDescription`, which various tools use to show additional information about an attribute and its intended purpose. This includes, but is not limited to, [`terraform-plugin-docs`](https://github.com/hashicorp/terraform-plugin-docs) for automated provider documentation generation and [`terraform-ls`](https://github.com/hashicorp/terraform-ls) for Terraform configuration editor integrations. + +### Plan Modification + + + +Only managed resources implement this concept. + + + +The framework provides two plan modification fields for managed resource attributes, `Default` and `PlanModifiers`, which define resource and attribute value planning behaviors. The resource [default](/terraform/plugin/framework/resources/default) and [plan modification](/terraform/plugin/framework/resources/plan-modification) documentation covers these features more in-depth. + +#### Common Use Case Plan Modification + +The [`objectdefault`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault) package defines common use case `Default` implementations: + +- [`StaticValue(types.Object)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault#StaticValue): Define a static object default value for the attribute. + +The [`objectplanmodifier`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier) package defines common use case `PlanModifiers` implementations: + +- [`RequiresReplace()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplace): Marks the resource for replacement if the resource is being updated and the plan value does not match the prior state value. +- [`RequiresReplaceIf()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplaceIf): Similar to `RequiresReplace()`, but also checks if a given function returns true. +- [`RequiresReplaceIfConfigured()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#RequiresReplaceIfConfigured): Similar to `RequiresReplace()`, but also checks if the configuration value is not null. +- [`UseStateForUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier#UseStateForUnknown): Copies a known prior state value into the planned value. Use this when it is known that an unconfigured value will remain the same after a resource update. + +### Validation + +Set the `Validators` field to define [validation](/terraform/plugin/framework/validation#attribute-validation). This validation logic is ran in addition to any validation contained within a [custom type](#custom-types). + +#### Common Use Case Validators + +HashiCorp provides the additional [`terraform-plugin-framework-validators`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) Go module which contains validation logic for common use cases. The [`objectvalidator`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/objectvalidator) package within that module has object attribute validators such as defining conflicting attributes. + +## Accessing Values + +The [accessing values](/terraform/plugin/framework/handling-data/accessing-values) documentation covers general methods for reading [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data, which is necessary before accessing an attribute value directly. The [object type](/terraform/plugin/framework/handling-data/types/object#accessing-values) documentation covers methods for interacting with the attribute value itself. + +## Setting Values + +The [object type](/terraform/plugin/framework/handling-data/types/object#setting-values) documentation covers methods for creating or setting the appropriate value. The [writing data](/terraform/plugin/framework/handling-data/writing-state) documentation covers general methods for writing [schema](/terraform/plugin/framework/handling-data/schemas) (plan and state) data, which is necessary afterwards. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/dynamic-data.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/dynamic-data.mdx new file mode 100644 index 0000000000..07f845f418 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/dynamic-data.mdx @@ -0,0 +1,223 @@ +--- +page_title: Handling dynamic data +description: >- + Learn how to handle data when using dynamic types in the Terraform plugin + framework. +--- + +# Handling dynamic data + + + +Static types should always be preferred over dynamic types, when possible. + + + +Dynamic data handling uses the [framework dynamic type](/terraform/plugin/framework/handling-data/types/dynamic) to communicate to Terraform that the value type of a specific field will be determined at runtime. This allows a provider developer to handle multiple value types of data with a single attribute, parameter, or return. + +Dynamic data can be defined with: +- [Dynamic attribute](/terraform/plugin/framework/handling-data/attributes/dynamic) +- A [dynamic](/terraform/plugin/framework/handling-data/types/dynamic) attribute type in an [object attribute](/terraform/plugin/framework/handling-data/attributes/object) +- [Dynamic function parameter](/terraform/plugin/framework/functions/parameters/dynamic) +- [Dynamic function return](/terraform/plugin/framework/functions/returns/dynamic) +- A [dynamic](/terraform/plugin/framework/handling-data/types/dynamic) attribute type in an [object parameter](/terraform/plugin/framework/functions/parameters/object) +- A [dynamic](/terraform/plugin/framework/handling-data/types/dynamic) attribute type in an [object return](/terraform/plugin/framework/functions/returns/object) + +Using dynamic data has a negative impact on practitioner experience when using Terraform and downstream tooling, like practitioner configuration editor integrations. Dynamics do not change how [Terraform's static type system](/terraform/language/expressions/types) behaves and all data consistency rules are applied the same as static types. Provider developers should understand all the below [considerations](#considerations) when creating a provider with a dynamic type. + +Only use a dynamic type when there is not a suitable static type alternative. + +## Considerations + +When dynamic data is used, Terraform will no longer have any static information about the value types expected for a given attribute, function parameter, or function return. This results in behaviors that the provider developer will need to account for with additional documentation, code, error messaging, etc. + +### Downstream Tooling + +Practitioner configuration editor integrations, like the Terraform VSCode extension and language server, cannot provide any static information when using dynamic data in configurations. This can result in practitioners using dynamic data in expressions (like [`for`](/terraform/language/expressions/for)) incorrectly that will only error at runtime. + +Given this example, a resource schema defines a top level computed [dynamic attribute](/terraform/plugin/framework/handling-data/attributes/dynamic) named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.DynamicAttribute{ + Computed: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +The configuration below would be valid until a practitioner runs an apply. If the type of `example_attribute` is not iterable, then the practitioner will receive an error only when they run a command: + +```hcl +resource "examplecloud_thing" "example" {} + +output "dynamic_output" { + value = [for val in examplecloud_thing.example.example_attribute : val] +} +``` + +Results in the following error: + +```bash +│ Error: Iteration over non-iterable value +│ +│ on resource.tf line 15, in output "dynamic_output": +│ 15: value = [for val in examplecloud_thing.example.example_attribute : val] +│ ├──────────────── +│ │ examplecloud_thing.example.example_attribute is "string value" +│ +│ A value of type string cannot be used as the collection in a 'for' expression. +``` + +Dynamic data that is meant for practitioners to utilize in configurations should document all potential output types and expected usage to avoid confusing errors. + +### Handling All Possible Types + +Terraform will not [automatically convert](/terraform/language/expressions/types#type-conversion) values to conform to a static type, exposing provider developers to the Terraform type system directly. Provider developers will need to deal with this lack of type conversion by writing logic that handles [every possible type](/terraform/language/expressions/types#types) that Terraform supports. + +In this example, a resource schema defines a top level required [dynamic attribute](/terraform/plugin/framework/handling-data/attributes/dynamic) named `example_attribute`: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.DynamicAttribute{ + Required: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +An example of handling every possible Terraform type that could be provided to a configuration would be: + +```go + // Example data model definition + // type ExampleModel struct { + // ExampleAttribute types.Dynamic `tfsdk:"example_attribute"` + // } + switch value := data.ExampleAttribute.UnderlyingValue().(type) { + case types.Bool: + // Handle boolean value + case types.Number: + // Handle float64, int64, and number values + case types.List: + // Handle list value + case types.Map: + // Handle map value + case types.Object: + // Handle object value + case types.Set: + // Handle set value + case types.String: + // Handle string value + case types.Tuple: + // Handle tuple value + } +``` + +When writing test configurations and debugging provider issues, developers will also want to understand how Terraform represents [complex type literals](/terraform/language/expressions/type-constraints#complex-type-literals). For example, Terraform does not provide any way to directly represent lists, maps, or sets. + + +### Handling Underlying Null and Unknown Values + +With dynamic data, in addition to typical [null](/terraform/plugin/framework/handling-data/terraform-concepts#null-values) and [unknown](/terraform/plugin/framework/handling-data/terraform-concepts#unknown-values) value handling, provider developers will need to implement additional logic to determine if an underlying value for a dynamic is null or unknown. + +#### Underlying Null + +In the configuration below, Terraform knows the underlying value type, `string`, but the underlying string value is null: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = var.null_string +} + +variable "null_string" { + type = string + default = null +} +``` + +This will result in a known dynamic value, with an underlying value that is a null [string type](/terraform/plugin/framework/handling-data/types/string). This can be detected utilizing the [`(types.Dynamic).IsUnderlyingValueNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.IsUnderlyingValueNull) method. An equivalent framework value to this scenario would be: + +```go +dynValWithNullString := types.DynamicValue(types.StringNull()) +``` + +#### Underlying Unknown + +In the configuration below, Terraform knows the underlying value type of [`random_shuffle.result`](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/shuffle#result), a `list(string)`, but the underlying list value is unknown: + +```hcl +resource "random_shuffle" "example" { + input = ["one", "two"] + result_count = 2 +} + +resource "examplecloud_thing" "this" { + example_attribute = random_shuffle.example.result +} +``` + +This will result in a known dynamic value, with an underlying value that is an unknown [list of string types](/terraform/plugin/framework/handling-data/types/list). This can be detected utilizing the [`(types.Dynamic).IsUnderlyingValueUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.IsUnderlyingValueUnknown) method. An equivalent framework value to this scenario would be: + +```go +dynValWithUnknownList := types.DynamicValue(types.ListUnknown(types.StringType)) +``` + +### Understanding Type Consistency + +For [managed resources](/terraform/plugin/framework/resources), Terraform core implements [data consistency rules](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md) between configuration, plan, and state data. With [dynamic attributes](/terraform/plugin/framework/handling-data/attributes/dynamic), these consistency rules are also applied to the **type** of data. + +For example, given a dynamic `example_attribute` that is computed and optional: + +```go +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.DynamicAttribute{ + Computed: true, + Optional: true, + // ... potentially other fields ... + }, + // ... potentially other attributes ... + }, + } +} +``` + +If a practitioner configures this resource as: + +```hcl +resource "examplecloud_thing" "example" { + # This literal expression is a tuple[string, string] + example_attribute = ["one", "two"] +} +``` + +Then the exact type must be planned and stored in state during `apply` as a [tuple](/terraform/plugin/framework/handling-data/types/tuple) with two [string](/terraform/plugin/framework/handling-data/types/string) element types. If provider code attempts to store this attribute as a different type, like a [list](/terraform/plugin/framework/handling-data/types/list) of strings, even with the same data values, Terraform will produce an error during apply: + +```bash +│ Error: Provider produced inconsistent result after apply +│ +│ When applying changes to examplecloud_thing.example, provider "provider[\"TYPE\"]" produced an unexpected new value: .example_attribute: wrong final value type: tuple required. +│ +│ This is a bug in the provider, which should be reported in the providers own issue tracker. +``` + +If a practitioner configures this same resource as: + +```hcl +resource "examplecloud_thing" "example" { + example_attribute = tolist(["one", "two"]) +} +``` + +Then the exact type must be planned and stored in state during `apply` as a [list](/terraform/plugin/framework/handling-data/types/list) of strings. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/path-expressions.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/path-expressions.mdx new file mode 100644 index 0000000000..80cca2a1d6 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/path-expressions.mdx @@ -0,0 +1,185 @@ +--- +page_title: Path expressions +description: >- + Learn how to implement path expressions in the Terraform plugin framework. + Path expressions are logic built on top of paths, which may represent one or + more actual paths within schema data. +--- + + +# Path expressions + +Path expressions are logic built on top of [paths](/terraform/plugin/framework/paths), which may represent one or more actual paths within a schema or schema-based data. Expressions enable providers to work outside the restrictions of absolute paths and steps. + +## Usage + +Example uses include: + +- [Path based attribute validators](/terraform/plugin/framework/validation#path-based-attribute-validators), such as those in the [`terraform-plugin-framework-validators` module `schemavalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/schemavalidator). + +Use cases which require exact locations, such as [diagnostics](/terraform/plugin/framework/diagnostics), implement [paths](/terraform/plugin/framework/paths). + +## Concepts + +Path expressions are an abstraction above [paths](/terraform/plugin/framework/paths). This page assumes knowledge of path concepts and implementations. + +At its core, expressions implement the following on top of paths: + +- Information that designates whether path information is intended to be absolute, similar to paths, or relative, where it is assumed it will be merged with other absolute path information. +- Parent steps, which enables backwards traversal towards the root of a schema in relative paths, after being merged with other absolute path information. +- Path matching, which enables path information to logically return one or more actual paths. + +Similar to paths, expressions are built using steps. There are expression steps which directly correspond to exact path steps, such as `AtListIndex()`, `AtMapKey()`, `AtName()`, `AtSetValue()`. Their implementation is the same. However, there are additional expression steps, such as `AtAnyListIndex()`, which cannot be represented in paths due to the potential for ambiguity. + +Path matching is the notion that each expression step implements a method that logically determines if a given exact path step should match. For example, the `AtAnyListIndex()` expression step will accept any exact path step for a list index. Path matching with an expression is a collection of matching each expression step against each exact path step, after resolving any potential parent steps. + +Every path expression must align with the schema definition or an error diagnostic will be raised when working with path matching within the framework. Provider-defined functionality that is schema-based, such as attribute validation and attribute plan modification, are provided an accurate current path expression since that functionality would not be able to determine its own path expression. + +## Building Path Expressions + +The framework implementation for path expressions is in the [`path` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path), with the [`path.Expression` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Expression) being the main provider developer interaction point. + +### Building Absolute Path Expressions + +Call the [`path.MatchRoot()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#MatchRoot) with an attribute name or block name at the root of the schema to begin an absolute path expression. + +Given this example schema with a root attribute named `example_root_attribute`: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_root_attribute": schema.StringAttribute{ + Required: true, + }, + }, +} +``` + +The call to `path.MatchRoot()` which matches the location of `example_root_attribute` string value is: + +```go +path.MatchRoot("example_root_attribute") +``` + +For blocks, the beginning of a path expression is similarly defined. Attribute and block names cannot overlap, so the framework automatically handles whether a path expression is referring to an attribute or block to start. + +Given this example schema with a root block named `example_root_block`: + +```go +schema.Schema{ + Blocks: map[string]schema.Block{ + "example_root_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{/* ... */}, + }, + }, +} +``` + +The call to `path.MatchRoot()` which matches the location of `example_root_block` list value is: + +```go +path.MatchRoot("example_root_block") +``` + +Once a `path.Expression` is started, it supports a builder pattern, which allows for chaining method calls to construct a full path. + +This example shows a hypothetical path expression that points to any element of a list attribute to highlight the builder pattern: + +```go +path.MatchRoot("example_list_attribute").AtAnyListIndex() +``` + +This pattern can be extended to as many calls as necessary. The [Building Expression Steps section](#building-expression-steps) covers the different framework schema types and any special path step methods. + +### Building Relative Path Expressions + +Relative path expressions are, by nature, contextual to the actual path where they are defined in a schema. Call the [`path.MatchRelative()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#MatchRelative) to begin a relative path expression. + +This example shows a relative path expression which references a child attribute: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_list_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_list_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "deeply_nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + Validators: []validator.List{ + exampleValidatorThatAcceptsExpressions( + path.MatchRelative().AtAnyListIndex().AtName("deeply_nested_string_attribute"), + ), + }, + }, + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +This example shows a relative path expression which references a different attribute within the same list index: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_list_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_list_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "deeply_nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + Validators: []validator.List{ + exampleValidatorThatAcceptsExpressions( + path.MatchRelative().AtParent().AtName("nested_string_attribute"), + ), + }, + }, + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +### Building Expression Steps + +Expressions follow similar schema type rules as paths, in particular [Building Attribute Paths](/terraform/plugin/framework/paths#building-attribute-paths), [Building Nested Attribute Paths](/terraform/plugin/framework/paths#building-nested-attribute-paths), and [Building Block Paths](/terraform/plugin/framework/paths#building-block-paths). + +The following list shows the [`path.Expression` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Expression) methods that behave similar to [`path.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Path) methods. + +- `AtListIndex()` +- `AtMapKey()` +- `AtName()` +- `AtSetValue()` + +The following table shows the additional [`path.Expression` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Expression) methods and their descriptions. + +| Expression Method | Description | +| ------------------ | ----------- | +| `AtAnyListIndex()` | Will return matches for any list index. Can be used anywhere `AtListIndex()` can be used. | +| `AtAnyMapKey()` | Will return matches for any map key. Can be used anywhere `AtMapKey()` can be used. | +| `AtAnySetValue()` | Will return matches for any set value. Can be used anywhere `AtSetValue()` can be used. | +| `AtParent()` | Will remove the last expression step, or put differently, will match the path closer to the root of the schema. | + diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/paths.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/paths.mdx new file mode 100644 index 0000000000..1df50cf706 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/paths.mdx @@ -0,0 +1,556 @@ +--- +page_title: Paths +description: >- + Learn how to implement paths in the Terraform plugin framework. Paths + represent a location within a schema or schema-based data. +--- + +# Paths + +An exact location within a [schema](/terraform/plugin/framework/handling-data/schemas) or schema-based data such as [`tfsdk.Config`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#Config), [`tfsdk.Plan`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#Plan), or [`tfsdk.State`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State), is referred to as a path. + +## Usage + +Example uses in the framework include: + +- [Diagnostics](/terraform/plugin/framework/diagnostics) intended for a specific attribute, which allows Terraform to show the configuration file and line information. +- [Accessing configuration, plan, or state data](/terraform/plugin/framework/accessing-values) for a specific attribute. +- [Writing plan or state data](/terraform/plugin/framework/writing-state) for a specific attribute. + +More advanced use cases, such as [path based attribute validators](/terraform/plugin/framework/validation#path-based-attribute-validators), typically implement [path expressions](/terraform/plugin/framework/path-expressions) which enables additional logic beyond exact paths. + +## Concepts + +Paths are designed around the underlying Terraform implementation of a schema and schema-based data. Terraform schemas are a tree structure based on value storing attributes, which may have their own structural component, and structural blocks. Both attributes and blocks are associated with specific data types, some of which represent structural or collection types which hold further information which can be traversed. Each traversal into that further information is referred to as a path step. Paths are always absolute and start from the root, or top level, of a schema. + +Given the tree structure of Terraform schemas, descriptions of paths and their steps borrow certain hierarchy terminology such as parent and child. A parent path describes a path without one or more of the final steps of a given path, or put differently, a partial path closer to the root of the schema. A child path describes a path with one or more additional steps beyond a given path, or put differently, a path containing the given path but further from the root of the schema. + +Every path must align with the schema definition or an error diagnostic will be raised when working with paths within the framework. Provider-defined functionality that is schema-based, such as attribute validation and attribute plan modification, are provided an accurate current path since that functionality would not be able to determine its own path. + +[Path expressions](/terraform/plugin/framework/path-expressions) are an abstraction on top of paths, which enable additional use cases with provider-defined functionality, such as relative path, parent step, and wildcard step support. + +## Building Paths + +The framework implementation for paths is in the [`path` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path), with the [`path.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Path) being the main provider developer interaction point. Call the [`path.Root()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Root) with an attribute name or block name at the root of the schema to begin a path. + +Given this example schema with a root attribute named `example_root_attribute`: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_root_attribute": schema.StringAttribute{ + Required: true, + }, + }, +} +``` + +The call to `path.Root()` which matches the location of `example_root_attribute` string value is: + +```go +path.Root("example_root_attribute") +``` + +For blocks, the beginning of a path is similarly defined. Attribute and block names cannot overlap, so the framework automatically handles whether a path is referring to an attribute or block to start. + +Given this example schema with a root block named `example_root_block`: + +```go +schema.Schema{ + Blocks: map[string]schema.Block{ + "example_root_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{/* ... */}, + }, + }, +} +``` + +The call to `path.Root()` which matches the location of `example_root_block` list value is: + +```go +path.Root("example_root_block") +``` + +Once a `path.Path` is started, it supports a builder pattern, which allows for chaining method calls to construct a full path. + +This example shows a hypothetical path that points to the first element of a list attribute to highlight the builder pattern: + +```go +path.Root("example_list_attribute").AtListIndex(0) +``` + +This pattern can be extended to as many calls as necessary. The different framework schema types and their associated path step methods are shown in the following sections. + +### Building Attribute Paths + +The following table shows the different [`path.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Path) methods associated with building paths for attribute implementations. Attribute types that cannot be traversed further are shown with N/A (not applicable). + +| Attribute Type | Child Path Method | +|---------------------------|--------------------------------------------------------------------------------------------------------| +| `schema.BoolAttribute` | N/A | +| `schema.DynamicAttribute` | N/A | +| `schema.Float32Attribute` | N/A | +| `schema.Float64Attribute` | N/A | +| `schema.Int32Attribute` | N/A | +| `schema.Int64Attribute` | N/A | +| `schema.ListAttribute` | `AtListIndex()` | +| `schema.MapAttribute` | `AtMapKey()` | +| `schema.NumberAttribute` | N/A | +| `schema.ObjectAttribute` | `AtName()` | +| `schema.SetAttribute` | `AtSetValue()` | +| `schema.StringAttribute` | N/A | + +Given following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_map_attribute": schema.MapAttribute{ + ElementType: types.StringType, + Required: true, + }, + }, +} +``` + +The path which matches the string value associated with a hypothetical map key of `example-key` of the `root_map_attribute` attribute is: + +```go +path.Root("root_map_attribute").AtMapKey("example-key") +``` + +Any type that supports a child path may define an element type that also supports a child path. Paths can continue to be built using the associated method with each level of the attribute type. + +Given following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_map_attribute": schema.MapAttribute{ + ElementType: types.ListType{ + ElemType: types.StringType, + }, + Required: true, + }, + }, +} +``` + +The path which matches the third string value associated with the list value of a hypothetical map key of `example-key` of the `root_map_attribute` attribute is: + +```go +path.Root("root_map_attribute").AtMapKey("example-key").AtListIndex(2) +``` + +Unless there is a very well defined data structure involved, the level of path specificity in the example above is fairly uncommon to manually build in provider logic though. Most provider logic will typically build a path to the value of an attribute (e.g. its first type) and work with that data, or potentially one level deeper in well known cases, since each level introduces additional complexity associated with potentially null or unknown values. Provider logic can instead use an iterative path building approach when dealing with attributes that have multiple levels. + +This example shows an iterative path building approach to handle any map keys and list indices in the above schema: + +```go +attributePath := path.Root("root_map_attribute") + +// attributeValue is an example types.Map value which was previously fetched, +// potentially using the path above. +for mapKey, mapValue := range attributeValue.Elements() { + mapKeyPath := attributePath.AtMapKey(mapKey) + + // ... + + for listIndex, listValue := range mapValue.Elements() { + listIndexPath := mapKeyPath.AtListIndex(listIndex) + + // ... + } +} +``` + +### Building Nested Attribute Paths + +The following table shows the different [`path.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Path) methods associated with building paths for nested attributes. + +| Nested Attribute Type | Child Path Method | +| ------------------------------ | ----------------- | +| `schema.ListNestedAttribute` | `AtListIndex()` | +| `schema.MapNestedAttribute` | `AtMapKey()` | +| `schema.SetNestedAttribute` | `AtSetValue()` | +| `schema.SingleNestedAttribute` | `AtName()` | + +Nested attributes eventually implement attributes at child paths, which follow the methods shown in the [Building Attribute Paths section](#building-attribute-paths). + +#### Building List Nested Attributes Paths + +An attribute that implements `schema.ListNestedAttribute` conceptually is a list containing objects with attribute names. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_list_attribute": schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +The path which matches the list associated with the `root_list_attribute` attribute is: + +```go +path.Root("root_list_attribute") +``` + +The path which matches the first object in the list associated with the `root_list_attribute` attribute is: + +```go +path.Root("root_list_attribute").AtListIndex(0) +``` + +The path which matches the `nested_string_attribute` string value in the first object in the list associated with `root_list_attribute` attribute is: + +```go +path.Root("root_list_attribute").AtListIndex(0).AtName("nested_string_attribute") +``` + +#### Building Map Nested Attributes Paths + +An attribute that implements `schema.MapNestedAttribute` conceptually is a map containing values of objects with attribute names. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_map_attribute": schema.MapNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +The path which matches the map associated with the `root_map_attribute` attribute is: + +```go +path.Root("root_map_attribute") +``` + +The path which matches the a hypothetical `"example-key"` object in the map associated with the `root_map_attribute` attribute is: + +```go +path.Root("root_map_attribute").AtMapKey("example-key") +``` + +The path which matches the `nested_string_attribute` string value in a hypothetical `"example-key"` object in the map associated with `root_map_attribute` attribute is: + +```go +path.Root("root_map_attribute").AtMapKey("example-key").AtName("nested_string_attribute") +``` + +#### Building Set Nested Attributes Paths + +An attribute that implements `schema.SetNestedAttribute` conceptually is a set containing objects with attribute names. Attempting to build set nested attribute paths is extremely tedius as set element selection is based on the entire value of the element, including any null or unknown values. Avoid manual set-based path building. Instead, use functionality which supports [path expressions](/terraform/plugin/framework/path-expressions) as that supports wildcard path matching ([`path.Expression` type `AtAnySetValue()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Expression.AtAnySetValue)) or relative paths. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_set_attribute": schema.SetNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + Required: true, + }, + }, +} +``` + +The path which matches the set associated with the `root_set_attribute` attribute is: + +```go +path.Root("root_set_attribute") +``` + +Examples below will presume a `nested_string_attribute` string value of `types.StringValue("example")` for brevity. In real world usage, the string value may be `types.StringNull()`, `types.StringUnknown()` or `types.StringValue("something-else")`, which are all considered different set paths from each other. Each additional attribute or block introduces exponentially more possible paths given each attribute or block value may be null, unknown, or a unique known value. + +The path which matches the object associated with the `root_set_attribute` block is: + +```go +path.Root("root_set_attribute").AtSetValue(types.ObjectValueMust( + map[string]attr.Type{ + "nested_string_attribute": types.StringType, + }, + map[string]attr.Value{ + "nested_string_attribute": types.StringValue("example"), + } +)) +``` + +The path which matches the `nested_string_attribute` string value associated with `root_set_attribute` block is: + +```go +path.Root("root_set_attribute").AtSetValue(types.ObjectValueMust( + map[string]attr.Type{ + "nested_string_attribute": types.StringType, + }, + map[string]attr.Value{ + "nested_string_attribute": types.StringValue("example"), + } +)).AtName("nested_string_attribute") +``` + +#### Building Single Nested Attributes Paths + +An attribute that implements `schema.SingleNestedAttribute` conceptually is an object with attribute names. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_grouped_attributes": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "nested_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + Required: true, + }, + }, +} +``` + +The path which matches the object associated with the `root_grouped_attributes` attribute is: + +```go +path.Root("root_grouped_attributes") +``` + +The path which matches the `nested_string_attribute` string value in the object associated with the `root_grouped_attributes` attribute is: + +```go +path.Root("root_grouped_attributes").AtName("nested_string_attribute") +``` + +### Building Block Paths + +The following table shows the different [`path.Path` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Path) methods associated with building paths for blocks. + +| Block Type | Child Path Method | +| -------------------------- | ----------------- | +| `schema.ListNestedBlock` | `AtListIndex()` | +| `schema.SetNestedBlock` | `AtSetValue()` | +| `schema.SingleNestedBlock` | `AtName()` | + +Blocks can implement nested blocks. Paths can continue to be built using the associated method with each level of the block type. + +Blocks eventually implement attributes at child paths, which follow the methods shown in the [Building Attribute Paths section](#building-attribute-paths). Blocks cannot contain nested attributes. + +#### Building List Block Paths + +A block defined with `schema.ListNestedBlock` conceptually is a list containing objects with attribute or block names. + +Given following schema example: + +```go +schema.Schema{ + Blocks: map[string]schema.Block{ + "root_list_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + Blocks: map[string]schema.Block{ + "nested_list_block": schema.ListNestedBlock{ + Attributes: map[string]schema.Attribute{ + "nested_block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + }, + }, + }, + }, +} +``` + +The path which matches the list associated with the `root_list_block` block is: + +```go +path.Root("root_list_block") +``` + +The path which matches the first object in the list associated with the `root_list_block` block is: + +```go +path.Root("root_list_block").AtListIndex(0) +``` + +The path which matches the `block_string_attribute` string value in the first object in the list associated with `root_list_block` block is: + +```go +path.Root("root_list_block").AtListIndex(0).AtName("block_string_attribute") +``` + +The path which matches the `nested_list_block` list in the first object in the list associated with `root_list_block` block is: + +```go +path.Root("root_list_block").AtListIndex(0).AtName("nested_list_block") +``` + +The path which matches the `nested_block_string_attribute` string value in the first object in the list associated with the `nested_list_block` list in the first object in the list associated with `root_list_block` block is: + +```go +path.Root("root_list_block").AtListIndex(0).AtName("nested_list_block").AtListIndex(0).AtName("nested_block_string_attribute") +``` + +#### Building Set Block Paths + +A block defined with `schema.SetNestedBlock` conceptually is a set containing objects with attribute or block names. Attempting to build set block paths is extremely tedius as set element selection is based on the entire value of the element, including any null or unknown values. Avoid manual set-based path building. Instead, use functionality which supports [path expressions](/terraform/plugin/framework/path-expressions) as that supports wildcard path matching ([`path.Expression` type `AtAnySetValue()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Expression.AtAnySetValue)) or relative paths. + +Given following schema example: + +```go +schema.Schema{ + Blocks: map[string]schema.Block{ + "root_set_block": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "block_string_attribute": schema.StringAttribute{ + Optional: true, + }, + }, + }, + }, + }, +} +``` + +The path which matches the set associated with the `root_set_block` block is: + +```go +path.Root("root_set_block") +``` + +Examples below will presume a `block_string_attribute` string value of `types.StringValue("example")` for brevity. In real world usage, the string value may be `types.StringNull()`, `types.StringUnknown()` or `types.StringValue("something-else")`, which are all considered different set paths from each other. Each additional attribute or block introduces exponentially more possible paths given each attribute or block value may be null, unknown, or a unique known value. + +The path which matches the object associated with the `root_set_block` block is: + +```go +path.Root("root_set_block").AtSetValue(types.ObjectValueMust( + map[string]attr.Type{ + "block_string_attribute": types.StringType, + }, + map[string]attr.Value{ + "block_string_attribute": types.StringValue("example"), + } +)) +``` + +The path which matches the `block_string_attribute` string value associated with `root_set_block` block is: + +```go +path.Root("root_set_block").AtSetValue(types.ObjectValueMust( + map[string]attr.Type{ + "block_string_attribute": types.StringType, + }, + map[string]attr.Value{ + "block_string_attribute": types.StringValue("example"), + } +)).AtName("block_string_attribute") +``` + +#### Building Single Block Paths + +A block defined with `schema.SingleNestedBlock` conceptually is an object with attribute or block names. + +Given following schema example: + +```go +schema.Schema{ + Blocks: map[string]schema.Block{ + "root_single_block": schema.SingleNestedBlock{ + Attributes: map[string]schema.Attribute{ + "block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + Blocks: map[string]schema.Block{ + "nested_single_block": schema.SingleNestedBlock{ + Attributes: map[string]schema.Attribute{ + "nested_block_string_attribute": schema.StringAttribute{ + Required: true, + }, + }, + }, + }, + }, + }, +} +``` + +The path which matches the object associated with the `root_single_block` block is: + +```go +path.Root("root_single_block") +``` + +The path which matches the `block_string_attribute` string value in the object associated with `root_single_block` block is: + +```go +path.Root("root_single_block").AtName("block_string_attribute") +``` + +The path which matches the `nested_single_block` object in the object associated with `root_single_block` block is: + +```go +path.Root("root_single_block").AtName("nested_single_block") +``` + +The path which matches the `nested_block_string_attribute` string value in the object associated with the `nested_single_block` in the object associated with `root_single_block` block is: + +```go +path.Root("root_single_block").AtName("nested_single_block").AtName("nested_block_string_attribute") +``` + +### Building Dynamic Attribute Paths + +An attribute that implements `schema.DynamicAttribute` does not have a statically defined type, as the underlying value type is determined at runtime. When building paths for dynamic values, always target the root dynamic attribute. + +Given the following schema example: + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "root_dynamic_attribute": schema.DynamicAttribute{ + Required: true, + }, + }, +} +``` + +The path which matches the dynamic value associated with the `root_dynamic_attribute` attribute is: + +```go +path.Root("root_dynamic_attribute") +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/schemas.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/schemas.mdx new file mode 100644 index 0000000000..e406565e56 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/schemas.mdx @@ -0,0 +1,99 @@ +--- +page_title: Schemas +description: >- + Learn how to define a schema using the Terraform plugin framework. Schemas + specify the constraints of Terraform configuration blocks. +--- + +# Schemas + +Schemas specify the constraints of Terraform configuration blocks. They define what fields a provider, +resource, or data source configuration block has, and give Terraform metadata +about those fields. You can think of the schema as the "type information" or +the "shape" of a resource, data source, or provider. + +Each concept has its own `schema` package and `Schema` type, which defines functionality available to that concept: + +- [Providers](/terraform/plugin/framework/providers): [`provider/schema.Schema`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Schema) +- [Resources](/terraform/plugin/framework/resources): [`resource/schema.Schema`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Schema) +- [Data Sources](/terraform/plugin/framework/data-sources): [`datasource/schema.Schema`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Schema) +- [Ephemeral Resources](/terraform/plugin/framework/ephemeral-resources): [`ephemeral/schema.Schema`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Schema) + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`GetProviderSchema`](/terraform/plugin/framework/internals/rpcs#getproviderschema-rpc) RPC, in which the framework calls the [`provider.Provider` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Schema), the [`resource.Resource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Schema), [`datasource.DataSource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource#DataSource.Schema), and the [`ephemeral.EphemeralResource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral#EphemeralResource.Schema) on each of the resource types, respectively. + +## Version + +-> Version is only valid for resources. + +Every schema has a version, which is an integer that allows you to track changes to your schemas. It is generally only used when +[upgrading resource state](/terraform/plugin/framework/resources/state-upgrade), to help massage resources created with earlier +schemas into the shape defined by the current schema. It will never be used for +provider or data source schemas and can be omitted. + +## DeprecationMessage + +Not every resource, data source, ephemeral resource, or provider will be supported forever. +Sometimes designs change or APIs are deprecated. Schemas that have their +`DeprecationMessage` property set will display that message as a warning when +that provider, data source, or resource is used. A good message will tell +practitioners that the provider, resource, or data source is deprecated, and +will indicate a migration strategy. + +## Description + +Various tooling like +[terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs) and +the [language server](https://github.com/hashicorp/terraform-ls) can use +metadata in the schema to generate documentation or offer a better editor +experience for practitioners. Use the `Description` property to add a description of a resource, data source, or provider that these tools can leverage. + +## MarkdownDescription + +Similar to the `Description` property, the `MarkdownDescription` is used to +provide a markdown-formatted version of the description to tooling like +[terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs). It +is a best practice to only alter the formatting, not the content, between the +`Description` and `MarkdownDescription`. + +At the moment, if the `MarkdownDescription` property is set it will always be +used instead of the `Description` property. It is possible that a different strategy may be employed in the future to surface descriptions to other tooling in a different format, so we recommend specifying both fields. + +## Unit Testing + +Schemas can be unit tested via each of the `schema.Schema` type `ValidateImplementation()` methods. This unit testing raises schema implementation issues more quickly in comparison to [acceptance tests](/terraform/plugin/framework/acctests), but does not replace the purpose of acceptance testing. + +In this example, a `thing_resource_test.go` file is created alongside the `thing_resource.go` implementation file: + +```go +import ( + "context" + "testing" + + // The fwresource import alias is so there is no collistion + // with the more typical acceptance testing import: + // "github.com/hashicorp/terraform-plugin-testing/helper/resource" + fwresource "github.com/hashicorp/terraform-plugin-framework/resource" +) + +func TestThingResourceSchema(t *testing.T) { + t.Parallel() + + ctx := context.Background() + schemaRequest := fwresource.SchemaRequest{} + schemaResponse := &fwresource.SchemaResponse{} + + // Instantiate the resource.Resource and call its Schema method + NewThingResource().Schema(ctx, schemaRequest, schemaResponse) + + if schemaResponse.Diagnostics.HasError() { + t.Fatalf("Schema method diagnostics: %+v", schemaResponse.Diagnostics) + } + + // Validate the schema + diagnostics := schemaResponse.Schema.ValidateImplementation(ctx) + + if diagnostics.HasError() { + t.Fatalf("Schema validation diagnostics: %+v", diagnostics) + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/terraform-concepts.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/terraform-concepts.mdx new file mode 100644 index 0000000000..d8602e8a33 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/terraform-concepts.mdx @@ -0,0 +1,129 @@ +--- +page_title: Terraform data concepts +description: >- + Learn how the Terraform plugin framework handles data by mapping Terraform + configuration to schemas, attributes, and blocks. +--- + +# Terraform data concepts + +This page describes Terraform concepts as they relate to handling data within framework-based provider code. The [What is Terraform](/terraform/intro), [Terraform language](/terraform/language), and [Plugin Development](/terraform/plugin) documentation covers more general concepts behind Terraform's workflow, its configuration, and how it interacts with providers. + +## Schemas + +Schemas specify the data structure and types of a provider, resource, data source, or ephemeral resource that is exposed to Terraform. This includes the configuration written by practitioners, any planning data, and the state stored by Terraform which can be referenced in other configuration. Providers, resources, data sources, and ephemeral resources have their own concept-specific types and available functionality. + +Each part of the data within a schema is defined as either an attribute or block. In general, attributes set values and blocks are containers for other attributes and blocks. Each have differing configuration syntax and behaviors. + +Discover more about framework implementations of this concept in the [schema](/terraform/plugin/framework/handling-data/schemas) documentation. + +### Attributes + +Attributes set values in a schema, such as a string or list. The [Terraform type system](/terraform/language/expressions/types) documentation provides a general overview of the available kinds of data within Terraform, which is similar with type system concepts available in many programming languages. However, there are subtle differences with values discussed in the [type system](#type-system) section. + +Discover more about the framework implementations of this concept in the [attribute](/terraform/plugin/framework/handling-data/attributes) documentation. + +### Blocks + + + +Use [nested attributes](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) for new schema implementations. Block support is mainly for migrating prior SDK-based providers. + + + +A block is a container for other attributes and blocks. Terraform implements many top level blocks, such as `provider` and `resource`, while a schema supports nested blocks. + +Discover more about the framework implementations of this concept in the [block](/terraform/plugin/framework/handling-data/blocks) documentation. + +### Schema Based Data + +Schemas provide the structures and types for representing data with Terraform. This section discusses the concepts behind the different types of data influenced by a schema. + +#### Configuration + +As part of the Terraform workflow, a practitioner writes [configuration](/terraform/language) files, which are parsed into a graph of operations by Terraform commands. The structures and types of that configuration is the most visible aspect of a schema, since a schema has a direct effect on the expected configuration syntax. + +In Terraform operations where the configuration data is available to providers, the framework typically represents this as a `Config` field in the request type. + +#### Plan + + + +Only managed resources implement this data concept. + + + +As part of the Terraform workflow, any configuration changes are planned before they are applied into [state](/terraform/language/state) so practitioners have an opportunity to review whether those anticipated changes have their intended effect. Conceptually, this data represents the merging of configuration data and any prior state data. Terraform refers to this data as the proposed new state, while the framework more generally refers to this data as the plan. + +Plan data requires careful handling to prevent unexpected Terraform errors for practitioners. The framework implements various schema concepts and logic discussed in the [resource plan modification](/terraform/plugin/framework/resources/plan-modification) documentation. In-depth documentation about Terraform requirements is available in the [Terraform Resource Instance Change Lifecycle](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md) documentation. + +In Terraform operations where the plan data is available to providers, the framework typically represents this as a `Plan` field in the request or response type. + +#### State + + + +Only managed resources and data sources implement this data concept. + + + +As part of the Terraform workflow, any data that should be stored for configuration references or future Terraform executions must be written to the [state](/terraform/language/state). This data must exactly match any configuration data, and if applicable, any plan data with [unknown values](#unknown-values) converted to known values. + +In Terraform operations where the plan data is available to providers, the framework typically represents this as a `State` field in the request or response type. + +## Type System + +The [Terraform type system](/terraform/language/expressions/types) supports deeper functionality than the standard type systems built into programming languages. While the types in the Terraform type system are similar to what is found in most languages, values have extra metadata associated with them. The framework implements its own [types](/terraform/plugin/framework/handling-data/types) to prevent the loss of this additional metadata that cannot be represented by Go built-in types. + +Important value metadata concepts when implementing a provider include: + +- [Null values](#null-values): Absence of a value. +- [Unknown values](#unknown-values): Value that is not yet known. + +As Terraform exposes additional value metadata to providers, the framework type system will be updated. Therefore, it is always recommended to use the framework type system to ensure all Terraform value functionality is available in provider code. + +### Null Values + +Null represents the absence of a Terraform value. It is usually +encountered with optional attributes that the practitioner neglected to specify +a value for, but can show up on any non-required attribute. Required attributes +can never be null. + +### Unknown Values + +Unknown represents a Terraform value that is not yet known. Terraform +uses a graph of providers, resources, and data sources to do things in the +right order, and when a provider, resource, or data source relies on a value +from another provider, resource, or data source that has not been resolved yet, +it represents that state by using the unknown value. For example: + +```hcl +resource "example_foo" "bar" { + hello = "world" + demo = true +} + +resource "example_baz" "quux" { + foo_id = example_foo.bar.id +} +``` + +In the example above, `example_baz.quux` is relying on the `id` attribute of +`example_foo.bar`. The `id` attribute of `example_foo.bar` isn't known until +after the apply. The plan would list it as `(known after apply)`. During the +plan phase, `example_baz.quux` would get an unknown value as the value for +`foo_id`. + +Because they can result from interpolations in the practitioner's config, +you have no control over what attributes may contain an unknown +value. However, by the time a resource is expected to be created, read, updated, or +deleted, only its computed attributes can be unknown. The rest are +guaranteed to have known values (or be null). + +For concepts such as resource and data source [configuration validation](/terraform/plugin/framework/validation), +this means that Terraform guarantees to call validation for a non-computed attribute +eventually with a known value, so the provider should typically avoid returning error diagnostics +when encountering an unknown value during validation. + +Provider configuration values [can also be unknown](/terraform/plugin/framework/providers#unknown-values), and +providers should handle that situation, even if that means just returning an error. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/bool.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/bool.mdx new file mode 100644 index 0000000000..22b69d83e0 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/bool.mdx @@ -0,0 +1,107 @@ +--- +page_title: Boolean types +description: >- + Learn how to implement boolean value types with the Terraform plugin framework. +--- + +# Bool types + +Bool types store a boolean true or false value. + +By default, booleans from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.BoolType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#BoolType) and its associated value storage type of [`types.Bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Bool). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*bool`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a bool value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#BoolAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#BoolAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#BoolAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#BoolAttribute) | + +If the bool value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.BoolType` or the appropriate [custom type](#extending). + +If the bool value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.BoolType` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/bool#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Bool` in this case. + + + +Access `types.Bool` information via the following methods: + +* [`(types.Bool).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolValue.IsNull): Returns true if the bool is null. +* [`(types.Bool).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolValue.IsUnknown): Returns true if the bool is unknown. +* [`(types.Bool).ValueBool() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolValue.ValueBool): Returns the known bool, or `false` if null or unknown. +* [`(types.Bool).ValueBoolPointer() *bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolValue.ValueBoolPointer): Returns a bool pointer to a known value, `nil` if null, or a pointer to `false` if unknown. + +In this example, a bool value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Bool `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myBool now contains a Go bool with the known value +myBool := data.ExampleAttribute.ValueBool() +``` + +## Setting Values + +Call one of the following to create a `types.Bool` value: + +* [`types.BoolNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#BoolNull): A null bool value. +* [`types.BoolUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#BoolUnknown): An unknown bool value. +* [`types.BoolValue(bool)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#BoolValue): A known value. +* [`types.BoolPointerValue(*bool)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#BoolPointerValue): A known value. + +In this example, a known bool value is created: + +```go +types.BoolValue(true) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +A Go built-in `bool`, `*bool` (only with typed `nil`, `(*bool)(nil)`), or type alias of `bool` such as `type MyBoolType bool` can be used instead. + +In this example, a `bool` is directly used to set a bool attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), true) +``` + +In this example, a `types.List` of `types.Bool` is created from a `[]bool`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.BoolType, []bool{true, false}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/custom.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/custom.mdx new file mode 100644 index 0000000000..ad47f3372d --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/custom.mdx @@ -0,0 +1,435 @@ +--- +page_title: Custom types +description: >- + Learn how to implement custom types with the Terraform plugin framework. +--- + +# Custom types + +Use existing custom types or develop custom types to consistently define behaviors for a kind of value across schemas. Custom types are supported on top of any framework-defined type. + +Supported behaviors for custom types include: + +- Semantic Equality: Keep a prior value if a new value is inconsequentially different, such as preventing drift detection of JSON strings with differing property ordering. +- Validation: Raise warning and/or error diagnostics based on the value, such as not following a specified format or enumeration of values. + +## Example Use Cases + +- Encoded values, such as an XML or YAML string. +- Provider-specific values, such as an AWS ARN or AzureRM location string. +- Networking values, such as a MAC address. +- Time values, such as an ISO 8601 string. + +## Common Custom Types +The following Go modules contain custom type implementations covering common use cases with validation and semantic equality logic (where appropriate). +- [`terraform-plugin-framework-jsontypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-jsontypes) + - JSON strings (both normalized and exact matching) +- [`terraform-plugin-framework-nettypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-nettypes) + - IPv4/IPv6 addresses and CIDRs +- [`terraform-plugin-framework-timetypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timetypes) + - Timestamps (such as RFC3339) + +## Concepts + +Individual data value handling in the framework is performed by a pair of associated Go types: + +- Schema Types: Define the associated value type and logic to create a value. +- Value Types: Define behaviors associated with the value, data storage of the value, and data storage of the value state (null, unknown, or known). + +The framework defines a standard set these associated Go types referred to by the "base type" terminology. Extending these base types is referred to by the "custom type" terminology. + +## Using Custom Types + +Use a custom type by switching the schema definition and data handling from a framework-defined type to the custom type. + +### Schema Definition + +The framework schema types accept a `CustomType` field where applicable, such as the [`resource/schema.StringAttribute` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#StringAttribute.CustomType). When the `CustomType` is omitted, the framework defaults to the associated base type. + +Implement the `CustomType` field in a schema type to switch from the base type to a custom type. + +In this example, a string attribute implements a custom type. + +```go +schema.StringAttribute{ + CustomType: CustomStringType{}, + // ... other fields ... +} +``` + +### Data Handling + +Each custom type will also include a value type, which must be used anywhere the value is referenced in data source, provider, or resource logic. + +Switch any usage of a base value type to the custom value type. Any logic will need to be updated to match the custom value type implementation. + +In this example, a custom value type is used in a data model approach: + +```go +type ThingModel struct { + // Instead of types.String + Timestamp CustomStringValue `tfsdk:"timestamp"` + // ... other fields ... +} +``` + +## Developing Custom Types + +Create a custom type by extending an existing framework schema type and its associated value type. Once created, define [semantic equality](#semantic-equality) and/or [validation](#validation) logic for the custom type. + +### Schema Type + +Extend a framework schema type by creating a Go type that implements one of the `github.com/hashicorp/terraform-plugin-framework/types/basetypes` package `*Typable` interfaces. + + + +The commonly used `types` package types are aliases to the `basetypes` package types mentioned in this table. + + + +| Framework Schema Type | Custom Schema Type Interface | +| --- | --- | +| [`basetypes.BoolType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolType) | [`basetypes.BoolTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolTypable) | +| [`basetypes.DynamicType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicType) | [`basetypes.DynamicTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicTypable) | +| [`basetypes.Float32Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float32Type) | [`basetypes.Float32Typable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float32Typable) | +| [`basetypes.Float64Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Type) | [`basetypes.Float64Typable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Typable) | +| [`basetypes.Int32Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int32Type) | [`basetypes.Int32Typable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int32Typable) | +| [`basetypes.Int64Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Type) | [`basetypes.Int64Typable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Typable) | +| [`basetypes.ListType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListType) | [`basetypes.ListTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListTypable) | +| [`basetypes.MapType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapType) | [`basetypes.MapTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapTypable) | +| [`basetypes.NumberType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberType) | [`basetypes.NumberTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberTypable) | +| [`basetypes.ObjectType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectType) | [`basetypes.ObjectTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectTypable) | +| [`basetypes.SetType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetType) | [`basetypes.SetTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetTypable) | +| [`basetypes.StringType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringType) | [`basetypes.StringTypable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringTypable) | + +It is recommended to use Go type embedding of the base type to simplify the implementation and ensure it is up to date with the latest data handling features of the framework. With type embedding, the following [`attr.Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr#Type) methods must be overridden by the custom type to prevent confusing errors: + +- `Equal(attr.Type) bool` +- `ValueFromTerraform(context.Context, tftypes.Value) (attr.Value, error)` +- `ValueType(context.Context) attr.Value` +- `String() string` +- `ValueFrom{TYPE}(context.Context, basetypes.{TYPE}Value) (basetypes.{TYPE}Valuable, diag.Diagnostics)` + - This method signature is different for each `*Typable` custom schema type interface listed above, for example `basetypes.StringTypable` is defined as [`ValueFromString`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringTypable) + +In this example, the `basetypes.StringTypable` interface is implemented to create a custom string type with an associated [value type](#value-type): + +```go +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-framework/attr" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-go/tftypes" +) + +// Ensure the implementation satisfies the expected interfaces +var _ basetypes.StringTypable = CustomStringType{} + +type CustomStringType struct { + basetypes.StringType + // ... potentially other fields ... +} + +func (t CustomStringType) Equal(o attr.Type) bool { + other, ok := o.(CustomStringType) + + if !ok { + return false + } + + return t.StringType.Equal(other.StringType) +} + +func (t CustomStringType) String() string { + return "CustomStringType" +} + +func (t CustomStringType) ValueFromString(ctx context.Context, in basetypes.StringValue) (basetypes.StringValuable, diag.Diagnostics) { + // CustomStringValue defined in the value type section + value := CustomStringValue{ + StringValue: in, + } + + return value, nil +} + +func (t CustomStringType) ValueFromTerraform(ctx context.Context, in tftypes.Value) (attr.Value, error) { + attrValue, err := t.StringType.ValueFromTerraform(ctx, in) + + if err != nil { + return nil, err + } + + stringValue, ok := attrValue.(basetypes.StringValue) + + if !ok { + return nil, fmt.Errorf("unexpected value type of %T", attrValue) + } + + stringValuable, diags := t.ValueFromString(ctx, stringValue) + + if diags.HasError() { + return nil, fmt.Errorf("unexpected error converting StringValue to StringValuable: %v", diags) + } + + return stringValuable, nil +} + +func (t CustomStringType) ValueType(ctx context.Context) attr.Value { + // CustomStringValue defined in the value type section + return CustomStringValue{} +} +``` + +### Value Type + +Extend a framework value type by creating a Go type that implements one of the `github.com/hashicorp/terraform-plugin-framework/types/basetypes` package `*Valuable` interfaces. + + + +The commonly used `types` package types are aliases to the `basetypes` package types mentioned in this table. + + + +| Framework Schema Type | Custom Schema Type Interface | +| --- | --- | +| [`basetypes.BoolValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolValue) | [`basetypes.BoolValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#BoolValuable) | +| [`basetypes.DynamicValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue) | [`basetypes.DynamicValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValuable) | +| [`basetypes.Float64Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Value) | [`basetypes.Float64Valuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Valuable) | +| [`basetypes.Int64Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Value) | [`basetypes.Int64Valuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Valuable) | +| [`basetypes.ListValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListValue) | [`basetypes.ListValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListValuable) | +| [`basetypes.MapValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapValue) | [`basetypes.MapValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapValuable) | +| [`basetypes.NumberValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberValue) | [`basetypes.NumberValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberValuable) | +| [`basetypes.ObjectValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectValue) | [`basetypes.ObjectValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectValuable) | +| [`basetypes.SetValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetValue) | [`basetypes.SetValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetValuable) | +| [`basetypes.StringValue`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringValue) | [`basetypes.StringValuable`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringValuable) | + +It is recommended to use Go type embedding of the base type to simplify the implementation and ensure it is up to date with the latest data handling features of the framework. With type embedding, the following [`attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr#Value) methods must be overridden by the custom type to prevent confusing errors: + +- `Equal(attr.Value) bool` +- `Type(context.Context) attr.Type` + + + +The overridden `Equal(attr.Value) bool` method should not contain [Semantic Equality](#semantic-equality) logic. `Equal` should only check the type of `attr.Value` and the underlying base value. + +An example of this can be found below with the `CustomStringValue` implementation. + + + +In this example, the `basetypes.StringValuable` interface is implemented to create a custom string value type with an associated [schema type](#schema-type): + +```go +import ( + "context" + "fmt" + + "github.com/hashicorp/terraform-plugin-framework/attr" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-go/tftypes" +) + +// Ensure the implementation satisfies the expected interfaces +var _ basetypes.StringValuable = CustomStringValue{} + +type CustomStringValue struct { + basetypes.StringValue + // ... potentially other fields ... +} + +func (v CustomStringValue) Equal(o attr.Value) bool { + other, ok := o.(CustomStringValue) + + if !ok { + return false + } + + return v.StringValue.Equal(other.StringValue) +} + +func (v CustomStringValue) Type(ctx context.Context) attr.Type { + // CustomStringType defined in the schema type section + return CustomStringType{} +} +``` + +From this point, the custom type can be extended with other behaviors. + +### Semantic Equality + +Semantic equality handling enables the value type to automatically keep a prior value when a new value is determined to be inconsequentially different. This handling can prevent unexpected drift detection for values and in some cases prevent Terraform data handling errors. + +This value type functionality is checked in the following scenarios: + +- When refreshing a data source, the response state value from the `Read` method logic is compared to the configuration value. +- When refreshing a resource, the response new state value from the `Read` method logic is compared to the request prior state value. +- When creating or updating a resource, the response new state value from the `Create` or `Update` method logic is compared to the request plan value. + +The framework will only call semantic equality logic if both the prior and new values are known. Null or unknown values are unnecessary to check. When working with collection types, the framework automatically calls semantic equality logic of element types. When working with object types, the framework automatically calls semantic equality of underlying attribute types. + +Implement the associated `github.com/hashicorp/terraform-plugin-framework/types/basetypes` package `*ValuableWithSemanticEquals` interface on the value type to define and enable this behavior. + +In this example, the custom string value type will preserve the prior value if the expected RFC3339 timestamps are considered equivalent: + +```go +// CustomStringValue defined in the value type section +// Ensure the implementation satisfies the expected interfaces +var _ basetypes.StringValuableWithSemanticEquals = CustomStringValue{} + +func (v CustomStringValue) StringSemanticEquals(ctx context.Context, newValuable basetypes.StringValuable) (bool, diag.Diagnostics) { + var diags diag.Diagnostics + + // The framework should always pass the correct value type, but always check + newValue, ok := newValuable.(CustomStringValue) + + if !ok { + diags.AddError( + "Semantic Equality Check Error", + "An unexpected value type was received while performing semantic equality checks. "+ + "Please report this to the provider developers.\n\n"+ + "Expected Value Type: "+fmt.Sprintf("%T", v)+"\n"+ + "Got Value Type: "+fmt.Sprintf("%T", newValuable), + ) + + return false, diags + } + + // Skipping error checking if CustomStringValue already implemented RFC3339 validation + priorTime, _ := time.Parse(time.RFC3339, v.StringValue.ValueString()) + + // Skipping error checking if CustomStringValue already implemented RFC3339 validation + newTime, _ := time.Parse(time.RFC3339, newValue.ValueString()) + + // If the times are equivalent, keep the prior value + return priorTime.Equal(newTime), diags +} +``` + +### Validation + +#### Value Validation + +Validation handling in custom value types can be enabled for schema attribute values, or provider-defined function parameters. + +Implement the [`xattr.ValidateableAttribute` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#ValidateableAttribute) on the custom value type to define and enable validation handling for a schema attribute, which will automatically raise warning and/or error diagnostics when a value is determined to be invalid. + +Implement the [`function.ValidateableParameter` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ValidateableParameter) on the custom value type to define and enable validation handling for a provider-defined function parameter, which will automatically raise an error when a value is determined to be invalid. + +If the custom value type is to be used for both schema attribute values and provider-defined function parameters, implement both interfaces. + +```go +// Implementation of the xattr.ValidateableAttribute interface +func (v CustomStringValue) ValidateAttribute(ctx context.Context, req xattr.ValidateAttributeRequest, resp *xattr.ValidateAttributeResponse) { + if v.IsNull() || v.IsUnknown() { + return + } + + err := v.validate(v.ValueString()) + + if err != nil { + resp.Diagnostics.AddAttributeError( + req.Path, + "Invalid RFC 3339 String Value", + "An unexpected error occurred while converting a string value that was expected to be RFC 3339 format. "+ + "The RFC 3339 string format is YYYY-MM-DDTHH:MM:SSZ, such as 2006-01-02T15:04:05Z or 2006-01-02T15:04:05+07:00.\n\n"+ + "Path: "+req.Path.String()+"\n"+ + "Given Value: "+v.ValueString()+"\n"+ + "Error: "+err.Error(), + ) + + return + } +} + +// Implementation of the function.ValidateableParameter interface +func (v CustomStringValue) ValidateParameter(ctx context.Context, req function.ValidateParameterRequest, resp *function.ValidateParameterResponse) { + if v.IsNull() || v.IsUnknown() { + return + } + + err := v.validate(v.ValueString()) + + if err != nil { + resp.Error = function.NewArgumentFuncError( + req.Position, + "Invalid RFC 3339 String Value: "+ + "An unexpected error occurred while converting a string value that was expected to be RFC 3339 format. "+ + "The RFC 3339 string format is YYYY-MM-DDTHH:MM:SSZ, such as 2006-01-02T15:04:05Z or 2006-01-02T15:04:05+07:00.\n\n"+ + fmt.Sprintf("Position: %d", req.Position)+"\n"+ + "Given Value: "+v.ValueString()+"\n"+ + "Error: "+err.Error(), + ) + } +} + +func (v CustomStringValue) validate(in string) error { + _, err := time.Parse(time.RFC3339, in) + + return err +} +``` + +#### Type Validation + + + +`Value` validation should be used in preference to `Type` validation. Refer to [Value Validation](#value-validation) for more information. + +The [`xattr.TypeWithValidate` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#TypeWithValidate) has been deprecated. Use the [`xattr.ValidateableAttribute` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#ValidateableAttribute), and [`function.ValidateableParameter` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ValidateableParameter) instead. + + + +Implement the [`xattr.TypeWithValidate`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#TypeWithValidate) interface on the value type to define and enable this behavior. + + + +This functionality uses the lower level [`tftypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-go/tftypes) type system compared to other framework logic. + + + +In this example, the custom string value type will ensure the string is a valid RFC3339 timestamp: + +```go +// CustomStringType defined in the schema type section +func (t CustomStringType) Validate(ctx context.Context, value tftypes.Value, valuePath path.Path) diag.Diagnostics { + if value.IsNull() || !value.IsKnown() { + return nil + } + + var diags diag.Diagnostics + var valueString string + + if err := value.As(&valueString); err != nil { + diags.AddAttributeError( + valuePath, + "Invalid Terraform Value", + "An unexpected error occurred while attempting to convert a Terraform value to a string. "+ + "This generally is an issue with the provider schema implementation. "+ + "Please contact the provider developers.\n\n"+ + "Path: "+valuePath.String()+"\n"+ + "Error: "+err.Error(), + ) + + return diags + } + + if _, err := time.Parse(time.RFC3339, valueString); err != nil { + diags.AddAttributeError( + valuePath, + "Invalid RFC 3339 String Value", + "An unexpected error occurred while converting a string value that was expected to be RFC 3339 format. "+ + "The RFC 3339 string format is YYYY-MM-DDTHH:MM:SSZ, such as 2006-01-02T15:04:05Z or 2006-01-02T15:04:05+07:00.\n\n"+ + "Path: "+valuePath.String()+"\n"+ + "Given Value: "+valueString+"\n"+ + "Error: "+err.Error(), + ) + + return diags + } + + return diags +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/dynamic.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/dynamic.mdx new file mode 100644 index 0000000000..5da2afc860 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/dynamic.mdx @@ -0,0 +1,155 @@ +--- +page_title: Dynamic types +description: >- + Learn how to implement dynamic types with the Terraform plugin framework. +--- + +# Dynamic types + + + +Static types should always be preferred over dynamic types, when possible. + +Developers dealing with dynamic data will need to have extensive knowledge of the [Terraform type system](/terraform/language/expressions/types) to properly handle all potential practitioner configuration scenarios. + +Refer to [Dynamic Data - Considerations](/terraform/plugin/framework/handling-data/dynamic-data#considerations) for more information. + + + +Dynamic is a container type that can have an underlying value of **any** type. + +By default, dynamic values from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.DynamicType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#DynamicType) and its associated value storage type of [`types.Dynamic`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Dynamic). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a dynamic value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#DynamicAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#DynamicAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#DynamicAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#DynamicAttribute) | + +Dynamic values are not supported as the element type of a [collection type](/terraform/plugin/framework/handling-data/types#collection-types) or within [collection attribute types](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types). + +If the dynamic value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.DynamicType` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/dynamic#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Dynamic` in this case. + + + +Access `types.Dynamic` information via the following methods: + +* [`(types.Dynamic).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.IsNull): Returns true if the dynamic value is null. +* [`(types.Dynamic).IsUnderlyingValueNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.IsUnderlyingValueNull): Returns true if the dynamic value is known but the underlying value is null. See the [Dynamic Data section](/terraform/plugin/framework/handling-data/dynamic-data#handling-underlying-null-and-unknown-values) for more information about null underlying values. +* [`(types.Dynamic).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.IsUnknown): Returns true if the dynamic value is unknown. +* [`(types.Dynamic).IsUnderlyingValueUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.IsUnderlyingValueUnknown): Returns true if the dynamic value is known but the underlying value is unknown. See the [Dynamic Data section](/terraform/plugin/framework/handling-data/dynamic-data#handling-underlying-null-and-unknown-values) for more information about unknown underlying values. +* [`(types.Dynamic).UnderlyingValue() attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#DynamicValue.UnderlyingValue): Returns the underlying value of the dynamic container, will be `nil` if null or unknown. + +In this example, a dynamic value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Dynamic `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myDynamicVal now contains the underlying value, determined by Terraform at runtime +myDynamicVal := data.ExampleAttribute.UnderlyingValue() +``` + +### Handling the Underlying Value + +If a dynamic value is known, a [Go type switch](https://go.dev/tour/methods/16) can be used to access the type-specific methods for data handling: + +```go + switch value := data.ExampleAttribute.UnderlyingValue().(type) { + case types.Bool: + // Handle boolean value + case types.Number: + // Handle float64, int64, and number values + case types.List: + // Handle list value + case types.Map: + // Handle map value + case types.Object: + // Handle object value + case types.Set: + // Handle set value + case types.String: + // Handle string value + case types.Tuple: + // Handle tuple value + } +``` + + + +[Float64](/terraform/plugin/framework/handling-data/types/float64) and [Int64](/terraform/plugin/framework/handling-data/types/int64) framework types will never appear in the underlying value as both are represented as the Terraform type [`number`](/terraform/language/expressions/types#number). + + + +The type of the underlying value is determined at runtime by Terraform if the value is from configuration. Developers dealing with dynamic data will need to have extensive knowledge of the [Terraform type system](/terraform/language/expressions/types) to properly handle all potential practitioner configuration scenarios. + +Refer to the [Dynamic Data](/terraform/plugin/framework/handling-data/dynamic-data) documentation for more information. + +## Setting Values + +Call one of the following to create a `types.Dynamic` value: + +* [`types.DynamicNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#DynamicNull): A null dynamic value. +* [`types.DynamicUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#DynamicUnknown): An unknown dynamic value where the final static type is not known. Use `types.DynamicValue()` with an unknown value if the final static type is known. +* [`types.DynamicValue(attr.Value)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#DynamicValue): A known dynamic value, with an underlying value determined by the `attr.Value` input. + +In this example, a known dynamic value is created, where the underlying value is a known string value: + +```go +types.DynamicValue(types.StringValue("hello world!")) +``` + +In this example, a known dynamic value is created, where the underlying value is a known object value: + +```go +elementTypes := map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, +} +elements := map[string]attr.Value{ + "attr1": types.StringValue("value"), + "attr2": types.Int64Value(123), +} +objectValue, diags := types.ObjectValue(elementTypes, elements) +// ... handle any diagnostics ... + +types.DynamicValue(objectValue) +``` + +There are no reflection rules defined for creating dynamic values, meaning they must be created using the `types` implementation. + +In this example, a `types.Dynamic` with a known boolean value is used to set a dynamic attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), types.DynamicValue(types.BoolValue(true))) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float32.mdx new file mode 100644 index 0000000000..d6f85ec9df --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float32.mdx @@ -0,0 +1,122 @@ +--- +page_title: Float32 types +description: >- + Learn how to implement 32-bit floating point value types with the Terraform + plugin framework. +--- + +# Float32 types + + + +Use [Int32 Type](/terraform/plugin/framework/handling-data/types/int32) for 32-bit integer numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/types/number) for arbitrary precision numbers. + + + +Float32 types store a 32-bit floating point number. + +By default, float32 from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.Float32Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float32Type) and its associated value storage type of [`types.Float32`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float32). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*float32`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a float32 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Float32Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Float32Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Float32Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Float32Attribute) | + +If the float32 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.Float32Type` or the appropriate [custom type](#extending). + +If the float32 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.Float32Type` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/float32#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Float32` in this case. + + + +Access `types.Float32` information via the following methods: + +* [`(types.Float32).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float32Value.IsNull): Returns true if the float32 is null. +* [`(types.Float32).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float32Value.IsUnknown): Returns true if the float32 is unknown. +* [`(types.Float32).ValueFloat32() float32`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float32Value.ValueFloat32): Returns the known float32, or `0.0` if null or unknown. +* [`(types.Float32).ValueFloat32Pointer() *float32`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float32Value.ValueFloat32Pointer): Returns a float32 pointer to a known value, `nil` if null, or a pointer to `0.0` if unknown. + +In this example, a float32 value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Float32 `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myFloat32 now contains a Go float32 with the known value +myFloat32 := data.ExampleAttribute.ValueFloat32() +``` + +## Setting Values + +Call one of the following to create a `types.Float32` value: + +* [`types.Float32Null()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float32Null): A null float32 value. +* [`types.Float32Unknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float32Unknown): An unknown float32 value. +* [`types.Float32Value(float32)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float32Value): A known value. +* [`types.Float32PointerValue(*float32)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float32PointerValue): A known value. + +In this example, a known float32 value is created: + +```go +types.Float32Value(1.23) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +Numbers can be automatically converted from the following Go types, pointers to these types, or any aliases of these types, such `type MyNumber int`: + +* `int`, `int8`, `int16`, `int32`, `int64` +* `uint`, `uint8`, `uint16`, `uint32`, `uint64` +* `float32`, `float64` +* [`*big.Int`](https://pkg.go.dev/math/big#Int), [`*big.Float`](https://pkg.go.dev/math/big#Float) + +An error will be returned if the value of the number cannot be stored in the numeric type supplied because of an overflow or other loss of precision. + +In this example, a `float32` is directly used to set a float32 attribute value: + +```go +var value float32 = 1.23 +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), value) +``` + +In this example, a `types.List` of `types.Float32` is created from a `[]float32`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.Float32Type, []float32{1.2, 2.4}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float64.mdx new file mode 100644 index 0000000000..b798c90400 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/float64.mdx @@ -0,0 +1,121 @@ +--- +page_title: Float64 types +description: >- + Learn how to implement 64-bit floating point value types with the Terraform plugin + framework. +--- + +# Float64 types + + + +Use [Int64 Type](/terraform/plugin/framework/handling-data/types/int64) for 64-bit integer numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/types/number) for arbitrary precision numbers. + + + +Float64 types store a 64-bit floating point number. + +By default, float64 from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.Float64Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float64Type) and its associated value storage type of [`types.Float64`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float64). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*float64`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a float64 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Float64Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Float64Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Float64Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Float64Attribute) | + +If the float64 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.Float64Type` or the appropriate [custom type](#extending). + +If the float64 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.Float64Type` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/float64#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Float64` in this case. + + + +Access `types.Float64` information via the following methods: + +* [`(types.Float64).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Value.IsNull): Returns true if the float64 is null. +* [`(types.Float64).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Value.IsUnknown): Returns true if the float64 is unknown. +* [`(types.Float64).ValueFloat64() float64`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Value.ValueFloat64): Returns the known float64, or `0.0` if null or unknown. +* [`(types.Float64).ValueFloat64Pointer() *float64`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Float64Value.ValueFloat64Pointer): Returns a float64 pointer to a known value, `nil` if null, or a pointer to `0.0` if unknown. + +In this example, a float64 value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Float64 `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myFloat64 now contains a Go float64 with the known value +myFloat64 := data.ExampleAttribute.ValueFloat64() +``` + +## Setting Values + +Call one of the following to create a `types.Float64` value: + +* [`types.Float64Null()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float64Null): A null float64 value. +* [`types.Float64Unknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float64Unknown): An unknown float64 value. +* [`types.Float64Value(float64)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float64Value): A known value. +* [`types.Float64PointerValue(*float64)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Float64PointerValue): A known value. + +In this example, a known float64 value is created: + +```go +types.Float64Value(1.23) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +Numbers can be automatically converted from the following Go types, pointers to these types, or any aliases of these types, such `type MyNumber int`: + +* `int`, `int8`, `int16`, `int32`, `int64` +* `uint`, `uint8`, `uint16`, `uint32`, `uint64` +* `float32`, `float64` +* [`*big.Int`](https://pkg.go.dev/math/big#Int), [`*big.Float`](https://pkg.go.dev/math/big#Float) + +An error will be returned if the value of the number cannot be stored in the numeric type supplied because of an overflow or other loss of precision. + +In this example, a `float64` is directly used to set a float64 attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), 1.23) +``` + +In this example, a `types.List` of `types.Float64` is created from a `[]float64`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.Float64Type, []float64{1.2, 2.4}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/index.mdx new file mode 100644 index 0000000000..4e5f9103a2 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/index.mdx @@ -0,0 +1,89 @@ +--- +page_title: Data types +description: >- + The Terraform plugin framework includes multiple built-in attribute types + and supports custom and dynamic attribute types. You can implement custom + types based off of the built-in attribute types. +--- + +# Data types + +Types are value storage and access mechanism for resource, data source, or provider [schema](/terraform/plugin/framework/handling-data/schemas) data. Every attribute and block has an associated type, which describes the kind of data. These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*string`. Framework types can be extended by implementing [custom types](/terraform/plugin/framework/handling-data/types/custom) in provider code or shared libraries to provide specific use case functionality. + +## Available Types + +The framework type system supports the following types: + +- [Primitive](#primitive-types): Type that contains a single value, such as a boolean, number, or string. +- [Collection](#collection-types): Type that contains multiple values of a single element type, such as a list, map, or set. +- [Object](#object-type): Type that defines a mapping of explicit attribute names to value types. +- [Tuple](#tuple-type): Type that defines an ordered collection of elements where each element has it's own type. +- [Dynamic](#dynamic-type): Container type that can contain any underlying value type. + +### Primitive Types + +Types that contain a single data value, such as a boolean, number, or string. These are directly associated with their [primitive attribute type](/terraform/plugin/framework/handling-data/attributes#primitive-attribute-types). + +| Type | Use Case | +|----------------|----------| +| [Bool](/terraform/plugin/framework/handling-data/types/bool) | Boolean true or false | +| [Float32](/terraform/plugin/framework/handling-data/types/float32) | 32-bit floating point number | +| [Float64](/terraform/plugin/framework/handling-data/types/float64) | 64-bit floating point number | +| [Int32](/terraform/plugin/framework/handling-data/types/int32) | 32-bit integer number | +| [Int64](/terraform/plugin/framework/handling-data/types/int64) | 64-bit integer number | +| [Number](/terraform/plugin/framework/handling-data/types/number) | Arbitrary precision (generally over 64-bit, up to 512-bit) number | +| [String](/terraform/plugin/framework/handling-data/types/string) | Collection of UTF-8 encoded characters | + +### Collection Types + +Types that contain multiple values of a single element type, such as a list, map, or set. + +These types are associated with: + +- [Collection attribute types](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types) +- Collection-based [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) (list, map, and set of [object type](#object-type)) +- Collection-based [nested block type](/terraform/plugin/framework/handling-data/blocks) (list and set of [object type](#object-type)) + +| Type | Use Case | +|----------------|----------| +| [List](/terraform/plugin/framework/handling-data/types/list) | Ordered collection of single element type | +| [Map](/terraform/plugin/framework/handling-data/types/map) | Mapping of arbitrary string keys to values of single element type | +| [Set](/terraform/plugin/framework/handling-data/types/set) | Unordered, unique collection of single element type | + +### Object Type + +Type that defines a mapping of explicit attribute names to value types. + +This type is associated with: + +- [Single nested attibute type](/terraform/plugin/framework/handling-data/attributes/single-nested) +- [Single nested block type](/terraform/plugin/framework/handling-data/blocks/single-nested) +- Nested object within collection-based [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) (list, map, and set of [object type](#object-type)) +- Nested object within collection-based [nested block type](/terraform/plugin/framework/handling-data/blocks) (list and set of [object type](#object-type)) +- [Object attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types) + +| Type | Use Case | +|----------------|----------| +| [Object](/terraform/plugin/framework/handling-data/types/object) | Mapping of explicit attribute names to values | + +### Tuple Type + +Type that defines an ordered collection of elements where each element has it's own type. + + + +This type intentionally includes less functionality than other types in the type system as it has limited real world application and therefore is not exposed to provider developers except when working with dynamic values. + + + +| Type | Use Case | +|----------------|----------| +| [Tuple](/terraform/plugin/framework/handling-data/types/tuple) | Ordered collection of multiple element types | + +### Dynamic Type + +Container type that can contain any underlying value type, determined by Terraform or the provider at runtime. + +| Type | Use Case | +|----------------|----------| +| [Dynamic](/terraform/plugin/framework/handling-data/types/dynamic) | Any value type of data, determined at runtime. | \ No newline at end of file diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int32.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int32.mdx new file mode 100644 index 0000000000..b8525bc089 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int32.mdx @@ -0,0 +1,121 @@ +--- +page_title: Int32 types +description: >- + Learn how to implement 32-bit integer value types with the Terraform plugin + framework. +--- + +# Int32 types + + + +Use [Float32 Type](/terraform/plugin/framework/handling-data/types/float32) for 32-bit floating point numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/types/number) for arbitrary precision numbers. + + + +Int32 types store a 32-bit integer number. + +By default, int32 from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.Int32Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int32Type) and its associated value storage type of [`types.Int32`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int32). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*int32`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a int32 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Int32Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Int32Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Int32Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Int32Attribute) | + +If the int32 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.Int32Type` or the appropriate [custom type](#extending). + +If the int32 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.Int32Type` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/int32#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Int32` in this case. + + + +Access `types.Int32` information via the following methods: + +* [`(types.Int32).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int32Value.IsNull): Returns true if the int32 is null. +* [`(types.Int32).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int32Value.IsUnknown): Returns true if the int32 is unknown. +* [`(types.Int32).ValueInt32() int32`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int32Value.ValueInt32): Returns the known int32, or `0` if null or unknown. +* [`(types.Int32).ValueInt32Pointer() *int32`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int32Value.ValueInt32Pointer): Returns a int32 pointer to a known value, `nil` if null, or a pointer to `0` if unknown. + +In this example, a int32 value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Int32 `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myInt32 now contains a Go int32 with the known value +myInt32 := data.ExampleAttribute.ValueInt32() +``` + +## Setting Values + +Call one of the following to create a `types.Int32` value: + +* [`types.Int32Null()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int32Null): A null int32 value. +* [`types.Int32Unknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int32Unknown): An unknown int32 value. +* [`types.Int32Value(int32)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int32Value): A known value. +* [`types.Int32PointerValue(*int32)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int32PointerValue): A known value. + +In this example, a known int32 value is created: + +```go +types.Int32Value(123) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +Numbers can be automatically converted from the following Go types, pointers to these types, or any aliases of these types, such `type MyNumber int`: + +* `int`, `int8`, `int16`, `int32`, `int64` +* `uint`, `uint8`, `uint16`, `uint32`, `uint64` +* `float32`, `float64` +* [`*big.Int`](https://pkg.go.dev/math/big#Int), [`*big.Float`](https://pkg.go.dev/math/big#Float) + +An error will be returned if the value of the number cannot be stored in the numeric type supplied because of an overflow or other loss of precision. + +In this example, a `int32` is directly used to set a int32 attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), 123) +``` + +In this example, a `types.List` of `types.Int32` is created from a `[]int32`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.Int32Type, []int32{123, 456}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int64.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int64.mdx new file mode 100644 index 0000000000..7f741f5ebb --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/int64.mdx @@ -0,0 +1,121 @@ +--- +page_title: Int64 types +description: >- + Learn how to implement 64-bit integer value types with the Terraform plugin + framework. +--- + +# Int64 types + + + +Use [Float64 Type](/terraform/plugin/framework/handling-data/types/float64) for 64-bit floating point numbers. Use [Number Attribute](/terraform/plugin/framework/handling-data/types/number) for arbitrary precision numbers. + + + +Int64 types store a 64-bit integer number. + +By default, int64 from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.Int64Type`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int64Type) and its associated value storage type of [`types.Int64`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int64). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*int64`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a int64 value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#Int64Attribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#Int64Attribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Int64Attribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#Int64Attribute) | + +If the int64 value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.Int64Type` or the appropriate [custom type](#extending). + +If the int64 value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.Int64Type` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/int64#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Int64` in this case. + + + +Access `types.Int64` information via the following methods: + +* [`(types.Int64).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Value.IsNull): Returns true if the int64 is null. +* [`(types.Int64).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Value.IsUnknown): Returns true if the int64 is unknown. +* [`(types.Int64).ValueInt64() int64`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Value.ValueInt64): Returns the known int64, or `0` if null or unknown. +* [`(types.Int64).ValueInt64Pointer() *int64`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#Int64Value.ValueInt64Pointer): Returns a int64 pointer to a known value, `nil` if null, or a pointer to `0` if unknown. + +In this example, a int64 value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Int64 `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myInt64 now contains a Go int64 with the known value +myInt64 := data.ExampleAttribute.ValueInt64() +``` + +## Setting Values + +Call one of the following to create a `types.Int64` value: + +* [`types.Int64Null()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int64Null): A null int64 value. +* [`types.Int64Unknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int64Unknown): An unknown int64 value. +* [`types.Int64Value(int64)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int64Value): A known value. +* [`types.Int64PointerValue(*int64)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Int64PointerValue): A known value. + +In this example, a known int64 value is created: + +```go +types.Int64Value(123) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +Numbers can be automatically converted from the following Go types, pointers to these types, or any aliases of these types, such `type MyNumber int`: + +* `int`, `int8`, `int16`, `int32`, `int64` +* `uint`, `uint8`, `uint16`, `uint32`, `uint64` +* `float32`, `float64` +* [`*big.Int`](https://pkg.go.dev/math/big#Int), [`*big.Float`](https://pkg.go.dev/math/big#Float) + +An error will be returned if the value of the number cannot be stored in the numeric type supplied because of an overflow or other loss of precision. + +In this example, a `int64` is directly used to set a int64 attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), 123) +``` + +In this example, a `types.List` of `types.Int64` is created from a `[]int64`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.Int64Type, []int64{123, 456}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/list.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/list.mdx new file mode 100644 index 0000000000..9352d8f781 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/list.mdx @@ -0,0 +1,125 @@ +--- +page_title: List types +description: >- + Learn how to implement list value types with the Terraform pluginprovider + framework. +--- + +# List types + +List types store an ordered collection of single element type. + +By default, lists from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.ListType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListType) and its associated value storage type of [`types.List`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#List). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as a slice. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a list of a single element type to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ListAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ListAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ListAttribute) | + +Use one of the following attribute types to directly add a list of a nested attributes to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute or Block Type | +|-------------|-------------------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ListNestedAttribute) | +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ListNestedBlock) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ListNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ListNestedBlock) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListNestedBlock) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ListNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ListNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ListNestedBlock) | + +If the list value should be the element type of another [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field to `types.ListType{ElemType: /* ... */}` or the appropriate [custom type](#extending). + +If the list value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value to `types.ListType{ElemType: /* ... */}` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/list#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.List` in this case. + + + +Access `types.List` information via the following methods: + +* [`(types.List).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListValue.IsNull): Returns `true` if the list is null. +* [`(types.List).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListValue.IsUnknown): Returns `true` if the list is unknown. Returns `false` if the number of elements is known, any of which may be unknown. +* [`(types.List).Elements() []attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListValue.Elements): Returns the known `[]attr.Value` value, or `nil` if null or unknown. +* [`(types.List).ElementsAs(context.Context, any, bool) diag.Diagnostics`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ListValue.ElementsAs): Converts the known values into the given Go type, if possible. It is recommended to use a slice of framework types to account for elements which may be unknown. + +In this example, a list of strings value is checked for being null or unknown value first, before accessing its known value elements as a `[]types.String`: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.List `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +elements := make([]types.String, 0, len(data.ExampleAttribute.Elements())) +diags := data.ExampleAttribute.ElementsAs(ctx, &elements, false) +``` + +## Setting Values + +Call one of the following to create a `types.List` value: + +* [`types.ListNull(attr.Type) types.List`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListNull): A null list value with the given element type. +* [`types.ListUnknown(attr.Type) types.List`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListUnknown): An unknown list value with the given element type. +* [`types.ListValue(attr.Type, []attr.Value) (types.List, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValue): A known value with the given element type and values. +* [`types.ListValueFrom(context.Context, attr.Type, any) (types.List, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom): A known value with the given element type and values. This can convert the source data from standard Go types into framework types as noted in the documentation for each element type, such as giving `[]*string` for a `types.List` of `types.String`. +* [`types.ListValueMust(attr.Type, []attr.Value) types.List`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueMust): A known value with the given element type and values. Any diagnostics are converted to a runtime panic. This is recommended only for testing or exhaustively tested logic. + +In this example, a known list value is created from framework types: + +```go +elements := []attr.Value{types.StringValue("one"), types.StringValue("two")} +listValue, diags := types.ListValue(types.StringType, elements) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +A Go built-in slice type (`[]T`) or type alias of a slice type such as `type MyListType []T` can be used instead. + +In this example, a `[]string` is directly used to set a list attribute value: + +```go +elements := []string{"one", "two"} +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), elements) +``` + +In this example, a `types.List` of `types.String` is created from a `[]string`: + +```go +elements := []string{"one", "two"} +listValue, diags := types.ListValueFrom(ctx, types.StringType, elements) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/map.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/map.mdx new file mode 100644 index 0000000000..a1b0415d5d --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/map.mdx @@ -0,0 +1,130 @@ +--- +page_title: Map types +description: >- + Learn how to implement mapping value types with the Terraform plugin + framework. +--- + +# Map type + +Map types store an ordered collection of single element type. + +By default, maps from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.MapType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapType) and its associated value storage type of [`types.Map`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Map). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as a map. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a map of a single element type to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#MapAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#MapAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#MapAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#MapAttribute) | + +Use one of the following attribute types to directly add a map of a nested attributes to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#MapNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#MapNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#MapNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#MapNestedAttribute) | + +If the map value should be the element type of another [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field to `types.MapType{ElemType: /* ... */}` or the appropriate [custom type](#extending). + +If the map value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value to `types.MapType{ElemType: /* ... */}` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/map#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Map` in this case. + + + +Access `types.Map` information via the following methods: + +* [`(types.Map).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapValue.IsNull): Returns `true` if the map is null. +* [`(types.Map).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapValue.IsUnknown): Returns `true` if the map is unknown. Returns `false` if the number of elements is known, any of which may be unknown. +* [`(types.Map).Elements() map[string]attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapValue.Elements): Returns the known `map[string]attr.Value` value, or `nil` if null or unknown. +* [`(types.Map).ElementsAs(context.Context, any, bool) diag.Diagnostics`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#MapValue.ElementsAs): Converts the known values into the given Go type, if possible. It is recommended to use a map of framework types to account for elements which may be unknown. + +In this example, a map of strings value is checked for being null or unknown value first, before accessing its known value elements as a `map[string]types.String`: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Map `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +elements := make(map[string]types.String, len(data.ExampleAttribute.Elements())) +diags := data.ExampleAttribute.ElementsAs(ctx, &elements, false) +``` + +## Setting Values + +Call one of the following to create a `types.Map` value: + +* [`types.MapNull(attr.Type) types.Map`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapNull): A null list value with the given element type. +* [`types.MapUnknown(attr.Type) types.Map`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapUnknown): An unknown list value with the given element type. +* [`types.MapValue(attr.Type, map[string]attr.Value) (types.Map, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValue): A known value with the given element type and values. +* [`types.MapValueFrom(context.Context, attr.Type, any) (types.Map, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom): A known value with the given element type and values. This can convert the source data from standard Go types into framework types as noted in the documentation for each element type, such as giving `map[string]*string` for a `types.Map` of `types.String`. +* [`types.MapValueMust(map[string]attr.Type, map[string]attr.Value) types.Map`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueMust): A known value with the given element type and values. Any diagnostics are converted to a runtime panic. This is recommended only for testing or exhaustively tested logic. + +In this example, a known map value is created from framework types: + +```go +elements := map[string]attr.Value{ + "key1": types.StringValue("value1"), + "key2": types.StringValue("value2"), +} +mapValue, diags := types.MapValue(types.StringType, elements) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +A Go built-in map of string key type (`map[string]T`) or type alias of a map of string key type such as `type MyMapType map[string]T` can be used instead. + +In this example, a `map[string]string` is directly used to set a map attribute value: + +```go +elements := map[string]string{ + "key1": "value1", + "key2": "value2", +} +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), elements) +``` + +In this example, a `types.Map` of `types.String` is created from a `map[string]string`: + +```go +elements := map[string]string{ + "key1": "value1", + "key2": "value2", +} +mapValue, diags := types.MapValueFrom(ctx, types.StringType, elements) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/number.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/number.mdx new file mode 100644 index 0000000000..aa15721073 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/number.mdx @@ -0,0 +1,117 @@ +--- +page_title: Number types +description: >- + Learn how to implement arbitrary precision number value types with the Terraform plugin + framework. +--- + +# Number types + + + +Use [Float64 Type](/terraform/plugin/framework/handling-data/types/float64) for 64-bit floating point numbers. Use [Int64 Type](/terraform/plugin/framework/handling-data/types/int64) for 64-bit integer numbers. + + + +Number types store an arbitrary precision (generally more than 64-bit, up to 512-bit) number. + +By default, number from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.NumberType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#NumberType) and its associated value storage type of [`types.Number`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Number). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*big.Float`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a number value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#NumberAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#NumberAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#NumberAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#NumberAttribute) | + +If the number value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.NumberType` or the appropriate [custom type](#extending). + +If the number value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.NumberType` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/number#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Number` in this case. + + + +Access `types.Number` information via the following methods: + +* [`(types.Number).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberValue.IsNull): Returns true if the number is null. +* [`(types.Number).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberValue.IsUnknown): Returns true if the number is unknown. +* [`(types.Number).ValueBigFloat() *big.Float`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#NumberValue.ValueNumber): Returns the known number, or the equivalent of `0.0` if null or unknown. + +In this example, a number value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Number `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myNumber now contains a Go *big.Float with the known value +myNumber := data.ExampleAttribute.ValueBigFloat() +``` + +## Setting Values + +Call one of the following to create a `types.Number` value: + +* [`types.NumberNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#NumberNull): A null float64 value. +* [`types.NumberUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#NumberUnknown): An unknown float64 value. +* [`types.NumberValue(*big.Float)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#NumberValue): A known value. + +In this example, a known number value is created: + +```go +types.NumberValue(big.NewFloat(1.23)) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +Numbers can be automatically converted from the following Go types, pointers to these types, or any aliases of these types, such `type MyNumber int`: + +* `int`, `int8`, `int16`, `int32`, `int64` +* `uint`, `uint8`, `uint16`, `uint32`, `uint64` +* `float32`, `float64` +* [`*big.Int`](https://pkg.go.dev/math/big#Int), [`*big.Float`](https://pkg.go.dev/math/big#Float) + +In this example, a `*big.Float` is directly used to set a number attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), big.NewFloat(1.23)) +``` + +In this example, a `types.List` of `types.Number` is created from a `[]*big.Float`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.NumberType, []*big.Float{big.NewFloat(1.2), big.NewFloat(2.4)}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/object.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/object.mdx new file mode 100644 index 0000000000..a5aa0f62e9 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/object.mdx @@ -0,0 +1,246 @@ +--- +page_title: Object types +description: >- + Learn how to implement object value types with the Terraform plugin framework. +--- + +# Object types + +Object types store a mapping of explicit attribute names to value types. Objects must declare all attribute values, even when null or unknown, unless the entire object is null or unknown. + +By default, objects from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.ObjectType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectType) and its associated value storage type of [`types.Object`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Object). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as a struct. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + + + +Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of object attribute types where possible. Object attributes have limited utility as they can only define type information. + + + +Use one of the following attribute types to directly add a single structure of a nested attributes to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute or Block Type | +|-------------|-------------------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SingleNestedAttribute) | +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SingleNestedBlock) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SingleNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SingleNestedBlock) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SingleNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SingleNestedBlock) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SingleNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SingleNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SingleNestedBlock) | + +If a wrapping collection is needed on the structure of nested attributes, any of the other nested attribute and nested block types can be used. + +Use one of the following attribute types to directly add an object value directly to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#ObjectAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#ObjectAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ObjectAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#ObjectAttribute) | + +If the object value should be the element type of another [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field to `types.ObjectType{AttrTypes: /* ... */}` or the appropriate [custom type](#extending). + +If the object value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value to `types.ObjectType{AttrTypes: /* ... */}` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the associated [attribute documentation](/terraform/plugin/framework/handling-data/attributes) to understand how schema-based data gets mapped into accessible values, such as a `types.Object` in this case. + + + +Access `types.Object` information via the following methods: + +* [`(types.Object).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectValue.IsNull): Returns `true` if the object is null. +* [`(types.Object).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectValue.IsUnknown): Returns `true` if the object is unknown. +* [`(types.Object).Attributes() map[string]attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectValue.Attributes): Returns the known `map[string]attr.Value` value, or `nil` if null or unknown. +* [`(types.Object).As(context.Context, any, ObjectAsOptions) diag.Diagnostics`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#ObjectValue.As): Converts the known values into the given Go type, if possible. It is recommended to use a struct of framework types to account for attributes which may be unknown. + +In this example, an object with a string attribute is checked for being null or unknown value first, before accessing its known value attributes as a Go struct type: + +```go +// Example data model definitions +// type ExampleModel struct { +// ExampleAttribute types.Object `tfsdk:"example_attribute"` +// } +// +// type ExampleAttributeModel struct { +// StringAttribute types.String `tfsdk:"string_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +var exampleAttribute ExampleAttributeModel + +diags := data.ExampleAttribute.As(ctx, &exampleAttribute, basetypes.ObjectAsOptions{}) +// Object data now is accessible, such as: exampleAttribute.StringAttribute.StringValue() +``` + +## Setting Values + +Call one of the following to create a `types.Object` value: + +* [`types.ObjectNull(map[string]attr.Type) types.Object`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectNull): A null object value with the given element type. +* [`types.ObjectUnknown(map[string]attr.Type) types.Object`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectUnknown): An unknown object value with the given element type. +* [`types.ObjectValue(map[string]attr.Type, map[string]attr.Value) (types.Object, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValue): A known value with the given attribute type mapping and attribute values mapping. +* [`types.ObjectValueFrom(context.Context, map[string]attr.Type, any) (types.Object, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom): A known value with the given attribute type mapping and values. This can convert the source data from standard Go types into framework types as noted in the documentation for each type, such as giving a `struct` for a `types.Object`. +* [`types.ObjectValueMust(map[string]attr.Type, map[string]attr.Value) types.Object`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueMust): A known value with the given attribute type mapping and attribute value mapping. Any diagnostics are converted to a runtime panic. This is recommended only for testing or exhaustively tested logic. + +In this example, a known object value is created from framework types: + +```go +elementTypes := map[string]attr.Type{ + "attr1": types.StringType, + "attr2": types.Int64Type, +} +elements := map[string]attr.Value{ + "attr1": types.StringValue("value"), + "attr2": types.Int64Value(123), +} +objectValue, diags := types.ObjectValue(elementTypes, elements) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +## Automatic conversion with `tfsdk` struct tags + +Objects can be automatically converted to and from any Go struct type that follows these constraints to prevent accidental data loss: + +* Every struct field must have a `tfsdk` struct tag and every attribute in the object must have a corresponding struct tag. The `tfsdk` struct tag must name an attribute in the object that it is being mapped or be set to `-` to explicitly declare it does not map to an attribute in the object. Duplicate `tfsdk` struct tags are not allowed. +* Every struct type must be an acceptable conversion type according to the type documentation, such as `*string` being acceptable for a string type. However, it is recommended to use framework types to simplify data modeling (one model type for accessing and setting data) and prevent errors when encountering unknown values from Terraform. + +In this example, a struct is directly used to set an object attribute value: + +```go +type ExampleAttributeModel struct { + Int64Attribute types.Int64 `tfsdk:"int64_attribute` + StringAttribute types.String `tfsdk:"string_attribute"` +} + +value := ExampleAttributeModel{ + Int64Attribute: types.Int64Value(123), + StringAttribute: types.StringValue("example"), +} + +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), value) +``` + +In this example, a `types.Object` is created from a struct: + +```go +type ExampleAttributeModel struct { + Int64Attribute types.Int64 `tfsdk:"int64_attribute` + StringAttribute types.String `tfsdk:"string_attribute"` +} + +func (m ExampleAttributeModel) AttributeTypes() map[string]attr.Type { + return map[string]attr.Type{ + "int64_attribute": types.Int64Type, + "string_attribute": types.StringType, + } +} + +value := ExampleAttributeModel{ + Int64Attribute: types.Int64Value(123), + StringAttribute: types.StringValue("example"), +} + +objectValue, diags := types.ObjectValueFrom(ctx, value.AttributeTypes(), value) +``` + +### Struct Embedding + +Go struct types that utilize [struct embedding](https://go.dev/doc/effective_go#embedding) to promote fields with `tfsdk` tags are supported when converting to and from object types. + +In this example, a `types.Object` is created from a struct that embeds another struct type: + +```go +type ExampleAttributeModel struct { + Attr1 types.String `tfsdk:"attr_1"` + Attr2 types.Bool `tfsdk:"attr_2"` + CommonModel // This embedded struct type promotes the Attr3 field +} + +type CommonModel struct { + Attr3 types.Int64 `tfsdk:"attr_3"` +} + +func (m ExampleAttributeModel) AttributeTypes() map[string]attr.Type { + return map[string]attr.Type{ + "attr_1": types.StringType, + "attr_2": types.BoolType, + "attr_3": types.Int64Type, + } +} + +value := ExampleAttributeModel{ + Attr1: types.StringValue("example"), + Attr2: types.BoolValue(true), +} +// This field is promoted from CommonModel +value.Attr3 = types.Int64Value(123) + +objectValue, diags := types.ObjectValueFrom(ctx, value.AttributeTypes(), value) +``` + +#### Restrictions + +In addition to the constraints [listed above for object conversions](#automatic-conversion-with-tfsdk-struct-tags) using `tfsdk` tagged fields, embedded struct types have these additional restrictions: + +* Promoted fields cannot have duplicate `tfsdk` struct tags that conflict with any fields of structs they are embedded within. +```go +type thingResourceModel struct { + Attr1 types.String `tfsdk:"attr_1"` + Attr2 types.Bool `tfsdk:"attr_2"` + CommonModel +} + +type CommonModel struct { + // This field has a duplicate tfsdk tag, conflicting with (thingResourceModel).Attr1 + // and will raise an error diagnostic during conversion. + ConflictingAttr types.Int64 `tfsdk:"attr_1"` +} +``` +* Struct types embedded by pointers are not supported. +```go +type thingResourceModel struct { + Attr1 types.String `tfsdk:"attr_1"` + Attr2 types.Bool `tfsdk:"attr_2"` + // This type of struct embedding is not supported and will raise + // an error diagnostic during conversion. + // + // Remove the pointer to embed the struct by value. + *CommonModel +} + +type CommonModel struct { + Attr3 types.Int64 `tfsdk:"attr_3"` + Attr4 types.List `tfsdk:"attr_4"` +} +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/set.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/set.mdx new file mode 100644 index 0000000000..d8970783c7 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/set.mdx @@ -0,0 +1,124 @@ +--- +page_title: Set types +description: >- + Learn how to implement set value types with the Terraform plugin framework. +--- + +# Set types + +Set types store an ordered collection of single element type. + +By default, sets from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.SetType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetType) and its associated value storage type of [`types.Set`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#Set). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as a slice. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a set of a single element type to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SetAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SetAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SetAttribute) | + +Use one of the following attribute types to directly add a set of a nested attributes to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute or Block Type | +|-------------|-------------------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SetNestedAttribute) | +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#SetNestedBlock) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SetNestedAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#SetNestedBlock) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetNestedAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetNestedBlock) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SetNestedAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.SetNestedBlock`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#SetNestedBlock) | + +If the set value should be the element type of another [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElementType` field to `types.SetType{ElemType: /* ... */}` or the appropriate [custom type](#extending). + +If the set value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttributeTypes` map value to `types.SetType{ElemType: /* ... */}` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/set#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.Set` in this case. + + + +Access `types.Set` information via the following methods: + +* [`(types.Set).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetValue.IsNull): Returns `true` if the set is null. +* [`(types.Set).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetValue.IsUnknown): Returns `true` if the set is unknown. Returns `false` if the number of elements is known, any of which may be unknown. +* [`(types.Set).Elements() []attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetValue.Elements): Returns the known `[]attr.Value` value, or `nil` if null or unknown. +* [`(types.Set).ElementsAs(context.Context, any, bool) diag.Diagnostics`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#SetValue.ElementsAs): Converts the known values into the given Go type, if possible. It is recommended to use a slice of framework types to account for elements which may be unknown. + +In this example, a set of strings value is checked for being null or unknown value first, before accessing its known value elements as a `[]types.String`: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.Set `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +elements := make([]types.String, 0, len(data.ExampleAttribute.Elements())) +diags := data.ExampleAttribute.ElementsAs(ctx, &elements, false) +``` + +## Setting Values + +Call one of the following to create a `types.Set` value: + +* [`types.SetNull(attr.Type) types.Set`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetNull): A null set value with the given element type. +* [`types.SetUnknown(attr.Type) types.Set`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetUnknown): An unknown set value with the given element type. +* [`types.SetValue(attr.Type, []attr.Value) (types.Set, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValue): A known value with the given element type and values. +* [`types.SetValueFrom(context.Context, attr.Type, any) (types.Set, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom): A known value with the given element type and values. This can convert the source data from standard Go types into framework types as noted in the documentation for each element type, such as giving `[]*string` for a `types.Set` of `types.String`. +* [`types.SetValueMust(attr.Type, []attr.Value) types.Set`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueMust): A known value with the given element type and values. Any diagnostics are converted to a runtime panic. This is recommended only for testing or exhaustively tested logic. + +In this example, a known set value is created from framework types: + +```go +elements := []attr.Value{types.StringValue("one"), types.StringValue("two")} +setValue, diags := types.SetValue(types.StringType, elements) +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +A Go built-in slice type (`[]T`) or type alias of a slice type such as `type MyListType []T` can be used instead. + +In this example, a `[]string` is directly used to set a set attribute value: + +```go +elements := []string{"one", "two"} +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), elements) +``` + +In this example, a `types.Set` of `types.String` is created from a `[]string`: + +```go +elements := []string{"one", "two"} +setValue, diags := types.SetValueFrom(ctx, types.StringType, elements) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/string.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/string.mdx new file mode 100644 index 0000000000..65eb016cc2 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/string.mdx @@ -0,0 +1,121 @@ +--- +page_title: String types +description: >- + Learn how to implement string value types with the Terraform plugin framework. +--- + +# String types + +String types store a collection of UTF-8 encoded bytes. + +By default, strings from [schema](/terraform/plugin/framework/handling-data/schemas) (configuration, plan, and state) data are represented in the framework by [`types.StringType`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#StringType) and its associated value storage type of [`types.String`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#String). These types fully support Terraform's [type system concepts](/terraform/plugin/framework/handling-data/terraform-concepts) that cannot be represented in Go built-in types, such as `*string`. Framework types can be [extended](#extending) by provider code or shared libraries to provide specific use case functionality. + +## Schema Definitions + +Use one of the following attribute types to directly add a string value to a [schema](/terraform/plugin/framework/handling-data/schemas) or [nested attribute type](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types): + +| Schema Type | Attribute Type | +|-------------|----------------| +| [Data Source](/terraform/plugin/framework/data-sources) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/datasource/schema#StringAttribute) | +| [Provider](/terraform/plugin/framework/providers) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider/schema#StringAttribute) | +| [Resource](/terraform/plugin/framework/resources) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#StringAttribute) | +| [Ephemeral Resource](/terraform/plugin/framework/ephemeral-resources) | [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/ephemeral/schema#StringAttribute) | + +If the string value should be the element type of a [collection attribute type](/terraform/plugin/framework/handling-data/attributes#collection-attribute-types), set the `ElemType` field to `types.StringType` or the appropriate [custom type](#extending). + +If the string value should be a value type of an [object attribute type](/terraform/plugin/framework/handling-data/attributes#object-attribute-type), set the `AttrTypes` map value to `types.StringType` or the appropriate [custom type](#extending). + +## Accessing Values + + + +Review the [attribute documentation](/terraform/plugin/framework/handling-data/attributes/string#accessing-values) to understand how schema-based data gets mapped into accessible values, such as a `types.String` in this case. + + + + + +The `(types.String).String()` method is reserved for debugging purposes and returns `""` if the value is null and `""` if the value is unknown. Use `(types.String).ValueString()` or `(types.String).ValueStringPointer()` for accessing a known string value. + + + +Access `types.String` information via the following methods: + +* [`(types.String).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringValue.IsNull): Returns true if the string is null. +* [`(types.String).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringValue.IsUnknown): Returns true if the string is unknown. +* [`(types.String).ValueString() string`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringValue.ValueString): Returns the known string, or an empty string if null or unknown. +* [`(types.String).ValueStringPointer() *string`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#StringValue.ValueStringPointer): Returns a string pointer to a known value, `nil` if null, or a pointer to an empty string if unknown. + +In this example, a string value is checked for being null or unknown value first, before accessing its known value: + +```go +// Example data model definition +// type ExampleModel struct { +// ExampleAttribute types.String `tfsdk:"example_attribute"` +// } +// +// This would be filled in, such as calling: req.Plan.Get(ctx, &data) +var data ExampleModel + +// optional logic for handling null value +if data.ExampleAttribute.IsNull() { + // ... +} + +// optional logic for handling unknown value +if data.ExampleAttribute.IsUnknown() { + // ... +} + +// myString now contains a Go string with the known value +myString := data.ExampleAttribute.ValueString() +``` + +## Setting Values + +Call one of the following to create a `types.String` value: + +* [`types.StringNull()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#StringNull): A null string value. +* [`types.StringUnknown()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#StringUnknown): An unknown string value. +* [`types.StringValue(string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#StringValue): A known value. +* [`types.StringPointerValue(*string)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#StringPointerValue): A known value. + +In this example, a known string value is created: + +```go +types.StringValue("example value") +``` + +Otherwise, for certain framework functionality that does not require `types` implementations directly, such as: + +* [`(tfsdk.State).SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute) +* [`types.ListValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ListValueFrom) +* [`types.MapValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#MapValueFrom) +* [`types.ObjectValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#ObjectValueFrom) +* [`types.SetValueFrom()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#SetValueFrom) + +A Go built-in `string`, `*string` (only with typed `nil`, `(*string)(nil)`), or type alias of `string` such as `type MyStringType string` can be used instead. + +In this example, a `string` is directly used to set a string attribute value: + +```go +diags := resp.State.SetAttribute(ctx, path.Root("example_attribute"), "example value") +``` + +In this example, a `types.List` of `types.String` is created from a `[]string`: + +```go +listValue, diags := types.ListValueFrom(ctx, types.StringType, []string{"value one", "value two"}) +``` + +## Extending + +The framework supports extending its base type implementations with [custom types](/terraform/plugin/framework/handling-data/types/custom). These can adjust expected provider code usage depending on their implementation. + +### Common Use Case Types + +HashiCorp provides additional Go modules which contain custom string type implementations covering common use cases with validation and semantic equality logic: + +* [`terraform-plugin-framework-jsontypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-jsontypes): JSON encoded strings, such as exact byte strings and normalized strings +* [`terraform-plugin-framework-nettypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-nettypes): Networking strings, such as IPv4 addresses, IPv6 addresses, and CIDRs +* [`terraform-plugin-framework-timetypes`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timetypes): Timestamp strings, such as RFC3339 diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/tuple.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/tuple.mdx new file mode 100644 index 0000000000..1276559a94 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/types/tuple.mdx @@ -0,0 +1,55 @@ +--- +page_title: Tuple types +description: >- + Learn how to implement tuple value types with the Terraform plugin framework. +--- + +# Tuple types + + + +The tuple type doesn't have associated schema attributes as it has limited real world application. Provider developers will only encounter tuples when handling provider-defined function variadic parameters or dynamic values. + + + +Tuple types store an ordered collection of elements where each element has it's own type. Values must have **exactly** the same number of elements (no more and no fewer), and the value in each position must match the specified type for that position. + +The tuple type is used to express Terraform's [tuple type constraint](/terraform/language/expressions/type-constraints#tuple). + +## Schema Definitions + +The tuple type is not supported in schema definitions of provider, data sources, ephemeral resources, or managed resources as it has limited real world application. + +## Accessing Values + +Access `types.Tuple` information via the following methods: + +* [`(types.Tuple).IsNull() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#TupleValue.IsNull): Returns `true` if the tuple is null. +* [`(types.Tuple).IsUnknown() bool`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#TupleValue.IsUnknown): Returns `true` if the tuple is unknown. Returns `false` if the number of elements is known, any of which may be unknown. +* [`(types.Tuple).Elements() []attr.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types/basetypes#TupleValue.Elements): Returns the known `[]attr.Value` value, or `nil` if null or unknown. + +## Setting Values + +Call one of the following to create a `types.Tuple` value: + +* [`types.TupleNull([]attr.Type) types.Tuple`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#TupleNull): A null tuple value with the given element types. +* [`types.TupleUnknown([]attr.Type) types.Tuple`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#TupleUnknown): An unknown tuple value with the given element types. +* [`types.TupleValue([]attr.Type, []attr.Value) (types.Tuple, diag.Diagnostics)`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#TupleValue): A known value with the given element types and values. +* [`types.TupleValueMust([]attr.Type, []attr.Value) types.Tuple`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#TupleValueMust): A known value with the given element types and values. Any diagnostics are converted to a runtime panic. This is recommended only for testing or exhaustively tested logic. + +In this example, a known tuple value (`["one", true, 123]`) is created from framework types: + +```go +elementTypes := []attr.Type{ + types.StringType, + types.BoolType, + types.Int64Type, +} +elements := []attr.Value{ + types.StringValue("one"), + types.BoolValue(true), + types.Int64Value(123), +} + +tupleValue, diags := types.TupleValue(elementTypes, elements) +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/writing-state.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/writing-state.mdx new file mode 100644 index 0000000000..200ef6501f --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/handling-data/writing-state.mdx @@ -0,0 +1,85 @@ +--- +page_title: Writing state +description: >- + Learn how to write and update the Terraform statefile with the Terraform + plugin framework. +--- + +# Writing state + +One of the primary jobs of a Terraform provider is to manage the provider's +resources and data sources in the [Terraform state](/terraform/language/state). Writing values to state +is something that provider developers will do frequently. + +The state that a provider developer wants to update is usually stored in a +response object: + +```go +func (r ThingResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) +``` + +In this example, `resp` holds the state that the provider developer should +update. + +## Replace the Entire State + +One way to set the state is to replace all the state values for a resource or +data source all at once. You need to define a type to contain the values. The benefit is that this allows the compiler to check all code that sets values on state, and only the final call to persist state can return an error. + +Use the `Set` method to store the entire state data. + +```go +type ThingResourceModel struct { + Address types.Object `tfsdk:"address"` + Age types.Int64 `tfsdk:"age"` + Name types.String `tfsdk:"name"` + Pets types.List `tfsdk:"pets"` + Registered types.Bool `tfsdk:"registered"` + Tags types.Map `tfsdk:"tags"` +} + +func (r ThingResource) Create(ctx context.Context, + req resource.CreateRequest, resp *resource.CreateResponse) { + var newState ThingResourceModel + + // ... + // update newState by modifying each property as usual for Go values + newState.Name = types.StringValue("J. Doe") + + // persist the values to state + diags := resp.State.Set(ctx, &newState) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } +} +``` + +The state information is represented as an object, and gets persisted like an +object. Refer to the [object type](/terraform/plugin/framework/handling-data/types/object) documentation for an explanation on how +objects get persisted and what Go types are valid for persisting as an object. + +## Set a Single Attribute or Block Value + +Use the `SetAttribute` method to set an individual attribute or block value. + +-> The value must not be an untyped `nil`. Use a typed `nil` or `types` package null value function instead. For example with a `types.StringType` attribute, use `(*string)(nil)` or `types.StringNull()`. + +```go +func (r ThingResource) Read(ctx context.Context, + req resource.ReadRequest, resp *resource.ReadResponse) { + // ... + diags := resp.State.SetAttribute(ctx, path.Root("age"), 7) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } +} +``` + +Refer to the [types](/terraform/plugin/framework/handling-data/types) documentation for more information about supported Go types. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/index.mdx new file mode 100644 index 0000000000..3595b4f4c8 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/index.mdx @@ -0,0 +1,36 @@ +--- +page_title: Terraform plugin framework +description: >- + The Terraform plugin framework is an SDK that you can use to develop Terraform + providers. Learn how the plugin framework works with Terraform core. +--- + +# Terraform plugin framework + +The plugin framework is HashiCorp’s recommended way develop to Terraform Plugins on [protocol version 6](/terraform/plugin/terraform-plugin-protocol#protocol-version-6) or [protocol version 5](/terraform/plugin/terraform-plugin-protocol#protocol-version-5). + +We recommend using the framework to develop new providers because it offers significant advantages as compared to [Terraform Plugin SDKv2](/terraform/plugin/sdkv2). We also recommend migrating existing providers to the framework when possible. Refer to [Plugin Framework Benefits](/terraform/plugin/framework-benefits) for higher level details about how the framework makes provider development easier and [Plugin Framework Features](/terraform/plugin/framework/migrating/benefits) for a detailed functionality comparison between the SDKv2 and the framework. + +## Get Started + +- Try the [Terraform Plugin Framework tutorials](/terraform/tutorials/providers-plugin-framework). +- Clone the [terraform-provider-scaffolding-framework](https://github.com/hashicorp/terraform-provider-scaffolding-framework) template repository on GitHub. + +## Key Concepts + +- [Provider Servers](/terraform/plugin/framework/provider-servers) encapsulate all Terraform plugin details and handle all calls for provider, resource, and data source operations by implementing the [Terraform Plugin Protocol](/terraform/plugin/how-terraform-works#terraform-plugin-protocol). They are implemented as binaries that the Terraform CLI downloads, starts, and stops. +- [Providers](/terraform/plugin/framework/providers) are the top level abstraction that define the available resources and data sources for practitioners to use and may accept its own configuration, such as authentication information. +- [Schemas](/terraform/plugin/framework/handling-data/schemas) define available fields for provider, resource, or provisioner configuration block, and give Terraform metadata about those fields. +- [Resources](/terraform/plugin/framework/resources) are an abstraction that allow Terraform to manage infrastructure objects, such as a compute instance, an access policy, or disk. Providers act as a translation layer between Terraform and an API, offering one or more resources for practitioners to define in a configuration. +- [Data Sources](/terraform/plugin/framework/data-sources) are an abstraction that allow Terraform to reference external data. Providers have data sources that tell Terraform how to request external data and how to convert the response into a format that practitioners can interpolate. +- [Functions](/terraform/plugin/framework/functions) are an abstraction that allow Terraform to reference computational logic. Providers can implement their own custom logic functions to augment the Terraform configuration language [built-in functions](/terraform/language/functions). + +## Test and Publish + +- Learn to write [acceptance tests](/terraform/plugin/framework/acctests) for your provider. +- Learn to [publish your provider](/terraform/registry/providers/publishing) to the Terraform Registry. + +## Combine or Translate + +- [Combine your provider with other SDKv2 providers](/terraform/plugin/mux/combining-protocol-version-5-providers) using [protocol version 5](/terraform/plugin/how-terraform-works#protocol-version-5). +- [Combine your provider with other framework providers](/terraform/plugin/mux/combining-protocol-version-6-providers) using [protocol version 6](/terraform/plugin/how-terraform-works#protocol-version-6). diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/index.mdx new file mode 100644 index 0000000000..3212e2b718 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/index.mdx @@ -0,0 +1,16 @@ +--- +page_title: Framework internals +description: >- + The Terraform plugin framework is a set of libraries implemented in Go. + Learn about the internal implementation details of the framework. +--- + +# Framework internals + +The following information describes some internals of the Terraform Plugin Framework in order to provide a more in-depth view of specific aspects of Framework behaviour. + +## RPCs + +Terraform core issues RPCs when Terraform commands are executed resulting in the subsequent execution of methods defined within providers. + +Refer to [RPCs](/terraform/plugin/framework/internals/rpcs) for details of the [sequence of RPCs](/terraform/plugin/terraform-plugin-protocol#rpcs-and-terraform-commands) that are issued when Terraform commands are executed and Framework functionality that is called as a consequence. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/rpcs.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/rpcs.mdx new file mode 100644 index 0000000000..4e12a18fee --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/internals/rpcs.mdx @@ -0,0 +1,214 @@ +--- +page_title: Framework RPCs +description: >- + Learn how Terraform uses RPCs to support provider functionality. +--- + +# RPCs and framework functionality + +The correlation between the Terraform command, the RPCs that are issued and the Terraform plugin framework methods that are called is as follows: + +## _terraform validate_ + +| Protocol RPCs | Framework Functionality | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [GetProviderSchema](#getproviderschema-rpc) | `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interface `Schema` method | +| [ValidateProviderConfig](#validateproviderconfig-rpc) / [ValidateResourceConfig](#validateresourceconfig-rpc) / [ValidateDataResourceConfig](#validatedataresourceconfig-rpc) | `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interface `Schema` method validators, `ConfigValidators` method, and `ValidateConfig` method | + +## _terraform plan_ + +| Protocol RPCs | Framework Functionality | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [GetProviderSchema](#getproviderschema-rpc) | `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interface `Schema` method | +| [ValidateProviderConfig](#validateproviderconfig-rpc) / [ValidateResourceConfig](#validateresourceconfig-rpc) / [ValidateDataResourceConfig](#validatedataresourceconfig-rpc) | `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interface `Schema` method validators, `ConfigValidators` method, and `ValidateConfig` method | +| [ConfigureProvider](#configureprovider-rpc) | `provider.Provider` interface `Configure` method | +| [ReadResource](#readresource-rpc) / [ReadDataSource](#readdatasource-rpc) | `resource.Resource` and `datasource.DataSource` interface `Read` method | +| [PlanResourceChange](#planresourcechange-rpc) | `resource.Resource` interface `Schema` method plan modifiers and `ModifyPlan` method | + +## _terraform apply_ + +| Protocol RPCs | Framework Functionality | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [GetProviderSchema](#getproviderschema-rpc) | `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interface `Schema` method | +| [ValidateProviderConfig](#validateproviderconfig-rpc) / [ValidateResourceConfig](#validateresourceconfig-rpc) / [ValidateDataResourceConfig](#validatedataresourceconfig-rpc) | `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interface `Schema` method validators, `ConfigValidators` method, and `ValidateConfig` method | +| [ConfigureProvider](#configureprovider-rpc) | `provider.Provider` interface `Configure` method | +| [ReadResource](#readresource-rpc) / [ReadDataSource](#readdatasource-rpc) | `resource.Resource` and `datasource.DataSource` interface `Read` method | +| [PlanResourceChange](#planresourcechange-rpc) | `resource.Resource` interface `Schema` method plan modifiers and `ModifyPlan` method | +| [ApplyResourceChange](#applyresourcechange-rpc) | `resource.Resource` interface `Create`, `Update`, or `Delete` method | + + +## GetProviderSchema RPC + +### Summary + +![diagram: GetProviderSchema RPC Overview](/img/get-provider-schema-overview.png) + + +When _terraform validate | plan | apply_ are executed Terraform core issues the `GetProviderSchema` RPC. The RPC flows through the Terraform plugin framework and ultimately calls the `Schema` function on the provider and on each of the resources and data sources that the provider defines. + +### Detail + +![diagram: GetProviderSchema RPC Detail](/img/get-provider-schema-detail.png) + + +Within the Terraform plugin framework, `terraform-plugin-go` is used to expose gRPC endpoints defined by the Terraform plugin protocol. These endpoints implement the `tfplugin6.ProviderServer` interface for version 6 of the Terraform plugin protocol. The `terraform-plugin-go` module also defines a `tfprotov6.ProviderServer` interface which is implemented by the `terraform-plugin-framework` module, and includes the `GetProviderSchema` function. + +The `terraform-plugin-framework` module implements the `tfprotov6.ProviderServer` interface `GetProviderSchema` function from the `terraform-plugin-go` module in `proto6server.GetProviderSchema`. The `proto6server.GetProviderSchema` function calls `fwserver.GetProviderSchema` which then calls `fwserver.ProviderSchema`, `fwserver.ResourceSchemas` and `fwserver.DataSourceSchemas` functions. The `terraform-plugin-framework` module defines `provider.Provider`, `resource.Resource` and `datasource.DataSource` interfaces for providers, resources and data sources, respectively. Each of these interfaces include a `Schema` function which is implemented by the Terraform provider code written by the provider developer. + +In summary, the schemas for the provider and each of the resources and data sources are defined by the provider developer through implementation of the `Schema` function defined on the `provider.Provider`, `resource.Resource` and `datasource.DataSource` interfaces, respectively. For the `GetProviderSchema` RPC, the implementation of the `Schema` function in the `provider.Provider`, `resource.Resource` and `datasource.DataSource` interfaces represents the "touch-point" for where the RPC sent from Terraform core interacts with the code written by the provider developer. + +## ValidateConfig RPCs + +### Summary + +![diagram: ValidateConfig RPCs Overview](/img/validate-config-overview.png) + + +When _terraform validate | plan | apply_ are executed if the Terraform configuration contains configuration for the provider then Terraform core issues the `ValidateProviderConfig` RPC. Additionally, the `ValidateResourceConfig` and `ValidateDataResourceConfig` RPCs are issued for each of the resources and data sources that appear in the Terraform configuration. There is a 1:1 match between the schema returned from the `GetProviderSchema` RPC and the `ValidateConfig` RPCs. + +The `ValidateConfig` RPCs flow through the Terraform plugin framework and ultimately call the `Validate` function on each of the `ConfigValidators`, the `ValidateConfig` function on the provider, resource or data source, and each of the `Validate` functions defined on each of the attributes and blocks within the provider, resource or data source schema. + +The `ValidateResourceConfig` and `ValidateDataResourceConfig` RPCs additionally call `resource.Configure` and `datasource.Configure`, respectively. + +### Detail + +#### ValidateProviderConfig RPC + +![diagram: ValidateProviderConfig RPC Detail](/img/validate-provider-config-detail.png) + + +#### ValidateResourceConfig RPC + +![diagram: ValidateResourceConfig RPC Detail](/img/validate-resource-config-detail.png) + + +#### ValidateDataResourceConfig RPC + +![diagram: ValidateDataResourceConfig RPC Detail](/img/validate-data-resource-config-detail.png) + + +Within the Terraform plugin framework, `terraform-plugin-go` is used to expose gRPC endpoints defined by the Terraform plugin protocol. These endpoints implement the `tfplugin6.ProviderServer` interface for version 6 of the Terraform plugin protocol. The `terraform-plugin-go` module also defines `tfprotov6.Server` interfaces which are implemented within the `terraform-plugin-framework` module. + +The `terraform-plugin-framework` module contains `proto6server.ValidateConfig` functions which are implementations of the `tfprotov6.Server` interface `ValidateConfig` functions, respectively. Each of these functions then call `fwserver.ValidateConfig` functions, respectively. + +If the provider, resource or data source implements the `.WithConfigValidators` interface defined in the `terraform-plugin-framework` module, the `.ConfigValidators` function is called to retrieve a slice of `.ConfigValidator`, and then `.Validate` is called on each element in the slice sequentially. + +If the provider, resource or data source implements the `.WithValidateConfig` interface, the `.ValidateConfig` function is called. + +The `fwserver.SchemaValidate` function is then called which iterates over each of the attributes and blocks defined within the provider, resource or data source schema and calls the `validator.Validate` for each of the validators defined on the attribute or block. + +In summary: +- The `.ConfigValidators` and `.Validate` functions are optionally defined by the provider developer through implementation of the `.WithConfigValidators` interfaces. +- The `.ValidateConfig` functions are optionally defined by the provider developer through implementation of the `.WithValidateConfig` interfaces. +- The attribute and block validators are optionally specified by the provider developer by adding a type-specific slice of validators to the attribute or block (e.g., []validator.String{...} on a schema.StringAttribute). + +## ConfigureProvider RPC + +### Summary + +![diagram: ConfigureProvider RPC Overview](/img/configure-provider-overview.png) + + +When _terraform plan | apply_ are executed Terraform core issues the `ConfigureProvider` RPC. + +The `ConfigureProvider` RPC flows through the Terraform plugin framework and ultimately calls the `Configure` function on the provider. + +### Detail + +![diagram: ConfigureProvider RPC Detail](/img/configure-provider-detail.png) + + +Within the Terraform plugin framework, `terraform-plugin-go` is used to expose gRPC endpoints defined by the Terraform plugin protocol. These endpoints implement the `tfplugin6.ProviderServer` interface for version 6 of the Terraform plugin protocol. The `terraform-plugin-go` module also defines the `tfprotov6.ProviderServer` interface which is implemented within the `terraform-plugin-framework` module. + +The `terraform-plugin-framework` module contains a `proto6server.ConfigureProvider` function which is an implementation of the `tfprotov6.ProviderServer` interface `ConfigureProvider` function. The `proto6server.ConfigureProvider` function calls the `fwserver.ConfigureProvider` function. The `terraform-plugin-framework` defines the `provider.Provider` interface which contains a `Configure` function. The `Configure` function is implemented by the provider developer, and this function is called by the `fwserver.ConfigureProvider` function. + +In summary, the `provider.Provider` interface defines a `Configure` function which must be defined by the provider developer. + +## Read RPCs + +### Summary + +![diagram: Read RPC Overview](/img/read-overview.png) + + +When _terraform plan | apply_ are executed Terraform core issues the `ReadResource` and `ReadDataSource` RPCs. Note that the `ReadResource` RPC is only issued when a resource already exists in state. + +The `ReadResource` and `ReadDataSource` RPCs flow through the Terraform plugin framework and ultimately call the `Read` function on the resource and data source, respectively. + +### Detail + +#### ReadResource RPC + +![diagram: ReadResource RPC Detail](/img/read-resource-detail.png) + + +#### ReadDataSource RPC + +![diagram: ReadDataSource RPC Detail](/img/read-data-source-detail.png) + + +Within the Terraform plugin framework, `terraform-plugin-go` is used to expose gRPC endpoints defined by the Terraform plugin protocol. These endpoints implement the `tfplugin6.ProviderServer` interface for version 6 of the Terraform plugin protocol. The `terraform-plugin-go` module also defines the `tfprotov6.ProviderServer` interface which encompasses the `tfprotov6.ResourceServer` and `tfprotov6.DataSourceServer` interfaces. The `tfprotov6.ProviderServer` interface is implemented within the `terraform-plugin-framework` module. + +The `terraform-plugin-framework` module contains a `proto6server.ReadResource` function which is an implementation of the `tfprotov6.ResourceServer` interface `ReadResource` function. The `proto6server.ReadResource` function calls the `fwserver.ReadResource` function. The `terraform-plugin-framework` defines the `resource.ResourceWithConfigure` interface which contains a `Configure` function. If the resource implements the `resource.ResourceWithConfigure` interface then the `Configure` function that has been implemented by the provider developer is called. The `terraform-plugin-framework` defines the `resource.Resource` interface which contains a `Read` function which is called by the `fwserver.ReadResource` function. + +The `terraform-plugin-framework` module contains a `proto6server.ReadDataSource` function which is an implementation of the `tfprotov6.DataSourceServer` interface `ReadDataSource` function. The `proto6server.ReadDataSource` function calls the `fwserver.ReadDataSource` function. The `terraform-plugin-framework` defines the `datasource.DataSourceWithConfigure` interface which contains a `Configure` function. If the data source implements the `datasource.DataSourceWithConfigure` interface then the `Configure` function that has been implemented by the provider developer is called. The `terraform-plugin-framework` defines the `datasource.DataSource` interface which contains a `Read` function which is called by the `fwserver.ReadDataSource` function. + +In summary, the `resource.Resource` interface defines a `Read` function which is called by the `ReadResource` RPC and the `datasource.DataSource` interface defines a `Read` function which is called by the `ReadDataSource` RPC. All resources and data sources must have provider developer defined `Read` functions. + +## PlanResourceChange RPC + +### Summary + +![diagram: PlanResourceChange RPC Overview](/img/plan-resource-change-overview.png) + + +When _terraform plan | apply_ are executed Terraform core issues the `PlanResourceChange` RPC. Note that the `PlanResourceChange` RPC is only issued when a resource exists in configuration and/or a resource already exists in state. + +The `PlanResourceChange` RPC flows through the Terraform plugin framework and ultimately calls each of the `PlanModify` functions on each of the attributes and blocks within the resource schema and `ModifyPlan` on the resource if the `resource.ResourceWithModifyPlan` interface has been implemented. + +The `PlanResourceChange` RPC also calls `resource.Configure` if the `resource.ResourceWithConfigure` interface has been implemented. + +### Detail + +![diagram: PlanResourceChange RPC Detail](/img/plan-resource-change-detail.png) + + +Within the Terraform plugin framework, `terraform-plugin-go` is used to expose gRPC endpoints defined by the Terraform plugin protocol. These endpoints implement the `tfplugin6.ProviderServer` interface for version 6 of the Terraform plugin protocol. The `terraform-plugin-go` module also defines the `tfprotov6.ResourceServer` interface which is encompassed by the `tfplugin6.ProviderServer` interface. + +The `terraform-plugin-framework` module contains the `proto6server.PlanResourceChange` function which is an implementation of the `tfprotov6.ResourceServer` interface `PlanResourceChange` function. The `PlanResourceChange` function calls the `fwserver.PlanResourceChange` function. + +If the resource implements the `resource.ResourceWithConfigure` interface, then the `resource.Configure` function defined by the provider developer is called. + +All attributes that are null in the configuration are then marked as unknown in the plan so that a provider has the opportunity to update them. The `fwserver.SchemaModifyPlan` function is then called which iterates over each of the attributes and blocks defined within the resource schema and calls `planmodifier.PlanModify` for each of the plan modifiers defined on the attribute or block. + +If the resource implements the `resource.ResourceWithModifyPlan` interface then the provider developer defined `resource.ModifyPlan` function is called. + +In summary, `resource.Configure` is called on the resource if it implements the `resource.ResourceWithConfigure` interface. The `PlanModify` functions on all the plan modifiers defined on each of the attributes and blocks within the resource schema are executed. The `resource.ModifyPlan` function is called on the resource if it implements the `resource.ResourceWithModifyPlan` interface. + +## ApplyResourceChange RPC + +### Summary + +![diagram: ApplyResourceChange RPC Overview](/img/apply-resource-change-overview.png) + + +When terraform apply is executed Terraform core issues the `ApplyResourceChange` RPC. Note that the `ApplyResourceChange RPC` is only issued when a resource exists in configuration and/or a resource already exists in state. + +The `ApplyResourceChange` RPC flows through the Terraform plugin framework and ultimately calls either `resource.Create`, `resource.Update` or `resource.Delete` on the resource depending upon the contents of the state and the plan. + +The `ApplyResourceChange` RPC also calls `resource.Configure` method if the `resource.ResourceWithConfigure` interface has been implemented. + +### Detail + +![diagram: ApplyResourceChange RPC Detail](/img/apply-resource-change-detail.png) + + +Within the Terraform plugin framework, `terraform-plugin-go` is used to expose gRPC endpoints defined by the Terraform plugin protocol. These endpoints implement the `tfplugin6.ProviderServer` interface for version 6 of the Terraform plugin protocol. The `terraform-plugin-go` module also defines the `tfprotov6.ResourceServer` interface which is encompassed by the `tfplugin6.ProviderServer` interface. + +The `terraform-plugin-framework` module contains the `proto6server.ApplyResourceChange` function which is an implementation of the `tfprotov6.ResourceServer` interface `ApplyResourceChange` function. The `ApplyResourceChange` function calls the `fwserver.ApplyResourceChange` function. + +If the resource implements the `resource.ResourceWithConfigure` interface, then the `resource.Configure` function defined by the provider developer is called. + +The `resource.Resource` interface defined within `terraform-plugin-framework` contains functions for `Create`, `Update` and `Delete`. The provider developer must implement `Create`, `Update` and `Delete` functions for each resource. Whether the `Create`, `Update` or `Delete` function on the provider is called by the `fwserver.ApplyResourceChange` function depends on the contents of the state and the plan. + +In summary, the `ApplyResourcePlan` RPC will call `resource.Configure` on the resource if the resource implements the `resource.ResourceWithConfigure` interface. One of the provider developer defined `Create`, `Update` and `Delete` functions will be called by the `ApplyResourcePlan` RPC depending upon the contents of the state and the plan. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx new file mode 100644 index 0000000000..4042f31d21 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx @@ -0,0 +1,97 @@ +--- +page_title: Migrating attribute schema +description: >- + Learn how to iteratively migrate from the SDKv2 to the plugin framework using + the terraform-plugin-mux Go library. +--- + +# Migrating attribute schema + +Attributes define how users can configure values for your Terraform provider, resources, and data sources. Refer to +[Schemas - Attributes](/terraform/plugin/framework/handling-data/schemas#attributes) in the Framework documentation for details. + +This page explains how to migrate an attribute from SDKv2 to the plugin Framework. + +## SDKv2 +In SDKv2, attributes are defined by the `Schema` field in the provider, resource, or data source schema. The `Schema` +field maps each attribute name (string) to the attribute's `schema.Schema` struct. Both resources and data sources are +defined using the `schema.Resource` struct. + +The following code shows a basic implementation of attribute schema for a provider in SDKv2. + +```go +func ProviderExample() *schema.Provider { + return &schema.Provider{ + Schema: map[string]*schema.Schema{ + /* ... */ +}, +``` + +In SDKv2, resource and data source attributes are defined the same way on their respective types. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + /* ... */ +``` +## Framework + +In the Framework, you define attributes by setting the `Attributes` field on your provider, resource, or data type's +schema, as returned by the `Schema` method. The `schema.Schema` type returned by `SchemaResponse` includes an +`Attributes` field that maps each attribute name (string) to the attribute's definition. + +The following code shows how to define an attribute for a resource with the Framework. + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example": /* ... */ +``` + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2, attributes are defined by a map from attribute names to `schema.Schema` structs in the `Schema` field of +your resource's schema. In the Framework, attributes are defined by a map from attribute names to `schema.Attribute` +implementations in your resource's schema, which is returned by the resource `Schema` method. +- In SDKv2, the computed string `id` attribute was implicitly included in the schema. In the Framework, it must be explicitly defined in the schema. +- There are several differences between the implementation of attributes in SDKv2 and the Framework. Refer to the other +pages in the Attributes & Blocks section of this migration guide for more details. + +## Example + +### SDKv2 + +The following example shows the implementation of the `example_attribute` attribute for the `exampleDataSource` +data source. + +```go +func exampleDataSource() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "example_attribute": { + Type: schema.TypeString, + Required: true, + }, +``` + +### Framework + +The following shows the same section of provider code after the migration. + +This code implements the `example_attribute` attribute for the `exampleDataSource` data source with the Framework. + +```go +func (d *exampleDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + Required: true, + }, + /* ... */ +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx new file mode 100644 index 0000000000..1f4ee4bccd --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx @@ -0,0 +1,110 @@ +--- +page_title: Migrating computed blocks +description: >- + Learn how to igrate blocks with computed fields from SDKv2 to attribute + validators in the plugin framework. +--- + +# Migrating blocks with computed fields + +Some providers, resources, and data sources include repeatable nested blocks in their attributes. Some blocks contain +fields with `Computed: true`, which means that the provider code can define the value or that it could come from the +output of terraform apply (e.g., the ID of an EC2 instance). + +This page explains how to migrate computed-only blocks from SDKv2 to the Framework. Refer to +[Blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks) if you are looking for information about migrating blocks +that are practitioner configurable. + +## SDKv2 + +In SDKv2, blocks are defined by an attribute whose type is either `TypeList` or `TypeSet`, and whose `Elem` field is set to a +`schema.Resource` that contains a map of the block's attribute names to corresponding `schemaSchema` structs. + +```go +map[string]*schema.Schema{ + "example": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "nested_example": { + Type: schema.TypeString, + Computed: true, + /* ... */ +``` + +## Framework + +In the Framework, when working with protocol version 5, computed blocks are implemented using a `ListAttribute` which has an `ElementType` of `types.ObjectType`. + +```go +map[string]schema.Attribute{ +"example": schema.ListAttribute{ + Computed: true, + ElementType: types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "nested_example": types.StringType, + /* ... */ + +``` + +In the Framework, when working with protocol version 6, we recommend that you define computed blocks using nested +attributes. This example shows usage of `ListNestedAttribute` as this provides configuration references with list index +syntax as is the case when using `schema.TypeList` in SDKv2. `SingleNestedAttribute` is a good choice for single +underlying objects which results in a breaking change but also allows dropping `[0]` in configuration references. + +```go +map[string]schema.Attribute{ +"example": schema.ListNestedAttribute{ + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "nested_example": schema.StringAttribute{ + Computed: true, + /* ... */ + +``` + +## Migration Notes + +- When using protocol version 5 specify `ElementType` as `types.ObjectType` when migrating blocks that are computed from SDKv2 to Framework. +- When using protocol version 6, use [nested attributes](/terraform/plugin/framework/schemas#attributes-1) when migrating blocks that are computed from SDKv2 to Framework. + +## Example + +### SDKv2 + +The following example shows the implementation of the `example_nested_block` with SDKv2. + +```go +Schema: map[string]*schema.Schema{ +"example_nested_block": { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_block_attribute": { + Type: schema.TypeString, + Computed: true, + /* ... */ + }, +``` + +### Framework + +The following shows the same section of provider code after the migration. + +This code defines the `example_nested_block` block as an attribute on the schema, where the +`types.ObjectType` is being used to define the nested block. + +```go +map[string]schema.Attribute{ + "example_nested_block": schema.ListAttribute{ + ElementType: types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "example_block_attribute": types.StringType, + }, + }, + Computed: true, + /* ... */ +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx new file mode 100644 index 0000000000..353029dee4 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx @@ -0,0 +1,159 @@ +--- +page_title: Migrating blocks +description: >- + Learn how to migrate blocks from SDKv2 to attribute validators in the plugin + framework. +--- + +# Migrating blocks + +Some providers, resources, and data sources include repeatable nested blocks in their attributes. These nested blocks +typically represent separate objects that are related to (or embedded within) the containing object. + +This page explains how to migrate nested blocks that are not computed (i.e., do not set +`Computed: true`) from SDKv2 to the Framework. Refer to +[Blocks with Computed Fields](/terraform/plugin/framework/migrating/attributes-blocks/blocks-computed) for more details +about migrating nested blocks that contain fields that are computed. + +The following table describes the mapping between [SDK Schema Fields](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/helper/schema#Schema) and the Framework. + +| SDK Schema Field | Framework | +|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Type | [ListNestedBlock](/terraform/plugin/framework/migrating/attributes-blocks/blocks), [SetNestedBlock](/terraform/plugin/framework/migrating/attributes-blocks/blocks) | +| ConfigMode | Schema must be explictly defined using [Attributes](/terraform/plugin/framework/migrating/attributes-blocks/attribute-schema) and [Blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks) | +| Required | [listvalidator.IsRequired](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator#IsRequired), [setvalidator.IsRequired](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator#IsRequired) | +| Optional | N/A - no implementation required | +| Computed | [Blocks with Computed Fields](/terraform/plugin/framework/migrating/attributes-blocks/blocks-computed) | +| ForceNew | [RequiresReplace](/terraform/plugin/framework/migrating/attributes-blocks/force-new) on `PlanModifiers` field on attribute within block or implementation of [ResourceWithModifyPlan](/terraform/plugin/framework/migrating/resources/plan-modification#framework) interface | +| DiffSuppressFunc | [PlanModifiers](/terraform/plugin/framework/migrating/resources/plan-modification#framework) field on attribute within block or implementation of [ResourceWithModifyPlan](/terraform/plugin/framework/migrating/resources/plan-modification#framework) interface | +| DiffSuppressOnRefresh | [Read](/terraform/plugin/framework/migrating/resources/crud) method on resource | +| Description | `Description` field on block | +| InputDefault | N/A - no longer valid | +| StateFunc | Requires implementation of bespoke logic before storing state, for instance in resource [Create method](/terraform/plugin/framework/migrating/resources/crud#framework-1) | +| Elem | `NestedObject` within block | +| MaxItems | Use [listValidator.SizeAtMost](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator#SizeAtMost) or [setvalidator.SizeAtMost](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator#SizeAtMost) on `Validators` field on `ListNestedBlock` or `SetNestedBlock` | +| MinItems | Use [listValidator.SizeAtLeast](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator#SizeAtLeast) or [setvalidator.SizeAtLeast](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator#SizeAtLeast) on `Validators` field on `ListNestedBlock` or `SetNestedBlock` | +| Set | N/A - no implementation required | | +| ComputedWhen | N/A - no longer valid | +| ConflictsWith | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| ExactlyOneOf | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| AtLeastOneOf | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| RequiredWith | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| Deprecated | `DeprecationMessage` field on attribute within block | +| ValidateFunc | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) and [Custom Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom) | +| ValidateDiagFunc | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) and [Custom Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom) | +| Sensitive | N/A - only supported on attributes | + + +## Nested Block Example + +The following example shows a nested block in Terraform resource configuration. The `subject` nested +block within the `tls_cert_request` resource configures the subject of a certificate request with the `common_name` and +`organization` attributes. + +```hcl +resource "tls_cert_request" "example" { + private_key_pem = file("private_key.pem") + + subject { + common_name = "example.com" + organization = "ACME Examples, Inc" + } +} +``` + + +## SDKv2 + +In SDKv2, blocks are defined by an attribute whose type is `TypeList` or `TypeSet` and whose `Elem` field is set to a +`schema.Resource` that contains a map of the block's attribute names to corresponding `schemaSchema` structs. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + map[string]*schema.Schema{ + "example" = &schema.Schema{ + Type: schema.TypeList, + Optional: bool, + MaxItems: int, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "nested_example": { + Type: schema.TypeString, + Optional: bool, + /* ... */ +``` + +## Framework + +In the Framework, you implement nested blocks with the `Blocks` field of your provider, resource, or data source's +schema, as returned by the `Schema` method. The `Blocks` field maps the name of each block to a +`schema.Block` definition. + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Blocks: map[string]schema.Block{ + "example": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "nested_example": schema.StringAttribute{ + Optional: bool + /* ... */ +``` + +## Example + +### SDKv2 + +The following example shows the implementation of the `example_nested_block` nested block with SDKv2. + +```go +map[string]*schema.Schema{ + "example_attribute": &schema.Schema{ + Type: schema.TypeString, + /* ... */ + + "example_nested_block" = &schema.Schema{ + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_block_attribute_one": { + Type: schema.TypeString, + /* ... */ + }, + "example_block_attribute_two": { + Type: schema.TypeString, + /* ... */ + }, + /* ... */ +``` + +### Framework + +The following example shows how the nested `example_nested_block` block +is defined with the Framework after the migration. + +```go +schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + /* ... */ + + Blocks: map[string]schema.Block{ + "example_nested_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "example_block_attribute_one": schema.StringAttribute{ + /* ... */ + }, + "example_block_attribute_two": schema.StringAttribute{ + /* ... */ + }, + Validators: []validator.List{ + listvalidator.SizeAtMost(1), + }, +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx new file mode 100644 index 0000000000..f358d8d621 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx @@ -0,0 +1,105 @@ +--- +page_title: Migrating attribute default values +description: >- + Learn how to migrate attribute default values from SDKv2 by using an + attribute plan modifier in the plugin framework. +--- + +# Migrating attribute default values + +Default values support is only available in the Framework for resources. Handle default values for data source attributes within the [data source `Read` method](/terraform/plugin/framework/data-sources#read-method) and default values for provider attributes within the [provider `Configure` method](/terraform/plugin/framework/providers#configure-method). + +Default values set a value for an attribute when the Terraform configuration does not provide one. In SDKv2 and the +Framework default values are set via the `Default` field on an attribute's schema. +Refer to +[Default](/terraform/plugin/framework/resources/default) +in the Framework documentation for details. + +This page explains how to migrate attribute defaults in SDKv2 to the Framework. + +## SDKv2 + +In SDKv2, default values are defined for a primitive attribute type (i.e., `TypeBool`, `TypeFloat`, `TypeInt`, +`TypeString`) by the `Default` field on the attribute's schema. Alternatively, the `DefaultFunc` function is used to +compute a default value for an attribute. + +The following code shows a basic implementation of a default value for a primitive attribute type in SDKv2. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "attribute_example": { + Default: 2048, + /* ... */ + }, + /* ... */ +``` + +## Framework + +In the Framework, you set default values with the `Default` field on your attribute's definition. + +```go +import ( + "context" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault" +) + +func (r *resourceExample) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "attribute_example": schema.BoolAttribute{ + Default: booldefault.StaticBool(true), + /* ... */ +``` + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2, default values are set with the `Default` or `DefaultFunc` fields on an attribute's `schema.Schema` struct. +In the Framework, you must assign set the `Default` field on an attribute to set a default value. + +## Example + +### SDKv2 + +The following example shows the implementation of the `Default` field for the +`example_attribute` attribute on the `exampleResource` resource with SDKv2. + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_attribute": { + Default: 2048, + /* ... */ + }, + /* ... */ +``` + +### Framework + +The following shows the same section of code after the migration. + +This code implements the `PlanModifiers` field for the `example_attribute` attribute with the Framework. + +```go +func (r *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.Int64Attribute{ + Default: int64default.StaticInt64(2048) + /* ... */ + }, + /* ... */ + }, + }, nil +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/fields.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/fields.mdx new file mode 100644 index 0000000000..6efe29b7ac --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/fields.mdx @@ -0,0 +1,114 @@ +--- +page_title: Migrating attribute fields +description: >- + Learn how to migrate attribute required, optional, computed, and sensitive + fields from SDKv2 to the plugin framework. +--- + +# Migrating attribute fields + +A subset of attribute fields, such as required, optional, computed, or sensitive, define attribute behavior as boolean flags. Refer to +[Schemas - Attributes](/terraform/plugin/framework/handling-data/schemas#required) in the Framework documentation for details. + +The following table describes the mapping between [SDK Schema Fields](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/helper/schema#Schema) and the Framework. + +| SDK Schema Field | Framework | +|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Type | [Attribute Types](/terraform/plugin/framework/migrating/attributes-blocks/types) | +| ConfigMode | Schema must be explictly defined using [Attributes](/terraform/plugin/framework/migrating/attributes-blocks/attribute-schema) and [Blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks) | +| Required | `Required` field on attribute | +| Optional | `Optional` field on attribute | +| Computed | `Computed` field on attribute | +| ForceNew | [RequiresReplace](/terraform/plugin/framework/migrating/attributes-blocks/force-new) on `PlanModifiers` field on attribute or implementation of [ResourceWithModifyPlan](/terraform/plugin/framework/migrating/resources/plan-modification#framework) interface | +| DiffSuppressFunc | [Custom Types](/terraform/plugin/framework/handling-data/types/custom), [PlanModifiers](/terraform/plugin/framework/migrating/resources/plan-modification#framework) field on attribute, or implementation of [ResourceWithModifyPlan](/terraform/plugin/framework/migrating/resources/plan-modification#framework) interface | +| DiffSuppressOnRefresh | [Custom Types](/terraform/plugin/framework/handling-data/types/custom) semantic equality logic or manual logic in [Read](/terraform/plugin/framework/migrating/resources/crud) method on resource | +| Default | `Default` field on attribute using one of the predefined [Defaults](/terraform/plugin/framework/resources/default#common-use-case-attribute-defaults) or implementing one of the [`schema` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/defaults) interfaces | +| DefaultFunc | `Default` field on attribute using one of the predefined [Defaults](/terraform/plugin/framework/resources/default#common-use-case-attribute-defaults) or implementing one of the [`schema` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/defaults) interfaces | +| Description | `Description` field on attribute | +| InputDefault | N/A - no longer valid | +| StateFunc | Requires implementation of bespoke logic before storing state, for instance in resource [Create method](/terraform/plugin/framework/migrating/resources/crud#framework-1) | +| Elem | `ElementType` on [ListAttribute](/terraform/plugin/framework/migrating/attributes-blocks/types), [MapAttribute](/terraform/plugin/framework/migrating/attributes-blocks/types) or [SetAttribute](/terraform/plugin/framework/migrating/attributes-blocks/types). Refer to [Blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks) if `schema.Resource` is present in `Elem`. | +| MaxItems | Use [listValidator.SizeAtMost](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator#SizeAtMost), [mapvalidator.SizeAtMost](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/mapvalidator#SizeAtMost) or [setvalidator.SizeAtMost](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator#SizeAtMost) on `Validators` field on list, map or set attribute | +| MinItems | Use [listValidator.SizeAtLeast](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/listvalidator#SizeAtLeast), [mapvalidator.SizeAtLeast](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/mapvalidator#SizeAtLeast) or [setvalidator.SizeAtLeast](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/setvalidator#SizeAtLeast) on `Validators` field on list, map or set attribute | +| Set | N/A - no implementation required | | +| ComputedWhen | N/A - no longer valid | +| ConflictsWith | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| ExactlyOneOf | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| AtLeastOneOf | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| RequiredWith | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) | +| Deprecated | `DeprecationMessage` field on attribute | +| ValidateFunc | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined), [Custom Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom), or [Custom Types](/terraform/plugin/framework/handling-data/types/custom) validation logic | +| ValidateDiagFunc | [Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined), [Custom Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom), or [Custom Types](/terraform/plugin/framework/handling-data/types/custom) validation logic | +| Sensitive | `Sensitive` field on attribute | + + +This page explains how to migrate the required, optional, computed, and sensitive attribute fields from SDKv2 to the +Framework. + +## SDKv2 + +In SDKv2, `Required`, `Optional`, `Computed`, and `Sensitive` are boolean fields on the attribute's schema. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "attribute_example": { + Required: bool + Optional: bool + Computed: bool + Sensitive: bool + /* ... */ +``` + +## Framework + +In the Framework, you set the same fields on the `schema.Attribute` implementation, with the same behavior. + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "attribute_example": schema.XXXAttribute{ + Required: bool + Optional: bool + Computed: bool + Sensitive: bool + /* ... */ +``` + +## Example + +### SDKv2 + +The following example shows how the `example_attribute` attribute on the `exampleDataSource` data source is set to +be required with SDKv2. + +```go +func exampleDataSource() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_attribute": { + Required: true, + /* ... */ + }, + /* ... */ +``` + +### Framework + +The following example shows how the `example_attribute` attribute on the `exampleDataSource` data source is set +to be required with the Framework. + +```go +func (d *exampleDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + Required: true, + /* ... */ + }, + /* ... */ +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx new file mode 100644 index 0000000000..1a119eff63 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx @@ -0,0 +1,104 @@ +--- +page_title: Migrating attribute ForceNew triggers +description: >- + Learn how to migrate attribute ForceNew triggers in SDKv2 to attribute plan + modifiers in the framework. +--- + +# Migrating attribute ForceNew triggers + +In Terraform, sometimes a resource must be replaced when the value of an attribute changes. In SDKv2, this is +accomplished via the `ForceNew` field. In the Framework, you implement the same behavior via a `RequiresReplace` plan +modifier. Refer to +[Plan Modification - Attribute Plan Modification](/terraform/plugin/framework/resources/plan-modification#attribute-plan-modification) +in the Framework documentation for details. + +This page explains how to migrate this behavior from SDKv2 to the Framework. + +## SDKv2 + +In SDKv2, setting the `ForceNew` field on an attribute's `schema.Schema` triggers a replace (i.e., a destroy-create +cycle) whenever the attribute's value is changed. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "attribute_example": { + ForceNew: true + /* ... */ +``` + +## Framework + +In the Framework, you implement the same behavior by using the `resource.RequiresReplace` plan modifier on your +attribute's `schema.Attribute` implementation. + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "attribute_example": schema.StringAttribute{ + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + /* ... */ +``` + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In both SDKv2 and Framework, `ForceNew` and `RequiresReplace`, respectively, only trigger a replace if the attribute +is not computed. In the Framework, if an attribute which is computed requires that the resource be replaced when it is +changed, implement a plan modifier that triggers the replacement. Refer to +[RequiresReplacePlanModifier](https://github.com/hashicorp/terraform-provider-random/blob/v3.4.1/internal/planmodifiers/attribute.go#L63) +for an example, but bear in mind that each implementation requires different logic and you may need to detect whether +the plan has already been modified. + +## Example + +### SDKv2 + +The following example shows the implementation of the `ForceNew` field of the +`exampleResource` resource's `example_attribute` attribute with SDKv2. + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_attribute": { + ForceNew: true, + Type: schema.TypeMap, + /* ... */ + }, + /* ... */ + }, + /* ... */ + } +} +``` + +### Framework + +The following shows the same section of provider code after the migration. + +This code forces the replacement of a `exampleResource` resource when the value of the `example_attribute` attribute is changed. +The example does this using the `PlanModifiers` field within the `exampleResource` attribute's schema. + +```go +func (r *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.MapAttribute{ + PlanModifiers: []planmodifier.Map{ + mapplanmodifier.RequiresReplace(), + }, + /* ... */ + }, + /* ... */ + }, + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/types.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/types.mdx new file mode 100644 index 0000000000..86d633fa74 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/types.mdx @@ -0,0 +1,176 @@ +--- +page_title: Migrating atrribute types +description: >- + Learn how to migrate attribute type from SDKv2 to the plugin Framework. +--- + +# Migrating attribute types + +An attribute either contains a primitive type, such as an integer or a string, or contains other attributes. Attributes +that contain other attributes are referred to as nested attributes. Refer to +[Schemas - Attributes](/terraform/plugin/framework/schemas#type) in the Framework documentation for details. + +This page explains how to migrate a primitive attribute from SDKv2 to the plugin Framework. For an example of +migrating a nested block to a nested attribute, refer to [Providers](/terraform/plugin/framework/migrating/providers#example-1) in +this guide. + +## SDKv2 + +In SDKv2, attribute types are defined by the `Type` field on the attribute's `schema.Schema` struct. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "bool_example": { + Type: schema.TypeBool, + /* ... */ + }, + "float64_example": { + Type: schema.TypeFloat, + /* ... */ + }, + "int64_example": { + Type: schema.TypeInt, + /* ... */ + }, + "list_example": { + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeBool, + }, + /* ... */ + }, + "map_example": { + Type: schema.TypeMap, + Elem: &schema.Schema{ + Type: schema.TypeFloat, + }, + /* ... */ + }, + "set_example": { + Type: schema.TypeSet, + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + /* ... */ + }, + "string_example": { + Type: schema.TypeString, + /* ... */ + }, + /* ... */ +``` +## Framework + +In the Framework, you set your attribute's type with the attribute's `schema.Attribute` implementation. + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schea.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "bool_example": schema.BoolAttribute{ + /* ... */ + }, + "float64_example": schema.Float64Attribute{ + /* ... */ + }, + "int64_example": schema.Int64Attribute{ + /* ... */ + }, + "list_example": schema.ListAttribute{ + ElementType: types.BoolType, + /* ... */ + }, + "map_example": schema.MapAttribute{ + ElementType: types.Float64Type, + /* ... */ + }, + "set_example": schema.SetAttribute{ + ElementType: types.Int64Type, + /* ... */ + }, + "string_example": schema.StringAttribute{ + /* ... */ + }, + /* ... */ +``` + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In the Framework, the `schema.Attribute` implementation determines the required details. + +## Examples + +### SDKv2 + +The following example shows the implementation of the type field of the `example_string_attribute` attribute +for the `exampleDataSource` data source with SDKv2. + +```go +func exampleDataSource() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_string_attribute": { + Type: schema.TypeString, + /* ... */ + }, + /* ... */ +``` + +### Framework + +The following example shows how the type of the `example_string_attribute` attribute for the `exampleDataSource` data +source is defined with the Framework after the migration. + +```go +func (d *exampleDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_string_attribute": schema.StringAttribute{ + /* ... */ + }, + /* ... */ +``` + +### SDKv2 + +The following example shows the implementation of the type field of the `example_list_attribute` +attribute with SDKv2. + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_list_attribute": { + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + /* ... */ + }, + /* ... */ +``` + +### Framework + +The following example shows how the type of the `example_list_attribute` attribute for the `exampleResource` resource +is defined with the Framework after the migration. + +```go +func (r *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_list_attribute": schema.ListAttribute{ + ElementType: types.StringType, + /* ... */ + }, + /* ... */ +``` + +Refer to [Terraform Concepts - Attributes](/terraform/plugin/framework/handling-data/terraform-concepts#attributes) +for further examples of different types of schema attributes in the Framework. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx new file mode 100644 index 0000000000..8c33f4c018 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx @@ -0,0 +1,148 @@ +--- +page_title: Migrating attribute custom validators +description: >- + Learn how to migrate custom attribute validation functions from SDKv2 to + attribute validators in the Framework. Providers use custom validators to + check attribute values for required syntax, types, and acceptable values. +--- + +# Migrating attribute custom validators + +You can write custom validations that give users feedback about required syntax, types, and acceptable values in your +provider. The Framework has a collection of +[predefined validators](https://github.com/hashicorp/terraform-plugin-framework-validators). Refer to +[Predefined Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) to learn how to use them. + +This page explains how to migrate attribute validation functions from SDKv2 to attribute validators in the Framework. + +## SDKv2 + +In SDKv2, arbitrary validation logic can be applied to individual attributes by using `ValidateFunc` and/or +`ValidateDiagFunc`. + +The following example shows the implementation of a validation that ensures that an integer attribute has a value +greater than one. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "attribute_example": { + ValidateDiagFunc: validation.ToDiagFunc(validation.IntAtLeast(1)), + /* ... */ +``` + +## Framework + +In the Framework, you implement either type of validation by setting the `Validators` field on the `schema.Attribute` +implementation. + +The following example shows how to implement a validation that ensures that an integer attribute has a value +greater than one. + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "attribute_example": schema.Int64Attribute{ + Validators: []validator.Int64{ + int64validator.AtLeast(1), + /* ... */ +``` + +## Migration Notes + +Remember the following details when migrating from SDKv2 to the Framework. + +- In SDKv2, `ValidateDiagFunc` is a field on `schema.Schema` that you can use to define custom validation functions. In +the Framework, `Validators` is a field on each `schema.Attribute` implementation that can be used for custom validations. +- Use [predefined validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) when there is a validator that meets +your requirements. + +## Example + +### SDKv2 + +The following example shows the implementation of the `ValidateDiagFunc` field for +the `exampleResource`'s `example_attribute` attribute to validate that it's value is at least 1 (greater than zero). + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_attribute": { + ValidateDiagFunc: validation.ToDiagFunc(validation.IntAtLeast(1)), + }, + }, + } +} +``` + +### Framework + +The following shows the same section of provider code after the migration. + +This code validates that the `exampleResource`'s `example_attribute` attribute is greater than zero by using a custom `AtLeast` +validator. + +```go +func (r *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.Int64Attribute{ + Required: true, + Validators: []validator.Int64{ + int64validator.AtLeast(1), + }, + }, + }, + } +} +``` + +This example code illustrates how you can implement your own validators. + +```go +var _ validator.Int64 = atLeastValidator{} + +// atLeastValidator validates that an integer Attribute's value is at least a certain value. +type atLeastValidator struct { + min int64 +} + +// Description describes the validation in plain text formatting. +func (v atLeastValidator) Description(_ context.Context) string { + return fmt.Sprintf("value must be at least %d", v.min) +} + +// MarkdownDescription describes the validation in Markdown formatting. +func (v atLeastValidator) MarkdownDescription(ctx context.Context) string { + return v.Description(ctx) +} + +// Validate performs the validation. +func (v atLeastValidator) ValidateInt64(ctx context.Context, request validator.Int64Request, response *validator.Int64Response) { + if req.ConfigValue.Int64Value() < v.min { + response.Diagnostics.Append(validatordiag.InvalidAttributeValueDiagnostic( + request.Path, + v.Description(ctx), + fmt.Sprintf("%d", req.ConfigValue.Int64Value()), + )) + } +} + +// AtLeast returns an AttributeValidator which ensures that any configured +// attribute value: +// +// - Is a number, which can be represented by a 64-bit integer. +// - Is exclusively greater than the given minimum. +// +// Null (unconfigured) and unknown (known after apply) values are skipped. +func AtLeast(min int64) validator.Int64 { + return atLeastValidator{ + min: min, + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx new file mode 100644 index 0000000000..33c32dfd45 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx @@ -0,0 +1,193 @@ +--- +page_title: Migrating attribute predefined validators +description: >- + Learn how to migrate the predefined ConflictsWith, ExactlyOneOf, AtLeastOneOf + and RequiredWith validators from SDKv2 to the framework. Providers use + predefined validators to check attribute values for required syntax, types, + and acceptable values. +--- + +# Migrating predefined attribute validators + +Attribute validators ensure that attributes do or do not contain specific values. You can use predefined validators for +many use cases, or implement custom validators. Refer to [Schemas - Validators](/terraform/plugin/framework/handling-data/schemas#validators) in +the Framework documentation for details. Refer to the +[Attributes - Custom Validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom) page in this guide to learn how to +implement custom validators. + +The following table describes the mapping between predefined validators in SDKv2 and the Framework. You should use an +attribute validator for [per-attribute validation](/terraform/plugin/framework/validation#attribute-validation), or a +[data source validator](/terraform/plugin/framework/data-sources/validate-configuration), +[provider validator](/terraform/plugin/framework/providers/validate-configuration) or +[resource validator](/terraform/plugin/framework/resources/validate-configuration) for declaring validation at the level of the +data source, provider or resource, respectively. + +| SDK Attribute Field | Framework Attribute Validator | Framework Data Source Validator | Framework Provider Validator | Framework Resource Validator | +|---------------------|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| +| AtLeastOneOf | {TYPE}validator.AtLeastOneOf() | [datasourcevalidator.AtLeastOneOf()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/datasourcevalidator#AtLeastOneOf) | [providervalidator.AtLeastOneOf()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/providervalidator#AtLeastOneOf) | [resourcevalidator.AtLeastOneOf()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator#AtLeastOneOf) | +| ConflictsWith | {TYPE}validator.ConflictsWith() | [datasourcevalidator.Conflicting()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/datasourcevalidator#Conflicting) | [providervalidator.Conflicting()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/providervalidator#Conflicting) | [resourcevalidator.Conflicting()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator#Conflicting) | +| ExactlyOneOf | {TYPE}validator.ExactlyOneOf() | [datasourcevalidator.ExactlyOneOf()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/datasourcevalidator#ExactlyOneOf) | [providervalidator.ExactlyOneOf()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/providervalidator#ExactlyOneOf) | [resourcevalidator.ExactlyOneOf()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator#ExactlyOneOf) | +| RequiredWith | {TYPE}validator.AlsoRequires() | [datasourcevalidator.RequiredTogether()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/datasourcevalidator#RequiredTogether) | [providervalidator.RequiredTogether()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/providervalidator#RequiredTogether) | [resourcevalidator.RequiredTogether()](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator#RequiredTogether) | + +This page explains how to migrate a predefined validator from SDKv2 to the Framework. + +## SDKv2 + +In SDKv2, the `ConflictsWith`, `ExactlyOneOf`, `AtLeastOneOf`, and `RequiredWith` fields on an attribute's +`schema.Schema` struct perform predefined validations on the list of attributes set for these fields. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + /* ... */ + Schema: map[string]*schema.Schema{ + "attribute_example": { + ConflictsWith: []string{ /* ... */ }, + ExactlyOneOf: []string{ /* ... */ }, + AtLeastOneOf: []string{ /* ... */ }, + RequiredWith: []string{ /* ... */ }, + /* ... */ +``` +## Framework + +In the Framework, you implement either type of validation by setting the `Validators` field on the `schema.Attribute` +implementation. Validators that perform the same checks as the +predefined validators in SDKv2 are +[available for the Framework](https://github.com/hashicorp/terraform-plugin-framework-validators). If the predefined +validators do not meet your needs, you must define +[custom validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom). + +```go +func (r *resourceExample) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + "attribute_example": schema.StringAttribute{ + Validators: []validator.String{ + stringvalidator.ConflictsWith( /* ... */ ), + /* ... */ +``` + +Configuration validators can also be defined for +[providers](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/providervalidator), +[resources](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator) and +[data sources](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/datasourcevalidator) by +implementing `ProviderWithConfigValidators`, `ResourceWithConfigValidators`, and `DataSourceWithConfigValidators` +interfaces, respectively. + +```go +func (r *resourceExample) ConfigValidators(ctx context.Context) []resource.ConfigValidator { + return []resource.ConfigValidator{ + resourcevalidator.Conflicting( + /* ... */ + ), + /* ... */ +``` + +## Migration Notes + +Remember the following details when migrating from SDKv2 to the Framework. + +- In SDKv2, `ValidateDiagFunc` is a field on `schema.Schema` that you can use to define validation functions. In SDKv2, +there are also built-in validations. For example, `ConflictsWith` is a field on the `schema.Schema` struct in SDKv2. In +the Framework, `Validators` is a field on each `schema.Attribute` implementation. +- Validators replicating the behavior of `ConflictsWith`, `ExactlyOneOf`, `AtLeastOneOf`, and `RequiredWith` in SDKv2 are +available for the Framework in each of the type-specific packages of +[terraform-plugin-framework-validators](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators). +- Define [custom validators](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom) when the predefined validators do not meet +your requirements. + +## Example + +### SDKv2 + +The following example shows the implementation of the `ConflictsWith` field on the +provider's `example_block` block's `example_attribute_one` attribute. +This validator checks that the provider does not use the `example_attribute_one` attribute +when the `example_attribute_four` is being used. The example also uses the `RequiredWith` field to ensure that the +`example_attribute_two` attribute is configured when `example_attribute_one` is, and that the +`example_attribute_three` attribute is configured when `example_attribute_two` is. + +```go +func New() (*schema.Provider, error) { + return &schema.Provider{ + Schema: map[string]*schema.Schema{ + "example_block": { + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_attribute_one": { + ConflictsWith: []string{"example_block.0.example_attribute_four"}, + /* ... */ + }, + "example_attribute_two": { + RequiredWith: []string{"example_block.0.example_attribute_one"}, + /* ... */ + }, + "example_attribute_three": { + RequiredWith: []string{"example_block.0.example_attribute_two"}, + /* ... */ + }, + "example_attribute_four": { + ConflictsWith: []string{ + "example_block.0.example_attribute_one", + "example_block.0.example_attribute_two", + "example_block.0.example_attribute_three", + }, + /* ... */ + }, + }, + }, + }, + }, + }, nil +} +``` + +### Framework + +The following shows the same section of provider code after the migration. + +This code implements the `ConflictsWith` and `AlsoRequires` validators with the Framework. The validators are configured +via the `Validators` field of the provider's `example_block` block's attribute schema. + +```go +func (p *TlsProvider) Schema(_ context.Context, _ provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + Blocks: map[string]schema.Block{ + "example_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "example_attribute_one": schema.StringAttribute{ + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.MatchRelative().AtParent().AtName("example_attribute_four")), + }, + /* ... */ + }, + "example_attribute_two": schema.StringAttribute{ + Validators: []validator.String{ + stringvalidator.AlsoRequires(path.MatchRelative().AtParent().AtName("example_attribute_one")), + }, + /* ... */ + }, + "example_attribute_three": schema.StringAttribute{ + Validators: []validator.String{ + stringvalidator.AlsoRequires(path.MatchRelative().AtParent().AtName("example_attribute_two")), + }, + /* ... */ + }, + "example_attribute_four": schema.BoolAttribute{ + Validators: []validator.Bool{ + boolvalidator.ConflictsWith( + path.MatchRelative().AtParent().AtName("example_attribute_one"), + path.MatchRelative().AtParent().AtName("example_attribute_two"), + path.MatchRelative().AtParent().AtName("example_attribute_three"), + ), + }, + /* ... */ + }, + }, + }, + }, + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/benefits.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/benefits.mdx new file mode 100644 index 0000000000..847b2c73f8 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/benefits.mdx @@ -0,0 +1,523 @@ +--- +page_title: Benefits of migration +description: >- + The plugin framework is an updated SDK for Terraform providers that includes + improved data access, more consistent schema models, and other improvements + over the previous SDKv2. +--- + +# Benefits of migrating to the plugin framework + +We recommend using the plugin framework to develop your provider because it offers significant benefits in comparison to SDKv2. We designed the framework with feedback from thousands of existing providers, so the framework significantly improves upon the functionality available in SDKv2. + +This page is a continuation of the [Framework Benefits](/terraform/plugin/framework-benefits) page, which describes the higher level coding improvements over SDKv2. The following features are only available in the framework. + +## Expanded Access to Configuration, Plan, and State Data + +Providers receive up to three sources of schema-based data during Terraform operation requests: configuration, plan, and prior state. The SDKv2 combines this data into a single [`schema.ResourceData` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema#ResourceData), which you implement differently depending on the operation. Certain `ResourceData` methods are only valid during certain operations and trying to get data from an explicit source is problematic in many cases. + +In the following SDKv2 example, the code comments highlight issues with the single data type: + +```go +func ThingResourceCreate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + d.Get("...") // plan unless unknown; no explicit access to configuration + d.GetChange("...") // extraneous old value, use d.Get() instead + d.HasChange("...") // always true, no prior state + d.Set("...") // saved into new state +} + +func ThingResourceRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + d.Get("...") // prior state + d.GetChange("...") // no changes as only prior state is available + d.HasChange("...") // always false + d.Set("...") // saved into new state +} + +func ThingResourceUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + d.Get("...") // plan unless unknown; no explicit access to configuration or prior state + d.GetChange("...") // prior state and plan unless unknown + d.HasChange("...") // comparison of prior state and plan + d.Set("...") // saved into new state +} + +func ThingResourceDelete(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + d.Get("...") // prior state + d.GetChange("...") // no changes as only prior state is available + d.HasChange("...") // always false + d.Set("...") // extraneous, resource destroy leaves no state +} +``` + +The framework alleviates these issues by exposing configuration, plan, and state data as separate attributes on request and response types that only expose the data available to the given operation. + +In the following framework example, the code comments show the available data that matches each operation. + +```go +func (r ThingResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + req.Config // configuration data + req.Plan // plan data + // No req.State as it is always null + // No resp.Config as configuration cannot be set by provider during creation + // No resp.Plan as plan cannot be set by provider during creation + resp.State // new state data to save +} + +func (r ThingResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.CreateResponse) { + // No req.Config as configuration cannot be read by provider during read + // No req.Plan as there is no plan during read + req.State // prior state data + // No resp.Config as configuration cannot be set by provider during read + // No resp.Plan as there is no plan during read + resp.State // new state data to save +} + +func (r ThingResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + req.Config // configuration data + req.Plan // plan data + req.State // prior state data + // No resp.Config as configuration cannot be set by provider during update + // No resp.Plan as plan cannot be set by provider during update + resp.State // new state data to save +} + +func (r ThingResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + // No req.Config as configuration cannot be read by provider during delete + // No req.Plan as it is always null + req.State // prior state data + // No resp.Config as configuration cannot be set by provider during delete + // No resp.Plan as it cannot be adjusted + resp.State // only available to explicitly remove on error +} +``` + +## Schema Data Models + +In the SDKv2, you must fetch configuration, plan, and state data separately for each attribute or type. In the framework, you can fetch all of the configuration, plan, and state data at once. This approach lets you declare a single data model for a schema, which guarantees correctness and consistency across operations. + +In the following SDKv2 example, you must fetch the data for each attribute unless you save the schema as a variable and reference it in the operation logic. + +```go +attribute1 := d.Get("attribute1") // any type +attribute2 := d.Get("attribute2") // any type +attribute3 := d.Get("attribute3") // any type +``` + +Some SDKv2 providers opted to type assert during these calls, which had the potential to cause Go runtime panics if they did not also check the assertion boolean. + +```go +// Example showing panic-safe SDK data handling +attribute1, ok := d.Get("attribute1").(bool) // assuming schema.TypeBool + +if !ok { + // provider-defined error handling +} + +attribute2, ok := d.Get("attribute2").(int) // assuming schema.TypeInt + +if !ok { + // provider-defined error handling +} + +attribute3, ok := d.Get("attribute3").(string) // assuming schema.TypeString + +if !ok { + // provider-defined error handling +} +``` + +The [Fully Exposed Value States section](#fully-exposed-value-states) goes into other issues and quirks with attempting to handle SDKv2 data. + +Data with the framework can be modeled as a custom type and the operation of getting or setting the data will return framework-defined errors, if necessary. + +In the following framework example, a provider-defined type receives all schema-based data. + +```go +// Example schema data model type +type ThingResourceModel struct { + Attribute1 types.Bool `tfsdk:"attribute1"` // assuming types.BoolType attribute + Attribute2 types.Int64 `tfsdk:"attribute2"` // assuming types.Int64Type attribute + Attribute3 types.String `tfsdk:"attribute3"` // assuming types.StringType attribute +} + +// In resource logic +var data ThingResourceModel + +diags := req.Plan.Get(ctx, &data) // framework-defined errors + +resp.Diagnostics.Append(diags...) + +if resp.Diagnostics.HasError() { + return +} +``` + +With `Required` attributes, you can replace the framework types in the schema data model with standard Go types (e.g. `bool`) to further simplify data handling, if desired. + +## Fully Exposed Value States + +Terraform supports three states for any value: null (missing), unknown ("known after apply"), and known. The SDKv2 does not expose or fully support null and unknown value states to providers. Instead, the `Get()` method on these value states returns Go type zero-values such as `""` for `schema.TypeString`, `0` for `schema.TypeInt`, and `false` for `schema.TypeBool`. Other methods, such as `GetOk()` and `GetOkExists()`, have slightly different functionality for each type and operation, especially for collection types. + +In the following SDKv2 example, the code comments explain issues with the single data type. + +```go +// Assuming a schema of: +// +// "string_attribute": &schema.Schema{ +// Computed: true, +// Optional: true, +// Type: schema.TypeString, +// } +// +// and a configuration that does not set the value (null state). +// +// resource “examplecloud_thing” “example” { +// # no string_attribute = “...” +// } + +func ThingResourceUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + d.Get("string_attribute") // "" + d.GetOk("string_attribute") // may return true depending on prior state + d.GetOkExists("string_attribute") // may return true depending on prior state +} +``` + +The framework type system fully exposes null, unknown, and known value states. You can reliably query each value with the `IsNull()` or `IsUnknown()` methods. + +In the following framework example, you can determine the correct value state. + +```go +// Assuming a schema of: +// +// "string_attribute": schema.StringAttribute{ +// Computed: true, +// Optional: true, +// } +// +// and a configuration that does not set the value (null state). +// +// resource “examplecloud_thing” “example” { +// # no string_attribute = “...” +// } + +func (r ThingResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var config, plan types.String + + req.Config.GetAttribute(ctx, path.Root("string_attribute"), &config) + req.Plan.GetAttribute(ctx, path.Root("string_attribute"), &plan) + + config.IsNull() // true + config.IsUnknown() // false + config.ValueString() // "" + plan.IsNull() // true + plan.IsUnknown() // false + plan.ValueString() // "" +} +``` + +## Unrestricted Type System + +The framework type system exposes the majority of Terraform types and values. It is also extensible because it lets you define new types that are specific to your provider. + +### Custom Attribute Types + +You can implement custom types for your provider that expose data with convenient Go types, methods, and built-in validation. + +The following framework example uses a custom `timetypes.RFC3339Type` attribute type instead of `types.StringType`. The `timetypes.RFC3339Type` attribute type is associated with a `timetypes.RFC3339` value type. The attribute type automatically validates whether the string can be parsed as an RFC3339 timestamp and the value type exposes a `Time() time.Time` method for easier usage over a regular string value. + +```go +"rfc3339": schema.StringAttribute{ + CustomType: timetypes.RFC3339Type{}, + Required: true, +}, +``` + +The following framework example uses the custom `timetypes.RFC3339` value type to expose the `time.Time` value. + +```go +// Example schema data model +type ThingResourceModel struct{ + RFC3339 timetypes.RFC3339 `tfsdk:"rfc3339"` +} + +// In resource logic, omitting diagnostics handling for brevity +var data ThingResourceModel + +req.Plan.Get(ctx, &data) + +data.RFC3339.Time() // time.Time +``` + +### Complex Map Types + +The framework type system does not have any restrictions for using complex types as the value for a map type. SDKv2 restricted map values to string, number, and boolean types. + +This framework example declares a map type with a list of string values. + +```go +schema.MapAttribute{ + // ... other fields ... + ElementType: types.ListType{ + ElemType: types.StringType, + }, +} +``` + +If you need to declare additional schema behaviors for the map values, you can use map nesting mode in [Protocol Version 6 Nested Attributes](#protocol-version-6-nested-attributes), which is also only available in the framework. + +### Object Type + +The framework type system supports the Terraform object type, which you can use to declare attribute name to value mappings without additional schema behaviors. These differ from maps by requiring specific names and their values to always exist. SDKv2 did not directly expose this type. + +The following framework example declares an object type with two attributes. + +```go +schema.ObjectAttribute{ + // ... other fields ... + AttributeTypes: map[string]attr.Type{ + "bool_attribute": types.BoolType, + "string_attribute": types.StringType, + }, +} +``` + +If you need to declare additional schema behaviors for the object values, you can use the single nesting mode in [Protocol Version 6 Nested Attributes](#protocol-version-6-nested-attributes), which is also only available in the framework. + +### Protocol Version 6 Nested Attributes + +Protocol [version 6](/terraform/plugin/terraform-plugin-protocol) is the latest version of the protocol between Terraform and providers. Only the framework supports version 6. + +Version 6 lets you declare schemas with nested attributes in addition to blocks. Nested attributes support schema behaviors and practitioners using your provider can configure them with expressions instead of with dynamic blocks. Nested attributes support includes four nesting modes: + +- List: Ordered collection of nested attributes +- Map: Collection of string keys to nested attributes. +- Set: Unordered collection of nested attributes. +- Single: Single object of nested attributes that is useful for replacing list blocks with a single element. + +In the following configuration example, a schema uses a list block that is difficult to dynamically configure. + +```hcl +locals { + calls = toset([ + {call_me: “example1”, maybe: true}, + {call_me: “example2”, maybe: false}, + ]) +} + +resource “examplecloud_thing” “example” { + dynamic “list_block” { + for_each = local.calls + + content { + call_me = list_block.value.call_me + maybe = list_block.value.maybe + } + } +} +``` + +In the following configuration example, a schema uses list nested attributes to simplify the configuration. + +```hcl +locals { + calls = [ + {call_me: “example1”, maybe: true}, + {call_me: “example2”, maybe: false}, + ] +} + +resource “examplecloud_thing” “example” { + list_nested_attributes = local.calls # or a for expression, etc. +} +``` + +The following framework example shows the schema definition for the list nested attributes. + +```go +schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + “call_me”: schema.StringAttribute{ + Required: true, + }, + “maybe”: schema.BoolAttribute{ + Optional: true, + Sensitive: true, + }, + }, + }, + // ... other fields ... +} +``` + +## Unrestricted Validation Capabilities + +The framework exposes many more configuration validation integration points than SDKv2. It is also extensible with provider-defined types that implement validation in the type itself. + +### Collection Type Validation + +Attribute validation in the framework is not restricted by type. + +This framework example validates all list values against a set of acceptable values. + +```go +schema.ListAttribute{ + // ... other fields ... + ElementType: types.StringType, + Validators: []validator.List{ + listvalidator.StringValuesAre( + stringvalidator.OneOf("one", "two", "three"), + ), + }, +} +``` + +This framework example checks whether map keys are between 3 and 50 characters in length using validators available in [`terraform-plugin-framework-validators`](https://github.com/hashicorp/terraform-plugin-framework-validators). + +```go +schema.MapAttribute{ + // ... other fields ... + ElementType: types.StringType, + Validators: []validator.Map{ + mapvalidator.KeysAre( + stringvalidator.LengthBetween(3, 50), + ), + }, +} +``` + +### Type-Based Validation + +Attribute validation supports attribute types that declare their own validation, in addition to any validators on the attribute itself. + +In the following framework example, the custom type ensures that the string is a valid RFC3339 string, and the attribute can declare additional validation. + +```go +schema.StringAttribute{ + // ... other fields ... + CustomType: timetypes.RFC3339Type{}, // automatically validates string is RFC3339 + Validators: []validator.String{ + // additional validation, if desired + }, +} +``` + +### Declarative Schema Validation + +The framework supports schema-level validation with reusable and declarative validators. In certain cases, such as when you would use SDKv2 `AtLeastOneOf`, this approach can reduce overlapping validation errors and make logic easier to understand. + +In the following SDKv2 example, multiple attributes can raise multiple errors. + +```go +map[string]*schema.Schema{ + “attribute_one”: { + AtLeastOneOf: []string{“attribute_two”}, // does this need attribute_one? + // ... other fields ... + }, + “attribute_two”: { + AtLeastOneOf: []string{“attribute_one”}, // is this necessary? + // ... other fields ... + }, +} +``` + +In the following framework example, the validation logic raises a single error when the resource configuration does not include at least one of the specified attributes. + +```go +func (r ThingResource) ConfigValidators(_ context.Context) []resource.ConfigValidator { + return []resource.ConfigValidator{ + resourcevalidator.AtLeastOneOf( + path.MatchRoot("attribute_one"), + path.MatchRoot("attribute_two"), + ), + } +} +``` + +### Imperative Schema Validation + +The framework supports schema-level validation with custom logic in addition to the declarative validators. This support lets you fully customize the validation to implement complex validation logic. + +In the following framework example, the resource implements custom validation logic. + +```go +func (r ThingResource) ValidateConfig(ctx context.Context, req resource.ValidateConfigRequest, resp *resource.ValidateConfigResponse) { + // custom logic +} +``` + +## Path Expressions + +The framework includes a schema path implementation that lets you target attributes of any type or nesting level. This feature lets you build paths without knowing the special string syntax of the SDKv2, instead using Go ecosystem features such as suggestions from editor integrations. + +In the following framework example, the path is absolute to the first element of a list. + +```go +path.Root("list_attribute").AtListIndex(0) +``` + +Additionally, the framework supports expressions on top of these paths, which enables logic such as matching all indices in a list, relative paths, and parent paths. + +The following framework example validates whether the two attributes within the same list element conflict with each other. + +```go +schema.ListNestedAttribute{ + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + “attribute_one”: schema.StringAttribute{ + Validators: []validator.String{ + stringvalidator.ConflictsWith( + path.MatchRelative().AtParent().AtName(“attribute_two”), + ), + }, + // ... other fields ... + }, + “attribute_two”: { /* … */ }, + }, + }, + // ... other fields ... +} +``` + +## Import Warning Diagnostics + +The framework supports diagnostics through all Terraform operations. The SDKv2 does not support diagnostics with some operations, such as import. + +The following framework example returns a warning to practitioners when they import the resource. + +```go +func (r ThingResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resp.Diagnostics.AddWarning( + “Resource Import Considerations”, + “The API does return the password attribute, which will show as a plan ”+ + “difference in Terraform unless the lifecycle configuration block “+ + “ignore_changes argument includes password.” + ) + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) +} +``` + +## Destroy Plan Diagnostics + +With the framework, Terraform version 1.3 and later supports calling the provider when Terraform is planning to destroy a resource. SDKv2 does not support this functionality. + +In this framework example, the resource will raise a warning when planned for destruction to give practitioner more information: + +```go +func (r ThingResource) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + // If the entire plan is null, the resource is planned for destruction. + if req.Plan.Raw.IsNull() { + resp.Diagnostics.AddWarning( + "Resource Destruction Considerations", + "Applying this resource destruction will only remove the resource from the Terraform state "+ + "and will not call the deletion API due to API limitations. Manually use the web "+ + "interface to fully destroy this resource.", + ) + } +} +``` + +## Resource Private State Management + +Each provider can maintain resource private state data in Terraform state. Terraform never accesses resource private state or includes the information in plans, but providers can use this private data for advanced use cases. For example, a provider could use resource private state to store API ETag values that are not beneficial for practitioners. SDKv2 does not support this functionality. + +Refer to the [Manage Private State documentation](/terraform/plugin/framework/resources/private-state) for more information. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/index.mdx new file mode 100644 index 0000000000..eaa78e446b --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/index.mdx @@ -0,0 +1,167 @@ +--- +page_title: Migrating data sources +description: >- + Learn how to migrate a data source from SDKv2 to the plugin framework. +--- + +# Migrating data sources + +Data sources let Terraform reference external data. Unlike resources, Terraform does not create, update, or delete +data sources, and makes no attempt to modify the underlying API. Data Sources are a read-only resource type, so they +only implement a subset of the operations that resources do. Refer to [Data Sources](/terraform/plugin/framework/data-sources) +in the Framework documentation for details. + +This page explains how to migrate a data source from SDKv2 to the plugin Framework. We also recommend reviewing these additional guides for data sources throughout the migration: +- [Timeouts](/terraform/plugin/framework/migrating/data-sources/timeouts): The data source uses timeouts during a read operation. + +## SDKv2 + +In SDKv2, data sources are defined by the `DataSourcesMap` field on the `schema.Provider` struct, which maps data source +names (strings) to their schema. The `schema.Resource` struct is used for both resources and data sources. + +The following example shows a typical implementation. + +```go +func New() *schema.Provider { + return &schema.Provider{ + DataSourcesMap: map[string]*schema.Resource{ + /* ... */ +}, +``` + +In SDKv2, you define both resources and data sources with `schema.Resource` structs. The following example shows a +resource struct. For clarity, the example omits fields that are not available for data sources. + +```go +schema.Resource { + Schema: map[string]*schema.Schema, + Read: ReadFunc, + ReadContext: ReadContextFunc, + ReadWithoutTimeout: ReadContextFunc, + DeprecationMessage: string, + Timeouts: *ResourceTimeout, + Description: string, +} +``` + +## Framework + +In the Framework, you define data sources by adding them to the map returned by your provider's `DataSources` method. + +The `DataSources` method on your `provider.Provider` returns a slice of functions that return types +that implement the `datasource.DataSource` interface for each data source your provider supports. + +The following code shows how you add a data source to your provider with the Framework. + +```go +func (p *provider) DataSources(ctx context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + /* ... */ + } +} +``` + +Like the `resource.Resource` interface, `datasource.DataSource` requires `Schema` and `Metadata` methods. +These methods work the same way for data sources as they do for resources. The `Read` method is also required. + +The `Schema` method returns a `schema.Schema` struct which defines your data source's attributes. + +The `Metadata` method returns a type name that you define. + +The `Read` method implements the logic for writing into the Terraform state. + +The following code shows how you define a `datasource.DataSource` which implements these methods with the +Framework. + +```go +type dataSourceExample struct{} + +func (d *dataSourceExample) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + /* ... */ +} + +func (d *dataSourceExample) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + /* ... */ +} + +func (d *dataSourceExample) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + /* ... */ +} +``` + +## Migration Notes + +Remember the following details when completing the migration from SDKv2 to the Framework. + +- As data sources are read-only, you only implement read functionality for your provider's data sources. Refer to the +[`Read` function](/terraform/plugin/framework/resources#read) for resources in the Framework documentation for more details. + +## Example + +### SDKv2 + +The following example shows an implementation of the `DataSourcesMap` field on the provider +schema with SDKv2. + +```go +func New() (*schema.Provider, error) { + return &schema.Provider { + DataSourcesMap: map[string]*schema.Resource { + "example_datasource": exampleDataSource(), + /* ... */ +``` + +The following example shows how the `ReadContext` function and `Schema` are defined for +the `exampleResource` data source with SDKv2. + +```go +func exampleDataSource() *schema.Resource { + return &schema.Resource{ + ReadContext: dataSourceRead, + + Schema: map[string]*schema.Schema{ + "example_attribute": { + Type: schema.TypeString, + Required: true, + }, + /* ... */ + }, + } +} +``` + +### Framework + +The following example shows how the `exampleDataSource` data source is defined with the Framework after +the migration. + +```go +func (p *provider) DataSources(context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + func() datasource.DataSource { + return &exampleDataSource{} + }, + } +} +``` + +This code defines the methods for the `exampleDataSource` data source with the +Framework. + +```go +func (d *exampleDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = "example_datasource" +} + +func (d *exampleDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + Required: true, + }, + /* ... */ + +func (d *exampleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/timeouts.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/timeouts.mdx new file mode 100644 index 0000000000..7b01053168 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/data-sources/timeouts.mdx @@ -0,0 +1,130 @@ +--- +page_title: Migrating timeouts +description: >- + Learn how to migrate timeouts from SDKv2 to the framework. +--- + +# Migrating timeouts + +The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in `Read` functions. + +## Specifying Timeouts in Configuration + +Timeouts can be defined using either nested blocks or nested attributes. + +If you are writing a new provider using [terraform-plugin-framework](https://github.com/hashicorp/terraform-plugin-framework) +then we recommend using nested attributes. + +If you are migrating a provider from SDKv2 to the Framework and +you are already using timeouts you can either continue to use block syntax, or switch to using nested attributes. +However, switching to using nested attributes will require that practitioners that are using your provider update their +Terraform configuration. + +#### Block + +If your configuration is using a nested block to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts { + read = "60m" + } +} +``` + +Import the [timeouts module](https://github.com/hashicorp/terraform-plugin-framework-timeouts). + +```go +import ( + /* ... */ + "github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts" +) +```` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (d *ThingDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + + Blocks: map[string]schema.Block{ + "timeouts": timeouts.Block(ctx), + }, +``` + +#### Attribute + +If your configuration is using nested attributes to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts = { + read = "60m" + } +} +``` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (d *ThingDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + /* ... */ + "timeouts": timeouts.Attributes(ctx), + }, +``` + +## Updating Models + +Given a `Read` method which fetches the entire configuration: + +```go +func (e *exampleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data exampleDataSourceData + + diags := req.Config.Get(ctx, &data) + resp.Diagnostics.Append(diags...) +``` + +Modify the `exampleDataSourceData` model to include a field for timeouts using a [`timeouts.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts#Value) type. + +```go +type exampleDataSourceData struct { + /* ... */ + Timeouts timeouts.Value `tfsdk:"timeouts"` +``` + +## Accessing Timeout in Read Method + +Call the [`timeouts.Read()` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts#Value.Read). + +```go +func (e *exampleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data exampleDataSourceData + + diags := req.Config.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + readTimeout, diags := data.Timeouts.Read(ctx, 20*time.Minute) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + ctx, cancel := context.WithTimeout(ctx, readTimeout) + defer cancel() + + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/index.mdx new file mode 100644 index 0000000000..f134550391 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/index.mdx @@ -0,0 +1,48 @@ +--- +page_title: Migrating from SDKv2 to the plugin framework +description: >- + Learn how to migrate your provider from SDKv2 to the plugin framework. +--- + +# Overview + +This guide helps you migrate a Terraform provider from SDKv2 to the plugin Framework. We recommend migrating because the Framework has abstractions that make it easier to use, and it represents the future of Terraform plugin development. Refer to [Plugin Framework Benefits](/terraform/plugin/framework-benefits) for higher level details about how the framework makes provider development easier and [Feature Comparison](/terraform/plugin/framework/migrating/benefits) for a detailed functionality comparison between the SDKv2 and the framework. + +This guide provides information and examples for most common use cases, but it does not discuss every nuance of migration. You can ask additional migration questions in the [HashiCorp Discuss forum](https://discuss.hashicorp.com/c/terraform-providers/tf-plugin-sdk/43). To request additions or updates to this guide, submit issues or pull requests to the [`terraform-plugin-framework` repository](https://github.com/hashicorp/terraform-plugin-framework). + +In addition to this migration guide, we recommend referring to the main [Framework documentation](/terraform/plugin/framework) as you migrate your provider. + +## Requirements + +Before you migrate your provider to the Framework, ensure it meets the following requirements: + +- Go 1.22+ +- Built on the latest version of SDKv2 +- The provider is for use with Terraform >= 0.12.0 + +## Muxing + +Consider muxing when you need to migrate a provider that contains many resources or data sources. Muxing enables multiple underlying provider implementations to exist within the same logical provider server. This lets you migrate individual resources or data sources to the Framework one at a time. + +Refer to the [muxing](/terraform/plugin/framework/migrating/mux) page of the migration guide for additional details. + +## Testing Migration + +As you complete the migration, we recommend that you follow Test Driven Development by writing tests to ensure that the migration does not affect provider behavior. Refer to [Testing Migration](/terraform/plugin/framework/migrating/testing#testing-migration) for details and an example. + + +## Migration steps + +Take the following steps when you migrate a provider from SDKv2 to the Framework: + +- Ensure all [tests](/terraform/plugin/framework/migrating/testing#testing-migration) pass. +- Consider [finding SDKv2 resource data consistency errors](/terraform/plugin/sdkv2/resources/data-consistency-errors), which might affect migrating to the Framework. Some errors can be resolved and verified with SDKv2 code before migration, if desired, otherwise resolving these errors must be [part of the migration](/terraform/plugin/framework/migrating/resources/crud#resolving-data-consistency-errors). +- [Serve the provider](/terraform/plugin/framework/migrating/providers#serving-the-provider) via the Framework. + - Implement [muxing](/terraform/plugin/framework/migrating/mux), if you plan to migrate the provider iteratively. +- Update the [provider definition](/terraform/plugin/framework/migrating/providers#provider-definition) to use the Framework. +- Update the [provider schema](/terraform/plugin/framework/migrating/providers#provider-schema). +- Update each of the provider's resources and data sources. + - Update related [tests](/terraform/plugin/framework/migrating/testing) to use the Framework, and ensure that the tests fail. + - Migrate the [resource](/terraform/plugin/framework/migrating/resources) or [data source](/terraform/plugin/framework/migrating/data-sources). + - Verify that related tests now pass. +- If you used [muxing](/terraform/plugin/framework/migrating/mux), remove the muxing configuration. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/mux.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/mux.mdx new file mode 100644 index 0000000000..e0e57c4b7e --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/mux.mdx @@ -0,0 +1,283 @@ +--- +page_title: Migration using muxing +description: >- + Learn how to iteratively migrate from the SDKv2 to the plugin framework using + the terraform-plugin-mux Go library. +--- + +# Muxing + +Muxing enables multiple underlying provider implementations to exist within the same logical provider server via the [terraform-plugin-mux Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-mux). Each underlying provider implementation serves different managed resources and data sources. Refer to the [Combining and Translating documentation](/terraform/plugin/mux) for full details about muxing configuration. + +## Use Cases + +Use muxing when: + +- You have an existing terraform-plugin-sdk based provider. +- The provider includes more than a few managed resources and data sources. +- You want to iteratively develop or release a version of your provider with only some of the managed resources and data sources migrated to the Framework. + +Otherwise for simplicity, it is recommended to migrate directly to the framework without temporarily introducing muxing. + +## Requirements + +- Ensure `github.com/hashicorp/terraform-plugin-sdk/v2` is upgraded to the latest version. For example, running the `go get github.com/hashicorp/terraform-plugin-sdk/v2@latest` command. +- Ensure existing acceptance testing is passing. Acceptance testing can be used to verify the muxing implementation before release. + +## Implementation + +1. Introduce a Go type implementing the Framework's [`provider.Provider` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider). Refer to the [provider definition section](/terraform/plugin/framework/migrating/providers#provider-definition) of the migration guide for additional details. +1. Implement the `provider.Provider` type `Schema` and `Configure` methods so it is compatible for muxing. The schema and configuration handling must exactly match between all underlying providers of the mux server. Refer to the [provider schema section](/terraform/plugin/framework/migrating/providers#provider-schema) of the migration guide for additional details. +1. Introduce a mux server using terraform-plugin-mux functionality. This code eventually must be referenced by the codebase's `main()` function, which is responsible for starting the provider server. Refer to the [Mux Server Examples section](#mux-server-examples) for additional details. +1. Introduce an acceptance test for the mux server implementation. Refer to the [Testing Examples section](#testing-examples) for additional details. +1. Ensure `github.com/hashicorp/terraform-plugin-mux` is added to the provider Go module dependencies. For example, running the `go get github.com/hashicorp/terraform-plugin-mux@latest` command. + +### Mux Server Examples + +#### Terraform 0.12 Compatibility Example + +The following `main.go` example shows how to set up muxing for a provider that uses Protocol Version 5 to maintain compatibility with Terraform 0.12 and later. The example also shows how to use the `debug` flag to optionally run the provider in debug mode. + +```go +import ( + "context" + "flag" + "log" + + "github.com/hashicorp/terraform-plugin-framework/providerserver" + "github.com/hashicorp/terraform-plugin-go/tfprotov5" + "github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server" + "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" + + "example.com/terraform-provider-examplecloud/internal/provider" +) + +func main() { + ctx := context.Background() + + var debug bool + + flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") + flag.Parse() + + providers := []func() tfprotov5.ProviderServer{ + providerserver.NewProtocol5(provider.New()), // Example terraform-plugin-framework provider + provider.Provider().GRPCProvider, // Example terraform-plugin-sdk provider + } + + muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + log.Fatal(err) + } + + var serveOpts []tf5server.ServeOpt + + if debug { + serveOpts = append(serveOpts, tf5server.WithManagedDebug()) + } + + err = tf5server.Serve( + "registry.terraform.io//", + muxServer.ProviderServer, + serveOpts..., + ) + + if err != nil { + log.Fatal(err) + } +} +``` + +#### Terraform 1.X Compatibility Example + +The mux server can be setup to break compatibility with Terraform 0.12 through 1.1.6, but enable Protocol Version 6 capabilities in the Framework provider, such as nested attributes. + +The following `main.go` example shows how to set up muxing for a provider that upgrades the terraform-plugin-sdk based provider to Protocol Version 6 to support those new features in the Framework provider. The example also shows how to use the `debug` flag to optionally run the provider in debug mode. + +```go +import ( + "context" + "flag" + "log" + + "github.com/hashicorp/terraform-plugin-framework/providerserver" + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server" + "github.com/hashicorp/terraform-plugin-mux/tf5to6server" + "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" + + "example.com/terraform-provider-examplecloud/internal/provider" +) + +func main() { + ctx := context.Background() + + var debug bool + + flag.BoolVar(&debug, "debug", false, "set to true to run the provider with support for debuggers like delve") + flag.Parse() + + upgradedSdkServer, err := tf5to6server.UpgradeServer( + ctx, + provider.Provider().GRPCProvider, // Example terraform-plugin-sdk provider + ) + + if err != nil { + log.Fatal(err) + } + + providers := []func() tfprotov6.ProviderServer{ + providerserver.NewProtocol6(provider.New()()), // Example terraform-plugin-framework provider + func() tfprotov6.ProviderServer { + return upgradedSdkServer, + }, + } + + muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + log.Fatal(err) + } + + var serveOpts []tf6server.ServeOpt + + if debug { + serveOpts = append(serveOpts, tf6server.WithManagedDebug()) + } + + err = tf6server.Serve( + "registry.terraform.io//", + muxServer.ProviderServer, + serveOpts..., + ) + + if err != nil { + log.Fatal(err) + } +} +``` + +### Testing Examples + +#### Protocol Version 5 + +The following acceptance test example would be included in the same Go package that defines the provider code to verify the muxing setup: + +```go +import ( + "context" + "testing" + + "github.com/hashicorp/terraform-plugin-go/tfprotov5" + "github.com/hashicorp/terraform-plugin-mux/tf5muxserver" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestMuxServer(t *testing.T) { + resource.Test(t, resource.TestCase{ + ProtoV5ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error) { + "examplecloud": func() (tfprotov5.ProviderServer, error) { + ctx := context.Background() + providers := []func() tfprotov5.ProviderServer{ + providerserver.NewProtocol5(New()), // Example terraform-plugin-framework provider + Provider().GRPCProvider, // Example terraform-plugin-sdk provider + } + + muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + return nil, err + } + + return muxServer.ProviderServer(), nil + }, + }, + Steps: []resource.TestStep{ + { + Config: "... configuration including simplest data source or managed resource", + }, + }, + }) +} +``` + +#### Protocol Version 6 + +The following acceptance test example would be included in the same Go package that defines the provider code to verify the muxing setup: + +```go +import ( + "context" + "testing" + + "github.com/hashicorp/terraform-plugin-go/tfprotov6" + "github.com/hashicorp/terraform-plugin-mux/tf5to6server" + "github.com/hashicorp/terraform-plugin-mux/tf6muxserver" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestMuxServer(t *testing.T) { + resource.Test(t, resource.TestCase{ + ProtoV6ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error) { + "examplecloud": func() (tfprotov6.ProviderServer, error) { + ctx := context.Background() + + upgradedSdkServer, err := tf5to6server.UpgradeServer( + ctx, + Provider().GRPCProvider, // Example terraform-plugin-sdk provider + ) + + if err != nil { + return nil, err + } + + providers := []func() tfprotov6.ProviderServer{ + providerserver.NewProtocol6(New()), // Example terraform-plugin-framework provider + func() tfprotov6.ProviderServer { + return upgradedSdkServer + }, + } + + muxServer, err := tf6muxserver.NewMuxServer(ctx, providers...) + + if err != nil { + return nil, err + } + + return muxServer.ProviderServer(), nil + }, + }, + Steps: []resource.TestStep{ + { + Config: "... configuration including simplest data source or managed resource", + }, + }, + }) +} +``` + +## Tips + +- Only acceptance tests for migrated managed resources and data sources require testing code updates as noted in the [testing](/terraform/plugin/framework/migrating/testing) page of the migration guide. + +## Troubleshooting + +### PreparedConfig response from multiple servers + +Muxed providers may receive a new error, such as: + +```text +Error: Plugin error + + with provider["registry.terraform.io/example/examplecloud"], + on line 0: + (source code not available) + +The plugin returned an unexpected error from +plugin.(*GRPCProvider).ValidateProviderConfig: rpc error: code = Unknown desc += got different PrepareProviderConfig PreparedConfig response from multiple +servers, not sure which to use +``` + +If the terraform-plugin-sdk based provider was using [`Default`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/helper/schema#Schema.Default) or [`DefaultFunc`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/helper/schema#Schema.DefaultFunc), you must remove the usage of `Default` and `DefaultFunc` in that provider implementation. Transfer the logic into the provider [ConfigureFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema#Provider.ConfigureFunc) or [ConfigureContextFunc](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema#Provider.ConfigureContextFunc), similar to how it must be implemented in a terraform-plugin-framework based provider. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/providers/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/providers/index.mdx new file mode 100644 index 0000000000..42fc0c54ee --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/providers/index.mdx @@ -0,0 +1,343 @@ +--- +page_title: Migrating providers from SDKv2 to the framework +description: >- + Learn how to migrate a provider definition and schema from SDKv2 to the plugin + framework. +--- + +# Migrating providers + +Providers are Terraform plugins that define resources and data sources for practitioners to use. You serve your +providers with a provider server so they can interact with Terraform. + +This page explains how to migrate a provider server, definition, and schema from SDKv2 to the plugin Framework. + +## Serving the Provider + +You must update your provider's `main.go` file to serve Framework providers. Refer to [Provider Servers](/terraform/plugin/framework/provider-servers) in the Framework documentation for details. + + + +To iteratively migrate individual resources and data sources, refer to [muxing](/terraform/plugin/framework/migrating/mux) for the `main.go` implementation instead. The latter [provider definition](#provider-definition) and [provider schema](#provider-schema) sections are still applicable when muxing. + + + +### SDKv2 + +In SDKv2, the provider package's `main` function serves the provider by calling `plugin.Serve`. + +The following code shows a basic implementation for serving an SDKv2 provider. + +```go +func main() { + plugin.Serve( + &plugin.ServeOpts{ + ProviderFunc: provider.New, + ProviderAddr: "registry.terraform.io//", + }, + ) +} +``` + +### Framework + +In the Framework, you serve your provider by calling `providerserver.Serve` in your provider package's `main` function. +Refer to [Provider Servers](/terraform/plugin/framework/provider-servers) in the Framework documentation for details. + +The following code shows an equivalent implementation for serving a provider in the Framework. + +```go +func main() { + err := providerserver.Serve( + context.Background(), + provider.New, + providerserver.ServeOpts{ + Address: "registry.terraform.io//", + }, + ) + + if err != nil { + log.Fatal(err) + } +} +``` + +## Provider Definition + +Providers built with SDKv2 use a `schema.Provider` struct to define their behavior, while Framework providers use a +type that implements the `provider.Provider` interface, which you must define. Refer to [Providers](/terraform/plugin/framework/providers) in the Framework documentation for details. + +### SDKv2 + +The [`ProviderFunc`](/terraform/plugin/framework/migrating/providers#serving-the-provider) field on +`plugin.ServeOpts` requires a pointer to `schema.Provider`. This is typically satisfied by calling a function that +returns a pointer to `schema.Provider`. + +The `ResourcesMap` and `DataSourcesMap` fields each contain a map of strings to functions that each return a pointer +to a `schema.Resource` struct. + +The following example shows a basic implementation of an SDKv2 provider. + +```go +func New() *schema.Provider { + return &schema.Provider{ + Schema: map[string]*schema.Schema{}, + ConfigureContextFunc: configureContextFunc(), + ResourcesMap: map[string]*schema.Resource{ + "resource_example": resourceExample(), + }, + DataSourcesMap: map[string]*schema.Resource{ + "dataSource_example": dataSourceExample(), + }, + /* ... */ + } +} +``` + +### Framework + +In the Framework, the second argument to your `provider.Serve` function requires a function that returns a type +satisfying the `provider.Provider` interface. + +The following code shows a typical implementation. In this implementation, the `Resources` method returns a slice +of functions that return types that implement the `resource.Resource` interface. The `DataSources` method returns a +slice of functions that return types that implement the `datasource.DataSource` interface. +Refer to the [Resources](/terraform/plugin/framework/migrating/resources) and +[Data Sources](/terraform/plugin/framework/migrating/data-sources) pages in this guide to implement these functions for your +provider. + +```go +type exampleCloudProvider struct { +} + +func New() provider.Provider { + return &exampleCloudProvider{} +} + +func (p *exampleCloudProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "examplecloud" +} + +func (p *exampleCloudProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{} +} + +func (p *exampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { +} + +func (p *exampleCloudProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource { + func() resource.Resource { + return resourceExample{} + }, + } +} + +func (p *exampleCloudProvider) DataSources(ctx context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource { + func() datasource.DataSource { + return dataSourceExample{} + }, + } +} +``` + +### Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2, your provider's `New` function returns a `schema.Provider` struct. In the Framework, `New` returns a type +that you define which satisfies the `provider.Provider` interface. +- In SDKv2, `Schema` is a field on `schema.Provider` that contains `map[string]*schema.Schema`, which maps attribute +names to `schema.Schema` structs. In the Framework, `Schema` is a method you define on your provider's +`provider.Provider` interface that returns your provider's `schema.Schema` struct. +- In SDKv2, `ConfigureContextFunc` is a field on `schema.Provider` containing a function that configures the provider. +In the Framework, `Configure` is a function you define on your provider that configures your provider. +- In SDKv2, `ResourcesMap` is a field on `schema.Provider` containing `map[string]*schema.Resource`, which maps resource +names to `schema.Resource` structs. In the Framework, `Resources` is a method you define on your provider that +returns `[]func() resource.Resource`, which creates resource types that you define, which satisfy the +`resource.Resource` interface. +- In SDKv2, `DataSourcesMap` is a field on `schema.Provider` containing `map[string]*schema.Resource`, which maps data +source names to `schema.Resource` structs (data sources and resources both use `schema.Resource`). In the Framework, +`DataSources` is a method you define on your provider that returns `[]func() datasource.DataSource`, which +creates data source types that you define, which satisfy the `datasource.DataSource` interface. + +### Example + +#### SDKv2 + +The following example shows how to set up a provider schema, configuration, resources, and data sources using SDKv2. + +```go +func New() (*schema.Provider, error) { + return &schema.Provider{ + Schema: map[string]*schema.Schema{ + "attribute": { + /* ... */ + }, + }, + ConfigureContextFunc: configureProvider, + ResourcesMap: map[string]*schema.Resource{ + "exampleResource": exampleResource(), + /* ... */ + }, + DataSourcesMap: map[string]*schema.Resource{ + "exampleDataSource": exampleDataSource(), + /* ... */ + }, + }, nil +} +``` + +#### Framework + +The following shows the same section of provider code after the migration. + +```go +var _ provider.Provider = (*exampleProvider)(nil) + +func New() provider.Provider { + return &exampleProvider{} +} + +func (p *exampleProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + func() resource.Resource { + return &exampleResource{} + }, + /* ... */ + } +} + +func (p *exampleProvider) DataSources(_ context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + func() datasource.DataSource { + return &exampleDataSource{} + }, + /* ... */ + } +} + +func (p *exampleProvider) Schema(_ context.Context, _ provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "attribute": schema.SingleNestedBlock{ + /* ... */ + }, + }, + } +} + +func (p *exampleProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "example" +} + +func (p *exampleProvider) Configure(_ context.Context, _ provider.ConfigureRequest, resp *provider.ConfigureResponse) { + /* ... */ +} +``` + +## Provider Schema + +A provider schema defines the attributes and behaviors of the provider itself. For example, a provider that connects to +a third-party API may define attributes for the base URL or a required authentication token. + +### SDKv2 + +In SDKv2, you implement a provider Schema by populating the `Schema` field on the `schema.Provider` struct. The `Schema` +field contains a `map[string]*schema.Schema`. Each map entry represents the name of the attribute and pointer to a +`schema.Schema` struct that defines that attribute's behavior. + +The following example defines the provider schema in the `Schema` field within the `schema.Provider` struct. + +```go +func New() *schema.Provider { + return &schema.Provider{ + Schema: map[string]*schema.Schema{ + /* ... */ + }, +``` + +### Framework + +In the Framework, the `Schema` method returns the provider schema. The `Schema` method is part of the +`provider.Provider` interface that your provider must implement. `Schema` returns a struct containing fields for +`Attributes` and `Blocks`. These `Attributes` and `Blocks` contain `map[string]schema.Attribute` and +`map[string]schema.Block`, respectively. Refer to [Providers - Schema](/terraform/plugin/framework/providers#schema) in the +Framework documentation for details. + +The following code shows the `Schema` method, which returns the provider schema. + +```go +func (p *ExampleCloudProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + } +} +``` + +Refer to the [Attributes](/terraform/plugin/framework/migrating/attributes-blocks/attribute-schema) and +[Blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks) pages in this migration guide to learn how to migrate +those fields to the Framework. + +### Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2, `schema.Schema` is a struct that defines attributes and behaviors (e.g., `Type`, `Optional`). In the +Framework `schema.Schema` is a struct that includes attributes and blocks. + +### Example + +This example shows how to use a nested block and a nested attribute for the SDKv2 and Framework examples, +respectively. Refer to the +[Blocks with Computed Fields](/terraform/plugin/framework/migrating/attributes-blocks/blocks-computed) page in this guide for more +details. + +#### SDKv2 + +The following example shows the configuration of the `example_attribute` attribute for the provider's `example_block` configuration block. + +```go +Schema: map[string]*schema.Schema{ + "example_block": { + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "example_attribute": { + Type: schema.TypeString, + Optional: true, + ValidateDiagFunc: validation.ToDiagFunc(validation.IsURLWithScheme(SupportedProxySchemesStr())), + ConflictsWith: []string{"example_block.0.another_attribute"}, + }, + /* ... */ +``` + +#### Framework + +The following shows the same section of provider code after the migration. + +This code implements the `example_attribute` attribute for the `example_Block` block with the Framework. + +```go +func (p *exampleProvider) Schema(_ context.Context, _ provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + /*...*/ + Blocks: map[string]schema.Block{ + "example_block": schema.ListNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "example_attribute": schema.StringAttribute{ + Optional: true, + Validators: []validator.String{ + attribute_validator.UrlWithScheme(supportedProxySchemesStr()...), + stringvalidator.ConflictsWith(path.MatchRelative().AtParent().AtName("another_attribute")), + }, + }, + }, + Validators: []validator.List{ + listvalidator.SizeAtMost(1), + }, +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/crud.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/crud.mdx new file mode 100644 index 0000000000..645c0aae3b --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/crud.mdx @@ -0,0 +1,259 @@ +--- +page_title: CRUD functions +description: >- + Learn how to migrate resource create, read, update, and delete (CRUD) + functions from SDKv2 to the plugin framework. +--- + +# CRUD functions + +In Terraform, a resource represents a single instance of a given resource type. They modify a specific resource in the +API and in Terraform's state through a set of Create, Read, Update, and Delete (CRUD) functions. A resource's CRUD +functions implement the logic required to manage your resources with Terraform. Refer to +[Resources - Define Resources](/terraform/plugin/framework/resources#define-resources) in the Framework documentation for details. + +This page explains how to migrate a resource's CRUD functions from SDKv2 to the plugin Framework. + +## SDKv2 + +In SDKv2, a resource's CRUD functions are defined by populating the relevant fields (e.g., `CreateContext`, +`ReadContext`) on the `schema.Resource` struct. + +The following code shows a basic implementation of CRUD functions with SDKv2. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + CreateContext: create, + ReadContext: read, + UpdateContext: update, + DeleteContext: delete, + /* ... */ +``` + +## Framework +In the Framework, you implement CRUD functions for your resource by defining a type that implements the +`resource.Resource` interface. To define functions related to state upgrade, import, and plan modification, +implement their respective interfaces on your resource: `ResourceWithUpgradeState`, `ResourceWithImportState`, and +`ResourceWithModifyPlan`. + +The following code shows how you define a `resource.Resource` which implements CRUD functions with the Framework. + +```go +type resourceExample struct { + p provider +} + +func (r *resourceExample) Create(ctx context.Context, req resource.CreateRequest, resp +*resource.CreateResponse) { + /* ... */ +} + +func (r *resourceExample) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + /* ... */ +} + +func (r *resourceExample) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + /* ... */ +} + +func (r *resourceExample) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + /* ... */ +} +``` +## Migration Notes +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2 it is not necessary to define functions for parts of the CRUD lifecycle that are not used by a given +resource. For instance, if the resource does not support in-place modification, you do not need to define an `Update` +function. In the Framework, you must implement each of the CRUD lifecycle functions on all resources to satisfy the +`Resource` interface, even if the function does nothing. +- In SDKv2, the `Update` function (even if empty or missing) would automatically copy the request plan to the response state. This could be problematic when the `Update` function also returned errors as additional steps were required to disable the automatic SDKv2 behavior. In the Framework, the `Update` method must be written to explicitly copy data from `req.Plan` to `resp.State` to actually update the resource's state and prevent `Provider produced inconsistent result after apply` errors from Terraform. +- In SDKv2, calling `d.SetId("")` would signal resource removal. In the Framework, this is replaced with `resp.State.RemoveResource()`. Resource removal should only occur during the `Read` method to prevent `Provider produced inconsistent result after apply` errors from Terraform during other operations. The `Delete` method will automatically call `resp.State.RemoveResource()` if there are no errors. +- In SDKv2, you get and set attribute values in Terraform's state by calling `Get()` and `Set()` on +`schema.ResourceData`. In the Framework, you get attribute values from the configuration and plan by accessing +`Config` and `Plan` on `resource.CreateRequest`. You set attribute values in Terraform's state by mutating `State` +on `resource.CreateResponse`. +- In SDKv2, certain resource schema definition and data consistency errors are only visible as Terraform warning logs by default. After migration, these errors will always be visible to practitioners and prevent further Terraform operations. The [SDKv2 resource data consistency errors documentation](/terraform/plugin/sdkv2/resources/data-consistency-errors) discusses how to find these errors in SDKv2 resources and potential solutions **prior** to migrating. See the [Resolving Data Consistency Errors](#resolving-data-consistency-errors) section for Plugin Framework solutions **during** migration. + +## Example + +### SDKv2 + +The following example from shows implementations of CRUD functions on the with SDKv2. +The `UpdateContext` function is not implemented because the provider does not support updating this resource. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + CreateContext: create, + ReadContext: readNil, + DeleteContext: RemoveResourceFromState, + /* ... */ +``` + +The following example shows the implementation of the `create()` function with SDKv2. The implementations of +the `readNil()` and `RemoveResourceFromState()` functions are not shown for brevity. + +```go +func create(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { + if err := d.Set("example_attribute", "value"); err != nil { + diags = append(diags, diag.Errorf("err: %s", err)...) + return diags + } + + return nil +} +``` + +### Framework +The following shows the same section of provider code after the migration. + +This code implements the `Create` function for the `example_resource` resource with the Framework. + +```go +func (r *exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var plan exampleModel + + diags := req.Plan.Get(ctx, &plan) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + plan.ExampleAttribute = types.StringValue("value") + + diags = resp.State.Set(ctx, plan) + resp.Diagnostics.Append(diags...) +} +``` + +## Resolving Data Consistency Errors + + +See the [SDKv2 data consistency errors documentation](/terraform/plugin/sdkv2/resources/data-consistency-errors) for background info, debugging tips, and potential SDKv2 solutions. + + + +### Planned Value does not match Config Value + +If an SDKv2 resource is raising this type of error or [warning log](/terraform/plugin/sdkv2/resources/data-consistency-errors#checking-for-warning-logs): + +```text +TIMESTAMP [WARN] Provider "TYPE" produced an invalid plan for ADDRESS, but we are tolerating it because it is using the legacy plugin SDK. + The following problems may be the cause of any confusing errors from downstream operations: + - .ATTRIBUTE: planned value cty.StringVal("VALUE") does not match config value cty.StringVal("value") +``` + +This occurs for attribute schema definitions that are `Optional: true` and `Computed: true`; where the planned value, returned by the provider, does not match the attribute's config value or prior state value. For example, value's for an attribute of type string must match byte-for-byte. + +An example root cause of this issue could be from API normalization, such as a JSON string being returned from an API and stored in state with differing whitespace then what was originally in config. + +#### SDKv2 Example + +Here is an example of an SDKv2 resource schema and terraform config that simulates this data consistency error: + +```go +func thingResource() *schema.Resource { + return &schema.Resource{ + // ... + Schema: map[string]*schema.Schema{ + "word": { + Type: schema.TypeString, + Optional: true, + Computed: true, + StateFunc: func(word interface{}) string { + // This simulates an API returning the 'word' attribute as all uppercase, + // which is stored to state even if it doesn't match the config or prior value. + return strings.ToUpper(word.(string)) + }, + }, + }, + } +} +``` + +```hcl +resource "examplecloud_thing" "this" { + word = "value" +} +``` + +A [warning log](/terraform/plugin/sdkv2/resources/data-consistency-errors#checking-for-warning-logs) will be produced and the resulting state after applying a new resource will be `VALUE` instead of `value`. + +#### Migrating to Plugin Framework + +When a resource with this behavior and prior state is migrated to Plugin Framework, depending on the business logic, you could potentially see: + +- Resource drift in the plan; Terraform will always detect a change between the config and state value. If no [modification](/terraform/plugin/framework/resources/plan-modification) is implemented, you could see drift in the plan: +```hcl +resource "examplecloud_thing" "this" { + word = "value" +} +``` +```text +examplecloud_thing.this: Refreshing state... + +Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + ~ update in-place + +Terraform will perform the following actions: + + # examplecloud_thing.this will be updated in-place + ~ resource "examplecloud_thing" "this" { + ~ word = "VALUE" -> "value" + } + +Plan: 0 to add, 1 to change, 0 to destroy. +``` +- If you mimic the original SDKv2 behavior of storing a different value from config/prior value into state in the `Update` method, you will see an error like below: +```text +examplecloud_thing.this: Modifying... +╷ +│ Error: Provider produced inconsistent result after apply +│ +│ When applying changes to examplecloud_thing.this, provider "provider[\"TYPE\"]" produced an unexpected +│ new value: .word: was cty.StringVal("value"), but now cty.StringVal("VALUE"). +│ +│ This is a bug in the provider, which should be reported in the provider's own issue tracker. +``` + +#### Recommended Solution +To solve this issue, the provider code must preserve the config value or prior state value when producing the new state. The recommended way to implement this logic is by creating a [custom type](/terraform/plugin/framework/handling-data/types/custom) with [semantic equality logic](/terraform/plugin/framework/handling-data/types/custom#semantic-equality). A custom type can be shared across multiple resource attributes and will ensure that the semantic equality logic is invoked during the `Read`, `Create`, and `Update` methods respectively. + +For the above example, the semantic equality implementation below would resolve the resource drift and error: + + + +The example code below is a partial implementation of a custom type, please see the [Custom Value Type documentation](/terraform/plugin/framework/handling-data/types/custom#value-type) for guidance. + + + +```go +type CaseInsensitive struct { + basetypes.StringValue +} + +// ... custom value type implementation + +// StringSemanticEquals returns true if the given string value is semantically equal to the current string value. (case-insensitive) +func (v CaseInsensitive) StringSemanticEquals(_ context.Context, newValuable basetypes.StringValuable) (bool, diag.Diagnostics) { + var diags diag.Diagnostics + + newValue, ok := newValuable.(CaseInsensitive) + if !ok { + diags.AddError( + "Semantic Equality Check Error", + "An unexpected value type was received while performing semantic equality checks. "+ + "Please report this to the provider developers.\n\n"+ + "Expected Value Type: "+fmt.Sprintf("%T", v)+"\n"+ + "Got Value Type: "+fmt.Sprintf("%T", newValuable), + ) + + return false, diags + } + + return strings.EqualFold(newValue.ValueString(), v.ValueString()), diags +} +``` + diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/import.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/import.mdx new file mode 100644 index 0000000000..c7ebb97aa1 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/import.mdx @@ -0,0 +1,138 @@ +--- +page_title: Resource import +description: >- + Learn how to migrate resource import functions from SDKv2 to the plugin + framework. Practitioners import resources to bring them under the control of + their Terraform projects. +--- + +# Resource import + +Practitioners can use the [`terraform import` command](/terraform/cli/commands/import) to let Terraform +begin managing existing infrastructure by importing an existing resource into their Terraform project's state. A +resource's importer function implements the logic to add a resource to Terraform's state. Refer to +[Resources - Import](/terraform/plugin/framework/resources/import) in the Framework documentation for details. + +This page explains how to migrate import functions from SDKv2 to the plugin Framework. + +## SDKv2 + +In SDKv2, the `Importer` field on the `schema.Resource` defines how the provider imports resources to Terraform's +state. The following example implements resource import with SDKv2. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + Importer: &schema.ResourceImporter{ + StateContext: StateContextFunc, + }, + /* ... */ +``` + +The `StateContextFunc` is the function called to import a resource into Terraform state. Any operations that +are needed to import the resource take place within this function and may result in the mutation of the `ResourceData` +that is passed into the function. The return value is a slice of `schema.ResourceData`. This slice might be as simple as returning the `ResourceData` that was passed into the function, or it may involve multiple fan out to multiple resources, such as AWS security groups. + +## Framework + +In the Framework, you implement the `ResourceWithImportState` interface on your `resource.Resource` type to allow +users to import a given resource. This interface requires that your type implement a `ImportState` function. + +The following code shows how you define an `ImportState` function with the Framework. + +```go +func (r *resourceExample) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + /* ... */ +} +``` + +The `ImportState` function includes a `resource.ImportStateResponse`, which you use to set your resource's state. + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In both SDKv2 and Framework, there is no access to the configuration, state, or plan during import. The import +functions can only access the value (e.g., the resource's `ID`) supplied to the `terraform import` command. +- In SDKv2, you implement resource importing by populating the `Importer` field on the `schema.Resource` struct. In the +Framework, you define an `ImportState` function on the type which implements `resource.Resource`. This implementation +satisfies the `resource.ResourceWithImportState` interface. + +## Example + +In the simple use case in which `schema.ImportStatePassthroughContext` has been used with SDKv2, migrating to the Framework involves using the `resource.ImportStatePassthroughID` function. + +### SDKv2 + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + Importer: &schema.ResourceImporter{ + StateContext: schema.ImportStatePassthroughContext, + }, + /* ... */ + } +} +``` + +### Framework + +```go +func (r *resourceExample) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) +} +``` + +This example also shows one way to handle populating attributes with their default values during import. + +### SDKv2 + +The following example shows the import function for the `example_resource` resource with SDKv2. + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + Importer: &schema.ResourceImporter{ + StateContext: importFunc, + }, + /* ... */ + } +} +``` + +The following example shows the implementation of the `importFunc` function with SDKv2. + +```go +func importFunc(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { + d.SetId("id") + + if err := d.Set("attribute", "value"); err != nil { + return nil, fmt.Errorf("resource example import failed, error setting attribute: %w", err) + } + + return []*schema.ResourceData{d}, nil +} +``` + +### Framework +The following shows the same section of provider code after the migration. + +This code implements the `ResourceWithImportState` interface on the `exampleResource` type by defining an `ImportState` +function. + +```go +func (r *exampleResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + id := req.ID + + state := exampleModel{ + ID: types.StringValue("id"), + Attribute: types.StringValue("value"), + } + + diags := resp.State.Set(ctx, &state) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/index.mdx new file mode 100644 index 0000000000..73d383a3aa --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/index.mdx @@ -0,0 +1,219 @@ +--- +page_title: Migrating resources +description: >- + Learn how to migrate resources from SDKv2 to the plugin framework. +--- + +# Migrating resources + +Resources are an abstraction that allow Terraform to manage infrastructure objects by defining create, read, update, +and delete functionality that maps onto API operations. Resource schemas define what fields a resource has, give +Terraform metadata about those fields, and define how the resource behaves. Refer to +[Resources](/terraform/plugin/framework/resources) in the Framework documentation for details. + +This page explains how to migrate a resource's schema from SDKv2 to the plugin Framework. We also recommend reviewing these additional guides for resources throughout the migration: +- [Create, Read, Update, and Delete functions](/terraform/plugin/framework/migrating/resources/crud): The resource defines the logic to manage resources with Terraform. +- [Default](/terraform/plugin/framework/migrating/attributes-blocks/default-values): The resource specifies default values for attributes that are null within the configuration. +- [Import](/terraform/plugin/framework/migrating/resources/import): The resource defines the logic to add a resource to Terraform's state. +- [Plan modification](/terraform/plugin/framework/migrating/resources/plan-modification): The resource customizes the Terraform plan for known values or behaviors outside the practitioner's configuration. +- [State upgrade](/terraform/plugin/framework/migrating/resources/state-upgrade): The resource updates Terraform state information in advanced use cases. +- [Timeouts](/terraform/plugin/framework/migrating/resources/timeouts): The resource uses timeouts during create, read, update or delete operations. + +## SDKv2 +In SDKv2, resources are defined by the `ResourcesMap` field in the `schema.Provider` struct, which maps resource names +(strings) to their schema. Each schema is a `schema.Resource` struct that includes: + +- A `Schema` field, which defines resource attributes +- Fields for resource lifecycle functions such as `Create` and `CreateContext` +- Fields for functions to implement state upgrade (`StateUpgraders`), import (`Importer`), and customize diff +(`CustomizeDiff`) + +The following code shows a basic implementation of resource schema with SDKv2. + +```go +func New() *schema.Provider { + return &schema.Provider{ + ResourcesMap: map[string]*schema.Resource { + "resource_example": resourceExample(), + /* ... */ + }, + /* ... */ + } +} +``` + +SDKv2 defines the `schema.Resource` struct as follows. + +```go +schema.Resource{ + Schema map[string]*Schema + SchemaVersion int + MigrateState StateMigrateFunc + StateUpgraders []StateUpgrader + Create CreateFunc + Read ReadFunc + Update UpdateFunc + Delete DeleteFunc + Exists ExistsFunc + CreateContext CreateContextFunc + ReadContext ReadContextFunc + UpdateContext UpdateContextFunc + DeleteContext DeleteContextFunc + CreateWithoutTimeout CreateContextFunc + ReadWithoutTimeout ReadContextFunc + UpdateWithoutTimeout UpdateContextFunc + DeleteWithoutTimeout DeleteContextFunc + CustomizeDiff CustomizeDiffFunc + Importer *ResourceImporter + DeprecationMessage string + Timeouts *ResourceTimeout + Description string + UseJSONNumber bool +} +``` + +## Framework + +In the Framework, you define your provider's resources by adding them to your provider's `Resources` method. + +The `Resources` method on your `provider.Provider` returns a slice of functions that return types that +implement the `resource.Resource` interface for each resource your provider supports. + +The following code shows how you add a resource to your provider with the Framework. + +```go +func (p *provider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + func() resource.Resource { + return resourceTypeExample{} + }, + } +} +``` + +The `resource.Resource` interface requires `Metadata`, `Schema`, `Create`, `Read`, `Update`, and `Delete` methods. + +The `Schema` method returns a `schema.Schema` struct which defines your resource's attributes. + +The `Metadata` method returns a type name that you define. + +The following code shows how you define a `resource.Resource` which implements these methods with the +Framework. + +```go +type resourceExample struct{} + +func (r *resourceExample) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + /* ... */ +} + +func (r *resourceExample) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + /* ... */ +} + +func (r *resourceExample) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + /* ... */ +} + +func (r *resourceExample) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + /* ... */ +} + +func (r *resourceExample) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + /* ... */ +} + +func (r *resourceExample) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + /* ... */ +} +``` + +Refer to the [Resources - CRUD functions](/terraform/plugin/framework/migrating/resources/crud) page in this guide to learn how to +implement the `resource.Resource` interface. + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- SDKv2 uses `schema.Resource` structs to define resources. These structs have a `Schema` field which holds a +`schema.Schema` to define the resource's attributes and behavior. In the Framework, you define a type that implements +the `resource.Resource` interface, which includes a `Schema` method that returns your resource's schema. +- SDKv2 implements a resource's CRUD operations as functions on the `schema.Resource`. In the Framework, you define a +type that implements the `resource.Resource` interface. The resource interface contains the functions that define your resource's +CRUD operations. +- SDKv2 by default demotes certain resource schema definition and data consistency errors to only be visible as Terraform warning logs. After migration, these errors will always be visible to practitioners and prevent further Terraform operations. The [SDKv2 resource data consistency errors documentation](/terraform/plugin/sdkv2/resources/data-consistency-errors) discusses how to find these errors in SDKv2 resources and potential solutions **prior** to migrating. See the [CRUD - Resolving Data Consistency Errors](/terraform/plugin/framework/migrating/resources/crud#resolving-data-consistency-errors) section for Plugin Framework solutions **during** migration. + +## Example + +### SDKv2 + +In SDKv2, the `ResourcesMap` field on the `schema.Provider` struct holds a `map[string]*schemaResource`. A typical +pattern is to implement a function that returns `schema.Resource`. + +```go +func New() (*schema.Provider, error) { + return &schema.Provider { + ResourcesMap: map[string]*schema.Resource { + "example_resource": exampleResource(), + /* ... */ +``` + +This code defines the `example_resource` resource by mapping the resource name to the `exampleResource` struct. + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + CreateContext: createResource, + DeleteContext: deleteResource, + ReadContext: readResource, + + Schema: map[string]*schema.Schema{ + "attribute": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateDiagFunc: validation.ToDiagFunc(validation.StringInSlice([]string{'a', 'b'}, false)), + }, + /* ... */ +``` + +### Framework + +The following shows the same section of provider code after the migration. + +```go +func (p *exampleProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + func() resource.Resource { + return &exampleResource{} + }, + /* ... */ + } +} +``` + +This code defines the `Schema` and `Metadata` methods for the `Resource`. + +```go +func (r *exampleResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "example_resource" +} + +func (r *exampleResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + // Required attributes + "attribute": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + Validators: []validator.String{ + stringvalidator.OneOf([]string{"a", "b"}...), + }, + }, + /* ... */ + }, + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/plan-modification.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/plan-modification.mdx new file mode 100644 index 0000000000..af82412799 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/plan-modification.mdx @@ -0,0 +1,182 @@ +--- +page_title: Plan modification +description: >- + Learn how to migrate resource CustomizeDiff functions in SDKv2 to + plan modifiers in the Terraform plugin framework. +--- + +# Plan modification + +Your provider can modify the Terraform plan to match the expected end state. This can include replacing unknown values +with expected known values or marking a resource that must be replaced. Refer to +[Plan Modification](/terraform/plugin/framework/resources/plan-modification) in the Framework documentation for details. + +This page explains how to migrate resource `CustomizeDiff` functions in SDKv2 to `PlanModifiers` in the plugin +Framework. + +## SDKv2 +In SDKv2, plan modification is implemented with the `CustomizeDiff` field on the `schema.Resource` struct. The following +code shows a basic implementation of plan modification with SDKv2. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + CustomizeDiff: CustomizeDiffFunc, + /* ... */ +``` + +## Framework + +In the Framework, you implement plan modification either by implementing the `ResourceWithModifyPlan` interface on your +resource type, or by implementing `PlanModifiers` on individual attributes. This page demonstrates how to implement the +plan modifiers on individual attributes. Refer to +[Attributes - Force New](/terraform/plugin/framework/migrating/attributes-blocks/force-new) in this guide for further information on how +to implement a plan modifier on an attribute. + +The `ResourceWithModifyPlan` interface requires a `ModifyPlan` function. + +The following code shows how you can implement the `ModifyPlan` function on your `resource.Resource` type. + +```go +func (r *resourceExample) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + /* ... */ +} +``` +## Migration Notes +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2, you implement plan modification with the `CustomizeDiff` field on the `schema.Resource` struct. In the +Framework, you can either implement plan modification for the entire resource by implementing the +`ResourceWithModifyPlan` interface, or on individual attributes by adding `PlanModifiers` to your resource attributes. +- Many existing CustomizeDiff implementations may be better suited to implementation as attribute plan modifiers in the +Framework. + +## Example + +### SDKv2 + +In SDKv2, the `CustomizeDiff` field on the `schema.Resource` struct refers to a function or set of functions that +implement plan modification. + +The following example shows the use of `CustomizeDiff` to keep two attributes +synchronized (i.e., ensure that they contain the same value) with SDKv2. + +```go +func resourcePassword() *schema.Resource { + /* ... */ + customizeDiffFuncs = append(customizeDiffFuncs, planSyncIfChange("attribute_one", "attribute_two")) + customizeDiffFuncs = append(customizeDiffFuncs, planSyncIfChange("attribute_two", "attribute_one")) + + return &schema.Resource{ + /* ... */ + CustomizeDiff: customdiff.All( + customizeDiffFuncs..., + ), + } +} +``` + +The following example shows the implementation of the `planSyncIfChange` function. + +```go +func planSyncIfChange(key, keyToSync string) func(context.Context, *schema.ResourceDiff, interface{}) error { + return customdiff.IfValueChange( + key, + func(ctx context.Context, oldValue, newValue, meta interface{}) bool { + return oldValue != newValue + }, + func(_ context.Context, d *schema.ResourceDiff, _ interface{}) error { + return d.SetNew(keyToSync, d.Get(key)) + }, + ) +} +``` + +### Framework + +Many existing `CustomizeDiff` implementations would be better suited to migration to attribute plan modifiers in the +Framework. This code shows the implementation using attribute plan modifiers with the Framework. + +```go +func exampleSchema() schema.Schema { + return schema.Schema{ + /* ... */ + Attributes: map[string]schema.Attribute{ + /* ... */ + "attribute_one": schema.BoolAttribute{ + /* ... */ + PlanModifiers: []planmodifier.Bool{ + planmodifiers.SyncAttributePlanModifier(), + /* ... */ + }, + }, + + "attribute_two": schema.BoolAttribute{ + /* ... */ + PlanModifiers: []planmodifier.Bool{ + planmodifiers.SyncAttributePlanModifier(), + /* ... */ + }, + }, +``` + +The following shows an implementation of `SyncAttributePlanModifier` in the Framework. + +```go +func SyncAttributePlanModifier() planmodifier.Bool { + return &syncAttributePlanModifier{} +} + +type syncAttributePlanModifier struct { +} + +func (d *syncAttributePlanModifier) Description(ctx context.Context) string { + return "Ensures that attribute_one and attribute_two attributes are kept synchronised." +} + +func (d *syncAttributePlanModifier) MarkdownDescription(ctx context.Context) string { + return d.Description(ctx) +} + +func (d *syncAttributePlanModifier) PlanModifyBool(ctx context.Context, req planmodifier.BoolRequest, resp *planmodifier.BoolResponse) { + var attributeOne types.Bool + diags := req.Plan.GetAttribute(ctx, path.Root("attribute_one"), &attributeOne) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + var attributeTwo types.Bool + req.Plan.GetAttribute(ctx, path.Root("attribute_two"), &attributeTwo) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + if !attributeOne.IsNull() && !attributeTwo.IsNull() && (attributeOne.ValueBool() != attributeTwo.ValueBool()) { + resp.Diagnostics.AddError( + "attribute_one and attribute_two are both configured with different values", + "attribute_one is deprecated, use attribute_two instead", + ) + return + } + + // Default to true for both attribute_one and attribute_two when both are null. + if attributeOne.IsNull() && attributeTwo.IsNull() { + resp.PlanValue = types.BoolValue(true) + return + } + + // Default to using value for attribute_two if attribute_one is null + if attributeOne.IsNull() && !attributeTwo.IsNull() { + resp.PlanValue = numericConfig + return + } + + // Default to using value for attribute_one if attribute_two is null + if !attributeOne.IsNull() && attributeTwo.IsNull() { + resp.PlanValue = numberConfig + return + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/state-upgrade.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/state-upgrade.mdx new file mode 100644 index 0000000000..7b5c05b331 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/state-upgrade.mdx @@ -0,0 +1,158 @@ +--- +page_title: State upgrading +description: >- + Learn how to Migrate resource StateUpgraders in SDKv2 to UpgradeState in the + plugin framework. State upgraders let users update resources provisioned with + old schema configurations. +--- + +# State upgraders + +When you update a resource's implementation in your provider, some changes may not be compatible with old versions. You +can create state upgraders to automatically migrate resources provisioned with old schema configurations. Refer to +[State Upgrade](/terraform/plugin/framework/resources/state-upgrade) in the Framework documentation for details. + +This page explains how to migrate resource `StateUpgraders` in SDKv2 to `UpgradeState` in the plugin Framework. + +## SDKv2 + +In SDKv2, state upgraders are defined by populating the `StateUpgraders` field on the `schema.Resource` struct. Refer +to [State Migration](/terraform/plugin/sdkv2/resources/state-migration) in the SDKv2 documentation for details. + +The following code shows a basic implementation of the `stateUpgraders` field in SDKv2. + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + StateUpgraders: []schema.StateUpgrader{ + { + Version: int, + Type: cty.Type, + Upgrade: StateUpgradeFunc, + }, + /* ... */ +``` + +## Framework + +In the Framework, you implement the `ResourceWithUpgradeState` interface on your resource to upgrade your +resource's state when required. + +The following code shows how you define an `UpgradeState` function with the Framework. + +```go +func (r *resourceExample) UpgradeState(context.Context) map[int64]resource.StateUpgrader { + return map[int64]resource.StateUpgrader{ + 0: { + PriorSchema: *schema.Schema, + StateUpgrader: func(context.Context, UpgradeStateRequest, *UpgradeStateResponse), + }, + /* ... */ +``` + +The `UpgradeState` function returns a map from state versions to structs that implement state upgrade from the given +version to the latest version. + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- In SDKv2, you implement state upgraders populating the `StateUpgraders` field on the `schema.Resource` struct. In the +Framework, you define an `UpgradeState` function on the resource itself. +- In SDKv2, state upgraders apply each state upgrader in turn. For example, version 0 => version 1, version 1 => +version 2. In the Framework, each `UpgradeState` function is required to perform all of the necessary transformations in +a single step. For example, version 0 => version 2, version 1 => version 2. + +## Example + +### SDKv2 + +In SDKv2 the `schema.Resource` struct has a `StateUpgraders` field that holds `[]schema.StateUpgrader` struct(s). + +The following example from the shows the state upgrade functions for the `example_resource` +resource with SDKv2. + +```go +func exampleResource() *schema.Resource { + return &schema.Resource{ + Schema: exampleSchemaV2(), + SchemaVersion: 2, + StateUpgraders: []schema.StateUpgrader{ + { + Version: 0, + Type: exampleResourceV0().CoreConfigSchema().ImpliedType(), + Upgrade: exampleResourceStateUpgradeV0, + }, + { + Version: 1, + Type: exampleResourceV1().CoreConfigSchema().ImpliedType(), + Upgrade: exampleResourceStateUpgradeV1, + }, + }, + /* ... */ +``` + +The following example shows the implementation of the `exampleResourceStateUpgradeV0` function with SDKv2. + +```go +func exampleResourceStateUpgradeV0(_ context.Context, rawState map[string]interface{}, _ interface{}) (map[string]interface{}, error) { + if rawState == nil { + return nil, fmt.Errorf("example resource state upgrade failed, state is nil") + } + + rawState["example_attribute"] = "value" + + return rawState, nil +} +``` + +### Framework + +The following shows the same section of provider code after the migration. + +This code implements the `ResourceWithUpgradeState` interface on the `exampleResource` type by defining an +`UpgradeState` function. The `UpgradeState` function returns a map from each state version (int64) to a +`ResourceStateUpgrader` struct. + +```go +func (r *exampleResource) UpgradeState(context.Context) map[int64]resource.StateUpgrader { + schemaV0 := exampleSchemaV0() + schemaV1 := exampleSchemaV1() + + return map[int64]resource.StateUpgrader{ + 0: { + PriorSchema: &schemaV0, + StateUpgrader: upgradeExampleResourceStateV0toV2, + }, + 1: { + PriorSchema: &schemaV1, + StateUpgrader: upgradeExampleResourceStateV1toV2, + }, + } +} +``` + +This code implements the `upgradeExampleResourceStateV0toV2` state upgrade function. + +```go +func upgradeExampleResourceStateV0toV2(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { + type modelV0 struct { + ID types.String `tfsdk:"id"` + } + + var exampleDataV0 modelV0 + + resp.Diagnostics.Append(req.State.Get(ctx, &exampleDataV0)...) + if resp.Diagnostics.HasError() { + return + } + + exampleDataV2 := exampleModelV2{ + ID: exampleDataV0.ID, + } + + exampleDataV2.ExampleAttribute = types.StringValue("value") + + diags := resp.State.Set(ctx, exampleDataV2) + resp.Diagnostics.Append(diags...) +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/timeouts.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/timeouts.mdx new file mode 100644 index 0000000000..a7a8d76c2b --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/resources/timeouts.mdx @@ -0,0 +1,136 @@ +--- +page_title: Timeouts +description: >- + Learn how to migrate timeouts from SDKv2 to the framework. +--- + +# Timeouts + +The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in CRUD functions. + +## Specifying Timeouts in Configuration + +Timeouts can be defined using either nested blocks or nested attributes. + +If you are writing a new provider using [terraform-plugin-framework](https://github.com/hashicorp/terraform-plugin-framework) +then we recommend using nested attributes. + +If you are migrating a provider from SDKv2 to the Framework and +you are already using timeouts you can either continue to use block syntax, or switch to using nested attributes. +However, switching to using nested attributes will require that practitioners that are using your provider update their +Terraform configuration. + +#### Block + +If your configuration is using a nested block to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts { + create = "60m" + } +} +``` + +Import the [timeouts module](https://github.com/hashicorp/terraform-plugin-framework-timeouts). + +```go +import ( + /* ... */ + "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts" +) +```` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (t *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + + Blocks: map[string]schema.Block{ + "timeouts": timeouts.Block(ctx, timeouts.Opts{ + Create: true, + }), + }, +``` + +#### Attribute + +If your configuration is using nested attributes to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts = { + create = "60m" + } +} +``` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (t *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + /* ... */ + "timeouts": timeouts.Attributes(ctx, timeouts.Opts{ + Create: true, + }), + }, +``` + +## Updating Models + +In functions in which the config, state or plan is being unmarshalled, for instance, the `Create` function, the model +will need to be updated. + +```go +func (e *exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleResourceData + + diags := req.Plan.Get(ctx, &data) + resp.Diagnostics.Append(diags...) +``` + +Modify the `exampleResourceData` model to include a field for timeouts using a [`timeouts.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts#Value) type. + +```go +type exampleResourceData struct { + /* ... */ + Timeouts timeouts.Value `tfsdk:"timeouts"` +``` + +## Accessing Timeouts in CRUD Functions + +Once the model has been populated with the config, state or plan the duration of the timeout can be accessed by calling +the appropriate helper function (e.g., [`timeouts.Create`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts#Value.Create)) and then used to configure timeout behaviour, for instance: + +```go +func (e *exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleResourceData + + diags := req.Plan.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + createTimeout, diags := data.Timeouts.Create(ctx, 20*time.Minute) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + ctx, cancel := context.WithTimeout(ctx, createTimeout) + defer cancel() + + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/schema/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/schema/index.mdx new file mode 100644 index 0000000000..5afd215f2e --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/schema/index.mdx @@ -0,0 +1,140 @@ +--- +page_title: Migrating schema +description: >- + Learn how to migrate schema from SDKv2 to the plugin framework. +--- + +# Migrating schema + +Providers, resources, and data sources all use schema to define their attributes and behavior. Schemas specify the +constraints of Terraform configuration blocks and how the provider, resource, or data source behaves. Refer to +[Schemas](/terraform/plugin/framework/handling-data/schemas) in the Framework documentation for details. + +This page explains the differences between the schema used by SDKv2 and the Framework. We also recommend reviewing these additional schema guides throughout the migration: +/attributes-blocks/ +- [Attributes](/terraform/plugin/framework/migrating/attributes-blocks/attribute-schema) where the schema defines practitioner or provider data associated with a value and type. +- [Attribute types](/terraform/plugin/framework/migrating/attributes-blocks/types) where the schema defines the expected data structure and syntax. +- [Attribute fields](/terraform/plugin/framework/migrating/attributes-blocks/fields) where the behaviors of an attribute are defined, such as `Required`, `Optional`, `Computed`, and `Sensitive`. +- [Attribute defaults](/terraform/plugin/framework/migrating/attributes-blocks/default-values) where the schema defines a value for an attribute which should be automatically included in a Terraform plan if it is not configured by the practitioner. +- [Attributes without in-place updates](/terraform/plugin/framework/migrating/attributes-blocks/force-new) where the schema defines an attribute that requires resource replacement if the value is updated. +- [Attribute predefined validations](/terraform/plugin/framework/migrating/attributes-blocks/validators-predefined) and [custom validations](/terraform/plugin/framework/migrating/attributes-blocks/validators-custom) where the schema defines the syntax, constraints, or encoding expectations of a value. +- [Blocks](/terraform/plugin/framework/migrating/attributes-blocks/attribute-schema) and [computed blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks-computed) where the schema defines structural configuration sections of data, typically with nested attributes or further blocks. + + +## Schema Structs + +SDKv2 uses `schema.Schema` structs to define the structure, type, and behavior of values drawn from configuration, +state, or plan data. The same `schema.Schema` struct type is used for providers, resources, and data sources. The +schema struct is returned by the function that creates the provider, resource, or data source in question. + +The Framework uses `schema.Schema` structs for providers, resources, and data sources. The schema struct is returned by +a `Schema` method you define for the provider and each resource type and data source type. Refer to +[Framework](#framework) for details. + +## SDKv2 + +The following code shows basic implementations using `schema.Schema` structs to define schemas for providers, resources, +and data sources with SDKv2. + +```go +func New() *schema.Provider { + return &schema.Provider{ + Schema: map[string]*schema.Schema{}, + /* ... */ + } +} +``` + +```go +func resourceExample() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{}, + /* ... */ + } +} +``` + +```go +func dataSourceExample() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{}, + /* ... */ + } +} +``` + +SDKv2 defines the `schema.Schema` struct as follows. + +```go +type Schema struct { + Type ValueType + ConfigMode SchemaConfigMode + Required bool + Optional bool + Computed bool + ForceNew bool + DiffSuppressFunc SchemaDiffSuppressFunc + DiffSuppressOnRefresh bool + Default interface{} + DefaultFunc SchemaDefaultFunc + Description string + StateFunc SchemaStateFunc + Elem interface{} + MaxItems int + MinItems int + Set SchemaSetFunc + ConflictsWith []string + ExactlyOneOf []string + AtLeastOneOf []string + RequiredWith []string + Deprecated string + ValidateFunc SchemaValidateFunc + ValidateDiagFunc SchemaValidateDiagFunc + Sensitive bool +} +``` + +## Framework + +In the Framework, you implement `Schema` method for your provider, resources, and data sources. This function is +required by the `provider.Provider`, `resource.Resource`, and `datasource.DataSource` interfaces, respectively. + +The following code shows how you define the `Schema` method for your provider, resources, and data sources. + +```go +func (p *ExampleCloudProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{/* ... */} +} +``` + +```go +func (r *resourceExample) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{/* ... */} +} +``` + +```go +func (r *dataSourceExample) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + resp.Schema = schema.Schema{/* ... */} +} +``` + +You use the `Attributes` field to define attributes for your provider, resources, and data sources. You use the +`Blocks` field to define named blocks. + +## Migration Notes + +Remember the following differences between SDKv2 and the Framework when completing the migration. + +- SDKv2 uses `schema.Schema` structs to define the provider, resources, and data sources. The Framework uses concept-specific +`schema.Schema` structs instead. +- In SDKv2, schema structs are returned when a provider, resource, or data type is created. In the Framework, the +provider and each resource and data type have a `Schema` method that returns the schema. +- In SDKv2, schema structs have a `Set` field which can be populated with a `SchemaSetFunc` which is used for hashing. +In the Framework, this is not required and does not need to be migrated. +- The `schema.Schema` struct includes fields that you use to define +[attributes](/terraform/plugin/framework/migrating/attributes-blocks/attribute-schema) and +[blocks](/terraform/plugin/framework/migrating/attributes-blocks/blocks) for your provider and each resource +and data source. +- When you populate the `Version` field in `schema.Schema` for a resource in the Framework, copy the `Version` +field in `schema.Schema` from the SDKv2 version of that resource. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/testing.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/testing.mdx new file mode 100644 index 0000000000..79eb6ea741 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/migrating/testing.mdx @@ -0,0 +1,230 @@ +--- +page_title: Testing migration +description: >- + Learn how to write tests that verify that migrating from SDKv2 to the + Framework does not affect provider behavior. +--- + +# Testing + +During migration, you should [write tests](#testing-migration) to verify that the behaviour of your provider has not +been altered by the migration itself. You will also need to [update](#provider-factories) your tests too. + + + + If [muxing](/terraform/plugin/framework/migrating/mux), only migrated resources and data sources require immediate updates of testing code. + + + +## Testing Migration + +During migration, we recommend writing tests to verify that switching from SDKv2 to the Framework has not affected your +provider's behavior. These tests use identical configuration. The first test step applies a plan and generates state +with the SDKv2 version of the provider. The second test step generates a plan with the Framework version of the provider +and verifies that the plan is a no-op, indicating that migrating to the framework has not altered behaviour. + +Use the `ExternalProviders` field within a `resource.TestStep` to specify the configuration of a specific provider to +use during each test step. You can specify a version of the provider built on SDKv2 during the first test step, and +then you can use the version of the provider built on the Framework in subsequent test step(s) to verify that Terraform +CLI does not detect any planned changes. + +You must also update the [provider factories](#provider-factories) to use +the Framework. + +### Example + +These examples show how you can use external providers to generate state with a previous version of the provider +and then verify that there are no planned changes after migrating to the Framework. + +- The first `TestStep` uses `ExternalProviders` to cause `terraform apply` to execute with a previous version of the +provider, which is built on SDKv2. +- The second `TestStep` uses `ProtoV5ProviderFactories` so that the test uses the provider code contained within the +provider repository. The second step uses `ConfigPlanChecks` to verify that a no-op plan is generated. + +#### Managed Resource + +In this example configuration, all managed resource attribute values are compared between the SDK and Framework implementations: + +```go +func TestResource_UpgradeFromVersion(t *testing.T) { + /* ... */ + resource.Test(t, resource.TestCase{ + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "": { + VersionConstraint: "", + Source: "hashicorp/", + }, + }, + Config: `resource "provider_resource" "example" { + /* ... */ + }`, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("provider_resource.example", "", ""), + /* ... */ + ), + }, + { + ProtoV5ProviderFactories: protoV5ProviderFactories(), + Config: `resource "provider_resource" "example" { + /* ... */ + }`, + // ConfigPlanChecks is a terraform-plugin-testing feature. + // If acceptance testing is still using terraform-plugin-sdk/v2, + // use `PlanOnly: true` instead. When migrating to + // terraform-plugin-testing, switch to `ConfigPlanChecks` or you + // will likely experience test failures. + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} +``` + +#### Data Source + + + +Prefer individually testing all attribute values of a data source instead of this testing pattern. Testing individual attribute values will catch unexpected data handling changes after migration and prevent any expected introduction of new attributes from causing test failures when using this pattern. + + + +Since data sources are refreshed every Terraform plan and do not use prior state during planning, additional configuration of a separate managed resource or output value is required to track value differences. The [`terraform_data` managed resource](/terraform/language/resources/terraform-data) is one option that is implicitly available for configurations in Terraform 1.4 and later. If testing on older versions of Terraform is required, use the [`null_resource` managed resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) with an associated `ExternalProviders` step configuration instead. + +In this example configuration, all data source attribute values are compared between the SDK and Framework implementations: + +```go +func TestDataSource_UpgradeFromVersion(t *testing.T) { + /* ... */ + resource.Test(t, resource.TestCase{ + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "": { + VersionConstraint: "", + Source: "hashicorp/", + }, + }, + Config: `data "provider_datasource" "test" { + /* ... */ + } + + resource "terraform_data" "test" { + input = data.provider_datasource.test + }`, + }, + { + ProtoV5ProviderFactories: protoV5ProviderFactories(), + Config: `data "provider_datasource" "test" { + /* ... */ + } + + resource "terraform_data" "test" { + input = data.provider_datasource.test + }`, + // ConfigPlanChecks is a terraform-plugin-testing feature. + // If acceptance testing is still using terraform-plugin-sdk/v2, + // use `PlanOnly: true` instead. When migrating to + // terraform-plugin-testing, switch to `ConfigPlanChecks` or you + // will likely experience test failures. + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} +``` + +## Provider Factories + +Existing tests should require minimal updates when migrating from SDKv2 to the Framework. The only critical change +relates to the provider factories that create the provider during the test case. Refer to [Acceptance Tests - Specify Providers](/terraform/plugin/framework/acctests#specify-providers) in the Framework +documentation for details. + +We also recommend writing tests that verify that switching from SDKv2 to the Framework has not affected provider +behavior. Refer to [Testing Migration](#testing-migration) for details. + +### SDKv2 + +In SDKv2, you use the `ProviderFactories` field on the `resource.TestCase` struct to obtain `schema.Provider`. + +The following example shows a test written in SDKv2. + +```go +resource.UnitTest(t, resource.TestCase{ + ProviderFactories: testProviders(), +``` + +### Framework + +In the Framework, use either the `ProtoV5ProviderFactories` or `ProtoV6ProviderFactories` field on the +`resource.TestCase` struct to obtain the `provider.Provider`, depending on the +[Terraform Plugin Protocol](/terraform/plugin/how-terraform-works#terraform-plugin-protocol) version your provider is using. + +The following example shows how you can write a test in the Framework for a Provider that uses protocol version 6. + +```go +resource.UnitTest(t, resource.TestCase{ + ProtoV6ProviderFactories: protoV6ProviderFactories(), +``` + +### Example + +#### SDKv2 + +The following code sample shows how to define provider factories within a test case when using SDKv2. + +```go +func TestDataSource_Exmple(t *testing.T) { + /* ... */ + resource.UnitTest(t, resource.TestCase{ + ProviderFactories: testProviders(), + /* ... */ + }) +} +``` + +The following shows how to generate provider factories when using SDKv2. + +```go +func testProviders() map[string]func() (*schema.Provider, error) { + return map[string]func() (*schema.Provider, error){ + "example": func() (*schema.Provider, error) { return New(), nil }, + } +} +``` + +#### Framework + +The following shows how to define provider factories within a test case when using the Framework. + +```go +func TestDataSource_Example(t *testing.T) { + /* ... */ + + resource.UnitTest(t, resource.TestCase{ + ProtoV5ProviderFactories: protoV5ProviderFactories(), + /* ... */ + }) +} +``` + +The following shows how to generate provider factories when using +the Framework. The call to `New` returns an instance of the provider. Refer to +[Provider Definition](/terraform/plugin/framework/migrating/providers#provider-definition) in this guide for details. + +```go +func protoV5ProviderFactories() map[string]func() (tfprotov5.ProviderServer, error) { + return map[string]func() (tfprotov5.ProviderServer, error){ + "example": providerserver.NewProtocol5WithError(New()), + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/provider-servers.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/provider-servers.mdx new file mode 100644 index 0000000000..a8d07bd5e9 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/provider-servers.mdx @@ -0,0 +1,88 @@ +--- +page_title: Provider servers +description: >- + Learn how to implement a provider server in the Terraform plugin + framework. Provider servers are plugins that allow Terraform to interact with + APIs. +--- + +# Provider servers + +Before a [provider](/terraform/plugin/framework/providers) can be used with Terraform, it must implement a [gRPC server](https://grpc.io) that supports Terraform-specific connection and handshake handling on startup. The server must then implement the [Terraform Plugin Protocol](/terraform/plugin/how-terraform-works#terraform-plugin-protocol). + +The framework handles the majority of the server implementation details, however it is useful from a provider developer perspective to understand the provider server details at least at a high level. + +## Protocol Version + +The [Terraform Plugin Protocol](/terraform/plugin/how-terraform-works#terraform-plugin-protocol) defines the compatibility between Terraform CLI and the underlying provider. It is versioned, with newer versions implementing support for enhanced provider functionality but also requiring newer Terraform CLI versions. The framework implements two versions of the protocol. + +* **Version 6**: The latest and recommended version, [protocol version 6](/terraform/plugin/how-terraform-works#protocol-version-6) implements enhanced provider functionality and requires Terraform CLI 1.0 or later. If [combining providers with terraform-plugin-sdk provider code](/terraform/plugin/mux/combining-protocol-version-6-providers), such as [migrating to the framework](/terraform/plugin/framework/migrating), then Terraform CLI 1.1 or later is required. +* **Version 5**: The prior version, [protocol version 5](/terraform/plugin/how-terraform-works#protocol-version-5) implements base provider functionality and requires Terraform CLI 0.12 or later. + +Provider developers must choose either version 6 or version 5 and should consistently use that one version across implementations. + +## Implementations + +Terraform and provider developers have multiple ways to interact with the provider server implementation: + +* **Production**: Terraform CLI expects a binary that starts the provider server on process startup and stops the provider when called. +* **Developer Overrides Testing**: The [CLI configuration file](/terraform/cli/config/config-file#development-overrides-for-provider-developers) maps provider addresses to locally built binaries, which then operate similar to production. +* **Acceptance Testing**: The [acceptance testing framework](/terraform/plugin/framework/acctests) maps provider names to functions that directly start the provider server and will automatically stop the provider between test steps. +* **Debugging**: Provider developers, typically via a code editor or debugger tool, manually start a provider server for [debugging](/terraform/plugin/framework/debugging) which Terraform CLI is then configured to use rather than a normal binary. + +### Production and Developer Overrides + +Go language programs implement startup logic via a `main` function. Conventionally, this is done in a `main.go` file at the root of a project. The `main` function must eventually call the framework functionality for managing provider servers in the [`providerserver` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/providerserver). + +An example `main.go` file for starting a protocol version 6 provider server: + +```go +package main + +import ( + "context" + "flag" + "log" + + "github.com/example-namespace/terraform-provider-example/internal/provider" + "github.com/hashicorp/terraform-plugin-framework/providerserver" +) + +var ( + // Example version string that can be overwritten by a release process + version string = "dev" +) + +func main() { + opts := providerserver.ServeOpts{ + // TODO: Update this string with the published name of your provider. + Address: "registry.terraform.io/example-namespace/example", + } + + err := providerserver.Serve(context.Background(), provider.New(version), opts) + + if err != nil { + log.Fatal(err.Error()) + } +} +``` + +To configure the provider server for protocol version 5, set the [`providerserver.ServeOpts` type `ProtocolVersion` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/providerserver#ServeOpts.ProtocolVersion) to `5`: + +```go +opts := providerserver.ServeOpts{ + // TODO: Update this string with the published name of your provider. + Address: "registry.terraform.io/example-namespace/example", + ProtocolVersion: 5, +} +``` + +It is also possible to combine provider server implementations, such as migrating resources and data sources individually from [terraform-plugin-sdk/v2](/terraform/plugin/sdkv2) to the framework. This advanced use case would alter the `main.go` code further. Refer to the [Combining and Translating Providers](/terraform/plugin/mux) page for implementation details. + +### Acceptance Testing + +Refer to the [acceptance testing](/terraform/plugin/framework/acctests) page for implementation details. + +### Debugging + +Refer to the [debugging](/terraform/plugin/framework) page for implementation details. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/index.mdx new file mode 100644 index 0000000000..131047f550 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/index.mdx @@ -0,0 +1,346 @@ +--- +page_title: Providers +description: >- + Learn how to implement a provider in the Terraform plugin framework. + Providers, wrapped by a provider server, are plugins that allow Terraform to + interact with APIs. +--- + +# Providers + +Providers are Terraform plugins that define [resources](/terraform/plugin/framework/resources) and [data sources](/terraform/plugin/framework/data-sources) for practitioners to use. Providers are wrapped by a [provider server](/terraform/plugin/framework/provider-servers) for interacting with Terraform. + +This page describes the basic implementation details required for defining a provider. Further documentation is available for deeper provider concepts: + +- [Configure data sources](/terraform/plugin/framework/data-sources/configure) with provider-level data types or clients. +- [Configure resources](/terraform/plugin/framework/resources/configure) with provider-level data types or clients. +- [Configure ephemeral resources](/terraform/plugin/framework/ephemeral-resources/configure) with provider-level data types or clients. +- [Validate](/terraform/plugin/framework/providers/validate-configuration) practitioner configuration against acceptable values. + +## Define Provider Type + +Implement the [provider.Provider interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider). Each of the methods described in more detail below. + +In this example, a provider implementation is scaffolded: + +```go +// Ensure the implementation satisfies the provider.Provider interface. +var _ provider.Provider = &ExampleCloudProvider{} + +type ExampleCloudProvider struct{ + // Version is an example field that can be set with an actual provider + // version on release, "dev" when the provider is built and ran locally, + // and "test" when running acceptance testing. + Version string +} + +// Metadata satisfies the provider.Provider interface for ExampleCloudProvider +func (p *ExampleCloudProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = // provider specific implementation +} + +// Schema satisfies the provider.Provider interface for ExampleCloudProvider. +func (p *ExampleCloudProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + // Provider specific implementation. + }, + } +} + +// Configure satisfies the provider.Provider interface for ExampleCloudProvider. +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + // Provider specific implementation. +} + +// DataSources satisfies the provider.Provider interface for ExampleCloudProvider. +func (p *ExampleCloudProvider) DataSources(ctx context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + // Provider specific implementation + } +} + +// Resources satisfies the provider.Provider interface for ExampleCloudProvider. +func (p *ExampleCloudProvider) Resources(ctx context.Context) []func() resource.Resource { + return []func() resource.Resource{ + // Provider specific implementation + } +} +``` + +Conventionally, many providers also create a helper function named `New` which can simplify [provider server](/terraform/plugin/framework/provider-servers) implementations. + +```go +func New(version string) func() provider.Provider { + return func() provider.Provider { + return &ExampleCloudProvider{ + Version: version, + } + } +} +``` + +### Metadata Method + +The [`provider.Provider` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Metadata) defines information about the provider itself, such as its type name and version. This information is used to simplify creating data sources and resources. + +In this example, the provider type name is set to `examplecloud`: + +```go +func (p *ExampleCloudProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "examplecloud" +} +``` + +### Schema Method + +The [`provider.Provider` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Schema) defines a [schema](/terraform/plugin/framework/schemas) describing what data is available in the provider's configuration. This configuration block is used to offer practitioners the opportunity to supply values to the provider and configure its behavior, rather than needing to include those values in every resource and data source. It is usually used to gather credentials, endpoints, and the other data used to authenticate with the API, but it is not limited to those uses. + +During the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`GetProviderSchema`](/terraform/plugin/framework/internals/rpcs#getproviderschema-rpc) RPC, in which the framework calls the [`provider.Provider` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Schema). + +In this example, a sample configuration and schema definition are provided: + +```go +// Example Terraform configuration: +// +// provider "examplecloud" { +// api_token = "v3rYs3cr3tt0k3n" +// endpoint = "https://example.com/" +// } + +func (p *ExampleCloudProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "api_token": schema.StringAttribute{ + Optional: true, + }, + "endpoint": schema.StringAttribute{ + Optional: true, + }, + }, + } +} +``` + +If the provider does not accept practitioner Terraform configuration, leave the method defined, but empty. + +### Configure Method + +The [`provider.Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure) handles the configuration of any provider-level data or clients. These configuration values may be from the practitioner Terraform configuration, environment variables, or other means such as reading vendor-specific configuration files. + +During the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC, in which the framework calls the [`provider.Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). + +This is the only chance the provider has to configure provider-level data or clients, so they need to be persisted if other data source or resource logic will need to reference them. Refer to the [Configure Data Sources](/terraform/plugin/framework/data-sources/configure) and [Configure Resources](/terraform/plugin/framework/resources/configure) pages for additional implementation details. + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can added into the [`provider.ConfigureResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ConfigureResponse.Diagnostics). + +In this example, the provider API token and endpoint are configured via environment variable or Terraform configuration: + +```go +type ExampleCloudProvider struct {} + +type ExampleCloudProviderModel struct { + ApiToken types.String `tfsdk:"api_token"` + Endpoint types.String `tfsdk:"endpoint"` +} + +func (p *ExampleCloudProvider) Schema(ctx context.Context, req provider.SchemaRequest, resp *provider.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "api_token": schema.StringAttribute{ + Optional: true, + }, + "endpoint": schema.StringAttribute{ + Optional: true, + }, + }, + } +} + +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + // Check environment variables + apiToken := os.Getenv("EXAMPLECLOUD_API_TOKEN") + endpoint := os.Getenv("EXAMPLECLOUD_ENDPOINT") + + var data ExampleCloudProviderModel + + // Read configuration data into model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + // Check configuration data, which should take precedence over + // environment variable data, if found. + if data.ApiToken.ValueString() != "" { + apiToken = data.ApiToken.ValueString() + } + + if data.Endpoint.ValueString() != "" { + endpoint = data.Endpoint.ValueString() + } + + if apiToken == "" { + resp.Diagnostics.AddError( + "Missing API Token Configuration", + "While configuring the provider, the API token was not found in "+ + "the EXAMPLECLOUD_API_TOKEN environment variable or provider "+ + "configuration block api_token attribute.", + ) + // Not returning early allows the logic to collect all errors. + } + + if endpoint == "" { + resp.Diagnostics.AddError( + "Missing Endpoint Configuration", + "While configuring the provider, the endpoint was not found in "+ + "the EXAMPLECLOUD_ENDPOINT environment variable or provider "+ + "configuration block endpoint attribute.", + ) + // Not returning early allows the logic to collect all errors. + } + + // Create data/clients and persist to resp.DataSourceData, resp.ResourceData, + // and resp.EphemeralResourceData as appropriate. +} +``` + +#### Unknown Values + +Not all values are guaranteed to be +[known](/terraform/plugin/framework/types#unknown) when `Configure` is called. +For example, if a practitioner interpolates a resource's unknown value into the block, +that value may show up as unknown depending on how the graph executes: + +```hcl +resource "random_string" "example" {} + +provider "examplecloud" { + api_token = random_string.example.result + endpoint = "https://example.com/" +} +``` + +In the example above, `random_string.example.result` is a read-only field on +`random_string.example` that won't be set until after `random_string.example` has been +applied. So the `Configure` method for the provider may report that the value +is unknown. You can choose how your provider handles this. If +some resources or data sources can be used without knowing that value, it may +be worthwhile to [emit a warning](/terraform/plugin/framework/diagnostics) and +check whether the value is set in resources and data sources before attempting +to use it. If resources and data sources can't provide any functionality +without knowing that value, it's often better to [return an +error](/terraform/plugin/framework/diagnostics), which will halt the apply. + +### Resources + +The [`provider.Provider` interface `Resources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Resources) returns a slice of [resources](/terraform/plugin/framework/resources). Each element in the slice is a function to create a new `resource.Resource` so data is not inadvertently shared across multiple, disjointed resource instance operations unless explicitly coded. Information such as the resource type name is managed by the `resource.Resource` implementation. + +The [`provider.Provider` interface `Resources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Resources) is called during execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the [`ValidateResourceConfig`](/terraform/plugin/framework/internals/rpcs#validateconfig-rpcs), [`ReadResource`](/terraform/plugin/framework/internals/rpcs#read-rpcs), [`PlanResourceChange`](/terraform/plugin/framework/internals/rpcs#planresourcechange-rpc) and [`ApplyResourceChange`](/terraform/plugin/framework/internals/rpcs#applyresourcechange-rpc) RPCs are sent. + +In this example, the provider implements a single resource: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + NewThingResource, + } +} + +// With the resource.Resource implementation +func NewThingResource() resource.Resource { + return &ThingResource{} +} + +type ThingResource struct {} +``` + +Use Go slice techniques to include large numbers of resources outside the provider `Resources` method code. + +In this example, the provider codebase implements multiple "services" which group their own resources: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + servicex.Resources..., + servicey.Resources..., + } +} + +// With the servicex implementation +package servicex + +var Resources = []func() resource.Resource { + NewThingResource, + NewWidgetResource, +} + +func NewThingResource() resource.Resource { + return &ThingResource{} +} + +type ThingResource struct {} + +func NewWidgetResource() resource.Resource { + return &WidgetResource{} +} + +type WidgetResource struct {} +``` + +### DataSources + +The [`provider.Provider` interface `DataSources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.DataSources) returns a slice of [data sources](/terraform/plugin/framework/data-sources). Each element in the slice is a function to create a new `datasource.DataSource` so data is not inadvertently shared across multiple, disjointed datasource instance operations unless explicitly coded. Information such as the datasource type name is managed by the `datasource.DataSource` implementation. + +The [`provider.Provider` interface `DataSources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.DataSources) is called during execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the [`ValidateDataResourceConfig`](/terraform/plugin/framework/internals/rpcs#validatedataresourceconfig-rpc) and [`ReadDataSource`](/terraform/plugin/framework/internals/rpcs#readdatasource-rpc) RPCs are sent. + +In this example, the provider implements a single data source: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) DataSources(_ context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + NewThingDataSource, + } +} + +// With the datasource.DataSource implementation +func NewThingDataSource() datasource.DataSource { + return &ThingDataSource{} +} + +type ThingDataSource struct {} +``` + +Use Go slice techniques to include large numbers of data sources outside the provider `DataSources` method code. + +In this example, the provider codebase implements multiple "services" which group their own datasources: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) DataSources(_ context.Context) []func() datasource.DataSource { + return []func() datasource.DataSource{ + servicex.DataSources..., + servicey.DataSources..., + } +} + +// With the servicex implementation +package servicex + +var DataSources = []func() datasource.DataSource { + NewThingDataSource, + NewWidgetDataSource, +} + +func NewThingDataSource() datasource.DataSource { + return &ThingDataSource{} +} + +type ThingDataSource struct {} + +func NewWidgetDataSource() datasource.DataSource { + return &WidgetDataSource{} +} + +type WidgetDataSource struct {} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/validate-configuration.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/validate-configuration.mdx new file mode 100644 index 0000000000..f59330f1c6 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/providers/validate-configuration.mdx @@ -0,0 +1,86 @@ +--- +page_title: Validate provider configuration +description: >- + Learn how to validate provider configurations with the Terraform plugin + framework. +--- + +# Validate provider configuration + +[Providers](/terraform/plugin/framework/providers) support validating an entire practitioner configuration in either declarative or imperative logic. Feedback, such as required syntax or acceptable combinations of values, is returned via [diagnostics](/terraform/plugin/framework/diagnostics). + +This page describes implementation details for validating entire provider configurations, typically referencing multiple attributes. Further documentation is available for other configuration validation concepts: + +- [Single attribute validation](/terraform/plugin/framework/validation#attribute-validation) is a schema-based mechanism for implementing attribute-specific validation logic. +- [Type validation](/terraform/plugin/framework/validation#type-validation) is a schema-based mechanism for implementing reusable validation logic for any attribute using the type. + +-> Configuration validation in Terraform occurs without provider configuration ("offline"), so therefore the provider `Configure` method will not have been called. To implement validation with a configured API client, use logic within the `Configure` method, which occurs during Terraform's planning phase. + +## ConfigValidators Method + +The [`provider.ProviderWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithConfigValidators) follows a similar pattern to attribute validation and allows for a more declarative approach. This enables consistent validation logic across multiple providers. Each validator intended for this interface must implement the [`provider.ConfigValidator` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ConfigValidator). + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ValidateProviderConfig`](/terraform/plugin/framework/internals/rpcs#validateproviderconfig-rpc) RPC, in which the framework calls the `ConfigValidators` method on providers that implement the [`provider.ProviderWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithConfigValidators). + +The [`terraform-plugin-framework-validators` Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) has a collection of common use case provider configuration validators in the [`providervalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/providervalidator). These use [path expressions](/terraform/plugin/framework/path-expressions) for matching attributes. + +This example will raise an error if a practitioner attempts to configure both `attribute_one` and `attribute_two`: + +```go +// Other methods to implement the provider.Provider interface are omitted for brevity +type ExampleCloudProvider struct {} + +func (p ExampleCloudProvider) ConfigValidators(ctx context.Context) []provider.ConfigValidator { + return []provider.ConfigValidator{ + providervalidator.Conflicting( + path.MatchRoot("attribute_one"), + path.MatchRoot("attribute_two"), + ), + } +} +``` + +## ValidateConfig Method + +The [`provider.ProviderWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithValidateConfig) is more imperative in design and is useful for validating unique functionality across multiple attributes that typically applies to a single provider. + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ValidateProviderConfig`](/terraform/plugin/framework/internals/rpcs#validateproviderconfig-rpc) RPC, in which the framework calls the `ValidateConfig` method on providers that implement the [`provider.ProviderWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ProviderWithValidateConfig). + +This example will raise a warning if a practitioner attempts to configure `attribute_one`, but not `attribute_two`: + +```go +// Other methods to implement the provider.Provider interface are omitted for brevity +type ExampleCloudProvider struct {} + +type ExampleCloudProviderModel struct { + AttributeOne types.String `tfsdk:"attribute_one"` + AttributeTwo types.String `tfsdk:"attribute_two"` +} + +func (p ExampleCloudProvider) ValidateConfig(ctx context.Context, req provider.ValidateConfigRequest, resp *provider.ValidateConfigResponse) { + var data ExampleCloudProviderModel + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + // If attribute_one is not configured, return without warning. + if data.AttributeOne.IsNull() || data.AttributeOne.IsUnknown() { + return + } + + // If attribute_two is not null, return without warning. + if !data.AttributeTwo.IsNull() { + return + } + + resp.Diagnostics.AddAttributeWarning( + path.Root("attribute_two"), + "Missing Attribute Configuration", + "Expected attribute_two to be configured with attribute_one. "+ + "The provider may return unexpected results.", + ) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/configure.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/configure.mdx new file mode 100644 index 0000000000..93dced950a --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/configure.mdx @@ -0,0 +1,104 @@ +--- +page_title: Configure resources +description: >- + Learn how to implement resource configuration with provider or client data in + the Terraform plugin framework. +--- + +# Configure resources + +[Resources](/terraform/plugin/framework/resources) may require provider-level data or remote system clients to operate correctly. The framework supports the ability to configure this data and/or clients once within the provider, then pass that information to resources by adding the `Configure` method. + +## Prepare Provider Configure Method + +Implement the [`provider.ConfigureResponse.ResourceData` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#ConfigureResponse.ResourceData) in the [`Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). This value can be set to any type, whether an existing client or vendor SDK type, a provider-defined custom type, or the provider implementation itself. It is recommended to use pointer types so that resources can determine if this value was configured before attempting to use it. + +During execution of the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC, in which the framework calls the [`provider.Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure). + +In this example, the Go standard library [`net/http.Client`](https://pkg.go.dev/net/http#Client) is configured in the provider, and made available for resources: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.ResourceData = &http.Client{/* ... */} +} +``` + +In this example, the code defines an `ExampleClient` type that is made available for resources: + +```go +type ExampleClient struct { + /* ... */ +} + +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.ResourceData = &ExampleClient{/* ... */} +} +``` + +In this example, the `ExampleCloudProvider` type itself is made available for resources: + +```go +// With the provider.Provider implementation +type ExampleCloudProvider struct { + /* ... */ +} + +func (p *ExampleCloudProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) { + resp.ResourceData = p +} +``` + +## Define Resource Configure Method + +Implement the [`resource.ResourceWithConfigure` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithConfigure) which receives the provider configured data from the [`Provider` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Configure) and saves it into the [`resource.Resource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource) implementation. + +The [`resource.ResourceWithConfigure` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithConfigure.Configure) is called during execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the [`ValidateResourceConfig`](/terraform/plugin/framework/internals/rpcs#validateresourceconfig-rpc) RPC is sent. Additionally, the [`resource.ResourceWithConfigure` interface `Configure` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithConfigure.Configure) is called during execution of the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands when the [`ReadResource`](/terraform/plugin/framework/internals/rpcs#readresource-rpc) RPC is sent. + +-> Note that Terraform calling the [`ValidateResourceConfig`](/terraform/plugin/framework/internals/rpcs#validateresourceconfig-rpc) RPC would not call the [`ConfigureProvider`](/terraform/plugin/framework/internals/rpcs#configureprovider-rpc) RPC first, so implementations need to account for that situation. Configuration validation in Terraform occurs without provider configuration ("offline"). + +In this example, the provider configured the Go standard library [`net/http.Client`](https://pkg.go.dev/net/http#Client) which the resource uses during `Read`: + +```go +// With the resource.Resource implementation +type ThingResource struct { + client *http.Client +} + +func (r *ThingResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + // Always perform a nil check when handling ProviderData because Terraform + // sets that data after it calls the ConfigureProvider RPC. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*http.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *http.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client +} + +func (r *ThingResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // Prevent panic if the provider has not been configured. + if r.client == nil { + resp.Diagnostics.AddError( + "Unconfigured HTTP Client", + "Expected configured HTTP client. Please report this issue to the provider developers.", + ) + + return + } + + httpResp, err := r.client.Get("https://example.com") + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/create.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/create.mdx new file mode 100644 index 0000000000..ed387bd0c8 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/create.mdx @@ -0,0 +1,176 @@ +--- +page_title: Create resources +description: >- + Learn how to implement resource creation in the Terraform plugin framework. +--- + +# Create resources + +Creation is part of the basic Terraform lifecycle for managing resources. During the [`terraform apply` command](/terraform/cli/commands/apply), Terraform calls the provider [`ApplyResourceChange`](/terraform/plugin/framework/internals/rpcs#applyresourcechange-rpc) RPC, in which the framework calls the [`resource.Resource` interface `Create` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Create). The request contains Terraform configuration and plan data. The response expects the applied Terraform state data, including any computed values. The data is defined by the [schema](/terraform/plugin/framework/handling-data/schemas) of the resource. + +Other resource lifecycle implementations include: + +- [Read](/terraform/plugin/framework/resources/read) resources by receiving Terraform prior state data, performing read logic, and saving refreshed Terraform state data. +- [Update](/terraform/plugin/framework/resources/update) resources in-place by receiving Terraform prior state, configuration, and plan data, performing update logic, and saving updated Terraform state data. +- [Delete](/terraform/plugin/framework/resources/delete) resources by receiving Terraform prior state data and performing deletion logic. + +## Define Create Method + +Implement the `Create` method by: + +1. [Accessing the data](/terraform/plugin/framework/accessing-values) from the [`resource.CreateRequest` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#CreateRequest). Most use cases should access the plan data in the [`resource.CreateRequest.Plan` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#CreateRequest.Plan). +1. Performing logic or external calls to create and/or run the resource. +1. [Writing state data](/terraform/plugin/framework/writing-state) into the [`resource.CreateResponse.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#CreateResponse.State). + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can added into the [`resource.CreateResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#CreateResponse.Diagnostics). + +In this example, the resource is setup to accept a configuration value that is sent in a service API creation call: + +```go +// ThingResource defines the resource implementation. +// Some resource.Resource interface methods are omitted for brevity. +type ThingResource struct { + // client is configured via a Configure method, which is not shown in this + // example for brevity. Refer to the Configure Resources documentation for + // additional details for setting up resources with external clients. + client *http.Client +} + +// ThingResourceModel describes the Terraform resource data model to match the +// resource schema. +type ThingResourceModel struct { + Name types.String `tfsdk:"name"` + Id types.String `tfsdk:"id"` +} + +// ThingResourceAPIModel describes the API data model. +type ThingResourceAPIModel struct { + Name string `json:"name"` + Id string `json:"id"` +} + +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + MarkdownDescription: "Name of the thing to be saved in the service.", + Required: true, + }, + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Service generated identifier for the thing.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + MarkdownDescription: "Manages a thing.", + } +} + +func (r ThingResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data ThingResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + // Convert from Terraform data model into API data model + createReq := ThingResourceAPIModel{ + Name: data.Name.ValueString(), + } + + httpReqBody, err := json.Marshal(createReq) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Create Resource", + "An unexpected error occurred while creating the resource create request. "+ + "Please report this issue to the provider developers.\n\n"+ + "JSON Error: "+err.Error(), + ) + + return + } + + // Create HTTP request + httpReq := http.NewRequestWithContext( + ctx, + http.MethodPost, + "http://example.com/things", + bytes.NewBuffer(httpReqBody), + ) + + // Send HTTP request + httpResp, err := d.client.Do(httpReq) + defer httpResp.Body.Close() + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Create Resource", + "An unexpected error occurred while attempting to create the resource. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Error: "+err.Error(), + ) + + return + } + + // Return error if the HTTP status code is not 200 OK + if httpResp.StatusCode != http.StatusOK { + resp.Diagnostics.AddError( + "Unable to Create Resource", + "An unexpected error occurred while attempting to create the resource. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Status: "+httpResp.Status, + ) + + return + } + + var createResp ThingResourceAPIModel + + err := json.NewDecoder(httpResp.Body).Decode(&createResp) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Create Resource", + "An unexpected error occurred while parsing the resource creation response. "+ + "Please report this issue to the provider developers.\n\n"+ + "JSON Error: "+err.Error(), + ) + + return + } + + // Convert from the API data model to the Terraform data model + // and set any unknown attribute values. + data.Id = types.StringValue(createResp.Id) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} +``` + +## Resource Identity + +Managed resources that support identity also need to set the identity data during `Create`, see the ["Identity" page](/terraform/plugin/framework/resources/identity#writing-identity) for more information. + +## Caveats + +Note these caveats when implementing the `Create` method: + +* An error is returned if the response state contains unknown values. Set all attributes to either null or known values in the response. +* An error is returned if the response state has the `RemoveResource()` method called. This method is not valid during creation. +* An error is returned unless every null or known value in the request plan is saved exactly as-is into the response state. Only unknown plan values can be modified. +* Any response errors will cause Terraform to mark the resource as tainted for recreation on the next Terraform plan. + +## Recommendations + +Note these recommendations when implementing the `Create` method: + +* Get request data from the Terraform plan data over configuration data as the schema or resource may include [plan modification](/terraform/plugin/framework/resources/plan-modification) logic which sets plan values. +* Return errors that signify there is an existing resource. Terraform practitioners expect to be notified if an existing resource needs to be imported into Terraform rather than created. This prevents situations where multiple Terraform configurations unexpectedly manage the same underlying resource. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/default.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/default.mdx new file mode 100644 index 0000000000..5254d5c5b2 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/default.mdx @@ -0,0 +1,104 @@ +--- +page_title: Default values +description: >- + Learn how to set default values for resource attributes with the Terraform + plugin framework. +--- + +# Default values + +After [validation](/terraform/plugin/framework/validation) and before applying configuration changes, Terraform generates a plan that describes the expected values and behaviors of those changes. Resources can then tailor the plan to set default values on computed resource attributes that are null in the configuration. + +A Default can _only_ be added to a resource schema attribute. + +## When is a Default set? + +A Default is set during the [planning process](/terraform/plugin/framework/resources/plan-modification#plan-modification-process), immediately prior to the framework marking computed attributes that are null in the configuration as unknown in the plan. + +## Attribute Default + +You can supply the attribute type `Default` field with a default for that attribute. For example: + +```go +// Typically within the schema.Schema returned by Schema() for a resource. +schema.StringAttribute{ + // ... other Attribute configuration ... + + Default: stringdefault.StaticString("str"), +} + +schema.SetAttribute{ + // ... other Attribute configuration ... + + Default: setdefault.StaticValue( + types.SetValueMust( + types.StringType, + []attr.Value{ + types.StringValue("str"), + }, + ), + ), +}, +``` + +If defined, a default is applied to the current attribute providing that the attribute is null in the configuration. If any nested attributes define a default, then those are applied afterwards. Any default that returns an error will prevent Terraform from applying further defaults of that attribute as well as any nested attribute defaults. + +### Common Use Case Attribute Defaults + +The framework implements static value defaults in the typed packages under `resource/schema/`: + +| Schema Type | Built-In Default Functions | +|---|---| +| [`schema.BoolAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#BoolAttribute) | [`resource/schema/booldefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault) | +| [`schema.DynamicAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#DynamicAttribute) | [`resource/schema/dynamicdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/dynamicdefault) | +| [`schema.Float32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Float32Attribute) | [`resource/schema/float32default` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float32default) | +| [`schema.Float64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Float64Attribute) | [`resource/schema/float64default` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/float64default) | +| [`schema.Int32Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Int32Attribute) | [`resource/schema/int32default` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int32default) | +| [`schema.Int64Attribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Int64Attribute) | [`resource/schema/int64default` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/int64default) | +| [`schema.ListAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListAttribute) / [`schema.ListNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ListNestedAttribute) | [`resource/schema/listdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault) | +| [`schema.MapAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#MapAttribute) / [`schema.MapNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#MapNestedAttribute) | [`resource/schema/mapdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/mapdefault) | +| [`schema.NumberAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#NumberAttribute) | [`resource/schema/numberdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/numberdefault) | +| [`schema.ObjectAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#ObjectAttribute) / [`schema.SingleNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SingleNestedAttribute) | [`resource/schema/objectdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/objectdefault) | +| [`schema.SetAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetAttribute) / [`schema.SetNestedAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#SetNestedAttribute) | [`resource/schema/setdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/setdefault) | +| [`schema.StringAttribute`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#StringAttribute) | [`resource/schema/stringdefault` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault) | + +### Custom Default Implementations + +To create an attribute default, you must implement the one of the [`resource/schema/defaults` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/defaults) interfaces. For example: + +```go +// timeDefaultValue is a default that sets the value for a types.StringType +// attribute to the current time when it is not configured. The attribute +// must be marked as Optional and Computed. When setting the state during +// the resource Create, Read, or Update methods, this value must also be +// included or the Terraform CLI will generate an error. +type timeDefaultValue struct { + time time.Time +} + +// Description returns a plain text description of the default's behavior, suitable for a practitioner to understand its impact. +func (d timeDefaultValue) Description(ctx context.Context) string { + return fmt.Sprintf("If value is not configured, defaults to a string representation of the current time") +} + +// MarkdownDescription returns a markdown formatted description of the default's behavior, suitable for a practitioner to understand its impact. +func (d timeDefaultValue) MarkdownDescription(ctx context.Context) string { + return fmt.Sprintf("If value is not configured, defaults to a string representation of the current time") +} + +// DefaultString runs the logic of the default. Access to the path is available in `req`, while +// `resp` contains fields for updating the planned value, and returning diagnostics. +func (d timeDefaultValue) DefaultString(_ context.Context, req defaults.StringRequest, resp *defaults.StringResponse) { + resp.PlanValue = types.StringValue(d.time.Format(time.RFC3339)) +} +``` + +Optionally, you may also want to create a helper function to instantiate the default. For example: + +```go +func timeDefault(t time.Time) defaults.String { + return timeDefaultValue{ + time: t, + } +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/delete.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/delete.mdx new file mode 100644 index 0000000000..37c706e7fe --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/delete.mdx @@ -0,0 +1,149 @@ +--- +page_title: Delete resources +description: >- + Learn how to implement resource deletion in the Terraform plugin framework. +--- + +# Delete resources + +Deletion is part of the basic Terraform lifecycle for managing resources. During the [`terraform apply` command](/terraform/cli/commands/apply), Terraform calls the provider [`ApplyResourceChange`](/terraform/plugin/framework/internals/rpcs#applyresourcechange-rpc) RPC, in which the framework calls the [`resource.Resource` interface `Delete` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Delete). The request contains Terraform prior state data. The response is only for returning diagnostics. The data is defined by the [schema](/terraform/plugin/framework/schemas) of the resource. + +Terraform 1.3 and later enables deletion planning, which resources can implement to return warning and error diagnostics. For additional information, refer to the [resource plan modification documentation](/terraform/plugin/framework/resources/plan-modification#resource-destroy-plan-diagnostics). + +Other resource lifecycle implementations include: + +- [Create](/terraform/plugin/framework/resources/create) resources by receiving Terraform configuration and plan data, performing creation logic, and saving Terraform state data. +- [Read](/terraform/plugin/framework/resources/read) resources by receiving Terraform prior state data, performing read logic, and saving refreshed Terraform state data. +- [Update](/terraform/plugin/framework/resources/update) resources in-place by receiving Terraform prior state, configuration, and plan data, performing update logic, and saving updated Terraform state data. + +## Define Delete Method + +Implement the `Delete` method by: + +1. [Accessing prior state data](/terraform/plugin/framework/accessing-values) from the [`resource.DeleteRequest.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#DeleteRequest.State). +1. Performing logic or external calls to destroy the resource. + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can added into the [`resource.DeleteResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#DeleteResponse.Diagnostics). + +In this example, the `Delete` function makes a HTTP call and returns successfully if the status code was 200 OK or 404 Not Found: + +```go +// ThingResource defines the resource implementation. +// Some resource.Resource interface methods are omitted for brevity. +type ThingResource struct { + // client is configured via a Configure method, which is not shown in this + // example for brevity. Refer to the Configure Resources documentation for + // additional details for setting up resources with external clients. + client *http.Client +} + +// ThingResourceModel describes the Terraform resource data model to match the +// resource schema. +type ThingResourceModel struct { + Name types.String `tfsdk:"name"` + Id types.String `tfsdk:"id"` +} + +// ThingResourceAPIModel describes the API data model. +type ThingResourceAPIModel struct { + Name string `json:"name"` + Id string `json:"id"` +} + +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + MarkdownDescription: "Name of the thing to be saved in the service.", + Required: true, + }, + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Service generated identifier for the thing.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + MarkdownDescription: "Manages a thing.", + } +} + +func (r ThingResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + var data ThingResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + // Convert from Terraform data model into API data model + readReq := ThingResourceAPIModel{ + Id: data.Id.ValueString(), + Name: data.Name.ValueString(), + } + + httpReqBody, err := json.Marshal(readReq) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Delete Resource", + "An unexpected error occurred while creating the resource d request. "+ + "Please report this issue to the provider developers.\n\n"+ + "JSON Error: "+err.Error(), + ) + + return + } + + // Create HTTP request + httpReq := http.NewRequestWithContext( + ctx, + http.MethodDelete, + "http://example.com/things", + bytes.NewBuffer(httpReqBody), + ) + + // Send HTTP request + httpResp, err := d.client.Do(httpReq) + defer httpResp.Body.Close() + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Delete Resource", + "An unexpected error occurred while attempting to delete the resource. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Error: "+err.Error(), + ) + + return + } + + // Return error if the HTTP status code is not 200 OK or 404 Not Found + if httpResp.StatusCode != http.StatusNotFound && httpResp.StatusCode != http.StatusOK { + resp.Diagnostics.AddError( + "Unable to Delete Resource", + "An unexpected error occurred while attempting to delete the resource. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Status: "+httpResp.Status, + ) + + return + } + + // If the logic reaches here, it implicitly succeeded and will remove + // the resource from state if there are no other errors. +} +``` + +## Caveats + +Note these caveats when implementing the `Delete` method: + +* An error is returned if the response state is set to anything other than null. +* Any response errors will cause Terraform to keep the resource under management. + +## Recommendations + +Note these recommendations when implementing the `Delete` method: + +* Ignore errors that signify the resource is no longer existent. +* Skip calling the response state `RemoveResource()` method. The framework automatically handles this logic with the response state if there are no error diagnostics. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity-upgrade.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity-upgrade.mdx new file mode 100644 index 0000000000..a1141b5a50 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity-upgrade.mdx @@ -0,0 +1,147 @@ +--- +page_title: Identity Upgrade +description: >- + Learn how to implement upgrading identity data when provider schema changes from + one version of your Terraform framework provider to another. +--- + +# Identity Upgrade + +An identity schema captures the structure and types of a [managed resource identity](/terraform/plugin/framework/resources/identity). Any identity data that does not conform to the resource identity schema will generate errors or may not be persisted properly. Over time, it may be necessary for identities to make breaking changes to their schemas, such as changing an attribute type. Terraform supports versioning of these identity schemas and the current version is saved into the Terraform state. When the provider advertises a newer identity schema version, Terraform will call back to the provider to attempt to upgrade from the saved schema version to the one advertised. This operation is performed prior to planning, but with a configured provider. + +## Identity Upgrade Process + +1. When generating a plan, Terraform CLI will request the current resource identity schema, which contains a version. +1. If Terraform CLI detects that an existing identity with its saved version does not match the current version, Terraform CLI will request an identity upgrade from the provider with the prior identity version and expecting the identity to match the current version. +1. The framework will check the resource to see if it defines identity upgrade support: + * If no identity upgrade support is defined, an error diagnostic is returned. + * If identity upgrade support is defined, but not for the requested prior identity version, an error diagnostic is returned. + * If identity upgrade support is defined and has an implementation for the requested prior identity version, the provider defined implementation is executed. + +## Adding Identity Upgrade Support + +Ensure the [`identityschema.Schema` type `Version` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/identityschema#Schema.Version) field for the [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource) is greater than `0`, then implement the `resource.ResourceWithUpgradeIdentity` interface for the [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource). Conventionally the version is incremented by `1` for each upgrade identity. + +This example shows a `Resource` with the necessary `UpgradeIdentity` method to implement the `ResourceWithUpgradeIdentity` interface: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &ThingResource{} +var _ resource.ResourceWithUpgradeIdentity = &ThingResource{} + +type ThingResource struct{/* ... */} + +func (r *ThingResource) IdentitySchema(_ context.Context, _ resource.IdentitySchemaRequest, resp *resource.IdentitySchemaResponse) { + resp.IdentitySchema = identityschema.Schema{ + // ... other fields ... + + // This example conventionally declares that the resource has prior + // identity versions of 0 and 1, while the current version is 2. + Version: 2, + } +} + +func (r *ThingResource) UpgradeIdentity(ctx context.Context) map[int64]resource.IdentityUpgrader { + return map[int64]resource.IdentityUpgrader{ + // Identity upgrade implementation from 0 (prior identity version) to 1 (Schema.Version) + 0: { + // Optionally, the PriorSchema field can be defined. + IdentityUpgrader: func(ctx context.Context, req resource.UpgradeIdentityRequest, resp *resource.UpgradeIdentityResponse) { /* ... */ }, + }, + // Identity upgrade implementation from 1 (prior identity version) to 2 (Schema.Version) + 1: { + // Optionally, the PriorSchema field can be defined. + IdentityUpgrader: func(ctx context.Context, req resource.UpgradeIdentityRequest, resp *resource.UpgradeIdentityResponse) { /* ... */ }, + }, + } +} +``` + +Each `resource.IdentityUpgrader` implementation is expected to wholly upgrade the resource identity from the prior version to the current version. The framework does not iterate through intermediate version implementations as incrementing versions by 1 is only conventional and not required. + +All identity data must be populated in the [`resource.UpgradeIdentityResponse`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeIdentityResponse). The framework does not copy any prior identity data from the `resource.UpgradeIdentityRequest`. + +The recommended approach for implementation is defining the prior schema matching the resource identity, which allows for prior identity access similar to other parts of the framework. It is possible to access the request data using lower level data handlers, but the response must be set with a [framework type](/terraform/plugin/framework/handling-data/types). + +### Implementing IdentityUpgrader + +Implement the `IdentityUpgrader` type `PriorSchema` field to enable the framework to populate the `resource.UpgradeIdentityRequest` type `Identity` field for the provider defined upgrade identity logic. Access the request `Identity` using methods such as `Get()` or `GetAttribute()`. Write the `resource.UpgradeIdentityResponse` type `Identity` field using methods such as `Set()` or `SetAttribute()`. + +This example shows a resource that changes the type for two attributes, using the `PriorSchema` approach: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &ThingResource{} +var _ resource.ResourceWithUpgradeIdentity = &ThingResource{} + +type ThingResource struct{/* ... */} + +type ThingResourceModelV0 struct { + Id string `tfsdk:"id"` + OldBoolAttribute bool `tfsdk:"old_bool_attribute"` +} + +type ThingResourceModelV1 struct { + Id string `tfsdk:"id"` + NewStringAttribute string `tfsdk:"new_string_attribute"` +} + +func (r *ThingResource) IdentitySchema(_ context.Context, _ resource.IdentitySchemaRequest, resp *resource.IdentitySchemaResponse) { + resp.IdentitySchema = identityschema.Schema{ + Attributes: map[string]identityschema.Attribute{ + "id": identityschema.StringAttribute{ + RequiredForImport: true, + }, + "new_string_attribute": identityschema.StringAttribute{ + // As compared to prior identityschema.BoolAttribute below + OptionalForImport: true, + }, + }, + // The resource has a prior identity version of 0, which had the attribute + // types of types.BoolType as shown below. + Version: 1, + } +} + +func (r *ThingResource) UpgradeIdentity(ctx context.Context) map[int64]resource.IdentityUpgrader { + return map[int64]resource.IdentityUpgrader{ + // Identity upgrade implementation from 0 (prior identity version) to 1 (identityschema.Version) + 0: { + PriorSchema: &identityschema.Schema{ + Attributes: map[string]identityschema.Attribute{ + "id": identityschema.StringAttribute{ + RequiredForImport: true, + }, + "old_bool_attribute": identityschema.BoolAttribute{ + // As compared to current identityschema.StringAttribute above + OptionalForImport: true, + }, + }, + }, + IdentityUpgrader: func(ctx context.Context, req resource.UpgradeIdentityRequest, resp *resource.UpgradeIdentityResponse) { + var priorIdentityData ThingResourceModelV0 + + resp.Diagnostics.Append(req.Identity.Get(ctx, &priorIdentityData)...) + + if resp.Diagnostics.HasError() { + return + } + + upgradedIdentityData := ThingResourceModelV1{ + Id: priorIdentityData.Id, + NewStringAttribute: fmt.Sprintf("%t", priorIdentityData.OldBoolAttribute), + } + + resp.Diagnostics.Append(resp.Identity.Set(ctx, upgradedIdentityData)...) + }, + }, + } +} +``` + +## Caveats + +Note these caveats when implementing the `UpgradeIdentity` method: + +* An error is returned if the response identity contains unknown values. Set all attributes to either null or known values in the response. +* Any response errors will cause Terraform to keep the prior resource identity. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity.mdx new file mode 100644 index 0000000000..c78cccd029 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/identity.mdx @@ -0,0 +1,257 @@ +--- +page_title: Identify resources +description: >- + Learn how to implement resource identity in the Terraform plugin framework. +--- + +# Resource Identity + +A resource identity is a data object, determined by the provider, that is stored alongside the resource state to uniquely identify a remote object. Resource identity is supported in Terraform 1.12 and later. + +A resource identity should have the following properties: +- The resource identity must correspond to at most one remote object per provider, across all instances of that provider. +- Given a resource identity (during `import`), the provider must be able to determine whether the corresponding remote object exists, and if so, return the resource state. +- The identity data for a remote object must not change during its lifecycle from creation to deletion, or until the provider [upgrades](/terraform/plugin/framework/resources/identity-upgrade) the resource identity schema. + + + +## Schema + +To define the identity object for a managed resource, a resource identity [schema](/terraform/plugin/framework/handling-data/schemas) is provided that consists of a map of attribute names and associated behaviors. + +The resource identity schema is similar to the resource state schema, but with the following differences: +- The identity schema only supports primitive types and list types, which are represented by the following attributes: + +| Attribute | ElementType | +|------------------------------------------------------------------------------------|--------------------------------------------------------------------------------| +| [`BoolAttribute`](/terraform/plugin/framework/handling-data/attributes/bool) | N/A | +| [`Float32Attribute`](/terraform/plugin/framework/handling-data/attributes/float32) | N/A | +| [`Float64Attribute`](/terraform/plugin/framework/handling-data/attributes/float64) | N/A | +| [`Int32Attribute`](/terraform/plugin/framework/handling-data/attributes/int32) | N/A | +| [`Int64Attribute`](/terraform/plugin/framework/handling-data/attributes/int64) | N/A | +| [`NumberAttribute`](/terraform/plugin/framework/handling-data/attributes/number) | N/A | +| [`StringAttribute`](/terraform/plugin/framework/handling-data/attributes/string) | N/A | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.BoolType`](/terraform/plugin/framework/handling-data/types/bool) | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.Float32Type`](/terraform/plugin/framework/handling-data/types/float32) | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.Float64Type`](/terraform/plugin/framework/handling-data/types/float64) | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.Int32Type`](/terraform/plugin/framework/handling-data/types/int32) | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.Int64Type`](/terraform/plugin/framework/handling-data/types/int64) | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.NumberType`](/terraform/plugin/framework/handling-data/types/number) | +| [`ListAttribute`](/terraform/plugin/framework/handling-data/attributes/list) | [`types.StringType`](/terraform/plugin/framework/handling-data/types/string) | + +- Unlike the resource state schema, the resource identity schema does not support behaviors such as `Required` and `Computed`. All identity data is set by the provider, so the entire object is treated as `Computed`. Two behaviors are allowed for each identity schema to assist with importing a resource by identity, `RequiredForImport` and `OptionalForImport`. + - `RequiredForImport` only: A practitioner must configure the attribute to a known value (not `null`) during import, otherwise Terraform automatically raises an error diagnostic for the missing value. + - `OptionalForImport` only: A practitioner must configure the value to a known value or `null` during import. + +It is expected that exactly one of `RequiredForImport` or `OptionalForImport` is set to true. Regardless of which option is chosen, the provider can decide exactly what data is stored in the identity during import, similar to `Computed` attributes in resource state. + +## Defining Identity + +The identity schema can be set in a new `IdentitySchema` method, which is defined in the `resource.ResourceWithIdentity` interface: + +```go +var _ resource.ResourceWithIdentity = ThingResource{} // new interface + +func (r ThingResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "examplecloud_thing" +} + +func (r ThingResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // .. resource schema for examplecloud_thing + } +} + +// Struct model for identity data handling +type ThingResourceIdentityModel struct { + ID types.String `tfsdk:"id"` + Region types.String `tfsdk:"region"` +} + +func (r ThingResource) IdentitySchema(_ context.Context, _ resource.IdentitySchemaRequest, resp *resource.IdentitySchemaResponse) { + resp.IdentitySchema = identityschema.Schema{ + Attributes: map[string]identityschema.Attribute{ + "id": identityschema.StringAttribute{ + RequiredForImport: true, // must be set during import by the practitioner + }, + "region": identityschema.StringAttribute{ + OptionalForImport: true, // can be defaulted by the provider configuration + }, + }, + } +} +``` + +## Handling Identity Data + +Identity data, similar to resource state data, can be set or retrieved during the resource [`Create`](/terraform/plugin/framework/resources/create), +[`Read`](/terraform/plugin/framework/resources/read), [`Update`](/terraform/plugin/framework/resources/update), [`Delete`](/terraform/plugin/framework/resources/delete) +and [`ImportState`](/terraform/plugin/framework/resources/import) methods. Unlike resource state data, identity data is expected to be immutable after it is set during +[`Create`](/terraform/plugin/framework/resources/create), so typically the only locations a provider should need to write identity data is during [`Create`](/terraform/plugin/framework/resources/create) and +[`Read`](/terraform/plugin/framework/resources/read). + +[`Read`](/terraform/plugin/framework/resources/read) should return identity data so that the managed resource can support [importing](/terraform/plugin/framework/resources/import), +especially if not all of the identity attributes are provided by the practitioner during import (like provider configuration values and remote API data). + +### Writing Identity + +Typically, identity data should be set during [`Create`](/terraform/plugin/framework/resources/create) and [`Read`](/terraform/plugin/framework/resources/read). +The same data model for [writing data](/terraform/plugin/framework/handling-data/writing-state) to state is used for identity, for example: + +```go +// .. rest of resource implementation + +type ThingResourceModel struct { + // state data model +} + +// identity data model +type ThingResourceIdentityModel struct { + ID types.String `tfsdk:"id"` + Region types.String `tfsdk:"region"` +} + +func (r ThingResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + // Read plan data + + // Call remote API to create resource (i.e. apiResp) + + // Set data returned by API in state + data.ID = types.StringValue(apiResp.ID) + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + + // Set data returned by API in identity + identity := ThingResourceIdentityModel{ + ID: types.StringValue(apiResp.ID), + Region: types.StringValue(apiResp.Region), + } + resp.Diagnostics.Append(resp.Identity.Set(ctx, identity)...) +} +``` + +### Reading Identity + +The same data model for [reading data](/terraform/plugin/framework/handling-data/accessing-values) from state is used for identity, for example: + +```go +// .. rest of resource implementation + +type ThingResourceModel struct { + // state data model +} + +// identity data model +type ThingResourceIdentityModel struct { + ID types.String `tfsdk:"id"` + Region types.String `tfsdk:"region"` +} + +func (r ThingResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // Read state data + var stateData ThingResourceModel + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + if resp.Diagnostics.HasError() { + return + } + + // Read identity data + var identityData ThingResourceIdentityModel + resp.Diagnostics.Append(req.Identity.Get(ctx, &identityData)...) + if resp.Diagnostics.HasError() { + return + } + + // Call remote API to read resource + + // Set data returned by API in state + // Set data returned by API in identity +} +``` + +## Importing by Identity + +Managed resources that [define an identity](/terraform/plugin/framework/resources/identity#defining-identity) can be imported by either the `id` or the resource identity. +The user must set either `id` or `identity` and not both. Supplying both or none will result in a validation error. For example, the identity presented in the +["Define Identity"](/terraform/plugin/framework/resources/identity#defining-identity) section, can be imported via the following methods: + +- `terraform import` CLI command with ID string +```bash +terraform import examplecloud_thing.test id-123 +``` +- `import` block with `id` argument +```terraform +import { + to = examplecloud_thing.test + id = "id-123" +} +``` +- `import` block with `identity` argument +```terraform +import { + to = examplecloud_thing.test + identity = { + id = "id-123" # required for import + region = "us-east-1" # optional for import + } +} +``` + + +If identity data is present in the request, the provider is expected to ignore anything in the [`resource.ImportStateRequest.ID` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateRequest) (which Core will set to `""`). To maintain compatibility with the `terraform import` CLI command and the `import` block with `id` field, providers must continue to support importing via import ID if the identity data is not present. + +For resources that only need to support Terraform v1.12+, providers may choose not to support an import ID at all. In this case, if the user supplies an import ID (via the `terraform import` CLI command or in an `import` block), Terraform will send an import request to the provider including a non-empty [`resource.ImportStateRequest.ID` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateRequest), and the provider can choose to return an error with the [`resource.ImportStateResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateResponse) saying that it is not supported. + +An example [`ImportState`](/terraform/plugin/framework/resources/import) implementation that accounts for both importing by `id` and importing by `identity`: + +```go +func (r ThingResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + // If importing by ID, we just set the ID field to state, allowing the read to fill in the rest of the data. + if req.ID != "" { + resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("id"), req.ID)...) + return + } + + // Otherwise, we're importing by identity. We can either let identity passthrough + // to Read, or we can read the identity and use it to set data to state to be used in Read. + + var identityData ThingResourceIdentityModel + resp.Diagnostics.Append(req.Identity.Get(ctx, &identityData)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("id"), identityData.ID)...) +} +``` + +If the identity is a single attribute that is passed through to a single attribute in state, the `resource.ImportStatePassthroughWithIdentity` +helper method can be used, which will set the same state attribute with either identity data or the ID string field: + +```go +func (r ThingResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughWithIdentity(ctx, path.Root("id"), path.Root("id"), req, resp) +} +``` + +## Mutable Identities + +By default, if identity data unexpectedly changes during the resource's lifecycle, an error will be raised by the framework: +```bash +Error: Unexpected Identity Change + +During the operation, the Terraform Provider unexpectedly returned a +different identity then the previously stored one. +``` + +If the remote object has an identity that can be changed without being destroyed/re-created, this validation +can be disabled by setting the [`resource.ResourceBehavior`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceBehavior) +`MutableIdentity` field to `true`, which is set in the `Metadata` method on a resource: + +```go +func (r ThingResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "examplecloud_thing" + resp.ResourceBehavior = resource.ResourceBehavior{ + MutableIdentity: true, + } +} +``` \ No newline at end of file diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/import.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/import.mdx new file mode 100644 index 0000000000..58c380e139 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/import.mdx @@ -0,0 +1,105 @@ +--- +page_title: Resource import +description: >- + Learn how to support resource import using the Terraform plugin framework. +--- + +# Resource import + +Practitioners can use the [`terraform import` command](/terraform/cli/commands/import) to let Terraform begin managing existing infrastructure resources. Resources can implement the `ImportState` method, which must either specify enough Terraform state for the `Read` method to refresh [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource) or return an error. + +## Import by ID + +The [`resource.ResourceWithImportState` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithImportState) on the [`resource.Resource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource) implementation will enable practitioner support for importing an existing resource. + +Implement the `ImportState` method by: + +1. Accessing the import identifier from the [`resource.ImportStateRequest.ID` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateRequest) +1. [Writing state data](/terraform/plugin/framework/writing-state) into the [`resource.ImportStateResponse.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateResponse.State). + +In this example, the resource state has the `id` attribute set to the value passed into the [`terraform import` command](/terraform/cli/commands/import) using the [`resource.ImportStatePassthroughID` function](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStatePassthroughID): + +```go +func (r *ThingResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) +} +``` + +### Multiple Attributes + +When the `Read` method requires multiple attributes to refresh, you must write custom logic in the `ImportState` method. + +Implement the `ImportState` method by: + +1. Accessing the import identifier from the [`resource.ImportStateRequest.ID` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateRequest) +1. Performing the custom logic. +1. [Writing state data](/terraform/plugin/framework/writing-state) into the [`resource.ImportStateResponse.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateResponse.State). + +The `terraform import` command will need to accept the multiple attribute values as a single import identifier string. A typical convention is to use a separator character, such as a comma (`,`), between the values. The `ImportState` method will then need to parse the import identifier string into the multiple separate values and save them appropriately into the Terraform state. + +In this example, the resource requires two attributes to refresh state and accepts them as an import identifier of `attr_one,attr_two`: + +```go +func (r *ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "attr_one": schema.StringAttribute{ + Required: true, + }, + "attr_two": schema.StringAttribute{ + Required: true, + }, + /* ... */ + }, + } +} + +func (r *ThingResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var attrOne, attrTwo string + + resp.Diagnostics.Append(req.State.GetAttribute(ctx, path.Root("attr_one"), &attrOne)...) + resp.Diagnostics.Append(req.State.GetAttribute(ctx, path.Root("attr_two"), &attrTwo)...) + + if resp.Diagnostics.HasError() { + return + } + + // API call using attrOne and attrTwo +} + +func (r *ThingResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + idParts := strings.Split(req.ID, ",") + + if len(idParts) != 2 || idParts[0] == "" || idParts[1] == "" { + resp.Diagnostics.AddError( + "Unexpected Import Identifier", + fmt.Sprintf("Expected import identifier with format: attr_one,attr_two. Got: %q", req.ID), + ) + return + } + + resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("attr_one"), idParts[0])...) + resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("attr_two"), idParts[1])...) +} +``` + +## Import by Identity + +Managed resources that support identity can be imported by either the `id` or the resource identity. See the ["Identity" page](/terraform/plugin/framework/resources/identity#importing-by-identity) for more information. + + +## Not Implemented + +If the resource does not support `terraform import`, skip the `ImportState` method implementation. + +When a practitioner runs `terraform import`, Terraform CLI will return: + +```console +$ terraform import example_resource.example some-identifier +example_resource.example: Importing from ID "some-identifier"... +╷ +│ Error: Resource Import Not Implemented +│ +│ This resource does not support import. Please contact the provider developer for additional information. +╵ +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/index.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/index.mdx new file mode 100644 index 0000000000..6aa9000c80 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/index.mdx @@ -0,0 +1,105 @@ +--- +page_title: Resources +description: >- + Learn how to build resources in the Terraform plugin framework. Resources + allow Terraform to manage infrastructure objects. +--- + +# Resources + +[Resources](/terraform/language/resources) are an abstraction that allow Terraform to manage infrastructure objects, such as a compute instance, an access policy, or disk. Terraform assumes that every resource: + +- operates as a pure key/value store, with values getting returned exactly as they were written. +- needs only one API call to update or return its state. +- can be be created, read, updated, and deleted. + +This page describes the initial implementation details required for supporting a resource within the provider. Resource lifecycle management functionality is also required: + +- [Create](/terraform/plugin/framework/resources/create) resources by receiving Terraform configuration and plan data, performing creation logic, and saving Terraform state data. +- [Read](/terraform/plugin/framework/resources/read) resources by receiving Terraform prior state data, performing read logic, and saving refreshed Terraform state data. +- [Update](/terraform/plugin/framework/resources/update) resources in-place by receiving Terraform prior state, configuration, and plan data, performing update logic, and saving updated Terraform state data. +- [Delete](/terraform/plugin/framework/resources/delete) resources by receiving Terraform prior state data and performing deletion logic. + +Further documentation is available for deeper resource concepts: + +- [Configure](/terraform/plugin/framework/resources/configure) resources with provider-level data types or clients. +- [Default](/terraform/plugin/framework/resources/default) for specifying a default value for an attribute that is null within the configuration. +- [Import state](/terraform/plugin/framework/resources/import) so practitioners can bring existing resources under Terraform lifecycle management. +- [Manage private state](/terraform/plugin/framework/resources/private-state) to store additional data in resource state that is not shown in plans. +- [Modify plans](/terraform/plugin/framework/resources/plan-modification) to enrich the output for expected resource behaviors during changes, or marking a resource for replacement if an in-place update cannot occur. +- [Upgrade state](/terraform/plugin/framework/resources/state-upgrade) to transparently update state data outside plans. +- [Validate](/terraform/plugin/framework/resources/validate-configuration) practitioner configuration against acceptable values. +- [Timeouts](/terraform/plugin/framework/resources/timeouts) in practitioner configuration for use in resource create, read, update and delete functions. +- [Write-only Arguments](/terraform/plugin/framework/resources/write-only-arguments) are special types of attributes that can accept [ephemeral values](/terraform/language/resources/ephemeral) and are not persisted in the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. + +## Define Resource Type + +Implement the [`resource.Resource` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource). Ensure the [Add Resource To Provider](#add-resource-to-provider) documentation is followed so the resource becomes part of the provider implementation, and therefore available to practitioners. + +### Metadata Method + +The [`resource.Resource` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Metadata) defines the resource name as it would appear in Terraform configurations. This name should include the provider type prefix, an underscore, then the resource specific name. For example, a provider named `examplecloud` and a resource that reads "thing" resources would be named `examplecloud_thing`. + +In this example, the resource name in an `examplecloud` provider that reads "thing" resources is hardcoded to `examplecloud_thing`: + +```go +// With the resource.Resource implementation +func (r *ThingResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = "examplecloud_thing" +} +``` + +To simplify resource implementations, the [`provider.MetadataResponse.TypeName` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#MetadataResponse.TypeName) from the [`provider.Provider` interface `Metadata` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Metadata) can set the provider name so it is available in the [`resource.MetadataRequest.ProviderTypeName` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MetadataRequest.ProviderTypeName). + +In this example, the provider defines the `examplecloud` name for itself, and the data source is named `examplecloud_thing`: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) { + resp.TypeName = "examplecloud" +} + +// With the resource.Resource implementation +func (d *ThingDataSource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_thing" +} +``` + +### Schema Method + +The [`resource.Resource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Schema) defines a [schema](/terraform/plugin/framework/schemas) describing what data is available in the resource's configuration, plan, and state. + +## Add Resource to Provider + +Resources become available to practitioners when they are included in the [provider](/terraform/plugin/framework/providers) implementation via the [`provider.Provider` interface `Resources` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/provider#Provider.Resources). + +In this example, the `ThingResource` type, which implements the `resource.Resource` interface, is added to the provider implementation: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + func() resource.Resource { + return &ThingResource{}, + }, + } +} +``` + +To simplify provider implementations, a named function can be created with the resource implementation. + +In this example, the `ThingResource` code includes an additional `NewThingResource` function, which simplifies the provider implementation: + +```go +// With the provider.Provider implementation +func (p *ExampleCloudProvider) Resources(_ context.Context) []func() resource.Resource { + return []func() resource.Resource{ + NewThingResource, + } +} + +// With the resource.Resource implementation +func NewThingResource() resource.Resource { + return &ThingResource{} +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/plan-modification.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/plan-modification.mdx new file mode 100644 index 0000000000..bcab40d8d1 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/plan-modification.mdx @@ -0,0 +1,206 @@ +--- +page_title: Plan modification +description: >- + Learn how to modify plan values and behaviors with the Terraform plugin + framework. +--- + +# Plan modification + +After [validation](/terraform/plugin/framework/validation) and before applying configuration changes, Terraform generates a plan that describes the expected values and behaviors of those changes. Resources can then tailor the plan to match the expected end state, prevent errant in-place updates, or return any [diagnostics](/terraform/plugin/framework/diagnostics). + +Terraform and the framework support multiple types of plan modification on resources: + +- Adjusting unknown attribute values, such as providing a known remote default value when a configuration is not present. +- Marking resources that should be replaced, such as when an in-place update is not supported for a change. +- Returning warning or error diagnostics on planned resource creation, update, or deletion. + +Plan modification can be added on resource schema attributes or an entire resource. Use resource-based plan modification if access to the [configured resource](/terraform/plugin/framework/resources/configure) is necessary. + +## Plan Modification Process + +When the provider receives a request to generate the plan for a resource change via the framework, the following occurs: + +1. Set any attributes with a null configuration value to the [default value](/terraform/plugin/framework/resources/default). +1. If the plan differs from the current resource state, the framework marks computed attributes that are null in the configuration as unknown in the plan. This is intended to prevent unexpected Terraform errors. Providers can later enter any values that may be known. +1. Run attribute plan modifiers. +1. Run resource plan modifiers. + +When the `Resource` interface `Update` method runs to apply a change, all attribute state values must match their associated planned values or Terraform will generate a `Provider produced inconsistent result` error. You can mark values as [unknown](/terraform/plugin/framework/types#unknown) in the plan if the full expected value is not known. + +Refer to the [Resource Instance Change Lifecycle document](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md) for more details about the concepts and processes relevant to the plan and apply workflows. + +During the [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`PlanResourceChange`](/terraform/plugin/framework/internals/rpcs#planresourcechange-rpc) RPC, in which the framework calls the [`resource.Resource` interface `Schema` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Schema) attribute plan modifiers and the `ModifyPlan` method on resources that implement the [`resource.ResourceWithModifyPlan` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithModifyPlan). + +## Attribute Plan Modification + +You can supply the attribute type `PlanModifiers` field with a list of plan modifiers for that attribute. For example: + +```go +// Typically within the schema.Schema returned by Schema() for a resource. +schema.StringAttribute{ + // ... other Attribute configuration ... + + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, +} +``` + +If defined, plan modifiers are applied to the current attribute. If any nested attributes define plan modifiers, then those are applied afterwards. Any plan modifiers that return an error will prevent Terraform from applying further modifiers of that attribute as well as any nested attribute plan modifiers. + +### Common Use Case Attribute Plan Modifiers + +The framework implements some common use case modifiers in the typed packages under `resource/schema/`, such as `resource/schema/stringplanmodifier`: + +- `RequiresReplace()`: If the value of the attribute changes, in-place update is not possible and instead the resource should be replaced for the change to occur. Refer to the Go documentation for full details on its behavior. +- `RequiresReplaceIf()`: Similar to `resource.RequiresReplace()`, however it also accepts provider-defined conditional logic. Refer to the Go documentation for full details on its behavior. +- `RequiresReplaceIfConfigured()`: Similar to `resource.RequiresReplace()`, however it also will only trigger if the practitioner has configured a value. Refer to the Go documentation for full details on its behavior. +- `UseStateForUnknown()`: Copies the prior state value, if not null. This is useful for reducing `(known after apply)` plan outputs for computed attributes which are known to not change over time. + +### Creating Attribute Plan Modifiers + +To create an attribute plan modifier, you must implement the one of the [`planmodifier` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier) interfaces. For example: + +```go +// useStateForUnknownModifier implements the plan modifier. +type useStateForUnknownModifier struct{} + +// Description returns a human-readable description of the plan modifier. +func (m useStateForUnknownModifier) Description(_ context.Context) string { + return "Once set, the value of this attribute in state will not change." +} + +// MarkdownDescription returns a markdown description of the plan modifier. +func (m useStateForUnknownModifier) MarkdownDescription(_ context.Context) string { + return "Once set, the value of this attribute in state will not change." +} + +// PlanModifyBool implements the plan modification logic. +func (m useStateForUnknownModifier) PlanModifyBool(_ context.Context, req planmodifier.BoolRequest, resp *planmodifier.BoolResponse) { + // Do nothing if there is no state value. + if req.StateValue.IsNull() { + return + } + + // Do nothing if there is a known planned value. + if !req.PlanValue.IsUnknown() { + return + } + + // Do nothing if there is an unknown configuration value, otherwise interpolation gets messed up. + if req.ConfigValue.IsUnknown() { + return + } + + resp.PlanValue = req.StateValue +} +``` + +Optionally, you may also want to create a helper function to instantiate the plan modifier. For example: + +```go +// UseStateForUnknown returns a plan modifier that copies a known prior state +// value into the planned value. Use this when it is known that an unconfigured +// value will remain the same after a resource update. +// +// To prevent Terraform errors, the framework automatically sets unconfigured +// and Computed attributes to an unknown value "(known after apply)" on update. +// Using this plan modifier will instead display the prior state value in the +// plan, unless a prior plan modifier adjusts the value. +func UseStateForUnknown() planmodifier.Bool { + return useStateForUnknownModifier{} +} +``` + +### Caveats + +#### Terraform Data Consistency Rules + +Terraform core [implements data consistency rules](https://github.com/hashicorp/terraform/blob/main/docs/resource-instance-change-lifecycle.md) between configuration, plan, and state data. For example, if an attribute value is configured, it is never valid to change that value in the plan except being set to null on resource destroy. The framework does not raise its own targeted errors in many situations, so it is the responsibility of the developer to account for these rules when implementing plan modification logic. + +#### Prior State Under Lists and Sets + +Attribute plan modifiers under the following must take special consideration if they rely on prior state data: + +- List nested attributes +- List nested blocks +- Set nested attributes +- Set nested blocks + +These data structures are implemented based on array indexing, which the framework always sends the exact representation given across the protocol. If list/set elements are rearranged or removed, Terraform nor the framework performs any re-alignment of prior state for those elements. + +In this example, potentially unexpected prior state may be given to attribute plan modifier request: + +- A list nested attribute with two elements in configuration is saved into state +- The configuration for the first element is removed +- The list nested attribute with now one element still receives the prior state of the first element + +#### Checking Resource Change Operations + +Plan modifiers execute on all resource change operations: creation, update, and destroy. If the plan modification logic is sensitive to these details, check the request data to determine the current operation. + +Implement the following to check whether the resource is being created: + +```go +func (m ExampleModifier) PlanModifyString(_ context.Context, req planmodifier.StringRequest, resp *planmodifier.StringResponse) { + // Check if the resource is being created. + if req.State.Raw.IsNull() { + // ... + } + + // ... +} +``` + +Implement the following to check whether the resource is being destroyed: + +```go +func (m ExampleModifier) PlanModifyString(_ context.Context, req planmodifier.StringRequest, resp *planmodifier.StringResponse) { + // Check if the resource is being destroyed. + if req.Plan.Raw.IsNull() { + // ... + } + + // ... +} +``` + +## Resource Plan Modification + +Resources also support plan modification across all attributes. This is helpful when working with logic that applies to the resource as a whole, or in Terraform 1.3 and later, to return diagnostics during resource destruction. Implement the [`resource.ResourceWithModifyPlan` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithModifyPlan) to support resource-level plan modification. For example: + +```go +// Ensure the Resource satisfies the resource.ResourceWithModifyPlan interface. +// Other methods to implement the resource.Resource interface are omitted for brevity +var _ resource.ResourceWithModifyPlan = ThingResource{} + +type ThingResource struct {} + +func (r ThingResource) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + // Fill in logic. +} +``` + +### Resource Destroy Plan Diagnostics + +-> Support for handling resource destruction during planning is available in Terraform 1.3 and later. + +Implement the `ModifyPlan` method by checking if the [`resource.ModifyPlanRequest` type `Plan` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ModifyPlanRequest.Plan) is a `null` value: + +```go +func (r ThingResource) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + // If the entire plan is null, the resource is planned for destruction. + if req.Plan.Raw.IsNull() { + // Return an example warning diagnostic to practitioners. + resp.Diagnostics.AddWarning( + "Resource Destruction Considerations", + "Applying this resource destruction will only remove the resource from the Terraform state "+ + "and will not call the deletion API due to API limitations. Manually use the web "+ + "interface to fully destroy this resource.", + ) + } +} +``` + +Ensure the response plan remains entirely `null` when the request plan is entirely `null`. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/private-state.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/private-state.mdx new file mode 100644 index 0000000000..244b1a9b91 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/private-state.mdx @@ -0,0 +1,95 @@ +--- +page_title: Private state management +description: >- + Learn how to manage private state data in the Terraform plugin framework. + Private state is provider-only data storage for resources. +--- + +# Private state management + +Resource private state is provider maintained data that is stored in Terraform state alongside the schema-defined data. Private state is never accessed or exposed by Terraform plans, however providers can use this data storage for advanced use cases. + +## Usage + +Example uses in the framework include: + +* Storing and retrieving values that are not important to show to practitioners, but are required for API calls, such as ETags. +* Resource timeout functionality. + +## Concepts + +Private state data is byte data stored in the Terraform state and is intended for provider usage only (i.e., it is only used by the Framework and provider code). Providers have the ability to save this data during create, import, planning, read, and update operations and the ability to read this data during delete, planning, read, and update operations. + +## Accessing Private State Data + +Private state data can be read from a [privatestate.ProviderData](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ProviderData) type in the `Private` field present in the _request_ that is passed into: + +| Resource Operation | Private State Data | +| --- | --- | +| Delete | [resource.DeleteRequest.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#DeleteRequest.Private) | +| Plan Modification ([resource.ResourceWithModifyPlan](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithModifyPlan)) | [resource.ModifyPlanRequest.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ModifyPlanRequest.Private) | +| Plan Modification (`planmodifier` package interfaces) | Request type `Private` fields | +| Read | [resource.ReadRequest.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ReadRequest.Private) | +| Update | [resource.UpdateRequest.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpdateRequest.Private) + +Private state data can be saved to a [privatestate.ProviderData](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ProviderData) type in the `Private` field present in the _response_ that is returned from: + +| Resource Operation | Private State Data | +| --- | --- | +| Create | [resource.CreateResponse.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#CreateResponse.Private) | +| Import | [resource.ImportStateResponse.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ImportStateResponse.Private) | +| Plan Modification ([resource.ResourceWithModifyPlan](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithModifyPlan)) | [resource.ModifyPlanResponse.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ModifyPlanResponse.Private) | +| Plan Modification (`planmodifier` package interfaces) | Response type `Private` fields | +| Read | [resource.ReadResponse.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ReadResponse.Private) | +| Update | [resource.UpdateResponse.Private](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpdateResponse.Private) + +### Reading Private State Data + +Private state data can be read using the [GetKey](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ProviderData.GetKey) +function. For example: + +```go +func (r *resourceExample) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + + value, diags := req.Private.GetKey(ctx, "key") + + resp.Diagnostics.Append(diags...) + + if value != nil { + // value will be []byte. + ... + } +} +``` + +If the key supplied is [reserved](#reserved-keys) for framework usage, an error diagnostic will be returned. + +If the key is valid but no private state data is found, nil is returned. + +### Saving Private State Data + +Private state data can be saved using the [SetKey](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ProviderData.SetKey) +function. For example: + +```go +func (r *resourceExample) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + + value := []byte(`{"valid": "json", "utf8": "safe"}`) + + diags := resp.Private.SetKey(ctx, "key", value) + + resp.Diagnostics.Append(diags...) +} +``` + +If the key supplied is [reserved](#reserved-keys) for framework usage, an error diagnostic will be returned. + +If the value is not valid JSON and UTF-8 safe, an error diagnostic will be returned. + +To remove a key and its associated value, use `nil` or a zero-length value such as `[]byte{}`. + +### Reserved Keys + +Keys supplied to [GetKey](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ProviderData.GetKey) and [SetKey](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ProviderData.SetKey) are validated using [ValidateProviderDataKey](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/internal/privatestate#ValidateProviderDataKey). + +Keys using a period ('.') as a prefix cannot be used for provider private state data as they are reserved for framework usage. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/read.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/read.mdx new file mode 100644 index 0000000000..efdd282621 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/read.mdx @@ -0,0 +1,167 @@ +--- +page_title: Read resources +description: >- + Learn how to implement resource read in the Terraform plugin framework. +--- + +# Read resources + +Read (refresh) is part of the basic Terraform lifecycle for managing resources. During the [`terraform apply`](/terraform/cli/commands/apply), [`terraform plan`](/terraform/cli/commands/plan), and [`terraform refresh`](/terraform/cli/commands/refresh) commands, Terraform calls the provider [`ReadResource`](/terraform/plugin/framework/internals/rpcs#readresource-rpc) RPC, in which the framework calls the [`resource.Resource` interface `Read` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Read). The `Read` method is also executed after [resource import](/terraform/plugin/framework/resources/import). The request contains Terraform prior state data. The response contains the refreshed state data. The data is defined by the [schema](/terraform/plugin/framework/schemas) of the resource. + +Other resource lifecycle implementations include: + +- [Create](/terraform/plugin/framework/resources/create) resources by receiving Terraform configuration and plan data, performing creation logic, and saving Terraform state data. +- [Update](/terraform/plugin/framework/resources/update) resources in-place by receiving Terraform prior state, configuration, and plan data, performing update logic, and saving updated Terraform state data. +- [Delete](/terraform/plugin/framework/resources/delete) resources by receiving Terraform prior state data and performing deletion logic. + +## Define Read Method + +Implement the `Read` method by: + +1. [Accessing prior state data](/terraform/plugin/framework/accessing-values) from the [`resource.ReadRequest.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ReadRequest.State). +1. Retriving updated resource state, such as remote system information. +1. [Writing state data](/terraform/plugin/framework/writing-state) into the [`resource.ReadResponse.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ReadResponse.State). + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can added into the [`resource.ReadResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ReadResponse.Diagnostics). + +In this example, the `Read` function makes a HTTP call and refreshes the state data if the status code was 200 OK or removes the resource if 404 Not Found: + +```go +// ThingResource defines the resource implementation. +// Some resource.Resource interface methods are omitted for brevity. +type ThingResource struct { + // client is configured via a Configure method, which is not shown in this + // example for brevity. Refer to the Configure Resources documentation for + // additional details for setting up resources with external clients. + client *http.Client +} + +// ThingResourceModel describes the Terraform resource data model to match the +// resource schema. +type ThingResourceModel struct { + Name types.String `tfsdk:"name"` + Id types.String `tfsdk:"id"` +} + +// ThingResourceAPIModel describes the API data model. +type ThingResourceAPIModel struct { + Name string `json:"name"` + Id string `json:"id"` +} + +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + MarkdownDescription: "Name of the thing to be saved in the service.", + Required: true, + }, + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Service generated identifier for the thing.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + MarkdownDescription: "Manages a thing.", + } +} + +func (r *ThingResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var data ThingResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + // Convert from Terraform data model into API data model + readReq := ThingResourceAPIModel{ + Id: data.Id.ValueString(), + Name: data.Name.ValueString(), + } + + httpReqBody, err := json.Marshal(readReq) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Refresh Resource", + "An unexpected error occurred while creating the resource read request. "+ + "Please report this issue to the provider developers.\n\n"+ + "JSON Error: "+err.Error(), + ) + + return + } + + // Create HTTP request + httpReq := http.NewRequestWithContext( + ctx, + http.MethodPut, + "http://example.com/things", + bytes.NewBuffer(httpReqBody), + ) + + httpResp, err := d.client.Do(httpReq) + defer httpResp.Body.Close() + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Refresh Resource", + "An unexpected error occurred while attempting to refresh resource state. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Error: "+err.Error(), + ) + + return + } + + // Treat HTTP 404 Not Found status as a signal to recreate resource + // and return early + if httpResp.StatusCode == http.StatusNotFound { + resp.State.RemoveResource(ctx) + + return + } + + var readResp ThingResourceAPIModel + + err := json.NewDecoder(httpResp.Body).Decode(&readResp) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Refresh Resource", + "An unexpected error occurred while parsing the resource read response. "+ + "Please report this issue to the provider developers.\n\n"+ + "JSON Error: "+err.Error(), + ) + + return + } + + // Convert from the API data model to the Terraform data model + // and refresh any attribute values. + data.Name = types.StringValue(readResp.Name) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} +``` + +## Resource Identity + +Managed resources that support identity also need to set the identity data during `Read`, see the ["Identity" page](/terraform/plugin/framework/resources/identity#writing-identity) for more information. + +## Caveats + +Note these caveats when implementing the `Read` method: + +* An error is returned if the response state contains unknown values. Set all attributes to either null or known values in the response. +* Any response errors will cause Terraform to keep the prior resource state. + +## Recommendations + +Note these recommendations when implementing the `Read` method: + +* Ignore returning errors that signify the resource is no longer existent, call the response state `RemoveResource()` method, and return early. The next Terraform plan will recreate the resource. +* Refresh all possible values. This will ensure Terraform shows configuration drift and reduces import logic. +* Preserve the prior state value if the updated value is semantically equal. For example, JSON strings that have inconsequential object property reordering or whitespace differences. This prevents Terraform from showing extraneous drift in plans. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-move.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-move.mdx new file mode 100644 index 0000000000..c97dc57cd7 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-move.mdx @@ -0,0 +1,267 @@ +--- +page_title: State move +description: >- + Learn how to implement moving state data across managed resource types using + the Terraform plugin framework. +--- + +# State move + + + +State move across managed resource types is supported in Terraform 1.8 and later. + + + +Terraform is designed with each managed resource type being distinguished from all other types. To prevent data loss or unexpected data issues, Terraform will raise an error when practitioners attempt to refactor existing resource usage across resource types via the [`moved` configuration block](/terraform/language/modules/develop/refactoring) since data compatibility is not guaranteed. Provider developers can opt into explicitly enabling Terraform to allow these refactoring operations for a target resource type based on source resource type criteria. This criteria can include the source provider address, resource type name, and schema version. + +## Use Cases + +Example use cases include: + +* Renaming a resource type, such as API service name changes or for Terraform resource naming consistency. +* Splitting a resource type, into separate resource types for practitioner ease, such as a compute resource into Linux and Windows variants. +* Handing a resource type with API versioning quirks, such as multiple resource types representing the same real world resources with partially different configuration data/concepts. + +## Concepts + +A managed resource type has an associated [state](/terraform/language/state), which captures the structure and types of data for the resource type. Enabling state move support requires the provider to handle data transformation logic which takes in source resource type state as an input and outputs the equivalent target resource type state. + +When a plan is generated with a `moved` configuration block, Terraform will send a request to the provider with all the source resource state information (provider address, resource type, schema version) and target resource type. The framework will check the target resource to see if it defines state move support. + +The framework implementation does the following: + +* If no state move support is defined for the resource, an error diagnostic is returned. +* If state move support is defined for the resource, each provider defined implementation is called until one responds with error diagnostics or state data. +* If all implementations return without error diagnostics and state data, an error diagnostic is returned. + +## Implementation + +Implement the [`resource.ResourceWithMoveState` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithMoveState) for the [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource). That interface requires the `MoveState` method, which enables individual source resource criteria and logic for each source resource type to support. + +This example shows a `Resource` with the necessary `MoveState` method to implement the `ResourceWithMoveState` interface: + +```go +// Other Resource methods are omitted in this example +var _ resource.ResourceWithMoveState = &TargetResource{} + +type TargetResource struct{/* ... */} + +func (r *TargetResource) MoveState(ctx context.Context) []resource.StateMover { + return []resource.StateMover{ + { + // Optionally, the SourceSchema field can be defined. + StateMover: func(ctx context.Context, req resource.MoveStateRequest, resp *resource.MoveStateResponse) { /* ... */ }, + }, + // ... potentially more StateMover for each compatible source ... + } +} +``` + +Each [`resource.StateMover`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#StateMover) implementation is expected to: + +* Check the [`resource.MoveStateRequest`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateRequest) for whether this implementation matches a known source resource. It is always recommended to check the `SourceTypeName`, `SourceSchemaVersion`, and `SourceProviderAddress` (without the hostname, unless needed for disambiguation). +* If not matching, return early without diagnostics or setting state data in the [`resource.MoveStateResponse`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateResponse). The framework will try the next implementation. +* If matching, wholly set the resource state from the source state. All state data must be populated in the [`resource.MoveStateResponse`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateResponse). The framework does not copy any source state data from the [`resource.MoveStateRequest`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateRequest). + +There are two approaches to implementing the provider logic for state moves in `StateMover`. The recommended approach is defining the source schema matching the source resource state, which allows for source state access similar to other parts of the framework. The second, more advanced, approach is accessing the source resource state using lower level data handlers. + +### StateMover With SourceSchema + +Implement the [`StateMover` type `SourceSchema` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#StateMover.SourceSchema) to enable the framework to populate the [`resource.MoveStateRequest` type `SourceState` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateRequest.SourceState) for the provider defined state move logic. Access the request `SourceState` using methods such as [`Get()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.Get) or [`GetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.GetAttribute). Write the [`resource.MoveStateResponse` type `TargetState` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateResponse.TargetState) using methods such as [`Set()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.Set) or [`SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute). + +This example shows a target resource that supports moving state from a source resource, using the `SourceSchema` approach: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &TargetResource{} +var _ resource.ResourceWithMoveState = &TargetResource{} + +type TargetResource struct{/* ... */} + +type TargetResourceModel struct { + Id types.String `tfsdk:"id"` + TargetAttribute types.Bool `tfsdk:"target_attribute"` +} + +type SourceResourceModel struct { + Id types.String `tfsdk:"id"` + SourceAttribute types.Bool `tfsdk:"source_attribute"` +} + +func (r *TargetResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ /* ... */ }, + "target_attribute": schema.BoolAttribute{ /* ... */ }, + }, + } +} + +func (r *TargetResource) MoveState(ctx context.Context) []resource.StateMover { + return []resource.StateMover{ + { + SourceSchema: &schema.Schema{ + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{}, + "source_attribute": schema.BoolAttribute{}, + }, + }, + StateMover: func(ctx context.Context, req resource.MoveStateRequest, resp *resource.MoveStateResponse) { + // Always verify the expected source before working with the data. + if req.SourceTypeName != "examplecloud_source" { + return + } + + if req.SourceSchemaVersion != 0 { + return + } + + // This only checks the provider address namespace and type + // since practitioners may use differing hostnames for the same + // provider, such as a network mirror. If necessary though, the + // hostname can be used for disambiguation. + if !strings.HasSuffix(req.SourceProviderAddress, "examplecorp/examplecloud") { + return + } + + var sourceStateData SourceResourceModel + + resp.Diagnostics.Append(req.SourceState.Get(ctx, &sourceStateData)...) + + if resp.Diagnostics.HasError() { + return + } + + targetStateData := TargetResourceModel{ + Id: sourceStateData.Id, + TargetAttribute: sourceStateData.SourceAttribute, + } + + resp.Diagnostics.Append(resp.TargetState.Set(ctx, targetStateData)...) + }, + }, + } +} +``` + +### StateMover Without SourceSchema + +Read source state data from the [`resource.MoveStateRequest` type `SourceRawState` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateRequest.SourceRawState). Write the [`resource.MoveStateResponse` type `TargetState` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#MoveStateResponse.TargetState) using methods such as [`Set()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.Set) or [`SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute). + +This example shows a target resource that supports moving state from a source resource, using the `SourceRawState` approach for the request: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &TargetResource{} +var _ resource.ResourceWithMoveState = &TargetResource{} + +type TargetResource struct{/* ... */} + +type TargetResourceModel struct { + Id types.String `tfsdk:"id"` + TargetAttribute types.Bool `tfsdk:"target_attribute"` +} + +func (r *TargetResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ /* ... */ }, + "target_attribute": schema.BoolAttribute{ /* ... */ }, + }, + } +} + +func (r *TargetResource) MoveState(ctx context.Context) []resource.StateMover { + return []resource.StateMover{ + { + StateMover: func(ctx context.Context, req resource.MoveStateRequest, resp *resource.MoveStateResponse) { + // Always verify the expected source before working with the data. + if req.SourceTypeName != "examplecloud_source" { + return + } + + if req.SourceSchemaVersion != 0 { + return + } + + // This only checks the provider address namespace and type + // since practitioners may use differing hostnames for the same + // provider, such as a network mirror. If necessary though, the + // hostname can be used for disambiguation. + if !strings.HasSuffix(req.SourceProviderAddress, "examplecorp/examplecloud") { + return + } + + // Refer also to the RawState type JSON field which can be used + // with json.Unmarshal() + rawStateValue, err := req.SourceRawState.Unmarshal(tftypes.Object{ + AttributeTypes: map[string]tftypes.Type{ + "id": tftypes.String, + "source_attribute": tftypes.Bool, + }, + }) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Unmarshal Source State", + err.Error(), + ) + + return + } + + var rawState map[string]tftypes.Value + + if err := rawStateValue.As(&rawState); err != nil { + resp.Diagnostics.AddError( + "Unable to Convert Source State", + err.Error(), + ) + + return + } + + var id *string + + if err := rawState["id"].As(&id); err != nil { + resp.Diagnostics.AddAttributeError( + path.Root("id"), + "Unable to Convert Source State", + err.Error(), + ) + + return + } + + var sourceAttribute *bool + + if err := rawState["source_attribute"].As(&sourceAttribute); err != nil { + resp.Diagnostics.AddAttributeError( + path.Root("source_attribute"), + "Unable to Convert Source State", + err.Error(), + ) + + return + } + + targetStateData := TargetResourceModel{ + Id: types.StringPointerValue(id), + TargetAttribute: types.BoolPointerValue(sourceAttribute), + } + + resp.Diagnostics.Append(resp.TargetState.Set(ctx, targetStateData)...) + }, + }, + } +} +``` + +## Caveats + +Note these caveats when implementing the `MoveState` method: + +* The `SourceState` will not always be `nil` if the schema does not match the source state. Always verify the implementation matches other request fields (`SourceTypeName`, etc.) beforehand. +* An error is returned if the response state contains unknown values. Set all attributes to either null or known values in the response. +* Any response errors will cause Terraform to keep the source resource state. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-upgrade.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-upgrade.mdx new file mode 100644 index 0000000000..4d762564df --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/state-upgrade.mdx @@ -0,0 +1,294 @@ +--- +page_title: State upgrade +description: >- + Learn how to implement upgrading state data when provider schema changes from + one version of your Terraform framework provider to another. +--- + +# State upgrade + +A resource schema captures the structure and types of the resource [state](/terraform/language/state). Any state data that does not conform to the resource schema will generate errors or may not be persisted properly. Over time, it may be necessary for resources to make breaking changes to their schemas, such as changing an attribute type. Terraform supports versioning of these resource schemas and the current version is saved into the Terraform state. When the provider advertises a newer schema version, Terraform will call back to the provider to attempt to upgrade from the saved schema version to the one advertised. This operation is performed prior to planning, but with a configured provider. + +-> Some versions of Terraform CLI will also request state upgrades even when the current schema version matches the state version. The framework will automatically handle this request. + +## State Upgrade Process + +1. When generating a plan, Terraform CLI will request the current resource schema, which contains a version. +1. If Terraform CLI detects that an existing state with its saved version does not match the current version, Terraform CLI will request a state upgrade from the provider with the prior state version and expecting the state to match the current version. +1. The framework will check the resource to see if it defines state upgrade support: + * If no state upgrade support is defined, an error diagnostic is returned. + * If state upgrade support is defined, but not for the requested prior state version, an error diagnostic is returned. + * If state upgrade support is defined and has an implementation for the requested prior state version, the provider defined implementation is executed. + +## Implementing State Upgrade Support + +Ensure the [`schema.Schema` type `Version` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource/schema#Schema.Version) for the [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource) is greater than `0`, then implement the [`resource.ResourceWithStateUpgrade` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithStateUpgrade) for the [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource). Conventionally the version is incremented by `1` for each state upgrade. + +This example shows a `Resource` with the necessary `StateUpgrade` method to implement the `ResourceWithStateUpgrade` interface: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &ThingResource{} +var _ resource.ResourceWithUpgradeState = &ThingResource{} + +type ThingResource struct{/* ... */} + +func (r *ThingResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + // ... other fields ... + + // This example conventionally declares that the resource has prior + // state versions of 0 and 1, while the current version is 2. + Version: 2, + } +} + +func (r *ThingResource) UpgradeState(ctx context.Context) map[int64]resource.StateUpgrader { + return map[int64]resource.StateUpgrader{ + // State upgrade implementation from 0 (prior state version) to 1 (Schema.Version) + 0: { + // Optionally, the PriorSchema field can be defined. + StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { /* ... */ }, + }, + // State upgrade implementation from 1 (prior state version) to 2 (Schema.Version) + 1: { + // Optionally, the PriorSchema field can be defined. + StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { /* ... */ }, + }, + } +} +``` + +Each [`resource.StateUpgrader`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#StateUpgrader) implementation is expected to wholly upgrade the resource state from the prior version to the current version. The framework does not iterate through intermediate version implementations as incrementing versions by 1 is only conventional and not required. + +All state data must be populated in the [`resource.UpgradeStateResponse`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateResponse). The framework does not copy any prior state data from the [`resource.UpgradeStateRequest`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateRequest). + +There are two approaches to implementing the provider logic for state upgrades in `StateUpgrader`. The recommended approach is defining the prior schema matching the resource state, which allows for prior state access similar to other parts of the framework. The second, more advanced, approach is accessing the prior resource state using lower level data handlers. + +### StateUpgrader With PriorSchema + +Implement the [`StateUpgrader` type `PriorSchema` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#StateUpgrader.PriorSchema) to enable the framework to populate the [`resource.UpgradeStateRequest` type `State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateRequest.State) for the provider defined state upgrade logic. Access the request `State` using methods such as [`Get()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.Get) or [`GetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.GetAttribute). Write the [`resource.UpgradeStateResponse` type `State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateResponse.State) using methods such as [`Set()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.Set) or [`SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute). + +This example shows a resource that changes the type for two attributes, using the `PriorSchema` approach: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &ThingResource{} +var _ resource.ResourceWithUpgradeState = &ThingResource{} + +type ThingResource struct{/* ... */} + +type ThingResourceModelV0 struct { + Id string `tfsdk:"id"` + OptionalAttribute *bool `tfsdk:"optional_attribute"` + RequiredAttribute bool `tfsdk:"required_attribute"` +} + +type ThingResourceModelV1 struct { + Id string `tfsdk:"id"` + OptionalAttribute *string `tfsdk:"optional_attribute"` + RequiredAttribute string `tfsdk:"required_attribute"` +} + +func (r *ThingResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + }, + "optional_attribute": schema.StringAttribute{ + // As compared to prior schema.BoolAttribute below + Optional: true, + }, + "required_attribute": schema.StringAttribute{ + // As compared to prior schema.BoolAttribute below + Required: true, + }, + }, + // The resource has a prior state version of 0, which had the attribute + // types of types.BoolType as shown below. + Version: 1, + } +} + +func (r *ThingResource) UpgradeState(ctx context.Context) map[int64]resource.StateUpgrader { + return map[int64]resource.StateUpgrader{ + // State upgrade implementation from 0 (prior state version) to 1 (Schema.Version) + 0: { + PriorSchema: &schema.Schema{ + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + }, + "optional_attribute": schema.BoolAttribute{ + // As compared to current schema.StringAttribute above + Optional: true, + }, + "required_attribute": schema.BoolAttribute{ + // As compared to current schema.StringAttribute above + Required: true, + }, + }, + }, + StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { + var priorStateData ThingResourceModelV0 + + resp.Diagnostics.Append(req.State.Get(ctx, &priorStateData)...) + + if resp.Diagnostics.HasError() { + return + } + + upgradedStateData := ThingResourceModelV1{ + Id: priorStateData.Id, + RequiredAttribute: fmt.Sprintf("%t", priorStateData.RequiredAttribute), + } + + if priorStateData.OptionalAttribute != nil { + v := fmt.Sprintf("%t", *priorStateData.OptionalAttribute) + upgradedStateData.OptionalAttribute = &v + } + + resp.Diagnostics.Append(resp.State.Set(ctx, upgradedStateData)...) + }, + }, + } +} +``` + +### StateUpgrader Without PriorSchema + +Read prior state data from the [`resource.UpgradeStateRequest` type `RawState` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateRequest.RawState). Write the [`resource.UpgradeStateResponse` type `State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateResponse.State) using methods such as [`Set()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.Set) or [`SetAttribute()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State.SetAttribute), or for more advanced use cases, write the [`resource.UpgradeStateResponse` type `DynamicValue` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpgradeStateResponse.DynamicValue). + +This example shows a resource that changes the type for two attributes, using the `RawState` approach for the request and `DynamicValue` approach for the response: + +```go +// Other Resource methods are omitted in this example +var _ resource.Resource = &ThingResource{} +var _ resource.ResourceWithUpgradeState = &ThingResource{} + +var ThingResourceTftypesDataV0 = tftypes.Object{ + AttributeTypes: map[string]tftypes.Type{ + "id": tftypes.String, + "optional_attribute": tftypes.Bool, + "required_attribute": tftypes.Bool, + }, +} + +var ThingResourceTftypesDataV1 = tftypes.Object{ + AttributeTypes: map[string]tftypes.Type{ + "id": tftypes.String, + "optional_attribute": tftypes.String, + "required_attribute": tftypes.String, + }, +} + +type ThingResource struct{/* ... */} + +func (r *ThingResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + }, + "optional_attribute": schema.StringAttribute{ + // As compared to prior schema.BoolAttribute below + Optional: true, + }, + "required_attribute": schema.StringAttribute{ + // As compared to prior schema.BoolAttribute below + Required: true, + }, + }, + // The resource has a prior state version of 0, which had the attribute + // types of types.BoolType as shown below. + Version: 1, + } +} + +func (r *ThingResource) UpgradeState(ctx context.Context) map[int64]resource.StateUpgrader { + return map[int64]resource.StateUpgrader{ + // State upgrade implementation from 0 (prior state version) to 1 (Schema.Version) + 0: { + StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { + // Refer also to the RawState type JSON field which can be used + // with json.Unmarshal() + rawStateValue, err := req.RawState.Unmarshal(ThingResourceTftypesDataV0) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Unmarshal Prior State", + err.Error(), + ) + return + } + + var rawState map[string]tftypes.Value + + if err := rawStateValue.As(&rawState); err != nil { + resp.Diagnostics.AddError( + "Unable to Convert Prior State", + err.Error(), + ) + return + } + + var optionalAttributeString *string + + if !rawState["optional_attribute"].IsNull() { + var optionalAttribute bool + + if err := rawState["optional_attribute"].As(&optionalAttribute); err != nil { + resp.Diagnostics.AddAttributeError( + path.Root("optional_attribute"), + "Unable to Convert Prior State", + err.Error(), + ) + return + } + + v := fmt.Sprintf("%t", optionalAttribute) + optionalAttributeString = &v + } + + var requiredAttribute bool + + if err := rawState["required_attribute"].As(&requiredAttribute); err != nil { + resp.Diagnostics.AddAttributeError( + path.Root("required_attribute"), + "Unable to Convert Prior State", + err.Error(), + ) + return + } + + dynamicValue, err := tfprotov6.NewDynamicValue( + ThingResourceTftypesDataV1, + tftypes.NewValue(ThingResourceTftypesDataV1, map[string]tftypes.Value{ + "id": rawState["id"], + "optional_attribute": tftypes.NewValue(tftypes.String, optionalAttributeString), + "required_attribute": tftypes.NewValue(tftypes.String, fmt.Sprintf("%t", requiredAttribute)), + }), + ) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Convert Upgraded State", + err.Error(), + ) + return + } + + resp.DynamicValue = &dynamicValue + }, + }, + } +} +``` + +## Caveats + +Note these caveats when implementing the `UpgradeState` method: + +* An error is returned if the response state contains unknown values. Set all attributes to either null or known values in the response. +* Any response errors will cause Terraform to keep the prior resource state. diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/timeouts.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/timeouts.mdx new file mode 100644 index 0000000000..db14bae0c2 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/timeouts.mdx @@ -0,0 +1,138 @@ +--- +page_title: Timeouts +description: >- + Learn how to implement timeouts with the Terraform plugin framework. +--- + +# Timeouts + +The reality of cloud infrastructure is that it typically takes time to perform operations such as booting operating systems, discovering services, and replicating state across network edges. As the provider developer you should take known delays in resource APIs into account in the CRUD functions of the resource. Terraform supports configurable timeouts to assist in these situations. + +The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in CRUD functions. + +## Specifying Timeouts in Configuration + +Timeouts can be defined using either nested blocks or nested attributes. + +If you are writing a new provider using [terraform-plugin-framework](https://github.com/hashicorp/terraform-plugin-framework) +then we recommend using nested attributes. + +If you are [migrating a provider from SDKv2 to the Framework](/terraform/plugin/framework/migrating) and +you are already using timeouts you can either continue to use block syntax, or switch to using nested attributes. +However, switching to using nested attributes will require that practitioners that are using your provider update their +Terraform configuration. + +#### Block + +If your configuration is using a nested block to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts { + create = "60m" + } +} +``` + +Import the [timeouts module](https://github.com/hashicorp/terraform-plugin-framework-timeouts). + +```go +import ( + /* ... */ + "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts" +) +```` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (t *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + /* ... */ + + Blocks: map[string]schema.Block{ + "timeouts": timeouts.Block(ctx, timeouts.Opts{ + Create: true, + }), + }, +``` + +#### Attribute + +If your configuration is using nested attributes to define timeouts, such as the following: + +```hcl +resource "timeouts_example" "example" { + /* ... */ + + timeouts = { + create = "60m" + } +} +``` + +You can use this module to mutate the `schema.Schema` as follows: + +```go +func (t *exampleResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + /* ... */ + "timeouts": timeouts.Attributes(ctx, timeouts.Opts{ + Create: true, + }), + }, +``` + +## Updating Models + +In functions in which the config, state or plan is being unmarshalled, for instance, the `Create` function, the model +will need to be updated. + +```go +func (e *exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleResourceData + + diags := req.Plan.Get(ctx, &data) + resp.Diagnostics.Append(diags...) +``` + +Modify the `exampleResourceData` model to include a field for timeouts using a [`timeouts.Value`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts#Value) type. + +```go +type exampleResourceData struct { + /* ... */ + Timeouts timeouts.Value `tfsdk:"timeouts"` +``` + +## Accessing Timeouts in CRUD Functions + +Once the model has been populated with the config, state or plan the duration of the timeout can be accessed by calling +the appropriate helper function (e.g., [`timeouts.Create`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts#Value.Create)) and then used to configure timeout behaviour, for instance: + +```go +func (e *exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data exampleResourceData + + diags := req.Plan.Get(ctx, &data) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + createTimeout, diags := data.Timeouts.Create(ctx, 20*time.Minute) + + resp.Diagnostics.Append(diags...) + + if resp.Diagnostics.HasError() { + return + } + + ctx, cancel := context.WithTimeout(ctx, createTimeout) + defer cancel() + + /* ... */ +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/update.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/update.mdx new file mode 100644 index 0000000000..a892b4161f --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/update.mdx @@ -0,0 +1,211 @@ +--- +page_title: Update resources +description: >- + Learn how to implement in-place updating of resources in the Terraform + plugin framework. +--- + +# Update resources + +In-place update is part of the basic Terraform lifecycle for managing resources. During the [`terraform apply` command](/terraform/cli/commands/apply), Terraform calls the provider [`ApplyResourceChange`](/terraform/plugin/framework/internals/rpcs#applyresourcechange-rpc) RPC, in which the framework calls the [`resource.Resource` interface `Update` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource.Update). The request contains Terraform prior state, configuration, and plan data. The response contains updated state data. The data is defined by the [schema](/terraform/plugin/framework/schemas) of the resource. + +To ensure that Terraform plans replacement of a resource, rather than perform an in-place update, use the [`resource.RequiresReplace()` attribute plan modifier](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#RequiresReplace) in the schema or implement [resource plan modification](/terraform/plugin/framework/resources/plan-modification). + +Other resource lifecycle implementations include: + +- [Create](/terraform/plugin/framework/resources/create) resources by receiving Terraform configuration and plan data, performing creation logic, and saving Terraform state data. +- [Read](/terraform/plugin/framework/resources/read) resources by receiving Terraform prior state data, performing read logic, and saving refreshed Terraform state data. +- [Delete](/terraform/plugin/framework/resources/delete) resources by receiving Terraform prior state data and performing deletion logic. + +## Define Update Method + +Implement the `Update` method by: + +1. [Accessing the data](/terraform/plugin/framework/accessing-values) from the [`resource.UpdateRequest` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpdateRequest). Most use cases should access the plan data in the [`resource.UpdateRequest.Plan` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpdateRequest.Plan). +1. Performing logic or external calls to modify the resource. +1. [Writing state data](/terraform/plugin/framework/writing-state) into the [`resource.UpdateResponse.State` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpdateResponse.State). + +If the logic needs to return [warning or error diagnostics](/terraform/plugin/framework/diagnostics), they can added into the [`resource.UpdateResponse.Diagnostics` field](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UpdateResponse.Diagnostics). + +In this example, the `Update` function makes a HTTP call and returns successfully if the status code was 200 OK: + +```go +// ThingResource defines the resource implementation. +// Some resource.Resource interface methods are omitted for brevity. +type ThingResource struct { + // client is configured via a Configure method, which is not shown in this + // example for brevity. Refer to the Configure Resources documentation for + // additional details for setting up resources with external clients. + client *http.Client +} + +// ThingResourceModel describes the Terraform resource data model to match the +// resource schema. +type ThingResourceModel struct { + Name types.String `tfsdk:"name"` + Id types.String `tfsdk:"id"` +} + +// ThingResourceAPIModel describes the API data model. +type ThingResourceAPIModel struct { + Name string `json:"name"` + Id string `json:"id"` +} + +func (r ThingResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "name": schema.StringAttribute{ + MarkdownDescription: "Name of the thing to be saved in the service.", + Required: true, + }, + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Service generated identifier for the thing.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + }, + MarkdownDescription: "Manages a thing.", + } +} + +func (r ThingResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var data ThingResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + // Convert from Terraform data model into API data model + updateReq := ThingResourceAPIModel{ + Id: data.Id.ValueString(), + Name: data.Name.ValueString(), + } + + httpReqBody, err := json.Marshal(updateReq) + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Update Resource", + "An unexpected error occurred while creating the resource update request. "+ + "Please report this issue to the provider developers.\n\n"+ + "JSON Error: "+err.Error(), + ) + + return + } + + // Create HTTP request + httpReq := http.NewRequestWithContext( + ctx, + http.MethodPut, + "http://example.com/things", + bytes.NewBuffer(httpReqBody), + ) + + // Send HTTP request + httpResp, err := d.client.Do(httpReq) + defer httpResp.Body.Close() + + if err != nil { + resp.Diagnostics.AddError( + "Unable to Update Resource", + "An unexpected error occurred while attempting to update the resource. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Error: "+err.Error(), + ) + + return + } + + // Return error if the HTTP status code is not 200 OK + if httpResp.StatusCode != http.StatusOK { + resp.Diagnostics.AddError( + "Unable to Update Resource", + "An unexpected error occurred while attempting to update the resource. "+ + "Please retry the operation or report this issue to the provider developers.\n\n"+ + "HTTP Status: "+httpResp.Status, + ) + + return + } + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} +``` + +## Caveats + +Note these caveats when implementing the `Update` method: + +* An error is returned if the response state is not set when `Update` is called by the framework. If the resource does not support modification and should always be recreated on configuration value updates, the `Update` logic can be left empty and ensure all configurable schema attributes implement the [`resource.RequiresReplace()` attribute plan modifier](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#RequiresReplace). +* An error is returned if the response state contains unknown values. Set all attributes to either null or known values in the response. +* An error is returned if the response state has the `RemoveResource()` method called. This method is not valid during update. Return an error if the resource is no longer exists. +* An error is returned unless every null or known value in the request plan is saved exactly as-is into the response state. Only unknown plan values can be modified. + +## Recommendations + +Note these recommendations when implementing the `Update` method: + +* Get request data from the Terraform plan data over configuration data as the schema or resource may include [plan modification](/terraform/plugin/framework/resources/plan-modification) logic which sets plan values. +* Only successfully modified parts of the resource should be return updated data in the state response. +* Use the [`resource.UseStateForUnknown()` attribute plan modifier](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#UseStateForUnknown) for `Computed` attributes that are known to not change during resource updates. This will enhance the Terraform plan to not show `=> (known after apply)` differences. + +## Additional Use Cases + +This section highlights implementation details for specific use cases. + +### Detect Specific Attribute Changes + +Certain update APIs require that only value changes are sent in the update request or require individual update API calls. Compare the attribute plan value to the attribute prior state value to determine individual attribute changes. + +In this example, the entire plan and prior state are fetched then the attribute values are compared: + +```go +type ThingResourceModel struct { + Name types.String `tfsdk:"name"` + // ... other attributes ... +} + +func (r ThingResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var plan, state ThingResourceModel + + resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...) + resp.Diagnostics.Append(req.State.Get(ctx, &state)...) + + if resp.Diagnostics.HasError() { + return + } + + // Compare name attribute value between plan and prior state + if !plan.Name.Equal(state.Name) { + // name attribute was changed + } + + // ... further logic ... +} +``` + +In this example, the attribute is individually fetched from the plan and prior state then the values are compared: + +```go +func (r ThingResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var namePlan, nameState types.String + + resp.Diagnostics.Append(req.Plan.GetAttribute(ctx, path.Root("name"), &namePlan)...) + resp.Diagnostics.Append(req.State.GetAttribute(ctx, path.Root("name"), &nameState)...) + + if resp.Diagnostics.HasError() { + return + } + + // Compare name attribute value between plan and prior state + if !namePlan.Equal(nameState) { + // name attribute was changed + } + + // ... further logic ... +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/validate-configuration.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/validate-configuration.mdx new file mode 100644 index 0000000000..4a1d936613 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/validate-configuration.mdx @@ -0,0 +1,86 @@ +--- +page_title: Validate resource configuration +description: >- + Learn how to validate resource configuration with the Terraform plugin + framework. +--- + +# Validate configuration + +[Resources](/terraform/plugin/framework/resources) support validating an entire practitioner configuration in either declarative or imperative logic. Feedback, such as required syntax or acceptable combinations of values, is returned via [diagnostics](/terraform/plugin/framework/diagnostics). + +This page describes implementation details for validating entire resource configurations, typically referencing multiple attributes. Further documentation is available for other configuration validation concepts: + +- [Single attribute validation](/terraform/plugin/framework/validation#attribute-validation) is a schema-based mechanism for implementing attribute-specific validation logic. +- [Type validation](/terraform/plugin/framework/validation#type-validation) is a schema-based mechanism for implementing reusable validation logic for any attribute using the type. + +-> Configuration validation in Terraform occurs without provider configuration ("offline"), so therefore the resource `Configure` method will not have been called. To implement validation with a configured API client, use [plan modification](/terraform/plugin/framework/resources/plan-modification#resource-plan-modification) instead, which occurs during Terraform's planning phase. + +## ConfigValidators Method + +The [`resource.ResourceWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithConfigValidators) follows a similar pattern to attribute validation and allows for a more declarative approach. This enables consistent validation logic across multiple resources. Each validator intended for this interface must implement the [`resource.ConfigValidator` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ConfigValidator). + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ValidateResourceConfig`](/terraform/plugin/framework/internals/rpcs#validateresourceconfig-rpc) RPC, in which the framework calls the `ConfigValidators` method on resources that implement the [`resource.ResourceWithConfigValidators` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithConfigValidators). + +The [`terraform-plugin-framework-validators` Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) has a collection of common use case resource configuration validators in the [`resourcevalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator). These use [path expressions](/terraform/plugin/framework/path-expressions) for matching attributes. + +This example will raise an error if a practitioner attempts to configure both `attribute_one` and `attribute_two`: + +```go +// Other methods to implement the resource.Resource interface are omitted for brevity +type ThingResource struct {} + +func (r ThingResource) ConfigValidators(ctx context.Context) []resource.ConfigValidator { + return []resource.ConfigValidator{ + resourcevalidator.Conflicting( + path.MatchRoot("attribute_one"), + path.MatchRoot("attribute_two"), + ), + } +} +``` + +## ValidateConfig Method + +The [`resource.ResourceWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithValidateConfig) is more imperative in design and is useful for validating unique functionality across multiple attributes that typically applies to a single resource. + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan) and [`terraform apply`](/terraform/cli/commands/apply) commands, Terraform calls the provider [`ValidateResourceConfig`](/terraform/plugin/framework/internals/rpcs#validateresourceconfig-rpc) RPC, in which the framework calls the `ValidateConfig` method on providers that implement the [`resource.ResourceWithValidateConfig` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#ResourceWithValidateConfig). + +This example will raise a warning if a practitioner attempts to configure `attribute_one`, but not `attribute_two`: + +```go +// Other methods to implement the resource.Resource interface are omitted for brevity +type ThingResource struct {} + +type ThingResourceModel struct { + AttributeOne types.String `tfsdk:"attribute_one"` + AttributeTwo types.String `tfsdk:"attribute_two"` +} + +func (r ThingResource) ValidateConfig(ctx context.Context, req resource.ValidateConfigRequest, resp *resource.ValidateConfigResponse) { + var data ThingResourceModel + + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + // If attribute_one is not configured, return without warning. + if data.AttributeOne.IsNull() || data.AttributeOne.IsUnknown() { + return + } + + // If attribute_two is not null, return without warning. + if !data.AttributeTwo.IsNull() { + return + } + + resp.Diagnostics.AddAttributeWarning( + path.Root("attribute_two"), + "Missing Attribute Configuration", + "Expected attribute_two to be configured with attribute_one. "+ + "The resource may return unexpected results.", + ) +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/write-only-arguments.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/write-only-arguments.mdx new file mode 100644 index 0000000000..ee61e2b99e --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/resources/write-only-arguments.mdx @@ -0,0 +1,114 @@ +--- +page_title: 'Plugin Development - Framework: Write-only Arguments' +description: >- + How to implement write-only arguments with the provider development framework. +--- + +# Write-only Arguments + +Write-only arguments are managed resource attributes that are configured by practitioners but are not persisted to the Terraform plan or state artifacts. Write-only arguments are supported in Terraform 1.11 and later. +Write-only arguments should be used to handle secret values that do not need to be persisted in Terraform state, such as passwords, API keys, etc. +The provider is expected to be the terminal point for an ephemeral value, +which should either use the value by making the appropriate change to the API or ignore the value. Write-only arguments can accept [ephemeral values](/terraform/language/resources/ephemeral) and are not required to be consistent between plan and apply operations. + +## General Concepts + +The following are high level differences between `Required`/`Optional` arguments and write-only arguments: + +- Write-only arguments can accept ephemeral and non-ephemeral values. + +- Write-only arguments cannot be used with set attributes, set nested attributes, and set nested blocks. + +- Write-only argument values are only available in the configuration. The prior state, planned state, and final state values for +write-only arguments should always be `null`. + - Provider developers do not need to explicitly set write-only argument values to `null` after using them as the plugin framework will handle the nullification of write-only arguments for all RPCs. + +- Any value that is set for a write-only argument in the state or plan (during [Plan Modification](/terraform/plugin/framework/resources/plan-modification)) by the provider will be reverted to `null` by plugin framework before the RPC response is sent to Terraform. + +- Write-only argument values cannot produce a Terraform plan difference. + - This is because the prior state value for a write-only argument will always be `null` and the planned/final state value will also be `null`, therefore, it cannot produce a diff on its own. + - The one exception to this case is if the write-only argument is added to `requires_replace` during Plan Modification (i.e., using the [`RequiresReplace()`](/terraform/plugin/framework/resources/plan-modification#requiresreplace) plan modifier), in that case, the write-only argument will always cause a diff/trigger a resource recreation. + +- Since write-only arguments can accept ephemeral values, write-only argument configuration values are not expected to be consistent between plan and apply. + +## Schema + +An attribute can be made write-only by setting the `WriteOnly` field to `true` in the schema. Attributes with `WriteOnly` set to `true` must also have +one of `Required` or `Optional` set to `true`. If a list nested, map nested, or single nested attribute has `WriteOnly` set to `true`, all child attributes must also have `WriteOnly` set to `true`. +A set nested block cannot have any child attributes with `WriteOnly` set to `true`. `Computed` cannot be set to true for write-only arguments. + +**Schema example:** + +```go +"password_wo": schema.StringAttribute{ + Required: true, + WriteOnly: true, +}, +``` + +## Retrieving Write-only Values + +Write-only argument values should be retrieved from the configuration instead of the plan. Refer to [accessing values](/terraform/plugin/framework/handling-data/accessing-values) for more details on +retrieving values from configuration. + +## PreferWriteOnlyAttribute Validators + +The `PreferWriteOnlyAttribute()` validators available in the [`terraform-plugin-framework-validators` Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators) +can be used when you have a write-only version of an existing attribute, and you want to encourage practitioners to use the write-only version whenever possible. + +The validator returns a warning if the Terraform client is 1.11 or above and the value of the existing attribute is non-null. + +`PreferWriteOnlyAttribute()` is available as a resource-level validator in the [`resourcevalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/resourcevalidator) or +as an attribute-level validator in the `[type]validator` packages (i.e., [`stringvalidator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator)) + +Usage: + +```go +// Resource-level validator +// Used inside a resource.Resource type ConfigValidators method + _ = []resource.ConfigValidator{ + // Throws a warning diagnostic encouraging practitioners to use + // password_wo if password has a known value + resourcevalidator.PreferWriteOnlyAttribute( + path.MatchRoot("password"), + path.MatchRoot("password_wo"), + ), + } + +// Attribute-level validator +// Used within a Schema method of a Resource + _ = schema.Schema{ + Attributes: map[string]schema.Attribute{ + "password": schema.StringAttribute{ + Optional: true, + Validators: []validator.String{ + // Throws a warning diagnostic encouraging practitioners to use + // password_wo if password has a known value. + stringvalidator.PreferWriteOnlyAttribute( + path.MatchRoot("password_wo"), + ), + }, + }, + "password_wo": schema.StringAttribute{ + WriteOnly: true, + Optional: true, + }, + }, + } +``` + +```hcl +resource "example_db_instance" "ex" { + username = "foo" + password = "bar" # returns a warning encouraging practitioners to use `password_wo` instead. +} +``` + +## Best Practices + +Since write-only arguments have no prior values, user intent or value changes cannot be determined with a write-only argument alone. To determine when to use/not use a write-only argument value in your provider, we recommend one of the following: + +- Pair write-only arguments with a configuration attribute (required or optional) to “trigger” the use of the write-only argument + - For example, a `password_wo` write-only argument can be paired with a configured `password_wo_version` attribute. When the `password_wo_version` is modified, the provider will send the `password_wo` value to the API. +- Use a keepers attribute (which is used in the [Random Provider](https://registry.terraform.io/providers/hashicorp/random/latest/docs#resource-keepers)) that will take in arbitrary key-pair values. Whenever there is a change to the `keepers` attribute, the provider will use the write-only argument value. +- Use the resource's [private state](/terraform/plugin/framework/resources/private-state) to store secure hashes of write-only argument values, the provider will then use the hash to determine if a write-only argument value has changed in later Terraform runs. \ No newline at end of file diff --git a/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/validation.mdx b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/validation.mdx new file mode 100644 index 0000000000..fedfbafb98 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/docs/plugin/framework/validation.mdx @@ -0,0 +1,518 @@ +--- +page_title: Validation +description: >- + Learn how to validate configuration values using the Terraform plugin framework. +--- + +# Validation + +The framework can return [diagnostics](/terraform/plugin/framework/diagnostics) feedback for values in provider, resource, and data source configurations or [errors](/terraform/plugin/framework/functions/errors) feedback for values in function parameters. This allows you to write validations that give users feedback about required syntax, types, and acceptable values. + +This page describes single attribute, parameter, and type validation concepts that can be used in any data source schema, provider schema, resource schema, or function definition. Further documentation is available for other configuration validation concepts: + +- [Data source validation](/terraform/plugin/framework/data-sources/validate-configuration) for multiple attributes declaratively or imperatively. +- [Provider validation](/terraform/plugin/framework/providers/validate-configuration) for multiple attributes declaratively or imperatively. +- [Resource validation](/terraform/plugin/framework/resources/validate-configuration) for multiple attributes declaratively or imperatively. +- [Ephemeral Resource validation](/terraform/plugin/framework/ephemeral-resources/validate-configuration) for multiple attributes declaratively or imperatively. + +-> **Note:** When implementing validation logic, configuration values may be [unknown](/terraform/plugin/framework/types#unknown) based on the source of the value. Implementations must account for this case, typically by returning early without returning new diagnostics. + +During execution of the [`terraform validate`](/terraform/cli/commands/validate), [`terraform plan`](/terraform/cli/commands/plan), [`terraform apply`](/terraform/cli/commands/apply) and [`terraform destroy`](/terraform/cli/commands/destroy) commands, Terraform calls the provider [`ValidateProviderConfig`](/terraform/plugin/framework/internals/rpcs#validateproviderconfig-rpc), [`ValidateResourceConfig`](/terraform/plugin/framework/internals/rpcs#validateresourceconfig-rpc), [`ValidateDataResourceConfig`](/terraform/plugin/framework/internals/rpcs#validatedataresourceconfig-rpc), and `ValidateEphemeralResourceConfig` RPCs. + +## Default Terraform CLI Validation + +The [Terraform configuration language](/terraform/language) is declarative and an implementation of [HashiCorp Configuration Language](https://github.com/hashicorp/hcl) (HCL). The Terraform CLI is responsible for reading and parsing configurations for validity, based on Terraform's concepts such as `resource` blocks and associated syntax. The Terraform CLI automatically handles basic validation of value type and behavior information based on the provider, resource, or data source schema. For example, the Terraform CLI returns an error when a string value is given where a list value is expected and also when a required attribute is missing from a configuration. + +Terraform CLI syntax and basic schema checks occur during the [`terraform apply`](/terraform/cli/commands/apply), [`terraform destroy`](/terraform/cli/commands/destroy), [`terraform plan`](/terraform/cli/commands/plan), and [`terraform validate`](/terraform/cli/commands/validate) commands. Any additional validation you define with the framework occurs directly after these checks are complete. + +## Attribute Validation + +You can introduce validation on attributes using the generic framework-defined types such as [`types.String`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#String). To do this, supply the `Validators` field with a list of validations, and the framework will return diagnostics from all validators. For example: + +```go +// Typically within the schema.Schema returned by Schema() for a provider, +// resource, or data source. +schema.StringAttribute{ + // ... other Attribute configuration ... + + Validators: []validator.String{ + // These are example validators from terraform-plugin-framework-validators + stringvalidator.LengthBetween(10, 256), + stringvalidator.RegexMatches( + regexp.MustCompile(`^[a-z0-9]+$`), + "must contain only lowercase alphanumeric characters", + ), + }, +} +``` + +All validators in the slice will always be run, regardless of whether previous validators returned an error or not. + +### Common Use Case Attribute Validators + +You can implement attribute validators from the [terraform-plugin-framework-validators Go module](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework-validators), which contains validation handling for many common use cases such as string contents and integer ranges. + +### Creating Attribute Validators + +If there is not an attribute validator in `terraform-plugin-framework-validators` that meets a specific use case, a provider-defined attribute validator can be created. + +To create an attribute validator, you must implement at least one of the [`validator` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/schema/validator) interfaces. For example: + +```go +type stringLengthBetweenValidator struct { + Max int + Min int +} + +// Description returns a plain text description of the validator's behavior, suitable for a practitioner to understand its impact. +func (v stringLengthBetweenValidator) Description(ctx context.Context) string { + return fmt.Sprintf("string length must be between %d and %d", v.Min, v.Max) +} + +// MarkdownDescription returns a markdown formatted description of the validator's behavior, suitable for a practitioner to understand its impact. +func (v stringLengthBetweenValidator) MarkdownDescription(ctx context.Context) string { + return fmt.Sprintf("string length must be between `%d` and `%d`", v.Min, v.Max) +} + +// Validate runs the main validation logic of the validator, reading configuration data out of `req` and updating `resp` with diagnostics. +func (v stringLengthBetweenValidator) ValidateString(ctx context.Context, req validator.StringRequest, resp *validator.StringResponse) { + // If the value is unknown or null, there is nothing to validate. + if req.ConfigValue.IsUnknown() || req.ConfigValue.IsNull() { + return + } + + strLen := len(req.ConfigValue.ValueString()) + + if strLen < v.Min || strLen > v.Max { + resp.Diagnostics.AddAttributeError( + req.AttributePath, + "Invalid String Length", + fmt.Sprintf("String length must be between %d and %d, got: %d.", v.Min, v.Max, strLen), + ) + + return + } +} +``` + +Optionally and depending on the complexity, it may be desirable to also create a helper function to instantiate the validator. For example: + +```go +func stringLengthBetween(minLength int, maxLength int) stringLengthBetweenValidator { + return stringLengthBetweenValidator{ + Max: maxLength, + Min: minLength, + } +} +``` + +#### Path Based Attribute Validators + +Attribute validators that need to accept [paths](/terraform/plugin/framework/paths) to reference other attribute data should instead prefer [path expressions](/terraform/plugin/framework/path-expressions). This allows consumers to use either absolute paths starting at the root of a [schema](/terraform/plugin/framework/schemas), or relative paths based on the current attribute path where the validator is called. + +Path expressions may represent one or more actual paths in the data. To find those paths, the process is called path matching. Depending on the actual data, a path match may return a parent path for null or unknown values, since any underlying paths of those null or unknown values would also represent the same value. This framework behavior is used to prevent false positives of returning no paths for null or unknown values. + +The general structure for working with path expressions in an attribute validator is: + +- Merge the given path expression(s) with the current attribute path expression, such as calling the request type `PathExpression` field [`MergeExpressions()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/path#Expression.MergeExpressions). +- Loop through each merged path expression to get the matching paths within the data, such as calling the request type `Config` field [`PathMatches()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#Config.PathMatches). +- Loop through each matched path to get the generic `attr.Value` value, such as calling the request type `Config` field [`GetAttribute()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#Config.GetAttribute). +- Perform null and unknown value checks on the `attr.Value`, such as the [`IsNull()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr#Value.IsNull) and [`IsUnknown()` method](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr#Value.IsUnknown). +- If the `attr.Value` is not null and not unknown, then use [`tfsdk.ValueAs()`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#ValueAs) using the expected value implementation as the target. + +The following example shows a generic path based attribute validator that returns an error if `types.Int64` values at the given path expressions are less than the current attribute `types.Int64` value. + +```go +// Ensure our implementation satisfies the validator.Int64 interface. +var _ validator.Int64 = &int64IsGreaterThanValidator{} + +// int64IsGreaterThanValidator is the underlying type implementing Int64IsGreaterThan. +type int64IsGreaterThanValidator struct { + expressions path.Expressions +} + +// Description returns a plaintext string describing the validator. +func (v int64IsGreaterThanValidator) Description(_ context.Context) string { + return fmt.Sprintf("If configured, must be greater than %s attributes", v.expressions) +} + +// MarkdownDescription returns a Markdown formatted string describing the validator. +func (v int64IsGreaterThanValidator) MarkdownDescription(ctx context.Context) string { + return v.Description(ctx) +} + +// Validate performs the validation logic for the validator. +func (v int64IsGreaterThanValidator) ValidateInt64(ctx context.Context, req validator.Int64Request, resp *validator.Int64Response) { + // If the current attribute configuration is null or unknown, there + // cannot be any value comparisons, so exit early without error. + if req.ConfigValue.IsNull() || req.ConfigValue.IsUnknown() { + return + } + + // Combine the given path expressions with the current attribute path + // expression. This call automatically handles relative and absolute + // expressions. + expressions := req.AttributePathExpression.MergeExpressions(v.expressions...) + + // For each expression, find matching paths. + for _, expression := range expressions { + // Find paths matching the expression in the configuration data. + matchedPaths, diags := req.Config.PathMatches(ctx, expression) + + resp.Diagnostics.Append(diags...) + + // Collect all errors + if diags.HasError() { + continue + } + + // For each matched path, get the data and compare. + for _, matchedPath := range matchedPaths { + // Fetch the generic attr.Value at the given path. This ensures any + // potential parent value of a different type, which can be a null + // or unknown value, can be safely checked without raising a type + // conversion error. + var matchedPathValue attr.Value + + diags := req.Config.GetAttribute(ctx, matchedPath, &matchedPathValue) + + resp.Diagnostics.Append(diags...) + + // Collect all errors + if diags.HasError() { + continue + } + + // If the matched path value is null or unknown, we cannot compare + // values, so continue to other matched paths. + if matchedPathValue.IsNull() || matchedPathValue.IsUnknown() { + continue + } + + // Now that we know the matched path value is not null or unknown, + // it is safe to attempt converting it to the intended attr.Value + // implementation, in this case a types.Int64 value. + var matchedPathConfig types.Int64 + + diags = tfsdk.ValueAs(ctx, matchedPathValue, &matchedPathConfig) + + resp.Diagnostics.Append(diags...) + + // If the matched path value was not able to be converted from + // attr.Value to the intended types.Int64 implementation, it most + // likely means that the path expression was not pointing at a + // types.Int64Type attribute. Collect the error and continue to + // other matched paths. + if diags.HasError() { + continue + } + + if matchedPathConfig.ValueInt64() >= attributeConfig.ValueInt64() { + resp.Diagnostics.AddAttributeError( + matchedPath, + "Invalid Attribute Value", + fmt.Sprintf("Must be less than %s value: %d", req.AttributePath, attributeConfig.ValueInt64()), + ) + } + } + } +} + +// Int64IsGreaterThan checks that any Int64 values in the paths described by the +// path.Expression are less than the current attribute value. +func Int64IsGreaterThan(expressions ...path.Expression) validator.Int64 { + return &int64IsGreaterThanValidator{ + expressions: expressions, + } +} +``` + +## Parameter Validation + +You can introduce validation on function parameters using the generic framework-defined types such as [`types.String`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/types#String). To do this, supply the `Validators` field with a list of validations, and the framework will return errors from all validators. For example: + +```go +// Typically within the function.Definition for a function. +function.StringParameter{ + // ... other Parameter configuration ... + + Validators: []function.StringParameterValidator{ + stringvalidator.LengthBetween(10, 256), + }, +}, +``` + +All validators in the slice will always be run, regardless of whether previous validators returned an error or not. + +### Creating Parameter Validators + +To create a parameter validator, you must implement at least one of the [`function` package](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function) `ParameterValidator` interfaces. For example: + +```go +// Ensure the implementation satisfies the expected interfaces +var ( + _ function.StringParameterValidator = stringLengthBetweenValidator{} +) + +type stringLengthBetweenValidator struct { + Max int + Min int +} + +// Validate runs the main validation logic of the validator, reading configuration data out of `req` and updating `resp` with diagnostics. +func (v stringLengthBetweenValidator) ValidateParameterString(ctx context.Context, req validator.StringParameterValidatorRequest, resp *validator.StringParameterValidatorResponse) { + // If the value is unknown or null, there is nothing to validate. + if req.Value.IsUnknown() || req.Value.IsNull() { + return + } + + strLen := len(req.Value.ValueString()) + + if strLen < v.Min || strLen > v.Max { + resp.Error = function.NewArgumentFuncError( + req.ArgumentPosition, + fmt.Sprintf("Invalid String Length: String length must be between %d and %d, got: %d.", v.Min, v.Max, strLen), + ) + + return + } +} +``` + +Optionally and depending on the complexity, it may be desirable to also create a helper function to instantiate the validator. For example: + +```go +func stringLengthBetween(minLength int, maxLength int) stringLengthBetweenValidator { + return stringLengthBetweenValidator{ + Max: maxLength, + Min: minLength, + } +} +``` + +A single validator type can be used as both an attribute validator and a parameter validator, as long as the validator implements the appropriate interfaces. For example: + +```go +var ( + _ validator.String = stringLengthBetweenValidator{} + _ function.StringParameterValidator = stringLengthBetweenValidator{} + +) +type stringLengthBetweenValidator struct { + Max int + Min int +} + +// Description returns a plain text description of the attribute validator's behavior, suitable for a practitioner to understand its impact. +func (v stringLengthBetweenValidator) Description(ctx context.Context) string { + return fmt.Sprintf("string length must be between %d and %d", v.Min, v.Max) +} + +// MarkdownDescription returns a markdown formatted description of the attribute validator's behavior, suitable for a practitioner to understand its impact. +func (v stringLengthBetweenValidator) MarkdownDescription(ctx context.Context) string { + return fmt.Sprintf("string length must be between `%d` and `%d`", v.Min, v.Max) +} + +// Validate runs the main validation logic of the attribute validator, reading configuration data out of `req` and updating `resp` with diagnostics. +func (v stringLengthBetweenValidator) ValidateString(ctx context.Context, req validator.StringRequest, resp *validator.StringResponse) { + // If the value is unknown or null, there is nothing to validate. + if req.ConfigValue.IsUnknown() || req.ConfigValue.IsNull() { + return + } + + strLen := len(req.ConfigValue.ValueString()) + + if strLen < v.Min || strLen > v.Max { + resp.Diagnostics.AddAttributeError( + req.AttributePath, + "Invalid String Length", + fmt.Sprintf("String length must be between %d and %d, got: %d.", v.Min, v.Max, strLen), + ) + + return + } +} + +// Validate runs the main validation logic of the parameter validator, reading configuration data out of `req` and updating `resp` with diagnostics. +func (v stringLengthBetweenValidator) ValidateParameterString(ctx context.Context, req validator.StringParameterValidatorRequest, resp *validator.StringParameterValidatorResponse) { + // If the value is unknown or null, there is nothing to validate. + if req.Value.IsUnknown() || req.Value.IsNull() { + return + } + + strLen := len(req.Value.ValueString()) + + if strLen < v.Min || strLen > v.Max { + resp.Error = function.NewArgumentFuncError( + req.ArgumentPosition, + fmt.Sprintf("Invalid String Length: String length must be between %d and %d, got: %d.", v.Min, v.Max, strLen), + ) + + return + } +} +``` + +## Value Validation + +Validation of custom value types can be used for both attribute values and provider-defined function parameter values. This can be useful if you have consistent validation rules for a specific value type across multiple attributes or function parameters. + +When you implement validation on a custom value type associated with a schema attribute, you do not need to declare the same validation on the attribute, but you can supply additional validations in that manner. For example: + +```go +// Typically within the schema.Schema returned by Schema() for a provider, +// resource, or data source. +schema.StringAttribute{ + // ... other Attribute configuration ... + + // This is an example type with a corresponding custom value type + // which implements its own validation + CustomType: computeInstanceIdentifierType, + + // This is optional, example validation that is checked in addition + // to any validation performed by the custom value type + Validators: []validator.String{ + stringvalidator.LengthBetween(10, 256), + }, +} +``` + +### Defining Value Validation + +To support validation for a custom value type, you must implement [`xattr.ValidateableAttribute` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#ValidateableAttribute) for attribute validation, or [`function.ValidateableParameter` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ValidateableParameter) for provider-defined function parameter validation. + +Both interfaces can be implemented if the same custom value type is used for both attributes and function parameters, for example: + +```go +// Ensure the implementation satisfies the expected interfaces +var ( + _ basetypes.StringValuable = computeInstanceIdentifierValue{} + _ xattr.ValidateableAttribute = computeInstanceIdentifierValue{} + _ function.ValidateableParameter = computeInstanceIdentifierValue{} +) + +// Other methods to implement the attr.Value interface are omitted for brevity +type computeInstanceIdentifierValue struct { + basetypes.StringValue +} + +// Implementation of the xattr.ValidateableAttribute interface +func (v computeInstanceIdentifierValue) ValidateAttribute(ctx context.Context, req xattr.ValidateAttributeRequest, resp *xattr.ValidateAttributeResponse) { + if v.IsNull() || v.IsUnknown() { + return + } + + if !v.isValid(v.ValueString()) { + resp.Diagnostics.AddAttributeError( + req.Path, + "Compute Instance Type Validation Error", + fmt.Sprintf("Missing `instance-` prefix, got: %s", v.ValueString()), + ) + + return + } +} + +// Implementation of the function.ValidateableParameter interface +func (v computeInstanceIdentifierValue) ValidateParameter(ctx context.Context, req function.ValidateParameterRequest, resp *function.ValidateParameterResponse) { + if v.IsNull() || v.IsUnknown() { + return + } + + if !v.isValid(v.ValueString()) { + resp.Error = function.NewArgumentFuncError( + req.Position, + fmt.Sprintf("Compute Instance Type Validation Error: Missing `instance-` prefix, got: %s", v.ValueString()), + ) + + return + } +} + +func (v computeInstanceIdentifierValue) isValid(in string) bool { + return strings.HasPrefix(in, "instance-") +} +``` + +## Type Validation + + + +`Value` validation should be used in preference to `Type` validation. Refer to [Value Validation](#value-validation) for more information. + + + +You may want to create a custom type to simplify schemas if your provider contains common attribute values with consistent validation rules. When you implement validation on a type, you do not need to declare the same validation on the attribute, but you can supply additional validations in that manner. For example: + +```go +// Typically within the schema.Schema returned by Schema() for a provider, +// resource, or data source. +schema.StringAttribute{ + // ... other Attribute configuration ... + + // This is an example type which implements its own validation + CustomType: computeInstanceIdentifierType, + + // This is optional, example validation that is checked in addition + // to any validation performed by the type + Validators: []validator.String{ + stringvalidator.LengthBetween(10, 256), + }, +} +``` + +### Defining Type Validation + + + +The [`xattr.TypeWithValidate` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#TypeWithValidate) has been deprecated. Refer to [Defining Value Validation](#defining-value-validation) for more information about using [`xattr.ValidateableAttribute` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#ValidateableAttribute), and [`function.ValidateableParameter` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#ValidateableParameter) instead. + + + +To support validation within a type, you must implement the [`xattr.TypeWithValidate` interface](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/attr/xattr#TypeWithValidate). For example: + +```go +// Ensure type satisfies xattr.TypeWithValidate interface +var _ xattr.TypeWithValidate = computeInstanceIdentifierType{} + +// Other methods to implement the attr.Type interface are omitted for brevity +type computeInstanceIdentifierType struct {} + +func (t computeInstanceIdentifierType) Validate(ctx context.Context, tfValue tftypes.Value, path path.Path) diag.Diagnostics { + var diags diag.Diagnostics + + if !tfValue.Type().Equal(tftypes.String) { + diags.AddAttributeError( + path, + "Compute Instance Type Validation Error", + fmt.Sprintf("Expected String value, received %T with value: %v", tfValue, tfValue), + ) + return diags + } + + if !tfValue.IsKnown() || tfValue.IsNull() { + return diags + } + + var value string + err := tfValue.As(&value) + + if err != nil { + diags.AddAttributeError( + path, + "Compute Instance Type Validation Error", + fmt.Sprintf("Cannot convert value to string: %s", err), + ) + return diags + } + + if !strings.HasPrefix(value, "instance-") { + diags.AddAttributeError( + path, + "Compute Instance Type Validation Error", + fmt.Sprintf("Missing `instance-` prefix, got: %s", value), + ) + return diags + } +} +``` diff --git a/content/terraform-plugin-framework/v1.15.x/img/.gitkeep b/content/terraform-plugin-framework/v1.15.x/img/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/content/terraform-plugin-framework/v1.15.x/img/README.md b/content/terraform-plugin-framework/v1.15.x/img/README.md new file mode 100644 index 0000000000..66e6d2d633 --- /dev/null +++ b/content/terraform-plugin-framework/v1.15.x/img/README.md @@ -0,0 +1,25 @@ +# Image Generation + +The images are exported as PNG from Whimsical. + +`Export` => `Size 2x` => `Include Background`. + +| Image | Whimsical | +|------------------------------------------|---------------------------------------------------------------------------------------------| +| apply-resource-change-detail.png | https://whimsical.com/applyresourcechange-FK9oXfU3ugzRyj4YNWuHZU | +| apply-resource-change-overview.png | https://whimsical.com/applyresourcechange-FK9oXfU3ugzRyj4YNWuHZU | +| configure-provider-detail.png | https://whimsical.com/configureprovider-5kUd5iMxCRQ1hVs4QiE9B8 | +| configure-provider-overview.png | https://whimsical.com/configureprovider-5kUd5iMxCRQ1hVs4QiE9B8 | +| get-provider-schema-detail.png | https://whimsical.com/getproviderschema-5dwaqjyiFoUv9DPTk9RYy1 | +| get-provider-schema-overview.png | https://whimsical.com/getproviderschema-5dwaqjyiFoUv9DPTk9RYy1 | +| plan-resource-change-detail.png | https://whimsical.com/planresourcechange-S5G9LdER9CuqRCjBmqDG5m | +| plan-resource-change-overview.png | https://whimsical.com/planresourcechange-S5G9LdER9CuqRCjBmqDG5m | +| read-data-source-detail.png | https://whimsical.com/read-resource-datasource-UGcyGChMxm8w12dh5emiD8 | +| read-overview.png | https://whimsical.com/read-resource-datasource-UGcyGChMxm8w12dh5emiD8 | +| read-resource-detail.png | https://whimsical.com/read-resource-datasource-UGcyGChMxm8w12dh5emiD8 | +| validate-config-overview.png | https://whimsical.com/validate-provider-resource-dataresource-config-E51CLC4wycgKoZfsTjZuVA | +| validate-data-resource-config-detail.png | https://whimsical.com/validate-provider-resource-dataresource-config-E51CLC4wycgKoZfsTjZuVA | +| validate-provider-config-detail.png | https://whimsical.com/validate-provider-resource-dataresource-config-E51CLC4wycgKoZfsTjZuVA | +| validate-resource-config-detail.png | https://whimsical.com/validate-provider-resource-dataresource-config-E51CLC4wycgKoZfsTjZuVA | + + diff --git a/content/terraform-plugin-framework/v1.15.x/img/apply-resource-change-detail.png b/content/terraform-plugin-framework/v1.15.x/img/apply-resource-change-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..0aec591001b8e0f234cc4eb9a1a1b8e40d4b809a GIT binary patch literal 329780 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

S*GzFL`qk?v1dI>ksQT4%H<-48IqOks_; zFag0QFhb6hwt$ybMC^z2f;wfcAL|a5$blHkgpUf+fj8lHnp;*Iq=dify4B^k%;Z6O z;VLq%Z2b*AU|j(&K|7Qo&)g*MG5ccY)W*SQ$Q% z!@~dvZ;SQy@oMD>H%RNz6vw;n-ETnA@2%)80GQO^aElWW2qAn7D8?**hC+;j4r(y~ zwVnciw<&I}tI!r8!_jp(@9|YtQen%QM`I!`pA)g4 z7_d21ndr9zh&pYd$(HFT`R1D+Mk-_s)6?s8zvp$#3d-Js0yEo>^F*tsh%rg8ReLiWO`CPui8SH}xWDyi1a; z=p5J%#V6=7ONhMQ-9$MJe`#dA(L-^w*E703(lB$(-ePlSuEu;2)P;M8bbyHz#Pl6+ z_qy)eCh_|FXnXmGB$xD93Dfr|&2#V;8n85h?8BToF>vRLf-BnJG6gHR8ZY11Xw3O! z_mp_HtSZLu&aGv~iqJBElqt#Eh5@;VAl-gIegF&@X6?8OTXBuOs|o$fwSCea0Hax8#WorWEH8r#R ztkOhO-gOLr$*yDV_&CUhu0F4=)UwI320B%z{booD^G`9MUz`y@10pZ)fv)G53hF{i;l=d|!?*2Vk z{ef|at;8{$`OtIW!dBL2ST=*^pKE}5L(ZAAiJS}6y%ms=@%^AB# zN z%%1Z_P)J_aE2S5uG?*lxavQDcWeT?$h=-sIuA)(3FIak1Q*|L7D!( zQzg$}R1a-p$<^XZ9I_;9nnk*zd~PHHK9R58$oHG8v*pqvXiAaIksUGTj`6k7=j1A{ z3$xb=*HHvVg*eTxzhF>T=mCY`d5qLAvE^iLAg_e?xI~wvW*H8IuqSA_-q>GVkvwkhjq>h7PSRgS~S)-hM|*a7jS>< zepO0JRIW>0*+iA|DyK<{Oi8AFU)ah zKK|b3R$ggL;BN-PiuofzgrdYeQcu575sa;B zJszg{E=x&=JF4M*u#-*TmJ>q30^H)9tOfA@BwZC>R{)wm71j+kJ&!3Q?xz;S!f%y5 zwx22)>9$IRBFGolsW1AG&2G5q`#Mp^CQN7h@5gO~CRTPdHUVtZFRacx>7dah`xAVX z;u5ij0gz!q9HweBs@vChtPDc;$q0^0V`=bz=p&7wKubT+Cs#^+*uLDGQ4(Za-my%NG>K#ZzOSTK^_g%YOQMcHKd@=~AXRUfL44m;oS=$s^sqY{oy z8lZi;uU965{?@yp*Ky5I;!rf?$h2m5(kZCsVqn zH?}?-CYqxW0(|0=((SpE>tz{Jm7A}`ER9^A?QfQ5WklMImbh&VTEF1z9}!-L$2!a3 zL+2Ig3AA-)YP5wKt_%3MVe)%_mdC=lVF+v2%Qm5Qy5y(|bC(7Fv8N#Vq)O`M>+~Y8 zT**8Qy6|jWU8WzEzmDjPjeM_P-wsW zSgtF$YN`gkxUhaZduEw#hx!_bL-W2-xh2ho*v4k@KfG}}Y#icqw9u|Q(m+y7?mG+G z^ICb>JRdcoL@9%(3b-Yb3j1=z?@{HW7hr+J%rNxBNV_#{%}+2+(8-n=~?-I8yL zU{g9`Zu_2yN_teu1@kPgQc;B3pckQ6rp|bxH=OFgl~Z>xJqEzEA|?3EWAp`PtjLH~ zDy%g!BApR1e_0@g^PZGlS0HZXDp`vyl6TaWwekJaJl*q2M3n1tmw?FZmdy)M4K0B* zKl{D@_jLTr5iT!Y>CkFQ+TH@n`8xq9(*}St!BPD@7liM-&?M|#GahV%S zt-7bfJqCP+BmgWSO6&r*O|w9MIC+9FhaxiVUjsF|AFq+n^l|wbwr<78!MYY#OQ7Ns z(|S|hOQEN5Qe`~>hsHRPukO5HsIRroB=0#$ZLwDOvur!1ZWxiP_ANI~WI!h;GrJa4 zU&8rG{5;I$6g-;-4D!mLDX;yR^K*s;#?(SC5)^mpDYt1s!*d zF0@4bM#L~r^(&~&ufN%vNpZZ*z@a`~3%3^~Mq=i5nPX2g8(hWSzX+DTd?aZ5p)bM2 z4-;yW>Nk?7UJXuP&O+m*lB7mv*wOX3g>p58E3t9>lF=0b^ZB~h1#92mz_XMQbQqb@ z_R@fln(8N2>rar(<7Hb{K6e+Oe?X6Ax{9t0pjgQn_QrG<#1p493glDeQl-O`-+ivQ zT>)5(sV;hxhtAzk4iDqL@L50)YMCEh5WFe9CBdQ7fPXWo7YBn9k;?0qQk-7i4h?fq z{K9ra2#T;09%~brjFA50!;*}QIRfKzfn>-x-ooQ!%QVT+X}py9k3Q}1elJJ)tya#j z%8W~Vy>j2<8Mc({WX0&Wryn=WbF;2-RY~0Bz__C4Na&AVz&}~NbyHg{v5M^$Et)*Y6*_?cOSUk ztsFx13u=bDllv$RE{-l$kHUFeEXD9)e?ykrqfaS?%etLjjro7E zZptGH8iCN=mjcGgL$kU%@57R*NtUI^;M_w45&;v$U%n;xDd&7$7Bp9Gxtt4K7AzZz1|ga z7sx&}z^P1vrHCl={I1IJ7T7R60h*O1A~Pl=ZOBMrGnwHGJml1jvEYA9H+e_D&IB_H! zU2hu{TB#I4S!Iq&gBMGt_W*#d)o25=fvP;RxxR)AXowUTCpyaTWO@sIr@>(gAc-BY=b?o4=`IsEqRCLR^0 za>|HYLN;CaGaPO;;i@)}`t^pd$_;Q07(7a1GYME3D{q%`tJ=k})su@q?sM>O(?U~Y z4r)Yxc@?@pFnBb>y=qvo`tka%`9cA=4=+0^)gA!P(v@SBDuhs0DJR{;wHdqLbze_2 zrES`=XxevP8p`92w77(uzPm|0K3Bj~AZMLLpN+;!VcIWLcuz zLTjyH`5sZ7d^i@=Wy$QTGf{cr1f&9jDJ&F%u^e?98T13a2Z*6ybUU%P4N-DI~mQP zp}4Bf7D6+fay5?p<2VWZx{Ra3CVCbOufgac_%rV6$96~ZK=z)~a!cVU9ttou1BdzB z8@6=sfws}gZEY~(1W-*i9Le@D8k|V2P(nO%Jr-8ZAPoDW#dZ=`P4E3Y8uQzi6RBOpedsl zK%Uc`Y>g~_>00l@puWepKvv1=X=GOI)h^^@hA~K$ zTJ#=0-D$-`Z=OKWOOpIv3Npn70*G%Lgq=Op8NtOAC0|A%EkOw+#r|M9@WXyqNLq7M)%-3V)j6O3M2Lf#PD5BQZ=7&D$pyauxwRV4EU@JTmHZ9X{lG}TCjBYVy z5VY%cxP@Lpo|J#MW|carPk!6&9Ts5YEsk-zWptL)p~M$*yB@9N{XguzWmJ^gA22F4 zf(W7_NTYyAD=9sQv;q>+p-6Xk45)x~OCup5-OYeOclV%l4&5_zACAB|ocDj%`{91N zYn?AFn0eUG-uu^Wl6mS(Tdyd7t zG1=|XZPE|`s(+`r+HSHK&Pbe=`t<9YZ&PbR?X4YIlg~eDM87fuyn4BU9-QgbC+37- zi`J=_dm8FjKTh57q!MN{4W^26H|%bCZz@xhE)y%Q&7$2TkZ}MEho*j{)g~fSn4vMm zcwvR?6_{E+MRGzRL;w${W{RVvp1(Uux>kJlLSFwJe;pI zL=+g`ys@1z-&33%brN_UaXz zALBRs^NSwuhJUMYrdL)?PTNuY@=|btYjv%;Gl8MRh}6y0zq5v81-VCuD~^wR>99V* zQc%01<e+f+)?!8Snr(8l_Euxvp@&M+lXG~HWt9C%_K!#UaIEW8zLn{_p4VG9 z;Qi%cPsAZJVkwsQn%PPri1(#Co}P8o@t_5Yp6vt%iM2g-h}d+D-H3+47%M3`{a&TJ znDcDvjMc%3nIk$xvkZ6bJg_hFfIrE&G8nWL%Oj4r#8fe{s%1E_ z?6EaqoDJ*a$51PIU{nantfVmNsd6`U{v8%YI)9A^@KLyzZ+9?cvm^F(p9>{>y327H zYort&mYi9~-@kq@Dbl{}V(#?Ooq+%_R$H&&A$#<-1sXMm)+VlV9+b%1GQ{!5zpMlO z=1kxaK?)(0^)&L($N_d;m?}cnYAb374gd)glJfk3dqK;fiGcP)LdMyX(o^}lXt`Z- zoBqy}={EcsL1qHzM9t>ob5b+}U>P83N-QRRTcsR6LbpZ*L^2L$9Cc#U z2kT@+-`fP4lsAif7jNl-)xrY)6iENZ+b99OH=_0dasDX(F+Ul*t9limG8~Bf(yuOh zRqz3|La>qN7-V*%_?f@wIV?4&s6ZtpI;gl#a0%%F(-8CBy}g>lsorYB&!G6)?d9#p zxLY%}nSjdJoFP-a{H!p)yOx%W$C6|JxM$LW-=r{SDi;^+`CC{6XDp6b!aNf;C@Ti)#t-DOZ+#Sd#7Rv5jC z8(t`6)&vyBZWN@=Hj7NfFhC4iJrU-@r@85^JahZ6g|gejZBrojlg`JxWp4)6o#%mM zdMb@!`~j*Dq(&(+pibTw$SKhN< zu){#dL-+I%*xHdPem!HLmj;x8v33hCo&27I>NRIrugDtchY99i*V!$E+IUe_Ax*apKh;_9j6i`=lUWZ)C4ccQ{7P$T|MYp#YG(>TxZ!oxW~ zpB(?-#yM^IW#k^pD0Xdh@LT-XR~$s8Nj!riyn4%=#jWfbhb`~76%5+^R5P#NFx2gY zjcTm)K$uo|I?pp89n12I@-eKdpS{D^Zu$anf|Qai`%su7egZ#}PsP>l%8ln?3PO!I zV?4fH$=k-^gEGQKoQA2nybeE#M)^3j46{sMj%%1N{aS;7Fe)rU9fw)1bK8^3r;?2C zPk?kyiuvV`fIC2p!0b!&m|mDlfpn|XcZ5N%)s|}(V87M| zI&QFXx3f7d4>I3|D&?6{inFYLdc-`wR5guFC0Ho6~|b)g(Ztv z;x#%AsslOV9kzaOpm&N=e+s$Wq4|P=vvG!H6D|T6#~PKP_&Ign0YKUBUk9RqYOL6C zBSCeYH*A-6-8#x#KwF!VsdCm_$#r#SjT3P3OP5*bbTF=yZI(@VknG;yd|bzy6+&3c z>!ggnH)ZI0fP(y7qCoY0R}WeDLa*ePQ4vSkxaL+wbW7LxVr3MQSaz>lu^;) zk5OIwE346+&U|dqQ$v(xuiRK%RBLF+RuHibH=r45P~6d43ay9zXlYt{Rl}-XP0K|p zq)RE6x9ha$DocM`@MJ*7;EUR1BVg-xy3#2rmR~djnjk#wU@-)-r%)Y4dzJZy%BWAr z!FLzcWnG>nF0_A;T0z+28F1>Iee59>((d!rj53;&tL{tIaO#4fMJ11NU0EJ5@i>Az zvCc=q8jrIulXKW_!J`fuT59a3NLip-C!6Ga$datHvHPn@{gj&d+)%sC3SS1agdPBm zGdQB-M{3|+hug{Z@Y6ib$&(ty>mJyV!(InAlJZeZfjUih{qMx3X&_a)Kt`@fXhwvp zm=ccsD2G{P0XTA|3zmaJ9Aj9<9qy809o5Hinn$13v8$>5QID66r;DR5o1AFYBf#%F?TrTJ>&feD zT&uqANtZ?0je{}6Wpzaz)0h`y6^fKP?EK>J44}H**3G6)W1$&`Jv&R1(9m~BC_!RLfbh>Yj!du;T(cRZk7!!atVsHUPF zmnqF~Tur7D0^+O8^r=Z=H|XZBdZPxL^sunZQzP%|!`GQqRHkH})>_u>8N%BNHlK!3 z0<2+J<^{5I;lM>(5T5i=NjfB0e?`Z0|!sqMgs8?l46Q)a|a$1e-T#F8X?VFW7=JFBWW~KPLA*;^Trq#-n z)rxi*e#eUc-e{?;kT&$&LIRhrC zf(6Z`tc|}7QW`5sgVHtkH0L)@@KPM>>OR%Js?Bvnc1!ne?+}`&?S+*IRJbJtPSp*1 z$jI!KF3pB42hjo(I~mf_zBDx z@K)rKFqS6?-5WG~CR{KU;O-oGszgtt;oUEcezpCj?SA_$0hh$3T>}ewS*Ygxq@RNj@@C@WaaaC$zg29h)4!#3UBl(XbLg!KE#Y5jC?Y7PtB&S*W z&hcpcODT@;f>RlyflMnvZypQd z8x>a}gw^Ta>EU&(4Eb2AYH}8HarRsK@cO=dWm}rvy1G-zUl+Vof(qXkI_lfBh(9@g zq{pCeA@Yyotm1ZIYrpXO=00;jc0f$`7w9iPx75vbKfDfT*URtd>WBn>!f0{psO+A8 zGPqf4I2-6}*_^6A>{32XBW|E#YF(n$U3*fVt6DddJH_DhtXl}7Kl=$sXaS(g z>G}WDzE(~6KZF;XIg@dVJh!^`)1!um3#+k!|q zTIw;bzTJ)6-Lg+c&WnB$Y*Pujd1`?RFe4s&6ub3~$G2&haNAkH+UT$RhP}|3s|$g0 zDlRNJ1IoiR(7vJ6bJjSSZ)G_D9!oq=_$@K`BZF}^ow8RhdrS1q!LB-m(9`rvO2P<0 z`NUs@9-SyQeOLTI*4HkKvIy6a2#KiLCXU^&wBSHiB)i=&T)Uz2-jeCzva3d;hTbz- zN9Qf)WC+SN=T)RilKWGesYp?~E4EYLGJtwN`|?UC-QyiPpL|nG7E&XHuTIvy_VcAD zWxD=yf=O#YgV2*G#E@^Y|CjY`LW*a@jervfo?V4Y)EZCaWH_*5c&>F!0$m=WLHojl zGjTRYtVM>dKu!*ua_WNZO7Wc|j=H4Xn$nI*N0MyfUApFOXz(p9*Iq@tydQu~-kYhY zcg(KHgahPkAr)lchsmCcOHY{Sggiu2x+-yj7_<*VS=-kL>omXjo7=J~}0HP+4tBh>IEk{6S$AUwweEs<3 zyPCHQ zgodgo95R*aTggs1J-Qv7ZALYd5#In&(S<+!k&gv15%Jd_uT1pTMl4<_B%&y-H9zSI z9lFgH`Z$6)cOkJigM@xP=_J0pY77H!=ewsIWrQ}_a9esEe>zZD+?OH$7_j!q3RA`d zr^=L*G;Y?t`v8QuNdbFza@P{6#R6TMc!ODH$E>Pk7hRJn$jJGk@;n!yI;g)GpHDK+ zCo?J4v;|si^ZC?Soz5 z3%SGkns0GqpN*fJWcc7q1bzA;%lkmrDyuKd^V~@9huW3f7S2_wB+1nvGc~qkL`j>f z_)`o+kFQG23rWL4lh-+Wj;(g;>eWIFs3vF-6(=;Of$p)*9SS;k^tY>x+(2zWX2 z89ifH3E&i!xqJ?)oY+~`_2_+dMhsH%>@Gvu2JJn8^m}Nl4p{4er2t%yn(`?oUD^T(P6p83w8tN@HOD8tlX_NlbeHgk9ImzxCF|>0L^M5O(H}p zqI}A;e@B3mW{ienOgfl+^jUJztAgWkr>j6Yt0xBVzJL=2f z4I+oRhE!_RZ_3n$&${?@K&g0-k~z)CfBI^1yc)=JFNl2jN@)iro$I<2`4}*q-1oAUtqvRQ`eSPMg%! zMAdaT(3oYHX=Tt~srw&Q6EXn83m9fmYoprpSm$28Fi1s2sNk zx133VyvhF;Hrnr%mCBn}QLekm-n(P-i!ifv)7n|yuk(A~ukR8WYBj#@vKmxBWMY_K zKl`v!?Utn0HxvZ8_fzb75%(!tBb?=FxB?-ghgd)xRM40$L(;F9Fg!AnKtY{B zBP0AR@n}h;J~IcZc_Gkse!{kU(x9s&!4^L3tNyyZ2X!sr}O_ zF!7!;jb_db*X@ei47S~w+X$m6Uhd}dAcnYQI5Plev{|Vc_?kgXV$hMaaP^68o72qw zSoe~Amh6J1CrO(~Cz?kDX8o}y7OVCZdf*2mu2ZhA>DKptREya((x^IzdE8k32~MnP ztXOi4@Q^6_`2l?YD&A^;^|$xPZ^G6bTa!u%PC;gb9LGa=^rG5vCkZ`Un#e5V+U z2=cA)_%$Dy+BD#KW~PW#7Vp@*I{n;F+NG#IoaEd=XeQqpe)O(?&vcv&-QxLjDXMWO zZ9nR!InZ8|zFRA@N;70CrCxWwrYT4tHs56Uy|er4)I*)#d>N%=<>TuQ>dSd22X^ZW zbc%nB$ytE#N+;Oj97Ambu#m``W)q!A*R-ADj!K1`17r3yV}2;zt8ZnZhEqldqnx8I zi{OUW#ak4quuMFm<3}mAM)fzoW8qOkQ-XKO-(z#umaJ^No^h>z))>*DFOeJ6wv+;) zT=5+2ilJxAC2m!DUlpR*1J*f#ZktF$ZB50MhralrqnU~h|sP%^67MS z0fBR^m7Zz|TP;A5sux^xcb>`XP{VTzZp=qp+>Mh;^F0(SO@X|7V4jaNhDDs<8N3QZ zCBrZtR@)-@h}+w{Z(u*US|TJuDFs~?l11Cj)#SJ3OJXJYEF+;>AtERIAc#!+R>yHcGLtKjU?KM+WnKchp=AcjQ8Hi>A6fY+=t{;&|)puVn`qMP2$fSM09| zN#XI5h0d5v9k)Sd?eEvw1fzIozQ(WhU1@U<5%@)1jx)^aJ_%r|u;WU}Eh&nTi!fUrlwvIj(8o2cFZAB5MD`j^WySQ6^+yTY+i==Muz3Bm4((+@8 z02V<~5{(tooXkCd@w0ZW#}Trhes!m{dvt_a4YPR#F0co;p! z?a`wn=Y<41b9L^h#_tmGKW}qlBOdd5oK#+Sch7Zu{Sy@4|9QgEKV)A2$%c z_50wxnH^MGN(g~owQC9GH-wUY@vQSXnz8Lqk_bH{e1R<~D!sQvR>m5pyn!kzgg^oz{b!Yua40;v#Xvg_(cL5B`GReMDsy@+pwQ=W(SolPg( zLf3|f%L>-y7{_6RCQ|Q2%1EV$86h%#rN<`Go26C#Lnv=P4>^7Q&fn8J^+rA*^$+e0 z-ZxO{Ozts9-CNU5hBO62IiwD~Ju-!Pwizbul@2qZGh&w5#H}%hrPbpi7!*2uroODk z1Qzi{`aV0_3A}g8EIp4E?tX6Tjqh8lk7KA&ym57sC9bd$nI>S{Ct>t}UEfHr+*P)Gr2ak#gPrkhoZ?ATY%}V7M^4@m| zUqR>q-!d=Izmqb|#L%D%JWXa1kD6k{NODzsm9I|Gi#@P{9no~12OYNeqT4yy33=!6 z_ez6)%Ifj*ZVqv>htl#u^~02eTy6dm;!?Mt(o62$qVplUpKQOpu&Ld9<5@tqP}{57 z{Sg~h9N~VVlBe0adGC&C6(7Dh9?4>*z=!x@3j0@`63Nal>$M6Wnw1pazTX#*a-7&N zG!i~8k4bjdBpoa;MUHnmEHRTHk}2K_xcw?!I&k?N=CRe|)#01ujfFRHl=}|L;OcoK zfch%tZ$_gOAdY$gf~GD575aLx@MaCKotT~M+w4fn*1e4gwomXIf!iE=b@}>6S--|| z##eqCfp&~&Fs^-lo&1>$BcmZpbELhh{H{55vxi6MQ zvBqux;zXNrQ`=aQW#O~r?UlCCW zJ|V4w&k+(wlXR1oaMLb}M>Z|EP1hd`vBY%`)UrXN(7N&1g}0MmB$Mwfp^9!li0@bZ zP(51kUVp!4U@VD7BDlp~(1K@t0)?#aE4RmOW*r#C;hP$1cQaqzP?U!T_{}=4M)08f zQ*z4NyE7i-(z33Cq3RhG)y@lOUP)%Du{X4Vf3YLN}4%rECKSdr-pFN`$tn)~o zXV{wpJRCh-HZ%CF!XC92BeU>=!?6O^LB7#`pF|DL-W-d$M=2FW@1eF@`Js-;=!U8$ z`#wf*d_EudYP`@-!Pf}J-kJBy0l$DSZ1m8EXcoyeRu(PUDbs;AW}AU!*la8;`U8ao zS;6{ip#b(K0@3@8YD#L zwLcWFLjLq9@mCGWF2Pwed&tLqL)D3wV!PK+_`!@{1YrZ$yewO&Ky_7GPzv;aEt=eXaf$mvMLvO}| z9exL7d1vaqB)UBQ_@pB(CHGhJO6z+_B^15MKt#m$oFn;n^}U8W?SXLW0!wXN(zgq4 zy!_Dk<0FQeVLrFHw@cMZ-1$YS&7HG7Ra$ z^18Q=Y7Sw{G3%Rwgk{&em*!Gx6-2D?l}A0j_f6FWPt*rwS-&gWbCuXGwwm8%&&o|+ zEF>mz+dKyn9Hy~e*{x|%tP+ynSE4a(quMA`F)FwaG_NjE3Zsw}iBA;^Xu&PGZd*Il zQ~yGyYHgm3LKIZ5S7Sfk>OO#*8Dj9N!LWyaMsaY{U96RbdCgP@|ryvcN=Qm zqsOeo{S^jFKj7hZc42uL<9T4({z^(P!KCA>>r|Ct`}>7tCe%q9$Ga&#hXpcGop68` z*sp5y2r=~rlkHthq@N)0t4V>}5VQQaJZ76Mp)fa_DwgrqzeiCUc??54wB1!7-G@WN zbNl&;*jVoX#?SA}Cpy<{FknIKc0pTs@yPH=)M`}Qopu@EM+Vqq0hiK(yj%T4en$Cn z_n^(9{8z$duWx>PWyURI9P@S)D48*qUpn&x~QDQ)Y|` zX|sUWBZ?hS9<9l2Vr?-jWRc>+xKIR;$T(6YBg?9;+Qq-HnsP66^#GrO_tn(#qnQsc z3e}z!D|!e(RoG_D#*0L`%|>V?f+-?6a$a#Caq{v`a3oJD`u~LY4Gbt9x(}N4c1L=k zVuaQ>v*qh^6Erz(ph{A8@?;^HXihtk(gHvA8024gO3sIynu6>z21qnPpuNJ$mgD4u`{L=%I2FmkCGE0o z^gp-mgqj1SR^aN`9y4C?&Ncq98uUOtDvy>pNnHVWt3ja3u2md_F8pabG3y(*f+SCA z9ELbyXzmnL#ba_`t|wH1R^Pyp3NLSf^`$y#6r{h#Q>>!}^rDfPjs9Yj{)HcikHx-moh7N$d8ZykZB$175qu!UToftVjl1mmVumeEZKY zbH~?gzOL}#5+8ON5tvCy9=p!Wm4rtiBu38~Ur$p&D)C62d_Tp}7K79K(_AMPr$39@ zY)pSnF?Kw@y?8{6Y@nywbScTA0%iw0{li(!n8=35l;+RD++ z7JRKbu7oFdWIv=d4kcCkvrrfvd$t(7t0;Y!W8SFnyRj*NZLvL%Z1-|wHMsAVw9$T> z9|VR(kMxUUP7t=N_uaD?qI=oaM}l2$G0u9Y4a;+*xjH?knmK_-aJf(})u~VROv&=o zLh}X{jXMqqfG~gGGfI(D-f>TX=BibQ98K;DFWD*cL+RJJ?xBu8;jlZK%o8>^?kvA% zMr-^4%yXbEz9QoDY~6iq{kC6BipbAzV)}2sN6&Mvjn#L-I-{`oEBb)DnSKp1WlCZw z7^+g*K}95M6g>yxi7Q{))jH~H6A4S0yEmuhaP|8>2n$Xy?tc~UX%Li=eoD=Tg-tq} zU*CnlIniFwy6UXcHn^4_T4Pb8{E=`^r_B_}gF9Q4sl&cgkIY0Pbo=nkX7u%pHM;#VZlo-^Xn-B?i!gv43GuXaW&O{!m2!^8|10JOI7PV1m z%~nAO3EOShaSxnNbq2IMyIRr}`rTJyZb3(-#hWVnK-uIZOJ#1=#BkO^jFGq@29xr5x!}fGKBLVg3;|Fi|n_%h~tTsYMW?T*XaPQWz0vgzQj@nj#Qeu^6 ze=R?`h)-?FLJM{!1GuN*Mdyb8(sNKX^V9TkyhOehL3bDNYX0MkVIq&|z&+Gossq}Z z;!d|_H(3RY6N-4LNB?fNKfE|p&W>bu~NuB5A=`=rT2}}UI*i7%6K7nho@Pack z+h^K6Lvetf`l@pBT9~&KQvkNXUS-YHOLyz3If|T@xz6K2foN?iNnRck@7C8EV>5DG z0?rmh7sBG#eG*QyNT8^cf3Xpln32{I<^c@3E6zx#rC;!%uq;EVr%>(Y%XNbbZ$Q?XAW*Yo}ut_OQFn0j5keM-*_nfGvPyd z>IdWE8K?K00Emy!+g~F|OwsofY{N8_YSUk?6_i`H4&fa!wJS%PG9?;E?(Toa=<_^G zC0{Vo{^C8MI%mdfwfZR+=~(bw6Dqw&F4eg?V{-+Qz)B_MWp*)O`rXOaN{zh9*AkOJ zTZ2y(9dvcCy@J1@%{0fudf)4@g1Yuqyx&W1yyDdfCQU^R%^V9YzXk$fFIi0oz<|)D zXwKUe?^jS%oEwIrLWPllR8cM9$i5E523vyqBd&4zNl%m0ehv0;HM~@ z&-TEB? zG{E2dF143O8v(~a)4P}v*MbJ{NM0}LuyaNq2QEwzv9T$prK5{QEurnghJ>|pFtPr1 zH$QTLcYj*rV?3YNr%i-S#MzUanUNvoq8^u?k=eRAW84HiZ5tF6<1s(?;N|(y5kDH> zjn)IPoaaN*{s5{41Nhk4tLxtRNEjs6eLT{)@2<0d0|iBQ1bN<7KOd%@M4&3af30^E zS3w~>NH`)QoK6Z=+G#W$-w9?iN7T@hiqM?{|Li8Vo&!)x>b2E9mkfr$%Qh!!O7Z@B z05U=hFqLC>N!&~S2dO0lU=?#jPIk7;?^g|g(*v{&%R{Nf$o4>i(~`;1KS~psz`siR zhe3NSU~(FThKJv8ZI$XUny#Aq{PgT*|3KGkA7K7Y(2%TqXQcZh1)P-vxyknk9b{}H zuvQ7UP@omsd+%3;Jvc!cGEwK(5smpVV>X7jEZz|FdUymaof^i~)@p8a8Tuaz5(+A3 z=lU}phWf^-fVn5+dyaz#cl>}&MJMs5HP#8cGX;cD`som=pG%Y^f~@$0!s~TF4P78e ziu8$OG%bRSfni!$Cu5h3`_jq)+9(0&GxIn4+(XkDX{fjJwin0H=>Z#ZIxQ^xWWR6k zh(Gw@&DqwkK(0ghaib&SO@_APdmFItzQZOZVAtLGOPc-t1DF6y`iSxz007k%g79_- zjx6yAKQ&@#2{nG|rM7+LgJMC6dkEV+^fh@_bat_!i|7l)4{6ibiaQKa+UaTay9{(Y z%&gwL!YJFqx{ggsd(`q7aTy5ED0}b6kS#XL#L$yn>+!V!f0grU^B3xQ7(R{ z-OrQzCU?tcq0g#+uHlv%SQO+Kokd&5sEnt|EfOBi9xYeMoCwfam;|o*g&FeKDV_pM zT=(6@0eNYsaY>Cf!&s9;AJ>S))gHGisKq5Q=JbWMA!j6Pvp!rfs7+RRW;$p>M5N9# z?VZScuI0P0y(1$DY2*RCVwSSGuS@V|6qDjaY^oavd4?mhTIzSJy)duXj56ItadKrVn~=B#Ls~1NzprRF0&M8G}9h1MW;R? zaF_#+q{Xh%Kdcq$mKm^;%pa7ixBZ&4lq55no`M zK3b+4Ug;yK{>|JHVn55ncOCk-uu0y=CiDEMi6z)aZ~O)tYJjlD=yq77ptf1^bl=@z zN9D=admi`X>NgA0;$0p9N8qOlfc%Hj>N$7Be*1!YA{V6om4r`Hh6De%hWNehvOvA# zw&Lj6GWAW?vmN^JpqUne$LHf4sb}CM?R0lND=@FS6{ul=It&ObX?*rB5ceb~x@YbRTv)%|Q;;a8>2T^bC*=kn>CSHz#H znTqjx=QGfr;=a2^_ApS;Zu&SDVh~&HwE=#5gNF2vv<6F}L9M)4zyyq%;1(~)`7FS* zwFrU$)G;dkd%|+d7clK>48eE(3b=d8h9!)(=TpdjD^crm``lhDWeb@u)%0F(dk(VZ zdt^j(juu{5oOO{y=eYpDr_-qbgCc&+a53)E?-{k~2pG0fVfW4d+qX_#g7sa=~>xB<>0xuKbl{`34o6HYHw zHD0!by6Y->=S6nkUu$Rry3jQH!}Djap!Z&T7nkQ1dp&jVt>@VW3W5K>N$^Ow_A>rq zzZC<}{MCTdjq|sMVxWh8xORV%?dn&_3+=@kBI$z>w!W}AuW)&y+ZBkwsTwG;@%Q9e z><8dbucGtOw!C!U2I|bW440K9NoL^8{)4cK$%$`Ny{G z2fcNwZ+P23>HPP^*$csWKF19>H8nqglf`MxuIIFM`Pwi4i{v9AItsY zdB`d@z@LLD;g`3eNu*lj84{>j@swzF$|Q0k>#f?7t+;)*c5Y?6MCy}&Va}gFivewy z+SH=!<@sF_Yrn%d-ghEadE z3Lz(`Tv>p>MFw{U)A2BAiF_C~OTdu0(0(tUE%i2_swEP;UY<3_`#^pr;0C$@#|Fi7 zL#~7DLwjBavukJi&*h!`A87m+E{A?cU+~=1ZlO7uTK+(ukM{HO`sXCC4Zzij=3nEX zZB9`$|B)@h|F}7b*);$J52!6K>jo15GEPU+&ixC?|N3+GRIg7M$S}LK9Q8E-@Go_X zE=DO`$Uc(0pD#Wa;ZIIa`1bNQlz@RX9TuEI`p@^CzvbSk zk_o@BGJ=FQm?YLgGIWdVvi835oxN#D7BKkH-I>>i)M)@&8>&Ks0Y1EJ%LM zJ+##6Nt>*-^Js~y)yh=s8D5Ecm?)Ds{pf!gNdByVo!2XIW$mB#Dn#?9ljpX&^VU8c zuS+g}cP)5F`2PqD{Ke61PQzca%L?58G~uYNo>ET~V_Sfugt9~32Gf1W#9o3fJ#cQG ziJY2ePcC@l>1{wX2`blptBT*ClE?)W%2G31=<&v97au>oXj}Y$vDb((ZSU&Yl6Lp<~G~9oD8>=RqsZ-`Q8 z9}@V5O0q3PlVKYM7a9~V?VX8^e{7@dEoyX_T8 zEy-mQ`OK|j1OW3HQxo#i8NFoC_gQqPZ7Wbw8GY5td>WLz`@fm%VtD=)VEki5hf)CB z810>@yR-(F8!KP^iN?@L1>0AJ<(Ma0O@mbeU-t_+{wGdZ0KO3`nQ)tb9`6c-8GH4) zAngli66?~<`U)U1>aE-4yh6rC>&<$f$xDx(pUp}Ia75H3MP3HoGnS2?T`V^Haxn3o z`mnON7X6Giu~Ihv|9za>0EXB+jbgv#>4QAP`jD&5nl@Z;{V@NyJD;KA6)#U)_~^O! z`0{QXPaU}{QpT5WBpS;??I?r!$gpPSxPVnhIjO)yD!P3>=+aZ?UXw~7p`n3As_io5 zH3_nWJ>yn|9exy~R~RCmllfEEO?*bzLlL%>HF>SLCy%Le`UfEaK2cvxB25LIVUt(*^k0eg8#0l9&M9`1iDzo(F*6NPB@r zp4$^g{dti33nn)84<*N!YL^JBp#)%K0^?jt*Uzrz)(h%BFOl?Px;Uz}^H+pP`e25w z`!f8SC(E7+N#b*!0j31PJ@^ESEi+xeHvWA00|L&HM}zo0S=5a?*9-o9GYbJ&g#dUV z^!&fQu3_Td9PyML@!Ir0V{U493a{dLW8q?xzg7OUf0+yW1KD2GkB<{yoykSuNqE_Pj(2Q_wzp zYpycm|A{t&1A#N%0)pzYjTq+auYK;WIeond?*GM?XMtFukLHhg`LkOI9YF^I(%vBa zzWx^i-$4F?!A63Afbbdfh44u(;cy|rY@ABLR=@#BcIzHU~%Ju5+ zZ+Pz$FrMZB93X`(HXXOV_hM{GjNKgdJTVF$@PB$H%&3uArx_}?5xA0w6S3JLm!Ke! zsb2#rr>=p|0oB#g%K;%P4KEVB38D;v^IK^UX)tEMM8v{{-2;&BqaVuHomNcL!dwV0 z{Ok?NkYy}f8ECPg)Ec892oo>i8>qu%no;=uWiVTx=IiBGM>L&@EiYmqlZa#ysKR;_ z6AB^b599muJOMpADYsK5@=kCGDFL@%gzOiRzmE+324)2;(-y3^_~#))e-_;vq$4rX zj|{jZWg@I)h*}Co`EQd2oF$TZfrD{(STxlwvis%3!y`HyApHv0)NdMawQR0WU%9;W zb08|@*J_d0clI#>6Z$U$jz=+az`|3)Zmg#%I#FL<%AMVg-%E(gVL(gP5evFEh?G(H z6@Ujy|HgyjQ#=4ISe-2ys){aKLh|VsdSdJJ4>Qn_VF{H%d%d2-ZCt;hvj7h`AD2+3 z6&UAj6!AD7V*UyP$mQXSKr11gbs@F}pF`#^Iohy&O7k!=rE@U8QKn8Ez24UsSSX_I z5;t&YA)d<}<#JA0fjG?O6WZYsvdoFo1l&FI!2K4jCk1lH5gn3&larUQw2bOcLg zAX4@o_Z8Mpv8v#UpzGFiU8yvOdp@8ceZtc44wFzrt)GxfIux25u-3-g3VDX}8@mcA z6!9tLlA_!oAL4g zwo4$7M-?>yC6l3B49AJqza2~^7jY!)7I$gKU>^{W0@joZBIOKCzYXz8r`6j-*C}j3 z8YU@!!nmxNV>?L$x@BgyPunTV5@zfYoaX`nTLBB;Ji)>X^lJ1kgn;na4LDjp^#U4< zz^;(_9|f*q99?(-%1&bxnvhWR?wdaeUf?JmkYrY~okekp`%a(c`cW=oem%d1O@?XC z2ndk)RBYz`0gse9jv|?$^gQQ4fPMo(XU_f<)G8Goo)CVM6}!j{NH=rJ$IT|Vv}|Z5 zfErtoF#fBs3Y1PPyLt6Vl|kJ}*`XzGf{SWfG%HKmhx)}t=?6|PfYi;5mN!?iJE*W?0z*2Hs6O_9hNQ$3b>`k)~ z+x}uBQ9!Ak$G-a!4FWWRmxNtCisz!(9&1Tni&r^Nyn&d#XCJ_O*mKZP=Hmc} zrMQpXY0W67rT~4MXd&DA=0o)%?|0Q@q@_Q?ws1asgIrP)u8~ra?<_d-E?Q?vC+`Z+OlhXM4yYKAAFB*_%*!}kzVC2c;fjiDBgQq#Ej!0OV z%|_2Xs5Bv~l4Sj-$8>PUrZ5C15&`!rt*#C@ELpfJz#PM4d{`R-UIUCf*bH z)>uo5koN6QkDR{-lJhra5e+Zb4)G6MR0T_#K`O72YI@pIjg~qG^roR!tkWjO){cIx zPhzVV@Q55u92YX{6tU}C%4*-g((zLZ$Tz%S?zcKxp_5;?1!2SLjsZmw~ki>`hkqa^=;UMKyXXklrWkh!dj@haP?`oB|T|hInhqQD+TIH-k zkJom-02N4y8g%L}2GhS3J7-DMB3MB6WY6bzmSVjHi!>%zhZ+%=-Nm?+NmAz$`=fO- zi*>#F&n9!yeN}p{3@?8xF<38W+cX|7Jk!4GI-m7d8u!w>{V%dS2_F;PiUY|urGw-2 zGdE&wg<=-8Jvy0Ft$keja;0c^tBh`DD^#T_JyhZ5|G7Pd2_%Y!-o*gYKnsye8c!Q3 zIiGk4&{&=76-}VLKbct#xag#uJ@O*b(&ClWY~G**N9WhH@>dIhSoMa>jhDg~hp+}r zIa;7w8H>(QzfILKr1`~re@px*6GNpJR(CA9g(?RG#zUR} zffxdMir7J*R{@VslEoeQD1=bUF&C{s<$~qSrv2jlWPdtP*vBzo2&>teobgl+;W7X&MFaPMnp*P^dF1GW2 z#mT_XnpFUot6=PQj?oB@yxk4(i{Dj_#$@M|NH7k3Vupx`i(_nUWylw-%AM1nYeH<6 za_Z&HqaSWd2z=X7#kxl5xBSEND7T8;ss(%dF0N2KYilbBF~R-GU~=9!&r3eBCG*R< z8fH+`SDR=J0L`j-Jl&3~-9OV#6y+6A@wzA}1ZFcTeyi`45%JM$4knpl4tMc2SB>Of zJZMRVf(K?e+rGC%bVKjkE_j;P=4r3RvG4rMOk?>rB0SbzY-wgN=SriB6+$U!kY7id ze{(sW&C^3q)4 zy6&xWe9?l|E4nUCY%=ohM!qpnqv}pzf&z832m3#XwH|h|nm*(ZN~D*GK{2*_oczoR zC{H`a8g(&9tDz!l=fU*|?Tkl753X>3vS-u!njXnwTg?g04bvR_5;Y^0 zJT)69WEu>Jm_(qGr!iM?yPZ^~(VK*4*?p~uM_Ud&--!|zLYUR(!YW&h(ky<;35vyW zeq~cBH(}-anoKrew!bdOZZm;7^B`a1c6Mn8E7+hZE z+}~t#n1QE-@~|>l`4AL8JDJ_D-&&m9Db(*V^w>%?GiNrCF^Xd4CO|wM9j-?^;Sm8u z*37n}a?rbaIu#0ZGLrD5NgvWISUN-hTcBK1zqxC&$%9zSseT~KBdHYVk#ew~zAwy< zWR|CfPIx-Py~uK95r)FLwC-l)HAl{;70Skgx&Efa+@+dYG&`9(9uaV2Hjd_Uj}P(M zV-2}q_msz(;%c_khTthcDRoS8OhIUnr}^Ho!18`*a8NK%h$OzthC`ZfMQW&loMO~* zLnJbz)*KJl_LZCV<<|mCB|DcF+M`rBd7uGyngF26PRebfn2!&MODs)?bML)~=M3Fb zDfMgN$$@2%aU6owFl;&qZ@_kz&lyvmTK?yTzcR#ROYIi%`FoacM|96}L1yD$kt9qE}CSV$DeOtX^ z{spPj_al3s@_6FfQ&*SZ++%tCXxquDhmf zxg3KiIZtqe#h-uw~QT=U7u86 zrpgTlg-ZDzmwYX#$P{8)Z+jQ0$Hjia)(>vB#93y&7towg{vtnsgdD{qGqy7ecUUKCq=7l*F6=*zOP5bM}MCVH}c5?&QQ z8*y0T-F2n%xDQ2bW;)~T{Ej1T!&*qBp%|~YS+|}(%x2GDVsdB6WpYrYy<^>w&P;z4 z?ZWTUU=OLpCe?H{=h=>VLw~PMjc0Bx42^Axt>1AHCOqr9`+`*AKqrKZVsj0;y292` zZ$Fth^~nA=nfQiCg)1egZo=C|2jesu+Fh%!hnB~#dFDN2Nf85ttoIQn^(1k#% zw4zL9pY>j|Z#4h(XV)NIfA;`RqZIm{I=FL-+wrV5jrRxrCRsPRra;f(5f!;Y;Y7aP zB4g5dr=4twNPM1NhI!8XR^v|WypT?pn~p5s5-oK9nT-v(In@eQ5YX%5`9~rKa^s43 z6L2K5`xEgO@3oPwEt$EcX39r8UCV}QqS6KRLJwvucPO5*Y1VEo2Z;EHR=~DX)RL`c zp0ni!-aV;Jrxaq|7ub2{T=XNmZXwY&`npTCXHPupC~4I##$+U00`A%=3UeQ4=_|99 zkT^P3n6SMM%DaVQe>)YKZNoI?s@E$FU3L~31#2d!Rlb0#D1oLEDX^;gM7Ad=a_3+E z669=!i|ZvJwfdy?5b~2+7}vYR z8i#fnQHeH3nBm01jS9g{E8*?NTbb^@!Q@PE_q!941$vQuYn< z(v^D~f2UP?9i!s_bw=?f@L-Dd%uM>AioGS`UOXXpJvLu5=jw+ynm~y52k<>i2&it%M|0N+D^Jl%=fMM)FSCOW8wZ8S9XpF(jcv z%FY-=V(epIhM7qV*~V_{Lv}Mm7&90%&a3zL`#GO;9_M%d^_RzEp7;H_p4WBV*EQK{ zl6^g|)%XZQ2%i+&hsMq^{2H^RT@y71odrZZMlog>Qh?VF=iMKH``oKMx8Ja?s6N&C zn|BrLAS2>s-x%^D&z1V1?iuS`I}|~GS67CUw-euMUO!dm-&v9qF*Z3NxvA^@MF?`3 z?~-OJL3e#mP~biW`ipfwXm7Maa#AfaGTWP3R~nX@7mPe_;N?gzm7>esm^B3J-wyio za3m+?yaBlUtkMrvm&D1n{s(egD^c0z7J*w#b{{A(^PS_0Wc6GMaq4EqRh;URV#K4N zy?Ri_AcM^gGpT(ea%wlZ-GmuSAUdKE8*{0IZ97Zx6zYejJuyceo_@ z`IdLgjK2UNE&X{2et7zSA^nl#|2v5`_0*5DMq%mGTD5bL>lj(h?G9g#L+3Tx2|JIka1%PV zE>W2YQ(`xM8q2N(zWp8}&^b?4yYFM^iv;o`CtlJUU0AdTVZLa~G)X>SqtWvITn&j6 z1>Jr|8E5bk?`-{D#`6bVB{%|Vk%2Kc4D1Dj0HFH+4v@O@)%Nf0yi~;#1EhYBufax| zdHkJ9ocrg;;v|hsq|BwK(_WDE@>lar?vcB75M%Cb<&&*X_J&<&{g8~dgv9srojY5v z2HwRHK)tMJW7FIh!J`=ersn;=W3z9%LcTxceTiu=lq}eFY%u0-aN80IW=;xxaeVh% z-g)GLLQam}5&_6(fgE4qd21|YU*{n#71kkDwNDCU*7Bd6(~{?)~SZ z$7G!m2)-XriaX#CgTKUibWR~)fQB*7SQsyLmt5(g@obxSXLdA#ky0VQYo4u}?gX@4 z(h_GrKDhg$B5AJ43vWhHM`fP7?cMvJpIoyxEb6;!C+Srd18T7?@RL$aO}*;70F&B1 zj2kF``EJG&^%{MgoZ3FvZp^ePa6ps^tfk3UNnNF3l-IRpCKKf0a@VZe<fL`Jhc3V)!LP3+g!Y+i8JQ#64>An8-iDqm{)a9D&`Hn0|=rCh- z^2R29$4)l^IcLH0ayH>j_rE-HdqBQNYf)P7%&pXie`Fp#WAw&yhvXV-b&7y`dlEo1 z4wKOWA;T}n9;x6A?tef$3$25VcQM*TNzh>}C5ybk! zG(;*{aPbSzSfqY%wH>>YcI{z_9B!8&H#mLj?$Ll;Lsa@;tosh|OgT|JO>}j*B7J}{ zJy-cXUw>X-7eQmvvbnjpVJcD3#4DM%2)M?-vNoes_2mEVjsM7fOaorv^fW=RoBLg& zlg0u`F61_&tdrjCIocIq@9@O(cD$-$q{-9XEVt9(<6vl3oYP>dad&6GzNDFR|leEO* zI7KCS>l}HduIygg_`sb8*%lSgR#X@oA6W~n&snsP2DF81?guKSW7G=K=tIcMI91GtWeO0VB z`H?s(u`*OH5oLV+TKHaLYXf`9ro)Uk{norE-fHVECm%(ClM_BVXmN|=aS8Loe$m)M zFaPL#oE5j?(_Dj$75@h$`B%Hy<6ez=5L};@UoJBDg9?44=|euz$XXHmgrM1!d7{71 z9SD2T2NJq$kSPyZd6@szdmC>2T_45uVr1*nC6!xFu42%}ZT=4ECL=xAZ&r7%oLN*+ZLiK%A&qwD3Ea9;V^v~Df?WVwn!8JxB7WhyjmZ-%*NY`pbFMn*<+y7hB8 zGEFX=o%7g*95Ooz>C7_vx_rfi{K9MYbx(nM`F#lT{Zo^tS3iWwOkde53!GB9%a1cM zY2en{e`DW-fV}@8zUB7S&p#wl&}{`K^Tfnk>D+Vda*3AstzFMxaEBs(b|rqjrAOco znR{zUP=s9bQjIS>DLSoTL(kW(ME3N{JWsc6zHrY}+4_l@z^)=eQZld$r)zb_=CowP znDZURDmz1+Y`+HFHZ4}ik=`uFqWj)(IqoXXz}3QOOPM=AbOY3TMN0eNtvdFhYA&Bf zcckT*I~ESM_nBwuVwBko-?^U__9_XimNzPghAsU>z_Yr|m(QGQteK6^7${m1N^*^m3_cdGBN-P#1N(3S^z z!bsxAXFB}a&)UZHW0o1=>^;ssoK0l6OO6x3?bK%%rw&x#KQsI7stpDBq`k$0@>>5g z&(b_sBqj6!&&`AQ#|9nkJG{TdnT%g@K(C~4`e{*Xx4#JQ&i~82)=IGoJ5)lOsT%MXAdvyYgu)V9p4oOm%koY;WHd5)}GsIWF zJ^3)8s@^`*=V&N+aZf5S;oalj>3Cou<5w1Uv9@U2CDk-9-nzKCzPvWa(VouyfbQ7W zvX!Iz8EJ8%D;U+3JYv?EeRwqzIY2oR62G>}eO{$QcyBMMRp-F446p>E1-CHdF#P;+ z>g*^4B@pK^g)vfenXXx`Z6JFsJJ{L#XO_|6QL%CP7ee9mdb=A{vKhJav?UnQelqJd z7bML5lCUHt@;|1F3)AIy?sD-_$V}DlC({mLf8H&2p=eu&eRt>TU$d*wax^?1UE?`< z>9buGDXXR@==h_H7XvWt1<-;VZTClb&uWB9F|f#nYWS8nZ@VoBex+w{g%0&56{<5e zR~T1TiAduu-j^dL0b6>%4+=PeWX=~)(goYnvcsOpdM<@WJ|yjvA~^c1BEzAQ38ELx zuA3dZW@oYl*|oRdT!cXxis0|RAmStA#m{4&M`rsU^9@yWsH-&3_JS7dNA`bqb=V{Y zpHSQmTbEyEEIoD>^BW68;7GXTW5Ps#eD~ViXjzW-7g(vu;iZA=5Kkamv43`c4s3;_ z_3;YgJV$cCUyRFQ_cC3@!N$1`prn$upt z_4g$=J@I1KlP4xMhMnR?e*y6_w*;K*?OLq4nFGr9Fa}m*V~%%0)+-^@Own**T-jsd zifzc06MJ0h&H}VAB;rvxy|siRzm+pX;robO@~B)#lt^sLYc2;#oTNi5-W_L#7Z(rz zW2dLD@8j$Wqov^)w_0YvQ@Xh3b>2Wo%88Qj zloTd?&JuC$b^xbHmbq>=cIl*Qefs{fhd3cBU_{C@M}JfymVT`9LyTYdW_}LlE(+Kv zYURbRPD%h7jHjC}3~F>9syqdNw7uT7)$utDKeellY?ww2XzK2JF-2={jf=;5{(9Tj z+LeTH%?TpZ=!K~yB1LYG9Amo$+2~C4K_G}5%P*@#`0jO zwzU^1&X!&3o3~z`tZo{8%JezKaUNqaR^zeoYn@$V;`oc~&_x7gDzeI#&Vha~;6Ejz4lf?8rFz8y6{Js9_J5g8(8a7F4_J4j{% zNFcrVaUV)?wQ8n-H@6dLO$OzdDzgT+7#QqNh049Q3W&&qvr3B9@w?T;wm1g-)=Qdu zWSr9p3LLfvs9+O&rEfgX{V z!!SH)X5~{#c6};o3sZ6rHB{~OiR(YFs1lKT zga0%!z~UzSK|WtCKKi@;e8%HHNeruU$Lp1tTn-1=uoFXQ^Y|5?kY&>a9K9}DZMhmb zJ&ycA06rm5apSby%Wav|47GJWDf_z8yq`I_d2!1pVQ?FO6=sfr$aeyOUc!$)R5n2n2ooKi@%itiBr$-L||oy1Wd0ORvM#r=+dk#dVKj^me7$ z)*rrz^;BXWd3*50m5>a}ufZ!POdCAMb0hm-u>D4TuP8kup7w0|Rm3UpJTdO`=hYw_ zzQcUp;1jGFcK8J_SS!QAyp&EpYZQu@&#w%b@Bjrp$1Xe*xTVfHOjUWbhNB8C56*PF zvbwGle^{j_WuiHHW0g}H&QeyO z{5}QLo>iZ$drtWey8%%6n14SU_~U^qy~@`p#Y*no!hC*`Oe0n1JHtZJKlDh;$OAJ4 z&Vj`_*mSlW_(qg(t$2w1CHmM*Bw z)T>XIKiZ{AHTsMC5O}XxV_n8&+57{cGj>8O)V2zui+oSH?MD&`u=_ zTh~=LuaaSHpm*GTiXGx>i~CEWFs44Kn!)T2^HEGJ2IbBk*Xx}|^r71` z%t~%ojs8y^HY{mNPaJh13OE7uo{k$mAXz>#QK{I$HZk9pEYx3YCAiF-J}|4~AQS=Y zB?g40xa(!*t8QV@6qDH{HXY@$(3ACB1)EpPqVqndO9WHU-0=5- zT~eMw>5}OUkIEazO|&CJBuvs0GHX87?o*TC`2D*emx-|>BB712>Nu-v(`cgS3&U|+ zhhfLjK-vQ!hDV7ZSQxM&wc#K8;o$XJXOmB2F#nr@DI+IB9d?qO|HB%P23YsNm;T6TqdHNJ*$Myg0%R|5 zfHBK)@8J7vn^vQ&7kf5oMWGvgart8u1rh$>86JQGuCupbS2$)&Fdi&)h2hR@SwBe8 zKRs8IC=ur*-BTQ(`}O2U9L#s)sZ^%>wedhoa!Hf3oyC$5b*R5Sa6#wVu<%+|`IcdZ zvaKCVb9076v#rC+CSZ`b5WcT@0fYA%5aw3;H8Wo2%Rbc(mdPah(lb`GQU^B09;f~4 z&EN^3OvtFsPFK!m%;39i*mN5@;k;sny=333S9XhU1FG$Lo2aSfVXV*ds`2v=+xo2T zDtnGes|Ta)Moe=-69S2%_D zievBBkV7IeGuw~QyNCz6zO&oEzM zUEaz5`g-KW$6%m6vZ7apCsztz2Wen`rA>qUnDKx}+on~8k*sp}ef z>Q>*i5bAYl%+;=A7f0oiHT~8QKK@N#ovvl=4!R=DP^{NLpED%u4@TwiZz-3Xx!Sz0 zc2{TL-6TmoK%uIUZ2x!7mCjKrYOkyvZKi91q*>H^w)3o7d%QI9wDcD~*F;*oplV6}LhZIdb2kA`47dZ5O+CLoJVz7DtVH?Nio z8f!MjjaQl}K75!Lq_=Fobx!Kh^cDQoaJ)PGDU*5*k36CHHs;YMmh#`3Xa8vS(rd#q z=>~9Pm5dA3TA}yZQy2izrJRuM?XLea3&>uHGhWWp?}`>1s!`a>oEuCz&piBh&D#KT zy2||d{L@ybP7gd5r#gY8Vig%u>-1;SG16l2?~K+4(`!w&;2+eUzsUmF=K6$1O$Q)J9`+m& zU$Ns9KR?)=53Mi`e$&eD z=+1*WJ%{LaVYBP-CQNX7GQ$0u^+ni2r?0+|T^Ov|AE{YPl&mdk#)ssLxcH4xeM?ZX zb7VaOfEJe9^hT74NngGc%;qn5qzX~gj{HmXo2fVw&ZCHSej3|#9NYr!Wq~w>G}7C- zZA^luOO60!iQ^njW?~0iG5gO+#a;$|rO(XoD()Ga(A7(=>mnO|s_B$+d1hNY$WT3I zp1L*m{xQ(I)}w!g`ds`!Hk1Pg136F1yLgB1gS+O+%hkh3hzy?9hs}T!!?ar0-{C!k z1T;%{K}W54L;(6!r@XNpkIOt?Zd($)rv+skJb$m2{c_Lf?i!YH{lXE`RLED;j?;L*&q5c8~gVXD}FSQw8_fA;3aq+X-2! zi@wf60X<#>DH}}kDcM9Up#Xx$Z&oVJYC|Hq0;->N9>1;CkS@N|9WuY5<8yoJ(@~MR zg;d_ajJJ0pGgbLSZWAqQ>f3ONuZ^|Wo?4h7YxbwB(WN>Ctc^$@+VE@254Pjm)sG~= znM8x17p3O3pz%g&lG(8K;sP$!UHZyJ08o6A&o?lLION*uem}vvos|GBpvL6`9S|gg z+A`n8{Tub9{RXGc3a6#5D(~7sH#uelZF?x!Ft}pKU(GbUtcKZ zYCTbBKDXn6-h~bZh7N&FIE)LzU49<`pph}J!oZz z=(w^Le%6gXe~hZ_jJQQDAeVpK^iU8VNps)4U(P`=0PF;(Z&-8=Q`P^$C-q4vt9a0| zGg{eJ_d4Itf%7LqV?O)$#azYER>4Z^6A;_Dc?pU_n=09BRb#H{#Kr7>MatF|Rd&cd-=h<2p9c&I6x4aQaCg;&=t0$HHh z1gmgSxh77&OTp+jK8T9{K9joR$eAeb@=W~Ia88Q~vKiqp2QJenV_~8ySw(^IGlKdXgg}MAY~Dvo_lsW7pVLl z`8wgVc`w7JcRKT6T1OetUc#mxl7{2ZAQ!kDnMYkj>bIZFmRt7OOB3Q=DEd3u)@dcz z#OuhH)T$%!RMMpS{8&bk$O`(GLG50mqy`q^?tZ5~f=V2gvZ z2ls$5`bKxUS7TAZ(leLk*HJz&ne>$20P>c%^c(U;AO&}r$xpWi8nKa zg6a7xrLgYNexKhBj-&dG`|A7LM?c*a~?pF>%}%Ay1lKSU-!ash(x$3=T+rDqG3GlR$H9T7lgSVx6G<(ba4TNd^)u5lAq{_#HwKbku zl3({}AC_5m&mf(HqHwE$laH3mqj1hky6x7Bw?rK)dKIPf1m^#Id`>F6_iA?y0XUDSEAYSgEtTIPD&fk|;Wa;E(wRl8hh6(6)r!^d>E!#v_M%x2DGI)1FG?UU~LbYc^%@gZ|lH^}4?KaB4F8l5uv22BV5m_La9Q1l2I&#X=cym#RAcV~x zOGSI6p#3$2XoWM(uGdy!-1d`WEd3Jxew3~)TH-tnlZo|(YpnMe;;Us31HX41KN^wA za-4msDr>U0i836;w0J@N9|l^Y&YOp?91~xY*(Z)^vA(&>G(9trOy|}dF0Gvy{Us;_ za~};2e)&A$?MUN1ed=as>>xHIU|wV+yn9@q`di{l?>nenPp-){x%8MoSB9**JWI}i zZVp$t$6<^yBGu`g&s6_jJGskNC^rz73V5*)LloM-OhVf)*Lo%OJH_YQ(-8VhpRY6? zALo2GA16d>f8i6?lCWiNM(6B)SF)Z>Ka4O`=qMaqKEK>w?7=w;(1tw&5;D%7q)R4* z{m15%@ma=hFVvK|vAb*ZcX>0tAklP~PsIb|*PDJ~p*w%nBpTz1_fxgcOq24$&OPP2 zxD>xs6{+CjO+a7%XASkZ(=7S=z4yXvmoc7%+t=*NtgfTwGS1KxMT~=TouGNgu##O2 zsOH1{)sa9NKn{jvG-HCwNja~^VeGkf&o4G9nWjxadSsXmDKc!TVt5-Wnf$d?hA*?7 z8lM?E+!vZKk)3fdmO(j*NLgIL#LrI%KEIAAn;+A~vLGY&B?@oZ+K6C>+h zZbe`>NSxKS=)9a)I~6(_Tztvxpd%jp=WbpsdJw$-_KvXXJLtyqA+)v9-_u7 z$M#*5_tvNhr8<5AQFo(`3Txfps5XV*bZ*^Pl>QFM4L{GAC6;q66J}R2J8HtcYu~)n zO93H&M=DuRjeC}=?Z3EAkhqB3T{0@NS7DMcgojO=zByQFrXh3}3IGjNchY6X)WtKj zfc>zm4@D84&_Cri^S^P~84ybKAs5yC;Em_1C|^nRB`|xdeu9w>uKNdUOI05SbG!tm zFY(eY>r12N&h%t|$)YOAs6x*Dv)upRMR^^-8J5HdGqGp><5?U=m{f*^IF`Cwv$P;% zGml3%OVzp$e`KyT>-G0n;m@hm|3xDH01}y|3TO!;KHI63G2UK8HrBmlMaTEAiS*<= z0bn*k;C{U5aFPHi^xo0aG`o6Y#?e4towcUP1^XyvLwKND{hb)0%tC0inU9 z#UimxOx9o_u9n2+;QnGm>MTRDU|$0XaXF9omP^G5?nJgLx-Ii8 zM_3?x3vQ^oc-J8yvfZZt9`~I8aTC-ML^YuBR=OieH*i&=tixI0EY}#V;mn!tPYln< z>IJr1`nK=l=KP%esscWp>H1(g6Bu2w<8=b1o|?(eH6A@J_y``Ag0gBr{<_CfYhmcr zLz1sgt6j77no9$DDkhMh7GXjsE8%8crD8U7-$)uJ0xP^~xBVShl#j3QM%+^*{+oq+ z{xOjLMj!uK@5#UgdiQ6JS++7lo|QnIdaS{%wjZTLZXfp~)CBA}4X8CfUqA!hw52sD zff~=T);sXYr{Kz7oV3|Z=KY1YAPs+y}W#wF()iQe};LsY(H-0PLnK!Cslm6^BiHk-!ij^9vo@jo# zS}IVnbfE}B=o$F5SDFl8d)TE$#v90C7le=!;xzwo(wSv<2okB-m7B}ISis~DS$k}i zhSO$m&gp;@#OD?^A75ic`rfo-&XE&H^rE(oA@{is_$vMS2IHlcH7Vn^_{Q1o5sv;@ zO7+u{>1JG3B!ek%E*S!otNt+bu#G5=2MTMz-1gnnKQrGqR&2x{MARJe>G32Q%zT^L z2l3HuN1~13^NA&px{iT50p@QGsYeqEqNB8oaAAXx^l=kX=%th!J8V%~=K6d1YE}8^ z`kaW(-C=n=bAzMEZb-oF7lUJ6ltIb?-tsiP(Q)NR|RzG93+xv%$yU-!R=A7 zo+RgZQ4y1I0A$%F7(M>BMd+Umpg^S#ig zdj_fPDx~;|;p8WmC&6>|$Y9M!(|Zrg#p#3fb_i>b_+2!XYKM;4S5V8oDlq9^@}%^k z9njZ27H0+YHN%b%krK~(!TuC2Vd!+D$g47$$|*3Q4#8_+pLV@%A^|9rS8-=PiNv6M zi*;ehOf{B3@SboFU`nu;27vR9otv8~QcXU5jc)fli`p__K`he9&j44njS3RBl(#~L z8U5y{EDu9QVM}ojURZWhD5wCn8f**>-tA*z-*48_;dx>dJDx-5|VZWRteiU=wlY`eWAObeM=CvJ znZg5koITF{`*p1ja@A{Rv-e~6wo<3aKw~}e0FGa_c=5EqNPB19K^wlzr>YJwzFvRh z01^6PBB>(AiZ^MTsTtR>j65sW7B1&5K-s)52iP?N?IxhFEUtY9NR2R5Co*u#$u!sd z#O%2cV+6GY6d%%{9jOLXebqqDgz!0I_+;;|OuZe%t~3X{wneJ!t6KS4@h=K>=V(`` zEkiSL^~*v8%@P)SX+n5oDAQ?Jiq_5;U8ETu5wR(^j<-qHr3I`c=I zhV~<4%CwwI&hsj?S^%$%X%7i8(GmMa!I;;D>jjJn7Q#c?E`ZeXZFD<T6-=At{2S!11L(eQ^y{jQbEq1~JCmd5|j#>J- zk&Ls$XdvJQ5_B8~i2Y_dJ;sh?(#XkIBZqEcfsowBei`r7YTY}=ww5>Aq)Ap^CxAek zW{bOx#{Vrpy>p@J5YK5vZ_(psvSR=2?rHX@h3=|@6ID)`*B5Qw-D$(&t9(x?j?{U^ z&>HvD(3kvQS!(6Dbl838ykTCpuIdEfCF>mHM-Y1s&Gd}0igO$7O?DRrG_R_NCw^c5 z0BD>yRbZ@$Ca+HhK=Bc^O>~uZ^jEt2ZDdV=F$ui7nDu@t>`=INq?md@yIK7N_4Eav ze7?hchi<6;TQ zgue62t}QPbHWLVYAY%Y7Zv5Ta^pr!M9nwuT=md61p%rEh*K5B8F5iI+e_1SWRYA1r z?+!-%!!NQ_vw*l^k(6K|ovLlXGC_GF!|b_dqRVY%#ie`fF3r?zq{M6Q;FQSL1MXx& z0upWgdkCr~!-jfdk(c02?(nz=_A+DviVD|9j76EmPZL8#IXAhAL#&Mnf~_haFEBX~ zUJr>X)oQR;Gb_EmTeI?Mw(ZN-$n(#@I^=O|_e*`_4z$V^39+4AyzWkqjI_F+Kl7kR zuu|>8?fvG?X08vl*$&F3O3tFa!bb@u=HuzY-zI2M%SpO0s>0He@^O@j3ORXwpE4$E zWRR9*;5MYfr9zD?$ej?18t8ZYxnp6yHHeCWXPu=HQHvJK#{?v^DTBv#Y}1~-WobYb ztcj{kb?tk$PSD8p1vGM*Nl)4V3B3croab1?Rm{B$ANDK`ZD61E$V%}TuCl* zSxO74g%xdwUOvevCY-$4fMwLQV@lg;o^Yq}++(h0<)3e{@WHHWy|}#laqbh1^Y?n6 zeOuU)_ay5|Sropdl}vtZV1R5JE!kddq^|$OsudRPU-ZUxTv;#4)G0pWMAv~==Qr0@ z5&aGu4@y)C+7N`l(^y^n#_aA;>&XK!_d%ud@TPVZ_tYKf)6WI4OU%1eq(TH0Q8xv<+J&|sv4Sum?-xNXI;1-$dKmL&p_a$4DL^MySK{Fw?=N-DDmE^&T0e~sv z@k;7735;Ka=G%OxlFwluS|Ehcm~ElM-^ri~!4mp?m!UDRrmzLHJY+x(O={fAl43SP#4*y1N4f4XQz(5vQiey<{ChLWI-i9llX=paH<* zwB;gI%**T+H?4kSiS{>fX_a1|cBiBUd-z+*6_}*FXSwtAP!%wuAsOGPMEdzStySB4RJHcuy z;l#JTx&sf#7J=rR*-QTDH>TY5|7J41ExiNydliGn7vWoMHDbZji26}&^o}&wdegX{os?n^Q{poja zjueQ0B|)j2MV5WlsfEFY5YUyFS+Q6^gm|?ebhr|lJye9{Jg{{z0p8`nigd8f4eJ$R2Rf9I%R%%l4t3abcP7 zj)~7OucWaaK*g8W{t9dU?|(pxu-&_J-vL==_yf?R>X&+`zPnMjc(aHv96KErssTmEa=cbQ9O1sQ3VM_O{4nqsqc>$QwZIWd}}VK2LPH=N-LrJJyNNdCkoLy-)&eSatI%FTKS zXkhzjl7zQA zG{0{QabRhLP9AM!tdYu)_p^r#tkX6PtI2Ec{5B7u8u`y=-HU!&o&FZ+A_vtoysVqHRiZ2P9E zp3g*QYX^E-XS{|b{zv`Ibr@hZK{qIPU!#?`je-t}xQ z{YVdnxcjYt6aDd|WU8GvRI?Pm_k%!y`uetNFW;Pjmas8!S>MmZj9>_B(qVsZCa^sg z*!fa;;Qg>wuj()n)23f^(9*(8X!rmCGG@$UaE%VpL(8&{d>ZWkD*Y3wH^Imvk0Gao^vpj3%7)Idpjq(Mqm2$-w%Fi z*v!Q@*oyOrV292QrFHUIKvP9(n3{VuUm($9ajpLh7w9TNy*5x{xMk$I)`w*6HP}g? zGZSI6NU-}UI{h6NnS|3=8Tqr)e^-{ev>;m6R)&ALmwh=^Hh>?Xep)x7yH z^IoX{h__;@X+eIevtD}otaJ1c1-YQ8vB{O`z2?=w*Fje2r(O4iFfeVGmm~jf@Y?*h zyDZtR##6ar7Mp!GXiM$Ap9U7cI7~DIY1$|Go}>$a4j=vdEc7uK?hl4^d_M}?lXCff z!mlO!D)840ptXv4>E-`dsyYc&P%CztmnH(7d4$DLi=;t}E_S>?Javk_q<|Mc@0Y2B z=r8@*zUscbav}FB!hb;EEQyc6_PsWq$6;SlaJi|WCwOCevOd};y)q%pGUT_G9EN{y zh5Oz8wI-dgbDHL1A_z^hJY)C3$rM&-hq#Js@v+burCElEVfyV28$4MclUvkTJai?~ zZ&+S&(7T-zo9|bYSWfK&VHV7L6l2)KQNHT8&#k4Af_iTDcB{tcR#R-&f`7P~urTc2I_m~G$MrCHviOjB_>Oz}>RXUJM!i=FtKE+1=RF|sgB zTR!NQw=jM78dBhs2rl@~s*U4LhtlwXNW`jOStNg)2?8`=X?g`Va8>GI#VbYiqDn>2 zi96Pc?w9gfjc7+#M~Jr-$B*mpM^zyXx{U4C$=dI*<3*=81{U5Y1-! zB~7Bhf(TH?%~qdZv01GH%{6IC2@*8(ABTdrCT5bOy)y3=D*&$?%j7RRlHCPiR=9P@eusm8*p~*GWb7ZK{ z1A0z`@hz7B{hkdyIq5x{DZ9E0rFMN0$RQZIjw^)K{Uj&K?qObevjco*I@Zi!Zar85 zOISQ-$-Cvczh86Ps2sg!mH1PJGMy!lV>PTfPPVXycc>=c+-}}M8WSZBWx+xBG)mee zhNtH`SkSpH9xdQQd+zP#ncqivnZTiM`K@qu?}A!vWTPtbGZO1tLPP9UlOC&fvt%@L zBPZ2)7}8!((hqhX?DKvb{SRe45x7wj zCAlJ4GW*X3MBa?cp=Gmgpyk%HRj(v6bg!(Mi5c1lwkQo_i>qz3HZ~t3wJklFV)2=s zv)$G<#~>U(`m*}&tQlanB0YTx)WxmA=JA{ctLSL2EbZfq*v|&nHRJ=M$*x+Uve+z} zvbsf(?_q;fM0mcEdn_(|NnWIJGK;aGivRHOC$t&usTmW^&86%GMyz%Y8O-;Evw!t1 z!&77>XPZLUe4CWl__@f_yc{?@w$TswS4!#GDLym6=rAZFHFYcJRrf8GDlX8cvzFx@ zsXoZ6EZDq|;&z2Cc-hJ3^~GL8PTwA?*Wqcu*ui6`R1XQvZN`(=?+sEvOb%cgrtFIS_|qc(ps~v7wU~1=&WWtNvlQ#q?EJJ^ypSZd#L&jFLIXOx z7f}zdFP)1MU#Frrx?<6y)xK&fEaSOWcdiHZve_RCeZ_49Hn1jKOlgTC=Cc16DrLN+ z>8Vc&xbC(6eSwtEbr~iUC&);R6=<7g;4sQpZ`3)E&tGGoWpkU9bUW?nps<~i-*bq_ z=OFq|qSJy0iDB;F$S&@@BBAti_gHZ*l#j$5r;Fdd<{-(w4tQ`=w!&o-8F3i(Z)&J&UoCG;Qc_(Tx5ChPZK zN!#E|>6CHFB0z*L_pmCm%F9fap=xfqIqvw{XO>6RJ5Pp;R{GWtmRn6)@|HbpdEF>? z`_0J!>gWxFG?}!xI76u?g*i{kO!bN_$}UCmg3;m~3*i|@SQqMihD1gy-O~V5%AM;L zrPuu3%mg|ijBIQbbj?o6@`6#Z#a1ad)sG0BAxU)pgHo5a`kb!lI`PZv$Q2b>fk|j6 z6Gl(UU^|~^H`;j@S{i*<*=zE;`*3N}_xlO@EKF@Y$jHd(U6XU$EY#K6xj@<)^OTm| z&)C;Lef>fFiWzoTFuv(S&bM1Y@3c0D*iGc*fWnb492I{#?^{3p3gO05pytN{?t%3O z!=P65mZxG*hFhGN&f=E5;0j};hkbA7X7U#h-}uI2u6bXS>42k?c#jWnx7I;zkK43t&zlX6O}^qp&qacw>N z5Ndyq$qfs%pxA9<%oY6+naMw&#o=M_%5JQ_ej=RMtu0`X43%)v`EQ29 zg98z7_(ZPUA@#mFeEjX)shFMiT=6>s=ezzepO5Vv#(>`K|Nh#xQQeXCw`=oPV1%Q9 zhzs`!cSIL|U(0y}A^g5`v`5En7Y$Agze%4_??10hkgD9l{>a)7QVc40E!uJ@XkK(}*r0Z4 z@CPR`3bRhuzTNuFq^I|k>T!#}A8DUWJ}w4`jx?7|41TS~)xfYJ&`}*g$~Hc&d9m%z zFckM(zZ7PtJNigA6uxJ9QA7OXhQLGNG=zj-@X|PUA3!&GVr>& zaib)w$5_h-ph#R<6y@0noQr_Sl4eD}vcVf%IY$LO|FR!)_cDHC9Q_HW0$f&V;8Q%x zk?&v!g7*6^_XiCU?b7ZkMslf@yduaR_oyaS?}CQFE9uW-g0SrNW!rr4koE9dO=R3xYq+myT|m@?N?WyK`|l}^IHzO4heL29z`<5IcT4X3UR_TZ3wS1*MBCSd z4$IY-`L*2buh+G8wXBL8yl(gH=%FQCRDb^$qelJV=fKmcmT!9W3ivE6yNt== zTFk$5=`f$-Ryae)q~pDr`#(gl<^~fl^c>z;a(lHc(&<;AmQ_u}aAB80IN@)2<{S!0 z*!)zoqMUlh27`{EP~i9gkCZTc!lsBNHaAQ#xbCN`>Po9jjQrf-0TVrUm)yzQYgXKc z5KA3u@pJj+Vx_jaU(l(59OkyCv6aP}-}3JGYyRUZXSY&_YKs_i=6jIELZMj5!!2<+uwp#{U`r;V7?+ee2N011V?^zz*jwiFI<9;CopIe!Cy*)!&?aE!)E z1EP;6tF%xo3vYglZ=l>dx^k=?B&1JNS zf2>2*(TcxjW0`a7V7p}1O$`GS?B_Un+%OHQ;=OXWcY17m zH6_2(!pgRYESo)CkW%@ijc(iIxKg7Pcl>qZvUL-;mm((cJxqY#tzunj9lpLTK9Uq5wk&Ks_)K2^(KQJ_y@(@Q6i->D0b z83E?Oo*EZPm0>S8)=EFAtv${YUW)wABT{qiv0ZC`DoKqFSL&S0ZB+R8uY*!{`hH`6 zz5@@tIR7u&-a0I*F6tXrK|lpWQISRk5h>{|k(Ta8rMr=406`=L0m%U=k(90hEV^sx z?(U9n4+1yb&;7jD`~LC$<0WTi&RJ*mT6^#Ht2m%)npup=ecas#GT*q#&b~jvHYpjpM14CK)9|TU$%?#sk+Y!b6;;Sir6)L=RLRnwGvR*5rZfA>$u`U^w0H-HNG=JIXKg zX>u_zT~I0fbgwZIkxOciO;WG^s`;*wWyhA_!FjZvV6Q0B^bewS5IK+x;y$El2s@8; zU7*HgVqPaN(s0wc=8QGAer}9Xnz`kjZ)6YDx1$&^Ya|26UnS5bK)8LJq#GR` zbk>@rDB?7S!owTZ>}yTS=ggC%=au*eTq@Ht*y|>2@Kh=+GYyv3Z!&g&lMJ52o|xSH zvHEUxzQR?R#~Yim#be$hh`mx3Ec&mCgSGsT-`I2P<7xHJr)4`$RiE%7ahWz1A0%1c zYQ}41|5G8cvD6PtySu)*7Up1(fwC$%C!s)xgwqfls6e&q$koVJ2$iFeX?Qz;zR+!l zxuHR=92YmezCFpT-DqiVzG$7b#;*71nvNh6b)`$Q;jn-Q?TB%c4wJP==&$O4cXGeK zVx+;sLLyr70~zzFGt3vqrRiO_0)pyR3uV7nIXHp209HMBVZ?_6F#gGf!3X#^iGmui z#Y*o;h=+Jb736%ovk(XIs0q~^xBqo0HELQ$NFWwjwDkEaQrcn2HF64{z#jjnlT6BVy1t+xyInK1Xnu5 z@xVDs)2lw&52=f$DGtK$UW;}v8AV(t&V<=79H%jqPmGK2y*b!sL%s=BekK;H-&GYk z^13xPrj42x3bNXwY+Ww<(#8k{S!)H45JA^BYO0&mZCirbMs(e<+30~EY#yGuPJ6-F zr8o6N8H6tVaT%EBaCjksw~=pjH-Vd7#(`IYlIt`{jFp zVVx?0QqX?H_+)>L?druoS6&p@)^|T#oVQib%>|WuB)fr!ooSQCVbEoxs$2ie+qFkb z=%&qQQ*667jhaO__84zLf->l_vx9BO&v&_SMgKw*cr0vn>8C)B_Kv7>-rHijyBZmh zok^w(kuq5lCNmDYs1$Nf_Iw`vg(tb?juNka)qsK`XVKj#J;tWWT`c9`^}bpeFQ2lm zql&%b&TW!$hD0-F2h2F(pV`qAGs1#h>#E31~ z+YSW-tR^YNMjoXYDK{C+#W09_;xj(^9Ql;eddBb5JQ4g7FQh|muK!1};7zdbd$kuD z-31*$X@2Bv=4nZYQlc1B?|~edJcx_ga(RX*1m?kF${<|Cb<0I4VRH3tZkNKwBXERh zLLyIH(3O~nrm-4*h2sr4EP1?=p24m}JE6UEbxkWqXLK%LAU&t!%gEQPE8Jve#QX5Q z)lq{tI-Q3w1>BJ`ViW+KaLIBA4U$l6&e(8YU3FzLYpW+vMg#@5E{)!4fX* zdOnUyL3r96bHOIqDC^W2A7!1YHqa|n-?}>L{74^biA(rk;R;wN4ePO*!moI$n3-<9 zGQd3Lxx)OX^D0O<&L0B+de=#&|(DQm;wphKdqd2@ZMpaI=rXH6=rfWrd? zubb7e4Go&|+fgBd3>rPyIj7{js|0<{TsZsZLw!0?xC)OqJ=(rW^`fO$#?3|#kH(I; zy?5A*QnL9>EQI4-I=Em1?PzDR@BseD62%3iHI-JoFzTQwoWliqJq%<0pr6rA8k*Ko zspH-Z&7tjeiUk1&ZzmqwJAh3xIqR`-tKM)eAMF;c-^x=WQI?_UR=fDT6^P_G(ZI;w zzLlWWAu_5!datH@fB{7OLYJgwF7-^QS34sOYl$)+zgYh0fU4_po1;is+akjbH@MAB z%?jA~X)=|E=HMkA^?4ci8AFJSf(kf^_}3GMT$Yob#Oh!xUVXv~4*j^1%NV!13&oNT z9=dji4Y$s{%wpM_Jl-a_rIWHUrtIQZd-;Ov+GbR)7-G7n(%{ zjTw}$yR+J`negBW2KMK^H;pRwG5%%Y6RkO5WAuXxV->yh)PYf*u`imp374)ZYA zqeX0HG~g_T?k36BH1jOcL&KR^&1aRCAQpQPAT&okaWP+;JEwhNt z*S!wpB74_kQ+0%rK}m5KIcuX<1d^-v5tWushR1b@)H4bZM!Oo+?3dD`FjczncXWj3 zeBd-1GP>3k-A{$|qFE<^7R}D0<4yaDZ7v4$iA~ji#xP10naQy<8F*}IPbjIyx3yzB zAX+@NG*8CZ&iWFzMvJNj3Ig{d)V!8E5`Z*XLn+#qB3!o(i2+hNF%C8@joI!<=ZzG z3y(oKslDY=1_uZA>mh}S^+J^QYCAIU{cZbOvx^mZt8fc&hd?4isos%eUzb>ud(uc*gdQqn$r+9tXdWi|xmfqi4 zRNO&3Lf3WBAGV1$b?{871>w?Smy!gm#t|Ex@6IK^x(CxRGkTj7u9xS5;sBjXXD#vb zbndfZm1QR2BbL(^i&SC%a5GC8~RMkJiw>Nyg%|8>@o-kaaARE zU>cn+!xeXOH}>`opp;lQV7!E<JT_ovl3a7`&6CV} zQ_O6xv!8?JSf~0AWr~HRja;YL*TDfNt#?M=;@Uf;UOXh5+A?VwN3=_2f>U8r`( z>7uhQX5jNE>zGvgC;0&X;~fR#kA%y(lLSsKVDCuX9Jd~gV+iQbyT z)?v%H4CUY;MyP(j`R^)#vn_DFl{<{3O|fygPdrQ5Q182{RfsM|A4J&{4XEw0f`Lai zEuAjqqruZOXFWw$^DpNi-+dD|&zTq@kEa0-Y z#Lr5}8PK&b=b-72gM^K!eHh-`pqyCj8O-H;F*;b2gkKK%$Y$1QXLIVb|Y^Z11w|w{8#?{>_#7&O`DRQT?tL_XoIErg%L)0?=Rky=+;{L z_^WLU{_)EMd!hN@O%K3vn2B-tARj+2yDC2fJ2yq&dG#TXi+$ous-@!CJ(n!981-ac z(GMNe(sf$LYm?miaAgP3!JM~zra@e25Oa&uLUr(A;+0h`a(5Jaw+4!f_Jn*7OkuB# z5olp2+)F}-mgN?lrz9HJd46$3kdKPKGx%|^HdO7wA1s=t#9^CF8i9qjr% zI>bG!%cGR?vO=fpPDG(msZj(tzeWXnDW@5k`M!{GU2oi7UI_qOVAv0bul?J#w@nT{mwvj&ti8LrK9M^i{PLnlhSVE3lc zm7Bk!H1M0mp`%1)4yn^S`zF0OW`%6+*$tV_oA>m++!>zAhnR8L7H&Gb?o_No zUG-2G_7IJ0u2z`wkZEfKvAanVuW!W!+d~Vp7poebMx(#lOKN8Bek%gDxt-BITT!?_ zq=np;Au5jBF^Nv0o*mR&ZiG1>dczf;60yVt+w98OSsne!rm?q~Dy@iUL2Z=s^4%`H zK4Y``lVV|_trtTLS_d~0Z{F)2b=@yWk?;AiYTL(Y} z9yAHdQth%ZUF`3~UvsZb8$WR{AFrNz4Z(1gD)7&+Q0fVZyscnI55+Ntq^+& zm<#Q$N&3qL+xUs;drz-V9he+chQe^&T!#VHMeGUfa@{$rRE zk^(T3|F`Xt6vxT&==ZW9p%^4oWTh5Y2}>o(sFVK$c7fMa`5~<~XD;MuZArB96-coV zu5;wRW-`$H{vlEH!#t~#FgR`VsKQhPYrs0e;FQ-aXD(i?6J3Ook9>eqV_L{F-0@JPb#{(4OC}2WxFB#K zNb27F;DeAtW3=M87%#1}RK&oMAX@L706ch_Ls4VpZPEBn-@7b>icw)S z;oP}64!k}+r(h`D)7J+RibUJKzrOqEH={}4FZL%HM7gD?T;y@DLduTgO0ZK;IK|8O3{@$Yg{nVSw&aMNzW;SM@nz&yr8wmo%PK!M zym|A!rc5<{6g$>x2Lo_ctty?qHv1N%u$M;iMaVqfbpSo_qB$)1G;;eOFdHnU+O5S% zq}@@Nd_#jkZkn5H07u!}bB=yFRNylxcnNalMw z0x>fR9o5*ekz$7NIi~v8Me-lh076EMvdrmF%fGW1gZw}@EciRz;1tvFg*tfI4j(o? z0<_BIKe+p{yH&6KrD)#r+Dc_yK1Lc58%fg$KZkuVm zWvCe3Y_PQTbd~xvhCtt%9a+Kpe)YZ?ZLpm43i4FIx7KeFM{J}cFUY9JvF<)_t*SM9 z)q4Q|=>dkC%5yg90x=FRr~=XIgF|yq(SqC&C0vMxG-AY0;iL(X*8SiVgGkB*Qb$^dSv=RlFQNeE~twz7NQbp z`^boNa{09w;GppaYJM#-#1RkrFy#}qS+rAK7)CK(98Z>tNpYfrb3(d5F6wx#y{jNh zT2C?cfntXNDQW;w=)|6FJve(`m-#C~nunGg%%7>bZk?_q4`SA%jCy&-=crd@WVQF= z`ExcaH6jX3LduG*U9=_dlP7@@Cm{h}A}?kce&BuIw+6(koMstAfFYx$M_*5Xy8eQ& zI)2_fTLn4(Vk;tzRM!+e0WO4)g1>_j2_t;X}N#djWoDS*GngN%A)UI6 z{1fC;Sj@PnXLDbFT)hGyr&=Jlp0PewuFmm`gB%u54TWf%b$uLumy3F8%|SOHG6q*C z!n^eJP|;;%NvY+LP*Y2o0ZP>P&(MGQ7VXki_YNKrKZ}0WTe{^=w2eE`|)FdC*geT}{ys&92G8}Kg+tJ&-NM*j`d#ZNYH~OWE%G7#tV&Hx#f|Vq^Ep9=V z75^FJaQrk^!#D-qN}y6XnrwL>BAt`NGLS*#-80~p7b2CQ zuj+;FSNX%I1>%K~laqslY6Z^-v$M^7WQ>)>9k2BF*TKrXAdY=XBg-)C+)!rblaa{@ zm&~S)0frEfb+0$z^nH(Ii%6U+@19~MqJf8?UG909~!Br8F7pf6i-ZKuGhQWGx2-Ir=k*h>xr)#)pGBVxG*$2sJ2B~iz8SmNhAuX9>E%HFMWKAUz4N$1;a7>Jg7Hf&<`3o5noGKC; zGLAV4#yT1_0>ikTTpJZV0E$Majfxq)XEa=y(LbF3>eK**78sS^Oe+ZvSs7LbUwW#Tr# zm0Ne6Y`ZSFUAdO~Jc1`me=`T0C>Z5p2mk^GBG7(n`xg!icrDAvSjGxS)ScG}2{?44 zf2#@pSX0?7Zp@k2nM_w8_zQFi;Qtj zU$jjud+;J3S(09yzFwseNpv=3TIM?WVY_<(^z%sNc5Y^>Rv!V+!&5IP@+1y&Wp6Uy z+FiRs|LV2<2CZRqiqF-g56H#;#+hRei}(kP4=62~@cfynj4M>KkOUFlH>dF#W_kmm zHr84++OK%)jd7*ZKjNlkpB2H091gF0mRdt-{NtjU(~-%qpiCNRyz;~rxjI$+lgsW< z)WY_Z-oMX+lmUdUpzz-4)94(mLL$}8`zksfY0VBL(q#6^Pb3j%+}3SUthf3rR1rDO zx!N&kcauautY^rG#Ts|hUsI6;*mNX?S2RX03AvF-6}biRnNF|~T`)pn8o;gE&Y^!G z6_rUoW%Jo)Rx%htDtM->WLZJ(@q%wSUcj~Pw+X(wSb3r$q5T)>v?tM_55etQk)3oI zSX+6gR?$rB$)+2|=WTD4x>2o_YFt4qBVgt5#!X=L zU%Bdu{ybUd3{CWy{UkGpV0u7y>6GB{aJPzO-ZgLL0;(JoevWdjeS#7B0-I|PDVY7w29Yzzesl$*OR4o3DU$#>SZsLQ=hqeH z?IEjOG90uFflHA0Xvo)ZVLf|~M)&S4_8z;7vt2KzDRTOCPrRpSHWf-HX}$RWyd1vIIVobviuDS7=6McK!IIJ^s&PZSnt0m^wEU4pzt&~p>^g7ClS0mz|7 zf9XDD$opI1k#udh_@Lpp%yqLB6-f zmw*eGPsnf3uVniB>ZbAyzUhfS zy9xARG(P<6X~J{vb=@v8;F)7wxNwCIQFaNkyBl7-{Fk}Nz~U>fUi6s%M}`9O|E&+G zKp$3G#5(>}s~j^3KsNtd-R|Gg=YI87n~-NwB`WXJ9p#n`SHF%=|4AKbE)cEuqVvU^ zl#a}NXn%$tY|MePZ>06`qA(j^%Wfpm|ChSdA{+|a-Wh=RF)IN=wtlzPXqa^^yR90j zzzaS4q9O+_-0nORzpl@xW#|Q_lSUy3nX~9UD+bOpllK$y=3;ZuLg`jre8aCQ+z)qX zNWnm!#oecZ(hS&jn&#z#VFqh=%w7 z^A4nLm0#p%fp4t51q4; zy1>QXUVw|;)2N33WvOnwCqSVItLJX%i9qJ2qOtu~vUN%h3&Q)ILBoTGkp_ZCjL#UU ze7NxB69({hAbNBDVeaQV-Fr5KJA;$SpmSKdDIt4~ed`AUG4t zg@-8t`z*SD&MOKNfk)J~!}IR^=Oex%05tHZubxAA#hF^WgM%0y$SchE(!JI>*CM(_3C-)U4oQ>WGx7%F8X5fb)opg%Ds}-R#*e^ zdkNpYORJ(Z+xe9s*Cyrl`6vJ1Y3e*z&;uhDQ!6gn7{j|s+ACk|rEZ*8+)G#N5#fyX z6WdvX@7P6QxdWzQ1$Bek2Uu|ORYv1%6F3puC;JyNr1Bs-lH9Eid#H`o4ilU>XD4Wy zKzFxw3C>vt(5x2%;HsPw#eexulAl279-@m{oPRYpUJ0O9<8lFG=k9%G0jo0Lb{d9O zH0M+f(0H-0dXn2AzVhGMF$o2bCaC~RyYPkE9RH4F5uw%2IBl2CejzYs z>-@FO+%Qe))4c$vG3EdNG!Zh1?Iqf^GL|VXE++Ev>cDO_Kf`|}vApg#o+a?P+dXSM z@3kS@w~EXTt#J$OVMg!vI*mz?qVjzHb^*?$dn$2=C&KM#tBd_Qy>hIHL_iatS%{Tr z6LQc5Km5XgtEL8vMK|tcCW_*Zx!?p&_^ z!+Igbdm#eu^ht~2;*!$|;SlZH-Hs&uU8en$z2oeiPenz3qSRWmwJ4lv5abv}ewgs( z+W8kcBc9Y-@K4-Fo{xz$!n16En+DE{b+wVq(oo~+a`rYVfaV_!dD;vxY zJMhcq>$`7ux%2o2!n%O`+Wx(~f5IF|55h012DWRQm-Kt()0B@gl>wh>dXPtVPU6pB z)jA8%e_7AF3eqFt*z)A03vV-aMZDS-KikW^NNqd5Y8xmwv+jEUb5gTQY-;3JEpN%3y?f%vSYJ?F6D}z7ix42FI2`0kK2+?+p<$;Fg zKR0`=0KV8@i*ff@{12NLn{;isZhEHi`#qeqTfmnxe7lVNud%q5vJVPfIOFt*J zagH}r55Y#8LMV)qf`THRFj~?vLnBwB9DgM@T^&jjRcH$4TLcIP=5o|8uxNxxGL7c> zkYqDEd-NZ)geb^zyR6BlDt&i)$mq{}ESYgcsz7s@jR3&|5=}%>LCHh@50iLFB(H*T z7(o_K_%R9DjW6A!)p&XRF4gCh&npf&Wc3Plgf}^9P#NgUBBj#xr6U*(^~;zkM`mGW zN0(<@eoQEo#=6c*&sgeu7a30V5xYFryt&uE&sL{aR(~E1ZqhAwO`zLv z`go7l#nx4YRqnqN8xM0NDgYaVLkg257F52=ix?h51_sdrHm|;m2{~4f7l`b^lY|20 z9|1yGv4p?I@f{hNh1ksCqi;rK7C+Cd_~uGr&3CAA*Z$C<)WG`E9S$WazIJ<(j!B}(!zK+f~?@FvSYG7A{w681nSNr5D+gn@BqJs zcmy)Sa;KU?N{M!P()MY22uLwzJNYdsl^i0wx25najm&t#5UkG$O1s8k|ol&b@ZW4WlA^36=r)^~ZbuxvNzY+w!r_GZ<-IvQ_BeKi}P`R;CP2C;`GPfFAADk>G+^w-#-( zkxU=AP+^}6?+zPZqXxbqzBIfF;oyo9%jT5an14$pz0<_Ni25`!n8LGkIA_&Z?>~X2 zr?)mZ^`DrWEHGcILrqJLv=w>S1a^x(zk0)~AMTI|1|I{|L(!UQzxxal8cqjIF(4Ki<2wAT7^B2L-;75K>u7A-}--4k0vFBDy0t z|JsZM?dw;!4^8)?S)R1=12cC(*B+BvW?_*Utb1a+lPhpPMAzuWpN9l+IWaX~R zqw4KFo$#)Z0>%7K5xGg0|5O7uB)H)qHc?eyocT!h8NL*9X5rDnciHH!m| zI_+Hxx&vaNR5Us?PpKC&4ao*F7xmc;l0(!O%8&S%O$VO>=gKnIvG}c?jE2Vf%U~DL zRMp)0_CC}lq-V_~*o4Ct&!po~y#B4?9C@qaFS*-YWCy;HWaT*1 zy(yX{j&4+(>!L*Bnz^HTk5<(nz{L4xVfmML%JK_oG%>yQ6R>nBAHx()P^W7~2w|x$ zM;Y;km2kCSpb>{i+GL{|%GLC$9>git;RBE`jp`OdV znWD&}_N>({9(?VISti{fWkJ^kZL zt`zXAQMIr(F_pm&Zm2H9?_e`GYFRexinF=Mqg9p(y$ZKAh0drQptmi&Dc>;-(C=~F zTx4mIP6M-VMWZNHaiKRCuiz~?Ka-G%Wj9cRkM*XJJ&1q5pFNDDTyB`ZpKt5Dy9WTJ ziqnR~+s1QHbO|{z@Y4765?&r1qKd$>*Y!&&RYmG2#nlR;aE_An={%2>yfk&n&AhJ zfjQb%R7EG|J>~U4kpwd@<+CL~-wP}o!+&MkuFsou4^zLYfZ8;rxN8{pYYrl}y z55x|}H{M+xZ4Zo^8efN{KSLWjr z_X|qP1KK{cK|2PY2SCz?;k>8!cD+=2u_PmqKLT&uVRc7Q-DR>@A``&cmF@P2$b5PG z{iRJ?-1Bk0)T$7zkR>R4oq0+S&MJD&9-Htu!j&Dv?Z zM427SSWLa9zZvUu5Mued4dgBqr+@QXG=4}n7ynUoUJOi_4`k)w# zKRPpG+U&R=5w0^bs$<&RdY2#;fAzDygv3yNPqBnqGImdi;fJ-4Ar{G$WYOF)pLAM8 zmy#$I{p{iF`oVq8GBN2Di<2A-3bkKl#j4O|u~QG#0jBjOouA7a;{cBn-;w zy`}<(_Zkel1Byv}Fm~kuFZgk7?vB`m9RxOEpUb3AOX8m|NJ!mLN=%-&&5+I<)nHlO zo{bDJnMl@{k&L`Yp{67n_GGaoi9gm=-bKBrdq0BvZbpc=jZx<(5AVSHVk@pY8`j=N z$$rF-?$(9cY)5qdF3jX^DU_6?(2S3s@3Z4gcH)pd?8z3HCvV8dN)xG4XpFiq=`~ky z74SZ+xqM&c1CCfw;E-!O`jco;PHNcR2Fqi#4IgK9_VSkzzNGQOx7aLJ6Tho%c|)BS zpYbJyc(N<&bKI6BuPr~=(;1YkU`t1PW;)(?8z0{!THzVD2F+9Ty0R*lW`~1#?#n~p zO^k}iM-9K!C)27FJa^H|>-eEJuKFuc+QR{p$BKz!SL%o(NuhBz`19LdB?q-|=R)Y` z_UGwk`9!Nuc3K{b2TJVv3J!6_l4YOIy!GVBqodmIW7QJ_(!}-OD!TB(XJ4#Y@e?umQYe4% zyhEW@v+oF0t%T}u;3furT`Tz_K2tia4((HuGI$^%$77y@0wr#|qj&rpu2Brs?ceY- zt0Kab0XUurHeG>Kwu$uce0=;vjGk#ndq7$Ej1(tJGQPrP(}9sl*Zf+vq@xogCFs`km0&qJ;r`%zW$93F?G#+TTg>=ub3-kaWQ z8`w3-l7b(q{C;6`K>fs|5IXVnk zWz`wI-&6(qNAno>!HkrNWR69Y+oYj9tUWD%3A~%G2Ljeqe2cw#PqIA5!HXER!V4y1(yB zF~n|c@Fiplz`=+AVjJA0Qa@UHTs-&VC_+coS;PPSn$OF~+53lWH(X-Y{C`*d{tP$7 zO5@-1yLNvn!)$#mubLW{^2zkOEZFiVwa#zF{C$kttCdHw%&y52xhWFn+xywq@utJ* zxJon@q{3VdtAGDycPc2kj;9~7>(Z7Tx=;kt8p|yc7JCz8+2d7O-r?&6T&@Z#2m2X) z*KaeT^&ckao-goDS|qI3Jaxc8!jG;~2Y%#g846FcG2F>x@pZYAG{0$EM9|I1dar?KZeu6$ z+f{E$fJ8zrQ|W>13SMu~Ml58q85OgrUJc_>q4RLR0tQFf(PVwts{k{-rjIOMfy`z* zZ7t-9&U5vR6?q_8^PvDAAsFYT@oY<;tKD zt#ED?MkDb-j`?@ao&B`QAs+mLSpClpw#EQw%(P^VZ*588GJT&fUS!+yr-l1_gGMqH zrd4&%n)r~^?cYp}Hxm@3S}@a9yD$oOO%h~ znck7a&Jf;QXmQ@|uBL}gx;_>%m&kwY=z_H1pw-9ys5ir83BL-zi}u(xjIMaDf1(L{ zrKx_FL(*xERMuzo4<{bmCZ9+8?1(f(g1jf(bqxdVV=5jbzo(X=zg*Y1RNuh1)>x0z zbkH@S9m(C3DLLMYIpxDWb*0Tz=a(&0h0{@fu|wq~b>Dcw;S6QoblnxgUJZ)fo^+vRQ+Q1r1gXIR!_mmIVfPhe z#SX(;{Ad;1Tf{+~V)z|=kgoYiyMv=Dj9S6lw7z|=z_Br$2zF#TRFyhOmy2Q+bUM` z;4=frIZoYj&QX6He^|2#u;sq)5i{Wf_VBmsUO8J`*Q$y2By8;mTEYi|h+Wn7%Uld# zz4Vg7Te#v}|&%++hOjplJ3d~kml;6<$k3JT{x4W;&uSW`f6QoY%&xxV-{ zP`j>>!Jk<9>XWh^<=Oq><<0tL;rbh|uI*7PXD;+>uou8&P`FpprD@;Xg;0$7Q|nm^ zgo0euxZHbpphFC$zZ3rBRbAfF_`pqWX4lR3^x9w^O&2lBDH6z97-v(~ke#CDjH4{A zB=^(b#jui`-$qNi>39k6rteXfbY4GRqUPO3Q>%EJx$n68wH{^4_d~G!LRq1_+;&Zy z%zp&<%Vsx@o%KN1L7|nUAMskOni|&|+{O8qP8>tc+yLvS@$Q$tTW=j2j&|&J*4Jut zOsXXUX=+WtFsyX@vHI}=c&wfM5Mk+-Fcf%hP1lVb@}!Lk>V}F^75e@VFYRhoMfsM_ zyX)q$p0?$1lP%0opd`oV+0<#Nw6{T>aN;zPA&$osl$KS|$+)NgJ4&X| zR(!|t0AMR?RZV?G`NDW#$JL46BFBmG@Wz_Z;!g&LVCU@=yTHuVX(ZeSq*HM}hJ}cN z<}w@0Fy6@vvASZG%-SicmTNOfyggneB4NGSd$1WZ&tcW8Gf_Vk7;dj*)@#lk)=CSp)8@v+_?S)MPcrHcb4pK(@LK|tVKHjW`&hPCXGLRHYSgST zGtg{GVU?0`%bi+3+Zk?ZzYz1$aGjfD z>oNiB0=U@Yc%m)l?h9xIaS$PoUw=e;1|I(eT>%LX6ipXSnQw9hE+qplM#$>!E}I=b znAEN03)L>W#XGq}uAd*bwzh_49K5b8L^MMh;roP)HR2UB`Q>0d)Oz1T``thAM#I_P z4qG%aiGulcGI_$cd;$XKHN+$&K32y%{NSVw0w=2XsX9>(izm&BkG`ig6wHcVJu)4n zG7G$Kw4V+dE83vJ;?Hw*68Nj2^`S6fP#j2sQEPl_3`<@3S>dRQ#a!*rwpZt7zECoC zW7??-O|wz=+A%ceU&S-#Srz~T@C96{)E}^O8&`u8C!}dXb;?%Q>iC2uFBY1$Dx(lH zIgy=myP2wWSme78D12gHA0jG-v*p>76z?m-Yg8VJC}H3^v6*TI?6GBm@m(PykB0Cb z`{Q-wrXMBn$A*(pD&S^KFzaja%os8~Fwum(^9}b|95Cgm!gS@Ig%|(ccVtDyunv|Z z7t6p@7p$-e_v5lNn`@U{tSE)r8v@2B3=-)Y6TY%3V{`I*8O7H3w)UH5MFgGdpo6QQ zed=1*gH4^@z*`4wd`MfwlxF_-9}PK$zv6i{Z%!dy_IW~JGh_gAhjDpQFO`{-j7)%C z!!Ea&>?dL2W>`hn;Tuz%gueRet~(B-u@b?X1E!3yjz5Q1)dex`3}4sk@HHjxQ%=-} zeYfVZSp8%@YmvJXnHdR&-iN zOH;;&?2q^nEwK=@CKjkz>%(`A72Z}Yl`cc}Q!Dwa%}lF^MjkN_x4E0z&;s7t5@-)w z*Ske677dk|)+F4#FIlHbSOSGD8fAIQx9}F;Z=F~%sqQ4~t;zKuZj|c?7;sE%Uf5#W zkB)=vNd|EcZ$tNUUxir6Kw}3cM)nqS%7!ZvsuSxmoEza+DD;OLn`Kmy7JkvP|8QZa zc(XHY-%ift*F)T)8=CgUzU$Mq+qk$NYpolH=8}#c@i#zkx{SLNFZMQtZSov# zdUI}!8ciCRm2H1gYt1R%u`@%#=vB8V21A?_rbJ}*YTnb0H8`pdZQ$AOkN8m=aPBN& zPaP{Pa!Tc-Y_(41H%*dgXzMDNzszqvX1NLqTPKB6z641fi-t(Uxj z5veTUhR}z7E6jptaycg1Rrrad0xuIC&X}c~@Xd*JRNTkk$6{Hj*dc?Hb=qJ}PvO;j zb4y+mkfwL}!* zRkT)zcDFv9L1Dq1sFd<>UyR6MA9u|GxN|FIhgHgE%#X~91&mo7c86vC9Lp9x*#>F+ z>S%aHN6o)aV=#H~UfHh8V&Lj()UU>$XR->>Q{un4TU` zJ9a;VchFMfe*E%)hU!o%Mse?2>;KxdNfaLWc^f1qXj zVU1N*nNFr|oK2%i3kk>@Ov~3Ud((5|!$d)zA~@TT{$Mxn-~$i5rZj>3Q$jWUW~lS5 z>rD}O8V9Rik2x4z?0JYC*l%X6Cq?4Qt$eg3xMMkszGE};x?QAsXE9BZjGg^WKf5GA zS65N)C^Ve-a2p3_N(&4w4`hA0k7&zt9=2QpZKtAX-BA{KzCm49Y+5s?8YrKrAA~plNR{p7c5W`ect(Sk)#Blthi0jt? zFBO_pp-Gz<&Jzn;I+Fy|2dR4EL_qcR(jRMaxK<|c6I{8>9-t?IYle)XMpz=#NNvZX zjT>ZP)2Imb4-=iJXDgeZi-QclMB*#4^jK&KwJ|NqOd~hrYdW`E2Q-UU)wJdok%B*4 zcdeGM?2IKE?zGu!keeRImD6xsehXm~@xO!;Rf(%b-s-d`jgh-Dvxf|ybhI~w6}BWn z^<(<~vG}5%iatGR-%3F zZ}bg`3!R4kA4lVmNYTeU+>iZ78WIc23%h1&HzdI6Y58K(ET z8mYC2&AS_TXw4SQ7HHZQv%mvQ#m%gBZ#BH1%VbMS(*lt#S;xx%<7n}{FqpqI4GRk+ zZ{d3a((M1X^qF+c*Buz`!s)P3GD7lkuQ+mlLYCnh-_Yn?>qw;B1;9lkZd2bOQC}Lo zv)#GR)OBXnF^h_@3i9}WJ1+tTjiS$*&2$}B3cC81kRs^Uje-Z@5RoLbU}Lku3yqZX zzkh$9tzPDwEFW`z)1KkSLInhVG8z$^d8FMODGfLu+D?JMga7faZglVD9FuWBO^P_t zr;JakLay@UI4;9=b}DLogW?z04%nbJGrU|Dln$Q^*X}qdjO|`J*|ZJ3PsrXF-W_1Y zYBEJF)o>WQ^s`X%9195eoY{^&jo~#e_rnqF!tiTuYiQpsCg%v_^AYr5! z)BLy(pFmHW@AIqjgfv})?UudV(Tt>_rpD!Etg)eU76feNqoYF9nd8X6` zWi%Yje7aNbaC1+X^v}AOht-_VEq>OlOL<5m=av(SQVp!M64hWDgmGkn@ z38Fc=qoJ2dr18bhzuIHB+SdmXP_MliZIq#R!|S7{AbmZhgzjGfb-T$BS8jr@epd+F zZs*a$9Dp9VkxJPXMP75V6~6k-AlphrB3r$rdZbWROs`LU9%n`w2-1s-)jAD<6XUgw z4Q$WZYlzRMYSMJtPS$ovb4_J8ySsaxl-pb4THdMhsu!k&gGimE&yPtB3d~*s$&^4` z@y+1P+N@>xMGZICro;gcAK-sPOTmNVUWxD~zUpKjpVeuoPXv-X(BpV6J4v(Eafr#m zfB>ZoZc5^vic$rL8iiCyriJF)M zL{xo`h@i0w{n^^O)Cu$a^`bz*oITQBrQBqe{v80!vbt(OrCyv4L_FzLZQFyALbO4W z@5QZw@5r`Mde`G$UfQKS<+fJ>D!ItYj5IbGQNoCZf2Fl|Dnfc*`B{|ty*KN^UNUBR zTnwKVn5=iniWifN0!AkgxDXPoReFfNdV;c`zcyK-uM7Jsk-9?#yI_z{^#W!}zs0}} zz(%uN|Cf+LM+pGxgxuCJsBiS(x%H#IVKtby;xKb_yMt6U`J&nL_rYewu!xA|xwTBD z{38=w3s)rdq@UoeGtfbv>&*XdUAh4JsvF@h{FqnS%|DFaK?9^e9VmNUnq|ly16el9 z*2Z@4uI2pcr5|^8LK9~TZ0v`4IXHmnD)t`Yv7ED;3(%cyeUsZw|1QW!$cJBuQc>rB zmx=;y9k1Qouu%pnBr7pzG;>xT}ex)XI6SvH0}6d zllj$Nf(M3w`Y8FoA)Xc1}8knT0pmVHrbXn6Zv-K&B zy{bF)LiAQz{HwPT#|&6qbAG!a!{4VMbm^(wyospaeU%a=SMJj3G-yP(ru4Gr=lpjo zme&YW?ubI%5GU{IKjG6W{V|WIxSl&oXTBNOL6>!x?Oa&`8{>61w>VMK5uq*Zw|8IA zRO>BZNM4yfWUqiaOBB5ZX_^~fbO!Fe5kDuw_pd*Qc*n(nd;Ly8Kyya#w1%n$!mZk7U1^sR^MGH1#DI=n!;z~Q^3Do}dJGt>EBM2rUF`4AXZJuhlCA;qg zRv}*<;75j6F8!>^uA9ku+>Y=2vNF4T7p>YB)r?dm6JfZ%em)_r8C{(|VhsJETix)2 zh|U^TF;Nv;JYY0vet`dX^S&+as)w3V5tgo4^&A!5>s=&EIUPluy~Uh?SGjZ?bVO0U zz_7gBjiP*aL?dMf%QMt#P3{)i7@;1wG)xTd>Ko3oEDEXA&y?_w3hR$8KiXWpr(ak8 zF;aZu$7|Jb`wgA-4LXqx%iY#-4YH7SL2;pU=eg3l5gM7EiiEel z@ejbpN%yK)t~Q?XVz;#~kn!^h+N907bakLO^Hl)QhCAs%73JSoz0%&X zC8#ztOf(hN+Nt1;1I9KV)bCGX+)F&9IXV)eT3MNov*MB}_&NTFa>I)JIr(Df`q9!h zb(y6Gy5g13g)56JI86o|HbeLLW=H7B3~Jnfi(}68c?0(8BUwbLL)JA7Y~SuN^AlvBs1&h z!b<7yXgY79?mKcD;G`Ld$E!t2%aG(LC>r5WuTNv8SYPoC5~3I8mMw<-%{Gm9z_~f2 zi2b;_A1{CYEQo$*LAtEN)XaAu^r{>k4uZ+~{im}h8DPb(ae%xnRaAls`nQEg*lIpa za*;wd9du7joVR|G3#AT`Q<9TQd`e4Ax3JEO=vL%ESID6v7FFz^r(3xq2cXys1@ldT znBmQ~Sb792vtOS9nIcljv1v4DjDGKXz{4MB8Cuq*5x)M>gkSE7on4@2*i{*|c@baV z&()$)Dgbhx-{v#A;ZpP40_DIu@BFQ7{k?9D2dfpE@6HZRABaebMOJpaTyy>)>`-RLR2U)g>;{RG z;hZAqu_5^Tvm5j{2Nd?s(}{Hb+ZFn|@c@LBL%XM#+73_a%!GWK4 z>l@GMYA7jLMvLdacL3&pe(j05sPD~X%;O{2@8e45%@68AZY zXcrmX&k)RQD!o~8{tD5!+LjZoA0W$i zt?pPj{j;r`n|LGqe<>3DZvATOhPN{hG$bN_{i__=(P!!}KxZ4kHAsksqahGM%Lv7e zJcOlhkoMn_r2jD2ec&+eqg=1!6>2qYJl(WplEq_R9ETz!^{NIH_4NPz@qhWr11;e1 z+TY_pIo_c@`?T^_EC~HU%;3I}0;^WhwY2#7bWr~jORgljCdZ)ax#?$A%AUNTl{>Yj|hi~6tc{ti$~+uxVdhP)uRS$0`c zAminH8&$DI&?d_KpRT9>eQr0+3v_LFsd6}txvAQg!u+L?%@PneZBg>g{Ksbe->-M8 zL%jU25kb4#xDHub@pPKO$lI9!1$;5!ym?4B_YB-TJHRkn;@8`5L)vnMN**V0Y{?|^ zTbJe;Ow;_&uj{;<|Cvp};k@Y;&*9WpNvo-r7xDfj?U#iE{j4W_H{wyZ+;1T$VV+p% z=<05FGx$AGWdUmjh=4?N;xq7ROpZp&C!5?P2lNN-k9lSb%eM)bbkNp z*d%L2Xl?sDA9$`#$(brdeqg@emhHWoTm(Zd|Kv?#0Bm?b-K9S_yovmSzz^8HPn|KIcvq5OaU^xT2E$Iyf9?5GM~-++jQsgq+H+?W5t zoqU79H}bKjxXB)kh)z}#vdZ1cjkO)|7e>os&_*@rJ7qa_w#qw1lt>ik(*mI zzzOyQ5x=hp`OgueYauvyhC>eX4=)2?2lh@2MlnU&X%tx*g(f(}1XLA@c~rp~&W0K@ ziB2~qAHNU69Si+;>!Cf+>e+})A^Be|rdzj90QP!v)9(7m8UL^7F>d{UQFt2gFZ396 zcEpPRujn!J2n)>lzoW+x|92t&4Y8>EH^jjIgNtf10`dH<1?c+x|Kb9b8gwht(=$~R zxPfGgks=MLb6{%QjWZ$B0vsJT_rG@a&EEjFKo#CZHPnsbMM4=Zh!-3$N2kd-evVT2Pf!7UsMpasrt@9MbtpWK@% z`Hio92yqp2@Ag-xAZ0ZpZsT;Hww7vmd2m?UXiCNM*B;crE!E(2bja-m*zfMrkLT@D zq&MZK0HD-gWQ`3UTT-G8wO=AIR5Iq$>8>t8M>ct`wlj=;tb6mF2v9m_ugxm9XswA+ z2`vs_7;>hPy4G+g}Q@&E@X$g;hPR_RniG!WF4cv$^_QCW^th z#oT1z6H2p)o3t(a5v!>%u#HFakiwL)v{Fz!z|UT?=EK)83yA-sT!s{#H}_oXdjakj zcJ{UVRsYZepAq;xs>r?2(Zliqe`6AoGOSN0m#E1EeEjeP;gK`mvp?UFzr^fb6(F-f zD0wr8G}E<`rw7E)%Fn85_Zl4cEf%{JjK!pw{7k#pPY3hKQt}D!Dc01-ny`xN{@AJl_q>TzOmW{6MS%$EPk# z1Ei?w!*S=n8Y(6_F0cfd>m^vy%u~Ogf6810fDqT+C0Z=MQwhL*A_+8xYn1~vv56On zi=7 zbzcn)YiOv4@BlT2lrvcMDx@;6ecPKs={b2ojWX(ewJ%sEqYM5jq;`*6pS!t9p>m%k zbSm7=9i2a9an;;6#Q(q!NW%~jGOk}pNG12lP&^RGi57>C%B}*qjfhc?&dss8Z)ROS z>cLTCw)&H3RbPtrfw~&9R~Ci3&eUe(t`C!+>=Xs#U26wr=#L@p7aH3pj#Y!VV4ub= zyOry|W7fN70D@#*rExgKJ+Z>-2qeR3nf*9;?qz5;Nb8TygHGl?($Q>5arTKLVoIEv zwQ`t|+ZbAr?^1TR2Td9z6Ip~XgO3Go{Shec76=#DzRtW1*W<`r!K`MSc<*SwTYif+#8jEnL=lF_i}EM{EF9s-fFIWE`-<+ERH& zDOn5pGIZJ5I$QZCsz+9cBKdYCtmO-7Xc#V`K1Qz*v0DDu5XGYfUUV`op!L@+^dHU! zcrmZLMz*9p0&Pmef*i)TP3Pd3lsgQ~g)cBeK%evY2?X~uGx zM`}5Lj*6vDqSd6>0TE;5b;%N4i$(M&?(V3foy38vqCz_9OZa8n5Aa?AARWM)iI5a> z36x-c>C==WzGq}alvdOTg$RUI^SHnbRe>J4Ta6|*lqNVY>)!G-BOnUc|3Va?J0V`q zgi@^1+vv;*Vv$FqRVM511EEPSW#7Hlswffs!{6))hHG6ifg-->GG`GY=~+C+NRAsd z6;l!asi_dm3}pVvhm?5PXMMZ_P1jk(fXju|{2}E<(RpbjZQoq3sb{p^4Iiz9yIO&u zI3Sax9H{3);R2znT<)2^`*SwS65NA(4r$V*&v#YS-E%l%UN92e zp_36) z?5Zy+HvH55@nu#voVx1@GRKn6B6W;W;!#nKKmjFy$pS${Z0cUyT`5#DE!1KR!T|Fj zg;~_JK_g=tp$*3 zRT&u>I#ps^T&l9%C~T$&u^V)^b0IOMCexy5+1c4|JNV%mix9oJYPzLA^8Zv|{*+Q| z7;Z}V;901xyYh5{vhrXfc0x1VgPTbtKo0`k642MrXb=)hecl>_28;_BPM`d}gPivJ zAG-iaLCeseKJ`(}wgSt%*p%B=eRBT9lmyr8Se-_opTIOL^|t2i=^gQ7_=Zt#RVq;| zw4!+Cs?=2xsojYFa}DY@JTs^r?Z-*A4_2=M+XRr?#&0mLPsbi{I`^|DrGZ!{K`rL} zu-F>tkT^1$q3!gG)kmLtqkFKzqCQAmv(s)g0LoAP{5gQG&kLwLp>GG#CC(xng^3vX zP@v-^|MGssn0=|K$Lx;yT_P0}(b4RyqGv3WpfR-`JS`53g@*uh1KNmmedcQBgZr%q z9n=Q9{AJat@b+J-w}Bd|2d^rN4zmFCe?_MEnu7qHn?pT^t`rqIsyk(Gp$ImikcQIe zd~7(sgoOVi)xjL}NB6qo_FOhtCrdxluT zga;bo3m*%NZfcLc10VEZ&qkAp`aLGalxh63at8ggurVvCzC&@~ z?DQq$BYE6u!TLjy^P39pH1*l?$7YRJM$m0ai}bcs@mxy|I5aX@fZv87@-9NIew;bG zjxHgbdurxuk0s z88KEs5gMh74Ke`qz)SrX5Wfn40GKR{k(xTxf{KD^X)bzK8F*I5ln+xeX#Q!>Snif0 z(*Pt`NRg>%+N|KGUb$pPBBMSc6z5K9QCV%4fb;PJI*Q&2a8n*uDl7T~AW^m0|A|fk zmGluSu&;{mYr>YAmAdRCKnC+%s-o8!nRq}!dRgs23%3AH&?n8Ydtrc+!y{IMP?_UM zK#x)GR>Pr@0ub(cHjls-y4*oFLfBhmZf+11pgF#jPF~|JYvqjj(fuVNCqm|;e7$5< zkXrpGjhEpAtbb*IM`LpvF@s5h#YcH$d{xjcWj=lpRWky|S8KN%i20cN%OJ8?H&O@) zFrNU_tM4}}H3IEA59v&&Wif=?y?#WQ$8G~9ohET1Q7;Vfqi#_e%oBk{uYx~ha)=EX z^`qI=0JmogN73E_{?#u001VjSC$j_C#&V^76n!xRund90cp6t80LnLh05@hKt~Bz+ z-3+8W)Fw@0545Ih7$tz<_#XpRWdoFYfpuoj$r1*_%#6kzT=+m_O+?w1_br^Chd*p!nIZWB`twyp_JrOyb0ou(D1UZ zOi(wsc3_R%nZJb?fLQP@`3qqJB;W?EaoKqo09}ZX_CJ>uR{umLP!LH?vTg1h5?kOq z%>~_tf8aWAArT0M-Nz}lhyWBAqamXx^t;%U2TnF;PkmQ zgQ{?1^&%tHW8z1zj<7QP{^eVt1OaPoT=TccxeKK3*SBg7X@GW<<-(L9ZhBv=O#8#h9O%=*W5U7=;XiiHFG!|a8^|D#l3GWLF zi@`Jay0M|Q=M8U08gr3wF&;;JjAo5y&FB`<5faKQ?$6BZh#-zzinO6w^17qiXe_nkPAb*$4?>#2m(P;SAum5Xco6o2JlpUb&f%dvf1DHD(H+gocFvY7*e=)) zS?TD4W9ix$4K!#l(l=22Y$Mp3h>my(3U`6GeyZ{B>h{9hDlv_Yk9uJaKgbH0n0Jj! zGQsabMfXA=p}tyOyk$ZTsFckJ69uXPS96RpVA4;{M<J(nfo^To4ouYItd=;Igmnl!2C##J}DpZu86lXJA%v3C99pwMMt=c#V4zj>XZJ z7}okv?jCO^=DWgl4`w_7u)*-|dq;6yv!h1c7qFT|_oW5`8p2h47f%Jcu-~807WY&z zb>T6?LnhlJ0J+&6#=3pIZ%ygB`IL~p>L~bZf1{~xvWj-KZ+5P(@Im>Y_F#(3kkc=< zqza(L3R$(a%}fQva9KCAaD34qd+SJca)y-HY%3IF zi=Eg;qo#5Hd!4z%eq3@nB1cS?+TD+2QiO`r)BQ|l@M#{oQjx1-vlpPe%7nWbs=&mx zSUMz3ry8UMF1c`Z<5PADYo>{#F(~_pc5?Ap!YTHf8BV*|R>JYKGR+fkh+|%8pOe0- zkVlVg`>HGq7`4jY!!yYU&u(P)-O{!3*(iHks{Yk*vDr&a361ZwKZieAxsV8Wsy))H zal@me5Bnfd5H@r+)No$9i?N*7ReV)W>PJ^1pRDYr7 zwCQ7g>5v)C@)FB^0Dw8gsdgdipaZ6-choH?&mwJ|WNO_f+~j>ox6?}v;4hfMgsQ$` zquD^ERMf*3m9s4HkVr7%#ezbNzeciwAV-Yq8T^Vg7QBG0)|m$ZAirM&ApYIBQc*F2 zwodkJ@I>2XXRlJ{oG@kIXFNggccMTrRjTc67C=yHASR7DUj?^jt`kH9_yZs}zKQ(` zTJ}m+$#_17Ez#)k98fF%)La{kD0h;@zOFt8cr#v6@SkGc9-xpeqtZ3+OH`U zizh?Py~jzRT=|tcYa;h@lHccXwR=Kug*wW&U3x*sWsUXz_#MGeb?`^l>Q4Egd}rK+ zxoQ^=`a$^M@=;ZRSTY{YeF5aMT+PzT9<$+5HA5k2X7k~mdzWY(&fie|#}CgC_DHY$ zv6Jj8G|T|7Y^EPKPj>q1+-_g{g}$B0-W#eWJ|zQz#=AWlxD0}zNahV2n--x8RqOco zei5o)qa%6Vr3M;vYQ(-QoF#m!>S&OhHEq1qTOL$@;>MgSU=Nx{)5W3@8X)twQ2Xje zipUz=PPh(>;TR!d=WD#=BkAGxReZ@ghE9B#Z~sG0rsK22el2T9AHJSS1yHxL7&8@^ zA($PYspj%QA4t+k+i2=Rs9BaK9VIBha_7-hectpM=di>rOZdJfj|wl}GgkU>Ra%4H z6lv>#r+nbPG$*}`%%vs&fQOj3mySMg(qLBq z7QG8gbe@dY=0D}KQ%KY-p`A7p{`4u(*qVGMyd@5n&&z4XT~{&IPXtW1wz5=-rEp|# zi?5LEFcLz9nR>;wUXFrIp%V+vffJ;X|7f zW5rRYgzAiX-0X=m&{q9pO2}*~eD?KXZn?K*6_DtxvO}&g1r%Y0Id{HtGHmW~fPm-d z^nNE1lV4|p(&zCgdjO-P)|+~mQ7hXhm)A1$4+ zC>#w~eo7tYF38O-UmZT4`nsw%2BOK0uPtZ_SsX$44LqLdvhWpU3b1mdNEmj~E7Y8w z-H0g^?Kq*i7n|kGV-PGyvvq0LOzizhr)}TE(lkw0hQ;4%YiDcgvS<4V#P-!&$NHE( zi*6A1W;j}8|8gk}ZK0UNBN55YxyoH5RPL9wS=!@7Nth&Z4DDHfvGpsNzKLcmgR3ftI_;6>A3c5{U`%G zI>o!e?19FcW~02DlWWdgAu-_c+r~p8I6Xqgdsm=t2h<5(VFZ6jd6da8Voa@j@28lW z&be#IxlM#*-j0}P1Ql0#hj-jK!BQ0$XLR;Usc}_G`6Rx&d z9`GQrFr=+jlpq@R*`T4e-ZipzD!Gc8T0vBFx!ar@wLlfkxyC7%8#XSJmWOIuBT|3w zw!gAdc{k05LUsPac(h%ZCF)Saca<~9GY5lK^O(MdbPJDKXG12#5b5S7hSwa*V^6tg zJr!WjrXMjej2hCc2IZ6qRWJ+)))m5ZqdsWF4K1aAa(|Ob^Z5IY-}5_5KjiP}ZcvTu z8WMOKYra4>9%I|!_&AN`V0rXg4YO25_~GJ$o+-tfQhGzngVZxi-RxpZ3&%ekY zI(>Y)$?GDTs8T27${oUCA31$FhPJx6y--FZI&K-6A*AN&8yxgH>3CcOytM$q+Kzk% zzWm5xo24;0x!UiCe=gTO^12vAHMl!?exkuXJ|qhIqWK*n#~Gck;~b)TlM^|Cu8BUw3z6+QrdRssBqjNv8dcS2gQ!!?tWPHaeu%8^-LbOvN z*`}}Xe8I(V$8!IIBc{eYi@VCvce+1sCMZR%&bQ_86A*5g+H*By6+q^*bHg_yHE3W% z)gI6qIF(s0zgsO;Yif8d)|Fs|PI|G|g{95lFugZs*Se@9bH0OG7n>CE38(;p%A@M8 zWjgP#lsmWe+mM%m+qI*l%r<_WYy!U+>$0CLVpEVzl3)<4Ffveq1pu~?mmF234bGX; zrwHdgr;i9j8PMMg(m@)K>TN?q*_G1AT}kV-Hw+ zzrcUmtDy)W2WPWCxZQw=vN+*OU*{`5ROg#U?=6A+NAEk2Qma#@82*qMsu*e=qIl*K zHX8msOY@uIU`j|0Z!J-^ zi>wxAdLfnHHF$U4)gK(8iM9Qswzry|O=R%iv%C2fymh9~ngdjoq%Nix9ayt6^UYpa zl8p*5v((ogOl(T&S~o3)=o5Fvsq65s&j=4;E~Sl?Au^!9p*{*I;%r%!u)|bdGAK^BN?K`iOQJ) zk@>{>_sryw~I19TlMjNbhApL3Qoy* z>;$c`%Z?8pIWbEMHM2|TK1tg`!dy5!H7(EMy41{M zw4T`nAREsPvbiccT4=x(c~SLuj_M4!m}!5j70%T5m(oKj>J`>;>9(VUC8prag2$kQ zsYeQT(?SAl)QfAP9~*{KaeLLLZZx z5B>D_A1gC&Cbs{ZPi+?LwKmc@;Qs}RZ0=!ihkKmK>Ykq5wfsD3WeLs-*qXBDW^+s} zo-~H3kg~lfH4UHan|096eZ+WL9RLbD&8hh1z>Z0Jw2%20I%yz;>P zWAX%O8dh?SRZ5Wppxs4dNhC;2^jH0-zv!>ivsHCKgJ zLynq+^_~bK-)ESyXCLO8zYG@b4huXBOfnw$)pLdp;K6{5*%zikjIP+zmSk_wgR5SO zLF~-<3?fWzR(~Fa^v}ZSv$veH`#);WEG`xWveYRE(x+|nhJ=4&R9^_ZyfAi(pLv}V zpll1rYS-DkIP3)H3bs&^Vof9&MxtUy%&?NDJyjf+A}(#OJr2e^TWSgxi_7YBb*xa6 zV?OY_J&oPgk^j8w+b_c0;vEwwHEWZpAna`pvR($;3mADwTR{acQ7vOg@dtDPPZO=r z)JWHn?fK*D09y?|6r%4(FR>l0eTl0stSGv>*dZ~%-(4unE})S!D|fhNYEFWJS(_bG zQfwmN`79ToNQ$S1^N`BPg?eIm!NkZq)utB*!WO*PCN&LX-2RMId4&H0)0c4zGj)agBw*%w0% zZxiy&OzVM8&48&&*5R|`N6E^#nYnM7zwu0NS#Bj&m@t@%>U-Ua-$)qc$%6a>#A4;XEz_}(CBw|Y1~0W*N9!`&{PU&bH*%-7nJ<4CcY}7orVzm# z{I1iXSGnZ{ypBrM7mVG%m@&BwTuf*l=*WL{l`M^AqZ`IRslN{_3AA#eY}-~;{!ZeO zBXRF%N=2Kr!qM_k4^k5jGot388q0m=?l%H2pF@6+mE6RY?RvE>na1fq3bT=*o%L+P z%+PKHI6uM7QB^FFEVQ)-?+uDwx|Ug~ps8rKPW-OU()m>P1Y@{@6C9nEz+{_Wq zOIxJOb^3?My;ftek)+&dl6v20R*yt^h1DRLZIE&W@_qcxRCL!|G{ZLa`+>%^?SnOu za|&zUN@q*xZ_>c6+iJwqH77Po^v?T15{$O8=XiH}{i0c4EY&D}|HS+G@=#N3u_PbP z`FI@g=?G>QslAh64u>H<6Lk`{l!;-+-SSaEy40f1)@|W@)mv_oLY$-k$fV0Br}e(x z;*CS9s#+a_LC|1-R)%OAhpbQ%>)7ZMYk9QklxZBb*L+r!=Zoj%W)(5Hq^s#Rfjhix zg~OnRakb(0Uw7^Dv*_;>=3=g5ppHl6>zIUo;<7e`i|M(B8hVTay|1~n&LzhFt3qa5 zJ5&Jl|Zq@@(zTufpmtZ_0xgKj_7FMv1{=Xse_)x zxh><|rn!p|SUF4M>lx5~qce0IxIaGFQp~fL{)6~U@VSt%~LsRPZw+c+# zpk+>H)I-HO1b3ntD$FC=;TJ6_PccJb69qMAObI4nXwqn#lWfIz1NnV&L)GfqAG%+U z-M_j`!Po^^6Rj`8TeD85yEY%~)H-82Ui_abx&N%;=Lb zT)7dY7L+Lx%!d=^@YHGURR#Jv62Zh;MUM6lWCNaPmltdl+LS`50i)Q~qsT*Om)jrB zFXtWui7Uk{TzvIvbx?t+SPj=nXl`;79S{^-W(lL<6b+zz%nPmZ`Qhhg`cSR=2P8)T zULe-7F?PH9DLiFiu-IPPHRja#qqnLgY3(~|PP&uJw!=^Rqp1N0hn-s_5>ldXQsgF~ znx!UOPo7&Tw01LWU_8-X^Fyns=&a2c9oCFuE`L%)e6HiT^3_+S=7Ix&r1}D1Wa}!tSDrefIFi4)JtmU2kJSwmSQYUzWkE&Kb`6J2nXipKq z^3rC@O2XtIV5_S8nk-<3T1Dbs3)C%!*p1Cxjf8U#d3<`Z_+hQ)0>lv+f20vShc=M^ zsEy5V)X zZQYr6YecLI|2;%eKKQfhWvD)bc=NRD@>Ax4&i-6HXBy7iW?-N@vs+FoH+1g^Hz6Zq zcI=)aoSSKQ(ZTjz1W=P*ztqrWS5v|9SRRO-JmrYnL(OJ`s+x~fi3@XthyAwX!o;+5 z9?1(-2IbzharxYC1MBfU$#{p=aU`kwX#!&)xeL_G#H-CBXEhm5^>(81(jrlf zILK;%-xHKYcUkj+jI-_8V=WrN3IYRm{o)p-K2lsdqMEtiIQE01kF9^tU9QTMhdCRp zq)vy)Sx%AvcK6@tl(iv@iB|qXdDz8$xw;wu0Exs?`Y-7^8M8I1dvy?Ak@g z-)1qIY8G!;1XzQ4o_{M;y)Eu)QW!zATqzD~zvtI=$BHSc*W5-VtQH)-zz7GHzWNBx zaKxb_PCgwJA%_{^_fseX$^kWU%EX$AGn|A~}v`xW;aA=_DD{OCe z-(&wG;vp6S5f#BsYydkE^Ho&=S$4C-N<8;k#5AgkxtZ&-X17Q7wlKys+Y?ris@+AY z2%-1=`|?X?Qxe<-8;R*c4(mG^#TTmr!G(KmzLx-hg~yRHcYJf}H3dTEiwdvI3&vgH zsq%LY^f*6%f8;aCap(&%orT6qG1jPL^LN)402)-cV!sJKS%ZE0vg;yvp~1uv=`Nku z94hJuM||Pdpt?^xj_VM|_1U%TEW0r-shyF7!%a*l#aJJ|_aEdQud$?jAw(B>4{dNI zvbD2iQe}!un1ux}XoPI`F!dj}CjOj_+2QW@r@`+g1)ukASl0vjkHq6~q-`F9O0}Wk z5)?1x34w8K(t#nX+q#R36$w&!^HPvk>V1u;kLyWlKAlJsa2@d!+Mc3e zUVLGHQ|4;E`GYa9Odr;pR(~q(I=iOaz&c_X06jy)9C;&wWU6pt_x*^quQsJbEdKIn z1rrOC#b6im(Ytf+>m<^}tn>IITJ~ew!H@tmLh{w~OMi`(BTPcCDUw+!h6Bmd{RK2J zpHp5_c-MM{Wn8~FYQX_Fmvj8n=_adRqjs78@9qSC?i2kr)q}*|w7xn0wxsb(Zoo-9 z2}n@Yi9Y%ASNr6C*vGXfgFBdS&NzlSSCu~J`xJDOuMXkX3p_Fn?>ir$tcV#8yL;|J z(=PoAtYMC5_59%OwgD$Efav%zXSm5H#f7mLB$wP0uP=EoL+q}Rk;WDj8;>=+0ba)yzBxg99S1yo5pf5C#eF3TbTsJOr ztH5ew6CK1iG00;Bu4H<++H*JUa@C<>gJA&2NORp);W*2DfM0*3(!t|wrBp1*1awb9 zmm}ARRpAJ#fQD%s$+bAZXZLy7V0URxjFkm_XceoTN$n@O0nX6GQA|q8>jt7`0swkR zY@m@EXjUXU2jZTo<~;;gg@Z-;jmZAskmxabmVAh?`gun_6#IVeHX-}B`l|PHstux1 zr{W-D1%YSVGb3UkgEA5x`_iZC6C6JY(IA09N$7K~%@nqt6;i9OHPntRTT>3299hBG zHp6Sv5JIa`C%Y1&i?(7v$*K+)PpPbuanM0v9FT}(gVvmJr)(8!a56PEFZ6$I*sR%h z`TAU5A>KX_O0{>iq|11CP*LlrYPbJodmPrQH_zF~p6gzHbULqFSnTYH7Kn+)+!}z^ zbS_C`U<3B%>5@A=Xm*K-~P-M}rP-T0m zSnRCWV(36h!Y=y4c4I5^F0*aW%S{S~K+d7M9X@dZH@>e*b|O95hO@zqS00k-#nEf;ZBJ;=GPsnx2CA{@e}!&b(<7M|8o65B z&hX00`pw{%FpbXub;nK}S7IEJ5Yi!dI51|*!*^MqDidZh!0G9d_qLc?=wIn@;;d;wZaN=j&uwzuI^op!M7Qy83qbo- z%BKWA2jEg`bV{CDHj)f4^Xxf@ok6VoA7UJks%^0xc#-Jn4rqP&kQslXQ4VcY~6D@xxIN3ciHsTAvHBhG_G#-6jq*hecShTj& zu}yeDi5;7f**)`I(!cUj;sNJ3#}1S=10`f$X%)mc~~%;*Wl6VOrfETP)LH zL!vw|N6f5Lp)Z)v*L?knV>lf{pIMXhnAx%09VO7-8F%G)*{ud-GS3g@(mh8?Jgp3E!{ zF}55${Cc0%pM)}u;!)V3}4b?hvYl6FwUb`_A7XT@lTQBZ74b4_9 zZs#H1AQqw5zST09w%6p2hZdihLQsm<%I~AENVdROj6kTQgJ*%@Eq9bhMdwzs#b}rX zTxKj5?_v98uX5fFs%+gc5b@*c zkFJLO$cqejFtOL{AqlMV5#7oCFC1K^pD+&$G#7Qwm0+Q8hVBF&VEZX_?kx9OlQ151 z$fl3i<9N)eZ66KN$S5yV?Ik6|zUY?XW=OSN6(B}N!R+xs|CP8J`C&muIx!A4~)=xm!H8vTTuXyxARHJ$&yIi_&ZE9uR zfoZ8FReoC#kj&@l4ZM5iGly!N1xGJxjfXQxt?#0j^s>o4l!Wn8Y0xS5z=k$LR^B~* z_O1+@S3B@ht+vSW$IRKm)4~Opjo~vGe!^``aNOsyFk!BW&Qk_n>m9=0WP$H|`uHd8 z{M%d;2V5ItsF1E)0VLLX(=yBZUxphtRT*%w1(5Ss0{MEwb}G!H=$v{PR)>?&mFSWi zVlm;lKdMjD=@|&G)IFQe(c8~O66Qhc5<~A^L;@#0q$(-HGs}-@q}sm&K!} zdp380ZOaQ82ix1*ba=1sls8p4zQJtAoT58PD4|?j=(W9{1#3DVW;575rfVHa8@OnS z#$IL#cbYrwv3;k!6YZB`Gti9fnfe3F>k#@ z!OW9RzmF387O2@8X1Bt-sw6a_8juq}=3?d@N^a7GVn)ky+6JpULd;iZrAAE}w&AN< zN&XcUhj;ONI%hV6QE$Cw+fi*Ww{S-H8x>hR#yP!tay#n_KsQ?|CfL`fb3E-cS{+`3 zx}5qQWbUUvdQq(}qf}HUWc~KmLMC*zx8;2Wpy{l~&=VvY%Vu|BZ2MzVOQ8zm4r&xY zVI>qw>e<$ztnTz>G^h;?GfJFYk$DEUbGgQZ|D^yjPrs}nHm*z9Tv`5%I<@x`*PsBK zJ@psQ;~gdEiWKP2w*Aq(x!Elu;%9C6MDG2<8tKlB>e%AzvyI+6e%9X6!I}t4ac-~P z=|rLv_~Z=~Jk>kt3>esznO|HIIWYAkQ33`ZJFL6@2x;#jb8-U?Iz>@UwFU{5b16B1$(0?SzakCuHxhw&&~Y2UiLB4^qu&Hhiwr$#C+BY&&1&Jb_n_fCsd; zqO3X21f&M$n-0W;knb1tVhMN}C(=bsimmIPVvLb6y@D*=_eee8#E~4}$0oLVhd(K+ z3@6wLLGD`mA?DFPh4Wn!F#Qrd(Ms_2yKUeHD428A8A^`lcLh%S(zV8u-A4h#j<_ap zHYr&^8HlD9^dK(to|{bpM)No;C<*)zlP17$dgv^oPT? zwMz%ObTXQEQ~E34=0fV6`|h7v!wB`iNbbzYk`P(?)L5PiT~yr8Ol2$o?QKfQXqS5; zoC?URQWFT}y}m>i;kV^fkJWSM%GA$i@%PWZejT|oq%5$k8OpfJE@fbo>ts5*c*KWiM(OqHnC(@nl4 zqV7sB?K&v!HFddDtIX5eV_HM_5L&Bthvs$&)ISI-e;fR z))cHX6O;bJ?NHY9@I~$MtyiESq0+D8%91)0?!HkmlW?v$N2n79O8l6ojX!UkFr%Jv zbxQz`vgzid0`cd3X;!YQ5wXiU1Sz_XUtF>9iM@N&`(X3XIL^bBqwnq1Ms5PVpD|B8 z4{}bqIUmjUhMa#^idw}w1VK@k$-CF#t2Gk=(UH5$LPLq1(+}NX->dez_9X8IUWF=x z4YNqGt49&k;@t3+AlA@SXS`>nv3XWfKj9X?Es9ZbMDc*wVLfz3{zV1bM3Pvk2=7hM znBqNDtp-r^u*~OKQRMjoziQyG~D7W)E z?WbEDH(?)CD>_N2g*e&ntaBE*zCYV`I**(hphf99`Cxk81&4N}+YM^+0bJDC+`VR_ z!!Kq^62+c2%i(I$wzNFdeoo#Ud3(o+HU9qN#7bzs;rgrNm7~UzB6Kq5OUH1G&#cJc zS%l6>8a?~j#5PaoyDg#&L2Rf|=lhEz=AWieK)(ks8X2d09mr1qUqcH}{k&g5(x0Pz z?!2?&pLqi>vl*0er5bO$Ynz&Me4-8t_F}=FAmX07D_ClE&DrYU=@#_7&OUkKVjXsq zH|Lv}PgDN&g=X;}r^Ji#uQ&twnhEyp1)eT4(4_6dS*DCbPT>IfdXJTD*o#isYcj$P zoIcUzN7e4c&ekonTe@zh5j##BiFkJz1#%cAPk%U7pGtdUs2{;5;U78|>rSe2DOUWp z+1e7RT}t#SfSEG6=U#2!VZOvH=YugR@|JI6%VGN-5HGy9j=vu9mHU{wkNz}H=WzLG z>WKe5xxPdY;YTu0mQl~~V+iad-Oi5}X=c@*oUZ)bYUqO(GFWq9Pi)u98!G8p&{bYg z)x9{Ls%Y16u$b|Z4>q2?Rp{=6q4g!gw0zR8kG(3-R39d%4$_IrhifalTekZ8b@JAl z>`Zq;q3iz1C~ zr^fX9VomyC@@M7D#D@7pp1oDP!}_MN`NCwWsX@*1%>w-s%enjMwvd42_hMA5ZR7e3 z!3-kKCaK_h00u6K6)8>hxn03$kxF?jUYOqX=Fam{00YfS^Jctbd?BwtJ;QRl$D9>b zH#r8^DoPT|YqeHAxAr&6!w>)|Quh0LQjNkOtlbzS9zwf3KKG&nMb~}7XEA!$I=O{# zEsN{He~pF|Y*R3JuT@xvan_$tIB!jq+H3O9>Np9NtEsm)_R^v2Gz%%GlOdp51C3W` z1>C8+%iPs!wF>q$o2L$Ac1_Bs!l1NN!(r(9;=_4D>ep~e@zfLTy`Z;t>3hy3>Zg}H zan$Dn&pO9QtByZt?oCyPZ>>Ec;3_I^;KomB!k_e>+<}&7Zfg@zhb4LSguUr}o*0c= z_WVg;itCl|(1GynoCz{vk&61MI-3g{1QPB6qP;v4W!uVlTlP(Z(RH>>4UaNWj zs@F#c{%gc*V%2#*tlKkVTbhrapVw?NTwqtjLQb!Jwr@Dvst&iEJS&v{RKMSN-}a|R z!Ua^Ye!;Y#gyge!KLc?Ujy=Yw+0bbo7CFqsUA24V^$JiOvajfJG?relsAS`Rk+RY)06pqB;kNw|M}o7qC@u45s!K4( z-L%S~$Sfpz*4)HD>Ig{ z)3|-vCdQBMKxSQp{E^0#eub>{*=#Jv;(Ic#mC4%oE1`=8n{_GSDyqwHqtNZJ6W3Qc z#v4O0BXQ?ub6IzryB1aTO4d>YTz$5AYuie=0%91Yc?|{{y3gr#r#<^i^>NL|#irQ1 zVrJRQ3~o^8jnoaA8rh4l2yCZN!XLhEm!zi;o_zP6M(*c_9UZL;ONmZ2PS>*S!q+(wRpRj z4yh01Y;v+rk5GBWVKMqi4R0=d79&tGsv#nWxxGd`^~MSZcd>&++SVspp}K4oxr*QuGToYK=QVwKBVLcIdsGAu-dHP~| z=M6`Wf&kyexOuTb4gHYe;vEk1G&jy9gvd)5Utc-(uDRVE>hwt{xyj)6y+C1gm!+j^ z<17q%c(i7HVTrMzZkobTq@eSw+zr)w;-%-1v{m$hMNQkq!321hiD6U;vv$F`O)^>Iw8DO7W@&I{rpxy$AQNbhffkR|RF)0d zhgyb}s@c>i2n;MFRA@nx-63RxSlg~8=R2sd_GV(s2tvag$7!sk!uGG%rYu;N11A~i z@hpBNXir+aTE}B<&y4__-L8VbGTMJN*dJ-l&Dq?NTZr<)5xHirKebzJigBG~&}kTh z>2wg>qOz*_B1IlqpkT_?7mf3Iy!l?~S7^houi*iANsD8d z^iAjB{epz{qP!16=piS=LX+c^!3S($U*XV-3VnK7=m#xIw=xm9azy&gJvLb&gw z%~Ne-i)W$xpf~7|j@CwOxn3`TW5c;sSuS!w#tc2$+I~jDvfj-NS=`65NPqSu;_hJb zr-{C0gXNf=f=$2e26KF#A}X^ar7st56QekBPd|?7Xm7 zY|Bv%I?Qi6`x>3jp22tfi}0kosy^iHi$$BBZ+UV)l|1ocvtC!JCrgZ178hB!8&-&l zj_3SC;|w8Xs{}MkET@uO_G!yPg|7FGb+^w41iSYM!-frgJ1o)f-E*vksxUt*D?2Q) zBK$f1NFZGm&)KN&LE(A-wl)b@-w|+QN<6B{kB^BO_{LKqYAf49ILuWiqWTR70HR{g zudIh(i_eb~rY*=9L}wNp2UpA$LSZY=q{3s>#3u;A=+Ps0Nh|F*m@vA&+K4v6pxj4! z8>yv6)p1SHp4%&jzK4B!M7BLqDkMXxk7G=K%I=nP9ltP+5IhiLg5j*}UJLK=S$6&I z#p%%z603jE6>NXfu4}utquY}S(}fUi6ukBqp1s(U?+qLtR~%(D4czOpRM%#*9it{U zRtQ+G>-mNXS@`@k-PT~aPDN|$^;FkSvhspOw9@yU!iI7_Wb5M)l|}y=0oSW$m~-CE zvb6N6>PH(6?M$5e3nHq5_faQDI|11FkjQcJmn~xwokfe4*>{Sr={ZjpGJk6BWkSa) z$L*G~bZt)=5;W25&An5%53N6(tnJ~zYt%kcOUA)7-3@NYn~`WmSZJ5==_Tr9mq9Goaju4SYbk5#8K<5%;#-IKTY9P5lBW zw?8;7&^)(qG%ydn8T;uYaMCX37X;AjZ2}=VxwOr*JJn6Orz^MmtGT?V?%G@Nr`HKD zTDv`d6!mVZvc_>r-nqdn99p0bqRz%>sRXJMwbD1PmK{oaeJPE^OMyzG*DQS29qQh! z3*?Fc?R0L7yH8#$wEjg8nZF|E>f4_jb_(8KvaKBFrW+2yzyaHvk9K*85}rU)EORZN~kmoCnxP7KE~_K6*h3=GVaZ0A@2`Yko$l-TMHY!n<%|_S9GV_aRPMfGhAIPxndj zQKnebedTz!$dRH~H{P!|o-@Zc-Vqf=m(9&Jnv2UWF79&6w@Mv|;@MoBMs4*y6kxj< z4oAm%c~}(yIyXN(I<(=lh1(?ri|$ZMe7RSvy(Kixd8_HLm#7okU>r+Pt$$kgbqycJ zj8PDOunOa~(c5;rK2;e#S%jlTUv~`O+Wtg4X&P}wsC5I&7G9q)ct?#r!UnWUgv6iN z6-*r2u0V3{4%-Bs&8KwhDGZZckY2$w-N(_-8wq1I6`aE&HB+8Fw<7~v6Q8d|0z(*j z?)RG3S++`pXP#q1Ak(x|=w7aDfBVyG9w1D*tp!9Nqw%fCRv!duuT*ZM^doN5=<3TN zeXYh}lnz3!zRcHBJ#V48BCOjU?GKX5EbFkyEeFXOZh>X4I?XWQ-Le7AViMJdGb40kr{XsE`*Zb_%42`3CfX)C z3}x%_!r^67kXol%L1&laLLA2c^*&K0Bc9ZE4g9YXb@^a&$3yI>?=7Z*C3mTP28Yiy zK215qEGMxk0A~AFjaPnhl=Z#Zp&3FTWAchCcgBi2PH0Yz?M%2do=}5)hp=vrT*w{M z@H(?2`{?R7@z2S7x2hA*-1}AxxO$-6Xm7qp-h&KxUN3|fu1@M(Zws^wX^RzoFW<}$ z7E7#KC8F8m)k6t)fcDxgjuL%3+uHjTEWS|MBZR6hb=v*wv;~-s1PxQBz9c!V;Au_% zqw}44%Vo=J^|3^T4>S^YT*R-Ma2cpk&fI+a^2cN6my*q}`}I#u?blZ0R+*!DYuv5D z+2NR3+<}#y^NvvO-b=49)z05}qTfnqLx`h;)Jz&?2U*m1V)Czp` zPx+N7j{7**!x|oQ8|`fTB#T%25^F_D*SB~p!fJb{l`ZVz}&K9ubPdPg}@*FUT{0{fZ!C`XJ;+iEMuOL+2p21JK+^#L6GqBCZ zPPodZT(dtBaVk;cuo^I~Z@$iJpX#1^m3)5V-Z^mFNooS&llYy#0$PO;2`|}bObG;x zp1lqO5i&Zg#FqvzB#!M&>k*yP9;ae1ypYKK>Vt?uV3?c-3FD>vk{H7B`93IK^|0FZ zS=iHam(0}S9Y1(7-lgy(MUH%BaOu3spRP6m`)aot*0X_gE{M?@2Y6J*zFgbi!Yv8yPr+@ z4w=s$Vw@|D3n|HyU|(z(H81>f=l$mJ>bQW8w>t3DQ|Mf6wZDr~cO6ULW3G&@*5=2D za%(0SIoD(Rs%s?*`G*|`B5*D#^;74u-4?~k#q8t{)p&T0iqrcV{nJ`Y9r4u=kd=5? zHk`S2D6F$2KCdeuzg%@O7AL)fE=~#DnegCP;?jvi+pe7Qa~(H0+|4 z+#ybQXC1cpwL`&VQYmx96BGt)i61OgPZ{Brn>U(*l$lydB4J?!(~`&NOcBWHEKG~z zg;-ZjS!7f@4wctcScgv>H1m2WjWSZJZVA55iW{n`S-o-7CFx5)u{uk{sYkR8DaUJ~ zf)eGGZU-E>C@cQqtzYJfKIxQQM|E}6lvTyg8!(hc)<%9Biwm>p&2v*XKh<|zDO>P~ zAld4Twh^*t_;hhYNd92C!*cMv!DTCw!*1WDp+1mYys7niAur-SewKf@=<1g3XmP3< zBjfsXvyrihbZmt4*GRG{)f9E;g}3vd@%fRT(#1)_a@mV{W6@82)+1WFQZ-?wnY{`f z0A9fu$KKiJb@_V>j>W{p(t}f)8rJOBhff8JM4k3uze})KJ-Oj*sGd+O0`;5`jZ~{V zYmZkM`7U^OCZ}Y0xj#s|BPf^5!*PJDd^w0EyreBm*5ivQ#-oy>Ek>vIX%Q|wu^StD z_rY0#J;drn(+;-;}gJmP4Edk8~Vc z6svZM;`OfL&U^6p$7A3mL`@9XU-y`VRf^RtR?j;|VX%Fy$msCB#$Wa6#xMpBubFG& z1yw_nC1Jti)}u-4WeOEWejabDz|CH8*37Y+m@wKY3|9>)-RJb9yNF`)d|T#m8>o6gp`EA^n(ddSy_G*?@ z6}@n(YxWaNaQ^3=V!BMm>ji3jr%#mx5*kc=?oQ+n9Ml4JRX?-Fx^*%-MGoQDynruDGs7)DgB(h#rw>uHpna>J349YNz2?cd4A z<9IE^Cl8*$N4#-4ij(3W(MXnWU(>Of|ozR<-z&)#O5)=KYDyl_OmvjrH;#TYGhIPFR<@fKyQ` zeFWW2IlMDe9GI5z$Y?V`m%|nEtrFF#@#Oa zvB#7Agwp$W{BZ0uvYG~`amTLGmv1xT9l*Md2oJ6}`sauigHtC7W)`RRuX8s>ztID< zhP5<@ebQAGW%8ZYob6)=XV$u8tx}fmV<&5q_);6q&Dw`?(FMC}eZ0Db=M^b8Mpai| zQ{*n%Tk8@z@|}d82jz04+XppkK1uxIO3Tz$?W<>T;rhz;c0MFH-u3R+*k|-s`#I@O z9~fmEe7B0trDB-JlX$<8_wbnAJACk2&$Sef*HS4oP+%bLaL8k$FNfc(y;;5~=e#t9 z?d8+f&-%8tCR|ar%lzh{#J~2_klsa1XIzq)s*D{48Y%EplXm^Wka!=W6Nt2qJM<>_ z_y^{M0AT2gQ61&L$4iUNLc_viKise@;Y^px{2s+K7n@JE@NwG|BfoiHytQLT{ae08 zpDbMmE*j3)v{Z9C6dwFOP5O@&pv4Q%x%h-reg6~T<0;PhHW*(1k-(?-I5C73&wzJR zp)2(x6anN;;K;9lge_^L1wQnVp;waF#_2m!B-BZ;Kgcr?e0#n*ogvBeDJ`Sbjr3qh z?Zd(5Z1fVpdcL#eaqr$ir{q;7Pqi1O$IDHrhR-B>ED-ndUju}X4E(-yx-E~AGERxt zYyP^n^Sk4;ypYoiQ&rEN@NvBY{QLkaO3q|a3RTmz9)4J zdC!4M9nfirPUa~n=F>{1@&~<}3u#*4H-0y^KurL(xVkT&vJ~145C81=v2WU5yXh5~ zblltct%tT?YDj z>zi7~W|z^1`6;9OuLc|mxXe_n75zk0fob6S81x%M-QNbBwS3z~Bp3bxZxN*e%#?1? zEAxzB$@a(w&8rv-Zk7a>PdN;{+kT+%zZ8P1p^5~8LYea1H*Pxg>& zGx92p++N$-AkIKwD>RLed)+|@#(m+;-;grHfDbPxQK`V^^tGYicdRAA3IzMty}ID} zA=f8LOWzYuC$cp%N6an4B5rcmF~x{)U;{6)k(oVx7i6)6cXZ`Zk%n*w5ndgo`us1V@%B0? zxb2la0UO7=`t%;3S=e1D>k&j~q+vPrxwtn*e@VI#8ot>BWzBFZk^GLZ>5m-7{na-# ztM7}CEkUJwzt;`qTZP~Cn4vHaeU7RdhA848iJH4v1mx4}eH0-QXi&5koGbdf2mLRq zLZ~F>qxk^3=4LlJW#{^>(dhIxc+e&dw^F7Wpa&Bft)wIg0&-4=qBt`>l? z?K9$ZAAG>Ba{mq>Z-SrDyeu4RP}n8pQtobxxL{T))L9@_k5r0s|CN38L1_lT$eEsW zb1=%gdx(QK9JD!vvv+nt#Epc_X|x4jM}+$6Qi9rwjz>tQfqGh?9{4B(H5#n=Hex>E z#_0%}({sv)3xAaO;DtWTAJ?>&^h!p+xO4~9foeG~2?WNYbe)Vgfi8GK3XFXdiOUIe z6i|(a_rD1ti&;|2bGBcyCJ}kCPp-y6^|tPXJ{v)aNeGEZB9|*c41NWrHOZ@a7GFl@ zCR~7)_6J-F4_X-L=>wo|6%e*+wVUs-eor3q3S2}Z%b-wh+qrL zR6k#fTwM9yv$xVTQTb)55=)Io%txccP7i@jgh26mY1$io6BD3^idDYcKz4T!MY)tF z(-Uk^^>mmWSM9E}G&Hm_$XBMKs!DCRq!i%(Bl|b%JLU)ihc&;3{sj|pkeH8*BxEr` zavy#Ktnd51v*0&a!M)V_O{k8Xk^G*%U1^(v?NxPtn}eTI{Y-jnizGOMzOt)Ao6 zZ`69qQFiZeMQIl673l4R>kkTd?=RMcw2ci5_A`O*-2JXmM+guj93Z^_pwS;8mb-(` zhko~jfuNr##M885^S0hvdB3FJmS}v;$Izz@V0SKIViBUB0x;nyNpr$TO4K@Dt$Ph(;sGOT5smQ#3zI{ps}H2n#Y+$(gP7 z9T;%wU#uBkNVfeVzQZ@KJE~a*wf}H-a3fl1OYK(*^Nj1Pe1jwWA!~fnML~YP9cz5! zXN;#?gdcw&aa={?0)TumjJQ(QIZ0_mJzM2&%{??L%B`05^W6QSKPNAh!~AIP^V?N# z-#pW#*X8>qq5CB&`9s4$`9J&^2-06YBZ0MJ}ELWYV?yCgL_1$Rt2f3Ui?5SddPH3hQloEh__aA>F zLn=f7<4)%o?Ow}AePgF*;nE+aK|xnl!Lk>}H@R&ItK$4IqE~%M=P8=-<SSzqFRr z!$)(-)&4Z$*q~QW@|NWu1CQZx8aFns8U1WfmIsPwl-m zr#k%I5zLE@U?nz$rT4C7R5vK+=)*2MW$meE9XP?b@s=Pjfd4_0l6W6wlfa`V-JIB@ zX3uo)TfsMIs_h?J<=Y*j!97ljN!$9}5$6N8 zSfmmukca;x6##yWsY%%vliJhRRG(>okfN!e0IyEP9xnJwU!D)(PK!ANkmY^Bzfedy zDl?uDlZ>Rh`WWAmU>iB z>Kig0VFA~0-snXsC@44xuY$nAhR25zLibBA&q~7K5myIdV?Dm&|8gJoeaU1ps<`Ml z34d08C{9B?^X9;^Th2Ib{`hAX zwxph^q08U5z`@@*O}&b`Epn*ZgHbJQQOgdI)Ec*U(0LAyRCSyZ^O^3g?O_#Y;^-vC zl6JWzCFUQ&A9|P+JIrU_MHrVWC??y+y4!|A+op9s81yn1I#<1;wR2xjDIas z29uEMwQiQfDDX9oo|-6}Vv%ahOEci0KR)SFd!A{&e$p#-GF`6;`irYyzaM5Lcn^LF zi-%wRt^pPX_Vso5tcPYZG2N7sYtwC{sAaA2w|HbO`bG383c%8XTod0vEs*dfD2Ft0 zx)S;xVw0lbkgP~P`hzrBl=-eleWv8t4~JCvs=A1)Se9xJN354njqsF(WFO^}YhV2# z9>|btow6p*oVnJp-rjLCu*?`7arazduy^T`(`6H z+Csl^*dcD$X4-RH+i&cCFarOKphVxC2)Q1ZEzzP`N-IOhc>+1m_RnId^O8K!23nn*xmPXJ-FY`$kDy_iby8CBO3+qss(8T1e_XJ~ptsmq&)b8TT$gw8%j!p1AWf zgyxt0wY6&HB}V#{JdA@skx0w?ccUAqt%v4;oFpsuC0p3#9tmiMJU*2xN0oUCDMXSg zs@fJ>FtrcjCr2Ab5XZy#y(f(>Ec|Ph+QR~)jEk=O(?lHX9=NuiHq&|NTa@4Hdld`Z zbsgmoA}mw=j{sC)9@^(yjwH<`1+W4wwq=+?1g2fx64^_G)k2L!x@E~mfR6aC9~n|2 zwq*&*kvt4N;=Uu@#{B$T2gO@!&iVBZO+j{1ZL`E<%aV~T5(&_N`yb5!DnypXQwO*IqOMq3MtTheG_q{RaDcI-T z0{r0MJ8)^HKQ>1U?K>9PolGi@jB^P4GGBWY?W+o9 z-+N9^;@;0nt8aCU#$joS4}$Z=NIw#sBG=KNPPCF(Hn0h$@KZjWlGp0GiIUHokl_=L zG>M>hemJt_+hHF&8D(yMFfz`N5rYVh``svALc^J}K>I+zvvZh>!Ob5=PXRpi}GjGQZ+&VGo3*;4Ti93T795`Nx(+HEpFCuHdc z6Dd=Y2l^2(T3CAha*e!#(I_;|d}>P_vsdeh9agC;wnW&|Y)3j=yp-AEj$=1^J^PV|yH zj&y(G=f|K#UacE!>ou<}9GiH)zj|{A<oJ@Wy&^NYmXGKeg3iSHlnkUSYOpqXEuF8@U7+w`7 z{!xia>U?657_IZ;7Ka%P*9XK_c^li8^Z})j!9&3x_YIOknFsbmhTn_$_STHImfJy8 z1NKWV6G8u=h^KN$PUD;9iDs#G+Ip3L8@QX;j^f7p@nQ;xkc!d({{k+D4Lpu-=x23G zi*SpVFoAqIL^Fzj{-9DMj;5DCT4mDho7!Etb90(qD|~>b2&pZ@NmjDAGOQ#?mhf^9F~G+>tTWF#^#YFmH^hOMwr3BrouH^ZIv7>;++T@e zP4b&E>{BJx-9OE265laB0BJQ25xyTYilG=|yGiS-A#=zN+{!1rpM5t>yqXmho zy35vh3jMV$t`%GhboOh-wmBd2k?-hbEqBp$q~*Fi(w`wYb_czZ67p8Gksr)e)09Ms zcDITl!R1pmu&h*=JLlXtT|#&$XAlVbH-E#*5@5d;V+jyQ{BJ`i)pxy;|8#!4bT&Y! zhhI-3g|r31>?k_Qa#00ofA^B11k+6XMCCjGZ+kSaGz9qf(4^A*r5u0NeTV(3Lm0(O z1UUgD%{x{85C5^~z+(LZv;59GkBJluf+ye^tif;6GiU@U5=0W=U#C{ejm;ID*m? zUIWFpnkDrurA>%TtzE1i4&Z~JVORuGpAi&lfTkji{Bp9tD{Hn8GUufGYqSY|5A-~$6-524oY!|{(^IrBZf^+~u-2(n=$gl7f5Co}47XLMnG^^KTA~IvR zv_Cr=cXd29ltt{9juFH?+xW zX9H_F+U)-mDL~gceomKOI{rwvxeDRlI$aF9Ah_g31IP$o_^09CB{%=8_ej3Qf^fOW z`JY~3DTwBsG1Xy#U~Q3t^-k0lq${Kg&NIsXd~*e*1IR07)n(5Z@I#s^piDIPu5kU` zqX`?3qv0>}^xuatNB)mB1}TdFxila+wmsy{|0l}Dm$pXCb@HMVGz$SH=eHN1bo|%A z8sL^|Dpt=Y@H08IOf|ywmSZvf-C;Xqk^Kda>5-HhoNHljO zNi>m&#MYXP79vlABrimS1LVZB3pCG&Wd(?wZn8;r~5L(4q$L z&zJFs$G@}0Y-s@FBFr9g-l8oi)TXse0=Y*q6p4um_e_7w}RVT5- z|EeqvqSxudmZ#QbHY|7nr8iHDCW!TPRBbk63Kbj`pVI$7(2|O#r&%MBps|~~QIJC* zbJIK`f)#ows7&X$I+E&hv}$dDKDDrpr2|HpQ@{*@X^282o*R}B7v`TzIV zh`;i{&S;QNpZ>2AqckuDgE(%Hul-3v{GsPk5Jck;&P3>!l$gK1)+)LrVS%e%oQ*1zPJ&DW9=V)<*M&xg7&|sVgG2#Z`mHe z&SM^rd~shs=?%E)FAYePu)O=H z&(6Qgb@|tmKU*1LIx6nx{TTK35fjLRfc_+7<8=1a6Pw*xG@B6yDSE`X)q66cPDLM1&Pi9A(M`)PoqVy zfiKHWUN0g$uKs6*Lh`xpkx@VLo8DJP|0a$>_9CG|67&fcX#N|IV%bmJ$Mx zJ{NOyv`NDE+U54VID)?Vj=9T6kp+5$k4RC5(c+zV>9@O)*4F!8`RUEY~r!_v5(#m8ZlCm;);|?1`s2CQj@_Kt{ zK0p>rbF8!{c^&Y}4;zz==GT=ZXDmd@{C;)F6Xclq(N~CvsO;t+{6#Om^j$D$3WB$sb-_$OMYBVv|! zs-Qda0L<8_?_JSVu#~3=f5Y?MQ*k7XDRhnKWm)|yzZ)GOg`y<@c&&4(sa+dfpc;ZUB)Z3tpDHs^_x>82woII6zcI7cgqvMkRt%5ItZ_z+@(667 zf1Q3tfrVf(If(nuwqi*IB92&liFdEiu9K|1*eVjU%IDH|NlP0F8*6wvgpUxTBrin1 zePc~XLFF!PgtCDfB|f5w*<4a+78P<)`w2iOQfkCN{I}H2NgB+QR-_e|x7s)?Q+QN! z$;o|+T%s`&5|8f|U0b8su6TiEE}DukhekIa2pJS8K5xv!=opwSJ9JfR=Jv4p82;bZ>;ZY`;=eS-_cvJj}7ouT_f4q?C@AG4XC-!m* zUG1+8)ytRQ!K5y$wquyA&ngT?y1JYe?C7=`yk7gb%8?=EZkl1H^wjP`+ zKUDJjNaBM&rUz5OI{l8`Q)pokKW+2PNP;7{?+KU~ftS zDQK9{aKtHb5oZKq^iL&!3mn2B(JBu6*EM=4x`!1O5e|ttq|LzD9!?gG83)Z0ch5*T zOvmXO$d8~N&5L1QCPNFwtp?_TBNRr6IkNI|!z1LLjHNB9T^a|FdEaz5`9%F=me(@L zxEf$(Uwm0`yX$iWB?KXr6JMy2UY|drwZog~_gsH1#no}lKReA~M|V#cMf`Ou)#rwi z)@SAs@>8WfHj@SGqxuC~qrDLhN`A8Mt1Z1*!R=QcbvY?oRBS7Rxg$_F(B8I*2iOWc zUW>N~%45wnyb(q?_@7Rs5>#N;1l(W#(}a}sPdGyeT65iZceO93oe=u81W8L-^jLQ^ z$xN_ynocgybLCL$WHy^QN$|t|450(V`rQ;G1D3fTT?b@E_pnI$*;ymO@mYZIbu<0n zX_b@&q$W#<0rN|!%s}w3FniGuX;fNTHAcXu3qP?KQ)r);2-ew#Ojie54T_y}n&q*q zC)^0%Bj$RIaYM)RsM{o|$!8eyg#O>Tu6vZkm5@A&R2m^>f9;3sc3yeqbFz=GWbzBl z5kyNg1p&WTNS~;W5QtvP<7m6TY;N#flwDG;s2Zyh9j*)PhWN0p*X^#y{WGgcx>KLv+*h7j0xROPWOqE%Lf;5jRWeJ@^_EgrEO$o+$MY zx@OV))CMVQmqurU9=}iwHT*8;ywIrnvsL25P73$M6TNGrctTjO2xa?3Q8B>DoO^UX zB^Cy{g2WXs-`lUzaa3r2@ReKz2TEJkq{Il+?zvjj?BD&%1HoB%-yNYZ|At7wcS{u& zyoR%-dr()aSK4Ls!Lhw31oni2se5o>^?;6WN0&!T$ttcJyey@Jq%u-5E0hPK$)Ai> zwaH`-m>uKF0gT%K~=^7hRo1EjC3kRtXCG$LR{q&w@QaqLOnyL*=6M<`;-cHm-4 zAPNeG0{DKPbRQwS+3EUZ6Qtx^a;zm5@rI+};r3ZhksFn6-{0M~S}1!V)v8_5;^2<; zk6ojr0(y1x+Z%k8hlo0XTaJpz=DF{Lfbx%|-pl%Zuzxvp0408}80z6gGn?Il&tWc# zVM$HTY1bEX(Dl)2pqe;(6fVAL8EGx5&=xCQK&ut>DWcO9Gc+|;)Oy|b)ksUa*iW@E97QkkO;)m@6X}KrI2XQ20sw)TKILzoWxdfSSjFR23^HRb+pYa3m1w9C-fma)1uX^HTJs)Kjt0z8%*8mWCT8k(grr>>MwRoi@YLIac#S&MhA}`mW^`M=a%|9er?Z)8_TaB-QTo; z#-D+!kM+8?F?`J!hS>aEnul1VTxqOR5p=huVE+fr3DGJ#o%Jib9viA&m-uaZ#x((rpwhbqO|0}I)K z`0o0X6>{6-5P>^?ASe4(N z>feeD$d{oH_6K6$qQp}WK7Da!)eh$?HP+^9(7wl4oMhPEHe%eS?2VxX<>WsMb3MTg zbSVSupkd8@-F{Ku9!YGn5PM?rYo^-Jsok8~QAUe#uw2SLm~Is7{6Ndgt(+1%xki1m z9dg>s@{ru3SJC3WlA`r2?ZNK7Pif+iHQ#5{W(EpSaP7P`L8RzlHUuPED-I{z zN{j1(>3wBAl0bKHR+%mjAKh20+SXhC!a@|EQLm{EAGqFBKBg72Hb&UM`?>o|VS!9Y zj8;h3L2Gx6^0QE?FN7g#QuCeJ*$N?RF|APgsAp+~&(+eU)$gdU)_^u)U>}23b{mIQgTn4rt{v+ zX?`4=JxkVCZrVd|e^Yg?hVgE3=D_UP$tn|XC%727g)#*P$XKOxgU5$62}HIFVy+8t zzHX!QkId0Ef)Hn&w&9<)9hLF6--9P{tY5DOLTw_AAlfCd5KtQq<3B(kNd$xE=K3Z% za+G$+I$U#A7gCSA;h;N~~|;F@y&gI?8;SAT8u56|##k zhQv9zQ+Qt>S;b`_qRFPZM>9nS5s$$&jtZ$mg7`aGQDT_7#l}& zqKZc#7#zd!`>s*qgNntg&Hu^0{3|4+EWx11lBCwta@87M?&v?Y03H=H7Mc~NPO04l z+3#+RJB2nJkTH^cQG>)t_9fk4{8FrTJjwaqwyTkY&(%JA;@E|3c>}}6@O0rt%|e5! z_9L6H^V0!^p3G6*Sc+8MItPKgX^MWb+=4>)-V|Q->6)?;_~s-LZq<2Jd9lGW^~QRk zg?F}97qtW(9qbJZIm!OH39R-Xuu+IIcoz!!JKfYVz?}9}yrxfTI)9Rt0T8WG65O3h z51n|1NWuOo_@tE@Onl)Z(ZLo$q8nuuHyo3W`O3~m&dI)GV?J=QLJ1_PS;YqZQfoxZTe}9 zPj|5rEn|4@lUvuSQ8eGJXOkC8G`|P0>Rt%J)2{L%@f!Q)*;bbV3H{Zh_+~*U9(C;W zT)wI&*((-6m0(I|&aY0DRJ2#3!XzHwjRe;x{2|t<12T-j`;ZYxF!{e`B@NOMmnMcR z<&58-?LztXx+8GZ30mDX;d@%0b?zTJ&Ycf=b;xP}0ubxlaR_=3xEN^c*)b~srvMGZ z(3lPnLTVO*GOZo9GL$;>kJJQ?9dzNAm`yzK6c+&KQ!b`A?1I#?az}r&E`bnFeb_M4 zGC~}8r@ktOlS=2%UZ6io^uaiQd+faMsQA{zLC_Bd&3zv9ozeO5{`;Yj$BuQ? z`saMTdeWIkuy05ACm%qo%{68}?#_O|DR3@VHet)g%U$W-w%O7q%gYwi=f%MB-ki9@ z>p8E|OVZQpx8*teLLk10V*WO>S(1b2>20OAQb9ixwc*D&4z7E93O89qZoWEp90RzJ z@h(2ql=$GJ^D6b1L!N1ON6QUU zV?mwMqgjDz?npMz?l(Qw>@J=ca>P-S@;^y1>28d&SdV1w+uSNCZx0Z!H9d=}XP5H0P|=17 z^XGa`Z456GlyBR%uYI+TE_C(3$vXi-v)=h7<4gD6MJ(E99rhd;QRW_U2j+)&W#P7rHT;pV(xNP-?G#I zF#?(6^=FS8gAjoU#@~t2e|HxmtxEq~e_UvlGy`w1IL*;F7$^M8t z_Q#83zZ+F+4exuF&ejJMY(+Ecw#rw(Vws*#8WyUat~+xMtkq%!*@!kjvXIP5m5+>h z-A(gixGg!taH5yj4F6+n`24`LNM}e%n$w3moD;}lHHORi$rt*Wmq&IVz^1`Nv}$*|^~5&}hfU!IARMeB(SF>+2DaFa;c_ zO@&o@s@k{aF~>0aYj+1$27pr<)2I8+rmyjrT3tg4Giy(9z{SBt%Q<9Jd%?G9ij%1F zi~Huf;4(j~U^7(Yw#;e7&#l7kw{?MTC*qvTP{f@-$OZ9vF*Or!I%GBItw|@QeaXZf z%RW0{SWO^DlI!~#VSqY1;l6a6?@d-!crHQx)j-kB(Pvx1VT9&IXe~&8g#sqZNi+cv znU^<+t0g(8o8DhovtdJr*ff*9u8@ldP6Am;uGHjX70>sSG0(Z{Zet1{daG%qp zC>0Pt#v#39nyd`rwa(L*ZFU;hoed7Xx3Q9NJTo*~v+!kbJ(62y0iYRE!C0;2xPZSL zFq~S7$aMW52Z3I9{>f09_FQHt*Am+m4mNYY9`1Fta_>Fsz!=rsbl!W^KW=3?oq8=O zA{ASRcah3UK+H#ak(9#p#wFx$^KthAfc>3#f2=raBM8aqUbP)-PQY&zVVl~B!`Qh6Q(4k{3Gk2#G_uKh4J<4)?t#IGdrZI6-#{FFUbS z4}r;uqFJ>zGfsh{Z-z-7r*JBDDpO$q|NoeK>#(f0u5VNU0VM@d>5z~{x?3p$gKnf- zTACXWL=mJx8Y$@z=~4vg=B7isyX%_^*n6{|=l!npp7YoF#|vStx#k>W%rQs)<|1EK zU4Tpfp_|uuHm2;OFCq^ul>%Fy<=At6BrkEWU0da=)@1e}VCUY9Z(m*atQkbtFd#7E z7|1)(ini-He3nIAas*m_hI7CCkpd}9vYUKy)c^CTS1fFzT9&P<{YuTe1oK8WKiBZ$ z%c1hh_d})!ueO|{RbRxiCwYHY9o)PC`!$pr2U!rGF4cFBj9HQ$%lMrR(h}buwZC`` zjzYqxO>1;1-$uyGYs`+e@YScMb>nFcYcxX`;ex{~<|$nL6~#FrUX=t3O3!9utF_Y4 zxQ1Pqw%WAe(sI5B40OQh@W$ZsbxSV@a_H0<^ERXG>sr5QuU9d)Pc2V!Sj$FO$F-M( zr#VX=yW%@H+^qaz(TLW#FZ)S5QE|)KBrmR~*%QQ3+AvkdfVT@acgh*wS_Zei(@}af zj*lT~U1Xy{u%rOGscP^Hn$zOGw$Jd;?WUD#=VnR;pULha84wV%-`{qTH%{_^OXH8G zk66{nYDYcbJ$h@&D`*!>d3f0?@*lB_|Jb?0=r`ESpB1{LD<~*Qz2~N+XOq39HcO@X zyEYrGdbIrcti?D3-|lKSv0`}P7wNOyj5C)tt*_ZR{<<9;r@f$!lNxKAv}@lBoeI!7 zum?c7ag5pL?CA`%^{D-R8LEyn+_r76X{D9W>tNwLb=Gi?pX(PQUgo5?P~7)ok%`(8 z!EvE)LuIj^H5RSJn)>poKMyu}^rUC@Xe?|mpjo-R6XNX zRc84w_uWqX{FEhJ%`1r{JIS=1-#b%~i305Qi@*S=*f@6T(s0T%4)2w8>lRdeG5t+W zV0yJ$EL6jH_TNI;MD`~sE&txzxu$ht#y4BDJKb4vMh=KMANre$Z&XYY7&|-jAz@r# zsiYYEUU^i+%4CFnXq++5*4d3~XfS#z4Fkpi{Nx2?9qPEv15h$9z_jN2<)iDS+sP(w zlI2Ixh|*E_P6+gu>C1MK^#=cTN3GWaI{cruPi!_A%H122a16EHI2p$C9~Ptwj*r$f zti8ZglbPDyhKw3GamlEr6F{g|FS#Sr@q@0X!G!yd&=JDDa{f91Bgiqp96~r-4KM)p zl**P8=)>|nvJwmuC3M5#*%&bA=HM4J-YyF7zPSJJ`}EyU$e1e6V@j1|YKyO5Y8YHE zUjOQ?x?aN!6j%Emi8itVSH+Vft{yJ)k!Tqq*n5+gd%JAaBR*9KEOVVW1~QRweZ$`N zq8#vW=(dU8ev!mE;-3h^;Co9)J^{J`uZvwcPcX{67p1Ctry}L5rsb^yf4))nCoTLd zd;^NSd~n(CU%*xxH_7B_^YIgayH=MJ025tV@}ft!3<({nwvj8wjDz}j)t~!r8LoaG z-7!HP|GGUM*Q2rOQc--gO**2)5H}p9-7`?uNItc?_-9O644HuQwFS7H;Y_Rex$ky1 zi^b5%+V_YOLoUZ^Lxau<$Q@y}a&kp1ZcHfKFmVNN)owD@-^wM%;zu=rDbRQZIUyU~ zjwt*IOt|aqv4*S}E~(4#F*d%pONkJ+Wnc>g=w;=;v@i^}(qO*fG^;mqU&F+_vzB|f zp)%CI8J)`HwGXW4+<$Y}v1_%qK5pFu?RLe}tVb(z8fAU!DThK#Lkxa9!&769JF|8?JClLH zgy43|isc=t%tkvK)w-M8WVdPt$a55~YIE>1es{!rNQtLU-sM=ehUI}a$ysmF@sAI1 z%TK48^k2F-3ezYx<(z)&^%o~fkCmlzPh_Ju5FRX^&9Qx#{-DwE@%VyHTclRZHMv=9 z>Y9sUk;g2<-&du>H#`=W-D$%T>t-ZYKV=1t>8g!!blh!TrrKe9J|E>gxA!X~K~E4- zQh~Q;_AQ97o!1JYgV_Fk%nJ#kEC7*C%2n6T{|Ypt?xXtPu)j$>L**%OE1@m`;W=Vk zKsFF($3Ku*E1uRqt-`26wj&w@>CG*rN`FBc86mU~_- zO{d))rlcQzDKWnOSl7MyDR^KynnArl*X8rbi6J34ZmCM*D|1BD;TBSn-J8yAIWl|S zF^oR2F!d!K#XYi#9C2?}>N$1YtC+PJ=ZnY3wmaLiqK{zmReeYSG$9YuSwhv(wV*HM zL)`94qY+f<-)HFdw5-?ecz>+Zc`3R^N(q4B$jOsXBvF$nuj8PSBZ;ov_kN^9$kJ9d zT*@`#5=tdgn9{cw8}8`nz>&o`BzV^JQ%{}Gc5ZB(m^LfUvAt@0El2+(cQKQJfW52M ze{gr>2lD0w-|8Z6wHGo$edpSBkCm!@12LyvTSwvP?Xkvbf3w}syi6leGf`(*ay%4s zSYNBW#P{7_)qke~jVL>F%cw|D`r|(1?nSndtOU1wOXaO%RRN3nuqx^4keXtL!6i7dBU5;b1YWaeU}{LHK_oFs4-u0Z?GOCw z`@udz9Jo!p=mMDSAP%@I?5t-qZ5lx7Iy^ zC#(D&@2@9;LTh_XQ$EM)2xhhjql)r_4#M5vzgMYpJ+jtXNf%qzv@B*H-PHz}_q}M6 z#3aHvzbAtZQu6jF;=6ch&80$R^px|}_b`O$rVjCB622RRyvmAq5!l;eBPeUnfzMGr zXr;I6Ev?1fM+5CnZ#L)4X8=Q0ESvE!D{!D~1mhM5{ zYa2Gs03n0}~G41(4H+muany z#UQ^LJKm8CV)py9@AqL(JvkF3--T<62Cyy)i%y6-5icbE6@=yZpQS(8@AzO3W*QCl zTct=&4psd~Y+NEkUv(>cAy4XI0Z1nS7MJ&<${pLty8`z}UJF>~9WA_^v~r82_lS8# z!pUN`q&$VyWd9{7D&BAqK#O{GI14JSWeFW_*C;(>8D4e>Mj5l9dwH*n{#MjVy6!t- zluRp5KR)9`3#OqkDj}ElDt_<0f_aQ}BlmKNP1{i!VeUOQBZol#-K06z8`VPxD?Z*f zznb21G;gDTVgm>7GO65Ck1B_}1shCod(01OO;bWOsi{2DxhB3MQ(wdY_XacJnpJw^ z{5{Fc*qwZ%RD@A&@4E!pk1U;6UB=DndLql{>GnUfVbmO-lvf2xQz#7pDbkI=*DHhy zPa>lAi7rIQ2NXzGU#Qk=oU&Krxyif`35m=O`f`ZM33@@T~VQGr)GeUYXGh$M&Gt`-&xJu~#*4c|pf z!wqga7t@CN?zoNjf?WGEZTLp^SUl~azN_hbNq5V)c9zeX2328uk1gP`*?SpM9^s$kcQR;TpWL}G!@!5{=n-7)E8Dsac0HKm_iGR)tEZ9{3 zppH|I;LD||$`u{l{ybz$*;jxhW+_miM`Aj>J)~YkuPNR9l9Im4d5o7+Xm!7$52Q$y zVyqitegj(t$7y$-?;RHz6Jo1yKZYTy$pGz;B` z`Aa;D^WEY9;F*d7#Szv$X_G-~iS!~+1ZSd^J8cM;i52PWDTPW|xL%4#fQSq%0~(Eh zgGMy59SpSiR1)#h_{s$zuaDz%zA`6(R&wWVWYw&QJ zO%BkezDc|j1Be~jdoZo!cWqy>GeFsdH}6Hi6&TQ;0Sp*y6jXi1N5$4g$l|n!Y?iJt zNe7S@DMpQ6`-?19{^!+kLXYjBN=eiTFid`EHyOfhaK!`mBQ=7{YQj^f#_Eiy>#~6K zJY0qISm)PaPO(F=eB^h3);ovzG!O&zDdwSgEcRo-w&(S;3aGtMEeY{;9-{Lo7fc)~ zCjMO{F@B|{=^Zn8c!Ptqsgn>iov?fexDL%l4!rkTYx$!v1N8A13APuD!PWy0KZ?I5 zcP08Li~~3&ncNf*ngqxl>Yqpmk^2sKPyBYwOY&zD;1zqM>DL!q6-O0}OwmE&c10S= zsv)|j*e)Pnbv?DN4&tfo9 z6_-JS=|McbElg}ISXfGb=BfWx3 zZDwBzqg)X7T^x9CV9?g^V(9Z&HLvcgh3-6< z`ZBeB-VsSg2}9I0lzQ)rR5p^WKp+}}Ty zrO|n#5$cE9v1VAv&0k-6P; zT$0*$pC4@APZ{D(ff*k{Y-Jo__vO7RZOZ$-L<{Ko18HNPb1_yH}E56bQXNXW33Nk8Ng-< zF`&l3#84o=RatGH!(U;YdM7;c!+;5lnhDHOm z`$iVJh;D6`c_Etg+M#zB&{9nfouvxyJxMQ$y#a|98QFCg>0F|WdAf=g6sZsK%2Lwr z+Z5YspBL9s>g#9-ipY!pCL=R-5G8vBrbO{X=H~@H{>grw|D*yUQZV~j-k}E=b_Ylj zwG;KAa+p2i_LB@757|Z?bFLx1Kd#_S&u}E5bLYBI#yp%+FjP3}q?J+iWEH^H_UE)b%YqrCeTH2*%>PlM*gRlm z!9}Svi|>&d+VH76^ZHasChM!mV2E?o?GBZneelouFN(k!Q=tor`^y!)8Vhex%TUh; zw+nj}xKxW`+$KN(29Bpc*j7wv|0990Gay~di`xx=%Cr?RwpsKBY7eX!btm{6cG4A4 z?z$?n>EN8NlH$R{tvizTi?s|o6UXI`R3-|>{c~@#zH24wqC= z`a%}N{r?AnVWZ*Y5W--JO8pQUvF8t-q} z1lHkSrkX?Hl7V!i*Q~uD3I^H4opn6UPWZ>XgTo4DDFjpvJ+Re;N0D5WSXtN!pU&4h zsgSMo=gdKEA^%UL7S^@)Hy#g#bZIc(R-JHOdMOuod7y7MDMO+ zV(i}{;g%QvO{Q;(DNdFQX@_Q+ssD?101H3DBn}20-vv_dA-oEAEhcirB@KkIhka{IW2j9jx}S@-cOkC2a1K#BY-bw!yaoS5V#3@$aIX@D^1>ZQp# z*M$?0ewh-*f{va{pn6|ZUA&{C3nSNdCwm+|lZJrt0-*5X3l-#Jie0e;p_xhoBrYU> zZnJG@Gh&nL)GB%k|Ceo+IJaG5W?|JA9r}--3 zTfP-qmBD{d;_82e^8xd{@bo+`o)3YVC2?e_#jaWef6MSWf5@c48_7s*CYOAL%;pVl z`t8em-Y&-Z*B*fF19KjGd`oQY@|6tesNL*_a3B87qrd+v1vR_VriY7Mc*@w23s`&6 zCVEA={39>mC#a3O6dWMXFZ1(()Q41V& z*qUIaT|2Yp7k{Y_2XiX@jL8dniT-+4_y^jZyWzi2f4+U8<}mUoBD)pc z%B_$mIz77rFEm~l^2RSaM|T$_I&}wx!>+7R#~v(7sRrTxIm(1*DrA5-AL2s>-e0WI z#ZxIZsZdZFk{y03D;pe7jP}D>@LZMr#pVC8t?b{b8_4#jy3RVh9FuX@>?oxswM7iIG-MoK~dksMem^wPCgNE7v45b8hbnMW3Zk#)% zDiB^|YI;K5Reu{gjC5yG9$n$|EmI)?h_u`@E6;Fq`Wf&&shry*j+TtzHyLb=qA$~qv7Y?E?ax^Rs!&FFV**FEaB34DNK_V)|_JL&n`ABms7 z^hbisQH-y+-~b5$I^?>aQXyW^#I<=qt<{JxU+hePi1B~*EU5Qt@vq_={BNdpML9y6 zO7a{u=#l*P)egbe;CMmxqp7OvL*hJSe&PTEMBtrN3XmBQd}VL=K1e_roXfoD%mp# z!H52;m#_pKlIAzQjN*NE-L46FH^VL@} zz@$XOry%#@UyA?Yzpuf76R)oPrIr^wpUnmjxP)c>_iMl@|H~}hefjc5icz}PySNzN zt2Q@TIT#>$scrCo{GOyVOm=ur(poBdVc^pIl;W{Oz5r1^U+7=XC;lbu;D4-C_wGXm zreH?Cz3A^lP~=h{j<$twa;4AiI?^ksfmdl0vZnrf4lqjG&iuM+F^QCK*&5~{6splC zAqkN(zsZ_rqpzB3fLCUh^!k9tU#44DS#1y(rl7=4`QjI~5bgX!tX(2=Ykc1;itQgh zUH)VUC{fCEF^By8+An5zTe8&Q(YG|Z%R~7GKIFsRGGqNmsQ4dd0-=Q(ESb$)nSpnT0&R)K?tfU}U#n&TQPEoa3&beTw>O+S-bgGfDhl3EigSv7 zYmehNuUOn_@+a_p{H2ohd|qo>0{+cdJZ95OK zU!|b!v^^Xy<`gp7=U#{py$1jy9f*QM^yZ%h>+kuMcUVV*8&C5B%cECF6!CJF0&;FM`d+{4Iqm`kJM{-PRzfCU>8WSH{)wjcGt`4UZw0m<}8I0DN|@6m%;Tu6Md=hq&?R_|q5zdi?PR=t7X zW<@aX-n3W`Zb-QUl#4&>%Wd!^7#oHPO*nQeTR47!iw?mktw{&T)eUv_#9ojA?Mb-X z#m*n^b#jm*O(RcuuEU<_TY|kxXe|kWRivT@{NnUb~fnkE#n1wqpx{`I@ z4h`*>`@A7(6n@Q<0kU0NajXlG0{3=UkRujhncpO=H%;Sa2Dyb7wc~3~+ih`M1E(1} zIf1Ujt`tsOQ+C24tYnlRyF`4R<-gcd^+}#J;JO#5h9=w;`>JK`Ww%Youivp@Tg5}7 zC}X0o`4Pu(^atnGzNFxF57KM`ZO7BmWivT^j}@u}vIl^t`ghmwv64l_wH9>@0QV^P z25Kwy=5m+ge^|l7WFp=bflc^S~7V8E8_6wbmoRz&bm-M=2awZ`0brZpRJuZ7^q znl_uk??QgABQa2aiuuem`jS;&#reC2kbaon_F-N2#!pqjjN*aEx2GoW{$t5^h5lp7 zzZzkaOJG2N`J&s^|I3=$WBHh# z8s9&W}&XzJ@6$#Hlg0~k-i6xn`ya)&9pOGWLF z2!#R2&9N(*q(azGAe50^3-yPxXbB;)nSD~MHonkCq%5g@u8uXBaAekG#g_5JSV>|v zi$K&Si-i~Ik2W}Lk2`J)TzH-!j0i)<_=c#!@os>eQ zY!ZpxeEl%rI!zG+K%tD-QET{dS&TpUMP-n7(w-YhON{oJW+ZC9O!#F9Ih1;E4 z_8jEi`=5E8AxCN-uQMOE?b@~@`2BloEo$rGj6Mp`T7cbjt+AJv>F(b_1sB81&=?PR zGTI=Fk$!e!4xiYcXtj)tyxSV$5fLRsd$(+?i}ljvpnPAOx5yQGM#wG-@(5|9y_@1H z$*uZ-c5M67R$i!@aIL&CHGRLmtn%rNcXFfk10AKd+GR&-O{OH}!nRKubNiVRUk24(D!w;{Vc-?XWmB3 zNbS}W(b>p*el@t?{%S~;B4?o#P(Kwge+uAJ_xy@oC1dXN5G#A1yGbXIo20Q5*-jZD zoLIvae)2kWI-TKZc3qeHxn}jN6+9wqT0V)DP>I;f*C0Zz2d1I-ejK6mMTkMT{)QI@ z!E}lNcP7EN+(_b$YSk4a!#?zYRH3*&^zDu=TfxvD%{E!LA3>THI&V>*CF-h`yK*cq zFJc*2WfE`;Wu#_`ct$PX4Fe-5mJWcF$dD-VP{5<8xFX8{kmB$*j?+9>vwt2#DULvg zlOIL~Oe-{NdQ%49=TQ(Sz#)9=V(|QY;d~Lq)NZOfTKKNz(W0;);fAK7?_Q!Kv%3lruGd(o_I%zlcXjtPfPoQUhu~Qn*ARNYh&6LJP z38`?Fd_lkhq3YDqA-olsHT&$DiL4a;x*@s~*Z?@rhx3=7tUWF&sB|)V+M8cjMCkFU ziI3}pl3{73tWjBM;>*!%Kke)i`_LhQ#*E*QifVrf0=MTD4$ zQ=F=KKJ$Se!0laCId+^y$X z@#p}LLp9Uft|8ri#8>rTEg<6=%7H%e-CW0tXB4^3zbtVo|p@|eQjQAu{jy6FIcZFfwCZC zEA<-K1M}C??paX*KLG#=>iyVJf&Ilqk!Jr) zWSZvo&*2GuAT}?VvG8%Y9S3v}e3hCHyaA9~if(C4*+0N>uC#-|4D-ut>vD_Sd=28( z)KvxR7L{*K1^ri4&gX$~;%If2x<^@>X36~kvh|n!ciCTmPi}cQZ*!|_>^S_4ohc^K zgH&*>$k;J>>*C<^6!yB=itp@T|C{U=^;g=j*CP{T^L4vNxuIOT5pD?O=tgmGEM^B@ zC#M2Ch;dWmcCY~HE<^wgdA>KzwRBY6)&g$sGWk!8i<}EXkO}HC4^Hi zLcBXtgvQ3inQKlx4B zuVV}e*d`j$JZshyMW(gAJm5&5@#^^e*D-zFL&RIrNQ*ku(R`PXv$Whoxvb*I^WF9% zjgJu2$`(d*OC*XjW{BJ%2AEO8%Kk}bYk`Ir2*-y98sKiPfk22LV=SbufCcDtuQL%= zkPJK3H1Ct41v&A3z|-r%Pdn#nG$Y5{EyDy<{P~)=mNvlg`GvGCFi+1nNEqmf7y)a# z;Z69QiOJXRVIUMhwC8hazi{7#TY=$2U`%uJ7K0jtlxEa+^Oa!y5HI%APT^sb&%soC zdqk9aF?iy38lbR}$UqoFe%82Cn4Ta&gM~5KEg3=*fo3S_3RCrNETbow$GP?Wj>Lj0 zFkgjAHuw=hxRjsIf4BsgEZ{l=J8-?EKOcM>s(g5M-Kevcnntux&LRlUG!~sku~LEKf^Il(A&JY z2yk+|3}>%h%!z>}5u~W`Qqq+C(12UMiu10?6TqMN2z-@aByR1mBgn#^Uz14gLq~6E z;~1^&zA5GQoCP?rlFqP`IQs>pn5mPj2b40MWD9e#*Qx(q-y$4$!?z=rQldF1=6er| zfY@w6b>~#^4Zq#y2f+Or`r?zgC3ro1_-y?-~2^jEczmgMc4~u~6OF3!p^F579Mh2ZN=&v9v@a|%h zn;b~!2-E~X&L|7+IwnCB<5_Cs^DfV&OYE_$C4#T}yqNVjl1|d*NI$_9v`G1>m)&|k z!A>KM)$>O94_rBOc!WbKG?7IDzQ=81Nev-&0&k*-IITIF? zio5@bvl$m0&JO^lD=v}uB*^<+hU#BI^)(H+wF|dVAs_*4mE}uEs_>?3kyZN0w`uhr z-4mDEuQt*>5xS&>H8TW1+<&leMumT-4%)+K()(PDsh$POgMsL0W~MBP-vl5Hx)0LH zFPRBeUyIX2X%_?J5Sl>)~>)z*s+rC+C*T;EBvF;u>2CjHss-6E3%#^afIJr;;^Fa{4ea!3g;7~u=eIJcRq2T!JVEzJyTU(I=L=YwLa>MQfz1L``(-`we1|Xtc zAdZXeX4`&Yx`7~h{OG>-yodjHj+RWCgdkpt!WZ2?hV1_p$>j#@@suII3(SyLN%13d z;BKXnt(JLc3T(gv(71<683+uk`e=IROR?xitt>alaV>N7%NBHg_@@s8sucLt&}Lvf z<$BQanTi}=&U{ddWQC0(MehXQC)6fj=Us*ngdc*>h(4c+DhK{|MwX5%QC{6TuyJJM z)Ovn&{T*c2q{KxOPI!t{>7DHB zRp9O(r@F9Xqn~s&jgR&Gw$ONg_jt=$$1P4TkpAx1d)&osuh3C&I6|M|u2w#78!=3u znqR45xHe4Hk*iIf6-2b@g3brjJ1X$yy)Ie1-!TXRB_toUhI3;^26H_2Sq7(rC5;0IMYkSgW_)V}Cj93QiDPJ1HzV-E zIiuP0U<^Z1RKu7lElJ6X+x0Cas}Zvp^h6%orH^D*J+i*GO#F&*l*y`Ggb)0A3HF_9 zJ6e@!E!ctA;eWwgsfdyRbuBAChVPuVZ8^Z546cNwXkIere+=Kkwf4EyP-05Mj843= z?;O*V_pT~ax*J6MMl6F|CAh`Jkxn~Z@<#?zBePccB3mQi9vX9d8p_~i#GpOW$)UBk z81yrBcxcBY_dXI^E;)o8SEnESJT5Yl3!d@A5?}89${Ay4+S%FVZesAbR}^EIxwL(w z3V(U`AUDUR=h$kxw2E~=Y>@Q242VtU_u4hK>43wbO~Gg6wss9y+~;xW)df!BpdkF`cq&@G1|d(S=O?p_PxQ$n^b|oAYgZM`Na- zF4+KueRsH>hY}v|K$++^Ws?4<`%c*+DWgG4_27PMsk+B5)4oL`G^>N0kclr%b8x44hBX3EB1)6h-aHTmjUhOoRn;e z)iCS97T(b!rZ^hvo14bJg{?9@%6?S7hcV}8$0owmAT@{j`uyT+z26tgnJwAHV8;KP^v7sUE|eW3^cif zUBOS|F?J9R5;=i71(=pw0YEW&*-_WSR5P;k&Hm(R#e>%qBZfkS0D4NbnUMe<9NxY$ z7E5%{l0r=)Mlw>Sz(oA~p~Yt<$y81K(Oh(Zw&h!B5@bZ>=`mia4jNNr@8>?kDh~F3 z+*i}Hvj zh#zFRf65v|{+EE;xtR~083=f&(}+b9N9dvcjKe5H`YO9XPu^`%BRntxIEz+mun=ns zg^8-7v1e5lla8A+@hib==tk#7u;3OSu}+=Ff>-#gD*_4LU7-8$K}Q%9PoE6`e41`j zAZeA7<25y5GAT%vF4Q+1Fog?7q)5w31;@wT`s0dZ#|%iOuyARf-$s$CPpsQT zG}-K>`8bnB+M4hXzFtR+i`5JoO>XZ^A@$>MYw3n=crd*lb%l4Cg(KuBO;jlkS!`xS zer}2_?n}Bqs>b#86Rjgv!`iRZ8BTm_c|PUwweks14c0#y#nk-%62N}*r-@9Wf+{9c zVqPHsb@&=06uas4mx+iq`stq#D$B-7yG@oPG*u$HECvdrp;AH@I#9;;BHiy! zTX9J#t*@k$bEtZ{pwh{I{fX`h6R`ZBrHVKmYzlXXbkhzKBcYdQ0omyl-s0S=4reas ztlZBc9TzmUTPyVDqd_OI zcQpgy8_u1NmMX&)luBJMw6&4P9*PfJ`tQx3C;0^WOD@MI?#}D8Ew!Pyxe5s;Aq3-Z`JjHaJPTQt%RK8tJjB?`% zKJaxU(rY9}$8A3aSlo>^#q+<wMkVe^0%UG~|OHseQP^o?~j5 z@(|HcS{l-+drkHTb-AgAv*|=*)Q;G&lzi5$(!A=1WclHx``wEJq#jC1mAO`pbjzGg zl4v8%lObv|ESUE6Jh^k|mRe?f@DnSp@UI^TN*$cm0*Sl7I<3^$S`J1skun;S&0#Wx z1iJ5X#Pf}8;V*MkJ6V+yepVQtL};lF!h>o5eX5B zuGo?_g03iWe>d!RSYZEeJi@xD`~|G1U`XVu0j|rmbwq;wJb8&D5A6@5+$txaM(4(@ z>+EwwiL$b>HMcZN+zhBf5>!ugOU9O$1ZO@H#B~v-2W=BF8GU<*U9}P6kWAslMw!1} zt939}K2tbRJEn$`EaK^Rh#6d@Rve0KvXEOmyMsJ6`$yF2&95J7k(TpaEb^y(cHai- zsTE&PDYt$mPiHryQZ8Pj*0d!ok9a%ao-Mhm$_wx6X9l;yoAD~-#i^^Qk}J2ylUK+D z9xTtPG7dMB9+tL@kFl)LtGZ2pYCKiD{U;*VZTe77fRgz^%S;kivtuMlD4a7d+#_34 zE9=*G4-GH6U5^{rJ-lXOfkUZ;%CtbjzH&Upu$Gr*5jXCfzSHllZ9VBV%$bId9!V8t zJLfuO=MNh!6;L?s`@LngfGgG9+X-K(XwIuhpkyputUzEfEv-sXAyE_5E}xmbLB!5o zljuD%l#@5#jj%YEJ(RQ(K16SzIjLJ_yI_7Wxn4(b!dqhRQkD)EZd74s|1+}9+huUm z&c*l_LV{km+3eVuw>Z7;yzHwvhxIpKTStn-Ry9}~9|%v5!hi$hxJNKwiX0c?ekM?E zQ}ESkZ-n1zKP9P~Iqz%Z{(E{l{e#I9o5nwbn|ju5tc7DA7xvD?+C^-SWd;UMsodnqepC-VWy%&EbaK@<77{HGJ! zPFmJ{>m6LvqTQ8{amHv1-c^Md*|d-G4|n7h-1mnUQ#b3rf8^NBS=xIAkA1Q^=l(Or zL+fSJCPByXiOY2L%$EMot_Q{LLcKc#n@4Si8^pl(K1O&qxz1spzt(x1mXZEmOp2tE z;pgeO864Jkld(v)i#p!O?cc4IMwBg=2iT%s-uPw(RN^Y=zcL#{(xe$v{ao#`G(|G$ zJs4zeolUhia(Za3$D{V*Bz`ejS0dHgTROVD6xOPqKqbSej54+JWbvaB38$Nlx|OR3 z_=9WVL-qdE)=zo{eHIHZFvNHxn+?9)N)=-}6Pf$@>+5ENV_BiGUPShA_-a=miHF*n z9&0)LQPWpt7nK)Q;vUuP>Vm2R!kjBoj^SHy>$v`bquWu# z?Hk9V^>40M@$pG0S+>}@nixmEz!yr)XxQN}u?%Dweo@s?E0@Zew)QBRA6V8SQB+%8 z`aBI^Wl%JP4&TM{Wn?@N7IPC)4`Fu;V@Q8%e|JRmOpK(g@5Wt=80m3_A_F+N+mzf_M<0e9SNn)HdTN5 zO41^TzNkRQxRv>HxP3P+f)6XTX{(2@Ositc3-JZ>PksfPX_fbtZ1l=$%qDOBVFUbj&P-2eA#UN-_ zw5Vu)d?QZOlqMDh=(_YYC-ppZAy7JPN$toKy|Vvo>TS{&V!rRE>jnpkCDnm3-_BHP zUc{?Z)qlBOm2|xLt{^vNp?Jq`CfM6%C6<|(i@2)9nsJy{6k)7|^UWI9SuIJ~#Bj$` zd0RzrZ?($V?Ob^ENY&_V_x0kceBIQPffv)hasnC^l@$iwBh~vZ35~79j=@vD1-691 zI_gSqjf)xk9nUlCs(imzS?s7q+MqR(l*fx`EQY|G?@SFI8A&w6Ov7RNr^irslALF% zCCIc&k^-N7-65gKqXgY*D7pW%@^lJZJUMITV%5uyA3WYYx8(ehN#L9O;T*nn{AUIB z`QZ%zO5Rri^bAvLd<%VTW;3g)w)_r9W@o`RPDf0|B$?rY?83Su+fR1W(`7%6eI$T8 zXCt$0AN^UX;(NM>MrFKy_^yDpyzHncHOsK$wGTlh7sl@Kx0fqie7%R!YF@X7W@*yn zrXJm^M$S%3l2B%h@Hol{_(S|@y{}zjn5%{Po~z#BX0t6*IA)KjN)AS1kV%|ZB~|7KBR)xHl5h&b5(sQ00H~41{N@NXZ7HddCbDRvj0>b(B##iQMFX z@t7>D8b}x{L})u;jp*F#W;yoPaRI(bXa z*mE*TW)IFi%B*e7WD8eBY2%oGre1c0hmv@MB zc)MXoGp}NNDrV)&)Nzl&5iwl$Va%3Vj~>VL=CVAvxlx6C*7l+^x7-7(+Lg&ASzgFOzJ#|cE7mgyX3jCnysOU^cf+I&TOD&|vsT+9F7HhDfZxe_YLTGAh50$Qv5Qd*5(eb{ZP>Xc#*8K7uk{7` zDsK;ETCio^U;ni*=da{~s^8Om3%4ekj(~1s45Ssmb+m`CHE2!Terj^omBkT3vR+Mn zyt5S?{$YC1p5Amhtq=P&?+ah{R3358)6R`AaPX@Zoq3!4FiWe`()Mp^B9z|9r-z2e zTIdbRc@-5At#>gd?w7pQ6gxe%*n#7c8$Mo{k(Rl*Td!E?zX)HW6bUR z3__$!m^|FtJq}E7Mu_LP;V5oyvtsII{ID9(=dZD=pQUEiPcR(MogqoWeiK=I(=ex| zz{FD&5j$yr%)ah=nSTBApqH&G@r;huN-n=^-*^tTnR&SFR{H`Egu$cwhhs5=#|n=& z7TguI#vt(2e93GS7^doZcA&Sji(a;Aa)#Al{7fA2LHP|F_D%x^>f_W}tEl>laey|q zZ=2OpytHKGU1R&?4~QWKKTDNGqJW?sSaZK!h6Y7ZHF(a@RBcLU+elYj&z{K6d?eSy zc}3(uA_Yp4;{>XB4iDE00zK>U7uG(EA#n_^E(u6lE_M&^bdPo8IO+UyjV`h(`Eq=a zpT?*!y0n`clcPrGUTd`0UpiT~zbupL6yd`7=f~#M=0SVT=0ZDTH%CdZ@q)7(>u9Ma zr&+mciDP;r-1P>A;qut*K#BE}2#xOCqHmdzj17cd+CgQ)<>?TBR60fC30*TK?iG*J2>RFLl>WAkiybV?(NB0doX5AgiS!`dg-P>^ zHWoX;FZjrWm^>cYKt=M+xj`zyc`T*3fSJ@Iy3uw1AboX!LM`~ux7nP>h!TfYf6C*t zGKpl;!xWqa`?jZ?;H42hoe6i=%vG5?^76DOM5^qn+s%6F@FdF}2Q{3WdI+!xHQWFA z+2*ZBIbu-G7t)t&h(^XfVNEgFA|Q{~?HP--XylhUee%F~V$G$iRXH-HD;1}DxI_kk z6Z2%|%)7VC4ij;0>A`D$I$<1~T-V(o{v%-gx}|$7$vEiQ`(q;Vl9UC+Q^gr56+?U;n6x zPR>MQ5Gx|Za@7?RPrbl6v|=RBlR+`&Idzlh)^9I&-W=j8BT0{Sox?O)Qd~XRX!vwxCZsY7}plD40`F9EoVkp z(cwLr4zH;|I)w4O+&R;qWgS~ws}Xf^S>qnOCB{e?a;wk(sQgHhl1rV(Fc(NaJqcHL zEQ=^!-|eHiX~(~)q41ePtxhyj?6oCvOymba*|ib7);YmHPKfG1@zi{^_cTlB#lD63 zDDl6xbPl9-Tw}@Eo>)4nNbaT z?c%?&`sCu2=y=cZ^Bv)4C5k+RTV@CmF4~;mk@euF=fQm$_d;uPD*)3UU=8D;TbbDy8K=fqgPtp zS`4|#jKMd`Aza1tRTru1ro~7+$(urr-u|ipzd;O#qQp8`wCdoX602R~EGff?CFFwY z*9O1{EY)p#o42?8iQcFq1D4x|{w)(`Nl-n%y|EOyGiTpJSfS=STDtA6q}jQM*02(* zv@$J36OsD5ba176^^3B=F1Sou%C#p);p}i z)%t3;{OR;Mg^dm~n$AcUcG7k4uF38Rt;KvToKG~0=|Jaw%w*itRa}ub!!`S{Lh=^6 z%v<9dw{pZMM=G;iE2|8ujvWf-HWAD7w0gK4R%iBmvgv-{o=E)0^Ub_{XgiT2KfbZ= zlsu*GyqlV9aQoXRvxAi_1E1~)1u;A7v`g18fa7vYuU@&`-MQgvvsf0G%EA8BdX?*? zzz@2~O5fuX*Zjk!4H90|E$;XhhNqtS z(`yc$!6s~-Yj`_0>$}l!AJ}7#2LYnO^t;8%{sn^C1+T=_|2iQ6f#+eD4YSPMD zW`mZsD9$SD*szHg0ABFMS$fMZk0k|PiFAeRvLeO8*FN{LYTo$&!`WMhMY*+cqnnU) z07dCWRHUR!N)%KC3_=>EbC8CiQP53?Akrl&DM$`5AW9DmEe+BP-7v&i!?54&`=0My z-*ugTxD;ldXRUkP>#lXL-w)LGbuyQZzhw_P?lSIoBNRU$ZV!1!$1hVXT9Zsh-M5FW znh7M$?bN12^K>sXi#h{HiG~$dVhBHrkH(7Z<9F~x^L&iY(dwYg{uJQq`jeF*BthhB34d_;Y zvO#5683vxP)drAz24D}{N`hL63vG2dcX<=hFYN)MLF8Au-F@^T*T(b*Gf@g*tqWaf z10EJ8LDHMw^5Xe6n+&GOP`12M969X{+9;Hn`WW2;MTEQdKFK!(_#+PMD5>w2ov8_HunN{@!NZVh){)FgdfN5#uijgc8-2k%32P zo5p=dpi1I0OJAPjm)VYYU62ZOB5(wbjL}}^xu6Nr^za*|T*dmqa=qSaP7(6PWr=H( z;sWAMnio;mX64|WC0|0F-V%?V1PO;XBQ2Q8Jddv;kx{{N4&xfTE+zWV`IDten&K^G zx64_TzJtFnM80tbEnd3g1M=eu$(#}1^S-w{4{N_`SdG*fnskI-zVI#fWVn2F>ls;{ zhkbsy!?8)eK{h5Z|6bZVYNe5>V}o|>H1_xRA#>OO@SAQE^cs`MatFwJ*nt<2G!%ww zZKEg8GcfVpk9vB7>hGh4)E-V9$cP4rR0X=d4gnz!ewAy@4Uyg%3&ooQ4=Z-KEUEbK z4=J#1fQkSIw4MH}BA^GVmtRvEus;Y&SiBsEB*Qn3I#g5nkGC^cy=72=H)n(o3|Z+TrijYrpeG>4tGWT{;XAOt{j9O_sn#;vwKl{`<49F&4^XecP*Q_ zn9SjTrn0^BDh~~MDzGr=D z0P`x`n#$ik>XRi^``!^U#|<^HfZlCwkqJ+rSRL%#oc<{=s&bvzYe_kxmD=->L?98c z%&nU0<<8qP5%J6MPQ;%4CbM3T<123R4^l0sDWnb9OZbWrdP0Jni0S?Ig!bq`YqAV+ulxO6#(88Zff-kE*;FiygISrAjW9O#(bb9xDQ(|gkAwk7NMi?uZTCZ=r%#xTx-HI; zSKBWYrnA3+ouoM+338UUsPRNYJDOPliYr}p?x*F}{H^kH;Bp1RPsNVR4 z(?hy6rw6!G|KE4(#)IL!$yECZpl0eZ^{69F{731Xih`aMXiwrMLhqK!Rp|KASM;J& zVdRMOF15n(kYKG(PXP25{&~<7XEW=?ZnUz)>!PcNX=IG`R4najDwOPhIFK{Dz2Grt zUZ#YBXEweaYo;(uteR5Z-#;ug2nHry_E*_spVBq>qYtjk)X21YBzf&;!Oq4G#?+lL z4UOy9I^R!w4${p_I9IoSB@8TFPBA2ynJw_v7XThuf26ErWB?Y)Q#V0bT%ZuhD776a zx5K=+D)O;#m76aLFV#a92|dp+A9ldrGnV^uDWHTuPHTHag|fQJBY&jEIebBKG5cdn z&|B@-y>c?m@PN8L=Bl?rviO5EOuu-lc)!1d!(-T2>UM%g;8pVy@gq$FN>OZNq4)oC zLy#|+IiW-+w+|ePw`F<>xqK^W#CFKQky0a0gq#)!ls!BEnFYgGPji7TFaa}wG7 ztM;ek?rY-g$7PtBh@JXhsgt7*rUz3GY7-Dx>2*VO>wbdz~?=sN!Q1O3JFC#~A6kRE~9-=bis z_HCkA_*Fgf%@=ztNLhm}aJ{gQR==BzZYeahURi9*8efjwLAGONWjX)``Rz*Az#5Wj zU>RXv5<7r1iQ?{%JRA1LUB*@mV29ke=T1$kX`X_|j zhK^9iXUsylabw2Ja^KI&yBwAd+J$(IHUqTRd)#OuhH@}cOz$Yw3|EOw^VggWd>M50k;Y?o*nOYWTH zyCSN=Z#l}28YLKuNK;tW7?2x&0)Y4Ei*jBz4M2yvWXNwR8p0y7T4Pd0;;d9g71WKw zY)E&@?Z>%w78uM5#zK#}Tvkpz0$0=O`;QhJk4;w6>P@s)sUbHd%H2sAMh?ekg)Hn` z_D06t+mou}g-Kj90zl{QaOR2)PgCm`UslOV<+r!IYfipEO1HU_Ht9PR0(EQ_Tk-{} zfQcLZswlNjqTsImyjH>pdX0kEpDL&Pp}S7p#5=p5qYrNwfszV`-g(QJ)){IV75v#e`}X~Lirz3eNl-UzRH!_Sz} z7X03>vHRHi@$eJc#woY>O9Q(3zrUI1&xF#P>y{~xnzrbRkK0~MBzo&32L0$&{N8LNeIu!kO17_K}MYMZJ~ z_YoihCdNMq!$3A4{N**Ew=DQ`xJU#4x1HIS1!9=6)^pr2p!9WO=b57g?V!S&1$ z;1u?tV=g(};sLZ_Luc{_hvg&qtet>p{Hm5VLcKeu!Pjl9-f!=zt)@_siB*`(YBKRE zXsi^K7BZV!aqdFcTsLl+eK??MJLltO@)OVO!wHv3v{t$hx)qg~~^LOep-fQ8f{SW4nYsjrHd9 zUvJYC=%}pl{jY;Azc&{}a&T?`xNFxwTA;(;yKnrZ3#o%)Fn*66t@vg}0_inA ziHqAvD>o5UZjAmSH-JkhUOGMy1>HpV;7d#c_TF;ddK9r9KJTZOj}H&tZ8Wjcycf%7 z$A?f$lye2|v{V|YyBxu~bmHFxX*ri@Yu*Pvk$X$Oa~ql@?5#oalBTe#6lOLw|F&Sj zVtIJx`Y^PtM)pN$sJ-E+mO&sH2hYN%Lj}8e5(BL3yUE2t&@J3p$Vz--S`-* z(XY?=i*Dzc$8?&drr$j~h6xX|J^F4rfpHhIRW6cHldS^B$#^Fsp- z<{N#WCY~A5YhHLU;VZA+iciDQSQ9)HQv;oCvrzex%PwO7h}-B^5z@k~)~*5-~`8 zvg=`MiEk@0Te|U=NMBZY1A4zS}WIkE7QXtdrWNe@Uo_6cgJ)iqI~cmQ+fKEfUHQe z;%f97D)e#r%#C;XeB+8gEd`9A~7Qe*{>ZV&#QR^(mn+} z5cZDqn^9G)zd+)ngC*~WUyxVzIuZTbX8CIl>u#y=<9wBC;POb-f=j>KqMqaQk4_R3 zJ#ZhQ*!BD64Btg_8nqAND;(SskCSgV^{-D2JX8r9A1RF(>9I-6-3P(8vlW>^#&=1U z8m%O`P5kxqyP}txCG)E(6$p4bYh9X-f7UW@bkFuFoTC_{a}3&oPS?J)HmF&Q0zkwS zl}^ygN|V($P8UQzCGUYs{tRpCY^AH`Oq@Y?PV$^1$z)2_c=gD`T0=?hlW)i z@#sqeK7)@^jz&gPhaRBh#45jnc8CF&C2dOk7^T4##!=RewkSDz`+1)=ICFQpjz`$! z{1dz?Q$Hti3)IAGP*im4VW=GHXA35h3K$G+6R>=y(9~7rW7$@_C%rno51Ecwt@NEk zSySt}d>_yPN5{NwU(J=bG4NbHIv2RiAM z$6q^$h}<-OH7Hm+UKvwUZBM28RHA;e>S}PY2G?MdwxkWPJb_$x)%x;N{^PUNqhJXH!@(v zJDOwf=Y+ugUSLS^5%C{x0gs6i{hVE{$6d9I;_#&A!qCp0x8h0XiCdH^lx*?Lu& z(=UNw8Ia6LpI1F0vRa`G_BuyWJ-WRInsl!T*y}HMy*_OBEMChCk+Fs9?B!z%?luUF zCuMYERfSwAIKI}sTMx5aP{u&wbEVzmUV?JtVVSbrzUr<|L0PF|fYzh6v2U&4yFqPp zyGRj-n+u z#`+5q;Z5EgY5aZ0E zYD%+kmD~a;$48AHG<4R+I`bGBvYvLtrK^tEG#$H5-S9BpKV%p;VIaC`I1cQ#m-C`K zeebWM>GZ15M4b}rACP3vW>5@ioyw&N+3Bfxy~!YSl>U>}04PWW-3zY&KmzNy> z%=mCDD4^0@N3(&q_Ec=y1@{N0lgC$LM?6KLrmIr1S1D_UHHPNm+g5=c{mh;6{IR#A z?@+hx{{F9q?%XhsX9}Cyo|%0fCI{8^cQ@*|Ru=I>#LQYcQ=H<{2D(oK#*1^6xB|{G z7Ed?MjbaisP2QK+ri^T{?!s7&#F43~WA{>0Cn*SC30tOJruudsP9Gkq136)|hJrgFM%?^f%v6yk;z!?xIX=*34mw+6?YJta&`j zv)uP`{cwcLsvlK?uh8-`G4#lUF@lSqrSe5;QXgX05h4}8TQgH2pKj-=ZAUWa)#!wh zZz>qbG>q?1U55CBywLDaP7kqGjy@EZD z-5)Qt25qed)v$l>{tiuQ=BSNZ!;IY}{Qkt)YcMp^Q7H^^${dPE0Z>|Cd4 z!a<;#W42oAT)FEybyzqP!z_1@6uOY39%~rn;Q!+f9?&M?uFZmN;0#iOA(Z4`BJD8(YI2=Z=!35DX}d(zgB80BakuTy z$AWxh)8ECC_4_^jR&q4S#F%8BWEzyD`4c@z(K`t=S%RskO#cSs!**kC^6nz3M|04z z;2 zCU2fVq#GIx+$bzi^2jl{ecp)Lj**g4!4&AuiZh{y{YtkozaVe&t$5MC8o-E{PYu zB=P=gh`3qH6sxG~s2|HI`NYssjnroF!N#!macYgUe?&(0iNx_RQk9K8lFI(V56-_^ zC;f>HHS`K^SeLT&vGnT>f3Z8#hFRO_m6mDd=J$WGllfBWTfMz{zy8bR#~PP3sP25f z5G{X^q_TPTca6>Xpj$Oe|gz#i=ejhacCC%8v*7)4n;D8;>;d_T|VBJ;Z*YA^WXBF zi6C3)$K2wftowO8#SG7|ZD3sCNgiS{rj!cWW zZQ>6Tf3f?d(rx!JyeFU@3M#ui(r?Qj+2cc*0EGGIqQ?KI6FgbW(>az+3ic z!md$>Y!ojlLi}>840$UjOCH)s+{dbfNybijK4~E@rzeo8OU2_l=pm*UEm1x6i5if- z@wS2@;GUKO!8LvO!U0tA;|U{cu6F>@VDwxy$rUW(x`%N1+2vacaJkVG5laXuHVT|) zIds_(+(_t(5)TN#%r|U?%h$QLNmeY$ufgPe=3FW*T&5FOx}Yh;^vgNYWo=8Jf)^IZ z80OnaBUmr&qlEiGjm{`XTced)Ipr6$y(+?klxR~>Y8%7eiKKijyaj6kXIvDz5fdLN zyD7bPo~tw>kg`g%ji2;xx#b4;)gR>t5V>0K{WwscW(+wQg$~Ro&@O$;#@r!>I8PBC3=H`h;}?S@VZJXk$PJ~mt7AmYbi2vb|YkKUFOudw=j44 z+7p9>oVnl5>)eQ5?p$2vbKKk9#JEUnjZPg&_pW9GC$n7R-acp6S=^jBupXK^Sfo{J z{$ZOVc_1=*$kT&0fXJ}GXQ#2Ys!UCHIB)zFKOc8=%TxoDh*C*F&(*bMuux7QS1*5H zNNjhqs8!GreH?uE)g9u@2sLTtytMk4ebm#+Fl21&_j-s4xB%|;y1M$s8+}hVi7SzN zBvI7n0C*$ma?0C@Zg}p@%;o-)@Q2Jj+#Wup$QM8n$9+!bcE#wR^@-xS#AWLTS(J!5 zqpyZ!8Rn!Yle{sufkLz-QsJBvX5l=8CA<@%cSEjX;CSPP@=A@Ok6Zoh8+LS{FXXQ) zC3k}bWD9sAh3(H1LqtBUp`8whA~-KE1D zJ(w3jq*m$LvpybV%G+Hjpb+S6-A#j^0ARr*b&PazP@{ESAo3_SVgdSCsNhVw^?WRu zn3=07jI?kw;ZyvQZ3x@?cmh1LbtaK(#u!ql=+B(sIxHyqbw& zlyUK{UblSq`-iU_cNp{X1-O}zrSV96g3p^I87nvG-bUGozJe&IfX*dPMVW&-OE>RF zM$?@k!?kLCg_LhIbG8No8)Jc#D*;uT&tdQuLpMps`ShlRVwx@$r6jTEe~*Z4-sG&l z0PP80-}lD+Ab)oY*4vU%f_Dch1#2i><$JqVOhoM*7cx)0taXGEU+(mo@z5E0Hn2L3 z)pI-pnzXz$H;B&YvD;|VMlzRx^0$1~LMCbT#<mg>)X6D?nh+o;i_ql;+(udR{w)rigq zP4*b~gpr+>)4u3@DaXb=?nXw8;g~Z~!5}#Y0hD&7DqdgK1(8<-E=)EZqjDRj50sUL zhW26C?4n92p>N+;AxcM~fG^mq<&mD)(*m>7%_a8(}g+b^N2fZ zV)o{G*ze+TesY+wk1BHoHC%z@<;h~W@>~9&#um~RY9abQ-)W|h-no3t+s>XK^2%3H z*Y_Cz^gf+2Ka9w^y~Oti8H2>k5c9k*YqlaGT}njiz7 za!`O;A#iDcO^ed`vtMowGaIpXc=-NJZRiifqm>u?IX@3JXI&8$Z5sQ7wZyI9RQFQG z>?*j;Q*-hWl(~cBMkPHC3mQFl>z9ERn(^vHwz~c_?3pQ+fk7{!75g)d+oD z_gVj1(I9IEUT~2D9dX0T*xj>1*Q4fn%%RtK;O!iVt;+q4w?7l#9~5bM-+1_R zmzc7p z?|YXDCYn-T2W9WIT4$TUq}|2M#%Ok};i0D;l&{%jhx)H5*Q{B7SJ91+tFS*AOh4MH zKMb{CS#(PZV)GGO{!0?t%@WNz75K$&CNGyWXu~a z8*P;DuHwq7%Ri?!VxYz<$7M6RZHMuG_@tnJ z@-LYIWk#}@dhOQfuAg5Ch^w-`zjjK@_N;J`VEbjU+_{>{#18enXlQ<8PsZCAHkL#q zi7ukyW_`h|Mz#XaM+zXkN2CY^y$4(?cS0Z=x%-?m?@el{aeip{ONb1{^|QW<@2UlVslnE!I_5Q-m@P7%+V}E~`#hZSj>UM+seB#o+s2<&3t{H+&hzTmGKSFN0sQxk?Hl zXA(CLczA>P>axH6ews(_SJ@i1WT;z@7)36_QR<7le|iBpVR74rPo)fwW6*MM_aDg` z!Vk>%lfHZ{hThH21AC?u`bG6%NTj@QU|~9aCWCT_whuaAe#y_n$a^AhF2z7p_waX2 zV~6XMr_bjCv6Yvu$=zR5`Hx;|Y`b&wT)$~fwr7eF%k*vO&Al$5zQbzB-J`5=U-R)- zTT7dF<>g|{#UJ@H@DfeS6u&e!KiA9*LpwStC-R~(<#ngn?JqN9W1iANpxfIT=!x%q6C5JIH#VUz8q1MnOK;#p^eFZ$S46ihaNN;zTxq-`%q zvz%JUVnN-_zaHQ#-~9DEN&Q?BlL+egDCcFS*AenHX^2Z_UgmV#g+9_aEz zfX^G^CA+*hio;KMGr-fu#i9FVkot>`7ydSjAaHt8K6Q_f2++{f8;3Z_ z;;PI{SFj`a34*M%5daj{ArRk-gGW0!ZI2AQ|Mzn!dct56IO zdD(_9Q?dVlFGD#YL}PF1r$FnsTo~?(Muxk#-qxP z%YT>uj+au@m9o?}A6FVUQ6bB=kMvMbH`a>l? zrq!1v8#pf7bT$W-F$+G|k!8mWfIH$#1AZ)6u(LoQSL33elC1cjfj-|G4d=wwv>mW8 zQcLlX;Mq3vXCS7{SnjRLXPR>nEvgCxebpX)aL1;_8Nuf+`>zJVQ|7$(m{!;o0-5;v z6|ulLFF-^%(Jfym1C)5=>3=Y5hQJl5tYnb|B2tDcShyh^Xr8emz#@lSalH@s8xA1K z)zh2q9XM96!uNkq7@_``t0pa2Jo-w*=Z#p( zHh?O|1pYgSxOM8Ow!k>Bow@peFDo)c)8+X62)NtT6%x-M{d$}6#cxBAN+teLJEOU& zIZH}XhH1;^^fcfhRLXVWL;!QdA)7kCDw`^>r9wG?Nc1HJFnvS-;Ie)q(MjpdI&j{E z)q7d3EPh*3_fSZ$cD>Z|%Df8nW(x5=#By+fA-Mxw7k_bd%JO5lpygW3E^XUMfe~}e zO8YvzrPJEnEU~|2uAEvVGKGbd5dY#l={+_S=et~r?L693)pJw;3(T((CFp(^JV*Nm zQUbR^MN|^IVYJiv`H(m<;Ttz*Y6)h4$6+;tp6H_oZg975Q1MvS4I8u6un}4PvOmvo z_`FYOzh`mRgp65RM!^TcN?Aa>aB4v+FM#xRuqBJm6k*OtEMUFq&tI%K2{K(o zao=|N@+fzChhDiksZ~%?MAw3XOA95BD1gpvZPg_7jOIh<2(#dDJqo>zBw=F3LR^=O ze4QZB0H&v8>MlRR6as^-wOd5n;(z4zC~$t6NzqaE_!6$hzzgarnt`>aDhVz!89O9N zlH)IcjTDLPyE$FOx}W$AVihJxOtH0I$ey?Cpxv_sFYhN|?VlOYzaLlTpg}rQ!yY(R zRG$vLg-*fieu|RCkOI5hWRVj|p5)oA0$K;q zzihatOJ3Ym1uE(Q{z`C1WtlHW)MUk8@19GXSnZxoMohqCkK-R~L zC%}ORl9*zFyFf-H9OcItNW@bv-Zp3CeRUS~B}B!vKB@B>gVcB@)|#HL@5Tb0PZ;~p z1C%~9Q7W6`>`}@fQ_?o6iucZZbKrH;UT^8y&K@hF!*cEJ-yl7^h~e zL~uymyea+1YS%`F}o8_au$CQ2rP?D_Da^fKcB!WRO@x z+ZgdC*NMhF#uF!kT*{iQB%Z3`mD|Y+t?F|3!jlFE(8{2B!o%vvV&~gJ_&Kf9XVH>v zO}}f2Yw3IySS%HTC(KY$6zx37gLRBgtQrB**6A{YUn*i0nXj?xm(Hv=Q!$GBX^fGeyeXu}=}ab}Q3goq)I>8kmst!E9)7X`o|S23YGIGO3aiQaRys7NYay z41}`P8ea}ok|gOoPtne)w2hs1AGQo{#=W7h%!pSdIhOfFCD-8im_1SkYivs9+W(^r z?8ZKdP1Vk~w?xwF=^-mH*w>N%t~V@a%gAQT?Qp;Ao}}9e0jIghP5WluYDnWynf{#x ztbtNf9U>zG`Stv6*v#xf08zaTq+b97f5=nCj1w#^883P-C^T`0YaMg=;&{K01bN`q z_y$A^MMch%7FeAD0s9$02}#A>I_n!K6r^On-08qvv|=s!ZgF)9l20)!^=!B|@8OHS z=5n0#`8aqU5P8)+9(HpQbB_^|GOkNB4%A3vl7j$yF5nOsWC5F1^-8my6EyX;Rh__XTdm>D7I)|_^3HsYH>0MX}p$Mg6J0JT5z zPt<-}@*jFmy(COqHQAX!jo`2WW`lzThDy7(oL3NAo{}?W%}RkZ_COV-hp`LPZp-Di z0rQaIPxO!gacd-EuJ$5ldlt~khl`%&%U}~dc!ngTP3n@D6A^O)t`BzmWS%HHz9Gj-To|2~+G^5;&odqsgSQ@nlzGjp!L z_?h<^_p!VR5$s;i=|Eb@2oKG=E1cX0dqq{029kJu5CS5J{-b6H68bB-9mgbD+Q86w z%2?s(s{7`3do4)krX|&(jJp$`gxM!ojstW3Zsw^oKu0QvQ2DJ7-x|k7 zQ zfpyTb--CqV(lKSqMB4gd4Qb6=oyTVuD-$%AYML?4JK@`jKbk0fQzHcS>9 zN`T6kj1E+(Lq+Y5YTB;+0Q(c#O9WR$vAzE8a8J&^uhgY`sQ)?lQ{5+5Vw$w2p8#-V z&bEtP+Jm7^2ShK$r!Gjr=M4q5IdWW z!$-dkEvnMH!H@$4UcWTVf0WxI0a=%j?FK8<)g3ln4)Sb!{*XbBtKoqPljI!$(#WfF zCkNP3=cf4?>QKb)YltVpVyJ0L=ekxJ@I0G^q@Dmiu;bFbOCl&k`Kb^t)u#7Qm#%yo;}j+amU=M2m*S#B zNjn!U!RQ%I?iJ(9Bt;)QwZ;z@4OH3Jqe(~7W-hj6`2|51%f(b+%JH=^*MHvKf1>$# z_E)68E=Z)NFGtmuE&G_0b*#`Zi_IT-T{3*Zf3O){nd9a9z-ZJGG%i+i8OvFs&=<*= z-`^%`H=oG23F@i>qw|NOl~-|r3tds2$~JnYK$ORHX2(1;|FdG-OooAtsaoGJymD27 z7Sb!aZoL(c%?+=zTT7uP!itThNi9V06~LANpV{f&(7E{Lve->xiuN94ko~Vlck0l= z^TitX)X>j>H4f)fz0;JzdQ5B~c+;1H%sU_2AAovD?46n%fFWWu2Pde#DF6iC4|A@a z+V$=$a|}L_)a@xWjmoQY2wLVB#tQ$k5aIt!0>(CEM98Yr?Z0&IZ;5V>V_M#tfzE{Ehg z$q=K+Y*k3yQHpH!lNC9K0(9f_4#hQUv773o)*})j>v3wUs-op>s52(7Y93=B0^S4j z+)n3Au>-!MiCQgSXqVl!|ZvBb*K)xL;Vw= z(-c_(K;Q)=Yn9F3@4js&a7%o7*4Dc2(c| z8Cp}zr$57(J|e70pB)MLz5*uw)Yq}6y|Ogh0_T9vYp`{x>fROol3ygc*Qs);R2H&os_?P9O0gR zEZ3e$ikRUWKR*SAbSrGrN3)-NUh32ReNlp6B5&nCU}Jas*x9q45%ZUL?}$czvx`zD ztOF_R))zg76Ii60zq|PJN`*uO4ZRHvK8UqiGscBurOszN`HrSt&5Pq|bC>*-tZNx5T+BDn(^ zXq#(P0y=M3YCly1D0*X56Bf^~D>fSrOu)!zF3z*wS}Q#JPh6_Ap9m^EW41t8a<;xivc^jEsNjokGDUut^IbR|9|1}aY*s(AF0CHmEiZyI#1RY52IvudPK5&^$0)PFl%)H1a-pZbEOi9Zp?NKUfX;ChGLI&A;K40jrZ^pnf;8d?4(3`mqR5 z_*vUKSGV@Z;@!jYzKgu*zJy!e)2~thNaKk${C_Bggs?;aF;(CGamwH`e&s+b+;hi5 zPtyVH_~h$`fjFxTe3eegmnN`uUo8Jc_w^UP6*l!zdidciS^GaP0w_v6i7)$Oglkw# zQ)pje7jElfcc44g)s&+<=TAR&3v>t9P0{|<@COIy|7?s?*CK%xbp!dGU7T2(aVbUj z+4eo1`4~tMCh|Rn|C9dyg$Kn7&Gm@>G*0zv0xRQwh;O|2uZ&5uu>AB4f~V%_pYSml zTQhd|pFc|n6R=C!Rk=Wtc z|77o{3i*E*a8Z#@pnkP;RQC5};qXYwcP6*^fBdOM@^x4X34gMLb2`|`VB;=e>=8ks zr|R*SKOU*&uZeKc)wVBoe7|@1P0OE~ZEW8c70R(*@*A2l{zH+e{;x~^$AnKMelG-Q z@wc1Zf70_6V2iVV3w7Q9^U43L4`C80ht>^lr@Q^RkXT%1DN(EcBl$001SnXqSx(ab zt1o`nu-Z_(bROr*>Gzx3CrN!fW|wq5A0xn}QWqE1>Yk*{(l6eYzRAz!uVf za=q%GVh0$TJOeh^!;8B5U(f#MRclyg^g<)NP+aZq^dTzPeW>v#CF7~n!u^mB0*^B# zi8KFWgE^#uhY-`e=Ko`$|9)jc3=G*mm+lA$DSSF)Hf$mG^YF_ne;AEFQ1$Nk!@8WR&*=~OaFV=&{FweSingxU zxJxb5>wV!&+yI3=?zP&#qy3+a{pTV8i8uuQ7He{`h^3sw(s(4{7dgy5~A{ z4g+}Ytcz@&4%Qx2p43%Z$*_j~D{ZW_)UZMIx4*N-SmAgCa7^|Xb@*wnS#+_8@k$Y# zwH0`LEFFlyF*OY?t9HPGVdye^MC4trUoDq(-Ao3U;fVw{dvjPDzCSl zySKizew%Q1_2+?8Ue86Pdtcd@u%x60KBk1|d-x(w$*A1crd%{N}{a1DuhTT-&ow(2^oJ8#r z@CEiLbe!@L8mq8P2*fld!&ST|*b*vEw693%%m1pQ;gn{N)C7y9Gcz}Rw)WcKE&r;* znP>6_VYeA*F@PCg1Jp{rg?b$C_{3X^QZBnDnqzsr|MKT0v)x?gf|$kM?|Y@AG{L4d zFAs0NNTzdGL=yc^F97eQ93{2~*t$F+Zj-UlOay%h4(UYwVd3QKs3x4EVEnJ#RXFB% z0}!VB9g7SD*uj4Ur#UiV6hZiS+46B*3wc|EA3yO5FFG-vg}>Qc`KaO$9gh ziHl(Dm6?yUO6Um@<`nevj-)W!!!G8)jQG=!UBF*;^A`RVdV8y#s7sjsW(giGCH^3Y zs&FUEry5^;wGL96*X4AUm!AI4@kyE)EKx+H^d3w(N3iyH#_i8}*JFyiFE)k8ciug% zcf3HF8-o|7N{_*xfy(uW;C0VaZ$ZWWi1j_!UCbf(3oU}&>`Pm0;N@K z4`4RMN}X^25KgnCe_X$q4m^F#Q9q_ptL0{J5M)n(`cOsCuvs3)O2$ZtFSL|d`5SHj z@;Ggt9V=ydIscSup}{f?`R`4P&TW4*0Uj+#dmR*_<~eYykZ=(M_#aKJ{$WPJPH&a; zA6xDpe`d??BpiQl=)N!?K3M)!Ih9{=bCY?{t5y2q!|49NW)p0F*ZdntLLs(*}cFNv+ z!+uA0w#25-gfGFhr7i=QrDGY17zH*elocd20n#cb(aggeilqZ=zVAOPW3&p6uji-{ zR^|lEc^>qyC&ryF`YW&lJqRG;=e~4SXk()Wn@cGDLE;~};{McluvLAE!fUAaZTKt6 z?NW>B20Nr6#&s@~a~jnuc=~=b3Yz)%iYi=NugOCZ#Q2Q^!M^TA+Rx~&0bxeQ;H$z8 z%f%moCj9_OQ)9vl2LZ&AZ|l;i9Nq%I9e?R>`?H*u6bvQ-3lMm!OQ%1oxhMM5>f_^i zBL~WRfAS6q?8@F#V=m7X4_WkkJgh60E?`Op&LMvWmoTGjs!k0`4d&sa%+~b?EuakVNM1&*kJayN8oP;Cbe%N8M_Vi$tiy#Cc zWA;J+mKju;4)&GWHC`1pLoH%?^LM6Vb@Pw+Km|b__^TL`3l5gzRgL#wC2{i*v^>T> zR`*#DF5&ZI2LE-9{YCtzpI9QP0LT}}4X%wx%U|9r9)92Bc634Fxsv?4Mu4xS5I8X) zqHk;{2AI!?$mC$w-_AfbK=Yue+sL=3m+DmNa%RZCd0 z%I`;Tjv=S^MZ38%Zz_uR=FQv0j}ZX|;=vS55=>RE<=Di ztoa4gD{^l$uQYB^5u^v**x;Db!pzZ1r|OgCHBx_LRNW!Wxmo_CpoAW*2!7lt(_S#y z9RP)>Z+t-vRgh>Q;V}Pbo(5kM+oe9I(*752zrO)NuU{_c-}qNUy19Uc_=leqor`FW zD+qsoiB`2BO2uth+(6@7%qzcSaM$EKxR{6$%2c>maY|Ao@rVsvq<-7^eh?T+f{;7$ zRP!JjsLRH=Bfns5OkA;d9!Ft!`YL}B@(M}IwU8NTtDLoV<0X1Mp*t)IN0Rh$Mv>;C zA40BC)z}8C*rXuk35YUE=wHRD%}2Frf)hkdtP)h{q&*imkgB)fO$H$m@?F-dAvUsq zeM9){Wd5xE;E!M$D?&+2khEliq~*E(->j>miXACMu&N5nCT!)5@!k^Fg-ySgcSgy3 zc?&bn3z2yvoSS)*BTZggNECpObfUGm%L*r_ZY;(rzap7}I8_mrkBR6a{LJ;`0>yJIEe`!7 z(eSUQbpZFDN(($!T|8_XK2$iAKa|s-)e2+u(vL`qO7mAH?<@l4z#j0`TLwNvt3qI7 z@bmn`bG z@WwVi)hYZ;;~}{MBwNRYn-pXtEFSp7@k5>-b+4JIS zHvb>;-ZCo6wfzHC8UaB?ItE3NR=PtJP$Z-~M7q0U00ku_r4b2{?k-UTsiC_Bq(f5r z+>e89_Ivh!t@HhSagD${aotzP?|LnuQqHngFdrPxG`QxW%f_)1p9;7~R2BxS(n+BM zDWXutJU)&u#Wuf-mfqKZYs~ZR()PuRQ0vnQZy_<#aPZPwuaUF1fIdT}uUzj_<=6PV zcO>kJHgNw*++2X;V$I%1Ozki`Y|h=nxw>?u8wvm%SlnpGLMbu8f^J=1PYNiUsCWuB zckH_ZBlTr{FYxDloem$%aq+$rcSw}b%_&DfLCbvDG1BqYy?{*o-^;+L^=Q7rmTB95 zL498CoTw0Ngp06%6^Pm@EN;?NlNDTgizjZ|Ch~xbt%V&WwSc8va-@K)aRpd?^1Gj) z_70$Ippwy9)%Y#ge`@_TZqJ~ zBlSF|_`|d3cmra@Zj{Qa90;3Z^L_G7>(#H=f$pu59uK_cdX%@ue6KWh-@0L+6<}@- zAjbNa<2L7fG$f>K^g@r;uP=X@?U0Z8deQHtZK04M9}wZVRx05)rr*E zNH`eRCnxvAFjoeWHYys2rgif1BC55SxMfO5-?HpCsVrm6lqB4QvRIFN3i(mgpeXR6 zyUc$_fq7W7@`#jDw@mld4)jeK1^rK(?H@mc^BYpofUbS)J%@wKf#v4WIMFqI`SB8p z!BNy}_rz}FlJb2JgBinsC((2BncpR4OQuM6uR;F9sd#Sp8&v`>FxdA!d{Z@^SP8Tw zuX06CYbzz=l0D6$r@QfeZ>+c1-Q{U@>X>T?=Xd7&+l+QCq@BlfSI+wCY5_dWO{Z_y zR0a&UOA`4#ifU{3s6Sx%y(Gk7bFI@f0sVk^is3fSpr;2;{IQ+noWpf4-YF1aLC1?+ zil7{wt@*+#sc-Zh)2!+=*@%k9KNwe7v+b^vcw8tb$VW(1u=Rlm=m(n{8r}m>L9a9> zb?qA}9iun&8602wU|4C^E1&F4zT5QAWSj*922l$5Bhhcne8g)(HAi=~$|i!* zKwPXiqogev;1^E?yQZLn6x|&*v362$3cL!BG5)3C{xA#Z6S8GCP6_`>Rip7p2Xs-@ z0i*tFN6C)Z(y=-F_c}}8LKiTCUs)C1McLw~)URN<>V89T*7*=gG4%ERzr z-=|kQr)j{QP+51osPiHvi1#|tn(7q}lYsbZ6w(2_BESNxm#jU{i`-vY*^0o3eKFLd zGr2q%RB8@Cu3n;)yZ5*=zQn&hm(1vpBy+`>&N#(GQ2&UqGUJDLkkjb0C@Q-4rcI&d zUW=rfmWuA8pj#-{{z{KO(29VbhLJBp8^`}K zk$*nHDXz6Zzzd7{$?kW!-Ag#KUatz*$jeZ$Kb0XX&cZp z>K52Hd{2>xs7=OBxT_@$i!4B3w^?q#srUNveGJhJt&df+-xSJQL={HO2UD^~ z={%EZuge)PZ$HxWwEe2;@Zo(M9s0gt^FC%#sndSi-F%6o6L?8@tiHlePECxvNg^U? z#TsTD)}twpxqLBz9E8tP5A7HlxFWkxYp3sMy`Fu=Xl9{eQxqr0xA~ld38sd82x8XC@-;asZ{Lb>1`7`eVr{;p5p+*nu+5*uE2++`dTggd`bs3XkkI|I(jB1}!eCaA?U`}8z|Mf2i-$oWla_+H zyVhV({ld`gwy^s%Wdi$yW=+qhH)%E-4?f9__Bt+xi8)$D6kj%bvq=N@GdcBrT3VNm?vymCM3)pS&vTOFEr-aOJwN4keMTkg;hsg|NO`y$9w}HhyEWnmU6l z6Dfn)GR}R`@TJW}+dd)w=M#;i2Ibv}HXbS#Op%x;3b&;O2}v!`xOe1wBk+e<_Fb}s z6FQ$GQr_K?we-liU*Z(UTX~emT$GU~x2B^PrACM{(Dj4qUWPi-5 z)=5lq%T(0fPx<`IAnDa?np*8(IEF=@KxsFd0HXKi=92%d=AD!2gZo)#o%mYit}?mH zG;TxqM7NG4mKwkw6rO@R_SpY&(*J6MGfvTMKxq@si?Z~{9eCEZb(n7W*l@y?+WKpR z`P9sS;r@@F7=!VU6MX6jbB0VuVV8E={rw3{$#=rGuBUL^@DzBF5gM;dS3ifgx_`X#ng!r)yNHD9s{Wb zXAeo&IS(ZpDekm8uzH^CM&~Xl@YYddT+e9_nO-mD)p z+wiM&m_@Q1S``aSjjyviiHr*Zk{=w>&Hl z4N(i7Y6WA3hP<}xCv|YDH&fZ${7y?m z%i0Jl*EY`kqm_4$XC^gkR`-+hBHlEC!QIi(W81~?_xA^Na%S)+v!y*fENgM;pHS>R z>hl6hBL#jf`+hP(0np(MQRgB;;0z&sUZBEIiBz>T=yEM6qgT&zxu`<^3S`C$#xc}& zr&ULpdhZpgW&=D|w3KP;Kk&-!GA(mpYi^m;t6jAhf6=!7h=L7^ z%YG*o&(?NQW9COQJ1K`Ghh%YnRf65tTg2$@tC0Tk35PO_Eyt$!H)k7FR+yVottKbE z7R9qd*hj^3gm4WJus32GhsZ%a%k}a@&eI&+4pqJKTvbuua$)-L{I~ZBUXAoleLG?t zX#22fZ9KK)&oK8BP1KhdAYffjpVsGK`dKO*e7Pgz%|gw=`dW0pITa%3`m4@2x$B^B zJz8M?A6U_o8YYKXXtm3M!6tg3k>yM_GT`G3< zxgCY|Jy<&1V#qT(qATBryS142(}2|h41D89R#fCPp7kyHoq5E`oxE0sUoMd)uxCEJ zoHTNK-{o0*c#2v7G82k$!k}?U&%|8BH7`z~@6v7_#`(p!7DlJ2Etm)s(?yH~uq^rd zPp_%uuJ0AFAL#v339*b;z#qGPy$PjAPpYo)sFB?&>RbKfy4H!P5eFh`wL@cGCfWU@ z%I00x%#K@?;-@hWr}>ae zNn^D7^Gi#0F+5$`YJ;1`8wum*0@b&dK_yfePy;f1;nxRYE^HvX7u5Fr#!4qsf zX1%QJd9Nf|=x=XWs%a#%va&D+tD-z$22no14w}$nX3f8IFPeD&`!q9K)<-GvsP)J) znfe?s*$bT7(6lf@!B;2X1ykKYJX+0iC%OeeJes@fR$+-$Yv7@LeI_r^BZPYhgw3cmle ziXt#(khc6VIl{C`srCI@Jt6U&l+r`B&KJ1ts#e^b-+aMf-B<2B=|DXe4mQ0OIhWmn zYnTFrplWkP9UYJ3Nyp*RJnqNC$>i&A1r*^%er@nAS z*M4~jw&048-VaCpSoCa*{*3!-+8TH0I>shgdEQz1EyqtcT6EbYZkAhFMf%hvAqMSB zqpil3m`{)IP&}_%`JB6%e)EPHPV8l}p`ZPQp3~*iVcvDvr}^tvVck!Q@dS_qZ&3?P zo8(>jq0Y-%F(r2~1@naSwS|hU*3AhUEhPMPI**Q3)h6FkAB^-0e_VA+dZ03>3-G@M z^|BY(sDG?RbfB}XbHAbSq07tRypPhj+SP^69Zi63d603MtCJo0_NQ1r06xavgbTNy*xkZU6vAE=@>E)5)qXx@4tuu-il0U--BDiaJg4dsOdkp2_kNd{=`>Gskdq^b}KJgXO9h9EDP(PE}Qa%9`V8Jr^adVZD z$W0z)%HDu?@PIgz56?PfoAQ1dG6W>;PmQn+wEbkifr|ZV>E2sW)Woc*-9Roi7R;-Z z-jx7;i`TJ!L$%Juh{rf}I#}Yws8%uRMGP%gh=Nf!PY0no$%5FyGBqU){tmO=6~+g; z+{Of2`A}3y*EwdXmWrv(5b)a0Qd z9dQAsza{8~)!ummu8ob-#((D`IN?yLBTL%M;OVir$;5E1`b`$$rM*K+hObJpBpY`? z8C9Hwk|ThVUDSTrED4JoHVM-m4cuf#B^Px4&Q~f9gXPVH+uV;yzsrJWpHK_X)0Yvq9vIot73I5&C(T zPxod&RZ83bw2^*S`1Y&Iwh;ep^On92-TXM)?UKG`5s#g%`2 zY&ap>2rB;c zhZum|ab?TG+|KK2$7}1;RJQ%qYt!X5I>-I$^jsayVXY}}t;zKhhsdMDV;YQB$YY;a zSCxHFjpG647ZdF4oOfGicCDhcBp%A-S_$p0OYm?GbU&T7HvZ(E=x$*d;oeJlKftn!Lb4D9N7i3Q4%~;w5?F&rw;r5Y zpmS^G&8*744ywP*VN4(>)d(53Pwva4lIkNzsfU>5$w}R?ObTPcLs8RH^wyK75C8+J ztG72)>U2yW!bfI1DF}Ijk7LF?6Q-o256K2ReHC zhUulXD4UH6GxByPCi(f(Zz8-tt~ah5EEx#^pS99*q%n(I*M?Tqw~yz&FNUyC?$aNX z=Er5u8@N^CM{t$3@DXfgLjpuOqU+@NEg}f*C)r7RU9N3^4KrH}$B`ARN_djjGh35@ zj_K#Z_jk>sGmU3{-KSLu?BT1*;m*#eL|b@hU@%MP#CvJWLv=0r31DxdaZWk-vh;oU z>0Em!KXy0bk_lK3V+`AAu8``s7i%ntIe1j$X{eOTUS`uOf0Y+8DZq9Ar{7FQ(OD#vo^OBQB=Xfx!I{F{;Cvf9WX8cj;Zj2i>ZDz%~g}azBkxvLqa{Gy1g>Xz_g;JgUgB3MWDlh#H zn#Wz%K)jY*=+N+3_N7W|cJrXUO_0b$KGXO>cc zVk|RqW4@inST|E<1xz3=LPbSS1@*H|Z%*JbXeu!9Ay-5FalW5x!iH1evJa^E7F35b z1q2K{`1l_oV4NL_0DA8B7U4Eu|H-3bbqj|ScS)zQ^6q7g%~{`_hajRu=@#}Hk%NH{ z@n^jM|S%|~hcTcKr@UBO1H0?{t4v`IxkL~_?qs3I!Uqq5iXFL8Q}o#bvV+bxNC39o#;CZ>nBrLm%X+#P#uO^Zak z+_M!gIY1}ku17qW`_?&F&mVlO=NUSOXvdF}jVsm4TXb_1s<8W5CwwB2E^w^8?z?zJ zta|Q6a<0^CM+*;lf@@O+;+`@)I&HtMPh!0K*6czyo!>4W@YnXgsMWG#e;)PRl}i^W zOmj-8s@-fWm6s;Ly6O|Z&$oYcadgf|Ct&=m z)ua-0zB__H+fNB0;(HfhFA4kz3^fbKnODcuJlS2ht=!ML^gb6X7^iXrqN5-8Ml2t% zR=lPPpb4AKk(QG~?O%naX9F~F4ybx~jke=&IQToB;e`ROz`E7)u;o_7UhA&_FyStq zu;gpK)pv3bw&j(t$~q_Z$;vu&ApVzx$6o&X*~xYMdyXSs^8RBUt<8vwRUdv-=Kbjf zfH*Bh!(m^>WgBxj{X>cuPYVAOdq$NG$o{SHS5`@#>>Tf0q4S*G(c294dSN7hC|u?H zn5{GKX#eXWwI*gcK%-i7*Q+>M9NyUeH6pQ^J)R3vVwhT_+A`laYDZ=>SO;Hq5q>Bb zjUGR4$N#zW*1x`9JLB`>R$K?V?TFPUJ*?bOcHz8Lr>cdN#>L|DR{VKRbw@_m)_{dr z){@<-F|Y!O%6aznPI&U*DPQ*p)nVYzcN?#j5L5m5QnMOf*sO;IQ*pBTC*;36^l#2m zpDyB+4`Gu%8BG^E+0EV9v7j<9kw{IyzcSF3dw7Mz+H7v2oEWON6)puK(Hr1Gz!Yg- z`k$y#6wKWDE@x0O(S^ox+yQ&9R9(A(7&|h zdh)t(+x=}%<>Grabwv+YPV9bNEMnK+>o7-T*Mr&T zCo4Lr4ufGYEtL%T!T9tk_kshTSK@$hg$W68nYcCTEb2=+W$X3^pKk8bJ$!epkB*f} zowI!LENTxWSr3t^zjEVuJaKRwV;NT4?DX=)6B+Y=@~By0m$vOLJT{_1kfPfE@SZZf z&f)Cxg`jeK?ddy@-#{Hy6JD*@i3Za_lOZ@ejLL|q0|^NLj_wh7y$TWGV88#o%wz!L zc%*i6*m&PcqAS;-o0P>KBTO@4A6Pll)7AO^SDx7)YMzj!S-?1#EdlMI7vRpKzT+>W z+c-HfTehd8d_gwz#HV3UOAI^&1D5|z7Q*W z!IwRGIx+bP->fv)1=E6kVgjE1Df6mHZM`Xa779mmW7j2vKLH7dv*M z$pgA~z`3U2@5olt99i=X)xD(JZgf#8Z{bfSYzw9O5Xn5c6=aj0eSlGJtZ`gbcP!+# z#}&&~r7%)`wAuXm_ppON}eu`&cm;#;CRd~wmByB z7mp9ZQoS`DKPkVjU78-3AB>~}Q}nItNjX>@LV^X7#|5P5Ci#QFzhRWwV$fVhSmCu1!835*>IC%10eU6OtW98L`_=AsiEr1wD05MK6>gAkw zSOshc+*5*k*^TK=DiFW}Q#=B*2#IGl_J|sGy5&ZGP@9-&?q%0gG#zDm?Df|) zwu^B2BEFb#hXiApq3sQlE%o4c$G>zsImitbpR_drU?Ecd&zUMAc<4dK_FqWr9RTX} z-fjQtasa)UcMxO!^u@&Op%*Hx2Ww|Hvknc=0o=Li3Mw|)g2vu~__5u(-{i~CejJZq zS@?}R!Dd?nBWuJSA5MRTZ*c6q5`V^NQAhRu7_1PFx?(l|)l@3R^;bXd&O5bhse8S5 z;Vj7ow)*Sxc*+{~3$StE?Pg-|a)`V!=7(%?>tgV6^ZS`!OVkqN3iEU$9GWR@It%f~ zKbT`v;8dBVH3u|@#jy)Tgqf5z9dFT_Oam{IE%+WdJ9KlE)YS`>YhT)QJ>aY~Rd}aq zy=>g(|MN#8rzU~s%SHy!n!%FK9KJrr$zb@4b||TnM{aPeI!!DGG;WC1IY&5PeLu_L z8o8;Km9=1n4-Ic0AV^`4FCDrK@lLcJ0@Y*dut1LT26BLI{ND~x*hTo?@sV1qP9oy# zj}0EiMn=Yu@54X zGV)&k_n=Q`b@(+xY`0x%3Tl`55p|AW+jZ5(~c&5>wTlki)AMYo*vTsf{N&z6K zX`;5r3*j{7!u$e;auP=Oc-8|9Ay3ZYG~RJE1SC|H?;R`~0M|e}Pe>m*T>u7hP`h+c zE}Zkn!nlx~fQ_z8t5ByjiJotXnp-+Z9uMc2$jsN->cdMM_R}j;zB;42**awYG^&ml zdOPT!TdJ`cJSi3E8pOHeFutEkJJP+CYj!8BKOQH|F0)HD#?$FHomO7$j*i4Z`uy?M<@!jXy_OF}iA9G)EUjCkTm5n^>YQ1OVIrZj zFRx>!73FB$4qbXOLi<$5cXCkewsIfQZR*>SH*AR46m zQ}eZMap^$9=J#4Qwi~N zWgF0*6Ptx!WIEe#@X@pnDRk*&Ja_)gyggk5$=#Om5jHkt z7V;`I(INTy@;UOubRp0e={t_a&_D^-b$+N=&kJ>o89iM+nYxVRfkSCzfnOd$3ydMK70mlWr&~o=~$IUQt@C}pCY4k_}je*v$28-+O>;JqUL=DhE54SU$ z8Aw8gOWfc!!=Myt-zv}5zsO?9#N9Na;nM3Y~4o>b!+`#9+591f^v{er|WJp`%P?|Px0V)hZXDw zKz_MW{}Si(;30rx$-_aTfX2QH)8FYMiT7Ol??}nDaiJNkSOwnOTZvQ9IL7buhyDqJ z+MR7vgF?vtz@fr0Z`1pnfuoH;(^R_dn}2*Btr+z!Yv6vSW3c zBe>tg?-e)t$2^YmdW9qLIOey?<#OtZtP!-r#>8W~kI`sA=%e0vix43O0Oi1$-u?9> z;mUc^A(bK2lMLMPFuPk0pS^)DF0mtHy6c1KQ4ivY<(OlwjO*iT0d>9D5XZr1(V`vP z#hRrL>dp_0pSGX7euKtK&(9@3&C-*i8881a!R8}Brnl_ zO_}|3L{m_MT@sU9GbTv-Ag=9d2sLuNhhtnOGo1{-XHkBItHs%Y2NL}-s*8A}=1i3j z7`}F4vBpnrz3O_lh$i^nr4lV#Mp72f7#*$%Bt9**`QCXJ_~%XppmWL_=Y|4GV*z}B z&sh)kSR0^Qkx$mEh!Zot`Q{V#9lzxHN4JvSQ$}GvA`LpXgZZ6eq_v8l+jmrc-#fft zOiEHrr0R#;-bS}Tk4>6(p^N4}M=SqO@xsM?AblX!#4c=E-9|@p(KpHa-V8`b9lW^W z`bno(JASm|=nfAA*EFSd(M|+bu`Rm2-VHWIKZgYKOAuG6Z|4%G4Img0WCnxfe^dTPHfx)<1rJ}8A{n( z&+yo0^&kgEj~Bc)tQO@J$k>*(T!1gGKf6TyfH|H(p!3LWJGqztsyZn6@B_YDxl@RL zPJf+yxzE6!G@yq+f`3ViGA^XPn zsHV5$41h+tQST?uUFIJRz$2-<|FyJ-5=(XWPS<)&9Q_PspGMVpF8G3+$lWI?Gg#<2 z2Zro-ucH6R-|Mg>I8wJ>$!NtJYZmo_;^6>RETtuFe>VDM!;Q8w|Aq# zEF$bW5dW+XHn>QJ;HBM=KX$D&>$s#=SvyS9-}i3LwmT1+z%{=d9RBW~gZ=$!_Ou+TY1U0n4+=#7E_=e{co=k`ec%x6+-4qf%!*zs3dX`QK7k zKooEp@AD-pw9wnn8>0NY*@0>0DQ4L|TN@&J1zE9MDiIjm@VW1@^TEZp2VdrY`(Z^G zP+on)Xyl5`f?d}Nf!q`}I^FA31&5{WJFla`a2?c0+iG0MdPeTsa-fmgMxx|ssMyy0 zGw#1;Sis>7qJ4jXg+(%}UP=lib~a8VXZX_FFR(#|4rg0vq?|=L>K@Xu_~Tq)>aWdD2jw-?@_`d{~3gSh1> ziXTn|ErB&uv)>yCNkY1XcXa_lP;aOGOOn8W5MLq?vDWKeU<1#r?kxh(Zj+e5QUF@O z8(#e1F~I*^1WpKEC=KhY9#S>U`apH>4>$CGpZ9Vt zoa+yslKumt!TSpdqA?PGH|X4aI-COPwD)~zAc=go|9}t>fxT(i>@V#Zrz{v_{vA?& zr8D(eKj-N~uv7mZp2UDrIGBIKM1k%^*v$!r`k~9I%~4DT_Vn%PI@yP!m9kd|MbQ;= z_OvWYm2*o=bIV4Q%`{eXPe)Agvv-7+g0Xx8F0};TNEzGnxa~(vJA9;5|7bU9JW<-P z7yz&A*B@XOv3Ch{9l8{)b-K^H^jv$XeC`>;e8BO_7buuqMV^8(IDFNpXa8z`2mlcS zERG=m{MVqxukx9!CfLZY-2>J+AT|i~yitG!0WN=eK3TsA1$-U{anZ=5Ah-dXA<=Uu zcLBu_$W(z;xb3;?Sl5Be%|JPT#IbX*j!6@@KdQyO2f+(b($8tX7U+@)@ z%#hjbPcA`1Cn0r*By>{L$dgJdY~YkKY};(Ye1eWq$`m&LQbtmrGVWY#egUNr2zS84 zK#%j;BTLA>jC=J_Aus8Q-9B0`WvTVE(1cVLmrtRYs3c!ypW@uHg8ah2IrH}c{&SKd zaX0{!qqQU3K+NV%1shwMO0S`iZ^{;LJCU)ZET2Z>E z56``aIYNZo@Z5Bvd?+wRsPoipZBLF9{Gg*Bj$q5a-DZ(VX>GM-{wP!S5$354p|um~iz zArT#Q>N`t^y5js5QC?YG3aO!#iBCW288wrD+18QWTWUs?u^DB-_M19%ZTFcS(^G;2#W_wn6e+f zP)GWkXZb1Oyjg1;2 zdV7K~K9(Hb>iVoR6=R6f&60CazqVgJ+$CTj!5FFyiDdXAn0kx1t|QydZHI?oB>O7t zZoEvbw1$Ej;BbaL77L^p!(Kxs{PG)X;?F*)7}Gu&ewPwP%g*+>)^b{_xukl&JdRf%BJFb+4DOASLrN;n+>U}V zeIGN))b1UZC}oQYm>MR!$T%4*K*tu3C!;fS7|yIEN&|@FZ2(vOgpOv&TwHV$1sn46 zd=o+Nr@+4wC{I@58@yO1QWZ4 zjO|=Yz>0gN%@E0qrmNn->31e#)0q);LU2VqCS6X@CSaklA4yn6^k_N9;kzv{r?oWi z??Vuwy;z@?xm4nvc+*5&E2+&`v3tEDC}P1zOyh817zNI1k>;UTGUNZ$Gk!0bf@6qmI#`TJujfcfk=~shrj4aCqN}tyq=`5b`^m*Sn(~z+1Xmx`X z!R~e~cUrA0pRo3AK2T-YX0s519iz2_bj)FATHCFJ@Z<7r)YLEF(ju1t#?r4mC(;+z zZE%;kM?)}lzJ%Mf&{}}B_4{N<<18``_@QsSbM5B)4#O!AzOSp%>+W0{L@JR(TIk=- zY#N;K3Q2S#t8CC)f~y=@b*gO-M+g_K{W;$+sAf^{$kQ6k(FMiL&Ha!RZ8Pj)s(;gD z`q&{{x?#yFW0Tb?>i%HQb2F-)->Qw^&G8ydxZBbs>Zc<2mj=eLDNUePJ6Fj~p?o=b z<}vU%pA&~RvB4W{Bp>v$$HPx}J*RQ$KYlFGWFiXEKGSQ)kJ zg}Nc9Wd6Nwxm;!j`l#IMcB6@CoSGkNobPToAL~d0VI$EP^7*-xvnC<+Jk*t50#~d&HFn|fyq~G zdU|GVX1@BTdD{zpTvVCq?HmLJ+lg6K>en!P%vTFI2;RMdo@(h5VPcJHFIu~4Se4e3 zHhE}k$R&r{(#Qe|Oc{QUx|YUY=B*A^U(p1WL(;ZskHEmQVPWx$*~O&BfcYu;PRB{Q z8rHzYeuoy8C{p6GuK>D3vX8Qb>I~PoxTO0?wPEk&tdF+wL`kuW;hutgU*R%^ ze<9Hx5UO(67A*viOBRz^zlj!oUf%F=XY>ZqaJ>_8wd^AolN(d}owKJ#73n|J-34z* zD;nPh91|9YB5~kJWP^RzqIBMlNpHB10=0y}1@gLNb)KH>4=^YG)ojFWV9`BYFefx* z^+B^ID|2-|y+H&nN!-DqD+l3{3(;_WFW!Uw^^k5{0&C;vzJaNw16tLMYkG~uMwOCn z-bK)s3(D7#SD187hSBQRpD@=`VgJU)5xI&(u~r>+t0BDN^nB8btw`yr(lB|2LhX36+OG{wzDDJtkhER5(9!3IwlXa%R6cW zTujURW8c~}7ul(dvxjHVq*f<;tlOMqvDw5*V(=0uAd@q9hBcF*&k~MJ$3eX3g#&XO`N=j^|KMzez z9=`wMIaW3J=*>SiG&F43#7@E~O$sd5Oe!vhtN_zjW*Fr%#7e>wVw9o zbh=i*ZzzFHu_7q^TsaTmFav7#8z|lm26RfZneVknJ`q3Fhe$o^6%NTaA(^CrgUe7ZilWx5;T;J#F@(^WHw0mr@GBZupn|98 zNxAj`1?jN8y840W%{{xxu%_#CdfC<%F%!1yk9@BweTfvdN=t#?!~5XGg<5`v13`)> z&KeuL$-+T!W-OQJ?s_fIP6lCA`Q3ln_SQ8zMf6ycm#+wTIO385XgO$j+tm@(BNj{& z5(pSotw=1Sf|{_M!5$KM@^HLsk++Ny)*hc?39vwJ%exSn{Qv>xk@?OI7ybDk1((oy zUD)>8ac=cmtrm086_@V6VTnV>#QXS>!+h$tv91}u+}T2dEcz5sOuYWwaKH}-5XVrM zKUWF(00TE$b&{uaK^K!37wWMmZ9gY_y$M33X&9Ycm5*lMEr|$H)i@Lj=~8shNs@Jf z!MB!`rIpUZ{Z2420~~;=~3Gz5E_H>USs5` zeuvu1);=dR02r5xO`o9P+c8icLiC(+hfk%zhc|UbE`j!OPaXNDKB%aD;PC_pdB6d8 ztW!TemPy_+{p`VFJSk1JCXCX`gQW@pam7IS~8g7;MbFmRHogw!{mrGWg^Jg4Ud zYd=t%{l|f)wL+9G0B+Q<4|!da5`6?0L!sZDu@_d0$`}8+?=RSIJ{I6!F(>UyC18#R z!Z3vU*yhZN=wkWdkS!1vH>;PElG5~cxMn23Ab?i^8UBz>@%07N>^KCu*gdk~-UmCp z%rgIunJ#Le=jm*|W8$r0HIHS*Prh>;UtYA6KzO@32fb?lG|S6K998`6t+Dzfz(qW^ zdCKy@<1R6LwV8$()t-oFhF`H%V{FZoe&{aQZx9zaErc)eIZ>j&7ut6>;=qfC1ifp} z)a~yUv)xZs%V521`SecLWq$H19^mH%pfWuClUijbyNhuZWc6S)EA$@nJ{a`lwH#2? zclY`RJ{d`|b*1J-c3T(2=}RZqWY7qVodK`lS#^>kxxqT8!ESV*)v8XNO0GVT&oSmu zhKx3ty_iyC{dpb<*uAqRxP)}Oz3tH7b~jXdM111}y^Y^$a50XlhEE{v!{K(RIhji1^Ycv0TD+Kc!sk1`SQ(qHd}< zuHA}pT#DU*uIEfFcP8`l@_-bN9kXZ1K{M)4t>;-jG6xd?mq9+J@EXb$^p9htMfG`8 z{KWVWn~a0$bWkBbx~83}(x6+@#cQwZr68|Sc1#1gepiHO?#Kg{_f_hTKQheey2LUG zR>)GR*Y^E#6EkPFvo-kQ5)){&)a+lUdE<1fAcICGv1Fbn-G$M`YK-trP|yd9JJ}y2 z#pu4x)h24p{&dI=sxJm{K7_Iw6o$-ZR2|RT_v~dTVv&vga&{Z`;88dMRn?yCW9&oz zpsQD~ZWh?uB?%lqW#4y}*6$T$Ay;CG31$eVvS17!C@5kO)7I&G5N**Ov5Hwdw^10k z{khj^U%l6^d5jdpnB~j^{)};$tJD@9BT>S2ALBmdu<$sE2U;`7g_h*nh;A?JxxDa zYD;&ZXUNdst|3dZkt#J8Ql?dU#1Y+PIr!*=-}e5K)&4}r?CiNvGnE#79j_}}g%m(# zLQY8LgrkfGm^{v8T~fc6>0$L4z=C-mZwN38{itKHtr@#@T4_<9Fp#S`*8j|%t}v`L z$Bf%nGY)5=WA9L#DNHR{xZ?ezOlA2W;bv53tQvd%EIa!n zB4Bm1__!puCzpn0g@%f?EHyR@7lJTcpRTXXZKXR{CLJxz!izFjDsYqc)!iBIFYXY1 zkU})r^>9kyw^rIszFL<41@O^iEV>^XhSWEh9d5A_wbpaz<(4~$U6&gKje4H4c{>08)0pq8OL>LS#&S9=gYfK)ud=!5v%Mb4fST}$R24Yv=*&wg#r z{YxfM5k?6Qj5ra)c=o+?%yTwCH$dt|+TT zvC6-CWCZ8no?_%VYoPKXC0LY_C?K@`#3WwD?j5Uh??z*Coq8+b%Fk5{jmLZVWD9dc zGFAeVWn(rLeBbKDgJQ&E>l)xP<&*2<#A#`4Ld&67IRa|qeSI-bN9&%}m2XEBpa(OU zv!0ULM02!mY7uBT%%1jE3HH31a#W^Lw3%cp#g$teD^ zyhx|D;WvaK2G>d1mNKC@ zcVl8&n{-&g@$O0LS?ZIHrOJt4FNwgm;N#0sQf7T?^1{D_DN<*f{D$CG{MXtOKrI<_ zfkmOy1S`p}&F_{KLXwX&au|iKo<6pI>5B6iz=}mIu3$)Y)hZSV1kSvc6v!N*GbV5& z{z}GyV8=D?R-Ygj?&rVxs=7*@uYUi@3f(*wS`W|xqGa|(sPU4B26*CC{iuZ9T6$7n zjK^z^fk!J}?su0?`fP~)Wy)T?p z4&dGJm2_eU9o89z*M&KzS{+Z>mm+@lI$6G1XNjd#>VK2T+}{9VM;%3*RPCq%+c-mm zw(i&0o_3kcJy6$9VpMoNvz_Ld##hqW5%K-?CEn?>`THhq31bCPs-FSLT!ruIzID$w z61KX=p_n>-l`($TA*9VvDzy5_0e5(K zLXjyDWI1;~ZjAz8VBdo<_vM*lGCZ zNDd9Fa#%~{wBOLgRd#ficm}BnmL#m?n6^3K4H9{bXpe>|bsan?{@AumhMQ$?BqewpalXN0*6S_X2GTXvHLiOyi^E)-L6#bOMr|5WaV?RJU(+Na zJ&wC9oV=R(nz`58qOFc5_N?0!%2%U%tD^=>8J~pOsRSx2f8k;=&-H%sX^GEq)!C{* zu9k28J|d;lo+3cR7bMnyz-1U^AA-%={%f zYpMq}EhluGX7u=pT$(agY6Md%@@n)t6udAeRvnne$6t2F^gOl;hR%;M)r?)eL{HiM6U?CLL)r2ylFRU za%)X)EGIzYQQ*ApJS*!T5BjpoZQMy3vP2|=-?p$v1N)_&V^MrFDQih>*^Qmes{kB= zA4}$>##yKAuK!FEMu_pzKjF=df7ZH#R59&6l+-D#m={c*x?f{9bH1OmY_|#R*`Cl+ z)xL#XF%Wa8u1@DQ`1V{oU!dZ}qcA5Z4UE3<>h-v-BhF6K(I!cqG6{(kCMoZUtY)(# zuI4n$tFAx7GDN;0jNnLe2HBgq9i&Un5|`U~bR`{M$x<7@ofuw)_e35@JAfvqI^(3D|Tg(`PLZIU%R^Piq_eJ2 zo4Q$nOr^M^%{9$04J4Db&U;Um^r`nfkv|Hpn>_GOxJ4@DKy;^EmNTVv|BZX1YheAAJZ)^Wv&nj-bDNFP0lr_2R;nWp1pi4HKdnZj6RYmm#k?W2LPM4A+r4Ksg{8Rq|}u6P&uAW=|}7SCrPZZV07Bgv*@wmhM%Igb^zyZgLW5yw0c6%)c2o~%EIsV;b~ z7VNdqTKXJ~X3BT297I(&Aic}K6;2!@;(Z;zszA*4rw-mA!*9U_7C*Y>c2A{-L4>O< zMs6Q0{XDAz5p!E^oNxMQIl1GNEM0ulCd%$mPXc;bo`9T6-!OQ_ZMDJI&gc!;_^znBu5;!c=+ff*7KR*c@Xa;p6-h&tzi2 zZ2N<-l%_mih>tbY;615WQ}D@=mvWxh_U7JH5map9t>l4RXQvNbrSUp;zbh$J2XtL_ zSTm`0_|A;QxqZ!i`;}o6C;6pQ1_;b3rR6ZY&|;mLQK|m6wkNc_DQA_jTbx_`j?_4! zwnj^FhxEvM@oS;=uxG$c0Q1z9iCUmyzS}?dNv6zgPgmqCdMWH3mt_FadY?y!pzb+;-}fWnXp{ zYDTU&T#H4TEkeda#I$S_VsL{~r0kA4U_flBUMiZgU%Yo4n<7^X%o=I#S@XIp-5#-ucqOk&y^ zGeUNv(>_x%bDks^z`mJ{Z5pQF(K4GP#gTk*kE+Tx-N_l2H)neb>0#4N^!H&kp;sPb zf%yz<1VP}|48y^ErjI)!&P~Bix|z;lqdFb=2$P7y$QO$* zt~j!e&~6c)1PACi{7jZmsMc9A+9Q$=Zsk|;$J?ydVa&B|(6oGDr47btkcjEqWT#-2YhD$AAuZr2kveTj&lJIU*z`gL(K zL+dSJ*{o~SyY>|CEsPaJc;pBSnqDkJCGJr~5GI#@2F&&hhRKDD>or%##AY|eZbzTJH7@i>U}2T4hJT5oR3^`W3%WMKd!REa zP+5@pX|OcngKd9Zi5q&882V?F0&8 zbgkW6QpnVH%0-H%=}umY6t&^HQriF<8Sh6;7fVHwZsljXv`^FLzm>ixSzz|LTEecV z?1n+$^arZD?L&8LYNvHkt7n_Dxzo_&-R>d%oRxK=*!RAi!zD@LomE|TQUou4LVV74 zvWP@Ur59C>X@6mJ6C;7A_;m?v)U7ezYh*Z%FAG<$+!3-nG!piS?iep?*E2T&t*^VP z^mi;BCOiCz)hHPuJFg-Aqt~TJ>y)QPYDZ(woqSiFG<){k6ZQ05C4x+Es5L~Bmt>J6 z8(7bh&IbYgdY4+5VZ?4Lw_yvkCSFUWTP=8_?h_&!wTZL6J`XNPX+8N#>h3dq$D|@q zx>NUZlDKmn*5&7s&el64pJnSp01+1yL^j|xBA4x8`1q7?7ibLB`wr){zRPZw0g5Pu zQo8Z-@X2`TY_sXqRAPA4ukc?)wrQRb=6GuYWDp_X;k2PrN45LnGb7dV z@H@MbjMc;d|1lT@7|dxNX)E{4Xk*v{nDNItp#8ti(f=2o8G#WY0K-t!r3JCP&~DPVpcvT|8SJ-b<+icB$ebxGOot&c2=Ce$KIRnFZoz)=C!ig}%U(Gh*Tn-~ z^SzlK^(fAzhQ&|8EfX@1I5vn&19_YnyeC~jsHQjWno|=&clv_c!c=0qpwuf&Vs1`b z=ySBwZmrkm#)}G6_@PmDVYW;oU>w|Wuv&1)iYC`76dS%gdy)|B%)FhX!nrhFF4BBC zL$4a)KzNJFaWMQJ|oMRbvW&c4AnNVi(xJFG{KGwN=<@lQ`bQCvvc8VMDw-aVHTe4H=e)K=UjRh{pn z;WR>`NeB(%Fknw)7|!|pZ5#wBqmq3JZy1+>bko#;q~jiAQOUK9cgdP!6<2n1fDbfU z5%Zu*QJ7BNd1Xt|;S4U)b*_ZmYw0pjY`*B$-b7h-MUL`4B{t&M2N7Rd=^@oS&bdA?4+5m%S`z6cGdE$k+DR{m!-HVdw0*vg{Zl zHzI!Ll(Lo`w1&KV(#~Htn=RMCWmX{o*%l{XGd3=A^y?JAD3&{*8#Kar(4mb-;F?6Xu6_y6yT#(gnB!iw6Z!$O zT1!8$ygudB*LSW2#ka}lANZ#}JxU9MKfFs6lW;pG^rUu2m zib@M74kDokloTlz)YskmQyN6PQH<7M=H!LIN}Z!(HtRP;JoRAc>nRAt?(KzhY_)5h z!}pGUn<8h>WCxpKTo(6Uc4Pu(#Nta{dRx#Reiw`pGGqv||%WU(ja<#~s2#W-_iHzIT6srcgfSA&}7*@Vy z){p&eHF!onDdezH=q`(>pDWn0PX&u4I+NvQYE68SBI ztpq~exD=T(NAjNn=6x@X{E3%FR*J=*)yK}Ci6tZ%*{$IMXQVh;eFw(%emc(a1wH~5@e<77}Xxk1E6ELAU|_d^w3Ns@lC1Bp>K5wQpi zJggS^Az;2b76a%T!y^M^k3i)82O?JR6jyWyUpxx)p+?UP;5Lei@S@c%7Sm{ouVTH% zEaC=A;kK}cpmhG>__<0r%5rPgo1g}{w2C*(|LN-CwYou-j4>bQj%%oObCLby_OaV* z#Hi~V{J~6-+w-+F_S{&Y8COxXJ3_E>kEM$Z)(kqE6*gGvYFn+0X z-|S%38SkGZ!^d61vBB}vlW2Y;7+;-H)praO*e?=Nxx^H!Od;ExhP;zo*69Nu@6ZN7 zgf9!P_~5~{20#;^8V6;CXN&0Et%G9ugD##Gfm}F7IZQWK% zw<;0jmjqpGqo6nAS0;sls^qB)VR+Re`wAkcSIItx`I=~QW2~a@*g4}Y1pqrtD&1I9 zbH=Nx6-l%1sb5x^F{;&PgYxIbX*`0ySfOaK*W1V;28K3ACu3DjmCrVXK|cwy;Nd_qpiAn7qHEjBwho8IYpbR4~f z605y_F?=8fnY;2SGm-R zXfp@6tOGI)Rh728Y_%Z8JhP&_beiPO^_?pCR0yehgn(<*a+i7s3~_5mw_op9N`&&7 z8JlIJ`bfop9%D>6l#_Vc+m?7y@;&te8Ubq~sSgAX<~{|VfUij!zF?xUW7HX$ViX$jK8pPid!SpN2UN~gkYJ8n;@92V zxA-o!G&$fJW`49PVrH;;es&*4U2)L1?f-vDbaSKEvHo-?ZfRQKN{=O=8wGUNTYrb&#y-S{x&*YLE!CLZP|B&SC zC!9mr2k7LQL6{<8R$e};fnXkkwYI7r`b~<&i_WDo%6`r(WRIA>Xa*rq4bB$_d~Xmh2=7S3}8HlgVq8gb0q0>4??I`R#$Q;fl@}2oXC|Q2aN$HJ#6~-Dr_P}E5Gs$~@gI-{j1t6Q~LT*H3YG3wjZJJ9o^_^H8(=!RVA;Gz?g{emlOFHi(AS%dVZ$Xn- zB2CcMl@}!VMPz!rls6C(F6~(c_%Ti!)tPll3~ie>6wE>eAhX~F%^YU?HroJBOI#`9 zHCzr0zefyLO$iR!B@X+Ja`$JvRc#N=Fq3H!Hd8#d=bXn{gtI#bnb_MY#IO%k0 zSnx9IxJGZV=;?4hI#3l+anH{1C=5*vT9RLbb3ALpf(E&G()C4U-3pkH|c zr5K^gf8Jo|${4M(XGhz)+5^@#uZDbn>@jWon?+B+laIMeu|OrxL1o}x{~w~Zww~CR zntM=^QWh-~cGhsS)8#xWr6I$bu@#+UwQ}9vbEQ20Bt~|MEV-tg0xTn=WC8tj=T(-nF&d$_jJ7poLkZhjPHQ)H zX!8_gst&9xAjrEYG3ffBn)fdeby?mhQo||PkX$t&C_Q!{Fwm(rmof*|6avHDr`6;|m5V zm*CH_s-FTSIF)6NFZ_)ow=@RguEO>bAXNrN@E{G%3`AQ99D#wlB*occ2+K4-WqciQa?Ge+C}8|#P?Of% zKu}(*crVtEh#x|IN!a3zHkk8bET*z$b1NPN18z5W$kb)nP~d&%BDhQdR~DZLBqYTI5tw2=q-+yV= zsZJH+w9XYmDb}dhE9U9a;!mR9fhn^%_KF1Q^X9r08v(=Qg$h2-cwHxs?DQ8Ip6 z;zZhZ= z;UI(x#vd!*O?N^{$q?Il<`Z3%$@tX; zs^<#&`*T_o9=@MToYeb(UE>xuT9CNV8iFB@WUSm(5iD8kbp9hKnANU~u{KU?Yr9t~ z{l8=?Hy-b((w^5+EFoWiLR++6voH;;ZeU>PkCt=l?VuRWX@e+-C(Sqj&a)JnHeC@3C-Y<}GP{#f4jyO$ z^=RPlA`j~h&3`&t^{^SDD0Ueh-)4H$!$!>Oa*wS6$kBxfyib2>Nbv|66xpK5%&+Q} zMAdz|Q`yxY(A>uk#$zD{LEzogZ6{0Rd_Q$&*9O4NZZh2HS?jpN{9#yX+-NvA9Fb?J zxj;N1VsWcn<8w7^-V}8}w~Dwq87~w;`Ozxr8F%itNJFR$L{|pOnWM!jb&cjY-65nz z&bgv+NlXdkf?X4x;wNBRvQXiGPln*mTYUjIDM9#9u<|cBZ{&(qrG34x*nKW>u)a&Wq_4o@cjQl=Z>g_e zZy+tX>*DdT;CSV{NE8uG-7nZuYK;VPnTQpnLqHELhhj@Y-;%oxpf~Mqg~`FUPLFz8hEg zWnMxtn?pkYLpR>2xiBmI@!oJ4+U5`Du2ZDZADrpvgVi#<>zwUgq~EfrT*DL3T1R`u ziqFML+Pg1$Hn?I(HKp~mXxa+IkB?ydv@M?P)?TS4oci*dl07<<%wdHif;7=?-VCQVu9g6Ud19qb>v0MdR5eoftja?^B4n1t5*ES=9C|i-K zL61fO67m^~M{Wta#6m7W;p1c=Fn-##Ke~WyfyLeGU|&aEN;HE%^R()a#)5 zxY9Rc80hy_>O=40-c>eJ(;@*d4X(64rn;~BIgOSmo-KAzm`J-BltwEU@ekz`1d=lV z#Rt5DSq-CN{mt#RZZ;TmisIxqXbVX7`WRm_k58 zN2#f7SLG$95xI>_%UxM9rB&`p0hq$Yh>erky>AC_)2UhmyoFM@TJ9b0KF$koSn66VMyY^yj3F%<3wL6gr>vJImvG=iY@T2Hl@Y0QpA9F*-yz`dk^d)_Zr;f1_i|JKeno2h( z7Q?E0EPF*(ACGB3nRD`Nx#s(xX*?f%x5TgjRY@ zZQ2}28K_>adglgxdq>*D9kdI@)t8^v9wx*8Wcz$&2}rdojQ8xZ=N;rQb`;N2aykRa4;&cYExj#cV8|#y+uTb5EofV3(0t%P zLsZyvLRyYe6t9e7;bTK#9n?f{N`rg`MGSOLbaY_4V-(sFIFp*5UnA=A<%8{PLZ1^< zCyU%2d#S(Ym9*S3T>Wf&!njDgLAwkESN>;zVkw~P%DNID0_Srpwf{^cA*FVTO7-l5 z+<{$}IX)8X_b#@UBu0ql4{WsNVBhg&pRZne#LyiquCy1;9OJl9dljkSr*{7*I8BSN z5)S^ifg?BW0z6jo%3eE2GA`#gYd$!~Ltx>L;Mw^pt)kcRhKBDP$|JY z=uyoxxTUAbv^Ut>b=!1FMe3s~AYg1tOrBTC|CSeRl%vC*kD4&mnMv$jc+h<`AB|Q+ zGAHiU0G{2s-co?Go>&w?dXCRWZEaDxK7cEJ7AbON?Fu)leabd@j%Ti!jye31*7WL` z!?}}=r~`*>F{Qc4u6cytx9p$gy~`E1VZVAzwu0Kd;AeTqBRLT#RnT)DiHBIwp#DvV zLV>A#(!|zRs0@7cGHovOTG>fzE*;y1$~GsYB$QKT<24>|=@!XJ#A*B?>M_`fQl%mR zg0(%C*6_22wl^VrJQVI1r1#B_buw6D5JqKc0!K8(C7jxox7Ap@Q%m#(_cHZ`cz3o- zDzz%CDS2%)xoqRlde`zvgl>NZ5*HZm#>Be;|<2PXLF+3a_b9dr;)y-irQv<+0Pm-sKH4R5A<(x*( zbf>GS$ao#zN5yY?#AUT7bQ4Z^)uAIB96Xax@HmGOx^;&zRb})d4c%)!_i7PnA&0}C-5AbG@uU5w*1J+6r3X-rV(W)=X0x( z7IFD@lWg5k9moXJAY*-mgi91^mzhm0FP=+{XVT8Z{46$Mh2e6q*?CF5imHd+)n0yH z1&}JH+>P8^tBi~x$oA`DkM1mG<3$yONGbHfnwG&>J$w`(F%M5D==5hxdbUbn3=VG3 z+r@D{H{;WzqQ6*xM!hoOXtMHZYbdI7T`H~FYy*=|_~DH<@KimEb|%{K?NW^3(*$u< zBKGf%B@PF=(Ee22wT}<)Y)g%19Dfy5TO?-`kIq|~(yATLs1w>Hqh1_gcrKvVP&LcZ zULReXVaGFJ*Q;}VYUGKdpsj8O%hnsYRQy9FA3I2oECQ3awyxK&??Z-#zs&7rG4N1; zjP)2tETA76)h)rP%;wi^6`9wVJc{&1YEzNP#|WJ=A^r8d(z^#wK%}x z;0D456dAXOob)^?T}KmL?Pkc*{qi*CrJxpc#3P!fhxX*CkKl^P5LJw6 z+i2Y?)0vbjZ&#WwJ(y)GW0Lt5zA!Hw!D)VQm$(w12tf2%KD{V$j~KI!$o$W5A|w(+ z-*bm`m(8_y8{XI`T_}3;)1g}k!HZuh)bQ1as8k;2d=PkI(DpOxiXzsMb^k0!G5O7Q zxb0NTO~if;)cm&d@verSpZX*^E+oD^wI7x&CFNXes!&+?;V!_G&n7V)bWhCVi3~Z{ z$>^7{@TWObjCTo!5D9fLC(xXdm$xWw=X{1nk=sIU!~2uxnIwOZh1D;RCZp zp$q~&+7^k~bi#@1JtoHLAFmb`JP3RSa)!-ZEvF;oK=&RR#SIysjff=|_hqp=25z}? zL&R)H-4!z%cyU|3Ra2~^Vk|yxTT5F35vn0+WIt^7{J@s*_#UIE7AbgSK5|P>x;|LC zWV=Qd;^MZ_(VA|;%QQ2%EfX5D_d2goGUc9i+-+~GM|;0NutBhCXC#kGvq$-RBL2eX z!ULVD+L3Y*J-*`r&^$=)HNub?fUl9%b{L2r$Xl0AKP#X1H#lC} z0V#*rx?>~TdyvAnW`bl4qGqdOn^V+5uM;sBgbLInim2ZLBD8@0!>6YtO`sLLY;rlX z7<$)t%&Q91>Y#<{2aJvW#H2_OsRLWsVY}2Zu{(t4t!5)AW-{&hprw$^OF6Y;=?1IR zg>EU1?{F<-&-<_i9Y-5&FqwekIr;8TMwnE>)O{3iw9`eVk5{rqx);={wLzsv$Pjt2 zfKQ3lJIRXY&Mmc|%46}-MRnV|pi|7ES}DOOzgs`p{`sUVgGsESf;6 zRb%q-)scQTO2)a`Aj#v4rz-t5*ByFlhprMOs`gh@h;#cD2D4AdU=AaqaecjGPX!OJ zVajMbDRk^o`M`lO(av!T7S`OA;+Lci;c)|HU9Io8rqWSo(Run79WK<>qqhTj{n9s8 zfxiw&uRPw?&oXMY&N9l&BoLz9EHjdt9zm9>e=9-)>(osokqRNLM0z=hRP3(%4odx_lxINHCQS$o9WO5KIkG=U|p-4##cMlfnc=InuWR?nw} zvFnr(VO-mR6J6|7K2>~l5Bu4{wygF!lyBJyg+rlA%dC2WikJ-_az@SwYp80r(Qw&` z_0mLTKj(rzuT(r?-WyAof+=GuO`R*&!7SltHE)t?Z?X5aI*A|FQA){IA`_D3A-CO3 zFy;phTWXE8sfs?#0z($5*zoL#`P!RCETsB~eo8g9d+RdJZ$TYIov(NA_L6&mh(uFr zMh8#TUbGSUW!hWFI_$xY;!l90ZS_&H6Ik&U|9Jvx47XXnhz##?cowfMg+bcI*1Y<= zPea>Al+yX(Ea!qlEVsJ_AGat?|;xi>-s0;g60s)DNqI6F8PK5bEq11INSF$`k0i|dbO4y;uz9c`ngpw-s z`C4G^q_fjQcTkQQnFoMtL$Wa#s_9L$IU2;(}~Z z-cD#u2x>e_>Ga?=z@&29>czexkaQk8JUW=vEOJn`yDzvCxK?5kH241Yy}s&~7RKXP z-Y6@)~snkRs9{F+K&#PJ0w^6^Lv3613LrWd6vZsP?bo8md&K14j zON?uxUf+-KgJ{O7^He+Gj;1d#d;pSc%>}AiVPb2_ zrhs21xtqS<+Nt*d7}uK2QWgVJ6XpwUt9|9~K8=44DsFF&X|pP`xycoM?<|^OcAOL- zKml6XFWT|t0!tsLNqeTD)n57KYSG-Zp-Jfn?Xm}JRV@WWwjUgvG~Zl5OOUbjv81|k zH8~-UOE*OBCfPN?#_Qw3bc`m_qWUyhHW?wGE6YWHT?S73;_IDk`6myuY$naT1?%+Q z+_j9aFYxPP5q9gcejD?UCfGwC2( zk}0r*`f+2oYj=(NgKM5XwPKO%IAu&zD5+jJ+L^Yia38JCbl&d{-4v+Sc(KAz5^h;U z0BGixEaKn!5)e8Ky-R#kl;$XRZ)9u&`_%7|(R{+D$tbGyRpQU@cq$LaxIxM8SYGOk zBMaSLYHh$0dCo2hlADLBN(~&FlFyS{oGSz1v+_CHWduZ-Od` z1fehVoidFGZu;^3XNNAlF-0_dI<;JC(mLZed}m*yP~j2cN%!f#5ZiLf1rQ_WO-TlD zBnLJ7qL)vL-l;Q_!Qpy%@KWgXaE%3{H8#C=myO<^cv-*`t9mf?UXA^NiY-EeWl2Wh z{D)8dfU5wn5ztC8+?9n0^q8H`vBQBnSyiP>on7~WaBRIFj8}s}QU(ypP$#SZqdxw{ z&Ph!LX0rJ>t-}HzR2lTR=$E*a=14lQ*+j%ckS!B0>Fy`-@aV$brGmj)&Ae6a1%$k8 zx1cH}?)$r%MQDqC^l?*#-9bZSqeE}OiOk#FO0dG&z(Q{M}#v1JIl+ z1NR-4pWeaW17*Dh!x4SI$;ZGSKL7w@`0?Xs*WUpHLGil>dWC4PjrtRh?dxfI@ow*- z&aK!hhj=?c^6^T=pTy!QwTE&?a2&t)FW~`rQ#*7#Z8_lW}bKGfSB@ zS++Rv^lR$SCt82KQZaBV*KnH9DKVQ8P(t3$c5e}7v-BbDJ;}d}_5+EuPejd=PY@VJ%sB-!OJPD$CszlQqvxK-MffFaQ@@w)~ za$Up_yfimy9E)-pdR^3~#0IL9!S@RX-;t>_;_!|wAM}GHKTN#$`OWJV(*=~D#leS{ zB>vI4{uL#z_qbbPVrqf>1S zuf|F2eRs2el1>B`jy7}zuq#sEzl~#|2{aR?Uct)P7I9uv*1q$T_)O;mZt$B2g9guN zPZi!%6}J8FaVO*3GT1bl9h9AGNud+IAj8+O8!1wMBy)s6MJ}MD6bdEwBbrzb)JOPj$$6K2)bNrh5jooT= z_3wGQ#D!xNoMQEIQK_$w0*5#SQ~6FIKWIhKeWlkpSG6g{Z)PW9_o+gvFipP2EqT?8 z+{T~+4Fhsnb^Ik`PD!TEF3J6-3=4gQKN#0J_c(;UHYKOa6tE^e7>Rf$W`NuD%4+?9 ztmStVy!}_-!4$d9d+>OAirTsv8Xf&7Gc9|Mx&H2~>iV9Xrme-4!diL?0YFA|0uuMn z;EyB{_G^{*7{Fn-$KqsuoC^4(I;GA>p|i^FdNh7|A&wlDRy-x|W*`%C~$ z3=!zBaZr}QCfz8INqzql*kV6M9nJsBL_PI}&)sI9rB~CIvQmN!l4TBsl7`;Yr|hGE znCIDa>BNvj=TalSxzH`XmUu~urm<3Tb_pEWLDmBu7C(F7icf0W<=wHEjvF*y_=bIm zo!~t4o3ZTvT|W&ZA`GC;X|w{Bk7Vi?K97DNPrU~Y=K_-~hc=+U?vLiBJwMe~p}hF! z>V6*lu|zV7>Jr%vWinXpp-(qdqB)-a<&n2w^Ya$_IG3Dp&}p6mI(NJt8w-Lb1r;~o z5hM{>r%*oJ1j(BFo0O`Lw?VQ;_mbLuy*i0^e2LR8jNsSZ@L|NY&be&D!Px%aj28p< zQtqpUzn{Y1@h3by7_?d9zX|G$4V=V?{q}K`JRv-3e<^wJqlwsa#jFS^t&;nCgUmHF zgja&|MoM*9WQso)_?elxoYL~`5($~w>t*u^6ey!Z&1e+(M~FKurYjz=U?Iyqz2Duy zoZn{H9Y%vp@MBVV+_a=1!y-D3Kq6Wh)7MPO_!U*~83{C&DPZ#$nOwZXwJ6k5W^*@| zzQSLo>O!naQCE5;7ml?ftumtN58l;RR^Xh1f#b8}jx4~G2>0^egqG9 z&*s4iJAHy$;;9l!VZrYdfTuwfOUYYXqOys}Z}W8kmNEu44>R+jE^}(L(O1(!CA*oF zZ_+D(un4i9d1>PfcA<#VG+ob~yJy#}Mr#grEMsb(ohup+YB#vp%<%NLX(OA1Z>J?F zrah{(_YBbY9Os>n;c1je@EbI%BccECt?Ptj1c1Wp4b>k0LrVOD7EtePfHpCX4IMN> z8%IkO<@0d@&v?#z-R7Hr|MGXiJoqE3$mXV^JBwgo%REjdCdbEW2_kL21{I&snOEFj ziOo}8eh=hyY5k7H)9D#|7o>r#-X&7jJLsr6~2Qb;vZL5|tas-}CT-Tq~_qnDoTdC*` zd&%^HT;(9!Tvhn%$EDbVMXKMsa0UODwEE#$3dv;o;{f8MQF4K=^Nu+_DMLOo(v7+( zvOR^AD`0d&uLKtUP-uXed?C>W(1TS{W_XI+K&YSLE0e!#3OToELnNnXKf<;{S`a@< zmZK`xZUaby4o&kf0q!T1+`^E|(;iuC=4v1)sIdaMPHS(>K8)@h-3?$QPZY{_f=xe) z-wSpRroOw-8%v9@F`&;Ii>t6AC{3C@!jhjZP?umaf`_( zHH!1BK;^c~A5^{Z4>Egj=SC*qAKS2m?u8U}SQ24BXPuR%`rBGld^!ty-A!=ZQ}gSz zQJ^QAY%B@8SM3^}2gD0_DR&UXEai8&ayBu6+aHVIt;hw$Z`FJzs0+n|(+_kerBdI2 z1!Pnq)A6rnm91A`8>>uhdM$u8yWpQru&aM#JCep(lfdIIOKbSudYe5w?5^c8Fs+x& zYv^nmB}toXh#&N>J#=nA};IbMO-shkmccfU+m#VI(^bPbN zGcAkNZo%P3#>3DrHpx4Lv3iQ|11Goym*P*~NX z_TS{oW7iMv{>Xu?&qDixo$(fQPbiR7!XhQ zh_S=<%N)bm0bu2P;-}to%rh#l-*z8tOZEzM_D)uB+`;wn@`kAfovPXTU-+7QpNRNB zPD?eRzR=UPF-`UUB?J^FA=EGUXdiZ`Pu=*0&SB*-5v3d(60G($qZnO4Cu*rtZid{i zjr2NJ{RsNJR1iIa04;g90W0`z)CP3bQ&~UB*!zF?ADMQIJ+0lc8ejbNgEJ|Ie@;~e z>bEXo(V=*aXHR+DkdZZwFi79w;DYA`MB1mm#sMH?;TrXA9}Ie>yW?M<%ZW_LF&|*` zGsU?sIZ{eBf2~&}QI5W7klDv4e6eXqp`ZPJzkuro^_u^;(R*X|batJ5Bk64PDtFn; zfk}8fLTvsF93>i7dv!Ch<+g#+Jz$u068X!_DjpuSK}LjFd4&+Yz#{!iX^z_weFnZ{ zkR@q+i&GZrUqt1y?TfPYxW<%wq8#5MEda6fF1u-HCd*7Uc)xFjuTIL)a`!DD%n+Ra zp(ykCFFTwpTaIiw*^4l9N#8#mOu*yi*`AKn8?lXbkSu+^$8-J`jz{t6>eZ)jeSPJ& z(EK-n6E#3ff)*q1USj8^vsgLPcEu8Bc{*24 zSY_5PduLshSH{U7ghcz;#>!a+Qv6<*EfiN|&{u}C6gw5(YgxX7K`%7X%1?>E{o#g} z)jg+OvuNd9SFG^0mxK^RM()>KX>k2Ku%fODngK3dsfUd0EJAeS{;P2a$=A3ublrV9 zjh3gHmX@$w)Ee)d0Z8kHYMS_>R4fN4g@EveKlbg;e=uVCjNb1bcNHu=_%=TY%R{4I zFh6wsvu|#lpZ4c%#K*%B0vlbr-IV(sN~Lu`4@bZLR1Q2Nt0$-!&rcS7m=AyRl>g|o zKTo)?2QFHU?+X24r^men7$3j|@oWBkYV!THz)$}TodB1^tFW0;rwau9nHRWy(Ub`P z#}NCETS4#&=!5?wBn1~``*5pP$(Q>5KYsa-F`=IFFM{ZE^S=qAu@IDWeQM^AOmN+( z6aHs(Ptdt9BwyGySI@ma=g-Dw@J!(z;ra8_&v-AUy-)G=fBW9|i+28d3NH5deR`RG zXZ%866=Ob;N>oY2skn$#wML_kSXo=w;{+*+*;@W$0T#Tv=1x#%-rGrT??QrhyYYfZ z0K=*Q1Mwe{Y25gxo5B2#++JR0_-FoqhmEuK{MbXo<2gJjuf+s(X0Iq2Yz61@GvXyS&(&Frk)HLtA8g-xO!8r73i2*C_ z>0_oBaO3duyNshB{jYC?8wXo~JLHQgWFeMPSaO10WtnpyDMZ4sk1V=%>`*2Nn(k4`hWcH@2A;+1P0Y@vGh-L z5e%vh96i&n%HMte_n;(kOI2q6;orBYfm76tyV?DJzJo0V1o)=S|MkJxoWL%7)uk(V zN?rY5FY>~*LWLAN{o`{3#f$*c-l)3%T=svyf-nh~ZS{JBivPYP1AHOLs978z>~D?q zpMQG5knK-P{C=+&HBJTIh2+L@{ZAp4#;uB=uJ|9?)!)ymM}cYVPln%O`=77C$5F&i z=h9#O_buvR^^)3N{_l-If@@z=x;LrOBkkI z!84BR9$Y@{oc3Sq<%c^}HikZ&|Mx9fARMNK6g_Pu``?ps0z;Vickk3!!Cx<@aZ{^TdEBS@C@&=Yvg~MF8s$d{OZBlQoC6ACJfVTMq%N;-#qE{I6&2gZ5Meb$S$-?+hH!H4Vm=5|B&OoP0rs(d{aZp9neZ=D8#|LX<#2F8$?=MPl=Kf>NREXsCk zAC?dlBn(mkQIQUjkOmczknSNwy1QcpM3nB3RuCAvn?aCHX&6#KN>Nx00dd6P+7i@{r z;xqq_;vP{r@IPO$63M$NnP~#*}<+jp0ei(E^pMi z7ovS0S_fB?KVM7U7jWI)>D*SxM!#xV+9FmN}cx&@Xrz?d%iZ>`$@+DDJy zBdqx(gxfiuFKn3m@sYg6&P9Ba`dTNdWo+;;pf3&y;aU|VOH);|UqbLE&*y_^5z{DCc&0|#2_ z{hqhaZop&w!+9Z8MFlaaYx0nNgmpSY_anj>HG@RoVzj^^+EvwrmI(=80AG zzp2glKQG4x{{?Ksti8Ez)g@VlK&|TK+nngLJ+q;ZSCo7CBJLX&D@k!h8NW|7)(K}~ z1yUHZjWq_Bzfkkuwjo~@#2q2F0QVcG$>+-7eHnjlE_nA4kn6}~@oM)jW@p43yKgzK zn;*xk)3c0$G~z8={a$tY%c(>Sk`WyeT=CZWu#2QbL^n%=0%X3XzIm;LJ>GBP75}gf ze^~U}~qk2%Id*4;({*1aC-c9{_q1JShg~ zpZ=Ze{I4hV!NMJxQiJXB!Vmt)ho~t3X|62GWfyM4wC&&jG~~%bMqe<}_C{Dd$>ifK zFlpEN_5yG}ct?#Ee_`(b+9&zftI;OZQgv z*uGH>IOJKqtd0*5e$RQM){~sY6Fe#toFMGCefa-=k;6{RxcsHTaVp?30qmxjO;qe% z)9N`EqbXLq1I52wEA(m?No1m0I6RssG>G%YnW+jjAxQH9e|-4I68`bo{!tXQ%PCAT z(Xm@D80%@bxZ$f;88?^6uDe%#@L&ERcLq;9X^W!4&Lw{RIvAIgs!(NxD9>skiy@a$ zITd?i)l#hgj}vQnS?_#_S12|8hl>JxapMcxIIc}CW74WG)PV%!8Ab6|oSdB0b?}PH zrKZlg$oT1hVDmNj@h#o^&_M(xBZmTqTRh3=y{#IRQp_#&SaaS>_({MMU4Zbs{dZ>P z_Uo47S?`rkrtGGJ%}<3~mfx9}ne}iA>M@fYZCxhCW#s;~B6uE4e#oN{0AH4_BO&oe&$MJg;1@R*?jtaC}ITYInHfVuv_U_^xTd zx3_Ws+uPh%vN_Yyq?=oHu?eK*i}fe@aJn-2#7Mc=E+w;CNm(k82vTz8BIOUPq$z%p zq|=gNWv2hMfdAI@0Jr31?IK z{wN=kn{aP5Gu!^x{KdXf9`IN}mv^zz--3vLzsPka5s}UV+{HyoOI3+4?o`~52aN?v z;@jUN(heOAALG%?W@}t6ZpoLv%0o=6EuprEi?Rh3YB!`mIAd+kIe95iOsG*(&cZ`& zUCXmrV6bjy!S15iA6`T9^`*XK`184R`16}ZY?sehn0Mq&OrE|DOEa-lH{rHwD4QrELVDTh9rrpwaI^c<1iWv1am4ewM7PFFbNA!hgYNuA`?m~*ge{0`vpaqWj@}y8!BqP zl97v~V#&VE!axFcDJ$d<(}U7)}(%E-@=wiNT7l7dO;b&3T80rgYQQ%-oj1>@}Q~o@#CF z6Rq@iKk@alAd~Ko*zr5l@xyG9Z51Hwt=KuaADs8@tL3Vhb|ChdmTcw>o9A6Si=0$O z_UY=?$qcoMPc@rQ=B=h`pzvF=!k>K&bDX5}H7Y(=HW%hpHhm6PFVW1AyoxM!8LN@# z>M4Q8+9KS$lPmd(e7D|wa9U@glFx0}iK?%%7TQ{xEL-9=-uBtzP98&$M2d~dxNXfc zpQCoEPJFirrmC1rviCV{OX3L`YLzxOBazUa#Q8HNl&HY{X9R~^td2Ra(hQ6{i)YIn zx^qvD$d1-oDcBR-ElP^d5e%Cvu@r_~<69ywk$WpWA-V-_HFLMMDy?)f+n3j!mq*vt zbW<7-v-eke6URF8I~p9-3_Q&>rameSqH;7sf7s1hLhVjvG<|lf{4zv`cchARJ3`_O zyE~wmF%(QIx4N>aID7_yaZ@qoUVG%lp_AbE`A38N;WmQX`}&b}|5%gmCoc_4ZFsRu zT}@!>M4n%kv4)@ZIGUBAM4J^-ZRh^0VfiC*4%${w80ieUc&jQ&KTqJLF=ahN`WPe1 zZF7AvD}v?Dg9cM|-jNuQJW-fN(H%~%X65=B??iQ&cGi$*(QK)T__0Tw4aUA;JhI&K zTVt}G#}`j0cND^8_AT55X>VQWM>|@;t}o*1Fm0{^)gq$fAi+WhGJISii(jojT+3M; zQ$}>WAOtioEJYy9Z+?=reFelV z3x0%vI{48N!VC;z2$ShGDeO?9cT|b_|9D*d;1;#JhC_Hb17EP3Rxi!v_H!CyHuNDMXgFJsQVO3i2S2aL5Wlu=xO4wL4ty`4GJ-_8zrTmUS1| zOr*NwGpIjYvx-&~E>>?g+hE-Oq!d2NunZ)T+>Zu^OUwmFO3qJLC1`k#Ezu1!sH2#C z`=%wA=Swmqu|I#_qT$DAH1)q@49o^=E+l5&*LxlLGQjEpSuU+A%%x}#6-I`M@;epM z6F7{kq_FFD6W`5UJ)tG9&Wm_lo>@hKZ6eB*8^&T#wU8E(??m5Po{@gAMn{St*_#sX-+_b@*{ zwUObGY})O>P2O065EzB}qa7Zfrs^xsyH0}~|_tU*QcUl*{Ix?k<_LUj0 zQwTUBOQF;|8$woFiCn37cTMF)Qe)E7xh85F2FL6w-AW?86^r?1@HU*?(RK~%UMgS6 zz2U6^1h7|aPXdG2mozj4e<-FU?aT>Qv)csptOmM&mS2&h*yl%EoUHDh-mDYo>Pobcr$2(3k6TNY(!lLgC@tUqTL9PXS%$G=c*wPZ zOUAWsqPDdFEY+ngr1>AyfN^eT$_-~c@>IS5!W#nZg~Vq;{f@7nu8pM(nJ)EONF4c@ zyu)Nd;+qX0nOimM4Ct3?n+3@z8(@gr!khL>nn)=xW=|%9K9+w| z;E|11=Cscv`_H2=oi-!VfdGO)f`bI&0c)20eDg{x{CP~NZovg3-$&;?%QU)E(9PXl z?~0sfRj`wpW(q1XGlfn&)!z>^LyMnG~*_d}mHoxryT;mffU>~t`R zuv@~~h{INl1JJ@{I@Nf@c;}8DMjNg|>GP|sx+nnsq1H)0AcXu==m2oZQiqNfsyen{Hd;rFQvQ!rEoW`oXruL`1YdB|Mb94xoAxhW(z0 zDJ9R*^{xt2g=0_E+apoiO=?!mqeC##Jcpp^w@b4@^0(NuuB;(ni%#}GaLMuu-rgRc z$f6B8MK|r%7p$ChkW@uQ)H8%H-uTy9ampCNPPul_x*Y`oLh;}kx`9Ka6v*ho9lOVz zj8{Hv4-d^f0auZ})e*~~leb_`i^ndtR~MEYs$(*5{Rfl!v+d|d3Jx-j4R5|^=XR5l#$!wo zYsqtU^|&_e1m9*kgLJ+Z=Y2nM8gzzU&h>Sl$YBZy+aEl5;APmcPjI--D7L+mG&s>* z|MbMkv?_RJadA<%p|Fsnu0ozWn6Ss}5aGTZvyCR)^ey0NmD#sN=;v``g;B}qS=?*j z{YDBKjBX|->djktL=Bz&0R$DF8}Cr@i_I^NayMfPIuw(#p`U*=?tQv=Qa{+&7vl=G zi%aO|7SM;fwsuh&e521RXe(r(_-ZkKB1I@su|Xx`wv{0DBxB?>`S`nq5ZnphqFK5X{>b2~MS#PlXKJ02<4IF;9>>EtjZETR9 zr*TO+czV@un-9@^RQ#P==P+5pXXG$*woui-sw6jqfg7|?HynN<65xOwM6{WP`QvEl zLPvQZD}?68s?hhd`KuSEpbJss*=~Tl{0aJ~c9X^^*u+k`4leig3(4ibyP(3gWiU0?yKPs;x2=PY; zdnG(NUA$knb{xz`O7vD3Gq3eyj!v$SaX)-RvHRHbP^=_ zR#ZfDybz^kf8G}x*^^c?uQyprj5e5U*r3-8Cc4*``YPqqsm&>3zq050xbfl5k`SV+ z)MQI&V@keXKX&A@u7AQ7VlMbgW)hN wvSNOPk82VShbIp8dCJuPX-aKm8$I%KP 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 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/apply-resource-change-overview.png b/content/terraform-plugin-framework/v1.15.x/img/apply-resource-change-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..7b22b5d26091894a88470e253a31f97f9a508636 GIT binary patch literal 116391 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 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/configure-provider-detail.png b/content/terraform-plugin-framework/v1.15.x/img/configure-provider-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..d17fa9aeaa8999782fd6c56dd73dd751055e7b92 GIT binary patch literal 178677 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ϒZ0Qryr7MaY?}}xR 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%0D#oW<|``I2wvmlt} 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≪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%0A@x4(-*mnc{N| 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/get-provider-schema-detail.png b/content/terraform-plugin-framework/v1.15.x/img/get-provider-schema-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..1958583ea5a97450eb2f31ed8a39fedd7fcc8f3b GIT binary patch literal 267142 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
X{vHO(d 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%0A{n70<3C2Ww;H|i>5u3YmjQt*=;~R-Elv@&5<`9v zum}4YlFl~E_HpaLbyr3f`_HnDVA(wF_@f6;@evKv{QG)tvs>7yv;Qnc_CUdt7NM&} z4gL^}dnIy>VF*nq6{ukSTAv1+<{f*#V1G6~{2*T+6Jp%8B4c*R>OZoXh>8Ol&FEFc zN6bT8B$TfdwijtLG@aYD&*SG{J3(74*KI!I91$To`;pn!iGDII^W*;I-hEAhCX!T- zE5{Y3$VI9bNAGED*0vFo#U0x2b@4+xM57gajqVMl`L%nO`&#kEtM~wICk5AbvxXEE zyMt!tY8pPe4W?oh@IJ*obxn#_FBJ3{p-D<`Z-oRASsafY zjU}WRZKP+I`3ZB5`FWJzgj4XsVMqA!A|>(~eYi&D$0Wguq>LdUW!U7%1pKU+#_X$E{V-%d3u^E!0NOXP{^hf#oQ;OQ)zPmR<;UhYU49IjKBU!3Rl#o#J za?V}N>^IbwgpQQzsiyDigUJVu8~-oRRZ zceMcrU~$qHI`zaTh6n&N*B<7OVy|b6A zap#&p5qzJ5?fVfdcp&2h1&gxhv1r)XZq0q3=XlI7)rf^e1AY91tJ21MAjl-h=ob0% zAIe1#fK$t-D*&PwjeL3&kSsDs3lh|FbRbdSF8PZ3Q7{5h>r6Za14Bn7wOnMr7UWRJ zv1x&FlJi=MaNYw(;&p?7aS!oryxoIfgPzvt1R6n9famg9I5=Bd((ya(bdjd@a4rgcOyiiQzYKL@5Z7>iy86jKOP4d|$YR1>9h(c25$) z*A%t#7E%2)b-G`0NJ#$Hyy=8NAMs5~N*|w~JIQrKh z%&1bK=3pOLNWL4^b8d>%R8$i0%T`GT9`@fwa>AqEKIWB^lj|cR`d!w8VomsEK)(rc zEn6voB)b-`?jj;nQito=%vCi6n75)dN%?QRx`}uLkpPliEN+S5L;pw>p$P=A9D@Ie}DeI?pxS>i(l% zk?r8Xj0A|o?j?tqp$AIn*#Zr6ti~Z4jCzR1s=+%)W`F~Ek}<1z<4UvgqJ!0|5FEk~ zkj{aaoRZkyMEU~u7nI5E`QREsHlZAVmy0(58g-ZEnGZKUMP;#0Qv&OicC!VH8Dx+6 ziwqI@6ijx=GmnA%i~*2M!SY!AUl0g;9k4$u3f~YcX#tY^>c^>n#gy~RU^En|R|pC9 zkcgsk%lg}0)Ng7&vy`#pyH^?r0T{W-8>kdd-GE^lhzmj-R|K1RiDFWH#Tego!02w2 zkM3}KiQ3G~1aaa7WddGfE?YsrKFTZ13P=M$DjV*N(gd)XpJ?3<*PQtkj7~xqJ%HN_ zFn0s42?dSfn&)6bYk~>OZ@RCIC2Xun=GJYzzESKFnS(>P%VRicmXCm z59Ph_4+gtjv+giZ%eks04NQ!B24xgXJkQLbU4)>r;+0rn+`F38ALvrq z(f)@v$ZJ$jhiB7=N${x+tNM+I=0}T|UUd0EmLh1NKF(p9bpPZ? zIZu(x2r6b1QJiUfjfto;z(I+}hKf-=Wdk&FAF4S%6cg4i0Tf*@07Q`?B?edsj*gsw zrYcs*OrS%$%?uWuPjV-bo9kj_k7iM+D_LYvRXkbS-Jh~^>Je_S$7ViKe1Epy-pvoczkMI}F}5z7gA4mvM)M*>NT%>*s9yh)73yggTy! z^zeQDrU0(h&it#%*z*AI=rFZZ;)sgE1+C|&%CB^OHOom+%jO!BA5mw)!ll@vem|mT zDaFuQ*{`^_I0!r>h1T&1r?|u?`8E2UQ)ou5E6u{;+n{J(zA_))e$H>U`xd?HnRi$h zJs=W7^|Ag*sU?oR8OdqIPXx|*=-Q8NVAlQKM9Y4{B5gA#Ih zKJZQmBoGer4tBuCGotTw2zq|sEbHuwh`{Zw@*)Y|zKu+zdNa%Qn$3FwOW8*shahWGgn=cmlAB_jEbHx;tyj4{*<*28+j z-5XuECqWyw1<@J~cYTxQ*)uR~Bc@KCDPtKGI&7JKA3NQFwH^RH^poT)qr)L1vlQ z3&xty-9H_zL*$j6WBs5b4(0C8mPAURds69S2MkXtvH)WZ@(~dn-amrf8smFWPA@Vt zx8iBGpv7=~;O#b}ck|YXiw_2)F zT+~H=)Kn2`cxl;1!uA2MVGLc(AFo)XI3Jw$3x%$4IK}UM^! zig;*nJ9tRexCStvI-%|JkR zF;~H3TJ~f{pSI?6-3o@}Ami1-mH~(Iu7{g+Wu>IrXd>T9uvXb} zniVBiV|S&XIeL8|tLsbZMfkme6rw$tc4}bD1A*@ijDf;O--{ITm4Q7e<2}2wK2NRT zLOzl@Miq{OE;Y>-fmE`*btF^f3Y98Be-WOweA`v zC3KG0o<^plGg2OBzw{0|M+P}GU)>!}E;;{Quk#sYW!+4#AlIhg>F<%5Y8kiogsJb= z8NZz^ONHqwgJPN2uk3)2PXus?4uBGhH)zCaYOT6aBmae@sNXD&Oo8{jjgfDA2|F^H zE-br^9Zes?1MS1b3Qbi5up`kk}X3!NVNQn2f~o!*o{9$Wb>MUsPIkL z*>2$d3(uI0J4}=`8?|EFv8*&3zJdHj-OX_{%D>aQW$3ZI4l|QZP3m^~f&`_|719(| zk8>$EtzA&KXR7cY&pq47SNZr(A%jKRqn@=)~U}B3ECrT|MnRy#y z{#-p3H|y9_-o_}`j-B{QcQC`v(h(k~7&4w=BdjT4+-K+Xzywx5n#(oN)XNsPDY%XG!sU)v*&CPmJ^HJDLoHlF=y|x6Arjj@r_;k82wjA}tzgnNGjqQvh z=|?dlGt5*ucK6)J(y_OOCe1!L!S9(BUtjoAsLy5+Kg&NzcBea(duqRe9l+1s8p9W> z#d6iQ8NyHES^_Q7Tjr;Gv+1Ks+FeyQs!eJ55BuUu?B~tj(Bz%2sjKZ)GnMvm3-2Y_ zJ4$p{n4ggmnJEVhg_2|bVxdfF3ec_lNTwb%sJajX%@i%OPyU(1c5(5j>&R{cM%4?p zUZ?uvN%w?|pmtbgSk%esu2ao=kNkrAaX&Pp4hn+whxWK67s3-lL{Jb&0w z^_m%YONV(~WxMr_|Yd&SpB`oD)X_H|z?X3!oVB-$#X_9&RMBq-8d?A#^N1^ za_Tw+O?9fzlq7|rpToXSpFBebAmrCLu%=Z?tM0&>rjs!})w?PM-uXpI)8zv* zrqA~InxuYYub^H7#KH1sfnlHd!r`y+$@to!nf`4)f+j7_}PrXdiR1|irF zW?WfQ#JpQXL*I9a_5wtr7k)W6v=1AxEkj_xrF09#Rq}9=_&_wEM>}kJSo*hsRk+={ z9v{yyj73zQ%B@Fwnhj;yZO=SNyS2a3zR09E8|cMMK3;w7h|Su)Aw*$L-aV#3J#vIR zSD=-ctw~pCJfiS*sWGw#Bav+&D>K?PyK4V#lN5zB0rWad<)aCJX}+$`a)3_&GBY_O zgml)!SeCvG7{K=72l(^%ATCz-?zIaxW3hh6j20&v>Z{gugtk;U<)O23TSj4$raq`d z%}^2U2HqF33*;&+fPf?hfHbnwcNE~vnZsXKGi8-Qs<2AYSkwB0O3@U?qKfsY3KMcE zRS*F}%6ee+eEPJ^SE;)0LC5F!MHuMLpU{}uEAPpxj;NM&tVb3>UP0NwA?0GM(?}K8 zYnZz$?d(U|a{QzlLrLu(5*Da>`PyPl*ngHXoFrtH5`%_Ss_{NjVufYg%*COC)A|^b zfYU~-rGQhX@9V$}$QXxOjyPYAN_~<>fk)w_%ao=XJJ-+98}L!WwU26=xn4nPi=h|W zgv{N|rL_HNUg)&+c-6_YE~S}f@QIiW?&P|(4Q>*V2^Efl@4#o}uEsgz7e`?Y{*&vC z(^DCJ`W1m5LPT&|8Ugn#OX=4^1m+t`J{csNCt%R?fFOBd|KY&m7PPC5S^XVB1dI(M zQjjLN<2#u|o%TyO)dr5qRK2U-hfbx$L|vRig*MUyGP_UXN@e7mJvAix2K6(r8M*iF z)6!`b4DBU1$V=t$c}AB%{CwPN`bohrc-CtI4}uJB9Yg&lFB(ATc`Gd3Q0w%rQ(Rbi zy&;+RqL^Ig^eFGz%~x=BhbjR)PYgj;DFok9)F(ofD(|?m-uKom4@N{h2oyPajODo- z!-=Y5*cd!zlL?5Y7`eS{+bqz}`P{Q++U{jfeUdoXvPzMyW|6%k=}O@Hc5nS#tNT;3 z1v*N(7^^g{@`NMZ=scA+AC$;xP;#~U$A1WVO7F9sio$I@eFFe;w)JX{s-AXpPM935 zMU@rUe_ySRpQWsv=>maaS6gnRFE}b`QbmX@&s$TyrSfZT={}0uNVeBPmd-c22Y1l@ zfV+>17cu~XtNU<>rDmQ=2d(3ktl*%4>eaVwLCtO`@0ordJG-?&2*5mD*O7wZK=U1z zMqUq%`=5Jc<@=f=lXM$bv))SDsBWEpQ1fhlYRpMqv9f$_EV*tw=L%%>;N-(BB`;gI zGzeZ5_2|eEv zneot0wJxcGxAht8E)rHVdb!#cle;)~pRdx1g5pp5AJiZDsaN|kk&`r9-W=gvyWRJRDdpShqlNr_e@ zJK;4+*%%~+ik6~0PEw4@I;e<=dNpmWovW2uA~>}pS5=wv+q|MDMJZ0X{!mvs#J$fZ z9(Fu7Kr27JHssZpg1$}#7*`s&-jhV|aD}fV25YCVQ^U?fl#wq-34L}RtutN)=)-)< zjC=0l+nV&|E`_=;Y!AE0pSPh8gidUuvhFw3C^{*-4_G(A{GajYvp}(ar6;eNH=up` zKKO~*Y!kDrxp~JX<8xQq3&UWlfd`o%rshtc)Nwfe6e6wdW_ePiHO%;K&3Ls}&d%Ye zsOr5)nHE=$V0PjnOX6OxX3xTpZlRK$%rU!D?U}C6t3OiHg*xrbcATKX#E7I~E_vfx z-oN<@#w=Utx+1K-x!0DHVlguzfw#(fhRZh6ys7CwHc4$#`vw0R>*qj9L#?f{`J$L` zUOkc-!=xFVgP#%?Nn=Mgv@>*Wn0FrWUit1tjkV~eRe$_XehCIlcofCF=GylbVBhDKu0Nz*EznZB zH~FA|-1GrdD<8)}00MXcRT3V_iu_OtB3Y{NL;xC7C?!q_Sf||q5(E_6%O76q28mxA z^QNS%Ybj$Gqp_;fD0Kt!6pcHT=&==V>I*-w5$ z<#nppIFC%$-NwGyS2#Tmg=sFm*RzVQv8v(wD15LkK(WczmC!Q0E>K!NSpR^?(4`)t zQB*kT(Nd;XsnYauxv>MV$Ok|uQ!5A{-a~j)@&UL00~{Z44M8@^Pc#Hs*ZCJM3Afeo zp3`dRNJmhUa+@i#&eYmejp20sMS1PcxeVgL#Kzo7QdoKhp)BUF4{Qx*1~)NC3j_|f z6<8zZULSXUrE2S7V>;iR=pIlOV)#ii!Xs$iR;bUh`crDVsV()yQYQJMUp(DJMMM_n zX0)K|HnIaI9WY6zK*-aoYzdH1zkys6<(pB508x0H5|P3d4e24C>1avWeSQzgkqL=| zDHeVH(%?Q+Np9;YTIJofO|JJOBDHIOY5_!Vs$@AZxVoP1AX-u$AB}Xq=-ql){nC6S zpY_$N&#j)C{taHxy7LkZp^C_jQcMyaxwefn3?9C{krdtE4~=%ieQpqYum9!)ni1e3 z8}0uTqx_&d`(Yx{EwsqECNOhd;-K~U4a^&U-FZ+C#PKmb86gm7LIMC5t6ycv4C z$uz3Nql-w0_NdvOq=hwK6Goo8IlW>#;I_uw6U$X%BKO$sfM^Ru(;Fzt$1pz-a9;1= zBCcGUM_At@nC8AZh%@?M{lBiJeI81sf84IWQ69B-ZdEH64vg}}g$V|j7WwqealEM#U zd`VHymHN3t_gd-131O^=qz`>5_=WqMH8pPqd(#u5+2VFyMqY4R##W(E$ApPojN1?o z(1zGqd918%5kazLo^M$7i!w$tF@fwxI`@u-aT1?NJ!ibiiC6ZS$YdC{$T{Rqn0sHI z0>P8rwSKWdd9x@ZnkL<-)bT*D{0Ktkbm5`?ZJL*Uw<&F4gA7%fUk(fiZ=5*9N$*()!f;LCe-%Khy&h{0=v9kAij0eevk z4{7To9?OV=&_ENZuMZ#cpfP#{SJjL;`xjJJLNnERN3eP(4_=S`}D(8P*% zi7@BAW7GL;=wdDtD<)&5ir8W}GJ zTgR@lt`4s}d^ObX-lA@3S+UWp#BDK|f8w&%i)eRNri~(Szgq^u7Xr`e2wmoM{w;B# z#ALI)rc;$8hFISZjO&St90mR?V0oJFib$%AMq2_&J@3KE|FowH5bs)0pb-JsrEW7jFIe>$@ zPz(W)9RA+-{!<1fi=e%|J$!X_W}U0Peo8=KrV#gMi)q=n+0UtwV7YrX6`V8ibVcJmXKorE7uQz7zn zz6Gp61CCt@;J*Kn^Dx&%+`9-HnVvg)B2gSB;Lp+YhDEO{twqKm?)}|yL#xVtm`|eK z)&^d}Vaa(}I?OQ}R+cRtsA^+-L_^dOZQF8VW8h5k(-uv}8$nhyrzJV+;|xsXe2^kF z+C$?ML1v}^fB8~!peO)Fc#@l>NZW)mxSV7b_4t6Q!jqDcOaGJCP@dutlhO^LX|D?j z*SS`0htJUcH{r6kh@|aN9oDLnM~;07x4$h+Cpt-|TaJr176Ljt6$tJ~Q}}{|#mjzz zF+>P1mD6)ZDdHf0(!6oNZO$xI;}itL2&vy~VD|`zxbIycZ8-NuVn07!T&dn+E7aD` zQo3h3DxHo@ggxb4;jq%n`t;Ug$-h%RKqLQ^QX_*O93E=COrvR(Vi`=Vz$<9kXg6E7 zm_)BT;o^PmDa>Mu-QInds=p~f^_TsG(n!}*9E6x~N@>K9ibmlMb{;0HGy)<>-Jv*N zx~o7i|Ct3W%t3h*mP}3VwH;s;0#hQn5@b15l9ShAjuA?F<*@P1p@L7P7UT4@!gNZ> z3_CMA=>mqHE96{@cU!nANg>3R-A5J;DRv|4Jhuel?*Tk1fK$FF7=V=MpUjFcJ-8-` z7(+1;BMEnBp8ayiP@ExSC~SuIXa~w;@#$pX^->&x zH%!>Pe->+HCeOUl^IqNiQmKJA{WW@@*4B&{NI3yIbU##k3F4;0dlVP1PjGcZu>Nh@gjD20PGk)z}+r2)rAoprG z+e^_e`0m%4=#gdS-n~qNB7W!Zi`j)*w^4(lKn{owa6jfX_XkP5jf|xBUP6OsM>6in z$EYWk%K@w$nc&2T^*T-AE8x@k0?LrKZY0sk|W*Qz!#94EhC^=FxIZtuWk->Qgi)36SPvfP>&p9)d3~`~A*PjSMRL{6DKZ-%i)qwYpT ztbASWT(u{5`UirGL)t*6JpZ2YMJ?+GU)8ietU-B@NnhVudS(2#s_WMD@?-?i=_o*_ z(|_!z1`u5fY`i3;UN=uLBk)e${^KC9}?Vzpf^}Pbns=$yD2&CeQ@Nk?-o?e!w$hJQ_UPN?*GL;POOpaJl0Co zxh3YA9QMJ5Ou%V9GNlJ&h)l-z;uM(RrMZ(ja&p^b{FR@4nl;9>k7HWNnK?1ozGIPq zIv@?6q?6zHbc;tsS?zH%UPUJm6e7mPSy2SvcHjd`4o3|G5kUhisw%o?TGDARl-bS| zhcXlaP~5u26g>a;v2bDW8%P$*p5EiQv3lEM=S;bOb1b6jvEsVBtyL?UTJ00nv5HNf z(+byMi_yw4D3=+^w{#wZ-$!OWKlRGx^V+HpYYl`9?8NHE)$(O=Rr8p=PK+}>c30xw zK=bNjS(9jBoAvKak%=apHzM81SAKo%$t$WH2$6i;t} zLngVCz(5)P3(&N$;OROaK8^KQ64Ye?`+lUOrMukn3a0_7HtAW&o%+(04Je5_Mod)R zh?H}9sTCu5SUu)-6U9e-7xO-Mj-!~7W;NA3GTIQg$E>;9ZPo&?hcR=;bj#I9O@>sy z8<@BSv*JJJj($fiy$%yO;2DI7G}PGMfaXD>qN1A30zrLUqaJ|MHAtX(5kMc@Iy{1W zZG~KA;(W(hU~#?moMJ=p=|TmREx&TGm}zHQux;)wh`r4>bp1Py0Sn5nO$Fw z7zc^p7hB}0x$0e`{Z5x?JZ!j-0eHT#@&ui??5cO}@0ktgShH-om6=jt?ygVk0Gvw^ zu1=%d6aW(hwLMwg9um`#O5TrODpND|w^e*w3wR8OcFW-I?Z089Uvt`PLt^rS4XUfN zTX8d8`>N{p>+H&3($!u(VdL9AD=P7Bx`l|%%3x?9*B!_9%>5blXF{Ak+2Dn>F`u@N z-&1TkShCHLtR|)D@F1hvqagi{(myb;6l`4|H)hSUUG?ho$)Z)wid)rYN)}>4$yPwR z0XqM}9uF813x#EAIh0lxRh63d_uAZ0HYB>J-?nxw89|t8WBI`C@aAR&|KM_3QFjU* zx%YY546SCn`b9ZO=5LVTO!KQhSl*hz0f^Jb5S(O#WD1b1jMTW3$ybuLBjR;K>ZjD}$*vmj%*khSAz=T&N+dH=9=Ea`$t zdqT2%`YnsT*xRhkx=*rR$N{L6c5*--t?z!&u~Fy#Vx&+g-Qb39?(^FWhJ_)~OzP5% zTJ&_S?_dY)XtyK^8lRkP>gv>Zy}mEx1nKX8+{KsMu>B%ayvk0k%ucE!Rm7WDU-C?s z>(*XutoMjzcyf(X*9xaerp=sqw`(-3rdoHNfo5kc1L>Y^FCr4^b9hD{P8)dfOS*PC zU^uyH4xKR1Y-7h3?ru$tIWiEbjQhYTEhit*T*aM<t7 zK7K)6rsWtxySjEqopnbsW_*V>*e#kW zyv24o-=4Gg>j^eY`2bWll{r4`_*}A@$&>UsW_9bMeVNS1wvB|H*KTVxy-o#gWK98@ zOkK5CX%u!)0~)}$+MEq=w-QiMZWR(!&YuV^De zwh%S`3HbS~)yNc;A{+o@+&Y1|Q<@?(CaOUyN|8V?2gJ z@4kqRq#nNhsoo$8@y!5)>j{?{aWbf%C;35Fnj9WJ$ zP7cZFg1xb9f#tVr#>vJQ)s=BiYKyyY=Nq)-8nnUqogSyq+=}zs5U2z-9gYh!XZ5%l z-KPxc`=cs>R6_dab(?Z6JPC_JpECx%>?6xL7IydbOV0a*jegFs65&HeGy8wwU#0Hs z0osWFgcSlbr5zl)O|Rpw5D*bmmq$e^SqJLY|=Z# zFa%vVIWKv^V|}GMRJaIUD?+{0mAL2X&rP={Ac~%J?QC4-!SQ4P+xfn0RlzL=1wm4~ zjN~g7?=(mT4AJ!M>bajn_2lnkrQ-J%ydSO9ANThtgqnMhC4?&ievB8bUH@Pkk6nzd4=q|`I0Z1hU zAl0wA;dpK}G>xKs$E}&D*VLA0S>Xct9Hnu0s*csx-S*z~g+#p)p0M}MUs(KrS@Pv1 zJjq@H6n3<3Sf)&URmQ5_ET1!Bj<5Puduo<(Z=Jf;y20RNEK8Vb>075a z23`1du53SHgp4rlCecQs{dt8Hw*wiDkZ5ALqK(l&GpFU%LCjMFZl-go1__=EFodJ*>7=N035*`BR2jnI`(8KOh--8}=?WD!brfgLOBHOUREV~b8X zy0pe{@r!<){iA zj*a_u`t%=FfH;wW9b_#K4K+;Wx*|WjsIH$5=sC3?V}Xd^Q2wri34_;!V|6*t0SQf; zx8c&Mj{Fx&HRlN7?9oB{_@pOgTFy%6j0Bm>yQ<^n3PXV;{JT-=i4}pQ5Dn5HWi&%4 z-{Hr{O)cBjd4+FwfL``wIB;R&I~~FK()}S%{`w$FDEy6V-uU=?@D3N`@8|4Cpy`f*Q5( zmQ=6R`w|g(tTB;Fo4uCQxn!PW+;;K~Us(D%phaZIgnLWP1LO>N9ieI7^1@%F38#%*}BSIr3r{*uxgN`{ebpW?r&{d-1yc_sa>_7=7#5Kym1-XMPa4?S??Z>f}yS%>tj@q8Vzp?mZ!}HB+rm-!p zoUOr6h?pKDgM4;Rf74Av-{3;1mwqypy$l_wgAGBS-p3jfGEQ0ZKKbPHy-SV~`0OC5 z4LBSK)!$X9{%~Hz(~~92X_M|Ow`2e&m#20b*tzVO+pu7-m*Y8*6WIbyB~Xb^>)I8| zEx7r2vL`Htu<)ypU+~!`Yt+=hG=_@-sM*Ybv;}59|D-2%_O&mKOm&QZO-fFW=$Ps0 z4YKfn$JCX@Di0ITt}O6vpw%M~q@D$#j_L!|wC^lB&5;Q==L|Lm1ab`VjAkv}rI?B0 z$9}15rN#dtF_W6dmHu#Ia2zTJF9KQ=&xv%URMIfDTN{aqwB2=iRQ=T>5t%5K?IAvh zWB}P~)BvQ-V!ZVlM4zYtBHKVm{sAnVQK1|Ay(`iDe~HxGyfO@b3T<%^fuaB{YwU5r zu2;dDOs}gYs=?18rXQy`#UQ5;fby>W4l{g-96OG?S4;d=C41du)(8QcTF$-o32X|! zM;Q32Rm8p{(TD{8BBZBOFOCK?Wp;KvzeW;&YMyaLuL^JN;XZmES;+Mc^ME>jQrG+g z8xb7{(vy!ticM-@rdUS0sOu&E6f6U(TsCt3mk6Mj@c%dwK&k#<4<{!la3vT(qf1A7 zyTds@@WdVq4v!#lnxLV^t2b)fL?k6KgH*)0q1i5MWW$>W8bS=RQI}dH9u&kk{}?i| z0P)j1sE;b!(O62FgBQZ~#XxE^om%Cv>`S`%yXffW(3z;HNE*4bIHFmLkLts4hhwjoKi#pqTyA!g^(hW+^%fU`Q~Z=SledKgDZD}N%cbS zG%ea-J2TWjo)JVBM@QDQ_%=7Bb=>u+>E51vq6AF>Ifx+K2q*tj9w6s6nn_2L;UAIe z4c@{$@`B8V0;t@Vr1ozn2fle6UYqDl`zr*rx-H}L>XrFL6Hm6-7(doFo%67ucISLN z@(!JQ`H>;ZUEC{XcnhpXgzV6>eALk=fNSO;uK-tVfbJ18qOr3BvyOueI)5VWdh2+% zMPvNZIa%O5LfY?BvcReim9*NinP2MG3f=w%@)b+PEj69_LgQ@c$7 z5iFIb;o{33g9;rqtBId)l5cxpv+wevf)HgCG&X9XELVOg%lU>uGeIJh$!r#RhbW|s2A7I(yeh!OBEyWP3ndT5%KN#$l#TJ7XS zMLM~?I0X;lflt$3d!U;_(6Px#qIk)Esm)mob%)$oqV4f$bW|u`74(mphU?Ub$P7|o zrgMEvZ068N97r5rZaSxNuQ(J`+X%_0uLsN#>Q*9Qj5OY6OV<^@$CKlu-55^#q|&-{ z1&z7HFC?Fxs$y1LDQ31g1I6UYHS2>dOCb@4KA?iLzPA4J079KSrVu~$PwbK=t2U!C zA6)e`DHu9zUZy;F4V@6P)6#!l)V%d|yjiI7sqy2yX~iE`?J2&az$|?0{*VIVd5WOJ zP2WY3BeINAqSgrM}*$dotXvP#u`Uw<5ST>_)sQCTgUh_ZLhGgOotX#r3XI%Krh zS5^}NaR6>$3aK$bS)(03yRPFL+WpctX-JW*W?I0p;eIE2&yL`0G%|v@>93!Binhcj zR>i*^xdiQuz`P4(~jGpB$7!+Qu}Ba2eZvXxAb&v8pc!`?I+NuK2b)N(Y=8tN@L83H@``8 zs`dQSOZgD)-`(a+2FQ~dMNnJTw1{tSv_iZhP-=fd(oXzcekhM-IPQ-oSjf{--VqF> zrhGS*FuzKyDYSQM4lSMokM%#!;p$cjbGDq`y>ZRc)b-#L=SRZtf(AOoPg~7*B`e`1 zur?d1WGSEsDqdP|$?!z|C5}~5+$wu$c=X@_;XHg+5vOX=<`CK&X*W0|<`rPGO?MMPCq6~O`4|P@D<-#YOa-psxoGOnha5_LJ0&-Ummsj3jOJy6+w7a|fxaAnR#n0E7HD3OvO|L;AVR9ppsTmg}L2 z_#kc@Urdj28xgsg2=!40>Td0pj3hd0ydgzA4rRRkPZ4|RKP{Cnfrr3u??_C7gzC>C z%8twZ02BW4f$YCNKH%#D7XyV9FHl|pGG+H{mp00H8EICOtMg(n7pEN<>M;w$}gNvX?!is9r^LhmX4 z_Zzavz>|>7#xwpSY=72j%mMoQd_&)+|QUIk3pNlHBEgr>o8F{VsPf>c7%P@D;uT{++yg`THTk7JzBy zID)Kr19rW4ua)HAy_axhK8y!Io0d=l=AXMbmOwI0(FcU#7kofk$BzU=@H}8a=g;S0qyG#~T|F#I4HvmwLSwkX`70y;*UWFgz8`+e zV!FJ53mhb*KerHkp90bI>zjwbulN=NCEZM$@z@Vl=52N}L110ngC$aGI!sx<3zg7bDD<~lbW!LbPC=?O3ApW=8m;Mmi z=b!zW-@tiNP7{3e{V%{SWyOeB0tXy zlkj&l{`GA=AZw$!lZx zW@(%Um9wmW-NN}_I#(Z|fBB$~A4svFb_ajGde=KoTczTCAXokKKn;!lqxbsn>a0I> z!UKr_$}g~1Q@Awy!!yr^cpQJo5C3KWkk_Rw&P$qK#xwq+(*KgUN`iC!)3^&Z{l9ds zPs9HC2_)ZHxN6#&w}6wummTGaEiNrZ9K3Y=l8gV@VUGhEAcI}BeafnwXFsk@R~VigIK0JcrJ>>Ddr0>!`%2xhzlA%lXieLj&JkK!KmV~*(4V3*bEvDR;Ss8gPA4HR*>^>=x-X{Eb7%u&zF8ssg?O)|`jO)~tP zHDiu<=Feq5qR{Yws_d1b$2nh)R+*jb0KffmNa;qe{^MlfrCP72sT-Fig*gRJ3`$*B zxf9Nh6SsG)z1urV9~BkCEAl~0Mueb^GADz6wT4FE{%@#Z*I>feWY1_eb!kwRNjh|H z3Snb6-cP)29(ci^Q5?=$S@+S3v});%`RRGe?b0cE0!G<_dqbJhd%1QUQhOQCj_kbJ z=K1G}G%wndP&PY3S>D6iEO?n>iH<~$E=}po3?jBa{uM=vvjIh<(7Q_U3}@T>jQbZ7 z9;DY#-n4^w|BT^q5M`5N3BT9AVwC&|DF&3o@lUiz(S^Y)vQ6AKJ-6P5q#UaCp5=&U zjYN@VSS0j|879&bd0Y$>^}ElqTUHh+-lHNK%ERy93QOf>aDL=2TH`d@SZ{aob0lz3 zivZD`M?y&_DQZ2Q#ZXg+ZX zF|W3&V@fE_H;`!W@Pg_;hZP|eZp*QIgTLUVOi|LmVYbjJA1^&gLc>Z+c;M`b(C}c1D^-q0TGI39yw6*{D{U_~w;DXyUHsCr_)dWh zYxK<@PObr*Jhh3iY|ZbhlvvUEI?TB*bTwe^_2PKmg$eJla>KD!3hBeg2V+SqQ5n*E zW~zyLyiKjO3F;og&;l~CqunlRhqRy%-}0i`<_Yt+LiJF;6Ypl2hgr`Z0G zP&Q*0XwT%b7%mw4q~FNrd#tSoNd+x)K`=dOP#JL|z#Q+>#MK{Xn9O3o-0%t0V{1St zqlvV_|30LW^**mfh}8^Q&(>iSTYbcX9+QGtHJLL#>&ORZ?nlUiPN)8*?&*Q$@{8q( zg>j%g>id6s2ho<;f-;d-&f_Rys(_FmiU~Ed`Z?-5f>p403a|atMzT_cm|S<3(GQ1m z`>ai@~#vO_ipw)kzxz&OEa`vo&)=67PkrJy-gsR_{da zu9o$hS4#JUhH>R)$j2 zodA{WxiLL^AG+qKWR|85;ySidy&_ojD$I-KHHySFuwZ)u($ zBGb}n1iNRnL@)M+(+^6|Q(f{y%g3_&1m6)dSUlNGt~qE=ZzXSc7CFy9%PBxB2j#3I zM~Y{yM8oK?0?J!hWRVBLhofUD?ksGeN$yG8P;jcJb$T8*pk9#WvgjMzKl@&NPZjCVJN7B3#&?a|%uVDE+Z(mWxUV{k>f*5^Va=N~q zy12=8Vdkj1pyoaAJ@IoSc>BP4O~gip(7RX>G(1u3Rjl{kA3W1e^U#5=N|2lOK?XMm zY~HIN-7F&yKy%j*)J@LP%BdocFx9RzT726!VfwTDs-Yv@FHv@+Z;tU`=P&4^XT?2_YU@^R=*G`h&CeGNUC6g>@O9-6G2Q&EcyQKg1bT3! z0+>zL=;3F0cing6%a|04(Wyg1O-I88$=`&0YO4qN;)Km8bGAG zrJDhUp*w&3fbzcI`@8?%KkoC~e|Tm%bI#g(pS9Os^;v5wYS}&5tvz6)c_2lTt|Y}s zXvA^B)_=k8GkWe6UFOqX)I<9{`;kL9=306PdP)*J*6 z8V@y0drLeHj0(r}KKN?bu5FAHtO2BtHDAR@&35BdAn$bH&jvQc>(0#hrH2>WMU`K$ zInDh;4^REpenh29x`K0ac}CQj{-y2QD|@t` zh;OWwmw^0`6F0=a1?*^Zom#ma%Z<&mD#a_G=^lg-<;_(jpKBF6#M#UYr<)u7CvP#I zRex?SI`q0IUK*>_l8&7a4hxhUZ-ZeIH`aEgcQ4pH9L(XX%-o6UI8awC#5dTz{!}Wi zn)*O1!IeK(*4{|z_%Wt`!O|m&WF+H|ySO+uDMs>(CJE}(&^p%+s7<&@H+#JR?}+&! z@}1uw;410L0bPJo+sZ06h?(iUj5T+j>ooT@OBA%t*>uSB9CqrqrF@#6xX@K%=&qh` zS5Z0f;ib+ zm&w|X4LTWp4PtSw^DZ=LXgQtVy)gU!c;sEPp&yFKqa`t*s3Eu3RcQl)-wgyxDP<_A z7t0FfR(tIwjApe9j4(c^zeaMuU&lJRFD_?1!MI*5*$hK$HTg>d#o)t=RA>1E^saWy zaw4p%2(;-a%nB{}cpt2)w!OT#bipF7*!ghD zZO(Ee3SY@T)U=lY)#QErxVeAq@Y_&`9J8mpVcXRlF`rNG{LtA)aqOk*kL3f|GPNq7 z8B`QD?0WkEgk&$D!jH-J%4DhKbK2SrRdN}3Sdh8d>#MN~%IU8Idw2HvR<`!Zn{Zi? z2|UtS?@QL!q-Y8S+;;6pE}^J-76@+l|FEfM;!07H!1Rlr^C0e?3M>e=(wCHSGWhOt zFreC2&psT;sS}gw%q!{o-7QDBiMz+Lq%KvZyufu%J54UW`~*YoxO_pqgd6>kynnTE zviR5BLmK_>Dn@Dh-!Pur5?RD3iITizk-HES*ZzoqXMC!?(5?q9kn)LSDF^NyhfVlk z@pqw=cI>Kmszt-$c3qzRtOI77;CWek7P;G=vJ>9j?<7<8%g8i7?&K}$5`fGtXzxuA zb>oY@YSae*8y`7?82l1`QA_SF5zc?15cvt|l779HAJ=)CbcKs{(`7%Vcr;1#%5sSm z5;aAb{%|vSDJWp1knd(s`>3<=_kQi`6DDnGVOFaAs>hcyd{N+UvtFq~uenIkzjoNO9_{7z{+G`00;K}>iGW6>}944VHc3^qJypwxDM zv`mDbD)!w##({a*$5AuA_bzj5mB#V{@X`UYM`9Q{HX?qWnZ^4qiKmPHPiZtD} zGyv5h_1ufTeImU6yqa8PeQeWt8aw`|fUxgY4- z9(r@hG<9ailn0gBa%b&1YnuCzbg9`-9F})kZ}(r4WgGKVu4L#RFL3xCU2A83;5X_} zyHfb$4V$3;;$F97`%@7WsoG`JZh2e>-fauHsV6qmsq7}JxsQ_`XK6^L)RT4Mb%J-c zTOv=AeTi?(>cvfXDr?3V({ZQc2jX>-oagMra0SdQOP#0y4g41ybWNb-mVC@X?^Fy8 z`3I+%pLF^se)f2SiKAd9vHlKFPRw3sPIl2 zL?o)W(U!i^_isZ~ef{WfE`Y*R#P*<+cT~3%(qG8bVkljIDMxEdnWSAz z4|!xEFAx>xRD{~y?;bmxIx4wxP5JF>oA=$>oy&yn0-dV=+-ce2I<4sm5reqtK(8%K0xee`I<$b@?n?Y=w2mM(&S^18aXY23+m+95GN%Hl zY@5p;STI8kg=87V!~0i~wQMU&`HffdM!sI`xXMZaXK7R=`sj~yBMoHM`DLkE%6jOyasEPY2e zhvz~wJ3%%dEQ`DFO+%ro4rMDzAEygV25}+^cBD${ALO^tyNY&e#Yh)g_jI`x{u=9l z2te_Vj250_UIKm{&9{$ZcYlB?^vlwC9Bvk4bv{;xZ;wldGvnGOjfQK)7ViNTY<*Ol zidCkWs795XsfTZGa&$C6t1MX`9bL~4l99G|d32l?rV78MYZdl;p=|@-==igSv2@^# z@gW}UO)eGR;g^xi&?+(+qC7q*lTpdut2Z7%mbR=v#4nu49CYXdwr~1FZ09=_*Lqb+ zmIB36>mT+^VK0f@%Mv10H6y7{|51wl4HS8pgttzj<#I@s88v&T-=vGq6A=xj4cRaD zRB+KLfa*|;-qau&SsxR0Ca|8U42ow%8B^iu6m%#y-qFE|TnQWh{1hfKk6e$)2b z5pF;7V4t!LKxK&c;!IqGEo5ClDd#No%1#{T+mp-5C^_G)KVIx|UOrFt@wY%S&PQLW zcS>0DH*@W4N6XZzKgtT6OQue}?E5j*SLvLHobY_bwsyGvQPBIwSHaH*X(M*qxR%T7 z4QAUa;&_^0x|Jlqc&5{FBRgS2dnYTKv(jYP)mXK&R>G5X3K?@h2ie=ay}Bds$?GRW ze0{3940+%Exc5OjyEmxi;dt9%gRI)l2dDp<)<1<~Rk}#4@3MENIJ>IU!c76fHk4H6 zYA7c*YUU}DTG$6zv8pp=^VD8mJxz+l!ox0hwkQv`4|FMSP<9ORMAsKd69 zj#lRP`LB#`uCdrW9C_YN40DqHp(jFPpAFX?G9t^;yS3!a{GRYsW(!bI0hfj^;t7$* zuPd2qg&NsqyT3T?OKIO_8^1t3SmxJt>13CE_Cqmt`)&sPtsfU*HT&)q$_%O>ldhaY zc{@)OGYs>xj+Bpo-;G=yJERzKj{QoeJL)0We!a-p*PiZ@c|;v4&Zlj#EbC#PW>>1z z`hXuQsYF*AZ=IcbePv6WheEyDtFOC!)^|5q1=iGq#a1D9KSd4`pelfGj&|s69^SI3 zt{rvVpP4Nq4^}qr6Wu`EdxXdx%%b_N!7(Z+R+`}(Q%9WAJx`U(eZ}{*9ySOH1Hg6A z6HQ4`3cYjd&4$fDJ53=k8B^inR;VcpO>=DZ@H%F>9rI@$9>r`(_wA>mpC4n=NLshO;w27GnXXIa3CL*`@JXDxg5p*=6>lVpI!nM z#DmJu$7`7IXZCg-rYu7?+z*v$hLs2o!w|JI(k6Ttyl`*b9`UGkc-8NVyUgeBr?t@j zsoS7M@eQr}zE_rcTdRMdp}-55KE1*K!-`L)*I@7sm&(8~aoj^^k+_I8ptBaqv^F$M z(3^Dz&#YC8#qE5Qd1VpLNyIU0>{!+>hTQkkFj1406t>WfHb^XMcj2ECb~QOvu>70t zDGUJ)2w-&7pB>IkaXOaH)~MECzjwtMsxZufk8b^9!7k;P!Ih1<%%GC3&e%Wd5T3J^ zQ@IlYAAVp_e6cJ`s(<|FYmz1X6xFeF3Dk7u^##lIJEpAY!`-Omt*xP-n^W7)JJQ>o zX%DM!U%Lu}&t;SFId87^POMjxOL$r7GnX~;w%#9}j3&)_Lw$YNRnPxgnd>qiYni8? zSghlKd4*pZq3FIH?4c|gXB*EYx2TSd;sHw=QHCuq`j&)6C$brXjImzm=a+S|aj&x) zAzIH5pBonx(<*p9R%^}~DQB#8j|%a?oRxIJzS}sP+J{y;f;L>+MZT&aU)=rp$)CJ| zVi4U&WYrs)H{sr~x9(_Kc3`XRs z#R86z5B)d9`^P6o#bSfTj=nA%nawNEyqZpNWhyr1b=pX^K~_XD>6A2CXD`7YWFCJQ z;rpaLyYejMp+oU@&oQ6whTM?fr^uAf=TTgm8(t&MyxTh$y2{fw@8hhu5vo+zddikl zu%Ql?=w*a{5X5b4xmc665=dD*G+g41*zOmccTi@eSNkULdkDRiXqsIyfJ*0S-EdsS z8?&9|fK#cH)H$p>T)Mbg0C5ink7H6W8DH7=s{%D#Ajdrd zf+^O<$aX6#zNr2wVuf}M+)ci=dUQw3(!l(Fv>nbO(P$@U@Fkzg5eG zcd?0CF)8=W!W(PD1drBKkdvUAgXNDuy1l*yzk2tvZCA`L9n*!(G1MVF-`Fx^f1&wHqG%Bk z_*~mf;w$s<7{|HTq3Ms!QEDtD4*I^{{ofOrr%d8Mc(C@iJyt}DRiBNOte5git} zy&Rl-{-t+Tjm*>FKLo4Bgg#tmv5EX0N?N)%a$K829@NZgbkoB9kY}>Ce>4o|sq~iX z?Kc^NJqPZzZ$Paqu=oO2Ad(r3ZXY4Yz3DKQ2Gg(096R9e4mXKm)G0C{YUH+3QpwU{ ze2I)5-wxER7%$51Z*Gl|bx~YkezjH*vG!{{XD>7jSE(;cODbI@jSBlZ>1Pos)rJPv zx{sF#M-z{+&9UCYW?^PAkzGhrDG*G{L+N)s38oHxhr53JyLOHgOQ}G*62C-WrY5VR zVawLgJEeA_qedTvnWT@;;`%&lo`&-uVq>}RBbJ>NFd^f{AKv4#6bNWV3HRS$B`d8> z&Th4Ai{O}ktrB+daG4d981q1OQjV@?zQZL=A5EX~ciS}S&nsa!wF-(>Pb_^k-9X8x zl6~7%We<;diDx-ze<>tms9>dxWpF&9)t1w-sE3`5J3%B4!;R_<>7tR6%pNXz)&0FS zZ#+)q(TfJ(x9eHja<>a)Oy?T-iJ$%oaRvE$jy&q zTY0NjFHahgwmT7x)MQ!eMr$Nfha7G9Whne`;nE@4TjRIsQFY@PoAVhUfX}(MBz}5_ zSqkzU7hE>i_7rvhPW^PlUb4TUBS=#!JSU`@8oA=Xu{K$;_47;D&QIJOcY#xH6n-vf zqo7L&z-A3H9))PmhLP)hL@PgUXJ4~z&!I6#ZWL^8_+&DbV31;m+V5&YQ^w%#J6p!* zaM{epekj^ptL)X)?xqCqBP)l63RpUG7Sh|UW`<=V>su*KmWAocuU5q9>}Yb57 zEo|t_bfUC>Xz46}Pys+TOuupFcSgYRp`f!ECW>2h`E;iiJ{m68`q?@qS7+=KZA>C;j%(wyw?T6d(w#vAAY?3@~ zbPeQt$%R#&zEx^g%h=9uK&0W&-d{D*h8>$*SP{QOwYsn_duj3hBs02V^icm7?B)6N zHSn(n8W_jQA#d+H+{4=&C8|z){tP%<>~l&V!(-jTCVlvR)TuO6{}r}3j4#6=TM>~@Ym0{ zF^Q^UvL<{!qa?;!W@SIVz@2TQzHL6vu_ag(#tR*F#9+~@Cm_b?SFc^3)F)kbawH*T zL3C8I#=5K)=CaOmm%hN1;_){xUSZkrE-eboUY+8L)V2yTj0{;72VF+Cf4je^zLb`dXu!q&aP_61@Y3R@A%$_nO$?Luvtz1W(rm zW8?d3a);>s!kE5f+sCT;E@$W-CO@B7uw#YcUFazs`=%R~y+_rzS$ZvDC~6jzAyg^Z zdvr9HKf;Fsg}RqaEDrUHA=2x5WXwh9RD`BT?^6BE5fNeGm z$)<_*%uE+@{X-|qQ`f_Y>1L8SlI-ode;{-CAyyux`45)%~&ukybUm zy*nlR&D<4lI#%S7wVbW}Iu6gYWasSMvhu0vBTthD@dd^aAebF^{=5;zH`eT-BFyJa z63)i&%$mGI0%44b8cm_h)LvJ-$3iK8&+o2Fr3Kd}TP1&?I(jSz zTN^5R>2tTaDfkP6itoJ2Mp=PdmwXQWv zAKiz^d)aR$yE@anu&$+YWjgQxOD(6rV>wPlO20cSE0~QFMdfD==02TYsuM9eP>QU&jXm3c!WYSRDxK3d35R? z$>1Mk7ZXU+`7vk7{J*BoT)w9Sg7fj^H_tK=&(dvv0PN(ig!;eXmA}b0pf-XWuu|Ty zDLncAJ?t0M7t4>V{}h_??;URi1fi6=CaH;k(|rDX!uJF20H%|MPXEg_9H_s^eO9lt z48FhD1^$msM&N-5bB;TO4=iWJB^uqsps@DAx%zLv9dLe7KzLK1lN@Y{AuN^Rvfi~= zI{&3`jO~Q?-_iYZK8+bzJA;Qp7|5!t$1%Zlifu{9y&T9sz)leGXnfsa=% zM$t}Yv2=?l6ilVw{`<_&PhYHLj}Ou+ zL~}R%Pe#Z;=UKq2TNu@MLs^s*>fqkSU=;H2+ytCJcs9wfQr;N4Y6{+IR}nh(j1NBF z1ay;ftra1<72w__jI+iWV+m6OQvOiWG-wcDjR-hMPfAjsJUts!BDK&j?tTqD*%6|f zk7_%k%MH3yKeEB)^JY*^Ebq=;?Bc7hsOcYC&nv(&AQvp}Gr-Mq72`-=KX0B79# zel#i^)xRUK!kbjT{$hJsw(YcYR~5*g@gk*Zvka+<^HZ%Yfk)1`Aw|j%3AD4JtYRYPFz{g2OIm6gi{6$y~3e8sVa;i?@1(${Y zOfu<5)z2B@nTDW5OVej9F~>;jE8f_TlH)_ zP)(TOPmEn^6a*d~BuA8ympRJ<2~H-%N`wT}S@%DVaqhQUJ&M)YFT~~T#@qC-^)Wtm z?Og^fsH*cP7(9fZcUshRj0qzKTvt{K8E=g^Hm>;7AjCyo6TciTGc1t!Y3~@X;+fxU zChFX&vwE6+lG_PwF2jF3rp~Ww-|S}g%c>n}UApigM=NcvP0HJxsaoXG0!hrGyQ=({ z+Qv^EKXZpfwKm^A&M;@IKVnVg{3pbCiAAzN!O#<@AHM@w`HH6e3ga+GRx7;1TfD-= zVEH0)Mo?ju?RrDEhqCiE<8;dSqkT?x##>UL8}Ud+dqUsvIX!wYW_ap-5{dh@810*X z!zMuZL8<=pV?G7o<>8An0>&#?U|~4L_<}p{K{)<-Edea(?b<^oZbqfinbgIH%8q3I z#iW3iCL+S{KN(KoUIbJjbTjaue*oJHYypmcmBVR&)+4S9dh&?#=RHUs8iAD#G9VST zJzaQ^sd*2A?v`9YfPP;T>2Fe&FB&tUCbc4hJebg`d7$AosDV^$cTi$DW~^AVt9hU)Q!KR zs;UL=kY&jw5_>)JZanM=C^DZwfS=J6-9jLO?eg<3xNy7o;mtaV-s>mXLv% z3H12zv%zpJKr>2$GR`CI?)Lsm7eXB0b1;Kg4WSI^X7S0E{X1WXl=Tz?M9SknG>G?8 zkIv{OL-WNrL_$x#2Vn`+*M|RwG4RD@q4_RyzB!=_`Ui^)+L7M+1ByI%F&LcbK{xHp zp!N_5sDf;Tt8DWb-PaIZ`6=QPx~UM|?^A+jbVH%}F4_^F(1l87J8lhwHif6lAr94l zwOQm?fL1c;2lRgJ$&~-43)RNBXk+#Pq6;C)TPtLT&geD(QdFE%S5D~O0fW%1f|_Rj zS!XY3zKb@I(39_hcSIGjH++U|6n_fM7tQwOgf3t~5e<9t&@;Mu&^{Y#ETM!pk{Q@Y z_S;Xh&aP5{jHKGV?^ij!rw^o2n@Vq53=9N+yjQ6@lP3wTQ*g*6oi+Gktmohy$; ziZ;nYI_z$iW%%7JFP9fwe)bAWYfly9$K_ zo4(8aW!!%}@J5Ufe{%tPfFdN`>K3m8?RO1a6SoOdt_RD@h$2dz3Ju8io6?~5I7}>J*B;T^p$p};nnnKo zc^f1UMW1#-2PZ``*5lFR^1B)pj}y3Oxl+7C+*T)ivnT!*H~{O30y6JOj;s+>_2jeF zd3Df5W>Ay-7MER%%E%+XTR{pV)54yDjwxjaH{{N~!h9oU>HrbH_h7-Q4-6sb%0Mm7Dr zHuwIcLs%qN&7wwwFSxT5m^gdT;wA66a+Y*?iJl0SlUvk)v|M?0^6^z!)gZ}IcxJ`^ z!BW&dFzokw>F$ZOMGt6`oBb`M0A^SU2A?*>*#qI5EHVZ9Mi2A0y!Tx&%|Ud5A&!SQ zjmk6k>Wd=0|K*AQVNCzJZ?Tf&u8%T&DI)YKA!bl~bdafzh?@Ri5Mlsi<-RKJx_`!y zf3%@!&=Yy$lUvfQe_z$$;5vd>hzO^H;~Y5dqFDyF3;(wad9Az#q1dU z|Kqqgk?U1NV0vwHVj8Da=Ae`4^q6@|4GzV-16k}R=fufx|NH@&dGIHRSv|1XE?%B)2%Qp6 zOiuwUV87o72x5=-SKeQtDUb8I@~|cJrLd@Ancq)P1NzzdiJzCIP@~7Dn{2ESh_$=I zVv48R$`_(CEJ2U&v2*z%E^~{ANbdN%&s6+}0`!2=Tjd>m21M?aM+H}Z;>OaP?&1W< zxNh^$z!y(_8`DAc`mN>S*BrC=FdPi+6`&u&aCW?|aalQNm|eTS(XR58?Gb@CVlF;D z?PLWkp_@r)uqg4#J>=rO9%il_EuYK(-qcd#JTvyv=M^fbW;N|%^64wOc|VvfT&X=s za{If$?ctN=kQC)rhr3eE(uE}AphBh2TU`!YVJW>H5eL~nz1OS2 z$yS{YoSc{6lbB9Ku>^C3MsElek2=jU}MJxLZ{7k^*qD^&M+ydvZd4ZQvj~8co z?w}|KzkSNh)0Y|zs80+dll6`6y)Z5iQ3*4YZ_9kCuHd|YV1GlZ3?0tH)DKWURf2=2 zc9aPGRs?A-vktHGcAQwDfO&weR3D^(?<-NY^cokBd1IKn8yPU~28XOpiqCgE2JkeU z-r>kPRHyp=qEKXjcHvtzWKi|bus^wl_45);T|GGYnCtto>+^-yJ8>Udzsa2Z2FtBt zT(YrYhZWJ#F-|4!FyW;aB-8)&(LX0V@*4uldi>D#D`&5|nLB1PqV@u0Q6w4&eg8=g{Z$^nj$EmKoVmYb5W)TB809_h= zDJ9{pvc&`rlg)njl;*c1&cVq_0vI?dfBW@-5=HpJc*tI%m?7Ki#+KDyzR{e!&#q6=y?Z+v84<_Fk zp0*D4SOJIC1k`H%{T1O-WNl}nSaNmd@(m3-XitHH5Hc^EMi}q0v2}yOarTtuzHN~i zCnSe~J~$DJ{GLqD@PZTZB+|BrO5gU4 z=j?B%`Xx4`ETys;NjhEmJs|%JeoI2lOxlOp+80J~!Fo+&U3yXU1Jp@!OH{pFD$tDIeiaQ2QHZ z?1j*R++}!BxHVIs^6@UYZO~LD2TO~hNWtzWgvFeYK>o=DCm|QHy}}h?ibozVs=W+d z{a)5jtEq&|DG>nI0-OtSkcfK= z5@JN4T;ZRv90k5RBzB?{sLm6BB@q5q+X$`;NCNdM$!1%Q>tyNJp=eHbK;mE-LlsMF1E|}--5V-Huet!Zq`=4B{5~txA z1xU}g-Fp{_03o%X$)vLR;GhWtTpX~dLVS`x^7$2*$36Rhioq{|ryH!d1r$NB-U|lv zhu-*KqskJTpI%Ztu?Ey{|EF$7(FmR=vGk8wAlOwWu8Z-zK-)uY&@i9uSaIOQ_UoC) zeKYwt(hvNHVqnpp|z?t>H{1s_~x2b^^m#F-`<%#!6#7Fz;x zQCVSIIA2uYLOjWmlaKhFR45*B_n~b_(T}FD&p=OyUw-7g72n~CyGr!2Jb}}#E%Qct zakcJ^#<*_Qde($p-+g3qXhvjmh>8|#)W!5ijw;r++c0ZW-W-qK^akhlC+*|7E<6sK zonds2jIZ=muD=$R`LaIYjmiYPMBmNNn5KTU5_f~B*D#bCbeemYa#~pFv{ceq$PEHt zaf(n+KR?OvZ~{Emz*N3!nd}F9-H4E>5J3ZWW7g0$*wxo-P&; zgEM5gX(sngxN~*PVt2o^j3Butjk{;wt@>+9X6ezm_VUeVc*tYJX4Y;63i)_ zx;~)s)|a}bpD{z!Wk!+F(x7~402M+!fXDvC^>0xG_$Yrryf4{9fB_p;YlRBZE+mog zu2mw4;q6Mbag57FUX&RsA60M}s=i>g9Iey!jWaLh<80?`cg%0v{35duQlINhsi9J@ zdXansiUiohwRho6gB3!3%VVhiJUEw?xYq$zvJ3KjFe7!%a{h?ewdVOLZ*BpqTpU;Q z<1of1*^S|-^x z6<;^&xu4v}8Ru2@zFlN`Or>9{I=Y1SHp$lVm-R}L4^koLXU7woKaukqtErJjfKhBm zZYDQ3_8#)PtrVv{>cTSC7M55n`856$33?E?GPa%8maEDJ>!C&8CPeWJa5>I9=?Oj6 zV$1?b?Hanz->R2&?7M}jV%eLZi?Go!7rC;a0-m(=99`>T^PsS&?lFUS(pDHy#MK@= z_aOD1|s|KyP23^c|SMttHr@STM1k;|qx~UGMXF)|Z&N?HOdi@hZ zx*0)qY>I2IUJY_{n&{Tc`qCmgoS2M92JHR(vA3EX#|FunlU%d6?Cj?{g2=|@a$T;JVjC7JfGbPw-;(;L3- z7apeIxb7(EL9MR-$f@;_qtj?kUO&E`%UDvOd1T%Gaa;I|vt1)K$D781T1lt#H~F^i zaxpC*vB^3`6*>3hju&dc8XRk-BtGyu^07{g3SD>)II8jUj9(J!XGs`kOL2I?4ZO<* zBXww-D4FGWTjC#9mI6Z=x0#r7`b!1cn6)L>^k+A)$g%SSn#OpF8}ruKzNd3c z7rilbXd1Db`)2t58Q_-b;77NT6pjRA2`EbCXQQ*CrsKy_n)3L{WO^E>54&{olj}?H zc(3WN&u+srHr0xp!#`=2!3*$4r@|E9h@(H!`I%*9obw^u`5N3h{IBF zt$D~MY`A`3Hm>lE_a^z9oAk7Y3tCiM!qNc}DMo~R=#pW%qI*jS zIp-xA>5_uyB92>&+zKTE&&GD0bnqN(LRxDoWxr%$U%$AKpDkr+*Lfp0E@!YzGaHZa z4WF}$=~!6Ge!$(JW;fy~#_sfX&qIY?W_eL<{*>5gZA9ucFY=l%|8<^gq#?3l%ptmr zx5WxF#2>lWe>n^XA|%iG?f!`t_yh``eW;L(>XNLIuJ&?UKaieMu~O-rq}&%5^2ug% z3yI^*D&#e<4(*rd9CqZ5n=cA0VSD7_{#fUmhhXSKPu{0}Fq4??6MQxw1zHnmm|*0+ z)<*+{S}cdFm9T32wlX@!3G%yTn(-ENSbV>~A z*5E_qu;!6`I?Y(lf@g|G@bB+XY_60sCHkIlxjd7OM?KyWrRrf4^EmMZ5M zp~7OVy|dKr1-8YISs+(w9>aCHl|^A1n=-e2e+_9CA%$TL5p2U*ym6H)D5hP9#<8L{ zj<}oB7M5a#Y%?YK=$(&U;cLd`?O{WS`O$#yWm@?X*+Uc*b@T{Zp94(GVQe;u^8 z-nZwS^u9NK9+YbMcIs<*i-y#Kz*-poRtGCKeHMIQZe}7cHNJD9Ew-n8GyWhX~W1saT#P zAo`*AW6tbR>Cvt{4)y1ZmMk|C2Ohzdph={try;AQqlAKLE?($k2UX^R#S7$f~pxa-zu6SB4!mx4P z_S8uLdI@`VJB4f|#k|#g=QjY9n({fvK%^hcH#_tNuOzCKE$>)qGFoB@ilN;u;pm$okz+2i{j@PGD`M*bZi@PDzjFuK zdg~m%dIH0nU0x?W0!6J#!TsN5tr^7~V@0N0 zpQ0aqX|9jG`$wVzd!o>7G20spT6?LzjyS+F}8-C2*w@j>so~oA`+9@0+1#=~1x_3`#v1P)WVYoTm#=YG8plR#XBbN3PQ@p3+t~Q5 z=3Ze@n6T&VLeUYR2;uhxLm!>Qori&0H?c+cc8gA{3a{D=31>C$uH6p4WpdBUPITxa zUGwo(YPL%(`(m+?oZUHbEv#L$1m~-{d+);MY(f<4uKfUcs|cT&7OGki*zpD#>mirs z9*a5%DUXcnspMZ%pgjJNE0)4GS8!=PemkZksjyu&#UXliGxreab$73jz9q zXK>tWsjf|Tbru$5d(Yj1Hkh*^!HdYW(=0(1I8MBb=0(V*)mx;@cD@KlEr*=5f& zrNKB#&JRxvO9^)z%$g-4II;0r(#kJTJl$m zP$|)$BzRO|fZ}K7e*U$47uGO7oc+GCjHuS{7DH2x!Joeg>R|i3JVlc05>p3zjXPAP za2GbXVWcN+2JEMW{`);RjJ8LFyu!!v%DZipou?mAR`G@<948qzAXVV2~Ag zj~Z-n`R3m#%(x_C+hkqR%CB~~qqAUBR>xL*XIFRlry_P!mD?i(3yJP-(=>^~I2iP#W zKq3?8qz|2%DIcPbM;g9uKJb1Ne><#)p70BcF`7}VI2Lo%AMLv*C>wAO(E&RE28vTr zN3RHzr)i1tHI~fpZy>atp0?&nluPbh`!`JITQN^EzRbRzjw}iD$Isgxmd6~|X2*`R zYUCg5xb0#-8oTHpBTe%Q9!b}CUa!G|#r0Gwv9Q_)=R{j0iF8XuGGgU&go$?Zj$A7*-cfP=yPlzn__A;Z7tmzxk!({>bY6wl1`O1hWX@r zr!F*pcFQY=T*Fc(sk9=KrgtSC*seRx-+3kWsR`>!<3@AN*2rV+YLRv?>lu{)F=j=V zw~zccBXQ|(u9j+%aH6NaW*>+b9z2~2Y>i4Yx-&&`s6cU?g@MyHZ;E`9XoQSsq={RkVDw#H+Y;!fy#ty(0( zi~b~Or3%X6Fk7@8j8-^rcA3R2$IhGATy38s_*!lx6+xq4!KyYuD9&;n*$v`1gZ(hD zYTqn_98zOO7-iOIqBuf~8RHiAgB%&e5#hh(Fdu&L3{-o?e5Qnti4elS7OQcvB8-qJ ztBzM5kI?_lrd-#6Gt#V2Z{AEx6ixRh)f-5%a6Q@;QEkAYY2M4`kY#;zJDtbxxsg-o zvKW9DD9+gP!p98iQ6S4Cz6JDp2JV(&;1`}KB1@^DryKVkPdJoFX>cxNT^m3b_jebY zw0k110YgVO4VW{UM4u{-abKhPkaP~uBl#2bsuMG}loc|A33 ztd}~v*0krmZk+Ud^dPp~*6@oW^G|GRKAUICTIMxRYDJ3)kzDPAG zZD<*fBKy_mfS%ga@2|P%_KM6hh@o<-=tx0gMFNb9$WR(Ua=b#;FKFAQPfA7^Ag1=z3=R(nM`#}%c#2W;!-Clwy9 zi^sa{h#q#=xx*$6y0FY|rAC{rgDIX_5+SS%(Ra=)M&b3ND!|E+g~w9{-)t^k%b>rv z@mN4?eJ+)3S@#-?0(ifJm5P&&q}3w49Q4iERYI~A_t^|Yj*l}Yme{7SkF#QGV%kw4 zzow*W+K6rD14?JJEY}UQJ{{Aq<6Hg!Tl<;qo$~mY~mqBo^a&8e%!c6ZZT{7j~*V2O}eiPQKwMx zZ9c;Ti_R>WRd4~W@3MiQ7?AS>Dg^_ z!ra39%KmzdEIyWgJt3WYu)eIWsqVu5bh)`FYY1^RXd0V-P5pc(_ea`!BZZ%`pU5IIt-$(i2Hb2H#*4!@;Jl8ryH?9ahWndoEKj(sW^U}79WnriVh&s$ z8O$qJ@!haYY&m{NC9=kE5g@eD5-(#$clPZakH-kdO!Q|PCcGJMTBu0JlpP`4Rr zbU3%%jbe%%D-1F3$vLxE-xG7HW=#|)C#wk9lXq%~gZ#&R#(RT6)HB~4QGd0v=KiWP zJ0{lDX4C$gMm!brc^4fUz@B|Zru?}aIE?{XHnMZ7+d7~y=JE%!(M z;u=+^VBUxbE7#EO>7xbIj_A6>viU7|($8fF8$PnJ3{aB}En&0;{H}{!mbcHRf!5@} zW8c(HXDcKC<~_&R%Dq74ZXh#Mkokliv0&tY2i~ z({=5m9NyLXPoEEsM~{?bkF4ueO7yxApZf>qt+k#PX>LXq#pQq|MZjbb8~%I|4&n#@ zD1E%jh|h%R(4GB325N7Gh%HsJ_30tVK#vO$ECYUhsdpe|fB@oDrh|h5Y2G!so=3ja zVM@j$9d#!+(N`M=ohkgCGPgQmT|nm0a~JUUSl(l7F8-Vl3kw85K)$K9j6+eEiy1Xw z^UO?s&~ZX?aFW|;>v@Kfd?=3c^b?P>9MKXhHpjCMY51Z#Ta4&iE+{jQ4g2w3fHji8 zf9%5tX$>FOqHQuRDlDtm%cQMC@lMMzi({)6VFRmN)gpHHt*_^UP*`WWqoU)&#D10F zKOXELpa8ttU&KP+lqyric>3KkE!`3H4RyAc@?5UGJmjCeHvL5#_=a(%!nc_py)GAr zEk>8Q`q{+tcUn5)+TyQ=!c;4Ru0jQUe%{5( zw%N(}^|!J|&&>wgIQJ$a94njXnr~kUsmwD~9pj2G%HPmV-E>PfaGh7$RjPdPYro_Y ztxmQ!t!!%)J@JkjDS59clPcL5i*kDoufb=Go!DeWo-|B{v_4CV(!OnPV2wX{efCR9 zE6*Ok^L+b2mwn^;A=|asRM)PV=>;Sj@>Eos4&Alns>8KO!P7FVbuKt?EN>Yxt8AGp zS#J>AWC_}%Y1ZIpEW1X&_MBs(Vuy8TlRcok^Too3rBIEwadCSEx~bs4&cHg49>2}a z_RVf&I8p21KK~=x@JHHTTE1afAH03ldaFQTcm`TMTBp2#ok>{* zQnKiy`kOae(T7E3(!X3Q^dAGwp9Q*PFdZU|z3u${YRh2h!{pW*^FdAeXtq({gGiGH z)*gO`h56_fGjN;rg=7{jUF|~HIC3S5ThfOx7H5tY59OkP_t0D1`ZVR$tDTi$5>sIh$jv!-(DFQNXpbWaXpSg*+(9g%~w@l2xc_Q z{@VO;<47!!3>2sh5Rc_`q^jt#Mryn7tmrnz@C3ekby23(FTH~TM%vmGEaY=datU6- zw`BITyxo7$a8S*dSzCLr{B`A!qrqhsKyY(d{@QsQD5!Rs(F@93lYl;7DMOn_W{&F} z>9{vnN`>tmSigEDj%JLMTpBLXM;Bq%My@|?4*ZhR)TC?-suv%|u7AA6Ol8}iK@-kt zbZ-;gcWw84rNM~P?qT3leas$So&m;5z0e?wNxkT2PNh^h17%9Af^r*IzITDCqt{Iq zr3VQpN+lAz0I z4VdnQjsJh_{bg8{P53s7KOns%1(wo+iU=$eF=zw{l@O3_1O@5tR6s$xL`u3tK)RLg z?(S|D&7OOqKF{y}{`axJ><@b%`~8B#+%Yrv%r)0sb6)4Eed;N}Zq#qc`R1#!lU;DV zOrq&^mH9Mh5(CvldqQdc2C(!!uJqBT16X+=a$74L9W5v!A&(+!h=H5WbRowEbZ6$X zwnv$HYw?z>vpV?tC7MGJb2jVc{O4i**aX3VOM$lV@(!*Vw^e|j!jFB78`gfBMuP>q zk>&gHY#Ng!>6t!k!;fpJ)7Z^L2+$QFOvlnp{#tOULuHpqr~v>o)Df zdn-i^=I2)xNAC6i5 zuFCw0y2RC)nUi$EpgX1emyc8rhhNuh|u_aT3xPZ+L$BcX^!+@eL@mgS$KdD7ISHY2)(Q83kZPG-Nn@3`U(#LWebZ(anu#Q%)bS1 zfl2YMa-aWnzNEYPakDJMqtwms?$whnhnPUxDT0j2c;H#;%tuZ9R9i;cc>pXZ$mMU! z9xI#kGxk@heCm1UrN;7v-I{P0(a-g`glp@I`yaAQ>r~&g-8X3DHYq3C)pY_{q1_-Y z)HR)Fr}5N$jx5|GYx)3}|2dLo12YP_b<8`Pd0%oBi#+pN__(cTW%T2wjhT0H8I6oh}?>F5-3`tIPLiALX-dx{4e+Fi~_$(m2e?NH`Due$Rsy=sev_fjAIoIw=M z{cPSx%By1Rbw`!Av{@tD2yC&Wa$1fsK>E$SzmK`0~e_zqZ0srg}s-Dwyhg z$ncf;!An^_E`1;{Qf?MPj;$km#NNZy8fKf|8u^y%y>VHiHVtio^2|vcjKyM0>v87B z5Fl2Ftp_MvnSxYQ4;6c^AHxyLAdp66JW+XnQg}CAo^`g%*yczJ>o{3`AS6|~;wvys zjrrAcVMZgmYo&W(6C4gOD!xeT|CY|riQ!Wi< zND0W@a^jT%Y`l~O-duR!p0)Ue#jfOU9)9x|ER_05f-li3nyXKEgg&t}?;wb!&J~~Z zbW1zW__RJitHbU=N7#AA-g8xV*oNiJnc>^Yxmc>F_Io&rx%ay#r{DYY1;#OmV)x3W zAoS_JMEeB1X_)xvzB|K>G7V2M>kZeRDAa6(3mQV=*Y&bl%eCkG{P-Hx%&wEfe~gxf&r}^hDMen6Vvlq4=vNSxnQa88r6km$ z_uiZ!x1D3p!mJ1ijXkoXJC8~u(X+dxDd6faAL$*Zh{rPd^CI7Mc6jZt+?30BMQ~)d zarR!PbF<@=Z(#DB;yEEp&f!wH{`T$*6Gdlhi86WfwLYUn)uHanj&Ov=bs@gv?tI(K zzOIGn0bZX7Ebdz0V%zyHB z=3lvQ{ml#U&+ze@g3+3`_6nM0TrhyXr`}KX=7z#>LmLGY0Hy*VCt95)_T-f?;oti? zM_VGpXn`9Y-in-XY(nN4XZs-3BN(NOo1&S+bss1I&Y<9w)_~-2j%|mj%l)_TFJ)J) zRk{-6sO1>2*?2~T5oO|Yv42CV4&{RsC<{nuG*^%Xrs;Gf za76RnN_?bl&$YNt&9$816h4A3Vw_syM~d^~cA6(QA@82HfRpi}ZRn`Qh;P_l`P!N2 zTu#;b-f?DIXxr>3Ko>J?tu`Vk+K$0pAXQ-EPA%W#v0l7{RkC$tfR4Zg0aqUUCdco7 z@}1JKc_AAryW_rv_x)^un!%^%D|~F1Jh5Xb5Fpm*T=-h@*0A7JZP9Ezwm*?eN??7Ld#)DGptZzuA(w5>1E^Wx`m{?PHnf={Io%-z|Tu~_lDz3-?w@@H6&TCK0nr&4Vu^XoOj-j*1B zra8cPIUL7?0m#q}1jiXjS?Y`jtC(eCZKKrj@Yi=FQX_}3vq0|BLod=e^?(XwA)W>> z%j*@^9pg^j1-^Usr2PK0x(3CSo3$p(($D|ECSHN#@Ai!Gv2^ zE&18R8jcny4O^Gi>hUb|g zmMB6xBV*qN2ILr%LXkePDStHI{gopA6K9%tH8L4SvR1zS$Z^{yf~tk6hXZ4zclU1f z@@Bci)Ks*q&&Tteq%y7uVZyx#Xv2nlsP>&tx2XXqAkO+Bw=_dI%4(#dt~Dg_Q^YS!J^2S+ zrs3X1ff4uEDja<=HJs4ClHxA=+==o+BQ|f@@fh16PFM|X1!G@&jG@w_j0cbDqw}_a zPpLDV$mBft$i)5=pwoIEhAaT%?w;zJm!h9$jfbR)ebT~l*ox=iSj@vP`=sU{;A?eX z>HYbibXWo?F+wvX`AIOKB65oBQsa&1WM?vT9LgH zKAEbbZ&;`BHRdojlSqXWi!c5!t<)>5qg8wQTt<{D#(64!y{q_CX1qkNmTkc1&$E*U zNWw-o3g?%of>YW;7-NtVzBfkq)8rFw#yFgy>5mtDGV(ur@A;zY$PRS5F2 zhQBk7vt&#P7NPa630$!Qt+uviz*S%z;}l8}S`7O#f0usrM|}t2vRXWJrajbNeFTtX z@+x+oc!*5(UWR+P*2cxsc=B#dmux2JsdKpQ3F}r*cFfMW37r~GslDoX2OC(3wH3=Q z&iuY{qA;;MH*{yfcC`CYxl5n2#*ciB8{3fic>aY{lQ91B$eXS-E-u{$+YevYUz4dm zC6UL>_#$Vjl|oE$Szlmw_x)t;60i8N3?%k8SN0JP+9DQ$Mi|PPX;Wd!Fcp8)DR3uq z^NZ@7I+uqLi9DbGH96faPt9r*^0Bwx(Rsljhg{7E9GaOPEOe)we+ytk&YS*xtgH=o zk=@%A=i6+Ro9K3@9*n%Y%Z16|MJ0%DMwgDunN#F4C<@f&X-Y%Wvae_(bCrp9Gw-Lj zG;APqS!zM&Q|nlc`78SAy@yq#^w^MgJtR^6wQUJ#Pt1Uu_wf?FFod&Yf-;)vsi*SZ zJqE$1ERHhXvvNfV-H*vHa1pB+YAzDoCCL3qclBKDxjQB6VGfu0&gXru%VdgaDU~_D zFW7J_n^<@>X6ifYJcC~utF-oweQ6~yMxVgt^fZStmz{>f@iWDsg86JCv9#%yJo0VQ zlT)rjO8$4P1KZX){wM7@c5m>PcE&07uc$8K1QJfzvyRy8eD|gDx&pK_T*ZiSe*K3= zB@M_71}dLUg$+ZMHQC*ZbjnCj?4s}frf$Tfo|#I@D)V%Eu5HF~ zxV(YHmjQ3F-kBknO`N4ire8F+#>Y6;?GE&-0@;U6H2kS%AE67tmB4yQP_?ortfEnz zHT+=G#pH$Wa-ZPClpazVH@U;LeUE+X08+@^$7{Vz&9dPuI1YKf zVsJ^cVbQ%*gJ6wO7!RH|wr|N5c#$8>^>1cX^##`T;Krj7+!{!uB~huYTKFn9(n%^k zTDyWQIdF^>v}c`ap6S{rd#Z326-2bj2KmdA#kkYNvAv?BQ&sp{Zyk3VI4tW7Uju#~ zJ`RUv(dQgbd>l@Rr!DLI2Nvwmx?p@|skT5~rB!{b)Pu*|Wm58veS!`KoO-x0$ZNf# zZ9p=ki}^@vB&=N8KrQD&9?N4dk#L_`_IW4M0iNYd^))|nr9 z_od>GmD)5HXq;vf7AdA8X9q4%>l?~?r1pp`7f@Svk*xuky z&_PVBV%YRAl2an09p@o&U)4qa(YHPUG?7ZExHJ zujlPioR`{F3UneYD|Xy+_j;*$E#LZ^HUK8U*{-)`*irjW{MXITN)|qpjpm=G8~=RA zhvl*x^D5&VZ#N_NdlTxm7sUWlKDSAF4{opY z5{Ncp@AwelCgvjRS%n2N-%+QN?Et8#d~idGvrwAWa~O1lktV-b<e{6Wx=|cpht`j$BnFSsg5N@)|WAaf;WyN{EkJNqe7X@#~$T zYpNfVZ@gN`jPvnin@<=~D+1igMc>DAmP|pYI71 z3eWsYUm`4{tKFG%g5yihRfJstVnD{m{e1Z_`_i*6tScb>qTzA5vLp^74D6d8jas`1 zNO?GX?~gk(sYJ#teuV94F&>BkG5C>#-zzs(fx=H88a95&=)XJswJ}ttpzg483EGZ1 z#~PT%wObQ#*9dj2cX&&h;8^c2a|?L-9^F}72<#Pwbp>*9X*W1VDeM?_e5A$~Y;Ax- zQgMtL5N9oxqjiVTqh@^SODX=gQsPOI+Q;o`-DjR7P|Ol-?dp9)fkCSgmm?@VM=F*`Xi7J@1x2OioYMyzh>8g15kP-$)?B_Kj4Y_XRWCdA6>UL>3x` za#nQ&OL_TTK3c1g1yGVP&d(i|r^5@+5Ig^pcet#`ojQ-47__GgWU6jG3EsZd+=# zP~zVS;?M`UMQM8zXZ;&|AT_sx;*Lyb!EbB6*4vwJ=#bW->=E|(mM5=nR zyOcbtM}$-~MeAnoOydO3j}K(8Z4ZT;efPG6`&FHtDHxZXOSd?TD22~1b|skGjYx)F z5B2lA`p8_fG0P;&mzmKn8F7h-cS)$Jz@Vhx?m3QAcooIXR_8ip1&tb z&{!=^thECj-wErj>4V(-iBkYH@#%Xpcg86zQ#IY&DGmO*)D;c=kdn+ul68lTk?hSo z&;R9RTeC(w6rQ#=HfkNSSJ<=|lwxG!$6=Q5?k05a z2Km&6kr^6!YL29OGQV8ut!OB_E*koQnPIfx#>QS6xvE};JF9(qkC%w^Fyk!F7gI#q zHaHea-^JK7g@{v@ZFr#!@j%LVVy1yK6<~p+Ih`#~<^n6X^H8yV{^(9)53v`#gMTZa z{NQNBS#4!@Qjjv80S@@_ZU~9``5grI2jWvGa_INooi^BW|GmM)Ew-NiG9{BM;FhZ^ z8Oy0c^N_VZ9lqrLwG`i&!zH|3Ru^lCRt6Mi`3{ne-qrG*k zK-Qbb<0%h7QxWxrQW2+ox1Jkqg2PKi^Da#QlINu0gl|KtDxQyaRN+ntGhBA7)U)m* zTSL<~tpt{oD_3CyX}C7y-AZ@D*cOJ=YKw(_3FEIcMY8cx=OMlqJ}JWLV-@rTfo7gt z;SVZ1!`%Ap3Aym5zhkfGSyjX&!X)-7AFEa#Pc7sQ^rkwebCeYX7L-q$GX?OQ`n2U@ zQt@jId54;hIQbv$NqIeFor^m*E|UAOzma64C2CZ>xZyP$@Y-CQOCs{NFGxY5On(*Lg9j(Zr{C=y6N@=|oqSSk=1beHB<$1D zvd|kG3?mPVFWLTBxw{f~uOTioA#bVL+0LoPWV`R{+!M2j9H+qEzi9oWsy8qEEhteq z`=Ro~n+&1^oL{V7g{_U>d_8~&N1jJ-Ft7Xuxwq(hcza_}+3Pjt=^+W0@@?HdEC2W< zpQ0|E9mL}#Z^X&u@zsEnpy~3O&D(XC*19-km~dOZ96sHa z=$xD^$zN_Hn`5?XKeZeZJkWfbx{SrQ1MY`ADp!4a)u_=qz~<|G)rcD-zt1d+6gYtH*cfgH zc!pzzYVw)N3@r*-K~^gdpSz(SCO!QgFH@?6%URT~6vSq-%Qmr?xAJ3mm50O87 zrM7p}p}-nyT!pD|>BfCgg2QAp=B|HkK?mk9O4|>loyTXZ#4J1vSxJvtX5K*on34l#n(lXmJ4kVJuU_JQ z(`H@*;gxngAL`xlZF#lnn2c7}%1Sxw9;Ev|Y{BrM zfK&I4-9M1Zvy+RQAGhP7mDGT7E5v?To9+eF1bg%dI+SnSGFjtz`B-;VlhbxL6-X2O zhTEq!{}*l#?5x5UznHYWwzn}$_w51SGGE1{jK1>z4UO+A1T+DqS40kfFpTmZ@>m1I zJBZKpTLm5v{a|)r{M*P1&f)_APARe3XVc2*{Xwxi*W>s_RMnP0wpiPM8&~VzbU0_7ATO$Xvi;@@(f zLavo(YsBf2wMMjT9HF4%?ssVbY(9)hV&u>R4nM!E3;+mAHZk9gkDg4_!FW~-uKIV| z?KG{vp}w)OwRdYbKa77R)#r+V=oeAA3hj9hqc6F`)%a&tw-`>^dzNUq z@P9d2o*Ve>s-J{!bd>Ikrrb$6Jj+}$?md~m&+nr4cGe#ZO}%xV%AE_Cd))=hy;py3 ze9U=aDL%Fo%X15dT=mOOy0x9K;D#2SpSQ`%I#?F!p#0ym>o+fQb~Ql?=46DxpM+A% zBL9cQIOG&x-uuXbtR&1Ud_~e%98wnDLu{h#lQ(pz&8DJ_Cr{(-ehKF?k(LI`!rl(- zg(flZ{tuA%S&?2c&DgwnV21+R-l>wtx>XzQM)Bp0K+^Hx5qTb^v$tR7@0kwqZ}*l* zROVUU@bF9Bq?sAW4j6eGtte5U{)v5Cmtn=I&GP8iu#eC12}%*l-4UM3|RL?3;|&S?)d--eCbC z^YRE&ME?4hEJ{-uRS-O#t`&o_m%%B)0mxO}6rlT^lji|E~C_C6%J@Z-+n8aH$CvUE5o)oK{kah7!EZR$*oMzoj>2J6;3k##2(XO898L%(9+GS zbUa`(&AbmX3Xvm6a{P)T>mm~i7KKJZ4}+_4-#z%|d_`X#XgVtFJqFnqU1}=jUM20N z554-hZp%Nqiv>S_yTLb^c&CHckN^INrdD{VmmjJ%|&8qr+mEa?d^WM0$EwT-g?TD@9?H0D%w0bcAFdd6MK+%&Z(;7 z`oQ6aO2Hd90lLy}sb-by^a*86rlf$8DBgCT2gPbwT?V!y<5{e{7J$;tV+R(xp(b3( zwuJXWa`v?`<$;mM%tuz# zPwtgFF_st{5O?J)EncQh(i$I^OZjx!cAYL|7JuR7 zrbWwZyq~RZJx53DvhaaYY*R4cIn)mJtzxjT zK<#bDZTh^3!JOEW zH-m}|nD7~Ht6;AN$lZxA=ylc#&vA3{`j0Ud>`#&1U3WB9bH8qF%+y_B}##TUhgGvDt1E~6% z(p@RbQlau0&nG|Up7(g!qV>+Nag9aby@ zP4=!`Jq^MV@~V8yNqA0Qtji82-8dn{q5(wbAZAGi+4YYC5VBC;jBHMa5d%JKwiAMR z+H{WDlkzdUM3aj8j&h?DLqp4#ui5t`CGil>JbJ}nQq1*)tZG_B!x2H@V56`<$2$AL zxMFtr%*)%4{hpt}gbSmVt(l1brP=YonaB!CjYvMZam6C``4xT&4)JV0Q`3BltdX#< zQdftwMPm4uXTKOE=V(w5En5!{ld%^jXQ&Q42;9)QM_YRQaa~ZG&zwy4*9fl2&lrEH zuQ!ZZnB)D+ZKfKwTUb(NNatvyeQ2MXPEAjDS)v-&00ANkIXGI`K(pF&3S>cIVnYl9 zTdD9#A1klb!sq@Z-9W<3dJdfY^k8?NJk7i8%kg=Mz1CA!&l}_b`bR29kqSw1T3x9) zaE`;Vrw&gYJ&$mCz+IIbpX6xUeRxkp^XXm-C#5KFAR9PLdGQYx+lRiJA_>o*? ze@86%QDy>{RrvX5Uc`}Nv}XeBLw3fPQQ2D57r=reZ0)QHk=O!2CJ*#AU>M#2aV0h6} zG0iHCIh3VT@smRxbGL+|izjp;n|l4-#ob+-}^d9UdNIcU}%Qv)OC3 zF^x0IlZ-wz-NE8K^j$D2Uy2HXfsw0v+x+*)&;}O7mVxLt#8MIn)127?S%YCI_0d;( zcT6*>AAj zysT>$YZQZs@3^+z&5&m%W%S$yBntTm5eCDMEAT6qufgAG?#^!K&>Q&w8d($WIBrQz zn4PU(li52to&JpXte2?lfq{nl^?a$v3cG6e2v*i_F>$xxUITbY9r1<>b{(7>;Ba|z zPT*T37+b;!*B7)o+&Z6^28BgzR#~{zp2FjM>*xS8KyRSggR$AouLzP5SHn>iW}iZn z(1HGJqUiOhUZDYE&iG`X0-UhsQr@z;8CFV$1i`4$Hz~^YS!x(?^^Du67nDivVCBD( zEsOKeoS88ImEyM4)b6KoC_}l-k z#{ce(|9i&<;2RK}3g{j1x6OQ}#q$1PnJIY=H;%ia|l&FfKj8#duGGgK=Z< zpzKVEaAm`9jTHZaJ^uHM`^O(5JhFiZk2WE~Bb#^6q)>C=f`Uo8lOz_H|AT@}OTZMw z1L578^17Lzx!^_*CJAZDKRh&UPXRTBT8iffq3c@dI2#Z->?8s7N4u{$vcjX%FO*S~ zG8c46z3yQLud0nryK*aq0ae%Q35U8AW$58VriInJfeoVlc^@-Phz*rz+yVWlRe}}D zDQJf_Ox8|%0F8x%aD1s#3Rt)*0q%WMB5mn5%J!oH8;kd`ErIAGqb3IYi1#%AFx)Qv z;~6I@o~SjM)-TKrNaSx)91S1w{Q2`6R}BY+e+|n0;+n4gf{3rUdp;CV5ifV)fRF+z z_4wj59%?tSms(W)ll0q2F-_v2qnAz~tCc@?^NeFizKW0+We~7&UxkM>wfyuq!eMbo zW5Rvs+EqZEjzv1JA<~13pnCQ6D~h`5g03peL*(!oXnP#Yl7az|9erHbI$qQxCBBQI zh%T>g?0#P2Fj$;S40rRiLZBbDkSO1suHBkTbVF5)05CF|zPzXB?Sk35qRK&O)%AF~ z7U-n?s;lCUVnwbGEo$7ghxqFsznpCLCNS>`knSReb4lEgGp*5sVUq{lLPcU8OM*y@ z+0D2o&ZHlU1m5a6!Ctrd)U!&rt*AO4Clu+NfnddKdkI}~SW!q7%{vMsE#-;Y zt43Ox7ID5s#-Emp3A*S|9e_avxWuQvX?K#I18Oy;ryX6=@cOV+i*VL3hexao<(nG@ zLO`^s`Z_v=vg%M}_~kV#fgbr(xB8{)fqMw;6mMWq6HPf#G_}FQro+({;nKky>s0=sa)_9FC#vW3D@HHh=PAw(LC*xpOq6+orNR~fR+kaqxUmW z2kO%%6O-aU@ibu%L)CV{N&h@57+tT+-n3+KQ^4>UobiF0< z>ntBnq6Dp3k3C0yRob76*@xE%ZhU)o(SKhtFPm9o-4pZ?Q;cI^{rrQK19`8=ZhS_rY?!S@TEE^3IbQ zo@v3d*B`Fd$ND1Jmus)rB?D)B($>v3fj%?g7KMn?Vr?XT!fpB^2QCQ+Q`q;9w9G|9yn%kPp; ze)c5wWw;BXiDo8Y1(Upxee1rGi?GuoptJno!5P(gNWYaFM5LVfwjD6XK@a%_KICMD zK(!WnztwFL3A9hwqysgviKCxuBQ;M^tXKb_s}qa8^~JS#skO^*?(|xd_=+~iIu!|9 z!QJ*9@9U?K!%rmejR*`_kC*e;a1xmUSjsz9>Qo%>+e@U6J?%DxrJyK$ei>^~DEamj zWa+nxea4vZ!R7u3#s38iXaTTg-P6-L7EEI^Zdk~r9 zMoei)q-=X!@y!NR`9r|r*;sW?N`UUQ+tVoz&Rj9ZOieDa`lLx9?ywmlkgk8@lQq>d zQklfk*bdtzh!P((SsyqliFJVek5rvbeK3F}lP>DEqpvMJh_$__rVvaVo)77))!4wU zKvk}>0(h$H5+w}ioNzHxksFkOfjc6mLeQLYOBKl5tZjX&SMvfT#{%R~KpzZInqy<& z-3l<|z+_;>lgFZgM)p&TAP*7@^70!Oojwcf4!up-D6X43E{L_S#wg@^?m$KaKzyv< z;{cM{5Vtp|KBIdHsTIZN?!3e>XArm>NGZAwSy3Hk0nNZHx`B&p0ze$uz337eAs&&Q zZEmV1=riEI384HpsG?}GpvecBla_zgG%mi`KWL9YL2;UL!C!fgKL!8$j{g_-)n-6- zrvhzoMVvh@_R~A)H`#4!OK6s<)lfb^>dQ6)!35##8zmsI8We?Q8NX8nym+##gjOyks|TvLh8m)E_4+a-c{Qp_zX{`ROfy zQitZpy&T1*bc3p@0S&h$O*9a~xbM24!n7qr8BZFWsK@JpC+kS1s||+@#i@ zSG&#t`$(lhPXSSj+5)kPT9v)TM}JBMDnaQsYwIa0-Uo$|ZLj|}^^l>1lK(`1%W>oZ zFRAfs042)CK|d;i$FM0^vINO-yoBU9rUzWf|CSm<{)FrgJ(N-e8d!t~NdpmoOEJOD z>^9v)e-zCp1aV{iGfhC7AU;iM*7gfy0i6&U2pU6%6?OLkq>G_2mz)oN71#o`_tv;O9*Fhc>-MQ-nge~@e+6t^T17YaMA1r`a zhY#TK1f7sas`*Pe%vBZgeJ*Ms4&Lz=Go=iw!FQ+zYG^SK?LDfr80uoRz4#wc4N#0% z8iHK^)&Nk1#(x{-fr#cI*(;Q9e9?3|YS4w2e{?wvz%QA&C4U7!CV}D?rCed;G=%t8!>Dsj{D~GVSK$3jqtaT`;7&ccu-)VJvDD>V<2A(LL$~`f5xS zrPksrF^76yV_2Q)Wik=bUMBB~4BcV>eGXw|8rk3HfWg-d)T!Vw$3okr-oCzt0_>!l zPp);Ai7F#oMY&fWy6z8$Hm~wH%9iO~QJst&eiV6svrU9;?}ziIMAjcszeFh5TX{{P zSdos_&5ia8rkMuq9y>(snK4;LQ%t zzhZng|G0^`sj_)5h1d0)uf0Kf{QAGR{pih(_@CFu{KJ5-WpiW-SbFG(MLx1s@|wHS zaK#Wwi@hOazadmwgIT$BIP7F{IFY|vSXa2RI)EI=CR{-69)ZFDn9qJB3n)`ME3P>i z()4WOfy;Da6t55E#U+p}Ee58j_Vhs_HZTeoYE*Iv3Y3l#R7whzyy6#cenW#wtH7r{ zku$OXTM8UK)4z^hB80LhhcjMyecT24#yvBc|jtUL$?MI zZ>vJPzdZLYl;woX`M*IAPCaZUn_GuU}w z6wTiT4T0IAlki*3RUbrE5+&;Ywct5mz&ffqbD>@fY-#-FJkMVtK2s>l7?~l8QeT6E zNKJ9B9>-r9x7+dHwZvO?9MEe;!E5>Dqxt^6HUbL78aITZtoAji4zBe#|C(@r=(Vbj zrO=v63a}gTSC@JI>hN7;v>Aw^6u1foKXt+vv&Bw`1d{Ygpe$6qYA$H{4+-n*#IBm&gjrq8Dz za#^xTAHVH?!R|8BpJ>Einp`%@y(^}$?=SLqIN{7f3P3J}qp0EcO?q-N&HwrBC|hYs zT%U5YUH$H~a+3RhrW&aEe>~akJEnW(OYBB%+ld{iEKH%C4eSy(ay%v>mW_)(MA4Ni zKSrq}7C+IHa;o@jyJnU~=oS1B*^4-CqJB?kBNVR3@Tcmo0&b9#ak+g4>MDL*s>6EO zJhP3MM78YOOra&83paZVo@k()M{vQvJ8|ghGW3b)QLM5$P^0=yrMSScbH1MEkCwIqp5tH6{#HV`9(>LQ9OZo8tSBv;0)8=3y1MW_GX+Y}yu z)UM;AD^H-ajE$on2kv8Se%VWJRvaZS^je^)xe4iwRINyDfF5(p z#CW%|G6#*ctmFOR%8m!8SS`BPmkXTu7%w6;&`SQA55EyX-r=EtvznJ5=3mvet%44JoDt-Bw-H?k#E6`Mc{lHDflXZ$6GFlPnT!@+OQ|v}0 zAy01vexlr;j{v3=FeAB2$yN?FO{}q%Y#T=E%-s8Z#NvaNGhjX2Oc8iSM`uH0UK}-; z6wZ&fh>E45YA(po)n+10EW5nzq<-IlxA?X*{MyDQ>DQ;wf4 zK%?klsNexSLtyn`f5&)miacv5@1B)M8io|KO;$y8f{}|@?9-?mFv)Fk5Zw7QGeC|z z2=8j8)o)aOVLVqW6tM0e;7*e)zy!|(DqOZ z>qD$5QZCYkeQOpb5A->~2z+_lEmureKY~i7M`Hb|qitMFv&Fx4bOh$?I(<%##?1l8 zUB6xrK|V*!MRstTrYs$c3;-v1*{sq(BA`N0w$7vR2X;wOTZ%i-5~DV2P2uaV?gI?Khfu(j5m z|KAD-&|QLR>m}~=YWZi}2U4Mt-bNP@+DJ6A@V`&{)5QXDm^^UR%U{`*YM+sIES6TC zYzO?r`#*o^rIZtepf!)9;Ip4|2FH6XuHF}dH2P^#(O+4+W%}zT`T@ytt-^q9Oj9OiqtJgnI)lJFicIc(t%1 zg|K~81!o0;KM408z2ruUzU7Wvrf~@sT?R-@)Nec4c&MWq;J3&Fzw{Bh8xJfI?{?;IdK4-1vGy){g`H1kn&T5nDMrrQ2F(>hb)H=GR9zmnns+ zK$Do!t&?qU;N1zrylTC^LMC){p{M8y#bC=^1!6ErJjm+@W<1C~S2oJtD~42;CyCrF zYw>1Abr|kbb+cZ)#Z^EZcu3pLEp4Zu`30RjVNM6Gy%-ar1WB-)SBK{n*pDEO;y{Lu zG&9WC3cLBJQ*Y_Ptju>$vJdb|N7hAX$K~oO4BDlD?nVV0#AV%$+G|-5YcR5TCU=le zRpdH?+A0@IYdUDU8m3mtzq9xIh;j9k;N>++S&>mit>FtXGDxj2*<9620NqVTR$$km zo-M-VUL2+g%9#`R?CJ?;-;C2UePUY!yO;y6IN95zClu#=aI&`xVI*4`5k8yX^)%(jPtf;R zekldiZW2KQP8WSD=-rU>WCjTiR%DhHvB`JIT39&Q7nC+OP9p1M#pHBo6TRCnf_#5Y zQRVQkWc)fzoJ5jbAgNWWm3C(MDt%HF4s0}{G$eqR3bf+O?A_I zb5&fX>{`CDlos*3`eU9TP!a_L^qDKeywskGs23bMTDHe_;G@h|IYaK=Hyg@i zHw<(VarSLNht`j~*w{4!5tZsO!aZ=sIsq)=X-fcORW;cj|HGAET9D z!kK+l-OmwN-$_qO@T?5eYhm|r6cux>RzZ(E?g-KRX6EYy^7Z!ndAi-D;p6H26{sVP zk7S@uW>&F6v)g>{Z3&4Q(_F{&=>b;iz0W?ZVfMdIA&4Tz1>kU;9^rC16?@ciT|lMl zhP%&>{cd0+wx76$H#3nKJrP^+-O6Mw2(D3snFGNjTm|l+F#vr)_`UwpPJ_0Q1PT`^ zE2+wh2s$7l2kyt`l|hMh%7^V)d+}ogWMZVMzcMYl9uEt?|4g9q*-B4J54F2?y@K&@ zKa%E}5pe_}NHZFi?EN@SrU13hgR|2Z7y_%DT}kxSEuLogCw9x5R}yV9mIV*CFUR5} zs($GysKl)CkW$Ahg~p%Gbs|8mub3!nVxpFM-$&G(>0;sYBZCaRX|qnCX*ad>T;BMl zxv!P)sZ~fR=K0XLYdpSJdc**ZYh>RSa>y)skluCoapf@f`l{_FNxs0MV`Yn~DX{F0 z*HkSHl$fNbo#S7HhLH_NF4(=K>jOe@ieishL`;eCJd$SUlf7*><-Wau`lub_;cj0V zz1t#s^j5OZ;!m(GxNmNJai*_{W`YHew-B}*6rP@`NBcQj8-vYN%)!yd3MPti8tED| zWJVb@@e!HaK8lxMBC5qHg$1P0x=-f>-TPJLLy#2wT6bXr56?TnBW+c;-{u5$2?ReY zA)j+btxLw_n{P~s)5Mmg;mFIpGPimyZ7fdp$}WLT0@X{5uaM7S3mu5O#!TWy-JpbP z`?y$aEj|H3Lt&R0a%05v#-7pRp9|ojd@g89DJ>g0lMa;wEV;46N)zH&?$YO*>| zmAlQ;b|1VUhUq3XG?1wnGy$#el*E|a4ZR@}Im(u7dOxOX_^2`7nBYnXa)s5N4wQ*G zw{p!JroD0KeI@S54X3G zuF!C%m&#EF*v~ohCmogM#{PVqWj1lfPfew7>&Luzb#fbaLR0!4CtkRU_dLANs{4mp zMF>W)NwCrRdekR@GiVJkX}xms2C#e5O79DGA|OAllYWdkMC1`qSzYX4BF7S~O)d@3F&YN;h^#gi7x{N&231KJ zTq&tE8F1S6GRbZ`P_L^rUCI7-Vx+8Mx0mo-sq9CAlEr?;5F<8nm?5~{IQ$7Oa`s2b zi-GVan~e=Br+WSzb%yAX-nqSq(NPu9wd3iG7dE01g7{27idXX;d6H^mBEolE23XCfj%^Uc zV}p#OB)C{>V=WzTjYg5c(K0cntumX@v|2N>y6x@+j}?m5rk`@YxvJ?H!Z=ZEtPTo*hu z&-3iP*V=2Xec$(Tja3p-$a*aJe0hejMrNKpEfQkmQoyFG%~%FjW1;3K`I^pmIGA=+ z6gK|;L*kA^Kv-k>)m9#WM18@Rc7GNtM+>BS66}5=p5Zqp^G{|tI=kJ|R+etB`vA3| znzBVHpNH-NSWU5@Nw2db-5%D|hg0-U3<>B>5ijltV(_V1L=hH&Lgl@?^TRyMQj1v&%+jF(vj6!l(z;lnD!jofP=v$D`rP4pl zo#jR}jY=eNHB=YJsYCauFLU*OI-7%{l^ruxHg)DD`~)4pP)roauHpV^i$@_jd+T;6 zW!Tj!oCEjG-Mcu*=Hlzw@PqEoy_Gr}N6lei7Qhg8bsB7VE8eTP>yT71Fo6rpeSTI} zF;_2~TKC>qyjP)>Gwg>Ypel3=v=V4~55j56xXR}e+8_3T_694G<@rM#3^~f?A;Kg| zAwIa+KphB`Aad=caomf#Np1MSo;g(7)(|YdCHbyM$=w8EIL#=O8L6!QqP9`RJ>679 zc3(Zla*oR@a;B6P=oHss#c{uji=z6H8!&IpvTv{2R^?l)=o3Hb{f=WuN1Z3635io? z*HcIgRoEP_jCZwG?fLnHym0d|Nhf>RrjU;7Eq*=)@Zv8xchHn<4K}pmGC&R&LiF+%2^`+0L5e#aktrkbIq=ix3mGoaud5`Wu)tG6_j zrEO+hh30pmN2FyK!8>t^k@GKbn}<5jO6jK4NyMz!2Vigo;$oYIj3DLgtMT3(`kLoy zTZFag+r8$~T_xsg0SQCaQcO5=Eb!#=j&TU>Tw13NeQqTkg9E}>SFc63u-0QJ**WP( zIez0Q;oOo2F1Y^}m5=mH0Z$Z(K?fGdeIL8G==jCz=MMHPTf2>G_s;HJ=c{hY;h|2t z%m$<1;i&AZ6-klCC(kQwHBA9l=ZHw zMqb4HCEIt-+dpE|s6OaLa|}ei@$>;y|Bn#fRS}KX(pdFpD}Q3J!gt?_U7Qjm-FYe2 zJ1ER_2ZWNDlLnu*!7aM%Vy^RfQT_>u)Mv7bRuAezocned3-uKTvePHp4E_+?b2cmAYwZqp?<6a8)D=(NOA=O=7k1~%L;WSuVZ8xc<#{#_*dWOCdaus2iGq*+vNd}`OoLv1od;qZ zWqw+Fp2wS-OI^P2-3(@6P;}pzX7ezD80l4`ccdolL5o`2jGLj1n+XMER))voOi9o> z>0w?<0h8KUzaj4ewkW$;qd0r$3FReVr$C$_egcoepKrJQ`1l(PW^UN}k4(mGACr*O z=REVY!Go0y?Gkx1sXTQRzH~*$#m>SZ%lmlC7Xuk@O=A1ltOlvT<2`uGQ(iY4L40RD z-nt20Uj9;be(Sb`D|+c!dYTRdEUeoq-4P4#`qLB%a1?9(x+||4Zhu%%Wtteg2U>W{ zZKt-?%05IF(fYs^FAv)%zU^@=v^~uq<;$QZe`9c2+aIHf+L=lJsF>P4VjsNT42n^u z@!mk2*7j?l6U+rb&Q5*Vl+yX@IW7#Cpp&+(iM>4=C<2~VC*AB~aC|^F=WXMd^FXaq zQZ`(tEviU)mMu1NlIr|3)G$gY!=58HeXu3NLF>x@N?B zM|8k?9p8Yzgbs2~)cElo2$&+Sd?Zhg!Un{?7K2+BsXh@u&vjm>4etA*+%a<+xIlM% zE*)I7ofX<3+RDLUkl|?MpM|R{DCK|h37X4InlPZP)g49+3B7!qE4g->KQT^kd3TXq^D?@QvyT)T(MX%+NpiNMx z6T-q)DtM4Q7^ebp=x>wdKLG%@k6OKTWZ(N9PnI~ZVqj-$oB-XKH}Gz__P*ZoWl}Ro ziFziwTI+KF@t{oJd*9|tQ*ym!AQ3Y-H_7jgBV2xKYzI|V)rD1SSb{#V;5I$GrbTRS zYb%sRR%A+MdEdcVQp`;TnkuV!NefovqV#%pjrARDQ?%2X9Y+VeJHQxSR1kffIftl| z?HX-wk7=ekp`EH~_si5rYLg`z0>a1yuIr}=`CaF9@5z(p_mQv9{ z@5!=~qTb9{%u32iSiR)=(KRm@&0}YjD=fssOHDVWe)aaWj4E1Jlh)_iF z)~ZR+j^xj^DtTVlO$}}YX0>U7T-GkaYvY@nh4Xlsnb=RU^K7CR+@!TOfb5HwpP`~h zU8R#-ij_Hn5{}B0=)fF1qD1@A&(UYarzm;X;ILMEMrNX7@cmY>4Q=#L%EtWV1h_$;BZnvHt{(|KcIGt)gvzC8H;_E6u}Ocb)Masayv zF6C@HTLwB7O0P7+dBI=BeqI}0u4@*hu)iy$UUBeg-27ba)gC$&>3QmVF|C<(&P@$H zf1G1ce~T&xblhY?oJT3M7)zDRP2NH2TRsMHgb+Wt9fH}?ErvL4T<7hlT@L<|$|xA& z^%J$0T=`sg`E_C<_|BtxgZbg{;o1B6m`&==%-3K14)~}W{#nPUJ^hNYo?h>ldjdg` zT#I?*4Q}+doCX0AjEK|Ri_KZyGkCn)Xx~JqUF?2F1B<-~aS14~a@esohI?GJ9m`ma zc$%IG;7H{}yZ)^-F#)EBK?-5#(;N&SjfWS{HKyUc5Zl}UM$2TPR54Ldg?K)_P z5(J^FvNt9>eqcP4zsnt&=wJX!o91TowW3(-U_6y9^_%3O27+K0vD3D^vns~^)~K+F z_@1e}Urh68bFz8beUvJEs4RyvYNWf@^I}5MvgsQVVH|UHba}hu-dn-o+rf;mJ>!$Dc0+B+uaVu*=SdZVig#%*?U6jI&VXupw(2z0aP|KN~m{`W}y$OE*n+Z7Xq) z;Wz4u8x2HvB5%+tlJ;hv0l@DZL$ko1gpyoy+E5=vl9bwRXVm#pT;rVx)oA{ooi)*D86 zrQIbsacrXxVypOirxF7B04*8W*~ycZ>+hdEq(y%)34)sQZC&TSc(!!>iE<5BMwPR$ zq;xyHV(-gQvKV<7Gk!Ot>&ul^t5^#e8zK>Oll~m8K^t^--cqF1^@XH}H?fxmXf-Hz z>XUE(Ev%DgtlQqF7~FI{?B=}kF|UAO?RxgwS?KZ_!aKzAr`}BdH#1FIXr|lCNMI)t zw#Unb*EUOf+zvG4V9n=^l$yWJ5P%G$icrH!txffzmYrT}{`n+Pa7MxS?kKdDK?_$v%<PS_m{qI6C>o@jFhd7cv9u0BWY&cF+ikPo< z26<@tCzp*VhqnoKv|Y8p>$(o8dF|NA9klU}$EzAjHi$6XF9)xaNDjl1=Y3JiL%TL^ zuB~2X$%ytjD_G={mu07>w?Ax4*2PK<C_Szx4VqL1)6Ax>D!cWl8nE}aGc<VhO-2FT z62XSo`I8JYM%=3UC1CK0Pf?D;#Kqz{ArOg^<f)2`JN_07T^cs4>7;y+Wj7?cec5?f z<-+%M&((}#3eqPS&^_y6ShWV*=N9JE{FRHq8TI;;pr%_}tx>aQGdVrMPnD)hltv76 zScx{FVg4j8{;=f-%I66GaTs5}TjgDPk-ymN{jLkNR{_S=Tqoig`9!x*%0y2>laEDT zvq+^y#+}j3!S#GoCDT)(8~(N~N8N`H=5S86gDKX~sRP1p;#;n0S?9gc*YYzw^`kag z{jN-v#2`sP$1SIu=(HGA8g<GwN>SHs#W@kWp-i#G3DdpK!<4eJSTmfETb64vBL{ka z&kF1JsLPK^ct!`UL4tD~-Z^AWnIj}Jh@aN%5eO0MDg$TNon)FdpJXw|PAt&xTNMk7 zTfahlrYm)?+fCn09Lji?0j%BR-I`a&iHg}mUcLvKVcmOxsDO3dJFrLWsiuej&_6x= z#VsAi#&)d!e$Ov?e}z0L6EllV6|1psmjlgM_^s_{I8Yn@;L!!d)JJXnoAvZ9i*}Hm zXljg}{)Jo|Gy-Ugb;X@ooc?);GAQX-ZyNii<HwM*<@uxGW{@!npi-cy)qX{5dxR+Y z_6Yhsz0z%~ELn!DedZf?EFk9V1C^O5DF@YA@7BBVMR}^zYB_-7W0lnL!wn@xb+zzy z*+%$*xT%DK)5K%CB@oo$RcDPqXsa^CW=x&IUpE*i?)Lhv$Py~a+Fic>roVBO-s3YX zz3^9QxPLZ9`}Qsm$LYL|&{!=H%GeKjyA)Yh$o)SQw!un`*wM~I4d0IRR}F947A`E^ z71*u%jl3&zPj^Vo4m01nBI}IlbI&C=(7CqGr$)ZB`#fR)eZ}vf8F=S&+nq_OJaPjR zsg;-^!qo*{C9DB~Oc%h!iX<A;u^4BExdht{{CkVV?0Bh@P)H_(2X*J~iY-=n8`!gz zwdGxPJfsE<rMY*?sn*;#PQqBk3_%`EgGP6Aq%<1=$quuX1`3MF`^7Of?SZG)4Q{#i zElC?MIY`NX0{FSHtnAH#tIswz$|KWf^H5&Pk|0-6?)Ci=f(j6SAr!hXN-H92Xhhqv z7wp6^J<X+gegBdY@Gy9id-BkEA%sB_i>$e<MOCw}eLLKoi=cfrK!YAsY#Y2$-B2{p z-3-k&+<xo2ZF<`f`S6vDIkK_Vq|b-|7P6xIYa7@TjmpYDUneR%I_X^ZJ5OYq<u(-0 zI*9<D+E{*A_xDi4+)w4GL2H6FdSH@)aI#y`g}kP7G<tC?g<zliWc)^9h=(?ueu(=K zB?z&M7?m0rseb8q<k)4kLEvz$w7jCx5}5wpXnXl2MrbAPm|%a_=@c&1cQQa8kOXkH zK)i)vky|mlSz(*L-v{9O&tq7yuU^ma|IU6<JOX|-7s-{@oCgS6!zVlj8^}Wq%M5B* z(-z)sHEKEEN-FL9R*G-*!rT&)u*l}+1F!<Hp!>XkA)}s1EYQrUo9q70V-oE%5uMT< zaJkvFgkubBSVzn}&E>+qez7>hiTWp0&cNM&WEw?G)HXZS$8$&G8!*caGoSaaOemrZ zYt^n8bP`|JVgn6L$-8X%I1+10lFK}*d>q6(?{cguF)2+eY*j`c1~!=FgJz%Y1M$`O zT8*)nO9j-$;X>Y$83KpvB3T2GBnCIfr@YQl)=D^Yfy>di!x@5^VEJ{)s<~PP|8HWK zX*NS1+1g#B+ZI1F{9dM4moI*<pyKkY=e{EJ-_{_9+Ggs^q$nG!qmqpK<R;(6{stxP zDlpYuEGzD=e3~G0SC%LGm{cqI9Oyk(ehouS4Mrj?7VLn!qQk_*P*W8U#Xn4Kz{`)t z1^k+3*A=Z|#>qtAgj62Q_b5Z3&so&t5p#kkK8SkD_$M3q*NbAnbl;Zgb=N9|@lcI| z%WjSf$Nspxl|N=G5KWyslS1=y*3#q>-d3g`Cj>l+hv=LUW6Hz0zQ`H6M5Pa+hV6~n zUqzXW91j<lh@Cexk{@RF+ik7H?3aDB898~B9ns*|1(f#UZf(zca0ezwKg>)53x8Y0 z?dhLH+hiHtO|X8oRq|PRHZODHO@*ziUJHVvNz?TY9(Di$<#>ncGCPCyJe}75F;sE9 zNA+{EgGJ$|o|%l=r*nC=iZc!0W%EWRfR)GdW(ZB>1Xd*NQC~r2lQ*K^y7CnyYD<}f zbP0q8v$qmLUI!6D3li|mM0*4LTB&ijcgTiUN9PFBIxb{6>*K%33{lm9^Bk&mBd@nu zkb5>=W1S1mch3N@hw&jKK&Z}1>BiZpQUWPN4+Gg0*#6UaCT{_u_3rQEE4AY7rHNgj zdrBa1%{NC+jS?ZbzLp_mnL;t^;$VI)kIn9CbeBh|goUe9n+bUVuFH{dT~yq5x=kWq zy<yOgoW=lIvRScc-<G)iE^)J+bb90=e}3jx>1mj>F$mrch&l`id#eM)?Cw!hsPD|- zdi4um?OqjolxS3=_w*{|W<i~1FW+2mY(xNMmZyfPqrN%EnYv{@M{_UgcMoxf^k+SR zP|VhKgqiF%Jsrpf&X{oFEV2|3MQ``wSS_MVIYZY!UxMd95E@#I)vYCxlqM1e?S<EO z0ZC{AIb!AnCPMbbik~w}rNs4TVbqCs?HzXw<=8&rxR7VKR#E+J!u_h9u7eBDh+3wo z-yZm1V(6P|z^CP`DxG{nd~33VE44x^M8AxyKN5E7j@x#B=2$RZ=lQ`he)i5>ot;C> zFKnZx^m$93n*pHpC~QD@>=3aK01Q2XI!NgL)c;@fo+BN7LR6A2k3AN#XD<x|6KWl$ zqcA{6+IfJZNy~qJb&vt{SsAD*HH<05zWSu<QOF!tRhQ>f;&!dRyj?KPflPG;V*TJs zt`&o>k-&$H5I|z${O6I9t;b~jdQY22_W)BzX-Q0fuqC+jK8{iO9uNkEpt`|4fMHfk z>_GZ_`wQsZyV=+Ij1k$TqIic@P>cNe5y3#lv}Rx`$L(3-tNcgUEfr#hNVYZTm$wDC zWM$E+c_Y+%+@OG~vaL-Bwb%Y2%56^O{flZS&>*pxBka1F0Px#6*ZawTL2`{qPW+#S zhAeIU^WFG1WB*rqC2&!bk2l6JNyDMLJlr2jVw~I(Pj2Tfh%f^gieas$7=e-m$g{+( ziqb8!3Nl+D%^6`<1CxraEf_jqOK&d+Jx+Q|GVOo6*>E>1G?qzyhj714?smM;2=2d} zs7G{Wj^MlMNmRB0)#?cjJ#`RZmWs2u4Qto7J`pUuApuw-h?r-Z&RyzCv=WuPTg0g( zRP{;^8;GJe<p3{dl<=bN>xqk7{mosV`%njkdJ;K&f`_wI#LK1C`uTQke0Q$@78%zq z^L!Hz_r-GUcyIKrS-xG)h&FJVDmv4kX<OM0)Nbfw^%A=F-o!?^TMMa0)D60%`@^bl zJ~(fwx~|a#0gIw_4`$teFE(&c18nZK+uIlOw?3B=m#gooyFZo8bW1nk#JPB%IQgcO zV4Jr~-ziw$MxSn+Yxe-lnZWSnu=hrAngd0(k}F?~6g_3BPr16QLXVeOO<z=hIBf8J z7S$%2?Cr<A5#c2f#FEpD`7r(rkWno05dWUg^$#tDhK27<_+D!q^Na(MPi7mCaL-_6 zhanT7WUDk{6@JXEQ@`7a9m7K9@0V-0($`=aP?{E9i~s@#<uy>G7@0zTw1KEo*b@O7 zcWi=Xzl<`rM6CTS;-=d$G2NjLcId}dCF;E2PBrtNSc@5_&nTSaUx(me*Oc;`x|o0J z*68Y={vmu}S$(rR_LzD*^LETpe4?kEYV%}F*jWm`Tx)MgToqA#Id5AN*9$I##J^wX z-Z^<E0x<@%krxdqZyM>1cZaQI&sFRkhw;`wu`a`8uWqP?M_KG?a`xdW{qxLG1BIcb z2<MJN{S|#e0*CdK!XW#*yP)Qg=cEjEjxN~N_sDPYJ>VSJ`F&5C?+YL~gtanVZI*+2 zf6{aCe&C21HqmLQDT=)n+6~)#5(6XVne{sE4?0D0)s76U3|c?mDd#wP&qO8Y4OE$5 z0r5V=5#fb0uzCEl_jzvh4BxbNx1qEvAbz#dLOUc5r8UNl+IwtN9?CEDbF%4uY5$1H z`?(r5pajKm<hKF0E!@u4zitSx#Vf%@T?rersPr{U+DK*+?0605YjUW-F)UX{U~hPn zlZ|R>2hr_kmYOaFNlvT`R%@MjVEb`9vT(Sq!7|=?5g0sGOkckT8}q9Iu|<exrcx<D zX6!buAAUBT4%2dc4}?@d4uFs<kZ=7jVz{3O!0g-GStTL+$Q@}j16%KuGjN$Ba&1;^ zOK#tv@?rwa6IC6D^tIQ(@%If;{J#P1|NF@{pnNf&lJ5nO73ut?ff7;%y9ZEhdJixv z_@SZ@9ArfIqa1nr(=}@<fJoVGtO|I)_kC%A62cVl_x@7cl6%u&E(T6IO`E)u(U6DD z+8T3BOZDeuHDES&d;zmj_pZI!7%|j601M;?e9M8^*yjCCC{Bk&OJf7XN8qaoqVH)K zD9J!(b)fbavNi}*y;^2IiYEZ~(tYTR1m1r95AYdi83~MmrwCp*pt4J+C=R+u&j5^g z%D*s1fb1b}0?=a{@c@hpa7BLVUto&3)Ngg^fR-O}G&EN}G<aX{)R=FfmmUZABZqg8 z1+a=5bu_Ou-XdWaU)lg4#{fWEn4cy@hIJA{BK|Tee;ERgv{y({@|Qb`#0mR>>!JUp z>w*3hV0LHyS`fY;#$Q9g^^qXl2$#>mM3EOtkt5S{4<v=V$OuAwkA{E&mt3B%?ujC4 zm9Jwqk&wu@Ccq3n{Cv!htc^dAMb1ovFn2#TaH;)I0=s+o#d83D@h~A!pd`$h%-=(s z!y1VP1K<+>>D?=j8h+4v1HBWtQY2aXV34W~8(+jCUSEm7hs?>bl~=$|f()f{ocI9B zrV+{gt*C)pUDRE;ig+N8T1E0rwPT_oh%G6MQHMUmM|FhATYP+v()xU?vfx}1Xm~+t zHTy7rp_S`2m;V0lo4^<3ICK)Ba}$;;lY~68GYxP2Y9CDYZ7{$#hmjvm{{A+=bQc#< zgPx<!jR4pi40czWuU_7O+=^$+{d6<}8d!^~Tf?;h7(o3U@<6baj=-Gzt~48@<#)p& zkh9brP#uN#7lS6duq*<P-wXC_nz9P(9*q&F83tbGd^9%U-o(t2RJSHt4{;iTH>AOw z(-H{#8{Ianp#r)*H&Ac$MV?0A`o>@47aq|hBU(?hpMMkzp`emf8|IK$ii{z!EL-oF z<%JSptPVu^FfV+$>Z-49?SYR;$+diG3_akAo-v7`j_Sax{Q?6@A;tDyxvo2$Y$d1c z;WTYvk-U!kp+TPnD8S|G?YihWPvz>x^DP?W%q#le>S+02MZ2=3&{Os`N1J>_6;hXQ zK@u<)Xg|Fz*W(?hWVStvhz334_-0aWx*KX9=3Gfs7;N-U!#!lq1W5-bCS;<G*88;w z$a#3+)7O24M!#PUNWaoJ2CLTwaNQ4S>I)OYj8>g|U_tQInIwNzFOrAe{{s^U0aWGe z(pRk?=#NOdvWIt8gIWn9zYqv+wUQZqe-tLwg8C^a-<U}d$OJ&da*#IJ#u$P_2>^yv zY@L}Y-RLN3J*nE>!GW%HZ;5h1zC>sD3M5X`EMB?Lica_2)==thmehzFg+wXLs}q`d zS^x+vBK_J&E>tyC5}AX+rwZJ=1X-EVC)@JGD}eX6+_fe`t~7B!q`O=0H3Ywi?*AFK z!HlKuIfUofu8eEi9;jl>*Z|-dONq*<4Y*x7$ut1unv8y3%?&rjy<H(eeO}_L33o*0 zK~D~AWFq`ZoUk-)KMvs;eXrF%En^ZvK5ruf9-!*RXxS9j`KuM3b19H`?PJ@AZ_Esb z-^juD$^Bm%HGqR;AagTCAsBxt8LY!S6C*_yfR*=orH+3VY3a<B;@suYK~L!|=YT37 z`)^w5N=hko_E3X2RQKnPZ(jli9iVzl14C~ocQeJIU5aS6dc%?&NCZ^-y=*s_06eBN z&EE9W2uaRx7W%b?EZw>xbZM)_M7|)u`-LoZ=f9Xh2~FwD@%d$rq%Hbz`Y$oyo_quG z8zSXPu(^KwN3pr$uhVopdaqhj1LKFs8vWAbWgyXEYlt~L`|tJTzeJLc)WE3TytTN} zdHMjlDBbu^o7KzL(y9twl7Msi)QG__jm<DWQL-2~#4Mw~QX)Ki&jkFH35+KW`;$LM zLE>2ltrS`e*DiFZ53wB@sZRh_RwJtklYtylI}PMu4=OQmzqHhlzJPb>2}&iwSCUul z`oBgz(KDsAW(|<&&^no4WcCc0uh7{I)YZt43~!ofCSZ_+Tb%V#em^W|#gf39M>?fn z84nL-EGKW1#XA17NIp^nyUmS`+m*r7Pv-P2q!y}i-wxg)ujG6fl9w=<<h=A<c@T-& z1m^b$*h^xVbnL@`T?a}VICmU<f3V`1_;K!K>z>!%mdIaUjs&g&l<_}x4?h7yns5Fs zq?t}gQ+{9|zlnFh9RIT+)#K5$cL&m)BkwTFDz39QKRx7(yy2%C;GI|C-<fElD*%#f zr|Uh>f?w_9$JQ8&Ox1fofCErK9X&r;Q6aw*`Q9IY{A}p|Hx}Uj55SHIs39D<oNoSy z|MvIFe;)pypZ@=!`2S<|pQZG##qj_3DoKZ-wl0>#9&CsJ&%MA2C?79WPz_Q3%VLo` zw!c~WM{$J*4@2Xm?zxMedLPBxMpkoO?oCD)Ano1@I+(u@*NG{hm_Tme^Tagm2kzia zO5|9GUjg1~GsOw@p)MfT!?u&2sA*Pr@5g>D0D3(b&~>85N5Xi>jpCnA4*{EfN}Aer zsZFDc_gZcdejbpHEC;-ZX3n8$T=<t<lK2-uu?M&qy&a2j$FJm{Kg;;{4<ijYw>Oiw zdNIkr&F&9h@R;j>xUi+i>jxY~4fW~xKG#*Ng9G|45HrFs|3wM7xzZYRxWBn4@Su$( z=qsxKVFcKaEy_@Zb(SE#F$MZ$(ozibPdQ?f$$AHz<N@}3uZHIs2gH-vy|2w08KRjX zFPo`2icL-e6X*ZALPiDLB!H~a%YG%^SC7p84(bii!*ntD#Yk5G)+9FjNuvd|C=E}G zN3P_i1V&H|QDe#9vH0QnFw>;^L$T1?@n9LnGTKBLl1)eu@fVVgB7Bv5$H@$ox}^_o z#j%7LO_(5qF5?^-^pv%8&ovi;<|*QTl_+1~Pg0T6kQbK4C#TcXJ&>t92w<U4LU%#7 z)cgnlumO1uJ%Q<6o&P2U1ez7eAvHBVEumX^(mtXNeM|z}wcwG;eWdLO@H+ylwqDyB zfbbk3fnG{j^pL?#+RwdrD@XIgzV`#^i|*U7AG!g--|oiB3ty2;_4%7)0c8EwO`<Gt zDS;d}&>D7F0@1i0+n3A8-=zu8uDG8<K=F&3jFt!uAz(Qw-B>_BO_mq_G>=gjNfZ?S zQ3uRW$Labe6@eVFo)usAqBJv5EN7DYksin|qTzQRhpoJ!F;HWl!S&UA*kV#u4O-ge zmhg<>^8Oc~`Yn+01QQ2Y)~o#5v%<m%&b_Kq-P@*N|2w4Lf7Lvwa^pwM24OPxf4-mK zRAdCavNg!7jq!iL{~<+JGJjVZChPx%|Lb>r4Qm|_%D<0i0V0)0OUI5`e+<Bn4oqAN zNhf)UMl`Lv-2f<{1xv(~)fzf}Ul-Y+xwn_Khx%6oHh@MRCVRLW=-V#$w@bo$f_wXT zu#R~Fs`Iq}9WtEnM!v4~C81vJe}Mm?l^K8e^FLnx5Ac5tFxmk4Kd=Dno~Vh(9ErqI z!f?nr%!J(8BY9O$i~k$_?>Qb2dH>|*9Oaw8p2YxlkC2y!3_dD*_j})h{R22E35=9m zuYbqyBeY0no093j!T*8Fy|VX%*M&g}s5drztr!pF9d8sVJoM;t3wZoD#*d~)eu?(E zfD~w-i&@rp_VK63fY_t-Z$XlXY<BMMje`!IjlU))$Baynx`Cv^H3ntd;HBoj*&-Yd zo3TLs+e5PURQ$snr@0xZ1akE+^R2;HK+Z-K*oEBGLBwA%Km=^V1#?xP(aj~$2$Hh| z1PcVnp(LHCNSWpPKv9PBP=E-i6_Rf2Z`6m^b+d@^A=7GMqz2>z>scJ0j)!S%{hRgL zA93!V{yUO68Hf7$XmpWDZeMGx5gmO+>i>fAUqQ)8K|TZ((d3|Zeke*7mTPAUD9iAD zd!Q^J0fFRA)8NrBKo=x@{B`#~IV-_i0KxMWfV)q}6h3<|6ZMPXzrg(mSNCy>r|z%B z7U|lAc;x*RG_8{oZ582|KzyZ2V?~AJXI#hurY75wS9EVwEJ#Yi&)$efK|O&YxNk7p zF#s|Qp!f8={jd1@Fi_Kw(+>YvA(CxjX5pROOytqQPYk0{b}(x+;AcMl@OlC~>jFJs zKGZ})XoiL`pr6x~jr_F7FuO-lQDKf<ip}O=W?Eb#Cz*g<J2%J0!Lo|Q`QG$~CK1u< ztDQl~;YLO8eE*X}->GUJkCQB%-I<<GV4r*s!hRV*PXi#lj^3tc%Ju>PV`<QXC=ckz zv;{hfD#{mOE)7j<5Nf~xx&ivQbaP;n8)ARXG3<Bht>1VWnScAD^NK0`YMogZ;XCt^ zshh`P&3bGk{_Dw>aL>CTH0ic4z7%1JY_V7{H_hKAGu3wV9HMt`MX9<(@Viq!mI2)W z-3|x4&2ky=y2)Sio&7yPe1nVh`4U*)f!6Y#>K;Tx8IiJgvlogp?WJ^qrQuu|9%F8N zz1P(JeY(pH9@}(q*w!ln-_e8Axma?b{%sOt;JtdDtST&YNv$?gA!+oL7<8r3d^l%o zwr4n1nfnI7G&KrGrO-ulAkmPa-dgAL&NDw$FOOE6|1Z@C=#5i74(Lhbh>ECDDeNrN zN_@>ZFN-hZul5Ou_yFvfSq*JQyuIx7yEQbBNj7=|gwXG{jz6I6V0>w#Ll$ETl`PbZ zh!dzN&*a_uqMO15us+cNVjWK(%ymTl)^^NffY&WhT<-C~_TEvhbEhq|3RM4ij_e(0 zRXkN})}LTgBkKky-}y)k^!Wp|BH{XpqE^r0B7R}1qRz5gSp1JZQDD45H0Iub_4F?t z<)y2Hw6wmg{3^XRZ(T@p?%beM(@lrdEJx<g^pR(1$V@vem8TuSnC$vhIqD-wfUT%e zXYA&bMb(khw|n6W?ij*Px6w7}!+a%=MVtNI;rZ%?Sr<~Y;2TzZN=>HrhBsluo|Gs~ zUg(Nsybm!_T12(UqsYd~Z%4l4=clp^ul>Y~?vWy5MNR8^gTbn@R6zJ*TNr2$lE{W+ zB9J$G+)DDiax-GBzsmV@BqqyugZAz6x|CHA+r9B)WNF=LMPwFm$RH^h?mz|A>=*a| z)mXJ==p^#rWve3Qg{%Xh`_;3ulG+jO{zHIX7pQ`jVOk5It@6`7Q)drui`3_x2GT{2 z#=fl{MFmsG)aJv;&u@%G8v6XHFJe(X7h@$7aQ9$b!NaM2FDgdICS(U}X7VCV_7h>0 zqJTD60qKMwQsPV_g7un$?J6wW@!_NVH<4c7m8XUZgzN>;LCM;-t9fbyr)N~o;~Trq zV<Gx0XG}A)0bxj(sVw&Na}UuGqh>vIMipb2+Kb*+`xkt6ZlA=#%rx-&vZ~*Pvvj-T z>0<6F2L7FSkg_V52Q7h=&-*!%H9eAH{BFj&mtyO40xql5)N@bIhhR;+`LEW>V>Y?N zTquz-%tyMxFUU>@I;66YqL}O8h{S~FxdIQ?7(-Ak9rTzIe|wcoVJzD=^kClx%MbL9 zmoCuPSsCS_!L8^43~YHx;vIuNa85}UZ2VmrwqMEfs?cG?Xswi)Kf<-~*I%3kr@MYV zKy&%}24i!$)X04Yr?(P2_vo_MIZ3!lFi$MX*CGC7yMd1b5Y+9)Dthk#$jwg;ujQK6 z1Ene_718Ugo2&He<m%(P?5H?>|D(^1kc^bIf60r~BkQUdjfhvijTA$fwx&gkRr${` zL2;Sd7Ta>3oTYgw%bLI#CtAI?dwX}MM}E1!eYkFG^WEtb80Vd~8bxaidJqNT8?^Wn zq5URHihG=t{w=`2iLXH0jhqRygML1m41Y0HzI?+uLqC#q1oX{YQ5;V>e_nTBX?Q$V z1T<mDe5(V3o&_KE+@Ny)*`4w6_uAk%Un#<x<x>Hk%`0HF1{Fw9<s|%&TLZw<V<0sV zH5Q%!4KPLyh52?afRpcwUC*_qac2M{o04|$E5690`_AX+P|ryv1M9=A5nb2ZG*_V` z0B}A6U^qD%7=hA9B5o-QbQaI}TacyQ?dV8xprrzM4~#3!fGc{VQ^ok(_jJlNndscW zP(3>*M@m7lih9n#*qGz`Y&SME6w}yYsxWV>pmdx*131OejygIz3b>jWA6L-zs*fWL zE3mlLa(={z4(zQLrwg1%pS`#~Ojw#jm7NdoZY?B~JZ2^wvqX@E-FbPEokoivF6$Zu z2Ha)mTYqw$CysaNw)GeUn|bY14BTglt>;?jm2n!rzc*y2S<O9@wHh5m%MoSJEz7Pb z6UDoHt4{zy?0DXeSCedQRXId8`I~NLXhJz?*oSpoq`;avY+<TgK4++OVRe=+xGpOH zBJA`Jam@MNJsz^AyA*`nPP+>sb^&&T+=Q5FhWq}QKhqSftn>DKeCpaGU%!8^0838V zTBow-`V<~=2US{!dpB?C|Gox}4%Fe`fqpl~!(IsA>e`I|%#(M$BZ&CI@jnRv>qeEe zz5r=snE_ms&(6~rUDBe1_OlROBfnGZq_Z`lO4ljOscNVxO6pz~r_Cf@lIL%Jfe)kT z`dI#c^`0TZh$C*@2H!w7{R%a$QawVj<+;6~`Dl6Ot9O$o&v<-)LhQ%N!_+IywzeJm z5=!*nO^Y0E9I6?{&%3T79QNNVe0Txpzx$mw_N0xpGufZk!nVS}TAl7o@sva$!;4IF ztU!jitiYUZwHmyTI1#B(3HQ!o%VM)}#JT|2`n*fO2=HTXw%%p033h(G`MG}I3%-6U zx*vb;k$&z4YVREG7r8c9*MwHRnA5Lnm^<keP<+bq+80~aVcFkfZ_YoO_rtVA{y<u` z%etAx8`e3kPgLM?7Lg-yuF%LxIu8sI-Ki;v?fL#mU*w$Y-Ho)M-x0*ksHW-l-1SDf z9?ws|G~jo#$F^Z)bp}0%NhKq*nw*z#-DFXL|D9Qe*kB#4$k5W_LnTKWPfpJt;^-G? zj!r9w_9v^G{?^kKVox44l}WMKsFxB{vwNTsNls}<?mz^$i9i=#{UWbQWkd=IRA1(1 z9aYhwlboF-?0sbb-FEN#=W=blktjd7e$~OXX_MTMy#H?gqoRiKx8<elxsHv&q}j@N zx1t=?FdzHDLJ?_exW6gnT<ZIQLEy%lt#ij0)de1Z_R9Ov^3xE+nXAyyAsC4SGl=Kh zPPr#bSEEdUth&fQB6&8~&qBNbQ}k!aoOT>9W$2G8jMw8%lXnWaT!EZa&~w4~s9x7P zx5@M-rciWk{JRM3Of32Ovjfef&M{B$M4%I7{)EX0BPWVi3S;S?E^yN{D2a~eh0%>4 zUAW(5#x-uqaE$JW8tXMHE}C)>zHH0aH~hL=QT|fs@t_)nx>TJ}OO43!FCy=}Da{x7 zrhVT10|(wZq&hWKq?95Y>-x3MWFlj~1dK&D%EaEr`At&4Mi@P**h8IXO5M-VuVQtT zeG}AY++!T|WuzRHb9`OaU5=piV_i|jE&1J7yfd_Y+d~D+{fJ=OxgU`crK)3<TLQ1* zT06d!hCrMhRIirJzn6D)R8T?J1*=OuB9b*dnzg+QDJ&}AX>(4yGZ=Kw(AG>NpwfW! z@zd|bxD&+aV`m)$!EM$P6?6~;?4@a1WAkH=Jk_*b>(RVDx1z6I8Fsg<sdvJJHn)*S zH&O5uXf1UKxQ)fT^q;n~W50#Nb{K~zhZb`Z%L>Kj)D7mGVWx?56hBXSw4it$GsA(A zU<ouZ3|q`Dvo^mUl3n4n`ff}ToIlUeErsIeIRBgFX=1dL853+h?nR;<CD%LV_z;$o z>BO=U-+IqyyOX!jk%}*f0b&-3He)Jrc53isCQTLquTvr)hG1m7{h@dF&O<0xKH@<% zf>RQ>ohMDE_(SA-Mr*dK+|3-|5C!d%Uzu&PR#(9;o9#U#4Li%1wzFWS(`Wo|#xpK& z8r=&@IWOS#+kAGJWeLT2?Q|j~y33EbFD^x0eV*&1<Yccy>ORaIP=Xs4Y_BY*6!J&h z?coWJ#o+p1n_nL*J@jKSC}&N~Kty#?4xJ}vjGnHBeNmrruEjz)VQ6wsV36X2JQLJt zO}X=AM7-JZvbJN1f5qYfOujq=Tn5n`5hsM(*7yl#gsxhzo@NgCbJ5AB%JU5k-<RM~ zG3B#7J@4}6E&7|sdTi7Mse!l+tg@4LXx{99BqZ0n_)8cL#ZOaC><3UVaaF~-4>PS7 z8eeHuv<@XKKDztWHI^--WB%+;(^~1e!|Bpdpvj|=hL?G!Wh8UdA(DNf-=oZUP<WJU zq&`IfU9$XbmDj8Q^e{)B_44gx(Irvxx%wWLjoqK0#~Pf1+Nq|^Wq!}-Dat9U*Y$GH z-;B0@Crp$;sTsZ@v@sKb(*-`RhBQ6kI;s|-B9}0HKk2-z0g8QX+(c2d=|FFWAR&44 zXf46b1`+;#IdDs$mvIgrvELw1QPCO@tF?W)Kty(BUfIUV##S0}rFTnxwN$sW9WqCN zYARjAaxR_7sLgXca&W9N-XyaOWf;1P&1_A7tJuie-xePz<1VKa@pG{|6xZ)-RtIeJ z+TVJ;Q+qQaQeMVjZ469n;8}ewY~Kj1L4gdgyfMe^ygj85Z;2Ms!%>ufBIy=tH@x-x zWT|ov9hxmCz}pT&n}0CWPjKkByHx)fnWrl8`hM#;@2l778$UNm-h7>`@O0wbV<aRt z|K|jj<ZkEpv$K>F@mQJ43?>FfRj569_i76tbcQ%&YC5^n4-()m)DCvv7ozb|E^};A zCFT;niEB27&L1@1{1RH08EV7jcDgDiCYdKBul?Y1)i}8rp>3SyUP3)FM@`uj_7RRr zvXdvKM)0$1KEv=xr@TW#DXR}Nc=J0TMnI_br8g)@{gMt}gO`m$^_k#LG9pkrZLn5T zFhAm}F4-5X^>otupAZ@Y$EV^jSv4N&XsVsmi0OhuO>eG!yf%lHjO!e>Td;CQ@BGhc zrQ|t|c@QTv)^o5Zo2>7}*o@_ASUy@|AMO{53Qk8O-FJ(xRhIdBjT=3C_NL#w#w6+A zS$c%vljOjh_z-@y`gymmU;b4y8~W*Y&HhDNZ5zTcY7SvbgGLi-XJ_S2)8ylV#$m=J z9R}y>XVv~1!3^&nh);*_I2;Pd;?v)xE$t`FpB)}Mwfh)PjTV;klgDOL=L}IsUfEuL zD}!)T-ip0f?-9+I<52cs2+jPYH2JJG5F_o~yVzM419MADwfzTeJ9Oyp6l6!Xo?~gS z{KO!UaZ;iZ`bK3vuW|N$Jf4W&Ol-24Q;CX8f(OwSf>2g1dvKQ3)@{n6cFn7@k-Rp- z0n0-*=7>GDFg0mAH&&N(v~Mq%G#~<vmilbGQqGR0S`0W2ZWLOk*Q*_>uKLD*inbq_ zEpxgp$gLd~HpBx$*idP*MJ-{<)O#uV!-zqX@(4qfToS}ZME@LfozUQX<+H|~e)m=T z{94=be7rC)0YG_w)Eelr1m6Y8z-}l(QpQ%A9t*0YIPMg*EvCmq9hG0UF^+4WlK8<K z<%)Tz+lJFRthRcsifDb)a@4bnT6yA%*_uo78NXzOY0K7S>+L<liSoZ?o#A=pXWJkA zzM0DTvM^AY31uYGKU7E2>PXM>G+s91U=qI1A``1MxwDvYXxcoKW*rwV>3X0+YA5&< zBxF!TxhG6(;JBgy4^}Tw+kDdSo#KsR4GAF%O{C@GKpo5F(E$JEa{%f6Wo0nNg%+|g zAvfjC8!5mPM)$1wWl+tH1=QiUwujzCJ>ypljDpv#)nBA%Rvc=zA{xcx6`sL(=^{j9 z_LPlq_d}9v=dxxL-@hHJeD*Yxt1EQauUW7KU%C+|QfA8kl}A)aL|_I{+bV6f&2@_1 zqAgzP_VZI28upv#YK*B)C%><T)_0FY%Ed?4(n2dYaQjz>8auI<>Z3Y>1{2yATiuu{ zD*o8Q>r9v?3ouB8_dj;2|1=1BvqZt++Y}6=wuz`e^XHC#A@lyNfdby4CTFfyty`<^ z*!GK^V_ZLG76a);P8~cJl6V#a#fCTnsT+@A&!&)dOT-}&m%kMr=%%G_Pd{5IFpPs3 zteC-J@Zr6|j8@c8N*T5)j~-y`0vI4;<@i;Zg$F`4c1mTql+5HpAkk0LVk2-`24Z!( zR{9+&;#J9k^Uc?{-fo(dMH5&YGloq+HJ3qGA8L+SK?a|4C8PYFX3#`E-kv^WAv?=z z+AYN-q3=}6gS+nxnYT!w7+1*;$kjqCv(KV|<%t?5zyD`AHI`nWH-TNL);^bT{l~@m zh5Vmp+eAP4+$@(eydoa@R@8l3YkNYc#t?^yAH=vkF7QN5`lQH@a4eFYn09^ZlQp=H zmCw84O$wCH5RB3A@T?FXvcb6+)xc1U*1+onR$TXzJ(w~f^m%t_tfQxZ_D8%}0q43~ z!q^qGx-oi=LA%gLWk;9~!pLo9(-NN{4m$}>F4ty@2z{gVjyqAu@I0Eg%6Io2y-(7& z-36E?YnYg{<3bqr&qHdlM%GzLIDWI+re(BUUU~;}3s}C!BJo|gIm*?6KFZ~mXE?SO zQ0>=d?_H7lfR6oJF|=n@wn!VYO25ELXE<ML2w!Mp87O+w{PU@Ajw+9g`!iS%b<L0P zHe1pqPv7qMraJ{!6Fbh{U%_!_Rb^UFU~(3U-7cvggh^jJ_^K!G!RRCM&gFkFOGo0Z z-mMuB@1MxUJqK%sjVB?No;U1AazA@WEI)ra&lu@u=N%|hqf*nx?d@bu%M?60zZ)aY zz7GX$=RXBqKo3v*NOsRUirrKp2P9tUw8Zw4aEc^)-g&Mvb~dF{2dNJ>@CSF{()i7w zwtz2M0b0$N^q4R8CVqtP;5uw#Ew<_lTi^)I(Hb07|D$}t@73Vlqh4KvyR=1#LBa+K zr#!?QD>jN~ZFMf|N)z=_uFI-$Z&Q&_>+s^rpEg|oF6sjU*LL28KBR8Q*gk$z5lzRq zVE({#|L#$HR#;^?>p<5)@tyl8o7R3J+wr06s`V)WwSk#yF~nW)<0q7+=Q}q7TtBZ2 zHFy2?LLD>Rhyu~dTpaAS;LwzVqRCQto&2`{RnnSYbGI@L!8Jc2=+&!N1?v0jyC~26 znzd{53w-j=B%C#^g^mWCl5cy~T{rf#-M9VnTztr0{m58L>_~EK(e?{^vZ3g4Q}zu{ zplyf-4RMn~>{}InMtu`2C^i;kM0pe-&>UW#^$T6Ru3IuCJxw|mAwaXzEPhP&(Dc)5 z?h<!18+>(7O=B8^ItLgtuKRH9onDn=-4z#?UGP#Z^toC}!xp}VZ=&B7S;`V@@6U1T zjA2Dnbxz!YWfD0I!}z4qiSyXp;H6u#{Y+FO4qPqs%en^DTP(dgQuuRKIi0PaEU477 z+x6ZfbQ-a5wL)VUZCC3lq}3ezQ6l>nJC}xnYFC!N&Chi%_3gN+j&G2P3`A^yV@4<K z%?syO6}kx<aLnrYCS9e;I>>x}p2xZVGfu&tP_!HO`+LG_MmLqGS?W1TWDi;&j@Fi~ z7;UQp0?*cB)d4)OKD#J4j>+FyzGX46THP=~i1OEb`+!-}$O<Un#H^5cRohkK=`Ja# z8-+}r_9yvjV>)->sE9pUY#nKD@)6}(%sO3;8vKrbloQ^odGz2^%~v>0&?Rz>Loe%c zJT>-xe>$%!*HCVPV+-1!sge0{-x<HtX*W!4><Xxw6ALI^@WivfpT$=voeN+RI6-gr z=_<^;WgbVQ38&TA!7a{r6gf_EsSE`tZ-p<NF-4~8Yv%@xJ!_awcc(fQJHH<ey@&XY z>FH7%9WQZ+s)7577T=9C84uRNOKQmXhtN`nF8GYb*jW2i@dj|ynAEQRjRkm?`N9ZT zN`4nkRfQjU-fhrq4c5dn5`v-xZDyhF0z4O=-1=Zy-&D7}swpr?Qdw6^@Y{CIzFMJZ zmn=FxI#TcNg~IOq%tXFm1s37vF$~qNM-C-Va`{zZG=ej014(it{!Bleeg!NS+@=$g z{5Q=7JblSvY3rL|wehHU?WZ{dP7;Ip@Tw3@uIo;$%+q%%O`-}3agI7EeWSTOM3T=X zbT3RENPRHIjmRY<8gpTFjE|{N|IlL@T&qa@!uxB<k3cNhVkz>tZBx!*X-fKt+cv+Y zwclmEKe0+!AA7H_Z$I9~l|q--zf6v*I@6mmUs7utK07;7gV>anaL@0n57cRpX*a+G z%6f*iISP|q=;tK<$jscSmL`w~9eaM2SFX-tZ*R#}C9yev5g2AXFIuGAlm~dTaf4Tp zS=1MWvUB*g`V(Dml1f;WE=9Wc(;Yj4T0I}PN}IktpBEVWf@OpqJZ8&N?dVg|%nG|q z?M<jK%+)v>Apq$>7LLBl%p8r0q07_8E2%W2hzeJ2I0;CntB27GHQ%&1t6>gs+T1|h z-=S6MH#?@UefsY539>WTrcCPTW#YdzzsWN897<;(EM)aP?MHiSTf-_=2|k;iuYf?I zo+ior){em#v%qgf!{c?Y4U-T1`SVLh3-MZsl<S5=^;{SXtl}5kY|sTSC?24bkb&l6 zDP$G<(|#y9oh4m@?MXZ@1E@j^#Hr!=u)At#BH$gtQn_eC{TaV{P||oTo}w}#G>l&3 zb=5hK&=r}ytZ~VTE_(gJK;blZpl?!%Wku?151uoxqx~0~)e#;=t{1ygqL;;%(pamD zk;m4KrC1e25Xa2*f9`hA<dSQqiE}H#!@8N~g)yD0@*TF1d?z&-OX4Cs@VVc$qaqAc zMk9>$FEAx{R>cLMkw^p&1P$+*nHFLg#>e0dGvjH~J59=L-mTfvsROv%<oTTvh4EBc zj+!^LrQ>vVZbr2s4^x?P3O>JrrKU){;qPlUqgF_%Ec|-p0`z9D#%?BPleehW3$`XI z&Q%hC{Xvf}Vq2<WYb}p(D)<x^O(wU)T9Kw?e%QlE@wyHj4@YfjMtZf(8-}~Fu8#uw zg5^<sRI<o15~~7n<c~`ROdMfh-0z|jsbM=<%cz{4QEQh7Hn=Snvc5|_cVo9+oyO+2 z8)tF{^Ofl;;4hxhot>rmY@Ala?q2!dExIm-hUv}RUi*2kMqs#83-qp=Xw=muxyMpj zn`NY!bz^}ypT%$B=W_byX4%4Dy9>|)hI#X*D&Z`K<=9dw+s9_UBn*M(BARW%x*Ef* z0`dIX8R4yY>ctMSd2ZqM?4z=%{6DRMgtd3cjxpngf|4-Cb~T$k|FP)v1WH6plTv}j zGq770);lFU(5$Q`kO})-P<-1j2G`W1fGbs@Ir-V^0!;tFN{Gp^Fv@(bh0KM#6L8D3 zGn6X{U&fv7WVq|qiDr)FppEYRDIMHanVMH1$#Kkd|EO6N<KlM^Ph26OA2m&y+SjK0 zOp{$SEZA`LX-MiWwn&D{)6TlwTyuF4nwXQW+*20bf?I=5*M66NRG#Ykh#d!OsX(>5 zg+>sz%(J3S+UoURKKT}F&+tK=zWSl#y8}e{{IHJvN7aE?AVpS8M!i;4rr(C;x%})i z)`}mtemmfSXbkvg=<hDPUSp7yHC|A-ZBF*Hr~$59<y@J&9Cl0eB>ywM>b7#z4jtp; z(|x5TsK@Xze}_?Mex%55S+XxT_|;g`Kmx7=MR?hF$kyZt$XkN7hf$2rY5I*G%sT9M zdS1lV$celew;lHj1IOmbbz{FddtqWno$jHLygxTzwC>7ZkB`Lw+wdE2;rAI|+^#$0 z3*&W1KTI~;ax{rre%r||jCaVF&L~`08CuF>YL&r#baIIO5D(;f#mO!dThnfwV~0UP z^KQdjYjCa(WjE?idd^G5x35)J9evSB_Szg)Oqluw_wxz39b#=;1E+y7CbC<TrOrDf zy=JF6OryG3Y1CYQlCgpXH>8)7GVmtlb=`t_cxs&LzW3<&(-d`O4{M#(<Nw9pTX;qF zy=~*9q=dwPboT%ff}{vYcQb?_4Kj2iDIhJ4bV!3B-438MQqnCgjdc9ZfS>2{eZK3r z-ap`7?^>)`i<xuw+56u2zH49CK2hb<8wb%DqD|36_&GG4-(+7giJ1}%Ja}vP&h`4^ z<+~`h9_SM}?bO)o9hv$?k?D<xdmwOmfo|bCU>6IqTNG#@;`Kk8w6BUXn}V@?g+$NJ zEhw}CVh%M4!0&KLWt7Fnr$3X8jErn7@t-s>L>LNrRNH9_(ZE!XyMH$vS@pcveByQP zce`@BpaT7TwUDaEU!35afMcmquR?&}-fZ-fqfXwu7&Vn3tM%w6#C7|^V@GZL<q4Ir z0_Q_2j>}TDF3jp<`Ac--GQsiQx@V8%tLxb>oQXBdyhD~mg3!F<5Q4Bk*Nr@zkFI?M zGt@>#Sr}G`^Iz{*ST(eLDi|&M%?^6`&D0YeDmcbcL$<l8x99`+V3o0f=>ppmZPFtV zHMJ$!-i6pBx(rE9%7kn=zB~T7nlCwnepH6jbYg%w8PSGgv9dcoSn?D}4>=Rv2rqy8 zo<^*V6YbJHJYTQMd!c7ki&H@ePQ+~!*X%7!LQ6<Q81EG^{x#4@Y-F*mI`i<wdQ$d6 z)Eebg!}}24;?CjSN|awJbG=qo#ZPu;>}q4<wO!A)x?oARVY>MzLQRxQ-J*1tGqKR@ z*{5msU+hFY^6@x?-iKIBNqr`n0_{fBCs#euBewc_t}IabrfWkXJ12~!sB<DDZ<#a* z3mt@daOzhVy@|6FP~pm3WE8C@JR7lFq}hS@h;PYcYbLkIBktY1Z%c!EW-8k3sV|9o z6Glbm+q3C*SRtQDM!(p+9OoXxnVCJfmNhMu&Aq6ysJ&_olx`EzJmC>dt}r@Cc=7ye zA@pEn&BziKPg><6@O<-vDBRg;^2;9XV}7}ekFeO#EQZ8c{iX+~ddJtu;YW}(5l&8w z!3Q={c9sshw{sJOnh--)gHzb>@H!Bl?h7V)4h5VrejojE`HRNYvosU(g~p}OnDP%1 zESR!lbK4YH3{mwLr#ZZ@QaDH%lL%J>y`I<PuD`JC2AP#=W5sKO<9is!<-WYH&7c4L zqhrNZmPEJO_&~x|ZYiMSP*B*YtmV>&mt!G;?9HCiQb3%VqoW*~eS+GTK^=MACU!_E z$(!3~QVUbUU+Zbg**7x!C>_Y-_9LafwS|~gH7Qr|E4)>0=@_69fTYXD<mysG1cZNK zR#G%E6^s2_WXjL|PZCsdGBNT+sitt);O42mal+?ZkZ&n~%^%yVvaQ2RpPiUhtD0Gg zn63EoVe7P?HLPnE_Y)p)rcA992&|SQio8QPvp+YX0c)p8tYF=zflSv&Sl=4X@hWcp zf%Q2r=UqKB_*-XV^fK?P?>U}{5~<1*nJede_;zakjTKWaELhJ4mpEC=+bpwQ!$#G5 zLJ@E%WN+uCR~E*T<U0%PYiOl-8%XLiOvZ?hPelQ1)I4M%YFeqf6flayZg(ay&icly z>CFQYz+bGR(xC}C{CrXHqG*qNCi@+m|FN%1hU}~l@mf@#f(}chgn&D1#D$M--}0ab zSH>G>&GDdtx6(gCrSi)%S^88mqHsS&ePCsVeEZO+Tg)dqd4L%G5lHs0nL0Mkm2I~@ zwm0dw3M(l&294fuC_yTvY{>`ORUe{`3m8d2sWI{mkvUG#UadCEWwONOu^uIU-iIMY z44c1xD?|X!o6w$IfF#D}5<;wkfl`a)D6*+-PP!I`mf;XkxZu5F)8|7*2jPJsQ|qla z5vkDO+Huq4HJg(LOw54bR4BLo8evB)neEIbk42H!ZPM@lE2}?s8oac1klKuswIG)2 zKXvI<<v>*-fBo|Khc~1oHOzT;j7@tpEb7G6oBvXz7$`D?d?F<RYh8bi{WO?HM>eWj zj$YFfed85y@i398%b6ZhYFHQh$(uS;9oJsOr`p>xK0Kr0$M;jX!i!{j4!n;*2Sv&y zW~ZF;=XWpSjh5j8#Q}&3-0pj_(fK`YV`<x~(5&L&pcAjxa%7~@k+~|0=wGy<8J&nH z40`u{ucbUiLtT$wljYGqxgz07DTPZ0tE5G*ID^5%yn;_!pS7YEao;}nipmL}%8`mU zbzr`JzXaOBS@BX18gBRCcleqP>#E_!;!7gu5`?`zw*eJF;=M)E-27kMo=2XS*u|MK zyiS0Lr!1#bAJ>EzGdwlrL>oRc%MaS(fCNjh2&c(oGnV6YMA|jbNrS0N&sz%jg`a}2 zdoXmiHMFADmPEZD7M}ig?3AVL;%{*i7EzngV$@DS4kY*jCh_h8KcfaSgfg;6e?qgF z1&Rbj-}&yAn9&s^ZSBgEAds@iC2)S5qN344kel`Llf{vSE)m6WISdax8G;*Gg8_<b zWKsc$j1vX|9$VARj*YfFaO<~w*%q}I@k<@n)o?V{vKQ_;$gM}LUe>wk)Y7DWJ3q%q zk?AcMoblT>Q^omr_p7n3%9law)j8DU2}(pvyq@AlUwjE#fFfl|i}aD=)%mFyuki-@ z6iHMNR!tho?!_m|^B>G0x2Zsf=5WCE>>Va4>y~KOlR#>SAC^P<s%=7`OQI7bf|Ifq zW|jVZG4CUBzXfK<WIxaxEwl|&Fp2f6aPNm`e^B~{iZ!Prb7o$+v)_-lyvx(48;sKW z;j8`pUU`g?REOij>!XB#NHn_83Y^fL;pql6X)E>lxpnRbH3~g_6EQE~duLR_w*o}w zJ`qQR3R@YLXh$h2t6_U*;XB!>Pc4B0@q3mGDTqOUd`OfLF$aM-Q0U!n_SOulhzO0u z-EF2EJjHt?i8Okul~k>Tvov(BCm$O#YZ>yJJO{j|{kdvAa~wEn0U{MF6>Rcq%9%z` zW)YUJZ9m&f#5gARPOjuLbH!$wGG>meI_os|FB^0Y>jk_VVY!#)n6o<6Q#Z=^H25Xe z4)myd;XjP^^B!EbTvuaOT`}5i8{`f~R;c}XzZoAZ<-Flc5@~2#q6A|wno=IQU*0-U zD?wF5#Uk~UlFo5=Ywbq(8}Hg|uh}4p?1^@2iMbruO92fsK0OOl%4pw)?ec9U#s-cN z^s37Q1~lmxf}w~&hI2b{kRIzTTVIdo7540p=hs2OsNRTTkHZAj6|2)$<f`ZgC)-j! z8JoX<99U0?pG^<E9Ca#rjqPj4OCjK_b8~v><WmTgV$$C*=b|0EkiGo`lm<UUlBqvS z)#B7$bOu*;?4jX|^wE9my%2f?9y_$&??|&9huu0kR3@+(^n$fR1>#k~;8efw&1rz5 zaJpqZ{aEp`ei0=tEp)X1A+Xk);chKGVZm8Uq^0@yKG=6KME`)A-RB){p;0TL4G}}U zEMLBl?k{8R#Wwk`uBJYs8z1J#d_)P|e2wNPIrP|GLa3t(Rrt-4o4>dmtnU(ob;g!9 z@LD3**Z;^6WZt;)ro9`i3%=YY-R^0eurztvkh}r}d39$M?4hw35}s?ZC&O}n7o(Z@ zylReR->2%?xeorIS@GO0Lt!ve>91l=>FLSAFjoMU$pBF>(EO0N8^dH^`jzXGJEK7> zrHuDOg`Fm>B_vpItjHdxj}IX2v=6NDFEneVj?7iZSudQ@L`H8Jp1G`*+9qp<G>fNa zTCYI$uWFs1Mv`1c8D#Q#m^^RV_1O{CuQ|hFB`|HeDB|-UM!r}xsvS+19sT`orp6<3 zx9qy_#NhbbnVZ=)1>^c`Lx>@jknYcgLY<tM`sOI<1`-OYYo9<s$P4?q+U2lVsA`R+ zL#j%y=$sMk#C)bSJP25mL%^D3vCw4PcX~}k6}s>{`E?}vVk<e(=U;U)o<?ffom0Jr zZ+ucR66i<cPqf$Op}dK?c^{{yBv%p>a$GL$@Nun8E9+?)pE=h-zaFtT8CaHuR9JW) zL&y`Ns+D6Joh`Ui8=p**YArc|HTz_lx_TcizW}VpZpScw_**tcNzy_J&l*Mx-&`R^ z)m-bRd^_ri@5Z;fFKrYG=$ovcNT1XJ73hgxRmzVzQUYeZNR(JC<iUBifaK|ou<|C_ zSa&omKkVAoQovAyunNfLafQx4Kw}fq6$dEo?bo{;at#^4qs0YtjV|Goo+F}FFx>_< zN+A)tKs}e=R@!oZR{gJoS+#k@ZY0bl0vk_<ON;Ecxx*tUe~jlaxYM>sV4SA6S+e-l z?vthXL<NP@-I5pFaQ4K-9(F)P6EfLC&Ew^tPx^5WC<7_yxzDdJ#MT%fj=ovx+>(iW zHJVy3Po5WkfSmWRjYwYT-}EXr=M!7+*?y8|dCu!*ilIl>fXnIgE|=X?Bw0>*yzP@9 zVaQ^|thxg8Xg3;L&9@2ich!vwHLQY4Ts<BHq7b8ipHwO!is|ttMs%t=wnJX#_1CIq zUlW(BUwh@HE0X7P7r%Hy(L|y^brtimUaQ0rt!-|tZg%#JtGnT81TV3)=moc2JvjGg zGF#HK)fZJ-rv6rIjm!fbtY0XO-7)9fLOc!MYsInZ9jOZFA+N7ZURekL`}8oq_nHHY zl)2hR8e2d1AETCNRI7+~Oz4`IMOQIOB=`<)`|b{FY#pf-TbE<dUFz#On7$67-<p;b zVPV74XNUApk(g;0Ygb2B&^)wCm++=|QARoi+ViGTWIHULC^U%s5Vc^hB)HrwF#A9_ zQ39D#x$<L1#g2D9&3l1m*(n|1J>(^6F<PFemY2W25K=Dd(W=p1wtT*1)S9CSGSf$5 zC&a@OM<m8_Kt*3V^|-B!yz<(t2)28=#z~IUN)O@sYJv7J_ic1${MTPH7*WYTM#osK z_MPO{hO%eadMc)hBA;%@ac<1)Y4wRVuDnfPrl;>7EXT+V8C}7BI$@glYH9hZOJ{4= z%WrOSuSFy^b(5X%a_b|3<;47T6*mw}J{^5CLTA@FJ#fBz_H-lLJkq6X)RGAuBpr5c z@fIC)v+1T@`ize*{jvSEp?Tktn?`~5Zu11;$tE9QBn;Iuw!dQtMSp*X?m=+I^_Vn+ zgFdcQMeTa=lNqUz$YMuha(!&(x<h9g$Wyyhmj6~1B*!wrA+hWKgrTa?#QB}Iqufi= zL$Z?&ix;64-}d>i2N{;E88BLEOa83<As3;NJ1Fuew4|Z2mxOPK#U^1%4o&u-EMU>Z zJJQ7<Av*@;<t4~jsA&XU%1=3#qY&5V#5X$9so-fz8ofgitaz4FOWE2B{RKgHkevzr zO#VKsKhJuV$61qmxZ`_*XftQj_Xnc`*x@nc2`O6OIIw*DR&RZVJ0l&N-yq`yeC?4} zGbIVi+L6--K^*2Oz|N$u@DhdVSt@WGN%MKN`#G!78JRYiSg!7w4Z){=>cMepJ8zx! zVq(ujUUDIa4;R?vYqpP<j>^Q?b3b$WaLxd0^L!zhW7_3Q_>JXsp{Qae@3$f!y>kg* zB7_T5p`EaSoFQ{{>X7seOH$Gl=ly*n4WKqvWEr&5EuIT;R)_|R$^fes_u2Tz#N$5= zrpJTB$Qosq4qLiKk6ns&x<2-UY=faoF5tkg)Cfq_#-2b%ps+`)PP$<O>vByH#=-{5 zbzRwQ(IfEm@ajnB=u@Y*)G>bzIccv&WMZ1js$Y2`d;HGXeoL6fp6^bQ&(+>2#@=97 zq<-xb$5aaR;9wogYPfD;O5|yly|QQROHcv2DQDN{Mwt5MM%(wWk}PilJKC;JOQT!Y z;Ba-iA7B6GgC@^27!lwVd2T9nKLqqMQJ}Edx@YQE{$nC2ytI^kYw}3&y>g7Ug^Br` zP)&jVwWpd)XxVaNx8qQ&nB`=lL$RgU$7{;*Vuz$Rzx%Yy@=2+D);`}dQ8mk-j+YmC zDQM$tuuZ(lvic&bn*Kt*Sw>m8KsU3$U~i&a+h-8iUV$MWY1=>&^6jI+gpX6bh*YLr zf8V5kQ_28`KMG@2O%u&Hh+5;L(5~Nj7ZoM?0+8}h{Ua<Ec0hud;lgXEh<FHy3k<*z z+<f%$*p7fikhJVBAK-dP1fmKO5*dG2tZ_pXjDn^P@kY8nJK}WS*vB8gi6k4#C*3Q= zdaQRNBiE{6*LXba4AP#~IUn#g&{pnz4iU^M$j={+OTU~n0O5cC^(!k{bTVQxLw}R> zc%g@<+T;&z=eTZlD$i0t=E{>&NR(#T!BM(UbvCQptdc4N?dJ3!GUv5f)am9w+Rq#g ztG9TR>ueMOXi(ur3L6A-*(->9KoJ;C!!`1DvmZQgfj&||fsclh4j4@zxmNeuMGo}q zxQHPox3qc$SAh4@Y>GyiwHaMBx=&5H)xO33hU^qmr893>3EHuJVp(3asDbh1%@sN* zjVkvP>jfVw0o}LHKe+9G5*F*}wxpGnKq4mnTIb=e<@6GdjrlcPj8llolqli|DBdwZ zH>jMg5y3s6V61O0z;4T9E@ygRQ|70cr?=G7jhA)9@l}P;>5uNpIL%ChN=r&jX6?Zr z_2ra58k)BY9ri|cebBH6lBfWgtkUNP8hX$fEeBKU^`}W_mK25)3rCkgW|5Es-5&y4 zX1KyiVyy){zkiE#5)}zp7xVJ)Ze5gfv7c%#1?V0oL;}hrr|&!W3Z27<Ddpru|J|V; zGt**Wv=)WeG{x**nL*&1FIQKL$hk;X6Rn{Jvr*!M;~gmgqs8<^b4U~a08#0)pu;qK zQfIDKw1`4rrdMK4ZZ3IM0Q8kR+xaRour)riqf;$}Azlw<QjECk1a&(KHN=>Tgl7L_ z4A-(lS>G%g+xJFyYpNzU_7!AT=&WYgdGW`qsiSg9dVwc?1oq%F^P<rbI&Yo5(H5Q> z@8jp=C>heAhU3d|-lG-H*U<xMPy8SMY+Be*kpPE&&)8!0iYj^I-Lz<miH;6^W@v8C zXm@P~@~L^<U=GHh3<?edFf|41nLh8z4O^slGB-KNW(xOVJ!((wrlgJ7FA~9!=3hUQ zGA=7$rmAm$r^*M4*E`ONvoviGXT<;|L-^EAG~r<}+rp=I205APZfc|9QQHxV)-Ot= ziE^WYz>u39o^{TVgc5BQA)$}G@hpm~rY41usV5pmYEqchI<q_}vM-n3dQsj2rwTO_ zzJwssbF;|evE|4o<~f>~ZUDN_C{?Yh?`xv=ghJ?sisEvQu#!^;%0fycm7gPz$)IdA z@4|$NikcEn-hXHg^rd;q>+>8TAlziwLoTGdPQ3>@mFdVtj0~TB>KJ9<szVICXn2JA z8@>{NKR1FHOc1fJ7df8z6<gaJ;q8iG*S@33tF_%){1tx$xXtqOD}bl^gjW44Ur>(G zLGf{PK~K!rU#q*i;v_s99<%T;eg$tI0qL9xVTtw@n;Yr=wmm!`juL9^l*0@|2nv@# zine-=fFj-=0;t3Ot928r`<vbY|8hlO<NEo*(+l9W!+-k)-1{bn1Q$LK@%E4Kd(8K~ zx~c<hzQTOkes|eE3os(@-gF)8y9bJk0#|i2i3{TZUw=k}--v)Rt0>L_L1BL6#2V*F zD_GDZ;&*WWL%$?2lPS%J`pt=c%!V>=R~PheS31)?dIZlchQG(AjoPF??6~VNGRg<w zOb>mjpu^%Ypc@D-3W#?CHU4LHt!l#MGRss~EW@85JoO%_s@#42@hkRwF<7AgLXlQ; zTzv>E3yf|yf6OHq&ptQS{f{j0(dX+M$JgPj7=mJ@^h0AoKOGCF;;;8qSna0P?fQaR z?&U;DjhCsJgtV7oM*!B4#A<y^+d>&oLQ4t7{&XiXJZ4^C*q9GR7*80GfSrblSUPqT z8oE90sK$Ee8Cx;Mvxy`;V~+dA-q1qNeu@{XG}ReY2SZ)xsl}5~VZk4bO-b&>UqKDn zNVZuNx&b9|#d_n9UENs3oS_x(Wey=IRC~&?$I(+s4=(QoDJ-*yIj2bK=1YT4;H?<c zg}J;Sp9545-G9&|W8P2SKWYh^!4N26&xxovMx;BqLS%Jw!s*1acN6`M2G_->_{PJu zwcW<7nw3%6SHw9nON=~R_fw02o*V^e$7ln}0}nRD0*q%w6H-C1)29RpFHdP%$(p0( zP^p;Y`5(D@mfXI23Kwm?1og}#S=p5F4K-;IR{dNiUG|0sHgbklNfr%lnHAFeaoWS3 z^T!sn8AU1aJs14S#!zNRA>(1c{6-H}e3VTwYR6xJyg-RRXXz9s8Zk<Mp_Ye{NJI?Y zOHx!0P^0K)#C?athz1i<j*g`bU`OVccnktt5-f%?s8}3JNCEHGeIiKVx+IQ^ScXYu z9s9^SM+#wet=f24LUGoZOhr{Pn&}7Hy|A?5tBpw6gd$j}Jr+uXi9Z4X!S;?i!y!ws z#C~-<_EjVr2w`L2tGm@%_z21f355kJ#(&ntcr^^Wa6-cnq=6V8-7nrV0>BmA{IV;p zX~!T5Yy2#&D+4s-|H4-U1s{aE%dc>^aNjUw8P#{E|76vWk;IbJuODY1!M^WIAAI3C zqQShK@KxSp=Lp2I$#ho)p<@OguX`Z9JL7RM^O)<eQPH_KF~-T_;(j~$x~;&01`>qa zW0F`!?KJ5+^7P!c<dpYXihxK!04!mX^>*Gp`Ya-sY(mabq+mH(rB;a?Layex2c<_v zy1M^h0Uq3$DHVdpXL6yMg?LU{zgDYb-V;W#hKg6W&m-Oax(@>M{;F$Kr{Ft!p_GA) z6nYJFgm3~(sZ^X2E4tw!0bCM(FVPFvK6PVt;Z;P)1Y-#~&<)9j5>q;W7!mIp;lcpq z#OQ$1zt4f>*@=~(OmqFkJyKE@RpOof4ngSyzy_USSYl#7s+3SngA!WN?Cf2lR7%`y z5gv5_)ZYLB2~|?O!abYOIF#{uAv5*5u@3xaW_l#Oaq%(VazakYID9)*nZb_gd({b+ zMu16WXMgX!5f_(lj(JZM<y+B(9`H`=H)SdQozdIC2StRE;Bhp2JZ*QqdzSyzBR^=Y zQGh!oN*bOD0qNKy_xBy*@$HFsvbd$rB79mMgdIwJQ%Ut%?!I?+aBC<e-j0lt76!uO z5MD&Nw_l9(S;Q&XrxuJ59EE#H0z7XTgrywu&n7B(pP3e!KOm_RPjbUMySRW-U7onn z;JCc->$B&5yKmt(f~q-!FZI2jVXTC`m^uf}H@Lq*Ko?-h(vJ8sGqf4Bai?EE6NXB_ zI!O}3Tl3;XL?@Wv7Sh3i8&OnQgaE1MBVCjCBAJJW`A<C`@?Vl8hLVV`tFfcQ^$;81 zPv;dn=vm-h>u03ET=}j+*(aLN#eeLB-+tAD_XsKtyef)E;*9)Ga}fYKo_KwG`9E5B z-{-%dTpU0PpIjbdBi~K_e_i7T^%wc4+xOl2`)RBPh*DwuG0B5F`~Tn9EFpQ_xtx2m z`0r<XHQX!z<m0+uQ~!Mp4E5x0Sofm)_tVb`?i<Q%j7jcX#eZM(uMhuULqk9u1vKQ9 z-b6dse|>-dFFI%v`F{=SpHX~*2l>_I{(pV>e_ivhL;ZJLcLPy?2bER^$Q}Rn{r$f{ zsE7OSi2h>;$%$}t-uU3%-x%XRegdusChmXC#s3<`|C_k~nit^T|7#|WkufGN&eUYv z`0<^>`>7%!A|gstJ%9UG1@^t*hTazo!H*POJc}z3WQ+{IkdP7){c-SjN}hY`kemr< z))BDLe!+|wN+i0a!;S?v2#2x=w9=x8%MSOAWx|udb;x_vlypDCuYmFTQUN--*Trs( z4I;+l6J(=*9_s=;)_bl)C({aD;1MmgTJkqVE);m1n8ALDGKdE`DzpBwaPN+Qq5zom z;2v@$C+|4FR4%}{w#uTE+#6S8Bx_jEe5OD3-_?AE1=ygQWvkLJKhOmTnBz0)E^>ZA zg2V1Y&Rmpuq~PNrJWk;)Ooe-EW9$ewKD*S(>vJgNVUI?Js(mYJJVVLmTR4qH00*~6 z@WZL=g?u5D-gtv_;&js__+C|R;9Y9-Am9E&g2*u}an+Ej<G%s;MYKD=D4vbSMXMF+ zLm_2O*h|aB^0#yD$$$`Xk-t0NJQuI9{CYh|nWmi2;l=!HgG9Hg;tY+t^wFJ_6{n7| z3(L#vw~mjQi(#Fc7)m{oV9^tAZhv?0R`)I7Q#N&}<K>U{gH8{c8RT?XIF^v2!M<+k zKk5JcUTV$Z?c;u1@g#x~atm6@cwFRRp!z4v2Ccz0_d_@bCX4p%)jlu!BtFy`HAsx$ zHkYo2TF?0Q-nMk3e|CS)N30u+6$+Z9{<}iNQI?RJfcRfVoMT!dbyR|o<IGcLU@>}5 zfal%cz<~(qtwpnC3x7^Tb9(~5(ZQ3Se*^m<VD!LQ8z8{P{&-&-Bdxc;XMfEXDyM(q z&-7P9llU^-<u9{qL}R543JoZh&>YNA$nKn#csmt5f<xmpjijVml&LmGE?t&#<tGyQ z8Guw36FN#4^_3pp$3-&~M<lvU>zV;V<I2g^MwJp?qywNZf$elJ6>Nfi!KLM!fxb;G z*F?t9mT2dkoafKqJzs*mI&u4I)YV@qzlI+SzUx@OAF{8)qTHVrawY#lEU|fHoo9DF z^^5cy!T{mkHl{9*ys^G;w~N!#$hUL=@;|5$Vm>sx-!3*iec%;H;+NFH+sBPQzS!t@ z&TUZ$MQv|B&g&sPwI4eUEvI`|X#GA#n<>Nnv$jyYmFhP>+aO<i@oA1OWR82pq$aY4 zTq7X8VWK8tb%&Z6Vl53#O~HobuV%V;j!ebxSJMJbjN`=atR+^MCCyp`RKu#%4c+)} zo7Bd1i%u}91s{DYWyiEn(M%JzG8C+{aAynzsN1PB8J4l>af+(9{I1(q{{*OY=#W+$ z;K0N~M@V5Ps9Db{4>bqu-FK_=@P7Dd@ZndGPd_JH8MM0akV%;4EtFIIjf@9nLu{Fl zJZnV90x?AMIs9jf^x88l=pb)JlnE*CzPf)}azGMgf+z@7MJHy6Wy|Kscd_!eO8czj z?W3RzP-g)_xR`0Bgr_1347K*r{j+(Ha-cLVVA{3DMT`7Z)h;n1GJ?!|E9K``_XwC? zlb>N?R`We{sW+B}#liz+qqF+gs7;D;;_~$|s}0@ZwZ=4b7w+nD<tXO&#wpofd?Z~c z$P#O*F;qGO3qr&lSa5F!{rs5F&(ffkPX#kF=IW&43;>D{8=2Vi1Ug!guOO#048(#k zL56b<YRFm7r}igs9iyf~c?}De{-8u@m{Q0?rM|5C*W>|iHj@CH?EIySjYV)Jk?|NY z!RE)0;?v}xEL{DU=o|Rp&MV?s5I$&r-Bbq~t}hw%)R-W|cx{|<*#IT__2WD@F3`OY z3NX&{pxg)DzIu)~^^ARoQZOsC6)g>R=E>1!?o8ZAP%YIURIJ_}8rAyl!NF`bCa7j7 zS{+g%3cT4jbTK*!74K1W2%L)zKubM%4om#MNd7LfP84so`pHB*`M{gWHM~px@$DZx zb(%btHpZ!S@X`ZEMnF1TTNg!8;$gv6RiSF1#XEyf&xjKP?!pZcro}jzl&34PNR?e= z$2RS00<%;&Sv8juwz8jJ0AK=aG4AEz24pP%s~7={=qrxLN`*-E#WG7sYl_b;@>q^D zs{IL-?Nda+tTRH96z+mbD!7~ZPX2!N-cbDt_Zz|lwJ}2S{NG+};o-bAU@yL9Mty+t z3yYTW#2#)dXKr->YYuod6rdf{=R~IWeRXF;%p?L&(sbbL0C3oK@{3QV!M(gi=E(Mc zsDAS!B8tGIqDskGKRBhf+i@Y@xgvP=vuF-^<vtP<R%kB>4j1Wh7;{_DDv)_O?;`f+ ze8E8JG8-Aa5FZG6eeP}F;u|Ejr2qnZM@{_j9D3HFuwvR>#^`@)CNe-HSPw+E_Q84t zUf)<Q=c0ubW0|A3;t8Hj0z&dP_@71q<c%WX-wKjD4`L<=j00e?dA!~_Zsqpk#~!~J z{Ruof&<msge2-Jl<$#a~3p0DSPBVXysHENv2{+=w5)3(p8x=h{NL&d=6_y|lrytRL z6$D6#fwbYTKXyJ#UXlj_>$49}D~a#s3CNB1J(dCxBZUryIK*x<)wKdk#%OPF2b@r> zZ7;O=NsXqKN`&Ueymjl(R`;N(jaBq~t!$CsT$TFk^hbD*3%4T<;}bJJ;<<TG&|AB& z4|qq1BZ_BbVf;QTK=(Ot!g%KXZ0t?({tw$?EpVXTtW)~*(`M-<8dSE|@I7VUb2iB5 zT+Q_DW5?}2)E4guBXpp9gh<W`7<U#G$R2!YAdsQny!8|N{1+^;N))P`#k>P0N7O_Z z*pAa6io=)2_Kw0LP4?k))VPUYW&3%}kT+PIscjg-$JG@WAYc=hSRUMLCKNs#pD;WI zQ1vd(&IOh%MusA3TNBN**GyS;sXmVI_*1r>HV(hS{?q0-Dv_d#*x3~bpzdN(rGl^z zj!p;34GsXbc_%D5;~TB??Mw9{fI+5F>PO3McvXtMBbsQV+;>?%+9dMmIQgBZAv}CY z62xA+*F!>P#5O!|^5Q0$cG1NAKzzKfJm`n=wy4ZNPT%HMxKcU(k4IqlYPlsT)Po$4 z&BOACyI%_c^g?$pPL|SWpE^L$K9&x7{S3;gfd_uP;G!--J}{#ZkZ2p7XI5dDSG+p% zQ2nGD`ZZ)Qk-+}T^!Zelyhfd4>Z_&$zqgMT_d2kg`hHLqz_5`wrU9<3ZKmy+pa?F2 z?0nI4c?mdOUn&#Sdk3{kxA+u>O6TOPqV?igmgB?6YWe)SXPO+TGZ-5OAx|~D4;Yq~ z_fu51j$#!*v#ATmEvq@@MxQAjM(Q_YlW@ZKG^v!io0)_;AP^axoZ3CD>gn?yEQk73 zlS!MK%l3e>uFZ}=s!tGhwhRc$gW@B5b8Mb+IP-Id-ZbDzEbNBH|IxqLl4=}9bx_8& zLkD>>d%UGW2hH!jD7{Yr+kH^3<m!!Wx54T86SuQPAC0dINw!=r4d9k!ZYV2P6v;CP zi!zMBRjE+bXdx^3M_*D9R_lW*b0gK%)=znwc`Cr6BFC5y-GzhShmf^>$6d<7<7fWl zoFX2MQKx!XBffn^brPNX$*pAl^%9$GpBph9u}~v_gWL;Du050>tR#aiO<alkeO9-x zcZCWd`)6EqgP|T>9Uiyw?o3j>`!TPbLs-M29X6fV6!<>dwwT6MFZ~ZD=t_8<l2kjF zQZtNsH?d((Fq9JmL<{l_yy{oDw0TxhtN1BnprSqkz=8E`>}Q2w&;vlO@AI_=Jk|?~ zspTj&Q-T_c9vVP}(4B{H#2F}BVhDe_+i1e$VnA#o1Wyt`%z{cHN$mcQ6zXrp7kd}K zcfCfEg2JmK5H5ZfJc8+)mYu+v(0Wa;i#1p~Xe6WNySp*7ek_vPv;n&|kave#<_N*E z-<;N@+#o~_W`-P1$!JVy5347W1@r@_*CFY_-!U-z7X-@tcYc$ec$vE*1fy)$MaC64 z?k#$kuA4s_N_ktmd~rg~DG?~jVQR2@Rvy+lA&FT$*Ncw#laukA3vV>AW!3gwx|PY= zsgi2+i{tf1c~EV${h!}hgB%|c6dNy|Eq5NF>dn?MVfLQttpGE?>(GyOZz9Z*d;ue( zej_8BMd|g{wMXnLF&1AKn2r3CsYJMnf(||_*<+>Ea7mS^&rnITjVx=8db|*Fy+4%8 zS9Io9z{a@@9fv@HROM$|o2c+!vnLy`A)o!ykMyA#SZ1c#etQ>Aq~ln!wX-Cr^S<GY zd@XXP3$dS?iqWZBwQddLZv;rC3zh>n-EBi%8gCN@v)&J<96RThi~(%Qroiz(yjU%5 zwe$!2M+;HY#m{HmE;$-Gl!3R#QUb>Sym@$@qAf^5mG*O&O%6bQ{Fn-&W|JSJP%Cm~ z<ZIYw6mi{iVWmpggbE!Ah*3slQJoMGc~cu2Ez%d`jyFFC&{TBhrQ<kh*aSL`D;DoW ziws2L*m|yfz;(YYI)p|GT_`R)E>4@mhqHMae73Y?bBRx9voyWlkF?&xEce2=mQq#! z<8%n67-R0xV8o2=jdMIUP%SWjqT`FH?cY>Q7s@9!BWeNmoTEZ$*~#r2)i~>?MZjqb zU;~Rs-_QTZ2t3rsGo^3?zz|EAp-qpmi0%$s_@09DQQ5;@7_$Aq#nw5pI8jsCuY?fH z=&YER;N{fD_8ZyZt+4Bm%PV`{lJbgQ`(cxKdd(sqZUl%}C+YcHDUYB7WMkzwd?6+& zjz+=`3ob%U0()qe$#x$u+;4lhvekOCN3&s%J6n1eqM5cK1$qf-Oh4Cr+AptOL(s3? zWN$<O`l;-n;=ExVTu3%>?!>O6secsmQjYk63G_Zl;iOxffT3P)wQUz2FH^M*H;|#8 zG7j{e1ZgMFl+W%QyAE6snpDn-ak6&+_@+hV)leyJ4Pn}FL)#RIkGI%$T0|-1PcvF) z)Z-KPBJu=>x>Qph9d__jJv$R$EqrL5B9Up!{%R*j6USxT@Vf_pp3|%WP5K&cR6@%u z(IgTDWkr{?q<2m(5h@x!-FwYyO=pWwp@yW}*|Yc{QH4qp4c>lH`_OrZGuDoe6mc53 zi2$9sAe#RdW6JC2)|Yu-QrC`e>q~3iKcMnFS1Gj}3FN_IVm}F86-@BaeXS?B9PsBm zxy#X368F!JqC}dZnr=mel9SrZ;4D?6B-i>0_jG`Uib?Co78zVs4xEFNuTy`ywW@=O z%bhVJC3ySR;VZB48(rNSY(6pzVKPp1^{6waE~+S<^Xnkj)i^_3!|ZHjMjL6R{XdBS z<yUs$YD?gKOjlv_#drKmjWXHOV9F+Gv2^;-Xsov^N?(5V#AUI5e_Nvd$i=o0Ox{)S zU_@x)B|*5N=XBm~SaCpFhK0x!8Z4N}$`pJ*J6{O)y_Nzf;@#OI=dZkQ?UW<<n%ayr zgTx2AnNxLg5$7m2&#0PF9}WOEo}nZk@bF{*dU(Zn@A_S?0e2*QjwK0CgprjtQQZ9A z9P~jZRMjSys0zYAmcGG;Hf)^QDGMG_`sdUO>m80&%=i}D$>W?El!aiiyu)XWJ}QPh zs>O~9t-bBqkK@azgRv~Ox5mzjsSBYi%z^8oEH;rF(39VBE)~P|gO1#51!8oTzi7Yb z1Up0K>zdz2@}JN!trN0s?jMm?9?5-ty<CW+P4-sXv!AtKrXcqjy(&m5FJ#!KxAxh4 zl9bxwJOfR_vOf+Q{ZC(*?gYv2?!7nY|4>4@X?64fl5?TC(??1rOd)r@w!vvMnDg_r z!YC_wc`d5h51MVEorQa!JG22|eC+z>@o)Cjt06?1Q`FQ`JajDV9IF~K^>C7v5OcS( zk)&WOoXd6e@W%j!ycM^=nwG4sI$kAG($<@6aevp#UOD%78p3i3Ciy^??cRw@R^q8a z-Q~HF#fzfTkOnmT)(^0d1WX2=;KKL6Y=|$;p+W49ftNcej?%6S{vGo}45-64SPV-y zJ8?xytFwX1Q;$+KN<*)98idwXE8mKeD^<KT`<S$ldi3nfvwO9K_*puhg3t|%i3qzR z^G#{1gX{T2X-+T)gb9y~>TzcM?X&U1WU!>5t(cx<eIlKmb%>BMfF`&MqT|g8H^Z0^ zb62{#hSAholBlA`P4~spva=In^kmbmOIQw9#8$ny{>Hstntk28#=oZ#FU9&<r(?ob zfOc8O7Tr#e91I!2Co^i%x%`Hjbm;GWp^lN-)I&@|AJv18*34ux?;8GwGyS<{pSenq zTy?}W$ovdOGJTjdU|~yj8DGH-<;65gS!ClfS#c>Nc@wU)lv#p-VvEHzxLTM#M&@6= zpCpq4{pMwHy>aB~K{xj3K=cyI%2)0hmqS|>Cgopq8Q$B8%HiKn)RY(Djw_;h%PK`Q z@JZd_>oLImeq!_m+BvLgZMSjt1XjbfJ9_QU7GPxZ-eP3HIUL%u6`mQcPZxG}{#6<B z=_cCxHhr!9R_vDrIXdV(JH+C?BH|qhBxS)b|AW-ox@MDUFl4tRWo7z>Ke$%Zh!}h< zzS{9R?&&Sl_QiRYyq3TCmGR0~bk7yC^N)@k0B~aI$0?ltcSPu2*F>Ut1D<}iw-pO2 zJ!k8rYW$EkN^x}PzkM{&fMzI~T<)<FV7)9mDD@9Zov;W`HGaZC2U`ya?Vh*C@@Iss z6Oe^dLu%EhG4<*#U2a`cCpn%oHbVoXS_7yVXMc&+r7?pj#&Q&NppTQ22;(MHTXHyt zkf}D#<@_ca`CBCDh$ei_c=8ulEHeeCSJL*KCIg<}RJ;lu`qJJG8&LmKp&Ew%=jk~U zI9Mg=)NVp~vViTK5uqfn6+s(Y8iBcICdzxYhyp@%fut@Wkw<2-MuMEZ?H*>ROV4eO zjG84+=V+pJ7TKPvWm{NRpe!HcMdm6s`l`&Q*1Z!m#h0|ID{(z=zowMUPtxmgs>lOK zC!>3sF<~IFXfccLftl-ROzav}(CnX+NfZT|pAF|m9vK~9rLPx>;(>*w9v|JOweHA3 zuKL(;`hVz}>&;)IeeG6Wa1(8;Tv9UgKDYrxpif#_KXBRAAct<GaW5pop{TK-a!O{8 z<{&ozF~^)T$m%R&QlUR>#4OPgY)X2BXHQ>VZukPZVf)w9rEo)j--nR|6iOe^dGtzk z@Z4_*&JkTsn=D@2{{)!Yi{!+59=MVjy=nL(Z1i$#+V*<P)PBDmePwcq+*|F98kkG; z=%PAev33fkahlV}{GI6QM|6@uwt(eMH8C?xAxV<Y+W`b}XISp_&}HfCVcT&`UO9i` z(PSqLIff<ra47OxLQQIR|4w_ti`3|{*O5>M=VWbZa{#X{Ubfwhile<_;$Z)$5UW^I zGI5VpdQYyC^#*+4)|<fZqA9D_NcS{4BzNPX_BU{-1&|b?Xhz&8g^OiCjwo<23uJdz zbNM{SHWKXl=EWB7r&{Zm@8_syXX5n|D=CacTEK5XV69yiX#(xZ`2bEz*I0p9pY&$V z?eRS~o%E50fZ+CuzimErrfjtTHyI~{G^REH4}9D&<mE%?!@|NMR61a`HS+6y_M-%Q zPELj<!=uYFo>VgpU2GFo8Cy9jLVynmFroiko6>}!QdBlLBCMtnm~>&6Sz<YOTaBS= zS1np5TvY=g*y<bcAn2T5#kqh@npp5rq0C48%x8~{Sn&k(W+I)j_{a=;o)Ny}{rs7k z-%KM~uR3@v%G`cR5=ZH*=Ug;zK(k3834=*Z(?;&=uWQi*FcT!f7k9RjDQ(C9$`@ye zwhiS#_}=()0#%9Z(T`SBDb)-&w083K2>36Uz69)kW3YT{dqN+q>)7{(SnJ4bX?fd- z&g$Fr2dyh1#!UP}qC!4!?6lSg-cbPl)<Yhhftz1HCQj2S#39oD%vM^<4{C2<yGsZ@ z6sl0m!nY%Ir0sl-E=YEUBWe^p{K%vJ@Lh5nOn2;C>{0fZQzD1p5))^qYKM>=1`C#2 zJv6ai6LMKMLuWN@JtMl*%jm5MlPNiBR4iQ1i&CVBS6CIMGr=&hNYIFwZ1)lDWjJxn zQgJ=npHi9jVOQW=Dtz(?7OG4!MNfo&riX@wqo>Hq56!0rIKljbQX{5`J6o9R9|0ap ziwU~e(Kx^U4L&%o51)Kwt=K?sHNnHS73pwthX2(?%ltvHS%j33PK00_p5#H%^LS^D zn0mDjll6y@?k*2t!NUg8H}{z^wMsppWA)u{Ek+nFt{sK*^9t1EzH!L)EE<hEzExB% z(4Sfx)Y@IHQamC_dXcWy6wC7az->t)r5$=(Jt~phrl(FR0Z@u@hSmdj*Tp~+20mXY zV8Kmms~sb3M&CAAhq`l6l7clbN#F-|aFF)qGc=%-X{l?uq|6ItP!`#Ri?YZp1>iRQ zerchY65cT^s!A3v@5@iZFqFS+tF*a}HZNqC*R<419?bp5ibYrSff<qvov6!eKMm^h zM~^8H5J<#iC7)|RzZpHw&mja0;4>TXIOdC}Z9h=lBjEHJGjNqfTNMW3Mt_ltv;<BB z&^i4wzz~Fz?g<=xBohA@R)K)h4+l4TcrUpn{#J}CusF5jZr<(TBU1~(bR+RC&!XIS zTQZsd^oVzlN#9ZCC0b|vw*PUr`^=1bnPXuugv8T(9cKw<a8%WjMjk6gLHzKz+N{DL zuh`5^+qS+r_sms?W9gG~|Cg|@5=v;5EH7>bs3GiE`2qua7HkH#8ZyQik@H-@X)wRf zBSop^yS~ZF!x^kDe;KS^pIz6~fk>d2oW%2_XfmY2?7&TF8dJVrWleeb3l6+~kbNH% z0Z^C_zzrUq!S>j>St0xKSNRXA3iP_{me$Pu*7jh*hvLQT@~nSUfwOFCQX#_^bTy&j znKuzxvEjDkF9rJBOgn5~HJIh)c!bH9?&ie9F`Tv`omZHk-8AjSwQVcnXPz`cQ3lxf zkKP+9;N;MOB+Q5&*S9_SWyHSMo$25b#%b7`*D#lW_O$%lS2WYgl;`y-hAe7~c;iO~ ziH1Z=C75>GQ%NJ5WCiZ-iE9buB1c<09kKi_3?ABN&-(7jp^;}}1hB4!b%~-0+Zm$V zY-Pir14RHV+93EN>=F3vg4E~*0a;R_PxZ;eZ1RfgUkA9CbfrE1G?0zC@s0aT83Abx z4nH9G-Ir(kFaBBOAuy3sgC@LY`5c1l)2i!564lMkxf|6T77|56FKYuo0DO4UgXCE` z;(;873J9U2L?PeibN)71u+aMW7g@nJ1T0RIDp@ni2Ud=<Yo9&RT!VA}Ifc&(gdLUd z#b8F04?}fxq<<`f>kpZClF+`)3zNnv%uy{lA!blgV&ShjtQoAAtq>6g4gh>SuarSP zGIfM{Ex6uVC^kY&bO_WacuO*O-bYtY0|y*?N&q6{?p0ovubt>_g*pdIHM&}8OT}yY z0wk&Ibp{XNJX2XIEubEJZP$MGcU3PM0_Eb_K7w3Q>a2fxTkYK$J6n6OF8h}qRvX?k z+2=cN!p1(8`>@EI^xl`OYPW%nNYpmOwWnWa>sgVtEmUlJy-ClBz_WrC^Av>uBa(<v z;9w(-%C7V;6PQUUKGEY>LtTW}O9on7ljy3$KH$VS6-Ai)N@B1;O70{;$YMTXY5wC3 zq(jb{oUGZI$Hk~rR~{5y9gz%YyiaJbEWi3o?ra&2mTu5e>@5~?ZJkzfSaf1V=i@PD z5R$DMpS{lA(HjS7eT7x;0PDC3_V**0<&XdM@Kv^%`GUXzIp5%9LmzlkcrXadjCQt+ zV9<Iu3?O{vG0ZsiWlPjU*A%_)@Fak6)@T96fZXh}*#MxtG`~0kht!7iCTKPxo`9qA zcqo>J96o~st7vkD?@(fhzfUnE#5rAcUhiR!X-CPiRsp@{X~mRw{5Q^;map0b;COpe zCKu(bpDtq+pn506R^lf<in5-K!<wE~^V_Lt&#k63R>|B~pJ&Fo`JSt>2cz_`)iNIu z?mth)?Hs9HcgKHxT(qO7cz+Vz2_)fM4v-c^{)@^HH@|AoY0u#VSgnEC!x?A2YH=ee ztDW2vIM$^!s8p?g2_-hIRF#ADH&EdSa`5C=&OdqhJD9gz)M53LRC{MFbBPteRb-Ad zN^EL7ixH{<jshr3`*g02zgIK=r4M7=zVnm9hvI(!uVK0%>{j|x&FM3_@u1b=W8=t= zon}S}1L;U#{XERVPGcseg%cF!Qm2M`CX5qzSf%^iq({!cVHzbPWk@yh<g+P&@RTN^ zMU~CuCtrFyEYA%BygEY`f9R{V+Y%W6eTEAlh7f=q*BoFs`w_U9m_v!cdaU45eiG+X zuz6uz*tJ2uvG9l`>J88OYxku}jmEtb-fZVz{&Cs7P6o2T2^#FVMT`)rFV^5w8h*3Z zcK~~@>}~Mqw$W6MaD7E8G#h(vz2jEC42%_09{PiPO5fRSpzoe<SdzW(<K=ra=mdJ$ z7l~us#7`MP-TI80zcp?s1X^ikK_DX1g5)63HYqS=y3VLw_|t9^mi-Yo?TT2p`3>wE zsQ*_B0ZcVYnP|BWIgVnrMW-*cnT6>;zRA<y*tU!1b&KP8>~~qOUcY#7R*Y^$icdy0 zD_EU*DldbFaTz$#k%Rp7=4#YGsdUvPL4xpfbL@=O!7Oq*;Y}<9wHx+4)ksh!JUvcg zJlw#sN>N$mOFxo*KBlBrt6iN`(o|jO6DZ&&wb`w(EXP!t6li%VCKV)EI`R!^1UOPp z&GNHiym4Dyrn!)Cc!aJ@u_1T*ld4dhbe!DbaJzBY$v3q|(||^Cl}r%#w#j!)Lq2^Q zf1{RAwHcrID%%tkXw_pMTeY{U{la9Y6U%Lyp?o3*>OjjM)Y$(y!Fe?=8z`IfI_h@< z6^v@l;p){2D4R4oNa^PLyXgCzOT7Ix5IrRK)7-p{N`wwq_1p0_dK$12nRsDYnuGDc zp+GIIK$~8W`1nFzu^wO_p+v^eum7q%i}{N7Ri6~Gvw<ehzNV{TEC}mH;jt`DP07%U zqRt-luC;OxkX?8luCIzRbzg&+K-Dsw9B5`JM&;bI8`=8AEtscV_y%4VFzzDr_Emb! z$Vm~h6N^bTGBnEp`CNDupLY@V<<Dn3fIb*QA<^&zW1W?2WUQ0?B@8uOqB-+cVD)0* zxt_LHysUA0*$SLW`t1v<c1s}YlR+Um!y!j=+_!@gxO>`W7z;2wuuk{yLtj)O)%c2* z&nn%p4?5{D8~FjZD;z2M*Wemc0tUB#1*`1~{a<2G?e6+sp;E=HM}>B!AM|<Wt6!sl zNy-;;+>5s1^Hm?fc-Hkv3nyVgPT7cH)tOy1Po50}2vDr;<2`QPC|3LkJ*mAS-Azrx zRl9P%xURV<S!kZUcp`EMEoQClYLmj8P)g%l`x?^oq-&fYw@Tpagj79Jn3no`5`ZG< zZn#QB!l8d=d_L^t;2NeorA!|Cc{7HC^`#BAsPR#D+jGrJHcEiEM;X1Yd!^4!;~41l zcEj#>$S_4*p(>xgCTR6bubi-+shIBR<H*hU*KQ)+b4ZALkvCLH2~ww)Q=KNLFCS<! zTeS_%+JR;k*_Q(@$pxw8IN##uvb2ZUEbYBx2K?5KrrhCsj5ZKpJqH3T!K=kOEpMM) zk`||91Wh)*G*7K!>2y}DgJ;BeU`GSSdH-9WP+yFOKFGsWs`x~N_h;g|AMPi`T{W@A zGT<EC`SaGit?XDQvWU$znK|?LI!ehgTH?-u&SAnYKVS9);goe|0wSy6gQ_Vg?H3Xa ztF&1^e%RC0xNN!dWwJw++}b|s96Ar2TS~*}|3xwZ$OJd8`53~E0-4E-CX&ZQV&~6A zQ(dprCC_xihxdcIe}49=DZw6W?PM45IW~=l8c3G`rHjWcHyTy@=0;@>@d#KTC;na^ z)}6jpwUBD1VM0ee#bV1jA$EQ!A9>BU20{K?QYHP{_gTQv7>=qo!qOFMMPu1ZeB+^@ zRUUxdjNzrm`YX)GeQro3RgRn}FR`ry{jF6(axBG%!jk3Q2mvM|klrCML;mHdDjhk* zZ$lbPLXI!OoefY;l4xK32C`y}VCI{s$n#plor{V2m$z)`G?N3`Ve^nQee0A8=m8%+ zPhDrRP`3#NwY*<25)u+~y9rG=!`|uDdh<Z`)p);6fZab)11pfKmw)JRqK<h9%$7GB zG(TYU;HyOF2|zqvvX&foBqd}ha?Ex+f*vD9JF$Y31+3_z)w!R&5b&!X5qNGSVU1^I zPLRNok?+IhderRw#}9XVdB)IJe?XR{3*fs=z#3T3im|EK&-c4cXNl9ZJz~ZlC*c;M zDF=@vkP*L%XkyLl`(V6P!_;;?N%e9l<k31cdUZ_9(;Vw5?DyS$s5utiO0PYH`IFz6 z>jd#hg8FiL%`nYHnlm}`QSignwBMj$UcNlee_~ZkIn#i9dEDKAM^i;j%N}Av%TuIx zj%}c+a6I@bk1AZk;!$9531~_XQG=abU#41LkTIS80$DjiVe@C})!d?Fds;zI+lpr2 zlw)7L3oS18KReFwqK4lD96`WW9*}Jg$3>QA_#40_xYz<1L-&e3W5N3z^%8(+LdDc0 zHY|Ye&r&)nA#i87j{pdn(l3JLe(SyY9T2ZqI1pj;u>s$k|H1x!hd<hbH|*tu)^~4c zXW`6}%M=qyF*s&mh&*Z)zT@hL2FDU1y#7l$Smc90KeEKQP!|pkEwM1ZLs_^3m|D>P zU}~usec_?u5Fy>gKS)^+91$Qa4m<&k+7$ENVOIcHUziO9^~C@j!mcZV+yw7#yBE;# zzTv`G$NQ^J;n)Y?Pb9-b@Q(0=m^R$W0TFnDFaoLi-vZG8k#K~Qc#nChha>Y&dAdS< z;d{!Ng5-U7n|`=>a0*IzFi@~LoAC2P*nVsK;8ypd1WloX@E@&pfIlvZoZ#XyfOLQZ zpIlw}&HkmJOmG>C++X^J9vD<47dPSk{7k@m{|DTOg!vJmpukQL*6x@F3vdyidcP;S z2i4TWvB}%N_vz8$JNCxFTd?4F*8{g;xe;`^-?u!k09^Fc3%B+o92%ltk0^boC(1yT zVo80s)8u}x0hl37>JDc3FNzp|RLCvSipM6ar^KsYeQDZh|Jx+B@dLO^Swx*&{DUHS zAaTKVJAXmNwAL>_*drD$8ucs9aL<|jZo3#W29Eo2ED2RH<iiIN0U5Fvf8mblKySWy zp`Uo5!bNl1Q^xv1kwLjO$FG#lu#%tTZ<$FKNzgww9^w&54bee5l*<Bk9ZLzg$nK?7 z1WYYgf{<}U-J}0s5=vQL@Z7x+P-Un^OTeh}A~TEt+=|$nPtsEaMOzB<2Mx*NJ3wI8 z4?umGok8sgM$}mhko{=^m;~OFL*LcHaIBEFoat;QpI4hYceqX9<?tBft$Z=8W4m@B zI~oWD20EU3Aau!mg9PWUt@bfsHj<}BxCZsn3o$^pO(Y&)mr)Ni@nti@7gw%XKHMB6 zGQgDX^%NJcUcycNTe=ZC48@4xRb{~0>4!q#7!67&%3ppA7ZI>XJ~^UA9B3g8vW7F$ zfpywtgx~u0&ZQwA!1U8`n&1nueE>zLI+Wu{vYckADRWye^XvL4a_oPS&QI_)!&~l0 zGq2Qc6`<7Rf={Ds;fm9B(-PYIU@uqg>-U}ykwNM6t+>WwaM_a3{KZE)v*c1HlnuwR zC(h0iMSXD0AuPs+ZD8H)`YvL@jYj~e@_{<u4=)4BQZOwhs5ngc=#l3kEN>;%B>SGv zCEm_})O$r}l7YEdA-9AyAqkO)47pc3?+8E(sGOJ+)!k8?4M06Tm1~XN+2qgT7YniS z-D!x}f%**ql3lmyze8(9p<8O6sf5R?5O5$dKP^BFC$?UGFckTob~5mOo^RmfC@~K* z8x9pDAcjy4jah5N^UY-X{}%UzOMF|(ysTu+-u8mP1@DeL0I7dq#F&1lRm0|n3up9H z0WsY*_T>{M2m@#T-yMXS7YAC`FK)%FHhX%*#1-7xQ(9g2oDj8ma@|>=Ffp$Fun{N{ z1C&9#P-<^MccCQYL)V5kfQJ3wun80>GcG-$&?UUHspXGX$ASQl`g!UJ9rnU!PrZKT zrVY*V4v7LB925R9>%8Z0$^hPh*`d@nD??G#V#&7bPL<Y;c4r_N0=V<Q6_`^UCm!8V z=k1^k+N%@6$~DzxPED(eX2K8M038`n8m#GPFg?%ubd|)WJ>r#?x=WN=7jr2I=+<N; zCul-KiVv9H53n&ZnhOVX@0!phkQFFVsnt3+qR~byuZ*t^w85a!No~Qb*-lcm3qMw` zJhAXkt)f2XW#}?Mhelut75JdTu+d)Vf^wY3QJ$Cck7lcQl?fRADKt+!3$)~(kAtz6 zlTv_3E5}+6?xz+V+de#tWxNfkHF`jc{ijI$YHsjjsyfPT%IG|Y$*I-v#tZPG;W#IU z)lwa|&QDcp+u_n77WXJ;2DCgd1Jw|1Ld=Z~wv4(TowUL%e(e<t=8(FP3-VS%9&i&3 ztFjWC3wQBv>1&X95YYkVAJ)_2i<=t)d|hsWcAnHKcqLp07lZWz1tou-eScg~Zu`M* z30)n0;6A9%Fz-*^+v;>+W(DI#;7aKx@JeZ5G4VoFLm^6J*XjgtVcX!K2=qx{#|Oi$ z^@0T=o{bvZ|8H?e=z=nl2C&gAETFR?9Fo=@8aNKImN9Zv%z$h=;h)|A5?1&+te050 zJ>Kr@!N-u;fo}zuc(IyA!RN=S^o`&N*%R`N9AZBow=ai;Vhw!zW-E(AQpLi{2}U4` zcT8kB!exHwNC3nzJ5Y=1{7w<>PpV7;CN(E#M}Rl+2{<k|pa<JR@)($vCDPl}p-zP? z^?{K#pj_4NkSql$ve3v;t>980*iIP@Cg`@L(Ii2QB=O+CQ{3g%sXq)t7=Xaj)z4*} HQ$iB}PC2@L literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/plan-resource-change-detail.png b/content/terraform-plugin-framework/v1.15.x/img/plan-resource-change-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..7402d85d2a16f49ec26d2929a516b7d77e623d92 GIT binary patch literal 250759 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 D7jl=a literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/plan-resource-change-overview.png b/content/terraform-plugin-framework/v1.15.x/img/plan-resource-change-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..cd21fc053eb86613796a0cae9a4d380f629e9151 GIT binary patch literal 109755 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 Zb|q(vwY;YK<!%A5lO|`5mmG5r`wtCd3(Noj literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/read-data-source-detail.png b/content/terraform-plugin-framework/v1.15.x/img/read-data-source-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..f74b9bda6594cd71e96756563b3951afe914dffb GIT binary patch literal 197134 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%0DXExG&%S;L7r(u!11(R8zFj=*WoV{ewc$ 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 U*AU0SIq$l4L+d)~+P%mB2gNok%>V!Z literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/read-overview.png b/content/terraform-plugin-framework/v1.15.x/img/read-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..edaa30bf7fa46fdc066ad4e409aa641ccbaae1eb GIT binary patch literal 131147 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%0A1Gw%Fo%{d^c<xyQLcty=+u$9gN+|Jo?Z|`hz7EY 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 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/read-resource-detail.png b/content/terraform-plugin-framework/v1.15.x/img/read-resource-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..a43a0cf61375226841d0f45cbbb601218c2051f3 GIT binary patch literal 191824 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 CFQV!I literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/validate-config-overview.png b/content/terraform-plugin-framework/v1.15.x/img/validate-config-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..db1e3685691318eb96bfb00b545fd27c4458912a GIT binary patch literal 242410 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 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/validate-data-resource-config-detail.png b/content/terraform-plugin-framework/v1.15.x/img/validate-data-resource-config-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..78191ad32ab8ec6e986d253692ac34b1bfd250bf GIT binary patch literal 317002 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 W+L5YmGEuS({9M#F)Iw|8-u*xLNm*k6 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/validate-provider-config-detail.png b/content/terraform-plugin-framework/v1.15.x/img/validate-provider-config-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..7c02dc2a9a47136b2847c2c2f9faa5a2764e63de GIT binary patch literal 289747 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%0Dm@LL<Rre`V_dz<8CT(ecr|rrO>gebj_?0bdN_ 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 literal 0 HcmV?d00001 diff --git a/content/terraform-plugin-framework/v1.15.x/img/validate-resource-config-detail.png b/content/terraform-plugin-framework/v1.15.x/img/validate-resource-config-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..b6217cecd7ffe04c78dbf3b1a2f052fe7c74809a GIT binary patch literal 306257 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%0Aj9 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 literal 0 HcmV?d00001 From 67687e9a500599682c74ffa67ed9ba45eeb8eeea Mon Sep 17 00:00:00 2001 From: Krista LaFentres <lafentres@users.noreply.github.com> Date: Wed, 14 May 2025 15:39:39 -0500 Subject: [PATCH 07/47] Make agent eng team owners of agent docs --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 60100df076..a81c73960a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -9,5 +9,5 @@ /content/terraform-plugin-mux @hashicorp/terraform-devex @hashicorp/terraform-education /content/terraform-plugin-sdk @hashicorp/terraform-devex @hashicorp/terraform-education /content/terraform-plugin-testing @hashicorp/terraform-devex @hashicorp/terraform-education -/content/terraform-docs-agents @hashicorp/tfc-agent-core +/content/terraform-docs-agents @hashicorp/team-hcpt-agent-engineering /content/terraform-cdk @hashicorp/cdktf From 34ae9e8b886227a8ec4326ba3564ccf8c98da187 Mon Sep 17 00:00:00 2001 From: Ruben Nic <RubenSandwich@users.noreply.github.com> Date: Mon, 19 May 2025 11:26:31 -0400 Subject: [PATCH 08/47] Ignore gnu.org domain in link checker (#401) * ignore gnu domain in link checker * Test to make sure that the GNU domain is skipped --- .github/workflows/broken-link-check-full.yml | 12 +++++++++++- .github/workflows/build-pr-preview.yml | 1 + .../docs/plugin/testing/acceptance-tests/index.mdx | 4 +++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/broken-link-check-full.yml b/.github/workflows/broken-link-check-full.yml index 1e4a13aaad..1fd0e6aad3 100644 --- a/.github/workflows/broken-link-check-full.yml +++ b/.github/workflows/broken-link-check-full.yml @@ -16,7 +16,17 @@ jobs: id: lychee uses: lycheeverse/lychee-action@f613c4a64e50d792e0b31ec34bbcbba12263c6a6 # v2.3.0 with: - args: ./content/ -b https://developer.hashicorp.com/ --exclude-all-private --exclude '\.(svg|gif|jpg|png)' --accept 200,408,429 --timeout=60 --max-concurrency 24 --no-progress --verbose + args: >- + ./content/ + -b https://developer.hashicorp.com/ + --exclude-all-private + --exclude '\.(svg|gif|jpg|png)' + --exclude 'gnu\.org' + --accept 200,408,429 + --timeout=60 + --max-concurrency 24 + --no-progress + --verbose fail: false env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/build-pr-preview.yml b/.github/workflows/build-pr-preview.yml index 0bac2f3b43..d12f66131d 100644 --- a/.github/workflows/build-pr-preview.yml +++ b/.github/workflows/build-pr-preview.yml @@ -300,6 +300,7 @@ jobs: -b ${{ needs.deploy-dev-portal-preview.outputs.preview_url }} --exclude-all-private --exclude '\.(svg|gif|jpg|png)' + --exclude 'gnu\.org' --accept 200,408,429 --timeout=60 --max-concurrency 24 diff --git a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx index 8eb866538a..9cea93edb8 100644 --- a/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx +++ b/content/terraform-plugin-testing/v1.13.x/docs/plugin/testing/acceptance-tests/index.mdx @@ -99,7 +99,9 @@ TF_ACC=1 go test -v ./... #### Makefiles -For convenience, provider codebases can place common tasks in a +test to make sure the gnu domain is skipped + +For convenience, provider codebases can place common tasks in a [Makefile](https://www.gnu.org/software/make/manual/make.html#Makefiles). This example defines a `testacc` target, which sets `TF_ACC` and the verbose From b172f2d30bdd86773aa76cd245479e0f32c13877 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:10:43 -0400 Subject: [PATCH 09/47] Add enough for barebones test --- .../actions/copy-cloud-docs-for-tfe/README.md | 59 + .../website/data/cloud-docs-nav-data.json | 1 + .../docs/cloud-docs/api-docs/index.mdx | 13 + .../docs/cloud-docs/api-docs/tfc-only-doc.mdx | 5 + .../website/docs/cloud-docs/index.mdx | 16 + .../docs/cloud-docs/registry/index.mdx | 13 + .../website/docs/cloud-docs/tfc_only.mdx | 12 + .../website/img/docs/image.png | Bin 0 -> 167491 bytes .../website/data/enterprise-nav-data.json | 1 + .../website/docs/enterprise/do-not-remove.mdx | 7 + .../website/docs/enterprise/index.mdx | 10 + .../enterprise/stale-cloud-docs/index.mdx | 8 + .../website/docs/enterprise/tfc_only.mdx | 0 .../target-template/website/img/docs/.gitkeep | 0 .../website/img/docs/_favicon.ico | Bin 0 -> 15086 bytes .../website/last-cloud-docs-sync.txt | 3 + .../__tests__/main.test.ts | 309 + .../copy-cloud-docs-for-tfe/action.yml | 12 + .../actions/copy-cloud-docs-for-tfe/index.ts | 18 + .../actions/copy-cloud-docs-for-tfe/main.ts | 293 + .../copy-cloud-docs-for-tfe/out/file.js | 12 + .../copy-cloud-docs-for-tfe/out/index.js | 102924 +++++++++++++++ .../out/worker-pipeline.js | 51 + .../copy-cloud-docs-for-tfe/out/worker.js | 65 + .../copy-cloud-docs-for-tfe/out/worker1.js | 149 + .../copy-cloud-docs-for-tfe/package.json | 6 + .../remark-get-images-plugin.ts | 28 + .../remark-transfrom-cloud-docs-links.ts | 28 + .../copy-cloud-docs-for-tfe/tsconfig.json | 9 + .github/workflows/copy-cloud-docs-for-tfe.yml | 118 + 30 files changed, 104170 insertions(+) create mode 100644 .github/actions/copy-cloud-docs-for-tfe/README.md create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/data/cloud-docs-nav-data.json create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/index.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/tfc-only-doc.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/index.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/registry/index.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/tfc_only.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/img/docs/image.png create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/data/enterprise-nav-data.json create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/do-not-remove.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/index.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/stale-cloud-docs/index.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/tfc_only.mdx create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/img/docs/.gitkeep create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/img/docs/_favicon.ico create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/last-cloud-docs-sync.txt create mode 100644 .github/actions/copy-cloud-docs-for-tfe/__tests__/main.test.ts create mode 100644 .github/actions/copy-cloud-docs-for-tfe/action.yml create mode 100644 .github/actions/copy-cloud-docs-for-tfe/index.ts create mode 100644 .github/actions/copy-cloud-docs-for-tfe/main.ts create mode 100644 .github/actions/copy-cloud-docs-for-tfe/out/file.js create mode 100644 .github/actions/copy-cloud-docs-for-tfe/out/index.js create mode 100644 .github/actions/copy-cloud-docs-for-tfe/out/worker-pipeline.js create mode 100644 .github/actions/copy-cloud-docs-for-tfe/out/worker.js create mode 100644 .github/actions/copy-cloud-docs-for-tfe/out/worker1.js create mode 100644 .github/actions/copy-cloud-docs-for-tfe/package.json create mode 100644 .github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts create mode 100644 .github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts create mode 100644 .github/actions/copy-cloud-docs-for-tfe/tsconfig.json create mode 100644 .github/workflows/copy-cloud-docs-for-tfe.yml diff --git a/.github/actions/copy-cloud-docs-for-tfe/README.md b/.github/actions/copy-cloud-docs-for-tfe/README.md new file mode 100644 index 0000000000..4ecae1377c --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/README.md @@ -0,0 +1,59 @@ +# `copy-cloud-docs-for-tfe` + +This composite action is consumed by the `copy-docs.yml` workflow, which is triggered +at the time of the Terraform Enterprise team's **APP_DEADLINE** event. + +Roughly, it behaves as depicted in this diagram: + +```mermaid +graph LR + A[terraform-docs-common] -->|copy `/cloud-docs/*` contents<br/>alongside `/enterprise/*` contents| B[ptfe-releases] +``` + +## Overview + +This action looks for a few things in authored `mdx`, to determine +if sections or entire pages should be ignored from this copy process. + +### Frontmatter + +Adding a `tfc_only: true` line in markdown frontmatter signals to +the action that the associated `.mdx` file should not be handled in the copy process. + +#### Example + +```markdown +--- +page_title: Assessments - API Docs - Terraform Cloud +tfc_only: true +description: >- + Assessment results contain information about continuous validation in + Terraform Cloud, like drift detection. +--- +``` + +### HTML Comments + +Specially formatted HTML comments can be used in matching pairs +to omit multiple **lines** of text from the copy process. + +> **Warning**: This only works with MDX v1. + +#### Example + +```markdown +Some content available in both TFC & TFE... + +<!-- BEGIN: TFC:only --> +## Some section + +This will only be visible in TFC + +<!-- END: TFC:only --> + +More content available in both TFC & TFE... +``` + +> **Note**: More details are available in this [TFC/TFE Content exclusion][rfc] RFC. + +[rfc]: https://docs.google.com/document/d/1DPJU6_7AdGIJVlwJUWBlRqREmYon2IgYf_DrtKjhkcE/edit \ No newline at end of file diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/data/cloud-docs-nav-data.json b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/data/cloud-docs-nav-data.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/data/cloud-docs-nav-data.json @@ -0,0 +1 @@ +{} diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/index.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/index.mdx new file mode 100644 index 0000000000..e626e3f496 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/index.mdx @@ -0,0 +1,13 @@ +--- +page_title: API Docs - Terraform Cloud +description: >- + Use the API to manage runs, workspaces, policies, and more. This introduction + includes authentication, features, and formatting. +--- + +[link to transform]: /terraform/cloud-docs/api-docs +[agents link do not transform]: /cloud-docs/agents +[agents link2 do not transform]: /cloud-docs/agents/nested-path +[agents link3 do not transform]: /terraform/cloud-docs/agents +[json api document]: /cloud-docs/api-docs#json-api-documents +[json api error object]: https://jsonapi.org/format/#error-objects diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/tfc-only-doc.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/tfc-only-doc.mdx new file mode 100644 index 0000000000..aadfa2f002 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/api-docs/tfc-only-doc.mdx @@ -0,0 +1,5 @@ +--- +page_title: This is a TFC-only file +description: +tfc_only: true +--- diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/index.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/index.mdx new file mode 100644 index 0000000000..2647cc99bf --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/index.mdx @@ -0,0 +1,16 @@ +--- +page_title: Test Docs +description: This is a test document +--- + +The associated file for this image should be copied + +![An Image](/img/docs/image.png) + +This link definition should be updated to /enterprise + +[json api document]: /cloud-docs/api-docs#json-api-documents + +[transform me](/cloud-docs/api-docs/users) + +<CustomMdxComponent>Foobar</CustomMdxComponent> diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/registry/index.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/registry/index.mdx new file mode 100644 index 0000000000..c60fe7f7af --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/registry/index.mdx @@ -0,0 +1,13 @@ +--- +page_title: Private Registry - Terraform Cloud +description: >- + Use the Terraform Cloud private registry to share Terraform providers and + modules across your organization. +--- + +# Private Registry + +-> **Note:** I am an info alert +=> **Note:** I am a success alert +~> **Note:** I am a warning alert +!> **Note:** I am a warning alert diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/tfc_only.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/tfc_only.mdx new file mode 100644 index 0000000000..7b2fce85e5 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/docs/cloud-docs/tfc_only.mdx @@ -0,0 +1,12 @@ +--- +tfc_only: true +--- + +This simulates a page that + +- was previously copied over to TFE + (It will have an entry in `last-cloud-docs-sync.txt`) +- had `tfc_only: true` added **afterwards** + +The expected behavior for this file is that +it will get pruned on the next copy-docs process. diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/img/docs/image.png b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/source-template/website/img/docs/image.png new file mode 100644 index 0000000000000000000000000000000000000000..6c78a11e42d1cc83729ebc54fd9b813339f123d7 GIT binary patch literal 167491 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%0Adl~Py=>0@`GayeKXK~!_Aa3xYnAyW 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 literal 0 HcmV?d00001 diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/data/enterprise-nav-data.json b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/data/enterprise-nav-data.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/data/enterprise-nav-data.json @@ -0,0 +1 @@ +{} diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/do-not-remove.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/do-not-remove.mdx new file mode 100644 index 0000000000..2862cdede1 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/do-not-remove.mdx @@ -0,0 +1,7 @@ +--- +page_title: Test Docs +description: This is a test document +--- + +This is previously existing doc in ptfe-releases. +Ensure this does not get removed diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/index.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/index.mdx new file mode 100644 index 0000000000..7933429452 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/index.mdx @@ -0,0 +1,10 @@ +--- +page_title: Index +description: Index +--- + +This filename is shared between `cloud-docs/index.mdx` and `enterprise/index.mdx`. + +This is a special case where we want to ignore the `cloud-docs` file. + +See `IGNORE_LIST` for more details. diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/stale-cloud-docs/index.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/stale-cloud-docs/index.mdx new file mode 100644 index 0000000000..3121149318 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/stale-cloud-docs/index.mdx @@ -0,0 +1,8 @@ +--- +page_title: Stale Page +description: This is a stale cloud-docs document +--- + +This represents a stale page, once copied from +terraform-docs-common, and now intended to be +pruned. diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/tfc_only.mdx b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/docs/enterprise/tfc_only.mdx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/img/docs/.gitkeep b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/img/docs/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/img/docs/_favicon.ico b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/img/docs/_favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..eced811f5c7eb2dbf096a7de106f710afecd518e GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/last-cloud-docs-sync.txt b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/last-cloud-docs-sync.txt new file mode 100644 index 0000000000..49dbf4422b --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/__fixtures__/target-template/website/last-cloud-docs-sync.txt @@ -0,0 +1,3 @@ +website/docs/enterprise/stale-cloud-docs/index.mdx +website/img/docs/_favicon.ico +website/docs/enterprise/tfc_only.mdx \ No newline at end of file diff --git a/.github/actions/copy-cloud-docs-for-tfe/__tests__/main.test.ts b/.github/actions/copy-cloud-docs-for-tfe/__tests__/main.test.ts new file mode 100644 index 0000000000..bdfdc8245e --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/__tests__/main.test.ts @@ -0,0 +1,309 @@ +import * as path from 'path' +import * as fs from 'fs' +import fse from 'fs-extra' +import tree from 'tree-node-cli' + +import { main } from '../main' + +describe('copy-cloud-docs-for-tfe', () => { + const fixtureDir = './__fixtures__' + + const sourceTemplatePath = path.join(__dirname, fixtureDir, 'source-template') + const targetTemplatePath = path.join(__dirname, fixtureDir, 'target-template') + + const sourcePath = path.join(__dirname, fixtureDir, 'terraform-docs-common') + const targetPath = path.join(__dirname, fixtureDir, 'ptfe-releases') + + beforeEach(() => { + // simulate cloning of our two repos + fse.copySync(sourceTemplatePath, sourcePath) + fse.copySync(targetTemplatePath, targetPath) + }) + + afterEach(() => { + // clean up cloned files + fs.rmSync(path.join(sourcePath), { recursive: true }) + fs.rmSync(path.join(targetPath), { recursive: true }) + }) + + it('copies /cloud-docs to /enterprise', async () => { + // static file paths + const pathToTargetImgDir = path.join(targetPath, 'website/img/docs') + const pathToTargetDocsDir = path.join(targetPath, 'website/docs/enterprise') + const pathToTargetLogFile = path.join( + targetPath, + 'website/last-cloud-docs-sync.txt' + ) + + // before + expect(tree(pathToTargetImgDir)).toMatchInlineSnapshot(` + "docs + └── _favicon.ico" + `) + + expect(tree(pathToTargetDocsDir)).toMatchInlineSnapshot(` + "enterprise + ├── do-not-remove.mdx + ├── index.mdx + ├── stale-cloud-docs + │ └── index.mdx + └── tfc_only.mdx" + `) + + expect(fs.readFileSync(pathToTargetLogFile, 'utf-8')) + .toMatchInlineSnapshot(` + "website/docs/enterprise/stale-cloud-docs/index.mdx + website/img/docs/_favicon.ico + website/docs/enterprise/tfc_only.mdx" + `) + + // run our action + await main(sourcePath, targetPath) + + // after + expect(tree(pathToTargetImgDir)).toMatchInlineSnapshot(`"docs"`) + expect(tree(pathToTargetDocsDir)).toMatchInlineSnapshot(` + "enterprise + ├── api-docs + │ └── index.mdx + ├── do-not-remove.mdx + ├── index.mdx + └── registry + └── index.mdx" + `) + expect(fs.readFileSync(pathToTargetLogFile, 'utf-8')) + .toMatchInlineSnapshot(` + "website/docs/enterprise/api-docs/index.mdx + website/docs/enterprise/registry/index.mdx + " + `) + }) + + it('removes previously copied files that have since received `tfc_only: true`', async () => { + // static file paths + const pathToTfcOnlyFile = path.join( + targetPath, + 'website/docs/enterprise/tfc_only.mdx' + ) + const pathToTargetLogFile = path.join( + targetPath, + 'website/last-cloud-docs-sync.txt' + ) + // before + expect(fs.existsSync(pathToTfcOnlyFile)).toBe(true) + expect(fs.readFileSync(pathToTargetLogFile, 'utf-8')) + .toMatchInlineSnapshot(` + "website/docs/enterprise/stale-cloud-docs/index.mdx + website/img/docs/_favicon.ico + website/docs/enterprise/tfc_only.mdx" + `) + + // run our action + await main(sourcePath, targetPath) + + // after + expect(fs.existsSync(pathToTfcOnlyFile)).toBe(false) + expect(fs.readFileSync(pathToTargetLogFile, 'utf-8')) + .toMatchInlineSnapshot(` + "website/docs/enterprise/api-docs/index.mdx + website/docs/enterprise/registry/index.mdx + " + `) + }) + + it('does not remove previously existing docs', async () => { + // static file paths + const pathToFile = path.join( + targetPath, + 'website/docs/enterprise/index.mdx' + ) + + // before + + // run our action + await main(sourcePath, targetPath) + + // after + expect(fs.existsSync(pathToFile)).toBe(true) + }) + + it('prunes stale cloud-docs', async () => { + // static file paths + const pathToStaleFile = path.join( + targetPath, + 'website/docs/enterprise/stale-cloud-docs/index.mdx' + ) + const pathToTargetDocsDir = path.join(targetPath, 'website/docs/enterprise') + // before + expect(tree(pathToTargetDocsDir)).toMatchInlineSnapshot(` + "enterprise + ├── do-not-remove.mdx + ├── index.mdx + ├── stale-cloud-docs + │ └── index.mdx + └── tfc_only.mdx" + `) + expect(fs.existsSync(pathToStaleFile)).toBe(true) + + // run our action + await main(sourcePath, targetPath) + + // after + expect(tree(pathToTargetDocsDir)).toMatchInlineSnapshot(` + "enterprise + ├── api-docs + │ └── index.mdx + ├── do-not-remove.mdx + ├── index.mdx + └── registry + └── index.mdx" + `) + expect(fs.existsSync(pathToStaleFile)).toBe(false) + }) + + it('updates `last-cloud-docs-sync.txt`', async () => { + const cloudDocsFilesPath = path.join( + targetPath, + 'website/last-cloud-docs-sync.txt' + ) + + // Before + expect(fs.readFileSync(cloudDocsFilesPath).toString()) + .toMatchInlineSnapshot(` + "website/docs/enterprise/stale-cloud-docs/index.mdx + website/img/docs/_favicon.ico + website/docs/enterprise/tfc_only.mdx" + `) + + await main(sourcePath, targetPath) + + // After + expect(fs.readFileSync(cloudDocsFilesPath).toString()) + .toMatchInlineSnapshot(` + "website/docs/enterprise/api-docs/index.mdx + website/docs/enterprise/registry/index.mdx + " + `) + }) + + // note: This is an integration test w/ a local remark plugin + it('transforms /cloud-docs links to /enterprise', async () => { + await main(sourcePath, targetPath) + + expect( + String( + fs.readFileSync( + path.join(targetPath, 'website/docs/enterprise/api-docs/index.mdx') + ) + ) + ).toMatchInlineSnapshot(` + "--- + page_title: API Docs - Terraform Enterprise + description: >- + Use the API to manage runs, workspaces, policies, and more. This introduction + includes authentication, features, and formatting. + source: terraform-docs-common + --- + + [link to transform]: /terraform/enterprise/api-docs + + [agents link do not transform]: /cloud-docs/agents + + [agents link2 do not transform]: /cloud-docs/agents/nested-path + + [agents link3 do not transform]: /terraform/cloud-docs/agents + + [json api document]: /enterprise/api-docs#json-api-documents + + [json api error object]: https://jsonapi.org/format/#error-objects + " + `) + }) + + // note: This is dependent on the hardcoded `IGNORE_LIST` in `copy-cloud-docs-for-tfe` + it('should ignore files in the IGNORE_LIST', async () => { + const beforeFileContents = fs.readFileSync( + path.join(targetPath, 'website/docs/enterprise/index.mdx'), + 'utf-8' + ) + + await main(sourcePath, targetPath) + + const afterFileContents = fs.readFileSync( + path.join(targetPath, 'website/docs/enterprise/index.mdx'), + 'utf-8' + ) + + // assert that cloud-docs/index.mdx doesn't overwrite enterprise/index.mdx + expect(beforeFileContents).toEqual(afterFileContents) + + // snapshot for observability + expect(afterFileContents).toMatchInlineSnapshot(` + "--- + page_title: Index + description: Index + --- + + This filename is shared between \`cloud-docs/index.mdx\` and \`enterprise/index.mdx\`. + + This is a special case where we want to ignore the \`cloud-docs\` file. + + See \`IGNORE_LIST\` for more details. + " + `) + }) + + it('should transform "Cloud" to "Enterprise" in frontmatter', async () => { + await main(sourcePath, targetPath) + + const afterFileContents = fs.readFileSync( + path.join(targetPath, 'website/docs/enterprise/api-docs/index.mdx'), + 'utf-8' + ) + + // Assert that the new file contains `Terraform Enterprise` in the frontmatter + expect(afterFileContents).toEqual( + expect.stringContaining(`--- +page_title: API Docs - Terraform Enterprise`) + ) + }) + + it('copies over alerts correctly', async () => { + await main(sourcePath, targetPath) + + const contentsWithAlert = fs + .readFileSync( + path.join(targetPath, 'website/docs/enterprise/registry/index.mdx') + ) + .toString() + expect(contentsWithAlert).toMatchInlineSnapshot(` + "--- + page_title: Private Registry - Terraform Enterprise + description: >- + Use the Terraform Enterprise private registry to share Terraform providers and + modules across your organization. + source: terraform-docs-common + --- + + # Private Registry + + -> **Note:** I am an info alert + => **Note:** I am a success alert + ~> **Note:** I am a warning alert + !> **Note:** I am a warning alert + " + `) + }) + + it('should not copy over cloud-docs-nav-data.json', async () => { + // run our action + await main(sourcePath, targetPath) + + const enterpriseDataDir = path.join(targetPath, 'website/data') + // after + expect(tree(enterpriseDataDir)).toMatchInlineSnapshot(` + "data + └── enterprise-nav-data.json" + `) + }) +}) diff --git a/.github/actions/copy-cloud-docs-for-tfe/action.yml b/.github/actions/copy-cloud-docs-for-tfe/action.yml new file mode 100644 index 0000000000..049fb84627 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/action.yml @@ -0,0 +1,12 @@ +name: Copy cloud-docs for TFE +description: Copy docs/nav-data/assets from source repo to target repo +runs: + using: 'node20' + main: 'out/index.js' +inputs: + source_repo: + required: true + description: 'The absolute path to a GitHub repository root, on disk. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/terraform-docs-common' + target_repo: + description: 'The absolute path to a GitHub repository root, on disk. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/ptfe-releases' + required: true diff --git a/.github/actions/copy-cloud-docs-for-tfe/index.ts b/.github/actions/copy-cloud-docs-for-tfe/index.ts new file mode 100644 index 0000000000..38e43d125f --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/index.ts @@ -0,0 +1,18 @@ +import * as core from '@actions/core' + +import { main } from './main' + +async function action() { + // These are absolute paths, like: + // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} + const sourceRepo = core.getInput('source_repo') + const targetRepo = core.getInput('target_repo') + + // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows + core.notice(`sourceRepo: ${sourceRepo}`) + core.notice(`targetRepo: ${targetRepo}`) + + await main(sourceRepo, targetRepo) +} + +action() diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts new file mode 100644 index 0000000000..087dfe67c0 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -0,0 +1,293 @@ +// stdlib +import * as fs from 'fs' +import * as path from 'path' + +// fs traversal +import walk from 'klaw-sync' + +// initial processing +import matter from 'gray-matter' + +// mdx processing +import remark from 'remark' + +// @ts-expect-error - remark-mdx@1.6.22 has no types +import remarkMdx from 'remark-mdx' + +import { logger } from '~shared/logger' + +// plugins +import { remarkGetImages } from './remark-get-images-plugin' +import { remarkTransformCloudDocsLinks } from './remark-transfrom-cloud-docs-links' + +const imageSrcSet = new Set<string>() + +// List of MDX files to exclude from being copied +const IGNORE_LIST = ['cloud-docs/index.mdx'] + +export const IGNORE_PATTERNS: RegExp[] = [/cloud-docs\/agents/i] +const SUB_PATH_MAPPINGS: { + source: string + target: string +}[] = [ + { + source: 'cloud-docs', + target: 'enterprise', + }, +] + +/** + * This function will copy 3 things + * - MDX files + * - these can be at varying levels of nesting + * - used images + * - these are expected to all be at the same level + * - nav-data JSON files + * + * This function will also prune the target directory + * of any files that are not in the source directory. + * + * @param sourceRepo An absolute path to a GitHub repository on disk + * @param targetRepo An absolute path to a GitHub repository on disk + */ +export async function main( + sourceRepo: string, + targetRepo: string +): Promise<void> { + const sourceRepoContentDir = path.join(sourceRepo, 'website/docs') + // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk + const sourceRepoPublicDir = path.join(sourceRepo, 'website') + + const targetRepoContentDir = path.join(targetRepo, 'website/docs') + // this gets prepended to img reference **bases** (aka filename.extension only) + const targetRepoImageDir = path.join(targetRepo, 'website/img/docs') + const targetRepoLastSyncFile = path.join( + targetRepo, + 'website/last-cloud-docs-sync.txt' + ) + + // traverse source docs and accumulate mdx files for a given set of "subPaths" + let items: ReadonlyArray<walk.Item> = [] + + for (const { source: subPath } of SUB_PATH_MAPPINGS) { + const src = path.join(sourceRepoContentDir, subPath) + const docItems = walk(src, { + nodir: true, + filter: filterFunc, + }) + items = items.concat(docItems) + } + + // process each mdx file + for (const item of items) { + // ignore some files + if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + continue + } + + // extract mdx content; ignore frontmatter + const fullContent = fs.readFileSync(item.path, 'utf8') + + // eslint-disable-next-line prefer-const + let { content, data } = matter(fullContent) + + data = transformObject(data, [ + // inject `source` frontmatter property + function injectSource(d) { + d.source = path.basename(sourceRepo) + return d + }, + // replace cloud instances with enterprise + function replaceCloudWithEnterprise(d) { + // Some docs do not have all frontmatter properties. Make sure + // we do not assign `undefined` (which is invalid) in YAML + if (d.page_title) { + d.page_title = d.page_title.replace( + 'Terraform Cloud', + 'Terraform Enterprise' + ) + d.page_title = d.page_title.replace( + 'HCP Terraform', + 'Terraform Enterprise' + ) + } + + if (d.description) { + d.description = d.description.replace( + 'Terraform Cloud', + 'Terraform Enterprise' + ) + d.description = d.description.replace( + 'HCP Terraform', + 'Terraform Enterprise' + ) + } + return d + }, + ]) + + const vfile = await remark() + .use(remarkMdx) + .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) + .use(remarkTransformCloudDocsLinks) // transforms link + .process(content) + + // replace \-> with -> + const stringOutput = vfile.toString().replaceAll('\\->', '->') + + // overwrite original file with transformed content + const contents = matter.stringify('\n' + stringOutput, data) + fs.writeFileSync(item.path, contents) + } + + // keep track of the files that were copied in the target repo + const copiedTargetRepoRelativePaths: string[] = [] + + // Copy an entire directory + // --------------------------------------------- + // /{source}/cloud-docs/dir/some-doc.mdx + // ↓ ↓ ↓ ↓ + // /{target}/enterprise/dir/some-docs.mdx + // --------------------------------------------- + for (const { source, target } of SUB_PATH_MAPPINGS) { + const src = path.join(sourceRepoContentDir, source) + const dest = path.join(targetRepoContentDir, target) + + const items = walk(src, { + nodir: true, + filter: filterFunc, + }) + + for (const item of items) { + // ignore some files + if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + continue + } + + const destAbsolutePath = item.path.replace(src, dest) + fs.mkdirSync(path.dirname(destAbsolutePath), { recursive: true }) + fs.copyFileSync(item.path, destAbsolutePath) + + // accumulate copied files + const relativePath = path.relative(targetRepo, destAbsolutePath) + copiedTargetRepoRelativePaths.push(relativePath) + } + } + + // Copy images + for (const src of Array.from(imageSrcSet)) { + const basename = path.basename(src) + const target = path.join(targetRepoImageDir, basename) + + fs.mkdirSync(targetRepoImageDir, { recursive: true }) + fs.copyFileSync(src, target) + + // accumulate copied files + const relativePath = path.relative(targetRepo, target) + copiedTargetRepoRelativePaths.push(relativePath) + } + + // Read or Create and Read `last-cloud-docs-sync.txt` + if (!fs.existsSync(targetRepoLastSyncFile)) { + logger.info('Creating `${targetRepoLastSyncFile}`') + fs.writeFileSync(targetRepoLastSyncFile, '', 'utf8') + } + + logger.info('Reading `${targetRepoLastSyncFile}`') + // Any filename that is in this list, that was not just sync'd is considered stale; Prune. + // Then save over `last-cloud-docs-sync.txt` + const lastSync = fs + .readFileSync(targetRepoLastSyncFile) + .toString() + .split('\n') + // filter empty strings; This is encountered when creating + // the last-cloud-docs-sync.txt file for the first time. + .filter(Boolean) + + // prune files and empty directories + lastSync + .filter((relativePath) => { + return !copiedTargetRepoRelativePaths.includes(relativePath) + }) + .forEach((relativePath) => { + const file = path.join(targetRepo, relativePath) + // set force to true to ignore errors; + // This happens when a file is deleted from the source repo. + logger.info(`Deleting stale file: ${file}...`) + fs.rmSync(file, { force: true }) + logger.info(`Deleted stale file: ${file}`) + + recursiveRmEmptyParentDirs(file) + }) + + // clear file + logger.info('Clearing `${targetRepoLastSyncFile}`') + fs.truncateSync(targetRepoLastSyncFile, 0) + + const stream = fs.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }) + for (const item of copiedTargetRepoRelativePaths) { + stream.write(`${item}\n`) + } + + // wait for the stream to end + return new Promise((resolve) => { + stream.end(resolve) + }) +} + +// This is a helper for pruning empty dirs for tests; +// Git ignores empty dirs entirely but an in-memory filesystem doesn't. +const recursiveRmEmptyParentDirs = (file: string) => { + logger.info(`Deleting empty parent dirs for ${file}...`) + const dir = path.dirname(file) + + if (fs.existsSync(dir)) { + const files = fs.readdirSync(dir) + if (files.length === 0) { + // @ts-expect-error force is there but not typed correctly + fs.rmdirSync(dir, { force: true, recursive: true }) + logger.info(`Deleted empty parent dirs for ${file}`) + + recursiveRmEmptyParentDirs(path.dirname(dir)) + } + } +} + +/** + * This is a helper to be passed to `walk` dry up repeated logic + * for ignore certain files. + */ +const filterFunc = (item: walk.Item) => { + // if the item matches a IGNORE_PATTERNS expression, exclude it + if (IGNORE_PATTERNS.some((pattern) => pattern.test(item.path))) { + return false + } + + // Check files for `tfc_only` frontmatter property; Ignore them if true + if (item.stats.isFile()) { + const fullContent = fs.readFileSync(item.path, 'utf8') + const { data } = matter(fullContent) + if (data.tfc_only == true) { + return false + } + } + + return true +} + +/** + * A helper that accepts a data object and an array of functions that + * receive the object as an arg and transform it. + */ +const transformObject = <T = Record<string, any>>( + data: T, + plugins: Array<(data: T) => T> +): T => { + let result = data + + plugins.forEach((fn) => { + result = fn(result) + }) + + return result +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/file.js b/.github/actions/copy-cloud-docs-for-tfe/out/file.js new file mode 100644 index 0000000000..ed9d86f047 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/out/file.js @@ -0,0 +1,12 @@ +'use strict' + +const pino = require('./pino') +const { once } = require('events') + +module.exports = async function (opts = {}) { + const destOpts = Object.assign({}, opts, { dest: opts.destination || 1, sync: false }) + delete destOpts.destination + const destination = pino.destination(destOpts) + await once(destination, 'ready') + return destination +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/index.js b/.github/actions/copy-cloud-docs-for-tfe/out/index.js new file mode 100644 index 0000000000..4b286a681c --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/out/index.js @@ -0,0 +1,102924 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 54039: +/***/ ((module) => { + +function webpackEmptyAsyncContext(req) { + // Here Promise.resolve().then() is used instead of new Promise() to prevent + // uncaught exception popping up in devtools + return Promise.resolve().then(() => { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + }); +} +webpackEmptyAsyncContext.keys = () => ([]); +webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; +webpackEmptyAsyncContext.id = 54039; +module.exports = webpackEmptyAsyncContext; + +/***/ }), + +/***/ 29548: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__nccwpck_require__(22037)); +const utils_1 = __nccwpck_require__(87472); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +function escapeData(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), + +/***/ 37117: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(29548); +const file_command_1 = __nccwpck_require__(92469); +const utils_1 = __nccwpck_require__(87472); +const os = __importStar(__nccwpck_require__(22037)); +const path = __importStar(__nccwpck_require__(71017)); +const oidc_utils_1 = __nccwpck_require__(65172); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + } + command_1.issueCommand('set-env', { name }, convertedVal); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + file_command_1.issueFileCommand('PATH', inputPath); + } + else { + command_1.issueCommand('add-path', {}, inputPath); + } + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(input => input.trim()); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + } + process.stdout.write(os.EOL); + command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message, properties = {}) { + command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message, properties = {}) { + command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + } + command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __nccwpck_require__(38452); +Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); +/** + * @deprecated use core.summary + */ +var summary_2 = __nccwpck_require__(38452); +Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); +/** + * Path exports + */ +var path_utils_1 = __nccwpck_require__(66890); +Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); +Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); +Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 92469: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const fs = __importStar(__nccwpck_require__(57147)); +const os = __importStar(__nccwpck_require__(22037)); +const uuid_1 = __nccwpck_require__(91972); +const utils_1 = __nccwpck_require__(87472); +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + const convertedValue = utils_1.toCommandValue(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; +//# sourceMappingURL=file-command.js.map + +/***/ }), + +/***/ 65172: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OidcClient = void 0; +const http_client_1 = __nccwpck_require__(55885); +const auth_1 = __nccwpck_require__(28603); +const core_1 = __nccwpck_require__(37117); +class OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient + .getJson(id_token_url) + .catch(error => { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.result.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map + +/***/ }), + +/***/ 66890: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__nccwpck_require__(71017)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map + +/***/ }), + +/***/ 38452: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __nccwpck_require__(22037); +const fs_1 = __nccwpck_require__(57147); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}</${tag}>`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise<Summary>} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (<hr>) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (<br>) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map + +/***/ }), + +/***/ 87472: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 28603: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 55885: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(13685)); +const https = __importStar(__nccwpck_require__(95687)); +const pm = __importStar(__nccwpck_require__(86255)); +const tunnel = __importStar(__nccwpck_require__(89382)); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 86255: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + return new URL(proxyVar); + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperReqHosts.some(x => x === upperNoProxyItem)) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 47548: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.codeFrameColumns = codeFrameColumns; +exports["default"] = _default; + +var _highlight = __nccwpck_require__(42421); + +let deprecationWarningShown = false; + +function getDefs(chalk) { + return { + gutter: chalk.grey, + marker: chalk.red.bold, + message: chalk.red.bold + }; +} + +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + +function getMarkerLines(loc, source, opts) { + const startLoc = Object.assign({ + column: 0, + line: -1 + }, loc.start); + const endLoc = Object.assign({}, startLoc, loc.end); + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line; + const startColumn = startLoc.column; + const endLine = endLoc.line; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + + if (startLine === -1) { + start = 0; + } + + if (endLine === -1) { + end = source.length; + } + + const lineDiff = endLine - startLine; + const markerLines = {}; + + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + + return { + start, + end, + markerLines + }; +} + +function codeFrameColumns(rawLines, loc, opts = {}) { + const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); + const chalk = (0, _highlight.getChalk)(opts); + const defs = getDefs(chalk); + + const maybeHighlight = (chalkFn, string) => { + return highlighted ? chalkFn(string) : string; + }; + + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end).length; + const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; + let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + + if (hasMarker) { + let markerLine = ""; + + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); + + if (lastMarkerLine && opts.message) { + markerLine += " " + maybeHighlight(defs.message, opts.message); + } + } + + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`; + } + + if (highlighted) { + return chalk.reset(frame); + } else { + return frame; + } +} + +function _default(rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + + if (process.emitWarning) { + process.emitWarning(message, "DeprecationWarning"); + } else { + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + } + + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); +} + +/***/ }), + +/***/ 19315: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.makeWeakCache = makeWeakCache; +exports.makeWeakCacheSync = makeWeakCacheSync; +exports.makeStrongCache = makeStrongCache; +exports.makeStrongCacheSync = makeStrongCacheSync; +exports.assertSimpleType = assertSimpleType; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _async = __nccwpck_require__(3192); + +var _util = __nccwpck_require__(60391); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const synchronize = gen => { + return (0, _gensync().default)(gen).sync; +}; + +function* genTrue(data) { + return true; +} + +function makeWeakCache(handler) { + return makeCachedFunction(WeakMap, handler); +} + +function makeWeakCacheSync(handler) { + return synchronize(makeWeakCache(handler)); +} + +function makeStrongCache(handler) { + return makeCachedFunction(Map, handler); +} + +function makeStrongCacheSync(handler) { + return synchronize(makeStrongCache(handler)); +} + +function makeCachedFunction(CallCache, handler) { + const callCacheSync = new CallCache(); + const callCacheAsync = new CallCache(); + const futureCache = new CallCache(); + return function* cachedFunction(arg, data) { + const asyncContext = yield* (0, _async.isAsync)(); + const callCache = asyncContext ? callCacheAsync : callCacheSync; + const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data); + if (cached.valid) return cached.value; + const cache = new CacheConfigurator(data); + const handlerResult = handler(arg, cache); + let finishLock; + let value; + + if ((0, _util.isIterableIterator)(handlerResult)) { + const gen = handlerResult; + value = yield* (0, _async.onFirstPause)(gen, () => { + finishLock = setupAsyncLocks(cache, futureCache, arg); + }); + } else { + value = handlerResult; + } + + updateFunctionCache(callCache, cache, arg, value); + + if (finishLock) { + futureCache.delete(arg); + finishLock.release(value); + } + + return value; + }; +} + +function* getCachedValue(cache, arg, data) { + const cachedValue = cache.get(arg); + + if (cachedValue) { + for (const { + value, + valid + } of cachedValue) { + if (yield* valid(data)) return { + valid: true, + value + }; + } + } + + return { + valid: false, + value: null + }; +} + +function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) { + const cached = yield* getCachedValue(callCache, arg, data); + + if (cached.valid) { + return cached; + } + + if (asyncContext) { + const cached = yield* getCachedValue(futureCache, arg, data); + + if (cached.valid) { + const value = yield* (0, _async.waitFor)(cached.value.promise); + return { + valid: true, + value + }; + } + } + + return { + valid: false, + value: null + }; +} + +function setupAsyncLocks(config, futureCache, arg) { + const finishLock = new Lock(); + updateFunctionCache(futureCache, config, arg, finishLock); + return finishLock; +} + +function updateFunctionCache(cache, config, arg, value) { + if (!config.configured()) config.forever(); + let cachedValue = cache.get(arg); + config.deactivate(); + + switch (config.mode()) { + case "forever": + cachedValue = [{ + value, + valid: genTrue + }]; + cache.set(arg, cachedValue); + break; + + case "invalidate": + cachedValue = [{ + value, + valid: config.validator() + }]; + cache.set(arg, cachedValue); + break; + + case "valid": + if (cachedValue) { + cachedValue.push({ + value, + valid: config.validator() + }); + } else { + cachedValue = [{ + value, + valid: config.validator() + }]; + cache.set(arg, cachedValue); + } + + } +} + +class CacheConfigurator { + constructor(data) { + this._active = true; + this._never = false; + this._forever = false; + this._invalidate = false; + this._configured = false; + this._pairs = []; + this._data = void 0; + this._data = data; + } + + simple() { + return makeSimpleConfigurator(this); + } + + mode() { + if (this._never) return "never"; + if (this._forever) return "forever"; + if (this._invalidate) return "invalidate"; + return "valid"; + } + + forever() { + if (!this._active) { + throw new Error("Cannot change caching after evaluation has completed."); + } + + if (this._never) { + throw new Error("Caching has already been configured with .never()"); + } + + this._forever = true; + this._configured = true; + } + + never() { + if (!this._active) { + throw new Error("Cannot change caching after evaluation has completed."); + } + + if (this._forever) { + throw new Error("Caching has already been configured with .forever()"); + } + + this._never = true; + this._configured = true; + } + + using(handler) { + if (!this._active) { + throw new Error("Cannot change caching after evaluation has completed."); + } + + if (this._never || this._forever) { + throw new Error("Caching has already been configured with .never or .forever()"); + } + + this._configured = true; + const key = handler(this._data); + const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`); + + if ((0, _async.isThenable)(key)) { + return key.then(key => { + this._pairs.push([key, fn]); + + return key; + }); + } + + this._pairs.push([key, fn]); + + return key; + } + + invalidate(handler) { + this._invalidate = true; + return this.using(handler); + } + + validator() { + const pairs = this._pairs; + return function* (data) { + for (const [key, fn] of pairs) { + if (key !== (yield* fn(data))) return false; + } + + return true; + }; + } + + deactivate() { + this._active = false; + } + + configured() { + return this._configured; + } + +} + +function makeSimpleConfigurator(cache) { + function cacheFn(val) { + if (typeof val === "boolean") { + if (val) cache.forever();else cache.never(); + return; + } + + return cache.using(() => assertSimpleType(val())); + } + + cacheFn.forever = () => cache.forever(); + + cacheFn.never = () => cache.never(); + + cacheFn.using = cb => cache.using(() => assertSimpleType(cb())); + + cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb())); + + return cacheFn; +} + +function assertSimpleType(value) { + if ((0, _async.isThenable)(value)) { + throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`); + } + + if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") { + throw new Error("Cache keys must be either string, boolean, number, null, or undefined."); + } + + return value; +} + +class Lock { + constructor() { + this.released = false; + this.promise = void 0; + this._resolve = void 0; + this.promise = new Promise(resolve => { + this._resolve = resolve; + }); + } + + release(value) { + this.released = true; + + this._resolve(value); + } + +} + +/***/ }), + +/***/ 57390: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.buildPresetChain = buildPresetChain; +exports.buildRootChain = buildRootChain; +exports.buildPresetChainWalker = void 0; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(67984)); + + _debug = function () { + return data; + }; + + return data; +} + +var _options = __nccwpck_require__(14087); + +var _patternToRegex = _interopRequireDefault(__nccwpck_require__(59056)); + +var _printer = __nccwpck_require__(21489); + +var _files = __nccwpck_require__(53954); + +var _caching = __nccwpck_require__(19315); + +var _configDescriptors = __nccwpck_require__(5847); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const debug = (0, _debug().default)("babel:config:config-chain"); + +function* buildPresetChain(arg, context) { + const chain = yield* buildPresetChainWalker(arg, context); + if (!chain) return null; + return { + plugins: dedupDescriptors(chain.plugins), + presets: dedupDescriptors(chain.presets), + options: chain.options.map(o => normalizeOptions(o)), + files: new Set() + }; +} + +const buildPresetChainWalker = makeChainWalker({ + root: preset => loadPresetDescriptors(preset), + env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName), + overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index), + overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName), + createLogger: () => () => {} +}); +exports.buildPresetChainWalker = buildPresetChainWalker; +const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors)); +const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName))); +const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index))); +const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName)))); + +function* buildRootChain(opts, context) { + let configReport, babelRcReport; + const programmaticLogger = new _printer.ConfigPrinter(); + const programmaticChain = yield* loadProgrammaticChain({ + options: opts, + dirname: context.cwd + }, context, undefined, programmaticLogger); + if (!programmaticChain) return null; + const programmaticReport = programmaticLogger.output(); + let configFile; + + if (typeof opts.configFile === "string") { + configFile = yield* (0, _files.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller); + } else if (opts.configFile !== false) { + configFile = yield* (0, _files.findRootConfig)(context.root, context.envName, context.caller); + } + + let { + babelrc, + babelrcRoots + } = opts; + let babelrcRootsDirectory = context.cwd; + const configFileChain = emptyChain(); + const configFileLogger = new _printer.ConfigPrinter(); + + if (configFile) { + const validatedFile = validateConfigFile(configFile); + const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger); + if (!result) return null; + configReport = configFileLogger.output(); + + if (babelrc === undefined) { + babelrc = validatedFile.options.babelrc; + } + + if (babelrcRoots === undefined) { + babelrcRootsDirectory = validatedFile.dirname; + babelrcRoots = validatedFile.options.babelrcRoots; + } + + mergeChain(configFileChain, result); + } + + const pkgData = typeof context.filename === "string" ? yield* (0, _files.findPackageData)(context.filename) : null; + let ignoreFile, babelrcFile; + let isIgnored = false; + const fileChain = emptyChain(); + + if ((babelrc === true || babelrc === undefined) && pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) { + ({ + ignore: ignoreFile, + config: babelrcFile + } = yield* (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller)); + + if (ignoreFile) { + fileChain.files.add(ignoreFile.filepath); + } + + if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) { + isIgnored = true; + } + + if (babelrcFile && !isIgnored) { + const validatedFile = validateBabelrcFile(babelrcFile); + const babelrcLogger = new _printer.ConfigPrinter(); + const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger); + + if (!result) { + isIgnored = true; + } else { + babelRcReport = babelrcLogger.output(); + mergeChain(fileChain, result); + } + } + + if (babelrcFile && isIgnored) { + fileChain.files.add(babelrcFile.filepath); + } + } + + if (context.showConfig) { + console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n")); + return null; + } + + const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain); + return { + plugins: isIgnored ? [] : dedupDescriptors(chain.plugins), + presets: isIgnored ? [] : dedupDescriptors(chain.presets), + options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)), + fileHandling: isIgnored ? "ignored" : "transpile", + ignore: ignoreFile || undefined, + babelrc: babelrcFile || undefined, + config: configFile || undefined, + files: chain.files + }; +} + +function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) { + if (typeof babelrcRoots === "boolean") return babelrcRoots; + const absoluteRoot = context.root; + + if (babelrcRoots === undefined) { + return pkgData.directories.indexOf(absoluteRoot) !== -1; + } + + let babelrcPatterns = babelrcRoots; + if (!Array.isArray(babelrcPatterns)) babelrcPatterns = [babelrcPatterns]; + babelrcPatterns = babelrcPatterns.map(pat => { + return typeof pat === "string" ? _path().default.resolve(babelrcRootsDirectory, pat) : pat; + }); + + if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) { + return pkgData.directories.indexOf(absoluteRoot) !== -1; + } + + return babelrcPatterns.some(pat => { + if (typeof pat === "string") { + pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory); + } + + return pkgData.directories.some(directory => { + return matchPattern(pat, babelrcRootsDirectory, directory, context); + }); + }); +} + +const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({ + filepath: file.filepath, + dirname: file.dirname, + options: (0, _options.validate)("configfile", file.options) +})); +const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({ + filepath: file.filepath, + dirname: file.dirname, + options: (0, _options.validate)("babelrcfile", file.options) +})); +const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({ + filepath: file.filepath, + dirname: file.dirname, + options: (0, _options.validate)("extendsfile", file.options) +})); +const loadProgrammaticChain = makeChainWalker({ + root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors), + env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName), + overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index), + overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName), + createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger) +}); +const loadFileChainWalker = makeChainWalker({ + root: file => loadFileDescriptors(file), + env: (file, envName) => loadFileEnvDescriptors(file)(envName), + overrides: (file, index) => loadFileOverridesDescriptors(file)(index), + overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName), + createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger) +}); + +function* loadFileChain(input, context, files, baseLogger) { + const chain = yield* loadFileChainWalker(input, context, files, baseLogger); + + if (chain) { + chain.files.add(input.filepath); + } + + return chain; +} + +const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors)); +const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName))); +const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index))); +const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName)))); + +function buildFileLogger(filepath, context, baseLogger) { + if (!baseLogger) { + return () => {}; + } + + return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, { + filepath + }); +} + +function buildRootDescriptors({ + dirname, + options +}, alias, descriptors) { + return descriptors(dirname, options, alias); +} + +function buildProgrammaticLogger(_, context, baseLogger) { + var _context$caller; + + if (!baseLogger) { + return () => {}; + } + + return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, { + callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name + }); +} + +function buildEnvDescriptors({ + dirname, + options +}, alias, descriptors, envName) { + const opts = options.env && options.env[envName]; + return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null; +} + +function buildOverrideDescriptors({ + dirname, + options +}, alias, descriptors, index) { + const opts = options.overrides && options.overrides[index]; + if (!opts) throw new Error("Assertion failure - missing override"); + return descriptors(dirname, opts, `${alias}.overrides[${index}]`); +} + +function buildOverrideEnvDescriptors({ + dirname, + options +}, alias, descriptors, index, envName) { + const override = options.overrides && options.overrides[index]; + if (!override) throw new Error("Assertion failure - missing override"); + const opts = override.env && override.env[envName]; + return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null; +} + +function makeChainWalker({ + root, + env, + overrides, + overridesEnv, + createLogger +}) { + return function* (input, context, files = new Set(), baseLogger) { + const { + dirname + } = input; + const flattenedConfigs = []; + const rootOpts = root(input); + + if (configIsApplicable(rootOpts, dirname, context)) { + flattenedConfigs.push({ + config: rootOpts, + envName: undefined, + index: undefined + }); + const envOpts = env(input, context.envName); + + if (envOpts && configIsApplicable(envOpts, dirname, context)) { + flattenedConfigs.push({ + config: envOpts, + envName: context.envName, + index: undefined + }); + } + + (rootOpts.options.overrides || []).forEach((_, index) => { + const overrideOps = overrides(input, index); + + if (configIsApplicable(overrideOps, dirname, context)) { + flattenedConfigs.push({ + config: overrideOps, + index, + envName: undefined + }); + const overrideEnvOpts = overridesEnv(input, index, context.envName); + + if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) { + flattenedConfigs.push({ + config: overrideEnvOpts, + index, + envName: context.envName + }); + } + } + }); + } + + if (flattenedConfigs.some(({ + config: { + options: { + ignore, + only + } + } + }) => shouldIgnore(context, ignore, only, dirname))) { + return null; + } + + const chain = emptyChain(); + const logger = createLogger(input, context, baseLogger); + + for (const { + config, + index, + envName + } of flattenedConfigs) { + if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) { + return null; + } + + logger(config, index, envName); + mergeChainOpts(chain, config); + } + + return chain; + }; +} + +function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) { + if (opts.extends === undefined) return true; + const file = yield* (0, _files.loadConfig)(opts.extends, dirname, context.envName, context.caller); + + if (files.has(file)) { + throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n")); + } + + files.add(file); + const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger); + files.delete(file); + if (!fileChain) return false; + mergeChain(chain, fileChain); + return true; +} + +function mergeChain(target, source) { + target.options.push(...source.options); + target.plugins.push(...source.plugins); + target.presets.push(...source.presets); + + for (const file of source.files) { + target.files.add(file); + } + + return target; +} + +function mergeChainOpts(target, { + options, + plugins, + presets +}) { + target.options.push(options); + target.plugins.push(...plugins()); + target.presets.push(...presets()); + return target; +} + +function emptyChain() { + return { + options: [], + presets: [], + plugins: [], + files: new Set() + }; +} + +function normalizeOptions(opts) { + const options = Object.assign({}, opts); + delete options.extends; + delete options.env; + delete options.overrides; + delete options.plugins; + delete options.presets; + delete options.passPerPreset; + delete options.ignore; + delete options.only; + delete options.test; + delete options.include; + delete options.exclude; + + if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) { + options.sourceMaps = options.sourceMap; + delete options.sourceMap; + } + + return options; +} + +function dedupDescriptors(items) { + const map = new Map(); + const descriptors = []; + + for (const item of items) { + if (typeof item.value === "function") { + const fnKey = item.value; + let nameMap = map.get(fnKey); + + if (!nameMap) { + nameMap = new Map(); + map.set(fnKey, nameMap); + } + + let desc = nameMap.get(item.name); + + if (!desc) { + desc = { + value: item + }; + descriptors.push(desc); + if (!item.ownPass) nameMap.set(item.name, desc); + } else { + desc.value = item; + } + } else { + descriptors.push({ + value: item + }); + } + } + + return descriptors.reduce((acc, desc) => { + acc.push(desc.value); + return acc; + }, []); +} + +function configIsApplicable({ + options +}, dirname, context) { + return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname)); +} + +function configFieldIsApplicable(context, test, dirname) { + const patterns = Array.isArray(test) ? test : [test]; + return matchesPatterns(context, patterns, dirname); +} + +function shouldIgnore(context, ignore, only, dirname) { + if (ignore && matchesPatterns(context, ignore, dirname)) { + var _context$filename; + + const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore)}\` from "${dirname}"`; + debug(message); + + if (context.showConfig) { + console.log(message); + } + + return true; + } + + if (only && !matchesPatterns(context, only, dirname)) { + var _context$filename2; + + const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only)}\` from "${dirname}"`; + debug(message); + + if (context.showConfig) { + console.log(message); + } + + return true; + } + + return false; +} + +function matchesPatterns(context, patterns, dirname) { + return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context)); +} + +function matchPattern(pattern, dirname, pathToTest, context) { + if (typeof pattern === "function") { + return !!pattern(pathToTest, { + dirname, + envName: context.envName, + caller: context.caller + }); + } + + if (typeof pathToTest !== "string") { + throw new Error(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`); + } + + if (typeof pattern === "string") { + pattern = (0, _patternToRegex.default)(pattern, dirname); + } + + return pattern.test(pathToTest); +} + +/***/ }), + +/***/ 5847: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createCachedDescriptors = createCachedDescriptors; +exports.createUncachedDescriptors = createUncachedDescriptors; +exports.createDescriptor = createDescriptor; + +var _files = __nccwpck_require__(53954); + +var _item = __nccwpck_require__(58050); + +var _caching = __nccwpck_require__(19315); + +function isEqualDescriptor(a, b) { + return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved); +} + +function createCachedDescriptors(dirname, options, alias) { + const { + plugins, + presets, + passPerPreset + } = options; + return { + options, + plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => [], + presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => [] + }; +} + +function createUncachedDescriptors(dirname, options, alias) { + let plugins; + let presets; + return { + options, + plugins: () => { + if (!plugins) { + plugins = createPluginDescriptors(options.plugins || [], dirname, alias); + } + + return plugins; + }, + presets: () => { + if (!presets) { + presets = createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset); + } + + return presets; + } + }; +} + +const PRESET_DESCRIPTOR_CACHE = new WeakMap(); +const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => { + const dirname = cache.using(dir => dir); + return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCacheSync)(passPerPreset => createPresetDescriptors(items, dirname, alias, passPerPreset).map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc)))); +}); +const PLUGIN_DESCRIPTOR_CACHE = new WeakMap(); +const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => { + const dirname = cache.using(dir => dir); + return (0, _caching.makeStrongCacheSync)(alias => createPluginDescriptors(items, dirname, alias).map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc))); +}); +const DEFAULT_OPTIONS = {}; + +function loadCachedDescriptor(cache, desc) { + const { + value, + options = DEFAULT_OPTIONS + } = desc; + if (options === false) return desc; + let cacheByOptions = cache.get(value); + + if (!cacheByOptions) { + cacheByOptions = new WeakMap(); + cache.set(value, cacheByOptions); + } + + let possibilities = cacheByOptions.get(options); + + if (!possibilities) { + possibilities = []; + cacheByOptions.set(options, possibilities); + } + + if (possibilities.indexOf(desc) === -1) { + const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc)); + + if (matches.length > 0) { + return matches[0]; + } + + possibilities.push(desc); + } + + return desc; +} + +function createPresetDescriptors(items, dirname, alias, passPerPreset) { + return createDescriptors("preset", items, dirname, alias, passPerPreset); +} + +function createPluginDescriptors(items, dirname, alias) { + return createDescriptors("plugin", items, dirname, alias); +} + +function createDescriptors(type, items, dirname, alias, ownPass) { + const descriptors = items.map((item, index) => createDescriptor(item, dirname, { + type, + alias: `${alias}$${index}`, + ownPass: !!ownPass + })); + assertNoDuplicates(descriptors); + return descriptors; +} + +function createDescriptor(pair, dirname, { + type, + alias, + ownPass +}) { + const desc = (0, _item.getItemDescriptor)(pair); + + if (desc) { + return desc; + } + + let name; + let options; + let value = pair; + + if (Array.isArray(value)) { + if (value.length === 3) { + [value, options, name] = value; + } else { + [value, options] = value; + } + } + + let file = undefined; + let filepath = null; + + if (typeof value === "string") { + if (typeof type !== "string") { + throw new Error("To resolve a string-based item, the type of item must be given"); + } + + const resolver = type === "plugin" ? _files.loadPlugin : _files.loadPreset; + const request = value; + ({ + filepath, + value + } = resolver(value, dirname)); + file = { + request, + resolved: filepath + }; + } + + if (!value) { + throw new Error(`Unexpected falsy value: ${String(value)}`); + } + + if (typeof value === "object" && value.__esModule) { + if (value.default) { + value = value.default; + } else { + throw new Error("Must export a default export when using ES6 modules."); + } + } + + if (typeof value !== "object" && typeof value !== "function") { + throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`); + } + + if (filepath !== null && typeof value === "object" && value) { + throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`); + } + + return { + name, + alias: filepath || alias, + value, + options, + dirname, + ownPass, + file + }; +} + +function assertNoDuplicates(items) { + const map = new Map(); + + for (const item of items) { + if (typeof item.value !== "function") continue; + let nameMap = map.get(item.value); + + if (!nameMap) { + nameMap = new Set(); + map.set(item.value, nameMap); + } + + if (nameMap.has(item.name)) { + const conflicts = items.filter(i => i.value === item.value); + throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n")); + } + + nameMap.add(item.name); + } +} + +/***/ }), + +/***/ 37118: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.findConfigUpwards = findConfigUpwards; +exports.findRelativeConfig = findRelativeConfig; +exports.findRootConfig = findRootConfig; +exports.loadConfig = loadConfig; +exports.resolveShowConfigPath = resolveShowConfigPath; +exports.ROOT_CONFIG_FILENAMES = void 0; + +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(67984)); + + _debug = function () { + return data; + }; + + return data; +} + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _json() { + const data = _interopRequireDefault(__nccwpck_require__(25130)); + + _json = function () { + return data; + }; + + return data; +} + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _caching = __nccwpck_require__(19315); + +var _configApi = _interopRequireDefault(__nccwpck_require__(7785)); + +var _utils = __nccwpck_require__(87336); + +var _moduleTypes = _interopRequireDefault(__nccwpck_require__(92386)); + +var _patternToRegex = _interopRequireDefault(__nccwpck_require__(59056)); + +var fs = _interopRequireWildcard(__nccwpck_require__(6524)); + +var _resolve = _interopRequireDefault(__nccwpck_require__(97199)); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const debug = (0, _debug().default)("babel:config:loading:files:configuration"); +const ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json"]; +exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES; +const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json"]; +const BABELIGNORE_FILENAME = ".babelignore"; + +function* findConfigUpwards(rootDir) { + let dirname = rootDir; + + while (true) { + for (const filename of ROOT_CONFIG_FILENAMES) { + if (yield* fs.exists(_path().default.join(dirname, filename))) { + return dirname; + } + } + + const nextDir = _path().default.dirname(dirname); + + if (dirname === nextDir) break; + dirname = nextDir; + } + + return null; +} + +function* findRelativeConfig(packageData, envName, caller) { + let config = null; + let ignore = null; + + const dirname = _path().default.dirname(packageData.filepath); + + for (const loc of packageData.directories) { + if (!config) { + var _packageData$pkg; + + config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null); + } + + if (!ignore) { + const ignoreLoc = _path().default.join(loc, BABELIGNORE_FILENAME); + + ignore = yield* readIgnoreConfig(ignoreLoc); + + if (ignore) { + debug("Found ignore %o from %o.", ignore.filepath, dirname); + } + } + } + + return { + config, + ignore + }; +} + +function findRootConfig(dirname, envName, caller) { + return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller); +} + +function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) { + const configs = yield* _gensync().default.all(names.map(filename => readConfig(_path().default.join(dirname, filename), envName, caller))); + const config = configs.reduce((previousConfig, config) => { + if (config && previousConfig) { + throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`); + } + + return config || previousConfig; + }, previousConfig); + + if (config) { + debug("Found configuration %o from %o.", config.filepath, dirname); + } + + return config; +} + +function* loadConfig(name, dirname, envName, caller) { + const filepath = yield* (0, _resolve.default)(name, { + basedir: dirname + }); + const conf = yield* readConfig(filepath, envName, caller); + + if (!conf) { + throw new Error(`Config file ${filepath} contains no configuration data`); + } + + debug("Loaded config %o from %o.", name, dirname); + return conf; +} + +function readConfig(filepath, envName, caller) { + const ext = _path().default.extname(filepath); + + return ext === ".js" || ext === ".cjs" || ext === ".mjs" ? readConfigJS(filepath, { + envName, + caller + }) : readConfigJSON5(filepath); +} + +const LOADING_CONFIGS = new Set(); +const readConfigJS = (0, _caching.makeStrongCache)(function* readConfigJS(filepath, cache) { + if (!fs.exists.sync(filepath)) { + cache.forever(); + return null; + } + + if (LOADING_CONFIGS.has(filepath)) { + cache.never(); + debug("Auto-ignoring usage of config %o.", filepath); + return { + filepath, + dirname: _path().default.dirname(filepath), + options: {} + }; + } + + let options; + + try { + LOADING_CONFIGS.add(filepath); + options = yield* (0, _moduleTypes.default)(filepath, "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously."); + } catch (err) { + err.message = `${filepath}: Error while loading config - ${err.message}`; + throw err; + } finally { + LOADING_CONFIGS.delete(filepath); + } + + let assertCache = false; + + if (typeof options === "function") { + yield* []; + options = options((0, _configApi.default)(cache)); + assertCache = true; + } + + if (!options || typeof options !== "object" || Array.isArray(options)) { + throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`); + } + + if (typeof options.then === "function") { + throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`); + } + + if (assertCache && !cache.configured()) throwConfigError(); + return { + filepath, + dirname: _path().default.dirname(filepath), + options + }; +}); +const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => { + const babel = file.options["babel"]; + if (typeof babel === "undefined") return null; + + if (typeof babel !== "object" || Array.isArray(babel) || babel === null) { + throw new Error(`${file.filepath}: .babel property must be an object`); + } + + return { + filepath: file.filepath, + dirname: file.dirname, + options: babel + }; +}); +const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => { + let options; + + try { + options = _json().default.parse(content); + } catch (err) { + err.message = `${filepath}: Error while parsing config - ${err.message}`; + throw err; + } + + if (!options) throw new Error(`${filepath}: No config detected`); + + if (typeof options !== "object") { + throw new Error(`${filepath}: Config returned typeof ${typeof options}`); + } + + if (Array.isArray(options)) { + throw new Error(`${filepath}: Expected config object but found array`); + } + + return { + filepath, + dirname: _path().default.dirname(filepath), + options + }; +}); +const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => { + const ignoreDir = _path().default.dirname(filepath); + + const ignorePatterns = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line); + + for (const pattern of ignorePatterns) { + if (pattern[0] === "!") { + throw new Error(`Negation of file paths is not supported.`); + } + } + + return { + filepath, + dirname: _path().default.dirname(filepath), + ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir)) + }; +}); + +function* resolveShowConfigPath(dirname) { + const targetPath = process.env.BABEL_SHOW_CONFIG_FOR; + + if (targetPath != null) { + const absolutePath = _path().default.resolve(dirname, targetPath); + + const stats = yield* fs.stat(absolutePath); + + if (!stats.isFile()) { + throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`); + } + + return absolutePath; + } + + return null; +} + +function throwConfigError() { + throw new Error(`\ +Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured +for various types of caching, using the first param of their handler functions: + +module.exports = function(api) { + // The API exposes the following: + + // Cache the returned value forever and don't call this function again. + api.cache(true); + + // Don't cache at all. Not recommended because it will be very slow. + api.cache(false); + + // Cached based on the value of some function. If this function returns a value different from + // a previously-encountered value, the plugins will re-evaluate. + var env = api.cache(() => process.env.NODE_ENV); + + // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for + // any possible NODE_ENV value that might come up during plugin execution. + var isProd = api.cache(() => process.env.NODE_ENV === "production"); + + // .cache(fn) will perform a linear search though instances to find the matching plugin based + // based on previous instantiated plugins. If you want to recreate the plugin and discard the + // previous instance whenever something changes, you may use: + var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production"); + + // Note, we also expose the following more-verbose versions of the above examples: + api.cache.forever(); // api.cache(true) + api.cache.never(); // api.cache(false) + api.cache.using(fn); // api.cache(fn) + + // Return the value that will be cached. + return { }; +};`); +} + +/***/ }), + +/***/ 65678: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; +var __webpack_unused_export__; + + +__webpack_unused_export__ = ({ + value: true +}); +exports.Z = import_; + +function import_(filepath) { + return __nccwpck_require__(54039)(filepath); +} + +/***/ }), + +/***/ 53954: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "findPackageData", ({ + enumerable: true, + get: function () { + return _package.findPackageData; + } +})); +Object.defineProperty(exports, "findConfigUpwards", ({ + enumerable: true, + get: function () { + return _configuration.findConfigUpwards; + } +})); +Object.defineProperty(exports, "findRelativeConfig", ({ + enumerable: true, + get: function () { + return _configuration.findRelativeConfig; + } +})); +Object.defineProperty(exports, "findRootConfig", ({ + enumerable: true, + get: function () { + return _configuration.findRootConfig; + } +})); +Object.defineProperty(exports, "loadConfig", ({ + enumerable: true, + get: function () { + return _configuration.loadConfig; + } +})); +Object.defineProperty(exports, "resolveShowConfigPath", ({ + enumerable: true, + get: function () { + return _configuration.resolveShowConfigPath; + } +})); +Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", ({ + enumerable: true, + get: function () { + return _configuration.ROOT_CONFIG_FILENAMES; + } +})); +Object.defineProperty(exports, "resolvePlugin", ({ + enumerable: true, + get: function () { + return _plugins.resolvePlugin; + } +})); +Object.defineProperty(exports, "resolvePreset", ({ + enumerable: true, + get: function () { + return _plugins.resolvePreset; + } +})); +Object.defineProperty(exports, "loadPlugin", ({ + enumerable: true, + get: function () { + return _plugins.loadPlugin; + } +})); +Object.defineProperty(exports, "loadPreset", ({ + enumerable: true, + get: function () { + return _plugins.loadPreset; + } +})); + +var _package = __nccwpck_require__(61852); + +var _configuration = __nccwpck_require__(37118); + +var _plugins = __nccwpck_require__(88243); + +({}); + +/***/ }), + +/***/ 92386: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = loadCjsOrMjsDefault; + +var _async = __nccwpck_require__(3192); + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _url() { + const data = __nccwpck_require__(57310); + + _url = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +let import_; + +try { + import_ = (__nccwpck_require__(65678)/* ["default"] */ .Z); +} catch (_unused) {} + +function* loadCjsOrMjsDefault(filepath, asyncError) { + switch (guessJSModuleType(filepath)) { + case "cjs": + return loadCjsDefault(filepath); + + case "unknown": + try { + return loadCjsDefault(filepath); + } catch (e) { + if (e.code !== "ERR_REQUIRE_ESM") throw e; + } + + case "mjs": + if (yield* (0, _async.isAsync)()) { + return yield* (0, _async.waitFor)(loadMjsDefault(filepath)); + } + + throw new Error(asyncError); + } +} + +function guessJSModuleType(filename) { + switch (_path().default.extname(filename)) { + case ".cjs": + return "cjs"; + + case ".mjs": + return "mjs"; + + default: + return "unknown"; + } +} + +function loadCjsDefault(filepath) { + const module = require(filepath); + + return (module == null ? void 0 : module.__esModule) ? module.default || undefined : module; +} + +function loadMjsDefault(_x) { + return _loadMjsDefault.apply(this, arguments); +} + +function _loadMjsDefault() { + _loadMjsDefault = _asyncToGenerator(function* (filepath) { + if (!import_) { + throw new Error("Internal error: Native ECMAScript modules aren't supported" + " by this platform.\n"); + } + + const module = yield import_((0, _url().pathToFileURL)(filepath)); + return module.default; + }); + return _loadMjsDefault.apply(this, arguments); +} + +/***/ }), + +/***/ 61852: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.findPackageData = findPackageData; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +var _utils = __nccwpck_require__(87336); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const PACKAGE_FILENAME = "package.json"; + +function* findPackageData(filepath) { + let pkg = null; + const directories = []; + let isPackage = true; + + let dirname = _path().default.dirname(filepath); + + while (!pkg && _path().default.basename(dirname) !== "node_modules") { + directories.push(dirname); + pkg = yield* readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME)); + + const nextLoc = _path().default.dirname(dirname); + + if (dirname === nextLoc) { + isPackage = false; + break; + } + + dirname = nextLoc; + } + + return { + filepath, + directories, + pkg, + isPackage + }; +} + +const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => { + let options; + + try { + options = JSON.parse(content); + } catch (err) { + err.message = `${filepath}: Error while parsing JSON - ${err.message}`; + throw err; + } + + if (!options) throw new Error(`${filepath}: No config detected`); + + if (typeof options !== "object") { + throw new Error(`${filepath}: Config returned typeof ${typeof options}`); + } + + if (Array.isArray(options)) { + throw new Error(`${filepath}: Expected config object but found array`); + } + + return { + filepath, + dirname: _path().default.dirname(filepath), + options + }; +}); + +/***/ }), + +/***/ 88243: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resolvePlugin = resolvePlugin; +exports.resolvePreset = resolvePreset; +exports.loadPlugin = loadPlugin; +exports.loadPreset = loadPreset; + +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(67984)); + + _debug = function () { + return data; + }; + + return data; +} + +function _resolve() { + const data = _interopRequireDefault(__nccwpck_require__(89227)); + + _resolve = function () { + return data; + }; + + return data; +} + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const debug = (0, _debug().default)("babel:config:loading:files:plugins"); +const EXACT_RE = /^module:/; +const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/; +const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/; +const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/; +const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/; +const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/; +const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/; +const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/; + +function resolvePlugin(name, dirname) { + return resolveStandardizedName("plugin", name, dirname); +} + +function resolvePreset(name, dirname) { + return resolveStandardizedName("preset", name, dirname); +} + +function loadPlugin(name, dirname) { + const filepath = resolvePlugin(name, dirname); + + if (!filepath) { + throw new Error(`Plugin ${name} not found relative to ${dirname}`); + } + + const value = requireModule("plugin", filepath); + debug("Loaded plugin %o from %o.", name, dirname); + return { + filepath, + value + }; +} + +function loadPreset(name, dirname) { + const filepath = resolvePreset(name, dirname); + + if (!filepath) { + throw new Error(`Preset ${name} not found relative to ${dirname}`); + } + + const value = requireModule("preset", filepath); + debug("Loaded preset %o from %o.", name, dirname); + return { + filepath, + value + }; +} + +function standardizeName(type, name) { + if (_path().default.isAbsolute(name)) return name; + const isPreset = type === "preset"; + return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, ""); +} + +function resolveStandardizedName(type, name, dirname = process.cwd()) { + const standardizedName = standardizeName(type, name); + + try { + return _resolve().default.sync(standardizedName, { + basedir: dirname + }); + } catch (e) { + if (e.code !== "MODULE_NOT_FOUND") throw e; + + if (standardizedName !== name) { + let resolvedOriginal = false; + + try { + _resolve().default.sync(name, { + basedir: dirname + }); + + resolvedOriginal = true; + } catch (_unused) {} + + if (resolvedOriginal) { + e.message += `\n- If you want to resolve "${name}", use "module:${name}"`; + } + } + + let resolvedBabel = false; + + try { + _resolve().default.sync(standardizeName(type, "@babel/" + name), { + basedir: dirname + }); + + resolvedBabel = true; + } catch (_unused2) {} + + if (resolvedBabel) { + e.message += `\n- Did you mean "@babel/${name}"?`; + } + + let resolvedOppositeType = false; + const oppositeType = type === "preset" ? "plugin" : "preset"; + + try { + _resolve().default.sync(standardizeName(oppositeType, name), { + basedir: dirname + }); + + resolvedOppositeType = true; + } catch (_unused3) {} + + if (resolvedOppositeType) { + e.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`; + } + + throw e; + } +} + +const LOADING_MODULES = new Set(); + +function requireModule(type, name) { + if (LOADING_MODULES.has(name)) { + throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.'); + } + + try { + LOADING_MODULES.add(name); + return require(name); + } finally { + LOADING_MODULES.delete(name); + } +} + +/***/ }), + +/***/ 87336: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.makeStaticFileCache = makeStaticFileCache; + +var _caching = __nccwpck_require__(19315); + +var fs = _interopRequireWildcard(__nccwpck_require__(6524)); + +function _fs2() { + const data = _interopRequireDefault(__nccwpck_require__(57147)); + + _fs2 = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function makeStaticFileCache(fn) { + return (0, _caching.makeStrongCache)(function* (filepath, cache) { + const cached = cache.invalidate(() => fileMtime(filepath)); + + if (cached === null) { + return null; + } + + return fn(filepath, yield* fs.readFile(filepath, "utf8")); + }); +} + +function fileMtime(filepath) { + try { + return +_fs2().default.statSync(filepath).mtime; + } catch (e) { + if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e; + } + + return null; +} + +/***/ }), + +/***/ 63918: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _async = __nccwpck_require__(3192); + +var _util = __nccwpck_require__(60391); + +var context = _interopRequireWildcard(__nccwpck_require__(92092)); + +var _plugin = _interopRequireDefault(__nccwpck_require__(4725)); + +var _item = __nccwpck_require__(58050); + +var _configChain = __nccwpck_require__(57390); + +function _traverse() { + const data = _interopRequireDefault(__nccwpck_require__(8631)); + + _traverse = function () { + return data; + }; + + return data; +} + +var _caching = __nccwpck_require__(19315); + +var _options = __nccwpck_require__(14087); + +var _plugins = __nccwpck_require__(26741); + +var _configApi = _interopRequireDefault(__nccwpck_require__(7785)); + +var _partial = _interopRequireDefault(__nccwpck_require__(67399)); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _default = (0, _gensync().default)(function* loadFullConfig(inputOpts) { + const result = yield* (0, _partial.default)(inputOpts); + + if (!result) { + return null; + } + + const { + options, + context, + fileHandling + } = result; + + if (fileHandling === "ignored") { + return null; + } + + const optionDefaults = {}; + const { + plugins, + presets + } = options; + + if (!plugins || !presets) { + throw new Error("Assertion failure - plugins and presets exist"); + } + + const toDescriptor = item => { + const desc = (0, _item.getItemDescriptor)(item); + + if (!desc) { + throw new Error("Assertion failure - must be config item"); + } + + return desc; + }; + + const presetsDescriptors = presets.map(toDescriptor); + const initialPluginsDescriptors = plugins.map(toDescriptor); + const pluginDescriptorsByPass = [[]]; + const passes = []; + const ignored = yield* enhanceError(context, function* recursePresetDescriptors(rawPresets, pluginDescriptorsPass) { + const presets = []; + + for (let i = 0; i < rawPresets.length; i++) { + const descriptor = rawPresets[i]; + + if (descriptor.options !== false) { + try { + if (descriptor.ownPass) { + presets.push({ + preset: yield* loadPresetDescriptor(descriptor, context), + pass: [] + }); + } else { + presets.unshift({ + preset: yield* loadPresetDescriptor(descriptor, context), + pass: pluginDescriptorsPass + }); + } + } catch (e) { + if (e.code === "BABEL_UNKNOWN_OPTION") { + (0, _options.checkNoUnwrappedItemOptionPairs)(rawPresets, i, "preset", e); + } + + throw e; + } + } + } + + if (presets.length > 0) { + pluginDescriptorsByPass.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pluginDescriptorsPass)); + + for (const { + preset, + pass + } of presets) { + if (!preset) return true; + pass.push(...preset.plugins); + const ignored = yield* recursePresetDescriptors(preset.presets, pass); + if (ignored) return true; + preset.options.forEach(opts => { + (0, _util.mergeOptions)(optionDefaults, opts); + }); + } + } + })(presetsDescriptors, pluginDescriptorsByPass[0]); + if (ignored) return null; + const opts = optionDefaults; + (0, _util.mergeOptions)(opts, options); + yield* enhanceError(context, function* loadPluginDescriptors() { + pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors); + + for (const descs of pluginDescriptorsByPass) { + const pass = []; + passes.push(pass); + + for (let i = 0; i < descs.length; i++) { + const descriptor = descs[i]; + + if (descriptor.options !== false) { + try { + pass.push(yield* loadPluginDescriptor(descriptor, context)); + } catch (e) { + if (e.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") { + (0, _options.checkNoUnwrappedItemOptionPairs)(descs, i, "plugin", e); + } + + throw e; + } + } + } + } + })(); + opts.plugins = passes[0]; + opts.presets = passes.slice(1).filter(plugins => plugins.length > 0).map(plugins => ({ + plugins + })); + opts.passPerPreset = opts.presets.length > 0; + return { + options: opts, + passes: passes + }; +}); + +exports["default"] = _default; + +function enhanceError(context, fn) { + return function* (arg1, arg2) { + try { + return yield* fn(arg1, arg2); + } catch (e) { + if (!/^\[BABEL\]/.test(e.message)) { + e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`; + } + + throw e; + } + }; +} + +const loadDescriptor = (0, _caching.makeWeakCache)(function* ({ + value, + options, + dirname, + alias +}, cache) { + if (options === false) throw new Error("Assertion failure"); + options = options || {}; + let item = value; + + if (typeof value === "function") { + const api = Object.assign({}, context, (0, _configApi.default)(cache)); + + try { + item = value(api, options, dirname); + } catch (e) { + if (alias) { + e.message += ` (While processing: ${JSON.stringify(alias)})`; + } + + throw e; + } + } + + if (!item || typeof item !== "object") { + throw new Error("Plugin/Preset did not return an object."); + } + + if (typeof item.then === "function") { + yield* []; + throw new Error(`You appear to be using an async plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); + } + + return { + value: item, + options, + dirname, + alias + }; +}); + +function* loadPluginDescriptor(descriptor, context) { + if (descriptor.value instanceof _plugin.default) { + if (descriptor.options) { + throw new Error("Passed options to an existing Plugin instance will not work."); + } + + return descriptor.value; + } + + return yield* instantiatePlugin(yield* loadDescriptor(descriptor, context), context); +} + +const instantiatePlugin = (0, _caching.makeWeakCache)(function* ({ + value, + options, + dirname, + alias +}, cache) { + const pluginObj = (0, _plugins.validatePluginObject)(value); + const plugin = Object.assign({}, pluginObj); + + if (plugin.visitor) { + plugin.visitor = _traverse().default.explode(Object.assign({}, plugin.visitor)); + } + + if (plugin.inherits) { + const inheritsDescriptor = { + name: undefined, + alias: `${alias}$inherits`, + value: plugin.inherits, + options, + dirname + }; + const inherits = yield* (0, _async.forwardAsync)(loadPluginDescriptor, run => { + return cache.invalidate(data => run(inheritsDescriptor, data)); + }); + plugin.pre = chain(inherits.pre, plugin.pre); + plugin.post = chain(inherits.post, plugin.post); + plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions); + plugin.visitor = _traverse().default.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]); + } + + return new _plugin.default(plugin, options, alias); +}); + +const validateIfOptionNeedsFilename = (options, descriptor) => { + if (options.test || options.include || options.exclude) { + const formattedPresetName = descriptor.name ? `"${descriptor.name}"` : "/* your preset */"; + throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n")); + } +}; + +const validatePreset = (preset, context, descriptor) => { + if (!context.filename) { + const { + options + } = preset; + validateIfOptionNeedsFilename(options, descriptor); + + if (options.overrides) { + options.overrides.forEach(overrideOptions => validateIfOptionNeedsFilename(overrideOptions, descriptor)); + } + } +}; + +function* loadPresetDescriptor(descriptor, context) { + const preset = instantiatePreset(yield* loadDescriptor(descriptor, context)); + validatePreset(preset, context, descriptor); + return yield* (0, _configChain.buildPresetChain)(preset, context); +} + +const instantiatePreset = (0, _caching.makeWeakCacheSync)(({ + value, + dirname, + alias +}) => { + return { + options: (0, _options.validate)("preset", value), + alias, + dirname + }; +}); + +function chain(a, b) { + const fns = [a, b].filter(Boolean); + if (fns.length <= 1) return fns[0]; + return function (...args) { + for (const fn of fns) { + fn.apply(this, args); + } + }; +} + +/***/ }), + +/***/ 7785: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = makeAPI; + +function _semver() { + const data = _interopRequireDefault(__nccwpck_require__(17927)); + + _semver = function () { + return data; + }; + + return data; +} + +var _ = __nccwpck_require__(92092); + +var _caching = __nccwpck_require__(19315); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function makeAPI(cache) { + const env = value => cache.using(data => { + if (typeof value === "undefined") return data.envName; + + if (typeof value === "function") { + return (0, _caching.assertSimpleType)(value(data.envName)); + } + + if (!Array.isArray(value)) value = [value]; + return value.some(entry => { + if (typeof entry !== "string") { + throw new Error("Unexpected non-string value"); + } + + return entry === data.envName; + }); + }); + + const caller = cb => cache.using(data => (0, _caching.assertSimpleType)(cb(data.caller))); + + return { + version: _.version, + cache: cache.simple(), + env, + async: () => false, + caller, + assertVersion + }; +} + +function assertVersion(range) { + if (typeof range === "number") { + if (!Number.isInteger(range)) { + throw new Error("Expected string or integer value."); + } + + range = `^${range}.0.0-0`; + } + + if (typeof range !== "string") { + throw new Error("Expected string or integer value."); + } + + if (_semver().default.satisfies(_.version, range)) return; + const limit = Error.stackTraceLimit; + + if (typeof limit === "number" && limit < 25) { + Error.stackTraceLimit = 25; + } + + const err = new Error(`Requires Babel "${range}", but was loaded with "${_.version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); + + if (typeof limit === "number") { + Error.stackTraceLimit = limit; + } + + throw Object.assign(err, { + code: "BABEL_VERSION_UNSUPPORTED", + version: _.version, + range + }); +} + +/***/ }), + +/***/ 58915: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getEnv = getEnv; + +function getEnv(defaultValue = "development") { + return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue; +} + +/***/ }), + +/***/ 36797: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "default", ({ + enumerable: true, + get: function () { + return _full.default; + } +})); +exports.loadOptionsAsync = exports.loadOptionsSync = exports.loadOptions = exports.loadPartialConfigAsync = exports.loadPartialConfigSync = exports.loadPartialConfig = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _full = _interopRequireDefault(__nccwpck_require__(63918)); + +var _partial = __nccwpck_require__(67399); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const loadOptionsRunner = (0, _gensync().default)(function* (opts) { + var _config$options; + + const config = yield* (0, _full.default)(opts); + return (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null; +}); + +const maybeErrback = runner => (opts, callback) => { + if (callback === undefined && typeof opts === "function") { + callback = opts; + opts = undefined; + } + + return callback ? runner.errback(opts, callback) : runner.sync(opts); +}; + +const loadPartialConfig = maybeErrback(_partial.loadPartialConfig); +exports.loadPartialConfig = loadPartialConfig; +const loadPartialConfigSync = _partial.loadPartialConfig.sync; +exports.loadPartialConfigSync = loadPartialConfigSync; +const loadPartialConfigAsync = _partial.loadPartialConfig.async; +exports.loadPartialConfigAsync = loadPartialConfigAsync; +const loadOptions = maybeErrback(loadOptionsRunner); +exports.loadOptions = loadOptions; +const loadOptionsSync = loadOptionsRunner.sync; +exports.loadOptionsSync = loadOptionsSync; +const loadOptionsAsync = loadOptionsRunner.async; +exports.loadOptionsAsync = loadOptionsAsync; + +/***/ }), + +/***/ 58050: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createItemFromDescriptor = createItemFromDescriptor; +exports.createConfigItem = createConfigItem; +exports.getItemDescriptor = getItemDescriptor; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +var _configDescriptors = __nccwpck_require__(5847); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createItemFromDescriptor(desc) { + return new ConfigItem(desc); +} + +function createConfigItem(value, { + dirname = ".", + type +} = {}) { + const descriptor = (0, _configDescriptors.createDescriptor)(value, _path().default.resolve(dirname), { + type, + alias: "programmatic item" + }); + return createItemFromDescriptor(descriptor); +} + +function getItemDescriptor(item) { + if (item == null ? void 0 : item[CONFIG_ITEM_BRAND]) { + return item._descriptor; + } + + return undefined; +} + +const CONFIG_ITEM_BRAND = Symbol.for("@babel/core@7 - ConfigItem"); + +class ConfigItem { + constructor(descriptor) { + this._descriptor = void 0; + this[CONFIG_ITEM_BRAND] = true; + this.value = void 0; + this.options = void 0; + this.dirname = void 0; + this.name = void 0; + this.file = void 0; + this._descriptor = descriptor; + Object.defineProperty(this, "_descriptor", { + enumerable: false + }); + Object.defineProperty(this, CONFIG_ITEM_BRAND, { + enumerable: false + }); + this.value = this._descriptor.value; + this.options = this._descriptor.options; + this.dirname = this._descriptor.dirname; + this.name = this._descriptor.name; + this.file = this._descriptor.file ? { + request: this._descriptor.file.request, + resolved: this._descriptor.file.resolved + } : undefined; + Object.freeze(this); + } + +} + +Object.freeze(ConfigItem.prototype); + +/***/ }), + +/***/ 67399: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = loadPrivatePartialConfig; +exports.loadPartialConfig = void 0; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _plugin = _interopRequireDefault(__nccwpck_require__(4725)); + +var _util = __nccwpck_require__(60391); + +var _item = __nccwpck_require__(58050); + +var _configChain = __nccwpck_require__(57390); + +var _environment = __nccwpck_require__(58915); + +var _options = __nccwpck_require__(14087); + +var _files = __nccwpck_require__(53954); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function* resolveRootMode(rootDir, rootMode) { + switch (rootMode) { + case "root": + return rootDir; + + case "upward-optional": + { + const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir); + return upwardRootDir === null ? rootDir : upwardRootDir; + } + + case "upward": + { + const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir); + if (upwardRootDir !== null) return upwardRootDir; + throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}".\n` + `One of the following config files must be in the directory tree: ` + `"${_files.ROOT_CONFIG_FILENAMES.join(", ")}".`), { + code: "BABEL_ROOT_NOT_FOUND", + dirname: rootDir + }); + } + + default: + throw new Error(`Assertion failure - unknown rootMode value.`); + } +} + +function* loadPrivatePartialConfig(inputOpts) { + if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) { + throw new Error("Babel options must be an object, null, or undefined"); + } + + const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {}; + const { + envName = (0, _environment.getEnv)(), + cwd = ".", + root: rootDir = ".", + rootMode = "root", + caller, + cloneInputAst = true + } = args; + + const absoluteCwd = _path().default.resolve(cwd); + + const absoluteRootDir = yield* resolveRootMode(_path().default.resolve(absoluteCwd, rootDir), rootMode); + const filename = typeof args.filename === "string" ? _path().default.resolve(cwd, args.filename) : undefined; + const showConfigPath = yield* (0, _files.resolveShowConfigPath)(absoluteCwd); + const context = { + filename, + cwd: absoluteCwd, + root: absoluteRootDir, + envName, + caller, + showConfig: showConfigPath === filename + }; + const configChain = yield* (0, _configChain.buildRootChain)(args, context); + if (!configChain) return null; + const options = {}; + configChain.options.forEach(opts => { + (0, _util.mergeOptions)(options, opts); + }); + options.cloneInputAst = cloneInputAst; + options.babelrc = false; + options.configFile = false; + options.passPerPreset = false; + options.envName = context.envName; + options.cwd = context.cwd; + options.root = context.root; + options.filename = typeof context.filename === "string" ? context.filename : undefined; + options.plugins = configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); + options.presets = configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); + return { + options, + context, + fileHandling: configChain.fileHandling, + ignore: configChain.ignore, + babelrc: configChain.babelrc, + config: configChain.config, + files: configChain.files + }; +} + +const loadPartialConfig = (0, _gensync().default)(function* (opts) { + let showIgnoredFiles = false; + + if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) { + var _opts = opts; + ({ + showIgnoredFiles + } = _opts); + opts = _objectWithoutPropertiesLoose(_opts, ["showIgnoredFiles"]); + _opts; + } + + const result = yield* loadPrivatePartialConfig(opts); + if (!result) return null; + const { + options, + babelrc, + ignore, + config, + fileHandling, + files + } = result; + + if (fileHandling === "ignored" && !showIgnoredFiles) { + return null; + } + + (options.plugins || []).forEach(item => { + if (item.value instanceof _plugin.default) { + throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()"); + } + }); + return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files); +}); +exports.loadPartialConfig = loadPartialConfig; + +class PartialConfig { + constructor(options, babelrc, ignore, config, fileHandling, files) { + this.options = void 0; + this.babelrc = void 0; + this.babelignore = void 0; + this.config = void 0; + this.fileHandling = void 0; + this.files = void 0; + this.options = options; + this.babelignore = ignore; + this.babelrc = babelrc; + this.config = config; + this.fileHandling = fileHandling; + this.files = files; + Object.freeze(this); + } + + hasFilesystemConfig() { + return this.babelrc !== undefined || this.config !== undefined; + } + +} + +Object.freeze(PartialConfig.prototype); + +/***/ }), + +/***/ 59056: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = pathToPattern; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _escapeRegExp() { + const data = _interopRequireDefault(__nccwpck_require__(11160)); + + _escapeRegExp = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const sep = `\\${_path().default.sep}`; +const endSep = `(?:${sep}|$)`; +const substitution = `[^${sep}]+`; +const starPat = `(?:${substitution}${sep})`; +const starPatLast = `(?:${substitution}${endSep})`; +const starStarPat = `${starPat}*?`; +const starStarPatLast = `${starPat}*?${starPatLast}?`; + +function pathToPattern(pattern, dirname) { + const parts = _path().default.resolve(dirname, pattern).split(_path().default.sep); + + return new RegExp(["^", ...parts.map((part, i) => { + const last = i === parts.length - 1; + if (part === "**") return last ? starStarPatLast : starStarPat; + if (part === "*") return last ? starPatLast : starPat; + + if (part.indexOf("*.") === 0) { + return substitution + (0, _escapeRegExp().default)(part.slice(1)) + (last ? endSep : sep); + } + + return (0, _escapeRegExp().default)(part) + (last ? endSep : sep); + })].join("")); +} + +/***/ }), + +/***/ 4725: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +class Plugin { + constructor(plugin, options, key) { + this.key = void 0; + this.manipulateOptions = void 0; + this.post = void 0; + this.pre = void 0; + this.visitor = void 0; + this.parserOverride = void 0; + this.generatorOverride = void 0; + this.options = void 0; + this.key = plugin.name || key; + this.manipulateOptions = plugin.manipulateOptions; + this.post = plugin.post; + this.pre = plugin.pre; + this.visitor = plugin.visitor || {}; + this.parserOverride = plugin.parserOverride; + this.generatorOverride = plugin.generatorOverride; + this.options = options; + } + +} + +exports["default"] = Plugin; + +/***/ }), + +/***/ 21489: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ConfigPrinter = exports.ChainFormatter = void 0; +const ChainFormatter = { + Programmatic: 0, + Config: 1 +}; +exports.ChainFormatter = ChainFormatter; +const Formatter = { + title(type, callerName, filepath) { + let title = ""; + + if (type === ChainFormatter.Programmatic) { + title = "programmatic options"; + + if (callerName) { + title += " from " + callerName; + } + } else { + title = "config " + filepath; + } + + return title; + }, + + loc(index, envName) { + let loc = ""; + + if (index != null) { + loc += `.overrides[${index}]`; + } + + if (envName != null) { + loc += `.env["${envName}"]`; + } + + return loc; + }, + + optionsAndDescriptors(opt) { + const content = Object.assign({}, opt.options); + delete content.overrides; + delete content.env; + const pluginDescriptors = [...opt.plugins()]; + + if (pluginDescriptors.length) { + content.plugins = pluginDescriptors.map(d => descriptorToConfig(d)); + } + + const presetDescriptors = [...opt.presets()]; + + if (presetDescriptors.length) { + content.presets = [...presetDescriptors].map(d => descriptorToConfig(d)); + } + + return JSON.stringify(content, undefined, 2); + } + +}; + +function descriptorToConfig(d) { + var _d$file; + + let name = (_d$file = d.file) == null ? void 0 : _d$file.request; + + if (name == null) { + if (typeof d.value === "object") { + name = d.value; + } else if (typeof d.value === "function") { + name = `[Function: ${d.value.toString().substr(0, 50)} ... ]`; + } + } + + if (name == null) { + name = "[Unknown]"; + } + + if (d.options === undefined) { + return name; + } else if (d.name == null) { + return [name, d.options]; + } else { + return [name, d.options, d.name]; + } +} + +class ConfigPrinter { + constructor() { + this._stack = []; + } + + configure(enabled, type, { + callerName, + filepath + }) { + if (!enabled) return () => {}; + return (content, index, envName) => { + this._stack.push({ + type, + callerName, + filepath, + content, + index, + envName + }); + }; + } + + static format(config) { + let title = Formatter.title(config.type, config.callerName, config.filepath); + const loc = Formatter.loc(config.index, config.envName); + if (loc) title += ` ${loc}`; + const content = Formatter.optionsAndDescriptors(config.content); + return `${title}\n${content}`; + } + + output() { + if (this._stack.length === 0) return ""; + return this._stack.map(s => ConfigPrinter.format(s)).join("\n\n"); + } + +} + +exports.ConfigPrinter = ConfigPrinter; + +/***/ }), + +/***/ 60391: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.mergeOptions = mergeOptions; +exports.isIterableIterator = isIterableIterator; + +function mergeOptions(target, source) { + for (const k of Object.keys(source)) { + if (k === "parserOpts" && source.parserOpts) { + const parserOpts = source.parserOpts; + const targetObj = target.parserOpts = target.parserOpts || {}; + mergeDefaultFields(targetObj, parserOpts); + } else if (k === "generatorOpts" && source.generatorOpts) { + const generatorOpts = source.generatorOpts; + const targetObj = target.generatorOpts = target.generatorOpts || {}; + mergeDefaultFields(targetObj, generatorOpts); + } else { + const val = source[k]; + if (val !== undefined) target[k] = val; + } + } +} + +function mergeDefaultFields(target, source) { + for (const k of Object.keys(source)) { + const val = source[k]; + if (val !== undefined) target[k] = val; + } +} + +function isIterableIterator(value) { + return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function"; +} + +/***/ }), + +/***/ 52661: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.msg = msg; +exports.access = access; +exports.assertRootMode = assertRootMode; +exports.assertSourceMaps = assertSourceMaps; +exports.assertCompact = assertCompact; +exports.assertSourceType = assertSourceType; +exports.assertCallerMetadata = assertCallerMetadata; +exports.assertInputSourceMap = assertInputSourceMap; +exports.assertString = assertString; +exports.assertFunction = assertFunction; +exports.assertBoolean = assertBoolean; +exports.assertObject = assertObject; +exports.assertArray = assertArray; +exports.assertIgnoreList = assertIgnoreList; +exports.assertConfigApplicableTest = assertConfigApplicableTest; +exports.assertConfigFileSearch = assertConfigFileSearch; +exports.assertBabelrcSearch = assertBabelrcSearch; +exports.assertPluginList = assertPluginList; + +function msg(loc) { + switch (loc.type) { + case "root": + return ``; + + case "env": + return `${msg(loc.parent)}.env["${loc.name}"]`; + + case "overrides": + return `${msg(loc.parent)}.overrides[${loc.index}]`; + + case "option": + return `${msg(loc.parent)}.${loc.name}`; + + case "access": + return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`; + + default: + throw new Error(`Assertion failure: Unknown type ${loc.type}`); + } +} + +function access(loc, name) { + return { + type: "access", + name, + parent: loc + }; +} + +function assertRootMode(loc, value) { + if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") { + throw new Error(`${msg(loc)} must be a "root", "upward", "upward-optional" or undefined`); + } + + return value; +} + +function assertSourceMaps(loc, value) { + if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") { + throw new Error(`${msg(loc)} must be a boolean, "inline", "both", or undefined`); + } + + return value; +} + +function assertCompact(loc, value) { + if (value !== undefined && typeof value !== "boolean" && value !== "auto") { + throw new Error(`${msg(loc)} must be a boolean, "auto", or undefined`); + } + + return value; +} + +function assertSourceType(loc, value) { + if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") { + throw new Error(`${msg(loc)} must be "module", "script", "unambiguous", or undefined`); + } + + return value; +} + +function assertCallerMetadata(loc, value) { + const obj = assertObject(loc, value); + + if (obj) { + if (typeof obj["name"] !== "string") { + throw new Error(`${msg(loc)} set but does not contain "name" property string`); + } + + for (const prop of Object.keys(obj)) { + const propLoc = access(loc, prop); + const value = obj[prop]; + + if (value != null && typeof value !== "boolean" && typeof value !== "string" && typeof value !== "number") { + throw new Error(`${msg(propLoc)} must be null, undefined, a boolean, a string, or a number.`); + } + } + } + + return value; +} + +function assertInputSourceMap(loc, value) { + if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) { + throw new Error(`${msg(loc)} must be a boolean, object, or undefined`); + } + + return value; +} + +function assertString(loc, value) { + if (value !== undefined && typeof value !== "string") { + throw new Error(`${msg(loc)} must be a string, or undefined`); + } + + return value; +} + +function assertFunction(loc, value) { + if (value !== undefined && typeof value !== "function") { + throw new Error(`${msg(loc)} must be a function, or undefined`); + } + + return value; +} + +function assertBoolean(loc, value) { + if (value !== undefined && typeof value !== "boolean") { + throw new Error(`${msg(loc)} must be a boolean, or undefined`); + } + + return value; +} + +function assertObject(loc, value) { + if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) { + throw new Error(`${msg(loc)} must be an object, or undefined`); + } + + return value; +} + +function assertArray(loc, value) { + if (value != null && !Array.isArray(value)) { + throw new Error(`${msg(loc)} must be an array, or undefined`); + } + + return value; +} + +function assertIgnoreList(loc, value) { + const arr = assertArray(loc, value); + + if (arr) { + arr.forEach((item, i) => assertIgnoreItem(access(loc, i), item)); + } + + return arr; +} + +function assertIgnoreItem(loc, value) { + if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) { + throw new Error(`${msg(loc)} must be an array of string/Function/RegExp values, or undefined`); + } + + return value; +} + +function assertConfigApplicableTest(loc, value) { + if (value === undefined) return value; + + if (Array.isArray(value)) { + value.forEach((item, i) => { + if (!checkValidTest(item)) { + throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); + } + }); + } else if (!checkValidTest(value)) { + throw new Error(`${msg(loc)} must be a string/Function/RegExp, or an array of those`); + } + + return value; +} + +function checkValidTest(value) { + return typeof value === "string" || typeof value === "function" || value instanceof RegExp; +} + +function assertConfigFileSearch(loc, value) { + if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") { + throw new Error(`${msg(loc)} must be a undefined, a boolean, a string, ` + `got ${JSON.stringify(value)}`); + } + + return value; +} + +function assertBabelrcSearch(loc, value) { + if (value === undefined || typeof value === "boolean") return value; + + if (Array.isArray(value)) { + value.forEach((item, i) => { + if (!checkValidTest(item)) { + throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); + } + }); + } else if (!checkValidTest(value)) { + throw new Error(`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` + `or an array of those, got ${JSON.stringify(value)}`); + } + + return value; +} + +function assertPluginList(loc, value) { + const arr = assertArray(loc, value); + + if (arr) { + arr.forEach((item, i) => assertPluginItem(access(loc, i), item)); + } + + return arr; +} + +function assertPluginItem(loc, value) { + if (Array.isArray(value)) { + if (value.length === 0) { + throw new Error(`${msg(loc)} must include an object`); + } + + if (value.length > 3) { + throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`); + } + + assertPluginTarget(access(loc, 0), value[0]); + + if (value.length > 1) { + const opts = value[1]; + + if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) { + throw new Error(`${msg(access(loc, 1))} must be an object, false, or undefined`); + } + } + + if (value.length === 3) { + const name = value[2]; + + if (name !== undefined && typeof name !== "string") { + throw new Error(`${msg(access(loc, 2))} must be a string, or undefined`); + } + } + } else { + assertPluginTarget(loc, value); + } + + return value; +} + +function assertPluginTarget(loc, value) { + if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") { + throw new Error(`${msg(loc)} must be a string, object, function`); + } + + return value; +} + +/***/ }), + +/***/ 14087: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.validate = validate; +exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs; + +var _plugin = _interopRequireDefault(__nccwpck_require__(4725)); + +var _removed = _interopRequireDefault(__nccwpck_require__(59659)); + +var _optionAssertions = __nccwpck_require__(52661); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const ROOT_VALIDATORS = { + cwd: _optionAssertions.assertString, + root: _optionAssertions.assertString, + rootMode: _optionAssertions.assertRootMode, + configFile: _optionAssertions.assertConfigFileSearch, + caller: _optionAssertions.assertCallerMetadata, + filename: _optionAssertions.assertString, + filenameRelative: _optionAssertions.assertString, + code: _optionAssertions.assertBoolean, + ast: _optionAssertions.assertBoolean, + cloneInputAst: _optionAssertions.assertBoolean, + envName: _optionAssertions.assertString +}; +const BABELRC_VALIDATORS = { + babelrc: _optionAssertions.assertBoolean, + babelrcRoots: _optionAssertions.assertBabelrcSearch +}; +const NONPRESET_VALIDATORS = { + extends: _optionAssertions.assertString, + ignore: _optionAssertions.assertIgnoreList, + only: _optionAssertions.assertIgnoreList +}; +const COMMON_VALIDATORS = { + inputSourceMap: _optionAssertions.assertInputSourceMap, + presets: _optionAssertions.assertPluginList, + plugins: _optionAssertions.assertPluginList, + passPerPreset: _optionAssertions.assertBoolean, + env: assertEnvSet, + overrides: assertOverridesList, + test: _optionAssertions.assertConfigApplicableTest, + include: _optionAssertions.assertConfigApplicableTest, + exclude: _optionAssertions.assertConfigApplicableTest, + retainLines: _optionAssertions.assertBoolean, + comments: _optionAssertions.assertBoolean, + shouldPrintComment: _optionAssertions.assertFunction, + compact: _optionAssertions.assertCompact, + minified: _optionAssertions.assertBoolean, + auxiliaryCommentBefore: _optionAssertions.assertString, + auxiliaryCommentAfter: _optionAssertions.assertString, + sourceType: _optionAssertions.assertSourceType, + wrapPluginVisitorMethod: _optionAssertions.assertFunction, + highlightCode: _optionAssertions.assertBoolean, + sourceMaps: _optionAssertions.assertSourceMaps, + sourceMap: _optionAssertions.assertSourceMaps, + sourceFileName: _optionAssertions.assertString, + sourceRoot: _optionAssertions.assertString, + getModuleId: _optionAssertions.assertFunction, + moduleRoot: _optionAssertions.assertString, + moduleIds: _optionAssertions.assertBoolean, + moduleId: _optionAssertions.assertString, + parserOpts: _optionAssertions.assertObject, + generatorOpts: _optionAssertions.assertObject +}; + +function getSource(loc) { + return loc.type === "root" ? loc.source : getSource(loc.parent); +} + +function validate(type, opts) { + return validateNested({ + type: "root", + source: type + }, opts); +} + +function validateNested(loc, opts) { + const type = getSource(loc); + assertNoDuplicateSourcemap(opts); + Object.keys(opts).forEach(key => { + const optLoc = { + type: "option", + name: key, + parent: loc + }; + + if (type === "preset" && NONPRESET_VALIDATORS[key]) { + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`); + } + + if (type !== "arguments" && ROOT_VALIDATORS[key]) { + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`); + } + + if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) { + if (type === "babelrcfile" || type === "extendsfile") { + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`); + } + + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`); + } + + const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError; + validator(optLoc, opts[key]); + }); + return opts; +} + +function throwUnknownError(loc) { + const key = loc.name; + + if (_removed.default[key]) { + const { + message, + version = 5 + } = _removed.default[key]; + throw new Error(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`); + } else { + const unknownOptErr = new Error(`Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`); + unknownOptErr.code = "BABEL_UNKNOWN_OPTION"; + throw unknownOptErr; + } +} + +function has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + +function assertNoDuplicateSourcemap(opts) { + if (has(opts, "sourceMap") && has(opts, "sourceMaps")) { + throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both"); + } +} + +function assertEnvSet(loc, value) { + if (loc.parent.type === "env") { + throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`); + } + + const parent = loc.parent; + const obj = (0, _optionAssertions.assertObject)(loc, value); + + if (obj) { + for (const envName of Object.keys(obj)) { + const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]); + if (!env) continue; + const envLoc = { + type: "env", + name: envName, + parent + }; + validateNested(envLoc, env); + } + } + + return obj; +} + +function assertOverridesList(loc, value) { + if (loc.parent.type === "env") { + throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`); + } + + if (loc.parent.type === "overrides") { + throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`); + } + + const parent = loc.parent; + const arr = (0, _optionAssertions.assertArray)(loc, value); + + if (arr) { + for (const [index, item] of arr.entries()) { + const objLoc = (0, _optionAssertions.access)(loc, index); + const env = (0, _optionAssertions.assertObject)(objLoc, item); + if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`); + const overridesLoc = { + type: "overrides", + index, + parent + }; + validateNested(overridesLoc, env); + } + } + + return arr; +} + +function checkNoUnwrappedItemOptionPairs(items, index, type, e) { + if (index === 0) return; + const lastItem = items[index - 1]; + const thisItem = items[index]; + + if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") { + e.message += `\n- Maybe you meant to use\n` + `"${type}": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`; + } +} + +/***/ }), + +/***/ 26741: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.validatePluginObject = validatePluginObject; + +var _optionAssertions = __nccwpck_require__(52661); + +const VALIDATORS = { + name: _optionAssertions.assertString, + manipulateOptions: _optionAssertions.assertFunction, + pre: _optionAssertions.assertFunction, + post: _optionAssertions.assertFunction, + inherits: _optionAssertions.assertFunction, + visitor: assertVisitorMap, + parserOverride: _optionAssertions.assertFunction, + generatorOverride: _optionAssertions.assertFunction +}; + +function assertVisitorMap(loc, value) { + const obj = (0, _optionAssertions.assertObject)(loc, value); + + if (obj) { + Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop])); + + if (obj.enter || obj.exit) { + throw new Error(`${(0, _optionAssertions.msg)(loc)} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`); + } + } + + return obj; +} + +function assertVisitorHandler(key, value) { + if (value && typeof value === "object") { + Object.keys(value).forEach(handler => { + if (handler !== "enter" && handler !== "exit") { + throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`); + } + }); + } else if (typeof value !== "function") { + throw new Error(`.visitor["${key}"] must be a function`); + } + + return value; +} + +function validatePluginObject(obj) { + const rootPath = { + type: "root", + source: "plugin" + }; + Object.keys(obj).forEach(key => { + const validator = VALIDATORS[key]; + + if (validator) { + const optLoc = { + type: "option", + name: key, + parent: rootPath + }; + validator(optLoc, obj[key]); + } else { + const invalidPluginPropertyError = new Error(`.${key} is not a valid Plugin property`); + invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY"; + throw invalidPluginPropertyError; + } + }); + return obj; +} + +/***/ }), + +/***/ 59659: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = { + auxiliaryComment: { + message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`" + }, + blacklist: { + message: "Put the specific transforms you want in the `plugins` option" + }, + breakConfig: { + message: "This is not a necessary option in Babel 6" + }, + experimental: { + message: "Put the specific transforms you want in the `plugins` option" + }, + externalHelpers: { + message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/" + }, + extra: { + message: "" + }, + jsxPragma: { + message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/" + }, + loose: { + message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option." + }, + metadataUsedHelpers: { + message: "Not required anymore as this is enabled by default" + }, + modules: { + message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules" + }, + nonStandard: { + message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/" + }, + optional: { + message: "Put the specific transforms you want in the `plugins` option" + }, + sourceMapName: { + message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves." + }, + stage: { + message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets" + }, + whitelist: { + message: "Put the specific transforms you want in the `plugins` option" + }, + resolveModuleSource: { + version: 6, + message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options" + }, + metadata: { + version: 6, + message: "Generated plugin metadata is always included in the output result" + }, + sourceMapTarget: { + version: 6, + message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves." + } +}; +exports["default"] = _default; + +/***/ }), + +/***/ 3192: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.maybeAsync = maybeAsync; +exports.forwardAsync = forwardAsync; +exports.isThenable = isThenable; +exports.waitFor = exports.onFirstPause = exports.isAsync = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const id = x => x; + +const runGenerator = (0, _gensync().default)(function* (item) { + return yield* item; +}); +const isAsync = (0, _gensync().default)({ + sync: () => false, + errback: cb => cb(null, true) +}); +exports.isAsync = isAsync; + +function maybeAsync(fn, message) { + return (0, _gensync().default)({ + sync(...args) { + const result = fn.apply(this, args); + if (isThenable(result)) throw new Error(message); + return result; + }, + + async(...args) { + return Promise.resolve(fn.apply(this, args)); + } + + }); +} + +const withKind = (0, _gensync().default)({ + sync: cb => cb("sync"), + async: cb => cb("async") +}); + +function forwardAsync(action, cb) { + const g = (0, _gensync().default)(action); + return withKind(kind => { + const adapted = g[kind]; + return cb(adapted); + }); +} + +const onFirstPause = (0, _gensync().default)({ + name: "onFirstPause", + arity: 2, + sync: function (item) { + return runGenerator.sync(item); + }, + errback: function (item, firstPause, cb) { + let completed = false; + runGenerator.errback(item, (err, value) => { + completed = true; + cb(err, value); + }); + + if (!completed) { + firstPause(); + } + } +}); +exports.onFirstPause = onFirstPause; +const waitFor = (0, _gensync().default)({ + sync: id, + async: id +}); +exports.waitFor = waitFor; + +function isThenable(val) { + return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; +} + +/***/ }), + +/***/ 6524: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.stat = exports.exists = exports.readFile = void 0; + +function _fs() { + const data = _interopRequireDefault(__nccwpck_require__(57147)); + + _fs = function () { + return data; + }; + + return data; +} + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const readFile = (0, _gensync().default)({ + sync: _fs().default.readFileSync, + errback: _fs().default.readFile +}); +exports.readFile = readFile; +const exists = (0, _gensync().default)({ + sync(path) { + try { + _fs().default.accessSync(path); + + return true; + } catch (_unused) { + return false; + } + }, + + errback: (path, cb) => _fs().default.access(path, undefined, err => cb(null, !err)) +}); +exports.exists = exists; +const stat = (0, _gensync().default)({ + sync: _fs().default.statSync, + errback: _fs().default.stat +}); +exports.stat = stat; + +/***/ }), + +/***/ 97199: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +function _resolve() { + const data = _interopRequireDefault(__nccwpck_require__(89227)); + + _resolve = function () { + return data; + }; + + return data; +} + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _default = (0, _gensync().default)({ + sync: _resolve().default.sync, + errback: _resolve().default +}); + +exports["default"] = _default; + +/***/ }), + +/***/ 92092: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Plugin = Plugin; +Object.defineProperty(exports, "File", ({ + enumerable: true, + get: function () { + return _file.default; + } +})); +Object.defineProperty(exports, "buildExternalHelpers", ({ + enumerable: true, + get: function () { + return _buildExternalHelpers.default; + } +})); +Object.defineProperty(exports, "resolvePlugin", ({ + enumerable: true, + get: function () { + return _files.resolvePlugin; + } +})); +Object.defineProperty(exports, "resolvePreset", ({ + enumerable: true, + get: function () { + return _files.resolvePreset; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _package.version; + } +})); +Object.defineProperty(exports, "getEnv", ({ + enumerable: true, + get: function () { + return _environment.getEnv; + } +})); +Object.defineProperty(exports, "tokTypes", ({ + enumerable: true, + get: function () { + return _parser().tokTypes; + } +})); +Object.defineProperty(exports, "traverse", ({ + enumerable: true, + get: function () { + return _traverse().default; + } +})); +Object.defineProperty(exports, "template", ({ + enumerable: true, + get: function () { + return _template().default; + } +})); +Object.defineProperty(exports, "createConfigItem", ({ + enumerable: true, + get: function () { + return _item.createConfigItem; + } +})); +Object.defineProperty(exports, "loadPartialConfig", ({ + enumerable: true, + get: function () { + return _config.loadPartialConfig; + } +})); +Object.defineProperty(exports, "loadPartialConfigSync", ({ + enumerable: true, + get: function () { + return _config.loadPartialConfigSync; + } +})); +Object.defineProperty(exports, "loadPartialConfigAsync", ({ + enumerable: true, + get: function () { + return _config.loadPartialConfigAsync; + } +})); +Object.defineProperty(exports, "loadOptions", ({ + enumerable: true, + get: function () { + return _config.loadOptions; + } +})); +Object.defineProperty(exports, "loadOptionsSync", ({ + enumerable: true, + get: function () { + return _config.loadOptionsSync; + } +})); +Object.defineProperty(exports, "loadOptionsAsync", ({ + enumerable: true, + get: function () { + return _config.loadOptionsAsync; + } +})); +Object.defineProperty(exports, "transform", ({ + enumerable: true, + get: function () { + return _transform.transform; + } +})); +Object.defineProperty(exports, "transformSync", ({ + enumerable: true, + get: function () { + return _transform.transformSync; + } +})); +Object.defineProperty(exports, "transformAsync", ({ + enumerable: true, + get: function () { + return _transform.transformAsync; + } +})); +Object.defineProperty(exports, "transformFile", ({ + enumerable: true, + get: function () { + return _transformFile.transformFile; + } +})); +Object.defineProperty(exports, "transformFileSync", ({ + enumerable: true, + get: function () { + return _transformFile.transformFileSync; + } +})); +Object.defineProperty(exports, "transformFileAsync", ({ + enumerable: true, + get: function () { + return _transformFile.transformFileAsync; + } +})); +Object.defineProperty(exports, "transformFromAst", ({ + enumerable: true, + get: function () { + return _transformAst.transformFromAst; + } +})); +Object.defineProperty(exports, "transformFromAstSync", ({ + enumerable: true, + get: function () { + return _transformAst.transformFromAstSync; + } +})); +Object.defineProperty(exports, "transformFromAstAsync", ({ + enumerable: true, + get: function () { + return _transformAst.transformFromAstAsync; + } +})); +Object.defineProperty(exports, "parse", ({ + enumerable: true, + get: function () { + return _parse.parse; + } +})); +Object.defineProperty(exports, "parseSync", ({ + enumerable: true, + get: function () { + return _parse.parseSync; + } +})); +Object.defineProperty(exports, "parseAsync", ({ + enumerable: true, + get: function () { + return _parse.parseAsync; + } +})); +exports.types = exports.OptionManager = exports.DEFAULT_EXTENSIONS = void 0; + +var _file = _interopRequireDefault(__nccwpck_require__(64451)); + +var _buildExternalHelpers = _interopRequireDefault(__nccwpck_require__(95145)); + +var _files = __nccwpck_require__(53954); + +var _package = __nccwpck_require__(83352); + +var _environment = __nccwpck_require__(58915); + +function _types() { + const data = _interopRequireWildcard(__nccwpck_require__(24479)); + + _types = function () { + return data; + }; + + return data; +} + +Object.defineProperty(exports, "types", ({ + enumerable: true, + get: function () { + return _types(); + } +})); + +function _parser() { + const data = __nccwpck_require__(89302); + + _parser = function () { + return data; + }; + + return data; +} + +function _traverse() { + const data = _interopRequireDefault(__nccwpck_require__(8631)); + + _traverse = function () { + return data; + }; + + return data; +} + +function _template() { + const data = _interopRequireDefault(__nccwpck_require__(20153)); + + _template = function () { + return data; + }; + + return data; +} + +var _item = __nccwpck_require__(58050); + +var _config = __nccwpck_require__(36797); + +var _transform = __nccwpck_require__(2016); + +var _transformFile = __nccwpck_require__(17673); + +var _transformAst = __nccwpck_require__(21588); + +var _parse = __nccwpck_require__(80977); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs"]); +exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS; + +class OptionManager { + init(opts) { + return (0, _config.loadOptions)(opts); + } + +} + +exports.OptionManager = OptionManager; + +function Plugin(alias) { + throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`); +} + +/***/ }), + +/***/ 80977: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.parseAsync = exports.parseSync = exports.parse = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _config = _interopRequireDefault(__nccwpck_require__(36797)); + +var _parser = _interopRequireDefault(__nccwpck_require__(38554)); + +var _normalizeOpts = _interopRequireDefault(__nccwpck_require__(48587)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const parseRunner = (0, _gensync().default)(function* parse(code, opts) { + const config = yield* (0, _config.default)(opts); + + if (config === null) { + return null; + } + + return yield* (0, _parser.default)(config.passes, (0, _normalizeOpts.default)(config), code); +}); + +const parse = function parse(code, opts, callback) { + if (typeof opts === "function") { + callback = opts; + opts = undefined; + } + + if (callback === undefined) return parseRunner.sync(code, opts); + parseRunner.errback(code, opts, callback); +}; + +exports.parse = parse; +const parseSync = parseRunner.sync; +exports.parseSync = parseSync; +const parseAsync = parseRunner.async; +exports.parseAsync = parseAsync; + +/***/ }), + +/***/ 38554: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = parser; + +function _parser() { + const data = __nccwpck_require__(89302); + + _parser = function () { + return data; + }; + + return data; +} + +function _codeFrame() { + const data = __nccwpck_require__(47548); + + _codeFrame = function () { + return data; + }; + + return data; +} + +var _missingPluginHelper = _interopRequireDefault(__nccwpck_require__(45524)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function* parser(pluginPasses, { + parserOpts, + highlightCode = true, + filename = "unknown" +}, code) { + try { + const results = []; + + for (const plugins of pluginPasses) { + for (const plugin of plugins) { + const { + parserOverride + } = plugin; + + if (parserOverride) { + const ast = parserOverride(code, parserOpts, _parser().parse); + if (ast !== undefined) results.push(ast); + } + } + } + + if (results.length === 0) { + return (0, _parser().parse)(code, parserOpts); + } else if (results.length === 1) { + yield* []; + + if (typeof results[0].then === "function") { + throw new Error(`You appear to be using an async parser plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + + return results[0]; + } + + throw new Error("More than one plugin attempted to override parsing."); + } catch (err) { + if (err.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") { + err.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file."; + } + + const { + loc, + missingPlugin + } = err; + + if (loc) { + const codeFrame = (0, _codeFrame().codeFrameColumns)(code, { + start: { + line: loc.line, + column: loc.column + 1 + } + }, { + highlightCode + }); + + if (missingPlugin) { + err.message = `${filename}: ` + (0, _missingPluginHelper.default)(missingPlugin[0], loc, codeFrame); + } else { + err.message = `${filename}: ${err.message}\n\n` + codeFrame; + } + + err.code = "BABEL_PARSE_ERROR"; + } + + throw err; + } +} + +/***/ }), + +/***/ 45524: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = generateMissingPluginMessage; +const pluginNameMap = { + classProperties: { + syntax: { + name: "@babel/plugin-syntax-class-properties", + url: "https://git.io/vb4yQ" + }, + transform: { + name: "@babel/plugin-proposal-class-properties", + url: "https://git.io/vb4SL" + } + }, + classPrivateProperties: { + syntax: { + name: "@babel/plugin-syntax-class-properties", + url: "https://git.io/vb4yQ" + }, + transform: { + name: "@babel/plugin-proposal-class-properties", + url: "https://git.io/vb4SL" + } + }, + classPrivateMethods: { + syntax: { + name: "@babel/plugin-syntax-class-properties", + url: "https://git.io/vb4yQ" + }, + transform: { + name: "@babel/plugin-proposal-private-methods", + url: "https://git.io/JvpRG" + } + }, + classStaticBlock: { + syntax: { + name: "@babel/plugin-syntax-class-static-block", + url: "https://git.io/JTLB6" + }, + transform: { + name: "@babel/plugin-proposal-class-static-block", + url: "https://git.io/JTLBP" + } + }, + decimal: { + syntax: { + name: "@babel/plugin-syntax-decimal", + url: "https://git.io/JfKOH" + } + }, + decorators: { + syntax: { + name: "@babel/plugin-syntax-decorators", + url: "https://git.io/vb4y9" + }, + transform: { + name: "@babel/plugin-proposal-decorators", + url: "https://git.io/vb4ST" + } + }, + doExpressions: { + syntax: { + name: "@babel/plugin-syntax-do-expressions", + url: "https://git.io/vb4yh" + }, + transform: { + name: "@babel/plugin-proposal-do-expressions", + url: "https://git.io/vb4S3" + } + }, + dynamicImport: { + syntax: { + name: "@babel/plugin-syntax-dynamic-import", + url: "https://git.io/vb4Sv" + } + }, + exportDefaultFrom: { + syntax: { + name: "@babel/plugin-syntax-export-default-from", + url: "https://git.io/vb4SO" + }, + transform: { + name: "@babel/plugin-proposal-export-default-from", + url: "https://git.io/vb4yH" + } + }, + exportNamespaceFrom: { + syntax: { + name: "@babel/plugin-syntax-export-namespace-from", + url: "https://git.io/vb4Sf" + }, + transform: { + name: "@babel/plugin-proposal-export-namespace-from", + url: "https://git.io/vb4SG" + } + }, + flow: { + syntax: { + name: "@babel/plugin-syntax-flow", + url: "https://git.io/vb4yb" + }, + transform: { + name: "@babel/preset-flow", + url: "https://git.io/JfeDn" + } + }, + functionBind: { + syntax: { + name: "@babel/plugin-syntax-function-bind", + url: "https://git.io/vb4y7" + }, + transform: { + name: "@babel/plugin-proposal-function-bind", + url: "https://git.io/vb4St" + } + }, + functionSent: { + syntax: { + name: "@babel/plugin-syntax-function-sent", + url: "https://git.io/vb4yN" + }, + transform: { + name: "@babel/plugin-proposal-function-sent", + url: "https://git.io/vb4SZ" + } + }, + importMeta: { + syntax: { + name: "@babel/plugin-syntax-import-meta", + url: "https://git.io/vbKK6" + } + }, + jsx: { + syntax: { + name: "@babel/plugin-syntax-jsx", + url: "https://git.io/vb4yA" + }, + transform: { + name: "@babel/preset-react", + url: "https://git.io/JfeDR" + } + }, + importAssertions: { + syntax: { + name: "@babel/plugin-syntax-import-assertions", + url: "https://git.io/JUbkv" + } + }, + moduleStringNames: { + syntax: { + name: "@babel/plugin-syntax-module-string-names", + url: "https://git.io/JTL8G" + } + }, + numericSeparator: { + syntax: { + name: "@babel/plugin-syntax-numeric-separator", + url: "https://git.io/vb4Sq" + }, + transform: { + name: "@babel/plugin-proposal-numeric-separator", + url: "https://git.io/vb4yS" + } + }, + optionalChaining: { + syntax: { + name: "@babel/plugin-syntax-optional-chaining", + url: "https://git.io/vb4Sc" + }, + transform: { + name: "@babel/plugin-proposal-optional-chaining", + url: "https://git.io/vb4Sk" + } + }, + pipelineOperator: { + syntax: { + name: "@babel/plugin-syntax-pipeline-operator", + url: "https://git.io/vb4yj" + }, + transform: { + name: "@babel/plugin-proposal-pipeline-operator", + url: "https://git.io/vb4SU" + } + }, + privateIn: { + syntax: { + name: "@babel/plugin-syntax-private-property-in-object", + url: "https://git.io/JfK3q" + }, + transform: { + name: "@babel/plugin-proposal-private-property-in-object", + url: "https://git.io/JfK3O" + } + }, + recordAndTuple: { + syntax: { + name: "@babel/plugin-syntax-record-and-tuple", + url: "https://git.io/JvKp3" + } + }, + throwExpressions: { + syntax: { + name: "@babel/plugin-syntax-throw-expressions", + url: "https://git.io/vb4SJ" + }, + transform: { + name: "@babel/plugin-proposal-throw-expressions", + url: "https://git.io/vb4yF" + } + }, + typescript: { + syntax: { + name: "@babel/plugin-syntax-typescript", + url: "https://git.io/vb4SC" + }, + transform: { + name: "@babel/preset-typescript", + url: "https://git.io/JfeDz" + } + }, + asyncGenerators: { + syntax: { + name: "@babel/plugin-syntax-async-generators", + url: "https://git.io/vb4SY" + }, + transform: { + name: "@babel/plugin-proposal-async-generator-functions", + url: "https://git.io/vb4yp" + } + }, + logicalAssignment: { + syntax: { + name: "@babel/plugin-syntax-logical-assignment-operators", + url: "https://git.io/vAlBp" + }, + transform: { + name: "@babel/plugin-proposal-logical-assignment-operators", + url: "https://git.io/vAlRe" + } + }, + nullishCoalescingOperator: { + syntax: { + name: "@babel/plugin-syntax-nullish-coalescing-operator", + url: "https://git.io/vb4yx" + }, + transform: { + name: "@babel/plugin-proposal-nullish-coalescing-operator", + url: "https://git.io/vb4Se" + } + }, + objectRestSpread: { + syntax: { + name: "@babel/plugin-syntax-object-rest-spread", + url: "https://git.io/vb4y5" + }, + transform: { + name: "@babel/plugin-proposal-object-rest-spread", + url: "https://git.io/vb4Ss" + } + }, + optionalCatchBinding: { + syntax: { + name: "@babel/plugin-syntax-optional-catch-binding", + url: "https://git.io/vb4Sn" + }, + transform: { + name: "@babel/plugin-proposal-optional-catch-binding", + url: "https://git.io/vb4SI" + } + } +}; +pluginNameMap.privateIn.syntax = pluginNameMap.privateIn.transform; + +const getNameURLCombination = ({ + name, + url +}) => `${name} (${url})`; + +function generateMissingPluginMessage(missingPluginName, loc, codeFrame) { + let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame; + const pluginInfo = pluginNameMap[missingPluginName]; + + if (pluginInfo) { + const { + syntax: syntaxPlugin, + transform: transformPlugin + } = pluginInfo; + + if (syntaxPlugin) { + const syntaxPluginInfo = getNameURLCombination(syntaxPlugin); + + if (transformPlugin) { + const transformPluginInfo = getNameURLCombination(transformPlugin); + const sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets"; + helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation. +If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`; + } else { + helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`; + } + } + } + + return helpMessage; +} + +/***/ }), + +/***/ 95145: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +function helpers() { + const data = _interopRequireWildcard(__nccwpck_require__(64643)); + + helpers = function () { + return data; + }; + + return data; +} + +function _generator() { + const data = _interopRequireDefault(__nccwpck_require__(52685)); + + _generator = function () { + return data; + }; + + return data; +} + +function _template() { + const data = _interopRequireDefault(__nccwpck_require__(20153)); + + _template = function () { + return data; + }; + + return data; +} + +function t() { + const data = _interopRequireWildcard(__nccwpck_require__(24479)); + + t = function () { + return data; + }; + + return data; +} + +var _file = _interopRequireDefault(__nccwpck_require__(64451)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +const buildUmdWrapper = replacements => (0, _template().default)` + (function (root, factory) { + if (typeof define === "function" && define.amd) { + define(AMD_ARGUMENTS, factory); + } else if (typeof exports === "object") { + factory(COMMON_ARGUMENTS); + } else { + factory(BROWSER_ARGUMENTS); + } + })(UMD_ROOT, function (FACTORY_PARAMETERS) { + FACTORY_BODY + }); + `(replacements); + +function buildGlobal(allowlist) { + const namespace = t().identifier("babelHelpers"); + const body = []; + const container = t().functionExpression(null, [t().identifier("global")], t().blockStatement(body)); + const tree = t().program([t().expressionStatement(t().callExpression(container, [t().conditionalExpression(t().binaryExpression("===", t().unaryExpression("typeof", t().identifier("global")), t().stringLiteral("undefined")), t().identifier("self"), t().identifier("global"))]))]); + body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().assignmentExpression("=", t().memberExpression(t().identifier("global"), namespace), t().objectExpression([])))])); + buildHelpers(body, namespace, allowlist); + return tree; +} + +function buildModule(allowlist) { + const body = []; + const refs = buildHelpers(body, null, allowlist); + body.unshift(t().exportNamedDeclaration(null, Object.keys(refs).map(name => { + return t().exportSpecifier(t().cloneNode(refs[name]), t().identifier(name)); + }))); + return t().program(body, [], "module"); +} + +function buildUmd(allowlist) { + const namespace = t().identifier("babelHelpers"); + const body = []; + body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().identifier("global"))])); + buildHelpers(body, namespace, allowlist); + return t().program([buildUmdWrapper({ + FACTORY_PARAMETERS: t().identifier("global"), + BROWSER_ARGUMENTS: t().assignmentExpression("=", t().memberExpression(t().identifier("root"), namespace), t().objectExpression([])), + COMMON_ARGUMENTS: t().identifier("exports"), + AMD_ARGUMENTS: t().arrayExpression([t().stringLiteral("exports")]), + FACTORY_BODY: body, + UMD_ROOT: t().identifier("this") + })]); +} + +function buildVar(allowlist) { + const namespace = t().identifier("babelHelpers"); + const body = []; + body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().objectExpression([]))])); + const tree = t().program(body); + buildHelpers(body, namespace, allowlist); + body.push(t().expressionStatement(namespace)); + return tree; +} + +function buildHelpers(body, namespace, allowlist) { + const getHelperReference = name => { + return namespace ? t().memberExpression(namespace, t().identifier(name)) : t().identifier(`_${name}`); + }; + + const refs = {}; + helpers().list.forEach(function (name) { + if (allowlist && allowlist.indexOf(name) < 0) return; + const ref = refs[name] = getHelperReference(name); + helpers().ensure(name, _file.default); + const { + nodes + } = helpers().get(name, getHelperReference, ref); + body.push(...nodes); + }); + return refs; +} + +function _default(allowlist, outputType = "global") { + let tree; + const build = { + global: buildGlobal, + module: buildModule, + umd: buildUmd, + var: buildVar + }[outputType]; + + if (build) { + tree = build(allowlist); + } else { + throw new Error(`Unsupported output type ${outputType}`); + } + + return (0, _generator().default)(tree).code; +} + +/***/ }), + +/***/ 21588: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformFromAstAsync = exports.transformFromAstSync = exports.transformFromAst = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _config = _interopRequireDefault(__nccwpck_require__(36797)); + +var _transformation = __nccwpck_require__(28675); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const transformFromAstRunner = (0, _gensync().default)(function* (ast, code, opts) { + const config = yield* (0, _config.default)(opts); + if (config === null) return null; + if (!ast) throw new Error("No AST given"); + return yield* (0, _transformation.run)(config, code, ast); +}); + +const transformFromAst = function transformFromAst(ast, code, opts, callback) { + if (typeof opts === "function") { + callback = opts; + opts = undefined; + } + + if (callback === undefined) { + return transformFromAstRunner.sync(ast, code, opts); + } + + transformFromAstRunner.errback(ast, code, opts, callback); +}; + +exports.transformFromAst = transformFromAst; +const transformFromAstSync = transformFromAstRunner.sync; +exports.transformFromAstSync = transformFromAstSync; +const transformFromAstAsync = transformFromAstRunner.async; +exports.transformFromAstAsync = transformFromAstAsync; + +/***/ }), + +/***/ 17673: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformFileAsync = exports.transformFileSync = exports.transformFile = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _config = _interopRequireDefault(__nccwpck_require__(36797)); + +var _transformation = __nccwpck_require__(28675); + +var fs = _interopRequireWildcard(__nccwpck_require__(6524)); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +({}); +const transformFileRunner = (0, _gensync().default)(function* (filename, opts) { + const options = Object.assign({}, opts, { + filename + }); + const config = yield* (0, _config.default)(options); + if (config === null) return null; + const code = yield* fs.readFile(filename, "utf8"); + return yield* (0, _transformation.run)(config, code); +}); +const transformFile = transformFileRunner.errback; +exports.transformFile = transformFile; +const transformFileSync = transformFileRunner.sync; +exports.transformFileSync = transformFileSync; +const transformFileAsync = transformFileRunner.async; +exports.transformFileAsync = transformFileAsync; + +/***/ }), + +/***/ 2016: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformAsync = exports.transformSync = exports.transform = void 0; + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(686)); + + _gensync = function () { + return data; + }; + + return data; +} + +var _config = _interopRequireDefault(__nccwpck_require__(36797)); + +var _transformation = __nccwpck_require__(28675); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const transformRunner = (0, _gensync().default)(function* transform(code, opts) { + const config = yield* (0, _config.default)(opts); + if (config === null) return null; + return yield* (0, _transformation.run)(config, code); +}); + +const transform = function transform(code, opts, callback) { + if (typeof opts === "function") { + callback = opts; + opts = undefined; + } + + if (callback === undefined) return transformRunner.sync(code, opts); + transformRunner.errback(code, opts, callback); +}; + +exports.transform = transform; +const transformSync = transformRunner.sync; +exports.transformSync = transformSync; +const transformAsync = transformRunner.async; +exports.transformAsync = transformAsync; + +/***/ }), + +/***/ 14819: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = loadBlockHoistPlugin; + +function _sortBy() { + const data = _interopRequireDefault(__nccwpck_require__(39625)); + + _sortBy = function () { + return data; + }; + + return data; +} + +var _config = _interopRequireDefault(__nccwpck_require__(36797)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +let LOADED_PLUGIN; + +function loadBlockHoistPlugin() { + if (!LOADED_PLUGIN) { + const config = _config.default.sync({ + babelrc: false, + configFile: false, + plugins: [blockHoistPlugin] + }); + + LOADED_PLUGIN = config ? config.passes[0][0] : undefined; + if (!LOADED_PLUGIN) throw new Error("Assertion failure"); + } + + return LOADED_PLUGIN; +} + +const blockHoistPlugin = { + name: "internal.blockHoist", + visitor: { + Block: { + exit({ + node + }) { + let hasChange = false; + + for (let i = 0; i < node.body.length; i++) { + const bodyNode = node.body[i]; + + if ((bodyNode == null ? void 0 : bodyNode._blockHoist) != null) { + hasChange = true; + break; + } + } + + if (!hasChange) return; + node.body = (0, _sortBy().default)(node.body, function (bodyNode) { + let priority = bodyNode == null ? void 0 : bodyNode._blockHoist; + if (priority == null) priority = 1; + if (priority === true) priority = 2; + return -1 * priority; + }); + } + + } + } +}; + +/***/ }), + +/***/ 64451: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +function helpers() { + const data = _interopRequireWildcard(__nccwpck_require__(64643)); + + helpers = function () { + return data; + }; + + return data; +} + +function _traverse() { + const data = _interopRequireWildcard(__nccwpck_require__(8631)); + + _traverse = function () { + return data; + }; + + return data; +} + +function _codeFrame() { + const data = __nccwpck_require__(47548); + + _codeFrame = function () { + return data; + }; + + return data; +} + +function t() { + const data = _interopRequireWildcard(__nccwpck_require__(24479)); + + t = function () { + return data; + }; + + return data; +} + +function _helperModuleTransforms() { + const data = __nccwpck_require__(67797); + + _helperModuleTransforms = function () { + return data; + }; + + return data; +} + +function _semver() { + const data = _interopRequireDefault(__nccwpck_require__(17927)); + + _semver = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +const errorVisitor = { + enter(path, state) { + const loc = path.node.loc; + + if (loc) { + state.loc = loc; + path.stop(); + } + } + +}; + +class File { + constructor(options, { + code, + ast, + inputMap + }) { + this._map = new Map(); + this.opts = void 0; + this.declarations = {}; + this.path = null; + this.ast = {}; + this.scope = void 0; + this.metadata = {}; + this.code = ""; + this.inputMap = null; + this.hub = { + file: this, + getCode: () => this.code, + getScope: () => this.scope, + addHelper: this.addHelper.bind(this), + buildError: this.buildCodeFrameError.bind(this) + }; + this.opts = options; + this.code = code; + this.ast = ast; + this.inputMap = inputMap; + this.path = _traverse().NodePath.get({ + hub: this.hub, + parentPath: null, + parent: this.ast, + container: this.ast, + key: "program" + }).setContext(); + this.scope = this.path.scope; + } + + get shebang() { + const { + interpreter + } = this.path.node; + return interpreter ? interpreter.value : ""; + } + + set shebang(value) { + if (value) { + this.path.get("interpreter").replaceWith(t().interpreterDirective(value)); + } else { + this.path.get("interpreter").remove(); + } + } + + set(key, val) { + if (key === "helpersNamespace") { + throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'."); + } + + this._map.set(key, val); + } + + get(key) { + return this._map.get(key); + } + + has(key) { + return this._map.has(key); + } + + getModuleName() { + return (0, _helperModuleTransforms().getModuleName)(this.opts, this.opts); + } + + addImport() { + throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'."); + } + + availableHelper(name, versionRange) { + let minVersion; + + try { + minVersion = helpers().minVersion(name); + } catch (err) { + if (err.code !== "BABEL_HELPER_UNKNOWN") throw err; + return false; + } + + if (typeof versionRange !== "string") return true; + if (_semver().default.valid(versionRange)) versionRange = `^${versionRange}`; + return !_semver().default.intersects(`<${minVersion}`, versionRange) && !_semver().default.intersects(`>=8.0.0`, versionRange); + } + + addHelper(name) { + const declar = this.declarations[name]; + if (declar) return t().cloneNode(declar); + const generator = this.get("helperGenerator"); + + if (generator) { + const res = generator(name); + if (res) return res; + } + + helpers().ensure(name, File); + const uid = this.declarations[name] = this.scope.generateUidIdentifier(name); + const dependencies = {}; + + for (const dep of helpers().getDependencies(name)) { + dependencies[dep] = this.addHelper(dep); + } + + const { + nodes, + globals + } = helpers().get(name, dep => dependencies[dep], uid, Object.keys(this.scope.getAllBindings())); + globals.forEach(name => { + if (this.path.scope.hasBinding(name, true)) { + this.path.scope.rename(name); + } + }); + nodes.forEach(node => { + node._compact = true; + }); + this.path.unshiftContainer("body", nodes); + this.path.get("body").forEach(path => { + if (nodes.indexOf(path.node) === -1) return; + if (path.isVariableDeclaration()) this.scope.registerDeclaration(path); + }); + return uid; + } + + addTemplateObject() { + throw new Error("This function has been moved into the template literal transform itself."); + } + + buildCodeFrameError(node, msg, Error = SyntaxError) { + let loc = node && (node.loc || node._loc); + + if (!loc && node) { + const state = { + loc: null + }; + (0, _traverse().default)(node, errorVisitor, this.scope, state); + loc = state.loc; + let txt = "This is an error on an internal node. Probably an internal error."; + if (loc) txt += " Location has been estimated."; + msg += ` (${txt})`; + } + + if (loc) { + const { + highlightCode = true + } = this.opts; + msg += "\n" + (0, _codeFrame().codeFrameColumns)(this.code, { + start: { + line: loc.start.line, + column: loc.start.column + 1 + }, + end: loc.end && loc.start.line === loc.end.line ? { + line: loc.end.line, + column: loc.end.column + 1 + } : undefined + }, { + highlightCode + }); + } + + return new Error(msg); + } + +} + +exports["default"] = File; + +/***/ }), + +/***/ 31164: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = generateCode; + +function _convertSourceMap() { + const data = _interopRequireDefault(__nccwpck_require__(12270)); + + _convertSourceMap = function () { + return data; + }; + + return data; +} + +function _generator() { + const data = _interopRequireDefault(__nccwpck_require__(52685)); + + _generator = function () { + return data; + }; + + return data; +} + +var _mergeMap = _interopRequireDefault(__nccwpck_require__(7129)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function generateCode(pluginPasses, file) { + const { + opts, + ast, + code, + inputMap + } = file; + const results = []; + + for (const plugins of pluginPasses) { + for (const plugin of plugins) { + const { + generatorOverride + } = plugin; + + if (generatorOverride) { + const result = generatorOverride(ast, opts.generatorOpts, code, _generator().default); + if (result !== undefined) results.push(result); + } + } + } + + let result; + + if (results.length === 0) { + result = (0, _generator().default)(ast, opts.generatorOpts, code); + } else if (results.length === 1) { + result = results[0]; + + if (typeof result.then === "function") { + throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); + } + } else { + throw new Error("More than one plugin attempted to override codegen."); + } + + let { + code: outputCode, + map: outputMap + } = result; + + if (outputMap && inputMap) { + outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap); + } + + if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") { + outputCode += "\n" + _convertSourceMap().default.fromObject(outputMap).toComment(); + } + + if (opts.sourceMaps === "inline") { + outputMap = null; + } + + return { + outputCode, + outputMap + }; +} + +/***/ }), + +/***/ 7129: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = mergeSourceMap; + +function _sourceMap() { + const data = _interopRequireDefault(__nccwpck_require__(45018)); + + _sourceMap = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function mergeSourceMap(inputMap, map) { + const input = buildMappingData(inputMap); + const output = buildMappingData(map); + const mergedGenerator = new (_sourceMap().default.SourceMapGenerator)(); + + for (const { + source + } of input.sources) { + if (typeof source.content === "string") { + mergedGenerator.setSourceContent(source.path, source.content); + } + } + + if (output.sources.length === 1) { + const defaultSource = output.sources[0]; + const insertedMappings = new Map(); + eachInputGeneratedRange(input, (generated, original, source) => { + eachOverlappingGeneratedOutputRange(defaultSource, generated, item => { + const key = makeMappingKey(item); + if (insertedMappings.has(key)) return; + insertedMappings.set(key, item); + mergedGenerator.addMapping({ + source: source.path, + original: { + line: original.line, + column: original.columnStart + }, + generated: { + line: item.line, + column: item.columnStart + }, + name: original.name + }); + }); + }); + + for (const item of insertedMappings.values()) { + if (item.columnEnd === Infinity) { + continue; + } + + const clearItem = { + line: item.line, + columnStart: item.columnEnd + }; + const key = makeMappingKey(clearItem); + + if (insertedMappings.has(key)) { + continue; + } + + mergedGenerator.addMapping({ + generated: { + line: clearItem.line, + column: clearItem.columnStart + } + }); + } + } + + const result = mergedGenerator.toJSON(); + + if (typeof input.sourceRoot === "string") { + result.sourceRoot = input.sourceRoot; + } + + return result; +} + +function makeMappingKey(item) { + return `${item.line}/${item.columnStart}`; +} + +function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) { + const overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange); + + for (const { + generated + } of overlappingOriginal) { + for (const item of generated) { + callback(item); + } + } +} + +function filterApplicableOriginalRanges({ + mappings +}, { + line, + columnStart, + columnEnd +}) { + return filterSortedArray(mappings, ({ + original: outOriginal + }) => { + if (line > outOriginal.line) return -1; + if (line < outOriginal.line) return 1; + if (columnStart >= outOriginal.columnEnd) return -1; + if (columnEnd <= outOriginal.columnStart) return 1; + return 0; + }); +} + +function eachInputGeneratedRange(map, callback) { + for (const { + source, + mappings + } of map.sources) { + for (const { + original, + generated + } of mappings) { + for (const item of generated) { + callback(item, original, source); + } + } + } +} + +function buildMappingData(map) { + const consumer = new (_sourceMap().default.SourceMapConsumer)(Object.assign({}, map, { + sourceRoot: null + })); + const sources = new Map(); + const mappings = new Map(); + let last = null; + consumer.computeColumnSpans(); + consumer.eachMapping(m => { + if (m.originalLine === null) return; + let source = sources.get(m.source); + + if (!source) { + source = { + path: m.source, + content: consumer.sourceContentFor(m.source, true) + }; + sources.set(m.source, source); + } + + let sourceData = mappings.get(source); + + if (!sourceData) { + sourceData = { + source, + mappings: [] + }; + mappings.set(source, sourceData); + } + + const obj = { + line: m.originalLine, + columnStart: m.originalColumn, + columnEnd: Infinity, + name: m.name + }; + + if (last && last.source === source && last.mapping.line === m.originalLine) { + last.mapping.columnEnd = m.originalColumn; + } + + last = { + source, + mapping: obj + }; + sourceData.mappings.push({ + original: obj, + generated: consumer.allGeneratedPositionsFor({ + source: m.source, + line: m.originalLine, + column: m.originalColumn + }).map(item => ({ + line: item.line, + columnStart: item.column, + columnEnd: item.lastColumn + 1 + })) + }); + }, null, _sourceMap().default.SourceMapConsumer.ORIGINAL_ORDER); + return { + file: map.file, + sourceRoot: map.sourceRoot, + sources: Array.from(mappings.values()) + }; +} + +function findInsertionLocation(array, callback) { + let left = 0; + let right = array.length; + + while (left < right) { + const mid = Math.floor((left + right) / 2); + const item = array[mid]; + const result = callback(item); + + if (result === 0) { + left = mid; + break; + } + + if (result >= 0) { + right = mid; + } else { + left = mid + 1; + } + } + + let i = left; + + if (i < array.length) { + while (i >= 0 && callback(array[i]) >= 0) { + i--; + } + + return i + 1; + } + + return i; +} + +function filterSortedArray(array, callback) { + const start = findInsertionLocation(array, callback); + const results = []; + + for (let i = start; i < array.length && callback(array[i]) === 0; i++) { + results.push(array[i]); + } + + return results; +} + +/***/ }), + +/***/ 28675: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.run = run; + +function _traverse() { + const data = _interopRequireDefault(__nccwpck_require__(8631)); + + _traverse = function () { + return data; + }; + + return data; +} + +var _pluginPass = _interopRequireDefault(__nccwpck_require__(40214)); + +var _blockHoistPlugin = _interopRequireDefault(__nccwpck_require__(14819)); + +var _normalizeOpts = _interopRequireDefault(__nccwpck_require__(48587)); + +var _normalizeFile = _interopRequireDefault(__nccwpck_require__(98352)); + +var _generate = _interopRequireDefault(__nccwpck_require__(31164)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function* run(config, code, ast) { + const file = yield* (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code, ast); + const opts = file.opts; + + try { + yield* transformFile(file, config.passes); + } catch (e) { + var _opts$filename; + + e.message = `${(_opts$filename = opts.filename) != null ? _opts$filename : "unknown"}: ${e.message}`; + + if (!e.code) { + e.code = "BABEL_TRANSFORM_ERROR"; + } + + throw e; + } + + let outputCode, outputMap; + + try { + if (opts.code !== false) { + ({ + outputCode, + outputMap + } = (0, _generate.default)(config.passes, file)); + } + } catch (e) { + var _opts$filename2; + + e.message = `${(_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown"}: ${e.message}`; + + if (!e.code) { + e.code = "BABEL_GENERATE_ERROR"; + } + + throw e; + } + + return { + metadata: file.metadata, + options: opts, + ast: opts.ast === true ? file.ast : null, + code: outputCode === undefined ? null : outputCode, + map: outputMap === undefined ? null : outputMap, + sourceType: file.ast.program.sourceType + }; +} + +function* transformFile(file, pluginPasses) { + for (const pluginPairs of pluginPasses) { + const passPairs = []; + const passes = []; + const visitors = []; + + for (const plugin of pluginPairs.concat([(0, _blockHoistPlugin.default)()])) { + const pass = new _pluginPass.default(file, plugin.key, plugin.options); + passPairs.push([plugin, pass]); + passes.push(pass); + visitors.push(plugin.visitor); + } + + for (const [plugin, pass] of passPairs) { + const fn = plugin.pre; + + if (fn) { + const result = fn.call(pass, file); + yield* []; + + if (isThenable(result)) { + throw new Error(`You appear to be using an plugin with an async .pre, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + } + } + + const visitor = _traverse().default.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod); + + (0, _traverse().default)(file.ast, visitor, file.scope); + + for (const [plugin, pass] of passPairs) { + const fn = plugin.post; + + if (fn) { + const result = fn.call(pass, file); + yield* []; + + if (isThenable(result)) { + throw new Error(`You appear to be using an plugin with an async .post, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + } + } + } +} + +function isThenable(val) { + return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; +} + +/***/ }), + +/***/ 98352: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = normalizeFile; + +function _fs() { + const data = _interopRequireDefault(__nccwpck_require__(57147)); + + _fs = function () { + return data; + }; + + return data; +} + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(67984)); + + _debug = function () { + return data; + }; + + return data; +} + +function _cloneDeep() { + const data = _interopRequireDefault(__nccwpck_require__(35026)); + + _cloneDeep = function () { + return data; + }; + + return data; +} + +function t() { + const data = _interopRequireWildcard(__nccwpck_require__(24479)); + + t = function () { + return data; + }; + + return data; +} + +function _convertSourceMap() { + const data = _interopRequireDefault(__nccwpck_require__(12270)); + + _convertSourceMap = function () { + return data; + }; + + return data; +} + +var _file = _interopRequireDefault(__nccwpck_require__(64451)); + +var _parser = _interopRequireDefault(__nccwpck_require__(38554)); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const debug = (0, _debug().default)("babel:transform:file"); +const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000; + +function* normalizeFile(pluginPasses, options, code, ast) { + code = `${code || ""}`; + + if (ast) { + if (ast.type === "Program") { + ast = t().file(ast, [], []); + } else if (ast.type !== "File") { + throw new Error("AST root must be a Program or File node"); + } + + const { + cloneInputAst + } = options; + + if (cloneInputAst) { + ast = (0, _cloneDeep().default)(ast); + } + } else { + ast = yield* (0, _parser.default)(pluginPasses, options, code); + } + + let inputMap = null; + + if (options.inputSourceMap !== false) { + if (typeof options.inputSourceMap === "object") { + inputMap = _convertSourceMap().default.fromObject(options.inputSourceMap); + } + + if (!inputMap) { + const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast); + + if (lastComment) { + try { + inputMap = _convertSourceMap().default.fromComment(lastComment); + } catch (err) { + debug("discarding unknown inline input sourcemap", err); + } + } + } + + if (!inputMap) { + const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast); + + if (typeof options.filename === "string" && lastComment) { + try { + const match = EXTERNAL_SOURCEMAP_REGEX.exec(lastComment); + + const inputMapContent = _fs().default.readFileSync(_path().default.resolve(_path().default.dirname(options.filename), match[1])); + + if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) { + debug("skip merging input map > 1 MB"); + } else { + inputMap = _convertSourceMap().default.fromJSON(inputMapContent); + } + } catch (err) { + debug("discarding unknown file input sourcemap", err); + } + } else if (lastComment) { + debug("discarding un-loadable file input sourcemap"); + } + } + } + + return new _file.default(options, { + code, + ast, + inputMap + }); +} + +const INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/; +const EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/; + +function extractCommentsFromList(regex, comments, lastComment) { + if (comments) { + comments = comments.filter(({ + value + }) => { + if (regex.test(value)) { + lastComment = value; + return false; + } + + return true; + }); + } + + return [comments, lastComment]; +} + +function extractComments(regex, ast) { + let lastComment = null; + t().traverseFast(ast, node => { + [node.leadingComments, lastComment] = extractCommentsFromList(regex, node.leadingComments, lastComment); + [node.innerComments, lastComment] = extractCommentsFromList(regex, node.innerComments, lastComment); + [node.trailingComments, lastComment] = extractCommentsFromList(regex, node.trailingComments, lastComment); + }); + return lastComment; +} + +/***/ }), + +/***/ 48587: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = normalizeOptions; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(71017)); + + _path = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function normalizeOptions(config) { + const { + filename, + cwd, + filenameRelative = typeof filename === "string" ? _path().default.relative(cwd, filename) : "unknown", + sourceType = "module", + inputSourceMap, + sourceMaps = !!inputSourceMap, + moduleRoot, + sourceRoot = moduleRoot, + sourceFileName = _path().default.basename(filenameRelative), + comments = true, + compact = "auto" + } = config.options; + const opts = config.options; + const options = Object.assign({}, opts, { + parserOpts: Object.assign({ + sourceType: _path().default.extname(filenameRelative) === ".mjs" ? "module" : sourceType, + sourceFileName: filename, + plugins: [] + }, opts.parserOpts), + generatorOpts: Object.assign({ + filename, + auxiliaryCommentBefore: opts.auxiliaryCommentBefore, + auxiliaryCommentAfter: opts.auxiliaryCommentAfter, + retainLines: opts.retainLines, + comments, + shouldPrintComment: opts.shouldPrintComment, + compact, + minified: opts.minified, + sourceMaps, + sourceRoot, + sourceFileName + }, opts.generatorOpts) + }); + + for (const plugins of config.passes) { + for (const plugin of plugins) { + if (plugin.manipulateOptions) { + plugin.manipulateOptions(options, options.parserOpts); + } + } + } + + return options; +} + +/***/ }), + +/***/ 40214: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +class PluginPass { + constructor(file, key, options) { + this._map = new Map(); + this.key = void 0; + this.file = void 0; + this.opts = void 0; + this.cwd = void 0; + this.filename = void 0; + this.key = key; + this.file = file; + this.opts = options || {}; + this.cwd = file.opts.cwd; + this.filename = file.opts.filename; + } + + set(key, val) { + this._map.set(key, val); + } + + get(key) { + return this._map.get(key); + } + + availableHelper(name, versionRange) { + return this.file.availableHelper(name, versionRange); + } + + addHelper(name) { + return this.file.addHelper(name); + } + + addImport() { + return this.file.addImport(); + } + + getModuleName() { + return this.file.getModuleName(); + } + + buildCodeFrameError(node, msg, Error) { + return this.file.buildCodeFrameError(node, msg, Error); + } + +} + +exports["default"] = PluginPass; + +/***/ }), + +/***/ 17927: +/***/ ((module, exports) => { + +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +// The actual regexps go on exports.re +var re = exports.re = [] +var src = exports.src = [] +var R = 0 + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +var NUMERICIDENTIFIER = R++ +src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' +var NUMERICIDENTIFIERLOOSE = R++ +src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +var NONNUMERICIDENTIFIER = R++ +src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +var MAINVERSION = R++ +src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')' + +var MAINVERSIONLOOSE = R++ +src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +var PRERELEASEIDENTIFIER = R++ +src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +var PRERELEASEIDENTIFIERLOOSE = R++ +src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +var PRERELEASE = R++ +src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))' + +var PRERELEASELOOSE = R++ +src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +var BUILDIDENTIFIER = R++ +src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +var BUILD = R++ +src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +var FULL = R++ +var FULLPLAIN = 'v?' + src[MAINVERSION] + + src[PRERELEASE] + '?' + + src[BUILD] + '?' + +src[FULL] = '^' + FULLPLAIN + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + + src[PRERELEASELOOSE] + '?' + + src[BUILD] + '?' + +var LOOSE = R++ +src[LOOSE] = '^' + LOOSEPLAIN + '$' + +var GTLT = R++ +src[GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +var XRANGEIDENTIFIERLOOSE = R++ +src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +var XRANGEIDENTIFIER = R++ +src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*' + +var XRANGEPLAIN = R++ +src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGEPLAINLOOSE = R++ +src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGE = R++ +src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' +var XRANGELOOSE = R++ +src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +var COERCE = R++ +src[COERCE] = '(?:^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +var LONETILDE = R++ +src[LONETILDE] = '(?:~>?)' + +var TILDETRIM = R++ +src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' +re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') +var tildeTrimReplace = '$1~' + +var TILDE = R++ +src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' +var TILDELOOSE = R++ +src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +var LONECARET = R++ +src[LONECARET] = '(?:\\^)' + +var CARETTRIM = R++ +src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' +re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') +var caretTrimReplace = '$1^' + +var CARET = R++ +src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' +var CARETLOOSE = R++ +src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +var COMPARATORLOOSE = R++ +src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$' +var COMPARATOR = R++ +src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +var COMPARATORTRIM = R++ +src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +var HYPHENRANGE = R++ +src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAIN] + ')' + + '\\s*$' + +var HYPHENRANGELOOSE = R++ +src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +var STAR = R++ +src[STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? re[LOOSE] : re[FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compare(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.rcompare(a, b, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY) { + return true + } + + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return thisComparators.every(function (thisComparator) { + return range.set.some(function (rangeComparators) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + }) + }) +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? re[TILDELOOSE] : re[TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[CARETLOOSE] : re[CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? re[XRANGELOOSE] : re[XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + } else if (xm) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (xp) { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[STAR], '') +} + +// This function is passed to string.replace(re[HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version) { + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + var match = version.match(re[COERCE]) + + if (match == null) { + return null + } + + return parse(match[1] + + '.' + (match[2] || '0') + + '.' + (match[3] || '0')) +} + + +/***/ }), + +/***/ 76563: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +const SPACES_RE = /^[ \t]+$/; + +class Buffer { + constructor(map) { + this._map = null; + this._buf = ""; + this._last = 0; + this._queue = []; + this._position = { + line: 1, + column: 0 + }; + this._sourcePosition = { + identifierName: null, + line: null, + column: null, + filename: null + }; + this._disallowedPop = null; + this._map = map; + } + + get() { + this._flush(); + + const map = this._map; + const result = { + code: this._buf.trimRight(), + map: null, + rawMappings: map == null ? void 0 : map.getRawMappings() + }; + + if (map) { + Object.defineProperty(result, "map", { + configurable: true, + enumerable: true, + + get() { + return this.map = map.get(); + }, + + set(value) { + Object.defineProperty(this, "map", { + value, + writable: true + }); + } + + }); + } + + return result; + } + + append(str) { + this._flush(); + + const { + line, + column, + filename, + identifierName, + force + } = this._sourcePosition; + + this._append(str, line, column, identifierName, filename, force); + } + + queue(str) { + if (str === "\n") { + while (this._queue.length > 0 && SPACES_RE.test(this._queue[0][0])) { + this._queue.shift(); + } + } + + const { + line, + column, + filename, + identifierName, + force + } = this._sourcePosition; + + this._queue.unshift([str, line, column, identifierName, filename, force]); + } + + _flush() { + let item; + + while (item = this._queue.pop()) { + this._append(...item); + } + } + + _append(str, line, column, identifierName, filename, force) { + this._buf += str; + this._last = str.charCodeAt(str.length - 1); + let i = str.indexOf("\n"); + let last = 0; + + if (i !== 0) { + this._mark(line, column, identifierName, filename, force); + } + + while (i !== -1) { + this._position.line++; + this._position.column = 0; + last = i + 1; + + if (last < str.length) { + this._mark(++line, 0, identifierName, filename, force); + } + + i = str.indexOf("\n", last); + } + + this._position.column += str.length - last; + } + + _mark(line, column, identifierName, filename, force) { + var _this$_map; + + (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force); + } + + removeTrailingNewline() { + if (this._queue.length > 0 && this._queue[0][0] === "\n") { + this._queue.shift(); + } + } + + removeLastSemicolon() { + if (this._queue.length > 0 && this._queue[0][0] === ";") { + this._queue.shift(); + } + } + + getLastChar() { + let last; + + if (this._queue.length > 0) { + const str = this._queue[0][0]; + last = str.charCodeAt(0); + } else { + last = this._last; + } + + return last; + } + + endsWithCharAndNewline() { + const queue = this._queue; + + if (queue.length > 0) { + const last = queue[0][0]; + const lastCp = last.charCodeAt(0); + if (lastCp !== 10) return; + + if (queue.length > 1) { + const secondLast = queue[1][0]; + return secondLast.charCodeAt(0); + } else { + return this._last; + } + } + } + + hasContent() { + return this._queue.length > 0 || !!this._last; + } + + exactSource(loc, cb) { + this.source("start", loc, true); + cb(); + this.source("end", loc); + + this._disallowPop("start", loc); + } + + source(prop, loc, force) { + if (prop && !loc) return; + + this._normalizePosition(prop, loc, this._sourcePosition, force); + } + + withSource(prop, loc, cb) { + if (!this._map) return cb(); + const originalLine = this._sourcePosition.line; + const originalColumn = this._sourcePosition.column; + const originalFilename = this._sourcePosition.filename; + const originalIdentifierName = this._sourcePosition.identifierName; + this.source(prop, loc); + cb(); + + if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) { + this._sourcePosition.line = originalLine; + this._sourcePosition.column = originalColumn; + this._sourcePosition.filename = originalFilename; + this._sourcePosition.identifierName = originalIdentifierName; + this._sourcePosition.force = false; + this._disallowedPop = null; + } + } + + _disallowPop(prop, loc) { + if (prop && !loc) return; + this._disallowedPop = this._normalizePosition(prop, loc); + } + + _normalizePosition(prop, loc, targetObj, force) { + const pos = loc ? loc[prop] : null; + + if (targetObj === undefined) { + targetObj = { + identifierName: null, + line: null, + column: null, + filename: null, + force: false + }; + } + + const origLine = targetObj.line; + const origColumn = targetObj.column; + const origFilename = targetObj.filename; + targetObj.identifierName = prop === "start" && (loc == null ? void 0 : loc.identifierName) || null; + targetObj.line = pos == null ? void 0 : pos.line; + targetObj.column = pos == null ? void 0 : pos.column; + targetObj.filename = loc == null ? void 0 : loc.filename; + + if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) { + targetObj.force = force; + } + + return targetObj; + } + + getCurrentColumn() { + const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); + + const lastIndex = extra.lastIndexOf("\n"); + return lastIndex === -1 ? this._position.column + extra.length : extra.length - 1 - lastIndex; + } + + getCurrentLine() { + const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); + + let count = 0; + + for (let i = 0; i < extra.length; i++) { + if (extra[i] === "\n") count++; + } + + return this._position.line + count; + } + +} + +exports["default"] = Buffer; + +/***/ }), + +/***/ 26601: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.File = File; +exports.Program = Program; +exports.BlockStatement = BlockStatement; +exports.Directive = Directive; +exports.DirectiveLiteral = DirectiveLiteral; +exports.InterpreterDirective = InterpreterDirective; +exports.Placeholder = Placeholder; + +var t = __nccwpck_require__(24479); + +function File(node) { + if (node.program) { + this.print(node.program.interpreter, node); + } + + this.print(node.program, node); +} + +function Program(node) { + this.printInnerComments(node, false); + this.printSequence(node.directives, node); + if (node.directives && node.directives.length) this.newline(); + this.printSequence(node.body, node); +} + +function BlockStatement(node) { + var _node$directives; + + this.token("{"); + this.printInnerComments(node); + const hasDirectives = (_node$directives = node.directives) == null ? void 0 : _node$directives.length; + + if (node.body.length || hasDirectives) { + this.newline(); + this.printSequence(node.directives, node, { + indent: true + }); + if (hasDirectives) this.newline(); + this.printSequence(node.body, node, { + indent: true + }); + this.removeTrailingNewline(); + this.source("end", node.loc); + if (!this.endsWith(10)) this.newline(); + this.rightBrace(); + } else { + this.source("end", node.loc); + this.token("}"); + } +} + +function Directive(node) { + this.print(node.value, node); + this.semicolon(); +} + +const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/; +const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/; + +function DirectiveLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (raw != null) { + this.token(raw); + return; + } + + const { + value + } = node; + + if (!unescapedDoubleQuoteRE.test(value)) { + this.token(`"${value}"`); + } else if (!unescapedSingleQuoteRE.test(value)) { + this.token(`'${value}'`); + } else { + throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes."); + } +} + +function InterpreterDirective(node) { + this.token(`#!${node.value}\n`); +} + +function Placeholder(node) { + this.token("%%"); + this.print(node.name); + this.token("%%"); + + if (node.expectedNode === "Statement") { + this.semicolon(); + } +} + +/***/ }), + +/***/ 40675: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration; +exports.ClassBody = ClassBody; +exports.ClassProperty = ClassProperty; +exports.ClassPrivateProperty = ClassPrivateProperty; +exports.ClassMethod = ClassMethod; +exports.ClassPrivateMethod = ClassPrivateMethod; +exports._classMethodHead = _classMethodHead; +exports.StaticBlock = StaticBlock; + +var t = __nccwpck_require__(24479); + +const { + isExportDefaultDeclaration, + isExportNamedDeclaration +} = t; + +function ClassDeclaration(node, parent) { + if (!this.format.decoratorsBeforeExport || !isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) { + this.printJoin(node.decorators, node); + } + + if (node.declare) { + this.word("declare"); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + + this.word("class"); + + if (node.id) { + this.space(); + this.print(node.id, node); + } + + this.print(node.typeParameters, node); + + if (node.superClass) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.superClass, node); + this.print(node.superTypeParameters, node); + } + + if (node.implements) { + this.space(); + this.word("implements"); + this.space(); + this.printList(node.implements, node); + } + + this.space(); + this.print(node.body, node); +} + +function ClassBody(node) { + this.token("{"); + this.printInnerComments(node); + + if (node.body.length === 0) { + this.token("}"); + } else { + this.newline(); + this.indent(); + this.printSequence(node.body, node); + this.dedent(); + if (!this.endsWith(10)) this.newline(); + this.rightBrace(); + } +} + +function ClassProperty(node) { + this.printJoin(node.decorators, node); + this.source("end", node.key.loc); + this.tsPrintClassMemberModifiers(node, true); + + if (node.computed) { + this.token("["); + this.print(node.key, node); + this.token("]"); + } else { + this._variance(node); + + this.print(node.key, node); + } + + if (node.optional) { + this.token("?"); + } + + if (node.definite) { + this.token("!"); + } + + this.print(node.typeAnnotation, node); + + if (node.value) { + this.space(); + this.token("="); + this.space(); + this.print(node.value, node); + } + + this.semicolon(); +} + +function ClassPrivateProperty(node) { + this.printJoin(node.decorators, node); + + if (node.static) { + this.word("static"); + this.space(); + } + + this.print(node.key, node); + this.print(node.typeAnnotation, node); + + if (node.value) { + this.space(); + this.token("="); + this.space(); + this.print(node.value, node); + } + + this.semicolon(); +} + +function ClassMethod(node) { + this._classMethodHead(node); + + this.space(); + this.print(node.body, node); +} + +function ClassPrivateMethod(node) { + this._classMethodHead(node); + + this.space(); + this.print(node.body, node); +} + +function _classMethodHead(node) { + this.printJoin(node.decorators, node); + this.source("end", node.key.loc); + this.tsPrintClassMemberModifiers(node, false); + + this._methodHead(node); +} + +function StaticBlock(node) { + this.word("static"); + this.space(); + this.token("{"); + + if (node.body.length === 0) { + this.token("}"); + } else { + this.newline(); + this.printSequence(node.body, node, { + indent: true + }); + this.rightBrace(); + } +} + +/***/ }), + +/***/ 2262: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UnaryExpression = UnaryExpression; +exports.DoExpression = DoExpression; +exports.ParenthesizedExpression = ParenthesizedExpression; +exports.UpdateExpression = UpdateExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.NewExpression = NewExpression; +exports.SequenceExpression = SequenceExpression; +exports.ThisExpression = ThisExpression; +exports.Super = Super; +exports.Decorator = Decorator; +exports.OptionalMemberExpression = OptionalMemberExpression; +exports.OptionalCallExpression = OptionalCallExpression; +exports.CallExpression = CallExpression; +exports.Import = Import; +exports.EmptyStatement = EmptyStatement; +exports.ExpressionStatement = ExpressionStatement; +exports.AssignmentPattern = AssignmentPattern; +exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; +exports.BindExpression = BindExpression; +exports.MemberExpression = MemberExpression; +exports.MetaProperty = MetaProperty; +exports.PrivateName = PrivateName; +exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier; +exports.ModuleExpression = ModuleExpression; +exports.AwaitExpression = exports.YieldExpression = void 0; + +var t = __nccwpck_require__(24479); + +var n = __nccwpck_require__(83731); + +const { + isCallExpression, + isLiteral, + isMemberExpression, + isNewExpression +} = t; + +function UnaryExpression(node) { + if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" || node.operator === "throw") { + this.word(node.operator); + this.space(); + } else { + this.token(node.operator); + } + + this.print(node.argument, node); +} + +function DoExpression(node) { + if (node.async) { + this.word("async"); + this.space(); + } + + this.word("do"); + this.space(); + this.print(node.body, node); +} + +function ParenthesizedExpression(node) { + this.token("("); + this.print(node.expression, node); + this.token(")"); +} + +function UpdateExpression(node) { + if (node.prefix) { + this.token(node.operator); + this.print(node.argument, node); + } else { + this.startTerminatorless(true); + this.print(node.argument, node); + this.endTerminatorless(); + this.token(node.operator); + } +} + +function ConditionalExpression(node) { + this.print(node.test, node); + this.space(); + this.token("?"); + this.space(); + this.print(node.consequent, node); + this.space(); + this.token(":"); + this.space(); + this.print(node.alternate, node); +} + +function NewExpression(node, parent) { + this.word("new"); + this.space(); + this.print(node.callee, node); + + if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression(parent, { + callee: node + }) && !isMemberExpression(parent) && !isNewExpression(parent)) { + return; + } + + this.print(node.typeArguments, node); + this.print(node.typeParameters, node); + + if (node.optional) { + this.token("?."); + } + + this.token("("); + this.printList(node.arguments, node); + this.token(")"); +} + +function SequenceExpression(node) { + this.printList(node.expressions, node); +} + +function ThisExpression() { + this.word("this"); +} + +function Super() { + this.word("super"); +} + +function Decorator(node) { + this.token("@"); + this.print(node.expression, node); + this.newline(); +} + +function OptionalMemberExpression(node) { + this.print(node.object, node); + + if (!node.computed && isMemberExpression(node.property)) { + throw new TypeError("Got a MemberExpression for MemberExpression property"); + } + + let computed = node.computed; + + if (isLiteral(node.property) && typeof node.property.value === "number") { + computed = true; + } + + if (node.optional) { + this.token("?."); + } + + if (computed) { + this.token("["); + this.print(node.property, node); + this.token("]"); + } else { + if (!node.optional) { + this.token("."); + } + + this.print(node.property, node); + } +} + +function OptionalCallExpression(node) { + this.print(node.callee, node); + this.print(node.typeArguments, node); + this.print(node.typeParameters, node); + + if (node.optional) { + this.token("?."); + } + + this.token("("); + this.printList(node.arguments, node); + this.token(")"); +} + +function CallExpression(node) { + this.print(node.callee, node); + this.print(node.typeArguments, node); + this.print(node.typeParameters, node); + this.token("("); + this.printList(node.arguments, node); + this.token(")"); +} + +function Import() { + this.word("import"); +} + +function buildYieldAwait(keyword) { + return function (node) { + this.word(keyword); + + if (node.delegate) { + this.token("*"); + } + + if (node.argument) { + this.space(); + const terminatorState = this.startTerminatorless(); + this.print(node.argument, node); + this.endTerminatorless(terminatorState); + } + }; +} + +const YieldExpression = buildYieldAwait("yield"); +exports.YieldExpression = YieldExpression; +const AwaitExpression = buildYieldAwait("await"); +exports.AwaitExpression = AwaitExpression; + +function EmptyStatement() { + this.semicolon(true); +} + +function ExpressionStatement(node) { + this.print(node.expression, node); + this.semicolon(); +} + +function AssignmentPattern(node) { + this.print(node.left, node); + if (node.left.optional) this.token("?"); + this.print(node.left.typeAnnotation, node); + this.space(); + this.token("="); + this.space(); + this.print(node.right, node); +} + +function AssignmentExpression(node, parent) { + const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent); + + if (parens) { + this.token("("); + } + + this.print(node.left, node); + this.space(); + + if (node.operator === "in" || node.operator === "instanceof") { + this.word(node.operator); + } else { + this.token(node.operator); + } + + this.space(); + this.print(node.right, node); + + if (parens) { + this.token(")"); + } +} + +function BindExpression(node) { + this.print(node.object, node); + this.token("::"); + this.print(node.callee, node); +} + +function MemberExpression(node) { + this.print(node.object, node); + + if (!node.computed && isMemberExpression(node.property)) { + throw new TypeError("Got a MemberExpression for MemberExpression property"); + } + + let computed = node.computed; + + if (isLiteral(node.property) && typeof node.property.value === "number") { + computed = true; + } + + if (computed) { + this.token("["); + this.print(node.property, node); + this.token("]"); + } else { + this.token("."); + this.print(node.property, node); + } +} + +function MetaProperty(node) { + this.print(node.meta, node); + this.token("."); + this.print(node.property, node); +} + +function PrivateName(node) { + this.token("#"); + this.print(node.id, node); +} + +function V8IntrinsicIdentifier(node) { + this.token("%"); + this.word(node.name); +} + +function ModuleExpression(node) { + this.word("module"); + this.space(); + this.token("{"); + + if (node.body.body.length === 0) { + this.token("}"); + } else { + this.newline(); + this.printSequence(node.body.body, node, { + indent: true + }); + this.rightBrace(); + } +} + +/***/ }), + +/***/ 92566: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnyTypeAnnotation = AnyTypeAnnotation; +exports.ArrayTypeAnnotation = ArrayTypeAnnotation; +exports.BooleanTypeAnnotation = BooleanTypeAnnotation; +exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; +exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; +exports.DeclareClass = DeclareClass; +exports.DeclareFunction = DeclareFunction; +exports.InferredPredicate = InferredPredicate; +exports.DeclaredPredicate = DeclaredPredicate; +exports.DeclareInterface = DeclareInterface; +exports.DeclareModule = DeclareModule; +exports.DeclareModuleExports = DeclareModuleExports; +exports.DeclareTypeAlias = DeclareTypeAlias; +exports.DeclareOpaqueType = DeclareOpaqueType; +exports.DeclareVariable = DeclareVariable; +exports.DeclareExportDeclaration = DeclareExportDeclaration; +exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration; +exports.EnumDeclaration = EnumDeclaration; +exports.EnumBooleanBody = EnumBooleanBody; +exports.EnumNumberBody = EnumNumberBody; +exports.EnumStringBody = EnumStringBody; +exports.EnumSymbolBody = EnumSymbolBody; +exports.EnumDefaultedMember = EnumDefaultedMember; +exports.EnumBooleanMember = EnumBooleanMember; +exports.EnumNumberMember = EnumNumberMember; +exports.EnumStringMember = EnumStringMember; +exports.ExistsTypeAnnotation = ExistsTypeAnnotation; +exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.FunctionTypeParam = FunctionTypeParam; +exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends; +exports._interfaceish = _interfaceish; +exports._variance = _variance; +exports.InterfaceDeclaration = InterfaceDeclaration; +exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation; +exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; +exports.MixedTypeAnnotation = MixedTypeAnnotation; +exports.EmptyTypeAnnotation = EmptyTypeAnnotation; +exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.NumberTypeAnnotation = NumberTypeAnnotation; +exports.StringTypeAnnotation = StringTypeAnnotation; +exports.ThisTypeAnnotation = ThisTypeAnnotation; +exports.TupleTypeAnnotation = TupleTypeAnnotation; +exports.TypeofTypeAnnotation = TypeofTypeAnnotation; +exports.TypeAlias = TypeAlias; +exports.TypeAnnotation = TypeAnnotation; +exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation; +exports.TypeParameter = TypeParameter; +exports.OpaqueType = OpaqueType; +exports.ObjectTypeAnnotation = ObjectTypeAnnotation; +exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot; +exports.ObjectTypeCallProperty = ObjectTypeCallProperty; +exports.ObjectTypeIndexer = ObjectTypeIndexer; +exports.ObjectTypeProperty = ObjectTypeProperty; +exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; +exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; +exports.SymbolTypeAnnotation = SymbolTypeAnnotation; +exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.TypeCastExpression = TypeCastExpression; +exports.Variance = Variance; +exports.VoidTypeAnnotation = VoidTypeAnnotation; +exports.IndexedAccessType = IndexedAccessType; +exports.OptionalIndexedAccessType = OptionalIndexedAccessType; +Object.defineProperty(exports, "NumberLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _types2.NumericLiteral; + } +})); +Object.defineProperty(exports, "StringLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _types2.StringLiteral; + } +})); + +var t = __nccwpck_require__(24479); + +var _modules = __nccwpck_require__(50607); + +var _types2 = __nccwpck_require__(84986); + +const { + isDeclareExportDeclaration, + isStatement +} = t; + +function AnyTypeAnnotation() { + this.word("any"); +} + +function ArrayTypeAnnotation(node) { + this.print(node.elementType, node); + this.token("["); + this.token("]"); +} + +function BooleanTypeAnnotation() { + this.word("boolean"); +} + +function BooleanLiteralTypeAnnotation(node) { + this.word(node.value ? "true" : "false"); +} + +function NullLiteralTypeAnnotation() { + this.word("null"); +} + +function DeclareClass(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.word("class"); + this.space(); + + this._interfaceish(node); +} + +function DeclareFunction(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.word("function"); + this.space(); + this.print(node.id, node); + this.print(node.id.typeAnnotation.typeAnnotation, node); + + if (node.predicate) { + this.space(); + this.print(node.predicate, node); + } + + this.semicolon(); +} + +function InferredPredicate() { + this.token("%"); + this.word("checks"); +} + +function DeclaredPredicate(node) { + this.token("%"); + this.word("checks"); + this.token("("); + this.print(node.value, node); + this.token(")"); +} + +function DeclareInterface(node) { + this.word("declare"); + this.space(); + this.InterfaceDeclaration(node); +} + +function DeclareModule(node) { + this.word("declare"); + this.space(); + this.word("module"); + this.space(); + this.print(node.id, node); + this.space(); + this.print(node.body, node); +} + +function DeclareModuleExports(node) { + this.word("declare"); + this.space(); + this.word("module"); + this.token("."); + this.word("exports"); + this.print(node.typeAnnotation, node); +} + +function DeclareTypeAlias(node) { + this.word("declare"); + this.space(); + this.TypeAlias(node); +} + +function DeclareOpaqueType(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.OpaqueType(node); +} + +function DeclareVariable(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + + this.word("var"); + this.space(); + this.print(node.id, node); + this.print(node.id.typeAnnotation, node); + this.semicolon(); +} + +function DeclareExportDeclaration(node) { + this.word("declare"); + this.space(); + this.word("export"); + this.space(); + + if (node.default) { + this.word("default"); + this.space(); + } + + FlowExportDeclaration.apply(this, arguments); +} + +function DeclareExportAllDeclaration() { + this.word("declare"); + this.space(); + + _modules.ExportAllDeclaration.apply(this, arguments); +} + +function EnumDeclaration(node) { + const { + id, + body + } = node; + this.word("enum"); + this.space(); + this.print(id, node); + this.print(body, node); +} + +function enumExplicitType(context, name, hasExplicitType) { + if (hasExplicitType) { + context.space(); + context.word("of"); + context.space(); + context.word(name); + } + + context.space(); +} + +function enumBody(context, node) { + const { + members + } = node; + context.token("{"); + context.indent(); + context.newline(); + + for (const member of members) { + context.print(member, node); + context.newline(); + } + + if (node.hasUnknownMembers) { + context.token("..."); + context.newline(); + } + + context.dedent(); + context.token("}"); +} + +function EnumBooleanBody(node) { + const { + explicitType + } = node; + enumExplicitType(this, "boolean", explicitType); + enumBody(this, node); +} + +function EnumNumberBody(node) { + const { + explicitType + } = node; + enumExplicitType(this, "number", explicitType); + enumBody(this, node); +} + +function EnumStringBody(node) { + const { + explicitType + } = node; + enumExplicitType(this, "string", explicitType); + enumBody(this, node); +} + +function EnumSymbolBody(node) { + enumExplicitType(this, "symbol", true); + enumBody(this, node); +} + +function EnumDefaultedMember(node) { + const { + id + } = node; + this.print(id, node); + this.token(","); +} + +function enumInitializedMember(context, node) { + const { + id, + init + } = node; + context.print(id, node); + context.space(); + context.token("="); + context.space(); + context.print(init, node); + context.token(","); +} + +function EnumBooleanMember(node) { + enumInitializedMember(this, node); +} + +function EnumNumberMember(node) { + enumInitializedMember(this, node); +} + +function EnumStringMember(node) { + enumInitializedMember(this, node); +} + +function FlowExportDeclaration(node) { + if (node.declaration) { + const declar = node.declaration; + this.print(declar, node); + if (!isStatement(declar)) this.semicolon(); + } else { + this.token("{"); + + if (node.specifiers.length) { + this.space(); + this.printList(node.specifiers, node); + this.space(); + } + + this.token("}"); + + if (node.source) { + this.space(); + this.word("from"); + this.space(); + this.print(node.source, node); + } + + this.semicolon(); + } +} + +function ExistsTypeAnnotation() { + this.token("*"); +} + +function FunctionTypeAnnotation(node, parent) { + this.print(node.typeParameters, node); + this.token("("); + + if (node.this) { + this.word("this"); + this.token(":"); + this.space(); + this.print(node.this.typeAnnotation, node); + + if (node.params.length || node.rest) { + this.token(","); + this.space(); + } + } + + this.printList(node.params, node); + + if (node.rest) { + if (node.params.length) { + this.token(","); + this.space(); + } + + this.token("..."); + this.print(node.rest, node); + } + + this.token(")"); + + if (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction" || parent.type === "ObjectTypeProperty" && parent.method) { + this.token(":"); + } else { + this.space(); + this.token("=>"); + } + + this.space(); + this.print(node.returnType, node); +} + +function FunctionTypeParam(node) { + this.print(node.name, node); + if (node.optional) this.token("?"); + + if (node.name) { + this.token(":"); + this.space(); + } + + this.print(node.typeAnnotation, node); +} + +function InterfaceExtends(node) { + this.print(node.id, node); + this.print(node.typeParameters, node); +} + +function _interfaceish(node) { + var _node$extends; + + this.print(node.id, node); + this.print(node.typeParameters, node); + + if ((_node$extends = node.extends) != null && _node$extends.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(node.extends, node); + } + + if (node.mixins && node.mixins.length) { + this.space(); + this.word("mixins"); + this.space(); + this.printList(node.mixins, node); + } + + if (node.implements && node.implements.length) { + this.space(); + this.word("implements"); + this.space(); + this.printList(node.implements, node); + } + + this.space(); + this.print(node.body, node); +} + +function _variance(node) { + if (node.variance) { + if (node.variance.kind === "plus") { + this.token("+"); + } else if (node.variance.kind === "minus") { + this.token("-"); + } + } +} + +function InterfaceDeclaration(node) { + this.word("interface"); + this.space(); + + this._interfaceish(node); +} + +function andSeparator() { + this.space(); + this.token("&"); + this.space(); +} + +function InterfaceTypeAnnotation(node) { + this.word("interface"); + + if (node.extends && node.extends.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(node.extends, node); + } + + this.space(); + this.print(node.body, node); +} + +function IntersectionTypeAnnotation(node) { + this.printJoin(node.types, node, { + separator: andSeparator + }); +} + +function MixedTypeAnnotation() { + this.word("mixed"); +} + +function EmptyTypeAnnotation() { + this.word("empty"); +} + +function NullableTypeAnnotation(node) { + this.token("?"); + this.print(node.typeAnnotation, node); +} + +function NumberTypeAnnotation() { + this.word("number"); +} + +function StringTypeAnnotation() { + this.word("string"); +} + +function ThisTypeAnnotation() { + this.word("this"); +} + +function TupleTypeAnnotation(node) { + this.token("["); + this.printList(node.types, node); + this.token("]"); +} + +function TypeofTypeAnnotation(node) { + this.word("typeof"); + this.space(); + this.print(node.argument, node); +} + +function TypeAlias(node) { + this.word("type"); + this.space(); + this.print(node.id, node); + this.print(node.typeParameters, node); + this.space(); + this.token("="); + this.space(); + this.print(node.right, node); + this.semicolon(); +} + +function TypeAnnotation(node) { + this.token(":"); + this.space(); + if (node.optional) this.token("?"); + this.print(node.typeAnnotation, node); +} + +function TypeParameterInstantiation(node) { + this.token("<"); + this.printList(node.params, node, {}); + this.token(">"); +} + +function TypeParameter(node) { + this._variance(node); + + this.word(node.name); + + if (node.bound) { + this.print(node.bound, node); + } + + if (node.default) { + this.space(); + this.token("="); + this.space(); + this.print(node.default, node); + } +} + +function OpaqueType(node) { + this.word("opaque"); + this.space(); + this.word("type"); + this.space(); + this.print(node.id, node); + this.print(node.typeParameters, node); + + if (node.supertype) { + this.token(":"); + this.space(); + this.print(node.supertype, node); + } + + if (node.impltype) { + this.space(); + this.token("="); + this.space(); + this.print(node.impltype, node); + } + + this.semicolon(); +} + +function ObjectTypeAnnotation(node) { + if (node.exact) { + this.token("{|"); + } else { + this.token("{"); + } + + const props = [...node.properties, ...(node.callProperties || []), ...(node.indexers || []), ...(node.internalSlots || [])]; + + if (props.length) { + this.space(); + this.printJoin(props, node, { + addNewlines(leading) { + if (leading && !props[0]) return 1; + }, + + indent: true, + statement: true, + iterator: () => { + if (props.length !== 1 || node.inexact) { + this.token(","); + this.space(); + } + } + }); + this.space(); + } + + if (node.inexact) { + this.indent(); + this.token("..."); + + if (props.length) { + this.newline(); + } + + this.dedent(); + } + + if (node.exact) { + this.token("|}"); + } else { + this.token("}"); + } +} + +function ObjectTypeInternalSlot(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this.token("["); + this.token("["); + this.print(node.id, node); + this.token("]"); + this.token("]"); + if (node.optional) this.token("?"); + + if (!node.method) { + this.token(":"); + this.space(); + } + + this.print(node.value, node); +} + +function ObjectTypeCallProperty(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this.print(node.value, node); +} + +function ObjectTypeIndexer(node) { + if (node.static) { + this.word("static"); + this.space(); + } + + this._variance(node); + + this.token("["); + + if (node.id) { + this.print(node.id, node); + this.token(":"); + this.space(); + } + + this.print(node.key, node); + this.token("]"); + this.token(":"); + this.space(); + this.print(node.value, node); +} + +function ObjectTypeProperty(node) { + if (node.proto) { + this.word("proto"); + this.space(); + } + + if (node.static) { + this.word("static"); + this.space(); + } + + if (node.kind === "get" || node.kind === "set") { + this.word(node.kind); + this.space(); + } + + this._variance(node); + + this.print(node.key, node); + if (node.optional) this.token("?"); + + if (!node.method) { + this.token(":"); + this.space(); + } + + this.print(node.value, node); +} + +function ObjectTypeSpreadProperty(node) { + this.token("..."); + this.print(node.argument, node); +} + +function QualifiedTypeIdentifier(node) { + this.print(node.qualification, node); + this.token("."); + this.print(node.id, node); +} + +function SymbolTypeAnnotation() { + this.word("symbol"); +} + +function orSeparator() { + this.space(); + this.token("|"); + this.space(); +} + +function UnionTypeAnnotation(node) { + this.printJoin(node.types, node, { + separator: orSeparator + }); +} + +function TypeCastExpression(node) { + this.token("("); + this.print(node.expression, node); + this.print(node.typeAnnotation, node); + this.token(")"); +} + +function Variance(node) { + if (node.kind === "plus") { + this.token("+"); + } else { + this.token("-"); + } +} + +function VoidTypeAnnotation() { + this.word("void"); +} + +function IndexedAccessType(node) { + this.print(node.objectType, node); + this.token("["); + this.print(node.indexType, node); + this.token("]"); +} + +function OptionalIndexedAccessType(node) { + this.print(node.objectType, node); + + if (node.optional) { + this.token("?."); + } + + this.token("["); + this.print(node.indexType, node); + this.token("]"); +} + +/***/ }), + +/***/ 47058: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); + +var _templateLiterals = __nccwpck_require__(33800); + +Object.keys(_templateLiterals).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _templateLiterals[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _templateLiterals[key]; + } + }); +}); + +var _expressions = __nccwpck_require__(2262); + +Object.keys(_expressions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _expressions[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _expressions[key]; + } + }); +}); + +var _statements = __nccwpck_require__(21480); + +Object.keys(_statements).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _statements[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _statements[key]; + } + }); +}); + +var _classes = __nccwpck_require__(40675); + +Object.keys(_classes).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _classes[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _classes[key]; + } + }); +}); + +var _methods = __nccwpck_require__(53558); + +Object.keys(_methods).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _methods[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _methods[key]; + } + }); +}); + +var _modules = __nccwpck_require__(50607); + +Object.keys(_modules).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _modules[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _modules[key]; + } + }); +}); + +var _types = __nccwpck_require__(84986); + +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _types[key]; + } + }); +}); + +var _flow = __nccwpck_require__(92566); + +Object.keys(_flow).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _flow[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _flow[key]; + } + }); +}); + +var _base = __nccwpck_require__(26601); + +Object.keys(_base).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _base[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _base[key]; + } + }); +}); + +var _jsx = __nccwpck_require__(739); + +Object.keys(_jsx).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _jsx[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _jsx[key]; + } + }); +}); + +var _typescript = __nccwpck_require__(71406); + +Object.keys(_typescript).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _typescript[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _typescript[key]; + } + }); +}); + +/***/ }), + +/***/ 739: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JSXAttribute = JSXAttribute; +exports.JSXIdentifier = JSXIdentifier; +exports.JSXNamespacedName = JSXNamespacedName; +exports.JSXMemberExpression = JSXMemberExpression; +exports.JSXSpreadAttribute = JSXSpreadAttribute; +exports.JSXExpressionContainer = JSXExpressionContainer; +exports.JSXSpreadChild = JSXSpreadChild; +exports.JSXText = JSXText; +exports.JSXElement = JSXElement; +exports.JSXOpeningElement = JSXOpeningElement; +exports.JSXClosingElement = JSXClosingElement; +exports.JSXEmptyExpression = JSXEmptyExpression; +exports.JSXFragment = JSXFragment; +exports.JSXOpeningFragment = JSXOpeningFragment; +exports.JSXClosingFragment = JSXClosingFragment; + +var t = __nccwpck_require__(24479); + +function JSXAttribute(node) { + this.print(node.name, node); + + if (node.value) { + this.token("="); + this.print(node.value, node); + } +} + +function JSXIdentifier(node) { + this.word(node.name); +} + +function JSXNamespacedName(node) { + this.print(node.namespace, node); + this.token(":"); + this.print(node.name, node); +} + +function JSXMemberExpression(node) { + this.print(node.object, node); + this.token("."); + this.print(node.property, node); +} + +function JSXSpreadAttribute(node) { + this.token("{"); + this.token("..."); + this.print(node.argument, node); + this.token("}"); +} + +function JSXExpressionContainer(node) { + this.token("{"); + this.print(node.expression, node); + this.token("}"); +} + +function JSXSpreadChild(node) { + this.token("{"); + this.token("..."); + this.print(node.expression, node); + this.token("}"); +} + +function JSXText(node) { + const raw = this.getPossibleRaw(node); + + if (raw != null) { + this.token(raw); + } else { + this.token(node.value); + } +} + +function JSXElement(node) { + const open = node.openingElement; + this.print(open, node); + if (open.selfClosing) return; + this.indent(); + + for (const child of node.children) { + this.print(child, node); + } + + this.dedent(); + this.print(node.closingElement, node); +} + +function spaceSeparator() { + this.space(); +} + +function JSXOpeningElement(node) { + this.token("<"); + this.print(node.name, node); + this.print(node.typeParameters, node); + + if (node.attributes.length > 0) { + this.space(); + this.printJoin(node.attributes, node, { + separator: spaceSeparator + }); + } + + if (node.selfClosing) { + this.space(); + this.token("/>"); + } else { + this.token(">"); + } +} + +function JSXClosingElement(node) { + this.token("</"); + this.print(node.name, node); + this.token(">"); +} + +function JSXEmptyExpression(node) { + this.printInnerComments(node); +} + +function JSXFragment(node) { + this.print(node.openingFragment, node); + this.indent(); + + for (const child of node.children) { + this.print(child, node); + } + + this.dedent(); + this.print(node.closingFragment, node); +} + +function JSXOpeningFragment() { + this.token("<"); + this.token(">"); +} + +function JSXClosingFragment() { + this.token("</"); + this.token(">"); +} + +/***/ }), + +/***/ 53558: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._params = _params; +exports._parameters = _parameters; +exports._param = _param; +exports._methodHead = _methodHead; +exports._predicate = _predicate; +exports._functionHead = _functionHead; +exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression; +exports.ArrowFunctionExpression = ArrowFunctionExpression; + +var t = __nccwpck_require__(24479); + +const { + isIdentifier +} = t; + +function _params(node) { + this.print(node.typeParameters, node); + this.token("("); + + this._parameters(node.params, node); + + this.token(")"); + this.print(node.returnType, node); +} + +function _parameters(parameters, parent) { + for (let i = 0; i < parameters.length; i++) { + this._param(parameters[i], parent); + + if (i < parameters.length - 1) { + this.token(","); + this.space(); + } + } +} + +function _param(parameter, parent) { + this.printJoin(parameter.decorators, parameter); + this.print(parameter, parent); + if (parameter.optional) this.token("?"); + this.print(parameter.typeAnnotation, parameter); +} + +function _methodHead(node) { + const kind = node.kind; + const key = node.key; + + if (kind === "get" || kind === "set") { + this.word(kind); + this.space(); + } + + if (node.async) { + this._catchUp("start", key.loc); + + this.word("async"); + this.space(); + } + + if (kind === "method" || kind === "init") { + if (node.generator) { + this.token("*"); + } + } + + if (node.computed) { + this.token("["); + this.print(key, node); + this.token("]"); + } else { + this.print(key, node); + } + + if (node.optional) { + this.token("?"); + } + + this._params(node); +} + +function _predicate(node) { + if (node.predicate) { + if (!node.returnType) { + this.token(":"); + } + + this.space(); + this.print(node.predicate, node); + } +} + +function _functionHead(node) { + if (node.async) { + this.word("async"); + this.space(); + } + + this.word("function"); + if (node.generator) this.token("*"); + this.space(); + + if (node.id) { + this.print(node.id, node); + } + + this._params(node); + + this._predicate(node); +} + +function FunctionExpression(node) { + this._functionHead(node); + + this.space(); + this.print(node.body, node); +} + +function ArrowFunctionExpression(node) { + if (node.async) { + this.word("async"); + this.space(); + } + + const firstParam = node.params[0]; + + if (!this.format.retainLines && !this.format.auxiliaryCommentBefore && !this.format.auxiliaryCommentAfter && node.params.length === 1 && isIdentifier(firstParam) && !hasTypesOrComments(node, firstParam)) { + this.print(firstParam, node); + } else { + this._params(node); + } + + this._predicate(node); + + this.space(); + this.token("=>"); + this.space(); + this.print(node.body, node); +} + +function hasTypesOrComments(node, param) { + var _param$leadingComment, _param$trailingCommen; + + return !!(node.typeParameters || node.returnType || node.predicate || param.typeAnnotation || param.optional || (_param$leadingComment = param.leadingComments) != null && _param$leadingComment.length || (_param$trailingCommen = param.trailingComments) != null && _param$trailingCommen.length); +} + +/***/ }), + +/***/ 50607: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ImportSpecifier = ImportSpecifier; +exports.ImportDefaultSpecifier = ImportDefaultSpecifier; +exports.ExportDefaultSpecifier = ExportDefaultSpecifier; +exports.ExportSpecifier = ExportSpecifier; +exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier; +exports.ExportAllDeclaration = ExportAllDeclaration; +exports.ExportNamedDeclaration = ExportNamedDeclaration; +exports.ExportDefaultDeclaration = ExportDefaultDeclaration; +exports.ImportDeclaration = ImportDeclaration; +exports.ImportAttribute = ImportAttribute; +exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; + +var t = __nccwpck_require__(24479); + +const { + isClassDeclaration, + isExportDefaultSpecifier, + isExportNamespaceSpecifier, + isImportDefaultSpecifier, + isImportNamespaceSpecifier, + isStatement +} = t; + +function ImportSpecifier(node) { + if (node.importKind === "type" || node.importKind === "typeof") { + this.word(node.importKind); + this.space(); + } + + this.print(node.imported, node); + + if (node.local && node.local.name !== node.imported.name) { + this.space(); + this.word("as"); + this.space(); + this.print(node.local, node); + } +} + +function ImportDefaultSpecifier(node) { + this.print(node.local, node); +} + +function ExportDefaultSpecifier(node) { + this.print(node.exported, node); +} + +function ExportSpecifier(node) { + this.print(node.local, node); + + if (node.exported && node.local.name !== node.exported.name) { + this.space(); + this.word("as"); + this.space(); + this.print(node.exported, node); + } +} + +function ExportNamespaceSpecifier(node) { + this.token("*"); + this.space(); + this.word("as"); + this.space(); + this.print(node.exported, node); +} + +function ExportAllDeclaration(node) { + this.word("export"); + this.space(); + + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + + this.token("*"); + this.space(); + this.word("from"); + this.space(); + this.print(node.source, node); + this.printAssertions(node); + this.semicolon(); +} + +function ExportNamedDeclaration(node) { + if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + + this.word("export"); + this.space(); + ExportDeclaration.apply(this, arguments); +} + +function ExportDefaultDeclaration(node) { + if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + + this.word("export"); + this.space(); + this.word("default"); + this.space(); + ExportDeclaration.apply(this, arguments); +} + +function ExportDeclaration(node) { + if (node.declaration) { + const declar = node.declaration; + this.print(declar, node); + if (!isStatement(declar)) this.semicolon(); + } else { + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + + const specifiers = node.specifiers.slice(0); + let hasSpecial = false; + + for (;;) { + const first = specifiers[0]; + + if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) { + hasSpecial = true; + this.print(specifiers.shift(), node); + + if (specifiers.length) { + this.token(","); + this.space(); + } + } else { + break; + } + } + + if (specifiers.length || !specifiers.length && !hasSpecial) { + this.token("{"); + + if (specifiers.length) { + this.space(); + this.printList(specifiers, node); + this.space(); + } + + this.token("}"); + } + + if (node.source) { + this.space(); + this.word("from"); + this.space(); + this.print(node.source, node); + this.printAssertions(node); + } + + this.semicolon(); + } +} + +function ImportDeclaration(node) { + this.word("import"); + this.space(); + + if (node.importKind === "type" || node.importKind === "typeof") { + this.word(node.importKind); + this.space(); + } + + const specifiers = node.specifiers.slice(0); + + if (specifiers != null && specifiers.length) { + for (;;) { + const first = specifiers[0]; + + if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) { + this.print(specifiers.shift(), node); + + if (specifiers.length) { + this.token(","); + this.space(); + } + } else { + break; + } + } + + if (specifiers.length) { + this.token("{"); + this.space(); + this.printList(specifiers, node); + this.space(); + this.token("}"); + } + + this.space(); + this.word("from"); + this.space(); + } + + this.print(node.source, node); + this.printAssertions(node); + { + var _node$attributes; + + if ((_node$attributes = node.attributes) != null && _node$attributes.length) { + this.space(); + this.word("with"); + this.space(); + this.printList(node.attributes, node); + } + } + this.semicolon(); +} + +function ImportAttribute(node) { + this.print(node.key); + this.token(":"); + this.space(); + this.print(node.value); +} + +function ImportNamespaceSpecifier(node) { + this.token("*"); + this.space(); + this.word("as"); + this.space(); + this.print(node.local, node); +} + +/***/ }), + +/***/ 21480: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WithStatement = WithStatement; +exports.IfStatement = IfStatement; +exports.ForStatement = ForStatement; +exports.WhileStatement = WhileStatement; +exports.DoWhileStatement = DoWhileStatement; +exports.LabeledStatement = LabeledStatement; +exports.TryStatement = TryStatement; +exports.CatchClause = CatchClause; +exports.SwitchStatement = SwitchStatement; +exports.SwitchCase = SwitchCase; +exports.DebuggerStatement = DebuggerStatement; +exports.VariableDeclaration = VariableDeclaration; +exports.VariableDeclarator = VariableDeclarator; +exports.ThrowStatement = exports.BreakStatement = exports.ReturnStatement = exports.ContinueStatement = exports.ForOfStatement = exports.ForInStatement = void 0; + +var t = __nccwpck_require__(24479); + +const { + isFor, + isForStatement, + isIfStatement, + isStatement +} = t; + +function WithStatement(node) { + this.word("with"); + this.space(); + this.token("("); + this.print(node.object, node); + this.token(")"); + this.printBlock(node); +} + +function IfStatement(node) { + this.word("if"); + this.space(); + this.token("("); + this.print(node.test, node); + this.token(")"); + this.space(); + const needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent)); + + if (needsBlock) { + this.token("{"); + this.newline(); + this.indent(); + } + + this.printAndIndentOnComments(node.consequent, node); + + if (needsBlock) { + this.dedent(); + this.newline(); + this.token("}"); + } + + if (node.alternate) { + if (this.endsWith(125)) this.space(); + this.word("else"); + this.space(); + this.printAndIndentOnComments(node.alternate, node); + } +} + +function getLastStatement(statement) { + if (!isStatement(statement.body)) return statement; + return getLastStatement(statement.body); +} + +function ForStatement(node) { + this.word("for"); + this.space(); + this.token("("); + this.inForStatementInitCounter++; + this.print(node.init, node); + this.inForStatementInitCounter--; + this.token(";"); + + if (node.test) { + this.space(); + this.print(node.test, node); + } + + this.token(";"); + + if (node.update) { + this.space(); + this.print(node.update, node); + } + + this.token(")"); + this.printBlock(node); +} + +function WhileStatement(node) { + this.word("while"); + this.space(); + this.token("("); + this.print(node.test, node); + this.token(")"); + this.printBlock(node); +} + +const buildForXStatement = function (op) { + return function (node) { + this.word("for"); + this.space(); + + if (op === "of" && node.await) { + this.word("await"); + this.space(); + } + + this.token("("); + this.print(node.left, node); + this.space(); + this.word(op); + this.space(); + this.print(node.right, node); + this.token(")"); + this.printBlock(node); + }; +}; + +const ForInStatement = buildForXStatement("in"); +exports.ForInStatement = ForInStatement; +const ForOfStatement = buildForXStatement("of"); +exports.ForOfStatement = ForOfStatement; + +function DoWhileStatement(node) { + this.word("do"); + this.space(); + this.print(node.body, node); + this.space(); + this.word("while"); + this.space(); + this.token("("); + this.print(node.test, node); + this.token(")"); + this.semicolon(); +} + +function buildLabelStatement(prefix, key = "label") { + return function (node) { + this.word(prefix); + const label = node[key]; + + if (label) { + this.space(); + const isLabel = key == "label"; + const terminatorState = this.startTerminatorless(isLabel); + this.print(label, node); + this.endTerminatorless(terminatorState); + } + + this.semicolon(); + }; +} + +const ContinueStatement = buildLabelStatement("continue"); +exports.ContinueStatement = ContinueStatement; +const ReturnStatement = buildLabelStatement("return", "argument"); +exports.ReturnStatement = ReturnStatement; +const BreakStatement = buildLabelStatement("break"); +exports.BreakStatement = BreakStatement; +const ThrowStatement = buildLabelStatement("throw", "argument"); +exports.ThrowStatement = ThrowStatement; + +function LabeledStatement(node) { + this.print(node.label, node); + this.token(":"); + this.space(); + this.print(node.body, node); +} + +function TryStatement(node) { + this.word("try"); + this.space(); + this.print(node.block, node); + this.space(); + + if (node.handlers) { + this.print(node.handlers[0], node); + } else { + this.print(node.handler, node); + } + + if (node.finalizer) { + this.space(); + this.word("finally"); + this.space(); + this.print(node.finalizer, node); + } +} + +function CatchClause(node) { + this.word("catch"); + this.space(); + + if (node.param) { + this.token("("); + this.print(node.param, node); + this.print(node.param.typeAnnotation, node); + this.token(")"); + this.space(); + } + + this.print(node.body, node); +} + +function SwitchStatement(node) { + this.word("switch"); + this.space(); + this.token("("); + this.print(node.discriminant, node); + this.token(")"); + this.space(); + this.token("{"); + this.printSequence(node.cases, node, { + indent: true, + + addNewlines(leading, cas) { + if (!leading && node.cases[node.cases.length - 1] === cas) return -1; + } + + }); + this.token("}"); +} + +function SwitchCase(node) { + if (node.test) { + this.word("case"); + this.space(); + this.print(node.test, node); + this.token(":"); + } else { + this.word("default"); + this.token(":"); + } + + if (node.consequent.length) { + this.newline(); + this.printSequence(node.consequent, node, { + indent: true + }); + } +} + +function DebuggerStatement() { + this.word("debugger"); + this.semicolon(); +} + +function variableDeclarationIndent() { + this.token(","); + this.newline(); + + if (this.endsWith(10)) { + for (let i = 0; i < 4; i++) this.space(true); + } +} + +function constDeclarationIndent() { + this.token(","); + this.newline(); + + if (this.endsWith(10)) { + for (let i = 0; i < 6; i++) this.space(true); + } +} + +function VariableDeclaration(node, parent) { + if (node.declare) { + this.word("declare"); + this.space(); + } + + this.word(node.kind); + this.space(); + let hasInits = false; + + if (!isFor(parent)) { + for (const declar of node.declarations) { + if (declar.init) { + hasInits = true; + } + } + } + + let separator; + + if (hasInits) { + separator = node.kind === "const" ? constDeclarationIndent : variableDeclarationIndent; + } + + this.printList(node.declarations, node, { + separator + }); + + if (isFor(parent)) { + if (isForStatement(parent)) { + if (parent.init === node) return; + } else { + if (parent.left === node) return; + } + } + + this.semicolon(); +} + +function VariableDeclarator(node) { + this.print(node.id, node); + if (node.definite) this.token("!"); + this.print(node.id.typeAnnotation, node); + + if (node.init) { + this.space(); + this.token("="); + this.space(); + this.print(node.init, node); + } +} + +/***/ }), + +/***/ 33800: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TaggedTemplateExpression = TaggedTemplateExpression; +exports.TemplateElement = TemplateElement; +exports.TemplateLiteral = TemplateLiteral; + +var t = __nccwpck_require__(24479); + +function TaggedTemplateExpression(node) { + this.print(node.tag, node); + this.print(node.typeParameters, node); + this.print(node.quasi, node); +} + +function TemplateElement(node, parent) { + const isFirst = parent.quasis[0] === node; + const isLast = parent.quasis[parent.quasis.length - 1] === node; + const value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${"); + this.token(value); +} + +function TemplateLiteral(node) { + const quasis = node.quasis; + + for (let i = 0; i < quasis.length; i++) { + this.print(quasis[i], node); + + if (i + 1 < quasis.length) { + this.print(node.expressions[i], node); + } + } +} + +/***/ }), + +/***/ 84986: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Identifier = Identifier; +exports.ArgumentPlaceholder = ArgumentPlaceholder; +exports.SpreadElement = exports.RestElement = RestElement; +exports.ObjectPattern = exports.ObjectExpression = ObjectExpression; +exports.ObjectMethod = ObjectMethod; +exports.ObjectProperty = ObjectProperty; +exports.ArrayPattern = exports.ArrayExpression = ArrayExpression; +exports.RecordExpression = RecordExpression; +exports.TupleExpression = TupleExpression; +exports.RegExpLiteral = RegExpLiteral; +exports.BooleanLiteral = BooleanLiteral; +exports.NullLiteral = NullLiteral; +exports.NumericLiteral = NumericLiteral; +exports.StringLiteral = StringLiteral; +exports.BigIntLiteral = BigIntLiteral; +exports.DecimalLiteral = DecimalLiteral; +exports.TopicReference = TopicReference; +exports.PipelineTopicExpression = PipelineTopicExpression; +exports.PipelineBareFunction = PipelineBareFunction; +exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; + +var t = __nccwpck_require__(24479); + +var _jsesc = __nccwpck_require__(48978); + +const { + isAssignmentPattern, + isIdentifier +} = t; + +function Identifier(node) { + this.exactSource(node.loc, () => { + this.word(node.name); + }); +} + +function ArgumentPlaceholder() { + this.token("?"); +} + +function RestElement(node) { + this.token("..."); + this.print(node.argument, node); +} + +function ObjectExpression(node) { + const props = node.properties; + this.token("{"); + this.printInnerComments(node); + + if (props.length) { + this.space(); + this.printList(props, node, { + indent: true, + statement: true + }); + this.space(); + } + + this.token("}"); +} + +function ObjectMethod(node) { + this.printJoin(node.decorators, node); + + this._methodHead(node); + + this.space(); + this.print(node.body, node); +} + +function ObjectProperty(node) { + this.printJoin(node.decorators, node); + + if (node.computed) { + this.token("["); + this.print(node.key, node); + this.token("]"); + } else { + if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) { + this.print(node.value, node); + return; + } + + this.print(node.key, node); + + if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) { + return; + } + } + + this.token(":"); + this.space(); + this.print(node.value, node); +} + +function ArrayExpression(node) { + const elems = node.elements; + const len = elems.length; + this.token("["); + this.printInnerComments(node); + + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + + if (elem) { + if (i > 0) this.space(); + this.print(elem, node); + if (i < len - 1) this.token(","); + } else { + this.token(","); + } + } + + this.token("]"); +} + +function RecordExpression(node) { + const props = node.properties; + let startToken; + let endToken; + + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "{|"; + endToken = "|}"; + } else if (this.format.recordAndTupleSyntaxType === "hash") { + startToken = "#{"; + endToken = "}"; + } else { + throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); + } + + this.token(startToken); + this.printInnerComments(node); + + if (props.length) { + this.space(); + this.printList(props, node, { + indent: true, + statement: true + }); + this.space(); + } + + this.token(endToken); +} + +function TupleExpression(node) { + const elems = node.elements; + const len = elems.length; + let startToken; + let endToken; + + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "[|"; + endToken = "|]"; + } else if (this.format.recordAndTupleSyntaxType === "hash") { + startToken = "#["; + endToken = "]"; + } else { + throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); + } + + this.token(startToken); + this.printInnerComments(node); + + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + + if (elem) { + if (i > 0) this.space(); + this.print(elem, node); + if (i < len - 1) this.token(","); + } + } + + this.token(endToken); +} + +function RegExpLiteral(node) { + this.word(`/${node.pattern}/${node.flags}`); +} + +function BooleanLiteral(node) { + this.word(node.value ? "true" : "false"); +} + +function NullLiteral() { + this.word("null"); +} + +function NumericLiteral(node) { + const raw = this.getPossibleRaw(node); + const opts = this.format.jsescOption; + const value = node.value + ""; + + if (opts.numbers) { + this.number(_jsesc(node.value, opts)); + } else if (raw == null) { + this.number(value); + } else if (this.format.minified) { + this.number(raw.length < value.length ? raw : value); + } else { + this.number(raw); + } +} + +function StringLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (!this.format.minified && raw != null) { + this.token(raw); + return; + } + + const val = _jsesc(node.value, Object.assign(this.format.jsescOption, this.format.jsonCompatibleStrings && { + json: true + })); + + return this.token(val); +} + +function BigIntLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (!this.format.minified && raw != null) { + this.word(raw); + return; + } + + this.word(node.value + "n"); +} + +function DecimalLiteral(node) { + const raw = this.getPossibleRaw(node); + + if (!this.format.minified && raw != null) { + this.word(raw); + return; + } + + this.word(node.value + "m"); +} + +function TopicReference() { + const { + topicToken + } = this.format; + + switch (topicToken) { + case "#": + this.token("#"); + break; + + default: + { + const givenTopicTokenJSON = JSON.stringify(topicToken); + const message = `The "topicToken" generator option must be "#" (${givenTopicTokenJSON} received instead).`; + throw new Error(message); + } + } +} + +function PipelineTopicExpression(node) { + this.print(node.expression, node); +} + +function PipelineBareFunction(node) { + this.print(node.callee, node); +} + +function PipelinePrimaryTopicReference() { + this.token("#"); +} + +/***/ }), + +/***/ 71406: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TSTypeAnnotation = TSTypeAnnotation; +exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation; +exports.TSTypeParameter = TSTypeParameter; +exports.TSParameterProperty = TSParameterProperty; +exports.TSDeclareFunction = TSDeclareFunction; +exports.TSDeclareMethod = TSDeclareMethod; +exports.TSQualifiedName = TSQualifiedName; +exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; +exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration; +exports.TSPropertySignature = TSPropertySignature; +exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; +exports.TSMethodSignature = TSMethodSignature; +exports.TSIndexSignature = TSIndexSignature; +exports.TSAnyKeyword = TSAnyKeyword; +exports.TSBigIntKeyword = TSBigIntKeyword; +exports.TSUnknownKeyword = TSUnknownKeyword; +exports.TSNumberKeyword = TSNumberKeyword; +exports.TSObjectKeyword = TSObjectKeyword; +exports.TSBooleanKeyword = TSBooleanKeyword; +exports.TSStringKeyword = TSStringKeyword; +exports.TSSymbolKeyword = TSSymbolKeyword; +exports.TSVoidKeyword = TSVoidKeyword; +exports.TSUndefinedKeyword = TSUndefinedKeyword; +exports.TSNullKeyword = TSNullKeyword; +exports.TSNeverKeyword = TSNeverKeyword; +exports.TSIntrinsicKeyword = TSIntrinsicKeyword; +exports.TSThisType = TSThisType; +exports.TSFunctionType = TSFunctionType; +exports.TSConstructorType = TSConstructorType; +exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; +exports.TSTypeReference = TSTypeReference; +exports.TSTypePredicate = TSTypePredicate; +exports.TSTypeQuery = TSTypeQuery; +exports.TSTypeLiteral = TSTypeLiteral; +exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody; +exports.tsPrintBraced = tsPrintBraced; +exports.TSArrayType = TSArrayType; +exports.TSTupleType = TSTupleType; +exports.TSOptionalType = TSOptionalType; +exports.TSRestType = TSRestType; +exports.TSNamedTupleMember = TSNamedTupleMember; +exports.TSUnionType = TSUnionType; +exports.TSIntersectionType = TSIntersectionType; +exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType; +exports.TSConditionalType = TSConditionalType; +exports.TSInferType = TSInferType; +exports.TSParenthesizedType = TSParenthesizedType; +exports.TSTypeOperator = TSTypeOperator; +exports.TSIndexedAccessType = TSIndexedAccessType; +exports.TSMappedType = TSMappedType; +exports.TSLiteralType = TSLiteralType; +exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; +exports.TSInterfaceDeclaration = TSInterfaceDeclaration; +exports.TSInterfaceBody = TSInterfaceBody; +exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration; +exports.TSAsExpression = TSAsExpression; +exports.TSTypeAssertion = TSTypeAssertion; +exports.TSEnumDeclaration = TSEnumDeclaration; +exports.TSEnumMember = TSEnumMember; +exports.TSModuleDeclaration = TSModuleDeclaration; +exports.TSModuleBlock = TSModuleBlock; +exports.TSImportType = TSImportType; +exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration; +exports.TSExternalModuleReference = TSExternalModuleReference; +exports.TSNonNullExpression = TSNonNullExpression; +exports.TSExportAssignment = TSExportAssignment; +exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration; +exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; +exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers; + +var t = __nccwpck_require__(24479); + +function TSTypeAnnotation(node) { + this.token(":"); + this.space(); + if (node.optional) this.token("?"); + this.print(node.typeAnnotation, node); +} + +function TSTypeParameterInstantiation(node) { + this.token("<"); + this.printList(node.params, node, {}); + this.token(">"); +} + +function TSTypeParameter(node) { + this.word(node.name); + + if (node.constraint) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.constraint, node); + } + + if (node.default) { + this.space(); + this.token("="); + this.space(); + this.print(node.default, node); + } +} + +function TSParameterProperty(node) { + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.readonly) { + this.word("readonly"); + this.space(); + } + + this._param(node.parameter); +} + +function TSDeclareFunction(node) { + if (node.declare) { + this.word("declare"); + this.space(); + } + + this._functionHead(node); + + this.token(";"); +} + +function TSDeclareMethod(node) { + this._classMethodHead(node); + + this.token(";"); +} + +function TSQualifiedName(node) { + this.print(node.left, node); + this.token("."); + this.print(node.right, node); +} + +function TSCallSignatureDeclaration(node) { + this.tsPrintSignatureDeclarationBase(node); + this.token(";"); +} + +function TSConstructSignatureDeclaration(node) { + this.word("new"); + this.space(); + this.tsPrintSignatureDeclarationBase(node); + this.token(";"); +} + +function TSPropertySignature(node) { + const { + readonly, + initializer + } = node; + + if (readonly) { + this.word("readonly"); + this.space(); + } + + this.tsPrintPropertyOrMethodName(node); + this.print(node.typeAnnotation, node); + + if (initializer) { + this.space(); + this.token("="); + this.space(); + this.print(initializer, node); + } + + this.token(";"); +} + +function tsPrintPropertyOrMethodName(node) { + if (node.computed) { + this.token("["); + } + + this.print(node.key, node); + + if (node.computed) { + this.token("]"); + } + + if (node.optional) { + this.token("?"); + } +} + +function TSMethodSignature(node) { + const { + kind + } = node; + + if (kind === "set" || kind === "get") { + this.word(kind); + this.space(); + } + + this.tsPrintPropertyOrMethodName(node); + this.tsPrintSignatureDeclarationBase(node); + this.token(";"); +} + +function TSIndexSignature(node) { + const { + readonly, + static: isStatic + } = node; + + if (isStatic) { + this.word("static"); + this.space(); + } + + if (readonly) { + this.word("readonly"); + this.space(); + } + + this.token("["); + + this._parameters(node.parameters, node); + + this.token("]"); + this.print(node.typeAnnotation, node); + this.token(";"); +} + +function TSAnyKeyword() { + this.word("any"); +} + +function TSBigIntKeyword() { + this.word("bigint"); +} + +function TSUnknownKeyword() { + this.word("unknown"); +} + +function TSNumberKeyword() { + this.word("number"); +} + +function TSObjectKeyword() { + this.word("object"); +} + +function TSBooleanKeyword() { + this.word("boolean"); +} + +function TSStringKeyword() { + this.word("string"); +} + +function TSSymbolKeyword() { + this.word("symbol"); +} + +function TSVoidKeyword() { + this.word("void"); +} + +function TSUndefinedKeyword() { + this.word("undefined"); +} + +function TSNullKeyword() { + this.word("null"); +} + +function TSNeverKeyword() { + this.word("never"); +} + +function TSIntrinsicKeyword() { + this.word("intrinsic"); +} + +function TSThisType() { + this.word("this"); +} + +function TSFunctionType(node) { + this.tsPrintFunctionOrConstructorType(node); +} + +function TSConstructorType(node) { + if (node.abstract) { + this.word("abstract"); + this.space(); + } + + this.word("new"); + this.space(); + this.tsPrintFunctionOrConstructorType(node); +} + +function tsPrintFunctionOrConstructorType(node) { + const { + typeParameters, + parameters + } = node; + this.print(typeParameters, node); + this.token("("); + + this._parameters(parameters, node); + + this.token(")"); + this.space(); + this.token("=>"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation, node); +} + +function TSTypeReference(node) { + this.print(node.typeName, node); + this.print(node.typeParameters, node); +} + +function TSTypePredicate(node) { + if (node.asserts) { + this.word("asserts"); + this.space(); + } + + this.print(node.parameterName); + + if (node.typeAnnotation) { + this.space(); + this.word("is"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation); + } +} + +function TSTypeQuery(node) { + this.word("typeof"); + this.space(); + this.print(node.exprName); +} + +function TSTypeLiteral(node) { + this.tsPrintTypeLiteralOrInterfaceBody(node.members, node); +} + +function tsPrintTypeLiteralOrInterfaceBody(members, node) { + this.tsPrintBraced(members, node); +} + +function tsPrintBraced(members, node) { + this.token("{"); + + if (members.length) { + this.indent(); + this.newline(); + + for (const member of members) { + this.print(member, node); + this.newline(); + } + + this.dedent(); + this.rightBrace(); + } else { + this.token("}"); + } +} + +function TSArrayType(node) { + this.print(node.elementType, node); + this.token("[]"); +} + +function TSTupleType(node) { + this.token("["); + this.printList(node.elementTypes, node); + this.token("]"); +} + +function TSOptionalType(node) { + this.print(node.typeAnnotation, node); + this.token("?"); +} + +function TSRestType(node) { + this.token("..."); + this.print(node.typeAnnotation, node); +} + +function TSNamedTupleMember(node) { + this.print(node.label, node); + if (node.optional) this.token("?"); + this.token(":"); + this.space(); + this.print(node.elementType, node); +} + +function TSUnionType(node) { + this.tsPrintUnionOrIntersectionType(node, "|"); +} + +function TSIntersectionType(node) { + this.tsPrintUnionOrIntersectionType(node, "&"); +} + +function tsPrintUnionOrIntersectionType(node, sep) { + this.printJoin(node.types, node, { + separator() { + this.space(); + this.token(sep); + this.space(); + } + + }); +} + +function TSConditionalType(node) { + this.print(node.checkType); + this.space(); + this.word("extends"); + this.space(); + this.print(node.extendsType); + this.space(); + this.token("?"); + this.space(); + this.print(node.trueType); + this.space(); + this.token(":"); + this.space(); + this.print(node.falseType); +} + +function TSInferType(node) { + this.token("infer"); + this.space(); + this.print(node.typeParameter); +} + +function TSParenthesizedType(node) { + this.token("("); + this.print(node.typeAnnotation, node); + this.token(")"); +} + +function TSTypeOperator(node) { + this.word(node.operator); + this.space(); + this.print(node.typeAnnotation, node); +} + +function TSIndexedAccessType(node) { + this.print(node.objectType, node); + this.token("["); + this.print(node.indexType, node); + this.token("]"); +} + +function TSMappedType(node) { + const { + nameType, + optional, + readonly, + typeParameter + } = node; + this.token("{"); + this.space(); + + if (readonly) { + tokenIfPlusMinus(this, readonly); + this.word("readonly"); + this.space(); + } + + this.token("["); + this.word(typeParameter.name); + this.space(); + this.word("in"); + this.space(); + this.print(typeParameter.constraint, typeParameter); + + if (nameType) { + this.space(); + this.word("as"); + this.space(); + this.print(nameType, node); + } + + this.token("]"); + + if (optional) { + tokenIfPlusMinus(this, optional); + this.token("?"); + } + + this.token(":"); + this.space(); + this.print(node.typeAnnotation, node); + this.space(); + this.token("}"); +} + +function tokenIfPlusMinus(self, tok) { + if (tok !== true) { + self.token(tok); + } +} + +function TSLiteralType(node) { + this.print(node.literal, node); +} + +function TSExpressionWithTypeArguments(node) { + this.print(node.expression, node); + this.print(node.typeParameters, node); +} + +function TSInterfaceDeclaration(node) { + const { + declare, + id, + typeParameters, + extends: extendz, + body + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + this.word("interface"); + this.space(); + this.print(id, node); + this.print(typeParameters, node); + + if (extendz != null && extendz.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(extendz, node); + } + + this.space(); + this.print(body, node); +} + +function TSInterfaceBody(node) { + this.tsPrintTypeLiteralOrInterfaceBody(node.body, node); +} + +function TSTypeAliasDeclaration(node) { + const { + declare, + id, + typeParameters, + typeAnnotation + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + this.word("type"); + this.space(); + this.print(id, node); + this.print(typeParameters, node); + this.space(); + this.token("="); + this.space(); + this.print(typeAnnotation, node); + this.token(";"); +} + +function TSAsExpression(node) { + const { + expression, + typeAnnotation + } = node; + this.print(expression, node); + this.space(); + this.word("as"); + this.space(); + this.print(typeAnnotation, node); +} + +function TSTypeAssertion(node) { + const { + typeAnnotation, + expression + } = node; + this.token("<"); + this.print(typeAnnotation, node); + this.token(">"); + this.space(); + this.print(expression, node); +} + +function TSEnumDeclaration(node) { + const { + declare, + const: isConst, + id, + members + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + if (isConst) { + this.word("const"); + this.space(); + } + + this.word("enum"); + this.space(); + this.print(id, node); + this.space(); + this.tsPrintBraced(members, node); +} + +function TSEnumMember(node) { + const { + id, + initializer + } = node; + this.print(id, node); + + if (initializer) { + this.space(); + this.token("="); + this.space(); + this.print(initializer, node); + } + + this.token(","); +} + +function TSModuleDeclaration(node) { + const { + declare, + id + } = node; + + if (declare) { + this.word("declare"); + this.space(); + } + + if (!node.global) { + this.word(id.type === "Identifier" ? "namespace" : "module"); + this.space(); + } + + this.print(id, node); + + if (!node.body) { + this.token(";"); + return; + } + + let body = node.body; + + while (body.type === "TSModuleDeclaration") { + this.token("."); + this.print(body.id, body); + body = body.body; + } + + this.space(); + this.print(body, node); +} + +function TSModuleBlock(node) { + this.tsPrintBraced(node.body, node); +} + +function TSImportType(node) { + const { + argument, + qualifier, + typeParameters + } = node; + this.word("import"); + this.token("("); + this.print(argument, node); + this.token(")"); + + if (qualifier) { + this.token("."); + this.print(qualifier, node); + } + + if (typeParameters) { + this.print(typeParameters, node); + } +} + +function TSImportEqualsDeclaration(node) { + const { + isExport, + id, + moduleReference + } = node; + + if (isExport) { + this.word("export"); + this.space(); + } + + this.word("import"); + this.space(); + this.print(id, node); + this.space(); + this.token("="); + this.space(); + this.print(moduleReference, node); + this.token(";"); +} + +function TSExternalModuleReference(node) { + this.token("require("); + this.print(node.expression, node); + this.token(")"); +} + +function TSNonNullExpression(node) { + this.print(node.expression, node); + this.token("!"); +} + +function TSExportAssignment(node) { + this.word("export"); + this.space(); + this.token("="); + this.space(); + this.print(node.expression, node); + this.token(";"); +} + +function TSNamespaceExportDeclaration(node) { + this.word("export"); + this.space(); + this.word("as"); + this.space(); + this.word("namespace"); + this.space(); + this.print(node.id, node); +} + +function tsPrintSignatureDeclarationBase(node) { + const { + typeParameters, + parameters + } = node; + this.print(typeParameters, node); + this.token("("); + + this._parameters(parameters, node); + + this.token(")"); + this.print(node.typeAnnotation, node); +} + +function tsPrintClassMemberModifiers(node, isField) { + if (isField && node.declare) { + this.word("declare"); + this.space(); + } + + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + + if (node.static) { + this.word("static"); + this.space(); + } + + if (node.override) { + this.word("override"); + this.space(); + } + + if (node.abstract) { + this.word("abstract"); + this.space(); + } + + if (isField && node.readonly) { + this.word("readonly"); + this.space(); + } +} + +/***/ }), + +/***/ 52685: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = generate; +exports.CodeGenerator = void 0; + +var _sourceMap = __nccwpck_require__(70826); + +var _printer = __nccwpck_require__(6558); + +class Generator extends _printer.default { + constructor(ast, opts = {}, code) { + const format = normalizeOptions(code, opts); + const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; + super(format, map); + this.ast = void 0; + this.ast = ast; + } + + generate() { + return super.generate(this.ast); + } + +} + +function normalizeOptions(code, opts) { + const format = { + auxiliaryCommentBefore: opts.auxiliaryCommentBefore, + auxiliaryCommentAfter: opts.auxiliaryCommentAfter, + shouldPrintComment: opts.shouldPrintComment, + retainLines: opts.retainLines, + retainFunctionParens: opts.retainFunctionParens, + comments: opts.comments == null || opts.comments, + compact: opts.compact, + minified: opts.minified, + concise: opts.concise, + indent: { + adjustMultilineComment: true, + style: " ", + base: 0 + }, + decoratorsBeforeExport: !!opts.decoratorsBeforeExport, + jsescOption: Object.assign({ + quotes: "double", + wrap: true, + minimal: false + }, opts.jsescOption), + recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType, + topicToken: opts.topicToken + }; + { + format.jsonCompatibleStrings = opts.jsonCompatibleStrings; + } + + if (format.minified) { + format.compact = true; + + format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); + } else { + format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0); + } + + if (format.compact === "auto") { + format.compact = code.length > 500000; + + if (format.compact) { + console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`); + } + } + + if (format.compact) { + format.indent.adjustMultilineComment = false; + } + + return format; +} + +class CodeGenerator { + constructor(ast, opts, code) { + this._generator = void 0; + this._generator = new Generator(ast, opts, code); + } + + generate() { + return this._generator.generate(); + } + +} + +exports.CodeGenerator = CodeGenerator; + +function generate(ast, opts, code) { + const gen = new Generator(ast, opts, code); + return gen.generate(); +} + +/***/ }), + +/***/ 83731: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.needsWhitespace = needsWhitespace; +exports.needsWhitespaceBefore = needsWhitespaceBefore; +exports.needsWhitespaceAfter = needsWhitespaceAfter; +exports.needsParens = needsParens; + +var whitespace = __nccwpck_require__(67654); + +var parens = __nccwpck_require__(11298); + +var t = __nccwpck_require__(24479); + +const { + isCallExpression, + isExpressionStatement, + isMemberExpression, + isNewExpression +} = t; + +function expandAliases(obj) { + const newObj = {}; + + function add(type, func) { + const fn = newObj[type]; + newObj[type] = fn ? function (node, parent, stack) { + const result = fn(node, parent, stack); + return result == null ? func(node, parent, stack) : result; + } : func; + } + + for (const type of Object.keys(obj)) { + const aliases = t.FLIPPED_ALIAS_KEYS[type]; + + if (aliases) { + for (const alias of aliases) { + add(alias, obj[type]); + } + } else { + add(type, obj[type]); + } + } + + return newObj; +} + +const expandedParens = expandAliases(parens); +const expandedWhitespaceNodes = expandAliases(whitespace.nodes); +const expandedWhitespaceList = expandAliases(whitespace.list); + +function find(obj, node, parent, printStack) { + const fn = obj[node.type]; + return fn ? fn(node, parent, printStack) : null; +} + +function isOrHasCallExpression(node) { + if (isCallExpression(node)) { + return true; + } + + return isMemberExpression(node) && isOrHasCallExpression(node.object); +} + +function needsWhitespace(node, parent, type) { + if (!node) return 0; + + if (isExpressionStatement(node)) { + node = node.expression; + } + + let linesInfo = find(expandedWhitespaceNodes, node, parent); + + if (!linesInfo) { + const items = find(expandedWhitespaceList, node, parent); + + if (items) { + for (let i = 0; i < items.length; i++) { + linesInfo = needsWhitespace(items[i], node, type); + if (linesInfo) break; + } + } + } + + if (typeof linesInfo === "object" && linesInfo !== null) { + return linesInfo[type] || 0; + } + + return 0; +} + +function needsWhitespaceBefore(node, parent) { + return needsWhitespace(node, parent, "before"); +} + +function needsWhitespaceAfter(node, parent) { + return needsWhitespace(node, parent, "after"); +} + +function needsParens(node, parent, printStack) { + if (!parent) return false; + + if (isNewExpression(parent) && parent.callee === node) { + if (isOrHasCallExpression(node)) return true; + } + + return find(expandedParens, node, parent, printStack); +} + +/***/ }), + +/***/ 11298: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.UpdateExpression = UpdateExpression; +exports.ObjectExpression = ObjectExpression; +exports.DoExpression = DoExpression; +exports.Binary = Binary; +exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.OptionalIndexedAccessType = OptionalIndexedAccessType; +exports.TSAsExpression = TSAsExpression; +exports.TSTypeAssertion = TSTypeAssertion; +exports.TSIntersectionType = exports.TSUnionType = TSUnionType; +exports.TSInferType = TSInferType; +exports.BinaryExpression = BinaryExpression; +exports.SequenceExpression = SequenceExpression; +exports.AwaitExpression = exports.YieldExpression = YieldExpression; +exports.ClassExpression = ClassExpression; +exports.UnaryLike = UnaryLike; +exports.FunctionExpression = FunctionExpression; +exports.ArrowFunctionExpression = ArrowFunctionExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression; +exports.AssignmentExpression = AssignmentExpression; +exports.LogicalExpression = LogicalExpression; +exports.Identifier = Identifier; + +var t = __nccwpck_require__(24479); + +const { + isArrayTypeAnnotation, + isArrowFunctionExpression, + isAssignmentExpression, + isAwaitExpression, + isBinary, + isBinaryExpression, + isCallExpression, + isClassDeclaration, + isClassExpression, + isConditional, + isConditionalExpression, + isExportDeclaration, + isExportDefaultDeclaration, + isExpressionStatement, + isFor, + isForInStatement, + isForOfStatement, + isForStatement, + isIfStatement, + isIndexedAccessType, + isIntersectionTypeAnnotation, + isLogicalExpression, + isMemberExpression, + isNewExpression, + isNullableTypeAnnotation, + isObjectPattern, + isOptionalCallExpression, + isOptionalMemberExpression, + isReturnStatement, + isSequenceExpression, + isSwitchStatement, + isTSArrayType, + isTSAsExpression, + isTSIntersectionType, + isTSNonNullExpression, + isTSOptionalType, + isTSRestType, + isTSTypeAssertion, + isTSUnionType, + isTaggedTemplateExpression, + isThrowStatement, + isTypeAnnotation, + isUnaryLike, + isUnionTypeAnnotation, + isVariableDeclarator, + isWhileStatement, + isYieldExpression +} = t; +const PRECEDENCE = { + "||": 0, + "??": 0, + "&&": 1, + "|": 2, + "^": 3, + "&": 4, + "==": 5, + "===": 5, + "!=": 5, + "!==": 5, + "<": 6, + ">": 6, + "<=": 6, + ">=": 6, + in: 6, + instanceof: 6, + ">>": 7, + "<<": 7, + ">>>": 7, + "+": 8, + "-": 8, + "*": 9, + "/": 9, + "%": 9, + "**": 10 +}; + +const isClassExtendsClause = (node, parent) => (isClassDeclaration(parent) || isClassExpression(parent)) && parent.superClass === node; + +const hasPostfixPart = (node, parent) => (isMemberExpression(parent) || isOptionalMemberExpression(parent)) && parent.object === node || (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression(parent); + +function NullableTypeAnnotation(node, parent) { + return isArrayTypeAnnotation(parent); +} + +function FunctionTypeAnnotation(node, parent, printStack) { + return isUnionTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isArrayTypeAnnotation(parent) || isTypeAnnotation(parent) && isArrowFunctionExpression(printStack[printStack.length - 3]); +} + +function UpdateExpression(node, parent) { + return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent); +} + +function ObjectExpression(node, parent, printStack) { + return isFirstInContext(printStack, { + expressionStatement: true, + arrowBody: true + }); +} + +function DoExpression(node, parent, printStack) { + return !node.async && isFirstInContext(printStack, { + expressionStatement: true + }); +} + +function Binary(node, parent) { + if (node.operator === "**" && isBinaryExpression(parent, { + operator: "**" + })) { + return parent.left === node; + } + + if (isClassExtendsClause(node, parent)) { + return true; + } + + if (hasPostfixPart(node, parent) || isUnaryLike(parent) || isAwaitExpression(parent)) { + return true; + } + + if (isBinary(parent)) { + const parentOp = parent.operator; + const parentPos = PRECEDENCE[parentOp]; + const nodeOp = node.operator; + const nodePos = PRECEDENCE[nodeOp]; + + if (parentPos === nodePos && parent.right === node && !isLogicalExpression(parent) || parentPos > nodePos) { + return true; + } + } +} + +function UnionTypeAnnotation(node, parent) { + return isArrayTypeAnnotation(parent) || isNullableTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isUnionTypeAnnotation(parent); +} + +function OptionalIndexedAccessType(node, parent) { + return isIndexedAccessType(parent, { + objectType: node + }); +} + +function TSAsExpression() { + return true; +} + +function TSTypeAssertion() { + return true; +} + +function TSUnionType(node, parent) { + return isTSArrayType(parent) || isTSOptionalType(parent) || isTSIntersectionType(parent) || isTSUnionType(parent) || isTSRestType(parent); +} + +function TSInferType(node, parent) { + return isTSArrayType(parent) || isTSOptionalType(parent); +} + +function BinaryExpression(node, parent) { + return node.operator === "in" && (isVariableDeclarator(parent) || isFor(parent)); +} + +function SequenceExpression(node, parent) { + if (isForStatement(parent) || isThrowStatement(parent) || isReturnStatement(parent) || isIfStatement(parent) && parent.test === node || isWhileStatement(parent) && parent.test === node || isForInStatement(parent) && parent.right === node || isSwitchStatement(parent) && parent.discriminant === node || isExpressionStatement(parent) && parent.expression === node) { + return false; + } + + return true; +} + +function YieldExpression(node, parent) { + return isBinary(parent) || isUnaryLike(parent) || hasPostfixPart(node, parent) || isAwaitExpression(parent) && isYieldExpression(node) || isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent); +} + +function ClassExpression(node, parent, printStack) { + return isFirstInContext(printStack, { + expressionStatement: true, + exportDefault: true + }); +} + +function UnaryLike(node, parent) { + return hasPostfixPart(node, parent) || isBinaryExpression(parent, { + operator: "**", + left: node + }) || isClassExtendsClause(node, parent); +} + +function FunctionExpression(node, parent, printStack) { + return isFirstInContext(printStack, { + expressionStatement: true, + exportDefault: true + }); +} + +function ArrowFunctionExpression(node, parent) { + return isExportDeclaration(parent) || ConditionalExpression(node, parent); +} + +function ConditionalExpression(node, parent) { + if (isUnaryLike(parent) || isBinary(parent) || isConditionalExpression(parent, { + test: node + }) || isAwaitExpression(parent) || isTSTypeAssertion(parent) || isTSAsExpression(parent)) { + return true; + } + + return UnaryLike(node, parent); +} + +function OptionalMemberExpression(node, parent) { + return isCallExpression(parent, { + callee: node + }) || isMemberExpression(parent, { + object: node + }); +} + +function AssignmentExpression(node, parent) { + if (isObjectPattern(node.left)) { + return true; + } else { + return ConditionalExpression(node, parent); + } +} + +function LogicalExpression(node, parent) { + switch (node.operator) { + case "||": + if (!isLogicalExpression(parent)) return false; + return parent.operator === "??" || parent.operator === "&&"; + + case "&&": + return isLogicalExpression(parent, { + operator: "??" + }); + + case "??": + return isLogicalExpression(parent) && parent.operator !== "??"; + } +} + +function Identifier(node, parent, printStack) { + if (node.name === "let") { + const isFollowedByBracket = isMemberExpression(parent, { + object: node, + computed: true + }) || isOptionalMemberExpression(parent, { + object: node, + computed: true, + optional: false + }); + return isFirstInContext(printStack, { + expressionStatement: isFollowedByBracket, + forHead: isFollowedByBracket, + forInHead: isFollowedByBracket, + forOfHead: true + }); + } + + return node.name === "async" && isForOfStatement(parent) && node === parent.left; +} + +function isFirstInContext(printStack, { + expressionStatement = false, + arrowBody = false, + exportDefault = false, + forHead = false, + forInHead = false, + forOfHead = false +}) { + let i = printStack.length - 1; + let node = printStack[i]; + i--; + let parent = printStack[i]; + + while (i >= 0) { + if (expressionStatement && isExpressionStatement(parent, { + expression: node + }) || exportDefault && isExportDefaultDeclaration(parent, { + declaration: node + }) || arrowBody && isArrowFunctionExpression(parent, { + body: node + }) || forHead && isForStatement(parent, { + init: node + }) || forInHead && isForInStatement(parent, { + left: node + }) || forOfHead && isForOfStatement(parent, { + left: node + })) { + return true; + } + + if (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isConditional(parent, { + test: node + }) || isBinary(parent, { + left: node + }) || isAssignmentExpression(parent, { + left: node + })) { + node = parent; + i--; + parent = printStack[i]; + } else { + return false; + } + } + + return false; +} + +/***/ }), + +/***/ 67654: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.list = exports.nodes = void 0; + +var t = __nccwpck_require__(24479); + +const { + isArrayExpression, + isAssignmentExpression, + isBinary, + isBlockStatement, + isCallExpression, + isFunction, + isIdentifier, + isLiteral, + isMemberExpression, + isObjectExpression, + isOptionalCallExpression, + isOptionalMemberExpression, + isStringLiteral +} = t; + +function crawl(node, state = {}) { + if (isMemberExpression(node) || isOptionalMemberExpression(node)) { + crawl(node.object, state); + if (node.computed) crawl(node.property, state); + } else if (isBinary(node) || isAssignmentExpression(node)) { + crawl(node.left, state); + crawl(node.right, state); + } else if (isCallExpression(node) || isOptionalCallExpression(node)) { + state.hasCall = true; + crawl(node.callee, state); + } else if (isFunction(node)) { + state.hasFunction = true; + } else if (isIdentifier(node)) { + state.hasHelper = state.hasHelper || isHelper(node.callee); + } + + return state; +} + +function isHelper(node) { + if (isMemberExpression(node)) { + return isHelper(node.object) || isHelper(node.property); + } else if (isIdentifier(node)) { + return node.name === "require" || node.name[0] === "_"; + } else if (isCallExpression(node)) { + return isHelper(node.callee); + } else if (isBinary(node) || isAssignmentExpression(node)) { + return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); + } else { + return false; + } +} + +function isType(node) { + return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node); +} + +const nodes = { + AssignmentExpression(node) { + const state = crawl(node.right); + + if (state.hasCall && state.hasHelper || state.hasFunction) { + return { + before: state.hasFunction, + after: true + }; + } + }, + + SwitchCase(node, parent) { + return { + before: !!node.consequent.length || parent.cases[0] === node, + after: !node.consequent.length && parent.cases[parent.cases.length - 1] === node + }; + }, + + LogicalExpression(node) { + if (isFunction(node.left) || isFunction(node.right)) { + return { + after: true + }; + } + }, + + Literal(node) { + if (isStringLiteral(node) && node.value === "use strict") { + return { + after: true + }; + } + }, + + CallExpression(node) { + if (isFunction(node.callee) || isHelper(node)) { + return { + before: true, + after: true + }; + } + }, + + OptionalCallExpression(node) { + if (isFunction(node.callee)) { + return { + before: true, + after: true + }; + } + }, + + VariableDeclaration(node) { + for (let i = 0; i < node.declarations.length; i++) { + const declar = node.declarations[i]; + let enabled = isHelper(declar.id) && !isType(declar.init); + + if (!enabled) { + const state = crawl(declar.init); + enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; + } + + if (enabled) { + return { + before: true, + after: true + }; + } + } + }, + + IfStatement(node) { + if (isBlockStatement(node.consequent)) { + return { + before: true, + after: true + }; + } + } + +}; +exports.nodes = nodes; + +nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { + if (parent.properties[0] === node) { + return { + before: true + }; + } +}; + +nodes.ObjectTypeCallProperty = function (node, parent) { + var _parent$properties; + + if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) { + return { + before: true + }; + } +}; + +nodes.ObjectTypeIndexer = function (node, parent) { + var _parent$properties2, _parent$callPropertie; + + if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) { + return { + before: true + }; + } +}; + +nodes.ObjectTypeInternalSlot = function (node, parent) { + var _parent$properties3, _parent$callPropertie2, _parent$indexers; + + if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) { + return { + before: true + }; + } +}; + +const list = { + VariableDeclaration(node) { + return node.declarations.map(decl => decl.init); + }, + + ArrayExpression(node) { + return node.elements; + }, + + ObjectExpression(node) { + return node.properties; + } + +}; +exports.list = list; +[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { + if (typeof amounts === "boolean") { + amounts = { + after: amounts, + before: amounts + }; + } + + [type].concat(t.FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { + nodes[type] = function () { + return amounts; + }; + }); +}); + +/***/ }), + +/***/ 6558: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _buffer = __nccwpck_require__(76563); + +var n = __nccwpck_require__(83731); + +var t = __nccwpck_require__(24479); + +var generatorFunctions = __nccwpck_require__(47058); + +const SCIENTIFIC_NOTATION = /e/i; +const ZERO_DECIMAL_INTEGER = /\.0+$/; +const NON_DECIMAL_LITERAL = /^0[box]/; +const PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/; +const { + isProgram, + isFile, + isEmptyStatement +} = t; +const { + needsParens, + needsWhitespaceAfter, + needsWhitespaceBefore +} = n; + +class Printer { + constructor(format, map) { + this.inForStatementInitCounter = 0; + this._printStack = []; + this._indent = 0; + this._insideAux = false; + this._parenPushNewlineState = null; + this._noLineTerminator = false; + this._printAuxAfterOnNextUserNode = false; + this._printedComments = new WeakSet(); + this._endsWithInteger = false; + this._endsWithWord = false; + this.format = format; + this._buf = new _buffer.default(map); + } + + generate(ast) { + this.print(ast); + + this._maybeAddAuxComment(); + + return this._buf.get(); + } + + indent() { + if (this.format.compact || this.format.concise) return; + this._indent++; + } + + dedent() { + if (this.format.compact || this.format.concise) return; + this._indent--; + } + + semicolon(force = false) { + this._maybeAddAuxComment(); + + this._append(";", !force); + } + + rightBrace() { + if (this.format.minified) { + this._buf.removeLastSemicolon(); + } + + this.token("}"); + } + + space(force = false) { + if (this.format.compact) return; + + if (force) { + this._space(); + } else if (this._buf.hasContent()) { + const lastCp = this.getLastChar(); + + if (lastCp !== 32 && lastCp !== 10) { + this._space(); + } + } + } + + word(str) { + if (this._endsWithWord || this.endsWith(47) && str.charCodeAt(0) === 47) { + this._space(); + } + + this._maybeAddAuxComment(); + + this._append(str); + + this._endsWithWord = true; + } + + number(str) { + this.word(str); + this._endsWithInteger = Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46; + } + + token(str) { + const lastChar = this.getLastChar(); + const strFirst = str.charCodeAt(0); + + if (str === "--" && lastChar === 33 || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) { + this._space(); + } + + this._maybeAddAuxComment(); + + this._append(str); + } + + newline(i = 1) { + if (this.format.retainLines || this.format.compact) return; + + if (this.format.concise) { + this.space(); + return; + } + + const charBeforeNewline = this.endsWithCharAndNewline(); + if (charBeforeNewline === 10) return; + + if (charBeforeNewline === 123 || charBeforeNewline === 58) { + i--; + } + + if (i <= 0) return; + + for (let j = 0; j < i; j++) { + this._newline(); + } + } + + endsWith(char) { + return this.getLastChar() === char; + } + + getLastChar() { + return this._buf.getLastChar(); + } + + endsWithCharAndNewline() { + return this._buf.endsWithCharAndNewline(); + } + + removeTrailingNewline() { + this._buf.removeTrailingNewline(); + } + + exactSource(loc, cb) { + this._catchUp("start", loc); + + this._buf.exactSource(loc, cb); + } + + source(prop, loc) { + this._catchUp(prop, loc); + + this._buf.source(prop, loc); + } + + withSource(prop, loc, cb) { + this._catchUp(prop, loc); + + this._buf.withSource(prop, loc, cb); + } + + _space() { + this._append(" ", true); + } + + _newline() { + this._append("\n", true); + } + + _append(str, queue = false) { + this._maybeAddParen(str); + + this._maybeIndent(str); + + if (queue) this._buf.queue(str);else this._buf.append(str); + this._endsWithWord = false; + this._endsWithInteger = false; + } + + _maybeIndent(str) { + if (this._indent && this.endsWith(10) && str.charCodeAt(0) !== 10) { + this._buf.queue(this._getIndent()); + } + } + + _maybeAddParen(str) { + const parenPushNewlineState = this._parenPushNewlineState; + if (!parenPushNewlineState) return; + let i; + + for (i = 0; i < str.length && str[i] === " "; i++) continue; + + if (i === str.length) { + return; + } + + const cha = str[i]; + + if (cha !== "\n") { + if (cha !== "/" || i + 1 === str.length) { + this._parenPushNewlineState = null; + return; + } + + const chaPost = str[i + 1]; + + if (chaPost === "*") { + if (PURE_ANNOTATION_RE.test(str.slice(i + 2, str.length - 2))) { + return; + } + } else if (chaPost !== "/") { + this._parenPushNewlineState = null; + return; + } + } + + this.token("("); + this.indent(); + parenPushNewlineState.printed = true; + } + + _catchUp(prop, loc) { + if (!this.format.retainLines) return; + const pos = loc ? loc[prop] : null; + + if ((pos == null ? void 0 : pos.line) != null) { + const count = pos.line - this._buf.getCurrentLine(); + + for (let i = 0; i < count; i++) { + this._newline(); + } + } + } + + _getIndent() { + return this.format.indent.style.repeat(this._indent); + } + + startTerminatorless(isLabel = false) { + if (isLabel) { + this._noLineTerminator = true; + return null; + } else { + return this._parenPushNewlineState = { + printed: false + }; + } + } + + endTerminatorless(state) { + this._noLineTerminator = false; + + if (state != null && state.printed) { + this.dedent(); + this.newline(); + this.token(")"); + } + } + + print(node, parent) { + if (!node) return; + const oldConcise = this.format.concise; + + if (node._compact) { + this.format.concise = true; + } + + const printMethod = this[node.type]; + + if (!printMethod) { + throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node == null ? void 0 : node.constructor.name)}`); + } + + this._printStack.push(node); + + const oldInAux = this._insideAux; + this._insideAux = !node.loc; + + this._maybeAddAuxComment(this._insideAux && !oldInAux); + + let shouldPrintParens = needsParens(node, parent, this._printStack); + + if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) { + shouldPrintParens = true; + } + + if (shouldPrintParens) this.token("("); + + this._printLeadingComments(node); + + const loc = isProgram(node) || isFile(node) ? null : node.loc; + this.withSource("start", loc, () => { + printMethod.call(this, node, parent); + }); + + this._printTrailingComments(node); + + if (shouldPrintParens) this.token(")"); + + this._printStack.pop(); + + this.format.concise = oldConcise; + this._insideAux = oldInAux; + } + + _maybeAddAuxComment(enteredPositionlessNode) { + if (enteredPositionlessNode) this._printAuxBeforeComment(); + if (!this._insideAux) this._printAuxAfterComment(); + } + + _printAuxBeforeComment() { + if (this._printAuxAfterOnNextUserNode) return; + this._printAuxAfterOnNextUserNode = true; + const comment = this.format.auxiliaryCommentBefore; + + if (comment) { + this._printComment({ + type: "CommentBlock", + value: comment + }); + } + } + + _printAuxAfterComment() { + if (!this._printAuxAfterOnNextUserNode) return; + this._printAuxAfterOnNextUserNode = false; + const comment = this.format.auxiliaryCommentAfter; + + if (comment) { + this._printComment({ + type: "CommentBlock", + value: comment + }); + } + } + + getPossibleRaw(node) { + const extra = node.extra; + + if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) { + return extra.raw; + } + } + + printJoin(nodes, parent, opts = {}) { + if (!(nodes != null && nodes.length)) return; + if (opts.indent) this.indent(); + const newlineOpts = { + addNewlines: opts.addNewlines + }; + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + if (opts.statement) this._printNewline(true, node, parent, newlineOpts); + this.print(node, parent); + + if (opts.iterator) { + opts.iterator(node, i); + } + + if (opts.separator && i < nodes.length - 1) { + opts.separator.call(this); + } + + if (opts.statement) this._printNewline(false, node, parent, newlineOpts); + } + + if (opts.indent) this.dedent(); + } + + printAndIndentOnComments(node, parent) { + const indent = node.leadingComments && node.leadingComments.length > 0; + if (indent) this.indent(); + this.print(node, parent); + if (indent) this.dedent(); + } + + printBlock(parent) { + const node = parent.body; + + if (!isEmptyStatement(node)) { + this.space(); + } + + this.print(node, parent); + } + + _printTrailingComments(node) { + this._printComments(this._getComments(false, node)); + } + + _printLeadingComments(node) { + this._printComments(this._getComments(true, node), true); + } + + printInnerComments(node, indent = true) { + var _node$innerComments; + + if (!((_node$innerComments = node.innerComments) != null && _node$innerComments.length)) return; + if (indent) this.indent(); + + this._printComments(node.innerComments); + + if (indent) this.dedent(); + } + + printSequence(nodes, parent, opts = {}) { + opts.statement = true; + return this.printJoin(nodes, parent, opts); + } + + printList(items, parent, opts = {}) { + if (opts.separator == null) { + opts.separator = commaSeparator; + } + + return this.printJoin(items, parent, opts); + } + + _printNewline(leading, node, parent, opts) { + if (this.format.retainLines || this.format.compact) return; + + if (this.format.concise) { + this.space(); + return; + } + + let lines = 0; + + if (this._buf.hasContent()) { + if (!leading) lines++; + if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; + const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter; + if (needs(node, parent)) lines++; + } + + this.newline(Math.min(2, lines)); + } + + _getComments(leading, node) { + return node && (leading ? node.leadingComments : node.trailingComments) || []; + } + + _printComment(comment, skipNewLines) { + if (!this.format.shouldPrintComment(comment.value)) return; + if (comment.ignore) return; + if (this._printedComments.has(comment)) return; + + this._printedComments.add(comment); + + const isBlockComment = comment.type === "CommentBlock"; + const printNewLines = isBlockComment && !skipNewLines && !this._noLineTerminator; + if (printNewLines && this._buf.hasContent()) this.newline(1); + const lastCharCode = this.getLastChar(); + + if (lastCharCode !== 91 && lastCharCode !== 123) { + this.space(); + } + + let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`; + + if (isBlockComment && this.format.indent.adjustMultilineComment) { + var _comment$loc; + + const offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column; + + if (offset) { + const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); + val = val.replace(newlineRegex, "\n"); + } + + const indentSize = Math.max(this._getIndent().length, this.format.retainLines ? 0 : this._buf.getCurrentColumn()); + val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`); + } + + if (this.endsWith(47)) this._space(); + this.withSource("start", comment.loc, () => { + this._append(val); + }); + if (printNewLines) this.newline(1); + } + + _printComments(comments, inlinePureAnnotation) { + if (!(comments != null && comments.length)) return; + + if (inlinePureAnnotation && comments.length === 1 && PURE_ANNOTATION_RE.test(comments[0].value)) { + this._printComment(comments[0], this._buf.hasContent() && !this.endsWith(10)); + } else { + for (const comment of comments) { + this._printComment(comment); + } + } + } + + printAssertions(node) { + var _node$assertions; + + if ((_node$assertions = node.assertions) != null && _node$assertions.length) { + this.space(); + this.word("assert"); + this.space(); + this.token("{"); + this.space(); + this.printList(node.assertions, node); + this.space(); + this.token("}"); + } + } + +} + +Object.assign(Printer.prototype, generatorFunctions); +{ + Printer.prototype.Noop = function Noop() {}; +} +var _default = Printer; +exports["default"] = _default; + +function commaSeparator() { + this.token(","); + this.space(); +} + +/***/ }), + +/***/ 70826: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _sourceMap = __nccwpck_require__(45018); + +class SourceMap { + constructor(opts, code) { + this._cachedMap = void 0; + this._code = void 0; + this._opts = void 0; + this._rawMappings = void 0; + this._lastGenLine = void 0; + this._lastSourceLine = void 0; + this._lastSourceColumn = void 0; + this._cachedMap = null; + this._code = code; + this._opts = opts; + this._rawMappings = []; + } + + get() { + if (!this._cachedMap) { + const map = this._cachedMap = new _sourceMap.SourceMapGenerator({ + sourceRoot: this._opts.sourceRoot + }); + const code = this._code; + + if (typeof code === "string") { + map.setSourceContent(this._opts.sourceFileName.replace(/\\/g, "/"), code); + } else if (typeof code === "object") { + Object.keys(code).forEach(sourceFileName => { + map.setSourceContent(sourceFileName.replace(/\\/g, "/"), code[sourceFileName]); + }); + } + + this._rawMappings.forEach(mapping => map.addMapping(mapping), map); + } + + return this._cachedMap.toJSON(); + } + + getRawMappings() { + return this._rawMappings.slice(); + } + + mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) { + if (this._lastGenLine !== generatedLine && line === null) return; + + if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) { + return; + } + + this._cachedMap = null; + this._lastGenLine = generatedLine; + this._lastSourceLine = line; + this._lastSourceColumn = column; + + this._rawMappings.push({ + name: identifierName || undefined, + generated: { + line: generatedLine, + column: generatedColumn + }, + source: line == null ? undefined : (filename || this._opts.sourceFileName).replace(/\\/g, "/"), + original: line == null ? undefined : { + line: line, + column: column + } + }); + } + +} + +exports["default"] = SourceMap; + +/***/ }), + +/***/ 550: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var _helperGetFunctionArity = __nccwpck_require__(93811); + +var _template = __nccwpck_require__(20153); + +var t = __nccwpck_require__(24479); + +const buildPropertyMethodAssignmentWrapper = (0, _template.default)(` + (function (FUNCTION_KEY) { + function FUNCTION_ID() { + return FUNCTION_KEY.apply(this, arguments); + } + + FUNCTION_ID.toString = function () { + return FUNCTION_KEY.toString(); + } + + return FUNCTION_ID; + })(FUNCTION) +`); +const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template.default)(` + (function (FUNCTION_KEY) { + function* FUNCTION_ID() { + return yield* FUNCTION_KEY.apply(this, arguments); + } + + FUNCTION_ID.toString = function () { + return FUNCTION_KEY.toString(); + }; + + return FUNCTION_ID; + })(FUNCTION) +`); +const visitor = { + "ReferencedIdentifier|BindingIdentifier"(path, state) { + if (path.node.name !== state.name) return; + const localDeclar = path.scope.getBindingIdentifier(state.name); + if (localDeclar !== state.outerDeclar) return; + state.selfReference = true; + path.stop(); + } + +}; + +function getNameFromLiteralId(id) { + if (t.isNullLiteral(id)) { + return "null"; + } + + if (t.isRegExpLiteral(id)) { + return `_${id.pattern}_${id.flags}`; + } + + if (t.isTemplateLiteral(id)) { + return id.quasis.map(quasi => quasi.value.raw).join(""); + } + + if (id.value !== undefined) { + return id.value + ""; + } + + return ""; +} + +function wrap(state, method, id, scope) { + if (state.selfReference) { + if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) { + scope.rename(id.name); + } else { + if (!t.isFunction(method)) return; + let build = buildPropertyMethodAssignmentWrapper; + + if (method.generator) { + build = buildGeneratorPropertyMethodAssignmentWrapper; + } + + const template = build({ + FUNCTION: method, + FUNCTION_ID: id, + FUNCTION_KEY: scope.generateUidIdentifier(id.name) + }).expression; + const params = template.callee.body.body[0].params; + + for (let i = 0, len = (0, _helperGetFunctionArity.default)(method); i < len; i++) { + params.push(scope.generateUidIdentifier("x")); + } + + return template; + } + } + + method.id = id; + scope.getProgramParent().references[id.name] = true; +} + +function visit(node, name, scope) { + const state = { + selfAssignment: false, + selfReference: false, + outerDeclar: scope.getBindingIdentifier(name), + references: [], + name: name + }; + const binding = scope.getOwnBinding(name); + + if (binding) { + if (binding.kind === "param") { + state.selfReference = true; + } else {} + } else if (state.outerDeclar || scope.hasGlobal(name)) { + scope.traverse(node, visitor, state); + } + + return state; +} + +function _default({ + node, + parent, + scope, + id +}, localBinding = false) { + if (node.id) return; + + if ((t.isObjectProperty(parent) || t.isObjectMethod(parent, { + kind: "method" + })) && (!parent.computed || t.isLiteral(parent.key))) { + id = parent.key; + } else if (t.isVariableDeclarator(parent)) { + id = parent.id; + + if (t.isIdentifier(id) && !localBinding) { + const binding = scope.parent.getBinding(id.name); + + if (binding && binding.constant && scope.getBinding(id.name) === binding) { + node.id = t.cloneNode(id); + node.id[t.NOT_LOCAL_BINDING] = true; + return; + } + } + } else if (t.isAssignmentExpression(parent, { + operator: "=" + })) { + id = parent.left; + } else if (!id) { + return; + } + + let name; + + if (id && t.isLiteral(id)) { + name = getNameFromLiteralId(id); + } else if (id && t.isIdentifier(id)) { + name = id.name; + } + + if (name === undefined) { + return; + } + + name = t.toBindingIdentifierName(name); + id = t.identifier(name); + id[t.NOT_LOCAL_BINDING] = true; + const state = visit(node, name, scope); + return wrap(state, node, id, scope) || node; +} + +/***/ }), + +/***/ 93811: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var t = __nccwpck_require__(24479); + +function _default(node) { + const params = node.params; + + for (let i = 0; i < params.length; i++) { + const param = params[i]; + + if (t.isAssignmentPattern(param) || t.isRestElement(param)) { + return i; + } + } + + return params.length; +} + +/***/ }), + +/***/ 75327: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = hoistVariables; + +var t = __nccwpck_require__(24479); + +const visitor = { + Scope(path, state) { + if (state.kind === "let") path.skip(); + }, + + FunctionParent(path) { + path.skip(); + }, + + VariableDeclaration(path, state) { + if (state.kind && path.node.kind !== state.kind) return; + const nodes = []; + const declarations = path.get("declarations"); + let firstId; + + for (const declar of declarations) { + firstId = declar.node.id; + + if (declar.node.init) { + nodes.push(t.expressionStatement(t.assignmentExpression("=", declar.node.id, declar.node.init))); + } + + for (const name of Object.keys(declar.getBindingIdentifiers())) { + state.emit(t.identifier(name), name, declar.node.init !== null); + } + } + + if (path.parentPath.isFor({ + left: path.node + })) { + path.replaceWith(firstId); + } else { + path.replaceWithMultiple(nodes); + } + } + +}; + +function hoistVariables(path, emit, kind = "var") { + path.traverse(visitor, { + kind, + emit + }); +} + +/***/ }), + +/***/ 53546: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var t = __nccwpck_require__(24479); + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { + return e[k]; + } + }); + } + }); + } + n['default'] = e; + return Object.freeze(n); +} + +var t__namespace = /*#__PURE__*/_interopNamespace(t); + +function willPathCastToBoolean(path) { + const maybeWrapped = path; + const { + node, + parentPath + } = maybeWrapped; + + if (parentPath.isLogicalExpression()) { + const { + operator, + right + } = parentPath.node; + + if (operator === "&&" || operator === "||" || operator === "??" && node === right) { + return willPathCastToBoolean(parentPath); + } + } + + if (parentPath.isSequenceExpression()) { + const { + expressions + } = parentPath.node; + + if (expressions[expressions.length - 1] === node) { + return willPathCastToBoolean(parentPath); + } else { + return true; + } + } + + return parentPath.isConditional({ + test: node + }) || parentPath.isUnaryExpression({ + operator: "!" + }) || parentPath.isLoop({ + test: node + }); +} + +class AssignmentMemoiser { + constructor() { + this._map = void 0; + this._map = new WeakMap(); + } + + has(key) { + return this._map.has(key); + } + + get(key) { + if (!this.has(key)) return; + + const record = this._map.get(key); + + const { + value + } = record; + record.count--; + + if (record.count === 0) { + return t__namespace.assignmentExpression("=", value, key); + } + + return value; + } + + set(key, value, count) { + return this._map.set(key, { + count, + value + }); + } + +} + +function toNonOptional(path, base) { + const { + node + } = path; + + if (t__namespace.isOptionalMemberExpression(node)) { + return t__namespace.memberExpression(base, node.property, node.computed); + } + + if (path.isOptionalCallExpression()) { + const callee = path.get("callee"); + + if (path.node.optional && callee.isOptionalMemberExpression()) { + const { + object + } = callee.node; + const context = path.scope.maybeGenerateMemoised(object) || object; + callee.get("object").replaceWith(t__namespace.assignmentExpression("=", context, object)); + return t__namespace.callExpression(t__namespace.memberExpression(base, t__namespace.identifier("call")), [context, ...path.node.arguments]); + } + + return t__namespace.callExpression(base, path.node.arguments); + } + + return path.node; +} + +function isInDetachedTree(path) { + while (path) { + if (path.isProgram()) break; + const { + parentPath, + container, + listKey + } = path; + const parentNode = parentPath.node; + + if (listKey) { + if (container !== parentNode[listKey]) return true; + } else { + if (container !== parentNode) return true; + } + + path = parentPath; + } + + return false; +} + +const handle = { + memoise() {}, + + handle(member, noDocumentAll) { + const { + node, + parent, + parentPath, + scope + } = member; + + if (member.isOptionalMemberExpression()) { + if (isInDetachedTree(member)) return; + const endPath = member.find(({ + node, + parent + }) => { + if (t__namespace.isOptionalMemberExpression(parent)) { + return parent.optional || parent.object !== node; + } + + if (t__namespace.isOptionalCallExpression(parent)) { + return node !== member.node && parent.optional || parent.callee !== node; + } + + return true; + }); + + if (scope.path.isPattern()) { + endPath.replaceWith(t__namespace.callExpression(t__namespace.arrowFunctionExpression([], endPath.node), [])); + return; + } + + const willEndPathCastToBoolean = willPathCastToBoolean(endPath); + const rootParentPath = endPath.parentPath; + + if (rootParentPath.isUpdateExpression({ + argument: node + }) || rootParentPath.isAssignmentExpression({ + left: node + })) { + throw member.buildCodeFrameError(`can't handle assignment`); + } + + const isDeleteOperation = rootParentPath.isUnaryExpression({ + operator: "delete" + }); + + if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) { + throw member.buildCodeFrameError(`can't delete a private class element`); + } + + let startingOptional = member; + + for (;;) { + if (startingOptional.isOptionalMemberExpression()) { + if (startingOptional.node.optional) break; + startingOptional = startingOptional.get("object"); + continue; + } else if (startingOptional.isOptionalCallExpression()) { + if (startingOptional.node.optional) break; + startingOptional = startingOptional.get("callee"); + continue; + } + + throw new Error(`Internal error: unexpected ${startingOptional.node.type}`); + } + + const startingProp = startingOptional.isOptionalMemberExpression() ? "object" : "callee"; + const startingNode = startingOptional.node[startingProp]; + const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode); + const baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode; + const parentIsOptionalCall = parentPath.isOptionalCallExpression({ + callee: node + }); + + const isOptionalCall = parent => parentIsOptionalCall; + + const parentIsCall = parentPath.isCallExpression({ + callee: node + }); + startingOptional.replaceWith(toNonOptional(startingOptional, baseRef)); + + if (isOptionalCall()) { + if (parent.optional) { + parentPath.replaceWith(this.optionalCall(member, parent.arguments)); + } else { + parentPath.replaceWith(this.call(member, parent.arguments)); + } + } else if (parentIsCall) { + member.replaceWith(this.boundGet(member)); + } else { + member.replaceWith(this.get(member)); + } + + let regular = member.node; + + for (let current = member; current !== endPath;) { + const parentPath = current.parentPath; + + if (parentPath === endPath && isOptionalCall() && parent.optional) { + regular = parentPath.node; + break; + } + + regular = toNonOptional(parentPath, regular); + current = parentPath; + } + + let context; + const endParentPath = endPath.parentPath; + + if (t__namespace.isMemberExpression(regular) && endParentPath.isOptionalCallExpression({ + callee: endPath.node, + optional: true + })) { + const { + object + } = regular; + context = member.scope.maybeGenerateMemoised(object); + + if (context) { + regular.object = t__namespace.assignmentExpression("=", context, object); + } + } + + let replacementPath = endPath; + + if (isDeleteOperation) { + replacementPath = endParentPath; + regular = endParentPath.node; + } + + const baseMemoised = baseNeedsMemoised ? t__namespace.assignmentExpression("=", t__namespace.cloneNode(baseRef), t__namespace.cloneNode(startingNode)) : t__namespace.cloneNode(baseRef); + + if (willEndPathCastToBoolean) { + let nonNullishCheck; + + if (noDocumentAll) { + nonNullishCheck = t__namespace.binaryExpression("!=", baseMemoised, t__namespace.nullLiteral()); + } else { + nonNullishCheck = t__namespace.logicalExpression("&&", t__namespace.binaryExpression("!==", baseMemoised, t__namespace.nullLiteral()), t__namespace.binaryExpression("!==", t__namespace.cloneNode(baseRef), scope.buildUndefinedNode())); + } + + replacementPath.replaceWith(t__namespace.logicalExpression("&&", nonNullishCheck, regular)); + } else { + let nullishCheck; + + if (noDocumentAll) { + nullishCheck = t__namespace.binaryExpression("==", baseMemoised, t__namespace.nullLiteral()); + } else { + nullishCheck = t__namespace.logicalExpression("||", t__namespace.binaryExpression("===", baseMemoised, t__namespace.nullLiteral()), t__namespace.binaryExpression("===", t__namespace.cloneNode(baseRef), scope.buildUndefinedNode())); + } + + replacementPath.replaceWith(t__namespace.conditionalExpression(nullishCheck, isDeleteOperation ? t__namespace.booleanLiteral(true) : scope.buildUndefinedNode(), regular)); + } + + if (context) { + const endParent = endParentPath.node; + endParentPath.replaceWith(t__namespace.optionalCallExpression(t__namespace.optionalMemberExpression(endParent.callee, t__namespace.identifier("call"), false, true), [t__namespace.cloneNode(context), ...endParent.arguments], false)); + } + + return; + } + + if (t__namespace.isUpdateExpression(parent, { + argument: node + })) { + if (this.simpleSet) { + member.replaceWith(this.simpleSet(member)); + return; + } + + const { + operator, + prefix + } = parent; + this.memoise(member, 2); + const value = t__namespace.binaryExpression(operator[0], t__namespace.unaryExpression("+", this.get(member)), t__namespace.numericLiteral(1)); + + if (prefix) { + parentPath.replaceWith(this.set(member, value)); + } else { + const { + scope + } = member; + const ref = scope.generateUidIdentifierBasedOnNode(node); + scope.push({ + id: ref + }); + value.left = t__namespace.assignmentExpression("=", t__namespace.cloneNode(ref), value.left); + parentPath.replaceWith(t__namespace.sequenceExpression([this.set(member, value), t__namespace.cloneNode(ref)])); + } + + return; + } + + if (parentPath.isAssignmentExpression({ + left: node + })) { + if (this.simpleSet) { + member.replaceWith(this.simpleSet(member)); + return; + } + + const { + operator, + right: value + } = parentPath.node; + + if (operator === "=") { + parentPath.replaceWith(this.set(member, value)); + } else { + const operatorTrunc = operator.slice(0, -1); + + if (t__namespace.LOGICAL_OPERATORS.includes(operatorTrunc)) { + this.memoise(member, 1); + parentPath.replaceWith(t__namespace.logicalExpression(operatorTrunc, this.get(member), this.set(member, value))); + } else { + this.memoise(member, 2); + parentPath.replaceWith(this.set(member, t__namespace.binaryExpression(operatorTrunc, this.get(member), value))); + } + } + + return; + } + + if (parentPath.isCallExpression({ + callee: node + })) { + parentPath.replaceWith(this.call(member, parentPath.node.arguments)); + return; + } + + if (parentPath.isOptionalCallExpression({ + callee: node + })) { + if (scope.path.isPattern()) { + parentPath.replaceWith(t__namespace.callExpression(t__namespace.arrowFunctionExpression([], parentPath.node), [])); + return; + } + + parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments)); + return; + } + + if (parentPath.isForXStatement({ + left: node + }) || parentPath.isObjectProperty({ + value: node + }) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({ + left: node + }) && parentPath.parentPath.isObjectProperty({ + value: parent + }) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({ + left: node + }) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) { + member.replaceWith(this.destructureSet(member)); + return; + } + + if (parentPath.isTaggedTemplateExpression()) { + member.replaceWith(this.boundGet(member)); + } else { + member.replaceWith(this.get(member)); + } + } + +}; +function memberExpressionToFunctions(path, visitor, state) { + path.traverse(visitor, Object.assign({}, handle, state, { + memoiser: new AssignmentMemoiser() + })); +} + +exports["default"] = memberExpressionToFunctions; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 6591: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _assert = __nccwpck_require__(39491); + +var t = __nccwpck_require__(24479); + +class ImportBuilder { + constructor(importedSource, scope, hub) { + this._statements = []; + this._resultName = null; + this._scope = null; + this._hub = null; + this._importedSource = void 0; + this._scope = scope; + this._hub = hub; + this._importedSource = importedSource; + } + + done() { + return { + statements: this._statements, + resultName: this._resultName + }; + } + + import() { + this._statements.push(t.importDeclaration([], t.stringLiteral(this._importedSource))); + + return this; + } + + require() { + this._statements.push(t.expressionStatement(t.callExpression(t.identifier("require"), [t.stringLiteral(this._importedSource)]))); + + return this; + } + + namespace(name = "namespace") { + const local = this._scope.generateUidIdentifier(name); + + const statement = this._statements[this._statements.length - 1]; + + _assert(statement.type === "ImportDeclaration"); + + _assert(statement.specifiers.length === 0); + + statement.specifiers = [t.importNamespaceSpecifier(local)]; + this._resultName = t.cloneNode(local); + return this; + } + + default(name) { + name = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; + + _assert(statement.type === "ImportDeclaration"); + + _assert(statement.specifiers.length === 0); + + statement.specifiers = [t.importDefaultSpecifier(name)]; + this._resultName = t.cloneNode(name); + return this; + } + + named(name, importName) { + if (importName === "default") return this.default(name); + name = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; + + _assert(statement.type === "ImportDeclaration"); + + _assert(statement.specifiers.length === 0); + + statement.specifiers = [t.importSpecifier(name, t.identifier(importName))]; + this._resultName = t.cloneNode(name); + return this; + } + + var(name) { + name = this._scope.generateUidIdentifier(name); + let statement = this._statements[this._statements.length - 1]; + + if (statement.type !== "ExpressionStatement") { + _assert(this._resultName); + + statement = t.expressionStatement(this._resultName); + + this._statements.push(statement); + } + + this._statements[this._statements.length - 1] = t.variableDeclaration("var", [t.variableDeclarator(name, statement.expression)]); + this._resultName = t.cloneNode(name); + return this; + } + + defaultInterop() { + return this._interop(this._hub.addHelper("interopRequireDefault")); + } + + wildcardInterop() { + return this._interop(this._hub.addHelper("interopRequireWildcard")); + } + + _interop(callee) { + const statement = this._statements[this._statements.length - 1]; + + if (statement.type === "ExpressionStatement") { + statement.expression = t.callExpression(callee, [statement.expression]); + } else if (statement.type === "VariableDeclaration") { + _assert(statement.declarations.length === 1); + + statement.declarations[0].init = t.callExpression(callee, [statement.declarations[0].init]); + } else { + _assert.fail("Unexpected type."); + } + + return this; + } + + prop(name) { + const statement = this._statements[this._statements.length - 1]; + + if (statement.type === "ExpressionStatement") { + statement.expression = t.memberExpression(statement.expression, t.identifier(name)); + } else if (statement.type === "VariableDeclaration") { + _assert(statement.declarations.length === 1); + + statement.declarations[0].init = t.memberExpression(statement.declarations[0].init, t.identifier(name)); + } else { + _assert.fail("Unexpected type:" + statement.type); + } + + return this; + } + + read(name) { + this._resultName = t.memberExpression(this._resultName, t.identifier(name)); + } + +} + +exports["default"] = ImportBuilder; + +/***/ }), + +/***/ 44872: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _assert = __nccwpck_require__(39491); + +var t = __nccwpck_require__(24479); + +var _importBuilder = __nccwpck_require__(6591); + +var _isModule = __nccwpck_require__(21719); + +class ImportInjector { + constructor(path, importedSource, opts) { + this._defaultOpts = { + importedSource: null, + importedType: "commonjs", + importedInterop: "babel", + importingInterop: "babel", + ensureLiveReference: false, + ensureNoContext: false, + importPosition: "before" + }; + const programPath = path.find(p => p.isProgram()); + this._programPath = programPath; + this._programScope = programPath.scope; + this._hub = programPath.hub; + this._defaultOpts = this._applyDefaults(importedSource, opts, true); + } + + addDefault(importedSourceIn, opts) { + return this.addNamed("default", importedSourceIn, opts); + } + + addNamed(importName, importedSourceIn, opts) { + _assert(typeof importName === "string"); + + return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName); + } + + addNamespace(importedSourceIn, opts) { + return this._generateImport(this._applyDefaults(importedSourceIn, opts), null); + } + + addSideEffect(importedSourceIn, opts) { + return this._generateImport(this._applyDefaults(importedSourceIn, opts), false); + } + + _applyDefaults(importedSource, opts, isInit = false) { + const optsList = []; + + if (typeof importedSource === "string") { + optsList.push({ + importedSource + }); + optsList.push(opts); + } else { + _assert(!opts, "Unexpected secondary arguments."); + + optsList.push(importedSource); + } + + const newOpts = Object.assign({}, this._defaultOpts); + + for (const opts of optsList) { + if (!opts) continue; + Object.keys(newOpts).forEach(key => { + if (opts[key] !== undefined) newOpts[key] = opts[key]; + }); + + if (!isInit) { + if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint; + if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist; + } + } + + return newOpts; + } + + _generateImport(opts, importName) { + const isDefault = importName === "default"; + const isNamed = !!importName && !isDefault; + const isNamespace = importName === null; + const { + importedSource, + importedType, + importedInterop, + importingInterop, + ensureLiveReference, + ensureNoContext, + nameHint, + importPosition, + blockHoist + } = opts; + let name = nameHint || importName; + const isMod = (0, _isModule.default)(this._programPath); + const isModuleForNode = isMod && importingInterop === "node"; + const isModuleForBabel = isMod && importingInterop === "babel"; + + if (importPosition === "after" && !isMod) { + throw new Error(`"importPosition": "after" is only supported in modules`); + } + + const builder = new _importBuilder.default(importedSource, this._programScope, this._hub); + + if (importedType === "es6") { + if (!isModuleForNode && !isModuleForBabel) { + throw new Error("Cannot import an ES6 module from CommonJS"); + } + + builder.import(); + + if (isNamespace) { + builder.namespace(nameHint || importedSource); + } else if (isDefault || isNamed) { + builder.named(name, importName); + } + } else if (importedType !== "commonjs") { + throw new Error(`Unexpected interopType "${importedType}"`); + } else if (importedInterop === "babel") { + if (isModuleForNode) { + name = name !== "default" ? name : importedSource; + const es6Default = `${importedSource}$es6Default`; + builder.import(); + + if (isNamespace) { + builder.default(es6Default).var(name || importedSource).wildcardInterop(); + } else if (isDefault) { + if (ensureLiveReference) { + builder.default(es6Default).var(name || importedSource).defaultInterop().read("default"); + } else { + builder.default(es6Default).var(name).defaultInterop().prop(importName); + } + } else if (isNamed) { + builder.default(es6Default).read(importName); + } + } else if (isModuleForBabel) { + builder.import(); + + if (isNamespace) { + builder.namespace(name || importedSource); + } else if (isDefault || isNamed) { + builder.named(name, importName); + } + } else { + builder.require(); + + if (isNamespace) { + builder.var(name || importedSource).wildcardInterop(); + } else if ((isDefault || isNamed) && ensureLiveReference) { + if (isDefault) { + name = name !== "default" ? name : importedSource; + builder.var(name).read(importName); + builder.defaultInterop(); + } else { + builder.var(importedSource).read(importName); + } + } else if (isDefault) { + builder.var(name).defaultInterop().prop(importName); + } else if (isNamed) { + builder.var(name).prop(importName); + } + } + } else if (importedInterop === "compiled") { + if (isModuleForNode) { + builder.import(); + + if (isNamespace) { + builder.default(name || importedSource); + } else if (isDefault || isNamed) { + builder.default(importedSource).read(name); + } + } else if (isModuleForBabel) { + builder.import(); + + if (isNamespace) { + builder.namespace(name || importedSource); + } else if (isDefault || isNamed) { + builder.named(name, importName); + } + } else { + builder.require(); + + if (isNamespace) { + builder.var(name || importedSource); + } else if (isDefault || isNamed) { + if (ensureLiveReference) { + builder.var(importedSource).read(name); + } else { + builder.prop(importName).var(name); + } + } + } + } else if (importedInterop === "uncompiled") { + if (isDefault && ensureLiveReference) { + throw new Error("No live reference for commonjs default"); + } + + if (isModuleForNode) { + builder.import(); + + if (isNamespace) { + builder.default(name || importedSource); + } else if (isDefault) { + builder.default(name); + } else if (isNamed) { + builder.default(importedSource).read(name); + } + } else if (isModuleForBabel) { + builder.import(); + + if (isNamespace) { + builder.default(name || importedSource); + } else if (isDefault) { + builder.default(name); + } else if (isNamed) { + builder.named(name, importName); + } + } else { + builder.require(); + + if (isNamespace) { + builder.var(name || importedSource); + } else if (isDefault) { + builder.var(name); + } else if (isNamed) { + if (ensureLiveReference) { + builder.var(importedSource).read(name); + } else { + builder.var(name).prop(importName); + } + } + } + } else { + throw new Error(`Unknown importedInterop "${importedInterop}".`); + } + + const { + statements, + resultName + } = builder.done(); + + this._insertStatements(statements, importPosition, blockHoist); + + if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") { + return t.sequenceExpression([t.numericLiteral(0), resultName]); + } + + return resultName; + } + + _insertStatements(statements, importPosition = "before", blockHoist = 3) { + const body = this._programPath.get("body"); + + if (importPosition === "after") { + for (let i = body.length - 1; i >= 0; i--) { + if (body[i].isImportDeclaration()) { + body[i].insertAfter(statements); + return; + } + } + } else { + statements.forEach(node => { + node._blockHoist = blockHoist; + }); + const targetPath = body.find(p => { + const val = p.node._blockHoist; + return Number.isFinite(val) && val < 4; + }); + + if (targetPath) { + targetPath.insertBefore(statements); + return; + } + } + + this._programPath.unshiftContainer("body", statements); + } + +} + +exports["default"] = ImportInjector; + +/***/ }), + +/***/ 29115: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addDefault = addDefault; +exports.addNamed = addNamed; +exports.addNamespace = addNamespace; +exports.addSideEffect = addSideEffect; +Object.defineProperty(exports, "ImportInjector", ({ + enumerable: true, + get: function () { + return _importInjector.default; + } +})); +Object.defineProperty(exports, "isModule", ({ + enumerable: true, + get: function () { + return _isModule.default; + } +})); + +var _importInjector = __nccwpck_require__(44872); + +var _isModule = __nccwpck_require__(21719); + +function addDefault(path, importedSource, opts) { + return new _importInjector.default(path).addDefault(importedSource, opts); +} + +function addNamed(path, name, importedSource, opts) { + return new _importInjector.default(path).addNamed(name, importedSource, opts); +} + +function addNamespace(path, importedSource, opts) { + return new _importInjector.default(path).addNamespace(importedSource, opts); +} + +function addSideEffect(path, importedSource, opts) { + return new _importInjector.default(path).addSideEffect(importedSource, opts); +} + +/***/ }), + +/***/ 21719: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isModule; + +function isModule(path) { + const { + sourceType + } = path.node; + + if (sourceType !== "module" && sourceType !== "script") { + throw path.buildCodeFrameError(`Unknown sourceType "${sourceType}", cannot transform.`); + } + + return path.node.sourceType === "module"; +} + +/***/ }), + +/***/ 76829: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getModuleName; +{ + const originalGetModuleName = getModuleName; + + exports["default"] = getModuleName = function getModuleName(rootOpts, pluginOpts) { + var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo; + + return originalGetModuleName(rootOpts, { + moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId, + moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds, + getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId, + moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot + }); + }; +} + +function getModuleName(rootOpts, pluginOpts) { + const { + filename, + filenameRelative = filename, + sourceRoot = pluginOpts.moduleRoot + } = rootOpts; + const { + moduleId, + moduleIds = !!moduleId, + getModuleId, + moduleRoot = sourceRoot + } = pluginOpts; + if (!moduleIds) return null; + + if (moduleId != null && !getModuleId) { + return moduleId; + } + + let moduleName = moduleRoot != null ? moduleRoot + "/" : ""; + + if (filenameRelative) { + const sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : ""; + moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.(\w*?)$/, ""); + } + + moduleName = moduleName.replace(/\\/g, "/"); + + if (getModuleId) { + return getModuleId(moduleName) || moduleName; + } else { + return moduleName; + } +} + +/***/ }), + +/***/ 67797: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader; +exports.ensureStatementsHoisted = ensureStatementsHoisted; +exports.wrapInterop = wrapInterop; +exports.buildNamespaceInitStatements = buildNamespaceInitStatements; +Object.defineProperty(exports, "isModule", ({ + enumerable: true, + get: function () { + return _helperModuleImports.isModule; + } +})); +Object.defineProperty(exports, "rewriteThis", ({ + enumerable: true, + get: function () { + return _rewriteThis.default; + } +})); +Object.defineProperty(exports, "hasExports", ({ + enumerable: true, + get: function () { + return _normalizeAndLoadMetadata.hasExports; + } +})); +Object.defineProperty(exports, "isSideEffectImport", ({ + enumerable: true, + get: function () { + return _normalizeAndLoadMetadata.isSideEffectImport; + } +})); +Object.defineProperty(exports, "getModuleName", ({ + enumerable: true, + get: function () { + return _getModuleName.default; + } +})); + +var _assert = __nccwpck_require__(39491); + +var t = __nccwpck_require__(24479); + +var _template = __nccwpck_require__(20153); + +var _helperModuleImports = __nccwpck_require__(29115); + +var _rewriteThis = __nccwpck_require__(51707); + +var _rewriteLiveReferences = __nccwpck_require__(54998); + +var _normalizeAndLoadMetadata = __nccwpck_require__(99485); + +var _getModuleName = __nccwpck_require__(76829); + +function rewriteModuleStatementsAndPrepareHeader(path, { + loose, + exportName, + strict, + allowTopLevelThis, + strictMode, + noInterop, + importInterop = noInterop ? "none" : "babel", + lazy, + esNamespaceOnly, + constantReexports = loose, + enumerableModuleMeta = loose, + noIncompleteNsImportDetection +}) { + (0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop); + + _assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script"); + + path.node.sourceType = "script"; + const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, { + importInterop, + initializeReexports: constantReexports, + lazy, + esNamespaceOnly + }); + + if (!allowTopLevelThis) { + (0, _rewriteThis.default)(path); + } + + (0, _rewriteLiveReferences.default)(path, meta); + + if (strictMode !== false) { + const hasStrict = path.node.directives.some(directive => { + return directive.value.value === "use strict"; + }); + + if (!hasStrict) { + path.unshiftContainer("directives", t.directive(t.directiveLiteral("use strict"))); + } + } + + const headers = []; + + if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) { + headers.push(buildESModuleHeader(meta, enumerableModuleMeta)); + } + + const nameList = buildExportNameListDeclaration(path, meta); + + if (nameList) { + meta.exportNameListName = nameList.name; + headers.push(nameList.statement); + } + + headers.push(...buildExportInitializationStatements(path, meta, constantReexports, noIncompleteNsImportDetection)); + return { + meta, + headers + }; +} + +function ensureStatementsHoisted(statements) { + statements.forEach(header => { + header._blockHoist = 3; + }); +} + +function wrapInterop(programPath, expr, type) { + if (type === "none") { + return null; + } + + if (type === "node-namespace") { + return t.callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, t.booleanLiteral(true)]); + } else if (type === "node-default") { + return null; + } + + let helper; + + if (type === "default") { + helper = "interopRequireDefault"; + } else if (type === "namespace") { + helper = "interopRequireWildcard"; + } else { + throw new Error(`Unknown interop: ${type}`); + } + + return t.callExpression(programPath.hub.addHelper(helper), [expr]); +} + +function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false) { + const statements = []; + let srcNamespace = t.identifier(sourceMetadata.name); + if (sourceMetadata.lazy) srcNamespace = t.callExpression(srcNamespace, []); + + for (const localName of sourceMetadata.importsNamespace) { + if (localName === sourceMetadata.name) continue; + statements.push(_template.default.statement`var NAME = SOURCE;`({ + NAME: localName, + SOURCE: t.cloneNode(srcNamespace) + })); + } + + if (constantReexports) { + statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true)); + } + + for (const exportName of sourceMetadata.reexportNamespace) { + statements.push((sourceMetadata.lazy ? _template.default.statement` + Object.defineProperty(EXPORTS, "NAME", { + enumerable: true, + get: function() { + return NAMESPACE; + } + }); + ` : _template.default.statement`EXPORTS.NAME = NAMESPACE;`)({ + EXPORTS: metadata.exportName, + NAME: exportName, + NAMESPACE: t.cloneNode(srcNamespace) + })); + } + + if (sourceMetadata.reexportAll) { + const statement = buildNamespaceReexport(metadata, t.cloneNode(srcNamespace), constantReexports); + statement.loc = sourceMetadata.reexportAll.loc; + statements.push(statement); + } + + return statements; +} + +const ReexportTemplate = { + constant: _template.default.statement`EXPORTS.EXPORT_NAME = NAMESPACE_IMPORT;`, + constantComputed: _template.default.statement`EXPORTS["EXPORT_NAME"] = NAMESPACE_IMPORT;`, + spec: (0, _template.default)` + Object.defineProperty(EXPORTS, "EXPORT_NAME", { + enumerable: true, + get: function() { + return NAMESPACE_IMPORT; + }, + }); + ` +}; + +const buildReexportsFromMeta = (meta, metadata, constantReexports) => { + const namespace = metadata.lazy ? t.callExpression(t.identifier(metadata.name), []) : t.identifier(metadata.name); + const { + stringSpecifiers + } = meta; + return Array.from(metadata.reexports, ([exportName, importName]) => { + let NAMESPACE_IMPORT = t.cloneNode(namespace); + + if (importName === "default" && metadata.interop === "node-default") {} else if (stringSpecifiers.has(importName)) { + NAMESPACE_IMPORT = t.memberExpression(NAMESPACE_IMPORT, t.stringLiteral(importName), true); + } else { + NAMESPACE_IMPORT = t.memberExpression(NAMESPACE_IMPORT, t.identifier(importName)); + } + + const astNodes = { + EXPORTS: meta.exportName, + EXPORT_NAME: exportName, + NAMESPACE_IMPORT + }; + + if (constantReexports || t.isIdentifier(NAMESPACE_IMPORT)) { + if (stringSpecifiers.has(exportName)) { + return ReexportTemplate.constantComputed(astNodes); + } else { + return ReexportTemplate.constant(astNodes); + } + } else { + return ReexportTemplate.spec(astNodes); + } + }); +}; + +function buildESModuleHeader(metadata, enumerableModuleMeta = false) { + return (enumerableModuleMeta ? _template.default.statement` + EXPORTS.__esModule = true; + ` : _template.default.statement` + Object.defineProperty(EXPORTS, "__esModule", { + value: true, + }); + `)({ + EXPORTS: metadata.exportName + }); +} + +function buildNamespaceReexport(metadata, namespace, constantReexports) { + return (constantReexports ? _template.default.statement` + Object.keys(NAMESPACE).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + VERIFY_NAME_LIST; + if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return; + + EXPORTS[key] = NAMESPACE[key]; + }); + ` : _template.default.statement` + Object.keys(NAMESPACE).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + VERIFY_NAME_LIST; + if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return; + + Object.defineProperty(EXPORTS, key, { + enumerable: true, + get: function() { + return NAMESPACE[key]; + }, + }); + }); + `)({ + NAMESPACE: namespace, + EXPORTS: metadata.exportName, + VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _template.default)` + if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return; + `({ + EXPORTS_LIST: metadata.exportNameListName + }) : null + }); +} + +function buildExportNameListDeclaration(programPath, metadata) { + const exportedVars = Object.create(null); + + for (const data of metadata.local.values()) { + for (const name of data.names) { + exportedVars[name] = true; + } + } + + let hasReexport = false; + + for (const data of metadata.source.values()) { + for (const exportName of data.reexports.keys()) { + exportedVars[exportName] = true; + } + + for (const exportName of data.reexportNamespace) { + exportedVars[exportName] = true; + } + + hasReexport = hasReexport || !!data.reexportAll; + } + + if (!hasReexport || Object.keys(exportedVars).length === 0) return null; + const name = programPath.scope.generateUidIdentifier("exportNames"); + delete exportedVars.default; + return { + name: name.name, + statement: t.variableDeclaration("var", [t.variableDeclarator(name, t.valueToNode(exportedVars))]) + }; +} + +function buildExportInitializationStatements(programPath, metadata, constantReexports = false, noIncompleteNsImportDetection = false) { + const initStatements = []; + const exportNames = []; + + for (const [localName, data] of metadata.local) { + if (data.kind === "import") {} else if (data.kind === "hoisted") { + initStatements.push(buildInitStatement(metadata, data.names, t.identifier(localName))); + } else { + exportNames.push(...data.names); + } + } + + for (const data of metadata.source.values()) { + if (!constantReexports) { + initStatements.push(...buildReexportsFromMeta(metadata, data, false)); + } + + for (const exportName of data.reexportNamespace) { + exportNames.push(exportName); + } + } + + if (!noIncompleteNsImportDetection) { + initStatements.push(...chunk(exportNames, 100).map(members => { + return buildInitStatement(metadata, members, programPath.scope.buildUndefinedNode()); + })); + } + + return initStatements; +} + +const InitTemplate = { + computed: _template.default.expression`EXPORTS["NAME"] = VALUE`, + default: _template.default.expression`EXPORTS.NAME = VALUE` +}; + +function buildInitStatement(metadata, exportNames, initExpr) { + const { + stringSpecifiers, + exportName: EXPORTS + } = metadata; + return t.expressionStatement(exportNames.reduce((acc, exportName) => { + const params = { + EXPORTS, + NAME: exportName, + VALUE: acc + }; + + if (stringSpecifiers.has(exportName)) { + return InitTemplate.computed(params); + } else { + return InitTemplate.default(params); + } + }, initExpr)); +} + +function chunk(array, size) { + const chunks = []; + + for (let i = 0; i < array.length; i += size) { + chunks.push(array.slice(i, i + size)); + } + + return chunks; +} + +/***/ }), + +/***/ 99485: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hasExports = hasExports; +exports.isSideEffectImport = isSideEffectImport; +exports.validateImportInteropOption = validateImportInteropOption; +exports["default"] = normalizeModuleAndLoadMetadata; + +var _path = __nccwpck_require__(71017); + +var _helperValidatorIdentifier = __nccwpck_require__(49586); + +var _helperSplitExportDeclaration = __nccwpck_require__(37058); + +function hasExports(metadata) { + return metadata.hasExports; +} + +function isSideEffectImport(source) { + return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll; +} + +function validateImportInteropOption(importInterop) { + if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") { + throw new Error(`.importInterop must be one of "none", "babel", "node", or a function returning one of those values (received ${importInterop}).`); + } + + return importInterop; +} + +function resolveImportInterop(importInterop, source) { + if (typeof importInterop === "function") { + return validateImportInteropOption(importInterop(source)); + } + + return importInterop; +} + +function normalizeModuleAndLoadMetadata(programPath, exportName, { + importInterop, + initializeReexports = false, + lazy = false, + esNamespaceOnly = false +}) { + if (!exportName) { + exportName = programPath.scope.generateUidIdentifier("exports").name; + } + + const stringSpecifiers = new Set(); + nameAnonymousExports(programPath); + const { + local, + source, + hasExports + } = getModuleMetadata(programPath, { + initializeReexports, + lazy + }, stringSpecifiers); + removeModuleDeclarations(programPath); + + for (const [, metadata] of source) { + if (metadata.importsNamespace.size > 0) { + metadata.name = metadata.importsNamespace.values().next().value; + } + + const resolvedInterop = resolveImportInterop(importInterop, metadata.source); + + if (resolvedInterop === "none") { + metadata.interop = "none"; + } else if (resolvedInterop === "node" && metadata.interop === "namespace") { + metadata.interop = "node-namespace"; + } else if (resolvedInterop === "node" && metadata.interop === "default") { + metadata.interop = "node-default"; + } else if (esNamespaceOnly && metadata.interop === "namespace") { + metadata.interop = "default"; + } + } + + return { + exportName, + exportNameListName: null, + hasExports, + local, + source, + stringSpecifiers + }; +} + +function getExportSpecifierName(path, stringSpecifiers) { + if (path.isIdentifier()) { + return path.node.name; + } else if (path.isStringLiteral()) { + const stringValue = path.node.value; + + if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) { + stringSpecifiers.add(stringValue); + } + + return stringValue; + } else { + throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`); + } +} + +function assertExportSpecifier(path) { + if (path.isExportSpecifier()) { + return; + } else if (path.isExportNamespaceSpecifier()) { + throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-proposal-export-namespace-from`."); + } else { + throw path.buildCodeFrameError("Unexpected export specifier type"); + } +} + +function getModuleMetadata(programPath, { + lazy, + initializeReexports +}, stringSpecifiers) { + const localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers); + const sourceData = new Map(); + + const getData = sourceNode => { + const source = sourceNode.value; + let data = sourceData.get(source); + + if (!data) { + data = { + name: programPath.scope.generateUidIdentifier((0, _path.basename)(source, (0, _path.extname)(source))).name, + interop: "none", + loc: null, + imports: new Map(), + importsNamespace: new Set(), + reexports: new Map(), + reexportNamespace: new Set(), + reexportAll: null, + lazy: false, + source + }; + sourceData.set(source, data); + } + + return data; + }; + + let hasExports = false; + programPath.get("body").forEach(child => { + if (child.isImportDeclaration()) { + const data = getData(child.node.source); + if (!data.loc) data.loc = child.node.loc; + child.get("specifiers").forEach(spec => { + if (spec.isImportDefaultSpecifier()) { + const localName = spec.get("local").node.name; + data.imports.set(localName, "default"); + const reexport = localData.get(localName); + + if (reexport) { + localData.delete(localName); + reexport.names.forEach(name => { + data.reexports.set(name, "default"); + }); + } + } else if (spec.isImportNamespaceSpecifier()) { + const localName = spec.get("local").node.name; + data.importsNamespace.add(localName); + const reexport = localData.get(localName); + + if (reexport) { + localData.delete(localName); + reexport.names.forEach(name => { + data.reexportNamespace.add(name); + }); + } + } else if (spec.isImportSpecifier()) { + const importName = getExportSpecifierName(spec.get("imported"), stringSpecifiers); + const localName = spec.get("local").node.name; + data.imports.set(localName, importName); + const reexport = localData.get(localName); + + if (reexport) { + localData.delete(localName); + reexport.names.forEach(name => { + data.reexports.set(name, importName); + }); + } + } + }); + } else if (child.isExportAllDeclaration()) { + hasExports = true; + const data = getData(child.node.source); + if (!data.loc) data.loc = child.node.loc; + data.reexportAll = { + loc: child.node.loc + }; + } else if (child.isExportNamedDeclaration() && child.node.source) { + hasExports = true; + const data = getData(child.node.source); + if (!data.loc) data.loc = child.node.loc; + child.get("specifiers").forEach(spec => { + assertExportSpecifier(spec); + const importName = getExportSpecifierName(spec.get("local"), stringSpecifiers); + const exportName = getExportSpecifierName(spec.get("exported"), stringSpecifiers); + data.reexports.set(exportName, importName); + + if (exportName === "__esModule") { + throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".'); + } + }); + } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) { + hasExports = true; + } + }); + + for (const metadata of sourceData.values()) { + let needsDefault = false; + let needsNamed = false; + + if (metadata.importsNamespace.size > 0) { + needsDefault = true; + needsNamed = true; + } + + if (metadata.reexportAll) { + needsNamed = true; + } + + for (const importName of metadata.imports.values()) { + if (importName === "default") needsDefault = true;else needsNamed = true; + } + + for (const importName of metadata.reexports.values()) { + if (importName === "default") needsDefault = true;else needsNamed = true; + } + + if (needsDefault && needsNamed) { + metadata.interop = "namespace"; + } else if (needsDefault) { + metadata.interop = "default"; + } + } + + for (const [source, metadata] of sourceData) { + if (lazy !== false && !(isSideEffectImport(metadata) || metadata.reexportAll)) { + if (lazy === true) { + metadata.lazy = !/\./.test(source); + } else if (Array.isArray(lazy)) { + metadata.lazy = lazy.indexOf(source) !== -1; + } else if (typeof lazy === "function") { + metadata.lazy = lazy(source); + } else { + throw new Error(`.lazy must be a boolean, string array, or function`); + } + } + } + + return { + hasExports, + local: localData, + source: sourceData + }; +} + +function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) { + const bindingKindLookup = new Map(); + programPath.get("body").forEach(child => { + let kind; + + if (child.isImportDeclaration()) { + kind = "import"; + } else { + if (child.isExportDefaultDeclaration()) child = child.get("declaration"); + + if (child.isExportNamedDeclaration()) { + if (child.node.declaration) { + child = child.get("declaration"); + } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) { + child.get("specifiers").forEach(spec => { + assertExportSpecifier(spec); + bindingKindLookup.set(spec.get("local").node.name, "block"); + }); + return; + } + } + + if (child.isFunctionDeclaration()) { + kind = "hoisted"; + } else if (child.isClassDeclaration()) { + kind = "block"; + } else if (child.isVariableDeclaration({ + kind: "var" + })) { + kind = "var"; + } else if (child.isVariableDeclaration()) { + kind = "block"; + } else { + return; + } + } + + Object.keys(child.getOuterBindingIdentifiers()).forEach(name => { + bindingKindLookup.set(name, kind); + }); + }); + const localMetadata = new Map(); + + const getLocalMetadata = idPath => { + const localName = idPath.node.name; + let metadata = localMetadata.get(localName); + + if (!metadata) { + const kind = bindingKindLookup.get(localName); + + if (kind === undefined) { + throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`); + } + + metadata = { + names: [], + kind + }; + localMetadata.set(localName, metadata); + } + + return metadata; + }; + + programPath.get("body").forEach(child => { + if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) { + if (child.node.declaration) { + const declaration = child.get("declaration"); + const ids = declaration.getOuterBindingIdentifierPaths(); + Object.keys(ids).forEach(name => { + if (name === "__esModule") { + throw declaration.buildCodeFrameError('Illegal export "__esModule".'); + } + + getLocalMetadata(ids[name]).names.push(name); + }); + } else { + child.get("specifiers").forEach(spec => { + const local = spec.get("local"); + const exported = spec.get("exported"); + const localMetadata = getLocalMetadata(local); + const exportName = getExportSpecifierName(exported, stringSpecifiers); + + if (exportName === "__esModule") { + throw exported.buildCodeFrameError('Illegal export "__esModule".'); + } + + localMetadata.names.push(exportName); + }); + } + } else if (child.isExportDefaultDeclaration()) { + const declaration = child.get("declaration"); + + if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { + getLocalMetadata(declaration.get("id")).names.push("default"); + } else { + throw declaration.buildCodeFrameError("Unexpected default expression export."); + } + } + }); + return localMetadata; +} + +function nameAnonymousExports(programPath) { + programPath.get("body").forEach(child => { + if (!child.isExportDefaultDeclaration()) return; + (0, _helperSplitExportDeclaration.default)(child); + }); +} + +function removeModuleDeclarations(programPath) { + programPath.get("body").forEach(child => { + if (child.isImportDeclaration()) { + child.remove(); + } else if (child.isExportNamedDeclaration()) { + if (child.node.declaration) { + child.node.declaration._blockHoist = child.node._blockHoist; + child.replaceWith(child.node.declaration); + } else { + child.remove(); + } + } else if (child.isExportDefaultDeclaration()) { + const declaration = child.get("declaration"); + + if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { + declaration._blockHoist = child.node._blockHoist; + child.replaceWith(declaration); + } else { + throw declaration.buildCodeFrameError("Unexpected default expression export."); + } + } else if (child.isExportAllDeclaration()) { + child.remove(); + } + }); +} + +/***/ }), + +/***/ 54998: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rewriteLiveReferences; + +var _assert = __nccwpck_require__(39491); + +var t = __nccwpck_require__(24479); + +var _template = __nccwpck_require__(20153); + +var _helperSimpleAccess = __nccwpck_require__(76256); + +function rewriteLiveReferences(programPath, metadata) { + const imported = new Map(); + const exported = new Map(); + + const requeueInParent = path => { + programPath.requeue(path); + }; + + for (const [source, data] of metadata.source) { + for (const [localName, importName] of data.imports) { + imported.set(localName, [source, importName, null]); + } + + for (const localName of data.importsNamespace) { + imported.set(localName, [source, null, localName]); + } + } + + for (const [local, data] of metadata.local) { + let exportMeta = exported.get(local); + + if (!exportMeta) { + exportMeta = []; + exported.set(local, exportMeta); + } + + exportMeta.push(...data.names); + } + + const rewriteBindingInitVisitorState = { + metadata, + requeueInParent, + scope: programPath.scope, + exported + }; + programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState); + (0, _helperSimpleAccess.default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())])); + const rewriteReferencesVisitorState = { + seen: new WeakSet(), + metadata, + requeueInParent, + scope: programPath.scope, + imported, + exported, + buildImportReference: ([source, importName, localName], identNode) => { + const meta = metadata.source.get(source); + + if (localName) { + if (meta.lazy) identNode = t.callExpression(identNode, []); + return identNode; + } + + let namespace = t.identifier(meta.name); + if (meta.lazy) namespace = t.callExpression(namespace, []); + + if (importName === "default" && meta.interop === "node-default") { + return namespace; + } + + const computed = metadata.stringSpecifiers.has(importName); + return t.memberExpression(namespace, computed ? t.stringLiteral(importName) : t.identifier(importName), computed); + } + }; + programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState); +} + +const rewriteBindingInitVisitor = { + Scope(path) { + path.skip(); + }, + + ClassDeclaration(path) { + const { + requeueInParent, + exported, + metadata + } = this; + const { + id + } = path.node; + if (!id) throw new Error("Expected class to have a name"); + const localName = id.name; + const exportNames = exported.get(localName) || []; + + if (exportNames.length > 0) { + const statement = t.expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, t.identifier(localName))); + statement._blockHoist = path.node._blockHoist; + requeueInParent(path.insertAfter(statement)[0]); + } + }, + + VariableDeclaration(path) { + const { + requeueInParent, + exported, + metadata + } = this; + Object.keys(path.getOuterBindingIdentifiers()).forEach(localName => { + const exportNames = exported.get(localName) || []; + + if (exportNames.length > 0) { + const statement = t.expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, t.identifier(localName))); + statement._blockHoist = path.node._blockHoist; + requeueInParent(path.insertAfter(statement)[0]); + } + }); + } + +}; + +const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr) => { + return (exportNames || []).reduce((expr, exportName) => { + const { + stringSpecifiers + } = metadata; + const computed = stringSpecifiers.has(exportName); + return t.assignmentExpression("=", t.memberExpression(t.identifier(metadata.exportName), computed ? t.stringLiteral(exportName) : t.identifier(exportName), computed), expr); + }, localExpr); +}; + +const buildImportThrow = localName => { + return _template.default.expression.ast` + (function() { + throw new Error('"' + '${localName}' + '" is read-only.'); + })() + `; +}; + +const rewriteReferencesVisitor = { + ReferencedIdentifier(path) { + const { + seen, + buildImportReference, + scope, + imported, + requeueInParent + } = this; + if (seen.has(path.node)) return; + seen.add(path.node); + const localName = path.node.name; + const importData = imported.get(localName); + + if (importData) { + const localBinding = path.scope.getBinding(localName); + const rootBinding = scope.getBinding(localName); + if (rootBinding !== localBinding) return; + const ref = buildImportReference(importData, path.node); + ref.loc = path.node.loc; + + if ((path.parentPath.isCallExpression({ + callee: path.node + }) || path.parentPath.isOptionalCallExpression({ + callee: path.node + }) || path.parentPath.isTaggedTemplateExpression({ + tag: path.node + })) && t.isMemberExpression(ref)) { + path.replaceWith(t.sequenceExpression([t.numericLiteral(0), ref])); + } else if (path.isJSXIdentifier() && t.isMemberExpression(ref)) { + const { + object, + property + } = ref; + path.replaceWith(t.jsxMemberExpression(t.jsxIdentifier(object.name), t.jsxIdentifier(property.name))); + } else { + path.replaceWith(ref); + } + + requeueInParent(path); + path.skip(); + } + }, + + AssignmentExpression: { + exit(path) { + const { + scope, + seen, + imported, + exported, + requeueInParent, + buildImportReference + } = this; + if (seen.has(path.node)) return; + seen.add(path.node); + const left = path.get("left"); + if (left.isMemberExpression()) return; + + if (left.isIdentifier()) { + const localName = left.node.name; + + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { + return; + } + + const exportedNames = exported.get(localName); + const importData = imported.get(localName); + + if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) { + _assert(path.node.operator === "=", "Path was not simplified"); + + const assignment = path.node; + + if (importData) { + assignment.left = buildImportReference(importData, assignment.left); + assignment.right = t.sequenceExpression([assignment.right, buildImportThrow(localName)]); + } + + path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment)); + requeueInParent(path); + } + } else { + const ids = left.getOuterBindingIdentifiers(); + const programScopeIds = Object.keys(ids).filter(localName => scope.getBinding(localName) === path.scope.getBinding(localName)); + const id = programScopeIds.find(localName => imported.has(localName)); + + if (id) { + path.node.right = t.sequenceExpression([path.node.right, buildImportThrow(id)]); + } + + const items = []; + programScopeIds.forEach(localName => { + const exportedNames = exported.get(localName) || []; + + if (exportedNames.length > 0) { + items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, t.identifier(localName))); + } + }); + + if (items.length > 0) { + let node = t.sequenceExpression(items); + + if (path.parentPath.isExpressionStatement()) { + node = t.expressionStatement(node); + node._blockHoist = path.parentPath.node._blockHoist; + } + + const statement = path.insertAfter(node)[0]; + requeueInParent(statement); + } + } + } + + }, + + "ForOfStatement|ForInStatement"(path) { + const { + scope, + node + } = path; + const { + left + } = node; + const { + exported, + imported, + scope: programScope + } = this; + + if (!t.isVariableDeclaration(left)) { + let didTransformExport = false, + importConstViolationName; + const loopBodyScope = path.get("body").scope; + + for (const name of Object.keys(t.getOuterBindingIdentifiers(left))) { + if (programScope.getBinding(name) === scope.getBinding(name)) { + if (exported.has(name)) { + didTransformExport = true; + + if (loopBodyScope.hasOwnBinding(name)) { + loopBodyScope.rename(name); + } + } + + if (imported.has(name) && !importConstViolationName) { + importConstViolationName = name; + } + } + } + + if (!didTransformExport && !importConstViolationName) { + return; + } + + path.ensureBlock(); + const bodyPath = path.get("body"); + const newLoopId = scope.generateUidIdentifierBasedOnNode(left); + path.get("left").replaceWith(t.variableDeclaration("let", [t.variableDeclarator(t.cloneNode(newLoopId))])); + scope.registerDeclaration(path.get("left")); + + if (didTransformExport) { + bodyPath.unshiftContainer("body", t.expressionStatement(t.assignmentExpression("=", left, newLoopId))); + } + + if (importConstViolationName) { + bodyPath.unshiftContainer("body", t.expressionStatement(buildImportThrow(importConstViolationName))); + } + } + } + +}; + +/***/ }), + +/***/ 51707: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rewriteThis; + +var _helperReplaceSupers = __nccwpck_require__(86833); + +var _traverse = __nccwpck_require__(8631); + +var t = __nccwpck_require__(24479); + +function rewriteThis(programPath) { + (0, _traverse.default)(programPath.node, Object.assign({}, rewriteThisVisitor, { + noScope: true + })); +} + +const rewriteThisVisitor = _traverse.default.visitors.merge([_helperReplaceSupers.environmentVisitor, { + ThisExpression(path) { + path.replaceWith(t.unaryExpression("void", t.numericLiteral(0), true)); + } + +}]); + +/***/ }), + +/***/ 86721: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = optimiseCallExpression; + +var t = __nccwpck_require__(24479); + +function optimiseCallExpression(callee, thisNode, args, optional) { + if (args.length === 1 && t.isSpreadElement(args[0]) && t.isIdentifier(args[0].argument, { + name: "arguments" + })) { + if (optional) { + return t.optionalCallExpression(t.optionalMemberExpression(callee, t.identifier("apply"), false, true), [thisNode, args[0].argument], false); + } + + return t.callExpression(t.memberExpression(callee, t.identifier("apply")), [thisNode, args[0].argument]); + } else { + if (optional) { + return t.optionalCallExpression(t.optionalMemberExpression(callee, t.identifier("call"), false, true), [thisNode, ...args], false); + } + + return t.callExpression(t.memberExpression(callee, t.identifier("call")), [thisNode, ...args]); + } +} + +/***/ }), + +/***/ 29055: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.declare = declare; + +function declare(builder) { + return (api, options, dirname) => { + if (!api.assertVersion) { + api = Object.assign(copyApiObject(api), { + assertVersion(range) { + throwVersionError(range, api.version); + } + + }); + } + + return builder(api, options || {}, dirname); + }; +} + +function copyApiObject(api) { + let proto = null; + + if (typeof api.version === "string" && /^7\./.test(api.version)) { + proto = Object.getPrototypeOf(api); + + if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) { + proto = null; + } + } + + return Object.assign({}, proto, api); +} + +function has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + +function throwVersionError(range, version) { + if (typeof range === "number") { + if (!Number.isInteger(range)) { + throw new Error("Expected string or integer value."); + } + + range = `^${range}.0.0-0`; + } + + if (typeof range !== "string") { + throw new Error("Expected string or integer value."); + } + + const limit = Error.stackTraceLimit; + + if (typeof limit === "number" && limit < 25) { + Error.stackTraceLimit = 25; + } + + let err; + + if (version.slice(0, 2) === "7.") { + err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); + } else { + err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); + } + + if (typeof limit === "number") { + Error.stackTraceLimit = limit; + } + + throw Object.assign(err, { + code: "BABEL_VERSION_UNSUPPORTED", + version, + range + }); +} + +/***/ }), + +/***/ 86833: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.skipAllButComputedKey = skipAllButComputedKey; +exports["default"] = exports.environmentVisitor = void 0; + +var _traverse = __nccwpck_require__(8631); + +var _helperMemberExpressionToFunctions = __nccwpck_require__(53546); + +var _helperOptimiseCallExpression = __nccwpck_require__(86721); + +var t = __nccwpck_require__(24479); + +function getPrototypeOfExpression(objectRef, isStatic, file, isPrivateMethod) { + objectRef = t.cloneNode(objectRef); + const targetRef = isStatic || isPrivateMethod ? objectRef : t.memberExpression(objectRef, t.identifier("prototype")); + return t.callExpression(file.addHelper("getPrototypeOf"), [targetRef]); +} + +function skipAllButComputedKey(path) { + if (!path.node.computed) { + path.skip(); + return; + } + + const keys = t.VISITOR_KEYS[path.type]; + + for (const key of keys) { + if (key !== "key") path.skipKey(key); + } +} + +const environmentVisitor = { + [`${t.staticBlock ? "StaticBlock|" : ""}ClassPrivateProperty|TypeAnnotation`](path) { + path.skip(); + }, + + Function(path) { + if (path.isMethod()) return; + if (path.isArrowFunctionExpression()) return; + path.skip(); + }, + + "Method|ClassProperty"(path) { + skipAllButComputedKey(path); + } + +}; +exports.environmentVisitor = environmentVisitor; + +const visitor = _traverse.default.visitors.merge([environmentVisitor, { + Super(path, state) { + const { + node, + parentPath + } = path; + if (!parentPath.isMemberExpression({ + object: node + })) return; + state.handle(parentPath); + } + +}]); + +const unshadowSuperBindingVisitor = _traverse.default.visitors.merge([environmentVisitor, { + Scopable(path, { + refName + }) { + const binding = path.scope.getOwnBinding(refName); + + if (binding && binding.identifier.name === refName) { + path.scope.rename(refName); + } + } + +}]); + +const specHandlers = { + memoise(superMember, count) { + const { + scope, + node + } = superMember; + const { + computed, + property + } = node; + + if (!computed) { + return; + } + + const memo = scope.maybeGenerateMemoised(property); + + if (!memo) { + return; + } + + this.memoiser.set(property, memo, count); + }, + + prop(superMember) { + const { + computed, + property + } = superMember.node; + + if (this.memoiser.has(property)) { + return t.cloneNode(this.memoiser.get(property)); + } + + if (computed) { + return t.cloneNode(property); + } + + return t.stringLiteral(property.name); + }, + + get(superMember) { + return this._get(superMember, this._getThisRefs()); + }, + + _get(superMember, thisRefs) { + const proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod); + return t.callExpression(this.file.addHelper("get"), [thisRefs.memo ? t.sequenceExpression([thisRefs.memo, proto]) : proto, this.prop(superMember), thisRefs.this]); + }, + + _getThisRefs() { + if (!this.isDerivedConstructor) { + return { + this: t.thisExpression() + }; + } + + const thisRef = this.scope.generateDeclaredUidIdentifier("thisSuper"); + return { + memo: t.assignmentExpression("=", thisRef, t.thisExpression()), + this: t.cloneNode(thisRef) + }; + }, + + set(superMember, value) { + const thisRefs = this._getThisRefs(); + + const proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod); + return t.callExpression(this.file.addHelper("set"), [thisRefs.memo ? t.sequenceExpression([thisRefs.memo, proto]) : proto, this.prop(superMember), value, thisRefs.this, t.booleanLiteral(superMember.isInStrictMode())]); + }, + + destructureSet(superMember) { + throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`); + }, + + call(superMember, args) { + const thisRefs = this._getThisRefs(); + + return (0, _helperOptimiseCallExpression.default)(this._get(superMember, thisRefs), t.cloneNode(thisRefs.this), args, false); + }, + + optionalCall(superMember, args) { + const thisRefs = this._getThisRefs(); + + return (0, _helperOptimiseCallExpression.default)(this._get(superMember, thisRefs), t.cloneNode(thisRefs.this), args, true); + } + +}; +const looseHandlers = Object.assign({}, specHandlers, { + prop(superMember) { + const { + property + } = superMember.node; + + if (this.memoiser.has(property)) { + return t.cloneNode(this.memoiser.get(property)); + } + + return t.cloneNode(property); + }, + + get(superMember) { + const { + isStatic, + getSuperRef + } = this; + const { + computed + } = superMember.node; + const prop = this.prop(superMember); + let object; + + if (isStatic) { + var _getSuperRef; + + object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : t.memberExpression(t.identifier("Function"), t.identifier("prototype")); + } else { + var _getSuperRef2; + + object = t.memberExpression((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : t.identifier("Object"), t.identifier("prototype")); + } + + return t.memberExpression(object, prop, computed); + }, + + set(superMember, value) { + const { + computed + } = superMember.node; + const prop = this.prop(superMember); + return t.assignmentExpression("=", t.memberExpression(t.thisExpression(), prop, computed), value); + }, + + destructureSet(superMember) { + const { + computed + } = superMember.node; + const prop = this.prop(superMember); + return t.memberExpression(t.thisExpression(), prop, computed); + }, + + call(superMember, args) { + return (0, _helperOptimiseCallExpression.default)(this.get(superMember), t.thisExpression(), args, false); + }, + + optionalCall(superMember, args) { + return (0, _helperOptimiseCallExpression.default)(this.get(superMember), t.thisExpression(), args, true); + } + +}); + +class ReplaceSupers { + constructor(opts) { + var _opts$constantSuper; + + const path = opts.methodPath; + this.methodPath = path; + this.isDerivedConstructor = path.isClassMethod({ + kind: "constructor" + }) && !!opts.superRef; + this.isStatic = path.isObjectMethod() || path.node.static || (path.isStaticBlock == null ? void 0 : path.isStaticBlock()); + this.isPrivateMethod = path.isPrivate() && path.isMethod(); + this.file = opts.file; + this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose; + this.opts = opts; + } + + getObjectRef() { + return t.cloneNode(this.opts.objectRef || this.opts.getObjectRef()); + } + + getSuperRef() { + if (this.opts.superRef) return t.cloneNode(this.opts.superRef); + if (this.opts.getSuperRef) return t.cloneNode(this.opts.getSuperRef()); + } + + replace() { + if (this.opts.refToPreserve) { + this.methodPath.traverse(unshadowSuperBindingVisitor, { + refName: this.opts.refToPreserve.name + }); + } + + const handler = this.constantSuper ? looseHandlers : specHandlers; + (0, _helperMemberExpressionToFunctions.default)(this.methodPath, visitor, Object.assign({ + file: this.file, + scope: this.methodPath.scope, + isDerivedConstructor: this.isDerivedConstructor, + isStatic: this.isStatic, + isPrivateMethod: this.isPrivateMethod, + getObjectRef: this.getObjectRef.bind(this), + getSuperRef: this.getSuperRef.bind(this), + boundGet: handler.get + }, handler)); + } + +} + +exports["default"] = ReplaceSupers; + +/***/ }), + +/***/ 76256: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = simplifyAccess; + +var t = __nccwpck_require__(24479); + +function simplifyAccess(path, bindingNames) { + path.traverse(simpleAssignmentVisitor, { + scope: path.scope, + bindingNames, + seen: new WeakSet() + }); +} + +const simpleAssignmentVisitor = { + UpdateExpression: { + exit(path) { + const { + scope, + bindingNames + } = this; + const arg = path.get("argument"); + if (!arg.isIdentifier()) return; + const localName = arg.node.name; + if (!bindingNames.has(localName)) return; + + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { + return; + } + + if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) { + const operator = path.node.operator == "++" ? "+=" : "-="; + path.replaceWith(t.assignmentExpression(operator, arg.node, t.numericLiteral(1))); + } else if (path.node.prefix) { + path.replaceWith(t.assignmentExpression("=", t.identifier(localName), t.binaryExpression(path.node.operator[0], t.unaryExpression("+", arg.node), t.numericLiteral(1)))); + } else { + const old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old"); + const varName = old.name; + path.scope.push({ + id: old + }); + const binary = t.binaryExpression(path.node.operator[0], t.identifier(varName), t.numericLiteral(1)); + path.replaceWith(t.sequenceExpression([t.assignmentExpression("=", t.identifier(varName), t.unaryExpression("+", arg.node)), t.assignmentExpression("=", t.cloneNode(arg.node), binary), t.identifier(varName)])); + } + } + + }, + AssignmentExpression: { + exit(path) { + const { + scope, + seen, + bindingNames + } = this; + if (path.node.operator === "=") return; + if (seen.has(path.node)) return; + seen.add(path.node); + const left = path.get("left"); + if (!left.isIdentifier()) return; + const localName = left.node.name; + if (!bindingNames.has(localName)) return; + + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { + return; + } + + const operator = path.node.operator.slice(0, -1); + + if (t.LOGICAL_OPERATORS.includes(operator)) { + path.replaceWith(t.logicalExpression(operator, path.node.left, t.assignmentExpression("=", t.cloneNode(path.node.left), path.node.right))); + } else { + path.node.right = t.binaryExpression(operator, t.cloneNode(path.node.left), path.node.right); + path.node.operator = "="; + } + } + + } +}; + +/***/ }), + +/***/ 37058: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = splitExportDeclaration; + +var t = __nccwpck_require__(24479); + +function splitExportDeclaration(exportDeclaration) { + if (!exportDeclaration.isExportDeclaration()) { + throw new Error("Only export declarations can be split."); + } + + const isDefault = exportDeclaration.isExportDefaultDeclaration(); + const declaration = exportDeclaration.get("declaration"); + const isClassDeclaration = declaration.isClassDeclaration(); + + if (isDefault) { + const standaloneDeclaration = declaration.isFunctionDeclaration() || isClassDeclaration; + const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope; + let id = declaration.node.id; + let needBindingRegistration = false; + + if (!id) { + needBindingRegistration = true; + id = scope.generateUidIdentifier("default"); + + if (standaloneDeclaration || declaration.isFunctionExpression() || declaration.isClassExpression()) { + declaration.node.id = t.cloneNode(id); + } + } + + const updatedDeclaration = standaloneDeclaration ? declaration : t.variableDeclaration("var", [t.variableDeclarator(t.cloneNode(id), declaration.node)]); + const updatedExportDeclaration = t.exportNamedDeclaration(null, [t.exportSpecifier(t.cloneNode(id), t.identifier("default"))]); + exportDeclaration.insertAfter(updatedExportDeclaration); + exportDeclaration.replaceWith(updatedDeclaration); + + if (needBindingRegistration) { + scope.registerDeclaration(exportDeclaration); + } + + return exportDeclaration; + } + + if (exportDeclaration.get("specifiers").length > 0) { + throw new Error("It doesn't make sense to split exported specifiers."); + } + + const bindingIdentifiers = declaration.getOuterBindingIdentifiers(); + const specifiers = Object.keys(bindingIdentifiers).map(name => { + return t.exportSpecifier(t.identifier(name), t.identifier(name)); + }); + const aliasDeclar = t.exportNamedDeclaration(null, specifiers); + exportDeclaration.insertAfter(aliasDeclar); + exportDeclaration.replaceWith(declaration.node); + return exportDeclaration; +} + +/***/ }), + +/***/ 39115: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isIdentifierStart = isIdentifierStart; +exports.isIdentifierChar = isIdentifierChar; +exports.isIdentifierName = isIdentifierName; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + +function isInAstralSet(code, set) { + let pos = 0x10000; + + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + + return false; +} + +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes); +} + +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} + +function isIdentifierName(name) { + let isFirst = true; + + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + + if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + + if (isFirst) { + isFirst = false; + + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + + return !isFirst; +} + +/***/ }), + +/***/ 49586: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "isIdentifierName", ({ + enumerable: true, + get: function () { + return _identifier.isIdentifierName; + } +})); +Object.defineProperty(exports, "isIdentifierChar", ({ + enumerable: true, + get: function () { + return _identifier.isIdentifierChar; + } +})); +Object.defineProperty(exports, "isIdentifierStart", ({ + enumerable: true, + get: function () { + return _identifier.isIdentifierStart; + } +})); +Object.defineProperty(exports, "isReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isReservedWord; + } +})); +Object.defineProperty(exports, "isStrictBindOnlyReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isStrictBindOnlyReservedWord; + } +})); +Object.defineProperty(exports, "isStrictBindReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isStrictBindReservedWord; + } +})); +Object.defineProperty(exports, "isStrictReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isStrictReservedWord; + } +})); +Object.defineProperty(exports, "isKeyword", ({ + enumerable: true, + get: function () { + return _keyword.isKeyword; + } +})); + +var _identifier = __nccwpck_require__(39115); + +var _keyword = __nccwpck_require__(5390); + +/***/ }), + +/***/ 5390: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isReservedWord = isReservedWord; +exports.isStrictReservedWord = isStrictReservedWord; +exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; +exports.isStrictBindReservedWord = isStrictBindReservedWord; +exports.isKeyword = isKeyword; +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); + +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} + +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} + +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} + +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} + +function isKeyword(word) { + return keywords.has(word); +} + +/***/ }), + +/***/ 79164: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.wrapRegExp = exports["typeof"] = exports.objectSpread2 = exports.jsx = void 0; + +var _template = __nccwpck_require__(20153); + +const jsx = { + minVersion: "7.0.0-beta.0", + ast: () => _template.default.program.ast('\nvar REACT_ELEMENT_TYPE;\nexport default function _createRawReactElement(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === "function" &&\n \n Symbol["for"] &&\n Symbol["for"]("react.element")) ||\n 0xeac7;\n }\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n if (!props && childrenLength !== 0) {\n \n \n props = { children: void 0 };\n }\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : "" + key,\n ref: null,\n props: props,\n _owner: null,\n };\n}\n') +}; +exports.jsx = jsx; +const objectSpread2 = { + minVersion: "7.5.0", + ast: () => _template.default.program.ast('\nimport defineProperty from "defineProperty";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n }\n return target;\n}\n') +}; +exports.objectSpread2 = objectSpread2; +const _typeof = { + minVersion: "7.0.0-beta.0", + ast: () => _template.default.program.ast('\nexport default function _typeof(obj) {\n "@babel/helpers - typeof";\n if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj &&\n typeof Symbol === "function" &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? "symbol"\n : typeof obj;\n };\n }\n return _typeof(obj);\n}\n') +}; +exports["typeof"] = _typeof; +const wrapRegExp = { + minVersion: "7.2.6", + ast: () => _template.default.program.ast('\nimport setPrototypeOf from "setPrototypeOf";\nimport inherits from "inherits";\nexport default function _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, undefined, groups);\n };\n var _super = RegExp.prototype;\n var _groups = new WeakMap();\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n \n _groups.set(_this, groups || _groups.get(re));\n return setPrototypeOf(_this, BabelRegExp.prototype);\n }\n inherits(BabelRegExp, RegExp);\n BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (typeof substitution === "string") {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return "$" + groups[name];\n })\n );\n } else if (typeof substitution === "function") {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n \n if (typeof args[args.length - 1] !== "object") {\n args = [].slice.call(args);\n args.push(buildGroups(args, _this));\n }\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n function buildGroups(result, re) {\n \n \n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n return _wrapRegExp.apply(this, arguments);\n}\n') +}; +exports.wrapRegExp = wrapRegExp; + +/***/ }), + +/***/ 14981: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _template = __nccwpck_require__(20153); + +var generated = __nccwpck_require__(79164); + +const helpers = Object.assign({ + __proto__: null +}, generated); +var _default = helpers; +exports["default"] = _default; + +const helper = minVersion => tpl => ({ + minVersion, + ast: () => _template.default.program.ast(tpl) +}); + +helpers.asyncIterator = helper("7.0.0-beta.0")` + export default function _asyncIterator(iterable) { + var method; + if (typeof Symbol !== "undefined") { + if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator]; + if (method == null && Symbol.iterator) method = iterable[Symbol.iterator]; + } + if (method == null) method = iterable["@@asyncIterator"]; + if (method == null) method = iterable["@@iterator"] + if (method == null) throw new TypeError("Object is not async iterable"); + return method.call(iterable); + } +`; +helpers.AwaitValue = helper("7.0.0-beta.0")` + export default function _AwaitValue(value) { + this.wrapped = value; + } +`; +helpers.AsyncGenerator = helper("7.0.0-beta.0")` + import AwaitValue from "AwaitValue"; + + export default function AsyncGenerator(gen) { + var front, back; + + function send(key, arg) { + return new Promise(function (resolve, reject) { + var request = { + key: key, + arg: arg, + resolve: resolve, + reject: reject, + next: null, + }; + + if (back) { + back = back.next = request; + } else { + front = back = request; + resume(key, arg); + } + }); + } + + function resume(key, arg) { + try { + var result = gen[key](arg) + var value = result.value; + var wrappedAwait = value instanceof AwaitValue; + + Promise.resolve(wrappedAwait ? value.wrapped : value).then( + function (arg) { + if (wrappedAwait) { + resume(key === "return" ? "return" : "next", arg); + return + } + + settle(result.done ? "return" : "normal", arg); + }, + function (err) { resume("throw", err); }); + } catch (err) { + settle("throw", err); + } + } + + function settle(type, value) { + switch (type) { + case "return": + front.resolve({ value: value, done: true }); + break; + case "throw": + front.reject(value); + break; + default: + front.resolve({ value: value, done: false }); + break; + } + + front = front.next; + if (front) { + resume(front.key, front.arg); + } else { + back = null; + } + } + + this._invoke = send; + + // Hide "return" method if generator return is not supported + if (typeof gen.return !== "function") { + this.return = undefined; + } + } + + AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; }; + + AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; + AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; + AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; +`; +helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")` + import AsyncGenerator from "AsyncGenerator"; + + export default function _wrapAsyncGenerator(fn) { + return function () { + return new AsyncGenerator(fn.apply(this, arguments)); + }; + } +`; +helpers.awaitAsyncGenerator = helper("7.0.0-beta.0")` + import AwaitValue from "AwaitValue"; + + export default function _awaitAsyncGenerator(value) { + return new AwaitValue(value); + } +`; +helpers.asyncGeneratorDelegate = helper("7.0.0-beta.0")` + export default function _asyncGeneratorDelegate(inner, awaitWrap) { + var iter = {}, waiting = false; + + function pump(key, value) { + waiting = true; + value = new Promise(function (resolve) { resolve(inner[key](value)); }); + return { done: false, value: awaitWrap(value) }; + }; + + iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () { return this; }; + + iter.next = function (value) { + if (waiting) { + waiting = false; + return value; + } + return pump("next", value); + }; + + if (typeof inner.throw === "function") { + iter.throw = function (value) { + if (waiting) { + waiting = false; + throw value; + } + return pump("throw", value); + }; + } + + if (typeof inner.return === "function") { + iter.return = function (value) { + if (waiting) { + waiting = false; + return value; + } + return pump("return", value); + }; + } + + return iter; + } +`; +helpers.asyncToGenerator = helper("7.0.0-beta.0")` + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } + } + + export default function _asyncToGenerator(fn) { + return function () { + var self = this, args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; + } +`; +helpers.classCallCheck = helper("7.0.0-beta.0")` + export default function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } +`; +helpers.createClass = helper("7.0.0-beta.0")` + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i ++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + export default function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } +`; +helpers.defineEnumerableProperties = helper("7.0.0-beta.0")` + export default function _defineEnumerableProperties(obj, descs) { + for (var key in descs) { + var desc = descs[key]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, key, desc); + } + + // Symbols are not enumerated over by for-in loops. If native + // Symbols are available, fetch all of the descs object's own + // symbol properties and define them on our target object too. + if (Object.getOwnPropertySymbols) { + var objectSymbols = Object.getOwnPropertySymbols(descs); + for (var i = 0; i < objectSymbols.length; i++) { + var sym = objectSymbols[i]; + var desc = descs[sym]; + desc.configurable = desc.enumerable = true; + if ("value" in desc) desc.writable = true; + Object.defineProperty(obj, sym, desc); + } + } + return obj; + } +`; +helpers.defaults = helper("7.0.0-beta.0")` + export default function _defaults(obj, defaults) { + var keys = Object.getOwnPropertyNames(defaults); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = Object.getOwnPropertyDescriptor(defaults, key); + if (value && value.configurable && obj[key] === undefined) { + Object.defineProperty(obj, key, value); + } + } + return obj; + } +`; +helpers.defineProperty = helper("7.0.0-beta.0")` + export default function _defineProperty(obj, key, value) { + // Shortcircuit the slow defineProperty path when possible. + // We are trying to avoid issues where setters defined on the + // prototype cause side effects under the fast path of simple + // assignment. By checking for existence of the property with + // the in operator, we can optimize most of this overhead away. + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } +`; +helpers.extends = helper("7.0.0-beta.0")` + export default function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + + return _extends.apply(this, arguments); + } +`; +helpers.objectSpread = helper("7.0.0-beta.0")` + import defineProperty from "defineProperty"; + + export default function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = (arguments[i] != null) ? Object(arguments[i]) : {}; + var ownKeys = Object.keys(source); + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + ownKeys.forEach(function(key) { + defineProperty(target, key, source[key]); + }); + } + return target; + } +`; +helpers.inherits = helper("7.0.0-beta.0")` + import setPrototypeOf from "setPrototypeOf"; + + export default function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) setPrototypeOf(subClass, superClass); + } +`; +helpers.inheritsLoose = helper("7.0.0-beta.0")` + import setPrototypeOf from "setPrototypeOf"; + + export default function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + setPrototypeOf(subClass, superClass); + } +`; +helpers.getPrototypeOf = helper("7.0.0-beta.0")` + export default function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf + ? Object.getPrototypeOf + : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } +`; +helpers.setPrototypeOf = helper("7.0.0-beta.0")` + export default function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } +`; +helpers.isNativeReflectConstruct = helper("7.9.0")` + export default function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + + // core-js@3 + if (Reflect.construct.sham) return false; + + // Proxy can't be polyfilled. Every browser implemented + // proxies before or at the same time as Reflect.construct, + // so if they support Proxy they also support Reflect.construct. + if (typeof Proxy === "function") return true; + + // Since Reflect.construct can't be properly polyfilled, some + // implementations (e.g. core-js@2) don't set the correct internal slots. + // Those polyfills don't allow us to subclass built-ins, so we need to + // use our fallback implementation. + try { + // If the internal slots aren't set, this throws an error similar to + // TypeError: this is not a Boolean object. + + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); + return true; + } catch (e) { + return false; + } + } +`; +helpers.construct = helper("7.0.0-beta.0")` + import setPrototypeOf from "setPrototypeOf"; + import isNativeReflectConstruct from "isNativeReflectConstruct"; + + export default function _construct(Parent, args, Class) { + if (isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + // NOTE: If Parent !== Class, the correct __proto__ is set *after* + // calling the constructor. + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + // Avoid issues with Class being present but undefined when it wasn't + // present in the original call. + return _construct.apply(null, arguments); + } +`; +helpers.isNativeFunction = helper("7.0.0-beta.0")` + export default function _isNativeFunction(fn) { + // Note: This function returns "true" for core-js functions. + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } +`; +helpers.wrapNativeSuper = helper("7.0.0-beta.0")` + import getPrototypeOf from "getPrototypeOf"; + import setPrototypeOf from "setPrototypeOf"; + import isNativeFunction from "isNativeFunction"; + import construct from "construct"; + + export default function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !isNativeFunction(Class)) return Class; + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + _cache.set(Class, Wrapper); + } + function Wrapper() { + return construct(Class, arguments, getPrototypeOf(this).constructor) + } + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true, + } + }); + + return setPrototypeOf(Wrapper, Class); + } + + return _wrapNativeSuper(Class) + } +`; +helpers.instanceof = helper("7.0.0-beta.0")` + export default function _instanceof(left, right) { + if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { + return !!right[Symbol.hasInstance](left); + } else { + return left instanceof right; + } + } +`; +helpers.interopRequireDefault = helper("7.0.0-beta.0")` + export default function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } +`; +helpers.interopRequireWildcard = helper("7.14.0")` + function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + return (_getRequireWildcardCache = function (nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); + } + + export default function _interopRequireWildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) { + return obj; + } + + if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) { + return { default: obj } + } + + var cache = _getRequireWildcardCache(nodeInterop); + if (cache && cache.has(obj)) { + return cache.get(obj); + } + + var newObj = {}; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor + ? Object.getOwnPropertyDescriptor(obj, key) + : null; + if (desc && (desc.get || desc.set)) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + if (cache) { + cache.set(obj, newObj); + } + return newObj; + } +`; +helpers.newArrowCheck = helper("7.0.0-beta.0")` + export default function _newArrowCheck(innerThis, boundThis) { + if (innerThis !== boundThis) { + throw new TypeError("Cannot instantiate an arrow function"); + } + } +`; +helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")` + export default function _objectDestructuringEmpty(obj) { + if (obj == null) throw new TypeError("Cannot destructure undefined"); + } +`; +helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")` + export default function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; + } +`; +helpers.objectWithoutProperties = helper("7.0.0-beta.0")` + import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose"; + + export default function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + + var target = objectWithoutPropertiesLoose(source, excluded); + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; + } +`; +helpers.assertThisInitialized = helper("7.0.0-beta.0")` + export default function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; + } +`; +helpers.possibleConstructorReturn = helper("7.0.0-beta.0")` + import assertThisInitialized from "assertThisInitialized"; + + export default function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); + } +`; +helpers.createSuper = helper("7.9.0")` + import getPrototypeOf from "getPrototypeOf"; + import isNativeReflectConstruct from "isNativeReflectConstruct"; + import possibleConstructorReturn from "possibleConstructorReturn"; + + export default function _createSuper(Derived) { + var hasNativeReflectConstruct = isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = getPrototypeOf(Derived), result; + if (hasNativeReflectConstruct) { + // NOTE: This doesn't work if this.__proto__.constructor has been modified. + var NewTarget = getPrototypeOf(this).constructor; + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + return possibleConstructorReturn(this, result); + } + } + `; +helpers.superPropBase = helper("7.0.0-beta.0")` + import getPrototypeOf from "getPrototypeOf"; + + export default function _superPropBase(object, property) { + // Yes, this throws if object is null to being with, that's on purpose. + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = getPrototypeOf(object); + if (object === null) break; + } + return object; + } +`; +helpers.get = helper("7.0.0-beta.0")` + import superPropBase from "superPropBase"; + + export default function _get(target, property, receiver) { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get; + } else { + _get = function _get(target, property, receiver) { + var base = superPropBase(target, property); + + if (!base) return; + + var desc = Object.getOwnPropertyDescriptor(base, property); + if (desc.get) { + return desc.get.call(receiver); + } + + return desc.value; + }; + } + return _get(target, property, receiver || target); + } +`; +helpers.set = helper("7.0.0-beta.0")` + import superPropBase from "superPropBase"; + import defineProperty from "defineProperty"; + + function set(target, property, value, receiver) { + if (typeof Reflect !== "undefined" && Reflect.set) { + set = Reflect.set; + } else { + set = function set(target, property, value, receiver) { + var base = superPropBase(target, property); + var desc; + + if (base) { + desc = Object.getOwnPropertyDescriptor(base, property); + if (desc.set) { + desc.set.call(receiver, value); + return true; + } else if (!desc.writable) { + // Both getter and non-writable fall into this. + return false; + } + } + + // Without a super that defines the property, spec boils down to + // "define on receiver" for some reason. + desc = Object.getOwnPropertyDescriptor(receiver, property); + if (desc) { + if (!desc.writable) { + // Setter, getter, and non-writable fall into this. + return false; + } + + desc.value = value; + Object.defineProperty(receiver, property, desc); + } else { + // Avoid setters that may be defined on Sub's prototype, but not on + // the instance. + defineProperty(receiver, property, value); + } + + return true; + }; + } + + return set(target, property, value, receiver); + } + + export default function _set(target, property, value, receiver, isStrict) { + var s = set(target, property, value, receiver || target); + if (!s && isStrict) { + throw new Error('failed to set property'); + } + + return value; + } +`; +helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")` + export default function _taggedTemplateLiteral(strings, raw) { + if (!raw) { raw = strings.slice(0); } + return Object.freeze(Object.defineProperties(strings, { + raw: { value: Object.freeze(raw) } + })); + } +`; +helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")` + export default function _taggedTemplateLiteralLoose(strings, raw) { + if (!raw) { raw = strings.slice(0); } + strings.raw = raw; + return strings; + } +`; +helpers.readOnlyError = helper("7.0.0-beta.0")` + export default function _readOnlyError(name) { + throw new TypeError("\\"" + name + "\\" is read-only"); + } +`; +helpers.writeOnlyError = helper("7.12.13")` + export default function _writeOnlyError(name) { + throw new TypeError("\\"" + name + "\\" is write-only"); + } +`; +helpers.classNameTDZError = helper("7.0.0-beta.0")` + export default function _classNameTDZError(name) { + throw new Error("Class \\"" + name + "\\" cannot be referenced in computed property keys."); + } +`; +helpers.temporalUndefined = helper("7.0.0-beta.0")` + // This function isn't mean to be called, but to be used as a reference. + // We can't use a normal object because it isn't hoisted. + export default function _temporalUndefined() {} +`; +helpers.tdz = helper("7.5.5")` + export default function _tdzError(name) { + throw new ReferenceError(name + " is not defined - temporal dead zone"); + } +`; +helpers.temporalRef = helper("7.0.0-beta.0")` + import undef from "temporalUndefined"; + import err from "tdz"; + + export default function _temporalRef(val, name) { + return val === undef ? err(name) : val; + } +`; +helpers.slicedToArray = helper("7.0.0-beta.0")` + import arrayWithHoles from "arrayWithHoles"; + import iterableToArrayLimit from "iterableToArrayLimit"; + import unsupportedIterableToArray from "unsupportedIterableToArray"; + import nonIterableRest from "nonIterableRest"; + + export default function _slicedToArray(arr, i) { + return ( + arrayWithHoles(arr) || + iterableToArrayLimit(arr, i) || + unsupportedIterableToArray(arr, i) || + nonIterableRest() + ); + } +`; +helpers.slicedToArrayLoose = helper("7.0.0-beta.0")` + import arrayWithHoles from "arrayWithHoles"; + import iterableToArrayLimitLoose from "iterableToArrayLimitLoose"; + import unsupportedIterableToArray from "unsupportedIterableToArray"; + import nonIterableRest from "nonIterableRest"; + + export default function _slicedToArrayLoose(arr, i) { + return ( + arrayWithHoles(arr) || + iterableToArrayLimitLoose(arr, i) || + unsupportedIterableToArray(arr, i) || + nonIterableRest() + ); + } +`; +helpers.toArray = helper("7.0.0-beta.0")` + import arrayWithHoles from "arrayWithHoles"; + import iterableToArray from "iterableToArray"; + import unsupportedIterableToArray from "unsupportedIterableToArray"; + import nonIterableRest from "nonIterableRest"; + + export default function _toArray(arr) { + return ( + arrayWithHoles(arr) || + iterableToArray(arr) || + unsupportedIterableToArray(arr) || + nonIterableRest() + ); + } +`; +helpers.toConsumableArray = helper("7.0.0-beta.0")` + import arrayWithoutHoles from "arrayWithoutHoles"; + import iterableToArray from "iterableToArray"; + import unsupportedIterableToArray from "unsupportedIterableToArray"; + import nonIterableSpread from "nonIterableSpread"; + + export default function _toConsumableArray(arr) { + return ( + arrayWithoutHoles(arr) || + iterableToArray(arr) || + unsupportedIterableToArray(arr) || + nonIterableSpread() + ); + } +`; +helpers.arrayWithoutHoles = helper("7.0.0-beta.0")` + import arrayLikeToArray from "arrayLikeToArray"; + + export default function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return arrayLikeToArray(arr); + } +`; +helpers.arrayWithHoles = helper("7.0.0-beta.0")` + export default function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } +`; +helpers.maybeArrayLike = helper("7.9.0")` + import arrayLikeToArray from "arrayLikeToArray"; + + export default function _maybeArrayLike(next, arr, i) { + if (arr && !Array.isArray(arr) && typeof arr.length === "number") { + var len = arr.length; + return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len); + } + return next(arr, i); + } +`; +helpers.iterableToArray = helper("7.0.0-beta.0")` + export default function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } +`; +helpers.iterableToArrayLimit = helper("7.0.0-beta.0")` + export default function _iterableToArrayLimit(arr, i) { + // this is an expanded form of \`for...of\` that properly supports abrupt completions of + // iterators etc. variable names have been minimised to reduce the size of this massive + // helper. sometimes spec compliance is annoying :( + // + // _n = _iteratorNormalCompletion + // _d = _didIteratorError + // _e = _iteratorError + // _i = _iterator + // _s = _step + + var _i = arr == null ? null : (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); + if (_i == null) return; + + var _arr = []; + var _n = true; + var _d = false; + var _s, _e; + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + return _arr; + } +`; +helpers.iterableToArrayLimitLoose = helper("7.0.0-beta.0")` + export default function _iterableToArrayLimitLoose(arr, i) { + var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); + if (_i == null) return; + + var _arr = []; + for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) { + _arr.push(_step.value); + if (i && _arr.length === i) break; + } + return _arr; + } +`; +helpers.unsupportedIterableToArray = helper("7.9.0")` + import arrayLikeToArray from "arrayLikeToArray"; + + export default function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) + return arrayLikeToArray(o, minLen); + } +`; +helpers.arrayLikeToArray = helper("7.9.0")` + export default function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } +`; +helpers.nonIterableSpread = helper("7.0.0-beta.0")` + export default function _nonIterableSpread() { + throw new TypeError( + "Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." + ); + } +`; +helpers.nonIterableRest = helper("7.0.0-beta.0")` + export default function _nonIterableRest() { + throw new TypeError( + "Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." + ); + } +`; +helpers.createForOfIteratorHelper = helper("7.9.0")` + import unsupportedIterableToArray from "unsupportedIterableToArray"; + + // s: start (create the iterator) + // n: next + // e: error (called whenever something throws) + // f: finish (always called at the end) + + export default function _createForOfIteratorHelper(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (!it) { + // Fallback for engines without symbol support + if ( + Array.isArray(o) || + (it = unsupportedIterableToArray(o)) || + (allowArrayLike && o && typeof o.length === "number") + ) { + if (it) o = it; + var i = 0; + var F = function(){}; + return { + s: F, + n: function() { + if (i >= o.length) return { done: true }; + return { done: false, value: o[i++] }; + }, + e: function(e) { throw e; }, + f: F, + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, didErr = false, err; + + return { + s: function() { + it = it.call(o); + }, + n: function() { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function(e) { + didErr = true; + err = e; + }, + f: function() { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; + } +`; +helpers.createForOfIteratorHelperLoose = helper("7.9.0")` + import unsupportedIterableToArray from "unsupportedIterableToArray"; + + export default function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (it) return (it = it.call(o)).next.bind(it); + + // Fallback for engines without symbol support + if ( + Array.isArray(o) || + (it = unsupportedIterableToArray(o)) || + (allowArrayLike && o && typeof o.length === "number") + ) { + if (it) o = it; + var i = 0; + return function() { + if (i >= o.length) return { done: true }; + return { done: false, value: o[i++] }; + } + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } +`; +helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")` + export default function _skipFirstGeneratorNext(fn) { + return function () { + var it = fn.apply(this, arguments); + it.next(); + return it; + } + } +`; +helpers.toPrimitive = helper("7.1.5")` + export default function _toPrimitive( + input, + hint /*: "default" | "string" | "number" | void */ + ) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } +`; +helpers.toPropertyKey = helper("7.1.5")` + import toPrimitive from "toPrimitive"; + + export default function _toPropertyKey(arg) { + var key = toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } +`; +helpers.initializerWarningHelper = helper("7.0.0-beta.0")` + export default function _initializerWarningHelper(descriptor, context){ + throw new Error( + 'Decorating class property failed. Please ensure that ' + + 'proposal-class-properties is enabled and runs after the decorators transform.' + ); + } +`; +helpers.initializerDefineProperty = helper("7.0.0-beta.0")` + export default function _initializerDefineProperty(target, property, descriptor, context){ + if (!descriptor) return; + + Object.defineProperty(target, property, { + enumerable: descriptor.enumerable, + configurable: descriptor.configurable, + writable: descriptor.writable, + value: descriptor.initializer ? descriptor.initializer.call(context) : void 0, + }); + } +`; +helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")` + export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){ + var desc = {}; + Object.keys(descriptor).forEach(function(key){ + desc[key] = descriptor[key]; + }); + desc.enumerable = !!desc.enumerable; + desc.configurable = !!desc.configurable; + if ('value' in desc || desc.initializer){ + desc.writable = true; + } + + desc = decorators.slice().reverse().reduce(function(desc, decorator){ + return decorator(target, property, desc) || desc; + }, desc); + + if (context && desc.initializer !== void 0){ + desc.value = desc.initializer ? desc.initializer.call(context) : void 0; + desc.initializer = undefined; + } + + if (desc.initializer === void 0){ + Object.defineProperty(target, property, desc); + desc = null; + } + + return desc; + } +`; +helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")` + var id = 0; + export default function _classPrivateFieldKey(name) { + return "__private_" + (id++) + "_" + name; + } +`; +helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")` + export default function _classPrivateFieldBase(receiver, privateKey) { + if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { + throw new TypeError("attempted to use private field on non-instance"); + } + return receiver; + } +`; +helpers.classPrivateFieldGet = helper("7.0.0-beta.0")` + import classApplyDescriptorGet from "classApplyDescriptorGet"; + import classExtractFieldDescriptor from "classExtractFieldDescriptor"; + export default function _classPrivateFieldGet(receiver, privateMap) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get"); + return classApplyDescriptorGet(receiver, descriptor); + } +`; +helpers.classPrivateFieldSet = helper("7.0.0-beta.0")` + import classApplyDescriptorSet from "classApplyDescriptorSet"; + import classExtractFieldDescriptor from "classExtractFieldDescriptor"; + export default function _classPrivateFieldSet(receiver, privateMap, value) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); + classApplyDescriptorSet(receiver, descriptor, value); + return value; + } +`; +helpers.classPrivateFieldDestructureSet = helper("7.4.4")` + import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet"; + import classExtractFieldDescriptor from "classExtractFieldDescriptor"; + export default function _classPrivateFieldDestructureSet(receiver, privateMap) { + var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); + return classApplyDescriptorDestructureSet(receiver, descriptor); + } +`; +helpers.classExtractFieldDescriptor = helper("7.13.10")` + export default function _classExtractFieldDescriptor(receiver, privateMap, action) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to " + action + " private field on non-instance"); + } + return privateMap.get(receiver); + } +`; +helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")` + import classApplyDescriptorGet from "classApplyDescriptorGet"; + import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; + import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; + export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "get"); + return classApplyDescriptorGet(receiver, descriptor); + } +`; +helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")` + import classApplyDescriptorSet from "classApplyDescriptorSet"; + import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; + import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; + export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "set"); + classApplyDescriptorSet(receiver, descriptor, value); + return value; + } +`; +helpers.classStaticPrivateMethodGet = helper("7.3.2")` + import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; + export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) { + classCheckPrivateStaticAccess(receiver, classConstructor); + return method; + } +`; +helpers.classStaticPrivateMethodSet = helper("7.3.2")` + export default function _classStaticPrivateMethodSet() { + throw new TypeError("attempted to set read only static private field"); + } +`; +helpers.classApplyDescriptorGet = helper("7.13.10")` + export default function _classApplyDescriptorGet(receiver, descriptor) { + if (descriptor.get) { + return descriptor.get.call(receiver); + } + return descriptor.value; + } +`; +helpers.classApplyDescriptorSet = helper("7.13.10")` + export default function _classApplyDescriptorSet(receiver, descriptor, value) { + if (descriptor.set) { + descriptor.set.call(receiver, value); + } else { + if (!descriptor.writable) { + // This should only throw in strict mode, but class bodies are + // always strict and private fields can only be used inside + // class bodies. + throw new TypeError("attempted to set read only private field"); + } + descriptor.value = value; + } + } +`; +helpers.classApplyDescriptorDestructureSet = helper("7.13.10")` + export default function _classApplyDescriptorDestructureSet(receiver, descriptor) { + if (descriptor.set) { + if (!("__destrObj" in descriptor)) { + descriptor.__destrObj = { + set value(v) { + descriptor.set.call(receiver, v) + }, + }; + } + return descriptor.__destrObj; + } else { + if (!descriptor.writable) { + // This should only throw in strict mode, but class bodies are + // always strict and private fields can only be used inside + // class bodies. + throw new TypeError("attempted to set read only private field"); + } + + return descriptor; + } + } +`; +helpers.classStaticPrivateFieldDestructureSet = helper("7.13.10")` + import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet"; + import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; + import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; + export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) { + classCheckPrivateStaticAccess(receiver, classConstructor); + classCheckPrivateStaticFieldDescriptor(descriptor, "set"); + return classApplyDescriptorDestructureSet(receiver, descriptor); + } +`; +helpers.classCheckPrivateStaticAccess = helper("7.13.10")` + export default function _classCheckPrivateStaticAccess(receiver, classConstructor) { + if (receiver !== classConstructor) { + throw new TypeError("Private static access of wrong provenance"); + } + } +`; +helpers.classCheckPrivateStaticFieldDescriptor = helper("7.13.10")` + export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { + if (descriptor === undefined) { + throw new TypeError("attempted to " + action + " private static field before its declaration"); + } + } +`; +helpers.decorate = helper("7.1.5")` + import toArray from "toArray"; + import toPropertyKey from "toPropertyKey"; + + // These comments are stripped by @babel/template + /*:: + type PropertyDescriptor = + | { + value: any, + writable: boolean, + configurable: boolean, + enumerable: boolean, + } + | { + get?: () => any, + set?: (v: any) => void, + configurable: boolean, + enumerable: boolean, + }; + + type FieldDescriptor ={ + writable: boolean, + configurable: boolean, + enumerable: boolean, + }; + + type Placement = "static" | "prototype" | "own"; + type Key = string | symbol; // PrivateName is not supported yet. + + type ElementDescriptor = + | { + kind: "method", + key: Key, + placement: Placement, + descriptor: PropertyDescriptor + } + | { + kind: "field", + key: Key, + placement: Placement, + descriptor: FieldDescriptor, + initializer?: () => any, + }; + + // This is exposed to the user code + type ElementObjectInput = ElementDescriptor & { + [@@toStringTag]?: "Descriptor" + }; + + // This is exposed to the user code + type ElementObjectOutput = ElementDescriptor & { + [@@toStringTag]?: "Descriptor" + extras?: ElementDescriptor[], + finisher?: ClassFinisher, + }; + + // This is exposed to the user code + type ClassObject = { + [@@toStringTag]?: "Descriptor", + kind: "class", + elements: ElementDescriptor[], + }; + + type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput; + type ClassDecorator = (descriptor: ClassObject) => ?ClassObject; + type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>; + + // Only used by Babel in the transform output, not part of the spec. + type ElementDefinition = + | { + kind: "method", + value: any, + key: Key, + static?: boolean, + decorators?: ElementDecorator[], + } + | { + kind: "field", + value: () => any, + key: Key, + static?: boolean, + decorators?: ElementDecorator[], + }; + + declare function ClassFactory<C>(initialize: (instance: C) => void): { + F: Class<C>, + d: ElementDefinition[] + } + + */ + + /*:: + // Various combinations with/without extras and with one or many finishers + + type ElementFinisherExtras = { + element: ElementDescriptor, + finisher?: ClassFinisher, + extras?: ElementDescriptor[], + }; + + type ElementFinishersExtras = { + element: ElementDescriptor, + finishers: ClassFinisher[], + extras: ElementDescriptor[], + }; + + type ElementsFinisher = { + elements: ElementDescriptor[], + finisher?: ClassFinisher, + }; + + type ElementsFinishers = { + elements: ElementDescriptor[], + finishers: ClassFinisher[], + }; + + */ + + /*:: + + type Placements = { + static: Key[], + prototype: Key[], + own: Key[], + }; + + */ + + // ClassDefinitionEvaluation (Steps 26-*) + export default function _decorate( + decorators /*: ClassDecorator[] */, + factory /*: ClassFactory */, + superClass /*: ?Class<*> */, + mixins /*: ?Array<Function> */, + ) /*: Class<*> */ { + var api = _getDecoratorsApi(); + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + api = mixins[i](api); + } + } + + var r = factory(function initialize(O) { + api.initializeInstanceElements(O, decorated.elements); + }, superClass); + var decorated = api.decorateClass( + _coalesceClassElements(r.d.map(_createElementDescriptor)), + decorators, + ); + + api.initializeClassElements(r.F, decorated.elements); + + return api.runClassFinishers(r.F, decorated.finishers); + } + + function _getDecoratorsApi() { + _getDecoratorsApi = function() { + return api; + }; + + var api = { + elementsDefinitionOrder: [["method"], ["field"]], + + // InitializeInstanceElements + initializeInstanceElements: function( + /*::<C>*/ O /*: C */, + elements /*: ElementDescriptor[] */, + ) { + ["method", "field"].forEach(function(kind) { + elements.forEach(function(element /*: ElementDescriptor */) { + if (element.kind === kind && element.placement === "own") { + this.defineClassElement(O, element); + } + }, this); + }, this); + }, + + // InitializeClassElements + initializeClassElements: function( + /*::<C>*/ F /*: Class<C> */, + elements /*: ElementDescriptor[] */, + ) { + var proto = F.prototype; + + ["method", "field"].forEach(function(kind) { + elements.forEach(function(element /*: ElementDescriptor */) { + var placement = element.placement; + if ( + element.kind === kind && + (placement === "static" || placement === "prototype") + ) { + var receiver = placement === "static" ? F : proto; + this.defineClassElement(receiver, element); + } + }, this); + }, this); + }, + + // DefineClassElement + defineClassElement: function( + /*::<C>*/ receiver /*: C | Class<C> */, + element /*: ElementDescriptor */, + ) { + var descriptor /*: PropertyDescriptor */ = element.descriptor; + if (element.kind === "field") { + var initializer = element.initializer; + descriptor = { + enumerable: descriptor.enumerable, + writable: descriptor.writable, + configurable: descriptor.configurable, + value: initializer === void 0 ? void 0 : initializer.call(receiver), + }; + } + Object.defineProperty(receiver, element.key, descriptor); + }, + + // DecorateClass + decorateClass: function( + elements /*: ElementDescriptor[] */, + decorators /*: ClassDecorator[] */, + ) /*: ElementsFinishers */ { + var newElements /*: ElementDescriptor[] */ = []; + var finishers /*: ClassFinisher[] */ = []; + var placements /*: Placements */ = { + static: [], + prototype: [], + own: [], + }; + + elements.forEach(function(element /*: ElementDescriptor */) { + this.addElementPlacement(element, placements); + }, this); + + elements.forEach(function(element /*: ElementDescriptor */) { + if (!_hasDecorators(element)) return newElements.push(element); + + var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement( + element, + placements, + ); + newElements.push(elementFinishersExtras.element); + newElements.push.apply(newElements, elementFinishersExtras.extras); + finishers.push.apply(finishers, elementFinishersExtras.finishers); + }, this); + + if (!decorators) { + return { elements: newElements, finishers: finishers }; + } + + var result /*: ElementsFinishers */ = this.decorateConstructor( + newElements, + decorators, + ); + finishers.push.apply(finishers, result.finishers); + result.finishers = finishers; + + return result; + }, + + // AddElementPlacement + addElementPlacement: function( + element /*: ElementDescriptor */, + placements /*: Placements */, + silent /*: boolean */, + ) { + var keys = placements[element.placement]; + if (!silent && keys.indexOf(element.key) !== -1) { + throw new TypeError("Duplicated element (" + element.key + ")"); + } + keys.push(element.key); + }, + + // DecorateElement + decorateElement: function( + element /*: ElementDescriptor */, + placements /*: Placements */, + ) /*: ElementFinishersExtras */ { + var extras /*: ElementDescriptor[] */ = []; + var finishers /*: ClassFinisher[] */ = []; + + for ( + var decorators = element.decorators, i = decorators.length - 1; + i >= 0; + i-- + ) { + // (inlined) RemoveElementPlacement + var keys = placements[element.placement]; + keys.splice(keys.indexOf(element.key), 1); + + var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor( + element, + ); + var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras( + (0, decorators[i])(elementObject) /*: ElementObjectOutput */ || + elementObject, + ); + + element = elementFinisherExtras.element; + this.addElementPlacement(element, placements); + + if (elementFinisherExtras.finisher) { + finishers.push(elementFinisherExtras.finisher); + } + + var newExtras /*: ElementDescriptor[] | void */ = + elementFinisherExtras.extras; + if (newExtras) { + for (var j = 0; j < newExtras.length; j++) { + this.addElementPlacement(newExtras[j], placements); + } + extras.push.apply(extras, newExtras); + } + } + + return { element: element, finishers: finishers, extras: extras }; + }, + + // DecorateConstructor + decorateConstructor: function( + elements /*: ElementDescriptor[] */, + decorators /*: ClassDecorator[] */, + ) /*: ElementsFinishers */ { + var finishers /*: ClassFinisher[] */ = []; + + for (var i = decorators.length - 1; i >= 0; i--) { + var obj /*: ClassObject */ = this.fromClassDescriptor(elements); + var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor( + (0, decorators[i])(obj) /*: ClassObject */ || obj, + ); + + if (elementsAndFinisher.finisher !== undefined) { + finishers.push(elementsAndFinisher.finisher); + } + + if (elementsAndFinisher.elements !== undefined) { + elements = elementsAndFinisher.elements; + + for (var j = 0; j < elements.length - 1; j++) { + for (var k = j + 1; k < elements.length; k++) { + if ( + elements[j].key === elements[k].key && + elements[j].placement === elements[k].placement + ) { + throw new TypeError( + "Duplicated element (" + elements[j].key + ")", + ); + } + } + } + } + } + + return { elements: elements, finishers: finishers }; + }, + + // FromElementDescriptor + fromElementDescriptor: function( + element /*: ElementDescriptor */, + ) /*: ElementObject */ { + var obj /*: ElementObject */ = { + kind: element.kind, + key: element.key, + placement: element.placement, + descriptor: element.descriptor, + }; + + var desc = { + value: "Descriptor", + configurable: true, + }; + Object.defineProperty(obj, Symbol.toStringTag, desc); + + if (element.kind === "field") obj.initializer = element.initializer; + + return obj; + }, + + // ToElementDescriptors + toElementDescriptors: function( + elementObjects /*: ElementObject[] */, + ) /*: ElementDescriptor[] */ { + if (elementObjects === undefined) return; + return toArray(elementObjects).map(function(elementObject) { + var element = this.toElementDescriptor(elementObject); + this.disallowProperty(elementObject, "finisher", "An element descriptor"); + this.disallowProperty(elementObject, "extras", "An element descriptor"); + return element; + }, this); + }, + + // ToElementDescriptor + toElementDescriptor: function( + elementObject /*: ElementObject */, + ) /*: ElementDescriptor */ { + var kind = String(elementObject.kind); + if (kind !== "method" && kind !== "field") { + throw new TypeError( + 'An element descriptor\\'s .kind property must be either "method" or' + + ' "field", but a decorator created an element descriptor with' + + ' .kind "' + + kind + + '"', + ); + } + + var key = toPropertyKey(elementObject.key); + + var placement = String(elementObject.placement); + if ( + placement !== "static" && + placement !== "prototype" && + placement !== "own" + ) { + throw new TypeError( + 'An element descriptor\\'s .placement property must be one of "static",' + + ' "prototype" or "own", but a decorator created an element descriptor' + + ' with .placement "' + + placement + + '"', + ); + } + + var descriptor /*: PropertyDescriptor */ = elementObject.descriptor; + + this.disallowProperty(elementObject, "elements", "An element descriptor"); + + var element /*: ElementDescriptor */ = { + kind: kind, + key: key, + placement: placement, + descriptor: Object.assign({}, descriptor), + }; + + if (kind !== "field") { + this.disallowProperty(elementObject, "initializer", "A method descriptor"); + } else { + this.disallowProperty( + descriptor, + "get", + "The property descriptor of a field descriptor", + ); + this.disallowProperty( + descriptor, + "set", + "The property descriptor of a field descriptor", + ); + this.disallowProperty( + descriptor, + "value", + "The property descriptor of a field descriptor", + ); + + element.initializer = elementObject.initializer; + } + + return element; + }, + + toElementFinisherExtras: function( + elementObject /*: ElementObject */, + ) /*: ElementFinisherExtras */ { + var element /*: ElementDescriptor */ = this.toElementDescriptor( + elementObject, + ); + var finisher /*: ClassFinisher */ = _optionalCallableProperty( + elementObject, + "finisher", + ); + var extras /*: ElementDescriptors[] */ = this.toElementDescriptors( + elementObject.extras, + ); + + return { element: element, finisher: finisher, extras: extras }; + }, + + // FromClassDescriptor + fromClassDescriptor: function( + elements /*: ElementDescriptor[] */, + ) /*: ClassObject */ { + var obj = { + kind: "class", + elements: elements.map(this.fromElementDescriptor, this), + }; + + var desc = { value: "Descriptor", configurable: true }; + Object.defineProperty(obj, Symbol.toStringTag, desc); + + return obj; + }, + + // ToClassDescriptor + toClassDescriptor: function( + obj /*: ClassObject */, + ) /*: ElementsFinisher */ { + var kind = String(obj.kind); + if (kind !== "class") { + throw new TypeError( + 'A class descriptor\\'s .kind property must be "class", but a decorator' + + ' created a class descriptor with .kind "' + + kind + + '"', + ); + } + + this.disallowProperty(obj, "key", "A class descriptor"); + this.disallowProperty(obj, "placement", "A class descriptor"); + this.disallowProperty(obj, "descriptor", "A class descriptor"); + this.disallowProperty(obj, "initializer", "A class descriptor"); + this.disallowProperty(obj, "extras", "A class descriptor"); + + var finisher = _optionalCallableProperty(obj, "finisher"); + var elements = this.toElementDescriptors(obj.elements); + + return { elements: elements, finisher: finisher }; + }, + + // RunClassFinishers + runClassFinishers: function( + constructor /*: Class<*> */, + finishers /*: ClassFinisher[] */, + ) /*: Class<*> */ { + for (var i = 0; i < finishers.length; i++) { + var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor); + if (newConstructor !== undefined) { + // NOTE: This should check if IsConstructor(newConstructor) is false. + if (typeof newConstructor !== "function") { + throw new TypeError("Finishers must return a constructor."); + } + constructor = newConstructor; + } + } + return constructor; + }, + + disallowProperty: function(obj, name, objectType) { + if (obj[name] !== undefined) { + throw new TypeError(objectType + " can't have a ." + name + " property."); + } + } + }; + + return api; + } + + // ClassElementEvaluation + function _createElementDescriptor( + def /*: ElementDefinition */, + ) /*: ElementDescriptor */ { + var key = toPropertyKey(def.key); + + var descriptor /*: PropertyDescriptor */; + if (def.kind === "method") { + descriptor = { + value: def.value, + writable: true, + configurable: true, + enumerable: false, + }; + } else if (def.kind === "get") { + descriptor = { get: def.value, configurable: true, enumerable: false }; + } else if (def.kind === "set") { + descriptor = { set: def.value, configurable: true, enumerable: false }; + } else if (def.kind === "field") { + descriptor = { configurable: true, writable: true, enumerable: true }; + } + + var element /*: ElementDescriptor */ = { + kind: def.kind === "field" ? "field" : "method", + key: key, + placement: def.static + ? "static" + : def.kind === "field" + ? "own" + : "prototype", + descriptor: descriptor, + }; + if (def.decorators) element.decorators = def.decorators; + if (def.kind === "field") element.initializer = def.value; + + return element; + } + + // CoalesceGetterSetter + function _coalesceGetterSetter( + element /*: ElementDescriptor */, + other /*: ElementDescriptor */, + ) { + if (element.descriptor.get !== undefined) { + other.descriptor.get = element.descriptor.get; + } else { + other.descriptor.set = element.descriptor.set; + } + } + + // CoalesceClassElements + function _coalesceClassElements( + elements /*: ElementDescriptor[] */, + ) /*: ElementDescriptor[] */ { + var newElements /*: ElementDescriptor[] */ = []; + + var isSameElement = function( + other /*: ElementDescriptor */, + ) /*: boolean */ { + return ( + other.kind === "method" && + other.key === element.key && + other.placement === element.placement + ); + }; + + for (var i = 0; i < elements.length; i++) { + var element /*: ElementDescriptor */ = elements[i]; + var other /*: ElementDescriptor */; + + if ( + element.kind === "method" && + (other = newElements.find(isSameElement)) + ) { + if ( + _isDataDescriptor(element.descriptor) || + _isDataDescriptor(other.descriptor) + ) { + if (_hasDecorators(element) || _hasDecorators(other)) { + throw new ReferenceError( + "Duplicated methods (" + element.key + ") can't be decorated.", + ); + } + other.descriptor = element.descriptor; + } else { + if (_hasDecorators(element)) { + if (_hasDecorators(other)) { + throw new ReferenceError( + "Decorators can't be placed on different accessors with for " + + "the same property (" + + element.key + + ").", + ); + } + other.decorators = element.decorators; + } + _coalesceGetterSetter(element, other); + } + } else { + newElements.push(element); + } + } + + return newElements; + } + + function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ { + return element.decorators && element.decorators.length; + } + + function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ { + return ( + desc !== undefined && + !(desc.value === undefined && desc.writable === undefined) + ); + } + + function _optionalCallableProperty /*::<T>*/( + obj /*: T */, + name /*: $Keys<T> */, + ) /*: ?Function */ { + var value = obj[name]; + if (value !== undefined && typeof value !== "function") { + throw new TypeError("Expected '" + name + "' to be a function"); + } + return value; + } + +`; +helpers.classPrivateMethodGet = helper("7.1.6")` + export default function _classPrivateMethodGet(receiver, privateSet, fn) { + if (!privateSet.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return fn; + } +`; +{ + helpers.classPrivateMethodSet = helper("7.1.6")` + export default function _classPrivateMethodSet() { + throw new TypeError("attempted to reassign private method"); + } + `; +} + +/***/ }), + +/***/ 64643: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.get = get; +exports.minVersion = minVersion; +exports.getDependencies = getDependencies; +exports.ensure = ensure; +exports["default"] = exports.list = void 0; + +var _traverse = __nccwpck_require__(8631); + +var t = __nccwpck_require__(24479); + +var _helpers = __nccwpck_require__(14981); + +function makePath(path) { + const parts = []; + + for (; path.parentPath; path = path.parentPath) { + parts.push(path.key); + if (path.inList) parts.push(path.listKey); + } + + return parts.reverse().join("."); +} + +let fileClass = undefined; + +function getHelperMetadata(file) { + const globals = new Set(); + const localBindingNames = new Set(); + const dependencies = new Map(); + let exportName; + let exportPath; + const exportBindingAssignments = []; + const importPaths = []; + const importBindingsReferences = []; + const dependencyVisitor = { + ImportDeclaration(child) { + const name = child.node.source.value; + + if (!_helpers.default[name]) { + throw child.buildCodeFrameError(`Unknown helper ${name}`); + } + + if (child.get("specifiers").length !== 1 || !child.get("specifiers.0").isImportDefaultSpecifier()) { + throw child.buildCodeFrameError("Helpers can only import a default value"); + } + + const bindingIdentifier = child.node.specifiers[0].local; + dependencies.set(bindingIdentifier, name); + importPaths.push(makePath(child)); + }, + + ExportDefaultDeclaration(child) { + const decl = child.get("declaration"); + + if (decl.isFunctionDeclaration()) { + if (!decl.node.id) { + throw decl.buildCodeFrameError("Helpers should give names to their exported func declaration"); + } + + exportName = decl.node.id.name; + } + + exportPath = makePath(child); + }, + + ExportAllDeclaration(child) { + throw child.buildCodeFrameError("Helpers can only export default"); + }, + + ExportNamedDeclaration(child) { + throw child.buildCodeFrameError("Helpers can only export default"); + }, + + Statement(child) { + if (child.isModuleDeclaration()) return; + child.skip(); + } + + }; + const referenceVisitor = { + Program(path) { + const bindings = path.scope.getAllBindings(); + Object.keys(bindings).forEach(name => { + if (name === exportName) return; + if (dependencies.has(bindings[name].identifier)) return; + localBindingNames.add(name); + }); + }, + + ReferencedIdentifier(child) { + const name = child.node.name; + const binding = child.scope.getBinding(name, true); + + if (!binding) { + globals.add(name); + } else if (dependencies.has(binding.identifier)) { + importBindingsReferences.push(makePath(child)); + } + }, + + AssignmentExpression(child) { + const left = child.get("left"); + if (!(exportName in left.getBindingIdentifiers())) return; + + if (!left.isIdentifier()) { + throw left.buildCodeFrameError("Only simple assignments to exports are allowed in helpers"); + } + + const binding = child.scope.getBinding(exportName); + + if (binding != null && binding.scope.path.isProgram()) { + exportBindingAssignments.push(makePath(child)); + } + } + + }; + (0, _traverse.default)(file.ast, dependencyVisitor, file.scope); + (0, _traverse.default)(file.ast, referenceVisitor, file.scope); + if (!exportPath) throw new Error("Helpers must default-export something."); + exportBindingAssignments.reverse(); + return { + globals: Array.from(globals), + localBindingNames: Array.from(localBindingNames), + dependencies, + exportBindingAssignments, + exportPath, + exportName, + importBindingsReferences, + importPaths + }; +} + +function permuteHelperAST(file, metadata, id, localBindings, getDependency) { + if (localBindings && !id) { + throw new Error("Unexpected local bindings for module-based helpers."); + } + + if (!id) return; + const { + localBindingNames, + dependencies, + exportBindingAssignments, + exportPath, + exportName, + importBindingsReferences, + importPaths + } = metadata; + const dependenciesRefs = {}; + dependencies.forEach((name, id) => { + dependenciesRefs[id.name] = typeof getDependency === "function" && getDependency(name) || id; + }); + const toRename = {}; + const bindings = new Set(localBindings || []); + localBindingNames.forEach(name => { + let newName = name; + + while (bindings.has(newName)) newName = "_" + newName; + + if (newName !== name) toRename[name] = newName; + }); + + if (id.type === "Identifier" && exportName !== id.name) { + toRename[exportName] = id.name; + } + + const visitor = { + Program(path) { + const exp = path.get(exportPath); + const imps = importPaths.map(p => path.get(p)); + const impsBindingRefs = importBindingsReferences.map(p => path.get(p)); + const decl = exp.get("declaration"); + + if (id.type === "Identifier") { + if (decl.isFunctionDeclaration()) { + exp.replaceWith(decl); + } else { + exp.replaceWith(t.variableDeclaration("var", [t.variableDeclarator(id, decl.node)])); + } + } else if (id.type === "MemberExpression") { + if (decl.isFunctionDeclaration()) { + exportBindingAssignments.forEach(assignPath => { + const assign = path.get(assignPath); + assign.replaceWith(t.assignmentExpression("=", id, assign.node)); + }); + exp.replaceWith(decl); + path.pushContainer("body", t.expressionStatement(t.assignmentExpression("=", id, t.identifier(exportName)))); + } else { + exp.replaceWith(t.expressionStatement(t.assignmentExpression("=", id, decl.node))); + } + } else { + throw new Error("Unexpected helper format."); + } + + Object.keys(toRename).forEach(name => { + path.scope.rename(name, toRename[name]); + }); + + for (const path of imps) path.remove(); + + for (const path of impsBindingRefs) { + const node = t.cloneNode(dependenciesRefs[path.node.name]); + path.replaceWith(node); + } + + path.stop(); + } + + }; + (0, _traverse.default)(file.ast, visitor, file.scope); +} + +const helperData = Object.create(null); + +function loadHelper(name) { + if (!helperData[name]) { + const helper = _helpers.default[name]; + + if (!helper) { + throw Object.assign(new ReferenceError(`Unknown helper ${name}`), { + code: "BABEL_HELPER_UNKNOWN", + helper: name + }); + } + + const fn = () => { + const file = { + ast: t.file(helper.ast()) + }; + + if (fileClass) { + return new fileClass({ + filename: `babel-helper://${name}` + }, file); + } + + return file; + }; + + const metadata = getHelperMetadata(fn()); + helperData[name] = { + build(getDependency, id, localBindings) { + const file = fn(); + permuteHelperAST(file, metadata, id, localBindings, getDependency); + return { + nodes: file.ast.program.body, + globals: metadata.globals + }; + }, + + minVersion() { + return helper.minVersion; + }, + + dependencies: metadata.dependencies + }; + } + + return helperData[name]; +} + +function get(name, getDependency, id, localBindings) { + return loadHelper(name).build(getDependency, id, localBindings); +} + +function minVersion(name) { + return loadHelper(name).minVersion(); +} + +function getDependencies(name) { + return Array.from(loadHelper(name).dependencies.values()); +} + +function ensure(name, newFileClass) { + if (!fileClass) { + fileClass = newFileClass; + } + + loadHelper(name); +} + +const list = Object.keys(_helpers.default).map(name => name.replace(/^_/, "")).filter(name => name !== "__esModule"); +exports.list = list; +var _default = get; +exports["default"] = _default; + +/***/ }), + +/***/ 42421: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.shouldHighlight = shouldHighlight; +exports.getChalk = getChalk; +exports["default"] = highlight; + +var _jsTokens = __nccwpck_require__(48035); + +var _helperValidatorIdentifier = __nccwpck_require__(49586); + +var _chalk = __nccwpck_require__(4215); + +const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); + +function getDefs(chalk) { + return { + keyword: chalk.cyan, + capitalized: chalk.yellow, + jsxIdentifier: chalk.yellow, + punctuator: chalk.yellow, + number: chalk.magenta, + string: chalk.green, + regex: chalk.magenta, + comment: chalk.grey, + invalid: chalk.white.bgRed.bold + }; +} + +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +const BRACKET = /^[()[\]{}]$/; +let tokenize; +{ + const JSX_TAG = /^[a-z][\w-]*$/i; + + const getTokenType = function (token, offset, text) { + if (token.type === "name") { + if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) { + return "keyword"; + } + + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) { + return "jsxIdentifier"; + } + + if (token.value[0] !== token.value[0].toLowerCase()) { + return "capitalized"; + } + } + + if (token.type === "punctuator" && BRACKET.test(token.value)) { + return "bracket"; + } + + if (token.type === "invalid" && (token.value === "@" || token.value === "#")) { + return "punctuator"; + } + + return token.type; + }; + + tokenize = function* (text) { + let match; + + while (match = _jsTokens.default.exec(text)) { + const token = _jsTokens.matchToToken(match); + + yield { + type: getTokenType(token, match.index, text), + value: token.value + }; + } + }; +} + +function highlightTokens(defs, text) { + let highlighted = ""; + + for (const { + type, + value + } of tokenize(text)) { + const colorize = defs[type]; + + if (colorize) { + highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n"); + } else { + highlighted += value; + } + } + + return highlighted; +} + +function shouldHighlight(options) { + return !!_chalk.supportsColor || options.forceColor; +} + +function getChalk(options) { + return options.forceColor ? new _chalk.constructor({ + enabled: true, + level: 1 + }) : _chalk; +} + +function highlight(code, options = {}) { + if (shouldHighlight(options)) { + const chalk = getChalk(options); + const defs = getDefs(chalk); + return highlightTokens(defs, code); + } else { + return code; + } +} + +/***/ }), + +/***/ 89302: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class TokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.updateContext = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + this.updateContext = null; + } + +} +const keywords$1 = new Map(); + +function createKeyword(name, options = {}) { + options.keyword = name; + const token = new TokenType(name, options); + keywords$1.set(name, token); + return token; +} + +function createBinop(name, binop) { + return new TokenType(name, { + beforeExpr, + binop + }); +} + +const types$1 = { + num: new TokenType("num", { + startsExpr + }), + bigint: new TokenType("bigint", { + startsExpr + }), + decimal: new TokenType("decimal", { + startsExpr + }), + regexp: new TokenType("regexp", { + startsExpr + }), + string: new TokenType("string", { + startsExpr + }), + name: new TokenType("name", { + startsExpr + }), + privateName: new TokenType("#name", { + startsExpr + }), + eof: new TokenType("eof"), + bracketL: new TokenType("[", { + beforeExpr, + startsExpr + }), + bracketHashL: new TokenType("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: new TokenType("[|", { + beforeExpr, + startsExpr + }), + bracketR: new TokenType("]"), + bracketBarR: new TokenType("|]"), + braceL: new TokenType("{", { + beforeExpr, + startsExpr + }), + braceBarL: new TokenType("{|", { + beforeExpr, + startsExpr + }), + braceHashL: new TokenType("#{", { + beforeExpr, + startsExpr + }), + braceR: new TokenType("}", { + beforeExpr + }), + braceBarR: new TokenType("|}"), + parenL: new TokenType("(", { + beforeExpr, + startsExpr + }), + parenR: new TokenType(")"), + comma: new TokenType(",", { + beforeExpr + }), + semi: new TokenType(";", { + beforeExpr + }), + colon: new TokenType(":", { + beforeExpr + }), + doubleColon: new TokenType("::", { + beforeExpr + }), + dot: new TokenType("."), + question: new TokenType("?", { + beforeExpr + }), + questionDot: new TokenType("?."), + arrow: new TokenType("=>", { + beforeExpr + }), + template: new TokenType("template"), + ellipsis: new TokenType("...", { + beforeExpr + }), + backQuote: new TokenType("`", { + startsExpr + }), + dollarBraceL: new TokenType("${", { + beforeExpr, + startsExpr + }), + at: new TokenType("@"), + hash: new TokenType("#", { + startsExpr + }), + interpreterDirective: new TokenType("#!..."), + eq: new TokenType("=", { + beforeExpr, + isAssign + }), + assign: new TokenType("_=", { + beforeExpr, + isAssign + }), + slashAssign: new TokenType("_=", { + beforeExpr, + isAssign + }), + moduloAssign: new TokenType("_=", { + beforeExpr, + isAssign + }), + incDec: new TokenType("++/--", { + prefix, + postfix, + startsExpr + }), + bang: new TokenType("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: new TokenType("~", { + beforeExpr, + prefix, + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + relational: createBinop("</>/<=/>=", 7), + bitShift: createBinop("<</>>/>>>", 8), + plusMin: new TokenType("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: new TokenType("%", { + binop: 10, + startsExpr + }), + star: new TokenType("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: new TokenType("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _for: createKeyword("for", { + isLoop + }), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _while: createKeyword("while", { + isLoop + }), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }) +}; + +const lineBreak = /\r\n?|[\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + + default: + return false; + } +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y; +const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y"); +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + + default: + return false; + } +} + +class Position { + constructor(line, col) { + this.line = void 0; + this.column = void 0; + this.line = line; + this.column = col; + } + +} +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } + +} +function getLineInfo(input, offset) { + let line = 1; + let lineStart = 0; + let match; + lineBreakG.lastIndex = 0; + + while ((match = lineBreakG.exec(input)) && match.index < offset) { + line++; + lineStart = lineBreakG.lastIndex; + } + + return new Position(line, offset - lineStart); +} + +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + + hasPlugin(name) { + return this.plugins.has(name); + } + + getPluginOption(plugin, name) { + if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name]; + } + +} + +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} + +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else if (comments !== undefined) { + node.innerComments.unshift(...comments); + } +} + +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} + +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + this.state.comments.push(comment); + } + + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + + const { + start: nodeStart + } = node; + + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + + break; + } + } + } + + finalizeComment(commentWS) { + const { + comments + } = commentWS; + + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + + if (commentWS.trailingNode !== null) { + commentWS.trailingNode.leadingComments = comments; + } + } else { + const { + containingNode: node, + start: commentStart + } = commentWS; + + if (this.input.charCodeAt(commentStart - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + + finalizeRemainingComments() { + const { + commentStack + } = this.state; + + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + + this.state.commentStack = []; + } + + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + +} + +const ErrorCodes = Object.freeze({ + SyntaxError: "BABEL_PARSER_SYNTAX_ERROR", + SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" +}); + +const ErrorMessages = makeErrorTemplates({ + AccessorIsGenerator: "A %0ter cannot be a generator.", + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", + BadGetterArity: "A 'get' accesor must not have any formal parameters.", + BadSetterArity: "A 'set' accesor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accesor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: "'%0' require an initialization value.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.", + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?", + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: "'%0' loop variable declaration may not have an initializer.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: "Unsyntactic %0.", + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportBindingIsString: 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "%0" as foo }`?', + ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", + ImportCallArity: "`import()` requires exactly %0.", + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: "Expected number in radix %0.", + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: "Escape sequence in keyword %0.", + InvalidIdentifier: "Invalid identifier %0.", + InvalidLhs: "Invalid left-hand side in %0.", + InvalidLhsBinding: "Binding invalid left-hand side in %0.", + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: "Unexpected character '%0'.", + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: "Private name #%0 is not defined.", + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: "Label '%0' is already declared.", + LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: 'Duplicate key "%0" is not allowed in module attributes.', + ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found '\\u%0'.", + ModuleExportUndefined: "Export '%0' is not defined.", + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.', + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).", + PrivateNameRedeclaration: "Duplicate private name #%0.", + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + StaticPrototype: "Classes may not have static property named prototype.", + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: "Assigning to '%0' in strict mode.", + StrictEvalArgumentsBinding: "Binding '%0' in strict mode.", + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: "Unexpected keyword '%0'.", + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Private names can only be used as the name of a class element (i.e. class C { #p = 42; #m() {} } )\n or a property of member expression (i.e. this.#p).", + UnexpectedReservedWord: "Unexpected reserved word '%0'.", + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: "Unexpected token '%0'.", + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.", + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + VarRedeclaration: "Identifier '%0' has already been declared.", + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}, ErrorCodes.SyntaxError); +const SourceTypeModuleErrorMessages = makeErrorTemplates({ + ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: "module"'`, + ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: "module"'` +}, ErrorCodes.SourceTypeModuleError); + +function makeErrorTemplates(messages, code) { + const templates = {}; + Object.keys(messages).forEach(reasonCode => { + templates[reasonCode] = Object.freeze({ + code, + reasonCode, + template: messages[reasonCode] + }); + }); + return Object.freeze(templates); +} +class ParserError extends CommentsParser { + getLocationForPosition(pos) { + let loc; + if (pos === this.state.start) loc = this.state.startLoc;else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;else if (pos === this.state.end) loc = this.state.endLoc;else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;else loc = getLineInfo(this.input, pos); + return loc; + } + + raise(pos, { + code, + reasonCode, + template + }, ...params) { + return this.raiseWithData(pos, { + code, + reasonCode + }, template, ...params); + } + + raiseOverwrite(pos, { + code, + template + }, ...params) { + const loc = this.getLocationForPosition(pos); + const message = template.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`; + + if (this.options.errorRecovery) { + const errors = this.state.errors; + + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + + if (error.pos === pos) { + return Object.assign(error, { + message + }); + } else if (error.pos < pos) { + break; + } + } + } + + return this._raise({ + code, + loc, + pos + }, message); + } + + raiseWithData(pos, data, errorTemplate, ...params) { + const loc = this.getLocationForPosition(pos); + const message = errorTemplate.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`; + return this._raise(Object.assign({ + loc, + pos + }, data), message); + } + + _raise(errorContext, message) { + const err = new SyntaxError(message); + Object.assign(err, errorContext); + + if (this.options.errorRecovery) { + if (!this.isLookahead) this.state.errors.push(err); + return err; + } else { + throw err; + } + } + +} + +var estree = (superClass => class extends superClass { + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + + try { + regex = new RegExp(pattern, flags); + } catch (e) {} + + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + + parseBigIntLiteral(value) { + let bigInt; + + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + + directiveToStmt(directive) { + const directiveLiteral = directive.value; + const stmt = this.startNodeAt(directive.start, directive.loc.start); + const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start); + expression.value = directiveLiteral.extra.expressionValue; + expression.raw = directiveLiteral.extra.raw; + stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.end, directiveLiteral.loc.end); + stmt.directive = directiveLiteral.extra.raw.slice(1, -1); + return this.finishNodeAt(stmt, "ExpressionStatement", directive.end, directive.loc.end); + } + + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + + getObjectOrClassMethodParams(method) { + return method.value.params; + } + + isValidDirective(stmt) { + var _stmt$expression$extr; + + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + + stmtToDirective(stmt) { + const value = stmt.expression.value; + const directive = super.stmtToDirective(stmt); + this.addExtra(directive.value, "expressionValue", value); + return directive; + } + + parseBlockBody(node, ...args) { + super.parseBlockBody(node, ...args); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); + + if (method.typeParameters) { + method.value.typeParameters = method.typeParameters; + delete method.typeParameters; + } + + classBody.body.push(method); + } + + parseMaybePrivateName(...args) { + const node = super.parseMaybePrivateName(...args); + + if (node.type === "PrivateName" && this.getPluginOption("estree", "classFeatures")) { + return this.convertPrivateNameToPrivateIdentifier(node); + } + + return node; + } + + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + node = node; + delete node.id; + node.name = name; + node.type = "PrivateIdentifier"; + return node; + } + + isPrivateName(node) { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + + return node.type === "PrivateIdentifier"; + } + + getPrivateNameSV(node) { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + + return node.name; + } + + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + funcNode.type = "FunctionExpression"; + delete funcNode.kind; + node.value = funcNode; + + if (type === "ClassPrivateMethod") { + node.computed = false; + } + + type = "MethodDefinition"; + return this.finishNode(node, type); + } + + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + + if (this.getPluginOption("estree", "classFeatures")) { + propertyNode.type = "PropertyDefinition"; + } + + return propertyNode; + } + + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + + if (this.getPluginOption("estree", "classFeatures")) { + propertyNode.type = "PropertyDefinition"; + propertyNode.computed = false; + } + + return propertyNode; + } + + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor); + + if (node) { + node.type = "Property"; + if (node.kind === "method") node.kind = "init"; + node.shorthand = false; + } + + return node; + } + + parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors); + + if (node) { + node.kind = "init"; + node.type = "Property"; + } + + return node; + } + + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + + return super.isAssignable(node, isBinding); + } + + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + this.toAssignable(node.value, isLHS); + return node; + } + + return super.toAssignable(node, isLHS); + } + + toAssignableObjectExpressionProp(prop, ...args) { + if (prop.kind === "get" || prop.kind === "set") { + this.raise(prop.key.start, ErrorMessages.PatternHasAccessor); + } else if (prop.method) { + this.raise(prop.key.start, ErrorMessages.PatternHasMethod); + } else { + super.toAssignableObjectExpressionProp(prop, ...args); + } + } + + finishCallExpression(node, optional) { + super.finishCallExpression(node, optional); + + if (node.callee.type === "Import") { + node.type = "ImportExpression"; + node.source = node.arguments[0]; + + if (this.hasPlugin("importAssertions")) { + var _node$arguments$; + + node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null; + } + + delete node.arguments; + delete node.callee; + } + + return node; + } + + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + + super.toReferencedArguments(node); + } + + parseExport(node) { + super.parseExport(node); + + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + node.type = "ExportAllDeclaration"; + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + + break; + } + + return node; + } + + parseSubscript(base, startPos, startLoc, noCalls, state) { + const node = super.parseSubscript(base, startPos, startLoc, noCalls, state); + + if (state.optionalChainMember) { + if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") { + node.type = node.type.substring(8); + } + + if (state.stop) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNode(chain, "ChainExpression"); + } + } else if (node.type === "MemberExpression" || node.type === "CallExpression") { + node.optional = false; + } + + return node; + } + + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + + return super.hasPropertyAsPrivateName(node); + } + + isOptionalChain(node) { + return node.type === "ChainExpression"; + } + + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + + isObjectMethod(node) { + return node.method || node.kind === "get" || node.kind === "set"; + } + +}); + +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } + +} +const types = { + brace: new TokContext("{"), + template: new TokContext("`", true) +}; + +types$1.braceR.updateContext = context => { + context.pop(); +}; + +types$1.braceL.updateContext = types$1.braceHashL.updateContext = types$1.dollarBraceL.updateContext = context => { + context.push(types.brace); +}; + +types$1.backQuote.updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } +}; + +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + +function isInAstralSet(code, set) { + let pos = 0x10000; + + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + + return false; +} + +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} + +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} + +function isIteratorStart(current, next) { + return current === 64 && next === 64; +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} + +const SCOPE_OTHER = 0b000000000, + SCOPE_PROGRAM = 0b000000001, + SCOPE_FUNCTION = 0b000000010, + SCOPE_ARROW = 0b000000100, + SCOPE_SIMPLE_CATCH = 0b000001000, + SCOPE_SUPER = 0b000010000, + SCOPE_DIRECT_SUPER = 0b000100000, + SCOPE_CLASS = 0b001000000, + SCOPE_STATIC_BLOCK = 0b010000000, + SCOPE_TS_MODULE = 0b100000000, + SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE; +const BIND_KIND_VALUE = 0b000000000001, + BIND_KIND_TYPE = 0b000000000010, + BIND_SCOPE_VAR = 0b000000000100, + BIND_SCOPE_LEXICAL = 0b000000001000, + BIND_SCOPE_FUNCTION = 0b000000010000, + BIND_FLAGS_NONE = 0b000001000000, + BIND_FLAGS_CLASS = 0b000010000000, + BIND_FLAGS_TS_ENUM = 0b000100000000, + BIND_FLAGS_TS_CONST_ENUM = 0b001000000000, + BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000, + BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000; +const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS, + BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0, + BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0, + BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0, + BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS, + BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0, + BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM, + BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, + BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE, + BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE, + BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM, + BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, + BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN; +const CLASS_ELEMENT_FLAG_STATIC = 0b100, + CLASS_ELEMENT_KIND_GETTER = 0b010, + CLASS_ELEMENT_KIND_SETTER = 0b001, + CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER; +const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC, + CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC, + CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER, + CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER, + CLASS_ELEMENT_OTHER = 0; + +class Scope { + constructor(flags) { + this.var = new Set(); + this.lexical = new Set(); + this.functions = new Set(); + this.flags = flags; + } + +} +class ScopeHandler { + constructor(raise, inModule) { + this.scopeStack = []; + this.undefinedExports = new Map(); + this.undefinedPrivateNames = new Map(); + this.raise = raise; + this.inModule = inModule; + } + + get inFunction() { + return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0; + } + + get allowSuper() { + return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0; + } + + get allowDirectSuper() { + return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0; + } + + get inClass() { + return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0; + } + + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0; + } + + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + + if (flags & SCOPE_STATIC_BLOCK) { + return true; + } + + if (flags & (SCOPE_VAR | SCOPE_CLASS)) { + return false; + } + } + } + + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0; + } + + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + + createScope(flags) { + return new Scope(flags); + } + + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + + exit() { + this.scopeStack.pop(); + } + + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM); + } + + declareName(name, bindingType, pos) { + let scope = this.currentScope(); + + if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) { + this.checkRedeclarationInScope(scope, name, bindingType, pos); + + if (bindingType & BIND_SCOPE_FUNCTION) { + scope.functions.add(name); + } else { + scope.lexical.add(name); + } + + if (bindingType & BIND_SCOPE_LEXICAL) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & BIND_SCOPE_VAR) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, pos); + scope.var.add(name); + this.maybeExportDefined(scope, name); + if (scope.flags & SCOPE_VAR) break; + } + } + + if (this.inModule && scope.flags & SCOPE_PROGRAM) { + this.undefinedExports.delete(name); + } + } + + maybeExportDefined(scope, name) { + if (this.inModule && scope.flags & SCOPE_PROGRAM) { + this.undefinedExports.delete(name); + } + } + + checkRedeclarationInScope(scope, name, bindingType, pos) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.raise(pos, ErrorMessages.VarRedeclaration, name); + } + } + + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & BIND_KIND_VALUE)) return false; + + if (bindingType & BIND_SCOPE_LEXICAL) { + return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); + } + + if (bindingType & BIND_SCOPE_FUNCTION) { + return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); + } + + return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); + } + + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + + if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { + this.undefinedExports.set(name, id.start); + } + } + + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + + if (flags & SCOPE_VAR) { + return flags; + } + } + } + + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + + if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) { + return flags; + } + } + } + +} + +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } + +} + +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + + declareName(name, bindingType, pos) { + const scope = this.currentScope(); + + if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { + this.checkRedeclarationInScope(scope, name, bindingType, pos); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + + super.declareName(...arguments); + } + + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(...arguments)) return true; + + if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { + return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); + } + + return false; + } + + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } + +} + +class State { + constructor() { + this.strict = void 0; + this.curLine = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.maybeInArrowParameters = false; + this.inType = false; + this.noAnonFunctionType = false; + this.inPropertyName = false; + this.hasFlowComment = false; + this.isAmbientContext = false; + this.inAbstractClass = false; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.soloAwait = false; + this.inFSharpPipelineDirectBody = false; + this.labels = []; + this.decoratorStack = [[]]; + this.comments = []; + this.commentStack = []; + this.pos = 0; + this.lineStart = 0; + this.type = types$1.eof; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.lastTokStart = 0; + this.lastTokEnd = 0; + this.context = [types.brace]; + this.exprAllowed = true; + this.containsEsc = false; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + + init(options) { + this.strict = options.strictMode === false ? false : options.strictMode === true ? true : options.sourceType === "module"; + this.curLine = options.startLine; + this.startLoc = this.endLoc = this.curPosition(); + } + + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart); + } + + clone(skipArrays) { + const state = new State(); + const keys = Object.keys(this); + + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + let val = this[key]; + + if (!skipArrays && Array.isArray(val)) { + val = val.slice(); + } + + state[key] = val; + } + + return state; + } + +} + +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100]); +const forbiddenNumericSeparatorSiblings = { + decBinOct: [46, 66, 69, 79, 95, 98, 101, 111], + hex: [46, 88, 95, 120] +}; +const allowedNumericSeparatorSiblings = {}; +allowedNumericSeparatorSiblings.bin = [48, 49]; +allowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55]; +allowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57]; +allowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102]; +class Token { + constructor(state) { + this.type = state.type; + this.value = state.value; + this.start = state.start; + this.end = state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } + +} +class Tokenizer extends ParserError { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.isLookahead = false; + } + + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + + next() { + this.checkKeywordEscapes(); + + if (this.options.tokens) { + this.pushToken(new Token(this.state)); + } + + this.state.lastTokEnd = this.state.end; + this.state.lastTokStart = this.state.start; + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + + match(type) { + return this.state.type === type; + } + + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + lastTokEnd: state.end, + context: [this.curContext()], + inType: state.inType + }; + } + + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + + lookaheadCharCode() { + return this.input.charCodeAt(this.nextTokenStart()); + } + + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + + return cp; + } + + setStrict(strict) { + this.state.strict = strict; + + if (strict) { + this.state.strictErrors.forEach((message, pos) => this.raise(pos, message)); + this.state.strictErrors.clear(); + } + } + + curContext() { + return this.state.context[this.state.context.length - 1]; + } + + nextToken() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + + if (this.state.pos >= this.length) { + this.finishToken(types$1.eof); + return; + } + + if (curContext === types.template) { + this.readTmplToken(); + } else { + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + } + + skipBlockComment() { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf("*/", start + 2); + if (end === -1) throw this.raise(start, ErrorMessages.UnterminatedComment); + this.state.pos = end + 2; + lineBreakG.lastIndex = start + 2; + + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start, + end: end + 2, + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.options.tokens) this.pushToken(comment); + return comment; + } + + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start, + end, + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.options.tokens) this.pushToken(comment); + return comment; + } + + skipSpace() { + const spaceStart = this.state.pos; + const comments = []; + + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment(); + + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + + break; + } + + case 47: + { + const comment = this.skipLineComment(2); + + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + + break; + } + + default: + break loop; + } + + break; + + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule) { + const pos = this.state.pos; + + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule) { + const pos = this.state.pos; + + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + + } + } + + if (comments.length > 0) { + const end = this.state.pos; + const CommentWhitespace = { + start: spaceStart, + end, + comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(CommentWhitespace); + } + } + + finishToken(type, val) { + this.state.end = this.state.pos; + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + + if (!this.isLookahead) { + this.state.endLoc = this.state.curPosition(); + this.updateContext(prevType); + } + } + + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + + if (next >= 48 && next <= 57) { + throw this.raise(this.state.pos, ErrorMessages.UnexpectedDigitAfterHash); + } + + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") { + throw this.raise(this.state.pos, next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType); + } + + this.state.pos += 2; + + if (next === 123) { + this.finishToken(types$1.braceHashL); + } else { + this.finishToken(types$1.bracketHashL); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(types$1.privateName, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(types$1.privateName, this.readWord1()); + } else { + this.finishOp(types$1.hash, 1); + } + } + + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(types$1.ellipsis); + } else { + ++this.state.pos; + this.finishToken(types$1.dot); + } + } + + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 61) { + this.finishOp(types$1.slashAssign, 2); + } else { + this.finishOp(types$1.slash, 1); + } + } + + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(types$1.interpreterDirective, value); + return true; + } + + readToken_mult_modulo(code) { + let type = code === 42 ? types$1.star : types$1.modulo; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = types$1.exponent; + } + + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? types$1.moduloAssign : types$1.assign; + } + + this.finishOp(type, width); + } + + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(types$1.assign, 3); + } else { + this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2); + } + + return; + } + + if (code === 124) { + if (next === 62) { + this.finishOp(types$1.pipeline, 2); + return; + } + + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType); + } + + this.state.pos += 2; + this.finishToken(types$1.braceBarR); + return; + } + + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType); + } + + this.state.pos += 2; + this.finishToken(types$1.bracketBarR); + return; + } + } + + if (next === 61) { + this.finishOp(types$1.assign, 2); + return; + } + + this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1); + } + + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 61) { + this.finishOp(types$1.assign, 2); + } else { + this.finishOp(types$1.bitwiseXOR, 1); + } + } + + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === code) { + this.finishOp(types$1.incDec, 2); + return; + } + + if (next === 61) { + this.finishOp(types$1.assign, 2); + } else { + this.finishOp(types$1.plusMin, 1); + } + } + + readToken_lt_gt(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + let size = 1; + + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2; + + if (this.input.charCodeAt(this.state.pos + size) === 61) { + this.finishOp(types$1.assign, size + 1); + return; + } + + this.finishOp(types$1.bitShift, size); + return; + } + + if (next === 61) { + size = 2; + } + + this.finishOp(types$1.relational, size); + } + + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 61) { + this.finishOp(types$1.equality, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(types$1.arrow); + return; + } + + this.finishOp(code === 61 ? types$1.eq : types$1.bang, 1); + } + + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + + if (next === 63) { + if (next2 === 61) { + this.finishOp(types$1.assign, 3); + } else { + this.finishOp(types$1.nullishCoalescing, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(types$1.questionDot); + } else { + ++this.state.pos; + this.finishToken(types$1.question); + } + } + + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + + case 40: + ++this.state.pos; + this.finishToken(types$1.parenL); + return; + + case 41: + ++this.state.pos; + this.finishToken(types$1.parenR); + return; + + case 59: + ++this.state.pos; + this.finishToken(types$1.semi); + return; + + case 44: + ++this.state.pos; + this.finishToken(types$1.comma); + return; + + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType); + } + + this.state.pos += 2; + this.finishToken(types$1.bracketBarL); + } else { + ++this.state.pos; + this.finishToken(types$1.bracketL); + } + + return; + + case 93: + ++this.state.pos; + this.finishToken(types$1.bracketR); + return; + + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType); + } + + this.state.pos += 2; + this.finishToken(types$1.braceBarL); + } else { + ++this.state.pos; + this.finishToken(types$1.braceL); + } + + return; + + case 125: + ++this.state.pos; + this.finishToken(types$1.braceR); + return; + + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(types$1.doubleColon, 2); + } else { + ++this.state.pos; + this.finishToken(types$1.colon); + } + + return; + + case 63: + this.readToken_question(); + return; + + case 96: + ++this.state.pos; + this.finishToken(types$1.backQuote); + return; + + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + + case 34: + case 39: + this.readString(code); + return; + + case 47: + this.readToken_slash(); + return; + + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + + case 94: + this.readToken_caret(); + return; + + case 43: + case 45: + this.readToken_plus_min(code); + return; + + case 60: + case 62: + this.readToken_lt_gt(code); + return; + + case 61: + case 33: + this.readToken_eq_excl(code); + return; + + case 126: + this.finishOp(types$1.tilde, 1); + return; + + case 64: + ++this.state.pos; + this.finishToken(types$1.at); + return; + + case 35: + this.readToken_numberSign(); + return; + + case 92: + this.readWord(); + return; + + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + + } + + throw this.raise(this.state.pos, ErrorMessages.InvalidOrUnexpectedToken, String.fromCodePoint(code)); + } + + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + + readRegexp() { + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(start, ErrorMessages.UnterminatedRegExp); + } + + const ch = this.input.charCodeAt(pos); + + if (isNewLine(ch)) { + throw this.raise(start, ErrorMessages.UnterminatedRegExp); + } + + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + + escaped = ch === 92; + } + } + + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + + if (VALID_REGEX_FLAGS.has(cp)) { + if (mods.includes(char)) { + this.raise(pos + 1, ErrorMessages.DuplicateRegExpFlags); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(pos + 1, ErrorMessages.MalformedRegExpFlags); + } else { + break; + } + + ++pos; + mods += char; + } + + this.state.pos = pos; + this.finishToken(types$1.regexp, { + pattern: content, + flags: mods + }); + } + + readInt(radix, len, forceLen, allowNumSeparator = true) { + const start = this.state.pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin; + let invalid = false; + let total = 0; + + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = this.input.charCodeAt(this.state.pos); + let val; + + if (code === 95) { + const prev = this.input.charCodeAt(this.state.pos - 1); + const next = this.input.charCodeAt(this.state.pos + 1); + + if (allowedSiblings.indexOf(next) === -1) { + this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator); + } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) { + this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator); + } + + if (!allowNumSeparator) { + this.raise(this.state.pos, ErrorMessages.NumericSeparatorInEscapeSequence); + } + + ++this.state.pos; + continue; + } + + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + + if (val >= radix) { + if (this.options.errorRecovery && val <= 9) { + val = 0; + this.raise(this.state.start + i + 2, ErrorMessages.InvalidDigit, radix); + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + + ++this.state.pos; + total = total * radix + val; + } + + if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) { + return null; + } + + return total; + } + + readRadixNumber(radix) { + const start = this.state.pos; + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + + if (val == null) { + this.raise(this.state.start + 2, ErrorMessages.InvalidDigit, radix); + } + + const next = this.input.charCodeAt(this.state.pos); + + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(start, ErrorMessages.InvalidDecimal); + } + + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier); + } + + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(types$1.bigint, str); + return; + } + + this.finishToken(types$1.num, val); + } + + readNumber(startsWithDot) { + const start = this.state.pos; + let isFloat = false; + let isBigInt = false; + let isDecimal = false; + let hasExponent = false; + let isOctal = false; + + if (!startsWithDot && this.readInt(10) === null) { + this.raise(start, ErrorMessages.InvalidNumber); + } + + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(start, ErrorMessages.StrictOctalLiteral); + + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + + if (underscorePos > 0) { + this.raise(underscorePos + start, ErrorMessages.ZeroDigitNumericSeparator); + } + } + + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + + let next = this.input.charCodeAt(this.state.pos); + + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + + if (next === 43 || next === 45) { + ++this.state.pos; + } + + if (this.readInt(10) === null) { + this.raise(start, ErrorMessages.InvalidOrMissingExponent); + } + + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(start, ErrorMessages.InvalidBigIntLiteral); + } + + ++this.state.pos; + isBigInt = true; + } + + if (next === 109) { + this.expectPlugin("decimal", this.state.pos); + + if (hasExponent || hasLeadingZero) { + this.raise(start, ErrorMessages.InvalidDecimal); + } + + ++this.state.pos; + isDecimal = true; + } + + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier); + } + + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + + if (isBigInt) { + this.finishToken(types$1.bigint, str); + return; + } + + if (isDecimal) { + this.finishToken(types$1.decimal, str); + return; + } + + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(types$1.num, val); + } + + readCodePoint(throwOnInvalid) { + const ch = this.input.charCodeAt(this.state.pos); + let code; + + if (ch === 123) { + const codePos = ++this.state.pos; + code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, throwOnInvalid); + ++this.state.pos; + + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + this.raise(codePos, ErrorMessages.InvalidCodePoint); + } else { + return null; + } + } + } else { + code = this.readHexChar(4, false, throwOnInvalid); + } + + return code; + } + + readString(quote) { + let out = "", + chunkStart = ++this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(this.state.start, ErrorMessages.UnterminatedString); + } + + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + + if (ch === 92) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.readEscapedChar(false); + chunkStart = this.state.pos; + } else if (ch === 8232 || ch === 8233) { + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + } else if (isNewLine(ch)) { + throw this.raise(this.state.start, ErrorMessages.UnterminatedString); + } else { + ++this.state.pos; + } + } + + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(types$1.string, out); + } + + readTmplToken() { + let out = "", + chunkStart = this.state.pos, + containsInvalid = false; + + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(this.state.start, ErrorMessages.UnterminatedTemplate); + } + + const ch = this.input.charCodeAt(this.state.pos); + + if (ch === 96 || ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) { + if (this.state.pos === this.state.start && this.match(types$1.template)) { + if (ch === 36) { + this.state.pos += 2; + this.finishToken(types$1.dollarBraceL); + return; + } else { + ++this.state.pos; + this.finishToken(types$1.backQuote); + return; + } + } + + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(types$1.template, containsInvalid ? null : out); + return; + } + + if (ch === 92) { + out += this.input.slice(chunkStart, this.state.pos); + const escaped = this.readEscapedChar(true); + + if (escaped === null) { + containsInvalid = true; + } else { + out += escaped; + } + + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + ++this.state.pos; + + switch (ch) { + case 13: + if (this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + } + + case 10: + out += "\n"; + break; + + default: + out += String.fromCharCode(ch); + break; + } + + ++this.state.curLine; + this.state.lineStart = this.state.pos; + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + + recordStrictModeErrors(pos, message) { + if (this.state.strict && !this.state.strictErrors.has(pos)) { + this.raise(pos, message); + } else { + this.state.strictErrors.set(pos, message); + } + } + + readEscapedChar(inTemplate) { + const throwOnInvalid = !inTemplate; + const ch = this.input.charCodeAt(++this.state.pos); + ++this.state.pos; + + switch (ch) { + case 110: + return "\n"; + + case 114: + return "\r"; + + case 120: + { + const code = this.readHexChar(2, false, throwOnInvalid); + return code === null ? null : String.fromCharCode(code); + } + + case 117: + { + const code = this.readCodePoint(throwOnInvalid); + return code === null ? null : String.fromCodePoint(code); + } + + case 116: + return "\t"; + + case 98: + return "\b"; + + case 118: + return "\u000b"; + + case 102: + return "\f"; + + case 13: + if (this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + } + + case 10: + this.state.lineStart = this.state.pos; + ++this.state.curLine; + + case 8232: + case 8233: + return ""; + + case 56: + case 57: + if (inTemplate) { + return null; + } else { + this.recordStrictModeErrors(this.state.pos - 1, ErrorMessages.StrictNumericEscape); + } + + default: + if (ch >= 48 && ch <= 55) { + const codePos = this.state.pos - 1; + const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + + this.state.pos += octalStr.length - 1; + const next = this.input.charCodeAt(this.state.pos); + + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return null; + } else { + this.recordStrictModeErrors(codePos, ErrorMessages.StrictNumericEscape); + } + } + + return String.fromCharCode(octal); + } + + return String.fromCharCode(ch); + } + } + + readHexChar(len, forceLen, throwOnInvalid) { + const codePos = this.state.pos; + const n = this.readInt(16, len, forceLen, false); + + if (n === null) { + if (throwOnInvalid) { + this.raise(codePos, ErrorMessages.InvalidEscapeSequence); + } else { + this.state.pos = codePos - 1; + } + } + + return n; + } + + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.pos; + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(this.state.pos, ErrorMessages.MissingUnicodeEscape); + chunkStart = this.state.pos - 1; + continue; + } + + ++this.state.pos; + const esc = this.readCodePoint(true); + + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(escStart, ErrorMessages.EscapedCharNotAnIdentifier); + } + + word += String.fromCodePoint(esc); + } + + chunkStart = this.state.pos; + } else { + break; + } + } + + return word + this.input.slice(chunkStart, this.state.pos); + } + + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word) || types$1.name; + this.finishToken(type, word); + } + + checkKeywordEscapes() { + const kw = this.state.type.keyword; + + if (kw && this.state.containsEsc) { + this.raise(this.state.start, ErrorMessages.InvalidEscapedReservedWord, kw); + } + } + + updateContext(prevType) { + var _this$state$type$upda, _this$state$type; + + (_this$state$type$upda = (_this$state$type = this.state.type).updateContext) == null ? void 0 : _this$state$type$upda.call(_this$state$type, this.state.context); + } + +} + +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } + +} +class ClassScopeHandler { + constructor(raise) { + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.raise = raise; + } + + current() { + return this.stack[this.stack.length - 1]; + } + + enter() { + this.stack.push(new ClassScope()); + } + + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + + for (const [name, pos] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, pos); + } + } else { + this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name); + } + } + } + + declarePrivateName(name, elementType, pos) { + const classScope = this.current(); + let redefined = classScope.privateNames.has(name); + + if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) { + const accessor = redefined && classScope.loneAccessors.get(name); + + if (accessor) { + const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC; + const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC; + const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR; + const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) classScope.loneAccessors.delete(name); + } else if (!redefined) { + classScope.loneAccessors.set(name, elementType); + } + } + + if (redefined) { + this.raise(pos, ErrorMessages.PrivateNameRedeclaration, name); + } + + classScope.privateNames.add(name); + classScope.undefinedPrivateNames.delete(name); + } + + usePrivateName(name, pos) { + let classScope; + + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + + if (classScope) { + classScope.undefinedPrivateNames.set(name, pos); + } else { + this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name); + } + } + +} + +const kExpression = 0, + kMaybeArrowParameterDeclaration = 1, + kMaybeAsyncArrowParameterDeclaration = 2, + kParameterDeclaration = 3; + +class ExpressionScope { + constructor(type = kExpression) { + this.type = void 0; + this.type = type; + } + + canBeArrowParameterDeclaration() { + return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration; + } + + isCertainlyParameterDeclaration() { + return this.type === kParameterDeclaration; + } + +} + +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.errors = new Map(); + } + + recordDeclarationError(pos, template) { + this.errors.set(pos, template); + } + + clearDeclarationError(pos) { + this.errors.delete(pos); + } + + iterateErrors(iterator) { + this.errors.forEach(iterator); + } + +} + +class ExpressionScopeHandler { + constructor(raise) { + this.stack = [new ExpressionScope()]; + this.raise = raise; + } + + enter(scope) { + this.stack.push(scope); + } + + exit() { + this.stack.pop(); + } + + recordParameterInitializerError(pos, template) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(pos, template); + } else { + return; + } + + scope = stack[--i]; + } + + this.raise(pos, template); + } + + recordParenthesizedIdentifierError(pos, template) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + + if (scope.isCertainlyParameterDeclaration()) { + this.raise(pos, template); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(pos, template); + } else { + return; + } + } + + recordAsyncArrowParametersError(pos, template) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === kMaybeAsyncArrowParameterDeclaration) { + scope.recordDeclarationError(pos, template); + } + + scope = stack[--i]; + } + } + + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors((template, pos) => { + this.raise(pos, template); + let i = stack.length - 2; + let scope = stack[i]; + + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(pos); + scope = stack[--i]; + } + }); + } + +} +function newParameterDeclarationScope() { + return new ExpressionScope(kParameterDeclaration); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration); +} +function newExpressionScope() { + return new ExpressionScope(); +} + +const PARAM = 0b0000, + PARAM_YIELD = 0b0001, + PARAM_AWAIT = 0b0010, + PARAM_RETURN = 0b0100, + PARAM_IN = 0b1000; +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + + enter(flags) { + this.stacks.push(flags); + } + + exit() { + this.stacks.pop(); + } + + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + + get hasAwait() { + return (this.currentFlags() & PARAM_AWAIT) > 0; + } + + get hasYield() { + return (this.currentFlags() & PARAM_YIELD) > 0; + } + + get hasReturn() { + return (this.currentFlags() & PARAM_RETURN) > 0; + } + + get hasIn() { + return (this.currentFlags() & PARAM_IN) > 0; + } + +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0); +} + +class UtilParser extends Tokenizer { + addExtra(node, key, val) { + if (!node) return; + const extra = node.extra = node.extra || {}; + extra[key] = val; + } + + isRelational(op) { + return this.match(types$1.relational) && this.state.value === op; + } + + expectRelational(op) { + if (this.isRelational(op)) { + this.next(); + } else { + this.unexpected(null, types$1.relational); + } + } + + isContextual(name) { + return this.match(types$1.name) && this.state.value === name && !this.state.containsEsc; + } + + isUnparsedContextual(nameStart, name) { + const nameEnd = nameStart + name.length; + + if (this.input.slice(nameStart, nameEnd) === name) { + const nextCh = this.input.charCodeAt(nameEnd); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + + return false; + } + + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + + eatContextual(name) { + return this.isContextual(name) && this.eat(types$1.name); + } + + expectContextual(name, template) { + if (!this.eatContextual(name)) this.unexpected(null, template); + } + + canInsertSemicolon() { + return this.match(types$1.eof) || this.match(types$1.braceR) || this.hasPrecedingLineBreak(); + } + + hasPrecedingLineBreak() { + return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)); + } + + hasFollowingLineBreak() { + skipWhiteSpaceToLineBreak.lastIndex = this.state.end; + return skipWhiteSpaceToLineBreak.test(this.input); + } + + isLineTerminator() { + return this.eat(types$1.semi) || this.canInsertSemicolon(); + } + + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(types$1.semi)) return; + this.raise(this.state.lastTokEnd, ErrorMessages.MissingSemicolon); + } + + expect(type, pos) { + this.eat(type) || this.unexpected(pos, type); + } + + assertNoSpace(message = "Unexpected space.") { + if (this.state.start > this.state.lastTokEnd) { + this.raise(this.state.lastTokEnd, { + code: ErrorCodes.SyntaxError, + reasonCode: "UnexpectedSpace", + template: message + }); + } + } + + unexpected(pos, messageOrType = { + code: ErrorCodes.SyntaxError, + reasonCode: "UnexpectedToken", + template: "Unexpected token" + }) { + if (messageOrType instanceof TokenType) { + messageOrType = { + code: ErrorCodes.SyntaxError, + reasonCode: "UnexpectedToken", + template: `Unexpected token, expected "${messageOrType.label}"` + }; + } + + throw this.raise(pos != null ? pos : this.state.start, messageOrType); + } + + expectPlugin(name, pos) { + if (!this.hasPlugin(name)) { + throw this.raiseWithData(pos != null ? pos : this.state.start, { + missingPlugin: [name] + }, `This experimental syntax requires enabling the parser plugin: '${name}'`); + } + + return true; + } + + expectOnePlugin(names, pos) { + if (!names.some(n => this.hasPlugin(n))) { + throw this.raiseWithData(pos != null ? pos : this.state.start, { + missingPlugin: names + }, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`); + } + } + + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + + return { + node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + + throw error; + } + } + + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssign, + doubleProto, + optionalParameters + } = refExpressionErrors; + + if (!andThrow) { + return shorthandAssign >= 0 || doubleProto >= 0 || optionalParameters >= 0; + } + + if (shorthandAssign >= 0) { + this.unexpected(shorthandAssign); + } + + if (doubleProto >= 0) { + this.raise(doubleProto, ErrorMessages.DuplicateProto); + } + + if (optionalParameters >= 0) { + this.unexpected(optionalParameters); + } + } + + isLiteralPropertyName() { + return this.match(types$1.name) || !!this.state.type.keyword || this.match(types$1.string) || this.match(types$1.num) || this.match(types$1.bigint) || this.match(types$1.decimal); + } + + isPrivateName(node) { + return node.type === "PrivateName"; + } + + getPrivateNameSV(node) { + return node.id.name; + } + + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + + isOptionalChain(node) { + return node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression"; + } + + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this.raise.bind(this), this.inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this.raise.bind(this)); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this)); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + + enterInitialScopes() { + let paramFlags = PARAM; + + if (this.inModule) { + paramFlags |= PARAM_AWAIT; + } + + this.scope.enter(SCOPE_PROGRAM); + this.prodParam.enter(paramFlags); + } + +} +class ExpressionErrors { + constructor() { + this.shorthandAssign = -1; + this.doubleProto = -1; + this.optionalParameters = -1; + } + +} + +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if (parser != null && parser.options.ranges) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } + +} + +const NodePrototype = Node.prototype; +{ + NodePrototype.__clone = function () { + const newNode = new Node(); + const keys = Object.keys(this); + + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + + return newNode; + }; +} + +function clonePlaceholder(node) { + return cloneIdentifier(node); +} + +function cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + extra, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.name = name; + + if (type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + + return cloned; +} +function cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + + if (type === "Placeholder") { + return clonePlaceholder(node); + } + + const cloned = Object.create(NodePrototype); + cloned.type = "StringLiteral"; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.value = node.value; + return cloned; +} +class NodeUtils extends UtilParser { + startNode() { + return new Node(this, this.state.start, this.state.startLoc); + } + + startNodeAt(pos, loc) { + return new Node(this, pos, loc); + } + + startNodeAtNode(type) { + return this.startNodeAt(type.start, type.loc.start); + } + + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEnd, this.state.lastTokEndLoc); + } + + finishNodeAt(node, type, pos, loc) { + + node.type = type; + node.end = pos; + node.loc.end = loc; + if (this.options.ranges) node.range[1] = pos; + if (this.options.attachComment) this.processComment(node); + return node; + } + + resetStartLocation(node, start, startLoc) { + node.start = start; + node.loc.start = startLoc; + if (this.options.ranges) node.range[0] = start; + } + + resetEndLocation(node, end = this.state.lastTokEnd, endLoc = this.state.lastTokEndLoc) { + node.end = end; + node.loc.end = endLoc; + if (this.options.ranges) node.range[1] = end; + } + + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.start, locationNode.loc.start); + } + +} + +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = makeErrorTemplates({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: "Cannot overwrite reserved type %0.", + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: "Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.", + EnumDuplicateMemberName: "Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.", + EnumInconsistentMemberValues: "Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.", + EnumInvalidExplicitType: "Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.", + EnumInvalidExplicitTypeUnknownSupplied: "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.", + EnumInvalidMemberInitializerPrimaryType: "Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.", + EnumInvalidMemberInitializerSymbolType: "Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.", + EnumInvalidMemberInitializerUnknownType: "The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.", + EnumInvalidMemberName: "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.", + EnumNumberMemberNotInitialized: "Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.", + EnumStringMemberInconsistentlyInitailized: "String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.", + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + OptionalBindingPattern: "A binding pattern parameter cannot be optional in an implementation signature.", + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: "Unexpected reserved type %0.", + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.", + UnsupportedDeclareExportKind: "`declare export %0` is not supported. Use `%1` instead.", + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}, ErrorCodes.SyntaxError); + +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} + +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} + +function isMaybeDefaultImport(state) { + return (state.type === types$1.name || !!state.type.keyword) && state.value !== "from"; +} + +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; + +function partition(list, test) { + const list1 = []; + const list2 = []; + + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + + return [list1, list2]; +} + +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = (superClass => class extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + + getScopeHandler() { + return FlowScopeHandler; + } + + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + + shouldParseEnums() { + return !!this.getPluginOption("flow", "enums"); + } + + finishToken(type, val) { + if (type !== types$1.string && type !== types$1.semi && type !== types$1.interpreterDirective) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + + return super.finishToken(type, val); + } + + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + + if (!matches) ; else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + + return super.addComment(comment); + } + + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || types$1.colon); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + + flowParsePredicate() { + const node = this.startNode(); + const moduloPos = this.state.start; + this.next(); + this.expectContextual("checks"); + + if (this.state.lastTokStart > moduloPos + 1) { + this.raise(moduloPos, FlowErrors.UnexpectedSpaceBetweenModuloChecks); + } + + if (this.eat(types$1.parenL)) { + node.value = this.parseExpression(); + this.expect(types$1.parenR); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(types$1.colon); + let type = null; + let predicate = null; + + if (this.match(types$1.modulo)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + + if (this.match(types$1.modulo)) { + predicate = this.flowParsePredicate(); + } + } + + return [type, predicate]; + } + + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + + if (this.isRelational("<")) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + + this.expect(types$1.parenL); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(types$1.parenR); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.start); + return this.finishNode(node, "DeclareFunction"); + } + + flowParseDeclare(node, insideModule) { + if (this.match(types$1._class)) { + return this.flowParseDeclareClass(node); + } else if (this.match(types$1._function)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(types$1._var)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual("module")) { + if (this.match(types$1.dot)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(this.state.lastTokStart, FlowErrors.NestedDeclareModule); + } + + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual("type")) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual("opaque")) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual("interface")) { + return this.flowParseDeclareInterface(node); + } else if (this.match(types$1._export)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + throw this.unexpected(); + } + } + + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, BIND_VAR, node.id.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + + flowParseDeclareModule(node) { + this.scope.enter(SCOPE_OTHER); + + if (this.match(types$1.string)) { + node.id = this.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(types$1.braceL); + + while (!this.match(types$1.braceR)) { + let bodyNode = this.startNode(); + + if (this.match(types$1._import)) { + this.next(); + + if (!this.isContextual("type") && !this.match(types$1._typeof)) { + this.raise(this.state.lastTokStart, FlowErrors.InvalidNonTypeImportInDeclareModule); + } + + this.parseImport(bodyNode); + } else { + this.expectContextual("declare", FlowErrors.UnsupportedStatementInDeclareModule); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + + body.push(bodyNode); + } + + this.scope.exit(); + this.expect(types$1.braceR); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind); + } + + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(bodyElement.start, FlowErrors.DuplicateDeclareModuleExports); + } + + if (kind === "ES") { + this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind); + } + + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(types$1._export); + + if (this.eat(types$1._default)) { + if (this.match(types$1._function) || this.match(types$1._class)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(types$1._const) || this.isLet() || (this.isContextual("type") || this.isContextual("interface")) && !insideModule) { + const label = this.state.value; + const suggestion = exportSuggestions[label]; + throw this.raise(this.state.start, FlowErrors.UnsupportedDeclareExportKind, label, suggestion); + } + + if (this.match(types$1._var) || this.match(types$1._function) || this.match(types$1._class) || this.isContextual("opaque")) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(types$1.star) || this.match(types$1.braceL) || this.isContextual("interface") || this.isContextual("type") || this.isContextual("opaque")) { + node = this.parseExport(node); + + if (node.type === "ExportNamedDeclaration") { + node.type = "ExportDeclaration"; + node.default = false; + delete node.exportKind; + } + + node.type = "Declare" + node.type; + return node; + } + } + + throw this.unexpected(); + } + + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual("exports"); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + + flowParseDeclareTypeAlias(node) { + this.next(); + this.flowParseTypeAlias(node); + node.type = "DeclareTypeAlias"; + return node; + } + + flowParseDeclareOpaqueType(node) { + this.next(); + this.flowParseOpaqueType(node, true); + node.type = "DeclareOpaqueType"; + return node; + } + + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node); + return this.finishNode(node, "DeclareInterface"); + } + + flowParseInterfaceish(node, isClass = false) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.start); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.extends = []; + node.implements = []; + node.mixins = []; + + if (this.eat(types$1._extends)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(types$1.comma)); + } + + if (this.isContextual("mixins")) { + this.next(); + + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(types$1.comma)); + } + + if (this.isContextual("implements")) { + this.next(); + + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(types$1.comma)); + } + + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + + return this.finishNode(node, "InterfaceExtends"); + } + + flowParseInterface(node) { + this.flowParseInterfaceish(node); + return this.finishNode(node, "InterfaceDeclaration"); + } + + checkNotUnderscore(word) { + if (word === "_") { + this.raise(this.state.start, FlowErrors.UnexpectedReservedUnderscore); + } + } + + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(startLoc, declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, word); + } + + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.start, declaration); + return this.parseIdentifier(liberal); + } + + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.right = this.flowParseTypeInitialiser(types$1.eq); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + + flowParseOpaqueType(node, declare) { + this.expectContextual("type"); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.supertype = null; + + if (this.match(types$1.colon)) { + node.supertype = this.flowParseTypeInitialiser(types$1.colon); + } + + node.impltype = null; + + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(types$1.eq); + } + + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + + flowParseTypeParameter(requireDefault = false) { + const nodeStart = this.state.start; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + + if (this.match(types$1.eq)) { + this.eat(types$1.eq); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(nodeStart, FlowErrors.MissingTypeParamDefault); + } + } + + return this.finishNode(node, "TypeParameter"); + } + + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + + if (this.isRelational("<") || this.match(types$1.jsxTagStart)) { + this.next(); + } else { + this.unexpected(); + } + + let defaultRequired = false; + + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + + if (typeParameter.default) { + defaultRequired = true; + } + + if (!this.isRelational(">")) { + this.expect(types$1.comma); + } + } while (!this.isRelational(">")); + + this.expectRelational(">"); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expectRelational("<"); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + + while (!this.isRelational(">")) { + node.params.push(this.flowParseType()); + + if (!this.isRelational(">")) { + this.expect(types$1.comma); + } + } + + this.state.noAnonFunctionType = oldNoAnonFunctionType; + this.expectRelational(">"); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + + flowParseTypeParameterInstantiationCallOrNew() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expectRelational("<"); + + while (!this.isRelational(">")) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + + if (!this.isRelational(">")) { + this.expect(types$1.comma); + } + } + + this.expectRelational(">"); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual("interface"); + node.extends = []; + + if (this.eat(types$1._extends)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(types$1.comma)); + } + + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + + flowParseObjectPropertyKey() { + return this.match(types$1.num) || this.match(types$1.string) ? this.parseExprAtom() : this.parseIdentifier(true); + } + + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + + if (this.lookahead().type === types$1.colon) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + + this.expect(types$1.bracketR); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(types$1.bracketR); + this.expect(types$1.bracketR); + + if (this.isRelational("<") || this.match(types$1.parenL)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start)); + } else { + node.method = false; + + if (this.eat(types$1.question)) { + node.optional = true; + } + + node.value = this.flowParseTypeInitialiser(); + } + + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + + this.expect(types$1.parenL); + + if (this.match(types$1._this)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + + if (!this.match(types$1.parenR)) { + this.expect(types$1.comma); + } + } + + while (!this.match(types$1.parenR) && !this.match(types$1.ellipsis)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + + if (!this.match(types$1.parenR)) { + this.expect(types$1.comma); + } + } + + if (this.eat(types$1.ellipsis)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + + this.expect(types$1.parenR); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + + if (allowExact && this.match(types$1.braceBarL)) { + this.expect(types$1.braceBarL); + endDelim = types$1.braceBarR; + exact = true; + } else { + this.expect(types$1.braceL); + endDelim = types$1.braceR; + exact = false; + } + + nodeStart.exact = exact; + + while (!this.match(endDelim)) { + let isStatic = false; + let protoStart = null; + let inexactStart = null; + const node = this.startNode(); + + if (allowProto && this.isContextual("proto")) { + const lookahead = this.lookahead(); + + if (lookahead.type !== types$1.colon && lookahead.type !== types$1.question) { + this.next(); + protoStart = this.state.start; + allowStatic = false; + } + } + + if (allowStatic && this.isContextual("static")) { + const lookahead = this.lookahead(); + + if (lookahead.type !== types$1.colon && lookahead.type !== types$1.question) { + this.next(); + isStatic = true; + } + } + + const variance = this.flowParseVariance(); + + if (this.eat(types$1.bracketL)) { + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (this.eat(types$1.bracketL)) { + if (variance) { + this.unexpected(variance.start); + } + + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(types$1.parenL) || this.isRelational("<")) { + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (variance) { + this.unexpected(variance.start); + } + + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + + if (this.isContextual("get") || this.isContextual("set")) { + const lookahead = this.lookahead(); + + if (lookahead.type === types$1.name || lookahead.type === types$1.string || lookahead.type === types$1.num) { + kind = this.state.value; + this.next(); + } + } + + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + + if (propOrInexact === null) { + inexact = true; + inexactStart = this.state.lastTokStart; + } else { + nodeStart.properties.push(propOrInexact); + } + } + + this.flowObjectTypeSemicolon(); + + if (inexactStart && !this.match(types$1.braceR) && !this.match(types$1.braceBarR)) { + this.raise(inexactStart, FlowErrors.UnexpectedExplicitInexactInObject); + } + } + + this.expect(endDelim); + + if (allowSpread) { + nodeStart.inexact = inexact; + } + + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + + flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact) { + if (this.eat(types$1.ellipsis)) { + const isInexactToken = this.match(types$1.comma) || this.match(types$1.semi) || this.match(types$1.braceR) || this.match(types$1.braceBarR); + + if (isInexactToken) { + if (!allowSpread) { + this.raise(this.state.lastTokStart, FlowErrors.InexactInsideNonObject); + } else if (!allowInexact) { + this.raise(this.state.lastTokStart, FlowErrors.InexactInsideExact); + } + + if (variance) { + this.raise(variance.start, FlowErrors.InexactVariance); + } + + return null; + } + + if (!allowSpread) { + this.raise(this.state.lastTokStart, FlowErrors.UnexpectedSpreadType); + } + + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (variance) { + this.raise(variance.start, FlowErrors.SpreadVariance); + } + + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStart != null; + node.kind = kind; + let optional = false; + + if (this.isRelational("<") || this.match(types$1.parenL)) { + node.method = true; + + if (protoStart != null) { + this.unexpected(protoStart); + } + + if (variance) { + this.unexpected(variance.start); + } + + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start)); + + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(node.value.this.start, FlowErrors.ThisParamBannedInConstructor); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + + if (this.eat(types$1.question)) { + optional = true; + } + + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const start = property.start; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + + if (property.value.this) { + this.raise(property.value.this.start, property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam); + } + + if (length !== paramCount) { + if (property.kind === "get") { + this.raise(start, ErrorMessages.BadGetterArity); + } else { + this.raise(start, ErrorMessages.BadSetterArity); + } + } + + if (property.kind === "set" && property.value.rest) { + this.raise(start, ErrorMessages.BadSetterRestParameter); + } + } + + flowObjectTypeSemicolon() { + if (!this.eat(types$1.semi) && !this.eat(types$1.comma) && !this.match(types$1.braceR) && !this.match(types$1.braceBarR)) { + this.unexpected(); + } + } + + flowParseQualifiedTypeIdentifier(startPos, startLoc, id) { + startPos = startPos || this.state.start; + startLoc = startLoc || this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + + while (this.eat(types$1.dot)) { + const node2 = this.startNodeAt(startPos, startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + + return node; + } + + flowParseGenericType(startPos, startLoc, id) { + const node = this.startNodeAt(startPos, startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + + return this.finishNode(node, "GenericTypeAnnotation"); + } + + flowParseTypeofType() { + const node = this.startNode(); + this.expect(types$1._typeof); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(types$1.bracketL); + + while (this.state.pos < this.length && !this.match(types$1.bracketR)) { + node.types.push(this.flowParseType()); + if (this.match(types$1.bracketR)) break; + this.expect(types$1.comma); + } + + this.expect(types$1.bracketR); + return this.finishNode(node, "TupleTypeAnnotation"); + } + + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === types$1._this; + + if (lh.type === types$1.colon || lh.type === types$1.question) { + if (isThis && !first) { + this.raise(node.start, FlowErrors.ThisParamMustBeFirst); + } + + name = this.parseIdentifier(isThis); + + if (this.eat(types$1.question)) { + optional = true; + + if (isThis) { + this.raise(node.start, FlowErrors.ThisParamMayNotBeOptional); + } + } + + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.start, type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + + if (this.match(types$1._this)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + + if (!this.match(types$1.parenR)) { + this.expect(types$1.comma); + } + } + + while (!this.match(types$1.parenR) && !this.match(types$1.ellipsis)) { + params.push(this.flowParseFunctionTypeParam(false)); + + if (!this.match(types$1.parenR)) { + this.expect(types$1.comma); + } + } + + if (this.eat(types$1.ellipsis)) { + rest = this.flowParseFunctionTypeParam(false); + } + + return { + params, + rest, + _this + }; + } + + flowIdentToTypeAnnotation(startPos, startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startPos, startLoc, id); + } + } + + flowParsePrimaryType() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + + switch (this.state.type) { + case types$1.name: + if (this.isContextual("interface")) { + return this.flowParseInterfaceType(); + } + + return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier()); + + case types$1.braceL: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + + case types$1.braceBarL: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + + case types$1.bracketL: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + + case types$1.relational: + if (this.state.value === "<") { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(types$1.parenL); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(types$1.parenR); + this.expect(types$1.arrow); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + break; + + case types$1.parenL: + this.next(); + + if (!this.match(types$1.parenR) && !this.match(types$1.ellipsis)) { + if (this.match(types$1.name) || this.match(types$1._this)) { + const token = this.lookahead().type; + isGroupedType = token !== types$1.question && token !== types$1.colon; + } else { + isGroupedType = true; + } + } + + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + + if (this.state.noAnonFunctionType || !(this.match(types$1.comma) || this.match(types$1.parenR) && this.lookahead().type === types$1.arrow)) { + this.expect(types$1.parenR); + return type; + } else { + this.eat(types$1.comma); + } + } + + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(types$1.parenR); + this.expect(types$1.arrow); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + + case types$1.string: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + + case types$1._true: + case types$1._false: + node.value = this.match(types$1._true); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + + case types$1.plusMin: + if (this.state.value === "-") { + this.next(); + + if (this.match(types$1.num)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + + if (this.match(types$1.bigint)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + + throw this.raise(this.state.start, FlowErrors.UnexpectedSubtractionOperand); + } + + throw this.unexpected(); + + case types$1.num: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + + case types$1.bigint: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + + case types$1._void: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + + case types$1._null: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + + case types$1._this: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + + case types$1.star: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + + default: + if (this.state.type.keyword === "typeof") { + return this.flowParseTypeofType(); + } else if (this.state.type.keyword) { + const label = this.state.type.label; + this.next(); + return super.createIdentifier(node, label); + } + + } + + throw this.unexpected(); + } + + flowParsePostfixType() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + + while ((this.match(types$1.bracketL) || this.match(types$1.questionDot)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startPos, startLoc); + const optional = this.eat(types$1.questionDot); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(types$1.bracketL); + + if (!optional && this.match(types$1.bracketR)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(types$1.bracketR); + + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + + return type; + } + + flowParsePrefixType() { + const node = this.startNode(); + + if (this.eat(types$1.question)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + + if (!this.state.noAnonFunctionType && this.eat(types$1.arrow)) { + const node = this.startNodeAt(param.start, param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + return param; + } + + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(types$1.bitwiseAND); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + + while (this.eat(types$1.bitwiseAND)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + + flowParseUnionType() { + const node = this.startNode(); + this.eat(types$1.bitwiseOR); + const type = this.flowParseIntersectionType(); + node.types = [type]; + + while (this.eat(types$1.bitwiseOR)) { + node.types.push(this.flowParseIntersectionType()); + } + + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === types$1.name && this.state.value === "_") { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startPos, startLoc, node); + } else { + return this.flowParseType(); + } + } + + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + + if (this.match(types$1.colon)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + + return ident; + } + + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end); + return node.expression; + } + + flowParseVariance() { + let variance = null; + + if (this.match(types$1.plusMin)) { + variance = this.startNode(); + + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + + this.next(); + this.finishNode(variance, "Variance"); + } + + return variance; + } + + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + } + + return super.parseFunctionBody(node, false, isMethod); + } + + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(types$1.colon)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + + super.parseFunctionBodyAndFinish(node, type, isMethod); + } + + parseStatement(context, topLevel) { + if (this.state.strict && this.match(types$1.name) && this.state.value === "interface") { + const lookahead = this.lookahead(); + + if (lookahead.type === types$1.name || isKeyword(lookahead.value)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.shouldParseEnums() && this.isContextual("enum")) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + + const stmt = super.parseStatement(context, topLevel); + + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + + return stmt; + } + + parseExpressionStatement(node, expr) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(types$1._class) || this.match(types$1.name) || this.match(types$1._function) || this.match(types$1._var) || this.match(types$1._export)) { + return this.flowParseDeclare(node); + } + } else if (this.match(types$1.name)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + + return super.parseExpressionStatement(node, expr); + } + + shouldParseExportDeclaration() { + return this.isContextual("type") || this.isContextual("interface") || this.isContextual("opaque") || this.shouldParseEnums() && this.isContextual("enum") || super.shouldParseExportDeclaration(); + } + + isExportDefaultSpecifier() { + if (this.match(types$1.name) && (this.state.value === "type" || this.state.value === "interface" || this.state.value === "opaque" || this.shouldParseEnums() && this.state.value === "enum")) { + return false; + } + + return super.isExportDefaultSpecifier(); + } + + parseExportDefaultExpression() { + if (this.shouldParseEnums() && this.isContextual("enum")) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + + return super.parseExportDefaultExpression(); + } + + parseConditional(expr, startPos, startLoc, refExpressionErrors) { + if (!this.match(types$1.question)) return expr; + + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + + this.expect(types$1.question); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startPos, startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + + if (failed && valid.length > 1) { + this.raise(state.start, FlowErrors.AmbiguousConditionalArrow); + } + + if (failed && valid.length === 1) { + this.state = state; + this.state.noArrowAt = noArrowAt.concat(valid[0].start); + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(types$1.colon); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(types$1.colon); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + + while (stack.length !== 0) { + const node = stack.pop(); + + if (node.type === "ArrowFunctionExpression") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + + finishArrowValidation(node) { + var _node$extra; + + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingComma, false); + this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); + super.checkParams(node, false, true); + this.scope.exit(); + } + + forwardNoArrowParamsConversionAt(node, parse) { + let result; + + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + + return result; + } + + parseParenItem(node, startPos, startLoc) { + node = super.parseParenItem(node, startPos, startLoc); + + if (this.eat(types$1.question)) { + node.optional = true; + this.resetEndLocation(node); + } + + if (this.match(types$1.colon)) { + const typeCastNode = this.startNodeAt(startPos, startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + + return node; + } + + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + + super.assertModuleNodeAllowed(node); + } + + parseExport(node) { + const decl = super.parseExport(node); + + if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") { + decl.exportKind = decl.exportKind || "value"; + } + + return decl; + } + + parseExportDeclaration(node) { + if (this.isContextual("type")) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + + if (this.match(types$1.braceL)) { + node.specifiers = this.parseExportSpecifiers(); + this.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual("opaque")) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual("interface")) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.shouldParseEnums() && this.isContextual("enum")) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + + eatExportStar(node) { + if (super.eatExportStar(...arguments)) return true; + + if (this.isContextual("type") && this.lookahead().type === types$1.star) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + + return false; + } + + maybeParseExportNamespaceSpecifier(node) { + const pos = this.state.start; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + + if (hasNamespace && node.exportKind === "type") { + this.unexpected(pos); + } + + return hasNamespace; + } + + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + + parseClassMember(classBody, member, state) { + const pos = this.state.start; + + if (this.isContextual("declare")) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + + member.declare = true; + } + + super.parseClassMember(classBody, member, state); + + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(pos, FlowErrors.DeclareClassElement); + } else if (member.value) { + this.raise(member.value.start, FlowErrors.DeclareClassFieldInitializer); + } + } + } + + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + + if (!this.isIterator(word) || !this.state.inType) { + this.raise(this.state.pos, ErrorMessages.InvalidIdentifier, fullWord); + } + + this.finishToken(types$1.name, fullWord); + } + + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 123 && next === 124) { + return this.finishOp(types$1.braceBarL, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + return this.finishOp(types$1.relational, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + return this.finishOp(types$1.questionDot, 2); + } + + return this.finishOp(types$1.question, 1); + } else if (isIteratorStart(code, next)) { + this.state.pos += 2; + return this.readIterator(); + } else { + return super.getTokenFromCode(code); + } + } + + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + + toAssignable(node, isLHS = false) { + if (node.type === "TypeCastExpression") { + return super.toAssignable(this.typeCastToParameter(node), isLHS); + } else { + return super.toAssignable(node, isLHS); + } + } + + toAssignableList(exprList, trailingCommaPos, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + + return super.toAssignableList(exprList, trailingCommaPos, isLHS); + } + + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + + const expr = exprList[i]; + + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(expr.typeAnnotation.start, FlowErrors.TypeCastInPattern); + } + } + + return exprList; + } + + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + + if (canBePattern && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + + return node; + } + + checkLVal(expr, ...args) { + if (expr.type !== "TypeCastExpression") { + return super.checkLVal(expr, ...args); + } + } + + parseClassProperty(node) { + if (this.match(types$1.colon)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + + return super.parseClassProperty(node); + } + + parseClassPrivateProperty(node) { + if (this.match(types$1.colon)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + + return super.parseClassPrivateProperty(node); + } + + isClassMethod() { + return this.isRelational("<") || super.isClassMethod(); + } + + isClassProperty() { + return this.match(types$1.colon) || super.isClassProperty(); + } + + isNonstaticConstructor(method) { + return !this.match(types$1.colon) && super.isNonstaticConstructor(method); + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.start); + } + + delete method.variance; + + if (this.isRelational("<")) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + + if (method.params && isConstructor) { + const params = method.params; + + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(method.start, FlowErrors.ThisParamBannedInConstructor); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(method.start, FlowErrors.ThisParamBannedInConstructor); + } + } + } + + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.start); + } + + delete method.variance; + + if (this.isRelational("<")) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + + parseClassSuper(node) { + super.parseClassSuper(node); + + if (node.superClass && this.isRelational("<")) { + node.superTypeParameters = this.flowParseTypeParameterInstantiation(); + } + + if (this.isContextual("implements")) { + this.next(); + const implemented = node.implements = []; + + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(types$1.comma)); + } + } + + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + + if (params.length > 0) { + const param = params[0]; + + if (this.isThisParam(param) && method.kind === "get") { + this.raise(param.start, FlowErrors.GetterMayNotHaveThisParam); + } else if (this.isThisParam(param)) { + this.raise(param.start, FlowErrors.SetterMayNotHaveThisParam); + } + } + } + + parsePropertyName(node, isPrivateNameAllowed) { + const variance = this.flowParseVariance(); + const key = super.parsePropertyName(node, isPrivateNameAllowed); + node.variance = variance; + return key; + } + + parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.start); + } + + delete prop.variance; + let typeParameters; + + if (this.isRelational("<") && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(types$1.parenL)) this.unexpected(); + } + + super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + + if (typeParameters) { + (prop.value || prop).typeParameters = typeParameters; + } + } + + parseAssignableListItemTypes(param) { + if (this.eat(types$1.question)) { + if (param.type !== "Identifier") { + this.raise(param.start, FlowErrors.OptionalBindingPattern); + } + + if (this.isThisParam(param)) { + this.raise(param.start, FlowErrors.ThisParamMayNotBeOptional); + } + + param.optional = true; + } + + if (this.match(types$1.colon)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(param.start, FlowErrors.ThisParamAnnotationRequired); + } + + if (this.match(types$1.eq) && this.isThisParam(param)) { + this.raise(param.start, FlowErrors.ThisParamNoDefault); + } + + this.resetEndLocation(param); + return param; + } + + parseMaybeDefault(startPos, startLoc, left) { + const node = super.parseMaybeDefault(startPos, startLoc, left); + + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(node.typeAnnotation.start, FlowErrors.TypeBeforeInitializer); + } + + return node; + } + + shouldParseDefaultImport(node) { + if (!hasTypeImportKind(node)) { + return super.shouldParseDefaultImport(node); + } + + return isMaybeDefaultImport(this.state); + } + + parseImportSpecifierLocal(node, specifier, type, contextDescription) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL); + node.specifiers.push(this.finishNode(specifier, type)); + } + + maybeParseDefaultImportSpecifier(node) { + node.importKind = "value"; + let kind = null; + + if (this.match(types$1._typeof)) { + kind = "typeof"; + } else if (this.isContextual("type")) { + kind = "type"; + } + + if (kind) { + const lh = this.lookahead(); + + if (kind === "type" && lh.type === types$1.star) { + this.unexpected(lh.start); + } + + if (isMaybeDefaultImport(lh) || lh.type === types$1.braceL || lh.type === types$1.star) { + this.next(); + node.importKind = kind; + } + } + + return super.maybeParseDefaultImportSpecifier(node); + } + + parseImportSpecifier(node) { + const specifier = this.startNode(); + const firstIdentIsString = this.match(types$1.string); + const firstIdent = this.parseModuleExportName(); + let specifierTypeKind = null; + + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + + let isBinding = false; + + if (this.isContextual("as") && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + + if (specifierTypeKind !== null && !this.match(types$1.name) && !this.state.type.keyword) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && (this.match(types$1.name) || this.state.type.keyword)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (firstIdentIsString) { + throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, firstIdent.value); + } + + specifier.imported = firstIdent; + specifier.importKind = null; + } + + if (this.eatContextual("as")) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = cloneIdentifier(specifier.imported); + } + } + + const nodeIsTypeImport = hasTypeImportKind(node); + const specifierIsTypeImport = hasTypeImportKind(specifier); + + if (nodeIsTypeImport && specifierIsTypeImport) { + this.raise(specifier.start, FlowErrors.ImportTypeShorthandOnlyInPureImport); + } + + if (nodeIsTypeImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.start, true); + } + + if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.start, true, true); + } + + this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL); + node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); + } + + parseBindingAtom() { + switch (this.state.type) { + case types$1._this: + return this.parseIdentifier(true); + + default: + return super.parseBindingAtom(); + } + } + + parseFunctionParams(node, allowModifiers) { + const kind = node.kind; + + if (kind !== "get" && kind !== "set" && this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + + super.parseFunctionParams(node, allowModifiers); + } + + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + + if (this.match(types$1.colon)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(types$1.colon)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + + return super.parseAsyncArrowFromCallExpression(node, call); + } + + shouldParseAsyncArrow() { + return this.match(types$1.colon) || super.shouldParseAsyncArrow(); + } + + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + + let state = null; + let jsx; + + if (this.hasPlugin("jsx") && (this.match(types$1.jsxTagStart) || this.isRelational("<"))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const curContext = context[context.length - 1]; + + if (curContext === types.j_oTag) { + context.length -= 2; + } else if (curContext === types.j_expr) { + context.length -= 1; + } + } + + if ((_jsx = jsx) != null && _jsx.error || this.isRelational("<")) { + var _jsx2, _jsx3; + + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(typeParameters.start, FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction); + } + + return arrow.node; + } + + arrowExpression = arrow.node; + } + + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(typeParameters.start, FlowErrors.UnexpectedTokenAfterTypeParameter); + } + + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + + parseArrow(node) { + if (this.match(types$1.colon)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(types$1.arrow)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + + return super.parseArrow(node); + } + + shouldParseArrow(params) { + return this.match(types$1.colon) || super.shouldParseArrow(params); + } + + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + + checkParams(node, allowDuplicates, isArrowFunction) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + return; + } + + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(node.params[i].start, FlowErrors.ThisParamMustBeFirst); + } + } + + return super.checkParams(...arguments); + } + + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1); + } + + parseSubscripts(base, startPos, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startPos) !== -1) { + this.next(); + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.isRelational("<")) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + + if (result.node) { + this.state = result.failState; + return result.node; + } + + throw arrow.error || result.error; + } + + return super.parseSubscripts(base, startPos, startLoc, noCalls); + } + + parseSubscript(base, startPos, startLoc, noCalls, subscriptState) { + if (this.match(types$1.questionDot) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + + if (noCalls) { + subscriptState.stop = true; + return base; + } + + this.next(); + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiation(); + this.expect(types$1.parenL); + node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && this.isRelational("<")) { + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(types$1.parenL); + node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); + if (subscriptState.optionalChainMember) node.optional = false; + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + + return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState); + } + + parseNewArguments(node) { + let targs = null; + + if (this.shouldParseTypes() && this.isRelational("<")) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + + node.typeArguments = targs; + super.parseNewArguments(node); + } + + parseAsyncArrowWithTypeParameters(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + this.parseFunctionParams(node); + if (!this.parseArrow(node)) return; + return this.parseArrowExpression(node, undefined, true); + } + + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + + super.readToken_mult_modulo(code); + } + + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + + if (code === 124 && next === 125) { + this.finishOp(types$1.braceBarR, 2); + return; + } + + super.readToken_pipe_amp(code); + } + + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + + if (this.state.hasFlowComment) { + this.raise(this.state.pos, FlowErrors.UnterminatedFlowComment); + } + + return fileNode; + } + + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + this.unexpected(null, FlowErrors.NestedFlowComment); + } + + this.hasFlowCommentCompletion(); + this.state.pos += this.skipFlowComment(); + this.state.hasFlowComment = true; + return; + } + + if (this.state.hasFlowComment) { + const end = this.input.indexOf("*-/", this.state.pos += 2); + + if (end === -1) { + throw this.raise(this.state.pos - 2, ErrorMessages.UnterminatedComment); + } + + this.state.pos = end + 3; + return; + } + + return super.skipBlockComment(); + } + + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + + return false; + } + + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + + if (end === -1) { + throw this.raise(this.state.pos, ErrorMessages.UnterminatedComment); + } + } + + flowEnumErrorBooleanMemberNotInitialized(pos, { + enumName, + memberName + }) { + this.raise(pos, FlowErrors.EnumBooleanMemberNotInitialized, memberName, enumName); + } + + flowEnumErrorInvalidMemberName(pos, { + enumName, + memberName + }) { + const suggestion = memberName[0].toUpperCase() + memberName.slice(1); + this.raise(pos, FlowErrors.EnumInvalidMemberName, memberName, suggestion, enumName); + } + + flowEnumErrorDuplicateMemberName(pos, { + enumName, + memberName + }) { + this.raise(pos, FlowErrors.EnumDuplicateMemberName, memberName, enumName); + } + + flowEnumErrorInconsistentMemberValues(pos, { + enumName + }) { + this.raise(pos, FlowErrors.EnumInconsistentMemberValues, enumName); + } + + flowEnumErrorInvalidExplicitType(pos, { + enumName, + suppliedType + }) { + return this.raise(pos, suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, enumName, suppliedType); + } + + flowEnumErrorInvalidMemberInitializer(pos, { + enumName, + explicitType, + memberName + }) { + let message = null; + + switch (explicitType) { + case "boolean": + case "number": + case "string": + message = FlowErrors.EnumInvalidMemberInitializerPrimaryType; + break; + + case "symbol": + message = FlowErrors.EnumInvalidMemberInitializerSymbolType; + break; + + default: + message = FlowErrors.EnumInvalidMemberInitializerUnknownType; + } + + return this.raise(pos, message, enumName, memberName, explicitType); + } + + flowEnumErrorNumberMemberNotInitialized(pos, { + enumName, + memberName + }) { + this.raise(pos, FlowErrors.EnumNumberMemberNotInitialized, enumName, memberName); + } + + flowEnumErrorStringMemberInconsistentlyInitailized(pos, { + enumName + }) { + this.raise(pos, FlowErrors.EnumStringMemberInconsistentlyInitailized, enumName); + } + + flowEnumMemberInit() { + const startPos = this.state.start; + + const endOfInit = () => this.match(types$1.comma) || this.match(types$1.braceR); + + switch (this.state.type) { + case types$1.num: + { + const literal = this.parseNumericLiteral(this.state.value); + + if (endOfInit()) { + return { + type: "number", + pos: literal.start, + value: literal + }; + } + + return { + type: "invalid", + pos: startPos + }; + } + + case types$1.string: + { + const literal = this.parseStringLiteral(this.state.value); + + if (endOfInit()) { + return { + type: "string", + pos: literal.start, + value: literal + }; + } + + return { + type: "invalid", + pos: startPos + }; + } + + case types$1._true: + case types$1._false: + { + const literal = this.parseBooleanLiteral(this.match(types$1._true)); + + if (endOfInit()) { + return { + type: "boolean", + pos: literal.start, + value: literal + }; + } + + return { + type: "invalid", + pos: startPos + }; + } + + default: + return { + type: "invalid", + pos: startPos + }; + } + } + + flowEnumMemberRaw() { + const pos = this.state.start; + const id = this.parseIdentifier(true); + const init = this.eat(types$1.eq) ? this.flowEnumMemberInit() : { + type: "none", + pos + }; + return { + id, + init + }; + } + + flowEnumCheckExplicitTypeMismatch(pos, context, expectedType) { + const { + explicitType + } = context; + + if (explicitType === null) { + return; + } + + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(pos, context); + } + } + + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + + while (!this.match(types$1.braceR)) { + if (this.eat(types$1.ellipsis)) { + hasUnknownMembers = true; + break; + } + + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + + if (memberName === "") { + continue; + } + + if (/^[a-z]/.test(memberName)) { + this.flowEnumErrorInvalidMemberName(id.start, { + enumName, + memberName + }); + } + + if (seenNames.has(memberName)) { + this.flowEnumErrorDuplicateMemberName(id.start, { + enumName, + memberName + }); + } + + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.pos, context); + } + + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.pos, context); + break; + + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.pos, context); + break; + + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + + if (!this.match(types$1.braceR)) { + this.expect(types$1.comma); + } + } + + return { + members, + hasUnknownMembers + }; + } + + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, { + enumName + }); + } + + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, { + enumName + }); + } + + return initializedMembers; + } + } + + flowEnumParseExplicitType({ + enumName + }) { + if (this.eatContextual("of")) { + if (!this.match(types$1.name)) { + throw this.flowEnumErrorInvalidExplicitType(this.state.start, { + enumName, + suppliedType: null + }); + } + + const { + value + } = this.state; + this.next(); + + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.flowEnumErrorInvalidExplicitType(this.state.start, { + enumName, + suppliedType: value + }); + } + + return value; + } + + return null; + } + + flowEnumBody(node, { + enumName, + nameLoc + }) { + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(types$1.braceL); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(types$1.braceR); + return this.finishNode(node, "EnumBooleanBody"); + + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(types$1.braceR); + return this.finishNode(node, "EnumNumberBody"); + + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(types$1.braceR); + return this.finishNode(node, "EnumStringBody"); + + case "symbol": + node.members = members.defaultedMembers; + this.expect(types$1.braceR); + return this.finishNode(node, "EnumSymbolBody"); + + default: + { + const empty = () => { + node.members = []; + this.expect(types$1.braceR); + return this.finishNode(node, "EnumStringBody"); + }; + + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(types$1.braceR); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.start, { + enumName, + memberName: member.id.name + }); + } + + node.members = members.booleanMembers; + this.expect(types$1.braceR); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.start, { + enumName, + memberName: member.id.name + }); + } + + node.members = members.numberMembers; + this.expect(types$1.braceR); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.flowEnumErrorInconsistentMemberValues(nameLoc, { + enumName + }); + return empty(); + } + } + } + } + + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), { + enumName: id.name, + nameLoc: id.start + }); + return this.finishNode(node, "EnumDeclaration"); + } + + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + + return false; + } + + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } + +}); + +const entities = { + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; + +const HEX_NUMBER = /^[\da-fA-F]+$/; +const DECIMAL_NUMBER = /^\d+$/; +const JsxErrors = makeErrorTemplates({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: "Expected corresponding JSX closing tag for <%0>.", + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?" +}, ErrorCodes.SyntaxError); +types.j_oTag = new TokContext("<tag"); +types.j_cTag = new TokContext("</tag"); +types.j_expr = new TokContext("<tag>...</tag>", true); +types$1.jsxName = new TokenType("jsxName"); +types$1.jsxText = new TokenType("jsxText", { + beforeExpr: true +}); +types$1.jsxTagStart = new TokenType("jsxTagStart", { + startsExpr: true +}); +types$1.jsxTagEnd = new TokenType("jsxTagEnd"); + +types$1.jsxTagStart.updateContext = context => { + context.push(types.j_expr, types.j_oTag); +}; + +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} + +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + + throw new Error("Node had unexpected type: " + object.type); +} + +var jsx = (superClass => class extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(this.state.start, JsxErrors.UnterminatedJsxContent); + } + + const ch = this.input.charCodeAt(this.state.pos); + + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.exprAllowed) { + ++this.state.pos; + return this.finishToken(types$1.jsxTagStart); + } + + return super.getTokenFromCode(ch); + } + + out += this.input.slice(chunkStart, this.state.pos); + return this.finishToken(types$1.jsxText, out); + + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + + case 62: + case 125: + + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + + } + } + } + + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(this.state.start, ErrorMessages.UnterminatedString); + } + + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + + out += this.input.slice(chunkStart, this.state.pos++); + return this.finishToken(types$1.string, out); + } + + jsxReadEntity() { + let str = ""; + let count = 0; + let entity; + let ch = this.input[this.state.pos]; + const startPos = ++this.state.pos; + + while (this.state.pos < this.length && count++ < 10) { + ch = this.input[this.state.pos++]; + + if (ch === ";") { + if (str[0] === "#") { + if (str[1] === "x") { + str = str.substr(2); + + if (HEX_NUMBER.test(str)) { + entity = String.fromCodePoint(parseInt(str, 16)); + } + } else { + str = str.substr(1); + + if (DECIMAL_NUMBER.test(str)) { + entity = String.fromCodePoint(parseInt(str, 10)); + } + } + } else { + entity = entities[str]; + } + + break; + } + + str += ch; + } + + if (!entity) { + this.state.pos = startPos; + return "&"; + } + + return entity; + } + + jsxReadWord() { + let ch; + const start = this.state.pos; + + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + + return this.finishToken(types$1.jsxName, this.input.slice(start, this.state.pos)); + } + + jsxParseIdentifier() { + const node = this.startNode(); + + if (this.match(types$1.jsxName)) { + node.name = this.state.value; + } else if (this.state.type.keyword) { + node.name = this.state.type.keyword; + } else { + this.unexpected(); + } + + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + + jsxParseNamespacedName() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(types$1.colon)) return name; + const node = this.startNodeAt(startPos, startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + + jsxParseElementName() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + + if (node.type === "JSXNamespacedName") { + return node; + } + + while (this.eat(types$1.dot)) { + const newNode = this.startNodeAt(startPos, startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + + return node; + } + + jsxParseAttributeValue() { + let node; + + switch (this.state.type) { + case types$1.braceL: + node = this.startNode(); + this.next(); + node = this.jsxParseExpressionContainer(node); + + if (node.expression.type === "JSXEmptyExpression") { + this.raise(node.start, JsxErrors.AttributeIsEmpty); + } + + return node; + + case types$1.jsxTagStart: + case types$1.string: + return this.parseExprAtom(); + + default: + throw this.raise(this.state.start, JsxErrors.UnsupportedJsxValue); + } + } + + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEnd, this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.start, this.state.startLoc); + } + + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.expect(types$1.braceR); + return this.finishNode(node, "JSXSpreadChild"); + } + + jsxParseExpressionContainer(node) { + if (this.match(types$1.braceR)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + + this.expect(types$1.braceR); + return this.finishNode(node, "JSXExpressionContainer"); + } + + jsxParseAttribute() { + const node = this.startNode(); + + if (this.eat(types$1.braceL)) { + this.expect(types$1.ellipsis); + node.argument = this.parseMaybeAssignAllowIn(); + this.expect(types$1.braceR); + return this.finishNode(node, "JSXSpreadAttribute"); + } + + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(types$1.eq) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + + jsxParseOpeningElementAt(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + + if (this.match(types$1.jsxTagEnd)) { + this.expect(types$1.jsxTagEnd); + return this.finishNode(node, "JSXOpeningFragment"); + } + + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + + jsxParseOpeningElementAfterName(node) { + const attributes = []; + + while (!this.match(types$1.slash) && !this.match(types$1.jsxTagEnd)) { + attributes.push(this.jsxParseAttribute()); + } + + node.attributes = attributes; + node.selfClosing = this.eat(types$1.slash); + this.expect(types$1.jsxTagEnd); + return this.finishNode(node, "JSXOpeningElement"); + } + + jsxParseClosingElementAt(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + + if (this.match(types$1.jsxTagEnd)) { + this.expect(types$1.jsxTagEnd); + return this.finishNode(node, "JSXClosingFragment"); + } + + node.name = this.jsxParseElementName(); + this.expect(types$1.jsxTagEnd); + return this.finishNode(node, "JSXClosingElement"); + } + + jsxParseElementAt(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc); + let closingElement = null; + + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case types$1.jsxTagStart: + startPos = this.state.start; + startLoc = this.state.startLoc; + this.next(); + + if (this.eat(types$1.slash)) { + closingElement = this.jsxParseClosingElementAt(startPos, startLoc); + break contents; + } + + children.push(this.jsxParseElementAt(startPos, startLoc)); + break; + + case types$1.jsxText: + children.push(this.parseExprAtom()); + break; + + case types$1.braceL: + { + const node = this.startNode(); + this.next(); + + if (this.match(types$1.ellipsis)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node)); + } + + break; + } + + default: + throw this.unexpected(); + } + } + + if (isFragment(openingElement) && !isFragment(closingElement)) { + this.raise(closingElement.start, JsxErrors.MissingClosingTagFragment); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name)); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name)); + } + } + } + + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + + node.children = children; + + if (this.isRelational("<")) { + throw this.raise(this.state.start, JsxErrors.UnwrappedAdjacentJSXElements); + } + + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + + jsxParseElement() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startPos, startLoc); + } + + parseExprAtom(refExpressionErrors) { + if (this.match(types$1.jsxText)) { + return this.parseLiteral(this.state.value, "JSXText"); + } else if (this.match(types$1.jsxTagStart)) { + return this.jsxParseElement(); + } else if (this.isRelational("<") && this.input.charCodeAt(this.state.pos) !== 33) { + this.finishToken(types$1.jsxTagStart); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + + createLookaheadState(state) { + const lookaheadState = super.createLookaheadState(state); + lookaheadState.inPropertyName = state.inPropertyName; + return lookaheadState; + } + + getTokenFromCode(code) { + if (this.state.inPropertyName) return super.getTokenFromCode(code); + const context = this.curContext(); + + if (context === types.j_expr) { + return this.jsxReadToken(); + } + + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + return this.jsxReadWord(); + } + + if (code === 62) { + ++this.state.pos; + return this.finishToken(types$1.jsxTagEnd); + } + + if ((code === 34 || code === 39) && context === types.j_oTag) { + return this.jsxReadString(code); + } + } + + if (code === 60 && this.state.exprAllowed && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + return this.finishToken(types$1.jsxTagStart); + } + + return super.getTokenFromCode(code); + } + + updateContext(prevType) { + super.updateContext(prevType); + const { + context, + type + } = this.state; + + if (type === types$1.slash && prevType === types$1.jsxTagStart) { + context.splice(-2, 2, types.j_cTag); + this.state.exprAllowed = false; + } else if (type === types$1.jsxTagEnd) { + const out = context.pop(); + + if (out === types.j_oTag && prevType === types$1.slash || out === types.j_cTag) { + context.pop(); + this.state.exprAllowed = context[context.length - 1] === types.j_expr; + } else { + this.state.exprAllowed = true; + } + } else if (type.keyword && (prevType === types$1.dot || prevType === types$1.questionDot)) { + this.state.exprAllowed = false; + } else { + this.state.exprAllowed = type.beforeExpr; + } + } + +}); + +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.types = new Set(); + this.enums = new Set(); + this.constEnums = new Set(); + this.classes = new Set(); + this.exportOnlyBindings = new Set(); + } + +} + +class TypeScriptScopeHandler extends ScopeHandler { + createScope(flags) { + return new TypeScriptScope(flags); + } + + declareName(name, bindingType, pos) { + const scope = this.currentScope(); + + if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) { + this.maybeExportDefined(scope, name); + scope.exportOnlyBindings.add(name); + return; + } + + super.declareName(...arguments); + + if (bindingType & BIND_KIND_TYPE) { + if (!(bindingType & BIND_KIND_VALUE)) { + this.checkRedeclarationInScope(scope, name, bindingType, pos); + this.maybeExportDefined(scope, name); + } + + scope.types.add(name); + } + + if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name); + if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name); + if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name); + } + + isRedeclaredInScope(scope, name, bindingType) { + if (scope.enums.has(name)) { + if (bindingType & BIND_FLAGS_TS_ENUM) { + const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM); + const wasConst = scope.constEnums.has(name); + return isConst !== wasConst; + } + + return true; + } + + if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) { + if (scope.lexical.has(name)) { + return !!(bindingType & BIND_KIND_VALUE); + } else { + return false; + } + } + + if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) { + return true; + } + + return super.isRedeclaredInScope(...arguments); + } + + checkLocalExport(id) { + const topLevelScope = this.scopeStack[0]; + const { + name + } = id; + + if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) { + super.checkLocalExport(id); + } + } + +} + +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + + return x; +} + +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} + +const TSErrors = makeErrorTemplates({ + AbstractMethodHasImplementation: "Method '%0' cannot have an implementation because it is marked abstract.", + AbstractPropertyHasInitializer: "Property '%0' cannot have an initializer because it is marked abstract.", + AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: "'declare' is not allowed in %0ters.", + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: "Accessibility modifier already seen.", + DuplicateModifier: "Duplicate modifier: '%0'.", + EmptyHeritageClauseType: "'%0' list cannot be empty.", + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + IncompatibleModifiers: "'%0' modifier cannot be used with '%1' modifier.", + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: "Index signatures cannot have an accessibility modifier ('%0').", + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InvalidModifierOnTypeMember: "'%0' modifier cannot appear on a type member.", + InvalidModifiersOrder: "'%0' modifier must precede '%1' modifier.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: "Private elements cannot have an accessibility modifier ('%0').", + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0." +}, ErrorCodes.SyntaxError); + +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + + case "boolean": + return "TSBooleanKeyword"; + + case "bigint": + return "TSBigIntKeyword"; + + case "never": + return "TSNeverKeyword"; + + case "number": + return "TSNumberKeyword"; + + case "object": + return "TSObjectKeyword"; + + case "string": + return "TSStringKeyword"; + + case "symbol": + return "TSSymbolKeyword"; + + case "undefined": + return "TSUndefinedKeyword"; + + case "unknown": + return "TSUnknownKeyword"; + + default: + return undefined; + } +} + +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} + +var typescript = (superClass => class extends superClass { + getScopeHandler() { + return TypeScriptScopeHandler; + } + + tsIsIdentifier() { + return this.match(types$1.name); + } + + tsTokenCanFollowModifier() { + return (this.match(types$1.bracketL) || this.match(types$1.braceL) || this.match(types$1.star) || this.match(types$1.ellipsis) || this.match(types$1.privateName) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); + } + + tsNextTokenCanFollowModifier() { + this.next(); + return this.tsTokenCanFollowModifier(); + } + + tsParseModifier(allowedModifiers) { + if (!this.match(types$1.name)) { + return undefined; + } + + const modifier = this.state.value; + + if (allowedModifiers.indexOf(modifier) !== -1 && this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + + return undefined; + } + + tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate) { + const enforceOrder = (pos, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(pos, TSErrors.InvalidModifiersOrder, before, after); + } + }; + + const incompatible = (pos, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(pos, TSErrors.IncompatibleModifiers, mod1, mod2); + } + }; + + for (;;) { + const startPos = this.state.start; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : [])); + if (!modifier) break; + + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(startPos, TSErrors.DuplicateAccessibilityModifier); + } else { + enforceOrder(startPos, modifier, modifier, "override"); + enforceOrder(startPos, modifier, modifier, "static"); + enforceOrder(startPos, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else { + if (Object.hasOwnProperty.call(modified, modifier)) { + this.raise(startPos, TSErrors.DuplicateModifier, modifier); + } else { + enforceOrder(startPos, modifier, "static", "readonly"); + enforceOrder(startPos, modifier, "static", "override"); + enforceOrder(startPos, modifier, "override", "readonly"); + enforceOrder(startPos, modifier, "abstract", "override"); + incompatible(startPos, modifier, "declare", "override"); + incompatible(startPos, modifier, "static", "abstract"); + } + + modified[modifier] = true; + } + + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(startPos, errorTemplate, modifier); + } + } + } + + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(types$1.braceR); + + case "HeritageClauseElement": + return this.match(types$1.braceL); + + case "TupleElementTypes": + return this.match(types$1.bracketR); + + case "TypeParametersOrArguments": + return this.isRelational(">"); + } + + throw new Error("Unreachable"); + } + + tsParseList(kind, parseElement) { + const result = []; + + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + + return result; + } + + tsParseDelimitedList(kind, parseElement) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true)); + } + + tsParseDelimitedListWorker(kind, parseElement, expectSuccess) { + const result = []; + + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + + const element = parseElement(); + + if (element == null) { + return undefined; + } + + result.push(element); + + if (this.eat(types$1.comma)) { + continue; + } + + if (this.tsIsListTerminator(kind)) { + break; + } + + if (expectSuccess) { + this.expect(types$1.comma); + } + + return undefined; + } + + return result; + } + + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken) { + if (!skipFirstToken) { + if (bracket) { + this.expect(types$1.bracketL); + } else { + this.expectRelational("<"); + } + } + + const result = this.tsParseDelimitedList(kind, parseElement); + + if (bracket) { + this.expect(types$1.bracketR); + } else { + this.expectRelational(">"); + } + + return result; + } + + tsParseImportType() { + const node = this.startNode(); + this.expect(types$1._import); + this.expect(types$1.parenL); + + if (!this.match(types$1.string)) { + this.raise(this.state.start, TSErrors.UnsupportedImportTypeArgument); + } + + node.argument = this.parseExprAtom(); + this.expect(types$1.parenR); + + if (this.eat(types$1.dot)) { + node.qualifier = this.tsParseEntityName(true); + } + + if (this.isRelational("<")) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSImportType"); + } + + tsParseEntityName(allowReservedWords) { + let entity = this.parseIdentifier(); + + while (this.eat(types$1.dot)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(allowReservedWords); + entity = this.finishNode(node, "TSQualifiedName"); + } + + return entity; + } + + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(false); + + if (!this.hasPrecedingLineBreak() && this.isRelational("<")) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSTypeReference"); + } + + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(types$1._typeof); + + if (this.match(types$1._import)) { + node.exprName = this.tsParseImportType(); + } else { + node.exprName = this.tsParseEntityName(true); + } + + return this.finishNode(node, "TSTypeQuery"); + } + + tsParseTypeParameter() { + const node = this.startNode(); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(types$1._extends); + node.default = this.tsEatThenParseType(types$1.eq); + return this.finishNode(node, "TSTypeParameter"); + } + + tsTryParseTypeParameters() { + if (this.isRelational("<")) { + return this.tsParseTypeParameters(); + } + } + + tsParseTypeParameters() { + const node = this.startNode(); + + if (this.isRelational("<") || this.match(types$1.jsxTagStart)) { + this.next(); + } else { + this.unexpected(); + } + + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true); + + if (node.params.length === 0) { + this.raise(node.start, TSErrors.EmptyTypeParameters); + } + + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + + tsTryNextParseConstantContext() { + if (this.lookahead().type === types$1._const) { + this.next(); + return this.tsParseTypeReference(); + } + + return null; + } + + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === types$1.arrow; + signature.typeParameters = this.tsTryParseTypeParameters(); + this.expect(types$1.parenL); + signature.parameters = this.tsParseBindingListForSignature(); + + if (returnTokenRequired) { + signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + + tsParseBindingListForSignature() { + return this.parseBindingList(types$1.parenR, 41).map(pattern => { + if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") { + this.raise(pattern.start, TSErrors.UnsupportedSignatureParameterKind, pattern.type); + } + + return pattern; + }); + } + + tsParseTypeMemberSemicolon() { + if (!this.eat(types$1.comma) && !this.isLineTerminator()) { + this.expect(types$1.semi); + } + } + + tsParseSignatureMember(kind, node) { + this.tsFillSignature(types$1.colon, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + + tsIsUnambiguouslyIndexSignature() { + this.next(); + return this.eat(types$1.name) && this.match(types$1.colon); + } + + tsTryParseIndexSignature(node) { + if (!(this.match(types$1.bracketL) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return undefined; + } + + this.expect(types$1.bracketL); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(types$1.bracketR); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(types$1.question)) node.optional = true; + const nodeAny = node; + + if (this.match(types$1.parenL) || this.isRelational("<")) { + if (readonly) { + this.raise(node.start, TSErrors.ReadonlyForMethodSignature); + } + + const method = nodeAny; + + if (method.kind && this.isRelational("<")) { + this.raise(this.state.pos, TSErrors.AccesorCannotHaveTypeParameters); + } + + this.tsFillSignature(types$1.colon, method); + this.tsParseTypeMemberSemicolon(); + + if (method.kind === "get") { + if (method.parameters.length > 0) { + this.raise(this.state.pos, ErrorMessages.BadGetterArity); + + if (this.isThisParam(method.parameters[0])) { + this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter); + } + } + } else if (method.kind === "set") { + if (method.parameters.length !== 1) { + this.raise(this.state.pos, ErrorMessages.BadSetterArity); + } else { + const firstParameter = method.parameters[0]; + + if (this.isThisParam(firstParameter)) { + this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter); + } + + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveOptionalParameter); + } + + if (firstParameter.type === "RestElement") { + this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveRestParameter); + } + } + + if (method.typeAnnotation) { + this.raise(method.typeAnnotation.start, TSErrors.SetAccesorCannotHaveReturnType); + } + } else { + method.kind = "method"; + } + + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = nodeAny; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + + tsParseTypeMember() { + const node = this.startNode(); + + if (this.match(types$1.parenL) || this.isRelational("<")) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + + if (this.match(types$1._new)) { + const id = this.startNode(); + this.next(); + + if (this.match(types$1.parenL) || this.isRelational("<")) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + + this.tsParseModifiers(node, ["readonly"], ["declare", "abstract", "private", "protected", "public", "static", "override"], TSErrors.InvalidModifierOnTypeMember); + const idx = this.tsTryParseIndexSignature(node); + + if (idx) { + return idx; + } + + this.parsePropertyName(node, false); + + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + this.parsePropertyName(node, false); + } + + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + + tsParseObjectTypeMembers() { + this.expect(types$1.braceL); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(types$1.braceR); + return members; + } + + tsIsStartOfMappedType() { + this.next(); + + if (this.eat(types$1.plusMin)) { + return this.isContextual("readonly"); + } + + if (this.isContextual("readonly")) { + this.next(); + } + + if (!this.match(types$1.bracketL)) { + return false; + } + + this.next(); + + if (!this.tsIsIdentifier()) { + return false; + } + + this.next(); + return this.match(types$1._in); + } + + tsParseMappedTypeParameter() { + const node = this.startNode(); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsExpectThenParseType(types$1._in); + return this.finishNode(node, "TSTypeParameter"); + } + + tsParseMappedType() { + const node = this.startNode(); + this.expect(types$1.braceL); + + if (this.match(types$1.plusMin)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual("readonly"); + } else if (this.eatContextual("readonly")) { + node.readonly = true; + } + + this.expect(types$1.bracketL); + node.typeParameter = this.tsParseMappedTypeParameter(); + node.nameType = this.eatContextual("as") ? this.tsParseType() : null; + this.expect(types$1.bracketR); + + if (this.match(types$1.plusMin)) { + node.optional = this.state.value; + this.next(); + this.expect(types$1.question); + } else if (this.eat(types$1.question)) { + node.optional = true; + } + + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(types$1.braceR); + return this.finishNode(node, "TSMappedType"); + } + + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + let labeledElements = null; + node.elementTypes.forEach(elementNode => { + var _labeledElements; + + let { + type + } = elementNode; + + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(elementNode.start, TSErrors.OptionalTypeBeforeRequired); + } + + seenOptionalElement = seenOptionalElement || type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"; + + if (type === "TSRestType") { + elementNode = elementNode.typeAnnotation; + type = elementNode.type; + } + + const isLabeled = type === "TSNamedTupleMember"; + labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled; + + if (labeledElements !== isLabeled) { + this.raise(elementNode.start, TSErrors.MixedLabeledAndUnlabeledElements); + } + }); + return this.finishNode(node, "TSTupleType"); + } + + tsParseTupleElementType() { + const { + start: startPos, + startLoc + } = this.state; + const rest = this.eat(types$1.ellipsis); + let type = this.tsParseType(); + const optional = this.eat(types$1.question); + const labeled = this.eat(types$1.colon); + + if (labeled) { + const labeledNode = this.startNodeAtNode(type); + labeledNode.optional = optional; + + if (type.type === "TSTypeReference" && !type.typeParameters && type.typeName.type === "Identifier") { + labeledNode.label = type.typeName; + } else { + this.raise(type.start, TSErrors.InvalidTupleMemberLabel); + labeledNode.label = type; + } + + labeledNode.elementType = this.tsParseType(); + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAtNode(type); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + + if (rest) { + const restNode = this.startNodeAt(startPos, startLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + + return type; + } + + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(types$1.parenL); + node.typeAnnotation = this.tsParseType(); + this.expect(types$1.parenR); + return this.finishNode(node, "TSParenthesizedType"); + } + + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + + this.tsFillSignature(types$1.arrow, node); + return this.finishNode(node, type); + } + + tsParseLiteralTypeNode() { + const node = this.startNode(); + + node.literal = (() => { + switch (this.state.type) { + case types$1.num: + case types$1.bigint: + case types$1.string: + case types$1._true: + case types$1._false: + return this.parseExprAtom(); + + default: + throw this.unexpected(); + } + })(); + + return this.finishNode(node, "TSLiteralType"); + } + + tsParseTemplateLiteralType() { + const node = this.startNode(); + node.literal = this.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + + if (this.isContextual("is") && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + + tsParseNonArrayType() { + switch (this.state.type) { + case types$1.name: + case types$1._void: + case types$1._null: + { + const type = this.match(types$1._void) ? "TSVoidKeyword" : this.match(types$1._null) ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + + if (type !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, type); + } + + return this.tsParseTypeReference(); + } + + case types$1.string: + case types$1.num: + case types$1.bigint: + case types$1._true: + case types$1._false: + return this.tsParseLiteralTypeNode(); + + case types$1.plusMin: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + + if (nextToken.type !== types$1.num && nextToken.type !== types$1.bigint) { + throw this.unexpected(); + } + + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + + break; + + case types$1._this: + return this.tsParseThisTypeOrThisTypePredicate(); + + case types$1._typeof: + return this.tsParseTypeQuery(); + + case types$1._import: + return this.tsParseImportType(); + + case types$1.braceL: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + + case types$1.bracketL: + return this.tsParseTupleType(); + + case types$1.parenL: + return this.tsParseParenthesizedType(); + + case types$1.backQuote: + return this.tsParseTemplateLiteralType(); + } + + throw this.unexpected(); + } + + tsParseArrayTypeOrHigher() { + let type = this.tsParseNonArrayType(); + + while (!this.hasPrecedingLineBreak() && this.eat(types$1.bracketL)) { + if (this.match(types$1.bracketR)) { + const node = this.startNodeAtNode(type); + node.elementType = type; + this.expect(types$1.bracketR); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAtNode(type); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(types$1.bracketR); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + + return type; + } + + tsParseTypeOperator(operator) { + const node = this.startNode(); + this.expectContextual(operator); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + + return this.finishNode(node, "TSTypeOperator"); + } + + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + + default: + this.raise(node.start, TSErrors.UnexpectedReadonly); + } + } + + tsParseInferType() { + const node = this.startNode(); + this.expectContextual("infer"); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + + tsParseTypeOperatorOrHigher() { + const operator = ["keyof", "unique", "readonly"].find(kw => this.isContextual(kw)); + return operator ? this.tsParseTypeOperator(operator) : this.isContextual("infer") ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher(); + } + + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + + node.types = types; + return this.finishNode(node, kind); + } + + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), types$1.bitwiseAND); + } + + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), types$1.bitwiseOR); + } + + tsIsStartOfFunctionType() { + if (this.isRelational("<")) { + return true; + } + + return this.match(types$1.parenL) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + + tsSkipParameterStart() { + if (this.match(types$1.name) || this.match(types$1._this)) { + this.next(); + return true; + } + + if (this.match(types$1.braceL)) { + let braceStackCounter = 1; + this.next(); + + while (braceStackCounter > 0) { + if (this.match(types$1.braceL)) { + ++braceStackCounter; + } else if (this.match(types$1.braceR)) { + --braceStackCounter; + } + + this.next(); + } + + return true; + } + + if (this.match(types$1.bracketL)) { + let braceStackCounter = 1; + this.next(); + + while (braceStackCounter > 0) { + if (this.match(types$1.bracketL)) { + ++braceStackCounter; + } else if (this.match(types$1.bracketR)) { + --braceStackCounter; + } + + this.next(); + } + + return true; + } + + return false; + } + + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + + if (this.match(types$1.parenR) || this.match(types$1.ellipsis)) { + return true; + } + + if (this.tsSkipParameterStart()) { + if (this.match(types$1.colon) || this.match(types$1.comma) || this.match(types$1.question) || this.match(types$1.eq)) { + return true; + } + + if (this.match(types$1.parenR)) { + this.next(); + + if (this.match(types$1.arrow)) { + return true; + } + } + } + + return false; + } + + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + + if (asserts && this.match(types$1._this)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + + tsTryParseTypeOrTypePredicateAnnotation() { + return this.match(types$1.colon) ? this.tsParseTypeOrTypePredicateAnnotation(types$1.colon) : undefined; + } + + tsTryParseTypeAnnotation() { + return this.match(types$1.colon) ? this.tsParseTypeAnnotation() : undefined; + } + + tsTryParseType() { + return this.tsEatThenParseType(types$1.colon); + } + + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + + if (this.isContextual("is") && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + + tsParseTypePredicateAsserts() { + if (!this.match(types$1.name) || this.state.value !== "asserts" || this.hasPrecedingLineBreak()) { + return false; + } + + const containsEsc = this.state.containsEsc; + this.next(); + + if (!this.match(types$1.name) && !this.match(types$1._this)) { + return false; + } + + if (containsEsc) { + this.raise(this.state.lastTokStart, ErrorMessages.InvalidEscapedReservedWord, "asserts"); + } + + return true; + } + + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(types$1.colon); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + + if (this.hasPrecedingLineBreak() || !this.eat(types$1._extends)) { + return type; + } + + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsParseNonConditionalType(); + this.expect(types$1.question); + node.trueType = this.tsParseType(); + this.expect(types$1.colon); + node.falseType = this.tsParseType(); + return this.finishNode(node, "TSConditionalType"); + } + + isAbstractConstructorSignature() { + return this.isContextual("abstract") && this.lookahead().type === types$1._new; + } + + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + + if (this.match(types$1._new)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + + return this.tsParseUnionTypeOrHigher(); + } + + tsParseTypeAssertion() { + const node = this.startNode(); + + const _const = this.tsTryNextParseConstantContext(); + + node.typeAnnotation = _const || this.tsNextThenParseType(); + this.expectRelational(">"); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + + tsParseHeritageClause(descriptor) { + const originalStart = this.state.start; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", this.tsParseExpressionWithTypeArguments.bind(this)); + + if (!delimitedList.length) { + this.raise(originalStart, TSErrors.EmptyHeritageClauseType, descriptor); + } + + return delimitedList; + } + + tsParseExpressionWithTypeArguments() { + const node = this.startNode(); + node.expression = this.tsParseEntityName(false); + + if (this.isRelational("<")) { + node.typeParameters = this.tsParseTypeArguments(); + } + + return this.finishNode(node, "TSExpressionWithTypeArguments"); + } + + tsParseInterfaceDeclaration(node) { + if (this.match(types$1.name)) { + node.id = this.parseIdentifier(); + this.checkLVal(node.id, "typescript interface declaration", BIND_TS_INTERFACE); + } else { + node.id = null; + this.raise(this.state.start, TSErrors.MissingInterfaceName); + } + + node.typeParameters = this.tsTryParseTypeParameters(); + + if (this.eat(types$1._extends)) { + node.extends = this.tsParseHeritageClause("extends"); + } + + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkLVal(node.id, "typescript type alias", BIND_TS_TYPE); + node.typeParameters = this.tsTryParseTypeParameters(); + node.typeAnnotation = this.tsInType(() => { + this.expect(types$1.eq); + + if (this.isContextual("intrinsic") && this.lookahead().type !== types$1.dot) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + + tsInNoContext(cb) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } + + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + + tsEatThenParseType(token) { + return !this.match(token) ? undefined : this.tsNextThenParseType(); + } + + tsExpectThenParseType(token) { + return this.tsDoThenParseType(() => this.expect(token)); + } + + tsNextThenParseType() { + return this.tsDoThenParseType(() => this.next()); + } + + tsDoThenParseType(cb) { + return this.tsInType(() => { + cb(); + return this.tsParseType(); + }); + } + + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(types$1.string) ? this.parseExprAtom() : this.parseIdentifier(true); + + if (this.eat(types$1.eq)) { + node.initializer = this.parseMaybeAssignAllowIn(); + } + + return this.finishNode(node, "TSEnumMember"); + } + + tsParseEnumDeclaration(node, isConst) { + if (isConst) node.const = true; + node.id = this.parseIdentifier(); + this.checkLVal(node.id, "typescript enum declaration", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM); + this.expect(types$1.braceL); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(types$1.braceR); + return this.finishNode(node, "TSEnumDeclaration"); + } + + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(SCOPE_OTHER); + this.expect(types$1.braceL); + this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, types$1.braceR); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + + if (!nested) { + this.checkLVal(node.id, "module or namespace declaration", BIND_TS_NAMESPACE); + } + + if (this.eat(types$1.dot)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(SCOPE_TS_MODULE); + this.prodParam.enter(PARAM); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + + return this.finishNode(node, "TSModuleDeclaration"); + } + + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual("global")) { + node.global = true; + node.id = this.parseIdentifier(); + } else if (this.match(types$1.string)) { + node.id = this.parseExprAtom(); + } else { + this.unexpected(); + } + + if (this.match(types$1.braceL)) { + this.scope.enter(SCOPE_TS_MODULE); + this.prodParam.enter(PARAM); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + + return this.finishNode(node, "TSModuleDeclaration"); + } + + tsParseImportEqualsDeclaration(node, isExport) { + node.isExport = isExport || false; + node.id = this.parseIdentifier(); + this.checkLVal(node.id, "import equals declaration", BIND_LEXICAL); + this.expect(types$1.eq); + const moduleReference = this.tsParseModuleReference(); + + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(moduleReference.start, TSErrors.ImportAliasHasImportType); + } + + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + + tsIsExternalModuleReference() { + return this.isContextual("require") && this.lookaheadCharCode() === 40; + } + + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); + } + + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual("require"); + this.expect(types$1.parenL); + + if (!this.match(types$1.string)) { + throw this.unexpected(); + } + + node.expression = this.parseExprAtom(); + this.expect(types$1.parenR); + return this.finishNode(node, "TSExternalModuleReference"); + } + + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return undefined; + if (result.error) this.state = result.failState; + return result.node; + } + + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + + if (result !== undefined && result !== false) { + return result; + } else { + this.state = state; + return undefined; + } + } + + tsTryParseDeclare(nany) { + if (this.isLineTerminator()) { + return; + } + + let starttype = this.state.type; + let kind; + + if (this.isContextual("let")) { + starttype = types$1._var; + kind = "let"; + } + + return this.tsInAmbientContext(() => { + switch (starttype) { + case types$1._function: + nany.declare = true; + return this.parseFunctionStatement(nany, false, true); + + case types$1._class: + nany.declare = true; + return this.parseClass(nany, true, false); + + case types$1._const: + if (this.match(types$1._const) && this.isLookaheadContextual("enum")) { + this.expect(types$1._const); + this.expectContextual("enum"); + return this.tsParseEnumDeclaration(nany, true); + } + + case types$1._var: + kind = kind || this.state.value; + return this.parseVarStatement(nany, kind); + + case types$1.name: + { + const value = this.state.value; + + if (value === "global") { + return this.tsParseAmbientExternalModuleDeclaration(nany); + } else { + return this.tsParseDeclaration(nany, value, true); + } + } + } + }); + } + + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true); + } + + tsParseExpressionStatement(node, expr) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + + if (declaration) { + declaration.declare = true; + return declaration; + } + + break; + } + + case "global": + if (this.match(types$1.braceL)) { + this.scope.enter(SCOPE_TS_MODULE); + this.prodParam.enter(PARAM); + const mod = node; + mod.global = true; + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + this.scope.exit(); + this.prodParam.exit(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + + break; + + default: + return this.tsParseDeclaration(node, expr.name, false); + } + } + + tsParseDeclaration(node, value, next) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminator(next) && (this.match(types$1._class) || this.match(types$1.name))) { + return this.tsParseAbstractDeclaration(node); + } + + break; + + case "enum": + if (next || this.match(types$1.name)) { + if (next) this.next(); + return this.tsParseEnumDeclaration(node, false); + } + + break; + + case "interface": + if (this.tsCheckLineTerminator(next) && this.match(types$1.name)) { + return this.tsParseInterfaceDeclaration(node); + } + + break; + + case "module": + if (this.tsCheckLineTerminator(next)) { + if (this.match(types$1.string)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (this.match(types$1.name)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + + break; + + case "namespace": + if (this.tsCheckLineTerminator(next) && this.match(types$1.name)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + + break; + + case "type": + if (this.tsCheckLineTerminator(next) && this.match(types$1.name)) { + return this.tsParseTypeAliasDeclaration(node); + } + + break; + } + } + + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + + return !this.isLineTerminator(); + } + + tsTryParseGenericAsyncArrowFunction(startPos, startLoc) { + if (!this.isRelational("<")) { + return undefined; + } + + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startPos, startLoc); + node.typeParameters = this.tsParseTypeParameters(); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(types$1.arrow); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + + if (!res) { + return undefined; + } + + return this.parseArrowExpression(res, null, true); + } + + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInNoContext(() => { + this.expectRelational("<"); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + + if (node.params.length === 0) { + this.raise(node.start, TSErrors.EmptyTypeArguments); + } + + this.expectRelational(">"); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + + tsIsDeclarationStart() { + if (this.match(types$1.name)) { + switch (this.state.value) { + case "abstract": + case "declare": + case "enum": + case "interface": + case "module": + case "namespace": + case "type": + return true; + } + } + + return false; + } + + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + + parseAssignableListItem(allowModifiers, decorators) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let accessibility; + let readonly = false; + let override = false; + + if (allowModifiers !== undefined) { + const modified = {}; + this.tsParseModifiers(modified, ["public", "private", "protected", "override", "readonly"]); + accessibility = modified.accessibility; + override = modified.override; + readonly = modified.readonly; + + if (allowModifiers === false && (accessibility || readonly || override)) { + this.raise(startPos, TSErrors.UnexpectedParameterModifier); + } + } + + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left); + const elt = this.parseMaybeDefault(left.start, left.loc.start, left); + + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startPos, startLoc); + + if (decorators.length) { + pp.decorators = decorators; + } + + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(pp.start, TSErrors.UnsupportedParameterPropertyKind); + } + + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + + if (decorators.length) { + left.decorators = decorators; + } + + return elt; + } + + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(types$1.colon)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(types$1.colon); + } + + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" ? "TSDeclareMethod" : undefined; + + if (bodilessType && !this.match(types$1.braceL) && this.isLineTerminator()) { + this.finishNode(node, bodilessType); + return; + } + + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(node.start, TSErrors.DeclareFunctionHasImplementation); + + if (node.declare) { + super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + return; + } + } + + super.parseFunctionBodyAndFinish(node, type, isMethod); + } + + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkLVal(node.id, "function name", BIND_TS_AMBIENT); + } else { + super.registerFunctionStatementId(...arguments); + } + } + + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(node.typeAnnotation.start, TSErrors.UnexpectedTypeAnnotation); + } + }); + } + + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + + parseArrayLike(...args) { + const node = super.parseArrayLike(...args); + + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + + return node; + } + + parseSubscript(base, startPos, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(types$1.bang)) { + this.state.exprAllowed = false; + this.next(); + const nonNullExpression = this.startNodeAt(startPos, startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + + let isOptionalCall = false; + + if (this.match(types$1.questionDot) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + + if (this.isRelational("<")) { + let missingParenErrorPos; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc); + + if (asyncArrowFn) { + return asyncArrowFn; + } + } + + const node = this.startNodeAt(startPos, startLoc); + node.callee = base; + const typeArguments = this.tsParseTypeArguments(); + + if (typeArguments) { + if (isOptionalCall && !this.match(types$1.parenL)) { + missingParenErrorPos = this.state.pos; + this.unexpected(); + } + + if (!noCalls && this.eat(types$1.parenL)) { + node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); + this.tsCheckForInvalidTypeCasts(node.arguments); + node.typeParameters = typeArguments; + + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + + return this.finishCallExpression(node, state.optionalChainMember); + } else if (this.match(types$1.backQuote)) { + const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state); + result.typeParameters = typeArguments; + return result; + } + } + + this.unexpected(); + }); + + if (missingParenErrorPos) { + this.unexpected(missingParenErrorPos, types$1.parenL); + } + + if (result) return result; + } + + return super.parseSubscript(base, startPos, startLoc, noCalls, state); + } + + parseNewArguments(node) { + if (this.isRelational("<")) { + const typeParameters = this.tsTryParseAndCatch(() => { + const args = this.tsParseTypeArguments(); + if (!this.match(types$1.parenL)) this.unexpected(); + return args; + }); + + if (typeParameters) { + node.typeParameters = typeParameters; + } + } + + super.parseNewArguments(node); + } + + parseExprOp(left, leftStartPos, leftStartLoc, minPrec) { + if (nonNull(types$1._in.binop) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual("as")) { + const node = this.startNodeAt(leftStartPos, leftStartLoc); + node.expression = left; + + const _const = this.tsTryNextParseConstantContext(); + + if (_const) { + node.typeAnnotation = _const; + } else { + node.typeAnnotation = this.tsNextThenParseType(); + } + + this.finishNode(node, "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec); + } + + return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec); + } + + checkReservedWord(word, startLoc, checkKeywords, isBinding) {} + + checkDuplicateExports() {} + + parseImport(node) { + node.importKind = "value"; + + if (this.match(types$1.name) || this.match(types$1.star) || this.match(types$1.braceL)) { + let ahead = this.lookahead(); + + if (this.isContextual("type") && ahead.type !== types$1.comma && !(ahead.type === types$1.name && ahead.value === "from") && ahead.type !== types$1.eq) { + node.importKind = "type"; + this.next(); + ahead = this.lookahead(); + } + + if (this.match(types$1.name) && ahead.type === types$1.eq) { + return this.tsParseImportEqualsDeclaration(node); + } + } + + const importNode = super.parseImport(node); + + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(importNode.start, TSErrors.TypeImportCannotSpecifyDefaultAndNamed); + } + + return importNode; + } + + parseExport(node) { + if (this.match(types$1._import)) { + this.next(); + + if (this.isContextual("type") && this.lookaheadCharCode() !== 61) { + node.importKind = "type"; + this.next(); + } else { + node.importKind = "value"; + } + + return this.tsParseImportEqualsDeclaration(node, true); + } else if (this.eat(types$1.eq)) { + const assign = node; + assign.expression = this.parseExpression(); + this.semicolon(); + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual("as")) { + const decl = node; + this.expectContextual("namespace"); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + if (this.isContextual("type") && this.lookahead().type === types$1.braceL) { + this.next(); + node.exportKind = "type"; + } else { + node.exportKind = "value"; + } + + return super.parseExport(node); + } + } + + isAbstractClass() { + return this.isContextual("abstract") && this.lookahead().type === types$1._class; + } + + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + this.parseClass(cls, true, true); + return cls; + } + + if (this.state.value === "interface") { + const interfaceNode = this.startNode(); + this.next(); + const result = this.tsParseInterfaceDeclaration(interfaceNode); + if (result) return result; + } + + return super.parseExportDefaultExpression(); + } + + parseStatementContent(context, topLevel) { + if (this.state.type === types$1._const) { + const ahead = this.lookahead(); + + if (ahead.type === types$1.name && ahead.value === "enum") { + const node = this.startNode(); + this.expect(types$1._const); + this.expectContextual("enum"); + return this.tsParseEnumDeclaration(node, true); + } + } + + return super.parseStatementContent(context, topLevel); + } + + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + + return !!member[modifier]; + }); + } + + parseClassMember(classBody, member, state) { + const invalidModifersForStaticBlocks = ["declare", "private", "public", "protected", "override", "abstract", "readonly"]; + this.tsParseModifiers(member, invalidModifersForStaticBlocks.concat(["static"])); + + const callParseClassMemberWithIsStatic = () => { + const isStatic = !!member.static; + + if (isStatic && this.eat(types$1.braceL)) { + if (this.tsHasSomeModifiers(member, invalidModifersForStaticBlocks)) { + this.raise(this.state.pos, TSErrors.StaticBlockCannotHaveModifier); + } + + this.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + }; + + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + + if (idx) { + classBody.body.push(idx); + + if (member.abstract) { + this.raise(member.start, TSErrors.IndexSignatureHasAbstract); + } + + if (member.accessibility) { + this.raise(member.start, TSErrors.IndexSignatureHasAccessibility, member.accessibility); + } + + if (member.declare) { + this.raise(member.start, TSErrors.IndexSignatureHasDeclare); + } + + if (member.override) { + this.raise(member.start, TSErrors.IndexSignatureHasOverride); + } + + return; + } + + if (!this.state.inAbstractClass && member.abstract) { + this.raise(member.start, TSErrors.NonAbstractClassHasAbstractMethod); + } + + if (member.override) { + if (!state.hadSuperClass) { + this.raise(member.start, TSErrors.OverrideNotInSubClass); + } + } + + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(types$1.question); + if (optional) methodOrProp.optional = true; + + if (methodOrProp.readonly && this.match(types$1.parenL)) { + this.raise(methodOrProp.start, TSErrors.ClassMethodHasReadonly); + } + + if (methodOrProp.declare && this.match(types$1.parenL)) { + this.raise(methodOrProp.start, TSErrors.ClassMethodHasDeclare); + } + } + + parseExpressionStatement(node, expr) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr) : undefined; + return decl || super.parseExpressionStatement(node, expr); + } + + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + + parseConditional(expr, startPos, startLoc, refExpressionErrors) { + if (!this.state.maybeInArrowParameters || !this.match(types$1.question)) { + return super.parseConditional(expr, startPos, startLoc, refExpressionErrors); + } + + const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc)); + + if (!result.node) { + if (result.error) { + super.setOptionalParametersError(refExpressionErrors, result.error); + } + + return expr; + } + + if (result.error) this.state = result.failState; + return result.node; + } + + parseParenItem(node, startPos, startLoc) { + node = super.parseParenItem(node, startPos, startLoc); + + if (this.eat(types$1.question)) { + node.optional = true; + this.resetEndLocation(node); + } + + if (this.match(types$1.colon)) { + const typeCastNode = this.startNodeAt(startPos, startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + + return node; + } + + parseExportDeclaration(node) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual("declare"); + + if (isDeclare && (this.isContextual("declare") || !this.shouldParseExportDeclaration())) { + throw this.raise(this.state.start, TSErrors.ExpectedAmbientAfterExportDeclare); + } + + let declaration; + + if (this.match(types$1.name)) { + declaration = this.tsTryParseExportDeclaration(); + } + + if (!declaration) { + declaration = super.parseExportDeclaration(node); + } + + if (declaration && (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare)) { + node.exportKind = "type"; + } + + if (declaration && isDeclare) { + this.resetStartLocation(declaration, startPos, startLoc); + declaration.declare = true; + } + + return declaration; + } + + parseClassId(node, isStatement, optionalId) { + if ((!isStatement || optionalId) && this.isContextual("implements")) { + return; + } + + super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS); + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) node.typeParameters = typeParameters; + } + + parseClassPropertyAnnotation(node) { + if (!node.optional && this.eat(types$1.bang)) { + node.definite = true; + } + + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + + if (this.state.isAmbientContext && this.match(types$1.eq)) { + this.raise(this.state.start, TSErrors.DeclareClassFieldHasInitializer); + } + + if (node.abstract && this.match(types$1.eq)) { + const { + key + } = node; + this.raise(this.state.start, TSErrors.AbstractPropertyHasInitializer, key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`); + } + + return super.parseClassProperty(node); + } + + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(node.start, TSErrors.PrivateElementHasAbstract); + } + + if (node.accessibility) { + this.raise(node.start, TSErrors.PrivateElementHasAccessibility, node.accessibility); + } + + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(); + + if (typeParameters && isConstructor) { + this.raise(typeParameters.start, TSErrors.ConstructorHasTypeParameters); + } + + if (method.declare && (method.kind === "get" || method.kind === "set")) { + this.raise(method.start, TSErrors.DeclareAccessor, method.kind); + } + + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + + parseClassSuper(node) { + super.parseClassSuper(node); + + if (node.superClass && this.isRelational("<")) { + node.superTypeParameters = this.tsParseTypeArguments(); + } + + if (this.eatContextual("implements")) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + + parseObjPropValue(prop, ...args) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) prop.typeParameters = typeParameters; + super.parseObjPropValue(prop, ...args); + } + + parseFunctionParams(node, allowModifiers) { + const typeParameters = this.tsTryParseTypeParameters(); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, allowModifiers); + } + + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + + if (decl.id.type === "Identifier" && this.eat(types$1.bang)) { + decl.definite = true; + } + + const type = this.tsTryParseTypeAnnotation(); + + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(types$1.colon)) { + node.returnType = this.tsParseTypeAnnotation(); + } + + return super.parseAsyncArrowFromCallExpression(node, call); + } + + parseMaybeAssign(...args) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3; + + let state; + let jsx; + let typeCast; + + if (this.hasPlugin("jsx") && (this.match(types$1.jsxTagStart) || this.isRelational("<"))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(...args), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + + if (context[context.length - 1] === types.j_oTag) { + context.length -= 2; + } else if (context[context.length - 1] === types.j_expr) { + context.length -= 1; + } + } + + if (!((_jsx = jsx) != null && _jsx.error) && !this.isRelational("<")) { + return super.parseMaybeAssign(...args); + } + + let typeParameters; + state = state || this.state.clone(); + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + + typeParameters = this.tsParseTypeParameters(); + const expr = super.parseMaybeAssign(...args); + + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) return arrow.node; + + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state); + if (!typeCast.error) return typeCast.node; + } + + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error; + throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error); + } + + parseMaybeUnary(refExpressionErrors) { + if (!this.hasPlugin("jsx") && this.isRelational("<")) { + return this.tsParseTypeAssertion(); + } else { + return super.parseMaybeUnary(refExpressionErrors); + } + } + + parseArrow(node) { + if (this.match(types$1.colon)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(types$1.colon); + if (this.canInsertSemicolon() || !this.match(types$1.arrow)) abort(); + return returnType; + }); + if (result.aborted) return; + + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + + return super.parseArrow(node); + } + + parseAssignableListItemTypes(param) { + if (this.eat(types$1.question)) { + if (param.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType) { + this.raise(param.start, TSErrors.PatternIsOptional); + } + + param.optional = true; + } + + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + + case "TSParameterProperty": + return true; + + default: + return super.isAssignable(node, isBinding); + } + } + + toAssignable(node, isLHS = false) { + switch (node.type) { + case "TSTypeCastExpression": + return super.toAssignable(this.typeCastToParameter(node), isLHS); + + case "TSParameterProperty": + return super.toAssignable(node, isLHS); + + case "ParenthesizedExpression": + return this.toAssignableParenthesizedExpression(node, isLHS); + + case "TSAsExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + node.expression = this.toAssignable(node.expression, isLHS); + return node; + + default: + return super.toAssignable(node, isLHS); + } + } + + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + node.expression = this.toAssignable(node.expression, isLHS); + return node; + + default: + return super.toAssignable(node, isLHS); + } + } + + checkLVal(expr, contextDescription, ...args) { + var _expr$extra2; + + switch (expr.type) { + case "TSTypeCastExpression": + return; + + case "TSParameterProperty": + this.checkLVal(expr.parameter, "parameter property", ...args); + return; + + case "TSAsExpression": + case "TSTypeAssertion": + if (!args[0] && contextDescription !== "parenthesized expression" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) { + this.raise(expr.start, ErrorMessages.InvalidLhs, contextDescription); + break; + } + + this.checkLVal(expr.expression, "parenthesized expression", ...args); + return; + + case "TSNonNullExpression": + this.checkLVal(expr.expression, contextDescription, ...args); + return; + + default: + super.checkLVal(expr, contextDescription, ...args); + return; + } + } + + parseBindingAtom() { + switch (this.state.type) { + case types$1._this: + return this.parseIdentifier(true); + + default: + return super.parseBindingAtom(); + } + } + + parseMaybeDecoratorArguments(expr) { + if (this.isRelational("<")) { + const typeArguments = this.tsParseTypeArguments(); + + if (this.match(types$1.parenL)) { + const call = super.parseMaybeDecoratorArguments(expr); + call.typeParameters = typeArguments; + return call; + } + + this.unexpected(this.state.start, types$1.parenL); + } + + return super.parseMaybeDecoratorArguments(expr); + } + + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(types$1.comma) && this.lookaheadCharCode() === close) { + this.next(); + } else { + super.checkCommaAfterRest(close); + } + } + + isClassMethod() { + return this.isRelational("<") || super.isClassMethod(); + } + + isClassProperty() { + return this.match(types$1.bang) || this.match(types$1.colon) || super.isClassProperty(); + } + + parseMaybeDefault(...args) { + const node = super.parseMaybeDefault(...args); + + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(node.typeAnnotation.start, TSErrors.TypeAnnotationAfterAssign); + } + + return node; + } + + getTokenFromCode(code) { + if (this.state.inType && (code === 62 || code === 60)) { + return this.finishOp(types$1.relational, 1); + } else { + return super.getTokenFromCode(code); + } + } + + reScan_lt_gt() { + if (this.match(types$1.relational)) { + const code = this.input.charCodeAt(this.state.start); + + if (code === 60 || code === 62) { + this.state.pos -= 1; + this.readToken_lt_gt(code); + } + } + } + + toAssignableList(exprList) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if (!expr) continue; + + switch (expr.type) { + case "TSTypeCastExpression": + exprList[i] = this.typeCastToParameter(expr); + break; + + case "TSAsExpression": + case "TSTypeAssertion": + if (!this.state.maybeInArrowParameters) { + exprList[i] = this.typeCastToParameter(expr); + } else { + this.raise(expr.start, TSErrors.UnexpectedTypeCastInParameter); + } + + break; + } + } + + return super.toAssignableList(...arguments); + } + + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end); + return node.expression; + } + + shouldParseArrow(params) { + if (this.match(types$1.colon)) { + return params.every(expr => this.isAssignable(expr, true)); + } + + return super.shouldParseArrow(params); + } + + shouldParseAsyncArrow() { + return this.match(types$1.colon) || super.shouldParseAsyncArrow(); + } + + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + + jsxParseOpeningElementAfterName(node) { + if (this.isRelational("<")) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments()); + if (typeArguments) node.typeParameters = typeArguments; + } + + return super.jsxParseOpeningElementAfterName(node); + } + + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + + return param; + } + + tsInAmbientContext(cb) { + const oldIsAmbientContext = this.state.isAmbientContext; + this.state.isAmbientContext = true; + + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + } + } + + parseClass(node, ...args) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + + try { + return super.parseClass(node, ...args); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + + tsParseAbstractDeclaration(node) { + if (this.match(types$1._class)) { + node.abstract = true; + return this.parseClass(node, true, false); + } else if (this.isContextual("interface")) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(node.start, TSErrors.NonClassMethodPropertyHasAbstractModifer); + this.next(); + return this.tsParseInterfaceDeclaration(node); + } + } else { + this.unexpected(null, types$1._class); + } + } + + parseMethod(...args) { + const method = super.parseMethod(...args); + + if (method.abstract) { + const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body; + + if (hasBody) { + const { + key + } = method; + this.raise(method.start, TSErrors.AbstractMethodHasImplementation, key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`); + } + } + + return method; + } + + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + + return super.parse(); + } + + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + + return super.getExpression(); + } + +}); + +types$1.placeholder = new TokenType("%%", { + startsExpr: true +}); +const PlaceHolderErrors = makeErrorTemplates({ + ClassNameIsRequired: "A class name is required." +}, ErrorCodes.SyntaxError); +var placeholders = (superClass => class extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(types$1.placeholder)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace("Unexpected space in placeholder."); + node.name = super.parseIdentifier(true); + this.assertNoSpace("Unexpected space in placeholder."); + this.expect(types$1.placeholder); + return this.finishPlaceholder(node, expectedNode); + } + } + + finishPlaceholder(node, expectedNode) { + const isFinished = !!(node.expectedNode && node.type === "Placeholder"); + node.expectedNode = expectedNode; + return isFinished ? node : this.finishNode(node, "Placeholder"); + } + + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + return this.finishOp(types$1.placeholder, 2); + } + + return super.getTokenFromCode(...arguments); + } + + parseExprAtom() { + return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments); + } + + parseIdentifier() { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments); + } + + checkReservedWord(word) { + if (word !== undefined) super.checkReservedWord(...arguments); + } + + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments); + } + + checkLVal(expr) { + if (expr.type !== "Placeholder") super.checkLVal(...arguments); + } + + toAssignable(node) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + return node; + } + + return super.toAssignable(...arguments); + } + + isLet(context) { + if (super.isLet(context)) { + return true; + } + + if (!this.isContextual("let")) { + return false; + } + + if (context) return false; + const nextToken = this.lookahead(); + + if (nextToken.type === types$1.placeholder) { + return true; + } + + return false; + } + + verifyBreakContinue(node) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(...arguments); + } + + parseExpressionStatement(node, expr) { + if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) { + return super.parseExpressionStatement(...arguments); + } + + if (this.match(types$1.colon)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = this.parseStatement("label"); + return this.finishNode(stmt, "LabeledStatement"); + } + + this.semicolon(); + node.name = expr.name; + return this.finishPlaceholder(node, "Statement"); + } + + parseBlock() { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments); + } + + parseFunctionId() { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments); + } + + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + this.takeDecorators(node); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + + if (placeholder) { + if (this.match(types$1._extends) || this.match(types$1.placeholder) || this.match(types$1.braceL)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + this.unexpected(null, PlaceHolderErrors.ClassNameIsRequired); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + + this.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + + parseExport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(...arguments); + + if (!this.isContextual("from") && !this.match(types$1.comma)) { + node.specifiers = []; + node.source = null; + node.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node, "ExportNamedDeclaration"); + } + + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node); + } + + isExportDefaultSpecifier() { + if (this.match(types$1._default)) { + const next = this.nextTokenStart(); + + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(types$1.placeholder.label, this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + + return super.isExportDefaultSpecifier(); + } + + maybeParseExportDefaultSpecifier(node) { + if (node.specifiers && node.specifiers.length > 0) { + return true; + } + + return super.maybeParseExportDefaultSpecifier(...arguments); + } + + checkExport(node) { + const { + specifiers + } = node; + + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + + super.checkExport(node); + node.specifiers = specifiers; + } + + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(...arguments); + node.specifiers = []; + + if (!this.isContextual("from") && !this.match(types$1.comma)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + this.finishNode(specifier, "ImportDefaultSpecifier"); + node.specifiers.push(specifier); + + if (this.eat(types$1.comma)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + + this.expectContextual("from"); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments); + } + +}); + +var v8intrinsic = (superClass => class extends superClass { + parseV8Intrinsic() { + if (this.match(types$1.modulo)) { + const v8IntrinsicStart = this.state.start; + const node = this.startNode(); + this.eat(types$1.modulo); + + if (this.match(types$1.name)) { + const name = this.parseIdentifierName(this.state.start); + const identifier = this.createIdentifier(node, name); + identifier.type = "V8IntrinsicIdentifier"; + + if (this.match(types$1.parenL)) { + return identifier; + } + } + + this.unexpected(v8IntrinsicStart); + } + } + + parseExprAtom() { + return this.parseV8Intrinsic() || super.parseExprAtom(...arguments); + } + +}); + +function hasPlugin(plugins, name) { + return plugins.some(plugin => { + if (Array.isArray(plugin)) { + return plugin[0] === name; + } else { + return plugin === name; + } + }); +} +function getPluginOption(plugins, name, option) { + const plugin = plugins.find(plugin => { + if (Array.isArray(plugin)) { + return plugin[0] === name; + } else { + return plugin === name; + } + }); + + if (plugin && Array.isArray(plugin)) { + return plugin[1][option]; + } + + return null; +} +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["%", "#"]; +const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; +function validatePlugins(plugins) { + if (hasPlugin(plugins, "decorators")) { + if (hasPlugin(plugins, "decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + + const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport"); + + if (decoratorsBeforeExport == null) { + throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option," + " whose value must be a boolean. If you are migrating from" + " Babylon/Babel 6 or want to use the old decorators proposal, you" + " should use the 'decorators-legacy' plugin instead of 'decorators'."); + } else if (typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean."); + } + } + + if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + + if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + + if (hasPlugin(plugins, "pipelineOperator")) { + const proposal = getPluginOption(plugins, "pipelineOperator", "proposal"); + + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + + const tupleSyntaxIsHash = hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") === "hash"; + + if (proposal === "hack") { + if (hasPlugin(plugins, "placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + + if (hasPlugin(plugins, "v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + + const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken"); + + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + + if (topicToken === "#" && tupleSyntaxIsHash) { + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + } else if (proposal === "smart" && tupleSyntaxIsHash) { + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + } + + if (hasPlugin(plugins, "moduleAttributes")) { + { + if (hasPlugin(plugins, "importAssertions")) { + throw new Error("Cannot combine importAssertions and moduleAttributes plugins."); + } + + const moduleAttributesVerionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); + + if (moduleAttributesVerionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + } + + if (hasPlugin(plugins, "recordAndTuple") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) { + throw new Error("'recordAndTuple' requires 'syntaxType' option whose value should be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + + if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); + +const defaultOptions = { + sourceType: "script", + sourceFilename: undefined, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true +}; +function getOptions(opts) { + const options = {}; + + for (const key of Object.keys(defaultOptions)) { + options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key]; + } + + return options; +} + +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; + +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + + let parenthesized = undefined; + + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordParenthesizedIdentifierError(node.start, ErrorMessages.InvalidParenthesizedAssignment); + } else if (parenthesized.type !== "MemberExpression") { + this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment); + } + } else { + this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment); + } + } + + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break; + + case "ObjectExpression": + node.type = "ObjectPattern"; + + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingComma) { + this.raiseRestNotLast(node.extra.trailingComma); + } + } + + break; + + case "ObjectProperty": + this.toAssignable(node.value, isLHS); + break; + + case "SpreadElement": + { + this.checkToRestConversion(node); + node.type = "RestElement"; + const arg = node.argument; + this.toAssignable(arg, isLHS); + break; + } + + case "ArrayExpression": + node.type = "ArrayPattern"; + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingComma, isLHS); + break; + + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(node.left.end, ErrorMessages.MissingEqInAssignment); + } + + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isLHS); + break; + + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + + return node; + } + + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + const error = prop.kind === "get" || prop.kind === "set" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod; + this.raise(prop.key.start, error); + } else if (prop.type === "SpreadElement" && !isLast) { + this.raiseRestNotLast(prop.start); + } else { + this.toAssignable(prop, isLHS); + } + } + + toAssignableList(exprList, trailingCommaPos, isLHS) { + let end = exprList.length; + + if (end) { + const last = exprList[end - 1]; + + if ((last == null ? void 0 : last.type) === "RestElement") { + --end; + } else if ((last == null ? void 0 : last.type) === "SpreadElement") { + last.type = "RestElement"; + let arg = last.argument; + this.toAssignable(arg, isLHS); + arg = unwrapParenthesizedExpression(arg); + + if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern" && arg.type !== "ObjectPattern") { + this.unexpected(arg.start); + } + + if (trailingCommaPos) { + this.raiseTrailingCommaAfterRest(trailingCommaPos); + } + + --end; + } + } + + for (let i = 0; i < end; i++) { + const elt = exprList[i]; + + if (elt) { + this.toAssignable(elt, isLHS); + + if (elt.type === "RestElement") { + this.raiseRestNotLast(elt.start); + } + } + } + + return exprList; + } + + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + return true; + + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + + case "ObjectProperty": + return this.isAssignable(node.value); + + case "SpreadElement": + return this.isAssignable(node.argument); + + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + + case "AssignmentExpression": + return node.operator === "="; + + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + + default: + return false; + } + } + + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + + parseSpread(refExpressionErrors, refNeedsArrowPos) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos); + return this.finishNode(node, "SpreadElement"); + } + + parseRestBinding() { + const node = this.startNode(); + this.next(); + node.argument = this.parseBindingAtom(); + return this.finishNode(node, "RestElement"); + } + + parseBindingAtom() { + switch (this.state.type) { + case types$1.bracketL: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types$1.bracketR, 93, true); + return this.finishNode(node, "ArrayPattern"); + } + + case types$1.braceL: + return this.parseObjectLike(types$1.braceR, true); + } + + return this.parseIdentifier(); + } + + parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) { + const elts = []; + let first = true; + + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(types$1.comma); + } + + if (allowEmpty && this.match(types$1.comma)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(types$1.ellipsis)) { + elts.push(this.parseAssignableListItemTypes(this.parseRestBinding())); + this.checkCommaAfterRest(closeCharCode); + this.expect(close); + break; + } else { + const decorators = []; + + if (this.match(types$1.at) && this.hasPlugin("decorators")) { + this.raise(this.state.start, ErrorMessages.UnsupportedParameterDecorator); + } + + while (this.match(types$1.at)) { + decorators.push(this.parseDecorator()); + } + + elts.push(this.parseAssignableListItem(allowModifiers, decorators)); + } + } + + return elts; + } + + parseAssignableListItem(allowModifiers, decorators) { + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left); + const elt = this.parseMaybeDefault(left.start, left.loc.start, left); + + if (decorators.length) { + left.decorators = decorators; + } + + return elt; + } + + parseAssignableListItemTypes(param) { + return param; + } + + parseMaybeDefault(startPos, startLoc, left) { + var _startLoc, _startPos, _left; + + startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc; + startPos = (_startPos = startPos) != null ? _startPos : this.state.start; + left = (_left = left) != null ? _left : this.parseBindingAtom(); + if (!this.eat(types$1.eq)) return left; + const node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + + checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) { + switch (expr.type) { + case "Identifier": + { + const { + name + } = expr; + + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) { + this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, name); + } + + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(expr.start, ErrorMessages.ParamDupe); + } else { + checkClashes.add(name); + } + } + + if (disallowLetBinding && name === "let") { + this.raise(expr.start, ErrorMessages.LetInLexicalBinding); + } + + if (!(bindingType & BIND_NONE)) { + this.scope.declareName(name, bindingType, expr.start); + } + + break; + } + + case "MemberExpression": + if (bindingType !== BIND_NONE) { + this.raise(expr.start, ErrorMessages.InvalidPropertyBindingPattern); + } + + break; + + case "ObjectPattern": + for (let prop of expr.properties) { + if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue; + this.checkLVal(prop, "object destructuring pattern", bindingType, checkClashes, disallowLetBinding); + } + + break; + + case "ArrayPattern": + for (const elem of expr.elements) { + if (elem) { + this.checkLVal(elem, "array destructuring pattern", bindingType, checkClashes, disallowLetBinding); + } + } + + break; + + case "AssignmentPattern": + this.checkLVal(expr.left, "assignment pattern", bindingType, checkClashes); + break; + + case "RestElement": + this.checkLVal(expr.argument, "rest element", bindingType, checkClashes); + break; + + case "ParenthesizedExpression": + this.checkLVal(expr.expression, "parenthesized expression", bindingType, checkClashes); + break; + + default: + { + this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, contextDescription); + } + } + } + + checkToRestConversion(node) { + if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") { + this.raise(node.argument.start, ErrorMessages.InvalidRestAssignmentPattern); + } + } + + checkCommaAfterRest(close) { + if (this.match(types$1.comma)) { + if (this.lookaheadCharCode() === close) { + this.raiseTrailingCommaAfterRest(this.state.start); + } else { + this.raiseRestNotLast(this.state.start); + } + } + } + + raiseRestNotLast(pos) { + throw this.raise(pos, ErrorMessages.ElementAfterRest); + } + + raiseTrailingCommaAfterRest(pos) { + this.raise(pos, ErrorMessages.RestTrailingComma); + } + +} + +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, protoRef, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return; + } + + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + + if (name === "__proto__") { + if (isRecord) { + this.raise(key.start, ErrorMessages.RecordNoProto); + return; + } + + if (protoRef.used) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProto === -1) { + refExpressionErrors.doubleProto = key.start; + } + } else { + this.raise(key.start, ErrorMessages.DuplicateProto); + } + } + + protoRef.used = true; + } + } + + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt; + } + + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + const expr = this.parseExpression(); + + if (!this.match(types$1.eof)) { + this.unexpected(); + } + + this.finalizeRemainingComments(); + expr.comments = this.state.comments; + expr.errors = this.state.errors; + + if (this.options.tokens) { + expr.tokens = this.tokens; + } + + return expr; + } + + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + + parseExpressionBase(refExpressionErrors) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + + if (this.match(types$1.comma)) { + const node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + + while (this.eat(types$1.comma)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + + return expr; + } + + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + + setOptionalParametersError(refExpressionErrors, resultError) { + var _resultError$pos; + + refExpressionErrors.optionalParameters = (_resultError$pos = resultError == null ? void 0 : resultError.pos) != null ? _resultError$pos : this.state.start; + } + + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + + if (this.isContextual("yield")) { + if (this.prodParam.hasYield) { + let left = this.parseYield(); + + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startPos, startLoc); + } + + return left; + } + } + + let ownExpressionErrors; + + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + + if (this.match(types$1.parenL) || this.match(types$1.name)) { + this.state.potentialArrowAt = this.state.start; + } + + let left = this.parseMaybeConditional(refExpressionErrors); + + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startPos, startLoc); + } + + if (this.state.type.isAssign) { + const node = this.startNodeAt(startPos, startLoc); + const operator = this.state.value; + node.operator = operator; + const leftIsHackPipeExpression = left.type === "BinaryExpression" && left.operator === "|>" && this.getPluginOption("pipelineOperator", "proposal") === "hack"; + + if (leftIsHackPipeExpression) { + throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, operator); + } + + if (this.match(types$1.eq)) { + node.left = this.toAssignable(left, true); + refExpressionErrors.doubleProto = -1; + } else { + node.left = left; + } + + if (refExpressionErrors.shorthandAssign >= node.left.start) { + refExpressionErrors.shorthandAssign = -1; + } + + this.checkLVal(left, "assignment expression"); + this.next(); + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentExpression"); + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + + return left; + } + + parseMaybeConditional(refExpressionErrors) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + + return this.parseConditional(expr, startPos, startLoc, refExpressionErrors); + } + + parseConditional(expr, startPos, startLoc, refExpressionErrors) { + if (this.eat(types$1.question)) { + const node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(types$1.colon); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + + return expr; + } + + parseExprOps(refExpressionErrors) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnary(refExpressionErrors); + + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + + return this.parseExprOp(expr, startPos, startLoc, -1); + } + + parseExprOp(left, leftStartPos, leftStartLoc, minPrec) { + let prec = this.state.type.binop; + + if (prec != null && (this.prodParam.hasIn || !this.match(types$1._in))) { + if (prec > minPrec) { + const op = this.state.type; + + if (op === types$1.pipeline) { + this.expectPlugin("pipelineOperator"); + + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + + this.checkPipelineAtInfixOperator(left, leftStartPos); + } + + const node = this.startNodeAt(leftStartPos, leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === types$1.logicalOR || op === types$1.logicalAND; + const coalesce = op === types$1.nullishCoalescing; + + if (coalesce) { + prec = types$1.logicalAND.binop; + } + + this.next(); + + if (op === types$1.pipeline && this.getPluginOption("pipelineOperator", "proposal") === "minimal") { + if (this.match(types$1.name) && this.state.value === "await" && this.prodParam.hasAwait) { + throw this.raise(this.state.start, ErrorMessages.UnexpectedAwaitAfterPipelineBody); + } + } + + node.right = this.parseExprOpRightExpr(op, prec); + this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + + if (coalesce && (nextOp === types$1.logicalOR || nextOp === types$1.logicalAND) || logical && nextOp === types$1.nullishCoalescing) { + throw this.raise(this.state.start, ErrorMessages.MixingCoalesceWithLogical); + } + + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec); + } + } + + return left; + } + + parseExprOpRightExpr(op, prec) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + + switch (op) { + case types$1.pipeline: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + const bodyExpr = this.parseHackPipeBody(op, prec); + this.checkHackPipeBodyEarlyErrors(startPos); + return bodyExpr; + }); + + case "smart": + return this.withTopicBindingContext(() => { + const childExpr = this.parseHackPipeBody(op, prec); + return this.parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc); + }); + + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + + parseExprOpBaseRightExpr(op, prec) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec); + } + + parseHackPipeBody(op, prec) { + const bodyIsInGeneratorContext = this.prodParam.hasYield; + const bodyIsYieldExpression = bodyIsInGeneratorContext && this.isContextual("yield"); + + if (bodyIsYieldExpression) { + throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, this.state.value); + } else { + return this.parseExprOpBaseRightExpr(op, prec); + } + } + + checkExponentialAfterUnary(node) { + if (this.match(types$1.exponent)) { + this.raise(node.argument.start, ErrorMessages.UnexpectedTokenUnaryExponentiation); + } + } + + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const isAwait = this.isContextual("await"); + + if (isAwait && this.isAwaitAllowed()) { + this.next(); + const expr = this.parseAwait(startPos, startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + + const update = this.match(types$1.incDec); + const node = this.startNode(); + + if (this.state.type.prefix) { + node.operator = this.state.value; + node.prefix = true; + + if (this.match(types$1._throw)) { + this.expectPlugin("throwExpressions"); + } + + const isDelete = this.match(types$1._delete); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + + if (this.state.strict && isDelete) { + const arg = node.argument; + + if (arg.type === "Identifier") { + this.raise(node.start, ErrorMessages.StrictDelete); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(node.start, ErrorMessages.DeletePrivateField); + } + } + + if (!update) { + if (!sawUnary) this.checkExponentialAfterUnary(node); + return this.finishNode(node, "UnaryExpression"); + } + } + + const expr = this.parseUpdate(node, update, refExpressionErrors); + + if (isAwait) { + const startsExpr = this.hasPlugin("v8intrinsic") ? this.state.type.startsExpr : this.state.type.startsExpr && !this.match(types$1.modulo); + + if (startsExpr && !this.isAmbiguousAwait()) { + this.raiseOverwrite(startPos, ErrorMessages.AwaitNotInAsyncContext); + return this.parseAwait(startPos, startLoc); + } + } + + return expr; + } + + parseUpdate(node, update, refExpressionErrors) { + if (update) { + this.checkLVal(node.argument, "prefix operation"); + return this.finishNode(node, "UpdateExpression"); + } + + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + + while (this.state.type.postfix && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startPos, startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.checkLVal(expr, "postfix operation"); + this.next(); + expr = this.finishNode(node, "UpdateExpression"); + } + + return expr; + } + + parseExprSubscripts(refExpressionErrors) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + + return this.parseSubscripts(expr, startPos, startLoc); + } + + parseSubscripts(base, startPos, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + + do { + base = this.parseSubscript(base, startPos, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + + return base; + } + + parseSubscript(base, startPos, startLoc, noCalls, state) { + if (!noCalls && this.eat(types$1.doubleColon)) { + return this.parseBind(base, startPos, startLoc, noCalls, state); + } else if (this.match(types$1.backQuote)) { + return this.parseTaggedTemplateExpression(base, startPos, startLoc, state); + } + + let optional = false; + + if (this.match(types$1.questionDot)) { + if (noCalls && this.lookaheadCharCode() === 40) { + state.stop = true; + return base; + } + + state.optionalChainMember = optional = true; + this.next(); + } + + if (!noCalls && this.match(types$1.parenL)) { + return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional); + } else if (optional || this.match(types$1.bracketL) || this.eat(types$1.dot)) { + return this.parseMember(base, startPos, startLoc, state, optional); + } else { + state.stop = true; + return base; + } + } + + parseMember(base, startPos, startLoc, state, optional) { + const node = this.startNodeAt(startPos, startLoc); + const computed = this.eat(types$1.bracketL); + node.object = base; + node.computed = computed; + const privateName = !computed && this.match(types$1.privateName) && this.state.value; + const property = computed ? this.parseExpression() : privateName ? this.parsePrivateName() : this.parseIdentifier(true); + + if (privateName !== false) { + if (node.object.type === "Super") { + this.raise(startPos, ErrorMessages.SuperPrivateField); + } + + this.classScope.usePrivateName(privateName, property.start); + } + + node.property = property; + + if (computed) { + this.expect(types$1.bracketR); + } + + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + + parseBind(base, startPos, startLoc, noCalls, state) { + const node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls); + } + + parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + let node = this.startNodeAt(startPos, startLoc); + node.callee = base; + + if (state.maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + + if (state.optionalChainMember) { + node.optional = optional; + } + + if (optional) { + node.arguments = this.parseCallExpressionArguments(types$1.parenR); + } else { + node.arguments = this.parseCallExpressionArguments(types$1.parenR, base.type === "Import", base.type !== "Super", node, refExpressionErrors); + } + + this.finishCallExpression(node, state.optionalChainMember); + + if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node); + } else { + if (state.maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + + this.toReferencedArguments(node); + } + + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + + parseTaggedTemplateExpression(base, startPos, startLoc, state) { + const node = this.startNodeAt(startPos, startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + + if (state.optionalChainMember) { + this.raise(startPos, ErrorMessages.OptionalChainingNoTemplate); + } + + return this.finishNode(node, "TaggedTemplateExpression"); + } + + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt; + } + + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 2) { + { + if (!this.hasPlugin("moduleAttributes")) { + this.expectPlugin("importAssertions"); + } + } + } + + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(node.start, ErrorMessages.ImportCallArity, this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? "one or two arguments" : "one argument"); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(arg.start, ErrorMessages.ImportCallSpreadArgument); + } + } + } + } + + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + + parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(types$1.comma); + + if (this.match(close)) { + if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { + this.raise(this.state.lastTokStart, ErrorMessages.ImportCallArgumentTrailingComma); + } + + if (nodeForExtra) { + this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart); + } + + this.next(); + break; + } + } + + elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder)); + } + + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + + shouldParseAsyncArrow() { + return this.match(types$1.arrow) && !this.canInsertSemicolon(); + } + + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + + this.resetPreviousNodeTrailingComments(call); + this.expect(types$1.arrow); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma); + setInnerComments(node, call.innerComments); + setInnerComments(node, call.callee.trailingComments); + return node; + } + + parseNoCallExpr() { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + } + + parseExprAtom(refExpressionErrors) { + let node; + + switch (this.state.type) { + case types$1._super: + return this.parseSuper(); + + case types$1._import: + node = this.startNode(); + this.next(); + + if (this.match(types$1.dot)) { + return this.parseImportMetaProperty(node); + } + + if (!this.match(types$1.parenL)) { + this.raise(this.state.lastTokStart, ErrorMessages.UnsupportedImport); + } + + return this.finishNode(node, "Import"); + + case types$1._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + + case types$1.name: + { + if (this.isContextual("module") && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) { + return this.parseModuleExpression(); + } + + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + if (this.match(types$1._function)) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseFunction(this.startNodeAtNode(id), undefined, true); + } else if (this.match(types$1.name)) { + if (this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (this.match(types$1._do)) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + + if (canBeArrow && this.match(types$1.arrow) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + + return id; + } + + case types$1._do: + { + return this.parseDo(this.startNode(), false); + } + + case types$1.slash: + case types$1.slashAssign: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + + case types$1.num: + return this.parseNumericLiteral(this.state.value); + + case types$1.bigint: + return this.parseBigIntLiteral(this.state.value); + + case types$1.decimal: + return this.parseDecimalLiteral(this.state.value); + + case types$1.string: + return this.parseStringLiteral(this.state.value); + + case types$1._null: + return this.parseNullLiteral(); + + case types$1._true: + return this.parseBooleanLiteral(true); + + case types$1._false: + return this.parseBooleanLiteral(false); + + case types$1.parenL: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + + case types$1.bracketBarL: + case types$1.bracketHashL: + { + return this.parseArrayLike(this.state.type === types$1.bracketBarL ? types$1.bracketBarR : types$1.bracketR, false, true, refExpressionErrors); + } + + case types$1.bracketL: + { + return this.parseArrayLike(types$1.bracketR, true, false, refExpressionErrors); + } + + case types$1.braceBarL: + case types$1.braceHashL: + { + return this.parseObjectLike(this.state.type === types$1.braceBarL ? types$1.braceBarR : types$1.braceR, false, true, refExpressionErrors); + } + + case types$1.braceL: + { + return this.parseObjectLike(types$1.braceR, false, false, refExpressionErrors); + } + + case types$1._function: + return this.parseFunctionOrFunctionSent(); + + case types$1.at: + this.parseDecorators(); + + case types$1._class: + node = this.startNode(); + this.takeDecorators(node); + return this.parseClass(node, false); + + case types$1._new: + return this.parseNewOrNewTarget(); + + case types$1.backQuote: + return this.parseTemplate(false); + + case types$1.doubleColon: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(callee.start, ErrorMessages.UnsupportedBind); + } + } + + case types$1.privateName: + { + const { + value, + start + } = this.state; + node = this.parsePrivateName(); + + if (this.match(types$1._in)) { + this.classScope.usePrivateName(value, start); + } else { + this.raise(start, ErrorMessages.PrivateInExpectedIn, value); + } + + return node; + } + + case types$1.moduloAssign: + if (this.getPluginOption("pipelineOperator", "proposal") === "hack" && this.getPluginOption("pipelineOperator", "topicToken") === "%") { + this.state.value = "%"; + this.state.type = types$1.modulo; + this.state.pos--; + this.state.end--; + this.state.endLoc.column--; + } else { + throw this.unexpected(); + } + + case types$1.modulo: + case types$1.hash: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + + if (pipeProposal) { + node = this.startNode(); + const start = this.state.start; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, start, pipeProposal, tokenType); + } + } + + case types$1.relational: + { + if (this.state.value === "<") { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + } + } + } + + default: + throw this.unexpected(); + } + } + + finishTopicReference(node, start, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, start, tokenType)) { + let nodeType; + + if (pipeProposal === "smart") { + nodeType = "PipelinePrimaryTopicReference"; + } else { + nodeType = "TopicReference"; + } + + if (!this.topicReferenceIsAllowedInCurrentContext()) { + if (pipeProposal === "smart") { + this.raise(start, ErrorMessages.PrimaryTopicNotAllowed); + } else { + this.raise(start, ErrorMessages.PipeTopicUnbound); + } + } + + this.registerTopicReference(); + return this.finishNode(node, nodeType); + } else { + throw this.raise(start, ErrorMessages.PipeTopicUnconfiguredToken, tokenType.label); + } + } + + testTopicReferenceConfiguration(pipeProposal, start, tokenType) { + switch (pipeProposal) { + case "hack": + { + const pluginTopicToken = this.getPluginOption("pipelineOperator", "topicToken"); + return tokenType.label === pluginTopicToken; + } + + case "smart": + return tokenType === types$1.hash; + + default: + throw this.raise(start, ErrorMessages.PipeTopicRequiresHackPipes); + } + } + + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + + if (this.hasPrecedingLineBreak()) { + this.raise(this.state.pos, ErrorMessages.LineTerminatorBeforeArrow); + } + + this.expect(types$1.arrow); + this.parseArrowExpression(node, params, true); + return node; + } + + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + + if (isAsync) { + this.prodParam.enter(PARAM_AWAIT); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + + parseSuper() { + const node = this.startNode(); + this.next(); + + if (this.match(types$1.parenL) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { + this.raise(node.start, ErrorMessages.SuperNotAllowed); + } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { + this.raise(node.start, ErrorMessages.UnexpectedSuper); + } + + if (!this.match(types$1.parenL) && !this.match(types$1.bracketL) && !this.match(types$1.dot)) { + this.raise(node.start, ErrorMessages.UnsupportedSuper); + } + + return this.finishNode(node, "Super"); + } + + parseMaybePrivateName(isPrivateNameAllowed) { + const isPrivate = this.match(types$1.privateName); + + if (isPrivate) { + if (!isPrivateNameAllowed) { + this.raise(this.state.start + 1, ErrorMessages.UnexpectedPrivateField); + } + + return this.parsePrivateName(); + } else { + return this.parseIdentifier(true); + } + } + + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + + if (this.prodParam.hasYield && this.match(types$1.dot)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + return this.parseMetaProperty(node, meta, "sent"); + } + + return this.parseFunction(node); + } + + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + + if (meta.name === "function" && propertyName === "sent") { + if (this.isContextual(propertyName)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + } + + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + + if (node.property.name !== propertyName || containsEsc) { + this.raise(node.property.start, ErrorMessages.UnsupportedMetaProperty, meta.name, propertyName); + } + + return this.finishNode(node, "MetaProperty"); + } + + parseImportMetaProperty(node) { + const id = this.createIdentifier(this.startNodeAtNode(node), "import"); + this.next(); + + if (this.isContextual("meta")) { + if (!this.inModule) { + this.raise(id.start, SourceTypeModuleErrorMessages.ImportMetaOutsideModule); + } + + this.sawUnambiguousESM = true; + } + + return this.parseMetaProperty(node, id, "meta"); + } + + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + + parseBigIntLiteral(value) { + return this.parseLiteral(value, "BigIntLiteral"); + } + + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + + parseRegExpLiteral(value) { + const node = this.parseLiteral(value.value, "RegExpLiteral"); + node.pattern = value.pattern; + node.flags = value.flags; + return node; + } + + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + + parseParenAndDistinguishExpression(canBeArrow) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartPos = this.state.start; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStart; + let optionalCommaStart; + + while (!this.match(types$1.parenR)) { + if (first) { + first = false; + } else { + this.expect(types$1.comma, refExpressionErrors.optionalParameters === -1 ? null : refExpressionErrors.optionalParameters); + + if (this.match(types$1.parenR)) { + optionalCommaStart = this.state.start; + break; + } + } + + if (this.match(types$1.ellipsis)) { + const spreadNodeStartPos = this.state.start; + const spreadNodeStartLoc = this.state.startLoc; + spreadStart = this.state.start; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc)); + this.checkCommaAfterRest(41); + break; + } else { + exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem)); + } + } + + const innerEndPos = this.state.lastTokEnd; + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(types$1.parenR); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startPos, startLoc); + + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + + this.expressionScope.exit(); + + if (!exprList.length) { + this.unexpected(this.state.lastTokStart); + } + + if (optionalCommaStart) this.unexpected(optionalCommaStart); + if (spreadStart) this.unexpected(spreadStart); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + val.end = innerEndPos; + val.loc.end = innerEndLoc; + } else { + val = exprList[0]; + } + + if (!this.options.createParenthesizedExpressions) { + this.addExtra(val, "parenthesized", true); + this.addExtra(val, "parenStart", startPos); + return val; + } + + const parenExpression = this.startNodeAt(startPos, startLoc); + parenExpression.expression = val; + this.finishNode(parenExpression, "ParenthesizedExpression"); + return parenExpression; + } + + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + + parseArrow(node) { + if (this.eat(types$1.arrow)) { + return node; + } + } + + parseParenItem(node, startPos, startLoc) { + return node; + } + + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + + if (this.match(types$1.dot)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + + if (!this.scope.inNonArrowFunction && !this.scope.inClass) { + this.raise(metaProp.start, ErrorMessages.UnexpectedNewTarget); + } + + return metaProp; + } + + return this.parseNew(node); + } + + parseNew(node) { + node.callee = this.parseNoCallExpr(); + + if (node.callee.type === "Import") { + this.raise(node.callee.start, ErrorMessages.ImportCallNotNewExpression); + } else if (this.isOptionalChain(node.callee)) { + this.raise(this.state.lastTokEnd, ErrorMessages.OptionalChainingNoNew); + } else if (this.eat(types$1.questionDot)) { + this.raise(this.state.start, ErrorMessages.OptionalChainingNoNew); + } + + this.parseNewArguments(node); + return this.finishNode(node, "NewExpression"); + } + + parseNewArguments(node) { + if (this.eat(types$1.parenL)) { + const args = this.parseExprList(types$1.parenR); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + } + + parseTemplateElement(isTagged) { + const elem = this.startNode(); + + if (this.state.value === null) { + if (!isTagged) { + this.raise(this.state.start + 1, ErrorMessages.InvalidEscapeSequenceTemplate); + } + } + + elem.value = { + raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"), + cooked: this.state.value + }; + this.next(); + elem.tail = this.match(types$1.backQuote); + return this.finishNode(elem, "TemplateElement"); + } + + parseTemplate(isTagged) { + const node = this.startNode(); + this.next(); + node.expressions = []; + let curElt = this.parseTemplateElement(isTagged); + node.quasis = [curElt]; + + while (!curElt.tail) { + this.expect(types$1.dollarBraceL); + node.expressions.push(this.parseTemplateSubstitution()); + this.expect(types$1.braceR); + node.quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + + this.next(); + return this.finishNode(node, "TemplateLiteral"); + } + + parseTemplateSubstitution() { + return this.parseExpression(); + } + + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const propHash = Object.create(null); + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(types$1.comma); + + if (this.match(close)) { + this.addExtra(node, "trailingComma", this.state.lastTokStart); + break; + } + } + + const prop = this.parsePropertyDefinition(isPattern, refExpressionErrors); + + if (!isPattern) { + this.checkProto(prop, isRecord, propHash, refExpressionErrors); + } + + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(prop.start, ErrorMessages.InvalidRecordProperty); + } + + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + + node.properties.push(prop); + } + + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + + return this.finishNode(node, type); + } + + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(types$1.bracketL) || this.match(types$1.star)); + } + + parsePropertyDefinition(isPattern, refExpressionErrors) { + let decorators = []; + + if (this.match(types$1.at)) { + if (this.hasPlugin("decorators")) { + this.raise(this.state.start, ErrorMessages.UnsupportedPropertyDecorator); + } + + while (this.match(types$1.at)) { + decorators.push(this.parseDecorator()); + } + } + + const prop = this.startNode(); + let isGenerator = false; + let isAsync = false; + let isAccessor = false; + let startPos; + let startLoc; + + if (this.match(types$1.ellipsis)) { + if (decorators.length) this.unexpected(); + + if (isPattern) { + this.next(); + prop.argument = this.parseIdentifier(); + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + + return this.parseSpread(); + } + + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + + prop.method = false; + + if (isPattern || refExpressionErrors) { + startPos = this.state.start; + startLoc = this.state.startLoc; + } + + if (!isPattern) { + isGenerator = this.eat(types$1.star); + } + + const containsEsc = this.state.containsEsc; + const key = this.parsePropertyName(prop, false); + + if (!isPattern && !isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const keyName = key.name; + + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(types$1.star); + this.parsePropertyName(prop, false); + } + + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + + if (this.match(types$1.star)) { + isGenerator = true; + this.raise(this.state.pos, ErrorMessages.AccessorIsGenerator, keyName); + this.next(); + } + + this.parsePropertyName(prop, false); + } + } + + this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + return prop; + } + + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + + getObjectOrClassMethodParams(method) { + return method.params; + } + + checkGetterSetterParams(method) { + var _params; + + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const start = method.start; + + if (params.length !== paramCount) { + if (method.kind === "get") { + this.raise(start, ErrorMessages.BadGetterArity); + } else { + this.raise(start, ErrorMessages.BadSetterArity); + } + } + + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(start, ErrorMessages.BadSetterRestParameter); + } + } + + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(prop); + return prop; + } + + if (isAsync || isGenerator || this.match(types$1.parenL)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + + parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + + if (this.eat(types$1.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors); + return this.finishNode(prop, "ObjectProperty"); + } + + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.start, true, false); + + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key)); + } else if (this.match(types$1.eq) && refExpressionErrors) { + if (refExpressionErrors.shorthandAssign === -1) { + refExpressionErrors.shorthandAssign = this.state.start; + } + + prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key)); + } else { + prop.value = cloneIdentifier(prop.key); + } + + prop.shorthand = true; + return this.finishNode(prop, "ObjectProperty"); + } + } + + parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + + parsePropertyName(prop, isPrivateNameAllowed) { + if (this.eat(types$1.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(types$1.bracketR); + } else { + const oldInPropertyName = this.state.inPropertyName; + this.state.inPropertyName = true; + const type = this.state.type; + prop.key = type === types$1.num || type === types$1.string || type === types$1.bigint || type === types$1.decimal ? this.parseExprAtom() : this.parseMaybePrivateName(isPrivateNameAllowed); + + if (type !== types$1.privateName) { + prop.computed = false; + } + + this.state.inPropertyName = oldInPropertyName; + } + + return prop.key; + } + + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = !!isAsync; + } + + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = !!isGenerator; + const allowModifiers = isConstructor; + this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, allowModifiers); + this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return node; + } + + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + + parseArrowExpression(node, params, isAsync, trailingCommaPos) { + this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); + let flags = functionFlags(isAsync, false); + + if (!this.match(types$1.bracketL) && this.prodParam.hasIn) { + flags |= PARAM_IN; + } + + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaPos); + } + + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + + setArrowFunctionParameters(node, params, trailingCommaPos) { + node.params = this.toAssignableList(params, trailingCommaPos, false); + } + + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + this.finishNode(node, type); + } + + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(types$1.braceL); + this.expressionScope.enter(newExpressionScope()); + + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + + if (hasStrictModeDirective && nonSimple) { + const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start; + this.raise(errorPos, ErrorMessages.IllegalLanguageModeDirective); + } + + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + + if (this.state.strict && node.id) { + this.checkLVal(node.id, "function name", BIND_OUTSIDE, undefined, undefined, strictModeChanged); + } + }); + this.prodParam.exit(); + this.expressionScope.exit(); + this.state.labels = oldLabels; + } + } + + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (params[i].type !== "Identifier") return false; + } + + return true; + } + + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = new Set(); + + for (const param of node.params) { + this.checkLVal(param, "function parameter list", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged); + } + } + + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(types$1.comma); + + if (this.match(close)) { + if (nodeForExtra) { + this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart); + } + + this.next(); + break; + } + } + + elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors)); + } + + return elts; + } + + parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + + if (this.match(types$1.comma)) { + if (!allowEmpty) { + this.raise(this.state.pos, ErrorMessages.UnexpectedToken, ","); + } + + elt = null; + } else if (this.match(types$1.ellipsis)) { + const spreadNodeStartPos = this.state.start; + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc); + } else if (this.match(types$1.question)) { + this.expectPlugin("partialApplication"); + + if (!allowPlaceholder) { + this.raise(this.state.start, ErrorMessages.UnexpectedArgumentPlaceholder); + } + + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem); + } + + return elt; + } + + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(node.start, liberal); + return this.createIdentifier(node, name); + } + + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + + parseIdentifierName(pos, liberal) { + let name; + const { + start, + type + } = this.state; + + if (type === types$1.name) { + name = this.state.value; + } else if (type.keyword) { + name = type.keyword; + } else { + throw this.unexpected(); + } + + if (liberal) { + this.state.type = types$1.name; + } else { + this.checkReservedWord(name, start, !!type.keyword, false); + } + + this.next(); + return name; + } + + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + + if (!canBeReservedWord(word)) { + return; + } + + if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(startLoc, ErrorMessages.YieldBindingIdentifier); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(startLoc, ErrorMessages.AwaitBindingIdentifier); + return; + } else if (this.scope.inStaticBlock) { + this.raise(startLoc, ErrorMessages.AwaitBindingIdentifierInStaticBlock); + return; + } else { + this.expressionScope.recordAsyncArrowParametersError(startLoc, ErrorMessages.AwaitBindingIdentifier); + } + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(startLoc, ErrorMessages.ArgumentsInClass); + return; + } + } + + if (checkKeywords && isKeyword(word)) { + this.raise(startLoc, ErrorMessages.UnexpectedKeyword, word); + return; + } + + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + + if (reservedTest(word, this.inModule)) { + this.raise(startLoc, ErrorMessages.UnexpectedReservedWord, word); + } + } + + isAwaitAllowed() { + if (this.prodParam.hasAwait) return true; + + if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) { + return true; + } + + return false; + } + + parseAwait(startPos, startLoc) { + const node = this.startNodeAt(startPos, startLoc); + this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.AwaitExpressionFormalParameter); + + if (this.eat(types$1.star)) { + this.raise(node.start, ErrorMessages.ObsoleteAwaitStar); + } + + if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) { + if (this.isAmbiguousAwait()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + + return this.finishNode(node, "AwaitExpression"); + } + + isAmbiguousAwait() { + return this.hasPrecedingLineBreak() || this.match(types$1.plusMin) || this.match(types$1.parenL) || this.match(types$1.bracketL) || this.match(types$1.backQuote) || this.match(types$1.regexp) || this.match(types$1.slash) || this.hasPlugin("v8intrinsic") && this.match(types$1.modulo); + } + + parseYield() { + const node = this.startNode(); + this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.YieldInParameter); + this.next(); + let delegating = false; + let argument = null; + + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(types$1.star); + + switch (this.state.type) { + case types$1.semi: + case types$1.eof: + case types$1.braceR: + case types$1.parenR: + case types$1.bracketR: + case types$1.braceBarR: + case types$1.colon: + case types$1.comma: + if (!delegating) break; + + default: + argument = this.parseMaybeAssign(); + } + } + + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + + checkPipelineAtInfixOperator(left, leftStartPos) { + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + if (left.type === "SequenceExpression") { + this.raise(leftStartPos, ErrorMessages.PipelineHeadSequenceExpression); + } + } + } + + checkHackPipeBodyEarlyErrors(startPos) { + if (this.match(types$1.arrow)) { + throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, types$1.arrow.label); + } else if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(startPos, ErrorMessages.PipeTopicUnused); + } + } + + parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) { + const bodyNode = this.startNodeAt(startPos, startLoc); + + if (this.isSimpleReference(childExpr)) { + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + this.checkSmartPipeTopicBodyEarlyErrors(startPos); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + + case "Identifier": + return true; + + default: + return false; + } + } + + checkSmartPipeTopicBodyEarlyErrors(startPos) { + if (this.match(types$1.arrow)) { + throw this.raise(this.state.start, ErrorMessages.PipelineBodyNoArrow); + } else if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(startPos, ErrorMessages.PipelineTopicUnused); + } + } + + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + + withSmartMixTopicForbiddingContext(callback) { + const proposal = this.getPluginOption("pipelineOperator", "proposal"); + + if (proposal === "smart") { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = PARAM_IN & ~flags; + + if (prodParamToSet) { + this.prodParam.enter(flags | PARAM_IN); + + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + + return callback(); + } + + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = PARAM_IN & flags; + + if (prodParamToClear) { + this.prodParam.enter(flags & ~PARAM_IN); + + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + + return callback(); + } + + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + + parseFSharpPipelineBody(prec) { + const startPos = this.state.start; + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + this.eat(types$1.braceL); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + const program = this.startNode(); + + try { + node.body = this.parseProgram(program, types$1.braceR, "module"); + } finally { + revertScopes(); + } + + this.eat(types$1.braceR); + return this.finishNode(node, "ModuleExpression"); + } + +} + +const loopLabel = { + kind: "loop" +}, + switchLabel = { + kind: "switch" +}; +const FUNC_NO_FLAGS = 0b000, + FUNC_STATEMENT = 0b001, + FUNC_HANGING_STATEMENT = 0b010, + FUNC_NULLABLE_ID = 0b100; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; + +function babel7CompatTokens(tokens) { + { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + + if (token.type === types$1.privateName) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = new Position(loc.start.line, loc.start.column + 1); + tokens.splice(i, 1, new Token({ + type: types$1.hash, + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: types$1.name, + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + } + } + } + return tokens; +} + +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program); + file.comments = this.state.comments; + if (this.options.tokens) file.tokens = babel7CompatTokens(this.tokens); + return this.finishNode(file, "File"); + } + + parseProgram(program, end = types$1.eof, sourceType = this.options.sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + + if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { + for (const [name] of Array.from(this.scope.undefinedExports)) { + const pos = this.scope.undefinedExports.get(name); + this.raise(pos, ErrorMessages.ModuleExportUndefined, name); + } + } + + return this.finishNode(program, "Program"); + } + + stmtToDirective(stmt) { + const directive = stmt; + directive.type = "Directive"; + directive.value = directive.expression; + delete directive.expression; + const directiveLiteral = directive.value; + const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + directiveLiteral.type = "DirectiveLiteral"; + return directive; + } + + parseInterpreterDirective() { + if (!this.match(types$1.interpreterDirective)) { + return null; + } + + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + + isLet(context) { + if (!this.isContextual("let")) { + return false; + } + + return this.isLetKeyword(context); + } + + isLetKeyword(context) { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + + if (nextCh === 92 || nextCh === 91) { + return true; + } + + if (context) return false; + if (nextCh === 123) return true; + + if (isIdentifierStart(nextCh)) { + keywordRelationalOperator.lastIndex = next; + + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + + return true; + } + + return false; + } + + parseStatement(context, topLevel) { + if (this.match(types$1.at)) { + this.parseDecorators(true); + } + + return this.parseStatementContent(context, topLevel); + } + + parseStatementContent(context, topLevel) { + let starttype = this.state.type; + const node = this.startNode(); + let kind; + + if (this.isLet(context)) { + starttype = types$1._var; + kind = "let"; + } + + switch (starttype) { + case types$1._break: + case types$1._continue: + return this.parseBreakContinueStatement(node, starttype.keyword); + + case types$1._debugger: + return this.parseDebuggerStatement(node); + + case types$1._do: + return this.parseDoStatement(node); + + case types$1._for: + return this.parseForStatement(node); + + case types$1._function: + if (this.lookaheadCharCode() === 46) break; + + if (context) { + if (this.state.strict) { + this.raise(this.state.start, ErrorMessages.StrictFunction); + } else if (context !== "if" && context !== "label") { + this.raise(this.state.start, ErrorMessages.SloppyFunction); + } + } + + return this.parseFunctionStatement(node, false, !context); + + case types$1._class: + if (context) this.unexpected(); + return this.parseClass(node, true); + + case types$1._if: + return this.parseIfStatement(node); + + case types$1._return: + return this.parseReturnStatement(node); + + case types$1._switch: + return this.parseSwitchStatement(node); + + case types$1._throw: + return this.parseThrowStatement(node); + + case types$1._try: + return this.parseTryStatement(node); + + case types$1._const: + case types$1._var: + kind = kind || this.state.value; + + if (context && kind !== "var") { + this.raise(this.state.start, ErrorMessages.UnexpectedLexicalDeclaration); + } + + return this.parseVarStatement(node, kind); + + case types$1._while: + return this.parseWhileStatement(node); + + case types$1._with: + return this.parseWithStatement(node); + + case types$1.braceL: + return this.parseBlock(); + + case types$1.semi: + return this.parseEmptyStatement(node); + + case types$1._import: + { + const nextTokenCharCode = this.lookaheadCharCode(); + + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + + case types$1._export: + { + if (!this.options.allowImportExportEverywhere && !topLevel) { + this.raise(this.state.start, ErrorMessages.UnexpectedImportExport); + } + + this.next(); + let result; + + if (starttype === types$1._import) { + result = this.parseImport(node); + + if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { + this.sawUnambiguousESM = true; + } + } else { + result = this.parseExport(node); + + if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { + this.sawUnambiguousESM = true; + } + } + + this.assertModuleNodeAllowed(node); + return result; + } + + default: + { + if (this.isAsyncFunction()) { + if (context) { + this.raise(this.state.start, ErrorMessages.AsyncFunctionInSingleStatementContext); + } + + this.next(); + return this.parseFunctionStatement(node, true, !context); + } + } + } + + const maybeName = this.state.value; + const expr = this.parseExpression(); + + if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) { + return this.parseLabeledStatement(node, maybeName, expr, context); + } else { + return this.parseExpressionStatement(node, expr); + } + } + + assertModuleNodeAllowed(node) { + if (!this.options.allowImportExportEverywhere && !this.inModule) { + this.raise(node.start, SourceTypeModuleErrorMessages.ImportOutsideModule); + } + } + + takeDecorators(node) { + const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + + if (decorators.length) { + node.decorators = decorators; + this.resetStartLocationFromNode(node, decorators[0]); + this.state.decoratorStack[this.state.decoratorStack.length - 1] = []; + } + } + + canHaveLeadingDecorator() { + return this.match(types$1._class); + } + + parseDecorators(allowExport) { + const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + + while (this.match(types$1.at)) { + const decorator = this.parseDecorator(); + currentContextDecorators.push(decorator); + } + + if (this.match(types$1._export)) { + if (!allowExport) { + this.unexpected(); + } + + if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) { + this.raise(this.state.start, ErrorMessages.DecoratorExportClass); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(this.state.start, ErrorMessages.UnexpectedLeadingDecorator); + } + } + + parseDecorator() { + this.expectOnePlugin(["decorators-legacy", "decorators"]); + const node = this.startNode(); + this.next(); + + if (this.hasPlugin("decorators")) { + this.state.decoratorStack.push([]); + const startPos = this.state.start; + const startLoc = this.state.startLoc; + let expr; + + if (this.eat(types$1.parenL)) { + expr = this.parseExpression(); + this.expect(types$1.parenR); + } else { + expr = this.parseIdentifier(false); + + while (this.eat(types$1.dot)) { + const node = this.startNodeAt(startPos, startLoc); + node.object = expr; + node.property = this.parseIdentifier(true); + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + } + + node.expression = this.parseMaybeDecoratorArguments(expr); + this.state.decoratorStack.pop(); + } else { + node.expression = this.parseExprSubscripts(); + } + + return this.finishNode(node, "Decorator"); + } + + parseMaybeDecoratorArguments(expr) { + if (this.eat(types$1.parenL)) { + const node = this.startNodeAtNode(expr); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + + return expr; + } + + parseBreakContinueStatement(node, keyword) { + const isBreak = keyword === "break"; + this.next(); + + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + + this.verifyBreakContinue(node, keyword); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + + verifyBreakContinue(node, keyword) { + const isBreak = keyword === "break"; + let i; + + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) break; + if (node.label && isBreak) break; + } + } + + if (i === this.state.labels.length) { + this.raise(node.start, ErrorMessages.IllegalBreakContinue, keyword); + } + } + + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + + parseHeaderExpression() { + this.expect(types$1.parenL); + const val = this.parseExpression(); + this.expect(types$1.parenR); + return val; + } + + parseDoStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("do")); + this.state.labels.pop(); + this.expect(types$1._while); + node.test = this.parseHeaderExpression(); + this.eat(types$1.semi); + return this.finishNode(node, "DoWhileStatement"); + } + + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = -1; + + if (this.isAwaitAllowed() && this.eatContextual("await")) { + awaitAt = this.state.lastTokStart; + } + + this.scope.enter(SCOPE_OTHER); + this.expect(types$1.parenL); + + if (this.match(types$1.semi)) { + if (awaitAt > -1) { + this.unexpected(awaitAt); + } + + return this.parseFor(node, null); + } + + const startsWithLet = this.isContextual("let"); + const isLet = startsWithLet && this.isLetKeyword(); + + if (this.match(types$1._var) || this.match(types$1._const) || isLet) { + const init = this.startNode(); + const kind = isLet ? "let" : this.state.value; + this.next(); + this.parseVar(init, true, kind); + this.finishNode(init, "VariableDeclaration"); + + if ((this.match(types$1._in) || this.isContextual("of")) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + + if (awaitAt > -1) { + this.unexpected(awaitAt); + } + + return this.parseFor(node, init); + } + + const startsWithUnescapedName = this.match(types$1.name) && !this.state.containsEsc; + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual("of"); + + if (isForOf) { + if (startsWithLet) { + this.raise(init.start, ErrorMessages.ForOfLet); + } else if (awaitAt === -1 && startsWithUnescapedName && init.type === "Identifier" && init.name === "async") { + this.raise(init.start, ErrorMessages.ForOfAsync); + } + } + + if (isForOf || this.match(types$1._in)) { + this.toAssignable(init, true); + const description = isForOf ? "for-of statement" : "for-in statement"; + this.checkLVal(init, description); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + + if (awaitAt > -1) { + this.unexpected(awaitAt); + } + + return this.parseFor(node, init); + } + + parseFunctionStatement(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync); + } + + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement"); + } + + parseReturnStatement(node) { + if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { + this.raise(this.state.start, ErrorMessages.IllegalReturn); + } + + this.next(); + + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + + return this.finishNode(node, "ReturnStatement"); + } + + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(types$1.braceL); + this.state.labels.push(switchLabel); + this.scope.enter(SCOPE_OTHER); + let cur; + + for (let sawDefault; !this.match(types$1.braceR);) { + if (this.match(types$1._case) || this.match(types$1._default)) { + const isCase = this.match(types$1._case); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(this.state.lastTokStart, ErrorMessages.MultipleDefaultsInSwitch); + } + + sawDefault = true; + cur.test = null; + } + + this.expect(types$1.colon); + } else { + if (cur) { + cur.consequent.push(this.parseStatement(null)); + } else { + this.unexpected(); + } + } + } + + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + + parseThrowStatement(node) { + this.next(); + + if (this.hasPrecedingLineBreak()) { + this.raise(this.state.lastTokEnd, ErrorMessages.NewlineAfterThrow); + } + + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + const simple = param.type === "Identifier"; + this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLVal(param, "catch clause", BIND_LEXICAL); + return param; + } + + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + + if (this.match(types$1._catch)) { + const clause = this.startNode(); + this.next(); + + if (this.match(types$1.parenL)) { + this.expect(types$1.parenL); + clause.param = this.parseCatchClauseParam(); + this.expect(types$1.parenR); + } else { + clause.param = null; + this.scope.enter(SCOPE_OTHER); + } + + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + + node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; + + if (!node.handler && !node.finalizer) { + this.raise(node.start, ErrorMessages.NoCatchOrFinally); + } + + return this.finishNode(node, "TryStatement"); + } + + parseVarStatement(node, kind) { + this.next(); + this.parseVar(node, false, kind); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("while")); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + + parseWithStatement(node) { + if (this.state.strict) { + this.raise(this.state.start, ErrorMessages.StrictWith); + } + + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("with")); + return this.finishNode(node, "WithStatement"); + } + + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + + parseLabeledStatement(node, maybeName, expr, context) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(expr.start, ErrorMessages.LabelRedeclaration, maybeName); + } + } + + const kind = this.state.type.isLoop ? "loop" : this.match(types$1._switch) ? "switch" : null; + + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + + if (label.statementStart === node.start) { + label.statementStart = this.state.start; + label.kind = kind; + } else { + break; + } + } + + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.state.start + }); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + + parseExpressionStatement(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + + if (allowDirectives) { + this.state.strictErrors.clear(); + } + + this.expect(types$1.braceL); + + if (createNewLexicalScope) { + this.scope.enter(SCOPE_OTHER); + } + + this.parseBlockBody(node, allowDirectives, false, types$1.braceR, afterBlockParse); + + if (createNewLexicalScope) { + this.scope.exit(); + } + + return this.finishNode(node, "BlockStatement"); + } + + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + + while (!this.match(end)) { + const stmt = this.parseStatement(null, topLevel); + + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + + continue; + } + + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + + body.push(stmt); + } + + if (afterBlockParse) { + afterBlockParse.call(this, hasStrictModeDirective); + } + + if (!oldStrict) { + this.setStrict(false); + } + + this.next(); + } + + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(types$1.semi) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(types$1.parenR) ? null : this.parseExpression(); + this.expect(types$1.parenR); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for")); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + + parseForIn(node, init, awaitAt) { + const isForIn = this.match(types$1._in); + this.next(); + + if (isForIn) { + if (awaitAt > -1) this.unexpected(awaitAt); + } else { + node.await = awaitAt > -1; + } + + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(init.start, ErrorMessages.ForInOfLoopInitializer, isForIn ? "for-in" : "for-of"); + } else if (init.type === "AssignmentPattern") { + this.raise(init.start, ErrorMessages.InvalidLhs, "for-loop"); + } + + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(types$1.parenR); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for")); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + + parseVar(node, isFor, kind) { + const declarations = node.declarations = []; + const isTypescript = this.hasPlugin("typescript"); + node.kind = kind; + + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + + if (this.eat(types$1.eq)) { + decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + } else { + if (kind === "const" && !(this.match(types$1._in) || this.isContextual("of"))) { + if (!isTypescript) { + this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Const declarations"); + } + } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(types$1._in) || this.isContextual("of")))) { + this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Complex binding patterns"); + } + + decl.init = null; + } + + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types$1.comma)) break; + } + + return node; + } + + parseVarId(decl, kind) { + decl.id = this.parseBindingAtom(); + this.checkLVal(decl.id, "variable declaration", kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== "var"); + } + + parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) { + const isStatement = statement & FUNC_STATEMENT; + const isHangingStatement = statement & FUNC_HANGING_STATEMENT; + const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID); + this.initFunction(node, isAsync); + + if (this.match(types$1.star) && isHangingStatement) { + this.raise(this.state.start, ErrorMessages.GeneratorInSingleStatementContext); + } + + node.generator = this.eat(types$1.star); + + if (isStatement) { + node.id = this.parseFunctionId(requireId); + } + + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(SCOPE_FUNCTION); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + + if (!isStatement) { + node.id = this.parseFunctionId(); + } + + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + + if (isStatement && !isHangingStatement) { + this.registerFunctionStatementId(node); + } + + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + + parseFunctionId(requireId) { + return requireId || this.match(types$1.name) ? this.parseIdentifier() : null; + } + + parseFunctionParams(node, allowModifiers) { + this.expect(types$1.parenL); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(types$1.parenR, 41, false, allowModifiers); + this.expressionScope.exit(); + } + + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.start); + } + + parseClass(node, isStatement, optionalId) { + this.next(); + this.takeDecorators(node); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + + isClassProperty() { + return this.match(types$1.eq) || this.match(types$1.semi) || this.match(types$1.braceR); + } + + isClassMethod() { + return this.match(types$1.parenL); + } + + isNonstaticConstructor(method) { + return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor"); + } + + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(types$1.braceL); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(types$1.braceR)) { + if (this.eat(types$1.semi)) { + if (decorators.length > 0) { + throw this.raise(this.state.lastTokEnd, ErrorMessages.DecoratorSemicolon); + } + + continue; + } + + if (this.match(types$1.at)) { + decorators.push(this.parseDecorator()); + continue; + } + + const member = this.startNode(); + + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + + this.parseClassMember(classBody, member, state); + + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(member.start, ErrorMessages.DecoratorConstructor); + } + } + }); + this.state.strict = oldStrict; + this.next(); + + if (decorators.length) { + throw this.raise(this.state.start, ErrorMessages.TrailingDecorator); + } + + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + + this.resetPreviousNodeTrailingComments(key); + return false; + } + + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual("static"); + + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + + if (this.eat(types$1.braceL)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + + if (this.eat(types$1.star)) { + method.kind = "method"; + const isPrivateName = this.match(types$1.privateName); + this.parseClassElementName(method); + + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsGenerator); + } + + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + + const isContextual = this.match(types$1.name) && !this.state.containsEsc; + const isPrivate = this.match(types$1.privateName); + const key = this.parseClassElementName(member); + const maybeQuestionTokenStart = this.state.start; + this.parsePostMemberNameModifiers(publicMember); + + if (this.isClassMethod()) { + method.kind = "method"; + + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + + if (isConstructor) { + publicMethod.kind = "constructor"; + + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(key.start, ErrorMessages.DuplicateConstructor); + } + + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(key.start, ErrorMessages.OverrideOnConstructor); + } + + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (isContextual && key.name === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(types$1.star); + + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStart); + } + + method.kind = "method"; + const isPrivate = this.match(types$1.privateName); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAsync); + } + + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(types$1.star) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = key.name; + const isPrivate = this.match(types$1.privateName); + this.parseClassElementName(publicMethod); + + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAccessor); + } + + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + + this.checkGetterSetterParams(publicMethod); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + + parseClassElementName(member) { + const { + type, + value, + start + } = this.state; + + if ((type === types$1.name || type === types$1.string) && member.static && value === "prototype") { + this.raise(start, ErrorMessages.StaticPrototype); + } + + if (type === types$1.privateName && value === "constructor") { + this.raise(start, ErrorMessages.ConstructorClassPrivateField); + } + + return this.parsePropertyName(member, true); + } + + parseClassStaticBlock(classBody, member) { + var _member$decorators; + + this.expectPlugin("classStaticBlock", member.start); + this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(PARAM); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, types$1.braceR); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(member.start, ErrorMessages.DecoratorStaticBlock); + } + } + + pushClassProperty(classBody, prop) { + if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) { + this.raise(prop.key.start, ErrorMessages.ConstructorClassField); + } + + classBody.body.push(this.parseClassProperty(prop)); + } + + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.start); + } + + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER; + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.start); + } + + parsePostMemberNameModifiers(methodOrProp) {} + + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + + parseInitializer(node) { + this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(PARAM); + node.value = this.eat(types$1.eq) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + + parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) { + if (this.match(types$1.name)) { + node.id = this.parseIdentifier(); + + if (isStatement) { + this.checkLVal(node.id, "class name", bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + this.unexpected(null, ErrorMessages.MissingClassName); + } + } + } + + parseClassSuper(node) { + node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts() : null; + } + + parseExport(node) { + const hasDefault = this.maybeParseExportDefaultSpecifier(node); + const parseAfterDefault = !hasDefault || this.eat(types$1.comma); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(types$1.comma)); + const isFromRequired = hasDefault || hasStar; + + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + this.parseExportFrom(node, true); + return this.finishNode(node, "ExportAllDeclaration"); + } + + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) { + throw this.unexpected(null, types$1.braceL); + } + + let hasDeclaration; + + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + + if (isFromRequired || hasSpecifiers || hasDeclaration) { + this.checkExport(node, true, false, !!node.source); + return this.finishNode(node, "ExportNamedDeclaration"); + } + + if (this.eat(types$1._default)) { + node.declaration = this.parseExportDefaultExpression(); + this.checkExport(node, true, true); + return this.finishNode(node, "ExportDefaultDeclaration"); + } + + throw this.unexpected(null, types$1.braceL); + } + + eatExportStar(node) { + return this.eat(types$1.star); + } + + maybeParseExportDefaultSpecifier(node) { + if (this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = this.parseIdentifier(true); + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + + return false; + } + + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual("as")) { + if (!node.specifiers) node.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + + return false; + } + + maybeParseExportNamedSpecifiers(node) { + if (this.match(types$1.braceL)) { + if (!node.specifiers) node.specifiers = []; + node.specifiers.push(...this.parseExportSpecifiers()); + node.source = null; + node.declaration = null; + return true; + } + + return false; + } + + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + node.declaration = this.parseExportDeclaration(node); + return true; + } + + return false; + } + + isAsyncFunction() { + if (!this.isContextual("async")) return false; + const next = this.nextTokenStart(); + return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, "function"); + } + + parseExportDefaultExpression() { + const expr = this.startNode(); + const isAsync = this.isAsyncFunction(); + + if (this.match(types$1._function) || isAsync) { + this.next(); + + if (isAsync) { + this.next(); + } + + return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync); + } else if (this.match(types$1._class)) { + return this.parseClass(expr, true, true); + } else if (this.match(types$1.at)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) { + this.raise(this.state.start, ErrorMessages.DecoratorBeforeExport); + } + + this.parseDecorators(false); + return this.parseClass(expr, true, true); + } else if (this.match(types$1._const) || this.match(types$1._var) || this.isLet()) { + throw this.raise(this.state.start, ErrorMessages.UnsupportedDefaultExport); + } else { + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + } + + parseExportDeclaration(node) { + return this.parseStatement(null); + } + + isExportDefaultSpecifier() { + if (this.match(types$1.name)) { + const value = this.state.value; + + if (value === "async" && !this.state.containsEsc || value === "let") { + return false; + } + + if ((value === "type" || value === "interface") && !this.state.containsEsc) { + const l = this.lookahead(); + + if (l.type === types$1.name && l.value !== "from" || l.type === types$1.braceL) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(types$1._default)) { + return false; + } + + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + + if (this.input.charCodeAt(next) === 44 || this.match(types$1.name) && hasFrom) { + return true; + } + + if (this.match(types$1._default) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + + return false; + } + + parseExportFrom(node, expect) { + if (this.eatContextual("from")) { + node.source = this.parseImportSource(); + this.checkExport(node); + const assertions = this.maybeParseImportAssertions(); + + if (assertions) { + node.assertions = assertions; + } + } else { + if (expect) { + this.unexpected(); + } else { + node.source = null; + } + } + + this.semicolon(); + } + + shouldParseExportDeclaration() { + if (this.match(types$1.at)) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport")) { + this.unexpected(this.state.start, ErrorMessages.DecoratorBeforeExport); + } else { + return true; + } + } + } + + return this.state.type.keyword === "var" || this.state.type.keyword === "const" || this.state.type.keyword === "function" || this.state.type.keyword === "class" || this.isLet() || this.isAsyncFunction(); + } + + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + if (isDefault) { + this.checkDuplicateExports(node, "default"); + + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + + const declaration = node.declaration; + + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(declaration.start, ErrorMessages.ExportDefaultFromAsIdentifier); + } + } + } else if (node.specifiers && node.specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportedName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportedName); + + if (!isFrom && specifier.local) { + const { + local + } = specifier; + + if (local.type !== "Identifier") { + this.raise(specifier.start, ErrorMessages.ExportBindingIsString, local.value, exportedName); + } else { + this.checkReservedWord(local.name, local.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") { + const id = node.declaration.id; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (node.declaration.type === "VariableDeclaration") { + for (const declaration of node.declaration.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + + const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; + + if (currentContextDecorators.length) { + throw this.raise(node.start, ErrorMessages.UnsupportedDecoratorExport); + } + } + + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + + checkDuplicateExports(node, name) { + if (this.exportedIdentifiers.has(name)) { + this.raise(node.start, name === "default" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, name); + } + + this.exportedIdentifiers.add(name); + } + + parseExportSpecifiers() { + const nodes = []; + let first = true; + this.expect(types$1.braceL); + + while (!this.eat(types$1.braceR)) { + if (first) { + first = false; + } else { + this.expect(types$1.comma); + if (this.eat(types$1.braceR)) break; + } + + const node = this.startNode(); + const isString = this.match(types$1.string); + const local = this.parseModuleExportName(); + node.local = local; + + if (this.eatContextual("as")) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = cloneStringLiteral(local); + } else { + node.exported = cloneIdentifier(local); + } + + nodes.push(this.finishNode(node, "ExportSpecifier")); + } + + return nodes; + } + + parseModuleExportName() { + if (this.match(types$1.string)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = result.value.match(loneSurrogate); + + if (surrogate) { + this.raise(result.start, ErrorMessages.ModuleExportNameHasLoneSurrogate, surrogate[0].charCodeAt(0).toString(16)); + } + + return result; + } + + return this.parseIdentifier(true); + } + + parseImport(node) { + node.specifiers = []; + + if (!this.match(types$1.string)) { + const hasDefault = this.maybeParseDefaultImportSpecifier(node); + const parseNext = !hasDefault || this.eat(types$1.comma); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual("from"); + } + + node.source = this.parseImportSource(); + const assertions = this.maybeParseImportAssertions(); + + if (assertions) { + node.assertions = assertions; + } else { + const attributes = this.maybeParseModuleAttributes(); + + if (attributes) { + node.attributes = attributes; + } + } + + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + + parseImportSource() { + if (!this.match(types$1.string)) this.unexpected(); + return this.parseExprAtom(); + } + + shouldParseDefaultImport(node) { + return this.match(types$1.name); + } + + parseImportSpecifierLocal(node, specifier, type, contextDescription) { + specifier.local = this.parseIdentifier(); + this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL); + node.specifiers.push(this.finishNode(specifier, type)); + } + + parseAssertEntries() { + const attrs = []; + const attrNames = new Set(); + + do { + if (this.match(types$1.braceR)) { + break; + } + + const node = this.startNode(); + const keyName = this.state.value; + + if (attrNames.has(keyName)) { + this.raise(this.state.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, keyName); + } + + attrNames.add(keyName); + + if (this.match(types$1.string)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + + this.expect(types$1.colon); + + if (!this.match(types$1.string)) { + throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue); + } + + node.value = this.parseStringLiteral(this.state.value); + this.finishNode(node, "ImportAttribute"); + attrs.push(node); + } while (this.eat(types$1.comma)); + + return attrs; + } + + maybeParseModuleAttributes() { + if (this.match(types$1._with) && !this.hasPrecedingLineBreak()) { + this.expectPlugin("moduleAttributes"); + this.next(); + } else { + if (this.hasPlugin("moduleAttributes")) return []; + return null; + } + + const attrs = []; + const attributes = new Set(); + + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + + if (node.key.name !== "type") { + this.raise(node.key.start, ErrorMessages.ModuleAttributeDifferentFromType, node.key.name); + } + + if (attributes.has(node.key.name)) { + this.raise(node.key.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, node.key.name); + } + + attributes.add(node.key.name); + this.expect(types$1.colon); + + if (!this.match(types$1.string)) { + throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue); + } + + node.value = this.parseStringLiteral(this.state.value); + this.finishNode(node, "ImportAttribute"); + attrs.push(node); + } while (this.eat(types$1.comma)); + + return attrs; + } + + maybeParseImportAssertions() { + if (this.isContextual("assert") && !this.hasPrecedingLineBreak()) { + this.expectPlugin("importAssertions"); + this.next(); + } else { + if (this.hasPlugin("importAssertions")) return []; + return null; + } + + this.eat(types$1.braceL); + const attrs = this.parseAssertEntries(); + this.eat(types$1.braceR); + return attrs; + } + + maybeParseDefaultImportSpecifier(node) { + if (this.shouldParseDefaultImport(node)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier"); + return true; + } + + return false; + } + + maybeParseStarImportSpecifier(node) { + if (this.match(types$1.star)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual("as"); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier"); + return true; + } + + return false; + } + + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(types$1.braceL); + + while (!this.eat(types$1.braceR)) { + if (first) { + first = false; + } else { + if (this.eat(types$1.colon)) { + throw this.raise(this.state.start, ErrorMessages.DestructureNamedImport); + } + + this.expect(types$1.comma); + if (this.eat(types$1.braceR)) break; + } + + this.parseImportSpecifier(node); + } + } + + parseImportSpecifier(node) { + const specifier = this.startNode(); + const importedIsString = this.match(types$1.string); + specifier.imported = this.parseModuleExportName(); + + if (this.eatContextual("as")) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + + if (importedIsString) { + throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, imported.value); + } + + this.checkReservedWord(imported.name, specifier.start, true, true); + specifier.local = cloneIdentifier(imported); + } + + this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL); + node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); + } + + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } + +} + +class Parser extends StatementParser { + constructor(options, input) { + options = getOptions(options); + super(options, input); + this.options = options; + this.initializeScopes(); + this.plugins = pluginsMap(this.options.plugins); + this.filename = options.sourceFilename; + } + + getScopeHandler() { + return ScopeHandler; + } + + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + this.parseTopLevel(file, program); + file.errors = this.state.errors; + return file; + } + +} + +function pluginsMap(plugins) { + const pluginMap = new Map(); + + for (const plugin of plugins) { + const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}]; + if (!pluginMap.has(name)) pluginMap.set(name, options || {}); + } + + return pluginMap; +} + +function parse(input, options) { + var _options; + + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + + if (parser.sawUnambiguousESM) { + return ast; + } + + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + + if (parser.options.strictMode) { + parser.state.strict = true; + } + + return parser.getExpression(); +} + +function getParser(options, input) { + let cls = Parser; + + if (options != null && options.plugins) { + validatePlugins(options.plugins); + cls = getParserClass(options.plugins); + } + + return new cls(options, input); +} + +const parserClassCache = {}; + +function getParserClass(pluginsFromOptions) { + const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name)); + const key = pluginList.join("/"); + let cls = parserClassCache[key]; + + if (!cls) { + cls = Parser; + + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + + parserClassCache[key] = cls; + } + + return cls; +} + +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = types$1; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 56309: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _helperPluginUtils = __nccwpck_require__(29055); + +var _pluginSyntaxObjectRestSpread = _interopRequireDefault(__nccwpck_require__(84499)); + +var _core = __nccwpck_require__(92092); + +var _pluginTransformParameters = __nccwpck_require__(23714); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const ZERO_REFS = (() => { + const node = _core.types.identifier("a"); + + const property = _core.types.objectProperty(_core.types.identifier("key"), node); + + const pattern = _core.types.objectPattern([property]); + + return _core.types.isReferenced(node, property, pattern) ? 1 : 0; +})(); + +var _default = (0, _helperPluginUtils.declare)((api, opts) => { + api.assertVersion(7); + const { + useBuiltIns = false, + loose = false + } = opts; + + if (typeof loose !== "boolean") { + throw new Error(".loose must be a boolean, or undefined"); + } + + function getExtendsHelper(file) { + return useBuiltIns ? _core.types.memberExpression(_core.types.identifier("Object"), _core.types.identifier("assign")) : file.addHelper("extends"); + } + + function hasRestElement(path) { + let foundRestElement = false; + visitRestElements(path, restElement => { + foundRestElement = true; + restElement.stop(); + }); + return foundRestElement; + } + + function hasObjectPatternRestElement(path) { + let foundRestElement = false; + visitRestElements(path, restElement => { + if (restElement.parentPath.isObjectPattern()) { + foundRestElement = true; + restElement.stop(); + } + }); + return foundRestElement; + } + + function visitRestElements(path, visitor) { + path.traverse({ + Expression(path) { + const parentType = path.parent.type; + + if (parentType === "AssignmentPattern" && path.key === "right" || parentType === "ObjectProperty" && path.parent.computed && path.key === "key") { + path.skip(); + } + }, + + RestElement: visitor + }); + } + + function hasSpread(node) { + for (const prop of node.properties) { + if (_core.types.isSpreadElement(prop)) { + return true; + } + } + + return false; + } + + function extractNormalizedKeys(path) { + const props = path.node.properties; + const keys = []; + let allLiteral = true; + + for (const prop of props) { + if (_core.types.isIdentifier(prop.key) && !prop.computed) { + keys.push(_core.types.stringLiteral(prop.key.name)); + } else if (_core.types.isTemplateLiteral(prop.key)) { + keys.push(_core.types.cloneNode(prop.key)); + } else if (_core.types.isLiteral(prop.key)) { + keys.push(_core.types.stringLiteral(String(prop.key.value))); + } else { + keys.push(_core.types.cloneNode(prop.key)); + allLiteral = false; + } + } + + return { + keys, + allLiteral + }; + } + + function replaceImpureComputedKeys(properties, scope) { + const impureComputedPropertyDeclarators = []; + + for (const propPath of properties) { + const key = propPath.get("key"); + + if (propPath.node.computed && !key.isPure()) { + const name = scope.generateUidBasedOnNode(key.node); + + const declarator = _core.types.variableDeclarator(_core.types.identifier(name), key.node); + + impureComputedPropertyDeclarators.push(declarator); + key.replaceWith(_core.types.identifier(name)); + } + } + + return impureComputedPropertyDeclarators; + } + + function removeUnusedExcludedKeys(path) { + const bindings = path.getOuterBindingIdentifierPaths(); + Object.keys(bindings).forEach(bindingName => { + const bindingParentPath = bindings[bindingName].parentPath; + + if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) { + return; + } + + bindingParentPath.remove(); + }); + } + + function createObjectSpread(path, file, objRef) { + const props = path.get("properties"); + const last = props[props.length - 1]; + + _core.types.assertRestElement(last.node); + + const restElement = _core.types.cloneNode(last.node); + + last.remove(); + const impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope); + const { + keys, + allLiteral + } = extractNormalizedKeys(path); + + if (keys.length === 0) { + return [impureComputedPropertyDeclarators, restElement.argument, _core.types.callExpression(getExtendsHelper(file), [_core.types.objectExpression([]), _core.types.cloneNode(objRef)])]; + } + + let keyExpression; + + if (!allLiteral) { + keyExpression = _core.types.callExpression(_core.types.memberExpression(_core.types.arrayExpression(keys), _core.types.identifier("map")), [file.addHelper("toPropertyKey")]); + } else { + keyExpression = _core.types.arrayExpression(keys); + } + + return [impureComputedPropertyDeclarators, restElement.argument, _core.types.callExpression(file.addHelper(`objectWithoutProperties${loose ? "Loose" : ""}`), [_core.types.cloneNode(objRef), keyExpression])]; + } + + function replaceRestElement(parentPath, paramPath, container) { + if (paramPath.isAssignmentPattern()) { + replaceRestElement(parentPath, paramPath.get("left"), container); + return; + } + + if (paramPath.isArrayPattern() && hasRestElement(paramPath)) { + const elements = paramPath.get("elements"); + + for (let i = 0; i < elements.length; i++) { + replaceRestElement(parentPath, elements[i], container); + } + } + + if (paramPath.isObjectPattern() && hasRestElement(paramPath)) { + const uid = parentPath.scope.generateUidIdentifier("ref"); + + const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(paramPath.node, uid)]); + + if (container) { + container.push(declar); + } else { + parentPath.ensureBlock(); + parentPath.get("body").unshiftContainer("body", declar); + } + + paramPath.replaceWith(_core.types.cloneNode(uid)); + } + } + + return { + name: "proposal-object-rest-spread", + inherits: _pluginSyntaxObjectRestSpread.default, + visitor: { + Function(path) { + const params = path.get("params"); + const paramsWithRestElement = new Set(); + const idsInRestParams = new Set(); + + for (let i = 0; i < params.length; ++i) { + const param = params[i]; + + if (hasRestElement(param)) { + paramsWithRestElement.add(i); + + for (const name of Object.keys(param.getBindingIdentifiers())) { + idsInRestParams.add(name); + } + } + } + + let idInRest = false; + + const IdentifierHandler = function (path, functionScope) { + const name = path.node.name; + + if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) { + idInRest = true; + path.stop(); + } + }; + + let i; + + for (i = 0; i < params.length && !idInRest; ++i) { + const param = params[i]; + + if (!paramsWithRestElement.has(i)) { + if (param.isReferencedIdentifier() || param.isBindingIdentifier()) { + IdentifierHandler(path, path.scope); + } else { + param.traverse({ + "Scope|TypeAnnotation|TSTypeAnnotation": path => path.skip(), + "ReferencedIdentifier|BindingIdentifier": IdentifierHandler + }, path.scope); + } + } + } + + if (!idInRest) { + for (let i = 0; i < params.length; ++i) { + const param = params[i]; + + if (paramsWithRestElement.has(i)) { + replaceRestElement(param.parentPath, param); + } + } + } else { + const shouldTransformParam = idx => idx >= i - 1 || paramsWithRestElement.has(idx); + + (0, _pluginTransformParameters.convertFunctionParams)(path, loose, shouldTransformParam, replaceRestElement); + } + }, + + VariableDeclarator(path, file) { + if (!path.get("id").isObjectPattern()) { + return; + } + + let insertionPath = path; + const originalPath = path; + visitRestElements(path.get("id"), path => { + if (!path.parentPath.isObjectPattern()) { + return; + } + + if (originalPath.node.id.properties.length > 1 && !_core.types.isIdentifier(originalPath.node.init)) { + const initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref"); + originalPath.insertBefore(_core.types.variableDeclarator(initRef, originalPath.node.init)); + originalPath.replaceWith(_core.types.variableDeclarator(originalPath.node.id, _core.types.cloneNode(initRef))); + return; + } + + let ref = originalPath.node.init; + const refPropertyPath = []; + let kind; + path.findParent(path => { + if (path.isObjectProperty()) { + refPropertyPath.unshift(path); + } else if (path.isVariableDeclarator()) { + kind = path.parentPath.node.kind; + return true; + } + }); + const impureObjRefComputedDeclarators = replaceImpureComputedKeys(refPropertyPath, path.scope); + refPropertyPath.forEach(prop => { + const { + node + } = prop; + ref = _core.types.memberExpression(ref, _core.types.cloneNode(node.key), node.computed || _core.types.isLiteral(node.key)); + }); + const objectPatternPath = path.findParent(path => path.isObjectPattern()); + const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectSpread(objectPatternPath, file, ref); + + if (loose) { + removeUnusedExcludedKeys(objectPatternPath); + } + + _core.types.assertIdentifier(argument); + + insertionPath.insertBefore(impureComputedPropertyDeclarators); + insertionPath.insertBefore(impureObjRefComputedDeclarators); + insertionPath.insertAfter(_core.types.variableDeclarator(argument, callExpression)); + insertionPath = insertionPath.getSibling(insertionPath.key + 1); + path.scope.registerBinding(kind, insertionPath); + + if (objectPatternPath.node.properties.length === 0) { + objectPatternPath.findParent(path => path.isObjectProperty() || path.isVariableDeclarator()).remove(); + } + }); + }, + + ExportNamedDeclaration(path) { + const declaration = path.get("declaration"); + if (!declaration.isVariableDeclaration()) return; + const hasRest = declaration.get("declarations").some(path => hasObjectPatternRestElement(path.get("id"))); + if (!hasRest) return; + const specifiers = []; + + for (const name of Object.keys(path.getOuterBindingIdentifiers(path))) { + specifiers.push(_core.types.exportSpecifier(_core.types.identifier(name), _core.types.identifier(name))); + } + + path.replaceWith(declaration.node); + path.insertAfter(_core.types.exportNamedDeclaration(null, specifiers)); + }, + + CatchClause(path) { + const paramPath = path.get("param"); + replaceRestElement(paramPath.parentPath, paramPath); + }, + + AssignmentExpression(path, file) { + const leftPath = path.get("left"); + + if (leftPath.isObjectPattern() && hasRestElement(leftPath)) { + const nodes = []; + const refName = path.scope.generateUidBasedOnNode(path.node.right, "ref"); + nodes.push(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(refName), path.node.right)])); + const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectSpread(leftPath, file, _core.types.identifier(refName)); + + if (impureComputedPropertyDeclarators.length > 0) { + nodes.push(_core.types.variableDeclaration("var", impureComputedPropertyDeclarators)); + } + + const nodeWithoutSpread = _core.types.cloneNode(path.node); + + nodeWithoutSpread.right = _core.types.identifier(refName); + nodes.push(_core.types.expressionStatement(nodeWithoutSpread)); + nodes.push(_core.types.toStatement(_core.types.assignmentExpression("=", argument, callExpression))); + nodes.push(_core.types.expressionStatement(_core.types.identifier(refName))); + path.replaceWithMultiple(nodes); + } + }, + + ForXStatement(path) { + const { + node, + scope + } = path; + const leftPath = path.get("left"); + const left = node.left; + + if (!hasObjectPatternRestElement(leftPath)) { + return; + } + + if (!_core.types.isVariableDeclaration(left)) { + const temp = scope.generateUidIdentifier("ref"); + node.left = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(temp)]); + path.ensureBlock(); + + if (node.body.body.length === 0 && path.isCompletionRecord()) { + node.body.body.unshift(_core.types.expressionStatement(scope.buildUndefinedNode())); + } + + node.body.body.unshift(_core.types.expressionStatement(_core.types.assignmentExpression("=", left, _core.types.cloneNode(temp)))); + } else { + const pattern = left.declarations[0].id; + const key = scope.generateUidIdentifier("ref"); + node.left = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(key, null)]); + path.ensureBlock(); + node.body.body.unshift(_core.types.variableDeclaration(node.left.kind, [_core.types.variableDeclarator(pattern, _core.types.cloneNode(key))])); + } + }, + + ArrayPattern(path) { + const objectPatterns = []; + visitRestElements(path, path => { + if (!path.parentPath.isObjectPattern()) { + return; + } + + const objectPattern = path.parentPath; + const uid = path.scope.generateUidIdentifier("ref"); + objectPatterns.push(_core.types.variableDeclarator(objectPattern.node, uid)); + objectPattern.replaceWith(_core.types.cloneNode(uid)); + path.skip(); + }); + + if (objectPatterns.length > 0) { + const statementPath = path.getStatementParent(); + statementPath.insertAfter(_core.types.variableDeclaration(statementPath.node.kind || "var", objectPatterns)); + } + }, + + ObjectExpression(path, file) { + if (!hasSpread(path.node)) return; + let helper; + + if (loose) { + helper = getExtendsHelper(file); + } else { + try { + helper = file.addHelper("objectSpread2"); + } catch (_unused) { + this.file.declarations["objectSpread2"] = null; + helper = file.addHelper("objectSpread"); + } + } + + let exp = null; + let props = []; + + function make() { + const hadProps = props.length > 0; + + const obj = _core.types.objectExpression(props); + + props = []; + + if (!exp) { + exp = _core.types.callExpression(helper, [obj]); + return; + } + + if (loose) { + if (hadProps) { + exp.arguments.push(obj); + } + + return; + } + + exp = _core.types.callExpression(_core.types.cloneNode(helper), [exp, ...(hadProps ? [_core.types.objectExpression([]), obj] : [])]); + } + + for (const prop of path.node.properties) { + if (_core.types.isSpreadElement(prop)) { + make(); + exp.arguments.push(prop.argument); + } else { + props.push(prop); + } + } + + if (props.length) make(); + path.replaceWith(exp); + } + + } + }; +}); + +exports["default"] = _default; + +/***/ }), + +/***/ 28926: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _helperPluginUtils = __nccwpck_require__(29055); + +var _default = (0, _helperPluginUtils.declare)(api => { + api.assertVersion(7); + return { + name: "syntax-jsx", + + manipulateOptions(opts, parserOpts) { + if (parserOpts.plugins.some(p => (Array.isArray(p) ? p[0] : p) === "typescript")) { + return; + } + + parserOpts.plugins.push("jsx"); + } + + }; +}); + +exports["default"] = _default; + +/***/ }), + +/***/ 84499: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _helperPluginUtils = __nccwpck_require__(29055); + +var _default = (0, _helperPluginUtils.declare)(api => { + api.assertVersion(7); + return { + name: "syntax-object-rest-spread", + + manipulateOptions(opts, parserOpts) { + parserOpts.plugins.push("objectRestSpread"); + } + + }; +}); + +exports["default"] = _default; + +/***/ }), + +/***/ 23714: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "convertFunctionParams", ({ + enumerable: true, + get: function () { + return _params.default; + } +})); +exports["default"] = void 0; + +var _helperPluginUtils = __nccwpck_require__(39497); + +var _params = __nccwpck_require__(81042); + +var _rest = __nccwpck_require__(80258); + +var _default = (0, _helperPluginUtils.declare)((api, options) => { + var _api$assumption; + + api.assertVersion(7); + const ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : options.loose; + const noNewArrows = api.assumption("noNewArrows"); + return { + name: "transform-parameters", + visitor: { + Function(path) { + if (path.isArrowFunctionExpression() && path.get("params").some(param => param.isRestElement() || param.isAssignmentPattern())) { + path.arrowFunctionToExpression({ + noNewArrows + }); + } + + const convertedRest = (0, _rest.default)(path); + const convertedParams = (0, _params.default)(path, ignoreFunctionLength); + + if (convertedRest || convertedParams) { + path.scope.crawl(); + } + } + + } + }; +}); + +exports["default"] = _default; + +/***/ }), + +/***/ 81042: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = convertFunctionParams; + +var _core = __nccwpck_require__(92092); + +const buildDefaultParam = (0, _core.template)(` + let VARIABLE_NAME = + arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ? + arguments[ARGUMENT_KEY] + : + DEFAULT_VALUE; +`); +const buildLooseDefaultParam = (0, _core.template)(` + if (ASSIGNMENT_IDENTIFIER === UNDEFINED) { + ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE; + } +`); +const buildLooseDestructuredDefaultParam = (0, _core.template)(` + let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ; +`); +const buildSafeArgumentsAccess = (0, _core.template)(` + let $0 = arguments.length > $1 ? arguments[$1] : undefined; +`); +const iifeVisitor = { + "ReferencedIdentifier|BindingIdentifier"(path, state) { + const { + scope, + node + } = path; + const { + name + } = node; + + if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) { + state.needsOuterBinding = true; + path.stop(); + } + }, + + "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": path => path.skip() +}; + +function convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement) { + const params = path.get("params"); + const isSimpleParameterList = params.every(param => param.isIdentifier()); + if (isSimpleParameterList) return false; + const { + node, + scope + } = path; + const state = { + stop: false, + needsOuterBinding: false, + scope + }; + const body = []; + const shadowedParams = new Set(); + + for (const param of params) { + for (const name of Object.keys(param.getBindingIdentifiers())) { + var _scope$bindings$name; + + const constantViolations = (_scope$bindings$name = scope.bindings[name]) == null ? void 0 : _scope$bindings$name.constantViolations; + + if (constantViolations) { + for (const redeclarator of constantViolations) { + const node = redeclarator.node; + + switch (node.type) { + case "VariableDeclarator": + { + if (node.init === null) { + const declaration = redeclarator.parentPath; + + if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) { + redeclarator.remove(); + break; + } + } + + shadowedParams.add(name); + break; + } + + case "FunctionDeclaration": + shadowedParams.add(name); + break; + } + } + } + } + } + + if (shadowedParams.size === 0) { + for (const param of params) { + if (!param.isIdentifier()) param.traverse(iifeVisitor, state); + if (state.needsOuterBinding) break; + } + } + + let firstOptionalIndex = null; + + for (let i = 0; i < params.length; i++) { + const param = params[i]; + + if (shouldTransformParam && !shouldTransformParam(i)) { + continue; + } + + const transformedRestNodes = []; + + if (replaceRestElement) { + replaceRestElement(param.parentPath, param, transformedRestNodes); + } + + const paramIsAssignmentPattern = param.isAssignmentPattern(); + + if (paramIsAssignmentPattern && (ignoreFunctionLength || node.kind === "set")) { + const left = param.get("left"); + const right = param.get("right"); + const undefinedNode = scope.buildUndefinedNode(); + + if (left.isIdentifier()) { + body.push(buildLooseDefaultParam({ + ASSIGNMENT_IDENTIFIER: _core.types.cloneNode(left.node), + DEFAULT_VALUE: right.node, + UNDEFINED: undefinedNode + })); + param.replaceWith(left.node); + } else if (left.isObjectPattern() || left.isArrayPattern()) { + const paramName = scope.generateUidIdentifier(); + body.push(buildLooseDestructuredDefaultParam({ + ASSIGNMENT_IDENTIFIER: left.node, + DEFAULT_VALUE: right.node, + PARAMETER_NAME: _core.types.cloneNode(paramName), + UNDEFINED: undefinedNode + })); + param.replaceWith(paramName); + } + } else if (paramIsAssignmentPattern) { + if (firstOptionalIndex === null) firstOptionalIndex = i; + const left = param.get("left"); + const right = param.get("right"); + const defNode = buildDefaultParam({ + VARIABLE_NAME: left.node, + DEFAULT_VALUE: right.node, + ARGUMENT_KEY: _core.types.numericLiteral(i) + }); + body.push(defNode); + } else if (firstOptionalIndex !== null) { + const defNode = buildSafeArgumentsAccess([param.node, _core.types.numericLiteral(i)]); + body.push(defNode); + } else if (param.isObjectPattern() || param.isArrayPattern()) { + const uid = path.scope.generateUidIdentifier("ref"); + + const defNode = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(param.node, uid)]); + + body.push(defNode); + param.replaceWith(_core.types.cloneNode(uid)); + } + + if (transformedRestNodes) { + for (const transformedNode of transformedRestNodes) { + body.push(transformedNode); + } + } + } + + if (firstOptionalIndex !== null) { + node.params = node.params.slice(0, firstOptionalIndex); + } + + path.ensureBlock(); + + if (state.needsOuterBinding || shadowedParams.size > 0) { + body.push(buildScopeIIFE(shadowedParams, path.get("body").node)); + path.set("body", _core.types.blockStatement(body)); + const bodyPath = path.get("body.body"); + const arrowPath = bodyPath[bodyPath.length - 1].get("argument.callee"); + arrowPath.arrowFunctionToExpression(); + arrowPath.node.generator = path.node.generator; + arrowPath.node.async = path.node.async; + path.node.generator = false; + } else { + path.get("body").unshiftContainer("body", body); + } + + return true; +} + +function buildScopeIIFE(shadowedParams, body) { + const args = []; + const params = []; + + for (const name of shadowedParams) { + args.push(_core.types.identifier(name)); + params.push(_core.types.identifier(name)); + } + + return _core.types.returnStatement(_core.types.callExpression(_core.types.arrowFunctionExpression(params, body), args)); +} + +/***/ }), + +/***/ 80258: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = convertFunctionRest; + +var _core = __nccwpck_require__(92092); + +const buildRest = (0, _core.template)(` + for (var LEN = ARGUMENTS.length, + ARRAY = new Array(ARRAY_LEN), + KEY = START; + KEY < LEN; + KEY++) { + ARRAY[ARRAY_KEY] = ARGUMENTS[KEY]; + } +`); +const restIndex = (0, _core.template)(` + (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX] +`); +const restIndexImpure = (0, _core.template)(` + REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF] +`); +const restLength = (0, _core.template)(` + ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET +`); + +function referencesRest(path, state) { + if (path.node.name === state.name) { + return path.scope.bindingIdentifierEquals(state.name, state.outerBinding); + } + + return false; +} + +const memberExpressionOptimisationVisitor = { + Scope(path, state) { + if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) { + path.skip(); + } + }, + + Flow(path) { + if (path.isTypeCastExpression()) return; + path.skip(); + }, + + Function(path, state) { + const oldNoOptimise = state.noOptimise; + state.noOptimise = true; + path.traverse(memberExpressionOptimisationVisitor, state); + state.noOptimise = oldNoOptimise; + path.skip(); + }, + + ReferencedIdentifier(path, state) { + const { + node + } = path; + + if (node.name === "arguments") { + state.deopted = true; + } + + if (!referencesRest(path, state)) return; + + if (state.noOptimise) { + state.deopted = true; + } else { + const { + parentPath + } = path; + + if (parentPath.listKey === "params" && parentPath.key < state.offset) { + return; + } + + if (parentPath.isMemberExpression({ + object: node + })) { + const grandparentPath = parentPath.parentPath; + const argsOptEligible = !state.deopted && !(grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left || grandparentPath.isLVal() || grandparentPath.isForXStatement() || grandparentPath.isUpdateExpression() || grandparentPath.isUnaryExpression({ + operator: "delete" + }) || (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee); + + if (argsOptEligible) { + if (parentPath.node.computed) { + if (parentPath.get("property").isBaseType("number")) { + state.candidates.push({ + cause: "indexGetter", + path + }); + return; + } + } else if (parentPath.node.property.name === "length") { + state.candidates.push({ + cause: "lengthGetter", + path + }); + return; + } + } + } + + if (state.offset === 0 && parentPath.isSpreadElement()) { + const call = parentPath.parentPath; + + if (call.isCallExpression() && call.node.arguments.length === 1) { + state.candidates.push({ + cause: "argSpread", + path + }); + return; + } + } + + state.references.push(path); + } + }, + + BindingIdentifier(path, state) { + if (referencesRest(path, state)) { + state.deopted = true; + } + } + +}; + +function getParamsCount(node) { + let count = node.params.length; + + if (count > 0 && _core.types.isIdentifier(node.params[0], { + name: "this" + })) { + count -= 1; + } + + return count; +} + +function hasRest(node) { + const length = node.params.length; + return length > 0 && _core.types.isRestElement(node.params[length - 1]); +} + +function optimiseIndexGetter(path, argsId, offset) { + const offsetLiteral = _core.types.numericLiteral(offset); + + let index; + + if (_core.types.isNumericLiteral(path.parent.property)) { + index = _core.types.numericLiteral(path.parent.property.value + offset); + } else if (offset === 0) { + index = path.parent.property; + } else { + index = _core.types.binaryExpression("+", path.parent.property, _core.types.cloneNode(offsetLiteral)); + } + + const { + scope + } = path; + + if (!scope.isPure(index)) { + const temp = scope.generateUidIdentifierBasedOnNode(index); + scope.push({ + id: temp, + kind: "var" + }); + path.parentPath.replaceWith(restIndexImpure({ + ARGUMENTS: argsId, + OFFSET: offsetLiteral, + INDEX: index, + REF: _core.types.cloneNode(temp) + })); + } else { + const parentPath = path.parentPath; + parentPath.replaceWith(restIndex({ + ARGUMENTS: argsId, + OFFSET: offsetLiteral, + INDEX: index + })); + const offsetTestPath = parentPath.get("test").get("left"); + const valRes = offsetTestPath.evaluate(); + + if (valRes.confident) { + if (valRes.value === true) { + parentPath.replaceWith(parentPath.scope.buildUndefinedNode()); + } else { + parentPath.get("test").replaceWith(parentPath.get("test").get("right")); + } + } + } +} + +function optimiseLengthGetter(path, argsId, offset) { + if (offset) { + path.parentPath.replaceWith(restLength({ + ARGUMENTS: argsId, + OFFSET: _core.types.numericLiteral(offset) + })); + } else { + path.replaceWith(argsId); + } +} + +function convertFunctionRest(path) { + const { + node, + scope + } = path; + if (!hasRest(node)) return false; + let rest = node.params.pop().argument; + + const argsId = _core.types.identifier("arguments"); + + if (_core.types.isPattern(rest)) { + const pattern = rest; + rest = scope.generateUidIdentifier("ref"); + + const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(pattern, rest)]); + + node.body.body.unshift(declar); + } + + const paramsCount = getParamsCount(node); + const state = { + references: [], + offset: paramsCount, + argumentsNode: argsId, + outerBinding: scope.getBindingIdentifier(rest.name), + candidates: [], + name: rest.name, + deopted: false + }; + path.traverse(memberExpressionOptimisationVisitor, state); + + if (!state.deopted && !state.references.length) { + for (const { + path, + cause + } of state.candidates) { + const clonedArgsId = _core.types.cloneNode(argsId); + + switch (cause) { + case "indexGetter": + optimiseIndexGetter(path, clonedArgsId, state.offset); + break; + + case "lengthGetter": + optimiseLengthGetter(path, clonedArgsId, state.offset); + break; + + default: + path.replaceWith(clonedArgsId); + } + } + + return true; + } + + state.references = state.references.concat(state.candidates.map(({ + path + }) => path)); + + const start = _core.types.numericLiteral(paramsCount); + + const key = scope.generateUidIdentifier("key"); + const len = scope.generateUidIdentifier("len"); + let arrKey, arrLen; + + if (paramsCount) { + arrKey = _core.types.binaryExpression("-", _core.types.cloneNode(key), _core.types.cloneNode(start)); + arrLen = _core.types.conditionalExpression(_core.types.binaryExpression(">", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.binaryExpression("-", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.numericLiteral(0)); + } else { + arrKey = _core.types.identifier(key.name); + arrLen = _core.types.identifier(len.name); + } + + const loop = buildRest({ + ARGUMENTS: argsId, + ARRAY_KEY: arrKey, + ARRAY_LEN: arrLen, + START: start, + ARRAY: rest, + KEY: key, + LEN: len + }); + + if (state.deopted) { + node.body.body.unshift(loop); + } else { + let target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent(); + target.findParent(path => { + if (path.isLoop()) { + target = path; + } else { + return path.isFunction(); + } + }); + target.insertBefore(loop); + } + + return true; +} + +/***/ }), + +/***/ 39497: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.declare = declare; + +function declare(builder) { + return (api, options, dirname) => { + var _clonedApi2; + + let clonedApi; + + for (const name of Object.keys(apiPolyfills)) { + var _clonedApi; + + if (api[name]) continue; + clonedApi = (_clonedApi = clonedApi) != null ? _clonedApi : copyApiObject(api); + clonedApi[name] = apiPolyfills[name](clonedApi); + } + + return builder((_clonedApi2 = clonedApi) != null ? _clonedApi2 : api, options || {}, dirname); + }; +} + +const apiPolyfills = { + assertVersion: api => range => { + throwVersionError(range, api.version); + }, + targets: () => () => { + return {}; + }, + assumption: () => () => {} +}; + +function copyApiObject(api) { + let proto = null; + + if (typeof api.version === "string" && /^7\./.test(api.version)) { + proto = Object.getPrototypeOf(api); + + if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) { + proto = null; + } + } + + return Object.assign({}, proto, api); +} + +function has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + +function throwVersionError(range, version) { + if (typeof range === "number") { + if (!Number.isInteger(range)) { + throw new Error("Expected string or integer value."); + } + + range = `^${range}.0.0-0`; + } + + if (typeof range !== "string") { + throw new Error("Expected string or integer value."); + } + + const limit = Error.stackTraceLimit; + + if (typeof limit === "number" && limit < 25) { + Error.stackTraceLimit = 25; + } + + let err; + + if (version.slice(0, 2) === "7.") { + err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); + } else { + err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); + } + + if (typeof limit === "number") { + Error.stackTraceLimit = limit; + } + + throw Object.assign(err, { + code: "BABEL_VERSION_UNSUPPORTED", + version, + range + }); +} + +/***/ }), + +/***/ 54309: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createTemplateBuilder; + +var _options = __nccwpck_require__(44578); + +var _string = __nccwpck_require__(40351); + +var _literal = __nccwpck_require__(65932); + +const NO_PLACEHOLDER = (0, _options.validate)({ + placeholderPattern: false +}); + +function createTemplateBuilder(formatter, defaultOpts) { + const templateFnCache = new WeakMap(); + const templateAstCache = new WeakMap(); + const cachedOpts = defaultOpts || (0, _options.validate)(null); + return Object.assign((tpl, ...args) => { + if (typeof tpl === "string") { + if (args.length > 1) throw new Error("Unexpected extra params."); + return extendedTrace((0, _string.default)(formatter, tpl, (0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])))); + } else if (Array.isArray(tpl)) { + let builder = templateFnCache.get(tpl); + + if (!builder) { + builder = (0, _literal.default)(formatter, tpl, cachedOpts); + templateFnCache.set(tpl, builder); + } + + return extendedTrace(builder(args)); + } else if (typeof tpl === "object" && tpl) { + if (args.length > 0) throw new Error("Unexpected extra params."); + return createTemplateBuilder(formatter, (0, _options.merge)(cachedOpts, (0, _options.validate)(tpl))); + } + + throw new Error(`Unexpected template param ${typeof tpl}`); + }, { + ast: (tpl, ...args) => { + if (typeof tpl === "string") { + if (args.length > 1) throw new Error("Unexpected extra params."); + return (0, _string.default)(formatter, tpl, (0, _options.merge)((0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])), NO_PLACEHOLDER))(); + } else if (Array.isArray(tpl)) { + let builder = templateAstCache.get(tpl); + + if (!builder) { + builder = (0, _literal.default)(formatter, tpl, (0, _options.merge)(cachedOpts, NO_PLACEHOLDER)); + templateAstCache.set(tpl, builder); + } + + return builder(args)(); + } + + throw new Error(`Unexpected template param ${typeof tpl}`); + } + }); +} + +function extendedTrace(fn) { + let rootStack = ""; + + try { + throw new Error(); + } catch (error) { + if (error.stack) { + rootStack = error.stack.split("\n").slice(3).join("\n"); + } + } + + return arg => { + try { + return fn(arg); + } catch (err) { + err.stack += `\n =============\n${rootStack}`; + throw err; + } + }; +} + +/***/ }), + +/***/ 47522: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.program = exports.expression = exports.statement = exports.statements = exports.smart = void 0; + +var t = __nccwpck_require__(24479); + +function makeStatementFormatter(fn) { + return { + code: str => `/* @babel/template */;\n${str}`, + validate: () => {}, + unwrap: ast => { + return fn(ast.program.body.slice(1)); + } + }; +} + +const smart = makeStatementFormatter(body => { + if (body.length > 1) { + return body; + } else { + return body[0]; + } +}); +exports.smart = smart; +const statements = makeStatementFormatter(body => body); +exports.statements = statements; +const statement = makeStatementFormatter(body => { + if (body.length === 0) { + throw new Error("Found nothing to return."); + } + + if (body.length > 1) { + throw new Error("Found multiple statements but wanted one"); + } + + return body[0]; +}); +exports.statement = statement; +const expression = { + code: str => `(\n${str}\n)`, + validate: ast => { + if (ast.program.body.length > 1) { + throw new Error("Found multiple statements but wanted one"); + } + + if (expression.unwrap(ast).start === 0) { + throw new Error("Parse result included parens."); + } + }, + unwrap: ({ + program + }) => { + const [stmt] = program.body; + t.assertExpressionStatement(stmt); + return stmt.expression; + } +}; +exports.expression = expression; +const program = { + code: str => str, + validate: () => {}, + unwrap: ast => ast.program +}; +exports.program = program; + +/***/ }), + +/***/ 20153: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.program = exports.expression = exports.statements = exports.statement = exports.smart = void 0; + +var formatters = __nccwpck_require__(47522); + +var _builder = __nccwpck_require__(54309); + +const smart = (0, _builder.default)(formatters.smart); +exports.smart = smart; +const statement = (0, _builder.default)(formatters.statement); +exports.statement = statement; +const statements = (0, _builder.default)(formatters.statements); +exports.statements = statements; +const expression = (0, _builder.default)(formatters.expression); +exports.expression = expression; +const program = (0, _builder.default)(formatters.program); +exports.program = program; + +var _default = Object.assign(smart.bind(undefined), { + smart, + statement, + statements, + expression, + program, + ast: smart.ast +}); + +exports["default"] = _default; + +/***/ }), + +/***/ 65932: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = literalTemplate; + +var _options = __nccwpck_require__(44578); + +var _parse = __nccwpck_require__(98502); + +var _populate = __nccwpck_require__(17635); + +function literalTemplate(formatter, tpl, opts) { + const { + metadata, + names + } = buildLiteralData(formatter, tpl, opts); + return arg => { + const defaultReplacements = {}; + arg.forEach((replacement, i) => { + defaultReplacements[names[i]] = replacement; + }); + return arg => { + const replacements = (0, _options.normalizeReplacements)(arg); + + if (replacements) { + Object.keys(replacements).forEach(key => { + if (Object.prototype.hasOwnProperty.call(defaultReplacements, key)) { + throw new Error("Unexpected replacement overlap."); + } + }); + } + + return formatter.unwrap((0, _populate.default)(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements)); + }; + }; +} + +function buildLiteralData(formatter, tpl, opts) { + let names; + let nameSet; + let metadata; + let prefix = ""; + + do { + prefix += "$"; + const result = buildTemplateCode(tpl, prefix); + names = result.names; + nameSet = new Set(names); + metadata = (0, _parse.default)(formatter, formatter.code(result.code), { + parser: opts.parser, + placeholderWhitelist: new Set(result.names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])), + placeholderPattern: opts.placeholderPattern, + preserveComments: opts.preserveComments, + syntacticPlaceholders: opts.syntacticPlaceholders + }); + } while (metadata.placeholders.some(placeholder => placeholder.isDuplicate && nameSet.has(placeholder.name))); + + return { + metadata, + names + }; +} + +function buildTemplateCode(tpl, prefix) { + const names = []; + let code = tpl[0]; + + for (let i = 1; i < tpl.length; i++) { + const value = `${prefix}${i - 1}`; + names.push(value); + code += value + tpl[i]; + } + + return { + names, + code + }; +} + +/***/ }), + +/***/ 44578: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.merge = merge; +exports.validate = validate; +exports.normalizeReplacements = normalizeReplacements; + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function merge(a, b) { + const { + placeholderWhitelist = a.placeholderWhitelist, + placeholderPattern = a.placeholderPattern, + preserveComments = a.preserveComments, + syntacticPlaceholders = a.syntacticPlaceholders + } = b; + return { + parser: Object.assign({}, a.parser, b.parser), + placeholderWhitelist, + placeholderPattern, + preserveComments, + syntacticPlaceholders + }; +} + +function validate(opts) { + if (opts != null && typeof opts !== "object") { + throw new Error("Unknown template options."); + } + + const _ref = opts || {}, + { + placeholderWhitelist, + placeholderPattern, + preserveComments, + syntacticPlaceholders + } = _ref, + parser = _objectWithoutPropertiesLoose(_ref, ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"]); + + if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) { + throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined"); + } + + if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) { + throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined"); + } + + if (preserveComments != null && typeof preserveComments !== "boolean") { + throw new Error("'.preserveComments' must be a boolean, null, or undefined"); + } + + if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") { + throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined"); + } + + if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) { + throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'"); + } + + return { + parser, + placeholderWhitelist: placeholderWhitelist || undefined, + placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern, + preserveComments: preserveComments == null ? undefined : preserveComments, + syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders + }; +} + +function normalizeReplacements(replacements) { + if (Array.isArray(replacements)) { + return replacements.reduce((acc, replacement, i) => { + acc["$" + i] = replacement; + return acc; + }, {}); + } else if (typeof replacements === "object" || replacements == null) { + return replacements || undefined; + } + + throw new Error("Template replacements must be an array, object, null, or undefined"); +} + +/***/ }), + +/***/ 98502: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = parseAndBuildMetadata; + +var t = __nccwpck_require__(24479); + +var _parser = __nccwpck_require__(89302); + +var _codeFrame = __nccwpck_require__(47548); + +const PATTERN = /^[_$A-Z0-9]+$/; + +function parseAndBuildMetadata(formatter, code, opts) { + const { + placeholderWhitelist, + placeholderPattern, + preserveComments, + syntacticPlaceholders + } = opts; + const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders); + t.removePropertiesDeep(ast, { + preserveComments + }); + formatter.validate(ast); + const syntactic = { + placeholders: [], + placeholderNames: new Set() + }; + const legacy = { + placeholders: [], + placeholderNames: new Set() + }; + const isLegacyRef = { + value: undefined + }; + t.traverse(ast, placeholderVisitorHandler, { + syntactic, + legacy, + isLegacyRef, + placeholderWhitelist, + placeholderPattern, + syntacticPlaceholders + }); + return Object.assign({ + ast + }, isLegacyRef.value ? legacy : syntactic); +} + +function placeholderVisitorHandler(node, ancestors, state) { + var _state$placeholderWhi; + + let name; + + if (t.isPlaceholder(node)) { + if (state.syntacticPlaceholders === false) { + throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false."); + } else { + name = node.name.name; + state.isLegacyRef.value = false; + } + } else if (state.isLegacyRef.value === false || state.syntacticPlaceholders) { + return; + } else if (t.isIdentifier(node) || t.isJSXIdentifier(node)) { + name = node.name; + state.isLegacyRef.value = true; + } else if (t.isStringLiteral(node)) { + name = node.value; + state.isLegacyRef.value = true; + } else { + return; + } + + if (!state.isLegacyRef.value && (state.placeholderPattern != null || state.placeholderWhitelist != null)) { + throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'"); + } + + if (state.isLegacyRef.value && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) { + return; + } + + ancestors = ancestors.slice(); + const { + node: parent, + key + } = ancestors[ancestors.length - 1]; + let type; + + if (t.isStringLiteral(node) || t.isPlaceholder(node, { + expectedNode: "StringLiteral" + })) { + type = "string"; + } else if (t.isNewExpression(parent) && key === "arguments" || t.isCallExpression(parent) && key === "arguments" || t.isFunction(parent) && key === "params") { + type = "param"; + } else if (t.isExpressionStatement(parent) && !t.isPlaceholder(node)) { + type = "statement"; + ancestors = ancestors.slice(0, -1); + } else if (t.isStatement(node) && t.isPlaceholder(node)) { + type = "statement"; + } else { + type = "other"; + } + + const { + placeholders, + placeholderNames + } = state.isLegacyRef.value ? state.legacy : state.syntactic; + placeholders.push({ + name, + type, + resolve: ast => resolveAncestors(ast, ancestors), + isDuplicate: placeholderNames.has(name) + }); + placeholderNames.add(name); +} + +function resolveAncestors(ast, ancestors) { + let parent = ast; + + for (let i = 0; i < ancestors.length - 1; i++) { + const { + key, + index + } = ancestors[i]; + + if (index === undefined) { + parent = parent[key]; + } else { + parent = parent[key][index]; + } + } + + const { + key, + index + } = ancestors[ancestors.length - 1]; + return { + parent, + key, + index + }; +} + +function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) { + const plugins = (parserOpts.plugins || []).slice(); + + if (syntacticPlaceholders !== false) { + plugins.push("placeholders"); + } + + parserOpts = Object.assign({ + allowReturnOutsideFunction: true, + allowSuperOutsideMethod: true, + sourceType: "module" + }, parserOpts, { + plugins + }); + + try { + return (0, _parser.parse)(code, parserOpts); + } catch (err) { + const loc = err.loc; + + if (loc) { + err.message += "\n" + (0, _codeFrame.codeFrameColumns)(code, { + start: loc + }); + err.code = "BABEL_TEMPLATE_PARSE_ERROR"; + } + + throw err; + } +} + +/***/ }), + +/***/ 17635: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = populatePlaceholders; + +var t = __nccwpck_require__(24479); + +function populatePlaceholders(metadata, replacements) { + const ast = t.cloneNode(metadata.ast); + + if (replacements) { + metadata.placeholders.forEach(placeholder => { + if (!Object.prototype.hasOwnProperty.call(replacements, placeholder.name)) { + const placeholderName = placeholder.name; + throw new Error(`Error: No substitution given for "${placeholderName}". If this is not meant to be a + placeholder you may want to consider passing one of the following options to @babel/template: + - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])} + - { placeholderPattern: /^${placeholderName}$/ }`); + } + }); + Object.keys(replacements).forEach(key => { + if (!metadata.placeholderNames.has(key)) { + throw new Error(`Unknown substitution "${key}" given`); + } + }); + } + + metadata.placeholders.slice().reverse().forEach(placeholder => { + try { + applyReplacement(placeholder, ast, replacements && replacements[placeholder.name] || null); + } catch (e) { + e.message = `@babel/template placeholder "${placeholder.name}": ${e.message}`; + throw e; + } + }); + return ast; +} + +function applyReplacement(placeholder, ast, replacement) { + if (placeholder.isDuplicate) { + if (Array.isArray(replacement)) { + replacement = replacement.map(node => t.cloneNode(node)); + } else if (typeof replacement === "object") { + replacement = t.cloneNode(replacement); + } + } + + const { + parent, + key, + index + } = placeholder.resolve(ast); + + if (placeholder.type === "string") { + if (typeof replacement === "string") { + replacement = t.stringLiteral(replacement); + } + + if (!replacement || !t.isStringLiteral(replacement)) { + throw new Error("Expected string substitution"); + } + } else if (placeholder.type === "statement") { + if (index === undefined) { + if (!replacement) { + replacement = t.emptyStatement(); + } else if (Array.isArray(replacement)) { + replacement = t.blockStatement(replacement); + } else if (typeof replacement === "string") { + replacement = t.expressionStatement(t.identifier(replacement)); + } else if (!t.isStatement(replacement)) { + replacement = t.expressionStatement(replacement); + } + } else { + if (replacement && !Array.isArray(replacement)) { + if (typeof replacement === "string") { + replacement = t.identifier(replacement); + } + + if (!t.isStatement(replacement)) { + replacement = t.expressionStatement(replacement); + } + } + } + } else if (placeholder.type === "param") { + if (typeof replacement === "string") { + replacement = t.identifier(replacement); + } + + if (index === undefined) throw new Error("Assertion failure."); + } else { + if (typeof replacement === "string") { + replacement = t.identifier(replacement); + } + + if (Array.isArray(replacement)) { + throw new Error("Cannot replace single expression with an array."); + } + } + + if (index === undefined) { + t.validate(parent, key, replacement); + parent[key] = replacement; + } else { + const items = parent[key].slice(); + + if (placeholder.type === "statement" || placeholder.type === "param") { + if (replacement == null) { + items.splice(index, 1); + } else if (Array.isArray(replacement)) { + items.splice(index, 1, ...replacement); + } else { + items[index] = replacement; + } + } else { + items[index] = replacement; + } + + t.validate(parent, key, items); + parent[key] = items; + } +} + +/***/ }), + +/***/ 40351: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = stringTemplate; + +var _options = __nccwpck_require__(44578); + +var _parse = __nccwpck_require__(98502); + +var _populate = __nccwpck_require__(17635); + +function stringTemplate(formatter, code, opts) { + code = formatter.code(code); + let metadata; + return arg => { + const replacements = (0, _options.normalizeReplacements)(arg); + if (!metadata) metadata = (0, _parse.default)(formatter, code, opts); + return formatter.unwrap((0, _populate.default)(metadata, replacements)); + }; +} + +/***/ }), + +/***/ 58897: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.clear = clear; +exports.clearPath = clearPath; +exports.clearScope = clearScope; +exports.scope = exports.path = void 0; +let path = new WeakMap(); +exports.path = path; +let scope = new WeakMap(); +exports.scope = scope; + +function clear() { + clearPath(); + clearScope(); +} + +function clearPath() { + exports.path = path = new WeakMap(); +} + +function clearScope() { + exports.scope = scope = new WeakMap(); +} + +/***/ }), + +/***/ 11034: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _path = __nccwpck_require__(58308); + +var t = __nccwpck_require__(24479); + +class TraversalContext { + constructor(scope, opts, state, parentPath) { + this.queue = null; + this.priorityQueue = null; + this.parentPath = parentPath; + this.scope = scope; + this.state = state; + this.opts = opts; + } + + shouldVisit(node) { + const opts = this.opts; + if (opts.enter || opts.exit) return true; + if (opts[node.type]) return true; + const keys = t.VISITOR_KEYS[node.type]; + if (!(keys != null && keys.length)) return false; + + for (const key of keys) { + if (node[key]) return true; + } + + return false; + } + + create(node, obj, key, listKey) { + return _path.default.get({ + parentPath: this.parentPath, + parent: node, + container: obj, + key: key, + listKey + }); + } + + maybeQueue(path, notPriority) { + if (this.queue) { + if (notPriority) { + this.queue.push(path); + } else { + this.priorityQueue.push(path); + } + } + } + + visitMultiple(container, parent, listKey) { + if (container.length === 0) return false; + const queue = []; + + for (let key = 0; key < container.length; key++) { + const node = container[key]; + + if (node && this.shouldVisit(node)) { + queue.push(this.create(parent, container, key, listKey)); + } + } + + return this.visitQueue(queue); + } + + visitSingle(node, key) { + if (this.shouldVisit(node[key])) { + return this.visitQueue([this.create(node, node, key)]); + } else { + return false; + } + } + + visitQueue(queue) { + this.queue = queue; + this.priorityQueue = []; + const visited = new WeakSet(); + let stop = false; + + for (const path of queue) { + path.resync(); + + if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== this) { + path.pushContext(this); + } + + if (path.key === null) continue; + const { + node + } = path; + if (visited.has(node)) continue; + if (node) visited.add(node); + + if (path.visit()) { + stop = true; + break; + } + + if (this.priorityQueue.length) { + stop = this.visitQueue(this.priorityQueue); + this.priorityQueue = []; + this.queue = queue; + if (stop) break; + } + } + + for (const path of queue) { + path.popContext(); + } + + this.queue = null; + return stop; + } + + visit(node, key) { + const nodes = node[key]; + if (!nodes) return false; + + if (Array.isArray(nodes)) { + return this.visitMultiple(nodes, node, key); + } else { + return this.visitSingle(node, key); + } + } + +} + +exports["default"] = TraversalContext; + +/***/ }), + +/***/ 46638: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +class Hub { + getCode() {} + + getScope() {} + + addHelper() { + throw new Error("Helpers are not supported by the default hub."); + } + + buildError(node, msg, Error = TypeError) { + return new Error(msg); + } + +} + +exports["default"] = Hub; + +/***/ }), + +/***/ 8631: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "NodePath", ({ + enumerable: true, + get: function () { + return _path.default; + } +})); +Object.defineProperty(exports, "Scope", ({ + enumerable: true, + get: function () { + return _scope.default; + } +})); +Object.defineProperty(exports, "Hub", ({ + enumerable: true, + get: function () { + return _hub.default; + } +})); +exports.visitors = exports["default"] = void 0; + +var _context = __nccwpck_require__(11034); + +var visitors = __nccwpck_require__(93314); + +exports.visitors = visitors; + +var t = __nccwpck_require__(24479); + +var cache = __nccwpck_require__(58897); + +var _path = __nccwpck_require__(58308); + +var _scope = __nccwpck_require__(85079); + +var _hub = __nccwpck_require__(46638); + +function traverse(parent, opts = {}, scope, state, parentPath) { + if (!parent) return; + + if (!opts.noScope && !scope) { + if (parent.type !== "Program" && parent.type !== "File") { + throw new Error("You must pass a scope and parentPath unless traversing a Program/File. " + `Instead of that you tried to traverse a ${parent.type} node without ` + "passing scope and parentPath."); + } + } + + if (!t.VISITOR_KEYS[parent.type]) { + return; + } + + visitors.explode(opts); + traverse.node(parent, opts, scope, state, parentPath); +} + +var _default = traverse; +exports["default"] = _default; +traverse.visitors = visitors; +traverse.verify = visitors.verify; +traverse.explode = visitors.explode; + +traverse.cheap = function (node, enter) { + return t.traverseFast(node, enter); +}; + +traverse.node = function (node, opts, scope, state, parentPath, skipKeys) { + const keys = t.VISITOR_KEYS[node.type]; + if (!keys) return; + const context = new _context.default(scope, opts, state, parentPath); + + for (const key of keys) { + if (skipKeys && skipKeys[key]) continue; + if (context.visit(node, key)) return; + } +}; + +traverse.clearNode = function (node, opts) { + t.removeProperties(node, opts); + cache.path.delete(node); +}; + +traverse.removeProperties = function (tree, opts) { + t.traverseFast(tree, traverse.clearNode, opts); + return tree; +}; + +function hasDenylistedType(path, state) { + if (path.node.type === state.type) { + state.has = true; + path.stop(); + } +} + +traverse.hasType = function (tree, type, denylistTypes) { + if (denylistTypes != null && denylistTypes.includes(tree.type)) return false; + if (tree.type === type) return true; + const state = { + has: false, + type: type + }; + traverse(tree, { + noScope: true, + denylist: denylistTypes, + enter: hasDenylistedType + }, null, state); + return state.has; +}; + +traverse.cache = cache; + +/***/ }), + +/***/ 7178: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.findParent = findParent; +exports.find = find; +exports.getFunctionParent = getFunctionParent; +exports.getStatementParent = getStatementParent; +exports.getEarliestCommonAncestorFrom = getEarliestCommonAncestorFrom; +exports.getDeepestCommonAncestorFrom = getDeepestCommonAncestorFrom; +exports.getAncestry = getAncestry; +exports.isAncestor = isAncestor; +exports.isDescendant = isDescendant; +exports.inType = inType; + +var t = __nccwpck_require__(24479); + +var _index = __nccwpck_require__(58308); + +function findParent(callback) { + let path = this; + + while (path = path.parentPath) { + if (callback(path)) return path; + } + + return null; +} + +function find(callback) { + let path = this; + + do { + if (callback(path)) return path; + } while (path = path.parentPath); + + return null; +} + +function getFunctionParent() { + return this.findParent(p => p.isFunction()); +} + +function getStatementParent() { + let path = this; + + do { + if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) { + break; + } else { + path = path.parentPath; + } + } while (path); + + if (path && (path.isProgram() || path.isFile())) { + throw new Error("File/Program node, we can't possibly find a statement parent to this"); + } + + return path; +} + +function getEarliestCommonAncestorFrom(paths) { + return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) { + let earliest; + const keys = t.VISITOR_KEYS[deepest.type]; + + for (const ancestry of ancestries) { + const path = ancestry[i + 1]; + + if (!earliest) { + earliest = path; + continue; + } + + if (path.listKey && earliest.listKey === path.listKey) { + if (path.key < earliest.key) { + earliest = path; + continue; + } + } + + const earliestKeyIndex = keys.indexOf(earliest.parentKey); + const currentKeyIndex = keys.indexOf(path.parentKey); + + if (earliestKeyIndex > currentKeyIndex) { + earliest = path; + } + } + + return earliest; + }); +} + +function getDeepestCommonAncestorFrom(paths, filter) { + if (!paths.length) { + return this; + } + + if (paths.length === 1) { + return paths[0]; + } + + let minDepth = Infinity; + let lastCommonIndex, lastCommon; + const ancestries = paths.map(path => { + const ancestry = []; + + do { + ancestry.unshift(path); + } while ((path = path.parentPath) && path !== this); + + if (ancestry.length < minDepth) { + minDepth = ancestry.length; + } + + return ancestry; + }); + const first = ancestries[0]; + + depthLoop: for (let i = 0; i < minDepth; i++) { + const shouldMatch = first[i]; + + for (const ancestry of ancestries) { + if (ancestry[i] !== shouldMatch) { + break depthLoop; + } + } + + lastCommonIndex = i; + lastCommon = shouldMatch; + } + + if (lastCommon) { + if (filter) { + return filter(lastCommon, lastCommonIndex, ancestries); + } else { + return lastCommon; + } + } else { + throw new Error("Couldn't find intersection"); + } +} + +function getAncestry() { + let path = this; + const paths = []; + + do { + paths.push(path); + } while (path = path.parentPath); + + return paths; +} + +function isAncestor(maybeDescendant) { + return maybeDescendant.isDescendant(this); +} + +function isDescendant(maybeAncestor) { + return !!this.findParent(parent => parent === maybeAncestor); +} + +function inType(...candidateTypes) { + let path = this; + + while (path) { + for (const type of candidateTypes) { + if (path.node.type === type) return true; + } + + path = path.parentPath; + } + + return false; +} + +/***/ }), + +/***/ 41022: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.shareCommentsWithSiblings = shareCommentsWithSiblings; +exports.addComment = addComment; +exports.addComments = addComments; + +var t = __nccwpck_require__(24479); + +function shareCommentsWithSiblings() { + if (typeof this.key === "string") return; + const node = this.node; + if (!node) return; + const trailing = node.trailingComments; + const leading = node.leadingComments; + if (!trailing && !leading) return; + const prev = this.getSibling(this.key - 1); + const next = this.getSibling(this.key + 1); + const hasPrev = Boolean(prev.node); + const hasNext = Boolean(next.node); + + if (hasPrev && !hasNext) { + prev.addComments("trailing", trailing); + } else if (hasNext && !hasPrev) { + next.addComments("leading", leading); + } +} + +function addComment(type, content, line) { + t.addComment(this.node, type, content, line); +} + +function addComments(type, comments) { + t.addComments(this.node, type, comments); +} + +/***/ }), + +/***/ 47373: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.call = call; +exports._call = _call; +exports.isBlacklisted = exports.isDenylisted = isDenylisted; +exports.visit = visit; +exports.skip = skip; +exports.skipKey = skipKey; +exports.stop = stop; +exports.setScope = setScope; +exports.setContext = setContext; +exports.resync = resync; +exports._resyncParent = _resyncParent; +exports._resyncKey = _resyncKey; +exports._resyncList = _resyncList; +exports._resyncRemoved = _resyncRemoved; +exports.popContext = popContext; +exports.pushContext = pushContext; +exports.setup = setup; +exports.setKey = setKey; +exports.requeue = requeue; +exports._getQueueContexts = _getQueueContexts; + +var _index = __nccwpck_require__(8631); + +var _index2 = __nccwpck_require__(58308); + +function call(key) { + const opts = this.opts; + this.debug(key); + + if (this.node) { + if (this._call(opts[key])) return true; + } + + if (this.node) { + return this._call(opts[this.node.type] && opts[this.node.type][key]); + } + + return false; +} + +function _call(fns) { + if (!fns) return false; + + for (const fn of fns) { + if (!fn) continue; + const node = this.node; + if (!node) return true; + const ret = fn.call(this.state, this, this.state); + + if (ret && typeof ret === "object" && typeof ret.then === "function") { + throw new Error(`You appear to be using a plugin with an async traversal visitor, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + + if (ret) { + throw new Error(`Unexpected return value from visitor method ${fn}`); + } + + if (this.node !== node) return true; + if (this._traverseFlags > 0) return true; + } + + return false; +} + +function isDenylisted() { + var _this$opts$denylist; + + const denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist; + return denylist && denylist.indexOf(this.node.type) > -1; +} + +function visit() { + if (!this.node) { + return false; + } + + if (this.isDenylisted()) { + return false; + } + + if (this.opts.shouldSkip && this.opts.shouldSkip(this)) { + return false; + } + + if (this.shouldSkip || this.call("enter") || this.shouldSkip) { + this.debug("Skip..."); + return this.shouldStop; + } + + this.debug("Recursing into..."); + + _index.default.node(this.node, this.opts, this.scope, this.state, this, this.skipKeys); + + this.call("exit"); + return this.shouldStop; +} + +function skip() { + this.shouldSkip = true; +} + +function skipKey(key) { + if (this.skipKeys == null) { + this.skipKeys = {}; + } + + this.skipKeys[key] = true; +} + +function stop() { + this._traverseFlags |= _index2.SHOULD_SKIP | _index2.SHOULD_STOP; +} + +function setScope() { + if (this.opts && this.opts.noScope) return; + let path = this.parentPath; + if (this.key === "key" && path.isMethod()) path = path.parentPath; + let target; + + while (path && !target) { + if (path.opts && path.opts.noScope) return; + target = path.scope; + path = path.parentPath; + } + + this.scope = this.getScope(target); + if (this.scope) this.scope.init(); +} + +function setContext(context) { + if (this.skipKeys != null) { + this.skipKeys = {}; + } + + this._traverseFlags = 0; + + if (context) { + this.context = context; + this.state = context.state; + this.opts = context.opts; + } + + this.setScope(); + return this; +} + +function resync() { + if (this.removed) return; + + this._resyncParent(); + + this._resyncList(); + + this._resyncKey(); +} + +function _resyncParent() { + if (this.parentPath) { + this.parent = this.parentPath.node; + } +} + +function _resyncKey() { + if (!this.container) return; + if (this.node === this.container[this.key]) return; + + if (Array.isArray(this.container)) { + for (let i = 0; i < this.container.length; i++) { + if (this.container[i] === this.node) { + return this.setKey(i); + } + } + } else { + for (const key of Object.keys(this.container)) { + if (this.container[key] === this.node) { + return this.setKey(key); + } + } + } + + this.key = null; +} + +function _resyncList() { + if (!this.parent || !this.inList) return; + const newContainer = this.parent[this.listKey]; + if (this.container === newContainer) return; + this.container = newContainer || null; +} + +function _resyncRemoved() { + if (this.key == null || !this.container || this.container[this.key] !== this.node) { + this._markRemoved(); + } +} + +function popContext() { + this.contexts.pop(); + + if (this.contexts.length > 0) { + this.setContext(this.contexts[this.contexts.length - 1]); + } else { + this.setContext(undefined); + } +} + +function pushContext(context) { + this.contexts.push(context); + this.setContext(context); +} + +function setup(parentPath, container, listKey, key) { + this.listKey = listKey; + this.container = container; + this.parentPath = parentPath || this.parentPath; + this.setKey(key); +} + +function setKey(key) { + var _this$node; + + this.key = key; + this.node = this.container[this.key]; + this.type = (_this$node = this.node) == null ? void 0 : _this$node.type; +} + +function requeue(pathToQueue = this) { + if (pathToQueue.removed) return; + ; + const contexts = this.contexts; + + for (const context of contexts) { + context.maybeQueue(pathToQueue); + } +} + +function _getQueueContexts() { + let path = this; + let contexts = this.contexts; + + while (!contexts.length) { + path = path.parentPath; + if (!path) break; + contexts = path.contexts; + } + + return contexts; +} + +/***/ }), + +/***/ 10981: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.toComputedKey = toComputedKey; +exports.ensureBlock = ensureBlock; +exports.arrowFunctionToShadowed = arrowFunctionToShadowed; +exports.unwrapFunctionEnvironment = unwrapFunctionEnvironment; +exports.arrowFunctionToExpression = arrowFunctionToExpression; + +var t = __nccwpck_require__(24479); + +var _helperFunctionName = __nccwpck_require__(550); + +function toComputedKey() { + let key; + + if (this.isMemberExpression()) { + key = this.node.property; + } else if (this.isProperty() || this.isMethod()) { + key = this.node.key; + } else { + throw new ReferenceError("todo"); + } + + if (!this.node.computed) { + if (t.isIdentifier(key)) key = t.stringLiteral(key.name); + } + + return key; +} + +function ensureBlock() { + const body = this.get("body"); + const bodyNode = body.node; + + if (Array.isArray(body)) { + throw new Error("Can't convert array path to a block statement"); + } + + if (!bodyNode) { + throw new Error("Can't convert node without a body"); + } + + if (body.isBlockStatement()) { + return bodyNode; + } + + const statements = []; + let stringPath = "body"; + let key; + let listKey; + + if (body.isStatement()) { + listKey = "body"; + key = 0; + statements.push(body.node); + } else { + stringPath += ".body.0"; + + if (this.isFunction()) { + key = "argument"; + statements.push(t.returnStatement(body.node)); + } else { + key = "expression"; + statements.push(t.expressionStatement(body.node)); + } + } + + this.node.body = t.blockStatement(statements); + const parentPath = this.get(stringPath); + body.setup(parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key); + return this.node; +} + +function arrowFunctionToShadowed() { + if (!this.isArrowFunctionExpression()) return; + this.arrowFunctionToExpression(); +} + +function unwrapFunctionEnvironment() { + if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) { + throw this.buildCodeFrameError("Can only unwrap the environment of a function."); + } + + hoistFunctionEnvironment(this); +} + +function arrowFunctionToExpression({ + allowInsertArrow = true, + specCompliant = false, + noNewArrows = !specCompliant +} = {}) { + if (!this.isArrowFunctionExpression()) { + throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression."); + } + + const thisBinding = hoistFunctionEnvironment(this, noNewArrows, allowInsertArrow); + this.ensureBlock(); + this.node.type = "FunctionExpression"; + + if (!noNewArrows) { + const checkBinding = thisBinding ? null : this.parentPath.scope.generateUidIdentifier("arrowCheckId"); + + if (checkBinding) { + this.parentPath.scope.push({ + id: checkBinding, + init: t.objectExpression([]) + }); + } + + this.get("body").unshiftContainer("body", t.expressionStatement(t.callExpression(this.hub.addHelper("newArrowCheck"), [t.thisExpression(), checkBinding ? t.identifier(checkBinding.name) : t.identifier(thisBinding)]))); + this.replaceWith(t.callExpression(t.memberExpression((0, _helperFunctionName.default)(this, true) || this.node, t.identifier("bind")), [checkBinding ? t.identifier(checkBinding.name) : t.thisExpression()])); + } +} + +function hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = true) { + const thisEnvFn = fnPath.findParent(p => { + return p.isFunction() && !p.isArrowFunctionExpression() || p.isProgram() || p.isClassProperty({ + static: false + }); + }); + const inConstructor = (thisEnvFn == null ? void 0 : thisEnvFn.node.kind) === "constructor"; + + if (thisEnvFn.isClassProperty()) { + throw fnPath.buildCodeFrameError("Unable to transform arrow inside class property"); + } + + const { + thisPaths, + argumentsPaths, + newTargetPaths, + superProps, + superCalls + } = getScopeInformation(fnPath); + + if (inConstructor && superCalls.length > 0) { + if (!allowInsertArrow) { + throw superCalls[0].buildCodeFrameError("Unable to handle nested super() usage in arrow"); + } + + const allSuperCalls = []; + thisEnvFn.traverse({ + Function(child) { + if (child.isArrowFunctionExpression()) return; + child.skip(); + }, + + ClassProperty(child) { + child.skip(); + }, + + CallExpression(child) { + if (!child.get("callee").isSuper()) return; + allSuperCalls.push(child); + } + + }); + const superBinding = getSuperBinding(thisEnvFn); + allSuperCalls.forEach(superCall => { + const callee = t.identifier(superBinding); + callee.loc = superCall.node.callee.loc; + superCall.get("callee").replaceWith(callee); + }); + } + + if (argumentsPaths.length > 0) { + const argumentsBinding = getBinding(thisEnvFn, "arguments", () => { + const args = () => t.identifier("arguments"); + + if (thisEnvFn.scope.path.isProgram()) { + return t.conditionalExpression(t.binaryExpression("===", t.unaryExpression("typeof", args()), t.stringLiteral("undefined")), thisEnvFn.scope.buildUndefinedNode(), args()); + } else { + return args(); + } + }); + argumentsPaths.forEach(argumentsChild => { + const argsRef = t.identifier(argumentsBinding); + argsRef.loc = argumentsChild.node.loc; + argumentsChild.replaceWith(argsRef); + }); + } + + if (newTargetPaths.length > 0) { + const newTargetBinding = getBinding(thisEnvFn, "newtarget", () => t.metaProperty(t.identifier("new"), t.identifier("target"))); + newTargetPaths.forEach(targetChild => { + const targetRef = t.identifier(newTargetBinding); + targetRef.loc = targetChild.node.loc; + targetChild.replaceWith(targetRef); + }); + } + + if (superProps.length > 0) { + if (!allowInsertArrow) { + throw superProps[0].buildCodeFrameError("Unable to handle nested super.prop usage"); + } + + const flatSuperProps = superProps.reduce((acc, superProp) => acc.concat(standardizeSuperProperty(superProp)), []); + flatSuperProps.forEach(superProp => { + const key = superProp.node.computed ? "" : superProp.get("property").node.name; + const isAssignment = superProp.parentPath.isAssignmentExpression({ + left: superProp.node + }); + const isCall = superProp.parentPath.isCallExpression({ + callee: superProp.node + }); + const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key); + const args = []; + + if (superProp.node.computed) { + args.push(superProp.get("property").node); + } + + if (isAssignment) { + const value = superProp.parentPath.node.right; + args.push(value); + } + + const call = t.callExpression(t.identifier(superBinding), args); + + if (isCall) { + superProp.parentPath.unshiftContainer("arguments", t.thisExpression()); + superProp.replaceWith(t.memberExpression(call, t.identifier("call"))); + thisPaths.push(superProp.parentPath.get("arguments.0")); + } else if (isAssignment) { + superProp.parentPath.replaceWith(call); + } else { + superProp.replaceWith(call); + } + }); + } + + let thisBinding; + + if (thisPaths.length > 0 || !noNewArrows) { + thisBinding = getThisBinding(thisEnvFn, inConstructor); + + if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) { + thisPaths.forEach(thisChild => { + const thisRef = thisChild.isJSX() ? t.jsxIdentifier(thisBinding) : t.identifier(thisBinding); + thisRef.loc = thisChild.node.loc; + thisChild.replaceWith(thisRef); + }); + if (!noNewArrows) thisBinding = null; + } + } + + return thisBinding; +} + +function standardizeSuperProperty(superProp) { + if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== "=") { + const assignmentPath = superProp.parentPath; + const op = assignmentPath.node.operator.slice(0, -1); + const value = assignmentPath.node.right; + assignmentPath.node.operator = "="; + + if (superProp.node.computed) { + const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp"); + assignmentPath.get("left").replaceWith(t.memberExpression(superProp.node.object, t.assignmentExpression("=", tmp, superProp.node.property), true)); + assignmentPath.get("right").replaceWith(t.binaryExpression(op, t.memberExpression(superProp.node.object, t.identifier(tmp.name), true), value)); + } else { + assignmentPath.get("left").replaceWith(t.memberExpression(superProp.node.object, superProp.node.property)); + assignmentPath.get("right").replaceWith(t.binaryExpression(op, t.memberExpression(superProp.node.object, t.identifier(superProp.node.property.name)), value)); + } + + return [assignmentPath.get("left"), assignmentPath.get("right").get("left")]; + } else if (superProp.parentPath.isUpdateExpression()) { + const updateExpr = superProp.parentPath; + const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp"); + const computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier("prop") : null; + const parts = [t.assignmentExpression("=", tmp, t.memberExpression(superProp.node.object, computedKey ? t.assignmentExpression("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), t.assignmentExpression("=", t.memberExpression(superProp.node.object, computedKey ? t.identifier(computedKey.name) : superProp.node.property, superProp.node.computed), t.binaryExpression("+", t.identifier(tmp.name), t.numericLiteral(1)))]; + + if (!superProp.parentPath.node.prefix) { + parts.push(t.identifier(tmp.name)); + } + + updateExpr.replaceWith(t.sequenceExpression(parts)); + const left = updateExpr.get("expressions.0.right"); + const right = updateExpr.get("expressions.1.left"); + return [left, right]; + } + + return [superProp]; +} + +function hasSuperClass(thisEnvFn) { + return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass; +} + +function getThisBinding(thisEnvFn, inConstructor) { + return getBinding(thisEnvFn, "this", thisBinding => { + if (!inConstructor || !hasSuperClass(thisEnvFn)) return t.thisExpression(); + const supers = new WeakSet(); + thisEnvFn.traverse({ + Function(child) { + if (child.isArrowFunctionExpression()) return; + child.skip(); + }, + + ClassProperty(child) { + child.skip(); + }, + + CallExpression(child) { + if (!child.get("callee").isSuper()) return; + if (supers.has(child.node)) return; + supers.add(child.node); + child.replaceWithMultiple([child.node, t.assignmentExpression("=", t.identifier(thisBinding), t.identifier("this"))]); + } + + }); + }); +} + +function getSuperBinding(thisEnvFn) { + return getBinding(thisEnvFn, "supercall", () => { + const argsBinding = thisEnvFn.scope.generateUidIdentifier("args"); + return t.arrowFunctionExpression([t.restElement(argsBinding)], t.callExpression(t.super(), [t.spreadElement(t.identifier(argsBinding.name))])); + }); +} + +function getSuperPropBinding(thisEnvFn, isAssignment, propName) { + const op = isAssignment ? "set" : "get"; + return getBinding(thisEnvFn, `superprop_${op}:${propName || ""}`, () => { + const argsList = []; + let fnBody; + + if (propName) { + fnBody = t.memberExpression(t.super(), t.identifier(propName)); + } else { + const method = thisEnvFn.scope.generateUidIdentifier("prop"); + argsList.unshift(method); + fnBody = t.memberExpression(t.super(), t.identifier(method.name), true); + } + + if (isAssignment) { + const valueIdent = thisEnvFn.scope.generateUidIdentifier("value"); + argsList.push(valueIdent); + fnBody = t.assignmentExpression("=", fnBody, t.identifier(valueIdent.name)); + } + + return t.arrowFunctionExpression(argsList, fnBody); + }); +} + +function getBinding(thisEnvFn, key, init) { + const cacheKey = "binding:" + key; + let data = thisEnvFn.getData(cacheKey); + + if (!data) { + const id = thisEnvFn.scope.generateUidIdentifier(key); + data = id.name; + thisEnvFn.setData(cacheKey, data); + thisEnvFn.scope.push({ + id: id, + init: init(data) + }); + } + + return data; +} + +function getScopeInformation(fnPath) { + const thisPaths = []; + const argumentsPaths = []; + const newTargetPaths = []; + const superProps = []; + const superCalls = []; + fnPath.traverse({ + ClassProperty(child) { + child.skip(); + }, + + Function(child) { + if (child.isArrowFunctionExpression()) return; + child.skip(); + }, + + ThisExpression(child) { + thisPaths.push(child); + }, + + JSXIdentifier(child) { + if (child.node.name !== "this") return; + + if (!child.parentPath.isJSXMemberExpression({ + object: child.node + }) && !child.parentPath.isJSXOpeningElement({ + name: child.node + })) { + return; + } + + thisPaths.push(child); + }, + + CallExpression(child) { + if (child.get("callee").isSuper()) superCalls.push(child); + }, + + MemberExpression(child) { + if (child.get("object").isSuper()) superProps.push(child); + }, + + ReferencedIdentifier(child) { + if (child.node.name !== "arguments") return; + let curr = child.scope; + + do { + if (curr.hasOwnBinding("arguments")) { + curr.rename("arguments"); + return; + } + + if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) { + break; + } + } while (curr = curr.parent); + + argumentsPaths.push(child); + }, + + MetaProperty(child) { + if (!child.get("meta").isIdentifier({ + name: "new" + })) return; + if (!child.get("property").isIdentifier({ + name: "target" + })) return; + newTargetPaths.push(child); + } + + }); + return { + thisPaths, + argumentsPaths, + newTargetPaths, + superProps, + superCalls + }; +} + +/***/ }), + +/***/ 49890: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.evaluateTruthy = evaluateTruthy; +exports.evaluate = evaluate; +const VALID_CALLEES = ["String", "Number", "Math"]; +const INVALID_METHODS = ["random"]; + +function evaluateTruthy() { + const res = this.evaluate(); + if (res.confident) return !!res.value; +} + +function deopt(path, state) { + if (!state.confident) return; + state.deoptPath = path; + state.confident = false; +} + +function evaluateCached(path, state) { + const { + node + } = path; + const { + seen + } = state; + + if (seen.has(node)) { + const existing = seen.get(node); + + if (existing.resolved) { + return existing.value; + } else { + deopt(path, state); + return; + } + } else { + const item = { + resolved: false + }; + seen.set(node, item); + + const val = _evaluate(path, state); + + if (state.confident) { + item.resolved = true; + item.value = val; + } + + return val; + } +} + +function _evaluate(path, state) { + if (!state.confident) return; + + if (path.isSequenceExpression()) { + const exprs = path.get("expressions"); + return evaluateCached(exprs[exprs.length - 1], state); + } + + if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) { + return path.node.value; + } + + if (path.isNullLiteral()) { + return null; + } + + if (path.isTemplateLiteral()) { + return evaluateQuasis(path, path.node.quasis, state); + } + + if (path.isTaggedTemplateExpression() && path.get("tag").isMemberExpression()) { + const object = path.get("tag.object"); + const { + node: { + name + } + } = object; + const property = path.get("tag.property"); + + if (object.isIdentifier() && name === "String" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === "raw") { + return evaluateQuasis(path, path.node.quasi.quasis, state, true); + } + } + + if (path.isConditionalExpression()) { + const testResult = evaluateCached(path.get("test"), state); + if (!state.confident) return; + + if (testResult) { + return evaluateCached(path.get("consequent"), state); + } else { + return evaluateCached(path.get("alternate"), state); + } + } + + if (path.isExpressionWrapper()) { + return evaluateCached(path.get("expression"), state); + } + + if (path.isMemberExpression() && !path.parentPath.isCallExpression({ + callee: path.node + })) { + const property = path.get("property"); + const object = path.get("object"); + + if (object.isLiteral() && property.isIdentifier()) { + const value = object.node.value; + const type = typeof value; + + if (type === "number" || type === "string") { + return value[property.node.name]; + } + } + } + + if (path.isReferencedIdentifier()) { + const binding = path.scope.getBinding(path.node.name); + + if (binding && binding.constantViolations.length > 0) { + return deopt(binding.path, state); + } + + if (binding && path.node.start < binding.path.node.end) { + return deopt(binding.path, state); + } + + if (binding != null && binding.hasValue) { + return binding.value; + } else { + if (path.node.name === "undefined") { + return binding ? deopt(binding.path, state) : undefined; + } else if (path.node.name === "Infinity") { + return binding ? deopt(binding.path, state) : Infinity; + } else if (path.node.name === "NaN") { + return binding ? deopt(binding.path, state) : NaN; + } + + const resolved = path.resolve(); + + if (resolved === path) { + return deopt(path, state); + } else { + return evaluateCached(resolved, state); + } + } + } + + if (path.isUnaryExpression({ + prefix: true + })) { + if (path.node.operator === "void") { + return undefined; + } + + const argument = path.get("argument"); + + if (path.node.operator === "typeof" && (argument.isFunction() || argument.isClass())) { + return "function"; + } + + const arg = evaluateCached(argument, state); + if (!state.confident) return; + + switch (path.node.operator) { + case "!": + return !arg; + + case "+": + return +arg; + + case "-": + return -arg; + + case "~": + return ~arg; + + case "typeof": + return typeof arg; + } + } + + if (path.isArrayExpression()) { + const arr = []; + const elems = path.get("elements"); + + for (const elem of elems) { + const elemValue = elem.evaluate(); + + if (elemValue.confident) { + arr.push(elemValue.value); + } else { + return deopt(elemValue.deopt, state); + } + } + + return arr; + } + + if (path.isObjectExpression()) { + const obj = {}; + const props = path.get("properties"); + + for (const prop of props) { + if (prop.isObjectMethod() || prop.isSpreadElement()) { + return deopt(prop, state); + } + + const keyPath = prop.get("key"); + let key = keyPath; + + if (prop.node.computed) { + key = key.evaluate(); + + if (!key.confident) { + return deopt(key.deopt, state); + } + + key = key.value; + } else if (key.isIdentifier()) { + key = key.node.name; + } else { + key = key.node.value; + } + + const valuePath = prop.get("value"); + let value = valuePath.evaluate(); + + if (!value.confident) { + return deopt(value.deopt, state); + } + + value = value.value; + obj[key] = value; + } + + return obj; + } + + if (path.isLogicalExpression()) { + const wasConfident = state.confident; + const left = evaluateCached(path.get("left"), state); + const leftConfident = state.confident; + state.confident = wasConfident; + const right = evaluateCached(path.get("right"), state); + const rightConfident = state.confident; + + switch (path.node.operator) { + case "||": + state.confident = leftConfident && (!!left || rightConfident); + if (!state.confident) return; + return left || right; + + case "&&": + state.confident = leftConfident && (!left || rightConfident); + if (!state.confident) return; + return left && right; + } + } + + if (path.isBinaryExpression()) { + const left = evaluateCached(path.get("left"), state); + if (!state.confident) return; + const right = evaluateCached(path.get("right"), state); + if (!state.confident) return; + + switch (path.node.operator) { + case "-": + return left - right; + + case "+": + return left + right; + + case "/": + return left / right; + + case "*": + return left * right; + + case "%": + return left % right; + + case "**": + return Math.pow(left, right); + + case "<": + return left < right; + + case ">": + return left > right; + + case "<=": + return left <= right; + + case ">=": + return left >= right; + + case "==": + return left == right; + + case "!=": + return left != right; + + case "===": + return left === right; + + case "!==": + return left !== right; + + case "|": + return left | right; + + case "&": + return left & right; + + case "^": + return left ^ right; + + case "<<": + return left << right; + + case ">>": + return left >> right; + + case ">>>": + return left >>> right; + } + } + + if (path.isCallExpression()) { + const callee = path.get("callee"); + let context; + let func; + + if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && VALID_CALLEES.indexOf(callee.node.name) >= 0) { + func = global[callee.node.name]; + } + + if (callee.isMemberExpression()) { + const object = callee.get("object"); + const property = callee.get("property"); + + if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0 && INVALID_METHODS.indexOf(property.node.name) < 0) { + context = global[object.node.name]; + func = context[property.node.name]; + } + + if (object.isLiteral() && property.isIdentifier()) { + const type = typeof object.node.value; + + if (type === "string" || type === "number") { + context = object.node.value; + func = context[property.node.name]; + } + } + } + + if (func) { + const args = path.get("arguments").map(arg => evaluateCached(arg, state)); + if (!state.confident) return; + return func.apply(context, args); + } + } + + deopt(path, state); +} + +function evaluateQuasis(path, quasis, state, raw = false) { + let str = ""; + let i = 0; + const exprs = path.get("expressions"); + + for (const elem of quasis) { + if (!state.confident) break; + str += raw ? elem.value.raw : elem.value.cooked; + const expr = exprs[i++]; + if (expr) str += String(evaluateCached(expr, state)); + } + + if (!state.confident) return; + return str; +} + +function evaluate() { + const state = { + confident: true, + deoptPath: null, + seen: new Map() + }; + let value = evaluateCached(this, state); + if (!state.confident) value = undefined; + return { + confident: state.confident, + deopt: state.deoptPath, + value: value + }; +} + +/***/ }), + +/***/ 35730: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getOpposite = getOpposite; +exports.getCompletionRecords = getCompletionRecords; +exports.getSibling = getSibling; +exports.getPrevSibling = getPrevSibling; +exports.getNextSibling = getNextSibling; +exports.getAllNextSiblings = getAllNextSiblings; +exports.getAllPrevSiblings = getAllPrevSiblings; +exports.get = get; +exports._getKey = _getKey; +exports._getPattern = _getPattern; +exports.getBindingIdentifiers = getBindingIdentifiers; +exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers; +exports.getBindingIdentifierPaths = getBindingIdentifierPaths; +exports.getOuterBindingIdentifierPaths = getOuterBindingIdentifierPaths; + +var _index = __nccwpck_require__(58308); + +var t = __nccwpck_require__(24479); + +const NORMAL_COMPLETION = 0; +const BREAK_COMPLETION = 1; + +function NormalCompletion(path) { + return { + type: NORMAL_COMPLETION, + path + }; +} + +function BreakCompletion(path) { + return { + type: BREAK_COMPLETION, + path + }; +} + +function getOpposite() { + if (this.key === "left") { + return this.getSibling("right"); + } else if (this.key === "right") { + return this.getSibling("left"); + } + + return null; +} + +function addCompletionRecords(path, records, context) { + if (path) return records.concat(_getCompletionRecords(path, context)); + return records; +} + +function completionRecordForSwitch(cases, records, context) { + let lastNormalCompletions = []; + + for (let i = 0; i < cases.length; i++) { + const casePath = cases[i]; + + const caseCompletions = _getCompletionRecords(casePath, context); + + const normalCompletions = []; + const breakCompletions = []; + + for (const c of caseCompletions) { + if (c.type === NORMAL_COMPLETION) { + normalCompletions.push(c); + } + + if (c.type === BREAK_COMPLETION) { + breakCompletions.push(c); + } + } + + if (normalCompletions.length) { + lastNormalCompletions = normalCompletions; + } + + records = records.concat(breakCompletions); + } + + records = records.concat(lastNormalCompletions); + return records; +} + +function normalCompletionToBreak(completions) { + completions.forEach(c => { + c.type = BREAK_COMPLETION; + }); +} + +function replaceBreakStatementInBreakCompletion(completions, reachable) { + completions.forEach(c => { + if (c.path.isBreakStatement({ + label: null + })) { + if (reachable) { + c.path.replaceWith(t.unaryExpression("void", t.numericLiteral(0))); + } else { + c.path.remove(); + } + } + }); +} + +function getStatementListCompletion(paths, context) { + let completions = []; + + if (context.canHaveBreak) { + let lastNormalCompletions = []; + + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + const newContext = Object.assign({}, context, { + inCaseClause: false + }); + + if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) { + newContext.shouldPopulateBreak = true; + } else { + newContext.shouldPopulateBreak = false; + } + + const statementCompletions = _getCompletionRecords(path, newContext); + + if (statementCompletions.length > 0 && statementCompletions.every(c => c.type === BREAK_COMPLETION)) { + if (lastNormalCompletions.length > 0 && statementCompletions.every(c => c.path.isBreakStatement({ + label: null + }))) { + normalCompletionToBreak(lastNormalCompletions); + completions = completions.concat(lastNormalCompletions); + + if (lastNormalCompletions.some(c => c.path.isDeclaration())) { + completions = completions.concat(statementCompletions); + replaceBreakStatementInBreakCompletion(statementCompletions, true); + } + + replaceBreakStatementInBreakCompletion(statementCompletions, false); + } else { + completions = completions.concat(statementCompletions); + + if (!context.shouldPopulateBreak) { + replaceBreakStatementInBreakCompletion(statementCompletions, true); + } + } + + break; + } + + if (i === paths.length - 1) { + completions = completions.concat(statementCompletions); + } else { + completions = completions.concat(statementCompletions.filter(c => c.type === BREAK_COMPLETION)); + lastNormalCompletions = statementCompletions.filter(c => c.type === NORMAL_COMPLETION); + } + } + } else if (paths.length) { + for (let i = paths.length - 1; i >= 0; i--) { + const pathCompletions = _getCompletionRecords(paths[i], context); + + if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration()) { + completions = completions.concat(pathCompletions); + break; + } + } + } + + return completions; +} + +function _getCompletionRecords(path, context) { + let records = []; + + if (path.isIfStatement()) { + records = addCompletionRecords(path.get("consequent"), records, context); + records = addCompletionRecords(path.get("alternate"), records, context); + } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) { + records = addCompletionRecords(path.get("body"), records, context); + } else if (path.isProgram() || path.isBlockStatement()) { + records = records.concat(getStatementListCompletion(path.get("body"), context)); + } else if (path.isFunction()) { + return _getCompletionRecords(path.get("body"), context); + } else if (path.isTryStatement()) { + records = addCompletionRecords(path.get("block"), records, context); + records = addCompletionRecords(path.get("handler"), records, context); + } else if (path.isCatchClause()) { + records = addCompletionRecords(path.get("body"), records, context); + } else if (path.isSwitchStatement()) { + records = completionRecordForSwitch(path.get("cases"), records, context); + } else if (path.isSwitchCase()) { + records = records.concat(getStatementListCompletion(path.get("consequent"), { + canHaveBreak: true, + shouldPopulateBreak: false, + inCaseClause: true + })); + } else if (path.isBreakStatement()) { + records.push(BreakCompletion(path)); + } else { + records.push(NormalCompletion(path)); + } + + return records; +} + +function getCompletionRecords() { + const records = _getCompletionRecords(this, { + canHaveBreak: false, + shouldPopulateBreak: false, + inCaseClause: false + }); + + return records.map(r => r.path); +} + +function getSibling(key) { + return _index.default.get({ + parentPath: this.parentPath, + parent: this.parent, + container: this.container, + listKey: this.listKey, + key: key + }).setContext(this.context); +} + +function getPrevSibling() { + return this.getSibling(this.key - 1); +} + +function getNextSibling() { + return this.getSibling(this.key + 1); +} + +function getAllNextSiblings() { + let _key = this.key; + let sibling = this.getSibling(++_key); + const siblings = []; + + while (sibling.node) { + siblings.push(sibling); + sibling = this.getSibling(++_key); + } + + return siblings; +} + +function getAllPrevSiblings() { + let _key = this.key; + let sibling = this.getSibling(--_key); + const siblings = []; + + while (sibling.node) { + siblings.push(sibling); + sibling = this.getSibling(--_key); + } + + return siblings; +} + +function get(key, context = true) { + if (context === true) context = this.context; + const parts = key.split("."); + + if (parts.length === 1) { + return this._getKey(key, context); + } else { + return this._getPattern(parts, context); + } +} + +function _getKey(key, context) { + const node = this.node; + const container = node[key]; + + if (Array.isArray(container)) { + return container.map((_, i) => { + return _index.default.get({ + listKey: key, + parentPath: this, + parent: node, + container: container, + key: i + }).setContext(context); + }); + } else { + return _index.default.get({ + parentPath: this, + parent: node, + container: node, + key: key + }).setContext(context); + } +} + +function _getPattern(parts, context) { + let path = this; + + for (const part of parts) { + if (part === ".") { + path = path.parentPath; + } else { + if (Array.isArray(path)) { + path = path[part]; + } else { + path = path.get(part, context); + } + } + } + + return path; +} + +function getBindingIdentifiers(duplicates) { + return t.getBindingIdentifiers(this.node, duplicates); +} + +function getOuterBindingIdentifiers(duplicates) { + return t.getOuterBindingIdentifiers(this.node, duplicates); +} + +function getBindingIdentifierPaths(duplicates = false, outerOnly = false) { + const path = this; + let search = [].concat(path); + const ids = Object.create(null); + + while (search.length) { + const id = search.shift(); + if (!id) continue; + if (!id.node) continue; + const keys = t.getBindingIdentifiers.keys[id.node.type]; + + if (id.isIdentifier()) { + if (duplicates) { + const _ids = ids[id.node.name] = ids[id.node.name] || []; + + _ids.push(id); + } else { + ids[id.node.name] = id; + } + + continue; + } + + if (id.isExportDeclaration()) { + const declaration = id.get("declaration"); + + if (declaration.isDeclaration()) { + search.push(declaration); + } + + continue; + } + + if (outerOnly) { + if (id.isFunctionDeclaration()) { + search.push(id.get("id")); + continue; + } + + if (id.isFunctionExpression()) { + continue; + } + } + + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const child = id.get(key); + + if (Array.isArray(child) || child.node) { + search = search.concat(child); + } + } + } + } + + return ids; +} + +function getOuterBindingIdentifierPaths(duplicates) { + return this.getBindingIdentifierPaths(duplicates, true); +} + +/***/ }), + +/***/ 58308: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.SHOULD_SKIP = exports.SHOULD_STOP = exports.REMOVED = void 0; + +var virtualTypes = __nccwpck_require__(89637); + +var _debug = __nccwpck_require__(67984); + +var _index = __nccwpck_require__(8631); + +var _scope = __nccwpck_require__(85079); + +var t = __nccwpck_require__(24479); + +var _cache = __nccwpck_require__(58897); + +var _generator = __nccwpck_require__(52685); + +var NodePath_ancestry = __nccwpck_require__(7178); + +var NodePath_inference = __nccwpck_require__(129); + +var NodePath_replacement = __nccwpck_require__(56372); + +var NodePath_evaluation = __nccwpck_require__(49890); + +var NodePath_conversion = __nccwpck_require__(10981); + +var NodePath_introspection = __nccwpck_require__(3553); + +var NodePath_context = __nccwpck_require__(47373); + +var NodePath_removal = __nccwpck_require__(41906); + +var NodePath_modification = __nccwpck_require__(40393); + +var NodePath_family = __nccwpck_require__(35730); + +var NodePath_comments = __nccwpck_require__(41022); + +const debug = _debug("babel"); + +const REMOVED = 1 << 0; +exports.REMOVED = REMOVED; +const SHOULD_STOP = 1 << 1; +exports.SHOULD_STOP = SHOULD_STOP; +const SHOULD_SKIP = 1 << 2; +exports.SHOULD_SKIP = SHOULD_SKIP; + +class NodePath { + constructor(hub, parent) { + this.contexts = []; + this.state = null; + this.opts = null; + this._traverseFlags = 0; + this.skipKeys = null; + this.parentPath = null; + this.container = null; + this.listKey = null; + this.key = null; + this.node = null; + this.type = null; + this.parent = parent; + this.hub = hub; + this.data = null; + this.context = null; + this.scope = null; + } + + static get({ + hub, + parentPath, + parent, + container, + listKey, + key + }) { + if (!hub && parentPath) { + hub = parentPath.hub; + } + + if (!parent) { + throw new Error("To get a node path the parent needs to exist"); + } + + const targetNode = container[key]; + + let paths = _cache.path.get(parent); + + if (!paths) { + paths = new Map(); + + _cache.path.set(parent, paths); + } + + let path = paths.get(targetNode); + + if (!path) { + path = new NodePath(hub, parent); + if (targetNode) paths.set(targetNode, path); + } + + path.setup(parentPath, container, listKey, key); + return path; + } + + getScope(scope) { + return this.isScope() ? new _scope.default(this) : scope; + } + + setData(key, val) { + if (this.data == null) { + this.data = Object.create(null); + } + + return this.data[key] = val; + } + + getData(key, def) { + if (this.data == null) { + this.data = Object.create(null); + } + + let val = this.data[key]; + if (val === undefined && def !== undefined) val = this.data[key] = def; + return val; + } + + buildCodeFrameError(msg, Error = SyntaxError) { + return this.hub.buildError(this.node, msg, Error); + } + + traverse(visitor, state) { + (0, _index.default)(this.node, visitor, this.scope, state, this); + } + + set(key, node) { + t.validate(this.node, key, node); + this.node[key] = node; + } + + getPathLocation() { + const parts = []; + let path = this; + + do { + let key = path.key; + if (path.inList) key = `${path.listKey}[${key}]`; + parts.unshift(key); + } while (path = path.parentPath); + + return parts.join("."); + } + + debug(message) { + if (!debug.enabled) return; + debug(`${this.getPathLocation()} ${this.type}: ${message}`); + } + + toString() { + return (0, _generator.default)(this.node).code; + } + + get inList() { + return !!this.listKey; + } + + set inList(inList) { + if (!inList) { + this.listKey = null; + } + } + + get parentKey() { + return this.listKey || this.key; + } + + get shouldSkip() { + return !!(this._traverseFlags & SHOULD_SKIP); + } + + set shouldSkip(v) { + if (v) { + this._traverseFlags |= SHOULD_SKIP; + } else { + this._traverseFlags &= ~SHOULD_SKIP; + } + } + + get shouldStop() { + return !!(this._traverseFlags & SHOULD_STOP); + } + + set shouldStop(v) { + if (v) { + this._traverseFlags |= SHOULD_STOP; + } else { + this._traverseFlags &= ~SHOULD_STOP; + } + } + + get removed() { + return !!(this._traverseFlags & REMOVED); + } + + set removed(v) { + if (v) { + this._traverseFlags |= REMOVED; + } else { + this._traverseFlags &= ~REMOVED; + } + } + +} + +Object.assign(NodePath.prototype, NodePath_ancestry, NodePath_inference, NodePath_replacement, NodePath_evaluation, NodePath_conversion, NodePath_introspection, NodePath_context, NodePath_removal, NodePath_modification, NodePath_family, NodePath_comments); + +for (const type of t.TYPES) { + const typeKey = `is${type}`; + const fn = t[typeKey]; + + NodePath.prototype[typeKey] = function (opts) { + return fn(this.node, opts); + }; + + NodePath.prototype[`assert${type}`] = function (opts) { + if (!fn(this.node, opts)) { + throw new TypeError(`Expected node path of type ${type}`); + } + }; +} + +for (const type of Object.keys(virtualTypes)) { + if (type[0] === "_") continue; + if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type); + const virtualType = virtualTypes[type]; + + NodePath.prototype[`is${type}`] = function (opts) { + return virtualType.checkPath(this, opts); + }; +} + +var _default = NodePath; +exports["default"] = _default; + +/***/ }), + +/***/ 129: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getTypeAnnotation = getTypeAnnotation; +exports._getTypeAnnotation = _getTypeAnnotation; +exports.isBaseType = isBaseType; +exports.couldBeBaseType = couldBeBaseType; +exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches; +exports.isGenericType = isGenericType; + +var inferers = __nccwpck_require__(6); + +var t = __nccwpck_require__(24479); + +function getTypeAnnotation() { + if (this.typeAnnotation) return this.typeAnnotation; + let type = this._getTypeAnnotation() || t.anyTypeAnnotation(); + if (t.isTypeAnnotation(type)) type = type.typeAnnotation; + return this.typeAnnotation = type; +} + +const typeAnnotationInferringNodes = new WeakSet(); + +function _getTypeAnnotation() { + const node = this.node; + + if (!node) { + if (this.key === "init" && this.parentPath.isVariableDeclarator()) { + const declar = this.parentPath.parentPath; + const declarParent = declar.parentPath; + + if (declar.key === "left" && declarParent.isForInStatement()) { + return t.stringTypeAnnotation(); + } + + if (declar.key === "left" && declarParent.isForOfStatement()) { + return t.anyTypeAnnotation(); + } + + return t.voidTypeAnnotation(); + } else { + return; + } + } + + if (node.typeAnnotation) { + return node.typeAnnotation; + } + + if (typeAnnotationInferringNodes.has(node)) { + return; + } + + typeAnnotationInferringNodes.add(node); + + try { + var _inferer; + + let inferer = inferers[node.type]; + + if (inferer) { + return inferer.call(this, node); + } + + inferer = inferers[this.parentPath.type]; + + if ((_inferer = inferer) != null && _inferer.validParent) { + return this.parentPath.getTypeAnnotation(); + } + } finally { + typeAnnotationInferringNodes.delete(node); + } +} + +function isBaseType(baseName, soft) { + return _isBaseType(baseName, this.getTypeAnnotation(), soft); +} + +function _isBaseType(baseName, type, soft) { + if (baseName === "string") { + return t.isStringTypeAnnotation(type); + } else if (baseName === "number") { + return t.isNumberTypeAnnotation(type); + } else if (baseName === "boolean") { + return t.isBooleanTypeAnnotation(type); + } else if (baseName === "any") { + return t.isAnyTypeAnnotation(type); + } else if (baseName === "mixed") { + return t.isMixedTypeAnnotation(type); + } else if (baseName === "empty") { + return t.isEmptyTypeAnnotation(type); + } else if (baseName === "void") { + return t.isVoidTypeAnnotation(type); + } else { + if (soft) { + return false; + } else { + throw new Error(`Unknown base type ${baseName}`); + } + } +} + +function couldBeBaseType(name) { + const type = this.getTypeAnnotation(); + if (t.isAnyTypeAnnotation(type)) return true; + + if (t.isUnionTypeAnnotation(type)) { + for (const type2 of type.types) { + if (t.isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) { + return true; + } + } + + return false; + } else { + return _isBaseType(name, type, true); + } +} + +function baseTypeStrictlyMatches(rightArg) { + const left = this.getTypeAnnotation(); + const right = rightArg.getTypeAnnotation(); + + if (!t.isAnyTypeAnnotation(left) && t.isFlowBaseAnnotation(left)) { + return right.type === left.type; + } + + return false; +} + +function isGenericType(genericName) { + const type = this.getTypeAnnotation(); + return t.isGenericTypeAnnotation(type) && t.isIdentifier(type.id, { + name: genericName + }); +} + +/***/ }), + +/***/ 59047: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; + +var t = __nccwpck_require__(24479); + +function _default(node) { + if (!this.isReferenced()) return; + const binding = this.scope.getBinding(node.name); + + if (binding) { + if (binding.identifier.typeAnnotation) { + return binding.identifier.typeAnnotation; + } else { + return getTypeAnnotationBindingConstantViolations(binding, this, node.name); + } + } + + if (node.name === "undefined") { + return t.voidTypeAnnotation(); + } else if (node.name === "NaN" || node.name === "Infinity") { + return t.numberTypeAnnotation(); + } else if (node.name === "arguments") {} +} + +function getTypeAnnotationBindingConstantViolations(binding, path, name) { + const types = []; + const functionConstantViolations = []; + let constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations); + const testType = getConditionalAnnotation(binding, path, name); + + if (testType) { + const testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement); + constantViolations = constantViolations.filter(path => testConstantViolations.indexOf(path) < 0); + types.push(testType.typeAnnotation); + } + + if (constantViolations.length) { + constantViolations = constantViolations.concat(functionConstantViolations); + + for (const violation of constantViolations) { + types.push(violation.getTypeAnnotation()); + } + } + + if (!types.length) { + return; + } + + if (t.isTSTypeAnnotation(types[0]) && t.createTSUnionType) { + return t.createTSUnionType(types); + } + + if (t.createFlowUnionType) { + return t.createFlowUnionType(types); + } + + return t.createUnionTypeAnnotation(types); +} + +function getConstantViolationsBefore(binding, path, functions) { + const violations = binding.constantViolations.slice(); + violations.unshift(binding.path); + return violations.filter(violation => { + violation = violation.resolve(); + + const status = violation._guessExecutionStatusRelativeTo(path); + + if (functions && status === "unknown") functions.push(violation); + return status === "before"; + }); +} + +function inferAnnotationFromBinaryExpression(name, path) { + const operator = path.node.operator; + const right = path.get("right").resolve(); + const left = path.get("left").resolve(); + let target; + + if (left.isIdentifier({ + name + })) { + target = right; + } else if (right.isIdentifier({ + name + })) { + target = left; + } + + if (target) { + if (operator === "===") { + return target.getTypeAnnotation(); + } + + if (t.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) { + return t.numberTypeAnnotation(); + } + + return; + } + + if (operator !== "===" && operator !== "==") return; + let typeofPath; + let typePath; + + if (left.isUnaryExpression({ + operator: "typeof" + })) { + typeofPath = left; + typePath = right; + } else if (right.isUnaryExpression({ + operator: "typeof" + })) { + typeofPath = right; + typePath = left; + } + + if (!typeofPath) return; + if (!typeofPath.get("argument").isIdentifier({ + name + })) return; + typePath = typePath.resolve(); + if (!typePath.isLiteral()) return; + const typeValue = typePath.node.value; + if (typeof typeValue !== "string") return; + return t.createTypeAnnotationBasedOnTypeof(typeValue); +} + +function getParentConditionalPath(binding, path, name) { + let parentPath; + + while (parentPath = path.parentPath) { + if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) { + if (path.key === "test") { + return; + } + + return parentPath; + } + + if (parentPath.isFunction()) { + if (parentPath.parentPath.scope.getBinding(name) !== binding) return; + } + + path = parentPath; + } +} + +function getConditionalAnnotation(binding, path, name) { + const ifStatement = getParentConditionalPath(binding, path, name); + if (!ifStatement) return; + const test = ifStatement.get("test"); + const paths = [test]; + const types = []; + + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + + if (path.isLogicalExpression()) { + if (path.node.operator === "&&") { + paths.push(path.get("left")); + paths.push(path.get("right")); + } + } else if (path.isBinaryExpression()) { + const type = inferAnnotationFromBinaryExpression(name, path); + if (type) types.push(type); + } + } + + if (types.length) { + if (t.isTSTypeAnnotation(types[0]) && t.createTSUnionType) { + return { + typeAnnotation: t.createTSUnionType(types), + ifStatement + }; + } + + if (t.createFlowUnionType) { + return { + typeAnnotation: t.createFlowUnionType(types), + ifStatement + }; + } + + return { + typeAnnotation: t.createUnionTypeAnnotation(types), + ifStatement + }; + } + + return getConditionalAnnotation(ifStatement, name); +} + +/***/ }), + +/***/ 6: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VariableDeclarator = VariableDeclarator; +exports.TypeCastExpression = TypeCastExpression; +exports.NewExpression = NewExpression; +exports.TemplateLiteral = TemplateLiteral; +exports.UnaryExpression = UnaryExpression; +exports.BinaryExpression = BinaryExpression; +exports.LogicalExpression = LogicalExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.SequenceExpression = SequenceExpression; +exports.ParenthesizedExpression = ParenthesizedExpression; +exports.AssignmentExpression = AssignmentExpression; +exports.UpdateExpression = UpdateExpression; +exports.StringLiteral = StringLiteral; +exports.NumericLiteral = NumericLiteral; +exports.BooleanLiteral = BooleanLiteral; +exports.NullLiteral = NullLiteral; +exports.RegExpLiteral = RegExpLiteral; +exports.ObjectExpression = ObjectExpression; +exports.ArrayExpression = ArrayExpression; +exports.RestElement = RestElement; +exports.ClassDeclaration = exports.ClassExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = exports.FunctionExpression = Func; +exports.CallExpression = CallExpression; +exports.TaggedTemplateExpression = TaggedTemplateExpression; +Object.defineProperty(exports, "Identifier", ({ + enumerable: true, + get: function () { + return _infererReference.default; + } +})); + +var t = __nccwpck_require__(24479); + +var _infererReference = __nccwpck_require__(59047); + +function VariableDeclarator() { + var _type; + + const id = this.get("id"); + if (!id.isIdentifier()) return; + const init = this.get("init"); + let type = init.getTypeAnnotation(); + + if (((_type = type) == null ? void 0 : _type.type) === "AnyTypeAnnotation") { + if (init.isCallExpression() && init.get("callee").isIdentifier({ + name: "Array" + }) && !init.scope.hasBinding("Array", true)) { + type = ArrayExpression(); + } + } + + return type; +} + +function TypeCastExpression(node) { + return node.typeAnnotation; +} + +TypeCastExpression.validParent = true; + +function NewExpression(node) { + if (this.get("callee").isIdentifier()) { + return t.genericTypeAnnotation(node.callee); + } +} + +function TemplateLiteral() { + return t.stringTypeAnnotation(); +} + +function UnaryExpression(node) { + const operator = node.operator; + + if (operator === "void") { + return t.voidTypeAnnotation(); + } else if (t.NUMBER_UNARY_OPERATORS.indexOf(operator) >= 0) { + return t.numberTypeAnnotation(); + } else if (t.STRING_UNARY_OPERATORS.indexOf(operator) >= 0) { + return t.stringTypeAnnotation(); + } else if (t.BOOLEAN_UNARY_OPERATORS.indexOf(operator) >= 0) { + return t.booleanTypeAnnotation(); + } +} + +function BinaryExpression(node) { + const operator = node.operator; + + if (t.NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) { + return t.numberTypeAnnotation(); + } else if (t.BOOLEAN_BINARY_OPERATORS.indexOf(operator) >= 0) { + return t.booleanTypeAnnotation(); + } else if (operator === "+") { + const right = this.get("right"); + const left = this.get("left"); + + if (left.isBaseType("number") && right.isBaseType("number")) { + return t.numberTypeAnnotation(); + } else if (left.isBaseType("string") || right.isBaseType("string")) { + return t.stringTypeAnnotation(); + } + + return t.unionTypeAnnotation([t.stringTypeAnnotation(), t.numberTypeAnnotation()]); + } +} + +function LogicalExpression() { + const argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()]; + + if (t.isTSTypeAnnotation(argumentTypes[0]) && t.createTSUnionType) { + return t.createTSUnionType(argumentTypes); + } + + if (t.createFlowUnionType) { + return t.createFlowUnionType(argumentTypes); + } + + return t.createUnionTypeAnnotation(argumentTypes); +} + +function ConditionalExpression() { + const argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()]; + + if (t.isTSTypeAnnotation(argumentTypes[0]) && t.createTSUnionType) { + return t.createTSUnionType(argumentTypes); + } + + if (t.createFlowUnionType) { + return t.createFlowUnionType(argumentTypes); + } + + return t.createUnionTypeAnnotation(argumentTypes); +} + +function SequenceExpression() { + return this.get("expressions").pop().getTypeAnnotation(); +} + +function ParenthesizedExpression() { + return this.get("expression").getTypeAnnotation(); +} + +function AssignmentExpression() { + return this.get("right").getTypeAnnotation(); +} + +function UpdateExpression(node) { + const operator = node.operator; + + if (operator === "++" || operator === "--") { + return t.numberTypeAnnotation(); + } +} + +function StringLiteral() { + return t.stringTypeAnnotation(); +} + +function NumericLiteral() { + return t.numberTypeAnnotation(); +} + +function BooleanLiteral() { + return t.booleanTypeAnnotation(); +} + +function NullLiteral() { + return t.nullLiteralTypeAnnotation(); +} + +function RegExpLiteral() { + return t.genericTypeAnnotation(t.identifier("RegExp")); +} + +function ObjectExpression() { + return t.genericTypeAnnotation(t.identifier("Object")); +} + +function ArrayExpression() { + return t.genericTypeAnnotation(t.identifier("Array")); +} + +function RestElement() { + return ArrayExpression(); +} + +RestElement.validParent = true; + +function Func() { + return t.genericTypeAnnotation(t.identifier("Function")); +} + +const isArrayFrom = t.buildMatchMemberExpression("Array.from"); +const isObjectKeys = t.buildMatchMemberExpression("Object.keys"); +const isObjectValues = t.buildMatchMemberExpression("Object.values"); +const isObjectEntries = t.buildMatchMemberExpression("Object.entries"); + +function CallExpression() { + const { + callee + } = this.node; + + if (isObjectKeys(callee)) { + return t.arrayTypeAnnotation(t.stringTypeAnnotation()); + } else if (isArrayFrom(callee) || isObjectValues(callee)) { + return t.arrayTypeAnnotation(t.anyTypeAnnotation()); + } else if (isObjectEntries(callee)) { + return t.arrayTypeAnnotation(t.tupleTypeAnnotation([t.stringTypeAnnotation(), t.anyTypeAnnotation()])); + } + + return resolveCall(this.get("callee")); +} + +function TaggedTemplateExpression() { + return resolveCall(this.get("tag")); +} + +function resolveCall(callee) { + callee = callee.resolve(); + + if (callee.isFunction()) { + if (callee.is("async")) { + if (callee.is("generator")) { + return t.genericTypeAnnotation(t.identifier("AsyncIterator")); + } else { + return t.genericTypeAnnotation(t.identifier("Promise")); + } + } else { + if (callee.node.returnType) { + return callee.node.returnType; + } else {} + } + } +} + +/***/ }), + +/***/ 3553: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.matchesPattern = matchesPattern; +exports.has = has; +exports.isStatic = isStatic; +exports.isnt = isnt; +exports.equals = equals; +exports.isNodeType = isNodeType; +exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression; +exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement; +exports.isCompletionRecord = isCompletionRecord; +exports.isStatementOrBlock = isStatementOrBlock; +exports.referencesImport = referencesImport; +exports.getSource = getSource; +exports.willIMaybeExecuteBefore = willIMaybeExecuteBefore; +exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo; +exports._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeToDifferentFunctions; +exports.resolve = resolve; +exports._resolve = _resolve; +exports.isConstantExpression = isConstantExpression; +exports.isInStrictMode = isInStrictMode; +exports.is = void 0; + +var t = __nccwpck_require__(24479); + +function matchesPattern(pattern, allowPartial) { + return t.matchesPattern(this.node, pattern, allowPartial); +} + +function has(key) { + const val = this.node && this.node[key]; + + if (val && Array.isArray(val)) { + return !!val.length; + } else { + return !!val; + } +} + +function isStatic() { + return this.scope.isStatic(this.node); +} + +const is = has; +exports.is = is; + +function isnt(key) { + return !this.has(key); +} + +function equals(key, value) { + return this.node[key] === value; +} + +function isNodeType(type) { + return t.isType(this.type, type); +} + +function canHaveVariableDeclarationOrExpression() { + return (this.key === "init" || this.key === "left") && this.parentPath.isFor(); +} + +function canSwapBetweenExpressionAndStatement(replacement) { + if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) { + return false; + } + + if (this.isExpression()) { + return t.isBlockStatement(replacement); + } else if (this.isBlockStatement()) { + return t.isExpression(replacement); + } + + return false; +} + +function isCompletionRecord(allowInsideFunction) { + let path = this; + let first = true; + + do { + const container = path.container; + + if (path.isFunction() && !first) { + return !!allowInsideFunction; + } + + first = false; + + if (Array.isArray(container) && path.key !== container.length - 1) { + return false; + } + } while ((path = path.parentPath) && !path.isProgram()); + + return true; +} + +function isStatementOrBlock() { + if (this.parentPath.isLabeledStatement() || t.isBlockStatement(this.container)) { + return false; + } else { + return t.STATEMENT_OR_BLOCK_KEYS.includes(this.key); + } +} + +function referencesImport(moduleSource, importName) { + if (!this.isReferencedIdentifier()) { + if ((this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? t.isStringLiteral(this.node.property, { + value: importName + }) : this.node.property.name === importName)) { + const object = this.get("object"); + return object.isReferencedIdentifier() && object.referencesImport(moduleSource, "*"); + } + + return false; + } + + const binding = this.scope.getBinding(this.node.name); + if (!binding || binding.kind !== "module") return false; + const path = binding.path; + const parent = path.parentPath; + if (!parent.isImportDeclaration()) return false; + + if (parent.node.source.value === moduleSource) { + if (!importName) return true; + } else { + return false; + } + + if (path.isImportDefaultSpecifier() && importName === "default") { + return true; + } + + if (path.isImportNamespaceSpecifier() && importName === "*") { + return true; + } + + if (path.isImportSpecifier() && t.isIdentifier(path.node.imported, { + name: importName + })) { + return true; + } + + return false; +} + +function getSource() { + const node = this.node; + + if (node.end) { + const code = this.hub.getCode(); + if (code) return code.slice(node.start, node.end); + } + + return ""; +} + +function willIMaybeExecuteBefore(target) { + return this._guessExecutionStatusRelativeTo(target) !== "after"; +} + +function getOuterFunction(path) { + return (path.scope.getFunctionParent() || path.scope.getProgramParent()).path; +} + +function isExecutionUncertain(type, key) { + switch (type) { + case "LogicalExpression": + return key === "right"; + + case "ConditionalExpression": + case "IfStatement": + return key === "consequent" || key === "alternate"; + + case "WhileStatement": + case "DoWhileStatement": + case "ForInStatement": + case "ForOfStatement": + return key === "body"; + + case "ForStatement": + return key === "body" || key === "update"; + + case "SwitchStatement": + return key === "cases"; + + case "TryStatement": + return key === "handler"; + + case "AssignmentPattern": + return key === "right"; + + case "OptionalMemberExpression": + return key === "property"; + + case "OptionalCallExpression": + return key === "arguments"; + + default: + return false; + } +} + +function isExecutionUncertainInList(paths, maxIndex) { + for (let i = 0; i < maxIndex; i++) { + const path = paths[i]; + + if (isExecutionUncertain(path.parent.type, path.parentKey)) { + return true; + } + } + + return false; +} + +function _guessExecutionStatusRelativeTo(target) { + const funcParent = { + this: getOuterFunction(this), + target: getOuterFunction(target) + }; + + if (funcParent.target.node !== funcParent.this.node) { + return this._guessExecutionStatusRelativeToDifferentFunctions(funcParent.target); + } + + const paths = { + target: target.getAncestry(), + this: this.getAncestry() + }; + if (paths.target.indexOf(this) >= 0) return "after"; + if (paths.this.indexOf(target) >= 0) return "before"; + let commonPath; + const commonIndex = { + target: 0, + this: 0 + }; + + while (!commonPath && commonIndex.this < paths.this.length) { + const path = paths.this[commonIndex.this]; + commonIndex.target = paths.target.indexOf(path); + + if (commonIndex.target >= 0) { + commonPath = path; + } else { + commonIndex.this++; + } + } + + if (!commonPath) { + throw new Error("Internal Babel error - The two compared nodes" + " don't appear to belong to the same program."); + } + + if (isExecutionUncertainInList(paths.this, commonIndex.this - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) { + return "unknown"; + } + + const divergence = { + this: paths.this[commonIndex.this - 1], + target: paths.target[commonIndex.target - 1] + }; + + if (divergence.target.listKey && divergence.this.listKey && divergence.target.container === divergence.this.container) { + return divergence.target.key > divergence.this.key ? "before" : "after"; + } + + const keys = t.VISITOR_KEYS[commonPath.type]; + const keyPosition = { + this: keys.indexOf(divergence.this.parentKey), + target: keys.indexOf(divergence.target.parentKey) + }; + return keyPosition.target > keyPosition.this ? "before" : "after"; +} + +const executionOrderCheckedNodes = new WeakSet(); + +function _guessExecutionStatusRelativeToDifferentFunctions(target) { + if (!target.isFunctionDeclaration() || target.parentPath.isExportDeclaration()) { + return "unknown"; + } + + const binding = target.scope.getBinding(target.node.id.name); + if (!binding.references) return "before"; + const referencePaths = binding.referencePaths; + let allStatus; + + for (const path of referencePaths) { + const childOfFunction = !!path.find(path => path.node === target.node); + if (childOfFunction) continue; + + if (path.key !== "callee" || !path.parentPath.isCallExpression()) { + return "unknown"; + } + + if (executionOrderCheckedNodes.has(path.node)) continue; + executionOrderCheckedNodes.add(path.node); + + const status = this._guessExecutionStatusRelativeTo(path); + + executionOrderCheckedNodes.delete(path.node); + + if (allStatus && allStatus !== status) { + return "unknown"; + } else { + allStatus = status; + } + } + + return allStatus; +} + +function resolve(dangerous, resolved) { + return this._resolve(dangerous, resolved) || this; +} + +function _resolve(dangerous, resolved) { + if (resolved && resolved.indexOf(this) >= 0) return; + resolved = resolved || []; + resolved.push(this); + + if (this.isVariableDeclarator()) { + if (this.get("id").isIdentifier()) { + return this.get("init").resolve(dangerous, resolved); + } else {} + } else if (this.isReferencedIdentifier()) { + const binding = this.scope.getBinding(this.node.name); + if (!binding) return; + if (!binding.constant) return; + if (binding.kind === "module") return; + + if (binding.path !== this) { + const ret = binding.path.resolve(dangerous, resolved); + if (this.find(parent => parent.node === ret.node)) return; + return ret; + } + } else if (this.isTypeCastExpression()) { + return this.get("expression").resolve(dangerous, resolved); + } else if (dangerous && this.isMemberExpression()) { + const targetKey = this.toComputedKey(); + if (!t.isLiteral(targetKey)) return; + const targetName = targetKey.value; + const target = this.get("object").resolve(dangerous, resolved); + + if (target.isObjectExpression()) { + const props = target.get("properties"); + + for (const prop of props) { + if (!prop.isProperty()) continue; + const key = prop.get("key"); + let match = prop.isnt("computed") && key.isIdentifier({ + name: targetName + }); + match = match || key.isLiteral({ + value: targetName + }); + if (match) return prop.get("value").resolve(dangerous, resolved); + } + } else if (target.isArrayExpression() && !isNaN(+targetName)) { + const elems = target.get("elements"); + const elem = elems[targetName]; + if (elem) return elem.resolve(dangerous, resolved); + } + } +} + +function isConstantExpression() { + if (this.isIdentifier()) { + const binding = this.scope.getBinding(this.node.name); + if (!binding) return false; + return binding.constant; + } + + if (this.isLiteral()) { + if (this.isRegExpLiteral()) { + return false; + } + + if (this.isTemplateLiteral()) { + return this.get("expressions").every(expression => expression.isConstantExpression()); + } + + return true; + } + + if (this.isUnaryExpression()) { + if (this.node.operator !== "void") { + return false; + } + + return this.get("argument").isConstantExpression(); + } + + if (this.isBinaryExpression()) { + return this.get("left").isConstantExpression() && this.get("right").isConstantExpression(); + } + + return false; +} + +function isInStrictMode() { + const start = this.isProgram() ? this : this.parentPath; + const strictParent = start.find(path => { + if (path.isProgram({ + sourceType: "module" + })) return true; + if (path.isClass()) return true; + if (!path.isProgram() && !path.isFunction()) return false; + + if (path.isArrowFunctionExpression() && !path.get("body").isBlockStatement()) { + return false; + } + + const body = path.isFunction() ? path.node.body : path.node; + + for (const directive of body.directives) { + if (directive.value.value === "use strict") { + return true; + } + } + }); + return !!strictParent; +} + +/***/ }), + +/***/ 80321: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var t = __nccwpck_require__(24479); + +const referenceVisitor = { + ReferencedIdentifier(path, state) { + if (path.isJSXIdentifier() && t.react.isCompatTag(path.node.name) && !path.parentPath.isJSXMemberExpression()) { + return; + } + + if (path.node.name === "this") { + let scope = path.scope; + + do { + if (scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) { + break; + } + } while (scope = scope.parent); + + if (scope) state.breakOnScopePaths.push(scope.path); + } + + const binding = path.scope.getBinding(path.node.name); + if (!binding) return; + + for (const violation of binding.constantViolations) { + if (violation.scope !== binding.path.scope) { + state.mutableBinding = true; + path.stop(); + return; + } + } + + if (binding !== state.scope.getBinding(path.node.name)) return; + state.bindings[path.node.name] = binding; + } + +}; + +class PathHoister { + constructor(path, scope) { + this.breakOnScopePaths = void 0; + this.bindings = void 0; + this.mutableBinding = void 0; + this.scopes = void 0; + this.scope = void 0; + this.path = void 0; + this.attachAfter = void 0; + this.breakOnScopePaths = []; + this.bindings = {}; + this.mutableBinding = false; + this.scopes = []; + this.scope = scope; + this.path = path; + this.attachAfter = false; + } + + isCompatibleScope(scope) { + for (const key of Object.keys(this.bindings)) { + const binding = this.bindings[key]; + + if (!scope.bindingIdentifierEquals(key, binding.identifier)) { + return false; + } + } + + return true; + } + + getCompatibleScopes() { + let scope = this.path.scope; + + do { + if (this.isCompatibleScope(scope)) { + this.scopes.push(scope); + } else { + break; + } + + if (this.breakOnScopePaths.indexOf(scope.path) >= 0) { + break; + } + } while (scope = scope.parent); + } + + getAttachmentPath() { + let path = this._getAttachmentPath(); + + if (!path) return; + let targetScope = path.scope; + + if (targetScope.path === path) { + targetScope = path.scope.parent; + } + + if (targetScope.path.isProgram() || targetScope.path.isFunction()) { + for (const name of Object.keys(this.bindings)) { + if (!targetScope.hasOwnBinding(name)) continue; + const binding = this.bindings[name]; + + if (binding.kind === "param" || binding.path.parentKey === "params") { + continue; + } + + const bindingParentPath = this.getAttachmentParentForPath(binding.path); + + if (bindingParentPath.key >= path.key) { + this.attachAfter = true; + path = binding.path; + + for (const violationPath of binding.constantViolations) { + if (this.getAttachmentParentForPath(violationPath).key > path.key) { + path = violationPath; + } + } + } + } + } + + return path; + } + + _getAttachmentPath() { + const scopes = this.scopes; + const scope = scopes.pop(); + if (!scope) return; + + if (scope.path.isFunction()) { + if (this.hasOwnParamBindings(scope)) { + if (this.scope === scope) return; + const bodies = scope.path.get("body").get("body"); + + for (let i = 0; i < bodies.length; i++) { + if (bodies[i].node._blockHoist) continue; + return bodies[i]; + } + } else { + return this.getNextScopeAttachmentParent(); + } + } else if (scope.path.isProgram()) { + return this.getNextScopeAttachmentParent(); + } + } + + getNextScopeAttachmentParent() { + const scope = this.scopes.pop(); + if (scope) return this.getAttachmentParentForPath(scope.path); + } + + getAttachmentParentForPath(path) { + do { + if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) { + return path; + } + } while (path = path.parentPath); + } + + hasOwnParamBindings(scope) { + for (const name of Object.keys(this.bindings)) { + if (!scope.hasOwnBinding(name)) continue; + const binding = this.bindings[name]; + if (binding.kind === "param" && binding.constant) return true; + } + + return false; + } + + run() { + this.path.traverse(referenceVisitor, this); + if (this.mutableBinding) return; + this.getCompatibleScopes(); + const attachTo = this.getAttachmentPath(); + if (!attachTo) return; + if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return; + let uid = attachTo.scope.generateUidIdentifier("ref"); + const declarator = t.variableDeclarator(uid, this.path.node); + const insertFn = this.attachAfter ? "insertAfter" : "insertBefore"; + const [attached] = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : t.variableDeclaration("var", [declarator])]); + const parent = this.path.parentPath; + + if (parent.isJSXElement() && this.path.container === parent.node.children) { + uid = t.jsxExpressionContainer(uid); + } + + this.path.replaceWith(t.cloneNode(uid)); + return attachTo.isVariableDeclarator() ? attached.get("init") : attached.get("declarations.0.init"); + } + +} + +exports["default"] = PathHoister; + +/***/ }), + +/***/ 79574: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hooks = void 0; +const hooks = [function (self, parent) { + const removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement(); + + if (removeParent) { + parent.remove(); + return true; + } +}, function (self, parent) { + if (parent.isSequenceExpression() && parent.node.expressions.length === 1) { + parent.replaceWith(parent.node.expressions[0]); + return true; + } +}, function (self, parent) { + if (parent.isBinary()) { + if (self.key === "left") { + parent.replaceWith(parent.node.right); + } else { + parent.replaceWith(parent.node.left); + } + + return true; + } +}, function (self, parent) { + if (parent.isIfStatement() && (self.key === "consequent" || self.key === "alternate") || self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression())) { + self.replaceWith({ + type: "BlockStatement", + body: [] + }); + return true; + } +}]; +exports.hooks = hooks; + +/***/ }), + +/***/ 89637: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ForAwaitStatement = exports.NumericLiteralTypeAnnotation = exports.ExistentialTypeParam = exports.SpreadProperty = exports.RestProperty = exports.Flow = exports.Pure = exports.Generated = exports.User = exports.Var = exports.BlockScoped = exports.Referenced = exports.Scope = exports.Expression = exports.Statement = exports.BindingIdentifier = exports.ReferencedMemberExpression = exports.ReferencedIdentifier = void 0; + +var t = __nccwpck_require__(24479); + +const ReferencedIdentifier = { + types: ["Identifier", "JSXIdentifier"], + + checkPath(path, opts) { + const { + node, + parent + } = path; + + if (!t.isIdentifier(node, opts) && !t.isJSXMemberExpression(parent, opts)) { + if (t.isJSXIdentifier(node, opts)) { + if (t.react.isCompatTag(node.name)) return false; + } else { + return false; + } + } + + return t.isReferenced(node, parent, path.parentPath.parent); + } + +}; +exports.ReferencedIdentifier = ReferencedIdentifier; +const ReferencedMemberExpression = { + types: ["MemberExpression"], + + checkPath({ + node, + parent + }) { + return t.isMemberExpression(node) && t.isReferenced(node, parent); + } + +}; +exports.ReferencedMemberExpression = ReferencedMemberExpression; +const BindingIdentifier = { + types: ["Identifier"], + + checkPath(path) { + const { + node, + parent + } = path; + const grandparent = path.parentPath.parent; + return t.isIdentifier(node) && t.isBinding(node, parent, grandparent); + } + +}; +exports.BindingIdentifier = BindingIdentifier; +const Statement = { + types: ["Statement"], + + checkPath({ + node, + parent + }) { + if (t.isStatement(node)) { + if (t.isVariableDeclaration(node)) { + if (t.isForXStatement(parent, { + left: node + })) return false; + if (t.isForStatement(parent, { + init: node + })) return false; + } + + return true; + } else { + return false; + } + } + +}; +exports.Statement = Statement; +const Expression = { + types: ["Expression"], + + checkPath(path) { + if (path.isIdentifier()) { + return path.isReferencedIdentifier(); + } else { + return t.isExpression(path.node); + } + } + +}; +exports.Expression = Expression; +const Scope = { + types: ["Scopable", "Pattern"], + + checkPath(path) { + return t.isScope(path.node, path.parent); + } + +}; +exports.Scope = Scope; +const Referenced = { + checkPath(path) { + return t.isReferenced(path.node, path.parent); + } + +}; +exports.Referenced = Referenced; +const BlockScoped = { + checkPath(path) { + return t.isBlockScoped(path.node); + } + +}; +exports.BlockScoped = BlockScoped; +const Var = { + types: ["VariableDeclaration"], + + checkPath(path) { + return t.isVar(path.node); + } + +}; +exports.Var = Var; +const User = { + checkPath(path) { + return path.node && !!path.node.loc; + } + +}; +exports.User = User; +const Generated = { + checkPath(path) { + return !path.isUser(); + } + +}; +exports.Generated = Generated; +const Pure = { + checkPath(path, opts) { + return path.scope.isPure(path.node, opts); + } + +}; +exports.Pure = Pure; +const Flow = { + types: ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"], + + checkPath({ + node + }) { + if (t.isFlow(node)) { + return true; + } else if (t.isImportDeclaration(node)) { + return node.importKind === "type" || node.importKind === "typeof"; + } else if (t.isExportDeclaration(node)) { + return node.exportKind === "type"; + } else if (t.isImportSpecifier(node)) { + return node.importKind === "type" || node.importKind === "typeof"; + } else { + return false; + } + } + +}; +exports.Flow = Flow; +const RestProperty = { + types: ["RestElement"], + + checkPath(path) { + return path.parentPath && path.parentPath.isObjectPattern(); + } + +}; +exports.RestProperty = RestProperty; +const SpreadProperty = { + types: ["RestElement"], + + checkPath(path) { + return path.parentPath && path.parentPath.isObjectExpression(); + } + +}; +exports.SpreadProperty = SpreadProperty; +const ExistentialTypeParam = { + types: ["ExistsTypeAnnotation"] +}; +exports.ExistentialTypeParam = ExistentialTypeParam; +const NumericLiteralTypeAnnotation = { + types: ["NumberLiteralTypeAnnotation"] +}; +exports.NumericLiteralTypeAnnotation = NumericLiteralTypeAnnotation; +const ForAwaitStatement = { + types: ["ForOfStatement"], + + checkPath({ + node + }) { + return node.await === true; + } + +}; +exports.ForAwaitStatement = ForAwaitStatement; + +/***/ }), + +/***/ 40393: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.insertBefore = insertBefore; +exports._containerInsert = _containerInsert; +exports._containerInsertBefore = _containerInsertBefore; +exports._containerInsertAfter = _containerInsertAfter; +exports.insertAfter = insertAfter; +exports.updateSiblingKeys = updateSiblingKeys; +exports._verifyNodeList = _verifyNodeList; +exports.unshiftContainer = unshiftContainer; +exports.pushContainer = pushContainer; +exports.hoist = hoist; + +var _cache = __nccwpck_require__(58897); + +var _hoister = __nccwpck_require__(80321); + +var _index = __nccwpck_require__(58308); + +var t = __nccwpck_require__(24479); + +function insertBefore(nodes_) { + this._assertUnremoved(); + + const nodes = this._verifyNodeList(nodes_); + + const { + parentPath + } = this; + + if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || parentPath.isExportNamedDeclaration() || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) { + return parentPath.insertBefore(nodes); + } else if (this.isNodeType("Expression") && !this.isJSXElement() || parentPath.isForStatement() && this.key === "init") { + if (this.node) nodes.push(this.node); + return this.replaceExpressionWithStatements(nodes); + } else if (Array.isArray(this.container)) { + return this._containerInsertBefore(nodes); + } else if (this.isStatementOrBlock()) { + const node = this.node; + const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null); + this.replaceWith(t.blockStatement(shouldInsertCurrentNode ? [node] : [])); + return this.unshiftContainer("body", nodes); + } else { + throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?"); + } +} + +function _containerInsert(from, nodes) { + this.updateSiblingKeys(from, nodes.length); + const paths = []; + this.container.splice(from, 0, ...nodes); + + for (let i = 0; i < nodes.length; i++) { + const to = from + i; + const path = this.getSibling(to); + paths.push(path); + + if (this.context && this.context.queue) { + path.pushContext(this.context); + } + } + + const contexts = this._getQueueContexts(); + + for (const path of paths) { + path.setScope(); + path.debug("Inserted."); + + for (const context of contexts) { + context.maybeQueue(path, true); + } + } + + return paths; +} + +function _containerInsertBefore(nodes) { + return this._containerInsert(this.key, nodes); +} + +function _containerInsertAfter(nodes) { + return this._containerInsert(this.key + 1, nodes); +} + +function insertAfter(nodes_) { + this._assertUnremoved(); + + const nodes = this._verifyNodeList(nodes_); + + const { + parentPath + } = this; + + if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || parentPath.isExportNamedDeclaration() || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) { + return parentPath.insertAfter(nodes.map(node => { + return t.isExpression(node) ? t.expressionStatement(node) : node; + })); + } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") { + if (this.node) { + const node = this.node; + let { + scope + } = this; + + if (scope.path.isPattern()) { + t.assertExpression(node); + this.replaceWith(t.callExpression(t.arrowFunctionExpression([], node), [])); + this.get("callee.body").insertAfter(nodes); + return [this]; + } + + if (parentPath.isMethod({ + computed: true, + key: node + })) { + scope = scope.parent; + } + + const temp = scope.generateDeclaredUidIdentifier(); + nodes.unshift(t.expressionStatement(t.assignmentExpression("=", t.cloneNode(temp), node))); + nodes.push(t.expressionStatement(t.cloneNode(temp))); + } + + return this.replaceExpressionWithStatements(nodes); + } else if (Array.isArray(this.container)) { + return this._containerInsertAfter(nodes); + } else if (this.isStatementOrBlock()) { + const node = this.node; + const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null); + this.replaceWith(t.blockStatement(shouldInsertCurrentNode ? [node] : [])); + return this.pushContainer("body", nodes); + } else { + throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?"); + } +} + +function updateSiblingKeys(fromIndex, incrementBy) { + if (!this.parent) return; + + const paths = _cache.path.get(this.parent); + + for (const [, path] of paths) { + if (path.key >= fromIndex) { + path.key += incrementBy; + } + } +} + +function _verifyNodeList(nodes) { + if (!nodes) { + return []; + } + + if (!Array.isArray(nodes)) { + nodes = [nodes]; + } + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + let msg; + + if (!node) { + msg = "has falsy node"; + } else if (typeof node !== "object") { + msg = "contains a non-object node"; + } else if (!node.type) { + msg = "without a type"; + } else if (node instanceof _index.default) { + msg = "has a NodePath when it expected a raw object"; + } + + if (msg) { + const type = Array.isArray(node) ? "array" : typeof node; + throw new Error(`Node list ${msg} with the index of ${i} and type of ${type}`); + } + } + + return nodes; +} + +function unshiftContainer(listKey, nodes) { + this._assertUnremoved(); + + nodes = this._verifyNodeList(nodes); + + const path = _index.default.get({ + parentPath: this, + parent: this.node, + container: this.node[listKey], + listKey, + key: 0 + }).setContext(this.context); + + return path._containerInsertBefore(nodes); +} + +function pushContainer(listKey, nodes) { + this._assertUnremoved(); + + const verifiedNodes = this._verifyNodeList(nodes); + + const container = this.node[listKey]; + + const path = _index.default.get({ + parentPath: this, + parent: this.node, + container: container, + listKey, + key: container.length + }).setContext(this.context); + + return path.replaceWithMultiple(verifiedNodes); +} + +function hoist(scope = this.scope) { + const hoister = new _hoister.default(this, scope); + return hoister.run(); +} + +/***/ }), + +/***/ 41906: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.remove = remove; +exports._removeFromScope = _removeFromScope; +exports._callRemovalHooks = _callRemovalHooks; +exports._remove = _remove; +exports._markRemoved = _markRemoved; +exports._assertUnremoved = _assertUnremoved; + +var _removalHooks = __nccwpck_require__(79574); + +var _cache = __nccwpck_require__(58897); + +var _index = __nccwpck_require__(58308); + +function remove() { + var _this$opts; + + this._assertUnremoved(); + + this.resync(); + + if (!((_this$opts = this.opts) != null && _this$opts.noScope)) { + this._removeFromScope(); + } + + if (this._callRemovalHooks()) { + this._markRemoved(); + + return; + } + + this.shareCommentsWithSiblings(); + + this._remove(); + + this._markRemoved(); +} + +function _removeFromScope() { + const bindings = this.getBindingIdentifiers(); + Object.keys(bindings).forEach(name => this.scope.removeBinding(name)); +} + +function _callRemovalHooks() { + for (const fn of _removalHooks.hooks) { + if (fn(this, this.parentPath)) return true; + } +} + +function _remove() { + if (Array.isArray(this.container)) { + this.container.splice(this.key, 1); + this.updateSiblingKeys(this.key, -1); + } else { + this._replaceWith(null); + } +} + +function _markRemoved() { + this._traverseFlags |= _index.SHOULD_SKIP | _index.REMOVED; + if (this.parent) _cache.path.get(this.parent).delete(this.node); + this.node = null; +} + +function _assertUnremoved() { + if (this.removed) { + throw this.buildCodeFrameError("NodePath has been removed so is read-only."); + } +} + +/***/ }), + +/***/ 56372: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.replaceWithMultiple = replaceWithMultiple; +exports.replaceWithSourceString = replaceWithSourceString; +exports.replaceWith = replaceWith; +exports._replaceWith = _replaceWith; +exports.replaceExpressionWithStatements = replaceExpressionWithStatements; +exports.replaceInline = replaceInline; + +var _codeFrame = __nccwpck_require__(47548); + +var _index = __nccwpck_require__(8631); + +var _index2 = __nccwpck_require__(58308); + +var _cache = __nccwpck_require__(58897); + +var _parser = __nccwpck_require__(89302); + +var t = __nccwpck_require__(24479); + +var _helperHoistVariables = __nccwpck_require__(75327); + +function replaceWithMultiple(nodes) { + var _pathCache$get; + + this.resync(); + nodes = this._verifyNodeList(nodes); + t.inheritLeadingComments(nodes[0], this.node); + t.inheritTrailingComments(nodes[nodes.length - 1], this.node); + (_pathCache$get = _cache.path.get(this.parent)) == null ? void 0 : _pathCache$get.delete(this.node); + this.node = this.container[this.key] = null; + const paths = this.insertAfter(nodes); + + if (this.node) { + this.requeue(); + } else { + this.remove(); + } + + return paths; +} + +function replaceWithSourceString(replacement) { + this.resync(); + + try { + replacement = `(${replacement})`; + replacement = (0, _parser.parse)(replacement); + } catch (err) { + const loc = err.loc; + + if (loc) { + err.message += " - make sure this is an expression.\n" + (0, _codeFrame.codeFrameColumns)(replacement, { + start: { + line: loc.line, + column: loc.column + 1 + } + }); + err.code = "BABEL_REPLACE_SOURCE_ERROR"; + } + + throw err; + } + + replacement = replacement.program.body[0].expression; + + _index.default.removeProperties(replacement); + + return this.replaceWith(replacement); +} + +function replaceWith(replacement) { + this.resync(); + + if (this.removed) { + throw new Error("You can't replace this node, we've already removed it"); + } + + if (replacement instanceof _index2.default) { + replacement = replacement.node; + } + + if (!replacement) { + throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead"); + } + + if (this.node === replacement) { + return [this]; + } + + if (this.isProgram() && !t.isProgram(replacement)) { + throw new Error("You can only replace a Program root node with another Program node"); + } + + if (Array.isArray(replacement)) { + throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`"); + } + + if (typeof replacement === "string") { + throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`"); + } + + let nodePath = ""; + + if (this.isNodeType("Statement") && t.isExpression(replacement)) { + if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) { + replacement = t.expressionStatement(replacement); + nodePath = "expression"; + } + } + + if (this.isNodeType("Expression") && t.isStatement(replacement)) { + if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) { + return this.replaceExpressionWithStatements([replacement]); + } + } + + const oldNode = this.node; + + if (oldNode) { + t.inheritsComments(replacement, oldNode); + t.removeComments(oldNode); + } + + this._replaceWith(replacement); + + this.type = replacement.type; + this.setScope(); + this.requeue(); + return [nodePath ? this.get(nodePath) : this]; +} + +function _replaceWith(node) { + var _pathCache$get2; + + if (!this.container) { + throw new ReferenceError("Container is falsy"); + } + + if (this.inList) { + t.validate(this.parent, this.key, [node]); + } else { + t.validate(this.parent, this.key, node); + } + + this.debug(`Replace with ${node == null ? void 0 : node.type}`); + (_pathCache$get2 = _cache.path.get(this.parent)) == null ? void 0 : _pathCache$get2.set(node, this).delete(this.node); + this.node = this.container[this.key] = node; +} + +function replaceExpressionWithStatements(nodes) { + this.resync(); + const toSequenceExpression = t.toSequenceExpression(nodes, this.scope); + + if (toSequenceExpression) { + return this.replaceWith(toSequenceExpression)[0].get("expressions"); + } + + const functionParent = this.getFunctionParent(); + const isParentAsync = functionParent == null ? void 0 : functionParent.is("async"); + const isParentGenerator = functionParent == null ? void 0 : functionParent.is("generator"); + const container = t.arrowFunctionExpression([], t.blockStatement(nodes)); + this.replaceWith(t.callExpression(container, [])); + const callee = this.get("callee"); + (0, _helperHoistVariables.default)(callee.get("body"), id => { + this.scope.push({ + id + }); + }, "var"); + const completionRecords = this.get("callee").getCompletionRecords(); + + for (const path of completionRecords) { + if (!path.isExpressionStatement()) continue; + const loop = path.findParent(path => path.isLoop()); + + if (loop) { + let uid = loop.getData("expressionReplacementReturnUid"); + + if (!uid) { + uid = callee.scope.generateDeclaredUidIdentifier("ret"); + callee.get("body").pushContainer("body", t.returnStatement(t.cloneNode(uid))); + loop.setData("expressionReplacementReturnUid", uid); + } else { + uid = t.identifier(uid.name); + } + + path.get("expression").replaceWith(t.assignmentExpression("=", t.cloneNode(uid), path.node.expression)); + } else { + path.replaceWith(t.returnStatement(path.node.expression)); + } + } + + callee.arrowFunctionToExpression(); + const newCallee = callee; + + const needToAwaitFunction = isParentAsync && _index.default.hasType(this.get("callee.body").node, "AwaitExpression", t.FUNCTION_TYPES); + + const needToYieldFunction = isParentGenerator && _index.default.hasType(this.get("callee.body").node, "YieldExpression", t.FUNCTION_TYPES); + + if (needToAwaitFunction) { + newCallee.set("async", true); + + if (!needToYieldFunction) { + this.replaceWith(t.awaitExpression(this.node)); + } + } + + if (needToYieldFunction) { + newCallee.set("generator", true); + this.replaceWith(t.yieldExpression(this.node, true)); + } + + return newCallee.get("body.body"); +} + +function replaceInline(nodes) { + this.resync(); + + if (Array.isArray(nodes)) { + if (Array.isArray(this.container)) { + nodes = this._verifyNodeList(nodes); + + const paths = this._containerInsertAfter(nodes); + + this.remove(); + return paths; + } else { + return this.replaceWithMultiple(nodes); + } + } else { + return this.replaceWith(nodes); + } +} + +/***/ }), + +/***/ 14774: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +class Binding { + constructor({ + identifier, + scope, + path, + kind + }) { + this.identifier = void 0; + this.scope = void 0; + this.path = void 0; + this.kind = void 0; + this.constantViolations = []; + this.constant = true; + this.referencePaths = []; + this.referenced = false; + this.references = 0; + this.identifier = identifier; + this.scope = scope; + this.path = path; + this.kind = kind; + this.clearValue(); + } + + deoptValue() { + this.clearValue(); + this.hasDeoptedValue = true; + } + + setValue(value) { + if (this.hasDeoptedValue) return; + this.hasValue = true; + this.value = value; + } + + clearValue() { + this.hasDeoptedValue = false; + this.hasValue = false; + this.value = null; + } + + reassign(path) { + this.constant = false; + + if (this.constantViolations.indexOf(path) !== -1) { + return; + } + + this.constantViolations.push(path); + } + + reference(path) { + if (this.referencePaths.indexOf(path) !== -1) { + return; + } + + this.referenced = true; + this.references++; + this.referencePaths.push(path); + } + + dereference() { + this.references--; + this.referenced = !!this.references; + } + +} + +exports["default"] = Binding; + +/***/ }), + +/***/ 85079: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _renamer = __nccwpck_require__(30096); + +var _index = __nccwpck_require__(8631); + +var _binding = __nccwpck_require__(14774); + +var _globals = __nccwpck_require__(15548); + +var t = __nccwpck_require__(24479); + +var _cache = __nccwpck_require__(58897); + +function gatherNodeParts(node, parts) { + switch (node == null ? void 0 : node.type) { + default: + if (t.isModuleDeclaration(node)) { + if ((t.isExportAllDeclaration(node) || t.isExportNamedDeclaration(node) || t.isImportDeclaration(node)) && node.source) { + gatherNodeParts(node.source, parts); + } else if ((t.isExportNamedDeclaration(node) || t.isImportDeclaration(node)) && node.specifiers && node.specifiers.length) { + for (const e of node.specifiers) gatherNodeParts(e, parts); + } else if ((t.isExportDefaultDeclaration(node) || t.isExportNamedDeclaration(node)) && node.declaration) { + gatherNodeParts(node.declaration, parts); + } + } else if (t.isModuleSpecifier(node)) { + gatherNodeParts(node.local, parts); + } else if (t.isLiteral(node)) { + parts.push(node.value); + } + + break; + + case "MemberExpression": + case "OptionalMemberExpression": + case "JSXMemberExpression": + gatherNodeParts(node.object, parts); + gatherNodeParts(node.property, parts); + break; + + case "Identifier": + case "JSXIdentifier": + parts.push(node.name); + break; + + case "CallExpression": + case "OptionalCallExpression": + case "NewExpression": + gatherNodeParts(node.callee, parts); + break; + + case "ObjectExpression": + case "ObjectPattern": + for (const e of node.properties) { + gatherNodeParts(e, parts); + } + + break; + + case "SpreadElement": + case "RestElement": + gatherNodeParts(node.argument, parts); + break; + + case "ObjectProperty": + case "ObjectMethod": + case "ClassProperty": + case "ClassMethod": + case "ClassPrivateProperty": + case "ClassPrivateMethod": + gatherNodeParts(node.key, parts); + break; + + case "ThisExpression": + parts.push("this"); + break; + + case "Super": + parts.push("super"); + break; + + case "Import": + parts.push("import"); + break; + + case "DoExpression": + parts.push("do"); + break; + + case "YieldExpression": + parts.push("yield"); + gatherNodeParts(node.argument, parts); + break; + + case "AwaitExpression": + parts.push("await"); + gatherNodeParts(node.argument, parts); + break; + + case "AssignmentExpression": + gatherNodeParts(node.left, parts); + break; + + case "VariableDeclarator": + gatherNodeParts(node.id, parts); + break; + + case "FunctionExpression": + case "FunctionDeclaration": + case "ClassExpression": + case "ClassDeclaration": + gatherNodeParts(node.id, parts); + break; + + case "PrivateName": + gatherNodeParts(node.id, parts); + break; + + case "ParenthesizedExpression": + gatherNodeParts(node.expression, parts); + break; + + case "UnaryExpression": + case "UpdateExpression": + gatherNodeParts(node.argument, parts); + break; + + case "MetaProperty": + gatherNodeParts(node.meta, parts); + gatherNodeParts(node.property, parts); + break; + + case "JSXElement": + gatherNodeParts(node.openingElement, parts); + break; + + case "JSXOpeningElement": + parts.push(node.name); + break; + + case "JSXFragment": + gatherNodeParts(node.openingFragment, parts); + break; + + case "JSXOpeningFragment": + parts.push("Fragment"); + break; + + case "JSXNamespacedName": + gatherNodeParts(node.namespace, parts); + gatherNodeParts(node.name, parts); + break; + } +} + +const collectorVisitor = { + For(path) { + for (const key of t.FOR_INIT_KEYS) { + const declar = path.get(key); + + if (declar.isVar()) { + const parentScope = path.scope.getFunctionParent() || path.scope.getProgramParent(); + parentScope.registerBinding("var", declar); + } + } + }, + + Declaration(path) { + if (path.isBlockScoped()) return; + if (path.isImportDeclaration()) return; + if (path.isExportDeclaration()) return; + const parent = path.scope.getFunctionParent() || path.scope.getProgramParent(); + parent.registerDeclaration(path); + }, + + ImportDeclaration(path) { + const parent = path.scope.getBlockParent(); + parent.registerDeclaration(path); + }, + + ReferencedIdentifier(path, state) { + state.references.push(path); + }, + + ForXStatement(path, state) { + const left = path.get("left"); + + if (left.isPattern() || left.isIdentifier()) { + state.constantViolations.push(path); + } + }, + + ExportDeclaration: { + exit(path) { + const { + node, + scope + } = path; + if (t.isExportAllDeclaration(node)) return; + const declar = node.declaration; + + if (t.isClassDeclaration(declar) || t.isFunctionDeclaration(declar)) { + const id = declar.id; + if (!id) return; + const binding = scope.getBinding(id.name); + if (binding) binding.reference(path); + } else if (t.isVariableDeclaration(declar)) { + for (const decl of declar.declarations) { + for (const name of Object.keys(t.getBindingIdentifiers(decl))) { + const binding = scope.getBinding(name); + if (binding) binding.reference(path); + } + } + } + } + + }, + + LabeledStatement(path) { + path.scope.getBlockParent().registerDeclaration(path); + }, + + AssignmentExpression(path, state) { + state.assignments.push(path); + }, + + UpdateExpression(path, state) { + state.constantViolations.push(path); + }, + + UnaryExpression(path, state) { + if (path.node.operator === "delete") { + state.constantViolations.push(path); + } + }, + + BlockScoped(path) { + let scope = path.scope; + if (scope.path === path) scope = scope.parent; + const parent = scope.getBlockParent(); + parent.registerDeclaration(path); + + if (path.isClassDeclaration() && path.node.id) { + const id = path.node.id; + const name = id.name; + path.scope.bindings[name] = path.scope.parent.getBinding(name); + } + }, + + CatchClause(path) { + path.scope.registerBinding("let", path); + }, + + Function(path) { + if (path.isFunctionExpression() && path.has("id") && !path.get("id").node[t.NOT_LOCAL_BINDING]) { + path.scope.registerBinding("local", path.get("id"), path); + } + + const params = path.get("params"); + + for (const param of params) { + path.scope.registerBinding("param", param); + } + }, + + ClassExpression(path) { + if (path.has("id") && !path.get("id").node[t.NOT_LOCAL_BINDING]) { + path.scope.registerBinding("local", path); + } + } + +}; +let uid = 0; + +class Scope { + constructor(path) { + this.uid = void 0; + this.path = void 0; + this.block = void 0; + this.labels = void 0; + this.inited = void 0; + this.bindings = void 0; + this.references = void 0; + this.globals = void 0; + this.uids = void 0; + this.data = void 0; + this.crawling = void 0; + const { + node + } = path; + + const cached = _cache.scope.get(node); + + if ((cached == null ? void 0 : cached.path) === path) { + return cached; + } + + _cache.scope.set(node, this); + + this.uid = uid++; + this.block = node; + this.path = path; + this.labels = new Map(); + this.inited = false; + } + + get parent() { + var _parent; + + let parent, + path = this.path; + + do { + const isKey = path.key === "key"; + path = path.parentPath; + if (isKey && path.isMethod()) path = path.parentPath; + if (path && path.isScope()) parent = path; + } while (path && !parent); + + return (_parent = parent) == null ? void 0 : _parent.scope; + } + + get parentBlock() { + return this.path.parent; + } + + get hub() { + return this.path.hub; + } + + traverse(node, opts, state) { + (0, _index.default)(node, opts, this, state, this.path); + } + + generateDeclaredUidIdentifier(name) { + const id = this.generateUidIdentifier(name); + this.push({ + id + }); + return t.cloneNode(id); + } + + generateUidIdentifier(name) { + return t.identifier(this.generateUid(name)); + } + + generateUid(name = "temp") { + name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, ""); + let uid; + let i = 1; + + do { + uid = this._generateUid(name, i); + i++; + } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid)); + + const program = this.getProgramParent(); + program.references[uid] = true; + program.uids[uid] = true; + return uid; + } + + _generateUid(name, i) { + let id = name; + if (i > 1) id += i; + return `_${id}`; + } + + generateUidBasedOnNode(node, defaultName) { + const parts = []; + gatherNodeParts(node, parts); + let id = parts.join("$"); + id = id.replace(/^_/, "") || defaultName || "ref"; + return this.generateUid(id.slice(0, 20)); + } + + generateUidIdentifierBasedOnNode(node, defaultName) { + return t.identifier(this.generateUidBasedOnNode(node, defaultName)); + } + + isStatic(node) { + if (t.isThisExpression(node) || t.isSuper(node)) { + return true; + } + + if (t.isIdentifier(node)) { + const binding = this.getBinding(node.name); + + if (binding) { + return binding.constant; + } else { + return this.hasBinding(node.name); + } + } + + return false; + } + + maybeGenerateMemoised(node, dontPush) { + if (this.isStatic(node)) { + return null; + } else { + const id = this.generateUidIdentifierBasedOnNode(node); + + if (!dontPush) { + this.push({ + id + }); + return t.cloneNode(id); + } + + return id; + } + } + + checkBlockScopedCollisions(local, kind, name, id) { + if (kind === "param") return; + if (local.kind === "local") return; + const duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module" || local.kind === "param" && (kind === "let" || kind === "const"); + + if (duplicate) { + throw this.hub.buildError(id, `Duplicate declaration "${name}"`, TypeError); + } + } + + rename(oldName, newName, block) { + const binding = this.getBinding(oldName); + + if (binding) { + newName = newName || this.generateUidIdentifier(oldName).name; + return new _renamer.default(binding, oldName, newName).rename(block); + } + } + + _renameFromMap(map, oldName, newName, value) { + if (map[oldName]) { + map[newName] = value; + map[oldName] = null; + } + } + + dump() { + const sep = "-".repeat(60); + console.log(sep); + let scope = this; + + do { + console.log("#", scope.block.type); + + for (const name of Object.keys(scope.bindings)) { + const binding = scope.bindings[name]; + console.log(" -", name, { + constant: binding.constant, + references: binding.references, + violations: binding.constantViolations.length, + kind: binding.kind + }); + } + } while (scope = scope.parent); + + console.log(sep); + } + + toArray(node, i, arrayLikeIsIterable) { + if (t.isIdentifier(node)) { + const binding = this.getBinding(node.name); + + if (binding != null && binding.constant && binding.path.isGenericType("Array")) { + return node; + } + } + + if (t.isArrayExpression(node)) { + return node; + } + + if (t.isIdentifier(node, { + name: "arguments" + })) { + return t.callExpression(t.memberExpression(t.memberExpression(t.memberExpression(t.identifier("Array"), t.identifier("prototype")), t.identifier("slice")), t.identifier("call")), [node]); + } + + let helperName; + const args = [node]; + + if (i === true) { + helperName = "toConsumableArray"; + } else if (i) { + args.push(t.numericLiteral(i)); + helperName = "slicedToArray"; + } else { + helperName = "toArray"; + } + + if (arrayLikeIsIterable) { + args.unshift(this.hub.addHelper(helperName)); + helperName = "maybeArrayLike"; + } + + return t.callExpression(this.hub.addHelper(helperName), args); + } + + hasLabel(name) { + return !!this.getLabel(name); + } + + getLabel(name) { + return this.labels.get(name); + } + + registerLabel(path) { + this.labels.set(path.node.label.name, path); + } + + registerDeclaration(path) { + if (path.isLabeledStatement()) { + this.registerLabel(path); + } else if (path.isFunctionDeclaration()) { + this.registerBinding("hoisted", path.get("id"), path); + } else if (path.isVariableDeclaration()) { + const declarations = path.get("declarations"); + + for (const declar of declarations) { + this.registerBinding(path.node.kind, declar); + } + } else if (path.isClassDeclaration()) { + this.registerBinding("let", path); + } else if (path.isImportDeclaration()) { + const specifiers = path.get("specifiers"); + + for (const specifier of specifiers) { + this.registerBinding("module", specifier); + } + } else if (path.isExportDeclaration()) { + const declar = path.get("declaration"); + + if (declar.isClassDeclaration() || declar.isFunctionDeclaration() || declar.isVariableDeclaration()) { + this.registerDeclaration(declar); + } + } else { + this.registerBinding("unknown", path); + } + } + + buildUndefinedNode() { + return t.unaryExpression("void", t.numericLiteral(0), true); + } + + registerConstantViolation(path) { + const ids = path.getBindingIdentifiers(); + + for (const name of Object.keys(ids)) { + const binding = this.getBinding(name); + if (binding) binding.reassign(path); + } + } + + registerBinding(kind, path, bindingPath = path) { + if (!kind) throw new ReferenceError("no `kind`"); + + if (path.isVariableDeclaration()) { + const declarators = path.get("declarations"); + + for (const declar of declarators) { + this.registerBinding(kind, declar); + } + + return; + } + + const parent = this.getProgramParent(); + const ids = path.getOuterBindingIdentifiers(true); + + for (const name of Object.keys(ids)) { + parent.references[name] = true; + + for (const id of ids[name]) { + const local = this.getOwnBinding(name); + + if (local) { + if (local.identifier === id) continue; + this.checkBlockScopedCollisions(local, kind, name, id); + } + + if (local) { + this.registerConstantViolation(bindingPath); + } else { + this.bindings[name] = new _binding.default({ + identifier: id, + scope: this, + path: bindingPath, + kind: kind + }); + } + } + } + } + + addGlobal(node) { + this.globals[node.name] = node; + } + + hasUid(name) { + let scope = this; + + do { + if (scope.uids[name]) return true; + } while (scope = scope.parent); + + return false; + } + + hasGlobal(name) { + let scope = this; + + do { + if (scope.globals[name]) return true; + } while (scope = scope.parent); + + return false; + } + + hasReference(name) { + return !!this.getProgramParent().references[name]; + } + + isPure(node, constantsOnly) { + if (t.isIdentifier(node)) { + const binding = this.getBinding(node.name); + if (!binding) return false; + if (constantsOnly) return binding.constant; + return true; + } else if (t.isClass(node)) { + if (node.superClass && !this.isPure(node.superClass, constantsOnly)) { + return false; + } + + return this.isPure(node.body, constantsOnly); + } else if (t.isClassBody(node)) { + for (const method of node.body) { + if (!this.isPure(method, constantsOnly)) return false; + } + + return true; + } else if (t.isBinary(node)) { + return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly); + } else if (t.isArrayExpression(node)) { + for (const elem of node.elements) { + if (!this.isPure(elem, constantsOnly)) return false; + } + + return true; + } else if (t.isObjectExpression(node)) { + for (const prop of node.properties) { + if (!this.isPure(prop, constantsOnly)) return false; + } + + return true; + } else if (t.isMethod(node)) { + if (node.computed && !this.isPure(node.key, constantsOnly)) return false; + if (node.kind === "get" || node.kind === "set") return false; + return true; + } else if (t.isProperty(node)) { + if (node.computed && !this.isPure(node.key, constantsOnly)) return false; + return this.isPure(node.value, constantsOnly); + } else if (t.isUnaryExpression(node)) { + return this.isPure(node.argument, constantsOnly); + } else if (t.isTaggedTemplateExpression(node)) { + return t.matchesPattern(node.tag, "String.raw") && !this.hasBinding("String", true) && this.isPure(node.quasi, constantsOnly); + } else if (t.isTemplateLiteral(node)) { + for (const expression of node.expressions) { + if (!this.isPure(expression, constantsOnly)) return false; + } + + return true; + } else { + return t.isPureish(node); + } + } + + setData(key, val) { + return this.data[key] = val; + } + + getData(key) { + let scope = this; + + do { + const data = scope.data[key]; + if (data != null) return data; + } while (scope = scope.parent); + } + + removeData(key) { + let scope = this; + + do { + const data = scope.data[key]; + if (data != null) scope.data[key] = null; + } while (scope = scope.parent); + } + + init() { + if (!this.inited) { + this.inited = true; + this.crawl(); + } + } + + crawl() { + const path = this.path; + this.references = Object.create(null); + this.bindings = Object.create(null); + this.globals = Object.create(null); + this.uids = Object.create(null); + this.data = Object.create(null); + const programParent = this.getProgramParent(); + if (programParent.crawling) return; + const state = { + references: [], + constantViolations: [], + assignments: [] + }; + this.crawling = true; + + if (path.type !== "Program" && collectorVisitor._exploded) { + for (const visit of collectorVisitor.enter) { + visit(path, state); + } + + const typeVisitors = collectorVisitor[path.type]; + + if (typeVisitors) { + for (const visit of typeVisitors.enter) { + visit(path, state); + } + } + } + + path.traverse(collectorVisitor, state); + this.crawling = false; + + for (const path of state.assignments) { + const ids = path.getBindingIdentifiers(); + + for (const name of Object.keys(ids)) { + if (path.scope.getBinding(name)) continue; + programParent.addGlobal(ids[name]); + } + + path.scope.registerConstantViolation(path); + } + + for (const ref of state.references) { + const binding = ref.scope.getBinding(ref.node.name); + + if (binding) { + binding.reference(ref); + } else { + programParent.addGlobal(ref.node); + } + } + + for (const path of state.constantViolations) { + path.scope.registerConstantViolation(path); + } + } + + push(opts) { + let path = this.path; + + if (!path.isBlockStatement() && !path.isProgram()) { + path = this.getBlockParent().path; + } + + if (path.isSwitchStatement()) { + path = (this.getFunctionParent() || this.getProgramParent()).path; + } + + if (path.isLoop() || path.isCatchClause() || path.isFunction()) { + path.ensureBlock(); + path = path.get("body"); + } + + const unique = opts.unique; + const kind = opts.kind || "var"; + const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist; + const dataKey = `declaration:${kind}:${blockHoist}`; + let declarPath = !unique && path.getData(dataKey); + + if (!declarPath) { + const declar = t.variableDeclaration(kind, []); + declar._blockHoist = blockHoist; + [declarPath] = path.unshiftContainer("body", [declar]); + if (!unique) path.setData(dataKey, declarPath); + } + + const declarator = t.variableDeclarator(opts.id, opts.init); + declarPath.node.declarations.push(declarator); + this.registerBinding(kind, declarPath.get("declarations").pop()); + } + + getProgramParent() { + let scope = this; + + do { + if (scope.path.isProgram()) { + return scope; + } + } while (scope = scope.parent); + + throw new Error("Couldn't find a Program"); + } + + getFunctionParent() { + let scope = this; + + do { + if (scope.path.isFunctionParent()) { + return scope; + } + } while (scope = scope.parent); + + return null; + } + + getBlockParent() { + let scope = this; + + do { + if (scope.path.isBlockParent()) { + return scope; + } + } while (scope = scope.parent); + + throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."); + } + + getAllBindings() { + const ids = Object.create(null); + let scope = this; + + do { + for (const key of Object.keys(scope.bindings)) { + if (key in ids === false) { + ids[key] = scope.bindings[key]; + } + } + + scope = scope.parent; + } while (scope); + + return ids; + } + + getAllBindingsOfKind(...kinds) { + const ids = Object.create(null); + + for (const kind of kinds) { + let scope = this; + + do { + for (const name of Object.keys(scope.bindings)) { + const binding = scope.bindings[name]; + if (binding.kind === kind) ids[name] = binding; + } + + scope = scope.parent; + } while (scope); + } + + return ids; + } + + bindingIdentifierEquals(name, node) { + return this.getBindingIdentifier(name) === node; + } + + getBinding(name) { + let scope = this; + let previousPath; + + do { + const binding = scope.getOwnBinding(name); + + if (binding) { + var _previousPath; + + if ((_previousPath = previousPath) != null && _previousPath.isPattern() && binding.kind !== "param") {} else { + return binding; + } + } + + previousPath = scope.path; + } while (scope = scope.parent); + } + + getOwnBinding(name) { + return this.bindings[name]; + } + + getBindingIdentifier(name) { + var _this$getBinding; + + return (_this$getBinding = this.getBinding(name)) == null ? void 0 : _this$getBinding.identifier; + } + + getOwnBindingIdentifier(name) { + const binding = this.bindings[name]; + return binding == null ? void 0 : binding.identifier; + } + + hasOwnBinding(name) { + return !!this.getOwnBinding(name); + } + + hasBinding(name, noGlobals) { + if (!name) return false; + if (this.hasOwnBinding(name)) return true; + if (this.parentHasBinding(name, noGlobals)) return true; + if (this.hasUid(name)) return true; + if (!noGlobals && Scope.globals.includes(name)) return true; + if (!noGlobals && Scope.contextVariables.includes(name)) return true; + return false; + } + + parentHasBinding(name, noGlobals) { + var _this$parent; + + return (_this$parent = this.parent) == null ? void 0 : _this$parent.hasBinding(name, noGlobals); + } + + moveBindingTo(name, scope) { + const info = this.getBinding(name); + + if (info) { + info.scope.removeOwnBinding(name); + info.scope = scope; + scope.bindings[name] = info; + } + } + + removeOwnBinding(name) { + delete this.bindings[name]; + } + + removeBinding(name) { + var _this$getBinding2; + + (_this$getBinding2 = this.getBinding(name)) == null ? void 0 : _this$getBinding2.scope.removeOwnBinding(name); + let scope = this; + + do { + if (scope.uids[name]) { + scope.uids[name] = false; + } + } while (scope = scope.parent); + } + +} + +exports["default"] = Scope; +Scope.globals = Object.keys(_globals.builtin); +Scope.contextVariables = ["arguments", "undefined", "Infinity", "NaN"]; + +/***/ }), + +/***/ 30096: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _binding = __nccwpck_require__(14774); + +var _helperSplitExportDeclaration = __nccwpck_require__(37058); + +var t = __nccwpck_require__(24479); + +const renameVisitor = { + ReferencedIdentifier({ + node + }, state) { + if (node.name === state.oldName) { + node.name = state.newName; + } + }, + + Scope(path, state) { + if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) { + skipAllButComputedMethodKey(path); + } + }, + + "AssignmentExpression|Declaration|VariableDeclarator"(path, state) { + if (path.isVariableDeclaration()) return; + const ids = path.getOuterBindingIdentifiers(); + + for (const name in ids) { + if (name === state.oldName) ids[name].name = state.newName; + } + } + +}; + +class Renamer { + constructor(binding, oldName, newName) { + this.newName = newName; + this.oldName = oldName; + this.binding = binding; + } + + maybeConvertFromExportDeclaration(parentDeclar) { + const maybeExportDeclar = parentDeclar.parentPath; + + if (!maybeExportDeclar.isExportDeclaration()) { + return; + } + + if (maybeExportDeclar.isExportDefaultDeclaration() && !maybeExportDeclar.get("declaration").node.id) { + return; + } + + (0, _helperSplitExportDeclaration.default)(maybeExportDeclar); + } + + maybeConvertFromClassFunctionDeclaration(path) { + return; + if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return; + if (this.binding.kind !== "hoisted") return; + path.node.id = t.identifier(this.oldName); + path.node._blockHoist = 3; + path.replaceWith(t.variableDeclaration("let", [t.variableDeclarator(t.identifier(this.newName), t.toExpression(path.node))])); + } + + maybeConvertFromClassFunctionExpression(path) { + return; + if (!path.isFunctionExpression() && !path.isClassExpression()) return; + if (this.binding.kind !== "local") return; + path.node.id = t.identifier(this.oldName); + this.binding.scope.parent.push({ + id: t.identifier(this.newName) + }); + path.replaceWith(t.assignmentExpression("=", t.identifier(this.newName), path.node)); + } + + rename(block) { + const { + binding, + oldName, + newName + } = this; + const { + scope, + path + } = binding; + const parentDeclar = path.find(path => path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression()); + + if (parentDeclar) { + const bindingIds = parentDeclar.getOuterBindingIdentifiers(); + + if (bindingIds[oldName] === binding.identifier) { + this.maybeConvertFromExportDeclaration(parentDeclar); + } + } + + const blockToTraverse = block || scope.block; + + if ((blockToTraverse == null ? void 0 : blockToTraverse.type) === "SwitchStatement") { + blockToTraverse.cases.forEach(c => { + scope.traverse(c, renameVisitor, this); + }); + } else { + scope.traverse(blockToTraverse, renameVisitor, this); + } + + if (!block) { + scope.removeOwnBinding(oldName); + scope.bindings[newName] = binding; + this.binding.identifier.name = newName; + } + + if (parentDeclar) { + this.maybeConvertFromClassFunctionDeclaration(parentDeclar); + this.maybeConvertFromClassFunctionExpression(parentDeclar); + } + } + +} + +exports["default"] = Renamer; + +function skipAllButComputedMethodKey(path) { + if (!path.isMethod() || !path.node.computed) { + path.skip(); + return; + } + + const keys = t.VISITOR_KEYS[path.type]; + + for (const key of keys) { + if (key !== "key") path.skipKey(key); + } +} + +/***/ }), + +/***/ 93314: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.explode = explode; +exports.verify = verify; +exports.merge = merge; + +var virtualTypes = __nccwpck_require__(89637); + +var t = __nccwpck_require__(24479); + +function explode(visitor) { + if (visitor._exploded) return visitor; + visitor._exploded = true; + + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + const parts = nodeType.split("|"); + if (parts.length === 1) continue; + const fns = visitor[nodeType]; + delete visitor[nodeType]; + + for (const part of parts) { + visitor[part] = fns; + } + } + + verify(visitor); + delete visitor.__esModule; + ensureEntranceObjects(visitor); + ensureCallbackArrays(visitor); + + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + const wrapper = virtualTypes[nodeType]; + if (!wrapper) continue; + const fns = visitor[nodeType]; + + for (const type of Object.keys(fns)) { + fns[type] = wrapCheck(wrapper, fns[type]); + } + + delete visitor[nodeType]; + + if (wrapper.types) { + for (const type of wrapper.types) { + if (visitor[type]) { + mergePair(visitor[type], fns); + } else { + visitor[type] = fns; + } + } + } else { + mergePair(visitor, fns); + } + } + + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + const fns = visitor[nodeType]; + let aliases = t.FLIPPED_ALIAS_KEYS[nodeType]; + const deprecatedKey = t.DEPRECATED_KEYS[nodeType]; + + if (deprecatedKey) { + console.trace(`Visitor defined for ${nodeType} but it has been renamed to ${deprecatedKey}`); + aliases = [deprecatedKey]; + } + + if (!aliases) continue; + delete visitor[nodeType]; + + for (const alias of aliases) { + const existing = visitor[alias]; + + if (existing) { + mergePair(existing, fns); + } else { + visitor[alias] = Object.assign({}, fns); + } + } + } + + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + ensureCallbackArrays(visitor[nodeType]); + } + + return visitor; +} + +function verify(visitor) { + if (visitor._verified) return; + + if (typeof visitor === "function") { + throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?"); + } + + for (const nodeType of Object.keys(visitor)) { + if (nodeType === "enter" || nodeType === "exit") { + validateVisitorMethods(nodeType, visitor[nodeType]); + } + + if (shouldIgnoreKey(nodeType)) continue; + + if (t.TYPES.indexOf(nodeType) < 0) { + throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type`); + } + + const visitors = visitor[nodeType]; + + if (typeof visitors === "object") { + for (const visitorKey of Object.keys(visitors)) { + if (visitorKey === "enter" || visitorKey === "exit") { + validateVisitorMethods(`${nodeType}.${visitorKey}`, visitors[visitorKey]); + } else { + throw new Error("You passed `traverse()` a visitor object with the property " + `${nodeType} that has the invalid property ${visitorKey}`); + } + } + } + } + + visitor._verified = true; +} + +function validateVisitorMethods(path, val) { + const fns = [].concat(val); + + for (const fn of fns) { + if (typeof fn !== "function") { + throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`); + } + } +} + +function merge(visitors, states = [], wrapper) { + const rootVisitor = {}; + + for (let i = 0; i < visitors.length; i++) { + const visitor = visitors[i]; + const state = states[i]; + explode(visitor); + + for (const type of Object.keys(visitor)) { + let visitorType = visitor[type]; + + if (state || wrapper) { + visitorType = wrapWithStateOrWrapper(visitorType, state, wrapper); + } + + const nodeVisitor = rootVisitor[type] = rootVisitor[type] || {}; + mergePair(nodeVisitor, visitorType); + } + } + + return rootVisitor; +} + +function wrapWithStateOrWrapper(oldVisitor, state, wrapper) { + const newVisitor = {}; + + for (const key of Object.keys(oldVisitor)) { + let fns = oldVisitor[key]; + if (!Array.isArray(fns)) continue; + fns = fns.map(function (fn) { + let newFn = fn; + + if (state) { + newFn = function (path) { + return fn.call(state, path, state); + }; + } + + if (wrapper) { + newFn = wrapper(state.key, key, newFn); + } + + if (newFn !== fn) { + newFn.toString = () => fn.toString(); + } + + return newFn; + }); + newVisitor[key] = fns; + } + + return newVisitor; +} + +function ensureEntranceObjects(obj) { + for (const key of Object.keys(obj)) { + if (shouldIgnoreKey(key)) continue; + const fns = obj[key]; + + if (typeof fns === "function") { + obj[key] = { + enter: fns + }; + } + } +} + +function ensureCallbackArrays(obj) { + if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter]; + if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit]; +} + +function wrapCheck(wrapper, fn) { + const newFn = function (path) { + if (wrapper.checkPath(path)) { + return fn.apply(this, arguments); + } + }; + + newFn.toString = () => fn.toString(); + + return newFn; +} + +function shouldIgnoreKey(key) { + if (key[0] === "_") return true; + if (key === "enter" || key === "exit" || key === "shouldSkip") return true; + + if (key === "denylist" || key === "noScope" || key === "skipKeys" || key === "blacklist") { + return true; + } + + return false; +} + +function mergePair(dest, src) { + for (const key of Object.keys(src)) { + dest[key] = [].concat(dest[key] || [], src[key]); + } +} + +/***/ }), + +/***/ 98162: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = assertNode; + +var _isNode = __nccwpck_require__(46832); + +function assertNode(node) { + if (!(0, _isNode.default)(node)) { + var _node$type; + + const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node); + throw new TypeError(`Not a valid node of type "${type}"`); + } +} + +/***/ }), + +/***/ 93333: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.assertArrayExpression = assertArrayExpression; +exports.assertAssignmentExpression = assertAssignmentExpression; +exports.assertBinaryExpression = assertBinaryExpression; +exports.assertInterpreterDirective = assertInterpreterDirective; +exports.assertDirective = assertDirective; +exports.assertDirectiveLiteral = assertDirectiveLiteral; +exports.assertBlockStatement = assertBlockStatement; +exports.assertBreakStatement = assertBreakStatement; +exports.assertCallExpression = assertCallExpression; +exports.assertCatchClause = assertCatchClause; +exports.assertConditionalExpression = assertConditionalExpression; +exports.assertContinueStatement = assertContinueStatement; +exports.assertDebuggerStatement = assertDebuggerStatement; +exports.assertDoWhileStatement = assertDoWhileStatement; +exports.assertEmptyStatement = assertEmptyStatement; +exports.assertExpressionStatement = assertExpressionStatement; +exports.assertFile = assertFile; +exports.assertForInStatement = assertForInStatement; +exports.assertForStatement = assertForStatement; +exports.assertFunctionDeclaration = assertFunctionDeclaration; +exports.assertFunctionExpression = assertFunctionExpression; +exports.assertIdentifier = assertIdentifier; +exports.assertIfStatement = assertIfStatement; +exports.assertLabeledStatement = assertLabeledStatement; +exports.assertStringLiteral = assertStringLiteral; +exports.assertNumericLiteral = assertNumericLiteral; +exports.assertNullLiteral = assertNullLiteral; +exports.assertBooleanLiteral = assertBooleanLiteral; +exports.assertRegExpLiteral = assertRegExpLiteral; +exports.assertLogicalExpression = assertLogicalExpression; +exports.assertMemberExpression = assertMemberExpression; +exports.assertNewExpression = assertNewExpression; +exports.assertProgram = assertProgram; +exports.assertObjectExpression = assertObjectExpression; +exports.assertObjectMethod = assertObjectMethod; +exports.assertObjectProperty = assertObjectProperty; +exports.assertRestElement = assertRestElement; +exports.assertReturnStatement = assertReturnStatement; +exports.assertSequenceExpression = assertSequenceExpression; +exports.assertParenthesizedExpression = assertParenthesizedExpression; +exports.assertSwitchCase = assertSwitchCase; +exports.assertSwitchStatement = assertSwitchStatement; +exports.assertThisExpression = assertThisExpression; +exports.assertThrowStatement = assertThrowStatement; +exports.assertTryStatement = assertTryStatement; +exports.assertUnaryExpression = assertUnaryExpression; +exports.assertUpdateExpression = assertUpdateExpression; +exports.assertVariableDeclaration = assertVariableDeclaration; +exports.assertVariableDeclarator = assertVariableDeclarator; +exports.assertWhileStatement = assertWhileStatement; +exports.assertWithStatement = assertWithStatement; +exports.assertAssignmentPattern = assertAssignmentPattern; +exports.assertArrayPattern = assertArrayPattern; +exports.assertArrowFunctionExpression = assertArrowFunctionExpression; +exports.assertClassBody = assertClassBody; +exports.assertClassExpression = assertClassExpression; +exports.assertClassDeclaration = assertClassDeclaration; +exports.assertExportAllDeclaration = assertExportAllDeclaration; +exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration; +exports.assertExportNamedDeclaration = assertExportNamedDeclaration; +exports.assertExportSpecifier = assertExportSpecifier; +exports.assertForOfStatement = assertForOfStatement; +exports.assertImportDeclaration = assertImportDeclaration; +exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier; +exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier; +exports.assertImportSpecifier = assertImportSpecifier; +exports.assertMetaProperty = assertMetaProperty; +exports.assertClassMethod = assertClassMethod; +exports.assertObjectPattern = assertObjectPattern; +exports.assertSpreadElement = assertSpreadElement; +exports.assertSuper = assertSuper; +exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression; +exports.assertTemplateElement = assertTemplateElement; +exports.assertTemplateLiteral = assertTemplateLiteral; +exports.assertYieldExpression = assertYieldExpression; +exports.assertAwaitExpression = assertAwaitExpression; +exports.assertImport = assertImport; +exports.assertBigIntLiteral = assertBigIntLiteral; +exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier; +exports.assertOptionalMemberExpression = assertOptionalMemberExpression; +exports.assertOptionalCallExpression = assertOptionalCallExpression; +exports.assertClassProperty = assertClassProperty; +exports.assertClassPrivateProperty = assertClassPrivateProperty; +exports.assertClassPrivateMethod = assertClassPrivateMethod; +exports.assertPrivateName = assertPrivateName; +exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation; +exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation; +exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation; +exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation; +exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation; +exports.assertClassImplements = assertClassImplements; +exports.assertDeclareClass = assertDeclareClass; +exports.assertDeclareFunction = assertDeclareFunction; +exports.assertDeclareInterface = assertDeclareInterface; +exports.assertDeclareModule = assertDeclareModule; +exports.assertDeclareModuleExports = assertDeclareModuleExports; +exports.assertDeclareTypeAlias = assertDeclareTypeAlias; +exports.assertDeclareOpaqueType = assertDeclareOpaqueType; +exports.assertDeclareVariable = assertDeclareVariable; +exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration; +exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration; +exports.assertDeclaredPredicate = assertDeclaredPredicate; +exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation; +exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation; +exports.assertFunctionTypeParam = assertFunctionTypeParam; +exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation; +exports.assertInferredPredicate = assertInferredPredicate; +exports.assertInterfaceExtends = assertInterfaceExtends; +exports.assertInterfaceDeclaration = assertInterfaceDeclaration; +exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation; +exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation; +exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation; +exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation; +exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation; +exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation; +exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation; +exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation; +exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot; +exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty; +exports.assertObjectTypeIndexer = assertObjectTypeIndexer; +exports.assertObjectTypeProperty = assertObjectTypeProperty; +exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty; +exports.assertOpaqueType = assertOpaqueType; +exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier; +exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation; +exports.assertStringTypeAnnotation = assertStringTypeAnnotation; +exports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation; +exports.assertThisTypeAnnotation = assertThisTypeAnnotation; +exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation; +exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation; +exports.assertTypeAlias = assertTypeAlias; +exports.assertTypeAnnotation = assertTypeAnnotation; +exports.assertTypeCastExpression = assertTypeCastExpression; +exports.assertTypeParameter = assertTypeParameter; +exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration; +exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation; +exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation; +exports.assertVariance = assertVariance; +exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation; +exports.assertEnumDeclaration = assertEnumDeclaration; +exports.assertEnumBooleanBody = assertEnumBooleanBody; +exports.assertEnumNumberBody = assertEnumNumberBody; +exports.assertEnumStringBody = assertEnumStringBody; +exports.assertEnumSymbolBody = assertEnumSymbolBody; +exports.assertEnumBooleanMember = assertEnumBooleanMember; +exports.assertEnumNumberMember = assertEnumNumberMember; +exports.assertEnumStringMember = assertEnumStringMember; +exports.assertEnumDefaultedMember = assertEnumDefaultedMember; +exports.assertIndexedAccessType = assertIndexedAccessType; +exports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType; +exports.assertJSXAttribute = assertJSXAttribute; +exports.assertJSXClosingElement = assertJSXClosingElement; +exports.assertJSXElement = assertJSXElement; +exports.assertJSXEmptyExpression = assertJSXEmptyExpression; +exports.assertJSXExpressionContainer = assertJSXExpressionContainer; +exports.assertJSXSpreadChild = assertJSXSpreadChild; +exports.assertJSXIdentifier = assertJSXIdentifier; +exports.assertJSXMemberExpression = assertJSXMemberExpression; +exports.assertJSXNamespacedName = assertJSXNamespacedName; +exports.assertJSXOpeningElement = assertJSXOpeningElement; +exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute; +exports.assertJSXText = assertJSXText; +exports.assertJSXFragment = assertJSXFragment; +exports.assertJSXOpeningFragment = assertJSXOpeningFragment; +exports.assertJSXClosingFragment = assertJSXClosingFragment; +exports.assertNoop = assertNoop; +exports.assertPlaceholder = assertPlaceholder; +exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier; +exports.assertArgumentPlaceholder = assertArgumentPlaceholder; +exports.assertBindExpression = assertBindExpression; +exports.assertImportAttribute = assertImportAttribute; +exports.assertDecorator = assertDecorator; +exports.assertDoExpression = assertDoExpression; +exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier; +exports.assertRecordExpression = assertRecordExpression; +exports.assertTupleExpression = assertTupleExpression; +exports.assertDecimalLiteral = assertDecimalLiteral; +exports.assertStaticBlock = assertStaticBlock; +exports.assertModuleExpression = assertModuleExpression; +exports.assertTopicReference = assertTopicReference; +exports.assertPipelineTopicExpression = assertPipelineTopicExpression; +exports.assertPipelineBareFunction = assertPipelineBareFunction; +exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference; +exports.assertTSParameterProperty = assertTSParameterProperty; +exports.assertTSDeclareFunction = assertTSDeclareFunction; +exports.assertTSDeclareMethod = assertTSDeclareMethod; +exports.assertTSQualifiedName = assertTSQualifiedName; +exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration; +exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration; +exports.assertTSPropertySignature = assertTSPropertySignature; +exports.assertTSMethodSignature = assertTSMethodSignature; +exports.assertTSIndexSignature = assertTSIndexSignature; +exports.assertTSAnyKeyword = assertTSAnyKeyword; +exports.assertTSBooleanKeyword = assertTSBooleanKeyword; +exports.assertTSBigIntKeyword = assertTSBigIntKeyword; +exports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword; +exports.assertTSNeverKeyword = assertTSNeverKeyword; +exports.assertTSNullKeyword = assertTSNullKeyword; +exports.assertTSNumberKeyword = assertTSNumberKeyword; +exports.assertTSObjectKeyword = assertTSObjectKeyword; +exports.assertTSStringKeyword = assertTSStringKeyword; +exports.assertTSSymbolKeyword = assertTSSymbolKeyword; +exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword; +exports.assertTSUnknownKeyword = assertTSUnknownKeyword; +exports.assertTSVoidKeyword = assertTSVoidKeyword; +exports.assertTSThisType = assertTSThisType; +exports.assertTSFunctionType = assertTSFunctionType; +exports.assertTSConstructorType = assertTSConstructorType; +exports.assertTSTypeReference = assertTSTypeReference; +exports.assertTSTypePredicate = assertTSTypePredicate; +exports.assertTSTypeQuery = assertTSTypeQuery; +exports.assertTSTypeLiteral = assertTSTypeLiteral; +exports.assertTSArrayType = assertTSArrayType; +exports.assertTSTupleType = assertTSTupleType; +exports.assertTSOptionalType = assertTSOptionalType; +exports.assertTSRestType = assertTSRestType; +exports.assertTSNamedTupleMember = assertTSNamedTupleMember; +exports.assertTSUnionType = assertTSUnionType; +exports.assertTSIntersectionType = assertTSIntersectionType; +exports.assertTSConditionalType = assertTSConditionalType; +exports.assertTSInferType = assertTSInferType; +exports.assertTSParenthesizedType = assertTSParenthesizedType; +exports.assertTSTypeOperator = assertTSTypeOperator; +exports.assertTSIndexedAccessType = assertTSIndexedAccessType; +exports.assertTSMappedType = assertTSMappedType; +exports.assertTSLiteralType = assertTSLiteralType; +exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments; +exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration; +exports.assertTSInterfaceBody = assertTSInterfaceBody; +exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration; +exports.assertTSAsExpression = assertTSAsExpression; +exports.assertTSTypeAssertion = assertTSTypeAssertion; +exports.assertTSEnumDeclaration = assertTSEnumDeclaration; +exports.assertTSEnumMember = assertTSEnumMember; +exports.assertTSModuleDeclaration = assertTSModuleDeclaration; +exports.assertTSModuleBlock = assertTSModuleBlock; +exports.assertTSImportType = assertTSImportType; +exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration; +exports.assertTSExternalModuleReference = assertTSExternalModuleReference; +exports.assertTSNonNullExpression = assertTSNonNullExpression; +exports.assertTSExportAssignment = assertTSExportAssignment; +exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration; +exports.assertTSTypeAnnotation = assertTSTypeAnnotation; +exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation; +exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration; +exports.assertTSTypeParameter = assertTSTypeParameter; +exports.assertExpression = assertExpression; +exports.assertBinary = assertBinary; +exports.assertScopable = assertScopable; +exports.assertBlockParent = assertBlockParent; +exports.assertBlock = assertBlock; +exports.assertStatement = assertStatement; +exports.assertTerminatorless = assertTerminatorless; +exports.assertCompletionStatement = assertCompletionStatement; +exports.assertConditional = assertConditional; +exports.assertLoop = assertLoop; +exports.assertWhile = assertWhile; +exports.assertExpressionWrapper = assertExpressionWrapper; +exports.assertFor = assertFor; +exports.assertForXStatement = assertForXStatement; +exports.assertFunction = assertFunction; +exports.assertFunctionParent = assertFunctionParent; +exports.assertPureish = assertPureish; +exports.assertDeclaration = assertDeclaration; +exports.assertPatternLike = assertPatternLike; +exports.assertLVal = assertLVal; +exports.assertTSEntityName = assertTSEntityName; +exports.assertLiteral = assertLiteral; +exports.assertImmutable = assertImmutable; +exports.assertUserWhitespacable = assertUserWhitespacable; +exports.assertMethod = assertMethod; +exports.assertObjectMember = assertObjectMember; +exports.assertProperty = assertProperty; +exports.assertUnaryLike = assertUnaryLike; +exports.assertPattern = assertPattern; +exports.assertClass = assertClass; +exports.assertModuleDeclaration = assertModuleDeclaration; +exports.assertExportDeclaration = assertExportDeclaration; +exports.assertModuleSpecifier = assertModuleSpecifier; +exports.assertPrivate = assertPrivate; +exports.assertFlow = assertFlow; +exports.assertFlowType = assertFlowType; +exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation; +exports.assertFlowDeclaration = assertFlowDeclaration; +exports.assertFlowPredicate = assertFlowPredicate; +exports.assertEnumBody = assertEnumBody; +exports.assertEnumMember = assertEnumMember; +exports.assertJSX = assertJSX; +exports.assertTSTypeElement = assertTSTypeElement; +exports.assertTSType = assertTSType; +exports.assertTSBaseType = assertTSBaseType; +exports.assertNumberLiteral = assertNumberLiteral; +exports.assertRegexLiteral = assertRegexLiteral; +exports.assertRestProperty = assertRestProperty; +exports.assertSpreadProperty = assertSpreadProperty; + +var _is = __nccwpck_require__(31334); + +function assert(type, node, opts) { + if (!(0, _is.default)(type, node, opts)) { + throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, ` + `but instead got "${node.type}".`); + } +} + +function assertArrayExpression(node, opts) { + assert("ArrayExpression", node, opts); +} + +function assertAssignmentExpression(node, opts) { + assert("AssignmentExpression", node, opts); +} + +function assertBinaryExpression(node, opts) { + assert("BinaryExpression", node, opts); +} + +function assertInterpreterDirective(node, opts) { + assert("InterpreterDirective", node, opts); +} + +function assertDirective(node, opts) { + assert("Directive", node, opts); +} + +function assertDirectiveLiteral(node, opts) { + assert("DirectiveLiteral", node, opts); +} + +function assertBlockStatement(node, opts) { + assert("BlockStatement", node, opts); +} + +function assertBreakStatement(node, opts) { + assert("BreakStatement", node, opts); +} + +function assertCallExpression(node, opts) { + assert("CallExpression", node, opts); +} + +function assertCatchClause(node, opts) { + assert("CatchClause", node, opts); +} + +function assertConditionalExpression(node, opts) { + assert("ConditionalExpression", node, opts); +} + +function assertContinueStatement(node, opts) { + assert("ContinueStatement", node, opts); +} + +function assertDebuggerStatement(node, opts) { + assert("DebuggerStatement", node, opts); +} + +function assertDoWhileStatement(node, opts) { + assert("DoWhileStatement", node, opts); +} + +function assertEmptyStatement(node, opts) { + assert("EmptyStatement", node, opts); +} + +function assertExpressionStatement(node, opts) { + assert("ExpressionStatement", node, opts); +} + +function assertFile(node, opts) { + assert("File", node, opts); +} + +function assertForInStatement(node, opts) { + assert("ForInStatement", node, opts); +} + +function assertForStatement(node, opts) { + assert("ForStatement", node, opts); +} + +function assertFunctionDeclaration(node, opts) { + assert("FunctionDeclaration", node, opts); +} + +function assertFunctionExpression(node, opts) { + assert("FunctionExpression", node, opts); +} + +function assertIdentifier(node, opts) { + assert("Identifier", node, opts); +} + +function assertIfStatement(node, opts) { + assert("IfStatement", node, opts); +} + +function assertLabeledStatement(node, opts) { + assert("LabeledStatement", node, opts); +} + +function assertStringLiteral(node, opts) { + assert("StringLiteral", node, opts); +} + +function assertNumericLiteral(node, opts) { + assert("NumericLiteral", node, opts); +} + +function assertNullLiteral(node, opts) { + assert("NullLiteral", node, opts); +} + +function assertBooleanLiteral(node, opts) { + assert("BooleanLiteral", node, opts); +} + +function assertRegExpLiteral(node, opts) { + assert("RegExpLiteral", node, opts); +} + +function assertLogicalExpression(node, opts) { + assert("LogicalExpression", node, opts); +} + +function assertMemberExpression(node, opts) { + assert("MemberExpression", node, opts); +} + +function assertNewExpression(node, opts) { + assert("NewExpression", node, opts); +} + +function assertProgram(node, opts) { + assert("Program", node, opts); +} + +function assertObjectExpression(node, opts) { + assert("ObjectExpression", node, opts); +} + +function assertObjectMethod(node, opts) { + assert("ObjectMethod", node, opts); +} + +function assertObjectProperty(node, opts) { + assert("ObjectProperty", node, opts); +} + +function assertRestElement(node, opts) { + assert("RestElement", node, opts); +} + +function assertReturnStatement(node, opts) { + assert("ReturnStatement", node, opts); +} + +function assertSequenceExpression(node, opts) { + assert("SequenceExpression", node, opts); +} + +function assertParenthesizedExpression(node, opts) { + assert("ParenthesizedExpression", node, opts); +} + +function assertSwitchCase(node, opts) { + assert("SwitchCase", node, opts); +} + +function assertSwitchStatement(node, opts) { + assert("SwitchStatement", node, opts); +} + +function assertThisExpression(node, opts) { + assert("ThisExpression", node, opts); +} + +function assertThrowStatement(node, opts) { + assert("ThrowStatement", node, opts); +} + +function assertTryStatement(node, opts) { + assert("TryStatement", node, opts); +} + +function assertUnaryExpression(node, opts) { + assert("UnaryExpression", node, opts); +} + +function assertUpdateExpression(node, opts) { + assert("UpdateExpression", node, opts); +} + +function assertVariableDeclaration(node, opts) { + assert("VariableDeclaration", node, opts); +} + +function assertVariableDeclarator(node, opts) { + assert("VariableDeclarator", node, opts); +} + +function assertWhileStatement(node, opts) { + assert("WhileStatement", node, opts); +} + +function assertWithStatement(node, opts) { + assert("WithStatement", node, opts); +} + +function assertAssignmentPattern(node, opts) { + assert("AssignmentPattern", node, opts); +} + +function assertArrayPattern(node, opts) { + assert("ArrayPattern", node, opts); +} + +function assertArrowFunctionExpression(node, opts) { + assert("ArrowFunctionExpression", node, opts); +} + +function assertClassBody(node, opts) { + assert("ClassBody", node, opts); +} + +function assertClassExpression(node, opts) { + assert("ClassExpression", node, opts); +} + +function assertClassDeclaration(node, opts) { + assert("ClassDeclaration", node, opts); +} + +function assertExportAllDeclaration(node, opts) { + assert("ExportAllDeclaration", node, opts); +} + +function assertExportDefaultDeclaration(node, opts) { + assert("ExportDefaultDeclaration", node, opts); +} + +function assertExportNamedDeclaration(node, opts) { + assert("ExportNamedDeclaration", node, opts); +} + +function assertExportSpecifier(node, opts) { + assert("ExportSpecifier", node, opts); +} + +function assertForOfStatement(node, opts) { + assert("ForOfStatement", node, opts); +} + +function assertImportDeclaration(node, opts) { + assert("ImportDeclaration", node, opts); +} + +function assertImportDefaultSpecifier(node, opts) { + assert("ImportDefaultSpecifier", node, opts); +} + +function assertImportNamespaceSpecifier(node, opts) { + assert("ImportNamespaceSpecifier", node, opts); +} + +function assertImportSpecifier(node, opts) { + assert("ImportSpecifier", node, opts); +} + +function assertMetaProperty(node, opts) { + assert("MetaProperty", node, opts); +} + +function assertClassMethod(node, opts) { + assert("ClassMethod", node, opts); +} + +function assertObjectPattern(node, opts) { + assert("ObjectPattern", node, opts); +} + +function assertSpreadElement(node, opts) { + assert("SpreadElement", node, opts); +} + +function assertSuper(node, opts) { + assert("Super", node, opts); +} + +function assertTaggedTemplateExpression(node, opts) { + assert("TaggedTemplateExpression", node, opts); +} + +function assertTemplateElement(node, opts) { + assert("TemplateElement", node, opts); +} + +function assertTemplateLiteral(node, opts) { + assert("TemplateLiteral", node, opts); +} + +function assertYieldExpression(node, opts) { + assert("YieldExpression", node, opts); +} + +function assertAwaitExpression(node, opts) { + assert("AwaitExpression", node, opts); +} + +function assertImport(node, opts) { + assert("Import", node, opts); +} + +function assertBigIntLiteral(node, opts) { + assert("BigIntLiteral", node, opts); +} + +function assertExportNamespaceSpecifier(node, opts) { + assert("ExportNamespaceSpecifier", node, opts); +} + +function assertOptionalMemberExpression(node, opts) { + assert("OptionalMemberExpression", node, opts); +} + +function assertOptionalCallExpression(node, opts) { + assert("OptionalCallExpression", node, opts); +} + +function assertClassProperty(node, opts) { + assert("ClassProperty", node, opts); +} + +function assertClassPrivateProperty(node, opts) { + assert("ClassPrivateProperty", node, opts); +} + +function assertClassPrivateMethod(node, opts) { + assert("ClassPrivateMethod", node, opts); +} + +function assertPrivateName(node, opts) { + assert("PrivateName", node, opts); +} + +function assertAnyTypeAnnotation(node, opts) { + assert("AnyTypeAnnotation", node, opts); +} + +function assertArrayTypeAnnotation(node, opts) { + assert("ArrayTypeAnnotation", node, opts); +} + +function assertBooleanTypeAnnotation(node, opts) { + assert("BooleanTypeAnnotation", node, opts); +} + +function assertBooleanLiteralTypeAnnotation(node, opts) { + assert("BooleanLiteralTypeAnnotation", node, opts); +} + +function assertNullLiteralTypeAnnotation(node, opts) { + assert("NullLiteralTypeAnnotation", node, opts); +} + +function assertClassImplements(node, opts) { + assert("ClassImplements", node, opts); +} + +function assertDeclareClass(node, opts) { + assert("DeclareClass", node, opts); +} + +function assertDeclareFunction(node, opts) { + assert("DeclareFunction", node, opts); +} + +function assertDeclareInterface(node, opts) { + assert("DeclareInterface", node, opts); +} + +function assertDeclareModule(node, opts) { + assert("DeclareModule", node, opts); +} + +function assertDeclareModuleExports(node, opts) { + assert("DeclareModuleExports", node, opts); +} + +function assertDeclareTypeAlias(node, opts) { + assert("DeclareTypeAlias", node, opts); +} + +function assertDeclareOpaqueType(node, opts) { + assert("DeclareOpaqueType", node, opts); +} + +function assertDeclareVariable(node, opts) { + assert("DeclareVariable", node, opts); +} + +function assertDeclareExportDeclaration(node, opts) { + assert("DeclareExportDeclaration", node, opts); +} + +function assertDeclareExportAllDeclaration(node, opts) { + assert("DeclareExportAllDeclaration", node, opts); +} + +function assertDeclaredPredicate(node, opts) { + assert("DeclaredPredicate", node, opts); +} + +function assertExistsTypeAnnotation(node, opts) { + assert("ExistsTypeAnnotation", node, opts); +} + +function assertFunctionTypeAnnotation(node, opts) { + assert("FunctionTypeAnnotation", node, opts); +} + +function assertFunctionTypeParam(node, opts) { + assert("FunctionTypeParam", node, opts); +} + +function assertGenericTypeAnnotation(node, opts) { + assert("GenericTypeAnnotation", node, opts); +} + +function assertInferredPredicate(node, opts) { + assert("InferredPredicate", node, opts); +} + +function assertInterfaceExtends(node, opts) { + assert("InterfaceExtends", node, opts); +} + +function assertInterfaceDeclaration(node, opts) { + assert("InterfaceDeclaration", node, opts); +} + +function assertInterfaceTypeAnnotation(node, opts) { + assert("InterfaceTypeAnnotation", node, opts); +} + +function assertIntersectionTypeAnnotation(node, opts) { + assert("IntersectionTypeAnnotation", node, opts); +} + +function assertMixedTypeAnnotation(node, opts) { + assert("MixedTypeAnnotation", node, opts); +} + +function assertEmptyTypeAnnotation(node, opts) { + assert("EmptyTypeAnnotation", node, opts); +} + +function assertNullableTypeAnnotation(node, opts) { + assert("NullableTypeAnnotation", node, opts); +} + +function assertNumberLiteralTypeAnnotation(node, opts) { + assert("NumberLiteralTypeAnnotation", node, opts); +} + +function assertNumberTypeAnnotation(node, opts) { + assert("NumberTypeAnnotation", node, opts); +} + +function assertObjectTypeAnnotation(node, opts) { + assert("ObjectTypeAnnotation", node, opts); +} + +function assertObjectTypeInternalSlot(node, opts) { + assert("ObjectTypeInternalSlot", node, opts); +} + +function assertObjectTypeCallProperty(node, opts) { + assert("ObjectTypeCallProperty", node, opts); +} + +function assertObjectTypeIndexer(node, opts) { + assert("ObjectTypeIndexer", node, opts); +} + +function assertObjectTypeProperty(node, opts) { + assert("ObjectTypeProperty", node, opts); +} + +function assertObjectTypeSpreadProperty(node, opts) { + assert("ObjectTypeSpreadProperty", node, opts); +} + +function assertOpaqueType(node, opts) { + assert("OpaqueType", node, opts); +} + +function assertQualifiedTypeIdentifier(node, opts) { + assert("QualifiedTypeIdentifier", node, opts); +} + +function assertStringLiteralTypeAnnotation(node, opts) { + assert("StringLiteralTypeAnnotation", node, opts); +} + +function assertStringTypeAnnotation(node, opts) { + assert("StringTypeAnnotation", node, opts); +} + +function assertSymbolTypeAnnotation(node, opts) { + assert("SymbolTypeAnnotation", node, opts); +} + +function assertThisTypeAnnotation(node, opts) { + assert("ThisTypeAnnotation", node, opts); +} + +function assertTupleTypeAnnotation(node, opts) { + assert("TupleTypeAnnotation", node, opts); +} + +function assertTypeofTypeAnnotation(node, opts) { + assert("TypeofTypeAnnotation", node, opts); +} + +function assertTypeAlias(node, opts) { + assert("TypeAlias", node, opts); +} + +function assertTypeAnnotation(node, opts) { + assert("TypeAnnotation", node, opts); +} + +function assertTypeCastExpression(node, opts) { + assert("TypeCastExpression", node, opts); +} + +function assertTypeParameter(node, opts) { + assert("TypeParameter", node, opts); +} + +function assertTypeParameterDeclaration(node, opts) { + assert("TypeParameterDeclaration", node, opts); +} + +function assertTypeParameterInstantiation(node, opts) { + assert("TypeParameterInstantiation", node, opts); +} + +function assertUnionTypeAnnotation(node, opts) { + assert("UnionTypeAnnotation", node, opts); +} + +function assertVariance(node, opts) { + assert("Variance", node, opts); +} + +function assertVoidTypeAnnotation(node, opts) { + assert("VoidTypeAnnotation", node, opts); +} + +function assertEnumDeclaration(node, opts) { + assert("EnumDeclaration", node, opts); +} + +function assertEnumBooleanBody(node, opts) { + assert("EnumBooleanBody", node, opts); +} + +function assertEnumNumberBody(node, opts) { + assert("EnumNumberBody", node, opts); +} + +function assertEnumStringBody(node, opts) { + assert("EnumStringBody", node, opts); +} + +function assertEnumSymbolBody(node, opts) { + assert("EnumSymbolBody", node, opts); +} + +function assertEnumBooleanMember(node, opts) { + assert("EnumBooleanMember", node, opts); +} + +function assertEnumNumberMember(node, opts) { + assert("EnumNumberMember", node, opts); +} + +function assertEnumStringMember(node, opts) { + assert("EnumStringMember", node, opts); +} + +function assertEnumDefaultedMember(node, opts) { + assert("EnumDefaultedMember", node, opts); +} + +function assertIndexedAccessType(node, opts) { + assert("IndexedAccessType", node, opts); +} + +function assertOptionalIndexedAccessType(node, opts) { + assert("OptionalIndexedAccessType", node, opts); +} + +function assertJSXAttribute(node, opts) { + assert("JSXAttribute", node, opts); +} + +function assertJSXClosingElement(node, opts) { + assert("JSXClosingElement", node, opts); +} + +function assertJSXElement(node, opts) { + assert("JSXElement", node, opts); +} + +function assertJSXEmptyExpression(node, opts) { + assert("JSXEmptyExpression", node, opts); +} + +function assertJSXExpressionContainer(node, opts) { + assert("JSXExpressionContainer", node, opts); +} + +function assertJSXSpreadChild(node, opts) { + assert("JSXSpreadChild", node, opts); +} + +function assertJSXIdentifier(node, opts) { + assert("JSXIdentifier", node, opts); +} + +function assertJSXMemberExpression(node, opts) { + assert("JSXMemberExpression", node, opts); +} + +function assertJSXNamespacedName(node, opts) { + assert("JSXNamespacedName", node, opts); +} + +function assertJSXOpeningElement(node, opts) { + assert("JSXOpeningElement", node, opts); +} + +function assertJSXSpreadAttribute(node, opts) { + assert("JSXSpreadAttribute", node, opts); +} + +function assertJSXText(node, opts) { + assert("JSXText", node, opts); +} + +function assertJSXFragment(node, opts) { + assert("JSXFragment", node, opts); +} + +function assertJSXOpeningFragment(node, opts) { + assert("JSXOpeningFragment", node, opts); +} + +function assertJSXClosingFragment(node, opts) { + assert("JSXClosingFragment", node, opts); +} + +function assertNoop(node, opts) { + assert("Noop", node, opts); +} + +function assertPlaceholder(node, opts) { + assert("Placeholder", node, opts); +} + +function assertV8IntrinsicIdentifier(node, opts) { + assert("V8IntrinsicIdentifier", node, opts); +} + +function assertArgumentPlaceholder(node, opts) { + assert("ArgumentPlaceholder", node, opts); +} + +function assertBindExpression(node, opts) { + assert("BindExpression", node, opts); +} + +function assertImportAttribute(node, opts) { + assert("ImportAttribute", node, opts); +} + +function assertDecorator(node, opts) { + assert("Decorator", node, opts); +} + +function assertDoExpression(node, opts) { + assert("DoExpression", node, opts); +} + +function assertExportDefaultSpecifier(node, opts) { + assert("ExportDefaultSpecifier", node, opts); +} + +function assertRecordExpression(node, opts) { + assert("RecordExpression", node, opts); +} + +function assertTupleExpression(node, opts) { + assert("TupleExpression", node, opts); +} + +function assertDecimalLiteral(node, opts) { + assert("DecimalLiteral", node, opts); +} + +function assertStaticBlock(node, opts) { + assert("StaticBlock", node, opts); +} + +function assertModuleExpression(node, opts) { + assert("ModuleExpression", node, opts); +} + +function assertTopicReference(node, opts) { + assert("TopicReference", node, opts); +} + +function assertPipelineTopicExpression(node, opts) { + assert("PipelineTopicExpression", node, opts); +} + +function assertPipelineBareFunction(node, opts) { + assert("PipelineBareFunction", node, opts); +} + +function assertPipelinePrimaryTopicReference(node, opts) { + assert("PipelinePrimaryTopicReference", node, opts); +} + +function assertTSParameterProperty(node, opts) { + assert("TSParameterProperty", node, opts); +} + +function assertTSDeclareFunction(node, opts) { + assert("TSDeclareFunction", node, opts); +} + +function assertTSDeclareMethod(node, opts) { + assert("TSDeclareMethod", node, opts); +} + +function assertTSQualifiedName(node, opts) { + assert("TSQualifiedName", node, opts); +} + +function assertTSCallSignatureDeclaration(node, opts) { + assert("TSCallSignatureDeclaration", node, opts); +} + +function assertTSConstructSignatureDeclaration(node, opts) { + assert("TSConstructSignatureDeclaration", node, opts); +} + +function assertTSPropertySignature(node, opts) { + assert("TSPropertySignature", node, opts); +} + +function assertTSMethodSignature(node, opts) { + assert("TSMethodSignature", node, opts); +} + +function assertTSIndexSignature(node, opts) { + assert("TSIndexSignature", node, opts); +} + +function assertTSAnyKeyword(node, opts) { + assert("TSAnyKeyword", node, opts); +} + +function assertTSBooleanKeyword(node, opts) { + assert("TSBooleanKeyword", node, opts); +} + +function assertTSBigIntKeyword(node, opts) { + assert("TSBigIntKeyword", node, opts); +} + +function assertTSIntrinsicKeyword(node, opts) { + assert("TSIntrinsicKeyword", node, opts); +} + +function assertTSNeverKeyword(node, opts) { + assert("TSNeverKeyword", node, opts); +} + +function assertTSNullKeyword(node, opts) { + assert("TSNullKeyword", node, opts); +} + +function assertTSNumberKeyword(node, opts) { + assert("TSNumberKeyword", node, opts); +} + +function assertTSObjectKeyword(node, opts) { + assert("TSObjectKeyword", node, opts); +} + +function assertTSStringKeyword(node, opts) { + assert("TSStringKeyword", node, opts); +} + +function assertTSSymbolKeyword(node, opts) { + assert("TSSymbolKeyword", node, opts); +} + +function assertTSUndefinedKeyword(node, opts) { + assert("TSUndefinedKeyword", node, opts); +} + +function assertTSUnknownKeyword(node, opts) { + assert("TSUnknownKeyword", node, opts); +} + +function assertTSVoidKeyword(node, opts) { + assert("TSVoidKeyword", node, opts); +} + +function assertTSThisType(node, opts) { + assert("TSThisType", node, opts); +} + +function assertTSFunctionType(node, opts) { + assert("TSFunctionType", node, opts); +} + +function assertTSConstructorType(node, opts) { + assert("TSConstructorType", node, opts); +} + +function assertTSTypeReference(node, opts) { + assert("TSTypeReference", node, opts); +} + +function assertTSTypePredicate(node, opts) { + assert("TSTypePredicate", node, opts); +} + +function assertTSTypeQuery(node, opts) { + assert("TSTypeQuery", node, opts); +} + +function assertTSTypeLiteral(node, opts) { + assert("TSTypeLiteral", node, opts); +} + +function assertTSArrayType(node, opts) { + assert("TSArrayType", node, opts); +} + +function assertTSTupleType(node, opts) { + assert("TSTupleType", node, opts); +} + +function assertTSOptionalType(node, opts) { + assert("TSOptionalType", node, opts); +} + +function assertTSRestType(node, opts) { + assert("TSRestType", node, opts); +} + +function assertTSNamedTupleMember(node, opts) { + assert("TSNamedTupleMember", node, opts); +} + +function assertTSUnionType(node, opts) { + assert("TSUnionType", node, opts); +} + +function assertTSIntersectionType(node, opts) { + assert("TSIntersectionType", node, opts); +} + +function assertTSConditionalType(node, opts) { + assert("TSConditionalType", node, opts); +} + +function assertTSInferType(node, opts) { + assert("TSInferType", node, opts); +} + +function assertTSParenthesizedType(node, opts) { + assert("TSParenthesizedType", node, opts); +} + +function assertTSTypeOperator(node, opts) { + assert("TSTypeOperator", node, opts); +} + +function assertTSIndexedAccessType(node, opts) { + assert("TSIndexedAccessType", node, opts); +} + +function assertTSMappedType(node, opts) { + assert("TSMappedType", node, opts); +} + +function assertTSLiteralType(node, opts) { + assert("TSLiteralType", node, opts); +} + +function assertTSExpressionWithTypeArguments(node, opts) { + assert("TSExpressionWithTypeArguments", node, opts); +} + +function assertTSInterfaceDeclaration(node, opts) { + assert("TSInterfaceDeclaration", node, opts); +} + +function assertTSInterfaceBody(node, opts) { + assert("TSInterfaceBody", node, opts); +} + +function assertTSTypeAliasDeclaration(node, opts) { + assert("TSTypeAliasDeclaration", node, opts); +} + +function assertTSAsExpression(node, opts) { + assert("TSAsExpression", node, opts); +} + +function assertTSTypeAssertion(node, opts) { + assert("TSTypeAssertion", node, opts); +} + +function assertTSEnumDeclaration(node, opts) { + assert("TSEnumDeclaration", node, opts); +} + +function assertTSEnumMember(node, opts) { + assert("TSEnumMember", node, opts); +} + +function assertTSModuleDeclaration(node, opts) { + assert("TSModuleDeclaration", node, opts); +} + +function assertTSModuleBlock(node, opts) { + assert("TSModuleBlock", node, opts); +} + +function assertTSImportType(node, opts) { + assert("TSImportType", node, opts); +} + +function assertTSImportEqualsDeclaration(node, opts) { + assert("TSImportEqualsDeclaration", node, opts); +} + +function assertTSExternalModuleReference(node, opts) { + assert("TSExternalModuleReference", node, opts); +} + +function assertTSNonNullExpression(node, opts) { + assert("TSNonNullExpression", node, opts); +} + +function assertTSExportAssignment(node, opts) { + assert("TSExportAssignment", node, opts); +} + +function assertTSNamespaceExportDeclaration(node, opts) { + assert("TSNamespaceExportDeclaration", node, opts); +} + +function assertTSTypeAnnotation(node, opts) { + assert("TSTypeAnnotation", node, opts); +} + +function assertTSTypeParameterInstantiation(node, opts) { + assert("TSTypeParameterInstantiation", node, opts); +} + +function assertTSTypeParameterDeclaration(node, opts) { + assert("TSTypeParameterDeclaration", node, opts); +} + +function assertTSTypeParameter(node, opts) { + assert("TSTypeParameter", node, opts); +} + +function assertExpression(node, opts) { + assert("Expression", node, opts); +} + +function assertBinary(node, opts) { + assert("Binary", node, opts); +} + +function assertScopable(node, opts) { + assert("Scopable", node, opts); +} + +function assertBlockParent(node, opts) { + assert("BlockParent", node, opts); +} + +function assertBlock(node, opts) { + assert("Block", node, opts); +} + +function assertStatement(node, opts) { + assert("Statement", node, opts); +} + +function assertTerminatorless(node, opts) { + assert("Terminatorless", node, opts); +} + +function assertCompletionStatement(node, opts) { + assert("CompletionStatement", node, opts); +} + +function assertConditional(node, opts) { + assert("Conditional", node, opts); +} + +function assertLoop(node, opts) { + assert("Loop", node, opts); +} + +function assertWhile(node, opts) { + assert("While", node, opts); +} + +function assertExpressionWrapper(node, opts) { + assert("ExpressionWrapper", node, opts); +} + +function assertFor(node, opts) { + assert("For", node, opts); +} + +function assertForXStatement(node, opts) { + assert("ForXStatement", node, opts); +} + +function assertFunction(node, opts) { + assert("Function", node, opts); +} + +function assertFunctionParent(node, opts) { + assert("FunctionParent", node, opts); +} + +function assertPureish(node, opts) { + assert("Pureish", node, opts); +} + +function assertDeclaration(node, opts) { + assert("Declaration", node, opts); +} + +function assertPatternLike(node, opts) { + assert("PatternLike", node, opts); +} + +function assertLVal(node, opts) { + assert("LVal", node, opts); +} + +function assertTSEntityName(node, opts) { + assert("TSEntityName", node, opts); +} + +function assertLiteral(node, opts) { + assert("Literal", node, opts); +} + +function assertImmutable(node, opts) { + assert("Immutable", node, opts); +} + +function assertUserWhitespacable(node, opts) { + assert("UserWhitespacable", node, opts); +} + +function assertMethod(node, opts) { + assert("Method", node, opts); +} + +function assertObjectMember(node, opts) { + assert("ObjectMember", node, opts); +} + +function assertProperty(node, opts) { + assert("Property", node, opts); +} + +function assertUnaryLike(node, opts) { + assert("UnaryLike", node, opts); +} + +function assertPattern(node, opts) { + assert("Pattern", node, opts); +} + +function assertClass(node, opts) { + assert("Class", node, opts); +} + +function assertModuleDeclaration(node, opts) { + assert("ModuleDeclaration", node, opts); +} + +function assertExportDeclaration(node, opts) { + assert("ExportDeclaration", node, opts); +} + +function assertModuleSpecifier(node, opts) { + assert("ModuleSpecifier", node, opts); +} + +function assertPrivate(node, opts) { + assert("Private", node, opts); +} + +function assertFlow(node, opts) { + assert("Flow", node, opts); +} + +function assertFlowType(node, opts) { + assert("FlowType", node, opts); +} + +function assertFlowBaseAnnotation(node, opts) { + assert("FlowBaseAnnotation", node, opts); +} + +function assertFlowDeclaration(node, opts) { + assert("FlowDeclaration", node, opts); +} + +function assertFlowPredicate(node, opts) { + assert("FlowPredicate", node, opts); +} + +function assertEnumBody(node, opts) { + assert("EnumBody", node, opts); +} + +function assertEnumMember(node, opts) { + assert("EnumMember", node, opts); +} + +function assertJSX(node, opts) { + assert("JSX", node, opts); +} + +function assertTSTypeElement(node, opts) { + assert("TSTypeElement", node, opts); +} + +function assertTSType(node, opts) { + assert("TSType", node, opts); +} + +function assertTSBaseType(node, opts) { + assert("TSBaseType", node, opts); +} + +function assertNumberLiteral(node, opts) { + console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); + assert("NumberLiteral", node, opts); +} + +function assertRegexLiteral(node, opts) { + console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); + assert("RegexLiteral", node, opts); +} + +function assertRestProperty(node, opts) { + console.trace("The node type RestProperty has been renamed to RestElement"); + assert("RestProperty", node, opts); +} + +function assertSpreadProperty(node, opts) { + console.trace("The node type SpreadProperty has been renamed to SpreadElement"); + assert("SpreadProperty", node, opts); +} + +/***/ }), + +/***/ 64373: +/***/ (() => { + + + +/***/ }), + +/***/ 81426: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = builder; + +var _definitions = __nccwpck_require__(19090); + +var _validate = __nccwpck_require__(4432); + +function builder(type, ...args) { + const keys = _definitions.BUILDER_KEYS[type]; + const countArgs = args.length; + + if (countArgs > keys.length) { + throw new Error(`${type}: Too many arguments passed. Received ${countArgs} but can receive no more than ${keys.length}`); + } + + const node = { + type + }; + let i = 0; + keys.forEach(key => { + const field = _definitions.NODE_FIELDS[type][key]; + let arg; + if (i < countArgs) arg = args[i]; + + if (arg === undefined) { + arg = Array.isArray(field.default) ? [] : field.default; + } + + node[key] = arg; + i++; + }); + + for (const key of Object.keys(node)) { + (0, _validate.default)(node, key, node[key]); + } + + return node; +} + +/***/ }), + +/***/ 53598: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createFlowUnionType; + +var _generated = __nccwpck_require__(10758); + +var _removeTypeDuplicates = __nccwpck_require__(30036); + +function createFlowUnionType(types) { + const flattened = (0, _removeTypeDuplicates.default)(types); + + if (flattened.length === 1) { + return flattened[0]; + } else { + return (0, _generated.unionTypeAnnotation)(flattened); + } +} + +/***/ }), + +/***/ 7112: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createTypeAnnotationBasedOnTypeof; + +var _generated = __nccwpck_require__(10758); + +function createTypeAnnotationBasedOnTypeof(type) { + if (type === "string") { + return (0, _generated.stringTypeAnnotation)(); + } else if (type === "number") { + return (0, _generated.numberTypeAnnotation)(); + } else if (type === "undefined") { + return (0, _generated.voidTypeAnnotation)(); + } else if (type === "boolean") { + return (0, _generated.booleanTypeAnnotation)(); + } else if (type === "function") { + return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Function")); + } else if (type === "object") { + return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Object")); + } else if (type === "symbol") { + return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol")); + } else if (type === "bigint") { + return (0, _generated.anyTypeAnnotation)(); + } else { + throw new Error("Invalid typeof value: " + type); + } +} + +/***/ }), + +/***/ 10758: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.arrayExpression = arrayExpression; +exports.assignmentExpression = assignmentExpression; +exports.binaryExpression = binaryExpression; +exports.interpreterDirective = interpreterDirective; +exports.directive = directive; +exports.directiveLiteral = directiveLiteral; +exports.blockStatement = blockStatement; +exports.breakStatement = breakStatement; +exports.callExpression = callExpression; +exports.catchClause = catchClause; +exports.conditionalExpression = conditionalExpression; +exports.continueStatement = continueStatement; +exports.debuggerStatement = debuggerStatement; +exports.doWhileStatement = doWhileStatement; +exports.emptyStatement = emptyStatement; +exports.expressionStatement = expressionStatement; +exports.file = file; +exports.forInStatement = forInStatement; +exports.forStatement = forStatement; +exports.functionDeclaration = functionDeclaration; +exports.functionExpression = functionExpression; +exports.identifier = identifier; +exports.ifStatement = ifStatement; +exports.labeledStatement = labeledStatement; +exports.stringLiteral = stringLiteral; +exports.numericLiteral = numericLiteral; +exports.nullLiteral = nullLiteral; +exports.booleanLiteral = booleanLiteral; +exports.regExpLiteral = regExpLiteral; +exports.logicalExpression = logicalExpression; +exports.memberExpression = memberExpression; +exports.newExpression = newExpression; +exports.program = program; +exports.objectExpression = objectExpression; +exports.objectMethod = objectMethod; +exports.objectProperty = objectProperty; +exports.restElement = restElement; +exports.returnStatement = returnStatement; +exports.sequenceExpression = sequenceExpression; +exports.parenthesizedExpression = parenthesizedExpression; +exports.switchCase = switchCase; +exports.switchStatement = switchStatement; +exports.thisExpression = thisExpression; +exports.throwStatement = throwStatement; +exports.tryStatement = tryStatement; +exports.unaryExpression = unaryExpression; +exports.updateExpression = updateExpression; +exports.variableDeclaration = variableDeclaration; +exports.variableDeclarator = variableDeclarator; +exports.whileStatement = whileStatement; +exports.withStatement = withStatement; +exports.assignmentPattern = assignmentPattern; +exports.arrayPattern = arrayPattern; +exports.arrowFunctionExpression = arrowFunctionExpression; +exports.classBody = classBody; +exports.classExpression = classExpression; +exports.classDeclaration = classDeclaration; +exports.exportAllDeclaration = exportAllDeclaration; +exports.exportDefaultDeclaration = exportDefaultDeclaration; +exports.exportNamedDeclaration = exportNamedDeclaration; +exports.exportSpecifier = exportSpecifier; +exports.forOfStatement = forOfStatement; +exports.importDeclaration = importDeclaration; +exports.importDefaultSpecifier = importDefaultSpecifier; +exports.importNamespaceSpecifier = importNamespaceSpecifier; +exports.importSpecifier = importSpecifier; +exports.metaProperty = metaProperty; +exports.classMethod = classMethod; +exports.objectPattern = objectPattern; +exports.spreadElement = spreadElement; +exports["super"] = _super; +exports.taggedTemplateExpression = taggedTemplateExpression; +exports.templateElement = templateElement; +exports.templateLiteral = templateLiteral; +exports.yieldExpression = yieldExpression; +exports.awaitExpression = awaitExpression; +exports["import"] = _import; +exports.bigIntLiteral = bigIntLiteral; +exports.exportNamespaceSpecifier = exportNamespaceSpecifier; +exports.optionalMemberExpression = optionalMemberExpression; +exports.optionalCallExpression = optionalCallExpression; +exports.classProperty = classProperty; +exports.classPrivateProperty = classPrivateProperty; +exports.classPrivateMethod = classPrivateMethod; +exports.privateName = privateName; +exports.anyTypeAnnotation = anyTypeAnnotation; +exports.arrayTypeAnnotation = arrayTypeAnnotation; +exports.booleanTypeAnnotation = booleanTypeAnnotation; +exports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation; +exports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation; +exports.classImplements = classImplements; +exports.declareClass = declareClass; +exports.declareFunction = declareFunction; +exports.declareInterface = declareInterface; +exports.declareModule = declareModule; +exports.declareModuleExports = declareModuleExports; +exports.declareTypeAlias = declareTypeAlias; +exports.declareOpaqueType = declareOpaqueType; +exports.declareVariable = declareVariable; +exports.declareExportDeclaration = declareExportDeclaration; +exports.declareExportAllDeclaration = declareExportAllDeclaration; +exports.declaredPredicate = declaredPredicate; +exports.existsTypeAnnotation = existsTypeAnnotation; +exports.functionTypeAnnotation = functionTypeAnnotation; +exports.functionTypeParam = functionTypeParam; +exports.genericTypeAnnotation = genericTypeAnnotation; +exports.inferredPredicate = inferredPredicate; +exports.interfaceExtends = interfaceExtends; +exports.interfaceDeclaration = interfaceDeclaration; +exports.interfaceTypeAnnotation = interfaceTypeAnnotation; +exports.intersectionTypeAnnotation = intersectionTypeAnnotation; +exports.mixedTypeAnnotation = mixedTypeAnnotation; +exports.emptyTypeAnnotation = emptyTypeAnnotation; +exports.nullableTypeAnnotation = nullableTypeAnnotation; +exports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation; +exports.numberTypeAnnotation = numberTypeAnnotation; +exports.objectTypeAnnotation = objectTypeAnnotation; +exports.objectTypeInternalSlot = objectTypeInternalSlot; +exports.objectTypeCallProperty = objectTypeCallProperty; +exports.objectTypeIndexer = objectTypeIndexer; +exports.objectTypeProperty = objectTypeProperty; +exports.objectTypeSpreadProperty = objectTypeSpreadProperty; +exports.opaqueType = opaqueType; +exports.qualifiedTypeIdentifier = qualifiedTypeIdentifier; +exports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation; +exports.stringTypeAnnotation = stringTypeAnnotation; +exports.symbolTypeAnnotation = symbolTypeAnnotation; +exports.thisTypeAnnotation = thisTypeAnnotation; +exports.tupleTypeAnnotation = tupleTypeAnnotation; +exports.typeofTypeAnnotation = typeofTypeAnnotation; +exports.typeAlias = typeAlias; +exports.typeAnnotation = typeAnnotation; +exports.typeCastExpression = typeCastExpression; +exports.typeParameter = typeParameter; +exports.typeParameterDeclaration = typeParameterDeclaration; +exports.typeParameterInstantiation = typeParameterInstantiation; +exports.unionTypeAnnotation = unionTypeAnnotation; +exports.variance = variance; +exports.voidTypeAnnotation = voidTypeAnnotation; +exports.enumDeclaration = enumDeclaration; +exports.enumBooleanBody = enumBooleanBody; +exports.enumNumberBody = enumNumberBody; +exports.enumStringBody = enumStringBody; +exports.enumSymbolBody = enumSymbolBody; +exports.enumBooleanMember = enumBooleanMember; +exports.enumNumberMember = enumNumberMember; +exports.enumStringMember = enumStringMember; +exports.enumDefaultedMember = enumDefaultedMember; +exports.indexedAccessType = indexedAccessType; +exports.optionalIndexedAccessType = optionalIndexedAccessType; +exports.jSXAttribute = exports.jsxAttribute = jsxAttribute; +exports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement; +exports.jSXElement = exports.jsxElement = jsxElement; +exports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression; +exports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer; +exports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild; +exports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier; +exports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression; +exports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName; +exports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement; +exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute; +exports.jSXText = exports.jsxText = jsxText; +exports.jSXFragment = exports.jsxFragment = jsxFragment; +exports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment; +exports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment; +exports.noop = noop; +exports.placeholder = placeholder; +exports.v8IntrinsicIdentifier = v8IntrinsicIdentifier; +exports.argumentPlaceholder = argumentPlaceholder; +exports.bindExpression = bindExpression; +exports.importAttribute = importAttribute; +exports.decorator = decorator; +exports.doExpression = doExpression; +exports.exportDefaultSpecifier = exportDefaultSpecifier; +exports.recordExpression = recordExpression; +exports.tupleExpression = tupleExpression; +exports.decimalLiteral = decimalLiteral; +exports.staticBlock = staticBlock; +exports.moduleExpression = moduleExpression; +exports.topicReference = topicReference; +exports.pipelineTopicExpression = pipelineTopicExpression; +exports.pipelineBareFunction = pipelineBareFunction; +exports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference; +exports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty; +exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction; +exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod; +exports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName; +exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration; +exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration; +exports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature; +exports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature; +exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature; +exports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword; +exports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword; +exports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword; +exports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword; +exports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword; +exports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword; +exports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword; +exports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword; +exports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword; +exports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword; +exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword; +exports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword; +exports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword; +exports.tSThisType = exports.tsThisType = tsThisType; +exports.tSFunctionType = exports.tsFunctionType = tsFunctionType; +exports.tSConstructorType = exports.tsConstructorType = tsConstructorType; +exports.tSTypeReference = exports.tsTypeReference = tsTypeReference; +exports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate; +exports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery; +exports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral; +exports.tSArrayType = exports.tsArrayType = tsArrayType; +exports.tSTupleType = exports.tsTupleType = tsTupleType; +exports.tSOptionalType = exports.tsOptionalType = tsOptionalType; +exports.tSRestType = exports.tsRestType = tsRestType; +exports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember; +exports.tSUnionType = exports.tsUnionType = tsUnionType; +exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType; +exports.tSConditionalType = exports.tsConditionalType = tsConditionalType; +exports.tSInferType = exports.tsInferType = tsInferType; +exports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType; +exports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator; +exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType; +exports.tSMappedType = exports.tsMappedType = tsMappedType; +exports.tSLiteralType = exports.tsLiteralType = tsLiteralType; +exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments; +exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration; +exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody; +exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration; +exports.tSAsExpression = exports.tsAsExpression = tsAsExpression; +exports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion; +exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration; +exports.tSEnumMember = exports.tsEnumMember = tsEnumMember; +exports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration; +exports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock; +exports.tSImportType = exports.tsImportType = tsImportType; +exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration; +exports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference; +exports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression; +exports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment; +exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration; +exports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation; +exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation; +exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration; +exports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter; +exports.numberLiteral = NumberLiteral; +exports.regexLiteral = RegexLiteral; +exports.restProperty = RestProperty; +exports.spreadProperty = SpreadProperty; + +var _builder = __nccwpck_require__(81426); + +function arrayExpression(elements) { + return (0, _builder.default)("ArrayExpression", ...arguments); +} + +function assignmentExpression(operator, left, right) { + return (0, _builder.default)("AssignmentExpression", ...arguments); +} + +function binaryExpression(operator, left, right) { + return (0, _builder.default)("BinaryExpression", ...arguments); +} + +function interpreterDirective(value) { + return (0, _builder.default)("InterpreterDirective", ...arguments); +} + +function directive(value) { + return (0, _builder.default)("Directive", ...arguments); +} + +function directiveLiteral(value) { + return (0, _builder.default)("DirectiveLiteral", ...arguments); +} + +function blockStatement(body, directives) { + return (0, _builder.default)("BlockStatement", ...arguments); +} + +function breakStatement(label) { + return (0, _builder.default)("BreakStatement", ...arguments); +} + +function callExpression(callee, _arguments) { + return (0, _builder.default)("CallExpression", ...arguments); +} + +function catchClause(param, body) { + return (0, _builder.default)("CatchClause", ...arguments); +} + +function conditionalExpression(test, consequent, alternate) { + return (0, _builder.default)("ConditionalExpression", ...arguments); +} + +function continueStatement(label) { + return (0, _builder.default)("ContinueStatement", ...arguments); +} + +function debuggerStatement() { + return (0, _builder.default)("DebuggerStatement", ...arguments); +} + +function doWhileStatement(test, body) { + return (0, _builder.default)("DoWhileStatement", ...arguments); +} + +function emptyStatement() { + return (0, _builder.default)("EmptyStatement", ...arguments); +} + +function expressionStatement(expression) { + return (0, _builder.default)("ExpressionStatement", ...arguments); +} + +function file(program, comments, tokens) { + return (0, _builder.default)("File", ...arguments); +} + +function forInStatement(left, right, body) { + return (0, _builder.default)("ForInStatement", ...arguments); +} + +function forStatement(init, test, update, body) { + return (0, _builder.default)("ForStatement", ...arguments); +} + +function functionDeclaration(id, params, body, generator, async) { + return (0, _builder.default)("FunctionDeclaration", ...arguments); +} + +function functionExpression(id, params, body, generator, async) { + return (0, _builder.default)("FunctionExpression", ...arguments); +} + +function identifier(name) { + return (0, _builder.default)("Identifier", ...arguments); +} + +function ifStatement(test, consequent, alternate) { + return (0, _builder.default)("IfStatement", ...arguments); +} + +function labeledStatement(label, body) { + return (0, _builder.default)("LabeledStatement", ...arguments); +} + +function stringLiteral(value) { + return (0, _builder.default)("StringLiteral", ...arguments); +} + +function numericLiteral(value) { + return (0, _builder.default)("NumericLiteral", ...arguments); +} + +function nullLiteral() { + return (0, _builder.default)("NullLiteral", ...arguments); +} + +function booleanLiteral(value) { + return (0, _builder.default)("BooleanLiteral", ...arguments); +} + +function regExpLiteral(pattern, flags) { + return (0, _builder.default)("RegExpLiteral", ...arguments); +} + +function logicalExpression(operator, left, right) { + return (0, _builder.default)("LogicalExpression", ...arguments); +} + +function memberExpression(object, property, computed, optional) { + return (0, _builder.default)("MemberExpression", ...arguments); +} + +function newExpression(callee, _arguments) { + return (0, _builder.default)("NewExpression", ...arguments); +} + +function program(body, directives, sourceType, interpreter) { + return (0, _builder.default)("Program", ...arguments); +} + +function objectExpression(properties) { + return (0, _builder.default)("ObjectExpression", ...arguments); +} + +function objectMethod(kind, key, params, body, computed, generator, async) { + return (0, _builder.default)("ObjectMethod", ...arguments); +} + +function objectProperty(key, value, computed, shorthand, decorators) { + return (0, _builder.default)("ObjectProperty", ...arguments); +} + +function restElement(argument) { + return (0, _builder.default)("RestElement", ...arguments); +} + +function returnStatement(argument) { + return (0, _builder.default)("ReturnStatement", ...arguments); +} + +function sequenceExpression(expressions) { + return (0, _builder.default)("SequenceExpression", ...arguments); +} + +function parenthesizedExpression(expression) { + return (0, _builder.default)("ParenthesizedExpression", ...arguments); +} + +function switchCase(test, consequent) { + return (0, _builder.default)("SwitchCase", ...arguments); +} + +function switchStatement(discriminant, cases) { + return (0, _builder.default)("SwitchStatement", ...arguments); +} + +function thisExpression() { + return (0, _builder.default)("ThisExpression", ...arguments); +} + +function throwStatement(argument) { + return (0, _builder.default)("ThrowStatement", ...arguments); +} + +function tryStatement(block, handler, finalizer) { + return (0, _builder.default)("TryStatement", ...arguments); +} + +function unaryExpression(operator, argument, prefix) { + return (0, _builder.default)("UnaryExpression", ...arguments); +} + +function updateExpression(operator, argument, prefix) { + return (0, _builder.default)("UpdateExpression", ...arguments); +} + +function variableDeclaration(kind, declarations) { + return (0, _builder.default)("VariableDeclaration", ...arguments); +} + +function variableDeclarator(id, init) { + return (0, _builder.default)("VariableDeclarator", ...arguments); +} + +function whileStatement(test, body) { + return (0, _builder.default)("WhileStatement", ...arguments); +} + +function withStatement(object, body) { + return (0, _builder.default)("WithStatement", ...arguments); +} + +function assignmentPattern(left, right) { + return (0, _builder.default)("AssignmentPattern", ...arguments); +} + +function arrayPattern(elements) { + return (0, _builder.default)("ArrayPattern", ...arguments); +} + +function arrowFunctionExpression(params, body, async) { + return (0, _builder.default)("ArrowFunctionExpression", ...arguments); +} + +function classBody(body) { + return (0, _builder.default)("ClassBody", ...arguments); +} + +function classExpression(id, superClass, body, decorators) { + return (0, _builder.default)("ClassExpression", ...arguments); +} + +function classDeclaration(id, superClass, body, decorators) { + return (0, _builder.default)("ClassDeclaration", ...arguments); +} + +function exportAllDeclaration(source) { + return (0, _builder.default)("ExportAllDeclaration", ...arguments); +} + +function exportDefaultDeclaration(declaration) { + return (0, _builder.default)("ExportDefaultDeclaration", ...arguments); +} + +function exportNamedDeclaration(declaration, specifiers, source) { + return (0, _builder.default)("ExportNamedDeclaration", ...arguments); +} + +function exportSpecifier(local, exported) { + return (0, _builder.default)("ExportSpecifier", ...arguments); +} + +function forOfStatement(left, right, body, _await) { + return (0, _builder.default)("ForOfStatement", ...arguments); +} + +function importDeclaration(specifiers, source) { + return (0, _builder.default)("ImportDeclaration", ...arguments); +} + +function importDefaultSpecifier(local) { + return (0, _builder.default)("ImportDefaultSpecifier", ...arguments); +} + +function importNamespaceSpecifier(local) { + return (0, _builder.default)("ImportNamespaceSpecifier", ...arguments); +} + +function importSpecifier(local, imported) { + return (0, _builder.default)("ImportSpecifier", ...arguments); +} + +function metaProperty(meta, property) { + return (0, _builder.default)("MetaProperty", ...arguments); +} + +function classMethod(kind, key, params, body, computed, _static, generator, async) { + return (0, _builder.default)("ClassMethod", ...arguments); +} + +function objectPattern(properties) { + return (0, _builder.default)("ObjectPattern", ...arguments); +} + +function spreadElement(argument) { + return (0, _builder.default)("SpreadElement", ...arguments); +} + +function _super() { + return (0, _builder.default)("Super", ...arguments); +} + +function taggedTemplateExpression(tag, quasi) { + return (0, _builder.default)("TaggedTemplateExpression", ...arguments); +} + +function templateElement(value, tail) { + return (0, _builder.default)("TemplateElement", ...arguments); +} + +function templateLiteral(quasis, expressions) { + return (0, _builder.default)("TemplateLiteral", ...arguments); +} + +function yieldExpression(argument, delegate) { + return (0, _builder.default)("YieldExpression", ...arguments); +} + +function awaitExpression(argument) { + return (0, _builder.default)("AwaitExpression", ...arguments); +} + +function _import() { + return (0, _builder.default)("Import", ...arguments); +} + +function bigIntLiteral(value) { + return (0, _builder.default)("BigIntLiteral", ...arguments); +} + +function exportNamespaceSpecifier(exported) { + return (0, _builder.default)("ExportNamespaceSpecifier", ...arguments); +} + +function optionalMemberExpression(object, property, computed, optional) { + return (0, _builder.default)("OptionalMemberExpression", ...arguments); +} + +function optionalCallExpression(callee, _arguments, optional) { + return (0, _builder.default)("OptionalCallExpression", ...arguments); +} + +function classProperty(key, value, typeAnnotation, decorators, computed, _static) { + return (0, _builder.default)("ClassProperty", ...arguments); +} + +function classPrivateProperty(key, value, decorators, _static) { + return (0, _builder.default)("ClassPrivateProperty", ...arguments); +} + +function classPrivateMethod(kind, key, params, body, _static) { + return (0, _builder.default)("ClassPrivateMethod", ...arguments); +} + +function privateName(id) { + return (0, _builder.default)("PrivateName", ...arguments); +} + +function anyTypeAnnotation() { + return (0, _builder.default)("AnyTypeAnnotation", ...arguments); +} + +function arrayTypeAnnotation(elementType) { + return (0, _builder.default)("ArrayTypeAnnotation", ...arguments); +} + +function booleanTypeAnnotation() { + return (0, _builder.default)("BooleanTypeAnnotation", ...arguments); +} + +function booleanLiteralTypeAnnotation(value) { + return (0, _builder.default)("BooleanLiteralTypeAnnotation", ...arguments); +} + +function nullLiteralTypeAnnotation() { + return (0, _builder.default)("NullLiteralTypeAnnotation", ...arguments); +} + +function classImplements(id, typeParameters) { + return (0, _builder.default)("ClassImplements", ...arguments); +} + +function declareClass(id, typeParameters, _extends, body) { + return (0, _builder.default)("DeclareClass", ...arguments); +} + +function declareFunction(id) { + return (0, _builder.default)("DeclareFunction", ...arguments); +} + +function declareInterface(id, typeParameters, _extends, body) { + return (0, _builder.default)("DeclareInterface", ...arguments); +} + +function declareModule(id, body, kind) { + return (0, _builder.default)("DeclareModule", ...arguments); +} + +function declareModuleExports(typeAnnotation) { + return (0, _builder.default)("DeclareModuleExports", ...arguments); +} + +function declareTypeAlias(id, typeParameters, right) { + return (0, _builder.default)("DeclareTypeAlias", ...arguments); +} + +function declareOpaqueType(id, typeParameters, supertype) { + return (0, _builder.default)("DeclareOpaqueType", ...arguments); +} + +function declareVariable(id) { + return (0, _builder.default)("DeclareVariable", ...arguments); +} + +function declareExportDeclaration(declaration, specifiers, source) { + return (0, _builder.default)("DeclareExportDeclaration", ...arguments); +} + +function declareExportAllDeclaration(source) { + return (0, _builder.default)("DeclareExportAllDeclaration", ...arguments); +} + +function declaredPredicate(value) { + return (0, _builder.default)("DeclaredPredicate", ...arguments); +} + +function existsTypeAnnotation() { + return (0, _builder.default)("ExistsTypeAnnotation", ...arguments); +} + +function functionTypeAnnotation(typeParameters, params, rest, returnType) { + return (0, _builder.default)("FunctionTypeAnnotation", ...arguments); +} + +function functionTypeParam(name, typeAnnotation) { + return (0, _builder.default)("FunctionTypeParam", ...arguments); +} + +function genericTypeAnnotation(id, typeParameters) { + return (0, _builder.default)("GenericTypeAnnotation", ...arguments); +} + +function inferredPredicate() { + return (0, _builder.default)("InferredPredicate", ...arguments); +} + +function interfaceExtends(id, typeParameters) { + return (0, _builder.default)("InterfaceExtends", ...arguments); +} + +function interfaceDeclaration(id, typeParameters, _extends, body) { + return (0, _builder.default)("InterfaceDeclaration", ...arguments); +} + +function interfaceTypeAnnotation(_extends, body) { + return (0, _builder.default)("InterfaceTypeAnnotation", ...arguments); +} + +function intersectionTypeAnnotation(types) { + return (0, _builder.default)("IntersectionTypeAnnotation", ...arguments); +} + +function mixedTypeAnnotation() { + return (0, _builder.default)("MixedTypeAnnotation", ...arguments); +} + +function emptyTypeAnnotation() { + return (0, _builder.default)("EmptyTypeAnnotation", ...arguments); +} + +function nullableTypeAnnotation(typeAnnotation) { + return (0, _builder.default)("NullableTypeAnnotation", ...arguments); +} + +function numberLiteralTypeAnnotation(value) { + return (0, _builder.default)("NumberLiteralTypeAnnotation", ...arguments); +} + +function numberTypeAnnotation() { + return (0, _builder.default)("NumberTypeAnnotation", ...arguments); +} + +function objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) { + return (0, _builder.default)("ObjectTypeAnnotation", ...arguments); +} + +function objectTypeInternalSlot(id, value, optional, _static, method) { + return (0, _builder.default)("ObjectTypeInternalSlot", ...arguments); +} + +function objectTypeCallProperty(value) { + return (0, _builder.default)("ObjectTypeCallProperty", ...arguments); +} + +function objectTypeIndexer(id, key, value, variance) { + return (0, _builder.default)("ObjectTypeIndexer", ...arguments); +} + +function objectTypeProperty(key, value, variance) { + return (0, _builder.default)("ObjectTypeProperty", ...arguments); +} + +function objectTypeSpreadProperty(argument) { + return (0, _builder.default)("ObjectTypeSpreadProperty", ...arguments); +} + +function opaqueType(id, typeParameters, supertype, impltype) { + return (0, _builder.default)("OpaqueType", ...arguments); +} + +function qualifiedTypeIdentifier(id, qualification) { + return (0, _builder.default)("QualifiedTypeIdentifier", ...arguments); +} + +function stringLiteralTypeAnnotation(value) { + return (0, _builder.default)("StringLiteralTypeAnnotation", ...arguments); +} + +function stringTypeAnnotation() { + return (0, _builder.default)("StringTypeAnnotation", ...arguments); +} + +function symbolTypeAnnotation() { + return (0, _builder.default)("SymbolTypeAnnotation", ...arguments); +} + +function thisTypeAnnotation() { + return (0, _builder.default)("ThisTypeAnnotation", ...arguments); +} + +function tupleTypeAnnotation(types) { + return (0, _builder.default)("TupleTypeAnnotation", ...arguments); +} + +function typeofTypeAnnotation(argument) { + return (0, _builder.default)("TypeofTypeAnnotation", ...arguments); +} + +function typeAlias(id, typeParameters, right) { + return (0, _builder.default)("TypeAlias", ...arguments); +} + +function typeAnnotation(typeAnnotation) { + return (0, _builder.default)("TypeAnnotation", ...arguments); +} + +function typeCastExpression(expression, typeAnnotation) { + return (0, _builder.default)("TypeCastExpression", ...arguments); +} + +function typeParameter(bound, _default, variance) { + return (0, _builder.default)("TypeParameter", ...arguments); +} + +function typeParameterDeclaration(params) { + return (0, _builder.default)("TypeParameterDeclaration", ...arguments); +} + +function typeParameterInstantiation(params) { + return (0, _builder.default)("TypeParameterInstantiation", ...arguments); +} + +function unionTypeAnnotation(types) { + return (0, _builder.default)("UnionTypeAnnotation", ...arguments); +} + +function variance(kind) { + return (0, _builder.default)("Variance", ...arguments); +} + +function voidTypeAnnotation() { + return (0, _builder.default)("VoidTypeAnnotation", ...arguments); +} + +function enumDeclaration(id, body) { + return (0, _builder.default)("EnumDeclaration", ...arguments); +} + +function enumBooleanBody(members) { + return (0, _builder.default)("EnumBooleanBody", ...arguments); +} + +function enumNumberBody(members) { + return (0, _builder.default)("EnumNumberBody", ...arguments); +} + +function enumStringBody(members) { + return (0, _builder.default)("EnumStringBody", ...arguments); +} + +function enumSymbolBody(members) { + return (0, _builder.default)("EnumSymbolBody", ...arguments); +} + +function enumBooleanMember(id) { + return (0, _builder.default)("EnumBooleanMember", ...arguments); +} + +function enumNumberMember(id, init) { + return (0, _builder.default)("EnumNumberMember", ...arguments); +} + +function enumStringMember(id, init) { + return (0, _builder.default)("EnumStringMember", ...arguments); +} + +function enumDefaultedMember(id) { + return (0, _builder.default)("EnumDefaultedMember", ...arguments); +} + +function indexedAccessType(objectType, indexType) { + return (0, _builder.default)("IndexedAccessType", ...arguments); +} + +function optionalIndexedAccessType(objectType, indexType) { + return (0, _builder.default)("OptionalIndexedAccessType", ...arguments); +} + +function jsxAttribute(name, value) { + return (0, _builder.default)("JSXAttribute", ...arguments); +} + +function jsxClosingElement(name) { + return (0, _builder.default)("JSXClosingElement", ...arguments); +} + +function jsxElement(openingElement, closingElement, children, selfClosing) { + return (0, _builder.default)("JSXElement", ...arguments); +} + +function jsxEmptyExpression() { + return (0, _builder.default)("JSXEmptyExpression", ...arguments); +} + +function jsxExpressionContainer(expression) { + return (0, _builder.default)("JSXExpressionContainer", ...arguments); +} + +function jsxSpreadChild(expression) { + return (0, _builder.default)("JSXSpreadChild", ...arguments); +} + +function jsxIdentifier(name) { + return (0, _builder.default)("JSXIdentifier", ...arguments); +} + +function jsxMemberExpression(object, property) { + return (0, _builder.default)("JSXMemberExpression", ...arguments); +} + +function jsxNamespacedName(namespace, name) { + return (0, _builder.default)("JSXNamespacedName", ...arguments); +} + +function jsxOpeningElement(name, attributes, selfClosing) { + return (0, _builder.default)("JSXOpeningElement", ...arguments); +} + +function jsxSpreadAttribute(argument) { + return (0, _builder.default)("JSXSpreadAttribute", ...arguments); +} + +function jsxText(value) { + return (0, _builder.default)("JSXText", ...arguments); +} + +function jsxFragment(openingFragment, closingFragment, children) { + return (0, _builder.default)("JSXFragment", ...arguments); +} + +function jsxOpeningFragment() { + return (0, _builder.default)("JSXOpeningFragment", ...arguments); +} + +function jsxClosingFragment() { + return (0, _builder.default)("JSXClosingFragment", ...arguments); +} + +function noop() { + return (0, _builder.default)("Noop", ...arguments); +} + +function placeholder(expectedNode, name) { + return (0, _builder.default)("Placeholder", ...arguments); +} + +function v8IntrinsicIdentifier(name) { + return (0, _builder.default)("V8IntrinsicIdentifier", ...arguments); +} + +function argumentPlaceholder() { + return (0, _builder.default)("ArgumentPlaceholder", ...arguments); +} + +function bindExpression(object, callee) { + return (0, _builder.default)("BindExpression", ...arguments); +} + +function importAttribute(key, value) { + return (0, _builder.default)("ImportAttribute", ...arguments); +} + +function decorator(expression) { + return (0, _builder.default)("Decorator", ...arguments); +} + +function doExpression(body, async) { + return (0, _builder.default)("DoExpression", ...arguments); +} + +function exportDefaultSpecifier(exported) { + return (0, _builder.default)("ExportDefaultSpecifier", ...arguments); +} + +function recordExpression(properties) { + return (0, _builder.default)("RecordExpression", ...arguments); +} + +function tupleExpression(elements) { + return (0, _builder.default)("TupleExpression", ...arguments); +} + +function decimalLiteral(value) { + return (0, _builder.default)("DecimalLiteral", ...arguments); +} + +function staticBlock(body) { + return (0, _builder.default)("StaticBlock", ...arguments); +} + +function moduleExpression(body) { + return (0, _builder.default)("ModuleExpression", ...arguments); +} + +function topicReference() { + return (0, _builder.default)("TopicReference", ...arguments); +} + +function pipelineTopicExpression(expression) { + return (0, _builder.default)("PipelineTopicExpression", ...arguments); +} + +function pipelineBareFunction(callee) { + return (0, _builder.default)("PipelineBareFunction", ...arguments); +} + +function pipelinePrimaryTopicReference() { + return (0, _builder.default)("PipelinePrimaryTopicReference", ...arguments); +} + +function tsParameterProperty(parameter) { + return (0, _builder.default)("TSParameterProperty", ...arguments); +} + +function tsDeclareFunction(id, typeParameters, params, returnType) { + return (0, _builder.default)("TSDeclareFunction", ...arguments); +} + +function tsDeclareMethod(decorators, key, typeParameters, params, returnType) { + return (0, _builder.default)("TSDeclareMethod", ...arguments); +} + +function tsQualifiedName(left, right) { + return (0, _builder.default)("TSQualifiedName", ...arguments); +} + +function tsCallSignatureDeclaration(typeParameters, parameters, typeAnnotation) { + return (0, _builder.default)("TSCallSignatureDeclaration", ...arguments); +} + +function tsConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation) { + return (0, _builder.default)("TSConstructSignatureDeclaration", ...arguments); +} + +function tsPropertySignature(key, typeAnnotation, initializer) { + return (0, _builder.default)("TSPropertySignature", ...arguments); +} + +function tsMethodSignature(key, typeParameters, parameters, typeAnnotation) { + return (0, _builder.default)("TSMethodSignature", ...arguments); +} + +function tsIndexSignature(parameters, typeAnnotation) { + return (0, _builder.default)("TSIndexSignature", ...arguments); +} + +function tsAnyKeyword() { + return (0, _builder.default)("TSAnyKeyword", ...arguments); +} + +function tsBooleanKeyword() { + return (0, _builder.default)("TSBooleanKeyword", ...arguments); +} + +function tsBigIntKeyword() { + return (0, _builder.default)("TSBigIntKeyword", ...arguments); +} + +function tsIntrinsicKeyword() { + return (0, _builder.default)("TSIntrinsicKeyword", ...arguments); +} + +function tsNeverKeyword() { + return (0, _builder.default)("TSNeverKeyword", ...arguments); +} + +function tsNullKeyword() { + return (0, _builder.default)("TSNullKeyword", ...arguments); +} + +function tsNumberKeyword() { + return (0, _builder.default)("TSNumberKeyword", ...arguments); +} + +function tsObjectKeyword() { + return (0, _builder.default)("TSObjectKeyword", ...arguments); +} + +function tsStringKeyword() { + return (0, _builder.default)("TSStringKeyword", ...arguments); +} + +function tsSymbolKeyword() { + return (0, _builder.default)("TSSymbolKeyword", ...arguments); +} + +function tsUndefinedKeyword() { + return (0, _builder.default)("TSUndefinedKeyword", ...arguments); +} + +function tsUnknownKeyword() { + return (0, _builder.default)("TSUnknownKeyword", ...arguments); +} + +function tsVoidKeyword() { + return (0, _builder.default)("TSVoidKeyword", ...arguments); +} + +function tsThisType() { + return (0, _builder.default)("TSThisType", ...arguments); +} + +function tsFunctionType(typeParameters, parameters, typeAnnotation) { + return (0, _builder.default)("TSFunctionType", ...arguments); +} + +function tsConstructorType(typeParameters, parameters, typeAnnotation) { + return (0, _builder.default)("TSConstructorType", ...arguments); +} + +function tsTypeReference(typeName, typeParameters) { + return (0, _builder.default)("TSTypeReference", ...arguments); +} + +function tsTypePredicate(parameterName, typeAnnotation, asserts) { + return (0, _builder.default)("TSTypePredicate", ...arguments); +} + +function tsTypeQuery(exprName) { + return (0, _builder.default)("TSTypeQuery", ...arguments); +} + +function tsTypeLiteral(members) { + return (0, _builder.default)("TSTypeLiteral", ...arguments); +} + +function tsArrayType(elementType) { + return (0, _builder.default)("TSArrayType", ...arguments); +} + +function tsTupleType(elementTypes) { + return (0, _builder.default)("TSTupleType", ...arguments); +} + +function tsOptionalType(typeAnnotation) { + return (0, _builder.default)("TSOptionalType", ...arguments); +} + +function tsRestType(typeAnnotation) { + return (0, _builder.default)("TSRestType", ...arguments); +} + +function tsNamedTupleMember(label, elementType, optional) { + return (0, _builder.default)("TSNamedTupleMember", ...arguments); +} + +function tsUnionType(types) { + return (0, _builder.default)("TSUnionType", ...arguments); +} + +function tsIntersectionType(types) { + return (0, _builder.default)("TSIntersectionType", ...arguments); +} + +function tsConditionalType(checkType, extendsType, trueType, falseType) { + return (0, _builder.default)("TSConditionalType", ...arguments); +} + +function tsInferType(typeParameter) { + return (0, _builder.default)("TSInferType", ...arguments); +} + +function tsParenthesizedType(typeAnnotation) { + return (0, _builder.default)("TSParenthesizedType", ...arguments); +} + +function tsTypeOperator(typeAnnotation) { + return (0, _builder.default)("TSTypeOperator", ...arguments); +} + +function tsIndexedAccessType(objectType, indexType) { + return (0, _builder.default)("TSIndexedAccessType", ...arguments); +} + +function tsMappedType(typeParameter, typeAnnotation, nameType) { + return (0, _builder.default)("TSMappedType", ...arguments); +} + +function tsLiteralType(literal) { + return (0, _builder.default)("TSLiteralType", ...arguments); +} + +function tsExpressionWithTypeArguments(expression, typeParameters) { + return (0, _builder.default)("TSExpressionWithTypeArguments", ...arguments); +} + +function tsInterfaceDeclaration(id, typeParameters, _extends, body) { + return (0, _builder.default)("TSInterfaceDeclaration", ...arguments); +} + +function tsInterfaceBody(body) { + return (0, _builder.default)("TSInterfaceBody", ...arguments); +} + +function tsTypeAliasDeclaration(id, typeParameters, typeAnnotation) { + return (0, _builder.default)("TSTypeAliasDeclaration", ...arguments); +} + +function tsAsExpression(expression, typeAnnotation) { + return (0, _builder.default)("TSAsExpression", ...arguments); +} + +function tsTypeAssertion(typeAnnotation, expression) { + return (0, _builder.default)("TSTypeAssertion", ...arguments); +} + +function tsEnumDeclaration(id, members) { + return (0, _builder.default)("TSEnumDeclaration", ...arguments); +} + +function tsEnumMember(id, initializer) { + return (0, _builder.default)("TSEnumMember", ...arguments); +} + +function tsModuleDeclaration(id, body) { + return (0, _builder.default)("TSModuleDeclaration", ...arguments); +} + +function tsModuleBlock(body) { + return (0, _builder.default)("TSModuleBlock", ...arguments); +} + +function tsImportType(argument, qualifier, typeParameters) { + return (0, _builder.default)("TSImportType", ...arguments); +} + +function tsImportEqualsDeclaration(id, moduleReference) { + return (0, _builder.default)("TSImportEqualsDeclaration", ...arguments); +} + +function tsExternalModuleReference(expression) { + return (0, _builder.default)("TSExternalModuleReference", ...arguments); +} + +function tsNonNullExpression(expression) { + return (0, _builder.default)("TSNonNullExpression", ...arguments); +} + +function tsExportAssignment(expression) { + return (0, _builder.default)("TSExportAssignment", ...arguments); +} + +function tsNamespaceExportDeclaration(id) { + return (0, _builder.default)("TSNamespaceExportDeclaration", ...arguments); +} + +function tsTypeAnnotation(typeAnnotation) { + return (0, _builder.default)("TSTypeAnnotation", ...arguments); +} + +function tsTypeParameterInstantiation(params) { + return (0, _builder.default)("TSTypeParameterInstantiation", ...arguments); +} + +function tsTypeParameterDeclaration(params) { + return (0, _builder.default)("TSTypeParameterDeclaration", ...arguments); +} + +function tsTypeParameter(constraint, _default, name) { + return (0, _builder.default)("TSTypeParameter", ...arguments); +} + +function NumberLiteral(...args) { + console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); + return (0, _builder.default)("NumberLiteral", ...args); +} + +function RegexLiteral(...args) { + console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); + return (0, _builder.default)("RegexLiteral", ...args); +} + +function RestProperty(...args) { + console.trace("The node type RestProperty has been renamed to RestElement"); + return (0, _builder.default)("RestProperty", ...args); +} + +function SpreadProperty(...args) { + console.trace("The node type SpreadProperty has been renamed to SpreadElement"); + return (0, _builder.default)("SpreadProperty", ...args); +} + +/***/ }), + +/***/ 41665: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "ArrayExpression", ({ + enumerable: true, + get: function () { + return _index.arrayExpression; + } +})); +Object.defineProperty(exports, "AssignmentExpression", ({ + enumerable: true, + get: function () { + return _index.assignmentExpression; + } +})); +Object.defineProperty(exports, "BinaryExpression", ({ + enumerable: true, + get: function () { + return _index.binaryExpression; + } +})); +Object.defineProperty(exports, "InterpreterDirective", ({ + enumerable: true, + get: function () { + return _index.interpreterDirective; + } +})); +Object.defineProperty(exports, "Directive", ({ + enumerable: true, + get: function () { + return _index.directive; + } +})); +Object.defineProperty(exports, "DirectiveLiteral", ({ + enumerable: true, + get: function () { + return _index.directiveLiteral; + } +})); +Object.defineProperty(exports, "BlockStatement", ({ + enumerable: true, + get: function () { + return _index.blockStatement; + } +})); +Object.defineProperty(exports, "BreakStatement", ({ + enumerable: true, + get: function () { + return _index.breakStatement; + } +})); +Object.defineProperty(exports, "CallExpression", ({ + enumerable: true, + get: function () { + return _index.callExpression; + } +})); +Object.defineProperty(exports, "CatchClause", ({ + enumerable: true, + get: function () { + return _index.catchClause; + } +})); +Object.defineProperty(exports, "ConditionalExpression", ({ + enumerable: true, + get: function () { + return _index.conditionalExpression; + } +})); +Object.defineProperty(exports, "ContinueStatement", ({ + enumerable: true, + get: function () { + return _index.continueStatement; + } +})); +Object.defineProperty(exports, "DebuggerStatement", ({ + enumerable: true, + get: function () { + return _index.debuggerStatement; + } +})); +Object.defineProperty(exports, "DoWhileStatement", ({ + enumerable: true, + get: function () { + return _index.doWhileStatement; + } +})); +Object.defineProperty(exports, "EmptyStatement", ({ + enumerable: true, + get: function () { + return _index.emptyStatement; + } +})); +Object.defineProperty(exports, "ExpressionStatement", ({ + enumerable: true, + get: function () { + return _index.expressionStatement; + } +})); +Object.defineProperty(exports, "File", ({ + enumerable: true, + get: function () { + return _index.file; + } +})); +Object.defineProperty(exports, "ForInStatement", ({ + enumerable: true, + get: function () { + return _index.forInStatement; + } +})); +Object.defineProperty(exports, "ForStatement", ({ + enumerable: true, + get: function () { + return _index.forStatement; + } +})); +Object.defineProperty(exports, "FunctionDeclaration", ({ + enumerable: true, + get: function () { + return _index.functionDeclaration; + } +})); +Object.defineProperty(exports, "FunctionExpression", ({ + enumerable: true, + get: function () { + return _index.functionExpression; + } +})); +Object.defineProperty(exports, "Identifier", ({ + enumerable: true, + get: function () { + return _index.identifier; + } +})); +Object.defineProperty(exports, "IfStatement", ({ + enumerable: true, + get: function () { + return _index.ifStatement; + } +})); +Object.defineProperty(exports, "LabeledStatement", ({ + enumerable: true, + get: function () { + return _index.labeledStatement; + } +})); +Object.defineProperty(exports, "StringLiteral", ({ + enumerable: true, + get: function () { + return _index.stringLiteral; + } +})); +Object.defineProperty(exports, "NumericLiteral", ({ + enumerable: true, + get: function () { + return _index.numericLiteral; + } +})); +Object.defineProperty(exports, "NullLiteral", ({ + enumerable: true, + get: function () { + return _index.nullLiteral; + } +})); +Object.defineProperty(exports, "BooleanLiteral", ({ + enumerable: true, + get: function () { + return _index.booleanLiteral; + } +})); +Object.defineProperty(exports, "RegExpLiteral", ({ + enumerable: true, + get: function () { + return _index.regExpLiteral; + } +})); +Object.defineProperty(exports, "LogicalExpression", ({ + enumerable: true, + get: function () { + return _index.logicalExpression; + } +})); +Object.defineProperty(exports, "MemberExpression", ({ + enumerable: true, + get: function () { + return _index.memberExpression; + } +})); +Object.defineProperty(exports, "NewExpression", ({ + enumerable: true, + get: function () { + return _index.newExpression; + } +})); +Object.defineProperty(exports, "Program", ({ + enumerable: true, + get: function () { + return _index.program; + } +})); +Object.defineProperty(exports, "ObjectExpression", ({ + enumerable: true, + get: function () { + return _index.objectExpression; + } +})); +Object.defineProperty(exports, "ObjectMethod", ({ + enumerable: true, + get: function () { + return _index.objectMethod; + } +})); +Object.defineProperty(exports, "ObjectProperty", ({ + enumerable: true, + get: function () { + return _index.objectProperty; + } +})); +Object.defineProperty(exports, "RestElement", ({ + enumerable: true, + get: function () { + return _index.restElement; + } +})); +Object.defineProperty(exports, "ReturnStatement", ({ + enumerable: true, + get: function () { + return _index.returnStatement; + } +})); +Object.defineProperty(exports, "SequenceExpression", ({ + enumerable: true, + get: function () { + return _index.sequenceExpression; + } +})); +Object.defineProperty(exports, "ParenthesizedExpression", ({ + enumerable: true, + get: function () { + return _index.parenthesizedExpression; + } +})); +Object.defineProperty(exports, "SwitchCase", ({ + enumerable: true, + get: function () { + return _index.switchCase; + } +})); +Object.defineProperty(exports, "SwitchStatement", ({ + enumerable: true, + get: function () { + return _index.switchStatement; + } +})); +Object.defineProperty(exports, "ThisExpression", ({ + enumerable: true, + get: function () { + return _index.thisExpression; + } +})); +Object.defineProperty(exports, "ThrowStatement", ({ + enumerable: true, + get: function () { + return _index.throwStatement; + } +})); +Object.defineProperty(exports, "TryStatement", ({ + enumerable: true, + get: function () { + return _index.tryStatement; + } +})); +Object.defineProperty(exports, "UnaryExpression", ({ + enumerable: true, + get: function () { + return _index.unaryExpression; + } +})); +Object.defineProperty(exports, "UpdateExpression", ({ + enumerable: true, + get: function () { + return _index.updateExpression; + } +})); +Object.defineProperty(exports, "VariableDeclaration", ({ + enumerable: true, + get: function () { + return _index.variableDeclaration; + } +})); +Object.defineProperty(exports, "VariableDeclarator", ({ + enumerable: true, + get: function () { + return _index.variableDeclarator; + } +})); +Object.defineProperty(exports, "WhileStatement", ({ + enumerable: true, + get: function () { + return _index.whileStatement; + } +})); +Object.defineProperty(exports, "WithStatement", ({ + enumerable: true, + get: function () { + return _index.withStatement; + } +})); +Object.defineProperty(exports, "AssignmentPattern", ({ + enumerable: true, + get: function () { + return _index.assignmentPattern; + } +})); +Object.defineProperty(exports, "ArrayPattern", ({ + enumerable: true, + get: function () { + return _index.arrayPattern; + } +})); +Object.defineProperty(exports, "ArrowFunctionExpression", ({ + enumerable: true, + get: function () { + return _index.arrowFunctionExpression; + } +})); +Object.defineProperty(exports, "ClassBody", ({ + enumerable: true, + get: function () { + return _index.classBody; + } +})); +Object.defineProperty(exports, "ClassExpression", ({ + enumerable: true, + get: function () { + return _index.classExpression; + } +})); +Object.defineProperty(exports, "ClassDeclaration", ({ + enumerable: true, + get: function () { + return _index.classDeclaration; + } +})); +Object.defineProperty(exports, "ExportAllDeclaration", ({ + enumerable: true, + get: function () { + return _index.exportAllDeclaration; + } +})); +Object.defineProperty(exports, "ExportDefaultDeclaration", ({ + enumerable: true, + get: function () { + return _index.exportDefaultDeclaration; + } +})); +Object.defineProperty(exports, "ExportNamedDeclaration", ({ + enumerable: true, + get: function () { + return _index.exportNamedDeclaration; + } +})); +Object.defineProperty(exports, "ExportSpecifier", ({ + enumerable: true, + get: function () { + return _index.exportSpecifier; + } +})); +Object.defineProperty(exports, "ForOfStatement", ({ + enumerable: true, + get: function () { + return _index.forOfStatement; + } +})); +Object.defineProperty(exports, "ImportDeclaration", ({ + enumerable: true, + get: function () { + return _index.importDeclaration; + } +})); +Object.defineProperty(exports, "ImportDefaultSpecifier", ({ + enumerable: true, + get: function () { + return _index.importDefaultSpecifier; + } +})); +Object.defineProperty(exports, "ImportNamespaceSpecifier", ({ + enumerable: true, + get: function () { + return _index.importNamespaceSpecifier; + } +})); +Object.defineProperty(exports, "ImportSpecifier", ({ + enumerable: true, + get: function () { + return _index.importSpecifier; + } +})); +Object.defineProperty(exports, "MetaProperty", ({ + enumerable: true, + get: function () { + return _index.metaProperty; + } +})); +Object.defineProperty(exports, "ClassMethod", ({ + enumerable: true, + get: function () { + return _index.classMethod; + } +})); +Object.defineProperty(exports, "ObjectPattern", ({ + enumerable: true, + get: function () { + return _index.objectPattern; + } +})); +Object.defineProperty(exports, "SpreadElement", ({ + enumerable: true, + get: function () { + return _index.spreadElement; + } +})); +Object.defineProperty(exports, "Super", ({ + enumerable: true, + get: function () { + return _index.super; + } +})); +Object.defineProperty(exports, "TaggedTemplateExpression", ({ + enumerable: true, + get: function () { + return _index.taggedTemplateExpression; + } +})); +Object.defineProperty(exports, "TemplateElement", ({ + enumerable: true, + get: function () { + return _index.templateElement; + } +})); +Object.defineProperty(exports, "TemplateLiteral", ({ + enumerable: true, + get: function () { + return _index.templateLiteral; + } +})); +Object.defineProperty(exports, "YieldExpression", ({ + enumerable: true, + get: function () { + return _index.yieldExpression; + } +})); +Object.defineProperty(exports, "AwaitExpression", ({ + enumerable: true, + get: function () { + return _index.awaitExpression; + } +})); +Object.defineProperty(exports, "Import", ({ + enumerable: true, + get: function () { + return _index.import; + } +})); +Object.defineProperty(exports, "BigIntLiteral", ({ + enumerable: true, + get: function () { + return _index.bigIntLiteral; + } +})); +Object.defineProperty(exports, "ExportNamespaceSpecifier", ({ + enumerable: true, + get: function () { + return _index.exportNamespaceSpecifier; + } +})); +Object.defineProperty(exports, "OptionalMemberExpression", ({ + enumerable: true, + get: function () { + return _index.optionalMemberExpression; + } +})); +Object.defineProperty(exports, "OptionalCallExpression", ({ + enumerable: true, + get: function () { + return _index.optionalCallExpression; + } +})); +Object.defineProperty(exports, "ClassProperty", ({ + enumerable: true, + get: function () { + return _index.classProperty; + } +})); +Object.defineProperty(exports, "ClassPrivateProperty", ({ + enumerable: true, + get: function () { + return _index.classPrivateProperty; + } +})); +Object.defineProperty(exports, "ClassPrivateMethod", ({ + enumerable: true, + get: function () { + return _index.classPrivateMethod; + } +})); +Object.defineProperty(exports, "PrivateName", ({ + enumerable: true, + get: function () { + return _index.privateName; + } +})); +Object.defineProperty(exports, "AnyTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.anyTypeAnnotation; + } +})); +Object.defineProperty(exports, "ArrayTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.arrayTypeAnnotation; + } +})); +Object.defineProperty(exports, "BooleanTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.booleanTypeAnnotation; + } +})); +Object.defineProperty(exports, "BooleanLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.booleanLiteralTypeAnnotation; + } +})); +Object.defineProperty(exports, "NullLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.nullLiteralTypeAnnotation; + } +})); +Object.defineProperty(exports, "ClassImplements", ({ + enumerable: true, + get: function () { + return _index.classImplements; + } +})); +Object.defineProperty(exports, "DeclareClass", ({ + enumerable: true, + get: function () { + return _index.declareClass; + } +})); +Object.defineProperty(exports, "DeclareFunction", ({ + enumerable: true, + get: function () { + return _index.declareFunction; + } +})); +Object.defineProperty(exports, "DeclareInterface", ({ + enumerable: true, + get: function () { + return _index.declareInterface; + } +})); +Object.defineProperty(exports, "DeclareModule", ({ + enumerable: true, + get: function () { + return _index.declareModule; + } +})); +Object.defineProperty(exports, "DeclareModuleExports", ({ + enumerable: true, + get: function () { + return _index.declareModuleExports; + } +})); +Object.defineProperty(exports, "DeclareTypeAlias", ({ + enumerable: true, + get: function () { + return _index.declareTypeAlias; + } +})); +Object.defineProperty(exports, "DeclareOpaqueType", ({ + enumerable: true, + get: function () { + return _index.declareOpaqueType; + } +})); +Object.defineProperty(exports, "DeclareVariable", ({ + enumerable: true, + get: function () { + return _index.declareVariable; + } +})); +Object.defineProperty(exports, "DeclareExportDeclaration", ({ + enumerable: true, + get: function () { + return _index.declareExportDeclaration; + } +})); +Object.defineProperty(exports, "DeclareExportAllDeclaration", ({ + enumerable: true, + get: function () { + return _index.declareExportAllDeclaration; + } +})); +Object.defineProperty(exports, "DeclaredPredicate", ({ + enumerable: true, + get: function () { + return _index.declaredPredicate; + } +})); +Object.defineProperty(exports, "ExistsTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.existsTypeAnnotation; + } +})); +Object.defineProperty(exports, "FunctionTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.functionTypeAnnotation; + } +})); +Object.defineProperty(exports, "FunctionTypeParam", ({ + enumerable: true, + get: function () { + return _index.functionTypeParam; + } +})); +Object.defineProperty(exports, "GenericTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.genericTypeAnnotation; + } +})); +Object.defineProperty(exports, "InferredPredicate", ({ + enumerable: true, + get: function () { + return _index.inferredPredicate; + } +})); +Object.defineProperty(exports, "InterfaceExtends", ({ + enumerable: true, + get: function () { + return _index.interfaceExtends; + } +})); +Object.defineProperty(exports, "InterfaceDeclaration", ({ + enumerable: true, + get: function () { + return _index.interfaceDeclaration; + } +})); +Object.defineProperty(exports, "InterfaceTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.interfaceTypeAnnotation; + } +})); +Object.defineProperty(exports, "IntersectionTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.intersectionTypeAnnotation; + } +})); +Object.defineProperty(exports, "MixedTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.mixedTypeAnnotation; + } +})); +Object.defineProperty(exports, "EmptyTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.emptyTypeAnnotation; + } +})); +Object.defineProperty(exports, "NullableTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.nullableTypeAnnotation; + } +})); +Object.defineProperty(exports, "NumberLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.numberLiteralTypeAnnotation; + } +})); +Object.defineProperty(exports, "NumberTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.numberTypeAnnotation; + } +})); +Object.defineProperty(exports, "ObjectTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.objectTypeAnnotation; + } +})); +Object.defineProperty(exports, "ObjectTypeInternalSlot", ({ + enumerable: true, + get: function () { + return _index.objectTypeInternalSlot; + } +})); +Object.defineProperty(exports, "ObjectTypeCallProperty", ({ + enumerable: true, + get: function () { + return _index.objectTypeCallProperty; + } +})); +Object.defineProperty(exports, "ObjectTypeIndexer", ({ + enumerable: true, + get: function () { + return _index.objectTypeIndexer; + } +})); +Object.defineProperty(exports, "ObjectTypeProperty", ({ + enumerable: true, + get: function () { + return _index.objectTypeProperty; + } +})); +Object.defineProperty(exports, "ObjectTypeSpreadProperty", ({ + enumerable: true, + get: function () { + return _index.objectTypeSpreadProperty; + } +})); +Object.defineProperty(exports, "OpaqueType", ({ + enumerable: true, + get: function () { + return _index.opaqueType; + } +})); +Object.defineProperty(exports, "QualifiedTypeIdentifier", ({ + enumerable: true, + get: function () { + return _index.qualifiedTypeIdentifier; + } +})); +Object.defineProperty(exports, "StringLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.stringLiteralTypeAnnotation; + } +})); +Object.defineProperty(exports, "StringTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.stringTypeAnnotation; + } +})); +Object.defineProperty(exports, "SymbolTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.symbolTypeAnnotation; + } +})); +Object.defineProperty(exports, "ThisTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.thisTypeAnnotation; + } +})); +Object.defineProperty(exports, "TupleTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.tupleTypeAnnotation; + } +})); +Object.defineProperty(exports, "TypeofTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.typeofTypeAnnotation; + } +})); +Object.defineProperty(exports, "TypeAlias", ({ + enumerable: true, + get: function () { + return _index.typeAlias; + } +})); +Object.defineProperty(exports, "TypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.typeAnnotation; + } +})); +Object.defineProperty(exports, "TypeCastExpression", ({ + enumerable: true, + get: function () { + return _index.typeCastExpression; + } +})); +Object.defineProperty(exports, "TypeParameter", ({ + enumerable: true, + get: function () { + return _index.typeParameter; + } +})); +Object.defineProperty(exports, "TypeParameterDeclaration", ({ + enumerable: true, + get: function () { + return _index.typeParameterDeclaration; + } +})); +Object.defineProperty(exports, "TypeParameterInstantiation", ({ + enumerable: true, + get: function () { + return _index.typeParameterInstantiation; + } +})); +Object.defineProperty(exports, "UnionTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.unionTypeAnnotation; + } +})); +Object.defineProperty(exports, "Variance", ({ + enumerable: true, + get: function () { + return _index.variance; + } +})); +Object.defineProperty(exports, "VoidTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.voidTypeAnnotation; + } +})); +Object.defineProperty(exports, "EnumDeclaration", ({ + enumerable: true, + get: function () { + return _index.enumDeclaration; + } +})); +Object.defineProperty(exports, "EnumBooleanBody", ({ + enumerable: true, + get: function () { + return _index.enumBooleanBody; + } +})); +Object.defineProperty(exports, "EnumNumberBody", ({ + enumerable: true, + get: function () { + return _index.enumNumberBody; + } +})); +Object.defineProperty(exports, "EnumStringBody", ({ + enumerable: true, + get: function () { + return _index.enumStringBody; + } +})); +Object.defineProperty(exports, "EnumSymbolBody", ({ + enumerable: true, + get: function () { + return _index.enumSymbolBody; + } +})); +Object.defineProperty(exports, "EnumBooleanMember", ({ + enumerable: true, + get: function () { + return _index.enumBooleanMember; + } +})); +Object.defineProperty(exports, "EnumNumberMember", ({ + enumerable: true, + get: function () { + return _index.enumNumberMember; + } +})); +Object.defineProperty(exports, "EnumStringMember", ({ + enumerable: true, + get: function () { + return _index.enumStringMember; + } +})); +Object.defineProperty(exports, "EnumDefaultedMember", ({ + enumerable: true, + get: function () { + return _index.enumDefaultedMember; + } +})); +Object.defineProperty(exports, "IndexedAccessType", ({ + enumerable: true, + get: function () { + return _index.indexedAccessType; + } +})); +Object.defineProperty(exports, "OptionalIndexedAccessType", ({ + enumerable: true, + get: function () { + return _index.optionalIndexedAccessType; + } +})); +Object.defineProperty(exports, "JSXAttribute", ({ + enumerable: true, + get: function () { + return _index.jsxAttribute; + } +})); +Object.defineProperty(exports, "JSXClosingElement", ({ + enumerable: true, + get: function () { + return _index.jsxClosingElement; + } +})); +Object.defineProperty(exports, "JSXElement", ({ + enumerable: true, + get: function () { + return _index.jsxElement; + } +})); +Object.defineProperty(exports, "JSXEmptyExpression", ({ + enumerable: true, + get: function () { + return _index.jsxEmptyExpression; + } +})); +Object.defineProperty(exports, "JSXExpressionContainer", ({ + enumerable: true, + get: function () { + return _index.jsxExpressionContainer; + } +})); +Object.defineProperty(exports, "JSXSpreadChild", ({ + enumerable: true, + get: function () { + return _index.jsxSpreadChild; + } +})); +Object.defineProperty(exports, "JSXIdentifier", ({ + enumerable: true, + get: function () { + return _index.jsxIdentifier; + } +})); +Object.defineProperty(exports, "JSXMemberExpression", ({ + enumerable: true, + get: function () { + return _index.jsxMemberExpression; + } +})); +Object.defineProperty(exports, "JSXNamespacedName", ({ + enumerable: true, + get: function () { + return _index.jsxNamespacedName; + } +})); +Object.defineProperty(exports, "JSXOpeningElement", ({ + enumerable: true, + get: function () { + return _index.jsxOpeningElement; + } +})); +Object.defineProperty(exports, "JSXSpreadAttribute", ({ + enumerable: true, + get: function () { + return _index.jsxSpreadAttribute; + } +})); +Object.defineProperty(exports, "JSXText", ({ + enumerable: true, + get: function () { + return _index.jsxText; + } +})); +Object.defineProperty(exports, "JSXFragment", ({ + enumerable: true, + get: function () { + return _index.jsxFragment; + } +})); +Object.defineProperty(exports, "JSXOpeningFragment", ({ + enumerable: true, + get: function () { + return _index.jsxOpeningFragment; + } +})); +Object.defineProperty(exports, "JSXClosingFragment", ({ + enumerable: true, + get: function () { + return _index.jsxClosingFragment; + } +})); +Object.defineProperty(exports, "Noop", ({ + enumerable: true, + get: function () { + return _index.noop; + } +})); +Object.defineProperty(exports, "Placeholder", ({ + enumerable: true, + get: function () { + return _index.placeholder; + } +})); +Object.defineProperty(exports, "V8IntrinsicIdentifier", ({ + enumerable: true, + get: function () { + return _index.v8IntrinsicIdentifier; + } +})); +Object.defineProperty(exports, "ArgumentPlaceholder", ({ + enumerable: true, + get: function () { + return _index.argumentPlaceholder; + } +})); +Object.defineProperty(exports, "BindExpression", ({ + enumerable: true, + get: function () { + return _index.bindExpression; + } +})); +Object.defineProperty(exports, "ImportAttribute", ({ + enumerable: true, + get: function () { + return _index.importAttribute; + } +})); +Object.defineProperty(exports, "Decorator", ({ + enumerable: true, + get: function () { + return _index.decorator; + } +})); +Object.defineProperty(exports, "DoExpression", ({ + enumerable: true, + get: function () { + return _index.doExpression; + } +})); +Object.defineProperty(exports, "ExportDefaultSpecifier", ({ + enumerable: true, + get: function () { + return _index.exportDefaultSpecifier; + } +})); +Object.defineProperty(exports, "RecordExpression", ({ + enumerable: true, + get: function () { + return _index.recordExpression; + } +})); +Object.defineProperty(exports, "TupleExpression", ({ + enumerable: true, + get: function () { + return _index.tupleExpression; + } +})); +Object.defineProperty(exports, "DecimalLiteral", ({ + enumerable: true, + get: function () { + return _index.decimalLiteral; + } +})); +Object.defineProperty(exports, "StaticBlock", ({ + enumerable: true, + get: function () { + return _index.staticBlock; + } +})); +Object.defineProperty(exports, "ModuleExpression", ({ + enumerable: true, + get: function () { + return _index.moduleExpression; + } +})); +Object.defineProperty(exports, "TopicReference", ({ + enumerable: true, + get: function () { + return _index.topicReference; + } +})); +Object.defineProperty(exports, "PipelineTopicExpression", ({ + enumerable: true, + get: function () { + return _index.pipelineTopicExpression; + } +})); +Object.defineProperty(exports, "PipelineBareFunction", ({ + enumerable: true, + get: function () { + return _index.pipelineBareFunction; + } +})); +Object.defineProperty(exports, "PipelinePrimaryTopicReference", ({ + enumerable: true, + get: function () { + return _index.pipelinePrimaryTopicReference; + } +})); +Object.defineProperty(exports, "TSParameterProperty", ({ + enumerable: true, + get: function () { + return _index.tsParameterProperty; + } +})); +Object.defineProperty(exports, "TSDeclareFunction", ({ + enumerable: true, + get: function () { + return _index.tsDeclareFunction; + } +})); +Object.defineProperty(exports, "TSDeclareMethod", ({ + enumerable: true, + get: function () { + return _index.tsDeclareMethod; + } +})); +Object.defineProperty(exports, "TSQualifiedName", ({ + enumerable: true, + get: function () { + return _index.tsQualifiedName; + } +})); +Object.defineProperty(exports, "TSCallSignatureDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsCallSignatureDeclaration; + } +})); +Object.defineProperty(exports, "TSConstructSignatureDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsConstructSignatureDeclaration; + } +})); +Object.defineProperty(exports, "TSPropertySignature", ({ + enumerable: true, + get: function () { + return _index.tsPropertySignature; + } +})); +Object.defineProperty(exports, "TSMethodSignature", ({ + enumerable: true, + get: function () { + return _index.tsMethodSignature; + } +})); +Object.defineProperty(exports, "TSIndexSignature", ({ + enumerable: true, + get: function () { + return _index.tsIndexSignature; + } +})); +Object.defineProperty(exports, "TSAnyKeyword", ({ + enumerable: true, + get: function () { + return _index.tsAnyKeyword; + } +})); +Object.defineProperty(exports, "TSBooleanKeyword", ({ + enumerable: true, + get: function () { + return _index.tsBooleanKeyword; + } +})); +Object.defineProperty(exports, "TSBigIntKeyword", ({ + enumerable: true, + get: function () { + return _index.tsBigIntKeyword; + } +})); +Object.defineProperty(exports, "TSIntrinsicKeyword", ({ + enumerable: true, + get: function () { + return _index.tsIntrinsicKeyword; + } +})); +Object.defineProperty(exports, "TSNeverKeyword", ({ + enumerable: true, + get: function () { + return _index.tsNeverKeyword; + } +})); +Object.defineProperty(exports, "TSNullKeyword", ({ + enumerable: true, + get: function () { + return _index.tsNullKeyword; + } +})); +Object.defineProperty(exports, "TSNumberKeyword", ({ + enumerable: true, + get: function () { + return _index.tsNumberKeyword; + } +})); +Object.defineProperty(exports, "TSObjectKeyword", ({ + enumerable: true, + get: function () { + return _index.tsObjectKeyword; + } +})); +Object.defineProperty(exports, "TSStringKeyword", ({ + enumerable: true, + get: function () { + return _index.tsStringKeyword; + } +})); +Object.defineProperty(exports, "TSSymbolKeyword", ({ + enumerable: true, + get: function () { + return _index.tsSymbolKeyword; + } +})); +Object.defineProperty(exports, "TSUndefinedKeyword", ({ + enumerable: true, + get: function () { + return _index.tsUndefinedKeyword; + } +})); +Object.defineProperty(exports, "TSUnknownKeyword", ({ + enumerable: true, + get: function () { + return _index.tsUnknownKeyword; + } +})); +Object.defineProperty(exports, "TSVoidKeyword", ({ + enumerable: true, + get: function () { + return _index.tsVoidKeyword; + } +})); +Object.defineProperty(exports, "TSThisType", ({ + enumerable: true, + get: function () { + return _index.tsThisType; + } +})); +Object.defineProperty(exports, "TSFunctionType", ({ + enumerable: true, + get: function () { + return _index.tsFunctionType; + } +})); +Object.defineProperty(exports, "TSConstructorType", ({ + enumerable: true, + get: function () { + return _index.tsConstructorType; + } +})); +Object.defineProperty(exports, "TSTypeReference", ({ + enumerable: true, + get: function () { + return _index.tsTypeReference; + } +})); +Object.defineProperty(exports, "TSTypePredicate", ({ + enumerable: true, + get: function () { + return _index.tsTypePredicate; + } +})); +Object.defineProperty(exports, "TSTypeQuery", ({ + enumerable: true, + get: function () { + return _index.tsTypeQuery; + } +})); +Object.defineProperty(exports, "TSTypeLiteral", ({ + enumerable: true, + get: function () { + return _index.tsTypeLiteral; + } +})); +Object.defineProperty(exports, "TSArrayType", ({ + enumerable: true, + get: function () { + return _index.tsArrayType; + } +})); +Object.defineProperty(exports, "TSTupleType", ({ + enumerable: true, + get: function () { + return _index.tsTupleType; + } +})); +Object.defineProperty(exports, "TSOptionalType", ({ + enumerable: true, + get: function () { + return _index.tsOptionalType; + } +})); +Object.defineProperty(exports, "TSRestType", ({ + enumerable: true, + get: function () { + return _index.tsRestType; + } +})); +Object.defineProperty(exports, "TSNamedTupleMember", ({ + enumerable: true, + get: function () { + return _index.tsNamedTupleMember; + } +})); +Object.defineProperty(exports, "TSUnionType", ({ + enumerable: true, + get: function () { + return _index.tsUnionType; + } +})); +Object.defineProperty(exports, "TSIntersectionType", ({ + enumerable: true, + get: function () { + return _index.tsIntersectionType; + } +})); +Object.defineProperty(exports, "TSConditionalType", ({ + enumerable: true, + get: function () { + return _index.tsConditionalType; + } +})); +Object.defineProperty(exports, "TSInferType", ({ + enumerable: true, + get: function () { + return _index.tsInferType; + } +})); +Object.defineProperty(exports, "TSParenthesizedType", ({ + enumerable: true, + get: function () { + return _index.tsParenthesizedType; + } +})); +Object.defineProperty(exports, "TSTypeOperator", ({ + enumerable: true, + get: function () { + return _index.tsTypeOperator; + } +})); +Object.defineProperty(exports, "TSIndexedAccessType", ({ + enumerable: true, + get: function () { + return _index.tsIndexedAccessType; + } +})); +Object.defineProperty(exports, "TSMappedType", ({ + enumerable: true, + get: function () { + return _index.tsMappedType; + } +})); +Object.defineProperty(exports, "TSLiteralType", ({ + enumerable: true, + get: function () { + return _index.tsLiteralType; + } +})); +Object.defineProperty(exports, "TSExpressionWithTypeArguments", ({ + enumerable: true, + get: function () { + return _index.tsExpressionWithTypeArguments; + } +})); +Object.defineProperty(exports, "TSInterfaceDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsInterfaceDeclaration; + } +})); +Object.defineProperty(exports, "TSInterfaceBody", ({ + enumerable: true, + get: function () { + return _index.tsInterfaceBody; + } +})); +Object.defineProperty(exports, "TSTypeAliasDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsTypeAliasDeclaration; + } +})); +Object.defineProperty(exports, "TSAsExpression", ({ + enumerable: true, + get: function () { + return _index.tsAsExpression; + } +})); +Object.defineProperty(exports, "TSTypeAssertion", ({ + enumerable: true, + get: function () { + return _index.tsTypeAssertion; + } +})); +Object.defineProperty(exports, "TSEnumDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsEnumDeclaration; + } +})); +Object.defineProperty(exports, "TSEnumMember", ({ + enumerable: true, + get: function () { + return _index.tsEnumMember; + } +})); +Object.defineProperty(exports, "TSModuleDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsModuleDeclaration; + } +})); +Object.defineProperty(exports, "TSModuleBlock", ({ + enumerable: true, + get: function () { + return _index.tsModuleBlock; + } +})); +Object.defineProperty(exports, "TSImportType", ({ + enumerable: true, + get: function () { + return _index.tsImportType; + } +})); +Object.defineProperty(exports, "TSImportEqualsDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsImportEqualsDeclaration; + } +})); +Object.defineProperty(exports, "TSExternalModuleReference", ({ + enumerable: true, + get: function () { + return _index.tsExternalModuleReference; + } +})); +Object.defineProperty(exports, "TSNonNullExpression", ({ + enumerable: true, + get: function () { + return _index.tsNonNullExpression; + } +})); +Object.defineProperty(exports, "TSExportAssignment", ({ + enumerable: true, + get: function () { + return _index.tsExportAssignment; + } +})); +Object.defineProperty(exports, "TSNamespaceExportDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsNamespaceExportDeclaration; + } +})); +Object.defineProperty(exports, "TSTypeAnnotation", ({ + enumerable: true, + get: function () { + return _index.tsTypeAnnotation; + } +})); +Object.defineProperty(exports, "TSTypeParameterInstantiation", ({ + enumerable: true, + get: function () { + return _index.tsTypeParameterInstantiation; + } +})); +Object.defineProperty(exports, "TSTypeParameterDeclaration", ({ + enumerable: true, + get: function () { + return _index.tsTypeParameterDeclaration; + } +})); +Object.defineProperty(exports, "TSTypeParameter", ({ + enumerable: true, + get: function () { + return _index.tsTypeParameter; + } +})); +Object.defineProperty(exports, "NumberLiteral", ({ + enumerable: true, + get: function () { + return _index.numberLiteral; + } +})); +Object.defineProperty(exports, "RegexLiteral", ({ + enumerable: true, + get: function () { + return _index.regexLiteral; + } +})); +Object.defineProperty(exports, "RestProperty", ({ + enumerable: true, + get: function () { + return _index.restProperty; + } +})); +Object.defineProperty(exports, "SpreadProperty", ({ + enumerable: true, + get: function () { + return _index.spreadProperty; + } +})); + +var _index = __nccwpck_require__(10758); + +/***/ }), + +/***/ 72259: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = buildChildren; + +var _generated = __nccwpck_require__(52047); + +var _cleanJSXElementLiteralChild = __nccwpck_require__(46671); + +function buildChildren(node) { + const elements = []; + + for (let i = 0; i < node.children.length; i++) { + let child = node.children[i]; + + if ((0, _generated.isJSXText)(child)) { + (0, _cleanJSXElementLiteralChild.default)(child, elements); + continue; + } + + if ((0, _generated.isJSXExpressionContainer)(child)) child = child.expression; + if ((0, _generated.isJSXEmptyExpression)(child)) continue; + elements.push(child); + } + + return elements; +} + +/***/ }), + +/***/ 69114: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createTSUnionType; + +var _generated = __nccwpck_require__(10758); + +var _removeTypeDuplicates = __nccwpck_require__(6262); + +function createTSUnionType(typeAnnotations) { + const types = typeAnnotations.map(type => type.typeAnnotation); + const flattened = (0, _removeTypeDuplicates.default)(types); + + if (flattened.length === 1) { + return flattened[0]; + } else { + return (0, _generated.tsUnionType)(flattened); + } +} + +/***/ }), + +/***/ 39827: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = clone; + +var _cloneNode = __nccwpck_require__(66479); + +function clone(node) { + return (0, _cloneNode.default)(node, false); +} + +/***/ }), + +/***/ 68567: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneDeep; + +var _cloneNode = __nccwpck_require__(66479); + +function cloneDeep(node) { + return (0, _cloneNode.default)(node); +} + +/***/ }), + +/***/ 33298: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneDeepWithoutLoc; + +var _cloneNode = __nccwpck_require__(66479); + +function cloneDeepWithoutLoc(node) { + return (0, _cloneNode.default)(node, true, true); +} + +/***/ }), + +/***/ 66479: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneNode; + +var _definitions = __nccwpck_require__(19090); + +var _generated = __nccwpck_require__(52047); + +const has = Function.call.bind(Object.prototype.hasOwnProperty); + +function cloneIfNode(obj, deep, withoutLoc) { + if (obj && typeof obj.type === "string") { + return cloneNode(obj, deep, withoutLoc); + } + + return obj; +} + +function cloneIfNodeOrArray(obj, deep, withoutLoc) { + if (Array.isArray(obj)) { + return obj.map(node => cloneIfNode(node, deep, withoutLoc)); + } + + return cloneIfNode(obj, deep, withoutLoc); +} + +function cloneNode(node, deep = true, withoutLoc = false) { + if (!node) return node; + const { + type + } = node; + const newNode = { + type: node.type + }; + + if ((0, _generated.isIdentifier)(node)) { + newNode.name = node.name; + + if (has(node, "optional") && typeof node.optional === "boolean") { + newNode.optional = node.optional; + } + + if (has(node, "typeAnnotation")) { + newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc) : node.typeAnnotation; + } + } else if (!has(_definitions.NODE_FIELDS, type)) { + throw new Error(`Unknown node type: "${type}"`); + } else { + for (const field of Object.keys(_definitions.NODE_FIELDS[type])) { + if (has(node, field)) { + if (deep) { + newNode[field] = (0, _generated.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc) : cloneIfNodeOrArray(node[field], true, withoutLoc); + } else { + newNode[field] = node[field]; + } + } + } + } + + if (has(node, "loc")) { + if (withoutLoc) { + newNode.loc = null; + } else { + newNode.loc = node.loc; + } + } + + if (has(node, "leadingComments")) { + newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc); + } + + if (has(node, "innerComments")) { + newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc); + } + + if (has(node, "trailingComments")) { + newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc); + } + + if (has(node, "extra")) { + newNode.extra = Object.assign({}, node.extra); + } + + return newNode; +} + +function maybeCloneComments(comments, deep, withoutLoc) { + if (!comments || !deep) { + return comments; + } + + return comments.map(({ + type, + value, + loc + }) => { + if (withoutLoc) { + return { + type, + value, + loc: null + }; + } + + return { + type, + value, + loc + }; + }); +} + +/***/ }), + +/***/ 36087: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneWithoutLoc; + +var _cloneNode = __nccwpck_require__(66479); + +function cloneWithoutLoc(node) { + return (0, _cloneNode.default)(node, false, true); +} + +/***/ }), + +/***/ 73952: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = addComment; + +var _addComments = __nccwpck_require__(27032); + +function addComment(node, type, content, line) { + return (0, _addComments.default)(node, type, [{ + type: line ? "CommentLine" : "CommentBlock", + value: content + }]); +} + +/***/ }), + +/***/ 27032: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = addComments; + +function addComments(node, type, comments) { + if (!comments || !node) return node; + const key = `${type}Comments`; + + if (node[key]) { + if (type === "leading") { + node[key] = comments.concat(node[key]); + } else { + node[key] = node[key].concat(comments); + } + } else { + node[key] = comments; + } + + return node; +} + +/***/ }), + +/***/ 62666: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritInnerComments; + +var _inherit = __nccwpck_require__(4335); + +function inheritInnerComments(child, parent) { + (0, _inherit.default)("innerComments", child, parent); +} + +/***/ }), + +/***/ 47158: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritLeadingComments; + +var _inherit = __nccwpck_require__(4335); + +function inheritLeadingComments(child, parent) { + (0, _inherit.default)("leadingComments", child, parent); +} + +/***/ }), + +/***/ 75225: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritTrailingComments; + +var _inherit = __nccwpck_require__(4335); + +function inheritTrailingComments(child, parent) { + (0, _inherit.default)("trailingComments", child, parent); +} + +/***/ }), + +/***/ 41832: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritsComments; + +var _inheritTrailingComments = __nccwpck_require__(75225); + +var _inheritLeadingComments = __nccwpck_require__(47158); + +var _inheritInnerComments = __nccwpck_require__(62666); + +function inheritsComments(child, parent) { + (0, _inheritTrailingComments.default)(child, parent); + (0, _inheritLeadingComments.default)(child, parent); + (0, _inheritInnerComments.default)(child, parent); + return child; +} + +/***/ }), + +/***/ 53755: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeComments; + +var _constants = __nccwpck_require__(90514); + +function removeComments(node) { + _constants.COMMENT_KEYS.forEach(key => { + node[key] = null; + }); + + return node; +} + +/***/ }), + +/***/ 86441: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TSBASETYPE_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.JSX_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.FLOWTYPE_TYPES = exports.FLOW_TYPES = exports.PRIVATE_TYPES = exports.MODULESPECIFIER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = exports.CLASS_TYPES = exports.PATTERN_TYPES = exports.UNARYLIKE_TYPES = exports.PROPERTY_TYPES = exports.OBJECTMEMBER_TYPES = exports.METHOD_TYPES = exports.USERWHITESPACABLE_TYPES = exports.IMMUTABLE_TYPES = exports.LITERAL_TYPES = exports.TSENTITYNAME_TYPES = exports.LVAL_TYPES = exports.PATTERNLIKE_TYPES = exports.DECLARATION_TYPES = exports.PUREISH_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTION_TYPES = exports.FORXSTATEMENT_TYPES = exports.FOR_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.WHILE_TYPES = exports.LOOP_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.SCOPABLE_TYPES = exports.BINARY_TYPES = exports.EXPRESSION_TYPES = void 0; + +var _definitions = __nccwpck_require__(19090); + +const EXPRESSION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Expression"]; +exports.EXPRESSION_TYPES = EXPRESSION_TYPES; +const BINARY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Binary"]; +exports.BINARY_TYPES = BINARY_TYPES; +const SCOPABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Scopable"]; +exports.SCOPABLE_TYPES = SCOPABLE_TYPES; +const BLOCKPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["BlockParent"]; +exports.BLOCKPARENT_TYPES = BLOCKPARENT_TYPES; +const BLOCK_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Block"]; +exports.BLOCK_TYPES = BLOCK_TYPES; +const STATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Statement"]; +exports.STATEMENT_TYPES = STATEMENT_TYPES; +const TERMINATORLESS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Terminatorless"]; +exports.TERMINATORLESS_TYPES = TERMINATORLESS_TYPES; +const COMPLETIONSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["CompletionStatement"]; +exports.COMPLETIONSTATEMENT_TYPES = COMPLETIONSTATEMENT_TYPES; +const CONDITIONAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Conditional"]; +exports.CONDITIONAL_TYPES = CONDITIONAL_TYPES; +const LOOP_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Loop"]; +exports.LOOP_TYPES = LOOP_TYPES; +const WHILE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["While"]; +exports.WHILE_TYPES = WHILE_TYPES; +const EXPRESSIONWRAPPER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExpressionWrapper"]; +exports.EXPRESSIONWRAPPER_TYPES = EXPRESSIONWRAPPER_TYPES; +const FOR_TYPES = _definitions.FLIPPED_ALIAS_KEYS["For"]; +exports.FOR_TYPES = FOR_TYPES; +const FORXSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ForXStatement"]; +exports.FORXSTATEMENT_TYPES = FORXSTATEMENT_TYPES; +const FUNCTION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Function"]; +exports.FUNCTION_TYPES = FUNCTION_TYPES; +const FUNCTIONPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FunctionParent"]; +exports.FUNCTIONPARENT_TYPES = FUNCTIONPARENT_TYPES; +const PUREISH_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pureish"]; +exports.PUREISH_TYPES = PUREISH_TYPES; +const DECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Declaration"]; +exports.DECLARATION_TYPES = DECLARATION_TYPES; +const PATTERNLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["PatternLike"]; +exports.PATTERNLIKE_TYPES = PATTERNLIKE_TYPES; +const LVAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["LVal"]; +exports.LVAL_TYPES = LVAL_TYPES; +const TSENTITYNAME_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSEntityName"]; +exports.TSENTITYNAME_TYPES = TSENTITYNAME_TYPES; +const LITERAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Literal"]; +exports.LITERAL_TYPES = LITERAL_TYPES; +const IMMUTABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Immutable"]; +exports.IMMUTABLE_TYPES = IMMUTABLE_TYPES; +const USERWHITESPACABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UserWhitespacable"]; +exports.USERWHITESPACABLE_TYPES = USERWHITESPACABLE_TYPES; +const METHOD_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Method"]; +exports.METHOD_TYPES = METHOD_TYPES; +const OBJECTMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ObjectMember"]; +exports.OBJECTMEMBER_TYPES = OBJECTMEMBER_TYPES; +const PROPERTY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Property"]; +exports.PROPERTY_TYPES = PROPERTY_TYPES; +const UNARYLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UnaryLike"]; +exports.UNARYLIKE_TYPES = UNARYLIKE_TYPES; +const PATTERN_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pattern"]; +exports.PATTERN_TYPES = PATTERN_TYPES; +const CLASS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Class"]; +exports.CLASS_TYPES = CLASS_TYPES; +const MODULEDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleDeclaration"]; +exports.MODULEDECLARATION_TYPES = MODULEDECLARATION_TYPES; +const EXPORTDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExportDeclaration"]; +exports.EXPORTDECLARATION_TYPES = EXPORTDECLARATION_TYPES; +const MODULESPECIFIER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleSpecifier"]; +exports.MODULESPECIFIER_TYPES = MODULESPECIFIER_TYPES; +const PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"]; +exports.PRIVATE_TYPES = PRIVATE_TYPES; +const FLOW_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Flow"]; +exports.FLOW_TYPES = FLOW_TYPES; +const FLOWTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowType"]; +exports.FLOWTYPE_TYPES = FLOWTYPE_TYPES; +const FLOWBASEANNOTATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"]; +exports.FLOWBASEANNOTATION_TYPES = FLOWBASEANNOTATION_TYPES; +const FLOWDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowDeclaration"]; +exports.FLOWDECLARATION_TYPES = FLOWDECLARATION_TYPES; +const FLOWPREDICATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowPredicate"]; +exports.FLOWPREDICATE_TYPES = FLOWPREDICATE_TYPES; +const ENUMBODY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["EnumBody"]; +exports.ENUMBODY_TYPES = ENUMBODY_TYPES; +const ENUMMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["EnumMember"]; +exports.ENUMMEMBER_TYPES = ENUMMEMBER_TYPES; +const JSX_TYPES = _definitions.FLIPPED_ALIAS_KEYS["JSX"]; +exports.JSX_TYPES = JSX_TYPES; +const TSTYPEELEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSTypeElement"]; +exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES; +const TSTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSType"]; +exports.TSTYPE_TYPES = TSTYPE_TYPES; +const TSBASETYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSBaseType"]; +exports.TSBASETYPE_TYPES = TSBASETYPE_TYPES; + +/***/ }), + +/***/ 90514: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NOT_LOCAL_BINDING = exports.BLOCK_SCOPED_SYMBOL = exports.INHERIT_KEYS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = exports.BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.UPDATE_OPERATORS = exports.LOGICAL_OPERATORS = exports.COMMENT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = void 0; +const STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"]; +exports.STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS; +const FLATTENABLE_KEYS = ["body", "expressions"]; +exports.FLATTENABLE_KEYS = FLATTENABLE_KEYS; +const FOR_INIT_KEYS = ["left", "init"]; +exports.FOR_INIT_KEYS = FOR_INIT_KEYS; +const COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"]; +exports.COMMENT_KEYS = COMMENT_KEYS; +const LOGICAL_OPERATORS = ["||", "&&", "??"]; +exports.LOGICAL_OPERATORS = LOGICAL_OPERATORS; +const UPDATE_OPERATORS = ["++", "--"]; +exports.UPDATE_OPERATORS = UPDATE_OPERATORS; +const BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="]; +exports.BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS; +const EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="]; +exports.EQUALITY_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS; +const COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"]; +exports.COMPARISON_BINARY_OPERATORS = COMPARISON_BINARY_OPERATORS; +const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS]; +exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS; +const NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"]; +exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS; +const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS]; +exports.BINARY_OPERATORS = BINARY_OPERATORS; +const ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")]; +exports.ASSIGNMENT_OPERATORS = ASSIGNMENT_OPERATORS; +const BOOLEAN_UNARY_OPERATORS = ["delete", "!"]; +exports.BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS; +const NUMBER_UNARY_OPERATORS = ["+", "-", "~"]; +exports.NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS; +const STRING_UNARY_OPERATORS = ["typeof"]; +exports.STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS; +const UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS]; +exports.UNARY_OPERATORS = UNARY_OPERATORS; +const INHERIT_KEYS = { + optional: ["typeAnnotation", "typeParameters", "returnType"], + force: ["start", "loc", "end"] +}; +exports.INHERIT_KEYS = INHERIT_KEYS; +const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped"); +exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL; +const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding"); +exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING; + +/***/ }), + +/***/ 32938: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = ensureBlock; + +var _toBlock = __nccwpck_require__(17300); + +function ensureBlock(node, key = "body") { + return node[key] = (0, _toBlock.default)(node[key], node); +} + +/***/ }), + +/***/ 58517: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = gatherSequenceExpressions; + +var _getBindingIdentifiers = __nccwpck_require__(80805); + +var _generated = __nccwpck_require__(52047); + +var _generated2 = __nccwpck_require__(10758); + +var _cloneNode = __nccwpck_require__(66479); + +function gatherSequenceExpressions(nodes, scope, declars) { + const exprs = []; + let ensureLastUndefined = true; + + for (const node of nodes) { + if (!(0, _generated.isEmptyStatement)(node)) { + ensureLastUndefined = false; + } + + if ((0, _generated.isExpression)(node)) { + exprs.push(node); + } else if ((0, _generated.isExpressionStatement)(node)) { + exprs.push(node.expression); + } else if ((0, _generated.isVariableDeclaration)(node)) { + if (node.kind !== "var") return; + + for (const declar of node.declarations) { + const bindings = (0, _getBindingIdentifiers.default)(declar); + + for (const key of Object.keys(bindings)) { + declars.push({ + kind: node.kind, + id: (0, _cloneNode.default)(bindings[key]) + }); + } + + if (declar.init) { + exprs.push((0, _generated2.assignmentExpression)("=", declar.id, declar.init)); + } + } + + ensureLastUndefined = true; + } else if ((0, _generated.isIfStatement)(node)) { + const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode(); + const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode(); + if (!consequent || !alternate) return; + exprs.push((0, _generated2.conditionalExpression)(node.test, consequent, alternate)); + } else if ((0, _generated.isBlockStatement)(node)) { + const body = gatherSequenceExpressions(node.body, scope, declars); + if (!body) return; + exprs.push(body); + } else if ((0, _generated.isEmptyStatement)(node)) { + if (nodes.indexOf(node) === 0) { + ensureLastUndefined = true; + } + } else { + return; + } + } + + if (ensureLastUndefined) { + exprs.push(scope.buildUndefinedNode()); + } + + if (exprs.length === 1) { + return exprs[0]; + } else { + return (0, _generated2.sequenceExpression)(exprs); + } +} + +/***/ }), + +/***/ 45099: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toBindingIdentifierName; + +var _toIdentifier = __nccwpck_require__(62910); + +function toBindingIdentifierName(name) { + name = (0, _toIdentifier.default)(name); + if (name === "eval" || name === "arguments") name = "_" + name; + return name; +} + +/***/ }), + +/***/ 17300: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toBlock; + +var _generated = __nccwpck_require__(52047); + +var _generated2 = __nccwpck_require__(10758); + +function toBlock(node, parent) { + if ((0, _generated.isBlockStatement)(node)) { + return node; + } + + let blockNodes = []; + + if ((0, _generated.isEmptyStatement)(node)) { + blockNodes = []; + } else { + if (!(0, _generated.isStatement)(node)) { + if ((0, _generated.isFunction)(parent)) { + node = (0, _generated2.returnStatement)(node); + } else { + node = (0, _generated2.expressionStatement)(node); + } + } + + blockNodes = [node]; + } + + return (0, _generated2.blockStatement)(blockNodes); +} + +/***/ }), + +/***/ 52828: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toComputedKey; + +var _generated = __nccwpck_require__(52047); + +var _generated2 = __nccwpck_require__(10758); + +function toComputedKey(node, key = node.key || node.property) { + if (!node.computed && (0, _generated.isIdentifier)(key)) key = (0, _generated2.stringLiteral)(key.name); + return key; +} + +/***/ }), + +/***/ 22628: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _generated = __nccwpck_require__(52047); + +var _default = toExpression; +exports["default"] = _default; + +function toExpression(node) { + if ((0, _generated.isExpressionStatement)(node)) { + node = node.expression; + } + + if ((0, _generated.isExpression)(node)) { + return node; + } + + if ((0, _generated.isClass)(node)) { + node.type = "ClassExpression"; + } else if ((0, _generated.isFunction)(node)) { + node.type = "FunctionExpression"; + } + + if (!(0, _generated.isExpression)(node)) { + throw new Error(`cannot turn ${node.type} to an expression`); + } + + return node; +} + +/***/ }), + +/***/ 62910: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toIdentifier; + +var _isValidIdentifier = __nccwpck_require__(98557); + +var _helperValidatorIdentifier = __nccwpck_require__(49586); + +function toIdentifier(input) { + input = input + ""; + let name = ""; + + for (const c of input) { + name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : "-"; + } + + name = name.replace(/^[-0-9]+/, ""); + name = name.replace(/[-\s]+(.)?/g, function (match, c) { + return c ? c.toUpperCase() : ""; + }); + + if (!(0, _isValidIdentifier.default)(name)) { + name = `_${name}`; + } + + return name || "_"; +} + +/***/ }), + +/***/ 89099: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toKeyAlias; + +var _generated = __nccwpck_require__(52047); + +var _cloneNode = __nccwpck_require__(66479); + +var _removePropertiesDeep = __nccwpck_require__(83983); + +function toKeyAlias(node, key = node.key) { + let alias; + + if (node.kind === "method") { + return toKeyAlias.increment() + ""; + } else if ((0, _generated.isIdentifier)(key)) { + alias = key.name; + } else if ((0, _generated.isStringLiteral)(key)) { + alias = JSON.stringify(key.value); + } else { + alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key))); + } + + if (node.computed) { + alias = `[${alias}]`; + } + + if (node.static) { + alias = `static:${alias}`; + } + + return alias; +} + +toKeyAlias.uid = 0; + +toKeyAlias.increment = function () { + if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) { + return toKeyAlias.uid = 0; + } else { + return toKeyAlias.uid++; + } +}; + +/***/ }), + +/***/ 67455: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toSequenceExpression; + +var _gatherSequenceExpressions = __nccwpck_require__(58517); + +function toSequenceExpression(nodes, scope) { + if (!(nodes != null && nodes.length)) return; + const declars = []; + const result = (0, _gatherSequenceExpressions.default)(nodes, scope, declars); + if (!result) return; + + for (const declar of declars) { + scope.push(declar); + } + + return result; +} + +/***/ }), + +/***/ 13198: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _generated = __nccwpck_require__(52047); + +var _generated2 = __nccwpck_require__(10758); + +var _default = toStatement; +exports["default"] = _default; + +function toStatement(node, ignore) { + if ((0, _generated.isStatement)(node)) { + return node; + } + + let mustHaveId = false; + let newType; + + if ((0, _generated.isClass)(node)) { + mustHaveId = true; + newType = "ClassDeclaration"; + } else if ((0, _generated.isFunction)(node)) { + mustHaveId = true; + newType = "FunctionDeclaration"; + } else if ((0, _generated.isAssignmentExpression)(node)) { + return (0, _generated2.expressionStatement)(node); + } + + if (mustHaveId && !node.id) { + newType = false; + } + + if (!newType) { + if (ignore) { + return false; + } else { + throw new Error(`cannot turn ${node.type} to a statement`); + } + } + + node.type = newType; + return node; +} + +/***/ }), + +/***/ 17411: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _isValidIdentifier = __nccwpck_require__(98557); + +var _generated = __nccwpck_require__(10758); + +var _default = valueToNode; +exports["default"] = _default; +const objectToString = Function.call.bind(Object.prototype.toString); + +function isRegExp(value) { + return objectToString(value) === "[object RegExp]"; +} + +function isPlainObject(value) { + if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") { + return false; + } + + const proto = Object.getPrototypeOf(value); + return proto === null || Object.getPrototypeOf(proto) === null; +} + +function valueToNode(value) { + if (value === undefined) { + return (0, _generated.identifier)("undefined"); + } + + if (value === true || value === false) { + return (0, _generated.booleanLiteral)(value); + } + + if (value === null) { + return (0, _generated.nullLiteral)(); + } + + if (typeof value === "string") { + return (0, _generated.stringLiteral)(value); + } + + if (typeof value === "number") { + let result; + + if (Number.isFinite(value)) { + result = (0, _generated.numericLiteral)(Math.abs(value)); + } else { + let numerator; + + if (Number.isNaN(value)) { + numerator = (0, _generated.numericLiteral)(0); + } else { + numerator = (0, _generated.numericLiteral)(1); + } + + result = (0, _generated.binaryExpression)("/", numerator, (0, _generated.numericLiteral)(0)); + } + + if (value < 0 || Object.is(value, -0)) { + result = (0, _generated.unaryExpression)("-", result); + } + + return result; + } + + if (isRegExp(value)) { + const pattern = value.source; + const flags = value.toString().match(/\/([a-z]+|)$/)[1]; + return (0, _generated.regExpLiteral)(pattern, flags); + } + + if (Array.isArray(value)) { + return (0, _generated.arrayExpression)(value.map(valueToNode)); + } + + if (isPlainObject(value)) { + const props = []; + + for (const key of Object.keys(value)) { + let nodeKey; + + if ((0, _isValidIdentifier.default)(key)) { + nodeKey = (0, _generated.identifier)(key); + } else { + nodeKey = (0, _generated.stringLiteral)(key); + } + + props.push((0, _generated.objectProperty)(nodeKey, valueToNode(value[key]))); + } + + return (0, _generated.objectExpression)(props); + } + + throw new Error("don't know how to turn this value into a node"); +} + +/***/ }), + +/***/ 85210: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.classMethodOrDeclareMethodCommon = exports.classMethodOrPropertyCommon = exports.patternLikeCommon = exports.functionDeclarationCommon = exports.functionTypeAnnotationCommon = exports.functionCommon = void 0; + +var _is = __nccwpck_require__(31334); + +var _isValidIdentifier = __nccwpck_require__(98557); + +var _helperValidatorIdentifier = __nccwpck_require__(49586); + +var _constants = __nccwpck_require__(90514); + +var _utils = __nccwpck_require__(82426); + +(0, _utils.default)("ArrayExpression", { + fields: { + elements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement"))), + default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined + } + }, + visitor: ["elements"], + aliases: ["Expression"] +}); +(0, _utils.default)("AssignmentExpression", { + fields: { + operator: { + validate: function () { + if (!process.env.BABEL_TYPES_8_BREAKING) { + return (0, _utils.assertValueType)("string"); + } + + const identifier = (0, _utils.assertOneOf)(..._constants.ASSIGNMENT_OPERATORS); + const pattern = (0, _utils.assertOneOf)("="); + return function (node, key, val) { + const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier; + validator(node, key, val); + }; + }() + }, + left: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + builder: ["operator", "left", "right"], + visitor: ["left", "right"], + aliases: ["Expression"] +}); +(0, _utils.default)("BinaryExpression", { + builder: ["operator", "left", "right"], + fields: { + operator: { + validate: (0, _utils.assertOneOf)(..._constants.BINARY_OPERATORS) + }, + left: { + validate: function () { + const expression = (0, _utils.assertNodeType)("Expression"); + const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName"); + + const validator = function (node, key, val) { + const validator = node.operator === "in" ? inOp : expression; + validator(node, key, val); + }; + + validator.oneOfNodeTypes = ["Expression", "PrivateName"]; + return validator; + }() + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + visitor: ["left", "right"], + aliases: ["Binary", "Expression"] +}); +(0, _utils.default)("InterpreterDirective", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("Directive", { + visitor: ["value"], + fields: { + value: { + validate: (0, _utils.assertNodeType)("DirectiveLiteral") + } + } +}); +(0, _utils.default)("DirectiveLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("BlockStatement", { + builder: ["body", "directives"], + visitor: ["directives", "body"], + fields: { + directives: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))), + default: [] + }, + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + }, + aliases: ["Scopable", "BlockParent", "Block", "Statement"] +}); +(0, _utils.default)("BreakStatement", { + visitor: ["label"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } + }, + aliases: ["Statement", "Terminatorless", "CompletionStatement"] +}); +(0, _utils.default)("CallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments"], + aliases: ["Expression"], + fields: Object.assign({ + callee: { + validate: (0, _utils.assertNodeType)("Expression", "V8IntrinsicIdentifier") + }, + arguments: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder"))) + } + }, !process.env.BABEL_TYPES_8_BREAKING ? { + optional: { + validate: (0, _utils.assertOneOf)(true, false), + optional: true + } + } : {}, { + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + }) +}); +(0, _utils.default)("CatchClause", { + visitor: ["param", "body"], + fields: { + param: { + validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }, + aliases: ["Scopable", "BlockParent"] +}); +(0, _utils.default)("ConditionalExpression", { + visitor: ["test", "consequent", "alternate"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + consequent: { + validate: (0, _utils.assertNodeType)("Expression") + }, + alternate: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression", "Conditional"] +}); +(0, _utils.default)("ContinueStatement", { + visitor: ["label"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } + }, + aliases: ["Statement", "Terminatorless", "CompletionStatement"] +}); +(0, _utils.default)("DebuggerStatement", { + aliases: ["Statement"] +}); +(0, _utils.default)("DoWhileStatement", { + visitor: ["test", "body"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + }, + aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"] +}); +(0, _utils.default)("EmptyStatement", { + aliases: ["Statement"] +}); +(0, _utils.default)("ExpressionStatement", { + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Statement", "ExpressionWrapper"] +}); +(0, _utils.default)("File", { + builder: ["program", "comments", "tokens"], + visitor: ["program"], + fields: { + program: { + validate: (0, _utils.assertNodeType)("Program") + }, + comments: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, { + each: { + oneOfNodeTypes: ["CommentBlock", "CommentLine"] + } + }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")), + optional: true + }, + tokens: { + validate: (0, _utils.assertEach)(Object.assign(() => {}, { + type: "any" + })), + optional: true + } + } +}); +(0, _utils.default)("ForInStatement", { + visitor: ["left", "right", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], + fields: { + left: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("ForStatement", { + visitor: ["init", "test", "update", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"], + fields: { + init: { + validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"), + optional: true + }, + test: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + update: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +const functionCommon = { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement"))) + }, + generator: { + default: false + }, + async: { + default: false + } +}; +exports.functionCommon = functionCommon; +const functionTypeAnnotationCommon = { + returnType: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + } +}; +exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon; +const functionDeclarationCommon = Object.assign({}, functionCommon, { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } +}); +exports.functionDeclarationCommon = functionDeclarationCommon; +(0, _utils.default)("FunctionDeclaration", { + builder: ["id", "params", "body", "generator", "async"], + visitor: ["id", "params", "body", "returnType", "typeParameters"], + fields: Object.assign({}, functionDeclarationCommon, functionTypeAnnotationCommon, { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }), + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"], + validate: function () { + if (!process.env.BABEL_TYPES_8_BREAKING) return () => {}; + const identifier = (0, _utils.assertNodeType)("Identifier"); + return function (parent, key, node) { + if (!(0, _is.default)("ExportDefaultDeclaration", parent)) { + identifier(node, "id", node.id); + } + }; + }() +}); +(0, _utils.default)("FunctionExpression", { + inherits: "FunctionDeclaration", + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], + fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +const patternLikeCommon = { + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) + } +}; +exports.patternLikeCommon = patternLikeCommon; +(0, _utils.default)("Identifier", { + builder: ["name"], + visitor: ["typeAnnotation", "decorators"], + aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"], + fields: Object.assign({}, patternLikeCommon, { + name: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (!(0, _isValidIdentifier.default)(val, false)) { + throw new TypeError(`"${val}" is not a valid identifier name`); + } + }, { + type: "string" + })) + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }), + + validate(parent, key, node) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + const match = /\.(\w+)$/.exec(key); + if (!match) return; + const [, parentKey] = match; + const nonComp = { + computed: false + }; + + if (parentKey === "property") { + if ((0, _is.default)("MemberExpression", parent, nonComp)) return; + if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return; + } else if (parentKey === "key") { + if ((0, _is.default)("Property", parent, nonComp)) return; + if ((0, _is.default)("Method", parent, nonComp)) return; + } else if (parentKey === "exported") { + if ((0, _is.default)("ExportSpecifier", parent)) return; + } else if (parentKey === "imported") { + if ((0, _is.default)("ImportSpecifier", parent, { + imported: node + })) return; + } else if (parentKey === "meta") { + if ((0, _is.default)("MetaProperty", parent, { + meta: node + })) return; + } + + if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") { + throw new TypeError(`"${node.name}" is not a valid identifier`); + } + } + +}); +(0, _utils.default)("IfStatement", { + visitor: ["test", "consequent", "alternate"], + aliases: ["Statement", "Conditional"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + consequent: { + validate: (0, _utils.assertNodeType)("Statement") + }, + alternate: { + optional: true, + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("LabeledStatement", { + visitor: ["label", "body"], + aliases: ["Statement"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("StringLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("NumericLiteral", { + builder: ["value"], + deprecatedAlias: "NumberLiteral", + fields: { + value: { + validate: (0, _utils.assertValueType)("number") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("NullLiteral", { + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("BooleanLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("boolean") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("RegExpLiteral", { + builder: ["pattern", "flags"], + deprecatedAlias: "RegexLiteral", + aliases: ["Expression", "Pureish", "Literal"], + fields: { + pattern: { + validate: (0, _utils.assertValueType)("string") + }, + flags: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + const invalid = /[^gimsuy]/.exec(val); + + if (invalid) { + throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`); + } + }, { + type: "string" + })), + default: "" + } + } +}); +(0, _utils.default)("LogicalExpression", { + builder: ["operator", "left", "right"], + visitor: ["left", "right"], + aliases: ["Binary", "Expression"], + fields: { + operator: { + validate: (0, _utils.assertOneOf)(..._constants.LOGICAL_OPERATORS) + }, + left: { + validate: (0, _utils.assertNodeType)("Expression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("MemberExpression", { + builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])], + visitor: ["object", "property"], + aliases: ["Expression", "LVal"], + fields: Object.assign({ + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + property: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName"); + const computed = (0, _utils.assertNodeType)("Expression"); + + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + + validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"]; + return validator; + }() + }, + computed: { + default: false + } + }, !process.env.BABEL_TYPES_8_BREAKING ? { + optional: { + validate: (0, _utils.assertOneOf)(true, false), + optional: true + } + } : {}) +}); +(0, _utils.default)("NewExpression", { + inherits: "CallExpression" +}); +(0, _utils.default)("Program", { + visitor: ["directives", "body"], + builder: ["body", "directives", "sourceType", "interpreter"], + fields: { + sourceFile: { + validate: (0, _utils.assertValueType)("string") + }, + sourceType: { + validate: (0, _utils.assertOneOf)("script", "module"), + default: "script" + }, + interpreter: { + validate: (0, _utils.assertNodeType)("InterpreterDirective"), + default: null, + optional: true + }, + directives: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))), + default: [] + }, + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + }, + aliases: ["Scopable", "BlockParent", "Block"] +}); +(0, _utils.default)("ObjectExpression", { + visitor: ["properties"], + aliases: ["Expression"], + fields: { + properties: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectMethod", "ObjectProperty", "SpreadElement"))) + } + } +}); +(0, _utils.default)("ObjectMethod", { + builder: ["kind", "key", "params", "body", "computed", "generator", "async"], + fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + kind: Object.assign({ + validate: (0, _utils.assertOneOf)("method", "get", "set") + }, !process.env.BABEL_TYPES_8_BREAKING ? { + default: "method" + } : {}), + computed: { + default: false + }, + key: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + + validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"]; + return validator; + }() + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }), + visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], + aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"] +}); +(0, _utils.default)("ObjectProperty", { + builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])], + fields: { + computed: { + default: false + }, + key: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + + validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"]; + return validator; + }() + }, + value: { + validate: (0, _utils.assertNodeType)("Expression", "PatternLike") + }, + shorthand: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (val && node.computed) { + throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true"); + } + }, { + type: "boolean" + }), function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (val && !(0, _is.default)("Identifier", node.key)) { + throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier"); + } + }), + default: false + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } + }, + visitor: ["key", "value", "decorators"], + aliases: ["UserWhitespacable", "Property", "ObjectMember"], + validate: function () { + const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern"); + const expression = (0, _utils.assertNodeType)("Expression"); + return function (parent, key, node) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression; + validator(node, "value", node.value); + }; + }() +}); +(0, _utils.default)("RestElement", { + visitor: ["argument", "typeAnnotation"], + builder: ["argument"], + aliases: ["LVal", "PatternLike"], + deprecatedAlias: "RestProperty", + fields: Object.assign({}, patternLikeCommon, { + argument: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "Pattern", "MemberExpression") + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }), + + validate(parent, key) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + const match = /(\w+)\[(\d+)\]/.exec(key); + if (!match) throw new Error("Internal Babel error: malformed key."); + const [, listKey, index] = match; + + if (parent[listKey].length > index + 1) { + throw new TypeError(`RestElement must be last element of ${listKey}`); + } + } + +}); +(0, _utils.default)("ReturnStatement", { + visitor: ["argument"], + aliases: ["Statement", "Terminatorless", "CompletionStatement"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + } + } +}); +(0, _utils.default)("SequenceExpression", { + visitor: ["expressions"], + fields: { + expressions: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression"))) + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("ParenthesizedExpression", { + visitor: ["expression"], + aliases: ["Expression", "ExpressionWrapper"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("SwitchCase", { + visitor: ["test", "consequent"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + consequent: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + } +}); +(0, _utils.default)("SwitchStatement", { + visitor: ["discriminant", "cases"], + aliases: ["Statement", "BlockParent", "Scopable"], + fields: { + discriminant: { + validate: (0, _utils.assertNodeType)("Expression") + }, + cases: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("SwitchCase"))) + } + } +}); +(0, _utils.default)("ThisExpression", { + aliases: ["Expression"] +}); +(0, _utils.default)("ThrowStatement", { + visitor: ["argument"], + aliases: ["Statement", "Terminatorless", "CompletionStatement"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("TryStatement", { + visitor: ["block", "handler", "finalizer"], + aliases: ["Statement"], + fields: { + block: { + validate: (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (!node.handler && !node.finalizer) { + throw new TypeError("TryStatement expects either a handler or finalizer, or both"); + } + }, { + oneOfNodeTypes: ["BlockStatement"] + })) + }, + handler: { + optional: true, + validate: (0, _utils.assertNodeType)("CatchClause") + }, + finalizer: { + optional: true, + validate: (0, _utils.assertNodeType)("BlockStatement") + } + } +}); +(0, _utils.default)("UnaryExpression", { + builder: ["operator", "argument", "prefix"], + fields: { + prefix: { + default: true + }, + argument: { + validate: (0, _utils.assertNodeType)("Expression") + }, + operator: { + validate: (0, _utils.assertOneOf)(..._constants.UNARY_OPERATORS) + } + }, + visitor: ["argument"], + aliases: ["UnaryLike", "Expression"] +}); +(0, _utils.default)("UpdateExpression", { + builder: ["operator", "argument", "prefix"], + fields: { + prefix: { + default: false + }, + argument: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression") + }, + operator: { + validate: (0, _utils.assertOneOf)(..._constants.UPDATE_OPERATORS) + } + }, + visitor: ["argument"], + aliases: ["Expression"] +}); +(0, _utils.default)("VariableDeclaration", { + builder: ["kind", "declarations"], + visitor: ["declarations"], + aliases: ["Statement", "Declaration"], + fields: { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + kind: { + validate: (0, _utils.assertOneOf)("var", "let", "const") + }, + declarations: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("VariableDeclarator"))) + } + }, + + validate(parent, key, node) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + if (!(0, _is.default)("ForXStatement", parent, { + left: node + })) return; + + if (node.declarations.length !== 1) { + throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`); + } + } + +}); +(0, _utils.default)("VariableDeclarator", { + visitor: ["id", "init"], + fields: { + id: { + validate: function () { + if (!process.env.BABEL_TYPES_8_BREAKING) { + return (0, _utils.assertNodeType)("LVal"); + } + + const normal = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"); + const without = (0, _utils.assertNodeType)("Identifier"); + return function (node, key, val) { + const validator = node.init ? normal : without; + validator(node, key, val); + }; + }() + }, + definite: { + optional: true, + validate: (0, _utils.assertValueType)("boolean") + }, + init: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("WhileStatement", { + visitor: ["test", "body"], + aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("WithStatement", { + visitor: ["object", "body"], + aliases: ["Statement"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +(0, _utils.default)("AssignmentPattern", { + visitor: ["left", "right", "decorators"], + builder: ["left", "right"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, patternLikeCommon, { + left: { + validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } + }) +}); +(0, _utils.default)("ArrayPattern", { + visitor: ["elements", "typeAnnotation"], + builder: ["elements"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, patternLikeCommon, { + elements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike"))) + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }) +}); +(0, _utils.default)("ArrowFunctionExpression", { + builder: ["params", "body", "async"], + visitor: ["params", "body", "returnType", "typeParameters"], + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], + fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { + expression: { + validate: (0, _utils.assertValueType)("boolean") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement", "Expression") + } + }) +}); +(0, _utils.default)("ClassBody", { + visitor: ["body"], + fields: { + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "TSDeclareMethod", "TSIndexSignature"))) + } + } +}); +(0, _utils.default)("ClassExpression", { + builder: ["id", "superClass", "body", "decorators"], + visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"], + aliases: ["Scopable", "Class", "Expression"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("ClassBody") + }, + superClass: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + }, + superTypeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + }, + implements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + mixins: { + validate: (0, _utils.assertNodeType)("InterfaceExtends"), + optional: true + } + } +}); +(0, _utils.default)("ClassDeclaration", { + inherits: "ClassExpression", + aliases: ["Scopable", "Class", "Statement", "Declaration"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("ClassBody") + }, + superClass: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + }, + superTypeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + }, + implements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + mixins: { + validate: (0, _utils.assertNodeType)("InterfaceExtends"), + optional: true + }, + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + abstract: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }, + validate: function () { + const identifier = (0, _utils.assertNodeType)("Identifier"); + return function (parent, key, node) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (!(0, _is.default)("ExportDefaultDeclaration", parent)) { + identifier(node, "id", node.id); + } + }; + }() +}); +(0, _utils.default)("ExportAllDeclaration", { + visitor: ["source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], + fields: { + source: { + validate: (0, _utils.assertNodeType)("StringLiteral") + }, + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")), + assertions: { + optional: true, + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute"))) + } + } +}); +(0, _utils.default)("ExportDefaultDeclaration", { + visitor: ["declaration"], + aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], + fields: { + declaration: { + validate: (0, _utils.assertNodeType)("FunctionDeclaration", "TSDeclareFunction", "ClassDeclaration", "Expression") + }, + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value")) + } +}); +(0, _utils.default)("ExportNamedDeclaration", { + visitor: ["declaration", "specifiers", "source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], + fields: { + declaration: { + optional: true, + validate: (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (val && node.specifiers.length) { + throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration"); + } + }, { + oneOfNodeTypes: ["Declaration"] + }), function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (val && node.source) { + throw new TypeError("Cannot export a declaration from a source"); + } + }) + }, + assertions: { + optional: true, + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute"))) + }, + specifiers: { + default: [], + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)(function () { + const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"); + const sourceless = (0, _utils.assertNodeType)("ExportSpecifier"); + if (!process.env.BABEL_TYPES_8_BREAKING) return sourced; + return function (node, key, val) { + const validator = node.source ? sourced : sourceless; + validator(node, key, val); + }; + }())) + }, + source: { + validate: (0, _utils.assertNodeType)("StringLiteral"), + optional: true + }, + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) + } +}); +(0, _utils.default)("ExportSpecifier", { + visitor: ["local", "exported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + exported: { + validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") + } + } +}); +(0, _utils.default)("ForOfStatement", { + visitor: ["left", "right", "body"], + builder: ["left", "right", "body", "await"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], + fields: { + left: { + validate: function () { + if (!process.env.BABEL_TYPES_8_BREAKING) { + return (0, _utils.assertNodeType)("VariableDeclaration", "LVal"); + } + + const declaration = (0, _utils.assertNodeType)("VariableDeclaration"); + const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern"); + return function (node, key, val) { + if ((0, _is.default)("VariableDeclaration", val)) { + declaration(node, key, val); + } else { + lval(node, key, val); + } + }; + }() + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + }, + await: { + default: false + } + } +}); +(0, _utils.default)("ImportDeclaration", { + visitor: ["specifiers", "source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration"], + fields: { + assertions: { + optional: true, + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute"))) + }, + specifiers: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"))) + }, + source: { + validate: (0, _utils.assertNodeType)("StringLiteral") + }, + importKind: { + validate: (0, _utils.assertOneOf)("type", "typeof", "value"), + optional: true + } + } +}); +(0, _utils.default)("ImportDefaultSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("ImportNamespaceSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("ImportSpecifier", { + visitor: ["local", "imported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + imported: { + validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") + }, + importKind: { + validate: (0, _utils.assertOneOf)("type", "typeof"), + optional: true + } + } +}); +(0, _utils.default)("MetaProperty", { + visitor: ["meta", "property"], + aliases: ["Expression"], + fields: { + meta: { + validate: (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + let property; + + switch (val.name) { + case "function": + property = "sent"; + break; + + case "new": + property = "target"; + break; + + case "import": + property = "meta"; + break; + } + + if (!(0, _is.default)("Identifier", node.property, { + name: property + })) { + throw new TypeError("Unrecognised MetaProperty"); + } + }, { + oneOfNodeTypes: ["Identifier"] + })) + }, + property: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +const classMethodOrPropertyCommon = { + abstract: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + accessibility: { + validate: (0, _utils.assertOneOf)("public", "private", "protected"), + optional: true + }, + static: { + default: false + }, + override: { + default: false + }, + computed: { + default: false + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + key: { + validate: (0, _utils.chain)(function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "Expression")) + } +}; +exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon; +const classMethodOrDeclareMethodCommon = Object.assign({}, functionCommon, classMethodOrPropertyCommon, { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement", "TSParameterProperty"))) + }, + kind: { + validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"), + default: "method" + }, + access: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } +}); +exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon; +(0, _utils.default)("ClassMethod", { + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], + builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"], + visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], + fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +(0, _utils.default)("ObjectPattern", { + visitor: ["properties", "typeAnnotation", "decorators"], + builder: ["properties"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, patternLikeCommon, { + properties: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("RestElement", "ObjectProperty"))) + } + }) +}); +(0, _utils.default)("SpreadElement", { + visitor: ["argument"], + aliases: ["UnaryLike"], + deprecatedAlias: "SpreadProperty", + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("Super", { + aliases: ["Expression"] +}); +(0, _utils.default)("TaggedTemplateExpression", { + visitor: ["tag", "quasi", "typeParameters"], + builder: ["tag", "quasi"], + aliases: ["Expression"], + fields: { + tag: { + validate: (0, _utils.assertNodeType)("Expression") + }, + quasi: { + validate: (0, _utils.assertNodeType)("TemplateLiteral") + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("TemplateElement", { + builder: ["value", "tail"], + fields: { + value: { + validate: (0, _utils.assertShape)({ + raw: { + validate: (0, _utils.assertValueType)("string") + }, + cooked: { + validate: (0, _utils.assertValueType)("string"), + optional: true + } + }) + }, + tail: { + default: false + } + } +}); +(0, _utils.default)("TemplateLiteral", { + visitor: ["quasis", "expressions"], + aliases: ["Expression", "Literal"], + fields: { + quasis: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TemplateElement"))) + }, + expressions: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) { + if (node.quasis.length !== val.length + 1) { + throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`); + } + }) + } + } +}); +(0, _utils.default)("YieldExpression", { + builder: ["argument", "delegate"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + delegate: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (val && !node.argument) { + throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument"); + } + }, { + type: "boolean" + })), + default: false + }, + argument: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("AwaitExpression", { + builder: ["argument"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("Import", { + aliases: ["Expression"] +}); +(0, _utils.default)("BigIntLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("ExportNamespaceSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("OptionalMemberExpression", { + builder: ["object", "property", "computed", "optional"], + visitor: ["object", "property"], + aliases: ["Expression"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + property: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier"); + const computed = (0, _utils.assertNodeType)("Expression"); + + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + + validator.oneOfNodeTypes = ["Expression", "Identifier"]; + return validator; + }() + }, + computed: { + default: false + }, + optional: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)()) + } + } +}); +(0, _utils.default)("OptionalCallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments", "optional"], + aliases: ["Expression"], + fields: { + callee: { + validate: (0, _utils.assertNodeType)("Expression") + }, + arguments: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder"))) + }, + optional: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)()) + }, + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("ClassProperty", { + visitor: ["key", "value", "typeAnnotation", "decorators"], + builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], + aliases: ["Property"], + fields: Object.assign({}, classMethodOrPropertyCommon, { + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + definite: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + variance: { + validate: (0, _utils.assertNodeType)("Variance"), + optional: true + } + }) +}); +(0, _utils.default)("ClassPrivateProperty", { + visitor: ["key", "value", "decorators", "typeAnnotation"], + builder: ["key", "value", "decorators", "static"], + aliases: ["Property", "Private"], + fields: { + key: { + validate: (0, _utils.assertNodeType)("PrivateName") + }, + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + definite: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + variance: { + validate: (0, _utils.assertNodeType)("Variance"), + optional: true + } + } +}); +(0, _utils.default)("ClassPrivateMethod", { + builder: ["kind", "key", "params", "body", "static"], + visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"], + fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, { + key: { + validate: (0, _utils.assertNodeType)("PrivateName") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +(0, _utils.default)("PrivateName", { + visitor: ["id"], + aliases: ["Private"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); + +/***/ }), + +/***/ 82697: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var _utils = __nccwpck_require__(82426); + +(0, _utils.default)("ArgumentPlaceholder", {}); +(0, _utils.default)("BindExpression", { + visitor: ["object", "callee"], + aliases: ["Expression"], + fields: !process.env.BABEL_TYPES_8_BREAKING ? { + object: { + validate: Object.assign(() => {}, { + oneOfNodeTypes: ["Expression"] + }) + }, + callee: { + validate: Object.assign(() => {}, { + oneOfNodeTypes: ["Expression"] + }) + } + } : { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + callee: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("ImportAttribute", { + visitor: ["key", "value"], + fields: { + key: { + validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") + }, + value: { + validate: (0, _utils.assertNodeType)("StringLiteral") + } + } +}); +(0, _utils.default)("Decorator", { + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("DoExpression", { + visitor: ["body"], + builder: ["body", "async"], + aliases: ["Expression"], + fields: { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + }, + async: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + } + } +}); +(0, _utils.default)("ExportDefaultSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("RecordExpression", { + visitor: ["properties"], + aliases: ["Expression"], + fields: { + properties: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectProperty", "SpreadElement"))) + } + } +}); +(0, _utils.default)("TupleExpression", { + fields: { + elements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement"))), + default: [] + } + }, + visitor: ["elements"], + aliases: ["Expression"] +}); +(0, _utils.default)("DecimalLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +(0, _utils.default)("StaticBlock", { + visitor: ["body"], + fields: { + body: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) + } + }, + aliases: ["Scopable", "BlockParent"] +}); +(0, _utils.default)("ModuleExpression", { + visitor: ["body"], + fields: { + body: { + validate: (0, _utils.assertNodeType)("Program") + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("TopicReference", { + aliases: ["Expression"] +}); +(0, _utils.default)("PipelineTopicExpression", { + builder: ["expression"], + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("PipelineBareFunction", { + builder: ["callee"], + visitor: ["callee"], + fields: { + callee: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("PipelinePrimaryTopicReference", { + aliases: ["Expression"] +}); + +/***/ }), + +/***/ 56284: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var _utils = __nccwpck_require__(82426); + +const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => { + (0, _utils.default)(name, { + builder: ["id", "typeParameters", "extends", "body"], + visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)(typeParameterType), + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")), + body: (0, _utils.validateType)("ObjectTypeAnnotation") + } + }); +}; + +(0, _utils.default)("AnyTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ArrayTypeAnnotation", { + visitor: ["elementType"], + aliases: ["Flow", "FlowType"], + fields: { + elementType: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("BooleanTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("BooleanLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["Flow", "FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("NullLiteralTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ClassImplements", { + visitor: ["id", "typeParameters"], + aliases: ["Flow"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineInterfaceishType("DeclareClass"); +(0, _utils.default)("DeclareFunction", { + visitor: ["id"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + predicate: (0, _utils.validateOptionalType)("DeclaredPredicate") + } +}); +defineInterfaceishType("DeclareInterface"); +(0, _utils.default)("DeclareModule", { + builder: ["id", "body", "kind"], + visitor: ["id", "body"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + body: (0, _utils.validateType)("BlockStatement"), + kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES")) + } +}); +(0, _utils.default)("DeclareModuleExports", { + visitor: ["typeAnnotation"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + typeAnnotation: (0, _utils.validateType)("TypeAnnotation") + } +}); +(0, _utils.default)("DeclareTypeAlias", { + visitor: ["id", "typeParameters", "right"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + right: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("DeclareOpaqueType", { + visitor: ["id", "typeParameters", "supertype"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + supertype: (0, _utils.validateOptionalType)("FlowType"), + impltype: (0, _utils.validateOptionalType)("FlowType") + } +}); +(0, _utils.default)("DeclareVariable", { + visitor: ["id"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +(0, _utils.default)("DeclareExportDeclaration", { + visitor: ["declaration", "specifiers", "source"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + declaration: (0, _utils.validateOptionalType)("Flow"), + specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)(["ExportSpecifier", "ExportNamespaceSpecifier"])), + source: (0, _utils.validateOptionalType)("StringLiteral"), + default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("DeclareExportAllDeclaration", { + visitor: ["source"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + source: (0, _utils.validateType)("StringLiteral"), + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) + } +}); +(0, _utils.default)("DeclaredPredicate", { + visitor: ["value"], + aliases: ["Flow", "FlowPredicate"], + fields: { + value: (0, _utils.validateType)("Flow") + } +}); +(0, _utils.default)("ExistsTypeAnnotation", { + aliases: ["Flow", "FlowType"] +}); +(0, _utils.default)("FunctionTypeAnnotation", { + visitor: ["typeParameters", "params", "rest", "returnType"], + aliases: ["Flow", "FlowType"], + fields: { + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + params: (0, _utils.validate)((0, _utils.arrayOfType)("FunctionTypeParam")), + rest: (0, _utils.validateOptionalType)("FunctionTypeParam"), + this: (0, _utils.validateOptionalType)("FunctionTypeParam"), + returnType: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("FunctionTypeParam", { + visitor: ["name", "typeAnnotation"], + aliases: ["Flow"], + fields: { + name: (0, _utils.validateOptionalType)("Identifier"), + typeAnnotation: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("GenericTypeAnnotation", { + visitor: ["id", "typeParameters"], + aliases: ["Flow", "FlowType"], + fields: { + id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +(0, _utils.default)("InferredPredicate", { + aliases: ["Flow", "FlowPredicate"] +}); +(0, _utils.default)("InterfaceExtends", { + visitor: ["id", "typeParameters"], + aliases: ["Flow"], + fields: { + id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineInterfaceishType("InterfaceDeclaration"); +(0, _utils.default)("InterfaceTypeAnnotation", { + visitor: ["extends", "body"], + aliases: ["Flow", "FlowType"], + fields: { + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + body: (0, _utils.validateType)("ObjectTypeAnnotation") + } +}); +(0, _utils.default)("IntersectionTypeAnnotation", { + visitor: ["types"], + aliases: ["Flow", "FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("MixedTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("EmptyTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("NullableTypeAnnotation", { + visitor: ["typeAnnotation"], + aliases: ["Flow", "FlowType"], + fields: { + typeAnnotation: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("NumberLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["Flow", "FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("number")) + } +}); +(0, _utils.default)("NumberTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ObjectTypeAnnotation", { + visitor: ["properties", "indexers", "callProperties", "internalSlots"], + aliases: ["Flow", "FlowType"], + builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"], + fields: { + properties: (0, _utils.validate)((0, _utils.arrayOfType)(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])), + indexers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeIndexer")), + callProperties: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeCallProperty")), + internalSlots: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeInternalSlot")), + exact: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeInternalSlot", { + visitor: ["id", "value", "optional", "static", "method"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + id: (0, _utils.validateType)("Identifier"), + value: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeCallProperty", { + visitor: ["value"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + value: (0, _utils.validateType)("FlowType"), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeIndexer", { + visitor: ["id", "key", "value", "variance"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + id: (0, _utils.validateOptionalType)("Identifier"), + key: (0, _utils.validateType)("FlowType"), + value: (0, _utils.validateType)("FlowType"), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +(0, _utils.default)("ObjectTypeProperty", { + visitor: ["key", "value", "variance"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + key: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + value: (0, _utils.validateType)("FlowType"), + kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + variance: (0, _utils.validateOptionalType)("Variance"), + method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("ObjectTypeSpreadProperty", { + visitor: ["argument"], + aliases: ["Flow", "UserWhitespacable"], + fields: { + argument: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("OpaqueType", { + visitor: ["id", "typeParameters", "supertype", "impltype"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + supertype: (0, _utils.validateOptionalType)("FlowType"), + impltype: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("QualifiedTypeIdentifier", { + visitor: ["id", "qualification"], + aliases: ["Flow"], + fields: { + id: (0, _utils.validateType)("Identifier"), + qualification: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]) + } +}); +(0, _utils.default)("StringLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["Flow", "FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("string")) + } +}); +(0, _utils.default)("StringTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("SymbolTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("ThisTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("TupleTypeAnnotation", { + visitor: ["types"], + aliases: ["Flow", "FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("TypeofTypeAnnotation", { + visitor: ["argument"], + aliases: ["Flow", "FlowType"], + fields: { + argument: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("TypeAlias", { + visitor: ["id", "typeParameters", "right"], + aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + right: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("TypeAnnotation", { + aliases: ["Flow"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("TypeCastExpression", { + visitor: ["expression", "typeAnnotation"], + aliases: ["Flow", "ExpressionWrapper", "Expression"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeAnnotation: (0, _utils.validateType)("TypeAnnotation") + } +}); +(0, _utils.default)("TypeParameter", { + aliases: ["Flow"], + visitor: ["bound", "default", "variance"], + fields: { + name: (0, _utils.validate)((0, _utils.assertValueType)("string")), + bound: (0, _utils.validateOptionalType)("TypeAnnotation"), + default: (0, _utils.validateOptionalType)("FlowType"), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +(0, _utils.default)("TypeParameterDeclaration", { + aliases: ["Flow"], + visitor: ["params"], + fields: { + params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter")) + } +}); +(0, _utils.default)("TypeParameterInstantiation", { + aliases: ["Flow"], + visitor: ["params"], + fields: { + params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("UnionTypeAnnotation", { + visitor: ["types"], + aliases: ["Flow", "FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +(0, _utils.default)("Variance", { + aliases: ["Flow"], + builder: ["kind"], + fields: { + kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus")) + } +}); +(0, _utils.default)("VoidTypeAnnotation", { + aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] +}); +(0, _utils.default)("EnumDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "body"], + fields: { + id: (0, _utils.validateType)("Identifier"), + body: (0, _utils.validateType)(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"]) + } +}); +(0, _utils.default)("EnumBooleanBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + members: (0, _utils.validateArrayOfType)("EnumBooleanMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("EnumNumberBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + members: (0, _utils.validateArrayOfType)("EnumNumberMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("EnumStringBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + members: (0, _utils.validateArrayOfType)(["EnumStringMember", "EnumDefaultedMember"]), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("EnumSymbolBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +(0, _utils.default)("EnumBooleanMember", { + aliases: ["EnumMember"], + visitor: ["id"], + fields: { + id: (0, _utils.validateType)("Identifier"), + init: (0, _utils.validateType)("BooleanLiteral") + } +}); +(0, _utils.default)("EnumNumberMember", { + aliases: ["EnumMember"], + visitor: ["id", "init"], + fields: { + id: (0, _utils.validateType)("Identifier"), + init: (0, _utils.validateType)("NumericLiteral") + } +}); +(0, _utils.default)("EnumStringMember", { + aliases: ["EnumMember"], + visitor: ["id", "init"], + fields: { + id: (0, _utils.validateType)("Identifier"), + init: (0, _utils.validateType)("StringLiteral") + } +}); +(0, _utils.default)("EnumDefaultedMember", { + aliases: ["EnumMember"], + visitor: ["id"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +(0, _utils.default)("IndexedAccessType", { + visitor: ["objectType", "indexType"], + aliases: ["Flow", "FlowType"], + fields: { + objectType: (0, _utils.validateType)("FlowType"), + indexType: (0, _utils.validateType)("FlowType") + } +}); +(0, _utils.default)("OptionalIndexedAccessType", { + visitor: ["objectType", "indexType"], + aliases: ["Flow", "FlowType"], + fields: { + objectType: (0, _utils.validateType)("FlowType"), + indexType: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); + +/***/ }), + +/***/ 19090: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "VISITOR_KEYS", ({ + enumerable: true, + get: function () { + return _utils.VISITOR_KEYS; + } +})); +Object.defineProperty(exports, "ALIAS_KEYS", ({ + enumerable: true, + get: function () { + return _utils.ALIAS_KEYS; + } +})); +Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", ({ + enumerable: true, + get: function () { + return _utils.FLIPPED_ALIAS_KEYS; + } +})); +Object.defineProperty(exports, "NODE_FIELDS", ({ + enumerable: true, + get: function () { + return _utils.NODE_FIELDS; + } +})); +Object.defineProperty(exports, "BUILDER_KEYS", ({ + enumerable: true, + get: function () { + return _utils.BUILDER_KEYS; + } +})); +Object.defineProperty(exports, "DEPRECATED_KEYS", ({ + enumerable: true, + get: function () { + return _utils.DEPRECATED_KEYS; + } +})); +Object.defineProperty(exports, "NODE_PARENT_VALIDATIONS", ({ + enumerable: true, + get: function () { + return _utils.NODE_PARENT_VALIDATIONS; + } +})); +Object.defineProperty(exports, "PLACEHOLDERS", ({ + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS; + } +})); +Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", ({ + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS_ALIAS; + } +})); +Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", ({ + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS; + } +})); +exports.TYPES = void 0; + +var _toFastProperties = __nccwpck_require__(88693); + +__nccwpck_require__(85210); + +__nccwpck_require__(56284); + +__nccwpck_require__(6472); + +__nccwpck_require__(3297); + +__nccwpck_require__(82697); + +__nccwpck_require__(39896); + +var _utils = __nccwpck_require__(82426); + +var _placeholders = __nccwpck_require__(97339); + +_toFastProperties(_utils.VISITOR_KEYS); + +_toFastProperties(_utils.ALIAS_KEYS); + +_toFastProperties(_utils.FLIPPED_ALIAS_KEYS); + +_toFastProperties(_utils.NODE_FIELDS); + +_toFastProperties(_utils.BUILDER_KEYS); + +_toFastProperties(_utils.DEPRECATED_KEYS); + +_toFastProperties(_placeholders.PLACEHOLDERS_ALIAS); + +_toFastProperties(_placeholders.PLACEHOLDERS_FLIPPED_ALIAS); + +const TYPES = Object.keys(_utils.VISITOR_KEYS).concat(Object.keys(_utils.FLIPPED_ALIAS_KEYS)).concat(Object.keys(_utils.DEPRECATED_KEYS)); +exports.TYPES = TYPES; + +/***/ }), + +/***/ 6472: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var _utils = __nccwpck_require__(82426); + +(0, _utils.default)("JSXAttribute", { + visitor: ["name", "value"], + aliases: ["JSX", "Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName") + }, + value: { + optional: true, + validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer") + } + } +}); +(0, _utils.default)("JSXClosingElement", { + visitor: ["name"], + aliases: ["JSX", "Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") + } + } +}); +(0, _utils.default)("JSXElement", { + builder: ["openingElement", "closingElement", "children", "selfClosing"], + visitor: ["openingElement", "children", "closingElement"], + aliases: ["JSX", "Immutable", "Expression"], + fields: { + openingElement: { + validate: (0, _utils.assertNodeType)("JSXOpeningElement") + }, + closingElement: { + optional: true, + validate: (0, _utils.assertNodeType)("JSXClosingElement") + }, + children: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) + }, + selfClosing: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + } +}); +(0, _utils.default)("JSXEmptyExpression", { + aliases: ["JSX"] +}); +(0, _utils.default)("JSXExpressionContainer", { + visitor: ["expression"], + aliases: ["JSX", "Immutable"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression") + } + } +}); +(0, _utils.default)("JSXSpreadChild", { + visitor: ["expression"], + aliases: ["JSX", "Immutable"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("JSXIdentifier", { + builder: ["name"], + aliases: ["JSX"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("JSXMemberExpression", { + visitor: ["object", "property"], + aliases: ["JSX"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier") + }, + property: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + } + } +}); +(0, _utils.default)("JSXNamespacedName", { + visitor: ["namespace", "name"], + aliases: ["JSX"], + fields: { + namespace: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + }, + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + } + } +}); +(0, _utils.default)("JSXOpeningElement", { + builder: ["name", "attributes", "selfClosing"], + visitor: ["name", "attributes"], + aliases: ["JSX", "Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") + }, + selfClosing: { + default: false + }, + attributes: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXAttribute", "JSXSpreadAttribute"))) + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + } + } +}); +(0, _utils.default)("JSXSpreadAttribute", { + visitor: ["argument"], + aliases: ["JSX"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +(0, _utils.default)("JSXText", { + aliases: ["JSX", "Immutable"], + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +(0, _utils.default)("JSXFragment", { + builder: ["openingFragment", "closingFragment", "children"], + visitor: ["openingFragment", "children", "closingFragment"], + aliases: ["JSX", "Immutable", "Expression"], + fields: { + openingFragment: { + validate: (0, _utils.assertNodeType)("JSXOpeningFragment") + }, + closingFragment: { + validate: (0, _utils.assertNodeType)("JSXClosingFragment") + }, + children: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) + } + } +}); +(0, _utils.default)("JSXOpeningFragment", { + aliases: ["JSX", "Immutable"] +}); +(0, _utils.default)("JSXClosingFragment", { + aliases: ["JSX", "Immutable"] +}); + +/***/ }), + +/***/ 3297: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var _utils = __nccwpck_require__(82426); + +var _placeholders = __nccwpck_require__(97339); + +{ + (0, _utils.default)("Noop", { + visitor: [] + }); +} +(0, _utils.default)("Placeholder", { + visitor: [], + builder: ["expectedNode", "name"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + expectedNode: { + validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS) + } + } +}); +(0, _utils.default)("V8IntrinsicIdentifier", { + builder: ["name"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + } + } +}); + +/***/ }), + +/***/ 97339: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0; + +var _utils = __nccwpck_require__(82426); + +const PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"]; +exports.PLACEHOLDERS = PLACEHOLDERS; +const PLACEHOLDERS_ALIAS = { + Declaration: ["Statement"], + Pattern: ["PatternLike", "LVal"] +}; +exports.PLACEHOLDERS_ALIAS = PLACEHOLDERS_ALIAS; + +for (const type of PLACEHOLDERS) { + const alias = _utils.ALIAS_KEYS[type]; + if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias; +} + +const PLACEHOLDERS_FLIPPED_ALIAS = {}; +exports.PLACEHOLDERS_FLIPPED_ALIAS = PLACEHOLDERS_FLIPPED_ALIAS; +Object.keys(PLACEHOLDERS_ALIAS).forEach(type => { + PLACEHOLDERS_ALIAS[type].forEach(alias => { + if (!Object.hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) { + PLACEHOLDERS_FLIPPED_ALIAS[alias] = []; + } + + PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type); + }); +}); + +/***/ }), + +/***/ 39896: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var _utils = __nccwpck_require__(82426); + +var _core = __nccwpck_require__(85210); + +var _is = __nccwpck_require__(31334); + +const bool = (0, _utils.assertValueType)("boolean"); +const tSFunctionTypeAnnotationCommon = { + returnType: { + validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"), + optional: true + } +}; +(0, _utils.default)("TSParameterProperty", { + aliases: ["LVal"], + visitor: ["parameter"], + fields: { + accessibility: { + validate: (0, _utils.assertOneOf)("public", "private", "protected"), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + parameter: { + validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern") + }, + override: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + decorators: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), + optional: true + } + } +}); +(0, _utils.default)("TSDeclareFunction", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "params", "returnType"], + fields: Object.assign({}, _core.functionDeclarationCommon, tSFunctionTypeAnnotationCommon) +}); +(0, _utils.default)("TSDeclareMethod", { + visitor: ["decorators", "key", "typeParameters", "params", "returnType"], + fields: Object.assign({}, _core.classMethodOrDeclareMethodCommon, tSFunctionTypeAnnotationCommon) +}); +(0, _utils.default)("TSQualifiedName", { + aliases: ["TSEntityName"], + visitor: ["left", "right"], + fields: { + left: (0, _utils.validateType)("TSEntityName"), + right: (0, _utils.validateType)("Identifier") + } +}); +const signatureDeclarationCommon = { + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + parameters: (0, _utils.validateArrayOfType)(["Identifier", "RestElement"]), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") +}; +const callConstructSignatureDeclaration = { + aliases: ["TSTypeElement"], + visitor: ["typeParameters", "parameters", "typeAnnotation"], + fields: signatureDeclarationCommon +}; +(0, _utils.default)("TSCallSignatureDeclaration", callConstructSignatureDeclaration); +(0, _utils.default)("TSConstructSignatureDeclaration", callConstructSignatureDeclaration); +const namedTypeElementCommon = { + key: (0, _utils.validateType)("Expression"), + computed: (0, _utils.validate)(bool), + optional: (0, _utils.validateOptional)(bool) +}; +(0, _utils.default)("TSPropertySignature", { + aliases: ["TSTypeElement"], + visitor: ["key", "typeAnnotation", "initializer"], + fields: Object.assign({}, namedTypeElementCommon, { + readonly: (0, _utils.validateOptional)(bool), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), + initializer: (0, _utils.validateOptionalType)("Expression"), + kind: { + validate: (0, _utils.assertOneOf)("get", "set") + } + }) +}); +(0, _utils.default)("TSMethodSignature", { + aliases: ["TSTypeElement"], + visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], + fields: Object.assign({}, signatureDeclarationCommon, namedTypeElementCommon, { + kind: { + validate: (0, _utils.assertOneOf)("method", "get", "set") + } + }) +}); +(0, _utils.default)("TSIndexSignature", { + aliases: ["TSTypeElement"], + visitor: ["parameters", "typeAnnotation"], + fields: { + readonly: (0, _utils.validateOptional)(bool), + static: (0, _utils.validateOptional)(bool), + parameters: (0, _utils.validateArrayOfType)("Identifier"), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") + } +}); +const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"]; + +for (const type of tsKeywordTypes) { + (0, _utils.default)(type, { + aliases: ["TSType", "TSBaseType"], + visitor: [], + fields: {} + }); +} + +(0, _utils.default)("TSThisType", { + aliases: ["TSType", "TSBaseType"], + visitor: [], + fields: {} +}); +const fnOrCtrBase = { + aliases: ["TSType"], + visitor: ["typeParameters", "parameters", "typeAnnotation"] +}; +(0, _utils.default)("TSFunctionType", Object.assign({}, fnOrCtrBase, { + fields: signatureDeclarationCommon +})); +(0, _utils.default)("TSConstructorType", Object.assign({}, fnOrCtrBase, { + fields: Object.assign({}, signatureDeclarationCommon, { + abstract: (0, _utils.validateOptional)(bool) + }) +})); +(0, _utils.default)("TSTypeReference", { + aliases: ["TSType"], + visitor: ["typeName", "typeParameters"], + fields: { + typeName: (0, _utils.validateType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +(0, _utils.default)("TSTypePredicate", { + aliases: ["TSType"], + visitor: ["parameterName", "typeAnnotation"], + builder: ["parameterName", "typeAnnotation", "asserts"], + fields: { + parameterName: (0, _utils.validateType)(["Identifier", "TSThisType"]), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), + asserts: (0, _utils.validateOptional)(bool) + } +}); +(0, _utils.default)("TSTypeQuery", { + aliases: ["TSType"], + visitor: ["exprName"], + fields: { + exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"]) + } +}); +(0, _utils.default)("TSTypeLiteral", { + aliases: ["TSType"], + visitor: ["members"], + fields: { + members: (0, _utils.validateArrayOfType)("TSTypeElement") + } +}); +(0, _utils.default)("TSArrayType", { + aliases: ["TSType"], + visitor: ["elementType"], + fields: { + elementType: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSTupleType", { + aliases: ["TSType"], + visitor: ["elementTypes"], + fields: { + elementTypes: (0, _utils.validateArrayOfType)(["TSType", "TSNamedTupleMember"]) + } +}); +(0, _utils.default)("TSOptionalType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSRestType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSNamedTupleMember", { + visitor: ["label", "elementType"], + builder: ["label", "elementType", "optional"], + fields: { + label: (0, _utils.validateType)("Identifier"), + optional: { + validate: bool, + default: false + }, + elementType: (0, _utils.validateType)("TSType") + } +}); +const unionOrIntersection = { + aliases: ["TSType"], + visitor: ["types"], + fields: { + types: (0, _utils.validateArrayOfType)("TSType") + } +}; +(0, _utils.default)("TSUnionType", unionOrIntersection); +(0, _utils.default)("TSIntersectionType", unionOrIntersection); +(0, _utils.default)("TSConditionalType", { + aliases: ["TSType"], + visitor: ["checkType", "extendsType", "trueType", "falseType"], + fields: { + checkType: (0, _utils.validateType)("TSType"), + extendsType: (0, _utils.validateType)("TSType"), + trueType: (0, _utils.validateType)("TSType"), + falseType: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSInferType", { + aliases: ["TSType"], + visitor: ["typeParameter"], + fields: { + typeParameter: (0, _utils.validateType)("TSTypeParameter") + } +}); +(0, _utils.default)("TSParenthesizedType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSTypeOperator", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + operator: (0, _utils.validate)((0, _utils.assertValueType)("string")), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSIndexedAccessType", { + aliases: ["TSType"], + visitor: ["objectType", "indexType"], + fields: { + objectType: (0, _utils.validateType)("TSType"), + indexType: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSMappedType", { + aliases: ["TSType"], + visitor: ["typeParameter", "typeAnnotation", "nameType"], + fields: { + readonly: (0, _utils.validateOptional)(bool), + typeParameter: (0, _utils.validateType)("TSTypeParameter"), + optional: (0, _utils.validateOptional)(bool), + typeAnnotation: (0, _utils.validateOptionalType)("TSType"), + nameType: (0, _utils.validateOptionalType)("TSType") + } +}); +(0, _utils.default)("TSLiteralType", { + aliases: ["TSType", "TSBaseType"], + visitor: ["literal"], + fields: { + literal: { + validate: function () { + const unaryExpression = (0, _utils.assertNodeType)("NumericLiteral", "BigIntLiteral"); + const unaryOperator = (0, _utils.assertOneOf)("-"); + const literal = (0, _utils.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral"); + + function validator(parent, key, node) { + if ((0, _is.default)("UnaryExpression", node)) { + unaryOperator(node, "operator", node.operator); + unaryExpression(node, "argument", node.argument); + } else { + literal(parent, key, node); + } + } + + validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "UnaryExpression"]; + return validator; + }() + } + } +}); +(0, _utils.default)("TSExpressionWithTypeArguments", { + aliases: ["TSType"], + visitor: ["expression", "typeParameters"], + fields: { + expression: (0, _utils.validateType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +(0, _utils.default)("TSInterfaceDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "extends", "body"], + fields: { + declare: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")), + body: (0, _utils.validateType)("TSInterfaceBody") + } +}); +(0, _utils.default)("TSInterfaceBody", { + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("TSTypeElement") + } +}); +(0, _utils.default)("TSTypeAliasDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "typeAnnotation"], + fields: { + declare: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSAsExpression", { + aliases: ["Expression"], + visitor: ["expression", "typeAnnotation"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +(0, _utils.default)("TSTypeAssertion", { + aliases: ["Expression"], + visitor: ["typeAnnotation", "expression"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType"), + expression: (0, _utils.validateType)("Expression") + } +}); +(0, _utils.default)("TSEnumDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "members"], + fields: { + declare: (0, _utils.validateOptional)(bool), + const: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + members: (0, _utils.validateArrayOfType)("TSEnumMember"), + initializer: (0, _utils.validateOptionalType)("Expression") + } +}); +(0, _utils.default)("TSEnumMember", { + visitor: ["id", "initializer"], + fields: { + id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + initializer: (0, _utils.validateOptionalType)("Expression") + } +}); +(0, _utils.default)("TSModuleDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "body"], + fields: { + declare: (0, _utils.validateOptional)(bool), + global: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), + body: (0, _utils.validateType)(["TSModuleBlock", "TSModuleDeclaration"]) + } +}); +(0, _utils.default)("TSModuleBlock", { + aliases: ["Scopable", "Block", "BlockParent"], + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("Statement") + } +}); +(0, _utils.default)("TSImportType", { + aliases: ["TSType"], + visitor: ["argument", "qualifier", "typeParameters"], + fields: { + argument: (0, _utils.validateType)("StringLiteral"), + qualifier: (0, _utils.validateOptionalType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +(0, _utils.default)("TSImportEqualsDeclaration", { + aliases: ["Statement"], + visitor: ["id", "moduleReference"], + fields: { + isExport: (0, _utils.validate)(bool), + id: (0, _utils.validateType)("Identifier"), + moduleReference: (0, _utils.validateType)(["TSEntityName", "TSExternalModuleReference"]), + importKind: { + validate: (0, _utils.assertOneOf)("type", "value"), + optional: true + } + } +}); +(0, _utils.default)("TSExternalModuleReference", { + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("StringLiteral") + } +}); +(0, _utils.default)("TSNonNullExpression", { + aliases: ["Expression"], + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("Expression") + } +}); +(0, _utils.default)("TSExportAssignment", { + aliases: ["Statement"], + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("Expression") + } +}); +(0, _utils.default)("TSNamespaceExportDeclaration", { + aliases: ["Statement"], + visitor: ["id"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +(0, _utils.default)("TSTypeAnnotation", { + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TSType") + } + } +}); +(0, _utils.default)("TSTypeParameterInstantiation", { + visitor: ["params"], + fields: { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType"))) + } + } +}); +(0, _utils.default)("TSTypeParameterDeclaration", { + visitor: ["params"], + fields: { + params: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSTypeParameter"))) + } + } +}); +(0, _utils.default)("TSTypeParameter", { + builder: ["constraint", "default", "name"], + visitor: ["constraint", "default"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + }, + constraint: { + validate: (0, _utils.assertNodeType)("TSType"), + optional: true + }, + default: { + validate: (0, _utils.assertNodeType)("TSType"), + optional: true + } + } +}); + +/***/ }), + +/***/ 82426: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.validate = validate; +exports.typeIs = typeIs; +exports.validateType = validateType; +exports.validateOptional = validateOptional; +exports.validateOptionalType = validateOptionalType; +exports.arrayOf = arrayOf; +exports.arrayOfType = arrayOfType; +exports.validateArrayOfType = validateArrayOfType; +exports.assertEach = assertEach; +exports.assertOneOf = assertOneOf; +exports.assertNodeType = assertNodeType; +exports.assertNodeOrValueType = assertNodeOrValueType; +exports.assertValueType = assertValueType; +exports.assertShape = assertShape; +exports.assertOptionalChainStart = assertOptionalChainStart; +exports.chain = chain; +exports["default"] = defineType; +exports.NODE_PARENT_VALIDATIONS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = void 0; + +var _is = __nccwpck_require__(31334); + +var _validate = __nccwpck_require__(4432); + +const VISITOR_KEYS = {}; +exports.VISITOR_KEYS = VISITOR_KEYS; +const ALIAS_KEYS = {}; +exports.ALIAS_KEYS = ALIAS_KEYS; +const FLIPPED_ALIAS_KEYS = {}; +exports.FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS; +const NODE_FIELDS = {}; +exports.NODE_FIELDS = NODE_FIELDS; +const BUILDER_KEYS = {}; +exports.BUILDER_KEYS = BUILDER_KEYS; +const DEPRECATED_KEYS = {}; +exports.DEPRECATED_KEYS = DEPRECATED_KEYS; +const NODE_PARENT_VALIDATIONS = {}; +exports.NODE_PARENT_VALIDATIONS = NODE_PARENT_VALIDATIONS; + +function getType(val) { + if (Array.isArray(val)) { + return "array"; + } else if (val === null) { + return "null"; + } else { + return typeof val; + } +} + +function validate(validate) { + return { + validate + }; +} + +function typeIs(typeName) { + return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType(...typeName); +} + +function validateType(typeName) { + return validate(typeIs(typeName)); +} + +function validateOptional(validate) { + return { + validate, + optional: true + }; +} + +function validateOptionalType(typeName) { + return { + validate: typeIs(typeName), + optional: true + }; +} + +function arrayOf(elementType) { + return chain(assertValueType("array"), assertEach(elementType)); +} + +function arrayOfType(typeName) { + return arrayOf(typeIs(typeName)); +} + +function validateArrayOfType(typeName) { + return validate(arrayOfType(typeName)); +} + +function assertEach(callback) { + function validator(node, key, val) { + if (!Array.isArray(val)) return; + + for (let i = 0; i < val.length; i++) { + const subkey = `${key}[${i}]`; + const v = val[i]; + callback(node, subkey, v); + if (process.env.BABEL_TYPES_8_BREAKING) (0, _validate.validateChild)(node, subkey, v); + } + } + + validator.each = callback; + return validator; +} + +function assertOneOf(...values) { + function validate(node, key, val) { + if (values.indexOf(val) < 0) { + throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`); + } + } + + validate.oneOf = values; + return validate; +} + +function assertNodeType(...types) { + function validate(node, key, val) { + for (const type of types) { + if ((0, _is.default)(type, val)) { + (0, _validate.validateChild)(node, key, val); + return; + } + } + + throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`); + } + + validate.oneOfNodeTypes = types; + return validate; +} + +function assertNodeOrValueType(...types) { + function validate(node, key, val) { + for (const type of types) { + if (getType(val) === type || (0, _is.default)(type, val)) { + (0, _validate.validateChild)(node, key, val); + return; + } + } + + throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`); + } + + validate.oneOfNodeOrValueTypes = types; + return validate; +} + +function assertValueType(type) { + function validate(node, key, val) { + const valid = getType(val) === type; + + if (!valid) { + throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`); + } + } + + validate.type = type; + return validate; +} + +function assertShape(shape) { + function validate(node, key, val) { + const errors = []; + + for (const property of Object.keys(shape)) { + try { + (0, _validate.validateField)(node, property, val[property], shape[property]); + } catch (error) { + if (error instanceof TypeError) { + errors.push(error.message); + continue; + } + + throw error; + } + } + + if (errors.length) { + throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`); + } + } + + validate.shapeOf = shape; + return validate; +} + +function assertOptionalChainStart() { + function validate(node) { + var _current; + + let current = node; + + while (node) { + const { + type + } = current; + + if (type === "OptionalCallExpression") { + if (current.optional) return; + current = current.callee; + continue; + } + + if (type === "OptionalMemberExpression") { + if (current.optional) return; + current = current.object; + continue; + } + + break; + } + + throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`); + } + + return validate; +} + +function chain(...fns) { + function validate(...args) { + for (const fn of fns) { + fn(...args); + } + } + + validate.chainOf = fns; + + if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) { + throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`); + } + + return validate; +} + +const validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"]; +const validFieldKeys = ["default", "optional", "validate"]; + +function defineType(type, opts = {}) { + const inherits = opts.inherits && store[opts.inherits] || {}; + let fields = opts.fields; + + if (!fields) { + fields = {}; + + if (inherits.fields) { + const keys = Object.getOwnPropertyNames(inherits.fields); + + for (const key of keys) { + const field = inherits.fields[key]; + const def = field.default; + + if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") { + throw new Error("field defaults can only be primitives or empty arrays currently"); + } + + fields[key] = { + default: Array.isArray(def) ? [] : def, + optional: field.optional, + validate: field.validate + }; + } + } + } + + const visitor = opts.visitor || inherits.visitor || []; + const aliases = opts.aliases || inherits.aliases || []; + const builder = opts.builder || inherits.builder || opts.visitor || []; + + for (const k of Object.keys(opts)) { + if (validTypeOpts.indexOf(k) === -1) { + throw new Error(`Unknown type option "${k}" on ${type}`); + } + } + + if (opts.deprecatedAlias) { + DEPRECATED_KEYS[opts.deprecatedAlias] = type; + } + + for (const key of visitor.concat(builder)) { + fields[key] = fields[key] || {}; + } + + for (const key of Object.keys(fields)) { + const field = fields[key]; + + if (field.default !== undefined && builder.indexOf(key) === -1) { + field.optional = true; + } + + if (field.default === undefined) { + field.default = null; + } else if (!field.validate && field.default != null) { + field.validate = assertValueType(getType(field.default)); + } + + for (const k of Object.keys(field)) { + if (validFieldKeys.indexOf(k) === -1) { + throw new Error(`Unknown field key "${k}" on ${type}.${key}`); + } + } + } + + VISITOR_KEYS[type] = opts.visitor = visitor; + BUILDER_KEYS[type] = opts.builder = builder; + NODE_FIELDS[type] = opts.fields = fields; + ALIAS_KEYS[type] = opts.aliases = aliases; + aliases.forEach(alias => { + FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || []; + FLIPPED_ALIAS_KEYS[alias].push(type); + }); + + if (opts.validate) { + NODE_PARENT_VALIDATIONS[type] = opts.validate; + } + + store[type] = opts; +} + +const store = {}; + +/***/ }), + +/***/ 24479: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + react: true, + assertNode: true, + createTypeAnnotationBasedOnTypeof: true, + createUnionTypeAnnotation: true, + createFlowUnionType: true, + createTSUnionType: true, + cloneNode: true, + clone: true, + cloneDeep: true, + cloneDeepWithoutLoc: true, + cloneWithoutLoc: true, + addComment: true, + addComments: true, + inheritInnerComments: true, + inheritLeadingComments: true, + inheritsComments: true, + inheritTrailingComments: true, + removeComments: true, + ensureBlock: true, + toBindingIdentifierName: true, + toBlock: true, + toComputedKey: true, + toExpression: true, + toIdentifier: true, + toKeyAlias: true, + toSequenceExpression: true, + toStatement: true, + valueToNode: true, + appendToMemberExpression: true, + inherits: true, + prependToMemberExpression: true, + removeProperties: true, + removePropertiesDeep: true, + removeTypeDuplicates: true, + getBindingIdentifiers: true, + getOuterBindingIdentifiers: true, + traverse: true, + traverseFast: true, + shallowEqual: true, + is: true, + isBinding: true, + isBlockScoped: true, + isImmutable: true, + isLet: true, + isNode: true, + isNodesEquivalent: true, + isPlaceholderType: true, + isReferenced: true, + isScope: true, + isSpecifierDefault: true, + isType: true, + isValidES3Identifier: true, + isValidIdentifier: true, + isVar: true, + matchesPattern: true, + validate: true, + buildMatchMemberExpression: true +}; +Object.defineProperty(exports, "assertNode", ({ + enumerable: true, + get: function () { + return _assertNode.default; + } +})); +Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", ({ + enumerable: true, + get: function () { + return _createTypeAnnotationBasedOnTypeof.default; + } +})); +Object.defineProperty(exports, "createUnionTypeAnnotation", ({ + enumerable: true, + get: function () { + return _createFlowUnionType.default; + } +})); +Object.defineProperty(exports, "createFlowUnionType", ({ + enumerable: true, + get: function () { + return _createFlowUnionType.default; + } +})); +Object.defineProperty(exports, "createTSUnionType", ({ + enumerable: true, + get: function () { + return _createTSUnionType.default; + } +})); +Object.defineProperty(exports, "cloneNode", ({ + enumerable: true, + get: function () { + return _cloneNode.default; + } +})); +Object.defineProperty(exports, "clone", ({ + enumerable: true, + get: function () { + return _clone.default; + } +})); +Object.defineProperty(exports, "cloneDeep", ({ + enumerable: true, + get: function () { + return _cloneDeep.default; + } +})); +Object.defineProperty(exports, "cloneDeepWithoutLoc", ({ + enumerable: true, + get: function () { + return _cloneDeepWithoutLoc.default; + } +})); +Object.defineProperty(exports, "cloneWithoutLoc", ({ + enumerable: true, + get: function () { + return _cloneWithoutLoc.default; + } +})); +Object.defineProperty(exports, "addComment", ({ + enumerable: true, + get: function () { + return _addComment.default; + } +})); +Object.defineProperty(exports, "addComments", ({ + enumerable: true, + get: function () { + return _addComments.default; + } +})); +Object.defineProperty(exports, "inheritInnerComments", ({ + enumerable: true, + get: function () { + return _inheritInnerComments.default; + } +})); +Object.defineProperty(exports, "inheritLeadingComments", ({ + enumerable: true, + get: function () { + return _inheritLeadingComments.default; + } +})); +Object.defineProperty(exports, "inheritsComments", ({ + enumerable: true, + get: function () { + return _inheritsComments.default; + } +})); +Object.defineProperty(exports, "inheritTrailingComments", ({ + enumerable: true, + get: function () { + return _inheritTrailingComments.default; + } +})); +Object.defineProperty(exports, "removeComments", ({ + enumerable: true, + get: function () { + return _removeComments.default; + } +})); +Object.defineProperty(exports, "ensureBlock", ({ + enumerable: true, + get: function () { + return _ensureBlock.default; + } +})); +Object.defineProperty(exports, "toBindingIdentifierName", ({ + enumerable: true, + get: function () { + return _toBindingIdentifierName.default; + } +})); +Object.defineProperty(exports, "toBlock", ({ + enumerable: true, + get: function () { + return _toBlock.default; + } +})); +Object.defineProperty(exports, "toComputedKey", ({ + enumerable: true, + get: function () { + return _toComputedKey.default; + } +})); +Object.defineProperty(exports, "toExpression", ({ + enumerable: true, + get: function () { + return _toExpression.default; + } +})); +Object.defineProperty(exports, "toIdentifier", ({ + enumerable: true, + get: function () { + return _toIdentifier.default; + } +})); +Object.defineProperty(exports, "toKeyAlias", ({ + enumerable: true, + get: function () { + return _toKeyAlias.default; + } +})); +Object.defineProperty(exports, "toSequenceExpression", ({ + enumerable: true, + get: function () { + return _toSequenceExpression.default; + } +})); +Object.defineProperty(exports, "toStatement", ({ + enumerable: true, + get: function () { + return _toStatement.default; + } +})); +Object.defineProperty(exports, "valueToNode", ({ + enumerable: true, + get: function () { + return _valueToNode.default; + } +})); +Object.defineProperty(exports, "appendToMemberExpression", ({ + enumerable: true, + get: function () { + return _appendToMemberExpression.default; + } +})); +Object.defineProperty(exports, "inherits", ({ + enumerable: true, + get: function () { + return _inherits.default; + } +})); +Object.defineProperty(exports, "prependToMemberExpression", ({ + enumerable: true, + get: function () { + return _prependToMemberExpression.default; + } +})); +Object.defineProperty(exports, "removeProperties", ({ + enumerable: true, + get: function () { + return _removeProperties.default; + } +})); +Object.defineProperty(exports, "removePropertiesDeep", ({ + enumerable: true, + get: function () { + return _removePropertiesDeep.default; + } +})); +Object.defineProperty(exports, "removeTypeDuplicates", ({ + enumerable: true, + get: function () { + return _removeTypeDuplicates.default; + } +})); +Object.defineProperty(exports, "getBindingIdentifiers", ({ + enumerable: true, + get: function () { + return _getBindingIdentifiers.default; + } +})); +Object.defineProperty(exports, "getOuterBindingIdentifiers", ({ + enumerable: true, + get: function () { + return _getOuterBindingIdentifiers.default; + } +})); +Object.defineProperty(exports, "traverse", ({ + enumerable: true, + get: function () { + return _traverse.default; + } +})); +Object.defineProperty(exports, "traverseFast", ({ + enumerable: true, + get: function () { + return _traverseFast.default; + } +})); +Object.defineProperty(exports, "shallowEqual", ({ + enumerable: true, + get: function () { + return _shallowEqual.default; + } +})); +Object.defineProperty(exports, "is", ({ + enumerable: true, + get: function () { + return _is.default; + } +})); +Object.defineProperty(exports, "isBinding", ({ + enumerable: true, + get: function () { + return _isBinding.default; + } +})); +Object.defineProperty(exports, "isBlockScoped", ({ + enumerable: true, + get: function () { + return _isBlockScoped.default; + } +})); +Object.defineProperty(exports, "isImmutable", ({ + enumerable: true, + get: function () { + return _isImmutable.default; + } +})); +Object.defineProperty(exports, "isLet", ({ + enumerable: true, + get: function () { + return _isLet.default; + } +})); +Object.defineProperty(exports, "isNode", ({ + enumerable: true, + get: function () { + return _isNode.default; + } +})); +Object.defineProperty(exports, "isNodesEquivalent", ({ + enumerable: true, + get: function () { + return _isNodesEquivalent.default; + } +})); +Object.defineProperty(exports, "isPlaceholderType", ({ + enumerable: true, + get: function () { + return _isPlaceholderType.default; + } +})); +Object.defineProperty(exports, "isReferenced", ({ + enumerable: true, + get: function () { + return _isReferenced.default; + } +})); +Object.defineProperty(exports, "isScope", ({ + enumerable: true, + get: function () { + return _isScope.default; + } +})); +Object.defineProperty(exports, "isSpecifierDefault", ({ + enumerable: true, + get: function () { + return _isSpecifierDefault.default; + } +})); +Object.defineProperty(exports, "isType", ({ + enumerable: true, + get: function () { + return _isType.default; + } +})); +Object.defineProperty(exports, "isValidES3Identifier", ({ + enumerable: true, + get: function () { + return _isValidES3Identifier.default; + } +})); +Object.defineProperty(exports, "isValidIdentifier", ({ + enumerable: true, + get: function () { + return _isValidIdentifier.default; + } +})); +Object.defineProperty(exports, "isVar", ({ + enumerable: true, + get: function () { + return _isVar.default; + } +})); +Object.defineProperty(exports, "matchesPattern", ({ + enumerable: true, + get: function () { + return _matchesPattern.default; + } +})); +Object.defineProperty(exports, "validate", ({ + enumerable: true, + get: function () { + return _validate.default; + } +})); +Object.defineProperty(exports, "buildMatchMemberExpression", ({ + enumerable: true, + get: function () { + return _buildMatchMemberExpression.default; + } +})); +exports.react = void 0; + +var _isReactComponent = __nccwpck_require__(91982); + +var _isCompatTag = __nccwpck_require__(31569); + +var _buildChildren = __nccwpck_require__(72259); + +var _assertNode = __nccwpck_require__(98162); + +var _generated = __nccwpck_require__(93333); + +Object.keys(_generated).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _generated[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated[key]; + } + }); +}); + +var _createTypeAnnotationBasedOnTypeof = __nccwpck_require__(7112); + +var _createFlowUnionType = __nccwpck_require__(53598); + +var _createTSUnionType = __nccwpck_require__(69114); + +var _generated2 = __nccwpck_require__(10758); + +Object.keys(_generated2).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _generated2[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated2[key]; + } + }); +}); + +var _uppercase = __nccwpck_require__(41665); + +Object.keys(_uppercase).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _uppercase[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _uppercase[key]; + } + }); +}); + +var _cloneNode = __nccwpck_require__(66479); + +var _clone = __nccwpck_require__(39827); + +var _cloneDeep = __nccwpck_require__(68567); + +var _cloneDeepWithoutLoc = __nccwpck_require__(33298); + +var _cloneWithoutLoc = __nccwpck_require__(36087); + +var _addComment = __nccwpck_require__(73952); + +var _addComments = __nccwpck_require__(27032); + +var _inheritInnerComments = __nccwpck_require__(62666); + +var _inheritLeadingComments = __nccwpck_require__(47158); + +var _inheritsComments = __nccwpck_require__(41832); + +var _inheritTrailingComments = __nccwpck_require__(75225); + +var _removeComments = __nccwpck_require__(53755); + +var _generated3 = __nccwpck_require__(86441); + +Object.keys(_generated3).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _generated3[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated3[key]; + } + }); +}); + +var _constants = __nccwpck_require__(90514); + +Object.keys(_constants).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _constants[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _constants[key]; + } + }); +}); + +var _ensureBlock = __nccwpck_require__(32938); + +var _toBindingIdentifierName = __nccwpck_require__(45099); + +var _toBlock = __nccwpck_require__(17300); + +var _toComputedKey = __nccwpck_require__(52828); + +var _toExpression = __nccwpck_require__(22628); + +var _toIdentifier = __nccwpck_require__(62910); + +var _toKeyAlias = __nccwpck_require__(89099); + +var _toSequenceExpression = __nccwpck_require__(67455); + +var _toStatement = __nccwpck_require__(13198); + +var _valueToNode = __nccwpck_require__(17411); + +var _definitions = __nccwpck_require__(19090); + +Object.keys(_definitions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _definitions[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _definitions[key]; + } + }); +}); + +var _appendToMemberExpression = __nccwpck_require__(49016); + +var _inherits = __nccwpck_require__(88713); + +var _prependToMemberExpression = __nccwpck_require__(68411); + +var _removeProperties = __nccwpck_require__(78814); + +var _removePropertiesDeep = __nccwpck_require__(83983); + +var _removeTypeDuplicates = __nccwpck_require__(30036); + +var _getBindingIdentifiers = __nccwpck_require__(80805); + +var _getOuterBindingIdentifiers = __nccwpck_require__(20844); + +var _traverse = __nccwpck_require__(36862); + +Object.keys(_traverse).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _traverse[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _traverse[key]; + } + }); +}); + +var _traverseFast = __nccwpck_require__(53139); + +var _shallowEqual = __nccwpck_require__(56522); + +var _is = __nccwpck_require__(31334); + +var _isBinding = __nccwpck_require__(71743); + +var _isBlockScoped = __nccwpck_require__(64602); + +var _isImmutable = __nccwpck_require__(88817); + +var _isLet = __nccwpck_require__(44376); + +var _isNode = __nccwpck_require__(46832); + +var _isNodesEquivalent = __nccwpck_require__(31439); + +var _isPlaceholderType = __nccwpck_require__(2853); + +var _isReferenced = __nccwpck_require__(20570); + +var _isScope = __nccwpck_require__(21748); + +var _isSpecifierDefault = __nccwpck_require__(6152); + +var _isType = __nccwpck_require__(90179); + +var _isValidES3Identifier = __nccwpck_require__(71684); + +var _isValidIdentifier = __nccwpck_require__(98557); + +var _isVar = __nccwpck_require__(49992); + +var _matchesPattern = __nccwpck_require__(49234); + +var _validate = __nccwpck_require__(4432); + +var _buildMatchMemberExpression = __nccwpck_require__(48072); + +var _generated4 = __nccwpck_require__(52047); + +Object.keys(_generated4).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _generated4[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated4[key]; + } + }); +}); + +var _generated5 = __nccwpck_require__(64373); + +Object.keys(_generated5).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _generated5[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _generated5[key]; + } + }); +}); +const react = { + isReactComponent: _isReactComponent.default, + isCompatTag: _isCompatTag.default, + buildChildren: _buildChildren.default +}; +exports.react = react; + +/***/ }), + +/***/ 49016: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = appendToMemberExpression; + +var _generated = __nccwpck_require__(10758); + +function appendToMemberExpression(member, append, computed = false) { + member.object = (0, _generated.memberExpression)(member.object, member.property, member.computed); + member.property = append; + member.computed = !!computed; + return member; +} + +/***/ }), + +/***/ 30036: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeTypeDuplicates; + +var _generated = __nccwpck_require__(52047); + +function getQualifiedName(node) { + return (0, _generated.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`; +} + +function removeTypeDuplicates(nodes) { + const generics = {}; + const bases = {}; + const typeGroups = []; + const types = []; + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + + if (types.indexOf(node) >= 0) { + continue; + } + + if ((0, _generated.isAnyTypeAnnotation)(node)) { + return [node]; + } + + if ((0, _generated.isFlowBaseAnnotation)(node)) { + bases[node.type] = node; + continue; + } + + if ((0, _generated.isUnionTypeAnnotation)(node)) { + if (typeGroups.indexOf(node.types) < 0) { + nodes = nodes.concat(node.types); + typeGroups.push(node.types); + } + + continue; + } + + if ((0, _generated.isGenericTypeAnnotation)(node)) { + const name = getQualifiedName(node.id); + + if (generics[name]) { + let existing = generics[name]; + + if (existing.typeParameters) { + if (node.typeParameters) { + existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params)); + } + } else { + existing = node.typeParameters; + } + } else { + generics[name] = node; + } + + continue; + } + + types.push(node); + } + + for (const type of Object.keys(bases)) { + types.push(bases[type]); + } + + for (const name of Object.keys(generics)) { + types.push(generics[name]); + } + + return types; +} + +/***/ }), + +/***/ 88713: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inherits; + +var _constants = __nccwpck_require__(90514); + +var _inheritsComments = __nccwpck_require__(41832); + +function inherits(child, parent) { + if (!child || !parent) return child; + + for (const key of _constants.INHERIT_KEYS.optional) { + if (child[key] == null) { + child[key] = parent[key]; + } + } + + for (const key of Object.keys(parent)) { + if (key[0] === "_" && key !== "__clone") child[key] = parent[key]; + } + + for (const key of _constants.INHERIT_KEYS.force) { + child[key] = parent[key]; + } + + (0, _inheritsComments.default)(child, parent); + return child; +} + +/***/ }), + +/***/ 68411: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = prependToMemberExpression; + +var _generated = __nccwpck_require__(10758); + +function prependToMemberExpression(member, prepend) { + member.object = (0, _generated.memberExpression)(prepend, member.object); + return member; +} + +/***/ }), + +/***/ 78814: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeProperties; + +var _constants = __nccwpck_require__(90514); + +const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"]; + +const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS); + +function removeProperties(node, opts = {}) { + const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS; + + for (const key of map) { + if (node[key] != null) node[key] = undefined; + } + + for (const key of Object.keys(node)) { + if (key[0] === "_" && node[key] != null) node[key] = undefined; + } + + const symbols = Object.getOwnPropertySymbols(node); + + for (const sym of symbols) { + node[sym] = null; + } +} + +/***/ }), + +/***/ 83983: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removePropertiesDeep; + +var _traverseFast = __nccwpck_require__(53139); + +var _removeProperties = __nccwpck_require__(78814); + +function removePropertiesDeep(tree, opts) { + (0, _traverseFast.default)(tree, _removeProperties.default, opts); + return tree; +} + +/***/ }), + +/***/ 6262: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeTypeDuplicates; + +var _generated = __nccwpck_require__(52047); + +function removeTypeDuplicates(nodes) { + const generics = {}; + const bases = {}; + const typeGroups = []; + const types = []; + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + + if (types.indexOf(node) >= 0) { + continue; + } + + if ((0, _generated.isTSAnyKeyword)(node)) { + return [node]; + } + + if ((0, _generated.isTSBaseType)(node)) { + bases[node.type] = node; + continue; + } + + if ((0, _generated.isTSUnionType)(node)) { + if (typeGroups.indexOf(node.types) < 0) { + nodes = nodes.concat(node.types); + typeGroups.push(node.types); + } + + continue; + } + + types.push(node); + } + + for (const type of Object.keys(bases)) { + types.push(bases[type]); + } + + for (const name of Object.keys(generics)) { + types.push(generics[name]); + } + + return types; +} + +/***/ }), + +/***/ 80805: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getBindingIdentifiers; + +var _generated = __nccwpck_require__(52047); + +function getBindingIdentifiers(node, duplicates, outerOnly) { + let search = [].concat(node); + const ids = Object.create(null); + + while (search.length) { + const id = search.shift(); + if (!id) continue; + const keys = getBindingIdentifiers.keys[id.type]; + + if ((0, _generated.isIdentifier)(id)) { + if (duplicates) { + const _ids = ids[id.name] = ids[id.name] || []; + + _ids.push(id); + } else { + ids[id.name] = id; + } + + continue; + } + + if ((0, _generated.isExportDeclaration)(id) && !(0, _generated.isExportAllDeclaration)(id)) { + if ((0, _generated.isDeclaration)(id.declaration)) { + search.push(id.declaration); + } + + continue; + } + + if (outerOnly) { + if ((0, _generated.isFunctionDeclaration)(id)) { + search.push(id.id); + continue; + } + + if ((0, _generated.isFunctionExpression)(id)) { + continue; + } + } + + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + + if (id[key]) { + search = search.concat(id[key]); + } + } + } + } + + return ids; +} + +getBindingIdentifiers.keys = { + DeclareClass: ["id"], + DeclareFunction: ["id"], + DeclareModule: ["id"], + DeclareVariable: ["id"], + DeclareInterface: ["id"], + DeclareTypeAlias: ["id"], + DeclareOpaqueType: ["id"], + InterfaceDeclaration: ["id"], + TypeAlias: ["id"], + OpaqueType: ["id"], + CatchClause: ["param"], + LabeledStatement: ["label"], + UnaryExpression: ["argument"], + AssignmentExpression: ["left"], + ImportSpecifier: ["local"], + ImportNamespaceSpecifier: ["local"], + ImportDefaultSpecifier: ["local"], + ImportDeclaration: ["specifiers"], + ExportSpecifier: ["exported"], + ExportNamespaceSpecifier: ["exported"], + ExportDefaultSpecifier: ["exported"], + FunctionDeclaration: ["id", "params"], + FunctionExpression: ["id", "params"], + ArrowFunctionExpression: ["params"], + ObjectMethod: ["params"], + ClassMethod: ["params"], + ForInStatement: ["left"], + ForOfStatement: ["left"], + ClassDeclaration: ["id"], + ClassExpression: ["id"], + RestElement: ["argument"], + UpdateExpression: ["argument"], + ObjectProperty: ["value"], + AssignmentPattern: ["left"], + ArrayPattern: ["elements"], + ObjectPattern: ["properties"], + VariableDeclaration: ["declarations"], + VariableDeclarator: ["id"] +}; + +/***/ }), + +/***/ 20844: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _getBindingIdentifiers = __nccwpck_require__(80805); + +var _default = getOuterBindingIdentifiers; +exports["default"] = _default; + +function getOuterBindingIdentifiers(node, duplicates) { + return (0, _getBindingIdentifiers.default)(node, duplicates, true); +} + +/***/ }), + +/***/ 36862: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = traverse; + +var _definitions = __nccwpck_require__(19090); + +function traverse(node, handlers, state) { + if (typeof handlers === "function") { + handlers = { + enter: handlers + }; + } + + const { + enter, + exit + } = handlers; + traverseSimpleImpl(node, enter, exit, state, []); +} + +function traverseSimpleImpl(node, enter, exit, state, ancestors) { + const keys = _definitions.VISITOR_KEYS[node.type]; + if (!keys) return; + if (enter) enter(node, ancestors, state); + + for (const key of keys) { + const subNode = node[key]; + + if (Array.isArray(subNode)) { + for (let i = 0; i < subNode.length; i++) { + const child = subNode[i]; + if (!child) continue; + ancestors.push({ + node, + key, + index: i + }); + traverseSimpleImpl(child, enter, exit, state, ancestors); + ancestors.pop(); + } + } else if (subNode) { + ancestors.push({ + node, + key + }); + traverseSimpleImpl(subNode, enter, exit, state, ancestors); + ancestors.pop(); + } + } + + if (exit) exit(node, ancestors, state); +} + +/***/ }), + +/***/ 53139: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = traverseFast; + +var _definitions = __nccwpck_require__(19090); + +function traverseFast(node, enter, opts) { + if (!node) return; + const keys = _definitions.VISITOR_KEYS[node.type]; + if (!keys) return; + opts = opts || {}; + enter(node, opts); + + for (const key of keys) { + const subNode = node[key]; + + if (Array.isArray(subNode)) { + for (const node of subNode) { + traverseFast(node, enter, opts); + } + } else { + traverseFast(subNode, enter, opts); + } + } +} + +/***/ }), + +/***/ 4335: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inherit; + +function inherit(key, child, parent) { + if (child && parent) { + child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean))); + } +} + +/***/ }), + +/***/ 46671: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cleanJSXElementLiteralChild; + +var _generated = __nccwpck_require__(10758); + +function cleanJSXElementLiteralChild(child, args) { + const lines = child.value.split(/\r\n|\n|\r/); + let lastNonEmptyLine = 0; + + for (let i = 0; i < lines.length; i++) { + if (lines[i].match(/[^ \t]/)) { + lastNonEmptyLine = i; + } + } + + let str = ""; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const isFirstLine = i === 0; + const isLastLine = i === lines.length - 1; + const isLastNonEmptyLine = i === lastNonEmptyLine; + let trimmedLine = line.replace(/\t/g, " "); + + if (!isFirstLine) { + trimmedLine = trimmedLine.replace(/^[ ]+/, ""); + } + + if (!isLastLine) { + trimmedLine = trimmedLine.replace(/[ ]+$/, ""); + } + + if (trimmedLine) { + if (!isLastNonEmptyLine) { + trimmedLine += " "; + } + + str += trimmedLine; + } + } + + if (str) args.push((0, _generated.stringLiteral)(str)); +} + +/***/ }), + +/***/ 56522: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = shallowEqual; + +function shallowEqual(actual, expected) { + const keys = Object.keys(expected); + + for (const key of keys) { + if (actual[key] !== expected[key]) { + return false; + } + } + + return true; +} + +/***/ }), + +/***/ 48072: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = buildMatchMemberExpression; + +var _matchesPattern = __nccwpck_require__(49234); + +function buildMatchMemberExpression(match, allowPartial) { + const parts = match.split("."); + return member => (0, _matchesPattern.default)(member, parts, allowPartial); +} + +/***/ }), + +/***/ 52047: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isArrayExpression = isArrayExpression; +exports.isAssignmentExpression = isAssignmentExpression; +exports.isBinaryExpression = isBinaryExpression; +exports.isInterpreterDirective = isInterpreterDirective; +exports.isDirective = isDirective; +exports.isDirectiveLiteral = isDirectiveLiteral; +exports.isBlockStatement = isBlockStatement; +exports.isBreakStatement = isBreakStatement; +exports.isCallExpression = isCallExpression; +exports.isCatchClause = isCatchClause; +exports.isConditionalExpression = isConditionalExpression; +exports.isContinueStatement = isContinueStatement; +exports.isDebuggerStatement = isDebuggerStatement; +exports.isDoWhileStatement = isDoWhileStatement; +exports.isEmptyStatement = isEmptyStatement; +exports.isExpressionStatement = isExpressionStatement; +exports.isFile = isFile; +exports.isForInStatement = isForInStatement; +exports.isForStatement = isForStatement; +exports.isFunctionDeclaration = isFunctionDeclaration; +exports.isFunctionExpression = isFunctionExpression; +exports.isIdentifier = isIdentifier; +exports.isIfStatement = isIfStatement; +exports.isLabeledStatement = isLabeledStatement; +exports.isStringLiteral = isStringLiteral; +exports.isNumericLiteral = isNumericLiteral; +exports.isNullLiteral = isNullLiteral; +exports.isBooleanLiteral = isBooleanLiteral; +exports.isRegExpLiteral = isRegExpLiteral; +exports.isLogicalExpression = isLogicalExpression; +exports.isMemberExpression = isMemberExpression; +exports.isNewExpression = isNewExpression; +exports.isProgram = isProgram; +exports.isObjectExpression = isObjectExpression; +exports.isObjectMethod = isObjectMethod; +exports.isObjectProperty = isObjectProperty; +exports.isRestElement = isRestElement; +exports.isReturnStatement = isReturnStatement; +exports.isSequenceExpression = isSequenceExpression; +exports.isParenthesizedExpression = isParenthesizedExpression; +exports.isSwitchCase = isSwitchCase; +exports.isSwitchStatement = isSwitchStatement; +exports.isThisExpression = isThisExpression; +exports.isThrowStatement = isThrowStatement; +exports.isTryStatement = isTryStatement; +exports.isUnaryExpression = isUnaryExpression; +exports.isUpdateExpression = isUpdateExpression; +exports.isVariableDeclaration = isVariableDeclaration; +exports.isVariableDeclarator = isVariableDeclarator; +exports.isWhileStatement = isWhileStatement; +exports.isWithStatement = isWithStatement; +exports.isAssignmentPattern = isAssignmentPattern; +exports.isArrayPattern = isArrayPattern; +exports.isArrowFunctionExpression = isArrowFunctionExpression; +exports.isClassBody = isClassBody; +exports.isClassExpression = isClassExpression; +exports.isClassDeclaration = isClassDeclaration; +exports.isExportAllDeclaration = isExportAllDeclaration; +exports.isExportDefaultDeclaration = isExportDefaultDeclaration; +exports.isExportNamedDeclaration = isExportNamedDeclaration; +exports.isExportSpecifier = isExportSpecifier; +exports.isForOfStatement = isForOfStatement; +exports.isImportDeclaration = isImportDeclaration; +exports.isImportDefaultSpecifier = isImportDefaultSpecifier; +exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier; +exports.isImportSpecifier = isImportSpecifier; +exports.isMetaProperty = isMetaProperty; +exports.isClassMethod = isClassMethod; +exports.isObjectPattern = isObjectPattern; +exports.isSpreadElement = isSpreadElement; +exports.isSuper = isSuper; +exports.isTaggedTemplateExpression = isTaggedTemplateExpression; +exports.isTemplateElement = isTemplateElement; +exports.isTemplateLiteral = isTemplateLiteral; +exports.isYieldExpression = isYieldExpression; +exports.isAwaitExpression = isAwaitExpression; +exports.isImport = isImport; +exports.isBigIntLiteral = isBigIntLiteral; +exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier; +exports.isOptionalMemberExpression = isOptionalMemberExpression; +exports.isOptionalCallExpression = isOptionalCallExpression; +exports.isClassProperty = isClassProperty; +exports.isClassPrivateProperty = isClassPrivateProperty; +exports.isClassPrivateMethod = isClassPrivateMethod; +exports.isPrivateName = isPrivateName; +exports.isAnyTypeAnnotation = isAnyTypeAnnotation; +exports.isArrayTypeAnnotation = isArrayTypeAnnotation; +exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation; +exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation; +exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation; +exports.isClassImplements = isClassImplements; +exports.isDeclareClass = isDeclareClass; +exports.isDeclareFunction = isDeclareFunction; +exports.isDeclareInterface = isDeclareInterface; +exports.isDeclareModule = isDeclareModule; +exports.isDeclareModuleExports = isDeclareModuleExports; +exports.isDeclareTypeAlias = isDeclareTypeAlias; +exports.isDeclareOpaqueType = isDeclareOpaqueType; +exports.isDeclareVariable = isDeclareVariable; +exports.isDeclareExportDeclaration = isDeclareExportDeclaration; +exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration; +exports.isDeclaredPredicate = isDeclaredPredicate; +exports.isExistsTypeAnnotation = isExistsTypeAnnotation; +exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation; +exports.isFunctionTypeParam = isFunctionTypeParam; +exports.isGenericTypeAnnotation = isGenericTypeAnnotation; +exports.isInferredPredicate = isInferredPredicate; +exports.isInterfaceExtends = isInterfaceExtends; +exports.isInterfaceDeclaration = isInterfaceDeclaration; +exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation; +exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation; +exports.isMixedTypeAnnotation = isMixedTypeAnnotation; +exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation; +exports.isNullableTypeAnnotation = isNullableTypeAnnotation; +exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation; +exports.isNumberTypeAnnotation = isNumberTypeAnnotation; +exports.isObjectTypeAnnotation = isObjectTypeAnnotation; +exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot; +exports.isObjectTypeCallProperty = isObjectTypeCallProperty; +exports.isObjectTypeIndexer = isObjectTypeIndexer; +exports.isObjectTypeProperty = isObjectTypeProperty; +exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty; +exports.isOpaqueType = isOpaqueType; +exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier; +exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation; +exports.isStringTypeAnnotation = isStringTypeAnnotation; +exports.isSymbolTypeAnnotation = isSymbolTypeAnnotation; +exports.isThisTypeAnnotation = isThisTypeAnnotation; +exports.isTupleTypeAnnotation = isTupleTypeAnnotation; +exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation; +exports.isTypeAlias = isTypeAlias; +exports.isTypeAnnotation = isTypeAnnotation; +exports.isTypeCastExpression = isTypeCastExpression; +exports.isTypeParameter = isTypeParameter; +exports.isTypeParameterDeclaration = isTypeParameterDeclaration; +exports.isTypeParameterInstantiation = isTypeParameterInstantiation; +exports.isUnionTypeAnnotation = isUnionTypeAnnotation; +exports.isVariance = isVariance; +exports.isVoidTypeAnnotation = isVoidTypeAnnotation; +exports.isEnumDeclaration = isEnumDeclaration; +exports.isEnumBooleanBody = isEnumBooleanBody; +exports.isEnumNumberBody = isEnumNumberBody; +exports.isEnumStringBody = isEnumStringBody; +exports.isEnumSymbolBody = isEnumSymbolBody; +exports.isEnumBooleanMember = isEnumBooleanMember; +exports.isEnumNumberMember = isEnumNumberMember; +exports.isEnumStringMember = isEnumStringMember; +exports.isEnumDefaultedMember = isEnumDefaultedMember; +exports.isIndexedAccessType = isIndexedAccessType; +exports.isOptionalIndexedAccessType = isOptionalIndexedAccessType; +exports.isJSXAttribute = isJSXAttribute; +exports.isJSXClosingElement = isJSXClosingElement; +exports.isJSXElement = isJSXElement; +exports.isJSXEmptyExpression = isJSXEmptyExpression; +exports.isJSXExpressionContainer = isJSXExpressionContainer; +exports.isJSXSpreadChild = isJSXSpreadChild; +exports.isJSXIdentifier = isJSXIdentifier; +exports.isJSXMemberExpression = isJSXMemberExpression; +exports.isJSXNamespacedName = isJSXNamespacedName; +exports.isJSXOpeningElement = isJSXOpeningElement; +exports.isJSXSpreadAttribute = isJSXSpreadAttribute; +exports.isJSXText = isJSXText; +exports.isJSXFragment = isJSXFragment; +exports.isJSXOpeningFragment = isJSXOpeningFragment; +exports.isJSXClosingFragment = isJSXClosingFragment; +exports.isNoop = isNoop; +exports.isPlaceholder = isPlaceholder; +exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier; +exports.isArgumentPlaceholder = isArgumentPlaceholder; +exports.isBindExpression = isBindExpression; +exports.isImportAttribute = isImportAttribute; +exports.isDecorator = isDecorator; +exports.isDoExpression = isDoExpression; +exports.isExportDefaultSpecifier = isExportDefaultSpecifier; +exports.isRecordExpression = isRecordExpression; +exports.isTupleExpression = isTupleExpression; +exports.isDecimalLiteral = isDecimalLiteral; +exports.isStaticBlock = isStaticBlock; +exports.isModuleExpression = isModuleExpression; +exports.isTopicReference = isTopicReference; +exports.isPipelineTopicExpression = isPipelineTopicExpression; +exports.isPipelineBareFunction = isPipelineBareFunction; +exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference; +exports.isTSParameterProperty = isTSParameterProperty; +exports.isTSDeclareFunction = isTSDeclareFunction; +exports.isTSDeclareMethod = isTSDeclareMethod; +exports.isTSQualifiedName = isTSQualifiedName; +exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration; +exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration; +exports.isTSPropertySignature = isTSPropertySignature; +exports.isTSMethodSignature = isTSMethodSignature; +exports.isTSIndexSignature = isTSIndexSignature; +exports.isTSAnyKeyword = isTSAnyKeyword; +exports.isTSBooleanKeyword = isTSBooleanKeyword; +exports.isTSBigIntKeyword = isTSBigIntKeyword; +exports.isTSIntrinsicKeyword = isTSIntrinsicKeyword; +exports.isTSNeverKeyword = isTSNeverKeyword; +exports.isTSNullKeyword = isTSNullKeyword; +exports.isTSNumberKeyword = isTSNumberKeyword; +exports.isTSObjectKeyword = isTSObjectKeyword; +exports.isTSStringKeyword = isTSStringKeyword; +exports.isTSSymbolKeyword = isTSSymbolKeyword; +exports.isTSUndefinedKeyword = isTSUndefinedKeyword; +exports.isTSUnknownKeyword = isTSUnknownKeyword; +exports.isTSVoidKeyword = isTSVoidKeyword; +exports.isTSThisType = isTSThisType; +exports.isTSFunctionType = isTSFunctionType; +exports.isTSConstructorType = isTSConstructorType; +exports.isTSTypeReference = isTSTypeReference; +exports.isTSTypePredicate = isTSTypePredicate; +exports.isTSTypeQuery = isTSTypeQuery; +exports.isTSTypeLiteral = isTSTypeLiteral; +exports.isTSArrayType = isTSArrayType; +exports.isTSTupleType = isTSTupleType; +exports.isTSOptionalType = isTSOptionalType; +exports.isTSRestType = isTSRestType; +exports.isTSNamedTupleMember = isTSNamedTupleMember; +exports.isTSUnionType = isTSUnionType; +exports.isTSIntersectionType = isTSIntersectionType; +exports.isTSConditionalType = isTSConditionalType; +exports.isTSInferType = isTSInferType; +exports.isTSParenthesizedType = isTSParenthesizedType; +exports.isTSTypeOperator = isTSTypeOperator; +exports.isTSIndexedAccessType = isTSIndexedAccessType; +exports.isTSMappedType = isTSMappedType; +exports.isTSLiteralType = isTSLiteralType; +exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments; +exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration; +exports.isTSInterfaceBody = isTSInterfaceBody; +exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration; +exports.isTSAsExpression = isTSAsExpression; +exports.isTSTypeAssertion = isTSTypeAssertion; +exports.isTSEnumDeclaration = isTSEnumDeclaration; +exports.isTSEnumMember = isTSEnumMember; +exports.isTSModuleDeclaration = isTSModuleDeclaration; +exports.isTSModuleBlock = isTSModuleBlock; +exports.isTSImportType = isTSImportType; +exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration; +exports.isTSExternalModuleReference = isTSExternalModuleReference; +exports.isTSNonNullExpression = isTSNonNullExpression; +exports.isTSExportAssignment = isTSExportAssignment; +exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration; +exports.isTSTypeAnnotation = isTSTypeAnnotation; +exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation; +exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration; +exports.isTSTypeParameter = isTSTypeParameter; +exports.isExpression = isExpression; +exports.isBinary = isBinary; +exports.isScopable = isScopable; +exports.isBlockParent = isBlockParent; +exports.isBlock = isBlock; +exports.isStatement = isStatement; +exports.isTerminatorless = isTerminatorless; +exports.isCompletionStatement = isCompletionStatement; +exports.isConditional = isConditional; +exports.isLoop = isLoop; +exports.isWhile = isWhile; +exports.isExpressionWrapper = isExpressionWrapper; +exports.isFor = isFor; +exports.isForXStatement = isForXStatement; +exports.isFunction = isFunction; +exports.isFunctionParent = isFunctionParent; +exports.isPureish = isPureish; +exports.isDeclaration = isDeclaration; +exports.isPatternLike = isPatternLike; +exports.isLVal = isLVal; +exports.isTSEntityName = isTSEntityName; +exports.isLiteral = isLiteral; +exports.isImmutable = isImmutable; +exports.isUserWhitespacable = isUserWhitespacable; +exports.isMethod = isMethod; +exports.isObjectMember = isObjectMember; +exports.isProperty = isProperty; +exports.isUnaryLike = isUnaryLike; +exports.isPattern = isPattern; +exports.isClass = isClass; +exports.isModuleDeclaration = isModuleDeclaration; +exports.isExportDeclaration = isExportDeclaration; +exports.isModuleSpecifier = isModuleSpecifier; +exports.isPrivate = isPrivate; +exports.isFlow = isFlow; +exports.isFlowType = isFlowType; +exports.isFlowBaseAnnotation = isFlowBaseAnnotation; +exports.isFlowDeclaration = isFlowDeclaration; +exports.isFlowPredicate = isFlowPredicate; +exports.isEnumBody = isEnumBody; +exports.isEnumMember = isEnumMember; +exports.isJSX = isJSX; +exports.isTSTypeElement = isTSTypeElement; +exports.isTSType = isTSType; +exports.isTSBaseType = isTSBaseType; +exports.isNumberLiteral = isNumberLiteral; +exports.isRegexLiteral = isRegexLiteral; +exports.isRestProperty = isRestProperty; +exports.isSpreadProperty = isSpreadProperty; + +var _shallowEqual = __nccwpck_require__(56522); + +function isArrayExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrayExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAssignmentExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AssignmentExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBinaryExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BinaryExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterpreterDirective(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterpreterDirective") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDirective(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Directive") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDirectiveLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DirectiveLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBlockStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BlockStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBreakStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BreakStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isCallExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "CallExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isCatchClause(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "CatchClause") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isConditionalExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ConditionalExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isContinueStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ContinueStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDebuggerStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DebuggerStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDoWhileStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DoWhileStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEmptyStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EmptyStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExpressionStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExpressionStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFile(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "File") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForInStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForInStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Identifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIfStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "IfStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLabeledStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "LabeledStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStringLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StringLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumericLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumericLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNullLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NullLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBooleanLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BooleanLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRegExpLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RegExpLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLogicalExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "LogicalExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMemberExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "MemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNewExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NewExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isProgram(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Program") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRestElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RestElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isReturnStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ReturnStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSequenceExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SequenceExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isParenthesizedExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ParenthesizedExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSwitchCase(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SwitchCase") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSwitchStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SwitchStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isThisExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ThisExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isThrowStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ThrowStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTryStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TryStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUnaryExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UnaryExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUpdateExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UpdateExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVariableDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "VariableDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVariableDeclarator(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "VariableDeclarator") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isWhileStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "WhileStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isWithStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "WithStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAssignmentPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AssignmentPattern") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArrayPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrayPattern") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArrowFunctionExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrowFunctionExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportAllDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportAllDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportDefaultDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportDefaultDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportNamedDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportNamedDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForOfStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ForOfStatement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportDefaultSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportDefaultSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportNamespaceSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportNamespaceSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMetaProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "MetaProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectPattern") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSpreadElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SpreadElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSuper(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Super") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTaggedTemplateExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TaggedTemplateExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTemplateElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TemplateElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTemplateLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TemplateLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isYieldExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "YieldExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAwaitExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AwaitExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImport(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Import") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBigIntLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BigIntLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportNamespaceSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportNamespaceSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOptionalMemberExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OptionalMemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOptionalCallExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OptionalCallExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassPrivateProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassPrivateProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassPrivateMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassPrivateMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPrivateName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PrivateName") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isAnyTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "AnyTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArrayTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArrayTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBooleanTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BooleanTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBooleanLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BooleanLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNullLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NullLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClassImplements(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ClassImplements") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareClass(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareClass") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareFunction") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareInterface(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareInterface") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareModule(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareModule") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareModuleExports(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareModuleExports") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareTypeAlias(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareTypeAlias") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareOpaqueType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareOpaqueType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareVariable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareVariable") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareExportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareExportDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclareExportAllDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclareExportAllDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclaredPredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DeclaredPredicate") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExistsTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExistsTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionTypeParam(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "FunctionTypeParam") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isGenericTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "GenericTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInferredPredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InferredPredicate") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterfaceExtends(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterfaceExtends") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterfaceDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterfaceDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isInterfaceTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "InterfaceTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIntersectionTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "IntersectionTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMixedTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "MixedTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEmptyTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EmptyTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNullableTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NullableTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumberLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumberLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumberTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumberTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeInternalSlot(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeInternalSlot") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeCallProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeCallProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeIndexer(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeIndexer") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectTypeSpreadProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ObjectTypeSpreadProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOpaqueType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OpaqueType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isQualifiedTypeIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "QualifiedTypeIdentifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStringLiteralTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StringLiteralTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStringTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StringTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSymbolTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SymbolTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isThisTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ThisTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTupleTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TupleTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeofTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeofTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeAlias(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeAlias") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeCastExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeCastExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeParameter(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeParameter") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeParameterDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeParameterDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTypeParameterInstantiation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TypeParameterInstantiation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUnionTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "UnionTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVariance(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Variance") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isVoidTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "VoidTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumBooleanBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumBooleanBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumNumberBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumNumberBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumStringBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumStringBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumSymbolBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumSymbolBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumBooleanMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumBooleanMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumNumberMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumNumberMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumStringMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumStringMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumDefaultedMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "EnumDefaultedMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isIndexedAccessType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "IndexedAccessType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isOptionalIndexedAccessType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "OptionalIndexedAccessType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXAttribute(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXAttribute") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXClosingElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXClosingElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXEmptyExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXEmptyExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXExpressionContainer(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXExpressionContainer") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXSpreadChild(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXSpreadChild") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXIdentifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXMemberExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXMemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXNamespacedName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXNamespacedName") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXOpeningElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXOpeningElement") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXSpreadAttribute(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXSpreadAttribute") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXText(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXText") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXFragment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXFragment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXOpeningFragment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXOpeningFragment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSXClosingFragment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "JSXClosingFragment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNoop(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Noop") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPlaceholder(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Placeholder") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isV8IntrinsicIdentifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "V8IntrinsicIdentifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isArgumentPlaceholder(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ArgumentPlaceholder") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBindExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "BindExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImportAttribute(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ImportAttribute") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDecorator(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "Decorator") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDoExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DoExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportDefaultSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ExportDefaultSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRecordExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RecordExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTupleExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TupleExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDecimalLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "DecimalLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStaticBlock(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "StaticBlock") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isModuleExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "ModuleExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTopicReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TopicReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPipelineTopicExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PipelineTopicExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPipelineBareFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PipelineBareFunction") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPipelinePrimaryTopicReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "PipelinePrimaryTopicReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSParameterProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSParameterProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSDeclareFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSDeclareFunction") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSDeclareMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSDeclareMethod") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSQualifiedName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSQualifiedName") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSCallSignatureDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSCallSignatureDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSConstructSignatureDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSConstructSignatureDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSPropertySignature(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSPropertySignature") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSMethodSignature(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSMethodSignature") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIndexSignature(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIndexSignature") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSAnyKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSAnyKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSBooleanKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSBooleanKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSBigIntKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSBigIntKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIntrinsicKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIntrinsicKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNeverKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNeverKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNullKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNullKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNumberKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNumberKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSObjectKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSObjectKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSStringKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSStringKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSSymbolKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSSymbolKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSUndefinedKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSUndefinedKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSUnknownKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSUnknownKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSVoidKeyword(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSVoidKeyword") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSThisType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSThisType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSFunctionType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSFunctionType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSConstructorType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSConstructorType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypePredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypePredicate") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeQuery(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeQuery") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSArrayType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSArrayType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTupleType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTupleType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSOptionalType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSOptionalType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSRestType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSRestType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNamedTupleMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNamedTupleMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSUnionType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSUnionType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIntersectionType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIntersectionType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSConditionalType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSConditionalType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSInferType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInferType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSParenthesizedType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSParenthesizedType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeOperator(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeOperator") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSIndexedAccessType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSIndexedAccessType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSMappedType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSMappedType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSLiteralType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSLiteralType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSExpressionWithTypeArguments(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSExpressionWithTypeArguments") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSInterfaceDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInterfaceDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSInterfaceBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSInterfaceBody") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeAliasDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeAliasDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSAsExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSAsExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeAssertion(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeAssertion") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSEnumDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSEnumDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSEnumMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSEnumMember") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSModuleDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSModuleDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSModuleBlock(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSModuleBlock") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSImportType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSImportType") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSImportEqualsDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSImportEqualsDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSExternalModuleReference(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSExternalModuleReference") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNonNullExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNonNullExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSExportAssignment(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSExportAssignment") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSNamespaceExportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSNamespaceExportDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeAnnotation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeParameterInstantiation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeParameterInstantiation") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeParameterDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeParameterDeclaration") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeParameter(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "TSTypeParameter") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExpression(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "CallExpression" === nodeType || "ConditionalExpression" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "ObjectExpression" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "ThisExpression" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "MetaProperty" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType || "Import" === nodeType || "BigIntLiteral" === nodeType || "OptionalMemberExpression" === nodeType || "OptionalCallExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "BindExpression" === nodeType || "DoExpression" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || "DecimalLiteral" === nodeType || "ModuleExpression" === nodeType || "TopicReference" === nodeType || "PipelineTopicExpression" === nodeType || "PipelineBareFunction" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Expression" === node.expectedNode || "Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBinary(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BinaryExpression" === nodeType || "LogicalExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isScopable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "ClassDeclaration" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBlockParent(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isBlock(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BlockStatement" === nodeType || "Program" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BlockStatement" === nodeType || "BreakStatement" === nodeType || "ContinueStatement" === nodeType || "DebuggerStatement" === nodeType || "DoWhileStatement" === nodeType || "EmptyStatement" === nodeType || "ExpressionStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "IfStatement" === nodeType || "LabeledStatement" === nodeType || "ReturnStatement" === nodeType || "SwitchStatement" === nodeType || "ThrowStatement" === nodeType || "TryStatement" === nodeType || "VariableDeclaration" === nodeType || "WhileStatement" === nodeType || "WithStatement" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ForOfStatement" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "EnumDeclaration" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || nodeType === "Placeholder" && ("Statement" === node.expectedNode || "Declaration" === node.expectedNode || "BlockStatement" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTerminatorless(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isCompletionStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isConditional(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ConditionalExpression" === nodeType || "IfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLoop(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "WhileStatement" === nodeType || "ForOfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isWhile(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("DoWhileStatement" === nodeType || "WhileStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExpressionWrapper(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ExpressionStatement" === nodeType || "ParenthesizedExpression" === nodeType || "TypeCastExpression" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFor(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ForInStatement" === nodeType || "ForStatement" === nodeType || "ForOfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isForXStatement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ForInStatement" === nodeType || "ForOfStatement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunction(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFunctionParent(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPureish(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "ArrowFunctionExpression" === nodeType || "BigIntLiteral" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("FunctionDeclaration" === nodeType || "VariableDeclaration" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "EnumDeclaration" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || nodeType === "Placeholder" && "Declaration" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPatternLike(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("Identifier" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLVal(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("Identifier" === nodeType || "MemberExpression" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSParameterProperty" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSEntityName(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("Identifier" === nodeType || "TSQualifiedName" === nodeType || nodeType === "Placeholder" && "Identifier" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isLiteral(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "TemplateLiteral" === nodeType || "BigIntLiteral" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isImmutable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "BigIntLiteral" === nodeType || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXOpeningElement" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUserWhitespacable(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ObjectMethod" === nodeType || "ObjectProperty" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isMethod(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ObjectMethod" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isObjectMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ObjectMethod" === nodeType || "ObjectProperty" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isProperty(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ObjectProperty" === nodeType || "ClassProperty" === nodeType || "ClassPrivateProperty" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isUnaryLike(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("UnaryExpression" === nodeType || "SpreadElement" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPattern(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && "Pattern" === node.expectedNode) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isClass(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ClassExpression" === nodeType || "ClassDeclaration" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isModuleDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isExportDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isModuleSpecifier(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ExportSpecifier" === nodeType || "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || "ExportNamespaceSpecifier" === nodeType || "ExportDefaultSpecifier" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isPrivate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("ClassPrivateProperty" === nodeType || "ClassPrivateMethod" === nodeType || "PrivateName" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlow(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ClassImplements" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "DeclaredPredicate" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "FunctionTypeParam" === nodeType || "GenericTypeAnnotation" === nodeType || "InferredPredicate" === nodeType || "InterfaceExtends" === nodeType || "InterfaceDeclaration" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType || "OpaqueType" === nodeType || "QualifiedTypeIdentifier" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "TypeAlias" === nodeType || "TypeAnnotation" === nodeType || "TypeCastExpression" === nodeType || "TypeParameter" === nodeType || "TypeParameterDeclaration" === nodeType || "TypeParameterInstantiation" === nodeType || "UnionTypeAnnotation" === nodeType || "Variance" === nodeType || "VoidTypeAnnotation" === nodeType || "IndexedAccessType" === nodeType || "OptionalIndexedAccessType" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "GenericTypeAnnotation" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "UnionTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType || "IndexedAccessType" === nodeType || "OptionalIndexedAccessType" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowBaseAnnotation(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("AnyTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowDeclaration(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isFlowPredicate(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("DeclaredPredicate" === nodeType || "InferredPredicate" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumBody(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("EnumBooleanBody" === nodeType || "EnumNumberBody" === nodeType || "EnumStringBody" === nodeType || "EnumSymbolBody" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isEnumMember(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("EnumBooleanMember" === nodeType || "EnumNumberMember" === nodeType || "EnumStringMember" === nodeType || "EnumDefaultedMember" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isJSX(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXEmptyExpression" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXIdentifier" === nodeType || "JSXMemberExpression" === nodeType || "JSXNamespacedName" === nodeType || "JSXOpeningElement" === nodeType || "JSXSpreadAttribute" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSTypeElement(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSImportType" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isTSBaseType(node, opts) { + if (!node) return false; + const nodeType = node.type; + + if ("TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSLiteralType" === nodeType) { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isNumberLiteral(node, opts) { + console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "NumberLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRegexLiteral(node, opts) { + console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RegexLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isRestProperty(node, opts) { + console.trace("The node type RestProperty has been renamed to RestElement"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "RestProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +function isSpreadProperty(node, opts) { + console.trace("The node type SpreadProperty has been renamed to SpreadElement"); + if (!node) return false; + const nodeType = node.type; + + if (nodeType === "SpreadProperty") { + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } + } + + return false; +} + +/***/ }), + +/***/ 31334: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = is; + +var _shallowEqual = __nccwpck_require__(56522); + +var _isType = __nccwpck_require__(90179); + +var _isPlaceholderType = __nccwpck_require__(2853); + +var _definitions = __nccwpck_require__(19090); + +function is(type, node, opts) { + if (!node) return false; + const matches = (0, _isType.default)(node.type, type); + + if (!matches) { + if (!opts && node.type === "Placeholder" && type in _definitions.FLIPPED_ALIAS_KEYS) { + return (0, _isPlaceholderType.default)(node.expectedNode, type); + } + + return false; + } + + if (typeof opts === "undefined") { + return true; + } else { + return (0, _shallowEqual.default)(node, opts); + } +} + +/***/ }), + +/***/ 71743: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isBinding; + +var _getBindingIdentifiers = __nccwpck_require__(80805); + +function isBinding(node, parent, grandparent) { + if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") { + return false; + } + + const keys = _getBindingIdentifiers.default.keys[parent.type]; + + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const val = parent[key]; + + if (Array.isArray(val)) { + if (val.indexOf(node) >= 0) return true; + } else { + if (val === node) return true; + } + } + } + + return false; +} + +/***/ }), + +/***/ 64602: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isBlockScoped; + +var _generated = __nccwpck_require__(52047); + +var _isLet = __nccwpck_require__(44376); + +function isBlockScoped(node) { + return (0, _generated.isFunctionDeclaration)(node) || (0, _generated.isClassDeclaration)(node) || (0, _isLet.default)(node); +} + +/***/ }), + +/***/ 88817: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isImmutable; + +var _isType = __nccwpck_require__(90179); + +var _generated = __nccwpck_require__(52047); + +function isImmutable(node) { + if ((0, _isType.default)(node.type, "Immutable")) return true; + + if ((0, _generated.isIdentifier)(node)) { + if (node.name === "undefined") { + return true; + } else { + return false; + } + } + + return false; +} + +/***/ }), + +/***/ 44376: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isLet; + +var _generated = __nccwpck_require__(52047); + +var _constants = __nccwpck_require__(90514); + +function isLet(node) { + return (0, _generated.isVariableDeclaration)(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]); +} + +/***/ }), + +/***/ 46832: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isNode; + +var _definitions = __nccwpck_require__(19090); + +function isNode(node) { + return !!(node && _definitions.VISITOR_KEYS[node.type]); +} + +/***/ }), + +/***/ 31439: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isNodesEquivalent; + +var _definitions = __nccwpck_require__(19090); + +function isNodesEquivalent(a, b) { + if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) { + return a === b; + } + + if (a.type !== b.type) { + return false; + } + + const fields = Object.keys(_definitions.NODE_FIELDS[a.type] || a.type); + const visitorKeys = _definitions.VISITOR_KEYS[a.type]; + + for (const field of fields) { + if (typeof a[field] !== typeof b[field]) { + return false; + } + + if (a[field] == null && b[field] == null) { + continue; + } else if (a[field] == null || b[field] == null) { + return false; + } + + if (Array.isArray(a[field])) { + if (!Array.isArray(b[field])) { + return false; + } + + if (a[field].length !== b[field].length) { + return false; + } + + for (let i = 0; i < a[field].length; i++) { + if (!isNodesEquivalent(a[field][i], b[field][i])) { + return false; + } + } + + continue; + } + + if (typeof a[field] === "object" && !(visitorKeys != null && visitorKeys.includes(field))) { + for (const key of Object.keys(a[field])) { + if (a[field][key] !== b[field][key]) { + return false; + } + } + + continue; + } + + if (!isNodesEquivalent(a[field], b[field])) { + return false; + } + } + + return true; +} + +/***/ }), + +/***/ 2853: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isPlaceholderType; + +var _definitions = __nccwpck_require__(19090); + +function isPlaceholderType(placeholderType, targetType) { + if (placeholderType === targetType) return true; + const aliases = _definitions.PLACEHOLDERS_ALIAS[placeholderType]; + + if (aliases) { + for (const alias of aliases) { + if (targetType === alias) return true; + } + } + + return false; +} + +/***/ }), + +/***/ 20570: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isReferenced; + +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + case "MemberExpression": + case "JSXMemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + + return parent.object === node; + + case "VariableDeclarator": + return parent.init === node; + + case "ArrowFunctionExpression": + return parent.body === node; + + case "PrivateName": + return false; + + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.params.includes(node)) { + return false; + } + + case "ObjectProperty": + case "ClassProperty": + case "ClassPrivateProperty": + if (parent.key === node) { + return !!parent.computed; + } + + if (parent.value === node) { + return !grandparent || grandparent.type !== "ObjectPattern"; + } + + return true; + + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + + case "AssignmentExpression": + return parent.right === node; + + case "AssignmentPattern": + return parent.right === node; + + case "LabeledStatement": + return false; + + case "CatchClause": + return false; + + case "RestElement": + return false; + + case "BreakStatement": + case "ContinueStatement": + return false; + + case "FunctionDeclaration": + case "FunctionExpression": + return false; + + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + + case "ExportSpecifier": + if (grandparent != null && grandparent.source) { + return false; + } + + return parent.local === node; + + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + + case "JSXAttribute": + return false; + + case "ObjectPattern": + case "ArrayPattern": + return false; + + case "MetaProperty": + return false; + + case "ObjectTypeProperty": + return parent.key !== node; + + case "TSEnumMember": + return parent.id !== node; + + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + + return true; + } + + return true; +} + +/***/ }), + +/***/ 21748: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isScope; + +var _generated = __nccwpck_require__(52047); + +function isScope(node, parent) { + if ((0, _generated.isBlockStatement)(node) && ((0, _generated.isFunction)(parent) || (0, _generated.isCatchClause)(parent))) { + return false; + } + + if ((0, _generated.isPattern)(node) && ((0, _generated.isFunction)(parent) || (0, _generated.isCatchClause)(parent))) { + return true; + } + + return (0, _generated.isScopable)(node); +} + +/***/ }), + +/***/ 6152: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isSpecifierDefault; + +var _generated = __nccwpck_require__(52047); + +function isSpecifierDefault(specifier) { + return (0, _generated.isImportDefaultSpecifier)(specifier) || (0, _generated.isIdentifier)(specifier.imported || specifier.exported, { + name: "default" + }); +} + +/***/ }), + +/***/ 90179: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isType; + +var _definitions = __nccwpck_require__(19090); + +function isType(nodeType, targetType) { + if (nodeType === targetType) return true; + if (_definitions.ALIAS_KEYS[targetType]) return false; + const aliases = _definitions.FLIPPED_ALIAS_KEYS[targetType]; + + if (aliases) { + if (aliases[0] === nodeType) return true; + + for (const alias of aliases) { + if (nodeType === alias) return true; + } + } + + return false; +} + +/***/ }), + +/***/ 71684: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isValidES3Identifier; + +var _isValidIdentifier = __nccwpck_require__(98557); + +const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]); + +function isValidES3Identifier(name) { + return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name); +} + +/***/ }), + +/***/ 98557: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isValidIdentifier; + +var _helperValidatorIdentifier = __nccwpck_require__(49586); + +function isValidIdentifier(name, reserved = true) { + if (typeof name !== "string") return false; + + if (reserved) { + if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) { + return false; + } + } + + return (0, _helperValidatorIdentifier.isIdentifierName)(name); +} + +/***/ }), + +/***/ 49992: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isVar; + +var _generated = __nccwpck_require__(52047); + +var _constants = __nccwpck_require__(90514); + +function isVar(node) { + return (0, _generated.isVariableDeclaration)(node, { + kind: "var" + }) && !node[_constants.BLOCK_SCOPED_SYMBOL]; +} + +/***/ }), + +/***/ 49234: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = matchesPattern; + +var _generated = __nccwpck_require__(52047); + +function matchesPattern(member, match, allowPartial) { + if (!(0, _generated.isMemberExpression)(member)) return false; + const parts = Array.isArray(match) ? match : match.split("."); + const nodes = []; + let node; + + for (node = member; (0, _generated.isMemberExpression)(node); node = node.object) { + nodes.push(node.property); + } + + nodes.push(node); + if (nodes.length < parts.length) return false; + if (!allowPartial && nodes.length > parts.length) return false; + + for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) { + const node = nodes[j]; + let value; + + if ((0, _generated.isIdentifier)(node)) { + value = node.name; + } else if ((0, _generated.isStringLiteral)(node)) { + value = node.value; + } else if ((0, _generated.isThisExpression)(node)) { + value = "this"; + } else { + return false; + } + + if (parts[i] !== value) return false; + } + + return true; +} + +/***/ }), + +/***/ 31569: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isCompatTag; + +function isCompatTag(tagName) { + return !!tagName && /^[a-z]/.test(tagName); +} + +/***/ }), + +/***/ 91982: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _buildMatchMemberExpression = __nccwpck_require__(48072); + +const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component"); +var _default = isReactComponent; +exports["default"] = _default; + +/***/ }), + +/***/ 4432: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = validate; +exports.validateField = validateField; +exports.validateChild = validateChild; + +var _definitions = __nccwpck_require__(19090); + +function validate(node, key, val) { + if (!node) return; + const fields = _definitions.NODE_FIELDS[node.type]; + if (!fields) return; + const field = fields[key]; + validateField(node, key, val, field); + validateChild(node, key, val); +} + +function validateField(node, key, val, field) { + if (!(field != null && field.validate)) return; + if (field.optional && val == null) return; + field.validate(node, key, val); +} + +function validateChild(node, key, val) { + if (val == null) return; + const validate = _definitions.NODE_PARENT_VALIDATIONS[val.type]; + if (!validate) return; + validate(node, key, val); +} + +/***/ }), + +/***/ 58826: +/***/ ((module) => { + +const IMPORT_REGEX = /^import\s/ +const EXPORT_REGEX = /^export\s/ +const EXPORT_DEFAULT_REGEX = /^export default\s/ +const STARTS_WITH_CAPITAL_LETTER_REGEX = /^[A-Z]/ +const EMPTY_NEWLINE = '\n\n' +const COMMENT_OPEN = '<!--' +const COMMENT_CLOSE = '-->' + +const isImport = text => IMPORT_REGEX.test(text) +const isExport = text => EXPORT_REGEX.test(text) +const isExportDefault = text => EXPORT_DEFAULT_REGEX.test(text) +const isImportOrExport = text => isImport(text) || isExport(text) + +const isComment = str => + str.startsWith(COMMENT_OPEN) && str.endsWith(COMMENT_CLOSE) + +const getCommentContents = str => + str.slice(COMMENT_OPEN.length, -COMMENT_CLOSE.length) + +const startsWithCapitalLetter = str => + STARTS_WITH_CAPITAL_LETTER_REGEX.test(str) + +const paramCase = string => + string + .replace(/([a-z0-9])([A-Z])/g, '$1-$2') + .replace(/([a-z])([0-9])/g, '$1-$2') + .toLowerCase() + +const toTemplateLiteral = text => { + const escaped = text + .replace(/\\(?!\$)/g, '\\\\') // Escape all "\" to avoid unwanted escaping in text nodes + // and ignore "\$" since it's already escaped and is common + // with prettier https://github.com/mdx-js/mdx/issues/606 + .replace(/`/g, '\\`') // Escape "`"" since + .replace(/(\\\$)/g, '\\$1') // Escape \$ so render it as it is + .replace(/(\\\$)(\{)/g, '\\$1\\$2') // Escape \${} so render it as it is + .replace(/\$\{/g, '\\${') // Escape ${} in text so that it doesn't eval + + return '{`' + escaped + '`}' +} + +module.exports.EMPTY_NEWLINE = EMPTY_NEWLINE +module.exports.isImport = isImport +module.exports.isExport = isExport +module.exports.isExportDefault = isExportDefault +module.exports.isImportOrExport = isImportOrExport +module.exports.startsWithCapitalLetter = startsWithCapitalLetter +module.exports.isComment = isComment +module.exports.getCommentContents = getCommentContents +module.exports.paramCase = paramCase +module.exports.toTemplateLiteral = toTemplateLiteral + + +/***/ }), + +/***/ 73741: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* module decorator */ module = __nccwpck_require__.nmd(module); + +const colorConvert = __nccwpck_require__(42830); + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Fix humans + styles.color.grey = styles.color.gray; + + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; + + for (const styleName of Object.keys(group)) { + const style = group[styleName]; + + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } + + const ansi2ansi = n => n; + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if (key === 'ansi16') { + key = 'ansi'; + } + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); + + +/***/ }), + +/***/ 58803: +/***/ ((module) => { + +"use strict"; + + +/* global SharedArrayBuffer, Atomics */ + +if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') { + const nil = new Int32Array(new SharedArrayBuffer(4)) + + function sleep (ms) { + // also filters out NaN, non-number types, including empty strings, but allows bigints + const valid = ms > 0 && ms < Infinity + if (valid === false) { + if (typeof ms !== 'number' && typeof ms !== 'bigint') { + throw TypeError('sleep: ms must be a number') + } + throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity') + } + + Atomics.wait(nil, 0, 0, Number(ms)) + } + module.exports = sleep +} else { + + function sleep (ms) { + // also filters out NaN, non-number types, including empty strings, but allows bigints + const valid = ms > 0 && ms < Infinity + if (valid === false) { + if (typeof ms !== 'number' && typeof ms !== 'bigint') { + throw TypeError('sleep: ms must be a number') + } + throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity') + } + const target = Date.now() + Number(ms) + while (target > Date.now()){} + } + + module.exports = sleep + +} + + +/***/ }), + +/***/ 2308: +/***/ ((module) => { + +"use strict"; + + +module.exports = bail + +function bail(err) { + if (err) { + throw err + } +} + + +/***/ }), + +/***/ 33772: +/***/ ((module) => { + +"use strict"; + + +module.exports = ccount + +function ccount(source, character) { + var value = String(source) + var count = 0 + var index + + if (typeof character !== 'string') { + throw new Error('Expected character') + } + + index = value.indexOf(character) + + while (index !== -1) { + count++ + index = value.indexOf(character, index + character.length) + } + + return count +} + + +/***/ }), + +/***/ 4215: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +const escapeStringRegexp = __nccwpck_require__(36003); +const ansiStyles = __nccwpck_require__(73741); +const stdoutColor = (__nccwpck_require__(30395).stdout); + +const template = __nccwpck_require__(23816); + +const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); + +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; + +// `color-convert` models to exclude from the Chalk API due to conflicts and such +const skipModels = new Set(['gray']); + +const styles = Object.create(null); + +function applyOptions(obj, options) { + options = options || {}; + + // Detect level if not set manually + const scLevel = stdoutColor ? stdoutColor.level : 0; + obj.level = options.level === undefined ? scLevel : options.level; + obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; +} + +function Chalk(options) { + // We check for this.template here since calling `chalk.constructor()` + // by itself will have a `this` of a previously constructed chalk object + if (!this || !(this instanceof Chalk) || this.template) { + const chalk = {}; + applyOptions(chalk, options); + + chalk.template = function () { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk.template].concat(args)); + }; + + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); + + chalk.template.constructor = Chalk; + + return chalk.template; + } + + applyOptions(this, options); +} + +// Use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001B[94m'; +} + +for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + styles[key] = { + get() { + const codes = ansiStyles[key]; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); + } + }; +} + +styles.visible = { + get() { + return build.call(this, this._styles || [], true, 'visible'); + } +}; + +ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); +for (const model of Object.keys(ansiStyles.color.ansi)) { + if (skipModels.has(model)) { + continue; + } + + styles[model] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.color.close, + closeRe: ansiStyles.color.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); +for (const model of Object.keys(ansiStyles.bgColor.ansi)) { + if (skipModels.has(model)) { + continue; + } + + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const level = this.level; + return function () { + const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); + const codes = { + open, + close: ansiStyles.bgColor.close, + closeRe: ansiStyles.bgColor.closeRe + }; + return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); + }; + } + }; +} + +const proto = Object.defineProperties(() => {}, styles); + +function build(_styles, _empty, key) { + const builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder._empty = _empty; + + const self = this; + + Object.defineProperty(builder, 'level', { + enumerable: true, + get() { + return self.level; + }, + set(level) { + self.level = level; + } + }); + + Object.defineProperty(builder, 'enabled', { + enumerable: true, + get() { + return self.enabled; + }, + set(enabled) { + self.enabled = enabled; + } + }); + + // See below for fix regarding invisible grey/dim combination on Windows + builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; + + // `__proto__` is used because we must return a function, but there is + // no way to create a function with a different prototype + builder.__proto__ = proto; // eslint-disable-line no-proto + + return builder; +} + +function applyStyle() { + // Support varags, but simply cast to string in case there's only one arg + const args = arguments; + const argsLen = args.length; + let str = String(arguments[0]); + + if (argsLen === 0) { + return ''; + } + + if (argsLen > 1) { + // Don't slice `arguments`, it prevents V8 optimizations + for (let a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || this.level <= 0 || !str) { + return this._empty ? '' : str; + } + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + const originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && this.hasGrey) { + ansiStyles.dim.open = ''; + } + + for (const code of this._styles.slice().reverse()) { + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + + // Close the styling before a linebreak and reopen + // after next line to fix a bleed issue on macOS + // https://github.com/chalk/chalk/pull/92 + str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); + } + + // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue + ansiStyles.dim.open = originalDim; + + return str; +} + +function chalkTag(chalk, strings) { + if (!Array.isArray(strings)) { + // If chalk() was called by itself or with a string, + // return the string itself as a string. + return [].slice.call(arguments, 1).join(' '); + } + + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; + + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); + parts.push(String(strings.raw[i])); + } + + return template(chalk, parts.join('')); +} + +Object.defineProperties(Chalk.prototype, styles); + +module.exports = Chalk(); // eslint-disable-line new-cap +module.exports.supportsColor = stdoutColor; +module.exports["default"] = module.exports; // For TypeScript + + +/***/ }), + +/***/ 23816: +/***/ ((module) => { + +"use strict"; + +const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; +const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; +const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; +const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; + +const ESCAPES = new Map([ + ['n', '\n'], + ['r', '\r'], + ['t', '\t'], + ['b', '\b'], + ['f', '\f'], + ['v', '\v'], + ['0', '\0'], + ['\\', '\\'], + ['e', '\u001B'], + ['a', '\u0007'] +]); + +function unescape(c) { + if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + + return ESCAPES.get(c) || c; +} + +function parseArguments(name, args) { + const results = []; + const chunks = args.trim().split(/\s*,\s*/g); + let matches; + + for (const chunk of chunks) { + if (!isNaN(chunk)) { + results.push(Number(chunk)); + } else if ((matches = chunk.match(STRING_REGEX))) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + + return results; +} + +function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; + + const results = []; + let matches; + + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + + return results; +} + +function buildStyle(chalk, styles) { + const enabled = {}; + + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } + + let current = chalk; + for (const styleName of Object.keys(enabled)) { + if (Array.isArray(enabled[styleName])) { + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } + + if (enabled[styleName].length > 0) { + current = current[styleName].apply(current, enabled[styleName]); + } else { + current = current[styleName]; + } + } + } + + return current; +} + +module.exports = (chalk, tmp) => { + const styles = []; + const chunks = []; + let chunk = []; + + // eslint-disable-next-line max-params + tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { + if (escapeChar) { + chunk.push(unescape(escapeChar)); + } else if (style) { + const str = chunk.join(''); + chunk = []; + chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str)); + styles.push({inverse, styles: parseStyle(style)}); + } else if (close) { + if (styles.length === 0) { + throw new Error('Found extraneous } in Chalk template literal'); + } + + chunks.push(buildStyle(chalk, styles)(chunk.join(''))); + chunk = []; + styles.pop(); + } else { + chunk.push(chr); + } + }); + + chunks.push(chunk.join('')); + + if (styles.length > 0) { + const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; + throw new Error(errMsg); + } + + return chunks.join(''); +}; + + +/***/ }), + +/***/ 93764: +/***/ ((module) => { + +"use strict"; + + +module.exports = collapse + +// `collapse(' \t\nbar \nbaz\t') // ' bar baz '` +function collapse(value) { + return String(value).replace(/\s+/g, ' ') +} + + +/***/ }), + +/***/ 9598: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +/* MIT license */ +var cssKeywords = __nccwpck_require__(39407); + +// NOTE: conversions should only return primitive values (i.e. arrays, or +// values that give correct `typeof` results). +// do not use box values types (i.e. Number(), String(), etc.) + +var reverseKeywords = {}; +for (var key in cssKeywords) { + if (cssKeywords.hasOwnProperty(key)) { + reverseKeywords[cssKeywords[key]] = key; + } +} + +var convert = module.exports = { + rgb: {channels: 3, labels: 'rgb'}, + hsl: {channels: 3, labels: 'hsl'}, + hsv: {channels: 3, labels: 'hsv'}, + hwb: {channels: 3, labels: 'hwb'}, + cmyk: {channels: 4, labels: 'cmyk'}, + xyz: {channels: 3, labels: 'xyz'}, + lab: {channels: 3, labels: 'lab'}, + lch: {channels: 3, labels: 'lch'}, + hex: {channels: 1, labels: ['hex']}, + keyword: {channels: 1, labels: ['keyword']}, + ansi16: {channels: 1, labels: ['ansi16']}, + ansi256: {channels: 1, labels: ['ansi256']}, + hcg: {channels: 3, labels: ['h', 'c', 'g']}, + apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, + gray: {channels: 1, labels: ['gray']} +}; + +// hide .channels and .labels properties +for (var model in convert) { + if (convert.hasOwnProperty(model)) { + if (!('channels' in convert[model])) { + throw new Error('missing channels property: ' + model); + } + + if (!('labels' in convert[model])) { + throw new Error('missing channel labels property: ' + model); + } + + if (convert[model].labels.length !== convert[model].channels) { + throw new Error('channel and label counts mismatch: ' + model); + } + + var channels = convert[model].channels; + var labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], 'channels', {value: channels}); + Object.defineProperty(convert[model], 'labels', {value: labels}); + } +} + +convert.rgb.hsl = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + + h = Math.min(h * 60, 360); + + if (h < 0) { + h += 360; + } + + l = (min + max) / 2; + + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + + return [h, s * 100, l * 100]; +}; + +convert.rgb.hsv = function (rgb) { + var rdif; + var gdif; + var bdif; + var h; + var s; + + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var v = Math.max(r, g, b); + var diff = v - Math.min(r, g, b); + var diffc = function (c) { + return (v - c) / 6 / diff + 1 / 2; + }; + + if (diff === 0) { + h = s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = (1 / 3) + rdif - bdif; + } else if (b === v) { + h = (2 / 3) + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + + return [ + h * 360, + s * 100, + v * 100 + ]; +}; + +convert.rgb.hwb = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); + + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +}; + +convert.rgb.cmyk = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + + return [c * 100, m * 100, y * 100, k * 100]; +}; + +/** + * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance + * */ +function comparativeDistance(x, y) { + return ( + Math.pow(x[0] - y[0], 2) + + Math.pow(x[1] - y[1], 2) + + Math.pow(x[2] - y[2], 2) + ); +} + +convert.rgb.keyword = function (rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + + var currentClosestDistance = Infinity; + var currentClosestKeyword; + + for (var keyword in cssKeywords) { + if (cssKeywords.hasOwnProperty(keyword)) { + var value = cssKeywords[keyword]; + + // Compute comparative distance + var distance = comparativeDistance(rgb, value); + + // Check if its less, if so set as closest + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + } + + return currentClosestKeyword; +}; + +convert.keyword.rgb = function (keyword) { + return cssKeywords[keyword]; +}; + +convert.rgb.xyz = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y * 100, z * 100]; +}; + +convert.rgb.lab = function (rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.hsl.rgb = function (hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + + rgb[i] = val * 255; + } + + return rgb; +}; + +convert.hsl.hsv = function (hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + + return [h, sv * 100, v * 100]; +}; + +convert.hsv.rgb = function (hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - (s * f)); + var t = 255 * v * (1 - (s * (1 - f))); + v *= 255; + + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +}; + +convert.hsv.hsl = function (hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= (lmin <= 1) ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + + return [h, sl * 100, l * 100]; +}; + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +convert.hwb.rgb = function (hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + + if ((i & 0x01) !== 0) { + f = 1 - f; + } + + n = wh + f * (v - wh); // linear interpolation + + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +}; + +convert.cmyk.rgb = function (cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.rgb = function (xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 + ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r * 12.92; + + g = g > 0.0031308 + ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g * 12.92; + + b = b > 0.0031308 + ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b * 12.92; + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.lab = function (xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.lab.xyz = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + + x *= 95.047; + y *= 100; + z *= 108.883; + + return [x, y, z]; +}; + +convert.lab.lch = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + + if (h < 0) { + h += 360; + } + + c = Math.sqrt(a * a + b * b); + + return [l, c, h]; +}; + +convert.lch.lab = function (lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + + return [l, a, b]; +}; + +convert.rgb.ansi16 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization + + value = Math.round(value / 50); + + if (value === 0) { + return 30; + } + + var ansi = 30 + + ((Math.round(b / 255) << 2) + | (Math.round(g / 255) << 1) + | Math.round(r / 255)); + + if (value === 2) { + ansi += 60; + } + + return ansi; +}; + +convert.hsv.ansi16 = function (args) { + // optimization here; we already know the value and don't need to get + // it converted for us. + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); +}; + +convert.rgb.ansi256 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + + // we use the extended greyscale palette here, with the exception of + // black and white. normal palette only has 4 greyscale shades. + if (r === g && g === b) { + if (r < 8) { + return 16; + } + + if (r > 248) { + return 231; + } + + return Math.round(((r - 8) / 247) * 24) + 232; + } + + var ansi = 16 + + (36 * Math.round(r / 255 * 5)) + + (6 * Math.round(g / 255 * 5)) + + Math.round(b / 255 * 5); + + return ansi; +}; + +convert.ansi16.rgb = function (args) { + var color = args % 10; + + // handle greyscale + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + + color = color / 10.5 * 255; + + return [color, color, color]; + } + + var mult = (~~(args > 50) + 1) * 0.5; + var r = ((color & 1) * mult) * 255; + var g = (((color >> 1) & 1) * mult) * 255; + var b = (((color >> 2) & 1) * mult) * 255; + + return [r, g, b]; +}; + +convert.ansi256.rgb = function (args) { + // handle greyscale + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; + } + + args -= 16; + + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = (rem % 6) / 5 * 255; + + return [r, g, b]; +}; + +convert.rgb.hex = function (args) { + var integer = ((Math.round(args[0]) & 0xFF) << 16) + + ((Math.round(args[1]) & 0xFF) << 8) + + (Math.round(args[2]) & 0xFF); + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.hex.rgb = function (args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + + var colorString = match[0]; + + if (match[0].length === 3) { + colorString = colorString.split('').map(function (char) { + return char + char; + }).join(''); + } + + var integer = parseInt(colorString, 16); + var r = (integer >> 16) & 0xFF; + var g = (integer >> 8) & 0xFF; + var b = integer & 0xFF; + + return [r, g, b]; +}; + +convert.rgb.hcg = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = (max - min); + var grayscale; + var hue; + + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + + if (chroma <= 0) { + hue = 0; + } else + if (max === r) { + hue = ((g - b) / chroma) % 6; + } else + if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } + + hue /= 6; + hue %= 1; + + return [hue * 360, chroma * 100, grayscale * 100]; +}; + +convert.hsl.hcg = function (hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; + + if (l < 0.5) { + c = 2.0 * s * l; + } else { + c = 2.0 * s * (1.0 - l); + } + + if (c < 1.0) { + f = (l - 0.5 * c) / (1.0 - c); + } + + return [hsl[0], c * 100, f * 100]; +}; + +convert.hsv.hcg = function (hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; + + var c = s * v; + var f = 0; + + if (c < 1.0) { + f = (v - c) / (1 - c); + } + + return [hsv[0], c * 100, f * 100]; +}; + +convert.hcg.rgb = function (hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + if (c === 0.0) { + return [g * 255, g * 255, g * 255]; + } + + var pure = [0, 0, 0]; + var hi = (h % 1) * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; pure[1] = v; pure[2] = 0; break; + case 1: + pure[0] = w; pure[1] = 1; pure[2] = 0; break; + case 2: + pure[0] = 0; pure[1] = 1; pure[2] = v; break; + case 3: + pure[0] = 0; pure[1] = w; pure[2] = 1; break; + case 4: + pure[0] = v; pure[1] = 0; pure[2] = 1; break; + default: + pure[0] = 1; pure[1] = 0; pure[2] = w; + } + + mg = (1.0 - c) * g; + + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; +}; + +convert.hcg.hsv = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var v = c + g * (1.0 - c); + var f = 0; + + if (v > 0.0) { + f = c / v; + } + + return [hcg[0], f * 100, v * 100]; +}; + +convert.hcg.hsl = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var l = g * (1.0 - c) + 0.5 * c; + var s = 0; + + if (l > 0.0 && l < 0.5) { + s = c / (2 * l); + } else + if (l >= 0.5 && l < 1.0) { + s = c / (2 * (1 - l)); + } + + return [hcg[0], s * 100, l * 100]; +}; + +convert.hcg.hwb = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1.0 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; +}; + +convert.hwb.hcg = function (hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; + + if (c < 1) { + g = (v - c) / (1 - c); + } + + return [hwb[0], c * 100, g * 100]; +}; + +convert.apple.rgb = function (apple) { + return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; +}; + +convert.rgb.apple = function (rgb) { + return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; +}; + +convert.gray.rgb = function (args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; +}; + +convert.gray.hsl = convert.gray.hsv = function (args) { + return [0, 0, args[0]]; +}; + +convert.gray.hwb = function (gray) { + return [0, 100, gray[0]]; +}; + +convert.gray.cmyk = function (gray) { + return [0, 0, 0, gray[0]]; +}; + +convert.gray.lab = function (gray) { + return [gray[0], 0, 0]; +}; + +convert.gray.hex = function (gray) { + var val = Math.round(gray[0] / 100 * 255) & 0xFF; + var integer = (val << 16) + (val << 8) + val; + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.rgb.gray = function (rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; +}; + + +/***/ }), + +/***/ 42830: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var conversions = __nccwpck_require__(9598); +var route = __nccwpck_require__(95180); + +var convert = {}; + +var models = Object.keys(conversions); + +function wrapRaw(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + return fn(args); + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +function wrapRounded(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + var result = fn(args); + + // we're assuming the result is an array here. + // see notice in conversions.js; don't use box types + // in conversion functions. + if (typeof result === 'object') { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + + return result; + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +models.forEach(function (fromModel) { + convert[fromModel] = {}; + + Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); + Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); + + var routes = route(fromModel); + var routeModels = Object.keys(routes); + + routeModels.forEach(function (toModel) { + var fn = routes[toModel]; + + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); +}); + +module.exports = convert; + + +/***/ }), + +/***/ 95180: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var conversions = __nccwpck_require__(9598); + +/* + this function routes a model to all other models. + + all functions that are routed have a property `.conversion` attached + to the returned synthetic function. This property is an array + of strings, each with the steps in between the 'from' and 'to' + color models (inclusive). + + conversions that are not possible simply are not included. +*/ + +function buildGraph() { + var graph = {}; + // https://jsperf.com/object-keys-vs-for-in-with-closure/3 + var models = Object.keys(conversions); + + for (var len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } + + return graph; +} + +// https://en.wikipedia.org/wiki/Breadth-first_search +function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; // unshift -> queue -> pop + + graph[fromModel].distance = 0; + + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions[current]); + + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; + + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + + return graph; +} + +function link(from, to) { + return function (args) { + return to(from(args)); + }; +} + +function wrapConversion(toModel, graph) { + var path = [graph[toModel].parent, toModel]; + var fn = conversions[graph[toModel].parent][toModel]; + + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + + fn.conversion = path; + return fn; +} + +module.exports = function (fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; + + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; + + if (node.parent === null) { + // no possible conversion, or this node is the source model. + continue; + } + + conversion[toModel] = wrapConversion(toModel, graph); + } + + return conversion; +}; + + + +/***/ }), + +/***/ 39407: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + + +/***/ }), + +/***/ 12270: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var fs = __nccwpck_require__(57147); +var path = __nccwpck_require__(71017); +var SafeBuffer = __nccwpck_require__(53118); + +Object.defineProperty(exports, "commentRegex", ({ + get: function getCommentRegex () { + return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg; + } +})); + +Object.defineProperty(exports, "mapFileCommentRegex", ({ + get: function getMapFileCommentRegex () { + // Matches sourceMappingURL in either // or /* comment styles. + return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg; + } +})); + + +function decodeBase64(base64) { + return (SafeBuffer.Buffer.from(base64, 'base64') || "").toString(); +} + +function stripComment(sm) { + return sm.split(',').pop(); +} + +function readFromFileMap(sm, dir) { + // NOTE: this will only work on the server since it attempts to read the map file + + var r = exports.mapFileCommentRegex.exec(sm); + + // for some odd reason //# .. captures in 1 and /* .. */ in 2 + var filename = r[1] || r[2]; + var filepath = path.resolve(dir, filename); + + try { + return fs.readFileSync(filepath, 'utf8'); + } catch (e) { + throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e); + } +} + +function Converter (sm, opts) { + opts = opts || {}; + + if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir); + if (opts.hasComment) sm = stripComment(sm); + if (opts.isEncoded) sm = decodeBase64(sm); + if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm); + + this.sourcemap = sm; +} + +Converter.prototype.toJSON = function (space) { + return JSON.stringify(this.sourcemap, null, space); +}; + +Converter.prototype.toBase64 = function () { + var json = this.toJSON(); + return (SafeBuffer.Buffer.from(json, 'utf8') || "").toString('base64'); +}; + +Converter.prototype.toComment = function (options) { + var base64 = this.toBase64(); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; +}; + +// returns copy instead of original +Converter.prototype.toObject = function () { + return JSON.parse(this.toJSON()); +}; + +Converter.prototype.addProperty = function (key, value) { + if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead'); + return this.setProperty(key, value); +}; + +Converter.prototype.setProperty = function (key, value) { + this.sourcemap[key] = value; + return this; +}; + +Converter.prototype.getProperty = function (key) { + return this.sourcemap[key]; +}; + +exports.fromObject = function (obj) { + return new Converter(obj); +}; + +exports.fromJSON = function (json) { + return new Converter(json, { isJSON: true }); +}; + +exports.fromBase64 = function (base64) { + return new Converter(base64, { isEncoded: true }); +}; + +exports.fromComment = function (comment) { + comment = comment + .replace(/^\/\*/g, '//') + .replace(/\*\/$/g, ''); + + return new Converter(comment, { isEncoded: true, hasComment: true }); +}; + +exports.fromMapFileComment = function (comment, dir) { + return new Converter(comment, { commentFileDir: dir, isFileComment: true, isJSON: true }); +}; + +// Finds last sourcemap comment in file or returns null if none was found +exports.fromSource = function (content) { + var m = content.match(exports.commentRegex); + return m ? exports.fromComment(m.pop()) : null; +}; + +// Finds last sourcemap comment in file or returns null if none was found +exports.fromMapFileSource = function (content, dir) { + var m = content.match(exports.mapFileCommentRegex); + return m ? exports.fromMapFileComment(m.pop(), dir) : null; +}; + +exports.removeComments = function (src) { + return src.replace(exports.commentRegex, ''); +}; + +exports.removeMapFileComments = function (src) { + return src.replace(exports.mapFileCommentRegex, ''); +}; + +exports.generateMapFileComment = function (file, options) { + var data = 'sourceMappingURL=' + file; + return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; +}; + + +/***/ }), + +/***/ 74598: +/***/ ((module, exports) => { + +"use strict"; +function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}(function(global){var _arguments=arguments;var dateFormat=function(){var token=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|W{1,2}|[LlopSZN]|"[^"]*"|'[^']*'/g;var timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g;var timezoneClip=/[^-+\dA-Z]/g;return function(date,mask,utc,gmt){if(_arguments.length===1&&kindOf(date)==="string"&&!/\d/.test(date)){mask=date;date=undefined}date=date||date===0?date:new Date;if(!(date instanceof Date)){date=new Date(date)}if(isNaN(date)){throw TypeError("Invalid date")}mask=String(dateFormat.masks[mask]||mask||dateFormat.masks["default"]);var maskSlice=mask.slice(0,4);if(maskSlice==="UTC:"||maskSlice==="GMT:"){mask=mask.slice(4);utc=true;if(maskSlice==="GMT:"){gmt=true}}var _=function _(){return utc?"getUTC":"get"};var _d=function d(){return date[_()+"Date"]()};var D=function D(){return date[_()+"Day"]()};var _m=function m(){return date[_()+"Month"]()};var y=function y(){return date[_()+"FullYear"]()};var _H=function H(){return date[_()+"Hours"]()};var _M=function M(){return date[_()+"Minutes"]()};var _s=function s(){return date[_()+"Seconds"]()};var _L=function L(){return date[_()+"Milliseconds"]()};var _o=function o(){return utc?0:date.getTimezoneOffset()};var _W=function W(){return getWeek(date)};var _N=function N(){return getDayOfWeek(date)};var flags={d:function d(){return _d()},dd:function dd(){return pad(_d())},ddd:function ddd(){return dateFormat.i18n.dayNames[D()]},DDD:function DDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()],short:true})},dddd:function dddd(){return dateFormat.i18n.dayNames[D()+7]},DDDD:function DDDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()+7]})},m:function m(){return _m()+1},mm:function mm(){return pad(_m()+1)},mmm:function mmm(){return dateFormat.i18n.monthNames[_m()]},mmmm:function mmmm(){return dateFormat.i18n.monthNames[_m()+12]},yy:function yy(){return String(y()).slice(2)},yyyy:function yyyy(){return pad(y(),4)},h:function h(){return _H()%12||12},hh:function hh(){return pad(_H()%12||12)},H:function H(){return _H()},HH:function HH(){return pad(_H())},M:function M(){return _M()},MM:function MM(){return pad(_M())},s:function s(){return _s()},ss:function ss(){return pad(_s())},l:function l(){return pad(_L(),3)},L:function L(){return pad(Math.floor(_L()/10))},t:function t(){return _H()<12?dateFormat.i18n.timeNames[0]:dateFormat.i18n.timeNames[1]},tt:function tt(){return _H()<12?dateFormat.i18n.timeNames[2]:dateFormat.i18n.timeNames[3]},T:function T(){return _H()<12?dateFormat.i18n.timeNames[4]:dateFormat.i18n.timeNames[5]},TT:function TT(){return _H()<12?dateFormat.i18n.timeNames[6]:dateFormat.i18n.timeNames[7]},Z:function Z(){return gmt?"GMT":utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,"").replace(/GMT\+0000/g,"UTC")},o:function o(){return(_o()>0?"-":"+")+pad(Math.floor(Math.abs(_o())/60)*100+Math.abs(_o())%60,4)},p:function p(){return(_o()>0?"-":"+")+pad(Math.floor(Math.abs(_o())/60),2)+":"+pad(Math.floor(Math.abs(_o())%60),2)},S:function S(){return["th","st","nd","rd"][_d()%10>3?0:(_d()%100-_d()%10!=10)*_d()%10]},W:function W(){return _W()},WW:function WW(){return pad(_W())},N:function N(){return _N()}};return mask.replace(token,function(match){if(match in flags){return flags[match]()}return match.slice(1,match.length-1)})}}();dateFormat.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]};var pad=function pad(val,len){val=String(val);len=len||2;while(val.length<len){val="0"+val}return val};var getDayName=function getDayName(_ref){var y=_ref.y,m=_ref.m,d=_ref.d,_=_ref._,dayName=_ref.dayName,_ref$short=_ref["short"],_short=_ref$short===void 0?false:_ref$short;var today=new Date;var yesterday=new Date;yesterday.setDate(yesterday[_+"Date"]()-1);var tomorrow=new Date;tomorrow.setDate(tomorrow[_+"Date"]()+1);var today_d=function today_d(){return today[_+"Date"]()};var today_m=function today_m(){return today[_+"Month"]()};var today_y=function today_y(){return today[_+"FullYear"]()};var yesterday_d=function yesterday_d(){return yesterday[_+"Date"]()};var yesterday_m=function yesterday_m(){return yesterday[_+"Month"]()};var yesterday_y=function yesterday_y(){return yesterday[_+"FullYear"]()};var tomorrow_d=function tomorrow_d(){return tomorrow[_+"Date"]()};var tomorrow_m=function tomorrow_m(){return tomorrow[_+"Month"]()};var tomorrow_y=function tomorrow_y(){return tomorrow[_+"FullYear"]()};if(today_y()===y&&today_m()===m&&today_d()===d){return _short?"Tdy":"Today"}else if(yesterday_y()===y&&yesterday_m()===m&&yesterday_d()===d){return _short?"Ysd":"Yesterday"}else if(tomorrow_y()===y&&tomorrow_m()===m&&tomorrow_d()===d){return _short?"Tmw":"Tomorrow"}return dayName};var getWeek=function getWeek(date){var targetThursday=new Date(date.getFullYear(),date.getMonth(),date.getDate());targetThursday.setDate(targetThursday.getDate()-(targetThursday.getDay()+6)%7+3);var firstThursday=new Date(targetThursday.getFullYear(),0,4);firstThursday.setDate(firstThursday.getDate()-(firstThursday.getDay()+6)%7+3);var ds=targetThursday.getTimezoneOffset()-firstThursday.getTimezoneOffset();targetThursday.setHours(targetThursday.getHours()-ds);var weekDiff=(targetThursday-firstThursday)/(864e5*7);return 1+Math.floor(weekDiff)};var getDayOfWeek=function getDayOfWeek(date){var dow=date.getDay();if(dow===0){dow=7}return dow};var kindOf=function kindOf(val){if(val===null){return"null"}if(val===undefined){return"undefined"}if(_typeof(val)!=="object"){return _typeof(val)}if(Array.isArray(val)){return"array"}return{}.toString.call(val).slice(8,-1).toLowerCase()};if(typeof define==="function"&&define.amd){define(function(){return dateFormat})}else if(( false?0:_typeof(exports))==="object"){module.exports=dateFormat}else{global.dateFormat=dateFormat}})(void 0); + +/***/ }), + +/***/ 39851: +/***/ ((module, exports, __nccwpck_require__) => { + +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = __nccwpck_require__(36033)(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; + + +/***/ }), + +/***/ 36033: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __nccwpck_require__(80040); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; + + +/***/ }), + +/***/ 67984: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = __nccwpck_require__(39851); +} else { + module.exports = __nccwpck_require__(13860); +} + + +/***/ }), + +/***/ 13860: +/***/ ((module, exports, __nccwpck_require__) => { + +/** + * Module dependencies. + */ + +const tty = __nccwpck_require__(76224); +const util = __nccwpck_require__(73837); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = __nccwpck_require__(30395); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.format(...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = __nccwpck_require__(36033)(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + + +/***/ }), + +/***/ 93265: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var stream = __nccwpck_require__(30675) +var eos = __nccwpck_require__(92498) +var inherits = __nccwpck_require__(76919) +var shift = __nccwpck_require__(20662) + +var SIGNAL_FLUSH = (Buffer.from && Buffer.from !== Uint8Array.from) + ? Buffer.from([0]) + : new Buffer([0]) + +var onuncork = function(self, fn) { + if (self._corked) self.once('uncork', fn) + else fn() +} + +var autoDestroy = function (self, err) { + if (self._autoDestroy) self.destroy(err) +} + +var destroyer = function(self, end) { + return function(err) { + if (err) autoDestroy(self, err.message === 'premature close' ? null : err) + else if (end && !self._ended) self.end() + } +} + +var end = function(ws, fn) { + if (!ws) return fn() + if (ws._writableState && ws._writableState.finished) return fn() + if (ws._writableState) return ws.end(fn) + ws.end() + fn() +} + +var noop = function() {} + +var toStreams2 = function(rs) { + return new (stream.Readable)({objectMode:true, highWaterMark:16}).wrap(rs) +} + +var Duplexify = function(writable, readable, opts) { + if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts) + stream.Duplex.call(this, opts) + + this._writable = null + this._readable = null + this._readable2 = null + + this._autoDestroy = !opts || opts.autoDestroy !== false + this._forwardDestroy = !opts || opts.destroy !== false + this._forwardEnd = !opts || opts.end !== false + this._corked = 1 // start corked + this._ondrain = null + this._drained = false + this._forwarding = false + this._unwrite = null + this._unread = null + this._ended = false + + this.destroyed = false + + if (writable) this.setWritable(writable) + if (readable) this.setReadable(readable) +} + +inherits(Duplexify, stream.Duplex) + +Duplexify.obj = function(writable, readable, opts) { + if (!opts) opts = {} + opts.objectMode = true + opts.highWaterMark = 16 + return new Duplexify(writable, readable, opts) +} + +Duplexify.prototype.cork = function() { + if (++this._corked === 1) this.emit('cork') +} + +Duplexify.prototype.uncork = function() { + if (this._corked && --this._corked === 0) this.emit('uncork') +} + +Duplexify.prototype.setWritable = function(writable) { + if (this._unwrite) this._unwrite() + + if (this.destroyed) { + if (writable && writable.destroy) writable.destroy() + return + } + + if (writable === null || writable === false) { + this.end() + return + } + + var self = this + var unend = eos(writable, {writable:true, readable:false}, destroyer(this, this._forwardEnd)) + + var ondrain = function() { + var ondrain = self._ondrain + self._ondrain = null + if (ondrain) ondrain() + } + + var clear = function() { + self._writable.removeListener('drain', ondrain) + unend() + } + + if (this._unwrite) process.nextTick(ondrain) // force a drain on stream reset to avoid livelocks + + this._writable = writable + this._writable.on('drain', ondrain) + this._unwrite = clear + + this.uncork() // always uncork setWritable +} + +Duplexify.prototype.setReadable = function(readable) { + if (this._unread) this._unread() + + if (this.destroyed) { + if (readable && readable.destroy) readable.destroy() + return + } + + if (readable === null || readable === false) { + this.push(null) + this.resume() + return + } + + var self = this + var unend = eos(readable, {writable:false, readable:true}, destroyer(this)) + + var onreadable = function() { + self._forward() + } + + var onend = function() { + self.push(null) + } + + var clear = function() { + self._readable2.removeListener('readable', onreadable) + self._readable2.removeListener('end', onend) + unend() + } + + this._drained = true + this._readable = readable + this._readable2 = readable._readableState ? readable : toStreams2(readable) + this._readable2.on('readable', onreadable) + this._readable2.on('end', onend) + this._unread = clear + + this._forward() +} + +Duplexify.prototype._read = function() { + this._drained = true + this._forward() +} + +Duplexify.prototype._forward = function() { + if (this._forwarding || !this._readable2 || !this._drained) return + this._forwarding = true + + var data + + while (this._drained && (data = shift(this._readable2)) !== null) { + if (this.destroyed) continue + this._drained = this.push(data) + } + + this._forwarding = false +} + +Duplexify.prototype.destroy = function(err, cb) { + if (!cb) cb = noop + if (this.destroyed) return cb(null) + this.destroyed = true + + var self = this + process.nextTick(function() { + self._destroy(err) + cb(null) + }) +} + +Duplexify.prototype._destroy = function(err) { + if (err) { + var ondrain = this._ondrain + this._ondrain = null + if (ondrain) ondrain(err) + else this.emit('error', err) + } + + if (this._forwardDestroy) { + if (this._readable && this._readable.destroy) this._readable.destroy() + if (this._writable && this._writable.destroy) this._writable.destroy() + } + + this.emit('close') +} + +Duplexify.prototype._write = function(data, enc, cb) { + if (this.destroyed) return + if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb)) + if (data === SIGNAL_FLUSH) return this._finish(cb) + if (!this._writable) return cb() + + if (this._writable.write(data) === false) this._ondrain = cb + else if (!this.destroyed) cb() +} + +Duplexify.prototype._finish = function(cb) { + var self = this + this.emit('preend') + onuncork(this, function() { + end(self._forwardEnd && self._writable, function() { + // haxx to not emit prefinish twice + if (self._writableState.prefinished === false) self._writableState.prefinished = true + self.emit('prefinish') + onuncork(self, cb) + }) + }) +} + +Duplexify.prototype.end = function(data, enc, cb) { + if (typeof data === 'function') return this.end(null, null, data) + if (typeof enc === 'function') return this.end(data, null, enc) + this._ended = true + if (data) this.write(data) + if (!this._writableState.ending && !this._writableState.destroyed) this.write(SIGNAL_FLUSH) + return stream.Writable.prototype.end.call(this, cb) +} + +module.exports = Duplexify + + +/***/ }), + +/***/ 92498: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var once = __nccwpck_require__(87197); + +var noop = function() {}; + +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; + +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; + +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + + callback = once(callback || noop); + + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + var cancelled = false; + + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; + + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; + + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; + + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; + + var onerror = function(err) { + callback.call(stream, err); + }; + + var onclose = function() { + process.nextTick(onclosenexttick); + }; + + var onclosenexttick = function() { + if (cancelled) return; + if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); + }; + + var onrequest = function() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + if (isChildProcess(stream)) stream.on('exit', onexit); + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + cancelled = true; + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +}; + +module.exports = eos; + + +/***/ }), + +/***/ 36003: +/***/ ((module) => { + +"use strict"; + + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; + + +/***/ }), + +/***/ 72533: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var isObject = __nccwpck_require__(77242); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + + +/***/ }), + +/***/ 36005: +/***/ ((module) => { + +"use strict"; + + +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; + +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } + + return toStr.call(arr) === '[object Array]'; +}; + +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } + + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } + + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; + +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } +}; + +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } + + return obj[name]; +}; + +module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } + + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); + + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } + + // Return the modified object + return target; +}; + + +/***/ }), + +/***/ 56129: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const validator = __nccwpck_require__(43276) +const parse = __nccwpck_require__(4390) +const redactor = __nccwpck_require__(10756) +const restorer = __nccwpck_require__(60595) +const { groupRedact, nestedRedact } = __nccwpck_require__(99454) +const state = __nccwpck_require__(66714) +const rx = __nccwpck_require__(81364) +const validate = validator() +const noop = (o) => o +noop.restore = noop + +const DEFAULT_CENSOR = '[REDACTED]' +fastRedact.rx = rx +fastRedact.validator = validator + +module.exports = fastRedact + +function fastRedact (opts = {}) { + const paths = Array.from(new Set(opts.paths || [])) + const serialize = 'serialize' in opts ? ( + opts.serialize === false ? opts.serialize + : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify) + ) : JSON.stringify + const remove = opts.remove + if (remove === true && serialize !== JSON.stringify) { + throw Error('fast-redact – remove option may only be set when serializer is JSON.stringify') + } + const censor = remove === true + ? undefined + : 'censor' in opts ? opts.censor : DEFAULT_CENSOR + + const isCensorFct = typeof censor === 'function' + const censorFctTakesPath = isCensorFct && censor.length > 1 + + if (paths.length === 0) return serialize || noop + + validate({ paths, serialize, censor }) + + const { wildcards, wcLen, secret } = parse({ paths, censor }) + + const compileRestore = restorer({ secret, wcLen }) + const strict = 'strict' in opts ? opts.strict : true + + return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({ + secret, + censor, + compileRestore, + serialize, + groupRedact, + nestedRedact, + wildcards, + wcLen + })) +} + + +/***/ }), + +/***/ 99454: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + groupRedact, + groupRestore, + nestedRedact, + nestedRestore +} + +function groupRestore ({ keys, values, target }) { + if (target == null) return + const length = keys.length + for (var i = 0; i < length; i++) { + const k = keys[i] + target[k] = values[i] + } +} + +function groupRedact (o, path, censor, isCensorFct, censorFctTakesPath) { + const target = get(o, path) + if (target == null) return { keys: null, values: null, target: null, flat: true } + const keys = Object.keys(target) + const keysLength = keys.length + const pathLength = path.length + const pathWithKey = censorFctTakesPath ? [...path] : undefined + const values = new Array(keysLength) + + for (var i = 0; i < keysLength; i++) { + const key = keys[i] + values[i] = target[key] + + if (censorFctTakesPath) { + pathWithKey[pathLength] = key + target[key] = censor(target[key], pathWithKey) + } else if (isCensorFct) { + target[key] = censor(target[key]) + } else { + target[key] = censor + } + } + return { keys, values, target, flat: true } +} + +function nestedRestore (arr) { + const length = arr.length + for (var i = 0; i < length; i++) { + const { key, target, value } = arr[i] + if (has(target, key)) { + target[key] = value + } + /* istanbul ignore else */ + if (typeof target === 'object') { + const targetKeys = Object.keys(target) + for (var j = 0; j < targetKeys.length; j++) { + const tKey = targetKeys[j] + const subTarget = target[tKey] + if (has(subTarget, key)) { + subTarget[key] = value + } + } + } + } +} + +function nestedRedact (store, o, path, ns, censor, isCensorFct, censorFctTakesPath) { + const target = get(o, path) + if (target == null) return + const keys = Object.keys(target) + const keysLength = keys.length + for (var i = 0; i < keysLength; i++) { + const key = keys[i] + const { value, parent, exists } = + specialSet(target, key, path, ns, censor, isCensorFct, censorFctTakesPath) + + if (exists === true && parent !== null) { + store.push({ key: ns[ns.length - 1], target: parent, value }) + } + } + return store +} + +function has (obj, prop) { + return obj !== undefined && obj !== null + ? ('hasOwn' in Object ? Object.hasOwn(obj, prop) : Object.prototype.hasOwnProperty.call(obj, prop)) + : false +} + +function specialSet (o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) { + const afterPathLen = afterPath.length + const lastPathIndex = afterPathLen - 1 + const originalKey = k + var i = -1 + var n + var nv + var ov + var oov = null + var exists = true + var wc = null + ov = n = o[k] + if (typeof n !== 'object') return { value: null, parent: null, exists } + while (n != null && ++i < afterPathLen) { + k = afterPath[i] + oov = ov + if (k !== '*' && !wc && !(typeof n === 'object' && k in n)) { + exists = false + break + } + if (k === '*') { + wc = k + if (i !== lastPathIndex) { + continue + } + } + if (wc) { + const wcKeys = Object.keys(n) + for (var j = 0; j < wcKeys.length; j++) { + const wck = wcKeys[j] + const wcov = n[wck] + const kIsWc = k === '*' + if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) { + if (kIsWc) { + ov = wcov + } else { + ov = wcov[k] + } + nv = (i !== lastPathIndex) + ? ov + : (isCensorFct + ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov)) + : censor) + if (kIsWc) { + n[wck] = nv + } else { + wcov[k] = (nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov) ? wcov[k] : nv + } + } + } + wc = null + } else { + ov = n[k] + nv = (i !== lastPathIndex) + ? ov + : (isCensorFct + ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov)) + : censor) + n[k] = (has(n, k) && nv === ov) || (nv === undefined && censor !== undefined) ? n[k] : nv + n = n[k] + } + if (typeof n !== 'object') break + } + return { value: ov, parent: oov, exists } +} + +function get (o, p) { + var i = -1 + var l = p.length + var n = o + while (n != null && ++i < l) { + n = n[p[i]] + } + return n +} + + +/***/ }), + +/***/ 4390: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const rx = __nccwpck_require__(81364) + +module.exports = parse + +function parse ({ paths }) { + const wildcards = [] + var wcLen = 0 + const secret = paths.reduce(function (o, strPath, ix) { + var path = strPath.match(rx).map((p) => p.replace(/'|"|`/g, '')) + const leadingBracket = strPath[0] === '[' + path = path.map((p) => { + if (p[0] === '[') return p.substr(1, p.length - 2) + else return p + }) + const star = path.indexOf('*') + if (star > -1) { + const before = path.slice(0, star) + const beforeStr = before.join('.') + const after = path.slice(star + 1, path.length) + const nested = after.length > 0 + wcLen++ + wildcards.push({ + before, + beforeStr, + after, + nested + }) + } else { + o[strPath] = { + path: path, + val: undefined, + precensored: false, + circle: '', + escPath: JSON.stringify(strPath), + leadingBracket: leadingBracket + } + } + return o + }, {}) + + return { wildcards, wcLen, secret } +} + + +/***/ }), + +/***/ 10756: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const rx = __nccwpck_require__(81364) + +module.exports = redactor + +function redactor ({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) { + /* eslint-disable-next-line */ + const redact = Function('o', ` + if (typeof o !== 'object' || o == null) { + ${strictImpl(strict, serialize)} + } + const { censor, secret } = this + ${redactTmpl(secret, isCensorFct, censorFctTakesPath)} + this.compileRestore() + ${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)} + ${resultTmpl(serialize)} + `).bind(state) + + if (serialize === false) { + redact.restore = (o) => state.restore(o) + } + + return redact +} + +function redactTmpl (secret, isCensorFct, censorFctTakesPath) { + return Object.keys(secret).map((path) => { + const { escPath, leadingBracket, path: arrPath } = secret[path] + const skip = leadingBracket ? 1 : 0 + const delim = leadingBracket ? '' : '.' + const hops = [] + var match + while ((match = rx.exec(path)) !== null) { + const [ , ix ] = match + const { index, input } = match + if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1))) + } + var existence = hops.map((p) => `o${delim}${p}`).join(' && ') + if (existence.length === 0) existence += `o${delim}${path} != null` + else existence += ` && o${delim}${path} != null` + + const circularDetection = ` + switch (true) { + ${hops.reverse().map((p) => ` + case o${delim}${p} === censor: + secret[${escPath}].circle = ${JSON.stringify(p)} + break + `).join('\n')} + } + ` + + const censorArgs = censorFctTakesPath + ? `val, ${JSON.stringify(arrPath)}` + : `val` + + return ` + if (${existence}) { + const val = o${delim}${path} + if (val === censor) { + secret[${escPath}].precensored = true + } else { + secret[${escPath}].val = val + o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : 'censor'} + ${circularDetection} + } + } + ` + }).join('\n') +} + +function dynamicRedactTmpl (hasWildcards, isCensorFct, censorFctTakesPath) { + return hasWildcards === true ? ` + { + const { wildcards, wcLen, groupRedact, nestedRedact } = this + for (var i = 0; i < wcLen; i++) { + const { before, beforeStr, after, nested } = wildcards[i] + if (nested === true) { + secret[beforeStr] = secret[beforeStr] || [] + nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath}) + } else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath}) + } + } + ` : '' +} + +function resultTmpl (serialize) { + return serialize === false ? `return o` : ` + var s = this.serialize(o) + this.restore(o) + return s + ` +} + +function strictImpl (strict, serialize) { + return strict === true + ? `throw Error('fast-redact: primitives cannot be redacted')` + : serialize === false ? `return o` : `return this.serialize(o)` +} + + +/***/ }), + +/***/ 60595: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { groupRestore, nestedRestore } = __nccwpck_require__(99454) + +module.exports = restorer + +function restorer ({ secret, wcLen }) { + return function compileRestore () { + if (this.restore) return + const paths = Object.keys(secret) + const resetters = resetTmpl(secret, paths) + const hasWildcards = wcLen > 0 + const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret } + /* eslint-disable-next-line */ + this.restore = Function( + 'o', + restoreTmpl(resetters, paths, hasWildcards) + ).bind(state) + } +} + +/** + * Mutates the original object to be censored by restoring its original values + * prior to censoring. + * + * @param {object} secret Compiled object describing which target fields should + * be censored and the field states. + * @param {string[]} paths The list of paths to censor as provided at + * initialization time. + * + * @returns {string} String of JavaScript to be used by `Function()`. The + * string compiles to the function that does the work in the description. + */ +function resetTmpl (secret, paths) { + return paths.map((path) => { + const { circle, escPath, leadingBracket } = secret[path] + const delim = leadingBracket ? '' : '.' + const reset = circle + ? `o.${circle} = secret[${escPath}].val` + : `o${delim}${path} = secret[${escPath}].val` + const clear = `secret[${escPath}].val = undefined` + return ` + if (secret[${escPath}].val !== undefined) { + try { ${reset} } catch (e) {} + ${clear} + } + ` + }).join('') +} + +/** + * Creates the body of the restore function + * + * Restoration of the redacted object happens + * backwards, in reverse order of redactions, + * so that repeated redactions on the same object + * property can be eventually rolled back to the + * original value. + * + * This way dynamic redactions are restored first, + * starting from the last one working backwards and + * followed by the static ones. + * + * @returns {string} the body of the restore function + */ +function restoreTmpl (resetters, paths, hasWildcards) { + const dynamicReset = hasWildcards === true ? ` + const keys = Object.keys(secret) + const len = keys.length + for (var i = len - 1; i >= ${paths.length}; i--) { + const k = keys[i] + const o = secret[k] + if (o.flat === true) this.groupRestore(o) + else this.nestedRestore(o) + secret[k] = null + } + ` : '' + + return ` + const secret = this.secret + ${dynamicReset} + ${resetters} + return o + ` +} + + +/***/ }), + +/***/ 81364: +/***/ ((module) => { + +"use strict"; + + +module.exports = /[^.[\]]+|\[((?:.)*?)\]/g + +/* +Regular expression explanation: + +Alt 1: /[^.[\]]+/ - Match one or more characters that are *not* a dot (.) + opening square bracket ([) or closing square bracket (]) + +Alt 2: /\[((?:.)*?)\]/ - If the char IS dot or square bracket, then create a capture + group (which will be capture group $1) that matches anything + within square brackets. Expansion is lazy so it will + stop matching as soon as the first closing bracket is met `]` + (rather than continuing to match until the final closing bracket). +*/ + + +/***/ }), + +/***/ 66714: +/***/ ((module) => { + +"use strict"; + + +module.exports = state + +function state (o) { + const { + secret, + censor, + compileRestore, + serialize, + groupRedact, + nestedRedact, + wildcards, + wcLen + } = o + const builder = [{ secret, censor, compileRestore }] + if (serialize !== false) builder.push({ serialize }) + if (wcLen > 0) builder.push({ groupRedact, nestedRedact, wildcards, wcLen }) + return Object.assign(...builder) +} + + +/***/ }), + +/***/ 43276: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { createContext, runInContext } = __nccwpck_require__(26144) + +module.exports = validator + +function validator (opts = {}) { + const { + ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings', + ERR_INVALID_PATH = (s) => `fast-redact – Invalid path (${s})` + } = opts + + return function validate ({ paths }) { + paths.forEach((s) => { + if (typeof s !== 'string') { + throw Error(ERR_PATHS_MUST_BE_STRINGS()) + } + try { + if (/〇/.test(s)) throw Error() + const proxy = new Proxy({}, { get: () => proxy, set: () => { throw Error() } }) + const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\*/, '〇').replace(/\.\*/g, '.〇').replace(/\[\*\]/g, '[〇]') + if (/\n|\r|;/.test(expr)) throw Error() + if (/\/\*/.test(expr)) throw Error() + runInContext(` + (function () { + 'use strict' + o${expr} + if ([o${expr}].length !== 1) throw Error() + })() + `, createContext({ o: proxy, 〇: null }), { + codeGeneration: { strings: false, wasm: false } + }) + } catch (e) { + throw Error(ERR_INVALID_PATH(s)) + } + }) + } +} + + +/***/ }), + +/***/ 50460: +/***/ ((module) => { + +module.exports = stringify +stringify.default = stringify +stringify.stable = deterministicStringify +stringify.stableStringify = deterministicStringify + +var LIMIT_REPLACE_NODE = '[...]' +var CIRCULAR_REPLACE_NODE = '[Circular]' + +var arr = [] +var replacerStack = [] + +function defaultOptions () { + return { + depthLimit: Number.MAX_SAFE_INTEGER, + edgesLimit: Number.MAX_SAFE_INTEGER + } +} + +// Regular stringify +function stringify (obj, replacer, spacer, options) { + if (typeof options === 'undefined') { + options = defaultOptions() + } + + decirc(obj, '', 0, [], undefined, 0, options) + var res + try { + if (replacerStack.length === 0) { + res = JSON.stringify(obj, replacer, spacer) + } else { + res = JSON.stringify(obj, replaceGetterValues(replacer), spacer) + } + } catch (_) { + return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]') + } finally { + while (arr.length !== 0) { + var part = arr.pop() + if (part.length === 4) { + Object.defineProperty(part[0], part[1], part[3]) + } else { + part[0][part[1]] = part[2] + } + } + } + return res +} + +function setReplace (replace, val, k, parent) { + var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k) + if (propertyDescriptor.get !== undefined) { + if (propertyDescriptor.configurable) { + Object.defineProperty(parent, k, { value: replace }) + arr.push([parent, k, val, propertyDescriptor]) + } else { + replacerStack.push([val, k, replace]) + } + } else { + parent[k] = replace + arr.push([parent, k, val]) + } +} + +function decirc (val, k, edgeIndex, stack, parent, depth, options) { + depth += 1 + var i + if (typeof val === 'object' && val !== null) { + for (i = 0; i < stack.length; i++) { + if (stack[i] === val) { + setReplace(CIRCULAR_REPLACE_NODE, val, k, parent) + return + } + } + + if ( + typeof options.depthLimit !== 'undefined' && + depth > options.depthLimit + ) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent) + return + } + + if ( + typeof options.edgesLimit !== 'undefined' && + edgeIndex + 1 > options.edgesLimit + ) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent) + return + } + + stack.push(val) + // Optimize for Arrays. Big arrays could kill the performance otherwise! + if (Array.isArray(val)) { + for (i = 0; i < val.length; i++) { + decirc(val[i], i, i, stack, val, depth, options) + } + } else { + var keys = Object.keys(val) + for (i = 0; i < keys.length; i++) { + var key = keys[i] + decirc(val[key], key, i, stack, val, depth, options) + } + } + stack.pop() + } +} + +// Stable-stringify +function compareFunction (a, b) { + if (a < b) { + return -1 + } + if (a > b) { + return 1 + } + return 0 +} + +function deterministicStringify (obj, replacer, spacer, options) { + if (typeof options === 'undefined') { + options = defaultOptions() + } + + var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj + var res + try { + if (replacerStack.length === 0) { + res = JSON.stringify(tmp, replacer, spacer) + } else { + res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer) + } + } catch (_) { + return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]') + } finally { + // Ensure that we restore the object as it was. + while (arr.length !== 0) { + var part = arr.pop() + if (part.length === 4) { + Object.defineProperty(part[0], part[1], part[3]) + } else { + part[0][part[1]] = part[2] + } + } + } + return res +} + +function deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) { + depth += 1 + var i + if (typeof val === 'object' && val !== null) { + for (i = 0; i < stack.length; i++) { + if (stack[i] === val) { + setReplace(CIRCULAR_REPLACE_NODE, val, k, parent) + return + } + } + try { + if (typeof val.toJSON === 'function') { + return + } + } catch (_) { + return + } + + if ( + typeof options.depthLimit !== 'undefined' && + depth > options.depthLimit + ) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent) + return + } + + if ( + typeof options.edgesLimit !== 'undefined' && + edgeIndex + 1 > options.edgesLimit + ) { + setReplace(LIMIT_REPLACE_NODE, val, k, parent) + return + } + + stack.push(val) + // Optimize for Arrays. Big arrays could kill the performance otherwise! + if (Array.isArray(val)) { + for (i = 0; i < val.length; i++) { + deterministicDecirc(val[i], i, i, stack, val, depth, options) + } + } else { + // Create a temporary object in the required way + var tmp = {} + var keys = Object.keys(val).sort(compareFunction) + for (i = 0; i < keys.length; i++) { + var key = keys[i] + deterministicDecirc(val[key], key, i, stack, val, depth, options) + tmp[key] = val[key] + } + if (typeof parent !== 'undefined') { + arr.push([parent, k, val]) + parent[k] = tmp + } else { + return tmp + } + } + stack.pop() + } +} + +// wraps replacer function to handle values we couldn't replace +// and mark them as replaced value +function replaceGetterValues (replacer) { + replacer = + typeof replacer !== 'undefined' + ? replacer + : function (k, v) { + return v + } + return function (key, val) { + if (replacerStack.length > 0) { + for (var i = 0; i < replacerStack.length; i++) { + var part = replacerStack[i] + if (part[1] === key && part[0] === val) { + val = part[2] + replacerStack.splice(i, 1) + break + } + } + } + return replacer.call(this, key, val) + } +} + + +/***/ }), + +/***/ 49733: +/***/ ((module) => { + +"use strict"; + + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; + + +/***/ }), + +/***/ 64517: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var implementation = __nccwpck_require__(49733); + +module.exports = Function.prototype.bind || implementation; + + +/***/ }), + +/***/ 686: +/***/ ((module) => { + +"use strict"; + + +// These use the global symbol registry so that multiple copies of this +// library can work together in case they are not deduped. +const GENSYNC_START = Symbol.for("gensync:v1:start"); +const GENSYNC_SUSPEND = Symbol.for("gensync:v1:suspend"); + +const GENSYNC_EXPECTED_START = "GENSYNC_EXPECTED_START"; +const GENSYNC_EXPECTED_SUSPEND = "GENSYNC_EXPECTED_SUSPEND"; +const GENSYNC_OPTIONS_ERROR = "GENSYNC_OPTIONS_ERROR"; +const GENSYNC_RACE_NONEMPTY = "GENSYNC_RACE_NONEMPTY"; +const GENSYNC_ERRBACK_NO_CALLBACK = "GENSYNC_ERRBACK_NO_CALLBACK"; + +module.exports = Object.assign( + function gensync(optsOrFn) { + let genFn = optsOrFn; + if (typeof optsOrFn !== "function") { + genFn = newGenerator(optsOrFn); + } else { + genFn = wrapGenerator(optsOrFn); + } + + return Object.assign(genFn, makeFunctionAPI(genFn)); + }, + { + all: buildOperation({ + name: "all", + arity: 1, + sync: function(args) { + const items = Array.from(args[0]); + return items.map(item => evaluateSync(item)); + }, + async: function(args, resolve, reject) { + const items = Array.from(args[0]); + + if (items.length === 0) { + Promise.resolve().then(() => resolve([])); + return; + } + + let count = 0; + const results = items.map(() => undefined); + items.forEach((item, i) => { + evaluateAsync( + item, + val => { + results[i] = val; + count += 1; + + if (count === results.length) resolve(results); + }, + reject + ); + }); + }, + }), + race: buildOperation({ + name: "race", + arity: 1, + sync: function(args) { + const items = Array.from(args[0]); + if (items.length === 0) { + throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY); + } + + return evaluateSync(items[0]); + }, + async: function(args, resolve, reject) { + const items = Array.from(args[0]); + if (items.length === 0) { + throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY); + } + + for (const item of items) { + evaluateAsync(item, resolve, reject); + } + }, + }), + } +); + +/** + * Given a generator function, return the standard API object that executes + * the generator and calls the callbacks. + */ +function makeFunctionAPI(genFn) { + const fns = { + sync: function(...args) { + return evaluateSync(genFn.apply(this, args)); + }, + async: function(...args) { + return new Promise((resolve, reject) => { + evaluateAsync(genFn.apply(this, args), resolve, reject); + }); + }, + errback: function(...args) { + const cb = args.pop(); + if (typeof cb !== "function") { + throw makeError( + "Asynchronous function called without callback", + GENSYNC_ERRBACK_NO_CALLBACK + ); + } + + let gen; + try { + gen = genFn.apply(this, args); + } catch (err) { + cb(err); + return; + } + + evaluateAsync(gen, val => cb(undefined, val), err => cb(err)); + }, + }; + return fns; +} + +function assertTypeof(type, name, value, allowUndefined) { + if ( + typeof value === type || + (allowUndefined && typeof value === "undefined") + ) { + return; + } + + let msg; + if (allowUndefined) { + msg = `Expected opts.${name} to be either a ${type}, or undefined.`; + } else { + msg = `Expected opts.${name} to be a ${type}.`; + } + + throw makeError(msg, GENSYNC_OPTIONS_ERROR); +} +function makeError(msg, code) { + return Object.assign(new Error(msg), { code }); +} + +/** + * Given an options object, return a new generator that dispatches the + * correct handler based on sync or async execution. + */ +function newGenerator({ name, arity, sync, async, errback }) { + assertTypeof("string", "name", name, true /* allowUndefined */); + assertTypeof("number", "arity", arity, true /* allowUndefined */); + assertTypeof("function", "sync", sync); + assertTypeof("function", "async", async, true /* allowUndefined */); + assertTypeof("function", "errback", errback, true /* allowUndefined */); + if (async && errback) { + throw makeError( + "Expected one of either opts.async or opts.errback, but got _both_.", + GENSYNC_OPTIONS_ERROR + ); + } + + if (typeof name !== "string") { + let fnName; + if (errback && errback.name && errback.name !== "errback") { + fnName = errback.name; + } + if (async && async.name && async.name !== "async") { + fnName = async.name.replace(/Async$/, ""); + } + if (sync && sync.name && sync.name !== "sync") { + fnName = sync.name.replace(/Sync$/, ""); + } + + if (typeof fnName === "string") { + name = fnName; + } + } + + if (typeof arity !== "number") { + arity = sync.length; + } + + return buildOperation({ + name, + arity, + sync: function(args) { + return sync.apply(this, args); + }, + async: function(args, resolve, reject) { + if (async) { + async.apply(this, args).then(resolve, reject); + } else if (errback) { + errback.call(this, ...args, (err, value) => { + if (err == null) resolve(value); + else reject(err); + }); + } else { + resolve(sync.apply(this, args)); + } + }, + }); +} + +function wrapGenerator(genFn) { + return setFunctionMetadata(genFn.name, genFn.length, function(...args) { + return genFn.apply(this, args); + }); +} + +function buildOperation({ name, arity, sync, async }) { + return setFunctionMetadata(name, arity, function*(...args) { + const resume = yield GENSYNC_START; + if (!resume) { + // Break the tail call to avoid a bug in V8 v6.X with --harmony enabled. + const res = sync.call(this, args); + return res; + } + + let result; + try { + async.call( + this, + args, + value => { + if (result) return; + + result = { value }; + resume(); + }, + err => { + if (result) return; + + result = { err }; + resume(); + } + ); + } catch (err) { + result = { err }; + resume(); + } + + // Suspend until the callbacks run. Will resume synchronously if the + // callback was already called. + yield GENSYNC_SUSPEND; + + if (result.hasOwnProperty("err")) { + throw result.err; + } + + return result.value; + }); +} + +function evaluateSync(gen) { + let value; + while (!({ value } = gen.next()).done) { + assertStart(value, gen); + } + return value; +} + +function evaluateAsync(gen, resolve, reject) { + (function step() { + try { + let value; + while (!({ value } = gen.next()).done) { + assertStart(value, gen); + + // If this throws, it is considered to have broken the contract + // established for async handlers. If these handlers are called + // synchronously, it is also considered bad behavior. + let sync = true; + let didSyncResume = false; + const out = gen.next(() => { + if (sync) { + didSyncResume = true; + } else { + step(); + } + }); + sync = false; + + assertSuspend(out, gen); + + if (!didSyncResume) { + // Callback wasn't called synchronously, so break out of the loop + // and let it call 'step' later. + return; + } + } + + return resolve(value); + } catch (err) { + return reject(err); + } + })(); +} + +function assertStart(value, gen) { + if (value === GENSYNC_START) return; + + throwError( + gen, + makeError( + `Got unexpected yielded value in gensync generator: ${JSON.stringify( + value + )}. Did you perhaps mean to use 'yield*' instead of 'yield'?`, + GENSYNC_EXPECTED_START + ) + ); +} +function assertSuspend({ value, done }, gen) { + if (!done && value === GENSYNC_SUSPEND) return; + + throwError( + gen, + makeError( + done + ? "Unexpected generator completion. If you get this, it is probably a gensync bug." + : `Expected GENSYNC_SUSPEND, got ${JSON.stringify( + value + )}. If you get this, it is probably a gensync bug.`, + GENSYNC_EXPECTED_SUSPEND + ) + ); +} + +function throwError(gen, err) { + // Call `.throw` so that users can step in a debugger to easily see which + // 'yield' passed an unexpected value. If the `.throw` call didn't throw + // back to the generator, we explicitly do it to stop the error + // from being swallowed by user code try/catches. + if (gen.throw) gen.throw(err); + throw err; +} + +function isIterable(value) { + return ( + !!value && + (typeof value === "object" || typeof value === "function") && + !value[Symbol.iterator] + ); +} + +function setFunctionMetadata(name, arity, fn) { + if (typeof name === "string") { + // This should always work on the supported Node versions, but for the + // sake of users that are compiling to older versions, we check for + // configurability so we don't throw. + const nameDesc = Object.getOwnPropertyDescriptor(fn, "name"); + if (!nameDesc || nameDesc.configurable) { + Object.defineProperty( + fn, + "name", + Object.assign(nameDesc || {}, { + configurable: true, + value: name, + }) + ); + } + } + + if (typeof arity === "number") { + const lengthDesc = Object.getOwnPropertyDescriptor(fn, "length"); + if (!lengthDesc || lengthDesc.configurable) { + Object.defineProperty( + fn, + "length", + Object.assign(lengthDesc || {}, { + configurable: true, + value: arity, + }) + ); + } + } + + return fn; +} + + +/***/ }), + +/***/ 15548: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +module.exports = __nccwpck_require__(47796); + + +/***/ }), + +/***/ 89132: +/***/ ((module) => { + +"use strict"; + + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} + + +/***/ }), + +/***/ 90552: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var fs = __nccwpck_require__(57147) +var polyfills = __nccwpck_require__(11290) +var legacy = __nccwpck_require__(54410) +var clone = __nccwpck_require__(89132) + +var util = __nccwpck_require__(73837) + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __nccwpck_require__(39491).equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} + + +/***/ }), + +/***/ 54410: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stream = (__nccwpck_require__(12781).Stream) + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} + + +/***/ }), + +/***/ 11290: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var constants = __nccwpck_require__(22057) + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} + + +/***/ }), + +/***/ 94708: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const fs = __nccwpck_require__(57147); +const sections = __nccwpck_require__(31040); +const defaults = __nccwpck_require__(44591); +const stringify = __nccwpck_require__(31843); +const excerpt = __nccwpck_require__(48290); +const engines = __nccwpck_require__(83186); +const toFile = __nccwpck_require__(11835); +const parse = __nccwpck_require__(44040); +const utils = __nccwpck_require__(33645); + +/** + * Takes a string or object with `content` property, extracts + * and parses front-matter from the string, then returns an object + * with `data`, `content` and other [useful properties](#returned-object). + * + * ```js + * const matter = require('gray-matter'); + * console.log(matter('---\ntitle: Home\n---\nOther stuff')); + * //=> { data: { title: 'Home'}, content: 'Other stuff' } + * ``` + * @param {Object|String} `input` String, or object with `content` string + * @param {Object} `options` + * @return {Object} + * @api public + */ + +function matter(input, options) { + if (input === '') { + return { data: {}, content: input, excerpt: '', orig: input }; + } + + let file = toFile(input); + const cached = matter.cache[file.content]; + + if (!options) { + if (cached) { + file = Object.assign({}, cached); + file.orig = cached.orig; + return file; + } + + // only cache if there are no options passed. if we cache when options + // are passed, we would need to also cache options values, which would + // negate any performance benefits of caching + matter.cache[file.content] = file; + } + + return parseMatter(file, options); +} + +/** + * Parse front matter + */ + +function parseMatter(file, options) { + const opts = defaults(options); + const open = opts.delimiters[0]; + const close = '\n' + opts.delimiters[1]; + let str = file.content; + + if (opts.language) { + file.language = opts.language; + } + + // get the length of the opening delimiter + const openLen = open.length; + if (!utils.startsWith(str, open, openLen)) { + excerpt(file, opts); + return file; + } + + // if the next character after the opening delimiter is + // a character from the delimiter, then it's not a front- + // matter delimiter + if (str.charAt(openLen) === open.slice(-1)) { + return file; + } + + // strip the opening delimiter + str = str.slice(openLen); + const len = str.length; + + // use the language defined after first delimiter, if it exists + const language = matter.language(str, opts); + if (language.name) { + file.language = language.name; + str = str.slice(language.raw.length); + } + + // get the index of the closing delimiter + let closeIndex = str.indexOf(close); + if (closeIndex === -1) { + closeIndex = len; + } + + // get the raw front-matter block + file.matter = str.slice(0, closeIndex); + + const block = file.matter.replace(/^\s*#[^\n]+/gm, '').trim(); + if (block === '') { + file.isEmpty = true; + file.empty = file.content; + file.data = {}; + } else { + + // create file.data by parsing the raw file.matter block + file.data = parse(file.language, file.matter, opts); + } + + // update file.content + if (closeIndex === len) { + file.content = ''; + } else { + file.content = str.slice(closeIndex + close.length); + if (file.content[0] === '\r') { + file.content = file.content.slice(1); + } + if (file.content[0] === '\n') { + file.content = file.content.slice(1); + } + } + + excerpt(file, opts); + + if (opts.sections === true || typeof opts.section === 'function') { + sections(file, opts.section); + } + return file; +} + +/** + * Expose engines + */ + +matter.engines = engines; + +/** + * Stringify an object to YAML or the specified language, and + * append it to the given string. By default, only YAML and JSON + * can be stringified. See the [engines](#engines) section to learn + * how to stringify other languages. + * + * ```js + * console.log(matter.stringify('foo bar baz', {title: 'Home'})); + * // results in: + * // --- + * // title: Home + * // --- + * // foo bar baz + * ``` + * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string. + * @param {Object} `data` Front matter to stringify. + * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml]. + * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string. + * @api public + */ + +matter.stringify = function(file, data, options) { + if (typeof file === 'string') file = matter(file, options); + return stringify(file, data, options); +}; + +/** + * Synchronously read a file from the file system and parse + * front matter. Returns the same object as the [main function](#matter). + * + * ```js + * const file = matter.read('./content/blog-post.md'); + * ``` + * @param {String} `filepath` file path of the file to read. + * @param {Object} `options` [Options](#options) to pass to gray-matter. + * @return {Object} Returns [an object](#returned-object) with `data` and `content` + * @api public + */ + +matter.read = function(filepath, options) { + const str = fs.readFileSync(filepath, 'utf8'); + const file = matter(str, options); + file.path = filepath; + return file; +}; + +/** + * Returns true if the given `string` has front matter. + * @param {String} `string` + * @param {Object} `options` + * @return {Boolean} True if front matter exists. + * @api public + */ + +matter.test = function(str, options) { + return utils.startsWith(str, defaults(options).delimiters[0]); +}; + +/** + * Detect the language to use, if one is defined after the + * first front-matter delimiter. + * @param {String} `string` + * @param {Object} `options` + * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed + */ + +matter.language = function(str, options) { + const opts = defaults(options); + const open = opts.delimiters[0]; + + if (matter.test(str)) { + str = str.slice(open.length); + } + + const language = str.slice(0, str.search(/\r?\n/)); + return { + raw: language, + name: language ? language.trim() : '' + }; +}; + +/** + * Expose `matter` + */ + +matter.cache = {}; +matter.clearCache = function() { + matter.cache = {}; +}; +module.exports = matter; + + +/***/ }), + +/***/ 44591: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const engines = __nccwpck_require__(83186); +const utils = __nccwpck_require__(33645); + +module.exports = function(options) { + const opts = Object.assign({}, options); + + // ensure that delimiters are an array + opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---'); + if (opts.delimiters.length === 1) { + opts.delimiters.push(opts.delimiters[0]); + } + + opts.language = (opts.language || opts.lang || 'yaml').toLowerCase(); + opts.engines = Object.assign({}, engines, opts.parsers, opts.engines); + return opts; +}; + + +/***/ }), + +/***/ 9801: +/***/ ((module) => { + +"use strict"; + + +module.exports = function(name, options) { + let engine = options.engines[name] || options.engines[aliase(name)]; + if (typeof engine === 'undefined') { + throw new Error('gray-matter engine "' + name + '" is not registered'); + } + if (typeof engine === 'function') { + engine = { parse: engine }; + } + return engine; +}; + +function aliase(name) { + switch (name.toLowerCase()) { + case 'js': + case 'javascript': + return 'javascript'; + case 'coffee': + case 'coffeescript': + case 'cson': + return 'coffee'; + case 'yaml': + case 'yml': + return 'yaml'; + default: { + return name; + } + } +} + + +/***/ }), + +/***/ 83186: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +const yaml = __nccwpck_require__(26264); + +/** + * Default engines + */ + +const engines = exports = module.exports; + +/** + * YAML + */ + +engines.yaml = { + parse: yaml.safeLoad.bind(yaml), + stringify: yaml.safeDump.bind(yaml) +}; + +/** + * JSON + */ + +engines.json = { + parse: JSON.parse.bind(JSON), + stringify: function(obj, options) { + const opts = Object.assign({replacer: null, space: 2}, options); + return JSON.stringify(obj, opts.replacer, opts.space); + } +}; + +/** + * JavaScript + */ + +engines.javascript = { + parse: function parse(str, options, wrap) { + /* eslint no-eval: 0 */ + try { + if (wrap !== false) { + str = '(function() {\nreturn ' + str.trim() + ';\n}());'; + } + return eval(str) || {}; + } catch (err) { + if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) { + return parse(str, options, false); + } + throw new SyntaxError(err); + } + }, + stringify: function() { + throw new Error('stringifying JavaScript is not supported'); + } +}; + + +/***/ }), + +/***/ 48290: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const defaults = __nccwpck_require__(44591); + +module.exports = function(file, options) { + const opts = defaults(options); + + if (file.data == null) { + file.data = {}; + } + + if (typeof opts.excerpt === 'function') { + return opts.excerpt(file, opts); + } + + const sep = file.data.excerpt_separator || opts.excerpt_separator; + if (sep == null && (opts.excerpt === false || opts.excerpt == null)) { + return file; + } + + const delimiter = typeof opts.excerpt === 'string' + ? opts.excerpt + : (sep || opts.delimiters[0]); + + // if enabled, get the excerpt defined after front-matter + const idx = file.content.indexOf(delimiter); + if (idx !== -1) { + file.excerpt = file.content.slice(0, idx); + } + + return file; +}; + + +/***/ }), + +/***/ 44040: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const getEngine = __nccwpck_require__(9801); +const defaults = __nccwpck_require__(44591); + +module.exports = function(language, str, options) { + const opts = defaults(options); + const engine = getEngine(language, opts); + if (typeof engine.parse !== 'function') { + throw new TypeError('expected "' + language + '.parse" to be a function'); + } + return engine.parse(str, opts); +}; + + +/***/ }), + +/***/ 31843: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const typeOf = __nccwpck_require__(49413); +const getEngine = __nccwpck_require__(9801); +const defaults = __nccwpck_require__(44591); + +module.exports = function(file, data, options) { + if (data == null && options == null) { + switch (typeOf(file)) { + case 'object': + data = file.data; + options = {}; + break; + case 'string': + return file; + default: { + throw new TypeError('expected file to be a string or object'); + } + } + } + + const str = file.content; + const opts = defaults(options); + if (data == null) { + if (!opts.data) return file; + data = opts.data; + } + + const language = file.language || opts.language; + const engine = getEngine(language, opts); + if (typeof engine.stringify !== 'function') { + throw new TypeError('expected "' + language + '.stringify" to be a function'); + } + + data = Object.assign({}, file.data, data); + const open = opts.delimiters[0]; + const close = opts.delimiters[1]; + const matter = engine.stringify(data, options).trim(); + let buf = ''; + + if (matter !== '{}') { + buf = newline(open) + newline(matter) + newline(close); + } + + if (typeof file.excerpt === 'string' && file.excerpt !== '') { + if (str.indexOf(file.excerpt.trim()) === -1) { + buf += newline(file.excerpt) + newline(close); + } + } + + return buf + newline(str); +}; + +function newline(str) { + return str.slice(-1) !== '\n' ? str + '\n' : str; +} + + +/***/ }), + +/***/ 11835: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const typeOf = __nccwpck_require__(49413); +const stringify = __nccwpck_require__(31843); +const utils = __nccwpck_require__(33645); + +/** + * Normalize the given value to ensure an object is returned + * with the expected properties. + */ + +module.exports = function(file) { + if (typeOf(file) !== 'object') { + file = { content: file }; + } + + if (typeOf(file.data) !== 'object') { + file.data = {}; + } + + // if file was passed as an object, ensure that + // "file.content" is set + if (file.contents && file.content == null) { + file.content = file.contents; + } + + // set non-enumerable properties on the file object + utils.define(file, 'orig', utils.toBuffer(file.content)); + utils.define(file, 'language', file.language || ''); + utils.define(file, 'matter', file.matter || ''); + utils.define(file, 'stringify', function(data, options) { + if (options && options.language) { + file.language = options.language; + } + return stringify(file, data, options); + }); + + // strip BOM and ensure that "file.content" is a string + file.content = utils.toString(file.content); + file.isEmpty = false; + file.excerpt = ''; + return file; +}; + + +/***/ }), + +/***/ 33645: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +const stripBom = __nccwpck_require__(26574); +const typeOf = __nccwpck_require__(49413); + +exports.define = function(obj, key, val) { + Reflect.defineProperty(obj, key, { + enumerable: false, + configurable: true, + writable: true, + value: val + }); +}; + +/** + * Returns true if `val` is a buffer + */ + +exports.isBuffer = function(val) { + return typeOf(val) === 'buffer'; +}; + +/** + * Returns true if `val` is an object + */ + +exports.isObject = function(val) { + return typeOf(val) === 'object'; +}; + +/** + * Cast `input` to a buffer + */ + +exports.toBuffer = function(input) { + return typeof input === 'string' ? Buffer.from(input) : input; +}; + +/** + * Cast `val` to a string. + */ + +exports.toString = function(input) { + if (exports.isBuffer(input)) return stripBom(String(input)); + if (typeof input !== 'string') { + throw new TypeError('expected input to be a string or buffer'); + } + return stripBom(input); +}; + +/** + * Cast `val` to an array. + */ + +exports.arrayify = function(val) { + return val ? (Array.isArray(val) ? val : [val]) : []; +}; + +/** + * Returns true if `str` starts with `substr`. + */ + +exports.startsWith = function(str, substr, len) { + if (typeof len !== 'number') len = substr.length; + return str.slice(0, len) === substr; +}; + + +/***/ }), + +/***/ 64250: +/***/ ((module) => { + +"use strict"; + +module.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf('--'); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); +}; + + +/***/ }), + +/***/ 793: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var bind = __nccwpck_require__(64517); + +module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + + +/***/ }), + +/***/ 76919: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +try { + var util = __nccwpck_require__(73837); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = __nccwpck_require__(27526); +} + + +/***/ }), + +/***/ 27526: +/***/ ((module) => { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + + +/***/ }), + +/***/ 84989: +/***/ ((module) => { + +"use strict"; + + +module.exports = alphabetical + +// Check if the given character code, or the character code at the first +// character, is alphabetical. +function alphabetical(character) { + var code = typeof character === 'string' ? character.charCodeAt(0) : character + + return ( + (code >= 97 && code <= 122) /* a-z */ || + (code >= 65 && code <= 90) /* A-Z */ + ) +} + + +/***/ }), + +/***/ 41536: +/***/ ((module) => { + +"use strict"; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return !/[^0-9a-z\xDF-\xFF]/.test(str.toLowerCase()); +}; + + +/***/ }), + +/***/ 1931: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var alphabetical = __nccwpck_require__(84989) +var decimal = __nccwpck_require__(76995) + +module.exports = alphanumerical + +// Check if the given character code, or the character code at the first +// character, is alphanumerical. +function alphanumerical(character) { + return alphabetical(character) || decimal(character) +} + + +/***/ }), + +/***/ 6324: +/***/ ((module) => { + +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ + +module.exports = function isBuffer (obj) { + return obj != null && obj.constructor != null && + typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + + +/***/ }), + +/***/ 18746: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var has = __nccwpck_require__(793); + +function specifierIncluded(current, specifier) { + var nodeParts = current.split('.'); + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } + if (op === '>=') { + return cur >= ver; + } + return false; + } + return op === '>='; +} + +function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; +} + +function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === 'boolean') { + return specifierValue; + } + + var current = typeof nodeVersion === 'undefined' + ? process.versions && process.versions.node + : nodeVersion; + + if (typeof current !== 'string') { + throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); + } + + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); +} + +var data = __nccwpck_require__(94651); + +module.exports = function isCore(x, nodeVersion) { + return has(data, x) && versionIncluded(nodeVersion, data[x]); +}; + + +/***/ }), + +/***/ 76995: +/***/ ((module) => { + +"use strict"; + + +module.exports = decimal + +// Check if the given character code, or the character code at the first +// character, is decimal. +function decimal(character) { + var code = typeof character === 'string' ? character.charCodeAt(0) : character + + return code >= 48 && code <= 57 /* 0-9 */ +} + + +/***/ }), + +/***/ 77242: +/***/ ((module) => { + +"use strict"; +/*! + * is-extendable <https://github.com/jonschlinkert/is-extendable> + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + + + +module.exports = function isExtendable(val) { + return typeof val !== 'undefined' && val !== null + && (typeof val === 'object' || typeof val === 'function'); +}; + + +/***/ }), + +/***/ 95731: +/***/ ((module) => { + +"use strict"; + + +module.exports = hexadecimal + +// Check if the given character code, or the character code at the first +// character, is hexadecimal. +function hexadecimal(character) { + var code = typeof character === 'string' ? character.charCodeAt(0) : character + + return ( + (code >= 97 /* a */ && code <= 102) /* z */ || + (code >= 65 /* A */ && code <= 70) /* Z */ || + (code >= 48 /* A */ && code <= 57) /* Z */ + ) +} + + +/***/ }), + +/***/ 67337: +/***/ ((module) => { + +"use strict"; + + +module.exports = value => { + if (Object.prototype.toString.call(value) !== '[object Object]') { + return false; + } + + const prototype = Object.getPrototypeOf(value); + return prototype === null || prototype === Object.prototype; +}; + + +/***/ }), + +/***/ 35708: +/***/ ((module) => { + +"use strict"; + + +module.exports = whitespace + +var fromCode = String.fromCharCode +var re = /\s/ + +// Check if the given character code, or the character code at the first +// character, is a whitespace character. +function whitespace(character) { + return re.test( + typeof character === 'number' ? fromCode(character) : character.charAt(0) + ) +} + + +/***/ }), + +/***/ 59685: +/***/ ((module) => { + +"use strict"; + + +module.exports = wordCharacter + +var fromCode = String.fromCharCode +var re = /\w/ + +// Check if the given character code, or the character code at the first +// character, is a word character. +function wordCharacter(character) { + return re.test( + typeof character === 'number' ? fromCode(character) : character.charAt(0) + ) +} + + +/***/ }), + +/***/ 48035: +/***/ ((__unused_webpack_module, exports) => { + +// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell +// License: MIT. (See LICENSE.) + +Object.defineProperty(exports, "__esModule", ({ + value: true +})) + +// This regex comes from regex.coffee, and is inserted here by generate-index.js +// (run `npm run build`). +exports["default"] = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g + +exports.matchToToken = function(match) { + var token = {type: "invalid", value: match[0], closed: undefined} + if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]) + else if (match[ 5]) token.type = "comment" + else if (match[ 6]) token.type = "comment", token.closed = !!match[7] + else if (match[ 8]) token.type = "regex" + else if (match[ 9]) token.type = "number" + else if (match[10]) token.type = "name" + else if (match[11]) token.type = "punctuator" + else if (match[12]) token.type = "whitespace" + return token +} + + +/***/ }), + +/***/ 26264: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + + +var yaml = __nccwpck_require__(34847); + + +module.exports = yaml; + + +/***/ }), + +/***/ 34847: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + + +var loader = __nccwpck_require__(20055); +var dumper = __nccwpck_require__(29652); + + +function deprecated(name) { + return function () { + throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + }; +} + + +module.exports.Type = __nccwpck_require__(92355); +module.exports.Schema = __nccwpck_require__(61181); +module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(93487); +module.exports.JSON_SCHEMA = __nccwpck_require__(74637); +module.exports.CORE_SCHEMA = __nccwpck_require__(80119); +module.exports.DEFAULT_SAFE_SCHEMA = __nccwpck_require__(39591); +module.exports.DEFAULT_FULL_SCHEMA = __nccwpck_require__(54250); +module.exports.load = loader.load; +module.exports.loadAll = loader.loadAll; +module.exports.safeLoad = loader.safeLoad; +module.exports.safeLoadAll = loader.safeLoadAll; +module.exports.dump = dumper.dump; +module.exports.safeDump = dumper.safeDump; +module.exports.YAMLException = __nccwpck_require__(30962); + +// Deprecated schema names from JS-YAML 2.0.x +module.exports.MINIMAL_SCHEMA = __nccwpck_require__(93487); +module.exports.SAFE_SCHEMA = __nccwpck_require__(39591); +module.exports.DEFAULT_SCHEMA = __nccwpck_require__(54250); + +// Deprecated functions from JS-YAML 1.x.x +module.exports.scan = deprecated('scan'); +module.exports.parse = deprecated('parse'); +module.exports.compose = deprecated('compose'); +module.exports.addConstructor = deprecated('addConstructor'); + + +/***/ }), + +/***/ 75974: +/***/ ((module) => { + +"use strict"; + + + +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); +} + + +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); +} + + +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; + + return [ sequence ]; +} + + +function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; +} + + +function repeat(string, count) { + var result = '', cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; +} + + +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +} + + +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; + + +/***/ }), + +/***/ 29652: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable no-use-before-define*/ + +var common = __nccwpck_require__(75974); +var YAMLException = __nccwpck_require__(30962); +var DEFAULT_FULL_SCHEMA = __nccwpck_require__(54250); +var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(39591); + +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + +var ESCAPE_SEQUENCES = {}; + +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; + +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; + +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + + if (map === null) return {}; + + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +function encodeHex(character) { + var string, handle, length; + + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common.repeat('0', length - string.length) + string; +} + +function State(options) { + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + + this.tag = null; + this.result = ''; + + this.duplicates = []; + this.usedDuplicates = null; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') result += ind; + + result += line; + } + + return result; +} + +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} + +function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) + || (0x10000 <= c && c <= 0x10FFFF); +} + +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// [24] b-line-feed ::= #xA /* LF */ +// [25] b-carriage-return ::= #xD /* CR */ +// [3] c-byte-order-mark ::= #xFEFF +function isNsChar(c) { + return isPrintable(c) && !isWhitespace(c) + // byte-order-mark + && c !== 0xFEFF + // b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; +} + +// Simplified test for values allowed after the first character in plain style. +function isPlainSafe(c, prev) { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return isPrintable(c) && c !== 0xFEFF + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // - ":" - "#" + // /* An ns-char preceding */ "#" + && c !== CHAR_COLON + && ((c !== CHAR_SHARP) || (prev && isNsChar(prev))); +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return isPrintable(c) && c !== 0xFEFF + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { + var i; + var char, prev_char; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(string.charCodeAt(0)) + && !isWhitespace(string.charCodeAt(string.length - 1)); + + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) + ? STYLE_PLAIN : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey) { + state.dump = (function () { + if (string.length === 0) { + return "''"; + } + if (!state.noCompatMode && + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + return "'" + string + "'"; + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException('impossible error: invalid scalar style'); + } + }()); +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); + + return indentIndicator + chomp + '\n'; +} + +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; + + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char, nextChar; + var escapeSeq; + + for (var i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) { + nextChar = string.charCodeAt(i + 1); + if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) { + // Combine the surrogate pair and store it escaped. + result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); + // Advance index one extra since we already used that char here. + i++; continue; + } + } + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) + ? string[i] + : escapeSeq || encodeHex(char); + } + + return result; +} + +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; +} + +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} + +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + + pairBuffer = ''; + if (index !== 0) pairBuffer += ', '; + + if (state.condenseFlow) pairBuffer += '"'; + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) pairBuffer += '? '; + + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; +} + +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} + +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + state.tag = explicit ? type.tag : '?'; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString.call(state.dump); + + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level; + if (block && (state.dump.length !== 0)) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, arrayLevel, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) return false; + throw new YAMLException('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + state.dump = '!<' + state.tag + '> ' + state.dump; + } + } + + return true; +} + +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} + +function dump(input, options) { + options = options || {}; + + var state = new State(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; + + return ''; +} + +function safeDump(input, options) { + return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +} + +module.exports.dump = dump; +module.exports.safeDump = safeDump; + + +/***/ }), + +/***/ 30962: +/***/ ((module) => { + +"use strict"; +// YAML error class. http://stackoverflow.com/questions/8458984 +// + + +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); + + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } +} + + +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; + + +YAMLException.prototype.toString = function toString(compact) { + var result = this.name + ': '; + + result += this.reason || '(unknown reason)'; + + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); + } + + return result; +}; + + +module.exports = YAMLException; + + +/***/ }), + +/***/ 20055: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable max-len,no-use-before-define*/ + +var common = __nccwpck_require__(75974); +var YAMLException = __nccwpck_require__(30962); +var Mark = __nccwpck_require__(74548); +var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(39591); +var DEFAULT_FULL_SCHEMA = __nccwpck_require__(54250); + + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + + +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; + + +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; + + +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + +function _class(obj) { return Object.prototype.toString.call(obj); } + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +} + +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} + +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} + +function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; + + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} + +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; +} + +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); +} + +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + + +function State(input, options) { + this.input = input; + + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; + this.onWarning = options['onWarning'] || null; + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; + + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + + this.documents = []; + + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + +} + + +function generateError(state, message) { + return new YAMLException( + message, + new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); +} + +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + + +var directiveHandlers = { + + YAML: function handleYamlDirective(state, name, args) { + + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = (minor < 2); + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + + TAG: function handleTagDirective(state, name, args) { + + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + state.tagMap[handle] = prefix; + } +}; + + +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } +} + +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { + var index, quantity; + + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } + + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } + } + + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; + } + + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + state.line = startLine || state.line; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + _result[keyNode] = valueNode; + delete overridableKeys[keyNode]; + } + + return _result; +} + +function readLineBreak(state) { + var ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; +} + +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; +} + +function testDocumentSeparator(state) { + var _position = state.position, + ch; + + ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { + + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} + + +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27/* ' */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} + +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22/* " */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} + +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = {}, + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); +} + +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + + if (ch !== 0x2D/* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} + +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _pos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = {}, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + _pos = state.position; + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else { + break; // Reading is done. Go to the epilogue. + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if (state.lineIndent > nodeIndent && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; +} + +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21/* ! */) return false; + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; +} + +function readAnchorProperty(state) { + var _position, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; +} + +function readAlias(state) { + var _position, alias, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2A/* * */) return false; + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!_hasOwnProperty.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent + atNewLine = false, + hasContent = false, + typeIndex, + typeQuantity, + type, + flowIndent, + blockIndent; + + if (state.listener !== null) { + state.listener('open', state); + } + + state.tag = null; + state.anchor = null; + state.kind = null; + state.result = null; + + allowBlockStyles = allowBlockScalars = allowBlockCollections = + CONTEXT_BLOCK_OUT === nodeContext || + CONTEXT_BLOCK_IN === nodeContext; + + if (allowToSeek) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag !== null && state.tag !== '!') { + if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "!<?> [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"'); + } + + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } + + if (is_EOL(ch)) break; + + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } +} + + +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State(input, options); + + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; +} + + +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; + } + + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} + + +function load(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new YAMLException('expected a single document in the stream, but found more'); +} + + +function safeLoadAll(input, iterator, options) { + if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +} + + +function safeLoad(input, options) { + return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +} + + +module.exports.loadAll = loadAll; +module.exports.load = load; +module.exports.safeLoadAll = safeLoadAll; +module.exports.safeLoad = safeLoad; + + +/***/ }), + +/***/ 74548: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + + +var common = __nccwpck_require__(75974); + + +function Mark(name, buffer, position, line, column) { + this.name = name; + this.buffer = buffer; + this.position = position; + this.line = line; + this.column = column; +} + + +Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { + var head, start, tail, end, snippet; + + if (!this.buffer) return null; + + indent = indent || 4; + maxLength = maxLength || 75; + + head = ''; + start = this.position; + + while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { + start -= 1; + if (this.position - start > (maxLength / 2 - 1)) { + head = ' ... '; + start += 5; + break; + } + } + + tail = ''; + end = this.position; + + while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { + end += 1; + if (end - this.position > (maxLength / 2 - 1)) { + tail = ' ... '; + end -= 5; + break; + } + } + + snippet = this.buffer.slice(start, end); + + return common.repeat(' ', indent) + head + snippet + tail + '\n' + + common.repeat(' ', indent + this.position - start + head.length) + '^'; +}; + + +Mark.prototype.toString = function toString(compact) { + var snippet, where = ''; + + if (this.name) { + where += 'in "' + this.name + '" '; + } + + where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); + + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += ':\n' + snippet; + } + } + + return where; +}; + + +module.exports = Mark; + + +/***/ }), + +/***/ 61181: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable max-len*/ + +var common = __nccwpck_require__(75974); +var YAMLException = __nccwpck_require__(30962); +var Type = __nccwpck_require__(92355); + + +function compileList(schema, name, result) { + var exclude = []; + + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); + + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); + } + }); + + result.push(currentType); + }); + + return result.filter(function (type, index) { + return exclude.indexOf(index) === -1; + }); +} + + +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, index, length; + + function collectType(type) { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} + + +function Schema(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; + + this.implicit.forEach(function (type) { + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + }); + + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); +} + + +Schema.DEFAULT = null; + + +Schema.create = function createSchema() { + var schemas, types; + + switch (arguments.length) { + case 1: + schemas = Schema.DEFAULT; + types = arguments[0]; + break; + + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; + + default: + throw new YAMLException('Wrong number of arguments for Schema.create function'); + } + + schemas = common.toArray(schemas); + types = common.toArray(types); + + if (!schemas.every(function (schema) { return schema instanceof Schema; })) { + throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); + } + + if (!types.every(function (type) { return type instanceof Type; })) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + return new Schema({ + include: schemas, + explicit: types + }); +}; + + +module.exports = Schema; + + +/***/ }), + +/***/ 80119: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. + + + + + +var Schema = __nccwpck_require__(61181); + + +module.exports = new Schema({ + include: [ + __nccwpck_require__(74637) + ] +}); + + +/***/ }), + +/***/ 54250: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// JS-YAML's default schema for `load` function. +// It is not described in the YAML specification. +// +// This schema is based on JS-YAML's default safe schema and includes +// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. +// +// Also this schema is used as default base schema at `Schema.create` function. + + + + + +var Schema = __nccwpck_require__(61181); + + +module.exports = Schema.DEFAULT = new Schema({ + include: [ + __nccwpck_require__(39591) + ], + explicit: [ + __nccwpck_require__(76692), + __nccwpck_require__(20664), + __nccwpck_require__(57596) + ] +}); + + +/***/ }), + +/***/ 39591: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) + + + + + +var Schema = __nccwpck_require__(61181); + + +module.exports = new Schema({ + include: [ + __nccwpck_require__(80119) + ], + implicit: [ + __nccwpck_require__(22989), + __nccwpck_require__(27058) + ], + explicit: [ + __nccwpck_require__(68700), + __nccwpck_require__(92710), + __nccwpck_require__(85978), + __nccwpck_require__(34438) + ] +}); + + +/***/ }), + +/***/ 93487: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 + + + + + +var Schema = __nccwpck_require__(61181); + + +module.exports = new Schema({ + explicit: [ + __nccwpck_require__(58192), + __nccwpck_require__(47538), + __nccwpck_require__(23332) + ] +}); + + +/***/ }), + +/***/ 74637: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. + + + + + +var Schema = __nccwpck_require__(61181); + + +module.exports = new Schema({ + include: [ + __nccwpck_require__(93487) + ], + implicit: [ + __nccwpck_require__(44262), + __nccwpck_require__(49578), + __nccwpck_require__(96823), + __nccwpck_require__(96661) + ] +}); + + +/***/ }), + +/***/ 92355: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var YAMLException = __nccwpck_require__(30962); + +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'defaultStyle', + 'styleAliases' +]; + +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; + +function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; +} + +function Type(tag, options) { + options = options || {}; + + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} + +module.exports = Type; + + +/***/ }), + +/***/ 68700: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/*eslint-disable no-bitwise*/ + +var NodeBuffer; + +try { + // A trick for browserified version, to not include `Buffer` shim + var _require = require; + NodeBuffer = _require('buffer').Buffer; +} catch (__) {} + +var Type = __nccwpck_require__(92355); + + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + +function resolveYamlBinary(data) { + if (data === null) return false; + + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) continue; + + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} + +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; + + // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } + + // Wrap into Buffer for NodeJS and leave Array for browser + if (NodeBuffer) { + // Support node 6.+ Buffer API when available + return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); + } + + return result; +} + +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(object) { + return NodeBuffer && NodeBuffer.isBuffer(object); +} + +module.exports = new Type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); + + +/***/ }), + +/***/ 49578: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +function resolveYamlBoolean(data) { + if (data === null) return false; + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} + +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +module.exports = new Type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); + + +/***/ }), + +/***/ 96661: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var common = __nccwpck_require__(75974); +var Type = __nccwpck_require__(92355); + +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // 20:59 + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; +} + +function constructYamlFloat(data) { + var value, sign, base, digits; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + digits = []; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + + } else if (value.indexOf(':') >= 0) { + value.split(':').forEach(function (v) { + digits.unshift(parseFloat(v, 10)); + }); + + value = 0.0; + base = 1; + + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + + return sign * value; + + } + return sign * parseFloat(value, 10); +} + + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + + +/***/ }), + +/***/ 96823: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var common = __nccwpck_require__(75974); +var Type = __nccwpck_require__(92355); + +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} + +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} + +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} + +function resolveYamlInteger(data) { + if (data === null) return false; + + var max = data.length, + index = 0, + hasDigits = false, + ch; + + if (!max) return false; + + ch = data[index]; + + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + // base 8 + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + + // base 10 (except 0) or base 60 + + // value should not start with `_`; + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch === ':') break; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; + + // if !base60 - done; + if (ch !== ':') return true; + + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} + +function constructYamlInteger(data) { + var value = data, sign = 1, ch, base, digits = []; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } + + if (value.indexOf(':') !== -1) { + value.split(':').forEach(function (v) { + digits.unshift(parseInt(v, 10)); + }); + + value = 0; + base = 1; + + digits.forEach(function (d) { + value += (d * base); + base *= 60; + }); + + return sign * value; + + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } +}); + + +/***/ }), + +/***/ 57596: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var esprima; + +// Browserified version does not have esprima +// +// 1. For node.js just require module as deps +// 2. For browser try to require mudule via external AMD system. +// If not found - try to fallback to window.esprima. If not +// found too - then fail to parse. +// +try { + // workaround to exclude package from browserify list. + var _require = require; + esprima = _require('esprima'); +} catch (_) { + /* eslint-disable no-redeclare */ + /* global window */ + if (typeof window !== 'undefined') esprima = window.esprima; +} + +var Type = __nccwpck_require__(92355); + +function resolveJavascriptFunction(data) { + if (data === null) return false; + + try { + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }); + + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + (ast.body[0].expression.type !== 'ArrowFunctionExpression' && + ast.body[0].expression.type !== 'FunctionExpression')) { + return false; + } + + return true; + } catch (err) { + return false; + } +} + +function constructJavascriptFunction(data) { + /*jslint evil:true*/ + + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }), + params = [], + body; + + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + (ast.body[0].expression.type !== 'ArrowFunctionExpression' && + ast.body[0].expression.type !== 'FunctionExpression')) { + throw new Error('Failed to resolve function'); + } + + ast.body[0].expression.params.forEach(function (param) { + params.push(param.name); + }); + + body = ast.body[0].expression.body.range; + + // Esprima's ranges include the first '{' and the last '}' characters on + // function expressions. So cut them out. + if (ast.body[0].expression.body.type === 'BlockStatement') { + /*eslint-disable no-new-func*/ + return new Function(params, source.slice(body[0] + 1, body[1] - 1)); + } + // ES6 arrow functions can omit the BlockStatement. In that case, just return + // the body. + /*eslint-disable no-new-func*/ + return new Function(params, 'return ' + source.slice(body[0], body[1])); +} + +function representJavascriptFunction(object /*, style*/) { + return object.toString(); +} + +function isFunction(object) { + return Object.prototype.toString.call(object) === '[object Function]'; +} + +module.exports = new Type('tag:yaml.org,2002:js/function', { + kind: 'scalar', + resolve: resolveJavascriptFunction, + construct: constructJavascriptFunction, + predicate: isFunction, + represent: representJavascriptFunction +}); + + +/***/ }), + +/***/ 20664: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +function resolveJavascriptRegExp(data) { + if (data === null) return false; + if (data.length === 0) return false; + + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; + + // if regexp starts with '/' it can have modifiers and must be properly closed + // `/foo/gim` - modifiers tail can be maximum 3 chars + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + + if (modifiers.length > 3) return false; + // if expression starts with /, is should be properly terminated + if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; + } + + return true; +} + +function constructJavascriptRegExp(data) { + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; + + // `/foo/gim` - tail can be maximum 4 chars + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + regexp = regexp.slice(1, regexp.length - modifiers.length - 1); + } + + return new RegExp(regexp, modifiers); +} + +function representJavascriptRegExp(object /*, style*/) { + var result = '/' + object.source + '/'; + + if (object.global) result += 'g'; + if (object.multiline) result += 'm'; + if (object.ignoreCase) result += 'i'; + + return result; +} + +function isRegExp(object) { + return Object.prototype.toString.call(object) === '[object RegExp]'; +} + +module.exports = new Type('tag:yaml.org,2002:js/regexp', { + kind: 'scalar', + resolve: resolveJavascriptRegExp, + construct: constructJavascriptRegExp, + predicate: isRegExp, + represent: representJavascriptRegExp +}); + + +/***/ }), + +/***/ 76692: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +function resolveJavascriptUndefined() { + return true; +} + +function constructJavascriptUndefined() { + /*eslint-disable no-undefined*/ + return undefined; +} + +function representJavascriptUndefined() { + return ''; +} + +function isUndefined(object) { + return typeof object === 'undefined'; +} + +module.exports = new Type('tag:yaml.org,2002:js/undefined', { + kind: 'scalar', + resolve: resolveJavascriptUndefined, + construct: constructJavascriptUndefined, + predicate: isUndefined, + represent: representJavascriptUndefined +}); + + +/***/ }), + +/***/ 23332: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +module.exports = new Type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); + + +/***/ }), + +/***/ 27058: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} + +module.exports = new Type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); + + +/***/ }), + +/***/ 44262: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +function resolveYamlNull(data) { + if (data === null) return true; + + var max = data.length; + + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} + +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +module.exports = new Type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; } + }, + defaultStyle: 'lowercase' +}); + + +/***/ }), + +/***/ 92710: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +module.exports = new Type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); + + +/***/ }), + +/***/ 85978: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +var _toString = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) return true; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString.call(pair) !== '[object Object]') return false; + + keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) return []; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +module.exports = new Type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); + + +/***/ }), + +/***/ 47538: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +module.exports = new Type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } +}); + + +/***/ }), + +/***/ 34438: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) return true; + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +module.exports = new Type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); + + +/***/ }), + +/***/ 58192: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +module.exports = new Type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); + + +/***/ }), + +/***/ 22989: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Type = __nccwpck_require__(92355); + +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error('Date resolve error'); + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} + +module.exports = new Type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); + + +/***/ }), + +/***/ 48978: +/***/ ((module) => { + +"use strict"; + + +const object = {}; +const hasOwnProperty = object.hasOwnProperty; +const forOwn = (object, callback) => { + for (const key in object) { + if (hasOwnProperty.call(object, key)) { + callback(key, object[key]); + } + } +}; + +const extend = (destination, source) => { + if (!source) { + return destination; + } + forOwn(source, (key, value) => { + destination[key] = value; + }); + return destination; +}; + +const forEach = (array, callback) => { + const length = array.length; + let index = -1; + while (++index < length) { + callback(array[index]); + } +}; + +const toString = object.toString; +const isArray = Array.isArray; +const isBuffer = Buffer.isBuffer; +const isObject = (value) => { + // This is a very simple check, but it’s good enough for what we need. + return toString.call(value) == '[object Object]'; +}; +const isString = (value) => { + return typeof value == 'string' || + toString.call(value) == '[object String]'; +}; +const isNumber = (value) => { + return typeof value == 'number' || + toString.call(value) == '[object Number]'; +}; +const isFunction = (value) => { + return typeof value == 'function'; +}; +const isMap = (value) => { + return toString.call(value) == '[object Map]'; +}; +const isSet = (value) => { + return toString.call(value) == '[object Set]'; +}; + +/*--------------------------------------------------------------------------*/ + +// https://mathiasbynens.be/notes/javascript-escapes#single +const singleEscapes = { + '"': '\\"', + '\'': '\\\'', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t' + // `\v` is omitted intentionally, because in IE < 9, '\v' == 'v'. + // '\v': '\\x0B' +}; +const regexSingleEscape = /["'\\\b\f\n\r\t]/; + +const regexDigit = /[0-9]/; +const regexWhitelist = /[ !#-&\(-\[\]-_a-~]/; + +const jsesc = (argument, options) => { + const increaseIndentation = () => { + oldIndent = indent; + ++options.indentLevel; + indent = options.indent.repeat(options.indentLevel) + }; + // Handle options + const defaults = { + 'escapeEverything': false, + 'minimal': false, + 'isScriptContext': false, + 'quotes': 'single', + 'wrap': false, + 'es6': false, + 'json': false, + 'compact': true, + 'lowercaseHex': false, + 'numbers': 'decimal', + 'indent': '\t', + 'indentLevel': 0, + '__inline1__': false, + '__inline2__': false + }; + const json = options && options.json; + if (json) { + defaults.quotes = 'double'; + defaults.wrap = true; + } + options = extend(defaults, options); + if ( + options.quotes != 'single' && + options.quotes != 'double' && + options.quotes != 'backtick' + ) { + options.quotes = 'single'; + } + const quote = options.quotes == 'double' ? + '"' : + (options.quotes == 'backtick' ? + '`' : + '\'' + ); + const compact = options.compact; + const lowercaseHex = options.lowercaseHex; + let indent = options.indent.repeat(options.indentLevel); + let oldIndent = ''; + const inline1 = options.__inline1__; + const inline2 = options.__inline2__; + const newLine = compact ? '' : '\n'; + let result; + let isEmpty = true; + const useBinNumbers = options.numbers == 'binary'; + const useOctNumbers = options.numbers == 'octal'; + const useDecNumbers = options.numbers == 'decimal'; + const useHexNumbers = options.numbers == 'hexadecimal'; + + if (json && argument && isFunction(argument.toJSON)) { + argument = argument.toJSON(); + } + + if (!isString(argument)) { + if (isMap(argument)) { + if (argument.size == 0) { + return 'new Map()'; + } + if (!compact) { + options.__inline1__ = true; + options.__inline2__ = false; + } + return 'new Map(' + jsesc(Array.from(argument), options) + ')'; + } + if (isSet(argument)) { + if (argument.size == 0) { + return 'new Set()'; + } + return 'new Set(' + jsesc(Array.from(argument), options) + ')'; + } + if (isBuffer(argument)) { + if (argument.length == 0) { + return 'Buffer.from([])'; + } + return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')'; + } + if (isArray(argument)) { + result = []; + options.wrap = true; + if (inline1) { + options.__inline1__ = false; + options.__inline2__ = true; + } + if (!inline2) { + increaseIndentation(); + } + forEach(argument, (value) => { + isEmpty = false; + if (inline2) { + options.__inline2__ = false; + } + result.push( + (compact || inline2 ? '' : indent) + + jsesc(value, options) + ); + }); + if (isEmpty) { + return '[]'; + } + if (inline2) { + return '[' + result.join(', ') + ']'; + } + return '[' + newLine + result.join(',' + newLine) + newLine + + (compact ? '' : oldIndent) + ']'; + } else if (isNumber(argument)) { + if (json) { + // Some number values (e.g. `Infinity`) cannot be represented in JSON. + return JSON.stringify(argument); + } + if (useDecNumbers) { + return String(argument); + } + if (useHexNumbers) { + let hexadecimal = argument.toString(16); + if (!lowercaseHex) { + hexadecimal = hexadecimal.toUpperCase(); + } + return '0x' + hexadecimal; + } + if (useBinNumbers) { + return '0b' + argument.toString(2); + } + if (useOctNumbers) { + return '0o' + argument.toString(8); + } + } else if (!isObject(argument)) { + if (json) { + // For some values (e.g. `undefined`, `function` objects), + // `JSON.stringify(value)` returns `undefined` (which isn’t valid + // JSON) instead of `'null'`. + return JSON.stringify(argument) || 'null'; + } + return String(argument); + } else { // it’s an object + result = []; + options.wrap = true; + increaseIndentation(); + forOwn(argument, (key, value) => { + isEmpty = false; + result.push( + (compact ? '' : indent) + + jsesc(key, options) + ':' + + (compact ? '' : ' ') + + jsesc(value, options) + ); + }); + if (isEmpty) { + return '{}'; + } + return '{' + newLine + result.join(',' + newLine) + newLine + + (compact ? '' : oldIndent) + '}'; + } + } + + const string = argument; + // Loop over each code unit in the string and escape it + let index = -1; + const length = string.length; + result = ''; + while (++index < length) { + const character = string.charAt(index); + if (options.es6) { + const first = string.charCodeAt(index); + if ( // check if it’s the start of a surrogate pair + first >= 0xD800 && first <= 0xDBFF && // high surrogate + length > index + 1 // there is a next code unit + ) { + const second = string.charCodeAt(index + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + const codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + let hexadecimal = codePoint.toString(16); + if (!lowercaseHex) { + hexadecimal = hexadecimal.toUpperCase(); + } + result += '\\u{' + hexadecimal + '}'; + ++index; + continue; + } + } + } + if (!options.escapeEverything) { + if (regexWhitelist.test(character)) { + // It’s a printable ASCII character that is not `"`, `'` or `\`, + // so don’t escape it. + result += character; + continue; + } + if (character == '"') { + result += quote == character ? '\\"' : character; + continue; + } + if (character == '`') { + result += quote == character ? '\\`' : character; + continue; + } + if (character == '\'') { + result += quote == character ? '\\\'' : character; + continue; + } + } + if ( + character == '\0' && + !json && + !regexDigit.test(string.charAt(index + 1)) + ) { + result += '\\0'; + continue; + } + if (regexSingleEscape.test(character)) { + // no need for a `hasOwnProperty` check here + result += singleEscapes[character]; + continue; + } + const charCode = character.charCodeAt(0); + if (options.minimal && charCode != 0x2028 && charCode != 0x2029) { + result += character; + continue; + } + let hexadecimal = charCode.toString(16); + if (!lowercaseHex) { + hexadecimal = hexadecimal.toUpperCase(); + } + const longhand = hexadecimal.length > 2 || json; + const escaped = '\\' + (longhand ? 'u' : 'x') + + ('0000' + hexadecimal).slice(longhand ? -4 : -2); + result += escaped; + continue; + } + if (options.wrap) { + result = quote + result + quote; + } + if (quote == '`') { + result = result.replace(/\$\{/g, '\\\$\{'); + } + if (options.isScriptContext) { + // https://mathiasbynens.be/notes/etago + return result + .replace(/<\/(script|style)/gi, '<\\/$1') + .replace(/<!--/g, json ? '\\u003C!--' : '\\x3C!--'); + } + return result; +}; + +jsesc.version = '2.5.2'; + +module.exports = jsesc; + + +/***/ }), + +/***/ 25130: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const parse = __nccwpck_require__(13210) +const stringify = __nccwpck_require__(75627) + +const JSON5 = { + parse, + stringify, +} + +module.exports = JSON5 + + +/***/ }), + +/***/ 13210: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const util = __nccwpck_require__(93009) + +let source +let parseState +let stack +let pos +let line +let column +let token +let key +let root + +module.exports = function parse (text, reviver) { + source = String(text) + parseState = 'start' + stack = [] + pos = 0 + line = 1 + column = 0 + token = undefined + key = undefined + root = undefined + + do { + token = lex() + + // This code is unreachable. + // if (!parseStates[parseState]) { + // throw invalidParseState() + // } + + parseStates[parseState]() + } while (token.type !== 'eof') + + if (typeof reviver === 'function') { + return internalize({'': root}, '', reviver) + } + + return root +} + +function internalize (holder, name, reviver) { + const value = holder[name] + if (value != null && typeof value === 'object') { + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + const key = String(i) + const replacement = internalize(value, key, reviver) + if (replacement === undefined) { + delete value[key] + } else { + Object.defineProperty(value, key, { + value: replacement, + writable: true, + enumerable: true, + configurable: true, + }) + } + } + } else { + for (const key in value) { + const replacement = internalize(value, key, reviver) + if (replacement === undefined) { + delete value[key] + } else { + Object.defineProperty(value, key, { + value: replacement, + writable: true, + enumerable: true, + configurable: true, + }) + } + } + } + } + + return reviver.call(holder, name, value) +} + +let lexState +let buffer +let doubleQuote +let sign +let c + +function lex () { + lexState = 'default' + buffer = '' + doubleQuote = false + sign = 1 + + for (;;) { + c = peek() + + // This code is unreachable. + // if (!lexStates[lexState]) { + // throw invalidLexState(lexState) + // } + + const token = lexStates[lexState]() + if (token) { + return token + } + } +} + +function peek () { + if (source[pos]) { + return String.fromCodePoint(source.codePointAt(pos)) + } +} + +function read () { + const c = peek() + + if (c === '\n') { + line++ + column = 0 + } else if (c) { + column += c.length + } else { + column++ + } + + if (c) { + pos += c.length + } + + return c +} + +const lexStates = { + default () { + switch (c) { + case '\t': + case '\v': + case '\f': + case ' ': + case '\u00A0': + case '\uFEFF': + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read() + return + + case '/': + read() + lexState = 'comment' + return + + case undefined: + read() + return newToken('eof') + } + + if (util.isSpaceSeparator(c)) { + read() + return + } + + // This code is unreachable. + // if (!lexStates[parseState]) { + // throw invalidLexState(parseState) + // } + + return lexStates[parseState]() + }, + + comment () { + switch (c) { + case '*': + read() + lexState = 'multiLineComment' + return + + case '/': + read() + lexState = 'singleLineComment' + return + } + + throw invalidChar(read()) + }, + + multiLineComment () { + switch (c) { + case '*': + read() + lexState = 'multiLineCommentAsterisk' + return + + case undefined: + throw invalidChar(read()) + } + + read() + }, + + multiLineCommentAsterisk () { + switch (c) { + case '*': + read() + return + + case '/': + read() + lexState = 'default' + return + + case undefined: + throw invalidChar(read()) + } + + read() + lexState = 'multiLineComment' + }, + + singleLineComment () { + switch (c) { + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read() + lexState = 'default' + return + + case undefined: + read() + return newToken('eof') + } + + read() + }, + + value () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + case 'n': + read() + literal('ull') + return newToken('null', null) + + case 't': + read() + literal('rue') + return newToken('boolean', true) + + case 'f': + read() + literal('alse') + return newToken('boolean', false) + + case '-': + case '+': + if (read() === '-') { + sign = -1 + } + + lexState = 'sign' + return + + case '.': + buffer = read() + lexState = 'decimalPointLeading' + return + + case '0': + buffer = read() + lexState = 'zero' + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read() + lexState = 'decimalInteger' + return + + case 'I': + read() + literal('nfinity') + return newToken('numeric', Infinity) + + case 'N': + read() + literal('aN') + return newToken('numeric', NaN) + + case '"': + case "'": + doubleQuote = (read() === '"') + buffer = '' + lexState = 'string' + return + } + + throw invalidChar(read()) + }, + + identifierNameStartEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } + + read() + const u = unicodeEscape() + switch (u) { + case '$': + case '_': + break + + default: + if (!util.isIdStartChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u + lexState = 'identifierName' + }, + + identifierName () { + switch (c) { + case '$': + case '_': + case '\u200C': + case '\u200D': + buffer += read() + return + + case '\\': + read() + lexState = 'identifierNameEscape' + return + } + + if (util.isIdContinueChar(c)) { + buffer += read() + return + } + + return newToken('identifier', buffer) + }, + + identifierNameEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } + + read() + const u = unicodeEscape() + switch (u) { + case '$': + case '_': + case '\u200C': + case '\u200D': + break + + default: + if (!util.isIdContinueChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u + lexState = 'identifierName' + }, + + sign () { + switch (c) { + case '.': + buffer = read() + lexState = 'decimalPointLeading' + return + + case '0': + buffer = read() + lexState = 'zero' + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read() + lexState = 'decimalInteger' + return + + case 'I': + read() + literal('nfinity') + return newToken('numeric', sign * Infinity) + + case 'N': + read() + literal('aN') + return newToken('numeric', NaN) + } + + throw invalidChar(read()) + }, + + zero () { + switch (c) { + case '.': + buffer += read() + lexState = 'decimalPoint' + return + + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + + case 'x': + case 'X': + buffer += read() + lexState = 'hexadecimal' + return + } + + return newToken('numeric', sign * 0) + }, + + decimalInteger () { + switch (c) { + case '.': + buffer += read() + lexState = 'decimalPoint' + return + + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + } + + if (util.isDigit(c)) { + buffer += read() + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalPointLeading () { + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalFraction' + return + } + + throw invalidChar(read()) + }, + + decimalPoint () { + switch (c) { + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + } + + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalFraction' + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalFraction () { + switch (c) { + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + } + + if (util.isDigit(c)) { + buffer += read() + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalExponent () { + switch (c) { + case '+': + case '-': + buffer += read() + lexState = 'decimalExponentSign' + return + } + + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalExponentInteger' + return + } + + throw invalidChar(read()) + }, + + decimalExponentSign () { + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalExponentInteger' + return + } + + throw invalidChar(read()) + }, + + decimalExponentInteger () { + if (util.isDigit(c)) { + buffer += read() + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + hexadecimal () { + if (util.isHexDigit(c)) { + buffer += read() + lexState = 'hexadecimalInteger' + return + } + + throw invalidChar(read()) + }, + + hexadecimalInteger () { + if (util.isHexDigit(c)) { + buffer += read() + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + string () { + switch (c) { + case '\\': + read() + buffer += escape() + return + + case '"': + if (doubleQuote) { + read() + return newToken('string', buffer) + } + + buffer += read() + return + + case "'": + if (!doubleQuote) { + read() + return newToken('string', buffer) + } + + buffer += read() + return + + case '\n': + case '\r': + throw invalidChar(read()) + + case '\u2028': + case '\u2029': + separatorChar(c) + break + + case undefined: + throw invalidChar(read()) + } + + buffer += read() + }, + + start () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + // This code is unreachable since the default lexState handles eof. + // case undefined: + // return newToken('eof') + } + + lexState = 'value' + }, + + beforePropertyName () { + switch (c) { + case '$': + case '_': + buffer = read() + lexState = 'identifierName' + return + + case '\\': + read() + lexState = 'identifierNameStartEscape' + return + + case '}': + return newToken('punctuator', read()) + + case '"': + case "'": + doubleQuote = (read() === '"') + lexState = 'string' + return + } + + if (util.isIdStartChar(c)) { + buffer += read() + lexState = 'identifierName' + return + } + + throw invalidChar(read()) + }, + + afterPropertyName () { + if (c === ':') { + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforePropertyValue () { + lexState = 'value' + }, + + afterPropertyValue () { + switch (c) { + case ',': + case '}': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforeArrayValue () { + if (c === ']') { + return newToken('punctuator', read()) + } + + lexState = 'value' + }, + + afterArrayValue () { + switch (c) { + case ',': + case ']': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + end () { + // This code is unreachable since it's handled by the default lexState. + // if (c === undefined) { + // read() + // return newToken('eof') + // } + + throw invalidChar(read()) + }, +} + +function newToken (type, value) { + return { + type, + value, + line, + column, + } +} + +function literal (s) { + for (const c of s) { + const p = peek() + + if (p !== c) { + throw invalidChar(read()) + } + + read() + } +} + +function escape () { + const c = peek() + switch (c) { + case 'b': + read() + return '\b' + + case 'f': + read() + return '\f' + + case 'n': + read() + return '\n' + + case 'r': + read() + return '\r' + + case 't': + read() + return '\t' + + case 'v': + read() + return '\v' + + case '0': + read() + if (util.isDigit(peek())) { + throw invalidChar(read()) + } + + return '\0' + + case 'x': + read() + return hexEscape() + + case 'u': + read() + return unicodeEscape() + + case '\n': + case '\u2028': + case '\u2029': + read() + return '' + + case '\r': + read() + if (peek() === '\n') { + read() + } + + return '' + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + throw invalidChar(read()) + + case undefined: + throw invalidChar(read()) + } + + return read() +} + +function hexEscape () { + let buffer = '' + let c = peek() + + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read() + + c = peek() + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read() + + return String.fromCodePoint(parseInt(buffer, 16)) +} + +function unicodeEscape () { + let buffer = '' + let count = 4 + + while (count-- > 0) { + const c = peek() + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read() + } + + return String.fromCodePoint(parseInt(buffer, 16)) +} + +const parseStates = { + start () { + if (token.type === 'eof') { + throw invalidEOF() + } + + push() + }, + + beforePropertyName () { + switch (token.type) { + case 'identifier': + case 'string': + key = token.value + parseState = 'afterPropertyName' + return + + case 'punctuator': + // This code is unreachable since it's handled by the lexState. + // if (token.value !== '}') { + // throw invalidToken() + // } + + pop() + return + + case 'eof': + throw invalidEOF() + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterPropertyName () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator' || token.value !== ':') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + parseState = 'beforePropertyValue' + }, + + beforePropertyValue () { + if (token.type === 'eof') { + throw invalidEOF() + } + + push() + }, + + beforeArrayValue () { + if (token.type === 'eof') { + throw invalidEOF() + } + + if (token.type === 'punctuator' && token.value === ']') { + pop() + return + } + + push() + }, + + afterPropertyValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforePropertyName' + return + + case '}': + pop() + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterArrayValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforeArrayValue' + return + + case ']': + pop() + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + end () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'eof') { + // throw invalidToken() + // } + }, +} + +function push () { + let value + + switch (token.type) { + case 'punctuator': + switch (token.value) { + case '{': + value = {} + break + + case '[': + value = [] + break + } + + break + + case 'null': + case 'boolean': + case 'numeric': + case 'string': + value = token.value + break + + // This code is unreachable. + // default: + // throw invalidToken() + } + + if (root === undefined) { + root = value + } else { + const parent = stack[stack.length - 1] + if (Array.isArray(parent)) { + parent.push(value) + } else { + Object.defineProperty(parent, key, { + value, + writable: true, + enumerable: true, + configurable: true, + }) + } + } + + if (value !== null && typeof value === 'object') { + stack.push(value) + + if (Array.isArray(value)) { + parseState = 'beforeArrayValue' + } else { + parseState = 'beforePropertyName' + } + } else { + const current = stack[stack.length - 1] + if (current == null) { + parseState = 'end' + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue' + } else { + parseState = 'afterPropertyValue' + } + } +} + +function pop () { + stack.pop() + + const current = stack[stack.length - 1] + if (current == null) { + parseState = 'end' + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue' + } else { + parseState = 'afterPropertyValue' + } +} + +// This code is unreachable. +// function invalidParseState () { +// return new Error(`JSON5: invalid parse state '${parseState}'`) +// } + +// This code is unreachable. +// function invalidLexState (state) { +// return new Error(`JSON5: invalid lex state '${state}'`) +// } + +function invalidChar (c) { + if (c === undefined) { + return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) + } + + return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +} + +function invalidEOF () { + return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +} + +// This code is unreachable. +// function invalidToken () { +// if (token.type === 'eof') { +// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +// } + +// const c = String.fromCodePoint(token.value.codePointAt(0)) +// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +// } + +function invalidIdentifier () { + column -= 5 + return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) +} + +function separatorChar (c) { + console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`) +} + +function formatChar (c) { + const replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + } + + if (replacements[c]) { + return replacements[c] + } + + if (c < ' ') { + const hexString = c.charCodeAt(0).toString(16) + return '\\x' + ('00' + hexString).substring(hexString.length) + } + + return c +} + +function syntaxError (message) { + const err = new SyntaxError(message) + err.lineNumber = line + err.columnNumber = column + return err +} + + +/***/ }), + +/***/ 75627: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const util = __nccwpck_require__(93009) + +module.exports = function stringify (value, replacer, space) { + const stack = [] + let indent = '' + let propertyList + let replacerFunc + let gap = '' + let quote + + if ( + replacer != null && + typeof replacer === 'object' && + !Array.isArray(replacer) + ) { + space = replacer.space + quote = replacer.quote + replacer = replacer.replacer + } + + if (typeof replacer === 'function') { + replacerFunc = replacer + } else if (Array.isArray(replacer)) { + propertyList = [] + for (const v of replacer) { + let item + + if (typeof v === 'string') { + item = v + } else if ( + typeof v === 'number' || + v instanceof String || + v instanceof Number + ) { + item = String(v) + } + + if (item !== undefined && propertyList.indexOf(item) < 0) { + propertyList.push(item) + } + } + } + + if (space instanceof Number) { + space = Number(space) + } else if (space instanceof String) { + space = String(space) + } + + if (typeof space === 'number') { + if (space > 0) { + space = Math.min(10, Math.floor(space)) + gap = ' '.substr(0, space) + } + } else if (typeof space === 'string') { + gap = space.substr(0, 10) + } + + return serializeProperty('', {'': value}) + + function serializeProperty (key, holder) { + let value = holder[key] + if (value != null) { + if (typeof value.toJSON5 === 'function') { + value = value.toJSON5(key) + } else if (typeof value.toJSON === 'function') { + value = value.toJSON(key) + } + } + + if (replacerFunc) { + value = replacerFunc.call(holder, key, value) + } + + if (value instanceof Number) { + value = Number(value) + } else if (value instanceof String) { + value = String(value) + } else if (value instanceof Boolean) { + value = value.valueOf() + } + + switch (value) { + case null: return 'null' + case true: return 'true' + case false: return 'false' + } + + if (typeof value === 'string') { + return quoteString(value, false) + } + + if (typeof value === 'number') { + return String(value) + } + + if (typeof value === 'object') { + return Array.isArray(value) ? serializeArray(value) : serializeObject(value) + } + + return undefined + } + + function quoteString (value) { + const quotes = { + "'": 0.1, + '"': 0.2, + } + + const replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + } + + let product = '' + + for (let i = 0; i < value.length; i++) { + const c = value[i] + switch (c) { + case "'": + case '"': + quotes[c]++ + product += c + continue + + case '\0': + if (util.isDigit(value[i + 1])) { + product += '\\x00' + continue + } + } + + if (replacements[c]) { + product += replacements[c] + continue + } + + if (c < ' ') { + let hexString = c.charCodeAt(0).toString(16) + product += '\\x' + ('00' + hexString).substring(hexString.length) + continue + } + + product += c + } + + const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b) + + product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]) + + return quoteChar + product + quoteChar + } + + function serializeObject (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value) + + let stepback = indent + indent = indent + gap + + let keys = propertyList || Object.keys(value) + let partial = [] + for (const key of keys) { + const propertyString = serializeProperty(key, value) + if (propertyString !== undefined) { + let member = serializeKey(key) + ':' + if (gap !== '') { + member += ' ' + } + member += propertyString + partial.push(member) + } + } + + let final + if (partial.length === 0) { + final = '{}' + } else { + let properties + if (gap === '') { + properties = partial.join(',') + final = '{' + properties + '}' + } else { + let separator = ',\n' + indent + properties = partial.join(separator) + final = '{\n' + indent + properties + ',\n' + stepback + '}' + } + } + + stack.pop() + indent = stepback + return final + } + + function serializeKey (key) { + if (key.length === 0) { + return quoteString(key, true) + } + + const firstChar = String.fromCodePoint(key.codePointAt(0)) + if (!util.isIdStartChar(firstChar)) { + return quoteString(key, true) + } + + for (let i = firstChar.length; i < key.length; i++) { + if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { + return quoteString(key, true) + } + } + + return key + } + + function serializeArray (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value) + + let stepback = indent + indent = indent + gap + + let partial = [] + for (let i = 0; i < value.length; i++) { + const propertyString = serializeProperty(String(i), value) + partial.push((propertyString !== undefined) ? propertyString : 'null') + } + + let final + if (partial.length === 0) { + final = '[]' + } else { + if (gap === '') { + let properties = partial.join(',') + final = '[' + properties + ']' + } else { + let separator = ',\n' + indent + let properties = partial.join(separator) + final = '[\n' + indent + properties + ',\n' + stepback + ']' + } + } + + stack.pop() + indent = stepback + return final + } +} + + +/***/ }), + +/***/ 29527: +/***/ ((module) => { + +// This is a generated file. Do not edit. +module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/ +module.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/ +module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + + +/***/ }), + +/***/ 93009: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const unicode = __nccwpck_require__(29527) + +module.exports = { + isSpaceSeparator (c) { + return typeof c === 'string' && unicode.Space_Separator.test(c) + }, + + isIdStartChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c === '$') || (c === '_') || + unicode.ID_Start.test(c) + ) + }, + + isIdContinueChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + (c === '$') || (c === '_') || + (c === '\u200C') || (c === '\u200D') || + unicode.ID_Continue.test(c) + ) + }, + + isDigit (c) { + return typeof c === 'string' && /[0-9]/.test(c) + }, + + isHexDigit (c) { + return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) + }, +} + + +/***/ }), + +/***/ 49413: +/***/ ((module) => { + +var toString = Object.prototype.toString; + +module.exports = function kindOf(val) { + if (val === void 0) return 'undefined'; + if (val === null) return 'null'; + + var type = typeof val; + if (type === 'boolean') return 'boolean'; + if (type === 'string') return 'string'; + if (type === 'number') return 'number'; + if (type === 'symbol') return 'symbol'; + if (type === 'function') { + return isGeneratorFn(val) ? 'generatorfunction' : 'function'; + } + + if (isArray(val)) return 'array'; + if (isBuffer(val)) return 'buffer'; + if (isArguments(val)) return 'arguments'; + if (isDate(val)) return 'date'; + if (isError(val)) return 'error'; + if (isRegexp(val)) return 'regexp'; + + switch (ctorName(val)) { + case 'Symbol': return 'symbol'; + case 'Promise': return 'promise'; + + // Set, Map, WeakSet, WeakMap + case 'WeakMap': return 'weakmap'; + case 'WeakSet': return 'weakset'; + case 'Map': return 'map'; + case 'Set': return 'set'; + + // 8-bit typed arrays + case 'Int8Array': return 'int8array'; + case 'Uint8Array': return 'uint8array'; + case 'Uint8ClampedArray': return 'uint8clampedarray'; + + // 16-bit typed arrays + case 'Int16Array': return 'int16array'; + case 'Uint16Array': return 'uint16array'; + + // 32-bit typed arrays + case 'Int32Array': return 'int32array'; + case 'Uint32Array': return 'uint32array'; + case 'Float32Array': return 'float32array'; + case 'Float64Array': return 'float64array'; + } + + if (isGeneratorObj(val)) { + return 'generator'; + } + + // Non-plain objects + type = toString.call(val); + switch (type) { + case '[object Object]': return 'object'; + // iterators + case '[object Map Iterator]': return 'mapiterator'; + case '[object Set Iterator]': return 'setiterator'; + case '[object String Iterator]': return 'stringiterator'; + case '[object Array Iterator]': return 'arrayiterator'; + } + + // other + return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); +}; + +function ctorName(val) { + return typeof val.constructor === 'function' ? val.constructor.name : null; +} + +function isArray(val) { + if (Array.isArray) return Array.isArray(val); + return val instanceof Array; +} + +function isError(val) { + return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'); +} + +function isDate(val) { + if (val instanceof Date) return true; + return typeof val.toDateString === 'function' + && typeof val.getDate === 'function' + && typeof val.setDate === 'function'; +} + +function isRegexp(val) { + if (val instanceof RegExp) return true; + return typeof val.flags === 'string' + && typeof val.ignoreCase === 'boolean' + && typeof val.multiline === 'boolean' + && typeof val.global === 'boolean'; +} + +function isGeneratorFn(name, val) { + return ctorName(name) === 'GeneratorFunction'; +} + +function isGeneratorObj(val) { + return typeof val.throw === 'function' + && typeof val.return === 'function' + && typeof val.next === 'function'; +} + +function isArguments(val) { + try { + if (typeof val.length === 'number' && typeof val.callee === 'function') { + return true; + } + } catch (err) { + if (err.message.indexOf('callee') !== -1) { + return true; + } + } + return false; +} + +/** + * If you need to support Safari 5-7 (8-10 yr-old browser), + * take a look at https://github.com/feross/is-buffer + */ + +function isBuffer(val) { + if (val.constructor && typeof val.constructor.isBuffer === 'function') { + return val.constructor.isBuffer(val); + } + return false; +} + + +/***/ }), + +/***/ 74880: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +const fs = __nccwpck_require__(90552) +const path = __nccwpck_require__(71017) + +function klawSync (dir, opts, ls) { + if (!ls) { + ls = [] + dir = path.resolve(dir) + opts = opts || {} + opts.fs = opts.fs || fs + if (opts.depthLimit > -1) opts.rootDepth = dir.split(path.sep).length + 1 + } + const paths = opts.fs.readdirSync(dir).map(p => dir + path.sep + p) + for (var i = 0; i < paths.length; i += 1) { + const pi = paths[i] + const st = opts.fs.statSync(pi) + const item = {path: pi, stats: st} + const isUnderDepthLimit = (!opts.rootDepth || pi.split(path.sep).length - opts.rootDepth < opts.depthLimit) + const filterResult = opts.filter ? opts.filter(item) : true + const isDir = st.isDirectory() + const shouldAdd = filterResult && (isDir ? !opts.nodir : !opts.nofile) + const shouldTraverse = isDir && isUnderDepthLimit && (opts.traverseAll || filterResult) + if (shouldAdd) ls.push(item) + if (shouldTraverse) ls = klawSync(pi, opts, ls) + } + return ls +} + +module.exports = klawSync + + +/***/ }), + +/***/ 63830: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221), + root = __nccwpck_require__(95173); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +module.exports = DataView; + + +/***/ }), + +/***/ 68184: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var hashClear = __nccwpck_require__(20443), + hashDelete = __nccwpck_require__(54570), + hashGet = __nccwpck_require__(46331), + hashHas = __nccwpck_require__(10339), + hashSet = __nccwpck_require__(60910); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +module.exports = Hash; + + +/***/ }), + +/***/ 46242: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var listCacheClear = __nccwpck_require__(60527), + listCacheDelete = __nccwpck_require__(44877), + listCacheGet = __nccwpck_require__(30765), + listCacheHas = __nccwpck_require__(97220), + listCacheSet = __nccwpck_require__(74558); + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +module.exports = ListCache; + + +/***/ }), + +/***/ 16137: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221), + root = __nccwpck_require__(95173); + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); + +module.exports = Map; + + +/***/ }), + +/***/ 8108: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var mapCacheClear = __nccwpck_require__(40497), + mapCacheDelete = __nccwpck_require__(20756), + mapCacheGet = __nccwpck_require__(12886), + mapCacheHas = __nccwpck_require__(18510), + mapCacheSet = __nccwpck_require__(10210); + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +module.exports = MapCache; + + +/***/ }), + +/***/ 50211: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221), + root = __nccwpck_require__(95173); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; + + +/***/ }), + +/***/ 4994: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221), + root = __nccwpck_require__(95173); + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; + + +/***/ }), + +/***/ 57869: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var MapCache = __nccwpck_require__(8108), + setCacheAdd = __nccwpck_require__(28551), + setCacheHas = __nccwpck_require__(87850); + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; + + +/***/ }), + +/***/ 15531: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var ListCache = __nccwpck_require__(46242), + stackClear = __nccwpck_require__(25172), + stackDelete = __nccwpck_require__(25489), + stackGet = __nccwpck_require__(42362), + stackHas = __nccwpck_require__(99736), + stackSet = __nccwpck_require__(83463); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +module.exports = Stack; + + +/***/ }), + +/***/ 25344: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var root = __nccwpck_require__(95173); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; + + +/***/ }), + +/***/ 82382: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var root = __nccwpck_require__(95173); + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +module.exports = Uint8Array; + + +/***/ }), + +/***/ 34105: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221), + root = __nccwpck_require__(95173); + +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); + +module.exports = WeakMap; + + +/***/ }), + +/***/ 52743: +/***/ ((module) => { + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +module.exports = apply; + + +/***/ }), + +/***/ 31489: +/***/ ((module) => { + +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +module.exports = arrayEach; + + +/***/ }), + +/***/ 33281: +/***/ ((module) => { + +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; + + +/***/ }), + +/***/ 69511: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseTimes = __nccwpck_require__(31579), + isArguments = __nccwpck_require__(43891), + isArray = __nccwpck_require__(68635), + isBuffer = __nccwpck_require__(1236), + isIndex = __nccwpck_require__(77844), + isTypedArray = __nccwpck_require__(46431); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +module.exports = arrayLikeKeys; + + +/***/ }), + +/***/ 10044: +/***/ ((module) => { + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; + + +/***/ }), + +/***/ 89592: +/***/ ((module) => { + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +module.exports = arrayPush; + + +/***/ }), + +/***/ 54151: +/***/ ((module) => { + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +module.exports = arraySome; + + +/***/ }), + +/***/ 6167: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseAssignValue = __nccwpck_require__(37158), + eq = __nccwpck_require__(15379); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignValue; + + +/***/ }), + +/***/ 75744: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var eq = __nccwpck_require__(15379); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +module.exports = assocIndexOf; + + +/***/ }), + +/***/ 13902: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var copyObject = __nccwpck_require__(80860), + keys = __nccwpck_require__(34894); + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +module.exports = baseAssign; + + +/***/ }), + +/***/ 83527: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var copyObject = __nccwpck_require__(80860), + keysIn = __nccwpck_require__(1089); + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} + +module.exports = baseAssignIn; + + +/***/ }), + +/***/ 37158: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var defineProperty = __nccwpck_require__(74649); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +module.exports = baseAssignValue; + + +/***/ }), + +/***/ 82306: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stack = __nccwpck_require__(15531), + arrayEach = __nccwpck_require__(31489), + assignValue = __nccwpck_require__(6167), + baseAssign = __nccwpck_require__(13902), + baseAssignIn = __nccwpck_require__(83527), + cloneBuffer = __nccwpck_require__(67555), + copyArray = __nccwpck_require__(91027), + copySymbols = __nccwpck_require__(80813), + copySymbolsIn = __nccwpck_require__(68854), + getAllKeys = __nccwpck_require__(39346), + getAllKeysIn = __nccwpck_require__(50101), + getTag = __nccwpck_require__(41704), + initCloneArray = __nccwpck_require__(87042), + initCloneByTag = __nccwpck_require__(79322), + initCloneObject = __nccwpck_require__(22258), + isArray = __nccwpck_require__(68635), + isBuffer = __nccwpck_require__(1236), + isMap = __nccwpck_require__(39000), + isObject = __nccwpck_require__(85670), + isSet = __nccwpck_require__(55374), + keys = __nccwpck_require__(34894), + keysIn = __nccwpck_require__(1089); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +module.exports = baseClone; + + +/***/ }), + +/***/ 60537: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(85670); + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +module.exports = baseCreate; + + +/***/ }), + +/***/ 83084: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseForOwn = __nccwpck_require__(59522), + createBaseEach = __nccwpck_require__(26764); + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +module.exports = baseEach; + + +/***/ }), + +/***/ 34069: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayPush = __nccwpck_require__(89592), + isFlattenable = __nccwpck_require__(35949); + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +module.exports = baseFlatten; + + +/***/ }), + +/***/ 52562: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var createBaseFor = __nccwpck_require__(57519); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +module.exports = baseFor; + + +/***/ }), + +/***/ 59522: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseFor = __nccwpck_require__(52562), + keys = __nccwpck_require__(34894); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +module.exports = baseForOwn; + + +/***/ }), + +/***/ 25835: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var castPath = __nccwpck_require__(70908), + toKey = __nccwpck_require__(12432); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +module.exports = baseGet; + + +/***/ }), + +/***/ 41260: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayPush = __nccwpck_require__(89592), + isArray = __nccwpck_require__(68635); + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +module.exports = baseGetAllKeys; + + +/***/ }), + +/***/ 77772: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(25344), + getRawTag = __nccwpck_require__(96416), + objectToString = __nccwpck_require__(79230); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + + +/***/ }), + +/***/ 88916: +/***/ ((module) => { + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +module.exports = baseHasIn; + + +/***/ }), + +/***/ 86982: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetTag = __nccwpck_require__(77772), + isObjectLike = __nccwpck_require__(45281); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +module.exports = baseIsArguments; + + +/***/ }), + +/***/ 74375: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsEqualDeep = __nccwpck_require__(74882), + isObjectLike = __nccwpck_require__(45281); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +module.exports = baseIsEqual; + + +/***/ }), + +/***/ 74882: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stack = __nccwpck_require__(15531), + equalArrays = __nccwpck_require__(87509), + equalByTag = __nccwpck_require__(10092), + equalObjects = __nccwpck_require__(25574), + getTag = __nccwpck_require__(41704), + isArray = __nccwpck_require__(68635), + isBuffer = __nccwpck_require__(1236), + isTypedArray = __nccwpck_require__(46431); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; + + +/***/ }), + +/***/ 28059: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getTag = __nccwpck_require__(41704), + isObjectLike = __nccwpck_require__(45281); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; +} + +module.exports = baseIsMap; + + +/***/ }), + +/***/ 12653: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stack = __nccwpck_require__(15531), + baseIsEqual = __nccwpck_require__(74375); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +module.exports = baseIsMatch; + + +/***/ }), + +/***/ 38635: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isFunction = __nccwpck_require__(57983), + isMasked = __nccwpck_require__(24255), + isObject = __nccwpck_require__(85670), + toSource = __nccwpck_require__(69399); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +module.exports = baseIsNative; + + +/***/ }), + +/***/ 20952: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getTag = __nccwpck_require__(41704), + isObjectLike = __nccwpck_require__(45281); + +/** `Object#toString` result references. */ +var setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} + +module.exports = baseIsSet; + + +/***/ }), + +/***/ 90006: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetTag = __nccwpck_require__(77772), + isLength = __nccwpck_require__(32480), + isObjectLike = __nccwpck_require__(45281); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +module.exports = baseIsTypedArray; + + +/***/ }), + +/***/ 64331: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseMatches = __nccwpck_require__(63598), + baseMatchesProperty = __nccwpck_require__(5644), + identity = __nccwpck_require__(53740), + isArray = __nccwpck_require__(68635), + property = __nccwpck_require__(36247); + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +module.exports = baseIteratee; + + +/***/ }), + +/***/ 89864: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isPrototype = __nccwpck_require__(49393), + nativeKeys = __nccwpck_require__(59192); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +module.exports = baseKeys; + + +/***/ }), + +/***/ 25475: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(85670), + isPrototype = __nccwpck_require__(49393), + nativeKeysIn = __nccwpck_require__(29624); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = baseKeysIn; + + +/***/ }), + +/***/ 56079: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseEach = __nccwpck_require__(83084), + isArrayLike = __nccwpck_require__(28049); + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +module.exports = baseMap; + + +/***/ }), + +/***/ 63598: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsMatch = __nccwpck_require__(12653), + getMatchData = __nccwpck_require__(55726), + matchesStrictComparable = __nccwpck_require__(25654); + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +module.exports = baseMatches; + + +/***/ }), + +/***/ 5644: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsEqual = __nccwpck_require__(74375), + get = __nccwpck_require__(47006), + hasIn = __nccwpck_require__(86366), + isKey = __nccwpck_require__(76930), + isStrictComparable = __nccwpck_require__(56184), + matchesStrictComparable = __nccwpck_require__(25654), + toKey = __nccwpck_require__(12432); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +module.exports = baseMatchesProperty; + + +/***/ }), + +/***/ 42157: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayMap = __nccwpck_require__(10044), + baseGet = __nccwpck_require__(25835), + baseIteratee = __nccwpck_require__(64331), + baseMap = __nccwpck_require__(56079), + baseSortBy = __nccwpck_require__(16876), + baseUnary = __nccwpck_require__(47606), + compareMultiple = __nccwpck_require__(10002), + identity = __nccwpck_require__(53740), + isArray = __nccwpck_require__(68635); + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); +} + +module.exports = baseOrderBy; + + +/***/ }), + +/***/ 95716: +/***/ ((module) => { + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = baseProperty; + + +/***/ }), + +/***/ 18956: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGet = __nccwpck_require__(25835); + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +module.exports = basePropertyDeep; + + +/***/ }), + +/***/ 51226: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var identity = __nccwpck_require__(53740), + overRest = __nccwpck_require__(60111), + setToString = __nccwpck_require__(41736); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +module.exports = baseRest; + + +/***/ }), + +/***/ 1557: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var constant = __nccwpck_require__(99178), + defineProperty = __nccwpck_require__(74649), + identity = __nccwpck_require__(53740); + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +module.exports = baseSetToString; + + +/***/ }), + +/***/ 16876: +/***/ ((module) => { + +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} + +module.exports = baseSortBy; + + +/***/ }), + +/***/ 31579: +/***/ ((module) => { + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; + + +/***/ }), + +/***/ 74256: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(25344), + arrayMap = __nccwpck_require__(10044), + isArray = __nccwpck_require__(68635), + isSymbol = __nccwpck_require__(97894); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = baseToString; + + +/***/ }), + +/***/ 47606: +/***/ ((module) => { + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; + + +/***/ }), + +/***/ 11624: +/***/ ((module) => { + +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +module.exports = cacheHas; + + +/***/ }), + +/***/ 70908: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isArray = __nccwpck_require__(68635), + isKey = __nccwpck_require__(76930), + stringToPath = __nccwpck_require__(3665), + toString = __nccwpck_require__(58052); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; + + +/***/ }), + +/***/ 51940: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Uint8Array = __nccwpck_require__(82382); + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +module.exports = cloneArrayBuffer; + + +/***/ }), + +/***/ 67555: +/***/ ((module, exports, __nccwpck_require__) => { + +/* module decorator */ module = __nccwpck_require__.nmd(module); +var root = __nccwpck_require__(95173); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +module.exports = cloneBuffer; + + +/***/ }), + +/***/ 81261: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var cloneArrayBuffer = __nccwpck_require__(51940); + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +module.exports = cloneDataView; + + +/***/ }), + +/***/ 16375: +/***/ ((module) => { + +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +module.exports = cloneRegExp; + + +/***/ }), + +/***/ 31651: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(25344); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +module.exports = cloneSymbol; + + +/***/ }), + +/***/ 55584: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var cloneArrayBuffer = __nccwpck_require__(51940); + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +module.exports = cloneTypedArray; + + +/***/ }), + +/***/ 95676: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isSymbol = __nccwpck_require__(97894); + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; +} + +module.exports = compareAscending; + + +/***/ }), + +/***/ 10002: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var compareAscending = __nccwpck_require__(95676); + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; +} + +module.exports = compareMultiple; + + +/***/ }), + +/***/ 91027: +/***/ ((module) => { + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +module.exports = copyArray; + + +/***/ }), + +/***/ 80860: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var assignValue = __nccwpck_require__(6167), + baseAssignValue = __nccwpck_require__(37158); + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +module.exports = copyObject; + + +/***/ }), + +/***/ 80813: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var copyObject = __nccwpck_require__(80860), + getSymbols = __nccwpck_require__(97045); + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +module.exports = copySymbols; + + +/***/ }), + +/***/ 68854: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var copyObject = __nccwpck_require__(80860), + getSymbolsIn = __nccwpck_require__(52044); + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} + +module.exports = copySymbolsIn; + + +/***/ }), + +/***/ 3578: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var root = __nccwpck_require__(95173); + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +module.exports = coreJsData; + + +/***/ }), + +/***/ 26764: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isArrayLike = __nccwpck_require__(28049); + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +module.exports = createBaseEach; + + +/***/ }), + +/***/ 57519: +/***/ ((module) => { + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = createBaseFor; + + +/***/ }), + +/***/ 74649: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; + + +/***/ }), + +/***/ 87509: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var SetCache = __nccwpck_require__(57869), + arraySome = __nccwpck_require__(54151), + cacheHas = __nccwpck_require__(11624); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; + + +/***/ }), + +/***/ 10092: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(25344), + Uint8Array = __nccwpck_require__(82382), + eq = __nccwpck_require__(15379), + equalArrays = __nccwpck_require__(87509), + mapToArray = __nccwpck_require__(27916), + setToArray = __nccwpck_require__(93126); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +module.exports = equalByTag; + + +/***/ }), + +/***/ 25574: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getAllKeys = __nccwpck_require__(39346); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; + + +/***/ }), + +/***/ 53795: +/***/ ((module) => { + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + + +/***/ }), + +/***/ 39346: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetAllKeys = __nccwpck_require__(41260), + getSymbols = __nccwpck_require__(97045), + keys = __nccwpck_require__(34894); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; + + +/***/ }), + +/***/ 50101: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetAllKeys = __nccwpck_require__(41260), + getSymbolsIn = __nccwpck_require__(52044), + keysIn = __nccwpck_require__(1089); + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +module.exports = getAllKeysIn; + + +/***/ }), + +/***/ 76246: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isKeyable = __nccwpck_require__(83961); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; + + +/***/ }), + +/***/ 55726: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isStrictComparable = __nccwpck_require__(56184), + keys = __nccwpck_require__(34894); + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +module.exports = getMatchData; + + +/***/ }), + +/***/ 16221: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsNative = __nccwpck_require__(38635), + getValue = __nccwpck_require__(54830); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; + + +/***/ }), + +/***/ 93287: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var overArg = __nccwpck_require__(184); + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +module.exports = getPrototype; + + +/***/ }), + +/***/ 96416: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(25344); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + + +/***/ }), + +/***/ 97045: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayFilter = __nccwpck_require__(33281), + stubArray = __nccwpck_require__(23509); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +module.exports = getSymbols; + + +/***/ }), + +/***/ 52044: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayPush = __nccwpck_require__(89592), + getPrototype = __nccwpck_require__(93287), + getSymbols = __nccwpck_require__(97045), + stubArray = __nccwpck_require__(23509); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +module.exports = getSymbolsIn; + + +/***/ }), + +/***/ 41704: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var DataView = __nccwpck_require__(63830), + Map = __nccwpck_require__(16137), + Promise = __nccwpck_require__(50211), + Set = __nccwpck_require__(4994), + WeakMap = __nccwpck_require__(34105), + baseGetTag = __nccwpck_require__(77772), + toSource = __nccwpck_require__(69399); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; + + +/***/ }), + +/***/ 54830: +/***/ ((module) => { + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; + + +/***/ }), + +/***/ 74027: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var castPath = __nccwpck_require__(70908), + isArguments = __nccwpck_require__(43891), + isArray = __nccwpck_require__(68635), + isIndex = __nccwpck_require__(77844), + isLength = __nccwpck_require__(32480), + toKey = __nccwpck_require__(12432); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; + + +/***/ }), + +/***/ 20443: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var nativeCreate = __nccwpck_require__(24081); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +module.exports = hashClear; + + +/***/ }), + +/***/ 54570: +/***/ ((module) => { + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; + + +/***/ }), + +/***/ 46331: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var nativeCreate = __nccwpck_require__(24081); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +module.exports = hashGet; + + +/***/ }), + +/***/ 10339: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var nativeCreate = __nccwpck_require__(24081); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +module.exports = hashHas; + + +/***/ }), + +/***/ 60910: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var nativeCreate = __nccwpck_require__(24081); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +module.exports = hashSet; + + +/***/ }), + +/***/ 87042: +/***/ ((module) => { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +module.exports = initCloneArray; + + +/***/ }), + +/***/ 79322: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var cloneArrayBuffer = __nccwpck_require__(51940), + cloneDataView = __nccwpck_require__(81261), + cloneRegExp = __nccwpck_require__(16375), + cloneSymbol = __nccwpck_require__(31651), + cloneTypedArray = __nccwpck_require__(55584); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +module.exports = initCloneByTag; + + +/***/ }), + +/***/ 22258: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseCreate = __nccwpck_require__(60537), + getPrototype = __nccwpck_require__(93287), + isPrototype = __nccwpck_require__(49393); + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; + + +/***/ }), + +/***/ 35949: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(25344), + isArguments = __nccwpck_require__(43891), + isArray = __nccwpck_require__(68635); + +/** Built-in value references. */ +var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +module.exports = isFlattenable; + + +/***/ }), + +/***/ 77844: +/***/ ((module) => { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; + + +/***/ }), + +/***/ 42406: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var eq = __nccwpck_require__(15379), + isArrayLike = __nccwpck_require__(28049), + isIndex = __nccwpck_require__(77844), + isObject = __nccwpck_require__(85670); + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +module.exports = isIterateeCall; + + +/***/ }), + +/***/ 76930: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isArray = __nccwpck_require__(68635), + isSymbol = __nccwpck_require__(97894); + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +module.exports = isKey; + + +/***/ }), + +/***/ 83961: +/***/ ((module) => { + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +module.exports = isKeyable; + + +/***/ }), + +/***/ 24255: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var coreJsData = __nccwpck_require__(3578); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; + + +/***/ }), + +/***/ 49393: +/***/ ((module) => { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; + + +/***/ }), + +/***/ 56184: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isObject = __nccwpck_require__(85670); + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +module.exports = isStrictComparable; + + +/***/ }), + +/***/ 60527: +/***/ ((module) => { + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; + + +/***/ }), + +/***/ 44877: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var assocIndexOf = __nccwpck_require__(75744); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +module.exports = listCacheDelete; + + +/***/ }), + +/***/ 30765: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var assocIndexOf = __nccwpck_require__(75744); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; + + +/***/ }), + +/***/ 97220: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var assocIndexOf = __nccwpck_require__(75744); + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +module.exports = listCacheHas; + + +/***/ }), + +/***/ 74558: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var assocIndexOf = __nccwpck_require__(75744); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; + + +/***/ }), + +/***/ 40497: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Hash = __nccwpck_require__(68184), + ListCache = __nccwpck_require__(46242), + Map = __nccwpck_require__(16137); + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; + + +/***/ }), + +/***/ 20756: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getMapData = __nccwpck_require__(76246); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; + + +/***/ }), + +/***/ 12886: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getMapData = __nccwpck_require__(76246); + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +module.exports = mapCacheGet; + + +/***/ }), + +/***/ 18510: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getMapData = __nccwpck_require__(76246); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + + +/***/ }), + +/***/ 10210: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getMapData = __nccwpck_require__(76246); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; + + +/***/ }), + +/***/ 27916: +/***/ ((module) => { + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +module.exports = mapToArray; + + +/***/ }), + +/***/ 25654: +/***/ ((module) => { + +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +module.exports = matchesStrictComparable; + + +/***/ }), + +/***/ 91941: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var memoize = __nccwpck_require__(80968); + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +module.exports = memoizeCapped; + + +/***/ }), + +/***/ 24081: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(16221); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; + + +/***/ }), + +/***/ 59192: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var overArg = __nccwpck_require__(184); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; + + +/***/ }), + +/***/ 29624: +/***/ ((module) => { + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +module.exports = nativeKeysIn; + + +/***/ }), + +/***/ 19434: +/***/ ((module, exports, __nccwpck_require__) => { + +/* module decorator */ module = __nccwpck_require__.nmd(module); +var freeGlobal = __nccwpck_require__(53795); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; + + +/***/ }), + +/***/ 79230: +/***/ ((module) => { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + + +/***/ }), + +/***/ 184: +/***/ ((module) => { + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; + + +/***/ }), + +/***/ 60111: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var apply = __nccwpck_require__(52743); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +module.exports = overRest; + + +/***/ }), + +/***/ 95173: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var freeGlobal = __nccwpck_require__(53795); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + + +/***/ }), + +/***/ 28551: +/***/ ((module) => { + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; + + +/***/ }), + +/***/ 87850: +/***/ ((module) => { + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +module.exports = setCacheHas; + + +/***/ }), + +/***/ 93126: +/***/ ((module) => { + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; + + +/***/ }), + +/***/ 41736: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseSetToString = __nccwpck_require__(1557), + shortOut = __nccwpck_require__(95032); + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +module.exports = setToString; + + +/***/ }), + +/***/ 95032: +/***/ ((module) => { + +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +module.exports = shortOut; + + +/***/ }), + +/***/ 25172: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var ListCache = __nccwpck_require__(46242); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; + + +/***/ }), + +/***/ 25489: +/***/ ((module) => { + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; + + +/***/ }), + +/***/ 42362: +/***/ ((module) => { + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; + + +/***/ }), + +/***/ 99736: +/***/ ((module) => { + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +module.exports = stackHas; + + +/***/ }), + +/***/ 83463: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var ListCache = __nccwpck_require__(46242), + Map = __nccwpck_require__(16137), + MapCache = __nccwpck_require__(8108); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +module.exports = stackSet; + + +/***/ }), + +/***/ 3665: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var memoizeCapped = __nccwpck_require__(91941); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +module.exports = stringToPath; + + +/***/ }), + +/***/ 12432: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isSymbol = __nccwpck_require__(97894); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; + + +/***/ }), + +/***/ 69399: +/***/ ((module) => { + +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +module.exports = toSource; + + +/***/ }), + +/***/ 35026: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseClone = __nccwpck_require__(82306); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; + + +/***/ }), + +/***/ 99178: +/***/ ((module) => { + +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +module.exports = constant; + + +/***/ }), + +/***/ 15379: +/***/ ((module) => { + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +module.exports = eq; + + +/***/ }), + +/***/ 11160: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var toString = __nccwpck_require__(58052); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + +/** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ +function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; +} + +module.exports = escapeRegExp; + + +/***/ }), + +/***/ 47006: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGet = __nccwpck_require__(25835); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + + +/***/ }), + +/***/ 86366: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseHasIn = __nccwpck_require__(88916), + hasPath = __nccwpck_require__(74027); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +module.exports = hasIn; + + +/***/ }), + +/***/ 53740: +/***/ ((module) => { + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; + + +/***/ }), + +/***/ 43891: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsArguments = __nccwpck_require__(86982), + isObjectLike = __nccwpck_require__(45281); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; + + +/***/ }), + +/***/ 68635: +/***/ ((module) => { + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + + +/***/ }), + +/***/ 28049: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isFunction = __nccwpck_require__(57983), + isLength = __nccwpck_require__(32480); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; + + +/***/ }), + +/***/ 1236: +/***/ ((module, exports, __nccwpck_require__) => { + +/* module decorator */ module = __nccwpck_require__.nmd(module); +var root = __nccwpck_require__(95173), + stubFalse = __nccwpck_require__(33825); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; + + +/***/ }), + +/***/ 57983: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetTag = __nccwpck_require__(77772), + isObject = __nccwpck_require__(85670); + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +module.exports = isFunction; + + +/***/ }), + +/***/ 32480: +/***/ ((module) => { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + + +/***/ }), + +/***/ 39000: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsMap = __nccwpck_require__(28059), + baseUnary = __nccwpck_require__(47606), + nodeUtil = __nccwpck_require__(19434); + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +module.exports = isMap; + + +/***/ }), + +/***/ 85670: +/***/ ((module) => { + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + + +/***/ }), + +/***/ 45281: +/***/ ((module) => { + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + + +/***/ }), + +/***/ 55374: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsSet = __nccwpck_require__(20952), + baseUnary = __nccwpck_require__(47606), + nodeUtil = __nccwpck_require__(19434); + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +module.exports = isSet; + + +/***/ }), + +/***/ 97894: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetTag = __nccwpck_require__(77772), + isObjectLike = __nccwpck_require__(45281); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + + +/***/ }), + +/***/ 46431: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsTypedArray = __nccwpck_require__(90006), + baseUnary = __nccwpck_require__(47606), + nodeUtil = __nccwpck_require__(19434); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; + + +/***/ }), + +/***/ 34894: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayLikeKeys = __nccwpck_require__(69511), + baseKeys = __nccwpck_require__(89864), + isArrayLike = __nccwpck_require__(28049); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; + + +/***/ }), + +/***/ 1089: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayLikeKeys = __nccwpck_require__(69511), + baseKeysIn = __nccwpck_require__(25475), + isArrayLike = __nccwpck_require__(28049); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; + + +/***/ }), + +/***/ 80968: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var MapCache = __nccwpck_require__(8108); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; + + +/***/ }), + +/***/ 36247: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseProperty = __nccwpck_require__(95716), + basePropertyDeep = __nccwpck_require__(18956), + isKey = __nccwpck_require__(76930), + toKey = __nccwpck_require__(12432); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; + + +/***/ }), + +/***/ 39625: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseFlatten = __nccwpck_require__(34069), + baseOrderBy = __nccwpck_require__(42157), + baseRest = __nccwpck_require__(51226), + isIterateeCall = __nccwpck_require__(42406); + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ +var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); +}); + +module.exports = sortBy; + + +/***/ }), + +/***/ 23509: +/***/ ((module) => { + +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +module.exports = stubArray; + + +/***/ }), + +/***/ 33825: +/***/ ((module) => { + +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = stubFalse; + + +/***/ }), + +/***/ 58052: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseToString = __nccwpck_require__(74256); + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = toString; + + +/***/ }), + +/***/ 18697: +/***/ ((module) => { + +"use strict"; + + +module.exports = longestStreak + +// Get the count of the longest repeating streak of `character` in `value`. +function longestStreak(value, character) { + var count = 0 + var maximum = 0 + var expected + var index + + if (typeof character !== 'string' || character.length !== 1) { + throw new Error('Expected character') + } + + value = String(value) + index = value.indexOf(character) + expected = index + + while (index !== -1) { + count++ + + if (index === expected) { + if (count > maximum) { + maximum = count + } + } else { + count = 1 + } + + expected = index + 1 + index = value.indexOf(character, expected) + } + + return maximum +} + + +/***/ }), + +/***/ 31152: +/***/ ((module) => { + +"use strict"; + + +module.exports = escapes + +var defaults = [ + '\\', + '`', + '*', + '{', + '}', + '[', + ']', + '(', + ')', + '#', + '+', + '-', + '.', + '!', + '_', + '>' +] + +var gfm = defaults.concat(['~', '|']) + +var commonmark = gfm.concat([ + '\n', + '"', + '$', + '%', + '&', + "'", + ',', + '/', + ':', + ';', + '<', + '=', + '?', + '@', + '^' +]) + +escapes.default = defaults +escapes.gfm = gfm +escapes.commonmark = commonmark + +// Get markdown escapes. +function escapes(options) { + var settings = options || {} + + if (settings.commonmark) { + return commonmark + } + + return settings.gfm ? gfm : defaults +} + + +/***/ }), + +/***/ 90906: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) + +module.exports = markdownTable + +var trailingWhitespace = / +$/ + +// Characters. +var space = ' ' +var lineFeed = '\n' +var dash = '-' +var colon = ':' +var verticalBar = '|' + +var x = 0 +var C = 67 +var L = 76 +var R = 82 +var c = 99 +var l = 108 +var r = 114 + +// Create a table from a matrix of strings. +function markdownTable(table, options) { + var settings = options || {} + var padding = settings.padding !== false + var start = settings.delimiterStart !== false + var end = settings.delimiterEnd !== false + var align = (settings.align || []).concat() + var alignDelimiters = settings.alignDelimiters !== false + var alignments = [] + var stringLength = settings.stringLength || defaultStringLength + var rowIndex = -1 + var rowLength = table.length + var cellMatrix = [] + var sizeMatrix = [] + var row = [] + var sizes = [] + var longestCellByColumn = [] + var mostCellsPerRow = 0 + var cells + var columnIndex + var columnLength + var largest + var size + var cell + var lines + var line + var before + var after + var code + + // This is a superfluous loop if we don’t align delimiters, but otherwise we’d + // do superfluous work when aligning, so optimize for aligning. + while (++rowIndex < rowLength) { + cells = table[rowIndex] + columnIndex = -1 + columnLength = cells.length + row = [] + sizes = [] + + if (columnLength > mostCellsPerRow) { + mostCellsPerRow = columnLength + } + + while (++columnIndex < columnLength) { + cell = serialize(cells[columnIndex]) + + if (alignDelimiters === true) { + size = stringLength(cell) + sizes[columnIndex] = size + + largest = longestCellByColumn[columnIndex] + + if (largest === undefined || size > largest) { + longestCellByColumn[columnIndex] = size + } + } + + row.push(cell) + } + + cellMatrix[rowIndex] = row + sizeMatrix[rowIndex] = sizes + } + + // Figure out which alignments to use. + columnIndex = -1 + columnLength = mostCellsPerRow + + if (typeof align === 'object' && 'length' in align) { + while (++columnIndex < columnLength) { + alignments[columnIndex] = toAlignment(align[columnIndex]) + } + } else { + code = toAlignment(align) + + while (++columnIndex < columnLength) { + alignments[columnIndex] = code + } + } + + // Inject the alignment row. + columnIndex = -1 + columnLength = mostCellsPerRow + row = [] + sizes = [] + + while (++columnIndex < columnLength) { + code = alignments[columnIndex] + before = '' + after = '' + + if (code === l) { + before = colon + } else if (code === r) { + after = colon + } else if (code === c) { + before = colon + after = colon + } + + // There *must* be at least one hyphen-minus in each alignment cell. + size = alignDelimiters + ? Math.max( + 1, + longestCellByColumn[columnIndex] - before.length - after.length + ) + : 1 + + cell = before + repeat(dash, size) + after + + if (alignDelimiters === true) { + size = before.length + size + after.length + + if (size > longestCellByColumn[columnIndex]) { + longestCellByColumn[columnIndex] = size + } + + sizes[columnIndex] = size + } + + row[columnIndex] = cell + } + + // Inject the alignment row. + cellMatrix.splice(1, 0, row) + sizeMatrix.splice(1, 0, sizes) + + rowIndex = -1 + rowLength = cellMatrix.length + lines = [] + + while (++rowIndex < rowLength) { + row = cellMatrix[rowIndex] + sizes = sizeMatrix[rowIndex] + columnIndex = -1 + columnLength = mostCellsPerRow + line = [] + + while (++columnIndex < columnLength) { + cell = row[columnIndex] || '' + before = '' + after = '' + + if (alignDelimiters === true) { + size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0) + code = alignments[columnIndex] + + if (code === r) { + before = repeat(space, size) + } else if (code === c) { + if (size % 2 === 0) { + before = repeat(space, size / 2) + after = before + } else { + before = repeat(space, size / 2 + 0.5) + after = repeat(space, size / 2 - 0.5) + } + } else { + after = repeat(space, size) + } + } + + if (start === true && columnIndex === 0) { + line.push(verticalBar) + } + + if ( + padding === true && + // Don’t add the opening space if we’re not aligning and the cell is + // empty: there will be a closing space. + !(alignDelimiters === false && cell === '') && + (start === true || columnIndex !== 0) + ) { + line.push(space) + } + + if (alignDelimiters === true) { + line.push(before) + } + + line.push(cell) + + if (alignDelimiters === true) { + line.push(after) + } + + if (padding === true) { + line.push(space) + } + + if (end === true || columnIndex !== columnLength - 1) { + line.push(verticalBar) + } + } + + line = line.join('') + + if (end === false) { + line = line.replace(trailingWhitespace, '') + } + + lines.push(line) + } + + return lines.join(lineFeed) +} + +function serialize(value) { + return value === null || value === undefined ? '' : String(value) +} + +function defaultStringLength(value) { + return value.length +} + +function toAlignment(value) { + var code = typeof value === 'string' ? value.charCodeAt(0) : x + + return code === L || code === l + ? l + : code === R || code === r + ? r + : code === C || code === c + ? c + : x +} + + +/***/ }), + +/***/ 62608: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var visit = __nccwpck_require__(47982) + +module.exports = compact + +// Make an mdast tree compact by merging adjacent text nodes. +function compact(tree, commonmark) { + visit(tree, visitor) + + return tree + + function visitor(child, index, parent) { + var siblings = parent ? parent.children : [] + var prev = index && siblings[index - 1] + + if ( + prev && + child.type === prev.type && + mergeable(prev, commonmark) && + mergeable(child, commonmark) + ) { + if (child.value) { + prev.value += child.value + } + + if (child.children) { + prev.children = prev.children.concat(child.children) + } + + siblings.splice(index, 1) + + if (prev.position && child.position) { + prev.position.end = child.position.end + } + + return index + } + } +} + +function mergeable(node, commonmark) { + var start + var end + + if (node.type === 'text') { + if (!node.position) { + return true + } + + start = node.position.start + end = node.position.end + + // Only merge nodes which occupy the same size as their `value`. + return ( + start.line !== end.line || end.column - start.column === node.value.length + ) + } + + return commonmark && node.type === 'blockquote' +} + + +/***/ }), + +/***/ 80040: +/***/ ((module) => { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), + +/***/ 41045: +/***/ ((module) => { + +"use strict"; + + +function genWrap (wraps, ref, fn, event) { + function wrap () { + const obj = ref.deref() + // This should alway happen, however GC is + // undeterministic so it might happen. + /* istanbul ignore else */ + if (obj !== undefined) { + fn(obj, event) + } + } + + wraps[event] = wrap + process.once(event, wrap) +} + +const registry = new FinalizationRegistry(clear) +const map = new WeakMap() + +function clear (wraps) { + process.removeListener('exit', wraps.exit) + process.removeListener('beforeExit', wraps.beforeExit) +} + +function register (obj, fn) { + if (obj === undefined) { + throw new Error('the object can\'t be undefined') + } + const ref = new WeakRef(obj) + + const wraps = {} + map.set(obj, wraps) + registry.register(obj, wraps) + + genWrap(wraps, ref, fn, 'exit') + genWrap(wraps, ref, fn, 'beforeExit') +} + +function unregister (obj) { + const wraps = map.get(obj) + map.delete(obj) + if (wraps) { + clear(wraps) + } + registry.unregister(obj) +} + +module.exports = { + register, + unregister +} + + +/***/ }), + +/***/ 87197: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var wrappy = __nccwpck_require__(84586) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + + +/***/ }), + +/***/ 21581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var characterEntities = __nccwpck_require__(45129) + +module.exports = decodeEntity + +var own = {}.hasOwnProperty + +function decodeEntity(characters) { + return own.call(characterEntities, characters) + ? characterEntities[characters] + : false +} + + +/***/ }), + +/***/ 81085: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var legacy = __nccwpck_require__(93562) +var invalid = __nccwpck_require__(71216) +var decimal = __nccwpck_require__(76995) +var hexadecimal = __nccwpck_require__(95731) +var alphanumerical = __nccwpck_require__(1931) +var decodeEntity = __nccwpck_require__(21581) + +module.exports = parseEntities + +var own = {}.hasOwnProperty +var fromCharCode = String.fromCharCode +var noop = Function.prototype + +// Default settings. +var defaults = { + warning: null, + reference: null, + text: null, + warningContext: null, + referenceContext: null, + textContext: null, + position: {}, + additional: null, + attribute: false, + nonTerminated: true +} + +// Characters. +var tab = 9 // '\t' +var lineFeed = 10 // '\n' +var formFeed = 12 // '\f' +var space = 32 // ' ' +var ampersand = 38 // '&' +var semicolon = 59 // ';' +var lessThan = 60 // '<' +var equalsTo = 61 // '=' +var numberSign = 35 // '#' +var uppercaseX = 88 // 'X' +var lowercaseX = 120 // 'x' +var replacementCharacter = 65533 // '�' + +// Reference types. +var name = 'named' +var hexa = 'hexadecimal' +var deci = 'decimal' + +// Map of bases. +var bases = {} + +bases[hexa] = 16 +bases[deci] = 10 + +// Map of types to tests. +// Each type of character reference accepts different characters. +// This test is used to detect whether a reference has ended (as the semicolon +// is not strictly needed). +var tests = {} + +tests[name] = alphanumerical +tests[deci] = decimal +tests[hexa] = hexadecimal + +// Warning types. +var namedNotTerminated = 1 +var numericNotTerminated = 2 +var namedEmpty = 3 +var numericEmpty = 4 +var namedUnknown = 5 +var numericDisallowed = 6 +var numericProhibited = 7 + +// Warning messages. +var messages = {} + +messages[namedNotTerminated] = + 'Named character references must be terminated by a semicolon' +messages[numericNotTerminated] = + 'Numeric character references must be terminated by a semicolon' +messages[namedEmpty] = 'Named character references cannot be empty' +messages[numericEmpty] = 'Numeric character references cannot be empty' +messages[namedUnknown] = 'Named character references must be known' +messages[numericDisallowed] = + 'Numeric character references cannot be disallowed' +messages[numericProhibited] = + 'Numeric character references cannot be outside the permissible Unicode range' + +// Wrap to ensure clean parameters are given to `parse`. +function parseEntities(value, options) { + var settings = {} + var option + var key + + if (!options) { + options = {} + } + + for (key in defaults) { + option = options[key] + settings[key] = + option === null || option === undefined ? defaults[key] : option + } + + if (settings.position.indent || settings.position.start) { + settings.indent = settings.position.indent || [] + settings.position = settings.position.start + } + + return parse(value, settings) +} + +// Parse entities. +// eslint-disable-next-line complexity +function parse(value, settings) { + var additional = settings.additional + var nonTerminated = settings.nonTerminated + var handleText = settings.text + var handleReference = settings.reference + var handleWarning = settings.warning + var textContext = settings.textContext + var referenceContext = settings.referenceContext + var warningContext = settings.warningContext + var pos = settings.position + var indent = settings.indent || [] + var length = value.length + var index = 0 + var lines = -1 + var column = pos.column || 1 + var line = pos.line || 1 + var queue = '' + var result = [] + var entityCharacters + var namedEntity + var terminated + var characters + var character + var reference + var following + var warning + var reason + var output + var entity + var begin + var start + var type + var test + var prev + var next + var diff + var end + + if (typeof additional === 'string') { + additional = additional.charCodeAt(0) + } + + // Cache the current point. + prev = now() + + // Wrap `handleWarning`. + warning = handleWarning ? parseError : noop + + // Ensure the algorithm walks over the first character and the end + // (inclusive). + index-- + length++ + + while (++index < length) { + // If the previous character was a newline. + if (character === lineFeed) { + column = indent[lines] || 1 + } + + character = value.charCodeAt(index) + + if (character === ampersand) { + following = value.charCodeAt(index + 1) + + // The behaviour depends on the identity of the next character. + if ( + following === tab || + following === lineFeed || + following === formFeed || + following === space || + following === ampersand || + following === lessThan || + following !== following || + (additional && following === additional) + ) { + // Not a character reference. + // No characters are consumed, and nothing is returned. + // This is not an error, either. + queue += fromCharCode(character) + column++ + + continue + } + + start = index + 1 + begin = start + end = start + + if (following === numberSign) { + // Numerical entity. + end = ++begin + + // The behaviour further depends on the next character. + following = value.charCodeAt(end) + + if (following === uppercaseX || following === lowercaseX) { + // ASCII hex digits. + type = hexa + end = ++begin + } else { + // ASCII digits. + type = deci + } + } else { + // Named entity. + type = name + } + + entityCharacters = '' + entity = '' + characters = '' + test = tests[type] + end-- + + while (++end < length) { + following = value.charCodeAt(end) + + if (!test(following)) { + break + } + + characters += fromCharCode(following) + + // Check if we can match a legacy named reference. + // If so, we cache that as the last viable named reference. + // This ensures we do not need to walk backwards later. + if (type === name && own.call(legacy, characters)) { + entityCharacters = characters + entity = legacy[characters] + } + } + + terminated = value.charCodeAt(end) === semicolon + + if (terminated) { + end++ + + namedEntity = type === name ? decodeEntity(characters) : false + + if (namedEntity) { + entityCharacters = characters + entity = namedEntity + } + } + + diff = 1 + end - start + + if (!terminated && !nonTerminated) { + // Empty. + } else if (!characters) { + // An empty (possible) entity is valid, unless it’s numeric (thus an + // ampersand followed by an octothorp). + if (type !== name) { + warning(numericEmpty, diff) + } + } else if (type === name) { + // An ampersand followed by anything unknown, and not terminated, is + // invalid. + if (terminated && !entity) { + warning(namedUnknown, 1) + } else { + // If theres something after an entity name which is not known, cap + // the reference. + if (entityCharacters !== characters) { + end = begin + entityCharacters.length + diff = 1 + end - begin + terminated = false + } + + // If the reference is not terminated, warn. + if (!terminated) { + reason = entityCharacters ? namedNotTerminated : namedEmpty + + if (settings.attribute) { + following = value.charCodeAt(end) + + if (following === equalsTo) { + warning(reason, diff) + entity = null + } else if (alphanumerical(following)) { + entity = null + } else { + warning(reason, diff) + } + } else { + warning(reason, diff) + } + } + } + + reference = entity + } else { + if (!terminated) { + // All non-terminated numeric entities are not rendered, and trigger a + // warning. + warning(numericNotTerminated, diff) + } + + // When terminated and number, parse as either hexadecimal or decimal. + reference = parseInt(characters, bases[type]) + + // Trigger a warning when the parsed number is prohibited, and replace + // with replacement character. + if (prohibited(reference)) { + warning(numericProhibited, diff) + reference = fromCharCode(replacementCharacter) + } else if (reference in invalid) { + // Trigger a warning when the parsed number is disallowed, and replace + // by an alternative. + warning(numericDisallowed, diff) + reference = invalid[reference] + } else { + // Parse the number. + output = '' + + // Trigger a warning when the parsed number should not be used. + if (disallowed(reference)) { + warning(numericDisallowed, diff) + } + + // Stringify the number. + if (reference > 0xffff) { + reference -= 0x10000 + output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800) + reference = 0xdc00 | (reference & 0x3ff) + } + + reference = output + fromCharCode(reference) + } + } + + // Found it! + // First eat the queued characters as normal text, then eat an entity. + if (reference) { + flush() + + prev = now() + index = end - 1 + column += end - start + 1 + result.push(reference) + next = now() + next.offset++ + + if (handleReference) { + handleReference.call( + referenceContext, + reference, + {start: prev, end: next}, + value.slice(start - 1, end) + ) + } + + prev = next + } else { + // If we could not find a reference, queue the checked characters (as + // normal characters), and move the pointer to their end. + // This is possible because we can be certain neither newlines nor + // ampersands are included. + characters = value.slice(start - 1, end) + queue += characters + column += characters.length + index = end - 1 + } + } else { + // Handle anything other than an ampersand, including newlines and EOF. + if ( + character === 10 // Line feed + ) { + line++ + lines++ + column = 0 + } + + if (character === character) { + queue += fromCharCode(character) + column++ + } else { + flush() + } + } + } + + // Return the reduced nodes. + return result.join('') + + // Get current position. + function now() { + return { + line: line, + column: column, + offset: index + (pos.offset || 0) + } + } + + // “Throw” a parse-error: a warning. + function parseError(code, offset) { + var position = now() + + position.column += offset + position.offset += offset + + handleWarning.call(warningContext, messages[code], position, code) + } + + // Flush `queue` (normal text). + // Macro invoked before each entity and at the end of `value`. + // Does nothing when `queue` is empty. + function flush() { + if (queue) { + result.push(queue) + + if (handleText) { + handleText.call(textContext, queue, {start: prev, end: now()}) + } + + queue = '' + } + } +} + +// Check if `character` is outside the permissible unicode range. +function prohibited(code) { + return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff +} + +// Check if `character` is disallowed. +function disallowed(code) { + return ( + (code >= 0x0001 && code <= 0x0008) || + code === 0x000b || + (code >= 0x000d && code <= 0x001f) || + (code >= 0x007f && code <= 0x009f) || + (code >= 0xfdd0 && code <= 0xfdef) || + (code & 0xffff) === 0xffff || + (code & 0xffff) === 0xfffe + ) +} + + +/***/ }), + +/***/ 42742: +/***/ ((module) => { + +"use strict"; + + +var isWindows = process.platform === 'win32'; + +// Regex to split a windows path into into [dir, root, basename, name, ext] +var splitWindowsRe = + /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; + +var win32 = {}; + +function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); +} + +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; +}; + + + +// Split a filename into [dir, root, basename, name, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; +var posix = {}; + + +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} + + +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3], + }; +}; + + +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; + +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; + + +/***/ }), + +/***/ 90795: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const metadata = Symbol.for('pino.metadata') +const split = __nccwpck_require__(22011) +const duplexify = __nccwpck_require__(93265) + +module.exports = function build (fn, opts = {}) { + const parseLines = opts.parse === 'lines' + const parseLine = typeof opts.parseLine === 'function' ? opts.parseLine : JSON.parse + const close = opts.close || defaultClose + const stream = split(function (line) { + let value + + try { + value = parseLine(line) + } catch (error) { + this.emit('unknown', line, error) + return + } + + if (value === null) { + this.emit('unknown', line, 'Null value ignored') + return + } + + if (typeof value !== 'object') { + value = { + data: value, + time: Date.now() + } + } + + if (stream[metadata]) { + stream.lastTime = value.time + stream.lastLevel = value.level + stream.lastObj = value + } + + if (parseLines) { + return line + } + + return value + }, { autoDestroy: true }) + + stream._destroy = function (err, cb) { + const promise = close(err, cb) + if (promise && typeof promise.then === 'function') { + promise.then(cb, cb) + } + } + + if (opts.metadata !== false) { + stream[metadata] = true + stream.lastTime = 0 + stream.lastLevel = 0 + stream.lastObj = null + } + + let res = fn(stream) + + if (res && typeof res.catch === 'function') { + res.catch((err) => { + stream.destroy(err) + }) + + // set it to null to not retain a reference to the promise + res = null + } else if (opts.enablePipelining && res) { + return duplexify(stream, res, { + objectMode: true + }) + } + + return stream +} + +function defaultClose (err, cb) { + process.nextTick(cb, err) +} + + +/***/ }), + +/***/ 22011: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* +Copyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + + + +const { Transform } = __nccwpck_require__(12781) +const { StringDecoder } = __nccwpck_require__(71576) +const kLast = Symbol('last') +const kDecoder = Symbol('decoder') + +function transform (chunk, enc, cb) { + let list + if (this.overflow) { // Line buffer is full. Skip to start of next line. + const buf = this[kDecoder].write(chunk) + list = buf.split(this.matcher) + + if (list.length === 1) return cb() // Line ending not found. Discard entire chunk. + + // Line ending found. Discard trailing fragment of previous line and reset overflow state. + list.shift() + this.overflow = false + } else { + this[kLast] += this[kDecoder].write(chunk) + list = this[kLast].split(this.matcher) + } + + this[kLast] = list.pop() + + for (let i = 0; i < list.length; i++) { + try { + push(this, this.mapper(list[i])) + } catch (error) { + return cb(error) + } + } + + this.overflow = this[kLast].length > this.maxLength + if (this.overflow && !this.skipOverflow) { + cb(new Error('maximum buffer reached')) + return + } + + cb() +} + +function flush (cb) { + // forward any gibberish left in there + this[kLast] += this[kDecoder].end() + + if (this[kLast]) { + try { + push(this, this.mapper(this[kLast])) + } catch (error) { + return cb(error) + } + } + + cb() +} + +function push (self, val) { + if (val !== undefined) { + self.push(val) + } +} + +function noop (incoming) { + return incoming +} + +function split (matcher, mapper, options) { + // Set defaults for any arguments not supplied. + matcher = matcher || /\r?\n/ + mapper = mapper || noop + options = options || {} + + // Test arguments explicitly. + switch (arguments.length) { + case 1: + // If mapper is only argument. + if (typeof matcher === 'function') { + mapper = matcher + matcher = /\r?\n/ + // If options is only argument. + } else if (typeof matcher === 'object' && !(matcher instanceof RegExp)) { + options = matcher + matcher = /\r?\n/ + } + break + + case 2: + // If mapper and options are arguments. + if (typeof matcher === 'function') { + options = mapper + mapper = matcher + matcher = /\r?\n/ + // If matcher and options are arguments. + } else if (typeof mapper === 'object') { + options = mapper + mapper = noop + } + } + + options = Object.assign({}, options) + options.autoDestroy = true + options.transform = transform + options.flush = flush + options.readableObjectMode = true + + const stream = new Transform(options) + + stream[kLast] = '' + stream[kDecoder] = new StringDecoder('utf8') + stream.matcher = matcher + stream.mapper = mapper + stream.maxLength = options.maxLength + stream.skipOverflow = options.skipOverflow || false + stream.overflow = false + stream._destroy = function (err, cb) { + // Weird Node v12 bug that we need to work around + this._writableState.errorEmitted = false + cb(err) + } + + return stream +} + +module.exports = split + + +/***/ }), + +/***/ 725: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { format } = __nccwpck_require__(73837) + +function build () { + const codes = {} + const emitted = new Map() + + function create (name, code, message) { + if (!name) throw new Error('Warning name must not be empty') + if (!code) throw new Error('Warning code must not be empty') + if (!message) throw new Error('Warning message must not be empty') + + code = code.toUpperCase() + + if (codes[code] !== undefined) { + throw new Error(`The code '${code}' already exist`) + } + + function buildWarnOpts (a, b, c) { + // more performant than spread (...) operator + let formatted + if (a && b && c) { + formatted = format(message, a, b, c) + } else if (a && b) { + formatted = format(message, a, b) + } else if (a) { + formatted = format(message, a) + } else { + formatted = message + } + + return { + code, + name, + message: formatted + } + } + + emitted.set(code, false) + codes[code] = buildWarnOpts + + return codes[code] + } + + function emit (code, a, b, c) { + if (codes[code] === undefined) throw new Error(`The code '${code}' does not exist`) + if (emitted.get(code) === true) return + emitted.set(code, true) + + const warning = codes[code](a, b, c) + process.emitWarning(warning.message, warning.name, warning.code) + } + + return { + create, + emit, + emitted + } +} + +module.exports = build + + +/***/ }), + +/***/ 89595: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var once = __nccwpck_require__(87197) +var eos = __nccwpck_require__(92498) +var fs = __nccwpck_require__(57147) // we only need fs to get the ReadStream and WriteStream prototypes + +var noop = function () {} +var ancient = /^v?\.0/.test(process.version) + +var isFn = function (fn) { + return typeof fn === 'function' +} + +var isFS = function (stream) { + if (!ancient) return false // newer node version do not need to care about fs is a special way + if (!fs) return false // browser + return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) +} + +var isRequest = function (stream) { + return stream.setHeader && isFn(stream.abort) +} + +var destroyer = function (stream, reading, writing, callback) { + callback = once(callback) + + var closed = false + stream.on('close', function () { + closed = true + }) + + eos(stream, {readable: reading, writable: writing}, function (err) { + if (err) return callback(err) + closed = true + callback() + }) + + var destroyed = false + return function (err) { + if (closed) return + if (destroyed) return + destroyed = true + + if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks + if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want + + if (isFn(stream.destroy)) return stream.destroy() + + callback(err || new Error('stream was destroyed')) + } +} + +var call = function (fn) { + fn() +} + +var pipe = function (from, to) { + return from.pipe(to) +} + +var pump = function () { + var streams = Array.prototype.slice.call(arguments) + var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop + + if (Array.isArray(streams[0])) streams = streams[0] + if (streams.length < 2) throw new Error('pump requires two streams per minimum') + + var error + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1 + var writing = i > 0 + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err + if (err) destroys.forEach(call) + if (reading) return + destroys.forEach(call) + callback(error) + }) + }) + + return streams.reduce(pipe) +} + +module.exports = pump + + +/***/ }), + +/***/ 34397: +/***/ ((module) => { + +"use strict"; + +function tryStringify (o) { + try { return JSON.stringify(o) } catch(e) { return '"[Circular]"' } +} + +module.exports = format + +function format(f, args, opts) { + var ss = (opts && opts.stringify) || tryStringify + var offset = 1 + if (typeof f === 'object' && f !== null) { + var len = args.length + offset + if (len === 1) return f + var objects = new Array(len) + objects[0] = ss(f) + for (var index = 1; index < len; index++) { + objects[index] = ss(args[index]) + } + return objects.join(' ') + } + if (typeof f !== 'string') { + return f + } + var argLen = args.length + if (argLen === 0) return f + var str = '' + var a = 1 - offset + var lastPos = -1 + var flen = (f && f.length) || 0 + for (var i = 0; i < flen;) { + if (f.charCodeAt(i) === 37 && i + 1 < flen) { + lastPos = lastPos > -1 ? lastPos : 0 + switch (f.charCodeAt(i + 1)) { + case 100: // 'd' + case 102: // 'f' + if (a >= argLen) + break + if (args[a] == null) break + if (lastPos < i) + str += f.slice(lastPos, i) + str += Number(args[a]) + lastPos = i + 2 + i++ + break + case 105: // 'i' + if (a >= argLen) + break + if (args[a] == null) break + if (lastPos < i) + str += f.slice(lastPos, i) + str += Math.floor(Number(args[a])) + lastPos = i + 2 + i++ + break + case 79: // 'O' + case 111: // 'o' + case 106: // 'j' + if (a >= argLen) + break + if (args[a] === undefined) break + if (lastPos < i) + str += f.slice(lastPos, i) + var type = typeof args[a] + if (type === 'string') { + str += '\'' + args[a] + '\'' + lastPos = i + 2 + i++ + break + } + if (type === 'function') { + str += args[a].name || '<anonymous>' + lastPos = i + 2 + i++ + break + } + str += ss(args[a]) + lastPos = i + 2 + i++ + break + case 115: // 's' + if (a >= argLen) + break + if (lastPos < i) + str += f.slice(lastPos, i) + str += String(args[a]) + lastPos = i + 2 + i++ + break + case 37: // '%' + if (lastPos < i) + str += f.slice(lastPos, i) + str += '%' + lastPos = i + 2 + i++ + a-- + break + } + ++a + } + ++i + } + if (lastPos === -1) + return f + else if (lastPos < flen) { + str += f.slice(lastPos) + } + + return str +} + + +/***/ }), + +/***/ 13130: +/***/ ((module) => { + +"use strict"; + + +const codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error + } + + function getMessage (arg1, arg2, arg3) { + if (typeof message === 'string') { + return message + } else { + return message(arg1, arg2, arg3) + } + } + + class NodeError extends Base { + constructor (arg1, arg2, arg3) { + super(getMessage(arg1, arg2, arg3)); + } + } + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + + codes[code] = NodeError; +} + +// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + const len = expected.length; + expected = expected.map((i) => String(i)); + if (len > 2) { + return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` + + expected[len - 1]; + } else if (len === 2) { + return `one of ${thing} ${expected[0]} or ${expected[1]}`; + } else { + return `of ${thing} ${expected[0]}`; + } + } else { + return `of ${thing} ${String(expected)}`; + } +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + return str.substring(this_len - search.length, this_len) === search; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"' +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + let msg; + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`; + } else { + const type = includes(name, '.') ? 'property' : 'argument'; + msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, 'type')}`; + } + + msg += `. Received type ${typeof actual}`; + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented' +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); + +module.exports.q = codes; + + +/***/ }), + +/***/ 88393: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +/*<replacement>*/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/*</replacement>*/ + + +module.exports = Duplex; + +var Readable = __nccwpck_require__(80284); + +var Writable = __nccwpck_require__(36100); + +__nccwpck_require__(76919)(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +/***/ }), + +/***/ 55125: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + + +module.exports = PassThrough; + +var Transform = __nccwpck_require__(65469); + +__nccwpck_require__(76919)(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; + +/***/ }), + +/***/ 80284: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +module.exports = Readable; +/*<replacement>*/ + +var Duplex; +/*</replacement>*/ + +Readable.ReadableState = ReadableState; +/*<replacement>*/ + +var EE = (__nccwpck_require__(82361).EventEmitter); + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/*</replacement>*/ + +/*<replacement>*/ + + +var Stream = __nccwpck_require__(35016); +/*</replacement>*/ + + +var Buffer = (__nccwpck_require__(14300).Buffer); + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/*<replacement>*/ + + +var debugUtil = __nccwpck_require__(73837); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/*</replacement>*/ + + +var BufferList = __nccwpck_require__(63900); + +var destroyImpl = __nccwpck_require__(3090); + +var _require = __nccwpck_require__(5785), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +__nccwpck_require__(76919)(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || __nccwpck_require__(88393); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = (__nccwpck_require__(60642)/* .StringDecoder */ .s); + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __nccwpck_require__(88393); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = (__nccwpck_require__(60642)/* .StringDecoder */ .s); + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = __nccwpck_require__(42250); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = __nccwpck_require__(57453); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} + +/***/ }), + +/***/ 65469: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + +module.exports = Transform; + +var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = __nccwpck_require__(88393); + +__nccwpck_require__(76919)(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} + +/***/ }), + +/***/ 36100: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + +module.exports = Writable; +/* <replacement> */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* </replacement> */ + +/*<replacement>*/ + + +var Duplex; +/*</replacement>*/ + +Writable.WritableState = WritableState; +/*<replacement>*/ + +var internalUtil = { + deprecate: __nccwpck_require__(49209) +}; +/*</replacement>*/ + +/*<replacement>*/ + +var Stream = __nccwpck_require__(35016); +/*</replacement>*/ + + +var Buffer = (__nccwpck_require__(14300).Buffer); + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = __nccwpck_require__(3090); + +var _require = __nccwpck_require__(5785), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +__nccwpck_require__(76919)(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || __nccwpck_require__(88393); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __nccwpck_require__(88393); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; + +/***/ }), + +/***/ 42250: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = __nccwpck_require__(4360); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; + +/***/ }), + +/***/ 63900: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = __nccwpck_require__(14300), + Buffer = _require.Buffer; + +var _require2 = __nccwpck_require__(73837), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); + +/***/ }), + +/***/ 3090: +/***/ ((module) => { + +"use strict"; + // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; + +/***/ }), + +/***/ 4360: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). + + +var ERR_STREAM_PREMATURE_CLOSE = (__nccwpck_require__(13130)/* .codes.ERR_STREAM_PREMATURE_CLOSE */ .q.ERR_STREAM_PREMATURE_CLOSE); + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; + +/***/ }), + +/***/ 57453: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var ERR_INVALID_ARG_TYPE = (__nccwpck_require__(13130)/* .codes.ERR_INVALID_ARG_TYPE */ .q.ERR_INVALID_ARG_TYPE); + +function from(Readable, iterable, opts) { + var iterator; + + if (iterable && typeof iterable.next === 'function') { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); + + var readable = new Readable(_objectSpread({ + objectMode: true + }, opts)); // Reading boolean to protect against _read + // being called before last iteration completion. + + var reading = false; + + readable._read = function () { + if (!reading) { + reading = true; + next(); + } + }; + + function next() { + return _next2.apply(this, arguments); + } + + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _ref = yield iterator.next(), + value = _ref.value, + done = _ref.done; + + if (done) { + readable.push(null); + } else if (readable.push((yield value))) { + next(); + } else { + reading = false; + } + } catch (err) { + readable.destroy(err); + } + }); + return _next2.apply(this, arguments); + } + + return readable; +} + +module.exports = from; + +/***/ }), + +/***/ 61391: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). + + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = __nccwpck_require__(4360); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; + +/***/ }), + +/***/ 5785: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var ERR_INVALID_OPT_VALUE = (__nccwpck_require__(13130)/* .codes.ERR_INVALID_OPT_VALUE */ .q.ERR_INVALID_OPT_VALUE); + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; + +/***/ }), + +/***/ 35016: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(12781); + + +/***/ }), + +/***/ 30675: +/***/ ((module, exports, __nccwpck_require__) => { + +var Stream = __nccwpck_require__(12781); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream.Readable; + Object.assign(module.exports, Stream); + module.exports.Stream = Stream; +} else { + exports = module.exports = __nccwpck_require__(80284); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = __nccwpck_require__(36100); + exports.Duplex = __nccwpck_require__(88393); + exports.Transform = __nccwpck_require__(65469); + exports.PassThrough = __nccwpck_require__(55125); + exports.finished = __nccwpck_require__(4360); + exports.pipeline = __nccwpck_require__(61391); +} + + +/***/ }), + +/***/ 90612: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// Source copied and then modified from +// https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/tokenize/html-block.js +// +// MIT License https://github.com/remarkjs/remark/blob/master/license + +const {openCloseTag} = __nccwpck_require__(8882) + +module.exports = blockHtml + +const tab = '\t' +const space = ' ' +const lineFeed = '\n' +const lessThan = '<' + +const rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i +const rawCloseExpression = /<\/(script|pre|style)>/i +const commentOpenExpression = /^<!--/ +const commentCloseExpression = /-->/ +const instructionOpenExpression = /^<\?/ +const instructionCloseExpression = /\?>/ +const directiveOpenExpression = /^<![A-Za-z]/ +const directiveCloseExpression = />/ +const cdataOpenExpression = /^<!\[CDATA\[/ +const cdataCloseExpression = /\]\]>/ +const elementCloseExpression = /^$/ +const otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$') +const fragmentOpenExpression = /^<>/ + +function blockHtml(eat, value, silent) { + const blocks = '[a-z\\.]*(\\.){0,1}[a-z][a-z0-9\\.]*' + const elementOpenExpression = new RegExp( + '^</?(' + blocks + ')(?=(\\s|/?>|$))', + 'i' + ) + + const length = value.length + let index = 0 + let next + let line + let offset + let character + let count + let sequence + let subvalue + + const sequences = [ + [rawOpenExpression, rawCloseExpression, true], + [commentOpenExpression, commentCloseExpression, true], + [instructionOpenExpression, instructionCloseExpression, true], + [directiveOpenExpression, directiveCloseExpression, true], + [cdataOpenExpression, cdataCloseExpression, true], + [elementOpenExpression, elementCloseExpression, true], + [fragmentOpenExpression, elementCloseExpression, true], + [otherElementOpenExpression, elementCloseExpression, false] + ] + + // Eat initial spacing. + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + index++ + } + + if (value.charAt(index) !== lessThan) { + return + } + + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index, next) + offset = -1 + count = sequences.length + + while (++offset < count) { + if (sequences[offset][0].test(line)) { + sequence = sequences[offset] + break + } + } + + if (!sequence) { + return + } + + if (silent) { + return sequence[2] + } + + index = next + + if (!sequence[1].test(line)) { + while (index < length) { + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index + 1, next) + + if (sequence[1].test(line)) { + if (line) { + index = next + } + + break + } + + index = next + } + } + + subvalue = value.slice(0, index) + + return eat(subvalue)({type: 'html', value: subvalue}) +} + + +/***/ }), + +/***/ 8825: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const {transformSync} = __nccwpck_require__(92092) +const declare = (__nccwpck_require__(29055).declare) + +const syntaxJsxPlugin = __nccwpck_require__(28926) +const proposalObjectRestSpreadPlugin = __nccwpck_require__(56309) + +class BabelPluginExtractImportsAndExports { + constructor() { + const nodes = [] + this.state = {nodes} + + this.plugin = declare(api => { + api.assertVersion(7) + + return { + visitor: { + ExportDefaultDeclaration(path) { + const {start} = path.node + nodes.push({type: 'export', start, default: true}) + }, + ExportNamedDeclaration(path) { + const {start} = path.node + nodes.push({type: 'export', start}) + }, + ExportAllDeclaration(path) { + const {start} = path.node + nodes.push({type: 'export', start}) + }, + ImportDeclaration(path) { + const {start} = path.node + + // Imports that are used in exports can end up as + // ImportDeclarations with no start/end metadata, + // these can be ignored + if (start === undefined) { + return + } + + nodes.push({type: 'import', start}) + } + } + } + }) + } +} + +const partitionString = (str, indices) => + indices.map((val, i) => { + return str.slice(val, indices[i + 1]) + }) + +module.exports = (value, vfile) => { + const instance = new BabelPluginExtractImportsAndExports() + + transformSync(value, { + plugins: [syntaxJsxPlugin, proposalObjectRestSpreadPlugin, instance.plugin], + filename: vfile.path, + configFile: false, + babelrc: false + }) + + const sortedNodes = instance.state.nodes.sort((a, b) => a.start - b.start) + const nodeStarts = sortedNodes.map(n => n.start) + const values = partitionString(value, nodeStarts) + + const allNodes = sortedNodes.map(({start: _, ...node}, i) => { + const value = values[i] + return {...node, value} + }) + + // Group adjacent nodes of the same type so that they can be combined + // into a single node later, this also ensures that order is preserved + let currType = allNodes[0].type + const groupedNodes = allNodes.reduce( + (acc, curr) => { + // Default export nodes shouldn't be grouped with other exports + // because they're handled specially by MDX + if (curr.default) { + currType = 'default' + return [...acc, [curr]] + } + + if (curr.type === currType) { + const lastNodes = acc.pop() + return [...acc, [...lastNodes, curr]] + } + + currType = curr.type + return [...acc, [curr]] + }, + [[]] + ) + + // Combine adjacent nodes into a single node + return groupedNodes + .filter(a => a.length) + .reduce((acc, curr) => { + const node = curr.reduce((acc, curr) => ({ + ...acc, + value: acc.value + curr.value + })) + + return [...acc, node] + }, []) +} + + +/***/ }), + +/***/ 43650: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const isAlphabetical = __nccwpck_require__(84989) +const {isImportOrExport, EMPTY_NEWLINE} = __nccwpck_require__(58826) +const extractImportsAndExports = __nccwpck_require__(8825) +const block = __nccwpck_require__(90612) +const {tag} = __nccwpck_require__(8882) + +const LESS_THAN = '<' +const GREATER_THAN = '>' +const SLASH = '/' +const EXCLAMATION = '!' + +module.exports = mdx + +mdx.default = mdx + +tokenizeEsSyntax.locator = tokenizeEsSyntaxLocator + +function mdx(_options) { + const parser = this.Parser + const compiler = this.Compiler + + if (parser && parser.prototype && parser.prototype.blockTokenizers) { + attachParser(parser) + } + + if (compiler && compiler.prototype && compiler.prototype.visitors) { + attachCompiler(compiler) + } +} + +function attachParser(parser) { + const blocks = parser.prototype.blockTokenizers + const inlines = parser.prototype.inlineTokenizers + const methods = parser.prototype.blockMethods + + blocks.esSyntax = tokenizeEsSyntax + blocks.html = wrap(block) + inlines.html = wrap(inlines.html, inlineJsx) + + tokenizeEsSyntax.notInBlock = true + + methods.splice(methods.indexOf('paragraph'), 0, 'esSyntax') + + function wrap(original, customTokenizer) { + const tokenizer = customTokenizer || tokenizeJsx + tokenizer.locator = original.locator + + return tokenizer + + function tokenizeJsx() { + const node = original.apply(this, arguments) + + if (node) { + node.type = 'jsx' + } + + return node + } + } + + function inlineJsx(eat, value) { + if (value.charAt(0) !== LESS_THAN) { + return + } + + const nextChar = value.charAt(1) + if ( + nextChar !== GREATER_THAN && + nextChar !== SLASH && + nextChar !== EXCLAMATION && + !isAlphabetical(nextChar) + ) { + return + } + + const subvalueMatches = value.match(tag) + if (!subvalueMatches) { + return + } + + const subvalue = subvalueMatches[0] + return eat(subvalue)({type: 'jsx', value: subvalue}) + } +} + +function attachCompiler(compiler) { + const proto = compiler.prototype + + proto.visitors = Object.assign({}, proto.visitors, { + import: stringifyEsSyntax, + export: stringifyEsSyntax, + jsx: stringifyEsSyntax + }) +} + +function stringifyEsSyntax(node) { + return node.value.trim() +} + +function tokenizeEsSyntax(eat, value) { + const index = value.indexOf(EMPTY_NEWLINE) + const subvalue = index !== -1 ? value.slice(0, index) : value + + if (isImportOrExport(subvalue)) { + const nodes = extractImportsAndExports(subvalue, this.file) + nodes.map(node => eat(node.value)(node)) + } +} + +function tokenizeEsSyntaxLocator(value, _fromIndex) { + return isImportOrExport(value) ? -1 : 1 +} + + +/***/ }), + +/***/ 8882: +/***/ ((__unused_webpack_module, exports) => { + +// Source copied and then modified from +// https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/util/html.js +// +// MIT License https://github.com/remarkjs/remark/blob/master/license + +// https://github.com/DmitrySoshnikov/babel-plugin-transform-modern-regexp#dotall-s-flag +// Firefox and other browsers don't support the dotAll ("s") flag, but it can be polyfilled via this: +const dotAllPolyfill = '[\0-\uFFFF]' + +const attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' +const unquoted = '[^"\'=<>`\\u0000-\\u0020]+' +const singleQuoted = "'[^']*'" +const doubleQuoted = '"[^"]*"' +const jsProps = '{.*}'.replace('.', dotAllPolyfill) +const attributeValue = + '(?:' + + unquoted + + '|' + + singleQuoted + + '|' + + doubleQuoted + + '|' + + jsProps + + ')' +const attribute = + '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' +const openTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*\\/?>' +const closeTag = '<\\/[A-Za-z][A-Za-z0-9\\.\\-]*\\s*>' +const comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->' +const processing = '<[?].*?[?]>'.replace('.', dotAllPolyfill) +const declaration = '<![A-Za-z]+\\s+[^>]*>' +const cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' + +exports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')') + +exports.tag = new RegExp( + '^(?:' + + openTag + + '|' + + closeTag + + '|' + + comment + + '|' + + processing + + '|' + + declaration + + '|' + + cdata + + ')' +) + + +/***/ }), + +/***/ 35212: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var unherit = __nccwpck_require__(68475) +var xtend = __nccwpck_require__(76738) +var Parser = __nccwpck_require__(14714) + +module.exports = parse +parse.Parser = Parser + +function parse(options) { + var settings = this.data('settings') + var Local = unherit(Parser) + + Local.prototype.options = xtend(Local.prototype.options, settings, options) + + this.Parser = Local +} + + +/***/ }), + +/***/ 14841: +/***/ ((module) => { + +"use strict"; + + +module.exports = [ + 'address', + 'article', + 'aside', + 'base', + 'basefont', + 'blockquote', + 'body', + 'caption', + 'center', + 'col', + 'colgroup', + 'dd', + 'details', + 'dialog', + 'dir', + 'div', + 'dl', + 'dt', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'frame', + 'frameset', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hgroup', + 'hr', + 'html', + 'iframe', + 'legend', + 'li', + 'link', + 'main', + 'menu', + 'menuitem', + 'meta', + 'nav', + 'noframes', + 'ol', + 'optgroup', + 'option', + 'p', + 'param', + 'pre', + 'section', + 'source', + 'title', + 'summary', + 'table', + 'tbody', + 'td', + 'tfoot', + 'th', + 'thead', + 'title', + 'tr', + 'track', + 'ul' +] + + +/***/ }), + +/***/ 71777: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var entities = __nccwpck_require__(81085) + +module.exports = factory + +// Factory to create an entity decoder. +function factory(ctx) { + decoder.raw = decodeRaw + + return decoder + + // Normalize `position` to add an `indent`. + function normalize(position) { + var offsets = ctx.offset + var line = position.line + var result = [] + + while (++line) { + if (!(line in offsets)) { + break + } + + result.push((offsets[line] || 0) + 1) + } + + return {start: position, indent: result} + } + + // Decode `value` (at `position`) into text-nodes. + function decoder(value, position, handler) { + entities(value, { + position: normalize(position), + warning: handleWarning, + text: handler, + reference: handler, + textContext: ctx, + referenceContext: ctx + }) + } + + // Decode `value` (at `position`) into a string. + function decodeRaw(value, position, options) { + return entities( + value, + xtend(options, {position: normalize(position), warning: handleWarning}) + ) + } + + // Handle a warning. + // See <https://github.com/wooorm/parse-entities> for the warnings. + function handleWarning(reason, position, code) { + if (code !== 3) { + ctx.file.message(reason, position) + } + } +} + + +/***/ }), + +/***/ 5984: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = { + position: true, + gfm: true, + commonmark: false, + pedantic: false, + blocks: __nccwpck_require__(14841) +} + + +/***/ }), + +/***/ 83962: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + var index = value.indexOf('\n', fromIndex) + + while (index > fromIndex) { + if (value.charAt(index - 1) !== ' ') { + break + } + + index-- + } + + return index +} + + +/***/ }), + +/***/ 88121: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + return value.indexOf('`', fromIndex) +} + + +/***/ }), + +/***/ 90639: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + return value.indexOf('~~', fromIndex) +} + + +/***/ }), + +/***/ 16365: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var decimal = __nccwpck_require__(76995) +var alphabetical = __nccwpck_require__(84989) + +var plusSign = 43 // '+' +var dash = 45 // '-' +var dot = 46 // '.' +var underscore = 95 // '_' + +module.exports = locate + +// See: <https://github.github.com/gfm/#extended-email-autolink> +function locate(value, fromIndex) { + var self = this + var at + var position + + if (!this.options.gfm) { + return -1 + } + + at = value.indexOf('@', fromIndex) + + if (at === -1) { + return -1 + } + + position = at + + if (position === fromIndex || !isGfmAtext(value.charCodeAt(position - 1))) { + return locate.call(self, value, at + 1) + } + + while (position > fromIndex && isGfmAtext(value.charCodeAt(position - 1))) { + position-- + } + + return position +} + +function isGfmAtext(code) { + return ( + decimal(code) || + alphabetical(code) || + code === plusSign || + code === dash || + code === dot || + code === underscore + ) +} + + +/***/ }), + +/***/ 77896: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + var asterisk = value.indexOf('*', fromIndex) + var underscore = value.indexOf('_', fromIndex) + + if (underscore === -1) { + return asterisk + } + + if (asterisk === -1) { + return underscore + } + + return underscore < asterisk ? underscore : asterisk +} + + +/***/ }), + +/***/ 21210: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + return value.indexOf('\\', fromIndex) +} + + +/***/ }), + +/***/ 49687: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + var link = value.indexOf('[', fromIndex) + var image = value.indexOf('![', fromIndex) + + if (image === -1) { + return link + } + + // Link can never be `-1` if an image is found, so we don’t need to check + // for that :) + return link < image ? link : image +} + + +/***/ }), + +/***/ 49128: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + var asterisk = value.indexOf('**', fromIndex) + var underscore = value.indexOf('__', fromIndex) + + if (underscore === -1) { + return asterisk + } + + if (asterisk === -1) { + return underscore + } + + return underscore < asterisk ? underscore : asterisk +} + + +/***/ }), + +/***/ 70471: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + return value.indexOf('<', fromIndex) +} + + +/***/ }), + +/***/ 93917: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +var values = ['www.', 'http://', 'https://'] + +function locate(value, fromIndex) { + var min = -1 + var index + var length + var position + + if (!this.options.gfm) { + return min + } + + length = values.length + index = -1 + + while (++index < length) { + position = value.indexOf(values[index], fromIndex) + + if (position !== -1 && (min === -1 || position < min)) { + min = position + } + } + + return min +} + + +/***/ }), + +/***/ 11027: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var removePosition = __nccwpck_require__(60299) + +module.exports = parse + +var lineFeed = '\n' +var lineBreaksExpression = /\r\n|\r/g + +// Parse the bound file. +function parse() { + var self = this + var value = String(self.file) + var start = {line: 1, column: 1, offset: 0} + var content = xtend(start) + var node + + // Clean non-unix newlines: `\r\n` and `\r` are all changed to `\n`. + // This should not affect positional information. + value = value.replace(lineBreaksExpression, lineFeed) + + // BOM. + if (value.charCodeAt(0) === 0xfeff) { + value = value.slice(1) + + content.column++ + content.offset++ + } + + node = { + type: 'root', + children: self.tokenizeBlock(value, content), + position: {start: start, end: self.eof || xtend(start)} + } + + if (!self.options.position) { + removePosition(node, true) + } + + return node +} + + +/***/ }), + +/***/ 14714: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var toggle = __nccwpck_require__(78447) +var vfileLocation = __nccwpck_require__(2832) +var unescape = __nccwpck_require__(73235) +var decode = __nccwpck_require__(71777) +var tokenizer = __nccwpck_require__(87327) + +module.exports = Parser + +function Parser(doc, file) { + this.file = file + this.offset = {} + this.options = xtend(this.options) + this.setOptions({}) + + this.inList = false + this.inBlock = false + this.inLink = false + this.atStart = true + + this.toOffset = vfileLocation(file).toOffset + this.unescape = unescape(this, 'escape') + this.decode = decode(this) +} + +var proto = Parser.prototype + +// Expose core. +proto.setOptions = __nccwpck_require__(14356) +proto.parse = __nccwpck_require__(11027) + +// Expose `defaults`. +proto.options = __nccwpck_require__(5984) + +// Enter and exit helpers. +proto.exitStart = toggle('atStart', true) +proto.enterList = toggle('inList', false) +proto.enterLink = toggle('inLink', false) +proto.enterBlock = toggle('inBlock', false) + +// Nodes that can interupt a paragraph: +// +// ```markdown +// A paragraph, followed by a thematic break. +// ___ +// ``` +// +// In the above example, the thematic break “interupts” the paragraph. +proto.interruptParagraph = [ + ['thematicBreak'], + ['list'], + ['atxHeading'], + ['fencedCode'], + ['blockquote'], + ['html'], + ['setextHeading', {commonmark: false}], + ['definition', {commonmark: false}] +] + +// Nodes that can interupt a list: +// +// ```markdown +// - One +// ___ +// ``` +// +// In the above example, the thematic break “interupts” the list. +proto.interruptList = [ + ['atxHeading', {pedantic: false}], + ['fencedCode', {pedantic: false}], + ['thematicBreak', {pedantic: false}], + ['definition', {commonmark: false}] +] + +// Nodes that can interupt a blockquote: +// +// ```markdown +// > A paragraph. +// ___ +// ``` +// +// In the above example, the thematic break “interupts” the blockquote. +proto.interruptBlockquote = [ + ['indentedCode', {commonmark: true}], + ['fencedCode', {commonmark: true}], + ['atxHeading', {commonmark: true}], + ['setextHeading', {commonmark: true}], + ['thematicBreak', {commonmark: true}], + ['html', {commonmark: true}], + ['list', {commonmark: true}], + ['definition', {commonmark: false}] +] + +// Handlers. +proto.blockTokenizers = { + blankLine: __nccwpck_require__(6627), + indentedCode: __nccwpck_require__(21575), + fencedCode: __nccwpck_require__(9789), + blockquote: __nccwpck_require__(74021), + atxHeading: __nccwpck_require__(39769), + thematicBreak: __nccwpck_require__(76964), + list: __nccwpck_require__(39165), + setextHeading: __nccwpck_require__(46373), + html: __nccwpck_require__(94728), + definition: __nccwpck_require__(9975), + table: __nccwpck_require__(24444), + paragraph: __nccwpck_require__(22073) +} + +proto.inlineTokenizers = { + escape: __nccwpck_require__(96312), + autoLink: __nccwpck_require__(80254), + url: __nccwpck_require__(6305), + email: __nccwpck_require__(18337), + html: __nccwpck_require__(42764), + link: __nccwpck_require__(70086), + reference: __nccwpck_require__(4648), + strong: __nccwpck_require__(82250), + emphasis: __nccwpck_require__(8653), + deletion: __nccwpck_require__(24332), + code: __nccwpck_require__(72826), + break: __nccwpck_require__(41816), + text: __nccwpck_require__(16931) +} + +// Expose precedence. +proto.blockMethods = keys(proto.blockTokenizers) +proto.inlineMethods = keys(proto.inlineTokenizers) + +// Tokenizers. +proto.tokenizeBlock = tokenizer('block') +proto.tokenizeInline = tokenizer('inline') +proto.tokenizeFactory = tokenizer + +// Get all keys in `value`. +function keys(value) { + var result = [] + var key + + for (key in value) { + result.push(key) + } + + return result +} + + +/***/ }), + +/***/ 14356: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var escapes = __nccwpck_require__(31152) +var defaults = __nccwpck_require__(5984) + +module.exports = setOptions + +function setOptions(options) { + var self = this + var current = self.options + var key + var value + + if (options == null) { + options = {} + } else if (typeof options === 'object') { + options = xtend(options) + } else { + throw new Error('Invalid value `' + options + '` for setting `options`') + } + + for (key in defaults) { + value = options[key] + + if (value == null) { + value = current[key] + } + + if ( + (key !== 'blocks' && typeof value !== 'boolean') || + (key === 'blocks' && typeof value !== 'object') + ) { + throw new Error( + 'Invalid value `' + value + '` for setting `options.' + key + '`' + ) + } + + options[key] = value + } + + self.options = options + self.escape = escapes(options) + + return self +} + + +/***/ }), + +/***/ 80254: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(35708) +var decode = __nccwpck_require__(81085) +var locate = __nccwpck_require__(70471) + +module.exports = autoLink +autoLink.locator = locate +autoLink.notInLink = true + +var lessThan = '<' +var greaterThan = '>' +var atSign = '@' +var slash = '/' +var mailto = 'mailto:' +var mailtoLength = mailto.length + +function autoLink(eat, value, silent) { + var self = this + var subvalue = '' + var length = value.length + var index = 0 + var queue = '' + var hasAtCharacter = false + var link = '' + var character + var now + var content + var tokenizers + var exit + + if (value.charAt(0) !== lessThan) { + return + } + + index++ + subvalue = lessThan + + while (index < length) { + character = value.charAt(index) + + if ( + whitespace(character) || + character === greaterThan || + character === atSign || + (character === ':' && value.charAt(index + 1) === slash) + ) { + break + } + + queue += character + index++ + } + + if (!queue) { + return + } + + link += queue + queue = '' + + character = value.charAt(index) + link += character + index++ + + if (character === atSign) { + hasAtCharacter = true + } else { + if (character !== ':' || value.charAt(index + 1) !== slash) { + return + } + + link += slash + index++ + } + + while (index < length) { + character = value.charAt(index) + + if (whitespace(character) || character === greaterThan) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + + if (!queue || character !== greaterThan) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + link += queue + content = link + subvalue += link + character + now = eat.now() + now.column++ + now.offset++ + + if (hasAtCharacter) { + if (link.slice(0, mailtoLength).toLowerCase() === mailto) { + content = content.slice(mailtoLength) + now.column += mailtoLength + now.offset += mailtoLength + } else { + link = mailto + link + } + } + + // Temporarily remove all tokenizers except text in autolinks. + tokenizers = self.inlineTokenizers + self.inlineTokenizers = {text: tokenizers.text} + + exit = self.enterLink() + + content = self.tokenizeInline(content, now) + + self.inlineTokenizers = tokenizers + exit() + + return eat(subvalue)({ + type: 'link', + title: null, + url: decode(link, {nonTerminated: false}), + children: content + }) +} + + +/***/ }), + +/***/ 6627: +/***/ ((module) => { + +"use strict"; + + +// A line containing no characters, or a line containing only spaces (U+0020) or +// tabs (U+0009), is called a blank line. +// See <https://spec.commonmark.org/0.29/#blank-line>. +var reBlankLine = /^[ \t]*(\n|$)/ + +// Note that though blank lines play a special role in lists to determine +// whether the list is tight or loose +// (<https://spec.commonmark.org/0.29/#blank-lines>), it’s done by the list +// tokenizer and this blank line tokenizer does not have to be responsible for +// that. +// Therefore, configs such as `blankLine.notInList` do not have to be set here. +module.exports = blankLine + +function blankLine(eat, value, silent) { + var match + var subvalue = '' + var index = 0 + var length = value.length + + while (index < length) { + match = reBlankLine.exec(value.slice(index)) + + if (match == null) { + break + } + + index += match[0].length + subvalue += match[0] + } + + if (subvalue === '') { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + eat(subvalue) +} + + +/***/ }), + +/***/ 74021: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var trim = __nccwpck_require__(82315) +var interrupt = __nccwpck_require__(915) + +module.exports = blockquote + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var greaterThan = '>' + +function blockquote(eat, value, silent) { + var self = this + var offsets = self.offset + var tokenizers = self.blockTokenizers + var interruptors = self.interruptBlockquote + var now = eat.now() + var currentLine = now.line + var length = value.length + var values = [] + var contents = [] + var indents = [] + var add + var index = 0 + var character + var rest + var nextIndex + var content + var line + var startIndex + var prefixed + var exit + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + index++ + } + + if (value.charAt(index) !== greaterThan) { + return + } + + if (silent) { + return true + } + + index = 0 + + while (index < length) { + nextIndex = value.indexOf(lineFeed, index) + startIndex = index + prefixed = false + + if (nextIndex === -1) { + nextIndex = length + } + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + index++ + } + + if (value.charAt(index) === greaterThan) { + index++ + prefixed = true + + if (value.charAt(index) === space) { + index++ + } + } else { + index = startIndex + } + + content = value.slice(index, nextIndex) + + if (!prefixed && !trim(content)) { + index = startIndex + break + } + + if (!prefixed) { + rest = value.slice(index) + + // Check if the following code contains a possible block. + if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) { + break + } + } + + line = startIndex === index ? content : value.slice(startIndex, nextIndex) + + indents.push(index - startIndex) + values.push(line) + contents.push(content) + + index = nextIndex + 1 + } + + index = -1 + length = indents.length + add = eat(values.join(lineFeed)) + + while (++index < length) { + offsets[currentLine] = (offsets[currentLine] || 0) + indents[index] + currentLine++ + } + + exit = self.enterBlock() + contents = self.tokenizeBlock(contents.join(lineFeed), now) + exit() + + return add({type: 'blockquote', children: contents}) +} + + +/***/ }), + +/***/ 41816: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var locate = __nccwpck_require__(83962) + +module.exports = hardBreak +hardBreak.locator = locate + +var space = ' ' +var lineFeed = '\n' +var minBreakLength = 2 + +function hardBreak(eat, value, silent) { + var length = value.length + var index = -1 + var queue = '' + var character + + while (++index < length) { + character = value.charAt(index) + + if (character === lineFeed) { + if (index < minBreakLength) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + queue += character + + return eat(queue)({type: 'break'}) + } + + if (character !== space) { + return + } + + queue += character + } +} + + +/***/ }), + +/***/ 9789: +/***/ ((module) => { + +"use strict"; + + +module.exports = fencedCode + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var tilde = '~' +var graveAccent = '`' + +var minFenceCount = 3 +var tabSize = 4 + +function fencedCode(eat, value, silent) { + var self = this + var gfm = self.options.gfm + var length = value.length + 1 + var index = 0 + var subvalue = '' + var fenceCount + var marker + var character + var flag + var lang + var meta + var queue + var content + var exdentedContent + var closing + var exdentedClosing + var indent + var now + + if (!gfm) { + return + } + + // Eat initial spacing. + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + subvalue += character + index++ + } + + indent = index + + // Eat the fence. + character = value.charAt(index) + + if (character !== tilde && character !== graveAccent) { + return + } + + index++ + marker = character + fenceCount = 1 + subvalue += character + + while (index < length) { + character = value.charAt(index) + + if (character !== marker) { + break + } + + subvalue += character + fenceCount++ + index++ + } + + if (fenceCount < minFenceCount) { + return + } + + // Eat spacing before flag. + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + subvalue += character + index++ + } + + // Eat flag. + flag = '' + queue = '' + + while (index < length) { + character = value.charAt(index) + + if ( + character === lineFeed || + (marker === graveAccent && character === marker) + ) { + break + } + + if (character === space || character === tab) { + queue += character + } else { + flag += queue + character + queue = '' + } + + index++ + } + + character = value.charAt(index) + + if (character && character !== lineFeed) { + return + } + + if (silent) { + return true + } + + now = eat.now() + now.column += subvalue.length + now.offset += subvalue.length + + subvalue += flag + flag = self.decode.raw(self.unescape(flag), now) + + if (queue) { + subvalue += queue + } + + queue = '' + closing = '' + exdentedClosing = '' + content = '' + exdentedContent = '' + var skip = true + + // Eat content. + while (index < length) { + character = value.charAt(index) + content += closing + exdentedContent += exdentedClosing + closing = '' + exdentedClosing = '' + + if (character !== lineFeed) { + content += character + exdentedClosing += character + index++ + continue + } + + // The first line feed is ignored. Others aren’t. + if (skip) { + subvalue += character + skip = false + } else { + closing += character + exdentedClosing += character + } + + queue = '' + index++ + + while (index < length) { + character = value.charAt(index) + + if (character !== space) { + break + } + + queue += character + index++ + } + + closing += queue + exdentedClosing += queue.slice(indent) + + if (queue.length >= tabSize) { + continue + } + + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character !== marker) { + break + } + + queue += character + index++ + } + + closing += queue + exdentedClosing += queue + + if (queue.length < fenceCount) { + continue + } + + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + closing += character + exdentedClosing += character + index++ + } + + if (!character || character === lineFeed) { + break + } + } + + subvalue += content + closing + + // Get lang and meta from the flag. + index = -1 + length = flag.length + + while (++index < length) { + character = flag.charAt(index) + + if (character === space || character === tab) { + if (!lang) { + lang = flag.slice(0, index) + } + } else if (lang) { + meta = flag.slice(index) + break + } + } + + return eat(subvalue)({ + type: 'code', + lang: lang || flag || null, + meta: meta || null, + value: exdentedContent + }) +} + + +/***/ }), + +/***/ 21575: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) +var trim = __nccwpck_require__(54411) + +module.exports = indentedCode + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' + +var tabSize = 4 +var codeIndent = repeat(space, tabSize) + +function indentedCode(eat, value, silent) { + var index = -1 + var length = value.length + var subvalue = '' + var content = '' + var subvalueQueue = '' + var contentQueue = '' + var character + var blankQueue + var indent + + while (++index < length) { + character = value.charAt(index) + + if (indent) { + indent = false + + subvalue += subvalueQueue + content += contentQueue + subvalueQueue = '' + contentQueue = '' + + if (character === lineFeed) { + subvalueQueue = character + contentQueue = character + } else { + subvalue += character + content += character + + while (++index < length) { + character = value.charAt(index) + + if (!character || character === lineFeed) { + contentQueue = character + subvalueQueue = character + break + } + + subvalue += character + content += character + } + } + } else if ( + character === space && + value.charAt(index + 1) === character && + value.charAt(index + 2) === character && + value.charAt(index + 3) === character + ) { + subvalueQueue += codeIndent + index += 3 + indent = true + } else if (character === tab) { + subvalueQueue += character + indent = true + } else { + blankQueue = '' + + while (character === tab || character === space) { + blankQueue += character + character = value.charAt(++index) + } + + if (character !== lineFeed) { + break + } + + subvalueQueue += blankQueue + character + contentQueue += character + } + } + + if (content) { + if (silent) { + return true + } + + return eat(subvalue)({ + type: 'code', + lang: null, + meta: null, + value: trim(content) + }) + } +} + + +/***/ }), + +/***/ 72826: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var locate = __nccwpck_require__(88121) + +module.exports = inlineCode +inlineCode.locator = locate + +var lineFeed = 10 // '\n' +var space = 32 // ' ' +var graveAccent = 96 // '`' + +function inlineCode(eat, value, silent) { + var length = value.length + var index = 0 + var openingFenceEnd + var closingFenceStart + var closingFenceEnd + var code + var next + var found + + while (index < length) { + if (value.charCodeAt(index) !== graveAccent) { + break + } + + index++ + } + + if (index === 0 || index === length) { + return + } + + openingFenceEnd = index + next = value.charCodeAt(index) + + while (index < length) { + code = next + next = value.charCodeAt(index + 1) + + if (code === graveAccent) { + if (closingFenceStart === undefined) { + closingFenceStart = index + } + + closingFenceEnd = index + 1 + + if ( + next !== graveAccent && + closingFenceEnd - closingFenceStart === openingFenceEnd + ) { + found = true + break + } + } else if (closingFenceStart !== undefined) { + closingFenceStart = undefined + closingFenceEnd = undefined + } + + index++ + } + + if (!found) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + // Remove the initial and final space (or line feed), iff they exist and there + // are non-space characters in the content. + index = openingFenceEnd + length = closingFenceStart + code = value.charCodeAt(index) + next = value.charCodeAt(length - 1) + found = false + + if ( + length - index > 2 && + (code === space || code === lineFeed) && + (next === space || next === lineFeed) + ) { + index++ + length-- + + while (index < length) { + code = value.charCodeAt(index) + + if (code !== space && code !== lineFeed) { + found = true + break + } + + index++ + } + + if (found === true) { + openingFenceEnd++ + closingFenceStart-- + } + } + + return eat(value.slice(0, closingFenceEnd))({ + type: 'inlineCode', + value: value.slice(openingFenceEnd, closingFenceStart) + }) +} + + +/***/ }), + +/***/ 9975: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(35708) +var normalize = __nccwpck_require__(98851) + +module.exports = definition + +var quotationMark = '"' +var apostrophe = "'" +var backslash = '\\' +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var leftParenthesis = '(' +var rightParenthesis = ')' +var colon = ':' +var lessThan = '<' +var greaterThan = '>' + +function definition(eat, value, silent) { + var self = this + var commonmark = self.options.commonmark + var index = 0 + var length = value.length + var subvalue = '' + var beforeURL + var beforeTitle + var queue + var character + var test + var identifier + var url + var title + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + subvalue += character + index++ + } + + character = value.charAt(index) + + if (character !== leftSquareBracket) { + return + } + + index++ + subvalue += character + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character === rightSquareBracket) { + break + } else if (character === backslash) { + queue += character + index++ + character = value.charAt(index) + } + + queue += character + index++ + } + + if ( + !queue || + value.charAt(index) !== rightSquareBracket || + value.charAt(index + 1) !== colon + ) { + return + } + + identifier = queue + subvalue += queue + rightSquareBracket + colon + index = subvalue.length + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space && character !== lineFeed) { + break + } + + subvalue += character + index++ + } + + character = value.charAt(index) + queue = '' + beforeURL = subvalue + + if (character === lessThan) { + index++ + + while (index < length) { + character = value.charAt(index) + + if (!isEnclosedURLCharacter(character)) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + + if (character === isEnclosedURLCharacter.delimiter) { + subvalue += lessThan + queue + character + index++ + } else { + if (commonmark) { + return + } + + index -= queue.length + 1 + queue = '' + } + } + + if (!queue) { + while (index < length) { + character = value.charAt(index) + + if (!isUnclosedURLCharacter(character)) { + break + } + + queue += character + index++ + } + + subvalue += queue + } + + if (!queue) { + return + } + + url = queue + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space && character !== lineFeed) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + test = null + + if (character === quotationMark) { + test = quotationMark + } else if (character === apostrophe) { + test = apostrophe + } else if (character === leftParenthesis) { + test = rightParenthesis + } + + if (!test) { + queue = '' + index = subvalue.length + } else if (queue) { + subvalue += queue + character + index = subvalue.length + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character === test) { + break + } + + if (character === lineFeed) { + index++ + character = value.charAt(index) + + if (character === lineFeed || character === test) { + return + } + + queue += lineFeed + } + + queue += character + index++ + } + + character = value.charAt(index) + + if (character !== test) { + return + } + + beforeTitle = subvalue + subvalue += queue + character + index++ + title = queue + queue = '' + } else { + return + } + + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + subvalue += character + index++ + } + + character = value.charAt(index) + + if (!character || character === lineFeed) { + if (silent) { + return true + } + + beforeURL = eat(beforeURL).test().end + url = self.decode.raw(self.unescape(url), beforeURL, {nonTerminated: false}) + + if (title) { + beforeTitle = eat(beforeTitle).test().end + title = self.decode.raw(self.unescape(title), beforeTitle) + } + + return eat(subvalue)({ + type: 'definition', + identifier: normalize(identifier), + label: identifier, + title: title || null, + url: url + }) + } +} + +// Check if `character` can be inside an enclosed URI. +function isEnclosedURLCharacter(character) { + return ( + character !== greaterThan && + character !== leftSquareBracket && + character !== rightSquareBracket + ) +} + +isEnclosedURLCharacter.delimiter = greaterThan + +// Check if `character` can be inside an unclosed URI. +function isUnclosedURLCharacter(character) { + return ( + character !== leftSquareBracket && + character !== rightSquareBracket && + !whitespace(character) + ) +} + + +/***/ }), + +/***/ 24332: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(35708) +var locate = __nccwpck_require__(90639) + +module.exports = strikethrough +strikethrough.locator = locate + +var tilde = '~' +var fence = '~~' + +function strikethrough(eat, value, silent) { + var self = this + var character = '' + var previous = '' + var preceding = '' + var subvalue = '' + var index + var length + var now + + if ( + !self.options.gfm || + value.charAt(0) !== tilde || + value.charAt(1) !== tilde || + whitespace(value.charAt(2)) + ) { + return + } + + index = 1 + length = value.length + now = eat.now() + now.column += 2 + now.offset += 2 + + while (++index < length) { + character = value.charAt(index) + + if ( + character === tilde && + previous === tilde && + (!preceding || !whitespace(preceding)) + ) { + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + return eat(fence + subvalue + fence)({ + type: 'delete', + children: self.tokenizeInline(subvalue, now) + }) + } + + subvalue += previous + preceding = previous + previous = character + } +} + + +/***/ }), + +/***/ 18337: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var decode = __nccwpck_require__(81085) +var decimal = __nccwpck_require__(76995) +var alphabetical = __nccwpck_require__(84989) +var locate = __nccwpck_require__(16365) + +module.exports = email +email.locator = locate +email.notInLink = true + +var plusSign = 43 // '+' +var dash = 45 // '-' +var dot = 46 // '.' +var atSign = 64 // '@' +var underscore = 95 // '_' + +function email(eat, value, silent) { + var self = this + var gfm = self.options.gfm + var tokenizers = self.inlineTokenizers + var index = 0 + var length = value.length + var firstDot = -1 + var code + var content + var children + var exit + + if (!gfm) { + return + } + + code = value.charCodeAt(index) + + while ( + decimal(code) || + alphabetical(code) || + code === plusSign || + code === dash || + code === dot || + code === underscore + ) { + code = value.charCodeAt(++index) + } + + if (index === 0) { + return + } + + if (code !== atSign) { + return + } + + index++ + + while (index < length) { + code = value.charCodeAt(index) + + if ( + decimal(code) || + alphabetical(code) || + code === dash || + code === dot || + code === underscore + ) { + index++ + + if (firstDot === -1 && code === dot) { + firstDot = index + } + + continue + } + + break + } + + if ( + firstDot === -1 || + firstDot === index || + code === dash || + code === underscore + ) { + return + } + + if (code === dot) { + index-- + } + + content = value.slice(0, index) + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + exit = self.enterLink() + + // Temporarily remove all tokenizers except text in url. + self.inlineTokenizers = {text: tokenizers.text} + children = self.tokenizeInline(content, eat.now()) + self.inlineTokenizers = tokenizers + + exit() + + return eat(content)({ + type: 'link', + title: null, + url: 'mailto:' + decode(content, {nonTerminated: false}), + children: children + }) +} + + +/***/ }), + +/***/ 8653: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var trim = __nccwpck_require__(82315) +var word = __nccwpck_require__(59685) +var whitespace = __nccwpck_require__(35708) +var locate = __nccwpck_require__(77896) + +module.exports = emphasis +emphasis.locator = locate + +var asterisk = '*' +var underscore = '_' +var backslash = '\\' + +function emphasis(eat, value, silent) { + var self = this + var index = 0 + var character = value.charAt(index) + var now + var pedantic + var marker + var queue + var subvalue + var length + var previous + + if (character !== asterisk && character !== underscore) { + return + } + + pedantic = self.options.pedantic + subvalue = character + marker = character + length = value.length + index++ + queue = '' + character = '' + + if (pedantic && whitespace(value.charAt(index))) { + return + } + + while (index < length) { + previous = character + character = value.charAt(index) + + if (character === marker && (!pedantic || !whitespace(previous))) { + character = value.charAt(++index) + + if (character !== marker) { + if (!trim(queue) || previous === marker) { + return + } + + if (!pedantic && marker === underscore && word(character)) { + queue += marker + continue + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + now = eat.now() + now.column++ + now.offset++ + + return eat(subvalue + queue + marker)({ + type: 'emphasis', + children: self.tokenizeInline(queue, now) + }) + } + + queue += marker + } + + if (!pedantic && character === backslash) { + queue += character + character = value.charAt(++index) + } + + queue += character + index++ + } +} + + +/***/ }), + +/***/ 96312: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var locate = __nccwpck_require__(21210) + +module.exports = escape +escape.locator = locate + +var lineFeed = '\n' +var backslash = '\\' + +function escape(eat, value, silent) { + var self = this + var character + var node + + if (value.charAt(0) === backslash) { + character = value.charAt(1) + + if (self.escape.indexOf(character) !== -1) { + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + if (character === lineFeed) { + node = {type: 'break'} + } else { + node = {type: 'text', value: character} + } + + return eat(backslash + character)(node) + } + } +} + + +/***/ }), + +/***/ 39769: +/***/ ((module) => { + +"use strict"; + + +module.exports = atxHeading + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var numberSign = '#' + +var maxFenceCount = 6 + +function atxHeading(eat, value, silent) { + var self = this + var pedantic = self.options.pedantic + var length = value.length + 1 + var index = -1 + var now = eat.now() + var subvalue = '' + var content = '' + var character + var queue + var depth + + // Eat initial spacing. + while (++index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + index-- + break + } + + subvalue += character + } + + // Eat hashes. + depth = 0 + + while (++index <= length) { + character = value.charAt(index) + + if (character !== numberSign) { + index-- + break + } + + subvalue += character + depth++ + } + + if (depth > maxFenceCount) { + return + } + + if (!depth || (!pedantic && value.charAt(index + 1) === numberSign)) { + return + } + + length = value.length + 1 + + // Eat intermediate white-space. + queue = '' + + while (++index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + index-- + break + } + + queue += character + } + + // Exit when not in pedantic mode without spacing. + if (!pedantic && queue.length === 0 && character && character !== lineFeed) { + return + } + + if (silent) { + return true + } + + // Eat content. + subvalue += queue + queue = '' + content = '' + + while (++index < length) { + character = value.charAt(index) + + if (!character || character === lineFeed) { + break + } + + if (character !== space && character !== tab && character !== numberSign) { + content += queue + character + queue = '' + continue + } + + while (character === space || character === tab) { + queue += character + character = value.charAt(++index) + } + + // `#` without a queue is part of the content. + if (!pedantic && content && !queue && character === numberSign) { + content += character + continue + } + + while (character === numberSign) { + queue += character + character = value.charAt(++index) + } + + while (character === space || character === tab) { + queue += character + character = value.charAt(++index) + } + + index-- + } + + now.column += subvalue.length + now.offset += subvalue.length + subvalue += content + queue + + return eat(subvalue)({ + type: 'heading', + depth: depth, + children: self.tokenizeInline(content, now) + }) +} + + +/***/ }), + +/***/ 46373: +/***/ ((module) => { + +"use strict"; + + +module.exports = setextHeading + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var equalsTo = '=' +var dash = '-' + +var maxIndent = 3 + +var equalsToDepth = 1 +var dashDepth = 2 + +function setextHeading(eat, value, silent) { + var self = this + var now = eat.now() + var length = value.length + var index = -1 + var subvalue = '' + var content + var queue + var character + var marker + var depth + + // Eat initial indentation. + while (++index < length) { + character = value.charAt(index) + + if (character !== space || index >= maxIndent) { + index-- + break + } + + subvalue += character + } + + // Eat content. + content = '' + queue = '' + + while (++index < length) { + character = value.charAt(index) + + if (character === lineFeed) { + index-- + break + } + + if (character === space || character === tab) { + queue += character + } else { + content += queue + character + queue = '' + } + } + + now.column += subvalue.length + now.offset += subvalue.length + subvalue += content + queue + + // Ensure the content is followed by a newline and a valid marker. + character = value.charAt(++index) + marker = value.charAt(++index) + + if (character !== lineFeed || (marker !== equalsTo && marker !== dash)) { + return + } + + subvalue += character + + // Eat Setext-line. + queue = marker + depth = marker === equalsTo ? equalsToDepth : dashDepth + + while (++index < length) { + character = value.charAt(index) + + if (character !== marker) { + if (character !== lineFeed) { + return + } + + index-- + break + } + + queue += character + } + + if (silent) { + return true + } + + return eat(subvalue + queue)({ + type: 'heading', + depth: depth, + children: self.tokenizeInline(content, now) + }) +} + + +/***/ }), + +/***/ 94728: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var openCloseTag = (__nccwpck_require__(29631)/* .openCloseTag */ .g) + +module.exports = blockHtml + +var tab = '\t' +var space = ' ' +var lineFeed = '\n' +var lessThan = '<' + +var rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i +var rawCloseExpression = /<\/(script|pre|style)>/i +var commentOpenExpression = /^<!--/ +var commentCloseExpression = /-->/ +var instructionOpenExpression = /^<\?/ +var instructionCloseExpression = /\?>/ +var directiveOpenExpression = /^<![A-Za-z]/ +var directiveCloseExpression = />/ +var cdataOpenExpression = /^<!\[CDATA\[/ +var cdataCloseExpression = /]]>/ +var elementCloseExpression = /^$/ +var otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$') + +function blockHtml(eat, value, silent) { + var self = this + var blocks = self.options.blocks.join('|') + var elementOpenExpression = new RegExp( + '^</?(' + blocks + ')(?=(\\s|/?>|$))', + 'i' + ) + var length = value.length + var index = 0 + var next + var line + var offset + var character + var count + var sequence + var subvalue + + var sequences = [ + [rawOpenExpression, rawCloseExpression, true], + [commentOpenExpression, commentCloseExpression, true], + [instructionOpenExpression, instructionCloseExpression, true], + [directiveOpenExpression, directiveCloseExpression, true], + [cdataOpenExpression, cdataCloseExpression, true], + [elementOpenExpression, elementCloseExpression, true], + [otherElementOpenExpression, elementCloseExpression, false] + ] + + // Eat initial spacing. + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + index++ + } + + if (value.charAt(index) !== lessThan) { + return + } + + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index, next) + offset = -1 + count = sequences.length + + while (++offset < count) { + if (sequences[offset][0].test(line)) { + sequence = sequences[offset] + break + } + } + + if (!sequence) { + return + } + + if (silent) { + return sequence[2] + } + + index = next + + if (!sequence[1].test(line)) { + while (index < length) { + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index + 1, next) + + if (sequence[1].test(line)) { + if (line) { + index = next + } + + break + } + + index = next + } + } + + subvalue = value.slice(0, index) + + return eat(subvalue)({type: 'html', value: subvalue}) +} + + +/***/ }), + +/***/ 42764: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var alphabetical = __nccwpck_require__(84989) +var locate = __nccwpck_require__(70471) +var tag = (__nccwpck_require__(29631)/* .tag */ ._) + +module.exports = inlineHTML +inlineHTML.locator = locate + +var lessThan = '<' +var questionMark = '?' +var exclamationMark = '!' +var slash = '/' + +var htmlLinkOpenExpression = /^<a /i +var htmlLinkCloseExpression = /^<\/a>/i + +function inlineHTML(eat, value, silent) { + var self = this + var length = value.length + var character + var subvalue + + if (value.charAt(0) !== lessThan || length < 3) { + return + } + + character = value.charAt(1) + + if ( + !alphabetical(character) && + character !== questionMark && + character !== exclamationMark && + character !== slash + ) { + return + } + + subvalue = value.match(tag) + + if (!subvalue) { + return + } + + /* istanbul ignore if - not used yet. */ + if (silent) { + return true + } + + subvalue = subvalue[0] + + if (!self.inLink && htmlLinkOpenExpression.test(subvalue)) { + self.inLink = true + } else if (self.inLink && htmlLinkCloseExpression.test(subvalue)) { + self.inLink = false + } + + return eat(subvalue)({type: 'html', value: subvalue}) +} + + +/***/ }), + +/***/ 70086: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(35708) +var locate = __nccwpck_require__(49687) + +module.exports = link +link.locator = locate + +var lineFeed = '\n' +var exclamationMark = '!' +var quotationMark = '"' +var apostrophe = "'" +var leftParenthesis = '(' +var rightParenthesis = ')' +var lessThan = '<' +var greaterThan = '>' +var leftSquareBracket = '[' +var backslash = '\\' +var rightSquareBracket = ']' +var graveAccent = '`' + +function link(eat, value, silent) { + var self = this + var subvalue = '' + var index = 0 + var character = value.charAt(0) + var pedantic = self.options.pedantic + var commonmark = self.options.commonmark + var gfm = self.options.gfm + var closed + var count + var opening + var beforeURL + var beforeTitle + var subqueue + var hasMarker + var isImage + var content + var marker + var length + var title + var depth + var queue + var url + var now + var exit + var node + + // Detect whether this is an image. + if (character === exclamationMark) { + isImage = true + subvalue = character + character = value.charAt(++index) + } + + // Eat the opening. + if (character !== leftSquareBracket) { + return + } + + // Exit when this is a link and we’re already inside a link. + if (!isImage && self.inLink) { + return + } + + subvalue += character + queue = '' + index++ + + // Eat the content. + length = value.length + now = eat.now() + depth = 0 + + now.column += index + now.offset += index + + while (index < length) { + character = value.charAt(index) + subqueue = character + + if (character === graveAccent) { + // Inline-code in link content. + count = 1 + + while (value.charAt(index + 1) === graveAccent) { + subqueue += character + index++ + count++ + } + + if (!opening) { + opening = count + } else if (count >= opening) { + opening = 0 + } + } else if (character === backslash) { + // Allow brackets to be escaped. + index++ + subqueue += value.charAt(index) + } else if ((!opening || gfm) && character === leftSquareBracket) { + // In GFM mode, brackets in code still count. In all other modes, + // they don’t. + depth++ + } else if ((!opening || gfm) && character === rightSquareBracket) { + if (depth) { + depth-- + } else { + if (value.charAt(index + 1) !== leftParenthesis) { + return + } + + subqueue += leftParenthesis + closed = true + index++ + + break + } + } + + queue += subqueue + subqueue = '' + index++ + } + + // Eat the content closing. + if (!closed) { + return + } + + content = queue + subvalue += queue + subqueue + index++ + + // Eat white-space. + while (index < length) { + character = value.charAt(index) + + if (!whitespace(character)) { + break + } + + subvalue += character + index++ + } + + // Eat the URL. + character = value.charAt(index) + queue = '' + beforeURL = subvalue + + if (character === lessThan) { + index++ + beforeURL += lessThan + + while (index < length) { + character = value.charAt(index) + + if (character === greaterThan) { + break + } + + if (commonmark && character === lineFeed) { + return + } + + queue += character + index++ + } + + if (value.charAt(index) !== greaterThan) { + return + } + + subvalue += lessThan + queue + greaterThan + url = queue + index++ + } else { + character = null + subqueue = '' + + while (index < length) { + character = value.charAt(index) + + if ( + subqueue && + (character === quotationMark || + character === apostrophe || + (commonmark && character === leftParenthesis)) + ) { + break + } + + if (whitespace(character)) { + if (!pedantic) { + break + } + + subqueue += character + } else { + if (character === leftParenthesis) { + depth++ + } else if (character === rightParenthesis) { + if (depth === 0) { + break + } + + depth-- + } + + queue += subqueue + subqueue = '' + + if (character === backslash) { + queue += backslash + character = value.charAt(++index) + } + + queue += character + } + + index++ + } + + subvalue += queue + url = queue + index = subvalue.length + } + + // Eat white-space. + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (!whitespace(character)) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + subvalue += queue + + // Eat the title. + if ( + queue && + (character === quotationMark || + character === apostrophe || + (commonmark && character === leftParenthesis)) + ) { + index++ + subvalue += character + queue = '' + marker = character === leftParenthesis ? rightParenthesis : character + beforeTitle = subvalue + + // In commonmark-mode, things are pretty easy: the marker cannot occur + // inside the title. Non-commonmark does, however, support nested + // delimiters. + if (commonmark) { + while (index < length) { + character = value.charAt(index) + + if (character === marker) { + break + } + + if (character === backslash) { + queue += backslash + character = value.charAt(++index) + } + + index++ + queue += character + } + + character = value.charAt(index) + + if (character !== marker) { + return + } + + title = queue + subvalue += queue + character + index++ + + while (index < length) { + character = value.charAt(index) + + if (!whitespace(character)) { + break + } + + subvalue += character + index++ + } + } else { + subqueue = '' + + while (index < length) { + character = value.charAt(index) + + if (character === marker) { + if (hasMarker) { + queue += marker + subqueue + subqueue = '' + } + + hasMarker = true + } else if (!hasMarker) { + queue += character + } else if (character === rightParenthesis) { + subvalue += queue + marker + subqueue + title = queue + break + } else if (whitespace(character)) { + subqueue += character + } else { + queue += marker + subqueue + character + subqueue = '' + hasMarker = false + } + + index++ + } + } + } + + if (value.charAt(index) !== rightParenthesis) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + subvalue += rightParenthesis + + url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, { + nonTerminated: false + }) + + if (title) { + beforeTitle = eat(beforeTitle).test().end + title = self.decode.raw(self.unescape(title), beforeTitle) + } + + node = { + type: isImage ? 'image' : 'link', + title: title || null, + url: url + } + + if (isImage) { + node.alt = self.decode.raw(self.unescape(content), now) || null + } else { + exit = self.enterLink() + node.children = self.tokenizeInline(content, now) + exit() + } + + return eat(subvalue)(node) +} + + +/***/ }), + +/***/ 39165: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var trim = __nccwpck_require__(82315) +var repeat = __nccwpck_require__(69626) +var decimal = __nccwpck_require__(76995) +var getIndent = __nccwpck_require__(54656) +var removeIndent = __nccwpck_require__(80210) +var interrupt = __nccwpck_require__(915) + +module.exports = list + +var asterisk = '*' +var underscore = '_' +var plusSign = '+' +var dash = '-' +var dot = '.' +var space = ' ' +var lineFeed = '\n' +var tab = '\t' +var rightParenthesis = ')' +var lowercaseX = 'x' + +var tabSize = 4 +var looseListItemExpression = /\n\n(?!\s*$)/ +var taskItemExpression = /^\[([ X\tx])][ \t]/ +var bulletExpression = /^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/ +var pedanticBulletExpression = /^([ \t]*)([*+-]|\d+[.)])([ \t]+)/ +var initialIndentExpression = /^( {1,4}|\t)?/gm + +function list(eat, value, silent) { + var self = this + var commonmark = self.options.commonmark + var pedantic = self.options.pedantic + var tokenizers = self.blockTokenizers + var interuptors = self.interruptList + var index = 0 + var length = value.length + var start = null + var size + var queue + var ordered + var character + var marker + var nextIndex + var startIndex + var prefixed + var currentMarker + var content + var line + var previousEmpty + var empty + var items + var allLines + var emptyLines + var item + var enterTop + var exitBlockquote + var spread = false + var node + var now + var end + var indented + + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + index++ + } + + character = value.charAt(index) + + if (character === asterisk || character === plusSign || character === dash) { + marker = character + ordered = false + } else { + ordered = true + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (!decimal(character)) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + + if ( + !queue || + !(character === dot || (commonmark && character === rightParenthesis)) + ) { + return + } + + /* Slightly abusing `silent` mode, whose goal is to make interrupting + * paragraphs work. + * Well, that’s exactly what we want to do here: don’t interrupt: + * 2. here, because the “list” doesn’t start with `1`. */ + if (silent && queue !== '1') { + return + } + + start = parseInt(queue, 10) + marker = character + } + + character = value.charAt(++index) + + if ( + character !== space && + character !== tab && + (pedantic || (character !== lineFeed && character !== '')) + ) { + return + } + + if (silent) { + return true + } + + index = 0 + items = [] + allLines = [] + emptyLines = [] + + while (index < length) { + nextIndex = value.indexOf(lineFeed, index) + startIndex = index + prefixed = false + indented = false + + if (nextIndex === -1) { + nextIndex = length + } + + size = 0 + + while (index < length) { + character = value.charAt(index) + + if (character === tab) { + size += tabSize - (size % tabSize) + } else if (character === space) { + size++ + } else { + break + } + + index++ + } + + if (item && size >= item.indent) { + indented = true + } + + character = value.charAt(index) + currentMarker = null + + if (!indented) { + if ( + character === asterisk || + character === plusSign || + character === dash + ) { + currentMarker = character + index++ + size++ + } else { + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (!decimal(character)) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + index++ + + if ( + queue && + (character === dot || (commonmark && character === rightParenthesis)) + ) { + currentMarker = character + size += queue.length + 1 + } + } + + if (currentMarker) { + character = value.charAt(index) + + if (character === tab) { + size += tabSize - (size % tabSize) + index++ + } else if (character === space) { + end = index + tabSize + + while (index < end) { + if (value.charAt(index) !== space) { + break + } + + index++ + size++ + } + + if (index === end && value.charAt(index) === space) { + index -= tabSize - 1 + size -= tabSize - 1 + } + } else if (character !== lineFeed && character !== '') { + currentMarker = null + } + } + } + + if (currentMarker) { + if (!pedantic && marker !== currentMarker) { + break + } + + prefixed = true + } else { + if (!commonmark && !indented && value.charAt(startIndex) === space) { + indented = true + } else if (commonmark && item) { + indented = size >= item.indent || size > tabSize + } + + prefixed = false + index = startIndex + } + + line = value.slice(startIndex, nextIndex) + content = startIndex === index ? line : value.slice(index, nextIndex) + + if ( + currentMarker === asterisk || + currentMarker === underscore || + currentMarker === dash + ) { + if (tokenizers.thematicBreak.call(self, eat, line, true)) { + break + } + } + + previousEmpty = empty + empty = !prefixed && !trim(content).length + + if (indented && item) { + item.value = item.value.concat(emptyLines, line) + allLines = allLines.concat(emptyLines, line) + emptyLines = [] + } else if (prefixed) { + if (emptyLines.length !== 0) { + spread = true + item.value.push('') + item.trail = emptyLines.concat() + } + + item = { + value: [line], + indent: size, + trail: [] + } + + items.push(item) + allLines = allLines.concat(emptyLines, line) + emptyLines = [] + } else if (empty) { + if (previousEmpty && !commonmark) { + break + } + + emptyLines.push(line) + } else { + if (previousEmpty) { + break + } + + if (interrupt(interuptors, tokenizers, self, [eat, line, true])) { + break + } + + item.value = item.value.concat(emptyLines, line) + allLines = allLines.concat(emptyLines, line) + emptyLines = [] + } + + index = nextIndex + 1 + } + + node = eat(allLines.join(lineFeed)).reset({ + type: 'list', + ordered: ordered, + start: start, + spread: spread, + children: [] + }) + + enterTop = self.enterList() + exitBlockquote = self.enterBlock() + index = -1 + length = items.length + + while (++index < length) { + item = items[index].value.join(lineFeed) + now = eat.now() + + eat(item)(listItem(self, item, now), node) + + item = items[index].trail.join(lineFeed) + + if (index !== length - 1) { + item += lineFeed + } + + eat(item) + } + + enterTop() + exitBlockquote() + + return node +} + +function listItem(ctx, value, position) { + var offsets = ctx.offset + var fn = ctx.options.pedantic ? pedanticListItem : normalListItem + var checked = null + var task + var indent + + value = fn.apply(null, arguments) + + if (ctx.options.gfm) { + task = value.match(taskItemExpression) + + if (task) { + indent = task[0].length + checked = task[1].toLowerCase() === lowercaseX + offsets[position.line] += indent + value = value.slice(indent) + } + } + + return { + type: 'listItem', + spread: looseListItemExpression.test(value), + checked: checked, + children: ctx.tokenizeBlock(value, position) + } +} + +// Create a list-item using overly simple mechanics. +function pedanticListItem(ctx, value, position) { + var offsets = ctx.offset + var line = position.line + + // Remove the list-item’s bullet. + value = value.replace(pedanticBulletExpression, replacer) + + // The initial line was also matched by the below, so we reset the `line`. + line = position.line + + return value.replace(initialIndentExpression, replacer) + + // A simple replacer which removed all matches, and adds their length to + // `offset`. + function replacer($0) { + offsets[line] = (offsets[line] || 0) + $0.length + line++ + + return '' + } +} + +// Create a list-item using sane mechanics. +function normalListItem(ctx, value, position) { + var offsets = ctx.offset + var line = position.line + var max + var bullet + var rest + var lines + var trimmedLines + var index + var length + + // Remove the list-item’s bullet. + value = value.replace(bulletExpression, replacer) + + lines = value.split(lineFeed) + + trimmedLines = removeIndent(value, getIndent(max).indent).split(lineFeed) + + // We replaced the initial bullet with something else above, which was used + // to trick `removeIndentation` into removing some more characters when + // possible. However, that could result in the initial line to be stripped + // more than it should be. + trimmedLines[0] = rest + + offsets[line] = (offsets[line] || 0) + bullet.length + line++ + + index = 0 + length = lines.length + + while (++index < length) { + offsets[line] = + (offsets[line] || 0) + lines[index].length - trimmedLines[index].length + line++ + } + + return trimmedLines.join(lineFeed) + + /* eslint-disable-next-line max-params */ + function replacer($0, $1, $2, $3, $4) { + bullet = $1 + $2 + $3 + rest = $4 + + // Make sure that the first nine numbered list items can indent with an + // extra space. That is, when the bullet did not receive an extra final + // space. + if (Number($2) < 10 && bullet.length % 2 === 1) { + $2 = space + $2 + } + + max = $1 + repeat(space, $2.length) + $3 + + return max + rest + } +} + + +/***/ }), + +/***/ 22073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var trim = __nccwpck_require__(82315) +var trimTrailingLines = __nccwpck_require__(54411) +var interrupt = __nccwpck_require__(915) + +module.exports = paragraph + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' + +var tabSize = 4 + +// Tokenise paragraph. +function paragraph(eat, value, silent) { + var self = this + var settings = self.options + var commonmark = settings.commonmark + var tokenizers = self.blockTokenizers + var interruptors = self.interruptParagraph + var index = value.indexOf(lineFeed) + var length = value.length + var position + var subvalue + var character + var size + var now + + while (index < length) { + // Eat everything if there’s no following newline. + if (index === -1) { + index = length + break + } + + // Stop if the next character is NEWLINE. + if (value.charAt(index + 1) === lineFeed) { + break + } + + // In commonmark-mode, following indented lines are part of the paragraph. + if (commonmark) { + size = 0 + position = index + 1 + + while (position < length) { + character = value.charAt(position) + + if (character === tab) { + size = tabSize + break + } else if (character === space) { + size++ + } else { + break + } + + position++ + } + + if (size >= tabSize && character !== lineFeed) { + index = value.indexOf(lineFeed, index + 1) + continue + } + } + + subvalue = value.slice(index + 1) + + // Check if the following code contains a possible block. + if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) { + break + } + + position = index + index = value.indexOf(lineFeed, index + 1) + + if (index !== -1 && trim(value.slice(position, index)) === '') { + index = position + break + } + } + + subvalue = value.slice(0, index) + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + now = eat.now() + subvalue = trimTrailingLines(subvalue) + + return eat(subvalue)({ + type: 'paragraph', + children: self.tokenizeInline(subvalue, now) + }) +} + + +/***/ }), + +/***/ 4648: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(35708) +var locate = __nccwpck_require__(49687) +var normalize = __nccwpck_require__(98851) + +module.exports = reference +reference.locator = locate + +var link = 'link' +var image = 'image' +var shortcut = 'shortcut' +var collapsed = 'collapsed' +var full = 'full' +var exclamationMark = '!' +var leftSquareBracket = '[' +var backslash = '\\' +var rightSquareBracket = ']' + +function reference(eat, value, silent) { + var self = this + var commonmark = self.options.commonmark + var character = value.charAt(0) + var index = 0 + var length = value.length + var subvalue = '' + var intro = '' + var type = link + var referenceType = shortcut + var content + var identifier + var now + var node + var exit + var queue + var bracketed + var depth + + // Check whether we’re eating an image. + if (character === exclamationMark) { + type = image + intro = character + character = value.charAt(++index) + } + + if (character !== leftSquareBracket) { + return + } + + index++ + intro += character + queue = '' + + // Eat the text. + depth = 0 + + while (index < length) { + character = value.charAt(index) + + if (character === leftSquareBracket) { + bracketed = true + depth++ + } else if (character === rightSquareBracket) { + if (!depth) { + break + } + + depth-- + } + + if (character === backslash) { + queue += backslash + character = value.charAt(++index) + } + + queue += character + index++ + } + + subvalue = queue + content = queue + character = value.charAt(index) + + if (character !== rightSquareBracket) { + return + } + + index++ + subvalue += character + queue = '' + + if (!commonmark) { + // The original markdown syntax definition explicitly allows for whitespace + // between the link text and link label; commonmark departs from this, in + // part to improve support for shortcut reference links + while (index < length) { + character = value.charAt(index) + + if (!whitespace(character)) { + break + } + + queue += character + index++ + } + } + + character = value.charAt(index) + + if (character === leftSquareBracket) { + identifier = '' + queue += character + index++ + + while (index < length) { + character = value.charAt(index) + + if (character === leftSquareBracket || character === rightSquareBracket) { + break + } + + if (character === backslash) { + identifier += backslash + character = value.charAt(++index) + } + + identifier += character + index++ + } + + character = value.charAt(index) + + if (character === rightSquareBracket) { + referenceType = identifier ? full : collapsed + queue += identifier + character + index++ + } else { + identifier = '' + } + + subvalue += queue + queue = '' + } else { + if (!content) { + return + } + + identifier = content + } + + // Brackets cannot be inside the identifier. + if (referenceType !== full && bracketed) { + return + } + + subvalue = intro + subvalue + + if (type === link && self.inLink) { + return null + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + now = eat.now() + now.column += intro.length + now.offset += intro.length + identifier = referenceType === full ? identifier : content + + node = { + type: type + 'Reference', + identifier: normalize(identifier), + label: identifier, + referenceType: referenceType + } + + if (type === link) { + exit = self.enterLink() + node.children = self.tokenizeInline(content, now) + exit() + } else { + node.alt = self.decode.raw(self.unescape(content), now) || null + } + + return eat(subvalue)(node) +} + + +/***/ }), + +/***/ 82250: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var trim = __nccwpck_require__(82315) +var whitespace = __nccwpck_require__(35708) +var locate = __nccwpck_require__(49128) + +module.exports = strong +strong.locator = locate + +var backslash = '\\' +var asterisk = '*' +var underscore = '_' + +function strong(eat, value, silent) { + var self = this + var index = 0 + var character = value.charAt(index) + var now + var pedantic + var marker + var queue + var subvalue + var length + var previous + + if ( + (character !== asterisk && character !== underscore) || + value.charAt(++index) !== character + ) { + return + } + + pedantic = self.options.pedantic + marker = character + subvalue = marker + marker + length = value.length + index++ + queue = '' + character = '' + + if (pedantic && whitespace(value.charAt(index))) { + return + } + + while (index < length) { + previous = character + character = value.charAt(index) + + if ( + character === marker && + value.charAt(index + 1) === marker && + (!pedantic || !whitespace(previous)) + ) { + character = value.charAt(index + 2) + + if (character !== marker) { + if (!trim(queue)) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + now = eat.now() + now.column += 2 + now.offset += 2 + + return eat(subvalue + queue + subvalue)({ + type: 'strong', + children: self.tokenizeInline(queue, now) + }) + } + } + + if (!pedantic && character === backslash) { + queue += character + character = value.charAt(++index) + } + + queue += character + index++ + } +} + + +/***/ }), + +/***/ 24444: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(35708) + +module.exports = table + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' +var dash = '-' +var colon = ':' +var backslash = '\\' +var verticalBar = '|' + +var minColumns = 1 +var minRows = 2 + +var left = 'left' +var center = 'center' +var right = 'right' + +function table(eat, value, silent) { + var self = this + var index + var alignments + var alignment + var subvalue + var row + var length + var lines + var queue + var character + var hasDash + var align + var cell + var preamble + var now + var position + var lineCount + var line + var rows + var table + var lineIndex + var pipeIndex + var first + + // Exit when not in gfm-mode. + if (!self.options.gfm) { + return + } + + // Get the rows. + // Detecting tables soon is hard, so there are some checks for performance + // here, such as the minimum number of rows, and allowed characters in the + // alignment row. + index = 0 + lineCount = 0 + length = value.length + 1 + lines = [] + + while (index < length) { + lineIndex = value.indexOf(lineFeed, index) + pipeIndex = value.indexOf(verticalBar, index + 1) + + if (lineIndex === -1) { + lineIndex = value.length + } + + if (pipeIndex === -1 || pipeIndex > lineIndex) { + if (lineCount < minRows) { + return + } + + break + } + + lines.push(value.slice(index, lineIndex)) + lineCount++ + index = lineIndex + 1 + } + + // Parse the alignment row. + subvalue = lines.join(lineFeed) + alignments = lines.splice(1, 1)[0] || [] + index = 0 + length = alignments.length + lineCount-- + alignment = false + align = [] + + while (index < length) { + character = alignments.charAt(index) + + if (character === verticalBar) { + hasDash = null + + if (alignment === false) { + if (first === false) { + return + } + } else { + align.push(alignment) + alignment = false + } + + first = false + } else if (character === dash) { + hasDash = true + alignment = alignment || null + } else if (character === colon) { + if (alignment === left) { + alignment = center + } else if (hasDash && alignment === null) { + alignment = right + } else { + alignment = left + } + } else if (!whitespace(character)) { + return + } + + index++ + } + + if (alignment !== false) { + align.push(alignment) + } + + // Exit when without enough columns. + if (align.length < minColumns) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + // Parse the rows. + position = -1 + rows = [] + + table = eat(subvalue).reset({type: 'table', align: align, children: rows}) + + while (++position < lineCount) { + line = lines[position] + row = {type: 'tableRow', children: []} + + // Eat a newline character when this is not the first row. + if (position) { + eat(lineFeed) + } + + // Eat the row. + eat(line).reset(row, table) + + length = line.length + 1 + index = 0 + queue = '' + cell = '' + preamble = true + + while (index < length) { + character = line.charAt(index) + + if (character === tab || character === space) { + if (cell) { + queue += character + } else { + eat(character) + } + + index++ + continue + } + + if (character === '' || character === verticalBar) { + if (preamble) { + eat(character) + } else { + if ((cell || character) && !preamble) { + subvalue = cell + + if (queue.length > 1) { + if (character) { + subvalue += queue.slice(0, -1) + queue = queue.charAt(queue.length - 1) + } else { + subvalue += queue + queue = '' + } + } + + now = eat.now() + + eat(subvalue)( + {type: 'tableCell', children: self.tokenizeInline(cell, now)}, + row + ) + } + + eat(queue + character) + + queue = '' + cell = '' + } + } else { + if (queue) { + cell += queue + queue = '' + } + + cell += character + + if (character === backslash && index !== length - 2) { + cell += line.charAt(index + 1) + index++ + } + } + + preamble = false + index++ + } + + // Eat the alignment row. + if (!position) { + eat(lineFeed + alignments) + } + } + + return table +} + + +/***/ }), + +/***/ 16931: +/***/ ((module) => { + +"use strict"; + + +module.exports = text + +function text(eat, value, silent) { + var self = this + var methods + var tokenizers + var index + var length + var subvalue + var position + var tokenizer + var name + var min + var now + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + methods = self.inlineMethods + length = methods.length + tokenizers = self.inlineTokenizers + index = -1 + min = value.length + + while (++index < length) { + name = methods[index] + + if (name === 'text' || !tokenizers[name]) { + continue + } + + tokenizer = tokenizers[name].locator + + if (!tokenizer) { + eat.file.fail('Missing locator: `' + name + '`') + } + + position = tokenizer.call(self, value, 1) + + if (position !== -1 && position < min) { + min = position + } + } + + subvalue = value.slice(0, min) + now = eat.now() + + self.decode(subvalue, now, handler) + + function handler(content, position, source) { + eat(source || content)({type: 'text', value: content}) + } +} + + +/***/ }), + +/***/ 76964: +/***/ ((module) => { + +"use strict"; + + +module.exports = thematicBreak + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' +var asterisk = '*' +var dash = '-' +var underscore = '_' + +var maxCount = 3 + +function thematicBreak(eat, value, silent) { + var index = -1 + var length = value.length + 1 + var subvalue = '' + var character + var marker + var markerCount + var queue + + while (++index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + subvalue += character + } + + if ( + character !== asterisk && + character !== dash && + character !== underscore + ) { + return + } + + marker = character + subvalue += character + markerCount = 1 + queue = '' + + while (++index < length) { + character = value.charAt(index) + + if (character === marker) { + markerCount++ + subvalue += queue + marker + queue = '' + } else if (character === space) { + queue += character + } else if ( + markerCount >= maxCount && + (!character || character === lineFeed) + ) { + subvalue += queue + + if (silent) { + return true + } + + return eat(subvalue)({type: 'thematicBreak'}) + } else { + return + } + } +} + + +/***/ }), + +/***/ 6305: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var ccount = __nccwpck_require__(33772) +var decode = __nccwpck_require__(81085) +var decimal = __nccwpck_require__(76995) +var alphabetical = __nccwpck_require__(84989) +var whitespace = __nccwpck_require__(35708) +var locate = __nccwpck_require__(93917) + +module.exports = url +url.locator = locate +url.notInLink = true + +var exclamationMark = 33 // '!' +var ampersand = 38 // '&' +var rightParenthesis = 41 // ')' +var asterisk = 42 // '*' +var comma = 44 // ',' +var dash = 45 // '-' +var dot = 46 // '.' +var colon = 58 // ':' +var semicolon = 59 // ';' +var questionMark = 63 // '?' +var lessThan = 60 // '<' +var underscore = 95 // '_' +var tilde = 126 // '~' + +var leftParenthesisCharacter = '(' +var rightParenthesisCharacter = ')' + +function url(eat, value, silent) { + var self = this + var gfm = self.options.gfm + var tokenizers = self.inlineTokenizers + var length = value.length + var previousDot = -1 + var protocolless = false + var dots + var lastTwoPartsStart + var start + var index + var pathStart + var path + var code + var end + var leftCount + var rightCount + var content + var children + var url + var exit + + if (!gfm) { + return + } + + // `WWW.` doesn’t work. + if (value.slice(0, 4) === 'www.') { + protocolless = true + index = 4 + } else if (value.slice(0, 7).toLowerCase() === 'http://') { + index = 7 + } else if (value.slice(0, 8).toLowerCase() === 'https://') { + index = 8 + } else { + return + } + + // Act as if the starting boundary is a dot. + previousDot = index - 1 + + // Parse a valid domain. + start = index + dots = [] + + while (index < length) { + code = value.charCodeAt(index) + + if (code === dot) { + // Dots may not appear after each other. + if (previousDot === index - 1) { + break + } + + dots.push(index) + previousDot = index + index++ + continue + } + + if ( + decimal(code) || + alphabetical(code) || + code === dash || + code === underscore + ) { + index++ + continue + } + + break + } + + // Ignore a final dot: + if (code === dot) { + dots.pop() + index-- + } + + // If there are not dots, exit. + if (dots[0] === undefined) { + return + } + + // If there is an underscore in the last two domain parts, exit: + // `www.example.c_m` and `www.ex_ample.com` are not OK, but + // `www.sub_domain.example.com` is. + lastTwoPartsStart = dots.length < 2 ? start : dots[dots.length - 2] + 1 + + if (value.slice(lastTwoPartsStart, index).indexOf('_') !== -1) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + end = index + pathStart = index + + // Parse a path. + while (index < length) { + code = value.charCodeAt(index) + + if (whitespace(code) || code === lessThan) { + break + } + + index++ + + if ( + code === exclamationMark || + code === asterisk || + code === comma || + code === dot || + code === colon || + code === questionMark || + code === underscore || + code === tilde + ) { + // Empty + } else { + end = index + } + } + + index = end + + // If the path ends in a closing paren, and the count of closing parens is + // higher than the opening count, then remove the supefluous closing parens. + if (value.charCodeAt(index - 1) === rightParenthesis) { + path = value.slice(pathStart, index) + leftCount = ccount(path, leftParenthesisCharacter) + rightCount = ccount(path, rightParenthesisCharacter) + + while (rightCount > leftCount) { + index = pathStart + path.lastIndexOf(rightParenthesisCharacter) + path = value.slice(pathStart, index) + rightCount-- + } + } + + if (value.charCodeAt(index - 1) === semicolon) { + // GitHub doesn’t document this, but final semicolons aren’t paret of the + // URL either. + index-- + + // // If the path ends in what looks like an entity, it’s not part of the path. + if (alphabetical(value.charCodeAt(index - 1))) { + end = index - 2 + + while (alphabetical(value.charCodeAt(end))) { + end-- + } + + if (value.charCodeAt(end) === ampersand) { + index = end + } + } + } + + content = value.slice(0, index) + url = decode(content, {nonTerminated: false}) + + if (protocolless) { + url = 'http://' + url + } + + exit = self.enterLink() + + // Temporarily remove all tokenizers except text in url. + self.inlineTokenizers = {text: tokenizers.text} + children = self.tokenizeInline(content, eat.now()) + self.inlineTokenizers = tokenizers + + exit() + + return eat(content)({type: 'link', title: null, url: url, children: children}) +} + + +/***/ }), + +/***/ 87327: +/***/ ((module) => { + +"use strict"; + + +module.exports = factory + +// Construct a tokenizer. This creates both `tokenizeInline` and `tokenizeBlock`. +function factory(type) { + return tokenize + + // Tokenizer for a bound `type`. + function tokenize(value, location) { + var self = this + var offset = self.offset + var tokens = [] + var methods = self[type + 'Methods'] + var tokenizers = self[type + 'Tokenizers'] + var line = location.line + var column = location.column + var index + var length + var method + var name + var matched + var valueLength + + // Trim white space only lines. + if (!value) { + return tokens + } + + // Expose on `eat`. + eat.now = now + eat.file = self.file + + // Sync initial offset. + updatePosition('') + + // Iterate over `value`, and iterate over all tokenizers. When one eats + // something, re-iterate with the remaining value. If no tokenizer eats, + // something failed (should not happen) and an exception is thrown. + while (value) { + index = -1 + length = methods.length + matched = false + + while (++index < length) { + name = methods[index] + method = tokenizers[name] + + // Previously, we had constructs such as footnotes and YAML that used + // these properties. + // Those are now external (plus there are userland extensions), that may + // still use them. + if ( + method && + /* istanbul ignore next */ (!method.onlyAtStart || self.atStart) && + /* istanbul ignore next */ (!method.notInList || !self.inList) && + /* istanbul ignore next */ (!method.notInBlock || !self.inBlock) && + (!method.notInLink || !self.inLink) + ) { + valueLength = value.length + + method.apply(self, [eat, value]) + + matched = valueLength !== value.length + + if (matched) { + break + } + } + } + + /* istanbul ignore if */ + if (!matched) { + self.file.fail(new Error('Infinite loop'), eat.now()) + } + } + + self.eof = now() + + return tokens + + // Update line, column, and offset based on `value`. + function updatePosition(subvalue) { + var lastIndex = -1 + var index = subvalue.indexOf('\n') + + while (index !== -1) { + line++ + lastIndex = index + index = subvalue.indexOf('\n', index + 1) + } + + if (lastIndex === -1) { + column += subvalue.length + } else { + column = subvalue.length - lastIndex + } + + if (line in offset) { + if (lastIndex !== -1) { + column += offset[line] + } else if (column <= offset[line]) { + column = offset[line] + 1 + } + } + } + + // Get offset. Called before the first character is eaten to retrieve the + // range’s offsets. + function getOffset() { + var indentation = [] + var pos = line + 1 + + // Done. Called when the last character is eaten to retrieve the range’s + // offsets. + return function () { + var last = line + 1 + + while (pos < last) { + indentation.push((offset[pos] || 0) + 1) + + pos++ + } + + return indentation + } + } + + // Get the current position. + function now() { + var pos = {line: line, column: column} + + pos.offset = self.toOffset(pos) + + return pos + } + + // Store position information for a node. + function Position(start) { + this.start = start + this.end = now() + } + + // Throw when a value is incorrectly eaten. This shouldn’t happen but will + // throw on new, incorrect rules. + function validateEat(subvalue) { + /* istanbul ignore if */ + if (value.slice(0, subvalue.length) !== subvalue) { + // Capture stack-trace. + self.file.fail( + new Error( + 'Incorrectly eaten value: please report this warning on https://git.io/vg5Ft' + ), + now() + ) + } + } + + // Mark position and patch `node.position`. + function position() { + var before = now() + + return update + + // Add the position to a node. + function update(node, indent) { + var previous = node.position + var start = previous ? previous.start : before + var combined = [] + var n = previous && previous.end.line + var l = before.line + + node.position = new Position(start) + + // If there was already a `position`, this node was merged. Fixing + // `start` wasn’t hard, but the indent is different. Especially + // because some information, the indent between `n` and `l` wasn’t + // tracked. Luckily, that space is (should be?) empty, so we can + // safely check for it now. + if (previous && indent && previous.indent) { + combined = previous.indent + + if (n < l) { + while (++n < l) { + combined.push((offset[n] || 0) + 1) + } + + combined.push(before.column) + } + + indent = combined.concat(indent) + } + + node.position.indent = indent || [] + + return node + } + } + + // Add `node` to `parent`s children or to `tokens`. Performs merges where + // possible. + function add(node, parent) { + var children = parent ? parent.children : tokens + var previous = children[children.length - 1] + var fn + + if ( + previous && + node.type === previous.type && + (node.type === 'text' || node.type === 'blockquote') && + mergeable(previous) && + mergeable(node) + ) { + fn = node.type === 'text' ? mergeText : mergeBlockquote + node = fn.call(self, previous, node) + } + + if (node !== previous) { + children.push(node) + } + + if (self.atStart && tokens.length !== 0) { + self.exitStart() + } + + return node + } + + // Remove `subvalue` from `value`. `subvalue` must be at the start of + // `value`. + function eat(subvalue) { + var indent = getOffset() + var pos = position() + var current = now() + + validateEat(subvalue) + + apply.reset = reset + reset.test = test + apply.test = test + + value = value.slice(subvalue.length) + + updatePosition(subvalue) + + indent = indent() + + return apply + + // Add the given arguments, add `position` to the returned node, and + // return the node. + function apply(node, parent) { + return pos(add(pos(node), parent), indent) + } + + // Functions just like apply, but resets the content: the line and + // column are reversed, and the eaten value is re-added. This is + // useful for nodes with a single type of content, such as lists and + // tables. See `apply` above for what parameters are expected. + function reset() { + var node = apply.apply(null, arguments) + + line = current.line + column = current.column + value = subvalue + value + + return node + } + + // Test the position, after eating, and reverse to a not-eaten state. + function test() { + var result = pos({}) + + line = current.line + column = current.column + value = subvalue + value + + return result.position + } + } + } +} + +// Check whether a node is mergeable with adjacent nodes. +function mergeable(node) { + var start + var end + + if (node.type !== 'text' || !node.position) { + return true + } + + start = node.position.start + end = node.position.end + + // Only merge nodes which occupy the same size as their `value`. + return ( + start.line !== end.line || end.column - start.column === node.value.length + ) +} + +// Merge two text nodes: `node` into `prev`. +function mergeText(previous, node) { + previous.value += node.value + + return previous +} + +// Merge two blockquotes: `node` into `prev`, unless in CommonMark or gfm modes. +function mergeBlockquote(previous, node) { + if (this.options.commonmark || this.options.gfm) { + return node + } + + previous.children = previous.children.concat(node.children) + + return previous +} + + +/***/ }), + +/***/ 73235: +/***/ ((module) => { + +"use strict"; + + +module.exports = factory + +var backslash = '\\' + +// Factory to de-escape a value, based on a list at `key` in `ctx`. +function factory(ctx, key) { + return unescape + + // De-escape a string using the expression at `key` in `ctx`. + function unescape(value) { + var previous = 0 + var index = value.indexOf(backslash) + var escape = ctx[key] + var queue = [] + var character + + while (index !== -1) { + queue.push(value.slice(previous, index)) + previous = index + 1 + character = value.charAt(previous) + + // If the following character is not a valid escape, add the slash. + if (!character || escape.indexOf(character) === -1) { + queue.push(backslash) + } + + index = value.indexOf(backslash, previous + 1) + } + + queue.push(value.slice(previous)) + + return queue.join('') + } +} + + +/***/ }), + +/***/ 54656: +/***/ ((module) => { + +"use strict"; + + +module.exports = indentation + +var tab = '\t' +var space = ' ' + +var spaceSize = 1 +var tabSize = 4 + +// Gets indentation information for a line. +function indentation(value) { + var index = 0 + var indent = 0 + var character = value.charAt(index) + var stops = {} + var size + var lastIndent = 0 + + while (character === tab || character === space) { + size = character === tab ? tabSize : spaceSize + + indent += size + + if (size > 1) { + indent = Math.floor(indent / size) * size + } + + while (lastIndent < indent) { + stops[++lastIndent] = index + } + + character = value.charAt(++index) + } + + return {indent: indent, stops: stops} +} + + +/***/ }), + +/***/ 29631: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +var attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' +var unquoted = '[^"\'=<>`\\u0000-\\u0020]+' +var singleQuoted = "'[^']*'" +var doubleQuoted = '"[^"]*"' +var attributeValue = + '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')' +var attribute = + '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' +var openTag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>' +var closeTag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>' +var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->' +var processing = '<[?].*?[?]>' +var declaration = '<![A-Za-z]+\\s+[^>]*>' +var cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' + +exports.g = new RegExp('^(?:' + openTag + '|' + closeTag + ')') + +exports._ = new RegExp( + '^(?:' + + openTag + + '|' + + closeTag + + '|' + + comment + + '|' + + processing + + '|' + + declaration + + '|' + + cdata + + ')' +) + + +/***/ }), + +/***/ 915: +/***/ ((module) => { + +"use strict"; + + +module.exports = interrupt + +function interrupt(interruptors, tokenizers, ctx, parameters) { + var length = interruptors.length + var index = -1 + var interruptor + var config + + while (++index < length) { + interruptor = interruptors[index] + config = interruptor[1] || {} + + if ( + config.pedantic !== undefined && + config.pedantic !== ctx.options.pedantic + ) { + continue + } + + if ( + config.commonmark !== undefined && + config.commonmark !== ctx.options.commonmark + ) { + continue + } + + if (tokenizers[interruptor[0]].apply(ctx, parameters)) { + return true + } + } + + return false +} + + +/***/ }), + +/***/ 98851: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var collapseWhiteSpace = __nccwpck_require__(93764) + +module.exports = normalize + +// Normalize an identifier. Collapses multiple white space characters into a +// single space, and removes casing. +function normalize(value) { + return collapseWhiteSpace(value).toLowerCase() +} + + +/***/ }), + +/***/ 80210: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var trim = __nccwpck_require__(82315) +var repeat = __nccwpck_require__(69626) +var getIndent = __nccwpck_require__(54656) + +module.exports = indentation + +var lineFeed = '\n' +var space = ' ' +var exclamationMark = '!' + +// Remove the minimum indent from every line in `value`. Supports both tab, +// spaced, and mixed indentation (as well as possible). +function indentation(value, maximum) { + var values = value.split(lineFeed) + var position = values.length + 1 + var minIndent = Infinity + var matrix = [] + var index + var indentation + var stops + + values.unshift(repeat(space, maximum) + exclamationMark) + + while (position--) { + indentation = getIndent(values[position]) + + matrix[position] = indentation.stops + + if (trim(values[position]).length === 0) { + continue + } + + if (indentation.indent) { + if (indentation.indent > 0 && indentation.indent < minIndent) { + minIndent = indentation.indent + } + } else { + minIndent = Infinity + + break + } + } + + if (minIndent !== Infinity) { + position = values.length + + while (position--) { + stops = matrix[position] + index = minIndent + + while (index && !(index in stops)) { + index-- + } + + values[position] = values[position].slice(stops[index] + 1) + } + } + + values.shift() + + return values.join(lineFeed) +} + + +/***/ }), + +/***/ 36686: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var unherit = __nccwpck_require__(68475) +var xtend = __nccwpck_require__(76738) +var Compiler = __nccwpck_require__(48398) + +module.exports = stringify +stringify.Compiler = Compiler + +function stringify(options) { + var Local = unherit(Compiler) + Local.prototype.options = xtend( + Local.prototype.options, + this.data('settings'), + options + ) + this.Compiler = Local +} + + +/***/ }), + +/***/ 48398: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var toggle = __nccwpck_require__(78447) + +module.exports = Compiler + +// Construct a new compiler. +function Compiler(tree, file) { + this.inLink = false + this.inTable = false + this.tree = tree + this.file = file + this.options = xtend(this.options) + this.setOptions({}) +} + +var proto = Compiler.prototype + +// Enter and exit helpers. */ +proto.enterLink = toggle('inLink', false) +proto.enterTable = toggle('inTable', false) +proto.enterLinkReference = __nccwpck_require__(78425) + +// Configuration. +proto.options = __nccwpck_require__(12979) +proto.setOptions = __nccwpck_require__(17767) + +proto.compile = __nccwpck_require__(39978) +proto.visit = __nccwpck_require__(19744) +proto.all = __nccwpck_require__(53395) +proto.block = __nccwpck_require__(37624) +proto.visitOrderedItems = __nccwpck_require__(71401) +proto.visitUnorderedItems = __nccwpck_require__(367) + +// Expose visitors. +proto.visitors = { + root: __nccwpck_require__(71342), + text: __nccwpck_require__(16332), + heading: __nccwpck_require__(63353), + paragraph: __nccwpck_require__(66601), + blockquote: __nccwpck_require__(91296), + list: __nccwpck_require__(82878), + listItem: __nccwpck_require__(18141), + inlineCode: __nccwpck_require__(83254), + code: __nccwpck_require__(69279), + html: __nccwpck_require__(48195), + thematicBreak: __nccwpck_require__(74416), + strong: __nccwpck_require__(33986), + emphasis: __nccwpck_require__(60250), + break: __nccwpck_require__(52505), + delete: __nccwpck_require__(26808), + link: __nccwpck_require__(97556), + linkReference: __nccwpck_require__(17271), + imageReference: __nccwpck_require__(70911), + definition: __nccwpck_require__(82838), + image: __nccwpck_require__(10964), + table: __nccwpck_require__(88664), + tableCell: __nccwpck_require__(10730) +} + + +/***/ }), + +/***/ 12979: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + gfm: true, + commonmark: false, + pedantic: false, + entities: 'false', + setext: false, + closeAtx: false, + tableCellPadding: true, + tablePipeAlign: true, + stringLength: stringLength, + incrementListMarker: true, + tightDefinitions: false, + fences: false, + fence: '`', + bullet: '-', + listItemIndent: 'tab', + rule: '*', + ruleSpaces: true, + ruleRepetition: 3, + strong: '*', + emphasis: '_' +} + +function stringLength(value) { + return value.length +} + + +/***/ }), + +/***/ 28428: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var decimal = __nccwpck_require__(76995) +var alphanumeric = __nccwpck_require__(41536) +var whitespace = __nccwpck_require__(35708) +var escapes = __nccwpck_require__(31152) +var prefix = __nccwpck_require__(30876) + +module.exports = factory + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' +var numberSign = '#' +var ampersand = '&' +var leftParenthesis = '(' +var rightParenthesis = ')' +var asterisk = '*' +var plusSign = '+' +var dash = '-' +var dot = '.' +var colon = ':' +var lessThan = '<' +var greaterThan = '>' +var leftSquareBracket = '[' +var backslash = '\\' +var rightSquareBracket = ']' +var underscore = '_' +var graveAccent = '`' +var verticalBar = '|' +var tilde = '~' +var exclamationMark = '!' + +var entities = { + '<': '&lt;', + ':': '&#x3A;', + '&': '&amp;', + '|': '&#x7C;', + '~': '&#x7E;' +} + +var shortcut = 'shortcut' +var mailto = 'mailto' +var https = 'https' +var http = 'http' + +var blankExpression = /\n\s*$/ + +// Factory to escape characters. +function factory(options) { + return escape + + // Escape punctuation characters in a node’s value. + function escape(value, node, parent) { + var self = this + var gfm = options.gfm + var commonmark = options.commonmark + var pedantic = options.pedantic + var markers = commonmark ? [dot, rightParenthesis] : [dot] + var siblings = parent && parent.children + var index = siblings && siblings.indexOf(node) + var previous = siblings && siblings[index - 1] + var next = siblings && siblings[index + 1] + var length = value.length + var escapable = escapes(options) + var position = -1 + var queue = [] + var escaped = queue + var afterNewLine + var character + var wordCharBefore + var wordCharAfter + var offset + var replace + + if (previous) { + afterNewLine = text(previous) && blankExpression.test(previous.value) + } else { + afterNewLine = + !parent || parent.type === 'root' || parent.type === 'paragraph' + } + + while (++position < length) { + character = value.charAt(position) + replace = false + + if (character === '\n') { + afterNewLine = true + } else if ( + character === backslash || + character === graveAccent || + character === asterisk || + character === leftSquareBracket || + character === lessThan || + (character === ampersand && prefix(value.slice(position)) > 0) || + (character === rightSquareBracket && self.inLink) || + (gfm && character === tilde && value.charAt(position + 1) === tilde) || + (gfm && + character === verticalBar && + (self.inTable || alignment(value, position))) || + (character === underscore && + // Delegate leading/trailing underscores to the multinode version below. + position > 0 && + position < length - 1 && + (pedantic || + !alphanumeric(value.charAt(position - 1)) || + !alphanumeric(value.charAt(position + 1)))) || + (gfm && !self.inLink && character === colon && protocol(queue.join(''))) + ) { + replace = true + } else if (afterNewLine) { + if ( + character === greaterThan || + character === numberSign || + character === asterisk || + character === dash || + character === plusSign + ) { + replace = true + } else if (decimal(character)) { + offset = position + 1 + + while (offset < length) { + if (!decimal(value.charAt(offset))) { + break + } + + offset++ + } + + if (markers.indexOf(value.charAt(offset)) !== -1) { + next = value.charAt(offset + 1) + + if (!next || next === space || next === tab || next === lineFeed) { + queue.push(value.slice(position, offset)) + position = offset + character = value.charAt(position) + replace = true + } + } + } + } + + if (afterNewLine && !whitespace(character)) { + afterNewLine = false + } + + queue.push(replace ? one(character) : character) + } + + // Multi-node versions. + if (siblings && text(node)) { + // Check for an opening parentheses after a link-reference (which can be + // joined by white-space). + if (previous && previous.referenceType === shortcut) { + position = -1 + length = escaped.length + + while (++position < length) { + character = escaped[position] + + if (character === space || character === tab) { + continue + } + + if (character === leftParenthesis || character === colon) { + escaped[position] = one(character) + } + + break + } + + // If the current node is all spaces / tabs, preceded by a shortcut, + // and followed by a text starting with `(`, escape it. + if ( + text(next) && + position === length && + next.value.charAt(0) === leftParenthesis + ) { + escaped.push(backslash) + } + } + + // Ensure non-auto-links are not seen as links. This pattern needs to + // check the preceding nodes too. + if ( + gfm && + !self.inLink && + text(previous) && + value.charAt(0) === colon && + protocol(previous.value.slice(-6)) + ) { + escaped[0] = one(colon) + } + + // Escape ampersand if it would otherwise start an entity. + if ( + text(next) && + value.charAt(length - 1) === ampersand && + prefix(ampersand + next.value) !== 0 + ) { + escaped[escaped.length - 1] = one(ampersand) + } + + // Escape exclamation marks immediately followed by links. + if ( + next && + next.type === 'link' && + value.charAt(length - 1) === exclamationMark + ) { + escaped[escaped.length - 1] = one(exclamationMark) + } + + // Escape double tildes in GFM. + if ( + gfm && + text(next) && + value.charAt(length - 1) === tilde && + next.value.charAt(0) === tilde + ) { + escaped.splice(-1, 0, backslash) + } + + // Escape underscores, but not mid-word (unless in pedantic mode). + wordCharBefore = text(previous) && alphanumeric(previous.value.slice(-1)) + wordCharAfter = text(next) && alphanumeric(next.value.charAt(0)) + + if (length === 1) { + if ( + value === underscore && + (pedantic || !wordCharBefore || !wordCharAfter) + ) { + escaped.unshift(backslash) + } + } else { + if ( + value.charAt(0) === underscore && + (pedantic || !wordCharBefore || !alphanumeric(value.charAt(1))) + ) { + escaped.unshift(backslash) + } + + if ( + value.charAt(length - 1) === underscore && + (pedantic || + !wordCharAfter || + !alphanumeric(value.charAt(length - 2))) + ) { + escaped.splice(-1, 0, backslash) + } + } + } + + return escaped.join('') + + function one(character) { + return escapable.indexOf(character) === -1 + ? entities[character] + : backslash + character + } + } +} + +// Check if `index` in `value` is inside an alignment row. +function alignment(value, index) { + var start = value.lastIndexOf(lineFeed, index) + var end = value.indexOf(lineFeed, index) + var char + + end = end === -1 ? value.length : end + + while (++start < end) { + char = value.charAt(start) + + if ( + char !== colon && + char !== dash && + char !== space && + char !== verticalBar + ) { + return false + } + } + + return true +} + +// Check if `node` is a text node. +function text(node) { + return node && node.type === 'text' +} + +// Check if `value` ends in a protocol. +function protocol(value) { + var tail = value.slice(-6).toLowerCase() + return tail === mailto || tail.slice(-5) === https || tail.slice(-4) === http +} + + +/***/ }), + +/***/ 53395: +/***/ ((module) => { + +"use strict"; + + +module.exports = all + +// Visit all children of `parent`. +function all(parent) { + var self = this + var children = parent.children + var length = children.length + var results = [] + var index = -1 + + while (++index < length) { + results[index] = self.visit(children[index], parent) + } + + return results +} + + +/***/ }), + +/***/ 37624: +/***/ ((module) => { + +"use strict"; + + +module.exports = block + +var lineFeed = '\n' + +var blank = lineFeed + lineFeed +var triple = blank + lineFeed +var comment = blank + '<!---->' + blank + +// Stringify a block node with block children (e.g., `root` or `blockquote`). +// Knows about code following a list, or adjacent lists with similar bullets, +// and places an extra line feed between them. +function block(node) { + var self = this + var options = self.options + var fences = options.fences + var gap = options.commonmark ? comment : triple + var definitionGap = options.tightDefinitions ? lineFeed : blank + var values = [] + var children = node.children + var length = children.length + var index = -1 + var previous + var child + + while (++index < length) { + previous = child + child = children[index] + + if (previous) { + // A list preceding another list that are equally ordered, or a + // list preceding an indented code block, need a gap between them, + // so as not to see them as one list, or content of the list, + // respectively. + // + // In commonmark, only something that breaks both up can do that, + // so we opt for an empty, invisible comment. In other flavours, + // two blank lines are fine. + if ( + previous.type === 'list' && + ((child.type === 'list' && previous.ordered === child.ordered) || + (child.type === 'code' && !child.lang && !fences)) + ) { + values.push(gap) + } else if ( + previous.type === 'definition' && + child.type === 'definition' + ) { + values.push(definitionGap) + } else { + values.push(blank) + } + } + + values.push(self.visit(child, node)) + } + + return values.join('') +} + + +/***/ }), + +/***/ 39978: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var compact = __nccwpck_require__(62608) + +module.exports = compile + +// Stringify the given tree. +function compile() { + return this.visit(compact(this.tree, this.options.commonmark)) +} + + +/***/ }), + +/***/ 19744: +/***/ ((module) => { + +"use strict"; + + +module.exports = one + +function one(node, parent) { + var self = this + var visitors = self.visitors + + // Fail on unknown nodes. + if (typeof visitors[node.type] !== 'function') { + self.file.fail( + new Error( + 'Missing compiler for node of type `' + node.type + '`: `' + node + '`' + ), + node + ) + } + + return visitors[node.type].call(self, node, parent) +} + + +/***/ }), + +/***/ 71401: +/***/ ((module) => { + +"use strict"; + + +module.exports = orderedItems + +var lineFeed = '\n' +var dot = '.' + +var blank = lineFeed + lineFeed + +// Visit ordered list items. +// +// Starts the list with +// `node.start` and increments each following list item +// bullet by one: +// +// 2. foo +// 3. bar +// +// In `incrementListMarker: false` mode, does not increment +// each marker and stays on `node.start`: +// +// 1. foo +// 1. bar +function orderedItems(node) { + var self = this + var fn = self.visitors.listItem + var increment = self.options.incrementListMarker + var values = [] + var start = node.start + var children = node.children + var length = children.length + var index = -1 + var bullet + + start = start == null ? 1 : start + + while (++index < length) { + bullet = (increment ? start + index : start) + dot + values[index] = fn.call(self, children[index], node, index, bullet) + } + + return values.join(node.spread ? blank : lineFeed) +} + + +/***/ }), + +/***/ 367: +/***/ ((module) => { + +"use strict"; + + +module.exports = unorderedItems + +var lineFeed = '\n' + +var blank = lineFeed + lineFeed + +// Visit unordered list items. Uses `options.bullet` as each item’s bullet. +function unorderedItems(node) { + var self = this + var bullet = self.options.bullet + var fn = self.visitors.listItem + var children = node.children + var length = children.length + var index = -1 + var values = [] + + while (++index < length) { + values[index] = fn.call(self, children[index], node, index, bullet) + } + + return values.join(node.spread ? blank : lineFeed) +} + + +/***/ }), + +/***/ 17767: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var encode = __nccwpck_require__(94405) +var defaults = __nccwpck_require__(12979) +var escapeFactory = __nccwpck_require__(28428) +var identity = __nccwpck_require__(80614) + +module.exports = setOptions + +// Map of applicable enums. +var maps = { + entities: {true: true, false: true, numbers: true, escape: true}, + bullet: {'*': true, '-': true, '+': true}, + rule: {'-': true, _: true, '*': true}, + listItemIndent: {tab: true, mixed: true, 1: true}, + emphasis: {_: true, '*': true}, + strong: {_: true, '*': true}, + fence: {'`': true, '~': true} +} + +// Expose `validate`. +var validate = { + boolean: validateBoolean, + string: validateString, + number: validateNumber, + function: validateFunction +} + +// Set options. Does not overwrite previously set options. +function setOptions(options) { + var self = this + var current = self.options + var ruleRepetition + var key + + if (options == null) { + options = {} + } else if (typeof options === 'object') { + options = xtend(options) + } else { + throw new Error('Invalid value `' + options + '` for setting `options`') + } + + for (key in defaults) { + validate[typeof defaults[key]](options, key, current[key], maps[key]) + } + + ruleRepetition = options.ruleRepetition + + if (ruleRepetition && ruleRepetition < 3) { + raise(ruleRepetition, 'options.ruleRepetition') + } + + self.encode = encodeFactory(String(options.entities)) + self.escape = escapeFactory(options) + + self.options = options + + return self +} + +// Validate a value to be boolean. Defaults to `def`. Raises an exception with +// `context[name]` when not a boolean. +function validateBoolean(context, name, def) { + var value = context[name] + + if (value == null) { + value = def + } + + if (typeof value !== 'boolean') { + raise(value, 'options.' + name) + } + + context[name] = value +} + +// Validate a value to be boolean. Defaults to `def`. Raises an exception with +// `context[name]` when not a boolean. +function validateNumber(context, name, def) { + var value = context[name] + + if (value == null) { + value = def + } + + if (isNaN(value)) { + raise(value, 'options.' + name) + } + + context[name] = value +} + +// Validate a value to be in `map`. Defaults to `def`. Raises an exception +// with `context[name]` when not in `map`. +function validateString(context, name, def, map) { + var value = context[name] + + if (value == null) { + value = def + } + + value = String(value) + + if (!(value in map)) { + raise(value, 'options.' + name) + } + + context[name] = value +} + +// Validate a value to be function. Defaults to `def`. Raises an exception +// with `context[name]` when not a function. +function validateFunction(context, name, def) { + var value = context[name] + + if (value == null) { + value = def + } + + if (typeof value !== 'function') { + raise(value, 'options.' + name) + } + + context[name] = value +} + +// Factory to encode HTML entities. Creates a no-operation function when +// `type` is `'false'`, a function which encodes using named references when +// `type` is `'true'`, and a function which encodes using numbered references +// when `type` is `'numbers'`. +function encodeFactory(type) { + var options = {} + + if (type === 'false') { + return identity + } + + if (type === 'true') { + options.useNamedReferences = true + } + + if (type === 'escape') { + options.escapeOnly = true + options.useNamedReferences = true + } + + return wrapped + + // Encode HTML entities using the bound options. + function wrapped(value) { + return encode(value, options) + } +} + +// Throw an exception with in its `message` `value` and `name`. +function raise(value, name) { + throw new Error('Invalid value `' + value + '` for setting `' + name + '`') +} + + +/***/ }), + +/***/ 88864: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var entityPrefixLength = __nccwpck_require__(30876) + +module.exports = copy + +var ampersand = '&' + +var punctuationExppresion = /[-!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~_]/ + +// For shortcut and collapsed reference links, the contents is also an +// identifier, so we need to restore the original encoding and escaping +// that were present in the source string. +// +// This function takes the unescaped & unencoded value from shortcut’s +// child nodes and the identifier and encodes the former according to +// the latter. +function copy(value, identifier) { + var length = value.length + var count = identifier.length + var result = [] + var position = 0 + var index = 0 + var start + + while (index < length) { + // Take next non-punctuation characters from `value`. + start = index + + while (index < length && !punctuationExppresion.test(value.charAt(index))) { + index += 1 + } + + result.push(value.slice(start, index)) + + // Advance `position` to the next punctuation character. + while ( + position < count && + !punctuationExppresion.test(identifier.charAt(position)) + ) { + position += 1 + } + + // Take next punctuation characters from `identifier`. + start = position + + while ( + position < count && + punctuationExppresion.test(identifier.charAt(position)) + ) { + if (identifier.charAt(position) === ampersand) { + position += entityPrefixLength(identifier.slice(position)) + } + + position += 1 + } + + result.push(identifier.slice(start, position)) + + // Advance `index` to the next non-punctuation character. + while (index < length && punctuationExppresion.test(value.charAt(index))) { + index += 1 + } + } + + return result.join('') +} + + +/***/ }), + +/***/ 45917: +/***/ ((module) => { + +"use strict"; + + +module.exports = enclose + +var quotationMark = '"' +var apostrophe = "'" + +// There is currently no way to support nested delimiters across Markdown.pl, +// CommonMark, and GitHub (RedCarpet). The following code supports Markdown.pl +// and GitHub. +// CommonMark is not supported when mixing double- and single quotes inside a +// title. +function enclose(title) { + var delimiter = + title.indexOf(quotationMark) === -1 ? quotationMark : apostrophe + return delimiter + title + delimiter +} + + +/***/ }), + +/***/ 71490: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var count = __nccwpck_require__(33772) + +module.exports = enclose + +var leftParenthesis = '(' +var rightParenthesis = ')' +var lessThan = '<' +var greaterThan = '>' + +var expression = /\s/ + +// Wrap `url` in angle brackets when needed, or when +// forced. +// In links, images, and definitions, the URL part needs +// to be enclosed when it: +// +// - has a length of `0` +// - contains white-space +// - has more or less opening than closing parentheses +function enclose(uri, always) { + if ( + always || + uri.length === 0 || + expression.test(uri) || + count(uri, leftParenthesis) !== count(uri, rightParenthesis) + ) { + return lessThan + uri + greaterThan + } + + return uri +} + + +/***/ }), + +/***/ 78425: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var identity = __nccwpck_require__(80614) + +module.exports = enter + +// Shortcut and collapsed link references need no escaping and encoding during +// the processing of child nodes (it must be implied from identifier). +// +// This toggler turns encoding and escaping off for shortcut and collapsed +// references. +// +// Implies `enterLink`. +function enter(compiler, node) { + var encode = compiler.encode + var escape = compiler.escape + var exitLink = compiler.enterLink() + + if (node.referenceType !== 'shortcut' && node.referenceType !== 'collapsed') { + return exitLink + } + + compiler.escape = identity + compiler.encode = identity + + return exit + + function exit() { + compiler.encode = encode + compiler.escape = escape + exitLink() + } +} + + +/***/ }), + +/***/ 30876: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var decode = __nccwpck_require__(81085) + +module.exports = length + +var ampersand = '&' + +// Returns the length of HTML entity that is a prefix of the given string +// (excluding the ampersand), 0 if it does not start with an entity. +function length(value) { + var prefix + + /* istanbul ignore if - Currently also tested for at implemention, but we + * keep it here because that’s proper. */ + if (value.charAt(0) !== ampersand) { + return 0 + } + + prefix = value.split(ampersand, 2).join(ampersand) + + return prefix.length - decode(prefix).length +} + + +/***/ }), + +/***/ 80614: +/***/ ((module) => { + +"use strict"; + + +module.exports = identity + +function identity(value) { + return value +} + + +/***/ }), + +/***/ 99872: +/***/ ((module) => { + +"use strict"; + + +module.exports = label + +var leftSquareBracket = '[' +var rightSquareBracket = ']' + +var shortcut = 'shortcut' +var collapsed = 'collapsed' + +// Stringify a reference label. +// Because link references are easily, mistakingly, created (for example, +// `[foo]`), reference nodes have an extra property depicting how it looked in +// the original document, so stringification can cause minimal changes. +function label(node) { + var type = node.referenceType + + if (type === shortcut) { + return '' + } + + return ( + leftSquareBracket + + (type === collapsed ? '' : node.label || node.identifier) + + rightSquareBracket + ) +} + + +/***/ }), + +/***/ 13203: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) + +module.exports = pad + +var lineFeed = '\n' +var space = ' ' + +var tabSize = 4 + +// Pad `value` with `level * tabSize` spaces. Respects lines. Ignores empty +// lines. +function pad(value, level) { + var values = value.split(lineFeed) + var index = values.length + var padding = repeat(space, level * tabSize) + + while (index--) { + if (values[index].length !== 0) { + values[index] = padding + values[index] + } + } + + return values.join(lineFeed) +} + + +/***/ }), + +/***/ 91296: +/***/ ((module) => { + +"use strict"; + + +module.exports = blockquote + +var lineFeed = '\n' +var space = ' ' +var greaterThan = '>' + +function blockquote(node) { + var values = this.block(node).split(lineFeed) + var result = [] + var length = values.length + var index = -1 + var value + + while (++index < length) { + value = values[index] + result[index] = (value ? space : '') + value + } + + return greaterThan + result.join(lineFeed + greaterThan) +} + + +/***/ }), + +/***/ 52505: +/***/ ((module) => { + +"use strict"; + + +module.exports = lineBreak + +var backslash = '\\' +var lineFeed = '\n' +var space = ' ' + +var commonmark = backslash + lineFeed +var normal = space + space + lineFeed + +function lineBreak() { + return this.options.commonmark ? commonmark : normal +} + + +/***/ }), + +/***/ 69279: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var streak = __nccwpck_require__(18697) +var repeat = __nccwpck_require__(69626) +var pad = __nccwpck_require__(13203) + +module.exports = code + +var lineFeed = '\n' +var space = ' ' +var tilde = '~' +var graveAccent = '`' + +// Stringify code. +// Creates indented code when: +// +// - No language tag exists +// - Not in `fences: true` mode +// - A non-empty value exists +// +// Otherwise, GFM fenced code is created: +// +// ````markdown +// ```js +// foo(); +// ``` +// ```` +// +// When in ``fence: `~` `` mode, uses tildes as fences: +// +// ```markdown +// ~~~js +// foo(); +// ~~~ +// ``` +// +// Knows about internal fences: +// +// `````markdown +// ````markdown +// ```javascript +// foo(); +// ``` +// ```` +// ````` +function code(node, parent) { + var self = this + var value = node.value + var options = self.options + var marker = options.fence + var info = node.lang || '' + var fence + + if (info && node.meta) { + info += space + node.meta + } + + info = self.encode(self.escape(info, node)) + + // Without (needed) fences. + if ( + !info && + !options.fences && + value && + value.charAt(0) !== lineFeed && + value.charAt(value.length - 1) !== lineFeed + ) { + // Throw when pedantic, in a list item which isn’t compiled using a tab. + if ( + parent && + parent.type === 'listItem' && + options.listItemIndent !== 'tab' && + options.pedantic + ) { + self.file.fail( + 'Cannot indent code properly. See https://git.io/fxKR8', + node.position + ) + } + + return pad(value, 1) + } + + // Backticks in the info string don’t work with backtick fenced code. + // Backticks (and tildes) are fine in tilde fenced code. + if (marker === graveAccent && info.indexOf(graveAccent) !== -1) { + marker = tilde + } + + fence = repeat(marker, Math.max(streak(value, marker) + 1, 3)) + + return fence + info + lineFeed + value + lineFeed + fence +} + + +/***/ }), + +/***/ 82838: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var uri = __nccwpck_require__(71490) +var title = __nccwpck_require__(45917) + +module.exports = definition + +var space = ' ' +var colon = ':' +var leftSquareBracket = '[' +var rightSquareBracket = ']' + +// Stringify an URL definition. +// +// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see +// `encloseTitle()`). +// +// ```markdown +// [foo]: <foo at bar dot com> 'An "example" e-mail' +// ``` +function definition(node) { + var content = uri(node.url) + + if (node.title) { + content += space + title(node.title) + } + + return ( + leftSquareBracket + + (node.label || node.identifier) + + rightSquareBracket + + colon + + space + + content + ) +} + + +/***/ }), + +/***/ 26808: +/***/ ((module) => { + +"use strict"; + + +module.exports = strikethrough + +var tilde = '~' + +var fence = tilde + tilde + +function strikethrough(node) { + return fence + this.all(node).join('') + fence +} + + +/***/ }), + +/***/ 60250: +/***/ ((module) => { + +"use strict"; + + +module.exports = emphasis + +var underscore = '_' +var asterisk = '*' + +// Stringify an `emphasis`. +// +// The marker used is configurable through `emphasis`, which defaults to an +// underscore (`'_'`) but also accepts an asterisk (`'*'`): +// +// ```markdown +// *foo* +// ``` +// +// In `pedantic` mode, text which itself contains an underscore will cause the +// marker to default to an asterisk instead: +// +// ```markdown +// *foo_bar* +// ``` +function emphasis(node) { + var marker = this.options.emphasis + var content = this.all(node).join('') + + // When in pedantic mode, prevent using underscore as the marker when there + // are underscores in the content. + if ( + this.options.pedantic && + marker === underscore && + content.indexOf(marker) !== -1 + ) { + marker = asterisk + } + + return marker + content + marker +} + + +/***/ }), + +/***/ 63353: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) + +module.exports = heading + +var lineFeed = '\n' +var space = ' ' +var numberSign = '#' +var dash = '-' +var equalsTo = '=' + +// Stringify a heading. +// +// In `setext: true` mode and when `depth` is smaller than three, creates a +// setext header: +// +// ```markdown +// Foo +// === +// ``` +// +// Otherwise, an ATX header is generated: +// +// ```markdown +// ### Foo +// ``` +// +// In `closeAtx: true` mode, the header is closed with hashes: +// +// ```markdown +// ### Foo ### +// ``` +function heading(node) { + var self = this + var depth = node.depth + var setext = self.options.setext + var closeAtx = self.options.closeAtx + var content = self.all(node).join('') + var prefix + + if (setext && depth < 3) { + return ( + content + lineFeed + repeat(depth === 1 ? equalsTo : dash, content.length) + ) + } + + prefix = repeat(numberSign, node.depth) + + return prefix + space + content + (closeAtx ? space + prefix : '') +} + + +/***/ }), + +/***/ 48195: +/***/ ((module) => { + +"use strict"; + + +module.exports = html + +function html(node) { + return node.value +} + + +/***/ }), + +/***/ 70911: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var label = __nccwpck_require__(99872) + +module.exports = imageReference + +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var exclamationMark = '!' + +function imageReference(node) { + return ( + exclamationMark + + leftSquareBracket + + (this.encode(node.alt, node) || '') + + rightSquareBracket + + label(node) + ) +} + + +/***/ }), + +/***/ 10964: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var uri = __nccwpck_require__(71490) +var title = __nccwpck_require__(45917) + +module.exports = image + +var space = ' ' +var leftParenthesis = '(' +var rightParenthesis = ')' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var exclamationMark = '!' + +// Stringify an image. +// +// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see +// `encloseTitle()`). +// +// ```markdown +// ![foo](</fav icon.png> 'My "favourite" icon') +// ``` +// +// Supports named entities in `url`, `alt`, and `title` when in +// `settings.encode` mode. +function image(node) { + var self = this + var content = uri(self.encode(node.url || '', node)) + var exit = self.enterLink() + var alt = self.encode(self.escape(node.alt || '', node)) + + exit() + + if (node.title) { + content += space + title(self.encode(node.title, node)) + } + + return ( + exclamationMark + + leftSquareBracket + + alt + + rightSquareBracket + + leftParenthesis + + content + + rightParenthesis + ) +} + + +/***/ }), + +/***/ 83254: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var streak = __nccwpck_require__(18697) +var repeat = __nccwpck_require__(69626) + +module.exports = inlineCode + +var graveAccentChar = '`' +var lineFeed = 10 // '\n' +var space = 32 // ' ' +var graveAccent = 96 // '`' + +// Stringify inline code. +// +// Knows about internal ticks (`\``), and ensures one more tick is used to +// enclose the inline code: +// +// ````markdown +// ```foo ``bar`` baz``` +// ```` +// +// Even knows about inital and final ticks: +// +// ``markdown +// `` `foo `` +// `` foo` `` +// ``` +function inlineCode(node) { + var value = node.value + var ticks = repeat(graveAccentChar, streak(value, graveAccentChar) + 1) + var start = ticks + var end = ticks + var head = value.charCodeAt(0) + var tail = value.charCodeAt(value.length - 1) + var wrap = false + var index + var length + + if (head === graveAccent || tail === graveAccent) { + wrap = true + } else if (value.length > 2 && ws(head) && ws(tail)) { + index = 1 + length = value.length - 1 + + while (++index < length) { + if (!ws(value.charCodeAt(index))) { + wrap = true + break + } + } + } + + if (wrap) { + start += ' ' + end = ' ' + end + } + + return start + value + end +} + +function ws(code) { + return code === lineFeed || code === space +} + + +/***/ }), + +/***/ 17271: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var copy = __nccwpck_require__(88864) +var label = __nccwpck_require__(99872) + +module.exports = linkReference + +var leftSquareBracket = '[' +var rightSquareBracket = ']' + +var shortcut = 'shortcut' +var collapsed = 'collapsed' + +function linkReference(node) { + var self = this + var type = node.referenceType + var exit = self.enterLinkReference(self, node) + var value = self.all(node).join('') + + exit() + + if (type === shortcut || type === collapsed) { + value = copy(value, node.label || node.identifier) + } + + return leftSquareBracket + value + rightSquareBracket + label(node) +} + + +/***/ }), + +/***/ 97556: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var uri = __nccwpck_require__(71490) +var title = __nccwpck_require__(45917) + +module.exports = link + +var space = ' ' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var leftParenthesis = '(' +var rightParenthesis = ')' + +// Expression for a protocol: +// See <https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Generic_syntax>. +var protocol = /^[a-z][a-z+.-]+:\/?/i + +// Stringify a link. +// +// When no title exists, the compiled `children` equal `url`, and `url` starts +// with a protocol, an auto link is created: +// +// ```markdown +// <http://example.com> +// ``` +// +// Otherwise, is smart about enclosing `url` (see `encloseURI()`) and `title` +// (see `encloseTitle()`). +// ``` +// +// ```markdown +// [foo](<foo at bar dot com> 'An "example" e-mail') +// ``` +// +// Supports named entities in the `url` and `title` when in `settings.encode` +// mode. +function link(node) { + var self = this + var content = self.encode(node.url || '', node) + var exit = self.enterLink() + var escaped = self.encode(self.escape(node.url || '', node)) + var value = self.all(node).join('') + + exit() + + if (node.title == null && protocol.test(content) && escaped === value) { + // Backslash escapes do not work in autolinks, so we do not escape. + return uri(self.encode(node.url), true) + } + + content = uri(content) + + if (node.title) { + content += space + title(self.encode(self.escape(node.title, node), node)) + } + + return ( + leftSquareBracket + + value + + rightSquareBracket + + leftParenthesis + + content + + rightParenthesis + ) +} + + +/***/ }), + +/***/ 18141: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) +var pad = __nccwpck_require__(13203) + +module.exports = listItem + +var lineFeed = '\n' +var space = ' ' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var lowercaseX = 'x' + +var ceil = Math.ceil +var blank = lineFeed + lineFeed + +var tabSize = 4 + +// Stringify a list item. +// +// Prefixes the content with a checked checkbox when `checked: true`: +// +// ```markdown +// [x] foo +// ``` +// +// Prefixes the content with an unchecked checkbox when `checked: false`: +// +// ```markdown +// [ ] foo +// ``` +function listItem(node, parent, position, bullet) { + var self = this + var style = self.options.listItemIndent + var marker = bullet || self.options.bullet + var spread = node.spread == null ? true : node.spread + var checked = node.checked + var children = node.children + var length = children.length + var values = [] + var index = -1 + var value + var indent + var spacing + + while (++index < length) { + values[index] = self.visit(children[index], node) + } + + value = values.join(spread ? blank : lineFeed) + + if (typeof checked === 'boolean') { + // Note: I’d like to be able to only add the space between the check and + // the value, but unfortunately github does not support empty list-items + // with a checkbox :( + value = + leftSquareBracket + + (checked ? lowercaseX : space) + + rightSquareBracket + + space + + value + } + + if (style === '1' || (style === 'mixed' && value.indexOf(lineFeed) === -1)) { + indent = marker.length + 1 + spacing = space + } else { + indent = ceil((marker.length + 1) / tabSize) * tabSize + spacing = repeat(space, indent - marker.length) + } + + return value + ? marker + spacing + pad(value, indent / tabSize).slice(indent) + : marker +} + + +/***/ }), + +/***/ 82878: +/***/ ((module) => { + +"use strict"; + + +module.exports = list + +function list(node) { + var fn = node.ordered ? this.visitOrderedItems : this.visitUnorderedItems + return fn.call(this, node) +} + + +/***/ }), + +/***/ 66601: +/***/ ((module) => { + +"use strict"; + + +module.exports = paragraph + +function paragraph(node) { + return this.all(node).join('') +} + + +/***/ }), + +/***/ 71342: +/***/ ((module) => { + +"use strict"; + + +module.exports = root + +var lineFeed = '\n' + +// Stringify a root. +// Adds a final newline to ensure valid POSIX files. */ +function root(node) { + var doc = this.block(node) + + if (doc.charAt(doc.length - 1) !== lineFeed) { + doc += lineFeed + } + + return doc +} + + +/***/ }), + +/***/ 33986: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) + +module.exports = strong + +// Stringify a `strong`. +// +// The marker used is configurable by `strong`, which defaults to an asterisk +// (`'*'`) but also accepts an underscore (`'_'`): +// +// ```markdown +// __foo__ +// ``` +function strong(node) { + var marker = repeat(this.options.strong, 2) + return marker + this.all(node).join('') + marker +} + + +/***/ }), + +/***/ 10730: +/***/ ((module) => { + +"use strict"; + + +module.exports = tableCell + +var lineFeed = /\r?\n/g + +function tableCell(node) { + return this.all(node).join('').replace(lineFeed, ' ') +} + + +/***/ }), + +/***/ 88664: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var markdownTable = __nccwpck_require__(90906) + +module.exports = table + +// Stringify table. +// +// Creates a fenced table. +// The table has aligned delimiters by default, but not in +// `tablePipeAlign: false`: +// +// ```markdown +// | Header 1 | Header 2 | +// | :-: | - | +// | Alpha | Bravo | +// ``` +// +// The table is spaced by default, but not in `tableCellPadding: false`: +// +// ```markdown +// |Foo|Bar| +// |:-:|---| +// |Baz|Qux| +// ``` +function table(node) { + var self = this + var options = self.options + var padding = options.tableCellPadding + var alignDelimiters = options.tablePipeAlign + var stringLength = options.stringLength + var rows = node.children + var index = rows.length + var exit = self.enterTable() + var result = [] + + while (index--) { + result[index] = self.all(rows[index]) + } + + exit() + + return markdownTable(result, { + align: node.align, + alignDelimiters: alignDelimiters, + padding: padding, + stringLength: stringLength + }) +} + + +/***/ }), + +/***/ 16332: +/***/ ((module) => { + +"use strict"; + + +module.exports = text + +// Stringify text. +// Supports named entities in `settings.encode: true` mode: +// +// ```markdown +// AT&amp;T +// ``` +// +// Supports numbered entities in `settings.encode: numbers` mode: +// +// ```markdown +// AT&#x26;T +// ``` +function text(node, parent) { + return this.encode(this.escape(node.value, node, parent), node) +} + + +/***/ }), + +/***/ 74416: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(69626) + +module.exports = thematic + +var space = ' ' + +// Stringify a `thematic-break`. +// The character used is configurable through `rule`: (`'_'`): +// +// ```markdown +// ___ +// ``` +// +// The number of repititions is defined through `ruleRepetition` (`6`): +// +// ```markdown +// ****** +// ``` +// +// Whether spaces delimit each character, is configured through `ruleSpaces` +// (`true`): +// ```markdown +// * * * +// ``` +function thematic() { + var options = this.options + var rule = repeat(options.rule, options.ruleRepetition) + return options.ruleSpaces ? rule.split('').join(space) : rule +} + + +/***/ }), + +/***/ 63280: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var unified = __nccwpck_require__(9507) +var parse = __nccwpck_require__(35212) +var stringify = __nccwpck_require__(36686) + +module.exports = unified().use(parse).use(stringify).freeze() + + +/***/ }), + +/***/ 69626: +/***/ ((module) => { + +"use strict"; +/*! + * repeat-string <https://github.com/jonschlinkert/repeat-string> + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + + + +/** + * Results cache + */ + +var res = ''; +var cache; + +/** + * Expose `repeat` + */ + +module.exports = repeat; + +/** + * Repeat the given `string` the specified `number` + * of times. + * + * **Example:** + * + * ```js + * var repeat = require('repeat-string'); + * repeat('A', 5); + * //=> AAAAA + * ``` + * + * @param {String} `string` The string to repeat + * @param {Number} `number` The number of times to repeat the string + * @return {String} Repeated string + * @api public + */ + +function repeat(str, num) { + if (typeof str !== 'string') { + throw new TypeError('expected a string'); + } + + // cover common, quick use cases + if (num === 1) return str; + if (num === 2) return str + str; + + var max = str.length * num; + if (cache !== str || typeof cache === 'undefined') { + cache = str; + res = ''; + } else if (res.length >= max) { + return res.substr(0, max); + } + + while (max > res.length && num > 1) { + if (num & 1) { + res += str; + } + + num >>= 1; + str += str; + } + + res += str; + res = res.substr(0, max); + return res; +} + + +/***/ }), + +/***/ 89227: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var async = __nccwpck_require__(49091); +async.core = __nccwpck_require__(10069); +async.isCore = __nccwpck_require__(35522); +async.sync = __nccwpck_require__(12785); + +module.exports = async; + + +/***/ }), + +/***/ 49091: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var fs = __nccwpck_require__(57147); +var path = __nccwpck_require__(71017); +var caller = __nccwpck_require__(73881); +var nodeModulesPaths = __nccwpck_require__(5507); +var normalizeOptions = __nccwpck_require__(55415); +var isCore = __nccwpck_require__(18746); + +var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; + +var defaultIsFile = function isFile(file, cb) { + fs.stat(file, function (err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; + +var defaultIsDir = function isDirectory(dir, cb) { + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; + +var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function (realpathErr, realPath) { + if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); + else cb(null, realpathErr ? x : realPath); + }); +}; + +var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { + if (opts && opts.preserveSymlinks === false) { + realpath(x, cb); + } else { + cb(null, x); + } +}; + +var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) { + readFile(pkgfile, function (readFileErr, body) { + if (readFileErr) cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } + }); +}; + +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; + +module.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options; + if (typeof options === 'function') { + cb = opts; + opts = {}; + } + if (typeof x !== 'string') { + var err = new TypeError('Path must be a string.'); + return process.nextTick(function () { + cb(err); + }); + } + + opts = normalizeOptions(x, opts); + + var isFile = opts.isFile || defaultIsFile; + var isDirectory = opts.isDirectory || defaultIsDir; + var readFile = opts.readFile || fs.readFile; + var realpath = opts.realpath || defaultRealpath; + var readPackage = opts.readPackage || defaultReadPackage; + if (opts.readFile && opts.readPackage) { + var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.'); + return process.nextTick(function () { + cb(conflictErr); + }); + } + var packageIterator = opts.packageIterator; + + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; + + opts.paths = opts.paths || []; + + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = path.resolve(basedir); + + maybeRealpath( + realpath, + absoluteStart, + opts, + function (err, realStart) { + if (err) cb(err); + else init(realStart); + } + ); + + var res; + function init(basedir) { + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + res = path.resolve(basedir, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + if ((/\/$/).test(x) && res === basedir) { + loadAsDirectory(res, opts.package, onfile); + } else loadAsFile(res, opts.package, onfile); + } else if (includeCoreModules && isCore(x)) { + return cb(null, x); + } else loadNodeModules(x, basedir, function (err, n, pkg) { + if (err) cb(err); + else if (n) { + return maybeRealpath(realpath, n, opts, function (err, realN) { + if (err) { + cb(err); + } else { + cb(null, realN, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); + } + + function onfile(err, m, pkg) { + if (err) cb(err); + else if (m) cb(null, m, pkg); + else loadAsDirectory(res, function (err, d, pkg) { + if (err) cb(err); + else if (d) { + maybeRealpath(realpath, d, opts, function (err, realD) { + if (err) { + cb(err); + } else { + cb(null, realD, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); + } + + function loadAsFile(x, thePackage, callback) { + var loadAsFilePackage = thePackage; + var cb = callback; + if (typeof loadAsFilePackage === 'function') { + cb = loadAsFilePackage; + loadAsFilePackage = undefined; + } + + var exts = [''].concat(extensions); + load(exts, x, loadAsFilePackage); + + function load(exts, x, loadPackage) { + if (exts.length === 0) return cb(null, undefined, loadPackage); + var file = x + exts[0]; + + var pkg = loadPackage; + if (pkg) onpkg(null, pkg); + else loadpkg(path.dirname(file), onpkg); + + function onpkg(err, pkg_, dir) { + pkg = pkg_; + if (err) return cb(err); + if (dir && pkg && opts.pathFilter) { + var rfile = path.relative(dir, file); + var rel = rfile.slice(0, rfile.length - exts[0].length); + var r = opts.pathFilter(pkg, x, rel); + if (r) return load( + [''].concat(extensions.slice()), + path.resolve(dir, r), + pkg + ); + } + isFile(file, onex); + } + function onex(err, ex) { + if (err) return cb(err); + if (ex) return cb(null, file, pkg); + load(exts.slice(1), x, pkg); + } + } + } + + function loadpkg(dir, cb) { + if (dir === '' || dir === '/') return cb(null); + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return cb(null); + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); + + maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return loadpkg(path.dirname(dir), cb); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + // on err, ex is false + if (!ex) return loadpkg(path.dirname(dir), cb); + + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) cb(err); + + var pkg = pkgParam; + + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + cb(null, pkg, dir); + }); + }); + }); + } + + function loadAsDirectory(x, loadAsDirectoryPackage, callback) { + var cb = callback; + var fpkg = loadAsDirectoryPackage; + if (typeof fpkg === 'function') { + cb = fpkg; + fpkg = opts.package; + } + + maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return cb(unwrapErr); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + if (err) return cb(err); + if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); + + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) return cb(err); + + var pkg = pkgParam; + + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + return cb(mainError); + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); + + var dir = path.resolve(x, pkg.main); + loadAsDirectory(dir, pkg, function (err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + loadAsFile(path.join(x, 'index'), pkg, cb); + }); + }); + return; + } + + loadAsFile(path.join(x, '/index'), pkg, cb); + }); + }); + }); + } + + function processDirs(cb, dirs) { + if (dirs.length === 0) return cb(null, undefined); + var dir = dirs[0]; + + isDirectory(path.dirname(dir), isdir); + + function isdir(err, isdir) { + if (err) return cb(err); + if (!isdir) return processDirs(cb, dirs.slice(1)); + loadAsFile(dir, opts.package, onfile); + } + + function onfile(err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + loadAsDirectory(dir, opts.package, ondir); + } + + function ondir(err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + processDirs(cb, dirs.slice(1)); + } + } + function loadNodeModules(x, start, cb) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + processDirs( + cb, + packageIterator ? packageIterator(x, start, thunk, opts) : thunk() + ); + } +}; + + +/***/ }), + +/***/ 73881: +/***/ ((module) => { + +module.exports = function () { + // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi + var origPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function (_, stack) { return stack; }; + var stack = (new Error()).stack; + Error.prepareStackTrace = origPrepareStackTrace; + return stack[2].getFileName(); +}; + + +/***/ }), + +/***/ 10069: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; + +function specifierIncluded(specifier) { + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + + for (var i = 0; i < 3; ++i) { + var cur = parseInt(current[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } else if (op === '>=') { + return cur >= ver; + } else { + return false; + } + } + return op === '>='; +} + +function matchesRange(range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { return false; } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(specifiers[i])) { return false; } + } + return true; +} + +function versionIncluded(specifierValue) { + if (typeof specifierValue === 'boolean') { return specifierValue; } + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(specifierValue[i])) { return true; } + } + return false; + } + return matchesRange(specifierValue); +} + +var data = __nccwpck_require__(98398); + +var core = {}; +for (var mod in data) { // eslint-disable-line no-restricted-syntax + if (Object.prototype.hasOwnProperty.call(data, mod)) { + core[mod] = versionIncluded(data[mod]); + } +} +module.exports = core; + + +/***/ }), + +/***/ 35522: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isCoreModule = __nccwpck_require__(18746); + +module.exports = function isCore(x) { + return isCoreModule(x); +}; + + +/***/ }), + +/***/ 5507: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var path = __nccwpck_require__(71017); +var parse = path.parse || __nccwpck_require__(42742); + +var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { + var prefix = '/'; + if ((/^([A-Za-z]:)/).test(absoluteStart)) { + prefix = ''; + } else if ((/^\\\\/).test(absoluteStart)) { + prefix = '\\\\'; + } + + var paths = [absoluteStart]; + var parsed = parse(absoluteStart); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } + + return paths.reduce(function (dirs, aPath) { + return dirs.concat(modules.map(function (moduleDir) { + return path.resolve(prefix, aPath, moduleDir); + })); + }, []); +}; + +module.exports = function nodeModulesPaths(start, opts, request) { + var modules = opts && opts.moduleDirectory + ? [].concat(opts.moduleDirectory) + : ['node_modules']; + + if (opts && typeof opts.paths === 'function') { + return opts.paths( + request, + start, + function () { return getNodeModulesDirs(start, modules); }, + opts + ); + } + + var dirs = getNodeModulesDirs(start, modules); + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; +}; + + +/***/ }), + +/***/ 55415: +/***/ ((module) => { + +module.exports = function (x, opts) { + /** + * This file is purposefully a passthrough. It's expected that third-party + * environments will override it at runtime in order to inject special logic + * into `resolve` (by manipulating the options). One such example is the PnP + * code path in Yarn. + */ + + return opts || {}; +}; + + +/***/ }), + +/***/ 12785: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isCore = __nccwpck_require__(18746); +var fs = __nccwpck_require__(57147); +var path = __nccwpck_require__(71017); +var caller = __nccwpck_require__(73881); +var nodeModulesPaths = __nccwpck_require__(5507); +var normalizeOptions = __nccwpck_require__(55415); + +var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + +var defaultIsFile = function isFile(file) { + try { + var stat = fs.statSync(file); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return stat.isFile() || stat.isFIFO(); +}; + +var defaultIsDir = function isDirectory(dir) { + try { + var stat = fs.statSync(dir); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return stat.isDirectory(); +}; + +var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== 'ENOENT') { + throw realpathErr; + } + } + return x; +}; + +var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { + if (opts && opts.preserveSymlinks === false) { + return realpathSync(x); + } + return x; +}; + +var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) {} +}; + +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; + +module.exports = function resolveSync(x, options) { + if (typeof x !== 'string') { + throw new TypeError('Path must be a string.'); + } + var opts = normalizeOptions(x, options); + + var isFile = opts.isFile || defaultIsFile; + var readFileSync = opts.readFileSync || fs.readFileSync; + var isDirectory = opts.isDirectory || defaultIsDir; + var realpathSync = opts.realpathSync || defaultRealpathSync; + var readPackageSync = opts.readPackageSync || defaultReadPackageSync; + if (opts.readFileSync && opts.readPackageSync) { + throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.'); + } + var packageIterator = opts.packageIterator; + + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; + + opts.paths = opts.paths || []; + + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); + + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + var res = path.resolve(absoluteStart, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + var m = loadAsFileSync(res) || loadAsDirectorySync(res); + if (m) return maybeRealpathSync(realpathSync, m, opts); + } else if (includeCoreModules && isCore(x)) { + return x; + } else { + var n = loadNodeModulesSync(x, absoluteStart); + if (n) return maybeRealpathSync(realpathSync, n, opts); + } + + var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + err.code = 'MODULE_NOT_FOUND'; + throw err; + + function loadAsFileSync(x) { + var pkg = loadpkg(path.dirname(x)); + + if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { + var rfile = path.relative(pkg.dir, x); + var r = opts.pathFilter(pkg.pkg, x, rfile); + if (r) { + x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign + } + } + + if (isFile(x)) { + return x; + } + + for (var i = 0; i < extensions.length; i++) { + var file = x + extensions[i]; + if (isFile(file)) { + return file; + } + } + } + + function loadpkg(dir) { + if (dir === '' || dir === '/') return; + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return; + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; + + var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json'); + + if (!isFile(pkgfile)) { + return loadpkg(path.dirname(dir)); + } + + var pkg = readPackageSync(readFileSync, pkgfile); + + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment + } + + return { pkg: pkg, dir: dir }; + } + + function loadAsDirectorySync(x) { + var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json'); + if (isFile(pkgfile)) { + try { + var pkg = readPackageSync(readFileSync, pkgfile); + } catch (e) {} + + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment + } + + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + throw mainError; + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + try { + var m = loadAsFileSync(path.resolve(x, pkg.main)); + if (m) return m; + var n = loadAsDirectorySync(path.resolve(x, pkg.main)); + if (n) return n; + } catch (e) {} + } + } + + return loadAsFileSync(path.join(x, '/index')); + } + + function loadNodeModulesSync(x, start) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); + + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + if (isDirectory(path.dirname(dir))) { + var m = loadAsFileSync(dir); + if (m) return m; + var n = loadAsDirectorySync(dir); + if (n) return n; + } + } + } +}; + + +/***/ }), + +/***/ 85314: +/***/ ((module) => { + +"use strict"; + +module.exports = rfdc + +function copyBuffer (cur) { + if (cur instanceof Buffer) { + return Buffer.from(cur) + } + + return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length) +} + +function rfdc (opts) { + opts = opts || {} + + if (opts.circles) return rfdcCircles(opts) + return opts.proto ? cloneProto : clone + + function cloneArray (a, fn) { + var keys = Object.keys(a) + var a2 = new Array(keys.length) + for (var i = 0; i < keys.length; i++) { + var k = keys[i] + var cur = a[k] + if (typeof cur !== 'object' || cur === null) { + a2[k] = cur + } else if (cur instanceof Date) { + a2[k] = new Date(cur) + } else if (ArrayBuffer.isView(cur)) { + a2[k] = copyBuffer(cur) + } else { + a2[k] = fn(cur) + } + } + return a2 + } + + function clone (o) { + if (typeof o !== 'object' || o === null) return o + if (o instanceof Date) return new Date(o) + if (Array.isArray(o)) return cloneArray(o, clone) + if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone)) + if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone)) + var o2 = {} + for (var k in o) { + if (Object.hasOwnProperty.call(o, k) === false) continue + var cur = o[k] + if (typeof cur !== 'object' || cur === null) { + o2[k] = cur + } else if (cur instanceof Date) { + o2[k] = new Date(cur) + } else if (cur instanceof Map) { + o2[k] = new Map(cloneArray(Array.from(cur), clone)) + } else if (cur instanceof Set) { + o2[k] = new Set(cloneArray(Array.from(cur), clone)) + } else if (ArrayBuffer.isView(cur)) { + o2[k] = copyBuffer(cur) + } else { + o2[k] = clone(cur) + } + } + return o2 + } + + function cloneProto (o) { + if (typeof o !== 'object' || o === null) return o + if (o instanceof Date) return new Date(o) + if (Array.isArray(o)) return cloneArray(o, cloneProto) + if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto)) + if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto)) + var o2 = {} + for (var k in o) { + var cur = o[k] + if (typeof cur !== 'object' || cur === null) { + o2[k] = cur + } else if (cur instanceof Date) { + o2[k] = new Date(cur) + } else if (cur instanceof Map) { + o2[k] = new Map(cloneArray(Array.from(cur), cloneProto)) + } else if (cur instanceof Set) { + o2[k] = new Set(cloneArray(Array.from(cur), cloneProto)) + } else if (ArrayBuffer.isView(cur)) { + o2[k] = copyBuffer(cur) + } else { + o2[k] = cloneProto(cur) + } + } + return o2 + } +} + +function rfdcCircles (opts) { + var refs = [] + var refsNew = [] + + return opts.proto ? cloneProto : clone + + function cloneArray (a, fn) { + var keys = Object.keys(a) + var a2 = new Array(keys.length) + for (var i = 0; i < keys.length; i++) { + var k = keys[i] + var cur = a[k] + if (typeof cur !== 'object' || cur === null) { + a2[k] = cur + } else if (cur instanceof Date) { + a2[k] = new Date(cur) + } else if (ArrayBuffer.isView(cur)) { + a2[k] = copyBuffer(cur) + } else { + var index = refs.indexOf(cur) + if (index !== -1) { + a2[k] = refsNew[index] + } else { + a2[k] = fn(cur) + } + } + } + return a2 + } + + function clone (o) { + if (typeof o !== 'object' || o === null) return o + if (o instanceof Date) return new Date(o) + if (Array.isArray(o)) return cloneArray(o, clone) + if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone)) + if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone)) + var o2 = {} + refs.push(o) + refsNew.push(o2) + for (var k in o) { + if (Object.hasOwnProperty.call(o, k) === false) continue + var cur = o[k] + if (typeof cur !== 'object' || cur === null) { + o2[k] = cur + } else if (cur instanceof Date) { + o2[k] = new Date(cur) + } else if (cur instanceof Map) { + o2[k] = new Map(cloneArray(Array.from(cur), clone)) + } else if (cur instanceof Set) { + o2[k] = new Set(cloneArray(Array.from(cur), clone)) + } else if (ArrayBuffer.isView(cur)) { + o2[k] = copyBuffer(cur) + } else { + var i = refs.indexOf(cur) + if (i !== -1) { + o2[k] = refsNew[i] + } else { + o2[k] = clone(cur) + } + } + } + refs.pop() + refsNew.pop() + return o2 + } + + function cloneProto (o) { + if (typeof o !== 'object' || o === null) return o + if (o instanceof Date) return new Date(o) + if (Array.isArray(o)) return cloneArray(o, cloneProto) + if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto)) + if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto)) + var o2 = {} + refs.push(o) + refsNew.push(o2) + for (var k in o) { + var cur = o[k] + if (typeof cur !== 'object' || cur === null) { + o2[k] = cur + } else if (cur instanceof Date) { + o2[k] = new Date(cur) + } else if (cur instanceof Map) { + o2[k] = new Map(cloneArray(Array.from(cur), cloneProto)) + } else if (cur instanceof Set) { + o2[k] = new Set(cloneArray(Array.from(cur), cloneProto)) + } else if (ArrayBuffer.isView(cur)) { + o2[k] = copyBuffer(cur) + } else { + var i = refs.indexOf(cur) + if (i !== -1) { + o2[k] = refsNew[i] + } else { + o2[k] = cloneProto(cur) + } + } + } + refs.pop() + refsNew.pop() + return o2 + } +} + + +/***/ }), + +/***/ 53118: +/***/ ((module, exports, __nccwpck_require__) => { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __nccwpck_require__(14300) +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ 5693: +/***/ ((module, exports) => { + +"use strict"; + + +const stringify = configure() + +// @ts-expect-error +stringify.configure = configure +// @ts-expect-error +stringify.stringify = stringify + +// @ts-expect-error +stringify.default = stringify + +// @ts-expect-error used for named export +exports.stringify = stringify +// @ts-expect-error used for named export +exports.configure = configure + +module.exports = stringify + +// eslint-disable-next-line +const strEscapeSequencesRegExp = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/ +// eslint-disable-next-line +const strEscapeSequencesReplacer = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/g + +// Escaped special characters. Use empty strings to fill up unused entries. +const meta = [ + '\\u0000', '\\u0001', '\\u0002', '\\u0003', '\\u0004', + '\\u0005', '\\u0006', '\\u0007', '\\b', '\\t', + '\\n', '\\u000b', '\\f', '\\r', '\\u000e', + '\\u000f', '\\u0010', '\\u0011', '\\u0012', '\\u0013', + '\\u0014', '\\u0015', '\\u0016', '\\u0017', '\\u0018', + '\\u0019', '\\u001a', '\\u001b', '\\u001c', '\\u001d', + '\\u001e', '\\u001f', '', '', '\\"', + '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '\\\\' +] + +function escapeFn (str) { + if (str.length === 2) { + const charCode = str.charCodeAt(1) + return `${str[0]}\\u${charCode.toString(16)}` + } + const charCode = str.charCodeAt(0) + return meta.length > charCode + ? meta[charCode] + : `\\u${charCode.toString(16)}` +} + +// Escape C0 control characters, double quotes, the backslash and every code +// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF. +function strEscape (str) { + // Some magic numbers that worked out fine while benchmarking with v8 8.0 + if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) { + return str + } + if (str.length > 100) { + return str.replace(strEscapeSequencesReplacer, escapeFn) + } + let result = '' + let last = 0 + for (let i = 0; i < str.length; i++) { + const point = str.charCodeAt(i) + if (point === 34 || point === 92 || point < 32) { + result += `${str.slice(last, i)}${meta[point]}` + last = i + 1 + } else if (point >= 0xd800 && point <= 0xdfff) { + if (point <= 0xdbff && i + 1 < str.length) { + const point = str.charCodeAt(i + 1) + if (point >= 0xdc00 && point <= 0xdfff) { + i++ + continue + } + } + result += `${str.slice(last, i)}${`\\u${point.toString(16)}`}` + last = i + 1 + } + } + result += str.slice(last) + return result +} + +function insertSort (array) { + // Insertion sort is very efficient for small input sizes but it has a bad + // worst case complexity. Thus, use native array sort for bigger values. + if (array.length > 2e2) { + return array.sort() + } + for (let i = 1; i < array.length; i++) { + const currentValue = array[i] + let position = i + while (position !== 0 && array[position - 1] > currentValue) { + array[position] = array[position - 1] + position-- + } + array[position] = currentValue + } + return array +} + +const typedArrayPrototypeGetSymbolToStringTag = + Object.getOwnPropertyDescriptor( + Object.getPrototypeOf( + Object.getPrototypeOf( + new Uint8Array() + ) + ), + Symbol.toStringTag + ).get + +function isTypedArrayWithEntries (value) { + return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0 +} + +function stringifyTypedArray (array, separator, maximumBreadth) { + if (array.length < maximumBreadth) { + maximumBreadth = array.length + } + const whitespace = separator === ',' ? '' : ' ' + let res = `"0":${whitespace}${array[0]}` + for (let i = 1; i < maximumBreadth; i++) { + res += `${separator}"${i}":${whitespace}${array[i]}` + } + return res +} + +function getCircularValueOption (options) { + if (options && Object.prototype.hasOwnProperty.call(options, 'circularValue')) { + var circularValue = options.circularValue + if (typeof circularValue === 'string') { + return `"${circularValue}"` + } + if (circularValue == null) { + return circularValue + } + if (circularValue === Error || circularValue === TypeError) { + return { + toString () { + throw new TypeError('Converting circular structure to JSON') + } + } + } + throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined') + } + return '"[Circular]"' +} + +function getBooleanOption (options, key) { + if (options && Object.prototype.hasOwnProperty.call(options, key)) { + var value = options[key] + if (typeof value !== 'boolean') { + throw new TypeError(`The "${key}" argument must be of type boolean`) + } + } + return value === undefined ? true : value +} + +function getPositiveIntegerOption (options, key) { + if (options && Object.prototype.hasOwnProperty.call(options, key)) { + var value = options[key] + if (typeof value !== 'number') { + throw new TypeError(`The "${key}" argument must be of type number`) + } + if (!Number.isInteger(value)) { + throw new TypeError(`The "${key}" argument must be an integer`) + } + if (value < 1) { + throw new RangeError(`The "${key}" argument must be >= 1`) + } + } + return value === undefined ? Infinity : value +} + +function getItemCount (number) { + if (number === 1) { + return '1 item' + } + return `${number} items` +} + +function getUniqueReplacerSet (replacerArray) { + const replacerSet = new Set() + for (const value of replacerArray) { + if (typeof value === 'string') { + replacerSet.add(value) + } else if (typeof value === 'number') { + replacerSet.add(String(value)) + } + } + return replacerSet +} + +function configure (options) { + const circularValue = getCircularValueOption(options) + const bigint = getBooleanOption(options, 'bigint') + const deterministic = getBooleanOption(options, 'deterministic') + const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth') + const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth') + + function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) { + let value = parent[key] + + if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') { + value = value.toJSON(key) + } + value = replacer.call(parent, key, value) + + switch (typeof value) { + case 'string': + return `"${strEscape(value)}"` + case 'object': { + if (value === null) { + return 'null' + } + if (stack.indexOf(value) !== -1) { + return circularValue + } + + let res = '' + let join = ',' + const originalIndentation = indentation + + if (Array.isArray(value)) { + if (value.length === 0) { + return '[]' + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"' + } + stack.push(value) + if (spacer !== '') { + indentation += spacer + res += `\n${indentation}` + join = `,\n${indentation}` + } + const maximumValuesToStringify = Math.min(value.length, maximumBreadth) + let i = 0 + for (; i < maximumValuesToStringify - 1; i++) { + const tmp = stringifyFnReplacer(i, value, stack, replacer, spacer, indentation) + res += tmp !== undefined ? tmp : 'null' + res += join + } + const tmp = stringifyFnReplacer(i, value, stack, replacer, spacer, indentation) + res += tmp !== undefined ? tmp : 'null' + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1 + res += `${join}"... ${getItemCount(removedKeys)} not stringified"` + } + if (spacer !== '') { + res += `\n${originalIndentation}` + } + stack.pop() + return `[${res}]` + } + + let keys = Object.keys(value) + const keyLength = keys.length + if (keyLength === 0) { + return '{}' + } + if (maximumDepth < stack.length + 1) { + return '"[Object]"' + } + let whitespace = '' + let separator = '' + if (spacer !== '') { + indentation += spacer + join = `,\n${indentation}` + whitespace = ' ' + } + let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth) + if (isTypedArrayWithEntries(value)) { + res += stringifyTypedArray(value, join, maximumBreadth) + keys = keys.slice(value.length) + maximumPropertiesToStringify -= value.length + separator = join + } + if (deterministic) { + keys = insertSort(keys) + } + stack.push(value) + for (let i = 0; i < maximumPropertiesToStringify; i++) { + const key = keys[i] + const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation) + if (tmp !== undefined) { + res += `${separator}"${strEscape(key)}":${whitespace}${tmp}` + separator = join + } + } + if (keyLength > maximumBreadth) { + const removedKeys = keyLength - maximumBreadth + res += `${separator}"...":${whitespace}"${getItemCount(removedKeys)} not stringified"` + separator = join + } + if (spacer !== '' && separator.length > 1) { + res = `\n${indentation}${res}\n${originalIndentation}` + } + stack.pop() + return `{${res}}` + } + case 'number': + return isFinite(value) ? String(value) : 'null' + case 'boolean': + return value === true ? 'true' : 'false' + case 'bigint': + return bigint ? String(value) : undefined + } + } + + function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) { + if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') { + value = value.toJSON(key) + } + + switch (typeof value) { + case 'string': + return `"${strEscape(value)}"` + case 'object': { + if (value === null) { + return 'null' + } + if (stack.indexOf(value) !== -1) { + return circularValue + } + + const originalIndentation = indentation + let res = '' + let join = ',' + + if (Array.isArray(value)) { + if (value.length === 0) { + return '[]' + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"' + } + stack.push(value) + if (spacer !== '') { + indentation += spacer + res += `\n${indentation}` + join = `,\n${indentation}` + } + const maximumValuesToStringify = Math.min(value.length, maximumBreadth) + let i = 0 + for (; i < maximumValuesToStringify - 1; i++) { + const tmp = stringifyArrayReplacer(i, value[i], stack, replacer, spacer, indentation) + res += tmp !== undefined ? tmp : 'null' + res += join + } + const tmp = stringifyArrayReplacer(i, value[i], stack, replacer, spacer, indentation) + res += tmp !== undefined ? tmp : 'null' + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1 + res += `${join}"... ${getItemCount(removedKeys)} not stringified"` + } + if (spacer !== '') { + res += `\n${originalIndentation}` + } + stack.pop() + return `[${res}]` + } + if (replacer.size === 0) { + return '{}' + } + stack.push(value) + let whitespace = '' + if (spacer !== '') { + indentation += spacer + join = `,\n${indentation}` + whitespace = ' ' + } + let separator = '' + for (const key of replacer) { + const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation) + if (tmp !== undefined) { + res += `${separator}"${strEscape(key)}":${whitespace}${tmp}` + separator = join + } + } + if (spacer !== '' && separator.length > 1) { + res = `\n${indentation}${res}\n${originalIndentation}` + } + stack.pop() + return `{${res}}` + } + case 'number': + return isFinite(value) ? String(value) : 'null' + case 'boolean': + return value === true ? 'true' : 'false' + case 'bigint': + return bigint ? String(value) : undefined + } + } + + function stringifyIndent (key, value, stack, spacer, indentation) { + switch (typeof value) { + case 'string': + return `"${strEscape(value)}"` + case 'object': { + if (value === null) { + return 'null' + } + if (typeof value.toJSON === 'function') { + value = value.toJSON(key) + // Prevent calling `toJSON` again. + if (typeof value !== 'object') { + return stringifyIndent(key, value, stack, spacer, indentation) + } + if (value === null) { + return 'null' + } + } + if (stack.indexOf(value) !== -1) { + return circularValue + } + const originalIndentation = indentation + + if (Array.isArray(value)) { + if (value.length === 0) { + return '[]' + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"' + } + stack.push(value) + indentation += spacer + let res = `\n${indentation}` + const join = `,\n${indentation}` + const maximumValuesToStringify = Math.min(value.length, maximumBreadth) + let i = 0 + for (; i < maximumValuesToStringify - 1; i++) { + const tmp = stringifyIndent(i, value[i], stack, spacer, indentation) + res += tmp !== undefined ? tmp : 'null' + res += join + } + const tmp = stringifyIndent(i, value[i], stack, spacer, indentation) + res += tmp !== undefined ? tmp : 'null' + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1 + res += `${join}"... ${getItemCount(removedKeys)} not stringified"` + } + res += `\n${originalIndentation}` + stack.pop() + return `[${res}]` + } + + let keys = Object.keys(value) + const keyLength = keys.length + if (keyLength === 0) { + return '{}' + } + if (maximumDepth < stack.length + 1) { + return '"[Object]"' + } + indentation += spacer + const join = `,\n${indentation}` + let res = '' + let separator = '' + let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth) + if (isTypedArrayWithEntries(value)) { + res += stringifyTypedArray(value, join, maximumBreadth) + keys = keys.slice(value.length) + maximumPropertiesToStringify -= value.length + separator = join + } + if (deterministic) { + keys = insertSort(keys) + } + stack.push(value) + for (let i = 0; i < maximumPropertiesToStringify; i++) { + const key = keys[i] + const tmp = stringifyIndent(key, value[key], stack, spacer, indentation) + if (tmp !== undefined) { + res += `${separator}"${strEscape(key)}": ${tmp}` + separator = join + } + } + if (keyLength > maximumBreadth) { + const removedKeys = keyLength - maximumBreadth + res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"` + separator = join + } + if (separator !== '') { + res = `\n${indentation}${res}\n${originalIndentation}` + } + stack.pop() + return `{${res}}` + } + case 'number': + return isFinite(value) ? String(value) : 'null' + case 'boolean': + return value === true ? 'true' : 'false' + case 'bigint': + return bigint ? String(value) : undefined + } + } + + function stringifySimple (key, value, stack) { + switch (typeof value) { + case 'string': + return `"${strEscape(value)}"` + case 'object': { + if (value === null) { + return 'null' + } + if (typeof value.toJSON === 'function') { + value = value.toJSON(key) + // Prevent calling `toJSON` again + if (typeof value !== 'object') { + return stringifySimple(key, value, stack) + } + if (value === null) { + return 'null' + } + } + if (stack.indexOf(value) !== -1) { + return circularValue + } + + let res = '' + + if (Array.isArray(value)) { + if (value.length === 0) { + return '[]' + } + if (maximumDepth < stack.length + 1) { + return '"[Array]"' + } + stack.push(value) + const maximumValuesToStringify = Math.min(value.length, maximumBreadth) + let i = 0 + for (; i < maximumValuesToStringify - 1; i++) { + const tmp = stringifySimple(i, value[i], stack) + res += tmp !== undefined ? tmp : 'null' + res += ',' + } + const tmp = stringifySimple(i, value[i], stack) + res += tmp !== undefined ? tmp : 'null' + if (value.length - 1 > maximumBreadth) { + const removedKeys = value.length - maximumBreadth - 1 + res += `,"... ${getItemCount(removedKeys)} not stringified"` + } + stack.pop() + return `[${res}]` + } + + let keys = Object.keys(value) + const keyLength = keys.length + if (keyLength === 0) { + return '{}' + } + if (maximumDepth < stack.length + 1) { + return '"[Object]"' + } + let separator = '' + let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth) + if (isTypedArrayWithEntries(value)) { + res += stringifyTypedArray(value, ',', maximumBreadth) + keys = keys.slice(value.length) + maximumPropertiesToStringify -= value.length + separator = ',' + } + if (deterministic) { + keys = insertSort(keys) + } + stack.push(value) + for (let i = 0; i < maximumPropertiesToStringify; i++) { + const key = keys[i] + const tmp = stringifySimple(key, value[key], stack) + if (tmp !== undefined) { + res += `${separator}"${strEscape(key)}":${tmp}` + separator = ',' + } + } + if (keyLength > maximumBreadth) { + const removedKeys = keyLength - maximumBreadth + res += `${separator}"...":"${getItemCount(removedKeys)} not stringified"` + } + stack.pop() + return `{${res}}` + } + case 'number': + return isFinite(value) ? String(value) : 'null' + case 'boolean': + return value === true ? 'true' : 'false' + case 'bigint': + return bigint ? String(value) : undefined + } + } + + function stringify (value, replacer, space) { + if (arguments.length > 1) { + let spacer = '' + if (typeof space === 'number') { + spacer = ' '.repeat(Math.min(space, 10)) + } else if (typeof space === 'string') { + spacer = space.slice(0, 10) + } + if (replacer != null) { + if (typeof replacer === 'function') { + return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '') + } + if (Array.isArray(replacer)) { + return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '') + } + } + if (spacer.length !== 0) { + return stringifyIndent('', value, [], spacer, '') + } + } + return stringifySimple('', value, []) + } + + return stringify +} + + +/***/ }), + +/***/ 31040: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var typeOf = __nccwpck_require__(49413); +var extend = __nccwpck_require__(72533); + +/** + * Parse sections in `input` with the given `options`. + * + * ```js + * var sections = require('{%= name %}'); + * var result = sections(input, options); + * // { content: 'Content before sections', sections: [] } + * ``` + * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer. + * @param {Object} options + * @return {Object} Returns an object with a `content` string and an array of `sections` objects. + * @api public + */ + +module.exports = function(input, options) { + if (typeof options === 'function') { + options = { parse: options }; + } + + var file = toObject(input); + var defaults = {section_delimiter: '---', parse: identity}; + var opts = extend({}, defaults, options); + var delim = opts.section_delimiter; + var lines = file.content.split(/\r?\n/); + var sections = null; + var section = createSection(); + var content = []; + var stack = []; + + function initSections(val) { + file.content = val; + sections = []; + content = []; + } + + function closeSection(val) { + if (stack.length) { + section.key = getKey(stack[0], delim); + section.content = val; + opts.parse(section, sections); + sections.push(section); + section = createSection(); + content = []; + stack = []; + } + } + + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + var len = stack.length; + var ln = line.trim(); + + if (isDelimiter(ln, delim)) { + if (ln.length === 3 && i !== 0) { + if (len === 0 || len === 2) { + content.push(line); + continue; + } + stack.push(ln); + section.data = content.join('\n'); + content = []; + continue; + } + + if (sections === null) { + initSections(content.join('\n')); + } + + if (len === 2) { + closeSection(content.join('\n')); + } + + stack.push(ln); + continue; + } + + content.push(line); + } + + if (sections === null) { + initSections(content.join('\n')); + } else { + closeSection(content.join('\n')); + } + + file.sections = sections; + return file; +}; + +function isDelimiter(line, delim) { + if (line.slice(0, delim.length) !== delim) { + return false; + } + if (line.charAt(delim.length + 1) === delim.slice(-1)) { + return false; + } + return true; +} + +function toObject(input) { + if (typeOf(input) !== 'object') { + input = { content: input }; + } + + if (typeof input.content !== 'string' && !isBuffer(input.content)) { + throw new TypeError('expected a buffer or string'); + } + + input.content = input.content.toString(); + input.sections = []; + return input; +} + +function getKey(val, delim) { + return val ? val.slice(delim.length).trim() : ''; +} + +function createSection() { + return { key: '', data: '', content: '' }; +} + +function identity(val) { + return val; +} + +function isBuffer(val) { + if (val && val.constructor && typeof val.constructor.isBuffer === 'function') { + return val.constructor.isBuffer(val); + } + return false; +} + + +/***/ }), + +/***/ 29131: +/***/ ((module) => { + +"use strict"; + + +const hasBuffer = typeof Buffer !== 'undefined' +const suspectProtoRx = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/ +const suspectConstructorRx = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/ + +function parse (text, reviver, options) { + // Normalize arguments + if (options == null) { + if (reviver !== null && typeof reviver === 'object') { + options = reviver + reviver = undefined + } else { + options = {} + } + } + + const protoAction = options.protoAction || 'error' + const constructorAction = options.constructorAction || 'error' + + if (hasBuffer && Buffer.isBuffer(text)) { + text = text.toString() + } + + // BOM checker + if (text && text.charCodeAt(0) === 0xFEFF) { + text = text.slice(1) + } + + // Parse normally, allowing exceptions + const obj = JSON.parse(text, reviver) + + // options: 'error' (default) / 'remove' / 'ignore' + if (protoAction === 'ignore' && constructorAction === 'ignore') { + return obj + } + + // Ignore null and non-objects + if (obj === null || typeof obj !== 'object') { + return obj + } + + if (protoAction !== 'ignore' && constructorAction !== 'ignore') { + if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) { + return obj + } + } else if (protoAction !== 'ignore' && constructorAction === 'ignore') { + if (suspectProtoRx.test(text) === false) { + return obj + } + } else { + if (suspectConstructorRx.test(text) === false) { + return obj + } + } + + // Scan result for proto keys + scan(obj, { protoAction, constructorAction }) + + return obj +} + +function scan (obj, { protoAction = 'error', constructorAction = 'error' } = {}) { + let next = [obj] + + while (next.length) { + const nodes = next + next = [] + + for (const node of nodes) { + if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly + if (protoAction === 'error') { + throw new SyntaxError('Object contains forbidden prototype property') + } + + delete node.__proto__ // eslint-disable-line no-proto + } + + if (constructorAction !== 'ignore' && + Object.prototype.hasOwnProperty.call(node, 'constructor') && + Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly + if (constructorAction === 'error') { + throw new SyntaxError('Object contains forbidden prototype property') + } + + delete node.constructor + } + + for (const key in node) { + const value = node[key] + if (value && typeof value === 'object') { + next.push(node[key]) + } + } + } + } +} + +function safeParse (text, reviver) { + try { + return parse(text, reviver) + } catch (ignoreError) { + return null + } +} + +module.exports = { + parse, + scan, + safeParse +} + + +/***/ }), + +/***/ 42989: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __nccwpck_require__(358); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +exports.I = ArraySet; + + +/***/ }), + +/***/ 80675: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = __nccwpck_require__(75756); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; + + +/***/ }), + +/***/ 75756: +/***/ ((__unused_webpack_module, exports) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; + + +/***/ }), + +/***/ 31063: +/***/ ((__unused_webpack_module, exports) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; + + +/***/ }), + +/***/ 18397: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __nccwpck_require__(358); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +exports.H = MappingList; + + +/***/ }), + +/***/ 16467: +/***/ ((__unused_webpack_module, exports) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ +exports.U = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); +}; + + +/***/ }), + +/***/ 53161: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +var __webpack_unused_export__; +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __nccwpck_require__(358); +var binarySearch = __nccwpck_require__(31063); +var ArraySet = (__nccwpck_require__(42989)/* .ArraySet */ .I); +var base64VLQ = __nccwpck_require__(80675); +var quickSort = (__nccwpck_require__(16467)/* .quickSort */ .U); + +function SourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap) + : new BasicSourceMapConsumer(sourceMap); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap); +} + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + if (source != null && sourceRoot != null) { + source = util.join(sourceRoot, source); + } + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: Optional. the column number in the original source. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + if (this.sourceRoot != null) { + needle.source = util.relative(this.sourceRoot, needle.source); + } + if (!this._sources.has(needle.source)) { + return []; + } + needle.source = this._sources.indexOf(needle.source); + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The only parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._sources.toArray().map(function (s) { + return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; + }, this); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + if (this.sourceRoot != null) { + source = util.join(this.sourceRoot, source); + } + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + if (this.sourceRoot != null) { + aSource = util.relative(this.sourceRoot, aSource); + } + + if (this._sources.has(aSource)) { + return this.sourcesContent[this._sources.indexOf(aSource)]; + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + aSource)) { + return this.sourcesContent[this._sources.indexOf("/" + aSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + if (this.sourceRoot != null) { + source = util.relative(this.sourceRoot, source); + } + if (!this._sources.has(source)) { + return { + line: null, + column: null, + lastColumn: null + }; + } + source = this._sources.indexOf(source); + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +__webpack_unused_export__ = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The only parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map')) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + if (section.consumer.sourceRoot !== null) { + source = util.join(section.consumer.sourceRoot, source); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +__webpack_unused_export__ = IndexedSourceMapConsumer; + + +/***/ }), + +/***/ 50826: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = __nccwpck_require__(80675); +var util = __nccwpck_require__(358); +var ArraySet = (__nccwpck_require__(42989)/* .ArraySet */ .I); +var MappingList = (__nccwpck_require__(18397)/* .MappingList */ .H); + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; + + +/***/ }), + +/***/ 82767: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = (__nccwpck_require__(50826).SourceMapGenerator); +var util = __nccwpck_require__(358); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex]; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex]; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; + + +/***/ }), + +/***/ 358: +/***/ ((__unused_webpack_module, exports) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +} +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + +/***/ }), + +/***/ 45018: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = __nccwpck_require__(50826).SourceMapGenerator; +exports.SourceMapConsumer = __nccwpck_require__(53161).SourceMapConsumer; +exports.SourceNode = __nccwpck_require__(82767).SourceNode; + + +/***/ }), + +/***/ 78447: +/***/ ((module) => { + +"use strict"; + + +module.exports = factory + +// Construct a state `toggler`: a function which inverses `property` in context +// based on its current value. +// The by `toggler` returned function restores that value. +function factory(key, state, ctx) { + return enter + + function enter() { + var context = ctx || this + var current = context[key] + + context[key] = !state + + return exit + + function exit() { + context[key] = current + } + } +} + + +/***/ }), + +/***/ 20662: +/***/ ((module) => { + +module.exports = shift + +function shift (stream) { + var rs = stream._readableState + if (!rs) return null + return (rs.objectMode || typeof stream._duplexState === 'number') ? stream.read() : stream.read(getStateLength(rs)) +} + +function getStateLength (state) { + if (state.buffer.length) { + // Since node 6.3.0 state.buffer is a BufferList not an array + if (state.buffer.head) { + return state.buffer.head.data.length + } + + return state.buffer[0].length + } + + return state.length +} + + +/***/ }), + +/***/ 60642: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/*<replacement>*/ + +var Buffer = (__nccwpck_require__(70265).Buffer); +/*</replacement>*/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.s = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), + +/***/ 70265: +/***/ ((module, exports, __nccwpck_require__) => { + +/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ +/* eslint-disable node/no-deprecated-api */ +var buffer = __nccwpck_require__(14300) +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), + +/***/ 94405: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = __nccwpck_require__(81936) + + +/***/ }), + +/***/ 3212: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var entities = __nccwpck_require__(22017) + +var characters = {} +var name + +module.exports = characters + +for (name in entities) { + characters[entities[name]] = name +} + + +/***/ }), + +/***/ 84185: +/***/ ((module) => { + +module.exports = String.fromCharCode + + +/***/ }), + +/***/ 13487: +/***/ ((module) => { + +module.exports = {}.hasOwnProperty + + +/***/ }), + +/***/ 54560: +/***/ ((module) => { + +"use strict"; + + +module.exports = encode + +// Encode special characters in `value`. +function encode(value, options) { + value = value.replace( + options.subset ? charactersToExpression(options.subset) : /["&'<>`]/g, + basic + ) + + if (options.subset || options.escapeOnly) { + return value + } + + return ( + value + // Surrogate pairs. + .replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, surrogate) + // BMP control characters (C0 except for LF, CR, SP; DEL; and some more + // non-ASCII ones). + .replace( + // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape + /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g, + basic + ) + ) + + function surrogate(pair, index, all) { + return options.format( + (pair.charCodeAt(0) - 0xd800) * 0x400 + + pair.charCodeAt(1) - + 0xdc00 + + 0x10000, + all.charCodeAt(index + 2), + options + ) + } + + function basic(character, index, all) { + return options.format( + character.charCodeAt(0), + all.charCodeAt(index + 1), + options + ) + } +} + +function charactersToExpression(subset) { + var groups = [] + var index = -1 + + while (++index < subset.length) { + groups.push(subset[index].replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')) + } + + return new RegExp('(?:' + groups.join('|') + ')', 'g') +} + + +/***/ }), + +/***/ 84664: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var core = __nccwpck_require__(54560) +var smart = __nccwpck_require__(64399) + +module.exports = encode + +// Encode special characters in `value`. +function encode(value, options) { + // Note: Switch to `Object.assign` next major. + return core(value, xtend(options, {format: smart})) +} + + +/***/ }), + +/***/ 95526: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var core = __nccwpck_require__(54560) +var smart = __nccwpck_require__(64399) + +module.exports = escape + +// Shortcut to escape special characters in HTML. +function escape(value) { + return core(value, { + escapeOnly: true, + useNamedReferences: true, + format: smart + }) +} + + +/***/ }), + +/***/ 81936: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var encode = __nccwpck_require__(84664) +var escape = __nccwpck_require__(95526) + +module.exports = encode +encode.escape = escape + + +/***/ }), + +/***/ 64399: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = formatPretty + +var toHexadecimal = __nccwpck_require__(98501) +var toDecimal = __nccwpck_require__(91987) +var toNamed = __nccwpck_require__(62387) + +// Encode `character` according to `options`. +function formatPretty(code, next, options) { + var named + var numeric + var decimal + + if (options.useNamedReferences || options.useShortestReferences) { + named = toNamed( + code, + next, + options.omitOptionalSemicolons, + options.attribute + ) + } + + if (options.useShortestReferences || !named) { + numeric = toHexadecimal(code, next, options.omitOptionalSemicolons) + + // Use the shortest numeric reference when requested. + // A simple algorithm would use decimal for all code points under 100, as + // those are shorter than hexadecimal: + // + // * `&#99;` vs `&#x63;` (decimal shorter) + // * `&#100;` vs `&#x64;` (equal) + // + // However, because we take `next` into consideration when `omit` is used, + // And it would be possible that decimals are shorter on bigger values as + // well if `next` is hexadecimal but not decimal, we instead compare both. + if (options.useShortestReferences) { + decimal = toDecimal(code, next, options.omitOptionalSemicolons) + + if (decimal.length < numeric.length) { + numeric = decimal + } + } + } + + return named && + (!options.useShortestReferences || named.length < numeric.length) + ? named + : numeric +} + + +/***/ }), + +/***/ 91987: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = toDecimalReference + +var fromCharCode = __nccwpck_require__(84185) + +// Transform `code` into a decimal character reference. +function toDecimalReference(code, next, omit) { + var value = '&#' + String(code) + return omit && next && !/\d/.test(fromCharCode(next)) ? value : value + ';' +} + + +/***/ }), + +/***/ 98501: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = toHexReference + +var fromCharCode = __nccwpck_require__(84185) + +// Transform `code` into a hexadecimal character reference. +function toHexReference(code, next, omit) { + var value = '&#x' + code.toString(16).toUpperCase() + return omit && next && !/[\dA-Fa-f]/.test(fromCharCode(next)) + ? value + : value + ';' +} + + +/***/ }), + +/***/ 62387: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = toNamed + +var legacy = __nccwpck_require__(93562) +var characters = __nccwpck_require__(3212) +var fromCharCode = __nccwpck_require__(84185) +var own = __nccwpck_require__(13487) +var dangerous = __nccwpck_require__(66195) + +// Transform `code` into a named character reference. +function toNamed(code, next, omit, attribute) { + var character = fromCharCode(code) + var name + var value + + if (own.call(characters, character)) { + name = characters[character] + value = '&' + name + + if ( + omit && + own.call(legacy, name) && + dangerous.indexOf(name) === -1 && + (!attribute || + (next && next !== 61 /* `=` */ && /[^\da-z]/i.test(fromCharCode(next)))) + ) { + return value + } + + return value + ';' + } + + return '' +} + + +/***/ }), + +/***/ 26574: +/***/ ((module) => { + +"use strict"; +/*! + * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string> + * + * Copyright (c) 2015, 2017, Jon Schlinkert. + * Released under the MIT License. + */ + + + +module.exports = function(str) { + if (typeof str === 'string' && str.charAt(0) === '\ufeff') { + return str.slice(1); + } + return str; +}; + + +/***/ }), + +/***/ 30395: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +const os = __nccwpck_require__(22037); +const hasFlag = __nccwpck_require__(64250); + +const env = process.env; + +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + forceColor = false; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = true; +} +if ('FORCE_COLOR' in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} + +function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + + const min = forceColor ? 1 : 0; + + if (process.platform === 'win32') { + // Node.js 7.5.0 is the first version of Node.js to include a patch to + // libuv that enables 256 color output on Windows. Anything earlier and it + // won't work. However, here we target Node.js 8 at minimum as it is an LTS + // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows + // release that supports 256 colors. Windows 10 build 14931 is the first release + // that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(process.versions.node.split('.')[0]) >= 8 && + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + + return 1; + } + + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } + + return min; + } + + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } + + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + + if ('COLORTERM' in env) { + return 1; + } + + if (env.TERM === 'dumb') { + return min; + } + + return min; +} + +function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); +} + +module.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) +}; + + +/***/ }), + +/***/ 66931: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { EventEmitter } = __nccwpck_require__(82361) +const { Worker } = __nccwpck_require__(71267) +const { join } = __nccwpck_require__(71017) +const { pathToFileURL } = __nccwpck_require__(57310) +const { wait } = __nccwpck_require__(80269) +const { + WRITE_INDEX, + READ_INDEX +} = __nccwpck_require__(21598) +const buffer = __nccwpck_require__(14300) +const assert = __nccwpck_require__(39491) + +const kImpl = Symbol('kImpl') + +// V8 limit for string size +const MAX_STRING = buffer.constants.MAX_STRING_LENGTH + +class FakeWeakRef { + constructor (value) { + this._value = value + } + + deref () { + return this._value + } +} + +const FinalizationRegistry = global.FinalizationRegistry || class FakeFinalizationRegistry { + register () {} + unregister () {} +} + +const WeakRef = global.WeakRef || FakeWeakRef + +const registry = new FinalizationRegistry((worker) => { + if (worker.exited) { + return + } + worker.terminate() +}) + +function createWorker (stream, opts) { + const { filename, workerData } = opts + + const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {} + const toExecute = bundlerOverrides['thread-stream-worker'] || __nccwpck_require__.ab + "worker1.js" + + const worker = new Worker(toExecute, { + ...opts.workerOpts, + workerData: { + filename: filename.indexOf('file://') === 0 + ? filename + : pathToFileURL(filename).href, + dataBuf: stream[kImpl].dataBuf, + stateBuf: stream[kImpl].stateBuf, + workerData + } + }) + + // We keep a strong reference for now, + // we need to start writing first + worker.stream = new FakeWeakRef(stream) + + worker.on('message', onWorkerMessage) + worker.on('exit', onWorkerExit) + registry.register(stream, worker) + + return worker +} + +function drain (stream) { + assert(!stream[kImpl].sync) + if (stream[kImpl].needDrain) { + stream[kImpl].needDrain = false + stream.emit('drain') + } +} + +function nextFlush (stream) { + const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX) + let leftover = stream[kImpl].data.length - writeIndex + + if (leftover > 0) { + if (stream[kImpl].buf.length === 0) { + stream[kImpl].flushing = false + + if (stream[kImpl].ending) { + end(stream) + } else if (stream[kImpl].needDrain) { + process.nextTick(drain, stream) + } + + return + } + + let toWrite = stream[kImpl].buf.slice(0, leftover) + let toWriteBytes = Buffer.byteLength(toWrite) + if (toWriteBytes <= leftover) { + stream[kImpl].buf = stream[kImpl].buf.slice(leftover) + // process._rawDebug('writing ' + toWrite.length) + write(stream, toWrite, nextFlush.bind(null, stream)) + } else { + // multi-byte utf-8 + stream.flush(() => { + // err is already handled in flush() + if (stream.destroyed) { + return + } + + Atomics.store(stream[kImpl].state, READ_INDEX, 0) + Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) + + // Find a toWrite length that fits the buffer + // it must exists as the buffer is at least 4 bytes length + // and the max utf-8 length for a char is 4 bytes. + while (toWriteBytes > stream[kImpl].data.length) { + leftover = leftover / 2 + toWrite = stream[kImpl].buf.slice(0, leftover) + toWriteBytes = Buffer.byteLength(toWrite) + } + stream[kImpl].buf = stream[kImpl].buf.slice(leftover) + write(stream, toWrite, nextFlush.bind(null, stream)) + }) + } + } else if (leftover === 0) { + if (writeIndex === 0 && stream[kImpl].buf.length === 0) { + // we had a flushSync in the meanwhile + return + } + stream.flush(() => { + Atomics.store(stream[kImpl].state, READ_INDEX, 0) + Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) + nextFlush(stream) + }) + } else { + // This should never happen + throw new Error('overwritten') + } +} + +function onWorkerMessage (msg) { + const stream = this.stream.deref() + if (stream === undefined) { + this.exited = true + // Terminate the worker. + this.terminate() + return + } + + switch (msg.code) { + case 'READY': + // Replace the FakeWeakRef with a + // proper one. + this.stream = new WeakRef(stream) + + stream.flush(() => { + stream[kImpl].ready = true + stream.emit('ready') + }) + break + case 'ERROR': + destroy(stream, msg.err) + break + default: + throw new Error('this should not happen: ' + msg.code) + } +} + +function onWorkerExit (code) { + const stream = this.stream.deref() + if (stream === undefined) { + // Nothing to do, the worker already exit + return + } + registry.unregister(stream) + stream.worker.exited = true + stream.worker.off('exit', onWorkerExit) + destroy(stream, code !== 0 ? new Error('The worker thread exited') : null) +} + +class ThreadStream extends EventEmitter { + constructor (opts = {}) { + super() + + if (opts.bufferSize < 4) { + throw new Error('bufferSize must at least fit a 4-byte utf-8 char') + } + + this[kImpl] = {} + this[kImpl].stateBuf = new SharedArrayBuffer(128) + this[kImpl].state = new Int32Array(this[kImpl].stateBuf) + this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024) + this[kImpl].data = Buffer.from(this[kImpl].dataBuf) + this[kImpl].sync = opts.sync || false + this[kImpl].ending = false + this[kImpl].ended = false + this[kImpl].needDrain = false + this[kImpl].destroyed = false + this[kImpl].flushing = false + this[kImpl].ready = false + this[kImpl].finished = false + this[kImpl].errored = null + this[kImpl].closed = false + this[kImpl].buf = '' + + // TODO (fix): Make private? + this.worker = createWorker(this, opts) // TODO (fix): make private + } + + write (data) { + if (this[kImpl].destroyed) { + throw new Error('the worker has exited') + } + + if (this[kImpl].ending) { + throw new Error('the worker is ending') + } + + if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) { + try { + writeSync(this) + this[kImpl].flushing = true + } catch (err) { + destroy(this, err) + return false + } + } + + this[kImpl].buf += data + + if (this[kImpl].sync) { + try { + writeSync(this) + return true + } catch (err) { + destroy(this, err) + return false + } + } + + if (!this[kImpl].flushing) { + this[kImpl].flushing = true + setImmediate(nextFlush, this) + } + + this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0 + return !this[kImpl].needDrain + } + + end () { + if (this[kImpl].destroyed) { + return + } + + this[kImpl].ending = true + end(this) + } + + flush (cb) { + if (this[kImpl].destroyed) { + if (typeof cb === 'function') { + process.nextTick(cb, new Error('the worker has exited')) + } + return + } + + // TODO write all .buf + const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX) + // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`) + wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => { + if (err) { + destroy(this, err) + process.nextTick(cb, err) + return + } + if (res === 'not-equal') { + // TODO handle deadlock + this.flush(cb) + return + } + process.nextTick(cb) + }) + } + + flushSync () { + if (this[kImpl].destroyed) { + return + } + + writeSync(this) + flushSync(this) + } + + unref () { + this.worker.unref() + } + + ref () { + this.worker.ref() + } + + get ready () { + return this[kImpl].ready + } + + get destroyed () { + return this[kImpl].destroyed + } + + get closed () { + return this[kImpl].closed + } + + get writable () { + return !this[kImpl].destroyed && !this[kImpl].ending + } + + get writableEnded () { + return this[kImpl].ending + } + + get writableFinished () { + return this[kImpl].finished + } + + get writableNeedDrain () { + return this[kImpl].needDrain + } + + get writableObjectMode () { + return false + } + + get writableErrored () { + return this[kImpl].errored + } +} + +function destroy (stream, err) { + if (stream[kImpl].destroyed) { + return + } + stream[kImpl].destroyed = true + + if (err) { + stream[kImpl].errored = err + stream.emit('error', err) + } + + if (!stream.worker.exited) { + stream.worker.terminate() + .catch(() => {}) + .then(() => { + stream[kImpl].closed = true + stream.emit('close') + }) + } else { + setImmediate(() => { + stream[kImpl].closed = true + stream.emit('close') + }) + } +} + +function write (stream, data, cb) { + // data is smaller than the shared buffer length + const current = Atomics.load(stream[kImpl].state, WRITE_INDEX) + const length = Buffer.byteLength(data) + stream[kImpl].data.write(data, current) + Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length) + Atomics.notify(stream[kImpl].state, WRITE_INDEX) + cb() + return true +} + +function end (stream) { + if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) { + return + } + stream[kImpl].ended = true + + try { + stream.flushSync() + + let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX) + + // process._rawDebug('writing index') + Atomics.store(stream[kImpl].state, WRITE_INDEX, -1) + // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`) + Atomics.notify(stream[kImpl].state, WRITE_INDEX) + + // Wait for the process to complete + let spins = 0 + while (readIndex !== -1) { + // process._rawDebug(`read = ${read}`) + Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000) + readIndex = Atomics.load(stream[kImpl].state, READ_INDEX) + + if (readIndex === -2) { + throw new Error('end() failed') + } + + if (++spins === 10) { + throw new Error('end() took too long (10s)') + } + } + + process.nextTick(() => { + stream[kImpl].finished = true + stream.emit('finish') + }) + } catch (err) { + destroy(stream, err) + } + // process._rawDebug('end finished...') +} + +function writeSync (stream) { + const cb = () => { + if (stream[kImpl].ending) { + end(stream) + } else if (stream[kImpl].needDrain) { + process.nextTick(drain, stream) + } + } + stream[kImpl].flushing = false + + while (stream[kImpl].buf.length !== 0) { + const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX) + let leftover = stream[kImpl].data.length - writeIndex + if (leftover === 0) { + flushSync(stream) + Atomics.store(stream[kImpl].state, READ_INDEX, 0) + Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) + continue + } else if (leftover < 0) { + // stream should never happen + throw new Error('overwritten') + } + + let toWrite = stream[kImpl].buf.slice(0, leftover) + let toWriteBytes = Buffer.byteLength(toWrite) + if (toWriteBytes <= leftover) { + stream[kImpl].buf = stream[kImpl].buf.slice(leftover) + // process._rawDebug('writing ' + toWrite.length) + write(stream, toWrite, cb) + } else { + // multi-byte utf-8 + flushSync(stream) + Atomics.store(stream[kImpl].state, READ_INDEX, 0) + Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) + + // Find a toWrite length that fits the buffer + // it must exists as the buffer is at least 4 bytes length + // and the max utf-8 length for a char is 4 bytes. + while (toWriteBytes > stream[kImpl].buf.length) { + leftover = leftover / 2 + toWrite = stream[kImpl].buf.slice(0, leftover) + toWriteBytes = Buffer.byteLength(toWrite) + } + stream[kImpl].buf = stream[kImpl].buf.slice(leftover) + write(stream, toWrite, cb) + } + } +} + +function flushSync (stream) { + if (stream[kImpl].flushing) { + throw new Error('unable to flush while flushing') + } + + // process._rawDebug('flushSync started') + + const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX) + + let spins = 0 + + // TODO handle deadlock + while (true) { + const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX) + + if (readIndex === -2) { + throw new Error('_flushSync failed') + } + + // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`) + if (readIndex !== writeIndex) { + // TODO stream timeouts for some reason. + Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000) + } else { + break + } + + if (++spins === 10) { + throw new Error('_flushSync took too long (10s)') + } + } + // process._rawDebug('flushSync finished') +} + +module.exports = ThreadStream + + +/***/ }), + +/***/ 21598: +/***/ ((module) => { + +"use strict"; + + +const WRITE_INDEX = 4 +const READ_INDEX = 8 + +module.exports = { + WRITE_INDEX, + READ_INDEX +} + + +/***/ }), + +/***/ 80269: +/***/ ((module) => { + +"use strict"; + + +const MAX_TIMEOUT = 1000 + +function wait (state, index, expected, timeout, done) { + const max = Date.now() + timeout + let current = Atomics.load(state, index) + if (current === expected) { + done(null, 'ok') + return + } + let prior = current + const check = (backoff) => { + if (Date.now() > max) { + done(null, 'timed-out') + } else { + setTimeout(() => { + prior = current + current = Atomics.load(state, index) + if (current === prior) { + check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2) + } else { + if (current === expected) done(null, 'ok') + else done(null, 'not-equal') + } + }, backoff) + } + } + check(1) +} + +// let waitDiffCount = 0 +function waitDiff (state, index, expected, timeout, done) { + // const id = waitDiffCount++ + // process._rawDebug(`>>> waitDiff ${id}`) + const max = Date.now() + timeout + let current = Atomics.load(state, index) + if (current !== expected) { + done(null, 'ok') + return + } + const check = (backoff) => { + // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`) + // process._rawDebug('' + backoff) + if (Date.now() > max) { + done(null, 'timed-out') + } else { + setTimeout(() => { + current = Atomics.load(state, index) + if (current !== expected) { + done(null, 'ok') + } else { + check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2) + } + }, backoff) + } + } + check(1) +} + +module.exports = { wait, waitDiff } + + +/***/ }), + +/***/ 88693: +/***/ ((module) => { + +"use strict"; + + +let fastProto = null; + +// Creates an object with permanently fast properties in V8. See Toon Verwaest's +// post https://medium.com/@tverwaes/setting-up-prototypes-in-v8-ec9c9491dfe2#5f62 +// for more details. Use %HasFastProperties(object) and the Node.js flag +// --allow-natives-syntax to check whether an object has fast properties. +function FastObject(o) { + // A prototype object will have "fast properties" enabled once it is checked + // against the inline property cache of a function, e.g. fastProto.property: + // https://github.com/v8/v8/blob/6.0.122/test/mjsunit/fast-prototype.js#L48-L63 + if (fastProto !== null && typeof fastProto.property) { + const result = fastProto; + fastProto = FastObject.prototype = null; + return result; + } + fastProto = FastObject.prototype = o == null ? Object.create(null) : o; + return new FastObject; +} + +// Initialize the inline property cache of FastObject +FastObject(); + +module.exports = function toFastproperties(o) { + return FastObject(o); +}; + + +/***/ }), + +/***/ 54411: +/***/ ((module) => { + +"use strict"; + + +module.exports = trimTrailingLines + +// Remove final newline characters from `value`. +function trimTrailingLines(value) { + return String(value).replace(/\n+$/, '') +} + + +/***/ }), + +/***/ 82315: +/***/ ((module, exports) => { + + +exports = module.exports = trim; + +function trim(str){ + return str.replace(/^\s*|\s*$/g, ''); +} + +exports.left = function(str){ + return str.replace(/^\s*/, ''); +}; + +exports.right = function(str){ + return str.replace(/\s*$/, ''); +}; + + +/***/ }), + +/***/ 83520: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var wrap = __nccwpck_require__(95679) + +module.exports = trough + +trough.wrap = wrap + +var slice = [].slice + +// Create new middleware. +function trough() { + var fns = [] + var middleware = {} + + middleware.run = run + middleware.use = use + + return middleware + + // Run `fns`. Last argument must be a completion handler. + function run() { + var index = -1 + var input = slice.call(arguments, 0, -1) + var done = arguments[arguments.length - 1] + + if (typeof done !== 'function') { + throw new Error('Expected function as last argument, not ' + done) + } + + next.apply(null, [null].concat(input)) + + // Run the next `fn`, if any. + function next(err) { + var fn = fns[++index] + var params = slice.call(arguments, 0) + var values = params.slice(1) + var length = input.length + var pos = -1 + + if (err) { + done(err) + return + } + + // Copy non-nully input into values. + while (++pos < length) { + if (values[pos] === null || values[pos] === undefined) { + values[pos] = input[pos] + } + } + + input = values + + // Next or done. + if (fn) { + wrap(fn, next).apply(null, input) + } else { + done.apply(null, [null].concat(input)) + } + } + } + + // Add `fn` to the list. + function use(fn) { + if (typeof fn !== 'function') { + throw new Error('Expected `fn` to be a function, not ' + fn) + } + + fns.push(fn) + + return middleware + } +} + + +/***/ }), + +/***/ 95679: +/***/ ((module) => { + +"use strict"; + + +var slice = [].slice + +module.exports = wrap + +// Wrap `fn`. +// Can be sync or async; return a promise, receive a completion handler, return +// new values and errors. +function wrap(fn, callback) { + var invoked + + return wrapped + + function wrapped() { + var params = slice.call(arguments, 0) + var callback = fn.length > params.length + var result + + if (callback) { + params.push(done) + } + + try { + result = fn.apply(null, params) + } catch (error) { + // Well, this is quite the pickle. + // `fn` received a callback and invoked it (thus continuing the pipeline), + // but later also threw an error. + // We’re not about to restart the pipeline again, so the only thing left + // to do is to throw the thing instead. + if (callback && invoked) { + throw error + } + + return done(error) + } + + if (!callback) { + if (result && typeof result.then === 'function') { + result.then(then, done) + } else if (result instanceof Error) { + done(result) + } else { + then(result) + } + } + } + + // Invoke `next`, only once. + function done() { + if (!invoked) { + invoked = true + + callback.apply(null, arguments) + } + } + + // Invoke `done` with one value. + // Tracks if an error is passed, too. + function then(value) { + done(null, value) + } +} + + +/***/ }), + +/***/ 89382: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(91418); + + +/***/ }), + +/***/ 91418: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var net = __nccwpck_require__(41808); +var tls = __nccwpck_require__(24404); +var http = __nccwpck_require__(13685); +var https = __nccwpck_require__(95687); +var events = __nccwpck_require__(82361); +var assert = __nccwpck_require__(39491); +var util = __nccwpck_require__(73837); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test + + +/***/ }), + +/***/ 68475: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(76738) +var inherits = __nccwpck_require__(76919) + +module.exports = unherit + +// Create a custom constructor which can be modified without affecting the +// original class. +function unherit(Super) { + var result + var key + var value + + inherits(Of, Super) + inherits(From, Of) + + // Clone values. + result = Of.prototype + + for (key in result) { + value = result[key] + + if (value && typeof value === 'object') { + result[key] = 'concat' in value ? value.concat() : xtend(value) + } + } + + return Of + + // Constructor accepting a single argument, which itself is an `arguments` + // object. + function From(parameters) { + return Super.apply(this, parameters) + } + + // Constructor accepting variadic arguments. + function Of() { + if (!(this instanceof Of)) { + return new From(arguments) + } + + return Super.apply(this, arguments) + } +} + + +/***/ }), + +/***/ 9507: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var bail = __nccwpck_require__(2308) +var buffer = __nccwpck_require__(6324) +var extend = __nccwpck_require__(36005) +var plain = __nccwpck_require__(67337) +var trough = __nccwpck_require__(83520) +var vfile = __nccwpck_require__(67532) + +// Expose a frozen processor. +module.exports = unified().freeze() + +var slice = [].slice +var own = {}.hasOwnProperty + +// Process pipeline. +var pipeline = trough() + .use(pipelineParse) + .use(pipelineRun) + .use(pipelineStringify) + +function pipelineParse(p, ctx) { + ctx.tree = p.parse(ctx.file) +} + +function pipelineRun(p, ctx, next) { + p.run(ctx.tree, ctx.file, done) + + function done(error, tree, file) { + if (error) { + next(error) + } else { + ctx.tree = tree + ctx.file = file + next() + } + } +} + +function pipelineStringify(p, ctx) { + var result = p.stringify(ctx.tree, ctx.file) + + if (result === undefined || result === null) { + // Empty. + } else if (typeof result === 'string' || buffer(result)) { + if ('value' in ctx.file) { + ctx.file.value = result + } + + ctx.file.contents = result + } else { + ctx.file.result = result + } +} + +// Function to create the first processor. +function unified() { + var attachers = [] + var transformers = trough() + var namespace = {} + var freezeIndex = -1 + var frozen + + // Data management. + processor.data = data + + // Lock. + processor.freeze = freeze + + // Plugins. + processor.attachers = attachers + processor.use = use + + // API. + processor.parse = parse + processor.stringify = stringify + processor.run = run + processor.runSync = runSync + processor.process = process + processor.processSync = processSync + + // Expose. + return processor + + // Create a new processor based on the processor in the current scope. + function processor() { + var destination = unified() + var index = -1 + + while (++index < attachers.length) { + destination.use.apply(null, attachers[index]) + } + + destination.data(extend(true, {}, namespace)) + + return destination + } + + // Freeze: used to signal a processor that has finished configuration. + // + // For example, take unified itself: it’s frozen. + // Plugins should not be added to it. + // Rather, it should be extended, by invoking it, before modifying it. + // + // In essence, always invoke this when exporting a processor. + function freeze() { + var values + var transformer + + if (frozen) { + return processor + } + + while (++freezeIndex < attachers.length) { + values = attachers[freezeIndex] + + if (values[1] === false) { + continue + } + + if (values[1] === true) { + values[1] = undefined + } + + transformer = values[0].apply(processor, values.slice(1)) + + if (typeof transformer === 'function') { + transformers.use(transformer) + } + } + + frozen = true + freezeIndex = Infinity + + return processor + } + + // Data management. + // Getter / setter for processor-specific informtion. + function data(key, value) { + if (typeof key === 'string') { + // Set `key`. + if (arguments.length === 2) { + assertUnfrozen('data', frozen) + namespace[key] = value + return processor + } + + // Get `key`. + return (own.call(namespace, key) && namespace[key]) || null + } + + // Set space. + if (key) { + assertUnfrozen('data', frozen) + namespace = key + return processor + } + + // Get space. + return namespace + } + + // Plugin management. + // + // Pass it: + // * an attacher and options, + // * a preset, + // * a list of presets, attachers, and arguments (list of attachers and + // options). + function use(value) { + var settings + + assertUnfrozen('use', frozen) + + if (value === null || value === undefined) { + // Empty. + } else if (typeof value === 'function') { + addPlugin.apply(null, arguments) + } else if (typeof value === 'object') { + if ('length' in value) { + addList(value) + } else { + addPreset(value) + } + } else { + throw new Error('Expected usable value, not `' + value + '`') + } + + if (settings) { + namespace.settings = extend(namespace.settings || {}, settings) + } + + return processor + + function addPreset(result) { + addList(result.plugins) + + if (result.settings) { + settings = extend(settings || {}, result.settings) + } + } + + function add(value) { + if (typeof value === 'function') { + addPlugin(value) + } else if (typeof value === 'object') { + if ('length' in value) { + addPlugin.apply(null, value) + } else { + addPreset(value) + } + } else { + throw new Error('Expected usable value, not `' + value + '`') + } + } + + function addList(plugins) { + var index = -1 + + if (plugins === null || plugins === undefined) { + // Empty. + } else if (typeof plugins === 'object' && 'length' in plugins) { + while (++index < plugins.length) { + add(plugins[index]) + } + } else { + throw new Error('Expected a list of plugins, not `' + plugins + '`') + } + } + + function addPlugin(plugin, value) { + var entry = find(plugin) + + if (entry) { + if (plain(entry[1]) && plain(value)) { + value = extend(true, entry[1], value) + } + + entry[1] = value + } else { + attachers.push(slice.call(arguments)) + } + } + } + + function find(plugin) { + var index = -1 + + while (++index < attachers.length) { + if (attachers[index][0] === plugin) { + return attachers[index] + } + } + } + + // Parse a file (in string or vfile representation) into a unist node using + // the `Parser` on the processor. + function parse(doc) { + var file = vfile(doc) + var Parser + + freeze() + Parser = processor.Parser + assertParser('parse', Parser) + + if (newable(Parser, 'parse')) { + return new Parser(String(file), file).parse() + } + + return Parser(String(file), file) // eslint-disable-line new-cap + } + + // Run transforms on a unist node representation of a file (in string or + // vfile representation), async. + function run(node, file, cb) { + assertNode(node) + freeze() + + if (!cb && typeof file === 'function') { + cb = file + file = null + } + + if (!cb) { + return new Promise(executor) + } + + executor(null, cb) + + function executor(resolve, reject) { + transformers.run(node, vfile(file), done) + + function done(error, tree, file) { + tree = tree || node + if (error) { + reject(error) + } else if (resolve) { + resolve(tree) + } else { + cb(null, tree, file) + } + } + } + } + + // Run transforms on a unist node representation of a file (in string or + // vfile representation), sync. + function runSync(node, file) { + var result + var complete + + run(node, file, done) + + assertDone('runSync', 'run', complete) + + return result + + function done(error, tree) { + complete = true + result = tree + bail(error) + } + } + + // Stringify a unist node representation of a file (in string or vfile + // representation) into a string using the `Compiler` on the processor. + function stringify(node, doc) { + var file = vfile(doc) + var Compiler + + freeze() + Compiler = processor.Compiler + assertCompiler('stringify', Compiler) + assertNode(node) + + if (newable(Compiler, 'compile')) { + return new Compiler(node, file).compile() + } + + return Compiler(node, file) // eslint-disable-line new-cap + } + + // Parse a file (in string or vfile representation) into a unist node using + // the `Parser` on the processor, then run transforms on that node, and + // compile the resulting node using the `Compiler` on the processor, and + // store that result on the vfile. + function process(doc, cb) { + freeze() + assertParser('process', processor.Parser) + assertCompiler('process', processor.Compiler) + + if (!cb) { + return new Promise(executor) + } + + executor(null, cb) + + function executor(resolve, reject) { + var file = vfile(doc) + + pipeline.run(processor, {file: file}, done) + + function done(error) { + if (error) { + reject(error) + } else if (resolve) { + resolve(file) + } else { + cb(null, file) + } + } + } + } + + // Process the given document (in string or vfile representation), sync. + function processSync(doc) { + var file + var complete + + freeze() + assertParser('processSync', processor.Parser) + assertCompiler('processSync', processor.Compiler) + file = vfile(doc) + + process(file, done) + + assertDone('processSync', 'process', complete) + + return file + + function done(error) { + complete = true + bail(error) + } + } +} + +// Check if `value` is a constructor. +function newable(value, name) { + return ( + typeof value === 'function' && + value.prototype && + // A function with keys in its prototype is probably a constructor. + // Classes’ prototype methods are not enumerable, so we check if some value + // exists in the prototype. + (keys(value.prototype) || name in value.prototype) + ) +} + +// Check if `value` is an object with keys. +function keys(value) { + var key + for (key in value) { + return true + } + + return false +} + +// Assert a parser is available. +function assertParser(name, Parser) { + if (typeof Parser !== 'function') { + throw new Error('Cannot `' + name + '` without `Parser`') + } +} + +// Assert a compiler is available. +function assertCompiler(name, Compiler) { + if (typeof Compiler !== 'function') { + throw new Error('Cannot `' + name + '` without `Compiler`') + } +} + +// Assert the processor is not frozen. +function assertUnfrozen(name, frozen) { + if (frozen) { + throw new Error( + 'Cannot invoke `' + + name + + '` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.' + ) + } +} + +// Assert `node` is a unist node. +function assertNode(node) { + if (!node || typeof node.type !== 'string') { + throw new Error('Expected node, got `' + node + '`') + } +} + +// Assert that `complete` is `true`. +function assertDone(name, asyncName, complete) { + if (!complete) { + throw new Error( + '`' + name + '` finished async. Use `' + asyncName + '` instead' + ) + } +} + + +/***/ }), + +/***/ 88308: +/***/ ((module) => { + +"use strict"; + + +module.exports = convert + +function convert(test) { + if (test == null) { + return ok + } + + if (typeof test === 'string') { + return typeFactory(test) + } + + if (typeof test === 'object') { + return 'length' in test ? anyFactory(test) : allFactory(test) + } + + if (typeof test === 'function') { + return test + } + + throw new Error('Expected function, string, or object as test') +} + +// Utility assert each property in `test` is represented in `node`, and each +// values are strictly equal. +function allFactory(test) { + return all + + function all(node) { + var key + + for (key in test) { + if (node[key] !== test[key]) return false + } + + return true + } +} + +function anyFactory(tests) { + var checks = [] + var index = -1 + + while (++index < tests.length) { + checks[index] = convert(tests[index]) + } + + return any + + function any() { + var index = -1 + + while (++index < checks.length) { + if (checks[index].apply(this, arguments)) { + return true + } + } + + return false + } +} + +// Utility to convert a string into a function which checks a given node’s type +// for said string. +function typeFactory(test) { + return type + + function type(node) { + return Boolean(node && node.type === test) + } +} + +// Utility to return true. +function ok() { + return true +} + + +/***/ }), + +/***/ 84984: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var convert = __nccwpck_require__(88308) + +module.exports = is + +is.convert = convert + +// Assert if `test` passes for `node`. +// When a `parent` node is known the `index` of node should also be given. +function is(node, test, index, parent, context) { + var check = convert(test) + + if ( + index != null && + (typeof index !== 'number' || index < 0 || index === Infinity) + ) { + throw new Error('Expected positive finite index') + } + + if (parent != null && (!is(parent) || !parent.children)) { + throw new Error('Expected parent node') + } + + if ((parent == null) !== (index == null)) { + throw new Error('Expected both parent and index') + } + + return node && node.type && typeof node.type === 'string' + ? Boolean(check.call(context, node, index, parent)) + : false +} + + +/***/ }), + +/***/ 60299: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var visit = __nccwpck_require__(47982) + +module.exports = removePosition + +function removePosition(node, force) { + visit(node, force ? hard : soft) + return node +} + +function hard(node) { + delete node.position +} + +function soft(node) { + node.position = undefined +} + + +/***/ }), + +/***/ 63427: +/***/ ((module) => { + +module.exports = color +function color(d) { + return '\u001B[33m' + d + '\u001B[39m' +} + + +/***/ }), + +/***/ 3117: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = visitParents + +var convert = __nccwpck_require__(88308) +var color = __nccwpck_require__(63427) + +var CONTINUE = true +var SKIP = 'skip' +var EXIT = false + +visitParents.CONTINUE = CONTINUE +visitParents.SKIP = SKIP +visitParents.EXIT = EXIT + +function visitParents(tree, test, visitor, reverse) { + var step + var is + + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + visitor = test + test = null + } + + is = convert(test) + step = reverse ? -1 : 1 + + factory(tree, null, [])() + + function factory(node, index, parents) { + var value = typeof node === 'object' && node !== null ? node : {} + var name + + if (typeof value.type === 'string') { + name = + typeof value.tagName === 'string' + ? value.tagName + : typeof value.name === 'string' + ? value.name + : undefined + + visit.displayName = + 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')' + } + + return visit + + function visit() { + var grandparents = parents.concat(node) + var result = [] + var subresult + var offset + + if (!test || is(node, index, parents[parents.length - 1] || null)) { + result = toResult(visitor(node, parents)) + + if (result[0] === EXIT) { + return result + } + } + + if (node.children && result[0] !== SKIP) { + offset = (reverse ? node.children.length : -1) + step + + while (offset > -1 && offset < node.children.length) { + subresult = factory(node.children[offset], offset, grandparents)() + + if (subresult[0] === EXIT) { + return subresult + } + + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step + } + } + + return result + } + } +} + +function toResult(value) { + if (value !== null && typeof value === 'object' && 'length' in value) { + return value + } + + if (typeof value === 'number') { + return [CONTINUE, value] + } + + return [value] +} + + +/***/ }), + +/***/ 47982: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = visit + +var visitParents = __nccwpck_require__(3117) + +var CONTINUE = visitParents.CONTINUE +var SKIP = visitParents.SKIP +var EXIT = visitParents.EXIT + +visit.CONTINUE = CONTINUE +visit.SKIP = SKIP +visit.EXIT = EXIT + +function visit(tree, test, visitor, reverse) { + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + visitor = test + test = null + } + + visitParents(tree, test, overload, reverse) + + function overload(node, parents) { + var parent = parents[parents.length - 1] + var index = parent ? parent.children.indexOf(node) : null + return visitor(node, index, parent) + } +} + + +/***/ }), + +/***/ 49209: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + + +/** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + +module.exports = __nccwpck_require__(73837).deprecate; + + +/***/ }), + +/***/ 91972: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "v1", ({ + enumerable: true, + get: function () { + return _v.default; + } +})); +Object.defineProperty(exports, "v3", ({ + enumerable: true, + get: function () { + return _v2.default; + } +})); +Object.defineProperty(exports, "v4", ({ + enumerable: true, + get: function () { + return _v3.default; + } +})); +Object.defineProperty(exports, "v5", ({ + enumerable: true, + get: function () { + return _v4.default; + } +})); +Object.defineProperty(exports, "NIL", ({ + enumerable: true, + get: function () { + return _nil.default; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _version.default; + } +})); +Object.defineProperty(exports, "validate", ({ + enumerable: true, + get: function () { + return _validate.default; + } +})); +Object.defineProperty(exports, "stringify", ({ + enumerable: true, + get: function () { + return _stringify.default; + } +})); +Object.defineProperty(exports, "parse", ({ + enumerable: true, + get: function () { + return _parse.default; + } +})); + +var _v = _interopRequireDefault(__nccwpck_require__(71265)); + +var _v2 = _interopRequireDefault(__nccwpck_require__(95203)); + +var _v3 = _interopRequireDefault(__nccwpck_require__(41222)); + +var _v4 = _interopRequireDefault(__nccwpck_require__(56193)); + +var _nil = _interopRequireDefault(__nccwpck_require__(2110)); + +var _version = _interopRequireDefault(__nccwpck_require__(15988)); + +var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); + +var _parse = _interopRequireDefault(__nccwpck_require__(24713)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/***/ }), + +/***/ 88374: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return _crypto.default.createHash('md5').update(bytes).digest(); +} + +var _default = md5; +exports["default"] = _default; + +/***/ }), + +/***/ 2110: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = '00000000-0000-0000-0000-000000000000'; +exports["default"] = _default; + +/***/ }), + +/***/ 24713: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +var _default = parse; +exports["default"] = _default; + +/***/ }), + +/***/ 55496: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +exports["default"] = _default; + +/***/ }), + +/***/ 72127: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rng; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; + +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} + +/***/ }), + +/***/ 80170: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return _crypto.default.createHash('sha1').update(bytes).digest(); +} + +var _default = sha1; +exports["default"] = _default; + +/***/ }), + +/***/ 55997: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!(0, _validate.default)(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +var _default = stringify; +exports["default"] = _default; + +/***/ }), + +/***/ 71265: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _rng = _interopRequireDefault(__nccwpck_require__(72127)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || (0, _stringify.default)(b); +} + +var _default = v1; +exports["default"] = _default; + +/***/ }), + +/***/ 95203: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _v = _interopRequireDefault(__nccwpck_require__(79952)); + +var _md = _interopRequireDefault(__nccwpck_require__(88374)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v3 = (0, _v.default)('v3', 0x30, _md.default); +var _default = v3; +exports["default"] = _default; + +/***/ }), + +/***/ 79952: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +exports.URL = exports.DNS = void 0; + +var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); + +var _parse = _interopRequireDefault(__nccwpck_require__(24713)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +exports.DNS = DNS; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +exports.URL = URL; + +function _default(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = (0, _parse.default)(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return (0, _stringify.default)(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} + +/***/ }), + +/***/ 41222: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _rng = _interopRequireDefault(__nccwpck_require__(72127)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function v4(options, buf, offset) { + options = options || {}; + + const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return (0, _stringify.default)(rnds); +} + +var _default = v4; +exports["default"] = _default; + +/***/ }), + +/***/ 56193: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _v = _interopRequireDefault(__nccwpck_require__(79952)); + +var _sha = _interopRequireDefault(__nccwpck_require__(80170)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v5 = (0, _v.default)('v5', 0x50, _sha.default); +var _default = v5; +exports["default"] = _default; + +/***/ }), + +/***/ 86350: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _regex = _interopRequireDefault(__nccwpck_require__(55496)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function validate(uuid) { + return typeof uuid === 'string' && _regex.default.test(uuid); +} + +var _default = validate; +exports["default"] = _default; + +/***/ }), + +/***/ 15988: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +var _default = version; +exports["default"] = _default; + +/***/ }), + +/***/ 2832: +/***/ ((module) => { + +"use strict"; + + +module.exports = factory + +function factory(file) { + var value = String(file) + var indices = [] + var search = /\r?\n|\r/g + + while (search.exec(value)) { + indices.push(search.lastIndex) + } + + indices.push(value.length + 1) + + return { + toPoint: offsetToPoint, + toPosition: offsetToPoint, + toOffset: pointToOffset + } + + // Get the line and column-based `point` for `offset` in the bound indices. + function offsetToPoint(offset) { + var index = -1 + + if (offset > -1 && offset < indices[indices.length - 1]) { + while (++index < indices.length) { + if (indices[index] > offset) { + return { + line: index + 1, + column: offset - (indices[index - 1] || 0) + 1, + offset: offset + } + } + } + } + + return {} + } + + // Get the `offset` for a line and column-based `point` in the bound + // indices. + function pointToOffset(point) { + var line = point && point.line + var column = point && point.column + var offset + + if (!isNaN(line) && !isNaN(column) && line - 1 in indices) { + offset = (indices[line - 2] || 0) + column - 1 || 0 + } + + return offset > -1 && offset < indices[indices.length - 1] ? offset : -1 + } +} + + +/***/ }), + +/***/ 92240: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var stringify = __nccwpck_require__(27633) + +module.exports = VMessage + +// Inherit from `Error#`. +function VMessagePrototype() {} +VMessagePrototype.prototype = Error.prototype +VMessage.prototype = new VMessagePrototype() + +// Message properties. +var proto = VMessage.prototype + +proto.file = '' +proto.name = '' +proto.reason = '' +proto.message = '' +proto.stack = '' +proto.fatal = null +proto.column = null +proto.line = null + +// Construct a new VMessage. +// +// Note: We cannot invoke `Error` on the created context, as that adds readonly +// `line` and `column` attributes on Safari 9, thus throwing and failing the +// data. +function VMessage(reason, position, origin) { + var parts + var range + var location + + if (typeof position === 'string') { + origin = position + position = null + } + + parts = parseOrigin(origin) + range = stringify(position) || '1:1' + + location = { + start: {line: null, column: null}, + end: {line: null, column: null} + } + + // Node. + if (position && position.position) { + position = position.position + } + + if (position) { + // Position. + if (position.start) { + location = position + position = position.start + } else { + // Point. + location.start = position + } + } + + if (reason.stack) { + this.stack = reason.stack + reason = reason.message + } + + this.message = reason + this.name = range + this.reason = reason + this.line = position ? position.line : null + this.column = position ? position.column : null + this.location = location + this.source = parts[0] + this.ruleId = parts[1] +} + +function parseOrigin(origin) { + var result = [null, null] + var index + + if (typeof origin === 'string') { + index = origin.indexOf(':') + + if (index === -1) { + result[1] = origin + } else { + result[0] = origin.slice(0, index) + result[1] = origin.slice(index + 1) + } + } + + return result +} + + +/***/ }), + +/***/ 27633: +/***/ ((module) => { + +"use strict"; + + +var own = {}.hasOwnProperty + +module.exports = stringify + +function stringify(value) { + // Nothing. + if (!value || typeof value !== 'object') { + return '' + } + + // Node. + if (own.call(value, 'position') || own.call(value, 'type')) { + return position(value.position) + } + + // Position. + if (own.call(value, 'start') || own.call(value, 'end')) { + return position(value) + } + + // Point. + if (own.call(value, 'line') || own.call(value, 'column')) { + return point(value) + } + + // ? + return '' +} + +function point(point) { + if (!point || typeof point !== 'object') { + point = {} + } + + return index(point.line) + ':' + index(point.column) +} + +function position(pos) { + if (!pos || typeof pos !== 'object') { + pos = {} + } + + return point(pos.start) + '-' + point(pos.end) +} + +function index(value) { + return value && typeof value === 'number' ? value : 1 +} + + +/***/ }), + +/***/ 67532: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = __nccwpck_require__(3570) + + +/***/ }), + +/***/ 95985: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var p = __nccwpck_require__(80335) +var proc = __nccwpck_require__(55576) +var buffer = __nccwpck_require__(6324) + +module.exports = VFile + +var own = {}.hasOwnProperty + +// Order of setting (least specific to most), we need this because otherwise +// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a +// stem can be set. +var order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'] + +VFile.prototype.toString = toString + +// Access full path (`~/index.min.js`). +Object.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath}) + +// Access parent path (`~`). +Object.defineProperty(VFile.prototype, 'dirname', { + get: getDirname, + set: setDirname +}) + +// Access basename (`index.min.js`). +Object.defineProperty(VFile.prototype, 'basename', { + get: getBasename, + set: setBasename +}) + +// Access extname (`.js`). +Object.defineProperty(VFile.prototype, 'extname', { + get: getExtname, + set: setExtname +}) + +// Access stem (`index.min`). +Object.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem}) + +// Construct a new file. +function VFile(options) { + var prop + var index + + if (!options) { + options = {} + } else if (typeof options === 'string' || buffer(options)) { + options = {contents: options} + } else if ('message' in options && 'messages' in options) { + return options + } + + if (!(this instanceof VFile)) { + return new VFile(options) + } + + this.data = {} + this.messages = [] + this.history = [] + this.cwd = proc.cwd() + + // Set path related properties in the correct order. + index = -1 + + while (++index < order.length) { + prop = order[index] + + if (own.call(options, prop)) { + this[prop] = options[prop] + } + } + + // Set non-path related properties. + for (prop in options) { + if (order.indexOf(prop) < 0) { + this[prop] = options[prop] + } + } +} + +function getPath() { + return this.history[this.history.length - 1] +} + +function setPath(path) { + assertNonEmpty(path, 'path') + + if (this.path !== path) { + this.history.push(path) + } +} + +function getDirname() { + return typeof this.path === 'string' ? p.dirname(this.path) : undefined +} + +function setDirname(dirname) { + assertPath(this.path, 'dirname') + this.path = p.join(dirname || '', this.basename) +} + +function getBasename() { + return typeof this.path === 'string' ? p.basename(this.path) : undefined +} + +function setBasename(basename) { + assertNonEmpty(basename, 'basename') + assertPart(basename, 'basename') + this.path = p.join(this.dirname || '', basename) +} + +function getExtname() { + return typeof this.path === 'string' ? p.extname(this.path) : undefined +} + +function setExtname(extname) { + assertPart(extname, 'extname') + assertPath(this.path, 'extname') + + if (extname) { + if (extname.charCodeAt(0) !== 46 /* `.` */) { + throw new Error('`extname` must start with `.`') + } + + if (extname.indexOf('.', 1) > -1) { + throw new Error('`extname` cannot contain multiple dots') + } + } + + this.path = p.join(this.dirname, this.stem + (extname || '')) +} + +function getStem() { + return typeof this.path === 'string' + ? p.basename(this.path, this.extname) + : undefined +} + +function setStem(stem) { + assertNonEmpty(stem, 'stem') + assertPart(stem, 'stem') + this.path = p.join(this.dirname || '', stem + (this.extname || '')) +} + +// Get the value of the file. +function toString(encoding) { + return (this.contents || '').toString(encoding) +} + +// Assert that `part` is not a path (i.e., does not contain `p.sep`). +function assertPart(part, name) { + if (part && part.indexOf(p.sep) > -1) { + throw new Error( + '`' + name + '` cannot be a path: did not expect `' + p.sep + '`' + ) + } +} + +// Assert that `part` is not empty. +function assertNonEmpty(part, name) { + if (!part) { + throw new Error('`' + name + '` cannot be empty') + } +} + +// Assert `path` exists. +function assertPath(path, name) { + if (!path) { + throw new Error('Setting `' + name + '` requires `path` to be set too') + } +} + + +/***/ }), + +/***/ 3570: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var VMessage = __nccwpck_require__(92240) +var VFile = __nccwpck_require__(95985) + +module.exports = VFile + +VFile.prototype.message = message +VFile.prototype.info = info +VFile.prototype.fail = fail + +// Create a message with `reason` at `position`. +// When an error is passed in as `reason`, copies the stack. +function message(reason, position, origin) { + var message = new VMessage(reason, position, origin) + + if (this.path) { + message.name = this.path + ':' + message.name + message.file = this.path + } + + message.fatal = false + + this.messages.push(message) + + return message +} + +// Fail: creates a vmessage, associates it with the file, and throws it. +function fail() { + var message = this.message.apply(this, arguments) + + message.fatal = true + + throw message +} + +// Info: creates a vmessage, associates it with the file, and marks the fatality +// as null. +function info() { + var message = this.message.apply(this, arguments) + + message.fatal = null + + return message +} + + +/***/ }), + +/***/ 80335: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = __nccwpck_require__(71017) + + +/***/ }), + +/***/ 55576: +/***/ ((module) => { + +"use strict"; + + +module.exports = process + + +/***/ }), + +/***/ 84586: +/***/ ((module) => { + +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + + +/***/ }), + +/***/ 76738: +/***/ ((module) => { + +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} + + +/***/ }), + +/***/ 39491: +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ 14300: +/***/ ((module) => { + +"use strict"; +module.exports = require("buffer"); + +/***/ }), + +/***/ 22057: +/***/ ((module) => { + +"use strict"; +module.exports = require("constants"); + +/***/ }), + +/***/ 6113: +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto"); + +/***/ }), + +/***/ 82361: +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ 57147: +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ 13685: +/***/ ((module) => { + +"use strict"; +module.exports = require("http"); + +/***/ }), + +/***/ 95687: +/***/ ((module) => { + +"use strict"; +module.exports = require("https"); + +/***/ }), + +/***/ 98188: +/***/ ((module) => { + +"use strict"; +module.exports = require("module"); + +/***/ }), + +/***/ 41808: +/***/ ((module) => { + +"use strict"; +module.exports = require("net"); + +/***/ }), + +/***/ 22037: +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ 71017: +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ 12781: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 71576: +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ 24404: +/***/ ((module) => { + +"use strict"; +module.exports = require("tls"); + +/***/ }), + +/***/ 76224: +/***/ ((module) => { + +"use strict"; +module.exports = require("tty"); + +/***/ }), + +/***/ 57310: +/***/ ((module) => { + +"use strict"; +module.exports = require("url"); + +/***/ }), + +/***/ 73837: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 26144: +/***/ ((module) => { + +"use strict"; +module.exports = require("vm"); + +/***/ }), + +/***/ 71267: +/***/ ((module) => { + +"use strict"; +module.exports = require("worker_threads"); + +/***/ }), + +/***/ 87952: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { isColorSupported } = __nccwpck_require__(65595) +const pump = __nccwpck_require__(89595) +const { Transform } = __nccwpck_require__(30675) +const abstractTransport = __nccwpck_require__(90795) +const sjs = __nccwpck_require__(29131) +const colors = __nccwpck_require__(84022) +const { ERROR_LIKE_KEYS, MESSAGE_KEY, TIMESTAMP_KEY, LEVEL_KEY, LEVEL_NAMES } = __nccwpck_require__(73985) +const { + isObject, + prettifyErrorLog, + prettifyLevel, + prettifyMessage, + prettifyMetadata, + prettifyObject, + prettifyTime, + buildSafeSonicBoom, + filterLog +} = __nccwpck_require__(34372) + +const jsonParser = input => { + try { + return { value: sjs.parse(input, { protoAction: 'remove' }) } + } catch (err) { + return { err } + } +} + +const defaultOptions = { + colorize: isColorSupported, + crlf: false, + errorLikeObjectKeys: ERROR_LIKE_KEYS, + errorProps: '', + customLevels: null, + customColors: null, + levelFirst: false, + messageKey: MESSAGE_KEY, + messageFormat: false, + timestampKey: TIMESTAMP_KEY, + translateTime: false, + useMetadata: false, + outputStream: process.stdout, + customPrettifiers: {}, + hideObject: false, + singleLine: false +} + +function prettyFactory (options) { + const opts = Object.assign({}, defaultOptions, options) + const EOL = opts.crlf ? '\r\n' : '\n' + const IDENT = ' ' + const messageKey = opts.messageKey + const levelKey = opts.levelKey + const levelLabel = opts.levelLabel + const minimumLevel = opts.minimumLevel + const messageFormat = opts.messageFormat + const timestampKey = opts.timestampKey + const errorLikeObjectKeys = opts.errorLikeObjectKeys + const errorProps = opts.errorProps.split(',') + const customLevels = opts.customLevels + ? opts.customLevels + .split(',') + .reduce((agg, value, idx) => { + const [levelName, levelIdx = idx] = value.split(':') + + agg[levelIdx] = levelName.toUpperCase() + + return agg + }, { default: 'USERLVL' }) + : undefined + const customLevelNames = opts.customLevels + ? opts.customLevels + .split(',') + .reduce((agg, value, idx) => { + const [levelName, levelIdx = idx] = value.split(':') + + agg[levelName] = levelIdx + + return agg + }, {}) + : undefined + const customColors = opts.customColors + ? opts.customColors + .split(',') + .reduce((agg, value) => { + const [level, color] = value.split(':') + + const levelNum = customLevelNames !== undefined ? customLevelNames[level] : LEVEL_NAMES[level] + const colorIdx = levelNum !== undefined ? levelNum : level + + agg.push([colorIdx, color]) + + return agg + }, []) + : undefined + const customPrettifiers = opts.customPrettifiers + const ignoreKeys = opts.ignore ? new Set(opts.ignore.split(',')) : undefined + const hideObject = opts.hideObject + const singleLine = opts.singleLine + const colorizer = colors(opts.colorize, customColors) + + return pretty + + function pretty (inputData) { + let log + if (!isObject(inputData)) { + const parsed = jsonParser(inputData) + if (parsed.err || !isObject(parsed.value)) { + // pass through + return inputData + EOL + } + log = parsed.value + } else { + log = inputData + } + + if (minimumLevel) { + const minimum = (customLevelNames === undefined ? LEVEL_NAMES[minimumLevel] : customLevelNames[minimumLevel]) || Number(minimumLevel) + const level = log[levelKey === undefined ? LEVEL_KEY : levelKey] + if (level < minimum) return + } + + const prettifiedMessage = prettifyMessage({ log, messageKey, colorizer, messageFormat, levelLabel }) + + if (ignoreKeys) { + log = filterLog(log, ignoreKeys) + } + + const prettifiedLevel = prettifyLevel({ log, colorizer, levelKey, prettifier: customPrettifiers.level, customLevels, customLevelNames }) + const prettifiedMetadata = prettifyMetadata({ log, prettifiers: customPrettifiers }) + const prettifiedTime = prettifyTime({ log, translateFormat: opts.translateTime, timestampKey, prettifier: customPrettifiers.time }) + + let line = '' + if (opts.levelFirst && prettifiedLevel) { + line = `${prettifiedLevel}` + } + + if (prettifiedTime && line === '') { + line = `${prettifiedTime}` + } else if (prettifiedTime) { + line = `${line} ${prettifiedTime}` + } + + if (!opts.levelFirst && prettifiedLevel) { + if (line.length > 0) { + line = `${line} ${prettifiedLevel}` + } else { + line = prettifiedLevel + } + } + + if (prettifiedMetadata) { + if (line.length > 0) { + line = `${line} ${prettifiedMetadata}:` + } else { + line = prettifiedMetadata + } + } + + if (line.endsWith(':') === false && line !== '') { + line += ':' + } + + if (prettifiedMessage) { + if (line.length > 0) { + line = `${line} ${prettifiedMessage}` + } else { + line = prettifiedMessage + } + } + + if (line.length > 0 && !singleLine) { + line += EOL + } + + // pino@7+ does not log this anymore + if (log.type === 'Error' && log.stack) { + const prettifiedErrorLog = prettifyErrorLog({ + log, + errorLikeKeys: errorLikeObjectKeys, + errorProperties: errorProps, + ident: IDENT, + eol: EOL + }) + if (singleLine) line += EOL + line += prettifiedErrorLog + } else if (!hideObject) { + const skipKeys = [messageKey, levelKey, timestampKey].filter(key => typeof log[key] === 'string' || typeof log[key] === 'number') + const prettifiedObject = prettifyObject({ + input: log, + skipKeys, + customPrettifiers, + errorLikeKeys: errorLikeObjectKeys, + eol: EOL, + ident: IDENT, + singleLine, + colorizer + }) + + // In single line mode, include a space only if prettified version isn't empty + if (singleLine && !/^\s$/.test(prettifiedObject)) { + line += ' ' + } + line += prettifiedObject + } + + return line + } +} + +function build (opts = {}) { + const pretty = prettyFactory(opts) + return abstractTransport(function (source) { + const stream = new Transform({ + objectMode: true, + autoDestroy: true, + transform (chunk, enc, cb) { + const line = pretty(chunk) + cb(null, line) + } + }) + + let destination + + if (typeof opts.destination === 'object' && typeof opts.destination.write === 'function') { + destination = opts.destination + } else { + destination = buildSafeSonicBoom({ + dest: opts.destination || 1, + append: opts.append, + mkdir: opts.mkdir, + sync: opts.sync // by default sonic will be async + }) + } + + source.on('unknown', function (line) { + destination.write(line + '\n') + }) + + pump(source, stream, destination) + return stream + }, { parse: 'lines' }) +} + +module.exports = build +module.exports.prettyFactory = prettyFactory +module.exports.colorizerFactory = colors +module.exports["default"] = build + + +/***/ }), + +/***/ 84022: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { LEVELS, LEVEL_NAMES } = __nccwpck_require__(73985) + +const nocolor = input => input +const plain = { + default: nocolor, + 60: nocolor, + 50: nocolor, + 40: nocolor, + 30: nocolor, + 20: nocolor, + 10: nocolor, + message: nocolor, + greyMessage: nocolor +} + +const { createColors } = __nccwpck_require__(65595) +const availableColors = createColors({ useColor: true }) +const { white, bgRed, red, yellow, green, blue, gray, cyan } = availableColors + +const colored = { + default: white, + 60: bgRed, + 50: red, + 40: yellow, + 30: green, + 20: blue, + 10: gray, + message: cyan, + greyMessage: gray +} + +function resolveCustomColoredColorizer (customColors) { + return customColors.reduce( + function (agg, [level, color]) { + agg[level] = typeof availableColors[color] === 'function' ? availableColors[color] : white + + return agg + }, + { default: white, message: cyan, greyMessage: gray } + ) +} + +function colorizeLevel (level, colorizer, { customLevels, customLevelNames } = {}) { + const levels = customLevels || LEVELS + const levelNames = customLevelNames || LEVEL_NAMES + + let levelNum = 'default' + if (Number.isInteger(+level)) { + levelNum = Object.prototype.hasOwnProperty.call(levels, level) ? level : levelNum + } else { + levelNum = Object.prototype.hasOwnProperty.call(levelNames, level.toLowerCase()) ? levelNames[level.toLowerCase()] : levelNum + } + + const levelStr = levels[levelNum] + + return Object.prototype.hasOwnProperty.call(colorizer, levelNum) ? colorizer[levelNum](levelStr) : colorizer.default(levelStr) +} + +function plainColorizer (level, opts) { + return colorizeLevel(level, plain, opts) +} +plainColorizer.message = plain.message +plainColorizer.greyMessage = plain.greyMessage + +function coloredColorizer (level, opts) { + return colorizeLevel(level, colored, opts) +} +coloredColorizer.message = colored.message +coloredColorizer.greyMessage = colored.greyMessage + +function customColoredColorizerFactory (customColors) { + const customColored = resolveCustomColoredColorizer(customColors) + + const customColoredColorizer = function (level, opts) { + return colorizeLevel(level, customColored, opts) + } + customColoredColorizer.message = customColoredColorizer.message || customColored.message + customColoredColorizer.greyMessage = customColoredColorizer.greyMessage || customColored.greyMessage + + return customColoredColorizer +} + +/** + * Factory function get a function to colorized levels. The returned function + * also includes a `.message(str)` method to colorize strings. + * + * @param {boolean} [useColors=false] When `true` a function that applies standard + * terminal colors is returned. + * @param {array[]} [customColors] Touple where first item of each array is the level index and the second item is the color + * + * @returns {function} `function (level) {}` has a `.message(str)` method to + * apply colorization to a string. The core function accepts either an integer + * `level` or a `string` level. The integer level will map to a known level + * string or to `USERLVL` if not known. The string `level` will map to the same + * colors as the integer `level` and will also default to `USERLVL` if the given + * string is not a recognized level name. + */ +module.exports = function getColorizer (useColors = false, customColors) { + if (useColors && customColors !== undefined) { + return customColoredColorizerFactory(customColors) + } else if (useColors) { + return coloredColorizer + } + + return plainColorizer +} + + +/***/ }), + +/***/ 73985: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + DATE_FORMAT: 'yyyy-mm-dd HH:MM:ss.l o', + + ERROR_LIKE_KEYS: ['err', 'error'], + + MESSAGE_KEY: 'msg', + + LEVEL_KEY: 'level', + + LEVEL_LABEL: 'levelLabel', + + TIMESTAMP_KEY: 'time', + + LEVELS: { + default: 'USERLVL', + 60: 'FATAL', + 50: 'ERROR', + 40: 'WARN', + 30: 'INFO', + 20: 'DEBUG', + 10: 'TRACE' + }, + + LEVEL_NAMES: { + fatal: 60, + error: 50, + warn: 40, + info: 30, + debug: 20, + trace: 10 + }, + + // Object keys that probably came from a logger like Pino or Bunyan. + LOGGER_KEYS: [ + 'pid', + 'hostname', + 'name', + 'level', + 'time', + 'timestamp', + 'caller' + ] +} + + +/***/ }), + +/***/ 34372: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const clone = __nccwpck_require__(85314)({ circles: true }) +const dateformat = __nccwpck_require__(74598) +const SonicBoom = __nccwpck_require__(93565) +const stringifySafe = __nccwpck_require__(50460) +const { isMainThread } = __nccwpck_require__(71267) +const defaultColorizer = __nccwpck_require__(84022)() +const { + DATE_FORMAT, + ERROR_LIKE_KEYS, + MESSAGE_KEY, + LEVEL_KEY, + LEVEL_LABEL, + TIMESTAMP_KEY, + LOGGER_KEYS, + LEVELS +} = __nccwpck_require__(73985) + +module.exports = { + isObject, + prettifyErrorLog, + prettifyLevel, + prettifyMessage, + prettifyMetadata, + prettifyObject, + prettifyTime, + buildSafeSonicBoom, + filterLog +} + +module.exports.internals = { + formatTime, + joinLinesWithIndentation, + prettifyError, + deleteLogProperty, + splitIgnoreKey, + createDate, + isValidDate +} + +/** + * Converts a given `epoch` to a desired display format. + * + * @param {number|string} epoch The time to convert. May be any value that is + * valid for `new Date()`. + * @param {boolean|string} [translateTime=false] When `false`, the given `epoch` + * will simply be returned. When `true`, the given `epoch` will be converted + * to a string at UTC using the `DATE_FORMAT` constant. If `translateTime` is + * a string, the following rules are available: + * + * - `<format string>`: The string is a literal format string. This format + * string will be used to interpret the `epoch` and return a display string + * at UTC. + * - `SYS:STANDARD`: The returned display string will follow the `DATE_FORMAT` + * constant at the system's local timezone. + * - `SYS:<format string>`: The returned display string will follow the given + * `<format string>` at the system's local timezone. + * - `UTC:<format string>`: The returned display string will follow the given + * `<format string>` at UTC. + * + * @returns {number|string} The formatted time. + */ +function formatTime (epoch, translateTime = false) { + if (translateTime === false) { + return epoch + } + + const instant = createDate(epoch) + + // If the Date is invalid, do not attempt to format + if (!isValidDate(instant)) { + return epoch + } + + if (translateTime === true) { + return dateformat(instant, 'UTC:' + DATE_FORMAT) + } + + const upperFormat = translateTime.toUpperCase() + if (upperFormat === 'SYS:STANDARD') { + return dateformat(instant, DATE_FORMAT) + } + + const prefix = upperFormat.substr(0, 4) + if (prefix === 'SYS:' || prefix === 'UTC:') { + if (prefix === 'UTC:') { + return dateformat(instant, translateTime) + } + return dateformat(instant, translateTime.slice(4)) + } + + return dateformat(instant, `UTC:${translateTime}`) +} + +/** + * Constructs a JS Date from a number or string. Accepts any single number + * or single string argument that is valid for the Date() constructor, + * or an epoch as a string. + * + * @param {string|number} epoch The representation of the Date. + * + * @returns {Date} The constructed Date. + */ +function createDate (epoch) { + // If epoch is already a valid argument, return the valid Date + let date = new Date(epoch) + if (isValidDate(date)) { + return date + } + + // Convert to a number to permit epoch as a string + date = new Date(+epoch) + return date +} + +/** + * Checks if the argument is a JS Date and not 'Invalid Date'. + * + * @param {Date} date The date to check. + * + * @returns {boolean} true if the argument is a JS Date and not 'Invalid Date'. + */ +function isValidDate (date) { + return date instanceof Date && !Number.isNaN(date.getTime()) +} + +function isObject (input) { + return Object.prototype.toString.apply(input) === '[object Object]' +} + +/** + * Given a string with line separators, either `\r\n` or `\n`, add indentation + * to all lines subsequent to the first line and rejoin the lines using an + * end of line sequence. + * + * @param {object} input + * @param {string} input.input The string to split and reformat. + * @param {string} [input.ident] The indentation string. Default: ` ` (4 spaces). + * @param {string} [input.eol] The end of line sequence to use when rejoining + * the lines. Default: `'\n'`. + * + * @returns {string} A string with lines subsequent to the first indented + * with the given indentation sequence. + */ +function joinLinesWithIndentation ({ input, ident = ' ', eol = '\n' }) { + const lines = input.split(/\r?\n/) + for (let i = 1; i < lines.length; i += 1) { + lines[i] = ident + lines[i] + } + return lines.join(eol) +} + +/** + * Given a log object that has a `type: 'Error'` key, prettify the object and + * return the result. In other + * + * @param {object} input + * @param {object} input.log The error log to prettify. + * @param {string} [input.messageKey] The name of the key that contains a + * general log message. This is not the error's message property but the logger + * messsage property. Default: `MESSAGE_KEY` constant. + * @param {string} [input.ident] The sequence to use for indentation. Default: `' '`. + * @param {string} [input.eol] The sequence to use for EOL. Default: `'\n'`. + * @param {string[]} [input.errorLikeKeys] A set of keys that should be considered + * to have error objects as values. Default: `ERROR_LIKE_KEYS` constant. + * @param {string[]} [input.errorProperties] A set of specific error object + * properties, that are not the value of `messageKey`, `type`, or `stack`, to + * include in the prettified result. The first entry in the list may be `'*'` + * to indicate that all sibiling properties should be prettified. Default: `[]`. + * + * @returns {string} A sring that represents the prettified error log. + */ +function prettifyErrorLog ({ + log, + messageKey = MESSAGE_KEY, + ident = ' ', + eol = '\n', + errorLikeKeys = ERROR_LIKE_KEYS, + errorProperties = [] +}) { + const stack = log.stack + const joinedLines = joinLinesWithIndentation({ input: stack, ident, eol }) + let result = `${ident}${joinedLines}${eol}` + + if (errorProperties.length > 0) { + const excludeProperties = LOGGER_KEYS.concat(messageKey, 'type', 'stack') + let propertiesToPrint + if (errorProperties[0] === '*') { + // Print all sibling properties except for the standard exclusions. + propertiesToPrint = Object.keys(log).filter(k => excludeProperties.includes(k) === false) + } else { + // Print only specified properties unless the property is a standard exclusion. + propertiesToPrint = errorProperties.filter(k => excludeProperties.includes(k) === false) + } + + for (let i = 0; i < propertiesToPrint.length; i += 1) { + const key = propertiesToPrint[i] + if (key in log === false) continue + if (isObject(log[key])) { + // The nested object may have "logger" type keys but since they are not + // at the root level of the object being processed, we want to print them. + // Thus, we invoke with `excludeLoggerKeys: false`. + const prettifiedObject = prettifyObject({ input: log[key], errorLikeKeys, excludeLoggerKeys: false, eol, ident: ident + ident }) + result = `${result}${ident}${key}: {${eol}${prettifiedObject}${ident}}${eol}` + continue + } + result = `${result}${ident}${key}: ${log[key]}${eol}` + } + } + + return result +} + +/** + * Checks if the passed in log has a `level` value and returns a prettified + * string for that level if so. + * + * @param {object} input + * @param {object} input.log The log object. + * @param {function} [input.colorizer] A colorizer function that accepts a level + * value and returns a colorized string. Default: a no-op colorizer. + * @param {string} [input.levelKey='level'] The key to find the level under. + * @param {function} [input.prettifier] A user-supplied formatter to be called instead of colorizer. + * @param {object} [input.customLevels] The custom levels where key as the level index and value as the level name. + * @param {object} [input.customLevelNames] The custom level names where key is the level name and value is the level index. + * + * @returns {undefined|string} If `log` does not have a `level` property then + * `undefined` will be returned. Otherwise, a string from the specified + * `colorizer` is returned. + */ +function prettifyLevel ({ log, colorizer = defaultColorizer, levelKey = LEVEL_KEY, prettifier, customLevels, customLevelNames }) { + if (levelKey in log === false) return undefined + const output = log[levelKey] + return prettifier ? prettifier(output) : colorizer(output, { customLevels, customLevelNames }) +} + +/** + * Prettifies a message string if the given `log` has a message property. + * + * @param {object} input + * @param {object} input.log The log object with the message to colorize. + * @param {string} [input.messageKey='msg'] The property of the `log` that is the + * message to be prettified. + * @param {string|function} [input.messageFormat=undefined] A format string or function that defines how the + * logged message should be formatted, e.g. `'{level} - {pid}'`. + * @param {function} [input.colorizer] A colorizer function that has a + * `.message(str)` method attached to it. This function should return a colorized + * string which will be the "prettified" message. Default: a no-op colorizer. + * @param {string} [input.levelLabel='levelLabel'] The label used to output the log level + * @param {string} [input.levelKey='level'] The key to find the level under. + * @param {object} [input.customLevels] The custom levels where key as the level index and value as the level name. + * + * @returns {undefined|string} If the message key is not found, or the message + * key is not a string, then `undefined` will be returned. Otherwise, a string + * that is the prettified message. + */ +function prettifyMessage ({ log, messageFormat, messageKey = MESSAGE_KEY, colorizer = defaultColorizer, levelLabel = LEVEL_LABEL, levelKey = LEVEL_KEY, customLevels }) { + if (messageFormat && typeof messageFormat === 'string') { + const message = String(messageFormat).replace(/{([^{}]+)}/g, function (match, p1) { + // return log level as string instead of int + if (p1 === levelLabel && log[levelKey]) { + return customLevels === undefined ? LEVELS[log[levelKey]] : customLevels[log[levelKey]] + } + // Parse nested key access, e.g. `{keyA.subKeyB}`. + return p1.split('.').reduce(function (prev, curr) { + if (prev && prev[curr]) { + return prev[curr] + } + return '' + }, log) + }) + return colorizer.message(message) + } + if (messageFormat && typeof messageFormat === 'function') { + const msg = messageFormat(log, messageKey, levelLabel) + return colorizer.message(msg) + } + if (messageKey in log === false) return undefined + if (typeof log[messageKey] !== 'string') return undefined + return colorizer.message(log[messageKey]) +} + +/** + * Prettifies metadata that is usually present in a Pino log line. It looks for + * fields `name`, `pid`, `hostname`, and `caller` and returns a formatted string using + * the fields it finds. + * + * @param {object} input + * @param {object} input.log The log that may or may not contain metadata to + * be prettified. + * @param {object} input.prettifiers A set of functions used to prettify each + * key of the input log's metadata. The keys are the keys of the metadata (like + * `hostname`, `pid`, `name`, etc), and the values are functions which take the + * metadata value and return a string. Each key is optional. + * + * @returns {undefined|string} If no metadata is found then `undefined` is + * returned. Otherwise, a string of prettified metadata is returned. + */ +function prettifyMetadata ({ log, prettifiers = {} }) { + let line = '' + + if (log.name || log.pid || log.hostname) { + line += '(' + + if (log.name) { + line += prettifiers.name ? prettifiers.name(log.name) : log.name + } + + if (log.pid) { + const prettyPid = prettifiers.pid ? prettifiers.pid(log.pid) : log.pid + if (log.name && log.pid) { + line += '/' + prettyPid + } else { + line += prettyPid + } + } + + if (log.hostname) { + // If `pid` and `name` were in the ignore keys list then we don't need + // the leading space. + line += `${line === '(' ? 'on' : ' on'} ${prettifiers.hostname ? prettifiers.hostname(log.hostname) : log.hostname}` + } + + line += ')' + } + + if (log.caller) { + line += `${line === '' ? '' : ' '}<${prettifiers.caller ? prettifiers.caller(log.caller) : log.caller}>` + } + + if (line === '') { + return undefined + } else { + return line + } +} + +/** + * Prettifies a standard object. Special care is taken when processing the object + * to handle child objects that are attached to keys known to contain error + * objects. + * + * @param {object} input + * @param {object} input.input The object to prettify. + * @param {string} [input.ident] The identation sequence to use. Default: `' '`. + * @param {string} [input.eol] The EOL sequence to use. Default: `'\n'`. + * @param {string[]} [input.skipKeys] A set of object keys to exclude from the + * prettified result. Default: `[]`. + * @param {Object<string, function>} [input.customPrettifiers] Dictionary of + * custom prettifiers. Default: `{}`. + * @param {string[]} [input.errorLikeKeys] A set of object keys that contain + * error objects. Default: `ERROR_LIKE_KEYS` constant. + * @param {boolean} [input.excludeLoggerKeys] Indicates if known logger specific + * keys should be excluded from prettification. Default: `true`. + * @param {boolean} [input.singleLine] Should non-error keys all be formatted + * on a single line? This does NOT apply to errors, which will still be + * multi-line. Default: `false` + * + * @returns {string} The prettified string. This can be as little as `''` if + * there was nothing to prettify. + */ +function prettifyObject ({ + input, + ident = ' ', + eol = '\n', + skipKeys = [], + customPrettifiers = {}, + errorLikeKeys = ERROR_LIKE_KEYS, + excludeLoggerKeys = true, + singleLine = false, + colorizer = defaultColorizer +}) { + const keysToIgnore = [].concat(skipKeys) + + if (excludeLoggerKeys === true) Array.prototype.push.apply(keysToIgnore, LOGGER_KEYS) + + let result = '' + + // Split object keys into two categories: error and non-error + const { plain, errors } = Object.entries(input).reduce(({ plain, errors }, [k, v]) => { + if (keysToIgnore.includes(k) === false) { + // Pre-apply custom prettifiers, because all 3 cases below will need this + const pretty = typeof customPrettifiers[k] === 'function' + ? customPrettifiers[k](v, k, input) + : v + if (errorLikeKeys.includes(k)) { + errors[k] = pretty + } else { + plain[k] = pretty + } + } + return { plain, errors } + }, { plain: {}, errors: {} }) + + if (singleLine) { + // Stringify the entire object as a single JSON line + if (Object.keys(plain).length > 0) { + result += colorizer.greyMessage(stringifySafe(plain)) + } + result += eol + } else { + // Put each object entry on its own line + Object.entries(plain).forEach(([keyName, keyValue]) => { + // custom prettifiers are already applied above, so we can skip it now + const lines = typeof customPrettifiers[keyName] === 'function' + ? keyValue + : stringifySafe(keyValue, null, 2) + + if (lines === undefined) return + + const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol }) + result += `${ident}${keyName}:${joinedLines.startsWith(eol) ? '' : ' '}${joinedLines}${eol}` + }) + } + + // Errors + Object.entries(errors).forEach(([keyName, keyValue]) => { + // custom prettifiers are already applied above, so we can skip it now + const lines = typeof customPrettifiers[keyName] === 'function' + ? keyValue + : stringifySafe(keyValue, null, 2) + + if (lines === undefined) return + + result += prettifyError({ keyName, lines, eol, ident }) + }) + + return result +} + +/** + * Prettifies a timestamp if the given `log` has either `time`, `timestamp` or custom specified timestamp + * property. + * + * @param {object} input + * @param {object} input.log The log object with the timestamp to be prettified. + * @param {string} [input.timestampKey='time'] The log property that should be used to resolve timestamp value + * @param {boolean|string} [input.translateFormat=undefined] When `true` the + * timestamp will be prettified into a string at UTC using the default + * `DATE_FORMAT`. If a string, then `translateFormat` will be used as the format + * string to determine the output; see the `formatTime` function for details. + * @param {function} [input.prettifier] A user-supplied formatter for altering output. + * + * @returns {undefined|string} If a timestamp property cannot be found then + * `undefined` is returned. Otherwise, the prettified time is returned as a + * string. + */ +function prettifyTime ({ log, timestampKey = TIMESTAMP_KEY, translateFormat = undefined, prettifier }) { + let time = null + + if (timestampKey in log) { + time = log[timestampKey] + } else if ('timestamp' in log) { + time = log.timestamp + } + + if (time === null) return undefined + const output = translateFormat ? formatTime(time, translateFormat) : time + + return prettifier ? prettifier(output) : `[${output}]` +} + +/** + * Prettifies an error string into a multi-line format. + * @param {object} input + * @param {string} input.keyName The key assigned to this error in the log object + * @param {string} input.lines The STRINGIFIED error. If the error field has a + * custom prettifier, that should be pre-applied as well + * @param {string} input.ident The indentation sequence to use + * @param {string} input.eol The EOL sequence to use + */ +function prettifyError ({ keyName, lines, eol, ident }) { + let result = '' + const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol }) + const splitLines = `${ident}${keyName}: ${joinedLines}${eol}`.split(eol) + + for (let j = 0; j < splitLines.length; j += 1) { + if (j !== 0) result += eol + + const line = splitLines[j] + if (/^\s*"stack"/.test(line)) { + const matches = /^(\s*"stack":)\s*(".*"),?$/.exec(line) + /* istanbul ignore else */ + if (matches && matches.length === 3) { + const indentSize = /^\s*/.exec(line)[0].length + 4 + const indentation = ' '.repeat(indentSize) + const stackMessage = matches[2] + result += matches[1] + eol + indentation + JSON.parse(stackMessage).replace(/\n/g, eol + indentation) + } else { + result += line + } + } else { + result += line + } + } + + return result +} + +/** + * Splits the input key delimited by a dot character but not when it is preceded + * by a backslash. + * + * @param {string} key A string identifying the property. + * + * @returns {string[]} Returns a list of string containing each delimited property. + * e.g. `'prop2\.domain\.corp.prop2'` should return [ 'prop2.domain.com', 'prop2' ] + */ +function splitIgnoreKey (key) { + const result = [] + let backslash = false + let segment = '' + + for (let i = 0; i < key.length; i++) { + const c = key.charAt(i) + + if (c === '\\') { + backslash = true + continue + } + + if (backslash) { + backslash = false + segment += c + continue + } + + /* Non-escaped dot, push to result */ + if (c === '.') { + result.push(segment) + segment = '' + continue + } + + segment += c + } + + /* Push last entry to result */ + if (segment.length) { + result.push(segment) + } + + return result +} + +/** + * Deletes a specified property from a log object if it exists. + * This function mutates the passed in `log` object. + * + * @param {object} log The log object to be modified. + * @param {string} property A string identifying the property to be deleted from + * the log object. Accepts nested properties delimited by a `.` + * Delimiter can be escaped to preserve property names that contain the delimiter. + * e.g. `'prop1.prop2'` or `'prop2\.domain\.corp.prop2'` + */ +function deleteLogProperty (log, property) { + const props = splitIgnoreKey(property) + const propToDelete = props.pop() + + props.forEach((prop) => { + if (!Object.prototype.hasOwnProperty.call(log, prop)) { + return + } + log = log[prop] + }) + + delete log[propToDelete] +} + +/** + * Filter a log object by removing any ignored keys. + * + * @param {object} log The log object to be modified. + * @param {string} ignoreKeys An array of strings identifying the properties to be removed. + * + * @returns {object} A new `log` object instance that does not include the ignored keys. + */ +function filterLog (log, ignoreKeys) { + const logCopy = clone(log) + ignoreKeys.forEach((ignoreKey) => { + deleteLogProperty(logCopy, ignoreKey) + }) + return logCopy +} + +function noop () {} + +/** + * Creates a safe SonicBoom instance + * + * @param {object} opts Options for SonicBoom + * + * @returns {object} A new SonicBoom stream + */ +function buildSafeSonicBoom (opts) { + const stream = new SonicBoom(opts) + stream.on('error', filterBrokenPipe) + // if we are sync: false, we must flush on exit + if (!opts.sync && isMainThread) { + setupOnExit(stream) + } + return stream + + function filterBrokenPipe (err) { + if (err.code === 'EPIPE') { + stream.write = noop + stream.end = noop + stream.flushSync = noop + stream.destroy = noop + return + } + stream.removeListener('error', filterBrokenPipe) + } +} + +function setupOnExit (stream) { + /* istanbul ignore next */ + if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) { + // This is leak free, it does not leave event handlers + const onExit = __nccwpck_require__(41045) + + onExit.register(stream, autoEnd) + + stream.on('close', function () { + onExit.unregister(stream) + }) + } +} + +/* istanbul ignore next */ +function autoEnd (stream, eventName) { + // This check is needed only on some platforms + + if (stream.destroyed) { + return + } + + if (eventName === 'beforeExit') { + // We still have an event loop, let's use it + stream.flush() + stream.on('drain', function () { + stream.end() + }) + } else { + // We do not have an event loop, so flush synchronously + stream.flushSync() + } +} + + +/***/ }), + +/***/ 72274: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const errSerializer = __nccwpck_require__(52825) +const reqSerializers = __nccwpck_require__(89859) +const resSerializers = __nccwpck_require__(35995) + +module.exports = { + err: errSerializer, + mapHttpRequest: reqSerializers.mapHttpRequest, + mapHttpResponse: resSerializers.mapHttpResponse, + req: reqSerializers.reqSerializer, + res: resSerializers.resSerializer, + + wrapErrorSerializer: function wrapErrorSerializer (customSerializer) { + if (customSerializer === errSerializer) return customSerializer + return function wrapErrSerializer (err) { + return customSerializer(errSerializer(err)) + } + }, + + wrapRequestSerializer: function wrapRequestSerializer (customSerializer) { + if (customSerializer === reqSerializers.reqSerializer) return customSerializer + return function wrappedReqSerializer (req) { + return customSerializer(reqSerializers.reqSerializer(req)) + } + }, + + wrapResponseSerializer: function wrapResponseSerializer (customSerializer) { + if (customSerializer === resSerializers.resSerializer) return customSerializer + return function wrappedResSerializer (res) { + return customSerializer(resSerializers.resSerializer(res)) + } + } +} + + +/***/ }), + +/***/ 52825: +/***/ ((module) => { + +"use strict"; + + +module.exports = errSerializer + +const { toString } = Object.prototype +const seen = Symbol('circular-ref-tag') +const rawSymbol = Symbol('pino-raw-err-ref') +const pinoErrProto = Object.create({}, { + type: { + enumerable: true, + writable: true, + value: undefined + }, + message: { + enumerable: true, + writable: true, + value: undefined + }, + stack: { + enumerable: true, + writable: true, + value: undefined + }, + raw: { + enumerable: false, + get: function () { + return this[rawSymbol] + }, + set: function (val) { + this[rawSymbol] = val + } + } +}) +Object.defineProperty(pinoErrProto, rawSymbol, { + writable: true, + value: {} +}) + +function errSerializer (err) { + if (!(err instanceof Error)) { + return err + } + + err[seen] = undefined // tag to prevent re-looking at this + const _err = Object.create(pinoErrProto) + _err.type = toString.call(err.constructor) === '[object Function]' + ? err.constructor.name + : err.name + _err.message = err.message + _err.stack = err.stack + for (const key in err) { + if (_err[key] === undefined) { + const val = err[key] + if (val instanceof Error) { + /* eslint-disable no-prototype-builtins */ + if (!val.hasOwnProperty(seen)) { + _err[key] = errSerializer(val) + } + } else { + _err[key] = val + } + } + } + + delete err[seen] // clean up tag in case err is serialized again later + _err.raw = err + return _err +} + + +/***/ }), + +/***/ 89859: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + mapHttpRequest, + reqSerializer +} + +const rawSymbol = Symbol('pino-raw-req-ref') +const pinoReqProto = Object.create({}, { + id: { + enumerable: true, + writable: true, + value: '' + }, + method: { + enumerable: true, + writable: true, + value: '' + }, + url: { + enumerable: true, + writable: true, + value: '' + }, + query: { + enumerable: true, + writable: true, + value: '' + }, + params: { + enumerable: true, + writable: true, + value: '' + }, + headers: { + enumerable: true, + writable: true, + value: {} + }, + remoteAddress: { + enumerable: true, + writable: true, + value: '' + }, + remotePort: { + enumerable: true, + writable: true, + value: '' + }, + raw: { + enumerable: false, + get: function () { + return this[rawSymbol] + }, + set: function (val) { + this[rawSymbol] = val + } + } +}) +Object.defineProperty(pinoReqProto, rawSymbol, { + writable: true, + value: {} +}) + +function reqSerializer (req) { + // req.info is for hapi compat. + const connection = req.info || req.socket + const _req = Object.create(pinoReqProto) + _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined))) + _req.method = req.method + // req.originalUrl is for expressjs compat. + if (req.originalUrl) { + _req.url = req.originalUrl + _req.query = req.query + _req.params = req.params + } else { + // req.url.path is for hapi compat. + _req.url = req.path || (req.url ? (req.url.path || req.url) : undefined) + } + _req.headers = req.headers + _req.remoteAddress = connection && connection.remoteAddress + _req.remotePort = connection && connection.remotePort + // req.raw is for hapi compat/equivalence + _req.raw = req.raw || req + return _req +} + +function mapHttpRequest (req) { + return { + req: reqSerializer(req) + } +} + + +/***/ }), + +/***/ 35995: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + mapHttpResponse, + resSerializer +} + +const rawSymbol = Symbol('pino-raw-res-ref') +const pinoResProto = Object.create({}, { + statusCode: { + enumerable: true, + writable: true, + value: 0 + }, + headers: { + enumerable: true, + writable: true, + value: '' + }, + raw: { + enumerable: false, + get: function () { + return this[rawSymbol] + }, + set: function (val) { + this[rawSymbol] = val + } + } +}) +Object.defineProperty(pinoResProto, rawSymbol, { + writable: true, + value: {} +}) + +function resSerializer (res) { + const _res = Object.create(pinoResProto) + _res.statusCode = res.statusCode + _res.headers = res.getHeaders ? res.getHeaders() : res._headers + _res.raw = res + return _res +} + +function mapHttpResponse (res) { + return { + res: resSerializer(res) + } +} + + +/***/ }), + +/***/ 15749: +/***/ ((module) => { + +"use strict"; + + +function noOpPrepareStackTrace (_, stack) { + return stack +} + +module.exports = function getCallers () { + const originalPrepare = Error.prepareStackTrace + Error.prepareStackTrace = noOpPrepareStackTrace + const stack = new Error().stack + Error.prepareStackTrace = originalPrepare + + if (!Array.isArray(stack)) { + return undefined + } + + const entries = stack.slice(2) + + const fileNames = [] + + for (const entry of entries) { + if (!entry) { + continue + } + + fileNames.push(entry.getFileName()) + } + + return fileNames +} + + +/***/ }), + +/***/ 39640: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const warning = __nccwpck_require__(725)() +module.exports = warning + +const warnName = 'PinoWarning' + +warning.create(warnName, 'PINODEP008', 'prettyPrint is deprecated, look at https://github.com/pinojs/pino-pretty for alternatives.') + +warning.create(warnName, 'PINODEP009', 'The use of pino.final is discouraged in Node.js v14+ and not required. It will be removed in the next major version') + + +/***/ }), + +/***/ 98122: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +/* eslint no-prototype-builtins: 0 */ +const { + lsCacheSym, + levelValSym, + useOnlyCustomLevelsSym, + streamSym, + formattersSym, + hooksSym +} = __nccwpck_require__(75683) +const { noop, genLog } = __nccwpck_require__(80566) + +const levels = { + trace: 10, + debug: 20, + info: 30, + warn: 40, + error: 50, + fatal: 60 +} +const levelMethods = { + fatal: (hook) => { + const logFatal = genLog(levels.fatal, hook) + return function (...args) { + const stream = this[streamSym] + logFatal.call(this, ...args) + if (typeof stream.flushSync === 'function') { + try { + stream.flushSync() + } catch (e) { + // https://github.com/pinojs/pino/pull/740#discussion_r346788313 + } + } + } + }, + error: (hook) => genLog(levels.error, hook), + warn: (hook) => genLog(levels.warn, hook), + info: (hook) => genLog(levels.info, hook), + debug: (hook) => genLog(levels.debug, hook), + trace: (hook) => genLog(levels.trace, hook) +} + +const nums = Object.keys(levels).reduce((o, k) => { + o[levels[k]] = k + return o +}, {}) + +const initialLsCache = Object.keys(nums).reduce((o, k) => { + o[k] = '{"level":' + Number(k) + return o +}, {}) + +function genLsCache (instance) { + const formatter = instance[formattersSym].level + const { labels } = instance.levels + const cache = {} + for (const label in labels) { + const level = formatter(labels[label], Number(label)) + cache[label] = JSON.stringify(level).slice(0, -1) + } + instance[lsCacheSym] = cache + return instance +} + +function isStandardLevel (level, useOnlyCustomLevels) { + if (useOnlyCustomLevels) { + return false + } + + switch (level) { + case 'fatal': + case 'error': + case 'warn': + case 'info': + case 'debug': + case 'trace': + return true + default: + return false + } +} + +function setLevel (level) { + const { labels, values } = this.levels + if (typeof level === 'number') { + if (labels[level] === undefined) throw Error('unknown level value' + level) + level = labels[level] + } + if (values[level] === undefined) throw Error('unknown level ' + level) + const preLevelVal = this[levelValSym] + const levelVal = this[levelValSym] = values[level] + const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym] + const hook = this[hooksSym].logMethod + + for (const key in values) { + if (levelVal > values[key]) { + this[key] = noop + continue + } + this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook) + } + + this.emit( + 'level-change', + level, + levelVal, + labels[preLevelVal], + preLevelVal + ) +} + +function getLevel (level) { + const { levels, levelVal } = this + // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833) + return (levels && levels.labels) ? levels.labels[levelVal] : '' +} + +function isLevelEnabled (logLevel) { + const { values } = this.levels + const logLevelVal = values[logLevel] + return logLevelVal !== undefined && (logLevelVal >= this[levelValSym]) +} + +function mappings (customLevels = null, useOnlyCustomLevels = false) { + const customNums = customLevels + /* eslint-disable */ + ? Object.keys(customLevels).reduce((o, k) => { + o[customLevels[k]] = k + return o + }, {}) + : null + /* eslint-enable */ + + const labels = Object.assign( + Object.create(Object.prototype, { Infinity: { value: 'silent' } }), + useOnlyCustomLevels ? null : nums, + customNums + ) + const values = Object.assign( + Object.create(Object.prototype, { silent: { value: Infinity } }), + useOnlyCustomLevels ? null : levels, + customLevels + ) + return { labels, values } +} + +function assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) { + if (typeof defaultLevel === 'number') { + const values = [].concat( + Object.keys(customLevels || {}).map(key => customLevels[key]), + useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level), + Infinity + ) + if (!values.includes(defaultLevel)) { + throw Error(`default level:${defaultLevel} must be included in custom levels`) + } + return + } + + const labels = Object.assign( + Object.create(Object.prototype, { silent: { value: Infinity } }), + useOnlyCustomLevels ? null : levels, + customLevels + ) + if (!(defaultLevel in labels)) { + throw Error(`default level:${defaultLevel} must be included in custom levels`) + } +} + +function assertNoLevelCollisions (levels, customLevels) { + const { labels, values } = levels + for (const k in customLevels) { + if (k in values) { + throw Error('levels cannot be overridden') + } + if (customLevels[k] in labels) { + throw Error('pre-existing level values cannot be used for new levels') + } + } +} + +module.exports = { + initialLsCache, + genLsCache, + levelMethods, + getLevel, + setLevel, + isLevelEnabled, + mappings, + levels, + assertNoLevelCollisions, + assertDefaultLevelFound +} + + +/***/ }), + +/***/ 84834: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { version } = __nccwpck_require__(12139) + +module.exports = { version } + + +/***/ }), + +/***/ 54881: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const metadata = Symbol.for('pino.metadata') +const { levels } = __nccwpck_require__(98122) + +const defaultLevels = Object.create(levels) +defaultLevels.silent = Infinity + +const DEFAULT_INFO_LEVEL = levels.info + +function multistream (streamsArray, opts) { + let counter = 0 + streamsArray = streamsArray || [] + opts = opts || { dedupe: false } + + let levels = defaultLevels + if (opts.levels && typeof opts.levels === 'object') { + levels = opts.levels + } + + const res = { + write, + add, + flushSync, + end, + minLevel: 0, + streams: [], + clone, + [metadata]: true + } + + if (Array.isArray(streamsArray)) { + streamsArray.forEach(add, res) + } else { + add.call(res, streamsArray) + } + + // clean this object up + // or it will stay allocated forever + // as it is closed on the following closures + streamsArray = null + + return res + + // we can exit early because the streams are ordered by level + function write (data) { + let dest + const level = this.lastLevel + const { streams } = this + let stream + for (let i = 0; i < streams.length; i++) { + dest = streams[i] + if (dest.level <= level) { + stream = dest.stream + if (stream[metadata]) { + const { lastTime, lastMsg, lastObj, lastLogger } = this + stream.lastLevel = level + stream.lastTime = lastTime + stream.lastMsg = lastMsg + stream.lastObj = lastObj + stream.lastLogger = lastLogger + } + if (!opts.dedupe || dest.level === level) { + stream.write(data) + } + } else { + break + } + } + } + + function flushSync () { + for (const { stream } of this.streams) { + if (typeof stream.flushSync === 'function') { + stream.flushSync() + } + } + } + + function add (dest) { + if (!dest) { + return res + } + + // Check that dest implements either StreamEntry or DestinationStream + const isStream = typeof dest.write === 'function' || dest.stream + const stream_ = dest.write ? dest : dest.stream + // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write() + if (!isStream) { + throw Error('stream object needs to implement either StreamEntry or DestinationStream interface') + } + + const { streams } = this + + let level + if (typeof dest.levelVal === 'number') { + level = dest.levelVal + } else if (typeof dest.level === 'string') { + level = levels[dest.level] + } else if (typeof dest.level === 'number') { + level = dest.level + } else { + level = DEFAULT_INFO_LEVEL + } + + const dest_ = { + stream: stream_, + level, + levelVal: undefined, + id: counter++ + } + + streams.unshift(dest_) + streams.sort(compareByLevel) + + this.minLevel = streams[0].level + + return res + } + + function end () { + for (const { stream } of this.streams) { + if (typeof stream.flushSync === 'function') { + stream.flushSync() + } + stream.end() + } + } + + function clone (level) { + const streams = new Array(this.streams.length) + + for (let i = 0; i < streams.length; i++) { + streams[i] = { + level: level, + stream: this.streams[i].stream + } + } + + return { + write, + add, + minLevel: level, + streams, + clone, + flushSync, + [metadata]: true + } + } +} + +function compareByLevel (a, b) { + return a.level - b.level +} + +module.exports = multistream + + +/***/ }), + +/***/ 27921: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/* eslint no-prototype-builtins: 0 */ + +const { EventEmitter } = __nccwpck_require__(82361) +const { + lsCacheSym, + levelValSym, + setLevelSym, + getLevelSym, + chindingsSym, + parsedChindingsSym, + mixinSym, + asJsonSym, + writeSym, + mixinMergeStrategySym, + timeSym, + timeSliceIndexSym, + streamSym, + serializersSym, + formattersSym, + useOnlyCustomLevelsSym, + needsMetadataGsym, + redactFmtSym, + stringifySym, + formatOptsSym, + stringifiersSym +} = __nccwpck_require__(75683) +const { + getLevel, + setLevel, + isLevelEnabled, + mappings, + initialLsCache, + genLsCache, + assertNoLevelCollisions +} = __nccwpck_require__(98122) +const { + asChindings, + asJson, + buildFormatters, + stringify +} = __nccwpck_require__(80566) +const { + version +} = __nccwpck_require__(84834) +const redaction = __nccwpck_require__(74517) + +// note: use of class is satirical +// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127 +const constructor = class Pino {} +const prototype = { + constructor, + child, + bindings, + setBindings, + flush, + isLevelEnabled, + version, + get level () { return this[getLevelSym]() }, + set level (lvl) { this[setLevelSym](lvl) }, + get levelVal () { return this[levelValSym] }, + set levelVal (n) { throw Error('levelVal is read-only') }, + [lsCacheSym]: initialLsCache, + [writeSym]: write, + [asJsonSym]: asJson, + [getLevelSym]: getLevel, + [setLevelSym]: setLevel +} + +Object.setPrototypeOf(prototype, EventEmitter.prototype) + +// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing +module.exports = function () { + return Object.create(prototype) +} + +const resetChildingsFormatter = bindings => bindings +function child (bindings, options) { + if (!bindings) { + throw Error('missing bindings for child Pino') + } + options = options || {} // default options to empty object + const serializers = this[serializersSym] + const formatters = this[formattersSym] + const instance = Object.create(this) + + if (options.hasOwnProperty('serializers') === true) { + instance[serializersSym] = Object.create(null) + + for (const k in serializers) { + instance[serializersSym][k] = serializers[k] + } + const parentSymbols = Object.getOwnPropertySymbols(serializers) + /* eslint no-var: off */ + for (var i = 0; i < parentSymbols.length; i++) { + const ks = parentSymbols[i] + instance[serializersSym][ks] = serializers[ks] + } + + for (const bk in options.serializers) { + instance[serializersSym][bk] = options.serializers[bk] + } + const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers) + for (var bi = 0; bi < bindingsSymbols.length; bi++) { + const bks = bindingsSymbols[bi] + instance[serializersSym][bks] = options.serializers[bks] + } + } else instance[serializersSym] = serializers + if (options.hasOwnProperty('formatters')) { + const { level, bindings: chindings, log } = options.formatters + instance[formattersSym] = buildFormatters( + level || formatters.level, + chindings || resetChildingsFormatter, + log || formatters.log + ) + } else { + instance[formattersSym] = buildFormatters( + formatters.level, + resetChildingsFormatter, + formatters.log + ) + } + if (options.hasOwnProperty('customLevels') === true) { + assertNoLevelCollisions(this.levels, options.customLevels) + instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym]) + genLsCache(instance) + } + + // redact must place before asChindings and only replace if exist + if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) { + instance.redact = options.redact // replace redact directly + const stringifiers = redaction(instance.redact, stringify) + const formatOpts = { stringify: stringifiers[redactFmtSym] } + instance[stringifySym] = stringify + instance[stringifiersSym] = stringifiers + instance[formatOptsSym] = formatOpts + } + + instance[chindingsSym] = asChindings(instance, bindings) + const childLevel = options.level || this.level + instance[setLevelSym](childLevel) + + return instance +} + +function bindings () { + const chindings = this[chindingsSym] + const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,"pid":7068,"hostname":"myMac" + const bindingsFromJson = JSON.parse(chindingsJson) + delete bindingsFromJson.pid + delete bindingsFromJson.hostname + return bindingsFromJson +} + +function setBindings (newBindings) { + const chindings = asChindings(this, newBindings) + this[chindingsSym] = chindings + delete this[parsedChindingsSym] +} + +/** + * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`. + * Fields from `mergeObject` have higher priority in this strategy. + * + * @param {Object} mergeObject The object a user has supplied to the logging function. + * @param {Object} mixinObject The result of the `mixin` method. + * @return {Object} + */ +function defaultMixinMergeStrategy (mergeObject, mixinObject) { + return Object.assign(mixinObject, mergeObject) +} + +function write (_obj, msg, num) { + const t = this[timeSym]() + const mixin = this[mixinSym] + const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy + let obj + + if (_obj === undefined || _obj === null) { + obj = {} + } else if (_obj instanceof Error) { + obj = { err: _obj } + if (msg === undefined) { + msg = _obj.message + } + } else { + obj = _obj + if (msg === undefined && _obj.err) { + msg = _obj.err.message + } + } + + if (mixin) { + obj = mixinMergeStrategy(obj, mixin(obj, num)) + } + + const s = this[asJsonSym](obj, msg, num, t) + + const stream = this[streamSym] + if (stream[needsMetadataGsym] === true) { + stream.lastLevel = num + stream.lastObj = obj + stream.lastMsg = msg + stream.lastTime = t.slice(this[timeSliceIndexSym]) + stream.lastLogger = this // for child loggers + } + stream.write(s) +} + +function noop () {} + +function flush () { + const stream = this[streamSym] + if ('flush' in stream) stream.flush(noop) +} + + +/***/ }), + +/***/ 74517: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const fastRedact = __nccwpck_require__(56129) +const { redactFmtSym, wildcardFirstSym } = __nccwpck_require__(75683) +const { rx, validator } = fastRedact + +const validate = validator({ + ERR_PATHS_MUST_BE_STRINGS: () => 'pino – redacted paths must be strings', + ERR_INVALID_PATH: (s) => `pino – redact paths array contains an invalid path (${s})` +}) + +const CENSOR = '[Redacted]' +const strict = false // TODO should this be configurable? + +function redaction (opts, serialize) { + const { paths, censor } = handle(opts) + + const shape = paths.reduce((o, str) => { + rx.lastIndex = 0 + const first = rx.exec(str) + const next = rx.exec(str) + + // ns is the top-level path segment, brackets + quoting removed. + let ns = first[1] !== undefined + ? first[1].replace(/^(?:"|'|`)(.*)(?:"|'|`)$/, '$1') + : first[0] + + if (ns === '*') { + ns = wildcardFirstSym + } + + // top level key: + if (next === null) { + o[ns] = null + return o + } + + // path with at least two segments: + // if ns is already redacted at the top level, ignore lower level redactions + if (o[ns] === null) { + return o + } + + const { index } = next + const nextPath = `${str.substr(index, str.length - 1)}` + + o[ns] = o[ns] || [] + + // shape is a mix of paths beginning with literal values and wildcard + // paths [ "a.b.c", "*.b.z" ] should reduce to a shape of + // { "a": [ "b.c", "b.z" ], *: [ "b.z" ] } + // note: "b.z" is in both "a" and * arrays because "a" matches the wildcard. + // (* entry has wildcardFirstSym as key) + if (ns !== wildcardFirstSym && o[ns].length === 0) { + // first time ns's get all '*' redactions so far + o[ns].push(...(o[wildcardFirstSym] || [])) + } + + if (ns === wildcardFirstSym) { + // new * path gets added to all previously registered literal ns's. + Object.keys(o).forEach(function (k) { + if (o[k]) { + o[k].push(nextPath) + } + }) + } + + o[ns].push(nextPath) + return o + }, {}) + + // the redactor assigned to the format symbol key + // provides top level redaction for instances where + // an object is interpolated into the msg string + const result = { + [redactFmtSym]: fastRedact({ paths, censor, serialize, strict }) + } + + const topCensor = (...args) => { + return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor) + } + + return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => { + // top level key: + if (shape[k] === null) { + o[k] = (value) => topCensor(value, [k]) + } else { + const wrappedCensor = typeof censor === 'function' + ? (value, path) => { + return censor(value, [k, ...path]) + } + : censor + o[k] = fastRedact({ + paths: shape[k], + censor: wrappedCensor, + serialize, + strict + }) + } + return o + }, result) +} + +function handle (opts) { + if (Array.isArray(opts)) { + opts = { paths: opts, censor: CENSOR } + validate(opts) + return opts + } + let { paths, censor = CENSOR, remove } = opts + if (Array.isArray(paths) === false) { throw Error('pino – redact must contain an array of strings') } + if (remove === true) censor = undefined + validate({ paths, censor }) + + return { paths, censor } +} + +module.exports = redaction + + +/***/ }), + +/***/ 75683: +/***/ ((module) => { + +"use strict"; + + +const setLevelSym = Symbol('pino.setLevel') +const getLevelSym = Symbol('pino.getLevel') +const levelValSym = Symbol('pino.levelVal') +const useLevelLabelsSym = Symbol('pino.useLevelLabels') +const useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels') +const mixinSym = Symbol('pino.mixin') + +const lsCacheSym = Symbol('pino.lsCache') +const chindingsSym = Symbol('pino.chindings') +const parsedChindingsSym = Symbol('pino.parsedChindings') + +const asJsonSym = Symbol('pino.asJson') +const writeSym = Symbol('pino.write') +const redactFmtSym = Symbol('pino.redactFmt') + +const timeSym = Symbol('pino.time') +const timeSliceIndexSym = Symbol('pino.timeSliceIndex') +const streamSym = Symbol('pino.stream') +const stringifySym = Symbol('pino.stringify') +const stringifySafeSym = Symbol('pino.stringifySafe') +const stringifiersSym = Symbol('pino.stringifiers') +const endSym = Symbol('pino.end') +const formatOptsSym = Symbol('pino.formatOpts') +const messageKeySym = Symbol('pino.messageKey') +const nestedKeySym = Symbol('pino.nestedKey') +const nestedKeyStrSym = Symbol('pino.nestedKeyStr') +const mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy') + +const wildcardFirstSym = Symbol('pino.wildcardFirst') + +// public symbols, no need to use the same pino +// version for these +const serializersSym = Symbol.for('pino.serializers') +const formattersSym = Symbol.for('pino.formatters') +const hooksSym = Symbol.for('pino.hooks') +const needsMetadataGsym = Symbol.for('pino.metadata') + +module.exports = { + setLevelSym, + getLevelSym, + levelValSym, + useLevelLabelsSym, + mixinSym, + lsCacheSym, + chindingsSym, + parsedChindingsSym, + asJsonSym, + writeSym, + serializersSym, + redactFmtSym, + timeSym, + timeSliceIndexSym, + streamSym, + stringifySym, + stringifySafeSym, + stringifiersSym, + endSym, + formatOptsSym, + messageKeySym, + nestedKeySym, + wildcardFirstSym, + needsMetadataGsym, + useOnlyCustomLevelsSym, + formattersSym, + hooksSym, + nestedKeyStrSym, + mixinMergeStrategySym +} + + +/***/ }), + +/***/ 81554: +/***/ ((module) => { + +"use strict"; + + +const nullTime = () => '' + +const epochTime = () => `,"time":${Date.now()}` + +const unixTime = () => `,"time":${Math.round(Date.now() / 1000.0)}` + +const isoTime = () => `,"time":"${new Date(Date.now()).toISOString()}"` // using Date.now() for testability + +module.exports = { nullTime, epochTime, unixTime, isoTime } + + +/***/ }), + +/***/ 80566: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/* eslint no-prototype-builtins: 0 */ + +const format = __nccwpck_require__(34397) +const { mapHttpRequest, mapHttpResponse } = __nccwpck_require__(72274) +const SonicBoom = __nccwpck_require__(93565) +const warning = __nccwpck_require__(39640) +const { + lsCacheSym, + chindingsSym, + parsedChindingsSym, + writeSym, + serializersSym, + formatOptsSym, + endSym, + stringifiersSym, + stringifySym, + stringifySafeSym, + wildcardFirstSym, + needsMetadataGsym, + redactFmtSym, + streamSym, + nestedKeySym, + formattersSym, + messageKeySym, + nestedKeyStrSym +} = __nccwpck_require__(75683) +const { isMainThread } = __nccwpck_require__(71267) +const transport = __nccwpck_require__(77548) + +function noop () {} + +function genLog (level, hook) { + if (!hook) return LOG + + return function hookWrappedLog (...args) { + hook.call(this, args, LOG, level) + } + + function LOG (o, ...n) { + if (typeof o === 'object') { + let msg = o + if (o !== null) { + if (o.method && o.headers && o.socket) { + o = mapHttpRequest(o) + } else if (typeof o.setHeader === 'function') { + o = mapHttpResponse(o) + } + } + let formatParams + if (msg === null && n.length === 0) { + formatParams = [null] + } else { + msg = n.shift() + formatParams = n + } + this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level) + } else { + this[writeSym](null, format(o, n, this[formatOptsSym]), level) + } + } +} + +// magically escape strings for json +// relying on their charCodeAt +// everything below 32 needs JSON.stringify() +// 34 and 92 happens all the time, so we +// have a fast case for them +function asString (str) { + let result = '' + let last = 0 + let found = false + let point = 255 + const l = str.length + if (l > 100) { + return JSON.stringify(str) + } + for (var i = 0; i < l && point >= 32; i++) { + point = str.charCodeAt(i) + if (point === 34 || point === 92) { + result += str.slice(last, i) + '\\' + last = i + found = true + } + } + if (!found) { + result = str + } else { + result += str.slice(last) + } + return point < 32 ? JSON.stringify(str) : '"' + result + '"' +} + +function asJson (obj, msg, num, time) { + const stringify = this[stringifySym] + const stringifySafe = this[stringifySafeSym] + const stringifiers = this[stringifiersSym] + const end = this[endSym] + const chindings = this[chindingsSym] + const serializers = this[serializersSym] + const formatters = this[formattersSym] + const messageKey = this[messageKeySym] + let data = this[lsCacheSym][num] + time + + // we need the child bindings added to the output first so instance logged + // objects can take precedence when JSON.parse-ing the resulting log line + data = data + chindings + + let value + const notHasOwnProperty = obj.hasOwnProperty === undefined + if (formatters.log) { + obj = formatters.log(obj) + } + const wildcardStringifier = stringifiers[wildcardFirstSym] + let propStr = '' + for (const key in obj) { + value = obj[key] + if ((notHasOwnProperty || obj.hasOwnProperty(key)) && value !== undefined) { + value = serializers[key] ? serializers[key](value) : value + + const stringifier = stringifiers[key] || wildcardStringifier + + switch (typeof value) { + case 'undefined': + case 'function': + continue + case 'number': + /* eslint no-fallthrough: "off" */ + if (Number.isFinite(value) === false) { + value = null + } + // this case explicitly falls through to the next one + case 'boolean': + if (stringifier) value = stringifier(value) + break + case 'string': + value = (stringifier || asString)(value) + break + default: + value = (stringifier || stringify)(value, stringifySafe) + } + if (value === undefined) continue + propStr += ',"' + key + '":' + value + } + } + + let msgStr = '' + if (msg !== undefined) { + value = serializers[messageKey] ? serializers[messageKey](msg) : msg + const stringifier = stringifiers[messageKey] || wildcardStringifier + + switch (typeof value) { + case 'function': + break + case 'number': + /* eslint no-fallthrough: "off" */ + if (Number.isFinite(value) === false) { + value = null + } + // this case explicitly falls through to the next one + case 'boolean': + if (stringifier) value = stringifier(value) + msgStr = ',"' + messageKey + '":' + value + break + case 'string': + value = (stringifier || asString)(value) + msgStr = ',"' + messageKey + '":' + value + break + default: + value = (stringifier || stringify)(value, stringifySafe) + msgStr = ',"' + messageKey + '":' + value + } + } + + if (this[nestedKeySym] && propStr) { + // place all the obj properties under the specified key + // the nested key is already formatted from the constructor + return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end + } else { + return data + propStr + msgStr + end + } +} + +function asChindings (instance, bindings) { + let value + let data = instance[chindingsSym] + const stringify = instance[stringifySym] + const stringifySafe = instance[stringifySafeSym] + const stringifiers = instance[stringifiersSym] + const wildcardStringifier = stringifiers[wildcardFirstSym] + const serializers = instance[serializersSym] + const formatter = instance[formattersSym].bindings + bindings = formatter(bindings) + + for (const key in bindings) { + value = bindings[key] + const valid = key !== 'level' && + key !== 'serializers' && + key !== 'formatters' && + key !== 'customLevels' && + bindings.hasOwnProperty(key) && + value !== undefined + if (valid === true) { + value = serializers[key] ? serializers[key](value) : value + value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe) + if (value === undefined) continue + data += ',"' + key + '":' + value + } + } + return data +} + +function getPrettyStream (opts, prettifier, dest, instance) { + if (prettifier && typeof prettifier === 'function') { + prettifier = prettifier.bind(instance) + return prettifierMetaWrapper(prettifier(opts), dest, opts) + } + try { + const prettyFactory = (__nccwpck_require__(87952).prettyFactory) + prettyFactory.asMetaWrapper = prettifierMetaWrapper + return prettifierMetaWrapper(prettyFactory(opts), dest, opts) + } catch (e) { + if (e.message.startsWith("Cannot find module 'pino-pretty'")) { + throw Error('Missing `pino-pretty` module: `pino-pretty` must be installed separately') + }; + throw e + } +} + +function prettifierMetaWrapper (pretty, dest, opts) { + opts = Object.assign({ suppressFlushSyncWarning: false }, opts) + let warned = false + return { + [needsMetadataGsym]: true, + lastLevel: 0, + lastMsg: null, + lastObj: null, + lastLogger: null, + flushSync () { + if (opts.suppressFlushSyncWarning || warned) { + return + } + warned = true + setMetadataProps(dest, this) + dest.write(pretty(Object.assign({ + level: 40, // warn + msg: 'pino.final with prettyPrint does not support flushing', + time: Date.now() + }, this.chindings()))) + }, + chindings () { + const lastLogger = this.lastLogger + let chindings = null + + // protection against flushSync being called before logging + // anything + if (!lastLogger) { + return null + } + + if (lastLogger.hasOwnProperty(parsedChindingsSym)) { + chindings = lastLogger[parsedChindingsSym] + } else { + chindings = JSON.parse('{' + lastLogger[chindingsSym].substr(1) + '}') + lastLogger[parsedChindingsSym] = chindings + } + + return chindings + }, + write (chunk) { + const lastLogger = this.lastLogger + const chindings = this.chindings() + + let time = this.lastTime + + /* istanbul ignore next */ + if (typeof time === 'number') { + // do nothing! + } else if (time.match(/^\d+/)) { + time = parseInt(time) + } else { + time = time.slice(1, -1) + } + + const lastObj = this.lastObj + const lastMsg = this.lastMsg + const errorProps = null + + const formatters = lastLogger[formattersSym] + const formattedObj = formatters.log ? formatters.log(lastObj) : lastObj + + const messageKey = lastLogger[messageKeySym] + if (lastMsg && formattedObj && !formattedObj.hasOwnProperty(messageKey)) { + formattedObj[messageKey] = lastMsg + } + + const obj = Object.assign({ + level: this.lastLevel, + time + }, formattedObj, errorProps) + + const serializers = lastLogger[serializersSym] + const keys = Object.keys(serializers) + + for (var i = 0; i < keys.length; i++) { + const key = keys[i] + if (obj[key] !== undefined) { + obj[key] = serializers[key](obj[key]) + } + } + + for (const key in chindings) { + if (!obj.hasOwnProperty(key)) { + obj[key] = chindings[key] + } + } + + const stringifiers = lastLogger[stringifiersSym] + const redact = stringifiers[redactFmtSym] + + const formatted = pretty(typeof redact === 'function' ? redact(obj) : obj) + if (formatted === undefined) return + + setMetadataProps(dest, this) + dest.write(formatted) + } + } +} + +function hasBeenTampered (stream) { + return stream.write !== stream.constructor.prototype.write +} + +function buildSafeSonicBoom (opts) { + const stream = new SonicBoom(opts) + stream.on('error', filterBrokenPipe) + // if we are sync: false, we must flush on exit + if (!opts.sync && isMainThread) { + setupOnExit(stream) + } + return stream + + function filterBrokenPipe (err) { + // TODO verify on Windows + if (err.code === 'EPIPE') { + // If we get EPIPE, we should stop logging here + // however we have no control to the consumer of + // SonicBoom, so we just overwrite the write method + stream.write = noop + stream.end = noop + stream.flushSync = noop + stream.destroy = noop + return + } + stream.removeListener('error', filterBrokenPipe) + stream.emit('error', err) + } +} + +function setupOnExit (stream) { + /* istanbul ignore next */ + if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) { + // This is leak free, it does not leave event handlers + const onExit = __nccwpck_require__(41045) + + onExit.register(stream, autoEnd) + + stream.on('close', function () { + onExit.unregister(stream) + }) + } +} + +function autoEnd (stream, eventName) { + // This check is needed only on some platforms + /* istanbul ignore next */ + if (stream.destroyed) { + return + } + + if (eventName === 'beforeExit') { + // We still have an event loop, let's use it + stream.flush() + stream.on('drain', function () { + stream.end() + }) + } else { + // We do not have an event loop, so flush synchronously + stream.flushSync() + } +} + +function createArgsNormalizer (defaultOptions) { + return function normalizeArgs (instance, caller, opts = {}, stream) { + // support stream as a string + if (typeof opts === 'string') { + stream = buildSafeSonicBoom({ dest: opts, sync: true }) + opts = {} + } else if (typeof stream === 'string') { + if (opts && opts.transport) { + throw Error('only one of option.transport or stream can be specified') + } + stream = buildSafeSonicBoom({ dest: stream, sync: true }) + } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) { + stream = opts + opts = {} + } else if (opts.transport) { + if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) { + throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)') + } + if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') { + throw Error('option.transport.targets do not allow custom level formatters') + } + stream = transport({ caller, ...opts.transport }) + } + opts = Object.assign({}, defaultOptions, opts) + opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers) + opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters) + + if ('onTerminated' in opts) { + throw Error('The onTerminated option has been removed, use pino.final instead') + } + if ('changeLevelName' in opts) { + process.emitWarning( + 'The changeLevelName option is deprecated and will be removed in v7. Use levelKey instead.', + { code: 'changeLevelName_deprecation' } + ) + opts.levelKey = opts.changeLevelName + delete opts.changeLevelName + } + const { enabled, prettyPrint, prettifier, messageKey } = opts + if (enabled === false) opts.level = 'silent' + stream = stream || process.stdout + if (stream === process.stdout && stream.fd >= 0 && !hasBeenTampered(stream)) { + stream = buildSafeSonicBoom({ fd: stream.fd, sync: true }) + } + if (prettyPrint) { + warning.emit('PINODEP008') + const prettyOpts = Object.assign({ messageKey }, prettyPrint) + stream = getPrettyStream(prettyOpts, prettifier, stream, instance) + } + return { opts, stream } + } +} + +function final (logger, handler) { + const major = Number(process.versions.node.split('.')[0]) + if (major >= 14) warning.emit('PINODEP009') + + if (typeof logger === 'undefined' || typeof logger.child !== 'function') { + throw Error('expected a pino logger instance') + } + const hasHandler = (typeof handler !== 'undefined') + if (hasHandler && typeof handler !== 'function') { + throw Error('if supplied, the handler parameter should be a function') + } + const stream = logger[streamSym] + if (typeof stream.flushSync !== 'function') { + throw Error('final requires a stream that has a flushSync method, such as pino.destination') + } + + const finalLogger = new Proxy(logger, { + get: (logger, key) => { + if (key in logger.levels.values) { + return (...args) => { + logger[key](...args) + stream.flushSync() + } + } + return logger[key] + } + }) + + if (!hasHandler) { + try { + stream.flushSync() + } catch { + // it's too late to wait for the stream to be ready + // because this is a final tick scenario. + // in practice there shouldn't be a situation where it isn't + // however, swallow the error just in case (and for easier testing) + } + return finalLogger + } + + return (err = null, ...args) => { + try { + stream.flushSync() + } catch (e) { + // it's too late to wait for the stream to be ready + // because this is a final tick scenario. + // in practice there shouldn't be a situation where it isn't + // however, swallow the error just in case (and for easier testing) + } + return handler(err, finalLogger, ...args) + } +} + +function stringify (obj, stringifySafeFn) { + try { + return JSON.stringify(obj) + } catch (_) { + try { + const stringify = stringifySafeFn || this[stringifySafeSym] + return stringify(obj) + } catch (_) { + return '"[unable to serialize, circular reference is too complex to analyze]"' + } + } +} + +function buildFormatters (level, bindings, log) { + return { + level, + bindings, + log + } +} + +function setMetadataProps (dest, that) { + if (dest[needsMetadataGsym] === true) { + dest.lastLevel = that.lastLevel + dest.lastMsg = that.lastMsg + dest.lastObj = that.lastObj + dest.lastTime = that.lastTime + dest.lastLogger = that.lastLogger + } +} + +/** + * Convert a string integer file descriptor to a proper native integer + * file descriptor. + * + * @param {string} destination The file descriptor string to attempt to convert. + * + * @returns {Number} + */ +function normalizeDestFileDescriptor (destination) { + const fd = Number(destination) + if (typeof destination === 'string' && Number.isFinite(fd)) { + return fd + } + return destination +} + +module.exports = { + noop, + buildSafeSonicBoom, + getPrettyStream, + asChindings, + asJson, + genLog, + createArgsNormalizer, + final, + stringify, + buildFormatters, + normalizeDestFileDescriptor +} + + +/***/ }), + +/***/ 77548: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { createRequire } = __nccwpck_require__(98188) +const getCallers = __nccwpck_require__(15749) +const { join, isAbsolute } = __nccwpck_require__(71017) + +let onExit + +if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) { + // This require MUST be top level otherwise the transport would + // not work from within Jest as it hijacks require. + onExit = __nccwpck_require__(41045) +} + +const ThreadStream = __nccwpck_require__(66931) + +function setupOnExit (stream) { + /* istanbul ignore next */ + if (onExit) { + // This is leak free, it does not leave event handlers + onExit.register(stream, autoEnd) + + stream.on('close', function () { + onExit.unregister(stream) + }) + } else { + const fn = autoEnd.bind(null, stream) + process.once('beforeExit', fn) + process.once('exit', fn) + + stream.on('close', function () { + process.removeListener('beforeExit', fn) + process.removeListener('exit', fn) + }) + } +} + +function buildStream (filename, workerData, workerOpts) { + const stream = new ThreadStream({ + filename, + workerData, + workerOpts + }) + + stream.on('ready', onReady) + stream.on('close', function () { + process.removeListener('exit', onExit) + }) + + process.on('exit', onExit) + + function onReady () { + process.removeListener('exit', onExit) + stream.unref() + + if (workerOpts.autoEnd !== false) { + setupOnExit(stream) + } + } + + function onExit () { + if (stream.closed) { + return + } + stream.flushSync() + stream.end() + } + + return stream +} + +function autoEnd (stream) { + stream.ref() + stream.flushSync() + stream.end() + stream.once('close', function () { + stream.unref() + }) +} + +function transport (fullOptions) { + const { pipeline, targets, options = {}, worker = {}, caller = getCallers() } = fullOptions + + // Backwards compatibility + const callers = typeof caller === 'string' ? [caller] : caller + + // This will be eventually modified by bundlers + const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {} + + let target = fullOptions.target + + if (target && targets) { + throw new Error('only one of target or targets can be specified') + } + + if (targets) { + target = bundlerOverrides['pino-worker'] || __nccwpck_require__.ab + "worker.js" + options.targets = targets.map((dest) => { + return { + ...dest, + target: fixTarget(dest.target) + } + }) + } else if (fullOptions.pipeline) { + target = bundlerOverrides['pino-pipeline-worker'] || __nccwpck_require__.ab + "worker-pipeline.js" + options.targets = pipeline.map((dest) => { + return { + ...dest, + target: fixTarget(dest.target) + } + }) + } + + return buildStream(fixTarget(target), options, worker) + + function fixTarget (origin) { + origin = bundlerOverrides[origin] || origin + + if (isAbsolute(origin) || origin.indexOf('file://') === 0) { + return origin + } + + if (origin === 'pino/file') { + return __nccwpck_require__.ab + "file.js" + } + + let fixTarget + + for (const filePath of callers) { + try { + fixTarget = createRequire(filePath).resolve(origin) + break + } catch (err) { + // Silent catch + continue + } + } + + if (!fixTarget) { + throw new Error(`unable to determine transport target for "${origin}"`) + } + + return fixTarget + } +} + +module.exports = transport + + +/***/ }), + +/***/ 55124: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +/* eslint no-prototype-builtins: 0 */ +const os = __nccwpck_require__(22037) +const stdSerializers = __nccwpck_require__(72274) +const caller = __nccwpck_require__(15749) +const redaction = __nccwpck_require__(74517) +const time = __nccwpck_require__(81554) +const proto = __nccwpck_require__(27921) +const symbols = __nccwpck_require__(75683) +const { configure } = __nccwpck_require__(5693) +const { assertDefaultLevelFound, mappings, genLsCache } = __nccwpck_require__(98122) +const { + createArgsNormalizer, + asChindings, + final, + buildSafeSonicBoom, + buildFormatters, + stringify, + normalizeDestFileDescriptor, + noop +} = __nccwpck_require__(80566) +const { version } = __nccwpck_require__(84834) +const { + chindingsSym, + redactFmtSym, + serializersSym, + timeSym, + timeSliceIndexSym, + streamSym, + stringifySym, + stringifySafeSym, + stringifiersSym, + setLevelSym, + endSym, + formatOptsSym, + messageKeySym, + nestedKeySym, + mixinSym, + useOnlyCustomLevelsSym, + formattersSym, + hooksSym, + nestedKeyStrSym, + mixinMergeStrategySym +} = symbols +const { epochTime, nullTime } = time +const { pid } = process +const hostname = os.hostname() +const defaultErrorSerializer = stdSerializers.err +const defaultOptions = { + level: 'info', + messageKey: 'msg', + nestedKey: null, + enabled: true, + prettyPrint: false, + base: { pid, hostname }, + serializers: Object.assign(Object.create(null), { + err: defaultErrorSerializer + }), + formatters: Object.assign(Object.create(null), { + bindings (bindings) { + return bindings + }, + level (label, number) { + return { level: number } + } + }), + hooks: { + logMethod: undefined + }, + timestamp: epochTime, + name: undefined, + redact: null, + customLevels: null, + useOnlyCustomLevels: false, + depthLimit: 5, + edgeLimit: 100 +} + +const normalize = createArgsNormalizer(defaultOptions) + +const serializers = Object.assign(Object.create(null), stdSerializers) + +function pino (...args) { + const instance = {} + const { opts, stream } = normalize(instance, caller(), ...args) + const { + redact, + crlf, + serializers, + timestamp, + messageKey, + nestedKey, + base, + name, + level, + customLevels, + mixin, + mixinMergeStrategy, + useOnlyCustomLevels, + formatters, + hooks, + depthLimit, + edgeLimit + } = opts + + const stringifySafe = configure({ + maximumDepth: depthLimit, + maximumBreadth: edgeLimit + }) + + const allFormatters = buildFormatters( + formatters.level, + formatters.bindings, + formatters.log + ) + + const stringifiers = redact ? redaction(redact, stringify) : {} + const stringifyFn = stringify.bind({ + [stringifySafeSym]: stringifySafe + }) + const formatOpts = redact + ? { stringify: stringifiers[redactFmtSym] } + : { stringify: stringifyFn } + const end = '}' + (crlf ? '\r\n' : '\n') + const coreChindings = asChindings.bind(null, { + [chindingsSym]: '', + [serializersSym]: serializers, + [stringifiersSym]: stringifiers, + [stringifySym]: stringify, + [stringifySafeSym]: stringifySafe, + [formattersSym]: allFormatters + }) + + let chindings = '' + if (base !== null) { + if (name === undefined) { + chindings = coreChindings(base) + } else { + chindings = coreChindings(Object.assign({}, base, { name })) + } + } + + const time = (timestamp instanceof Function) + ? timestamp + : (timestamp ? epochTime : nullTime) + const timeSliceIndex = time().indexOf(':') + 1 + + if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true') + if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type "${typeof mixin}" - expected "function"`) + + assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels) + const levels = mappings(customLevels, useOnlyCustomLevels) + + Object.assign(instance, { + levels, + [useOnlyCustomLevelsSym]: useOnlyCustomLevels, + [streamSym]: stream, + [timeSym]: time, + [timeSliceIndexSym]: timeSliceIndex, + [stringifySym]: stringify, + [stringifySafeSym]: stringifySafe, + [stringifiersSym]: stringifiers, + [endSym]: end, + [formatOptsSym]: formatOpts, + [messageKeySym]: messageKey, + [nestedKeySym]: nestedKey, + // protect against injection + [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '', + [serializersSym]: serializers, + [mixinSym]: mixin, + [mixinMergeStrategySym]: mixinMergeStrategy, + [chindingsSym]: chindings, + [formattersSym]: allFormatters, + [hooksSym]: hooks, + silent: noop + }) + + Object.setPrototypeOf(instance, proto()) + + genLsCache(instance) + + instance[setLevelSym](level) + + return instance +} + +module.exports = pino + +module.exports.destination = (dest = process.stdout.fd) => { + if (typeof dest === 'object') { + dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd) + return buildSafeSonicBoom(dest) + } else { + return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0, sync: true }) + } +} + +module.exports.transport = __nccwpck_require__(77548) +module.exports.multistream = __nccwpck_require__(54881) + +module.exports.final = final +module.exports.levels = mappings() +module.exports.stdSerializers = serializers +module.exports.stdTimeFunctions = Object.assign({}, time) +module.exports.symbols = symbols +module.exports.version = version + +// Enables default and name export with TypeScript and Babel +module.exports["default"] = pino +module.exports.pino = pino + + +/***/ }), + +/***/ 93565: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const fs = __nccwpck_require__(57147) +const EventEmitter = __nccwpck_require__(82361) +const inherits = (__nccwpck_require__(73837).inherits) +const path = __nccwpck_require__(71017) +const sleep = __nccwpck_require__(58803) + +const BUSY_WRITE_TIMEOUT = 100 + +// This constant ensures that SonicBoom only needs +// 64KB MB of free memory to run. In case of having 1GB+ +// of data to write, this prevents an out of memory +// condition. +const MAX_WRITE = 64 * 1024 + +function openFile (file, sonic) { + sonic._opening = true + sonic._writing = true + sonic._asyncDrainScheduled = false + + // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false + // for sync mode, there is no way to add a listener that will receive these + + function fileOpened (err, fd) { + if (err) { + sonic._reopening = false + sonic._writing = false + sonic._opening = false + + if (sonic.sync) { + process.nextTick(() => { + if (sonic.listenerCount('error') > 0) { + sonic.emit('error', err) + } + }) + } else { + sonic.emit('error', err) + } + return + } + + sonic.fd = fd + sonic.file = file + sonic._reopening = false + sonic._opening = false + sonic._writing = false + + if (sonic.sync) { + process.nextTick(() => sonic.emit('ready')) + } else { + sonic.emit('ready') + } + + if (sonic._reopening) { + return + } + + // start + if (!sonic._writing && sonic._len > sonic.minLength && !sonic.destroyed) { + actualWrite(sonic) + } + } + + const flags = sonic.append ? 'a' : 'w' + const mode = sonic.mode + + if (sonic.sync) { + try { + if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true }) + const fd = fs.openSync(file, flags, mode) + fileOpened(null, fd) + } catch (err) { + fileOpened(err) + throw err + } + } else if (sonic.mkdir) { + fs.mkdir(path.dirname(file), { recursive: true }, (err) => { + if (err) return fileOpened(err) + fs.open(file, flags, mode, fileOpened) + }) + } else { + fs.open(file, flags, mode, fileOpened) + } +} + +function SonicBoom (opts) { + if (!(this instanceof SonicBoom)) { + return new SonicBoom(opts) + } + + let { fd, dest, minLength, maxLength, sync, append = true, mode, mkdir, retryEAGAIN } = opts || {} + + fd = fd || dest + + this._bufs = [] + this._len = 0 + this.fd = -1 + this._writing = false + this._writingBuf = '' + this._ending = false + this._reopening = false + this._asyncDrainScheduled = false + this._hwm = Math.max(minLength || 0, 16387) + this.file = null + this.destroyed = false + this.minLength = minLength || 0 + this.maxLength = maxLength || 0 + this.sync = sync || false + this.append = append || false + this.mode = mode + this.retryEAGAIN = retryEAGAIN || (() => true) + this.mkdir = mkdir || false + + if (typeof fd === 'number') { + this.fd = fd + process.nextTick(() => this.emit('ready')) + } else if (typeof fd === 'string') { + openFile(fd, this) + } else { + throw new Error('SonicBoom supports only file descriptors and files') + } + if (this.minLength >= MAX_WRITE) { + throw new Error(`minLength should be smaller than MAX_WRITE (${MAX_WRITE})`) + } + + this.release = (err, n) => { + if (err) { + if (err.code === 'EAGAIN' && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) { + if (this.sync) { + // This error code should not happen in sync mode, because it is + // not using the underlining operating system asynchronous functions. + // However it happens, and so we handle it. + // Ref: https://github.com/pinojs/pino/issues/783 + try { + sleep(BUSY_WRITE_TIMEOUT) + this.release(undefined, 0) + } catch (err) { + this.release(err) + } + } else { + // Let's give the destination some time to process the chunk. + setTimeout(() => { + fs.write(this.fd, this._writingBuf, 'utf8', this.release) + }, BUSY_WRITE_TIMEOUT) + } + } else { + this._writing = false + + this.emit('error', err) + } + return + } + + this._len -= n + this._writingBuf = this._writingBuf.slice(n) + + if (this._writingBuf.length) { + if (!this.sync) { + fs.write(this.fd, this._writingBuf, 'utf8', this.release) + return + } + + try { + do { + const n = fs.writeSync(this.fd, this._writingBuf, 'utf8') + this._len -= n + this._writingBuf = this._writingBuf.slice(n) + } while (this._writingBuf) + } catch (err) { + this.release(err) + return + } + } + + const len = this._len + if (this._reopening) { + this._writing = false + this._reopening = false + this.reopen() + } else if (len > this.minLength) { + actualWrite(this) + } else if (this._ending) { + if (len > 0) { + actualWrite(this) + } else { + this._writing = false + actualClose(this) + } + } else { + this._writing = false + if (this.sync) { + if (!this._asyncDrainScheduled) { + this._asyncDrainScheduled = true + process.nextTick(emitDrain, this) + } + } else { + this.emit('drain') + } + } + } + + this.on('newListener', function (name) { + if (name === 'drain') { + this._asyncDrainScheduled = false + } + }) +} + +function emitDrain (sonic) { + const hasListeners = sonic.listenerCount('drain') > 0 + if (!hasListeners) return + sonic._asyncDrainScheduled = false + sonic.emit('drain') +} + +inherits(SonicBoom, EventEmitter) + +SonicBoom.prototype.write = function (data) { + if (this.destroyed) { + throw new Error('SonicBoom destroyed') + } + + const len = this._len + data.length + const bufs = this._bufs + + if (this.maxLength && len > this.maxLength) { + this.emit('drop', data) + return this._len < this._hwm + } + + if ( + bufs.length === 0 || + bufs[bufs.length - 1].length + data.length > MAX_WRITE + ) { + bufs.push('' + data) + } else { + bufs[bufs.length - 1] += data + } + + this._len = len + + if (!this._writing && this._len >= this.minLength) { + actualWrite(this) + } + + return this._len < this._hwm +} + +SonicBoom.prototype.flush = function () { + if (this.destroyed) { + throw new Error('SonicBoom destroyed') + } + + if (this._writing || this.minLength <= 0) { + return + } + + if (this._bufs.length === 0) { + this._bufs.push('') + } + + actualWrite(this) +} + +SonicBoom.prototype.reopen = function (file) { + if (this.destroyed) { + throw new Error('SonicBoom destroyed') + } + + if (this._opening) { + this.once('ready', () => { + this.reopen(file) + }) + return + } + + if (this._ending) { + return + } + + if (!this.file) { + throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom') + } + + this._reopening = true + + if (this._writing) { + return + } + + const fd = this.fd + this.once('ready', () => { + if (fd !== this.fd) { + fs.close(fd, (err) => { + if (err) { + return this.emit('error', err) + } + }) + } + }) + + openFile(file || this.file, this) +} + +SonicBoom.prototype.end = function () { + if (this.destroyed) { + throw new Error('SonicBoom destroyed') + } + + if (this._opening) { + this.once('ready', () => { + this.end() + }) + return + } + + if (this._ending) { + return + } + + this._ending = true + + if (this._writing) { + return + } + + if (this._len > 0 && this.fd >= 0) { + actualWrite(this) + } else { + actualClose(this) + } +} + +SonicBoom.prototype.flushSync = function () { + if (this.destroyed) { + throw new Error('SonicBoom destroyed') + } + + if (this.fd < 0) { + throw new Error('sonic boom is not ready yet') + } + + if (!this._writing && this._writingBuf.length > 0) { + this._bufs.unshift(this._writingBuf) + this._writingBuf = '' + } + + while (this._bufs.length) { + const buf = this._bufs[0] + try { + this._len -= fs.writeSync(this.fd, buf, 'utf8') + this._bufs.shift() + } catch (err) { + if (err.code !== 'EAGAIN' || !this.retryEAGAIN(err, buf.length, this._len - buf.length)) { + throw err + } + + sleep(BUSY_WRITE_TIMEOUT) + } + } +} + +SonicBoom.prototype.destroy = function () { + if (this.destroyed) { + return + } + actualClose(this) +} + +function actualWrite (sonic) { + const release = sonic.release + sonic._writing = true + sonic._writingBuf = sonic._writingBuf || sonic._bufs.shift() || '' + + if (sonic.sync) { + try { + const written = fs.writeSync(sonic.fd, sonic._writingBuf, 'utf8') + release(null, written) + } catch (err) { + release(err) + } + } else { + fs.write(sonic.fd, sonic._writingBuf, 'utf8', release) + } +} + +function actualClose (sonic) { + if (sonic.fd === -1) { + sonic.once('ready', actualClose.bind(null, sonic)) + return + } + + sonic.destroyed = true + sonic._bufs = [] + + if (sonic.fd !== 1 && sonic.fd !== 2) { + fs.close(sonic.fd, done) + } else { + setImmediate(done) + } + + function done (err) { + if (err) { + sonic.emit('error', err) + return + } + + if (sonic._ending && !sonic._writing) { + sonic.emit('finish') + } + sonic.emit('close') + } +} + +/** + * These export configurations enable JS and TS developers + * to consumer SonicBoom in whatever way best suits their needs. + * Some examples of supported import syntax includes: + * - `const SonicBoom = require('SonicBoom')` + * - `const { SonicBoom } = require('SonicBoom')` + * - `import * as SonicBoom from 'SonicBoom'` + * - `import { SonicBoom } from 'SonicBoom'` + * - `import SonicBoom from 'SonicBoom'` + */ +SonicBoom.SonicBoom = SonicBoom +SonicBoom.default = SonicBoom +module.exports = SonicBoom + + +/***/ }), + +/***/ 65595: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var tty = __nccwpck_require__(76224); + +function _interopNamespace(e) { + if (e && e.__esModule) return e; + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n["default"] = e; + return Object.freeze(n); +} + +var tty__namespace = /*#__PURE__*/_interopNamespace(tty); + +const env = process.env || {}; +const argv = process.argv || []; + +const isDisabled = "NO_COLOR" in env || argv.includes("--no-color"); +const isForced = "FORCE_COLOR" in env || argv.includes("--color"); +const isWindows = process.platform === "win32"; + +const isCompatibleTerminal = + tty__namespace && tty__namespace.isatty && tty__namespace.isatty(1) && env.TERM && env.TERM !== "dumb"; + +const isCI = + "CI" in env && + ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env); + +const isColorSupported = + !isDisabled && (isForced || isWindows || isCompatibleTerminal || isCI); + +const replaceClose = ( + index, + string, + close, + replace, + head = string.substring(0, index) + replace, + tail = string.substring(index + close.length), + next = tail.indexOf(close) +) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace)); + +const clearBleed = (index, string, open, close, replace) => + index < 0 + ? open + string + close + : open + replaceClose(index, string, close, replace) + close; + +const filterEmpty = + (open, close, replace = open, at = open.length + 1) => + (string) => + string || !(string === "" || string === undefined) + ? clearBleed( + ("" + string).indexOf(close, at), + string, + open, + close, + replace + ) + : ""; + +const init = (open, close, replace) => + filterEmpty(`\x1b[${open}m`, `\x1b[${close}m`, replace); + +const colors = { + reset: init(0, 0), + bold: init(1, 22, "\x1b[22m\x1b[1m"), + dim: init(2, 22, "\x1b[22m\x1b[2m"), + italic: init(3, 23), + underline: init(4, 24), + inverse: init(7, 27), + hidden: init(8, 28), + strikethrough: init(9, 29), + black: init(30, 39), + red: init(31, 39), + green: init(32, 39), + yellow: init(33, 39), + blue: init(34, 39), + magenta: init(35, 39), + cyan: init(36, 39), + white: init(37, 39), + gray: init(90, 39), + bgBlack: init(40, 49), + bgRed: init(41, 49), + bgGreen: init(42, 49), + bgYellow: init(43, 49), + bgBlue: init(44, 49), + bgMagenta: init(45, 49), + bgCyan: init(46, 49), + bgWhite: init(47, 49), + blackBright: init(90, 39), + redBright: init(91, 39), + greenBright: init(92, 39), + yellowBright: init(93, 39), + blueBright: init(94, 39), + magentaBright: init(95, 39), + cyanBright: init(96, 39), + whiteBright: init(97, 39), + bgBlackBright: init(100, 49), + bgRedBright: init(101, 49), + bgGreenBright: init(102, 49), + bgYellowBright: init(103, 49), + bgBlueBright: init(104, 49), + bgMagentaBright: init(105, 49), + bgCyanBright: init(106, 49), + bgWhiteBright: init(107, 49), +}; + +const none = (any) => any; + +const createColors = ({ useColor = isColorSupported } = {}) => + useColor + ? colors + : Object.keys(colors).reduce( + (colors, key) => ({ ...colors, [key]: none }), + {} + ); + +const { + reset, + bold, + dim, + italic, + underline, + inverse, + hidden, + strikethrough, + black, + red, + green, + yellow, + blue, + magenta, + cyan, + white, + gray, + bgBlack, + bgRed, + bgGreen, + bgYellow, + bgBlue, + bgMagenta, + bgCyan, + bgWhite, + blackBright, + redBright, + greenBright, + yellowBright, + blueBright, + magentaBright, + cyanBright, + whiteBright, + bgBlackBright, + bgRedBright, + bgGreenBright, + bgYellowBright, + bgBlueBright, + bgMagentaBright, + bgCyanBright, + bgWhiteBright, +} = createColors(); + +exports.bgBlack = bgBlack; +exports.bgBlackBright = bgBlackBright; +exports.bgBlue = bgBlue; +exports.bgBlueBright = bgBlueBright; +exports.bgCyan = bgCyan; +exports.bgCyanBright = bgCyanBright; +exports.bgGreen = bgGreen; +exports.bgGreenBright = bgGreenBright; +exports.bgMagenta = bgMagenta; +exports.bgMagentaBright = bgMagentaBright; +exports.bgRed = bgRed; +exports.bgRedBright = bgRedBright; +exports.bgWhite = bgWhite; +exports.bgWhiteBright = bgWhiteBright; +exports.bgYellow = bgYellow; +exports.bgYellowBright = bgYellowBright; +exports.black = black; +exports.blackBright = blackBright; +exports.blue = blue; +exports.blueBright = blueBright; +exports.bold = bold; +exports.createColors = createColors; +exports.cyan = cyan; +exports.cyanBright = cyanBright; +exports.dim = dim; +exports.gray = gray; +exports.green = green; +exports.greenBright = greenBright; +exports.hidden = hidden; +exports.inverse = inverse; +exports.isColorSupported = isColorSupported; +exports.italic = italic; +exports.magenta = magenta; +exports.magentaBright = magentaBright; +exports.red = red; +exports.redBright = redBright; +exports.reset = reset; +exports.strikethrough = strikethrough; +exports.underline = underline; +exports.white = white; +exports.whiteBright = whiteBright; +exports.yellow = yellow; +exports.yellowBright = yellowBright; + + +/***/ }), + +/***/ 83352: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"name":"@babel/core","version":"7.12.9","description":"Babel compiler core.","main":"lib/index.js","author":"Sebastian McKenzie <sebmck@gmail.com>","homepage":"https://babeljs.io/","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-core"},"keywords":["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core","compiler"],"engines":{"node":">=6.9.0"},"funding":{"type":"opencollective","url":"https://opencollective.com/babel"},"browser":{"./lib/config/files/index.js":"./lib/config/files/index-browser.js","./lib/transform-file.js":"./lib/transform-file-browser.js","./src/config/files/index.js":"./src/config/files/index-browser.js","./src/transform-file.js":"./src/transform-file-browser.js"},"dependencies":{"@babel/code-frame":"^7.10.4","@babel/generator":"^7.12.5","@babel/helper-module-transforms":"^7.12.1","@babel/helpers":"^7.12.5","@babel/parser":"^7.12.7","@babel/template":"^7.12.7","@babel/traverse":"^7.12.9","@babel/types":"^7.12.7","convert-source-map":"^1.7.0","debug":"^4.1.0","gensync":"^1.0.0-beta.1","json5":"^2.1.2","lodash":"^4.17.19","resolve":"^1.3.2","semver":"^5.4.1","source-map":"^0.5.0"},"devDependencies":{"@babel/helper-transform-fixture-test-runner":"7.12.1"}}'); + +/***/ }), + +/***/ 22017: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"nbsp":" ","iexcl":"¡","cent":"¢","pound":"£","curren":"¤","yen":"¥","brvbar":"¦","sect":"§","uml":"¨","copy":"©","ordf":"ª","laquo":"«","not":"¬","shy":"­","reg":"®","macr":"¯","deg":"°","plusmn":"±","sup2":"²","sup3":"³","acute":"´","micro":"µ","para":"¶","middot":"·","cedil":"¸","sup1":"¹","ordm":"º","raquo":"»","frac14":"¼","frac12":"½","frac34":"¾","iquest":"¿","Agrave":"À","Aacute":"Á","Acirc":"Â","Atilde":"Ã","Auml":"Ä","Aring":"Å","AElig":"Æ","Ccedil":"Ç","Egrave":"È","Eacute":"É","Ecirc":"Ê","Euml":"Ë","Igrave":"Ì","Iacute":"Í","Icirc":"Î","Iuml":"Ï","ETH":"Ð","Ntilde":"Ñ","Ograve":"Ò","Oacute":"Ó","Ocirc":"Ô","Otilde":"Õ","Ouml":"Ö","times":"×","Oslash":"Ø","Ugrave":"Ù","Uacute":"Ú","Ucirc":"Û","Uuml":"Ü","Yacute":"Ý","THORN":"Þ","szlig":"ß","agrave":"à","aacute":"á","acirc":"â","atilde":"ã","auml":"ä","aring":"å","aelig":"æ","ccedil":"ç","egrave":"è","eacute":"é","ecirc":"ê","euml":"ë","igrave":"ì","iacute":"í","icirc":"î","iuml":"ï","eth":"ð","ntilde":"ñ","ograve":"ò","oacute":"ó","ocirc":"ô","otilde":"õ","ouml":"ö","divide":"÷","oslash":"ø","ugrave":"ù","uacute":"ú","ucirc":"û","uuml":"ü","yacute":"ý","thorn":"þ","yuml":"ÿ","fnof":"ƒ","Alpha":"Α","Beta":"Β","Gamma":"Γ","Delta":"Δ","Epsilon":"Ε","Zeta":"Ζ","Eta":"Η","Theta":"Θ","Iota":"Ι","Kappa":"Κ","Lambda":"Λ","Mu":"Μ","Nu":"Ν","Xi":"Ξ","Omicron":"Ο","Pi":"Π","Rho":"Ρ","Sigma":"Σ","Tau":"Τ","Upsilon":"Υ","Phi":"Φ","Chi":"Χ","Psi":"Ψ","Omega":"Ω","alpha":"α","beta":"β","gamma":"γ","delta":"δ","epsilon":"ε","zeta":"ζ","eta":"η","theta":"θ","iota":"ι","kappa":"κ","lambda":"λ","mu":"μ","nu":"ν","xi":"ξ","omicron":"ο","pi":"π","rho":"ρ","sigmaf":"ς","sigma":"σ","tau":"τ","upsilon":"υ","phi":"φ","chi":"χ","psi":"ψ","omega":"ω","thetasym":"ϑ","upsih":"ϒ","piv":"ϖ","bull":"•","hellip":"…","prime":"′","Prime":"″","oline":"‾","frasl":"⁄","weierp":"℘","image":"ℑ","real":"ℜ","trade":"™","alefsym":"ℵ","larr":"←","uarr":"↑","rarr":"→","darr":"↓","harr":"↔","crarr":"↵","lArr":"⇐","uArr":"⇑","rArr":"⇒","dArr":"⇓","hArr":"⇔","forall":"∀","part":"∂","exist":"∃","empty":"∅","nabla":"∇","isin":"∈","notin":"∉","ni":"∋","prod":"∏","sum":"∑","minus":"−","lowast":"∗","radic":"√","prop":"∝","infin":"∞","ang":"∠","and":"∧","or":"∨","cap":"∩","cup":"∪","int":"∫","there4":"∴","sim":"∼","cong":"≅","asymp":"≈","ne":"≠","equiv":"≡","le":"≤","ge":"≥","sub":"⊂","sup":"⊃","nsub":"⊄","sube":"⊆","supe":"⊇","oplus":"⊕","otimes":"⊗","perp":"⊥","sdot":"⋅","lceil":"⌈","rceil":"⌉","lfloor":"⌊","rfloor":"⌋","lang":"〈","rang":"〉","loz":"◊","spades":"♠","clubs":"♣","hearts":"♥","diams":"♦","quot":"\\"","amp":"&","lt":"<","gt":">","OElig":"Œ","oelig":"œ","Scaron":"Š","scaron":"š","Yuml":"Ÿ","circ":"ˆ","tilde":"˜","ensp":" ","emsp":" ","thinsp":" ","zwnj":"‌","zwj":"‍","lrm":"‎","rlm":"‏","ndash":"–","mdash":"—","lsquo":"‘","rsquo":"’","sbquo":"‚","ldquo":"“","rdquo":"”","bdquo":"„","dagger":"†","Dagger":"‡","permil":"‰","lsaquo":"‹","rsaquo":"›","euro":"€"}'); + +/***/ }), + +/***/ 93562: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"AElig":"Æ","AMP":"&","Aacute":"Á","Acirc":"Â","Agrave":"À","Aring":"Å","Atilde":"Ã","Auml":"Ä","COPY":"©","Ccedil":"Ç","ETH":"Ð","Eacute":"É","Ecirc":"Ê","Egrave":"È","Euml":"Ë","GT":">","Iacute":"Í","Icirc":"Î","Igrave":"Ì","Iuml":"Ï","LT":"<","Ntilde":"Ñ","Oacute":"Ó","Ocirc":"Ô","Ograve":"Ò","Oslash":"Ø","Otilde":"Õ","Ouml":"Ö","QUOT":"\\"","REG":"®","THORN":"Þ","Uacute":"Ú","Ucirc":"Û","Ugrave":"Ù","Uuml":"Ü","Yacute":"Ý","aacute":"á","acirc":"â","acute":"´","aelig":"æ","agrave":"à","amp":"&","aring":"å","atilde":"ã","auml":"ä","brvbar":"¦","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","curren":"¤","deg":"°","divide":"÷","eacute":"é","ecirc":"ê","egrave":"è","eth":"ð","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","iacute":"í","icirc":"î","iexcl":"¡","igrave":"ì","iquest":"¿","iuml":"ï","laquo":"«","lt":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","ntilde":"ñ","oacute":"ó","ocirc":"ô","ograve":"ò","ordf":"ª","ordm":"º","oslash":"ø","otilde":"õ","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","raquo":"»","reg":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","thorn":"þ","times":"×","uacute":"ú","ucirc":"û","ugrave":"ù","uml":"¨","uuml":"ü","yacute":"ý","yen":"¥","yuml":"ÿ"}'); + +/***/ }), + +/***/ 45129: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"AEli":"Æ","AElig":"Æ","AM":"&","AMP":"&","Aacut":"Á","Aacute":"Á","Abreve":"Ă","Acir":"Â","Acirc":"Â","Acy":"А","Afr":"𝔄","Agrav":"À","Agrave":"À","Alpha":"Α","Amacr":"Ā","And":"⩓","Aogon":"Ą","Aopf":"𝔸","ApplyFunction":"⁡","Arin":"Å","Aring":"Å","Ascr":"𝒜","Assign":"≔","Atild":"Ã","Atilde":"Ã","Aum":"Ä","Auml":"Ä","Backslash":"∖","Barv":"⫧","Barwed":"⌆","Bcy":"Б","Because":"∵","Bernoullis":"ℬ","Beta":"Β","Bfr":"𝔅","Bopf":"𝔹","Breve":"˘","Bscr":"ℬ","Bumpeq":"≎","CHcy":"Ч","COP":"©","COPY":"©","Cacute":"Ć","Cap":"⋒","CapitalDifferentialD":"ⅅ","Cayleys":"ℭ","Ccaron":"Č","Ccedi":"Ç","Ccedil":"Ç","Ccirc":"Ĉ","Cconint":"∰","Cdot":"Ċ","Cedilla":"¸","CenterDot":"·","Cfr":"ℭ","Chi":"Χ","CircleDot":"⊙","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","Colon":"∷","Colone":"⩴","Congruent":"≡","Conint":"∯","ContourIntegral":"∮","Copf":"ℂ","Coproduct":"∐","CounterClockwiseContourIntegral":"∳","Cross":"⨯","Cscr":"𝒞","Cup":"⋓","CupCap":"≍","DD":"ⅅ","DDotrahd":"⤑","DJcy":"Ђ","DScy":"Ѕ","DZcy":"Џ","Dagger":"‡","Darr":"↡","Dashv":"⫤","Dcaron":"Ď","Dcy":"Д","Del":"∇","Delta":"Δ","Dfr":"𝔇","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","Diamond":"⋄","DifferentialD":"ⅆ","Dopf":"𝔻","Dot":"¨","DotDot":"⃜","DotEqual":"≐","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrow":"↓","DownArrowBar":"⤓","DownArrowUpArrow":"⇵","DownBreve":"̑","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVector":"↽","DownLeftVectorBar":"⥖","DownRightTeeVector":"⥟","DownRightVector":"⇁","DownRightVectorBar":"⥗","DownTee":"⊤","DownTeeArrow":"↧","Downarrow":"⇓","Dscr":"𝒟","Dstrok":"Đ","ENG":"Ŋ","ET":"Ð","ETH":"Ð","Eacut":"É","Eacute":"É","Ecaron":"Ě","Ecir":"Ê","Ecirc":"Ê","Ecy":"Э","Edot":"Ė","Efr":"𝔈","Egrav":"È","Egrave":"È","Element":"∈","Emacr":"Ē","EmptySmallSquare":"◻","EmptyVerySmallSquare":"▫","Eogon":"Ę","Eopf":"𝔼","Epsilon":"Ε","Equal":"⩵","EqualTilde":"≂","Equilibrium":"⇌","Escr":"ℰ","Esim":"⩳","Eta":"Η","Eum":"Ë","Euml":"Ë","Exists":"∃","ExponentialE":"ⅇ","Fcy":"Ф","Ffr":"𝔉","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","Fopf":"𝔽","ForAll":"∀","Fouriertrf":"ℱ","Fscr":"ℱ","GJcy":"Ѓ","G":">","GT":">","Gamma":"Γ","Gammad":"Ϝ","Gbreve":"Ğ","Gcedil":"Ģ","Gcirc":"Ĝ","Gcy":"Г","Gdot":"Ġ","Gfr":"𝔊","Gg":"⋙","Gopf":"𝔾","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","Gt":"≫","HARDcy":"Ъ","Hacek":"ˇ","Hat":"^","Hcirc":"Ĥ","Hfr":"ℌ","HilbertSpace":"ℋ","Hopf":"ℍ","HorizontalLine":"─","Hscr":"ℋ","Hstrok":"Ħ","HumpDownHump":"≎","HumpEqual":"≏","IEcy":"Е","IJlig":"IJ","IOcy":"Ё","Iacut":"Í","Iacute":"Í","Icir":"Î","Icirc":"Î","Icy":"И","Idot":"İ","Ifr":"ℑ","Igrav":"Ì","Igrave":"Ì","Im":"ℑ","Imacr":"Ī","ImaginaryI":"ⅈ","Implies":"⇒","Int":"∬","Integral":"∫","Intersection":"⋂","InvisibleComma":"⁣","InvisibleTimes":"⁢","Iogon":"Į","Iopf":"𝕀","Iota":"Ι","Iscr":"ℐ","Itilde":"Ĩ","Iukcy":"І","Ium":"Ï","Iuml":"Ï","Jcirc":"Ĵ","Jcy":"Й","Jfr":"𝔍","Jopf":"𝕁","Jscr":"𝒥","Jsercy":"Ј","Jukcy":"Є","KHcy":"Х","KJcy":"Ќ","Kappa":"Κ","Kcedil":"Ķ","Kcy":"К","Kfr":"𝔎","Kopf":"𝕂","Kscr":"𝒦","LJcy":"Љ","L":"<","LT":"<","Lacute":"Ĺ","Lambda":"Λ","Lang":"⟪","Laplacetrf":"ℒ","Larr":"↞","Lcaron":"Ľ","Lcedil":"Ļ","Lcy":"Л","LeftAngleBracket":"⟨","LeftArrow":"←","LeftArrowBar":"⇤","LeftArrowRightArrow":"⇆","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVector":"⇃","LeftDownVectorBar":"⥙","LeftFloor":"⌊","LeftRightArrow":"↔","LeftRightVector":"⥎","LeftTee":"⊣","LeftTeeArrow":"↤","LeftTeeVector":"⥚","LeftTriangle":"⊲","LeftTriangleBar":"⧏","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVector":"↿","LeftUpVectorBar":"⥘","LeftVector":"↼","LeftVectorBar":"⥒","Leftarrow":"⇐","Leftrightarrow":"⇔","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","LessLess":"⪡","LessSlantEqual":"⩽","LessTilde":"≲","Lfr":"𝔏","Ll":"⋘","Lleftarrow":"⇚","Lmidot":"Ŀ","LongLeftArrow":"⟵","LongLeftRightArrow":"⟷","LongRightArrow":"⟶","Longleftarrow":"⟸","Longleftrightarrow":"⟺","Longrightarrow":"⟹","Lopf":"𝕃","LowerLeftArrow":"↙","LowerRightArrow":"↘","Lscr":"ℒ","Lsh":"↰","Lstrok":"Ł","Lt":"≪","Map":"⤅","Mcy":"М","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","MinusPlus":"∓","Mopf":"𝕄","Mscr":"ℳ","Mu":"Μ","NJcy":"Њ","Nacute":"Ń","Ncaron":"Ň","Ncedil":"Ņ","Ncy":"Н","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","Nfr":"𝔑","NoBreak":"⁠","NonBreakingSpace":" ","Nopf":"ℕ","Not":"⫬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","NotLeftTriangle":"⋪","NotLeftTriangleBar":"⧏̸","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangle":"⋫","NotRightTriangleBar":"⧐̸","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","Nscr":"𝒩","Ntild":"Ñ","Ntilde":"Ñ","Nu":"Ν","OElig":"Œ","Oacut":"Ó","Oacute":"Ó","Ocir":"Ô","Ocirc":"Ô","Ocy":"О","Odblac":"Ő","Ofr":"𝔒","Ograv":"Ò","Ograve":"Ò","Omacr":"Ō","Omega":"Ω","Omicron":"Ο","Oopf":"𝕆","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","Or":"⩔","Oscr":"𝒪","Oslas":"Ø","Oslash":"Ø","Otild":"Õ","Otilde":"Õ","Otimes":"⨷","Oum":"Ö","Ouml":"Ö","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","PartialD":"∂","Pcy":"П","Pfr":"𝔓","Phi":"Φ","Pi":"Π","PlusMinus":"±","Poincareplane":"ℌ","Popf":"ℙ","Pr":"⪻","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","Prime":"″","Product":"∏","Proportion":"∷","Proportional":"∝","Pscr":"𝒫","Psi":"Ψ","QUO":"\\"","QUOT":"\\"","Qfr":"𝔔","Qopf":"ℚ","Qscr":"𝒬","RBarr":"⤐","RE":"®","REG":"®","Racute":"Ŕ","Rang":"⟫","Rarr":"↠","Rarrtl":"⤖","Rcaron":"Ř","Rcedil":"Ŗ","Rcy":"Р","Re":"ℜ","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","Rfr":"ℜ","Rho":"Ρ","RightAngleBracket":"⟩","RightArrow":"→","RightArrowBar":"⇥","RightArrowLeftArrow":"⇄","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVector":"⇂","RightDownVectorBar":"⥕","RightFloor":"⌋","RightTee":"⊢","RightTeeArrow":"↦","RightTeeVector":"⥛","RightTriangle":"⊳","RightTriangleBar":"⧐","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVector":"↾","RightUpVectorBar":"⥔","RightVector":"⇀","RightVectorBar":"⥓","Rightarrow":"⇒","Ropf":"ℝ","RoundImplies":"⥰","Rrightarrow":"⇛","Rscr":"ℛ","Rsh":"↱","RuleDelayed":"⧴","SHCHcy":"Щ","SHcy":"Ш","SOFTcy":"Ь","Sacute":"Ś","Sc":"⪼","Scaron":"Š","Scedil":"Ş","Scirc":"Ŝ","Scy":"С","Sfr":"𝔖","ShortDownArrow":"↓","ShortLeftArrow":"←","ShortRightArrow":"→","ShortUpArrow":"↑","Sigma":"Σ","SmallCircle":"∘","Sopf":"𝕊","Sqrt":"√","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","Sscr":"𝒮","Star":"⋆","Sub":"⋐","Subset":"⋐","SubsetEqual":"⊆","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","SuchThat":"∋","Sum":"∑","Sup":"⋑","Superset":"⊃","SupersetEqual":"⊇","Supset":"⋑","THOR":"Þ","THORN":"Þ","TRADE":"™","TSHcy":"Ћ","TScy":"Ц","Tab":"\\t","Tau":"Τ","Tcaron":"Ť","Tcedil":"Ţ","Tcy":"Т","Tfr":"𝔗","Therefore":"∴","Theta":"Θ","ThickSpace":"  ","ThinSpace":" ","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","Topf":"𝕋","TripleDot":"⃛","Tscr":"𝒯","Tstrok":"Ŧ","Uacut":"Ú","Uacute":"Ú","Uarr":"↟","Uarrocir":"⥉","Ubrcy":"Ў","Ubreve":"Ŭ","Ucir":"Û","Ucirc":"Û","Ucy":"У","Udblac":"Ű","Ufr":"𝔘","Ugrav":"Ù","Ugrave":"Ù","Umacr":"Ū","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","Uopf":"𝕌","UpArrow":"↑","UpArrowBar":"⤒","UpArrowDownArrow":"⇅","UpDownArrow":"↕","UpEquilibrium":"⥮","UpTee":"⊥","UpTeeArrow":"↥","Uparrow":"⇑","Updownarrow":"⇕","UpperLeftArrow":"↖","UpperRightArrow":"↗","Upsi":"ϒ","Upsilon":"Υ","Uring":"Ů","Uscr":"𝒰","Utilde":"Ũ","Uum":"Ü","Uuml":"Ü","VDash":"⊫","Vbar":"⫫","Vcy":"В","Vdash":"⊩","Vdashl":"⫦","Vee":"⋁","Verbar":"‖","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","Vopf":"𝕍","Vscr":"𝒱","Vvdash":"⊪","Wcirc":"Ŵ","Wedge":"⋀","Wfr":"𝔚","Wopf":"𝕎","Wscr":"𝒲","Xfr":"𝔛","Xi":"Ξ","Xopf":"𝕏","Xscr":"𝒳","YAcy":"Я","YIcy":"Ї","YUcy":"Ю","Yacut":"Ý","Yacute":"Ý","Ycirc":"Ŷ","Ycy":"Ы","Yfr":"𝔜","Yopf":"𝕐","Yscr":"𝒴","Yuml":"Ÿ","ZHcy":"Ж","Zacute":"Ź","Zcaron":"Ž","Zcy":"З","Zdot":"Ż","ZeroWidthSpace":"​","Zeta":"Ζ","Zfr":"ℨ","Zopf":"ℤ","Zscr":"𝒵","aacut":"á","aacute":"á","abreve":"ă","ac":"∾","acE":"∾̳","acd":"∿","acir":"â","acirc":"â","acut":"´","acute":"´","acy":"а","aeli":"æ","aelig":"æ","af":"⁡","afr":"𝔞","agrav":"à","agrave":"à","alefsym":"ℵ","aleph":"ℵ","alpha":"α","amacr":"ā","amalg":"⨿","am":"&","amp":"&","and":"∧","andand":"⩕","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsd":"∡","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","aogon":"ą","aopf":"𝕒","ap":"≈","apE":"⩰","apacir":"⩯","ape":"≊","apid":"≋","apos":"\'","approx":"≈","approxeq":"≊","arin":"å","aring":"å","ascr":"𝒶","ast":"*","asymp":"≈","asympeq":"≍","atild":"ã","atilde":"ã","aum":"ä","auml":"ä","awconint":"∳","awint":"⨑","bNot":"⫭","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","barvee":"⊽","barwed":"⌅","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","beta":"β","beth":"ℶ","between":"≬","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bnot":"⌐","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxDL":"╗","boxDR":"╔","boxDl":"╖","boxDr":"╓","boxH":"═","boxHD":"╦","boxHU":"╩","boxHd":"╤","boxHu":"╧","boxUL":"╝","boxUR":"╚","boxUl":"╜","boxUr":"╙","boxV":"║","boxVH":"╬","boxVL":"╣","boxVR":"╠","boxVh":"╫","boxVl":"╢","boxVr":"╟","boxbox":"⧉","boxdL":"╕","boxdR":"╒","boxdl":"┐","boxdr":"┌","boxh":"─","boxhD":"╥","boxhU":"╨","boxhd":"┬","boxhu":"┴","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxuL":"╛","boxuR":"╘","boxul":"┘","boxur":"└","boxv":"│","boxvH":"╪","boxvL":"╡","boxvR":"╞","boxvh":"┼","boxvl":"┤","boxvr":"├","bprime":"‵","breve":"˘","brvba":"¦","brvbar":"¦","bscr":"𝒷","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsol":"\\\\","bsolb":"⧅","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","bumpeq":"≏","cacute":"ć","cap":"∩","capand":"⩄","capbrcup":"⩉","capcap":"⩋","capcup":"⩇","capdot":"⩀","caps":"∩︀","caret":"⁁","caron":"ˇ","ccaps":"⩍","ccaron":"č","ccedi":"ç","ccedil":"ç","ccirc":"ĉ","ccups":"⩌","ccupssm":"⩐","cdot":"ċ","cedi":"¸","cedil":"¸","cemptyv":"⦲","cen":"¢","cent":"¢","centerdot":"·","cfr":"𝔠","chcy":"ч","check":"✓","checkmark":"✓","chi":"χ","cir":"○","cirE":"⧃","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledR":"®","circledS":"Ⓢ","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","clubs":"♣","clubsuit":"♣","colon":":","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","conint":"∮","copf":"𝕔","coprod":"∐","cop":"©","copy":"©","copysr":"℗","crarr":"↵","cross":"✗","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cup":"∪","cupbrcap":"⩈","cupcap":"⩆","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curre":"¤","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dArr":"⇓","dHar":"⥥","dagger":"†","daleth":"ℸ","darr":"↓","dash":"‐","dashv":"⊣","dbkarow":"⤏","dblac":"˝","dcaron":"ď","dcy":"д","dd":"ⅆ","ddagger":"‡","ddarr":"⇊","ddotseq":"⩷","de":"°","deg":"°","delta":"δ","demptyv":"⦱","dfisht":"⥿","dfr":"𝔡","dharl":"⇃","dharr":"⇂","diam":"⋄","diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","digamma":"ϝ","disin":"⋲","div":"÷","divid":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","dopf":"𝕕","dot":"˙","doteq":"≐","doteqdot":"≑","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","downarrow":"↓","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","dscr":"𝒹","dscy":"ѕ","dsol":"⧶","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","dzcy":"џ","dzigrarr":"⟿","eDDot":"⩷","eDot":"≑","eacut":"é","eacute":"é","easter":"⩮","ecaron":"ě","ecir":"ê","ecirc":"ê","ecolon":"≕","ecy":"э","edot":"ė","ee":"ⅇ","efDot":"≒","efr":"𝔢","eg":"⪚","egrav":"è","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","emacr":"ē","empty":"∅","emptyset":"∅","emptyv":"∅","emsp13":" ","emsp14":" ","emsp":" ","eng":"ŋ","ensp":" ","eogon":"ę","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","equals":"=","equest":"≟","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erDot":"≓","erarr":"⥱","escr":"ℯ","esdot":"≐","esim":"≂","eta":"η","et":"ð","eth":"ð","eum":"ë","euml":"ë","euro":"€","excl":"!","exist":"∃","expectation":"ℰ","exponentiale":"ⅇ","fallingdotseq":"≒","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","ffr":"𝔣","filig":"fi","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","fopf":"𝕗","forall":"∀","fork":"⋔","forkv":"⫙","fpartint":"⨍","frac1":"¼","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac3":"¾","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","gE":"≧","gEl":"⪌","gacute":"ǵ","gamma":"γ","gammad":"ϝ","gap":"⪆","gbreve":"ğ","gcirc":"ĝ","gcy":"г","gdot":"ġ","ge":"≥","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","ges":"⩾","gescc":"⪩","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","gfr":"𝔤","gg":"≫","ggg":"⋙","gimel":"ℷ","gjcy":"ѓ","gl":"≷","glE":"⪒","gla":"⪥","glj":"⪤","gnE":"≩","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gneq":"⪈","gneqq":"≩","gnsim":"⋧","gopf":"𝕘","grave":"`","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","g":">","gt":">","gtcc":"⪧","gtcir":"⩺","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","hArr":"⇔","hairsp":" ","half":"½","hamilt":"ℋ","hardcy":"ъ","harr":"↔","harrcir":"⥈","harrw":"↭","hbar":"ℏ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","horbar":"―","hscr":"𝒽","hslash":"ℏ","hstrok":"ħ","hybull":"⁃","hyphen":"‐","iacut":"í","iacute":"í","ic":"⁣","icir":"î","icirc":"î","icy":"и","iecy":"е","iexc":"¡","iexcl":"¡","iff":"⇔","ifr":"𝔦","igrav":"ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","ijlig":"ij","imacr":"ī","image":"ℑ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","imof":"⊷","imped":"Ƶ","in":"∈","incare":"℅","infin":"∞","infintie":"⧝","inodot":"ı","int":"∫","intcal":"⊺","integers":"ℤ","intercal":"⊺","intlarhk":"⨗","intprod":"⨼","iocy":"ё","iogon":"į","iopf":"𝕚","iota":"ι","iprod":"⨼","iques":"¿","iquest":"¿","iscr":"𝒾","isin":"∈","isinE":"⋹","isindot":"⋵","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","itilde":"ĩ","iukcy":"і","ium":"ï","iuml":"ï","jcirc":"ĵ","jcy":"й","jfr":"𝔧","jmath":"ȷ","jopf":"𝕛","jscr":"𝒿","jsercy":"ј","jukcy":"є","kappa":"κ","kappav":"ϰ","kcedil":"ķ","kcy":"к","kfr":"𝔨","kgreen":"ĸ","khcy":"х","kjcy":"ќ","kopf":"𝕜","kscr":"𝓀","lAarr":"⇚","lArr":"⇐","lAtail":"⤛","lBarr":"⤎","lE":"≦","lEg":"⪋","lHar":"⥢","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","lambda":"λ","lang":"⟨","langd":"⦑","langle":"⟨","lap":"⪅","laqu":"«","laquo":"«","larr":"←","larrb":"⇤","larrbfs":"⤟","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","lat":"⪫","latail":"⤙","late":"⪭","lates":"⪭︀","lbarr":"⤌","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","lcaron":"ľ","lcedil":"ļ","lceil":"⌈","lcub":"{","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","leftarrow":"←","leftarrowtail":"↢","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","leftthreetimes":"⋋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","les":"⩽","lescc":"⪨","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","lessgtr":"≶","lesssim":"≲","lfisht":"⥼","lfloor":"⌊","lfr":"𝔩","lg":"≶","lgE":"⪑","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","ljcy":"љ","ll":"≪","llarr":"⇇","llcorner":"⌞","llhard":"⥫","lltri":"◺","lmidot":"ŀ","lmoust":"⎰","lmoustache":"⎰","lnE":"≨","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","longleftrightarrow":"⟷","longmapsto":"⟼","longrightarrow":"⟶","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","lstrok":"ł","l":"<","lt":"<","ltcc":"⪦","ltcir":"⩹","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltrPar":"⦖","ltri":"◃","ltrie":"⊴","ltrif":"◂","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","mDDot":"∺","mac":"¯","macr":"¯","male":"♂","malt":"✠","maltese":"✠","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","mcy":"м","mdash":"—","measuredangle":"∡","mfr":"𝔪","mho":"℧","micr":"µ","micro":"µ","mid":"∣","midast":"*","midcir":"⫰","middo":"·","middot":"·","minus":"−","minusb":"⊟","minusd":"∸","minusdu":"⨪","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","mopf":"𝕞","mp":"∓","mscr":"𝓂","mstpos":"∾","mu":"μ","multimap":"⊸","mumap":"⊸","nGg":"⋙̸","nGt":"≫⃒","nGtv":"≫̸","nLeftarrow":"⇍","nLeftrightarrow":"⇎","nLl":"⋘̸","nLt":"≪⃒","nLtv":"≪̸","nRightarrow":"⇏","nVDash":"⊯","nVdash":"⊮","nabla":"∇","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natur":"♮","natural":"♮","naturals":"ℕ","nbs":" ","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","ncaron":"ň","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","ncy":"н","ndash":"–","ne":"≠","neArr":"⇗","nearhk":"⤤","nearr":"↗","nearrow":"↗","nedot":"≐̸","nequiv":"≢","nesear":"⤨","nesim":"≂̸","nexist":"∄","nexists":"∄","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","ngsim":"≵","ngt":"≯","ngtr":"≯","nhArr":"⇎","nharr":"↮","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","njcy":"њ","nlArr":"⇍","nlE":"≦̸","nlarr":"↚","nldr":"‥","nle":"≰","nleftarrow":"↚","nleftrightarrow":"↮","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nlsim":"≴","nlt":"≮","nltri":"⋪","nltrie":"⋬","nmid":"∤","nopf":"𝕟","no":"¬","not":"¬","notin":"∉","notinE":"⋹̸","notindot":"⋵̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","npar":"∦","nparallel":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","npre":"⪯̸","nprec":"⊀","npreceq":"⪯̸","nrArr":"⇏","nrarr":"↛","nrarrc":"⤳̸","nrarrw":"↝̸","nrightarrow":"↛","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","ntild":"ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","nu":"ν","num":"#","numero":"№","numsp":" ","nvDash":"⊭","nvHarr":"⤄","nvap":"≍⃒","nvdash":"⊬","nvge":"≥⃒","nvgt":">⃒","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwArr":"⇖","nwarhk":"⤣","nwarr":"↖","nwarrow":"↖","nwnear":"⤧","oS":"Ⓢ","oacut":"ó","oacute":"ó","oast":"⊛","ocir":"ô","ocirc":"ô","ocy":"о","odash":"⊝","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","oelig":"œ","ofcir":"⦿","ofr":"𝔬","ogon":"˛","ograv":"ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","omacr":"ō","omega":"ω","omicron":"ο","omid":"⦶","ominus":"⊖","oopf":"𝕠","opar":"⦷","operp":"⦹","oplus":"⊕","or":"∨","orarr":"↻","ord":"º","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oscr":"ℴ","oslas":"ø","oslash":"ø","osol":"⊘","otild":"õ","otilde":"õ","otimes":"⊗","otimesas":"⨶","oum":"ö","ouml":"ö","ovbar":"⌽","par":"¶","para":"¶","parallel":"∥","parsim":"⫳","parsl":"⫽","part":"∂","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","pfr":"𝔭","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plus":"+","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plusdo":"∔","plusdu":"⨥","pluse":"⩲","plusm":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","pointint":"⨕","popf":"𝕡","poun":"£","pound":"£","pr":"≺","prE":"⪳","prap":"⪷","prcue":"≼","pre":"⪯","prec":"≺","precapprox":"⪷","preccurlyeq":"≼","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","precsim":"≾","prime":"′","primes":"ℙ","prnE":"⪵","prnap":"⪹","prnsim":"⋨","prod":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","propto":"∝","prsim":"≾","prurel":"⊰","pscr":"𝓅","psi":"ψ","puncsp":" ","qfr":"𝔮","qint":"⨌","qopf":"𝕢","qprime":"⁗","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quo":"\\"","quot":"\\"","rAarr":"⇛","rArr":"⇒","rAtail":"⤜","rBarr":"⤏","rHar":"⥤","race":"∽̱","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","rangd":"⦒","range":"⦥","rangle":"⟩","raqu":"»","raquo":"»","rarr":"→","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","rarrtl":"↣","rarrw":"↝","ratail":"⤚","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","rcaron":"ř","rcedil":"ŗ","rceil":"⌉","rcub":"}","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","rect":"▭","re":"®","reg":"®","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","rhard":"⇁","rharu":"⇀","rharul":"⥬","rho":"ρ","rhov":"ϱ","rightarrow":"→","rightarrowtail":"↣","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","rightthreetimes":"⋌","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoust":"⎱","rmoustache":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","roplus":"⨮","rotimes":"⨵","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","rsaquo":"›","rscr":"𝓇","rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","ruluhar":"⥨","rx":"℞","sacute":"ś","sbquo":"‚","sc":"≻","scE":"⪴","scap":"⪸","scaron":"š","sccue":"≽","sce":"⪰","scedil":"ş","scirc":"ŝ","scnE":"⪶","scnap":"⪺","scnsim":"⋩","scpolint":"⨓","scsim":"≿","scy":"с","sdot":"⋅","sdotb":"⊡","sdote":"⩦","seArr":"⇘","searhk":"⤥","searr":"↘","searrow":"↘","sec":"§","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","sfr":"𝔰","sfrown":"⌢","sharp":"♯","shchcy":"щ","shcy":"ш","shortmid":"∣","shortparallel":"∥","sh":"­","shy":"­","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","softcy":"ь","sol":"/","solb":"⧄","solbar":"⌿","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","squ":"□","square":"□","squarf":"▪","squf":"▪","srarr":"→","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","subE":"⫅","subdot":"⪽","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","subseteq":"⊆","subseteqq":"⫅","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succ":"≻","succapprox":"⪸","succcurlyeq":"≽","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","sum":"∑","sung":"♪","sup":"⊃","sup1":"¹","sup2":"²","sup3":"³","supE":"⫆","supdot":"⪾","supdsub":"⫘","supe":"⊇","supedot":"⫄","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swArr":"⇙","swarhk":"⤦","swarr":"↙","swarrow":"↙","swnwar":"⤪","szli":"ß","szlig":"ß","target":"⌖","tau":"τ","tbrk":"⎴","tcaron":"ť","tcedil":"ţ","tcy":"т","tdot":"⃛","telrec":"⌕","tfr":"𝔱","there4":"∴","therefore":"∴","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","thinsp":" ","thkap":"≈","thksim":"∼","thor":"þ","thorn":"þ","tilde":"˜","time":"×","times":"×","timesb":"⊠","timesbar":"⨱","timesd":"⨰","tint":"∭","toea":"⤨","top":"⊤","topbot":"⌶","topcir":"⫱","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","tscr":"𝓉","tscy":"ц","tshcy":"ћ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","uArr":"⇑","uHar":"⥣","uacut":"ú","uacute":"ú","uarr":"↑","ubrcy":"ў","ubreve":"ŭ","ucir":"û","ucirc":"û","ucy":"у","udarr":"⇅","udblac":"ű","udhar":"⥮","ufisht":"⥾","ufr":"𝔲","ugrav":"ù","ugrave":"ù","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","umacr":"ū","um":"¨","uml":"¨","uogon":"ų","uopf":"𝕦","uparrow":"↑","updownarrow":"↕","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","upsi":"υ","upsih":"ϒ","upsilon":"υ","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","uring":"ů","urtri":"◹","uscr":"𝓊","utdot":"⋰","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","uum":"ü","uuml":"ü","uwangle":"⦧","vArr":"⇕","vBar":"⫨","vBarv":"⫩","vDash":"⊨","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vcy":"в","vdash":"⊢","vee":"∨","veebar":"⊻","veeeq":"≚","vellip":"⋮","verbar":"|","vert":"|","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","vopf":"𝕧","vprop":"∝","vrtri":"⊳","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","vzigzag":"⦚","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","wedgeq":"≙","weierp":"℘","wfr":"𝔴","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","xfr":"𝔵","xhArr":"⟺","xharr":"⟷","xi":"ξ","xlArr":"⟸","xlarr":"⟵","xmap":"⟼","xnis":"⋻","xodot":"⨀","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrArr":"⟹","xrarr":"⟶","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","yacut":"ý","yacute":"ý","yacy":"я","ycirc":"ŷ","ycy":"ы","ye":"¥","yen":"¥","yfr":"𝔶","yicy":"ї","yopf":"𝕪","yscr":"𝓎","yucy":"ю","yum":"ÿ","yuml":"ÿ","zacute":"ź","zcaron":"ž","zcy":"з","zdot":"ż","zeetrf":"ℨ","zeta":"ζ","zfr":"𝔷","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","zscr":"𝓏","zwj":"‍","zwnj":"‌"}'); + +/***/ }), + +/***/ 71216: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"0":"�","128":"€","130":"‚","131":"ƒ","132":"„","133":"…","134":"†","135":"‡","136":"ˆ","137":"‰","138":"Š","139":"‹","140":"Œ","142":"Ž","145":"‘","146":"’","147":"“","148":"”","149":"•","150":"–","151":"—","152":"˜","153":"™","154":"š","155":"›","156":"œ","158":"ž","159":"Ÿ"}'); + +/***/ }), + +/***/ 47796: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"builtin":{"Array":false,"ArrayBuffer":false,"Atomics":false,"BigInt":false,"BigInt64Array":false,"BigUint64Array":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"globalThis":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"SharedArrayBuffer":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"es5":{"Array":false,"Boolean":false,"constructor":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"propertyIsEnumerable":false,"RangeError":false,"ReferenceError":false,"RegExp":false,"String":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false},"es2015":{"Array":false,"ArrayBuffer":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"es2017":{"Array":false,"ArrayBuffer":false,"Atomics":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"SharedArrayBuffer":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"browser":{"AbortController":false,"AbortSignal":false,"addEventListener":false,"alert":false,"AnalyserNode":false,"Animation":false,"AnimationEffectReadOnly":false,"AnimationEffectTiming":false,"AnimationEffectTimingReadOnly":false,"AnimationEvent":false,"AnimationPlaybackEvent":false,"AnimationTimeline":false,"applicationCache":false,"ApplicationCache":false,"ApplicationCacheErrorEvent":false,"atob":false,"Attr":false,"Audio":false,"AudioBuffer":false,"AudioBufferSourceNode":false,"AudioContext":false,"AudioDestinationNode":false,"AudioListener":false,"AudioNode":false,"AudioParam":false,"AudioProcessingEvent":false,"AudioScheduledSourceNode":false,"AudioWorkletGlobalScope ":false,"AudioWorkletNode":false,"AudioWorkletProcessor":false,"BarProp":false,"BaseAudioContext":false,"BatteryManager":false,"BeforeUnloadEvent":false,"BiquadFilterNode":false,"Blob":false,"BlobEvent":false,"blur":false,"BroadcastChannel":false,"btoa":false,"BudgetService":false,"ByteLengthQueuingStrategy":false,"Cache":false,"caches":false,"CacheStorage":false,"cancelAnimationFrame":false,"cancelIdleCallback":false,"CanvasCaptureMediaStreamTrack":false,"CanvasGradient":false,"CanvasPattern":false,"CanvasRenderingContext2D":false,"ChannelMergerNode":false,"ChannelSplitterNode":false,"CharacterData":false,"clearInterval":false,"clearTimeout":false,"clientInformation":false,"ClipboardEvent":false,"close":false,"closed":false,"CloseEvent":false,"Comment":false,"CompositionEvent":false,"confirm":false,"console":false,"ConstantSourceNode":false,"ConvolverNode":false,"CountQueuingStrategy":false,"createImageBitmap":false,"Credential":false,"CredentialsContainer":false,"crypto":false,"Crypto":false,"CryptoKey":false,"CSS":false,"CSSConditionRule":false,"CSSFontFaceRule":false,"CSSGroupingRule":false,"CSSImportRule":false,"CSSKeyframeRule":false,"CSSKeyframesRule":false,"CSSMediaRule":false,"CSSNamespaceRule":false,"CSSPageRule":false,"CSSRule":false,"CSSRuleList":false,"CSSStyleDeclaration":false,"CSSStyleRule":false,"CSSStyleSheet":false,"CSSSupportsRule":false,"CustomElementRegistry":false,"customElements":false,"CustomEvent":false,"DataTransfer":false,"DataTransferItem":false,"DataTransferItemList":false,"defaultstatus":false,"defaultStatus":false,"DelayNode":false,"DeviceMotionEvent":false,"DeviceOrientationEvent":false,"devicePixelRatio":false,"dispatchEvent":false,"document":false,"Document":false,"DocumentFragment":false,"DocumentType":false,"DOMError":false,"DOMException":false,"DOMImplementation":false,"DOMMatrix":false,"DOMMatrixReadOnly":false,"DOMParser":false,"DOMPoint":false,"DOMPointReadOnly":false,"DOMQuad":false,"DOMRect":false,"DOMRectReadOnly":false,"DOMStringList":false,"DOMStringMap":false,"DOMTokenList":false,"DragEvent":false,"DynamicsCompressorNode":false,"Element":false,"ErrorEvent":false,"event":false,"Event":false,"EventSource":false,"EventTarget":false,"external":false,"fetch":false,"File":false,"FileList":false,"FileReader":false,"find":false,"focus":false,"FocusEvent":false,"FontFace":false,"FontFaceSetLoadEvent":false,"FormData":false,"frameElement":false,"frames":false,"GainNode":false,"Gamepad":false,"GamepadButton":false,"GamepadEvent":false,"getComputedStyle":false,"getSelection":false,"HashChangeEvent":false,"Headers":false,"history":false,"History":false,"HTMLAllCollection":false,"HTMLAnchorElement":false,"HTMLAreaElement":false,"HTMLAudioElement":false,"HTMLBaseElement":false,"HTMLBodyElement":false,"HTMLBRElement":false,"HTMLButtonElement":false,"HTMLCanvasElement":false,"HTMLCollection":false,"HTMLContentElement":false,"HTMLDataElement":false,"HTMLDataListElement":false,"HTMLDetailsElement":false,"HTMLDialogElement":false,"HTMLDirectoryElement":false,"HTMLDivElement":false,"HTMLDListElement":false,"HTMLDocument":false,"HTMLElement":false,"HTMLEmbedElement":false,"HTMLFieldSetElement":false,"HTMLFontElement":false,"HTMLFormControlsCollection":false,"HTMLFormElement":false,"HTMLFrameElement":false,"HTMLFrameSetElement":false,"HTMLHeadElement":false,"HTMLHeadingElement":false,"HTMLHRElement":false,"HTMLHtmlElement":false,"HTMLIFrameElement":false,"HTMLImageElement":false,"HTMLInputElement":false,"HTMLLabelElement":false,"HTMLLegendElement":false,"HTMLLIElement":false,"HTMLLinkElement":false,"HTMLMapElement":false,"HTMLMarqueeElement":false,"HTMLMediaElement":false,"HTMLMenuElement":false,"HTMLMetaElement":false,"HTMLMeterElement":false,"HTMLModElement":false,"HTMLObjectElement":false,"HTMLOListElement":false,"HTMLOptGroupElement":false,"HTMLOptionElement":false,"HTMLOptionsCollection":false,"HTMLOutputElement":false,"HTMLParagraphElement":false,"HTMLParamElement":false,"HTMLPictureElement":false,"HTMLPreElement":false,"HTMLProgressElement":false,"HTMLQuoteElement":false,"HTMLScriptElement":false,"HTMLSelectElement":false,"HTMLShadowElement":false,"HTMLSlotElement":false,"HTMLSourceElement":false,"HTMLSpanElement":false,"HTMLStyleElement":false,"HTMLTableCaptionElement":false,"HTMLTableCellElement":false,"HTMLTableColElement":false,"HTMLTableElement":false,"HTMLTableRowElement":false,"HTMLTableSectionElement":false,"HTMLTemplateElement":false,"HTMLTextAreaElement":false,"HTMLTimeElement":false,"HTMLTitleElement":false,"HTMLTrackElement":false,"HTMLUListElement":false,"HTMLUnknownElement":false,"HTMLVideoElement":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"IdleDeadline":false,"IIRFilterNode":false,"Image":false,"ImageBitmap":false,"ImageBitmapRenderingContext":false,"ImageCapture":false,"ImageData":false,"indexedDB":false,"innerHeight":false,"innerWidth":false,"InputEvent":false,"IntersectionObserver":false,"IntersectionObserverEntry":false,"Intl":false,"isSecureContext":false,"KeyboardEvent":false,"KeyframeEffect":false,"KeyframeEffectReadOnly":false,"length":false,"localStorage":false,"location":true,"Location":false,"locationbar":false,"matchMedia":false,"MediaDeviceInfo":false,"MediaDevices":false,"MediaElementAudioSourceNode":false,"MediaEncryptedEvent":false,"MediaError":false,"MediaKeyMessageEvent":false,"MediaKeySession":false,"MediaKeyStatusMap":false,"MediaKeySystemAccess":false,"MediaList":false,"MediaQueryList":false,"MediaQueryListEvent":false,"MediaRecorder":false,"MediaSettingsRange":false,"MediaSource":false,"MediaStream":false,"MediaStreamAudioDestinationNode":false,"MediaStreamAudioSourceNode":false,"MediaStreamEvent":false,"MediaStreamTrack":false,"MediaStreamTrackEvent":false,"menubar":false,"MessageChannel":false,"MessageEvent":false,"MessagePort":false,"MIDIAccess":false,"MIDIConnectionEvent":false,"MIDIInput":false,"MIDIInputMap":false,"MIDIMessageEvent":false,"MIDIOutput":false,"MIDIOutputMap":false,"MIDIPort":false,"MimeType":false,"MimeTypeArray":false,"MouseEvent":false,"moveBy":false,"moveTo":false,"MutationEvent":false,"MutationObserver":false,"MutationRecord":false,"name":false,"NamedNodeMap":false,"NavigationPreloadManager":false,"navigator":false,"Navigator":false,"NetworkInformation":false,"Node":false,"NodeFilter":false,"NodeIterator":false,"NodeList":false,"Notification":false,"OfflineAudioCompletionEvent":false,"OfflineAudioContext":false,"offscreenBuffering":false,"OffscreenCanvas":true,"onabort":true,"onafterprint":true,"onanimationend":true,"onanimationiteration":true,"onanimationstart":true,"onappinstalled":true,"onauxclick":true,"onbeforeinstallprompt":true,"onbeforeprint":true,"onbeforeunload":true,"onblur":true,"oncancel":true,"oncanplay":true,"oncanplaythrough":true,"onchange":true,"onclick":true,"onclose":true,"oncontextmenu":true,"oncuechange":true,"ondblclick":true,"ondevicemotion":true,"ondeviceorientation":true,"ondeviceorientationabsolute":true,"ondrag":true,"ondragend":true,"ondragenter":true,"ondragleave":true,"ondragover":true,"ondragstart":true,"ondrop":true,"ondurationchange":true,"onemptied":true,"onended":true,"onerror":true,"onfocus":true,"ongotpointercapture":true,"onhashchange":true,"oninput":true,"oninvalid":true,"onkeydown":true,"onkeypress":true,"onkeyup":true,"onlanguagechange":true,"onload":true,"onloadeddata":true,"onloadedmetadata":true,"onloadstart":true,"onlostpointercapture":true,"onmessage":true,"onmessageerror":true,"onmousedown":true,"onmouseenter":true,"onmouseleave":true,"onmousemove":true,"onmouseout":true,"onmouseover":true,"onmouseup":true,"onmousewheel":true,"onoffline":true,"ononline":true,"onpagehide":true,"onpageshow":true,"onpause":true,"onplay":true,"onplaying":true,"onpointercancel":true,"onpointerdown":true,"onpointerenter":true,"onpointerleave":true,"onpointermove":true,"onpointerout":true,"onpointerover":true,"onpointerup":true,"onpopstate":true,"onprogress":true,"onratechange":true,"onrejectionhandled":true,"onreset":true,"onresize":true,"onscroll":true,"onsearch":true,"onseeked":true,"onseeking":true,"onselect":true,"onstalled":true,"onstorage":true,"onsubmit":true,"onsuspend":true,"ontimeupdate":true,"ontoggle":true,"ontransitionend":true,"onunhandledrejection":true,"onunload":true,"onvolumechange":true,"onwaiting":true,"onwheel":true,"open":false,"openDatabase":false,"opener":false,"Option":false,"origin":false,"OscillatorNode":false,"outerHeight":false,"outerWidth":false,"PageTransitionEvent":false,"pageXOffset":false,"pageYOffset":false,"PannerNode":false,"parent":false,"Path2D":false,"PaymentAddress":false,"PaymentRequest":false,"PaymentRequestUpdateEvent":false,"PaymentResponse":false,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceLongTaskTiming":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceNavigationTiming":false,"PerformanceObserver":false,"PerformanceObserverEntryList":false,"PerformancePaintTiming":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"PeriodicWave":false,"Permissions":false,"PermissionStatus":false,"personalbar":false,"PhotoCapabilities":false,"Plugin":false,"PluginArray":false,"PointerEvent":false,"PopStateEvent":false,"postMessage":false,"Presentation":false,"PresentationAvailability":false,"PresentationConnection":false,"PresentationConnectionAvailableEvent":false,"PresentationConnectionCloseEvent":false,"PresentationConnectionList":false,"PresentationReceiver":false,"PresentationRequest":false,"print":false,"ProcessingInstruction":false,"ProgressEvent":false,"PromiseRejectionEvent":false,"prompt":false,"PushManager":false,"PushSubscription":false,"PushSubscriptionOptions":false,"queueMicrotask":false,"RadioNodeList":false,"Range":false,"ReadableStream":false,"registerProcessor":false,"RemotePlayback":false,"removeEventListener":false,"Request":false,"requestAnimationFrame":false,"requestIdleCallback":false,"resizeBy":false,"ResizeObserver":false,"ResizeObserverEntry":false,"resizeTo":false,"Response":false,"RTCCertificate":false,"RTCDataChannel":false,"RTCDataChannelEvent":false,"RTCDtlsTransport":false,"RTCIceCandidate":false,"RTCIceGatherer":false,"RTCIceTransport":false,"RTCPeerConnection":false,"RTCPeerConnectionIceEvent":false,"RTCRtpContributingSource":false,"RTCRtpReceiver":false,"RTCRtpSender":false,"RTCSctpTransport":false,"RTCSessionDescription":false,"RTCStatsReport":false,"RTCTrackEvent":false,"screen":false,"Screen":false,"screenLeft":false,"ScreenOrientation":false,"screenTop":false,"screenX":false,"screenY":false,"ScriptProcessorNode":false,"scroll":false,"scrollbars":false,"scrollBy":false,"scrollTo":false,"scrollX":false,"scrollY":false,"SecurityPolicyViolationEvent":false,"Selection":false,"self":false,"ServiceWorker":false,"ServiceWorkerContainer":false,"ServiceWorkerRegistration":false,"sessionStorage":false,"setInterval":false,"setTimeout":false,"ShadowRoot":false,"SharedWorker":false,"SourceBuffer":false,"SourceBufferList":false,"speechSynthesis":false,"SpeechSynthesisEvent":false,"SpeechSynthesisUtterance":false,"StaticRange":false,"status":false,"statusbar":false,"StereoPannerNode":false,"stop":false,"Storage":false,"StorageEvent":false,"StorageManager":false,"styleMedia":false,"StyleSheet":false,"StyleSheetList":false,"SubtleCrypto":false,"SVGAElement":false,"SVGAngle":false,"SVGAnimatedAngle":false,"SVGAnimatedBoolean":false,"SVGAnimatedEnumeration":false,"SVGAnimatedInteger":false,"SVGAnimatedLength":false,"SVGAnimatedLengthList":false,"SVGAnimatedNumber":false,"SVGAnimatedNumberList":false,"SVGAnimatedPreserveAspectRatio":false,"SVGAnimatedRect":false,"SVGAnimatedString":false,"SVGAnimatedTransformList":false,"SVGAnimateElement":false,"SVGAnimateMotionElement":false,"SVGAnimateTransformElement":false,"SVGAnimationElement":false,"SVGCircleElement":false,"SVGClipPathElement":false,"SVGComponentTransferFunctionElement":false,"SVGDefsElement":false,"SVGDescElement":false,"SVGDiscardElement":false,"SVGElement":false,"SVGEllipseElement":false,"SVGFEBlendElement":false,"SVGFEColorMatrixElement":false,"SVGFEComponentTransferElement":false,"SVGFECompositeElement":false,"SVGFEConvolveMatrixElement":false,"SVGFEDiffuseLightingElement":false,"SVGFEDisplacementMapElement":false,"SVGFEDistantLightElement":false,"SVGFEDropShadowElement":false,"SVGFEFloodElement":false,"SVGFEFuncAElement":false,"SVGFEFuncBElement":false,"SVGFEFuncGElement":false,"SVGFEFuncRElement":false,"SVGFEGaussianBlurElement":false,"SVGFEImageElement":false,"SVGFEMergeElement":false,"SVGFEMergeNodeElement":false,"SVGFEMorphologyElement":false,"SVGFEOffsetElement":false,"SVGFEPointLightElement":false,"SVGFESpecularLightingElement":false,"SVGFESpotLightElement":false,"SVGFETileElement":false,"SVGFETurbulenceElement":false,"SVGFilterElement":false,"SVGForeignObjectElement":false,"SVGGElement":false,"SVGGeometryElement":false,"SVGGradientElement":false,"SVGGraphicsElement":false,"SVGImageElement":false,"SVGLength":false,"SVGLengthList":false,"SVGLinearGradientElement":false,"SVGLineElement":false,"SVGMarkerElement":false,"SVGMaskElement":false,"SVGMatrix":false,"SVGMetadataElement":false,"SVGMPathElement":false,"SVGNumber":false,"SVGNumberList":false,"SVGPathElement":false,"SVGPatternElement":false,"SVGPoint":false,"SVGPointList":false,"SVGPolygonElement":false,"SVGPolylineElement":false,"SVGPreserveAspectRatio":false,"SVGRadialGradientElement":false,"SVGRect":false,"SVGRectElement":false,"SVGScriptElement":false,"SVGSetElement":false,"SVGStopElement":false,"SVGStringList":false,"SVGStyleElement":false,"SVGSVGElement":false,"SVGSwitchElement":false,"SVGSymbolElement":false,"SVGTextContentElement":false,"SVGTextElement":false,"SVGTextPathElement":false,"SVGTextPositioningElement":false,"SVGTitleElement":false,"SVGTransform":false,"SVGTransformList":false,"SVGTSpanElement":false,"SVGUnitTypes":false,"SVGUseElement":false,"SVGViewElement":false,"TaskAttributionTiming":false,"Text":false,"TextDecoder":false,"TextEncoder":false,"TextEvent":false,"TextMetrics":false,"TextTrack":false,"TextTrackCue":false,"TextTrackCueList":false,"TextTrackList":false,"TimeRanges":false,"toolbar":false,"top":false,"Touch":false,"TouchEvent":false,"TouchList":false,"TrackEvent":false,"TransitionEvent":false,"TreeWalker":false,"UIEvent":false,"URL":false,"URLSearchParams":false,"ValidityState":false,"visualViewport":false,"VisualViewport":false,"VTTCue":false,"WaveShaperNode":false,"WebAssembly":false,"WebGL2RenderingContext":false,"WebGLActiveInfo":false,"WebGLBuffer":false,"WebGLContextEvent":false,"WebGLFramebuffer":false,"WebGLProgram":false,"WebGLQuery":false,"WebGLRenderbuffer":false,"WebGLRenderingContext":false,"WebGLSampler":false,"WebGLShader":false,"WebGLShaderPrecisionFormat":false,"WebGLSync":false,"WebGLTexture":false,"WebGLTransformFeedback":false,"WebGLUniformLocation":false,"WebGLVertexArrayObject":false,"WebSocket":false,"WheelEvent":false,"window":false,"Window":false,"Worker":false,"WritableStream":false,"XMLDocument":false,"XMLHttpRequest":false,"XMLHttpRequestEventTarget":false,"XMLHttpRequestUpload":false,"XMLSerializer":false,"XPathEvaluator":false,"XPathExpression":false,"XPathResult":false,"XSLTProcessor":false},"worker":{"addEventListener":false,"applicationCache":false,"atob":false,"Blob":false,"BroadcastChannel":false,"btoa":false,"Cache":false,"caches":false,"clearInterval":false,"clearTimeout":false,"close":true,"console":false,"fetch":false,"FileReaderSync":false,"FormData":false,"Headers":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"ImageData":false,"importScripts":true,"indexedDB":false,"location":false,"MessageChannel":false,"MessagePort":false,"name":false,"navigator":false,"Notification":false,"onclose":true,"onconnect":true,"onerror":true,"onlanguagechange":true,"onmessage":true,"onoffline":true,"ononline":true,"onrejectionhandled":true,"onunhandledrejection":true,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"postMessage":true,"Promise":false,"queueMicrotask":false,"removeEventListener":false,"Request":false,"Response":false,"self":true,"ServiceWorkerRegistration":false,"setInterval":false,"setTimeout":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false,"WebSocket":false,"Worker":false,"WorkerGlobalScope":false,"XMLHttpRequest":false},"node":{"__dirname":false,"__filename":false,"Buffer":false,"clearImmediate":false,"clearInterval":false,"clearTimeout":false,"console":false,"exports":true,"global":false,"Intl":false,"module":false,"process":false,"queueMicrotask":false,"require":false,"setImmediate":false,"setInterval":false,"setTimeout":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false},"commonjs":{"exports":true,"global":false,"module":false,"require":false},"amd":{"define":false,"require":false},"mocha":{"after":false,"afterEach":false,"before":false,"beforeEach":false,"context":false,"describe":false,"it":false,"mocha":false,"run":false,"setup":false,"specify":false,"suite":false,"suiteSetup":false,"suiteTeardown":false,"teardown":false,"test":false,"xcontext":false,"xdescribe":false,"xit":false,"xspecify":false},"jasmine":{"afterAll":false,"afterEach":false,"beforeAll":false,"beforeEach":false,"describe":false,"expect":false,"fail":false,"fdescribe":false,"fit":false,"it":false,"jasmine":false,"pending":false,"runs":false,"spyOn":false,"spyOnProperty":false,"waits":false,"waitsFor":false,"xdescribe":false,"xit":false},"jest":{"afterAll":false,"afterEach":false,"beforeAll":false,"beforeEach":false,"describe":false,"expect":false,"fdescribe":false,"fit":false,"it":false,"jest":false,"pit":false,"require":false,"test":false,"xdescribe":false,"xit":false,"xtest":false},"qunit":{"asyncTest":false,"deepEqual":false,"equal":false,"expect":false,"module":false,"notDeepEqual":false,"notEqual":false,"notOk":false,"notPropEqual":false,"notStrictEqual":false,"ok":false,"propEqual":false,"QUnit":false,"raises":false,"start":false,"stop":false,"strictEqual":false,"test":false,"throws":false},"phantomjs":{"console":true,"exports":true,"phantom":true,"require":true,"WebPage":true},"couch":{"emit":false,"exports":false,"getRow":false,"log":false,"module":false,"provides":false,"require":false,"respond":false,"send":false,"start":false,"sum":false},"rhino":{"defineClass":false,"deserialize":false,"gc":false,"help":false,"importClass":false,"importPackage":false,"java":false,"load":false,"loadClass":false,"Packages":false,"print":false,"quit":false,"readFile":false,"readUrl":false,"runCommand":false,"seal":false,"serialize":false,"spawn":false,"sync":false,"toint32":false,"version":false},"nashorn":{"__DIR__":false,"__FILE__":false,"__LINE__":false,"com":false,"edu":false,"exit":false,"java":false,"Java":false,"javafx":false,"JavaImporter":false,"javax":false,"JSAdapter":false,"load":false,"loadWithNewGlobal":false,"org":false,"Packages":false,"print":false,"quit":false},"wsh":{"ActiveXObject":true,"Enumerator":true,"GetObject":true,"ScriptEngine":true,"ScriptEngineBuildVersion":true,"ScriptEngineMajorVersion":true,"ScriptEngineMinorVersion":true,"VBArray":true,"WScript":true,"WSH":true,"XDomainRequest":true},"jquery":{"$":false,"jQuery":false},"yui":{"YAHOO":false,"YAHOO_config":false,"YUI":false,"YUI_config":false},"shelljs":{"cat":false,"cd":false,"chmod":false,"config":false,"cp":false,"dirs":false,"echo":false,"env":false,"error":false,"exec":false,"exit":false,"find":false,"grep":false,"ln":false,"ls":false,"mkdir":false,"mv":false,"popd":false,"pushd":false,"pwd":false,"rm":false,"sed":false,"set":false,"target":false,"tempdir":false,"test":false,"touch":false,"which":false},"prototypejs":{"$":false,"$$":false,"$A":false,"$break":false,"$continue":false,"$F":false,"$H":false,"$R":false,"$w":false,"Abstract":false,"Ajax":false,"Autocompleter":false,"Builder":false,"Class":false,"Control":false,"Draggable":false,"Draggables":false,"Droppables":false,"Effect":false,"Element":false,"Enumerable":false,"Event":false,"Field":false,"Form":false,"Hash":false,"Insertion":false,"ObjectRange":false,"PeriodicalExecuter":false,"Position":false,"Prototype":false,"Scriptaculous":false,"Selector":false,"Sortable":false,"SortableObserver":false,"Sound":false,"Template":false,"Toggle":false,"Try":false},"meteor":{"_":false,"$":false,"Accounts":false,"AccountsClient":false,"AccountsCommon":false,"AccountsServer":false,"App":false,"Assets":false,"Blaze":false,"check":false,"Cordova":false,"DDP":false,"DDPRateLimiter":false,"DDPServer":false,"Deps":false,"EJSON":false,"Email":false,"HTTP":false,"Log":false,"Match":false,"Meteor":false,"Mongo":false,"MongoInternals":false,"Npm":false,"Package":false,"Plugin":false,"process":false,"Random":false,"ReactiveDict":false,"ReactiveVar":false,"Router":false,"ServiceConfiguration":false,"Session":false,"share":false,"Spacebars":false,"Template":false,"Tinytest":false,"Tracker":false,"UI":false,"Utils":false,"WebApp":false,"WebAppInternals":false},"mongo":{"_isWindows":false,"_rand":false,"BulkWriteResult":false,"cat":false,"cd":false,"connect":false,"db":false,"getHostName":false,"getMemInfo":false,"hostname":false,"ISODate":false,"listFiles":false,"load":false,"ls":false,"md5sumFile":false,"mkdir":false,"Mongo":false,"NumberInt":false,"NumberLong":false,"ObjectId":false,"PlanCache":false,"print":false,"printjson":false,"pwd":false,"quit":false,"removeFile":false,"rs":false,"sh":false,"UUID":false,"version":false,"WriteResult":false},"applescript":{"$":false,"Application":false,"Automation":false,"console":false,"delay":false,"Library":false,"ObjC":false,"ObjectSpecifier":false,"Path":false,"Progress":false,"Ref":false},"serviceworker":{"addEventListener":false,"applicationCache":false,"atob":false,"Blob":false,"BroadcastChannel":false,"btoa":false,"Cache":false,"caches":false,"CacheStorage":false,"clearInterval":false,"clearTimeout":false,"Client":false,"clients":false,"Clients":false,"close":true,"console":false,"ExtendableEvent":false,"ExtendableMessageEvent":false,"fetch":false,"FetchEvent":false,"FileReaderSync":false,"FormData":false,"Headers":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"ImageData":false,"importScripts":false,"indexedDB":false,"location":false,"MessageChannel":false,"MessagePort":false,"name":false,"navigator":false,"Notification":false,"onclose":true,"onconnect":true,"onerror":true,"onfetch":true,"oninstall":true,"onlanguagechange":true,"onmessage":true,"onmessageerror":true,"onnotificationclick":true,"onnotificationclose":true,"onoffline":true,"ononline":true,"onpush":true,"onpushsubscriptionchange":true,"onrejectionhandled":true,"onsync":true,"onunhandledrejection":true,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"postMessage":true,"Promise":false,"queueMicrotask":false,"registration":false,"removeEventListener":false,"Request":false,"Response":false,"self":false,"ServiceWorker":false,"ServiceWorkerContainer":false,"ServiceWorkerGlobalScope":false,"ServiceWorkerMessageEvent":false,"ServiceWorkerRegistration":false,"setInterval":false,"setTimeout":false,"skipWaiting":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false,"WebSocket":false,"WindowClient":false,"Worker":false,"WorkerGlobalScope":false,"XMLHttpRequest":false},"atomtest":{"advanceClock":false,"fakeClearInterval":false,"fakeClearTimeout":false,"fakeSetInterval":false,"fakeSetTimeout":false,"resetTimeouts":false,"waitsForPromise":false},"embertest":{"andThen":false,"click":false,"currentPath":false,"currentRouteName":false,"currentURL":false,"fillIn":false,"find":false,"findAll":false,"findWithAssert":false,"keyEvent":false,"pauseTest":false,"resumeTest":false,"triggerEvent":false,"visit":false,"wait":false},"protractor":{"$":false,"$$":false,"browser":false,"by":false,"By":false,"DartObject":false,"element":false,"protractor":false},"shared-node-browser":{"clearInterval":false,"clearTimeout":false,"console":false,"setInterval":false,"setTimeout":false,"URL":false,"URLSearchParams":false},"webextensions":{"browser":false,"chrome":false,"opr":false},"greasemonkey":{"cloneInto":false,"createObjectIn":false,"exportFunction":false,"GM":false,"GM_addStyle":false,"GM_deleteValue":false,"GM_getResourceText":false,"GM_getResourceURL":false,"GM_getValue":false,"GM_info":false,"GM_listValues":false,"GM_log":false,"GM_openInTab":false,"GM_registerMenuCommand":false,"GM_setClipboard":false,"GM_setValue":false,"GM_xmlhttpRequest":false,"unsafeWindow":false},"devtools":{"$":false,"$_":false,"$$":false,"$0":false,"$1":false,"$2":false,"$3":false,"$4":false,"$x":false,"chrome":false,"clear":false,"copy":false,"debug":false,"dir":false,"dirxml":false,"getEventListeners":false,"inspect":false,"keys":false,"monitor":false,"monitorEvents":false,"profile":false,"profileEnd":false,"queryObjects":false,"table":false,"undebug":false,"unmonitor":false,"unmonitorEvents":false,"values":false}}'); + +/***/ }), + +/***/ 94651: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"assert":true,"node:assert":[">= 14.18 && < 15",">= 16"],"assert/strict":">= 15","node:assert/strict":">= 16","async_hooks":">= 8","node:async_hooks":[">= 14.18 && < 15",">= 16"],"buffer_ieee754":">= 0.5 && < 0.9.7","buffer":true,"node:buffer":[">= 14.18 && < 15",">= 16"],"child_process":true,"node:child_process":[">= 14.18 && < 15",">= 16"],"cluster":">= 0.5","node:cluster":[">= 14.18 && < 15",">= 16"],"console":true,"node:console":[">= 14.18 && < 15",">= 16"],"constants":true,"node:constants":[">= 14.18 && < 15",">= 16"],"crypto":true,"node:crypto":[">= 14.18 && < 15",">= 16"],"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"node:dgram":[">= 14.18 && < 15",">= 16"],"diagnostics_channel":[">= 14.17 && < 15",">= 15.1"],"node:diagnostics_channel":[">= 14.18 && < 15",">= 16"],"dns":true,"node:dns":[">= 14.18 && < 15",">= 16"],"dns/promises":">= 15","node:dns/promises":">= 16","domain":">= 0.7.12","node:domain":[">= 14.18 && < 15",">= 16"],"events":true,"node:events":[">= 14.18 && < 15",">= 16"],"freelist":"< 6","fs":true,"node:fs":[">= 14.18 && < 15",">= 16"],"fs/promises":[">= 10 && < 10.1",">= 14"],"node:fs/promises":[">= 14.18 && < 15",">= 16"],"_http_agent":">= 0.11.1","node:_http_agent":[">= 14.18 && < 15",">= 16"],"_http_client":">= 0.11.1","node:_http_client":[">= 14.18 && < 15",">= 16"],"_http_common":">= 0.11.1","node:_http_common":[">= 14.18 && < 15",">= 16"],"_http_incoming":">= 0.11.1","node:_http_incoming":[">= 14.18 && < 15",">= 16"],"_http_outgoing":">= 0.11.1","node:_http_outgoing":[">= 14.18 && < 15",">= 16"],"_http_server":">= 0.11.1","node:_http_server":[">= 14.18 && < 15",">= 16"],"http":true,"node:http":[">= 14.18 && < 15",">= 16"],"http2":">= 8.8","node:http2":[">= 14.18 && < 15",">= 16"],"https":true,"node:https":[">= 14.18 && < 15",">= 16"],"inspector":">= 8","node:inspector":[">= 14.18 && < 15",">= 16"],"inspector/promises":[">= 19"],"node:inspector/promises":[">= 19"],"_linklist":"< 8","module":true,"node:module":[">= 14.18 && < 15",">= 16"],"net":true,"node:net":[">= 14.18 && < 15",">= 16"],"node-inspect/lib/_inspect":">= 7.6 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6 && < 12","os":true,"node:os":[">= 14.18 && < 15",">= 16"],"path":true,"node:path":[">= 14.18 && < 15",">= 16"],"path/posix":">= 15.3","node:path/posix":">= 16","path/win32":">= 15.3","node:path/win32":">= 16","perf_hooks":">= 8.5","node:perf_hooks":[">= 14.18 && < 15",">= 16"],"process":">= 1","node:process":[">= 14.18 && < 15",">= 16"],"punycode":">= 0.5","node:punycode":[">= 14.18 && < 15",">= 16"],"querystring":true,"node:querystring":[">= 14.18 && < 15",">= 16"],"readline":true,"node:readline":[">= 14.18 && < 15",">= 16"],"readline/promises":">= 17","node:readline/promises":">= 17","repl":true,"node:repl":[">= 14.18 && < 15",">= 16"],"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","node:_stream_duplex":[">= 14.18 && < 15",">= 16"],"_stream_transform":">= 0.9.4","node:_stream_transform":[">= 14.18 && < 15",">= 16"],"_stream_wrap":">= 1.4.1","node:_stream_wrap":[">= 14.18 && < 15",">= 16"],"_stream_passthrough":">= 0.9.4","node:_stream_passthrough":[">= 14.18 && < 15",">= 16"],"_stream_readable":">= 0.9.4","node:_stream_readable":[">= 14.18 && < 15",">= 16"],"_stream_writable":">= 0.9.4","node:_stream_writable":[">= 14.18 && < 15",">= 16"],"stream":true,"node:stream":[">= 14.18 && < 15",">= 16"],"stream/consumers":">= 16.7","node:stream/consumers":">= 16.7","stream/promises":">= 15","node:stream/promises":">= 16","stream/web":">= 16.5","node:stream/web":">= 16.5","string_decoder":true,"node:string_decoder":[">= 14.18 && < 15",">= 16"],"sys":[">= 0.4 && < 0.7",">= 0.8"],"node:sys":[">= 14.18 && < 15",">= 16"],"node:test":[">= 16.17 && < 17",">= 18"],"timers":true,"node:timers":[">= 14.18 && < 15",">= 16"],"timers/promises":">= 15","node:timers/promises":">= 16","_tls_common":">= 0.11.13","node:_tls_common":[">= 14.18 && < 15",">= 16"],"_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","node:_tls_wrap":[">= 14.18 && < 15",">= 16"],"tls":true,"node:tls":[">= 14.18 && < 15",">= 16"],"trace_events":">= 10","node:trace_events":[">= 14.18 && < 15",">= 16"],"tty":true,"node:tty":[">= 14.18 && < 15",">= 16"],"url":true,"node:url":[">= 14.18 && < 15",">= 16"],"util":true,"node:util":[">= 14.18 && < 15",">= 16"],"util/types":">= 15.3","node:util/types":">= 16","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/consarray":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/csvparser":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/logreader":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/profile_view":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/splaytree":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8":">= 1","node:v8":[">= 14.18 && < 15",">= 16"],"vm":true,"node:vm":[">= 14.18 && < 15",">= 16"],"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","node:worker_threads":[">= 14.18 && < 15",">= 16"],"zlib":">= 0.5","node:zlib":[">= 14.18 && < 15",">= 16"]}'); + +/***/ }), + +/***/ 12139: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"name":"pino","version":"7.9.2","description":"super fast, all natural json logger","main":"pino.js","type":"commonjs","types":"pino.d.ts","browser":"./browser.js","files":["pino.js","file.js","pino.d.ts","bin.js","browser.js","pretty.js","usage.txt","test","docs","example.js","lib"],"scripts":{"docs":"docsify serve","browser-test":"airtap --local 8080 test/browser*test.js","lint":"eslint .","test":"npm run lint && tap test/*test.js test/*/*test.js && jest test/jest && npm run test-types","test-ci":"npm run lint && tap --no-check-coverage test/*test.js test/*/*test.js --coverage-report=lcovonly && npm run test-types","test-ci-pnpm":"pnpm run lint && tap --no-coverage --no-check-coverage test/*test.js test/*/*test.js && pnpm run test-types","test-ci-yarn-pnp":"yarn run lint && tap --no-check-coverage test/*test.js test/*/*test.js --coverage-report=lcovonly","test-types":"tsc && tsd && ts-node test/types/pino.ts","cov-ui":"tap --coverage-report=html test/*test.js test/*/*test.js","bench":"node benchmarks/utils/runbench all","bench-basic":"node benchmarks/utils/runbench basic","bench-object":"node benchmarks/utils/runbench object","bench-deep-object":"node benchmarks/utils/runbench deep-object","bench-multi-arg":"node benchmarks/utils/runbench multi-arg","bench-longs-tring":"node benchmarks/utils/runbench long-string","bench-child":"node benchmarks/utils/runbench child","bench-child-child":"node benchmarks/utils/runbench child-child","bench-child-creation":"node benchmarks/utils/runbench child-creation","bench-formatters":"node benchmarks/utils/runbench formatters","update-bench-doc":"node benchmarks/utils/generate-benchmark-doc > docs/benchmarks.md"},"bin":{"pino":"./bin.js"},"precommit":"test","repository":{"type":"git","url":"git+https://github.com/pinojs/pino.git"},"keywords":["fast","logger","stream","json"],"author":"Matteo Collina <hello@matteocollina.com>","contributors":["David Mark Clements <huperekchuno@googlemail.com>","James Sumners <james.sumners@gmail.com>","Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)"],"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino/issues"},"homepage":"http://getpino.io","devDependencies":{"@types/node":"^17.0.0","airtap":"4.0.4","benchmark":"^2.1.4","bole":"^4.0.0","bunyan":"^1.8.14","docsify-cli":"^4.4.1","eslint":"^7.17.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.1.0","execa":"^5.0.0","fastbench":"^1.0.1","flush-write-stream":"^2.0.0","import-fresh":"^3.2.1","jest":"^27.3.1","log":"^6.0.0","loglevel":"^1.6.7","pino-pretty":"^v7.5.4","pre-commit":"^1.2.2","proxyquire":"^2.1.3","pump":"^3.0.0","semver":"^7.0.0","split2":"^4.0.0","steed":"^1.1.3","strip-ansi":"^6.0.0","tap":"^16.0.0","tape":"^5.0.0","through2":"^4.0.0","ts-node":"^10.3.0","tsd":"^0.19.0","typescript":"^4.4.4","winston":"^3.3.3"},"dependencies":{"fast-redact":"^3.0.0","process-warning":"^1.0.0","on-exit-leak-free":"^0.2.0","pino-abstract-transport":"v0.5.0","pino-std-serializers":"^4.0.0","quick-format-unescaped":"^4.0.3","real-require":"^0.1.0","safe-stable-stringify":"^2.1.0","sonic-boom":"^2.2.1","thread-stream":"^0.15.0"},"tsd":{"directory":"test/types"}}'); + +/***/ }), + +/***/ 98398: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('{"assert":true,"assert/strict":">= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"fs/promises":[">= 10 && < 10.1",">= 14"],"_http_agent":">= 0.11.1","_http_client":">= 0.11.1","_http_common":">= 0.11.1","_http_incoming":">= 0.11.1","_http_outgoing":">= 0.11.1","_http_server":">= 0.11.1","http":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12","os":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","_stream_transform":">= 0.9.4","_stream_wrap":">= 1.4.1","_stream_passthrough":">= 0.9.4","_stream_readable":">= 0.9.4","_stream_writable":">= 0.9.4","stream":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8":">= 1","vm":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'); + +/***/ }), + +/***/ 66195: +/***/ ((module) => { + +"use strict"; +module.exports = JSON.parse('["cent","copy","divide","gt","lt","not","para","times"]'); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __nccwpck_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __nccwpck_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __nccwpck_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __nccwpck_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/node module decorator */ +/******/ (() => { +/******/ __nccwpck_require__.nmd = (module) => { +/******/ module.paths = []; +/******/ if (!module.children) module.children = []; +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: ../../node_modules/@actions/core/lib/core.js +var core = __nccwpck_require__(37117); +// EXTERNAL MODULE: external "fs" +var external_fs_ = __nccwpck_require__(57147); +// EXTERNAL MODULE: external "path" +var external_path_ = __nccwpck_require__(71017); +// EXTERNAL MODULE: ../../node_modules/klaw-sync/klaw-sync.js +var klaw_sync = __nccwpck_require__(74880); +var klaw_sync_default = /*#__PURE__*/__nccwpck_require__.n(klaw_sync); +// EXTERNAL MODULE: ../../node_modules/gray-matter/index.js +var gray_matter = __nccwpck_require__(94708); +var gray_matter_default = /*#__PURE__*/__nccwpck_require__.n(gray_matter); +// EXTERNAL MODULE: ../../node_modules/remark/index.js +var remark = __nccwpck_require__(63280); +var remark_default = /*#__PURE__*/__nccwpck_require__.n(remark); +// EXTERNAL MODULE: ../../node_modules/remark-mdx/index.js +var remark_mdx = __nccwpck_require__(43650); +var remark_mdx_default = /*#__PURE__*/__nccwpck_require__.n(remark_mdx); +// EXTERNAL MODULE: ../../node_modules/pino/pino.js +var pino = __nccwpck_require__(55124); +var pino_default = /*#__PURE__*/__nccwpck_require__.n(pino); +// EXTERNAL MODULE: ../../node_modules/pino-pretty/index.js +var pino_pretty = __nccwpck_require__(87952); +var pino_pretty_default = /*#__PURE__*/__nccwpck_require__.n(pino_pretty); +;// CONCATENATED MODULE: ../../shared/logger.ts + + +// don't log in test +const isTest = process.env.NODE_ENV === 'test'; +// don't color in Vercel +const isVercel = process.env.VERCEL === '1' || !!process.env.VERCEL_ENV; +// allow LOG_LEVEL to take top priority +const level = process.env.LOG_LEVEL || (isTest ? 'fatal' : 'info'); +const stream = pino_pretty_default()({ + colorize: !isVercel, + levelFirst: true, + ignore: 'hostname,pid,time', +}); +const options = { + level, +}; +const logger = pino_default()(options, stream); + +// EXTERNAL MODULE: external "assert" +var external_assert_ = __nccwpck_require__(39491); +// EXTERNAL MODULE: ../../node_modules/unist-util-is/index.js +var unist_util_is = __nccwpck_require__(84984); +var unist_util_is_default = /*#__PURE__*/__nccwpck_require__.n(unist_util_is); +// EXTERNAL MODULE: ../../node_modules/unist-util-visit/index.js +var unist_util_visit = __nccwpck_require__(47982); +var unist_util_visit_default = /*#__PURE__*/__nccwpck_require__.n(unist_util_visit); +;// CONCATENATED MODULE: ./remark-get-images-plugin.ts +// stdlib + + + +// for creating custom remark plugin + // Use 4.1.0; 5+ is ESM + +const remarkGetImages = (sourceRepoPublicDir, imageSrcSet) => { + const test = (node) => { + return unist_util_is_default()(node, 'image'); + }; + return function (tree) { + unist_util_visit_default()(tree, test, (node) => { + const src = external_path_.join(sourceRepoPublicDir, node.url); + external_assert_.ok(external_fs_.existsSync(src), '[getImagesPlugin] image not found: ' + src); + imageSrcSet.add(src); + }); + }; +}; + +;// CONCATENATED MODULE: ./remark-transfrom-cloud-docs-links.ts +// for creating custom remark plugin + // Use 4.1.0; 5+ is ESM + + +const remarkTransformCloudDocsLinks = () => { + const test = (node) => { + return unist_util_is_default()(node, 'link') || unist_util_is_default()(node, 'definition'); + }; + return function (tree) { + unist_util_visit_default()(tree, test, (node) => { + // early exit if any urls match any ignored patterns + if (IGNORE_PATTERNS.some((e) => e.test(node.url))) { + return; + } + // Match urls beginning with `/cloud-docs` or `/terraform/cloud-docs` + if (/^(\/terraform)?\/cloud-docs/i.test(node.url)) { + node.url = node.url.replace('cloud-docs', 'enterprise'); + } + }); + }; +}; + +;// CONCATENATED MODULE: ./main.ts +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +// stdlib + + +// fs traversal + +// initial processing + +// mdx processing + +// @ts-expect-error - remark-mdx@1.6.22 has no types + + +// plugins + + +const imageSrcSet = new Set(); +// List of MDX files to exclude from being copied +const IGNORE_LIST = ['cloud-docs/index.mdx']; +const IGNORE_PATTERNS = [/cloud-docs\/agents/i]; +const SUB_PATH_MAPPINGS = [ + { + source: 'cloud-docs', + target: 'enterprise', + }, +]; +/** + * This function will copy 3 things + * - MDX files + * - these can be at varying levels of nesting + * - used images + * - these are expected to all be at the same level + * - nav-data JSON files + * + * This function will also prune the target directory + * of any files that are not in the source directory. + * + * @param sourceRepo An absolute path to a GitHub repository on disk + * @param targetRepo An absolute path to a GitHub repository on disk + */ +function main(sourceRepo, targetRepo) { + return __awaiter(this, void 0, void 0, function* () { + const sourceRepoContentDir = external_path_.join(sourceRepo, 'website/docs'); + // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk + const sourceRepoPublicDir = external_path_.join(sourceRepo, 'website'); + const targetRepoContentDir = external_path_.join(targetRepo, 'website/docs'); + // this gets prepended to img reference **bases** (aka filename.extension only) + const targetRepoImageDir = external_path_.join(targetRepo, 'website/img/docs'); + const targetRepoLastSyncFile = external_path_.join(targetRepo, 'website/last-cloud-docs-sync.txt'); + // traverse source docs and accumulate mdx files for a given set of "subPaths" + let items = []; + for (const { source: subPath } of SUB_PATH_MAPPINGS) { + const src = external_path_.join(sourceRepoContentDir, subPath); + const docItems = klaw_sync_default()(src, { + nodir: true, + filter: filterFunc, + }); + items = items.concat(docItems); + } + // process each mdx file + for (const item of items) { + // ignore some files + if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + continue; + } + // extract mdx content; ignore frontmatter + const fullContent = external_fs_.readFileSync(item.path, 'utf8'); + // eslint-disable-next-line prefer-const + let { content, data } = gray_matter_default()(fullContent); + data = transformObject(data, [ + // inject `source` frontmatter property + function injectSource(d) { + d.source = external_path_.basename(sourceRepo); + return d; + }, + // replace cloud instances with enterprise + function replaceCloudWithEnterprise(d) { + // Some docs do not have all frontmatter properties. Make sure + // we do not assign `undefined` (which is invalid) in YAML + if (d.page_title) { + d.page_title = d.page_title.replace('Terraform Cloud', 'Terraform Enterprise'); + d.page_title = d.page_title.replace('HCP Terraform', 'Terraform Enterprise'); + } + if (d.description) { + d.description = d.description.replace('Terraform Cloud', 'Terraform Enterprise'); + d.description = d.description.replace('HCP Terraform', 'Terraform Enterprise'); + } + return d; + }, + ]); + const vfile = yield remark_default()() + .use((remark_mdx_default())) + .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) + .use(remarkTransformCloudDocsLinks) // transforms link + .process(content); + // replace \-> with -> + const stringOutput = vfile.toString().replaceAll('\\->', '->'); + // overwrite original file with transformed content + const contents = gray_matter_default().stringify('\n' + stringOutput, data); + external_fs_.writeFileSync(item.path, contents); + } + // keep track of the files that were copied in the target repo + const copiedTargetRepoRelativePaths = []; + // Copy an entire directory + // --------------------------------------------- + // /{source}/cloud-docs/dir/some-doc.mdx + // ↓ ↓ ↓ ↓ + // /{target}/enterprise/dir/some-docs.mdx + // --------------------------------------------- + for (const { source, target } of SUB_PATH_MAPPINGS) { + const src = external_path_.join(sourceRepoContentDir, source); + const dest = external_path_.join(targetRepoContentDir, target); + const items = klaw_sync_default()(src, { + nodir: true, + filter: filterFunc, + }); + for (const item of items) { + // ignore some files + if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + continue; + } + const destAbsolutePath = item.path.replace(src, dest); + external_fs_.mkdirSync(external_path_.dirname(destAbsolutePath), { recursive: true }); + external_fs_.copyFileSync(item.path, destAbsolutePath); + // accumulate copied files + const relativePath = external_path_.relative(targetRepo, destAbsolutePath); + copiedTargetRepoRelativePaths.push(relativePath); + } + } + // Copy images + for (const src of Array.from(imageSrcSet)) { + const basename = external_path_.basename(src); + const target = external_path_.join(targetRepoImageDir, basename); + external_fs_.mkdirSync(targetRepoImageDir, { recursive: true }); + external_fs_.copyFileSync(src, target); + // accumulate copied files + const relativePath = external_path_.relative(targetRepo, target); + copiedTargetRepoRelativePaths.push(relativePath); + } + // Read or Create and Read `last-cloud-docs-sync.txt` + if (!external_fs_.existsSync(targetRepoLastSyncFile)) { + logger.info('Creating `${targetRepoLastSyncFile}`'); + external_fs_.writeFileSync(targetRepoLastSyncFile, '', 'utf8'); + } + logger.info('Reading `${targetRepoLastSyncFile}`'); + // Any filename that is in this list, that was not just sync'd is considered stale; Prune. + // Then save over `last-cloud-docs-sync.txt` + const lastSync = external_fs_.readFileSync(targetRepoLastSyncFile) + .toString() + .split('\n') + // filter empty strings; This is encountered when creating + // the last-cloud-docs-sync.txt file for the first time. + .filter(Boolean); + // prune files and empty directories + lastSync + .filter((relativePath) => { + return !copiedTargetRepoRelativePaths.includes(relativePath); + }) + .forEach((relativePath) => { + const file = external_path_.join(targetRepo, relativePath); + // set force to true to ignore errors; + // This happens when a file is deleted from the source repo. + logger.info(`Deleting stale file: ${file}...`); + external_fs_.rmSync(file, { force: true }); + logger.info(`Deleted stale file: ${file}`); + recursiveRmEmptyParentDirs(file); + }); + // clear file + logger.info('Clearing `${targetRepoLastSyncFile}`'); + external_fs_.truncateSync(targetRepoLastSyncFile, 0); + const stream = external_fs_.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }); + for (const item of copiedTargetRepoRelativePaths) { + stream.write(`${item}\n`); + } + // wait for the stream to end + return new Promise((resolve) => { + stream.end(resolve); + }); + }); +} +// This is a helper for pruning empty dirs for tests; +// Git ignores empty dirs entirely but an in-memory filesystem doesn't. +const recursiveRmEmptyParentDirs = (file) => { + logger.info(`Deleting empty parent dirs for ${file}...`); + const dir = external_path_.dirname(file); + if (external_fs_.existsSync(dir)) { + const files = external_fs_.readdirSync(dir); + if (files.length === 0) { + // @ts-expect-error force is there but not typed correctly + external_fs_.rmdirSync(dir, { force: true, recursive: true }); + logger.info(`Deleted empty parent dirs for ${file}`); + recursiveRmEmptyParentDirs(external_path_.dirname(dir)); + } + } +}; +/** + * This is a helper to be passed to `walk` dry up repeated logic + * for ignore certain files. + */ +const filterFunc = (item) => { + // if the item matches a IGNORE_PATTERNS expression, exclude it + if (IGNORE_PATTERNS.some((pattern) => pattern.test(item.path))) { + return false; + } + // Check files for `tfc_only` frontmatter property; Ignore them if true + if (item.stats.isFile()) { + const fullContent = external_fs_.readFileSync(item.path, 'utf8'); + const { data } = gray_matter_default()(fullContent); + if (data.tfc_only == true) { + return false; + } + } + return true; +}; +/** + * A helper that accepts a data object and an array of functions that + * receive the object as an arg and transform it. + */ +const transformObject = (data, plugins) => { + let result = data; + plugins.forEach((fn) => { + result = fn(result); + }); + return result; +}; + +;// CONCATENATED MODULE: ./index.ts +var index_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + + +function action() { + return index_awaiter(this, void 0, void 0, function* () { + // These are absolute paths, like: + // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} + const sourceRepo = core.getInput('source_repo'); + const targetRepo = core.getInput('target_repo'); + // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows + core.notice(`sourceRepo: ${sourceRepo}`); + core.notice(`targetRepo: ${targetRepo}`); + yield main(sourceRepo, targetRepo); + }); +} +action(); + +})(); + +module.exports = __webpack_exports__; +/******/ })() +; \ No newline at end of file diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/worker-pipeline.js b/.github/actions/copy-cloud-docs-for-tfe/out/worker-pipeline.js new file mode 100644 index 0000000000..32e7c03760 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/out/worker-pipeline.js @@ -0,0 +1,51 @@ +'use strict' + +const EE = require('events') +const { realImport, realRequire } = require('real-require') +const { pipeline, PassThrough } = require('stream') + +// This file is not checked by the code coverage tool, +// as it is not reliable. + +/* istanbul ignore file */ + +module.exports = async function ({ targets }) { + const streams = await Promise.all(targets.map(async (t) => { + let fn + try { + const toLoad = 'file://' + t.target + fn = (await realImport(toLoad)).default + } catch (error) { + // See this PR for details: https://github.com/pinojs/thread-stream/pull/34 + if ((error.code === 'ENOTDIR' || error.code === 'ERR_MODULE_NOT_FOUND')) { + fn = realRequire(t.target) + } else { + throw error + } + } + const stream = await fn(t.options) + return stream + })) + const ee = new EE() + + const stream = new PassThrough({ + autoDestroy: true, + destroy (err, cb) { + // destroying one stream is enough + streams[0].destroy(err) + ee.on('error', cb) + ee.on('closed', cb) + } + }) + + pipeline(stream, ...streams, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + ee.emit('error', err) + return + } + + ee.emit('closed') + }) + + return stream +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/worker.js b/.github/actions/copy-cloud-docs-for-tfe/out/worker.js new file mode 100644 index 0000000000..9bfabcf5cd --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/out/worker.js @@ -0,0 +1,65 @@ +'use strict' + +const pino = require('../pino.js') +const build = require('pino-abstract-transport') +const { realImport, realRequire } = require('real-require') + +// This file is not checked by the code coverage tool, +// as it is not reliable. + +/* istanbul ignore file */ + +module.exports = async function ({ targets }) { + targets = await Promise.all(targets.map(async (t) => { + let fn + try { + const toLoad = 'file://' + t.target + fn = (await realImport(toLoad)).default + } catch (error) { + // See this PR for details: https://github.com/pinojs/thread-stream/pull/34 + if ((error.code === 'ENOTDIR' || error.code === 'ERR_MODULE_NOT_FOUND')) { + fn = realRequire(t.target) + } else { + throw error + } + } + const stream = await fn(t.options) + return { + level: t.level, + stream + } + })) + return build(process, { + parse: 'lines', + metadata: true, + close (err, cb) { + let expected = 0 + for (const transport of targets) { + expected++ + transport.stream.on('close', closeCb) + transport.stream.end() + } + + function closeCb () { + if (--expected === 0) { + cb(err) + } + } + } + }) + + function process (stream) { + const multi = pino.multistream(targets) + // TODO manage backpressure + stream.on('data', function (chunk) { + const { lastTime, lastMsg, lastObj, lastLevel } = this + multi.lastLevel = lastLevel + multi.lastTime = lastTime + multi.lastMsg = lastMsg + multi.lastObj = lastObj + + // TODO handle backpressure + multi.write(chunk + '\n') + }) + } +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/worker1.js b/.github/actions/copy-cloud-docs-for-tfe/out/worker1.js new file mode 100644 index 0000000000..08e81ccf14 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/out/worker1.js @@ -0,0 +1,149 @@ +'use strict' + +const { realImport, realRequire } = require('real-require') +const { workerData, parentPort } = require('worker_threads') +const { WRITE_INDEX, READ_INDEX } = require('./indexes') +const { waitDiff } = require('./wait') + +const { + dataBuf, + filename, + stateBuf +} = workerData + +let destination + +const state = new Int32Array(stateBuf) +const data = Buffer.from(dataBuf) + +async function start () { + let fn + try { + // TODO: fix loading .ts files in Windows. See: ../test/ts.test.ts + if (filename.endsWith('.ts') || filename.endsWith('.cts')) { + // TODO: add support for the TSM modules loader ( https://github.com/lukeed/tsm ). + if (process[Symbol.for('ts-node.register.instance')]) { + realRequire('ts-node/register') + } else if (process.env.TS_NODE_DEV) { + realRequire('ts-node-dev') + } + // TODO: Support ES imports once tsc, tap & ts-node provide better compatibility guarantees. + fn = realRequire(decodeURIComponent(filename.replace('file://', ''))) + } else { + fn = (await realImport(filename)) + } + + // Depending on how the default export is performed, and on how the code is + // transpiled, we may find cases of two nested "default" objects. + // See https://github.com/pinojs/pino/issues/1243#issuecomment-982774762 + if (typeof fn === 'object') fn = fn.default + if (typeof fn === 'object') fn = fn.default + } catch (error) { + // A yarn user that tries to start a ThreadStream for an external module + // provides a filename pointing to a zip file. + // eg. require.resolve('pino-elasticsearch') // returns /foo/pino-elasticsearch-npm-6.1.0-0c03079478-6915435172.zip/bar.js + // The `import` will fail to try to load it. + // This catch block executes the `require` fallback to load the module correctly. + // In fact, yarn modifies the `require` function to manage the zipped path. + // More details at https://github.com/pinojs/pino/pull/1113 + // The error codes may change based on the node.js version (ENOTDIR > 12, ERR_MODULE_NOT_FOUND <= 12 ) + if ((error.code === 'ENOTDIR' || error.code === 'ERR_MODULE_NOT_FOUND') && + filename.startsWith('file://')) { + fn = realRequire(decodeURIComponent(filename.replace('file://', ''))) + } else { + throw error + } + } + destination = await fn(workerData.workerData) + + destination.on('error', function (err) { + Atomics.store(state, WRITE_INDEX, -2) + Atomics.notify(state, WRITE_INDEX) + + Atomics.store(state, READ_INDEX, -2) + Atomics.notify(state, READ_INDEX) + + parentPort.postMessage({ + code: 'ERROR', + err + }) + }) + + destination.on('close', function () { + // process._rawDebug('worker close emitted') + const end = Atomics.load(state, WRITE_INDEX) + Atomics.store(state, READ_INDEX, end) + Atomics.notify(state, READ_INDEX) + setImmediate(() => { + process.exit(0) + }) + }) +} + +// No .catch() handler, +// in case there is an error it goes +// to unhandledRejection +start().then(function () { + parentPort.postMessage({ + code: 'READY' + }) + + process.nextTick(run) +}) + +function run () { + const current = Atomics.load(state, READ_INDEX) + const end = Atomics.load(state, WRITE_INDEX) + + // process._rawDebug(`pre state ${current} ${end}`) + + if (end === current) { + if (end === data.length) { + waitDiff(state, READ_INDEX, end, Infinity, run) + } else { + waitDiff(state, WRITE_INDEX, end, Infinity, run) + } + return + } + + // process._rawDebug(`post state ${current} ${end}`) + + if (end === -1) { + // process._rawDebug('end') + destination.end() + return + } + + const toWrite = data.toString('utf8', current, end) + // process._rawDebug('worker writing: ' + toWrite) + + const res = destination.write(toWrite) + + if (res) { + Atomics.store(state, READ_INDEX, end) + Atomics.notify(state, READ_INDEX) + setImmediate(run) + } else { + destination.once('drain', function () { + Atomics.store(state, READ_INDEX, end) + Atomics.notify(state, READ_INDEX) + run() + }) + } +} + +process.on('unhandledRejection', function (err) { + parentPort.postMessage({ + code: 'ERROR', + err + }) + process.exit(1) +}) + +process.on('uncaughtException', function (err) { + parentPort.postMessage({ + code: 'ERROR', + err + }) + process.exit(1) +}) diff --git a/.github/actions/copy-cloud-docs-for-tfe/package.json b/.github/actions/copy-cloud-docs-for-tfe/package.json new file mode 100644 index 0000000000..7efbe220da --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/package.json @@ -0,0 +1,6 @@ +{ + "name": "copy-cloud-docs-for-tfe", + "scripts": { + "build": "ncc build index.ts -o out" + } +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts new file mode 100644 index 0000000000..64ef63f4cb --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts @@ -0,0 +1,28 @@ +// stdlib +import * as fs from 'fs' +import * as path from 'path' +import * as assert from 'assert' + +// for creating custom remark plugin +import is from 'unist-util-is' // Use 4.1.0; 5+ is ESM +import visit from 'unist-util-visit' +import type { Node } from 'unist' +import type { Image } from 'mdast' +import type { Plugin } from 'unified' + +export const remarkGetImages: Plugin<[string, Set<string>]> = ( + sourceRepoPublicDir, + imageSrcSet +) => { + const test = (node: Node): node is Image => { + return is<Image>(node, 'image') + } + + return function (tree) { + visit<Image>(tree, test, (node) => { + const src = path.join(sourceRepoPublicDir, node.url) + assert.ok(fs.existsSync(src), '[getImagesPlugin] image not found: ' + src) + imageSrcSet.add(src) + }) + } +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts new file mode 100644 index 0000000000..5126b60c08 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts @@ -0,0 +1,28 @@ +// for creating custom remark plugin +import is from 'unist-util-is' // Use 4.1.0; 5+ is ESM +import visit from 'unist-util-visit' +import type { Node } from 'unist' +import type { Link, Definition } from 'mdast' +import type { Plugin } from 'unified' + +import { IGNORE_PATTERNS } from './main' + +export const remarkTransformCloudDocsLinks: Plugin = () => { + const test = (node: Node): node is Link | Definition => { + return is<Link>(node, 'link') || is<Definition>(node, 'definition') + } + + return function (tree) { + visit(tree, test, (node) => { + // early exit if any urls match any ignored patterns + if (IGNORE_PATTERNS.some((e) => e.test(node.url))) { + return + } + + // Match urls beginning with `/cloud-docs` or `/terraform/cloud-docs` + if (/^(\/terraform)?\/cloud-docs/i.test(node.url)) { + node.url = node.url.replace('cloud-docs', 'enterprise') + } + }) + } +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json b/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json new file mode 100644 index 0000000000..d0027d8dc9 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "target": "es2015", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true + }, + "files": ["index.ts"] +} diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml new file mode 100644 index 0000000000..5ff29d20b2 --- /dev/null +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -0,0 +1,118 @@ +name: Copy cloud Docs For TFE +on: + workflow_dispatch: + inputs: + branch: + description: 'This simulates an origin branch. Ex: docs-tfe-releases/v123456-1; ptfe-releases/v123456-1' + required: true + +env: + release_branch: ${{ inputs.branch }} + +jobs: + copy-docs: + name: Copy Docs + runs-on: ubuntu-latest + steps: + # TODO: `exit 1` here short circuits the whole workflow, which we want, but results in + # an unnecessary `failure` status, which we don't want. + - name: Validate branch name + # ✅ docs-tfe-releases/v000011-1 + # ✅ ptfe-releases/v000011-1 + # ❌ ptfe-releases/v000011-2 + # ❌ ptfe-releases/v000011- + # ❌ ptfe-releases/v000011 + run: | + if [[ ${{ env.release_branch }} =~ ^(docs-tfe-releases|ptfe-releases)/v[0-9]{6}-1$ ]] + then + echo "::notice::Branch is valid — ${{ env.release_branch }}" + else + echo "::warning::Branch is invalid — ${{ env.release_branch }}" + exit 1 + fi + + - name: Set workspace & ref_name on env + run: | + echo "workspace=$GITHUB_WORKSPACE" >> $GITHUB_ENV + echo "ref_name=$GITHUB_REF_NAME" >> $GITHUB_ENV + + - name: Get series (YYYYMM) number from branch name + run: | + series=$(echo ${{ env.release_branch }} \ + | awk -F '/' '{print $2}' \ + | awk -F '-' '{print $1} {print $2}' \ + | head -n 1) + echo "SERIES=$series" >> $GITHUB_ENV + - name: Get release (X) number from branch name + run: | + release=$(echo ${{ env.release_branch }} \ + | awk -F '/' '{print $2}' \ + | awk -F '-' '{print $1} {print $2}' \ + | tail -n 1) + echo "RELEASE=$release" >> $GITHUB_ENV + + - name: Series/Release Summary + run: | + echo "# Summary" >> $GITHUB_STEP_SUMMARY + echo "**Workflow ref**: ${{env.ref_name}}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Triggered by branch creation (or manual workflow):" >> $GITHUB_STEP_SUMMARY + echo "- ${{github.server_url}}/hashicorp/${{env.target_repo}}/tree/${{env.release_branch}}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Series**: ${{env.SERIES}}" >> $GITHUB_STEP_SUMMARY + echo "**Release**: ${{env.RELEASE}}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "---" >> $GITHUB_STEP_SUMMARY + + - # This repository holds workflow logic + name: Checkout repository + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + with: + ref: ${{env.release_branch}} + + # - # Run our composite action + # name: Copy files + # uses: ./github/actions/copy-cloud-docs-for-tfe + # with: + # source_repo: ${{ env.workspace }}/${{ env.source_repo }} + # target_repo: ${{ env.workspace }}/${{ env.target_repo }} + + - name: Open PR in Target Repo + env: + branch_name: docs/${{env.SERIES}}-${{env.RELEASE}} + pr_body: | + # Automated Docs PR + + **TFE Series**: ${{ env.SERIES }} + **TFE Release**: ${{ env.RELEASE }} + + This copies over `cloud-docs` from: + - ${{github.server_url}}/${{github.repository}}/tree/${{env.release_branch}} + + This PR was created via: + - ${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}} + + Triggered by creation of branch: + - ${{github.server_url}}/${{github.repository}}/tree/${{env.release_branch}} + + ### Reviewers + + > **Note**: The `digital-content-events` GH App currently does not have permissions to request PR reviews from teams. + + - [ ] @hashicorp/ptfe-review + - [ ] @hashicorp/web-platform + run: | + git config --global user.email "team-rel-eng@hashicorp.com" + git config --global user.name "tfe-release-bot" + git checkout -b ${{env.branch_name}} + git add . + git commit -m "Automated Docs PR" --no-verify + git push origin HEAD + gh pr create \ + --body="${{env.pr_body}}" \ + --title="Automated Docs PR" \ + --draft \ + --head ${{env.branch_name}} \ + --base main + url=$(gh pr view --json url --jq '.url') + echo "**Automated PR URL**: ${url}" >> $GITHUB_STEP_SUMMARY From 342b4a669626c10e0aaa4f9df926567a962a60d2 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:15:16 -0400 Subject: [PATCH 10/47] Add push for testing --- .github/workflows/copy-cloud-docs-for-tfe.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 5ff29d20b2..46d647f7d5 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -3,9 +3,14 @@ on: workflow_dispatch: inputs: branch: - description: 'This simulates an origin branch. Ex: docs-tfe-releases/v123456-1; ptfe-releases/v123456-1' + description: 'Ex: docs-tfe-releases/v123456-1; ptfe-releases/v123456-1' required: true + #only required for testing + push: + branches: + - 'rn/add-copy-docs-workflow' + env: release_branch: ${{ inputs.branch }} From 60eb367cc309f49f6e19fa500a2b75a6a0db96ef Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:17:19 -0400 Subject: [PATCH 11/47] Fix workflow name --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 46d647f7d5..8a07ae2473 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -1,4 +1,4 @@ -name: Copy cloud Docs For TFE +name: Copy Cloud Docs For TFE on: workflow_dispatch: inputs: From 12b0dc6c10eede4c3436a6d42d88cccea5af518a Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:25:30 -0400 Subject: [PATCH 12/47] Add test file at root to check that PR opens --- .github/workflows/copy-cloud-docs-for-tfe.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 8a07ae2473..3df3d6e3a1 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -110,6 +110,7 @@ jobs: git config --global user.email "team-rel-eng@hashicorp.com" git config --global user.name "tfe-release-bot" git checkout -b ${{env.branch_name}} + echo "This is a test file." > test.txt git add . git commit -m "Automated Docs PR" --no-verify git push origin HEAD From c2e33691238e93f9888d70970b08d0f9f1d41618 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:32:10 -0400 Subject: [PATCH 13/47] login with github token --- .github/workflows/copy-cloud-docs-for-tfe.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 3df3d6e3a1..7fe2f07d09 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -107,10 +107,11 @@ jobs: - [ ] @hashicorp/ptfe-review - [ ] @hashicorp/web-platform run: | + gh auth login --with-token <<< "${{ secrets.CI_GITHUB_TOKEN }}" git config --global user.email "team-rel-eng@hashicorp.com" git config --global user.name "tfe-release-bot" git checkout -b ${{env.branch_name}} - echo "This is a test file." > test.txt + echo "This is a test file." > test2.txt git add . git commit -m "Automated Docs PR" --no-verify git push origin HEAD From 4b56c79d807c6d3dd104941f1ffbe54c3c3fd660 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:39:33 -0400 Subject: [PATCH 14/47] Update gh token --- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 7fe2f07d09..3f6d8c9298 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -107,11 +107,11 @@ jobs: - [ ] @hashicorp/ptfe-review - [ ] @hashicorp/web-platform run: | - gh auth login --with-token <<< "${{ secrets.CI_GITHUB_TOKEN }}" + echo ${{ secrets.WORKFLOW_TESTING_TOKEN }} | gh auth login --with-token git config --global user.email "team-rel-eng@hashicorp.com" git config --global user.name "tfe-release-bot" git checkout -b ${{env.branch_name}} - echo "This is a test file." > test2.txt + echo "This is a test file." > test3.txt git add . git commit -m "Automated Docs PR" --no-verify git push origin HEAD From ec30b5ca140e34ad22e5e7902d47c0c4eee6c546 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:47:58 -0400 Subject: [PATCH 15/47] Try just a git push --- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 3f6d8c9298..81759ebd93 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -107,14 +107,14 @@ jobs: - [ ] @hashicorp/ptfe-review - [ ] @hashicorp/web-platform run: | + echo "This is a test file." > test4.txt echo ${{ secrets.WORKFLOW_TESTING_TOKEN }} | gh auth login --with-token git config --global user.email "team-rel-eng@hashicorp.com" git config --global user.name "tfe-release-bot" git checkout -b ${{env.branch_name}} - echo "This is a test file." > test3.txt git add . git commit -m "Automated Docs PR" --no-verify - git push origin HEAD + git push gh pr create \ --body="${{env.pr_body}}" \ --title="Automated Docs PR" \ From 102fcd737b527c7f4b157a92d03aedb2629f7d3e Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:50:30 -0400 Subject: [PATCH 16/47] Add back push head --- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 81759ebd93..0462705b92 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -107,14 +107,14 @@ jobs: - [ ] @hashicorp/ptfe-review - [ ] @hashicorp/web-platform run: | - echo "This is a test file." > test4.txt echo ${{ secrets.WORKFLOW_TESTING_TOKEN }} | gh auth login --with-token git config --global user.email "team-rel-eng@hashicorp.com" git config --global user.name "tfe-release-bot" git checkout -b ${{env.branch_name}} + echo "This is a test file." > test.txt git add . git commit -m "Automated Docs PR" --no-verify - git push + git push origin HEAD gh pr create \ --body="${{env.pr_body}}" \ --title="Automated Docs PR" \ From a6d16ef1a7d4368d0b139988b3b28b5e4333427c Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:53:04 -0400 Subject: [PATCH 17/47] merge into develop for now --- .github/workflows/copy-cloud-docs-for-tfe.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 0462705b92..bcfe34258f 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -120,6 +120,7 @@ jobs: --title="Automated Docs PR" \ --draft \ --head ${{env.branch_name}} \ - --base main + # --base main TODO: Use this when we release + --base develop url=$(gh pr view --json url --jq '.url') echo "**Automated PR URL**: ${url}" >> $GITHUB_STEP_SUMMARY From bcdc2bc077144f96e5ae73eefd1e0409f3e894d6 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:53:39 -0400 Subject: [PATCH 18/47] Remove push action --- .github/workflows/copy-cloud-docs-for-tfe.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index bcfe34258f..2a0139983f 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -6,10 +6,10 @@ on: description: 'Ex: docs-tfe-releases/v123456-1; ptfe-releases/v123456-1' required: true - #only required for testing - push: - branches: - - 'rn/add-copy-docs-workflow' + # #only required for testing + # push: + # branches: + # - 'rn/add-copy-docs-workflow' env: release_branch: ${{ inputs.branch }} From 27d44ff9696ddf557400c77a1cb8f169ed5801cd Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 12:55:20 -0400 Subject: [PATCH 19/47] remove comment that was messing up code --- .github/workflows/copy-cloud-docs-for-tfe.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 2a0139983f..dac6b5f37e 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -120,7 +120,6 @@ jobs: --title="Automated Docs PR" \ --draft \ --head ${{env.branch_name}} \ - # --base main TODO: Use this when we release --base develop url=$(gh pr view --json url --jq '.url') echo "**Automated PR URL**: ${url}" >> $GITHUB_STEP_SUMMARY From 67aa011864be9367dbbe6db3a8cfe8d27256d7a3 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 13:31:33 -0400 Subject: [PATCH 20/47] Get copy-cloud-docs-for-tfe compiling --- .../copy-cloud-docs-for-tfe/action.yml | 10 +- .../actions/copy-cloud-docs-for-tfe/index.ts | 10 +- .../actions/copy-cloud-docs-for-tfe/main.ts | 45 +- .../copy-cloud-docs-for-tfe/out/index.js | 150525 ++++++--------- .../copy-cloud-docs-for-tfe/package-lock.json | 4844 + .../copy-cloud-docs-for-tfe/package.json | 13 + .../remark-get-images-plugin.ts | 6 +- .../remark-transfrom-cloud-docs-links.ts | 6 +- .../copy-cloud-docs-for-tfe/tsconfig.json | 3 +- .github/workflows/copy-cloud-docs-for-tfe.yml | 15 +- .gitignore | 3 + 11 files changed, 64054 insertions(+), 91426 deletions(-) create mode 100644 .github/actions/copy-cloud-docs-for-tfe/package-lock.json diff --git a/.github/actions/copy-cloud-docs-for-tfe/action.yml b/.github/actions/copy-cloud-docs-for-tfe/action.yml index 049fb84627..1fe1731373 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/action.yml +++ b/.github/actions/copy-cloud-docs-for-tfe/action.yml @@ -1,12 +1,12 @@ name: Copy cloud-docs for TFE -description: Copy docs/nav-data/assets from source repo to target repo +description: Copy docs/nav-data/assets from source dir to target dir runs: using: 'node20' main: 'out/index.js' inputs: - source_repo: + source_dir: required: true - description: 'The absolute path to a GitHub repository root, on disk. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/terraform-docs-common' - target_repo: - description: 'The absolute path to a GitHub repository root, on disk. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/ptfe-releases' + description: 'The absolute path from which to copy files. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/cloud-docs' + target_dir: required: true + description: 'The absolute path to which to copy files. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/ptfe-releases' diff --git a/.github/actions/copy-cloud-docs-for-tfe/index.ts b/.github/actions/copy-cloud-docs-for-tfe/index.ts index 38e43d125f..70d0ddcedf 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/index.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/index.ts @@ -5,14 +5,14 @@ import { main } from './main' async function action() { // These are absolute paths, like: // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} - const sourceRepo = core.getInput('source_repo') - const targetRepo = core.getInput('target_repo') + const sourceDir = core.getInput('source_dir') + const targetDir = core.getInput('target_dir') // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows - core.notice(`sourceRepo: ${sourceRepo}`) - core.notice(`targetRepo: ${targetRepo}`) + core.notice(`sourceDir: ${sourceDir}`) + core.notice(`targetDir: ${targetDir}`) - await main(sourceRepo, targetRepo) + await main(sourceDir, targetDir) } action() diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts index 087dfe67c0..94ee12cd0f 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/main.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -9,12 +9,11 @@ import walk from 'klaw-sync' import matter from 'gray-matter' // mdx processing -import remark from 'remark' +import { remark } from 'remark' -// @ts-expect-error - remark-mdx@1.6.22 has no types import remarkMdx from 'remark-mdx' -import { logger } from '~shared/logger' +import * as core from '@actions/core' // plugins import { remarkGetImages } from './remark-get-images-plugin' @@ -47,22 +46,22 @@ const SUB_PATH_MAPPINGS: { * This function will also prune the target directory * of any files that are not in the source directory. * - * @param sourceRepo An absolute path to a GitHub repository on disk - * @param targetRepo An absolute path to a GitHub repository on disk + * @param sourceDir An absolute path to a GitHub repository on disk + * @param targetDir An absolute path to a GitHub repository on disk */ export async function main( - sourceRepo: string, - targetRepo: string + sourceDir: string, + targetDir: string ): Promise<void> { - const sourceRepoContentDir = path.join(sourceRepo, 'website/docs') + const sourceRepoContentDir = path.join(sourceDir, 'website/docs') // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk - const sourceRepoPublicDir = path.join(sourceRepo, 'website') + const sourceRepoPublicDir = path.join(sourceDir, 'website') - const targetRepoContentDir = path.join(targetRepo, 'website/docs') + const targetRepoContentDir = path.join(targetDir, 'website/docs') // this gets prepended to img reference **bases** (aka filename.extension only) - const targetRepoImageDir = path.join(targetRepo, 'website/img/docs') + const targetRepoImageDir = path.join(targetDir, 'website/img/docs') const targetRepoLastSyncFile = path.join( - targetRepo, + targetDir, 'website/last-cloud-docs-sync.txt' ) @@ -94,7 +93,7 @@ export async function main( data = transformObject(data, [ // inject `source` frontmatter property function injectSource(d) { - d.source = path.basename(sourceRepo) + d.source = path.basename(sourceDir) return d }, // replace cloud instances with enterprise @@ -169,7 +168,7 @@ export async function main( fs.copyFileSync(item.path, destAbsolutePath) // accumulate copied files - const relativePath = path.relative(targetRepo, destAbsolutePath) + const relativePath = path.relative(targetDir, destAbsolutePath) copiedTargetRepoRelativePaths.push(relativePath) } } @@ -183,17 +182,17 @@ export async function main( fs.copyFileSync(src, target) // accumulate copied files - const relativePath = path.relative(targetRepo, target) + const relativePath = path.relative(targetDir, target) copiedTargetRepoRelativePaths.push(relativePath) } // Read or Create and Read `last-cloud-docs-sync.txt` if (!fs.existsSync(targetRepoLastSyncFile)) { - logger.info('Creating `${targetRepoLastSyncFile}`') + core.info('Creating `${targetRepoLastSyncFile}`') fs.writeFileSync(targetRepoLastSyncFile, '', 'utf8') } - logger.info('Reading `${targetRepoLastSyncFile}`') + core.info('Reading `${targetRepoLastSyncFile}`') // Any filename that is in this list, that was not just sync'd is considered stale; Prune. // Then save over `last-cloud-docs-sync.txt` const lastSync = fs @@ -210,18 +209,18 @@ export async function main( return !copiedTargetRepoRelativePaths.includes(relativePath) }) .forEach((relativePath) => { - const file = path.join(targetRepo, relativePath) + const file = path.join(targetDir, relativePath) // set force to true to ignore errors; // This happens when a file is deleted from the source repo. - logger.info(`Deleting stale file: ${file}...`) + core.info(`Deleting stale file: ${file}...`) fs.rmSync(file, { force: true }) - logger.info(`Deleted stale file: ${file}`) + core.info(`Deleted stale file: ${file}`) recursiveRmEmptyParentDirs(file) }) // clear file - logger.info('Clearing `${targetRepoLastSyncFile}`') + core.info('Clearing `${targetRepoLastSyncFile}`') fs.truncateSync(targetRepoLastSyncFile, 0) const stream = fs.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }) @@ -238,7 +237,7 @@ export async function main( // This is a helper for pruning empty dirs for tests; // Git ignores empty dirs entirely but an in-memory filesystem doesn't. const recursiveRmEmptyParentDirs = (file: string) => { - logger.info(`Deleting empty parent dirs for ${file}...`) + core.info(`Deleting empty parent dirs for ${file}...`) const dir = path.dirname(file) if (fs.existsSync(dir)) { @@ -246,7 +245,7 @@ const recursiveRmEmptyParentDirs = (file: string) => { if (files.length === 0) { // @ts-expect-error force is there but not typed correctly fs.rmdirSync(dir, { force: true, recursive: true }) - logger.info(`Deleted empty parent dirs for ${file}`) + core.info(`Deleted empty parent dirs for ${file}`) recursiveRmEmptyParentDirs(path.dirname(dir)) } diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/index.js b/.github/actions/copy-cloud-docs-for-tfe/out/index.js index 4b286a681c..b58c059b79 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/out/index.js +++ b/.github/actions/copy-cloud-docs-for-tfe/out/index.js @@ -1,33 +1,18 @@ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ 54039: -/***/ ((module) => { - -function webpackEmptyAsyncContext(req) { - // Here Promise.resolve().then() is used instead of new Promise() to prevent - // uncaught exception popping up in devtools - return Promise.resolve().then(() => { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - }); -} -webpackEmptyAsyncContext.keys = () => ([]); -webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; -webpackEmptyAsyncContext.id = 54039; -module.exports = webpackEmptyAsyncContext; - -/***/ }), - -/***/ 29548: +/***/ 4914: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -40,14 +25,14 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.issue = exports.issueCommand = void 0; -const os = __importStar(__nccwpck_require__(22037)); -const utils_1 = __nccwpck_require__(87472); +const os = __importStar(__nccwpck_require__(857)); +const utils_1 = __nccwpck_require__(302); /** * Commands * @@ -102,13 +87,13 @@ class Command { } } function escapeData(s) { - return utils_1.toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A'); } function escapeProperty(s) { - return utils_1.toCommandValue(s) + return (0, utils_1.toCommandValue)(s) .replace(/%/g, '%25') .replace(/\r/g, '%0D') .replace(/\n/g, '%0A') @@ -119,14 +104,18 @@ function escapeProperty(s) { /***/ }), -/***/ 37117: +/***/ 7484: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -139,7 +128,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -153,13 +142,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; -const command_1 = __nccwpck_require__(29548); -const file_command_1 = __nccwpck_require__(92469); -const utils_1 = __nccwpck_require__(87472); -const os = __importStar(__nccwpck_require__(22037)); -const path = __importStar(__nccwpck_require__(71017)); -const oidc_utils_1 = __nccwpck_require__(65172); +exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(4914); +const file_command_1 = __nccwpck_require__(4753); +const utils_1 = __nccwpck_require__(302); +const os = __importStar(__nccwpck_require__(857)); +const path = __importStar(__nccwpck_require__(6928)); +const oidc_utils_1 = __nccwpck_require__(5306); /** * The code to exit an action */ @@ -173,7 +162,7 @@ var ExitCode; * A code indicating that the action was a failure */ ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +})(ExitCode || (exports.ExitCode = ExitCode = {})); //----------------------------------------------------------------------- // Variables //----------------------------------------------------------------------- @@ -184,13 +173,13 @@ var ExitCode; */ // eslint-disable-next-line @typescript-eslint/no-explicit-any function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); + const convertedVal = (0, utils_1.toCommandValue)(val); process.env[name] = convertedVal; const filePath = process.env['GITHUB_ENV'] || ''; if (filePath) { - return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val)); } - command_1.issueCommand('set-env', { name }, convertedVal); + (0, command_1.issueCommand)('set-env', { name }, convertedVal); } exports.exportVariable = exportVariable; /** @@ -198,7 +187,7 @@ exports.exportVariable = exportVariable; * @param secret value of the secret */ function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); + (0, command_1.issueCommand)('add-mask', {}, secret); } exports.setSecret = setSecret; /** @@ -208,10 +197,10 @@ exports.setSecret = setSecret; function addPath(inputPath) { const filePath = process.env['GITHUB_PATH'] || ''; if (filePath) { - file_command_1.issueFileCommand('PATH', inputPath); + (0, file_command_1.issueFileCommand)('PATH', inputPath); } else { - command_1.issueCommand('add-path', {}, inputPath); + (0, command_1.issueCommand)('add-path', {}, inputPath); } process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; } @@ -286,10 +275,10 @@ exports.getBooleanInput = getBooleanInput; function setOutput(name, value) { const filePath = process.env['GITHUB_OUTPUT'] || ''; if (filePath) { - return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value)); } process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); + (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value)); } exports.setOutput = setOutput; /** @@ -298,7 +287,7 @@ exports.setOutput = setOutput; * */ function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); + (0, command_1.issue)('echo', enabled ? 'on' : 'off'); } exports.setCommandEcho = setCommandEcho; //----------------------------------------------------------------------- @@ -329,7 +318,7 @@ exports.isDebug = isDebug; * @param message debug message */ function debug(message) { - command_1.issueCommand('debug', {}, message); + (0, command_1.issueCommand)('debug', {}, message); } exports.debug = debug; /** @@ -338,7 +327,7 @@ exports.debug = debug; * @param properties optional properties to add to the annotation. */ function error(message, properties = {}) { - command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports.error = error; /** @@ -347,7 +336,7 @@ exports.error = error; * @param properties optional properties to add to the annotation. */ function warning(message, properties = {}) { - command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports.warning = warning; /** @@ -356,7 +345,7 @@ exports.warning = warning; * @param properties optional properties to add to the annotation. */ function notice(message, properties = {}) { - command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); + (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } exports.notice = notice; /** @@ -375,14 +364,14 @@ exports.info = info; * @param name The name of the output group */ function startGroup(name) { - command_1.issue('group', name); + (0, command_1.issue)('group', name); } exports.startGroup = startGroup; /** * End an output group. */ function endGroup() { - command_1.issue('endgroup'); + (0, command_1.issue)('endgroup'); } exports.endGroup = endGroup; /** @@ -420,9 +409,9 @@ exports.group = group; function saveState(name, value) { const filePath = process.env['GITHUB_STATE'] || ''; if (filePath) { - return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value)); } - command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); + (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value)); } exports.saveState = saveState; /** @@ -444,25 +433,29 @@ exports.getIDToken = getIDToken; /** * Summary exports */ -var summary_1 = __nccwpck_require__(38452); +var summary_1 = __nccwpck_require__(1847); Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); /** * @deprecated use core.summary */ -var summary_2 = __nccwpck_require__(38452); +var summary_2 = __nccwpck_require__(1847); Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); /** * Path exports */ -var path_utils_1 = __nccwpck_require__(66890); +var path_utils_1 = __nccwpck_require__(1976); Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); +/** + * Platform utilities exports + */ +exports.platform = __importStar(__nccwpck_require__(8968)); //# sourceMappingURL=core.js.map /***/ }), -/***/ 92469: +/***/ 4753: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -470,7 +463,11 @@ Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: funct // For internal use, subject to change. var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -483,7 +480,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -491,10 +488,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__nccwpck_require__(57147)); -const os = __importStar(__nccwpck_require__(22037)); -const uuid_1 = __nccwpck_require__(91972); -const utils_1 = __nccwpck_require__(87472); +const crypto = __importStar(__nccwpck_require__(6982)); +const fs = __importStar(__nccwpck_require__(9896)); +const os = __importStar(__nccwpck_require__(857)); +const utils_1 = __nccwpck_require__(302); function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; if (!filePath) { @@ -503,14 +500,14 @@ function issueFileCommand(command, message) { if (!fs.existsSync(filePath)) { throw new Error(`Missing file at path: ${filePath}`); } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, { encoding: 'utf8' }); } exports.issueFileCommand = issueFileCommand; function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = (0, utils_1.toCommandValue)(value); // These should realistically never happen, but just in case someone finds a // way to exploit uuid generation let's not allow keys or values that contain // the delimiter. @@ -527,7 +524,7 @@ exports.prepareKeyValueMessage = prepareKeyValueMessage; /***/ }), -/***/ 65172: +/***/ 5306: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -543,9 +540,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.OidcClient = void 0; -const http_client_1 = __nccwpck_require__(55885); -const auth_1 = __nccwpck_require__(28603); -const core_1 = __nccwpck_require__(37117); +const http_client_1 = __nccwpck_require__(4844); +const auth_1 = __nccwpck_require__(4552); +const core_1 = __nccwpck_require__(7484); class OidcClient { static createHttpClient(allowRetry = true, maxRetry = 10) { const requestOptions = { @@ -577,7 +574,7 @@ class OidcClient { .catch(error => { throw new Error(`Failed to get ID Token. \n Error Code : ${error.statusCode}\n - Error Message: ${error.result.message}`); + Error Message: ${error.message}`); }); const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; if (!id_token) { @@ -595,9 +592,9 @@ class OidcClient { const encodedAudience = encodeURIComponent(audience); id_token_url = `${id_token_url}&audience=${encodedAudience}`; } - core_1.debug(`ID token url is ${id_token_url}`); + (0, core_1.debug)(`ID token url is ${id_token_url}`); const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); + (0, core_1.setSecret)(id_token); return id_token; } catch (error) { @@ -611,14 +608,18 @@ exports.OidcClient = OidcClient; /***/ }), -/***/ 66890: +/***/ 1976: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -631,13 +632,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; -const path = __importStar(__nccwpck_require__(71017)); +const path = __importStar(__nccwpck_require__(6928)); /** * toPosixPath converts the given path to the posix form. On Windows, \\ will be * replaced with /. @@ -676,7 +677,108 @@ exports.toPlatformPath = toPlatformPath; /***/ }), -/***/ 38452: +/***/ 8968: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; +const os_1 = __importDefault(__nccwpck_require__(857)); +const exec = __importStar(__nccwpck_require__(5236)); +const getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { + silent: true + }); + const { stdout: name } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', undefined, { + silent: true + }); + return { + name: name.trim(), + version: version.trim() + }; +}); +const getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput('sw_vers', undefined, { + silent: true + }); + const version = (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; + const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ''; + return { + name, + version + }; +}); +const getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { + silent: true + }); + const [name, version] = stdout.trim().split('\n'); + return { + name, + version + }; +}); +exports.platform = os_1.default.platform(); +exports.arch = os_1.default.arch(); +exports.isWindows = exports.platform === 'win32'; +exports.isMacOS = exports.platform === 'darwin'; +exports.isLinux = exports.platform === 'linux'; +function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign(Object.assign({}, (yield (exports.isWindows + ? getWindowsInfo() + : exports.isMacOS + ? getMacOsInfo() + : getLinuxInfo()))), { platform: exports.platform, + arch: exports.arch, + isWindows: exports.isWindows, + isMacOS: exports.isMacOS, + isLinux: exports.isLinux }); + }); +} +exports.getDetails = getDetails; +//# sourceMappingURL=platform.js.map + +/***/ }), + +/***/ 1847: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -692,8 +794,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; -const os_1 = __nccwpck_require__(22037); -const fs_1 = __nccwpck_require__(57147); +const os_1 = __nccwpck_require__(857); +const fs_1 = __nccwpck_require__(9896); const { access, appendFile, writeFile } = fs_1.promises; exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; @@ -966,7 +1068,7 @@ exports.summary = _summary; /***/ }), -/***/ 87472: +/***/ 302: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -1013,7 +1115,742 @@ exports.toCommandProperties = toCommandProperties; /***/ }), -/***/ 28603: +/***/ 5236: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getExecOutput = exports.exec = void 0; +const string_decoder_1 = __nccwpck_require__(3193); +const tr = __importStar(__nccwpck_require__(6665)); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise<number> exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +/** + * Exec a command and get the output. + * Output will be streamed to the live console. + * Returns promise with the exit code and collected stdout and stderr + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise<ExecOutput> exit code, stdout, and stderr + */ +function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ''; + let stderr = ''; + //Using string decoder covers the case where a mult-byte character is split + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + //flush any remaining characters + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); +} +exports.getExecOutput = getExecOutput; +//# sourceMappingURL=exec.js.map + +/***/ }), + +/***/ 6665: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.argStringToArray = exports.ToolRunner = void 0; +const os = __importStar(__nccwpck_require__(857)); +const events = __importStar(__nccwpck_require__(4434)); +const child = __importStar(__nccwpck_require__(5317)); +const path = __importStar(__nccwpck_require__(6928)); +const io = __importStar(__nccwpck_require__(4994)); +const ioUtil = __importStar(__nccwpck_require__(5207)); +const timers_1 = __nccwpck_require__(3557); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + return s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + return ''; + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that precede a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + // root the tool path if it is unrooted and contains relative pathing + if (!ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes('/') || + (IS_WINDOWS && this.toolPath.includes('\\')))) { + // prefer options.cwd if it is specified, however options.cwd may also need to be rooted + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + // if the tool is only a file name, then resolve it from the PATH + // otherwise verify it exists (add extension on Windows if necessary) + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + })); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map + +/***/ }), + +/***/ 4552: /***/ (function(__unused_webpack_module, exports) { "use strict"; @@ -1101,7 +1938,7 @@ exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHand /***/ }), -/***/ 55885: +/***/ 4844: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -1109,7 +1946,11 @@ exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHand /* eslint-disable @typescript-eslint/no-explicit-any */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -1122,7 +1963,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -1137,10 +1978,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; -const http = __importStar(__nccwpck_require__(13685)); -const https = __importStar(__nccwpck_require__(95687)); -const pm = __importStar(__nccwpck_require__(86255)); -const tunnel = __importStar(__nccwpck_require__(89382)); +const http = __importStar(__nccwpck_require__(8611)); +const https = __importStar(__nccwpck_require__(5692)); +const pm = __importStar(__nccwpck_require__(4988)); +const tunnel = __importStar(__nccwpck_require__(770)); +const undici_1 = __nccwpck_require__(6752); var HttpCodes; (function (HttpCodes) { HttpCodes[HttpCodes["OK"] = 200] = "OK"; @@ -1170,16 +2012,16 @@ var HttpCodes; HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +})(HttpCodes || (exports.HttpCodes = HttpCodes = {})); var Headers; (function (Headers) { Headers["Accept"] = "accept"; Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); +})(Headers || (exports.Headers = Headers = {})); var MediaTypes; (function (MediaTypes) { MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +})(MediaTypes || (exports.MediaTypes = MediaTypes = {})); /** * Returns the proxy URL, depending upon the supplied url and proxy environment variables. * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com @@ -1230,6 +2072,19 @@ class HttpClientResponse { })); }); } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', (chunk) => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + })); + }); + } } exports.HttpClientResponse = HttpClientResponse; function isHttps(requestUrl) { @@ -1535,6 +2390,15 @@ class HttpClient { const parsedUrl = new URL(serverUrl); return this._getAgent(parsedUrl); } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } _prepareRequest(method, requestUrl, headers) { const info = {}; info.parsedUrl = requestUrl; @@ -1582,7 +2446,7 @@ class HttpClient { if (this._keepAlive && useProxy) { agent = this._proxyAgent; } - if (this._keepAlive && !useProxy) { + if (!useProxy) { agent = this._agent; } // if agent is already assigned use that agent. @@ -1614,16 +2478,12 @@ class HttpClient { agent = tunnelAgent(agentOptions); this._proxyAgent = agent; } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { + // if tunneling agent isn't assigned create a new agent + if (!agent) { const options = { keepAlive: this._keepAlive, maxSockets }; agent = usingSsl ? new https.Agent(options) : new http.Agent(options); this._agent = agent; } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } if (usingSsl && this._ignoreSslError) { // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options @@ -1634,6 +2494,30 @@ class HttpClient { } return agent; } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + // if agent is already assigned use that agent. + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && { + token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}` + }))); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } _performExponentialBackoff(retryNumber) { return __awaiter(this, void 0, void 0, function* () { retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); @@ -1713,7 +2597,7 @@ const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCa /***/ }), -/***/ 86255: +/***/ 4988: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -1734,7 +2618,13 @@ function getProxyUrl(reqUrl) { } })(); if (proxyVar) { - return new URL(proxyVar); + try { + return new DecodedURL(proxyVar); + } + catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) + return new DecodedURL(`http://${proxyVar}`); + } } else { return undefined; @@ -1745,6 +2635,10 @@ function checkBypass(reqUrl) { if (!reqUrl.hostname) { return false; } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; if (!noProxy) { return false; @@ -1770,94280 +2664,54615 @@ function checkBypass(reqUrl) { .split(',') .map(x => x.trim().toUpperCase()) .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { + if (upperNoProxyItem === '*' || + upperReqHosts.some(x => x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && + x.endsWith(`${upperNoProxyItem}`)))) { return true; } } return false; } exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return (hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]')); +} +class DecodedURL extends URL { + constructor(url, base) { + super(url, base); + this._decodedUsername = decodeURIComponent(super.username); + this._decodedPassword = decodeURIComponent(super.password); + } + get username() { + return this._decodedUsername; + } + get password() { + return this._decodedPassword; + } +} //# sourceMappingURL=proxy.js.map /***/ }), -/***/ 47548: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 5207: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; })); -exports.codeFrameColumns = codeFrameColumns; -exports["default"] = _default; - -var _highlight = __nccwpck_require__(42421); - -let deprecationWarningShown = false; - -function getDefs(chalk) { - return { - gutter: chalk.grey, - marker: chalk.red.bold, - message: chalk.red.bold - }; +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__nccwpck_require__(9896)); +const path = __importStar(__nccwpck_require__(6928)); +_a = fs.promises +// export const {open} = 'fs' +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +// export const {open} = 'fs' +exports.IS_WINDOWS = process.platform === 'win32'; +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 +exports.UV_FS_O_EXLOCK = 0x10000000; +exports.READONLY = fs.constants.O_RDONLY; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); } - -const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; - -function getMarkerLines(loc, source, opts) { - const startLoc = Object.assign({ - column: 0, - line: -1 - }, loc.start); - const endLoc = Object.assign({}, startLoc, loc.end); - const { - linesAbove = 2, - linesBelow = 3 - } = opts || {}; - const startLine = startLoc.line; - const startColumn = startLoc.column; - const endLine = endLoc.line; - const endColumn = endLoc.column; - let start = Math.max(startLine - (linesAbove + 1), 0); - let end = Math.min(source.length, endLine + linesBelow); - - if (startLine === -1) { - start = 0; - } - - if (endLine === -1) { - end = source.length; - } - - const lineDiff = endLine - startLine; - const markerLines = {}; - - if (lineDiff) { - for (let i = 0; i <= lineDiff; i++) { - const lineNumber = i + startLine; - - if (!startColumn) { - markerLines[lineNumber] = true; - } else if (i === 0) { - const sourceLength = source[lineNumber - 1].length; - markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; - } else if (i === lineDiff) { - markerLines[lineNumber] = [0, endColumn]; - } else { - const sourceLength = source[lineNumber - i].length; - markerLines[lineNumber] = [0, sourceLength]; - } +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); } - } else { - if (startColumn === endColumn) { - if (startColumn) { - markerLines[startLine] = [startColumn, 0]; - } else { - markerLines[startLine] = true; - } - } else { - markerLines[startLine] = [startColumn, endColumn - startColumn]; + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello } - } - - return { - start, - end, - markerLines - }; + return p.startsWith('/'); } - -function codeFrameColumns(rawLines, loc, opts = {}) { - const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts); - const chalk = (0, _highlight.getChalk)(opts); - const defs = getDefs(chalk); - - const maybeHighlight = (chalkFn, string) => { - return highlighted ? chalkFn(string) : string; - }; - - const lines = rawLines.split(NEWLINE); - const { - start, - end, - markerLines - } = getMarkerLines(loc, lines, opts); - const hasColumns = loc.start && typeof loc.start.column === "number"; - const numberMaxWidth = String(end).length; - const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines; - let frame = highlightedLines.split(NEWLINE).slice(start, end).map((line, index) => { - const number = start + 1 + index; - const paddedNumber = ` ${number}`.slice(-numberMaxWidth); - const gutter = ` ${paddedNumber} |`; - const hasMarker = markerLines[number]; - const lastMarkerLine = !markerLines[number + 1]; - - if (hasMarker) { - let markerLine = ""; - - if (Array.isArray(hasMarker)) { - const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); - const numberOfMarkers = hasMarker[1] || 1; - markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join(""); - - if (lastMarkerLine && opts.message) { - markerLine += " " + maybeHighlight(defs.message, opts.message); +exports.isRooted = isRooted; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); } - } - - return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); - } else { - return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`; + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); } - }).join("\n"); - - if (opts.message && !hasColumns) { - frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`; - } - - if (highlighted) { - return chalk.reset(frame); - } else { - return frame; - } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); } +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; +//# sourceMappingURL=io-util.js.map -function _default(rawLines, lineNumber, colNumber, opts = {}) { - if (!deprecationWarningShown) { - deprecationWarningShown = true; - const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; +/***/ }), - if (process.emitWarning) { - process.emitWarning(message, "DeprecationWarning"); - } else { - const deprecationError = new Error(message); - deprecationError.name = "DeprecationWarning"; - console.warn(new Error(message)); - } - } +/***/ 4994: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - colNumber = Math.max(colNumber, 0); - const location = { - start: { - column: colNumber, - line: lineNumber - } - }; - return codeFrameColumns(rawLines, location, opts); +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __nccwpck_require__(2613); +const path = __importStar(__nccwpck_require__(6928)); +const ioUtil = __importStar(__nccwpck_require__(5207)); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() && copySourceDirectory + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + } + try { + // note if path does not exist, error is silent + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 + }); + } + catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise<void> + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise<string> path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); +} +exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise<string[]> the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); } +//# sourceMappingURL=io.js.map /***/ }), -/***/ 19315: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 3637: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.makeWeakCache = makeWeakCache; -exports.makeWeakCacheSync = makeWeakCacheSync; -exports.makeStrongCache = makeStrongCache; -exports.makeStrongCacheSync = makeStrongCacheSync; -exports.assertSimpleType = assertSimpleType; +const XHTMLEntities = __nccwpck_require__(5980); -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); +const hexNumber = /^[\da-fA-F]+$/; +const decimalNumber = /^\d+$/; - _gensync = function () { - return data; - }; +// The map to `acorn-jsx` tokens from `acorn` namespace objects. +const acornJsxMap = new WeakMap(); + +// Get the original tokens for the given `acorn` namespace object. +function getJsxTokens(acorn) { + acorn = acorn.Parser.acorn || acorn; + let acornJsx = acornJsxMap.get(acorn); + if (!acornJsx) { + const tt = acorn.tokTypes; + const TokContext = acorn.TokContext; + const TokenType = acorn.TokenType; + const tc_oTag = new TokContext('<tag', false); + const tc_cTag = new TokContext('</tag', false); + const tc_expr = new TokContext('<tag>...</tag>', true, true); + const tokContexts = { + tc_oTag: tc_oTag, + tc_cTag: tc_cTag, + tc_expr: tc_expr + }; + const tokTypes = { + jsxName: new TokenType('jsxName'), + jsxText: new TokenType('jsxText', {beforeExpr: true}), + jsxTagStart: new TokenType('jsxTagStart', {startsExpr: true}), + jsxTagEnd: new TokenType('jsxTagEnd') + }; - return data; + tokTypes.jsxTagStart.updateContext = function() { + this.context.push(tc_expr); // treat as beginning of JSX expression + this.context.push(tc_oTag); // start opening tag context + this.exprAllowed = false; + }; + tokTypes.jsxTagEnd.updateContext = function(prevType) { + let out = this.context.pop(); + if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) { + this.context.pop(); + this.exprAllowed = this.curContext() === tc_expr; + } else { + this.exprAllowed = true; + } + }; + + acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes }; + acornJsxMap.set(acorn, acornJsx); + } + + return acornJsx; } -var _async = __nccwpck_require__(3192); +// Transforms JSX element name to string. -var _util = __nccwpck_require__(60391); +function getQualifiedJSXName(object) { + if (!object) + return object; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (object.type === 'JSXIdentifier') + return object.name; -const synchronize = gen => { - return (0, _gensync().default)(gen).sync; -}; + if (object.type === 'JSXNamespacedName') + return object.namespace.name + ':' + object.name.name; -function* genTrue(data) { - return true; + if (object.type === 'JSXMemberExpression') + return getQualifiedJSXName(object.object) + '.' + + getQualifiedJSXName(object.property); } -function makeWeakCache(handler) { - return makeCachedFunction(WeakMap, handler); -} +module.exports = function(options) { + options = options || {}; + return function(Parser) { + return plugin({ + allowNamespaces: options.allowNamespaces !== false, + allowNamespacedObjects: !!options.allowNamespacedObjects + }, Parser); + }; +}; -function makeWeakCacheSync(handler) { - return synchronize(makeWeakCache(handler)); -} +// This is `tokTypes` of the peer dep. +// This can be different instances from the actual `tokTypes` this plugin uses. +Object.defineProperty(module.exports, "tokTypes", ({ + get: function get_tokTypes() { + return getJsxTokens(__nccwpck_require__(859)).tokTypes; + }, + configurable: true, + enumerable: true +})); + +function plugin(options, Parser) { + const acorn = Parser.acorn || __nccwpck_require__(859); + const acornJsx = getJsxTokens(acorn); + const tt = acorn.tokTypes; + const tok = acornJsx.tokTypes; + const tokContexts = acorn.tokContexts; + const tc_oTag = acornJsx.tokContexts.tc_oTag; + const tc_cTag = acornJsx.tokContexts.tc_cTag; + const tc_expr = acornJsx.tokContexts.tc_expr; + const isNewLine = acorn.isNewLine; + const isIdentifierStart = acorn.isIdentifierStart; + const isIdentifierChar = acorn.isIdentifierChar; + + return class extends Parser { + // Expose actual `tokTypes` and `tokContexts` to other plugins. + static get acornJsx() { + return acornJsx; + } + + // Reads inline JSX contents token. + jsx_readToken() { + let out = '', chunkStart = this.pos; + for (;;) { + if (this.pos >= this.input.length) + this.raise(this.start, 'Unterminated JSX contents'); + let ch = this.input.charCodeAt(this.pos); -function makeStrongCache(handler) { - return makeCachedFunction(Map, handler); -} + switch (ch) { + case 60: // '<' + case 123: // '{' + if (this.pos === this.start) { + if (ch === 60 && this.exprAllowed) { + ++this.pos; + return this.finishToken(tok.jsxTagStart); + } + return this.getTokenFromCode(ch); + } + out += this.input.slice(chunkStart, this.pos); + return this.finishToken(tok.jsxText, out); -function makeStrongCacheSync(handler) { - return synchronize(makeStrongCache(handler)); -} + case 38: // '&' + out += this.input.slice(chunkStart, this.pos); + out += this.jsx_readEntity(); + chunkStart = this.pos; + break; -function makeCachedFunction(CallCache, handler) { - const callCacheSync = new CallCache(); - const callCacheAsync = new CallCache(); - const futureCache = new CallCache(); - return function* cachedFunction(arg, data) { - const asyncContext = yield* (0, _async.isAsync)(); - const callCache = asyncContext ? callCacheAsync : callCacheSync; - const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data); - if (cached.valid) return cached.value; - const cache = new CacheConfigurator(data); - const handlerResult = handler(arg, cache); - let finishLock; - let value; + case 62: // '>' + case 125: // '}' + this.raise( + this.pos, + "Unexpected token `" + this.input[this.pos] + "`. Did you mean `" + + (ch === 62 ? "&gt;" : "&rbrace;") + "` or " + "`{\"" + this.input[this.pos] + "\"}" + "`?" + ); - if ((0, _util.isIterableIterator)(handlerResult)) { - const gen = handlerResult; - value = yield* (0, _async.onFirstPause)(gen, () => { - finishLock = setupAsyncLocks(cache, futureCache, arg); - }); - } else { - value = handlerResult; + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.pos); + out += this.jsx_readNewLine(true); + chunkStart = this.pos; + } else { + ++this.pos; + } + } + } } - updateFunctionCache(callCache, cache, arg, value); + jsx_readNewLine(normalizeCRLF) { + let ch = this.input.charCodeAt(this.pos); + let out; + ++this.pos; + if (ch === 13 && this.input.charCodeAt(this.pos) === 10) { + ++this.pos; + out = normalizeCRLF ? '\n' : '\r\n'; + } else { + out = String.fromCharCode(ch); + } + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } - if (finishLock) { - futureCache.delete(arg); - finishLock.release(value); + return out; } - return value; - }; -} + jsx_readString(quote) { + let out = '', chunkStart = ++this.pos; + for (;;) { + if (this.pos >= this.input.length) + this.raise(this.start, 'Unterminated string constant'); + let ch = this.input.charCodeAt(this.pos); + if (ch === quote) break; + if (ch === 38) { // '&' + out += this.input.slice(chunkStart, this.pos); + out += this.jsx_readEntity(); + chunkStart = this.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.pos); + out += this.jsx_readNewLine(false); + chunkStart = this.pos; + } else { + ++this.pos; + } + } + out += this.input.slice(chunkStart, this.pos++); + return this.finishToken(tt.string, out); + } + + jsx_readEntity() { + let str = '', count = 0, entity; + let ch = this.input[this.pos]; + if (ch !== '&') + this.raise(this.pos, 'Entity must start with an ampersand'); + let startPos = ++this.pos; + while (this.pos < this.input.length && count++ < 10) { + ch = this.input[this.pos++]; + if (ch === ';') { + if (str[0] === '#') { + if (str[1] === 'x') { + str = str.substr(2); + if (hexNumber.test(str)) + entity = String.fromCharCode(parseInt(str, 16)); + } else { + str = str.substr(1); + if (decimalNumber.test(str)) + entity = String.fromCharCode(parseInt(str, 10)); + } + } else { + entity = XHTMLEntities[str]; + } + break; + } + str += ch; + } + if (!entity) { + this.pos = startPos; + return '&'; + } + return entity; + } -function* getCachedValue(cache, arg, data) { - const cachedValue = cache.get(arg); + // Read a JSX identifier (valid tag or attribute name). + // + // Optimized version since JSX identifiers can't contain + // escape characters and so can be read as single slice. + // Also assumes that first character was already checked + // by isIdentifierStart in readToken. - if (cachedValue) { - for (const { - value, - valid - } of cachedValue) { - if (yield* valid(data)) return { - valid: true, - value - }; + jsx_readWord() { + let ch, start = this.pos; + do { + ch = this.input.charCodeAt(++this.pos); + } while (isIdentifierChar(ch) || ch === 45); // '-' + return this.finishToken(tok.jsxName, this.input.slice(start, this.pos)); } - } - - return { - valid: false, - value: null - }; -} -function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) { - const cached = yield* getCachedValue(callCache, arg, data); + // Parse next token as JSX identifier - if (cached.valid) { - return cached; - } + jsx_parseIdentifier() { + let node = this.startNode(); + if (this.type === tok.jsxName) + node.name = this.value; + else if (this.type.keyword) + node.name = this.type.keyword; + else + this.unexpected(); + this.next(); + return this.finishNode(node, 'JSXIdentifier'); + } - if (asyncContext) { - const cached = yield* getCachedValue(futureCache, arg, data); + // Parse namespaced identifier. - if (cached.valid) { - const value = yield* (0, _async.waitFor)(cached.value.promise); - return { - valid: true, - value - }; + jsx_parseNamespacedName() { + let startPos = this.start, startLoc = this.startLoc; + let name = this.jsx_parseIdentifier(); + if (!options.allowNamespaces || !this.eat(tt.colon)) return name; + var node = this.startNodeAt(startPos, startLoc); + node.namespace = name; + node.name = this.jsx_parseIdentifier(); + return this.finishNode(node, 'JSXNamespacedName'); } - } - return { - valid: false, - value: null - }; -} + // Parses element name in any form - namespaced, member + // or single identifier. -function setupAsyncLocks(config, futureCache, arg) { - const finishLock = new Lock(); - updateFunctionCache(futureCache, config, arg, finishLock); - return finishLock; -} + jsx_parseElementName() { + if (this.type === tok.jsxTagEnd) return ''; + let startPos = this.start, startLoc = this.startLoc; + let node = this.jsx_parseNamespacedName(); + if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !options.allowNamespacedObjects) { + this.unexpected(); + } + while (this.eat(tt.dot)) { + let newNode = this.startNodeAt(startPos, startLoc); + newNode.object = node; + newNode.property = this.jsx_parseIdentifier(); + node = this.finishNode(newNode, 'JSXMemberExpression'); + } + return node; + } -function updateFunctionCache(cache, config, arg, value) { - if (!config.configured()) config.forever(); - let cachedValue = cache.get(arg); - config.deactivate(); + // Parses any type of JSX attribute value. - switch (config.mode()) { - case "forever": - cachedValue = [{ - value, - valid: genTrue - }]; - cache.set(arg, cachedValue); - break; + jsx_parseAttributeValue() { + switch (this.type) { + case tt.braceL: + let node = this.jsx_parseExpressionContainer(); + if (node.expression.type === 'JSXEmptyExpression') + this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression'); + return node; - case "invalidate": - cachedValue = [{ - value, - valid: config.validator() - }]; - cache.set(arg, cachedValue); - break; + case tok.jsxTagStart: + case tt.string: + return this.parseExprAtom(); - case "valid": - if (cachedValue) { - cachedValue.push({ - value, - valid: config.validator() - }); - } else { - cachedValue = [{ - value, - valid: config.validator() - }]; - cache.set(arg, cachedValue); + default: + this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text'); } + } - } -} + // JSXEmptyExpression is unique type since it doesn't actually parse anything, + // and so it should start at the end of last read token (left brace) and finish + // at the beginning of the next one (right brace). -class CacheConfigurator { - constructor(data) { - this._active = true; - this._never = false; - this._forever = false; - this._invalidate = false; - this._configured = false; - this._pairs = []; - this._data = void 0; - this._data = data; - } + jsx_parseEmptyExpression() { + let node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc); + return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc); + } - simple() { - return makeSimpleConfigurator(this); - } + // Parses JSX expression enclosed into curly brackets. - mode() { - if (this._never) return "never"; - if (this._forever) return "forever"; - if (this._invalidate) return "invalidate"; - return "valid"; - } + jsx_parseExpressionContainer() { + let node = this.startNode(); + this.next(); + node.expression = this.type === tt.braceR + ? this.jsx_parseEmptyExpression() + : this.parseExpression(); + this.expect(tt.braceR); + return this.finishNode(node, 'JSXExpressionContainer'); + } + + // Parses following JSX attribute name-value pair. + + jsx_parseAttribute() { + let node = this.startNode(); + if (this.eat(tt.braceL)) { + this.expect(tt.ellipsis); + node.argument = this.parseMaybeAssign(); + this.expect(tt.braceR); + return this.finishNode(node, 'JSXSpreadAttribute'); + } + node.name = this.jsx_parseNamespacedName(); + node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null; + return this.finishNode(node, 'JSXAttribute'); + } + + // Parses JSX opening tag starting after '<'. + + jsx_parseOpeningElementAt(startPos, startLoc) { + let node = this.startNodeAt(startPos, startLoc); + node.attributes = []; + let nodeName = this.jsx_parseElementName(); + if (nodeName) node.name = nodeName; + while (this.type !== tt.slash && this.type !== tok.jsxTagEnd) + node.attributes.push(this.jsx_parseAttribute()); + node.selfClosing = this.eat(tt.slash); + this.expect(tok.jsxTagEnd); + return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment'); + } + + // Parses JSX closing tag starting after '</'. + + jsx_parseClosingElementAt(startPos, startLoc) { + let node = this.startNodeAt(startPos, startLoc); + let nodeName = this.jsx_parseElementName(); + if (nodeName) node.name = nodeName; + this.expect(tok.jsxTagEnd); + return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment'); + } + + // Parses entire JSX element, including it's opening tag + // (starting after '<'), attributes, contents and closing tag. + + jsx_parseElementAt(startPos, startLoc) { + let node = this.startNodeAt(startPos, startLoc); + let children = []; + let openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc); + let closingElement = null; + + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.type) { + case tok.jsxTagStart: + startPos = this.start; startLoc = this.startLoc; + this.next(); + if (this.eat(tt.slash)) { + closingElement = this.jsx_parseClosingElementAt(startPos, startLoc); + break contents; + } + children.push(this.jsx_parseElementAt(startPos, startLoc)); + break; + + case tok.jsxText: + children.push(this.parseExprAtom()); + break; + + case tt.braceL: + children.push(this.jsx_parseExpressionContainer()); + break; + + default: + this.unexpected(); + } + } + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise( + closingElement.start, + 'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>'); + } + } + let fragmentOrElement = openingElement.name ? 'Element' : 'Fragment'; - forever() { - if (!this._active) { - throw new Error("Cannot change caching after evaluation has completed."); + node['opening' + fragmentOrElement] = openingElement; + node['closing' + fragmentOrElement] = closingElement; + node.children = children; + if (this.type === tt.relational && this.value === "<") { + this.raise(this.start, "Adjacent JSX elements must be wrapped in an enclosing tag"); + } + return this.finishNode(node, 'JSX' + fragmentOrElement); } - if (this._never) { - throw new Error("Caching has already been configured with .never()"); + // Parse JSX text + + jsx_parseText() { + let node = this.parseLiteral(this.value); + node.type = "JSXText"; + return node; } - this._forever = true; - this._configured = true; - } + // Parses entire JSX element from current position. - never() { - if (!this._active) { - throw new Error("Cannot change caching after evaluation has completed."); + jsx_parseElement() { + let startPos = this.start, startLoc = this.startLoc; + this.next(); + return this.jsx_parseElementAt(startPos, startLoc); } - if (this._forever) { - throw new Error("Caching has already been configured with .forever()"); + parseExprAtom(refShortHandDefaultPos) { + if (this.type === tok.jsxText) + return this.jsx_parseText(); + else if (this.type === tok.jsxTagStart) + return this.jsx_parseElement(); + else + return super.parseExprAtom(refShortHandDefaultPos); } - this._never = true; - this._configured = true; - } + readToken(code) { + let context = this.curContext(); + + if (context === tc_expr) return this.jsx_readToken(); - using(handler) { - if (!this._active) { - throw new Error("Cannot change caching after evaluation has completed."); + if (context === tc_oTag || context === tc_cTag) { + if (isIdentifierStart(code)) return this.jsx_readWord(); + + if (code == 62) { + ++this.pos; + return this.finishToken(tok.jsxTagEnd); + } + + if ((code === 34 || code === 39) && context == tc_oTag) + return this.jsx_readString(code); + } + + if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) { + ++this.pos; + return this.finishToken(tok.jsxTagStart); + } + return super.readToken(code); } - if (this._never || this._forever) { - throw new Error("Caching has already been configured with .never or .forever()"); + updateContext(prevType) { + if (this.type == tt.braceL) { + var curContext = this.curContext(); + if (curContext == tc_oTag) this.context.push(tokContexts.b_expr); + else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl); + else super.updateContext(prevType); + this.exprAllowed = true; + } else if (this.type === tt.slash && prevType === tok.jsxTagStart) { + this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore + this.context.push(tc_cTag); // reconsider as closing tag context + this.exprAllowed = false; + } else { + return super.updateContext(prevType); + } } + }; +} - this._configured = true; - const key = handler(this._data); - const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`); - if ((0, _async.isThenable)(key)) { - return key.then(key => { - this._pairs.push([key, fn]); +/***/ }), - return key; - }); - } +/***/ 5980: +/***/ ((module) => { - this._pairs.push([key, fn]); +module.exports = { + quot: '\u0022', + amp: '&', + apos: '\u0027', + lt: '<', + gt: '>', + nbsp: '\u00A0', + iexcl: '\u00A1', + cent: '\u00A2', + pound: '\u00A3', + curren: '\u00A4', + yen: '\u00A5', + brvbar: '\u00A6', + sect: '\u00A7', + uml: '\u00A8', + copy: '\u00A9', + ordf: '\u00AA', + laquo: '\u00AB', + not: '\u00AC', + shy: '\u00AD', + reg: '\u00AE', + macr: '\u00AF', + deg: '\u00B0', + plusmn: '\u00B1', + sup2: '\u00B2', + sup3: '\u00B3', + acute: '\u00B4', + micro: '\u00B5', + para: '\u00B6', + middot: '\u00B7', + cedil: '\u00B8', + sup1: '\u00B9', + ordm: '\u00BA', + raquo: '\u00BB', + frac14: '\u00BC', + frac12: '\u00BD', + frac34: '\u00BE', + iquest: '\u00BF', + Agrave: '\u00C0', + Aacute: '\u00C1', + Acirc: '\u00C2', + Atilde: '\u00C3', + Auml: '\u00C4', + Aring: '\u00C5', + AElig: '\u00C6', + Ccedil: '\u00C7', + Egrave: '\u00C8', + Eacute: '\u00C9', + Ecirc: '\u00CA', + Euml: '\u00CB', + Igrave: '\u00CC', + Iacute: '\u00CD', + Icirc: '\u00CE', + Iuml: '\u00CF', + ETH: '\u00D0', + Ntilde: '\u00D1', + Ograve: '\u00D2', + Oacute: '\u00D3', + Ocirc: '\u00D4', + Otilde: '\u00D5', + Ouml: '\u00D6', + times: '\u00D7', + Oslash: '\u00D8', + Ugrave: '\u00D9', + Uacute: '\u00DA', + Ucirc: '\u00DB', + Uuml: '\u00DC', + Yacute: '\u00DD', + THORN: '\u00DE', + szlig: '\u00DF', + agrave: '\u00E0', + aacute: '\u00E1', + acirc: '\u00E2', + atilde: '\u00E3', + auml: '\u00E4', + aring: '\u00E5', + aelig: '\u00E6', + ccedil: '\u00E7', + egrave: '\u00E8', + eacute: '\u00E9', + ecirc: '\u00EA', + euml: '\u00EB', + igrave: '\u00EC', + iacute: '\u00ED', + icirc: '\u00EE', + iuml: '\u00EF', + eth: '\u00F0', + ntilde: '\u00F1', + ograve: '\u00F2', + oacute: '\u00F3', + ocirc: '\u00F4', + otilde: '\u00F5', + ouml: '\u00F6', + divide: '\u00F7', + oslash: '\u00F8', + ugrave: '\u00F9', + uacute: '\u00FA', + ucirc: '\u00FB', + uuml: '\u00FC', + yacute: '\u00FD', + thorn: '\u00FE', + yuml: '\u00FF', + OElig: '\u0152', + oelig: '\u0153', + Scaron: '\u0160', + scaron: '\u0161', + Yuml: '\u0178', + fnof: '\u0192', + circ: '\u02C6', + tilde: '\u02DC', + Alpha: '\u0391', + Beta: '\u0392', + Gamma: '\u0393', + Delta: '\u0394', + Epsilon: '\u0395', + Zeta: '\u0396', + Eta: '\u0397', + Theta: '\u0398', + Iota: '\u0399', + Kappa: '\u039A', + Lambda: '\u039B', + Mu: '\u039C', + Nu: '\u039D', + Xi: '\u039E', + Omicron: '\u039F', + Pi: '\u03A0', + Rho: '\u03A1', + Sigma: '\u03A3', + Tau: '\u03A4', + Upsilon: '\u03A5', + Phi: '\u03A6', + Chi: '\u03A7', + Psi: '\u03A8', + Omega: '\u03A9', + alpha: '\u03B1', + beta: '\u03B2', + gamma: '\u03B3', + delta: '\u03B4', + epsilon: '\u03B5', + zeta: '\u03B6', + eta: '\u03B7', + theta: '\u03B8', + iota: '\u03B9', + kappa: '\u03BA', + lambda: '\u03BB', + mu: '\u03BC', + nu: '\u03BD', + xi: '\u03BE', + omicron: '\u03BF', + pi: '\u03C0', + rho: '\u03C1', + sigmaf: '\u03C2', + sigma: '\u03C3', + tau: '\u03C4', + upsilon: '\u03C5', + phi: '\u03C6', + chi: '\u03C7', + psi: '\u03C8', + omega: '\u03C9', + thetasym: '\u03D1', + upsih: '\u03D2', + piv: '\u03D6', + ensp: '\u2002', + emsp: '\u2003', + thinsp: '\u2009', + zwnj: '\u200C', + zwj: '\u200D', + lrm: '\u200E', + rlm: '\u200F', + ndash: '\u2013', + mdash: '\u2014', + lsquo: '\u2018', + rsquo: '\u2019', + sbquo: '\u201A', + ldquo: '\u201C', + rdquo: '\u201D', + bdquo: '\u201E', + dagger: '\u2020', + Dagger: '\u2021', + bull: '\u2022', + hellip: '\u2026', + permil: '\u2030', + prime: '\u2032', + Prime: '\u2033', + lsaquo: '\u2039', + rsaquo: '\u203A', + oline: '\u203E', + frasl: '\u2044', + euro: '\u20AC', + image: '\u2111', + weierp: '\u2118', + real: '\u211C', + trade: '\u2122', + alefsym: '\u2135', + larr: '\u2190', + uarr: '\u2191', + rarr: '\u2192', + darr: '\u2193', + harr: '\u2194', + crarr: '\u21B5', + lArr: '\u21D0', + uArr: '\u21D1', + rArr: '\u21D2', + dArr: '\u21D3', + hArr: '\u21D4', + forall: '\u2200', + part: '\u2202', + exist: '\u2203', + empty: '\u2205', + nabla: '\u2207', + isin: '\u2208', + notin: '\u2209', + ni: '\u220B', + prod: '\u220F', + sum: '\u2211', + minus: '\u2212', + lowast: '\u2217', + radic: '\u221A', + prop: '\u221D', + infin: '\u221E', + ang: '\u2220', + and: '\u2227', + or: '\u2228', + cap: '\u2229', + cup: '\u222A', + 'int': '\u222B', + there4: '\u2234', + sim: '\u223C', + cong: '\u2245', + asymp: '\u2248', + ne: '\u2260', + equiv: '\u2261', + le: '\u2264', + ge: '\u2265', + sub: '\u2282', + sup: '\u2283', + nsub: '\u2284', + sube: '\u2286', + supe: '\u2287', + oplus: '\u2295', + otimes: '\u2297', + perp: '\u22A5', + sdot: '\u22C5', + lceil: '\u2308', + rceil: '\u2309', + lfloor: '\u230A', + rfloor: '\u230B', + lang: '\u2329', + rang: '\u232A', + loz: '\u25CA', + spades: '\u2660', + clubs: '\u2663', + hearts: '\u2665', + diams: '\u2666' +}; - return key; - } - invalidate(handler) { - this._invalidate = true; - return this.using(handler); - } +/***/ }), - validator() { - const pairs = this._pairs; - return function* (data) { - for (const [key, fn] of pairs) { - if (key !== (yield* fn(data))) return false; - } +/***/ 859: +/***/ (function(__unused_webpack_module, exports) { - return true; - }; - } +(function (global, factory) { + true ? factory(exports) : + 0; +})(this, (function (exports) { 'use strict'; - deactivate() { - this._active = false; - } + // This file was generated. Do not modify manually! + var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; - configured() { - return this._configured; - } + // This file was generated. Do not modify manually! + var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; -} + // This file was generated. Do not modify manually! + var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; -function makeSimpleConfigurator(cache) { - function cacheFn(val) { - if (typeof val === "boolean") { - if (val) cache.forever();else cache.never(); - return; - } + // This file was generated. Do not modify manually! + var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; - return cache.using(() => assertSimpleType(val())); - } + // These are a run-length and offset encoded representation of the + // >0xffff code points that are a valid part of identifiers. The + // offset starts at 0x10000, and each pair of numbers represents an + // offset to the next range, and then a size of the range. - cacheFn.forever = () => cache.forever(); + // Reserved word lists for various dialects of the language - cacheFn.never = () => cache.never(); + var reservedWords = { + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", + 5: "class enum extends super const export import", + 6: "enum", + strict: "implements interface let package private protected public static yield", + strictBind: "eval arguments" + }; - cacheFn.using = cb => cache.using(() => assertSimpleType(cb())); + // And the keywords - cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb())); + var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; - return cacheFn; -} + var keywords$1 = { + 5: ecma5AndLessKeywords, + "5module": ecma5AndLessKeywords + " export import", + 6: ecma5AndLessKeywords + " const class extends export import super" + }; -function assertSimpleType(value) { - if ((0, _async.isThenable)(value)) { - throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`); - } + var keywordRelationalOperator = /^in(stanceof)?$/; - if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") { - throw new Error("Cache keys must be either string, boolean, number, null, or undefined."); - } + // ## Character categories - return value; -} + var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); + var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); -class Lock { - constructor() { - this.released = false; - this.promise = void 0; - this._resolve = void 0; - this.promise = new Promise(resolve => { - this._resolve = resolve; - }); + // This has a complexity linear to the value of the code. The + // assumption is that looking up astral identifier characters is + // rare. + function isInAstralSet(code, set) { + var pos = 0x10000; + for (var i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) { return false } + pos += set[i + 1]; + if (pos >= code) { return true } + } + return false } - release(value) { - this.released = true; + // Test whether a given character code starts an identifier. - this._resolve(value); + function isIdentifierStart(code, astral) { + if (code < 65) { return code === 36 } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) } -} + // Test whether a given character is part of an identifier. -/***/ }), + function isIdentifierChar(code, astral) { + if (code < 48) { return code === 36 } + if (code < 58) { return true } + if (code < 65) { return false } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) + } -/***/ 57390: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // ## Token types -"use strict"; + // The assignment of fine-grained, information-carrying type objects + // allows the tokenizer to store the information it has about a + // token in a way that is very cheap for the parser to look up. + // All token type variables start with an underscore, to make them + // easy to recognize. -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.buildPresetChain = buildPresetChain; -exports.buildRootChain = buildRootChain; -exports.buildPresetChainWalker = void 0; + // The `beforeExpr` property is used to disambiguate between regular + // expressions and divisions. It is set on all token types that can + // be followed by an expression (thus, a slash after them would be a + // regular expression). + // + // The `startsExpr` property is used to check if the token ends a + // `yield` expression. It is set on all token types that either can + // directly start an expression (like a quotation mark) or can + // continue an expression (like the body of a string). + // + // `isLoop` marks a keyword as starting a loop, which is important + // to know when parsing a label, in order to allow or disallow + // continue jumps to that label. -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + var TokenType = function TokenType(label, conf) { + if ( conf === void 0 ) conf = {}; - _path = function () { - return data; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop || null; + this.updateContext = null; }; - return data; -} - -function _debug() { - const data = _interopRequireDefault(__nccwpck_require__(67984)); - - _debug = function () { - return data; + function binop(name, prec) { + return new TokenType(name, {beforeExpr: true, binop: prec}) + } + var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; + + // Map keyword names to token types. + + var keywords = {}; + + // Succinct definitions of keyword token types + function kw(name, options) { + if ( options === void 0 ) options = {}; + + options.keyword = name; + return keywords[name] = new TokenType(name, options) + } + + var types$1 = { + num: new TokenType("num", startsExpr), + regexp: new TokenType("regexp", startsExpr), + string: new TokenType("string", startsExpr), + name: new TokenType("name", startsExpr), + privateId: new TokenType("privateId", startsExpr), + eof: new TokenType("eof"), + + // Punctuation token types. + bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), + bracketR: new TokenType("]"), + braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), + braceR: new TokenType("}"), + parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), + parenR: new TokenType(")"), + comma: new TokenType(",", beforeExpr), + semi: new TokenType(";", beforeExpr), + colon: new TokenType(":", beforeExpr), + dot: new TokenType("."), + question: new TokenType("?", beforeExpr), + questionDot: new TokenType("?."), + arrow: new TokenType("=>", beforeExpr), + template: new TokenType("template"), + invalidTemplate: new TokenType("invalidTemplate"), + ellipsis: new TokenType("...", beforeExpr), + backQuote: new TokenType("`", startsExpr), + dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), + + // Operators. These carry several kinds of properties to help the + // parser use them properly (the presence of these properties is + // what categorizes them as operators). + // + // `binop`, when present, specifies that this operator is a binary + // operator, and will refer to its precedence. + // + // `prefix` and `postfix` mark the operator as a prefix or postfix + // unary operator. + // + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as + // binary operators with a very low precedence, that should result + // in AssignmentExpression nodes. + + eq: new TokenType("=", {beforeExpr: true, isAssign: true}), + assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), + incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), + prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), + logicalOR: binop("||", 1), + logicalAND: binop("&&", 2), + bitwiseOR: binop("|", 3), + bitwiseXOR: binop("^", 4), + bitwiseAND: binop("&", 5), + equality: binop("==/!=/===/!==", 6), + relational: binop("</>/<=/>=", 7), + bitShift: binop("<</>>/>>>", 8), + plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), + modulo: binop("%", 10), + star: binop("*", 10), + slash: binop("/", 10), + starstar: new TokenType("**", {beforeExpr: true}), + coalesce: binop("??", 1), + + // Keyword token types. + _break: kw("break"), + _case: kw("case", beforeExpr), + _catch: kw("catch"), + _continue: kw("continue"), + _debugger: kw("debugger"), + _default: kw("default", beforeExpr), + _do: kw("do", {isLoop: true, beforeExpr: true}), + _else: kw("else", beforeExpr), + _finally: kw("finally"), + _for: kw("for", {isLoop: true}), + _function: kw("function", startsExpr), + _if: kw("if"), + _return: kw("return", beforeExpr), + _switch: kw("switch"), + _throw: kw("throw", beforeExpr), + _try: kw("try"), + _var: kw("var"), + _const: kw("const"), + _while: kw("while", {isLoop: true}), + _with: kw("with"), + _new: kw("new", {beforeExpr: true, startsExpr: true}), + _this: kw("this", startsExpr), + _super: kw("super", startsExpr), + _class: kw("class", startsExpr), + _extends: kw("extends", beforeExpr), + _export: kw("export"), + _import: kw("import", startsExpr), + _null: kw("null", startsExpr), + _true: kw("true", startsExpr), + _false: kw("false", startsExpr), + _in: kw("in", {beforeExpr: true, binop: 7}), + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) }; - return data; -} + // Matches a whole line break (where CRLF is considered a single + // line break). Used to count lines. -var _options = __nccwpck_require__(14087); + var lineBreak = /\r\n?|\n|\u2028|\u2029/; + var lineBreakG = new RegExp(lineBreak.source, "g"); -var _patternToRegex = _interopRequireDefault(__nccwpck_require__(59056)); + function isNewLine(code) { + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 + } -var _printer = __nccwpck_require__(21489); + function nextLineBreak(code, from, end) { + if ( end === void 0 ) end = code.length; -var _files = __nccwpck_require__(53954); + for (var i = from; i < end; i++) { + var next = code.charCodeAt(i); + if (isNewLine(next)) + { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } + } + return -1 + } -var _caching = __nccwpck_require__(19315); + var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; -var _configDescriptors = __nccwpck_require__(5847); + var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + var ref = Object.prototype; + var hasOwnProperty = ref.hasOwnProperty; + var toString = ref.toString; -const debug = (0, _debug().default)("babel:config:config-chain"); + var hasOwn = Object.hasOwn || (function (obj, propName) { return ( + hasOwnProperty.call(obj, propName) + ); }); -function* buildPresetChain(arg, context) { - const chain = yield* buildPresetChainWalker(arg, context); - if (!chain) return null; - return { - plugins: dedupDescriptors(chain.plugins), - presets: dedupDescriptors(chain.presets), - options: chain.options.map(o => normalizeOptions(o)), - files: new Set() - }; -} + var isArray = Array.isArray || (function (obj) { return ( + toString.call(obj) === "[object Array]" + ); }); -const buildPresetChainWalker = makeChainWalker({ - root: preset => loadPresetDescriptors(preset), - env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName), - overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index), - overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName), - createLogger: () => () => {} -}); -exports.buildPresetChainWalker = buildPresetChainWalker; -const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors)); -const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName))); -const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index))); -const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName)))); + var regexpCache = Object.create(null); -function* buildRootChain(opts, context) { - let configReport, babelRcReport; - const programmaticLogger = new _printer.ConfigPrinter(); - const programmaticChain = yield* loadProgrammaticChain({ - options: opts, - dirname: context.cwd - }, context, undefined, programmaticLogger); - if (!programmaticChain) return null; - const programmaticReport = programmaticLogger.output(); - let configFile; + function wordsRegexp(words) { + return regexpCache[words] || (regexpCache[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")) + } - if (typeof opts.configFile === "string") { - configFile = yield* (0, _files.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller); - } else if (opts.configFile !== false) { - configFile = yield* (0, _files.findRootConfig)(context.root, context.envName, context.caller); + function codePointToString(code) { + // UTF-16 Decoding + if (code <= 0xFFFF) { return String.fromCharCode(code) } + code -= 0x10000; + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) } - let { - babelrc, - babelrcRoots - } = opts; - let babelrcRootsDirectory = context.cwd; - const configFileChain = emptyChain(); - const configFileLogger = new _printer.ConfigPrinter(); + var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; - if (configFile) { - const validatedFile = validateConfigFile(configFile); - const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger); - if (!result) return null; - configReport = configFileLogger.output(); + // These are used when `options.locations` is on, for the + // `startLoc` and `endLoc` properties. - if (babelrc === undefined) { - babelrc = validatedFile.options.babelrc; - } + var Position = function Position(line, col) { + this.line = line; + this.column = col; + }; - if (babelrcRoots === undefined) { - babelrcRootsDirectory = validatedFile.dirname; - babelrcRoots = validatedFile.options.babelrcRoots; - } + Position.prototype.offset = function offset (n) { + return new Position(this.line, this.column + n) + }; - mergeChain(configFileChain, result); - } + var SourceLocation = function SourceLocation(p, start, end) { + this.start = start; + this.end = end; + if (p.sourceFile !== null) { this.source = p.sourceFile; } + }; - const pkgData = typeof context.filename === "string" ? yield* (0, _files.findPackageData)(context.filename) : null; - let ignoreFile, babelrcFile; - let isIgnored = false; - const fileChain = emptyChain(); + // The `getLineInfo` function is mostly useful when the + // `locations` option is off (for performance reasons) and you + // want to find the line/column position for a given character + // offset. `input` should be the code string that the offset refers + // into. + + function getLineInfo(input, offset) { + for (var line = 1, cur = 0;;) { + var nextBreak = nextLineBreak(input, cur, offset); + if (nextBreak < 0) { return new Position(line, offset - cur) } + ++line; + cur = nextBreak; + } + } + + // A second argument must be given to configure the parser process. + // These options are recognized (only `ecmaVersion` is required): + + var defaultOptions = { + // `ecmaVersion` indicates the ECMAScript version to parse. Must be + // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 + // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` + // (the latest version the library supports). This influences + // support for strict mode, the set of reserved words, and support + // for new syntax features. + ecmaVersion: null, + // `sourceType` indicates the mode the code should be parsed in. + // Can be either `"script"` or `"module"`. This influences global + // strict mode and parsing of `import` and `export` declarations. + sourceType: "script", + // `onInsertedSemicolon` can be a callback that will be called when + // a semicolon is automatically inserted. It will be passed the + // position of the inserted semicolon as an offset, and if + // `locations` is enabled, it is given the location as a `{line, + // column}` object as second argument. + onInsertedSemicolon: null, + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for + // trailing commas. + onTrailingComma: null, + // By default, reserved words are only enforced if ecmaVersion >= 5. + // Set `allowReserved` to a boolean value to explicitly turn this on + // an off. When this option has the value "never", reserved words + // and keywords can also not be used as property names. + allowReserved: null, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program, and an import.meta expression + // in a script isn't considered an error. + allowImportExportEverywhere: false, + // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022. + // When enabled, await identifiers are allowed to appear at the top-level scope, + // but they are still not allowed in non-async functions. + allowAwaitOutsideFunction: null, + // When enabled, super identifiers are not constrained to + // appearing in methods and do not raise an error when they appear elsewhere. + allowSuperOutsideMethod: null, + // When enabled, hashbang directive in the beginning of file is + // allowed and treated as a line comment. Enabled by default when + // `ecmaVersion` >= 2023. + allowHashBang: false, + // By default, the parser will verify that private properties are + // only used in places where they are valid and have been declared. + // Set this to false to turn such checks off. + checkPrivateFields: true, + // When `locations` is on, `loc` properties holding objects with + // `start` and `end` properties in `{line, column}` form (with + // line being 1-based and column 0-based) will be attached to the + // nodes. + locations: false, + // A function can be passed as `onToken` option, which will + // cause Acorn to call that function with object in the same + // format as tokens returned from `tokenizer().getToken()`. Note + // that you are not allowed to call the parser from the + // callback—that will corrupt its internal state. + onToken: null, + // A function can be passed as `onComment` option, which will + // cause Acorn to call that function with `(block, text, start, + // end)` parameters whenever a comment is skipped. `block` is a + // boolean indicating whether this is a block (`/* */`) comment, + // `text` is the content of the comment, and `start` and `end` are + // character offsets that denote the start and end of the comment. + // When the `locations` option is on, two more parameters are + // passed, the full `{line, column}` locations of the start and + // end of the comments. Note that you are not allowed to call the + // parser from the callback—that will corrupt its internal state. + // When this option has an array as value, objects representing the + // comments are pushed to it. + onComment: null, + // Nodes have their start and end characters offsets recorded in + // `start` and `end` properties (directly on the node, rather than + // the `loc` object, which holds line/column data. To also add a + // [semi-standardized][range] `range` property holding a `[start, + // end]` array with the same numbers, set the `ranges` option to + // `true`. + // + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 + ranges: false, + // It is possible to parse multiple files into a single AST by + // passing the tree produced by parsing the first file as + // `program` option in subsequent parses. This will add the + // toplevel forms of the parsed file to the `Program` (top) node + // of an existing parse tree. + program: null, + // When `locations` is on, you can pass this to record the source + // file in every node's `loc` object. + sourceFile: null, + // This value, if given, is stored in every node, whether + // `locations` is on or off. + directSourceFile: null, + // When enabled, parenthesized expressions are represented by + // (non-standard) ParenthesizedExpression nodes + preserveParens: false + }; - if ((babelrc === true || babelrc === undefined) && pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) { - ({ - ignore: ignoreFile, - config: babelrcFile - } = yield* (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller)); + // Interpret and default an options object - if (ignoreFile) { - fileChain.files.add(ignoreFile.filepath); - } + var warnedAboutEcmaVersion = false; - if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) { - isIgnored = true; - } + function getOptions(opts) { + var options = {}; - if (babelrcFile && !isIgnored) { - const validatedFile = validateBabelrcFile(babelrcFile); - const babelrcLogger = new _printer.ConfigPrinter(); - const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger); + for (var opt in defaultOptions) + { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } - if (!result) { - isIgnored = true; - } else { - babelRcReport = babelrcLogger.output(); - mergeChain(fileChain, result); + if (options.ecmaVersion === "latest") { + options.ecmaVersion = 1e8; + } else if (options.ecmaVersion == null) { + if (!warnedAboutEcmaVersion && typeof console === "object" && console.warn) { + warnedAboutEcmaVersion = true; + console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future."); } + options.ecmaVersion = 11; + } else if (options.ecmaVersion >= 2015) { + options.ecmaVersion -= 2009; } - if (babelrcFile && isIgnored) { - fileChain.files.add(babelrcFile.filepath); - } - } - - if (context.showConfig) { - console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n")); - return null; - } + if (options.allowReserved == null) + { options.allowReserved = options.ecmaVersion < 5; } - const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain); - return { - plugins: isIgnored ? [] : dedupDescriptors(chain.plugins), - presets: isIgnored ? [] : dedupDescriptors(chain.presets), - options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)), - fileHandling: isIgnored ? "ignored" : "transpile", - ignore: ignoreFile || undefined, - babelrc: babelrcFile || undefined, - config: configFile || undefined, - files: chain.files - }; -} + if (!opts || opts.allowHashBang == null) + { options.allowHashBang = options.ecmaVersion >= 14; } -function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) { - if (typeof babelrcRoots === "boolean") return babelrcRoots; - const absoluteRoot = context.root; + if (isArray(options.onToken)) { + var tokens = options.onToken; + options.onToken = function (token) { return tokens.push(token); }; + } + if (isArray(options.onComment)) + { options.onComment = pushComment(options, options.onComment); } - if (babelrcRoots === undefined) { - return pkgData.directories.indexOf(absoluteRoot) !== -1; + return options } - let babelrcPatterns = babelrcRoots; - if (!Array.isArray(babelrcPatterns)) babelrcPatterns = [babelrcPatterns]; - babelrcPatterns = babelrcPatterns.map(pat => { - return typeof pat === "string" ? _path().default.resolve(babelrcRootsDirectory, pat) : pat; - }); + function pushComment(options, array) { + return function(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "Block" : "Line", + value: text, + start: start, + end: end + }; + if (options.locations) + { comment.loc = new SourceLocation(this, startLoc, endLoc); } + if (options.ranges) + { comment.range = [start, end]; } + array.push(comment); + } + } + + // Each scope gets a bitset that may contain these flags + var + SCOPE_TOP = 1, + SCOPE_FUNCTION = 2, + SCOPE_ASYNC = 4, + SCOPE_GENERATOR = 8, + SCOPE_ARROW = 16, + SCOPE_SIMPLE_CATCH = 32, + SCOPE_SUPER = 64, + SCOPE_DIRECT_SUPER = 128, + SCOPE_CLASS_STATIC_BLOCK = 256, + SCOPE_CLASS_FIELD_INIT = 512, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; + + function functionFlags(async, generator) { + return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) + } + + // Used in checkLVal* and declareName to determine the type of a binding + var + BIND_NONE = 0, // Not a binding + BIND_VAR = 1, // Var-style binding + BIND_LEXICAL = 2, // Let- or const-style binding + BIND_FUNCTION = 3, // Function declaration + BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding + BIND_OUTSIDE = 5; // Special case for function names as bound inside the function + + var Parser = function Parser(options, input, startPos) { + this.options = options = getOptions(options); + this.sourceFile = options.sourceFile; + this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); + var reserved = ""; + if (options.allowReserved !== true) { + reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3]; + if (options.sourceType === "module") { reserved += " await"; } + } + this.reservedWords = wordsRegexp(reserved); + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; + this.reservedWordsStrict = wordsRegexp(reservedStrict); + this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); + this.input = String(input); + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + this.containsEsc = false; - if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) { - return pkgData.directories.indexOf(absoluteRoot) !== -1; - } + // Set up token state - return babelrcPatterns.some(pat => { - if (typeof pat === "string") { - pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory); + // The current position of the tokenizer in the input. + if (startPos) { + this.pos = startPos; + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; + } else { + this.pos = this.lineStart = 0; + this.curLine = 1; } - return pkgData.directories.some(directory => { - return matchPattern(pat, babelrcRootsDirectory, directory, context); - }); - }); -} - -const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({ - filepath: file.filepath, - dirname: file.dirname, - options: (0, _options.validate)("configfile", file.options) -})); -const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({ - filepath: file.filepath, - dirname: file.dirname, - options: (0, _options.validate)("babelrcfile", file.options) -})); -const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({ - filepath: file.filepath, - dirname: file.dirname, - options: (0, _options.validate)("extendsfile", file.options) -})); -const loadProgrammaticChain = makeChainWalker({ - root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors), - env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName), - overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index), - overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName), - createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger) -}); -const loadFileChainWalker = makeChainWalker({ - root: file => loadFileDescriptors(file), - env: (file, envName) => loadFileEnvDescriptors(file)(envName), - overrides: (file, index) => loadFileOverridesDescriptors(file)(index), - overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName), - createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger) -}); - -function* loadFileChain(input, context, files, baseLogger) { - const chain = yield* loadFileChainWalker(input, context, files, baseLogger); - - if (chain) { - chain.files.add(input.filepath); - } - - return chain; -} + // Properties of the current token: + // Its type + this.type = types$1.eof; + // For tokens that include more information than their type, the value + this.value = null; + // Its start and end offset + this.start = this.end = this.pos; + // And, if locations are used, the {line, column} object + // corresponding to those offsets + this.startLoc = this.endLoc = this.curPosition(); -const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors)); -const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName))); -const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index))); -const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName)))); + // Position information for the previous token + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; -function buildFileLogger(filepath, context, baseLogger) { - if (!baseLogger) { - return () => {}; - } + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + this.context = this.initialContext(); + this.exprAllowed = true; - return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, { - filepath - }); -} + // Figure out if it's a module code. + this.inModule = options.sourceType === "module"; + this.strict = this.inModule || this.strictDirective(this.pos); -function buildRootDescriptors({ - dirname, - options -}, alias, descriptors) { - return descriptors(dirname, options, alias); -} + // Used to signify the start of a potential arrow function + this.potentialArrowAt = -1; + this.potentialArrowInForAwait = false; -function buildProgrammaticLogger(_, context, baseLogger) { - var _context$caller; + // Positions to delayed-check that yield/await does not exist in default parameters. + this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; + // Labels in scope. + this.labels = []; + // Thus-far undefined exports. + this.undefinedExports = Object.create(null); - if (!baseLogger) { - return () => {}; - } + // If enabled, skip leading hashbang line. + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") + { this.skipLineComment(2); } - return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, { - callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name - }); -} + // Scope tracking for duplicate variable names (see scope.js) + this.scopeStack = []; + this.enterScope(SCOPE_TOP); -function buildEnvDescriptors({ - dirname, - options -}, alias, descriptors, envName) { - const opts = options.env && options.env[envName]; - return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null; -} + // For RegExp validation + this.regexpState = null; -function buildOverrideDescriptors({ - dirname, - options -}, alias, descriptors, index) { - const opts = options.overrides && options.overrides[index]; - if (!opts) throw new Error("Assertion failure - missing override"); - return descriptors(dirname, opts, `${alias}.overrides[${index}]`); -} + // The stack of private names. + // Each element has two properties: 'declared' and 'used'. + // When it exited from the outermost class definition, all used private names must be declared. + this.privateNameStack = []; + }; -function buildOverrideEnvDescriptors({ - dirname, - options -}, alias, descriptors, index, envName) { - const override = options.overrides && options.overrides[index]; - if (!override) throw new Error("Assertion failure - missing override"); - const opts = override.env && override.env[envName]; - return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null; -} + var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; -function makeChainWalker({ - root, - env, - overrides, - overridesEnv, - createLogger -}) { - return function* (input, context, files = new Set(), baseLogger) { - const { - dirname - } = input; - const flattenedConfigs = []; - const rootOpts = root(input); - - if (configIsApplicable(rootOpts, dirname, context)) { - flattenedConfigs.push({ - config: rootOpts, - envName: undefined, - index: undefined - }); - const envOpts = env(input, context.envName); + Parser.prototype.parse = function parse () { + var node = this.options.program || this.startNode(); + this.nextToken(); + return this.parseTopLevel(node) + }; - if (envOpts && configIsApplicable(envOpts, dirname, context)) { - flattenedConfigs.push({ - config: envOpts, - envName: context.envName, - index: undefined - }); - } + prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; - (rootOpts.options.overrides || []).forEach((_, index) => { - const overrideOps = overrides(input, index); + prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; - if (configIsApplicable(overrideOps, dirname, context)) { - flattenedConfigs.push({ - config: overrideOps, - index, - envName: undefined - }); - const overrideEnvOpts = overridesEnv(input, index, context.envName); + prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; - if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) { - flattenedConfigs.push({ - config: overrideEnvOpts, - index, - envName: context.envName - }); - } - } - }); + prototypeAccessors.canAwait.get = function () { + for (var i = this.scopeStack.length - 1; i >= 0; i--) { + var ref = this.scopeStack[i]; + var flags = ref.flags; + if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false } + if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 } } + return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction + }; - if (flattenedConfigs.some(({ - config: { - options: { - ignore, - only - } - } - }) => shouldIgnore(context, ignore, only, dirname))) { - return null; - } + prototypeAccessors.allowSuper.get = function () { + var ref = this.currentThisScope(); + var flags = ref.flags; + return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod + }; - const chain = emptyChain(); - const logger = createLogger(input, context, baseLogger); + prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; - for (const { - config, - index, - envName - } of flattenedConfigs) { - if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) { - return null; - } + prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; - logger(config, index, envName); - mergeChainOpts(chain, config); + prototypeAccessors.allowNewDotTarget.get = function () { + for (var i = this.scopeStack.length - 1; i >= 0; i--) { + var ref = this.scopeStack[i]; + var flags = ref.flags; + if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) || + ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true } } - - return chain; + return false }; -} -function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) { - if (opts.extends === undefined) return true; - const file = yield* (0, _files.loadConfig)(opts.extends, dirname, context.envName, context.caller); - - if (files.has(file)) { - throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n")); - } - - files.add(file); - const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger); - files.delete(file); - if (!fileChain) return false; - mergeChain(chain, fileChain); - return true; -} - -function mergeChain(target, source) { - target.options.push(...source.options); - target.plugins.push(...source.plugins); - target.presets.push(...source.presets); - - for (const file of source.files) { - target.files.add(file); - } + prototypeAccessors.inClassStaticBlock.get = function () { + return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 + }; - return target; -} + Parser.extend = function extend () { + var plugins = [], len = arguments.length; + while ( len-- ) plugins[ len ] = arguments[ len ]; -function mergeChainOpts(target, { - options, - plugins, - presets -}) { - target.options.push(options); - target.plugins.push(...plugins()); - target.presets.push(...presets()); - return target; -} + var cls = this; + for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } + return cls + }; -function emptyChain() { - return { - options: [], - presets: [], - plugins: [], - files: new Set() + Parser.parse = function parse (input, options) { + return new this(options, input).parse() }; -} -function normalizeOptions(opts) { - const options = Object.assign({}, opts); - delete options.extends; - delete options.env; - delete options.overrides; - delete options.plugins; - delete options.presets; - delete options.passPerPreset; - delete options.ignore; - delete options.only; - delete options.test; - delete options.include; - delete options.exclude; + Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { + var parser = new this(options, input, pos); + parser.nextToken(); + return parser.parseExpression() + }; - if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) { - options.sourceMaps = options.sourceMap; - delete options.sourceMap; - } + Parser.tokenizer = function tokenizer (input, options) { + return new this(options, input) + }; - return options; -} + Object.defineProperties( Parser.prototype, prototypeAccessors ); -function dedupDescriptors(items) { - const map = new Map(); - const descriptors = []; + var pp$9 = Parser.prototype; - for (const item of items) { - if (typeof item.value === "function") { - const fnKey = item.value; - let nameMap = map.get(fnKey); + // ## Parser utilities - if (!nameMap) { - nameMap = new Map(); - map.set(fnKey, nameMap); - } + var literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/; + pp$9.strictDirective = function(start) { + if (this.options.ecmaVersion < 5) { return false } + for (;;) { + // Try to find string literal. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + var match = literal.exec(this.input.slice(start)); + if (!match) { return false } + if ((match[1] || match[2]) === "use strict") { + skipWhiteSpace.lastIndex = start + match[0].length; + var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length; + var next = this.input.charAt(end); + return next === ";" || next === "}" || + (lineBreak.test(spaceAfter[0]) && + !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=")) + } + start += match[0].length; + + // Skip semicolon, if any. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + if (this.input[start] === ";") + { start++; } + } + }; - let desc = nameMap.get(item.name); + // Predicate that tests whether the next token is of the given + // type, and if yes, consumes it as a side effect. - if (!desc) { - desc = { - value: item - }; - descriptors.push(desc); - if (!item.ownPass) nameMap.set(item.name, desc); - } else { - desc.value = item; - } + pp$9.eat = function(type) { + if (this.type === type) { + this.next(); + return true } else { - descriptors.push({ - value: item - }); + return false } - } - - return descriptors.reduce((acc, desc) => { - acc.push(desc.value); - return acc; - }, []); -} + }; -function configIsApplicable({ - options -}, dirname, context) { - return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname)); -} + // Tests whether parsed token is a contextual keyword. -function configFieldIsApplicable(context, test, dirname) { - const patterns = Array.isArray(test) ? test : [test]; - return matchesPatterns(context, patterns, dirname); -} + pp$9.isContextual = function(name) { + return this.type === types$1.name && this.value === name && !this.containsEsc + }; -function shouldIgnore(context, ignore, only, dirname) { - if (ignore && matchesPatterns(context, ignore, dirname)) { - var _context$filename; + // Consumes contextual keyword if possible. - const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore)}\` from "${dirname}"`; - debug(message); + pp$9.eatContextual = function(name) { + if (!this.isContextual(name)) { return false } + this.next(); + return true + }; - if (context.showConfig) { - console.log(message); - } + // Asserts that following token is given contextual keyword. - return true; - } + pp$9.expectContextual = function(name) { + if (!this.eatContextual(name)) { this.unexpected(); } + }; - if (only && !matchesPatterns(context, only, dirname)) { - var _context$filename2; + // Test whether a semicolon can be inserted at the current position. - const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only)}\` from "${dirname}"`; - debug(message); + pp$9.canInsertSemicolon = function() { + return this.type === types$1.eof || + this.type === types$1.braceR || + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + }; - if (context.showConfig) { - console.log(message); + pp$9.insertSemicolon = function() { + if (this.canInsertSemicolon()) { + if (this.options.onInsertedSemicolon) + { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } + return true } + }; - return true; - } + // Consume a semicolon, or, failing that, see if we are allowed to + // pretend that there is a semicolon at this position. - return false; -} + pp$9.semicolon = function() { + if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); } + }; -function matchesPatterns(context, patterns, dirname) { - return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context)); -} + pp$9.afterTrailingComma = function(tokType, notNext) { + if (this.type === tokType) { + if (this.options.onTrailingComma) + { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } + if (!notNext) + { this.next(); } + return true + } + }; -function matchPattern(pattern, dirname, pathToTest, context) { - if (typeof pattern === "function") { - return !!pattern(pathToTest, { - dirname, - envName: context.envName, - caller: context.caller - }); - } + // Expect a token of a given type. If found, consume it, otherwise, + // raise an unexpected token error. - if (typeof pathToTest !== "string") { - throw new Error(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`); - } + pp$9.expect = function(type) { + this.eat(type) || this.unexpected(); + }; - if (typeof pattern === "string") { - pattern = (0, _patternToRegex.default)(pattern, dirname); - } + // Raise an unexpected token error. - return pattern.test(pathToTest); -} + pp$9.unexpected = function(pos) { + this.raise(pos != null ? pos : this.start, "Unexpected token"); + }; -/***/ }), + var DestructuringErrors = function DestructuringErrors() { + this.shorthandAssign = + this.trailingComma = + this.parenthesizedAssign = + this.parenthesizedBind = + this.doubleProto = + -1; + }; -/***/ 5847: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { + if (!refDestructuringErrors) { return } + if (refDestructuringErrors.trailingComma > -1) + { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; + if (parens > -1) { this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern"); } + }; -"use strict"; + pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) { + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } + }; + pp$9.checkYieldAwaitInDefaultParams = function() { + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) + { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } + if (this.awaitPos) + { this.raise(this.awaitPos, "Await expression cannot be a default value"); } + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createCachedDescriptors = createCachedDescriptors; -exports.createUncachedDescriptors = createUncachedDescriptors; -exports.createDescriptor = createDescriptor; + pp$9.isSimpleAssignTarget = function(expr) { + if (expr.type === "ParenthesizedExpression") + { return this.isSimpleAssignTarget(expr.expression) } + return expr.type === "Identifier" || expr.type === "MemberExpression" + }; -var _files = __nccwpck_require__(53954); + var pp$8 = Parser.prototype; -var _item = __nccwpck_require__(58050); + // ### Statement parsing -var _caching = __nccwpck_require__(19315); + // Parse a program. Initializes the parser, reads any number of + // statements, and wraps them in a Program node. Optionally takes a + // `program` argument. If present, the statements will be appended + // to its body instead of creating a new node. -function isEqualDescriptor(a, b) { - return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved); -} + pp$8.parseTopLevel = function(node) { + var exports = Object.create(null); + if (!node.body) { node.body = []; } + while (this.type !== types$1.eof) { + var stmt = this.parseStatement(null, true, exports); + node.body.push(stmt); + } + if (this.inModule) + { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) + { + var name = list[i]; -function createCachedDescriptors(dirname, options, alias) { - const { - plugins, - presets, - passPerPreset - } = options; - return { - options, - plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => [], - presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => [] + this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); + } } + this.adaptDirectivePrologue(node.body); + this.next(); + node.sourceType = this.options.sourceType; + return this.finishNode(node, "Program") }; -} - -function createUncachedDescriptors(dirname, options, alias) { - let plugins; - let presets; - return { - options, - plugins: () => { - if (!plugins) { - plugins = createPluginDescriptors(options.plugins || [], dirname, alias); - } - return plugins; - }, - presets: () => { - if (!presets) { - presets = createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset); - } - - return presets; + var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; + + pp$8.isLet = function(context) { + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + // For ambiguous cases, determine if a LexicalDeclaration (or only a + // Statement) is allowed here. If context is not empty then only a Statement + // is allowed. However, `let [` is an explicit negative lookahead for + // ExpressionStatement, so special-case it first. + if (nextCh === 91 || nextCh === 92) { return true } // '[', '\' + if (context) { return false } + + if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral + if (isIdentifierStart(nextCh, true)) { + var pos = next + 1; + while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; } + if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } + var ident = this.input.slice(next, pos); + if (!keywordRelationalOperator.test(ident)) { return true } } + return false }; -} - -const PRESET_DESCRIPTOR_CACHE = new WeakMap(); -const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => { - const dirname = cache.using(dir => dir); - return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCacheSync)(passPerPreset => createPresetDescriptors(items, dirname, alias, passPerPreset).map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc)))); -}); -const PLUGIN_DESCRIPTOR_CACHE = new WeakMap(); -const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => { - const dirname = cache.using(dir => dir); - return (0, _caching.makeStrongCacheSync)(alias => createPluginDescriptors(items, dirname, alias).map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc))); -}); -const DEFAULT_OPTIONS = {}; - -function loadCachedDescriptor(cache, desc) { - const { - value, - options = DEFAULT_OPTIONS - } = desc; - if (options === false) return desc; - let cacheByOptions = cache.get(value); - - if (!cacheByOptions) { - cacheByOptions = new WeakMap(); - cache.set(value, cacheByOptions); - } - let possibilities = cacheByOptions.get(options); + // check 'async [no LineTerminator here] function' + // - 'async /*foo*/ function' is OK. + // - 'async /*\n*/ function' is invalid. + pp$8.isAsyncFunction = function() { + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) + { return false } + + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, after; + return !lineBreak.test(this.input.slice(this.pos, next)) && + this.input.slice(next, next + 8) === "function" && + (next + 8 === this.input.length || + !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00)) + }; - if (!possibilities) { - possibilities = []; - cacheByOptions.set(options, possibilities); - } + // Parse a single statement. + // + // If expecting a statement and finding a slash operator, parse a + // regular expression literal. This is to handle cases like + // `if (foo) /blah/.exec(foo)`, where looking at the previous token + // does not help. - if (possibilities.indexOf(desc) === -1) { - const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc)); + pp$8.parseStatement = function(context, topLevel, exports) { + var starttype = this.type, node = this.startNode(), kind; - if (matches.length > 0) { - return matches[0]; + if (this.isLet(context)) { + starttype = types$1._var; + kind = "let"; } - possibilities.push(desc); - } + // Most types of statements are recognized by the keyword they + // start with. Many are trivial to parse, some require a bit of + // complexity. - return desc; -} + switch (starttype) { + case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword) + case types$1._debugger: return this.parseDebuggerStatement(node) + case types$1._do: return this.parseDoStatement(node) + case types$1._for: return this.parseForStatement(node) + case types$1._function: + // Function as sole body of either an if statement or a labeled statement + // works, but not when it is part of a labeled statement that is the sole + // body of an if statement. + if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } + return this.parseFunctionStatement(node, false, !context) + case types$1._class: + if (context) { this.unexpected(); } + return this.parseClass(node, true) + case types$1._if: return this.parseIfStatement(node) + case types$1._return: return this.parseReturnStatement(node) + case types$1._switch: return this.parseSwitchStatement(node) + case types$1._throw: return this.parseThrowStatement(node) + case types$1._try: return this.parseTryStatement(node) + case types$1._const: case types$1._var: + kind = kind || this.value; + if (context && kind !== "var") { this.unexpected(); } + return this.parseVarStatement(node, kind) + case types$1._while: return this.parseWhileStatement(node) + case types$1._with: return this.parseWithStatement(node) + case types$1.braceL: return this.parseBlock(true, node) + case types$1.semi: return this.parseEmptyStatement(node) + case types$1._export: + case types$1._import: + if (this.options.ecmaVersion > 10 && starttype === types$1._import) { + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + if (nextCh === 40 || nextCh === 46) // '(' or '.' + { return this.parseExpressionStatement(node, this.parseExpression()) } + } + + if (!this.options.allowImportExportEverywhere) { + if (!topLevel) + { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } + if (!this.inModule) + { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } + } + return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports) + + // If the statement does not start with a statement keyword or a + // brace, it's an ExpressionStatement or LabeledStatement. We + // simply start parsing an expression, and afterwards, if the + // next token is a colon and the expression was a simple + // Identifier node, we switch to interpreting it as a label. + default: + if (this.isAsyncFunction()) { + if (context) { this.unexpected(); } + this.next(); + return this.parseFunctionStatement(node, true, !context) + } -function createPresetDescriptors(items, dirname, alias, passPerPreset) { - return createDescriptors("preset", items, dirname, alias, passPerPreset); -} + var maybeName = this.value, expr = this.parseExpression(); + if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) + { return this.parseLabeledStatement(node, maybeName, expr, context) } + else { return this.parseExpressionStatement(node, expr) } + } + }; -function createPluginDescriptors(items, dirname, alias) { - return createDescriptors("plugin", items, dirname, alias); -} + pp$8.parseBreakContinueStatement = function(node, keyword) { + var isBreak = keyword === "break"; + this.next(); + if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; } + else if (this.type !== types$1.name) { this.unexpected(); } + else { + node.label = this.parseIdent(); + this.semicolon(); + } -function createDescriptors(type, items, dirname, alias, ownPass) { - const descriptors = items.map((item, index) => createDescriptor(item, dirname, { - type, - alias: `${alias}$${index}`, - ownPass: !!ownPass - })); - assertNoDuplicates(descriptors); - return descriptors; -} + // Verify that there is an actual destination to break or + // continue to. + var i = 0; + for (; i < this.labels.length; ++i) { + var lab = this.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } + if (node.label && isBreak) { break } + } + } + if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") + }; -function createDescriptor(pair, dirname, { - type, - alias, - ownPass -}) { - const desc = (0, _item.getItemDescriptor)(pair); + pp$8.parseDebuggerStatement = function(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement") + }; - if (desc) { - return desc; - } + pp$8.parseDoStatement = function(node) { + this.next(); + this.labels.push(loopLabel); + node.body = this.parseStatement("do"); + this.labels.pop(); + this.expect(types$1._while); + node.test = this.parseParenExpression(); + if (this.options.ecmaVersion >= 6) + { this.eat(types$1.semi); } + else + { this.semicolon(); } + return this.finishNode(node, "DoWhileStatement") + }; - let name; - let options; - let value = pair; + // Disambiguating between a `for` and a `for`/`in` or `for`/`of` + // loop is non-trivial. Basically, we have to parse the init `var` + // statement or expression, disallowing the `in` operator (see + // the second parameter to `parseExpression`), and then check + // whether the next token is `in` or `of`. When there is no init + // part (semicolon immediately after the opening parenthesis), it + // is a regular `for` loop. - if (Array.isArray(value)) { - if (value.length === 3) { - [value, options, name] = value; - } else { - [value, options] = value; + pp$8.parseForStatement = function(node) { + this.next(); + var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await")) ? this.lastTokStart : -1; + this.labels.push(loopLabel); + this.enterScope(0); + this.expect(types$1.parenL); + if (this.type === types$1.semi) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, null) } - } + var isLet = this.isLet(); + if (this.type === types$1._var || this.type === types$1._const || isLet) { + var init$1 = this.startNode(), kind = isLet ? "let" : this.value; + this.next(); + this.parseVar(init$1, true, kind); + this.finishNode(init$1, "VariableDeclaration"); + if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types$1._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + return this.parseForIn(node, init$1) + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init$1) + } + var startsWithLet = this.isContextual("let"), isForOf = false; + var containsEsc = this.containsEsc; + var refDestructuringErrors = new DestructuringErrors; + var initPos = this.start; + var init = awaitAt > -1 + ? this.parseExprSubscripts(refDestructuringErrors, "await") + : this.parseExpression(true, refDestructuringErrors); + if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt) + if (this.type === types$1._in) { this.unexpected(awaitAt); } + node.await = true; + } else if (isForOf && this.options.ecmaVersion >= 8) { + if (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async") { this.unexpected(); } + else if (this.options.ecmaVersion >= 9) { node.await = false; } + } + if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } + this.toAssignable(init, false, refDestructuringErrors); + this.checkLValPattern(init); + return this.parseForIn(node, init) + } else { + this.checkExpressionErrors(refDestructuringErrors, true); + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init) + }; - let file = undefined; - let filepath = null; + pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) + }; - if (typeof value === "string") { - if (typeof type !== "string") { - throw new Error("To resolve a string-based item, the type of item must be given"); - } + pp$8.parseIfStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + // allow function declarations in branches, but only in non-strict mode + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement") + }; - const resolver = type === "plugin" ? _files.loadPlugin : _files.loadPreset; - const request = value; - ({ - filepath, - value - } = resolver(value, dirname)); - file = { - request, - resolved: filepath - }; - } + pp$8.parseReturnStatement = function(node) { + if (!this.inFunction && !this.options.allowReturnOutsideFunction) + { this.raise(this.start, "'return' outside of function"); } + this.next(); - if (!value) { - throw new Error(`Unexpected falsy value: ${String(value)}`); - } + // In `return` (and `break`/`continue`), the keywords with + // optional arguments, we eagerly look for a semicolon or the + // possibility to insert one. - if (typeof value === "object" && value.__esModule) { - if (value.default) { - value = value.default; - } else { - throw new Error("Must export a default export when using ES6 modules."); + if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; } + else { node.argument = this.parseExpression(); this.semicolon(); } + return this.finishNode(node, "ReturnStatement") + }; + + pp$8.parseSwitchStatement = function(node) { + this.next(); + node.discriminant = this.parseParenExpression(); + node.cases = []; + this.expect(types$1.braceL); + this.labels.push(switchLabel); + this.enterScope(0); + + // Statements under must be grouped (by label) in SwitchCase + // nodes. `cur` is used to keep the node that we are currently + // adding statements to. + + var cur; + for (var sawDefault = false; this.type !== types$1.braceR;) { + if (this.type === types$1._case || this.type === types$1._default) { + var isCase = this.type === types$1._case; + if (cur) { this.finishNode(cur, "SwitchCase"); } + node.cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } + sawDefault = true; + cur.test = null; + } + this.expect(types$1.colon); + } else { + if (!cur) { this.unexpected(); } + cur.consequent.push(this.parseStatement(null)); + } } - } + this.exitScope(); + if (cur) { this.finishNode(cur, "SwitchCase"); } + this.next(); // Closing brace + this.labels.pop(); + return this.finishNode(node, "SwitchStatement") + }; - if (typeof value !== "object" && typeof value !== "function") { - throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`); - } + pp$8.parseThrowStatement = function(node) { + this.next(); + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) + { this.raise(this.lastTokEnd, "Illegal newline after throw"); } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement") + }; - if (filepath !== null && typeof value === "object" && value) { - throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`); - } + // Reused empty array added for node fields that are always empty. - return { - name, - alias: filepath || alias, - value, - options, - dirname, - ownPass, - file - }; -} + var empty$1 = []; -function assertNoDuplicates(items) { - const map = new Map(); + pp$8.parseCatchClauseParam = function() { + var param = this.parseBindingAtom(); + var simple = param.type === "Identifier"; + this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); + this.expect(types$1.parenR); - for (const item of items) { - if (typeof item.value !== "function") continue; - let nameMap = map.get(item.value); + return param + }; - if (!nameMap) { - nameMap = new Set(); - map.set(item.value, nameMap); + pp$8.parseTryStatement = function(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.type === types$1._catch) { + var clause = this.startNode(); + this.next(); + if (this.eat(types$1.parenL)) { + clause.param = this.parseCatchClauseParam(); + } else { + if (this.options.ecmaVersion < 10) { this.unexpected(); } + clause.param = null; + this.enterScope(0); + } + clause.body = this.parseBlock(false); + this.exitScope(); + node.handler = this.finishNode(clause, "CatchClause"); } + node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) + { this.raise(node.start, "Missing catch or finally clause"); } + return this.finishNode(node, "TryStatement") + }; - if (nameMap.has(item.name)) { - const conflicts = items.filter(i => i.value === item.value); - throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n")); - } + pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration") + }; - nameMap.add(item.name); - } -} + pp$8.parseWhileStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + this.labels.push(loopLabel); + node.body = this.parseStatement("while"); + this.labels.pop(); + return this.finishNode(node, "WhileStatement") + }; -/***/ }), + pp$8.parseWithStatement = function(node) { + if (this.strict) { this.raise(this.start, "'with' in strict mode"); } + this.next(); + node.object = this.parseParenExpression(); + node.body = this.parseStatement("with"); + return this.finishNode(node, "WithStatement") + }; -/***/ 37118: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + pp$8.parseEmptyStatement = function(node) { + this.next(); + return this.finishNode(node, "EmptyStatement") + }; -"use strict"; + pp$8.parseLabeledStatement = function(node, maybeName, expr, context) { + for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) + { + var label = list[i$1]; + + if (label.name === maybeName) + { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); + } } + var kind = this.type.isLoop ? "loop" : this.type === types$1._switch ? "switch" : null; + for (var i = this.labels.length - 1; i >= 0; i--) { + var label$1 = this.labels[i]; + if (label$1.statementStart === node.start) { + // Update information about previous labels on this node + label$1.statementStart = this.start; + label$1.kind = kind; + } else { break } + } + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement") + }; + pp$8.parseExpressionStatement = function(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement") + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.findConfigUpwards = findConfigUpwards; -exports.findRelativeConfig = findRelativeConfig; -exports.findRootConfig = findRootConfig; -exports.loadConfig = loadConfig; -exports.resolveShowConfigPath = resolveShowConfigPath; -exports.ROOT_CONFIG_FILENAMES = void 0; + // Parse a semicolon-enclosed block of statements, handling `"use + // strict"` declarations when `allowStrict` is true (used for + // function bodies). -function _debug() { - const data = _interopRequireDefault(__nccwpck_require__(67984)); + pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) { + if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; + if ( node === void 0 ) node = this.startNode(); - _debug = function () { - return data; + node.body = []; + this.expect(types$1.braceL); + if (createNewLexicalScope) { this.enterScope(0); } + while (this.type !== types$1.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + if (exitStrict) { this.strict = false; } + this.next(); + if (createNewLexicalScope) { this.exitScope(); } + return this.finishNode(node, "BlockStatement") }; - return data; -} - -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + // Parse a regular `for` loop. The disambiguation code in + // `parseStatement` will already have parsed the init statement or + // expression. - _path = function () { - return data; + pp$8.parseFor = function(node, init) { + node.init = init; + this.expect(types$1.semi); + node.test = this.type === types$1.semi ? null : this.parseExpression(); + this.expect(types$1.semi); + node.update = this.type === types$1.parenR ? null : this.parseExpression(); + this.expect(types$1.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, "ForStatement") }; - return data; -} + // Parse a `for`/`in` and `for`/`of` loop, which are almost + // same from parser's perspective. -function _json() { - const data = _interopRequireDefault(__nccwpck_require__(25130)); + pp$8.parseForIn = function(node, init) { + var isForIn = this.type === types$1._in; + this.next(); - _json = function () { - return data; + if ( + init.type === "VariableDeclaration" && + init.declarations[0].init != null && + ( + !isForIn || + this.options.ecmaVersion < 8 || + this.strict || + init.kind !== "var" || + init.declarations[0].id.type !== "Identifier" + ) + ) { + this.raise( + init.start, + ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") + ); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + this.expect(types$1.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") }; - return data; -} - -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + // Parse a list of variable declarations. - _gensync = function () { - return data; + pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) { + node.declarations = []; + node.kind = kind; + for (;;) { + var decl = this.startNode(); + this.parseVarId(decl, kind); + if (this.eat(types$1.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else if (!allowMissingInitializer && kind === "const" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { + this.unexpected(); + } else if (!allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of")))) { + this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); + } else { + decl.init = null; + } + node.declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types$1.comma)) { break } + } + return node }; - return data; -} + pp$8.parseVarId = function(decl, kind) { + decl.id = this.parseBindingAtom(); + this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); + }; -var _caching = __nccwpck_require__(19315); + var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; -var _configApi = _interopRequireDefault(__nccwpck_require__(7785)); + // Parse a function declaration or literal (depending on the + // `statement & FUNC_STATEMENT`). -var _utils = __nccwpck_require__(87336); + // Remove `allowExpressionBody` for 7.0.0, as it is only called with false + pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { + this.initFunction(node); + if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { + if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT)) + { this.unexpected(); } + node.generator = this.eat(types$1.star); + } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } -var _moduleTypes = _interopRequireDefault(__nccwpck_require__(92386)); + if (statement & FUNC_STATEMENT) { + node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent(); + if (node.id && !(statement & FUNC_HANGING_STATEMENT)) + // If it is a regular function declaration in sloppy mode, then it is + // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding + // mode depends on properties of the current scope (see + // treatFunctionsAsVar). + { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } + } -var _patternToRegex = _interopRequireDefault(__nccwpck_require__(59056)); + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(node.async, node.generator)); -var fs = _interopRequireWildcard(__nccwpck_require__(6524)); + if (!(statement & FUNC_STATEMENT)) + { node.id = this.type === types$1.name ? this.parseIdent() : null; } -var _resolve = _interopRequireDefault(__nccwpck_require__(97199)); + this.parseFunctionParams(node); + this.parseFunctionBody(node, allowExpressionBody, false, forInit); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") + }; -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + pp$8.parseFunctionParams = function(node) { + this.expect(types$1.parenL); + node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + // Parse a class declaration or literal (depending on the + // `isStatement` parameter). -const debug = (0, _debug().default)("babel:config:loading:files:configuration"); -const ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json"]; -exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES; -const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json"]; -const BABELIGNORE_FILENAME = ".babelignore"; + pp$8.parseClass = function(node, isStatement) { + this.next(); -function* findConfigUpwards(rootDir) { - let dirname = rootDir; + // ecma-262 14.6 Class Definitions + // A class definition is always strict mode code. + var oldStrict = this.strict; + this.strict = true; - while (true) { - for (const filename of ROOT_CONFIG_FILENAMES) { - if (yield* fs.exists(_path().default.join(dirname, filename))) { - return dirname; + this.parseClassId(node, isStatement); + this.parseClassSuper(node); + var privateNameMap = this.enterClassBody(); + var classBody = this.startNode(); + var hadConstructor = false; + classBody.body = []; + this.expect(types$1.braceL); + while (this.type !== types$1.braceR) { + var element = this.parseClassElement(node.superClass !== null); + if (element) { + classBody.body.push(element); + if (element.type === "MethodDefinition" && element.kind === "constructor") { + if (hadConstructor) { this.raiseRecoverable(element.start, "Duplicate constructor in the same class"); } + hadConstructor = true; + } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { + this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); + } } } + this.strict = oldStrict; + this.next(); + node.body = this.finishNode(classBody, "ClassBody"); + this.exitClassBody(); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") + }; - const nextDir = _path().default.dirname(dirname); + pp$8.parseClassElement = function(constructorAllowsSuper) { + if (this.eat(types$1.semi)) { return null } + + var ecmaVersion = this.options.ecmaVersion; + var node = this.startNode(); + var keyName = ""; + var isGenerator = false; + var isAsync = false; + var kind = "method"; + var isStatic = false; + + if (this.eatContextual("static")) { + // Parse static init block + if (ecmaVersion >= 13 && this.eat(types$1.braceL)) { + this.parseClassStaticBlock(node); + return node + } + if (this.isClassElementNameStart() || this.type === types$1.star) { + isStatic = true; + } else { + keyName = "static"; + } + } + node.static = isStatic; + if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { + if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) { + isAsync = true; + } else { + keyName = "async"; + } + } + if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) { + isGenerator = true; + } + if (!keyName && !isAsync && !isGenerator) { + var lastValue = this.value; + if (this.eatContextual("get") || this.eatContextual("set")) { + if (this.isClassElementNameStart()) { + kind = lastValue; + } else { + keyName = lastValue; + } + } + } - if (dirname === nextDir) break; - dirname = nextDir; - } + // Parse element name + if (keyName) { + // 'async', 'get', 'set', or 'static' were not a keyword contextually. + // The last token is any of those. Make it the element name. + node.computed = false; + node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc); + node.key.name = keyName; + this.finishNode(node.key, "Identifier"); + } else { + this.parseClassElementName(node); + } - return null; -} + // Parse element value + if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== "method" || isGenerator || isAsync) { + var isConstructor = !node.static && checkKeyName(node, "constructor"); + var allowsDirectSuper = isConstructor && constructorAllowsSuper; + // Couldn't move this check into the 'parseClassMethod' method for backward compatibility. + if (isConstructor && kind !== "method") { this.raise(node.key.start, "Constructor can't have get/set modifier"); } + node.kind = isConstructor ? "constructor" : kind; + this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper); + } else { + this.parseClassField(node); + } -function* findRelativeConfig(packageData, envName, caller) { - let config = null; - let ignore = null; + return node + }; - const dirname = _path().default.dirname(packageData.filepath); + pp$8.isClassElementNameStart = function() { + return ( + this.type === types$1.name || + this.type === types$1.privateId || + this.type === types$1.num || + this.type === types$1.string || + this.type === types$1.bracketL || + this.type.keyword + ) + }; - for (const loc of packageData.directories) { - if (!config) { - var _packageData$pkg; + pp$8.parseClassElementName = function(element) { + if (this.type === types$1.privateId) { + if (this.value === "constructor") { + this.raise(this.start, "Classes can't have an element named '#constructor'"); + } + element.computed = false; + element.key = this.parsePrivateIdent(); + } else { + this.parsePropertyName(element); + } + }; - config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null); + pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { + // Check key and flags + var key = method.key; + if (method.kind === "constructor") { + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + } else if (method.static && checkKeyName(method, "prototype")) { + this.raise(key.start, "Classes may not have a static property named prototype"); } - if (!ignore) { - const ignoreLoc = _path().default.join(loc, BABELIGNORE_FILENAME); + // Parse value + var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); - ignore = yield* readIgnoreConfig(ignoreLoc); + // Check value + if (method.kind === "get" && value.params.length !== 0) + { this.raiseRecoverable(value.start, "getter should have no params"); } + if (method.kind === "set" && value.params.length !== 1) + { this.raiseRecoverable(value.start, "setter should have exactly one param"); } + if (method.kind === "set" && value.params[0].type === "RestElement") + { this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"); } - if (ignore) { - debug("Found ignore %o from %o.", ignore.filepath, dirname); - } + return this.finishNode(method, "MethodDefinition") + }; + + pp$8.parseClassField = function(field) { + if (checkKeyName(field, "constructor")) { + this.raise(field.key.start, "Classes can't have a field named 'constructor'"); + } else if (field.static && checkKeyName(field, "prototype")) { + this.raise(field.key.start, "Classes can't have a static field named 'prototype'"); } - } - return { - config, - ignore + if (this.eat(types$1.eq)) { + // To raise SyntaxError if 'arguments' exists in the initializer. + this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER); + field.value = this.parseMaybeAssign(); + this.exitScope(); + } else { + field.value = null; + } + this.semicolon(); + + return this.finishNode(field, "PropertyDefinition") }; -} -function findRootConfig(dirname, envName, caller) { - return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller); -} + pp$8.parseClassStaticBlock = function(node) { + node.body = []; -function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) { - const configs = yield* _gensync().default.all(names.map(filename => readConfig(_path().default.join(dirname, filename), envName, caller))); - const config = configs.reduce((previousConfig, config) => { - if (config && previousConfig) { - throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`); + var oldLabels = this.labels; + this.labels = []; + this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); + while (this.type !== types$1.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); } + this.next(); + this.exitScope(); + this.labels = oldLabels; - return config || previousConfig; - }, previousConfig); - - if (config) { - debug("Found configuration %o from %o.", config.filepath, dirname); - } + return this.finishNode(node, "StaticBlock") + }; - return config; -} + pp$8.parseClassId = function(node, isStatement) { + if (this.type === types$1.name) { + node.id = this.parseIdent(); + if (isStatement) + { this.checkLValSimple(node.id, BIND_LEXICAL, false); } + } else { + if (isStatement === true) + { this.unexpected(); } + node.id = null; + } + }; -function* loadConfig(name, dirname, envName, caller) { - const filepath = yield* (0, _resolve.default)(name, { - basedir: dirname - }); - const conf = yield* readConfig(filepath, envName, caller); + pp$8.parseClassSuper = function(node) { + node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null; + }; - if (!conf) { - throw new Error(`Config file ${filepath} contains no configuration data`); - } + pp$8.enterClassBody = function() { + var element = {declared: Object.create(null), used: []}; + this.privateNameStack.push(element); + return element.declared + }; - debug("Loaded config %o from %o.", name, dirname); - return conf; -} + pp$8.exitClassBody = function() { + var ref = this.privateNameStack.pop(); + var declared = ref.declared; + var used = ref.used; + if (!this.options.checkPrivateFields) { return } + var len = this.privateNameStack.length; + var parent = len === 0 ? null : this.privateNameStack[len - 1]; + for (var i = 0; i < used.length; ++i) { + var id = used[i]; + if (!hasOwn(declared, id.name)) { + if (parent) { + parent.used.push(id); + } else { + this.raiseRecoverable(id.start, ("Private field '#" + (id.name) + "' must be declared in an enclosing class")); + } + } + } + }; -function readConfig(filepath, envName, caller) { - const ext = _path().default.extname(filepath); + function isPrivateNameConflicted(privateNameMap, element) { + var name = element.key.name; + var curr = privateNameMap[name]; - return ext === ".js" || ext === ".cjs" || ext === ".mjs" ? readConfigJS(filepath, { - envName, - caller - }) : readConfigJSON5(filepath); -} + var next = "true"; + if (element.type === "MethodDefinition" && (element.kind === "get" || element.kind === "set")) { + next = (element.static ? "s" : "i") + element.kind; + } -const LOADING_CONFIGS = new Set(); -const readConfigJS = (0, _caching.makeStrongCache)(function* readConfigJS(filepath, cache) { - if (!fs.exists.sync(filepath)) { - cache.forever(); - return null; + // `class { get #a(){}; static set #a(_){} }` is also conflict. + if ( + curr === "iget" && next === "iset" || + curr === "iset" && next === "iget" || + curr === "sget" && next === "sset" || + curr === "sset" && next === "sget" + ) { + privateNameMap[name] = "true"; + return false + } else if (!curr) { + privateNameMap[name] = next; + return false + } else { + return true + } } - if (LOADING_CONFIGS.has(filepath)) { - cache.never(); - debug("Auto-ignoring usage of config %o.", filepath); - return { - filepath, - dirname: _path().default.dirname(filepath), - options: {} - }; + function checkKeyName(node, name) { + var computed = node.computed; + var key = node.key; + return !computed && ( + key.type === "Identifier" && key.name === name || + key.type === "Literal" && key.value === name + ) } - let options; - - try { - LOADING_CONFIGS.add(filepath); - options = yield* (0, _moduleTypes.default)(filepath, "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously."); - } catch (err) { - err.message = `${filepath}: Error while loading config - ${err.message}`; - throw err; - } finally { - LOADING_CONFIGS.delete(filepath); - } + // Parses module export declaration. - let assertCache = false; + pp$8.parseExportAllDeclaration = function(node, exports) { + if (this.options.ecmaVersion >= 11) { + if (this.eatContextual("as")) { + node.exported = this.parseModuleExportName(); + this.checkExport(exports, node.exported, this.lastTokStart); + } else { + node.exported = null; + } + } + this.expectContextual("from"); + if (this.type !== types$1.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + if (this.options.ecmaVersion >= 16) + { node.attributes = this.parseWithClause(); } + this.semicolon(); + return this.finishNode(node, "ExportAllDeclaration") + }; - if (typeof options === "function") { - yield* []; - options = options((0, _configApi.default)(cache)); - assertCache = true; - } + pp$8.parseExport = function(node, exports) { + this.next(); + // export * from '...' + if (this.eat(types$1.star)) { + return this.parseExportAllDeclaration(node, exports) + } + if (this.eat(types$1._default)) { // export default ... + this.checkExport(exports, "default", this.lastTokStart); + node.declaration = this.parseExportDefaultDeclaration(); + return this.finishNode(node, "ExportDefaultDeclaration") + } + // export var|const|let|function|class ... + if (this.shouldParseExportStatement()) { + node.declaration = this.parseExportDeclaration(node); + if (node.declaration.type === "VariableDeclaration") + { this.checkVariableExport(exports, node.declaration.declarations); } + else + { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } + node.specifiers = []; + node.source = null; + if (this.options.ecmaVersion >= 16) + { node.attributes = []; } + } else { // export { x, y as z } [from '...'] + node.declaration = null; + node.specifiers = this.parseExportSpecifiers(exports); + if (this.eatContextual("from")) { + if (this.type !== types$1.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + if (this.options.ecmaVersion >= 16) + { node.attributes = this.parseWithClause(); } + } else { + for (var i = 0, list = node.specifiers; i < list.length; i += 1) { + // check for keywords used as local names + var spec = list[i]; - if (!options || typeof options !== "object" || Array.isArray(options)) { - throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`); - } + this.checkUnreserved(spec.local); + // check if export is defined + this.checkLocalExport(spec.local); - if (typeof options.then === "function") { - throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`); - } + if (spec.local.type === "Literal") { + this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); + } + } - if (assertCache && !cache.configured()) throwConfigError(); - return { - filepath, - dirname: _path().default.dirname(filepath), - options + node.source = null; + if (this.options.ecmaVersion >= 16) + { node.attributes = []; } + } + this.semicolon(); + } + return this.finishNode(node, "ExportNamedDeclaration") }; -}); -const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => { - const babel = file.options["babel"]; - if (typeof babel === "undefined") return null; - - if (typeof babel !== "object" || Array.isArray(babel) || babel === null) { - throw new Error(`${file.filepath}: .babel property must be an object`); - } - return { - filepath: file.filepath, - dirname: file.dirname, - options: babel + pp$8.parseExportDeclaration = function(node) { + return this.parseStatement(null) }; -}); -const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => { - let options; - - try { - options = _json().default.parse(content); - } catch (err) { - err.message = `${filepath}: Error while parsing config - ${err.message}`; - throw err; - } - if (!options) throw new Error(`${filepath}: No config detected`); - - if (typeof options !== "object") { - throw new Error(`${filepath}: Config returned typeof ${typeof options}`); - } + pp$8.parseExportDefaultDeclaration = function() { + var isAsync; + if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) { + var fNode = this.startNode(); + this.next(); + if (isAsync) { this.next(); } + return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync) + } else if (this.type === types$1._class) { + var cNode = this.startNode(); + return this.parseClass(cNode, "nullableID") + } else { + var declaration = this.parseMaybeAssign(); + this.semicolon(); + return declaration + } + }; - if (Array.isArray(options)) { - throw new Error(`${filepath}: Expected config object but found array`); - } + pp$8.checkExport = function(exports, name, pos) { + if (!exports) { return } + if (typeof name !== "string") + { name = name.type === "Identifier" ? name.name : name.value; } + if (hasOwn(exports, name)) + { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } + exports[name] = true; + }; - return { - filepath, - dirname: _path().default.dirname(filepath), - options + pp$8.checkPatternExport = function(exports, pat) { + var type = pat.type; + if (type === "Identifier") + { this.checkExport(exports, pat, pat.start); } + else if (type === "ObjectPattern") + { for (var i = 0, list = pat.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkPatternExport(exports, prop); + } } + else if (type === "ArrayPattern") + { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { + var elt = list$1[i$1]; + + if (elt) { this.checkPatternExport(exports, elt); } + } } + else if (type === "Property") + { this.checkPatternExport(exports, pat.value); } + else if (type === "AssignmentPattern") + { this.checkPatternExport(exports, pat.left); } + else if (type === "RestElement") + { this.checkPatternExport(exports, pat.argument); } }; -}); -const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => { - const ignoreDir = _path().default.dirname(filepath); - const ignorePatterns = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line); + pp$8.checkVariableExport = function(exports, decls) { + if (!exports) { return } + for (var i = 0, list = decls; i < list.length; i += 1) + { + var decl = list[i]; - for (const pattern of ignorePatterns) { - if (pattern[0] === "!") { - throw new Error(`Negation of file paths is not supported.`); + this.checkPatternExport(exports, decl.id); } - } + }; - return { - filepath, - dirname: _path().default.dirname(filepath), - ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir)) + pp$8.shouldParseExportStatement = function() { + return this.type.keyword === "var" || + this.type.keyword === "const" || + this.type.keyword === "class" || + this.type.keyword === "function" || + this.isLet() || + this.isAsyncFunction() }; -}); -function* resolveShowConfigPath(dirname) { - const targetPath = process.env.BABEL_SHOW_CONFIG_FOR; + // Parses a comma-separated list of module exports. - if (targetPath != null) { - const absolutePath = _path().default.resolve(dirname, targetPath); + pp$8.parseExportSpecifier = function(exports) { + var node = this.startNode(); + node.local = this.parseModuleExportName(); - const stats = yield* fs.stat(absolutePath); + node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; + this.checkExport( + exports, + node.exported, + node.exported.start + ); + + return this.finishNode(node, "ExportSpecifier") + }; + + pp$8.parseExportSpecifiers = function(exports) { + var nodes = [], first = true; + // export { x, y as z } [from '...'] + this.expect(types$1.braceL); + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } - if (!stats.isFile()) { - throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`); + nodes.push(this.parseExportSpecifier(exports)); } + return nodes + }; - return absolutePath; - } + // Parses import declaration. - return null; -} + pp$8.parseImport = function(node) { + this.next(); -function throwConfigError() { - throw new Error(`\ -Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured -for various types of caching, using the first param of their handler functions: + // import '...' + if (this.type === types$1.string) { + node.specifiers = empty$1; + node.source = this.parseExprAtom(); + } else { + node.specifiers = this.parseImportSpecifiers(); + this.expectContextual("from"); + node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected(); + } + if (this.options.ecmaVersion >= 16) + { node.attributes = this.parseWithClause(); } + this.semicolon(); + return this.finishNode(node, "ImportDeclaration") + }; -module.exports = function(api) { - // The API exposes the following: + // Parses a comma-separated list of module imports. - // Cache the returned value forever and don't call this function again. - api.cache(true); + pp$8.parseImportSpecifier = function() { + var node = this.startNode(); + node.imported = this.parseModuleExportName(); - // Don't cache at all. Not recommended because it will be very slow. - api.cache(false); + if (this.eatContextual("as")) { + node.local = this.parseIdent(); + } else { + this.checkUnreserved(node.imported); + node.local = node.imported; + } + this.checkLValSimple(node.local, BIND_LEXICAL); - // Cached based on the value of some function. If this function returns a value different from - // a previously-encountered value, the plugins will re-evaluate. - var env = api.cache(() => process.env.NODE_ENV); + return this.finishNode(node, "ImportSpecifier") + }; - // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for - // any possible NODE_ENV value that might come up during plugin execution. - var isProd = api.cache(() => process.env.NODE_ENV === "production"); + pp$8.parseImportDefaultSpecifier = function() { + // import defaultObj, { x, y as z } from '...' + var node = this.startNode(); + node.local = this.parseIdent(); + this.checkLValSimple(node.local, BIND_LEXICAL); + return this.finishNode(node, "ImportDefaultSpecifier") + }; - // .cache(fn) will perform a linear search though instances to find the matching plugin based - // based on previous instantiated plugins. If you want to recreate the plugin and discard the - // previous instance whenever something changes, you may use: - var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production"); + pp$8.parseImportNamespaceSpecifier = function() { + var node = this.startNode(); + this.next(); + this.expectContextual("as"); + node.local = this.parseIdent(); + this.checkLValSimple(node.local, BIND_LEXICAL); + return this.finishNode(node, "ImportNamespaceSpecifier") + }; - // Note, we also expose the following more-verbose versions of the above examples: - api.cache.forever(); // api.cache(true) - api.cache.never(); // api.cache(false) - api.cache.using(fn); // api.cache(fn) + pp$8.parseImportSpecifiers = function() { + var nodes = [], first = true; + if (this.type === types$1.name) { + nodes.push(this.parseImportDefaultSpecifier()); + if (!this.eat(types$1.comma)) { return nodes } + } + if (this.type === types$1.star) { + nodes.push(this.parseImportNamespaceSpecifier()); + return nodes + } + this.expect(types$1.braceL); + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } - // Return the value that will be cached. - return { }; -};`); -} + nodes.push(this.parseImportSpecifier()); + } + return nodes + }; -/***/ }), + pp$8.parseWithClause = function() { + var nodes = []; + if (!this.eat(types$1._with)) { + return nodes + } + this.expect(types$1.braceL); + var attributeKeys = {}; + var first = true; + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } -/***/ 65678: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + var attr = this.parseImportAttribute(); + var keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value; + if (hasOwn(attributeKeys, keyName)) + { this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"); } + attributeKeys[keyName] = true; + nodes.push(attr); + } + return nodes + }; -"use strict"; -var __webpack_unused_export__; + pp$8.parseImportAttribute = function() { + var node = this.startNode(); + node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"); + this.expect(types$1.colon); + if (this.type !== types$1.string) { + this.unexpected(); + } + node.value = this.parseExprAtom(); + return this.finishNode(node, "ImportAttribute") + }; + pp$8.parseModuleExportName = function() { + if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { + var stringLiteral = this.parseLiteral(this.value); + if (loneSurrogate.test(stringLiteral.value)) { + this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); + } + return stringLiteral + } + return this.parseIdent(true) + }; -__webpack_unused_export__ = ({ - value: true -}); -exports.Z = import_; + // Set `ExpressionStatement#directive` property for directive prologues. + pp$8.adaptDirectivePrologue = function(statements) { + for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { + statements[i].directive = statements[i].expression.raw.slice(1, -1); + } + }; + pp$8.isDirectiveCandidate = function(statement) { + return ( + this.options.ecmaVersion >= 5 && + statement.type === "ExpressionStatement" && + statement.expression.type === "Literal" && + typeof statement.expression.value === "string" && + // Reject parenthesized strings. + (this.input[statement.start] === "\"" || this.input[statement.start] === "'") + ) + }; -function import_(filepath) { - return __nccwpck_require__(54039)(filepath); -} + var pp$7 = Parser.prototype; -/***/ }), + // Convert existing expression atom to assignable pattern + // if possible. -/***/ 53954: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) { + if (this.options.ecmaVersion >= 6 && node) { + switch (node.type) { + case "Identifier": + if (this.inAsync && node.name === "await") + { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } + break -"use strict"; + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break + case "ObjectExpression": + node.type = "ObjectPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) { + var prop = list[i]; + + this.toAssignable(prop, isBinding); + // Early error: + // AssignmentRestProperty[Yield, Await] : + // `...` DestructuringAssignmentTarget[Yield, Await] + // + // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. + if ( + prop.type === "RestElement" && + (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") + ) { + this.raise(prop.argument.start, "Unexpected token"); + } + } + break -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "findPackageData", ({ - enumerable: true, - get: function () { - return _package.findPackageData; - } -})); -Object.defineProperty(exports, "findConfigUpwards", ({ - enumerable: true, - get: function () { - return _configuration.findConfigUpwards; - } -})); -Object.defineProperty(exports, "findRelativeConfig", ({ - enumerable: true, - get: function () { - return _configuration.findRelativeConfig; - } -})); -Object.defineProperty(exports, "findRootConfig", ({ - enumerable: true, - get: function () { - return _configuration.findRootConfig; - } -})); -Object.defineProperty(exports, "loadConfig", ({ - enumerable: true, - get: function () { - return _configuration.loadConfig; - } -})); -Object.defineProperty(exports, "resolveShowConfigPath", ({ - enumerable: true, - get: function () { - return _configuration.resolveShowConfigPath; - } -})); -Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", ({ - enumerable: true, - get: function () { - return _configuration.ROOT_CONFIG_FILENAMES; - } -})); -Object.defineProperty(exports, "resolvePlugin", ({ - enumerable: true, - get: function () { - return _plugins.resolvePlugin; - } -})); -Object.defineProperty(exports, "resolvePreset", ({ - enumerable: true, - get: function () { - return _plugins.resolvePreset; - } -})); -Object.defineProperty(exports, "loadPlugin", ({ - enumerable: true, - get: function () { - return _plugins.loadPlugin; - } -})); -Object.defineProperty(exports, "loadPreset", ({ - enumerable: true, - get: function () { - return _plugins.loadPreset; - } -})); + case "Property": + // AssignmentProperty has type === "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); + break -var _package = __nccwpck_require__(61852); + case "ArrayExpression": + node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + this.toAssignableList(node.elements, isBinding); + break -var _configuration = __nccwpck_require__(37118); + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break -var _plugins = __nccwpck_require__(88243); + case "AssignmentExpression": + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + break -({}); + case "ParenthesizedExpression": + this.toAssignable(node.expression, isBinding, refDestructuringErrors); + break -/***/ }), + case "ChainExpression": + this.raiseRecoverable(node.start, "Optional chaining cannot appear in left-hand side"); + break -/***/ 92386: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + case "MemberExpression": + if (!isBinding) { break } -"use strict"; + default: + this.raise(node.start, "Assigning to rvalue"); + } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + return node + }; + // Convert list of expression atoms to binding list. -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = loadCjsOrMjsDefault; + pp$7.toAssignableList = function(exprList, isBinding) { + var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this.toAssignable(elt, isBinding); } + } + if (end) { + var last = exprList[end - 1]; + if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") + { this.unexpected(last.argument.start); } + } + return exprList + }; + + // Parses spread element. + + pp$7.parseSpread = function(refDestructuringErrors) { + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(false, refDestructuringErrors); + return this.finishNode(node, "SpreadElement") + }; -var _async = __nccwpck_require__(3192); + pp$7.parseRestBinding = function() { + var node = this.startNode(); + this.next(); -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + // RestElement inside of a function parameter must be an identifier + if (this.options.ecmaVersion === 6 && this.type !== types$1.name) + { this.unexpected(); } - _path = function () { - return data; + node.argument = this.parseBindingAtom(); + + return this.finishNode(node, "RestElement") }; - return data; -} + // Parses lvalue (assignable) atom. -function _url() { - const data = __nccwpck_require__(57310); + pp$7.parseBindingAtom = function() { + if (this.options.ecmaVersion >= 6) { + switch (this.type) { + case types$1.bracketL: + var node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types$1.bracketR, true, true); + return this.finishNode(node, "ArrayPattern") - _url = function () { - return data; + case types$1.braceL: + return this.parseObj(true) + } + } + return this.parseIdent() }; - return data; -} + pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) { + var elts = [], first = true; + while (!this.eat(close)) { + if (first) { first = false; } + else { this.expect(types$1.comma); } + if (allowEmpty && this.type === types$1.comma) { + elts.push(null); + } else if (allowTrailingComma && this.afterTrailingComma(close)) { + break + } else if (this.type === types$1.ellipsis) { + var rest = this.parseRestBinding(); + this.parseBindingListItem(rest); + elts.push(rest); + if (this.type === types$1.comma) { this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); } + this.expect(close); + break + } else { + elts.push(this.parseAssignableListItem(allowModifiers)); + } + } + return elts + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp$7.parseAssignableListItem = function(allowModifiers) { + var elem = this.parseMaybeDefault(this.start, this.startLoc); + this.parseBindingListItem(elem); + return elem + }; -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + pp$7.parseBindingListItem = function(param) { + return param + }; -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + // Parses assignment pattern around given atom if possible. -let import_; + pp$7.parseMaybeDefault = function(startPos, startLoc, left) { + left = left || this.parseBindingAtom(); + if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern") + }; -try { - import_ = (__nccwpck_require__(65678)/* ["default"] */ .Z); -} catch (_unused) {} + // The following three functions all verify that a node is an lvalue — + // something that can be bound, or assigned to. In order to do so, they perform + // a variety of checks: + // + // - Check that none of the bound/assigned-to identifiers are reserved words. + // - Record name declarations for bindings in the appropriate scope. + // - Check duplicate argument names, if checkClashes is set. + // + // If a complex binding pattern is encountered (e.g., object and array + // destructuring), the entire pattern is recursively checked. + // + // There are three versions of checkLVal*() appropriate for different + // circumstances: + // + // - checkLValSimple() shall be used if the syntactic construct supports + // nothing other than identifiers and member expressions. Parenthesized + // expressions are also correctly handled. This is generally appropriate for + // constructs for which the spec says + // + // > It is a Syntax Error if AssignmentTargetType of [the production] is not + // > simple. + // + // It is also appropriate for checking if an identifier is valid and not + // defined elsewhere, like import declarations or function/class identifiers. + // + // Examples where this is used include: + // a += …; + // import a from '…'; + // where a is the node to be checked. + // + // - checkLValPattern() shall be used if the syntactic construct supports + // anything checkLValSimple() supports, as well as object and array + // destructuring patterns. This is generally appropriate for constructs for + // which the spec says + // + // > It is a Syntax Error if [the production] is neither an ObjectLiteral nor + // > an ArrayLiteral and AssignmentTargetType of [the production] is not + // > simple. + // + // Examples where this is used include: + // (a = …); + // const a = …; + // try { … } catch (a) { … } + // where a is the node to be checked. + // + // - checkLValInnerPattern() shall be used if the syntactic construct supports + // anything checkLValPattern() supports, as well as default assignment + // patterns, rest elements, and other constructs that may appear within an + // object or array destructuring pattern. + // + // As a special case, function parameters also use checkLValInnerPattern(), + // as they also support defaults and rest constructs. + // + // These functions deliberately support both assignment and binding constructs, + // as the logic for both is exceedingly similar. If the node is the target of + // an assignment, then bindingType should be set to BIND_NONE. Otherwise, it + // should be set to the appropriate BIND_* constant, like BIND_VAR or + // BIND_LEXICAL. + // + // If the function is called with a non-BIND_NONE bindingType, then + // additionally a checkClashes object may be specified to allow checking for + // duplicate argument names. checkClashes is ignored if the provided construct + // is an assignment (i.e., bindingType is BIND_NONE). -function* loadCjsOrMjsDefault(filepath, asyncError) { - switch (guessJSModuleType(filepath)) { - case "cjs": - return loadCjsDefault(filepath); + pp$7.checkLValSimple = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; - case "unknown": - try { - return loadCjsDefault(filepath); - } catch (e) { - if (e.code !== "ERR_REQUIRE_ESM") throw e; - } + var isBind = bindingType !== BIND_NONE; - case "mjs": - if (yield* (0, _async.isAsync)()) { - return yield* (0, _async.waitFor)(loadMjsDefault(filepath)); + switch (expr.type) { + case "Identifier": + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) + { this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } + if (isBind) { + if (bindingType === BIND_LEXICAL && expr.name === "let") + { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } + if (checkClashes) { + if (hasOwn(checkClashes, expr.name)) + { this.raiseRecoverable(expr.start, "Argument name clash"); } + checkClashes[expr.name] = true; + } + if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } } + break - throw new Error(asyncError); - } -} + case "ChainExpression": + this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side"); + break -function guessJSModuleType(filename) { - switch (_path().default.extname(filename)) { - case ".cjs": - return "cjs"; + case "MemberExpression": + if (isBind) { this.raiseRecoverable(expr.start, "Binding member expression"); } + break - case ".mjs": - return "mjs"; + case "ParenthesizedExpression": + if (isBind) { this.raiseRecoverable(expr.start, "Binding parenthesized expression"); } + return this.checkLValSimple(expr.expression, bindingType, checkClashes) default: - return "unknown"; - } -} + this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue"); + } + }; -function loadCjsDefault(filepath) { - const module = require(filepath); + pp$7.checkLValPattern = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; - return (module == null ? void 0 : module.__esModule) ? module.default || undefined : module; -} + switch (expr.type) { + case "ObjectPattern": + for (var i = 0, list = expr.properties; i < list.length; i += 1) { + var prop = list[i]; -function loadMjsDefault(_x) { - return _loadMjsDefault.apply(this, arguments); -} + this.checkLValInnerPattern(prop, bindingType, checkClashes); + } + break + + case "ArrayPattern": + for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { + var elem = list$1[i$1]; + + if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); } + } + break -function _loadMjsDefault() { - _loadMjsDefault = _asyncToGenerator(function* (filepath) { - if (!import_) { - throw new Error("Internal error: Native ECMAScript modules aren't supported" + " by this platform.\n"); + default: + this.checkLValSimple(expr, bindingType, checkClashes); } + }; - const module = yield import_((0, _url().pathToFileURL)(filepath)); - return module.default; - }); - return _loadMjsDefault.apply(this, arguments); -} + pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; -/***/ }), + switch (expr.type) { + case "Property": + // AssignmentProperty has type === "Property" + this.checkLValInnerPattern(expr.value, bindingType, checkClashes); + break -/***/ 61852: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + case "AssignmentPattern": + this.checkLValPattern(expr.left, bindingType, checkClashes); + break -"use strict"; + case "RestElement": + this.checkLValPattern(expr.argument, bindingType, checkClashes); + break + default: + this.checkLValPattern(expr, bindingType, checkClashes); + } + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.findPackageData = findPackageData; + // The algorithm used to determine whether a regexp can appear at a + // given point in the program is loosely based on sweet.js' approach. + // See https://github.com/mozilla/sweet.js/wiki/design -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); - _path = function () { - return data; + var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; }; - return data; -} + var types = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) + }; -var _utils = __nccwpck_require__(87336); + var pp$6 = Parser.prototype; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp$6.initialContext = function() { + return [types.b_stat] + }; -const PACKAGE_FILENAME = "package.json"; + pp$6.curContext = function() { + return this.context[this.context.length - 1] + }; -function* findPackageData(filepath) { - let pkg = null; - const directories = []; - let isPackage = true; + pp$6.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types.f_expr || parent === types.f_stat) + { return true } + if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow) + { return true } + if (prevType === types$1.braceL) + { return parent === types.b_stat } + if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name) + { return false } + return !this.exprAllowed + }; - let dirname = _path().default.dirname(filepath); + pp$6.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false + }; - while (!pkg && _path().default.basename(dirname) !== "node_modules") { - directories.push(dirname); - pkg = yield* readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME)); + pp$6.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types$1.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } + }; - const nextLoc = _path().default.dirname(dirname); + // Used to handle edge cases when token context could not be inferred correctly during tokenization phase - if (dirname === nextLoc) { - isPackage = false; - break; + pp$6.overrideContext = function(tokenCtx) { + if (this.curContext() !== tokenCtx) { + this.context[this.context.length - 1] = tokenCtx; } + }; - dirname = nextLoc; - } + // Token-specific context update code - return { - filepath, - directories, - pkg, - isPackage + types$1.parenR.updateContext = types$1.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; }; -} -const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => { - let options; + types$1.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); + this.exprAllowed = true; + }; - try { - options = JSON.parse(content); - } catch (err) { - err.message = `${filepath}: Error while parsing JSON - ${err.message}`; - throw err; - } + types$1.dollarBraceL.updateContext = function() { + this.context.push(types.b_tmpl); + this.exprAllowed = true; + }; - if (!options) throw new Error(`${filepath}: No config detected`); + types$1.parenL.updateContext = function(prevType) { + var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while; + this.context.push(statementParens ? types.p_stat : types.p_expr); + this.exprAllowed = true; + }; - if (typeof options !== "object") { - throw new Error(`${filepath}: Config returned typeof ${typeof options}`); - } + types$1.incDec.updateContext = function() { + // tokExprAllowed stays unchanged + }; - if (Array.isArray(options)) { - throw new Error(`${filepath}: Expected config object but found array`); - } + types$1._function.updateContext = types$1._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types$1._else && + !(prevType === types$1.semi && this.curContext() !== types.p_stat) && + !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat)) + { this.context.push(types.f_expr); } + else + { this.context.push(types.f_stat); } + this.exprAllowed = false; + }; - return { - filepath, - dirname: _path().default.dirname(filepath), - options + types$1.colon.updateContext = function() { + if (this.curContext().token === "function") { this.context.pop(); } + this.exprAllowed = true; }; -}); -/***/ }), + types$1.backQuote.updateContext = function() { + if (this.curContext() === types.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types.q_tmpl); } + this.exprAllowed = false; + }; -/***/ 88243: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + types$1.star.updateContext = function(prevType) { + if (prevType === types$1._function) { + var index = this.context.length - 1; + if (this.context[index] === types.f_expr) + { this.context[index] = types.f_expr_gen; } + else + { this.context[index] = types.f_gen; } + } + this.exprAllowed = true; + }; -"use strict"; + types$1.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; + }; + // A recursive descent parser operates by defining functions for all + // syntactic elements, and recursively calling those, each function + // advancing the input stream and returning an AST node. Precedence + // of constructs (for example, the fact that `!x[1]` means `!(x[1])` + // instead of `(!x)[1]` is handled by the fact that the parser + // function that parses unary prefix operators is called first, and + // in turn calls the function that parses `[]` subscripts — that + // way, it'll receive the node for `x[1]` already parsed, and wraps + // *that* in the unary operator node. + // + // Acorn uses an [operator precedence parser][opp] to handle binary + // operator precedence, because it is much more compact than using + // the technique outlined above, which uses different, nesting + // functions to specify precedence, for all of the ten binary + // precedence levels that JavaScript defines. + // + // [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser + + + var pp$5 = Parser.prototype; + + // Check if property name clashes with already added. + // Object/class getters and setters are not allowed to clash — + // either with each other or with an init property — and in + // strict mode, init properties are also not allowed to be repeated. + + pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) { + if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") + { return } + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) + { return } + var key = prop.key; + var name; + switch (key.type) { + case "Identifier": name = key.name; break + case "Literal": name = String(key.value); break + default: return + } + var kind = prop.kind; + if (this.options.ecmaVersion >= 6) { + if (name === "__proto__" && kind === "init") { + if (propHash.proto) { + if (refDestructuringErrors) { + if (refDestructuringErrors.doubleProto < 0) { + refDestructuringErrors.doubleProto = key.start; + } + } else { + this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); + } + } + propHash.proto = true; + } + return + } + name = "$" + name; + var other = propHash[name]; + if (other) { + var redefinition; + if (kind === "init") { + redefinition = this.strict && other.init || other.get || other.set; + } else { + redefinition = other.init || other[kind]; + } + if (redefinition) + { this.raiseRecoverable(key.start, "Redefinition of property"); } + } else { + other = propHash[name] = { + init: false, + get: false, + set: false + }; + } + other[kind] = true; + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resolvePlugin = resolvePlugin; -exports.resolvePreset = resolvePreset; -exports.loadPlugin = loadPlugin; -exports.loadPreset = loadPreset; + // ### Expression parsing + + // These nest, from the most general expression type at the top to + // 'atomic', nondivisible expression types at the bottom. Most of + // the functions will simply let the function(s) below them parse, + // and, *if* the syntactic construct they handle is present, wrap + // the AST node that the inner parser gave them in another node. + + // Parse a full expression. The optional arguments are used to + // forbid the `in` operator (in for loops initalization expressions) + // and provide reference for storing '=' operator inside shorthand + // property assignment in contexts where both object expression + // and object pattern might appear (so it's possible to raise + // delayed syntax error at correct position). + + pp$5.parseExpression = function(forInit, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); + if (this.type === types$1.comma) { + var node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); } + return this.finishNode(node, "SequenceExpression") + } + return expr + }; -function _debug() { - const data = _interopRequireDefault(__nccwpck_require__(67984)); + // Parse an assignment expression. This includes applications of + // operators like `+=`. - _debug = function () { - return data; + pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { + if (this.isContextual("yield")) { + if (this.inGenerator) { return this.parseYield(forInit) } + // The tokenizer will assume an expression is allowed after + // `yield`, but this isn't that kind of yield + else { this.exprAllowed = false; } + } + + var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1; + if (refDestructuringErrors) { + oldParenAssign = refDestructuringErrors.parenthesizedAssign; + oldTrailingComma = refDestructuringErrors.trailingComma; + oldDoubleProto = refDestructuringErrors.doubleProto; + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; + } else { + refDestructuringErrors = new DestructuringErrors; + ownDestructuringErrors = true; + } + + var startPos = this.start, startLoc = this.startLoc; + if (this.type === types$1.parenL || this.type === types$1.name) { + this.potentialArrowAt = this.start; + this.potentialArrowInForAwait = forInit === "await"; + } + var left = this.parseMaybeConditional(forInit, refDestructuringErrors); + if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } + if (this.type.isAssign) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.value; + if (this.type === types$1.eq) + { left = this.toAssignable(left, false, refDestructuringErrors); } + if (!ownDestructuringErrors) { + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; + } + if (refDestructuringErrors.shorthandAssign >= left.start) + { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly + if (this.type === types$1.eq) + { this.checkLValPattern(left); } + else + { this.checkLValSimple(left); } + node.left = left; + this.next(); + node.right = this.parseMaybeAssign(forInit); + if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; } + return this.finishNode(node, "AssignmentExpression") + } else { + if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } + } + if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } + if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } + return left }; - return data; -} - -function _resolve() { - const data = _interopRequireDefault(__nccwpck_require__(89227)); + // Parse a ternary conditional (`?:`) operator. - _resolve = function () { - return data; + pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprOps(forInit, refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + if (this.eat(types$1.question)) { + var node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(types$1.colon); + node.alternate = this.parseMaybeAssign(forInit); + return this.finishNode(node, "ConditionalExpression") + } + return expr }; - return data; -} - -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + // Start the precedence parser. - _path = function () { - return data; + pp$5.parseExprOps = function(forInit, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) }; - return data; -} + // Parse binary operators with the operator precedence parsing + // algorithm. `left` is the left-hand side of the operator. + // `minPrec` provides context that allows the function to stop and + // defer further parser to one of its callers when it encounters an + // operator that has a lower precedence than the set it is parsing. + + pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { + var prec = this.type.binop; + if (prec != null && (!forInit || this.type !== types$1._in)) { + if (prec > minPrec) { + var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND; + var coalesce = this.type === types$1.coalesce; + if (coalesce) { + // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. + // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. + prec = types$1.logicalAND.binop; + } + var op = this.value; + this.next(); + var startPos = this.start, startLoc = this.startLoc; + var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); + if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) { + this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); + } + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit) + } + } + return left + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) { + if (right.type === "PrivateIdentifier") { this.raise(right.start, "Private identifier can only be left side of binary expression"); } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.operator = op; + node.right = right; + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") + }; -const debug = (0, _debug().default)("babel:config:loading:files:plugins"); -const EXACT_RE = /^module:/; -const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/; -const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/; -const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/; -const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/; -const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/; -const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/; -const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/; + // Parse unary operators, both prefix and postfix. -function resolvePlugin(name, dirname) { - return resolveStandardizedName("plugin", name, dirname); -} + pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { + var startPos = this.start, startLoc = this.startLoc, expr; + if (this.isContextual("await") && this.canAwait) { + expr = this.parseAwait(forInit); + sawUnary = true; + } else if (this.type.prefix) { + var node = this.startNode(), update = this.type === types$1.incDec; + node.operator = this.value; + node.prefix = true; + this.next(); + node.argument = this.parseMaybeUnary(null, true, update, forInit); + this.checkExpressionErrors(refDestructuringErrors, true); + if (update) { this.checkLValSimple(node.argument); } + else if (this.strict && node.operator === "delete" && isLocalVariableAccess(node.argument)) + { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } + else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) + { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } + else { sawUnary = true; } + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } else if (!sawUnary && this.type === types$1.privateId) { + if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); } + expr = this.parsePrivateIdent(); + // only could be private fields in 'in', such as #x in obj + if (this.type !== types$1._in) { this.unexpected(); } + } else { + expr = this.parseExprSubscripts(refDestructuringErrors, forInit); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + while (this.type.postfix && !this.canInsertSemicolon()) { + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.operator = this.value; + node$1.prefix = false; + node$1.argument = expr; + this.checkLValSimple(expr); + this.next(); + expr = this.finishNode(node$1, "UpdateExpression"); + } + } -function resolvePreset(name, dirname) { - return resolveStandardizedName("preset", name, dirname); -} + if (!incDec && this.eat(types$1.starstar)) { + if (sawUnary) + { this.unexpected(this.lastTokStart); } + else + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } + } else { + return expr + } + }; -function loadPlugin(name, dirname) { - const filepath = resolvePlugin(name, dirname); + function isLocalVariableAccess(node) { + return ( + node.type === "Identifier" || + node.type === "ParenthesizedExpression" && isLocalVariableAccess(node.expression) + ) + } - if (!filepath) { - throw new Error(`Plugin ${name} not found relative to ${dirname}`); + function isPrivateFieldAccess(node) { + return ( + node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || + node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) || + node.type === "ParenthesizedExpression" && isPrivateFieldAccess(node.expression) + ) } - const value = requireModule("plugin", filepath); - debug("Loaded plugin %o from %o.", name, dirname); - return { - filepath, - value + // Parse call, dot, and `[]`-subscript expressions. + + pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprAtom(refDestructuringErrors, forInit); + if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") + { return expr } + var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); + if (refDestructuringErrors && result.type === "MemberExpression") { + if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } + if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } + if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; } + } + return result }; -} -function loadPreset(name, dirname) { - const filepath = resolvePreset(name, dirname); + pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && + this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && + this.potentialArrowAt === base.start; + var optionalChained = false; - if (!filepath) { - throw new Error(`Preset ${name} not found relative to ${dirname}`); - } + while (true) { + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); - const value = requireModule("preset", filepath); - debug("Loaded preset %o from %o.", name, dirname); - return { - filepath, - value + if (element.optional) { optionalChained = true; } + if (element === base || element.type === "ArrowFunctionExpression") { + if (optionalChained) { + var chainNode = this.startNodeAt(startPos, startLoc); + chainNode.expression = element; + element = this.finishNode(chainNode, "ChainExpression"); + } + return element + } + + base = element; + } }; -} -function standardizeName(type, name) { - if (_path().default.isAbsolute(name)) return name; - const isPreset = type === "preset"; - return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, ""); -} + pp$5.shouldParseAsyncArrow = function() { + return !this.canInsertSemicolon() && this.eat(types$1.arrow) + }; -function resolveStandardizedName(type, name, dirname = process.cwd()) { - const standardizedName = standardizeName(type, name); + pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) + }; - try { - return _resolve().default.sync(standardizedName, { - basedir: dirname - }); - } catch (e) { - if (e.code !== "MODULE_NOT_FOUND") throw e; + pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { + var optionalSupported = this.options.ecmaVersion >= 11; + var optional = optionalSupported && this.eat(types$1.questionDot); + if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } + + var computed = this.eat(types$1.bracketL); + if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + if (computed) { + node.property = this.parseExpression(); + this.expect(types$1.bracketR); + } else if (this.type === types$1.privateId && base.type !== "Super") { + node.property = this.parsePrivateIdent(); + } else { + node.property = this.parseIdent(this.options.allowReserved !== "never"); + } + node.computed = !!computed; + if (optionalSupported) { + node.optional = optional; + } + base = this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.eat(types$1.parenL)) { + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); + if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + if (this.awaitIdentPos > 0) + { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit) + } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.callee = base; + node$1.arguments = exprList; + if (optionalSupported) { + node$1.optional = optional; + } + base = this.finishNode(node$1, "CallExpression"); + } else if (this.type === types$1.backQuote) { + if (optional || optionalChained) { + this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); + } + var node$2 = this.startNodeAt(startPos, startLoc); + node$2.tag = base; + node$2.quasi = this.parseTemplate({isTagged: true}); + base = this.finishNode(node$2, "TaggedTemplateExpression"); + } + return base + }; - if (standardizedName !== name) { - let resolvedOriginal = false; + // Parse an atomic expression — either a single token that is an + // expression, an expression started by a keyword like `function` or + // `new`, or an expression wrapped in punctuation like `()`, `[]`, + // or `{}`. + + pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) { + // If a division operator appears in an expression position, the + // tokenizer got confused, and we force it to read a regexp instead. + if (this.type === types$1.slash) { this.readRegexp(); } + + var node, canBeArrow = this.potentialArrowAt === this.start; + switch (this.type) { + case types$1._super: + if (!this.allowSuper) + { this.raise(this.start, "'super' keyword outside a method"); } + node = this.startNode(); + this.next(); + if (this.type === types$1.parenL && !this.allowDirectSuper) + { this.raise(node.start, "super() call outside constructor of a subclass"); } + // The `super` keyword can appear at below: + // SuperProperty: + // super [ Expression ] + // super . IdentifierName + // SuperCall: + // super ( Arguments ) + if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL) + { this.unexpected(); } + return this.finishNode(node, "Super") + + case types$1._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression") + + case types$1.name: + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; + var id = this.parseIdent(false); + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$1._function)) { + this.overrideContext(types.f_expr); + return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) + } + if (canBeArrow && !this.canInsertSemicolon()) { + if (this.eat(types$1.arrow)) + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$1.name && !containsEsc && + (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { + id = this.parseIdent(false); + if (this.canInsertSemicolon() || !this.eat(types$1.arrow)) + { this.unexpected(); } + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) + } + } + return id - try { - _resolve().default.sync(name, { - basedir: dirname - }); + case types$1.regexp: + var value = this.value; + node = this.parseLiteral(value.value); + node.regex = {pattern: value.pattern, flags: value.flags}; + return node - resolvedOriginal = true; - } catch (_unused) {} + case types$1.num: case types$1.string: + return this.parseLiteral(this.value) - if (resolvedOriginal) { - e.message += `\n- If you want to resolve "${name}", use "module:${name}"`; + case types$1._null: case types$1._true: case types$1._false: + node = this.startNode(); + node.value = this.type === types$1._null ? null : this.type === types$1._true; + node.raw = this.type.keyword; + this.next(); + return this.finishNode(node, "Literal") + + case types$1.parenL: + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); + if (refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) + { refDestructuringErrors.parenthesizedAssign = start; } + if (refDestructuringErrors.parenthesizedBind < 0) + { refDestructuringErrors.parenthesizedBind = start; } } - } + return expr - let resolvedBabel = false; + case types$1.bracketL: + node = this.startNode(); + this.next(); + node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors); + return this.finishNode(node, "ArrayExpression") - try { - _resolve().default.sync(standardizeName(type, "@babel/" + name), { - basedir: dirname - }); + case types$1.braceL: + this.overrideContext(types.b_expr); + return this.parseObj(false, refDestructuringErrors) - resolvedBabel = true; - } catch (_unused2) {} + case types$1._function: + node = this.startNode(); + this.next(); + return this.parseFunction(node, 0) - if (resolvedBabel) { - e.message += `\n- Did you mean "@babel/${name}"?`; - } + case types$1._class: + return this.parseClass(this.startNode(), false) - let resolvedOppositeType = false; - const oppositeType = type === "preset" ? "plugin" : "preset"; + case types$1._new: + return this.parseNew() - try { - _resolve().default.sync(standardizeName(oppositeType, name), { - basedir: dirname - }); + case types$1.backQuote: + return this.parseTemplate() - resolvedOppositeType = true; - } catch (_unused3) {} + case types$1._import: + if (this.options.ecmaVersion >= 11) { + return this.parseExprImport(forNew) + } else { + return this.unexpected() + } - if (resolvedOppositeType) { - e.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`; + default: + return this.parseExprAtomDefault() } + }; - throw e; - } -} + pp$5.parseExprAtomDefault = function() { + this.unexpected(); + }; -const LOADING_MODULES = new Set(); + pp$5.parseExprImport = function(forNew) { + var node = this.startNode(); -function requireModule(type, name) { - if (LOADING_MODULES.has(name)) { - throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.'); - } + // Consume `import` as an identifier for `import.meta`. + // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`. + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword import"); } + this.next(); - try { - LOADING_MODULES.add(name); - return require(name); - } finally { - LOADING_MODULES.delete(name); - } -} + if (this.type === types$1.parenL && !forNew) { + return this.parseDynamicImport(node) + } else if (this.type === types$1.dot) { + var meta = this.startNodeAt(node.start, node.loc && node.loc.start); + meta.name = "import"; + node.meta = this.finishNode(meta, "Identifier"); + return this.parseImportMeta(node) + } else { + this.unexpected(); + } + }; -/***/ }), + pp$5.parseDynamicImport = function(node) { + this.next(); // skip `(` -/***/ 87336: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // Parse node.source. + node.source = this.parseMaybeAssign(); -"use strict"; + if (this.options.ecmaVersion >= 16) { + if (!this.eat(types$1.parenR)) { + this.expect(types$1.comma); + if (!this.afterTrailingComma(types$1.parenR)) { + node.options = this.parseMaybeAssign(); + if (!this.eat(types$1.parenR)) { + this.expect(types$1.comma); + if (!this.afterTrailingComma(types$1.parenR)) { + this.unexpected(); + } + } + } else { + node.options = null; + } + } else { + node.options = null; + } + } else { + // Verify ending. + if (!this.eat(types$1.parenR)) { + var errorPos = this.start; + if (this.eat(types$1.comma) && this.eat(types$1.parenR)) { + this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); + } else { + this.unexpected(errorPos); + } + } + } + return this.finishNode(node, "ImportExpression") + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.makeStaticFileCache = makeStaticFileCache; + pp$5.parseImportMeta = function(node) { + this.next(); // skip `.` -var _caching = __nccwpck_require__(19315); + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); -var fs = _interopRequireWildcard(__nccwpck_require__(6524)); + if (node.property.name !== "meta") + { this.raiseRecoverable(node.property.start, "The only valid meta property for import is 'import.meta'"); } + if (containsEsc) + { this.raiseRecoverable(node.start, "'import.meta' must not contain escaped characters"); } + if (this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere) + { this.raiseRecoverable(node.start, "Cannot use 'import.meta' outside a module"); } -function _fs2() { - const data = _interopRequireDefault(__nccwpck_require__(57147)); + return this.finishNode(node, "MetaProperty") + }; - _fs2 = function () { - return data; + pp$5.parseLiteral = function(value) { + var node = this.startNode(); + node.value = value; + node.raw = this.input.slice(this.start, this.end); + if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, ""); } + this.next(); + return this.finishNode(node, "Literal") }; - return data; -} + pp$5.parseParenExpression = function() { + this.expect(types$1.parenL); + var val = this.parseExpression(); + this.expect(types$1.parenR); + return val + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp$5.shouldParseArrow = function(exprList) { + return !this.canInsertSemicolon() + }; -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; + if (this.options.ecmaVersion >= 6) { + this.next(); -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + var innerStartPos = this.start, innerStartLoc = this.startLoc; + var exprList = [], first = true, lastIsComma = false; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; + this.yieldPos = 0; + this.awaitPos = 0; + // Do not save awaitIdentPos to allow checking awaits nested in parameters + while (this.type !== types$1.parenR) { + first ? first = false : this.expect(types$1.comma); + if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) { + lastIsComma = true; + break + } else if (this.type === types$1.ellipsis) { + spreadStart = this.start; + exprList.push(this.parseParenItem(this.parseRestBinding())); + if (this.type === types$1.comma) { + this.raiseRecoverable( + this.start, + "Comma is not permitted after the rest element" + ); + } + break + } else { + exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); + } + } + var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; + this.expect(types$1.parenR); -function makeStaticFileCache(fn) { - return (0, _caching.makeStrongCache)(function* (filepath, cache) { - const cached = cache.invalidate(() => fileMtime(filepath)); + if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + return this.parseParenArrowList(startPos, startLoc, exprList, forInit) + } - if (cached === null) { - return null; + if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } + if (spreadStart) { this.unexpected(spreadStart); } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + } else { + val = this.parseParenExpression(); } - return fn(filepath, yield* fs.readFile(filepath, "utf8")); - }); -} + if (this.options.preserveParens) { + var par = this.startNodeAt(startPos, startLoc); + par.expression = val; + return this.finishNode(par, "ParenthesizedExpression") + } else { + return val + } + }; -function fileMtime(filepath) { - try { - return +_fs2().default.statSync(filepath).mtime; - } catch (e) { - if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e; - } + pp$5.parseParenItem = function(item) { + return item + }; - return null; -} + pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit) + }; -/***/ }), + // New's precedence is slightly tricky. It must allow its argument to + // be a `[]` or dot subscript expression, but not a call — at least, + // not without wrapping it in parentheses. Thus, it uses the noCalls + // argument to parseSubscripts to prevent it from consuming the + // argument list. -/***/ 63918: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + var empty = []; -"use strict"; + pp$5.parseNew = function() { + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } + var node = this.startNode(); + this.next(); + if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) { + var meta = this.startNodeAt(node.start, node.loc && node.loc.start); + meta.name = "new"; + node.meta = this.finishNode(meta, "Identifier"); + this.next(); + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); + if (node.property.name !== "target") + { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } + if (containsEsc) + { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } + if (!this.allowNewDotTarget) + { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } + return this.finishNode(node, "MetaProperty") + } + var startPos = this.start, startLoc = this.startLoc; + node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false); + if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); } + else { node.arguments = empty; } + return this.finishNode(node, "NewExpression") + }; + // Parse template expression. -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + pp$5.parseTemplateElement = function(ref) { + var isTagged = ref.isTagged; -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + var elem = this.startNode(); + if (this.type === types$1.invalidTemplate) { + if (!isTagged) { + this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); + } + elem.value = { + raw: this.value.replace(/\r\n?/g, "\n"), + cooked: null + }; + } else { + elem.value = { + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), + cooked: this.value + }; + } + this.next(); + elem.tail = this.type === types$1.backQuote; + return this.finishNode(elem, "TemplateElement") + }; - _gensync = function () { - return data; + pp$5.parseTemplate = function(ref) { + if ( ref === void 0 ) ref = {}; + var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; + + var node = this.startNode(); + this.next(); + node.expressions = []; + var curElt = this.parseTemplateElement({isTagged: isTagged}); + node.quasis = [curElt]; + while (!curElt.tail) { + if (this.type === types$1.eof) { this.raise(this.pos, "Unterminated template literal"); } + this.expect(types$1.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(types$1.braceR); + node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); + } + this.next(); + return this.finishNode(node, "TemplateLiteral") }; - return data; -} + pp$5.isAsyncProp = function(prop) { + return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && + (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) && + !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + }; -var _async = __nccwpck_require__(3192); + // Parse an object literal or binding pattern. -var _util = __nccwpck_require__(60391); + pp$5.parseObj = function(isPattern, refDestructuringErrors) { + var node = this.startNode(), first = true, propHash = {}; + node.properties = []; + this.next(); + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } -var context = _interopRequireWildcard(__nccwpck_require__(92092)); + var prop = this.parseProperty(isPattern, refDestructuringErrors); + if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } + node.properties.push(prop); + } + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") + }; -var _plugin = _interopRequireDefault(__nccwpck_require__(4725)); + pp$5.parseProperty = function(isPattern, refDestructuringErrors) { + var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; + if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) { + if (isPattern) { + prop.argument = this.parseIdent(false); + if (this.type === types$1.comma) { + this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); + } + return this.finishNode(prop, "RestElement") + } + // Parse argument. + prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); + // To disallow trailing comma via `this.toAssignable()`. + if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { + refDestructuringErrors.trailingComma = this.start; + } + // Finish + return this.finishNode(prop, "SpreadElement") + } + if (this.options.ecmaVersion >= 6) { + prop.method = false; + prop.shorthand = false; + if (isPattern || refDestructuringErrors) { + startPos = this.start; + startLoc = this.startLoc; + } + if (!isPattern) + { isGenerator = this.eat(types$1.star); } + } + var containsEsc = this.containsEsc; + this.parsePropertyName(prop); + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star); + this.parsePropertyName(prop); + } else { + isAsync = false; + } + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); + return this.finishNode(prop, "Property") + }; -var _item = __nccwpck_require__(58050); + pp$5.parseGetterSetter = function(prop) { + var kind = prop.key.name; + this.parsePropertyName(prop); + prop.value = this.parseMethod(false); + prop.kind = kind; + var paramCount = prop.kind === "get" ? 0 : 1; + if (prop.value.params.length !== paramCount) { + var start = prop.value.start; + if (prop.kind === "get") + { this.raiseRecoverable(start, "getter should have no params"); } + else + { this.raiseRecoverable(start, "setter should have exactly one param"); } + } else { + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") + { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } + } + }; -var _configChain = __nccwpck_require__(57390); + pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { + if ((isGenerator || isAsync) && this.type === types$1.colon) + { this.unexpected(); } -function _traverse() { - const data = _interopRequireDefault(__nccwpck_require__(8631)); + if (this.eat(types$1.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); + prop.kind = "init"; + } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) { + if (isPattern) { this.unexpected(); } + prop.method = true; + prop.value = this.parseMethod(isGenerator, isAsync); + prop.kind = "init"; + } else if (!isPattern && !containsEsc && + this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && + (prop.key.name === "get" || prop.key.name === "set") && + (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) { + if (isGenerator || isAsync) { this.unexpected(); } + this.parseGetterSetter(prop); + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { + if (isGenerator || isAsync) { this.unexpected(); } + this.checkUnreserved(prop.key); + if (prop.key.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = startPos; } + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); + } else if (this.type === types$1.eq && refDestructuringErrors) { + if (refDestructuringErrors.shorthandAssign < 0) + { refDestructuringErrors.shorthandAssign = this.start; } + prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); + } else { + prop.value = this.copyNode(prop.key); + } + prop.kind = "init"; + prop.shorthand = true; + } else { this.unexpected(); } + }; - _traverse = function () { - return data; + pp$5.parsePropertyName = function(prop) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(types$1.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(types$1.bracketR); + return prop.key + } else { + prop.computed = false; + } + } + return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") }; - return data; -} + // Initialize empty function node. -var _caching = __nccwpck_require__(19315); + pp$5.initFunction = function(node) { + node.id = null; + if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } + if (this.options.ecmaVersion >= 8) { node.async = false; } + }; -var _options = __nccwpck_require__(14087); + // Parse object or class method. -var _plugins = __nccwpck_require__(26741); + pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { + var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; -var _configApi = _interopRequireDefault(__nccwpck_require__(7785)); + this.initFunction(node); + if (this.options.ecmaVersion >= 6) + { node.generator = isGenerator; } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } -var _partial = _interopRequireDefault(__nccwpck_require__(67399)); + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + this.expect(types$1.parenL); + node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + this.parseFunctionBody(node, false, true, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "FunctionExpression") + }; -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + // Parse arrow function expression with given parameters. -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp$5.parseArrowExpression = function(node, params, isAsync, forInit) { + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; -var _default = (0, _gensync().default)(function* loadFullConfig(inputOpts) { - const result = yield* (0, _partial.default)(inputOpts); + this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); + this.initFunction(node); + if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } - if (!result) { - return null; - } + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; - const { - options, - context, - fileHandling - } = result; + node.params = this.toAssignableList(params, true); + this.parseFunctionBody(node, true, false, forInit); - if (fileHandling === "ignored") { - return null; - } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "ArrowFunctionExpression") + }; - const optionDefaults = {}; - const { - plugins, - presets - } = options; + // Parse function body and check parameters. - if (!plugins || !presets) { - throw new Error("Assertion failure - plugins and presets exist"); - } + pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { + var isExpression = isArrowFunction && this.type !== types$1.braceL; + var oldStrict = this.strict, useStrict = false; - const toDescriptor = item => { - const desc = (0, _item.getItemDescriptor)(item); + if (isExpression) { + node.body = this.parseMaybeAssign(forInit); + node.expression = true; + this.checkParams(node, false); + } else { + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); + if (!oldStrict || nonSimple) { + useStrict = this.strictDirective(this.end); + // If this is a strict mode function, verify that argument names + // are not repeated, and it does not try to bind the words `eval` + // or `arguments`. + if (useStrict && nonSimple) + { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } + } + // Start a new scope with regard to labels and the `inFunction` + // flag (restore them to their old value afterwards). + var oldLabels = this.labels; + this.labels = []; + if (useStrict) { this.strict = true; } + + // Add the params to varDeclaredNames to ensure that an error is thrown + // if a let/const declaration in the function clashes with one of the params. + this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); + // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' + if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); } + node.body = this.parseBlock(false, undefined, useStrict && !oldStrict); + node.expression = false; + this.adaptDirectivePrologue(node.body.body); + this.labels = oldLabels; + } + this.exitScope(); + }; - if (!desc) { - throw new Error("Assertion failure - must be config item"); - } + pp$5.isSimpleParamList = function(params) { + for (var i = 0, list = params; i < list.length; i += 1) + { + var param = list[i]; - return desc; + if (param.type !== "Identifier") { return false + } } + return true }; - const presetsDescriptors = presets.map(toDescriptor); - const initialPluginsDescriptors = plugins.map(toDescriptor); - const pluginDescriptorsByPass = [[]]; - const passes = []; - const ignored = yield* enhanceError(context, function* recursePresetDescriptors(rawPresets, pluginDescriptorsPass) { - const presets = []; + // Checks function params for various disallowed patterns such as using "eval" + // or "arguments" and duplicate parameters. - for (let i = 0; i < rawPresets.length; i++) { - const descriptor = rawPresets[i]; - - if (descriptor.options !== false) { - try { - if (descriptor.ownPass) { - presets.push({ - preset: yield* loadPresetDescriptor(descriptor, context), - pass: [] - }); - } else { - presets.unshift({ - preset: yield* loadPresetDescriptor(descriptor, context), - pass: pluginDescriptorsPass - }); - } - } catch (e) { - if (e.code === "BABEL_UNKNOWN_OPTION") { - (0, _options.checkNoUnwrappedItemOptionPairs)(rawPresets, i, "preset", e); - } + pp$5.checkParams = function(node, allowDuplicates) { + var nameHash = Object.create(null); + for (var i = 0, list = node.params; i < list.length; i += 1) + { + var param = list[i]; - throw e; - } - } + this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash); } + }; - if (presets.length > 0) { - pluginDescriptorsByPass.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pluginDescriptorsPass)); + // Parses a comma-separated list of expressions, and returns them as + // an array. `close` is the token type that ends the list, and + // `allowEmpty` can be turned on to allow subsequent commas with + // nothing in between them to be parsed as `null` (which is needed + // for array literals). - for (const { - preset, - pass - } of presets) { - if (!preset) return true; - pass.push(...preset.plugins); - const ignored = yield* recursePresetDescriptors(preset.presets, pass); - if (ignored) return true; - preset.options.forEach(opts => { - (0, _util.mergeOptions)(optionDefaults, opts); - }); + pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { + var elts = [], first = true; + while (!this.eat(close)) { + if (!first) { + this.expect(types$1.comma); + if (allowTrailingComma && this.afterTrailingComma(close)) { break } + } else { first = false; } + + var elt = (void 0); + if (allowEmpty && this.type === types$1.comma) + { elt = null; } + else if (this.type === types$1.ellipsis) { + elt = this.parseSpread(refDestructuringErrors); + if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0) + { refDestructuringErrors.trailingComma = this.start; } + } else { + elt = this.parseMaybeAssign(false, refDestructuringErrors); } + elts.push(elt); } - })(presetsDescriptors, pluginDescriptorsByPass[0]); - if (ignored) return null; - const opts = optionDefaults; - (0, _util.mergeOptions)(opts, options); - yield* enhanceError(context, function* loadPluginDescriptors() { - pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors); - - for (const descs of pluginDescriptorsByPass) { - const pass = []; - passes.push(pass); + return elts + }; - for (let i = 0; i < descs.length; i++) { - const descriptor = descs[i]; + pp$5.checkUnreserved = function(ref) { + var start = ref.start; + var end = ref.end; + var name = ref.name; + + if (this.inGenerator && name === "yield") + { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } + if (this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } + if (!(this.currentThisScope().flags & SCOPE_VAR) && name === "arguments") + { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } + if (this.inClassStaticBlock && (name === "arguments" || name === "await")) + { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } + if (this.keywords.test(name)) + { this.raise(start, ("Unexpected keyword '" + name + "'")); } + if (this.options.ecmaVersion < 6 && + this.input.slice(start, end).indexOf("\\") !== -1) { return } + var re = this.strict ? this.reservedWordsStrict : this.reservedWords; + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } + }; - if (descriptor.options !== false) { - try { - pass.push(yield* loadPluginDescriptor(descriptor, context)); - } catch (e) { - if (e.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") { - (0, _options.checkNoUnwrappedItemOptionPairs)(descs, i, "plugin", e); - } + // Parse the next token as an identifier. If `liberal` is true (used + // when parsing properties), it will also convert keywords into + // identifiers. - throw e; - } - } - } + pp$5.parseIdent = function(liberal) { + var node = this.parseIdentNode(); + this.next(!!liberal); + this.finishNode(node, "Identifier"); + if (!liberal) { + this.checkUnreserved(node); + if (node.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = node.start; } } - })(); - opts.plugins = passes[0]; - opts.presets = passes.slice(1).filter(plugins => plugins.length > 0).map(plugins => ({ - plugins - })); - opts.passPerPreset = opts.presets.length > 0; - return { - options: opts, - passes: passes + return node }; -}); -exports["default"] = _default; + pp$5.parseIdentNode = function() { + var node = this.startNode(); + if (this.type === types$1.name) { + node.name = this.value; + } else if (this.type.keyword) { + node.name = this.type.keyword; -function enhanceError(context, fn) { - return function* (arg1, arg2) { - try { - return yield* fn(arg1, arg2); - } catch (e) { - if (!/^\[BABEL\]/.test(e.message)) { - e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`; + // To fix https://github.com/acornjs/acorn/issues/575 + // `class` and `function` keywords push new context into this.context. + // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. + // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword + if ((node.name === "class" || node.name === "function") && + (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { + this.context.pop(); } - - throw e; + this.type = types$1.name; + } else { + this.unexpected(); } + return node }; -} - -const loadDescriptor = (0, _caching.makeWeakCache)(function* ({ - value, - options, - dirname, - alias -}, cache) { - if (options === false) throw new Error("Assertion failure"); - options = options || {}; - let item = value; - if (typeof value === "function") { - const api = Object.assign({}, context, (0, _configApi.default)(cache)); + pp$5.parsePrivateIdent = function() { + var node = this.startNode(); + if (this.type === types$1.privateId) { + node.name = this.value; + } else { + this.unexpected(); + } + this.next(); + this.finishNode(node, "PrivateIdentifier"); - try { - item = value(api, options, dirname); - } catch (e) { - if (alias) { - e.message += ` (While processing: ${JSON.stringify(alias)})`; + // For validating existence + if (this.options.checkPrivateFields) { + if (this.privateNameStack.length === 0) { + this.raise(node.start, ("Private field '#" + (node.name) + "' must be declared in an enclosing class")); + } else { + this.privateNameStack[this.privateNameStack.length - 1].used.push(node); } - - throw e; } - } - if (!item || typeof item !== "object") { - throw new Error("Plugin/Preset did not return an object."); - } + return node + }; - if (typeof item.then === "function") { - yield* []; - throw new Error(`You appear to be using an async plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); - } + // Parses yield expression inside generator. - return { - value: item, - options, - dirname, - alias - }; -}); + pp$5.parseYield = function(forInit) { + if (!this.yieldPos) { this.yieldPos = this.start; } -function* loadPluginDescriptor(descriptor, context) { - if (descriptor.value instanceof _plugin.default) { - if (descriptor.options) { - throw new Error("Passed options to an existing Plugin instance will not work."); + var node = this.startNode(); + this.next(); + if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(types$1.star); + node.argument = this.parseMaybeAssign(forInit); } + return this.finishNode(node, "YieldExpression") + }; - return descriptor.value; - } + pp$5.parseAwait = function(forInit) { + if (!this.awaitPos) { this.awaitPos = this.start; } - return yield* instantiatePlugin(yield* loadDescriptor(descriptor, context), context); -} + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeUnary(null, true, false, forInit); + return this.finishNode(node, "AwaitExpression") + }; -const instantiatePlugin = (0, _caching.makeWeakCache)(function* ({ - value, - options, - dirname, - alias -}, cache) { - const pluginObj = (0, _plugins.validatePluginObject)(value); - const plugin = Object.assign({}, pluginObj); + var pp$4 = Parser.prototype; - if (plugin.visitor) { - plugin.visitor = _traverse().default.explode(Object.assign({}, plugin.visitor)); - } - - if (plugin.inherits) { - const inheritsDescriptor = { - name: undefined, - alias: `${alias}$inherits`, - value: plugin.inherits, - options, - dirname - }; - const inherits = yield* (0, _async.forwardAsync)(loadPluginDescriptor, run => { - return cache.invalidate(data => run(inheritsDescriptor, data)); - }); - plugin.pre = chain(inherits.pre, plugin.pre); - plugin.post = chain(inherits.post, plugin.post); - plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions); - plugin.visitor = _traverse().default.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]); - } - - return new _plugin.default(plugin, options, alias); -}); + // This function is used to raise exceptions on parse errors. It + // takes an offset integer (into the current `input`) to indicate + // the location of the error, attaches the position to the end + // of the error message, and then raises a `SyntaxError` with that + // message. -const validateIfOptionNeedsFilename = (options, descriptor) => { - if (options.test || options.include || options.exclude) { - const formattedPresetName = descriptor.name ? `"${descriptor.name}"` : "/* your preset */"; - throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n")); - } -}; - -const validatePreset = (preset, context, descriptor) => { - if (!context.filename) { - const { - options - } = preset; - validateIfOptionNeedsFilename(options, descriptor); - - if (options.overrides) { - options.overrides.forEach(overrideOptions => validateIfOptionNeedsFilename(overrideOptions, descriptor)); + pp$4.raise = function(pos, message) { + var loc = getLineInfo(this.input, pos); + message += " (" + loc.line + ":" + loc.column + ")"; + if (this.sourceFile) { + message += " in " + this.sourceFile; } - } -}; - -function* loadPresetDescriptor(descriptor, context) { - const preset = instantiatePreset(yield* loadDescriptor(descriptor, context)); - validatePreset(preset, context, descriptor); - return yield* (0, _configChain.buildPresetChain)(preset, context); -} - -const instantiatePreset = (0, _caching.makeWeakCacheSync)(({ - value, - dirname, - alias -}) => { - return { - options: (0, _options.validate)("preset", value), - alias, - dirname + var err = new SyntaxError(message); + err.pos = pos; err.loc = loc; err.raisedAt = this.pos; + throw err }; -}); -function chain(a, b) { - const fns = [a, b].filter(Boolean); - if (fns.length <= 1) return fns[0]; - return function (...args) { - for (const fn of fns) { - fn.apply(this, args); + pp$4.raiseRecoverable = pp$4.raise; + + pp$4.curPosition = function() { + if (this.options.locations) { + return new Position(this.curLine, this.pos - this.lineStart) } }; -} -/***/ }), - -/***/ 7785: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; + var pp$3 = Parser.prototype; + var Scope = function Scope(flags) { + this.flags = flags; + // A list of var-declared names in the current lexical scope + this.var = []; + // A list of lexically-declared names in the current lexical scope + this.lexical = []; + // A list of lexically-declared FunctionDeclaration names in the current lexical scope + this.functions = []; + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = makeAPI; + // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. -function _semver() { - const data = _interopRequireDefault(__nccwpck_require__(17927)); + pp$3.enterScope = function(flags) { + this.scopeStack.push(new Scope(flags)); + }; - _semver = function () { - return data; + pp$3.exitScope = function() { + this.scopeStack.pop(); }; - return data; -} + // The spec says: + // > At the top level of a function, or script, function declarations are + // > treated like var declarations rather than like lexical declarations. + pp$3.treatFunctionsAsVarInScope = function(scope) { + return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) + }; -var _ = __nccwpck_require__(92092); + pp$3.declareName = function(name, bindingType, pos) { + var redeclared = false; + if (bindingType === BIND_LEXICAL) { + var scope = this.currentScope(); + redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; + scope.lexical.push(name); + if (this.inModule && (scope.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + } else if (bindingType === BIND_SIMPLE_CATCH) { + var scope$1 = this.currentScope(); + scope$1.lexical.push(name); + } else if (bindingType === BIND_FUNCTION) { + var scope$2 = this.currentScope(); + if (this.treatFunctionsAsVar) + { redeclared = scope$2.lexical.indexOf(name) > -1; } + else + { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } + scope$2.functions.push(name); + } else { + for (var i = this.scopeStack.length - 1; i >= 0; --i) { + var scope$3 = this.scopeStack[i]; + if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || + !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { + redeclared = true; + break + } + scope$3.var.push(name); + if (this.inModule && (scope$3.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + if (scope$3.flags & SCOPE_VAR) { break } + } + } + if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } + }; -var _caching = __nccwpck_require__(19315); + pp$3.checkLocalExport = function(id) { + // scope.functions must be empty as Module code is always strict. + if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && + this.scopeStack[0].var.indexOf(id.name) === -1) { + this.undefinedExports[id.name] = id; + } + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp$3.currentScope = function() { + return this.scopeStack[this.scopeStack.length - 1] + }; -function makeAPI(cache) { - const env = value => cache.using(data => { - if (typeof value === "undefined") return data.envName; + pp$3.currentVarScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope } + } + }; - if (typeof value === "function") { - return (0, _caching.assertSimpleType)(value(data.envName)); + // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. + pp$3.currentThisScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) && + !(scope.flags & SCOPE_ARROW)) { return scope } } + }; - if (!Array.isArray(value)) value = [value]; - return value.some(entry => { - if (typeof entry !== "string") { - throw new Error("Unexpected non-string value"); - } + var Node = function Node(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + if (parser.options.locations) + { this.loc = new SourceLocation(parser, loc); } + if (parser.options.directSourceFile) + { this.sourceFile = parser.options.directSourceFile; } + if (parser.options.ranges) + { this.range = [pos, 0]; } + }; - return entry === data.envName; - }); - }); + // Start an AST node, attaching a start offset. - const caller = cb => cache.using(data => (0, _caching.assertSimpleType)(cb(data.caller))); + var pp$2 = Parser.prototype; - return { - version: _.version, - cache: cache.simple(), - env, - async: () => false, - caller, - assertVersion + pp$2.startNode = function() { + return new Node(this, this.start, this.startLoc) }; -} -function assertVersion(range) { - if (typeof range === "number") { - if (!Number.isInteger(range)) { - throw new Error("Expected string or integer value."); - } + pp$2.startNodeAt = function(pos, loc) { + return new Node(this, pos, loc) + }; - range = `^${range}.0.0-0`; - } + // Finish an AST node, adding `type` and `end` properties. - if (typeof range !== "string") { - throw new Error("Expected string or integer value."); + function finishNodeAt(node, type, pos, loc) { + node.type = type; + node.end = pos; + if (this.options.locations) + { node.loc.end = loc; } + if (this.options.ranges) + { node.range[1] = pos; } + return node } - if (_semver().default.satisfies(_.version, range)) return; - const limit = Error.stackTraceLimit; + pp$2.finishNode = function(node, type) { + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) + }; - if (typeof limit === "number" && limit < 25) { - Error.stackTraceLimit = 25; - } + // Finish node at given position - const err = new Error(`Requires Babel "${range}", but was loaded with "${_.version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); + pp$2.finishNodeAt = function(node, type, pos, loc) { + return finishNodeAt.call(this, node, type, pos, loc) + }; - if (typeof limit === "number") { - Error.stackTraceLimit = limit; - } + pp$2.copyNode = function(node) { + var newNode = new Node(this, node.start, this.startLoc); + for (var prop in node) { newNode[prop] = node[prop]; } + return newNode + }; - throw Object.assign(err, { - code: "BABEL_VERSION_UNSUPPORTED", - version: _.version, - range - }); -} + // This file was generated by "bin/generate-unicode-script-values.js". Do not modify manually! + var scriptValuesAddedInUnicode = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"; + + // This file contains Unicode properties extracted from the ECMAScript specification. + // The lists are extracted like so: + // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) + + // #table-binary-unicode-properties + var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; + var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; + var ecma11BinaryProperties = ecma10BinaryProperties; + var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; + var ecma13BinaryProperties = ecma12BinaryProperties; + var ecma14BinaryProperties = ecma13BinaryProperties; + + var unicodeBinaryProperties = { + 9: ecma9BinaryProperties, + 10: ecma10BinaryProperties, + 11: ecma11BinaryProperties, + 12: ecma12BinaryProperties, + 13: ecma13BinaryProperties, + 14: ecma14BinaryProperties + }; -/***/ }), + // #table-binary-unicode-properties-of-strings + var ecma14BinaryPropertiesOfStrings = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"; -/***/ 58915: -/***/ ((__unused_webpack_module, exports) => { + var unicodeBinaryPropertiesOfStrings = { + 9: "", + 10: "", + 11: "", + 12: "", + 13: "", + 14: ecma14BinaryPropertiesOfStrings + }; -"use strict"; + // #table-unicode-general-category-values + var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; + + // #table-unicode-script-values + var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; + var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; + var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; + var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; + var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; + var ecma14ScriptValues = ecma13ScriptValues + " " + scriptValuesAddedInUnicode; + + var unicodeScriptValues = { + 9: ecma9ScriptValues, + 10: ecma10ScriptValues, + 11: ecma11ScriptValues, + 12: ecma12ScriptValues, + 13: ecma13ScriptValues, + 14: ecma14ScriptValues + }; + var data = {}; + function buildUnicodeData(ecmaVersion) { + var d = data[ecmaVersion] = { + binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), + binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]), + nonBinary: { + General_Category: wordsRegexp(unicodeGeneralCategoryValues), + Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) + } + }; + d.nonBinary.Script_Extensions = d.nonBinary.Script; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getEnv = getEnv; + d.nonBinary.gc = d.nonBinary.General_Category; + d.nonBinary.sc = d.nonBinary.Script; + d.nonBinary.scx = d.nonBinary.Script_Extensions; + } -function getEnv(defaultValue = "development") { - return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue; -} + for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) { + var ecmaVersion = list[i]; -/***/ }), + buildUnicodeData(ecmaVersion); + } -/***/ 36797: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + var pp$1 = Parser.prototype; -"use strict"; + // Track disjunction structure to determine whether a duplicate + // capture group name is allowed because it is in a separate branch. + var BranchID = function BranchID(parent, base) { + // Parent disjunction branch + this.parent = parent; + // Identifies this set of sibling branches + this.base = base || this; + }; + BranchID.prototype.separatedFrom = function separatedFrom (alt) { + // A branch is separate from another branch if they or any of + // their parents are siblings in a given disjunction + for (var self = this; self; self = self.parent) { + for (var other = alt; other; other = other.parent) { + if (self.base === other.base && self !== other) { return true } + } + } + return false + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "default", ({ - enumerable: true, - get: function () { - return _full.default; - } -})); -exports.loadOptionsAsync = exports.loadOptionsSync = exports.loadOptions = exports.loadPartialConfigAsync = exports.loadPartialConfigSync = exports.loadPartialConfig = void 0; + BranchID.prototype.sibling = function sibling () { + return new BranchID(this.parent, this.base) + }; -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + var RegExpValidationState = function RegExpValidationState(parser) { + this.parser = parser; + this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); + this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion]; + this.source = ""; + this.flags = ""; + this.start = 0; + this.switchU = false; + this.switchV = false; + this.switchN = false; + this.pos = 0; + this.lastIntValue = 0; + this.lastStringValue = ""; + this.lastAssertionIsQuantifiable = false; + this.numCapturingParens = 0; + this.maxBackReference = 0; + this.groupNames = Object.create(null); + this.backReferenceNames = []; + this.branchID = null; + }; - _gensync = function () { - return data; + RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { + var unicodeSets = flags.indexOf("v") !== -1; + var unicode = flags.indexOf("u") !== -1; + this.start = start | 0; + this.source = pattern + ""; + this.flags = flags; + if (unicodeSets && this.parser.options.ecmaVersion >= 15) { + this.switchU = true; + this.switchV = true; + this.switchN = true; + } else { + this.switchU = unicode && this.parser.options.ecmaVersion >= 6; + this.switchV = false; + this.switchN = unicode && this.parser.options.ecmaVersion >= 9; + } }; - return data; -} + RegExpValidationState.prototype.raise = function raise (message) { + this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); + }; -var _full = _interopRequireDefault(__nccwpck_require__(63918)); + // If u flag is given, this returns the code point at the index (it combines a surrogate pair). + // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). + RegExpValidationState.prototype.at = function at (i, forceU) { + if ( forceU === void 0 ) forceU = false; -var _partial = __nccwpck_require__(67399); + var s = this.source; + var l = s.length; + if (i >= l) { + return -1 + } + var c = s.charCodeAt(i); + if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { + return c + } + var next = s.charCodeAt(i + 1); + return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) { + if ( forceU === void 0 ) forceU = false; -const loadOptionsRunner = (0, _gensync().default)(function* (opts) { - var _config$options; + var s = this.source; + var l = s.length; + if (i >= l) { + return l + } + var c = s.charCodeAt(i), next; + if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || + (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { + return i + 1 + } + return i + 2 + }; - const config = yield* (0, _full.default)(opts); - return (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null; -}); + RegExpValidationState.prototype.current = function current (forceU) { + if ( forceU === void 0 ) forceU = false; -const maybeErrback = runner => (opts, callback) => { - if (callback === undefined && typeof opts === "function") { - callback = opts; - opts = undefined; - } + return this.at(this.pos, forceU) + }; - return callback ? runner.errback(opts, callback) : runner.sync(opts); -}; + RegExpValidationState.prototype.lookahead = function lookahead (forceU) { + if ( forceU === void 0 ) forceU = false; -const loadPartialConfig = maybeErrback(_partial.loadPartialConfig); -exports.loadPartialConfig = loadPartialConfig; -const loadPartialConfigSync = _partial.loadPartialConfig.sync; -exports.loadPartialConfigSync = loadPartialConfigSync; -const loadPartialConfigAsync = _partial.loadPartialConfig.async; -exports.loadPartialConfigAsync = loadPartialConfigAsync; -const loadOptions = maybeErrback(loadOptionsRunner); -exports.loadOptions = loadOptions; -const loadOptionsSync = loadOptionsRunner.sync; -exports.loadOptionsSync = loadOptionsSync; -const loadOptionsAsync = loadOptionsRunner.async; -exports.loadOptionsAsync = loadOptionsAsync; + return this.at(this.nextIndex(this.pos, forceU), forceU) + }; -/***/ }), + RegExpValidationState.prototype.advance = function advance (forceU) { + if ( forceU === void 0 ) forceU = false; -/***/ 58050: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + this.pos = this.nextIndex(this.pos, forceU); + }; -"use strict"; + RegExpValidationState.prototype.eat = function eat (ch, forceU) { + if ( forceU === void 0 ) forceU = false; + if (this.current(forceU) === ch) { + this.advance(forceU); + return true + } + return false + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createItemFromDescriptor = createItemFromDescriptor; -exports.createConfigItem = createConfigItem; -exports.getItemDescriptor = getItemDescriptor; + RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) { + if ( forceU === void 0 ) forceU = false; -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + var pos = this.pos; + for (var i = 0, list = chs; i < list.length; i += 1) { + var ch = list[i]; - _path = function () { - return data; + var current = this.at(pos, forceU); + if (current === -1 || current !== ch) { + return false + } + pos = this.nextIndex(pos, forceU); + } + this.pos = pos; + return true }; - return data; -} - -var _configDescriptors = __nccwpck_require__(5847); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /** + * Validate the flags part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ + pp$1.validateRegExpFlags = function(state) { + var validFlags = state.validFlags; + var flags = state.flags; -function createItemFromDescriptor(desc) { - return new ConfigItem(desc); -} + var u = false; + var v = false; -function createConfigItem(value, { - dirname = ".", - type -} = {}) { - const descriptor = (0, _configDescriptors.createDescriptor)(value, _path().default.resolve(dirname), { - type, - alias: "programmatic item" - }); - return createItemFromDescriptor(descriptor); -} + for (var i = 0; i < flags.length; i++) { + var flag = flags.charAt(i); + if (validFlags.indexOf(flag) === -1) { + this.raise(state.start, "Invalid regular expression flag"); + } + if (flags.indexOf(flag, i + 1) > -1) { + this.raise(state.start, "Duplicate regular expression flag"); + } + if (flag === "u") { u = true; } + if (flag === "v") { v = true; } + } + if (this.options.ecmaVersion >= 15 && u && v) { + this.raise(state.start, "Invalid regular expression flag"); + } + }; -function getItemDescriptor(item) { - if (item == null ? void 0 : item[CONFIG_ITEM_BRAND]) { - return item._descriptor; + function hasProp(obj) { + for (var _ in obj) { return true } + return false } - return undefined; -} + /** + * Validate the pattern part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ + pp$1.validateRegExpPattern = function(state) { + this.regexp_pattern(state); + + // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of + // parsing contains a |GroupName|, reparse with the goal symbol + // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* + // exception if _P_ did not conform to the grammar, if any elements of _P_ + // were not matched by the parse, or if any Early Error conditions exist. + if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) { + state.switchN = true; + this.regexp_pattern(state); + } + }; -const CONFIG_ITEM_BRAND = Symbol.for("@babel/core@7 - ConfigItem"); - -class ConfigItem { - constructor(descriptor) { - this._descriptor = void 0; - this[CONFIG_ITEM_BRAND] = true; - this.value = void 0; - this.options = void 0; - this.dirname = void 0; - this.name = void 0; - this.file = void 0; - this._descriptor = descriptor; - Object.defineProperty(this, "_descriptor", { - enumerable: false - }); - Object.defineProperty(this, CONFIG_ITEM_BRAND, { - enumerable: false - }); - this.value = this._descriptor.value; - this.options = this._descriptor.options; - this.dirname = this._descriptor.dirname; - this.name = this._descriptor.name; - this.file = this._descriptor.file ? { - request: this._descriptor.file.request, - resolved: this._descriptor.file.resolved - } : undefined; - Object.freeze(this); - } + // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern + pp$1.regexp_pattern = function(state) { + state.pos = 0; + state.lastIntValue = 0; + state.lastStringValue = ""; + state.lastAssertionIsQuantifiable = false; + state.numCapturingParens = 0; + state.maxBackReference = 0; + state.groupNames = Object.create(null); + state.backReferenceNames.length = 0; + state.branchID = null; -} + this.regexp_disjunction(state); -Object.freeze(ConfigItem.prototype); + if (state.pos !== state.source.length) { + // Make the same messages as V8. + if (state.eat(0x29 /* ) */)) { + state.raise("Unmatched ')'"); + } + if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { + state.raise("Lone quantifier brackets"); + } + } + if (state.maxBackReference > state.numCapturingParens) { + state.raise("Invalid escape"); + } + for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { + var name = list[i]; -/***/ }), + if (!state.groupNames[name]) { + state.raise("Invalid named capture referenced"); + } + } + }; -/***/ 67399: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction + pp$1.regexp_disjunction = function(state) { + var trackDisjunction = this.options.ecmaVersion >= 16; + if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); } + this.regexp_alternative(state); + while (state.eat(0x7C /* | */)) { + if (trackDisjunction) { state.branchID = state.branchID.sibling(); } + this.regexp_alternative(state); + } + if (trackDisjunction) { state.branchID = state.branchID.parent; } -"use strict"; + // Make the same message as V8. + if (this.regexp_eatQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + if (state.eat(0x7B /* { */)) { + state.raise("Lone quantifier brackets"); + } + }; + // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative + pp$1.regexp_alternative = function(state) { + while (state.pos < state.source.length && this.regexp_eatTerm(state)) {} + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = loadPrivatePartialConfig; -exports.loadPartialConfig = void 0; + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term + pp$1.regexp_eatTerm = function(state) { + if (this.regexp_eatAssertion(state)) { + // Handle `QuantifiableAssertion Quantifier` alternative. + // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion + // is a QuantifiableAssertion. + if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { + // Make the same message as V8. + if (state.switchU) { + state.raise("Invalid quantifier"); + } + } + return true + } -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { + this.regexp_eatQuantifier(state); + return true + } - _path = function () { - return data; + return false }; - return data; -} + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion + pp$1.regexp_eatAssertion = function(state) { + var start = state.pos; + state.lastAssertionIsQuantifiable = false; -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + // ^, $ + if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { + return true + } - _gensync = function () { - return data; - }; + // \b \B + if (state.eat(0x5C /* \ */)) { + if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { + return true + } + state.pos = start; + } - return data; -} + // Lookahead / Lookbehind + if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { + var lookbehind = false; + if (this.options.ecmaVersion >= 9) { + lookbehind = state.eat(0x3C /* < */); + } + if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { + this.regexp_disjunction(state); + if (!state.eat(0x29 /* ) */)) { + state.raise("Unterminated group"); + } + state.lastAssertionIsQuantifiable = !lookbehind; + return true + } + } + + state.pos = start; + return false + }; -var _plugin = _interopRequireDefault(__nccwpck_require__(4725)); + // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier + pp$1.regexp_eatQuantifier = function(state, noError) { + if ( noError === void 0 ) noError = false; -var _util = __nccwpck_require__(60391); + if (this.regexp_eatQuantifierPrefix(state, noError)) { + state.eat(0x3F /* ? */); + return true + } + return false + }; -var _item = __nccwpck_require__(58050); + // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix + pp$1.regexp_eatQuantifierPrefix = function(state, noError) { + return ( + state.eat(0x2A /* * */) || + state.eat(0x2B /* + */) || + state.eat(0x3F /* ? */) || + this.regexp_eatBracedQuantifier(state, noError) + ) + }; + pp$1.regexp_eatBracedQuantifier = function(state, noError) { + var start = state.pos; + if (state.eat(0x7B /* { */)) { + var min = 0, max = -1; + if (this.regexp_eatDecimalDigits(state)) { + min = state.lastIntValue; + if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { + max = state.lastIntValue; + } + if (state.eat(0x7D /* } */)) { + // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term + if (max !== -1 && max < min && !noError) { + state.raise("numbers out of order in {} quantifier"); + } + return true + } + } + if (state.switchU && !noError) { + state.raise("Incomplete quantifier"); + } + state.pos = start; + } + return false + }; -var _configChain = __nccwpck_require__(57390); + // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom + pp$1.regexp_eatAtom = function(state) { + return ( + this.regexp_eatPatternCharacters(state) || + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) + ) + }; + pp$1.regexp_eatReverseSolidusAtomEscape = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatAtomEscape(state)) { + return true + } + state.pos = start; + } + return false + }; + pp$1.regexp_eatUncapturingGroup = function(state) { + var start = state.pos; + if (state.eat(0x28 /* ( */)) { + if (state.eat(0x3F /* ? */)) { + if (this.options.ecmaVersion >= 16) { + var addModifiers = this.regexp_eatModifiers(state); + var hasHyphen = state.eat(0x2D /* - */); + if (addModifiers || hasHyphen) { + for (var i = 0; i < addModifiers.length; i++) { + var modifier = addModifiers.charAt(i); + if (addModifiers.indexOf(modifier, i + 1) > -1) { + state.raise("Duplicate regular expression modifiers"); + } + } + if (hasHyphen) { + var removeModifiers = this.regexp_eatModifiers(state); + if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) { + state.raise("Invalid regular expression modifiers"); + } + for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) { + var modifier$1 = removeModifiers.charAt(i$1); + if ( + removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || + addModifiers.indexOf(modifier$1) > -1 + ) { + state.raise("Duplicate regular expression modifiers"); + } + } + } + } + } + if (state.eat(0x3A /* : */)) { + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + return true + } + state.raise("Unterminated group"); + } + } + state.pos = start; + } + return false + }; + pp$1.regexp_eatCapturingGroup = function(state) { + if (state.eat(0x28 /* ( */)) { + if (this.options.ecmaVersion >= 9) { + this.regexp_groupSpecifier(state); + } else if (state.current() === 0x3F /* ? */) { + state.raise("Invalid group"); + } + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + state.numCapturingParens += 1; + return true + } + state.raise("Unterminated group"); + } + return false + }; + // RegularExpressionModifiers :: + // [empty] + // RegularExpressionModifiers RegularExpressionModifier + pp$1.regexp_eatModifiers = function(state) { + var modifiers = ""; + var ch = 0; + while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) { + modifiers += codePointToString(ch); + state.advance(); + } + return modifiers + }; + // RegularExpressionModifier :: one of + // `i` `m` `s` + function isRegularExpressionModifier(ch) { + return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */ + } -var _environment = __nccwpck_require__(58915); + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom + pp$1.regexp_eatExtendedAtom = function(state) { + return ( + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) || + this.regexp_eatInvalidBracedQuantifier(state) || + this.regexp_eatExtendedPatternCharacter(state) + ) + }; -var _options = __nccwpck_require__(14087); + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier + pp$1.regexp_eatInvalidBracedQuantifier = function(state) { + if (this.regexp_eatBracedQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + return false + }; -var _files = __nccwpck_require__(53954); + // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter + pp$1.regexp_eatSyntaxCharacter = function(state) { + var ch = state.current(); + if (isSyntaxCharacter(ch)) { + state.lastIntValue = ch; + state.advance(); + return true + } + return false + }; + function isSyntaxCharacter(ch) { + return ( + ch === 0x24 /* $ */ || + ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || + ch === 0x2E /* . */ || + ch === 0x3F /* ? */ || + ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter + // But eat eager. + pp$1.regexp_eatPatternCharacters = function(state) { + var start = state.pos; + var ch = 0; + while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { + state.advance(); + } + return state.pos !== start + }; -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter + pp$1.regexp_eatExtendedPatternCharacter = function(state) { + var ch = state.current(); + if ( + ch !== -1 && + ch !== 0x24 /* $ */ && + !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && + ch !== 0x2E /* . */ && + ch !== 0x3F /* ? */ && + ch !== 0x5B /* [ */ && + ch !== 0x5E /* ^ */ && + ch !== 0x7C /* | */ + ) { + state.advance(); + return true + } + return false + }; -function* resolveRootMode(rootDir, rootMode) { - switch (rootMode) { - case "root": - return rootDir; + // GroupSpecifier :: + // [empty] + // `?` GroupName + pp$1.regexp_groupSpecifier = function(state) { + if (state.eat(0x3F /* ? */)) { + if (!this.regexp_eatGroupName(state)) { state.raise("Invalid group"); } + var trackDisjunction = this.options.ecmaVersion >= 16; + var known = state.groupNames[state.lastStringValue]; + if (known) { + if (trackDisjunction) { + for (var i = 0, list = known; i < list.length; i += 1) { + var altID = list[i]; + + if (!altID.separatedFrom(state.branchID)) + { state.raise("Duplicate capture group name"); } + } + } else { + state.raise("Duplicate capture group name"); + } + } + if (trackDisjunction) { + (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID); + } else { + state.groupNames[state.lastStringValue] = true; + } + } + }; - case "upward-optional": - { - const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir); - return upwardRootDir === null ? rootDir : upwardRootDir; + // GroupName :: + // `<` RegExpIdentifierName `>` + // Note: this updates `state.lastStringValue` property with the eaten name. + pp$1.regexp_eatGroupName = function(state) { + state.lastStringValue = ""; + if (state.eat(0x3C /* < */)) { + if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { + return true } + state.raise("Invalid capture group name"); + } + return false + }; - case "upward": - { - const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir); - if (upwardRootDir !== null) return upwardRootDir; - throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}".\n` + `One of the following config files must be in the directory tree: ` + `"${_files.ROOT_CONFIG_FILENAMES.join(", ")}".`), { - code: "BABEL_ROOT_NOT_FOUND", - dirname: rootDir - }); + // RegExpIdentifierName :: + // RegExpIdentifierStart + // RegExpIdentifierName RegExpIdentifierPart + // Note: this updates `state.lastStringValue` property with the eaten name. + pp$1.regexp_eatRegExpIdentifierName = function(state) { + state.lastStringValue = ""; + if (this.regexp_eatRegExpIdentifierStart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + while (this.regexp_eatRegExpIdentifierPart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); } + return true + } + return false + }; - default: - throw new Error(`Assertion failure - unknown rootMode value.`); - } -} + // RegExpIdentifierStart :: + // UnicodeIDStart + // `$` + // `_` + // `\` RegExpUnicodeEscapeSequence[+U] + pp$1.regexp_eatRegExpIdentifierStart = function(state) { + var start = state.pos; + var forceU = this.options.ecmaVersion >= 11; + var ch = state.current(forceU); + state.advance(forceU); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierStart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false + }; + function isRegExpIdentifierStart(ch) { + return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ + } + + // RegExpIdentifierPart :: + // UnicodeIDContinue + // `$` + // `_` + // `\` RegExpUnicodeEscapeSequence[+U] + // <ZWNJ> + // <ZWJ> + pp$1.regexp_eatRegExpIdentifierPart = function(state) { + var start = state.pos; + var forceU = this.options.ecmaVersion >= 11; + var ch = state.current(forceU); + state.advance(forceU); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierPart(ch)) { + state.lastIntValue = ch; + return true + } -function* loadPrivatePartialConfig(inputOpts) { - if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) { - throw new Error("Babel options must be an object, null, or undefined"); + state.pos = start; + return false + }; + function isRegExpIdentifierPart(ch) { + return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */ } - const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {}; - const { - envName = (0, _environment.getEnv)(), - cwd = ".", - root: rootDir = ".", - rootMode = "root", - caller, - cloneInputAst = true - } = args; - - const absoluteCwd = _path().default.resolve(cwd); - - const absoluteRootDir = yield* resolveRootMode(_path().default.resolve(absoluteCwd, rootDir), rootMode); - const filename = typeof args.filename === "string" ? _path().default.resolve(cwd, args.filename) : undefined; - const showConfigPath = yield* (0, _files.resolveShowConfigPath)(absoluteCwd); - const context = { - filename, - cwd: absoluteCwd, - root: absoluteRootDir, - envName, - caller, - showConfig: showConfigPath === filename + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape + pp$1.regexp_eatAtomEscape = function(state) { + if ( + this.regexp_eatBackReference(state) || + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) || + (state.switchN && this.regexp_eatKGroupName(state)) + ) { + return true + } + if (state.switchU) { + // Make the same message as V8. + if (state.current() === 0x63 /* c */) { + state.raise("Invalid unicode escape"); + } + state.raise("Invalid escape"); + } + return false }; - const configChain = yield* (0, _configChain.buildRootChain)(args, context); - if (!configChain) return null; - const options = {}; - configChain.options.forEach(opts => { - (0, _util.mergeOptions)(options, opts); - }); - options.cloneInputAst = cloneInputAst; - options.babelrc = false; - options.configFile = false; - options.passPerPreset = false; - options.envName = context.envName; - options.cwd = context.cwd; - options.root = context.root; - options.filename = typeof context.filename === "string" ? context.filename : undefined; - options.plugins = configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); - options.presets = configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); - return { - options, - context, - fileHandling: configChain.fileHandling, - ignore: configChain.ignore, - babelrc: configChain.babelrc, - config: configChain.config, - files: configChain.files + pp$1.regexp_eatBackReference = function(state) { + var start = state.pos; + if (this.regexp_eatDecimalEscape(state)) { + var n = state.lastIntValue; + if (state.switchU) { + // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape + if (n > state.maxBackReference) { + state.maxBackReference = n; + } + return true + } + if (n <= state.numCapturingParens) { + return true + } + state.pos = start; + } + return false + }; + pp$1.regexp_eatKGroupName = function(state) { + if (state.eat(0x6B /* k */)) { + if (this.regexp_eatGroupName(state)) { + state.backReferenceNames.push(state.lastStringValue); + return true + } + state.raise("Invalid named reference"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape + pp$1.regexp_eatCharacterEscape = function(state) { + return ( + this.regexp_eatControlEscape(state) || + this.regexp_eatCControlLetter(state) || + this.regexp_eatZero(state) || + this.regexp_eatHexEscapeSequence(state) || + this.regexp_eatRegExpUnicodeEscapeSequence(state, false) || + (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || + this.regexp_eatIdentityEscape(state) + ) + }; + pp$1.regexp_eatCControlLetter = function(state) { + var start = state.pos; + if (state.eat(0x63 /* c */)) { + if (this.regexp_eatControlLetter(state)) { + return true + } + state.pos = start; + } + return false + }; + pp$1.regexp_eatZero = function(state) { + if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { + state.lastIntValue = 0; + state.advance(); + return true + } + return false }; -} -const loadPartialConfig = (0, _gensync().default)(function* (opts) { - let showIgnoredFiles = false; + // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape + pp$1.regexp_eatControlEscape = function(state) { + var ch = state.current(); + if (ch === 0x74 /* t */) { + state.lastIntValue = 0x09; /* \t */ + state.advance(); + return true + } + if (ch === 0x6E /* n */) { + state.lastIntValue = 0x0A; /* \n */ + state.advance(); + return true + } + if (ch === 0x76 /* v */) { + state.lastIntValue = 0x0B; /* \v */ + state.advance(); + return true + } + if (ch === 0x66 /* f */) { + state.lastIntValue = 0x0C; /* \f */ + state.advance(); + return true + } + if (ch === 0x72 /* r */) { + state.lastIntValue = 0x0D; /* \r */ + state.advance(); + return true + } + return false + }; - if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) { - var _opts = opts; - ({ - showIgnoredFiles - } = _opts); - opts = _objectWithoutPropertiesLoose(_opts, ["showIgnoredFiles"]); - _opts; + // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter + pp$1.regexp_eatControlLetter = function(state) { + var ch = state.current(); + if (isControlLetter(ch)) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false + }; + function isControlLetter(ch) { + return ( + (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || + (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) + ) } - const result = yield* loadPrivatePartialConfig(opts); - if (!result) return null; - const { - options, - babelrc, - ignore, - config, - fileHandling, - files - } = result; + // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence + pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) { + if ( forceU === void 0 ) forceU = false; - if (fileHandling === "ignored" && !showIgnoredFiles) { - return null; - } + var start = state.pos; + var switchU = forceU || state.switchU; - (options.plugins || []).forEach(item => { - if (item.value instanceof _plugin.default) { - throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()"); + if (state.eat(0x75 /* u */)) { + if (this.regexp_eatFixedHexDigits(state, 4)) { + var lead = state.lastIntValue; + if (switchU && lead >= 0xD800 && lead <= 0xDBFF) { + var leadSurrogateEnd = state.pos; + if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { + var trail = state.lastIntValue; + if (trail >= 0xDC00 && trail <= 0xDFFF) { + state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + return true + } + } + state.pos = leadSurrogateEnd; + state.lastIntValue = lead; + } + return true + } + if ( + switchU && + state.eat(0x7B /* { */) && + this.regexp_eatHexDigits(state) && + state.eat(0x7D /* } */) && + isValidUnicode(state.lastIntValue) + ) { + return true + } + if (switchU) { + state.raise("Invalid unicode escape"); + } + state.pos = start; } - }); - return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files); -}); -exports.loadPartialConfig = loadPartialConfig; -class PartialConfig { - constructor(options, babelrc, ignore, config, fileHandling, files) { - this.options = void 0; - this.babelrc = void 0; - this.babelignore = void 0; - this.config = void 0; - this.fileHandling = void 0; - this.files = void 0; - this.options = options; - this.babelignore = ignore; - this.babelrc = babelrc; - this.config = config; - this.fileHandling = fileHandling; - this.files = files; - Object.freeze(this); - } - - hasFilesystemConfig() { - return this.babelrc !== undefined || this.config !== undefined; + return false + }; + function isValidUnicode(ch) { + return ch >= 0 && ch <= 0x10FFFF } -} + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape + pp$1.regexp_eatIdentityEscape = function(state) { + if (state.switchU) { + if (this.regexp_eatSyntaxCharacter(state)) { + return true + } + if (state.eat(0x2F /* / */)) { + state.lastIntValue = 0x2F; /* / */ + return true + } + return false + } -Object.freeze(PartialConfig.prototype); + var ch = state.current(); + if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { + state.lastIntValue = ch; + state.advance(); + return true + } -/***/ }), + return false + }; -/***/ 59056: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape + pp$1.regexp_eatDecimalEscape = function(state) { + state.lastIntValue = 0; + var ch = state.current(); + if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { + do { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) + return true + } + return false + }; -"use strict"; + // Return values used by character set parsing methods, needed to + // forbid negation of sets that can match strings. + var CharSetNone = 0; // Nothing parsed + var CharSetOk = 1; // Construct parsed, cannot contain strings + var CharSetString = 2; // Construct parsed, can contain strings + // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape + pp$1.regexp_eatCharacterClassEscape = function(state) { + var ch = state.current(); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = pathToPattern; + if (isCharacterClassEscape(ch)) { + state.lastIntValue = -1; + state.advance(); + return CharSetOk + } -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); + var negate = false; + if ( + state.switchU && + this.options.ecmaVersion >= 9 && + ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */) + ) { + state.lastIntValue = -1; + state.advance(); + var result; + if ( + state.eat(0x7B /* { */) && + (result = this.regexp_eatUnicodePropertyValueExpression(state)) && + state.eat(0x7D /* } */) + ) { + if (negate && result === CharSetString) { state.raise("Invalid property name"); } + return result + } + state.raise("Invalid property name"); + } - _path = function () { - return data; + return CharSetNone }; - return data; -} - -function _escapeRegExp() { - const data = _interopRequireDefault(__nccwpck_require__(11160)); - - _escapeRegExp = function () { - return data; - }; + function isCharacterClassEscape(ch) { + return ( + ch === 0x64 /* d */ || + ch === 0x44 /* D */ || + ch === 0x73 /* s */ || + ch === 0x53 /* S */ || + ch === 0x77 /* w */ || + ch === 0x57 /* W */ + ) + } - return data; -} + // UnicodePropertyValueExpression :: + // UnicodePropertyName `=` UnicodePropertyValue + // LoneUnicodePropertyNameOrValue + pp$1.regexp_eatUnicodePropertyValueExpression = function(state) { + var start = state.pos; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + // UnicodePropertyName `=` UnicodePropertyValue + if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { + var name = state.lastStringValue; + if (this.regexp_eatUnicodePropertyValue(state)) { + var value = state.lastStringValue; + this.regexp_validateUnicodePropertyNameAndValue(state, name, value); + return CharSetOk + } + } + state.pos = start; -const sep = `\\${_path().default.sep}`; -const endSep = `(?:${sep}|$)`; -const substitution = `[^${sep}]+`; -const starPat = `(?:${substitution}${sep})`; -const starPatLast = `(?:${substitution}${endSep})`; -const starStarPat = `${starPat}*?`; -const starStarPatLast = `${starPat}*?${starPatLast}?`; + // LoneUnicodePropertyNameOrValue + if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { + var nameOrValue = state.lastStringValue; + return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue) + } + return CharSetNone + }; -function pathToPattern(pattern, dirname) { - const parts = _path().default.resolve(dirname, pattern).split(_path().default.sep); + pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { + if (!hasOwn(state.unicodeProperties.nonBinary, name)) + { state.raise("Invalid property name"); } + if (!state.unicodeProperties.nonBinary[name].test(value)) + { state.raise("Invalid property value"); } + }; - return new RegExp(["^", ...parts.map((part, i) => { - const last = i === parts.length - 1; - if (part === "**") return last ? starStarPatLast : starStarPat; - if (part === "*") return last ? starPatLast : starPat; + pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { + if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk } + if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString } + state.raise("Invalid property name"); + }; - if (part.indexOf("*.") === 0) { - return substitution + (0, _escapeRegExp().default)(part.slice(1)) + (last ? endSep : sep); + // UnicodePropertyName :: + // UnicodePropertyNameCharacters + pp$1.regexp_eatUnicodePropertyName = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyNameCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); } + return state.lastStringValue !== "" + }; - return (0, _escapeRegExp().default)(part) + (last ? endSep : sep); - })].join("")); -} + function isUnicodePropertyNameCharacter(ch) { + return isControlLetter(ch) || ch === 0x5F /* _ */ + } -/***/ }), + // UnicodePropertyValue :: + // UnicodePropertyValueCharacters + pp$1.regexp_eatUnicodePropertyValue = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyValueCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" + }; + function isUnicodePropertyValueCharacter(ch) { + return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) + } -/***/ 4725: -/***/ ((__unused_webpack_module, exports) => { + // LoneUnicodePropertyNameOrValue :: + // UnicodePropertyValueCharacters + pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { + return this.regexp_eatUnicodePropertyValue(state) + }; -"use strict"; + // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass + pp$1.regexp_eatCharacterClass = function(state) { + if (state.eat(0x5B /* [ */)) { + var negate = state.eat(0x5E /* ^ */); + var result = this.regexp_classContents(state); + if (!state.eat(0x5D /* ] */)) + { state.raise("Unterminated character class"); } + if (negate && result === CharSetString) + { state.raise("Negated character class may contain strings"); } + return true + } + return false + }; + // https://tc39.es/ecma262/#prod-ClassContents + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges + pp$1.regexp_classContents = function(state) { + if (state.current() === 0x5D /* ] */) { return CharSetOk } + if (state.switchV) { return this.regexp_classSetExpression(state) } + this.regexp_nonEmptyClassRanges(state); + return CharSetOk + }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges + // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash + pp$1.regexp_nonEmptyClassRanges = function(state) { + while (this.regexp_eatClassAtom(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { + var right = state.lastIntValue; + if (state.switchU && (left === -1 || right === -1)) { + state.raise("Invalid character class"); + } + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); + } + } + } + }; -class Plugin { - constructor(plugin, options, key) { - this.key = void 0; - this.manipulateOptions = void 0; - this.post = void 0; - this.pre = void 0; - this.visitor = void 0; - this.parserOverride = void 0; - this.generatorOverride = void 0; - this.options = void 0; - this.key = plugin.name || key; - this.manipulateOptions = plugin.manipulateOptions; - this.post = plugin.post; - this.pre = plugin.pre; - this.visitor = plugin.visitor || {}; - this.parserOverride = plugin.parserOverride; - this.generatorOverride = plugin.generatorOverride; - this.options = options; - } + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash + pp$1.regexp_eatClassAtom = function(state) { + var start = state.pos; -} + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatClassEscape(state)) { + return true + } + if (state.switchU) { + // Make the same message as V8. + var ch$1 = state.current(); + if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { + state.raise("Invalid class escape"); + } + state.raise("Invalid escape"); + } + state.pos = start; + } -exports["default"] = Plugin; + var ch = state.current(); + if (ch !== 0x5D /* ] */) { + state.lastIntValue = ch; + state.advance(); + return true + } -/***/ }), + return false + }; -/***/ 21489: -/***/ ((__unused_webpack_module, exports) => { + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape + pp$1.regexp_eatClassEscape = function(state) { + var start = state.pos; -"use strict"; + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* <BS> */ + return true + } + if (state.switchU && state.eat(0x2D /* - */)) { + state.lastIntValue = 0x2D; /* - */ + return true + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ConfigPrinter = exports.ChainFormatter = void 0; -const ChainFormatter = { - Programmatic: 0, - Config: 1 -}; -exports.ChainFormatter = ChainFormatter; -const Formatter = { - title(type, callerName, filepath) { - let title = ""; + if (!state.switchU && state.eat(0x63 /* c */)) { + if (this.regexp_eatClassControlLetter(state)) { + return true + } + state.pos = start; + } - if (type === ChainFormatter.Programmatic) { - title = "programmatic options"; + return ( + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) + ) + }; - if (callerName) { - title += " from " + callerName; + // https://tc39.es/ecma262/#prod-ClassSetExpression + // https://tc39.es/ecma262/#prod-ClassUnion + // https://tc39.es/ecma262/#prod-ClassIntersection + // https://tc39.es/ecma262/#prod-ClassSubtraction + pp$1.regexp_classSetExpression = function(state) { + var result = CharSetOk, subResult; + if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) { + if (subResult === CharSetString) { result = CharSetString; } + // https://tc39.es/ecma262/#prod-ClassIntersection + var start = state.pos; + while (state.eatChars([0x26, 0x26] /* && */)) { + if ( + state.current() !== 0x26 /* & */ && + (subResult = this.regexp_eatClassSetOperand(state)) + ) { + if (subResult !== CharSetString) { result = CharSetOk; } + continue + } + state.raise("Invalid character in character class"); } + if (start !== state.pos) { return result } + // https://tc39.es/ecma262/#prod-ClassSubtraction + while (state.eatChars([0x2D, 0x2D] /* -- */)) { + if (this.regexp_eatClassSetOperand(state)) { continue } + state.raise("Invalid character in character class"); + } + if (start !== state.pos) { return result } } else { - title = "config " + filepath; + state.raise("Invalid character in character class"); + } + // https://tc39.es/ecma262/#prod-ClassUnion + for (;;) { + if (this.regexp_eatClassSetRange(state)) { continue } + subResult = this.regexp_eatClassSetOperand(state); + if (!subResult) { return result } + if (subResult === CharSetString) { result = CharSetString; } } + }; - return title; - }, + // https://tc39.es/ecma262/#prod-ClassSetRange + pp$1.regexp_eatClassSetRange = function(state) { + var start = state.pos; + if (this.regexp_eatClassSetCharacter(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) { + var right = state.lastIntValue; + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); + } + return true + } + state.pos = start; + } + return false + }; - loc(index, envName) { - let loc = ""; + // https://tc39.es/ecma262/#prod-ClassSetOperand + pp$1.regexp_eatClassSetOperand = function(state) { + if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk } + return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state) + }; - if (index != null) { - loc += `.overrides[${index}]`; + // https://tc39.es/ecma262/#prod-NestedClass + pp$1.regexp_eatNestedClass = function(state) { + var start = state.pos; + if (state.eat(0x5B /* [ */)) { + var negate = state.eat(0x5E /* ^ */); + var result = this.regexp_classContents(state); + if (state.eat(0x5D /* ] */)) { + if (negate && result === CharSetString) { + state.raise("Negated character class may contain strings"); + } + return result + } + state.pos = start; } - - if (envName != null) { - loc += `.env["${envName}"]`; + if (state.eat(0x5C /* \ */)) { + var result$1 = this.regexp_eatCharacterClassEscape(state); + if (result$1) { + return result$1 + } + state.pos = start; } + return null + }; - return loc; - }, - - optionsAndDescriptors(opt) { - const content = Object.assign({}, opt.options); - delete content.overrides; - delete content.env; - const pluginDescriptors = [...opt.plugins()]; + // https://tc39.es/ecma262/#prod-ClassStringDisjunction + pp$1.regexp_eatClassStringDisjunction = function(state) { + var start = state.pos; + if (state.eatChars([0x5C, 0x71] /* \q */)) { + if (state.eat(0x7B /* { */)) { + var result = this.regexp_classStringDisjunctionContents(state); + if (state.eat(0x7D /* } */)) { + return result + } + } else { + // Make the same message as V8. + state.raise("Invalid escape"); + } + state.pos = start; + } + return null + }; - if (pluginDescriptors.length) { - content.plugins = pluginDescriptors.map(d => descriptorToConfig(d)); + // https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents + pp$1.regexp_classStringDisjunctionContents = function(state) { + var result = this.regexp_classString(state); + while (state.eat(0x7C /* | */)) { + if (this.regexp_classString(state) === CharSetString) { result = CharSetString; } } + return result + }; - const presetDescriptors = [...opt.presets()]; + // https://tc39.es/ecma262/#prod-ClassString + // https://tc39.es/ecma262/#prod-NonEmptyClassString + pp$1.regexp_classString = function(state) { + var count = 0; + while (this.regexp_eatClassSetCharacter(state)) { count++; } + return count === 1 ? CharSetOk : CharSetString + }; - if (presetDescriptors.length) { - content.presets = [...presetDescriptors].map(d => descriptorToConfig(d)); + // https://tc39.es/ecma262/#prod-ClassSetCharacter + pp$1.regexp_eatClassSetCharacter = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if ( + this.regexp_eatCharacterEscape(state) || + this.regexp_eatClassSetReservedPunctuator(state) + ) { + return true + } + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* <BS> */ + return true + } + state.pos = start; + return false } + var ch = state.current(); + if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false } + if (isClassSetSyntaxCharacter(ch)) { return false } + state.advance(); + state.lastIntValue = ch; + return true + }; - return JSON.stringify(content, undefined, 2); + // https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator + function isClassSetReservedDoublePunctuatorCharacter(ch) { + return ( + ch === 0x21 /* ! */ || + ch >= 0x23 /* # */ && ch <= 0x26 /* & */ || + ch >= 0x2A /* * */ && ch <= 0x2C /* , */ || + ch === 0x2E /* . */ || + ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ || + ch === 0x5E /* ^ */ || + ch === 0x60 /* ` */ || + ch === 0x7E /* ~ */ + ) } -}; - -function descriptorToConfig(d) { - var _d$file; - - let name = (_d$file = d.file) == null ? void 0 : _d$file.request; + // https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter + function isClassSetSyntaxCharacter(ch) { + return ( + ch === 0x28 /* ( */ || + ch === 0x29 /* ) */ || + ch === 0x2D /* - */ || + ch === 0x2F /* / */ || + ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) + } - if (name == null) { - if (typeof d.value === "object") { - name = d.value; - } else if (typeof d.value === "function") { - name = `[Function: ${d.value.toString().substr(0, 50)} ... ]`; + // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator + pp$1.regexp_eatClassSetReservedPunctuator = function(state) { + var ch = state.current(); + if (isClassSetReservedPunctuator(ch)) { + state.lastIntValue = ch; + state.advance(); + return true } - } + return false + }; - if (name == null) { - name = "[Unknown]"; + // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator + function isClassSetReservedPunctuator(ch) { + return ( + ch === 0x21 /* ! */ || + ch === 0x23 /* # */ || + ch === 0x25 /* % */ || + ch === 0x26 /* & */ || + ch === 0x2C /* , */ || + ch === 0x2D /* - */ || + ch >= 0x3A /* : */ && ch <= 0x3E /* > */ || + ch === 0x40 /* @ */ || + ch === 0x60 /* ` */ || + ch === 0x7E /* ~ */ + ) } - if (d.options === undefined) { - return name; - } else if (d.name == null) { - return [name, d.options]; - } else { - return [name, d.options, d.name]; - } -} + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter + pp$1.regexp_eatClassControlLetter = function(state) { + var ch = state.current(); + if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false + }; -class ConfigPrinter { - constructor() { - this._stack = []; - } + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence + pp$1.regexp_eatHexEscapeSequence = function(state) { + var start = state.pos; + if (state.eat(0x78 /* x */)) { + if (this.regexp_eatFixedHexDigits(state, 2)) { + return true + } + if (state.switchU) { + state.raise("Invalid escape"); + } + state.pos = start; + } + return false + }; - configure(enabled, type, { - callerName, - filepath - }) { - if (!enabled) return () => {}; - return (content, index, envName) => { - this._stack.push({ - type, - callerName, - filepath, - content, - index, - envName - }); - }; + // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits + pp$1.regexp_eatDecimalDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isDecimalDigit(ch = state.current())) { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } + return state.pos !== start + }; + function isDecimalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ } - static format(config) { - let title = Formatter.title(config.type, config.callerName, config.filepath); - const loc = Formatter.loc(config.index, config.envName); - if (loc) title += ` ${loc}`; - const content = Formatter.optionsAndDescriptors(config.content); - return `${title}\n${content}`; + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits + pp$1.regexp_eatHexDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isHexDigit(ch = state.current())) { + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return state.pos !== start + }; + function isHexDigit(ch) { + return ( + (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || + (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || + (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) + ) } - - output() { - if (this._stack.length === 0) return ""; - return this._stack.map(s => ConfigPrinter.format(s)).join("\n\n"); + function hexToInt(ch) { + if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { + return 10 + (ch - 0x41 /* A */) + } + if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { + return 10 + (ch - 0x61 /* a */) + } + return ch - 0x30 /* 0 */ } -} + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence + // Allows only 0-377(octal) i.e. 0-255(decimal). + pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) { + if (this.regexp_eatOctalDigit(state)) { + var n1 = state.lastIntValue; + if (this.regexp_eatOctalDigit(state)) { + var n2 = state.lastIntValue; + if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { + state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; + } else { + state.lastIntValue = n1 * 8 + n2; + } + } else { + state.lastIntValue = n1; + } + return true + } + return false + }; -exports.ConfigPrinter = ConfigPrinter; + // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit + pp$1.regexp_eatOctalDigit = function(state) { + var ch = state.current(); + if (isOctalDigit(ch)) { + state.lastIntValue = ch - 0x30; /* 0 */ + state.advance(); + return true + } + state.lastIntValue = 0; + return false + }; + function isOctalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit + // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence + pp$1.regexp_eatFixedHexDigits = function(state, length) { + var start = state.pos; + state.lastIntValue = 0; + for (var i = 0; i < length; ++i) { + var ch = state.current(); + if (!isHexDigit(ch)) { + state.pos = start; + return false + } + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return true + }; -/***/ }), + // Object type used to represent tokens. Note that normally, tokens + // simply exist as properties on the parser object. This is only + // used for the onToken callback and the external tokenizer. + + var Token = function Token(p) { + this.type = p.type; + this.value = p.value; + this.start = p.start; + this.end = p.end; + if (p.options.locations) + { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } + if (p.options.ranges) + { this.range = [p.start, p.end]; } + }; -/***/ 60391: -/***/ ((__unused_webpack_module, exports) => { + // ## Tokenizer -"use strict"; + var pp = Parser.prototype; + // Move to the next token -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.mergeOptions = mergeOptions; -exports.isIterableIterator = isIterableIterator; - -function mergeOptions(target, source) { - for (const k of Object.keys(source)) { - if (k === "parserOpts" && source.parserOpts) { - const parserOpts = source.parserOpts; - const targetObj = target.parserOpts = target.parserOpts || {}; - mergeDefaultFields(targetObj, parserOpts); - } else if (k === "generatorOpts" && source.generatorOpts) { - const generatorOpts = source.generatorOpts; - const targetObj = target.generatorOpts = target.generatorOpts || {}; - mergeDefaultFields(targetObj, generatorOpts); - } else { - const val = source[k]; - if (val !== undefined) target[k] = val; - } - } -} + pp.next = function(ignoreEscapeSequenceInKeyword) { + if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) + { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } + if (this.options.onToken) + { this.options.onToken(new Token(this)); } -function mergeDefaultFields(target, source) { - for (const k of Object.keys(source)) { - const val = source[k]; - if (val !== undefined) target[k] = val; - } -} + this.lastTokEnd = this.end; + this.lastTokStart = this.start; + this.lastTokEndLoc = this.endLoc; + this.lastTokStartLoc = this.startLoc; + this.nextToken(); + }; -function isIterableIterator(value) { - return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function"; -} + pp.getToken = function() { + this.next(); + return new Token(this) + }; -/***/ }), + // If we're in an ES6 environment, make parsers iterable + if (typeof Symbol !== "undefined") + { pp[Symbol.iterator] = function() { + var this$1$1 = this; -/***/ 52661: -/***/ ((__unused_webpack_module, exports) => { + return { + next: function () { + var token = this$1$1.getToken(); + return { + done: token.type === types$1.eof, + value: token + } + } + } + }; } -"use strict"; + // Toggle strict mode. Re-reads the next number or string to please + // pedantic tests (`"use strict"; 010;` should fail). + // Read a single token, updating the parser object's token-related + // properties. -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.msg = msg; -exports.access = access; -exports.assertRootMode = assertRootMode; -exports.assertSourceMaps = assertSourceMaps; -exports.assertCompact = assertCompact; -exports.assertSourceType = assertSourceType; -exports.assertCallerMetadata = assertCallerMetadata; -exports.assertInputSourceMap = assertInputSourceMap; -exports.assertString = assertString; -exports.assertFunction = assertFunction; -exports.assertBoolean = assertBoolean; -exports.assertObject = assertObject; -exports.assertArray = assertArray; -exports.assertIgnoreList = assertIgnoreList; -exports.assertConfigApplicableTest = assertConfigApplicableTest; -exports.assertConfigFileSearch = assertConfigFileSearch; -exports.assertBabelrcSearch = assertBabelrcSearch; -exports.assertPluginList = assertPluginList; - -function msg(loc) { - switch (loc.type) { - case "root": - return ``; - - case "env": - return `${msg(loc.parent)}.env["${loc.name}"]`; - - case "overrides": - return `${msg(loc.parent)}.overrides[${loc.index}]`; - - case "option": - return `${msg(loc.parent)}.${loc.name}`; - - case "access": - return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`; + pp.nextToken = function() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } - default: - throw new Error(`Assertion failure: Unknown type ${loc.type}`); - } -} + this.start = this.pos; + if (this.options.locations) { this.startLoc = this.curPosition(); } + if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) } -function access(loc, name) { - return { - type: "access", - name, - parent: loc + if (curContext.override) { return curContext.override(this) } + else { this.readToken(this.fullCharCodeAtPos()); } }; -} -function assertRootMode(loc, value) { - if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") { - throw new Error(`${msg(loc)} must be a "root", "upward", "upward-optional" or undefined`); - } + pp.readToken = function(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) + { return this.readWord() } - return value; -} + return this.getTokenFromCode(code) + }; -function assertSourceMaps(loc, value) { - if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") { - throw new Error(`${msg(loc)} must be a boolean, "inline", "both", or undefined`); - } + pp.fullCharCodeAtPos = function() { + var code = this.input.charCodeAt(this.pos); + if (code <= 0xd7ff || code >= 0xdc00) { return code } + var next = this.input.charCodeAt(this.pos + 1); + return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00 + }; - return value; -} + pp.skipBlockComment = function() { + var startLoc = this.options.onComment && this.curPosition(); + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); + if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } + this.pos = end + 2; + if (this.options.locations) { + for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { + ++this.curLine; + pos = this.lineStart = nextBreak; + } + } + if (this.options.onComment) + { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, + startLoc, this.curPosition()); } + }; -function assertCompact(loc, value) { - if (value !== undefined && typeof value !== "boolean" && value !== "auto") { - throw new Error(`${msg(loc)} must be a boolean, "auto", or undefined`); - } + pp.skipLineComment = function(startSkip) { + var start = this.pos; + var startLoc = this.options.onComment && this.curPosition(); + var ch = this.input.charCodeAt(this.pos += startSkip); + while (this.pos < this.input.length && !isNewLine(ch)) { + ch = this.input.charCodeAt(++this.pos); + } + if (this.options.onComment) + { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, + startLoc, this.curPosition()); } + }; - return value; -} + // Called at the start of the parse and after every token. Skips + // whitespace and comments, and. -function assertSourceType(loc, value) { - if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") { - throw new Error(`${msg(loc)} must be "module", "script", "unambiguous", or undefined`); - } + pp.skipSpace = function() { + loop: while (this.pos < this.input.length) { + var ch = this.input.charCodeAt(this.pos); + switch (ch) { + case 32: case 160: // ' ' + ++this.pos; + break + case 13: + if (this.input.charCodeAt(this.pos + 1) === 10) { + ++this.pos; + } + case 10: case 8232: case 8233: + ++this.pos; + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + break + case 47: // '/' + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: // '*' + this.skipBlockComment(); + break + case 47: + this.skipLineComment(2); + break + default: + break loop + } + break + default: + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.pos; + } else { + break loop + } + } + } + }; - return value; -} + // Called at the end of every token. Sets `end`, `val`, and + // maintains `context` and `exprAllowed`, and skips the space after + // the token, so that the next one's `start` will point at the + // right position. -function assertCallerMetadata(loc, value) { - const obj = assertObject(loc, value); + pp.finishToken = function(type, val) { + this.end = this.pos; + if (this.options.locations) { this.endLoc = this.curPosition(); } + var prevType = this.type; + this.type = type; + this.value = val; - if (obj) { - if (typeof obj["name"] !== "string") { - throw new Error(`${msg(loc)} set but does not contain "name" property string`); - } + this.updateContext(prevType); + }; - for (const prop of Object.keys(obj)) { - const propLoc = access(loc, prop); - const value = obj[prop]; + // ### Token reading - if (value != null && typeof value !== "boolean" && typeof value !== "string" && typeof value !== "number") { - throw new Error(`${msg(propLoc)} must be null, undefined, a boolean, a string, or a number.`); - } + // This is the function that is called to fetch the next token. It + // is somewhat obscure, because it works in character codes rather + // than characters, and because operator parsing has been inlined + // into it. + // + // All in the name of speed. + // + pp.readToken_dot = function() { + var next = this.input.charCodeAt(this.pos + 1); + if (next >= 48 && next <= 57) { return this.readNumber(true) } + var next2 = this.input.charCodeAt(this.pos + 2); + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' + this.pos += 3; + return this.finishToken(types$1.ellipsis) + } else { + ++this.pos; + return this.finishToken(types$1.dot) } - } + }; - return value; -} + pp.readToken_slash = function() { // '/' + var next = this.input.charCodeAt(this.pos + 1); + if (this.exprAllowed) { ++this.pos; return this.readRegexp() } + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(types$1.slash, 1) + }; -function assertInputSourceMap(loc, value) { - if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) { - throw new Error(`${msg(loc)} must be a boolean, object, or undefined`); - } + pp.readToken_mult_modulo_exp = function(code) { // '%*' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + var tokentype = code === 42 ? types$1.star : types$1.modulo; - return value; -} + // exponentiation operator ** and **= + if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { + ++size; + tokentype = types$1.starstar; + next = this.input.charCodeAt(this.pos + 2); + } -function assertString(loc, value) { - if (value !== undefined && typeof value !== "string") { - throw new Error(`${msg(loc)} must be a string, or undefined`); - } + if (next === 61) { return this.finishOp(types$1.assign, size + 1) } + return this.finishOp(tokentype, size) + }; - return value; -} + pp.readToken_pipe_amp = function(code) { // '|&' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (this.options.ecmaVersion >= 12) { + var next2 = this.input.charCodeAt(this.pos + 2); + if (next2 === 61) { return this.finishOp(types$1.assign, 3) } + } + return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2) + } + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1) + }; -function assertFunction(loc, value) { - if (value !== undefined && typeof value !== "function") { - throw new Error(`${msg(loc)} must be a function, or undefined`); - } + pp.readToken_caret = function() { // '^' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(types$1.bitwiseXOR, 1) + }; - return value; -} + pp.readToken_plus_min = function(code) { // '+-' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && + (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken() + } + return this.finishOp(types$1.incDec, 2) + } + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(types$1.plusMin, 1) + }; -function assertBoolean(loc, value) { - if (value !== undefined && typeof value !== "boolean") { - throw new Error(`${msg(loc)} must be a boolean, or undefined`); - } + pp.readToken_lt_gt = function(code) { // '<>' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) } + return this.finishOp(types$1.bitShift, size) + } + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && + this.input.charCodeAt(this.pos + 3) === 45) { + // `<!--`, an XML-style comment that should be interpreted as a line comment + this.skipLineComment(4); + this.skipSpace(); + return this.nextToken() + } + if (next === 61) { size = 2; } + return this.finishOp(types$1.relational, size) + }; - return value; -} + pp.readToken_eq_excl = function(code) { // '=!' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) } + if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>' + this.pos += 2; + return this.finishToken(types$1.arrow) + } + return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1) + }; -function assertObject(loc, value) { - if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) { - throw new Error(`${msg(loc)} must be an object, or undefined`); - } + pp.readToken_question = function() { // '?' + var ecmaVersion = this.options.ecmaVersion; + if (ecmaVersion >= 11) { + var next = this.input.charCodeAt(this.pos + 1); + if (next === 46) { + var next2 = this.input.charCodeAt(this.pos + 2); + if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) } + } + if (next === 63) { + if (ecmaVersion >= 12) { + var next2$1 = this.input.charCodeAt(this.pos + 2); + if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) } + } + return this.finishOp(types$1.coalesce, 2) + } + } + return this.finishOp(types$1.question, 1) + }; - return value; -} + pp.readToken_numberSign = function() { // '#' + var ecmaVersion = this.options.ecmaVersion; + var code = 35; // '#' + if (ecmaVersion >= 13) { + ++this.pos; + code = this.fullCharCodeAtPos(); + if (isIdentifierStart(code, true) || code === 92 /* '\' */) { + return this.finishToken(types$1.privateId, this.readWord1()) + } + } -function assertArray(loc, value) { - if (value != null && !Array.isArray(value)) { - throw new Error(`${msg(loc)} must be an array, or undefined`); - } + this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); + }; - return value; -} + pp.getTokenFromCode = function(code) { + switch (code) { + // The interpretation of a dot depends on whether it is followed + // by a digit or another two dots. + case 46: // '.' + return this.readToken_dot() -function assertIgnoreList(loc, value) { - const arr = assertArray(loc, value); + // Punctuation tokens. + case 40: ++this.pos; return this.finishToken(types$1.parenL) + case 41: ++this.pos; return this.finishToken(types$1.parenR) + case 59: ++this.pos; return this.finishToken(types$1.semi) + case 44: ++this.pos; return this.finishToken(types$1.comma) + case 91: ++this.pos; return this.finishToken(types$1.bracketL) + case 93: ++this.pos; return this.finishToken(types$1.bracketR) + case 123: ++this.pos; return this.finishToken(types$1.braceL) + case 125: ++this.pos; return this.finishToken(types$1.braceR) + case 58: ++this.pos; return this.finishToken(types$1.colon) - if (arr) { - arr.forEach((item, i) => assertIgnoreItem(access(loc, i), item)); - } + case 96: // '`' + if (this.options.ecmaVersion < 6) { break } + ++this.pos; + return this.finishToken(types$1.backQuote) - return arr; -} + case 48: // '0' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number + if (this.options.ecmaVersion >= 6) { + if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number + if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number + } -function assertIgnoreItem(loc, value) { - if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) { - throw new Error(`${msg(loc)} must be an array of string/Function/RegExp values, or undefined`); - } + // Anything else beginning with a digit is an integer, octal + // number, or float. + case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 + return this.readNumber(false) - return value; -} + // Quotes produce strings. + case 34: case 39: // '"', "'" + return this.readString(code) -function assertConfigApplicableTest(loc, value) { - if (value === undefined) return value; + // Operators are parsed inline in tiny state machines. '=' (61) is + // often referred to. `finishOp` simply skips the amount of + // characters it is given as second argument, and returns a token + // of the type given by its first argument. + case 47: // '/' + return this.readToken_slash() - if (Array.isArray(value)) { - value.forEach((item, i) => { - if (!checkValidTest(item)) { - throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); - } - }); - } else if (!checkValidTest(value)) { - throw new Error(`${msg(loc)} must be a string/Function/RegExp, or an array of those`); - } + case 37: case 42: // '%*' + return this.readToken_mult_modulo_exp(code) - return value; -} + case 124: case 38: // '|&' + return this.readToken_pipe_amp(code) -function checkValidTest(value) { - return typeof value === "string" || typeof value === "function" || value instanceof RegExp; -} + case 94: // '^' + return this.readToken_caret() -function assertConfigFileSearch(loc, value) { - if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") { - throw new Error(`${msg(loc)} must be a undefined, a boolean, a string, ` + `got ${JSON.stringify(value)}`); - } + case 43: case 45: // '+-' + return this.readToken_plus_min(code) - return value; -} + case 60: case 62: // '<>' + return this.readToken_lt_gt(code) -function assertBabelrcSearch(loc, value) { - if (value === undefined || typeof value === "boolean") return value; + case 61: case 33: // '=!' + return this.readToken_eq_excl(code) - if (Array.isArray(value)) { - value.forEach((item, i) => { - if (!checkValidTest(item)) { - throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); - } - }); - } else if (!checkValidTest(value)) { - throw new Error(`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` + `or an array of those, got ${JSON.stringify(value)}`); - } + case 63: // '?' + return this.readToken_question() - return value; -} + case 126: // '~' + return this.finishOp(types$1.prefix, 1) -function assertPluginList(loc, value) { - const arr = assertArray(loc, value); + case 35: // '#' + return this.readToken_numberSign() + } - if (arr) { - arr.forEach((item, i) => assertPluginItem(access(loc, i), item)); - } + this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); + }; - return arr; -} + pp.finishOp = function(type, size) { + var str = this.input.slice(this.pos, this.pos + size); + this.pos += size; + return this.finishToken(type, str) + }; -function assertPluginItem(loc, value) { - if (Array.isArray(value)) { - if (value.length === 0) { - throw new Error(`${msg(loc)} must include an object`); + pp.readRegexp = function() { + var escaped, inClass, start = this.pos; + for (;;) { + if (this.pos >= this.input.length) { this.raise(start, "Unterminated regular expression"); } + var ch = this.input.charAt(this.pos); + if (lineBreak.test(ch)) { this.raise(start, "Unterminated regular expression"); } + if (!escaped) { + if (ch === "[") { inClass = true; } + else if (ch === "]" && inClass) { inClass = false; } + else if (ch === "/" && !inClass) { break } + escaped = ch === "\\"; + } else { escaped = false; } + ++this.pos; + } + var pattern = this.input.slice(start, this.pos); + ++this.pos; + var flagsStart = this.pos; + var flags = this.readWord1(); + if (this.containsEsc) { this.unexpected(flagsStart); } + + // Validate pattern + var state = this.regexpState || (this.regexpState = new RegExpValidationState(this)); + state.reset(start, pattern, flags); + this.validateRegExpFlags(state); + this.validateRegExpPattern(state); + + // Create Literal#value property value. + var value = null; + try { + value = new RegExp(pattern, flags); + } catch (e) { + // ESTree requires null if it failed to instantiate RegExp object. + // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral } - if (value.length > 3) { - throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`); - } + return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value}) + }; + + // Read an integer in the given radix. Return null if zero digits + // were read, the integer value otherwise. When `len` is given, this + // will return `null` unless the integer has exactly `len` digits. + + pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) { + // `len` is used for character escape sequences. In that case, disallow separators. + var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined; - assertPluginTarget(access(loc, 0), value[0]); + // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b) + // and isn't fraction part nor exponent part. In that case, if the first digit + // is zero then disallow separators. + var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48; - if (value.length > 1) { - const opts = value[1]; + var start = this.pos, total = 0, lastCode = 0; + for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) { + var code = this.input.charCodeAt(this.pos), val = (void 0); - if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) { - throw new Error(`${msg(access(loc, 1))} must be an object, false, or undefined`); + if (allowSeparators && code === 95) { + if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"); } + if (lastCode === 95) { this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"); } + if (i === 0) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"); } + lastCode = code; + continue } + + if (code >= 97) { val = code - 97 + 10; } // a + else if (code >= 65) { val = code - 65 + 10; } // A + else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9 + else { val = Infinity; } + if (val >= radix) { break } + lastCode = code; + total = total * radix + val; } - if (value.length === 3) { - const name = value[2]; + if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"); } + if (this.pos === start || len != null && this.pos - start !== len) { return null } - if (name !== undefined && typeof name !== "string") { - throw new Error(`${msg(access(loc, 2))} must be a string, or undefined`); - } + return total + }; + + function stringToNumber(str, isLegacyOctalNumericLiteral) { + if (isLegacyOctalNumericLiteral) { + return parseInt(str, 8) } - } else { - assertPluginTarget(loc, value); + + // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value. + return parseFloat(str.replace(/_/g, "")) } - return value; -} + function stringToBigInt(str) { + if (typeof BigInt !== "function") { + return null + } -function assertPluginTarget(loc, value) { - if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") { - throw new Error(`${msg(loc)} must be a string, object, function`); + // `BigInt(value)` throws syntax error if the string contains numeric separators. + return BigInt(str.replace(/_/g, "")) } - return value; -} + pp.readRadixNumber = function(radix) { + var start = this.pos; + this.pos += 2; // 0x + var val = this.readInt(radix); + if (val == null) { this.raise(this.start + 2, "Expected number in radix " + radix); } + if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) { + val = stringToBigInt(this.input.slice(start, this.pos)); + ++this.pos; + } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } + return this.finishToken(types$1.num, val) + }; -/***/ }), + // Read an integer, octal integer, or floating-point number. + + pp.readNumber = function(startsWithDot) { + var start = this.pos; + if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, "Invalid number"); } + var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (octal && this.strict) { this.raise(start, "Invalid number"); } + var next = this.input.charCodeAt(this.pos); + if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) { + var val$1 = stringToBigInt(this.input.slice(start, this.pos)); + ++this.pos; + if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } + return this.finishToken(types$1.num, val$1) + } + if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; } + if (next === 46 && !octal) { // '.' + ++this.pos; + this.readInt(10); + next = this.input.charCodeAt(this.pos); + } + if ((next === 69 || next === 101) && !octal) { // 'eE' + next = this.input.charCodeAt(++this.pos); + if (next === 43 || next === 45) { ++this.pos; } // '+-' + if (this.readInt(10) === null) { this.raise(start, "Invalid number"); } + } + if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } -/***/ 14087: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + var val = stringToNumber(this.input.slice(start, this.pos), octal); + return this.finishToken(types$1.num, val) + }; -"use strict"; + // Read a string value, interpreting backslash-escapes. + pp.readCodePoint = function() { + var ch = this.input.charCodeAt(this.pos), code; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.validate = validate; -exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs; + if (ch === 123) { // '{' + if (this.options.ecmaVersion < 6) { this.unexpected(); } + var codePos = ++this.pos; + code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos); + ++this.pos; + if (code > 0x10FFFF) { this.invalidStringToken(codePos, "Code point out of bounds"); } + } else { + code = this.readHexChar(4); + } + return code + }; -var _plugin = _interopRequireDefault(__nccwpck_require__(4725)); + pp.readString = function(quote) { + var out = "", chunkStart = ++this.pos; + for (;;) { + if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated string constant"); } + var ch = this.input.charCodeAt(this.pos); + if (ch === quote) { break } + if (ch === 92) { // '\' + out += this.input.slice(chunkStart, this.pos); + out += this.readEscapedChar(false); + chunkStart = this.pos; + } else if (ch === 0x2028 || ch === 0x2029) { + if (this.options.ecmaVersion < 10) { this.raise(this.start, "Unterminated string constant"); } + ++this.pos; + if (this.options.locations) { + this.curLine++; + this.lineStart = this.pos; + } + } else { + if (isNewLine(ch)) { this.raise(this.start, "Unterminated string constant"); } + ++this.pos; + } + } + out += this.input.slice(chunkStart, this.pos++); + return this.finishToken(types$1.string, out) + }; -var _removed = _interopRequireDefault(__nccwpck_require__(59659)); + // Reads template string tokens. -var _optionAssertions = __nccwpck_require__(52661); + var INVALID_TEMPLATE_ESCAPE_ERROR = {}; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + pp.tryReadTemplateToken = function() { + this.inTemplateElement = true; + try { + this.readTmplToken(); + } catch (err) { + if (err === INVALID_TEMPLATE_ESCAPE_ERROR) { + this.readInvalidTemplateToken(); + } else { + throw err + } + } -const ROOT_VALIDATORS = { - cwd: _optionAssertions.assertString, - root: _optionAssertions.assertString, - rootMode: _optionAssertions.assertRootMode, - configFile: _optionAssertions.assertConfigFileSearch, - caller: _optionAssertions.assertCallerMetadata, - filename: _optionAssertions.assertString, - filenameRelative: _optionAssertions.assertString, - code: _optionAssertions.assertBoolean, - ast: _optionAssertions.assertBoolean, - cloneInputAst: _optionAssertions.assertBoolean, - envName: _optionAssertions.assertString -}; -const BABELRC_VALIDATORS = { - babelrc: _optionAssertions.assertBoolean, - babelrcRoots: _optionAssertions.assertBabelrcSearch -}; -const NONPRESET_VALIDATORS = { - extends: _optionAssertions.assertString, - ignore: _optionAssertions.assertIgnoreList, - only: _optionAssertions.assertIgnoreList -}; -const COMMON_VALIDATORS = { - inputSourceMap: _optionAssertions.assertInputSourceMap, - presets: _optionAssertions.assertPluginList, - plugins: _optionAssertions.assertPluginList, - passPerPreset: _optionAssertions.assertBoolean, - env: assertEnvSet, - overrides: assertOverridesList, - test: _optionAssertions.assertConfigApplicableTest, - include: _optionAssertions.assertConfigApplicableTest, - exclude: _optionAssertions.assertConfigApplicableTest, - retainLines: _optionAssertions.assertBoolean, - comments: _optionAssertions.assertBoolean, - shouldPrintComment: _optionAssertions.assertFunction, - compact: _optionAssertions.assertCompact, - minified: _optionAssertions.assertBoolean, - auxiliaryCommentBefore: _optionAssertions.assertString, - auxiliaryCommentAfter: _optionAssertions.assertString, - sourceType: _optionAssertions.assertSourceType, - wrapPluginVisitorMethod: _optionAssertions.assertFunction, - highlightCode: _optionAssertions.assertBoolean, - sourceMaps: _optionAssertions.assertSourceMaps, - sourceMap: _optionAssertions.assertSourceMaps, - sourceFileName: _optionAssertions.assertString, - sourceRoot: _optionAssertions.assertString, - getModuleId: _optionAssertions.assertFunction, - moduleRoot: _optionAssertions.assertString, - moduleIds: _optionAssertions.assertBoolean, - moduleId: _optionAssertions.assertString, - parserOpts: _optionAssertions.assertObject, - generatorOpts: _optionAssertions.assertObject -}; + this.inTemplateElement = false; + }; -function getSource(loc) { - return loc.type === "root" ? loc.source : getSource(loc.parent); -} + pp.invalidStringToken = function(position, message) { + if (this.inTemplateElement && this.options.ecmaVersion >= 9) { + throw INVALID_TEMPLATE_ESCAPE_ERROR + } else { + this.raise(position, message); + } + }; -function validate(type, opts) { - return validateNested({ - type: "root", - source: type - }, opts); -} + pp.readTmplToken = function() { + var out = "", chunkStart = this.pos; + for (;;) { + if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated template"); } + var ch = this.input.charCodeAt(this.pos); + if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${' + if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) { + if (ch === 36) { + this.pos += 2; + return this.finishToken(types$1.dollarBraceL) + } else { + ++this.pos; + return this.finishToken(types$1.backQuote) + } + } + out += this.input.slice(chunkStart, this.pos); + return this.finishToken(types$1.template, out) + } + if (ch === 92) { // '\' + out += this.input.slice(chunkStart, this.pos); + out += this.readEscapedChar(true); + chunkStart = this.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.pos); + ++this.pos; + switch (ch) { + case 13: + if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } + case 10: + out += "\n"; + break + default: + out += String.fromCharCode(ch); + break + } + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + chunkStart = this.pos; + } else { + ++this.pos; + } + } + }; -function validateNested(loc, opts) { - const type = getSource(loc); - assertNoDuplicateSourcemap(opts); - Object.keys(opts).forEach(key => { - const optLoc = { - type: "option", - name: key, - parent: loc - }; + // Reads a template token to search for the end, without validating any escape sequences + pp.readInvalidTemplateToken = function() { + for (; this.pos < this.input.length; this.pos++) { + switch (this.input[this.pos]) { + case "\\": + ++this.pos; + break - if (type === "preset" && NONPRESET_VALIDATORS[key]) { - throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`); + case "$": + if (this.input[this.pos + 1] !== "{") { break } + // fall through + case "`": + return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos)) + + case "\r": + if (this.input[this.pos + 1] === "\n") { ++this.pos; } + // fall through + case "\n": case "\u2028": case "\u2029": + ++this.curLine; + this.lineStart = this.pos + 1; + break + } } + this.raise(this.start, "Unterminated template"); + }; - if (type !== "arguments" && ROOT_VALIDATORS[key]) { - throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`); - } + // Used to read escaped characters - if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) { - if (type === "babelrcfile" || type === "extendsfile") { - throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`); + pp.readEscapedChar = function(inTemplate) { + var ch = this.input.charCodeAt(++this.pos); + ++this.pos; + switch (ch) { + case 110: return "\n" // 'n' -> '\n' + case 114: return "\r" // 'r' -> '\r' + case 120: return String.fromCharCode(this.readHexChar(2)) // 'x' + case 117: return codePointToString(this.readCodePoint()) // 'u' + case 116: return "\t" // 't' -> '\t' + case 98: return "\b" // 'b' -> '\b' + case 118: return "\u000b" // 'v' -> '\u000b' + case 102: return "\f" // 'f' -> '\f' + case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\r\n' + case 10: // ' \n' + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } + return "" + case 56: + case 57: + if (this.strict) { + this.invalidStringToken( + this.pos - 1, + "Invalid escape sequence" + ); } + if (inTemplate) { + var codePos = this.pos - 1; - throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`); + this.invalidStringToken( + codePos, + "Invalid escape sequence in template string" + ); + } + default: + if (ch >= 48 && ch <= 55) { + var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]; + var octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + this.pos += octalStr.length - 1; + ch = this.input.charCodeAt(this.pos); + if ((octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate)) { + this.invalidStringToken( + this.pos - 1 - octalStr.length, + inTemplate + ? "Octal literal in template string" + : "Octal literal in strict mode" + ); + } + return String.fromCharCode(octal) + } + if (isNewLine(ch)) { + // Unicode new line characters after \ get removed from output in both + // template literals and strings + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } + return "" + } + return String.fromCharCode(ch) } + }; - const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError; - validator(optLoc, opts[key]); - }); - return opts; -} - -function throwUnknownError(loc) { - const key = loc.name; - - if (_removed.default[key]) { - const { - message, - version = 5 - } = _removed.default[key]; - throw new Error(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`); - } else { - const unknownOptErr = new Error(`Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`); - unknownOptErr.code = "BABEL_UNKNOWN_OPTION"; - throw unknownOptErr; - } -} + // Used to read character escape sequences ('\x', '\u', '\U'). -function has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} + pp.readHexChar = function(len) { + var codePos = this.pos; + var n = this.readInt(16, len); + if (n === null) { this.invalidStringToken(codePos, "Bad character escape sequence"); } + return n + }; -function assertNoDuplicateSourcemap(opts) { - if (has(opts, "sourceMap") && has(opts, "sourceMaps")) { - throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both"); - } -} + // Read an identifier, and return it as a string. Sets `this.containsEsc` + // to whether the word contained a '\u' escape. + // + // Incrementally adds only escaped chars, adding other chunks as-is + // as a micro-optimization. -function assertEnvSet(loc, value) { - if (loc.parent.type === "env") { - throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`); - } + pp.readWord1 = function() { + this.containsEsc = false; + var word = "", first = true, chunkStart = this.pos; + var astral = this.options.ecmaVersion >= 6; + while (this.pos < this.input.length) { + var ch = this.fullCharCodeAtPos(); + if (isIdentifierChar(ch, astral)) { + this.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { // "\" + this.containsEsc = true; + word += this.input.slice(chunkStart, this.pos); + var escStart = this.pos; + if (this.input.charCodeAt(++this.pos) !== 117) // "u" + { this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"); } + ++this.pos; + var esc = this.readCodePoint(); + if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) + { this.invalidStringToken(escStart, "Invalid Unicode escape"); } + word += codePointToString(esc); + chunkStart = this.pos; + } else { + break + } + first = false; + } + return word + this.input.slice(chunkStart, this.pos) + }; - const parent = loc.parent; - const obj = (0, _optionAssertions.assertObject)(loc, value); + // Read an identifier or keyword token. Will check for reserved + // words when necessary. - if (obj) { - for (const envName of Object.keys(obj)) { - const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]); - if (!env) continue; - const envLoc = { - type: "env", - name: envName, - parent - }; - validateNested(envLoc, env); + pp.readWord = function() { + var word = this.readWord1(); + var type = types$1.name; + if (this.keywords.test(word)) { + type = keywords[word]; } - } + return this.finishToken(type, word) + }; - return obj; -} + // Acorn is a tiny, fast JavaScript parser written in JavaScript. + // + // Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and + // various contributors and released under an MIT license. + // + // Git repositories for Acorn are available at + // + // http://marijnhaverbeke.nl/git/acorn + // https://github.com/acornjs/acorn.git + // + // Please use the [github bug tracker][ghbt] to report issues. + // + // [ghbt]: https://github.com/acornjs/acorn/issues + // + // [walk]: util/walk.js + + + var version = "8.14.1"; + + Parser.acorn = { + Parser: Parser, + version: version, + defaultOptions: defaultOptions, + Position: Position, + SourceLocation: SourceLocation, + getLineInfo: getLineInfo, + Node: Node, + TokenType: TokenType, + tokTypes: types$1, + keywordTypes: keywords, + TokContext: TokContext, + tokContexts: types, + isIdentifierChar: isIdentifierChar, + isIdentifierStart: isIdentifierStart, + Token: Token, + isNewLine: isNewLine, + lineBreak: lineBreak, + lineBreakG: lineBreakG, + nonASCIIwhitespace: nonASCIIwhitespace + }; -function assertOverridesList(loc, value) { - if (loc.parent.type === "env") { - throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`); + // The main exported interface (under `self.acorn` when in the + // browser) is a `parse` function that takes a code string and returns + // an abstract syntax tree as specified by the [ESTree spec][estree]. + // + // [estree]: https://github.com/estree/estree + + function parse(input, options) { + return Parser.parse(input, options) } - if (loc.parent.type === "overrides") { - throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`); + // This function tries to parse a single expression at a given + // offset in a string. Useful for parsing mixed-language formats + // that embed JavaScript expressions. + + function parseExpressionAt(input, pos, options) { + return Parser.parseExpressionAt(input, pos, options) } - const parent = loc.parent; - const arr = (0, _optionAssertions.assertArray)(loc, value); + // Acorn is organized as a tokenizer and a recursive-descent parser. + // The `tokenizer` export provides an interface to the tokenizer. - if (arr) { - for (const [index, item] of arr.entries()) { - const objLoc = (0, _optionAssertions.access)(loc, index); - const env = (0, _optionAssertions.assertObject)(objLoc, item); - if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`); - const overridesLoc = { - type: "overrides", - index, - parent - }; - validateNested(overridesLoc, env); - } + function tokenizer(input, options) { + return Parser.tokenizer(input, options) } - return arr; -} + exports.Node = Node; + exports.Parser = Parser; + exports.Position = Position; + exports.SourceLocation = SourceLocation; + exports.TokContext = TokContext; + exports.Token = Token; + exports.TokenType = TokenType; + exports.defaultOptions = defaultOptions; + exports.getLineInfo = getLineInfo; + exports.isIdentifierChar = isIdentifierChar; + exports.isIdentifierStart = isIdentifierStart; + exports.isNewLine = isNewLine; + exports.keywordTypes = keywords; + exports.lineBreak = lineBreak; + exports.lineBreakG = lineBreakG; + exports.nonASCIIwhitespace = nonASCIIwhitespace; + exports.parse = parse; + exports.parseExpressionAt = parseExpressionAt; + exports.tokContexts = types; + exports.tokTypes = types$1; + exports.tokenizer = tokenizer; + exports.version = version; -function checkNoUnwrappedItemOptionPairs(items, index, type, e) { - if (index === 0) return; - const lastItem = items[index - 1]; - const thisItem = items[index]; +})); - if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") { - e.message += `\n- Maybe you meant to use\n` + `"${type}": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`; - } -} /***/ }), -/***/ 26741: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 8905: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.validatePluginObject = validatePluginObject; - -var _optionAssertions = __nccwpck_require__(52661); - -const VALIDATORS = { - name: _optionAssertions.assertString, - manipulateOptions: _optionAssertions.assertFunction, - pre: _optionAssertions.assertFunction, - post: _optionAssertions.assertFunction, - inherits: _optionAssertions.assertFunction, - visitor: assertVisitorMap, - parserOverride: _optionAssertions.assertFunction, - generatorOverride: _optionAssertions.assertFunction -}; +var isObject = __nccwpck_require__(6403); -function assertVisitorMap(loc, value) { - const obj = (0, _optionAssertions.assertObject)(loc, value); +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } - if (obj) { - Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop])); + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; - if (obj.enter || obj.exit) { - throw new Error(`${(0, _optionAssertions.msg)(loc)} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`); + if (isObject(obj)) { + assign(o, obj); } } + return o; +}; - return obj; +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } } -function assertVisitorHandler(key, value) { - if (value && typeof value === "object") { - Object.keys(value).forEach(handler => { - if (handler !== "enter" && handler !== "exit") { - throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`); - } - }); - } else if (typeof value !== "function") { - throw new Error(`.visitor["${key}"] must be a function`); - } +/** + * Returns true if the given `key` is an own property of `obj`. + */ - return value; +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); } -function validatePluginObject(obj) { - const rootPath = { - type: "root", - source: "plugin" - }; - Object.keys(obj).forEach(key => { - const validator = VALIDATORS[key]; - - if (validator) { - const optLoc = { - type: "option", - name: key, - parent: rootPath - }; - validator(optLoc, obj[key]); - } else { - const invalidPluginPropertyError = new Error(`.${key} is not a valid Plugin property`); - invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY"; - throw invalidPluginPropertyError; - } - }); - return obj; -} /***/ }), -/***/ 59659: -/***/ ((__unused_webpack_module, exports) => { +/***/ 3860: +/***/ ((module) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = { - auxiliaryComment: { - message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`" - }, - blacklist: { - message: "Put the specific transforms you want in the `plugins` option" - }, - breakConfig: { - message: "This is not a necessary option in Babel 6" - }, - experimental: { - message: "Put the specific transforms you want in the `plugins` option" - }, - externalHelpers: { - message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/" - }, - extra: { - message: "" - }, - jsxPragma: { - message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/" - }, - loose: { - message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option." - }, - metadataUsedHelpers: { - message: "Not required anymore as this is enabled by default" - }, - modules: { - message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules" - }, - nonStandard: { - message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/" - }, - optional: { - message: "Put the specific transforms you want in the `plugins` option" - }, - sourceMapName: { - message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves." - }, - stage: { - message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets" - }, - whitelist: { - message: "Put the specific transforms you want in the `plugins` option" - }, - resolveModuleSource: { - version: 6, - message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options" - }, - metadata: { - version: 6, - message: "Generated plugin metadata is always included in the output result" - }, - sourceMapTarget: { - version: 6, - message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves." - } -}; -exports["default"] = _default; - -/***/ }), +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; -/***/ 3192: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } -"use strict"; + return toStr.call(arr) === '[object Array]'; +}; +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.maybeAsync = maybeAsync; -exports.forwardAsync = forwardAsync; -exports.isThenable = isThenable; -exports.waitFor = exports.onFirstPause = exports.isAsync = void 0; + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } - _gensync = function () { - return data; - }; + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; - return data; -} +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } +}; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } -const id = x => x; + return obj[name]; +}; -const runGenerator = (0, _gensync().default)(function* (item) { - return yield* item; -}); -const isAsync = (0, _gensync().default)({ - sync: () => false, - errback: cb => cb(null, true) -}); -exports.isAsync = isAsync; - -function maybeAsync(fn, message) { - return (0, _gensync().default)({ - sync(...args) { - const result = fn.apply(this, args); - if (isThenable(result)) throw new Error(message); - return result; - }, +module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; - async(...args) { - return Promise.resolve(fn.apply(this, args)); - } + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } - }); -} + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); -const withKind = (0, _gensync().default)({ - sync: cb => cb("sync"), - async: cb => cb("async") -}); + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } -function forwardAsync(action, cb) { - const g = (0, _gensync().default)(action); - return withKind(kind => { - const adapted = g[kind]; - return cb(adapted); - }); -} + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); -const onFirstPause = (0, _gensync().default)({ - name: "onFirstPause", - arity: 2, - sync: function (item) { - return runGenerator.sync(item); - }, - errback: function (item, firstPause, cb) { - let completed = false; - runGenerator.errback(item, (err, value) => { - completed = true; - cb(err, value); - }); + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } - if (!completed) { - firstPause(); - } - } -}); -exports.onFirstPause = onFirstPause; -const waitFor = (0, _gensync().default)({ - sync: id, - async: id -}); -exports.waitFor = waitFor; + // Return the modified object + return target; +}; -function isThenable(val) { - return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; -} /***/ }), -/***/ 6524: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 3964: +/***/ ((module) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.stat = exports.exists = exports.readFile = void 0; - -function _fs() { - const data = _interopRequireDefault(__nccwpck_require__(57147)); - - _fs = function () { - return data; - }; +module.exports = clone - return data; +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ } -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); - - _gensync = function () { - return data; - }; +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj - return data; -} + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const readFile = (0, _gensync().default)({ - sync: _fs().default.readFileSync, - errback: _fs().default.readFile -}); -exports.readFile = readFile; -const exists = (0, _gensync().default)({ - sync(path) { - try { - _fs().default.accessSync(path); + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) - return true; - } catch (_unused) { - return false; - } - }, + return copy +} - errback: (path, cb) => _fs().default.access(path, undefined, err => cb(null, !err)) -}); -exports.exists = exists; -const stat = (0, _gensync().default)({ - sync: _fs().default.statSync, - errback: _fs().default.stat -}); -exports.stat = stat; /***/ }), -/***/ 97199: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - +/***/ 5744: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +var fs = __nccwpck_require__(9896) +var polyfills = __nccwpck_require__(3501) +var legacy = __nccwpck_require__(2270) +var clone = __nccwpck_require__(3964) -function _resolve() { - const data = _interopRequireDefault(__nccwpck_require__(89227)); +var util = __nccwpck_require__(9023) - _resolve = function () { - return data; - }; +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol - return data; +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' } -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); - - _gensync = function () { - return data; - }; +function noop () {} - return data; +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var _default = (0, _gensync().default)({ - sync: _resolve().default.sync, - errback: _resolve().default -}); - -exports["default"] = _default; - -/***/ }), - -/***/ 92092: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Plugin = Plugin; -Object.defineProperty(exports, "File", ({ - enumerable: true, - get: function () { - return _file.default; - } -})); -Object.defineProperty(exports, "buildExternalHelpers", ({ - enumerable: true, - get: function () { - return _buildExternalHelpers.default; - } -})); -Object.defineProperty(exports, "resolvePlugin", ({ - enumerable: true, - get: function () { - return _files.resolvePlugin; - } -})); -Object.defineProperty(exports, "resolvePreset", ({ - enumerable: true, - get: function () { - return _files.resolvePreset; - } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _package.version; - } -})); -Object.defineProperty(exports, "getEnv", ({ - enumerable: true, - get: function () { - return _environment.getEnv; - } -})); -Object.defineProperty(exports, "tokTypes", ({ - enumerable: true, - get: function () { - return _parser().tokTypes; - } -})); -Object.defineProperty(exports, "traverse", ({ - enumerable: true, - get: function () { - return _traverse().default; - } -})); -Object.defineProperty(exports, "template", ({ - enumerable: true, - get: function () { - return _template().default; - } -})); -Object.defineProperty(exports, "createConfigItem", ({ - enumerable: true, - get: function () { - return _item.createConfigItem; - } -})); -Object.defineProperty(exports, "loadPartialConfig", ({ - enumerable: true, - get: function () { - return _config.loadPartialConfig; - } -})); -Object.defineProperty(exports, "loadPartialConfigSync", ({ - enumerable: true, - get: function () { - return _config.loadPartialConfigSync; - } -})); -Object.defineProperty(exports, "loadPartialConfigAsync", ({ - enumerable: true, - get: function () { - return _config.loadPartialConfigAsync; - } -})); -Object.defineProperty(exports, "loadOptions", ({ - enumerable: true, - get: function () { - return _config.loadOptions; - } -})); -Object.defineProperty(exports, "loadOptionsSync", ({ - enumerable: true, - get: function () { - return _config.loadOptionsSync; - } -})); -Object.defineProperty(exports, "loadOptionsAsync", ({ - enumerable: true, - get: function () { - return _config.loadOptionsAsync; - } -})); -Object.defineProperty(exports, "transform", ({ - enumerable: true, - get: function () { - return _transform.transform; - } -})); -Object.defineProperty(exports, "transformSync", ({ - enumerable: true, - get: function () { - return _transform.transformSync; - } -})); -Object.defineProperty(exports, "transformAsync", ({ - enumerable: true, - get: function () { - return _transform.transformAsync; - } -})); -Object.defineProperty(exports, "transformFile", ({ - enumerable: true, - get: function () { - return _transformFile.transformFile; - } -})); -Object.defineProperty(exports, "transformFileSync", ({ - enumerable: true, - get: function () { - return _transformFile.transformFileSync; - } -})); -Object.defineProperty(exports, "transformFileAsync", ({ - enumerable: true, - get: function () { - return _transformFile.transformFileAsync; - } -})); -Object.defineProperty(exports, "transformFromAst", ({ - enumerable: true, - get: function () { - return _transformAst.transformFromAst; - } -})); -Object.defineProperty(exports, "transformFromAstSync", ({ - enumerable: true, - get: function () { - return _transformAst.transformFromAstSync; - } -})); -Object.defineProperty(exports, "transformFromAstAsync", ({ - enumerable: true, - get: function () { - return _transformAst.transformFromAstAsync; - } -})); -Object.defineProperty(exports, "parse", ({ - enumerable: true, - get: function () { - return _parse.parse; - } -})); -Object.defineProperty(exports, "parseSync", ({ - enumerable: true, - get: function () { - return _parse.parseSync; - } -})); -Object.defineProperty(exports, "parseAsync", ({ - enumerable: true, - get: function () { - return _parse.parseAsync; +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) } -})); -exports.types = exports.OptionManager = exports.DEFAULT_EXTENSIONS = void 0; - -var _file = _interopRequireDefault(__nccwpck_require__(64451)); -var _buildExternalHelpers = _interopRequireDefault(__nccwpck_require__(95145)); - -var _files = __nccwpck_require__(53954); +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) -var _package = __nccwpck_require__(83352); + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } -var _environment = __nccwpck_require__(58915); + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } -function _types() { - const data = _interopRequireWildcard(__nccwpck_require__(24479)); + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) - _types = function () { - return data; - }; + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } - return data; -} + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) -Object.defineProperty(exports, "types", ({ - enumerable: true, - get: function () { - return _types(); + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __nccwpck_require__(2613).equal(fs[gracefulQueue].length, 0) + }) } -})); - -function _parser() { - const data = __nccwpck_require__(89302); - - _parser = function () { - return data; - }; - - return data; } -function _traverse() { - const data = _interopRequireDefault(__nccwpck_require__(8631)); - - _traverse = function () { - return data; - }; - - return data; +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); } -function _template() { - const data = _interopRequireDefault(__nccwpck_require__(20153)); - - _template = function () { - return data; - }; - - return data; +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; } -var _item = __nccwpck_require__(58050); - -var _config = __nccwpck_require__(36797); - -var _transform = __nccwpck_require__(2016); - -var _transformFile = __nccwpck_require__(17673); - -var _transformAst = __nccwpck_require__(21588); +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch -var _parse = __nccwpck_require__(80977); + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + return go$readFile(path, options, cb) -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null -const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs"]); -exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS; + return go$writeFile(path, data, options, cb) -class OptionManager { - init(opts) { - return (0, _config.loadOptions)(opts); + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } } -} - -exports.OptionManager = OptionManager; + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null -function Plugin(alias) { - throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`); -} + return go$appendFile(path, data, options, cb) -/***/ }), + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } -/***/ 80977: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) -"use strict"; + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.parseAsync = exports.parseSync = exports.parse = void 0; + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + return go$readdir(path, options, cb) - _gensync = function () { - return data; - }; + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() - return data; -} + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } -var _config = _interopRequireDefault(__nccwpck_require__(36797)); + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } -var _parser = _interopRequireDefault(__nccwpck_require__(38554)); + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } -var _normalizeOpts = _interopRequireDefault(__nccwpck_require__(48587)); + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) -const parseRunner = (0, _gensync().default)(function* parse(code, opts) { - const config = yield* (0, _config.default)(opts); + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) - if (config === null) { - return null; + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) } - return yield* (0, _parser.default)(config.passes, (0, _normalizeOpts.default)(config), code); -}); + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() -const parse = function parse(code, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = undefined; + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) } - if (callback === undefined) return parseRunner.sync(code, opts); - parseRunner.errback(code, opts, callback); -}; - -exports.parse = parse; -const parseSync = parseRunner.sync; -exports.parseSync = parseSync; -const parseAsync = parseRunner.async; -exports.parseAsync = parseAsync; - -/***/ }), + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } -/***/ 38554: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } -"use strict"; + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = parser; + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null -function _parser() { - const data = __nccwpck_require__(89302); + return go$open(path, flags, mode, cb) - _parser = function () { - return data; - }; + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } - return data; + return fs } -function _codeFrame() { - const data = __nccwpck_require__(47548); - - _codeFrame = function () { - return data; - }; - - return data; +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() } -var _missingPluginHelper = _interopRequireDefault(__nccwpck_require__(45524)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function* parser(pluginPasses, { - parserOpts, - highlightCode = true, - filename = "unknown" -}, code) { - try { - const results = []; - - for (const plugins of pluginPasses) { - for (const plugin of plugins) { - const { - parserOverride - } = plugin; +// keep track of the timeout between retry() calls +var retryTimer - if (parserOverride) { - const ast = parserOverride(code, parserOpts, _parser().parse); - if (ast !== undefined) results.push(ast); - } - } +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime } + } + // call retry to make sure we're actively processing the queue + retry() +} - if (results.length === 0) { - return (0, _parser().parse)(code, parserOpts); - } else if (results.length === 1) { - yield* []; - - if (typeof results[0].then === "function") { - throw new Error(`You appear to be using an async parser plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); - } - - return results[0]; - } +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined - throw new Error("More than one plugin attempted to override parsing."); - } catch (err) { - if (err.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") { - err.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file."; - } - - const { - loc, - missingPlugin - } = err; - - if (loc) { - const codeFrame = (0, _codeFrame().codeFrameColumns)(code, { - start: { - line: loc.line, - column: loc.column + 1 - } - }, { - highlightCode - }); - - if (missingPlugin) { - err.message = `${filename}: ` + (0, _missingPluginHelper.default)(missingPlugin[0], loc, codeFrame); - } else { - err.message = `${filename}: ${err.message}\n\n` + codeFrame; - } - - err.code = "BABEL_PARSE_ERROR"; - } - - throw err; - } -} - -/***/ }), - -/***/ 45524: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; + if (fs[gracefulQueue].length === 0) + return + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = generateMissingPluginMessage; -const pluginNameMap = { - classProperties: { - syntax: { - name: "@babel/plugin-syntax-class-properties", - url: "https://git.io/vb4yQ" - }, - transform: { - name: "@babel/plugin-proposal-class-properties", - url: "https://git.io/vb4SL" - } - }, - classPrivateProperties: { - syntax: { - name: "@babel/plugin-syntax-class-properties", - url: "https://git.io/vb4yQ" - }, - transform: { - name: "@babel/plugin-proposal-class-properties", - url: "https://git.io/vb4SL" - } - }, - classPrivateMethods: { - syntax: { - name: "@babel/plugin-syntax-class-properties", - url: "https://git.io/vb4yQ" - }, - transform: { - name: "@babel/plugin-proposal-private-methods", - url: "https://git.io/JvpRG" - } - }, - classStaticBlock: { - syntax: { - name: "@babel/plugin-syntax-class-static-block", - url: "https://git.io/JTLB6" - }, - transform: { - name: "@babel/plugin-proposal-class-static-block", - url: "https://git.io/JTLBP" - } - }, - decimal: { - syntax: { - name: "@babel/plugin-syntax-decimal", - url: "https://git.io/JfKOH" - } - }, - decorators: { - syntax: { - name: "@babel/plugin-syntax-decorators", - url: "https://git.io/vb4y9" - }, - transform: { - name: "@babel/plugin-proposal-decorators", - url: "https://git.io/vb4ST" - } - }, - doExpressions: { - syntax: { - name: "@babel/plugin-syntax-do-expressions", - url: "https://git.io/vb4yh" - }, - transform: { - name: "@babel/plugin-proposal-do-expressions", - url: "https://git.io/vb4S3" - } - }, - dynamicImport: { - syntax: { - name: "@babel/plugin-syntax-dynamic-import", - url: "https://git.io/vb4Sv" - } - }, - exportDefaultFrom: { - syntax: { - name: "@babel/plugin-syntax-export-default-from", - url: "https://git.io/vb4SO" - }, - transform: { - name: "@babel/plugin-proposal-export-default-from", - url: "https://git.io/vb4yH" - } - }, - exportNamespaceFrom: { - syntax: { - name: "@babel/plugin-syntax-export-namespace-from", - url: "https://git.io/vb4Sf" - }, - transform: { - name: "@babel/plugin-proposal-export-namespace-from", - url: "https://git.io/vb4SG" - } - }, - flow: { - syntax: { - name: "@babel/plugin-syntax-flow", - url: "https://git.io/vb4yb" - }, - transform: { - name: "@babel/preset-flow", - url: "https://git.io/JfeDn" - } - }, - functionBind: { - syntax: { - name: "@babel/plugin-syntax-function-bind", - url: "https://git.io/vb4y7" - }, - transform: { - name: "@babel/plugin-proposal-function-bind", - url: "https://git.io/vb4St" - } - }, - functionSent: { - syntax: { - name: "@babel/plugin-syntax-function-sent", - url: "https://git.io/vb4yN" - }, - transform: { - name: "@babel/plugin-proposal-function-sent", - url: "https://git.io/vb4SZ" - } - }, - importMeta: { - syntax: { - name: "@babel/plugin-syntax-import-meta", - url: "https://git.io/vbKK6" - } - }, - jsx: { - syntax: { - name: "@babel/plugin-syntax-jsx", - url: "https://git.io/vb4yA" - }, - transform: { - name: "@babel/preset-react", - url: "https://git.io/JfeDR" - } - }, - importAssertions: { - syntax: { - name: "@babel/plugin-syntax-import-assertions", - url: "https://git.io/JUbkv" - } - }, - moduleStringNames: { - syntax: { - name: "@babel/plugin-syntax-module-string-names", - url: "https://git.io/JTL8G" - } - }, - numericSeparator: { - syntax: { - name: "@babel/plugin-syntax-numeric-separator", - url: "https://git.io/vb4Sq" - }, - transform: { - name: "@babel/plugin-proposal-numeric-separator", - url: "https://git.io/vb4yS" - } - }, - optionalChaining: { - syntax: { - name: "@babel/plugin-syntax-optional-chaining", - url: "https://git.io/vb4Sc" - }, - transform: { - name: "@babel/plugin-proposal-optional-chaining", - url: "https://git.io/vb4Sk" - } - }, - pipelineOperator: { - syntax: { - name: "@babel/plugin-syntax-pipeline-operator", - url: "https://git.io/vb4yj" - }, - transform: { - name: "@babel/plugin-proposal-pipeline-operator", - url: "https://git.io/vb4SU" - } - }, - privateIn: { - syntax: { - name: "@babel/plugin-syntax-private-property-in-object", - url: "https://git.io/JfK3q" - }, - transform: { - name: "@babel/plugin-proposal-private-property-in-object", - url: "https://git.io/JfK3O" - } - }, - recordAndTuple: { - syntax: { - name: "@babel/plugin-syntax-record-and-tuple", - url: "https://git.io/JvKp3" - } - }, - throwExpressions: { - syntax: { - name: "@babel/plugin-syntax-throw-expressions", - url: "https://git.io/vb4SJ" - }, - transform: { - name: "@babel/plugin-proposal-throw-expressions", - url: "https://git.io/vb4yF" - } - }, - typescript: { - syntax: { - name: "@babel/plugin-syntax-typescript", - url: "https://git.io/vb4SC" - }, - transform: { - name: "@babel/preset-typescript", - url: "https://git.io/JfeDz" - } - }, - asyncGenerators: { - syntax: { - name: "@babel/plugin-syntax-async-generators", - url: "https://git.io/vb4SY" - }, - transform: { - name: "@babel/plugin-proposal-async-generator-functions", - url: "https://git.io/vb4yp" - } - }, - logicalAssignment: { - syntax: { - name: "@babel/plugin-syntax-logical-assignment-operators", - url: "https://git.io/vAlBp" - }, - transform: { - name: "@babel/plugin-proposal-logical-assignment-operators", - url: "https://git.io/vAlRe" - } - }, - nullishCoalescingOperator: { - syntax: { - name: "@babel/plugin-syntax-nullish-coalescing-operator", - url: "https://git.io/vb4yx" - }, - transform: { - name: "@babel/plugin-proposal-nullish-coalescing-operator", - url: "https://git.io/vb4Se" - } - }, - objectRestSpread: { - syntax: { - name: "@babel/plugin-syntax-object-rest-spread", - url: "https://git.io/vb4y5" - }, - transform: { - name: "@babel/plugin-proposal-object-rest-spread", - url: "https://git.io/vb4Ss" - } - }, - optionalCatchBinding: { - syntax: { - name: "@babel/plugin-syntax-optional-catch-binding", - url: "https://git.io/vb4Sn" - }, - transform: { - name: "@babel/plugin-proposal-optional-catch-binding", - url: "https://git.io/vb4SI" + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) } } -}; -pluginNameMap.privateIn.syntax = pluginNameMap.privateIn.transform; - -const getNameURLCombination = ({ - name, - url -}) => `${name} (${url})`; - -function generateMissingPluginMessage(missingPluginName, loc, codeFrame) { - let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame; - const pluginInfo = pluginNameMap[missingPluginName]; - if (pluginInfo) { - const { - syntax: syntaxPlugin, - transform: transformPlugin - } = pluginInfo; - - if (syntaxPlugin) { - const syntaxPluginInfo = getNameURLCombination(syntaxPlugin); - - if (transformPlugin) { - const transformPluginInfo = getNameURLCombination(transformPlugin); - const sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets"; - helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation. -If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`; - } else { - helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`; - } - } + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) } - - return helpMessage; } -/***/ }), - -/***/ 95145: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +/***/ }), -function helpers() { - const data = _interopRequireWildcard(__nccwpck_require__(64643)); +/***/ 2270: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - helpers = function () { - return data; - }; +var Stream = (__nccwpck_require__(2203).Stream) - return data; -} +module.exports = legacy -function _generator() { - const data = _interopRequireDefault(__nccwpck_require__(52685)); +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } - _generator = function () { - return data; - }; + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); - return data; -} + Stream.call(this); -function _template() { - const data = _interopRequireDefault(__nccwpck_require__(20153)); + var self = this; - _template = function () { - return data; - }; + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; - return data; -} + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; -function t() { - const data = _interopRequireWildcard(__nccwpck_require__(24479)); + options = options || {}; - t = function () { - return data; - }; + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } - return data; -} + if (this.encoding) this.setEncoding(this.encoding); -var _file = _interopRequireDefault(__nccwpck_require__(64451)); + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (this.start > this.end) { + throw new Error('start must be <= end'); + } -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + this.pos = this.start; + } -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } -const buildUmdWrapper = replacements => (0, _template().default)` - (function (root, factory) { - if (typeof define === "function" && define.amd) { - define(AMD_ARGUMENTS, factory); - } else if (typeof exports === "object") { - factory(COMMON_ARGUMENTS); - } else { - factory(BROWSER_ARGUMENTS); + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; } - })(UMD_ROOT, function (FACTORY_PARAMETERS) { - FACTORY_BODY - }); - `(replacements); - -function buildGlobal(allowlist) { - const namespace = t().identifier("babelHelpers"); - const body = []; - const container = t().functionExpression(null, [t().identifier("global")], t().blockStatement(body)); - const tree = t().program([t().expressionStatement(t().callExpression(container, [t().conditionalExpression(t().binaryExpression("===", t().unaryExpression("typeof", t().identifier("global")), t().stringLiteral("undefined")), t().identifier("self"), t().identifier("global"))]))]); - body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().assignmentExpression("=", t().memberExpression(t().identifier("global"), namespace), t().objectExpression([])))])); - buildHelpers(body, namespace, allowlist); - return tree; -} - -function buildModule(allowlist) { - const body = []; - const refs = buildHelpers(body, null, allowlist); - body.unshift(t().exportNamedDeclaration(null, Object.keys(refs).map(name => { - return t().exportSpecifier(t().cloneNode(refs[name]), t().identifier(name)); - }))); - return t().program(body, [], "module"); -} - -function buildUmd(allowlist) { - const namespace = t().identifier("babelHelpers"); - const body = []; - body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().identifier("global"))])); - buildHelpers(body, namespace, allowlist); - return t().program([buildUmdWrapper({ - FACTORY_PARAMETERS: t().identifier("global"), - BROWSER_ARGUMENTS: t().assignmentExpression("=", t().memberExpression(t().identifier("root"), namespace), t().objectExpression([])), - COMMON_ARGUMENTS: t().identifier("exports"), - AMD_ARGUMENTS: t().arrayExpression([t().stringLiteral("exports")]), - FACTORY_BODY: body, - UMD_ROOT: t().identifier("this") - })]); -} - -function buildVar(allowlist) { - const namespace = t().identifier("babelHelpers"); - const body = []; - body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().objectExpression([]))])); - const tree = t().program(body); - buildHelpers(body, namespace, allowlist); - body.push(t().expressionStatement(namespace)); - return tree; -} - -function buildHelpers(body, namespace, allowlist) { - const getHelperReference = name => { - return namespace ? t().memberExpression(namespace, t().identifier(name)) : t().identifier(`_${name}`); - }; - - const refs = {}; - helpers().list.forEach(function (name) { - if (allowlist && allowlist.indexOf(name) < 0) return; - const ref = refs[name] = getHelperReference(name); - helpers().ensure(name, _file.default); - const { - nodes - } = helpers().get(name, getHelperReference, ref); - body.push(...nodes); - }); - return refs; -} -function _default(allowlist, outputType = "global") { - let tree; - const build = { - global: buildGlobal, - module: buildModule, - umd: buildUmd, - var: buildVar - }[outputType]; - - if (build) { - tree = build(allowlist); - } else { - throw new Error(`Unsupported output type ${outputType}`); + self.fd = fd; + self.emit('open', fd); + self._read(); + }) } - return (0, _generator().default)(tree).code; -} - -/***/ }), - -/***/ 21588: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.transformFromAstAsync = exports.transformFromAstSync = exports.transformFromAst = void 0; + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); + Stream.call(this); - _gensync = function () { - return data; - }; + this.path = path; + this.fd = null; + this.writable = true; - return data; -} + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; -var _config = _interopRequireDefault(__nccwpck_require__(36797)); + options = options || {}; -var _transformation = __nccwpck_require__(28675); + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } -const transformFromAstRunner = (0, _gensync().default)(function* (ast, code, opts) { - const config = yield* (0, _config.default)(opts); - if (config === null) return null; - if (!ast) throw new Error("No AST given"); - return yield* (0, _transformation.run)(config, code, ast); -}); + this.pos = this.start; + } -const transformFromAst = function transformFromAst(ast, code, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = undefined; - } + this.busy = false; + this._queue = []; - if (callback === undefined) { - return transformFromAstRunner.sync(ast, code, opts); + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } } - - transformFromAstRunner.errback(ast, code, opts, callback); -}; - -exports.transformFromAst = transformFromAst; -const transformFromAstSync = transformFromAstRunner.sync; -exports.transformFromAstSync = transformFromAstSync; -const transformFromAstAsync = transformFromAstRunner.async; -exports.transformFromAstAsync = transformFromAstAsync; - -/***/ }), - -/***/ 17673: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.transformFileAsync = exports.transformFileSync = exports.transformFile = void 0; - -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); - - _gensync = function () { - return data; - }; - - return data; } -var _config = _interopRequireDefault(__nccwpck_require__(36797)); - -var _transformation = __nccwpck_require__(28675); - -var fs = _interopRequireWildcard(__nccwpck_require__(6524)); - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -({}); -const transformFileRunner = (0, _gensync().default)(function* (filename, opts) { - const options = Object.assign({}, opts, { - filename - }); - const config = yield* (0, _config.default)(options); - if (config === null) return null; - const code = yield* fs.readFile(filename, "utf8"); - return yield* (0, _transformation.run)(config, code); -}); -const transformFile = transformFileRunner.errback; -exports.transformFile = transformFile; -const transformFileSync = transformFileRunner.sync; -exports.transformFileSync = transformFileSync; -const transformFileAsync = transformFileRunner.async; -exports.transformFileAsync = transformFileAsync; /***/ }), -/***/ 2016: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - +/***/ 3501: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.transformAsync = exports.transformSync = exports.transform = void 0; +var constants = __nccwpck_require__(9140) -function _gensync() { - const data = _interopRequireDefault(__nccwpck_require__(686)); +var origCwd = process.cwd +var cwd = null - _gensync = function () { - return data; - }; +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform - return data; +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd } +try { + process.cwd() +} catch (er) {} -var _config = _interopRequireDefault(__nccwpck_require__(36797)); - -var _transformation = __nccwpck_require__(28675); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const transformRunner = (0, _gensync().default)(function* transform(code, opts) { - const config = yield* (0, _config.default)(opts); - if (config === null) return null; - return yield* (0, _transformation.run)(config, code); -}); - -const transform = function transform(code, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = undefined; +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} - if (callback === undefined) return transformRunner.sync(code, opts); - transformRunner.errback(code, opts, callback); -}; - -exports.transform = transform; -const transformSync = transformRunner.sync; -exports.transformSync = transformSync; -const transformAsync = transformRunner.async; -exports.transformAsync = transformAsync; - -/***/ }), - -/***/ 14819: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +module.exports = patch -"use strict"; +function patch (fs) { + // (re-)implement some things that are known busted or missing. + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = loadBlockHoistPlugin; + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } -function _sortBy() { - const data = _interopRequireDefault(__nccwpck_require__(39625)); + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. - _sortBy = function () { - return data; - }; + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) - return data; -} + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) -var _config = _interopRequireDefault(__nccwpck_require__(36797)); + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) -let LOADED_PLUGIN; + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) -function loadBlockHoistPlugin() { - if (!LOADED_PLUGIN) { - const config = _config.default.sync({ - babelrc: false, - configFile: false, - plugins: [blockHoistPlugin] - }); + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) - LOADED_PLUGIN = config ? config.passes[0][0] : undefined; - if (!LOADED_PLUGIN) throw new Error("Assertion failure"); + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} } - return LOADED_PLUGIN; -} - -const blockHoistPlugin = { - name: "internal.blockHoist", - visitor: { - Block: { - exit({ - node - }) { - let hasChange = false; + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. - for (let i = 0; i < node.body.length; i++) { - const bodyNode = node.body[i]; + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } - if ((bodyNode == null ? void 0 : bodyNode._blockHoist) != null) { - hasChange = true; - break; + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) } + callback_.apply(this, arguments) } - - if (!hasChange) return; - node.body = (0, _sortBy().default)(node.body, function (bodyNode) { - let priority = bodyNode == null ? void 0 : bodyNode._blockHoist; - if (priority == null) priority = 1; - if (priority === true) priority = 2; - return -1 * priority; - }); } - + return fs$read.call(fs, fd, buffer, offset, length, position, callback) } - } -}; - -/***/ }), - -/***/ 64451: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -function helpers() { - const data = _interopRequireWildcard(__nccwpck_require__(64643)); - - helpers = function () { - return data; - }; - - return data; -} - -function _traverse() { - const data = _interopRequireWildcard(__nccwpck_require__(8631)); - _traverse = function () { - return data; - }; + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) - return data; -} + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) -function _codeFrame() { - const data = __nccwpck_require__(47548); + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } - _codeFrame = function () { - return data; - }; + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - return data; -} - -function t() { - const data = _interopRequireWildcard(__nccwpck_require__(24479)); - - t = function () { - return data; - }; - - return data; -} - -function _helperModuleTransforms() { - const data = __nccwpck_require__(67797); - - _helperModuleTransforms = function () { - return data; - }; - - return data; -} - -function _semver() { - const data = _interopRequireDefault(__nccwpck_require__(17927)); - - _semver = function () { - return data; - }; - - return data; -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -const errorVisitor = { - enter(path, state) { - const loc = path.node.loc; - - if (loc) { - state.loc = loc; - path.stop(); + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret } } -}; + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } -class File { - constructor(options, { - code, - ast, - inputMap - }) { - this._map = new Map(); - this.opts = void 0; - this.declarations = {}; - this.path = null; - this.ast = {}; - this.scope = void 0; - this.metadata = {}; - this.code = ""; - this.inputMap = null; - this.hub = { - file: this, - getCode: () => this.code, - getScope: () => this.scope, - addHelper: this.addHelper.bind(this), - buildError: this.buildCodeFrameError.bind(this) - }; - this.opts = options; - this.code = code; - this.ast = ast; - this.inputMap = inputMap; - this.path = _traverse().NodePath.get({ - hub: this.hub, - parentPath: null, - parent: this.ast, - container: this.ast, - key: "program" - }).setContext(); - this.scope = this.path.scope; - } - - get shebang() { - const { - interpreter - } = this.path.node; - return interpreter ? interpreter.value : ""; - } + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } - set shebang(value) { - if (value) { - this.path.get("interpreter").replaceWith(t().interpreterDirective(value)); - } else { - this.path.get("interpreter").remove(); + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} } } - set(key, val) { - if (key === "helpersNamespace") { - throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'."); + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) } - - this._map.set(key, val); - } - - get(key) { - return this._map.get(key); - } - - has(key) { - return this._map.has(key); - } - - getModuleName() { - return (0, _helperModuleTransforms().getModuleName)(this.opts, this.opts); } - addImport() { - throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'."); + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } } - availableHelper(name, versionRange) { - let minVersion; - try { - minVersion = helpers().minVersion(name); - } catch (err) { - if (err.code !== "BABEL_HELPER_UNKNOWN") throw err; - return false; + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) } - - if (typeof versionRange !== "string") return true; - if (_semver().default.valid(versionRange)) versionRange = `^${versionRange}`; - return !_semver().default.intersects(`<${minVersion}`, versionRange) && !_semver().default.intersects(`>=8.0.0`, versionRange); } - addHelper(name) { - const declar = this.declarations[name]; - if (declar) return t().cloneNode(declar); - const generator = this.get("helperGenerator"); - - if (generator) { - const res = generator(name); - if (res) return res; + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } } + } - helpers().ensure(name, File); - const uid = this.declarations[name] = this.scope.generateUidIdentifier(name); - const dependencies = {}; - - for (const dep of helpers().getDependencies(name)) { - dependencies[dep] = this.addHelper(dep); + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) } + } - const { - nodes, - globals - } = helpers().get(name, dep => dependencies[dep], uid, Object.keys(this.scope.getAllBindings())); - globals.forEach(name => { - if (this.path.scope.hasBinding(name, true)) { - this.path.scope.rename(name); + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 } - }); - nodes.forEach(node => { - node._compact = true; - }); - this.path.unshiftContainer("body", nodes); - this.path.get("body").forEach(path => { - if (nodes.indexOf(path.node) === -1) return; - if (path.isVariableDeclaration()) this.scope.registerDeclaration(path); - }); - return uid; + return stats; + } } - addTemplateObject() { - throw new Error("This function has been moved into the template literal transform itself."); - } + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true - buildCodeFrameError(node, msg, Error = SyntaxError) { - let loc = node && (node.loc || node._loc); + if (er.code === "ENOSYS") + return true - if (!loc && node) { - const state = { - loc: null - }; - (0, _traverse().default)(node, errorVisitor, this.scope, state); - loc = state.loc; - let txt = "This is an error on an internal node. Probably an internal error."; - if (loc) txt += " Location has been estimated."; - msg += ` (${txt})`; - } - - if (loc) { - const { - highlightCode = true - } = this.opts; - msg += "\n" + (0, _codeFrame().codeFrameColumns)(this.code, { - start: { - line: loc.start.line, - column: loc.start.column + 1 - }, - end: loc.end && loc.start.line === loc.end.line ? { - line: loc.end.line, - column: loc.end.column + 1 - } : undefined - }, { - highlightCode - }); + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true } - return new Error(msg); + return false } - } -exports["default"] = File; /***/ }), -/***/ 31164: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 9599: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = generateCode; +const fs = __nccwpck_require__(9896); +const sections = __nccwpck_require__(9495); +const defaults = __nccwpck_require__(7545); +const stringify = __nccwpck_require__(4710); +const excerpt = __nccwpck_require__(7894); +const engines = __nccwpck_require__(4452); +const toFile = __nccwpck_require__(8073); +const parse = __nccwpck_require__(8120); +const utils = __nccwpck_require__(8698); -function _convertSourceMap() { - const data = _interopRequireDefault(__nccwpck_require__(12270)); +/** + * Takes a string or object with `content` property, extracts + * and parses front-matter from the string, then returns an object + * with `data`, `content` and other [useful properties](#returned-object). + * + * ```js + * const matter = require('gray-matter'); + * console.log(matter('---\ntitle: Home\n---\nOther stuff')); + * //=> { data: { title: 'Home'}, content: 'Other stuff' } + * ``` + * @param {Object|String} `input` String, or object with `content` string + * @param {Object} `options` + * @return {Object} + * @api public + */ - _convertSourceMap = function () { - return data; - }; +function matter(input, options) { + if (input === '') { + return { data: {}, content: input, excerpt: '', orig: input }; + } - return data; -} + let file = toFile(input); + const cached = matter.cache[file.content]; -function _generator() { - const data = _interopRequireDefault(__nccwpck_require__(52685)); + if (!options) { + if (cached) { + file = Object.assign({}, cached); + file.orig = cached.orig; + return file; + } - _generator = function () { - return data; - }; + // only cache if there are no options passed. if we cache when options + // are passed, we would need to also cache options values, which would + // negate any performance benefits of caching + matter.cache[file.content] = file; + } - return data; + return parseMatter(file, options); } -var _mergeMap = _interopRequireDefault(__nccwpck_require__(7129)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function generateCode(pluginPasses, file) { - const { - opts, - ast, - code, - inputMap - } = file; - const results = []; +/** + * Parse front matter + */ - for (const plugins of pluginPasses) { - for (const plugin of plugins) { - const { - generatorOverride - } = plugin; +function parseMatter(file, options) { + const opts = defaults(options); + const open = opts.delimiters[0]; + const close = '\n' + opts.delimiters[1]; + let str = file.content; - if (generatorOverride) { - const result = generatorOverride(ast, opts.generatorOpts, code, _generator().default); - if (result !== undefined) results.push(result); - } - } + if (opts.language) { + file.language = opts.language; } - let result; - - if (results.length === 0) { - result = (0, _generator().default)(ast, opts.generatorOpts, code); - } else if (results.length === 1) { - result = results[0]; - - if (typeof result.then === "function") { - throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); - } - } else { - throw new Error("More than one plugin attempted to override codegen."); + // get the length of the opening delimiter + const openLen = open.length; + if (!utils.startsWith(str, open, openLen)) { + excerpt(file, opts); + return file; } - let { - code: outputCode, - map: outputMap - } = result; - - if (outputMap && inputMap) { - outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap); + // if the next character after the opening delimiter is + // a character from the delimiter, then it's not a front- + // matter delimiter + if (str.charAt(openLen) === open.slice(-1)) { + return file; } - if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") { - outputCode += "\n" + _convertSourceMap().default.fromObject(outputMap).toComment(); - } + // strip the opening delimiter + str = str.slice(openLen); + const len = str.length; - if (opts.sourceMaps === "inline") { - outputMap = null; + // use the language defined after first delimiter, if it exists + const language = matter.language(str, opts); + if (language.name) { + file.language = language.name; + str = str.slice(language.raw.length); } - return { - outputCode, - outputMap - }; -} - -/***/ }), - -/***/ 7129: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = mergeSourceMap; - -function _sourceMap() { - const data = _interopRequireDefault(__nccwpck_require__(45018)); - - _sourceMap = function () { - return data; - }; - - return data; -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function mergeSourceMap(inputMap, map) { - const input = buildMappingData(inputMap); - const output = buildMappingData(map); - const mergedGenerator = new (_sourceMap().default.SourceMapGenerator)(); - - for (const { - source - } of input.sources) { - if (typeof source.content === "string") { - mergedGenerator.setSourceContent(source.path, source.content); - } + // get the index of the closing delimiter + let closeIndex = str.indexOf(close); + if (closeIndex === -1) { + closeIndex = len; } - if (output.sources.length === 1) { - const defaultSource = output.sources[0]; - const insertedMappings = new Map(); - eachInputGeneratedRange(input, (generated, original, source) => { - eachOverlappingGeneratedOutputRange(defaultSource, generated, item => { - const key = makeMappingKey(item); - if (insertedMappings.has(key)) return; - insertedMappings.set(key, item); - mergedGenerator.addMapping({ - source: source.path, - original: { - line: original.line, - column: original.columnStart - }, - generated: { - line: item.line, - column: item.columnStart - }, - name: original.name - }); - }); - }); - - for (const item of insertedMappings.values()) { - if (item.columnEnd === Infinity) { - continue; - } + // get the raw front-matter block + file.matter = str.slice(0, closeIndex); - const clearItem = { - line: item.line, - columnStart: item.columnEnd - }; - const key = makeMappingKey(clearItem); + const block = file.matter.replace(/^\s*#[^\n]+/gm, '').trim(); + if (block === '') { + file.isEmpty = true; + file.empty = file.content; + file.data = {}; + } else { - if (insertedMappings.has(key)) { - continue; - } + // create file.data by parsing the raw file.matter block + file.data = parse(file.language, file.matter, opts); + } - mergedGenerator.addMapping({ - generated: { - line: clearItem.line, - column: clearItem.columnStart - } - }); + // update file.content + if (closeIndex === len) { + file.content = ''; + } else { + file.content = str.slice(closeIndex + close.length); + if (file.content[0] === '\r') { + file.content = file.content.slice(1); + } + if (file.content[0] === '\n') { + file.content = file.content.slice(1); } } - const result = mergedGenerator.toJSON(); + excerpt(file, opts); - if (typeof input.sourceRoot === "string") { - result.sourceRoot = input.sourceRoot; + if (opts.sections === true || typeof opts.section === 'function') { + sections(file, opts.section); } - - return result; + return file; } -function makeMappingKey(item) { - return `${item.line}/${item.columnStart}`; -} +/** + * Expose engines + */ -function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) { - const overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange); +matter.engines = engines; - for (const { - generated - } of overlappingOriginal) { - for (const item of generated) { - callback(item); - } - } -} +/** + * Stringify an object to YAML or the specified language, and + * append it to the given string. By default, only YAML and JSON + * can be stringified. See the [engines](#engines) section to learn + * how to stringify other languages. + * + * ```js + * console.log(matter.stringify('foo bar baz', {title: 'Home'})); + * // results in: + * // --- + * // title: Home + * // --- + * // foo bar baz + * ``` + * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string. + * @param {Object} `data` Front matter to stringify. + * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml]. + * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string. + * @api public + */ -function filterApplicableOriginalRanges({ - mappings -}, { - line, - columnStart, - columnEnd -}) { - return filterSortedArray(mappings, ({ - original: outOriginal - }) => { - if (line > outOriginal.line) return -1; - if (line < outOriginal.line) return 1; - if (columnStart >= outOriginal.columnEnd) return -1; - if (columnEnd <= outOriginal.columnStart) return 1; - return 0; - }); -} +matter.stringify = function(file, data, options) { + if (typeof file === 'string') file = matter(file, options); + return stringify(file, data, options); +}; -function eachInputGeneratedRange(map, callback) { - for (const { - source, - mappings - } of map.sources) { - for (const { - original, - generated - } of mappings) { - for (const item of generated) { - callback(item, original, source); - } - } - } -} +/** + * Synchronously read a file from the file system and parse + * front matter. Returns the same object as the [main function](#matter). + * + * ```js + * const file = matter.read('./content/blog-post.md'); + * ``` + * @param {String} `filepath` file path of the file to read. + * @param {Object} `options` [Options](#options) to pass to gray-matter. + * @return {Object} Returns [an object](#returned-object) with `data` and `content` + * @api public + */ -function buildMappingData(map) { - const consumer = new (_sourceMap().default.SourceMapConsumer)(Object.assign({}, map, { - sourceRoot: null - })); - const sources = new Map(); - const mappings = new Map(); - let last = null; - consumer.computeColumnSpans(); - consumer.eachMapping(m => { - if (m.originalLine === null) return; - let source = sources.get(m.source); +matter.read = function(filepath, options) { + const str = fs.readFileSync(filepath, 'utf8'); + const file = matter(str, options); + file.path = filepath; + return file; +}; - if (!source) { - source = { - path: m.source, - content: consumer.sourceContentFor(m.source, true) - }; - sources.set(m.source, source); - } +/** + * Returns true if the given `string` has front matter. + * @param {String} `string` + * @param {Object} `options` + * @return {Boolean} True if front matter exists. + * @api public + */ - let sourceData = mappings.get(source); +matter.test = function(str, options) { + return utils.startsWith(str, defaults(options).delimiters[0]); +}; - if (!sourceData) { - sourceData = { - source, - mappings: [] - }; - mappings.set(source, sourceData); - } +/** + * Detect the language to use, if one is defined after the + * first front-matter delimiter. + * @param {String} `string` + * @param {Object} `options` + * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed + */ - const obj = { - line: m.originalLine, - columnStart: m.originalColumn, - columnEnd: Infinity, - name: m.name - }; +matter.language = function(str, options) { + const opts = defaults(options); + const open = opts.delimiters[0]; - if (last && last.source === source && last.mapping.line === m.originalLine) { - last.mapping.columnEnd = m.originalColumn; - } + if (matter.test(str)) { + str = str.slice(open.length); + } - last = { - source, - mapping: obj - }; - sourceData.mappings.push({ - original: obj, - generated: consumer.allGeneratedPositionsFor({ - source: m.source, - line: m.originalLine, - column: m.originalColumn - }).map(item => ({ - line: item.line, - columnStart: item.column, - columnEnd: item.lastColumn + 1 - })) - }); - }, null, _sourceMap().default.SourceMapConsumer.ORIGINAL_ORDER); + const language = str.slice(0, str.search(/\r?\n/)); return { - file: map.file, - sourceRoot: map.sourceRoot, - sources: Array.from(mappings.values()) + raw: language, + name: language ? language.trim() : '' }; -} +}; -function findInsertionLocation(array, callback) { - let left = 0; - let right = array.length; +/** + * Expose `matter` + */ - while (left < right) { - const mid = Math.floor((left + right) / 2); - const item = array[mid]; - const result = callback(item); +matter.cache = {}; +matter.clearCache = function() { + matter.cache = {}; +}; +module.exports = matter; - if (result === 0) { - left = mid; - break; - } - if (result >= 0) { - right = mid; - } else { - left = mid + 1; - } - } +/***/ }), - let i = left; +/***/ 7545: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (i < array.length) { - while (i >= 0 && callback(array[i]) >= 0) { - i--; - } +"use strict"; - return i + 1; - } - return i; -} +const engines = __nccwpck_require__(4452); +const utils = __nccwpck_require__(8698); -function filterSortedArray(array, callback) { - const start = findInsertionLocation(array, callback); - const results = []; +module.exports = function(options) { + const opts = Object.assign({}, options); - for (let i = start; i < array.length && callback(array[i]) === 0; i++) { - results.push(array[i]); + // ensure that delimiters are an array + opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---'); + if (opts.delimiters.length === 1) { + opts.delimiters.push(opts.delimiters[0]); } - return results; -} + opts.language = (opts.language || opts.lang || 'yaml').toLowerCase(); + opts.engines = Object.assign({}, engines, opts.parsers, opts.engines); + return opts; +}; + /***/ }), -/***/ 28675: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 5921: +/***/ ((module) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.run = run; - -function _traverse() { - const data = _interopRequireDefault(__nccwpck_require__(8631)); - - _traverse = function () { - return data; - }; +module.exports = function(name, options) { + let engine = options.engines[name] || options.engines[aliase(name)]; + if (typeof engine === 'undefined') { + throw new Error('gray-matter engine "' + name + '" is not registered'); + } + if (typeof engine === 'function') { + engine = { parse: engine }; + } + return engine; +}; - return data; +function aliase(name) { + switch (name.toLowerCase()) { + case 'js': + case 'javascript': + return 'javascript'; + case 'coffee': + case 'coffeescript': + case 'cson': + return 'coffee'; + case 'yaml': + case 'yml': + return 'yaml'; + default: { + return name; + } + } } -var _pluginPass = _interopRequireDefault(__nccwpck_require__(40214)); - -var _blockHoistPlugin = _interopRequireDefault(__nccwpck_require__(14819)); -var _normalizeOpts = _interopRequireDefault(__nccwpck_require__(48587)); +/***/ }), -var _normalizeFile = _interopRequireDefault(__nccwpck_require__(98352)); +/***/ 4452: +/***/ ((module, exports, __nccwpck_require__) => { -var _generate = _interopRequireDefault(__nccwpck_require__(31164)); +"use strict"; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function* run(config, code, ast) { - const file = yield* (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code, ast); - const opts = file.opts; +const yaml = __nccwpck_require__(4281); - try { - yield* transformFile(file, config.passes); - } catch (e) { - var _opts$filename; +/** + * Default engines + */ - e.message = `${(_opts$filename = opts.filename) != null ? _opts$filename : "unknown"}: ${e.message}`; +const engines = exports = module.exports; - if (!e.code) { - e.code = "BABEL_TRANSFORM_ERROR"; - } +/** + * YAML + */ - throw e; - } +engines.yaml = { + parse: yaml.safeLoad.bind(yaml), + stringify: yaml.safeDump.bind(yaml) +}; - let outputCode, outputMap; - - try { - if (opts.code !== false) { - ({ - outputCode, - outputMap - } = (0, _generate.default)(config.passes, file)); - } - } catch (e) { - var _opts$filename2; - - e.message = `${(_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown"}: ${e.message}`; - - if (!e.code) { - e.code = "BABEL_GENERATE_ERROR"; - } +/** + * JSON + */ - throw e; +engines.json = { + parse: JSON.parse.bind(JSON), + stringify: function(obj, options) { + const opts = Object.assign({replacer: null, space: 2}, options); + return JSON.stringify(obj, opts.replacer, opts.space); } +}; - return { - metadata: file.metadata, - options: opts, - ast: opts.ast === true ? file.ast : null, - code: outputCode === undefined ? null : outputCode, - map: outputMap === undefined ? null : outputMap, - sourceType: file.ast.program.sourceType - }; -} - -function* transformFile(file, pluginPasses) { - for (const pluginPairs of pluginPasses) { - const passPairs = []; - const passes = []; - const visitors = []; - - for (const plugin of pluginPairs.concat([(0, _blockHoistPlugin.default)()])) { - const pass = new _pluginPass.default(file, plugin.key, plugin.options); - passPairs.push([plugin, pass]); - passes.push(pass); - visitors.push(plugin.visitor); - } - - for (const [plugin, pass] of passPairs) { - const fn = plugin.pre; - - if (fn) { - const result = fn.call(pass, file); - yield* []; +/** + * JavaScript + */ - if (isThenable(result)) { - throw new Error(`You appear to be using an plugin with an async .pre, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); - } +engines.javascript = { + parse: function parse(str, options, wrap) { + /* eslint no-eval: 0 */ + try { + if (wrap !== false) { + str = '(function() {\nreturn ' + str.trim() + ';\n}());'; } - } - - const visitor = _traverse().default.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod); - - (0, _traverse().default)(file.ast, visitor, file.scope); - - for (const [plugin, pass] of passPairs) { - const fn = plugin.post; - - if (fn) { - const result = fn.call(pass, file); - yield* []; - - if (isThenable(result)) { - throw new Error(`You appear to be using an plugin with an async .post, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); - } + return eval(str) || {}; + } catch (err) { + if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) { + return parse(str, options, false); } + throw new SyntaxError(err); } + }, + stringify: function() { + throw new Error('stringifying JavaScript is not supported'); } -} +}; -function isThenable(val) { - return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; -} /***/ }), -/***/ 98352: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 7894: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = normalizeFile; - -function _fs() { - const data = _interopRequireDefault(__nccwpck_require__(57147)); - - _fs = function () { - return data; - }; - - return data; -} - -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); - - _path = function () { - return data; - }; - - return data; -} - -function _debug() { - const data = _interopRequireDefault(__nccwpck_require__(67984)); +const defaults = __nccwpck_require__(7545); - _debug = function () { - return data; - }; +module.exports = function(file, options) { + const opts = defaults(options); - return data; -} + if (file.data == null) { + file.data = {}; + } -function _cloneDeep() { - const data = _interopRequireDefault(__nccwpck_require__(35026)); + if (typeof opts.excerpt === 'function') { + return opts.excerpt(file, opts); + } - _cloneDeep = function () { - return data; - }; + const sep = file.data.excerpt_separator || opts.excerpt_separator; + if (sep == null && (opts.excerpt === false || opts.excerpt == null)) { + return file; + } - return data; -} + const delimiter = typeof opts.excerpt === 'string' + ? opts.excerpt + : (sep || opts.delimiters[0]); -function t() { - const data = _interopRequireWildcard(__nccwpck_require__(24479)); + // if enabled, get the excerpt defined after front-matter + const idx = file.content.indexOf(delimiter); + if (idx !== -1) { + file.excerpt = file.content.slice(0, idx); + } - t = function () { - return data; - }; + return file; +}; - return data; -} -function _convertSourceMap() { - const data = _interopRequireDefault(__nccwpck_require__(12270)); +/***/ }), - _convertSourceMap = function () { - return data; - }; +/***/ 8120: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return data; -} +"use strict"; -var _file = _interopRequireDefault(__nccwpck_require__(64451)); -var _parser = _interopRequireDefault(__nccwpck_require__(38554)); +const getEngine = __nccwpck_require__(5921); +const defaults = __nccwpck_require__(7545); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } +module.exports = function(language, str, options) { + const opts = defaults(options); + const engine = getEngine(language, opts); + if (typeof engine.parse !== 'function') { + throw new TypeError('expected "' + language + '.parse" to be a function'); + } + return engine.parse(str, opts); +}; -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ }), -const debug = (0, _debug().default)("babel:transform:file"); -const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000; +/***/ 4710: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function* normalizeFile(pluginPasses, options, code, ast) { - code = `${code || ""}`; +"use strict"; - if (ast) { - if (ast.type === "Program") { - ast = t().file(ast, [], []); - } else if (ast.type !== "File") { - throw new Error("AST root must be a Program or File node"); - } - const { - cloneInputAst - } = options; +const typeOf = __nccwpck_require__(5140); +const getEngine = __nccwpck_require__(5921); +const defaults = __nccwpck_require__(7545); - if (cloneInputAst) { - ast = (0, _cloneDeep().default)(ast); +module.exports = function(file, data, options) { + if (data == null && options == null) { + switch (typeOf(file)) { + case 'object': + data = file.data; + options = {}; + break; + case 'string': + return file; + default: { + throw new TypeError('expected file to be a string or object'); + } } - } else { - ast = yield* (0, _parser.default)(pluginPasses, options, code); } - let inputMap = null; - - if (options.inputSourceMap !== false) { - if (typeof options.inputSourceMap === "object") { - inputMap = _convertSourceMap().default.fromObject(options.inputSourceMap); - } - - if (!inputMap) { - const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast); - - if (lastComment) { - try { - inputMap = _convertSourceMap().default.fromComment(lastComment); - } catch (err) { - debug("discarding unknown inline input sourcemap", err); - } - } - } + const str = file.content; + const opts = defaults(options); + if (data == null) { + if (!opts.data) return file; + data = opts.data; + } - if (!inputMap) { - const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast); + const language = file.language || opts.language; + const engine = getEngine(language, opts); + if (typeof engine.stringify !== 'function') { + throw new TypeError('expected "' + language + '.stringify" to be a function'); + } - if (typeof options.filename === "string" && lastComment) { - try { - const match = EXTERNAL_SOURCEMAP_REGEX.exec(lastComment); + data = Object.assign({}, file.data, data); + const open = opts.delimiters[0]; + const close = opts.delimiters[1]; + const matter = engine.stringify(data, options).trim(); + let buf = ''; - const inputMapContent = _fs().default.readFileSync(_path().default.resolve(_path().default.dirname(options.filename), match[1])); + if (matter !== '{}') { + buf = newline(open) + newline(matter) + newline(close); + } - if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) { - debug("skip merging input map > 1 MB"); - } else { - inputMap = _convertSourceMap().default.fromJSON(inputMapContent); - } - } catch (err) { - debug("discarding unknown file input sourcemap", err); - } - } else if (lastComment) { - debug("discarding un-loadable file input sourcemap"); - } + if (typeof file.excerpt === 'string' && file.excerpt !== '') { + if (str.indexOf(file.excerpt.trim()) === -1) { + buf += newline(file.excerpt) + newline(close); } } - return new _file.default(options, { - code, - ast, - inputMap - }); -} - -const INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/; -const EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/; - -function extractCommentsFromList(regex, comments, lastComment) { - if (comments) { - comments = comments.filter(({ - value - }) => { - if (regex.test(value)) { - lastComment = value; - return false; - } - - return true; - }); - } + return buf + newline(str); +}; - return [comments, lastComment]; +function newline(str) { + return str.slice(-1) !== '\n' ? str + '\n' : str; } -function extractComments(regex, ast) { - let lastComment = null; - t().traverseFast(ast, node => { - [node.leadingComments, lastComment] = extractCommentsFromList(regex, node.leadingComments, lastComment); - [node.innerComments, lastComment] = extractCommentsFromList(regex, node.innerComments, lastComment); - [node.trailingComments, lastComment] = extractCommentsFromList(regex, node.trailingComments, lastComment); - }); - return lastComment; -} /***/ }), -/***/ 48587: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 8073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = normalizeOptions; +const typeOf = __nccwpck_require__(5140); +const stringify = __nccwpck_require__(4710); +const utils = __nccwpck_require__(8698); -function _path() { - const data = _interopRequireDefault(__nccwpck_require__(71017)); +/** + * Normalize the given value to ensure an object is returned + * with the expected properties. + */ - _path = function () { - return data; - }; +module.exports = function(file) { + if (typeOf(file) !== 'object') { + file = { content: file }; + } - return data; -} + if (typeOf(file.data) !== 'object') { + file.data = {}; + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + // if file was passed as an object, ensure that + // "file.content" is set + if (file.contents && file.content == null) { + file.content = file.contents; + } -function normalizeOptions(config) { - const { - filename, - cwd, - filenameRelative = typeof filename === "string" ? _path().default.relative(cwd, filename) : "unknown", - sourceType = "module", - inputSourceMap, - sourceMaps = !!inputSourceMap, - moduleRoot, - sourceRoot = moduleRoot, - sourceFileName = _path().default.basename(filenameRelative), - comments = true, - compact = "auto" - } = config.options; - const opts = config.options; - const options = Object.assign({}, opts, { - parserOpts: Object.assign({ - sourceType: _path().default.extname(filenameRelative) === ".mjs" ? "module" : sourceType, - sourceFileName: filename, - plugins: [] - }, opts.parserOpts), - generatorOpts: Object.assign({ - filename, - auxiliaryCommentBefore: opts.auxiliaryCommentBefore, - auxiliaryCommentAfter: opts.auxiliaryCommentAfter, - retainLines: opts.retainLines, - comments, - shouldPrintComment: opts.shouldPrintComment, - compact, - minified: opts.minified, - sourceMaps, - sourceRoot, - sourceFileName - }, opts.generatorOpts) + // set non-enumerable properties on the file object + utils.define(file, 'orig', utils.toBuffer(file.content)); + utils.define(file, 'language', file.language || ''); + utils.define(file, 'matter', file.matter || ''); + utils.define(file, 'stringify', function(data, options) { + if (options && options.language) { + file.language = options.language; + } + return stringify(file, data, options); }); - for (const plugins of config.passes) { - for (const plugin of plugins) { - if (plugin.manipulateOptions) { - plugin.manipulateOptions(options, options.parserOpts); - } - } - } + // strip BOM and ensure that "file.content" is a string + file.content = utils.toString(file.content); + file.isEmpty = false; + file.excerpt = ''; + return file; +}; - return options; -} /***/ }), -/***/ 40214: -/***/ ((__unused_webpack_module, exports) => { +/***/ 8698: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -class PluginPass { - constructor(file, key, options) { - this._map = new Map(); - this.key = void 0; - this.file = void 0; - this.opts = void 0; - this.cwd = void 0; - this.filename = void 0; - this.key = key; - this.file = file; - this.opts = options || {}; - this.cwd = file.opts.cwd; - this.filename = file.opts.filename; - } - - set(key, val) { - this._map.set(key, val); - } - - get(key) { - return this._map.get(key); - } - - availableHelper(name, versionRange) { - return this.file.availableHelper(name, versionRange); - } - - addHelper(name) { - return this.file.addHelper(name); - } +const stripBom = __nccwpck_require__(1389); +const typeOf = __nccwpck_require__(5140); - addImport() { - return this.file.addImport(); - } +exports.define = function(obj, key, val) { + Reflect.defineProperty(obj, key, { + enumerable: false, + configurable: true, + writable: true, + value: val + }); +}; - getModuleName() { - return this.file.getModuleName(); - } +/** + * Returns true if `val` is a buffer + */ - buildCodeFrameError(node, msg, Error) { - return this.file.buildCodeFrameError(node, msg, Error); - } +exports.isBuffer = function(val) { + return typeOf(val) === 'buffer'; +}; -} +/** + * Returns true if `val` is an object + */ -exports["default"] = PluginPass; +exports.isObject = function(val) { + return typeOf(val) === 'object'; +}; -/***/ }), +/** + * Cast `input` to a buffer + */ -/***/ 17927: -/***/ ((module, exports) => { +exports.toBuffer = function(input) { + return typeof input === 'string' ? Buffer.from(input) : input; +}; -exports = module.exports = SemVer +/** + * Cast `val` to a string. + */ -var debug -/* istanbul ignore next */ -if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift('SEMVER') - console.log.apply(console, args) +exports.toString = function(input) { + if (exports.isBuffer(input)) return stripBom(String(input)); + if (typeof input !== 'string') { + throw new TypeError('expected input to be a string or buffer'); } -} else { - debug = function () {} -} - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0' + return stripBom(input); +}; -var MAX_LENGTH = 256 -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 +/** + * Cast `val` to an array. + */ -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16 +exports.arrayify = function(val) { + return val ? (Array.isArray(val) ? val : [val]) : []; +}; -// The actual regexps go on exports.re -var re = exports.re = [] -var src = exports.src = [] -var R = 0 +/** + * Returns true if `str` starts with `substr`. + */ -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. +exports.startsWith = function(str, substr, len) { + if (typeof len !== 'number') len = substr.length; + return str.slice(0, len) === substr; +}; -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. -var NUMERICIDENTIFIER = R++ -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' -var NUMERICIDENTIFIERLOOSE = R++ -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' +/***/ }), -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. +/***/ 6403: +/***/ ((module) => { -var NONNUMERICIDENTIFIER = R++ -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' +"use strict"; +/*! + * is-extendable <https://github.com/jonschlinkert/is-extendable> + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ -// ## Main Version -// Three dot-separated numeric identifiers. -var MAINVERSION = R++ -src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')' -var MAINVERSIONLOOSE = R++ -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')' +module.exports = function isExtendable(val) { + return typeof val !== 'undefined' && val !== null + && (typeof val === 'object' || typeof val === 'function'); +}; -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. -var PRERELEASEIDENTIFIER = R++ -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')' +/***/ }), -var PRERELEASEIDENTIFIERLOOSE = R++ -src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')' +/***/ 4281: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. +"use strict"; -var PRERELEASE = R++ -src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))' -var PRERELEASELOOSE = R++ -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. +var yaml = __nccwpck_require__(4040); -var BUILDIDENTIFIER = R++ -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. +module.exports = yaml; -var BUILD = R++ -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -var FULL = R++ -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?' - -src[FULL] = '^' + FULLPLAIN + '$' - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + - src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?' - -var LOOSE = R++ -src[LOOSE] = '^' + LOOSEPLAIN + '$' - -var GTLT = R++ -src[GTLT] = '((?:<|>)?=?)' - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++ -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' -var XRANGEIDENTIFIER = R++ -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*' - -var XRANGEPLAIN = R++ -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?' - -var XRANGEPLAINLOOSE = R++ -src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[PRERELEASELOOSE] + ')?' + - src[BUILD] + '?' + - ')?)?' - -var XRANGE = R++ -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' -var XRANGELOOSE = R++ -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -var COERCE = R++ -src[COERCE] = '(?:^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])' - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -var LONETILDE = R++ -src[LONETILDE] = '(?:~>?)' - -var TILDETRIM = R++ -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') -var tildeTrimReplace = '$1~' - -var TILDE = R++ -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' -var TILDELOOSE = R++ -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -var LONECARET = R++ -src[LONECARET] = '(?:\\^)' - -var CARETTRIM = R++ -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') -var caretTrimReplace = '$1^' - -var CARET = R++ -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' -var CARETLOOSE = R++ -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++ -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$' -var COMPARATOR = R++ -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$' - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++ -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')' - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') -var comparatorTrimReplace = '$1$2$3' - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++ -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$' - -var HYPHENRANGELOOSE = R++ -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$' - -// Star ranges basically just allow anything at all. -var STAR = R++ -src[STAR] = '(<|>)?=?\\s*\\*' - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]) - if (!re[i]) { - re[i] = new RegExp(src[i]) - } -} - -exports.parse = parse -function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (version instanceof SemVer) { - return version - } - - if (typeof version !== 'string') { - return null - } - if (version.length > MAX_LENGTH) { - return null - } +/***/ }), - var r = options.loose ? re[LOOSE] : re[FULL] - if (!r.test(version)) { - return null - } +/***/ 4040: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - try { - return new SemVer(version, options) - } catch (er) { - return null - } -} +"use strict"; -exports.valid = valid -function valid (version, options) { - var v = parse(version, options) - return v ? v.version : null -} -exports.clean = clean -function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} -exports.SemVer = SemVer +var loader = __nccwpck_require__(5868); +var dumper = __nccwpck_require__(5078); -function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } +function deprecated(name) { + return function () { + throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + }; +} - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose +module.exports.Type = __nccwpck_require__(323); +module.exports.Schema = __nccwpck_require__(3487); +module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(6810); +module.exports.JSON_SCHEMA = __nccwpck_require__(6613); +module.exports.CORE_SCHEMA = __nccwpck_require__(5116); +module.exports.DEFAULT_SAFE_SCHEMA = __nccwpck_require__(6032); +module.exports.DEFAULT_FULL_SCHEMA = __nccwpck_require__(948); +module.exports.load = loader.load; +module.exports.loadAll = loader.loadAll; +module.exports.safeLoad = loader.safeLoad; +module.exports.safeLoadAll = loader.safeLoadAll; +module.exports.dump = dumper.dump; +module.exports.safeDump = dumper.safeDump; +module.exports.YAMLException = __nccwpck_require__(5622); - var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) +// Deprecated schema names from JS-YAML 2.0.x +module.exports.MINIMAL_SCHEMA = __nccwpck_require__(6810); +module.exports.SAFE_SCHEMA = __nccwpck_require__(6032); +module.exports.DEFAULT_SCHEMA = __nccwpck_require__(948); - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } +// Deprecated functions from JS-YAML 1.x.x +module.exports.scan = deprecated('scan'); +module.exports.parse = deprecated('parse'); +module.exports.compose = deprecated('compose'); +module.exports.addConstructor = deprecated('addConstructor'); - this.raw = version - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] +/***/ }), - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } +/***/ 4206: +/***/ ((module) => { - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } +"use strict"; - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map(function (id) { - if (/^[0-9]+$/.test(id)) { - var num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } - this.build = m[5] ? m[5].split('.') : [] - this.format() +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); } -SemVer.prototype.format = function () { - this.version = this.major + '.' + this.minor + '.' + this.patch - if (this.prerelease.length) { - this.version += '-' + this.prerelease.join('.') - } - return this.version -} -SemVer.prototype.toString = function () { - return this.version +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); } -SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - return this.compareMain(other) || this.comparePre(other) +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; + + return [ sequence ]; } -SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) -} +function extend(target, source) { + var index, length, key, sourceKeys; -SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } + if (source) { + sourceKeys = Object.keys(source); - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } } - var i = 0 - do { - var a = this.prerelease[i] - var b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) + return target; } -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier) - this.inc('pre', identifier) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier) - } - this.inc('pre', identifier) - break - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0] - } else { - var i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0] - } - } else { - this.prerelease = [identifier, 0] - } - } - break +function repeat(string, count) { + var result = '', cycle; - default: - throw new Error('invalid increment argument: ' + release) + for (cycle = 0; cycle < count; cycle += 1) { + result += string; } - this.format() - this.raw = this.version - return this + + return result; } -exports.inc = inc -function inc (version, release, loose, identifier) { - if (typeof (loose) === 'string') { - identifier = loose - loose = undefined - } - try { - return new SemVer(version, loose).inc(release, identifier).version - } catch (er) { - return null - } +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); } -exports.diff = diff -function diff (version1, version2) { - if (eq(version1, version2)) { - return null - } else { - var v1 = parse(version1) - var v2 = parse(version2) - var prefix = '' - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre' - var defaultResult = 'prerelease' - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } -} -exports.compareIdentifiers = compareIdentifiers +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; -var numeric = /^[0-9]+$/ -function compareIdentifiers (a, b) { - var anum = numeric.test(a) - var bnum = numeric.test(b) - if (anum && bnum) { - a = +a - b = +b - } +/***/ }), - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} +/***/ 5078: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -exports.rcompareIdentifiers = rcompareIdentifiers -function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) -} +"use strict"; -exports.major = major -function major (a, loose) { - return new SemVer(a, loose).major -} -exports.minor = minor -function minor (a, loose) { - return new SemVer(a, loose).minor -} +/*eslint-disable no-use-before-define*/ -exports.patch = patch -function patch (a, loose) { - return new SemVer(a, loose).patch -} +var common = __nccwpck_require__(4206); +var YAMLException = __nccwpck_require__(5622); +var DEFAULT_FULL_SCHEMA = __nccwpck_require__(948); +var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(6032); -exports.compare = compare -function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) -} +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; -exports.compareLoose = compareLoose -function compareLoose (a, b) { - return compare(a, b, true) -} +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ -exports.rcompare = rcompare -function rcompare (a, b, loose) { - return compare(b, a, loose) -} +var ESCAPE_SEQUENCES = {}; -exports.sort = sort -function sort (list, loose) { - return list.sort(function (a, b) { - return exports.compare(a, b, loose) - }) -} +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; -exports.rsort = rsort -function rsort (list, loose) { - return list.sort(function (a, b) { - return exports.rcompare(a, b, loose) - }) -} +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; -exports.gt = gt -function gt (a, b, loose) { - return compare(a, b, loose) > 0 -} +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; -exports.lt = lt -function lt (a, b, loose) { - return compare(a, b, loose) < 0 -} + if (map === null) return {}; -exports.eq = eq -function eq (a, b, loose) { - return compare(a, b, loose) === 0 -} + result = {}; + keys = Object.keys(map); -exports.neq = neq -function neq (a, b, loose) { - return compare(a, b, loose) !== 0 -} + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); -exports.gte = gte -function gte (a, b, loose) { - return compare(a, b, loose) >= 0 -} + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; -exports.lte = lte -function lte (a, b, loose) { - return compare(a, b, loose) <= 0 -} + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } -exports.cmp = cmp -function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b + return result; +} - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b +function encodeHex(character) { + var string, handle, length; - case '': - case '=': - case '==': - return eq(a, b, loose) + string = character.toString(16).toUpperCase(); - case '!=': - return neq(a, b, loose) + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + } - case '>': - return gt(a, b, loose) + return '\\' + handle + common.repeat('0', length - string.length) + string; +} - case '>=': - return gte(a, b, loose) +function State(options) { + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; - case '<': - return lt(a, b, loose) + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; - case '<=': - return lte(a, b, loose) + this.tag = null; + this.result = ''; - default: - throw new TypeError('Invalid operator: ' + op) - } + this.duplicates = []; + this.usedDuplicates = null; } -exports.Comparator = Comparator -function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; } else { - comp = comp.value + line = string.slice(position, next + 1); + position = next + 1; } - } - - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) - } - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) + if (line.length && line !== '\n') result += ind; - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version + result += line; } - debug('comp', this) + return result; } -var ANY = {} -Comparator.prototype.parse = function (comp) { - var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR] - var m = comp.match(r) +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} - if (!m) { - throw new TypeError('Invalid comparator: ' + comp) - } +function testImplicitResolving(state, str) { + var index, length, type; - this.operator = m[1] - if (this.operator === '=') { - this.operator = '' - } + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) + if (type.resolve(str)) { + return true; + } } + + return false; } -Comparator.prototype.toString = function () { - return this.value +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; } -Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose) +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) + || (0x10000 <= c && c <= 0x10FFFF); +} - if (this.semver === ANY) { - return true - } +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// [24] b-line-feed ::= #xA /* LF */ +// [25] b-carriage-return ::= #xD /* CR */ +// [3] c-byte-order-mark ::= #xFEFF +function isNsChar(c) { + return isPrintable(c) && !isWhitespace(c) + // byte-order-mark + && c !== 0xFEFF + // b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; +} - if (typeof version === 'string') { - version = new SemVer(version, this.options) - } +// Simplified test for values allowed after the first character in plain style. +function isPlainSafe(c, prev) { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return isPrintable(c) && c !== 0xFEFF + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // - ":" - "#" + // /* An ns-char preceding */ "#" + && c !== CHAR_COLON + && ((c !== CHAR_SHARP) || (prev && isNsChar(prev))); +} - return cmp(version, this.operator, this.semver, this.options) +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return isPrintable(c) && c !== 0xFEFF + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; } -Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; - var rangeTmp +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { + var i; + var char, prev_char; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(string.charCodeAt(0)) + && !isWhitespace(string.charCodeAt(string.length - 1)); - if (this.operator === '') { - rangeTmp = new Range(comp.value, options) - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - rangeTmp = new Range(this.value, options) - return satisfies(comp.semver, rangeTmp, options) + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>') - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<') - var sameSemVer = this.semver.version === comp.semver.version - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<=') - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')) - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')) - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) + ? STYLE_PLAIN : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; } -exports.Range = Range -function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey) { + state.dump = (function () { + if (string.length === 0) { + return "''"; } - } - - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) + if (!state.noCompatMode && + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + return "'" + string + "'"; } - } - if (range instanceof Comparator) { - return new Range(range.value, options) - } + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - if (!(this instanceof Range)) { - return new Range(range, options) - } + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException('impossible error: invalid scalar style'); + } + }()); +} - // First, split based on boolean or || - this.raw = range - this.set = range.split(/\s*\|\|\s*/).map(function (range) { - return this.parseRange(range.trim()) - }, this).filter(function (c) { - // throw out any that are not relevant for whatever reason - return c.length - }) +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range) - } + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); - this.format() + return indentIndicator + chomp + '\n'; } -Range.prototype.format = function () { - this.range = this.set.map(function (comps) { - return comps.join(' ').trim() - }).join('||').trim() - return this.range +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; } -Range.prototype.toString = function () { - return this.range -} +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; -Range.prototype.parseRange = function (range) { - var loose = this.options.loose - range = range.trim() - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE] - range = range.replace(hr, hyphenReplace) - debug('hyphen replace', range) - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[COMPARATORTRIM]) + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace) + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace) + return result; +} - // normalize spaces - range = range.split(/\s+/).join(' ') +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; - // At this point, the range is completely trimmed and - // ready to be split into comparators. + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR] - var set = range.split(' ').map(function (comp) { - return parseComparator(comp, this.options) - }, this).join(' ').split(/\s+/) - if (this.options.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function (comp) { - return !!comp.match(compRe) - }) + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; } - set = set.map(function (comp) { - return new Comparator(comp, this.options) - }, this) - return set -} - -Range.prototype.intersects = function (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); } - return this.set.some(function (thisComparators) { - return thisComparators.every(function (thisComparator) { - return range.set.some(function (rangeComparators) { - return rangeComparators.every(function (rangeComparator) { - return thisComparator.intersects(rangeComparator, options) - }) - }) - }) - }) + return result.slice(1); // drop extra \n joiner } -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators -function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) -} +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char, nextChar; + var escapeSeq; -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator (comp, options) { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} - -function isX (id) { - return !id || id.toLowerCase() === 'x' || id === '*' -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') -} - -function replaceTilde (comp, options) { - var r = options.loose ? re[TILDELOOSE] : re[TILDE] - return comp.replace(r, function (_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr) - var ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else if (pr) { - debug('replaceTilde pr', pr) - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } else { - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' + for (var i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) { + nextChar = string.charCodeAt(i + 1); + if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) { + // Combine the surrogate pair and store it escaped. + result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); + // Advance index one extra since we already used that char here. + i++; continue; + } } + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) + ? string[i] + : escapeSeq || encodeHex(char); + } - debug('tilde return', ret) - return ret - }) + return result; } -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') -} - -function replaceCaret (comp, options) { - debug('caret', comp, options) - var r = options.loose ? re[CARETLOOSE] : re[CARET] - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr) - var ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - if (M === '0') { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else { - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + (+M + 1) + '.0.0' - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0' - } - } +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length; - debug('caret return', ret) - return ret - }) -} + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } -function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') + state.tag = _tag; + state.dump = '[' + _result + ']'; } -function replaceXRange (comp, options) { - comp = comp.trim() - var r = options.loose ? re[XRANGELOOSE] : re[XRANGE] - return comp.replace(r, function (ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - var xM = isX(M) - var xm = xM || isX(m) - var xp = xm || isX(p) - var anyX = xp +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length; - if (gtlt === '=' && anyX) { - gtlt = '' - } + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0' + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } + _result += '- '; } - ret = gtlt + M + '.' + m + '.' + p - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + _result += state.dump; } + } - debug('xRange return', ret) - - return ret - }) + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. } -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars (comp, options) { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], '') -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = '>=' + fM + '.0.0' - } else if (isX(fp)) { - from = '>=' + fM + '.' + fm + '.0' - } else { - from = '>=' + from - } +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = '<' + (+tM + 1) + '.0.0' - } else if (isX(tp)) { - to = '<' + tM + '.' + (+tm + 1) + '.0' - } else if (tpr) { - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr - } else { - to = '<=' + to - } + for (index = 0, length = objectKeyList.length; index < length; index += 1) { - return (from + ' ' + to).trim() -} + pairBuffer = ''; + if (index !== 0) pairBuffer += ', '; -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function (version) { - if (!version) { - return false - } + if (state.condenseFlow) pairBuffer += '"'; - if (typeof version === 'string') { - version = new SemVer(version, this.options) - } + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; } - } - return false -} -function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } + if (state.dump.length > 1024) pairBuffer += '? '; - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === ANY) { - continue - } + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. } - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true -} - -exports.satisfies = satisfies -function satisfies (version, range, options) { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} + pairBuffer += state.dump; -exports.maxSatisfying = maxSatisfying -function maxSatisfying (versions, range, options) { - var max = null - var maxSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null + // Both key and value are valid. + _result += pairBuffer; } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} -exports.minSatisfying = minSatisfying -function minSatisfying (versions, range, options) { - var min = null - var minSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min + state.tag = _tag; + state.dump = '{' + _result + '}'; } -exports.minVersion = minVersion -function minVersion (range, loose) { - range = new Range(range, loose) - - var minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } - - minver = null - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) - } - }) - } - - if (minver && range.test(minver)) { - return minver - } - - return null -} +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; -exports.validRange = validRange -function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException('sortKeys must be a boolean or a function'); } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr -function ltr (version, range, options) { - return outside(version, range, '<', options) -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr -function gtr (version, range, options) { - return outside(version, range, '>', options) -} - -exports.outside = outside -function outside (version, range, hilo, options) { - version = new SemVer(version, options) - range = new Range(range, options) - var gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } - var high = null - var low = null + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); - comparators.forEach(function (comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false } - } - return true -} -exports.prerelease = prerelease -function prerelease (version, options) { - var parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} + pairBuffer += state.dump; -exports.intersects = intersects -function intersects (r1, r2, options) { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } -exports.coerce = coerce -function coerce (version) { - if (version instanceof SemVer) { - return version - } + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } - if (typeof version !== 'string') { - return null - } + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } - var match = version.match(re[COERCE]) + pairBuffer += state.dump; - if (match == null) { - return null + // Both key and value are valid. + _result += pairBuffer; } - return parse(match[1] + - '.' + (match[2] || '0') + - '.' + (match[3] || '0')) + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. } +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; -/***/ }), - -/***/ 76563: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -const SPACES_RE = /^[ \t]+$/; - -class Buffer { - constructor(map) { - this._map = null; - this._buf = ""; - this._last = 0; - this._queue = []; - this._position = { - line: 1, - column: 0 - }; - this._sourcePosition = { - identifierName: null, - line: null, - column: null, - filename: null - }; - this._disallowedPop = null; - this._map = map; - } + typeList = explicit ? state.explicitTypes : state.implicitTypes; - get() { - this._flush(); + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; - const map = this._map; - const result = { - code: this._buf.trimRight(), - map: null, - rawMappings: map == null ? void 0 : map.getRawMappings() - }; + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { - if (map) { - Object.defineProperty(result, "map", { - configurable: true, - enumerable: true, + state.tag = explicit ? type.tag : '?'; - get() { - return this.map = map.get(); - }, + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; - set(value) { - Object.defineProperty(this, "map", { - value, - writable: true - }); + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); } - }); - } - - return result; - } - - append(str) { - this._flush(); - - const { - line, - column, - filename, - identifierName, - force - } = this._sourcePosition; - - this._append(str, line, column, identifierName, filename, force); - } - - queue(str) { - if (str === "\n") { - while (this._queue.length > 0 && SPACES_RE.test(this._queue[0][0])) { - this._queue.shift(); + state.dump = _result; } - } - - const { - line, - column, - filename, - identifierName, - force - } = this._sourcePosition; - - this._queue.unshift([str, line, column, identifierName, filename, force]); - } - _flush() { - let item; - - while (item = this._queue.pop()) { - this._append(...item); + return true; } } - _append(str, line, column, identifierName, filename, force) { - this._buf += str; - this._last = str.charCodeAt(str.length - 1); - let i = str.indexOf("\n"); - let last = 0; - - if (i !== 0) { - this._mark(line, column, identifierName, filename, force); - } - - while (i !== -1) { - this._position.line++; - this._position.column = 0; - last = i + 1; - - if (last < str.length) { - this._mark(++line, 0, identifierName, filename, force); - } + return false; +} - i = str.indexOf("\n", last); - } +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey) { + state.tag = null; + state.dump = object; - this._position.column += str.length - last; + if (!detectType(state, object, false)) { + detectType(state, object, true); } - _mark(line, column, identifierName, filename, force) { - var _this$_map; + var type = _toString.call(state.dump); - (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force); + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); } - removeTrailingNewline() { - if (this._queue.length > 0 && this._queue[0][0] === "\n") { - this._queue.shift(); - } - } + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; - removeLastSemicolon() { - if (this._queue.length > 0 && this._queue[0][0] === ";") { - this._queue.shift(); - } + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; } - getLastChar() { - let last; - - if (this._queue.length > 0) { - const str = this._queue[0][0]; - last = str.charCodeAt(0); - } else { - last = this._last; - } - - return last; + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; } - endsWithCharAndNewline() { - const queue = this._queue; - - if (queue.length > 0) { - const last = queue[0][0]; - const lastCp = last.charCodeAt(0); - if (lastCp !== 10) return; - - if (queue.length > 1) { - const secondLast = queue[1][0]; - return secondLast.charCodeAt(0); + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level; + if (block && (state.dump.length !== 0)) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } } else { - return this._last; + writeFlowSequence(state, arrayLevel, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey); } + } else { + if (state.skipInvalid) return false; + throw new YAMLException('unacceptable kind of an object to dump ' + type); } - } - - hasContent() { - return this._queue.length > 0 || !!this._last; - } - - exactSource(loc, cb) { - this.source("start", loc, true); - cb(); - this.source("end", loc); - this._disallowPop("start", loc); + if (state.tag !== null && state.tag !== '?') { + state.dump = '!<' + state.tag + '> ' + state.dump; + } } - source(prop, loc, force) { - if (prop && !loc) return; - - this._normalizePosition(prop, loc, this._sourcePosition, force); - } + return true; +} - withSource(prop, loc, cb) { - if (!this._map) return cb(); - const originalLine = this._sourcePosition.line; - const originalColumn = this._sourcePosition.column; - const originalFilename = this._sourcePosition.filename; - const originalIdentifierName = this._sourcePosition.identifierName; - this.source(prop, loc); - cb(); +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; - if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) { - this._sourcePosition.line = originalLine; - this._sourcePosition.column = originalColumn; - this._sourcePosition.filename = originalFilename; - this._sourcePosition.identifierName = originalIdentifierName; - this._sourcePosition.force = false; - this._disallowedPop = null; - } - } + inspectNode(object, objects, duplicatesIndexes); - _disallowPop(prop, loc) { - if (prop && !loc) return; - this._disallowedPop = this._normalizePosition(prop, loc); + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); } + state.usedDuplicates = new Array(length); +} - _normalizePosition(prop, loc, targetObj, force) { - const pos = loc ? loc[prop] : null; +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; - if (targetObj === undefined) { - targetObj = { - identifierName: null, - line: null, - column: null, - filename: null, - force: false - }; - } + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); - const origLine = targetObj.line; - const origColumn = targetObj.column; - const origFilename = targetObj.filename; - targetObj.identifierName = prop === "start" && (loc == null ? void 0 : loc.identifierName) || null; - targetObj.line = pos == null ? void 0 : pos.line; - targetObj.column = pos == null ? void 0 : pos.column; - targetObj.filename = loc == null ? void 0 : loc.filename; + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); - if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) { - targetObj.force = force; + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } } - - return targetObj; } +} - getCurrentColumn() { - const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); - - const lastIndex = extra.lastIndexOf("\n"); - return lastIndex === -1 ? this._position.column + extra.length : extra.length - 1 - lastIndex; - } +function dump(input, options) { + options = options || {}; - getCurrentLine() { - const extra = this._queue.reduce((acc, item) => item[0] + acc, ""); + var state = new State(options); - let count = 0; + if (!state.noRefs) getDuplicateReferences(input, state); - for (let i = 0; i < extra.length; i++) { - if (extra[i] === "\n") count++; - } + if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; - return this._position.line + count; - } + return ''; +} +function safeDump(input, options) { + return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } -exports["default"] = Buffer; +module.exports.dump = dump; +module.exports.safeDump = safeDump; + /***/ }), -/***/ 26601: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 5622: +/***/ ((module) => { "use strict"; +// YAML error class. http://stackoverflow.com/questions/8458984 +// -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.File = File; -exports.Program = Program; -exports.BlockStatement = BlockStatement; -exports.Directive = Directive; -exports.DirectiveLiteral = DirectiveLiteral; -exports.InterpreterDirective = InterpreterDirective; -exports.Placeholder = Placeholder; - -var t = __nccwpck_require__(24479); - -function File(node) { - if (node.program) { - this.print(node.program.interpreter, node); - } - - this.print(node.program, node); -} - -function Program(node) { - this.printInnerComments(node, false); - this.printSequence(node.directives, node); - if (node.directives && node.directives.length) this.newline(); - this.printSequence(node.body, node); -} - -function BlockStatement(node) { - var _node$directives; +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); - this.token("{"); - this.printInnerComments(node); - const hasDirectives = (_node$directives = node.directives) == null ? void 0 : _node$directives.length; + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); - if (node.body.length || hasDirectives) { - this.newline(); - this.printSequence(node.directives, node, { - indent: true - }); - if (hasDirectives) this.newline(); - this.printSequence(node.body, node, { - indent: true - }); - this.removeTrailingNewline(); - this.source("end", node.loc); - if (!this.endsWith(10)) this.newline(); - this.rightBrace(); + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); } else { - this.source("end", node.loc); - this.token("}"); + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; } } -function Directive(node) { - this.print(node.value, node); - this.semicolon(); -} -const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/; -const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/; +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; -function DirectiveLiteral(node) { - const raw = this.getPossibleRaw(node); - if (raw != null) { - this.token(raw); - return; - } +YAMLException.prototype.toString = function toString(compact) { + var result = this.name + ': '; - const { - value - } = node; + result += this.reason || '(unknown reason)'; - if (!unescapedDoubleQuoteRE.test(value)) { - this.token(`"${value}"`); - } else if (!unescapedSingleQuoteRE.test(value)) { - this.token(`'${value}'`); - } else { - throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes."); + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); } -} -function InterpreterDirective(node) { - this.token(`#!${node.value}\n`); -} + return result; +}; -function Placeholder(node) { - this.token("%%"); - this.print(node.name); - this.token("%%"); - if (node.expectedNode === "Statement") { - this.semicolon(); - } -} +module.exports = YAMLException; + /***/ }), -/***/ 40675: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 5868: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration; -exports.ClassBody = ClassBody; -exports.ClassProperty = ClassProperty; -exports.ClassPrivateProperty = ClassPrivateProperty; -exports.ClassMethod = ClassMethod; -exports.ClassPrivateMethod = ClassPrivateMethod; -exports._classMethodHead = _classMethodHead; -exports.StaticBlock = StaticBlock; - -var t = __nccwpck_require__(24479); +/*eslint-disable max-len,no-use-before-define*/ -const { - isExportDefaultDeclaration, - isExportNamedDeclaration -} = t; +var common = __nccwpck_require__(4206); +var YAMLException = __nccwpck_require__(5622); +var Mark = __nccwpck_require__(3241); +var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(6032); +var DEFAULT_FULL_SCHEMA = __nccwpck_require__(948); -function ClassDeclaration(node, parent) { - if (!this.format.decoratorsBeforeExport || !isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) { - this.printJoin(node.decorators, node); - } - if (node.declare) { - this.word("declare"); - this.space(); - } +var _hasOwnProperty = Object.prototype.hasOwnProperty; - if (node.abstract) { - this.word("abstract"); - this.space(); - } - this.word("class"); +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; - if (node.id) { - this.space(); - this.print(node.id, node); - } - this.print(node.typeParameters, node); +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; - if (node.superClass) { - this.space(); - this.word("extends"); - this.space(); - this.print(node.superClass, node); - this.print(node.superTypeParameters, node); - } - if (node.implements) { - this.space(); - this.word("implements"); - this.space(); - this.printList(node.implements, node); - } +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; - this.space(); - this.print(node.body, node); -} -function ClassBody(node) { - this.token("{"); - this.printInnerComments(node); +function _class(obj) { return Object.prototype.toString.call(obj); } - if (node.body.length === 0) { - this.token("}"); - } else { - this.newline(); - this.indent(); - this.printSequence(node.body, node); - this.dedent(); - if (!this.endsWith(10)) this.newline(); - this.rightBrace(); - } +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); } -function ClassProperty(node) { - this.printJoin(node.decorators, node); - this.source("end", node.key.loc); - this.tsPrintClassMemberModifiers(node, true); - - if (node.computed) { - this.token("["); - this.print(node.key, node); - this.token("]"); - } else { - this._variance(node); - - this.print(node.key, node); - } - - if (node.optional) { - this.token("?"); - } - - if (node.definite) { - this.token("!"); - } - - this.print(node.typeAnnotation, node); +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} - if (node.value) { - this.space(); - this.token("="); - this.space(); - this.print(node.value, node); - } +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} - this.semicolon(); +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; } -function ClassPrivateProperty(node) { - this.printJoin(node.decorators, node); +function fromHexCode(c) { + var lc; - if (node.static) { - this.word("static"); - this.space(); + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; } - this.print(node.key, node); - this.print(node.typeAnnotation, node); + /*eslint-disable no-bitwise*/ + lc = c | 0x20; - if (node.value) { - this.space(); - this.token("="); - this.space(); - this.print(node.value, node); + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; } - this.semicolon(); + return -1; } -function ClassMethod(node) { - this._classMethodHead(node); - - this.space(); - this.print(node.body, node); +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; } -function ClassPrivateMethod(node) { - this._classMethodHead(node); +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } - this.space(); - this.print(node.body, node); + return -1; } -function _classMethodHead(node) { - this.printJoin(node.decorators, node); - this.source("end", node.key.loc); - this.tsPrintClassMemberModifiers(node, false); - - this._methodHead(node); +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; } -function StaticBlock(node) { - this.word("static"); - this.space(); - this.token("{"); - - if (node.body.length === 0) { - this.token("}"); - } else { - this.newline(); - this.printSequence(node.body, node, { - indent: true - }); - this.rightBrace(); +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); } -/***/ }), +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} -/***/ 2262: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; +function State(input, options) { + this.input = input; + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; + this.onWarning = options['onWarning'] || null; + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.UnaryExpression = UnaryExpression; -exports.DoExpression = DoExpression; -exports.ParenthesizedExpression = ParenthesizedExpression; -exports.UpdateExpression = UpdateExpression; -exports.ConditionalExpression = ConditionalExpression; -exports.NewExpression = NewExpression; -exports.SequenceExpression = SequenceExpression; -exports.ThisExpression = ThisExpression; -exports.Super = Super; -exports.Decorator = Decorator; -exports.OptionalMemberExpression = OptionalMemberExpression; -exports.OptionalCallExpression = OptionalCallExpression; -exports.CallExpression = CallExpression; -exports.Import = Import; -exports.EmptyStatement = EmptyStatement; -exports.ExpressionStatement = ExpressionStatement; -exports.AssignmentPattern = AssignmentPattern; -exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; -exports.BindExpression = BindExpression; -exports.MemberExpression = MemberExpression; -exports.MetaProperty = MetaProperty; -exports.PrivateName = PrivateName; -exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier; -exports.ModuleExpression = ModuleExpression; -exports.AwaitExpression = exports.YieldExpression = void 0; - -var t = __nccwpck_require__(24479); - -var n = __nccwpck_require__(83731); + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; -const { - isCallExpression, - isLiteral, - isMemberExpression, - isNewExpression -} = t; - -function UnaryExpression(node) { - if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" || node.operator === "throw") { - this.word(node.operator); - this.space(); - } else { - this.token(node.operator); - } + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; - this.print(node.argument, node); -} + this.documents = []; -function DoExpression(node) { - if (node.async) { - this.word("async"); - this.space(); - } + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ - this.word("do"); - this.space(); - this.print(node.body, node); } -function ParenthesizedExpression(node) { - this.token("("); - this.print(node.expression, node); - this.token(")"); -} -function UpdateExpression(node) { - if (node.prefix) { - this.token(node.operator); - this.print(node.argument, node); - } else { - this.startTerminatorless(true); - this.print(node.argument, node); - this.endTerminatorless(); - this.token(node.operator); - } +function generateError(state, message) { + return new YAMLException( + message, + new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); } -function ConditionalExpression(node) { - this.print(node.test, node); - this.space(); - this.token("?"); - this.space(); - this.print(node.consequent, node); - this.space(); - this.token(":"); - this.space(); - this.print(node.alternate, node); +function throwError(state, message) { + throw generateError(state, message); } -function NewExpression(node, parent) { - this.word("new"); - this.space(); - this.print(node.callee, node); - - if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression(parent, { - callee: node - }) && !isMemberExpression(parent) && !isNewExpression(parent)) { - return; - } - - this.print(node.typeArguments, node); - this.print(node.typeParameters, node); - - if (node.optional) { - this.token("?."); +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); } - - this.token("("); - this.printList(node.arguments, node); - this.token(")"); } -function SequenceExpression(node) { - this.printList(node.expressions, node); -} -function ThisExpression() { - this.word("this"); -} +var directiveHandlers = { -function Super() { - this.word("super"); -} + YAML: function handleYamlDirective(state, name, args) { -function Decorator(node) { - this.token("@"); - this.print(node.expression, node); - this.newline(); -} + var match, major, minor; -function OptionalMemberExpression(node) { - this.print(node.object, node); + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } - if (!node.computed && isMemberExpression(node.property)) { - throw new TypeError("Got a MemberExpression for MemberExpression property"); - } + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } - let computed = node.computed; + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); - if (isLiteral(node.property) && typeof node.property.value === "number") { - computed = true; - } + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } - if (node.optional) { - this.token("?."); - } + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); - if (computed) { - this.token("["); - this.print(node.property, node); - this.token("]"); - } else { - if (!node.optional) { - this.token("."); + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); } - this.print(node.property, node); - } -} + state.version = args[0]; + state.checkLineBreaks = (minor < 2); -function OptionalCallExpression(node) { - this.print(node.callee, node); - this.print(node.typeArguments, node); - this.print(node.typeParameters, node); + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, - if (node.optional) { - this.token("?."); - } + TAG: function handleTagDirective(state, name, args) { - this.token("("); - this.printList(node.arguments, node); - this.token(")"); -} + var handle, prefix; -function CallExpression(node) { - this.print(node.callee, node); - this.print(node.typeArguments, node); - this.print(node.typeParameters, node); - this.token("("); - this.printList(node.arguments, node); - this.token(")"); -} + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } -function Import() { - this.word("import"); -} + handle = args[0]; + prefix = args[1]; -function buildYieldAwait(keyword) { - return function (node) { - this.word(keyword); + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } - if (node.delegate) { - this.token("*"); + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); } - if (node.argument) { - this.space(); - const terminatorState = this.startTerminatorless(); - this.print(node.argument, node); - this.endTerminatorless(terminatorState); + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); } - }; -} -const YieldExpression = buildYieldAwait("yield"); -exports.YieldExpression = YieldExpression; -const AwaitExpression = buildYieldAwait("await"); -exports.AwaitExpression = AwaitExpression; + state.tagMap[handle] = prefix; + } +}; -function EmptyStatement() { - this.semicolon(true); -} -function ExpressionStatement(node) { - this.print(node.expression, node); - this.semicolon(); -} +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; -function AssignmentPattern(node) { - this.print(node.left, node); - if (node.left.optional) this.token("?"); - this.print(node.left.typeAnnotation, node); - this.space(); - this.token("="); - this.space(); - this.print(node.right, node); -} + if (start < end) { + _result = state.input.slice(start, end); -function AssignmentExpression(node, parent) { - const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent); + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } - if (parens) { - this.token("("); + state.result += _result; } +} - this.print(node.left, node); - this.space(); +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; - if (node.operator === "in" || node.operator === "instanceof") { - this.word(node.operator); - } else { - this.token(node.operator); + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); } - this.space(); - this.print(node.right, node); + sourceKeys = Object.keys(source); - if (parens) { - this.token(")"); - } -} + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; -function BindExpression(node) { - this.print(node.object, node); - this.token("::"); - this.print(node.callee, node); + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } } -function MemberExpression(node) { - this.print(node.object, node); +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { + var index, quantity; - if (!node.computed && isMemberExpression(node.property)) { - throw new TypeError("Got a MemberExpression for MemberExpression property"); - } + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); - let computed = node.computed; + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } - if (isLiteral(node.property) && typeof node.property.value === "number") { - computed = true; + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } + } } - if (computed) { - this.token("["); - this.print(node.property, node); - this.token("]"); - } else { - this.token("."); - this.print(node.property, node); + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; } -} - -function MetaProperty(node) { - this.print(node.meta, node); - this.token("."); - this.print(node.property, node); -} -function PrivateName(node) { - this.token("#"); - this.print(node.id, node); -} -function V8IntrinsicIdentifier(node) { - this.token("%"); - this.word(node.name); -} + keyNode = String(keyNode); -function ModuleExpression(node) { - this.word("module"); - this.space(); - this.token("{"); + if (_result === null) { + _result = {}; + } - if (node.body.body.length === 0) { - this.token("}"); + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } } else { - this.newline(); - this.printSequence(node.body.body, node, { - indent: true - }); - this.rightBrace(); + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + state.line = startLine || state.line; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + _result[keyNode] = valueNode; + delete overridableKeys[keyNode]; } -} - -/***/ }), -/***/ 92566: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + return _result; +} -"use strict"; +function readLineBreak(state) { + var ch; + ch = state.input.charCodeAt(state.position); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AnyTypeAnnotation = AnyTypeAnnotation; -exports.ArrayTypeAnnotation = ArrayTypeAnnotation; -exports.BooleanTypeAnnotation = BooleanTypeAnnotation; -exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; -exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; -exports.DeclareClass = DeclareClass; -exports.DeclareFunction = DeclareFunction; -exports.InferredPredicate = InferredPredicate; -exports.DeclaredPredicate = DeclaredPredicate; -exports.DeclareInterface = DeclareInterface; -exports.DeclareModule = DeclareModule; -exports.DeclareModuleExports = DeclareModuleExports; -exports.DeclareTypeAlias = DeclareTypeAlias; -exports.DeclareOpaqueType = DeclareOpaqueType; -exports.DeclareVariable = DeclareVariable; -exports.DeclareExportDeclaration = DeclareExportDeclaration; -exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration; -exports.EnumDeclaration = EnumDeclaration; -exports.EnumBooleanBody = EnumBooleanBody; -exports.EnumNumberBody = EnumNumberBody; -exports.EnumStringBody = EnumStringBody; -exports.EnumSymbolBody = EnumSymbolBody; -exports.EnumDefaultedMember = EnumDefaultedMember; -exports.EnumBooleanMember = EnumBooleanMember; -exports.EnumNumberMember = EnumNumberMember; -exports.EnumStringMember = EnumStringMember; -exports.ExistsTypeAnnotation = ExistsTypeAnnotation; -exports.FunctionTypeAnnotation = FunctionTypeAnnotation; -exports.FunctionTypeParam = FunctionTypeParam; -exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends; -exports._interfaceish = _interfaceish; -exports._variance = _variance; -exports.InterfaceDeclaration = InterfaceDeclaration; -exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation; -exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; -exports.MixedTypeAnnotation = MixedTypeAnnotation; -exports.EmptyTypeAnnotation = EmptyTypeAnnotation; -exports.NullableTypeAnnotation = NullableTypeAnnotation; -exports.NumberTypeAnnotation = NumberTypeAnnotation; -exports.StringTypeAnnotation = StringTypeAnnotation; -exports.ThisTypeAnnotation = ThisTypeAnnotation; -exports.TupleTypeAnnotation = TupleTypeAnnotation; -exports.TypeofTypeAnnotation = TypeofTypeAnnotation; -exports.TypeAlias = TypeAlias; -exports.TypeAnnotation = TypeAnnotation; -exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation; -exports.TypeParameter = TypeParameter; -exports.OpaqueType = OpaqueType; -exports.ObjectTypeAnnotation = ObjectTypeAnnotation; -exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot; -exports.ObjectTypeCallProperty = ObjectTypeCallProperty; -exports.ObjectTypeIndexer = ObjectTypeIndexer; -exports.ObjectTypeProperty = ObjectTypeProperty; -exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; -exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; -exports.SymbolTypeAnnotation = SymbolTypeAnnotation; -exports.UnionTypeAnnotation = UnionTypeAnnotation; -exports.TypeCastExpression = TypeCastExpression; -exports.Variance = Variance; -exports.VoidTypeAnnotation = VoidTypeAnnotation; -exports.IndexedAccessType = IndexedAccessType; -exports.OptionalIndexedAccessType = OptionalIndexedAccessType; -Object.defineProperty(exports, "NumberLiteralTypeAnnotation", ({ - enumerable: true, - get: function () { - return _types2.NumericLiteral; - } -})); -Object.defineProperty(exports, "StringLiteralTypeAnnotation", ({ - enumerable: true, - get: function () { - return _types2.StringLiteral; + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); } -})); - -var t = __nccwpck_require__(24479); - -var _modules = __nccwpck_require__(50607); -var _types2 = __nccwpck_require__(84986); - -const { - isDeclareExportDeclaration, - isStatement -} = t; - -function AnyTypeAnnotation() { - this.word("any"); -} - -function ArrayTypeAnnotation(node) { - this.print(node.elementType, node); - this.token("["); - this.token("]"); -} - -function BooleanTypeAnnotation() { - this.word("boolean"); + state.line += 1; + state.lineStart = state.position; } -function BooleanLiteralTypeAnnotation(node) { - this.word(node.value ? "true" : "false"); -} +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); -function NullLiteralTypeAnnotation() { - this.word("null"); -} + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } -function DeclareClass(node, parent) { - if (!isDeclareExportDeclaration(parent)) { - this.word("declare"); - this.space(); - } + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } - this.word("class"); - this.space(); + if (is_EOL(ch)) { + readLineBreak(state); - this._interfaceish(node); -} + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; -function DeclareFunction(node, parent) { - if (!isDeclareExportDeclaration(parent)) { - this.word("declare"); - this.space(); + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } } - this.word("function"); - this.space(); - this.print(node.id, node); - this.print(node.id.typeAnnotation.typeAnnotation, node); - - if (node.predicate) { - this.space(); - this.print(node.predicate, node); + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); } - this.semicolon(); -} - -function InferredPredicate() { - this.token("%"); - this.word("checks"); -} - -function DeclaredPredicate(node) { - this.token("%"); - this.word("checks"); - this.token("("); - this.print(node.value, node); - this.token(")"); -} - -function DeclareInterface(node) { - this.word("declare"); - this.space(); - this.InterfaceDeclaration(node); + return lineBreaks; } -function DeclareModule(node) { - this.word("declare"); - this.space(); - this.word("module"); - this.space(); - this.print(node.id, node); - this.space(); - this.print(node.body, node); -} +function testDocumentSeparator(state) { + var _position = state.position, + ch; -function DeclareModuleExports(node) { - this.word("declare"); - this.space(); - this.word("module"); - this.token("."); - this.word("exports"); - this.print(node.typeAnnotation, node); -} + ch = state.input.charCodeAt(_position); -function DeclareTypeAlias(node) { - this.word("declare"); - this.space(); - this.TypeAlias(node); -} + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { -function DeclareOpaqueType(node, parent) { - if (!isDeclareExportDeclaration(parent)) { - this.word("declare"); - this.space(); - } + _position += 3; - this.OpaqueType(node); -} + ch = state.input.charCodeAt(_position); -function DeclareVariable(node, parent) { - if (!isDeclareExportDeclaration(parent)) { - this.word("declare"); - this.space(); + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } } - this.word("var"); - this.space(); - this.print(node.id, node); - this.print(node.id.typeAnnotation, node); - this.semicolon(); + return false; } -function DeclareExportDeclaration(node) { - this.word("declare"); - this.space(); - this.word("export"); - this.space(); - - if (node.default) { - this.word("default"); - this.space(); +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); } - - FlowExportDeclaration.apply(this, arguments); } -function DeclareExportAllDeclaration() { - this.word("declare"); - this.space(); - _modules.ExportAllDeclaration.apply(this, arguments); -} +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; -function EnumDeclaration(node) { - const { - id, - body - } = node; - this.word("enum"); - this.space(); - this.print(id, node); - this.print(body, node); -} + ch = state.input.charCodeAt(state.position); -function enumExplicitType(context, name, hasExplicitType) { - if (hasExplicitType) { - context.space(); - context.word("of"); - context.space(); - context.word(name); + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; } - context.space(); -} - -function enumBody(context, node) { - const { - members - } = node; - context.token("{"); - context.indent(); - context.newline(); - - for (const member of members) { - context.print(member, node); - context.newline(); - } + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); - if (node.hasUnknownMembers) { - context.token("..."); - context.newline(); + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } } - context.dedent(); - context.token("}"); -} - -function EnumBooleanBody(node) { - const { - explicitType - } = node; - enumExplicitType(this, "boolean", explicitType); - enumBody(this, node); -} - -function EnumNumberBody(node) { - const { - explicitType - } = node; - enumExplicitType(this, "number", explicitType); - enumBody(this, node); -} + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; -function EnumStringBody(node) { - const { - explicitType - } = node; - enumExplicitType(this, "string", explicitType); - enumBody(this, node); -} + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); -function EnumSymbolBody(node) { - enumExplicitType(this, "symbol", true); - enumBody(this, node); -} + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } -function EnumDefaultedMember(node) { - const { - id - } = node; - this.print(id, node); - this.token(","); -} + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); -function enumInitializedMember(context, node) { - const { - id, - init - } = node; - context.print(id, node); - context.space(); - context.token("="); - context.space(); - context.print(init, node); - context.token(","); -} + if (is_WS_OR_EOL(preceding)) { + break; + } -function EnumBooleanMember(node) { - enumInitializedMember(this, node); -} + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; -function EnumNumberMember(node) { - enumInitializedMember(this, node); -} + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); -function EnumStringMember(node) { - enumInitializedMember(this, node); -} + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } -function FlowExportDeclaration(node) { - if (node.declaration) { - const declar = node.declaration; - this.print(declar, node); - if (!isStatement(declar)) this.semicolon(); - } else { - this.token("{"); + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } - if (node.specifiers.length) { - this.space(); - this.printList(node.specifiers, node); - this.space(); + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; } - this.token("}"); + ch = state.input.charCodeAt(++state.position); + } - if (node.source) { - this.space(); - this.word("from"); - this.space(); - this.print(node.source, node); - } + captureSegment(state, captureStart, captureEnd, false); - this.semicolon(); + if (state.result) { + return true; } -} -function ExistsTypeAnnotation() { - this.token("*"); + state.kind = _kind; + state.result = _result; + return false; } -function FunctionTypeAnnotation(node, parent) { - this.print(node.typeParameters, node); - this.token("("); +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; - if (node.this) { - this.word("this"); - this.token(":"); - this.space(); - this.print(node.this.typeAnnotation, node); + ch = state.input.charCodeAt(state.position); - if (node.params.length || node.rest) { - this.token(","); - this.space(); - } + if (ch !== 0x27/* ' */) { + return false; } - this.printList(node.params, node); + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; - if (node.rest) { - if (node.params.length) { - this.token(","); - this.space(); - } + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - this.token("..."); - this.print(node.rest, node); - } + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; - this.token(")"); + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); - if (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction" || parent.type === "ObjectTypeProperty" && parent.method) { - this.token(":"); - } else { - this.space(); - this.token("=>"); + } else { + state.position++; + captureEnd = state.position; + } } - this.space(); - this.print(node.returnType, node); + throwError(state, 'unexpected end of the stream within a single quoted scalar'); } -function FunctionTypeParam(node) { - this.print(node.name, node); - if (node.optional) this.token("?"); +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; - if (node.name) { - this.token(":"); - this.space(); - } + ch = state.input.charCodeAt(state.position); - this.print(node.typeAnnotation, node); -} + if (ch !== 0x22/* " */) { + return false; + } -function InterfaceExtends(node) { - this.print(node.id, node); - this.print(node.typeParameters, node); -} + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; -function _interfaceish(node) { - var _node$extends; + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; - this.print(node.id, node); - this.print(node.typeParameters, node); + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - if ((_node$extends = node.extends) != null && _node$extends.length) { - this.space(); - this.word("extends"); - this.space(); - this.printList(node.extends, node); - } + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); - if (node.mixins && node.mixins.length) { - this.space(); - this.word("mixins"); - this.space(); - this.printList(node.mixins, node); - } + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; - if (node.implements && node.implements.length) { - this.space(); - this.word("implements"); - this.space(); - this.printList(node.implements, node); - } + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; - this.space(); - this.print(node.body, node); -} + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); -function _variance(node) { - if (node.variance) { - if (node.variance.kind === "plus") { - this.token("+"); - } else if (node.variance.kind === "minus") { - this.token("-"); - } - } -} + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; -function InterfaceDeclaration(node) { - this.word("interface"); - this.space(); + } else { + throwError(state, 'expected hexadecimal character'); + } + } - this._interfaceish(node); -} + state.result += charFromCodepoint(hexResult); -function andSeparator() { - this.space(); - this.token("&"); - this.space(); -} + state.position++; -function InterfaceTypeAnnotation(node) { - this.word("interface"); + } else { + throwError(state, 'unknown escape sequence'); + } - if (node.extends && node.extends.length) { - this.space(); - this.word("extends"); - this.space(); - this.printList(node.extends, node); - } + captureStart = captureEnd = state.position; - this.space(); - this.print(node.body, node); -} + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; -function IntersectionTypeAnnotation(node) { - this.printJoin(node.types, node, { - separator: andSeparator - }); -} + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); -function MixedTypeAnnotation() { - this.word("mixed"); -} + } else { + state.position++; + captureEnd = state.position; + } + } -function EmptyTypeAnnotation() { - this.word("empty"); + throwError(state, 'unexpected end of the stream within a double quoted scalar'); } -function NullableTypeAnnotation(node) { - this.token("?"); - this.print(node.typeAnnotation, node); -} - -function NumberTypeAnnotation() { - this.word("number"); -} - -function StringTypeAnnotation() { - this.word("string"); -} - -function ThisTypeAnnotation() { - this.word("this"); -} - -function TupleTypeAnnotation(node) { - this.token("["); - this.printList(node.types, node); - this.token("]"); -} - -function TypeofTypeAnnotation(node) { - this.word("typeof"); - this.space(); - this.print(node.argument, node); -} - -function TypeAlias(node) { - this.word("type"); - this.space(); - this.print(node.id, node); - this.print(node.typeParameters, node); - this.space(); - this.token("="); - this.space(); - this.print(node.right, node); - this.semicolon(); -} - -function TypeAnnotation(node) { - this.token(":"); - this.space(); - if (node.optional) this.token("?"); - this.print(node.typeAnnotation, node); -} - -function TypeParameterInstantiation(node) { - this.token("<"); - this.printList(node.params, node, {}); - this.token(">"); -} - -function TypeParameter(node) { - this._variance(node); - - this.word(node.name); - - if (node.bound) { - this.print(node.bound, node); - } - - if (node.default) { - this.space(); - this.token("="); - this.space(); - this.print(node.default, node); - } -} - -function OpaqueType(node) { - this.word("opaque"); - this.space(); - this.word("type"); - this.space(); - this.print(node.id, node); - this.print(node.typeParameters, node); - - if (node.supertype) { - this.token(":"); - this.space(); - this.print(node.supertype, node); - } - - if (node.impltype) { - this.space(); - this.token("="); - this.space(); - this.print(node.impltype, node); - } - - this.semicolon(); -} - -function ObjectTypeAnnotation(node) { - if (node.exact) { - this.token("{|"); - } else { - this.token("{"); - } - - const props = [...node.properties, ...(node.callProperties || []), ...(node.indexers || []), ...(node.internalSlots || [])]; - - if (props.length) { - this.space(); - this.printJoin(props, node, { - addNewlines(leading) { - if (leading && !props[0]) return 1; - }, - - indent: true, - statement: true, - iterator: () => { - if (props.length !== 1 || node.inexact) { - this.token(","); - this.space(); - } - } - }); - this.space(); - } - - if (node.inexact) { - this.indent(); - this.token("..."); - - if (props.length) { - this.newline(); - } - - this.dedent(); - } - - if (node.exact) { - this.token("|}"); - } else { - this.token("}"); - } -} - -function ObjectTypeInternalSlot(node) { - if (node.static) { - this.word("static"); - this.space(); - } - - this.token("["); - this.token("["); - this.print(node.id, node); - this.token("]"); - this.token("]"); - if (node.optional) this.token("?"); - - if (!node.method) { - this.token(":"); - this.space(); - } - - this.print(node.value, node); -} - -function ObjectTypeCallProperty(node) { - if (node.static) { - this.word("static"); - this.space(); - } - - this.print(node.value, node); -} - -function ObjectTypeIndexer(node) { - if (node.static) { - this.word("static"); - this.space(); - } - - this._variance(node); - - this.token("["); - - if (node.id) { - this.print(node.id, node); - this.token(":"); - this.space(); - } - - this.print(node.key, node); - this.token("]"); - this.token(":"); - this.space(); - this.print(node.value, node); -} - -function ObjectTypeProperty(node) { - if (node.proto) { - this.word("proto"); - this.space(); - } - - if (node.static) { - this.word("static"); - this.space(); - } - - if (node.kind === "get" || node.kind === "set") { - this.word(node.kind); - this.space(); - } - - this._variance(node); - - this.print(node.key, node); - if (node.optional) this.token("?"); - - if (!node.method) { - this.token(":"); - this.space(); - } - - this.print(node.value, node); -} - -function ObjectTypeSpreadProperty(node) { - this.token("..."); - this.print(node.argument, node); -} - -function QualifiedTypeIdentifier(node) { - this.print(node.qualification, node); - this.token("."); - this.print(node.id, node); -} - -function SymbolTypeAnnotation() { - this.word("symbol"); -} - -function orSeparator() { - this.space(); - this.token("|"); - this.space(); -} - -function UnionTypeAnnotation(node) { - this.printJoin(node.types, node, { - separator: orSeparator - }); -} +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = {}, + keyNode, + keyTag, + valueNode, + ch; -function TypeCastExpression(node) { - this.token("("); - this.print(node.expression, node); - this.print(node.typeAnnotation, node); - this.token(")"); -} + ch = state.input.charCodeAt(state.position); -function Variance(node) { - if (node.kind === "plus") { - this.token("+"); + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; } else { - this.token("-"); + return false; } -} - -function VoidTypeAnnotation() { - this.word("void"); -} -function IndexedAccessType(node) { - this.print(node.objectType, node); - this.token("["); - this.print(node.indexType, node); - this.token("]"); -} - -function OptionalIndexedAccessType(node) { - this.print(node.objectType, node); - - if (node.optional) { - this.token("?."); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; } - this.token("["); - this.print(node.indexType, node); - this.token("]"); -} - -/***/ }), - -/***/ 47058: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); - -var _templateLiterals = __nccwpck_require__(33800); - -Object.keys(_templateLiterals).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _templateLiterals[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _templateLiterals[key]; - } - }); -}); - -var _expressions = __nccwpck_require__(2262); - -Object.keys(_expressions).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _expressions[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _expressions[key]; - } - }); -}); - -var _statements = __nccwpck_require__(21480); + ch = state.input.charCodeAt(++state.position); -Object.keys(_statements).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _statements[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _statements[key]; - } - }); -}); + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); -var _classes = __nccwpck_require__(40675); + ch = state.input.charCodeAt(state.position); -Object.keys(_classes).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _classes[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _classes[key]; + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); } - }); -}); -var _methods = __nccwpck_require__(53558); - -Object.keys(_methods).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _methods[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _methods[key]; - } - }); -}); + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; -var _modules = __nccwpck_require__(50607); + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); -Object.keys(_modules).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _modules[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _modules[key]; + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } } - }); -}); - -var _types = __nccwpck_require__(84986); -Object.keys(_types).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _types[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _types[key]; - } - }); -}); + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); -var _flow = __nccwpck_require__(92566); + ch = state.input.charCodeAt(state.position); -Object.keys(_flow).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _flow[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _flow[key]; + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; } - }); -}); - -var _base = __nccwpck_require__(26601); -Object.keys(_base).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _base[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _base[key]; + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); + } else { + _result.push(keyNode); } - }); -}); -var _jsx = __nccwpck_require__(739); - -Object.keys(_jsx).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _jsx[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _jsx[key]; - } - }); -}); + skipSeparationSpace(state, true, nodeIndent); -var _typescript = __nccwpck_require__(71406); + ch = state.input.charCodeAt(state.position); -Object.keys(_typescript).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _typescript[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _typescript[key]; + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; } - }); -}); - -/***/ }), - -/***/ 739: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.JSXAttribute = JSXAttribute; -exports.JSXIdentifier = JSXIdentifier; -exports.JSXNamespacedName = JSXNamespacedName; -exports.JSXMemberExpression = JSXMemberExpression; -exports.JSXSpreadAttribute = JSXSpreadAttribute; -exports.JSXExpressionContainer = JSXExpressionContainer; -exports.JSXSpreadChild = JSXSpreadChild; -exports.JSXText = JSXText; -exports.JSXElement = JSXElement; -exports.JSXOpeningElement = JSXOpeningElement; -exports.JSXClosingElement = JSXClosingElement; -exports.JSXEmptyExpression = JSXEmptyExpression; -exports.JSXFragment = JSXFragment; -exports.JSXOpeningFragment = JSXOpeningFragment; -exports.JSXClosingFragment = JSXClosingFragment; - -var t = __nccwpck_require__(24479); - -function JSXAttribute(node) { - this.print(node.name, node); - - if (node.value) { - this.token("="); - this.print(node.value, node); - } -} - -function JSXIdentifier(node) { - this.word(node.name); -} - -function JSXNamespacedName(node) { - this.print(node.namespace, node); - this.token(":"); - this.print(node.name, node); -} - -function JSXMemberExpression(node) { - this.print(node.object, node); - this.token("."); - this.print(node.property, node); -} - -function JSXSpreadAttribute(node) { - this.token("{"); - this.token("..."); - this.print(node.argument, node); - this.token("}"); -} - -function JSXExpressionContainer(node) { - this.token("{"); - this.print(node.expression, node); - this.token("}"); -} - -function JSXSpreadChild(node) { - this.token("{"); - this.token("..."); - this.print(node.expression, node); - this.token("}"); -} - -function JSXText(node) { - const raw = this.getPossibleRaw(node); - - if (raw != null) { - this.token(raw); - } else { - this.token(node.value); - } -} - -function JSXElement(node) { - const open = node.openingElement; - this.print(open, node); - if (open.selfClosing) return; - this.indent(); - - for (const child of node.children) { - this.print(child, node); } - this.dedent(); - this.print(node.closingElement, node); -} - -function spaceSeparator() { - this.space(); + throwError(state, 'unexpected end of the stream within a flow collection'); } -function JSXOpeningElement(node) { - this.token("<"); - this.print(node.name, node); - this.print(node.typeParameters, node); +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; - if (node.attributes.length > 0) { - this.space(); - this.printJoin(node.attributes, node, { - separator: spaceSeparator - }); - } + ch = state.input.charCodeAt(state.position); - if (node.selfClosing) { - this.space(); - this.token("/>"); + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; } else { - this.token(">"); - } -} - -function JSXClosingElement(node) { - this.token("</"); - this.print(node.name, node); - this.token(">"); -} - -function JSXEmptyExpression(node) { - this.printInnerComments(node); -} - -function JSXFragment(node) { - this.print(node.openingFragment, node); - this.indent(); - - for (const child of node.children) { - this.print(child, node); - } - - this.dedent(); - this.print(node.closingFragment, node); -} - -function JSXOpeningFragment() { - this.token("<"); - this.token(">"); -} - -function JSXClosingFragment() { - this.token("</"); - this.token(">"); -} - -/***/ }), - -/***/ 53558: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports._params = _params; -exports._parameters = _parameters; -exports._param = _param; -exports._methodHead = _methodHead; -exports._predicate = _predicate; -exports._functionHead = _functionHead; -exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression; -exports.ArrowFunctionExpression = ArrowFunctionExpression; - -var t = __nccwpck_require__(24479); - -const { - isIdentifier -} = t; - -function _params(node) { - this.print(node.typeParameters, node); - this.token("("); - - this._parameters(node.params, node); - - this.token(")"); - this.print(node.returnType, node); -} - -function _parameters(parameters, parent) { - for (let i = 0; i < parameters.length; i++) { - this._param(parameters[i], parent); - - if (i < parameters.length - 1) { - this.token(","); - this.space(); - } + return false; } -} - -function _param(parameter, parent) { - this.printJoin(parameter.decorators, parameter); - this.print(parameter, parent); - if (parameter.optional) this.token("?"); - this.print(parameter.typeAnnotation, parameter); -} -function _methodHead(node) { - const kind = node.kind; - const key = node.key; + state.kind = 'scalar'; + state.result = ''; - if (kind === "get" || kind === "set") { - this.word(kind); - this.space(); - } + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); - if (node.async) { - this._catchUp("start", key.loc); + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } - this.word("async"); - this.space(); - } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } - if (kind === "method" || kind === "init") { - if (node.generator) { - this.token("*"); + } else { + break; } } - if (node.computed) { - this.token("["); - this.print(key, node); - this.token("]"); - } else { - this.print(key, node); - } - - if (node.optional) { - this.token("?"); - } - - this._params(node); -} + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); -function _predicate(node) { - if (node.predicate) { - if (!node.returnType) { - this.token(":"); + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); } - - this.space(); - this.print(node.predicate, node); - } -} - -function _functionHead(node) { - if (node.async) { - this.word("async"); - this.space(); - } - - this.word("function"); - if (node.generator) this.token("*"); - this.space(); - - if (node.id) { - this.print(node.id, node); - } - - this._params(node); - - this._predicate(node); -} - -function FunctionExpression(node) { - this._functionHead(node); - - this.space(); - this.print(node.body, node); -} - -function ArrowFunctionExpression(node) { - if (node.async) { - this.word("async"); - this.space(); - } - - const firstParam = node.params[0]; - - if (!this.format.retainLines && !this.format.auxiliaryCommentBefore && !this.format.auxiliaryCommentAfter && node.params.length === 1 && isIdentifier(firstParam) && !hasTypesOrComments(node, firstParam)) { - this.print(firstParam, node); - } else { - this._params(node); - } - - this._predicate(node); - - this.space(); - this.token("=>"); - this.space(); - this.print(node.body, node); -} - -function hasTypesOrComments(node, param) { - var _param$leadingComment, _param$trailingCommen; - - return !!(node.typeParameters || node.returnType || node.predicate || param.typeAnnotation || param.optional || (_param$leadingComment = param.leadingComments) != null && _param$leadingComment.length || (_param$trailingCommen = param.trailingComments) != null && _param$trailingCommen.length); -} - -/***/ }), - -/***/ 50607: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ImportSpecifier = ImportSpecifier; -exports.ImportDefaultSpecifier = ImportDefaultSpecifier; -exports.ExportDefaultSpecifier = ExportDefaultSpecifier; -exports.ExportSpecifier = ExportSpecifier; -exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier; -exports.ExportAllDeclaration = ExportAllDeclaration; -exports.ExportNamedDeclaration = ExportNamedDeclaration; -exports.ExportDefaultDeclaration = ExportDefaultDeclaration; -exports.ImportDeclaration = ImportDeclaration; -exports.ImportAttribute = ImportAttribute; -exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; - -var t = __nccwpck_require__(24479); - -const { - isClassDeclaration, - isExportDefaultSpecifier, - isExportNamespaceSpecifier, - isImportDefaultSpecifier, - isImportNamespaceSpecifier, - isStatement -} = t; - -function ImportSpecifier(node) { - if (node.importKind === "type" || node.importKind === "typeof") { - this.word(node.importKind); - this.space(); - } - - this.print(node.imported, node); - - if (node.local && node.local.name !== node.imported.name) { - this.space(); - this.word("as"); - this.space(); - this.print(node.local, node); - } -} - -function ImportDefaultSpecifier(node) { - this.print(node.local, node); -} - -function ExportDefaultSpecifier(node) { - this.print(node.exported, node); -} - -function ExportSpecifier(node) { - this.print(node.local, node); - - if (node.exported && node.local.name !== node.exported.name) { - this.space(); - this.word("as"); - this.space(); - this.print(node.exported, node); - } -} - -function ExportNamespaceSpecifier(node) { - this.token("*"); - this.space(); - this.word("as"); - this.space(); - this.print(node.exported, node); -} - -function ExportAllDeclaration(node) { - this.word("export"); - this.space(); - - if (node.exportKind === "type") { - this.word("type"); - this.space(); - } - - this.token("*"); - this.space(); - this.word("from"); - this.space(); - this.print(node.source, node); - this.printAssertions(node); - this.semicolon(); -} - -function ExportNamedDeclaration(node) { - if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { - this.printJoin(node.declaration.decorators, node); } - this.word("export"); - this.space(); - ExportDeclaration.apply(this, arguments); -} - -function ExportDefaultDeclaration(node) { - if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) { - this.printJoin(node.declaration.decorators, node); - } - - this.word("export"); - this.space(); - this.word("default"); - this.space(); - ExportDeclaration.apply(this, arguments); -} - -function ExportDeclaration(node) { - if (node.declaration) { - const declar = node.declaration; - this.print(declar, node); - if (!isStatement(declar)) this.semicolon(); - } else { - if (node.exportKind === "type") { - this.word("type"); - this.space(); - } - - const specifiers = node.specifiers.slice(0); - let hasSpecial = false; - - for (;;) { - const first = specifiers[0]; + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; - if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) { - hasSpecial = true; - this.print(specifiers.shift(), node); + ch = state.input.charCodeAt(state.position); - if (specifiers.length) { - this.token(","); - this.space(); - } - } else { - break; - } + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); } - if (specifiers.length || !specifiers.length && !hasSpecial) { - this.token("{"); - - if (specifiers.length) { - this.space(); - this.printList(specifiers, node); - this.space(); - } - - this.token("}"); + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; } - if (node.source) { - this.space(); - this.word("from"); - this.space(); - this.print(node.source, node); - this.printAssertions(node); + if (is_EOL(ch)) { + emptyLines++; + continue; } - this.semicolon(); - } -} - -function ImportDeclaration(node) { - this.word("import"); - this.space(); - - if (node.importKind === "type" || node.importKind === "typeof") { - this.word(node.importKind); - this.space(); - } - - const specifiers = node.specifiers.slice(0); - - if (specifiers != null && specifiers.length) { - for (;;) { - const first = specifiers[0]; - - if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) { - this.print(specifiers.shift(), node); + // End of the scalar. + if (state.lineIndent < textIndent) { - if (specifiers.length) { - this.token(","); - this.space(); + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; } - } else { - break; } - } - - if (specifiers.length) { - this.token("{"); - this.space(); - this.printList(specifiers, node); - this.space(); - this.token("}"); - } - - this.space(); - this.word("from"); - this.space(); - } - this.print(node.source, node); - this.printAssertions(node); - { - var _node$attributes; - - if ((_node$attributes = node.attributes) != null && _node$attributes.length) { - this.space(); - this.word("with"); - this.space(); - this.printList(node.attributes, node); + // Break this `while` cycle and go to the funciton's epilogue. + break; } - } - this.semicolon(); -} - -function ImportAttribute(node) { - this.print(node.key); - this.token(":"); - this.space(); - this.print(node.value); -} - -function ImportNamespaceSpecifier(node) { - this.token("*"); - this.space(); - this.word("as"); - this.space(); - this.print(node.local, node); -} - -/***/ }), - -/***/ 21480: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; + // Folded style: use fancy rules to handle line breaks. + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.WithStatement = WithStatement; -exports.IfStatement = IfStatement; -exports.ForStatement = ForStatement; -exports.WhileStatement = WhileStatement; -exports.DoWhileStatement = DoWhileStatement; -exports.LabeledStatement = LabeledStatement; -exports.TryStatement = TryStatement; -exports.CatchClause = CatchClause; -exports.SwitchStatement = SwitchStatement; -exports.SwitchCase = SwitchCase; -exports.DebuggerStatement = DebuggerStatement; -exports.VariableDeclaration = VariableDeclaration; -exports.VariableDeclarator = VariableDeclarator; -exports.ThrowStatement = exports.BreakStatement = exports.ReturnStatement = exports.ContinueStatement = exports.ForOfStatement = exports.ForInStatement = void 0; - -var t = __nccwpck_require__(24479); - -const { - isFor, - isForStatement, - isIfStatement, - isStatement -} = t; - -function WithStatement(node) { - this.word("with"); - this.space(); - this.token("("); - this.print(node.object, node); - this.token(")"); - this.printBlock(node); -} - -function IfStatement(node) { - this.word("if"); - this.space(); - this.token("("); - this.print(node.test, node); - this.token(")"); - this.space(); - const needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent)); - - if (needsBlock) { - this.token("{"); - this.newline(); - this.indent(); - } - - this.printAndIndentOnComments(node.consequent, node); - - if (needsBlock) { - this.dedent(); - this.newline(); - this.token("}"); - } - - if (node.alternate) { - if (this.endsWith(125)) this.space(); - this.word("else"); - this.space(); - this.printAndIndentOnComments(node.alternate, node); - } -} - -function getLastStatement(statement) { - if (!isStatement(statement.body)) return statement; - return getLastStatement(statement.body); -} - -function ForStatement(node) { - this.word("for"); - this.space(); - this.token("("); - this.inForStatementInitCounter++; - this.print(node.init, node); - this.inForStatementInitCounter--; - this.token(";"); - - if (node.test) { - this.space(); - this.print(node.test, node); - } - - this.token(";"); - - if (node.update) { - this.space(); - this.print(node.update, node); - } - - this.token(")"); - this.printBlock(node); -} - -function WhileStatement(node) { - this.word("while"); - this.space(); - this.token("("); - this.print(node.test, node); - this.token(")"); - this.printBlock(node); -} - -const buildForXStatement = function (op) { - return function (node) { - this.word("for"); - this.space(); - - if (op === "of" && node.await) { - this.word("await"); - this.space(); - } - - this.token("("); - this.print(node.left, node); - this.space(); - this.word(op); - this.space(); - this.print(node.right, node); - this.token(")"); - this.printBlock(node); - }; -}; - -const ForInStatement = buildForXStatement("in"); -exports.ForInStatement = ForInStatement; -const ForOfStatement = buildForXStatement("of"); -exports.ForOfStatement = ForOfStatement; - -function DoWhileStatement(node) { - this.word("do"); - this.space(); - this.print(node.body, node); - this.space(); - this.word("while"); - this.space(); - this.token("("); - this.print(node.test, node); - this.token(")"); - this.semicolon(); -} - -function buildLabelStatement(prefix, key = "label") { - return function (node) { - this.word(prefix); - const label = node[key]; - - if (label) { - this.space(); - const isLabel = key == "label"; - const terminatorState = this.startTerminatorless(isLabel); - this.print(label, node); - this.endTerminatorless(terminatorState); - } - - this.semicolon(); - }; -} - -const ContinueStatement = buildLabelStatement("continue"); -exports.ContinueStatement = ContinueStatement; -const ReturnStatement = buildLabelStatement("return", "argument"); -exports.ReturnStatement = ReturnStatement; -const BreakStatement = buildLabelStatement("break"); -exports.BreakStatement = BreakStatement; -const ThrowStatement = buildLabelStatement("throw", "argument"); -exports.ThrowStatement = ThrowStatement; - -function LabeledStatement(node) { - this.print(node.label, node); - this.token(":"); - this.space(); - this.print(node.body, node); -} - -function TryStatement(node) { - this.word("try"); - this.space(); - this.print(node.block, node); - this.space(); - - if (node.handlers) { - this.print(node.handlers[0], node); - } else { - this.print(node.handler, node); - } - - if (node.finalizer) { - this.space(); - this.word("finally"); - this.space(); - this.print(node.finalizer, node); - } -} - -function CatchClause(node) { - this.word("catch"); - this.space(); - - if (node.param) { - this.token("("); - this.print(node.param, node); - this.print(node.param.typeAnnotation, node); - this.token(")"); - this.space(); - } - - this.print(node.body, node); -} - -function SwitchStatement(node) { - this.word("switch"); - this.space(); - this.token("("); - this.print(node.discriminant, node); - this.token(")"); - this.space(); - this.token("{"); - this.printSequence(node.cases, node, { - indent: true, - - addNewlines(leading, cas) { - if (!leading && node.cases[node.cases.length - 1] === cas) return -1; - } - - }); - this.token("}"); -} - -function SwitchCase(node) { - if (node.test) { - this.word("case"); - this.space(); - this.print(node.test, node); - this.token(":"); - } else { - this.word("default"); - this.token(":"); - } - - if (node.consequent.length) { - this.newline(); - this.printSequence(node.consequent, node, { - indent: true - }); - } -} - -function DebuggerStatement() { - this.word("debugger"); - this.semicolon(); -} - -function variableDeclarationIndent() { - this.token(","); - this.newline(); - - if (this.endsWith(10)) { - for (let i = 0; i < 4; i++) this.space(true); - } -} - -function constDeclarationIndent() { - this.token(","); - this.newline(); - - if (this.endsWith(10)) { - for (let i = 0; i < 6; i++) this.space(true); - } -} - -function VariableDeclaration(node, parent) { - if (node.declare) { - this.word("declare"); - this.space(); - } - - this.word(node.kind); - this.space(); - let hasInits = false; - - if (!isFor(parent)) { - for (const declar of node.declarations) { - if (declar.init) { - hasInits = true; - } - } - } - - let separator; - - if (hasInits) { - separator = node.kind === "const" ? constDeclarationIndent : variableDeclarationIndent; - } - - this.printList(node.declarations, node, { - separator - }); - - if (isFor(parent)) { - if (isForStatement(parent)) { - if (parent.init === node) return; - } else { - if (parent.left === node) return; - } - } - - this.semicolon(); -} - -function VariableDeclarator(node) { - this.print(node.id, node); - if (node.definite) this.token("!"); - this.print(node.id.typeAnnotation, node); - - if (node.init) { - this.space(); - this.token("="); - this.space(); - this.print(node.init, node); - } -} - -/***/ }), - -/***/ 33800: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TaggedTemplateExpression = TaggedTemplateExpression; -exports.TemplateElement = TemplateElement; -exports.TemplateLiteral = TemplateLiteral; - -var t = __nccwpck_require__(24479); - -function TaggedTemplateExpression(node) { - this.print(node.tag, node); - this.print(node.typeParameters, node); - this.print(node.quasi, node); -} - -function TemplateElement(node, parent) { - const isFirst = parent.quasis[0] === node; - const isLast = parent.quasis[parent.quasis.length - 1] === node; - const value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${"); - this.token(value); -} - -function TemplateLiteral(node) { - const quasis = node.quasis; - - for (let i = 0; i < quasis.length; i++) { - this.print(quasis[i], node); - - if (i + 1 < quasis.length) { - this.print(node.expressions[i], node); - } - } -} - -/***/ }), - -/***/ 84986: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Identifier = Identifier; -exports.ArgumentPlaceholder = ArgumentPlaceholder; -exports.SpreadElement = exports.RestElement = RestElement; -exports.ObjectPattern = exports.ObjectExpression = ObjectExpression; -exports.ObjectMethod = ObjectMethod; -exports.ObjectProperty = ObjectProperty; -exports.ArrayPattern = exports.ArrayExpression = ArrayExpression; -exports.RecordExpression = RecordExpression; -exports.TupleExpression = TupleExpression; -exports.RegExpLiteral = RegExpLiteral; -exports.BooleanLiteral = BooleanLiteral; -exports.NullLiteral = NullLiteral; -exports.NumericLiteral = NumericLiteral; -exports.StringLiteral = StringLiteral; -exports.BigIntLiteral = BigIntLiteral; -exports.DecimalLiteral = DecimalLiteral; -exports.TopicReference = TopicReference; -exports.PipelineTopicExpression = PipelineTopicExpression; -exports.PipelineBareFunction = PipelineBareFunction; -exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; - -var t = __nccwpck_require__(24479); - -var _jsesc = __nccwpck_require__(48978); - -const { - isAssignmentPattern, - isIdentifier -} = t; - -function Identifier(node) { - this.exactSource(node.loc, () => { - this.word(node.name); - }); -} - -function ArgumentPlaceholder() { - this.token("?"); -} - -function RestElement(node) { - this.token("..."); - this.print(node.argument, node); -} - -function ObjectExpression(node) { - const props = node.properties; - this.token("{"); - this.printInnerComments(node); - - if (props.length) { - this.space(); - this.printList(props, node, { - indent: true, - statement: true - }); - this.space(); - } - - this.token("}"); -} - -function ObjectMethod(node) { - this.printJoin(node.decorators, node); - - this._methodHead(node); - - this.space(); - this.print(node.body, node); -} - -function ObjectProperty(node) { - this.printJoin(node.decorators, node); - - if (node.computed) { - this.token("["); - this.print(node.key, node); - this.token("]"); - } else { - if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) { - this.print(node.value, node); - return; - } - - this.print(node.key, node); - - if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) { - return; - } - } - - this.token(":"); - this.space(); - this.print(node.value, node); -} - -function ArrayExpression(node) { - const elems = node.elements; - const len = elems.length; - this.token("["); - this.printInnerComments(node); - - for (let i = 0; i < elems.length; i++) { - const elem = elems[i]; - - if (elem) { - if (i > 0) this.space(); - this.print(elem, node); - if (i < len - 1) this.token(","); - } else { - this.token(","); - } - } - - this.token("]"); -} - -function RecordExpression(node) { - const props = node.properties; - let startToken; - let endToken; - - if (this.format.recordAndTupleSyntaxType === "bar") { - startToken = "{|"; - endToken = "|}"; - } else if (this.format.recordAndTupleSyntaxType === "hash") { - startToken = "#{"; - endToken = "}"; - } else { - throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); - } - - this.token(startToken); - this.printInnerComments(node); - - if (props.length) { - this.space(); - this.printList(props, node, { - indent: true, - statement: true - }); - this.space(); - } - - this.token(endToken); -} - -function TupleExpression(node) { - const elems = node.elements; - const len = elems.length; - let startToken; - let endToken; - - if (this.format.recordAndTupleSyntaxType === "bar") { - startToken = "[|"; - endToken = "|]"; - } else if (this.format.recordAndTupleSyntaxType === "hash") { - startToken = "#["; - endToken = "]"; - } else { - throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); - } - - this.token(startToken); - this.printInnerComments(node); - - for (let i = 0; i < elems.length; i++) { - const elem = elems[i]; - - if (elem) { - if (i > 0) this.space(); - this.print(elem, node); - if (i < len - 1) this.token(","); - } - } - - this.token(endToken); -} - -function RegExpLiteral(node) { - this.word(`/${node.pattern}/${node.flags}`); -} - -function BooleanLiteral(node) { - this.word(node.value ? "true" : "false"); -} - -function NullLiteral() { - this.word("null"); -} - -function NumericLiteral(node) { - const raw = this.getPossibleRaw(node); - const opts = this.format.jsescOption; - const value = node.value + ""; - - if (opts.numbers) { - this.number(_jsesc(node.value, opts)); - } else if (raw == null) { - this.number(value); - } else if (this.format.minified) { - this.number(raw.length < value.length ? raw : value); - } else { - this.number(raw); - } -} - -function StringLiteral(node) { - const raw = this.getPossibleRaw(node); - - if (!this.format.minified && raw != null) { - this.token(raw); - return; - } - - const val = _jsesc(node.value, Object.assign(this.format.jsescOption, this.format.jsonCompatibleStrings && { - json: true - })); - - return this.token(val); -} - -function BigIntLiteral(node) { - const raw = this.getPossibleRaw(node); - - if (!this.format.minified && raw != null) { - this.word(raw); - return; - } - - this.word(node.value + "n"); -} - -function DecimalLiteral(node) { - const raw = this.getPossibleRaw(node); - - if (!this.format.minified && raw != null) { - this.word(raw); - return; - } - - this.word(node.value + "m"); -} - -function TopicReference() { - const { - topicToken - } = this.format; - - switch (topicToken) { - case "#": - this.token("#"); - break; - - default: - { - const givenTopicTokenJSON = JSON.stringify(topicToken); - const message = `The "topicToken" generator option must be "#" (${givenTopicTokenJSON} received instead).`; - throw new Error(message); - } - } -} - -function PipelineTopicExpression(node) { - this.print(node.expression, node); -} - -function PipelineBareFunction(node) { - this.print(node.callee, node); -} - -function PipelinePrimaryTopicReference() { - this.token("#"); -} - -/***/ }), - -/***/ 71406: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TSTypeAnnotation = TSTypeAnnotation; -exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation; -exports.TSTypeParameter = TSTypeParameter; -exports.TSParameterProperty = TSParameterProperty; -exports.TSDeclareFunction = TSDeclareFunction; -exports.TSDeclareMethod = TSDeclareMethod; -exports.TSQualifiedName = TSQualifiedName; -exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; -exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration; -exports.TSPropertySignature = TSPropertySignature; -exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; -exports.TSMethodSignature = TSMethodSignature; -exports.TSIndexSignature = TSIndexSignature; -exports.TSAnyKeyword = TSAnyKeyword; -exports.TSBigIntKeyword = TSBigIntKeyword; -exports.TSUnknownKeyword = TSUnknownKeyword; -exports.TSNumberKeyword = TSNumberKeyword; -exports.TSObjectKeyword = TSObjectKeyword; -exports.TSBooleanKeyword = TSBooleanKeyword; -exports.TSStringKeyword = TSStringKeyword; -exports.TSSymbolKeyword = TSSymbolKeyword; -exports.TSVoidKeyword = TSVoidKeyword; -exports.TSUndefinedKeyword = TSUndefinedKeyword; -exports.TSNullKeyword = TSNullKeyword; -exports.TSNeverKeyword = TSNeverKeyword; -exports.TSIntrinsicKeyword = TSIntrinsicKeyword; -exports.TSThisType = TSThisType; -exports.TSFunctionType = TSFunctionType; -exports.TSConstructorType = TSConstructorType; -exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; -exports.TSTypeReference = TSTypeReference; -exports.TSTypePredicate = TSTypePredicate; -exports.TSTypeQuery = TSTypeQuery; -exports.TSTypeLiteral = TSTypeLiteral; -exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody; -exports.tsPrintBraced = tsPrintBraced; -exports.TSArrayType = TSArrayType; -exports.TSTupleType = TSTupleType; -exports.TSOptionalType = TSOptionalType; -exports.TSRestType = TSRestType; -exports.TSNamedTupleMember = TSNamedTupleMember; -exports.TSUnionType = TSUnionType; -exports.TSIntersectionType = TSIntersectionType; -exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType; -exports.TSConditionalType = TSConditionalType; -exports.TSInferType = TSInferType; -exports.TSParenthesizedType = TSParenthesizedType; -exports.TSTypeOperator = TSTypeOperator; -exports.TSIndexedAccessType = TSIndexedAccessType; -exports.TSMappedType = TSMappedType; -exports.TSLiteralType = TSLiteralType; -exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; -exports.TSInterfaceDeclaration = TSInterfaceDeclaration; -exports.TSInterfaceBody = TSInterfaceBody; -exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration; -exports.TSAsExpression = TSAsExpression; -exports.TSTypeAssertion = TSTypeAssertion; -exports.TSEnumDeclaration = TSEnumDeclaration; -exports.TSEnumMember = TSEnumMember; -exports.TSModuleDeclaration = TSModuleDeclaration; -exports.TSModuleBlock = TSModuleBlock; -exports.TSImportType = TSImportType; -exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration; -exports.TSExternalModuleReference = TSExternalModuleReference; -exports.TSNonNullExpression = TSNonNullExpression; -exports.TSExportAssignment = TSExportAssignment; -exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration; -exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; -exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers; - -var t = __nccwpck_require__(24479); - -function TSTypeAnnotation(node) { - this.token(":"); - this.space(); - if (node.optional) this.token("?"); - this.print(node.typeAnnotation, node); -} - -function TSTypeParameterInstantiation(node) { - this.token("<"); - this.printList(node.params, node, {}); - this.token(">"); -} - -function TSTypeParameter(node) { - this.word(node.name); - - if (node.constraint) { - this.space(); - this.word("extends"); - this.space(); - this.print(node.constraint, node); - } - - if (node.default) { - this.space(); - this.token("="); - this.space(); - this.print(node.default, node); - } -} - -function TSParameterProperty(node) { - if (node.accessibility) { - this.word(node.accessibility); - this.space(); - } - - if (node.readonly) { - this.word("readonly"); - this.space(); - } - - this._param(node.parameter); -} - -function TSDeclareFunction(node) { - if (node.declare) { - this.word("declare"); - this.space(); - } - - this._functionHead(node); - - this.token(";"); -} - -function TSDeclareMethod(node) { - this._classMethodHead(node); - - this.token(";"); -} - -function TSQualifiedName(node) { - this.print(node.left, node); - this.token("."); - this.print(node.right, node); -} - -function TSCallSignatureDeclaration(node) { - this.tsPrintSignatureDeclarationBase(node); - this.token(";"); -} - -function TSConstructSignatureDeclaration(node) { - this.word("new"); - this.space(); - this.tsPrintSignatureDeclarationBase(node); - this.token(";"); -} - -function TSPropertySignature(node) { - const { - readonly, - initializer - } = node; - - if (readonly) { - this.word("readonly"); - this.space(); - } - - this.tsPrintPropertyOrMethodName(node); - this.print(node.typeAnnotation, node); - - if (initializer) { - this.space(); - this.token("="); - this.space(); - this.print(initializer, node); - } - - this.token(";"); -} - -function tsPrintPropertyOrMethodName(node) { - if (node.computed) { - this.token("["); - } - - this.print(node.key, node); - - if (node.computed) { - this.token("]"); - } - - if (node.optional) { - this.token("?"); - } -} - -function TSMethodSignature(node) { - const { - kind - } = node; - - if (kind === "set" || kind === "get") { - this.word(kind); - this.space(); - } - - this.tsPrintPropertyOrMethodName(node); - this.tsPrintSignatureDeclarationBase(node); - this.token(";"); -} - -function TSIndexSignature(node) { - const { - readonly, - static: isStatic - } = node; - - if (isStatic) { - this.word("static"); - this.space(); - } - - if (readonly) { - this.word("readonly"); - this.space(); - } - - this.token("["); - - this._parameters(node.parameters, node); - - this.token("]"); - this.print(node.typeAnnotation, node); - this.token(";"); -} - -function TSAnyKeyword() { - this.word("any"); -} - -function TSBigIntKeyword() { - this.word("bigint"); -} - -function TSUnknownKeyword() { - this.word("unknown"); -} - -function TSNumberKeyword() { - this.word("number"); -} - -function TSObjectKeyword() { - this.word("object"); -} - -function TSBooleanKeyword() { - this.word("boolean"); -} - -function TSStringKeyword() { - this.word("string"); -} - -function TSSymbolKeyword() { - this.word("symbol"); -} - -function TSVoidKeyword() { - this.word("void"); -} - -function TSUndefinedKeyword() { - this.word("undefined"); -} - -function TSNullKeyword() { - this.word("null"); -} - -function TSNeverKeyword() { - this.word("never"); -} - -function TSIntrinsicKeyword() { - this.word("intrinsic"); -} - -function TSThisType() { - this.word("this"); -} - -function TSFunctionType(node) { - this.tsPrintFunctionOrConstructorType(node); -} - -function TSConstructorType(node) { - if (node.abstract) { - this.word("abstract"); - this.space(); - } - - this.word("new"); - this.space(); - this.tsPrintFunctionOrConstructorType(node); -} - -function tsPrintFunctionOrConstructorType(node) { - const { - typeParameters, - parameters - } = node; - this.print(typeParameters, node); - this.token("("); - - this._parameters(parameters, node); - - this.token(")"); - this.space(); - this.token("=>"); - this.space(); - this.print(node.typeAnnotation.typeAnnotation, node); -} - -function TSTypeReference(node) { - this.print(node.typeName, node); - this.print(node.typeParameters, node); -} - -function TSTypePredicate(node) { - if (node.asserts) { - this.word("asserts"); - this.space(); - } - - this.print(node.parameterName); - - if (node.typeAnnotation) { - this.space(); - this.word("is"); - this.space(); - this.print(node.typeAnnotation.typeAnnotation); - } -} - -function TSTypeQuery(node) { - this.word("typeof"); - this.space(); - this.print(node.exprName); -} - -function TSTypeLiteral(node) { - this.tsPrintTypeLiteralOrInterfaceBody(node.members, node); -} - -function tsPrintTypeLiteralOrInterfaceBody(members, node) { - this.tsPrintBraced(members, node); -} - -function tsPrintBraced(members, node) { - this.token("{"); - - if (members.length) { - this.indent(); - this.newline(); - - for (const member of members) { - this.print(member, node); - this.newline(); - } - - this.dedent(); - this.rightBrace(); - } else { - this.token("}"); - } -} - -function TSArrayType(node) { - this.print(node.elementType, node); - this.token("[]"); -} - -function TSTupleType(node) { - this.token("["); - this.printList(node.elementTypes, node); - this.token("]"); -} - -function TSOptionalType(node) { - this.print(node.typeAnnotation, node); - this.token("?"); -} - -function TSRestType(node) { - this.token("..."); - this.print(node.typeAnnotation, node); -} - -function TSNamedTupleMember(node) { - this.print(node.label, node); - if (node.optional) this.token("?"); - this.token(":"); - this.space(); - this.print(node.elementType, node); -} - -function TSUnionType(node) { - this.tsPrintUnionOrIntersectionType(node, "|"); -} - -function TSIntersectionType(node) { - this.tsPrintUnionOrIntersectionType(node, "&"); -} - -function tsPrintUnionOrIntersectionType(node, sep) { - this.printJoin(node.types, node, { - separator() { - this.space(); - this.token(sep); - this.space(); - } - - }); -} - -function TSConditionalType(node) { - this.print(node.checkType); - this.space(); - this.word("extends"); - this.space(); - this.print(node.extendsType); - this.space(); - this.token("?"); - this.space(); - this.print(node.trueType); - this.space(); - this.token(":"); - this.space(); - this.print(node.falseType); -} - -function TSInferType(node) { - this.token("infer"); - this.space(); - this.print(node.typeParameter); -} - -function TSParenthesizedType(node) { - this.token("("); - this.print(node.typeAnnotation, node); - this.token(")"); -} - -function TSTypeOperator(node) { - this.word(node.operator); - this.space(); - this.print(node.typeAnnotation, node); -} - -function TSIndexedAccessType(node) { - this.print(node.objectType, node); - this.token("["); - this.print(node.indexType, node); - this.token("]"); -} - -function TSMappedType(node) { - const { - nameType, - optional, - readonly, - typeParameter - } = node; - this.token("{"); - this.space(); - - if (readonly) { - tokenIfPlusMinus(this, readonly); - this.word("readonly"); - this.space(); - } - - this.token("["); - this.word(typeParameter.name); - this.space(); - this.word("in"); - this.space(); - this.print(typeParameter.constraint, typeParameter); - - if (nameType) { - this.space(); - this.word("as"); - this.space(); - this.print(nameType, node); - } - - this.token("]"); - - if (optional) { - tokenIfPlusMinus(this, optional); - this.token("?"); - } - - this.token(":"); - this.space(); - this.print(node.typeAnnotation, node); - this.space(); - this.token("}"); -} - -function tokenIfPlusMinus(self, tok) { - if (tok !== true) { - self.token(tok); - } -} - -function TSLiteralType(node) { - this.print(node.literal, node); -} - -function TSExpressionWithTypeArguments(node) { - this.print(node.expression, node); - this.print(node.typeParameters, node); -} - -function TSInterfaceDeclaration(node) { - const { - declare, - id, - typeParameters, - extends: extendz, - body - } = node; - - if (declare) { - this.word("declare"); - this.space(); - } - - this.word("interface"); - this.space(); - this.print(id, node); - this.print(typeParameters, node); - - if (extendz != null && extendz.length) { - this.space(); - this.word("extends"); - this.space(); - this.printList(extendz, node); - } - - this.space(); - this.print(body, node); -} - -function TSInterfaceBody(node) { - this.tsPrintTypeLiteralOrInterfaceBody(node.body, node); -} - -function TSTypeAliasDeclaration(node) { - const { - declare, - id, - typeParameters, - typeAnnotation - } = node; - - if (declare) { - this.word("declare"); - this.space(); - } - - this.word("type"); - this.space(); - this.print(id, node); - this.print(typeParameters, node); - this.space(); - this.token("="); - this.space(); - this.print(typeAnnotation, node); - this.token(";"); -} - -function TSAsExpression(node) { - const { - expression, - typeAnnotation - } = node; - this.print(expression, node); - this.space(); - this.word("as"); - this.space(); - this.print(typeAnnotation, node); -} - -function TSTypeAssertion(node) { - const { - typeAnnotation, - expression - } = node; - this.token("<"); - this.print(typeAnnotation, node); - this.token(">"); - this.space(); - this.print(expression, node); -} - -function TSEnumDeclaration(node) { - const { - declare, - const: isConst, - id, - members - } = node; - - if (declare) { - this.word("declare"); - this.space(); - } - - if (isConst) { - this.word("const"); - this.space(); - } - - this.word("enum"); - this.space(); - this.print(id, node); - this.space(); - this.tsPrintBraced(members, node); -} - -function TSEnumMember(node) { - const { - id, - initializer - } = node; - this.print(id, node); - - if (initializer) { - this.space(); - this.token("="); - this.space(); - this.print(initializer, node); - } - - this.token(","); -} - -function TSModuleDeclaration(node) { - const { - declare, - id - } = node; - - if (declare) { - this.word("declare"); - this.space(); - } - - if (!node.global) { - this.word(id.type === "Identifier" ? "namespace" : "module"); - this.space(); - } - - this.print(id, node); - - if (!node.body) { - this.token(";"); - return; - } - - let body = node.body; - - while (body.type === "TSModuleDeclaration") { - this.token("."); - this.print(body.id, body); - body = body.body; - } - - this.space(); - this.print(body, node); -} - -function TSModuleBlock(node) { - this.tsPrintBraced(node.body, node); -} - -function TSImportType(node) { - const { - argument, - qualifier, - typeParameters - } = node; - this.word("import"); - this.token("("); - this.print(argument, node); - this.token(")"); - - if (qualifier) { - this.token("."); - this.print(qualifier, node); - } - - if (typeParameters) { - this.print(typeParameters, node); - } -} - -function TSImportEqualsDeclaration(node) { - const { - isExport, - id, - moduleReference - } = node; - - if (isExport) { - this.word("export"); - this.space(); - } - - this.word("import"); - this.space(); - this.print(id, node); - this.space(); - this.token("="); - this.space(); - this.print(moduleReference, node); - this.token(";"); -} - -function TSExternalModuleReference(node) { - this.token("require("); - this.print(node.expression, node); - this.token(")"); -} - -function TSNonNullExpression(node) { - this.print(node.expression, node); - this.token("!"); -} - -function TSExportAssignment(node) { - this.word("export"); - this.space(); - this.token("="); - this.space(); - this.print(node.expression, node); - this.token(";"); -} - -function TSNamespaceExportDeclaration(node) { - this.word("export"); - this.space(); - this.word("as"); - this.space(); - this.word("namespace"); - this.space(); - this.print(node.id, node); -} - -function tsPrintSignatureDeclarationBase(node) { - const { - typeParameters, - parameters - } = node; - this.print(typeParameters, node); - this.token("("); - - this._parameters(parameters, node); - - this.token(")"); - this.print(node.typeAnnotation, node); -} - -function tsPrintClassMemberModifiers(node, isField) { - if (isField && node.declare) { - this.word("declare"); - this.space(); - } - - if (node.accessibility) { - this.word(node.accessibility); - this.space(); - } - - if (node.static) { - this.word("static"); - this.space(); - } - - if (node.override) { - this.word("override"); - this.space(); - } - - if (node.abstract) { - this.word("abstract"); - this.space(); - } - - if (isField && node.readonly) { - this.word("readonly"); - this.space(); - } -} - -/***/ }), - -/***/ 52685: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = generate; -exports.CodeGenerator = void 0; - -var _sourceMap = __nccwpck_require__(70826); - -var _printer = __nccwpck_require__(6558); - -class Generator extends _printer.default { - constructor(ast, opts = {}, code) { - const format = normalizeOptions(code, opts); - const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; - super(format, map); - this.ast = void 0; - this.ast = ast; - } - - generate() { - return super.generate(this.ast); - } - -} - -function normalizeOptions(code, opts) { - const format = { - auxiliaryCommentBefore: opts.auxiliaryCommentBefore, - auxiliaryCommentAfter: opts.auxiliaryCommentAfter, - shouldPrintComment: opts.shouldPrintComment, - retainLines: opts.retainLines, - retainFunctionParens: opts.retainFunctionParens, - comments: opts.comments == null || opts.comments, - compact: opts.compact, - minified: opts.minified, - concise: opts.concise, - indent: { - adjustMultilineComment: true, - style: " ", - base: 0 - }, - decoratorsBeforeExport: !!opts.decoratorsBeforeExport, - jsescOption: Object.assign({ - quotes: "double", - wrap: true, - minimal: false - }, opts.jsescOption), - recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType, - topicToken: opts.topicToken - }; - { - format.jsonCompatibleStrings = opts.jsonCompatibleStrings; - } - - if (format.minified) { - format.compact = true; - - format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); - } else { - format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0); - } - - if (format.compact === "auto") { - format.compact = code.length > 500000; - - if (format.compact) { - console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`); - } - } - - if (format.compact) { - format.indent.adjustMultilineComment = false; - } - - return format; -} - -class CodeGenerator { - constructor(ast, opts, code) { - this._generator = void 0; - this._generator = new Generator(ast, opts, code); - } - - generate() { - return this._generator.generate(); - } - -} - -exports.CodeGenerator = CodeGenerator; - -function generate(ast, opts, code) { - const gen = new Generator(ast, opts, code); - return gen.generate(); -} - -/***/ }), - -/***/ 83731: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.needsWhitespace = needsWhitespace; -exports.needsWhitespaceBefore = needsWhitespaceBefore; -exports.needsWhitespaceAfter = needsWhitespaceAfter; -exports.needsParens = needsParens; - -var whitespace = __nccwpck_require__(67654); - -var parens = __nccwpck_require__(11298); - -var t = __nccwpck_require__(24479); - -const { - isCallExpression, - isExpressionStatement, - isMemberExpression, - isNewExpression -} = t; - -function expandAliases(obj) { - const newObj = {}; - - function add(type, func) { - const fn = newObj[type]; - newObj[type] = fn ? function (node, parent, stack) { - const result = fn(node, parent, stack); - return result == null ? func(node, parent, stack) : result; - } : func; - } - - for (const type of Object.keys(obj)) { - const aliases = t.FLIPPED_ALIAS_KEYS[type]; - - if (aliases) { - for (const alias of aliases) { - add(alias, obj[type]); - } - } else { - add(type, obj[type]); - } - } - - return newObj; -} - -const expandedParens = expandAliases(parens); -const expandedWhitespaceNodes = expandAliases(whitespace.nodes); -const expandedWhitespaceList = expandAliases(whitespace.list); - -function find(obj, node, parent, printStack) { - const fn = obj[node.type]; - return fn ? fn(node, parent, printStack) : null; -} - -function isOrHasCallExpression(node) { - if (isCallExpression(node)) { - return true; - } - - return isMemberExpression(node) && isOrHasCallExpression(node.object); -} - -function needsWhitespace(node, parent, type) { - if (!node) return 0; - - if (isExpressionStatement(node)) { - node = node.expression; - } - - let linesInfo = find(expandedWhitespaceNodes, node, parent); - - if (!linesInfo) { - const items = find(expandedWhitespaceList, node, parent); - - if (items) { - for (let i = 0; i < items.length; i++) { - linesInfo = needsWhitespace(items[i], node, type); - if (linesInfo) break; - } - } - } - - if (typeof linesInfo === "object" && linesInfo !== null) { - return linesInfo[type] || 0; - } - - return 0; -} - -function needsWhitespaceBefore(node, parent) { - return needsWhitespace(node, parent, "before"); -} - -function needsWhitespaceAfter(node, parent) { - return needsWhitespace(node, parent, "after"); -} - -function needsParens(node, parent, printStack) { - if (!parent) return false; - - if (isNewExpression(parent) && parent.callee === node) { - if (isOrHasCallExpression(node)) return true; - } - - return find(expandedParens, node, parent, printStack); -} - -/***/ }), - -/***/ 11298: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NullableTypeAnnotation = NullableTypeAnnotation; -exports.FunctionTypeAnnotation = FunctionTypeAnnotation; -exports.UpdateExpression = UpdateExpression; -exports.ObjectExpression = ObjectExpression; -exports.DoExpression = DoExpression; -exports.Binary = Binary; -exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; -exports.OptionalIndexedAccessType = OptionalIndexedAccessType; -exports.TSAsExpression = TSAsExpression; -exports.TSTypeAssertion = TSTypeAssertion; -exports.TSIntersectionType = exports.TSUnionType = TSUnionType; -exports.TSInferType = TSInferType; -exports.BinaryExpression = BinaryExpression; -exports.SequenceExpression = SequenceExpression; -exports.AwaitExpression = exports.YieldExpression = YieldExpression; -exports.ClassExpression = ClassExpression; -exports.UnaryLike = UnaryLike; -exports.FunctionExpression = FunctionExpression; -exports.ArrowFunctionExpression = ArrowFunctionExpression; -exports.ConditionalExpression = ConditionalExpression; -exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression; -exports.AssignmentExpression = AssignmentExpression; -exports.LogicalExpression = LogicalExpression; -exports.Identifier = Identifier; - -var t = __nccwpck_require__(24479); - -const { - isArrayTypeAnnotation, - isArrowFunctionExpression, - isAssignmentExpression, - isAwaitExpression, - isBinary, - isBinaryExpression, - isCallExpression, - isClassDeclaration, - isClassExpression, - isConditional, - isConditionalExpression, - isExportDeclaration, - isExportDefaultDeclaration, - isExpressionStatement, - isFor, - isForInStatement, - isForOfStatement, - isForStatement, - isIfStatement, - isIndexedAccessType, - isIntersectionTypeAnnotation, - isLogicalExpression, - isMemberExpression, - isNewExpression, - isNullableTypeAnnotation, - isObjectPattern, - isOptionalCallExpression, - isOptionalMemberExpression, - isReturnStatement, - isSequenceExpression, - isSwitchStatement, - isTSArrayType, - isTSAsExpression, - isTSIntersectionType, - isTSNonNullExpression, - isTSOptionalType, - isTSRestType, - isTSTypeAssertion, - isTSUnionType, - isTaggedTemplateExpression, - isThrowStatement, - isTypeAnnotation, - isUnaryLike, - isUnionTypeAnnotation, - isVariableDeclarator, - isWhileStatement, - isYieldExpression -} = t; -const PRECEDENCE = { - "||": 0, - "??": 0, - "&&": 1, - "|": 2, - "^": 3, - "&": 4, - "==": 5, - "===": 5, - "!=": 5, - "!==": 5, - "<": 6, - ">": 6, - "<=": 6, - ">=": 6, - in: 6, - instanceof: 6, - ">>": 7, - "<<": 7, - ">>>": 7, - "+": 8, - "-": 8, - "*": 9, - "/": 9, - "%": 9, - "**": 10 -}; - -const isClassExtendsClause = (node, parent) => (isClassDeclaration(parent) || isClassExpression(parent)) && parent.superClass === node; - -const hasPostfixPart = (node, parent) => (isMemberExpression(parent) || isOptionalMemberExpression(parent)) && parent.object === node || (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression(parent); - -function NullableTypeAnnotation(node, parent) { - return isArrayTypeAnnotation(parent); -} - -function FunctionTypeAnnotation(node, parent, printStack) { - return isUnionTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isArrayTypeAnnotation(parent) || isTypeAnnotation(parent) && isArrowFunctionExpression(printStack[printStack.length - 3]); -} - -function UpdateExpression(node, parent) { - return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent); -} - -function ObjectExpression(node, parent, printStack) { - return isFirstInContext(printStack, { - expressionStatement: true, - arrowBody: true - }); -} - -function DoExpression(node, parent, printStack) { - return !node.async && isFirstInContext(printStack, { - expressionStatement: true - }); -} - -function Binary(node, parent) { - if (node.operator === "**" && isBinaryExpression(parent, { - operator: "**" - })) { - return parent.left === node; - } - - if (isClassExtendsClause(node, parent)) { - return true; - } - - if (hasPostfixPart(node, parent) || isUnaryLike(parent) || isAwaitExpression(parent)) { - return true; - } - - if (isBinary(parent)) { - const parentOp = parent.operator; - const parentPos = PRECEDENCE[parentOp]; - const nodeOp = node.operator; - const nodePos = PRECEDENCE[nodeOp]; - - if (parentPos === nodePos && parent.right === node && !isLogicalExpression(parent) || parentPos > nodePos) { - return true; - } - } -} - -function UnionTypeAnnotation(node, parent) { - return isArrayTypeAnnotation(parent) || isNullableTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isUnionTypeAnnotation(parent); -} - -function OptionalIndexedAccessType(node, parent) { - return isIndexedAccessType(parent, { - objectType: node - }); -} - -function TSAsExpression() { - return true; -} - -function TSTypeAssertion() { - return true; -} - -function TSUnionType(node, parent) { - return isTSArrayType(parent) || isTSOptionalType(parent) || isTSIntersectionType(parent) || isTSUnionType(parent) || isTSRestType(parent); -} - -function TSInferType(node, parent) { - return isTSArrayType(parent) || isTSOptionalType(parent); -} - -function BinaryExpression(node, parent) { - return node.operator === "in" && (isVariableDeclarator(parent) || isFor(parent)); -} - -function SequenceExpression(node, parent) { - if (isForStatement(parent) || isThrowStatement(parent) || isReturnStatement(parent) || isIfStatement(parent) && parent.test === node || isWhileStatement(parent) && parent.test === node || isForInStatement(parent) && parent.right === node || isSwitchStatement(parent) && parent.discriminant === node || isExpressionStatement(parent) && parent.expression === node) { - return false; - } - - return true; -} - -function YieldExpression(node, parent) { - return isBinary(parent) || isUnaryLike(parent) || hasPostfixPart(node, parent) || isAwaitExpression(parent) && isYieldExpression(node) || isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent); -} - -function ClassExpression(node, parent, printStack) { - return isFirstInContext(printStack, { - expressionStatement: true, - exportDefault: true - }); -} - -function UnaryLike(node, parent) { - return hasPostfixPart(node, parent) || isBinaryExpression(parent, { - operator: "**", - left: node - }) || isClassExtendsClause(node, parent); -} - -function FunctionExpression(node, parent, printStack) { - return isFirstInContext(printStack, { - expressionStatement: true, - exportDefault: true - }); -} - -function ArrowFunctionExpression(node, parent) { - return isExportDeclaration(parent) || ConditionalExpression(node, parent); -} - -function ConditionalExpression(node, parent) { - if (isUnaryLike(parent) || isBinary(parent) || isConditionalExpression(parent, { - test: node - }) || isAwaitExpression(parent) || isTSTypeAssertion(parent) || isTSAsExpression(parent)) { - return true; - } - - return UnaryLike(node, parent); -} - -function OptionalMemberExpression(node, parent) { - return isCallExpression(parent, { - callee: node - }) || isMemberExpression(parent, { - object: node - }); -} - -function AssignmentExpression(node, parent) { - if (isObjectPattern(node.left)) { - return true; - } else { - return ConditionalExpression(node, parent); - } -} - -function LogicalExpression(node, parent) { - switch (node.operator) { - case "||": - if (!isLogicalExpression(parent)) return false; - return parent.operator === "??" || parent.operator === "&&"; - - case "&&": - return isLogicalExpression(parent, { - operator: "??" - }); - - case "??": - return isLogicalExpression(parent) && parent.operator !== "??"; - } -} - -function Identifier(node, parent, printStack) { - if (node.name === "let") { - const isFollowedByBracket = isMemberExpression(parent, { - object: node, - computed: true - }) || isOptionalMemberExpression(parent, { - object: node, - computed: true, - optional: false - }); - return isFirstInContext(printStack, { - expressionStatement: isFollowedByBracket, - forHead: isFollowedByBracket, - forInHead: isFollowedByBracket, - forOfHead: true - }); - } - - return node.name === "async" && isForOfStatement(parent) && node === parent.left; -} - -function isFirstInContext(printStack, { - expressionStatement = false, - arrowBody = false, - exportDefault = false, - forHead = false, - forInHead = false, - forOfHead = false -}) { - let i = printStack.length - 1; - let node = printStack[i]; - i--; - let parent = printStack[i]; - - while (i >= 0) { - if (expressionStatement && isExpressionStatement(parent, { - expression: node - }) || exportDefault && isExportDefaultDeclaration(parent, { - declaration: node - }) || arrowBody && isArrowFunctionExpression(parent, { - body: node - }) || forHead && isForStatement(parent, { - init: node - }) || forInHead && isForInStatement(parent, { - left: node - }) || forOfHead && isForOfStatement(parent, { - left: node - })) { - return true; - } - - if (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isConditional(parent, { - test: node - }) || isBinary(parent, { - left: node - }) || isAssignmentExpression(parent, { - left: node - })) { - node = parent; - i--; - parent = printStack[i]; - } else { - return false; - } - } - - return false; -} - -/***/ }), - -/***/ 67654: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.list = exports.nodes = void 0; - -var t = __nccwpck_require__(24479); - -const { - isArrayExpression, - isAssignmentExpression, - isBinary, - isBlockStatement, - isCallExpression, - isFunction, - isIdentifier, - isLiteral, - isMemberExpression, - isObjectExpression, - isOptionalCallExpression, - isOptionalMemberExpression, - isStringLiteral -} = t; - -function crawl(node, state = {}) { - if (isMemberExpression(node) || isOptionalMemberExpression(node)) { - crawl(node.object, state); - if (node.computed) crawl(node.property, state); - } else if (isBinary(node) || isAssignmentExpression(node)) { - crawl(node.left, state); - crawl(node.right, state); - } else if (isCallExpression(node) || isOptionalCallExpression(node)) { - state.hasCall = true; - crawl(node.callee, state); - } else if (isFunction(node)) { - state.hasFunction = true; - } else if (isIdentifier(node)) { - state.hasHelper = state.hasHelper || isHelper(node.callee); - } - - return state; -} - -function isHelper(node) { - if (isMemberExpression(node)) { - return isHelper(node.object) || isHelper(node.property); - } else if (isIdentifier(node)) { - return node.name === "require" || node.name[0] === "_"; - } else if (isCallExpression(node)) { - return isHelper(node.callee); - } else if (isBinary(node) || isAssignmentExpression(node)) { - return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); - } else { - return false; - } -} - -function isType(node) { - return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node); -} - -const nodes = { - AssignmentExpression(node) { - const state = crawl(node.right); - - if (state.hasCall && state.hasHelper || state.hasFunction) { - return { - before: state.hasFunction, - after: true - }; - } - }, - - SwitchCase(node, parent) { - return { - before: !!node.consequent.length || parent.cases[0] === node, - after: !node.consequent.length && parent.cases[parent.cases.length - 1] === node - }; - }, - - LogicalExpression(node) { - if (isFunction(node.left) || isFunction(node.right)) { - return { - after: true - }; - } - }, - - Literal(node) { - if (isStringLiteral(node) && node.value === "use strict") { - return { - after: true - }; - } - }, - - CallExpression(node) { - if (isFunction(node.callee) || isHelper(node)) { - return { - before: true, - after: true - }; - } - }, - - OptionalCallExpression(node) { - if (isFunction(node.callee)) { - return { - before: true, - after: true - }; - } - }, - - VariableDeclaration(node) { - for (let i = 0; i < node.declarations.length; i++) { - const declar = node.declarations[i]; - let enabled = isHelper(declar.id) && !isType(declar.init); - - if (!enabled) { - const state = crawl(declar.init); - enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; - } - - if (enabled) { - return { - before: true, - after: true - }; - } - } - }, - - IfStatement(node) { - if (isBlockStatement(node.consequent)) { - return { - before: true, - after: true - }; - } - } - -}; -exports.nodes = nodes; - -nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { - if (parent.properties[0] === node) { - return { - before: true - }; - } -}; - -nodes.ObjectTypeCallProperty = function (node, parent) { - var _parent$properties; - - if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) { - return { - before: true - }; - } -}; - -nodes.ObjectTypeIndexer = function (node, parent) { - var _parent$properties2, _parent$callPropertie; - - if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) { - return { - before: true - }; - } -}; - -nodes.ObjectTypeInternalSlot = function (node, parent) { - var _parent$properties3, _parent$callPropertie2, _parent$indexers; - - if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) { - return { - before: true - }; - } -}; - -const list = { - VariableDeclaration(node) { - return node.declarations.map(decl => decl.init); - }, - - ArrayExpression(node) { - return node.elements; - }, - - ObjectExpression(node) { - return node.properties; - } - -}; -exports.list = list; -[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { - if (typeof amounts === "boolean") { - amounts = { - after: amounts, - before: amounts - }; - } - - [type].concat(t.FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { - nodes[type] = function () { - return amounts; - }; - }); -}); - -/***/ }), - -/***/ 6558: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _buffer = __nccwpck_require__(76563); - -var n = __nccwpck_require__(83731); - -var t = __nccwpck_require__(24479); - -var generatorFunctions = __nccwpck_require__(47058); - -const SCIENTIFIC_NOTATION = /e/i; -const ZERO_DECIMAL_INTEGER = /\.0+$/; -const NON_DECIMAL_LITERAL = /^0[box]/; -const PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/; -const { - isProgram, - isFile, - isEmptyStatement -} = t; -const { - needsParens, - needsWhitespaceAfter, - needsWhitespaceBefore -} = n; - -class Printer { - constructor(format, map) { - this.inForStatementInitCounter = 0; - this._printStack = []; - this._indent = 0; - this._insideAux = false; - this._parenPushNewlineState = null; - this._noLineTerminator = false; - this._printAuxAfterOnNextUserNode = false; - this._printedComments = new WeakSet(); - this._endsWithInteger = false; - this._endsWithWord = false; - this.format = format; - this._buf = new _buffer.default(map); - } - - generate(ast) { - this.print(ast); - - this._maybeAddAuxComment(); - - return this._buf.get(); - } - - indent() { - if (this.format.compact || this.format.concise) return; - this._indent++; - } - - dedent() { - if (this.format.compact || this.format.concise) return; - this._indent--; - } - - semicolon(force = false) { - this._maybeAddAuxComment(); - - this._append(";", !force); - } - - rightBrace() { - if (this.format.minified) { - this._buf.removeLastSemicolon(); - } - - this.token("}"); - } - - space(force = false) { - if (this.format.compact) return; - - if (force) { - this._space(); - } else if (this._buf.hasContent()) { - const lastCp = this.getLastChar(); - - if (lastCp !== 32 && lastCp !== 10) { - this._space(); - } - } - } - - word(str) { - if (this._endsWithWord || this.endsWith(47) && str.charCodeAt(0) === 47) { - this._space(); - } - - this._maybeAddAuxComment(); - - this._append(str); - - this._endsWithWord = true; - } - - number(str) { - this.word(str); - this._endsWithInteger = Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46; - } - - token(str) { - const lastChar = this.getLastChar(); - const strFirst = str.charCodeAt(0); - - if (str === "--" && lastChar === 33 || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) { - this._space(); - } - - this._maybeAddAuxComment(); - - this._append(str); - } - - newline(i = 1) { - if (this.format.retainLines || this.format.compact) return; - - if (this.format.concise) { - this.space(); - return; - } - - const charBeforeNewline = this.endsWithCharAndNewline(); - if (charBeforeNewline === 10) return; - - if (charBeforeNewline === 123 || charBeforeNewline === 58) { - i--; - } - - if (i <= 0) return; - - for (let j = 0; j < i; j++) { - this._newline(); - } - } - - endsWith(char) { - return this.getLastChar() === char; - } - - getLastChar() { - return this._buf.getLastChar(); - } - - endsWithCharAndNewline() { - return this._buf.endsWithCharAndNewline(); - } - - removeTrailingNewline() { - this._buf.removeTrailingNewline(); - } - - exactSource(loc, cb) { - this._catchUp("start", loc); - - this._buf.exactSource(loc, cb); - } - - source(prop, loc) { - this._catchUp(prop, loc); - - this._buf.source(prop, loc); - } - - withSource(prop, loc, cb) { - this._catchUp(prop, loc); - - this._buf.withSource(prop, loc, cb); - } - - _space() { - this._append(" ", true); - } - - _newline() { - this._append("\n", true); - } - - _append(str, queue = false) { - this._maybeAddParen(str); - - this._maybeIndent(str); - - if (queue) this._buf.queue(str);else this._buf.append(str); - this._endsWithWord = false; - this._endsWithInteger = false; - } - - _maybeIndent(str) { - if (this._indent && this.endsWith(10) && str.charCodeAt(0) !== 10) { - this._buf.queue(this._getIndent()); - } - } - - _maybeAddParen(str) { - const parenPushNewlineState = this._parenPushNewlineState; - if (!parenPushNewlineState) return; - let i; - - for (i = 0; i < str.length && str[i] === " "; i++) continue; - - if (i === str.length) { - return; - } - - const cha = str[i]; - - if (cha !== "\n") { - if (cha !== "/" || i + 1 === str.length) { - this._parenPushNewlineState = null; - return; - } - - const chaPost = str[i + 1]; - - if (chaPost === "*") { - if (PURE_ANNOTATION_RE.test(str.slice(i + 2, str.length - 2))) { - return; - } - } else if (chaPost !== "/") { - this._parenPushNewlineState = null; - return; - } - } - - this.token("("); - this.indent(); - parenPushNewlineState.printed = true; - } - - _catchUp(prop, loc) { - if (!this.format.retainLines) return; - const pos = loc ? loc[prop] : null; - - if ((pos == null ? void 0 : pos.line) != null) { - const count = pos.line - this._buf.getCurrentLine(); - - for (let i = 0; i < count; i++) { - this._newline(); - } - } - } - - _getIndent() { - return this.format.indent.style.repeat(this._indent); - } - - startTerminatorless(isLabel = false) { - if (isLabel) { - this._noLineTerminator = true; - return null; - } else { - return this._parenPushNewlineState = { - printed: false - }; - } - } - - endTerminatorless(state) { - this._noLineTerminator = false; - - if (state != null && state.printed) { - this.dedent(); - this.newline(); - this.token(")"); - } - } - - print(node, parent) { - if (!node) return; - const oldConcise = this.format.concise; - - if (node._compact) { - this.format.concise = true; - } - - const printMethod = this[node.type]; - - if (!printMethod) { - throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node == null ? void 0 : node.constructor.name)}`); - } - - this._printStack.push(node); - - const oldInAux = this._insideAux; - this._insideAux = !node.loc; - - this._maybeAddAuxComment(this._insideAux && !oldInAux); - - let shouldPrintParens = needsParens(node, parent, this._printStack); - - if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) { - shouldPrintParens = true; - } - - if (shouldPrintParens) this.token("("); - - this._printLeadingComments(node); - - const loc = isProgram(node) || isFile(node) ? null : node.loc; - this.withSource("start", loc, () => { - printMethod.call(this, node, parent); - }); - - this._printTrailingComments(node); - - if (shouldPrintParens) this.token(")"); - - this._printStack.pop(); - - this.format.concise = oldConcise; - this._insideAux = oldInAux; - } - - _maybeAddAuxComment(enteredPositionlessNode) { - if (enteredPositionlessNode) this._printAuxBeforeComment(); - if (!this._insideAux) this._printAuxAfterComment(); - } - - _printAuxBeforeComment() { - if (this._printAuxAfterOnNextUserNode) return; - this._printAuxAfterOnNextUserNode = true; - const comment = this.format.auxiliaryCommentBefore; - - if (comment) { - this._printComment({ - type: "CommentBlock", - value: comment - }); - } - } - - _printAuxAfterComment() { - if (!this._printAuxAfterOnNextUserNode) return; - this._printAuxAfterOnNextUserNode = false; - const comment = this.format.auxiliaryCommentAfter; - - if (comment) { - this._printComment({ - type: "CommentBlock", - value: comment - }); - } - } - - getPossibleRaw(node) { - const extra = node.extra; - - if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) { - return extra.raw; - } - } - - printJoin(nodes, parent, opts = {}) { - if (!(nodes != null && nodes.length)) return; - if (opts.indent) this.indent(); - const newlineOpts = { - addNewlines: opts.addNewlines - }; - - for (let i = 0; i < nodes.length; i++) { - const node = nodes[i]; - if (!node) continue; - if (opts.statement) this._printNewline(true, node, parent, newlineOpts); - this.print(node, parent); - - if (opts.iterator) { - opts.iterator(node, i); - } - - if (opts.separator && i < nodes.length - 1) { - opts.separator.call(this); - } - - if (opts.statement) this._printNewline(false, node, parent, newlineOpts); - } - - if (opts.indent) this.dedent(); - } - - printAndIndentOnComments(node, parent) { - const indent = node.leadingComments && node.leadingComments.length > 0; - if (indent) this.indent(); - this.print(node, parent); - if (indent) this.dedent(); - } - - printBlock(parent) { - const node = parent.body; - - if (!isEmptyStatement(node)) { - this.space(); - } - - this.print(node, parent); - } - - _printTrailingComments(node) { - this._printComments(this._getComments(false, node)); - } - - _printLeadingComments(node) { - this._printComments(this._getComments(true, node), true); - } - - printInnerComments(node, indent = true) { - var _node$innerComments; - - if (!((_node$innerComments = node.innerComments) != null && _node$innerComments.length)) return; - if (indent) this.indent(); - - this._printComments(node.innerComments); - - if (indent) this.dedent(); - } - - printSequence(nodes, parent, opts = {}) { - opts.statement = true; - return this.printJoin(nodes, parent, opts); - } - - printList(items, parent, opts = {}) { - if (opts.separator == null) { - opts.separator = commaSeparator; - } - - return this.printJoin(items, parent, opts); - } - - _printNewline(leading, node, parent, opts) { - if (this.format.retainLines || this.format.compact) return; - - if (this.format.concise) { - this.space(); - return; - } - - let lines = 0; - - if (this._buf.hasContent()) { - if (!leading) lines++; - if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; - const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter; - if (needs(node, parent)) lines++; - } - - this.newline(Math.min(2, lines)); - } - - _getComments(leading, node) { - return node && (leading ? node.leadingComments : node.trailingComments) || []; - } - - _printComment(comment, skipNewLines) { - if (!this.format.shouldPrintComment(comment.value)) return; - if (comment.ignore) return; - if (this._printedComments.has(comment)) return; - - this._printedComments.add(comment); - - const isBlockComment = comment.type === "CommentBlock"; - const printNewLines = isBlockComment && !skipNewLines && !this._noLineTerminator; - if (printNewLines && this._buf.hasContent()) this.newline(1); - const lastCharCode = this.getLastChar(); - - if (lastCharCode !== 91 && lastCharCode !== 123) { - this.space(); - } - - let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`; - - if (isBlockComment && this.format.indent.adjustMultilineComment) { - var _comment$loc; - - const offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column; - - if (offset) { - const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); - val = val.replace(newlineRegex, "\n"); - } - - const indentSize = Math.max(this._getIndent().length, this.format.retainLines ? 0 : this._buf.getCurrentColumn()); - val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`); - } - - if (this.endsWith(47)) this._space(); - this.withSource("start", comment.loc, () => { - this._append(val); - }); - if (printNewLines) this.newline(1); - } - - _printComments(comments, inlinePureAnnotation) { - if (!(comments != null && comments.length)) return; - - if (inlinePureAnnotation && comments.length === 1 && PURE_ANNOTATION_RE.test(comments[0].value)) { - this._printComment(comments[0], this._buf.hasContent() && !this.endsWith(10)); - } else { - for (const comment of comments) { - this._printComment(comment); - } - } - } - - printAssertions(node) { - var _node$assertions; - - if ((_node$assertions = node.assertions) != null && _node$assertions.length) { - this.space(); - this.word("assert"); - this.space(); - this.token("{"); - this.space(); - this.printList(node.assertions, node); - this.space(); - this.token("}"); - } - } - -} - -Object.assign(Printer.prototype, generatorFunctions); -{ - Printer.prototype.Noop = function Noop() {}; -} -var _default = Printer; -exports["default"] = _default; - -function commaSeparator() { - this.token(","); - this.space(); -} - -/***/ }), - -/***/ 70826: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _sourceMap = __nccwpck_require__(45018); - -class SourceMap { - constructor(opts, code) { - this._cachedMap = void 0; - this._code = void 0; - this._opts = void 0; - this._rawMappings = void 0; - this._lastGenLine = void 0; - this._lastSourceLine = void 0; - this._lastSourceColumn = void 0; - this._cachedMap = null; - this._code = code; - this._opts = opts; - this._rawMappings = []; - } - - get() { - if (!this._cachedMap) { - const map = this._cachedMap = new _sourceMap.SourceMapGenerator({ - sourceRoot: this._opts.sourceRoot - }); - const code = this._code; - - if (typeof code === "string") { - map.setSourceContent(this._opts.sourceFileName.replace(/\\/g, "/"), code); - } else if (typeof code === "object") { - Object.keys(code).forEach(sourceFileName => { - map.setSourceContent(sourceFileName.replace(/\\/g, "/"), code[sourceFileName]); - }); - } - - this._rawMappings.forEach(mapping => map.addMapping(mapping), map); - } - - return this._cachedMap.toJSON(); - } - - getRawMappings() { - return this._rawMappings.slice(); - } - - mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) { - if (this._lastGenLine !== generatedLine && line === null) return; - - if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) { - return; - } - - this._cachedMap = null; - this._lastGenLine = generatedLine; - this._lastSourceLine = line; - this._lastSourceColumn = column; - - this._rawMappings.push({ - name: identifierName || undefined, - generated: { - line: generatedLine, - column: generatedColumn - }, - source: line == null ? undefined : (filename || this._opts.sourceFileName).replace(/\\/g, "/"), - original: line == null ? undefined : { - line: line, - column: column - } - }); - } - -} - -exports["default"] = SourceMap; - -/***/ }), - -/***/ 550: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; - -var _helperGetFunctionArity = __nccwpck_require__(93811); - -var _template = __nccwpck_require__(20153); - -var t = __nccwpck_require__(24479); - -const buildPropertyMethodAssignmentWrapper = (0, _template.default)(` - (function (FUNCTION_KEY) { - function FUNCTION_ID() { - return FUNCTION_KEY.apply(this, arguments); - } - - FUNCTION_ID.toString = function () { - return FUNCTION_KEY.toString(); - } - - return FUNCTION_ID; - })(FUNCTION) -`); -const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template.default)(` - (function (FUNCTION_KEY) { - function* FUNCTION_ID() { - return yield* FUNCTION_KEY.apply(this, arguments); - } - - FUNCTION_ID.toString = function () { - return FUNCTION_KEY.toString(); - }; - - return FUNCTION_ID; - })(FUNCTION) -`); -const visitor = { - "ReferencedIdentifier|BindingIdentifier"(path, state) { - if (path.node.name !== state.name) return; - const localDeclar = path.scope.getBindingIdentifier(state.name); - if (localDeclar !== state.outerDeclar) return; - state.selfReference = true; - path.stop(); - } - -}; - -function getNameFromLiteralId(id) { - if (t.isNullLiteral(id)) { - return "null"; - } - - if (t.isRegExpLiteral(id)) { - return `_${id.pattern}_${id.flags}`; - } - - if (t.isTemplateLiteral(id)) { - return id.quasis.map(quasi => quasi.value.raw).join(""); - } - - if (id.value !== undefined) { - return id.value + ""; - } - - return ""; -} - -function wrap(state, method, id, scope) { - if (state.selfReference) { - if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) { - scope.rename(id.name); - } else { - if (!t.isFunction(method)) return; - let build = buildPropertyMethodAssignmentWrapper; - - if (method.generator) { - build = buildGeneratorPropertyMethodAssignmentWrapper; - } - - const template = build({ - FUNCTION: method, - FUNCTION_ID: id, - FUNCTION_KEY: scope.generateUidIdentifier(id.name) - }).expression; - const params = template.callee.body.body[0].params; - - for (let i = 0, len = (0, _helperGetFunctionArity.default)(method); i < len; i++) { - params.push(scope.generateUidIdentifier("x")); - } - - return template; - } - } - - method.id = id; - scope.getProgramParent().references[id.name] = true; -} - -function visit(node, name, scope) { - const state = { - selfAssignment: false, - selfReference: false, - outerDeclar: scope.getBindingIdentifier(name), - references: [], - name: name - }; - const binding = scope.getOwnBinding(name); - - if (binding) { - if (binding.kind === "param") { - state.selfReference = true; - } else {} - } else if (state.outerDeclar || scope.hasGlobal(name)) { - scope.traverse(node, visitor, state); - } - - return state; -} - -function _default({ - node, - parent, - scope, - id -}, localBinding = false) { - if (node.id) return; - - if ((t.isObjectProperty(parent) || t.isObjectMethod(parent, { - kind: "method" - })) && (!parent.computed || t.isLiteral(parent.key))) { - id = parent.key; - } else if (t.isVariableDeclarator(parent)) { - id = parent.id; - - if (t.isIdentifier(id) && !localBinding) { - const binding = scope.parent.getBinding(id.name); - - if (binding && binding.constant && scope.getBinding(id.name) === binding) { - node.id = t.cloneNode(id); - node.id[t.NOT_LOCAL_BINDING] = true; - return; - } - } - } else if (t.isAssignmentExpression(parent, { - operator: "=" - })) { - id = parent.left; - } else if (!id) { - return; - } - - let name; - - if (id && t.isLiteral(id)) { - name = getNameFromLiteralId(id); - } else if (id && t.isIdentifier(id)) { - name = id.name; - } - - if (name === undefined) { - return; - } - - name = t.toBindingIdentifierName(name); - id = t.identifier(name); - id[t.NOT_LOCAL_BINDING] = true; - const state = visit(node, name, scope); - return wrap(state, node, id, scope) || node; -} - -/***/ }), - -/***/ 93811: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; - -var t = __nccwpck_require__(24479); - -function _default(node) { - const params = node.params; - - for (let i = 0; i < params.length; i++) { - const param = params[i]; - - if (t.isAssignmentPattern(param) || t.isRestElement(param)) { - return i; - } - } - - return params.length; -} - -/***/ }), - -/***/ 75327: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = hoistVariables; - -var t = __nccwpck_require__(24479); - -const visitor = { - Scope(path, state) { - if (state.kind === "let") path.skip(); - }, - - FunctionParent(path) { - path.skip(); - }, - - VariableDeclaration(path, state) { - if (state.kind && path.node.kind !== state.kind) return; - const nodes = []; - const declarations = path.get("declarations"); - let firstId; - - for (const declar of declarations) { - firstId = declar.node.id; - - if (declar.node.init) { - nodes.push(t.expressionStatement(t.assignmentExpression("=", declar.node.id, declar.node.init))); - } - - for (const name of Object.keys(declar.getBindingIdentifiers())) { - state.emit(t.identifier(name), name, declar.node.init !== null); - } - } - - if (path.parentPath.isFor({ - left: path.node - })) { - path.replaceWith(firstId); - } else { - path.replaceWithMultiple(nodes); - } - } - -}; - -function hoistVariables(path, emit, kind = "var") { - path.traverse(visitor, { - kind, - emit - }); -} - -/***/ }), - -/***/ 53546: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var t = __nccwpck_require__(24479); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n['default'] = e; - return Object.freeze(n); -} - -var t__namespace = /*#__PURE__*/_interopNamespace(t); - -function willPathCastToBoolean(path) { - const maybeWrapped = path; - const { - node, - parentPath - } = maybeWrapped; - - if (parentPath.isLogicalExpression()) { - const { - operator, - right - } = parentPath.node; - - if (operator === "&&" || operator === "||" || operator === "??" && node === right) { - return willPathCastToBoolean(parentPath); - } - } - - if (parentPath.isSequenceExpression()) { - const { - expressions - } = parentPath.node; - - if (expressions[expressions.length - 1] === node) { - return willPathCastToBoolean(parentPath); - } else { - return true; - } - } - - return parentPath.isConditional({ - test: node - }) || parentPath.isUnaryExpression({ - operator: "!" - }) || parentPath.isLoop({ - test: node - }); -} - -class AssignmentMemoiser { - constructor() { - this._map = void 0; - this._map = new WeakMap(); - } - - has(key) { - return this._map.has(key); - } - - get(key) { - if (!this.has(key)) return; - - const record = this._map.get(key); - - const { - value - } = record; - record.count--; - - if (record.count === 0) { - return t__namespace.assignmentExpression("=", value, key); - } - - return value; - } - - set(key, value, count) { - return this._map.set(key, { - count, - value - }); - } - -} - -function toNonOptional(path, base) { - const { - node - } = path; - - if (t__namespace.isOptionalMemberExpression(node)) { - return t__namespace.memberExpression(base, node.property, node.computed); - } - - if (path.isOptionalCallExpression()) { - const callee = path.get("callee"); - - if (path.node.optional && callee.isOptionalMemberExpression()) { - const { - object - } = callee.node; - const context = path.scope.maybeGenerateMemoised(object) || object; - callee.get("object").replaceWith(t__namespace.assignmentExpression("=", context, object)); - return t__namespace.callExpression(t__namespace.memberExpression(base, t__namespace.identifier("call")), [context, ...path.node.arguments]); - } - - return t__namespace.callExpression(base, path.node.arguments); - } - - return path.node; -} - -function isInDetachedTree(path) { - while (path) { - if (path.isProgram()) break; - const { - parentPath, - container, - listKey - } = path; - const parentNode = parentPath.node; - - if (listKey) { - if (container !== parentNode[listKey]) return true; - } else { - if (container !== parentNode) return true; - } - - path = parentPath; - } - - return false; -} - -const handle = { - memoise() {}, - - handle(member, noDocumentAll) { - const { - node, - parent, - parentPath, - scope - } = member; - - if (member.isOptionalMemberExpression()) { - if (isInDetachedTree(member)) return; - const endPath = member.find(({ - node, - parent - }) => { - if (t__namespace.isOptionalMemberExpression(parent)) { - return parent.optional || parent.object !== node; - } - - if (t__namespace.isOptionalCallExpression(parent)) { - return node !== member.node && parent.optional || parent.callee !== node; - } - - return true; - }); - - if (scope.path.isPattern()) { - endPath.replaceWith(t__namespace.callExpression(t__namespace.arrowFunctionExpression([], endPath.node), [])); - return; - } - - const willEndPathCastToBoolean = willPathCastToBoolean(endPath); - const rootParentPath = endPath.parentPath; - - if (rootParentPath.isUpdateExpression({ - argument: node - }) || rootParentPath.isAssignmentExpression({ - left: node - })) { - throw member.buildCodeFrameError(`can't handle assignment`); - } - - const isDeleteOperation = rootParentPath.isUnaryExpression({ - operator: "delete" - }); - - if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) { - throw member.buildCodeFrameError(`can't delete a private class element`); - } - - let startingOptional = member; - - for (;;) { - if (startingOptional.isOptionalMemberExpression()) { - if (startingOptional.node.optional) break; - startingOptional = startingOptional.get("object"); - continue; - } else if (startingOptional.isOptionalCallExpression()) { - if (startingOptional.node.optional) break; - startingOptional = startingOptional.get("callee"); - continue; - } - - throw new Error(`Internal error: unexpected ${startingOptional.node.type}`); - } - - const startingProp = startingOptional.isOptionalMemberExpression() ? "object" : "callee"; - const startingNode = startingOptional.node[startingProp]; - const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode); - const baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode; - const parentIsOptionalCall = parentPath.isOptionalCallExpression({ - callee: node - }); - - const isOptionalCall = parent => parentIsOptionalCall; - - const parentIsCall = parentPath.isCallExpression({ - callee: node - }); - startingOptional.replaceWith(toNonOptional(startingOptional, baseRef)); - - if (isOptionalCall()) { - if (parent.optional) { - parentPath.replaceWith(this.optionalCall(member, parent.arguments)); - } else { - parentPath.replaceWith(this.call(member, parent.arguments)); - } - } else if (parentIsCall) { - member.replaceWith(this.boundGet(member)); - } else { - member.replaceWith(this.get(member)); - } - - let regular = member.node; - - for (let current = member; current !== endPath;) { - const parentPath = current.parentPath; - - if (parentPath === endPath && isOptionalCall() && parent.optional) { - regular = parentPath.node; - break; - } - - regular = toNonOptional(parentPath, regular); - current = parentPath; - } - - let context; - const endParentPath = endPath.parentPath; - - if (t__namespace.isMemberExpression(regular) && endParentPath.isOptionalCallExpression({ - callee: endPath.node, - optional: true - })) { - const { - object - } = regular; - context = member.scope.maybeGenerateMemoised(object); - - if (context) { - regular.object = t__namespace.assignmentExpression("=", context, object); - } - } - - let replacementPath = endPath; - - if (isDeleteOperation) { - replacementPath = endParentPath; - regular = endParentPath.node; - } - - const baseMemoised = baseNeedsMemoised ? t__namespace.assignmentExpression("=", t__namespace.cloneNode(baseRef), t__namespace.cloneNode(startingNode)) : t__namespace.cloneNode(baseRef); - - if (willEndPathCastToBoolean) { - let nonNullishCheck; - - if (noDocumentAll) { - nonNullishCheck = t__namespace.binaryExpression("!=", baseMemoised, t__namespace.nullLiteral()); - } else { - nonNullishCheck = t__namespace.logicalExpression("&&", t__namespace.binaryExpression("!==", baseMemoised, t__namespace.nullLiteral()), t__namespace.binaryExpression("!==", t__namespace.cloneNode(baseRef), scope.buildUndefinedNode())); - } - - replacementPath.replaceWith(t__namespace.logicalExpression("&&", nonNullishCheck, regular)); - } else { - let nullishCheck; - - if (noDocumentAll) { - nullishCheck = t__namespace.binaryExpression("==", baseMemoised, t__namespace.nullLiteral()); - } else { - nullishCheck = t__namespace.logicalExpression("||", t__namespace.binaryExpression("===", baseMemoised, t__namespace.nullLiteral()), t__namespace.binaryExpression("===", t__namespace.cloneNode(baseRef), scope.buildUndefinedNode())); - } - - replacementPath.replaceWith(t__namespace.conditionalExpression(nullishCheck, isDeleteOperation ? t__namespace.booleanLiteral(true) : scope.buildUndefinedNode(), regular)); - } - - if (context) { - const endParent = endParentPath.node; - endParentPath.replaceWith(t__namespace.optionalCallExpression(t__namespace.optionalMemberExpression(endParent.callee, t__namespace.identifier("call"), false, true), [t__namespace.cloneNode(context), ...endParent.arguments], false)); - } - - return; - } - - if (t__namespace.isUpdateExpression(parent, { - argument: node - })) { - if (this.simpleSet) { - member.replaceWith(this.simpleSet(member)); - return; - } - - const { - operator, - prefix - } = parent; - this.memoise(member, 2); - const value = t__namespace.binaryExpression(operator[0], t__namespace.unaryExpression("+", this.get(member)), t__namespace.numericLiteral(1)); - - if (prefix) { - parentPath.replaceWith(this.set(member, value)); - } else { - const { - scope - } = member; - const ref = scope.generateUidIdentifierBasedOnNode(node); - scope.push({ - id: ref - }); - value.left = t__namespace.assignmentExpression("=", t__namespace.cloneNode(ref), value.left); - parentPath.replaceWith(t__namespace.sequenceExpression([this.set(member, value), t__namespace.cloneNode(ref)])); - } - - return; - } - - if (parentPath.isAssignmentExpression({ - left: node - })) { - if (this.simpleSet) { - member.replaceWith(this.simpleSet(member)); - return; - } - - const { - operator, - right: value - } = parentPath.node; - - if (operator === "=") { - parentPath.replaceWith(this.set(member, value)); - } else { - const operatorTrunc = operator.slice(0, -1); - - if (t__namespace.LOGICAL_OPERATORS.includes(operatorTrunc)) { - this.memoise(member, 1); - parentPath.replaceWith(t__namespace.logicalExpression(operatorTrunc, this.get(member), this.set(member, value))); - } else { - this.memoise(member, 2); - parentPath.replaceWith(this.set(member, t__namespace.binaryExpression(operatorTrunc, this.get(member), value))); - } - } - - return; - } - - if (parentPath.isCallExpression({ - callee: node - })) { - parentPath.replaceWith(this.call(member, parentPath.node.arguments)); - return; - } - - if (parentPath.isOptionalCallExpression({ - callee: node - })) { - if (scope.path.isPattern()) { - parentPath.replaceWith(t__namespace.callExpression(t__namespace.arrowFunctionExpression([], parentPath.node), [])); - return; - } - - parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments)); - return; - } - - if (parentPath.isForXStatement({ - left: node - }) || parentPath.isObjectProperty({ - value: node - }) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({ - left: node - }) && parentPath.parentPath.isObjectProperty({ - value: parent - }) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({ - left: node - }) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) { - member.replaceWith(this.destructureSet(member)); - return; - } - - if (parentPath.isTaggedTemplateExpression()) { - member.replaceWith(this.boundGet(member)); - } else { - member.replaceWith(this.get(member)); - } - } - -}; -function memberExpressionToFunctions(path, visitor, state) { - path.traverse(visitor, Object.assign({}, handle, state, { - memoiser: new AssignmentMemoiser() - })); -} - -exports["default"] = memberExpressionToFunctions; -//# sourceMappingURL=index.js.map - - -/***/ }), - -/***/ 6591: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _assert = __nccwpck_require__(39491); - -var t = __nccwpck_require__(24479); - -class ImportBuilder { - constructor(importedSource, scope, hub) { - this._statements = []; - this._resultName = null; - this._scope = null; - this._hub = null; - this._importedSource = void 0; - this._scope = scope; - this._hub = hub; - this._importedSource = importedSource; - } - - done() { - return { - statements: this._statements, - resultName: this._resultName - }; - } - - import() { - this._statements.push(t.importDeclaration([], t.stringLiteral(this._importedSource))); - - return this; - } - - require() { - this._statements.push(t.expressionStatement(t.callExpression(t.identifier("require"), [t.stringLiteral(this._importedSource)]))); - - return this; - } - - namespace(name = "namespace") { - const local = this._scope.generateUidIdentifier(name); - - const statement = this._statements[this._statements.length - 1]; - - _assert(statement.type === "ImportDeclaration"); - - _assert(statement.specifiers.length === 0); - - statement.specifiers = [t.importNamespaceSpecifier(local)]; - this._resultName = t.cloneNode(local); - return this; - } - - default(name) { - name = this._scope.generateUidIdentifier(name); - const statement = this._statements[this._statements.length - 1]; - - _assert(statement.type === "ImportDeclaration"); - - _assert(statement.specifiers.length === 0); - - statement.specifiers = [t.importDefaultSpecifier(name)]; - this._resultName = t.cloneNode(name); - return this; - } - - named(name, importName) { - if (importName === "default") return this.default(name); - name = this._scope.generateUidIdentifier(name); - const statement = this._statements[this._statements.length - 1]; - - _assert(statement.type === "ImportDeclaration"); - - _assert(statement.specifiers.length === 0); - - statement.specifiers = [t.importSpecifier(name, t.identifier(importName))]; - this._resultName = t.cloneNode(name); - return this; - } - - var(name) { - name = this._scope.generateUidIdentifier(name); - let statement = this._statements[this._statements.length - 1]; - - if (statement.type !== "ExpressionStatement") { - _assert(this._resultName); - - statement = t.expressionStatement(this._resultName); - - this._statements.push(statement); - } - - this._statements[this._statements.length - 1] = t.variableDeclaration("var", [t.variableDeclarator(name, statement.expression)]); - this._resultName = t.cloneNode(name); - return this; - } - - defaultInterop() { - return this._interop(this._hub.addHelper("interopRequireDefault")); - } - - wildcardInterop() { - return this._interop(this._hub.addHelper("interopRequireWildcard")); - } - - _interop(callee) { - const statement = this._statements[this._statements.length - 1]; - - if (statement.type === "ExpressionStatement") { - statement.expression = t.callExpression(callee, [statement.expression]); - } else if (statement.type === "VariableDeclaration") { - _assert(statement.declarations.length === 1); - - statement.declarations[0].init = t.callExpression(callee, [statement.declarations[0].init]); - } else { - _assert.fail("Unexpected type."); - } - - return this; - } - - prop(name) { - const statement = this._statements[this._statements.length - 1]; - - if (statement.type === "ExpressionStatement") { - statement.expression = t.memberExpression(statement.expression, t.identifier(name)); - } else if (statement.type === "VariableDeclaration") { - _assert(statement.declarations.length === 1); - - statement.declarations[0].init = t.memberExpression(statement.declarations[0].init, t.identifier(name)); - } else { - _assert.fail("Unexpected type:" + statement.type); - } - - return this; - } - - read(name) { - this._resultName = t.memberExpression(this._resultName, t.identifier(name)); - } - -} - -exports["default"] = ImportBuilder; - -/***/ }), - -/***/ 44872: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _assert = __nccwpck_require__(39491); - -var t = __nccwpck_require__(24479); - -var _importBuilder = __nccwpck_require__(6591); - -var _isModule = __nccwpck_require__(21719); - -class ImportInjector { - constructor(path, importedSource, opts) { - this._defaultOpts = { - importedSource: null, - importedType: "commonjs", - importedInterop: "babel", - importingInterop: "babel", - ensureLiveReference: false, - ensureNoContext: false, - importPosition: "before" - }; - const programPath = path.find(p => p.isProgram()); - this._programPath = programPath; - this._programScope = programPath.scope; - this._hub = programPath.hub; - this._defaultOpts = this._applyDefaults(importedSource, opts, true); - } - - addDefault(importedSourceIn, opts) { - return this.addNamed("default", importedSourceIn, opts); - } - - addNamed(importName, importedSourceIn, opts) { - _assert(typeof importName === "string"); - - return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName); - } - - addNamespace(importedSourceIn, opts) { - return this._generateImport(this._applyDefaults(importedSourceIn, opts), null); - } - - addSideEffect(importedSourceIn, opts) { - return this._generateImport(this._applyDefaults(importedSourceIn, opts), false); - } - - _applyDefaults(importedSource, opts, isInit = false) { - const optsList = []; - - if (typeof importedSource === "string") { - optsList.push({ - importedSource - }); - optsList.push(opts); - } else { - _assert(!opts, "Unexpected secondary arguments."); - - optsList.push(importedSource); - } - - const newOpts = Object.assign({}, this._defaultOpts); - - for (const opts of optsList) { - if (!opts) continue; - Object.keys(newOpts).forEach(key => { - if (opts[key] !== undefined) newOpts[key] = opts[key]; - }); - - if (!isInit) { - if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint; - if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist; - } - } - - return newOpts; - } - - _generateImport(opts, importName) { - const isDefault = importName === "default"; - const isNamed = !!importName && !isDefault; - const isNamespace = importName === null; - const { - importedSource, - importedType, - importedInterop, - importingInterop, - ensureLiveReference, - ensureNoContext, - nameHint, - importPosition, - blockHoist - } = opts; - let name = nameHint || importName; - const isMod = (0, _isModule.default)(this._programPath); - const isModuleForNode = isMod && importingInterop === "node"; - const isModuleForBabel = isMod && importingInterop === "babel"; - - if (importPosition === "after" && !isMod) { - throw new Error(`"importPosition": "after" is only supported in modules`); - } - - const builder = new _importBuilder.default(importedSource, this._programScope, this._hub); - - if (importedType === "es6") { - if (!isModuleForNode && !isModuleForBabel) { - throw new Error("Cannot import an ES6 module from CommonJS"); - } - - builder.import(); - - if (isNamespace) { - builder.namespace(nameHint || importedSource); - } else if (isDefault || isNamed) { - builder.named(name, importName); - } - } else if (importedType !== "commonjs") { - throw new Error(`Unexpected interopType "${importedType}"`); - } else if (importedInterop === "babel") { - if (isModuleForNode) { - name = name !== "default" ? name : importedSource; - const es6Default = `${importedSource}$es6Default`; - builder.import(); - - if (isNamespace) { - builder.default(es6Default).var(name || importedSource).wildcardInterop(); - } else if (isDefault) { - if (ensureLiveReference) { - builder.default(es6Default).var(name || importedSource).defaultInterop().read("default"); - } else { - builder.default(es6Default).var(name).defaultInterop().prop(importName); - } - } else if (isNamed) { - builder.default(es6Default).read(importName); - } - } else if (isModuleForBabel) { - builder.import(); - - if (isNamespace) { - builder.namespace(name || importedSource); - } else if (isDefault || isNamed) { - builder.named(name, importName); - } - } else { - builder.require(); - - if (isNamespace) { - builder.var(name || importedSource).wildcardInterop(); - } else if ((isDefault || isNamed) && ensureLiveReference) { - if (isDefault) { - name = name !== "default" ? name : importedSource; - builder.var(name).read(importName); - builder.defaultInterop(); - } else { - builder.var(importedSource).read(importName); - } - } else if (isDefault) { - builder.var(name).defaultInterop().prop(importName); - } else if (isNamed) { - builder.var(name).prop(importName); - } - } - } else if (importedInterop === "compiled") { - if (isModuleForNode) { - builder.import(); - - if (isNamespace) { - builder.default(name || importedSource); - } else if (isDefault || isNamed) { - builder.default(importedSource).read(name); - } - } else if (isModuleForBabel) { - builder.import(); - - if (isNamespace) { - builder.namespace(name || importedSource); - } else if (isDefault || isNamed) { - builder.named(name, importName); - } - } else { - builder.require(); - - if (isNamespace) { - builder.var(name || importedSource); - } else if (isDefault || isNamed) { - if (ensureLiveReference) { - builder.var(importedSource).read(name); - } else { - builder.prop(importName).var(name); - } - } - } - } else if (importedInterop === "uncompiled") { - if (isDefault && ensureLiveReference) { - throw new Error("No live reference for commonjs default"); - } - - if (isModuleForNode) { - builder.import(); - - if (isNamespace) { - builder.default(name || importedSource); - } else if (isDefault) { - builder.default(name); - } else if (isNamed) { - builder.default(importedSource).read(name); - } - } else if (isModuleForBabel) { - builder.import(); - - if (isNamespace) { - builder.default(name || importedSource); - } else if (isDefault) { - builder.default(name); - } else if (isNamed) { - builder.named(name, importName); - } - } else { - builder.require(); - - if (isNamespace) { - builder.var(name || importedSource); - } else if (isDefault) { - builder.var(name); - } else if (isNamed) { - if (ensureLiveReference) { - builder.var(importedSource).read(name); - } else { - builder.var(name).prop(importName); - } - } - } - } else { - throw new Error(`Unknown importedInterop "${importedInterop}".`); - } - - const { - statements, - resultName - } = builder.done(); - - this._insertStatements(statements, importPosition, blockHoist); - - if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") { - return t.sequenceExpression([t.numericLiteral(0), resultName]); - } - - return resultName; - } - - _insertStatements(statements, importPosition = "before", blockHoist = 3) { - const body = this._programPath.get("body"); - - if (importPosition === "after") { - for (let i = body.length - 1; i >= 0; i--) { - if (body[i].isImportDeclaration()) { - body[i].insertAfter(statements); - return; - } - } - } else { - statements.forEach(node => { - node._blockHoist = blockHoist; - }); - const targetPath = body.find(p => { - const val = p.node._blockHoist; - return Number.isFinite(val) && val < 4; - }); - - if (targetPath) { - targetPath.insertBefore(statements); - return; - } - } - - this._programPath.unshiftContainer("body", statements); - } - -} - -exports["default"] = ImportInjector; - -/***/ }), - -/***/ 29115: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.addDefault = addDefault; -exports.addNamed = addNamed; -exports.addNamespace = addNamespace; -exports.addSideEffect = addSideEffect; -Object.defineProperty(exports, "ImportInjector", ({ - enumerable: true, - get: function () { - return _importInjector.default; - } -})); -Object.defineProperty(exports, "isModule", ({ - enumerable: true, - get: function () { - return _isModule.default; - } -})); - -var _importInjector = __nccwpck_require__(44872); - -var _isModule = __nccwpck_require__(21719); - -function addDefault(path, importedSource, opts) { - return new _importInjector.default(path).addDefault(importedSource, opts); -} - -function addNamed(path, name, importedSource, opts) { - return new _importInjector.default(path).addNamed(name, importedSource, opts); -} - -function addNamespace(path, importedSource, opts) { - return new _importInjector.default(path).addNamespace(importedSource, opts); -} - -function addSideEffect(path, importedSource, opts) { - return new _importInjector.default(path).addSideEffect(importedSource, opts); -} - -/***/ }), - -/***/ 21719: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isModule; - -function isModule(path) { - const { - sourceType - } = path.node; - - if (sourceType !== "module" && sourceType !== "script") { - throw path.buildCodeFrameError(`Unknown sourceType "${sourceType}", cannot transform.`); - } - - return path.node.sourceType === "module"; -} - -/***/ }), - -/***/ 76829: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = getModuleName; -{ - const originalGetModuleName = getModuleName; - - exports["default"] = getModuleName = function getModuleName(rootOpts, pluginOpts) { - var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo; - - return originalGetModuleName(rootOpts, { - moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId, - moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds, - getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId, - moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot - }); - }; -} - -function getModuleName(rootOpts, pluginOpts) { - const { - filename, - filenameRelative = filename, - sourceRoot = pluginOpts.moduleRoot - } = rootOpts; - const { - moduleId, - moduleIds = !!moduleId, - getModuleId, - moduleRoot = sourceRoot - } = pluginOpts; - if (!moduleIds) return null; - - if (moduleId != null && !getModuleId) { - return moduleId; - } - - let moduleName = moduleRoot != null ? moduleRoot + "/" : ""; - - if (filenameRelative) { - const sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : ""; - moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.(\w*?)$/, ""); - } - - moduleName = moduleName.replace(/\\/g, "/"); - - if (getModuleId) { - return getModuleId(moduleName) || moduleName; - } else { - return moduleName; - } -} - -/***/ }), - -/***/ 67797: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader; -exports.ensureStatementsHoisted = ensureStatementsHoisted; -exports.wrapInterop = wrapInterop; -exports.buildNamespaceInitStatements = buildNamespaceInitStatements; -Object.defineProperty(exports, "isModule", ({ - enumerable: true, - get: function () { - return _helperModuleImports.isModule; - } -})); -Object.defineProperty(exports, "rewriteThis", ({ - enumerable: true, - get: function () { - return _rewriteThis.default; - } -})); -Object.defineProperty(exports, "hasExports", ({ - enumerable: true, - get: function () { - return _normalizeAndLoadMetadata.hasExports; - } -})); -Object.defineProperty(exports, "isSideEffectImport", ({ - enumerable: true, - get: function () { - return _normalizeAndLoadMetadata.isSideEffectImport; - } -})); -Object.defineProperty(exports, "getModuleName", ({ - enumerable: true, - get: function () { - return _getModuleName.default; - } -})); - -var _assert = __nccwpck_require__(39491); - -var t = __nccwpck_require__(24479); - -var _template = __nccwpck_require__(20153); - -var _helperModuleImports = __nccwpck_require__(29115); - -var _rewriteThis = __nccwpck_require__(51707); - -var _rewriteLiveReferences = __nccwpck_require__(54998); - -var _normalizeAndLoadMetadata = __nccwpck_require__(99485); - -var _getModuleName = __nccwpck_require__(76829); - -function rewriteModuleStatementsAndPrepareHeader(path, { - loose, - exportName, - strict, - allowTopLevelThis, - strictMode, - noInterop, - importInterop = noInterop ? "none" : "babel", - lazy, - esNamespaceOnly, - constantReexports = loose, - enumerableModuleMeta = loose, - noIncompleteNsImportDetection -}) { - (0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop); - - _assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script"); - - path.node.sourceType = "script"; - const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, { - importInterop, - initializeReexports: constantReexports, - lazy, - esNamespaceOnly - }); - - if (!allowTopLevelThis) { - (0, _rewriteThis.default)(path); - } - - (0, _rewriteLiveReferences.default)(path, meta); - - if (strictMode !== false) { - const hasStrict = path.node.directives.some(directive => { - return directive.value.value === "use strict"; - }); - - if (!hasStrict) { - path.unshiftContainer("directives", t.directive(t.directiveLiteral("use strict"))); - } - } - - const headers = []; - - if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) { - headers.push(buildESModuleHeader(meta, enumerableModuleMeta)); - } - - const nameList = buildExportNameListDeclaration(path, meta); - - if (nameList) { - meta.exportNameListName = nameList.name; - headers.push(nameList.statement); - } - - headers.push(...buildExportInitializationStatements(path, meta, constantReexports, noIncompleteNsImportDetection)); - return { - meta, - headers - }; -} - -function ensureStatementsHoisted(statements) { - statements.forEach(header => { - header._blockHoist = 3; - }); -} - -function wrapInterop(programPath, expr, type) { - if (type === "none") { - return null; - } - - if (type === "node-namespace") { - return t.callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, t.booleanLiteral(true)]); - } else if (type === "node-default") { - return null; - } - - let helper; - - if (type === "default") { - helper = "interopRequireDefault"; - } else if (type === "namespace") { - helper = "interopRequireWildcard"; - } else { - throw new Error(`Unknown interop: ${type}`); - } - - return t.callExpression(programPath.hub.addHelper(helper), [expr]); -} - -function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false) { - const statements = []; - let srcNamespace = t.identifier(sourceMetadata.name); - if (sourceMetadata.lazy) srcNamespace = t.callExpression(srcNamespace, []); - - for (const localName of sourceMetadata.importsNamespace) { - if (localName === sourceMetadata.name) continue; - statements.push(_template.default.statement`var NAME = SOURCE;`({ - NAME: localName, - SOURCE: t.cloneNode(srcNamespace) - })); - } - - if (constantReexports) { - statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true)); - } - - for (const exportName of sourceMetadata.reexportNamespace) { - statements.push((sourceMetadata.lazy ? _template.default.statement` - Object.defineProperty(EXPORTS, "NAME", { - enumerable: true, - get: function() { - return NAMESPACE; - } - }); - ` : _template.default.statement`EXPORTS.NAME = NAMESPACE;`)({ - EXPORTS: metadata.exportName, - NAME: exportName, - NAMESPACE: t.cloneNode(srcNamespace) - })); - } - - if (sourceMetadata.reexportAll) { - const statement = buildNamespaceReexport(metadata, t.cloneNode(srcNamespace), constantReexports); - statement.loc = sourceMetadata.reexportAll.loc; - statements.push(statement); - } - - return statements; -} - -const ReexportTemplate = { - constant: _template.default.statement`EXPORTS.EXPORT_NAME = NAMESPACE_IMPORT;`, - constantComputed: _template.default.statement`EXPORTS["EXPORT_NAME"] = NAMESPACE_IMPORT;`, - spec: (0, _template.default)` - Object.defineProperty(EXPORTS, "EXPORT_NAME", { - enumerable: true, - get: function() { - return NAMESPACE_IMPORT; - }, - }); - ` -}; - -const buildReexportsFromMeta = (meta, metadata, constantReexports) => { - const namespace = metadata.lazy ? t.callExpression(t.identifier(metadata.name), []) : t.identifier(metadata.name); - const { - stringSpecifiers - } = meta; - return Array.from(metadata.reexports, ([exportName, importName]) => { - let NAMESPACE_IMPORT = t.cloneNode(namespace); - - if (importName === "default" && metadata.interop === "node-default") {} else if (stringSpecifiers.has(importName)) { - NAMESPACE_IMPORT = t.memberExpression(NAMESPACE_IMPORT, t.stringLiteral(importName), true); - } else { - NAMESPACE_IMPORT = t.memberExpression(NAMESPACE_IMPORT, t.identifier(importName)); - } - - const astNodes = { - EXPORTS: meta.exportName, - EXPORT_NAME: exportName, - NAMESPACE_IMPORT - }; - - if (constantReexports || t.isIdentifier(NAMESPACE_IMPORT)) { - if (stringSpecifiers.has(exportName)) { - return ReexportTemplate.constantComputed(astNodes); - } else { - return ReexportTemplate.constant(astNodes); - } - } else { - return ReexportTemplate.spec(astNodes); - } - }); -}; - -function buildESModuleHeader(metadata, enumerableModuleMeta = false) { - return (enumerableModuleMeta ? _template.default.statement` - EXPORTS.__esModule = true; - ` : _template.default.statement` - Object.defineProperty(EXPORTS, "__esModule", { - value: true, - }); - `)({ - EXPORTS: metadata.exportName - }); -} - -function buildNamespaceReexport(metadata, namespace, constantReexports) { - return (constantReexports ? _template.default.statement` - Object.keys(NAMESPACE).forEach(function(key) { - if (key === "default" || key === "__esModule") return; - VERIFY_NAME_LIST; - if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return; - - EXPORTS[key] = NAMESPACE[key]; - }); - ` : _template.default.statement` - Object.keys(NAMESPACE).forEach(function(key) { - if (key === "default" || key === "__esModule") return; - VERIFY_NAME_LIST; - if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return; - - Object.defineProperty(EXPORTS, key, { - enumerable: true, - get: function() { - return NAMESPACE[key]; - }, - }); - }); - `)({ - NAMESPACE: namespace, - EXPORTS: metadata.exportName, - VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _template.default)` - if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return; - `({ - EXPORTS_LIST: metadata.exportNameListName - }) : null - }); -} - -function buildExportNameListDeclaration(programPath, metadata) { - const exportedVars = Object.create(null); - - for (const data of metadata.local.values()) { - for (const name of data.names) { - exportedVars[name] = true; - } - } - - let hasReexport = false; - - for (const data of metadata.source.values()) { - for (const exportName of data.reexports.keys()) { - exportedVars[exportName] = true; - } - - for (const exportName of data.reexportNamespace) { - exportedVars[exportName] = true; - } - - hasReexport = hasReexport || !!data.reexportAll; - } - - if (!hasReexport || Object.keys(exportedVars).length === 0) return null; - const name = programPath.scope.generateUidIdentifier("exportNames"); - delete exportedVars.default; - return { - name: name.name, - statement: t.variableDeclaration("var", [t.variableDeclarator(name, t.valueToNode(exportedVars))]) - }; -} - -function buildExportInitializationStatements(programPath, metadata, constantReexports = false, noIncompleteNsImportDetection = false) { - const initStatements = []; - const exportNames = []; - - for (const [localName, data] of metadata.local) { - if (data.kind === "import") {} else if (data.kind === "hoisted") { - initStatements.push(buildInitStatement(metadata, data.names, t.identifier(localName))); - } else { - exportNames.push(...data.names); - } - } - - for (const data of metadata.source.values()) { - if (!constantReexports) { - initStatements.push(...buildReexportsFromMeta(metadata, data, false)); - } - - for (const exportName of data.reexportNamespace) { - exportNames.push(exportName); - } - } - - if (!noIncompleteNsImportDetection) { - initStatements.push(...chunk(exportNames, 100).map(members => { - return buildInitStatement(metadata, members, programPath.scope.buildUndefinedNode()); - })); - } - - return initStatements; -} - -const InitTemplate = { - computed: _template.default.expression`EXPORTS["NAME"] = VALUE`, - default: _template.default.expression`EXPORTS.NAME = VALUE` -}; - -function buildInitStatement(metadata, exportNames, initExpr) { - const { - stringSpecifiers, - exportName: EXPORTS - } = metadata; - return t.expressionStatement(exportNames.reduce((acc, exportName) => { - const params = { - EXPORTS, - NAME: exportName, - VALUE: acc - }; - - if (stringSpecifiers.has(exportName)) { - return InitTemplate.computed(params); - } else { - return InitTemplate.default(params); - } - }, initExpr)); -} - -function chunk(array, size) { - const chunks = []; - - for (let i = 0; i < array.length; i += size) { - chunks.push(array.slice(i, i + size)); - } - - return chunks; -} - -/***/ }), - -/***/ 99485: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.hasExports = hasExports; -exports.isSideEffectImport = isSideEffectImport; -exports.validateImportInteropOption = validateImportInteropOption; -exports["default"] = normalizeModuleAndLoadMetadata; - -var _path = __nccwpck_require__(71017); - -var _helperValidatorIdentifier = __nccwpck_require__(49586); - -var _helperSplitExportDeclaration = __nccwpck_require__(37058); - -function hasExports(metadata) { - return metadata.hasExports; -} - -function isSideEffectImport(source) { - return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll; -} - -function validateImportInteropOption(importInterop) { - if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") { - throw new Error(`.importInterop must be one of "none", "babel", "node", or a function returning one of those values (received ${importInterop}).`); - } - - return importInterop; -} - -function resolveImportInterop(importInterop, source) { - if (typeof importInterop === "function") { - return validateImportInteropOption(importInterop(source)); - } - - return importInterop; -} - -function normalizeModuleAndLoadMetadata(programPath, exportName, { - importInterop, - initializeReexports = false, - lazy = false, - esNamespaceOnly = false -}) { - if (!exportName) { - exportName = programPath.scope.generateUidIdentifier("exports").name; - } - - const stringSpecifiers = new Set(); - nameAnonymousExports(programPath); - const { - local, - source, - hasExports - } = getModuleMetadata(programPath, { - initializeReexports, - lazy - }, stringSpecifiers); - removeModuleDeclarations(programPath); - - for (const [, metadata] of source) { - if (metadata.importsNamespace.size > 0) { - metadata.name = metadata.importsNamespace.values().next().value; - } - - const resolvedInterop = resolveImportInterop(importInterop, metadata.source); - - if (resolvedInterop === "none") { - metadata.interop = "none"; - } else if (resolvedInterop === "node" && metadata.interop === "namespace") { - metadata.interop = "node-namespace"; - } else if (resolvedInterop === "node" && metadata.interop === "default") { - metadata.interop = "node-default"; - } else if (esNamespaceOnly && metadata.interop === "namespace") { - metadata.interop = "default"; - } - } - - return { - exportName, - exportNameListName: null, - hasExports, - local, - source, - stringSpecifiers - }; -} - -function getExportSpecifierName(path, stringSpecifiers) { - if (path.isIdentifier()) { - return path.node.name; - } else if (path.isStringLiteral()) { - const stringValue = path.node.value; - - if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) { - stringSpecifiers.add(stringValue); - } - - return stringValue; - } else { - throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`); - } -} - -function assertExportSpecifier(path) { - if (path.isExportSpecifier()) { - return; - } else if (path.isExportNamespaceSpecifier()) { - throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-proposal-export-namespace-from`."); - } else { - throw path.buildCodeFrameError("Unexpected export specifier type"); - } -} - -function getModuleMetadata(programPath, { - lazy, - initializeReexports -}, stringSpecifiers) { - const localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers); - const sourceData = new Map(); - - const getData = sourceNode => { - const source = sourceNode.value; - let data = sourceData.get(source); - - if (!data) { - data = { - name: programPath.scope.generateUidIdentifier((0, _path.basename)(source, (0, _path.extname)(source))).name, - interop: "none", - loc: null, - imports: new Map(), - importsNamespace: new Set(), - reexports: new Map(), - reexportNamespace: new Set(), - reexportAll: null, - lazy: false, - source - }; - sourceData.set(source, data); - } - - return data; - }; - - let hasExports = false; - programPath.get("body").forEach(child => { - if (child.isImportDeclaration()) { - const data = getData(child.node.source); - if (!data.loc) data.loc = child.node.loc; - child.get("specifiers").forEach(spec => { - if (spec.isImportDefaultSpecifier()) { - const localName = spec.get("local").node.name; - data.imports.set(localName, "default"); - const reexport = localData.get(localName); - - if (reexport) { - localData.delete(localName); - reexport.names.forEach(name => { - data.reexports.set(name, "default"); - }); - } - } else if (spec.isImportNamespaceSpecifier()) { - const localName = spec.get("local").node.name; - data.importsNamespace.add(localName); - const reexport = localData.get(localName); - - if (reexport) { - localData.delete(localName); - reexport.names.forEach(name => { - data.reexportNamespace.add(name); - }); - } - } else if (spec.isImportSpecifier()) { - const importName = getExportSpecifierName(spec.get("imported"), stringSpecifiers); - const localName = spec.get("local").node.name; - data.imports.set(localName, importName); - const reexport = localData.get(localName); - - if (reexport) { - localData.delete(localName); - reexport.names.forEach(name => { - data.reexports.set(name, importName); - }); - } - } - }); - } else if (child.isExportAllDeclaration()) { - hasExports = true; - const data = getData(child.node.source); - if (!data.loc) data.loc = child.node.loc; - data.reexportAll = { - loc: child.node.loc - }; - } else if (child.isExportNamedDeclaration() && child.node.source) { - hasExports = true; - const data = getData(child.node.source); - if (!data.loc) data.loc = child.node.loc; - child.get("specifiers").forEach(spec => { - assertExportSpecifier(spec); - const importName = getExportSpecifierName(spec.get("local"), stringSpecifiers); - const exportName = getExportSpecifierName(spec.get("exported"), stringSpecifiers); - data.reexports.set(exportName, importName); - - if (exportName === "__esModule") { - throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".'); - } - }); - } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) { - hasExports = true; - } - }); - - for (const metadata of sourceData.values()) { - let needsDefault = false; - let needsNamed = false; - - if (metadata.importsNamespace.size > 0) { - needsDefault = true; - needsNamed = true; - } - - if (metadata.reexportAll) { - needsNamed = true; - } - - for (const importName of metadata.imports.values()) { - if (importName === "default") needsDefault = true;else needsNamed = true; - } - - for (const importName of metadata.reexports.values()) { - if (importName === "default") needsDefault = true;else needsNamed = true; - } - - if (needsDefault && needsNamed) { - metadata.interop = "namespace"; - } else if (needsDefault) { - metadata.interop = "default"; - } - } - - for (const [source, metadata] of sourceData) { - if (lazy !== false && !(isSideEffectImport(metadata) || metadata.reexportAll)) { - if (lazy === true) { - metadata.lazy = !/\./.test(source); - } else if (Array.isArray(lazy)) { - metadata.lazy = lazy.indexOf(source) !== -1; - } else if (typeof lazy === "function") { - metadata.lazy = lazy(source); - } else { - throw new Error(`.lazy must be a boolean, string array, or function`); - } - } - } - - return { - hasExports, - local: localData, - source: sourceData - }; -} - -function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) { - const bindingKindLookup = new Map(); - programPath.get("body").forEach(child => { - let kind; - - if (child.isImportDeclaration()) { - kind = "import"; - } else { - if (child.isExportDefaultDeclaration()) child = child.get("declaration"); - - if (child.isExportNamedDeclaration()) { - if (child.node.declaration) { - child = child.get("declaration"); - } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) { - child.get("specifiers").forEach(spec => { - assertExportSpecifier(spec); - bindingKindLookup.set(spec.get("local").node.name, "block"); - }); - return; - } - } - - if (child.isFunctionDeclaration()) { - kind = "hoisted"; - } else if (child.isClassDeclaration()) { - kind = "block"; - } else if (child.isVariableDeclaration({ - kind: "var" - })) { - kind = "var"; - } else if (child.isVariableDeclaration()) { - kind = "block"; - } else { - return; - } - } - - Object.keys(child.getOuterBindingIdentifiers()).forEach(name => { - bindingKindLookup.set(name, kind); - }); - }); - const localMetadata = new Map(); - - const getLocalMetadata = idPath => { - const localName = idPath.node.name; - let metadata = localMetadata.get(localName); - - if (!metadata) { - const kind = bindingKindLookup.get(localName); - - if (kind === undefined) { - throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`); - } - - metadata = { - names: [], - kind - }; - localMetadata.set(localName, metadata); - } - - return metadata; - }; - - programPath.get("body").forEach(child => { - if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) { - if (child.node.declaration) { - const declaration = child.get("declaration"); - const ids = declaration.getOuterBindingIdentifierPaths(); - Object.keys(ids).forEach(name => { - if (name === "__esModule") { - throw declaration.buildCodeFrameError('Illegal export "__esModule".'); - } - - getLocalMetadata(ids[name]).names.push(name); - }); - } else { - child.get("specifiers").forEach(spec => { - const local = spec.get("local"); - const exported = spec.get("exported"); - const localMetadata = getLocalMetadata(local); - const exportName = getExportSpecifierName(exported, stringSpecifiers); - - if (exportName === "__esModule") { - throw exported.buildCodeFrameError('Illegal export "__esModule".'); - } - - localMetadata.names.push(exportName); - }); - } - } else if (child.isExportDefaultDeclaration()) { - const declaration = child.get("declaration"); - - if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { - getLocalMetadata(declaration.get("id")).names.push("default"); - } else { - throw declaration.buildCodeFrameError("Unexpected default expression export."); - } - } - }); - return localMetadata; -} - -function nameAnonymousExports(programPath) { - programPath.get("body").forEach(child => { - if (!child.isExportDefaultDeclaration()) return; - (0, _helperSplitExportDeclaration.default)(child); - }); -} - -function removeModuleDeclarations(programPath) { - programPath.get("body").forEach(child => { - if (child.isImportDeclaration()) { - child.remove(); - } else if (child.isExportNamedDeclaration()) { - if (child.node.declaration) { - child.node.declaration._blockHoist = child.node._blockHoist; - child.replaceWith(child.node.declaration); - } else { - child.remove(); - } - } else if (child.isExportDefaultDeclaration()) { - const declaration = child.get("declaration"); - - if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { - declaration._blockHoist = child.node._blockHoist; - child.replaceWith(declaration); - } else { - throw declaration.buildCodeFrameError("Unexpected default expression export."); - } - } else if (child.isExportAllDeclaration()) { - child.remove(); - } - }); -} - -/***/ }), - -/***/ 54998: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rewriteLiveReferences; - -var _assert = __nccwpck_require__(39491); - -var t = __nccwpck_require__(24479); - -var _template = __nccwpck_require__(20153); - -var _helperSimpleAccess = __nccwpck_require__(76256); - -function rewriteLiveReferences(programPath, metadata) { - const imported = new Map(); - const exported = new Map(); - - const requeueInParent = path => { - programPath.requeue(path); - }; - - for (const [source, data] of metadata.source) { - for (const [localName, importName] of data.imports) { - imported.set(localName, [source, importName, null]); - } - - for (const localName of data.importsNamespace) { - imported.set(localName, [source, null, localName]); - } - } - - for (const [local, data] of metadata.local) { - let exportMeta = exported.get(local); - - if (!exportMeta) { - exportMeta = []; - exported.set(local, exportMeta); - } - - exportMeta.push(...data.names); - } - - const rewriteBindingInitVisitorState = { - metadata, - requeueInParent, - scope: programPath.scope, - exported - }; - programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState); - (0, _helperSimpleAccess.default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())])); - const rewriteReferencesVisitorState = { - seen: new WeakSet(), - metadata, - requeueInParent, - scope: programPath.scope, - imported, - exported, - buildImportReference: ([source, importName, localName], identNode) => { - const meta = metadata.source.get(source); - - if (localName) { - if (meta.lazy) identNode = t.callExpression(identNode, []); - return identNode; - } - - let namespace = t.identifier(meta.name); - if (meta.lazy) namespace = t.callExpression(namespace, []); - - if (importName === "default" && meta.interop === "node-default") { - return namespace; - } - - const computed = metadata.stringSpecifiers.has(importName); - return t.memberExpression(namespace, computed ? t.stringLiteral(importName) : t.identifier(importName), computed); - } - }; - programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState); -} - -const rewriteBindingInitVisitor = { - Scope(path) { - path.skip(); - }, - - ClassDeclaration(path) { - const { - requeueInParent, - exported, - metadata - } = this; - const { - id - } = path.node; - if (!id) throw new Error("Expected class to have a name"); - const localName = id.name; - const exportNames = exported.get(localName) || []; - - if (exportNames.length > 0) { - const statement = t.expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, t.identifier(localName))); - statement._blockHoist = path.node._blockHoist; - requeueInParent(path.insertAfter(statement)[0]); - } - }, - - VariableDeclaration(path) { - const { - requeueInParent, - exported, - metadata - } = this; - Object.keys(path.getOuterBindingIdentifiers()).forEach(localName => { - const exportNames = exported.get(localName) || []; - - if (exportNames.length > 0) { - const statement = t.expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, t.identifier(localName))); - statement._blockHoist = path.node._blockHoist; - requeueInParent(path.insertAfter(statement)[0]); - } - }); - } - -}; - -const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr) => { - return (exportNames || []).reduce((expr, exportName) => { - const { - stringSpecifiers - } = metadata; - const computed = stringSpecifiers.has(exportName); - return t.assignmentExpression("=", t.memberExpression(t.identifier(metadata.exportName), computed ? t.stringLiteral(exportName) : t.identifier(exportName), computed), expr); - }, localExpr); -}; - -const buildImportThrow = localName => { - return _template.default.expression.ast` - (function() { - throw new Error('"' + '${localName}' + '" is read-only.'); - })() - `; -}; - -const rewriteReferencesVisitor = { - ReferencedIdentifier(path) { - const { - seen, - buildImportReference, - scope, - imported, - requeueInParent - } = this; - if (seen.has(path.node)) return; - seen.add(path.node); - const localName = path.node.name; - const importData = imported.get(localName); - - if (importData) { - const localBinding = path.scope.getBinding(localName); - const rootBinding = scope.getBinding(localName); - if (rootBinding !== localBinding) return; - const ref = buildImportReference(importData, path.node); - ref.loc = path.node.loc; - - if ((path.parentPath.isCallExpression({ - callee: path.node - }) || path.parentPath.isOptionalCallExpression({ - callee: path.node - }) || path.parentPath.isTaggedTemplateExpression({ - tag: path.node - })) && t.isMemberExpression(ref)) { - path.replaceWith(t.sequenceExpression([t.numericLiteral(0), ref])); - } else if (path.isJSXIdentifier() && t.isMemberExpression(ref)) { - const { - object, - property - } = ref; - path.replaceWith(t.jsxMemberExpression(t.jsxIdentifier(object.name), t.jsxIdentifier(property.name))); - } else { - path.replaceWith(ref); - } - - requeueInParent(path); - path.skip(); - } - }, - - AssignmentExpression: { - exit(path) { - const { - scope, - seen, - imported, - exported, - requeueInParent, - buildImportReference - } = this; - if (seen.has(path.node)) return; - seen.add(path.node); - const left = path.get("left"); - if (left.isMemberExpression()) return; - - if (left.isIdentifier()) { - const localName = left.node.name; - - if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { - return; - } - - const exportedNames = exported.get(localName); - const importData = imported.get(localName); - - if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) { - _assert(path.node.operator === "=", "Path was not simplified"); - - const assignment = path.node; - - if (importData) { - assignment.left = buildImportReference(importData, assignment.left); - assignment.right = t.sequenceExpression([assignment.right, buildImportThrow(localName)]); - } - - path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment)); - requeueInParent(path); - } - } else { - const ids = left.getOuterBindingIdentifiers(); - const programScopeIds = Object.keys(ids).filter(localName => scope.getBinding(localName) === path.scope.getBinding(localName)); - const id = programScopeIds.find(localName => imported.has(localName)); - - if (id) { - path.node.right = t.sequenceExpression([path.node.right, buildImportThrow(id)]); - } - - const items = []; - programScopeIds.forEach(localName => { - const exportedNames = exported.get(localName) || []; - - if (exportedNames.length > 0) { - items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, t.identifier(localName))); - } - }); - - if (items.length > 0) { - let node = t.sequenceExpression(items); - - if (path.parentPath.isExpressionStatement()) { - node = t.expressionStatement(node); - node._blockHoist = path.parentPath.node._blockHoist; - } - - const statement = path.insertAfter(node)[0]; - requeueInParent(statement); - } - } - } - - }, - - "ForOfStatement|ForInStatement"(path) { - const { - scope, - node - } = path; - const { - left - } = node; - const { - exported, - imported, - scope: programScope - } = this; - - if (!t.isVariableDeclaration(left)) { - let didTransformExport = false, - importConstViolationName; - const loopBodyScope = path.get("body").scope; - - for (const name of Object.keys(t.getOuterBindingIdentifiers(left))) { - if (programScope.getBinding(name) === scope.getBinding(name)) { - if (exported.has(name)) { - didTransformExport = true; - - if (loopBodyScope.hasOwnBinding(name)) { - loopBodyScope.rename(name); - } - } - - if (imported.has(name) && !importConstViolationName) { - importConstViolationName = name; - } - } - } - - if (!didTransformExport && !importConstViolationName) { - return; - } - - path.ensureBlock(); - const bodyPath = path.get("body"); - const newLoopId = scope.generateUidIdentifierBasedOnNode(left); - path.get("left").replaceWith(t.variableDeclaration("let", [t.variableDeclarator(t.cloneNode(newLoopId))])); - scope.registerDeclaration(path.get("left")); - - if (didTransformExport) { - bodyPath.unshiftContainer("body", t.expressionStatement(t.assignmentExpression("=", left, newLoopId))); - } - - if (importConstViolationName) { - bodyPath.unshiftContainer("body", t.expressionStatement(buildImportThrow(importConstViolationName))); - } - } - } - -}; - -/***/ }), - -/***/ 51707: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rewriteThis; - -var _helperReplaceSupers = __nccwpck_require__(86833); - -var _traverse = __nccwpck_require__(8631); - -var t = __nccwpck_require__(24479); - -function rewriteThis(programPath) { - (0, _traverse.default)(programPath.node, Object.assign({}, rewriteThisVisitor, { - noScope: true - })); -} - -const rewriteThisVisitor = _traverse.default.visitors.merge([_helperReplaceSupers.environmentVisitor, { - ThisExpression(path) { - path.replaceWith(t.unaryExpression("void", t.numericLiteral(0), true)); - } - -}]); - -/***/ }), - -/***/ 86721: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = optimiseCallExpression; - -var t = __nccwpck_require__(24479); - -function optimiseCallExpression(callee, thisNode, args, optional) { - if (args.length === 1 && t.isSpreadElement(args[0]) && t.isIdentifier(args[0].argument, { - name: "arguments" - })) { - if (optional) { - return t.optionalCallExpression(t.optionalMemberExpression(callee, t.identifier("apply"), false, true), [thisNode, args[0].argument], false); - } - - return t.callExpression(t.memberExpression(callee, t.identifier("apply")), [thisNode, args[0].argument]); - } else { - if (optional) { - return t.optionalCallExpression(t.optionalMemberExpression(callee, t.identifier("call"), false, true), [thisNode, ...args], false); - } - - return t.callExpression(t.memberExpression(callee, t.identifier("call")), [thisNode, ...args]); - } -} - -/***/ }), - -/***/ 29055: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.declare = declare; - -function declare(builder) { - return (api, options, dirname) => { - if (!api.assertVersion) { - api = Object.assign(copyApiObject(api), { - assertVersion(range) { - throwVersionError(range, api.version); - } - - }); - } - - return builder(api, options || {}, dirname); - }; -} - -function copyApiObject(api) { - let proto = null; - - if (typeof api.version === "string" && /^7\./.test(api.version)) { - proto = Object.getPrototypeOf(api); - - if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) { - proto = null; - } - } - - return Object.assign({}, proto, api); -} - -function has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function throwVersionError(range, version) { - if (typeof range === "number") { - if (!Number.isInteger(range)) { - throw new Error("Expected string or integer value."); - } - - range = `^${range}.0.0-0`; - } - - if (typeof range !== "string") { - throw new Error("Expected string or integer value."); - } - - const limit = Error.stackTraceLimit; - - if (typeof limit === "number" && limit < 25) { - Error.stackTraceLimit = 25; - } - - let err; - - if (version.slice(0, 2) === "7.") { - err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); - } else { - err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); - } - - if (typeof limit === "number") { - Error.stackTraceLimit = limit; - } - - throw Object.assign(err, { - code: "BABEL_VERSION_UNSUPPORTED", - version, - range - }); -} - -/***/ }), - -/***/ 86833: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.skipAllButComputedKey = skipAllButComputedKey; -exports["default"] = exports.environmentVisitor = void 0; - -var _traverse = __nccwpck_require__(8631); - -var _helperMemberExpressionToFunctions = __nccwpck_require__(53546); - -var _helperOptimiseCallExpression = __nccwpck_require__(86721); - -var t = __nccwpck_require__(24479); - -function getPrototypeOfExpression(objectRef, isStatic, file, isPrivateMethod) { - objectRef = t.cloneNode(objectRef); - const targetRef = isStatic || isPrivateMethod ? objectRef : t.memberExpression(objectRef, t.identifier("prototype")); - return t.callExpression(file.addHelper("getPrototypeOf"), [targetRef]); -} - -function skipAllButComputedKey(path) { - if (!path.node.computed) { - path.skip(); - return; - } - - const keys = t.VISITOR_KEYS[path.type]; - - for (const key of keys) { - if (key !== "key") path.skipKey(key); - } -} - -const environmentVisitor = { - [`${t.staticBlock ? "StaticBlock|" : ""}ClassPrivateProperty|TypeAnnotation`](path) { - path.skip(); - }, - - Function(path) { - if (path.isMethod()) return; - if (path.isArrowFunctionExpression()) return; - path.skip(); - }, - - "Method|ClassProperty"(path) { - skipAllButComputedKey(path); - } - -}; -exports.environmentVisitor = environmentVisitor; - -const visitor = _traverse.default.visitors.merge([environmentVisitor, { - Super(path, state) { - const { - node, - parentPath - } = path; - if (!parentPath.isMemberExpression({ - object: node - })) return; - state.handle(parentPath); - } - -}]); - -const unshadowSuperBindingVisitor = _traverse.default.visitors.merge([environmentVisitor, { - Scopable(path, { - refName - }) { - const binding = path.scope.getOwnBinding(refName); - - if (binding && binding.identifier.name === refName) { - path.scope.rename(refName); - } - } - -}]); - -const specHandlers = { - memoise(superMember, count) { - const { - scope, - node - } = superMember; - const { - computed, - property - } = node; - - if (!computed) { - return; - } - - const memo = scope.maybeGenerateMemoised(property); - - if (!memo) { - return; - } - - this.memoiser.set(property, memo, count); - }, - - prop(superMember) { - const { - computed, - property - } = superMember.node; - - if (this.memoiser.has(property)) { - return t.cloneNode(this.memoiser.get(property)); - } - - if (computed) { - return t.cloneNode(property); - } - - return t.stringLiteral(property.name); - }, - - get(superMember) { - return this._get(superMember, this._getThisRefs()); - }, - - _get(superMember, thisRefs) { - const proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod); - return t.callExpression(this.file.addHelper("get"), [thisRefs.memo ? t.sequenceExpression([thisRefs.memo, proto]) : proto, this.prop(superMember), thisRefs.this]); - }, - - _getThisRefs() { - if (!this.isDerivedConstructor) { - return { - this: t.thisExpression() - }; - } - - const thisRef = this.scope.generateDeclaredUidIdentifier("thisSuper"); - return { - memo: t.assignmentExpression("=", thisRef, t.thisExpression()), - this: t.cloneNode(thisRef) - }; - }, - - set(superMember, value) { - const thisRefs = this._getThisRefs(); - - const proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod); - return t.callExpression(this.file.addHelper("set"), [thisRefs.memo ? t.sequenceExpression([thisRefs.memo, proto]) : proto, this.prop(superMember), value, thisRefs.this, t.booleanLiteral(superMember.isInStrictMode())]); - }, - - destructureSet(superMember) { - throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`); - }, - - call(superMember, args) { - const thisRefs = this._getThisRefs(); - - return (0, _helperOptimiseCallExpression.default)(this._get(superMember, thisRefs), t.cloneNode(thisRefs.this), args, false); - }, - - optionalCall(superMember, args) { - const thisRefs = this._getThisRefs(); - - return (0, _helperOptimiseCallExpression.default)(this._get(superMember, thisRefs), t.cloneNode(thisRefs.this), args, true); - } - -}; -const looseHandlers = Object.assign({}, specHandlers, { - prop(superMember) { - const { - property - } = superMember.node; - - if (this.memoiser.has(property)) { - return t.cloneNode(this.memoiser.get(property)); - } - - return t.cloneNode(property); - }, - - get(superMember) { - const { - isStatic, - getSuperRef - } = this; - const { - computed - } = superMember.node; - const prop = this.prop(superMember); - let object; - - if (isStatic) { - var _getSuperRef; - - object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : t.memberExpression(t.identifier("Function"), t.identifier("prototype")); - } else { - var _getSuperRef2; - - object = t.memberExpression((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : t.identifier("Object"), t.identifier("prototype")); - } - - return t.memberExpression(object, prop, computed); - }, - - set(superMember, value) { - const { - computed - } = superMember.node; - const prop = this.prop(superMember); - return t.assignmentExpression("=", t.memberExpression(t.thisExpression(), prop, computed), value); - }, - - destructureSet(superMember) { - const { - computed - } = superMember.node; - const prop = this.prop(superMember); - return t.memberExpression(t.thisExpression(), prop, computed); - }, - - call(superMember, args) { - return (0, _helperOptimiseCallExpression.default)(this.get(superMember), t.thisExpression(), args, false); - }, - - optionalCall(superMember, args) { - return (0, _helperOptimiseCallExpression.default)(this.get(superMember), t.thisExpression(), args, true); - } - -}); - -class ReplaceSupers { - constructor(opts) { - var _opts$constantSuper; - - const path = opts.methodPath; - this.methodPath = path; - this.isDerivedConstructor = path.isClassMethod({ - kind: "constructor" - }) && !!opts.superRef; - this.isStatic = path.isObjectMethod() || path.node.static || (path.isStaticBlock == null ? void 0 : path.isStaticBlock()); - this.isPrivateMethod = path.isPrivate() && path.isMethod(); - this.file = opts.file; - this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose; - this.opts = opts; - } - - getObjectRef() { - return t.cloneNode(this.opts.objectRef || this.opts.getObjectRef()); - } - - getSuperRef() { - if (this.opts.superRef) return t.cloneNode(this.opts.superRef); - if (this.opts.getSuperRef) return t.cloneNode(this.opts.getSuperRef()); - } - - replace() { - if (this.opts.refToPreserve) { - this.methodPath.traverse(unshadowSuperBindingVisitor, { - refName: this.opts.refToPreserve.name - }); - } - - const handler = this.constantSuper ? looseHandlers : specHandlers; - (0, _helperMemberExpressionToFunctions.default)(this.methodPath, visitor, Object.assign({ - file: this.file, - scope: this.methodPath.scope, - isDerivedConstructor: this.isDerivedConstructor, - isStatic: this.isStatic, - isPrivateMethod: this.isPrivateMethod, - getObjectRef: this.getObjectRef.bind(this), - getSuperRef: this.getSuperRef.bind(this), - boundGet: handler.get - }, handler)); - } - -} - -exports["default"] = ReplaceSupers; - -/***/ }), - -/***/ 76256: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = simplifyAccess; - -var t = __nccwpck_require__(24479); - -function simplifyAccess(path, bindingNames) { - path.traverse(simpleAssignmentVisitor, { - scope: path.scope, - bindingNames, - seen: new WeakSet() - }); -} - -const simpleAssignmentVisitor = { - UpdateExpression: { - exit(path) { - const { - scope, - bindingNames - } = this; - const arg = path.get("argument"); - if (!arg.isIdentifier()) return; - const localName = arg.node.name; - if (!bindingNames.has(localName)) return; - - if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { - return; - } - - if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) { - const operator = path.node.operator == "++" ? "+=" : "-="; - path.replaceWith(t.assignmentExpression(operator, arg.node, t.numericLiteral(1))); - } else if (path.node.prefix) { - path.replaceWith(t.assignmentExpression("=", t.identifier(localName), t.binaryExpression(path.node.operator[0], t.unaryExpression("+", arg.node), t.numericLiteral(1)))); - } else { - const old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old"); - const varName = old.name; - path.scope.push({ - id: old - }); - const binary = t.binaryExpression(path.node.operator[0], t.identifier(varName), t.numericLiteral(1)); - path.replaceWith(t.sequenceExpression([t.assignmentExpression("=", t.identifier(varName), t.unaryExpression("+", arg.node)), t.assignmentExpression("=", t.cloneNode(arg.node), binary), t.identifier(varName)])); - } - } - - }, - AssignmentExpression: { - exit(path) { - const { - scope, - seen, - bindingNames - } = this; - if (path.node.operator === "=") return; - if (seen.has(path.node)) return; - seen.add(path.node); - const left = path.get("left"); - if (!left.isIdentifier()) return; - const localName = left.node.name; - if (!bindingNames.has(localName)) return; - - if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { - return; - } - - const operator = path.node.operator.slice(0, -1); - - if (t.LOGICAL_OPERATORS.includes(operator)) { - path.replaceWith(t.logicalExpression(operator, path.node.left, t.assignmentExpression("=", t.cloneNode(path.node.left), path.node.right))); - } else { - path.node.right = t.binaryExpression(operator, t.cloneNode(path.node.left), path.node.right); - path.node.operator = "="; - } - } - - } -}; - -/***/ }), - -/***/ 37058: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = splitExportDeclaration; - -var t = __nccwpck_require__(24479); - -function splitExportDeclaration(exportDeclaration) { - if (!exportDeclaration.isExportDeclaration()) { - throw new Error("Only export declarations can be split."); - } - - const isDefault = exportDeclaration.isExportDefaultDeclaration(); - const declaration = exportDeclaration.get("declaration"); - const isClassDeclaration = declaration.isClassDeclaration(); - - if (isDefault) { - const standaloneDeclaration = declaration.isFunctionDeclaration() || isClassDeclaration; - const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope; - let id = declaration.node.id; - let needBindingRegistration = false; - - if (!id) { - needBindingRegistration = true; - id = scope.generateUidIdentifier("default"); - - if (standaloneDeclaration || declaration.isFunctionExpression() || declaration.isClassExpression()) { - declaration.node.id = t.cloneNode(id); - } - } - - const updatedDeclaration = standaloneDeclaration ? declaration : t.variableDeclaration("var", [t.variableDeclarator(t.cloneNode(id), declaration.node)]); - const updatedExportDeclaration = t.exportNamedDeclaration(null, [t.exportSpecifier(t.cloneNode(id), t.identifier("default"))]); - exportDeclaration.insertAfter(updatedExportDeclaration); - exportDeclaration.replaceWith(updatedDeclaration); - - if (needBindingRegistration) { - scope.registerDeclaration(exportDeclaration); - } - - return exportDeclaration; - } - - if (exportDeclaration.get("specifiers").length > 0) { - throw new Error("It doesn't make sense to split exported specifiers."); - } - - const bindingIdentifiers = declaration.getOuterBindingIdentifiers(); - const specifiers = Object.keys(bindingIdentifiers).map(name => { - return t.exportSpecifier(t.identifier(name), t.identifier(name)); - }); - const aliasDeclar = t.exportNamedDeclaration(null, specifiers); - exportDeclaration.insertAfter(aliasDeclar); - exportDeclaration.replaceWith(declaration.node); - return exportDeclaration; -} - -/***/ }), - -/***/ 39115: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isIdentifierStart = isIdentifierStart; -exports.isIdentifierChar = isIdentifierChar; -exports.isIdentifierName = isIdentifierName; -let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; -const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); -nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; -const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; -const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; - -function isInAstralSet(code, set) { - let pos = 0x10000; - - for (let i = 0, length = set.length; i < length; i += 2) { - pos += set[i]; - if (pos > code) return false; - pos += set[i + 1]; - if (pos >= code) return true; - } - - return false; -} - -function isIdentifierStart(code) { - if (code < 65) return code === 36; - if (code <= 90) return true; - if (code < 97) return code === 95; - if (code <= 122) return true; - - if (code <= 0xffff) { - return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); - } - - return isInAstralSet(code, astralIdentifierStartCodes); -} - -function isIdentifierChar(code) { - if (code < 48) return code === 36; - if (code < 58) return true; - if (code < 65) return false; - if (code <= 90) return true; - if (code < 97) return code === 95; - if (code <= 122) return true; - - if (code <= 0xffff) { - return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); - } - - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); -} - -function isIdentifierName(name) { - let isFirst = true; - - for (let i = 0; i < name.length; i++) { - let cp = name.charCodeAt(i); - - if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { - const trail = name.charCodeAt(++i); - - if ((trail & 0xfc00) === 0xdc00) { - cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); - } - } - - if (isFirst) { - isFirst = false; - - if (!isIdentifierStart(cp)) { - return false; - } - } else if (!isIdentifierChar(cp)) { - return false; - } - } - - return !isFirst; -} - -/***/ }), - -/***/ 49586: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "isIdentifierName", ({ - enumerable: true, - get: function () { - return _identifier.isIdentifierName; - } -})); -Object.defineProperty(exports, "isIdentifierChar", ({ - enumerable: true, - get: function () { - return _identifier.isIdentifierChar; - } -})); -Object.defineProperty(exports, "isIdentifierStart", ({ - enumerable: true, - get: function () { - return _identifier.isIdentifierStart; - } -})); -Object.defineProperty(exports, "isReservedWord", ({ - enumerable: true, - get: function () { - return _keyword.isReservedWord; - } -})); -Object.defineProperty(exports, "isStrictBindOnlyReservedWord", ({ - enumerable: true, - get: function () { - return _keyword.isStrictBindOnlyReservedWord; - } -})); -Object.defineProperty(exports, "isStrictBindReservedWord", ({ - enumerable: true, - get: function () { - return _keyword.isStrictBindReservedWord; - } -})); -Object.defineProperty(exports, "isStrictReservedWord", ({ - enumerable: true, - get: function () { - return _keyword.isStrictReservedWord; - } -})); -Object.defineProperty(exports, "isKeyword", ({ - enumerable: true, - get: function () { - return _keyword.isKeyword; - } -})); - -var _identifier = __nccwpck_require__(39115); - -var _keyword = __nccwpck_require__(5390); - -/***/ }), - -/***/ 5390: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isReservedWord = isReservedWord; -exports.isStrictReservedWord = isStrictReservedWord; -exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; -exports.isStrictBindReservedWord = isStrictBindReservedWord; -exports.isKeyword = isKeyword; -const reservedWords = { - keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], - strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], - strictBind: ["eval", "arguments"] -}; -const keywords = new Set(reservedWords.keyword); -const reservedWordsStrictSet = new Set(reservedWords.strict); -const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); - -function isReservedWord(word, inModule) { - return inModule && word === "await" || word === "enum"; -} - -function isStrictReservedWord(word, inModule) { - return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); -} - -function isStrictBindOnlyReservedWord(word) { - return reservedWordsStrictBindSet.has(word); -} - -function isStrictBindReservedWord(word, inModule) { - return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); -} - -function isKeyword(word) { - return keywords.has(word); -} - -/***/ }), - -/***/ 79164: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.wrapRegExp = exports["typeof"] = exports.objectSpread2 = exports.jsx = void 0; - -var _template = __nccwpck_require__(20153); - -const jsx = { - minVersion: "7.0.0-beta.0", - ast: () => _template.default.program.ast('\nvar REACT_ELEMENT_TYPE;\nexport default function _createRawReactElement(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === "function" &&\n \n Symbol["for"] &&\n Symbol["for"]("react.element")) ||\n 0xeac7;\n }\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n if (!props && childrenLength !== 0) {\n \n \n props = { children: void 0 };\n }\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : "" + key,\n ref: null,\n props: props,\n _owner: null,\n };\n}\n') -}; -exports.jsx = jsx; -const objectSpread2 = { - minVersion: "7.5.0", - ast: () => _template.default.program.ast('\nimport defineProperty from "defineProperty";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n }\n return target;\n}\n') -}; -exports.objectSpread2 = objectSpread2; -const _typeof = { - minVersion: "7.0.0-beta.0", - ast: () => _template.default.program.ast('\nexport default function _typeof(obj) {\n "@babel/helpers - typeof";\n if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj &&\n typeof Symbol === "function" &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? "symbol"\n : typeof obj;\n };\n }\n return _typeof(obj);\n}\n') -}; -exports["typeof"] = _typeof; -const wrapRegExp = { - minVersion: "7.2.6", - ast: () => _template.default.program.ast('\nimport setPrototypeOf from "setPrototypeOf";\nimport inherits from "inherits";\nexport default function _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, undefined, groups);\n };\n var _super = RegExp.prototype;\n var _groups = new WeakMap();\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n \n _groups.set(_this, groups || _groups.get(re));\n return setPrototypeOf(_this, BabelRegExp.prototype);\n }\n inherits(BabelRegExp, RegExp);\n BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (typeof substitution === "string") {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return "$" + groups[name];\n })\n );\n } else if (typeof substitution === "function") {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n \n if (typeof args[args.length - 1] !== "object") {\n args = [].slice.call(args);\n args.push(buildGroups(args, _this));\n }\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n function buildGroups(result, re) {\n \n \n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n return _wrapRegExp.apply(this, arguments);\n}\n') -}; -exports.wrapRegExp = wrapRegExp; - -/***/ }), - -/***/ 14981: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _template = __nccwpck_require__(20153); - -var generated = __nccwpck_require__(79164); - -const helpers = Object.assign({ - __proto__: null -}, generated); -var _default = helpers; -exports["default"] = _default; - -const helper = minVersion => tpl => ({ - minVersion, - ast: () => _template.default.program.ast(tpl) -}); - -helpers.asyncIterator = helper("7.0.0-beta.0")` - export default function _asyncIterator(iterable) { - var method; - if (typeof Symbol !== "undefined") { - if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator]; - if (method == null && Symbol.iterator) method = iterable[Symbol.iterator]; - } - if (method == null) method = iterable["@@asyncIterator"]; - if (method == null) method = iterable["@@iterator"] - if (method == null) throw new TypeError("Object is not async iterable"); - return method.call(iterable); - } -`; -helpers.AwaitValue = helper("7.0.0-beta.0")` - export default function _AwaitValue(value) { - this.wrapped = value; - } -`; -helpers.AsyncGenerator = helper("7.0.0-beta.0")` - import AwaitValue from "AwaitValue"; - - export default function AsyncGenerator(gen) { - var front, back; - - function send(key, arg) { - return new Promise(function (resolve, reject) { - var request = { - key: key, - arg: arg, - resolve: resolve, - reject: reject, - next: null, - }; - - if (back) { - back = back.next = request; - } else { - front = back = request; - resume(key, arg); - } - }); - } - - function resume(key, arg) { - try { - var result = gen[key](arg) - var value = result.value; - var wrappedAwait = value instanceof AwaitValue; - - Promise.resolve(wrappedAwait ? value.wrapped : value).then( - function (arg) { - if (wrappedAwait) { - resume(key === "return" ? "return" : "next", arg); - return - } - - settle(result.done ? "return" : "normal", arg); - }, - function (err) { resume("throw", err); }); - } catch (err) { - settle("throw", err); - } - } - - function settle(type, value) { - switch (type) { - case "return": - front.resolve({ value: value, done: true }); - break; - case "throw": - front.reject(value); - break; - default: - front.resolve({ value: value, done: false }); - break; - } - - front = front.next; - if (front) { - resume(front.key, front.arg); - } else { - back = null; - } - } - - this._invoke = send; - - // Hide "return" method if generator return is not supported - if (typeof gen.return !== "function") { - this.return = undefined; - } - } - - AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; }; - - AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; - AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; - AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; -`; -helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")` - import AsyncGenerator from "AsyncGenerator"; - - export default function _wrapAsyncGenerator(fn) { - return function () { - return new AsyncGenerator(fn.apply(this, arguments)); - }; - } -`; -helpers.awaitAsyncGenerator = helper("7.0.0-beta.0")` - import AwaitValue from "AwaitValue"; - - export default function _awaitAsyncGenerator(value) { - return new AwaitValue(value); - } -`; -helpers.asyncGeneratorDelegate = helper("7.0.0-beta.0")` - export default function _asyncGeneratorDelegate(inner, awaitWrap) { - var iter = {}, waiting = false; - - function pump(key, value) { - waiting = true; - value = new Promise(function (resolve) { resolve(inner[key](value)); }); - return { done: false, value: awaitWrap(value) }; - }; - - iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () { return this; }; - - iter.next = function (value) { - if (waiting) { - waiting = false; - return value; - } - return pump("next", value); - }; - - if (typeof inner.throw === "function") { - iter.throw = function (value) { - if (waiting) { - waiting = false; - throw value; - } - return pump("throw", value); - }; - } - - if (typeof inner.return === "function") { - iter.return = function (value) { - if (waiting) { - waiting = false; - return value; - } - return pump("return", value); - }; - } - - return iter; - } -`; -helpers.asyncToGenerator = helper("7.0.0-beta.0")` - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - - export default function _asyncToGenerator(fn) { - return function () { - var self = this, args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - - _next(undefined); - }); - }; - } -`; -helpers.classCallCheck = helper("7.0.0-beta.0")` - export default function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } -`; -helpers.createClass = helper("7.0.0-beta.0")` - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i ++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - export default function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } -`; -helpers.defineEnumerableProperties = helper("7.0.0-beta.0")` - export default function _defineEnumerableProperties(obj, descs) { - for (var key in descs) { - var desc = descs[key]; - desc.configurable = desc.enumerable = true; - if ("value" in desc) desc.writable = true; - Object.defineProperty(obj, key, desc); - } - - // Symbols are not enumerated over by for-in loops. If native - // Symbols are available, fetch all of the descs object's own - // symbol properties and define them on our target object too. - if (Object.getOwnPropertySymbols) { - var objectSymbols = Object.getOwnPropertySymbols(descs); - for (var i = 0; i < objectSymbols.length; i++) { - var sym = objectSymbols[i]; - var desc = descs[sym]; - desc.configurable = desc.enumerable = true; - if ("value" in desc) desc.writable = true; - Object.defineProperty(obj, sym, desc); - } - } - return obj; - } -`; -helpers.defaults = helper("7.0.0-beta.0")` - export default function _defaults(obj, defaults) { - var keys = Object.getOwnPropertyNames(defaults); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = Object.getOwnPropertyDescriptor(defaults, key); - if (value && value.configurable && obj[key] === undefined) { - Object.defineProperty(obj, key, value); - } - } - return obj; - } -`; -helpers.defineProperty = helper("7.0.0-beta.0")` - export default function _defineProperty(obj, key, value) { - // Shortcircuit the slow defineProperty path when possible. - // We are trying to avoid issues where setters defined on the - // prototype cause side effects under the fast path of simple - // assignment. By checking for existence of the property with - // the in operator, we can optimize most of this overhead away. - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } -`; -helpers.extends = helper("7.0.0-beta.0")` - export default function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }; - - return _extends.apply(this, arguments); - } -`; -helpers.objectSpread = helper("7.0.0-beta.0")` - import defineProperty from "defineProperty"; - - export default function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = (arguments[i] != null) ? Object(arguments[i]) : {}; - var ownKeys = Object.keys(source); - if (typeof Object.getOwnPropertySymbols === 'function') { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); - } - ownKeys.forEach(function(key) { - defineProperty(target, key, source[key]); - }); - } - return target; - } -`; -helpers.inherits = helper("7.0.0-beta.0")` - import setPrototypeOf from "setPrototypeOf"; - - export default function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) setPrototypeOf(subClass, superClass); - } -`; -helpers.inheritsLoose = helper("7.0.0-beta.0")` - import setPrototypeOf from "setPrototypeOf"; - - export default function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - setPrototypeOf(subClass, superClass); - } -`; -helpers.getPrototypeOf = helper("7.0.0-beta.0")` - export default function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf - ? Object.getPrototypeOf - : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } -`; -helpers.setPrototypeOf = helper("7.0.0-beta.0")` - export default function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } -`; -helpers.isNativeReflectConstruct = helper("7.9.0")` - export default function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - - // core-js@3 - if (Reflect.construct.sham) return false; - - // Proxy can't be polyfilled. Every browser implemented - // proxies before or at the same time as Reflect.construct, - // so if they support Proxy they also support Reflect.construct. - if (typeof Proxy === "function") return true; - - // Since Reflect.construct can't be properly polyfilled, some - // implementations (e.g. core-js@2) don't set the correct internal slots. - // Those polyfills don't allow us to subclass built-ins, so we need to - // use our fallback implementation. - try { - // If the internal slots aren't set, this throws an error similar to - // TypeError: this is not a Boolean object. - - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); - return true; - } catch (e) { - return false; - } - } -`; -helpers.construct = helper("7.0.0-beta.0")` - import setPrototypeOf from "setPrototypeOf"; - import isNativeReflectConstruct from "isNativeReflectConstruct"; - - export default function _construct(Parent, args, Class) { - if (isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - // NOTE: If Parent !== Class, the correct __proto__ is set *after* - // calling the constructor. - _construct = function _construct(Parent, args, Class) { - var a = [null]; - a.push.apply(a, args); - var Constructor = Function.bind.apply(Parent, a); - var instance = new Constructor(); - if (Class) setPrototypeOf(instance, Class.prototype); - return instance; - }; - } - // Avoid issues with Class being present but undefined when it wasn't - // present in the original call. - return _construct.apply(null, arguments); - } -`; -helpers.isNativeFunction = helper("7.0.0-beta.0")` - export default function _isNativeFunction(fn) { - // Note: This function returns "true" for core-js functions. - return Function.toString.call(fn).indexOf("[native code]") !== -1; - } -`; -helpers.wrapNativeSuper = helper("7.0.0-beta.0")` - import getPrototypeOf from "getPrototypeOf"; - import setPrototypeOf from "setPrototypeOf"; - import isNativeFunction from "isNativeFunction"; - import construct from "construct"; - - export default function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? new Map() : undefined; - - _wrapNativeSuper = function _wrapNativeSuper(Class) { - if (Class === null || !isNativeFunction(Class)) return Class; - if (typeof Class !== "function") { - throw new TypeError("Super expression must either be null or a function"); - } - if (typeof _cache !== "undefined") { - if (_cache.has(Class)) return _cache.get(Class); - _cache.set(Class, Wrapper); - } - function Wrapper() { - return construct(Class, arguments, getPrototypeOf(this).constructor) - } - Wrapper.prototype = Object.create(Class.prototype, { - constructor: { - value: Wrapper, - enumerable: false, - writable: true, - configurable: true, - } - }); - - return setPrototypeOf(Wrapper, Class); - } - - return _wrapNativeSuper(Class) - } -`; -helpers.instanceof = helper("7.0.0-beta.0")` - export default function _instanceof(left, right) { - if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { - return !!right[Symbol.hasInstance](left); - } else { - return left instanceof right; - } - } -`; -helpers.interopRequireDefault = helper("7.0.0-beta.0")` - export default function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } -`; -helpers.interopRequireWildcard = helper("7.14.0")` - function _getRequireWildcardCache(nodeInterop) { - if (typeof WeakMap !== "function") return null; - - var cacheBabelInterop = new WeakMap(); - var cacheNodeInterop = new WeakMap(); - return (_getRequireWildcardCache = function (nodeInterop) { - return nodeInterop ? cacheNodeInterop : cacheBabelInterop; - })(nodeInterop); - } - - export default function _interopRequireWildcard(obj, nodeInterop) { - if (!nodeInterop && obj && obj.__esModule) { - return obj; - } - - if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) { - return { default: obj } - } - - var cache = _getRequireWildcardCache(nodeInterop); - if (cache && cache.has(obj)) { - return cache.get(obj); - } - - var newObj = {}; - var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; - for (var key in obj) { - if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { - var desc = hasPropertyDescriptor - ? Object.getOwnPropertyDescriptor(obj, key) - : null; - if (desc && (desc.get || desc.set)) { - Object.defineProperty(newObj, key, desc); - } else { - newObj[key] = obj[key]; - } - } - } - newObj.default = obj; - if (cache) { - cache.set(obj, newObj); - } - return newObj; - } -`; -helpers.newArrowCheck = helper("7.0.0-beta.0")` - export default function _newArrowCheck(innerThis, boundThis) { - if (innerThis !== boundThis) { - throw new TypeError("Cannot instantiate an arrow function"); - } - } -`; -helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")` - export default function _objectDestructuringEmpty(obj) { - if (obj == null) throw new TypeError("Cannot destructure undefined"); - } -`; -helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")` - export default function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - - return target; - } -`; -helpers.objectWithoutProperties = helper("7.0.0-beta.0")` - import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose"; - - export default function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - - var target = objectWithoutPropertiesLoose(source, excluded); - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - - return target; - } -`; -helpers.assertThisInitialized = helper("7.0.0-beta.0")` - export default function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } -`; -helpers.possibleConstructorReturn = helper("7.0.0-beta.0")` - import assertThisInitialized from "assertThisInitialized"; - - export default function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - - return assertThisInitialized(self); - } -`; -helpers.createSuper = helper("7.9.0")` - import getPrototypeOf from "getPrototypeOf"; - import isNativeReflectConstruct from "isNativeReflectConstruct"; - import possibleConstructorReturn from "possibleConstructorReturn"; - - export default function _createSuper(Derived) { - var hasNativeReflectConstruct = isNativeReflectConstruct(); - - return function _createSuperInternal() { - var Super = getPrototypeOf(Derived), result; - if (hasNativeReflectConstruct) { - // NOTE: This doesn't work if this.__proto__.constructor has been modified. - var NewTarget = getPrototypeOf(this).constructor; - result = Reflect.construct(Super, arguments, NewTarget); - } else { - result = Super.apply(this, arguments); - } - return possibleConstructorReturn(this, result); - } - } - `; -helpers.superPropBase = helper("7.0.0-beta.0")` - import getPrototypeOf from "getPrototypeOf"; - - export default function _superPropBase(object, property) { - // Yes, this throws if object is null to being with, that's on purpose. - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = getPrototypeOf(object); - if (object === null) break; - } - return object; - } -`; -helpers.get = helper("7.0.0-beta.0")` - import superPropBase from "superPropBase"; - - export default function _get(target, property, receiver) { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get(target, property, receiver) { - var base = superPropBase(target, property); - - if (!base) return; - - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(receiver); - } - - return desc.value; - }; - } - return _get(target, property, receiver || target); - } -`; -helpers.set = helper("7.0.0-beta.0")` - import superPropBase from "superPropBase"; - import defineProperty from "defineProperty"; - - function set(target, property, value, receiver) { - if (typeof Reflect !== "undefined" && Reflect.set) { - set = Reflect.set; - } else { - set = function set(target, property, value, receiver) { - var base = superPropBase(target, property); - var desc; - - if (base) { - desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.set) { - desc.set.call(receiver, value); - return true; - } else if (!desc.writable) { - // Both getter and non-writable fall into this. - return false; - } - } - - // Without a super that defines the property, spec boils down to - // "define on receiver" for some reason. - desc = Object.getOwnPropertyDescriptor(receiver, property); - if (desc) { - if (!desc.writable) { - // Setter, getter, and non-writable fall into this. - return false; - } - - desc.value = value; - Object.defineProperty(receiver, property, desc); - } else { - // Avoid setters that may be defined on Sub's prototype, but not on - // the instance. - defineProperty(receiver, property, value); - } - - return true; - }; - } - - return set(target, property, value, receiver); - } - - export default function _set(target, property, value, receiver, isStrict) { - var s = set(target, property, value, receiver || target); - if (!s && isStrict) { - throw new Error('failed to set property'); - } - - return value; - } -`; -helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")` - export default function _taggedTemplateLiteral(strings, raw) { - if (!raw) { raw = strings.slice(0); } - return Object.freeze(Object.defineProperties(strings, { - raw: { value: Object.freeze(raw) } - })); - } -`; -helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")` - export default function _taggedTemplateLiteralLoose(strings, raw) { - if (!raw) { raw = strings.slice(0); } - strings.raw = raw; - return strings; - } -`; -helpers.readOnlyError = helper("7.0.0-beta.0")` - export default function _readOnlyError(name) { - throw new TypeError("\\"" + name + "\\" is read-only"); - } -`; -helpers.writeOnlyError = helper("7.12.13")` - export default function _writeOnlyError(name) { - throw new TypeError("\\"" + name + "\\" is write-only"); - } -`; -helpers.classNameTDZError = helper("7.0.0-beta.0")` - export default function _classNameTDZError(name) { - throw new Error("Class \\"" + name + "\\" cannot be referenced in computed property keys."); - } -`; -helpers.temporalUndefined = helper("7.0.0-beta.0")` - // This function isn't mean to be called, but to be used as a reference. - // We can't use a normal object because it isn't hoisted. - export default function _temporalUndefined() {} -`; -helpers.tdz = helper("7.5.5")` - export default function _tdzError(name) { - throw new ReferenceError(name + " is not defined - temporal dead zone"); - } -`; -helpers.temporalRef = helper("7.0.0-beta.0")` - import undef from "temporalUndefined"; - import err from "tdz"; - - export default function _temporalRef(val, name) { - return val === undef ? err(name) : val; - } -`; -helpers.slicedToArray = helper("7.0.0-beta.0")` - import arrayWithHoles from "arrayWithHoles"; - import iterableToArrayLimit from "iterableToArrayLimit"; - import unsupportedIterableToArray from "unsupportedIterableToArray"; - import nonIterableRest from "nonIterableRest"; - - export default function _slicedToArray(arr, i) { - return ( - arrayWithHoles(arr) || - iterableToArrayLimit(arr, i) || - unsupportedIterableToArray(arr, i) || - nonIterableRest() - ); - } -`; -helpers.slicedToArrayLoose = helper("7.0.0-beta.0")` - import arrayWithHoles from "arrayWithHoles"; - import iterableToArrayLimitLoose from "iterableToArrayLimitLoose"; - import unsupportedIterableToArray from "unsupportedIterableToArray"; - import nonIterableRest from "nonIterableRest"; - - export default function _slicedToArrayLoose(arr, i) { - return ( - arrayWithHoles(arr) || - iterableToArrayLimitLoose(arr, i) || - unsupportedIterableToArray(arr, i) || - nonIterableRest() - ); - } -`; -helpers.toArray = helper("7.0.0-beta.0")` - import arrayWithHoles from "arrayWithHoles"; - import iterableToArray from "iterableToArray"; - import unsupportedIterableToArray from "unsupportedIterableToArray"; - import nonIterableRest from "nonIterableRest"; - - export default function _toArray(arr) { - return ( - arrayWithHoles(arr) || - iterableToArray(arr) || - unsupportedIterableToArray(arr) || - nonIterableRest() - ); - } -`; -helpers.toConsumableArray = helper("7.0.0-beta.0")` - import arrayWithoutHoles from "arrayWithoutHoles"; - import iterableToArray from "iterableToArray"; - import unsupportedIterableToArray from "unsupportedIterableToArray"; - import nonIterableSpread from "nonIterableSpread"; - - export default function _toConsumableArray(arr) { - return ( - arrayWithoutHoles(arr) || - iterableToArray(arr) || - unsupportedIterableToArray(arr) || - nonIterableSpread() - ); - } -`; -helpers.arrayWithoutHoles = helper("7.0.0-beta.0")` - import arrayLikeToArray from "arrayLikeToArray"; - - export default function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return arrayLikeToArray(arr); - } -`; -helpers.arrayWithHoles = helper("7.0.0-beta.0")` - export default function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } -`; -helpers.maybeArrayLike = helper("7.9.0")` - import arrayLikeToArray from "arrayLikeToArray"; - - export default function _maybeArrayLike(next, arr, i) { - if (arr && !Array.isArray(arr) && typeof arr.length === "number") { - var len = arr.length; - return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len); - } - return next(arr, i); - } -`; -helpers.iterableToArray = helper("7.0.0-beta.0")` - export default function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } -`; -helpers.iterableToArrayLimit = helper("7.0.0-beta.0")` - export default function _iterableToArrayLimit(arr, i) { - // this is an expanded form of \`for...of\` that properly supports abrupt completions of - // iterators etc. variable names have been minimised to reduce the size of this massive - // helper. sometimes spec compliance is annoying :( - // - // _n = _iteratorNormalCompletion - // _d = _didIteratorError - // _e = _iteratorError - // _i = _iterator - // _s = _step - - var _i = arr == null ? null : (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); - if (_i == null) return; - - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } -`; -helpers.iterableToArrayLimitLoose = helper("7.0.0-beta.0")` - export default function _iterableToArrayLimitLoose(arr, i) { - var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); - if (_i == null) return; - - var _arr = []; - for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) { - _arr.push(_step.value); - if (i && _arr.length === i) break; - } - return _arr; - } -`; -helpers.unsupportedIterableToArray = helper("7.9.0")` - import arrayLikeToArray from "arrayLikeToArray"; - - export default function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return arrayLikeToArray(o, minLen); - } -`; -helpers.arrayLikeToArray = helper("7.9.0")` - export default function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } -`; -helpers.nonIterableSpread = helper("7.0.0-beta.0")` - export default function _nonIterableSpread() { - throw new TypeError( - "Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." - ); - } -`; -helpers.nonIterableRest = helper("7.0.0-beta.0")` - export default function _nonIterableRest() { - throw new TypeError( - "Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." - ); - } -`; -helpers.createForOfIteratorHelper = helper("7.9.0")` - import unsupportedIterableToArray from "unsupportedIterableToArray"; - - // s: start (create the iterator) - // n: next - // e: error (called whenever something throws) - // f: finish (always called at the end) - - export default function _createForOfIteratorHelper(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - - if (!it) { - // Fallback for engines without symbol support - if ( - Array.isArray(o) || - (it = unsupportedIterableToArray(o)) || - (allowArrayLike && o && typeof o.length === "number") - ) { - if (it) o = it; - var i = 0; - var F = function(){}; - return { - s: F, - n: function() { - if (i >= o.length) return { done: true }; - return { done: false, value: o[i++] }; - }, - e: function(e) { throw e; }, - f: F, - }; - } - - throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - var normalCompletion = true, didErr = false, err; - - return { - s: function() { - it = it.call(o); - }, - n: function() { - var step = it.next(); - normalCompletion = step.done; - return step; - }, - e: function(e) { - didErr = true; - err = e; - }, - f: function() { - try { - if (!normalCompletion && it.return != null) it.return(); - } finally { - if (didErr) throw err; - } - } - }; - } -`; -helpers.createForOfIteratorHelperLoose = helper("7.9.0")` - import unsupportedIterableToArray from "unsupportedIterableToArray"; - - export default function _createForOfIteratorHelperLoose(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - - if (it) return (it = it.call(o)).next.bind(it); - - // Fallback for engines without symbol support - if ( - Array.isArray(o) || - (it = unsupportedIterableToArray(o)) || - (allowArrayLike && o && typeof o.length === "number") - ) { - if (it) o = it; - var i = 0; - return function() { - if (i >= o.length) return { done: true }; - return { done: false, value: o[i++] }; - } - } - - throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } -`; -helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")` - export default function _skipFirstGeneratorNext(fn) { - return function () { - var it = fn.apply(this, arguments); - it.next(); - return it; - } - } -`; -helpers.toPrimitive = helper("7.1.5")` - export default function _toPrimitive( - input, - hint /*: "default" | "string" | "number" | void */ - ) { - if (typeof input !== "object" || input === null) return input; - var prim = input[Symbol.toPrimitive]; - if (prim !== undefined) { - var res = prim.call(input, hint || "default"); - if (typeof res !== "object") return res; - throw new TypeError("@@toPrimitive must return a primitive value."); - } - return (hint === "string" ? String : Number)(input); - } -`; -helpers.toPropertyKey = helper("7.1.5")` - import toPrimitive from "toPrimitive"; - - export default function _toPropertyKey(arg) { - var key = toPrimitive(arg, "string"); - return typeof key === "symbol" ? key : String(key); - } -`; -helpers.initializerWarningHelper = helper("7.0.0-beta.0")` - export default function _initializerWarningHelper(descriptor, context){ - throw new Error( - 'Decorating class property failed. Please ensure that ' + - 'proposal-class-properties is enabled and runs after the decorators transform.' - ); - } -`; -helpers.initializerDefineProperty = helper("7.0.0-beta.0")` - export default function _initializerDefineProperty(target, property, descriptor, context){ - if (!descriptor) return; - - Object.defineProperty(target, property, { - enumerable: descriptor.enumerable, - configurable: descriptor.configurable, - writable: descriptor.writable, - value: descriptor.initializer ? descriptor.initializer.call(context) : void 0, - }); - } -`; -helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")` - export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){ - var desc = {}; - Object.keys(descriptor).forEach(function(key){ - desc[key] = descriptor[key]; - }); - desc.enumerable = !!desc.enumerable; - desc.configurable = !!desc.configurable; - if ('value' in desc || desc.initializer){ - desc.writable = true; - } - - desc = decorators.slice().reverse().reduce(function(desc, decorator){ - return decorator(target, property, desc) || desc; - }, desc); - - if (context && desc.initializer !== void 0){ - desc.value = desc.initializer ? desc.initializer.call(context) : void 0; - desc.initializer = undefined; - } - - if (desc.initializer === void 0){ - Object.defineProperty(target, property, desc); - desc = null; - } - - return desc; - } -`; -helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")` - var id = 0; - export default function _classPrivateFieldKey(name) { - return "__private_" + (id++) + "_" + name; - } -`; -helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")` - export default function _classPrivateFieldBase(receiver, privateKey) { - if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { - throw new TypeError("attempted to use private field on non-instance"); - } - return receiver; - } -`; -helpers.classPrivateFieldGet = helper("7.0.0-beta.0")` - import classApplyDescriptorGet from "classApplyDescriptorGet"; - import classExtractFieldDescriptor from "classExtractFieldDescriptor"; - export default function _classPrivateFieldGet(receiver, privateMap) { - var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get"); - return classApplyDescriptorGet(receiver, descriptor); - } -`; -helpers.classPrivateFieldSet = helper("7.0.0-beta.0")` - import classApplyDescriptorSet from "classApplyDescriptorSet"; - import classExtractFieldDescriptor from "classExtractFieldDescriptor"; - export default function _classPrivateFieldSet(receiver, privateMap, value) { - var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); - classApplyDescriptorSet(receiver, descriptor, value); - return value; - } -`; -helpers.classPrivateFieldDestructureSet = helper("7.4.4")` - import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet"; - import classExtractFieldDescriptor from "classExtractFieldDescriptor"; - export default function _classPrivateFieldDestructureSet(receiver, privateMap) { - var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); - return classApplyDescriptorDestructureSet(receiver, descriptor); - } -`; -helpers.classExtractFieldDescriptor = helper("7.13.10")` - export default function _classExtractFieldDescriptor(receiver, privateMap, action) { - if (!privateMap.has(receiver)) { - throw new TypeError("attempted to " + action + " private field on non-instance"); - } - return privateMap.get(receiver); - } -`; -helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")` - import classApplyDescriptorGet from "classApplyDescriptorGet"; - import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; - import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; - export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { - classCheckPrivateStaticAccess(receiver, classConstructor); - classCheckPrivateStaticFieldDescriptor(descriptor, "get"); - return classApplyDescriptorGet(receiver, descriptor); - } -`; -helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")` - import classApplyDescriptorSet from "classApplyDescriptorSet"; - import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; - import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; - export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { - classCheckPrivateStaticAccess(receiver, classConstructor); - classCheckPrivateStaticFieldDescriptor(descriptor, "set"); - classApplyDescriptorSet(receiver, descriptor, value); - return value; - } -`; -helpers.classStaticPrivateMethodGet = helper("7.3.2")` - import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; - export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) { - classCheckPrivateStaticAccess(receiver, classConstructor); - return method; - } -`; -helpers.classStaticPrivateMethodSet = helper("7.3.2")` - export default function _classStaticPrivateMethodSet() { - throw new TypeError("attempted to set read only static private field"); - } -`; -helpers.classApplyDescriptorGet = helper("7.13.10")` - export default function _classApplyDescriptorGet(receiver, descriptor) { - if (descriptor.get) { - return descriptor.get.call(receiver); - } - return descriptor.value; - } -`; -helpers.classApplyDescriptorSet = helper("7.13.10")` - export default function _classApplyDescriptorSet(receiver, descriptor, value) { - if (descriptor.set) { - descriptor.set.call(receiver, value); - } else { - if (!descriptor.writable) { - // This should only throw in strict mode, but class bodies are - // always strict and private fields can only be used inside - // class bodies. - throw new TypeError("attempted to set read only private field"); - } - descriptor.value = value; - } - } -`; -helpers.classApplyDescriptorDestructureSet = helper("7.13.10")` - export default function _classApplyDescriptorDestructureSet(receiver, descriptor) { - if (descriptor.set) { - if (!("__destrObj" in descriptor)) { - descriptor.__destrObj = { - set value(v) { - descriptor.set.call(receiver, v) - }, - }; - } - return descriptor.__destrObj; - } else { - if (!descriptor.writable) { - // This should only throw in strict mode, but class bodies are - // always strict and private fields can only be used inside - // class bodies. - throw new TypeError("attempted to set read only private field"); - } - - return descriptor; - } - } -`; -helpers.classStaticPrivateFieldDestructureSet = helper("7.13.10")` - import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet"; - import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; - import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; - export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) { - classCheckPrivateStaticAccess(receiver, classConstructor); - classCheckPrivateStaticFieldDescriptor(descriptor, "set"); - return classApplyDescriptorDestructureSet(receiver, descriptor); - } -`; -helpers.classCheckPrivateStaticAccess = helper("7.13.10")` - export default function _classCheckPrivateStaticAccess(receiver, classConstructor) { - if (receiver !== classConstructor) { - throw new TypeError("Private static access of wrong provenance"); - } - } -`; -helpers.classCheckPrivateStaticFieldDescriptor = helper("7.13.10")` - export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { - if (descriptor === undefined) { - throw new TypeError("attempted to " + action + " private static field before its declaration"); - } - } -`; -helpers.decorate = helper("7.1.5")` - import toArray from "toArray"; - import toPropertyKey from "toPropertyKey"; - - // These comments are stripped by @babel/template - /*:: - type PropertyDescriptor = - | { - value: any, - writable: boolean, - configurable: boolean, - enumerable: boolean, - } - | { - get?: () => any, - set?: (v: any) => void, - configurable: boolean, - enumerable: boolean, - }; - - type FieldDescriptor ={ - writable: boolean, - configurable: boolean, - enumerable: boolean, - }; - - type Placement = "static" | "prototype" | "own"; - type Key = string | symbol; // PrivateName is not supported yet. - - type ElementDescriptor = - | { - kind: "method", - key: Key, - placement: Placement, - descriptor: PropertyDescriptor - } - | { - kind: "field", - key: Key, - placement: Placement, - descriptor: FieldDescriptor, - initializer?: () => any, - }; - - // This is exposed to the user code - type ElementObjectInput = ElementDescriptor & { - [@@toStringTag]?: "Descriptor" - }; - - // This is exposed to the user code - type ElementObjectOutput = ElementDescriptor & { - [@@toStringTag]?: "Descriptor" - extras?: ElementDescriptor[], - finisher?: ClassFinisher, - }; - - // This is exposed to the user code - type ClassObject = { - [@@toStringTag]?: "Descriptor", - kind: "class", - elements: ElementDescriptor[], - }; - - type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput; - type ClassDecorator = (descriptor: ClassObject) => ?ClassObject; - type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>; - - // Only used by Babel in the transform output, not part of the spec. - type ElementDefinition = - | { - kind: "method", - value: any, - key: Key, - static?: boolean, - decorators?: ElementDecorator[], - } - | { - kind: "field", - value: () => any, - key: Key, - static?: boolean, - decorators?: ElementDecorator[], - }; - - declare function ClassFactory<C>(initialize: (instance: C) => void): { - F: Class<C>, - d: ElementDefinition[] - } - - */ - - /*:: - // Various combinations with/without extras and with one or many finishers - - type ElementFinisherExtras = { - element: ElementDescriptor, - finisher?: ClassFinisher, - extras?: ElementDescriptor[], - }; - - type ElementFinishersExtras = { - element: ElementDescriptor, - finishers: ClassFinisher[], - extras: ElementDescriptor[], - }; - - type ElementsFinisher = { - elements: ElementDescriptor[], - finisher?: ClassFinisher, - }; - - type ElementsFinishers = { - elements: ElementDescriptor[], - finishers: ClassFinisher[], - }; - - */ - - /*:: - - type Placements = { - static: Key[], - prototype: Key[], - own: Key[], - }; - - */ - - // ClassDefinitionEvaluation (Steps 26-*) - export default function _decorate( - decorators /*: ClassDecorator[] */, - factory /*: ClassFactory */, - superClass /*: ?Class<*> */, - mixins /*: ?Array<Function> */, - ) /*: Class<*> */ { - var api = _getDecoratorsApi(); - if (mixins) { - for (var i = 0; i < mixins.length; i++) { - api = mixins[i](api); - } - } - - var r = factory(function initialize(O) { - api.initializeInstanceElements(O, decorated.elements); - }, superClass); - var decorated = api.decorateClass( - _coalesceClassElements(r.d.map(_createElementDescriptor)), - decorators, - ); - - api.initializeClassElements(r.F, decorated.elements); - - return api.runClassFinishers(r.F, decorated.finishers); - } - - function _getDecoratorsApi() { - _getDecoratorsApi = function() { - return api; - }; - - var api = { - elementsDefinitionOrder: [["method"], ["field"]], - - // InitializeInstanceElements - initializeInstanceElements: function( - /*::<C>*/ O /*: C */, - elements /*: ElementDescriptor[] */, - ) { - ["method", "field"].forEach(function(kind) { - elements.forEach(function(element /*: ElementDescriptor */) { - if (element.kind === kind && element.placement === "own") { - this.defineClassElement(O, element); - } - }, this); - }, this); - }, - - // InitializeClassElements - initializeClassElements: function( - /*::<C>*/ F /*: Class<C> */, - elements /*: ElementDescriptor[] */, - ) { - var proto = F.prototype; - - ["method", "field"].forEach(function(kind) { - elements.forEach(function(element /*: ElementDescriptor */) { - var placement = element.placement; - if ( - element.kind === kind && - (placement === "static" || placement === "prototype") - ) { - var receiver = placement === "static" ? F : proto; - this.defineClassElement(receiver, element); - } - }, this); - }, this); - }, - - // DefineClassElement - defineClassElement: function( - /*::<C>*/ receiver /*: C | Class<C> */, - element /*: ElementDescriptor */, - ) { - var descriptor /*: PropertyDescriptor */ = element.descriptor; - if (element.kind === "field") { - var initializer = element.initializer; - descriptor = { - enumerable: descriptor.enumerable, - writable: descriptor.writable, - configurable: descriptor.configurable, - value: initializer === void 0 ? void 0 : initializer.call(receiver), - }; - } - Object.defineProperty(receiver, element.key, descriptor); - }, - - // DecorateClass - decorateClass: function( - elements /*: ElementDescriptor[] */, - decorators /*: ClassDecorator[] */, - ) /*: ElementsFinishers */ { - var newElements /*: ElementDescriptor[] */ = []; - var finishers /*: ClassFinisher[] */ = []; - var placements /*: Placements */ = { - static: [], - prototype: [], - own: [], - }; - - elements.forEach(function(element /*: ElementDescriptor */) { - this.addElementPlacement(element, placements); - }, this); - - elements.forEach(function(element /*: ElementDescriptor */) { - if (!_hasDecorators(element)) return newElements.push(element); - - var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement( - element, - placements, - ); - newElements.push(elementFinishersExtras.element); - newElements.push.apply(newElements, elementFinishersExtras.extras); - finishers.push.apply(finishers, elementFinishersExtras.finishers); - }, this); - - if (!decorators) { - return { elements: newElements, finishers: finishers }; - } - - var result /*: ElementsFinishers */ = this.decorateConstructor( - newElements, - decorators, - ); - finishers.push.apply(finishers, result.finishers); - result.finishers = finishers; - - return result; - }, - - // AddElementPlacement - addElementPlacement: function( - element /*: ElementDescriptor */, - placements /*: Placements */, - silent /*: boolean */, - ) { - var keys = placements[element.placement]; - if (!silent && keys.indexOf(element.key) !== -1) { - throw new TypeError("Duplicated element (" + element.key + ")"); - } - keys.push(element.key); - }, - - // DecorateElement - decorateElement: function( - element /*: ElementDescriptor */, - placements /*: Placements */, - ) /*: ElementFinishersExtras */ { - var extras /*: ElementDescriptor[] */ = []; - var finishers /*: ClassFinisher[] */ = []; - - for ( - var decorators = element.decorators, i = decorators.length - 1; - i >= 0; - i-- - ) { - // (inlined) RemoveElementPlacement - var keys = placements[element.placement]; - keys.splice(keys.indexOf(element.key), 1); - - var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor( - element, - ); - var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras( - (0, decorators[i])(elementObject) /*: ElementObjectOutput */ || - elementObject, - ); - - element = elementFinisherExtras.element; - this.addElementPlacement(element, placements); - - if (elementFinisherExtras.finisher) { - finishers.push(elementFinisherExtras.finisher); - } - - var newExtras /*: ElementDescriptor[] | void */ = - elementFinisherExtras.extras; - if (newExtras) { - for (var j = 0; j < newExtras.length; j++) { - this.addElementPlacement(newExtras[j], placements); - } - extras.push.apply(extras, newExtras); - } - } - - return { element: element, finishers: finishers, extras: extras }; - }, - - // DecorateConstructor - decorateConstructor: function( - elements /*: ElementDescriptor[] */, - decorators /*: ClassDecorator[] */, - ) /*: ElementsFinishers */ { - var finishers /*: ClassFinisher[] */ = []; - - for (var i = decorators.length - 1; i >= 0; i--) { - var obj /*: ClassObject */ = this.fromClassDescriptor(elements); - var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor( - (0, decorators[i])(obj) /*: ClassObject */ || obj, - ); - - if (elementsAndFinisher.finisher !== undefined) { - finishers.push(elementsAndFinisher.finisher); - } - - if (elementsAndFinisher.elements !== undefined) { - elements = elementsAndFinisher.elements; - - for (var j = 0; j < elements.length - 1; j++) { - for (var k = j + 1; k < elements.length; k++) { - if ( - elements[j].key === elements[k].key && - elements[j].placement === elements[k].placement - ) { - throw new TypeError( - "Duplicated element (" + elements[j].key + ")", - ); - } - } - } - } - } - - return { elements: elements, finishers: finishers }; - }, - - // FromElementDescriptor - fromElementDescriptor: function( - element /*: ElementDescriptor */, - ) /*: ElementObject */ { - var obj /*: ElementObject */ = { - kind: element.kind, - key: element.key, - placement: element.placement, - descriptor: element.descriptor, - }; - - var desc = { - value: "Descriptor", - configurable: true, - }; - Object.defineProperty(obj, Symbol.toStringTag, desc); - - if (element.kind === "field") obj.initializer = element.initializer; - - return obj; - }, - - // ToElementDescriptors - toElementDescriptors: function( - elementObjects /*: ElementObject[] */, - ) /*: ElementDescriptor[] */ { - if (elementObjects === undefined) return; - return toArray(elementObjects).map(function(elementObject) { - var element = this.toElementDescriptor(elementObject); - this.disallowProperty(elementObject, "finisher", "An element descriptor"); - this.disallowProperty(elementObject, "extras", "An element descriptor"); - return element; - }, this); - }, - - // ToElementDescriptor - toElementDescriptor: function( - elementObject /*: ElementObject */, - ) /*: ElementDescriptor */ { - var kind = String(elementObject.kind); - if (kind !== "method" && kind !== "field") { - throw new TypeError( - 'An element descriptor\\'s .kind property must be either "method" or' + - ' "field", but a decorator created an element descriptor with' + - ' .kind "' + - kind + - '"', - ); - } - - var key = toPropertyKey(elementObject.key); - - var placement = String(elementObject.placement); - if ( - placement !== "static" && - placement !== "prototype" && - placement !== "own" - ) { - throw new TypeError( - 'An element descriptor\\'s .placement property must be one of "static",' + - ' "prototype" or "own", but a decorator created an element descriptor' + - ' with .placement "' + - placement + - '"', - ); - } - - var descriptor /*: PropertyDescriptor */ = elementObject.descriptor; - - this.disallowProperty(elementObject, "elements", "An element descriptor"); - - var element /*: ElementDescriptor */ = { - kind: kind, - key: key, - placement: placement, - descriptor: Object.assign({}, descriptor), - }; - - if (kind !== "field") { - this.disallowProperty(elementObject, "initializer", "A method descriptor"); - } else { - this.disallowProperty( - descriptor, - "get", - "The property descriptor of a field descriptor", - ); - this.disallowProperty( - descriptor, - "set", - "The property descriptor of a field descriptor", - ); - this.disallowProperty( - descriptor, - "value", - "The property descriptor of a field descriptor", - ); - - element.initializer = elementObject.initializer; - } - - return element; - }, - - toElementFinisherExtras: function( - elementObject /*: ElementObject */, - ) /*: ElementFinisherExtras */ { - var element /*: ElementDescriptor */ = this.toElementDescriptor( - elementObject, - ); - var finisher /*: ClassFinisher */ = _optionalCallableProperty( - elementObject, - "finisher", - ); - var extras /*: ElementDescriptors[] */ = this.toElementDescriptors( - elementObject.extras, - ); - - return { element: element, finisher: finisher, extras: extras }; - }, - - // FromClassDescriptor - fromClassDescriptor: function( - elements /*: ElementDescriptor[] */, - ) /*: ClassObject */ { - var obj = { - kind: "class", - elements: elements.map(this.fromElementDescriptor, this), - }; - - var desc = { value: "Descriptor", configurable: true }; - Object.defineProperty(obj, Symbol.toStringTag, desc); - - return obj; - }, - - // ToClassDescriptor - toClassDescriptor: function( - obj /*: ClassObject */, - ) /*: ElementsFinisher */ { - var kind = String(obj.kind); - if (kind !== "class") { - throw new TypeError( - 'A class descriptor\\'s .kind property must be "class", but a decorator' + - ' created a class descriptor with .kind "' + - kind + - '"', - ); - } - - this.disallowProperty(obj, "key", "A class descriptor"); - this.disallowProperty(obj, "placement", "A class descriptor"); - this.disallowProperty(obj, "descriptor", "A class descriptor"); - this.disallowProperty(obj, "initializer", "A class descriptor"); - this.disallowProperty(obj, "extras", "A class descriptor"); - - var finisher = _optionalCallableProperty(obj, "finisher"); - var elements = this.toElementDescriptors(obj.elements); - - return { elements: elements, finisher: finisher }; - }, - - // RunClassFinishers - runClassFinishers: function( - constructor /*: Class<*> */, - finishers /*: ClassFinisher[] */, - ) /*: Class<*> */ { - for (var i = 0; i < finishers.length; i++) { - var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor); - if (newConstructor !== undefined) { - // NOTE: This should check if IsConstructor(newConstructor) is false. - if (typeof newConstructor !== "function") { - throw new TypeError("Finishers must return a constructor."); - } - constructor = newConstructor; - } - } - return constructor; - }, - - disallowProperty: function(obj, name, objectType) { - if (obj[name] !== undefined) { - throw new TypeError(objectType + " can't have a ." + name + " property."); - } - } - }; - - return api; - } - - // ClassElementEvaluation - function _createElementDescriptor( - def /*: ElementDefinition */, - ) /*: ElementDescriptor */ { - var key = toPropertyKey(def.key); - - var descriptor /*: PropertyDescriptor */; - if (def.kind === "method") { - descriptor = { - value: def.value, - writable: true, - configurable: true, - enumerable: false, - }; - } else if (def.kind === "get") { - descriptor = { get: def.value, configurable: true, enumerable: false }; - } else if (def.kind === "set") { - descriptor = { set: def.value, configurable: true, enumerable: false }; - } else if (def.kind === "field") { - descriptor = { configurable: true, writable: true, enumerable: true }; - } - - var element /*: ElementDescriptor */ = { - kind: def.kind === "field" ? "field" : "method", - key: key, - placement: def.static - ? "static" - : def.kind === "field" - ? "own" - : "prototype", - descriptor: descriptor, - }; - if (def.decorators) element.decorators = def.decorators; - if (def.kind === "field") element.initializer = def.value; - - return element; - } - - // CoalesceGetterSetter - function _coalesceGetterSetter( - element /*: ElementDescriptor */, - other /*: ElementDescriptor */, - ) { - if (element.descriptor.get !== undefined) { - other.descriptor.get = element.descriptor.get; - } else { - other.descriptor.set = element.descriptor.set; - } - } - - // CoalesceClassElements - function _coalesceClassElements( - elements /*: ElementDescriptor[] */, - ) /*: ElementDescriptor[] */ { - var newElements /*: ElementDescriptor[] */ = []; - - var isSameElement = function( - other /*: ElementDescriptor */, - ) /*: boolean */ { - return ( - other.kind === "method" && - other.key === element.key && - other.placement === element.placement - ); - }; - - for (var i = 0; i < elements.length; i++) { - var element /*: ElementDescriptor */ = elements[i]; - var other /*: ElementDescriptor */; - - if ( - element.kind === "method" && - (other = newElements.find(isSameElement)) - ) { - if ( - _isDataDescriptor(element.descriptor) || - _isDataDescriptor(other.descriptor) - ) { - if (_hasDecorators(element) || _hasDecorators(other)) { - throw new ReferenceError( - "Duplicated methods (" + element.key + ") can't be decorated.", - ); - } - other.descriptor = element.descriptor; - } else { - if (_hasDecorators(element)) { - if (_hasDecorators(other)) { - throw new ReferenceError( - "Decorators can't be placed on different accessors with for " + - "the same property (" + - element.key + - ").", - ); - } - other.decorators = element.decorators; - } - _coalesceGetterSetter(element, other); - } - } else { - newElements.push(element); - } - } - - return newElements; - } - - function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ { - return element.decorators && element.decorators.length; - } - - function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ { - return ( - desc !== undefined && - !(desc.value === undefined && desc.writable === undefined) - ); - } - - function _optionalCallableProperty /*::<T>*/( - obj /*: T */, - name /*: $Keys<T> */, - ) /*: ?Function */ { - var value = obj[name]; - if (value !== undefined && typeof value !== "function") { - throw new TypeError("Expected '" + name + "' to be a function"); - } - return value; - } - -`; -helpers.classPrivateMethodGet = helper("7.1.6")` - export default function _classPrivateMethodGet(receiver, privateSet, fn) { - if (!privateSet.has(receiver)) { - throw new TypeError("attempted to get private field on non-instance"); - } - return fn; - } -`; -{ - helpers.classPrivateMethodSet = helper("7.1.6")` - export default function _classPrivateMethodSet() { - throw new TypeError("attempted to reassign private method"); - } - `; -} - -/***/ }), - -/***/ 64643: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.get = get; -exports.minVersion = minVersion; -exports.getDependencies = getDependencies; -exports.ensure = ensure; -exports["default"] = exports.list = void 0; - -var _traverse = __nccwpck_require__(8631); - -var t = __nccwpck_require__(24479); - -var _helpers = __nccwpck_require__(14981); - -function makePath(path) { - const parts = []; - - for (; path.parentPath; path = path.parentPath) { - parts.push(path.key); - if (path.inList) parts.push(path.listKey); - } - - return parts.reverse().join("."); -} - -let fileClass = undefined; - -function getHelperMetadata(file) { - const globals = new Set(); - const localBindingNames = new Set(); - const dependencies = new Map(); - let exportName; - let exportPath; - const exportBindingAssignments = []; - const importPaths = []; - const importBindingsReferences = []; - const dependencyVisitor = { - ImportDeclaration(child) { - const name = child.node.source.value; - - if (!_helpers.default[name]) { - throw child.buildCodeFrameError(`Unknown helper ${name}`); - } - - if (child.get("specifiers").length !== 1 || !child.get("specifiers.0").isImportDefaultSpecifier()) { - throw child.buildCodeFrameError("Helpers can only import a default value"); - } - - const bindingIdentifier = child.node.specifiers[0].local; - dependencies.set(bindingIdentifier, name); - importPaths.push(makePath(child)); - }, - - ExportDefaultDeclaration(child) { - const decl = child.get("declaration"); - - if (decl.isFunctionDeclaration()) { - if (!decl.node.id) { - throw decl.buildCodeFrameError("Helpers should give names to their exported func declaration"); - } - - exportName = decl.node.id.name; - } - - exportPath = makePath(child); - }, - - ExportAllDeclaration(child) { - throw child.buildCodeFrameError("Helpers can only export default"); - }, - - ExportNamedDeclaration(child) { - throw child.buildCodeFrameError("Helpers can only export default"); - }, - - Statement(child) { - if (child.isModuleDeclaration()) return; - child.skip(); - } - - }; - const referenceVisitor = { - Program(path) { - const bindings = path.scope.getAllBindings(); - Object.keys(bindings).forEach(name => { - if (name === exportName) return; - if (dependencies.has(bindings[name].identifier)) return; - localBindingNames.add(name); - }); - }, - - ReferencedIdentifier(child) { - const name = child.node.name; - const binding = child.scope.getBinding(name, true); - - if (!binding) { - globals.add(name); - } else if (dependencies.has(binding.identifier)) { - importBindingsReferences.push(makePath(child)); - } - }, - - AssignmentExpression(child) { - const left = child.get("left"); - if (!(exportName in left.getBindingIdentifiers())) return; - - if (!left.isIdentifier()) { - throw left.buildCodeFrameError("Only simple assignments to exports are allowed in helpers"); - } - - const binding = child.scope.getBinding(exportName); - - if (binding != null && binding.scope.path.isProgram()) { - exportBindingAssignments.push(makePath(child)); - } - } - - }; - (0, _traverse.default)(file.ast, dependencyVisitor, file.scope); - (0, _traverse.default)(file.ast, referenceVisitor, file.scope); - if (!exportPath) throw new Error("Helpers must default-export something."); - exportBindingAssignments.reverse(); - return { - globals: Array.from(globals), - localBindingNames: Array.from(localBindingNames), - dependencies, - exportBindingAssignments, - exportPath, - exportName, - importBindingsReferences, - importPaths - }; -} - -function permuteHelperAST(file, metadata, id, localBindings, getDependency) { - if (localBindings && !id) { - throw new Error("Unexpected local bindings for module-based helpers."); - } - - if (!id) return; - const { - localBindingNames, - dependencies, - exportBindingAssignments, - exportPath, - exportName, - importBindingsReferences, - importPaths - } = metadata; - const dependenciesRefs = {}; - dependencies.forEach((name, id) => { - dependenciesRefs[id.name] = typeof getDependency === "function" && getDependency(name) || id; - }); - const toRename = {}; - const bindings = new Set(localBindings || []); - localBindingNames.forEach(name => { - let newName = name; - - while (bindings.has(newName)) newName = "_" + newName; - - if (newName !== name) toRename[name] = newName; - }); - - if (id.type === "Identifier" && exportName !== id.name) { - toRename[exportName] = id.name; - } - - const visitor = { - Program(path) { - const exp = path.get(exportPath); - const imps = importPaths.map(p => path.get(p)); - const impsBindingRefs = importBindingsReferences.map(p => path.get(p)); - const decl = exp.get("declaration"); - - if (id.type === "Identifier") { - if (decl.isFunctionDeclaration()) { - exp.replaceWith(decl); - } else { - exp.replaceWith(t.variableDeclaration("var", [t.variableDeclarator(id, decl.node)])); - } - } else if (id.type === "MemberExpression") { - if (decl.isFunctionDeclaration()) { - exportBindingAssignments.forEach(assignPath => { - const assign = path.get(assignPath); - assign.replaceWith(t.assignmentExpression("=", id, assign.node)); - }); - exp.replaceWith(decl); - path.pushContainer("body", t.expressionStatement(t.assignmentExpression("=", id, t.identifier(exportName)))); - } else { - exp.replaceWith(t.expressionStatement(t.assignmentExpression("=", id, decl.node))); - } - } else { - throw new Error("Unexpected helper format."); - } - - Object.keys(toRename).forEach(name => { - path.scope.rename(name, toRename[name]); - }); - - for (const path of imps) path.remove(); - - for (const path of impsBindingRefs) { - const node = t.cloneNode(dependenciesRefs[path.node.name]); - path.replaceWith(node); - } - - path.stop(); - } - - }; - (0, _traverse.default)(file.ast, visitor, file.scope); -} - -const helperData = Object.create(null); - -function loadHelper(name) { - if (!helperData[name]) { - const helper = _helpers.default[name]; - - if (!helper) { - throw Object.assign(new ReferenceError(`Unknown helper ${name}`), { - code: "BABEL_HELPER_UNKNOWN", - helper: name - }); - } - - const fn = () => { - const file = { - ast: t.file(helper.ast()) - }; - - if (fileClass) { - return new fileClass({ - filename: `babel-helper://${name}` - }, file); - } - - return file; - }; - - const metadata = getHelperMetadata(fn()); - helperData[name] = { - build(getDependency, id, localBindings) { - const file = fn(); - permuteHelperAST(file, metadata, id, localBindings, getDependency); - return { - nodes: file.ast.program.body, - globals: metadata.globals - }; - }, - - minVersion() { - return helper.minVersion; - }, - - dependencies: metadata.dependencies - }; - } - - return helperData[name]; -} - -function get(name, getDependency, id, localBindings) { - return loadHelper(name).build(getDependency, id, localBindings); -} - -function minVersion(name) { - return loadHelper(name).minVersion(); -} - -function getDependencies(name) { - return Array.from(loadHelper(name).dependencies.values()); -} - -function ensure(name, newFileClass) { - if (!fileClass) { - fileClass = newFileClass; - } - - loadHelper(name); -} - -const list = Object.keys(_helpers.default).map(name => name.replace(/^_/, "")).filter(name => name !== "__esModule"); -exports.list = list; -var _default = get; -exports["default"] = _default; - -/***/ }), - -/***/ 42421: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.shouldHighlight = shouldHighlight; -exports.getChalk = getChalk; -exports["default"] = highlight; - -var _jsTokens = __nccwpck_require__(48035); - -var _helperValidatorIdentifier = __nccwpck_require__(49586); - -var _chalk = __nccwpck_require__(4215); - -const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); - -function getDefs(chalk) { - return { - keyword: chalk.cyan, - capitalized: chalk.yellow, - jsxIdentifier: chalk.yellow, - punctuator: chalk.yellow, - number: chalk.magenta, - string: chalk.green, - regex: chalk.magenta, - comment: chalk.grey, - invalid: chalk.white.bgRed.bold - }; -} - -const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; -const BRACKET = /^[()[\]{}]$/; -let tokenize; -{ - const JSX_TAG = /^[a-z][\w-]*$/i; - - const getTokenType = function (token, offset, text) { - if (token.type === "name") { - if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) { - return "keyword"; - } - - if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) { - return "jsxIdentifier"; - } - - if (token.value[0] !== token.value[0].toLowerCase()) { - return "capitalized"; - } - } - - if (token.type === "punctuator" && BRACKET.test(token.value)) { - return "bracket"; - } - - if (token.type === "invalid" && (token.value === "@" || token.value === "#")) { - return "punctuator"; - } - - return token.type; - }; - - tokenize = function* (text) { - let match; - - while (match = _jsTokens.default.exec(text)) { - const token = _jsTokens.matchToToken(match); - - yield { - type: getTokenType(token, match.index, text), - value: token.value - }; - } - }; -} - -function highlightTokens(defs, text) { - let highlighted = ""; - - for (const { - type, - value - } of tokenize(text)) { - const colorize = defs[type]; - - if (colorize) { - highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n"); - } else { - highlighted += value; - } - } - - return highlighted; -} - -function shouldHighlight(options) { - return !!_chalk.supportsColor || options.forceColor; -} - -function getChalk(options) { - return options.forceColor ? new _chalk.constructor({ - enabled: true, - level: 1 - }) : _chalk; -} - -function highlight(code, options = {}) { - if (shouldHighlight(options)) { - const chalk = getChalk(options); - const defs = getDefs(chalk); - return highlightTokens(defs, code); - } else { - return code; - } -} - -/***/ }), - -/***/ 89302: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -const beforeExpr = true; -const startsExpr = true; -const isLoop = true; -const isAssign = true; -const prefix = true; -const postfix = true; -class TokenType { - constructor(label, conf = {}) { - this.label = void 0; - this.keyword = void 0; - this.beforeExpr = void 0; - this.startsExpr = void 0; - this.rightAssociative = void 0; - this.isLoop = void 0; - this.isAssign = void 0; - this.prefix = void 0; - this.postfix = void 0; - this.binop = void 0; - this.updateContext = void 0; - this.label = label; - this.keyword = conf.keyword; - this.beforeExpr = !!conf.beforeExpr; - this.startsExpr = !!conf.startsExpr; - this.rightAssociative = !!conf.rightAssociative; - this.isLoop = !!conf.isLoop; - this.isAssign = !!conf.isAssign; - this.prefix = !!conf.prefix; - this.postfix = !!conf.postfix; - this.binop = conf.binop != null ? conf.binop : null; - this.updateContext = null; - } - -} -const keywords$1 = new Map(); - -function createKeyword(name, options = {}) { - options.keyword = name; - const token = new TokenType(name, options); - keywords$1.set(name, token); - return token; -} - -function createBinop(name, binop) { - return new TokenType(name, { - beforeExpr, - binop - }); -} - -const types$1 = { - num: new TokenType("num", { - startsExpr - }), - bigint: new TokenType("bigint", { - startsExpr - }), - decimal: new TokenType("decimal", { - startsExpr - }), - regexp: new TokenType("regexp", { - startsExpr - }), - string: new TokenType("string", { - startsExpr - }), - name: new TokenType("name", { - startsExpr - }), - privateName: new TokenType("#name", { - startsExpr - }), - eof: new TokenType("eof"), - bracketL: new TokenType("[", { - beforeExpr, - startsExpr - }), - bracketHashL: new TokenType("#[", { - beforeExpr, - startsExpr - }), - bracketBarL: new TokenType("[|", { - beforeExpr, - startsExpr - }), - bracketR: new TokenType("]"), - bracketBarR: new TokenType("|]"), - braceL: new TokenType("{", { - beforeExpr, - startsExpr - }), - braceBarL: new TokenType("{|", { - beforeExpr, - startsExpr - }), - braceHashL: new TokenType("#{", { - beforeExpr, - startsExpr - }), - braceR: new TokenType("}", { - beforeExpr - }), - braceBarR: new TokenType("|}"), - parenL: new TokenType("(", { - beforeExpr, - startsExpr - }), - parenR: new TokenType(")"), - comma: new TokenType(",", { - beforeExpr - }), - semi: new TokenType(";", { - beforeExpr - }), - colon: new TokenType(":", { - beforeExpr - }), - doubleColon: new TokenType("::", { - beforeExpr - }), - dot: new TokenType("."), - question: new TokenType("?", { - beforeExpr - }), - questionDot: new TokenType("?."), - arrow: new TokenType("=>", { - beforeExpr - }), - template: new TokenType("template"), - ellipsis: new TokenType("...", { - beforeExpr - }), - backQuote: new TokenType("`", { - startsExpr - }), - dollarBraceL: new TokenType("${", { - beforeExpr, - startsExpr - }), - at: new TokenType("@"), - hash: new TokenType("#", { - startsExpr - }), - interpreterDirective: new TokenType("#!..."), - eq: new TokenType("=", { - beforeExpr, - isAssign - }), - assign: new TokenType("_=", { - beforeExpr, - isAssign - }), - slashAssign: new TokenType("_=", { - beforeExpr, - isAssign - }), - moduloAssign: new TokenType("_=", { - beforeExpr, - isAssign - }), - incDec: new TokenType("++/--", { - prefix, - postfix, - startsExpr - }), - bang: new TokenType("!", { - beforeExpr, - prefix, - startsExpr - }), - tilde: new TokenType("~", { - beforeExpr, - prefix, - startsExpr - }), - pipeline: createBinop("|>", 0), - nullishCoalescing: createBinop("??", 1), - logicalOR: createBinop("||", 1), - logicalAND: createBinop("&&", 2), - bitwiseOR: createBinop("|", 3), - bitwiseXOR: createBinop("^", 4), - bitwiseAND: createBinop("&", 5), - equality: createBinop("==/!=/===/!==", 6), - relational: createBinop("</>/<=/>=", 7), - bitShift: createBinop("<</>>/>>>", 8), - plusMin: new TokenType("+/-", { - beforeExpr, - binop: 9, - prefix, - startsExpr - }), - modulo: new TokenType("%", { - binop: 10, - startsExpr - }), - star: new TokenType("*", { - binop: 10 - }), - slash: createBinop("/", 10), - exponent: new TokenType("**", { - beforeExpr, - binop: 11, - rightAssociative: true - }), - _break: createKeyword("break"), - _case: createKeyword("case", { - beforeExpr - }), - _catch: createKeyword("catch"), - _continue: createKeyword("continue"), - _debugger: createKeyword("debugger"), - _default: createKeyword("default", { - beforeExpr - }), - _do: createKeyword("do", { - isLoop, - beforeExpr - }), - _else: createKeyword("else", { - beforeExpr - }), - _finally: createKeyword("finally"), - _for: createKeyword("for", { - isLoop - }), - _function: createKeyword("function", { - startsExpr - }), - _if: createKeyword("if"), - _return: createKeyword("return", { - beforeExpr - }), - _switch: createKeyword("switch"), - _throw: createKeyword("throw", { - beforeExpr, - prefix, - startsExpr - }), - _try: createKeyword("try"), - _var: createKeyword("var"), - _const: createKeyword("const"), - _while: createKeyword("while", { - isLoop - }), - _with: createKeyword("with"), - _new: createKeyword("new", { - beforeExpr, - startsExpr - }), - _this: createKeyword("this", { - startsExpr - }), - _super: createKeyword("super", { - startsExpr - }), - _class: createKeyword("class", { - startsExpr - }), - _extends: createKeyword("extends", { - beforeExpr - }), - _export: createKeyword("export"), - _import: createKeyword("import", { - startsExpr - }), - _null: createKeyword("null", { - startsExpr - }), - _true: createKeyword("true", { - startsExpr - }), - _false: createKeyword("false", { - startsExpr - }), - _in: createKeyword("in", { - beforeExpr, - binop: 7 - }), - _instanceof: createKeyword("instanceof", { - beforeExpr, - binop: 7 - }), - _typeof: createKeyword("typeof", { - beforeExpr, - prefix, - startsExpr - }), - _void: createKeyword("void", { - beforeExpr, - prefix, - startsExpr - }), - _delete: createKeyword("delete", { - beforeExpr, - prefix, - startsExpr - }) -}; - -const lineBreak = /\r\n?|[\n\u2028\u2029]/; -const lineBreakG = new RegExp(lineBreak.source, "g"); -function isNewLine(code) { - switch (code) { - case 10: - case 13: - case 8232: - case 8233: - return true; - - default: - return false; - } -} -const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; -const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y; -const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y"); -function isWhitespace(code) { - switch (code) { - case 0x0009: - case 0x000b: - case 0x000c: - case 32: - case 160: - case 5760: - case 0x2000: - case 0x2001: - case 0x2002: - case 0x2003: - case 0x2004: - case 0x2005: - case 0x2006: - case 0x2007: - case 0x2008: - case 0x2009: - case 0x200a: - case 0x202f: - case 0x205f: - case 0x3000: - case 0xfeff: - return true; - - default: - return false; - } -} - -class Position { - constructor(line, col) { - this.line = void 0; - this.column = void 0; - this.line = line; - this.column = col; - } - -} -class SourceLocation { - constructor(start, end) { - this.start = void 0; - this.end = void 0; - this.filename = void 0; - this.identifierName = void 0; - this.start = start; - this.end = end; - } - -} -function getLineInfo(input, offset) { - let line = 1; - let lineStart = 0; - let match; - lineBreakG.lastIndex = 0; - - while ((match = lineBreakG.exec(input)) && match.index < offset) { - line++; - lineStart = lineBreakG.lastIndex; - } - - return new Position(line, offset - lineStart); -} - -class BaseParser { - constructor() { - this.sawUnambiguousESM = false; - this.ambiguousScriptDifferentAst = false; - } - - hasPlugin(name) { - return this.plugins.has(name); - } - - getPluginOption(plugin, name) { - if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name]; - } - -} - -function setTrailingComments(node, comments) { - if (node.trailingComments === undefined) { - node.trailingComments = comments; - } else { - node.trailingComments.unshift(...comments); - } -} - -function setInnerComments(node, comments) { - if (node.innerComments === undefined) { - node.innerComments = comments; - } else if (comments !== undefined) { - node.innerComments.unshift(...comments); - } -} - -function adjustInnerComments(node, elements, commentWS) { - let lastElement = null; - let i = elements.length; - - while (lastElement === null && i > 0) { - lastElement = elements[--i]; - } - - if (lastElement === null || lastElement.start > commentWS.start) { - setInnerComments(node, commentWS.comments); - } else { - setTrailingComments(lastElement, commentWS.comments); - } -} - -class CommentsParser extends BaseParser { - addComment(comment) { - if (this.filename) comment.loc.filename = this.filename; - this.state.comments.push(comment); - } - - processComment(node) { - const { - commentStack - } = this.state; - const commentStackLength = commentStack.length; - if (commentStackLength === 0) return; - let i = commentStackLength - 1; - const lastCommentWS = commentStack[i]; - - if (lastCommentWS.start === node.end) { - lastCommentWS.leadingNode = node; - i--; - } - - const { - start: nodeStart - } = node; - - for (; i >= 0; i--) { - const commentWS = commentStack[i]; - const commentEnd = commentWS.end; - - if (commentEnd > nodeStart) { - commentWS.containingNode = node; - this.finalizeComment(commentWS); - commentStack.splice(i, 1); - } else { - if (commentEnd === nodeStart) { - commentWS.trailingNode = node; - } - - break; - } - } - } - - finalizeComment(commentWS) { - const { - comments - } = commentWS; - - if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { - if (commentWS.leadingNode !== null) { - setTrailingComments(commentWS.leadingNode, comments); - } - - if (commentWS.trailingNode !== null) { - commentWS.trailingNode.leadingComments = comments; - } - } else { - const { - containingNode: node, - start: commentStart - } = commentWS; - - if (this.input.charCodeAt(commentStart - 1) === 44) { - switch (node.type) { - case "ObjectExpression": - case "ObjectPattern": - case "RecordExpression": - adjustInnerComments(node, node.properties, commentWS); - break; - - case "CallExpression": - case "OptionalCallExpression": - adjustInnerComments(node, node.arguments, commentWS); - break; - - case "FunctionDeclaration": - case "FunctionExpression": - case "ArrowFunctionExpression": - case "ObjectMethod": - case "ClassMethod": - case "ClassPrivateMethod": - adjustInnerComments(node, node.params, commentWS); - break; - - case "ArrayExpression": - case "ArrayPattern": - case "TupleExpression": - adjustInnerComments(node, node.elements, commentWS); - break; - - case "ExportNamedDeclaration": - case "ImportDeclaration": - adjustInnerComments(node, node.specifiers, commentWS); - break; - - default: - { - setInnerComments(node, comments); - } - } - } else { - setInnerComments(node, comments); - } - } - } - - finalizeRemainingComments() { - const { - commentStack - } = this.state; - - for (let i = commentStack.length - 1; i >= 0; i--) { - this.finalizeComment(commentStack[i]); - } - - this.state.commentStack = []; - } - - resetPreviousNodeTrailingComments(node) { - const { - commentStack - } = this.state; - const { - length - } = commentStack; - if (length === 0) return; - const commentWS = commentStack[length - 1]; - - if (commentWS.leadingNode === node) { - commentWS.leadingNode = null; - } - } - -} - -const ErrorCodes = Object.freeze({ - SyntaxError: "BABEL_PARSER_SYNTAX_ERROR", - SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED" -}); - -const ErrorMessages = makeErrorTemplates({ - AccessorIsGenerator: "A %0ter cannot be a generator.", - ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", - AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", - AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", - AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", - AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", - AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", - AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", - BadGetterArity: "A 'get' accesor must not have any formal parameters.", - BadSetterArity: "A 'set' accesor must have exactly one formal parameter.", - BadSetterRestParameter: "A 'set' accesor function argument must not be a rest parameter.", - ConstructorClassField: "Classes may not have a field named 'constructor'.", - ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", - ConstructorIsAccessor: "Class constructor may not be an accessor.", - ConstructorIsAsync: "Constructor can't be an async function.", - ConstructorIsGenerator: "Constructor can't be a generator.", - DeclarationMissingInitializer: "'%0' require an initialization value.", - DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.", - DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", - DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.", - DecoratorSemicolon: "Decorators must not be followed by a semicolon.", - DecoratorStaticBlock: "Decorators can't be used with a static block.", - DeletePrivateField: "Deleting a private field is not allowed.", - DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", - DuplicateConstructor: "Duplicate constructor in the same class.", - DuplicateDefaultExport: "Only one default export allowed per module.", - DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.", - DuplicateProto: "Redefinition of __proto__ property.", - DuplicateRegExpFlags: "Duplicate regular expression flag.", - ElementAfterRest: "Rest element must be last element.", - EscapedCharNotAnIdentifier: "Invalid Unicode escape.", - ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?", - ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", - ForInOfLoopInitializer: "'%0' loop variable declaration may not have an initializer.", - ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", - ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", - GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", - IllegalBreakContinue: "Unsyntactic %0.", - IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", - IllegalReturn: "'return' outside of function.", - ImportBindingIsString: 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "%0" as foo }`?', - ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", - ImportCallArity: "`import()` requires exactly %0.", - ImportCallNotNewExpression: "Cannot use new with import(...).", - ImportCallSpreadArgument: "`...` is not allowed in `import()`.", - InvalidBigIntLiteral: "Invalid BigIntLiteral.", - InvalidCodePoint: "Code point out of bounds.", - InvalidDecimal: "Invalid decimal.", - InvalidDigit: "Expected number in radix %0.", - InvalidEscapeSequence: "Bad character escape sequence.", - InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", - InvalidEscapedReservedWord: "Escape sequence in keyword %0.", - InvalidIdentifier: "Invalid identifier %0.", - InvalidLhs: "Invalid left-hand side in %0.", - InvalidLhsBinding: "Binding invalid left-hand side in %0.", - InvalidNumber: "Invalid number.", - InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", - InvalidOrUnexpectedToken: "Unexpected character '%0'.", - InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", - InvalidPrivateFieldResolution: "Private name #%0 is not defined.", - InvalidPropertyBindingPattern: "Binding member expression.", - InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", - InvalidRestAssignmentPattern: "Invalid rest operator's argument.", - LabelRedeclaration: "Label '%0' is already declared.", - LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.", - LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", - MalformedRegExpFlags: "Invalid regular expression flag.", - MissingClassName: "A class name is required.", - MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", - MissingSemicolon: "Missing semicolon.", - MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", - MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", - ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", - ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", - ModuleAttributesWithDuplicateKeys: 'Duplicate key "%0" is not allowed in module attributes.', - ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found '\\u%0'.", - ModuleExportUndefined: "Export '%0' is not defined.", - MultipleDefaultsInSwitch: "Multiple default clauses.", - NewlineAfterThrow: "Illegal newline after throw.", - NoCatchOrFinally: "Missing catch or finally clause.", - NumberIdentifier: "Identifier directly after number.", - NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", - ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", - OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", - OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", - OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", - ParamDupe: "Argument name clash.", - PatternHasAccessor: "Object pattern can't contain getter or setter.", - PatternHasMethod: "Object pattern can't contain methods.", - PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", - PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', - PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", - PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.', - PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", - PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', - PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", - PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", - PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", - PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", - PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', - PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).", - PrivateNameRedeclaration: "Duplicate private name #%0.", - RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", - RecordNoProto: "'__proto__' is not allowed in Record expressions.", - RestTrailingComma: "Unexpected trailing comma after rest element.", - SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", - StaticPrototype: "Classes may not have static property named prototype.", - StrictDelete: "Deleting local variable in strict mode.", - StrictEvalArguments: "Assigning to '%0' in strict mode.", - StrictEvalArgumentsBinding: "Binding '%0' in strict mode.", - StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", - StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", - StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", - StrictWith: "'with' in strict mode.", - SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", - SuperPrivateField: "Private fields can't be accessed on super.", - TrailingDecorator: "Decorators must be attached to a class element.", - TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", - TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", - UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", - UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', - UnexpectedDigitAfterHash: "Unexpected digit after hash token.", - UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", - UnexpectedKeyword: "Unexpected keyword '%0'.", - UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", - UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", - UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", - UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", - UnexpectedPrivateField: "Private names can only be used as the name of a class element (i.e. class C { #p = 42; #m() {} } )\n or a property of member expression (i.e. this.#p).", - UnexpectedReservedWord: "Unexpected reserved word '%0'.", - UnexpectedSuper: "'super' is only allowed in object methods and classes.", - UnexpectedToken: "Unexpected token '%0'.", - UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", - UnsupportedBind: "Binding should be performed on object property.", - UnsupportedDecoratorExport: "A decorated export must export a class declaration.", - UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", - UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", - UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.", - UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", - UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", - UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", - UnterminatedComment: "Unterminated comment.", - UnterminatedRegExp: "Unterminated regular expression.", - UnterminatedString: "Unterminated string constant.", - UnterminatedTemplate: "Unterminated template.", - VarRedeclaration: "Identifier '%0' has already been declared.", - YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", - YieldInParameter: "Yield expression is not allowed in formal parameters.", - ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." -}, ErrorCodes.SyntaxError); -const SourceTypeModuleErrorMessages = makeErrorTemplates({ - ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: "module"'`, - ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: "module"'` -}, ErrorCodes.SourceTypeModuleError); - -function makeErrorTemplates(messages, code) { - const templates = {}; - Object.keys(messages).forEach(reasonCode => { - templates[reasonCode] = Object.freeze({ - code, - reasonCode, - template: messages[reasonCode] - }); - }); - return Object.freeze(templates); -} -class ParserError extends CommentsParser { - getLocationForPosition(pos) { - let loc; - if (pos === this.state.start) loc = this.state.startLoc;else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;else if (pos === this.state.end) loc = this.state.endLoc;else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;else loc = getLineInfo(this.input, pos); - return loc; - } - - raise(pos, { - code, - reasonCode, - template - }, ...params) { - return this.raiseWithData(pos, { - code, - reasonCode - }, template, ...params); - } - - raiseOverwrite(pos, { - code, - template - }, ...params) { - const loc = this.getLocationForPosition(pos); - const message = template.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`; - - if (this.options.errorRecovery) { - const errors = this.state.errors; - - for (let i = errors.length - 1; i >= 0; i--) { - const error = errors[i]; - - if (error.pos === pos) { - return Object.assign(error, { - message - }); - } else if (error.pos < pos) { - break; - } - } - } - - return this._raise({ - code, - loc, - pos - }, message); - } - - raiseWithData(pos, data, errorTemplate, ...params) { - const loc = this.getLocationForPosition(pos); - const message = errorTemplate.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`; - return this._raise(Object.assign({ - loc, - pos - }, data), message); - } - - _raise(errorContext, message) { - const err = new SyntaxError(message); - Object.assign(err, errorContext); - - if (this.options.errorRecovery) { - if (!this.isLookahead) this.state.errors.push(err); - return err; - } else { - throw err; - } - } - -} - -var estree = (superClass => class extends superClass { - parseRegExpLiteral({ - pattern, - flags - }) { - let regex = null; - - try { - regex = new RegExp(pattern, flags); - } catch (e) {} - - const node = this.estreeParseLiteral(regex); - node.regex = { - pattern, - flags - }; - return node; - } - - parseBigIntLiteral(value) { - let bigInt; - - try { - bigInt = BigInt(value); - } catch (_unused) { - bigInt = null; - } - - const node = this.estreeParseLiteral(bigInt); - node.bigint = String(node.value || value); - return node; - } - - parseDecimalLiteral(value) { - const decimal = null; - const node = this.estreeParseLiteral(decimal); - node.decimal = String(node.value || value); - return node; - } - - estreeParseLiteral(value) { - return this.parseLiteral(value, "Literal"); - } - - parseStringLiteral(value) { - return this.estreeParseLiteral(value); - } - - parseNumericLiteral(value) { - return this.estreeParseLiteral(value); - } - - parseNullLiteral() { - return this.estreeParseLiteral(null); - } - - parseBooleanLiteral(value) { - return this.estreeParseLiteral(value); - } - - directiveToStmt(directive) { - const directiveLiteral = directive.value; - const stmt = this.startNodeAt(directive.start, directive.loc.start); - const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start); - expression.value = directiveLiteral.extra.expressionValue; - expression.raw = directiveLiteral.extra.raw; - stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.end, directiveLiteral.loc.end); - stmt.directive = directiveLiteral.extra.raw.slice(1, -1); - return this.finishNodeAt(stmt, "ExpressionStatement", directive.end, directive.loc.end); - } - - initFunction(node, isAsync) { - super.initFunction(node, isAsync); - node.expression = false; - } - - checkDeclaration(node) { - if (node != null && this.isObjectProperty(node)) { - this.checkDeclaration(node.value); - } else { - super.checkDeclaration(node); - } - } - - getObjectOrClassMethodParams(method) { - return method.value.params; - } - - isValidDirective(stmt) { - var _stmt$expression$extr; - - return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); - } - - stmtToDirective(stmt) { - const value = stmt.expression.value; - const directive = super.stmtToDirective(stmt); - this.addExtra(directive.value, "expressionValue", value); - return directive; - } - - parseBlockBody(node, ...args) { - super.parseBlockBody(node, ...args); - const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); - node.body = directiveStatements.concat(node.body); - delete node.directives; - } - - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); - - if (method.typeParameters) { - method.value.typeParameters = method.typeParameters; - delete method.typeParameters; - } - - classBody.body.push(method); - } - - parseMaybePrivateName(...args) { - const node = super.parseMaybePrivateName(...args); - - if (node.type === "PrivateName" && this.getPluginOption("estree", "classFeatures")) { - return this.convertPrivateNameToPrivateIdentifier(node); - } - - return node; - } - - convertPrivateNameToPrivateIdentifier(node) { - const name = super.getPrivateNameSV(node); - node = node; - delete node.id; - node.name = name; - node.type = "PrivateIdentifier"; - return node; - } - - isPrivateName(node) { - if (!this.getPluginOption("estree", "classFeatures")) { - return super.isPrivateName(node); - } - - return node.type === "PrivateIdentifier"; - } - - getPrivateNameSV(node) { - if (!this.getPluginOption("estree", "classFeatures")) { - return super.getPrivateNameSV(node); - } - - return node.name; - } - - parseLiteral(value, type) { - const node = super.parseLiteral(value, type); - node.raw = node.extra.raw; - delete node.extra; - return node; - } - - parseFunctionBody(node, allowExpression, isMethod = false) { - super.parseFunctionBody(node, allowExpression, isMethod); - node.expression = node.body.type !== "BlockStatement"; - } - - parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { - let funcNode = this.startNode(); - funcNode.kind = node.kind; - funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); - funcNode.type = "FunctionExpression"; - delete funcNode.kind; - node.value = funcNode; - - if (type === "ClassPrivateMethod") { - node.computed = false; - } - - type = "MethodDefinition"; - return this.finishNode(node, type); - } - - parseClassProperty(...args) { - const propertyNode = super.parseClassProperty(...args); - - if (this.getPluginOption("estree", "classFeatures")) { - propertyNode.type = "PropertyDefinition"; - } - - return propertyNode; - } - - parseClassPrivateProperty(...args) { - const propertyNode = super.parseClassPrivateProperty(...args); - - if (this.getPluginOption("estree", "classFeatures")) { - propertyNode.type = "PropertyDefinition"; - propertyNode.computed = false; - } - - return propertyNode; - } - - parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { - const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor); - - if (node) { - node.type = "Property"; - if (node.kind === "method") node.kind = "init"; - node.shorthand = false; - } - - return node; - } - - parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) { - const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors); - - if (node) { - node.kind = "init"; - node.type = "Property"; - } - - return node; - } - - isAssignable(node, isBinding) { - if (node != null && this.isObjectProperty(node)) { - return this.isAssignable(node.value, isBinding); - } - - return super.isAssignable(node, isBinding); - } - - toAssignable(node, isLHS = false) { - if (node != null && this.isObjectProperty(node)) { - this.toAssignable(node.value, isLHS); - return node; - } - - return super.toAssignable(node, isLHS); - } - - toAssignableObjectExpressionProp(prop, ...args) { - if (prop.kind === "get" || prop.kind === "set") { - this.raise(prop.key.start, ErrorMessages.PatternHasAccessor); - } else if (prop.method) { - this.raise(prop.key.start, ErrorMessages.PatternHasMethod); - } else { - super.toAssignableObjectExpressionProp(prop, ...args); - } - } - - finishCallExpression(node, optional) { - super.finishCallExpression(node, optional); - - if (node.callee.type === "Import") { - node.type = "ImportExpression"; - node.source = node.arguments[0]; - - if (this.hasPlugin("importAssertions")) { - var _node$arguments$; - - node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null; - } - - delete node.arguments; - delete node.callee; - } - - return node; - } - - toReferencedArguments(node) { - if (node.type === "ImportExpression") { - return; - } - - super.toReferencedArguments(node); - } - - parseExport(node) { - super.parseExport(node); - - switch (node.type) { - case "ExportAllDeclaration": - node.exported = null; - break; - - case "ExportNamedDeclaration": - if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { - node.type = "ExportAllDeclaration"; - node.exported = node.specifiers[0].exported; - delete node.specifiers; - } - - break; - } - - return node; - } - - parseSubscript(base, startPos, startLoc, noCalls, state) { - const node = super.parseSubscript(base, startPos, startLoc, noCalls, state); - - if (state.optionalChainMember) { - if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") { - node.type = node.type.substring(8); - } - - if (state.stop) { - const chain = this.startNodeAtNode(node); - chain.expression = node; - return this.finishNode(chain, "ChainExpression"); - } - } else if (node.type === "MemberExpression" || node.type === "CallExpression") { - node.optional = false; - } - - return node; - } - - hasPropertyAsPrivateName(node) { - if (node.type === "ChainExpression") { - node = node.expression; - } - - return super.hasPropertyAsPrivateName(node); - } - - isOptionalChain(node) { - return node.type === "ChainExpression"; - } - - isObjectProperty(node) { - return node.type === "Property" && node.kind === "init" && !node.method; - } - - isObjectMethod(node) { - return node.method || node.kind === "get" || node.kind === "set"; - } - -}); - -class TokContext { - constructor(token, preserveSpace) { - this.token = void 0; - this.preserveSpace = void 0; - this.token = token; - this.preserveSpace = !!preserveSpace; - } - -} -const types = { - brace: new TokContext("{"), - template: new TokContext("`", true) -}; - -types$1.braceR.updateContext = context => { - context.pop(); -}; - -types$1.braceL.updateContext = types$1.braceHashL.updateContext = types$1.dollarBraceL.updateContext = context => { - context.push(types.brace); -}; - -types$1.backQuote.updateContext = context => { - if (context[context.length - 1] === types.template) { - context.pop(); - } else { - context.push(types.template); - } -}; - -let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08c7\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\u9ffc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7ca\ua7f5-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf\u1ac0\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; -const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); -nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; -const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 107, 20, 28, 22, 13, 52, 76, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 230, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 35, 56, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8952, 286, 50, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 2357, 44, 11, 6, 17, 0, 370, 43, 1301, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42717, 35, 4148, 12, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938]; -const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 176, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 135, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 419, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; - -function isInAstralSet(code, set) { - let pos = 0x10000; - - for (let i = 0, length = set.length; i < length; i += 2) { - pos += set[i]; - if (pos > code) return false; - pos += set[i + 1]; - if (pos >= code) return true; - } - - return false; -} - -function isIdentifierStart(code) { - if (code < 65) return code === 36; - if (code <= 90) return true; - if (code < 97) return code === 95; - if (code <= 122) return true; - - if (code <= 0xffff) { - return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); - } - - return isInAstralSet(code, astralIdentifierStartCodes); -} -function isIdentifierChar(code) { - if (code < 48) return code === 36; - if (code < 58) return true; - if (code < 65) return false; - if (code <= 90) return true; - if (code < 97) return code === 95; - if (code <= 122) return true; - - if (code <= 0xffff) { - return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); - } - - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); -} - -const reservedWords = { - keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], - strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], - strictBind: ["eval", "arguments"] -}; -const keywords = new Set(reservedWords.keyword); -const reservedWordsStrictSet = new Set(reservedWords.strict); -const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); -function isReservedWord(word, inModule) { - return inModule && word === "await" || word === "enum"; -} -function isStrictReservedWord(word, inModule) { - return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); -} -function isStrictBindOnlyReservedWord(word) { - return reservedWordsStrictBindSet.has(word); -} -function isStrictBindReservedWord(word, inModule) { - return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); -} -function isKeyword(word) { - return keywords.has(word); -} - -function isIteratorStart(current, next) { - return current === 64 && next === 64; -} -const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); -function canBeReservedWord(word) { - return reservedWordLikeSet.has(word); -} - -const SCOPE_OTHER = 0b000000000, - SCOPE_PROGRAM = 0b000000001, - SCOPE_FUNCTION = 0b000000010, - SCOPE_ARROW = 0b000000100, - SCOPE_SIMPLE_CATCH = 0b000001000, - SCOPE_SUPER = 0b000010000, - SCOPE_DIRECT_SUPER = 0b000100000, - SCOPE_CLASS = 0b001000000, - SCOPE_STATIC_BLOCK = 0b010000000, - SCOPE_TS_MODULE = 0b100000000, - SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE; -const BIND_KIND_VALUE = 0b000000000001, - BIND_KIND_TYPE = 0b000000000010, - BIND_SCOPE_VAR = 0b000000000100, - BIND_SCOPE_LEXICAL = 0b000000001000, - BIND_SCOPE_FUNCTION = 0b000000010000, - BIND_FLAGS_NONE = 0b000001000000, - BIND_FLAGS_CLASS = 0b000010000000, - BIND_FLAGS_TS_ENUM = 0b000100000000, - BIND_FLAGS_TS_CONST_ENUM = 0b001000000000, - BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000, - BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000; -const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS, - BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0, - BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0, - BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0, - BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS, - BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0, - BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM, - BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, - BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE, - BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE, - BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM, - BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY, - BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN; -const CLASS_ELEMENT_FLAG_STATIC = 0b100, - CLASS_ELEMENT_KIND_GETTER = 0b010, - CLASS_ELEMENT_KIND_SETTER = 0b001, - CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER; -const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC, - CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC, - CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER, - CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER, - CLASS_ELEMENT_OTHER = 0; - -class Scope { - constructor(flags) { - this.var = new Set(); - this.lexical = new Set(); - this.functions = new Set(); - this.flags = flags; - } - -} -class ScopeHandler { - constructor(raise, inModule) { - this.scopeStack = []; - this.undefinedExports = new Map(); - this.undefinedPrivateNames = new Map(); - this.raise = raise; - this.inModule = inModule; - } - - get inFunction() { - return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0; - } - - get allowSuper() { - return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0; - } - - get allowDirectSuper() { - return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0; - } - - get inClass() { - return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0; - } - - get inClassAndNotInNonArrowFunction() { - const flags = this.currentThisScopeFlags(); - return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0; - } - - get inStaticBlock() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; - - if (flags & SCOPE_STATIC_BLOCK) { - return true; - } - - if (flags & (SCOPE_VAR | SCOPE_CLASS)) { - return false; - } - } - } - - get inNonArrowFunction() { - return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0; - } - - get treatFunctionsAsVar() { - return this.treatFunctionsAsVarInScope(this.currentScope()); - } - - createScope(flags) { - return new Scope(flags); - } - - enter(flags) { - this.scopeStack.push(this.createScope(flags)); - } - - exit() { - this.scopeStack.pop(); - } - - treatFunctionsAsVarInScope(scope) { - return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM); - } - - declareName(name, bindingType, pos) { - let scope = this.currentScope(); - - if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) { - this.checkRedeclarationInScope(scope, name, bindingType, pos); - - if (bindingType & BIND_SCOPE_FUNCTION) { - scope.functions.add(name); - } else { - scope.lexical.add(name); - } - - if (bindingType & BIND_SCOPE_LEXICAL) { - this.maybeExportDefined(scope, name); - } - } else if (bindingType & BIND_SCOPE_VAR) { - for (let i = this.scopeStack.length - 1; i >= 0; --i) { - scope = this.scopeStack[i]; - this.checkRedeclarationInScope(scope, name, bindingType, pos); - scope.var.add(name); - this.maybeExportDefined(scope, name); - if (scope.flags & SCOPE_VAR) break; - } - } - - if (this.inModule && scope.flags & SCOPE_PROGRAM) { - this.undefinedExports.delete(name); - } - } - - maybeExportDefined(scope, name) { - if (this.inModule && scope.flags & SCOPE_PROGRAM) { - this.undefinedExports.delete(name); - } - } - - checkRedeclarationInScope(scope, name, bindingType, pos) { - if (this.isRedeclaredInScope(scope, name, bindingType)) { - this.raise(pos, ErrorMessages.VarRedeclaration, name); - } - } - - isRedeclaredInScope(scope, name, bindingType) { - if (!(bindingType & BIND_KIND_VALUE)) return false; - - if (bindingType & BIND_SCOPE_LEXICAL) { - return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); - } - - if (bindingType & BIND_SCOPE_FUNCTION) { - return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); - } - - return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); - } - - checkLocalExport(id) { - const { - name - } = id; - const topLevelScope = this.scopeStack[0]; - - if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { - this.undefinedExports.set(name, id.start); - } - } - - currentScope() { - return this.scopeStack[this.scopeStack.length - 1]; - } - - currentVarScopeFlags() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; - - if (flags & SCOPE_VAR) { - return flags; - } - } - } - - currentThisScopeFlags() { - for (let i = this.scopeStack.length - 1;; i--) { - const { - flags - } = this.scopeStack[i]; - - if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) { - return flags; - } - } - } - -} - -class FlowScope extends Scope { - constructor(...args) { - super(...args); - this.declareFunctions = new Set(); - } - -} - -class FlowScopeHandler extends ScopeHandler { - createScope(flags) { - return new FlowScope(flags); - } - - declareName(name, bindingType, pos) { - const scope = this.currentScope(); - - if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { - this.checkRedeclarationInScope(scope, name, bindingType, pos); - this.maybeExportDefined(scope, name); - scope.declareFunctions.add(name); - return; - } - - super.declareName(...arguments); - } - - isRedeclaredInScope(scope, name, bindingType) { - if (super.isRedeclaredInScope(...arguments)) return true; - - if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) { - return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); - } - - return false; - } - - checkLocalExport(id) { - if (!this.scopeStack[0].declareFunctions.has(id.name)) { - super.checkLocalExport(id); - } - } - -} - -class State { - constructor() { - this.strict = void 0; - this.curLine = void 0; - this.startLoc = void 0; - this.endLoc = void 0; - this.errors = []; - this.potentialArrowAt = -1; - this.noArrowAt = []; - this.noArrowParamsConversionAt = []; - this.maybeInArrowParameters = false; - this.inType = false; - this.noAnonFunctionType = false; - this.inPropertyName = false; - this.hasFlowComment = false; - this.isAmbientContext = false; - this.inAbstractClass = false; - this.topicContext = { - maxNumOfResolvableTopics: 0, - maxTopicIndex: null - }; - this.soloAwait = false; - this.inFSharpPipelineDirectBody = false; - this.labels = []; - this.decoratorStack = [[]]; - this.comments = []; - this.commentStack = []; - this.pos = 0; - this.lineStart = 0; - this.type = types$1.eof; - this.value = null; - this.start = 0; - this.end = 0; - this.lastTokEndLoc = null; - this.lastTokStartLoc = null; - this.lastTokStart = 0; - this.lastTokEnd = 0; - this.context = [types.brace]; - this.exprAllowed = true; - this.containsEsc = false; - this.strictErrors = new Map(); - this.tokensLength = 0; - } - - init(options) { - this.strict = options.strictMode === false ? false : options.strictMode === true ? true : options.sourceType === "module"; - this.curLine = options.startLine; - this.startLoc = this.endLoc = this.curPosition(); - } - - curPosition() { - return new Position(this.curLine, this.pos - this.lineStart); - } - - clone(skipArrays) { - const state = new State(); - const keys = Object.keys(this); - - for (let i = 0, length = keys.length; i < length; i++) { - const key = keys[i]; - let val = this[key]; - - if (!skipArrays && Array.isArray(val)) { - val = val.slice(); - } - - state[key] = val; - } - - return state; - } - -} - -var _isDigit = function isDigit(code) { - return code >= 48 && code <= 57; -}; -const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100]); -const forbiddenNumericSeparatorSiblings = { - decBinOct: [46, 66, 69, 79, 95, 98, 101, 111], - hex: [46, 88, 95, 120] -}; -const allowedNumericSeparatorSiblings = {}; -allowedNumericSeparatorSiblings.bin = [48, 49]; -allowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55]; -allowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57]; -allowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102]; -class Token { - constructor(state) { - this.type = state.type; - this.value = state.value; - this.start = state.start; - this.end = state.end; - this.loc = new SourceLocation(state.startLoc, state.endLoc); - } - -} -class Tokenizer extends ParserError { - constructor(options, input) { - super(); - this.isLookahead = void 0; - this.tokens = []; - this.state = new State(); - this.state.init(options); - this.input = input; - this.length = input.length; - this.isLookahead = false; - } - - pushToken(token) { - this.tokens.length = this.state.tokensLength; - this.tokens.push(token); - ++this.state.tokensLength; - } - - next() { - this.checkKeywordEscapes(); - - if (this.options.tokens) { - this.pushToken(new Token(this.state)); - } - - this.state.lastTokEnd = this.state.end; - this.state.lastTokStart = this.state.start; - this.state.lastTokEndLoc = this.state.endLoc; - this.state.lastTokStartLoc = this.state.startLoc; - this.nextToken(); - } - - eat(type) { - if (this.match(type)) { - this.next(); - return true; - } else { - return false; - } - } - - match(type) { - return this.state.type === type; - } - - createLookaheadState(state) { - return { - pos: state.pos, - value: null, - type: state.type, - start: state.start, - end: state.end, - lastTokEnd: state.end, - context: [this.curContext()], - inType: state.inType - }; - } - - lookahead() { - const old = this.state; - this.state = this.createLookaheadState(old); - this.isLookahead = true; - this.nextToken(); - this.isLookahead = false; - const curr = this.state; - this.state = old; - return curr; - } - - nextTokenStart() { - return this.nextTokenStartSince(this.state.pos); - } - - nextTokenStartSince(pos) { - skipWhiteSpace.lastIndex = pos; - return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; - } - - lookaheadCharCode() { - return this.input.charCodeAt(this.nextTokenStart()); - } - - codePointAtPos(pos) { - let cp = this.input.charCodeAt(pos); - - if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { - const trail = this.input.charCodeAt(pos); - - if ((trail & 0xfc00) === 0xdc00) { - cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); - } - } - - return cp; - } - - setStrict(strict) { - this.state.strict = strict; - - if (strict) { - this.state.strictErrors.forEach((message, pos) => this.raise(pos, message)); - this.state.strictErrors.clear(); - } - } - - curContext() { - return this.state.context[this.state.context.length - 1]; - } - - nextToken() { - const curContext = this.curContext(); - if (!curContext.preserveSpace) this.skipSpace(); - this.state.start = this.state.pos; - if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); - - if (this.state.pos >= this.length) { - this.finishToken(types$1.eof); - return; - } - - if (curContext === types.template) { - this.readTmplToken(); - } else { - this.getTokenFromCode(this.codePointAtPos(this.state.pos)); - } - } - - skipBlockComment() { - let startLoc; - if (!this.isLookahead) startLoc = this.state.curPosition(); - const start = this.state.pos; - const end = this.input.indexOf("*/", start + 2); - if (end === -1) throw this.raise(start, ErrorMessages.UnterminatedComment); - this.state.pos = end + 2; - lineBreakG.lastIndex = start + 2; - - while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { - ++this.state.curLine; - this.state.lineStart = lineBreakG.lastIndex; - } - - if (this.isLookahead) return; - const comment = { - type: "CommentBlock", - value: this.input.slice(start + 2, end), - start, - end: end + 2, - loc: new SourceLocation(startLoc, this.state.curPosition()) - }; - if (this.options.tokens) this.pushToken(comment); - return comment; - } - - skipLineComment(startSkip) { - const start = this.state.pos; - let startLoc; - if (!this.isLookahead) startLoc = this.state.curPosition(); - let ch = this.input.charCodeAt(this.state.pos += startSkip); - - if (this.state.pos < this.length) { - while (!isNewLine(ch) && ++this.state.pos < this.length) { - ch = this.input.charCodeAt(this.state.pos); - } - } - - if (this.isLookahead) return; - const end = this.state.pos; - const value = this.input.slice(start + startSkip, end); - const comment = { - type: "CommentLine", - value, - start, - end, - loc: new SourceLocation(startLoc, this.state.curPosition()) - }; - if (this.options.tokens) this.pushToken(comment); - return comment; - } - - skipSpace() { - const spaceStart = this.state.pos; - const comments = []; - - loop: while (this.state.pos < this.length) { - const ch = this.input.charCodeAt(this.state.pos); - - switch (ch) { - case 32: - case 160: - case 9: - ++this.state.pos; - break; - - case 13: - if (this.input.charCodeAt(this.state.pos + 1) === 10) { - ++this.state.pos; - } - - case 10: - case 8232: - case 8233: - ++this.state.pos; - ++this.state.curLine; - this.state.lineStart = this.state.pos; - break; - - case 47: - switch (this.input.charCodeAt(this.state.pos + 1)) { - case 42: - { - const comment = this.skipBlockComment(); - - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - - break; - } - - case 47: - { - const comment = this.skipLineComment(2); - - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - - break; - } - - default: - break loop; - } - - break; - - default: - if (isWhitespace(ch)) { - ++this.state.pos; - } else if (ch === 45 && !this.inModule) { - const pos = this.state.pos; - - if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { - const comment = this.skipLineComment(3); - - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - } else { - break loop; - } - } else if (ch === 60 && !this.inModule) { - const pos = this.state.pos; - - if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { - const comment = this.skipLineComment(4); - - if (comment !== undefined) { - this.addComment(comment); - if (this.options.attachComment) comments.push(comment); - } - } else { - break loop; - } - } else { - break loop; - } - - } - } - - if (comments.length > 0) { - const end = this.state.pos; - const CommentWhitespace = { - start: spaceStart, - end, - comments, - leadingNode: null, - trailingNode: null, - containingNode: null - }; - this.state.commentStack.push(CommentWhitespace); - } - } - - finishToken(type, val) { - this.state.end = this.state.pos; - const prevType = this.state.type; - this.state.type = type; - this.state.value = val; - - if (!this.isLookahead) { - this.state.endLoc = this.state.curPosition(); - this.updateContext(prevType); - } - } - - readToken_numberSign() { - if (this.state.pos === 0 && this.readToken_interpreter()) { - return; - } - - const nextPos = this.state.pos + 1; - const next = this.codePointAtPos(nextPos); - - if (next >= 48 && next <= 57) { - throw this.raise(this.state.pos, ErrorMessages.UnexpectedDigitAfterHash); - } - - if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { - this.expectPlugin("recordAndTuple"); - - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") { - throw this.raise(this.state.pos, next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType); - } - - this.state.pos += 2; - - if (next === 123) { - this.finishToken(types$1.braceHashL); - } else { - this.finishToken(types$1.bracketHashL); - } - } else if (isIdentifierStart(next)) { - ++this.state.pos; - this.finishToken(types$1.privateName, this.readWord1(next)); - } else if (next === 92) { - ++this.state.pos; - this.finishToken(types$1.privateName, this.readWord1()); - } else { - this.finishOp(types$1.hash, 1); - } - } - - readToken_dot() { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next >= 48 && next <= 57) { - this.readNumber(true); - return; - } - - if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { - this.state.pos += 3; - this.finishToken(types$1.ellipsis); - } else { - ++this.state.pos; - this.finishToken(types$1.dot); - } - } - - readToken_slash() { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next === 61) { - this.finishOp(types$1.slashAssign, 2); - } else { - this.finishOp(types$1.slash, 1); - } - } - - readToken_interpreter() { - if (this.state.pos !== 0 || this.length < 2) return false; - let ch = this.input.charCodeAt(this.state.pos + 1); - if (ch !== 33) return false; - const start = this.state.pos; - this.state.pos += 1; - - while (!isNewLine(ch) && ++this.state.pos < this.length) { - ch = this.input.charCodeAt(this.state.pos); - } - - const value = this.input.slice(start + 2, this.state.pos); - this.finishToken(types$1.interpreterDirective, value); - return true; - } - - readToken_mult_modulo(code) { - let type = code === 42 ? types$1.star : types$1.modulo; - let width = 1; - let next = this.input.charCodeAt(this.state.pos + 1); - - if (code === 42 && next === 42) { - width++; - next = this.input.charCodeAt(this.state.pos + 2); - type = types$1.exponent; - } - - if (next === 61 && !this.state.inType) { - width++; - type = code === 37 ? types$1.moduloAssign : types$1.assign; - } - - this.finishOp(type, width); - } - - readToken_pipe_amp(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next === code) { - if (this.input.charCodeAt(this.state.pos + 2) === 61) { - this.finishOp(types$1.assign, 3); - } else { - this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2); - } - - return; - } - - if (code === 124) { - if (next === 62) { - this.finishOp(types$1.pipeline, 2); - return; - } - - if (this.hasPlugin("recordAndTuple") && next === 125) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType); - } - - this.state.pos += 2; - this.finishToken(types$1.braceBarR); - return; - } - - if (this.hasPlugin("recordAndTuple") && next === 93) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType); - } - - this.state.pos += 2; - this.finishToken(types$1.bracketBarR); - return; - } - } - - if (next === 61) { - this.finishOp(types$1.assign, 2); - return; - } - - this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1); - } - - readToken_caret() { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next === 61) { - this.finishOp(types$1.assign, 2); - } else { - this.finishOp(types$1.bitwiseXOR, 1); - } - } - - readToken_plus_min(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next === code) { - this.finishOp(types$1.incDec, 2); - return; - } - - if (next === 61) { - this.finishOp(types$1.assign, 2); - } else { - this.finishOp(types$1.plusMin, 1); - } - } - - readToken_lt_gt(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - let size = 1; - - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2; - - if (this.input.charCodeAt(this.state.pos + size) === 61) { - this.finishOp(types$1.assign, size + 1); - return; - } - - this.finishOp(types$1.bitShift, size); - return; - } - - if (next === 61) { - size = 2; - } - - this.finishOp(types$1.relational, size); - } - - readToken_eq_excl(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next === 61) { - this.finishOp(types$1.equality, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); - return; - } - - if (code === 61 && next === 62) { - this.state.pos += 2; - this.finishToken(types$1.arrow); - return; - } - - this.finishOp(code === 61 ? types$1.eq : types$1.bang, 1); - } - - readToken_question() { - const next = this.input.charCodeAt(this.state.pos + 1); - const next2 = this.input.charCodeAt(this.state.pos + 2); - - if (next === 63) { - if (next2 === 61) { - this.finishOp(types$1.assign, 3); - } else { - this.finishOp(types$1.nullishCoalescing, 2); - } - } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { - this.state.pos += 2; - this.finishToken(types$1.questionDot); - } else { - ++this.state.pos; - this.finishToken(types$1.question); - } - } - - getTokenFromCode(code) { - switch (code) { - case 46: - this.readToken_dot(); - return; - - case 40: - ++this.state.pos; - this.finishToken(types$1.parenL); - return; - - case 41: - ++this.state.pos; - this.finishToken(types$1.parenR); - return; - - case 59: - ++this.state.pos; - this.finishToken(types$1.semi); - return; - - case 44: - ++this.state.pos; - this.finishToken(types$1.comma); - return; - - case 91: - if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType); - } - - this.state.pos += 2; - this.finishToken(types$1.bracketBarL); - } else { - ++this.state.pos; - this.finishToken(types$1.bracketL); - } - - return; - - case 93: - ++this.state.pos; - this.finishToken(types$1.bracketR); - return; - - case 123: - if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { - if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { - throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType); - } - - this.state.pos += 2; - this.finishToken(types$1.braceBarL); - } else { - ++this.state.pos; - this.finishToken(types$1.braceL); - } - - return; - - case 125: - ++this.state.pos; - this.finishToken(types$1.braceR); - return; - - case 58: - if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { - this.finishOp(types$1.doubleColon, 2); - } else { - ++this.state.pos; - this.finishToken(types$1.colon); - } - - return; - - case 63: - this.readToken_question(); - return; - - case 96: - ++this.state.pos; - this.finishToken(types$1.backQuote); - return; - - case 48: - { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (next === 120 || next === 88) { - this.readRadixNumber(16); - return; - } - - if (next === 111 || next === 79) { - this.readRadixNumber(8); - return; - } - - if (next === 98 || next === 66) { - this.readRadixNumber(2); - return; - } - } - - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - this.readNumber(false); - return; - - case 34: - case 39: - this.readString(code); - return; - - case 47: - this.readToken_slash(); - return; - - case 37: - case 42: - this.readToken_mult_modulo(code); - return; - - case 124: - case 38: - this.readToken_pipe_amp(code); - return; - - case 94: - this.readToken_caret(); - return; - - case 43: - case 45: - this.readToken_plus_min(code); - return; - - case 60: - case 62: - this.readToken_lt_gt(code); - return; - - case 61: - case 33: - this.readToken_eq_excl(code); - return; - - case 126: - this.finishOp(types$1.tilde, 1); - return; - - case 64: - ++this.state.pos; - this.finishToken(types$1.at); - return; - - case 35: - this.readToken_numberSign(); - return; - - case 92: - this.readWord(); - return; - - default: - if (isIdentifierStart(code)) { - this.readWord(code); - return; - } - - } - - throw this.raise(this.state.pos, ErrorMessages.InvalidOrUnexpectedToken, String.fromCodePoint(code)); - } - - finishOp(type, size) { - const str = this.input.slice(this.state.pos, this.state.pos + size); - this.state.pos += size; - this.finishToken(type, str); - } - - readRegexp() { - const start = this.state.start + 1; - let escaped, inClass; - let { - pos - } = this.state; - - for (;; ++pos) { - if (pos >= this.length) { - throw this.raise(start, ErrorMessages.UnterminatedRegExp); - } - - const ch = this.input.charCodeAt(pos); - - if (isNewLine(ch)) { - throw this.raise(start, ErrorMessages.UnterminatedRegExp); - } - - if (escaped) { - escaped = false; - } else { - if (ch === 91) { - inClass = true; - } else if (ch === 93 && inClass) { - inClass = false; - } else if (ch === 47 && !inClass) { - break; - } - - escaped = ch === 92; - } - } - - const content = this.input.slice(start, pos); - ++pos; - let mods = ""; - - while (pos < this.length) { - const cp = this.codePointAtPos(pos); - const char = String.fromCharCode(cp); - - if (VALID_REGEX_FLAGS.has(cp)) { - if (mods.includes(char)) { - this.raise(pos + 1, ErrorMessages.DuplicateRegExpFlags); - } - } else if (isIdentifierChar(cp) || cp === 92) { - this.raise(pos + 1, ErrorMessages.MalformedRegExpFlags); - } else { - break; - } - - ++pos; - mods += char; - } - - this.state.pos = pos; - this.finishToken(types$1.regexp, { - pattern: content, - flags: mods - }); - } - - readInt(radix, len, forceLen, allowNumSeparator = true) { - const start = this.state.pos; - const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; - const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin; - let invalid = false; - let total = 0; - - for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { - const code = this.input.charCodeAt(this.state.pos); - let val; - - if (code === 95) { - const prev = this.input.charCodeAt(this.state.pos - 1); - const next = this.input.charCodeAt(this.state.pos + 1); - - if (allowedSiblings.indexOf(next) === -1) { - this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator); - } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) { - this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator); - } - - if (!allowNumSeparator) { - this.raise(this.state.pos, ErrorMessages.NumericSeparatorInEscapeSequence); - } - - ++this.state.pos; - continue; - } - - if (code >= 97) { - val = code - 97 + 10; - } else if (code >= 65) { - val = code - 65 + 10; - } else if (_isDigit(code)) { - val = code - 48; - } else { - val = Infinity; - } - - if (val >= radix) { - if (this.options.errorRecovery && val <= 9) { - val = 0; - this.raise(this.state.start + i + 2, ErrorMessages.InvalidDigit, radix); - } else if (forceLen) { - val = 0; - invalid = true; - } else { - break; - } - } - - ++this.state.pos; - total = total * radix + val; - } - - if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) { - return null; - } - - return total; - } - - readRadixNumber(radix) { - const start = this.state.pos; - let isBigInt = false; - this.state.pos += 2; - const val = this.readInt(radix); - - if (val == null) { - this.raise(this.state.start + 2, ErrorMessages.InvalidDigit, radix); - } - - const next = this.input.charCodeAt(this.state.pos); - - if (next === 110) { - ++this.state.pos; - isBigInt = true; - } else if (next === 109) { - throw this.raise(start, ErrorMessages.InvalidDecimal); - } - - if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { - throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier); - } - - if (isBigInt) { - const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); - this.finishToken(types$1.bigint, str); - return; - } - - this.finishToken(types$1.num, val); - } - - readNumber(startsWithDot) { - const start = this.state.pos; - let isFloat = false; - let isBigInt = false; - let isDecimal = false; - let hasExponent = false; - let isOctal = false; - - if (!startsWithDot && this.readInt(10) === null) { - this.raise(start, ErrorMessages.InvalidNumber); - } - - const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; - - if (hasLeadingZero) { - const integer = this.input.slice(start, this.state.pos); - this.recordStrictModeErrors(start, ErrorMessages.StrictOctalLiteral); - - if (!this.state.strict) { - const underscorePos = integer.indexOf("_"); - - if (underscorePos > 0) { - this.raise(underscorePos + start, ErrorMessages.ZeroDigitNumericSeparator); - } - } - - isOctal = hasLeadingZero && !/[89]/.test(integer); - } - - let next = this.input.charCodeAt(this.state.pos); - - if (next === 46 && !isOctal) { - ++this.state.pos; - this.readInt(10); - isFloat = true; - next = this.input.charCodeAt(this.state.pos); - } - - if ((next === 69 || next === 101) && !isOctal) { - next = this.input.charCodeAt(++this.state.pos); - - if (next === 43 || next === 45) { - ++this.state.pos; - } - - if (this.readInt(10) === null) { - this.raise(start, ErrorMessages.InvalidOrMissingExponent); - } - - isFloat = true; - hasExponent = true; - next = this.input.charCodeAt(this.state.pos); - } - - if (next === 110) { - if (isFloat || hasLeadingZero) { - this.raise(start, ErrorMessages.InvalidBigIntLiteral); - } - - ++this.state.pos; - isBigInt = true; - } - - if (next === 109) { - this.expectPlugin("decimal", this.state.pos); - - if (hasExponent || hasLeadingZero) { - this.raise(start, ErrorMessages.InvalidDecimal); - } - - ++this.state.pos; - isDecimal = true; - } - - if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { - throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier); - } - - const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); - - if (isBigInt) { - this.finishToken(types$1.bigint, str); - return; - } - - if (isDecimal) { - this.finishToken(types$1.decimal, str); - return; - } - - const val = isOctal ? parseInt(str, 8) : parseFloat(str); - this.finishToken(types$1.num, val); - } - - readCodePoint(throwOnInvalid) { - const ch = this.input.charCodeAt(this.state.pos); - let code; - - if (ch === 123) { - const codePos = ++this.state.pos; - code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, throwOnInvalid); - ++this.state.pos; - - if (code !== null && code > 0x10ffff) { - if (throwOnInvalid) { - this.raise(codePos, ErrorMessages.InvalidCodePoint); - } else { - return null; - } - } - } else { - code = this.readHexChar(4, false, throwOnInvalid); - } - - return code; - } - - readString(quote) { - let out = "", - chunkStart = ++this.state.pos; - - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(this.state.start, ErrorMessages.UnterminatedString); - } - - const ch = this.input.charCodeAt(this.state.pos); - if (ch === quote) break; - - if (ch === 92) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.readEscapedChar(false); - chunkStart = this.state.pos; - } else if (ch === 8232 || ch === 8233) { - ++this.state.pos; - ++this.state.curLine; - this.state.lineStart = this.state.pos; - } else if (isNewLine(ch)) { - throw this.raise(this.state.start, ErrorMessages.UnterminatedString); - } else { - ++this.state.pos; - } - } - - out += this.input.slice(chunkStart, this.state.pos++); - this.finishToken(types$1.string, out); - } - - readTmplToken() { - let out = "", - chunkStart = this.state.pos, - containsInvalid = false; - - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(this.state.start, ErrorMessages.UnterminatedTemplate); - } - - const ch = this.input.charCodeAt(this.state.pos); - - if (ch === 96 || ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) { - if (this.state.pos === this.state.start && this.match(types$1.template)) { - if (ch === 36) { - this.state.pos += 2; - this.finishToken(types$1.dollarBraceL); - return; - } else { - ++this.state.pos; - this.finishToken(types$1.backQuote); - return; - } - } - - out += this.input.slice(chunkStart, this.state.pos); - this.finishToken(types$1.template, containsInvalid ? null : out); - return; - } - - if (ch === 92) { - out += this.input.slice(chunkStart, this.state.pos); - const escaped = this.readEscapedChar(true); - - if (escaped === null) { - containsInvalid = true; - } else { - out += escaped; - } - - chunkStart = this.state.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.state.pos); - ++this.state.pos; - - switch (ch) { - case 13: - if (this.input.charCodeAt(this.state.pos) === 10) { - ++this.state.pos; - } - - case 10: - out += "\n"; - break; - - default: - out += String.fromCharCode(ch); - break; - } - - ++this.state.curLine; - this.state.lineStart = this.state.pos; - chunkStart = this.state.pos; - } else { - ++this.state.pos; - } - } - } - - recordStrictModeErrors(pos, message) { - if (this.state.strict && !this.state.strictErrors.has(pos)) { - this.raise(pos, message); - } else { - this.state.strictErrors.set(pos, message); - } - } - - readEscapedChar(inTemplate) { - const throwOnInvalid = !inTemplate; - const ch = this.input.charCodeAt(++this.state.pos); - ++this.state.pos; - - switch (ch) { - case 110: - return "\n"; - - case 114: - return "\r"; - - case 120: - { - const code = this.readHexChar(2, false, throwOnInvalid); - return code === null ? null : String.fromCharCode(code); - } - - case 117: - { - const code = this.readCodePoint(throwOnInvalid); - return code === null ? null : String.fromCodePoint(code); - } - - case 116: - return "\t"; - - case 98: - return "\b"; - - case 118: - return "\u000b"; - - case 102: - return "\f"; - - case 13: - if (this.input.charCodeAt(this.state.pos) === 10) { - ++this.state.pos; - } - - case 10: - this.state.lineStart = this.state.pos; - ++this.state.curLine; - - case 8232: - case 8233: - return ""; - - case 56: - case 57: - if (inTemplate) { - return null; - } else { - this.recordStrictModeErrors(this.state.pos - 1, ErrorMessages.StrictNumericEscape); - } - - default: - if (ch >= 48 && ch <= 55) { - const codePos = this.state.pos - 1; - const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/); - let octalStr = match[0]; - let octal = parseInt(octalStr, 8); - - if (octal > 255) { - octalStr = octalStr.slice(0, -1); - octal = parseInt(octalStr, 8); - } - - this.state.pos += octalStr.length - 1; - const next = this.input.charCodeAt(this.state.pos); - - if (octalStr !== "0" || next === 56 || next === 57) { - if (inTemplate) { - return null; - } else { - this.recordStrictModeErrors(codePos, ErrorMessages.StrictNumericEscape); - } - } - - return String.fromCharCode(octal); - } - - return String.fromCharCode(ch); - } - } - - readHexChar(len, forceLen, throwOnInvalid) { - const codePos = this.state.pos; - const n = this.readInt(16, len, forceLen, false); - - if (n === null) { - if (throwOnInvalid) { - this.raise(codePos, ErrorMessages.InvalidEscapeSequence); - } else { - this.state.pos = codePos - 1; - } - } - - return n; - } - - readWord1(firstCode) { - this.state.containsEsc = false; - let word = ""; - const start = this.state.pos; - let chunkStart = this.state.pos; - - if (firstCode !== undefined) { - this.state.pos += firstCode <= 0xffff ? 1 : 2; - } - - while (this.state.pos < this.length) { - const ch = this.codePointAtPos(this.state.pos); - - if (isIdentifierChar(ch)) { - this.state.pos += ch <= 0xffff ? 1 : 2; - } else if (ch === 92) { - this.state.containsEsc = true; - word += this.input.slice(chunkStart, this.state.pos); - const escStart = this.state.pos; - const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; - - if (this.input.charCodeAt(++this.state.pos) !== 117) { - this.raise(this.state.pos, ErrorMessages.MissingUnicodeEscape); - chunkStart = this.state.pos - 1; - continue; - } - - ++this.state.pos; - const esc = this.readCodePoint(true); - - if (esc !== null) { - if (!identifierCheck(esc)) { - this.raise(escStart, ErrorMessages.EscapedCharNotAnIdentifier); - } - - word += String.fromCodePoint(esc); - } - - chunkStart = this.state.pos; - } else { - break; - } - } - - return word + this.input.slice(chunkStart, this.state.pos); - } - - readWord(firstCode) { - const word = this.readWord1(firstCode); - const type = keywords$1.get(word) || types$1.name; - this.finishToken(type, word); - } - - checkKeywordEscapes() { - const kw = this.state.type.keyword; - - if (kw && this.state.containsEsc) { - this.raise(this.state.start, ErrorMessages.InvalidEscapedReservedWord, kw); - } - } - - updateContext(prevType) { - var _this$state$type$upda, _this$state$type; - - (_this$state$type$upda = (_this$state$type = this.state.type).updateContext) == null ? void 0 : _this$state$type$upda.call(_this$state$type, this.state.context); - } - -} - -class ClassScope { - constructor() { - this.privateNames = new Set(); - this.loneAccessors = new Map(); - this.undefinedPrivateNames = new Map(); - } - -} -class ClassScopeHandler { - constructor(raise) { - this.stack = []; - this.undefinedPrivateNames = new Map(); - this.raise = raise; - } - - current() { - return this.stack[this.stack.length - 1]; - } - - enter() { - this.stack.push(new ClassScope()); - } - - exit() { - const oldClassScope = this.stack.pop(); - const current = this.current(); - - for (const [name, pos] of Array.from(oldClassScope.undefinedPrivateNames)) { - if (current) { - if (!current.undefinedPrivateNames.has(name)) { - current.undefinedPrivateNames.set(name, pos); - } - } else { - this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name); - } - } - } - - declarePrivateName(name, elementType, pos) { - const classScope = this.current(); - let redefined = classScope.privateNames.has(name); - - if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) { - const accessor = redefined && classScope.loneAccessors.get(name); - - if (accessor) { - const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC; - const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC; - const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR; - const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR; - redefined = oldKind === newKind || oldStatic !== newStatic; - if (!redefined) classScope.loneAccessors.delete(name); - } else if (!redefined) { - classScope.loneAccessors.set(name, elementType); - } - } - - if (redefined) { - this.raise(pos, ErrorMessages.PrivateNameRedeclaration, name); - } - - classScope.privateNames.add(name); - classScope.undefinedPrivateNames.delete(name); - } - - usePrivateName(name, pos) { - let classScope; - - for (classScope of this.stack) { - if (classScope.privateNames.has(name)) return; - } - - if (classScope) { - classScope.undefinedPrivateNames.set(name, pos); - } else { - this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name); - } - } - -} - -const kExpression = 0, - kMaybeArrowParameterDeclaration = 1, - kMaybeAsyncArrowParameterDeclaration = 2, - kParameterDeclaration = 3; - -class ExpressionScope { - constructor(type = kExpression) { - this.type = void 0; - this.type = type; - } - - canBeArrowParameterDeclaration() { - return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration; - } - - isCertainlyParameterDeclaration() { - return this.type === kParameterDeclaration; - } - -} - -class ArrowHeadParsingScope extends ExpressionScope { - constructor(type) { - super(type); - this.errors = new Map(); - } - - recordDeclarationError(pos, template) { - this.errors.set(pos, template); - } - - clearDeclarationError(pos) { - this.errors.delete(pos); - } - - iterateErrors(iterator) { - this.errors.forEach(iterator); - } - -} - -class ExpressionScopeHandler { - constructor(raise) { - this.stack = [new ExpressionScope()]; - this.raise = raise; - } - - enter(scope) { - this.stack.push(scope); - } - - exit() { - this.stack.pop(); - } - - recordParameterInitializerError(pos, template) { - const { - stack - } = this; - let i = stack.length - 1; - let scope = stack[i]; - - while (!scope.isCertainlyParameterDeclaration()) { - if (scope.canBeArrowParameterDeclaration()) { - scope.recordDeclarationError(pos, template); - } else { - return; - } - - scope = stack[--i]; - } - - this.raise(pos, template); - } - - recordParenthesizedIdentifierError(pos, template) { - const { - stack - } = this; - const scope = stack[stack.length - 1]; - - if (scope.isCertainlyParameterDeclaration()) { - this.raise(pos, template); - } else if (scope.canBeArrowParameterDeclaration()) { - scope.recordDeclarationError(pos, template); - } else { - return; - } - } - - recordAsyncArrowParametersError(pos, template) { - const { - stack - } = this; - let i = stack.length - 1; - let scope = stack[i]; - - while (scope.canBeArrowParameterDeclaration()) { - if (scope.type === kMaybeAsyncArrowParameterDeclaration) { - scope.recordDeclarationError(pos, template); - } - - scope = stack[--i]; - } - } - - validateAsPattern() { - const { - stack - } = this; - const currentScope = stack[stack.length - 1]; - if (!currentScope.canBeArrowParameterDeclaration()) return; - currentScope.iterateErrors((template, pos) => { - this.raise(pos, template); - let i = stack.length - 2; - let scope = stack[i]; - - while (scope.canBeArrowParameterDeclaration()) { - scope.clearDeclarationError(pos); - scope = stack[--i]; - } - }); - } - -} -function newParameterDeclarationScope() { - return new ExpressionScope(kParameterDeclaration); -} -function newArrowHeadScope() { - return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration); -} -function newAsyncArrowScope() { - return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration); -} -function newExpressionScope() { - return new ExpressionScope(); -} - -const PARAM = 0b0000, - PARAM_YIELD = 0b0001, - PARAM_AWAIT = 0b0010, - PARAM_RETURN = 0b0100, - PARAM_IN = 0b1000; -class ProductionParameterHandler { - constructor() { - this.stacks = []; - } - - enter(flags) { - this.stacks.push(flags); - } - - exit() { - this.stacks.pop(); - } - - currentFlags() { - return this.stacks[this.stacks.length - 1]; - } - - get hasAwait() { - return (this.currentFlags() & PARAM_AWAIT) > 0; - } - - get hasYield() { - return (this.currentFlags() & PARAM_YIELD) > 0; - } - - get hasReturn() { - return (this.currentFlags() & PARAM_RETURN) > 0; - } - - get hasIn() { - return (this.currentFlags() & PARAM_IN) > 0; - } - -} -function functionFlags(isAsync, isGenerator) { - return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0); -} - -class UtilParser extends Tokenizer { - addExtra(node, key, val) { - if (!node) return; - const extra = node.extra = node.extra || {}; - extra[key] = val; - } - - isRelational(op) { - return this.match(types$1.relational) && this.state.value === op; - } - - expectRelational(op) { - if (this.isRelational(op)) { - this.next(); - } else { - this.unexpected(null, types$1.relational); - } - } - - isContextual(name) { - return this.match(types$1.name) && this.state.value === name && !this.state.containsEsc; - } - - isUnparsedContextual(nameStart, name) { - const nameEnd = nameStart + name.length; - - if (this.input.slice(nameStart, nameEnd) === name) { - const nextCh = this.input.charCodeAt(nameEnd); - return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); - } - - return false; - } - - isLookaheadContextual(name) { - const next = this.nextTokenStart(); - return this.isUnparsedContextual(next, name); - } - - eatContextual(name) { - return this.isContextual(name) && this.eat(types$1.name); - } - - expectContextual(name, template) { - if (!this.eatContextual(name)) this.unexpected(null, template); - } - - canInsertSemicolon() { - return this.match(types$1.eof) || this.match(types$1.braceR) || this.hasPrecedingLineBreak(); - } - - hasPrecedingLineBreak() { - return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)); - } - - hasFollowingLineBreak() { - skipWhiteSpaceToLineBreak.lastIndex = this.state.end; - return skipWhiteSpaceToLineBreak.test(this.input); - } - - isLineTerminator() { - return this.eat(types$1.semi) || this.canInsertSemicolon(); - } - - semicolon(allowAsi = true) { - if (allowAsi ? this.isLineTerminator() : this.eat(types$1.semi)) return; - this.raise(this.state.lastTokEnd, ErrorMessages.MissingSemicolon); - } - - expect(type, pos) { - this.eat(type) || this.unexpected(pos, type); - } - - assertNoSpace(message = "Unexpected space.") { - if (this.state.start > this.state.lastTokEnd) { - this.raise(this.state.lastTokEnd, { - code: ErrorCodes.SyntaxError, - reasonCode: "UnexpectedSpace", - template: message - }); - } - } - - unexpected(pos, messageOrType = { - code: ErrorCodes.SyntaxError, - reasonCode: "UnexpectedToken", - template: "Unexpected token" - }) { - if (messageOrType instanceof TokenType) { - messageOrType = { - code: ErrorCodes.SyntaxError, - reasonCode: "UnexpectedToken", - template: `Unexpected token, expected "${messageOrType.label}"` - }; - } - - throw this.raise(pos != null ? pos : this.state.start, messageOrType); - } - - expectPlugin(name, pos) { - if (!this.hasPlugin(name)) { - throw this.raiseWithData(pos != null ? pos : this.state.start, { - missingPlugin: [name] - }, `This experimental syntax requires enabling the parser plugin: '${name}'`); - } - - return true; - } - - expectOnePlugin(names, pos) { - if (!names.some(n => this.hasPlugin(n))) { - throw this.raiseWithData(pos != null ? pos : this.state.start, { - missingPlugin: names - }, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`); - } - } - - tryParse(fn, oldState = this.state.clone()) { - const abortSignal = { - node: null - }; - - try { - const node = fn((node = null) => { - abortSignal.node = node; - throw abortSignal; - }); - - if (this.state.errors.length > oldState.errors.length) { - const failState = this.state; - this.state = oldState; - this.state.tokensLength = failState.tokensLength; - return { - node, - error: failState.errors[oldState.errors.length], - thrown: false, - aborted: false, - failState - }; - } - - return { - node, - error: null, - thrown: false, - aborted: false, - failState: null - }; - } catch (error) { - const failState = this.state; - this.state = oldState; - - if (error instanceof SyntaxError) { - return { - node: null, - error, - thrown: true, - aborted: false, - failState - }; - } - - if (error === abortSignal) { - return { - node: abortSignal.node, - error: null, - thrown: false, - aborted: true, - failState - }; - } - - throw error; - } - } - - checkExpressionErrors(refExpressionErrors, andThrow) { - if (!refExpressionErrors) return false; - const { - shorthandAssign, - doubleProto, - optionalParameters - } = refExpressionErrors; - - if (!andThrow) { - return shorthandAssign >= 0 || doubleProto >= 0 || optionalParameters >= 0; - } - - if (shorthandAssign >= 0) { - this.unexpected(shorthandAssign); - } - - if (doubleProto >= 0) { - this.raise(doubleProto, ErrorMessages.DuplicateProto); - } - - if (optionalParameters >= 0) { - this.unexpected(optionalParameters); - } - } - - isLiteralPropertyName() { - return this.match(types$1.name) || !!this.state.type.keyword || this.match(types$1.string) || this.match(types$1.num) || this.match(types$1.bigint) || this.match(types$1.decimal); - } - - isPrivateName(node) { - return node.type === "PrivateName"; - } - - getPrivateNameSV(node) { - return node.id.name; - } - - hasPropertyAsPrivateName(node) { - return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); - } - - isOptionalChain(node) { - return node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression"; - } - - isObjectProperty(node) { - return node.type === "ObjectProperty"; - } - - isObjectMethod(node) { - return node.type === "ObjectMethod"; - } - - initializeScopes(inModule = this.options.sourceType === "module") { - const oldLabels = this.state.labels; - this.state.labels = []; - const oldExportedIdentifiers = this.exportedIdentifiers; - this.exportedIdentifiers = new Set(); - const oldInModule = this.inModule; - this.inModule = inModule; - const oldScope = this.scope; - const ScopeHandler = this.getScopeHandler(); - this.scope = new ScopeHandler(this.raise.bind(this), this.inModule); - const oldProdParam = this.prodParam; - this.prodParam = new ProductionParameterHandler(); - const oldClassScope = this.classScope; - this.classScope = new ClassScopeHandler(this.raise.bind(this)); - const oldExpressionScope = this.expressionScope; - this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this)); - return () => { - this.state.labels = oldLabels; - this.exportedIdentifiers = oldExportedIdentifiers; - this.inModule = oldInModule; - this.scope = oldScope; - this.prodParam = oldProdParam; - this.classScope = oldClassScope; - this.expressionScope = oldExpressionScope; - }; - } - - enterInitialScopes() { - let paramFlags = PARAM; - - if (this.inModule) { - paramFlags |= PARAM_AWAIT; - } - - this.scope.enter(SCOPE_PROGRAM); - this.prodParam.enter(paramFlags); - } - -} -class ExpressionErrors { - constructor() { - this.shorthandAssign = -1; - this.doubleProto = -1; - this.optionalParameters = -1; - } - -} - -class Node { - constructor(parser, pos, loc) { - this.type = ""; - this.start = pos; - this.end = 0; - this.loc = new SourceLocation(loc); - if (parser != null && parser.options.ranges) this.range = [pos, 0]; - if (parser != null && parser.filename) this.loc.filename = parser.filename; - } - -} - -const NodePrototype = Node.prototype; -{ - NodePrototype.__clone = function () { - const newNode = new Node(); - const keys = Object.keys(this); - - for (let i = 0, length = keys.length; i < length; i++) { - const key = keys[i]; - - if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { - newNode[key] = this[key]; - } - } - - return newNode; - }; -} - -function clonePlaceholder(node) { - return cloneIdentifier(node); -} - -function cloneIdentifier(node) { - const { - type, - start, - end, - loc, - range, - extra, - name - } = node; - const cloned = Object.create(NodePrototype); - cloned.type = type; - cloned.start = start; - cloned.end = end; - cloned.loc = loc; - cloned.range = range; - cloned.extra = extra; - cloned.name = name; - - if (type === "Placeholder") { - cloned.expectedNode = node.expectedNode; - } - - return cloned; -} -function cloneStringLiteral(node) { - const { - type, - start, - end, - loc, - range, - extra - } = node; - - if (type === "Placeholder") { - return clonePlaceholder(node); - } - - const cloned = Object.create(NodePrototype); - cloned.type = "StringLiteral"; - cloned.start = start; - cloned.end = end; - cloned.loc = loc; - cloned.range = range; - cloned.extra = extra; - cloned.value = node.value; - return cloned; -} -class NodeUtils extends UtilParser { - startNode() { - return new Node(this, this.state.start, this.state.startLoc); - } - - startNodeAt(pos, loc) { - return new Node(this, pos, loc); - } - - startNodeAtNode(type) { - return this.startNodeAt(type.start, type.loc.start); - } - - finishNode(node, type) { - return this.finishNodeAt(node, type, this.state.lastTokEnd, this.state.lastTokEndLoc); - } - - finishNodeAt(node, type, pos, loc) { - - node.type = type; - node.end = pos; - node.loc.end = loc; - if (this.options.ranges) node.range[1] = pos; - if (this.options.attachComment) this.processComment(node); - return node; - } - - resetStartLocation(node, start, startLoc) { - node.start = start; - node.loc.start = startLoc; - if (this.options.ranges) node.range[0] = start; - } - - resetEndLocation(node, end = this.state.lastTokEnd, endLoc = this.state.lastTokEndLoc) { - node.end = end; - node.loc.end = endLoc; - if (this.options.ranges) node.range[1] = end; - } - - resetStartLocationFromNode(node, locationNode) { - this.resetStartLocation(node, locationNode.start, locationNode.loc.start); - } - -} - -const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); -const FlowErrors = makeErrorTemplates({ - AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", - AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", - AssignReservedType: "Cannot overwrite reserved type %0.", - DeclareClassElement: "The `declare` modifier can only appear on class fields.", - DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", - DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", - EnumBooleanMemberNotInitialized: "Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.", - EnumDuplicateMemberName: "Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.", - EnumInconsistentMemberValues: "Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.", - EnumInvalidExplicitType: "Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.", - EnumInvalidExplicitTypeUnknownSupplied: "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.", - EnumInvalidMemberInitializerPrimaryType: "Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.", - EnumInvalidMemberInitializerSymbolType: "Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.", - EnumInvalidMemberInitializerUnknownType: "The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.", - EnumInvalidMemberName: "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.", - EnumNumberMemberNotInitialized: "Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.", - EnumStringMemberInconsistentlyInitailized: "String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.", - GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", - ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", - InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", - InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", - InexactVariance: "Explicit inexact syntax cannot have variance.", - InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", - MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", - NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", - NestedFlowComment: "Cannot have a flow comment inside another flow comment.", - OptionalBindingPattern: "A binding pattern parameter cannot be optional in an implementation signature.", - SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", - SpreadVariance: "Spread properties cannot have variance.", - ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", - ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", - ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", - ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", - ThisParamNoDefault: "The `this` parameter may not have a default value.", - TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", - TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", - UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", - UnexpectedReservedType: "Unexpected reserved type %0.", - UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", - UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", - UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", - UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', - UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", - UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.", - UnsupportedDeclareExportKind: "`declare export %0` is not supported. Use `%1` instead.", - UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", - UnterminatedFlowComment: "Unterminated flow-comment." -}, ErrorCodes.SyntaxError); - -function isEsModuleType(bodyElement) { - return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); -} - -function hasTypeImportKind(node) { - return node.importKind === "type" || node.importKind === "typeof"; -} - -function isMaybeDefaultImport(state) { - return (state.type === types$1.name || !!state.type.keyword) && state.value !== "from"; -} - -const exportSuggestions = { - const: "declare export var", - let: "declare export var", - type: "export type", - interface: "export interface" -}; - -function partition(list, test) { - const list1 = []; - const list2 = []; - - for (let i = 0; i < list.length; i++) { - (test(list[i], i, list) ? list1 : list2).push(list[i]); - } - - return [list1, list2]; -} - -const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; -var flow = (superClass => class extends superClass { - constructor(...args) { - super(...args); - this.flowPragma = undefined; - } - - getScopeHandler() { - return FlowScopeHandler; - } - - shouldParseTypes() { - return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; - } - - shouldParseEnums() { - return !!this.getPluginOption("flow", "enums"); - } - - finishToken(type, val) { - if (type !== types$1.string && type !== types$1.semi && type !== types$1.interpreterDirective) { - if (this.flowPragma === undefined) { - this.flowPragma = null; - } - } - - return super.finishToken(type, val); - } - - addComment(comment) { - if (this.flowPragma === undefined) { - const matches = FLOW_PRAGMA_REGEX.exec(comment.value); - - if (!matches) ; else if (matches[1] === "flow") { - this.flowPragma = "flow"; - } else if (matches[1] === "noflow") { - this.flowPragma = "noflow"; - } else { - throw new Error("Unexpected flow pragma"); - } - } - - return super.addComment(comment); - } - - flowParseTypeInitialiser(tok) { - const oldInType = this.state.inType; - this.state.inType = true; - this.expect(tok || types$1.colon); - const type = this.flowParseType(); - this.state.inType = oldInType; - return type; - } - - flowParsePredicate() { - const node = this.startNode(); - const moduloPos = this.state.start; - this.next(); - this.expectContextual("checks"); - - if (this.state.lastTokStart > moduloPos + 1) { - this.raise(moduloPos, FlowErrors.UnexpectedSpaceBetweenModuloChecks); - } - - if (this.eat(types$1.parenL)) { - node.value = this.parseExpression(); - this.expect(types$1.parenR); - return this.finishNode(node, "DeclaredPredicate"); - } else { - return this.finishNode(node, "InferredPredicate"); - } - } - - flowParseTypeAndPredicateInitialiser() { - const oldInType = this.state.inType; - this.state.inType = true; - this.expect(types$1.colon); - let type = null; - let predicate = null; - - if (this.match(types$1.modulo)) { - this.state.inType = oldInType; - predicate = this.flowParsePredicate(); - } else { - type = this.flowParseType(); - this.state.inType = oldInType; - - if (this.match(types$1.modulo)) { - predicate = this.flowParsePredicate(); - } - } - - return [type, predicate]; - } - - flowParseDeclareClass(node) { - this.next(); - this.flowParseInterfaceish(node, true); - return this.finishNode(node, "DeclareClass"); - } - - flowParseDeclareFunction(node) { - this.next(); - const id = node.id = this.parseIdentifier(); - const typeNode = this.startNode(); - const typeContainer = this.startNode(); - - if (this.isRelational("<")) { - typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - typeNode.typeParameters = null; - } - - this.expect(types$1.parenL); - const tmp = this.flowParseFunctionTypeParams(); - typeNode.params = tmp.params; - typeNode.rest = tmp.rest; - typeNode.this = tmp._this; - this.expect(types$1.parenR); - [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); - typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); - id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); - this.resetEndLocation(id); - this.semicolon(); - this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.start); - return this.finishNode(node, "DeclareFunction"); - } - - flowParseDeclare(node, insideModule) { - if (this.match(types$1._class)) { - return this.flowParseDeclareClass(node); - } else if (this.match(types$1._function)) { - return this.flowParseDeclareFunction(node); - } else if (this.match(types$1._var)) { - return this.flowParseDeclareVariable(node); - } else if (this.eatContextual("module")) { - if (this.match(types$1.dot)) { - return this.flowParseDeclareModuleExports(node); - } else { - if (insideModule) { - this.raise(this.state.lastTokStart, FlowErrors.NestedDeclareModule); - } - - return this.flowParseDeclareModule(node); - } - } else if (this.isContextual("type")) { - return this.flowParseDeclareTypeAlias(node); - } else if (this.isContextual("opaque")) { - return this.flowParseDeclareOpaqueType(node); - } else if (this.isContextual("interface")) { - return this.flowParseDeclareInterface(node); - } else if (this.match(types$1._export)) { - return this.flowParseDeclareExportDeclaration(node, insideModule); - } else { - throw this.unexpected(); - } - } - - flowParseDeclareVariable(node) { - this.next(); - node.id = this.flowParseTypeAnnotatableIdentifier(true); - this.scope.declareName(node.id.name, BIND_VAR, node.id.start); - this.semicolon(); - return this.finishNode(node, "DeclareVariable"); - } - - flowParseDeclareModule(node) { - this.scope.enter(SCOPE_OTHER); - - if (this.match(types$1.string)) { - node.id = this.parseExprAtom(); - } else { - node.id = this.parseIdentifier(); - } - - const bodyNode = node.body = this.startNode(); - const body = bodyNode.body = []; - this.expect(types$1.braceL); - - while (!this.match(types$1.braceR)) { - let bodyNode = this.startNode(); - - if (this.match(types$1._import)) { - this.next(); - - if (!this.isContextual("type") && !this.match(types$1._typeof)) { - this.raise(this.state.lastTokStart, FlowErrors.InvalidNonTypeImportInDeclareModule); - } - - this.parseImport(bodyNode); - } else { - this.expectContextual("declare", FlowErrors.UnsupportedStatementInDeclareModule); - bodyNode = this.flowParseDeclare(bodyNode, true); - } - - body.push(bodyNode); - } - - this.scope.exit(); - this.expect(types$1.braceR); - this.finishNode(bodyNode, "BlockStatement"); - let kind = null; - let hasModuleExport = false; - body.forEach(bodyElement => { - if (isEsModuleType(bodyElement)) { - if (kind === "CommonJS") { - this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind); - } - - kind = "ES"; - } else if (bodyElement.type === "DeclareModuleExports") { - if (hasModuleExport) { - this.raise(bodyElement.start, FlowErrors.DuplicateDeclareModuleExports); - } - - if (kind === "ES") { - this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind); - } - - kind = "CommonJS"; - hasModuleExport = true; - } - }); - node.kind = kind || "CommonJS"; - return this.finishNode(node, "DeclareModule"); - } - - flowParseDeclareExportDeclaration(node, insideModule) { - this.expect(types$1._export); - - if (this.eat(types$1._default)) { - if (this.match(types$1._function) || this.match(types$1._class)) { - node.declaration = this.flowParseDeclare(this.startNode()); - } else { - node.declaration = this.flowParseType(); - this.semicolon(); - } - - node.default = true; - return this.finishNode(node, "DeclareExportDeclaration"); - } else { - if (this.match(types$1._const) || this.isLet() || (this.isContextual("type") || this.isContextual("interface")) && !insideModule) { - const label = this.state.value; - const suggestion = exportSuggestions[label]; - throw this.raise(this.state.start, FlowErrors.UnsupportedDeclareExportKind, label, suggestion); - } - - if (this.match(types$1._var) || this.match(types$1._function) || this.match(types$1._class) || this.isContextual("opaque")) { - node.declaration = this.flowParseDeclare(this.startNode()); - node.default = false; - return this.finishNode(node, "DeclareExportDeclaration"); - } else if (this.match(types$1.star) || this.match(types$1.braceL) || this.isContextual("interface") || this.isContextual("type") || this.isContextual("opaque")) { - node = this.parseExport(node); - - if (node.type === "ExportNamedDeclaration") { - node.type = "ExportDeclaration"; - node.default = false; - delete node.exportKind; - } - - node.type = "Declare" + node.type; - return node; - } - } - - throw this.unexpected(); - } - - flowParseDeclareModuleExports(node) { - this.next(); - this.expectContextual("exports"); - node.typeAnnotation = this.flowParseTypeAnnotation(); - this.semicolon(); - return this.finishNode(node, "DeclareModuleExports"); - } - - flowParseDeclareTypeAlias(node) { - this.next(); - this.flowParseTypeAlias(node); - node.type = "DeclareTypeAlias"; - return node; - } - - flowParseDeclareOpaqueType(node) { - this.next(); - this.flowParseOpaqueType(node, true); - node.type = "DeclareOpaqueType"; - return node; - } - - flowParseDeclareInterface(node) { - this.next(); - this.flowParseInterfaceish(node); - return this.finishNode(node, "DeclareInterface"); - } - - flowParseInterfaceish(node, isClass = false) { - node.id = this.flowParseRestrictedIdentifier(!isClass, true); - this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.start); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - node.typeParameters = null; - } - - node.extends = []; - node.implements = []; - node.mixins = []; - - if (this.eat(types$1._extends)) { - do { - node.extends.push(this.flowParseInterfaceExtends()); - } while (!isClass && this.eat(types$1.comma)); - } - - if (this.isContextual("mixins")) { - this.next(); - - do { - node.mixins.push(this.flowParseInterfaceExtends()); - } while (this.eat(types$1.comma)); - } - - if (this.isContextual("implements")) { - this.next(); - - do { - node.implements.push(this.flowParseInterfaceExtends()); - } while (this.eat(types$1.comma)); - } - - node.body = this.flowParseObjectType({ - allowStatic: isClass, - allowExact: false, - allowSpread: false, - allowProto: isClass, - allowInexact: false - }); - } - - flowParseInterfaceExtends() { - const node = this.startNode(); - node.id = this.flowParseQualifiedTypeIdentifier(); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterInstantiation(); - } else { - node.typeParameters = null; - } - - return this.finishNode(node, "InterfaceExtends"); - } - - flowParseInterface(node) { - this.flowParseInterfaceish(node); - return this.finishNode(node, "InterfaceDeclaration"); - } - - checkNotUnderscore(word) { - if (word === "_") { - this.raise(this.state.start, FlowErrors.UnexpectedReservedUnderscore); - } - } - - checkReservedType(word, startLoc, declaration) { - if (!reservedTypes.has(word)) return; - this.raise(startLoc, declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, word); - } - - flowParseRestrictedIdentifier(liberal, declaration) { - this.checkReservedType(this.state.value, this.state.start, declaration); - return this.parseIdentifier(liberal); - } - - flowParseTypeAlias(node) { - node.id = this.flowParseRestrictedIdentifier(false, true); - this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - node.typeParameters = null; - } - - node.right = this.flowParseTypeInitialiser(types$1.eq); - this.semicolon(); - return this.finishNode(node, "TypeAlias"); - } - - flowParseOpaqueType(node, declare) { - this.expectContextual("type"); - node.id = this.flowParseRestrictedIdentifier(true, true); - this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } else { - node.typeParameters = null; - } - - node.supertype = null; - - if (this.match(types$1.colon)) { - node.supertype = this.flowParseTypeInitialiser(types$1.colon); - } - - node.impltype = null; - - if (!declare) { - node.impltype = this.flowParseTypeInitialiser(types$1.eq); - } - - this.semicolon(); - return this.finishNode(node, "OpaqueType"); - } - - flowParseTypeParameter(requireDefault = false) { - const nodeStart = this.state.start; - const node = this.startNode(); - const variance = this.flowParseVariance(); - const ident = this.flowParseTypeAnnotatableIdentifier(); - node.name = ident.name; - node.variance = variance; - node.bound = ident.typeAnnotation; - - if (this.match(types$1.eq)) { - this.eat(types$1.eq); - node.default = this.flowParseType(); - } else { - if (requireDefault) { - this.raise(nodeStart, FlowErrors.MissingTypeParamDefault); - } - } - - return this.finishNode(node, "TypeParameter"); - } - - flowParseTypeParameterDeclaration() { - const oldInType = this.state.inType; - const node = this.startNode(); - node.params = []; - this.state.inType = true; - - if (this.isRelational("<") || this.match(types$1.jsxTagStart)) { - this.next(); - } else { - this.unexpected(); - } - - let defaultRequired = false; - - do { - const typeParameter = this.flowParseTypeParameter(defaultRequired); - node.params.push(typeParameter); - - if (typeParameter.default) { - defaultRequired = true; - } - - if (!this.isRelational(">")) { - this.expect(types$1.comma); - } - } while (!this.isRelational(">")); - - this.expectRelational(">"); - this.state.inType = oldInType; - return this.finishNode(node, "TypeParameterDeclaration"); - } - - flowParseTypeParameterInstantiation() { - const node = this.startNode(); - const oldInType = this.state.inType; - node.params = []; - this.state.inType = true; - this.expectRelational("<"); - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = false; - - while (!this.isRelational(">")) { - node.params.push(this.flowParseType()); - - if (!this.isRelational(">")) { - this.expect(types$1.comma); - } - } - - this.state.noAnonFunctionType = oldNoAnonFunctionType; - this.expectRelational(">"); - this.state.inType = oldInType; - return this.finishNode(node, "TypeParameterInstantiation"); - } - - flowParseTypeParameterInstantiationCallOrNew() { - const node = this.startNode(); - const oldInType = this.state.inType; - node.params = []; - this.state.inType = true; - this.expectRelational("<"); - - while (!this.isRelational(">")) { - node.params.push(this.flowParseTypeOrImplicitInstantiation()); - - if (!this.isRelational(">")) { - this.expect(types$1.comma); - } - } - - this.expectRelational(">"); - this.state.inType = oldInType; - return this.finishNode(node, "TypeParameterInstantiation"); - } - - flowParseInterfaceType() { - const node = this.startNode(); - this.expectContextual("interface"); - node.extends = []; - - if (this.eat(types$1._extends)) { - do { - node.extends.push(this.flowParseInterfaceExtends()); - } while (this.eat(types$1.comma)); - } - - node.body = this.flowParseObjectType({ - allowStatic: false, - allowExact: false, - allowSpread: false, - allowProto: false, - allowInexact: false - }); - return this.finishNode(node, "InterfaceTypeAnnotation"); - } - - flowParseObjectPropertyKey() { - return this.match(types$1.num) || this.match(types$1.string) ? this.parseExprAtom() : this.parseIdentifier(true); - } - - flowParseObjectTypeIndexer(node, isStatic, variance) { - node.static = isStatic; - - if (this.lookahead().type === types$1.colon) { - node.id = this.flowParseObjectPropertyKey(); - node.key = this.flowParseTypeInitialiser(); - } else { - node.id = null; - node.key = this.flowParseType(); - } - - this.expect(types$1.bracketR); - node.value = this.flowParseTypeInitialiser(); - node.variance = variance; - return this.finishNode(node, "ObjectTypeIndexer"); - } - - flowParseObjectTypeInternalSlot(node, isStatic) { - node.static = isStatic; - node.id = this.flowParseObjectPropertyKey(); - this.expect(types$1.bracketR); - this.expect(types$1.bracketR); - - if (this.isRelational("<") || this.match(types$1.parenL)) { - node.method = true; - node.optional = false; - node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start)); - } else { - node.method = false; - - if (this.eat(types$1.question)) { - node.optional = true; - } - - node.value = this.flowParseTypeInitialiser(); - } - - return this.finishNode(node, "ObjectTypeInternalSlot"); - } - - flowParseObjectTypeMethodish(node) { - node.params = []; - node.rest = null; - node.typeParameters = null; - node.this = null; - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } - - this.expect(types$1.parenL); - - if (this.match(types$1._this)) { - node.this = this.flowParseFunctionTypeParam(true); - node.this.name = null; - - if (!this.match(types$1.parenR)) { - this.expect(types$1.comma); - } - } - - while (!this.match(types$1.parenR) && !this.match(types$1.ellipsis)) { - node.params.push(this.flowParseFunctionTypeParam(false)); - - if (!this.match(types$1.parenR)) { - this.expect(types$1.comma); - } - } - - if (this.eat(types$1.ellipsis)) { - node.rest = this.flowParseFunctionTypeParam(false); - } - - this.expect(types$1.parenR); - node.returnType = this.flowParseTypeInitialiser(); - return this.finishNode(node, "FunctionTypeAnnotation"); - } - - flowParseObjectTypeCallProperty(node, isStatic) { - const valueNode = this.startNode(); - node.static = isStatic; - node.value = this.flowParseObjectTypeMethodish(valueNode); - return this.finishNode(node, "ObjectTypeCallProperty"); - } - - flowParseObjectType({ - allowStatic, - allowExact, - allowSpread, - allowProto, - allowInexact - }) { - const oldInType = this.state.inType; - this.state.inType = true; - const nodeStart = this.startNode(); - nodeStart.callProperties = []; - nodeStart.properties = []; - nodeStart.indexers = []; - nodeStart.internalSlots = []; - let endDelim; - let exact; - let inexact = false; - - if (allowExact && this.match(types$1.braceBarL)) { - this.expect(types$1.braceBarL); - endDelim = types$1.braceBarR; - exact = true; - } else { - this.expect(types$1.braceL); - endDelim = types$1.braceR; - exact = false; - } - - nodeStart.exact = exact; - - while (!this.match(endDelim)) { - let isStatic = false; - let protoStart = null; - let inexactStart = null; - const node = this.startNode(); - - if (allowProto && this.isContextual("proto")) { - const lookahead = this.lookahead(); - - if (lookahead.type !== types$1.colon && lookahead.type !== types$1.question) { - this.next(); - protoStart = this.state.start; - allowStatic = false; - } - } - - if (allowStatic && this.isContextual("static")) { - const lookahead = this.lookahead(); - - if (lookahead.type !== types$1.colon && lookahead.type !== types$1.question) { - this.next(); - isStatic = true; - } - } - - const variance = this.flowParseVariance(); - - if (this.eat(types$1.bracketL)) { - if (protoStart != null) { - this.unexpected(protoStart); - } - - if (this.eat(types$1.bracketL)) { - if (variance) { - this.unexpected(variance.start); - } - - nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); - } else { - nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); - } - } else if (this.match(types$1.parenL) || this.isRelational("<")) { - if (protoStart != null) { - this.unexpected(protoStart); - } - - if (variance) { - this.unexpected(variance.start); - } - - nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); - } else { - let kind = "init"; - - if (this.isContextual("get") || this.isContextual("set")) { - const lookahead = this.lookahead(); - - if (lookahead.type === types$1.name || lookahead.type === types$1.string || lookahead.type === types$1.num) { - kind = this.state.value; - this.next(); - } - } - - const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); - - if (propOrInexact === null) { - inexact = true; - inexactStart = this.state.lastTokStart; - } else { - nodeStart.properties.push(propOrInexact); - } - } - - this.flowObjectTypeSemicolon(); - - if (inexactStart && !this.match(types$1.braceR) && !this.match(types$1.braceBarR)) { - this.raise(inexactStart, FlowErrors.UnexpectedExplicitInexactInObject); - } - } - - this.expect(endDelim); - - if (allowSpread) { - nodeStart.inexact = inexact; - } - - const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); - this.state.inType = oldInType; - return out; - } - - flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact) { - if (this.eat(types$1.ellipsis)) { - const isInexactToken = this.match(types$1.comma) || this.match(types$1.semi) || this.match(types$1.braceR) || this.match(types$1.braceBarR); - - if (isInexactToken) { - if (!allowSpread) { - this.raise(this.state.lastTokStart, FlowErrors.InexactInsideNonObject); - } else if (!allowInexact) { - this.raise(this.state.lastTokStart, FlowErrors.InexactInsideExact); - } - - if (variance) { - this.raise(variance.start, FlowErrors.InexactVariance); - } - - return null; - } - - if (!allowSpread) { - this.raise(this.state.lastTokStart, FlowErrors.UnexpectedSpreadType); - } - - if (protoStart != null) { - this.unexpected(protoStart); - } - - if (variance) { - this.raise(variance.start, FlowErrors.SpreadVariance); - } - - node.argument = this.flowParseType(); - return this.finishNode(node, "ObjectTypeSpreadProperty"); - } else { - node.key = this.flowParseObjectPropertyKey(); - node.static = isStatic; - node.proto = protoStart != null; - node.kind = kind; - let optional = false; - - if (this.isRelational("<") || this.match(types$1.parenL)) { - node.method = true; - - if (protoStart != null) { - this.unexpected(protoStart); - } - - if (variance) { - this.unexpected(variance.start); - } - - node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start)); - - if (kind === "get" || kind === "set") { - this.flowCheckGetterSetterParams(node); - } - - if (!allowSpread && node.key.name === "constructor" && node.value.this) { - this.raise(node.value.this.start, FlowErrors.ThisParamBannedInConstructor); - } - } else { - if (kind !== "init") this.unexpected(); - node.method = false; - - if (this.eat(types$1.question)) { - optional = true; - } - - node.value = this.flowParseTypeInitialiser(); - node.variance = variance; - } - - node.optional = optional; - return this.finishNode(node, "ObjectTypeProperty"); - } - } - - flowCheckGetterSetterParams(property) { - const paramCount = property.kind === "get" ? 0 : 1; - const start = property.start; - const length = property.value.params.length + (property.value.rest ? 1 : 0); - - if (property.value.this) { - this.raise(property.value.this.start, property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam); - } - - if (length !== paramCount) { - if (property.kind === "get") { - this.raise(start, ErrorMessages.BadGetterArity); - } else { - this.raise(start, ErrorMessages.BadSetterArity); - } - } - - if (property.kind === "set" && property.value.rest) { - this.raise(start, ErrorMessages.BadSetterRestParameter); - } - } - - flowObjectTypeSemicolon() { - if (!this.eat(types$1.semi) && !this.eat(types$1.comma) && !this.match(types$1.braceR) && !this.match(types$1.braceBarR)) { - this.unexpected(); - } - } - - flowParseQualifiedTypeIdentifier(startPos, startLoc, id) { - startPos = startPos || this.state.start; - startLoc = startLoc || this.state.startLoc; - let node = id || this.flowParseRestrictedIdentifier(true); - - while (this.eat(types$1.dot)) { - const node2 = this.startNodeAt(startPos, startLoc); - node2.qualification = node; - node2.id = this.flowParseRestrictedIdentifier(true); - node = this.finishNode(node2, "QualifiedTypeIdentifier"); - } - - return node; - } - - flowParseGenericType(startPos, startLoc, id) { - const node = this.startNodeAt(startPos, startLoc); - node.typeParameters = null; - node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterInstantiation(); - } - - return this.finishNode(node, "GenericTypeAnnotation"); - } - - flowParseTypeofType() { - const node = this.startNode(); - this.expect(types$1._typeof); - node.argument = this.flowParsePrimaryType(); - return this.finishNode(node, "TypeofTypeAnnotation"); - } - - flowParseTupleType() { - const node = this.startNode(); - node.types = []; - this.expect(types$1.bracketL); - - while (this.state.pos < this.length && !this.match(types$1.bracketR)) { - node.types.push(this.flowParseType()); - if (this.match(types$1.bracketR)) break; - this.expect(types$1.comma); - } - - this.expect(types$1.bracketR); - return this.finishNode(node, "TupleTypeAnnotation"); - } - - flowParseFunctionTypeParam(first) { - let name = null; - let optional = false; - let typeAnnotation = null; - const node = this.startNode(); - const lh = this.lookahead(); - const isThis = this.state.type === types$1._this; - - if (lh.type === types$1.colon || lh.type === types$1.question) { - if (isThis && !first) { - this.raise(node.start, FlowErrors.ThisParamMustBeFirst); - } - - name = this.parseIdentifier(isThis); - - if (this.eat(types$1.question)) { - optional = true; - - if (isThis) { - this.raise(node.start, FlowErrors.ThisParamMayNotBeOptional); - } - } - - typeAnnotation = this.flowParseTypeInitialiser(); - } else { - typeAnnotation = this.flowParseType(); - } - - node.name = name; - node.optional = optional; - node.typeAnnotation = typeAnnotation; - return this.finishNode(node, "FunctionTypeParam"); - } - - reinterpretTypeAsFunctionTypeParam(type) { - const node = this.startNodeAt(type.start, type.loc.start); - node.name = null; - node.optional = false; - node.typeAnnotation = type; - return this.finishNode(node, "FunctionTypeParam"); - } - - flowParseFunctionTypeParams(params = []) { - let rest = null; - let _this = null; - - if (this.match(types$1._this)) { - _this = this.flowParseFunctionTypeParam(true); - _this.name = null; - - if (!this.match(types$1.parenR)) { - this.expect(types$1.comma); - } - } - - while (!this.match(types$1.parenR) && !this.match(types$1.ellipsis)) { - params.push(this.flowParseFunctionTypeParam(false)); - - if (!this.match(types$1.parenR)) { - this.expect(types$1.comma); - } - } - - if (this.eat(types$1.ellipsis)) { - rest = this.flowParseFunctionTypeParam(false); - } - - return { - params, - rest, - _this - }; - } - - flowIdentToTypeAnnotation(startPos, startLoc, node, id) { - switch (id.name) { - case "any": - return this.finishNode(node, "AnyTypeAnnotation"); - - case "bool": - case "boolean": - return this.finishNode(node, "BooleanTypeAnnotation"); - - case "mixed": - return this.finishNode(node, "MixedTypeAnnotation"); - - case "empty": - return this.finishNode(node, "EmptyTypeAnnotation"); - - case "number": - return this.finishNode(node, "NumberTypeAnnotation"); - - case "string": - return this.finishNode(node, "StringTypeAnnotation"); - - case "symbol": - return this.finishNode(node, "SymbolTypeAnnotation"); - - default: - this.checkNotUnderscore(id.name); - return this.flowParseGenericType(startPos, startLoc, id); - } - } - - flowParsePrimaryType() { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const node = this.startNode(); - let tmp; - let type; - let isGroupedType = false; - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - - switch (this.state.type) { - case types$1.name: - if (this.isContextual("interface")) { - return this.flowParseInterfaceType(); - } - - return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier()); - - case types$1.braceL: - return this.flowParseObjectType({ - allowStatic: false, - allowExact: false, - allowSpread: true, - allowProto: false, - allowInexact: true - }); - - case types$1.braceBarL: - return this.flowParseObjectType({ - allowStatic: false, - allowExact: true, - allowSpread: true, - allowProto: false, - allowInexact: false - }); - - case types$1.bracketL: - this.state.noAnonFunctionType = false; - type = this.flowParseTupleType(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - return type; - - case types$1.relational: - if (this.state.value === "<") { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - this.expect(types$1.parenL); - tmp = this.flowParseFunctionTypeParams(); - node.params = tmp.params; - node.rest = tmp.rest; - node.this = tmp._this; - this.expect(types$1.parenR); - this.expect(types$1.arrow); - node.returnType = this.flowParseType(); - return this.finishNode(node, "FunctionTypeAnnotation"); - } - - break; - - case types$1.parenL: - this.next(); - - if (!this.match(types$1.parenR) && !this.match(types$1.ellipsis)) { - if (this.match(types$1.name) || this.match(types$1._this)) { - const token = this.lookahead().type; - isGroupedType = token !== types$1.question && token !== types$1.colon; - } else { - isGroupedType = true; - } - } - - if (isGroupedType) { - this.state.noAnonFunctionType = false; - type = this.flowParseType(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - - if (this.state.noAnonFunctionType || !(this.match(types$1.comma) || this.match(types$1.parenR) && this.lookahead().type === types$1.arrow)) { - this.expect(types$1.parenR); - return type; - } else { - this.eat(types$1.comma); - } - } - - if (type) { - tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); - } else { - tmp = this.flowParseFunctionTypeParams(); - } - - node.params = tmp.params; - node.rest = tmp.rest; - node.this = tmp._this; - this.expect(types$1.parenR); - this.expect(types$1.arrow); - node.returnType = this.flowParseType(); - node.typeParameters = null; - return this.finishNode(node, "FunctionTypeAnnotation"); - - case types$1.string: - return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); - - case types$1._true: - case types$1._false: - node.value = this.match(types$1._true); - this.next(); - return this.finishNode(node, "BooleanLiteralTypeAnnotation"); - - case types$1.plusMin: - if (this.state.value === "-") { - this.next(); - - if (this.match(types$1.num)) { - return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); - } - - if (this.match(types$1.bigint)) { - return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); - } - - throw this.raise(this.state.start, FlowErrors.UnexpectedSubtractionOperand); - } - - throw this.unexpected(); - - case types$1.num: - return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); - - case types$1.bigint: - return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); - - case types$1._void: - this.next(); - return this.finishNode(node, "VoidTypeAnnotation"); - - case types$1._null: - this.next(); - return this.finishNode(node, "NullLiteralTypeAnnotation"); - - case types$1._this: - this.next(); - return this.finishNode(node, "ThisTypeAnnotation"); - - case types$1.star: - this.next(); - return this.finishNode(node, "ExistsTypeAnnotation"); - - default: - if (this.state.type.keyword === "typeof") { - return this.flowParseTypeofType(); - } else if (this.state.type.keyword) { - const label = this.state.type.label; - this.next(); - return super.createIdentifier(node, label); - } - - } - - throw this.unexpected(); - } - - flowParsePostfixType() { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - let type = this.flowParsePrimaryType(); - let seenOptionalIndexedAccess = false; - - while ((this.match(types$1.bracketL) || this.match(types$1.questionDot)) && !this.canInsertSemicolon()) { - const node = this.startNodeAt(startPos, startLoc); - const optional = this.eat(types$1.questionDot); - seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; - this.expect(types$1.bracketL); - - if (!optional && this.match(types$1.bracketR)) { - node.elementType = type; - this.next(); - type = this.finishNode(node, "ArrayTypeAnnotation"); - } else { - node.objectType = type; - node.indexType = this.flowParseType(); - this.expect(types$1.bracketR); - - if (seenOptionalIndexedAccess) { - node.optional = optional; - type = this.finishNode(node, "OptionalIndexedAccessType"); - } else { - type = this.finishNode(node, "IndexedAccessType"); - } - } - } - - return type; - } - - flowParsePrefixType() { - const node = this.startNode(); - - if (this.eat(types$1.question)) { - node.typeAnnotation = this.flowParsePrefixType(); - return this.finishNode(node, "NullableTypeAnnotation"); - } else { - return this.flowParsePostfixType(); - } - } - - flowParseAnonFunctionWithoutParens() { - const param = this.flowParsePrefixType(); - - if (!this.state.noAnonFunctionType && this.eat(types$1.arrow)) { - const node = this.startNodeAt(param.start, param.loc.start); - node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; - node.rest = null; - node.this = null; - node.returnType = this.flowParseType(); - node.typeParameters = null; - return this.finishNode(node, "FunctionTypeAnnotation"); - } - - return param; - } - - flowParseIntersectionType() { - const node = this.startNode(); - this.eat(types$1.bitwiseAND); - const type = this.flowParseAnonFunctionWithoutParens(); - node.types = [type]; - - while (this.eat(types$1.bitwiseAND)) { - node.types.push(this.flowParseAnonFunctionWithoutParens()); - } - - return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); - } - - flowParseUnionType() { - const node = this.startNode(); - this.eat(types$1.bitwiseOR); - const type = this.flowParseIntersectionType(); - node.types = [type]; - - while (this.eat(types$1.bitwiseOR)) { - node.types.push(this.flowParseIntersectionType()); - } - - return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); - } - - flowParseType() { - const oldInType = this.state.inType; - this.state.inType = true; - const type = this.flowParseUnionType(); - this.state.inType = oldInType; - return type; - } - - flowParseTypeOrImplicitInstantiation() { - if (this.state.type === types$1.name && this.state.value === "_") { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const node = this.parseIdentifier(); - return this.flowParseGenericType(startPos, startLoc, node); - } else { - return this.flowParseType(); - } - } - - flowParseTypeAnnotation() { - const node = this.startNode(); - node.typeAnnotation = this.flowParseTypeInitialiser(); - return this.finishNode(node, "TypeAnnotation"); - } - - flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { - const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); - - if (this.match(types$1.colon)) { - ident.typeAnnotation = this.flowParseTypeAnnotation(); - this.resetEndLocation(ident); - } - - return ident; - } - - typeCastToParameter(node) { - node.expression.typeAnnotation = node.typeAnnotation; - this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end); - return node.expression; - } - - flowParseVariance() { - let variance = null; - - if (this.match(types$1.plusMin)) { - variance = this.startNode(); - - if (this.state.value === "+") { - variance.kind = "plus"; - } else { - variance.kind = "minus"; - } - - this.next(); - this.finishNode(variance, "Variance"); - } - - return variance; - } - - parseFunctionBody(node, allowExpressionBody, isMethod = false) { - if (allowExpressionBody) { - return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); - } - - return super.parseFunctionBody(node, false, isMethod); - } - - parseFunctionBodyAndFinish(node, type, isMethod = false) { - if (this.match(types$1.colon)) { - const typeNode = this.startNode(); - [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); - node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; - } - - super.parseFunctionBodyAndFinish(node, type, isMethod); - } - - parseStatement(context, topLevel) { - if (this.state.strict && this.match(types$1.name) && this.state.value === "interface") { - const lookahead = this.lookahead(); - - if (lookahead.type === types$1.name || isKeyword(lookahead.value)) { - const node = this.startNode(); - this.next(); - return this.flowParseInterface(node); - } - } else if (this.shouldParseEnums() && this.isContextual("enum")) { - const node = this.startNode(); - this.next(); - return this.flowParseEnumDeclaration(node); - } - - const stmt = super.parseStatement(context, topLevel); - - if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { - this.flowPragma = null; - } - - return stmt; - } - - parseExpressionStatement(node, expr) { - if (expr.type === "Identifier") { - if (expr.name === "declare") { - if (this.match(types$1._class) || this.match(types$1.name) || this.match(types$1._function) || this.match(types$1._var) || this.match(types$1._export)) { - return this.flowParseDeclare(node); - } - } else if (this.match(types$1.name)) { - if (expr.name === "interface") { - return this.flowParseInterface(node); - } else if (expr.name === "type") { - return this.flowParseTypeAlias(node); - } else if (expr.name === "opaque") { - return this.flowParseOpaqueType(node, false); - } - } - } - - return super.parseExpressionStatement(node, expr); - } - - shouldParseExportDeclaration() { - return this.isContextual("type") || this.isContextual("interface") || this.isContextual("opaque") || this.shouldParseEnums() && this.isContextual("enum") || super.shouldParseExportDeclaration(); - } - - isExportDefaultSpecifier() { - if (this.match(types$1.name) && (this.state.value === "type" || this.state.value === "interface" || this.state.value === "opaque" || this.shouldParseEnums() && this.state.value === "enum")) { - return false; - } - - return super.isExportDefaultSpecifier(); - } - - parseExportDefaultExpression() { - if (this.shouldParseEnums() && this.isContextual("enum")) { - const node = this.startNode(); - this.next(); - return this.flowParseEnumDeclaration(node); - } - - return super.parseExportDefaultExpression(); - } - - parseConditional(expr, startPos, startLoc, refExpressionErrors) { - if (!this.match(types$1.question)) return expr; - - if (this.state.maybeInArrowParameters) { - const nextCh = this.lookaheadCharCode(); - - if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { - this.setOptionalParametersError(refExpressionErrors); - return expr; - } - } - - this.expect(types$1.question); - const state = this.state.clone(); - const originalNoArrowAt = this.state.noArrowAt; - const node = this.startNodeAt(startPos, startLoc); - let { - consequent, - failed - } = this.tryParseConditionalConsequent(); - let [valid, invalid] = this.getArrowLikeExpressions(consequent); - - if (failed || invalid.length > 0) { - const noArrowAt = [...originalNoArrowAt]; - - if (invalid.length > 0) { - this.state = state; - this.state.noArrowAt = noArrowAt; - - for (let i = 0; i < invalid.length; i++) { - noArrowAt.push(invalid[i].start); - } - - ({ - consequent, - failed - } = this.tryParseConditionalConsequent()); - [valid, invalid] = this.getArrowLikeExpressions(consequent); - } - - if (failed && valid.length > 1) { - this.raise(state.start, FlowErrors.AmbiguousConditionalArrow); - } - - if (failed && valid.length === 1) { - this.state = state; - this.state.noArrowAt = noArrowAt.concat(valid[0].start); - ({ - consequent, - failed - } = this.tryParseConditionalConsequent()); - } - } - - this.getArrowLikeExpressions(consequent, true); - this.state.noArrowAt = originalNoArrowAt; - this.expect(types$1.colon); - node.test = expr; - node.consequent = consequent; - node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); - return this.finishNode(node, "ConditionalExpression"); - } - - tryParseConditionalConsequent() { - this.state.noArrowParamsConversionAt.push(this.state.start); - const consequent = this.parseMaybeAssignAllowIn(); - const failed = !this.match(types$1.colon); - this.state.noArrowParamsConversionAt.pop(); - return { - consequent, - failed - }; - } - - getArrowLikeExpressions(node, disallowInvalid) { - const stack = [node]; - const arrows = []; - - while (stack.length !== 0) { - const node = stack.pop(); - - if (node.type === "ArrowFunctionExpression") { - if (node.typeParameters || !node.returnType) { - this.finishArrowValidation(node); - } else { - arrows.push(node); - } - - stack.push(node.body); - } else if (node.type === "ConditionalExpression") { - stack.push(node.consequent); - stack.push(node.alternate); - } - } - - if (disallowInvalid) { - arrows.forEach(node => this.finishArrowValidation(node)); - return [arrows, []]; - } - - return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); - } - - finishArrowValidation(node) { - var _node$extra; - - this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingComma, false); - this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); - super.checkParams(node, false, true); - this.scope.exit(); - } - - forwardNoArrowParamsConversionAt(node, parse) { - let result; - - if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { - this.state.noArrowParamsConversionAt.push(this.state.start); - result = parse(); - this.state.noArrowParamsConversionAt.pop(); - } else { - result = parse(); - } - - return result; - } - - parseParenItem(node, startPos, startLoc) { - node = super.parseParenItem(node, startPos, startLoc); - - if (this.eat(types$1.question)) { - node.optional = true; - this.resetEndLocation(node); - } - - if (this.match(types$1.colon)) { - const typeCastNode = this.startNodeAt(startPos, startLoc); - typeCastNode.expression = node; - typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); - return this.finishNode(typeCastNode, "TypeCastExpression"); - } - - return node; - } - - assertModuleNodeAllowed(node) { - if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { - return; - } - - super.assertModuleNodeAllowed(node); - } - - parseExport(node) { - const decl = super.parseExport(node); - - if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") { - decl.exportKind = decl.exportKind || "value"; - } - - return decl; - } - - parseExportDeclaration(node) { - if (this.isContextual("type")) { - node.exportKind = "type"; - const declarationNode = this.startNode(); - this.next(); - - if (this.match(types$1.braceL)) { - node.specifiers = this.parseExportSpecifiers(); - this.parseExportFrom(node); - return null; - } else { - return this.flowParseTypeAlias(declarationNode); - } - } else if (this.isContextual("opaque")) { - node.exportKind = "type"; - const declarationNode = this.startNode(); - this.next(); - return this.flowParseOpaqueType(declarationNode, false); - } else if (this.isContextual("interface")) { - node.exportKind = "type"; - const declarationNode = this.startNode(); - this.next(); - return this.flowParseInterface(declarationNode); - } else if (this.shouldParseEnums() && this.isContextual("enum")) { - node.exportKind = "value"; - const declarationNode = this.startNode(); - this.next(); - return this.flowParseEnumDeclaration(declarationNode); - } else { - return super.parseExportDeclaration(node); - } - } - - eatExportStar(node) { - if (super.eatExportStar(...arguments)) return true; - - if (this.isContextual("type") && this.lookahead().type === types$1.star) { - node.exportKind = "type"; - this.next(); - this.next(); - return true; - } - - return false; - } - - maybeParseExportNamespaceSpecifier(node) { - const pos = this.state.start; - const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); - - if (hasNamespace && node.exportKind === "type") { - this.unexpected(pos); - } - - return hasNamespace; - } - - parseClassId(node, isStatement, optionalId) { - super.parseClassId(node, isStatement, optionalId); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } - } - - parseClassMember(classBody, member, state) { - const pos = this.state.start; - - if (this.isContextual("declare")) { - if (this.parseClassMemberFromModifier(classBody, member)) { - return; - } - - member.declare = true; - } - - super.parseClassMember(classBody, member, state); - - if (member.declare) { - if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { - this.raise(pos, FlowErrors.DeclareClassElement); - } else if (member.value) { - this.raise(member.value.start, FlowErrors.DeclareClassFieldInitializer); - } - } - } - - isIterator(word) { - return word === "iterator" || word === "asyncIterator"; - } - - readIterator() { - const word = super.readWord1(); - const fullWord = "@@" + word; - - if (!this.isIterator(word) || !this.state.inType) { - this.raise(this.state.pos, ErrorMessages.InvalidIdentifier, fullWord); - } - - this.finishToken(types$1.name, fullWord); - } - - getTokenFromCode(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (code === 123 && next === 124) { - return this.finishOp(types$1.braceBarL, 2); - } else if (this.state.inType && (code === 62 || code === 60)) { - return this.finishOp(types$1.relational, 1); - } else if (this.state.inType && code === 63) { - if (next === 46) { - return this.finishOp(types$1.questionDot, 2); - } - - return this.finishOp(types$1.question, 1); - } else if (isIteratorStart(code, next)) { - this.state.pos += 2; - return this.readIterator(); - } else { - return super.getTokenFromCode(code); - } - } - - isAssignable(node, isBinding) { - if (node.type === "TypeCastExpression") { - return this.isAssignable(node.expression, isBinding); - } else { - return super.isAssignable(node, isBinding); - } - } - - toAssignable(node, isLHS = false) { - if (node.type === "TypeCastExpression") { - return super.toAssignable(this.typeCastToParameter(node), isLHS); - } else { - return super.toAssignable(node, isLHS); - } - } - - toAssignableList(exprList, trailingCommaPos, isLHS) { - for (let i = 0; i < exprList.length; i++) { - const expr = exprList[i]; - - if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { - exprList[i] = this.typeCastToParameter(expr); - } - } - - return super.toAssignableList(exprList, trailingCommaPos, isLHS); - } - - toReferencedList(exprList, isParenthesizedExpr) { - for (let i = 0; i < exprList.length; i++) { - var _expr$extra; - - const expr = exprList[i]; - - if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { - this.raise(expr.typeAnnotation.start, FlowErrors.TypeCastInPattern); - } - } - - return exprList; - } - - parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { - const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); - - if (canBePattern && !this.state.maybeInArrowParameters) { - this.toReferencedList(node.elements); - } - - return node; - } - - checkLVal(expr, ...args) { - if (expr.type !== "TypeCastExpression") { - return super.checkLVal(expr, ...args); - } - } - - parseClassProperty(node) { - if (this.match(types$1.colon)) { - node.typeAnnotation = this.flowParseTypeAnnotation(); - } - - return super.parseClassProperty(node); - } - - parseClassPrivateProperty(node) { - if (this.match(types$1.colon)) { - node.typeAnnotation = this.flowParseTypeAnnotation(); - } - - return super.parseClassPrivateProperty(node); - } - - isClassMethod() { - return this.isRelational("<") || super.isClassMethod(); - } - - isClassProperty() { - return this.match(types$1.colon) || super.isClassProperty(); - } - - isNonstaticConstructor(method) { - return !this.match(types$1.colon) && super.isNonstaticConstructor(method); - } - - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - if (method.variance) { - this.unexpected(method.variance.start); - } - - delete method.variance; - - if (this.isRelational("<")) { - method.typeParameters = this.flowParseTypeParameterDeclaration(); - } - - super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); - - if (method.params && isConstructor) { - const params = method.params; - - if (params.length > 0 && this.isThisParam(params[0])) { - this.raise(method.start, FlowErrors.ThisParamBannedInConstructor); - } - } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { - const params = method.value.params; - - if (params.length > 0 && this.isThisParam(params[0])) { - this.raise(method.start, FlowErrors.ThisParamBannedInConstructor); - } - } - } - - pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { - if (method.variance) { - this.unexpected(method.variance.start); - } - - delete method.variance; - - if (this.isRelational("<")) { - method.typeParameters = this.flowParseTypeParameterDeclaration(); - } - - super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); - } - - parseClassSuper(node) { - super.parseClassSuper(node); - - if (node.superClass && this.isRelational("<")) { - node.superTypeParameters = this.flowParseTypeParameterInstantiation(); - } - - if (this.isContextual("implements")) { - this.next(); - const implemented = node.implements = []; - - do { - const node = this.startNode(); - node.id = this.flowParseRestrictedIdentifier(true); - - if (this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterInstantiation(); - } else { - node.typeParameters = null; - } - - implemented.push(this.finishNode(node, "ClassImplements")); - } while (this.eat(types$1.comma)); - } - } - - checkGetterSetterParams(method) { - super.checkGetterSetterParams(method); - const params = this.getObjectOrClassMethodParams(method); - - if (params.length > 0) { - const param = params[0]; - - if (this.isThisParam(param) && method.kind === "get") { - this.raise(param.start, FlowErrors.GetterMayNotHaveThisParam); - } else if (this.isThisParam(param)) { - this.raise(param.start, FlowErrors.SetterMayNotHaveThisParam); - } - } - } - - parsePropertyName(node, isPrivateNameAllowed) { - const variance = this.flowParseVariance(); - const key = super.parsePropertyName(node, isPrivateNameAllowed); - node.variance = variance; - return key; - } - - parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { - if (prop.variance) { - this.unexpected(prop.variance.start); - } - - delete prop.variance; - let typeParameters; - - if (this.isRelational("<") && !isAccessor) { - typeParameters = this.flowParseTypeParameterDeclaration(); - if (!this.match(types$1.parenL)) this.unexpected(); - } - - super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); - - if (typeParameters) { - (prop.value || prop).typeParameters = typeParameters; - } - } - - parseAssignableListItemTypes(param) { - if (this.eat(types$1.question)) { - if (param.type !== "Identifier") { - this.raise(param.start, FlowErrors.OptionalBindingPattern); - } - - if (this.isThisParam(param)) { - this.raise(param.start, FlowErrors.ThisParamMayNotBeOptional); - } - - param.optional = true; - } - - if (this.match(types$1.colon)) { - param.typeAnnotation = this.flowParseTypeAnnotation(); - } else if (this.isThisParam(param)) { - this.raise(param.start, FlowErrors.ThisParamAnnotationRequired); - } - - if (this.match(types$1.eq) && this.isThisParam(param)) { - this.raise(param.start, FlowErrors.ThisParamNoDefault); - } - - this.resetEndLocation(param); - return param; - } - - parseMaybeDefault(startPos, startLoc, left) { - const node = super.parseMaybeDefault(startPos, startLoc, left); - - if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { - this.raise(node.typeAnnotation.start, FlowErrors.TypeBeforeInitializer); - } - - return node; - } - - shouldParseDefaultImport(node) { - if (!hasTypeImportKind(node)) { - return super.shouldParseDefaultImport(node); - } - - return isMaybeDefaultImport(this.state); - } - - parseImportSpecifierLocal(node, specifier, type, contextDescription) { - specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); - this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL); - node.specifiers.push(this.finishNode(specifier, type)); - } - - maybeParseDefaultImportSpecifier(node) { - node.importKind = "value"; - let kind = null; - - if (this.match(types$1._typeof)) { - kind = "typeof"; - } else if (this.isContextual("type")) { - kind = "type"; - } - - if (kind) { - const lh = this.lookahead(); - - if (kind === "type" && lh.type === types$1.star) { - this.unexpected(lh.start); - } - - if (isMaybeDefaultImport(lh) || lh.type === types$1.braceL || lh.type === types$1.star) { - this.next(); - node.importKind = kind; - } - } - - return super.maybeParseDefaultImportSpecifier(node); - } - - parseImportSpecifier(node) { - const specifier = this.startNode(); - const firstIdentIsString = this.match(types$1.string); - const firstIdent = this.parseModuleExportName(); - let specifierTypeKind = null; - - if (firstIdent.type === "Identifier") { - if (firstIdent.name === "type") { - specifierTypeKind = "type"; - } else if (firstIdent.name === "typeof") { - specifierTypeKind = "typeof"; - } - } - - let isBinding = false; - - if (this.isContextual("as") && !this.isLookaheadContextual("as")) { - const as_ident = this.parseIdentifier(true); - - if (specifierTypeKind !== null && !this.match(types$1.name) && !this.state.type.keyword) { - specifier.imported = as_ident; - specifier.importKind = specifierTypeKind; - specifier.local = cloneIdentifier(as_ident); - } else { - specifier.imported = firstIdent; - specifier.importKind = null; - specifier.local = this.parseIdentifier(); - } - } else { - if (specifierTypeKind !== null && (this.match(types$1.name) || this.state.type.keyword)) { - specifier.imported = this.parseIdentifier(true); - specifier.importKind = specifierTypeKind; - } else { - if (firstIdentIsString) { - throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, firstIdent.value); - } - - specifier.imported = firstIdent; - specifier.importKind = null; - } - - if (this.eatContextual("as")) { - specifier.local = this.parseIdentifier(); - } else { - isBinding = true; - specifier.local = cloneIdentifier(specifier.imported); - } - } - - const nodeIsTypeImport = hasTypeImportKind(node); - const specifierIsTypeImport = hasTypeImportKind(specifier); - - if (nodeIsTypeImport && specifierIsTypeImport) { - this.raise(specifier.start, FlowErrors.ImportTypeShorthandOnlyInPureImport); - } - - if (nodeIsTypeImport || specifierIsTypeImport) { - this.checkReservedType(specifier.local.name, specifier.local.start, true); - } - - if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) { - this.checkReservedWord(specifier.local.name, specifier.start, true, true); - } - - this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL); - node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); - } - - parseBindingAtom() { - switch (this.state.type) { - case types$1._this: - return this.parseIdentifier(true); - - default: - return super.parseBindingAtom(); - } - } - - parseFunctionParams(node, allowModifiers) { - const kind = node.kind; - - if (kind !== "get" && kind !== "set" && this.isRelational("<")) { - node.typeParameters = this.flowParseTypeParameterDeclaration(); - } - - super.parseFunctionParams(node, allowModifiers); - } - - parseVarId(decl, kind) { - super.parseVarId(decl, kind); - - if (this.match(types$1.colon)) { - decl.id.typeAnnotation = this.flowParseTypeAnnotation(); - this.resetEndLocation(decl.id); - } - } - - parseAsyncArrowFromCallExpression(node, call) { - if (this.match(types$1.colon)) { - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = true; - node.returnType = this.flowParseTypeAnnotation(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - } - - return super.parseAsyncArrowFromCallExpression(node, call); - } - - shouldParseAsyncArrow() { - return this.match(types$1.colon) || super.shouldParseAsyncArrow(); - } - - parseMaybeAssign(refExpressionErrors, afterLeftParse) { - var _jsx; - - let state = null; - let jsx; - - if (this.hasPlugin("jsx") && (this.match(types$1.jsxTagStart) || this.isRelational("<"))) { - state = this.state.clone(); - jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); - if (!jsx.error) return jsx.node; - const { - context - } = this.state; - const curContext = context[context.length - 1]; - - if (curContext === types.j_oTag) { - context.length -= 2; - } else if (curContext === types.j_expr) { - context.length -= 1; - } - } - - if ((_jsx = jsx) != null && _jsx.error || this.isRelational("<")) { - var _jsx2, _jsx3; - - state = state || this.state.clone(); - let typeParameters; - const arrow = this.tryParse(abort => { - var _arrowExpression$extr; - - typeParameters = this.flowParseTypeParameterDeclaration(); - const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { - const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); - this.resetStartLocationFromNode(result, typeParameters); - return result; - }); - if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); - const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); - if (expr.type !== "ArrowFunctionExpression") abort(); - expr.typeParameters = typeParameters; - this.resetStartLocationFromNode(expr, typeParameters); - return arrowExpression; - }, state); - let arrowExpression = null; - - if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { - if (!arrow.error && !arrow.aborted) { - if (arrow.node.async) { - this.raise(typeParameters.start, FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction); - } - - return arrow.node; - } - - arrowExpression = arrow.node; - } - - if ((_jsx2 = jsx) != null && _jsx2.node) { - this.state = jsx.failState; - return jsx.node; - } - - if (arrowExpression) { - this.state = arrow.failState; - return arrowExpression; - } - - if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; - if (arrow.thrown) throw arrow.error; - throw this.raise(typeParameters.start, FlowErrors.UnexpectedTokenAfterTypeParameter); - } - - return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); - } - - parseArrow(node) { - if (this.match(types$1.colon)) { - const result = this.tryParse(() => { - const oldNoAnonFunctionType = this.state.noAnonFunctionType; - this.state.noAnonFunctionType = true; - const typeNode = this.startNode(); - [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); - this.state.noAnonFunctionType = oldNoAnonFunctionType; - if (this.canInsertSemicolon()) this.unexpected(); - if (!this.match(types$1.arrow)) this.unexpected(); - return typeNode; - }); - if (result.thrown) return null; - if (result.error) this.state = result.failState; - node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; - } - - return super.parseArrow(node); - } - - shouldParseArrow(params) { - return this.match(types$1.colon) || super.shouldParseArrow(params); - } - - setArrowFunctionParameters(node, params) { - if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { - node.params = params; - } else { - super.setArrowFunctionParameters(node, params); - } - } - - checkParams(node, allowDuplicates, isArrowFunction) { - if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { - return; - } - - for (let i = 0; i < node.params.length; i++) { - if (this.isThisParam(node.params[i]) && i > 0) { - this.raise(node.params[i].start, FlowErrors.ThisParamMustBeFirst); - } - } - - return super.checkParams(...arguments); - } - - parseParenAndDistinguishExpression(canBeArrow) { - return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1); - } - - parseSubscripts(base, startPos, startLoc, noCalls) { - if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startPos) !== -1) { - this.next(); - const node = this.startNodeAt(startPos, startLoc); - node.callee = base; - node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); - base = this.finishNode(node, "CallExpression"); - } else if (base.type === "Identifier" && base.name === "async" && this.isRelational("<")) { - const state = this.state.clone(); - const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state); - if (!arrow.error && !arrow.aborted) return arrow.node; - const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state); - if (result.node && !result.error) return result.node; - - if (arrow.node) { - this.state = arrow.failState; - return arrow.node; - } - - if (result.node) { - this.state = result.failState; - return result.node; - } - - throw arrow.error || result.error; - } - - return super.parseSubscripts(base, startPos, startLoc, noCalls); - } - - parseSubscript(base, startPos, startLoc, noCalls, subscriptState) { - if (this.match(types$1.questionDot) && this.isLookaheadToken_lt()) { - subscriptState.optionalChainMember = true; - - if (noCalls) { - subscriptState.stop = true; - return base; - } - - this.next(); - const node = this.startNodeAt(startPos, startLoc); - node.callee = base; - node.typeArguments = this.flowParseTypeParameterInstantiation(); - this.expect(types$1.parenL); - node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); - node.optional = true; - return this.finishCallExpression(node, true); - } else if (!noCalls && this.shouldParseTypes() && this.isRelational("<")) { - const node = this.startNodeAt(startPos, startLoc); - node.callee = base; - const result = this.tryParse(() => { - node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); - this.expect(types$1.parenL); - node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); - if (subscriptState.optionalChainMember) node.optional = false; - return this.finishCallExpression(node, subscriptState.optionalChainMember); - }); - - if (result.node) { - if (result.error) this.state = result.failState; - return result.node; - } - } - - return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState); - } - - parseNewArguments(node) { - let targs = null; - - if (this.shouldParseTypes() && this.isRelational("<")) { - targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; - } - - node.typeArguments = targs; - super.parseNewArguments(node); - } - - parseAsyncArrowWithTypeParameters(startPos, startLoc) { - const node = this.startNodeAt(startPos, startLoc); - this.parseFunctionParams(node); - if (!this.parseArrow(node)) return; - return this.parseArrowExpression(node, undefined, true); - } - - readToken_mult_modulo(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (code === 42 && next === 47 && this.state.hasFlowComment) { - this.state.hasFlowComment = false; - this.state.pos += 2; - this.nextToken(); - return; - } - - super.readToken_mult_modulo(code); - } - - readToken_pipe_amp(code) { - const next = this.input.charCodeAt(this.state.pos + 1); - - if (code === 124 && next === 125) { - this.finishOp(types$1.braceBarR, 2); - return; - } - - super.readToken_pipe_amp(code); - } - - parseTopLevel(file, program) { - const fileNode = super.parseTopLevel(file, program); - - if (this.state.hasFlowComment) { - this.raise(this.state.pos, FlowErrors.UnterminatedFlowComment); - } - - return fileNode; - } - - skipBlockComment() { - if (this.hasPlugin("flowComments") && this.skipFlowComment()) { - if (this.state.hasFlowComment) { - this.unexpected(null, FlowErrors.NestedFlowComment); - } - - this.hasFlowCommentCompletion(); - this.state.pos += this.skipFlowComment(); - this.state.hasFlowComment = true; - return; - } - - if (this.state.hasFlowComment) { - const end = this.input.indexOf("*-/", this.state.pos += 2); - - if (end === -1) { - throw this.raise(this.state.pos - 2, ErrorMessages.UnterminatedComment); - } - - this.state.pos = end + 3; - return; - } - - return super.skipBlockComment(); - } - - skipFlowComment() { - const { - pos - } = this.state; - let shiftToFirstNonWhiteSpace = 2; - - while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { - shiftToFirstNonWhiteSpace++; - } - - const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); - const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); - - if (ch2 === 58 && ch3 === 58) { - return shiftToFirstNonWhiteSpace + 2; - } - - if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { - return shiftToFirstNonWhiteSpace + 12; - } - - if (ch2 === 58 && ch3 !== 58) { - return shiftToFirstNonWhiteSpace; - } - - return false; - } - - hasFlowCommentCompletion() { - const end = this.input.indexOf("*/", this.state.pos); - - if (end === -1) { - throw this.raise(this.state.pos, ErrorMessages.UnterminatedComment); - } - } - - flowEnumErrorBooleanMemberNotInitialized(pos, { - enumName, - memberName - }) { - this.raise(pos, FlowErrors.EnumBooleanMemberNotInitialized, memberName, enumName); - } - - flowEnumErrorInvalidMemberName(pos, { - enumName, - memberName - }) { - const suggestion = memberName[0].toUpperCase() + memberName.slice(1); - this.raise(pos, FlowErrors.EnumInvalidMemberName, memberName, suggestion, enumName); - } - - flowEnumErrorDuplicateMemberName(pos, { - enumName, - memberName - }) { - this.raise(pos, FlowErrors.EnumDuplicateMemberName, memberName, enumName); - } - - flowEnumErrorInconsistentMemberValues(pos, { - enumName - }) { - this.raise(pos, FlowErrors.EnumInconsistentMemberValues, enumName); - } - - flowEnumErrorInvalidExplicitType(pos, { - enumName, - suppliedType - }) { - return this.raise(pos, suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, enumName, suppliedType); - } - - flowEnumErrorInvalidMemberInitializer(pos, { - enumName, - explicitType, - memberName - }) { - let message = null; - - switch (explicitType) { - case "boolean": - case "number": - case "string": - message = FlowErrors.EnumInvalidMemberInitializerPrimaryType; - break; - - case "symbol": - message = FlowErrors.EnumInvalidMemberInitializerSymbolType; - break; - - default: - message = FlowErrors.EnumInvalidMemberInitializerUnknownType; - } - - return this.raise(pos, message, enumName, memberName, explicitType); - } - - flowEnumErrorNumberMemberNotInitialized(pos, { - enumName, - memberName - }) { - this.raise(pos, FlowErrors.EnumNumberMemberNotInitialized, enumName, memberName); - } - - flowEnumErrorStringMemberInconsistentlyInitailized(pos, { - enumName - }) { - this.raise(pos, FlowErrors.EnumStringMemberInconsistentlyInitailized, enumName); - } - - flowEnumMemberInit() { - const startPos = this.state.start; - - const endOfInit = () => this.match(types$1.comma) || this.match(types$1.braceR); - - switch (this.state.type) { - case types$1.num: - { - const literal = this.parseNumericLiteral(this.state.value); - - if (endOfInit()) { - return { - type: "number", - pos: literal.start, - value: literal - }; - } - - return { - type: "invalid", - pos: startPos - }; - } - - case types$1.string: - { - const literal = this.parseStringLiteral(this.state.value); - - if (endOfInit()) { - return { - type: "string", - pos: literal.start, - value: literal - }; - } - - return { - type: "invalid", - pos: startPos - }; - } - - case types$1._true: - case types$1._false: - { - const literal = this.parseBooleanLiteral(this.match(types$1._true)); - - if (endOfInit()) { - return { - type: "boolean", - pos: literal.start, - value: literal - }; - } - - return { - type: "invalid", - pos: startPos - }; - } - - default: - return { - type: "invalid", - pos: startPos - }; - } - } - - flowEnumMemberRaw() { - const pos = this.state.start; - const id = this.parseIdentifier(true); - const init = this.eat(types$1.eq) ? this.flowEnumMemberInit() : { - type: "none", - pos - }; - return { - id, - init - }; - } - - flowEnumCheckExplicitTypeMismatch(pos, context, expectedType) { - const { - explicitType - } = context; - - if (explicitType === null) { - return; - } - - if (explicitType !== expectedType) { - this.flowEnumErrorInvalidMemberInitializer(pos, context); - } - } - - flowEnumMembers({ - enumName, - explicitType - }) { - const seenNames = new Set(); - const members = { - booleanMembers: [], - numberMembers: [], - stringMembers: [], - defaultedMembers: [] - }; - let hasUnknownMembers = false; - - while (!this.match(types$1.braceR)) { - if (this.eat(types$1.ellipsis)) { - hasUnknownMembers = true; - break; - } - - const memberNode = this.startNode(); - const { - id, - init - } = this.flowEnumMemberRaw(); - const memberName = id.name; - - if (memberName === "") { - continue; - } - - if (/^[a-z]/.test(memberName)) { - this.flowEnumErrorInvalidMemberName(id.start, { - enumName, - memberName - }); - } - - if (seenNames.has(memberName)) { - this.flowEnumErrorDuplicateMemberName(id.start, { - enumName, - memberName - }); - } - - seenNames.add(memberName); - const context = { - enumName, - explicitType, - memberName - }; - memberNode.id = id; - - switch (init.type) { - case "boolean": - { - this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "boolean"); - memberNode.init = init.value; - members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); - break; - } - - case "number": - { - this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "number"); - memberNode.init = init.value; - members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); - break; - } - - case "string": - { - this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "string"); - memberNode.init = init.value; - members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); - break; - } - - case "invalid": - { - throw this.flowEnumErrorInvalidMemberInitializer(init.pos, context); - } - - case "none": - { - switch (explicitType) { - case "boolean": - this.flowEnumErrorBooleanMemberNotInitialized(init.pos, context); - break; - - case "number": - this.flowEnumErrorNumberMemberNotInitialized(init.pos, context); - break; - - default: - members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); - } - } - } - - if (!this.match(types$1.braceR)) { - this.expect(types$1.comma); - } - } - - return { - members, - hasUnknownMembers - }; - } - - flowEnumStringMembers(initializedMembers, defaultedMembers, { - enumName - }) { - if (initializedMembers.length === 0) { - return defaultedMembers; - } else if (defaultedMembers.length === 0) { - return initializedMembers; - } else if (defaultedMembers.length > initializedMembers.length) { - for (const member of initializedMembers) { - this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, { - enumName - }); - } - - return defaultedMembers; - } else { - for (const member of defaultedMembers) { - this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, { - enumName - }); - } - - return initializedMembers; - } - } - - flowEnumParseExplicitType({ - enumName - }) { - if (this.eatContextual("of")) { - if (!this.match(types$1.name)) { - throw this.flowEnumErrorInvalidExplicitType(this.state.start, { - enumName, - suppliedType: null - }); - } - - const { - value - } = this.state; - this.next(); - - if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { - this.flowEnumErrorInvalidExplicitType(this.state.start, { - enumName, - suppliedType: value - }); - } - - return value; - } - - return null; - } - - flowEnumBody(node, { - enumName, - nameLoc - }) { - const explicitType = this.flowEnumParseExplicitType({ - enumName - }); - this.expect(types$1.braceL); - const { - members, - hasUnknownMembers - } = this.flowEnumMembers({ - enumName, - explicitType - }); - node.hasUnknownMembers = hasUnknownMembers; - - switch (explicitType) { - case "boolean": - node.explicitType = true; - node.members = members.booleanMembers; - this.expect(types$1.braceR); - return this.finishNode(node, "EnumBooleanBody"); - - case "number": - node.explicitType = true; - node.members = members.numberMembers; - this.expect(types$1.braceR); - return this.finishNode(node, "EnumNumberBody"); - - case "string": - node.explicitType = true; - node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { - enumName - }); - this.expect(types$1.braceR); - return this.finishNode(node, "EnumStringBody"); - - case "symbol": - node.members = members.defaultedMembers; - this.expect(types$1.braceR); - return this.finishNode(node, "EnumSymbolBody"); - - default: - { - const empty = () => { - node.members = []; - this.expect(types$1.braceR); - return this.finishNode(node, "EnumStringBody"); - }; - - node.explicitType = false; - const boolsLen = members.booleanMembers.length; - const numsLen = members.numberMembers.length; - const strsLen = members.stringMembers.length; - const defaultedLen = members.defaultedMembers.length; - - if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { - return empty(); - } else if (!boolsLen && !numsLen) { - node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { - enumName - }); - this.expect(types$1.braceR); - return this.finishNode(node, "EnumStringBody"); - } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { - for (const member of members.defaultedMembers) { - this.flowEnumErrorBooleanMemberNotInitialized(member.start, { - enumName, - memberName: member.id.name - }); - } - - node.members = members.booleanMembers; - this.expect(types$1.braceR); - return this.finishNode(node, "EnumBooleanBody"); - } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { - for (const member of members.defaultedMembers) { - this.flowEnumErrorNumberMemberNotInitialized(member.start, { - enumName, - memberName: member.id.name - }); - } - - node.members = members.numberMembers; - this.expect(types$1.braceR); - return this.finishNode(node, "EnumNumberBody"); - } else { - this.flowEnumErrorInconsistentMemberValues(nameLoc, { - enumName - }); - return empty(); - } - } - } - } - - flowParseEnumDeclaration(node) { - const id = this.parseIdentifier(); - node.id = id; - node.body = this.flowEnumBody(this.startNode(), { - enumName: id.name, - nameLoc: id.start - }); - return this.finishNode(node, "EnumDeclaration"); - } - - isLookaheadToken_lt() { - const next = this.nextTokenStart(); - - if (this.input.charCodeAt(next) === 60) { - const afterNext = this.input.charCodeAt(next + 1); - return afterNext !== 60 && afterNext !== 61; - } - - return false; - } - - maybeUnwrapTypeCastExpression(node) { - return node.type === "TypeCastExpression" ? node.expression : node; - } - -}); - -const entities = { - quot: "\u0022", - amp: "&", - apos: "\u0027", - lt: "<", - gt: ">", - nbsp: "\u00A0", - iexcl: "\u00A1", - cent: "\u00A2", - pound: "\u00A3", - curren: "\u00A4", - yen: "\u00A5", - brvbar: "\u00A6", - sect: "\u00A7", - uml: "\u00A8", - copy: "\u00A9", - ordf: "\u00AA", - laquo: "\u00AB", - not: "\u00AC", - shy: "\u00AD", - reg: "\u00AE", - macr: "\u00AF", - deg: "\u00B0", - plusmn: "\u00B1", - sup2: "\u00B2", - sup3: "\u00B3", - acute: "\u00B4", - micro: "\u00B5", - para: "\u00B6", - middot: "\u00B7", - cedil: "\u00B8", - sup1: "\u00B9", - ordm: "\u00BA", - raquo: "\u00BB", - frac14: "\u00BC", - frac12: "\u00BD", - frac34: "\u00BE", - iquest: "\u00BF", - Agrave: "\u00C0", - Aacute: "\u00C1", - Acirc: "\u00C2", - Atilde: "\u00C3", - Auml: "\u00C4", - Aring: "\u00C5", - AElig: "\u00C6", - Ccedil: "\u00C7", - Egrave: "\u00C8", - Eacute: "\u00C9", - Ecirc: "\u00CA", - Euml: "\u00CB", - Igrave: "\u00CC", - Iacute: "\u00CD", - Icirc: "\u00CE", - Iuml: "\u00CF", - ETH: "\u00D0", - Ntilde: "\u00D1", - Ograve: "\u00D2", - Oacute: "\u00D3", - Ocirc: "\u00D4", - Otilde: "\u00D5", - Ouml: "\u00D6", - times: "\u00D7", - Oslash: "\u00D8", - Ugrave: "\u00D9", - Uacute: "\u00DA", - Ucirc: "\u00DB", - Uuml: "\u00DC", - Yacute: "\u00DD", - THORN: "\u00DE", - szlig: "\u00DF", - agrave: "\u00E0", - aacute: "\u00E1", - acirc: "\u00E2", - atilde: "\u00E3", - auml: "\u00E4", - aring: "\u00E5", - aelig: "\u00E6", - ccedil: "\u00E7", - egrave: "\u00E8", - eacute: "\u00E9", - ecirc: "\u00EA", - euml: "\u00EB", - igrave: "\u00EC", - iacute: "\u00ED", - icirc: "\u00EE", - iuml: "\u00EF", - eth: "\u00F0", - ntilde: "\u00F1", - ograve: "\u00F2", - oacute: "\u00F3", - ocirc: "\u00F4", - otilde: "\u00F5", - ouml: "\u00F6", - divide: "\u00F7", - oslash: "\u00F8", - ugrave: "\u00F9", - uacute: "\u00FA", - ucirc: "\u00FB", - uuml: "\u00FC", - yacute: "\u00FD", - thorn: "\u00FE", - yuml: "\u00FF", - OElig: "\u0152", - oelig: "\u0153", - Scaron: "\u0160", - scaron: "\u0161", - Yuml: "\u0178", - fnof: "\u0192", - circ: "\u02C6", - tilde: "\u02DC", - Alpha: "\u0391", - Beta: "\u0392", - Gamma: "\u0393", - Delta: "\u0394", - Epsilon: "\u0395", - Zeta: "\u0396", - Eta: "\u0397", - Theta: "\u0398", - Iota: "\u0399", - Kappa: "\u039A", - Lambda: "\u039B", - Mu: "\u039C", - Nu: "\u039D", - Xi: "\u039E", - Omicron: "\u039F", - Pi: "\u03A0", - Rho: "\u03A1", - Sigma: "\u03A3", - Tau: "\u03A4", - Upsilon: "\u03A5", - Phi: "\u03A6", - Chi: "\u03A7", - Psi: "\u03A8", - Omega: "\u03A9", - alpha: "\u03B1", - beta: "\u03B2", - gamma: "\u03B3", - delta: "\u03B4", - epsilon: "\u03B5", - zeta: "\u03B6", - eta: "\u03B7", - theta: "\u03B8", - iota: "\u03B9", - kappa: "\u03BA", - lambda: "\u03BB", - mu: "\u03BC", - nu: "\u03BD", - xi: "\u03BE", - omicron: "\u03BF", - pi: "\u03C0", - rho: "\u03C1", - sigmaf: "\u03C2", - sigma: "\u03C3", - tau: "\u03C4", - upsilon: "\u03C5", - phi: "\u03C6", - chi: "\u03C7", - psi: "\u03C8", - omega: "\u03C9", - thetasym: "\u03D1", - upsih: "\u03D2", - piv: "\u03D6", - ensp: "\u2002", - emsp: "\u2003", - thinsp: "\u2009", - zwnj: "\u200C", - zwj: "\u200D", - lrm: "\u200E", - rlm: "\u200F", - ndash: "\u2013", - mdash: "\u2014", - lsquo: "\u2018", - rsquo: "\u2019", - sbquo: "\u201A", - ldquo: "\u201C", - rdquo: "\u201D", - bdquo: "\u201E", - dagger: "\u2020", - Dagger: "\u2021", - bull: "\u2022", - hellip: "\u2026", - permil: "\u2030", - prime: "\u2032", - Prime: "\u2033", - lsaquo: "\u2039", - rsaquo: "\u203A", - oline: "\u203E", - frasl: "\u2044", - euro: "\u20AC", - image: "\u2111", - weierp: "\u2118", - real: "\u211C", - trade: "\u2122", - alefsym: "\u2135", - larr: "\u2190", - uarr: "\u2191", - rarr: "\u2192", - darr: "\u2193", - harr: "\u2194", - crarr: "\u21B5", - lArr: "\u21D0", - uArr: "\u21D1", - rArr: "\u21D2", - dArr: "\u21D3", - hArr: "\u21D4", - forall: "\u2200", - part: "\u2202", - exist: "\u2203", - empty: "\u2205", - nabla: "\u2207", - isin: "\u2208", - notin: "\u2209", - ni: "\u220B", - prod: "\u220F", - sum: "\u2211", - minus: "\u2212", - lowast: "\u2217", - radic: "\u221A", - prop: "\u221D", - infin: "\u221E", - ang: "\u2220", - and: "\u2227", - or: "\u2228", - cap: "\u2229", - cup: "\u222A", - int: "\u222B", - there4: "\u2234", - sim: "\u223C", - cong: "\u2245", - asymp: "\u2248", - ne: "\u2260", - equiv: "\u2261", - le: "\u2264", - ge: "\u2265", - sub: "\u2282", - sup: "\u2283", - nsub: "\u2284", - sube: "\u2286", - supe: "\u2287", - oplus: "\u2295", - otimes: "\u2297", - perp: "\u22A5", - sdot: "\u22C5", - lceil: "\u2308", - rceil: "\u2309", - lfloor: "\u230A", - rfloor: "\u230B", - lang: "\u2329", - rang: "\u232A", - loz: "\u25CA", - spades: "\u2660", - clubs: "\u2663", - hearts: "\u2665", - diams: "\u2666" -}; - -const HEX_NUMBER = /^[\da-fA-F]+$/; -const DECIMAL_NUMBER = /^\d+$/; -const JsxErrors = makeErrorTemplates({ - AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", - MissingClosingTagElement: "Expected corresponding JSX closing tag for <%0>.", - MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", - UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", - UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", - UnterminatedJsxContent: "Unterminated JSX contents.", - UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?" -}, ErrorCodes.SyntaxError); -types.j_oTag = new TokContext("<tag"); -types.j_cTag = new TokContext("</tag"); -types.j_expr = new TokContext("<tag>...</tag>", true); -types$1.jsxName = new TokenType("jsxName"); -types$1.jsxText = new TokenType("jsxText", { - beforeExpr: true -}); -types$1.jsxTagStart = new TokenType("jsxTagStart", { - startsExpr: true -}); -types$1.jsxTagEnd = new TokenType("jsxTagEnd"); - -types$1.jsxTagStart.updateContext = context => { - context.push(types.j_expr, types.j_oTag); -}; - -function isFragment(object) { - return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; -} - -function getQualifiedJSXName(object) { - if (object.type === "JSXIdentifier") { - return object.name; - } - - if (object.type === "JSXNamespacedName") { - return object.namespace.name + ":" + object.name.name; - } - - if (object.type === "JSXMemberExpression") { - return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); - } - - throw new Error("Node had unexpected type: " + object.type); -} - -var jsx = (superClass => class extends superClass { - jsxReadToken() { - let out = ""; - let chunkStart = this.state.pos; - - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(this.state.start, JsxErrors.UnterminatedJsxContent); - } - - const ch = this.input.charCodeAt(this.state.pos); - - switch (ch) { - case 60: - case 123: - if (this.state.pos === this.state.start) { - if (ch === 60 && this.state.exprAllowed) { - ++this.state.pos; - return this.finishToken(types$1.jsxTagStart); - } - - return super.getTokenFromCode(ch); - } - - out += this.input.slice(chunkStart, this.state.pos); - return this.finishToken(types$1.jsxText, out); - - case 38: - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadEntity(); - chunkStart = this.state.pos; - break; - - case 62: - case 125: - - default: - if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadNewLine(true); - chunkStart = this.state.pos; - } else { - ++this.state.pos; - } - - } - } - } - - jsxReadNewLine(normalizeCRLF) { - const ch = this.input.charCodeAt(this.state.pos); - let out; - ++this.state.pos; - - if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { - ++this.state.pos; - out = normalizeCRLF ? "\n" : "\r\n"; - } else { - out = String.fromCharCode(ch); - } - - ++this.state.curLine; - this.state.lineStart = this.state.pos; - return out; - } - - jsxReadString(quote) { - let out = ""; - let chunkStart = ++this.state.pos; - - for (;;) { - if (this.state.pos >= this.length) { - throw this.raise(this.state.start, ErrorMessages.UnterminatedString); - } - - const ch = this.input.charCodeAt(this.state.pos); - if (ch === quote) break; - - if (ch === 38) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadEntity(); - chunkStart = this.state.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.state.pos); - out += this.jsxReadNewLine(false); - chunkStart = this.state.pos; - } else { - ++this.state.pos; - } - } - - out += this.input.slice(chunkStart, this.state.pos++); - return this.finishToken(types$1.string, out); - } - - jsxReadEntity() { - let str = ""; - let count = 0; - let entity; - let ch = this.input[this.state.pos]; - const startPos = ++this.state.pos; - - while (this.state.pos < this.length && count++ < 10) { - ch = this.input[this.state.pos++]; - - if (ch === ";") { - if (str[0] === "#") { - if (str[1] === "x") { - str = str.substr(2); - - if (HEX_NUMBER.test(str)) { - entity = String.fromCodePoint(parseInt(str, 16)); - } - } else { - str = str.substr(1); - - if (DECIMAL_NUMBER.test(str)) { - entity = String.fromCodePoint(parseInt(str, 10)); - } - } - } else { - entity = entities[str]; - } - - break; - } - - str += ch; - } - - if (!entity) { - this.state.pos = startPos; - return "&"; - } - - return entity; - } - - jsxReadWord() { - let ch; - const start = this.state.pos; - - do { - ch = this.input.charCodeAt(++this.state.pos); - } while (isIdentifierChar(ch) || ch === 45); - - return this.finishToken(types$1.jsxName, this.input.slice(start, this.state.pos)); - } - - jsxParseIdentifier() { - const node = this.startNode(); - - if (this.match(types$1.jsxName)) { - node.name = this.state.value; - } else if (this.state.type.keyword) { - node.name = this.state.type.keyword; - } else { - this.unexpected(); - } - - this.next(); - return this.finishNode(node, "JSXIdentifier"); - } - - jsxParseNamespacedName() { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const name = this.jsxParseIdentifier(); - if (!this.eat(types$1.colon)) return name; - const node = this.startNodeAt(startPos, startLoc); - node.namespace = name; - node.name = this.jsxParseIdentifier(); - return this.finishNode(node, "JSXNamespacedName"); - } - - jsxParseElementName() { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - let node = this.jsxParseNamespacedName(); - - if (node.type === "JSXNamespacedName") { - return node; - } - - while (this.eat(types$1.dot)) { - const newNode = this.startNodeAt(startPos, startLoc); - newNode.object = node; - newNode.property = this.jsxParseIdentifier(); - node = this.finishNode(newNode, "JSXMemberExpression"); - } - - return node; - } - - jsxParseAttributeValue() { - let node; - - switch (this.state.type) { - case types$1.braceL: - node = this.startNode(); - this.next(); - node = this.jsxParseExpressionContainer(node); - - if (node.expression.type === "JSXEmptyExpression") { - this.raise(node.start, JsxErrors.AttributeIsEmpty); - } - - return node; - - case types$1.jsxTagStart: - case types$1.string: - return this.parseExprAtom(); - - default: - throw this.raise(this.state.start, JsxErrors.UnsupportedJsxValue); - } - } - - jsxParseEmptyExpression() { - const node = this.startNodeAt(this.state.lastTokEnd, this.state.lastTokEndLoc); - return this.finishNodeAt(node, "JSXEmptyExpression", this.state.start, this.state.startLoc); - } - - jsxParseSpreadChild(node) { - this.next(); - node.expression = this.parseExpression(); - this.expect(types$1.braceR); - return this.finishNode(node, "JSXSpreadChild"); - } - - jsxParseExpressionContainer(node) { - if (this.match(types$1.braceR)) { - node.expression = this.jsxParseEmptyExpression(); - } else { - const expression = this.parseExpression(); - node.expression = expression; - } - - this.expect(types$1.braceR); - return this.finishNode(node, "JSXExpressionContainer"); - } - - jsxParseAttribute() { - const node = this.startNode(); - - if (this.eat(types$1.braceL)) { - this.expect(types$1.ellipsis); - node.argument = this.parseMaybeAssignAllowIn(); - this.expect(types$1.braceR); - return this.finishNode(node, "JSXSpreadAttribute"); - } - - node.name = this.jsxParseNamespacedName(); - node.value = this.eat(types$1.eq) ? this.jsxParseAttributeValue() : null; - return this.finishNode(node, "JSXAttribute"); - } - - jsxParseOpeningElementAt(startPos, startLoc) { - const node = this.startNodeAt(startPos, startLoc); - - if (this.match(types$1.jsxTagEnd)) { - this.expect(types$1.jsxTagEnd); - return this.finishNode(node, "JSXOpeningFragment"); - } - - node.name = this.jsxParseElementName(); - return this.jsxParseOpeningElementAfterName(node); - } - - jsxParseOpeningElementAfterName(node) { - const attributes = []; - - while (!this.match(types$1.slash) && !this.match(types$1.jsxTagEnd)) { - attributes.push(this.jsxParseAttribute()); - } - - node.attributes = attributes; - node.selfClosing = this.eat(types$1.slash); - this.expect(types$1.jsxTagEnd); - return this.finishNode(node, "JSXOpeningElement"); - } - - jsxParseClosingElementAt(startPos, startLoc) { - const node = this.startNodeAt(startPos, startLoc); - - if (this.match(types$1.jsxTagEnd)) { - this.expect(types$1.jsxTagEnd); - return this.finishNode(node, "JSXClosingFragment"); - } - - node.name = this.jsxParseElementName(); - this.expect(types$1.jsxTagEnd); - return this.finishNode(node, "JSXClosingElement"); - } - - jsxParseElementAt(startPos, startLoc) { - const node = this.startNodeAt(startPos, startLoc); - const children = []; - const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc); - let closingElement = null; - - if (!openingElement.selfClosing) { - contents: for (;;) { - switch (this.state.type) { - case types$1.jsxTagStart: - startPos = this.state.start; - startLoc = this.state.startLoc; - this.next(); - - if (this.eat(types$1.slash)) { - closingElement = this.jsxParseClosingElementAt(startPos, startLoc); - break contents; - } - - children.push(this.jsxParseElementAt(startPos, startLoc)); - break; - - case types$1.jsxText: - children.push(this.parseExprAtom()); - break; - - case types$1.braceL: - { - const node = this.startNode(); - this.next(); - - if (this.match(types$1.ellipsis)) { - children.push(this.jsxParseSpreadChild(node)); - } else { - children.push(this.jsxParseExpressionContainer(node)); - } - - break; - } - - default: - throw this.unexpected(); - } - } - - if (isFragment(openingElement) && !isFragment(closingElement)) { - this.raise(closingElement.start, JsxErrors.MissingClosingTagFragment); - } else if (!isFragment(openingElement) && isFragment(closingElement)) { - this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name)); - } else if (!isFragment(openingElement) && !isFragment(closingElement)) { - if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { - this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name)); - } - } - } - - if (isFragment(openingElement)) { - node.openingFragment = openingElement; - node.closingFragment = closingElement; - } else { - node.openingElement = openingElement; - node.closingElement = closingElement; - } - - node.children = children; - - if (this.isRelational("<")) { - throw this.raise(this.state.start, JsxErrors.UnwrappedAdjacentJSXElements); - } - - return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); - } - - jsxParseElement() { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - this.next(); - return this.jsxParseElementAt(startPos, startLoc); - } - - parseExprAtom(refExpressionErrors) { - if (this.match(types$1.jsxText)) { - return this.parseLiteral(this.state.value, "JSXText"); - } else if (this.match(types$1.jsxTagStart)) { - return this.jsxParseElement(); - } else if (this.isRelational("<") && this.input.charCodeAt(this.state.pos) !== 33) { - this.finishToken(types$1.jsxTagStart); - return this.jsxParseElement(); - } else { - return super.parseExprAtom(refExpressionErrors); - } - } - - createLookaheadState(state) { - const lookaheadState = super.createLookaheadState(state); - lookaheadState.inPropertyName = state.inPropertyName; - return lookaheadState; - } - - getTokenFromCode(code) { - if (this.state.inPropertyName) return super.getTokenFromCode(code); - const context = this.curContext(); - - if (context === types.j_expr) { - return this.jsxReadToken(); - } - - if (context === types.j_oTag || context === types.j_cTag) { - if (isIdentifierStart(code)) { - return this.jsxReadWord(); - } - - if (code === 62) { - ++this.state.pos; - return this.finishToken(types$1.jsxTagEnd); - } - - if ((code === 34 || code === 39) && context === types.j_oTag) { - return this.jsxReadString(code); - } - } - - if (code === 60 && this.state.exprAllowed && this.input.charCodeAt(this.state.pos + 1) !== 33) { - ++this.state.pos; - return this.finishToken(types$1.jsxTagStart); - } - - return super.getTokenFromCode(code); - } - - updateContext(prevType) { - super.updateContext(prevType); - const { - context, - type - } = this.state; - - if (type === types$1.slash && prevType === types$1.jsxTagStart) { - context.splice(-2, 2, types.j_cTag); - this.state.exprAllowed = false; - } else if (type === types$1.jsxTagEnd) { - const out = context.pop(); - - if (out === types.j_oTag && prevType === types$1.slash || out === types.j_cTag) { - context.pop(); - this.state.exprAllowed = context[context.length - 1] === types.j_expr; - } else { - this.state.exprAllowed = true; - } - } else if (type.keyword && (prevType === types$1.dot || prevType === types$1.questionDot)) { - this.state.exprAllowed = false; - } else { - this.state.exprAllowed = type.beforeExpr; - } - } - -}); - -class TypeScriptScope extends Scope { - constructor(...args) { - super(...args); - this.types = new Set(); - this.enums = new Set(); - this.constEnums = new Set(); - this.classes = new Set(); - this.exportOnlyBindings = new Set(); - } - -} - -class TypeScriptScopeHandler extends ScopeHandler { - createScope(flags) { - return new TypeScriptScope(flags); - } - - declareName(name, bindingType, pos) { - const scope = this.currentScope(); - - if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) { - this.maybeExportDefined(scope, name); - scope.exportOnlyBindings.add(name); - return; - } - - super.declareName(...arguments); - - if (bindingType & BIND_KIND_TYPE) { - if (!(bindingType & BIND_KIND_VALUE)) { - this.checkRedeclarationInScope(scope, name, bindingType, pos); - this.maybeExportDefined(scope, name); - } - - scope.types.add(name); - } - - if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name); - if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name); - if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name); - } - - isRedeclaredInScope(scope, name, bindingType) { - if (scope.enums.has(name)) { - if (bindingType & BIND_FLAGS_TS_ENUM) { - const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM); - const wasConst = scope.constEnums.has(name); - return isConst !== wasConst; - } - - return true; - } - - if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) { - if (scope.lexical.has(name)) { - return !!(bindingType & BIND_KIND_VALUE); - } else { - return false; - } - } - - if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) { - return true; - } - - return super.isRedeclaredInScope(...arguments); - } - - checkLocalExport(id) { - const topLevelScope = this.scopeStack[0]; - const { - name - } = id; - - if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) { - super.checkLocalExport(id); - } - } - -} - -function nonNull(x) { - if (x == null) { - throw new Error(`Unexpected ${x} value.`); - } - - return x; -} - -function assert(x) { - if (!x) { - throw new Error("Assert fail"); - } -} - -const TSErrors = makeErrorTemplates({ - AbstractMethodHasImplementation: "Method '%0' cannot have an implementation because it is marked abstract.", - AbstractPropertyHasInitializer: "Property '%0' cannot have an initializer because it is marked abstract.", - AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", - AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", - ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", - ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", - ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", - DeclareAccessor: "'declare' is not allowed in %0ters.", - DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", - DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", - DuplicateAccessibilityModifier: "Accessibility modifier already seen.", - DuplicateModifier: "Duplicate modifier: '%0'.", - EmptyHeritageClauseType: "'%0' list cannot be empty.", - EmptyTypeArguments: "Type argument list cannot be empty.", - EmptyTypeParameters: "Type parameter list cannot be empty.", - ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", - ImportAliasHasImportType: "An import alias can not use 'import type'.", - IncompatibleModifiers: "'%0' modifier cannot be used with '%1' modifier.", - IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", - IndexSignatureHasAccessibility: "Index signatures cannot have an accessibility modifier ('%0').", - IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", - IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", - IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", - InvalidModifierOnTypeMember: "'%0' modifier cannot appear on a type member.", - InvalidModifiersOrder: "'%0' modifier must precede '%1' modifier.", - InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", - MissingInterfaceName: "'interface' declarations must be followed by an identifier.", - MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.", - NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", - NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", - OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", - OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", - PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", - PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", - PrivateElementHasAccessibility: "Private elements cannot have an accessibility modifier ('%0').", - ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", - SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", - SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", - SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", - StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", - TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", - TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", - UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", - UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", - UnexpectedTypeAnnotation: "Did not expect a type annotation here.", - UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", - UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", - UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", - UnsupportedSignatureParameterKind: "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0." -}, ErrorCodes.SyntaxError); - -function keywordTypeFromName(value) { - switch (value) { - case "any": - return "TSAnyKeyword"; - - case "boolean": - return "TSBooleanKeyword"; - - case "bigint": - return "TSBigIntKeyword"; - - case "never": - return "TSNeverKeyword"; - - case "number": - return "TSNumberKeyword"; - - case "object": - return "TSObjectKeyword"; - - case "string": - return "TSStringKeyword"; - - case "symbol": - return "TSSymbolKeyword"; - - case "undefined": - return "TSUndefinedKeyword"; - - case "unknown": - return "TSUnknownKeyword"; - - default: - return undefined; - } -} - -function tsIsAccessModifier(modifier) { - return modifier === "private" || modifier === "public" || modifier === "protected"; -} - -var typescript = (superClass => class extends superClass { - getScopeHandler() { - return TypeScriptScopeHandler; - } - - tsIsIdentifier() { - return this.match(types$1.name); - } - - tsTokenCanFollowModifier() { - return (this.match(types$1.bracketL) || this.match(types$1.braceL) || this.match(types$1.star) || this.match(types$1.ellipsis) || this.match(types$1.privateName) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); - } - - tsNextTokenCanFollowModifier() { - this.next(); - return this.tsTokenCanFollowModifier(); - } - - tsParseModifier(allowedModifiers) { - if (!this.match(types$1.name)) { - return undefined; - } - - const modifier = this.state.value; - - if (allowedModifiers.indexOf(modifier) !== -1 && this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { - return modifier; - } - - return undefined; - } - - tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate) { - const enforceOrder = (pos, modifier, before, after) => { - if (modifier === before && modified[after]) { - this.raise(pos, TSErrors.InvalidModifiersOrder, before, after); - } - }; - - const incompatible = (pos, modifier, mod1, mod2) => { - if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { - this.raise(pos, TSErrors.IncompatibleModifiers, mod1, mod2); - } - }; - - for (;;) { - const startPos = this.state.start; - const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : [])); - if (!modifier) break; - - if (tsIsAccessModifier(modifier)) { - if (modified.accessibility) { - this.raise(startPos, TSErrors.DuplicateAccessibilityModifier); - } else { - enforceOrder(startPos, modifier, modifier, "override"); - enforceOrder(startPos, modifier, modifier, "static"); - enforceOrder(startPos, modifier, modifier, "readonly"); - modified.accessibility = modifier; - } - } else { - if (Object.hasOwnProperty.call(modified, modifier)) { - this.raise(startPos, TSErrors.DuplicateModifier, modifier); - } else { - enforceOrder(startPos, modifier, "static", "readonly"); - enforceOrder(startPos, modifier, "static", "override"); - enforceOrder(startPos, modifier, "override", "readonly"); - enforceOrder(startPos, modifier, "abstract", "override"); - incompatible(startPos, modifier, "declare", "override"); - incompatible(startPos, modifier, "static", "abstract"); - } - - modified[modifier] = true; - } - - if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { - this.raise(startPos, errorTemplate, modifier); - } - } - } - - tsIsListTerminator(kind) { - switch (kind) { - case "EnumMembers": - case "TypeMembers": - return this.match(types$1.braceR); - - case "HeritageClauseElement": - return this.match(types$1.braceL); - - case "TupleElementTypes": - return this.match(types$1.bracketR); - - case "TypeParametersOrArguments": - return this.isRelational(">"); - } - - throw new Error("Unreachable"); - } - - tsParseList(kind, parseElement) { - const result = []; - - while (!this.tsIsListTerminator(kind)) { - result.push(parseElement()); - } - - return result; - } - - tsParseDelimitedList(kind, parseElement) { - return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true)); - } - - tsParseDelimitedListWorker(kind, parseElement, expectSuccess) { - const result = []; - - for (;;) { - if (this.tsIsListTerminator(kind)) { - break; - } - - const element = parseElement(); - - if (element == null) { - return undefined; - } - - result.push(element); - - if (this.eat(types$1.comma)) { - continue; - } - - if (this.tsIsListTerminator(kind)) { - break; - } - - if (expectSuccess) { - this.expect(types$1.comma); - } - - return undefined; - } - - return result; - } - - tsParseBracketedList(kind, parseElement, bracket, skipFirstToken) { - if (!skipFirstToken) { - if (bracket) { - this.expect(types$1.bracketL); - } else { - this.expectRelational("<"); - } - } - - const result = this.tsParseDelimitedList(kind, parseElement); - - if (bracket) { - this.expect(types$1.bracketR); - } else { - this.expectRelational(">"); - } - - return result; - } - - tsParseImportType() { - const node = this.startNode(); - this.expect(types$1._import); - this.expect(types$1.parenL); - - if (!this.match(types$1.string)) { - this.raise(this.state.start, TSErrors.UnsupportedImportTypeArgument); - } - - node.argument = this.parseExprAtom(); - this.expect(types$1.parenR); - - if (this.eat(types$1.dot)) { - node.qualifier = this.tsParseEntityName(true); - } - - if (this.isRelational("<")) { - node.typeParameters = this.tsParseTypeArguments(); - } - - return this.finishNode(node, "TSImportType"); - } - - tsParseEntityName(allowReservedWords) { - let entity = this.parseIdentifier(); - - while (this.eat(types$1.dot)) { - const node = this.startNodeAtNode(entity); - node.left = entity; - node.right = this.parseIdentifier(allowReservedWords); - entity = this.finishNode(node, "TSQualifiedName"); - } - - return entity; - } - - tsParseTypeReference() { - const node = this.startNode(); - node.typeName = this.tsParseEntityName(false); - - if (!this.hasPrecedingLineBreak() && this.isRelational("<")) { - node.typeParameters = this.tsParseTypeArguments(); - } - - return this.finishNode(node, "TSTypeReference"); - } - - tsParseThisTypePredicate(lhs) { - this.next(); - const node = this.startNodeAtNode(lhs); - node.parameterName = lhs; - node.typeAnnotation = this.tsParseTypeAnnotation(false); - node.asserts = false; - return this.finishNode(node, "TSTypePredicate"); - } - - tsParseThisTypeNode() { - const node = this.startNode(); - this.next(); - return this.finishNode(node, "TSThisType"); - } - - tsParseTypeQuery() { - const node = this.startNode(); - this.expect(types$1._typeof); - - if (this.match(types$1._import)) { - node.exprName = this.tsParseImportType(); - } else { - node.exprName = this.tsParseEntityName(true); - } - - return this.finishNode(node, "TSTypeQuery"); - } - - tsParseTypeParameter() { - const node = this.startNode(); - node.name = this.tsParseTypeParameterName(); - node.constraint = this.tsEatThenParseType(types$1._extends); - node.default = this.tsEatThenParseType(types$1.eq); - return this.finishNode(node, "TSTypeParameter"); - } - - tsTryParseTypeParameters() { - if (this.isRelational("<")) { - return this.tsParseTypeParameters(); - } - } - - tsParseTypeParameters() { - const node = this.startNode(); - - if (this.isRelational("<") || this.match(types$1.jsxTagStart)) { - this.next(); - } else { - this.unexpected(); - } - - node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true); - - if (node.params.length === 0) { - this.raise(node.start, TSErrors.EmptyTypeParameters); - } - - return this.finishNode(node, "TSTypeParameterDeclaration"); - } - - tsTryNextParseConstantContext() { - if (this.lookahead().type === types$1._const) { - this.next(); - return this.tsParseTypeReference(); - } - - return null; - } - - tsFillSignature(returnToken, signature) { - const returnTokenRequired = returnToken === types$1.arrow; - signature.typeParameters = this.tsTryParseTypeParameters(); - this.expect(types$1.parenL); - signature.parameters = this.tsParseBindingListForSignature(); - - if (returnTokenRequired) { - signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken); - } else if (this.match(returnToken)) { - signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken); - } - } - - tsParseBindingListForSignature() { - return this.parseBindingList(types$1.parenR, 41).map(pattern => { - if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") { - this.raise(pattern.start, TSErrors.UnsupportedSignatureParameterKind, pattern.type); - } - - return pattern; - }); - } - - tsParseTypeMemberSemicolon() { - if (!this.eat(types$1.comma) && !this.isLineTerminator()) { - this.expect(types$1.semi); - } - } - - tsParseSignatureMember(kind, node) { - this.tsFillSignature(types$1.colon, node); - this.tsParseTypeMemberSemicolon(); - return this.finishNode(node, kind); - } - - tsIsUnambiguouslyIndexSignature() { - this.next(); - return this.eat(types$1.name) && this.match(types$1.colon); - } - - tsTryParseIndexSignature(node) { - if (!(this.match(types$1.bracketL) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { - return undefined; - } - - this.expect(types$1.bracketL); - const id = this.parseIdentifier(); - id.typeAnnotation = this.tsParseTypeAnnotation(); - this.resetEndLocation(id); - this.expect(types$1.bracketR); - node.parameters = [id]; - const type = this.tsTryParseTypeAnnotation(); - if (type) node.typeAnnotation = type; - this.tsParseTypeMemberSemicolon(); - return this.finishNode(node, "TSIndexSignature"); - } - - tsParsePropertyOrMethodSignature(node, readonly) { - if (this.eat(types$1.question)) node.optional = true; - const nodeAny = node; - - if (this.match(types$1.parenL) || this.isRelational("<")) { - if (readonly) { - this.raise(node.start, TSErrors.ReadonlyForMethodSignature); - } - - const method = nodeAny; - - if (method.kind && this.isRelational("<")) { - this.raise(this.state.pos, TSErrors.AccesorCannotHaveTypeParameters); - } - - this.tsFillSignature(types$1.colon, method); - this.tsParseTypeMemberSemicolon(); - - if (method.kind === "get") { - if (method.parameters.length > 0) { - this.raise(this.state.pos, ErrorMessages.BadGetterArity); - - if (this.isThisParam(method.parameters[0])) { - this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter); - } - } - } else if (method.kind === "set") { - if (method.parameters.length !== 1) { - this.raise(this.state.pos, ErrorMessages.BadSetterArity); - } else { - const firstParameter = method.parameters[0]; - - if (this.isThisParam(firstParameter)) { - this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter); - } - - if (firstParameter.type === "Identifier" && firstParameter.optional) { - this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveOptionalParameter); - } - - if (firstParameter.type === "RestElement") { - this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveRestParameter); - } - } - - if (method.typeAnnotation) { - this.raise(method.typeAnnotation.start, TSErrors.SetAccesorCannotHaveReturnType); - } - } else { - method.kind = "method"; - } - - return this.finishNode(method, "TSMethodSignature"); - } else { - const property = nodeAny; - if (readonly) property.readonly = true; - const type = this.tsTryParseTypeAnnotation(); - if (type) property.typeAnnotation = type; - this.tsParseTypeMemberSemicolon(); - return this.finishNode(property, "TSPropertySignature"); - } - } - - tsParseTypeMember() { - const node = this.startNode(); - - if (this.match(types$1.parenL) || this.isRelational("<")) { - return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); - } - - if (this.match(types$1._new)) { - const id = this.startNode(); - this.next(); - - if (this.match(types$1.parenL) || this.isRelational("<")) { - return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); - } else { - node.key = this.createIdentifier(id, "new"); - return this.tsParsePropertyOrMethodSignature(node, false); - } - } - - this.tsParseModifiers(node, ["readonly"], ["declare", "abstract", "private", "protected", "public", "static", "override"], TSErrors.InvalidModifierOnTypeMember); - const idx = this.tsTryParseIndexSignature(node); - - if (idx) { - return idx; - } - - this.parsePropertyName(node, false); - - if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { - node.kind = node.key.name; - this.parsePropertyName(node, false); - } - - return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); - } - - tsParseTypeLiteral() { - const node = this.startNode(); - node.members = this.tsParseObjectTypeMembers(); - return this.finishNode(node, "TSTypeLiteral"); - } - - tsParseObjectTypeMembers() { - this.expect(types$1.braceL); - const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); - this.expect(types$1.braceR); - return members; - } - - tsIsStartOfMappedType() { - this.next(); - - if (this.eat(types$1.plusMin)) { - return this.isContextual("readonly"); - } - - if (this.isContextual("readonly")) { - this.next(); - } - - if (!this.match(types$1.bracketL)) { - return false; - } - - this.next(); - - if (!this.tsIsIdentifier()) { - return false; - } - - this.next(); - return this.match(types$1._in); - } - - tsParseMappedTypeParameter() { - const node = this.startNode(); - node.name = this.tsParseTypeParameterName(); - node.constraint = this.tsExpectThenParseType(types$1._in); - return this.finishNode(node, "TSTypeParameter"); - } - - tsParseMappedType() { - const node = this.startNode(); - this.expect(types$1.braceL); - - if (this.match(types$1.plusMin)) { - node.readonly = this.state.value; - this.next(); - this.expectContextual("readonly"); - } else if (this.eatContextual("readonly")) { - node.readonly = true; - } - - this.expect(types$1.bracketL); - node.typeParameter = this.tsParseMappedTypeParameter(); - node.nameType = this.eatContextual("as") ? this.tsParseType() : null; - this.expect(types$1.bracketR); - - if (this.match(types$1.plusMin)) { - node.optional = this.state.value; - this.next(); - this.expect(types$1.question); - } else if (this.eat(types$1.question)) { - node.optional = true; - } - - node.typeAnnotation = this.tsTryParseType(); - this.semicolon(); - this.expect(types$1.braceR); - return this.finishNode(node, "TSMappedType"); - } - - tsParseTupleType() { - const node = this.startNode(); - node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); - let seenOptionalElement = false; - let labeledElements = null; - node.elementTypes.forEach(elementNode => { - var _labeledElements; - - let { - type - } = elementNode; - - if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { - this.raise(elementNode.start, TSErrors.OptionalTypeBeforeRequired); - } - - seenOptionalElement = seenOptionalElement || type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"; - - if (type === "TSRestType") { - elementNode = elementNode.typeAnnotation; - type = elementNode.type; - } - - const isLabeled = type === "TSNamedTupleMember"; - labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled; - - if (labeledElements !== isLabeled) { - this.raise(elementNode.start, TSErrors.MixedLabeledAndUnlabeledElements); - } - }); - return this.finishNode(node, "TSTupleType"); - } - - tsParseTupleElementType() { - const { - start: startPos, - startLoc - } = this.state; - const rest = this.eat(types$1.ellipsis); - let type = this.tsParseType(); - const optional = this.eat(types$1.question); - const labeled = this.eat(types$1.colon); - - if (labeled) { - const labeledNode = this.startNodeAtNode(type); - labeledNode.optional = optional; - - if (type.type === "TSTypeReference" && !type.typeParameters && type.typeName.type === "Identifier") { - labeledNode.label = type.typeName; - } else { - this.raise(type.start, TSErrors.InvalidTupleMemberLabel); - labeledNode.label = type; - } - - labeledNode.elementType = this.tsParseType(); - type = this.finishNode(labeledNode, "TSNamedTupleMember"); - } else if (optional) { - const optionalTypeNode = this.startNodeAtNode(type); - optionalTypeNode.typeAnnotation = type; - type = this.finishNode(optionalTypeNode, "TSOptionalType"); - } - - if (rest) { - const restNode = this.startNodeAt(startPos, startLoc); - restNode.typeAnnotation = type; - type = this.finishNode(restNode, "TSRestType"); - } - - return type; - } - - tsParseParenthesizedType() { - const node = this.startNode(); - this.expect(types$1.parenL); - node.typeAnnotation = this.tsParseType(); - this.expect(types$1.parenR); - return this.finishNode(node, "TSParenthesizedType"); - } - - tsParseFunctionOrConstructorType(type, abstract) { - const node = this.startNode(); - - if (type === "TSConstructorType") { - node.abstract = !!abstract; - if (abstract) this.next(); - this.next(); - } - - this.tsFillSignature(types$1.arrow, node); - return this.finishNode(node, type); - } - - tsParseLiteralTypeNode() { - const node = this.startNode(); - - node.literal = (() => { - switch (this.state.type) { - case types$1.num: - case types$1.bigint: - case types$1.string: - case types$1._true: - case types$1._false: - return this.parseExprAtom(); - - default: - throw this.unexpected(); - } - })(); - - return this.finishNode(node, "TSLiteralType"); - } - - tsParseTemplateLiteralType() { - const node = this.startNode(); - node.literal = this.parseTemplate(false); - return this.finishNode(node, "TSLiteralType"); - } - - parseTemplateSubstitution() { - if (this.state.inType) return this.tsParseType(); - return super.parseTemplateSubstitution(); - } - - tsParseThisTypeOrThisTypePredicate() { - const thisKeyword = this.tsParseThisTypeNode(); - - if (this.isContextual("is") && !this.hasPrecedingLineBreak()) { - return this.tsParseThisTypePredicate(thisKeyword); - } else { - return thisKeyword; - } - } - - tsParseNonArrayType() { - switch (this.state.type) { - case types$1.name: - case types$1._void: - case types$1._null: - { - const type = this.match(types$1._void) ? "TSVoidKeyword" : this.match(types$1._null) ? "TSNullKeyword" : keywordTypeFromName(this.state.value); - - if (type !== undefined && this.lookaheadCharCode() !== 46) { - const node = this.startNode(); - this.next(); - return this.finishNode(node, type); - } - - return this.tsParseTypeReference(); - } - - case types$1.string: - case types$1.num: - case types$1.bigint: - case types$1._true: - case types$1._false: - return this.tsParseLiteralTypeNode(); - - case types$1.plusMin: - if (this.state.value === "-") { - const node = this.startNode(); - const nextToken = this.lookahead(); - - if (nextToken.type !== types$1.num && nextToken.type !== types$1.bigint) { - throw this.unexpected(); - } - - node.literal = this.parseMaybeUnary(); - return this.finishNode(node, "TSLiteralType"); - } - - break; - - case types$1._this: - return this.tsParseThisTypeOrThisTypePredicate(); - - case types$1._typeof: - return this.tsParseTypeQuery(); - - case types$1._import: - return this.tsParseImportType(); - - case types$1.braceL: - return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); - - case types$1.bracketL: - return this.tsParseTupleType(); - - case types$1.parenL: - return this.tsParseParenthesizedType(); - - case types$1.backQuote: - return this.tsParseTemplateLiteralType(); - } - - throw this.unexpected(); - } - - tsParseArrayTypeOrHigher() { - let type = this.tsParseNonArrayType(); - - while (!this.hasPrecedingLineBreak() && this.eat(types$1.bracketL)) { - if (this.match(types$1.bracketR)) { - const node = this.startNodeAtNode(type); - node.elementType = type; - this.expect(types$1.bracketR); - type = this.finishNode(node, "TSArrayType"); - } else { - const node = this.startNodeAtNode(type); - node.objectType = type; - node.indexType = this.tsParseType(); - this.expect(types$1.bracketR); - type = this.finishNode(node, "TSIndexedAccessType"); - } - } - - return type; - } - - tsParseTypeOperator(operator) { - const node = this.startNode(); - this.expectContextual(operator); - node.operator = operator; - node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); - - if (operator === "readonly") { - this.tsCheckTypeAnnotationForReadOnly(node); - } - - return this.finishNode(node, "TSTypeOperator"); - } - - tsCheckTypeAnnotationForReadOnly(node) { - switch (node.typeAnnotation.type) { - case "TSTupleType": - case "TSArrayType": - return; - - default: - this.raise(node.start, TSErrors.UnexpectedReadonly); - } - } - - tsParseInferType() { - const node = this.startNode(); - this.expectContextual("infer"); - const typeParameter = this.startNode(); - typeParameter.name = this.tsParseTypeParameterName(); - node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); - return this.finishNode(node, "TSInferType"); - } - - tsParseTypeOperatorOrHigher() { - const operator = ["keyof", "unique", "readonly"].find(kw => this.isContextual(kw)); - return operator ? this.tsParseTypeOperator(operator) : this.isContextual("infer") ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher(); - } - - tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { - const node = this.startNode(); - const hasLeadingOperator = this.eat(operator); - const types = []; - - do { - types.push(parseConstituentType()); - } while (this.eat(operator)); - - if (types.length === 1 && !hasLeadingOperator) { - return types[0]; - } - - node.types = types; - return this.finishNode(node, kind); - } - - tsParseIntersectionTypeOrHigher() { - return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), types$1.bitwiseAND); - } - - tsParseUnionTypeOrHigher() { - return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), types$1.bitwiseOR); - } - - tsIsStartOfFunctionType() { - if (this.isRelational("<")) { - return true; - } - - return this.match(types$1.parenL) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); - } - - tsSkipParameterStart() { - if (this.match(types$1.name) || this.match(types$1._this)) { - this.next(); - return true; - } - - if (this.match(types$1.braceL)) { - let braceStackCounter = 1; - this.next(); - - while (braceStackCounter > 0) { - if (this.match(types$1.braceL)) { - ++braceStackCounter; - } else if (this.match(types$1.braceR)) { - --braceStackCounter; - } - - this.next(); - } - - return true; - } - - if (this.match(types$1.bracketL)) { - let braceStackCounter = 1; - this.next(); - - while (braceStackCounter > 0) { - if (this.match(types$1.bracketL)) { - ++braceStackCounter; - } else if (this.match(types$1.bracketR)) { - --braceStackCounter; - } - - this.next(); - } - - return true; - } - - return false; - } - - tsIsUnambiguouslyStartOfFunctionType() { - this.next(); - - if (this.match(types$1.parenR) || this.match(types$1.ellipsis)) { - return true; - } - - if (this.tsSkipParameterStart()) { - if (this.match(types$1.colon) || this.match(types$1.comma) || this.match(types$1.question) || this.match(types$1.eq)) { - return true; - } - - if (this.match(types$1.parenR)) { - this.next(); - - if (this.match(types$1.arrow)) { - return true; - } - } - } - - return false; - } - - tsParseTypeOrTypePredicateAnnotation(returnToken) { - return this.tsInType(() => { - const t = this.startNode(); - this.expect(returnToken); - const node = this.startNode(); - const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); - - if (asserts && this.match(types$1._this)) { - let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); - - if (thisTypePredicate.type === "TSThisType") { - node.parameterName = thisTypePredicate; - node.asserts = true; - node.typeAnnotation = null; - thisTypePredicate = this.finishNode(node, "TSTypePredicate"); - } else { - this.resetStartLocationFromNode(thisTypePredicate, node); - thisTypePredicate.asserts = true; - } - - t.typeAnnotation = thisTypePredicate; - return this.finishNode(t, "TSTypeAnnotation"); - } - - const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); - - if (!typePredicateVariable) { - if (!asserts) { - return this.tsParseTypeAnnotation(false, t); - } - - node.parameterName = this.parseIdentifier(); - node.asserts = asserts; - node.typeAnnotation = null; - t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); - return this.finishNode(t, "TSTypeAnnotation"); - } - - const type = this.tsParseTypeAnnotation(false); - node.parameterName = typePredicateVariable; - node.typeAnnotation = type; - node.asserts = asserts; - t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); - return this.finishNode(t, "TSTypeAnnotation"); - }); - } - - tsTryParseTypeOrTypePredicateAnnotation() { - return this.match(types$1.colon) ? this.tsParseTypeOrTypePredicateAnnotation(types$1.colon) : undefined; - } - - tsTryParseTypeAnnotation() { - return this.match(types$1.colon) ? this.tsParseTypeAnnotation() : undefined; - } - - tsTryParseType() { - return this.tsEatThenParseType(types$1.colon); - } - - tsParseTypePredicatePrefix() { - const id = this.parseIdentifier(); - - if (this.isContextual("is") && !this.hasPrecedingLineBreak()) { - this.next(); - return id; - } - } - - tsParseTypePredicateAsserts() { - if (!this.match(types$1.name) || this.state.value !== "asserts" || this.hasPrecedingLineBreak()) { - return false; - } - - const containsEsc = this.state.containsEsc; - this.next(); - - if (!this.match(types$1.name) && !this.match(types$1._this)) { - return false; - } - - if (containsEsc) { - this.raise(this.state.lastTokStart, ErrorMessages.InvalidEscapedReservedWord, "asserts"); - } - - return true; - } - - tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { - this.tsInType(() => { - if (eatColon) this.expect(types$1.colon); - t.typeAnnotation = this.tsParseType(); - }); - return this.finishNode(t, "TSTypeAnnotation"); - } - - tsParseType() { - assert(this.state.inType); - const type = this.tsParseNonConditionalType(); - - if (this.hasPrecedingLineBreak() || !this.eat(types$1._extends)) { - return type; - } - - const node = this.startNodeAtNode(type); - node.checkType = type; - node.extendsType = this.tsParseNonConditionalType(); - this.expect(types$1.question); - node.trueType = this.tsParseType(); - this.expect(types$1.colon); - node.falseType = this.tsParseType(); - return this.finishNode(node, "TSConditionalType"); - } - - isAbstractConstructorSignature() { - return this.isContextual("abstract") && this.lookahead().type === types$1._new; - } - - tsParseNonConditionalType() { - if (this.tsIsStartOfFunctionType()) { - return this.tsParseFunctionOrConstructorType("TSFunctionType"); - } - - if (this.match(types$1._new)) { - return this.tsParseFunctionOrConstructorType("TSConstructorType"); - } else if (this.isAbstractConstructorSignature()) { - return this.tsParseFunctionOrConstructorType("TSConstructorType", true); - } - - return this.tsParseUnionTypeOrHigher(); - } - - tsParseTypeAssertion() { - const node = this.startNode(); - - const _const = this.tsTryNextParseConstantContext(); - - node.typeAnnotation = _const || this.tsNextThenParseType(); - this.expectRelational(">"); - node.expression = this.parseMaybeUnary(); - return this.finishNode(node, "TSTypeAssertion"); - } - - tsParseHeritageClause(descriptor) { - const originalStart = this.state.start; - const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", this.tsParseExpressionWithTypeArguments.bind(this)); - - if (!delimitedList.length) { - this.raise(originalStart, TSErrors.EmptyHeritageClauseType, descriptor); - } - - return delimitedList; - } - - tsParseExpressionWithTypeArguments() { - const node = this.startNode(); - node.expression = this.tsParseEntityName(false); - - if (this.isRelational("<")) { - node.typeParameters = this.tsParseTypeArguments(); - } - - return this.finishNode(node, "TSExpressionWithTypeArguments"); - } - - tsParseInterfaceDeclaration(node) { - if (this.match(types$1.name)) { - node.id = this.parseIdentifier(); - this.checkLVal(node.id, "typescript interface declaration", BIND_TS_INTERFACE); - } else { - node.id = null; - this.raise(this.state.start, TSErrors.MissingInterfaceName); - } - - node.typeParameters = this.tsTryParseTypeParameters(); - - if (this.eat(types$1._extends)) { - node.extends = this.tsParseHeritageClause("extends"); - } - - const body = this.startNode(); - body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); - node.body = this.finishNode(body, "TSInterfaceBody"); - return this.finishNode(node, "TSInterfaceDeclaration"); - } - - tsParseTypeAliasDeclaration(node) { - node.id = this.parseIdentifier(); - this.checkLVal(node.id, "typescript type alias", BIND_TS_TYPE); - node.typeParameters = this.tsTryParseTypeParameters(); - node.typeAnnotation = this.tsInType(() => { - this.expect(types$1.eq); - - if (this.isContextual("intrinsic") && this.lookahead().type !== types$1.dot) { - const node = this.startNode(); - this.next(); - return this.finishNode(node, "TSIntrinsicKeyword"); - } - - return this.tsParseType(); - }); - this.semicolon(); - return this.finishNode(node, "TSTypeAliasDeclaration"); - } - - tsInNoContext(cb) { - const oldContext = this.state.context; - this.state.context = [oldContext[0]]; - - try { - return cb(); - } finally { - this.state.context = oldContext; - } - } - - tsInType(cb) { - const oldInType = this.state.inType; - this.state.inType = true; - - try { - return cb(); - } finally { - this.state.inType = oldInType; - } - } - - tsEatThenParseType(token) { - return !this.match(token) ? undefined : this.tsNextThenParseType(); - } - - tsExpectThenParseType(token) { - return this.tsDoThenParseType(() => this.expect(token)); - } - - tsNextThenParseType() { - return this.tsDoThenParseType(() => this.next()); - } - - tsDoThenParseType(cb) { - return this.tsInType(() => { - cb(); - return this.tsParseType(); - }); - } - - tsParseEnumMember() { - const node = this.startNode(); - node.id = this.match(types$1.string) ? this.parseExprAtom() : this.parseIdentifier(true); - - if (this.eat(types$1.eq)) { - node.initializer = this.parseMaybeAssignAllowIn(); - } - - return this.finishNode(node, "TSEnumMember"); - } - - tsParseEnumDeclaration(node, isConst) { - if (isConst) node.const = true; - node.id = this.parseIdentifier(); - this.checkLVal(node.id, "typescript enum declaration", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM); - this.expect(types$1.braceL); - node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); - this.expect(types$1.braceR); - return this.finishNode(node, "TSEnumDeclaration"); - } - - tsParseModuleBlock() { - const node = this.startNode(); - this.scope.enter(SCOPE_OTHER); - this.expect(types$1.braceL); - this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, types$1.braceR); - this.scope.exit(); - return this.finishNode(node, "TSModuleBlock"); - } - - tsParseModuleOrNamespaceDeclaration(node, nested = false) { - node.id = this.parseIdentifier(); - - if (!nested) { - this.checkLVal(node.id, "module or namespace declaration", BIND_TS_NAMESPACE); - } - - if (this.eat(types$1.dot)) { - const inner = this.startNode(); - this.tsParseModuleOrNamespaceDeclaration(inner, true); - node.body = inner; - } else { - this.scope.enter(SCOPE_TS_MODULE); - this.prodParam.enter(PARAM); - node.body = this.tsParseModuleBlock(); - this.prodParam.exit(); - this.scope.exit(); - } - - return this.finishNode(node, "TSModuleDeclaration"); - } - - tsParseAmbientExternalModuleDeclaration(node) { - if (this.isContextual("global")) { - node.global = true; - node.id = this.parseIdentifier(); - } else if (this.match(types$1.string)) { - node.id = this.parseExprAtom(); - } else { - this.unexpected(); - } - - if (this.match(types$1.braceL)) { - this.scope.enter(SCOPE_TS_MODULE); - this.prodParam.enter(PARAM); - node.body = this.tsParseModuleBlock(); - this.prodParam.exit(); - this.scope.exit(); - } else { - this.semicolon(); - } - - return this.finishNode(node, "TSModuleDeclaration"); - } - - tsParseImportEqualsDeclaration(node, isExport) { - node.isExport = isExport || false; - node.id = this.parseIdentifier(); - this.checkLVal(node.id, "import equals declaration", BIND_LEXICAL); - this.expect(types$1.eq); - const moduleReference = this.tsParseModuleReference(); - - if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { - this.raise(moduleReference.start, TSErrors.ImportAliasHasImportType); - } - - node.moduleReference = moduleReference; - this.semicolon(); - return this.finishNode(node, "TSImportEqualsDeclaration"); - } - - tsIsExternalModuleReference() { - return this.isContextual("require") && this.lookaheadCharCode() === 40; - } - - tsParseModuleReference() { - return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); - } - - tsParseExternalModuleReference() { - const node = this.startNode(); - this.expectContextual("require"); - this.expect(types$1.parenL); - - if (!this.match(types$1.string)) { - throw this.unexpected(); - } - - node.expression = this.parseExprAtom(); - this.expect(types$1.parenR); - return this.finishNode(node, "TSExternalModuleReference"); - } - - tsLookAhead(f) { - const state = this.state.clone(); - const res = f(); - this.state = state; - return res; - } - - tsTryParseAndCatch(f) { - const result = this.tryParse(abort => f() || abort()); - if (result.aborted || !result.node) return undefined; - if (result.error) this.state = result.failState; - return result.node; - } - - tsTryParse(f) { - const state = this.state.clone(); - const result = f(); - - if (result !== undefined && result !== false) { - return result; - } else { - this.state = state; - return undefined; - } - } - - tsTryParseDeclare(nany) { - if (this.isLineTerminator()) { - return; - } - - let starttype = this.state.type; - let kind; - - if (this.isContextual("let")) { - starttype = types$1._var; - kind = "let"; - } - - return this.tsInAmbientContext(() => { - switch (starttype) { - case types$1._function: - nany.declare = true; - return this.parseFunctionStatement(nany, false, true); - - case types$1._class: - nany.declare = true; - return this.parseClass(nany, true, false); - - case types$1._const: - if (this.match(types$1._const) && this.isLookaheadContextual("enum")) { - this.expect(types$1._const); - this.expectContextual("enum"); - return this.tsParseEnumDeclaration(nany, true); - } - - case types$1._var: - kind = kind || this.state.value; - return this.parseVarStatement(nany, kind); - - case types$1.name: - { - const value = this.state.value; - - if (value === "global") { - return this.tsParseAmbientExternalModuleDeclaration(nany); - } else { - return this.tsParseDeclaration(nany, value, true); - } - } - } - }); - } - - tsTryParseExportDeclaration() { - return this.tsParseDeclaration(this.startNode(), this.state.value, true); - } - - tsParseExpressionStatement(node, expr) { - switch (expr.name) { - case "declare": - { - const declaration = this.tsTryParseDeclare(node); - - if (declaration) { - declaration.declare = true; - return declaration; - } - - break; - } - - case "global": - if (this.match(types$1.braceL)) { - this.scope.enter(SCOPE_TS_MODULE); - this.prodParam.enter(PARAM); - const mod = node; - mod.global = true; - mod.id = expr; - mod.body = this.tsParseModuleBlock(); - this.scope.exit(); - this.prodParam.exit(); - return this.finishNode(mod, "TSModuleDeclaration"); - } - - break; - - default: - return this.tsParseDeclaration(node, expr.name, false); - } - } - - tsParseDeclaration(node, value, next) { - switch (value) { - case "abstract": - if (this.tsCheckLineTerminator(next) && (this.match(types$1._class) || this.match(types$1.name))) { - return this.tsParseAbstractDeclaration(node); - } - - break; - - case "enum": - if (next || this.match(types$1.name)) { - if (next) this.next(); - return this.tsParseEnumDeclaration(node, false); - } - - break; - - case "interface": - if (this.tsCheckLineTerminator(next) && this.match(types$1.name)) { - return this.tsParseInterfaceDeclaration(node); - } - - break; - - case "module": - if (this.tsCheckLineTerminator(next)) { - if (this.match(types$1.string)) { - return this.tsParseAmbientExternalModuleDeclaration(node); - } else if (this.match(types$1.name)) { - return this.tsParseModuleOrNamespaceDeclaration(node); - } - } - - break; - - case "namespace": - if (this.tsCheckLineTerminator(next) && this.match(types$1.name)) { - return this.tsParseModuleOrNamespaceDeclaration(node); - } - - break; - - case "type": - if (this.tsCheckLineTerminator(next) && this.match(types$1.name)) { - return this.tsParseTypeAliasDeclaration(node); - } - - break; - } - } - - tsCheckLineTerminator(next) { - if (next) { - if (this.hasFollowingLineBreak()) return false; - this.next(); - return true; - } - - return !this.isLineTerminator(); - } - - tsTryParseGenericAsyncArrowFunction(startPos, startLoc) { - if (!this.isRelational("<")) { - return undefined; - } - - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - this.state.maybeInArrowParameters = true; - const res = this.tsTryParseAndCatch(() => { - const node = this.startNodeAt(startPos, startLoc); - node.typeParameters = this.tsParseTypeParameters(); - super.parseFunctionParams(node); - node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); - this.expect(types$1.arrow); - return node; - }); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - - if (!res) { - return undefined; - } - - return this.parseArrowExpression(res, null, true); - } - - tsParseTypeArguments() { - const node = this.startNode(); - node.params = this.tsInType(() => this.tsInNoContext(() => { - this.expectRelational("<"); - return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); - })); - - if (node.params.length === 0) { - this.raise(node.start, TSErrors.EmptyTypeArguments); - } - - this.expectRelational(">"); - return this.finishNode(node, "TSTypeParameterInstantiation"); - } - - tsIsDeclarationStart() { - if (this.match(types$1.name)) { - switch (this.state.value) { - case "abstract": - case "declare": - case "enum": - case "interface": - case "module": - case "namespace": - case "type": - return true; - } - } - - return false; - } - - isExportDefaultSpecifier() { - if (this.tsIsDeclarationStart()) return false; - return super.isExportDefaultSpecifier(); - } - - parseAssignableListItem(allowModifiers, decorators) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - let accessibility; - let readonly = false; - let override = false; - - if (allowModifiers !== undefined) { - const modified = {}; - this.tsParseModifiers(modified, ["public", "private", "protected", "override", "readonly"]); - accessibility = modified.accessibility; - override = modified.override; - readonly = modified.readonly; - - if (allowModifiers === false && (accessibility || readonly || override)) { - this.raise(startPos, TSErrors.UnexpectedParameterModifier); - } - } - - const left = this.parseMaybeDefault(); - this.parseAssignableListItemTypes(left); - const elt = this.parseMaybeDefault(left.start, left.loc.start, left); - - if (accessibility || readonly || override) { - const pp = this.startNodeAt(startPos, startLoc); - - if (decorators.length) { - pp.decorators = decorators; - } - - if (accessibility) pp.accessibility = accessibility; - if (readonly) pp.readonly = readonly; - if (override) pp.override = override; - - if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { - this.raise(pp.start, TSErrors.UnsupportedParameterPropertyKind); - } - - pp.parameter = elt; - return this.finishNode(pp, "TSParameterProperty"); - } - - if (decorators.length) { - left.decorators = decorators; - } - - return elt; - } - - parseFunctionBodyAndFinish(node, type, isMethod = false) { - if (this.match(types$1.colon)) { - node.returnType = this.tsParseTypeOrTypePredicateAnnotation(types$1.colon); - } - - const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" ? "TSDeclareMethod" : undefined; - - if (bodilessType && !this.match(types$1.braceL) && this.isLineTerminator()) { - this.finishNode(node, bodilessType); - return; - } - - if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { - this.raise(node.start, TSErrors.DeclareFunctionHasImplementation); - - if (node.declare) { - super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); - return; - } - } - - super.parseFunctionBodyAndFinish(node, type, isMethod); - } - - registerFunctionStatementId(node) { - if (!node.body && node.id) { - this.checkLVal(node.id, "function name", BIND_TS_AMBIENT); - } else { - super.registerFunctionStatementId(...arguments); - } - } - - tsCheckForInvalidTypeCasts(items) { - items.forEach(node => { - if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { - this.raise(node.typeAnnotation.start, TSErrors.UnexpectedTypeAnnotation); - } - }); - } - - toReferencedList(exprList, isInParens) { - this.tsCheckForInvalidTypeCasts(exprList); - return exprList; - } - - parseArrayLike(...args) { - const node = super.parseArrayLike(...args); - - if (node.type === "ArrayExpression") { - this.tsCheckForInvalidTypeCasts(node.elements); - } - - return node; - } - - parseSubscript(base, startPos, startLoc, noCalls, state) { - if (!this.hasPrecedingLineBreak() && this.match(types$1.bang)) { - this.state.exprAllowed = false; - this.next(); - const nonNullExpression = this.startNodeAt(startPos, startLoc); - nonNullExpression.expression = base; - return this.finishNode(nonNullExpression, "TSNonNullExpression"); - } - - let isOptionalCall = false; - - if (this.match(types$1.questionDot) && this.lookaheadCharCode() === 60) { - if (noCalls) { - state.stop = true; - return base; - } - - state.optionalChainMember = isOptionalCall = true; - this.next(); - } - - if (this.isRelational("<")) { - let missingParenErrorPos; - const result = this.tsTryParseAndCatch(() => { - if (!noCalls && this.atPossibleAsyncArrow(base)) { - const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc); - - if (asyncArrowFn) { - return asyncArrowFn; - } - } - - const node = this.startNodeAt(startPos, startLoc); - node.callee = base; - const typeArguments = this.tsParseTypeArguments(); - - if (typeArguments) { - if (isOptionalCall && !this.match(types$1.parenL)) { - missingParenErrorPos = this.state.pos; - this.unexpected(); - } - - if (!noCalls && this.eat(types$1.parenL)) { - node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); - this.tsCheckForInvalidTypeCasts(node.arguments); - node.typeParameters = typeArguments; - - if (state.optionalChainMember) { - node.optional = isOptionalCall; - } - - return this.finishCallExpression(node, state.optionalChainMember); - } else if (this.match(types$1.backQuote)) { - const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state); - result.typeParameters = typeArguments; - return result; - } - } - - this.unexpected(); - }); - - if (missingParenErrorPos) { - this.unexpected(missingParenErrorPos, types$1.parenL); - } - - if (result) return result; - } - - return super.parseSubscript(base, startPos, startLoc, noCalls, state); - } - - parseNewArguments(node) { - if (this.isRelational("<")) { - const typeParameters = this.tsTryParseAndCatch(() => { - const args = this.tsParseTypeArguments(); - if (!this.match(types$1.parenL)) this.unexpected(); - return args; - }); - - if (typeParameters) { - node.typeParameters = typeParameters; - } - } - - super.parseNewArguments(node); - } - - parseExprOp(left, leftStartPos, leftStartLoc, minPrec) { - if (nonNull(types$1._in.binop) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual("as")) { - const node = this.startNodeAt(leftStartPos, leftStartLoc); - node.expression = left; - - const _const = this.tsTryNextParseConstantContext(); - - if (_const) { - node.typeAnnotation = _const; - } else { - node.typeAnnotation = this.tsNextThenParseType(); - } - - this.finishNode(node, "TSAsExpression"); - this.reScan_lt_gt(); - return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec); - } - - return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec); - } - - checkReservedWord(word, startLoc, checkKeywords, isBinding) {} - - checkDuplicateExports() {} - - parseImport(node) { - node.importKind = "value"; - - if (this.match(types$1.name) || this.match(types$1.star) || this.match(types$1.braceL)) { - let ahead = this.lookahead(); - - if (this.isContextual("type") && ahead.type !== types$1.comma && !(ahead.type === types$1.name && ahead.value === "from") && ahead.type !== types$1.eq) { - node.importKind = "type"; - this.next(); - ahead = this.lookahead(); - } - - if (this.match(types$1.name) && ahead.type === types$1.eq) { - return this.tsParseImportEqualsDeclaration(node); - } - } - - const importNode = super.parseImport(node); - - if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { - this.raise(importNode.start, TSErrors.TypeImportCannotSpecifyDefaultAndNamed); - } - - return importNode; - } - - parseExport(node) { - if (this.match(types$1._import)) { - this.next(); - - if (this.isContextual("type") && this.lookaheadCharCode() !== 61) { - node.importKind = "type"; - this.next(); - } else { - node.importKind = "value"; - } - - return this.tsParseImportEqualsDeclaration(node, true); - } else if (this.eat(types$1.eq)) { - const assign = node; - assign.expression = this.parseExpression(); - this.semicolon(); - return this.finishNode(assign, "TSExportAssignment"); - } else if (this.eatContextual("as")) { - const decl = node; - this.expectContextual("namespace"); - decl.id = this.parseIdentifier(); - this.semicolon(); - return this.finishNode(decl, "TSNamespaceExportDeclaration"); - } else { - if (this.isContextual("type") && this.lookahead().type === types$1.braceL) { - this.next(); - node.exportKind = "type"; - } else { - node.exportKind = "value"; - } - - return super.parseExport(node); - } - } - - isAbstractClass() { - return this.isContextual("abstract") && this.lookahead().type === types$1._class; - } - - parseExportDefaultExpression() { - if (this.isAbstractClass()) { - const cls = this.startNode(); - this.next(); - cls.abstract = true; - this.parseClass(cls, true, true); - return cls; - } - - if (this.state.value === "interface") { - const interfaceNode = this.startNode(); - this.next(); - const result = this.tsParseInterfaceDeclaration(interfaceNode); - if (result) return result; - } - - return super.parseExportDefaultExpression(); - } - - parseStatementContent(context, topLevel) { - if (this.state.type === types$1._const) { - const ahead = this.lookahead(); - - if (ahead.type === types$1.name && ahead.value === "enum") { - const node = this.startNode(); - this.expect(types$1._const); - this.expectContextual("enum"); - return this.tsParseEnumDeclaration(node, true); - } - } - - return super.parseStatementContent(context, topLevel); - } - - parseAccessModifier() { - return this.tsParseModifier(["public", "protected", "private"]); - } - - tsHasSomeModifiers(member, modifiers) { - return modifiers.some(modifier => { - if (tsIsAccessModifier(modifier)) { - return member.accessibility === modifier; - } - - return !!member[modifier]; - }); - } - - parseClassMember(classBody, member, state) { - const invalidModifersForStaticBlocks = ["declare", "private", "public", "protected", "override", "abstract", "readonly"]; - this.tsParseModifiers(member, invalidModifersForStaticBlocks.concat(["static"])); - - const callParseClassMemberWithIsStatic = () => { - const isStatic = !!member.static; - - if (isStatic && this.eat(types$1.braceL)) { - if (this.tsHasSomeModifiers(member, invalidModifersForStaticBlocks)) { - this.raise(this.state.pos, TSErrors.StaticBlockCannotHaveModifier); - } - - this.parseClassStaticBlock(classBody, member); - } else { - this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); - } - }; - - if (member.declare) { - this.tsInAmbientContext(callParseClassMemberWithIsStatic); - } else { - callParseClassMemberWithIsStatic(); - } - } - - parseClassMemberWithIsStatic(classBody, member, state, isStatic) { - const idx = this.tsTryParseIndexSignature(member); - - if (idx) { - classBody.body.push(idx); - - if (member.abstract) { - this.raise(member.start, TSErrors.IndexSignatureHasAbstract); - } - - if (member.accessibility) { - this.raise(member.start, TSErrors.IndexSignatureHasAccessibility, member.accessibility); - } - - if (member.declare) { - this.raise(member.start, TSErrors.IndexSignatureHasDeclare); - } - - if (member.override) { - this.raise(member.start, TSErrors.IndexSignatureHasOverride); - } - - return; - } - - if (!this.state.inAbstractClass && member.abstract) { - this.raise(member.start, TSErrors.NonAbstractClassHasAbstractMethod); - } - - if (member.override) { - if (!state.hadSuperClass) { - this.raise(member.start, TSErrors.OverrideNotInSubClass); - } - } - - super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); - } - - parsePostMemberNameModifiers(methodOrProp) { - const optional = this.eat(types$1.question); - if (optional) methodOrProp.optional = true; - - if (methodOrProp.readonly && this.match(types$1.parenL)) { - this.raise(methodOrProp.start, TSErrors.ClassMethodHasReadonly); - } - - if (methodOrProp.declare && this.match(types$1.parenL)) { - this.raise(methodOrProp.start, TSErrors.ClassMethodHasDeclare); - } - } - - parseExpressionStatement(node, expr) { - const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr) : undefined; - return decl || super.parseExpressionStatement(node, expr); - } - - shouldParseExportDeclaration() { - if (this.tsIsDeclarationStart()) return true; - return super.shouldParseExportDeclaration(); - } - - parseConditional(expr, startPos, startLoc, refExpressionErrors) { - if (!this.state.maybeInArrowParameters || !this.match(types$1.question)) { - return super.parseConditional(expr, startPos, startLoc, refExpressionErrors); - } - - const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc)); - - if (!result.node) { - if (result.error) { - super.setOptionalParametersError(refExpressionErrors, result.error); - } - - return expr; - } - - if (result.error) this.state = result.failState; - return result.node; - } - - parseParenItem(node, startPos, startLoc) { - node = super.parseParenItem(node, startPos, startLoc); - - if (this.eat(types$1.question)) { - node.optional = true; - this.resetEndLocation(node); - } - - if (this.match(types$1.colon)) { - const typeCastNode = this.startNodeAt(startPos, startLoc); - typeCastNode.expression = node; - typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); - return this.finishNode(typeCastNode, "TSTypeCastExpression"); - } - - return node; - } - - parseExportDeclaration(node) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const isDeclare = this.eatContextual("declare"); - - if (isDeclare && (this.isContextual("declare") || !this.shouldParseExportDeclaration())) { - throw this.raise(this.state.start, TSErrors.ExpectedAmbientAfterExportDeclare); - } - - let declaration; - - if (this.match(types$1.name)) { - declaration = this.tsTryParseExportDeclaration(); - } - - if (!declaration) { - declaration = super.parseExportDeclaration(node); - } - - if (declaration && (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare)) { - node.exportKind = "type"; - } - - if (declaration && isDeclare) { - this.resetStartLocation(declaration, startPos, startLoc); - declaration.declare = true; - } - - return declaration; - } - - parseClassId(node, isStatement, optionalId) { - if ((!isStatement || optionalId) && this.isContextual("implements")) { - return; - } - - super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS); - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) node.typeParameters = typeParameters; - } - - parseClassPropertyAnnotation(node) { - if (!node.optional && this.eat(types$1.bang)) { - node.definite = true; - } - - const type = this.tsTryParseTypeAnnotation(); - if (type) node.typeAnnotation = type; - } - - parseClassProperty(node) { - this.parseClassPropertyAnnotation(node); - - if (this.state.isAmbientContext && this.match(types$1.eq)) { - this.raise(this.state.start, TSErrors.DeclareClassFieldHasInitializer); - } - - if (node.abstract && this.match(types$1.eq)) { - const { - key - } = node; - this.raise(this.state.start, TSErrors.AbstractPropertyHasInitializer, key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`); - } - - return super.parseClassProperty(node); - } - - parseClassPrivateProperty(node) { - if (node.abstract) { - this.raise(node.start, TSErrors.PrivateElementHasAbstract); - } - - if (node.accessibility) { - this.raise(node.start, TSErrors.PrivateElementHasAccessibility, node.accessibility); - } - - this.parseClassPropertyAnnotation(node); - return super.parseClassPrivateProperty(node); - } - - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - const typeParameters = this.tsTryParseTypeParameters(); - - if (typeParameters && isConstructor) { - this.raise(typeParameters.start, TSErrors.ConstructorHasTypeParameters); - } - - if (method.declare && (method.kind === "get" || method.kind === "set")) { - this.raise(method.start, TSErrors.DeclareAccessor, method.kind); - } - - if (typeParameters) method.typeParameters = typeParameters; - super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); - } - - pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) method.typeParameters = typeParameters; - super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); - } - - parseClassSuper(node) { - super.parseClassSuper(node); - - if (node.superClass && this.isRelational("<")) { - node.superTypeParameters = this.tsParseTypeArguments(); - } - - if (this.eatContextual("implements")) { - node.implements = this.tsParseHeritageClause("implements"); - } - } - - parseObjPropValue(prop, ...args) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) prop.typeParameters = typeParameters; - super.parseObjPropValue(prop, ...args); - } - - parseFunctionParams(node, allowModifiers) { - const typeParameters = this.tsTryParseTypeParameters(); - if (typeParameters) node.typeParameters = typeParameters; - super.parseFunctionParams(node, allowModifiers); - } - - parseVarId(decl, kind) { - super.parseVarId(decl, kind); - - if (decl.id.type === "Identifier" && this.eat(types$1.bang)) { - decl.definite = true; - } - - const type = this.tsTryParseTypeAnnotation(); - - if (type) { - decl.id.typeAnnotation = type; - this.resetEndLocation(decl.id); - } - } - - parseAsyncArrowFromCallExpression(node, call) { - if (this.match(types$1.colon)) { - node.returnType = this.tsParseTypeAnnotation(); - } - - return super.parseAsyncArrowFromCallExpression(node, call); - } - - parseMaybeAssign(...args) { - var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3; - - let state; - let jsx; - let typeCast; - - if (this.hasPlugin("jsx") && (this.match(types$1.jsxTagStart) || this.isRelational("<"))) { - state = this.state.clone(); - jsx = this.tryParse(() => super.parseMaybeAssign(...args), state); - if (!jsx.error) return jsx.node; - const { - context - } = this.state; - - if (context[context.length - 1] === types.j_oTag) { - context.length -= 2; - } else if (context[context.length - 1] === types.j_expr) { - context.length -= 1; - } - } - - if (!((_jsx = jsx) != null && _jsx.error) && !this.isRelational("<")) { - return super.parseMaybeAssign(...args); - } - - let typeParameters; - state = state || this.state.clone(); - const arrow = this.tryParse(abort => { - var _expr$extra, _typeParameters; - - typeParameters = this.tsParseTypeParameters(); - const expr = super.parseMaybeAssign(...args); - - if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { - abort(); - } - - if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { - this.resetStartLocationFromNode(expr, typeParameters); - } - - expr.typeParameters = typeParameters; - return expr; - }, state); - if (!arrow.error && !arrow.aborted) return arrow.node; - - if (!jsx) { - assert(!this.hasPlugin("jsx")); - typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state); - if (!typeCast.error) return typeCast.node; - } - - if ((_jsx2 = jsx) != null && _jsx2.node) { - this.state = jsx.failState; - return jsx.node; - } - - if (arrow.node) { - this.state = arrow.failState; - return arrow.node; - } - - if ((_typeCast = typeCast) != null && _typeCast.node) { - this.state = typeCast.failState; - return typeCast.node; - } - - if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; - if (arrow.thrown) throw arrow.error; - if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error; - throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error); - } - - parseMaybeUnary(refExpressionErrors) { - if (!this.hasPlugin("jsx") && this.isRelational("<")) { - return this.tsParseTypeAssertion(); - } else { - return super.parseMaybeUnary(refExpressionErrors); - } - } - - parseArrow(node) { - if (this.match(types$1.colon)) { - const result = this.tryParse(abort => { - const returnType = this.tsParseTypeOrTypePredicateAnnotation(types$1.colon); - if (this.canInsertSemicolon() || !this.match(types$1.arrow)) abort(); - return returnType; - }); - if (result.aborted) return; - - if (!result.thrown) { - if (result.error) this.state = result.failState; - node.returnType = result.node; - } - } - - return super.parseArrow(node); - } - - parseAssignableListItemTypes(param) { - if (this.eat(types$1.question)) { - if (param.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType) { - this.raise(param.start, TSErrors.PatternIsOptional); - } - - param.optional = true; - } - - const type = this.tsTryParseTypeAnnotation(); - if (type) param.typeAnnotation = type; - this.resetEndLocation(param); - return param; - } - - isAssignable(node, isBinding) { - switch (node.type) { - case "TSTypeCastExpression": - return this.isAssignable(node.expression, isBinding); - - case "TSParameterProperty": - return true; - - default: - return super.isAssignable(node, isBinding); - } - } - - toAssignable(node, isLHS = false) { - switch (node.type) { - case "TSTypeCastExpression": - return super.toAssignable(this.typeCastToParameter(node), isLHS); - - case "TSParameterProperty": - return super.toAssignable(node, isLHS); - - case "ParenthesizedExpression": - return this.toAssignableParenthesizedExpression(node, isLHS); - - case "TSAsExpression": - case "TSNonNullExpression": - case "TSTypeAssertion": - node.expression = this.toAssignable(node.expression, isLHS); - return node; - - default: - return super.toAssignable(node, isLHS); - } - } - - toAssignableParenthesizedExpression(node, isLHS) { - switch (node.expression.type) { - case "TSAsExpression": - case "TSNonNullExpression": - case "TSTypeAssertion": - case "ParenthesizedExpression": - node.expression = this.toAssignable(node.expression, isLHS); - return node; - - default: - return super.toAssignable(node, isLHS); - } - } - - checkLVal(expr, contextDescription, ...args) { - var _expr$extra2; - - switch (expr.type) { - case "TSTypeCastExpression": - return; - - case "TSParameterProperty": - this.checkLVal(expr.parameter, "parameter property", ...args); - return; - - case "TSAsExpression": - case "TSTypeAssertion": - if (!args[0] && contextDescription !== "parenthesized expression" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) { - this.raise(expr.start, ErrorMessages.InvalidLhs, contextDescription); - break; - } - - this.checkLVal(expr.expression, "parenthesized expression", ...args); - return; - - case "TSNonNullExpression": - this.checkLVal(expr.expression, contextDescription, ...args); - return; - - default: - super.checkLVal(expr, contextDescription, ...args); - return; - } - } - - parseBindingAtom() { - switch (this.state.type) { - case types$1._this: - return this.parseIdentifier(true); - - default: - return super.parseBindingAtom(); - } - } - - parseMaybeDecoratorArguments(expr) { - if (this.isRelational("<")) { - const typeArguments = this.tsParseTypeArguments(); - - if (this.match(types$1.parenL)) { - const call = super.parseMaybeDecoratorArguments(expr); - call.typeParameters = typeArguments; - return call; - } - - this.unexpected(this.state.start, types$1.parenL); - } - - return super.parseMaybeDecoratorArguments(expr); - } - - checkCommaAfterRest(close) { - if (this.state.isAmbientContext && this.match(types$1.comma) && this.lookaheadCharCode() === close) { - this.next(); - } else { - super.checkCommaAfterRest(close); - } - } - - isClassMethod() { - return this.isRelational("<") || super.isClassMethod(); - } - - isClassProperty() { - return this.match(types$1.bang) || this.match(types$1.colon) || super.isClassProperty(); - } - - parseMaybeDefault(...args) { - const node = super.parseMaybeDefault(...args); - - if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { - this.raise(node.typeAnnotation.start, TSErrors.TypeAnnotationAfterAssign); - } - - return node; - } - - getTokenFromCode(code) { - if (this.state.inType && (code === 62 || code === 60)) { - return this.finishOp(types$1.relational, 1); - } else { - return super.getTokenFromCode(code); - } - } - - reScan_lt_gt() { - if (this.match(types$1.relational)) { - const code = this.input.charCodeAt(this.state.start); - - if (code === 60 || code === 62) { - this.state.pos -= 1; - this.readToken_lt_gt(code); - } - } - } - - toAssignableList(exprList) { - for (let i = 0; i < exprList.length; i++) { - const expr = exprList[i]; - if (!expr) continue; - - switch (expr.type) { - case "TSTypeCastExpression": - exprList[i] = this.typeCastToParameter(expr); - break; - - case "TSAsExpression": - case "TSTypeAssertion": - if (!this.state.maybeInArrowParameters) { - exprList[i] = this.typeCastToParameter(expr); - } else { - this.raise(expr.start, TSErrors.UnexpectedTypeCastInParameter); - } - - break; - } - } - - return super.toAssignableList(...arguments); - } - - typeCastToParameter(node) { - node.expression.typeAnnotation = node.typeAnnotation; - this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end); - return node.expression; - } - - shouldParseArrow(params) { - if (this.match(types$1.colon)) { - return params.every(expr => this.isAssignable(expr, true)); - } - - return super.shouldParseArrow(params); - } - - shouldParseAsyncArrow() { - return this.match(types$1.colon) || super.shouldParseAsyncArrow(); - } - - canHaveLeadingDecorator() { - return super.canHaveLeadingDecorator() || this.isAbstractClass(); - } - - jsxParseOpeningElementAfterName(node) { - if (this.isRelational("<")) { - const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments()); - if (typeArguments) node.typeParameters = typeArguments; - } - - return super.jsxParseOpeningElementAfterName(node); - } - - getGetterSetterExpectedParamCount(method) { - const baseCount = super.getGetterSetterExpectedParamCount(method); - const params = this.getObjectOrClassMethodParams(method); - const firstParam = params[0]; - const hasContextParam = firstParam && this.isThisParam(firstParam); - return hasContextParam ? baseCount + 1 : baseCount; - } - - parseCatchClauseParam() { - const param = super.parseCatchClauseParam(); - const type = this.tsTryParseTypeAnnotation(); - - if (type) { - param.typeAnnotation = type; - this.resetEndLocation(param); - } - - return param; - } - - tsInAmbientContext(cb) { - const oldIsAmbientContext = this.state.isAmbientContext; - this.state.isAmbientContext = true; - - try { - return cb(); - } finally { - this.state.isAmbientContext = oldIsAmbientContext; - } - } - - parseClass(node, ...args) { - const oldInAbstractClass = this.state.inAbstractClass; - this.state.inAbstractClass = !!node.abstract; - - try { - return super.parseClass(node, ...args); - } finally { - this.state.inAbstractClass = oldInAbstractClass; - } - } - - tsParseAbstractDeclaration(node) { - if (this.match(types$1._class)) { - node.abstract = true; - return this.parseClass(node, true, false); - } else if (this.isContextual("interface")) { - if (!this.hasFollowingLineBreak()) { - node.abstract = true; - this.raise(node.start, TSErrors.NonClassMethodPropertyHasAbstractModifer); - this.next(); - return this.tsParseInterfaceDeclaration(node); - } - } else { - this.unexpected(null, types$1._class); - } - } - - parseMethod(...args) { - const method = super.parseMethod(...args); - - if (method.abstract) { - const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body; - - if (hasBody) { - const { - key - } = method; - this.raise(method.start, TSErrors.AbstractMethodHasImplementation, key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`); - } - } - - return method; - } - - tsParseTypeParameterName() { - const typeName = this.parseIdentifier(); - return typeName.name; - } - - shouldParseAsAmbientContext() { - return !!this.getPluginOption("typescript", "dts"); - } - - parse() { - if (this.shouldParseAsAmbientContext()) { - this.state.isAmbientContext = true; - } - - return super.parse(); - } - - getExpression() { - if (this.shouldParseAsAmbientContext()) { - this.state.isAmbientContext = true; - } - - return super.getExpression(); - } - -}); - -types$1.placeholder = new TokenType("%%", { - startsExpr: true -}); -const PlaceHolderErrors = makeErrorTemplates({ - ClassNameIsRequired: "A class name is required." -}, ErrorCodes.SyntaxError); -var placeholders = (superClass => class extends superClass { - parsePlaceholder(expectedNode) { - if (this.match(types$1.placeholder)) { - const node = this.startNode(); - this.next(); - this.assertNoSpace("Unexpected space in placeholder."); - node.name = super.parseIdentifier(true); - this.assertNoSpace("Unexpected space in placeholder."); - this.expect(types$1.placeholder); - return this.finishPlaceholder(node, expectedNode); - } - } - - finishPlaceholder(node, expectedNode) { - const isFinished = !!(node.expectedNode && node.type === "Placeholder"); - node.expectedNode = expectedNode; - return isFinished ? node : this.finishNode(node, "Placeholder"); - } - - getTokenFromCode(code) { - if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { - return this.finishOp(types$1.placeholder, 2); - } - - return super.getTokenFromCode(...arguments); - } - - parseExprAtom() { - return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments); - } - - parseIdentifier() { - return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments); - } - - checkReservedWord(word) { - if (word !== undefined) super.checkReservedWord(...arguments); - } - - parseBindingAtom() { - return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments); - } - - checkLVal(expr) { - if (expr.type !== "Placeholder") super.checkLVal(...arguments); - } - - toAssignable(node) { - if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { - node.expectedNode = "Pattern"; - return node; - } - - return super.toAssignable(...arguments); - } - - isLet(context) { - if (super.isLet(context)) { - return true; - } - - if (!this.isContextual("let")) { - return false; - } - - if (context) return false; - const nextToken = this.lookahead(); - - if (nextToken.type === types$1.placeholder) { - return true; - } - - return false; - } - - verifyBreakContinue(node) { - if (node.label && node.label.type === "Placeholder") return; - super.verifyBreakContinue(...arguments); - } - - parseExpressionStatement(node, expr) { - if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) { - return super.parseExpressionStatement(...arguments); - } - - if (this.match(types$1.colon)) { - const stmt = node; - stmt.label = this.finishPlaceholder(expr, "Identifier"); - this.next(); - stmt.body = this.parseStatement("label"); - return this.finishNode(stmt, "LabeledStatement"); - } - - this.semicolon(); - node.name = expr.name; - return this.finishPlaceholder(node, "Statement"); - } - - parseBlock() { - return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments); - } - - parseFunctionId() { - return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments); - } - - parseClass(node, isStatement, optionalId) { - const type = isStatement ? "ClassDeclaration" : "ClassExpression"; - this.next(); - this.takeDecorators(node); - const oldStrict = this.state.strict; - const placeholder = this.parsePlaceholder("Identifier"); - - if (placeholder) { - if (this.match(types$1._extends) || this.match(types$1.placeholder) || this.match(types$1.braceL)) { - node.id = placeholder; - } else if (optionalId || !isStatement) { - node.id = null; - node.body = this.finishPlaceholder(placeholder, "ClassBody"); - return this.finishNode(node, type); - } else { - this.unexpected(null, PlaceHolderErrors.ClassNameIsRequired); - } - } else { - this.parseClassId(node, isStatement, optionalId); - } - - this.parseClassSuper(node); - node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass, oldStrict); - return this.finishNode(node, type); - } - - parseExport(node) { - const placeholder = this.parsePlaceholder("Identifier"); - if (!placeholder) return super.parseExport(...arguments); - - if (!this.isContextual("from") && !this.match(types$1.comma)) { - node.specifiers = []; - node.source = null; - node.declaration = this.finishPlaceholder(placeholder, "Declaration"); - return this.finishNode(node, "ExportNamedDeclaration"); - } - - this.expectPlugin("exportDefaultFrom"); - const specifier = this.startNode(); - specifier.exported = placeholder; - node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; - return super.parseExport(node); - } - - isExportDefaultSpecifier() { - if (this.match(types$1._default)) { - const next = this.nextTokenStart(); - - if (this.isUnparsedContextual(next, "from")) { - if (this.input.startsWith(types$1.placeholder.label, this.nextTokenStartSince(next + 4))) { - return true; - } - } - } - - return super.isExportDefaultSpecifier(); - } - - maybeParseExportDefaultSpecifier(node) { - if (node.specifiers && node.specifiers.length > 0) { - return true; - } - - return super.maybeParseExportDefaultSpecifier(...arguments); - } - - checkExport(node) { - const { - specifiers - } = node; - - if (specifiers != null && specifiers.length) { - node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); - } - - super.checkExport(node); - node.specifiers = specifiers; - } - - parseImport(node) { - const placeholder = this.parsePlaceholder("Identifier"); - if (!placeholder) return super.parseImport(...arguments); - node.specifiers = []; - - if (!this.isContextual("from") && !this.match(types$1.comma)) { - node.source = this.finishPlaceholder(placeholder, "StringLiteral"); - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); - } - - const specifier = this.startNodeAtNode(placeholder); - specifier.local = placeholder; - this.finishNode(specifier, "ImportDefaultSpecifier"); - node.specifiers.push(specifier); - - if (this.eat(types$1.comma)) { - const hasStarImport = this.maybeParseStarImportSpecifier(node); - if (!hasStarImport) this.parseNamedImportSpecifiers(node); - } - - this.expectContextual("from"); - node.source = this.parseImportSource(); - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); - } - - parseImportSource() { - return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments); - } - -}); - -var v8intrinsic = (superClass => class extends superClass { - parseV8Intrinsic() { - if (this.match(types$1.modulo)) { - const v8IntrinsicStart = this.state.start; - const node = this.startNode(); - this.eat(types$1.modulo); - - if (this.match(types$1.name)) { - const name = this.parseIdentifierName(this.state.start); - const identifier = this.createIdentifier(node, name); - identifier.type = "V8IntrinsicIdentifier"; - - if (this.match(types$1.parenL)) { - return identifier; - } - } - - this.unexpected(v8IntrinsicStart); - } - } - - parseExprAtom() { - return this.parseV8Intrinsic() || super.parseExprAtom(...arguments); - } - -}); - -function hasPlugin(plugins, name) { - return plugins.some(plugin => { - if (Array.isArray(plugin)) { - return plugin[0] === name; - } else { - return plugin === name; - } - }); -} -function getPluginOption(plugins, name, option) { - const plugin = plugins.find(plugin => { - if (Array.isArray(plugin)) { - return plugin[0] === name; - } else { - return plugin === name; - } - }); - - if (plugin && Array.isArray(plugin)) { - return plugin[1][option]; - } - - return null; -} -const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; -const TOPIC_TOKENS = ["%", "#"]; -const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; -function validatePlugins(plugins) { - if (hasPlugin(plugins, "decorators")) { - if (hasPlugin(plugins, "decorators-legacy")) { - throw new Error("Cannot use the decorators and decorators-legacy plugin together"); - } - - const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport"); - - if (decoratorsBeforeExport == null) { - throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option," + " whose value must be a boolean. If you are migrating from" + " Babylon/Babel 6 or want to use the old decorators proposal, you" + " should use the 'decorators-legacy' plugin instead of 'decorators'."); - } else if (typeof decoratorsBeforeExport !== "boolean") { - throw new Error("'decoratorsBeforeExport' must be a boolean."); - } - } - - if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) { - throw new Error("Cannot combine flow and typescript plugins."); - } - - if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) { - throw new Error("Cannot combine placeholders and v8intrinsic plugins."); - } - - if (hasPlugin(plugins, "pipelineOperator")) { - const proposal = getPluginOption(plugins, "pipelineOperator", "proposal"); - - if (!PIPELINE_PROPOSALS.includes(proposal)) { - const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); - throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); - } - - const tupleSyntaxIsHash = hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") === "hash"; - - if (proposal === "hack") { - if (hasPlugin(plugins, "placeholders")) { - throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); - } - - if (hasPlugin(plugins, "v8intrinsic")) { - throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); - } - - const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken"); - - if (!TOPIC_TOKENS.includes(topicToken)) { - const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); - throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); - } - - if (topicToken === "#" && tupleSyntaxIsHash) { - throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); - } - } else if (proposal === "smart" && tupleSyntaxIsHash) { - throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); - } - } - - if (hasPlugin(plugins, "moduleAttributes")) { - { - if (hasPlugin(plugins, "importAssertions")) { - throw new Error("Cannot combine importAssertions and moduleAttributes plugins."); - } - - const moduleAttributesVerionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); - - if (moduleAttributesVerionPluginOption !== "may-2020") { - throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); - } - } - } - - if (hasPlugin(plugins, "recordAndTuple") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) { - throw new Error("'recordAndTuple' requires 'syntaxType' option whose value should be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); - } - - if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) { - const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); - error.missingPlugins = "doExpressions"; - throw error; - } -} -const mixinPlugins = { - estree, - jsx, - flow, - typescript, - v8intrinsic, - placeholders -}; -const mixinPluginNames = Object.keys(mixinPlugins); - -const defaultOptions = { - sourceType: "script", - sourceFilename: undefined, - startLine: 1, - allowAwaitOutsideFunction: false, - allowReturnOutsideFunction: false, - allowImportExportEverywhere: false, - allowSuperOutsideMethod: false, - allowUndeclaredExports: false, - plugins: [], - strictMode: null, - ranges: false, - tokens: false, - createParenthesizedExpressions: false, - errorRecovery: false, - attachComment: true -}; -function getOptions(opts) { - const options = {}; - - for (const key of Object.keys(defaultOptions)) { - options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key]; - } - - return options; -} - -const unwrapParenthesizedExpression = node => { - return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; -}; - -class LValParser extends NodeUtils { - toAssignable(node, isLHS = false) { - var _node$extra, _node$extra3; - - let parenthesized = undefined; - - if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { - parenthesized = unwrapParenthesizedExpression(node); - - if (isLHS) { - if (parenthesized.type === "Identifier") { - this.expressionScope.recordParenthesizedIdentifierError(node.start, ErrorMessages.InvalidParenthesizedAssignment); - } else if (parenthesized.type !== "MemberExpression") { - this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment); - } - } else { - this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment); - } - } - - switch (node.type) { - case "Identifier": - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - break; - - case "ObjectExpression": - node.type = "ObjectPattern"; - - for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { - var _node$extra2; - - const prop = node.properties[i]; - const isLast = i === last; - this.toAssignableObjectExpressionProp(prop, isLast, isLHS); - - if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingComma) { - this.raiseRestNotLast(node.extra.trailingComma); - } - } - - break; - - case "ObjectProperty": - this.toAssignable(node.value, isLHS); - break; - - case "SpreadElement": - { - this.checkToRestConversion(node); - node.type = "RestElement"; - const arg = node.argument; - this.toAssignable(arg, isLHS); - break; - } - - case "ArrayExpression": - node.type = "ArrayPattern"; - this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingComma, isLHS); - break; - - case "AssignmentExpression": - if (node.operator !== "=") { - this.raise(node.left.end, ErrorMessages.MissingEqInAssignment); - } - - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isLHS); - break; - - case "ParenthesizedExpression": - this.toAssignable(parenthesized, isLHS); - break; - } - - return node; - } - - toAssignableObjectExpressionProp(prop, isLast, isLHS) { - if (prop.type === "ObjectMethod") { - const error = prop.kind === "get" || prop.kind === "set" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod; - this.raise(prop.key.start, error); - } else if (prop.type === "SpreadElement" && !isLast) { - this.raiseRestNotLast(prop.start); - } else { - this.toAssignable(prop, isLHS); - } - } - - toAssignableList(exprList, trailingCommaPos, isLHS) { - let end = exprList.length; - - if (end) { - const last = exprList[end - 1]; - - if ((last == null ? void 0 : last.type) === "RestElement") { - --end; - } else if ((last == null ? void 0 : last.type) === "SpreadElement") { - last.type = "RestElement"; - let arg = last.argument; - this.toAssignable(arg, isLHS); - arg = unwrapParenthesizedExpression(arg); - - if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern" && arg.type !== "ObjectPattern") { - this.unexpected(arg.start); - } - - if (trailingCommaPos) { - this.raiseTrailingCommaAfterRest(trailingCommaPos); - } - - --end; - } - } - - for (let i = 0; i < end; i++) { - const elt = exprList[i]; - - if (elt) { - this.toAssignable(elt, isLHS); - - if (elt.type === "RestElement") { - this.raiseRestNotLast(elt.start); - } - } - } - - return exprList; - } - - isAssignable(node, isBinding) { - switch (node.type) { - case "Identifier": - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - return true; - - case "ObjectExpression": - { - const last = node.properties.length - 1; - return node.properties.every((prop, i) => { - return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); - }); - } - - case "ObjectProperty": - return this.isAssignable(node.value); - - case "SpreadElement": - return this.isAssignable(node.argument); - - case "ArrayExpression": - return node.elements.every(element => element === null || this.isAssignable(element)); - - case "AssignmentExpression": - return node.operator === "="; - - case "ParenthesizedExpression": - return this.isAssignable(node.expression); - - case "MemberExpression": - case "OptionalMemberExpression": - return !isBinding; - - default: - return false; - } - } - - toReferencedList(exprList, isParenthesizedExpr) { - return exprList; - } - - toReferencedListDeep(exprList, isParenthesizedExpr) { - this.toReferencedList(exprList, isParenthesizedExpr); - - for (const expr of exprList) { - if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { - this.toReferencedListDeep(expr.elements); - } - } - } - - parseSpread(refExpressionErrors, refNeedsArrowPos) { - const node = this.startNode(); - this.next(); - node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos); - return this.finishNode(node, "SpreadElement"); - } - - parseRestBinding() { - const node = this.startNode(); - this.next(); - node.argument = this.parseBindingAtom(); - return this.finishNode(node, "RestElement"); - } - - parseBindingAtom() { - switch (this.state.type) { - case types$1.bracketL: - { - const node = this.startNode(); - this.next(); - node.elements = this.parseBindingList(types$1.bracketR, 93, true); - return this.finishNode(node, "ArrayPattern"); - } - - case types$1.braceL: - return this.parseObjectLike(types$1.braceR, true); - } - - return this.parseIdentifier(); - } - - parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) { - const elts = []; - let first = true; - - while (!this.eat(close)) { - if (first) { - first = false; - } else { - this.expect(types$1.comma); - } - - if (allowEmpty && this.match(types$1.comma)) { - elts.push(null); - } else if (this.eat(close)) { - break; - } else if (this.match(types$1.ellipsis)) { - elts.push(this.parseAssignableListItemTypes(this.parseRestBinding())); - this.checkCommaAfterRest(closeCharCode); - this.expect(close); - break; - } else { - const decorators = []; - - if (this.match(types$1.at) && this.hasPlugin("decorators")) { - this.raise(this.state.start, ErrorMessages.UnsupportedParameterDecorator); - } - - while (this.match(types$1.at)) { - decorators.push(this.parseDecorator()); - } - - elts.push(this.parseAssignableListItem(allowModifiers, decorators)); - } - } - - return elts; - } - - parseAssignableListItem(allowModifiers, decorators) { - const left = this.parseMaybeDefault(); - this.parseAssignableListItemTypes(left); - const elt = this.parseMaybeDefault(left.start, left.loc.start, left); - - if (decorators.length) { - left.decorators = decorators; - } - - return elt; - } - - parseAssignableListItemTypes(param) { - return param; - } - - parseMaybeDefault(startPos, startLoc, left) { - var _startLoc, _startPos, _left; - - startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc; - startPos = (_startPos = startPos) != null ? _startPos : this.state.start; - left = (_left = left) != null ? _left : this.parseBindingAtom(); - if (!this.eat(types$1.eq)) return left; - const node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.right = this.parseMaybeAssignAllowIn(); - return this.finishNode(node, "AssignmentPattern"); - } - - checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) { - switch (expr.type) { - case "Identifier": - { - const { - name - } = expr; - - if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) { - this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, name); - } - - if (checkClashes) { - if (checkClashes.has(name)) { - this.raise(expr.start, ErrorMessages.ParamDupe); - } else { - checkClashes.add(name); - } - } - - if (disallowLetBinding && name === "let") { - this.raise(expr.start, ErrorMessages.LetInLexicalBinding); - } - - if (!(bindingType & BIND_NONE)) { - this.scope.declareName(name, bindingType, expr.start); - } - - break; - } - - case "MemberExpression": - if (bindingType !== BIND_NONE) { - this.raise(expr.start, ErrorMessages.InvalidPropertyBindingPattern); - } - - break; - - case "ObjectPattern": - for (let prop of expr.properties) { - if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue; - this.checkLVal(prop, "object destructuring pattern", bindingType, checkClashes, disallowLetBinding); - } - - break; - - case "ArrayPattern": - for (const elem of expr.elements) { - if (elem) { - this.checkLVal(elem, "array destructuring pattern", bindingType, checkClashes, disallowLetBinding); - } - } - - break; - - case "AssignmentPattern": - this.checkLVal(expr.left, "assignment pattern", bindingType, checkClashes); - break; - - case "RestElement": - this.checkLVal(expr.argument, "rest element", bindingType, checkClashes); - break; - - case "ParenthesizedExpression": - this.checkLVal(expr.expression, "parenthesized expression", bindingType, checkClashes); - break; - - default: - { - this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, contextDescription); - } - } - } - - checkToRestConversion(node) { - if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") { - this.raise(node.argument.start, ErrorMessages.InvalidRestAssignmentPattern); - } - } - - checkCommaAfterRest(close) { - if (this.match(types$1.comma)) { - if (this.lookaheadCharCode() === close) { - this.raiseTrailingCommaAfterRest(this.state.start); - } else { - this.raiseRestNotLast(this.state.start); - } - } - } - - raiseRestNotLast(pos) { - throw this.raise(pos, ErrorMessages.ElementAfterRest); - } - - raiseTrailingCommaAfterRest(pos) { - this.raise(pos, ErrorMessages.RestTrailingComma); - } - -} - -class ExpressionParser extends LValParser { - checkProto(prop, isRecord, protoRef, refExpressionErrors) { - if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { - return; - } - - const key = prop.key; - const name = key.type === "Identifier" ? key.name : key.value; - - if (name === "__proto__") { - if (isRecord) { - this.raise(key.start, ErrorMessages.RecordNoProto); - return; - } - - if (protoRef.used) { - if (refExpressionErrors) { - if (refExpressionErrors.doubleProto === -1) { - refExpressionErrors.doubleProto = key.start; - } - } else { - this.raise(key.start, ErrorMessages.DuplicateProto); - } - } - - protoRef.used = true; - } - } - - shouldExitDescending(expr, potentialArrowAt) { - return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt; - } - - getExpression() { - this.enterInitialScopes(); - this.nextToken(); - const expr = this.parseExpression(); - - if (!this.match(types$1.eof)) { - this.unexpected(); - } - - this.finalizeRemainingComments(); - expr.comments = this.state.comments; - expr.errors = this.state.errors; - - if (this.options.tokens) { - expr.tokens = this.tokens; - } - - return expr; - } - - parseExpression(disallowIn, refExpressionErrors) { - if (disallowIn) { - return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); - } - - return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); - } - - parseExpressionBase(refExpressionErrors) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const expr = this.parseMaybeAssign(refExpressionErrors); - - if (this.match(types$1.comma)) { - const node = this.startNodeAt(startPos, startLoc); - node.expressions = [expr]; - - while (this.eat(types$1.comma)) { - node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); - } - - this.toReferencedList(node.expressions); - return this.finishNode(node, "SequenceExpression"); - } - - return expr; - } - - parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { - return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); - } - - parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { - return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); - } - - setOptionalParametersError(refExpressionErrors, resultError) { - var _resultError$pos; - - refExpressionErrors.optionalParameters = (_resultError$pos = resultError == null ? void 0 : resultError.pos) != null ? _resultError$pos : this.state.start; - } - - parseMaybeAssign(refExpressionErrors, afterLeftParse) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - - if (this.isContextual("yield")) { - if (this.prodParam.hasYield) { - let left = this.parseYield(); - - if (afterLeftParse) { - left = afterLeftParse.call(this, left, startPos, startLoc); - } - - return left; - } - } - - let ownExpressionErrors; - - if (refExpressionErrors) { - ownExpressionErrors = false; - } else { - refExpressionErrors = new ExpressionErrors(); - ownExpressionErrors = true; - } - - if (this.match(types$1.parenL) || this.match(types$1.name)) { - this.state.potentialArrowAt = this.state.start; - } - - let left = this.parseMaybeConditional(refExpressionErrors); - - if (afterLeftParse) { - left = afterLeftParse.call(this, left, startPos, startLoc); - } - - if (this.state.type.isAssign) { - const node = this.startNodeAt(startPos, startLoc); - const operator = this.state.value; - node.operator = operator; - const leftIsHackPipeExpression = left.type === "BinaryExpression" && left.operator === "|>" && this.getPluginOption("pipelineOperator", "proposal") === "hack"; - - if (leftIsHackPipeExpression) { - throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, operator); - } - - if (this.match(types$1.eq)) { - node.left = this.toAssignable(left, true); - refExpressionErrors.doubleProto = -1; - } else { - node.left = left; - } - - if (refExpressionErrors.shorthandAssign >= node.left.start) { - refExpressionErrors.shorthandAssign = -1; - } - - this.checkLVal(left, "assignment expression"); - this.next(); - node.right = this.parseMaybeAssign(); - return this.finishNode(node, "AssignmentExpression"); - } else if (ownExpressionErrors) { - this.checkExpressionErrors(refExpressionErrors, true); - } - - return left; - } - - parseMaybeConditional(refExpressionErrors) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseExprOps(refExpressionErrors); - - if (this.shouldExitDescending(expr, potentialArrowAt)) { - return expr; - } - - return this.parseConditional(expr, startPos, startLoc, refExpressionErrors); - } - - parseConditional(expr, startPos, startLoc, refExpressionErrors) { - if (this.eat(types$1.question)) { - const node = this.startNodeAt(startPos, startLoc); - node.test = expr; - node.consequent = this.parseMaybeAssignAllowIn(); - this.expect(types$1.colon); - node.alternate = this.parseMaybeAssign(); - return this.finishNode(node, "ConditionalExpression"); - } - - return expr; - } - - parseExprOps(refExpressionErrors) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseMaybeUnary(refExpressionErrors); - - if (this.shouldExitDescending(expr, potentialArrowAt)) { - return expr; - } - - return this.parseExprOp(expr, startPos, startLoc, -1); - } - - parseExprOp(left, leftStartPos, leftStartLoc, minPrec) { - let prec = this.state.type.binop; - - if (prec != null && (this.prodParam.hasIn || !this.match(types$1._in))) { - if (prec > minPrec) { - const op = this.state.type; - - if (op === types$1.pipeline) { - this.expectPlugin("pipelineOperator"); - - if (this.state.inFSharpPipelineDirectBody) { - return left; - } - - this.checkPipelineAtInfixOperator(left, leftStartPos); - } - - const node = this.startNodeAt(leftStartPos, leftStartLoc); - node.left = left; - node.operator = this.state.value; - const logical = op === types$1.logicalOR || op === types$1.logicalAND; - const coalesce = op === types$1.nullishCoalescing; - - if (coalesce) { - prec = types$1.logicalAND.binop; - } - - this.next(); - - if (op === types$1.pipeline && this.getPluginOption("pipelineOperator", "proposal") === "minimal") { - if (this.match(types$1.name) && this.state.value === "await" && this.prodParam.hasAwait) { - throw this.raise(this.state.start, ErrorMessages.UnexpectedAwaitAfterPipelineBody); - } - } - - node.right = this.parseExprOpRightExpr(op, prec); - this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); - const nextOp = this.state.type; - - if (coalesce && (nextOp === types$1.logicalOR || nextOp === types$1.logicalAND) || logical && nextOp === types$1.nullishCoalescing) { - throw this.raise(this.state.start, ErrorMessages.MixingCoalesceWithLogical); - } - - return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec); - } - } - - return left; - } - - parseExprOpRightExpr(op, prec) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - - switch (op) { - case types$1.pipeline: - switch (this.getPluginOption("pipelineOperator", "proposal")) { - case "hack": - return this.withTopicBindingContext(() => { - const bodyExpr = this.parseHackPipeBody(op, prec); - this.checkHackPipeBodyEarlyErrors(startPos); - return bodyExpr; - }); - - case "smart": - return this.withTopicBindingContext(() => { - const childExpr = this.parseHackPipeBody(op, prec); - return this.parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc); - }); - - case "fsharp": - return this.withSoloAwaitPermittingContext(() => { - return this.parseFSharpPipelineBody(prec); - }); - } - - default: - return this.parseExprOpBaseRightExpr(op, prec); - } - } - - parseExprOpBaseRightExpr(op, prec) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - return this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec); - } - - parseHackPipeBody(op, prec) { - const bodyIsInGeneratorContext = this.prodParam.hasYield; - const bodyIsYieldExpression = bodyIsInGeneratorContext && this.isContextual("yield"); - - if (bodyIsYieldExpression) { - throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, this.state.value); - } else { - return this.parseExprOpBaseRightExpr(op, prec); - } - } - - checkExponentialAfterUnary(node) { - if (this.match(types$1.exponent)) { - this.raise(node.argument.start, ErrorMessages.UnexpectedTokenUnaryExponentiation); - } - } - - parseMaybeUnary(refExpressionErrors, sawUnary) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const isAwait = this.isContextual("await"); - - if (isAwait && this.isAwaitAllowed()) { - this.next(); - const expr = this.parseAwait(startPos, startLoc); - if (!sawUnary) this.checkExponentialAfterUnary(expr); - return expr; - } - - const update = this.match(types$1.incDec); - const node = this.startNode(); - - if (this.state.type.prefix) { - node.operator = this.state.value; - node.prefix = true; - - if (this.match(types$1._throw)) { - this.expectPlugin("throwExpressions"); - } - - const isDelete = this.match(types$1._delete); - this.next(); - node.argument = this.parseMaybeUnary(null, true); - this.checkExpressionErrors(refExpressionErrors, true); - - if (this.state.strict && isDelete) { - const arg = node.argument; - - if (arg.type === "Identifier") { - this.raise(node.start, ErrorMessages.StrictDelete); - } else if (this.hasPropertyAsPrivateName(arg)) { - this.raise(node.start, ErrorMessages.DeletePrivateField); - } - } - - if (!update) { - if (!sawUnary) this.checkExponentialAfterUnary(node); - return this.finishNode(node, "UnaryExpression"); - } - } - - const expr = this.parseUpdate(node, update, refExpressionErrors); - - if (isAwait) { - const startsExpr = this.hasPlugin("v8intrinsic") ? this.state.type.startsExpr : this.state.type.startsExpr && !this.match(types$1.modulo); - - if (startsExpr && !this.isAmbiguousAwait()) { - this.raiseOverwrite(startPos, ErrorMessages.AwaitNotInAsyncContext); - return this.parseAwait(startPos, startLoc); - } - } - - return expr; - } - - parseUpdate(node, update, refExpressionErrors) { - if (update) { - this.checkLVal(node.argument, "prefix operation"); - return this.finishNode(node, "UpdateExpression"); - } - - const startPos = this.state.start; - const startLoc = this.state.startLoc; - let expr = this.parseExprSubscripts(refExpressionErrors); - if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; - - while (this.state.type.postfix && !this.canInsertSemicolon()) { - const node = this.startNodeAt(startPos, startLoc); - node.operator = this.state.value; - node.prefix = false; - node.argument = expr; - this.checkLVal(expr, "postfix operation"); - this.next(); - expr = this.finishNode(node, "UpdateExpression"); - } - - return expr; - } - - parseExprSubscripts(refExpressionErrors) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseExprAtom(refExpressionErrors); - - if (this.shouldExitDescending(expr, potentialArrowAt)) { - return expr; - } - - return this.parseSubscripts(expr, startPos, startLoc); - } - - parseSubscripts(base, startPos, startLoc, noCalls) { - const state = { - optionalChainMember: false, - maybeAsyncArrow: this.atPossibleAsyncArrow(base), - stop: false - }; - - do { - base = this.parseSubscript(base, startPos, startLoc, noCalls, state); - state.maybeAsyncArrow = false; - } while (!state.stop); - - return base; - } - - parseSubscript(base, startPos, startLoc, noCalls, state) { - if (!noCalls && this.eat(types$1.doubleColon)) { - return this.parseBind(base, startPos, startLoc, noCalls, state); - } else if (this.match(types$1.backQuote)) { - return this.parseTaggedTemplateExpression(base, startPos, startLoc, state); - } - - let optional = false; - - if (this.match(types$1.questionDot)) { - if (noCalls && this.lookaheadCharCode() === 40) { - state.stop = true; - return base; - } - - state.optionalChainMember = optional = true; - this.next(); - } - - if (!noCalls && this.match(types$1.parenL)) { - return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional); - } else if (optional || this.match(types$1.bracketL) || this.eat(types$1.dot)) { - return this.parseMember(base, startPos, startLoc, state, optional); - } else { - state.stop = true; - return base; - } - } - - parseMember(base, startPos, startLoc, state, optional) { - const node = this.startNodeAt(startPos, startLoc); - const computed = this.eat(types$1.bracketL); - node.object = base; - node.computed = computed; - const privateName = !computed && this.match(types$1.privateName) && this.state.value; - const property = computed ? this.parseExpression() : privateName ? this.parsePrivateName() : this.parseIdentifier(true); - - if (privateName !== false) { - if (node.object.type === "Super") { - this.raise(startPos, ErrorMessages.SuperPrivateField); - } - - this.classScope.usePrivateName(privateName, property.start); - } - - node.property = property; - - if (computed) { - this.expect(types$1.bracketR); - } - - if (state.optionalChainMember) { - node.optional = optional; - return this.finishNode(node, "OptionalMemberExpression"); - } else { - return this.finishNode(node, "MemberExpression"); - } - } - - parseBind(base, startPos, startLoc, noCalls, state) { - const node = this.startNodeAt(startPos, startLoc); - node.object = base; - node.callee = this.parseNoCallExpr(); - state.stop = true; - return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls); - } - - parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) { - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - let refExpressionErrors = null; - this.state.maybeInArrowParameters = true; - this.next(); - let node = this.startNodeAt(startPos, startLoc); - node.callee = base; - - if (state.maybeAsyncArrow) { - this.expressionScope.enter(newAsyncArrowScope()); - refExpressionErrors = new ExpressionErrors(); - } - - if (state.optionalChainMember) { - node.optional = optional; - } - - if (optional) { - node.arguments = this.parseCallExpressionArguments(types$1.parenR); - } else { - node.arguments = this.parseCallExpressionArguments(types$1.parenR, base.type === "Import", base.type !== "Super", node, refExpressionErrors); - } - - this.finishCallExpression(node, state.optionalChainMember); - - if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { - state.stop = true; - this.expressionScope.validateAsPattern(); - this.expressionScope.exit(); - node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node); - } else { - if (state.maybeAsyncArrow) { - this.checkExpressionErrors(refExpressionErrors, true); - this.expressionScope.exit(); - } - - this.toReferencedArguments(node); - } - - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - return node; - } - - toReferencedArguments(node, isParenthesizedExpr) { - this.toReferencedListDeep(node.arguments, isParenthesizedExpr); - } - - parseTaggedTemplateExpression(base, startPos, startLoc, state) { - const node = this.startNodeAt(startPos, startLoc); - node.tag = base; - node.quasi = this.parseTemplate(true); - - if (state.optionalChainMember) { - this.raise(startPos, ErrorMessages.OptionalChainingNoTemplate); - } - - return this.finishNode(node, "TaggedTemplateExpression"); - } - - atPossibleAsyncArrow(base) { - return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt; - } - - finishCallExpression(node, optional) { - if (node.callee.type === "Import") { - if (node.arguments.length === 2) { - { - if (!this.hasPlugin("moduleAttributes")) { - this.expectPlugin("importAssertions"); - } - } - } - - if (node.arguments.length === 0 || node.arguments.length > 2) { - this.raise(node.start, ErrorMessages.ImportCallArity, this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? "one or two arguments" : "one argument"); - } else { - for (const arg of node.arguments) { - if (arg.type === "SpreadElement") { - this.raise(arg.start, ErrorMessages.ImportCallSpreadArgument); - } - } - } - } - - return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); - } - - parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) { - const elts = []; - let first = true; - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - - while (!this.eat(close)) { - if (first) { - first = false; - } else { - this.expect(types$1.comma); - - if (this.match(close)) { - if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { - this.raise(this.state.lastTokStart, ErrorMessages.ImportCallArgumentTrailingComma); - } - - if (nodeForExtra) { - this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart); - } - - this.next(); - break; - } - } - - elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder)); - } - - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return elts; - } - - shouldParseAsyncArrow() { - return this.match(types$1.arrow) && !this.canInsertSemicolon(); - } - - parseAsyncArrowFromCallExpression(node, call) { - var _call$extra; - - this.resetPreviousNodeTrailingComments(call); - this.expect(types$1.arrow); - this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma); - setInnerComments(node, call.innerComments); - setInnerComments(node, call.callee.trailingComments); - return node; - } - - parseNoCallExpr() { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); - } - - parseExprAtom(refExpressionErrors) { - let node; - - switch (this.state.type) { - case types$1._super: - return this.parseSuper(); - - case types$1._import: - node = this.startNode(); - this.next(); - - if (this.match(types$1.dot)) { - return this.parseImportMetaProperty(node); - } - - if (!this.match(types$1.parenL)) { - this.raise(this.state.lastTokStart, ErrorMessages.UnsupportedImport); - } - - return this.finishNode(node, "Import"); - - case types$1._this: - node = this.startNode(); - this.next(); - return this.finishNode(node, "ThisExpression"); - - case types$1.name: - { - if (this.isContextual("module") && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) { - return this.parseModuleExpression(); - } - - const canBeArrow = this.state.potentialArrowAt === this.state.start; - const containsEsc = this.state.containsEsc; - const id = this.parseIdentifier(); - - if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { - if (this.match(types$1._function)) { - this.resetPreviousNodeTrailingComments(id); - this.next(); - return this.parseFunction(this.startNodeAtNode(id), undefined, true); - } else if (this.match(types$1.name)) { - if (this.lookaheadCharCode() === 61) { - return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); - } else { - return id; - } - } else if (this.match(types$1._do)) { - this.resetPreviousNodeTrailingComments(id); - return this.parseDo(this.startNodeAtNode(id), true); - } - } - - if (canBeArrow && this.match(types$1.arrow) && !this.canInsertSemicolon()) { - this.next(); - return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); - } - - return id; - } - - case types$1._do: - { - return this.parseDo(this.startNode(), false); - } - - case types$1.slash: - case types$1.slashAssign: - { - this.readRegexp(); - return this.parseRegExpLiteral(this.state.value); - } - - case types$1.num: - return this.parseNumericLiteral(this.state.value); - - case types$1.bigint: - return this.parseBigIntLiteral(this.state.value); - - case types$1.decimal: - return this.parseDecimalLiteral(this.state.value); - - case types$1.string: - return this.parseStringLiteral(this.state.value); - - case types$1._null: - return this.parseNullLiteral(); - - case types$1._true: - return this.parseBooleanLiteral(true); - - case types$1._false: - return this.parseBooleanLiteral(false); - - case types$1.parenL: - { - const canBeArrow = this.state.potentialArrowAt === this.state.start; - return this.parseParenAndDistinguishExpression(canBeArrow); - } - - case types$1.bracketBarL: - case types$1.bracketHashL: - { - return this.parseArrayLike(this.state.type === types$1.bracketBarL ? types$1.bracketBarR : types$1.bracketR, false, true, refExpressionErrors); - } - - case types$1.bracketL: - { - return this.parseArrayLike(types$1.bracketR, true, false, refExpressionErrors); - } - - case types$1.braceBarL: - case types$1.braceHashL: - { - return this.parseObjectLike(this.state.type === types$1.braceBarL ? types$1.braceBarR : types$1.braceR, false, true, refExpressionErrors); - } - - case types$1.braceL: - { - return this.parseObjectLike(types$1.braceR, false, false, refExpressionErrors); - } - - case types$1._function: - return this.parseFunctionOrFunctionSent(); - - case types$1.at: - this.parseDecorators(); - - case types$1._class: - node = this.startNode(); - this.takeDecorators(node); - return this.parseClass(node, false); - - case types$1._new: - return this.parseNewOrNewTarget(); - - case types$1.backQuote: - return this.parseTemplate(false); - - case types$1.doubleColon: - { - node = this.startNode(); - this.next(); - node.object = null; - const callee = node.callee = this.parseNoCallExpr(); - - if (callee.type === "MemberExpression") { - return this.finishNode(node, "BindExpression"); - } else { - throw this.raise(callee.start, ErrorMessages.UnsupportedBind); - } - } - - case types$1.privateName: - { - const { - value, - start - } = this.state; - node = this.parsePrivateName(); - - if (this.match(types$1._in)) { - this.classScope.usePrivateName(value, start); - } else { - this.raise(start, ErrorMessages.PrivateInExpectedIn, value); - } - - return node; - } - - case types$1.moduloAssign: - if (this.getPluginOption("pipelineOperator", "proposal") === "hack" && this.getPluginOption("pipelineOperator", "topicToken") === "%") { - this.state.value = "%"; - this.state.type = types$1.modulo; - this.state.pos--; - this.state.end--; - this.state.endLoc.column--; - } else { - throw this.unexpected(); - } - - case types$1.modulo: - case types$1.hash: - { - const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); - - if (pipeProposal) { - node = this.startNode(); - const start = this.state.start; - const tokenType = this.state.type; - this.next(); - return this.finishTopicReference(node, start, pipeProposal, tokenType); - } - } - - case types$1.relational: - { - if (this.state.value === "<") { - const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); - - if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { - this.expectOnePlugin(["jsx", "flow", "typescript"]); - } - } - } - - default: - throw this.unexpected(); - } - } - - finishTopicReference(node, start, pipeProposal, tokenType) { - if (this.testTopicReferenceConfiguration(pipeProposal, start, tokenType)) { - let nodeType; - - if (pipeProposal === "smart") { - nodeType = "PipelinePrimaryTopicReference"; - } else { - nodeType = "TopicReference"; - } - - if (!this.topicReferenceIsAllowedInCurrentContext()) { - if (pipeProposal === "smart") { - this.raise(start, ErrorMessages.PrimaryTopicNotAllowed); - } else { - this.raise(start, ErrorMessages.PipeTopicUnbound); - } - } - - this.registerTopicReference(); - return this.finishNode(node, nodeType); - } else { - throw this.raise(start, ErrorMessages.PipeTopicUnconfiguredToken, tokenType.label); - } - } - - testTopicReferenceConfiguration(pipeProposal, start, tokenType) { - switch (pipeProposal) { - case "hack": - { - const pluginTopicToken = this.getPluginOption("pipelineOperator", "topicToken"); - return tokenType.label === pluginTopicToken; - } - - case "smart": - return tokenType === types$1.hash; - - default: - throw this.raise(start, ErrorMessages.PipeTopicRequiresHackPipes); - } - } - - parseAsyncArrowUnaryFunction(node) { - this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); - const params = [this.parseIdentifier()]; - this.prodParam.exit(); - - if (this.hasPrecedingLineBreak()) { - this.raise(this.state.pos, ErrorMessages.LineTerminatorBeforeArrow); - } - - this.expect(types$1.arrow); - this.parseArrowExpression(node, params, true); - return node; - } - - parseDo(node, isAsync) { - this.expectPlugin("doExpressions"); - - if (isAsync) { - this.expectPlugin("asyncDoExpressions"); - } - - node.async = isAsync; - this.next(); - const oldLabels = this.state.labels; - this.state.labels = []; - - if (isAsync) { - this.prodParam.enter(PARAM_AWAIT); - node.body = this.parseBlock(); - this.prodParam.exit(); - } else { - node.body = this.parseBlock(); - } - - this.state.labels = oldLabels; - return this.finishNode(node, "DoExpression"); - } - - parseSuper() { - const node = this.startNode(); - this.next(); - - if (this.match(types$1.parenL) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { - this.raise(node.start, ErrorMessages.SuperNotAllowed); - } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { - this.raise(node.start, ErrorMessages.UnexpectedSuper); - } - - if (!this.match(types$1.parenL) && !this.match(types$1.bracketL) && !this.match(types$1.dot)) { - this.raise(node.start, ErrorMessages.UnsupportedSuper); - } - - return this.finishNode(node, "Super"); - } - - parseMaybePrivateName(isPrivateNameAllowed) { - const isPrivate = this.match(types$1.privateName); - - if (isPrivate) { - if (!isPrivateNameAllowed) { - this.raise(this.state.start + 1, ErrorMessages.UnexpectedPrivateField); - } - - return this.parsePrivateName(); - } else { - return this.parseIdentifier(true); - } - } - - parsePrivateName() { - const node = this.startNode(); - const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart)); - const name = this.state.value; - this.next(); - node.id = this.createIdentifier(id, name); - return this.finishNode(node, "PrivateName"); - } - - parseFunctionOrFunctionSent() { - const node = this.startNode(); - this.next(); - - if (this.prodParam.hasYield && this.match(types$1.dot)) { - const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); - this.next(); - return this.parseMetaProperty(node, meta, "sent"); - } - - return this.parseFunction(node); - } - - parseMetaProperty(node, meta, propertyName) { - node.meta = meta; - - if (meta.name === "function" && propertyName === "sent") { - if (this.isContextual(propertyName)) { - this.expectPlugin("functionSent"); - } else if (!this.hasPlugin("functionSent")) { - this.unexpected(); - } - } - - const containsEsc = this.state.containsEsc; - node.property = this.parseIdentifier(true); - - if (node.property.name !== propertyName || containsEsc) { - this.raise(node.property.start, ErrorMessages.UnsupportedMetaProperty, meta.name, propertyName); - } - - return this.finishNode(node, "MetaProperty"); - } - - parseImportMetaProperty(node) { - const id = this.createIdentifier(this.startNodeAtNode(node), "import"); - this.next(); - - if (this.isContextual("meta")) { - if (!this.inModule) { - this.raise(id.start, SourceTypeModuleErrorMessages.ImportMetaOutsideModule); - } - - this.sawUnambiguousESM = true; - } - - return this.parseMetaProperty(node, id, "meta"); - } - - parseLiteralAtNode(value, type, node) { - this.addExtra(node, "rawValue", value); - this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); - node.value = value; - this.next(); - return this.finishNode(node, type); - } - - parseLiteral(value, type) { - const node = this.startNode(); - return this.parseLiteralAtNode(value, type, node); - } - - parseStringLiteral(value) { - return this.parseLiteral(value, "StringLiteral"); - } - - parseNumericLiteral(value) { - return this.parseLiteral(value, "NumericLiteral"); - } - - parseBigIntLiteral(value) { - return this.parseLiteral(value, "BigIntLiteral"); - } - - parseDecimalLiteral(value) { - return this.parseLiteral(value, "DecimalLiteral"); - } - - parseRegExpLiteral(value) { - const node = this.parseLiteral(value.value, "RegExpLiteral"); - node.pattern = value.pattern; - node.flags = value.flags; - return node; - } - - parseBooleanLiteral(value) { - const node = this.startNode(); - node.value = value; - this.next(); - return this.finishNode(node, "BooleanLiteral"); - } - - parseNullLiteral() { - const node = this.startNode(); - this.next(); - return this.finishNode(node, "NullLiteral"); - } - - parseParenAndDistinguishExpression(canBeArrow) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - let val; - this.next(); - this.expressionScope.enter(newArrowHeadScope()); - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.maybeInArrowParameters = true; - this.state.inFSharpPipelineDirectBody = false; - const innerStartPos = this.state.start; - const innerStartLoc = this.state.startLoc; - const exprList = []; - const refExpressionErrors = new ExpressionErrors(); - let first = true; - let spreadStart; - let optionalCommaStart; - - while (!this.match(types$1.parenR)) { - if (first) { - first = false; - } else { - this.expect(types$1.comma, refExpressionErrors.optionalParameters === -1 ? null : refExpressionErrors.optionalParameters); - - if (this.match(types$1.parenR)) { - optionalCommaStart = this.state.start; - break; - } - } - - if (this.match(types$1.ellipsis)) { - const spreadNodeStartPos = this.state.start; - const spreadNodeStartLoc = this.state.startLoc; - spreadStart = this.state.start; - exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc)); - this.checkCommaAfterRest(41); - break; - } else { - exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem)); - } - } - - const innerEndPos = this.state.lastTokEnd; - const innerEndLoc = this.state.lastTokEndLoc; - this.expect(types$1.parenR); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - let arrowNode = this.startNodeAt(startPos, startLoc); - - if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { - this.expressionScope.validateAsPattern(); - this.expressionScope.exit(); - this.parseArrowExpression(arrowNode, exprList, false); - return arrowNode; - } - - this.expressionScope.exit(); - - if (!exprList.length) { - this.unexpected(this.state.lastTokStart); - } - - if (optionalCommaStart) this.unexpected(optionalCommaStart); - if (spreadStart) this.unexpected(spreadStart); - this.checkExpressionErrors(refExpressionErrors, true); - this.toReferencedListDeep(exprList, true); - - if (exprList.length > 1) { - val = this.startNodeAt(innerStartPos, innerStartLoc); - val.expressions = exprList; - this.finishNode(val, "SequenceExpression"); - val.end = innerEndPos; - val.loc.end = innerEndLoc; - } else { - val = exprList[0]; - } - - if (!this.options.createParenthesizedExpressions) { - this.addExtra(val, "parenthesized", true); - this.addExtra(val, "parenStart", startPos); - return val; - } - - const parenExpression = this.startNodeAt(startPos, startLoc); - parenExpression.expression = val; - this.finishNode(parenExpression, "ParenthesizedExpression"); - return parenExpression; - } - - shouldParseArrow(params) { - return !this.canInsertSemicolon(); - } - - parseArrow(node) { - if (this.eat(types$1.arrow)) { - return node; - } - } - - parseParenItem(node, startPos, startLoc) { - return node; - } - - parseNewOrNewTarget() { - const node = this.startNode(); - this.next(); - - if (this.match(types$1.dot)) { - const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); - this.next(); - const metaProp = this.parseMetaProperty(node, meta, "target"); - - if (!this.scope.inNonArrowFunction && !this.scope.inClass) { - this.raise(metaProp.start, ErrorMessages.UnexpectedNewTarget); - } - - return metaProp; - } - - return this.parseNew(node); - } - - parseNew(node) { - node.callee = this.parseNoCallExpr(); - - if (node.callee.type === "Import") { - this.raise(node.callee.start, ErrorMessages.ImportCallNotNewExpression); - } else if (this.isOptionalChain(node.callee)) { - this.raise(this.state.lastTokEnd, ErrorMessages.OptionalChainingNoNew); - } else if (this.eat(types$1.questionDot)) { - this.raise(this.state.start, ErrorMessages.OptionalChainingNoNew); - } - - this.parseNewArguments(node); - return this.finishNode(node, "NewExpression"); - } - - parseNewArguments(node) { - if (this.eat(types$1.parenL)) { - const args = this.parseExprList(types$1.parenR); - this.toReferencedList(args); - node.arguments = args; - } else { - node.arguments = []; - } - } - - parseTemplateElement(isTagged) { - const elem = this.startNode(); - - if (this.state.value === null) { - if (!isTagged) { - this.raise(this.state.start + 1, ErrorMessages.InvalidEscapeSequenceTemplate); - } - } - - elem.value = { - raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"), - cooked: this.state.value - }; - this.next(); - elem.tail = this.match(types$1.backQuote); - return this.finishNode(elem, "TemplateElement"); - } - - parseTemplate(isTagged) { - const node = this.startNode(); - this.next(); - node.expressions = []; - let curElt = this.parseTemplateElement(isTagged); - node.quasis = [curElt]; - - while (!curElt.tail) { - this.expect(types$1.dollarBraceL); - node.expressions.push(this.parseTemplateSubstitution()); - this.expect(types$1.braceR); - node.quasis.push(curElt = this.parseTemplateElement(isTagged)); - } - - this.next(); - return this.finishNode(node, "TemplateLiteral"); - } - - parseTemplateSubstitution() { - return this.parseExpression(); - } - - parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { - if (isRecord) { - this.expectPlugin("recordAndTuple"); - } - - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - const propHash = Object.create(null); - let first = true; - const node = this.startNode(); - node.properties = []; - this.next(); - - while (!this.match(close)) { - if (first) { - first = false; - } else { - this.expect(types$1.comma); - - if (this.match(close)) { - this.addExtra(node, "trailingComma", this.state.lastTokStart); - break; - } - } - - const prop = this.parsePropertyDefinition(isPattern, refExpressionErrors); - - if (!isPattern) { - this.checkProto(prop, isRecord, propHash, refExpressionErrors); - } - - if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { - this.raise(prop.start, ErrorMessages.InvalidRecordProperty); - } - - if (prop.shorthand) { - this.addExtra(prop, "shorthand", true); - } - - node.properties.push(prop); - } - - this.next(); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - let type = "ObjectExpression"; - - if (isPattern) { - type = "ObjectPattern"; - } else if (isRecord) { - type = "RecordExpression"; - } - - return this.finishNode(node, type); - } - - maybeAsyncOrAccessorProp(prop) { - return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(types$1.bracketL) || this.match(types$1.star)); - } - - parsePropertyDefinition(isPattern, refExpressionErrors) { - let decorators = []; - - if (this.match(types$1.at)) { - if (this.hasPlugin("decorators")) { - this.raise(this.state.start, ErrorMessages.UnsupportedPropertyDecorator); - } - - while (this.match(types$1.at)) { - decorators.push(this.parseDecorator()); - } - } - - const prop = this.startNode(); - let isGenerator = false; - let isAsync = false; - let isAccessor = false; - let startPos; - let startLoc; - - if (this.match(types$1.ellipsis)) { - if (decorators.length) this.unexpected(); - - if (isPattern) { - this.next(); - prop.argument = this.parseIdentifier(); - this.checkCommaAfterRest(125); - return this.finishNode(prop, "RestElement"); - } - - return this.parseSpread(); - } - - if (decorators.length) { - prop.decorators = decorators; - decorators = []; - } - - prop.method = false; - - if (isPattern || refExpressionErrors) { - startPos = this.state.start; - startLoc = this.state.startLoc; - } - - if (!isPattern) { - isGenerator = this.eat(types$1.star); - } - - const containsEsc = this.state.containsEsc; - const key = this.parsePropertyName(prop, false); - - if (!isPattern && !isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { - const keyName = key.name; - - if (keyName === "async" && !this.hasPrecedingLineBreak()) { - isAsync = true; - this.resetPreviousNodeTrailingComments(key); - isGenerator = this.eat(types$1.star); - this.parsePropertyName(prop, false); - } - - if (keyName === "get" || keyName === "set") { - isAccessor = true; - this.resetPreviousNodeTrailingComments(key); - prop.kind = keyName; - - if (this.match(types$1.star)) { - isGenerator = true; - this.raise(this.state.pos, ErrorMessages.AccessorIsGenerator, keyName); - this.next(); - } - - this.parsePropertyName(prop, false); - } - } - - this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); - return prop; - } - - getGetterSetterExpectedParamCount(method) { - return method.kind === "get" ? 0 : 1; - } - - getObjectOrClassMethodParams(method) { - return method.params; - } - - checkGetterSetterParams(method) { - var _params; - - const paramCount = this.getGetterSetterExpectedParamCount(method); - const params = this.getObjectOrClassMethodParams(method); - const start = method.start; - - if (params.length !== paramCount) { - if (method.kind === "get") { - this.raise(start, ErrorMessages.BadGetterArity); - } else { - this.raise(start, ErrorMessages.BadSetterArity); - } - } - - if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { - this.raise(start, ErrorMessages.BadSetterRestParameter); - } - } - - parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { - if (isAccessor) { - this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); - this.checkGetterSetterParams(prop); - return prop; - } - - if (isAsync || isGenerator || this.match(types$1.parenL)) { - if (isPattern) this.unexpected(); - prop.kind = "method"; - prop.method = true; - return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); - } - } - - parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) { - prop.shorthand = false; - - if (this.eat(types$1.colon)) { - prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors); - return this.finishNode(prop, "ObjectProperty"); - } - - if (!prop.computed && prop.key.type === "Identifier") { - this.checkReservedWord(prop.key.name, prop.key.start, true, false); - - if (isPattern) { - prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key)); - } else if (this.match(types$1.eq) && refExpressionErrors) { - if (refExpressionErrors.shorthandAssign === -1) { - refExpressionErrors.shorthandAssign = this.state.start; - } - - prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key)); - } else { - prop.value = cloneIdentifier(prop.key); - } - - prop.shorthand = true; - return this.finishNode(prop, "ObjectProperty"); - } - } - - parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { - const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors); - if (!node) this.unexpected(); - return node; - } - - parsePropertyName(prop, isPrivateNameAllowed) { - if (this.eat(types$1.bracketL)) { - prop.computed = true; - prop.key = this.parseMaybeAssignAllowIn(); - this.expect(types$1.bracketR); - } else { - const oldInPropertyName = this.state.inPropertyName; - this.state.inPropertyName = true; - const type = this.state.type; - prop.key = type === types$1.num || type === types$1.string || type === types$1.bigint || type === types$1.decimal ? this.parseExprAtom() : this.parseMaybePrivateName(isPrivateNameAllowed); - - if (type !== types$1.privateName) { - prop.computed = false; - } - - this.state.inPropertyName = oldInPropertyName; - } - - return prop.key; - } - - initFunction(node, isAsync) { - node.id = null; - node.generator = false; - node.async = !!isAsync; - } - - parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { - this.initFunction(node, isAsync); - node.generator = !!isGenerator; - const allowModifiers = isConstructor; - this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); - this.prodParam.enter(functionFlags(isAsync, node.generator)); - this.parseFunctionParams(node, allowModifiers); - this.parseFunctionBodyAndFinish(node, type, true); - this.prodParam.exit(); - this.scope.exit(); - return node; - } - - parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { - if (isTuple) { - this.expectPlugin("recordAndTuple"); - } - - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - const node = this.startNode(); - this.next(); - node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); - } - - parseArrowExpression(node, params, isAsync, trailingCommaPos) { - this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); - let flags = functionFlags(isAsync, false); - - if (!this.match(types$1.bracketL) && this.prodParam.hasIn) { - flags |= PARAM_IN; - } - - this.prodParam.enter(flags); - this.initFunction(node, isAsync); - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - - if (params) { - this.state.maybeInArrowParameters = true; - this.setArrowFunctionParameters(node, params, trailingCommaPos); - } - - this.state.maybeInArrowParameters = false; - this.parseFunctionBody(node, true); - this.prodParam.exit(); - this.scope.exit(); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - return this.finishNode(node, "ArrowFunctionExpression"); - } - - setArrowFunctionParameters(node, params, trailingCommaPos) { - node.params = this.toAssignableList(params, trailingCommaPos, false); - } - - parseFunctionBodyAndFinish(node, type, isMethod = false) { - this.parseFunctionBody(node, false, isMethod); - this.finishNode(node, type); - } - - parseFunctionBody(node, allowExpression, isMethod = false) { - const isExpression = allowExpression && !this.match(types$1.braceL); - this.expressionScope.enter(newExpressionScope()); - - if (isExpression) { - node.body = this.parseMaybeAssign(); - this.checkParams(node, false, allowExpression, false); - } else { - const oldStrict = this.state.strict; - const oldLabels = this.state.labels; - this.state.labels = []; - this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN); - node.body = this.parseBlock(true, false, hasStrictModeDirective => { - const nonSimple = !this.isSimpleParamList(node.params); - - if (hasStrictModeDirective && nonSimple) { - const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start; - this.raise(errorPos, ErrorMessages.IllegalLanguageModeDirective); - } - - const strictModeChanged = !oldStrict && this.state.strict; - this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); - - if (this.state.strict && node.id) { - this.checkLVal(node.id, "function name", BIND_OUTSIDE, undefined, undefined, strictModeChanged); - } - }); - this.prodParam.exit(); - this.expressionScope.exit(); - this.state.labels = oldLabels; - } - } - - isSimpleParamList(params) { - for (let i = 0, len = params.length; i < len; i++) { - if (params[i].type !== "Identifier") return false; - } - - return true; - } - - checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { - const checkClashes = new Set(); - - for (const param of node.params) { - this.checkLVal(param, "function parameter list", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged); - } - } - - parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { - const elts = []; - let first = true; - - while (!this.eat(close)) { - if (first) { - first = false; - } else { - this.expect(types$1.comma); - - if (this.match(close)) { - if (nodeForExtra) { - this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart); - } - - this.next(); - break; - } - } - - elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors)); - } - - return elts; - } - - parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) { - let elt; - - if (this.match(types$1.comma)) { - if (!allowEmpty) { - this.raise(this.state.pos, ErrorMessages.UnexpectedToken, ","); - } - - elt = null; - } else if (this.match(types$1.ellipsis)) { - const spreadNodeStartPos = this.state.start; - const spreadNodeStartLoc = this.state.startLoc; - elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc); - } else if (this.match(types$1.question)) { - this.expectPlugin("partialApplication"); - - if (!allowPlaceholder) { - this.raise(this.state.start, ErrorMessages.UnexpectedArgumentPlaceholder); - } - - const node = this.startNode(); - this.next(); - elt = this.finishNode(node, "ArgumentPlaceholder"); - } else { - elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem); - } - - return elt; - } - - parseIdentifier(liberal) { - const node = this.startNode(); - const name = this.parseIdentifierName(node.start, liberal); - return this.createIdentifier(node, name); - } - - createIdentifier(node, name) { - node.name = name; - node.loc.identifierName = name; - return this.finishNode(node, "Identifier"); - } - - parseIdentifierName(pos, liberal) { - let name; - const { - start, - type - } = this.state; - - if (type === types$1.name) { - name = this.state.value; - } else if (type.keyword) { - name = type.keyword; - } else { - throw this.unexpected(); - } - - if (liberal) { - this.state.type = types$1.name; - } else { - this.checkReservedWord(name, start, !!type.keyword, false); - } - - this.next(); - return name; - } - - checkReservedWord(word, startLoc, checkKeywords, isBinding) { - if (word.length > 10) { - return; - } - - if (!canBeReservedWord(word)) { - return; - } - - if (word === "yield") { - if (this.prodParam.hasYield) { - this.raise(startLoc, ErrorMessages.YieldBindingIdentifier); - return; - } - } else if (word === "await") { - if (this.prodParam.hasAwait) { - this.raise(startLoc, ErrorMessages.AwaitBindingIdentifier); - return; - } else if (this.scope.inStaticBlock) { - this.raise(startLoc, ErrorMessages.AwaitBindingIdentifierInStaticBlock); - return; - } else { - this.expressionScope.recordAsyncArrowParametersError(startLoc, ErrorMessages.AwaitBindingIdentifier); - } - } else if (word === "arguments") { - if (this.scope.inClassAndNotInNonArrowFunction) { - this.raise(startLoc, ErrorMessages.ArgumentsInClass); - return; - } - } - - if (checkKeywords && isKeyword(word)) { - this.raise(startLoc, ErrorMessages.UnexpectedKeyword, word); - return; - } - - const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; - - if (reservedTest(word, this.inModule)) { - this.raise(startLoc, ErrorMessages.UnexpectedReservedWord, word); - } - } - - isAwaitAllowed() { - if (this.prodParam.hasAwait) return true; - - if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) { - return true; - } - - return false; - } - - parseAwait(startPos, startLoc) { - const node = this.startNodeAt(startPos, startLoc); - this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.AwaitExpressionFormalParameter); - - if (this.eat(types$1.star)) { - this.raise(node.start, ErrorMessages.ObsoleteAwaitStar); - } - - if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) { - if (this.isAmbiguousAwait()) { - this.ambiguousScriptDifferentAst = true; - } else { - this.sawUnambiguousESM = true; - } - } - - if (!this.state.soloAwait) { - node.argument = this.parseMaybeUnary(null, true); - } - - return this.finishNode(node, "AwaitExpression"); - } - - isAmbiguousAwait() { - return this.hasPrecedingLineBreak() || this.match(types$1.plusMin) || this.match(types$1.parenL) || this.match(types$1.bracketL) || this.match(types$1.backQuote) || this.match(types$1.regexp) || this.match(types$1.slash) || this.hasPlugin("v8intrinsic") && this.match(types$1.modulo); - } - - parseYield() { - const node = this.startNode(); - this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.YieldInParameter); - this.next(); - let delegating = false; - let argument = null; - - if (!this.hasPrecedingLineBreak()) { - delegating = this.eat(types$1.star); - - switch (this.state.type) { - case types$1.semi: - case types$1.eof: - case types$1.braceR: - case types$1.parenR: - case types$1.bracketR: - case types$1.braceBarR: - case types$1.colon: - case types$1.comma: - if (!delegating) break; - - default: - argument = this.parseMaybeAssign(); - } - } - - node.delegate = delegating; - node.argument = argument; - return this.finishNode(node, "YieldExpression"); - } - - checkPipelineAtInfixOperator(left, leftStartPos) { - if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { - if (left.type === "SequenceExpression") { - this.raise(leftStartPos, ErrorMessages.PipelineHeadSequenceExpression); - } - } - } - - checkHackPipeBodyEarlyErrors(startPos) { - if (this.match(types$1.arrow)) { - throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, types$1.arrow.label); - } else if (!this.topicReferenceWasUsedInCurrentContext()) { - this.raise(startPos, ErrorMessages.PipeTopicUnused); - } - } - - parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) { - const bodyNode = this.startNodeAt(startPos, startLoc); - - if (this.isSimpleReference(childExpr)) { - bodyNode.callee = childExpr; - return this.finishNode(bodyNode, "PipelineBareFunction"); - } else { - this.checkSmartPipeTopicBodyEarlyErrors(startPos); - bodyNode.expression = childExpr; - return this.finishNode(bodyNode, "PipelineTopicExpression"); - } - } - - isSimpleReference(expression) { - switch (expression.type) { - case "MemberExpression": - return !expression.computed && this.isSimpleReference(expression.object); - - case "Identifier": - return true; - - default: - return false; - } - } - - checkSmartPipeTopicBodyEarlyErrors(startPos) { - if (this.match(types$1.arrow)) { - throw this.raise(this.state.start, ErrorMessages.PipelineBodyNoArrow); - } else if (!this.topicReferenceWasUsedInCurrentContext()) { - this.raise(startPos, ErrorMessages.PipelineTopicUnused); - } - } - - withTopicBindingContext(callback) { - const outerContextTopicState = this.state.topicContext; - this.state.topicContext = { - maxNumOfResolvableTopics: 1, - maxTopicIndex: null - }; - - try { - return callback(); - } finally { - this.state.topicContext = outerContextTopicState; - } - } - - withSmartMixTopicForbiddingContext(callback) { - const proposal = this.getPluginOption("pipelineOperator", "proposal"); - - if (proposal === "smart") { - const outerContextTopicState = this.state.topicContext; - this.state.topicContext = { - maxNumOfResolvableTopics: 0, - maxTopicIndex: null - }; - - try { - return callback(); - } finally { - this.state.topicContext = outerContextTopicState; - } - } else { - return callback(); - } - } - - withSoloAwaitPermittingContext(callback) { - const outerContextSoloAwaitState = this.state.soloAwait; - this.state.soloAwait = true; - - try { - return callback(); - } finally { - this.state.soloAwait = outerContextSoloAwaitState; - } - } - - allowInAnd(callback) { - const flags = this.prodParam.currentFlags(); - const prodParamToSet = PARAM_IN & ~flags; - - if (prodParamToSet) { - this.prodParam.enter(flags | PARAM_IN); - - try { - return callback(); - } finally { - this.prodParam.exit(); - } - } - - return callback(); - } - - disallowInAnd(callback) { - const flags = this.prodParam.currentFlags(); - const prodParamToClear = PARAM_IN & flags; - - if (prodParamToClear) { - this.prodParam.enter(flags & ~PARAM_IN); - - try { - return callback(); - } finally { - this.prodParam.exit(); - } - } - - return callback(); - } - - registerTopicReference() { - this.state.topicContext.maxTopicIndex = 0; - } - - topicReferenceIsAllowedInCurrentContext() { - return this.state.topicContext.maxNumOfResolvableTopics >= 1; - } - - topicReferenceWasUsedInCurrentContext() { - return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; - } - - parseFSharpPipelineBody(prec) { - const startPos = this.state.start; - const startLoc = this.state.startLoc; - this.state.potentialArrowAt = this.state.start; - const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = true; - const ret = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, prec); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return ret; - } - - parseModuleExpression() { - this.expectPlugin("moduleBlocks"); - const node = this.startNode(); - this.next(); - this.eat(types$1.braceL); - const revertScopes = this.initializeScopes(true); - this.enterInitialScopes(); - const program = this.startNode(); - - try { - node.body = this.parseProgram(program, types$1.braceR, "module"); - } finally { - revertScopes(); - } - - this.eat(types$1.braceR); - return this.finishNode(node, "ModuleExpression"); - } - -} - -const loopLabel = { - kind: "loop" -}, - switchLabel = { - kind: "switch" -}; -const FUNC_NO_FLAGS = 0b000, - FUNC_STATEMENT = 0b001, - FUNC_HANGING_STATEMENT = 0b010, - FUNC_NULLABLE_ID = 0b100; -const loneSurrogate = /[\uD800-\uDFFF]/u; -const keywordRelationalOperator = /in(?:stanceof)?/y; - -function babel7CompatTokens(tokens) { - { - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - - if (token.type === types$1.privateName) { - const { - loc, - start, - value, - end - } = token; - const hashEndPos = start + 1; - const hashEndLoc = new Position(loc.start.line, loc.start.column + 1); - tokens.splice(i, 1, new Token({ - type: types$1.hash, - value: "#", - start: start, - end: hashEndPos, - startLoc: loc.start, - endLoc: hashEndLoc - }), new Token({ - type: types$1.name, - value: value, - start: hashEndPos, - end: end, - startLoc: hashEndLoc, - endLoc: loc.end - })); - } - } - } - return tokens; -} - -class StatementParser extends ExpressionParser { - parseTopLevel(file, program) { - file.program = this.parseProgram(program); - file.comments = this.state.comments; - if (this.options.tokens) file.tokens = babel7CompatTokens(this.tokens); - return this.finishNode(file, "File"); - } - - parseProgram(program, end = types$1.eof, sourceType = this.options.sourceType) { - program.sourceType = sourceType; - program.interpreter = this.parseInterpreterDirective(); - this.parseBlockBody(program, true, true, end); - - if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { - for (const [name] of Array.from(this.scope.undefinedExports)) { - const pos = this.scope.undefinedExports.get(name); - this.raise(pos, ErrorMessages.ModuleExportUndefined, name); - } - } - - return this.finishNode(program, "Program"); - } - - stmtToDirective(stmt) { - const directive = stmt; - directive.type = "Directive"; - directive.value = directive.expression; - delete directive.expression; - const directiveLiteral = directive.value; - const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); - const val = directiveLiteral.value = raw.slice(1, -1); - this.addExtra(directiveLiteral, "raw", raw); - this.addExtra(directiveLiteral, "rawValue", val); - directiveLiteral.type = "DirectiveLiteral"; - return directive; - } - - parseInterpreterDirective() { - if (!this.match(types$1.interpreterDirective)) { - return null; - } - - const node = this.startNode(); - node.value = this.state.value; - this.next(); - return this.finishNode(node, "InterpreterDirective"); - } - - isLet(context) { - if (!this.isContextual("let")) { - return false; - } - - return this.isLetKeyword(context); - } - - isLetKeyword(context) { - const next = this.nextTokenStart(); - const nextCh = this.codePointAtPos(next); - - if (nextCh === 92 || nextCh === 91) { - return true; - } - - if (context) return false; - if (nextCh === 123) return true; - - if (isIdentifierStart(nextCh)) { - keywordRelationalOperator.lastIndex = next; - - if (keywordRelationalOperator.test(this.input)) { - const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); - - if (!isIdentifierChar(endCh) && endCh !== 92) { - return false; - } - } - - return true; - } - - return false; - } - - parseStatement(context, topLevel) { - if (this.match(types$1.at)) { - this.parseDecorators(true); - } - - return this.parseStatementContent(context, topLevel); - } - - parseStatementContent(context, topLevel) { - let starttype = this.state.type; - const node = this.startNode(); - let kind; - - if (this.isLet(context)) { - starttype = types$1._var; - kind = "let"; - } - - switch (starttype) { - case types$1._break: - case types$1._continue: - return this.parseBreakContinueStatement(node, starttype.keyword); - - case types$1._debugger: - return this.parseDebuggerStatement(node); - - case types$1._do: - return this.parseDoStatement(node); - - case types$1._for: - return this.parseForStatement(node); - - case types$1._function: - if (this.lookaheadCharCode() === 46) break; - - if (context) { - if (this.state.strict) { - this.raise(this.state.start, ErrorMessages.StrictFunction); - } else if (context !== "if" && context !== "label") { - this.raise(this.state.start, ErrorMessages.SloppyFunction); - } - } - - return this.parseFunctionStatement(node, false, !context); - - case types$1._class: - if (context) this.unexpected(); - return this.parseClass(node, true); - - case types$1._if: - return this.parseIfStatement(node); - - case types$1._return: - return this.parseReturnStatement(node); - - case types$1._switch: - return this.parseSwitchStatement(node); - - case types$1._throw: - return this.parseThrowStatement(node); - - case types$1._try: - return this.parseTryStatement(node); - - case types$1._const: - case types$1._var: - kind = kind || this.state.value; - - if (context && kind !== "var") { - this.raise(this.state.start, ErrorMessages.UnexpectedLexicalDeclaration); - } - - return this.parseVarStatement(node, kind); - - case types$1._while: - return this.parseWhileStatement(node); - - case types$1._with: - return this.parseWithStatement(node); - - case types$1.braceL: - return this.parseBlock(); - - case types$1.semi: - return this.parseEmptyStatement(node); - - case types$1._import: - { - const nextTokenCharCode = this.lookaheadCharCode(); - - if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { - break; - } - } - - case types$1._export: - { - if (!this.options.allowImportExportEverywhere && !topLevel) { - this.raise(this.state.start, ErrorMessages.UnexpectedImportExport); - } - - this.next(); - let result; - - if (starttype === types$1._import) { - result = this.parseImport(node); - - if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { - this.sawUnambiguousESM = true; - } - } else { - result = this.parseExport(node); - - if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { - this.sawUnambiguousESM = true; - } - } - - this.assertModuleNodeAllowed(node); - return result; - } - - default: - { - if (this.isAsyncFunction()) { - if (context) { - this.raise(this.state.start, ErrorMessages.AsyncFunctionInSingleStatementContext); - } - - this.next(); - return this.parseFunctionStatement(node, true, !context); - } - } - } - - const maybeName = this.state.value; - const expr = this.parseExpression(); - - if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) { - return this.parseLabeledStatement(node, maybeName, expr, context); - } else { - return this.parseExpressionStatement(node, expr); - } - } - - assertModuleNodeAllowed(node) { - if (!this.options.allowImportExportEverywhere && !this.inModule) { - this.raise(node.start, SourceTypeModuleErrorMessages.ImportOutsideModule); - } - } - - takeDecorators(node) { - const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; - - if (decorators.length) { - node.decorators = decorators; - this.resetStartLocationFromNode(node, decorators[0]); - this.state.decoratorStack[this.state.decoratorStack.length - 1] = []; - } - } - - canHaveLeadingDecorator() { - return this.match(types$1._class); - } - - parseDecorators(allowExport) { - const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; - - while (this.match(types$1.at)) { - const decorator = this.parseDecorator(); - currentContextDecorators.push(decorator); - } - - if (this.match(types$1._export)) { - if (!allowExport) { - this.unexpected(); - } - - if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) { - this.raise(this.state.start, ErrorMessages.DecoratorExportClass); - } - } else if (!this.canHaveLeadingDecorator()) { - throw this.raise(this.state.start, ErrorMessages.UnexpectedLeadingDecorator); - } - } - - parseDecorator() { - this.expectOnePlugin(["decorators-legacy", "decorators"]); - const node = this.startNode(); - this.next(); - - if (this.hasPlugin("decorators")) { - this.state.decoratorStack.push([]); - const startPos = this.state.start; - const startLoc = this.state.startLoc; - let expr; - - if (this.eat(types$1.parenL)) { - expr = this.parseExpression(); - this.expect(types$1.parenR); - } else { - expr = this.parseIdentifier(false); - - while (this.eat(types$1.dot)) { - const node = this.startNodeAt(startPos, startLoc); - node.object = expr; - node.property = this.parseIdentifier(true); - node.computed = false; - expr = this.finishNode(node, "MemberExpression"); - } - } - - node.expression = this.parseMaybeDecoratorArguments(expr); - this.state.decoratorStack.pop(); - } else { - node.expression = this.parseExprSubscripts(); - } - - return this.finishNode(node, "Decorator"); - } - - parseMaybeDecoratorArguments(expr) { - if (this.eat(types$1.parenL)) { - const node = this.startNodeAtNode(expr); - node.callee = expr; - node.arguments = this.parseCallExpressionArguments(types$1.parenR, false); - this.toReferencedList(node.arguments); - return this.finishNode(node, "CallExpression"); - } - - return expr; - } - - parseBreakContinueStatement(node, keyword) { - const isBreak = keyword === "break"; - this.next(); - - if (this.isLineTerminator()) { - node.label = null; - } else { - node.label = this.parseIdentifier(); - this.semicolon(); - } - - this.verifyBreakContinue(node, keyword); - return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); - } - - verifyBreakContinue(node, keyword) { - const isBreak = keyword === "break"; - let i; - - for (i = 0; i < this.state.labels.length; ++i) { - const lab = this.state.labels[i]; - - if (node.label == null || lab.name === node.label.name) { - if (lab.kind != null && (isBreak || lab.kind === "loop")) break; - if (node.label && isBreak) break; - } - } - - if (i === this.state.labels.length) { - this.raise(node.start, ErrorMessages.IllegalBreakContinue, keyword); - } - } - - parseDebuggerStatement(node) { - this.next(); - this.semicolon(); - return this.finishNode(node, "DebuggerStatement"); - } - - parseHeaderExpression() { - this.expect(types$1.parenL); - const val = this.parseExpression(); - this.expect(types$1.parenR); - return val; - } - - parseDoStatement(node) { - this.next(); - this.state.labels.push(loopLabel); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("do")); - this.state.labels.pop(); - this.expect(types$1._while); - node.test = this.parseHeaderExpression(); - this.eat(types$1.semi); - return this.finishNode(node, "DoWhileStatement"); - } - - parseForStatement(node) { - this.next(); - this.state.labels.push(loopLabel); - let awaitAt = -1; - - if (this.isAwaitAllowed() && this.eatContextual("await")) { - awaitAt = this.state.lastTokStart; - } - - this.scope.enter(SCOPE_OTHER); - this.expect(types$1.parenL); - - if (this.match(types$1.semi)) { - if (awaitAt > -1) { - this.unexpected(awaitAt); - } - - return this.parseFor(node, null); - } - - const startsWithLet = this.isContextual("let"); - const isLet = startsWithLet && this.isLetKeyword(); - - if (this.match(types$1._var) || this.match(types$1._const) || isLet) { - const init = this.startNode(); - const kind = isLet ? "let" : this.state.value; - this.next(); - this.parseVar(init, true, kind); - this.finishNode(init, "VariableDeclaration"); - - if ((this.match(types$1._in) || this.isContextual("of")) && init.declarations.length === 1) { - return this.parseForIn(node, init, awaitAt); - } - - if (awaitAt > -1) { - this.unexpected(awaitAt); - } - - return this.parseFor(node, init); - } - - const startsWithUnescapedName = this.match(types$1.name) && !this.state.containsEsc; - const refExpressionErrors = new ExpressionErrors(); - const init = this.parseExpression(true, refExpressionErrors); - const isForOf = this.isContextual("of"); - - if (isForOf) { - if (startsWithLet) { - this.raise(init.start, ErrorMessages.ForOfLet); - } else if (awaitAt === -1 && startsWithUnescapedName && init.type === "Identifier" && init.name === "async") { - this.raise(init.start, ErrorMessages.ForOfAsync); - } - } - - if (isForOf || this.match(types$1._in)) { - this.toAssignable(init, true); - const description = isForOf ? "for-of statement" : "for-in statement"; - this.checkLVal(init, description); - return this.parseForIn(node, init, awaitAt); - } else { - this.checkExpressionErrors(refExpressionErrors, true); - } - - if (awaitAt > -1) { - this.unexpected(awaitAt); - } - - return this.parseFor(node, init); - } - - parseFunctionStatement(node, isAsync, declarationPosition) { - this.next(); - return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync); - } - - parseIfStatement(node) { - this.next(); - node.test = this.parseHeaderExpression(); - node.consequent = this.parseStatement("if"); - node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; - return this.finishNode(node, "IfStatement"); - } - - parseReturnStatement(node) { - if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { - this.raise(this.state.start, ErrorMessages.IllegalReturn); - } - - this.next(); - - if (this.isLineTerminator()) { - node.argument = null; - } else { - node.argument = this.parseExpression(); - this.semicolon(); - } - - return this.finishNode(node, "ReturnStatement"); - } - - parseSwitchStatement(node) { - this.next(); - node.discriminant = this.parseHeaderExpression(); - const cases = node.cases = []; - this.expect(types$1.braceL); - this.state.labels.push(switchLabel); - this.scope.enter(SCOPE_OTHER); - let cur; - - for (let sawDefault; !this.match(types$1.braceR);) { - if (this.match(types$1._case) || this.match(types$1._default)) { - const isCase = this.match(types$1._case); - if (cur) this.finishNode(cur, "SwitchCase"); - cases.push(cur = this.startNode()); - cur.consequent = []; - this.next(); - - if (isCase) { - cur.test = this.parseExpression(); - } else { - if (sawDefault) { - this.raise(this.state.lastTokStart, ErrorMessages.MultipleDefaultsInSwitch); - } - - sawDefault = true; - cur.test = null; - } - - this.expect(types$1.colon); - } else { - if (cur) { - cur.consequent.push(this.parseStatement(null)); - } else { - this.unexpected(); - } - } - } - - this.scope.exit(); - if (cur) this.finishNode(cur, "SwitchCase"); - this.next(); - this.state.labels.pop(); - return this.finishNode(node, "SwitchStatement"); - } - - parseThrowStatement(node) { - this.next(); - - if (this.hasPrecedingLineBreak()) { - this.raise(this.state.lastTokEnd, ErrorMessages.NewlineAfterThrow); - } - - node.argument = this.parseExpression(); - this.semicolon(); - return this.finishNode(node, "ThrowStatement"); - } - - parseCatchClauseParam() { - const param = this.parseBindingAtom(); - const simple = param.type === "Identifier"; - this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLVal(param, "catch clause", BIND_LEXICAL); - return param; - } - - parseTryStatement(node) { - this.next(); - node.block = this.parseBlock(); - node.handler = null; - - if (this.match(types$1._catch)) { - const clause = this.startNode(); - this.next(); - - if (this.match(types$1.parenL)) { - this.expect(types$1.parenL); - clause.param = this.parseCatchClauseParam(); - this.expect(types$1.parenR); - } else { - clause.param = null; - this.scope.enter(SCOPE_OTHER); - } - - clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); - this.scope.exit(); - node.handler = this.finishNode(clause, "CatchClause"); - } - - node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; - - if (!node.handler && !node.finalizer) { - this.raise(node.start, ErrorMessages.NoCatchOrFinally); - } - - return this.finishNode(node, "TryStatement"); - } - - parseVarStatement(node, kind) { - this.next(); - this.parseVar(node, false, kind); - this.semicolon(); - return this.finishNode(node, "VariableDeclaration"); - } - - parseWhileStatement(node) { - this.next(); - node.test = this.parseHeaderExpression(); - this.state.labels.push(loopLabel); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("while")); - this.state.labels.pop(); - return this.finishNode(node, "WhileStatement"); - } - - parseWithStatement(node) { - if (this.state.strict) { - this.raise(this.state.start, ErrorMessages.StrictWith); - } - - this.next(); - node.object = this.parseHeaderExpression(); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("with")); - return this.finishNode(node, "WithStatement"); - } - - parseEmptyStatement(node) { - this.next(); - return this.finishNode(node, "EmptyStatement"); - } - - parseLabeledStatement(node, maybeName, expr, context) { - for (const label of this.state.labels) { - if (label.name === maybeName) { - this.raise(expr.start, ErrorMessages.LabelRedeclaration, maybeName); - } - } - - const kind = this.state.type.isLoop ? "loop" : this.match(types$1._switch) ? "switch" : null; - - for (let i = this.state.labels.length - 1; i >= 0; i--) { - const label = this.state.labels[i]; - - if (label.statementStart === node.start) { - label.statementStart = this.state.start; - label.kind = kind; - } else { - break; - } - } - - this.state.labels.push({ - name: maybeName, - kind: kind, - statementStart: this.state.start - }); - node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); - this.state.labels.pop(); - node.label = expr; - return this.finishNode(node, "LabeledStatement"); - } - - parseExpressionStatement(node, expr) { - node.expression = expr; - this.semicolon(); - return this.finishNode(node, "ExpressionStatement"); - } - - parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { - const node = this.startNode(); - - if (allowDirectives) { - this.state.strictErrors.clear(); - } - - this.expect(types$1.braceL); - - if (createNewLexicalScope) { - this.scope.enter(SCOPE_OTHER); - } - - this.parseBlockBody(node, allowDirectives, false, types$1.braceR, afterBlockParse); - - if (createNewLexicalScope) { - this.scope.exit(); - } - - return this.finishNode(node, "BlockStatement"); - } - - isValidDirective(stmt) { - return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; - } - - parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { - const body = node.body = []; - const directives = node.directives = []; - this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); - } - - parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { - const oldStrict = this.state.strict; - let hasStrictModeDirective = false; - let parsedNonDirective = false; - - while (!this.match(end)) { - const stmt = this.parseStatement(null, topLevel); - - if (directives && !parsedNonDirective) { - if (this.isValidDirective(stmt)) { - const directive = this.stmtToDirective(stmt); - directives.push(directive); - - if (!hasStrictModeDirective && directive.value.value === "use strict") { - hasStrictModeDirective = true; - this.setStrict(true); - } - - continue; - } - - parsedNonDirective = true; - this.state.strictErrors.clear(); - } - - body.push(stmt); - } - - if (afterBlockParse) { - afterBlockParse.call(this, hasStrictModeDirective); - } - - if (!oldStrict) { - this.setStrict(false); - } - - this.next(); - } - - parseFor(node, init) { - node.init = init; - this.semicolon(false); - node.test = this.match(types$1.semi) ? null : this.parseExpression(); - this.semicolon(false); - node.update = this.match(types$1.parenR) ? null : this.parseExpression(); - this.expect(types$1.parenR); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for")); - this.scope.exit(); - this.state.labels.pop(); - return this.finishNode(node, "ForStatement"); - } - - parseForIn(node, init, awaitAt) { - const isForIn = this.match(types$1._in); - this.next(); - - if (isForIn) { - if (awaitAt > -1) this.unexpected(awaitAt); - } else { - node.await = awaitAt > -1; - } - - if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { - this.raise(init.start, ErrorMessages.ForInOfLoopInitializer, isForIn ? "for-in" : "for-of"); - } else if (init.type === "AssignmentPattern") { - this.raise(init.start, ErrorMessages.InvalidLhs, "for-loop"); - } - - node.left = init; - node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); - this.expect(types$1.parenR); - node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for")); - this.scope.exit(); - this.state.labels.pop(); - return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); - } - - parseVar(node, isFor, kind) { - const declarations = node.declarations = []; - const isTypescript = this.hasPlugin("typescript"); - node.kind = kind; - - for (;;) { - const decl = this.startNode(); - this.parseVarId(decl, kind); - - if (this.eat(types$1.eq)) { - decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); - } else { - if (kind === "const" && !(this.match(types$1._in) || this.isContextual("of"))) { - if (!isTypescript) { - this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Const declarations"); - } - } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(types$1._in) || this.isContextual("of")))) { - this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Complex binding patterns"); - } - - decl.init = null; - } - - declarations.push(this.finishNode(decl, "VariableDeclarator")); - if (!this.eat(types$1.comma)) break; - } - - return node; - } - - parseVarId(decl, kind) { - decl.id = this.parseBindingAtom(); - this.checkLVal(decl.id, "variable declaration", kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== "var"); - } - - parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) { - const isStatement = statement & FUNC_STATEMENT; - const isHangingStatement = statement & FUNC_HANGING_STATEMENT; - const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID); - this.initFunction(node, isAsync); - - if (this.match(types$1.star) && isHangingStatement) { - this.raise(this.state.start, ErrorMessages.GeneratorInSingleStatementContext); - } - - node.generator = this.eat(types$1.star); - - if (isStatement) { - node.id = this.parseFunctionId(requireId); - } - - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - this.state.maybeInArrowParameters = false; - this.scope.enter(SCOPE_FUNCTION); - this.prodParam.enter(functionFlags(isAsync, node.generator)); - - if (!isStatement) { - node.id = this.parseFunctionId(); - } - - this.parseFunctionParams(node, false); - this.withSmartMixTopicForbiddingContext(() => { - this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression"); - }); - this.prodParam.exit(); - this.scope.exit(); - - if (isStatement && !isHangingStatement) { - this.registerFunctionStatementId(node); - } - - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - return node; - } - - parseFunctionId(requireId) { - return requireId || this.match(types$1.name) ? this.parseIdentifier() : null; - } - - parseFunctionParams(node, allowModifiers) { - this.expect(types$1.parenL); - this.expressionScope.enter(newParameterDeclarationScope()); - node.params = this.parseBindingList(types$1.parenR, 41, false, allowModifiers); - this.expressionScope.exit(); - } - - registerFunctionStatementId(node) { - if (!node.id) return; - this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.start); - } - - parseClass(node, isStatement, optionalId) { - this.next(); - this.takeDecorators(node); - const oldStrict = this.state.strict; - this.state.strict = true; - this.parseClassId(node, isStatement, optionalId); - this.parseClassSuper(node); - node.body = this.parseClassBody(!!node.superClass, oldStrict); - return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); - } - - isClassProperty() { - return this.match(types$1.eq) || this.match(types$1.semi) || this.match(types$1.braceR); - } - - isClassMethod() { - return this.match(types$1.parenL); - } - - isNonstaticConstructor(method) { - return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor"); - } - - parseClassBody(hadSuperClass, oldStrict) { - this.classScope.enter(); - const state = { - hadConstructor: false, - hadSuperClass - }; - let decorators = []; - const classBody = this.startNode(); - classBody.body = []; - this.expect(types$1.braceL); - this.withSmartMixTopicForbiddingContext(() => { - while (!this.match(types$1.braceR)) { - if (this.eat(types$1.semi)) { - if (decorators.length > 0) { - throw this.raise(this.state.lastTokEnd, ErrorMessages.DecoratorSemicolon); - } - - continue; - } - - if (this.match(types$1.at)) { - decorators.push(this.parseDecorator()); - continue; - } - - const member = this.startNode(); - - if (decorators.length) { - member.decorators = decorators; - this.resetStartLocationFromNode(member, decorators[0]); - decorators = []; - } - - this.parseClassMember(classBody, member, state); - - if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { - this.raise(member.start, ErrorMessages.DecoratorConstructor); - } - } - }); - this.state.strict = oldStrict; - this.next(); - - if (decorators.length) { - throw this.raise(this.state.start, ErrorMessages.TrailingDecorator); - } - - this.classScope.exit(); - return this.finishNode(classBody, "ClassBody"); - } - - parseClassMemberFromModifier(classBody, member) { - const key = this.parseIdentifier(true); - - if (this.isClassMethod()) { - const method = member; - method.kind = "method"; - method.computed = false; - method.key = key; - method.static = false; - this.pushClassMethod(classBody, method, false, false, false, false); - return true; - } else if (this.isClassProperty()) { - const prop = member; - prop.computed = false; - prop.key = key; - prop.static = false; - classBody.body.push(this.parseClassProperty(prop)); - return true; - } - - this.resetPreviousNodeTrailingComments(key); - return false; - } - - parseClassMember(classBody, member, state) { - const isStatic = this.isContextual("static"); - - if (isStatic) { - if (this.parseClassMemberFromModifier(classBody, member)) { - return; - } - - if (this.eat(types$1.braceL)) { - this.parseClassStaticBlock(classBody, member); - return; - } - } - - this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); - } - - parseClassMemberWithIsStatic(classBody, member, state, isStatic) { - const publicMethod = member; - const privateMethod = member; - const publicProp = member; - const privateProp = member; - const method = publicMethod; - const publicMember = publicMethod; - member.static = isStatic; - - if (this.eat(types$1.star)) { - method.kind = "method"; - const isPrivateName = this.match(types$1.privateName); - this.parseClassElementName(method); - - if (isPrivateName) { - this.pushClassPrivateMethod(classBody, privateMethod, true, false); - return; - } - - if (this.isNonstaticConstructor(publicMethod)) { - this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsGenerator); - } - - this.pushClassMethod(classBody, publicMethod, true, false, false, false); - return; - } - - const isContextual = this.match(types$1.name) && !this.state.containsEsc; - const isPrivate = this.match(types$1.privateName); - const key = this.parseClassElementName(member); - const maybeQuestionTokenStart = this.state.start; - this.parsePostMemberNameModifiers(publicMember); - - if (this.isClassMethod()) { - method.kind = "method"; - - if (isPrivate) { - this.pushClassPrivateMethod(classBody, privateMethod, false, false); - return; - } - - const isConstructor = this.isNonstaticConstructor(publicMethod); - let allowsDirectSuper = false; - - if (isConstructor) { - publicMethod.kind = "constructor"; - - if (state.hadConstructor && !this.hasPlugin("typescript")) { - this.raise(key.start, ErrorMessages.DuplicateConstructor); - } - - if (isConstructor && this.hasPlugin("typescript") && member.override) { - this.raise(key.start, ErrorMessages.OverrideOnConstructor); - } - - state.hadConstructor = true; - allowsDirectSuper = state.hadSuperClass; - } - - this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); - } else if (this.isClassProperty()) { - if (isPrivate) { - this.pushClassPrivateProperty(classBody, privateProp); - } else { - this.pushClassProperty(classBody, publicProp); - } - } else if (isContextual && key.name === "async" && !this.isLineTerminator()) { - this.resetPreviousNodeTrailingComments(key); - const isGenerator = this.eat(types$1.star); - - if (publicMember.optional) { - this.unexpected(maybeQuestionTokenStart); - } - - method.kind = "method"; - const isPrivate = this.match(types$1.privateName); - this.parseClassElementName(method); - this.parsePostMemberNameModifiers(publicMember); - - if (isPrivate) { - this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); - } else { - if (this.isNonstaticConstructor(publicMethod)) { - this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAsync); - } - - this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); - } - } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(types$1.star) && this.isLineTerminator())) { - this.resetPreviousNodeTrailingComments(key); - method.kind = key.name; - const isPrivate = this.match(types$1.privateName); - this.parseClassElementName(publicMethod); - - if (isPrivate) { - this.pushClassPrivateMethod(classBody, privateMethod, false, false); - } else { - if (this.isNonstaticConstructor(publicMethod)) { - this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAccessor); - } - - this.pushClassMethod(classBody, publicMethod, false, false, false, false); - } - - this.checkGetterSetterParams(publicMethod); - } else if (this.isLineTerminator()) { - if (isPrivate) { - this.pushClassPrivateProperty(classBody, privateProp); - } else { - this.pushClassProperty(classBody, publicProp); - } - } else { - this.unexpected(); - } - } - - parseClassElementName(member) { - const { - type, - value, - start - } = this.state; - - if ((type === types$1.name || type === types$1.string) && member.static && value === "prototype") { - this.raise(start, ErrorMessages.StaticPrototype); - } - - if (type === types$1.privateName && value === "constructor") { - this.raise(start, ErrorMessages.ConstructorClassPrivateField); - } - - return this.parsePropertyName(member, true); - } - - parseClassStaticBlock(classBody, member) { - var _member$decorators; - - this.expectPlugin("classStaticBlock", member.start); - this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER); - const oldLabels = this.state.labels; - this.state.labels = []; - this.prodParam.enter(PARAM); - const body = member.body = []; - this.parseBlockOrModuleBlockBody(body, undefined, false, types$1.braceR); - this.prodParam.exit(); - this.scope.exit(); - this.state.labels = oldLabels; - classBody.body.push(this.finishNode(member, "StaticBlock")); - - if ((_member$decorators = member.decorators) != null && _member$decorators.length) { - this.raise(member.start, ErrorMessages.DecoratorStaticBlock); - } - } - - pushClassProperty(classBody, prop) { - if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) { - this.raise(prop.key.start, ErrorMessages.ConstructorClassField); - } - - classBody.body.push(this.parseClassProperty(prop)); - } - - pushClassPrivateProperty(classBody, prop) { - const node = this.parseClassPrivateProperty(prop); - classBody.body.push(node); - this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.start); - } - - pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { - classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); - } - - pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { - const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); - classBody.body.push(node); - const kind = node.kind === "get" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER; - this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.start); - } - - parsePostMemberNameModifiers(methodOrProp) {} - - parseClassPrivateProperty(node) { - this.parseInitializer(node); - this.semicolon(); - return this.finishNode(node, "ClassPrivateProperty"); - } - - parseClassProperty(node) { - this.parseInitializer(node); - this.semicolon(); - return this.finishNode(node, "ClassProperty"); - } - - parseInitializer(node) { - this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); - this.expressionScope.enter(newExpressionScope()); - this.prodParam.enter(PARAM); - node.value = this.eat(types$1.eq) ? this.parseMaybeAssignAllowIn() : null; - this.expressionScope.exit(); - this.prodParam.exit(); - this.scope.exit(); - } - - parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) { - if (this.match(types$1.name)) { - node.id = this.parseIdentifier(); - - if (isStatement) { - this.checkLVal(node.id, "class name", bindingType); - } - } else { - if (optionalId || !isStatement) { - node.id = null; - } else { - this.unexpected(null, ErrorMessages.MissingClassName); - } - } - } - - parseClassSuper(node) { - node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts() : null; - } - - parseExport(node) { - const hasDefault = this.maybeParseExportDefaultSpecifier(node); - const parseAfterDefault = !hasDefault || this.eat(types$1.comma); - const hasStar = parseAfterDefault && this.eatExportStar(node); - const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); - const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(types$1.comma)); - const isFromRequired = hasDefault || hasStar; - - if (hasStar && !hasNamespace) { - if (hasDefault) this.unexpected(); - this.parseExportFrom(node, true); - return this.finishNode(node, "ExportAllDeclaration"); - } - - const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); - - if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) { - throw this.unexpected(null, types$1.braceL); - } - - let hasDeclaration; - - if (isFromRequired || hasSpecifiers) { - hasDeclaration = false; - this.parseExportFrom(node, isFromRequired); - } else { - hasDeclaration = this.maybeParseExportDeclaration(node); - } - - if (isFromRequired || hasSpecifiers || hasDeclaration) { - this.checkExport(node, true, false, !!node.source); - return this.finishNode(node, "ExportNamedDeclaration"); - } - - if (this.eat(types$1._default)) { - node.declaration = this.parseExportDefaultExpression(); - this.checkExport(node, true, true); - return this.finishNode(node, "ExportDefaultDeclaration"); - } - - throw this.unexpected(null, types$1.braceL); - } - - eatExportStar(node) { - return this.eat(types$1.star); - } - - maybeParseExportDefaultSpecifier(node) { - if (this.isExportDefaultSpecifier()) { - this.expectPlugin("exportDefaultFrom"); - const specifier = this.startNode(); - specifier.exported = this.parseIdentifier(true); - node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; - return true; - } - - return false; - } - - maybeParseExportNamespaceSpecifier(node) { - if (this.isContextual("as")) { - if (!node.specifiers) node.specifiers = []; - const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc); - this.next(); - specifier.exported = this.parseModuleExportName(); - node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); - return true; - } - - return false; - } - - maybeParseExportNamedSpecifiers(node) { - if (this.match(types$1.braceL)) { - if (!node.specifiers) node.specifiers = []; - node.specifiers.push(...this.parseExportSpecifiers()); - node.source = null; - node.declaration = null; - return true; - } - - return false; - } - - maybeParseExportDeclaration(node) { - if (this.shouldParseExportDeclaration()) { - node.specifiers = []; - node.source = null; - node.declaration = this.parseExportDeclaration(node); - return true; - } - - return false; - } - - isAsyncFunction() { - if (!this.isContextual("async")) return false; - const next = this.nextTokenStart(); - return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, "function"); - } - - parseExportDefaultExpression() { - const expr = this.startNode(); - const isAsync = this.isAsyncFunction(); - - if (this.match(types$1._function) || isAsync) { - this.next(); - - if (isAsync) { - this.next(); - } - - return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync); - } else if (this.match(types$1._class)) { - return this.parseClass(expr, true, true); - } else if (this.match(types$1.at)) { - if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) { - this.raise(this.state.start, ErrorMessages.DecoratorBeforeExport); - } - - this.parseDecorators(false); - return this.parseClass(expr, true, true); - } else if (this.match(types$1._const) || this.match(types$1._var) || this.isLet()) { - throw this.raise(this.state.start, ErrorMessages.UnsupportedDefaultExport); - } else { - const res = this.parseMaybeAssignAllowIn(); - this.semicolon(); - return res; - } - } - - parseExportDeclaration(node) { - return this.parseStatement(null); - } - - isExportDefaultSpecifier() { - if (this.match(types$1.name)) { - const value = this.state.value; - - if (value === "async" && !this.state.containsEsc || value === "let") { - return false; - } - - if ((value === "type" || value === "interface") && !this.state.containsEsc) { - const l = this.lookahead(); - - if (l.type === types$1.name && l.value !== "from" || l.type === types$1.braceL) { - this.expectOnePlugin(["flow", "typescript"]); - return false; - } - } - } else if (!this.match(types$1._default)) { - return false; - } - - const next = this.nextTokenStart(); - const hasFrom = this.isUnparsedContextual(next, "from"); - - if (this.input.charCodeAt(next) === 44 || this.match(types$1.name) && hasFrom) { - return true; - } - - if (this.match(types$1._default) && hasFrom) { - const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); - return nextAfterFrom === 34 || nextAfterFrom === 39; - } - - return false; - } - - parseExportFrom(node, expect) { - if (this.eatContextual("from")) { - node.source = this.parseImportSource(); - this.checkExport(node); - const assertions = this.maybeParseImportAssertions(); - - if (assertions) { - node.assertions = assertions; - } - } else { - if (expect) { - this.unexpected(); - } else { - node.source = null; - } - } - - this.semicolon(); - } - - shouldParseExportDeclaration() { - if (this.match(types$1.at)) { - this.expectOnePlugin(["decorators", "decorators-legacy"]); - - if (this.hasPlugin("decorators")) { - if (this.getPluginOption("decorators", "decoratorsBeforeExport")) { - this.unexpected(this.state.start, ErrorMessages.DecoratorBeforeExport); - } else { - return true; - } - } - } - - return this.state.type.keyword === "var" || this.state.type.keyword === "const" || this.state.type.keyword === "function" || this.state.type.keyword === "class" || this.isLet() || this.isAsyncFunction(); - } - - checkExport(node, checkNames, isDefault, isFrom) { - if (checkNames) { - if (isDefault) { - this.checkDuplicateExports(node, "default"); - - if (this.hasPlugin("exportDefaultFrom")) { - var _declaration$extra; - - const declaration = node.declaration; - - if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { - this.raise(declaration.start, ErrorMessages.ExportDefaultFromAsIdentifier); - } - } - } else if (node.specifiers && node.specifiers.length) { - for (const specifier of node.specifiers) { - const { - exported - } = specifier; - const exportedName = exported.type === "Identifier" ? exported.name : exported.value; - this.checkDuplicateExports(specifier, exportedName); - - if (!isFrom && specifier.local) { - const { - local - } = specifier; - - if (local.type !== "Identifier") { - this.raise(specifier.start, ErrorMessages.ExportBindingIsString, local.value, exportedName); - } else { - this.checkReservedWord(local.name, local.start, true, false); - this.scope.checkLocalExport(local); - } - } - } - } else if (node.declaration) { - if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") { - const id = node.declaration.id; - if (!id) throw new Error("Assertion failure"); - this.checkDuplicateExports(node, id.name); - } else if (node.declaration.type === "VariableDeclaration") { - for (const declaration of node.declaration.declarations) { - this.checkDeclaration(declaration.id); - } - } - } - } - - const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1]; - - if (currentContextDecorators.length) { - throw this.raise(node.start, ErrorMessages.UnsupportedDecoratorExport); - } - } - - checkDeclaration(node) { - if (node.type === "Identifier") { - this.checkDuplicateExports(node, node.name); - } else if (node.type === "ObjectPattern") { - for (const prop of node.properties) { - this.checkDeclaration(prop); - } - } else if (node.type === "ArrayPattern") { - for (const elem of node.elements) { - if (elem) { - this.checkDeclaration(elem); - } - } - } else if (node.type === "ObjectProperty") { - this.checkDeclaration(node.value); - } else if (node.type === "RestElement") { - this.checkDeclaration(node.argument); - } else if (node.type === "AssignmentPattern") { - this.checkDeclaration(node.left); - } - } - - checkDuplicateExports(node, name) { - if (this.exportedIdentifiers.has(name)) { - this.raise(node.start, name === "default" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, name); - } - - this.exportedIdentifiers.add(name); - } - - parseExportSpecifiers() { - const nodes = []; - let first = true; - this.expect(types$1.braceL); - - while (!this.eat(types$1.braceR)) { - if (first) { - first = false; - } else { - this.expect(types$1.comma); - if (this.eat(types$1.braceR)) break; - } - - const node = this.startNode(); - const isString = this.match(types$1.string); - const local = this.parseModuleExportName(); - node.local = local; - - if (this.eatContextual("as")) { - node.exported = this.parseModuleExportName(); - } else if (isString) { - node.exported = cloneStringLiteral(local); - } else { - node.exported = cloneIdentifier(local); - } - - nodes.push(this.finishNode(node, "ExportSpecifier")); - } - - return nodes; - } - - parseModuleExportName() { - if (this.match(types$1.string)) { - const result = this.parseStringLiteral(this.state.value); - const surrogate = result.value.match(loneSurrogate); - - if (surrogate) { - this.raise(result.start, ErrorMessages.ModuleExportNameHasLoneSurrogate, surrogate[0].charCodeAt(0).toString(16)); - } - - return result; - } - - return this.parseIdentifier(true); - } - - parseImport(node) { - node.specifiers = []; - - if (!this.match(types$1.string)) { - const hasDefault = this.maybeParseDefaultImportSpecifier(node); - const parseNext = !hasDefault || this.eat(types$1.comma); - const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); - if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); - this.expectContextual("from"); - } - - node.source = this.parseImportSource(); - const assertions = this.maybeParseImportAssertions(); - - if (assertions) { - node.assertions = assertions; - } else { - const attributes = this.maybeParseModuleAttributes(); - - if (attributes) { - node.attributes = attributes; - } - } - - this.semicolon(); - return this.finishNode(node, "ImportDeclaration"); - } - - parseImportSource() { - if (!this.match(types$1.string)) this.unexpected(); - return this.parseExprAtom(); - } - - shouldParseDefaultImport(node) { - return this.match(types$1.name); - } - - parseImportSpecifierLocal(node, specifier, type, contextDescription) { - specifier.local = this.parseIdentifier(); - this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL); - node.specifiers.push(this.finishNode(specifier, type)); - } - - parseAssertEntries() { - const attrs = []; - const attrNames = new Set(); - - do { - if (this.match(types$1.braceR)) { - break; - } - - const node = this.startNode(); - const keyName = this.state.value; - - if (attrNames.has(keyName)) { - this.raise(this.state.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, keyName); - } - - attrNames.add(keyName); - - if (this.match(types$1.string)) { - node.key = this.parseStringLiteral(keyName); - } else { - node.key = this.parseIdentifier(true); - } - - this.expect(types$1.colon); - - if (!this.match(types$1.string)) { - throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue); - } - - node.value = this.parseStringLiteral(this.state.value); - this.finishNode(node, "ImportAttribute"); - attrs.push(node); - } while (this.eat(types$1.comma)); - - return attrs; - } - - maybeParseModuleAttributes() { - if (this.match(types$1._with) && !this.hasPrecedingLineBreak()) { - this.expectPlugin("moduleAttributes"); - this.next(); - } else { - if (this.hasPlugin("moduleAttributes")) return []; - return null; - } - - const attrs = []; - const attributes = new Set(); - - do { - const node = this.startNode(); - node.key = this.parseIdentifier(true); - - if (node.key.name !== "type") { - this.raise(node.key.start, ErrorMessages.ModuleAttributeDifferentFromType, node.key.name); - } - - if (attributes.has(node.key.name)) { - this.raise(node.key.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, node.key.name); - } - - attributes.add(node.key.name); - this.expect(types$1.colon); - - if (!this.match(types$1.string)) { - throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue); - } - - node.value = this.parseStringLiteral(this.state.value); - this.finishNode(node, "ImportAttribute"); - attrs.push(node); - } while (this.eat(types$1.comma)); - - return attrs; - } - - maybeParseImportAssertions() { - if (this.isContextual("assert") && !this.hasPrecedingLineBreak()) { - this.expectPlugin("importAssertions"); - this.next(); - } else { - if (this.hasPlugin("importAssertions")) return []; - return null; - } - - this.eat(types$1.braceL); - const attrs = this.parseAssertEntries(); - this.eat(types$1.braceR); - return attrs; - } - - maybeParseDefaultImportSpecifier(node) { - if (this.shouldParseDefaultImport(node)) { - this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier"); - return true; - } - - return false; - } - - maybeParseStarImportSpecifier(node) { - if (this.match(types$1.star)) { - const specifier = this.startNode(); - this.next(); - this.expectContextual("as"); - this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier"); - return true; - } - - return false; - } - - parseNamedImportSpecifiers(node) { - let first = true; - this.expect(types$1.braceL); - - while (!this.eat(types$1.braceR)) { - if (first) { - first = false; - } else { - if (this.eat(types$1.colon)) { - throw this.raise(this.state.start, ErrorMessages.DestructureNamedImport); - } - - this.expect(types$1.comma); - if (this.eat(types$1.braceR)) break; - } - - this.parseImportSpecifier(node); - } - } - - parseImportSpecifier(node) { - const specifier = this.startNode(); - const importedIsString = this.match(types$1.string); - specifier.imported = this.parseModuleExportName(); - - if (this.eatContextual("as")) { - specifier.local = this.parseIdentifier(); - } else { - const { - imported - } = specifier; - - if (importedIsString) { - throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, imported.value); - } - - this.checkReservedWord(imported.name, specifier.start, true, true); - specifier.local = cloneIdentifier(imported); - } - - this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL); - node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); - } - - isThisParam(param) { - return param.type === "Identifier" && param.name === "this"; - } - -} - -class Parser extends StatementParser { - constructor(options, input) { - options = getOptions(options); - super(options, input); - this.options = options; - this.initializeScopes(); - this.plugins = pluginsMap(this.options.plugins); - this.filename = options.sourceFilename; - } - - getScopeHandler() { - return ScopeHandler; - } - - parse() { - this.enterInitialScopes(); - const file = this.startNode(); - const program = this.startNode(); - this.nextToken(); - file.errors = null; - this.parseTopLevel(file, program); - file.errors = this.state.errors; - return file; - } - -} - -function pluginsMap(plugins) { - const pluginMap = new Map(); - - for (const plugin of plugins) { - const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}]; - if (!pluginMap.has(name)) pluginMap.set(name, options || {}); - } - - return pluginMap; -} - -function parse(input, options) { - var _options; - - if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { - options = Object.assign({}, options); - - try { - options.sourceType = "module"; - const parser = getParser(options, input); - const ast = parser.parse(); - - if (parser.sawUnambiguousESM) { - return ast; - } - - if (parser.ambiguousScriptDifferentAst) { - try { - options.sourceType = "script"; - return getParser(options, input).parse(); - } catch (_unused) {} - } else { - ast.program.sourceType = "script"; - } - - return ast; - } catch (moduleError) { - try { - options.sourceType = "script"; - return getParser(options, input).parse(); - } catch (_unused2) {} - - throw moduleError; - } - } else { - return getParser(options, input).parse(); - } -} -function parseExpression(input, options) { - const parser = getParser(options, input); - - if (parser.options.strictMode) { - parser.state.strict = true; - } - - return parser.getExpression(); -} - -function getParser(options, input) { - let cls = Parser; - - if (options != null && options.plugins) { - validatePlugins(options.plugins); - cls = getParserClass(options.plugins); - } - - return new cls(options, input); -} - -const parserClassCache = {}; - -function getParserClass(pluginsFromOptions) { - const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name)); - const key = pluginList.join("/"); - let cls = parserClassCache[key]; - - if (!cls) { - cls = Parser; - - for (const plugin of pluginList) { - cls = mixinPlugins[plugin](cls); - } - - parserClassCache[key] = cls; - } - - return cls; -} - -exports.parse = parse; -exports.parseExpression = parseExpression; -exports.tokTypes = types$1; -//# sourceMappingURL=index.js.map - - -/***/ }), - -/***/ 56309: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _helperPluginUtils = __nccwpck_require__(29055); - -var _pluginSyntaxObjectRestSpread = _interopRequireDefault(__nccwpck_require__(84499)); - -var _core = __nccwpck_require__(92092); - -var _pluginTransformParameters = __nccwpck_require__(23714); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const ZERO_REFS = (() => { - const node = _core.types.identifier("a"); - - const property = _core.types.objectProperty(_core.types.identifier("key"), node); - - const pattern = _core.types.objectPattern([property]); - - return _core.types.isReferenced(node, property, pattern) ? 1 : 0; -})(); - -var _default = (0, _helperPluginUtils.declare)((api, opts) => { - api.assertVersion(7); - const { - useBuiltIns = false, - loose = false - } = opts; - - if (typeof loose !== "boolean") { - throw new Error(".loose must be a boolean, or undefined"); - } - - function getExtendsHelper(file) { - return useBuiltIns ? _core.types.memberExpression(_core.types.identifier("Object"), _core.types.identifier("assign")) : file.addHelper("extends"); - } - - function hasRestElement(path) { - let foundRestElement = false; - visitRestElements(path, restElement => { - foundRestElement = true; - restElement.stop(); - }); - return foundRestElement; - } - - function hasObjectPatternRestElement(path) { - let foundRestElement = false; - visitRestElements(path, restElement => { - if (restElement.parentPath.isObjectPattern()) { - foundRestElement = true; - restElement.stop(); - } - }); - return foundRestElement; - } - - function visitRestElements(path, visitor) { - path.traverse({ - Expression(path) { - const parentType = path.parent.type; - - if (parentType === "AssignmentPattern" && path.key === "right" || parentType === "ObjectProperty" && path.parent.computed && path.key === "key") { - path.skip(); - } - }, - - RestElement: visitor - }); - } - - function hasSpread(node) { - for (const prop of node.properties) { - if (_core.types.isSpreadElement(prop)) { - return true; - } - } - - return false; - } - - function extractNormalizedKeys(path) { - const props = path.node.properties; - const keys = []; - let allLiteral = true; - - for (const prop of props) { - if (_core.types.isIdentifier(prop.key) && !prop.computed) { - keys.push(_core.types.stringLiteral(prop.key.name)); - } else if (_core.types.isTemplateLiteral(prop.key)) { - keys.push(_core.types.cloneNode(prop.key)); - } else if (_core.types.isLiteral(prop.key)) { - keys.push(_core.types.stringLiteral(String(prop.key.value))); - } else { - keys.push(_core.types.cloneNode(prop.key)); - allLiteral = false; - } - } - - return { - keys, - allLiteral - }; - } - - function replaceImpureComputedKeys(properties, scope) { - const impureComputedPropertyDeclarators = []; - - for (const propPath of properties) { - const key = propPath.get("key"); - - if (propPath.node.computed && !key.isPure()) { - const name = scope.generateUidBasedOnNode(key.node); - - const declarator = _core.types.variableDeclarator(_core.types.identifier(name), key.node); - - impureComputedPropertyDeclarators.push(declarator); - key.replaceWith(_core.types.identifier(name)); - } - } - - return impureComputedPropertyDeclarators; - } - - function removeUnusedExcludedKeys(path) { - const bindings = path.getOuterBindingIdentifierPaths(); - Object.keys(bindings).forEach(bindingName => { - const bindingParentPath = bindings[bindingName].parentPath; - - if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) { - return; - } - - bindingParentPath.remove(); - }); - } - - function createObjectSpread(path, file, objRef) { - const props = path.get("properties"); - const last = props[props.length - 1]; - - _core.types.assertRestElement(last.node); - - const restElement = _core.types.cloneNode(last.node); - - last.remove(); - const impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope); - const { - keys, - allLiteral - } = extractNormalizedKeys(path); - - if (keys.length === 0) { - return [impureComputedPropertyDeclarators, restElement.argument, _core.types.callExpression(getExtendsHelper(file), [_core.types.objectExpression([]), _core.types.cloneNode(objRef)])]; - } - - let keyExpression; - - if (!allLiteral) { - keyExpression = _core.types.callExpression(_core.types.memberExpression(_core.types.arrayExpression(keys), _core.types.identifier("map")), [file.addHelper("toPropertyKey")]); - } else { - keyExpression = _core.types.arrayExpression(keys); - } - - return [impureComputedPropertyDeclarators, restElement.argument, _core.types.callExpression(file.addHelper(`objectWithoutProperties${loose ? "Loose" : ""}`), [_core.types.cloneNode(objRef), keyExpression])]; - } - - function replaceRestElement(parentPath, paramPath, container) { - if (paramPath.isAssignmentPattern()) { - replaceRestElement(parentPath, paramPath.get("left"), container); - return; - } - - if (paramPath.isArrayPattern() && hasRestElement(paramPath)) { - const elements = paramPath.get("elements"); - - for (let i = 0; i < elements.length; i++) { - replaceRestElement(parentPath, elements[i], container); - } - } - - if (paramPath.isObjectPattern() && hasRestElement(paramPath)) { - const uid = parentPath.scope.generateUidIdentifier("ref"); - - const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(paramPath.node, uid)]); - - if (container) { - container.push(declar); - } else { - parentPath.ensureBlock(); - parentPath.get("body").unshiftContainer("body", declar); - } - - paramPath.replaceWith(_core.types.cloneNode(uid)); - } - } - - return { - name: "proposal-object-rest-spread", - inherits: _pluginSyntaxObjectRestSpread.default, - visitor: { - Function(path) { - const params = path.get("params"); - const paramsWithRestElement = new Set(); - const idsInRestParams = new Set(); - - for (let i = 0; i < params.length; ++i) { - const param = params[i]; - - if (hasRestElement(param)) { - paramsWithRestElement.add(i); - - for (const name of Object.keys(param.getBindingIdentifiers())) { - idsInRestParams.add(name); - } - } - } - - let idInRest = false; - - const IdentifierHandler = function (path, functionScope) { - const name = path.node.name; - - if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) { - idInRest = true; - path.stop(); - } - }; - - let i; - - for (i = 0; i < params.length && !idInRest; ++i) { - const param = params[i]; - - if (!paramsWithRestElement.has(i)) { - if (param.isReferencedIdentifier() || param.isBindingIdentifier()) { - IdentifierHandler(path, path.scope); - } else { - param.traverse({ - "Scope|TypeAnnotation|TSTypeAnnotation": path => path.skip(), - "ReferencedIdentifier|BindingIdentifier": IdentifierHandler - }, path.scope); - } - } - } - - if (!idInRest) { - for (let i = 0; i < params.length; ++i) { - const param = params[i]; - - if (paramsWithRestElement.has(i)) { - replaceRestElement(param.parentPath, param); - } - } - } else { - const shouldTransformParam = idx => idx >= i - 1 || paramsWithRestElement.has(idx); - - (0, _pluginTransformParameters.convertFunctionParams)(path, loose, shouldTransformParam, replaceRestElement); - } - }, - - VariableDeclarator(path, file) { - if (!path.get("id").isObjectPattern()) { - return; - } - - let insertionPath = path; - const originalPath = path; - visitRestElements(path.get("id"), path => { - if (!path.parentPath.isObjectPattern()) { - return; - } - - if (originalPath.node.id.properties.length > 1 && !_core.types.isIdentifier(originalPath.node.init)) { - const initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref"); - originalPath.insertBefore(_core.types.variableDeclarator(initRef, originalPath.node.init)); - originalPath.replaceWith(_core.types.variableDeclarator(originalPath.node.id, _core.types.cloneNode(initRef))); - return; - } - - let ref = originalPath.node.init; - const refPropertyPath = []; - let kind; - path.findParent(path => { - if (path.isObjectProperty()) { - refPropertyPath.unshift(path); - } else if (path.isVariableDeclarator()) { - kind = path.parentPath.node.kind; - return true; - } - }); - const impureObjRefComputedDeclarators = replaceImpureComputedKeys(refPropertyPath, path.scope); - refPropertyPath.forEach(prop => { - const { - node - } = prop; - ref = _core.types.memberExpression(ref, _core.types.cloneNode(node.key), node.computed || _core.types.isLiteral(node.key)); - }); - const objectPatternPath = path.findParent(path => path.isObjectPattern()); - const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectSpread(objectPatternPath, file, ref); - - if (loose) { - removeUnusedExcludedKeys(objectPatternPath); - } - - _core.types.assertIdentifier(argument); - - insertionPath.insertBefore(impureComputedPropertyDeclarators); - insertionPath.insertBefore(impureObjRefComputedDeclarators); - insertionPath.insertAfter(_core.types.variableDeclarator(argument, callExpression)); - insertionPath = insertionPath.getSibling(insertionPath.key + 1); - path.scope.registerBinding(kind, insertionPath); - - if (objectPatternPath.node.properties.length === 0) { - objectPatternPath.findParent(path => path.isObjectProperty() || path.isVariableDeclarator()).remove(); - } - }); - }, - - ExportNamedDeclaration(path) { - const declaration = path.get("declaration"); - if (!declaration.isVariableDeclaration()) return; - const hasRest = declaration.get("declarations").some(path => hasObjectPatternRestElement(path.get("id"))); - if (!hasRest) return; - const specifiers = []; - - for (const name of Object.keys(path.getOuterBindingIdentifiers(path))) { - specifiers.push(_core.types.exportSpecifier(_core.types.identifier(name), _core.types.identifier(name))); - } - - path.replaceWith(declaration.node); - path.insertAfter(_core.types.exportNamedDeclaration(null, specifiers)); - }, - - CatchClause(path) { - const paramPath = path.get("param"); - replaceRestElement(paramPath.parentPath, paramPath); - }, - - AssignmentExpression(path, file) { - const leftPath = path.get("left"); - - if (leftPath.isObjectPattern() && hasRestElement(leftPath)) { - const nodes = []; - const refName = path.scope.generateUidBasedOnNode(path.node.right, "ref"); - nodes.push(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(refName), path.node.right)])); - const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectSpread(leftPath, file, _core.types.identifier(refName)); - - if (impureComputedPropertyDeclarators.length > 0) { - nodes.push(_core.types.variableDeclaration("var", impureComputedPropertyDeclarators)); - } - - const nodeWithoutSpread = _core.types.cloneNode(path.node); - - nodeWithoutSpread.right = _core.types.identifier(refName); - nodes.push(_core.types.expressionStatement(nodeWithoutSpread)); - nodes.push(_core.types.toStatement(_core.types.assignmentExpression("=", argument, callExpression))); - nodes.push(_core.types.expressionStatement(_core.types.identifier(refName))); - path.replaceWithMultiple(nodes); - } - }, - - ForXStatement(path) { - const { - node, - scope - } = path; - const leftPath = path.get("left"); - const left = node.left; - - if (!hasObjectPatternRestElement(leftPath)) { - return; - } - - if (!_core.types.isVariableDeclaration(left)) { - const temp = scope.generateUidIdentifier("ref"); - node.left = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(temp)]); - path.ensureBlock(); - - if (node.body.body.length === 0 && path.isCompletionRecord()) { - node.body.body.unshift(_core.types.expressionStatement(scope.buildUndefinedNode())); - } - - node.body.body.unshift(_core.types.expressionStatement(_core.types.assignmentExpression("=", left, _core.types.cloneNode(temp)))); - } else { - const pattern = left.declarations[0].id; - const key = scope.generateUidIdentifier("ref"); - node.left = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(key, null)]); - path.ensureBlock(); - node.body.body.unshift(_core.types.variableDeclaration(node.left.kind, [_core.types.variableDeclarator(pattern, _core.types.cloneNode(key))])); - } - }, - - ArrayPattern(path) { - const objectPatterns = []; - visitRestElements(path, path => { - if (!path.parentPath.isObjectPattern()) { - return; - } - - const objectPattern = path.parentPath; - const uid = path.scope.generateUidIdentifier("ref"); - objectPatterns.push(_core.types.variableDeclarator(objectPattern.node, uid)); - objectPattern.replaceWith(_core.types.cloneNode(uid)); - path.skip(); - }); - - if (objectPatterns.length > 0) { - const statementPath = path.getStatementParent(); - statementPath.insertAfter(_core.types.variableDeclaration(statementPath.node.kind || "var", objectPatterns)); - } - }, - - ObjectExpression(path, file) { - if (!hasSpread(path.node)) return; - let helper; - - if (loose) { - helper = getExtendsHelper(file); - } else { - try { - helper = file.addHelper("objectSpread2"); - } catch (_unused) { - this.file.declarations["objectSpread2"] = null; - helper = file.addHelper("objectSpread"); - } - } - - let exp = null; - let props = []; - - function make() { - const hadProps = props.length > 0; - - const obj = _core.types.objectExpression(props); - - props = []; - - if (!exp) { - exp = _core.types.callExpression(helper, [obj]); - return; - } - - if (loose) { - if (hadProps) { - exp.arguments.push(obj); - } - - return; - } - - exp = _core.types.callExpression(_core.types.cloneNode(helper), [exp, ...(hadProps ? [_core.types.objectExpression([]), obj] : [])]); - } - - for (const prop of path.node.properties) { - if (_core.types.isSpreadElement(prop)) { - make(); - exp.arguments.push(prop.argument); - } else { - props.push(prop); - } - } - - if (props.length) make(); - path.replaceWith(exp); - } - - } - }; -}); - -exports["default"] = _default; - -/***/ }), - -/***/ 28926: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _helperPluginUtils = __nccwpck_require__(29055); - -var _default = (0, _helperPluginUtils.declare)(api => { - api.assertVersion(7); - return { - name: "syntax-jsx", - - manipulateOptions(opts, parserOpts) { - if (parserOpts.plugins.some(p => (Array.isArray(p) ? p[0] : p) === "typescript")) { - return; - } - - parserOpts.plugins.push("jsx"); - } - - }; -}); - -exports["default"] = _default; - -/***/ }), - -/***/ 84499: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _helperPluginUtils = __nccwpck_require__(29055); - -var _default = (0, _helperPluginUtils.declare)(api => { - api.assertVersion(7); - return { - name: "syntax-object-rest-spread", - - manipulateOptions(opts, parserOpts) { - parserOpts.plugins.push("objectRestSpread"); - } - - }; -}); - -exports["default"] = _default; - -/***/ }), - -/***/ 23714: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "convertFunctionParams", ({ - enumerable: true, - get: function () { - return _params.default; - } -})); -exports["default"] = void 0; - -var _helperPluginUtils = __nccwpck_require__(39497); - -var _params = __nccwpck_require__(81042); - -var _rest = __nccwpck_require__(80258); - -var _default = (0, _helperPluginUtils.declare)((api, options) => { - var _api$assumption; - - api.assertVersion(7); - const ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : options.loose; - const noNewArrows = api.assumption("noNewArrows"); - return { - name: "transform-parameters", - visitor: { - Function(path) { - if (path.isArrowFunctionExpression() && path.get("params").some(param => param.isRestElement() || param.isAssignmentPattern())) { - path.arrowFunctionToExpression({ - noNewArrows - }); - } - - const convertedRest = (0, _rest.default)(path); - const convertedParams = (0, _params.default)(path, ignoreFunctionLength); - - if (convertedRest || convertedParams) { - path.scope.crawl(); - } - } - - } - }; -}); - -exports["default"] = _default; - -/***/ }), - -/***/ 81042: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = convertFunctionParams; - -var _core = __nccwpck_require__(92092); - -const buildDefaultParam = (0, _core.template)(` - let VARIABLE_NAME = - arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ? - arguments[ARGUMENT_KEY] - : - DEFAULT_VALUE; -`); -const buildLooseDefaultParam = (0, _core.template)(` - if (ASSIGNMENT_IDENTIFIER === UNDEFINED) { - ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE; - } -`); -const buildLooseDestructuredDefaultParam = (0, _core.template)(` - let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ; -`); -const buildSafeArgumentsAccess = (0, _core.template)(` - let $0 = arguments.length > $1 ? arguments[$1] : undefined; -`); -const iifeVisitor = { - "ReferencedIdentifier|BindingIdentifier"(path, state) { - const { - scope, - node - } = path; - const { - name - } = node; - - if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) { - state.needsOuterBinding = true; - path.stop(); - } - }, - - "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": path => path.skip() -}; - -function convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement) { - const params = path.get("params"); - const isSimpleParameterList = params.every(param => param.isIdentifier()); - if (isSimpleParameterList) return false; - const { - node, - scope - } = path; - const state = { - stop: false, - needsOuterBinding: false, - scope - }; - const body = []; - const shadowedParams = new Set(); - - for (const param of params) { - for (const name of Object.keys(param.getBindingIdentifiers())) { - var _scope$bindings$name; - - const constantViolations = (_scope$bindings$name = scope.bindings[name]) == null ? void 0 : _scope$bindings$name.constantViolations; - - if (constantViolations) { - for (const redeclarator of constantViolations) { - const node = redeclarator.node; - - switch (node.type) { - case "VariableDeclarator": - { - if (node.init === null) { - const declaration = redeclarator.parentPath; - - if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) { - redeclarator.remove(); - break; - } - } - - shadowedParams.add(name); - break; - } - - case "FunctionDeclaration": - shadowedParams.add(name); - break; - } - } - } - } - } - - if (shadowedParams.size === 0) { - for (const param of params) { - if (!param.isIdentifier()) param.traverse(iifeVisitor, state); - if (state.needsOuterBinding) break; - } - } - - let firstOptionalIndex = null; - - for (let i = 0; i < params.length; i++) { - const param = params[i]; - - if (shouldTransformParam && !shouldTransformParam(i)) { - continue; - } - - const transformedRestNodes = []; - - if (replaceRestElement) { - replaceRestElement(param.parentPath, param, transformedRestNodes); - } - - const paramIsAssignmentPattern = param.isAssignmentPattern(); - - if (paramIsAssignmentPattern && (ignoreFunctionLength || node.kind === "set")) { - const left = param.get("left"); - const right = param.get("right"); - const undefinedNode = scope.buildUndefinedNode(); - - if (left.isIdentifier()) { - body.push(buildLooseDefaultParam({ - ASSIGNMENT_IDENTIFIER: _core.types.cloneNode(left.node), - DEFAULT_VALUE: right.node, - UNDEFINED: undefinedNode - })); - param.replaceWith(left.node); - } else if (left.isObjectPattern() || left.isArrayPattern()) { - const paramName = scope.generateUidIdentifier(); - body.push(buildLooseDestructuredDefaultParam({ - ASSIGNMENT_IDENTIFIER: left.node, - DEFAULT_VALUE: right.node, - PARAMETER_NAME: _core.types.cloneNode(paramName), - UNDEFINED: undefinedNode - })); - param.replaceWith(paramName); - } - } else if (paramIsAssignmentPattern) { - if (firstOptionalIndex === null) firstOptionalIndex = i; - const left = param.get("left"); - const right = param.get("right"); - const defNode = buildDefaultParam({ - VARIABLE_NAME: left.node, - DEFAULT_VALUE: right.node, - ARGUMENT_KEY: _core.types.numericLiteral(i) - }); - body.push(defNode); - } else if (firstOptionalIndex !== null) { - const defNode = buildSafeArgumentsAccess([param.node, _core.types.numericLiteral(i)]); - body.push(defNode); - } else if (param.isObjectPattern() || param.isArrayPattern()) { - const uid = path.scope.generateUidIdentifier("ref"); - - const defNode = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(param.node, uid)]); - - body.push(defNode); - param.replaceWith(_core.types.cloneNode(uid)); - } - - if (transformedRestNodes) { - for (const transformedNode of transformedRestNodes) { - body.push(transformedNode); - } - } - } - - if (firstOptionalIndex !== null) { - node.params = node.params.slice(0, firstOptionalIndex); - } - - path.ensureBlock(); - - if (state.needsOuterBinding || shadowedParams.size > 0) { - body.push(buildScopeIIFE(shadowedParams, path.get("body").node)); - path.set("body", _core.types.blockStatement(body)); - const bodyPath = path.get("body.body"); - const arrowPath = bodyPath[bodyPath.length - 1].get("argument.callee"); - arrowPath.arrowFunctionToExpression(); - arrowPath.node.generator = path.node.generator; - arrowPath.node.async = path.node.async; - path.node.generator = false; - } else { - path.get("body").unshiftContainer("body", body); - } - - return true; -} - -function buildScopeIIFE(shadowedParams, body) { - const args = []; - const params = []; - - for (const name of shadowedParams) { - args.push(_core.types.identifier(name)); - params.push(_core.types.identifier(name)); - } - - return _core.types.returnStatement(_core.types.callExpression(_core.types.arrowFunctionExpression(params, body), args)); -} - -/***/ }), - -/***/ 80258: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = convertFunctionRest; - -var _core = __nccwpck_require__(92092); - -const buildRest = (0, _core.template)(` - for (var LEN = ARGUMENTS.length, - ARRAY = new Array(ARRAY_LEN), - KEY = START; - KEY < LEN; - KEY++) { - ARRAY[ARRAY_KEY] = ARGUMENTS[KEY]; - } -`); -const restIndex = (0, _core.template)(` - (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX] -`); -const restIndexImpure = (0, _core.template)(` - REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF] -`); -const restLength = (0, _core.template)(` - ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET -`); - -function referencesRest(path, state) { - if (path.node.name === state.name) { - return path.scope.bindingIdentifierEquals(state.name, state.outerBinding); - } - - return false; -} - -const memberExpressionOptimisationVisitor = { - Scope(path, state) { - if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) { - path.skip(); - } - }, - - Flow(path) { - if (path.isTypeCastExpression()) return; - path.skip(); - }, - - Function(path, state) { - const oldNoOptimise = state.noOptimise; - state.noOptimise = true; - path.traverse(memberExpressionOptimisationVisitor, state); - state.noOptimise = oldNoOptimise; - path.skip(); - }, - - ReferencedIdentifier(path, state) { - const { - node - } = path; - - if (node.name === "arguments") { - state.deopted = true; - } - - if (!referencesRest(path, state)) return; - - if (state.noOptimise) { - state.deopted = true; - } else { - const { - parentPath - } = path; - - if (parentPath.listKey === "params" && parentPath.key < state.offset) { - return; - } - - if (parentPath.isMemberExpression({ - object: node - })) { - const grandparentPath = parentPath.parentPath; - const argsOptEligible = !state.deopted && !(grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left || grandparentPath.isLVal() || grandparentPath.isForXStatement() || grandparentPath.isUpdateExpression() || grandparentPath.isUnaryExpression({ - operator: "delete" - }) || (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee); - - if (argsOptEligible) { - if (parentPath.node.computed) { - if (parentPath.get("property").isBaseType("number")) { - state.candidates.push({ - cause: "indexGetter", - path - }); - return; - } - } else if (parentPath.node.property.name === "length") { - state.candidates.push({ - cause: "lengthGetter", - path - }); - return; - } - } - } - - if (state.offset === 0 && parentPath.isSpreadElement()) { - const call = parentPath.parentPath; - - if (call.isCallExpression() && call.node.arguments.length === 1) { - state.candidates.push({ - cause: "argSpread", - path - }); - return; - } - } - - state.references.push(path); - } - }, - - BindingIdentifier(path, state) { - if (referencesRest(path, state)) { - state.deopted = true; - } - } - -}; - -function getParamsCount(node) { - let count = node.params.length; - - if (count > 0 && _core.types.isIdentifier(node.params[0], { - name: "this" - })) { - count -= 1; - } - - return count; -} - -function hasRest(node) { - const length = node.params.length; - return length > 0 && _core.types.isRestElement(node.params[length - 1]); -} - -function optimiseIndexGetter(path, argsId, offset) { - const offsetLiteral = _core.types.numericLiteral(offset); - - let index; - - if (_core.types.isNumericLiteral(path.parent.property)) { - index = _core.types.numericLiteral(path.parent.property.value + offset); - } else if (offset === 0) { - index = path.parent.property; - } else { - index = _core.types.binaryExpression("+", path.parent.property, _core.types.cloneNode(offsetLiteral)); - } - - const { - scope - } = path; - - if (!scope.isPure(index)) { - const temp = scope.generateUidIdentifierBasedOnNode(index); - scope.push({ - id: temp, - kind: "var" - }); - path.parentPath.replaceWith(restIndexImpure({ - ARGUMENTS: argsId, - OFFSET: offsetLiteral, - INDEX: index, - REF: _core.types.cloneNode(temp) - })); - } else { - const parentPath = path.parentPath; - parentPath.replaceWith(restIndex({ - ARGUMENTS: argsId, - OFFSET: offsetLiteral, - INDEX: index - })); - const offsetTestPath = parentPath.get("test").get("left"); - const valRes = offsetTestPath.evaluate(); - - if (valRes.confident) { - if (valRes.value === true) { - parentPath.replaceWith(parentPath.scope.buildUndefinedNode()); - } else { - parentPath.get("test").replaceWith(parentPath.get("test").get("right")); - } - } - } -} - -function optimiseLengthGetter(path, argsId, offset) { - if (offset) { - path.parentPath.replaceWith(restLength({ - ARGUMENTS: argsId, - OFFSET: _core.types.numericLiteral(offset) - })); - } else { - path.replaceWith(argsId); - } -} - -function convertFunctionRest(path) { - const { - node, - scope - } = path; - if (!hasRest(node)) return false; - let rest = node.params.pop().argument; - - const argsId = _core.types.identifier("arguments"); - - if (_core.types.isPattern(rest)) { - const pattern = rest; - rest = scope.generateUidIdentifier("ref"); - - const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(pattern, rest)]); - - node.body.body.unshift(declar); - } - - const paramsCount = getParamsCount(node); - const state = { - references: [], - offset: paramsCount, - argumentsNode: argsId, - outerBinding: scope.getBindingIdentifier(rest.name), - candidates: [], - name: rest.name, - deopted: false - }; - path.traverse(memberExpressionOptimisationVisitor, state); - - if (!state.deopted && !state.references.length) { - for (const { - path, - cause - } of state.candidates) { - const clonedArgsId = _core.types.cloneNode(argsId); - - switch (cause) { - case "indexGetter": - optimiseIndexGetter(path, clonedArgsId, state.offset); - break; - - case "lengthGetter": - optimiseLengthGetter(path, clonedArgsId, state.offset); - break; - - default: - path.replaceWith(clonedArgsId); - } - } - - return true; - } - - state.references = state.references.concat(state.candidates.map(({ - path - }) => path)); - - const start = _core.types.numericLiteral(paramsCount); - - const key = scope.generateUidIdentifier("key"); - const len = scope.generateUidIdentifier("len"); - let arrKey, arrLen; - - if (paramsCount) { - arrKey = _core.types.binaryExpression("-", _core.types.cloneNode(key), _core.types.cloneNode(start)); - arrLen = _core.types.conditionalExpression(_core.types.binaryExpression(">", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.binaryExpression("-", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.numericLiteral(0)); - } else { - arrKey = _core.types.identifier(key.name); - arrLen = _core.types.identifier(len.name); - } - - const loop = buildRest({ - ARGUMENTS: argsId, - ARRAY_KEY: arrKey, - ARRAY_LEN: arrLen, - START: start, - ARRAY: rest, - KEY: key, - LEN: len - }); - - if (state.deopted) { - node.body.body.unshift(loop); - } else { - let target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent(); - target.findParent(path => { - if (path.isLoop()) { - target = path; - } else { - return path.isFunction(); - } - }); - target.insertBefore(loop); - } - - return true; -} - -/***/ }), - -/***/ 39497: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.declare = declare; - -function declare(builder) { - return (api, options, dirname) => { - var _clonedApi2; - - let clonedApi; - - for (const name of Object.keys(apiPolyfills)) { - var _clonedApi; - - if (api[name]) continue; - clonedApi = (_clonedApi = clonedApi) != null ? _clonedApi : copyApiObject(api); - clonedApi[name] = apiPolyfills[name](clonedApi); - } - - return builder((_clonedApi2 = clonedApi) != null ? _clonedApi2 : api, options || {}, dirname); - }; -} - -const apiPolyfills = { - assertVersion: api => range => { - throwVersionError(range, api.version); - }, - targets: () => () => { - return {}; - }, - assumption: () => () => {} -}; - -function copyApiObject(api) { - let proto = null; - - if (typeof api.version === "string" && /^7\./.test(api.version)) { - proto = Object.getPrototypeOf(api); - - if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) { - proto = null; - } - } - - return Object.assign({}, proto, api); -} - -function has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function throwVersionError(range, version) { - if (typeof range === "number") { - if (!Number.isInteger(range)) { - throw new Error("Expected string or integer value."); - } - - range = `^${range}.0.0-0`; - } - - if (typeof range !== "string") { - throw new Error("Expected string or integer value."); - } - - const limit = Error.stackTraceLimit; - - if (typeof limit === "number" && limit < 25) { - Error.stackTraceLimit = 25; - } - - let err; - - if (version.slice(0, 2) === "7.") { - err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); - } else { - err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); - } - - if (typeof limit === "number") { - Error.stackTraceLimit = limit; - } - - throw Object.assign(err, { - code: "BABEL_VERSION_UNSUPPORTED", - version, - range - }); -} - -/***/ }), - -/***/ 54309: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = createTemplateBuilder; - -var _options = __nccwpck_require__(44578); - -var _string = __nccwpck_require__(40351); - -var _literal = __nccwpck_require__(65932); - -const NO_PLACEHOLDER = (0, _options.validate)({ - placeholderPattern: false -}); - -function createTemplateBuilder(formatter, defaultOpts) { - const templateFnCache = new WeakMap(); - const templateAstCache = new WeakMap(); - const cachedOpts = defaultOpts || (0, _options.validate)(null); - return Object.assign((tpl, ...args) => { - if (typeof tpl === "string") { - if (args.length > 1) throw new Error("Unexpected extra params."); - return extendedTrace((0, _string.default)(formatter, tpl, (0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])))); - } else if (Array.isArray(tpl)) { - let builder = templateFnCache.get(tpl); - - if (!builder) { - builder = (0, _literal.default)(formatter, tpl, cachedOpts); - templateFnCache.set(tpl, builder); - } - - return extendedTrace(builder(args)); - } else if (typeof tpl === "object" && tpl) { - if (args.length > 0) throw new Error("Unexpected extra params."); - return createTemplateBuilder(formatter, (0, _options.merge)(cachedOpts, (0, _options.validate)(tpl))); - } - - throw new Error(`Unexpected template param ${typeof tpl}`); - }, { - ast: (tpl, ...args) => { - if (typeof tpl === "string") { - if (args.length > 1) throw new Error("Unexpected extra params."); - return (0, _string.default)(formatter, tpl, (0, _options.merge)((0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])), NO_PLACEHOLDER))(); - } else if (Array.isArray(tpl)) { - let builder = templateAstCache.get(tpl); - - if (!builder) { - builder = (0, _literal.default)(formatter, tpl, (0, _options.merge)(cachedOpts, NO_PLACEHOLDER)); - templateAstCache.set(tpl, builder); - } - - return builder(args)(); - } - - throw new Error(`Unexpected template param ${typeof tpl}`); - } - }); -} - -function extendedTrace(fn) { - let rootStack = ""; - - try { - throw new Error(); - } catch (error) { - if (error.stack) { - rootStack = error.stack.split("\n").slice(3).join("\n"); - } - } - - return arg => { - try { - return fn(arg); - } catch (err) { - err.stack += `\n =============\n${rootStack}`; - throw err; - } - }; -} - -/***/ }), - -/***/ 47522: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.program = exports.expression = exports.statement = exports.statements = exports.smart = void 0; - -var t = __nccwpck_require__(24479); - -function makeStatementFormatter(fn) { - return { - code: str => `/* @babel/template */;\n${str}`, - validate: () => {}, - unwrap: ast => { - return fn(ast.program.body.slice(1)); - } - }; -} - -const smart = makeStatementFormatter(body => { - if (body.length > 1) { - return body; - } else { - return body[0]; - } -}); -exports.smart = smart; -const statements = makeStatementFormatter(body => body); -exports.statements = statements; -const statement = makeStatementFormatter(body => { - if (body.length === 0) { - throw new Error("Found nothing to return."); - } - - if (body.length > 1) { - throw new Error("Found multiple statements but wanted one"); - } - - return body[0]; -}); -exports.statement = statement; -const expression = { - code: str => `(\n${str}\n)`, - validate: ast => { - if (ast.program.body.length > 1) { - throw new Error("Found multiple statements but wanted one"); - } - - if (expression.unwrap(ast).start === 0) { - throw new Error("Parse result included parens."); - } - }, - unwrap: ({ - program - }) => { - const [stmt] = program.body; - t.assertExpressionStatement(stmt); - return stmt.expression; - } -}; -exports.expression = expression; -const program = { - code: str => str, - validate: () => {}, - unwrap: ast => ast.program -}; -exports.program = program; - -/***/ }), - -/***/ 20153: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = exports.program = exports.expression = exports.statements = exports.statement = exports.smart = void 0; - -var formatters = __nccwpck_require__(47522); - -var _builder = __nccwpck_require__(54309); - -const smart = (0, _builder.default)(formatters.smart); -exports.smart = smart; -const statement = (0, _builder.default)(formatters.statement); -exports.statement = statement; -const statements = (0, _builder.default)(formatters.statements); -exports.statements = statements; -const expression = (0, _builder.default)(formatters.expression); -exports.expression = expression; -const program = (0, _builder.default)(formatters.program); -exports.program = program; - -var _default = Object.assign(smart.bind(undefined), { - smart, - statement, - statements, - expression, - program, - ast: smart.ast -}); - -exports["default"] = _default; - -/***/ }), - -/***/ 65932: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = literalTemplate; - -var _options = __nccwpck_require__(44578); - -var _parse = __nccwpck_require__(98502); - -var _populate = __nccwpck_require__(17635); - -function literalTemplate(formatter, tpl, opts) { - const { - metadata, - names - } = buildLiteralData(formatter, tpl, opts); - return arg => { - const defaultReplacements = {}; - arg.forEach((replacement, i) => { - defaultReplacements[names[i]] = replacement; - }); - return arg => { - const replacements = (0, _options.normalizeReplacements)(arg); - - if (replacements) { - Object.keys(replacements).forEach(key => { - if (Object.prototype.hasOwnProperty.call(defaultReplacements, key)) { - throw new Error("Unexpected replacement overlap."); - } - }); - } - - return formatter.unwrap((0, _populate.default)(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements)); - }; - }; -} - -function buildLiteralData(formatter, tpl, opts) { - let names; - let nameSet; - let metadata; - let prefix = ""; - - do { - prefix += "$"; - const result = buildTemplateCode(tpl, prefix); - names = result.names; - nameSet = new Set(names); - metadata = (0, _parse.default)(formatter, formatter.code(result.code), { - parser: opts.parser, - placeholderWhitelist: new Set(result.names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])), - placeholderPattern: opts.placeholderPattern, - preserveComments: opts.preserveComments, - syntacticPlaceholders: opts.syntacticPlaceholders - }); - } while (metadata.placeholders.some(placeholder => placeholder.isDuplicate && nameSet.has(placeholder.name))); - - return { - metadata, - names - }; -} - -function buildTemplateCode(tpl, prefix) { - const names = []; - let code = tpl[0]; - - for (let i = 1; i < tpl.length; i++) { - const value = `${prefix}${i - 1}`; - names.push(value); - code += value + tpl[i]; - } - - return { - names, - code - }; -} - -/***/ }), - -/***/ 44578: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.merge = merge; -exports.validate = validate; -exports.normalizeReplacements = normalizeReplacements; - -function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } - -function merge(a, b) { - const { - placeholderWhitelist = a.placeholderWhitelist, - placeholderPattern = a.placeholderPattern, - preserveComments = a.preserveComments, - syntacticPlaceholders = a.syntacticPlaceholders - } = b; - return { - parser: Object.assign({}, a.parser, b.parser), - placeholderWhitelist, - placeholderPattern, - preserveComments, - syntacticPlaceholders - }; -} - -function validate(opts) { - if (opts != null && typeof opts !== "object") { - throw new Error("Unknown template options."); - } - - const _ref = opts || {}, - { - placeholderWhitelist, - placeholderPattern, - preserveComments, - syntacticPlaceholders - } = _ref, - parser = _objectWithoutPropertiesLoose(_ref, ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"]); - - if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) { - throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined"); - } - - if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) { - throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined"); - } - - if (preserveComments != null && typeof preserveComments !== "boolean") { - throw new Error("'.preserveComments' must be a boolean, null, or undefined"); - } - - if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") { - throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined"); - } - - if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) { - throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'"); - } - - return { - parser, - placeholderWhitelist: placeholderWhitelist || undefined, - placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern, - preserveComments: preserveComments == null ? undefined : preserveComments, - syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders - }; -} - -function normalizeReplacements(replacements) { - if (Array.isArray(replacements)) { - return replacements.reduce((acc, replacement, i) => { - acc["$" + i] = replacement; - return acc; - }, {}); - } else if (typeof replacements === "object" || replacements == null) { - return replacements || undefined; - } - - throw new Error("Template replacements must be an array, object, null, or undefined"); -} - -/***/ }), - -/***/ 98502: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = parseAndBuildMetadata; - -var t = __nccwpck_require__(24479); - -var _parser = __nccwpck_require__(89302); - -var _codeFrame = __nccwpck_require__(47548); - -const PATTERN = /^[_$A-Z0-9]+$/; - -function parseAndBuildMetadata(formatter, code, opts) { - const { - placeholderWhitelist, - placeholderPattern, - preserveComments, - syntacticPlaceholders - } = opts; - const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders); - t.removePropertiesDeep(ast, { - preserveComments - }); - formatter.validate(ast); - const syntactic = { - placeholders: [], - placeholderNames: new Set() - }; - const legacy = { - placeholders: [], - placeholderNames: new Set() - }; - const isLegacyRef = { - value: undefined - }; - t.traverse(ast, placeholderVisitorHandler, { - syntactic, - legacy, - isLegacyRef, - placeholderWhitelist, - placeholderPattern, - syntacticPlaceholders - }); - return Object.assign({ - ast - }, isLegacyRef.value ? legacy : syntactic); -} - -function placeholderVisitorHandler(node, ancestors, state) { - var _state$placeholderWhi; - - let name; - - if (t.isPlaceholder(node)) { - if (state.syntacticPlaceholders === false) { - throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false."); - } else { - name = node.name.name; - state.isLegacyRef.value = false; - } - } else if (state.isLegacyRef.value === false || state.syntacticPlaceholders) { - return; - } else if (t.isIdentifier(node) || t.isJSXIdentifier(node)) { - name = node.name; - state.isLegacyRef.value = true; - } else if (t.isStringLiteral(node)) { - name = node.value; - state.isLegacyRef.value = true; - } else { - return; - } - - if (!state.isLegacyRef.value && (state.placeholderPattern != null || state.placeholderWhitelist != null)) { - throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'"); - } - - if (state.isLegacyRef.value && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) { - return; - } - - ancestors = ancestors.slice(); - const { - node: parent, - key - } = ancestors[ancestors.length - 1]; - let type; - - if (t.isStringLiteral(node) || t.isPlaceholder(node, { - expectedNode: "StringLiteral" - })) { - type = "string"; - } else if (t.isNewExpression(parent) && key === "arguments" || t.isCallExpression(parent) && key === "arguments" || t.isFunction(parent) && key === "params") { - type = "param"; - } else if (t.isExpressionStatement(parent) && !t.isPlaceholder(node)) { - type = "statement"; - ancestors = ancestors.slice(0, -1); - } else if (t.isStatement(node) && t.isPlaceholder(node)) { - type = "statement"; - } else { - type = "other"; - } - - const { - placeholders, - placeholderNames - } = state.isLegacyRef.value ? state.legacy : state.syntactic; - placeholders.push({ - name, - type, - resolve: ast => resolveAncestors(ast, ancestors), - isDuplicate: placeholderNames.has(name) - }); - placeholderNames.add(name); -} - -function resolveAncestors(ast, ancestors) { - let parent = ast; - - for (let i = 0; i < ancestors.length - 1; i++) { - const { - key, - index - } = ancestors[i]; - - if (index === undefined) { - parent = parent[key]; - } else { - parent = parent[key][index]; - } - } - - const { - key, - index - } = ancestors[ancestors.length - 1]; - return { - parent, - key, - index - }; -} - -function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) { - const plugins = (parserOpts.plugins || []).slice(); - - if (syntacticPlaceholders !== false) { - plugins.push("placeholders"); - } - - parserOpts = Object.assign({ - allowReturnOutsideFunction: true, - allowSuperOutsideMethod: true, - sourceType: "module" - }, parserOpts, { - plugins - }); - - try { - return (0, _parser.parse)(code, parserOpts); - } catch (err) { - const loc = err.loc; - - if (loc) { - err.message += "\n" + (0, _codeFrame.codeFrameColumns)(code, { - start: loc - }); - err.code = "BABEL_TEMPLATE_PARSE_ERROR"; - } - - throw err; - } -} - -/***/ }), - -/***/ 17635: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = populatePlaceholders; - -var t = __nccwpck_require__(24479); - -function populatePlaceholders(metadata, replacements) { - const ast = t.cloneNode(metadata.ast); - - if (replacements) { - metadata.placeholders.forEach(placeholder => { - if (!Object.prototype.hasOwnProperty.call(replacements, placeholder.name)) { - const placeholderName = placeholder.name; - throw new Error(`Error: No substitution given for "${placeholderName}". If this is not meant to be a - placeholder you may want to consider passing one of the following options to @babel/template: - - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])} - - { placeholderPattern: /^${placeholderName}$/ }`); - } - }); - Object.keys(replacements).forEach(key => { - if (!metadata.placeholderNames.has(key)) { - throw new Error(`Unknown substitution "${key}" given`); - } - }); - } - - metadata.placeholders.slice().reverse().forEach(placeholder => { - try { - applyReplacement(placeholder, ast, replacements && replacements[placeholder.name] || null); - } catch (e) { - e.message = `@babel/template placeholder "${placeholder.name}": ${e.message}`; - throw e; - } - }); - return ast; -} - -function applyReplacement(placeholder, ast, replacement) { - if (placeholder.isDuplicate) { - if (Array.isArray(replacement)) { - replacement = replacement.map(node => t.cloneNode(node)); - } else if (typeof replacement === "object") { - replacement = t.cloneNode(replacement); - } - } - - const { - parent, - key, - index - } = placeholder.resolve(ast); - - if (placeholder.type === "string") { - if (typeof replacement === "string") { - replacement = t.stringLiteral(replacement); - } - - if (!replacement || !t.isStringLiteral(replacement)) { - throw new Error("Expected string substitution"); - } - } else if (placeholder.type === "statement") { - if (index === undefined) { - if (!replacement) { - replacement = t.emptyStatement(); - } else if (Array.isArray(replacement)) { - replacement = t.blockStatement(replacement); - } else if (typeof replacement === "string") { - replacement = t.expressionStatement(t.identifier(replacement)); - } else if (!t.isStatement(replacement)) { - replacement = t.expressionStatement(replacement); - } - } else { - if (replacement && !Array.isArray(replacement)) { - if (typeof replacement === "string") { - replacement = t.identifier(replacement); - } - - if (!t.isStatement(replacement)) { - replacement = t.expressionStatement(replacement); - } - } - } - } else if (placeholder.type === "param") { - if (typeof replacement === "string") { - replacement = t.identifier(replacement); - } - - if (index === undefined) throw new Error("Assertion failure."); - } else { - if (typeof replacement === "string") { - replacement = t.identifier(replacement); - } - - if (Array.isArray(replacement)) { - throw new Error("Cannot replace single expression with an array."); - } - } - - if (index === undefined) { - t.validate(parent, key, replacement); - parent[key] = replacement; - } else { - const items = parent[key].slice(); - - if (placeholder.type === "statement" || placeholder.type === "param") { - if (replacement == null) { - items.splice(index, 1); - } else if (Array.isArray(replacement)) { - items.splice(index, 1, ...replacement); - } else { - items[index] = replacement; - } - } else { - items[index] = replacement; - } - - t.validate(parent, key, items); - parent[key] = items; - } -} - -/***/ }), - -/***/ 40351: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = stringTemplate; - -var _options = __nccwpck_require__(44578); - -var _parse = __nccwpck_require__(98502); - -var _populate = __nccwpck_require__(17635); - -function stringTemplate(formatter, code, opts) { - code = formatter.code(code); - let metadata; - return arg => { - const replacements = (0, _options.normalizeReplacements)(arg); - if (!metadata) metadata = (0, _parse.default)(formatter, code, opts); - return formatter.unwrap((0, _populate.default)(metadata, replacements)); - }; -} - -/***/ }), - -/***/ 58897: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.clear = clear; -exports.clearPath = clearPath; -exports.clearScope = clearScope; -exports.scope = exports.path = void 0; -let path = new WeakMap(); -exports.path = path; -let scope = new WeakMap(); -exports.scope = scope; - -function clear() { - clearPath(); - clearScope(); -} - -function clearPath() { - exports.path = path = new WeakMap(); -} - -function clearScope() { - exports.scope = scope = new WeakMap(); -} - -/***/ }), - -/***/ 11034: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _path = __nccwpck_require__(58308); - -var t = __nccwpck_require__(24479); - -class TraversalContext { - constructor(scope, opts, state, parentPath) { - this.queue = null; - this.priorityQueue = null; - this.parentPath = parentPath; - this.scope = scope; - this.state = state; - this.opts = opts; - } - - shouldVisit(node) { - const opts = this.opts; - if (opts.enter || opts.exit) return true; - if (opts[node.type]) return true; - const keys = t.VISITOR_KEYS[node.type]; - if (!(keys != null && keys.length)) return false; - - for (const key of keys) { - if (node[key]) return true; - } - - return false; - } - - create(node, obj, key, listKey) { - return _path.default.get({ - parentPath: this.parentPath, - parent: node, - container: obj, - key: key, - listKey - }); - } - - maybeQueue(path, notPriority) { - if (this.queue) { - if (notPriority) { - this.queue.push(path); - } else { - this.priorityQueue.push(path); - } - } - } - - visitMultiple(container, parent, listKey) { - if (container.length === 0) return false; - const queue = []; - - for (let key = 0; key < container.length; key++) { - const node = container[key]; - - if (node && this.shouldVisit(node)) { - queue.push(this.create(parent, container, key, listKey)); - } - } - - return this.visitQueue(queue); - } - - visitSingle(node, key) { - if (this.shouldVisit(node[key])) { - return this.visitQueue([this.create(node, node, key)]); - } else { - return false; - } - } - - visitQueue(queue) { - this.queue = queue; - this.priorityQueue = []; - const visited = new WeakSet(); - let stop = false; - - for (const path of queue) { - path.resync(); - - if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== this) { - path.pushContext(this); - } - - if (path.key === null) continue; - const { - node - } = path; - if (visited.has(node)) continue; - if (node) visited.add(node); - - if (path.visit()) { - stop = true; - break; - } - - if (this.priorityQueue.length) { - stop = this.visitQueue(this.priorityQueue); - this.priorityQueue = []; - this.queue = queue; - if (stop) break; - } - } - - for (const path of queue) { - path.popContext(); - } - - this.queue = null; - return stop; - } - - visit(node, key) { - const nodes = node[key]; - if (!nodes) return false; - - if (Array.isArray(nodes)) { - return this.visitMultiple(nodes, node, key); - } else { - return this.visitSingle(node, key); - } - } - -} - -exports["default"] = TraversalContext; - -/***/ }), - -/***/ 46638: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -class Hub { - getCode() {} - - getScope() {} - - addHelper() { - throw new Error("Helpers are not supported by the default hub."); - } - - buildError(node, msg, Error = TypeError) { - return new Error(msg); - } - -} - -exports["default"] = Hub; - -/***/ }), - -/***/ 8631: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "NodePath", ({ - enumerable: true, - get: function () { - return _path.default; - } -})); -Object.defineProperty(exports, "Scope", ({ - enumerable: true, - get: function () { - return _scope.default; - } -})); -Object.defineProperty(exports, "Hub", ({ - enumerable: true, - get: function () { - return _hub.default; - } -})); -exports.visitors = exports["default"] = void 0; - -var _context = __nccwpck_require__(11034); - -var visitors = __nccwpck_require__(93314); - -exports.visitors = visitors; - -var t = __nccwpck_require__(24479); - -var cache = __nccwpck_require__(58897); - -var _path = __nccwpck_require__(58308); - -var _scope = __nccwpck_require__(85079); - -var _hub = __nccwpck_require__(46638); - -function traverse(parent, opts = {}, scope, state, parentPath) { - if (!parent) return; - - if (!opts.noScope && !scope) { - if (parent.type !== "Program" && parent.type !== "File") { - throw new Error("You must pass a scope and parentPath unless traversing a Program/File. " + `Instead of that you tried to traverse a ${parent.type} node without ` + "passing scope and parentPath."); - } - } - - if (!t.VISITOR_KEYS[parent.type]) { - return; - } - - visitors.explode(opts); - traverse.node(parent, opts, scope, state, parentPath); -} - -var _default = traverse; -exports["default"] = _default; -traverse.visitors = visitors; -traverse.verify = visitors.verify; -traverse.explode = visitors.explode; - -traverse.cheap = function (node, enter) { - return t.traverseFast(node, enter); -}; - -traverse.node = function (node, opts, scope, state, parentPath, skipKeys) { - const keys = t.VISITOR_KEYS[node.type]; - if (!keys) return; - const context = new _context.default(scope, opts, state, parentPath); - - for (const key of keys) { - if (skipKeys && skipKeys[key]) continue; - if (context.visit(node, key)) return; - } -}; - -traverse.clearNode = function (node, opts) { - t.removeProperties(node, opts); - cache.path.delete(node); -}; - -traverse.removeProperties = function (tree, opts) { - t.traverseFast(tree, traverse.clearNode, opts); - return tree; -}; - -function hasDenylistedType(path, state) { - if (path.node.type === state.type) { - state.has = true; - path.stop(); - } -} - -traverse.hasType = function (tree, type, denylistTypes) { - if (denylistTypes != null && denylistTypes.includes(tree.type)) return false; - if (tree.type === type) return true; - const state = { - has: false, - type: type - }; - traverse(tree, { - noScope: true, - denylist: denylistTypes, - enter: hasDenylistedType - }, null, state); - return state.has; -}; - -traverse.cache = cache; - -/***/ }), - -/***/ 7178: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.findParent = findParent; -exports.find = find; -exports.getFunctionParent = getFunctionParent; -exports.getStatementParent = getStatementParent; -exports.getEarliestCommonAncestorFrom = getEarliestCommonAncestorFrom; -exports.getDeepestCommonAncestorFrom = getDeepestCommonAncestorFrom; -exports.getAncestry = getAncestry; -exports.isAncestor = isAncestor; -exports.isDescendant = isDescendant; -exports.inType = inType; - -var t = __nccwpck_require__(24479); - -var _index = __nccwpck_require__(58308); - -function findParent(callback) { - let path = this; - - while (path = path.parentPath) { - if (callback(path)) return path; - } - - return null; -} - -function find(callback) { - let path = this; - - do { - if (callback(path)) return path; - } while (path = path.parentPath); - - return null; -} - -function getFunctionParent() { - return this.findParent(p => p.isFunction()); -} - -function getStatementParent() { - let path = this; - - do { - if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) { - break; - } else { - path = path.parentPath; - } - } while (path); - - if (path && (path.isProgram() || path.isFile())) { - throw new Error("File/Program node, we can't possibly find a statement parent to this"); - } - - return path; -} - -function getEarliestCommonAncestorFrom(paths) { - return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) { - let earliest; - const keys = t.VISITOR_KEYS[deepest.type]; - - for (const ancestry of ancestries) { - const path = ancestry[i + 1]; - - if (!earliest) { - earliest = path; - continue; - } - - if (path.listKey && earliest.listKey === path.listKey) { - if (path.key < earliest.key) { - earliest = path; - continue; - } - } - - const earliestKeyIndex = keys.indexOf(earliest.parentKey); - const currentKeyIndex = keys.indexOf(path.parentKey); - - if (earliestKeyIndex > currentKeyIndex) { - earliest = path; - } - } - - return earliest; - }); -} - -function getDeepestCommonAncestorFrom(paths, filter) { - if (!paths.length) { - return this; - } - - if (paths.length === 1) { - return paths[0]; - } - - let minDepth = Infinity; - let lastCommonIndex, lastCommon; - const ancestries = paths.map(path => { - const ancestry = []; - - do { - ancestry.unshift(path); - } while ((path = path.parentPath) && path !== this); - - if (ancestry.length < minDepth) { - minDepth = ancestry.length; - } - - return ancestry; - }); - const first = ancestries[0]; - - depthLoop: for (let i = 0; i < minDepth; i++) { - const shouldMatch = first[i]; - - for (const ancestry of ancestries) { - if (ancestry[i] !== shouldMatch) { - break depthLoop; - } - } - - lastCommonIndex = i; - lastCommon = shouldMatch; - } - - if (lastCommon) { - if (filter) { - return filter(lastCommon, lastCommonIndex, ancestries); - } else { - return lastCommon; - } - } else { - throw new Error("Couldn't find intersection"); - } -} - -function getAncestry() { - let path = this; - const paths = []; - - do { - paths.push(path); - } while (path = path.parentPath); - - return paths; -} - -function isAncestor(maybeDescendant) { - return maybeDescendant.isDescendant(this); -} - -function isDescendant(maybeAncestor) { - return !!this.findParent(parent => parent === maybeAncestor); -} - -function inType(...candidateTypes) { - let path = this; - - while (path) { - for (const type of candidateTypes) { - if (path.node.type === type) return true; - } - - path = path.parentPath; - } - - return false; -} - -/***/ }), - -/***/ 41022: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.shareCommentsWithSiblings = shareCommentsWithSiblings; -exports.addComment = addComment; -exports.addComments = addComments; - -var t = __nccwpck_require__(24479); - -function shareCommentsWithSiblings() { - if (typeof this.key === "string") return; - const node = this.node; - if (!node) return; - const trailing = node.trailingComments; - const leading = node.leadingComments; - if (!trailing && !leading) return; - const prev = this.getSibling(this.key - 1); - const next = this.getSibling(this.key + 1); - const hasPrev = Boolean(prev.node); - const hasNext = Boolean(next.node); - - if (hasPrev && !hasNext) { - prev.addComments("trailing", trailing); - } else if (hasNext && !hasPrev) { - next.addComments("leading", leading); - } -} - -function addComment(type, content, line) { - t.addComment(this.node, type, content, line); -} - -function addComments(type, comments) { - t.addComments(this.node, type, comments); -} - -/***/ }), - -/***/ 47373: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.call = call; -exports._call = _call; -exports.isBlacklisted = exports.isDenylisted = isDenylisted; -exports.visit = visit; -exports.skip = skip; -exports.skipKey = skipKey; -exports.stop = stop; -exports.setScope = setScope; -exports.setContext = setContext; -exports.resync = resync; -exports._resyncParent = _resyncParent; -exports._resyncKey = _resyncKey; -exports._resyncList = _resyncList; -exports._resyncRemoved = _resyncRemoved; -exports.popContext = popContext; -exports.pushContext = pushContext; -exports.setup = setup; -exports.setKey = setKey; -exports.requeue = requeue; -exports._getQueueContexts = _getQueueContexts; - -var _index = __nccwpck_require__(8631); - -var _index2 = __nccwpck_require__(58308); - -function call(key) { - const opts = this.opts; - this.debug(key); - - if (this.node) { - if (this._call(opts[key])) return true; - } - - if (this.node) { - return this._call(opts[this.node.type] && opts[this.node.type][key]); - } - - return false; -} - -function _call(fns) { - if (!fns) return false; - - for (const fn of fns) { - if (!fn) continue; - const node = this.node; - if (!node) return true; - const ret = fn.call(this.state, this, this.state); - - if (ret && typeof ret === "object" && typeof ret.then === "function") { - throw new Error(`You appear to be using a plugin with an async traversal visitor, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); - } - - if (ret) { - throw new Error(`Unexpected return value from visitor method ${fn}`); - } - - if (this.node !== node) return true; - if (this._traverseFlags > 0) return true; - } - - return false; -} - -function isDenylisted() { - var _this$opts$denylist; - - const denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist; - return denylist && denylist.indexOf(this.node.type) > -1; -} - -function visit() { - if (!this.node) { - return false; - } - - if (this.isDenylisted()) { - return false; - } - - if (this.opts.shouldSkip && this.opts.shouldSkip(this)) { - return false; - } - - if (this.shouldSkip || this.call("enter") || this.shouldSkip) { - this.debug("Skip..."); - return this.shouldStop; - } - - this.debug("Recursing into..."); - - _index.default.node(this.node, this.opts, this.scope, this.state, this, this.skipKeys); - - this.call("exit"); - return this.shouldStop; -} - -function skip() { - this.shouldSkip = true; -} - -function skipKey(key) { - if (this.skipKeys == null) { - this.skipKeys = {}; - } - - this.skipKeys[key] = true; -} - -function stop() { - this._traverseFlags |= _index2.SHOULD_SKIP | _index2.SHOULD_STOP; -} - -function setScope() { - if (this.opts && this.opts.noScope) return; - let path = this.parentPath; - if (this.key === "key" && path.isMethod()) path = path.parentPath; - let target; - - while (path && !target) { - if (path.opts && path.opts.noScope) return; - target = path.scope; - path = path.parentPath; - } - - this.scope = this.getScope(target); - if (this.scope) this.scope.init(); -} - -function setContext(context) { - if (this.skipKeys != null) { - this.skipKeys = {}; - } - - this._traverseFlags = 0; - - if (context) { - this.context = context; - this.state = context.state; - this.opts = context.opts; - } - - this.setScope(); - return this; -} - -function resync() { - if (this.removed) return; - - this._resyncParent(); - - this._resyncList(); - - this._resyncKey(); -} - -function _resyncParent() { - if (this.parentPath) { - this.parent = this.parentPath.node; - } -} - -function _resyncKey() { - if (!this.container) return; - if (this.node === this.container[this.key]) return; - - if (Array.isArray(this.container)) { - for (let i = 0; i < this.container.length; i++) { - if (this.container[i] === this.node) { - return this.setKey(i); - } - } - } else { - for (const key of Object.keys(this.container)) { - if (this.container[key] === this.node) { - return this.setKey(key); - } - } - } - - this.key = null; -} - -function _resyncList() { - if (!this.parent || !this.inList) return; - const newContainer = this.parent[this.listKey]; - if (this.container === newContainer) return; - this.container = newContainer || null; -} - -function _resyncRemoved() { - if (this.key == null || !this.container || this.container[this.key] !== this.node) { - this._markRemoved(); - } -} - -function popContext() { - this.contexts.pop(); - - if (this.contexts.length > 0) { - this.setContext(this.contexts[this.contexts.length - 1]); - } else { - this.setContext(undefined); - } -} - -function pushContext(context) { - this.contexts.push(context); - this.setContext(context); -} - -function setup(parentPath, container, listKey, key) { - this.listKey = listKey; - this.container = container; - this.parentPath = parentPath || this.parentPath; - this.setKey(key); -} - -function setKey(key) { - var _this$node; - - this.key = key; - this.node = this.container[this.key]; - this.type = (_this$node = this.node) == null ? void 0 : _this$node.type; -} - -function requeue(pathToQueue = this) { - if (pathToQueue.removed) return; - ; - const contexts = this.contexts; - - for (const context of contexts) { - context.maybeQueue(pathToQueue); - } -} - -function _getQueueContexts() { - let path = this; - let contexts = this.contexts; - - while (!contexts.length) { - path = path.parentPath; - if (!path) break; - contexts = path.contexts; - } - - return contexts; -} - -/***/ }), - -/***/ 10981: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.toComputedKey = toComputedKey; -exports.ensureBlock = ensureBlock; -exports.arrowFunctionToShadowed = arrowFunctionToShadowed; -exports.unwrapFunctionEnvironment = unwrapFunctionEnvironment; -exports.arrowFunctionToExpression = arrowFunctionToExpression; - -var t = __nccwpck_require__(24479); - -var _helperFunctionName = __nccwpck_require__(550); - -function toComputedKey() { - let key; - - if (this.isMemberExpression()) { - key = this.node.property; - } else if (this.isProperty() || this.isMethod()) { - key = this.node.key; - } else { - throw new ReferenceError("todo"); - } - - if (!this.node.computed) { - if (t.isIdentifier(key)) key = t.stringLiteral(key.name); - } - - return key; -} - -function ensureBlock() { - const body = this.get("body"); - const bodyNode = body.node; - - if (Array.isArray(body)) { - throw new Error("Can't convert array path to a block statement"); - } - - if (!bodyNode) { - throw new Error("Can't convert node without a body"); - } - - if (body.isBlockStatement()) { - return bodyNode; - } - - const statements = []; - let stringPath = "body"; - let key; - let listKey; - - if (body.isStatement()) { - listKey = "body"; - key = 0; - statements.push(body.node); - } else { - stringPath += ".body.0"; - - if (this.isFunction()) { - key = "argument"; - statements.push(t.returnStatement(body.node)); - } else { - key = "expression"; - statements.push(t.expressionStatement(body.node)); - } - } - - this.node.body = t.blockStatement(statements); - const parentPath = this.get(stringPath); - body.setup(parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key); - return this.node; -} - -function arrowFunctionToShadowed() { - if (!this.isArrowFunctionExpression()) return; - this.arrowFunctionToExpression(); -} - -function unwrapFunctionEnvironment() { - if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) { - throw this.buildCodeFrameError("Can only unwrap the environment of a function."); - } - - hoistFunctionEnvironment(this); -} - -function arrowFunctionToExpression({ - allowInsertArrow = true, - specCompliant = false, - noNewArrows = !specCompliant -} = {}) { - if (!this.isArrowFunctionExpression()) { - throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression."); - } - - const thisBinding = hoistFunctionEnvironment(this, noNewArrows, allowInsertArrow); - this.ensureBlock(); - this.node.type = "FunctionExpression"; - - if (!noNewArrows) { - const checkBinding = thisBinding ? null : this.parentPath.scope.generateUidIdentifier("arrowCheckId"); - - if (checkBinding) { - this.parentPath.scope.push({ - id: checkBinding, - init: t.objectExpression([]) - }); - } - - this.get("body").unshiftContainer("body", t.expressionStatement(t.callExpression(this.hub.addHelper("newArrowCheck"), [t.thisExpression(), checkBinding ? t.identifier(checkBinding.name) : t.identifier(thisBinding)]))); - this.replaceWith(t.callExpression(t.memberExpression((0, _helperFunctionName.default)(this, true) || this.node, t.identifier("bind")), [checkBinding ? t.identifier(checkBinding.name) : t.thisExpression()])); - } -} - -function hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = true) { - const thisEnvFn = fnPath.findParent(p => { - return p.isFunction() && !p.isArrowFunctionExpression() || p.isProgram() || p.isClassProperty({ - static: false - }); - }); - const inConstructor = (thisEnvFn == null ? void 0 : thisEnvFn.node.kind) === "constructor"; - - if (thisEnvFn.isClassProperty()) { - throw fnPath.buildCodeFrameError("Unable to transform arrow inside class property"); - } - - const { - thisPaths, - argumentsPaths, - newTargetPaths, - superProps, - superCalls - } = getScopeInformation(fnPath); - - if (inConstructor && superCalls.length > 0) { - if (!allowInsertArrow) { - throw superCalls[0].buildCodeFrameError("Unable to handle nested super() usage in arrow"); - } - - const allSuperCalls = []; - thisEnvFn.traverse({ - Function(child) { - if (child.isArrowFunctionExpression()) return; - child.skip(); - }, - - ClassProperty(child) { - child.skip(); - }, - - CallExpression(child) { - if (!child.get("callee").isSuper()) return; - allSuperCalls.push(child); - } - - }); - const superBinding = getSuperBinding(thisEnvFn); - allSuperCalls.forEach(superCall => { - const callee = t.identifier(superBinding); - callee.loc = superCall.node.callee.loc; - superCall.get("callee").replaceWith(callee); - }); - } - - if (argumentsPaths.length > 0) { - const argumentsBinding = getBinding(thisEnvFn, "arguments", () => { - const args = () => t.identifier("arguments"); - - if (thisEnvFn.scope.path.isProgram()) { - return t.conditionalExpression(t.binaryExpression("===", t.unaryExpression("typeof", args()), t.stringLiteral("undefined")), thisEnvFn.scope.buildUndefinedNode(), args()); - } else { - return args(); - } - }); - argumentsPaths.forEach(argumentsChild => { - const argsRef = t.identifier(argumentsBinding); - argsRef.loc = argumentsChild.node.loc; - argumentsChild.replaceWith(argsRef); - }); - } - - if (newTargetPaths.length > 0) { - const newTargetBinding = getBinding(thisEnvFn, "newtarget", () => t.metaProperty(t.identifier("new"), t.identifier("target"))); - newTargetPaths.forEach(targetChild => { - const targetRef = t.identifier(newTargetBinding); - targetRef.loc = targetChild.node.loc; - targetChild.replaceWith(targetRef); - }); - } - - if (superProps.length > 0) { - if (!allowInsertArrow) { - throw superProps[0].buildCodeFrameError("Unable to handle nested super.prop usage"); - } - - const flatSuperProps = superProps.reduce((acc, superProp) => acc.concat(standardizeSuperProperty(superProp)), []); - flatSuperProps.forEach(superProp => { - const key = superProp.node.computed ? "" : superProp.get("property").node.name; - const isAssignment = superProp.parentPath.isAssignmentExpression({ - left: superProp.node - }); - const isCall = superProp.parentPath.isCallExpression({ - callee: superProp.node - }); - const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key); - const args = []; - - if (superProp.node.computed) { - args.push(superProp.get("property").node); - } - - if (isAssignment) { - const value = superProp.parentPath.node.right; - args.push(value); - } - - const call = t.callExpression(t.identifier(superBinding), args); - - if (isCall) { - superProp.parentPath.unshiftContainer("arguments", t.thisExpression()); - superProp.replaceWith(t.memberExpression(call, t.identifier("call"))); - thisPaths.push(superProp.parentPath.get("arguments.0")); - } else if (isAssignment) { - superProp.parentPath.replaceWith(call); - } else { - superProp.replaceWith(call); - } - }); - } - - let thisBinding; - - if (thisPaths.length > 0 || !noNewArrows) { - thisBinding = getThisBinding(thisEnvFn, inConstructor); - - if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) { - thisPaths.forEach(thisChild => { - const thisRef = thisChild.isJSX() ? t.jsxIdentifier(thisBinding) : t.identifier(thisBinding); - thisRef.loc = thisChild.node.loc; - thisChild.replaceWith(thisRef); - }); - if (!noNewArrows) thisBinding = null; - } - } - - return thisBinding; -} - -function standardizeSuperProperty(superProp) { - if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== "=") { - const assignmentPath = superProp.parentPath; - const op = assignmentPath.node.operator.slice(0, -1); - const value = assignmentPath.node.right; - assignmentPath.node.operator = "="; - - if (superProp.node.computed) { - const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp"); - assignmentPath.get("left").replaceWith(t.memberExpression(superProp.node.object, t.assignmentExpression("=", tmp, superProp.node.property), true)); - assignmentPath.get("right").replaceWith(t.binaryExpression(op, t.memberExpression(superProp.node.object, t.identifier(tmp.name), true), value)); - } else { - assignmentPath.get("left").replaceWith(t.memberExpression(superProp.node.object, superProp.node.property)); - assignmentPath.get("right").replaceWith(t.binaryExpression(op, t.memberExpression(superProp.node.object, t.identifier(superProp.node.property.name)), value)); - } - - return [assignmentPath.get("left"), assignmentPath.get("right").get("left")]; - } else if (superProp.parentPath.isUpdateExpression()) { - const updateExpr = superProp.parentPath; - const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp"); - const computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier("prop") : null; - const parts = [t.assignmentExpression("=", tmp, t.memberExpression(superProp.node.object, computedKey ? t.assignmentExpression("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), t.assignmentExpression("=", t.memberExpression(superProp.node.object, computedKey ? t.identifier(computedKey.name) : superProp.node.property, superProp.node.computed), t.binaryExpression("+", t.identifier(tmp.name), t.numericLiteral(1)))]; - - if (!superProp.parentPath.node.prefix) { - parts.push(t.identifier(tmp.name)); - } - - updateExpr.replaceWith(t.sequenceExpression(parts)); - const left = updateExpr.get("expressions.0.right"); - const right = updateExpr.get("expressions.1.left"); - return [left, right]; - } - - return [superProp]; -} - -function hasSuperClass(thisEnvFn) { - return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass; -} - -function getThisBinding(thisEnvFn, inConstructor) { - return getBinding(thisEnvFn, "this", thisBinding => { - if (!inConstructor || !hasSuperClass(thisEnvFn)) return t.thisExpression(); - const supers = new WeakSet(); - thisEnvFn.traverse({ - Function(child) { - if (child.isArrowFunctionExpression()) return; - child.skip(); - }, - - ClassProperty(child) { - child.skip(); - }, - - CallExpression(child) { - if (!child.get("callee").isSuper()) return; - if (supers.has(child.node)) return; - supers.add(child.node); - child.replaceWithMultiple([child.node, t.assignmentExpression("=", t.identifier(thisBinding), t.identifier("this"))]); - } - - }); - }); -} - -function getSuperBinding(thisEnvFn) { - return getBinding(thisEnvFn, "supercall", () => { - const argsBinding = thisEnvFn.scope.generateUidIdentifier("args"); - return t.arrowFunctionExpression([t.restElement(argsBinding)], t.callExpression(t.super(), [t.spreadElement(t.identifier(argsBinding.name))])); - }); -} - -function getSuperPropBinding(thisEnvFn, isAssignment, propName) { - const op = isAssignment ? "set" : "get"; - return getBinding(thisEnvFn, `superprop_${op}:${propName || ""}`, () => { - const argsList = []; - let fnBody; - - if (propName) { - fnBody = t.memberExpression(t.super(), t.identifier(propName)); - } else { - const method = thisEnvFn.scope.generateUidIdentifier("prop"); - argsList.unshift(method); - fnBody = t.memberExpression(t.super(), t.identifier(method.name), true); - } - - if (isAssignment) { - const valueIdent = thisEnvFn.scope.generateUidIdentifier("value"); - argsList.push(valueIdent); - fnBody = t.assignmentExpression("=", fnBody, t.identifier(valueIdent.name)); - } - - return t.arrowFunctionExpression(argsList, fnBody); - }); -} - -function getBinding(thisEnvFn, key, init) { - const cacheKey = "binding:" + key; - let data = thisEnvFn.getData(cacheKey); - - if (!data) { - const id = thisEnvFn.scope.generateUidIdentifier(key); - data = id.name; - thisEnvFn.setData(cacheKey, data); - thisEnvFn.scope.push({ - id: id, - init: init(data) - }); - } - - return data; -} - -function getScopeInformation(fnPath) { - const thisPaths = []; - const argumentsPaths = []; - const newTargetPaths = []; - const superProps = []; - const superCalls = []; - fnPath.traverse({ - ClassProperty(child) { - child.skip(); - }, - - Function(child) { - if (child.isArrowFunctionExpression()) return; - child.skip(); - }, - - ThisExpression(child) { - thisPaths.push(child); - }, - - JSXIdentifier(child) { - if (child.node.name !== "this") return; - - if (!child.parentPath.isJSXMemberExpression({ - object: child.node - }) && !child.parentPath.isJSXOpeningElement({ - name: child.node - })) { - return; - } - - thisPaths.push(child); - }, - - CallExpression(child) { - if (child.get("callee").isSuper()) superCalls.push(child); - }, - - MemberExpression(child) { - if (child.get("object").isSuper()) superProps.push(child); - }, - - ReferencedIdentifier(child) { - if (child.node.name !== "arguments") return; - let curr = child.scope; - - do { - if (curr.hasOwnBinding("arguments")) { - curr.rename("arguments"); - return; - } - - if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) { - break; - } - } while (curr = curr.parent); - - argumentsPaths.push(child); - }, - - MetaProperty(child) { - if (!child.get("meta").isIdentifier({ - name: "new" - })) return; - if (!child.get("property").isIdentifier({ - name: "target" - })) return; - newTargetPaths.push(child); - } - - }); - return { - thisPaths, - argumentsPaths, - newTargetPaths, - superProps, - superCalls - }; -} - -/***/ }), - -/***/ 49890: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.evaluateTruthy = evaluateTruthy; -exports.evaluate = evaluate; -const VALID_CALLEES = ["String", "Number", "Math"]; -const INVALID_METHODS = ["random"]; - -function evaluateTruthy() { - const res = this.evaluate(); - if (res.confident) return !!res.value; -} - -function deopt(path, state) { - if (!state.confident) return; - state.deoptPath = path; - state.confident = false; -} - -function evaluateCached(path, state) { - const { - node - } = path; - const { - seen - } = state; - - if (seen.has(node)) { - const existing = seen.get(node); - - if (existing.resolved) { - return existing.value; - } else { - deopt(path, state); - return; - } - } else { - const item = { - resolved: false - }; - seen.set(node, item); - - const val = _evaluate(path, state); - - if (state.confident) { - item.resolved = true; - item.value = val; - } - - return val; - } -} - -function _evaluate(path, state) { - if (!state.confident) return; - - if (path.isSequenceExpression()) { - const exprs = path.get("expressions"); - return evaluateCached(exprs[exprs.length - 1], state); - } - - if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) { - return path.node.value; - } - - if (path.isNullLiteral()) { - return null; - } - - if (path.isTemplateLiteral()) { - return evaluateQuasis(path, path.node.quasis, state); - } - - if (path.isTaggedTemplateExpression() && path.get("tag").isMemberExpression()) { - const object = path.get("tag.object"); - const { - node: { - name - } - } = object; - const property = path.get("tag.property"); - - if (object.isIdentifier() && name === "String" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === "raw") { - return evaluateQuasis(path, path.node.quasi.quasis, state, true); - } - } - - if (path.isConditionalExpression()) { - const testResult = evaluateCached(path.get("test"), state); - if (!state.confident) return; - - if (testResult) { - return evaluateCached(path.get("consequent"), state); - } else { - return evaluateCached(path.get("alternate"), state); - } - } - - if (path.isExpressionWrapper()) { - return evaluateCached(path.get("expression"), state); - } - - if (path.isMemberExpression() && !path.parentPath.isCallExpression({ - callee: path.node - })) { - const property = path.get("property"); - const object = path.get("object"); - - if (object.isLiteral() && property.isIdentifier()) { - const value = object.node.value; - const type = typeof value; - - if (type === "number" || type === "string") { - return value[property.node.name]; - } - } - } - - if (path.isReferencedIdentifier()) { - const binding = path.scope.getBinding(path.node.name); - - if (binding && binding.constantViolations.length > 0) { - return deopt(binding.path, state); - } - - if (binding && path.node.start < binding.path.node.end) { - return deopt(binding.path, state); - } - - if (binding != null && binding.hasValue) { - return binding.value; - } else { - if (path.node.name === "undefined") { - return binding ? deopt(binding.path, state) : undefined; - } else if (path.node.name === "Infinity") { - return binding ? deopt(binding.path, state) : Infinity; - } else if (path.node.name === "NaN") { - return binding ? deopt(binding.path, state) : NaN; - } - - const resolved = path.resolve(); - - if (resolved === path) { - return deopt(path, state); - } else { - return evaluateCached(resolved, state); - } - } - } - - if (path.isUnaryExpression({ - prefix: true - })) { - if (path.node.operator === "void") { - return undefined; - } - - const argument = path.get("argument"); - - if (path.node.operator === "typeof" && (argument.isFunction() || argument.isClass())) { - return "function"; - } - - const arg = evaluateCached(argument, state); - if (!state.confident) return; - - switch (path.node.operator) { - case "!": - return !arg; - - case "+": - return +arg; - - case "-": - return -arg; - - case "~": - return ~arg; - - case "typeof": - return typeof arg; - } - } - - if (path.isArrayExpression()) { - const arr = []; - const elems = path.get("elements"); - - for (const elem of elems) { - const elemValue = elem.evaluate(); - - if (elemValue.confident) { - arr.push(elemValue.value); - } else { - return deopt(elemValue.deopt, state); - } - } - - return arr; - } - - if (path.isObjectExpression()) { - const obj = {}; - const props = path.get("properties"); - - for (const prop of props) { - if (prop.isObjectMethod() || prop.isSpreadElement()) { - return deopt(prop, state); - } - - const keyPath = prop.get("key"); - let key = keyPath; - - if (prop.node.computed) { - key = key.evaluate(); - - if (!key.confident) { - return deopt(key.deopt, state); - } - - key = key.value; - } else if (key.isIdentifier()) { - key = key.node.name; - } else { - key = key.node.value; - } - - const valuePath = prop.get("value"); - let value = valuePath.evaluate(); - - if (!value.confident) { - return deopt(value.deopt, state); - } - - value = value.value; - obj[key] = value; - } - - return obj; - } - - if (path.isLogicalExpression()) { - const wasConfident = state.confident; - const left = evaluateCached(path.get("left"), state); - const leftConfident = state.confident; - state.confident = wasConfident; - const right = evaluateCached(path.get("right"), state); - const rightConfident = state.confident; - - switch (path.node.operator) { - case "||": - state.confident = leftConfident && (!!left || rightConfident); - if (!state.confident) return; - return left || right; - - case "&&": - state.confident = leftConfident && (!left || rightConfident); - if (!state.confident) return; - return left && right; - } - } - - if (path.isBinaryExpression()) { - const left = evaluateCached(path.get("left"), state); - if (!state.confident) return; - const right = evaluateCached(path.get("right"), state); - if (!state.confident) return; - - switch (path.node.operator) { - case "-": - return left - right; - - case "+": - return left + right; - - case "/": - return left / right; - - case "*": - return left * right; - - case "%": - return left % right; - - case "**": - return Math.pow(left, right); - - case "<": - return left < right; - - case ">": - return left > right; - - case "<=": - return left <= right; - - case ">=": - return left >= right; - - case "==": - return left == right; - - case "!=": - return left != right; - - case "===": - return left === right; - - case "!==": - return left !== right; - - case "|": - return left | right; - - case "&": - return left & right; - - case "^": - return left ^ right; - - case "<<": - return left << right; - - case ">>": - return left >> right; - - case ">>>": - return left >>> right; - } - } - - if (path.isCallExpression()) { - const callee = path.get("callee"); - let context; - let func; - - if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && VALID_CALLEES.indexOf(callee.node.name) >= 0) { - func = global[callee.node.name]; - } - - if (callee.isMemberExpression()) { - const object = callee.get("object"); - const property = callee.get("property"); - - if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0 && INVALID_METHODS.indexOf(property.node.name) < 0) { - context = global[object.node.name]; - func = context[property.node.name]; - } - - if (object.isLiteral() && property.isIdentifier()) { - const type = typeof object.node.value; - - if (type === "string" || type === "number") { - context = object.node.value; - func = context[property.node.name]; - } - } - } - - if (func) { - const args = path.get("arguments").map(arg => evaluateCached(arg, state)); - if (!state.confident) return; - return func.apply(context, args); - } - } - - deopt(path, state); -} - -function evaluateQuasis(path, quasis, state, raw = false) { - let str = ""; - let i = 0; - const exprs = path.get("expressions"); - - for (const elem of quasis) { - if (!state.confident) break; - str += raw ? elem.value.raw : elem.value.cooked; - const expr = exprs[i++]; - if (expr) str += String(evaluateCached(expr, state)); - } - - if (!state.confident) return; - return str; -} - -function evaluate() { - const state = { - confident: true, - deoptPath: null, - seen: new Map() - }; - let value = evaluateCached(this, state); - if (!state.confident) value = undefined; - return { - confident: state.confident, - deopt: state.deoptPath, - value: value - }; -} - -/***/ }), - -/***/ 35730: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getOpposite = getOpposite; -exports.getCompletionRecords = getCompletionRecords; -exports.getSibling = getSibling; -exports.getPrevSibling = getPrevSibling; -exports.getNextSibling = getNextSibling; -exports.getAllNextSiblings = getAllNextSiblings; -exports.getAllPrevSiblings = getAllPrevSiblings; -exports.get = get; -exports._getKey = _getKey; -exports._getPattern = _getPattern; -exports.getBindingIdentifiers = getBindingIdentifiers; -exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers; -exports.getBindingIdentifierPaths = getBindingIdentifierPaths; -exports.getOuterBindingIdentifierPaths = getOuterBindingIdentifierPaths; - -var _index = __nccwpck_require__(58308); - -var t = __nccwpck_require__(24479); - -const NORMAL_COMPLETION = 0; -const BREAK_COMPLETION = 1; - -function NormalCompletion(path) { - return { - type: NORMAL_COMPLETION, - path - }; -} - -function BreakCompletion(path) { - return { - type: BREAK_COMPLETION, - path - }; -} - -function getOpposite() { - if (this.key === "left") { - return this.getSibling("right"); - } else if (this.key === "right") { - return this.getSibling("left"); - } - - return null; -} - -function addCompletionRecords(path, records, context) { - if (path) return records.concat(_getCompletionRecords(path, context)); - return records; -} - -function completionRecordForSwitch(cases, records, context) { - let lastNormalCompletions = []; - - for (let i = 0; i < cases.length; i++) { - const casePath = cases[i]; - - const caseCompletions = _getCompletionRecords(casePath, context); - - const normalCompletions = []; - const breakCompletions = []; - - for (const c of caseCompletions) { - if (c.type === NORMAL_COMPLETION) { - normalCompletions.push(c); - } - - if (c.type === BREAK_COMPLETION) { - breakCompletions.push(c); - } - } - - if (normalCompletions.length) { - lastNormalCompletions = normalCompletions; - } - - records = records.concat(breakCompletions); - } - - records = records.concat(lastNormalCompletions); - return records; -} - -function normalCompletionToBreak(completions) { - completions.forEach(c => { - c.type = BREAK_COMPLETION; - }); -} - -function replaceBreakStatementInBreakCompletion(completions, reachable) { - completions.forEach(c => { - if (c.path.isBreakStatement({ - label: null - })) { - if (reachable) { - c.path.replaceWith(t.unaryExpression("void", t.numericLiteral(0))); - } else { - c.path.remove(); - } - } - }); -} - -function getStatementListCompletion(paths, context) { - let completions = []; - - if (context.canHaveBreak) { - let lastNormalCompletions = []; - - for (let i = 0; i < paths.length; i++) { - const path = paths[i]; - const newContext = Object.assign({}, context, { - inCaseClause: false - }); - - if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) { - newContext.shouldPopulateBreak = true; - } else { - newContext.shouldPopulateBreak = false; - } - - const statementCompletions = _getCompletionRecords(path, newContext); - - if (statementCompletions.length > 0 && statementCompletions.every(c => c.type === BREAK_COMPLETION)) { - if (lastNormalCompletions.length > 0 && statementCompletions.every(c => c.path.isBreakStatement({ - label: null - }))) { - normalCompletionToBreak(lastNormalCompletions); - completions = completions.concat(lastNormalCompletions); - - if (lastNormalCompletions.some(c => c.path.isDeclaration())) { - completions = completions.concat(statementCompletions); - replaceBreakStatementInBreakCompletion(statementCompletions, true); - } - - replaceBreakStatementInBreakCompletion(statementCompletions, false); - } else { - completions = completions.concat(statementCompletions); - - if (!context.shouldPopulateBreak) { - replaceBreakStatementInBreakCompletion(statementCompletions, true); - } - } - - break; - } - - if (i === paths.length - 1) { - completions = completions.concat(statementCompletions); - } else { - completions = completions.concat(statementCompletions.filter(c => c.type === BREAK_COMPLETION)); - lastNormalCompletions = statementCompletions.filter(c => c.type === NORMAL_COMPLETION); - } - } - } else if (paths.length) { - for (let i = paths.length - 1; i >= 0; i--) { - const pathCompletions = _getCompletionRecords(paths[i], context); - - if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration()) { - completions = completions.concat(pathCompletions); - break; - } - } - } - - return completions; -} - -function _getCompletionRecords(path, context) { - let records = []; - - if (path.isIfStatement()) { - records = addCompletionRecords(path.get("consequent"), records, context); - records = addCompletionRecords(path.get("alternate"), records, context); - } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) { - records = addCompletionRecords(path.get("body"), records, context); - } else if (path.isProgram() || path.isBlockStatement()) { - records = records.concat(getStatementListCompletion(path.get("body"), context)); - } else if (path.isFunction()) { - return _getCompletionRecords(path.get("body"), context); - } else if (path.isTryStatement()) { - records = addCompletionRecords(path.get("block"), records, context); - records = addCompletionRecords(path.get("handler"), records, context); - } else if (path.isCatchClause()) { - records = addCompletionRecords(path.get("body"), records, context); - } else if (path.isSwitchStatement()) { - records = completionRecordForSwitch(path.get("cases"), records, context); - } else if (path.isSwitchCase()) { - records = records.concat(getStatementListCompletion(path.get("consequent"), { - canHaveBreak: true, - shouldPopulateBreak: false, - inCaseClause: true - })); - } else if (path.isBreakStatement()) { - records.push(BreakCompletion(path)); - } else { - records.push(NormalCompletion(path)); - } - - return records; -} - -function getCompletionRecords() { - const records = _getCompletionRecords(this, { - canHaveBreak: false, - shouldPopulateBreak: false, - inCaseClause: false - }); - - return records.map(r => r.path); -} - -function getSibling(key) { - return _index.default.get({ - parentPath: this.parentPath, - parent: this.parent, - container: this.container, - listKey: this.listKey, - key: key - }).setContext(this.context); -} - -function getPrevSibling() { - return this.getSibling(this.key - 1); -} - -function getNextSibling() { - return this.getSibling(this.key + 1); -} - -function getAllNextSiblings() { - let _key = this.key; - let sibling = this.getSibling(++_key); - const siblings = []; - - while (sibling.node) { - siblings.push(sibling); - sibling = this.getSibling(++_key); - } - - return siblings; -} - -function getAllPrevSiblings() { - let _key = this.key; - let sibling = this.getSibling(--_key); - const siblings = []; - - while (sibling.node) { - siblings.push(sibling); - sibling = this.getSibling(--_key); - } - - return siblings; -} - -function get(key, context = true) { - if (context === true) context = this.context; - const parts = key.split("."); - - if (parts.length === 1) { - return this._getKey(key, context); - } else { - return this._getPattern(parts, context); - } -} - -function _getKey(key, context) { - const node = this.node; - const container = node[key]; - - if (Array.isArray(container)) { - return container.map((_, i) => { - return _index.default.get({ - listKey: key, - parentPath: this, - parent: node, - container: container, - key: i - }).setContext(context); - }); - } else { - return _index.default.get({ - parentPath: this, - parent: node, - container: node, - key: key - }).setContext(context); - } -} - -function _getPattern(parts, context) { - let path = this; - - for (const part of parts) { - if (part === ".") { - path = path.parentPath; - } else { - if (Array.isArray(path)) { - path = path[part]; - } else { - path = path.get(part, context); - } - } - } - - return path; -} - -function getBindingIdentifiers(duplicates) { - return t.getBindingIdentifiers(this.node, duplicates); -} - -function getOuterBindingIdentifiers(duplicates) { - return t.getOuterBindingIdentifiers(this.node, duplicates); -} - -function getBindingIdentifierPaths(duplicates = false, outerOnly = false) { - const path = this; - let search = [].concat(path); - const ids = Object.create(null); - - while (search.length) { - const id = search.shift(); - if (!id) continue; - if (!id.node) continue; - const keys = t.getBindingIdentifiers.keys[id.node.type]; - - if (id.isIdentifier()) { - if (duplicates) { - const _ids = ids[id.node.name] = ids[id.node.name] || []; - - _ids.push(id); - } else { - ids[id.node.name] = id; - } - - continue; - } - - if (id.isExportDeclaration()) { - const declaration = id.get("declaration"); - - if (declaration.isDeclaration()) { - search.push(declaration); - } - - continue; - } - - if (outerOnly) { - if (id.isFunctionDeclaration()) { - search.push(id.get("id")); - continue; - } - - if (id.isFunctionExpression()) { - continue; - } - } - - if (keys) { - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const child = id.get(key); - - if (Array.isArray(child) || child.node) { - search = search.concat(child); - } - } - } - } - - return ids; -} - -function getOuterBindingIdentifierPaths(duplicates) { - return this.getBindingIdentifierPaths(duplicates, true); -} - -/***/ }), - -/***/ 58308: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = exports.SHOULD_SKIP = exports.SHOULD_STOP = exports.REMOVED = void 0; - -var virtualTypes = __nccwpck_require__(89637); - -var _debug = __nccwpck_require__(67984); - -var _index = __nccwpck_require__(8631); - -var _scope = __nccwpck_require__(85079); - -var t = __nccwpck_require__(24479); - -var _cache = __nccwpck_require__(58897); - -var _generator = __nccwpck_require__(52685); - -var NodePath_ancestry = __nccwpck_require__(7178); - -var NodePath_inference = __nccwpck_require__(129); - -var NodePath_replacement = __nccwpck_require__(56372); - -var NodePath_evaluation = __nccwpck_require__(49890); - -var NodePath_conversion = __nccwpck_require__(10981); - -var NodePath_introspection = __nccwpck_require__(3553); - -var NodePath_context = __nccwpck_require__(47373); - -var NodePath_removal = __nccwpck_require__(41906); - -var NodePath_modification = __nccwpck_require__(40393); - -var NodePath_family = __nccwpck_require__(35730); - -var NodePath_comments = __nccwpck_require__(41022); - -const debug = _debug("babel"); - -const REMOVED = 1 << 0; -exports.REMOVED = REMOVED; -const SHOULD_STOP = 1 << 1; -exports.SHOULD_STOP = SHOULD_STOP; -const SHOULD_SKIP = 1 << 2; -exports.SHOULD_SKIP = SHOULD_SKIP; - -class NodePath { - constructor(hub, parent) { - this.contexts = []; - this.state = null; - this.opts = null; - this._traverseFlags = 0; - this.skipKeys = null; - this.parentPath = null; - this.container = null; - this.listKey = null; - this.key = null; - this.node = null; - this.type = null; - this.parent = parent; - this.hub = hub; - this.data = null; - this.context = null; - this.scope = null; - } - - static get({ - hub, - parentPath, - parent, - container, - listKey, - key - }) { - if (!hub && parentPath) { - hub = parentPath.hub; - } - - if (!parent) { - throw new Error("To get a node path the parent needs to exist"); - } - - const targetNode = container[key]; - - let paths = _cache.path.get(parent); - - if (!paths) { - paths = new Map(); - - _cache.path.set(parent, paths); - } - - let path = paths.get(targetNode); - - if (!path) { - path = new NodePath(hub, parent); - if (targetNode) paths.set(targetNode, path); - } - - path.setup(parentPath, container, listKey, key); - return path; - } - - getScope(scope) { - return this.isScope() ? new _scope.default(this) : scope; - } - - setData(key, val) { - if (this.data == null) { - this.data = Object.create(null); - } - - return this.data[key] = val; - } - - getData(key, def) { - if (this.data == null) { - this.data = Object.create(null); - } - - let val = this.data[key]; - if (val === undefined && def !== undefined) val = this.data[key] = def; - return val; - } - - buildCodeFrameError(msg, Error = SyntaxError) { - return this.hub.buildError(this.node, msg, Error); - } - - traverse(visitor, state) { - (0, _index.default)(this.node, visitor, this.scope, state, this); - } - - set(key, node) { - t.validate(this.node, key, node); - this.node[key] = node; - } - - getPathLocation() { - const parts = []; - let path = this; - - do { - let key = path.key; - if (path.inList) key = `${path.listKey}[${key}]`; - parts.unshift(key); - } while (path = path.parentPath); - - return parts.join("."); - } - - debug(message) { - if (!debug.enabled) return; - debug(`${this.getPathLocation()} ${this.type}: ${message}`); - } - - toString() { - return (0, _generator.default)(this.node).code; - } - - get inList() { - return !!this.listKey; - } - - set inList(inList) { - if (!inList) { - this.listKey = null; - } - } - - get parentKey() { - return this.listKey || this.key; - } - - get shouldSkip() { - return !!(this._traverseFlags & SHOULD_SKIP); - } - - set shouldSkip(v) { - if (v) { - this._traverseFlags |= SHOULD_SKIP; - } else { - this._traverseFlags &= ~SHOULD_SKIP; - } - } - - get shouldStop() { - return !!(this._traverseFlags & SHOULD_STOP); - } - - set shouldStop(v) { - if (v) { - this._traverseFlags |= SHOULD_STOP; - } else { - this._traverseFlags &= ~SHOULD_STOP; - } - } - - get removed() { - return !!(this._traverseFlags & REMOVED); - } - - set removed(v) { - if (v) { - this._traverseFlags |= REMOVED; - } else { - this._traverseFlags &= ~REMOVED; - } - } - -} - -Object.assign(NodePath.prototype, NodePath_ancestry, NodePath_inference, NodePath_replacement, NodePath_evaluation, NodePath_conversion, NodePath_introspection, NodePath_context, NodePath_removal, NodePath_modification, NodePath_family, NodePath_comments); - -for (const type of t.TYPES) { - const typeKey = `is${type}`; - const fn = t[typeKey]; - - NodePath.prototype[typeKey] = function (opts) { - return fn(this.node, opts); - }; - - NodePath.prototype[`assert${type}`] = function (opts) { - if (!fn(this.node, opts)) { - throw new TypeError(`Expected node path of type ${type}`); - } - }; -} - -for (const type of Object.keys(virtualTypes)) { - if (type[0] === "_") continue; - if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type); - const virtualType = virtualTypes[type]; - - NodePath.prototype[`is${type}`] = function (opts) { - return virtualType.checkPath(this, opts); - }; -} - -var _default = NodePath; -exports["default"] = _default; - -/***/ }), - -/***/ 129: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getTypeAnnotation = getTypeAnnotation; -exports._getTypeAnnotation = _getTypeAnnotation; -exports.isBaseType = isBaseType; -exports.couldBeBaseType = couldBeBaseType; -exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches; -exports.isGenericType = isGenericType; - -var inferers = __nccwpck_require__(6); - -var t = __nccwpck_require__(24479); - -function getTypeAnnotation() { - if (this.typeAnnotation) return this.typeAnnotation; - let type = this._getTypeAnnotation() || t.anyTypeAnnotation(); - if (t.isTypeAnnotation(type)) type = type.typeAnnotation; - return this.typeAnnotation = type; -} - -const typeAnnotationInferringNodes = new WeakSet(); - -function _getTypeAnnotation() { - const node = this.node; - - if (!node) { - if (this.key === "init" && this.parentPath.isVariableDeclarator()) { - const declar = this.parentPath.parentPath; - const declarParent = declar.parentPath; - - if (declar.key === "left" && declarParent.isForInStatement()) { - return t.stringTypeAnnotation(); - } - - if (declar.key === "left" && declarParent.isForOfStatement()) { - return t.anyTypeAnnotation(); - } - - return t.voidTypeAnnotation(); - } else { - return; - } - } - - if (node.typeAnnotation) { - return node.typeAnnotation; - } - - if (typeAnnotationInferringNodes.has(node)) { - return; - } - - typeAnnotationInferringNodes.add(node); - - try { - var _inferer; - - let inferer = inferers[node.type]; - - if (inferer) { - return inferer.call(this, node); - } - - inferer = inferers[this.parentPath.type]; - - if ((_inferer = inferer) != null && _inferer.validParent) { - return this.parentPath.getTypeAnnotation(); - } - } finally { - typeAnnotationInferringNodes.delete(node); - } -} - -function isBaseType(baseName, soft) { - return _isBaseType(baseName, this.getTypeAnnotation(), soft); -} - -function _isBaseType(baseName, type, soft) { - if (baseName === "string") { - return t.isStringTypeAnnotation(type); - } else if (baseName === "number") { - return t.isNumberTypeAnnotation(type); - } else if (baseName === "boolean") { - return t.isBooleanTypeAnnotation(type); - } else if (baseName === "any") { - return t.isAnyTypeAnnotation(type); - } else if (baseName === "mixed") { - return t.isMixedTypeAnnotation(type); - } else if (baseName === "empty") { - return t.isEmptyTypeAnnotation(type); - } else if (baseName === "void") { - return t.isVoidTypeAnnotation(type); - } else { - if (soft) { - return false; - } else { - throw new Error(`Unknown base type ${baseName}`); - } - } -} - -function couldBeBaseType(name) { - const type = this.getTypeAnnotation(); - if (t.isAnyTypeAnnotation(type)) return true; - - if (t.isUnionTypeAnnotation(type)) { - for (const type2 of type.types) { - if (t.isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) { - return true; - } - } - - return false; - } else { - return _isBaseType(name, type, true); - } -} - -function baseTypeStrictlyMatches(rightArg) { - const left = this.getTypeAnnotation(); - const right = rightArg.getTypeAnnotation(); - - if (!t.isAnyTypeAnnotation(left) && t.isFlowBaseAnnotation(left)) { - return right.type === left.type; - } - - return false; -} - -function isGenericType(genericName) { - const type = this.getTypeAnnotation(); - return t.isGenericTypeAnnotation(type) && t.isIdentifier(type.id, { - name: genericName - }); -} - -/***/ }), - -/***/ 59047: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; - -var t = __nccwpck_require__(24479); - -function _default(node) { - if (!this.isReferenced()) return; - const binding = this.scope.getBinding(node.name); - - if (binding) { - if (binding.identifier.typeAnnotation) { - return binding.identifier.typeAnnotation; - } else { - return getTypeAnnotationBindingConstantViolations(binding, this, node.name); - } - } - - if (node.name === "undefined") { - return t.voidTypeAnnotation(); - } else if (node.name === "NaN" || node.name === "Infinity") { - return t.numberTypeAnnotation(); - } else if (node.name === "arguments") {} -} - -function getTypeAnnotationBindingConstantViolations(binding, path, name) { - const types = []; - const functionConstantViolations = []; - let constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations); - const testType = getConditionalAnnotation(binding, path, name); - - if (testType) { - const testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement); - constantViolations = constantViolations.filter(path => testConstantViolations.indexOf(path) < 0); - types.push(testType.typeAnnotation); - } - - if (constantViolations.length) { - constantViolations = constantViolations.concat(functionConstantViolations); - - for (const violation of constantViolations) { - types.push(violation.getTypeAnnotation()); - } - } - - if (!types.length) { - return; - } - - if (t.isTSTypeAnnotation(types[0]) && t.createTSUnionType) { - return t.createTSUnionType(types); - } - - if (t.createFlowUnionType) { - return t.createFlowUnionType(types); - } - - return t.createUnionTypeAnnotation(types); -} - -function getConstantViolationsBefore(binding, path, functions) { - const violations = binding.constantViolations.slice(); - violations.unshift(binding.path); - return violations.filter(violation => { - violation = violation.resolve(); - - const status = violation._guessExecutionStatusRelativeTo(path); - - if (functions && status === "unknown") functions.push(violation); - return status === "before"; - }); -} - -function inferAnnotationFromBinaryExpression(name, path) { - const operator = path.node.operator; - const right = path.get("right").resolve(); - const left = path.get("left").resolve(); - let target; - - if (left.isIdentifier({ - name - })) { - target = right; - } else if (right.isIdentifier({ - name - })) { - target = left; - } - - if (target) { - if (operator === "===") { - return target.getTypeAnnotation(); - } - - if (t.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) { - return t.numberTypeAnnotation(); - } - - return; - } - - if (operator !== "===" && operator !== "==") return; - let typeofPath; - let typePath; - - if (left.isUnaryExpression({ - operator: "typeof" - })) { - typeofPath = left; - typePath = right; - } else if (right.isUnaryExpression({ - operator: "typeof" - })) { - typeofPath = right; - typePath = left; - } - - if (!typeofPath) return; - if (!typeofPath.get("argument").isIdentifier({ - name - })) return; - typePath = typePath.resolve(); - if (!typePath.isLiteral()) return; - const typeValue = typePath.node.value; - if (typeof typeValue !== "string") return; - return t.createTypeAnnotationBasedOnTypeof(typeValue); -} - -function getParentConditionalPath(binding, path, name) { - let parentPath; - - while (parentPath = path.parentPath) { - if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) { - if (path.key === "test") { - return; - } - - return parentPath; - } - - if (parentPath.isFunction()) { - if (parentPath.parentPath.scope.getBinding(name) !== binding) return; - } - - path = parentPath; - } -} - -function getConditionalAnnotation(binding, path, name) { - const ifStatement = getParentConditionalPath(binding, path, name); - if (!ifStatement) return; - const test = ifStatement.get("test"); - const paths = [test]; - const types = []; - - for (let i = 0; i < paths.length; i++) { - const path = paths[i]; - - if (path.isLogicalExpression()) { - if (path.node.operator === "&&") { - paths.push(path.get("left")); - paths.push(path.get("right")); - } - } else if (path.isBinaryExpression()) { - const type = inferAnnotationFromBinaryExpression(name, path); - if (type) types.push(type); - } - } - - if (types.length) { - if (t.isTSTypeAnnotation(types[0]) && t.createTSUnionType) { - return { - typeAnnotation: t.createTSUnionType(types), - ifStatement - }; - } - - if (t.createFlowUnionType) { - return { - typeAnnotation: t.createFlowUnionType(types), - ifStatement - }; - } - - return { - typeAnnotation: t.createUnionTypeAnnotation(types), - ifStatement - }; - } - - return getConditionalAnnotation(ifStatement, name); -} - -/***/ }), - -/***/ 6: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.VariableDeclarator = VariableDeclarator; -exports.TypeCastExpression = TypeCastExpression; -exports.NewExpression = NewExpression; -exports.TemplateLiteral = TemplateLiteral; -exports.UnaryExpression = UnaryExpression; -exports.BinaryExpression = BinaryExpression; -exports.LogicalExpression = LogicalExpression; -exports.ConditionalExpression = ConditionalExpression; -exports.SequenceExpression = SequenceExpression; -exports.ParenthesizedExpression = ParenthesizedExpression; -exports.AssignmentExpression = AssignmentExpression; -exports.UpdateExpression = UpdateExpression; -exports.StringLiteral = StringLiteral; -exports.NumericLiteral = NumericLiteral; -exports.BooleanLiteral = BooleanLiteral; -exports.NullLiteral = NullLiteral; -exports.RegExpLiteral = RegExpLiteral; -exports.ObjectExpression = ObjectExpression; -exports.ArrayExpression = ArrayExpression; -exports.RestElement = RestElement; -exports.ClassDeclaration = exports.ClassExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = exports.FunctionExpression = Func; -exports.CallExpression = CallExpression; -exports.TaggedTemplateExpression = TaggedTemplateExpression; -Object.defineProperty(exports, "Identifier", ({ - enumerable: true, - get: function () { - return _infererReference.default; - } -})); - -var t = __nccwpck_require__(24479); - -var _infererReference = __nccwpck_require__(59047); - -function VariableDeclarator() { - var _type; - - const id = this.get("id"); - if (!id.isIdentifier()) return; - const init = this.get("init"); - let type = init.getTypeAnnotation(); - - if (((_type = type) == null ? void 0 : _type.type) === "AnyTypeAnnotation") { - if (init.isCallExpression() && init.get("callee").isIdentifier({ - name: "Array" - }) && !init.scope.hasBinding("Array", true)) { - type = ArrayExpression(); - } - } - - return type; -} - -function TypeCastExpression(node) { - return node.typeAnnotation; -} - -TypeCastExpression.validParent = true; - -function NewExpression(node) { - if (this.get("callee").isIdentifier()) { - return t.genericTypeAnnotation(node.callee); - } -} - -function TemplateLiteral() { - return t.stringTypeAnnotation(); -} - -function UnaryExpression(node) { - const operator = node.operator; - - if (operator === "void") { - return t.voidTypeAnnotation(); - } else if (t.NUMBER_UNARY_OPERATORS.indexOf(operator) >= 0) { - return t.numberTypeAnnotation(); - } else if (t.STRING_UNARY_OPERATORS.indexOf(operator) >= 0) { - return t.stringTypeAnnotation(); - } else if (t.BOOLEAN_UNARY_OPERATORS.indexOf(operator) >= 0) { - return t.booleanTypeAnnotation(); - } -} - -function BinaryExpression(node) { - const operator = node.operator; - - if (t.NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) { - return t.numberTypeAnnotation(); - } else if (t.BOOLEAN_BINARY_OPERATORS.indexOf(operator) >= 0) { - return t.booleanTypeAnnotation(); - } else if (operator === "+") { - const right = this.get("right"); - const left = this.get("left"); - - if (left.isBaseType("number") && right.isBaseType("number")) { - return t.numberTypeAnnotation(); - } else if (left.isBaseType("string") || right.isBaseType("string")) { - return t.stringTypeAnnotation(); - } - - return t.unionTypeAnnotation([t.stringTypeAnnotation(), t.numberTypeAnnotation()]); - } -} - -function LogicalExpression() { - const argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()]; - - if (t.isTSTypeAnnotation(argumentTypes[0]) && t.createTSUnionType) { - return t.createTSUnionType(argumentTypes); - } - - if (t.createFlowUnionType) { - return t.createFlowUnionType(argumentTypes); - } - - return t.createUnionTypeAnnotation(argumentTypes); -} - -function ConditionalExpression() { - const argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()]; - - if (t.isTSTypeAnnotation(argumentTypes[0]) && t.createTSUnionType) { - return t.createTSUnionType(argumentTypes); - } - - if (t.createFlowUnionType) { - return t.createFlowUnionType(argumentTypes); - } - - return t.createUnionTypeAnnotation(argumentTypes); -} - -function SequenceExpression() { - return this.get("expressions").pop().getTypeAnnotation(); -} - -function ParenthesizedExpression() { - return this.get("expression").getTypeAnnotation(); -} - -function AssignmentExpression() { - return this.get("right").getTypeAnnotation(); -} - -function UpdateExpression(node) { - const operator = node.operator; - - if (operator === "++" || operator === "--") { - return t.numberTypeAnnotation(); - } -} - -function StringLiteral() { - return t.stringTypeAnnotation(); -} - -function NumericLiteral() { - return t.numberTypeAnnotation(); -} - -function BooleanLiteral() { - return t.booleanTypeAnnotation(); -} - -function NullLiteral() { - return t.nullLiteralTypeAnnotation(); -} - -function RegExpLiteral() { - return t.genericTypeAnnotation(t.identifier("RegExp")); -} - -function ObjectExpression() { - return t.genericTypeAnnotation(t.identifier("Object")); -} - -function ArrayExpression() { - return t.genericTypeAnnotation(t.identifier("Array")); -} - -function RestElement() { - return ArrayExpression(); -} - -RestElement.validParent = true; - -function Func() { - return t.genericTypeAnnotation(t.identifier("Function")); -} - -const isArrayFrom = t.buildMatchMemberExpression("Array.from"); -const isObjectKeys = t.buildMatchMemberExpression("Object.keys"); -const isObjectValues = t.buildMatchMemberExpression("Object.values"); -const isObjectEntries = t.buildMatchMemberExpression("Object.entries"); - -function CallExpression() { - const { - callee - } = this.node; - - if (isObjectKeys(callee)) { - return t.arrayTypeAnnotation(t.stringTypeAnnotation()); - } else if (isArrayFrom(callee) || isObjectValues(callee)) { - return t.arrayTypeAnnotation(t.anyTypeAnnotation()); - } else if (isObjectEntries(callee)) { - return t.arrayTypeAnnotation(t.tupleTypeAnnotation([t.stringTypeAnnotation(), t.anyTypeAnnotation()])); - } - - return resolveCall(this.get("callee")); -} - -function TaggedTemplateExpression() { - return resolveCall(this.get("tag")); -} - -function resolveCall(callee) { - callee = callee.resolve(); - - if (callee.isFunction()) { - if (callee.is("async")) { - if (callee.is("generator")) { - return t.genericTypeAnnotation(t.identifier("AsyncIterator")); - } else { - return t.genericTypeAnnotation(t.identifier("Promise")); - } - } else { - if (callee.node.returnType) { - return callee.node.returnType; - } else {} - } - } -} - -/***/ }), - -/***/ 3553: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.matchesPattern = matchesPattern; -exports.has = has; -exports.isStatic = isStatic; -exports.isnt = isnt; -exports.equals = equals; -exports.isNodeType = isNodeType; -exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression; -exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement; -exports.isCompletionRecord = isCompletionRecord; -exports.isStatementOrBlock = isStatementOrBlock; -exports.referencesImport = referencesImport; -exports.getSource = getSource; -exports.willIMaybeExecuteBefore = willIMaybeExecuteBefore; -exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo; -exports._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeToDifferentFunctions; -exports.resolve = resolve; -exports._resolve = _resolve; -exports.isConstantExpression = isConstantExpression; -exports.isInStrictMode = isInStrictMode; -exports.is = void 0; - -var t = __nccwpck_require__(24479); - -function matchesPattern(pattern, allowPartial) { - return t.matchesPattern(this.node, pattern, allowPartial); -} - -function has(key) { - const val = this.node && this.node[key]; - - if (val && Array.isArray(val)) { - return !!val.length; - } else { - return !!val; - } -} - -function isStatic() { - return this.scope.isStatic(this.node); -} - -const is = has; -exports.is = is; - -function isnt(key) { - return !this.has(key); -} - -function equals(key, value) { - return this.node[key] === value; -} - -function isNodeType(type) { - return t.isType(this.type, type); -} - -function canHaveVariableDeclarationOrExpression() { - return (this.key === "init" || this.key === "left") && this.parentPath.isFor(); -} - -function canSwapBetweenExpressionAndStatement(replacement) { - if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) { - return false; - } - - if (this.isExpression()) { - return t.isBlockStatement(replacement); - } else if (this.isBlockStatement()) { - return t.isExpression(replacement); - } - - return false; -} - -function isCompletionRecord(allowInsideFunction) { - let path = this; - let first = true; - - do { - const container = path.container; - - if (path.isFunction() && !first) { - return !!allowInsideFunction; - } - - first = false; - - if (Array.isArray(container) && path.key !== container.length - 1) { - return false; - } - } while ((path = path.parentPath) && !path.isProgram()); - - return true; -} - -function isStatementOrBlock() { - if (this.parentPath.isLabeledStatement() || t.isBlockStatement(this.container)) { - return false; - } else { - return t.STATEMENT_OR_BLOCK_KEYS.includes(this.key); - } -} - -function referencesImport(moduleSource, importName) { - if (!this.isReferencedIdentifier()) { - if ((this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? t.isStringLiteral(this.node.property, { - value: importName - }) : this.node.property.name === importName)) { - const object = this.get("object"); - return object.isReferencedIdentifier() && object.referencesImport(moduleSource, "*"); - } - - return false; - } - - const binding = this.scope.getBinding(this.node.name); - if (!binding || binding.kind !== "module") return false; - const path = binding.path; - const parent = path.parentPath; - if (!parent.isImportDeclaration()) return false; - - if (parent.node.source.value === moduleSource) { - if (!importName) return true; - } else { - return false; - } - - if (path.isImportDefaultSpecifier() && importName === "default") { - return true; - } - - if (path.isImportNamespaceSpecifier() && importName === "*") { - return true; - } - - if (path.isImportSpecifier() && t.isIdentifier(path.node.imported, { - name: importName - })) { - return true; - } - - return false; -} - -function getSource() { - const node = this.node; - - if (node.end) { - const code = this.hub.getCode(); - if (code) return code.slice(node.start, node.end); - } - - return ""; -} - -function willIMaybeExecuteBefore(target) { - return this._guessExecutionStatusRelativeTo(target) !== "after"; -} - -function getOuterFunction(path) { - return (path.scope.getFunctionParent() || path.scope.getProgramParent()).path; -} - -function isExecutionUncertain(type, key) { - switch (type) { - case "LogicalExpression": - return key === "right"; - - case "ConditionalExpression": - case "IfStatement": - return key === "consequent" || key === "alternate"; - - case "WhileStatement": - case "DoWhileStatement": - case "ForInStatement": - case "ForOfStatement": - return key === "body"; - - case "ForStatement": - return key === "body" || key === "update"; - - case "SwitchStatement": - return key === "cases"; - - case "TryStatement": - return key === "handler"; - - case "AssignmentPattern": - return key === "right"; - - case "OptionalMemberExpression": - return key === "property"; - - case "OptionalCallExpression": - return key === "arguments"; - - default: - return false; - } -} - -function isExecutionUncertainInList(paths, maxIndex) { - for (let i = 0; i < maxIndex; i++) { - const path = paths[i]; - - if (isExecutionUncertain(path.parent.type, path.parentKey)) { - return true; - } - } - - return false; -} - -function _guessExecutionStatusRelativeTo(target) { - const funcParent = { - this: getOuterFunction(this), - target: getOuterFunction(target) - }; - - if (funcParent.target.node !== funcParent.this.node) { - return this._guessExecutionStatusRelativeToDifferentFunctions(funcParent.target); - } - - const paths = { - target: target.getAncestry(), - this: this.getAncestry() - }; - if (paths.target.indexOf(this) >= 0) return "after"; - if (paths.this.indexOf(target) >= 0) return "before"; - let commonPath; - const commonIndex = { - target: 0, - this: 0 - }; - - while (!commonPath && commonIndex.this < paths.this.length) { - const path = paths.this[commonIndex.this]; - commonIndex.target = paths.target.indexOf(path); - - if (commonIndex.target >= 0) { - commonPath = path; - } else { - commonIndex.this++; - } - } - - if (!commonPath) { - throw new Error("Internal Babel error - The two compared nodes" + " don't appear to belong to the same program."); - } - - if (isExecutionUncertainInList(paths.this, commonIndex.this - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) { - return "unknown"; - } - - const divergence = { - this: paths.this[commonIndex.this - 1], - target: paths.target[commonIndex.target - 1] - }; - - if (divergence.target.listKey && divergence.this.listKey && divergence.target.container === divergence.this.container) { - return divergence.target.key > divergence.this.key ? "before" : "after"; - } - - const keys = t.VISITOR_KEYS[commonPath.type]; - const keyPosition = { - this: keys.indexOf(divergence.this.parentKey), - target: keys.indexOf(divergence.target.parentKey) - }; - return keyPosition.target > keyPosition.this ? "before" : "after"; -} - -const executionOrderCheckedNodes = new WeakSet(); - -function _guessExecutionStatusRelativeToDifferentFunctions(target) { - if (!target.isFunctionDeclaration() || target.parentPath.isExportDeclaration()) { - return "unknown"; - } - - const binding = target.scope.getBinding(target.node.id.name); - if (!binding.references) return "before"; - const referencePaths = binding.referencePaths; - let allStatus; - - for (const path of referencePaths) { - const childOfFunction = !!path.find(path => path.node === target.node); - if (childOfFunction) continue; - - if (path.key !== "callee" || !path.parentPath.isCallExpression()) { - return "unknown"; - } - - if (executionOrderCheckedNodes.has(path.node)) continue; - executionOrderCheckedNodes.add(path.node); - - const status = this._guessExecutionStatusRelativeTo(path); - - executionOrderCheckedNodes.delete(path.node); - - if (allStatus && allStatus !== status) { - return "unknown"; - } else { - allStatus = status; - } - } - - return allStatus; -} - -function resolve(dangerous, resolved) { - return this._resolve(dangerous, resolved) || this; -} - -function _resolve(dangerous, resolved) { - if (resolved && resolved.indexOf(this) >= 0) return; - resolved = resolved || []; - resolved.push(this); - - if (this.isVariableDeclarator()) { - if (this.get("id").isIdentifier()) { - return this.get("init").resolve(dangerous, resolved); - } else {} - } else if (this.isReferencedIdentifier()) { - const binding = this.scope.getBinding(this.node.name); - if (!binding) return; - if (!binding.constant) return; - if (binding.kind === "module") return; - - if (binding.path !== this) { - const ret = binding.path.resolve(dangerous, resolved); - if (this.find(parent => parent.node === ret.node)) return; - return ret; - } - } else if (this.isTypeCastExpression()) { - return this.get("expression").resolve(dangerous, resolved); - } else if (dangerous && this.isMemberExpression()) { - const targetKey = this.toComputedKey(); - if (!t.isLiteral(targetKey)) return; - const targetName = targetKey.value; - const target = this.get("object").resolve(dangerous, resolved); - - if (target.isObjectExpression()) { - const props = target.get("properties"); - - for (const prop of props) { - if (!prop.isProperty()) continue; - const key = prop.get("key"); - let match = prop.isnt("computed") && key.isIdentifier({ - name: targetName - }); - match = match || key.isLiteral({ - value: targetName - }); - if (match) return prop.get("value").resolve(dangerous, resolved); - } - } else if (target.isArrayExpression() && !isNaN(+targetName)) { - const elems = target.get("elements"); - const elem = elems[targetName]; - if (elem) return elem.resolve(dangerous, resolved); - } - } -} - -function isConstantExpression() { - if (this.isIdentifier()) { - const binding = this.scope.getBinding(this.node.name); - if (!binding) return false; - return binding.constant; - } - - if (this.isLiteral()) { - if (this.isRegExpLiteral()) { - return false; - } - - if (this.isTemplateLiteral()) { - return this.get("expressions").every(expression => expression.isConstantExpression()); - } - - return true; - } - - if (this.isUnaryExpression()) { - if (this.node.operator !== "void") { - return false; - } - - return this.get("argument").isConstantExpression(); - } - - if (this.isBinaryExpression()) { - return this.get("left").isConstantExpression() && this.get("right").isConstantExpression(); - } - - return false; -} - -function isInStrictMode() { - const start = this.isProgram() ? this : this.parentPath; - const strictParent = start.find(path => { - if (path.isProgram({ - sourceType: "module" - })) return true; - if (path.isClass()) return true; - if (!path.isProgram() && !path.isFunction()) return false; - - if (path.isArrowFunctionExpression() && !path.get("body").isBlockStatement()) { - return false; - } - - const body = path.isFunction() ? path.node.body : path.node; - - for (const directive of body.directives) { - if (directive.value.value === "use strict") { - return true; - } - } - }); - return !!strictParent; -} - -/***/ }), - -/***/ 80321: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var t = __nccwpck_require__(24479); - -const referenceVisitor = { - ReferencedIdentifier(path, state) { - if (path.isJSXIdentifier() && t.react.isCompatTag(path.node.name) && !path.parentPath.isJSXMemberExpression()) { - return; - } - - if (path.node.name === "this") { - let scope = path.scope; - - do { - if (scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) { - break; - } - } while (scope = scope.parent); - - if (scope) state.breakOnScopePaths.push(scope.path); - } - - const binding = path.scope.getBinding(path.node.name); - if (!binding) return; - - for (const violation of binding.constantViolations) { - if (violation.scope !== binding.path.scope) { - state.mutableBinding = true; - path.stop(); - return; - } - } - - if (binding !== state.scope.getBinding(path.node.name)) return; - state.bindings[path.node.name] = binding; - } - -}; - -class PathHoister { - constructor(path, scope) { - this.breakOnScopePaths = void 0; - this.bindings = void 0; - this.mutableBinding = void 0; - this.scopes = void 0; - this.scope = void 0; - this.path = void 0; - this.attachAfter = void 0; - this.breakOnScopePaths = []; - this.bindings = {}; - this.mutableBinding = false; - this.scopes = []; - this.scope = scope; - this.path = path; - this.attachAfter = false; - } - - isCompatibleScope(scope) { - for (const key of Object.keys(this.bindings)) { - const binding = this.bindings[key]; - - if (!scope.bindingIdentifierEquals(key, binding.identifier)) { - return false; - } - } - - return true; - } - - getCompatibleScopes() { - let scope = this.path.scope; - - do { - if (this.isCompatibleScope(scope)) { - this.scopes.push(scope); - } else { - break; - } - - if (this.breakOnScopePaths.indexOf(scope.path) >= 0) { - break; - } - } while (scope = scope.parent); - } - - getAttachmentPath() { - let path = this._getAttachmentPath(); - - if (!path) return; - let targetScope = path.scope; - - if (targetScope.path === path) { - targetScope = path.scope.parent; - } - - if (targetScope.path.isProgram() || targetScope.path.isFunction()) { - for (const name of Object.keys(this.bindings)) { - if (!targetScope.hasOwnBinding(name)) continue; - const binding = this.bindings[name]; - - if (binding.kind === "param" || binding.path.parentKey === "params") { - continue; - } - - const bindingParentPath = this.getAttachmentParentForPath(binding.path); - - if (bindingParentPath.key >= path.key) { - this.attachAfter = true; - path = binding.path; - - for (const violationPath of binding.constantViolations) { - if (this.getAttachmentParentForPath(violationPath).key > path.key) { - path = violationPath; - } - } - } - } - } - - return path; - } - - _getAttachmentPath() { - const scopes = this.scopes; - const scope = scopes.pop(); - if (!scope) return; - - if (scope.path.isFunction()) { - if (this.hasOwnParamBindings(scope)) { - if (this.scope === scope) return; - const bodies = scope.path.get("body").get("body"); - - for (let i = 0; i < bodies.length; i++) { - if (bodies[i].node._blockHoist) continue; - return bodies[i]; - } - } else { - return this.getNextScopeAttachmentParent(); - } - } else if (scope.path.isProgram()) { - return this.getNextScopeAttachmentParent(); - } - } - - getNextScopeAttachmentParent() { - const scope = this.scopes.pop(); - if (scope) return this.getAttachmentParentForPath(scope.path); - } - - getAttachmentParentForPath(path) { - do { - if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) { - return path; - } - } while (path = path.parentPath); - } - - hasOwnParamBindings(scope) { - for (const name of Object.keys(this.bindings)) { - if (!scope.hasOwnBinding(name)) continue; - const binding = this.bindings[name]; - if (binding.kind === "param" && binding.constant) return true; - } - - return false; - } - - run() { - this.path.traverse(referenceVisitor, this); - if (this.mutableBinding) return; - this.getCompatibleScopes(); - const attachTo = this.getAttachmentPath(); - if (!attachTo) return; - if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return; - let uid = attachTo.scope.generateUidIdentifier("ref"); - const declarator = t.variableDeclarator(uid, this.path.node); - const insertFn = this.attachAfter ? "insertAfter" : "insertBefore"; - const [attached] = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : t.variableDeclaration("var", [declarator])]); - const parent = this.path.parentPath; - - if (parent.isJSXElement() && this.path.container === parent.node.children) { - uid = t.jsxExpressionContainer(uid); - } - - this.path.replaceWith(t.cloneNode(uid)); - return attachTo.isVariableDeclarator() ? attached.get("init") : attached.get("declarations.0.init"); - } - -} - -exports["default"] = PathHoister; - -/***/ }), - -/***/ 79574: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.hooks = void 0; -const hooks = [function (self, parent) { - const removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement(); - - if (removeParent) { - parent.remove(); - return true; - } -}, function (self, parent) { - if (parent.isSequenceExpression() && parent.node.expressions.length === 1) { - parent.replaceWith(parent.node.expressions[0]); - return true; - } -}, function (self, parent) { - if (parent.isBinary()) { - if (self.key === "left") { - parent.replaceWith(parent.node.right); - } else { - parent.replaceWith(parent.node.left); - } - - return true; - } -}, function (self, parent) { - if (parent.isIfStatement() && (self.key === "consequent" || self.key === "alternate") || self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression())) { - self.replaceWith({ - type: "BlockStatement", - body: [] - }); - return true; - } -}]; -exports.hooks = hooks; - -/***/ }), - -/***/ 89637: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ForAwaitStatement = exports.NumericLiteralTypeAnnotation = exports.ExistentialTypeParam = exports.SpreadProperty = exports.RestProperty = exports.Flow = exports.Pure = exports.Generated = exports.User = exports.Var = exports.BlockScoped = exports.Referenced = exports.Scope = exports.Expression = exports.Statement = exports.BindingIdentifier = exports.ReferencedMemberExpression = exports.ReferencedIdentifier = void 0; - -var t = __nccwpck_require__(24479); - -const ReferencedIdentifier = { - types: ["Identifier", "JSXIdentifier"], - - checkPath(path, opts) { - const { - node, - parent - } = path; - - if (!t.isIdentifier(node, opts) && !t.isJSXMemberExpression(parent, opts)) { - if (t.isJSXIdentifier(node, opts)) { - if (t.react.isCompatTag(node.name)) return false; - } else { - return false; - } - } - - return t.isReferenced(node, parent, path.parentPath.parent); - } - -}; -exports.ReferencedIdentifier = ReferencedIdentifier; -const ReferencedMemberExpression = { - types: ["MemberExpression"], - - checkPath({ - node, - parent - }) { - return t.isMemberExpression(node) && t.isReferenced(node, parent); - } - -}; -exports.ReferencedMemberExpression = ReferencedMemberExpression; -const BindingIdentifier = { - types: ["Identifier"], - - checkPath(path) { - const { - node, - parent - } = path; - const grandparent = path.parentPath.parent; - return t.isIdentifier(node) && t.isBinding(node, parent, grandparent); - } - -}; -exports.BindingIdentifier = BindingIdentifier; -const Statement = { - types: ["Statement"], - - checkPath({ - node, - parent - }) { - if (t.isStatement(node)) { - if (t.isVariableDeclaration(node)) { - if (t.isForXStatement(parent, { - left: node - })) return false; - if (t.isForStatement(parent, { - init: node - })) return false; - } - - return true; - } else { - return false; - } - } - -}; -exports.Statement = Statement; -const Expression = { - types: ["Expression"], - - checkPath(path) { - if (path.isIdentifier()) { - return path.isReferencedIdentifier(); - } else { - return t.isExpression(path.node); - } - } - -}; -exports.Expression = Expression; -const Scope = { - types: ["Scopable", "Pattern"], - - checkPath(path) { - return t.isScope(path.node, path.parent); - } - -}; -exports.Scope = Scope; -const Referenced = { - checkPath(path) { - return t.isReferenced(path.node, path.parent); - } - -}; -exports.Referenced = Referenced; -const BlockScoped = { - checkPath(path) { - return t.isBlockScoped(path.node); - } - -}; -exports.BlockScoped = BlockScoped; -const Var = { - types: ["VariableDeclaration"], - - checkPath(path) { - return t.isVar(path.node); - } - -}; -exports.Var = Var; -const User = { - checkPath(path) { - return path.node && !!path.node.loc; - } - -}; -exports.User = User; -const Generated = { - checkPath(path) { - return !path.isUser(); - } - -}; -exports.Generated = Generated; -const Pure = { - checkPath(path, opts) { - return path.scope.isPure(path.node, opts); - } - -}; -exports.Pure = Pure; -const Flow = { - types: ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"], - - checkPath({ - node - }) { - if (t.isFlow(node)) { - return true; - } else if (t.isImportDeclaration(node)) { - return node.importKind === "type" || node.importKind === "typeof"; - } else if (t.isExportDeclaration(node)) { - return node.exportKind === "type"; - } else if (t.isImportSpecifier(node)) { - return node.importKind === "type" || node.importKind === "typeof"; - } else { - return false; - } - } - -}; -exports.Flow = Flow; -const RestProperty = { - types: ["RestElement"], - - checkPath(path) { - return path.parentPath && path.parentPath.isObjectPattern(); - } - -}; -exports.RestProperty = RestProperty; -const SpreadProperty = { - types: ["RestElement"], - - checkPath(path) { - return path.parentPath && path.parentPath.isObjectExpression(); - } - -}; -exports.SpreadProperty = SpreadProperty; -const ExistentialTypeParam = { - types: ["ExistsTypeAnnotation"] -}; -exports.ExistentialTypeParam = ExistentialTypeParam; -const NumericLiteralTypeAnnotation = { - types: ["NumberLiteralTypeAnnotation"] -}; -exports.NumericLiteralTypeAnnotation = NumericLiteralTypeAnnotation; -const ForAwaitStatement = { - types: ["ForOfStatement"], - - checkPath({ - node - }) { - return node.await === true; - } - -}; -exports.ForAwaitStatement = ForAwaitStatement; - -/***/ }), - -/***/ 40393: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.insertBefore = insertBefore; -exports._containerInsert = _containerInsert; -exports._containerInsertBefore = _containerInsertBefore; -exports._containerInsertAfter = _containerInsertAfter; -exports.insertAfter = insertAfter; -exports.updateSiblingKeys = updateSiblingKeys; -exports._verifyNodeList = _verifyNodeList; -exports.unshiftContainer = unshiftContainer; -exports.pushContainer = pushContainer; -exports.hoist = hoist; - -var _cache = __nccwpck_require__(58897); - -var _hoister = __nccwpck_require__(80321); - -var _index = __nccwpck_require__(58308); - -var t = __nccwpck_require__(24479); - -function insertBefore(nodes_) { - this._assertUnremoved(); - - const nodes = this._verifyNodeList(nodes_); - - const { - parentPath - } = this; - - if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || parentPath.isExportNamedDeclaration() || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) { - return parentPath.insertBefore(nodes); - } else if (this.isNodeType("Expression") && !this.isJSXElement() || parentPath.isForStatement() && this.key === "init") { - if (this.node) nodes.push(this.node); - return this.replaceExpressionWithStatements(nodes); - } else if (Array.isArray(this.container)) { - return this._containerInsertBefore(nodes); - } else if (this.isStatementOrBlock()) { - const node = this.node; - const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null); - this.replaceWith(t.blockStatement(shouldInsertCurrentNode ? [node] : [])); - return this.unshiftContainer("body", nodes); - } else { - throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?"); - } -} - -function _containerInsert(from, nodes) { - this.updateSiblingKeys(from, nodes.length); - const paths = []; - this.container.splice(from, 0, ...nodes); - - for (let i = 0; i < nodes.length; i++) { - const to = from + i; - const path = this.getSibling(to); - paths.push(path); - - if (this.context && this.context.queue) { - path.pushContext(this.context); - } - } - - const contexts = this._getQueueContexts(); - - for (const path of paths) { - path.setScope(); - path.debug("Inserted."); - - for (const context of contexts) { - context.maybeQueue(path, true); - } - } - - return paths; -} - -function _containerInsertBefore(nodes) { - return this._containerInsert(this.key, nodes); -} - -function _containerInsertAfter(nodes) { - return this._containerInsert(this.key + 1, nodes); -} - -function insertAfter(nodes_) { - this._assertUnremoved(); - - const nodes = this._verifyNodeList(nodes_); - - const { - parentPath - } = this; - - if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || parentPath.isExportNamedDeclaration() || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) { - return parentPath.insertAfter(nodes.map(node => { - return t.isExpression(node) ? t.expressionStatement(node) : node; - })); - } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") { - if (this.node) { - const node = this.node; - let { - scope - } = this; - - if (scope.path.isPattern()) { - t.assertExpression(node); - this.replaceWith(t.callExpression(t.arrowFunctionExpression([], node), [])); - this.get("callee.body").insertAfter(nodes); - return [this]; - } - - if (parentPath.isMethod({ - computed: true, - key: node - })) { - scope = scope.parent; - } - - const temp = scope.generateDeclaredUidIdentifier(); - nodes.unshift(t.expressionStatement(t.assignmentExpression("=", t.cloneNode(temp), node))); - nodes.push(t.expressionStatement(t.cloneNode(temp))); - } - - return this.replaceExpressionWithStatements(nodes); - } else if (Array.isArray(this.container)) { - return this._containerInsertAfter(nodes); - } else if (this.isStatementOrBlock()) { - const node = this.node; - const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null); - this.replaceWith(t.blockStatement(shouldInsertCurrentNode ? [node] : [])); - return this.pushContainer("body", nodes); - } else { - throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?"); - } -} - -function updateSiblingKeys(fromIndex, incrementBy) { - if (!this.parent) return; - - const paths = _cache.path.get(this.parent); - - for (const [, path] of paths) { - if (path.key >= fromIndex) { - path.key += incrementBy; - } - } -} - -function _verifyNodeList(nodes) { - if (!nodes) { - return []; - } - - if (!Array.isArray(nodes)) { - nodes = [nodes]; - } - - for (let i = 0; i < nodes.length; i++) { - const node = nodes[i]; - let msg; - - if (!node) { - msg = "has falsy node"; - } else if (typeof node !== "object") { - msg = "contains a non-object node"; - } else if (!node.type) { - msg = "without a type"; - } else if (node instanceof _index.default) { - msg = "has a NodePath when it expected a raw object"; - } - - if (msg) { - const type = Array.isArray(node) ? "array" : typeof node; - throw new Error(`Node list ${msg} with the index of ${i} and type of ${type}`); - } - } - - return nodes; -} - -function unshiftContainer(listKey, nodes) { - this._assertUnremoved(); - - nodes = this._verifyNodeList(nodes); - - const path = _index.default.get({ - parentPath: this, - parent: this.node, - container: this.node[listKey], - listKey, - key: 0 - }).setContext(this.context); - - return path._containerInsertBefore(nodes); -} - -function pushContainer(listKey, nodes) { - this._assertUnremoved(); - - const verifiedNodes = this._verifyNodeList(nodes); - - const container = this.node[listKey]; - - const path = _index.default.get({ - parentPath: this, - parent: this.node, - container: container, - listKey, - key: container.length - }).setContext(this.context); - - return path.replaceWithMultiple(verifiedNodes); -} - -function hoist(scope = this.scope) { - const hoister = new _hoister.default(this, scope); - return hoister.run(); -} - -/***/ }), - -/***/ 41906: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.remove = remove; -exports._removeFromScope = _removeFromScope; -exports._callRemovalHooks = _callRemovalHooks; -exports._remove = _remove; -exports._markRemoved = _markRemoved; -exports._assertUnremoved = _assertUnremoved; - -var _removalHooks = __nccwpck_require__(79574); - -var _cache = __nccwpck_require__(58897); - -var _index = __nccwpck_require__(58308); - -function remove() { - var _this$opts; - - this._assertUnremoved(); - - this.resync(); - - if (!((_this$opts = this.opts) != null && _this$opts.noScope)) { - this._removeFromScope(); - } - - if (this._callRemovalHooks()) { - this._markRemoved(); - - return; - } - - this.shareCommentsWithSiblings(); - - this._remove(); - - this._markRemoved(); -} - -function _removeFromScope() { - const bindings = this.getBindingIdentifiers(); - Object.keys(bindings).forEach(name => this.scope.removeBinding(name)); -} - -function _callRemovalHooks() { - for (const fn of _removalHooks.hooks) { - if (fn(this, this.parentPath)) return true; - } -} - -function _remove() { - if (Array.isArray(this.container)) { - this.container.splice(this.key, 1); - this.updateSiblingKeys(this.key, -1); - } else { - this._replaceWith(null); - } -} - -function _markRemoved() { - this._traverseFlags |= _index.SHOULD_SKIP | _index.REMOVED; - if (this.parent) _cache.path.get(this.parent).delete(this.node); - this.node = null; -} - -function _assertUnremoved() { - if (this.removed) { - throw this.buildCodeFrameError("NodePath has been removed so is read-only."); - } -} - -/***/ }), - -/***/ 56372: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.replaceWithMultiple = replaceWithMultiple; -exports.replaceWithSourceString = replaceWithSourceString; -exports.replaceWith = replaceWith; -exports._replaceWith = _replaceWith; -exports.replaceExpressionWithStatements = replaceExpressionWithStatements; -exports.replaceInline = replaceInline; - -var _codeFrame = __nccwpck_require__(47548); - -var _index = __nccwpck_require__(8631); - -var _index2 = __nccwpck_require__(58308); - -var _cache = __nccwpck_require__(58897); - -var _parser = __nccwpck_require__(89302); - -var t = __nccwpck_require__(24479); - -var _helperHoistVariables = __nccwpck_require__(75327); - -function replaceWithMultiple(nodes) { - var _pathCache$get; - - this.resync(); - nodes = this._verifyNodeList(nodes); - t.inheritLeadingComments(nodes[0], this.node); - t.inheritTrailingComments(nodes[nodes.length - 1], this.node); - (_pathCache$get = _cache.path.get(this.parent)) == null ? void 0 : _pathCache$get.delete(this.node); - this.node = this.container[this.key] = null; - const paths = this.insertAfter(nodes); - - if (this.node) { - this.requeue(); - } else { - this.remove(); - } - - return paths; -} - -function replaceWithSourceString(replacement) { - this.resync(); - - try { - replacement = `(${replacement})`; - replacement = (0, _parser.parse)(replacement); - } catch (err) { - const loc = err.loc; - - if (loc) { - err.message += " - make sure this is an expression.\n" + (0, _codeFrame.codeFrameColumns)(replacement, { - start: { - line: loc.line, - column: loc.column + 1 - } - }); - err.code = "BABEL_REPLACE_SOURCE_ERROR"; - } - - throw err; - } - - replacement = replacement.program.body[0].expression; - - _index.default.removeProperties(replacement); - - return this.replaceWith(replacement); -} - -function replaceWith(replacement) { - this.resync(); - - if (this.removed) { - throw new Error("You can't replace this node, we've already removed it"); - } - - if (replacement instanceof _index2.default) { - replacement = replacement.node; - } - - if (!replacement) { - throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead"); - } - - if (this.node === replacement) { - return [this]; - } - - if (this.isProgram() && !t.isProgram(replacement)) { - throw new Error("You can only replace a Program root node with another Program node"); - } - - if (Array.isArray(replacement)) { - throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`"); - } - - if (typeof replacement === "string") { - throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`"); - } - - let nodePath = ""; - - if (this.isNodeType("Statement") && t.isExpression(replacement)) { - if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) { - replacement = t.expressionStatement(replacement); - nodePath = "expression"; - } - } - - if (this.isNodeType("Expression") && t.isStatement(replacement)) { - if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) { - return this.replaceExpressionWithStatements([replacement]); - } - } - - const oldNode = this.node; - - if (oldNode) { - t.inheritsComments(replacement, oldNode); - t.removeComments(oldNode); - } - - this._replaceWith(replacement); - - this.type = replacement.type; - this.setScope(); - this.requeue(); - return [nodePath ? this.get(nodePath) : this]; -} - -function _replaceWith(node) { - var _pathCache$get2; - - if (!this.container) { - throw new ReferenceError("Container is falsy"); - } - - if (this.inList) { - t.validate(this.parent, this.key, [node]); - } else { - t.validate(this.parent, this.key, node); - } - - this.debug(`Replace with ${node == null ? void 0 : node.type}`); - (_pathCache$get2 = _cache.path.get(this.parent)) == null ? void 0 : _pathCache$get2.set(node, this).delete(this.node); - this.node = this.container[this.key] = node; -} - -function replaceExpressionWithStatements(nodes) { - this.resync(); - const toSequenceExpression = t.toSequenceExpression(nodes, this.scope); - - if (toSequenceExpression) { - return this.replaceWith(toSequenceExpression)[0].get("expressions"); - } - - const functionParent = this.getFunctionParent(); - const isParentAsync = functionParent == null ? void 0 : functionParent.is("async"); - const isParentGenerator = functionParent == null ? void 0 : functionParent.is("generator"); - const container = t.arrowFunctionExpression([], t.blockStatement(nodes)); - this.replaceWith(t.callExpression(container, [])); - const callee = this.get("callee"); - (0, _helperHoistVariables.default)(callee.get("body"), id => { - this.scope.push({ - id - }); - }, "var"); - const completionRecords = this.get("callee").getCompletionRecords(); - - for (const path of completionRecords) { - if (!path.isExpressionStatement()) continue; - const loop = path.findParent(path => path.isLoop()); - - if (loop) { - let uid = loop.getData("expressionReplacementReturnUid"); - - if (!uid) { - uid = callee.scope.generateDeclaredUidIdentifier("ret"); - callee.get("body").pushContainer("body", t.returnStatement(t.cloneNode(uid))); - loop.setData("expressionReplacementReturnUid", uid); - } else { - uid = t.identifier(uid.name); - } - - path.get("expression").replaceWith(t.assignmentExpression("=", t.cloneNode(uid), path.node.expression)); - } else { - path.replaceWith(t.returnStatement(path.node.expression)); - } - } - - callee.arrowFunctionToExpression(); - const newCallee = callee; - - const needToAwaitFunction = isParentAsync && _index.default.hasType(this.get("callee.body").node, "AwaitExpression", t.FUNCTION_TYPES); - - const needToYieldFunction = isParentGenerator && _index.default.hasType(this.get("callee.body").node, "YieldExpression", t.FUNCTION_TYPES); - - if (needToAwaitFunction) { - newCallee.set("async", true); - - if (!needToYieldFunction) { - this.replaceWith(t.awaitExpression(this.node)); - } - } - - if (needToYieldFunction) { - newCallee.set("generator", true); - this.replaceWith(t.yieldExpression(this.node, true)); - } - - return newCallee.get("body.body"); -} - -function replaceInline(nodes) { - this.resync(); - - if (Array.isArray(nodes)) { - if (Array.isArray(this.container)) { - nodes = this._verifyNodeList(nodes); - - const paths = this._containerInsertAfter(nodes); - - this.remove(); - return paths; - } else { - return this.replaceWithMultiple(nodes); - } - } else { - return this.replaceWith(nodes); - } -} - -/***/ }), - -/***/ 14774: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -class Binding { - constructor({ - identifier, - scope, - path, - kind - }) { - this.identifier = void 0; - this.scope = void 0; - this.path = void 0; - this.kind = void 0; - this.constantViolations = []; - this.constant = true; - this.referencePaths = []; - this.referenced = false; - this.references = 0; - this.identifier = identifier; - this.scope = scope; - this.path = path; - this.kind = kind; - this.clearValue(); - } - - deoptValue() { - this.clearValue(); - this.hasDeoptedValue = true; - } - - setValue(value) { - if (this.hasDeoptedValue) return; - this.hasValue = true; - this.value = value; - } - - clearValue() { - this.hasDeoptedValue = false; - this.hasValue = false; - this.value = null; - } - - reassign(path) { - this.constant = false; - - if (this.constantViolations.indexOf(path) !== -1) { - return; - } - - this.constantViolations.push(path); - } - - reference(path) { - if (this.referencePaths.indexOf(path) !== -1) { - return; - } - - this.referenced = true; - this.references++; - this.referencePaths.push(path); - } - - dereference() { - this.references--; - this.referenced = !!this.references; - } - -} - -exports["default"] = Binding; - -/***/ }), - -/***/ 85079: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _renamer = __nccwpck_require__(30096); - -var _index = __nccwpck_require__(8631); - -var _binding = __nccwpck_require__(14774); - -var _globals = __nccwpck_require__(15548); - -var t = __nccwpck_require__(24479); - -var _cache = __nccwpck_require__(58897); - -function gatherNodeParts(node, parts) { - switch (node == null ? void 0 : node.type) { - default: - if (t.isModuleDeclaration(node)) { - if ((t.isExportAllDeclaration(node) || t.isExportNamedDeclaration(node) || t.isImportDeclaration(node)) && node.source) { - gatherNodeParts(node.source, parts); - } else if ((t.isExportNamedDeclaration(node) || t.isImportDeclaration(node)) && node.specifiers && node.specifiers.length) { - for (const e of node.specifiers) gatherNodeParts(e, parts); - } else if ((t.isExportDefaultDeclaration(node) || t.isExportNamedDeclaration(node)) && node.declaration) { - gatherNodeParts(node.declaration, parts); - } - } else if (t.isModuleSpecifier(node)) { - gatherNodeParts(node.local, parts); - } else if (t.isLiteral(node)) { - parts.push(node.value); - } - - break; - - case "MemberExpression": - case "OptionalMemberExpression": - case "JSXMemberExpression": - gatherNodeParts(node.object, parts); - gatherNodeParts(node.property, parts); - break; - - case "Identifier": - case "JSXIdentifier": - parts.push(node.name); - break; - - case "CallExpression": - case "OptionalCallExpression": - case "NewExpression": - gatherNodeParts(node.callee, parts); - break; - - case "ObjectExpression": - case "ObjectPattern": - for (const e of node.properties) { - gatherNodeParts(e, parts); - } - - break; - - case "SpreadElement": - case "RestElement": - gatherNodeParts(node.argument, parts); - break; - - case "ObjectProperty": - case "ObjectMethod": - case "ClassProperty": - case "ClassMethod": - case "ClassPrivateProperty": - case "ClassPrivateMethod": - gatherNodeParts(node.key, parts); - break; - - case "ThisExpression": - parts.push("this"); - break; - - case "Super": - parts.push("super"); - break; - - case "Import": - parts.push("import"); - break; - - case "DoExpression": - parts.push("do"); - break; - - case "YieldExpression": - parts.push("yield"); - gatherNodeParts(node.argument, parts); - break; - - case "AwaitExpression": - parts.push("await"); - gatherNodeParts(node.argument, parts); - break; - - case "AssignmentExpression": - gatherNodeParts(node.left, parts); - break; - - case "VariableDeclarator": - gatherNodeParts(node.id, parts); - break; - - case "FunctionExpression": - case "FunctionDeclaration": - case "ClassExpression": - case "ClassDeclaration": - gatherNodeParts(node.id, parts); - break; - - case "PrivateName": - gatherNodeParts(node.id, parts); - break; - - case "ParenthesizedExpression": - gatherNodeParts(node.expression, parts); - break; - - case "UnaryExpression": - case "UpdateExpression": - gatherNodeParts(node.argument, parts); - break; - - case "MetaProperty": - gatherNodeParts(node.meta, parts); - gatherNodeParts(node.property, parts); - break; - - case "JSXElement": - gatherNodeParts(node.openingElement, parts); - break; - - case "JSXOpeningElement": - parts.push(node.name); - break; - - case "JSXFragment": - gatherNodeParts(node.openingFragment, parts); - break; - - case "JSXOpeningFragment": - parts.push("Fragment"); - break; - - case "JSXNamespacedName": - gatherNodeParts(node.namespace, parts); - gatherNodeParts(node.name, parts); - break; - } -} - -const collectorVisitor = { - For(path) { - for (const key of t.FOR_INIT_KEYS) { - const declar = path.get(key); - - if (declar.isVar()) { - const parentScope = path.scope.getFunctionParent() || path.scope.getProgramParent(); - parentScope.registerBinding("var", declar); - } - } - }, - - Declaration(path) { - if (path.isBlockScoped()) return; - if (path.isImportDeclaration()) return; - if (path.isExportDeclaration()) return; - const parent = path.scope.getFunctionParent() || path.scope.getProgramParent(); - parent.registerDeclaration(path); - }, - - ImportDeclaration(path) { - const parent = path.scope.getBlockParent(); - parent.registerDeclaration(path); - }, - - ReferencedIdentifier(path, state) { - state.references.push(path); - }, - - ForXStatement(path, state) { - const left = path.get("left"); - - if (left.isPattern() || left.isIdentifier()) { - state.constantViolations.push(path); - } - }, - - ExportDeclaration: { - exit(path) { - const { - node, - scope - } = path; - if (t.isExportAllDeclaration(node)) return; - const declar = node.declaration; - - if (t.isClassDeclaration(declar) || t.isFunctionDeclaration(declar)) { - const id = declar.id; - if (!id) return; - const binding = scope.getBinding(id.name); - if (binding) binding.reference(path); - } else if (t.isVariableDeclaration(declar)) { - for (const decl of declar.declarations) { - for (const name of Object.keys(t.getBindingIdentifiers(decl))) { - const binding = scope.getBinding(name); - if (binding) binding.reference(path); - } - } - } - } - - }, - - LabeledStatement(path) { - path.scope.getBlockParent().registerDeclaration(path); - }, - - AssignmentExpression(path, state) { - state.assignments.push(path); - }, - - UpdateExpression(path, state) { - state.constantViolations.push(path); - }, - - UnaryExpression(path, state) { - if (path.node.operator === "delete") { - state.constantViolations.push(path); - } - }, - - BlockScoped(path) { - let scope = path.scope; - if (scope.path === path) scope = scope.parent; - const parent = scope.getBlockParent(); - parent.registerDeclaration(path); - - if (path.isClassDeclaration() && path.node.id) { - const id = path.node.id; - const name = id.name; - path.scope.bindings[name] = path.scope.parent.getBinding(name); - } - }, - - CatchClause(path) { - path.scope.registerBinding("let", path); - }, - - Function(path) { - if (path.isFunctionExpression() && path.has("id") && !path.get("id").node[t.NOT_LOCAL_BINDING]) { - path.scope.registerBinding("local", path.get("id"), path); - } - - const params = path.get("params"); - - for (const param of params) { - path.scope.registerBinding("param", param); - } - }, - - ClassExpression(path) { - if (path.has("id") && !path.get("id").node[t.NOT_LOCAL_BINDING]) { - path.scope.registerBinding("local", path); - } - } - -}; -let uid = 0; - -class Scope { - constructor(path) { - this.uid = void 0; - this.path = void 0; - this.block = void 0; - this.labels = void 0; - this.inited = void 0; - this.bindings = void 0; - this.references = void 0; - this.globals = void 0; - this.uids = void 0; - this.data = void 0; - this.crawling = void 0; - const { - node - } = path; - - const cached = _cache.scope.get(node); - - if ((cached == null ? void 0 : cached.path) === path) { - return cached; - } - - _cache.scope.set(node, this); - - this.uid = uid++; - this.block = node; - this.path = path; - this.labels = new Map(); - this.inited = false; - } - - get parent() { - var _parent; - - let parent, - path = this.path; - - do { - const isKey = path.key === "key"; - path = path.parentPath; - if (isKey && path.isMethod()) path = path.parentPath; - if (path && path.isScope()) parent = path; - } while (path && !parent); - - return (_parent = parent) == null ? void 0 : _parent.scope; - } - - get parentBlock() { - return this.path.parent; - } - - get hub() { - return this.path.hub; - } - - traverse(node, opts, state) { - (0, _index.default)(node, opts, this, state, this.path); - } - - generateDeclaredUidIdentifier(name) { - const id = this.generateUidIdentifier(name); - this.push({ - id - }); - return t.cloneNode(id); - } - - generateUidIdentifier(name) { - return t.identifier(this.generateUid(name)); - } - - generateUid(name = "temp") { - name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, ""); - let uid; - let i = 1; - - do { - uid = this._generateUid(name, i); - i++; - } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid)); - - const program = this.getProgramParent(); - program.references[uid] = true; - program.uids[uid] = true; - return uid; - } - - _generateUid(name, i) { - let id = name; - if (i > 1) id += i; - return `_${id}`; - } - - generateUidBasedOnNode(node, defaultName) { - const parts = []; - gatherNodeParts(node, parts); - let id = parts.join("$"); - id = id.replace(/^_/, "") || defaultName || "ref"; - return this.generateUid(id.slice(0, 20)); - } - - generateUidIdentifierBasedOnNode(node, defaultName) { - return t.identifier(this.generateUidBasedOnNode(node, defaultName)); - } - - isStatic(node) { - if (t.isThisExpression(node) || t.isSuper(node)) { - return true; - } - - if (t.isIdentifier(node)) { - const binding = this.getBinding(node.name); - - if (binding) { - return binding.constant; - } else { - return this.hasBinding(node.name); - } - } - - return false; - } - - maybeGenerateMemoised(node, dontPush) { - if (this.isStatic(node)) { - return null; - } else { - const id = this.generateUidIdentifierBasedOnNode(node); - - if (!dontPush) { - this.push({ - id - }); - return t.cloneNode(id); - } - - return id; - } - } - - checkBlockScopedCollisions(local, kind, name, id) { - if (kind === "param") return; - if (local.kind === "local") return; - const duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module" || local.kind === "param" && (kind === "let" || kind === "const"); - - if (duplicate) { - throw this.hub.buildError(id, `Duplicate declaration "${name}"`, TypeError); - } - } - - rename(oldName, newName, block) { - const binding = this.getBinding(oldName); - - if (binding) { - newName = newName || this.generateUidIdentifier(oldName).name; - return new _renamer.default(binding, oldName, newName).rename(block); - } - } - - _renameFromMap(map, oldName, newName, value) { - if (map[oldName]) { - map[newName] = value; - map[oldName] = null; - } - } - - dump() { - const sep = "-".repeat(60); - console.log(sep); - let scope = this; - - do { - console.log("#", scope.block.type); - - for (const name of Object.keys(scope.bindings)) { - const binding = scope.bindings[name]; - console.log(" -", name, { - constant: binding.constant, - references: binding.references, - violations: binding.constantViolations.length, - kind: binding.kind - }); - } - } while (scope = scope.parent); - - console.log(sep); - } - - toArray(node, i, arrayLikeIsIterable) { - if (t.isIdentifier(node)) { - const binding = this.getBinding(node.name); - - if (binding != null && binding.constant && binding.path.isGenericType("Array")) { - return node; - } - } - - if (t.isArrayExpression(node)) { - return node; - } - - if (t.isIdentifier(node, { - name: "arguments" - })) { - return t.callExpression(t.memberExpression(t.memberExpression(t.memberExpression(t.identifier("Array"), t.identifier("prototype")), t.identifier("slice")), t.identifier("call")), [node]); - } - - let helperName; - const args = [node]; - - if (i === true) { - helperName = "toConsumableArray"; - } else if (i) { - args.push(t.numericLiteral(i)); - helperName = "slicedToArray"; - } else { - helperName = "toArray"; - } - - if (arrayLikeIsIterable) { - args.unshift(this.hub.addHelper(helperName)); - helperName = "maybeArrayLike"; - } - - return t.callExpression(this.hub.addHelper(helperName), args); - } - - hasLabel(name) { - return !!this.getLabel(name); - } - - getLabel(name) { - return this.labels.get(name); - } - - registerLabel(path) { - this.labels.set(path.node.label.name, path); - } - - registerDeclaration(path) { - if (path.isLabeledStatement()) { - this.registerLabel(path); - } else if (path.isFunctionDeclaration()) { - this.registerBinding("hoisted", path.get("id"), path); - } else if (path.isVariableDeclaration()) { - const declarations = path.get("declarations"); - - for (const declar of declarations) { - this.registerBinding(path.node.kind, declar); - } - } else if (path.isClassDeclaration()) { - this.registerBinding("let", path); - } else if (path.isImportDeclaration()) { - const specifiers = path.get("specifiers"); - - for (const specifier of specifiers) { - this.registerBinding("module", specifier); - } - } else if (path.isExportDeclaration()) { - const declar = path.get("declaration"); - - if (declar.isClassDeclaration() || declar.isFunctionDeclaration() || declar.isVariableDeclaration()) { - this.registerDeclaration(declar); - } - } else { - this.registerBinding("unknown", path); - } - } - - buildUndefinedNode() { - return t.unaryExpression("void", t.numericLiteral(0), true); - } - - registerConstantViolation(path) { - const ids = path.getBindingIdentifiers(); - - for (const name of Object.keys(ids)) { - const binding = this.getBinding(name); - if (binding) binding.reassign(path); - } - } - - registerBinding(kind, path, bindingPath = path) { - if (!kind) throw new ReferenceError("no `kind`"); - - if (path.isVariableDeclaration()) { - const declarators = path.get("declarations"); - - for (const declar of declarators) { - this.registerBinding(kind, declar); - } - - return; - } - - const parent = this.getProgramParent(); - const ids = path.getOuterBindingIdentifiers(true); - - for (const name of Object.keys(ids)) { - parent.references[name] = true; - - for (const id of ids[name]) { - const local = this.getOwnBinding(name); - - if (local) { - if (local.identifier === id) continue; - this.checkBlockScopedCollisions(local, kind, name, id); - } - - if (local) { - this.registerConstantViolation(bindingPath); - } else { - this.bindings[name] = new _binding.default({ - identifier: id, - scope: this, - path: bindingPath, - kind: kind - }); - } - } - } - } - - addGlobal(node) { - this.globals[node.name] = node; - } - - hasUid(name) { - let scope = this; - - do { - if (scope.uids[name]) return true; - } while (scope = scope.parent); - - return false; - } - - hasGlobal(name) { - let scope = this; - - do { - if (scope.globals[name]) return true; - } while (scope = scope.parent); - - return false; - } - - hasReference(name) { - return !!this.getProgramParent().references[name]; - } - - isPure(node, constantsOnly) { - if (t.isIdentifier(node)) { - const binding = this.getBinding(node.name); - if (!binding) return false; - if (constantsOnly) return binding.constant; - return true; - } else if (t.isClass(node)) { - if (node.superClass && !this.isPure(node.superClass, constantsOnly)) { - return false; - } - - return this.isPure(node.body, constantsOnly); - } else if (t.isClassBody(node)) { - for (const method of node.body) { - if (!this.isPure(method, constantsOnly)) return false; - } - - return true; - } else if (t.isBinary(node)) { - return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly); - } else if (t.isArrayExpression(node)) { - for (const elem of node.elements) { - if (!this.isPure(elem, constantsOnly)) return false; - } - - return true; - } else if (t.isObjectExpression(node)) { - for (const prop of node.properties) { - if (!this.isPure(prop, constantsOnly)) return false; - } - - return true; - } else if (t.isMethod(node)) { - if (node.computed && !this.isPure(node.key, constantsOnly)) return false; - if (node.kind === "get" || node.kind === "set") return false; - return true; - } else if (t.isProperty(node)) { - if (node.computed && !this.isPure(node.key, constantsOnly)) return false; - return this.isPure(node.value, constantsOnly); - } else if (t.isUnaryExpression(node)) { - return this.isPure(node.argument, constantsOnly); - } else if (t.isTaggedTemplateExpression(node)) { - return t.matchesPattern(node.tag, "String.raw") && !this.hasBinding("String", true) && this.isPure(node.quasi, constantsOnly); - } else if (t.isTemplateLiteral(node)) { - for (const expression of node.expressions) { - if (!this.isPure(expression, constantsOnly)) return false; - } - - return true; - } else { - return t.isPureish(node); - } - } - - setData(key, val) { - return this.data[key] = val; - } - - getData(key) { - let scope = this; - - do { - const data = scope.data[key]; - if (data != null) return data; - } while (scope = scope.parent); - } - - removeData(key) { - let scope = this; - - do { - const data = scope.data[key]; - if (data != null) scope.data[key] = null; - } while (scope = scope.parent); - } - - init() { - if (!this.inited) { - this.inited = true; - this.crawl(); - } - } - - crawl() { - const path = this.path; - this.references = Object.create(null); - this.bindings = Object.create(null); - this.globals = Object.create(null); - this.uids = Object.create(null); - this.data = Object.create(null); - const programParent = this.getProgramParent(); - if (programParent.crawling) return; - const state = { - references: [], - constantViolations: [], - assignments: [] - }; - this.crawling = true; - - if (path.type !== "Program" && collectorVisitor._exploded) { - for (const visit of collectorVisitor.enter) { - visit(path, state); - } - - const typeVisitors = collectorVisitor[path.type]; - - if (typeVisitors) { - for (const visit of typeVisitors.enter) { - visit(path, state); - } - } - } - - path.traverse(collectorVisitor, state); - this.crawling = false; - - for (const path of state.assignments) { - const ids = path.getBindingIdentifiers(); - - for (const name of Object.keys(ids)) { - if (path.scope.getBinding(name)) continue; - programParent.addGlobal(ids[name]); - } - - path.scope.registerConstantViolation(path); - } - - for (const ref of state.references) { - const binding = ref.scope.getBinding(ref.node.name); - - if (binding) { - binding.reference(ref); - } else { - programParent.addGlobal(ref.node); - } - } - - for (const path of state.constantViolations) { - path.scope.registerConstantViolation(path); - } - } - - push(opts) { - let path = this.path; - - if (!path.isBlockStatement() && !path.isProgram()) { - path = this.getBlockParent().path; - } - - if (path.isSwitchStatement()) { - path = (this.getFunctionParent() || this.getProgramParent()).path; - } - - if (path.isLoop() || path.isCatchClause() || path.isFunction()) { - path.ensureBlock(); - path = path.get("body"); - } - - const unique = opts.unique; - const kind = opts.kind || "var"; - const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist; - const dataKey = `declaration:${kind}:${blockHoist}`; - let declarPath = !unique && path.getData(dataKey); - - if (!declarPath) { - const declar = t.variableDeclaration(kind, []); - declar._blockHoist = blockHoist; - [declarPath] = path.unshiftContainer("body", [declar]); - if (!unique) path.setData(dataKey, declarPath); - } - - const declarator = t.variableDeclarator(opts.id, opts.init); - declarPath.node.declarations.push(declarator); - this.registerBinding(kind, declarPath.get("declarations").pop()); - } - - getProgramParent() { - let scope = this; - - do { - if (scope.path.isProgram()) { - return scope; - } - } while (scope = scope.parent); - - throw new Error("Couldn't find a Program"); - } - - getFunctionParent() { - let scope = this; - - do { - if (scope.path.isFunctionParent()) { - return scope; - } - } while (scope = scope.parent); - - return null; - } - - getBlockParent() { - let scope = this; - - do { - if (scope.path.isBlockParent()) { - return scope; - } - } while (scope = scope.parent); - - throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."); - } - - getAllBindings() { - const ids = Object.create(null); - let scope = this; - - do { - for (const key of Object.keys(scope.bindings)) { - if (key in ids === false) { - ids[key] = scope.bindings[key]; - } - } - - scope = scope.parent; - } while (scope); - - return ids; - } - - getAllBindingsOfKind(...kinds) { - const ids = Object.create(null); - - for (const kind of kinds) { - let scope = this; - - do { - for (const name of Object.keys(scope.bindings)) { - const binding = scope.bindings[name]; - if (binding.kind === kind) ids[name] = binding; - } - - scope = scope.parent; - } while (scope); - } - - return ids; - } - - bindingIdentifierEquals(name, node) { - return this.getBindingIdentifier(name) === node; - } - - getBinding(name) { - let scope = this; - let previousPath; - - do { - const binding = scope.getOwnBinding(name); - - if (binding) { - var _previousPath; - - if ((_previousPath = previousPath) != null && _previousPath.isPattern() && binding.kind !== "param") {} else { - return binding; - } - } - - previousPath = scope.path; - } while (scope = scope.parent); - } - - getOwnBinding(name) { - return this.bindings[name]; - } - - getBindingIdentifier(name) { - var _this$getBinding; - - return (_this$getBinding = this.getBinding(name)) == null ? void 0 : _this$getBinding.identifier; - } - - getOwnBindingIdentifier(name) { - const binding = this.bindings[name]; - return binding == null ? void 0 : binding.identifier; - } - - hasOwnBinding(name) { - return !!this.getOwnBinding(name); - } - - hasBinding(name, noGlobals) { - if (!name) return false; - if (this.hasOwnBinding(name)) return true; - if (this.parentHasBinding(name, noGlobals)) return true; - if (this.hasUid(name)) return true; - if (!noGlobals && Scope.globals.includes(name)) return true; - if (!noGlobals && Scope.contextVariables.includes(name)) return true; - return false; - } - - parentHasBinding(name, noGlobals) { - var _this$parent; - - return (_this$parent = this.parent) == null ? void 0 : _this$parent.hasBinding(name, noGlobals); - } - - moveBindingTo(name, scope) { - const info = this.getBinding(name); - - if (info) { - info.scope.removeOwnBinding(name); - info.scope = scope; - scope.bindings[name] = info; - } - } - - removeOwnBinding(name) { - delete this.bindings[name]; - } - - removeBinding(name) { - var _this$getBinding2; - - (_this$getBinding2 = this.getBinding(name)) == null ? void 0 : _this$getBinding2.scope.removeOwnBinding(name); - let scope = this; - - do { - if (scope.uids[name]) { - scope.uids[name] = false; - } - } while (scope = scope.parent); - } - -} - -exports["default"] = Scope; -Scope.globals = Object.keys(_globals.builtin); -Scope.contextVariables = ["arguments", "undefined", "Infinity", "NaN"]; - -/***/ }), - -/***/ 30096: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _binding = __nccwpck_require__(14774); - -var _helperSplitExportDeclaration = __nccwpck_require__(37058); - -var t = __nccwpck_require__(24479); - -const renameVisitor = { - ReferencedIdentifier({ - node - }, state) { - if (node.name === state.oldName) { - node.name = state.newName; - } - }, - - Scope(path, state) { - if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) { - skipAllButComputedMethodKey(path); - } - }, - - "AssignmentExpression|Declaration|VariableDeclarator"(path, state) { - if (path.isVariableDeclaration()) return; - const ids = path.getOuterBindingIdentifiers(); - - for (const name in ids) { - if (name === state.oldName) ids[name].name = state.newName; - } - } - -}; - -class Renamer { - constructor(binding, oldName, newName) { - this.newName = newName; - this.oldName = oldName; - this.binding = binding; - } - - maybeConvertFromExportDeclaration(parentDeclar) { - const maybeExportDeclar = parentDeclar.parentPath; - - if (!maybeExportDeclar.isExportDeclaration()) { - return; - } - - if (maybeExportDeclar.isExportDefaultDeclaration() && !maybeExportDeclar.get("declaration").node.id) { - return; - } - - (0, _helperSplitExportDeclaration.default)(maybeExportDeclar); - } - - maybeConvertFromClassFunctionDeclaration(path) { - return; - if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return; - if (this.binding.kind !== "hoisted") return; - path.node.id = t.identifier(this.oldName); - path.node._blockHoist = 3; - path.replaceWith(t.variableDeclaration("let", [t.variableDeclarator(t.identifier(this.newName), t.toExpression(path.node))])); - } - - maybeConvertFromClassFunctionExpression(path) { - return; - if (!path.isFunctionExpression() && !path.isClassExpression()) return; - if (this.binding.kind !== "local") return; - path.node.id = t.identifier(this.oldName); - this.binding.scope.parent.push({ - id: t.identifier(this.newName) - }); - path.replaceWith(t.assignmentExpression("=", t.identifier(this.newName), path.node)); - } - - rename(block) { - const { - binding, - oldName, - newName - } = this; - const { - scope, - path - } = binding; - const parentDeclar = path.find(path => path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression()); - - if (parentDeclar) { - const bindingIds = parentDeclar.getOuterBindingIdentifiers(); - - if (bindingIds[oldName] === binding.identifier) { - this.maybeConvertFromExportDeclaration(parentDeclar); - } - } - - const blockToTraverse = block || scope.block; - - if ((blockToTraverse == null ? void 0 : blockToTraverse.type) === "SwitchStatement") { - blockToTraverse.cases.forEach(c => { - scope.traverse(c, renameVisitor, this); - }); - } else { - scope.traverse(blockToTraverse, renameVisitor, this); - } - - if (!block) { - scope.removeOwnBinding(oldName); - scope.bindings[newName] = binding; - this.binding.identifier.name = newName; - } - - if (parentDeclar) { - this.maybeConvertFromClassFunctionDeclaration(parentDeclar); - this.maybeConvertFromClassFunctionExpression(parentDeclar); - } - } - -} - -exports["default"] = Renamer; - -function skipAllButComputedMethodKey(path) { - if (!path.isMethod() || !path.node.computed) { - path.skip(); - return; - } - - const keys = t.VISITOR_KEYS[path.type]; - - for (const key of keys) { - if (key !== "key") path.skipKey(key); - } -} - -/***/ }), - -/***/ 93314: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.explode = explode; -exports.verify = verify; -exports.merge = merge; - -var virtualTypes = __nccwpck_require__(89637); - -var t = __nccwpck_require__(24479); - -function explode(visitor) { - if (visitor._exploded) return visitor; - visitor._exploded = true; - - for (const nodeType of Object.keys(visitor)) { - if (shouldIgnoreKey(nodeType)) continue; - const parts = nodeType.split("|"); - if (parts.length === 1) continue; - const fns = visitor[nodeType]; - delete visitor[nodeType]; - - for (const part of parts) { - visitor[part] = fns; - } - } - - verify(visitor); - delete visitor.__esModule; - ensureEntranceObjects(visitor); - ensureCallbackArrays(visitor); - - for (const nodeType of Object.keys(visitor)) { - if (shouldIgnoreKey(nodeType)) continue; - const wrapper = virtualTypes[nodeType]; - if (!wrapper) continue; - const fns = visitor[nodeType]; - - for (const type of Object.keys(fns)) { - fns[type] = wrapCheck(wrapper, fns[type]); - } - - delete visitor[nodeType]; - - if (wrapper.types) { - for (const type of wrapper.types) { - if (visitor[type]) { - mergePair(visitor[type], fns); - } else { - visitor[type] = fns; - } - } - } else { - mergePair(visitor, fns); - } - } - - for (const nodeType of Object.keys(visitor)) { - if (shouldIgnoreKey(nodeType)) continue; - const fns = visitor[nodeType]; - let aliases = t.FLIPPED_ALIAS_KEYS[nodeType]; - const deprecatedKey = t.DEPRECATED_KEYS[nodeType]; - - if (deprecatedKey) { - console.trace(`Visitor defined for ${nodeType} but it has been renamed to ${deprecatedKey}`); - aliases = [deprecatedKey]; - } - - if (!aliases) continue; - delete visitor[nodeType]; - - for (const alias of aliases) { - const existing = visitor[alias]; - - if (existing) { - mergePair(existing, fns); - } else { - visitor[alias] = Object.assign({}, fns); - } - } - } - - for (const nodeType of Object.keys(visitor)) { - if (shouldIgnoreKey(nodeType)) continue; - ensureCallbackArrays(visitor[nodeType]); - } - - return visitor; -} - -function verify(visitor) { - if (visitor._verified) return; - - if (typeof visitor === "function") { - throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?"); - } - - for (const nodeType of Object.keys(visitor)) { - if (nodeType === "enter" || nodeType === "exit") { - validateVisitorMethods(nodeType, visitor[nodeType]); - } - - if (shouldIgnoreKey(nodeType)) continue; - - if (t.TYPES.indexOf(nodeType) < 0) { - throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type`); - } - - const visitors = visitor[nodeType]; - - if (typeof visitors === "object") { - for (const visitorKey of Object.keys(visitors)) { - if (visitorKey === "enter" || visitorKey === "exit") { - validateVisitorMethods(`${nodeType}.${visitorKey}`, visitors[visitorKey]); - } else { - throw new Error("You passed `traverse()` a visitor object with the property " + `${nodeType} that has the invalid property ${visitorKey}`); - } - } - } - } - - visitor._verified = true; -} - -function validateVisitorMethods(path, val) { - const fns = [].concat(val); - - for (const fn of fns) { - if (typeof fn !== "function") { - throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`); - } - } -} - -function merge(visitors, states = [], wrapper) { - const rootVisitor = {}; - - for (let i = 0; i < visitors.length; i++) { - const visitor = visitors[i]; - const state = states[i]; - explode(visitor); - - for (const type of Object.keys(visitor)) { - let visitorType = visitor[type]; - - if (state || wrapper) { - visitorType = wrapWithStateOrWrapper(visitorType, state, wrapper); - } - - const nodeVisitor = rootVisitor[type] = rootVisitor[type] || {}; - mergePair(nodeVisitor, visitorType); - } - } - - return rootVisitor; -} - -function wrapWithStateOrWrapper(oldVisitor, state, wrapper) { - const newVisitor = {}; - - for (const key of Object.keys(oldVisitor)) { - let fns = oldVisitor[key]; - if (!Array.isArray(fns)) continue; - fns = fns.map(function (fn) { - let newFn = fn; - - if (state) { - newFn = function (path) { - return fn.call(state, path, state); - }; - } - - if (wrapper) { - newFn = wrapper(state.key, key, newFn); - } - - if (newFn !== fn) { - newFn.toString = () => fn.toString(); - } - - return newFn; - }); - newVisitor[key] = fns; - } - - return newVisitor; -} - -function ensureEntranceObjects(obj) { - for (const key of Object.keys(obj)) { - if (shouldIgnoreKey(key)) continue; - const fns = obj[key]; - - if (typeof fns === "function") { - obj[key] = { - enter: fns - }; - } - } -} - -function ensureCallbackArrays(obj) { - if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter]; - if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit]; -} - -function wrapCheck(wrapper, fn) { - const newFn = function (path) { - if (wrapper.checkPath(path)) { - return fn.apply(this, arguments); - } - }; - - newFn.toString = () => fn.toString(); - - return newFn; -} - -function shouldIgnoreKey(key) { - if (key[0] === "_") return true; - if (key === "enter" || key === "exit" || key === "shouldSkip") return true; - - if (key === "denylist" || key === "noScope" || key === "skipKeys" || key === "blacklist") { - return true; - } - - return false; -} - -function mergePair(dest, src) { - for (const key of Object.keys(src)) { - dest[key] = [].concat(dest[key] || [], src[key]); - } -} - -/***/ }), - -/***/ 98162: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = assertNode; - -var _isNode = __nccwpck_require__(46832); - -function assertNode(node) { - if (!(0, _isNode.default)(node)) { - var _node$type; - - const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node); - throw new TypeError(`Not a valid node of type "${type}"`); - } -} - -/***/ }), - -/***/ 93333: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.assertArrayExpression = assertArrayExpression; -exports.assertAssignmentExpression = assertAssignmentExpression; -exports.assertBinaryExpression = assertBinaryExpression; -exports.assertInterpreterDirective = assertInterpreterDirective; -exports.assertDirective = assertDirective; -exports.assertDirectiveLiteral = assertDirectiveLiteral; -exports.assertBlockStatement = assertBlockStatement; -exports.assertBreakStatement = assertBreakStatement; -exports.assertCallExpression = assertCallExpression; -exports.assertCatchClause = assertCatchClause; -exports.assertConditionalExpression = assertConditionalExpression; -exports.assertContinueStatement = assertContinueStatement; -exports.assertDebuggerStatement = assertDebuggerStatement; -exports.assertDoWhileStatement = assertDoWhileStatement; -exports.assertEmptyStatement = assertEmptyStatement; -exports.assertExpressionStatement = assertExpressionStatement; -exports.assertFile = assertFile; -exports.assertForInStatement = assertForInStatement; -exports.assertForStatement = assertForStatement; -exports.assertFunctionDeclaration = assertFunctionDeclaration; -exports.assertFunctionExpression = assertFunctionExpression; -exports.assertIdentifier = assertIdentifier; -exports.assertIfStatement = assertIfStatement; -exports.assertLabeledStatement = assertLabeledStatement; -exports.assertStringLiteral = assertStringLiteral; -exports.assertNumericLiteral = assertNumericLiteral; -exports.assertNullLiteral = assertNullLiteral; -exports.assertBooleanLiteral = assertBooleanLiteral; -exports.assertRegExpLiteral = assertRegExpLiteral; -exports.assertLogicalExpression = assertLogicalExpression; -exports.assertMemberExpression = assertMemberExpression; -exports.assertNewExpression = assertNewExpression; -exports.assertProgram = assertProgram; -exports.assertObjectExpression = assertObjectExpression; -exports.assertObjectMethod = assertObjectMethod; -exports.assertObjectProperty = assertObjectProperty; -exports.assertRestElement = assertRestElement; -exports.assertReturnStatement = assertReturnStatement; -exports.assertSequenceExpression = assertSequenceExpression; -exports.assertParenthesizedExpression = assertParenthesizedExpression; -exports.assertSwitchCase = assertSwitchCase; -exports.assertSwitchStatement = assertSwitchStatement; -exports.assertThisExpression = assertThisExpression; -exports.assertThrowStatement = assertThrowStatement; -exports.assertTryStatement = assertTryStatement; -exports.assertUnaryExpression = assertUnaryExpression; -exports.assertUpdateExpression = assertUpdateExpression; -exports.assertVariableDeclaration = assertVariableDeclaration; -exports.assertVariableDeclarator = assertVariableDeclarator; -exports.assertWhileStatement = assertWhileStatement; -exports.assertWithStatement = assertWithStatement; -exports.assertAssignmentPattern = assertAssignmentPattern; -exports.assertArrayPattern = assertArrayPattern; -exports.assertArrowFunctionExpression = assertArrowFunctionExpression; -exports.assertClassBody = assertClassBody; -exports.assertClassExpression = assertClassExpression; -exports.assertClassDeclaration = assertClassDeclaration; -exports.assertExportAllDeclaration = assertExportAllDeclaration; -exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration; -exports.assertExportNamedDeclaration = assertExportNamedDeclaration; -exports.assertExportSpecifier = assertExportSpecifier; -exports.assertForOfStatement = assertForOfStatement; -exports.assertImportDeclaration = assertImportDeclaration; -exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier; -exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier; -exports.assertImportSpecifier = assertImportSpecifier; -exports.assertMetaProperty = assertMetaProperty; -exports.assertClassMethod = assertClassMethod; -exports.assertObjectPattern = assertObjectPattern; -exports.assertSpreadElement = assertSpreadElement; -exports.assertSuper = assertSuper; -exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression; -exports.assertTemplateElement = assertTemplateElement; -exports.assertTemplateLiteral = assertTemplateLiteral; -exports.assertYieldExpression = assertYieldExpression; -exports.assertAwaitExpression = assertAwaitExpression; -exports.assertImport = assertImport; -exports.assertBigIntLiteral = assertBigIntLiteral; -exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier; -exports.assertOptionalMemberExpression = assertOptionalMemberExpression; -exports.assertOptionalCallExpression = assertOptionalCallExpression; -exports.assertClassProperty = assertClassProperty; -exports.assertClassPrivateProperty = assertClassPrivateProperty; -exports.assertClassPrivateMethod = assertClassPrivateMethod; -exports.assertPrivateName = assertPrivateName; -exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation; -exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation; -exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation; -exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation; -exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation; -exports.assertClassImplements = assertClassImplements; -exports.assertDeclareClass = assertDeclareClass; -exports.assertDeclareFunction = assertDeclareFunction; -exports.assertDeclareInterface = assertDeclareInterface; -exports.assertDeclareModule = assertDeclareModule; -exports.assertDeclareModuleExports = assertDeclareModuleExports; -exports.assertDeclareTypeAlias = assertDeclareTypeAlias; -exports.assertDeclareOpaqueType = assertDeclareOpaqueType; -exports.assertDeclareVariable = assertDeclareVariable; -exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration; -exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration; -exports.assertDeclaredPredicate = assertDeclaredPredicate; -exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation; -exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation; -exports.assertFunctionTypeParam = assertFunctionTypeParam; -exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation; -exports.assertInferredPredicate = assertInferredPredicate; -exports.assertInterfaceExtends = assertInterfaceExtends; -exports.assertInterfaceDeclaration = assertInterfaceDeclaration; -exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation; -exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation; -exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation; -exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation; -exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation; -exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation; -exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation; -exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation; -exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot; -exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty; -exports.assertObjectTypeIndexer = assertObjectTypeIndexer; -exports.assertObjectTypeProperty = assertObjectTypeProperty; -exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty; -exports.assertOpaqueType = assertOpaqueType; -exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier; -exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation; -exports.assertStringTypeAnnotation = assertStringTypeAnnotation; -exports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation; -exports.assertThisTypeAnnotation = assertThisTypeAnnotation; -exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation; -exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation; -exports.assertTypeAlias = assertTypeAlias; -exports.assertTypeAnnotation = assertTypeAnnotation; -exports.assertTypeCastExpression = assertTypeCastExpression; -exports.assertTypeParameter = assertTypeParameter; -exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration; -exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation; -exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation; -exports.assertVariance = assertVariance; -exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation; -exports.assertEnumDeclaration = assertEnumDeclaration; -exports.assertEnumBooleanBody = assertEnumBooleanBody; -exports.assertEnumNumberBody = assertEnumNumberBody; -exports.assertEnumStringBody = assertEnumStringBody; -exports.assertEnumSymbolBody = assertEnumSymbolBody; -exports.assertEnumBooleanMember = assertEnumBooleanMember; -exports.assertEnumNumberMember = assertEnumNumberMember; -exports.assertEnumStringMember = assertEnumStringMember; -exports.assertEnumDefaultedMember = assertEnumDefaultedMember; -exports.assertIndexedAccessType = assertIndexedAccessType; -exports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType; -exports.assertJSXAttribute = assertJSXAttribute; -exports.assertJSXClosingElement = assertJSXClosingElement; -exports.assertJSXElement = assertJSXElement; -exports.assertJSXEmptyExpression = assertJSXEmptyExpression; -exports.assertJSXExpressionContainer = assertJSXExpressionContainer; -exports.assertJSXSpreadChild = assertJSXSpreadChild; -exports.assertJSXIdentifier = assertJSXIdentifier; -exports.assertJSXMemberExpression = assertJSXMemberExpression; -exports.assertJSXNamespacedName = assertJSXNamespacedName; -exports.assertJSXOpeningElement = assertJSXOpeningElement; -exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute; -exports.assertJSXText = assertJSXText; -exports.assertJSXFragment = assertJSXFragment; -exports.assertJSXOpeningFragment = assertJSXOpeningFragment; -exports.assertJSXClosingFragment = assertJSXClosingFragment; -exports.assertNoop = assertNoop; -exports.assertPlaceholder = assertPlaceholder; -exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier; -exports.assertArgumentPlaceholder = assertArgumentPlaceholder; -exports.assertBindExpression = assertBindExpression; -exports.assertImportAttribute = assertImportAttribute; -exports.assertDecorator = assertDecorator; -exports.assertDoExpression = assertDoExpression; -exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier; -exports.assertRecordExpression = assertRecordExpression; -exports.assertTupleExpression = assertTupleExpression; -exports.assertDecimalLiteral = assertDecimalLiteral; -exports.assertStaticBlock = assertStaticBlock; -exports.assertModuleExpression = assertModuleExpression; -exports.assertTopicReference = assertTopicReference; -exports.assertPipelineTopicExpression = assertPipelineTopicExpression; -exports.assertPipelineBareFunction = assertPipelineBareFunction; -exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference; -exports.assertTSParameterProperty = assertTSParameterProperty; -exports.assertTSDeclareFunction = assertTSDeclareFunction; -exports.assertTSDeclareMethod = assertTSDeclareMethod; -exports.assertTSQualifiedName = assertTSQualifiedName; -exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration; -exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration; -exports.assertTSPropertySignature = assertTSPropertySignature; -exports.assertTSMethodSignature = assertTSMethodSignature; -exports.assertTSIndexSignature = assertTSIndexSignature; -exports.assertTSAnyKeyword = assertTSAnyKeyword; -exports.assertTSBooleanKeyword = assertTSBooleanKeyword; -exports.assertTSBigIntKeyword = assertTSBigIntKeyword; -exports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword; -exports.assertTSNeverKeyword = assertTSNeverKeyword; -exports.assertTSNullKeyword = assertTSNullKeyword; -exports.assertTSNumberKeyword = assertTSNumberKeyword; -exports.assertTSObjectKeyword = assertTSObjectKeyword; -exports.assertTSStringKeyword = assertTSStringKeyword; -exports.assertTSSymbolKeyword = assertTSSymbolKeyword; -exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword; -exports.assertTSUnknownKeyword = assertTSUnknownKeyword; -exports.assertTSVoidKeyword = assertTSVoidKeyword; -exports.assertTSThisType = assertTSThisType; -exports.assertTSFunctionType = assertTSFunctionType; -exports.assertTSConstructorType = assertTSConstructorType; -exports.assertTSTypeReference = assertTSTypeReference; -exports.assertTSTypePredicate = assertTSTypePredicate; -exports.assertTSTypeQuery = assertTSTypeQuery; -exports.assertTSTypeLiteral = assertTSTypeLiteral; -exports.assertTSArrayType = assertTSArrayType; -exports.assertTSTupleType = assertTSTupleType; -exports.assertTSOptionalType = assertTSOptionalType; -exports.assertTSRestType = assertTSRestType; -exports.assertTSNamedTupleMember = assertTSNamedTupleMember; -exports.assertTSUnionType = assertTSUnionType; -exports.assertTSIntersectionType = assertTSIntersectionType; -exports.assertTSConditionalType = assertTSConditionalType; -exports.assertTSInferType = assertTSInferType; -exports.assertTSParenthesizedType = assertTSParenthesizedType; -exports.assertTSTypeOperator = assertTSTypeOperator; -exports.assertTSIndexedAccessType = assertTSIndexedAccessType; -exports.assertTSMappedType = assertTSMappedType; -exports.assertTSLiteralType = assertTSLiteralType; -exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments; -exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration; -exports.assertTSInterfaceBody = assertTSInterfaceBody; -exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration; -exports.assertTSAsExpression = assertTSAsExpression; -exports.assertTSTypeAssertion = assertTSTypeAssertion; -exports.assertTSEnumDeclaration = assertTSEnumDeclaration; -exports.assertTSEnumMember = assertTSEnumMember; -exports.assertTSModuleDeclaration = assertTSModuleDeclaration; -exports.assertTSModuleBlock = assertTSModuleBlock; -exports.assertTSImportType = assertTSImportType; -exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration; -exports.assertTSExternalModuleReference = assertTSExternalModuleReference; -exports.assertTSNonNullExpression = assertTSNonNullExpression; -exports.assertTSExportAssignment = assertTSExportAssignment; -exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration; -exports.assertTSTypeAnnotation = assertTSTypeAnnotation; -exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation; -exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration; -exports.assertTSTypeParameter = assertTSTypeParameter; -exports.assertExpression = assertExpression; -exports.assertBinary = assertBinary; -exports.assertScopable = assertScopable; -exports.assertBlockParent = assertBlockParent; -exports.assertBlock = assertBlock; -exports.assertStatement = assertStatement; -exports.assertTerminatorless = assertTerminatorless; -exports.assertCompletionStatement = assertCompletionStatement; -exports.assertConditional = assertConditional; -exports.assertLoop = assertLoop; -exports.assertWhile = assertWhile; -exports.assertExpressionWrapper = assertExpressionWrapper; -exports.assertFor = assertFor; -exports.assertForXStatement = assertForXStatement; -exports.assertFunction = assertFunction; -exports.assertFunctionParent = assertFunctionParent; -exports.assertPureish = assertPureish; -exports.assertDeclaration = assertDeclaration; -exports.assertPatternLike = assertPatternLike; -exports.assertLVal = assertLVal; -exports.assertTSEntityName = assertTSEntityName; -exports.assertLiteral = assertLiteral; -exports.assertImmutable = assertImmutable; -exports.assertUserWhitespacable = assertUserWhitespacable; -exports.assertMethod = assertMethod; -exports.assertObjectMember = assertObjectMember; -exports.assertProperty = assertProperty; -exports.assertUnaryLike = assertUnaryLike; -exports.assertPattern = assertPattern; -exports.assertClass = assertClass; -exports.assertModuleDeclaration = assertModuleDeclaration; -exports.assertExportDeclaration = assertExportDeclaration; -exports.assertModuleSpecifier = assertModuleSpecifier; -exports.assertPrivate = assertPrivate; -exports.assertFlow = assertFlow; -exports.assertFlowType = assertFlowType; -exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation; -exports.assertFlowDeclaration = assertFlowDeclaration; -exports.assertFlowPredicate = assertFlowPredicate; -exports.assertEnumBody = assertEnumBody; -exports.assertEnumMember = assertEnumMember; -exports.assertJSX = assertJSX; -exports.assertTSTypeElement = assertTSTypeElement; -exports.assertTSType = assertTSType; -exports.assertTSBaseType = assertTSBaseType; -exports.assertNumberLiteral = assertNumberLiteral; -exports.assertRegexLiteral = assertRegexLiteral; -exports.assertRestProperty = assertRestProperty; -exports.assertSpreadProperty = assertSpreadProperty; - -var _is = __nccwpck_require__(31334); - -function assert(type, node, opts) { - if (!(0, _is.default)(type, node, opts)) { - throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, ` + `but instead got "${node.type}".`); - } -} - -function assertArrayExpression(node, opts) { - assert("ArrayExpression", node, opts); -} - -function assertAssignmentExpression(node, opts) { - assert("AssignmentExpression", node, opts); -} - -function assertBinaryExpression(node, opts) { - assert("BinaryExpression", node, opts); -} - -function assertInterpreterDirective(node, opts) { - assert("InterpreterDirective", node, opts); -} - -function assertDirective(node, opts) { - assert("Directive", node, opts); -} - -function assertDirectiveLiteral(node, opts) { - assert("DirectiveLiteral", node, opts); -} - -function assertBlockStatement(node, opts) { - assert("BlockStatement", node, opts); -} - -function assertBreakStatement(node, opts) { - assert("BreakStatement", node, opts); -} - -function assertCallExpression(node, opts) { - assert("CallExpression", node, opts); -} - -function assertCatchClause(node, opts) { - assert("CatchClause", node, opts); -} - -function assertConditionalExpression(node, opts) { - assert("ConditionalExpression", node, opts); -} - -function assertContinueStatement(node, opts) { - assert("ContinueStatement", node, opts); -} - -function assertDebuggerStatement(node, opts) { - assert("DebuggerStatement", node, opts); -} - -function assertDoWhileStatement(node, opts) { - assert("DoWhileStatement", node, opts); -} - -function assertEmptyStatement(node, opts) { - assert("EmptyStatement", node, opts); -} - -function assertExpressionStatement(node, opts) { - assert("ExpressionStatement", node, opts); -} - -function assertFile(node, opts) { - assert("File", node, opts); -} - -function assertForInStatement(node, opts) { - assert("ForInStatement", node, opts); -} - -function assertForStatement(node, opts) { - assert("ForStatement", node, opts); -} - -function assertFunctionDeclaration(node, opts) { - assert("FunctionDeclaration", node, opts); -} - -function assertFunctionExpression(node, opts) { - assert("FunctionExpression", node, opts); -} - -function assertIdentifier(node, opts) { - assert("Identifier", node, opts); -} - -function assertIfStatement(node, opts) { - assert("IfStatement", node, opts); -} - -function assertLabeledStatement(node, opts) { - assert("LabeledStatement", node, opts); -} - -function assertStringLiteral(node, opts) { - assert("StringLiteral", node, opts); -} - -function assertNumericLiteral(node, opts) { - assert("NumericLiteral", node, opts); -} - -function assertNullLiteral(node, opts) { - assert("NullLiteral", node, opts); -} - -function assertBooleanLiteral(node, opts) { - assert("BooleanLiteral", node, opts); -} - -function assertRegExpLiteral(node, opts) { - assert("RegExpLiteral", node, opts); -} - -function assertLogicalExpression(node, opts) { - assert("LogicalExpression", node, opts); -} - -function assertMemberExpression(node, opts) { - assert("MemberExpression", node, opts); -} - -function assertNewExpression(node, opts) { - assert("NewExpression", node, opts); -} - -function assertProgram(node, opts) { - assert("Program", node, opts); -} - -function assertObjectExpression(node, opts) { - assert("ObjectExpression", node, opts); -} - -function assertObjectMethod(node, opts) { - assert("ObjectMethod", node, opts); -} - -function assertObjectProperty(node, opts) { - assert("ObjectProperty", node, opts); -} - -function assertRestElement(node, opts) { - assert("RestElement", node, opts); -} - -function assertReturnStatement(node, opts) { - assert("ReturnStatement", node, opts); -} - -function assertSequenceExpression(node, opts) { - assert("SequenceExpression", node, opts); -} - -function assertParenthesizedExpression(node, opts) { - assert("ParenthesizedExpression", node, opts); -} - -function assertSwitchCase(node, opts) { - assert("SwitchCase", node, opts); -} - -function assertSwitchStatement(node, opts) { - assert("SwitchStatement", node, opts); -} - -function assertThisExpression(node, opts) { - assert("ThisExpression", node, opts); -} - -function assertThrowStatement(node, opts) { - assert("ThrowStatement", node, opts); -} - -function assertTryStatement(node, opts) { - assert("TryStatement", node, opts); -} - -function assertUnaryExpression(node, opts) { - assert("UnaryExpression", node, opts); -} - -function assertUpdateExpression(node, opts) { - assert("UpdateExpression", node, opts); -} - -function assertVariableDeclaration(node, opts) { - assert("VariableDeclaration", node, opts); -} - -function assertVariableDeclarator(node, opts) { - assert("VariableDeclarator", node, opts); -} - -function assertWhileStatement(node, opts) { - assert("WhileStatement", node, opts); -} - -function assertWithStatement(node, opts) { - assert("WithStatement", node, opts); -} - -function assertAssignmentPattern(node, opts) { - assert("AssignmentPattern", node, opts); -} - -function assertArrayPattern(node, opts) { - assert("ArrayPattern", node, opts); -} - -function assertArrowFunctionExpression(node, opts) { - assert("ArrowFunctionExpression", node, opts); -} - -function assertClassBody(node, opts) { - assert("ClassBody", node, opts); -} - -function assertClassExpression(node, opts) { - assert("ClassExpression", node, opts); -} - -function assertClassDeclaration(node, opts) { - assert("ClassDeclaration", node, opts); -} - -function assertExportAllDeclaration(node, opts) { - assert("ExportAllDeclaration", node, opts); -} - -function assertExportDefaultDeclaration(node, opts) { - assert("ExportDefaultDeclaration", node, opts); -} - -function assertExportNamedDeclaration(node, opts) { - assert("ExportNamedDeclaration", node, opts); -} - -function assertExportSpecifier(node, opts) { - assert("ExportSpecifier", node, opts); -} - -function assertForOfStatement(node, opts) { - assert("ForOfStatement", node, opts); -} - -function assertImportDeclaration(node, opts) { - assert("ImportDeclaration", node, opts); -} - -function assertImportDefaultSpecifier(node, opts) { - assert("ImportDefaultSpecifier", node, opts); -} - -function assertImportNamespaceSpecifier(node, opts) { - assert("ImportNamespaceSpecifier", node, opts); -} - -function assertImportSpecifier(node, opts) { - assert("ImportSpecifier", node, opts); -} - -function assertMetaProperty(node, opts) { - assert("MetaProperty", node, opts); -} - -function assertClassMethod(node, opts) { - assert("ClassMethod", node, opts); -} - -function assertObjectPattern(node, opts) { - assert("ObjectPattern", node, opts); -} - -function assertSpreadElement(node, opts) { - assert("SpreadElement", node, opts); -} - -function assertSuper(node, opts) { - assert("Super", node, opts); -} - -function assertTaggedTemplateExpression(node, opts) { - assert("TaggedTemplateExpression", node, opts); -} - -function assertTemplateElement(node, opts) { - assert("TemplateElement", node, opts); -} - -function assertTemplateLiteral(node, opts) { - assert("TemplateLiteral", node, opts); -} - -function assertYieldExpression(node, opts) { - assert("YieldExpression", node, opts); -} - -function assertAwaitExpression(node, opts) { - assert("AwaitExpression", node, opts); -} - -function assertImport(node, opts) { - assert("Import", node, opts); -} - -function assertBigIntLiteral(node, opts) { - assert("BigIntLiteral", node, opts); -} - -function assertExportNamespaceSpecifier(node, opts) { - assert("ExportNamespaceSpecifier", node, opts); -} - -function assertOptionalMemberExpression(node, opts) { - assert("OptionalMemberExpression", node, opts); -} - -function assertOptionalCallExpression(node, opts) { - assert("OptionalCallExpression", node, opts); -} - -function assertClassProperty(node, opts) { - assert("ClassProperty", node, opts); -} - -function assertClassPrivateProperty(node, opts) { - assert("ClassPrivateProperty", node, opts); -} - -function assertClassPrivateMethod(node, opts) { - assert("ClassPrivateMethod", node, opts); -} - -function assertPrivateName(node, opts) { - assert("PrivateName", node, opts); -} - -function assertAnyTypeAnnotation(node, opts) { - assert("AnyTypeAnnotation", node, opts); -} - -function assertArrayTypeAnnotation(node, opts) { - assert("ArrayTypeAnnotation", node, opts); -} - -function assertBooleanTypeAnnotation(node, opts) { - assert("BooleanTypeAnnotation", node, opts); -} - -function assertBooleanLiteralTypeAnnotation(node, opts) { - assert("BooleanLiteralTypeAnnotation", node, opts); -} - -function assertNullLiteralTypeAnnotation(node, opts) { - assert("NullLiteralTypeAnnotation", node, opts); -} - -function assertClassImplements(node, opts) { - assert("ClassImplements", node, opts); -} - -function assertDeclareClass(node, opts) { - assert("DeclareClass", node, opts); -} - -function assertDeclareFunction(node, opts) { - assert("DeclareFunction", node, opts); -} - -function assertDeclareInterface(node, opts) { - assert("DeclareInterface", node, opts); -} - -function assertDeclareModule(node, opts) { - assert("DeclareModule", node, opts); -} - -function assertDeclareModuleExports(node, opts) { - assert("DeclareModuleExports", node, opts); -} - -function assertDeclareTypeAlias(node, opts) { - assert("DeclareTypeAlias", node, opts); -} - -function assertDeclareOpaqueType(node, opts) { - assert("DeclareOpaqueType", node, opts); -} - -function assertDeclareVariable(node, opts) { - assert("DeclareVariable", node, opts); -} - -function assertDeclareExportDeclaration(node, opts) { - assert("DeclareExportDeclaration", node, opts); -} - -function assertDeclareExportAllDeclaration(node, opts) { - assert("DeclareExportAllDeclaration", node, opts); -} - -function assertDeclaredPredicate(node, opts) { - assert("DeclaredPredicate", node, opts); -} - -function assertExistsTypeAnnotation(node, opts) { - assert("ExistsTypeAnnotation", node, opts); -} - -function assertFunctionTypeAnnotation(node, opts) { - assert("FunctionTypeAnnotation", node, opts); -} - -function assertFunctionTypeParam(node, opts) { - assert("FunctionTypeParam", node, opts); -} - -function assertGenericTypeAnnotation(node, opts) { - assert("GenericTypeAnnotation", node, opts); -} - -function assertInferredPredicate(node, opts) { - assert("InferredPredicate", node, opts); -} - -function assertInterfaceExtends(node, opts) { - assert("InterfaceExtends", node, opts); -} - -function assertInterfaceDeclaration(node, opts) { - assert("InterfaceDeclaration", node, opts); -} - -function assertInterfaceTypeAnnotation(node, opts) { - assert("InterfaceTypeAnnotation", node, opts); -} - -function assertIntersectionTypeAnnotation(node, opts) { - assert("IntersectionTypeAnnotation", node, opts); -} - -function assertMixedTypeAnnotation(node, opts) { - assert("MixedTypeAnnotation", node, opts); -} - -function assertEmptyTypeAnnotation(node, opts) { - assert("EmptyTypeAnnotation", node, opts); -} - -function assertNullableTypeAnnotation(node, opts) { - assert("NullableTypeAnnotation", node, opts); -} - -function assertNumberLiteralTypeAnnotation(node, opts) { - assert("NumberLiteralTypeAnnotation", node, opts); -} - -function assertNumberTypeAnnotation(node, opts) { - assert("NumberTypeAnnotation", node, opts); -} - -function assertObjectTypeAnnotation(node, opts) { - assert("ObjectTypeAnnotation", node, opts); -} - -function assertObjectTypeInternalSlot(node, opts) { - assert("ObjectTypeInternalSlot", node, opts); -} - -function assertObjectTypeCallProperty(node, opts) { - assert("ObjectTypeCallProperty", node, opts); -} - -function assertObjectTypeIndexer(node, opts) { - assert("ObjectTypeIndexer", node, opts); -} - -function assertObjectTypeProperty(node, opts) { - assert("ObjectTypeProperty", node, opts); -} - -function assertObjectTypeSpreadProperty(node, opts) { - assert("ObjectTypeSpreadProperty", node, opts); -} - -function assertOpaqueType(node, opts) { - assert("OpaqueType", node, opts); -} - -function assertQualifiedTypeIdentifier(node, opts) { - assert("QualifiedTypeIdentifier", node, opts); -} - -function assertStringLiteralTypeAnnotation(node, opts) { - assert("StringLiteralTypeAnnotation", node, opts); -} - -function assertStringTypeAnnotation(node, opts) { - assert("StringTypeAnnotation", node, opts); -} - -function assertSymbolTypeAnnotation(node, opts) { - assert("SymbolTypeAnnotation", node, opts); -} - -function assertThisTypeAnnotation(node, opts) { - assert("ThisTypeAnnotation", node, opts); -} - -function assertTupleTypeAnnotation(node, opts) { - assert("TupleTypeAnnotation", node, opts); -} - -function assertTypeofTypeAnnotation(node, opts) { - assert("TypeofTypeAnnotation", node, opts); -} - -function assertTypeAlias(node, opts) { - assert("TypeAlias", node, opts); -} - -function assertTypeAnnotation(node, opts) { - assert("TypeAnnotation", node, opts); -} - -function assertTypeCastExpression(node, opts) { - assert("TypeCastExpression", node, opts); -} - -function assertTypeParameter(node, opts) { - assert("TypeParameter", node, opts); -} - -function assertTypeParameterDeclaration(node, opts) { - assert("TypeParameterDeclaration", node, opts); -} - -function assertTypeParameterInstantiation(node, opts) { - assert("TypeParameterInstantiation", node, opts); -} - -function assertUnionTypeAnnotation(node, opts) { - assert("UnionTypeAnnotation", node, opts); -} - -function assertVariance(node, opts) { - assert("Variance", node, opts); -} - -function assertVoidTypeAnnotation(node, opts) { - assert("VoidTypeAnnotation", node, opts); -} - -function assertEnumDeclaration(node, opts) { - assert("EnumDeclaration", node, opts); -} - -function assertEnumBooleanBody(node, opts) { - assert("EnumBooleanBody", node, opts); -} - -function assertEnumNumberBody(node, opts) { - assert("EnumNumberBody", node, opts); -} - -function assertEnumStringBody(node, opts) { - assert("EnumStringBody", node, opts); -} - -function assertEnumSymbolBody(node, opts) { - assert("EnumSymbolBody", node, opts); -} - -function assertEnumBooleanMember(node, opts) { - assert("EnumBooleanMember", node, opts); -} - -function assertEnumNumberMember(node, opts) { - assert("EnumNumberMember", node, opts); -} - -function assertEnumStringMember(node, opts) { - assert("EnumStringMember", node, opts); -} - -function assertEnumDefaultedMember(node, opts) { - assert("EnumDefaultedMember", node, opts); -} - -function assertIndexedAccessType(node, opts) { - assert("IndexedAccessType", node, opts); -} - -function assertOptionalIndexedAccessType(node, opts) { - assert("OptionalIndexedAccessType", node, opts); -} - -function assertJSXAttribute(node, opts) { - assert("JSXAttribute", node, opts); -} - -function assertJSXClosingElement(node, opts) { - assert("JSXClosingElement", node, opts); -} - -function assertJSXElement(node, opts) { - assert("JSXElement", node, opts); -} - -function assertJSXEmptyExpression(node, opts) { - assert("JSXEmptyExpression", node, opts); -} - -function assertJSXExpressionContainer(node, opts) { - assert("JSXExpressionContainer", node, opts); -} - -function assertJSXSpreadChild(node, opts) { - assert("JSXSpreadChild", node, opts); -} - -function assertJSXIdentifier(node, opts) { - assert("JSXIdentifier", node, opts); -} - -function assertJSXMemberExpression(node, opts) { - assert("JSXMemberExpression", node, opts); -} - -function assertJSXNamespacedName(node, opts) { - assert("JSXNamespacedName", node, opts); -} - -function assertJSXOpeningElement(node, opts) { - assert("JSXOpeningElement", node, opts); -} - -function assertJSXSpreadAttribute(node, opts) { - assert("JSXSpreadAttribute", node, opts); -} - -function assertJSXText(node, opts) { - assert("JSXText", node, opts); -} - -function assertJSXFragment(node, opts) { - assert("JSXFragment", node, opts); -} - -function assertJSXOpeningFragment(node, opts) { - assert("JSXOpeningFragment", node, opts); -} - -function assertJSXClosingFragment(node, opts) { - assert("JSXClosingFragment", node, opts); -} - -function assertNoop(node, opts) { - assert("Noop", node, opts); -} - -function assertPlaceholder(node, opts) { - assert("Placeholder", node, opts); -} - -function assertV8IntrinsicIdentifier(node, opts) { - assert("V8IntrinsicIdentifier", node, opts); -} - -function assertArgumentPlaceholder(node, opts) { - assert("ArgumentPlaceholder", node, opts); -} - -function assertBindExpression(node, opts) { - assert("BindExpression", node, opts); -} - -function assertImportAttribute(node, opts) { - assert("ImportAttribute", node, opts); -} - -function assertDecorator(node, opts) { - assert("Decorator", node, opts); -} - -function assertDoExpression(node, opts) { - assert("DoExpression", node, opts); -} - -function assertExportDefaultSpecifier(node, opts) { - assert("ExportDefaultSpecifier", node, opts); -} - -function assertRecordExpression(node, opts) { - assert("RecordExpression", node, opts); -} - -function assertTupleExpression(node, opts) { - assert("TupleExpression", node, opts); -} - -function assertDecimalLiteral(node, opts) { - assert("DecimalLiteral", node, opts); -} - -function assertStaticBlock(node, opts) { - assert("StaticBlock", node, opts); -} - -function assertModuleExpression(node, opts) { - assert("ModuleExpression", node, opts); -} - -function assertTopicReference(node, opts) { - assert("TopicReference", node, opts); -} - -function assertPipelineTopicExpression(node, opts) { - assert("PipelineTopicExpression", node, opts); -} - -function assertPipelineBareFunction(node, opts) { - assert("PipelineBareFunction", node, opts); -} - -function assertPipelinePrimaryTopicReference(node, opts) { - assert("PipelinePrimaryTopicReference", node, opts); -} - -function assertTSParameterProperty(node, opts) { - assert("TSParameterProperty", node, opts); -} - -function assertTSDeclareFunction(node, opts) { - assert("TSDeclareFunction", node, opts); -} - -function assertTSDeclareMethod(node, opts) { - assert("TSDeclareMethod", node, opts); -} - -function assertTSQualifiedName(node, opts) { - assert("TSQualifiedName", node, opts); -} - -function assertTSCallSignatureDeclaration(node, opts) { - assert("TSCallSignatureDeclaration", node, opts); -} - -function assertTSConstructSignatureDeclaration(node, opts) { - assert("TSConstructSignatureDeclaration", node, opts); -} - -function assertTSPropertySignature(node, opts) { - assert("TSPropertySignature", node, opts); -} - -function assertTSMethodSignature(node, opts) { - assert("TSMethodSignature", node, opts); -} - -function assertTSIndexSignature(node, opts) { - assert("TSIndexSignature", node, opts); -} - -function assertTSAnyKeyword(node, opts) { - assert("TSAnyKeyword", node, opts); -} - -function assertTSBooleanKeyword(node, opts) { - assert("TSBooleanKeyword", node, opts); -} - -function assertTSBigIntKeyword(node, opts) { - assert("TSBigIntKeyword", node, opts); -} - -function assertTSIntrinsicKeyword(node, opts) { - assert("TSIntrinsicKeyword", node, opts); -} - -function assertTSNeverKeyword(node, opts) { - assert("TSNeverKeyword", node, opts); -} - -function assertTSNullKeyword(node, opts) { - assert("TSNullKeyword", node, opts); -} - -function assertTSNumberKeyword(node, opts) { - assert("TSNumberKeyword", node, opts); -} - -function assertTSObjectKeyword(node, opts) { - assert("TSObjectKeyword", node, opts); -} - -function assertTSStringKeyword(node, opts) { - assert("TSStringKeyword", node, opts); -} - -function assertTSSymbolKeyword(node, opts) { - assert("TSSymbolKeyword", node, opts); -} - -function assertTSUndefinedKeyword(node, opts) { - assert("TSUndefinedKeyword", node, opts); -} - -function assertTSUnknownKeyword(node, opts) { - assert("TSUnknownKeyword", node, opts); -} - -function assertTSVoidKeyword(node, opts) { - assert("TSVoidKeyword", node, opts); -} - -function assertTSThisType(node, opts) { - assert("TSThisType", node, opts); -} - -function assertTSFunctionType(node, opts) { - assert("TSFunctionType", node, opts); -} - -function assertTSConstructorType(node, opts) { - assert("TSConstructorType", node, opts); -} - -function assertTSTypeReference(node, opts) { - assert("TSTypeReference", node, opts); -} - -function assertTSTypePredicate(node, opts) { - assert("TSTypePredicate", node, opts); -} - -function assertTSTypeQuery(node, opts) { - assert("TSTypeQuery", node, opts); -} - -function assertTSTypeLiteral(node, opts) { - assert("TSTypeLiteral", node, opts); -} - -function assertTSArrayType(node, opts) { - assert("TSArrayType", node, opts); -} - -function assertTSTupleType(node, opts) { - assert("TSTupleType", node, opts); -} - -function assertTSOptionalType(node, opts) { - assert("TSOptionalType", node, opts); -} - -function assertTSRestType(node, opts) { - assert("TSRestType", node, opts); -} - -function assertTSNamedTupleMember(node, opts) { - assert("TSNamedTupleMember", node, opts); -} - -function assertTSUnionType(node, opts) { - assert("TSUnionType", node, opts); -} - -function assertTSIntersectionType(node, opts) { - assert("TSIntersectionType", node, opts); -} - -function assertTSConditionalType(node, opts) { - assert("TSConditionalType", node, opts); -} - -function assertTSInferType(node, opts) { - assert("TSInferType", node, opts); -} - -function assertTSParenthesizedType(node, opts) { - assert("TSParenthesizedType", node, opts); -} - -function assertTSTypeOperator(node, opts) { - assert("TSTypeOperator", node, opts); -} - -function assertTSIndexedAccessType(node, opts) { - assert("TSIndexedAccessType", node, opts); -} - -function assertTSMappedType(node, opts) { - assert("TSMappedType", node, opts); -} - -function assertTSLiteralType(node, opts) { - assert("TSLiteralType", node, opts); -} - -function assertTSExpressionWithTypeArguments(node, opts) { - assert("TSExpressionWithTypeArguments", node, opts); -} - -function assertTSInterfaceDeclaration(node, opts) { - assert("TSInterfaceDeclaration", node, opts); -} - -function assertTSInterfaceBody(node, opts) { - assert("TSInterfaceBody", node, opts); -} - -function assertTSTypeAliasDeclaration(node, opts) { - assert("TSTypeAliasDeclaration", node, opts); -} - -function assertTSAsExpression(node, opts) { - assert("TSAsExpression", node, opts); -} - -function assertTSTypeAssertion(node, opts) { - assert("TSTypeAssertion", node, opts); -} - -function assertTSEnumDeclaration(node, opts) { - assert("TSEnumDeclaration", node, opts); -} - -function assertTSEnumMember(node, opts) { - assert("TSEnumMember", node, opts); -} - -function assertTSModuleDeclaration(node, opts) { - assert("TSModuleDeclaration", node, opts); -} - -function assertTSModuleBlock(node, opts) { - assert("TSModuleBlock", node, opts); -} - -function assertTSImportType(node, opts) { - assert("TSImportType", node, opts); -} - -function assertTSImportEqualsDeclaration(node, opts) { - assert("TSImportEqualsDeclaration", node, opts); -} - -function assertTSExternalModuleReference(node, opts) { - assert("TSExternalModuleReference", node, opts); -} - -function assertTSNonNullExpression(node, opts) { - assert("TSNonNullExpression", node, opts); -} - -function assertTSExportAssignment(node, opts) { - assert("TSExportAssignment", node, opts); -} - -function assertTSNamespaceExportDeclaration(node, opts) { - assert("TSNamespaceExportDeclaration", node, opts); -} - -function assertTSTypeAnnotation(node, opts) { - assert("TSTypeAnnotation", node, opts); -} - -function assertTSTypeParameterInstantiation(node, opts) { - assert("TSTypeParameterInstantiation", node, opts); -} - -function assertTSTypeParameterDeclaration(node, opts) { - assert("TSTypeParameterDeclaration", node, opts); -} - -function assertTSTypeParameter(node, opts) { - assert("TSTypeParameter", node, opts); -} - -function assertExpression(node, opts) { - assert("Expression", node, opts); -} - -function assertBinary(node, opts) { - assert("Binary", node, opts); -} - -function assertScopable(node, opts) { - assert("Scopable", node, opts); -} - -function assertBlockParent(node, opts) { - assert("BlockParent", node, opts); -} - -function assertBlock(node, opts) { - assert("Block", node, opts); -} - -function assertStatement(node, opts) { - assert("Statement", node, opts); -} - -function assertTerminatorless(node, opts) { - assert("Terminatorless", node, opts); -} - -function assertCompletionStatement(node, opts) { - assert("CompletionStatement", node, opts); -} - -function assertConditional(node, opts) { - assert("Conditional", node, opts); -} - -function assertLoop(node, opts) { - assert("Loop", node, opts); -} - -function assertWhile(node, opts) { - assert("While", node, opts); -} - -function assertExpressionWrapper(node, opts) { - assert("ExpressionWrapper", node, opts); -} - -function assertFor(node, opts) { - assert("For", node, opts); -} - -function assertForXStatement(node, opts) { - assert("ForXStatement", node, opts); -} - -function assertFunction(node, opts) { - assert("Function", node, opts); -} - -function assertFunctionParent(node, opts) { - assert("FunctionParent", node, opts); -} - -function assertPureish(node, opts) { - assert("Pureish", node, opts); -} - -function assertDeclaration(node, opts) { - assert("Declaration", node, opts); -} - -function assertPatternLike(node, opts) { - assert("PatternLike", node, opts); -} - -function assertLVal(node, opts) { - assert("LVal", node, opts); -} - -function assertTSEntityName(node, opts) { - assert("TSEntityName", node, opts); -} - -function assertLiteral(node, opts) { - assert("Literal", node, opts); -} - -function assertImmutable(node, opts) { - assert("Immutable", node, opts); -} - -function assertUserWhitespacable(node, opts) { - assert("UserWhitespacable", node, opts); -} - -function assertMethod(node, opts) { - assert("Method", node, opts); -} - -function assertObjectMember(node, opts) { - assert("ObjectMember", node, opts); -} - -function assertProperty(node, opts) { - assert("Property", node, opts); -} - -function assertUnaryLike(node, opts) { - assert("UnaryLike", node, opts); -} - -function assertPattern(node, opts) { - assert("Pattern", node, opts); -} - -function assertClass(node, opts) { - assert("Class", node, opts); -} - -function assertModuleDeclaration(node, opts) { - assert("ModuleDeclaration", node, opts); -} - -function assertExportDeclaration(node, opts) { - assert("ExportDeclaration", node, opts); -} - -function assertModuleSpecifier(node, opts) { - assert("ModuleSpecifier", node, opts); -} - -function assertPrivate(node, opts) { - assert("Private", node, opts); -} - -function assertFlow(node, opts) { - assert("Flow", node, opts); -} - -function assertFlowType(node, opts) { - assert("FlowType", node, opts); -} - -function assertFlowBaseAnnotation(node, opts) { - assert("FlowBaseAnnotation", node, opts); -} - -function assertFlowDeclaration(node, opts) { - assert("FlowDeclaration", node, opts); -} - -function assertFlowPredicate(node, opts) { - assert("FlowPredicate", node, opts); -} - -function assertEnumBody(node, opts) { - assert("EnumBody", node, opts); -} - -function assertEnumMember(node, opts) { - assert("EnumMember", node, opts); -} - -function assertJSX(node, opts) { - assert("JSX", node, opts); -} - -function assertTSTypeElement(node, opts) { - assert("TSTypeElement", node, opts); -} - -function assertTSType(node, opts) { - assert("TSType", node, opts); -} - -function assertTSBaseType(node, opts) { - assert("TSBaseType", node, opts); -} - -function assertNumberLiteral(node, opts) { - console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); - assert("NumberLiteral", node, opts); -} - -function assertRegexLiteral(node, opts) { - console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); - assert("RegexLiteral", node, opts); -} - -function assertRestProperty(node, opts) { - console.trace("The node type RestProperty has been renamed to RestElement"); - assert("RestProperty", node, opts); -} - -function assertSpreadProperty(node, opts) { - console.trace("The node type SpreadProperty has been renamed to SpreadElement"); - assert("SpreadProperty", node, opts); -} - -/***/ }), - -/***/ 64373: -/***/ (() => { - - - -/***/ }), - -/***/ 81426: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = builder; - -var _definitions = __nccwpck_require__(19090); - -var _validate = __nccwpck_require__(4432); - -function builder(type, ...args) { - const keys = _definitions.BUILDER_KEYS[type]; - const countArgs = args.length; - - if (countArgs > keys.length) { - throw new Error(`${type}: Too many arguments passed. Received ${countArgs} but can receive no more than ${keys.length}`); - } - - const node = { - type - }; - let i = 0; - keys.forEach(key => { - const field = _definitions.NODE_FIELDS[type][key]; - let arg; - if (i < countArgs) arg = args[i]; - - if (arg === undefined) { - arg = Array.isArray(field.default) ? [] : field.default; - } - - node[key] = arg; - i++; - }); - - for (const key of Object.keys(node)) { - (0, _validate.default)(node, key, node[key]); - } - - return node; -} - -/***/ }), - -/***/ 53598: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = createFlowUnionType; - -var _generated = __nccwpck_require__(10758); - -var _removeTypeDuplicates = __nccwpck_require__(30036); - -function createFlowUnionType(types) { - const flattened = (0, _removeTypeDuplicates.default)(types); - - if (flattened.length === 1) { - return flattened[0]; - } else { - return (0, _generated.unionTypeAnnotation)(flattened); - } -} - -/***/ }), - -/***/ 7112: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = createTypeAnnotationBasedOnTypeof; - -var _generated = __nccwpck_require__(10758); - -function createTypeAnnotationBasedOnTypeof(type) { - if (type === "string") { - return (0, _generated.stringTypeAnnotation)(); - } else if (type === "number") { - return (0, _generated.numberTypeAnnotation)(); - } else if (type === "undefined") { - return (0, _generated.voidTypeAnnotation)(); - } else if (type === "boolean") { - return (0, _generated.booleanTypeAnnotation)(); - } else if (type === "function") { - return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Function")); - } else if (type === "object") { - return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Object")); - } else if (type === "symbol") { - return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol")); - } else if (type === "bigint") { - return (0, _generated.anyTypeAnnotation)(); - } else { - throw new Error("Invalid typeof value: " + type); - } -} - -/***/ }), - -/***/ 10758: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.arrayExpression = arrayExpression; -exports.assignmentExpression = assignmentExpression; -exports.binaryExpression = binaryExpression; -exports.interpreterDirective = interpreterDirective; -exports.directive = directive; -exports.directiveLiteral = directiveLiteral; -exports.blockStatement = blockStatement; -exports.breakStatement = breakStatement; -exports.callExpression = callExpression; -exports.catchClause = catchClause; -exports.conditionalExpression = conditionalExpression; -exports.continueStatement = continueStatement; -exports.debuggerStatement = debuggerStatement; -exports.doWhileStatement = doWhileStatement; -exports.emptyStatement = emptyStatement; -exports.expressionStatement = expressionStatement; -exports.file = file; -exports.forInStatement = forInStatement; -exports.forStatement = forStatement; -exports.functionDeclaration = functionDeclaration; -exports.functionExpression = functionExpression; -exports.identifier = identifier; -exports.ifStatement = ifStatement; -exports.labeledStatement = labeledStatement; -exports.stringLiteral = stringLiteral; -exports.numericLiteral = numericLiteral; -exports.nullLiteral = nullLiteral; -exports.booleanLiteral = booleanLiteral; -exports.regExpLiteral = regExpLiteral; -exports.logicalExpression = logicalExpression; -exports.memberExpression = memberExpression; -exports.newExpression = newExpression; -exports.program = program; -exports.objectExpression = objectExpression; -exports.objectMethod = objectMethod; -exports.objectProperty = objectProperty; -exports.restElement = restElement; -exports.returnStatement = returnStatement; -exports.sequenceExpression = sequenceExpression; -exports.parenthesizedExpression = parenthesizedExpression; -exports.switchCase = switchCase; -exports.switchStatement = switchStatement; -exports.thisExpression = thisExpression; -exports.throwStatement = throwStatement; -exports.tryStatement = tryStatement; -exports.unaryExpression = unaryExpression; -exports.updateExpression = updateExpression; -exports.variableDeclaration = variableDeclaration; -exports.variableDeclarator = variableDeclarator; -exports.whileStatement = whileStatement; -exports.withStatement = withStatement; -exports.assignmentPattern = assignmentPattern; -exports.arrayPattern = arrayPattern; -exports.arrowFunctionExpression = arrowFunctionExpression; -exports.classBody = classBody; -exports.classExpression = classExpression; -exports.classDeclaration = classDeclaration; -exports.exportAllDeclaration = exportAllDeclaration; -exports.exportDefaultDeclaration = exportDefaultDeclaration; -exports.exportNamedDeclaration = exportNamedDeclaration; -exports.exportSpecifier = exportSpecifier; -exports.forOfStatement = forOfStatement; -exports.importDeclaration = importDeclaration; -exports.importDefaultSpecifier = importDefaultSpecifier; -exports.importNamespaceSpecifier = importNamespaceSpecifier; -exports.importSpecifier = importSpecifier; -exports.metaProperty = metaProperty; -exports.classMethod = classMethod; -exports.objectPattern = objectPattern; -exports.spreadElement = spreadElement; -exports["super"] = _super; -exports.taggedTemplateExpression = taggedTemplateExpression; -exports.templateElement = templateElement; -exports.templateLiteral = templateLiteral; -exports.yieldExpression = yieldExpression; -exports.awaitExpression = awaitExpression; -exports["import"] = _import; -exports.bigIntLiteral = bigIntLiteral; -exports.exportNamespaceSpecifier = exportNamespaceSpecifier; -exports.optionalMemberExpression = optionalMemberExpression; -exports.optionalCallExpression = optionalCallExpression; -exports.classProperty = classProperty; -exports.classPrivateProperty = classPrivateProperty; -exports.classPrivateMethod = classPrivateMethod; -exports.privateName = privateName; -exports.anyTypeAnnotation = anyTypeAnnotation; -exports.arrayTypeAnnotation = arrayTypeAnnotation; -exports.booleanTypeAnnotation = booleanTypeAnnotation; -exports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation; -exports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation; -exports.classImplements = classImplements; -exports.declareClass = declareClass; -exports.declareFunction = declareFunction; -exports.declareInterface = declareInterface; -exports.declareModule = declareModule; -exports.declareModuleExports = declareModuleExports; -exports.declareTypeAlias = declareTypeAlias; -exports.declareOpaqueType = declareOpaqueType; -exports.declareVariable = declareVariable; -exports.declareExportDeclaration = declareExportDeclaration; -exports.declareExportAllDeclaration = declareExportAllDeclaration; -exports.declaredPredicate = declaredPredicate; -exports.existsTypeAnnotation = existsTypeAnnotation; -exports.functionTypeAnnotation = functionTypeAnnotation; -exports.functionTypeParam = functionTypeParam; -exports.genericTypeAnnotation = genericTypeAnnotation; -exports.inferredPredicate = inferredPredicate; -exports.interfaceExtends = interfaceExtends; -exports.interfaceDeclaration = interfaceDeclaration; -exports.interfaceTypeAnnotation = interfaceTypeAnnotation; -exports.intersectionTypeAnnotation = intersectionTypeAnnotation; -exports.mixedTypeAnnotation = mixedTypeAnnotation; -exports.emptyTypeAnnotation = emptyTypeAnnotation; -exports.nullableTypeAnnotation = nullableTypeAnnotation; -exports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation; -exports.numberTypeAnnotation = numberTypeAnnotation; -exports.objectTypeAnnotation = objectTypeAnnotation; -exports.objectTypeInternalSlot = objectTypeInternalSlot; -exports.objectTypeCallProperty = objectTypeCallProperty; -exports.objectTypeIndexer = objectTypeIndexer; -exports.objectTypeProperty = objectTypeProperty; -exports.objectTypeSpreadProperty = objectTypeSpreadProperty; -exports.opaqueType = opaqueType; -exports.qualifiedTypeIdentifier = qualifiedTypeIdentifier; -exports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation; -exports.stringTypeAnnotation = stringTypeAnnotation; -exports.symbolTypeAnnotation = symbolTypeAnnotation; -exports.thisTypeAnnotation = thisTypeAnnotation; -exports.tupleTypeAnnotation = tupleTypeAnnotation; -exports.typeofTypeAnnotation = typeofTypeAnnotation; -exports.typeAlias = typeAlias; -exports.typeAnnotation = typeAnnotation; -exports.typeCastExpression = typeCastExpression; -exports.typeParameter = typeParameter; -exports.typeParameterDeclaration = typeParameterDeclaration; -exports.typeParameterInstantiation = typeParameterInstantiation; -exports.unionTypeAnnotation = unionTypeAnnotation; -exports.variance = variance; -exports.voidTypeAnnotation = voidTypeAnnotation; -exports.enumDeclaration = enumDeclaration; -exports.enumBooleanBody = enumBooleanBody; -exports.enumNumberBody = enumNumberBody; -exports.enumStringBody = enumStringBody; -exports.enumSymbolBody = enumSymbolBody; -exports.enumBooleanMember = enumBooleanMember; -exports.enumNumberMember = enumNumberMember; -exports.enumStringMember = enumStringMember; -exports.enumDefaultedMember = enumDefaultedMember; -exports.indexedAccessType = indexedAccessType; -exports.optionalIndexedAccessType = optionalIndexedAccessType; -exports.jSXAttribute = exports.jsxAttribute = jsxAttribute; -exports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement; -exports.jSXElement = exports.jsxElement = jsxElement; -exports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression; -exports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer; -exports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild; -exports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier; -exports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression; -exports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName; -exports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement; -exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute; -exports.jSXText = exports.jsxText = jsxText; -exports.jSXFragment = exports.jsxFragment = jsxFragment; -exports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment; -exports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment; -exports.noop = noop; -exports.placeholder = placeholder; -exports.v8IntrinsicIdentifier = v8IntrinsicIdentifier; -exports.argumentPlaceholder = argumentPlaceholder; -exports.bindExpression = bindExpression; -exports.importAttribute = importAttribute; -exports.decorator = decorator; -exports.doExpression = doExpression; -exports.exportDefaultSpecifier = exportDefaultSpecifier; -exports.recordExpression = recordExpression; -exports.tupleExpression = tupleExpression; -exports.decimalLiteral = decimalLiteral; -exports.staticBlock = staticBlock; -exports.moduleExpression = moduleExpression; -exports.topicReference = topicReference; -exports.pipelineTopicExpression = pipelineTopicExpression; -exports.pipelineBareFunction = pipelineBareFunction; -exports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference; -exports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty; -exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction; -exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod; -exports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName; -exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration; -exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration; -exports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature; -exports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature; -exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature; -exports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword; -exports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword; -exports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword; -exports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword; -exports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword; -exports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword; -exports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword; -exports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword; -exports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword; -exports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword; -exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword; -exports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword; -exports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword; -exports.tSThisType = exports.tsThisType = tsThisType; -exports.tSFunctionType = exports.tsFunctionType = tsFunctionType; -exports.tSConstructorType = exports.tsConstructorType = tsConstructorType; -exports.tSTypeReference = exports.tsTypeReference = tsTypeReference; -exports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate; -exports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery; -exports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral; -exports.tSArrayType = exports.tsArrayType = tsArrayType; -exports.tSTupleType = exports.tsTupleType = tsTupleType; -exports.tSOptionalType = exports.tsOptionalType = tsOptionalType; -exports.tSRestType = exports.tsRestType = tsRestType; -exports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember; -exports.tSUnionType = exports.tsUnionType = tsUnionType; -exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType; -exports.tSConditionalType = exports.tsConditionalType = tsConditionalType; -exports.tSInferType = exports.tsInferType = tsInferType; -exports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType; -exports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator; -exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType; -exports.tSMappedType = exports.tsMappedType = tsMappedType; -exports.tSLiteralType = exports.tsLiteralType = tsLiteralType; -exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments; -exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration; -exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody; -exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration; -exports.tSAsExpression = exports.tsAsExpression = tsAsExpression; -exports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion; -exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration; -exports.tSEnumMember = exports.tsEnumMember = tsEnumMember; -exports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration; -exports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock; -exports.tSImportType = exports.tsImportType = tsImportType; -exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration; -exports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference; -exports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression; -exports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment; -exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration; -exports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation; -exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation; -exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration; -exports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter; -exports.numberLiteral = NumberLiteral; -exports.regexLiteral = RegexLiteral; -exports.restProperty = RestProperty; -exports.spreadProperty = SpreadProperty; - -var _builder = __nccwpck_require__(81426); - -function arrayExpression(elements) { - return (0, _builder.default)("ArrayExpression", ...arguments); -} - -function assignmentExpression(operator, left, right) { - return (0, _builder.default)("AssignmentExpression", ...arguments); -} - -function binaryExpression(operator, left, right) { - return (0, _builder.default)("BinaryExpression", ...arguments); -} - -function interpreterDirective(value) { - return (0, _builder.default)("InterpreterDirective", ...arguments); -} - -function directive(value) { - return (0, _builder.default)("Directive", ...arguments); -} - -function directiveLiteral(value) { - return (0, _builder.default)("DirectiveLiteral", ...arguments); -} - -function blockStatement(body, directives) { - return (0, _builder.default)("BlockStatement", ...arguments); -} - -function breakStatement(label) { - return (0, _builder.default)("BreakStatement", ...arguments); -} - -function callExpression(callee, _arguments) { - return (0, _builder.default)("CallExpression", ...arguments); -} - -function catchClause(param, body) { - return (0, _builder.default)("CatchClause", ...arguments); -} - -function conditionalExpression(test, consequent, alternate) { - return (0, _builder.default)("ConditionalExpression", ...arguments); -} - -function continueStatement(label) { - return (0, _builder.default)("ContinueStatement", ...arguments); -} - -function debuggerStatement() { - return (0, _builder.default)("DebuggerStatement", ...arguments); -} - -function doWhileStatement(test, body) { - return (0, _builder.default)("DoWhileStatement", ...arguments); -} - -function emptyStatement() { - return (0, _builder.default)("EmptyStatement", ...arguments); -} - -function expressionStatement(expression) { - return (0, _builder.default)("ExpressionStatement", ...arguments); -} - -function file(program, comments, tokens) { - return (0, _builder.default)("File", ...arguments); -} - -function forInStatement(left, right, body) { - return (0, _builder.default)("ForInStatement", ...arguments); -} - -function forStatement(init, test, update, body) { - return (0, _builder.default)("ForStatement", ...arguments); -} - -function functionDeclaration(id, params, body, generator, async) { - return (0, _builder.default)("FunctionDeclaration", ...arguments); -} - -function functionExpression(id, params, body, generator, async) { - return (0, _builder.default)("FunctionExpression", ...arguments); -} - -function identifier(name) { - return (0, _builder.default)("Identifier", ...arguments); -} - -function ifStatement(test, consequent, alternate) { - return (0, _builder.default)("IfStatement", ...arguments); -} - -function labeledStatement(label, body) { - return (0, _builder.default)("LabeledStatement", ...arguments); -} - -function stringLiteral(value) { - return (0, _builder.default)("StringLiteral", ...arguments); -} - -function numericLiteral(value) { - return (0, _builder.default)("NumericLiteral", ...arguments); -} - -function nullLiteral() { - return (0, _builder.default)("NullLiteral", ...arguments); -} - -function booleanLiteral(value) { - return (0, _builder.default)("BooleanLiteral", ...arguments); -} - -function regExpLiteral(pattern, flags) { - return (0, _builder.default)("RegExpLiteral", ...arguments); -} - -function logicalExpression(operator, left, right) { - return (0, _builder.default)("LogicalExpression", ...arguments); -} - -function memberExpression(object, property, computed, optional) { - return (0, _builder.default)("MemberExpression", ...arguments); -} - -function newExpression(callee, _arguments) { - return (0, _builder.default)("NewExpression", ...arguments); -} - -function program(body, directives, sourceType, interpreter) { - return (0, _builder.default)("Program", ...arguments); -} - -function objectExpression(properties) { - return (0, _builder.default)("ObjectExpression", ...arguments); -} - -function objectMethod(kind, key, params, body, computed, generator, async) { - return (0, _builder.default)("ObjectMethod", ...arguments); -} - -function objectProperty(key, value, computed, shorthand, decorators) { - return (0, _builder.default)("ObjectProperty", ...arguments); -} - -function restElement(argument) { - return (0, _builder.default)("RestElement", ...arguments); -} - -function returnStatement(argument) { - return (0, _builder.default)("ReturnStatement", ...arguments); -} - -function sequenceExpression(expressions) { - return (0, _builder.default)("SequenceExpression", ...arguments); -} - -function parenthesizedExpression(expression) { - return (0, _builder.default)("ParenthesizedExpression", ...arguments); -} - -function switchCase(test, consequent) { - return (0, _builder.default)("SwitchCase", ...arguments); -} - -function switchStatement(discriminant, cases) { - return (0, _builder.default)("SwitchStatement", ...arguments); -} - -function thisExpression() { - return (0, _builder.default)("ThisExpression", ...arguments); -} - -function throwStatement(argument) { - return (0, _builder.default)("ThrowStatement", ...arguments); -} - -function tryStatement(block, handler, finalizer) { - return (0, _builder.default)("TryStatement", ...arguments); -} - -function unaryExpression(operator, argument, prefix) { - return (0, _builder.default)("UnaryExpression", ...arguments); -} - -function updateExpression(operator, argument, prefix) { - return (0, _builder.default)("UpdateExpression", ...arguments); -} - -function variableDeclaration(kind, declarations) { - return (0, _builder.default)("VariableDeclaration", ...arguments); -} - -function variableDeclarator(id, init) { - return (0, _builder.default)("VariableDeclarator", ...arguments); -} - -function whileStatement(test, body) { - return (0, _builder.default)("WhileStatement", ...arguments); -} - -function withStatement(object, body) { - return (0, _builder.default)("WithStatement", ...arguments); -} - -function assignmentPattern(left, right) { - return (0, _builder.default)("AssignmentPattern", ...arguments); -} - -function arrayPattern(elements) { - return (0, _builder.default)("ArrayPattern", ...arguments); -} - -function arrowFunctionExpression(params, body, async) { - return (0, _builder.default)("ArrowFunctionExpression", ...arguments); -} - -function classBody(body) { - return (0, _builder.default)("ClassBody", ...arguments); -} - -function classExpression(id, superClass, body, decorators) { - return (0, _builder.default)("ClassExpression", ...arguments); -} - -function classDeclaration(id, superClass, body, decorators) { - return (0, _builder.default)("ClassDeclaration", ...arguments); -} - -function exportAllDeclaration(source) { - return (0, _builder.default)("ExportAllDeclaration", ...arguments); -} - -function exportDefaultDeclaration(declaration) { - return (0, _builder.default)("ExportDefaultDeclaration", ...arguments); -} - -function exportNamedDeclaration(declaration, specifiers, source) { - return (0, _builder.default)("ExportNamedDeclaration", ...arguments); -} - -function exportSpecifier(local, exported) { - return (0, _builder.default)("ExportSpecifier", ...arguments); -} - -function forOfStatement(left, right, body, _await) { - return (0, _builder.default)("ForOfStatement", ...arguments); -} - -function importDeclaration(specifiers, source) { - return (0, _builder.default)("ImportDeclaration", ...arguments); -} - -function importDefaultSpecifier(local) { - return (0, _builder.default)("ImportDefaultSpecifier", ...arguments); -} - -function importNamespaceSpecifier(local) { - return (0, _builder.default)("ImportNamespaceSpecifier", ...arguments); -} - -function importSpecifier(local, imported) { - return (0, _builder.default)("ImportSpecifier", ...arguments); -} - -function metaProperty(meta, property) { - return (0, _builder.default)("MetaProperty", ...arguments); -} - -function classMethod(kind, key, params, body, computed, _static, generator, async) { - return (0, _builder.default)("ClassMethod", ...arguments); -} - -function objectPattern(properties) { - return (0, _builder.default)("ObjectPattern", ...arguments); -} - -function spreadElement(argument) { - return (0, _builder.default)("SpreadElement", ...arguments); -} - -function _super() { - return (0, _builder.default)("Super", ...arguments); -} - -function taggedTemplateExpression(tag, quasi) { - return (0, _builder.default)("TaggedTemplateExpression", ...arguments); -} - -function templateElement(value, tail) { - return (0, _builder.default)("TemplateElement", ...arguments); -} - -function templateLiteral(quasis, expressions) { - return (0, _builder.default)("TemplateLiteral", ...arguments); -} - -function yieldExpression(argument, delegate) { - return (0, _builder.default)("YieldExpression", ...arguments); -} - -function awaitExpression(argument) { - return (0, _builder.default)("AwaitExpression", ...arguments); -} - -function _import() { - return (0, _builder.default)("Import", ...arguments); -} - -function bigIntLiteral(value) { - return (0, _builder.default)("BigIntLiteral", ...arguments); -} - -function exportNamespaceSpecifier(exported) { - return (0, _builder.default)("ExportNamespaceSpecifier", ...arguments); -} - -function optionalMemberExpression(object, property, computed, optional) { - return (0, _builder.default)("OptionalMemberExpression", ...arguments); -} - -function optionalCallExpression(callee, _arguments, optional) { - return (0, _builder.default)("OptionalCallExpression", ...arguments); -} - -function classProperty(key, value, typeAnnotation, decorators, computed, _static) { - return (0, _builder.default)("ClassProperty", ...arguments); -} - -function classPrivateProperty(key, value, decorators, _static) { - return (0, _builder.default)("ClassPrivateProperty", ...arguments); -} - -function classPrivateMethod(kind, key, params, body, _static) { - return (0, _builder.default)("ClassPrivateMethod", ...arguments); -} - -function privateName(id) { - return (0, _builder.default)("PrivateName", ...arguments); -} - -function anyTypeAnnotation() { - return (0, _builder.default)("AnyTypeAnnotation", ...arguments); -} - -function arrayTypeAnnotation(elementType) { - return (0, _builder.default)("ArrayTypeAnnotation", ...arguments); -} - -function booleanTypeAnnotation() { - return (0, _builder.default)("BooleanTypeAnnotation", ...arguments); -} - -function booleanLiteralTypeAnnotation(value) { - return (0, _builder.default)("BooleanLiteralTypeAnnotation", ...arguments); -} - -function nullLiteralTypeAnnotation() { - return (0, _builder.default)("NullLiteralTypeAnnotation", ...arguments); -} - -function classImplements(id, typeParameters) { - return (0, _builder.default)("ClassImplements", ...arguments); -} - -function declareClass(id, typeParameters, _extends, body) { - return (0, _builder.default)("DeclareClass", ...arguments); -} - -function declareFunction(id) { - return (0, _builder.default)("DeclareFunction", ...arguments); -} - -function declareInterface(id, typeParameters, _extends, body) { - return (0, _builder.default)("DeclareInterface", ...arguments); -} - -function declareModule(id, body, kind) { - return (0, _builder.default)("DeclareModule", ...arguments); -} - -function declareModuleExports(typeAnnotation) { - return (0, _builder.default)("DeclareModuleExports", ...arguments); -} - -function declareTypeAlias(id, typeParameters, right) { - return (0, _builder.default)("DeclareTypeAlias", ...arguments); -} - -function declareOpaqueType(id, typeParameters, supertype) { - return (0, _builder.default)("DeclareOpaqueType", ...arguments); -} - -function declareVariable(id) { - return (0, _builder.default)("DeclareVariable", ...arguments); -} - -function declareExportDeclaration(declaration, specifiers, source) { - return (0, _builder.default)("DeclareExportDeclaration", ...arguments); -} - -function declareExportAllDeclaration(source) { - return (0, _builder.default)("DeclareExportAllDeclaration", ...arguments); -} - -function declaredPredicate(value) { - return (0, _builder.default)("DeclaredPredicate", ...arguments); -} - -function existsTypeAnnotation() { - return (0, _builder.default)("ExistsTypeAnnotation", ...arguments); -} - -function functionTypeAnnotation(typeParameters, params, rest, returnType) { - return (0, _builder.default)("FunctionTypeAnnotation", ...arguments); -} - -function functionTypeParam(name, typeAnnotation) { - return (0, _builder.default)("FunctionTypeParam", ...arguments); -} - -function genericTypeAnnotation(id, typeParameters) { - return (0, _builder.default)("GenericTypeAnnotation", ...arguments); -} - -function inferredPredicate() { - return (0, _builder.default)("InferredPredicate", ...arguments); -} - -function interfaceExtends(id, typeParameters) { - return (0, _builder.default)("InterfaceExtends", ...arguments); -} - -function interfaceDeclaration(id, typeParameters, _extends, body) { - return (0, _builder.default)("InterfaceDeclaration", ...arguments); -} - -function interfaceTypeAnnotation(_extends, body) { - return (0, _builder.default)("InterfaceTypeAnnotation", ...arguments); -} - -function intersectionTypeAnnotation(types) { - return (0, _builder.default)("IntersectionTypeAnnotation", ...arguments); -} - -function mixedTypeAnnotation() { - return (0, _builder.default)("MixedTypeAnnotation", ...arguments); -} - -function emptyTypeAnnotation() { - return (0, _builder.default)("EmptyTypeAnnotation", ...arguments); -} - -function nullableTypeAnnotation(typeAnnotation) { - return (0, _builder.default)("NullableTypeAnnotation", ...arguments); -} - -function numberLiteralTypeAnnotation(value) { - return (0, _builder.default)("NumberLiteralTypeAnnotation", ...arguments); -} - -function numberTypeAnnotation() { - return (0, _builder.default)("NumberTypeAnnotation", ...arguments); -} - -function objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) { - return (0, _builder.default)("ObjectTypeAnnotation", ...arguments); -} - -function objectTypeInternalSlot(id, value, optional, _static, method) { - return (0, _builder.default)("ObjectTypeInternalSlot", ...arguments); -} - -function objectTypeCallProperty(value) { - return (0, _builder.default)("ObjectTypeCallProperty", ...arguments); -} - -function objectTypeIndexer(id, key, value, variance) { - return (0, _builder.default)("ObjectTypeIndexer", ...arguments); -} - -function objectTypeProperty(key, value, variance) { - return (0, _builder.default)("ObjectTypeProperty", ...arguments); -} - -function objectTypeSpreadProperty(argument) { - return (0, _builder.default)("ObjectTypeSpreadProperty", ...arguments); -} - -function opaqueType(id, typeParameters, supertype, impltype) { - return (0, _builder.default)("OpaqueType", ...arguments); -} - -function qualifiedTypeIdentifier(id, qualification) { - return (0, _builder.default)("QualifiedTypeIdentifier", ...arguments); -} - -function stringLiteralTypeAnnotation(value) { - return (0, _builder.default)("StringLiteralTypeAnnotation", ...arguments); -} - -function stringTypeAnnotation() { - return (0, _builder.default)("StringTypeAnnotation", ...arguments); -} - -function symbolTypeAnnotation() { - return (0, _builder.default)("SymbolTypeAnnotation", ...arguments); -} - -function thisTypeAnnotation() { - return (0, _builder.default)("ThisTypeAnnotation", ...arguments); -} - -function tupleTypeAnnotation(types) { - return (0, _builder.default)("TupleTypeAnnotation", ...arguments); -} - -function typeofTypeAnnotation(argument) { - return (0, _builder.default)("TypeofTypeAnnotation", ...arguments); -} - -function typeAlias(id, typeParameters, right) { - return (0, _builder.default)("TypeAlias", ...arguments); -} - -function typeAnnotation(typeAnnotation) { - return (0, _builder.default)("TypeAnnotation", ...arguments); -} - -function typeCastExpression(expression, typeAnnotation) { - return (0, _builder.default)("TypeCastExpression", ...arguments); -} - -function typeParameter(bound, _default, variance) { - return (0, _builder.default)("TypeParameter", ...arguments); -} - -function typeParameterDeclaration(params) { - return (0, _builder.default)("TypeParameterDeclaration", ...arguments); -} - -function typeParameterInstantiation(params) { - return (0, _builder.default)("TypeParameterInstantiation", ...arguments); -} - -function unionTypeAnnotation(types) { - return (0, _builder.default)("UnionTypeAnnotation", ...arguments); -} - -function variance(kind) { - return (0, _builder.default)("Variance", ...arguments); -} - -function voidTypeAnnotation() { - return (0, _builder.default)("VoidTypeAnnotation", ...arguments); -} - -function enumDeclaration(id, body) { - return (0, _builder.default)("EnumDeclaration", ...arguments); -} - -function enumBooleanBody(members) { - return (0, _builder.default)("EnumBooleanBody", ...arguments); -} - -function enumNumberBody(members) { - return (0, _builder.default)("EnumNumberBody", ...arguments); -} - -function enumStringBody(members) { - return (0, _builder.default)("EnumStringBody", ...arguments); -} - -function enumSymbolBody(members) { - return (0, _builder.default)("EnumSymbolBody", ...arguments); -} - -function enumBooleanMember(id) { - return (0, _builder.default)("EnumBooleanMember", ...arguments); -} - -function enumNumberMember(id, init) { - return (0, _builder.default)("EnumNumberMember", ...arguments); -} - -function enumStringMember(id, init) { - return (0, _builder.default)("EnumStringMember", ...arguments); -} - -function enumDefaultedMember(id) { - return (0, _builder.default)("EnumDefaultedMember", ...arguments); -} - -function indexedAccessType(objectType, indexType) { - return (0, _builder.default)("IndexedAccessType", ...arguments); -} - -function optionalIndexedAccessType(objectType, indexType) { - return (0, _builder.default)("OptionalIndexedAccessType", ...arguments); -} - -function jsxAttribute(name, value) { - return (0, _builder.default)("JSXAttribute", ...arguments); -} - -function jsxClosingElement(name) { - return (0, _builder.default)("JSXClosingElement", ...arguments); -} - -function jsxElement(openingElement, closingElement, children, selfClosing) { - return (0, _builder.default)("JSXElement", ...arguments); -} - -function jsxEmptyExpression() { - return (0, _builder.default)("JSXEmptyExpression", ...arguments); -} - -function jsxExpressionContainer(expression) { - return (0, _builder.default)("JSXExpressionContainer", ...arguments); -} - -function jsxSpreadChild(expression) { - return (0, _builder.default)("JSXSpreadChild", ...arguments); -} - -function jsxIdentifier(name) { - return (0, _builder.default)("JSXIdentifier", ...arguments); -} - -function jsxMemberExpression(object, property) { - return (0, _builder.default)("JSXMemberExpression", ...arguments); -} - -function jsxNamespacedName(namespace, name) { - return (0, _builder.default)("JSXNamespacedName", ...arguments); -} - -function jsxOpeningElement(name, attributes, selfClosing) { - return (0, _builder.default)("JSXOpeningElement", ...arguments); -} - -function jsxSpreadAttribute(argument) { - return (0, _builder.default)("JSXSpreadAttribute", ...arguments); -} - -function jsxText(value) { - return (0, _builder.default)("JSXText", ...arguments); -} - -function jsxFragment(openingFragment, closingFragment, children) { - return (0, _builder.default)("JSXFragment", ...arguments); -} - -function jsxOpeningFragment() { - return (0, _builder.default)("JSXOpeningFragment", ...arguments); -} - -function jsxClosingFragment() { - return (0, _builder.default)("JSXClosingFragment", ...arguments); -} - -function noop() { - return (0, _builder.default)("Noop", ...arguments); -} - -function placeholder(expectedNode, name) { - return (0, _builder.default)("Placeholder", ...arguments); -} - -function v8IntrinsicIdentifier(name) { - return (0, _builder.default)("V8IntrinsicIdentifier", ...arguments); -} - -function argumentPlaceholder() { - return (0, _builder.default)("ArgumentPlaceholder", ...arguments); -} - -function bindExpression(object, callee) { - return (0, _builder.default)("BindExpression", ...arguments); -} - -function importAttribute(key, value) { - return (0, _builder.default)("ImportAttribute", ...arguments); -} - -function decorator(expression) { - return (0, _builder.default)("Decorator", ...arguments); -} - -function doExpression(body, async) { - return (0, _builder.default)("DoExpression", ...arguments); -} - -function exportDefaultSpecifier(exported) { - return (0, _builder.default)("ExportDefaultSpecifier", ...arguments); -} - -function recordExpression(properties) { - return (0, _builder.default)("RecordExpression", ...arguments); -} - -function tupleExpression(elements) { - return (0, _builder.default)("TupleExpression", ...arguments); -} - -function decimalLiteral(value) { - return (0, _builder.default)("DecimalLiteral", ...arguments); -} - -function staticBlock(body) { - return (0, _builder.default)("StaticBlock", ...arguments); -} - -function moduleExpression(body) { - return (0, _builder.default)("ModuleExpression", ...arguments); -} - -function topicReference() { - return (0, _builder.default)("TopicReference", ...arguments); -} - -function pipelineTopicExpression(expression) { - return (0, _builder.default)("PipelineTopicExpression", ...arguments); -} - -function pipelineBareFunction(callee) { - return (0, _builder.default)("PipelineBareFunction", ...arguments); -} - -function pipelinePrimaryTopicReference() { - return (0, _builder.default)("PipelinePrimaryTopicReference", ...arguments); -} - -function tsParameterProperty(parameter) { - return (0, _builder.default)("TSParameterProperty", ...arguments); -} - -function tsDeclareFunction(id, typeParameters, params, returnType) { - return (0, _builder.default)("TSDeclareFunction", ...arguments); -} - -function tsDeclareMethod(decorators, key, typeParameters, params, returnType) { - return (0, _builder.default)("TSDeclareMethod", ...arguments); -} - -function tsQualifiedName(left, right) { - return (0, _builder.default)("TSQualifiedName", ...arguments); -} - -function tsCallSignatureDeclaration(typeParameters, parameters, typeAnnotation) { - return (0, _builder.default)("TSCallSignatureDeclaration", ...arguments); -} - -function tsConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation) { - return (0, _builder.default)("TSConstructSignatureDeclaration", ...arguments); -} - -function tsPropertySignature(key, typeAnnotation, initializer) { - return (0, _builder.default)("TSPropertySignature", ...arguments); -} - -function tsMethodSignature(key, typeParameters, parameters, typeAnnotation) { - return (0, _builder.default)("TSMethodSignature", ...arguments); -} - -function tsIndexSignature(parameters, typeAnnotation) { - return (0, _builder.default)("TSIndexSignature", ...arguments); -} - -function tsAnyKeyword() { - return (0, _builder.default)("TSAnyKeyword", ...arguments); -} - -function tsBooleanKeyword() { - return (0, _builder.default)("TSBooleanKeyword", ...arguments); -} - -function tsBigIntKeyword() { - return (0, _builder.default)("TSBigIntKeyword", ...arguments); -} - -function tsIntrinsicKeyword() { - return (0, _builder.default)("TSIntrinsicKeyword", ...arguments); -} - -function tsNeverKeyword() { - return (0, _builder.default)("TSNeverKeyword", ...arguments); -} - -function tsNullKeyword() { - return (0, _builder.default)("TSNullKeyword", ...arguments); -} - -function tsNumberKeyword() { - return (0, _builder.default)("TSNumberKeyword", ...arguments); -} - -function tsObjectKeyword() { - return (0, _builder.default)("TSObjectKeyword", ...arguments); -} - -function tsStringKeyword() { - return (0, _builder.default)("TSStringKeyword", ...arguments); -} - -function tsSymbolKeyword() { - return (0, _builder.default)("TSSymbolKeyword", ...arguments); -} - -function tsUndefinedKeyword() { - return (0, _builder.default)("TSUndefinedKeyword", ...arguments); -} - -function tsUnknownKeyword() { - return (0, _builder.default)("TSUnknownKeyword", ...arguments); -} - -function tsVoidKeyword() { - return (0, _builder.default)("TSVoidKeyword", ...arguments); -} - -function tsThisType() { - return (0, _builder.default)("TSThisType", ...arguments); -} - -function tsFunctionType(typeParameters, parameters, typeAnnotation) { - return (0, _builder.default)("TSFunctionType", ...arguments); -} - -function tsConstructorType(typeParameters, parameters, typeAnnotation) { - return (0, _builder.default)("TSConstructorType", ...arguments); -} - -function tsTypeReference(typeName, typeParameters) { - return (0, _builder.default)("TSTypeReference", ...arguments); -} - -function tsTypePredicate(parameterName, typeAnnotation, asserts) { - return (0, _builder.default)("TSTypePredicate", ...arguments); -} - -function tsTypeQuery(exprName) { - return (0, _builder.default)("TSTypeQuery", ...arguments); -} - -function tsTypeLiteral(members) { - return (0, _builder.default)("TSTypeLiteral", ...arguments); -} - -function tsArrayType(elementType) { - return (0, _builder.default)("TSArrayType", ...arguments); -} - -function tsTupleType(elementTypes) { - return (0, _builder.default)("TSTupleType", ...arguments); -} - -function tsOptionalType(typeAnnotation) { - return (0, _builder.default)("TSOptionalType", ...arguments); -} - -function tsRestType(typeAnnotation) { - return (0, _builder.default)("TSRestType", ...arguments); -} - -function tsNamedTupleMember(label, elementType, optional) { - return (0, _builder.default)("TSNamedTupleMember", ...arguments); -} - -function tsUnionType(types) { - return (0, _builder.default)("TSUnionType", ...arguments); -} - -function tsIntersectionType(types) { - return (0, _builder.default)("TSIntersectionType", ...arguments); -} - -function tsConditionalType(checkType, extendsType, trueType, falseType) { - return (0, _builder.default)("TSConditionalType", ...arguments); -} - -function tsInferType(typeParameter) { - return (0, _builder.default)("TSInferType", ...arguments); -} - -function tsParenthesizedType(typeAnnotation) { - return (0, _builder.default)("TSParenthesizedType", ...arguments); -} - -function tsTypeOperator(typeAnnotation) { - return (0, _builder.default)("TSTypeOperator", ...arguments); -} - -function tsIndexedAccessType(objectType, indexType) { - return (0, _builder.default)("TSIndexedAccessType", ...arguments); -} - -function tsMappedType(typeParameter, typeAnnotation, nameType) { - return (0, _builder.default)("TSMappedType", ...arguments); -} - -function tsLiteralType(literal) { - return (0, _builder.default)("TSLiteralType", ...arguments); -} - -function tsExpressionWithTypeArguments(expression, typeParameters) { - return (0, _builder.default)("TSExpressionWithTypeArguments", ...arguments); -} - -function tsInterfaceDeclaration(id, typeParameters, _extends, body) { - return (0, _builder.default)("TSInterfaceDeclaration", ...arguments); -} - -function tsInterfaceBody(body) { - return (0, _builder.default)("TSInterfaceBody", ...arguments); -} - -function tsTypeAliasDeclaration(id, typeParameters, typeAnnotation) { - return (0, _builder.default)("TSTypeAliasDeclaration", ...arguments); -} - -function tsAsExpression(expression, typeAnnotation) { - return (0, _builder.default)("TSAsExpression", ...arguments); -} - -function tsTypeAssertion(typeAnnotation, expression) { - return (0, _builder.default)("TSTypeAssertion", ...arguments); -} - -function tsEnumDeclaration(id, members) { - return (0, _builder.default)("TSEnumDeclaration", ...arguments); -} - -function tsEnumMember(id, initializer) { - return (0, _builder.default)("TSEnumMember", ...arguments); -} - -function tsModuleDeclaration(id, body) { - return (0, _builder.default)("TSModuleDeclaration", ...arguments); -} - -function tsModuleBlock(body) { - return (0, _builder.default)("TSModuleBlock", ...arguments); -} - -function tsImportType(argument, qualifier, typeParameters) { - return (0, _builder.default)("TSImportType", ...arguments); -} - -function tsImportEqualsDeclaration(id, moduleReference) { - return (0, _builder.default)("TSImportEqualsDeclaration", ...arguments); -} - -function tsExternalModuleReference(expression) { - return (0, _builder.default)("TSExternalModuleReference", ...arguments); -} - -function tsNonNullExpression(expression) { - return (0, _builder.default)("TSNonNullExpression", ...arguments); -} - -function tsExportAssignment(expression) { - return (0, _builder.default)("TSExportAssignment", ...arguments); -} - -function tsNamespaceExportDeclaration(id) { - return (0, _builder.default)("TSNamespaceExportDeclaration", ...arguments); -} - -function tsTypeAnnotation(typeAnnotation) { - return (0, _builder.default)("TSTypeAnnotation", ...arguments); -} - -function tsTypeParameterInstantiation(params) { - return (0, _builder.default)("TSTypeParameterInstantiation", ...arguments); -} - -function tsTypeParameterDeclaration(params) { - return (0, _builder.default)("TSTypeParameterDeclaration", ...arguments); -} - -function tsTypeParameter(constraint, _default, name) { - return (0, _builder.default)("TSTypeParameter", ...arguments); -} - -function NumberLiteral(...args) { - console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); - return (0, _builder.default)("NumberLiteral", ...args); -} - -function RegexLiteral(...args) { - console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); - return (0, _builder.default)("RegexLiteral", ...args); -} - -function RestProperty(...args) { - console.trace("The node type RestProperty has been renamed to RestElement"); - return (0, _builder.default)("RestProperty", ...args); -} - -function SpreadProperty(...args) { - console.trace("The node type SpreadProperty has been renamed to SpreadElement"); - return (0, _builder.default)("SpreadProperty", ...args); -} - -/***/ }), - -/***/ 41665: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "ArrayExpression", ({ - enumerable: true, - get: function () { - return _index.arrayExpression; - } -})); -Object.defineProperty(exports, "AssignmentExpression", ({ - enumerable: true, - get: function () { - return _index.assignmentExpression; - } -})); -Object.defineProperty(exports, "BinaryExpression", ({ - enumerable: true, - get: function () { - return _index.binaryExpression; - } -})); -Object.defineProperty(exports, "InterpreterDirective", ({ - enumerable: true, - get: function () { - return _index.interpreterDirective; - } -})); -Object.defineProperty(exports, "Directive", ({ - enumerable: true, - get: function () { - return _index.directive; - } -})); -Object.defineProperty(exports, "DirectiveLiteral", ({ - enumerable: true, - get: function () { - return _index.directiveLiteral; - } -})); -Object.defineProperty(exports, "BlockStatement", ({ - enumerable: true, - get: function () { - return _index.blockStatement; - } -})); -Object.defineProperty(exports, "BreakStatement", ({ - enumerable: true, - get: function () { - return _index.breakStatement; - } -})); -Object.defineProperty(exports, "CallExpression", ({ - enumerable: true, - get: function () { - return _index.callExpression; - } -})); -Object.defineProperty(exports, "CatchClause", ({ - enumerable: true, - get: function () { - return _index.catchClause; - } -})); -Object.defineProperty(exports, "ConditionalExpression", ({ - enumerable: true, - get: function () { - return _index.conditionalExpression; - } -})); -Object.defineProperty(exports, "ContinueStatement", ({ - enumerable: true, - get: function () { - return _index.continueStatement; - } -})); -Object.defineProperty(exports, "DebuggerStatement", ({ - enumerable: true, - get: function () { - return _index.debuggerStatement; - } -})); -Object.defineProperty(exports, "DoWhileStatement", ({ - enumerable: true, - get: function () { - return _index.doWhileStatement; - } -})); -Object.defineProperty(exports, "EmptyStatement", ({ - enumerable: true, - get: function () { - return _index.emptyStatement; - } -})); -Object.defineProperty(exports, "ExpressionStatement", ({ - enumerable: true, - get: function () { - return _index.expressionStatement; - } -})); -Object.defineProperty(exports, "File", ({ - enumerable: true, - get: function () { - return _index.file; - } -})); -Object.defineProperty(exports, "ForInStatement", ({ - enumerable: true, - get: function () { - return _index.forInStatement; - } -})); -Object.defineProperty(exports, "ForStatement", ({ - enumerable: true, - get: function () { - return _index.forStatement; - } -})); -Object.defineProperty(exports, "FunctionDeclaration", ({ - enumerable: true, - get: function () { - return _index.functionDeclaration; - } -})); -Object.defineProperty(exports, "FunctionExpression", ({ - enumerable: true, - get: function () { - return _index.functionExpression; - } -})); -Object.defineProperty(exports, "Identifier", ({ - enumerable: true, - get: function () { - return _index.identifier; - } -})); -Object.defineProperty(exports, "IfStatement", ({ - enumerable: true, - get: function () { - return _index.ifStatement; - } -})); -Object.defineProperty(exports, "LabeledStatement", ({ - enumerable: true, - get: function () { - return _index.labeledStatement; - } -})); -Object.defineProperty(exports, "StringLiteral", ({ - enumerable: true, - get: function () { - return _index.stringLiteral; - } -})); -Object.defineProperty(exports, "NumericLiteral", ({ - enumerable: true, - get: function () { - return _index.numericLiteral; - } -})); -Object.defineProperty(exports, "NullLiteral", ({ - enumerable: true, - get: function () { - return _index.nullLiteral; - } -})); -Object.defineProperty(exports, "BooleanLiteral", ({ - enumerable: true, - get: function () { - return _index.booleanLiteral; - } -})); -Object.defineProperty(exports, "RegExpLiteral", ({ - enumerable: true, - get: function () { - return _index.regExpLiteral; - } -})); -Object.defineProperty(exports, "LogicalExpression", ({ - enumerable: true, - get: function () { - return _index.logicalExpression; - } -})); -Object.defineProperty(exports, "MemberExpression", ({ - enumerable: true, - get: function () { - return _index.memberExpression; - } -})); -Object.defineProperty(exports, "NewExpression", ({ - enumerable: true, - get: function () { - return _index.newExpression; - } -})); -Object.defineProperty(exports, "Program", ({ - enumerable: true, - get: function () { - return _index.program; - } -})); -Object.defineProperty(exports, "ObjectExpression", ({ - enumerable: true, - get: function () { - return _index.objectExpression; - } -})); -Object.defineProperty(exports, "ObjectMethod", ({ - enumerable: true, - get: function () { - return _index.objectMethod; - } -})); -Object.defineProperty(exports, "ObjectProperty", ({ - enumerable: true, - get: function () { - return _index.objectProperty; - } -})); -Object.defineProperty(exports, "RestElement", ({ - enumerable: true, - get: function () { - return _index.restElement; - } -})); -Object.defineProperty(exports, "ReturnStatement", ({ - enumerable: true, - get: function () { - return _index.returnStatement; - } -})); -Object.defineProperty(exports, "SequenceExpression", ({ - enumerable: true, - get: function () { - return _index.sequenceExpression; - } -})); -Object.defineProperty(exports, "ParenthesizedExpression", ({ - enumerable: true, - get: function () { - return _index.parenthesizedExpression; - } -})); -Object.defineProperty(exports, "SwitchCase", ({ - enumerable: true, - get: function () { - return _index.switchCase; - } -})); -Object.defineProperty(exports, "SwitchStatement", ({ - enumerable: true, - get: function () { - return _index.switchStatement; - } -})); -Object.defineProperty(exports, "ThisExpression", ({ - enumerable: true, - get: function () { - return _index.thisExpression; - } -})); -Object.defineProperty(exports, "ThrowStatement", ({ - enumerable: true, - get: function () { - return _index.throwStatement; - } -})); -Object.defineProperty(exports, "TryStatement", ({ - enumerable: true, - get: function () { - return _index.tryStatement; - } -})); -Object.defineProperty(exports, "UnaryExpression", ({ - enumerable: true, - get: function () { - return _index.unaryExpression; - } -})); -Object.defineProperty(exports, "UpdateExpression", ({ - enumerable: true, - get: function () { - return _index.updateExpression; - } -})); -Object.defineProperty(exports, "VariableDeclaration", ({ - enumerable: true, - get: function () { - return _index.variableDeclaration; - } -})); -Object.defineProperty(exports, "VariableDeclarator", ({ - enumerable: true, - get: function () { - return _index.variableDeclarator; - } -})); -Object.defineProperty(exports, "WhileStatement", ({ - enumerable: true, - get: function () { - return _index.whileStatement; - } -})); -Object.defineProperty(exports, "WithStatement", ({ - enumerable: true, - get: function () { - return _index.withStatement; - } -})); -Object.defineProperty(exports, "AssignmentPattern", ({ - enumerable: true, - get: function () { - return _index.assignmentPattern; - } -})); -Object.defineProperty(exports, "ArrayPattern", ({ - enumerable: true, - get: function () { - return _index.arrayPattern; - } -})); -Object.defineProperty(exports, "ArrowFunctionExpression", ({ - enumerable: true, - get: function () { - return _index.arrowFunctionExpression; - } -})); -Object.defineProperty(exports, "ClassBody", ({ - enumerable: true, - get: function () { - return _index.classBody; - } -})); -Object.defineProperty(exports, "ClassExpression", ({ - enumerable: true, - get: function () { - return _index.classExpression; - } -})); -Object.defineProperty(exports, "ClassDeclaration", ({ - enumerable: true, - get: function () { - return _index.classDeclaration; - } -})); -Object.defineProperty(exports, "ExportAllDeclaration", ({ - enumerable: true, - get: function () { - return _index.exportAllDeclaration; - } -})); -Object.defineProperty(exports, "ExportDefaultDeclaration", ({ - enumerable: true, - get: function () { - return _index.exportDefaultDeclaration; - } -})); -Object.defineProperty(exports, "ExportNamedDeclaration", ({ - enumerable: true, - get: function () { - return _index.exportNamedDeclaration; - } -})); -Object.defineProperty(exports, "ExportSpecifier", ({ - enumerable: true, - get: function () { - return _index.exportSpecifier; - } -})); -Object.defineProperty(exports, "ForOfStatement", ({ - enumerable: true, - get: function () { - return _index.forOfStatement; - } -})); -Object.defineProperty(exports, "ImportDeclaration", ({ - enumerable: true, - get: function () { - return _index.importDeclaration; - } -})); -Object.defineProperty(exports, "ImportDefaultSpecifier", ({ - enumerable: true, - get: function () { - return _index.importDefaultSpecifier; - } -})); -Object.defineProperty(exports, "ImportNamespaceSpecifier", ({ - enumerable: true, - get: function () { - return _index.importNamespaceSpecifier; - } -})); -Object.defineProperty(exports, "ImportSpecifier", ({ - enumerable: true, - get: function () { - return _index.importSpecifier; - } -})); -Object.defineProperty(exports, "MetaProperty", ({ - enumerable: true, - get: function () { - return _index.metaProperty; - } -})); -Object.defineProperty(exports, "ClassMethod", ({ - enumerable: true, - get: function () { - return _index.classMethod; - } -})); -Object.defineProperty(exports, "ObjectPattern", ({ - enumerable: true, - get: function () { - return _index.objectPattern; - } -})); -Object.defineProperty(exports, "SpreadElement", ({ - enumerable: true, - get: function () { - return _index.spreadElement; - } -})); -Object.defineProperty(exports, "Super", ({ - enumerable: true, - get: function () { - return _index.super; - } -})); -Object.defineProperty(exports, "TaggedTemplateExpression", ({ - enumerable: true, - get: function () { - return _index.taggedTemplateExpression; - } -})); -Object.defineProperty(exports, "TemplateElement", ({ - enumerable: true, - get: function () { - return _index.templateElement; - } -})); -Object.defineProperty(exports, "TemplateLiteral", ({ - enumerable: true, - get: function () { - return _index.templateLiteral; - } -})); -Object.defineProperty(exports, "YieldExpression", ({ - enumerable: true, - get: function () { - return _index.yieldExpression; - } -})); -Object.defineProperty(exports, "AwaitExpression", ({ - enumerable: true, - get: function () { - return _index.awaitExpression; - } -})); -Object.defineProperty(exports, "Import", ({ - enumerable: true, - get: function () { - return _index.import; - } -})); -Object.defineProperty(exports, "BigIntLiteral", ({ - enumerable: true, - get: function () { - return _index.bigIntLiteral; - } -})); -Object.defineProperty(exports, "ExportNamespaceSpecifier", ({ - enumerable: true, - get: function () { - return _index.exportNamespaceSpecifier; - } -})); -Object.defineProperty(exports, "OptionalMemberExpression", ({ - enumerable: true, - get: function () { - return _index.optionalMemberExpression; - } -})); -Object.defineProperty(exports, "OptionalCallExpression", ({ - enumerable: true, - get: function () { - return _index.optionalCallExpression; - } -})); -Object.defineProperty(exports, "ClassProperty", ({ - enumerable: true, - get: function () { - return _index.classProperty; - } -})); -Object.defineProperty(exports, "ClassPrivateProperty", ({ - enumerable: true, - get: function () { - return _index.classPrivateProperty; - } -})); -Object.defineProperty(exports, "ClassPrivateMethod", ({ - enumerable: true, - get: function () { - return _index.classPrivateMethod; - } -})); -Object.defineProperty(exports, "PrivateName", ({ - enumerable: true, - get: function () { - return _index.privateName; - } -})); -Object.defineProperty(exports, "AnyTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.anyTypeAnnotation; - } -})); -Object.defineProperty(exports, "ArrayTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.arrayTypeAnnotation; - } -})); -Object.defineProperty(exports, "BooleanTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.booleanTypeAnnotation; - } -})); -Object.defineProperty(exports, "BooleanLiteralTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.booleanLiteralTypeAnnotation; - } -})); -Object.defineProperty(exports, "NullLiteralTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.nullLiteralTypeAnnotation; - } -})); -Object.defineProperty(exports, "ClassImplements", ({ - enumerable: true, - get: function () { - return _index.classImplements; - } -})); -Object.defineProperty(exports, "DeclareClass", ({ - enumerable: true, - get: function () { - return _index.declareClass; - } -})); -Object.defineProperty(exports, "DeclareFunction", ({ - enumerable: true, - get: function () { - return _index.declareFunction; - } -})); -Object.defineProperty(exports, "DeclareInterface", ({ - enumerable: true, - get: function () { - return _index.declareInterface; - } -})); -Object.defineProperty(exports, "DeclareModule", ({ - enumerable: true, - get: function () { - return _index.declareModule; - } -})); -Object.defineProperty(exports, "DeclareModuleExports", ({ - enumerable: true, - get: function () { - return _index.declareModuleExports; - } -})); -Object.defineProperty(exports, "DeclareTypeAlias", ({ - enumerable: true, - get: function () { - return _index.declareTypeAlias; - } -})); -Object.defineProperty(exports, "DeclareOpaqueType", ({ - enumerable: true, - get: function () { - return _index.declareOpaqueType; - } -})); -Object.defineProperty(exports, "DeclareVariable", ({ - enumerable: true, - get: function () { - return _index.declareVariable; - } -})); -Object.defineProperty(exports, "DeclareExportDeclaration", ({ - enumerable: true, - get: function () { - return _index.declareExportDeclaration; - } -})); -Object.defineProperty(exports, "DeclareExportAllDeclaration", ({ - enumerable: true, - get: function () { - return _index.declareExportAllDeclaration; - } -})); -Object.defineProperty(exports, "DeclaredPredicate", ({ - enumerable: true, - get: function () { - return _index.declaredPredicate; - } -})); -Object.defineProperty(exports, "ExistsTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.existsTypeAnnotation; - } -})); -Object.defineProperty(exports, "FunctionTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.functionTypeAnnotation; - } -})); -Object.defineProperty(exports, "FunctionTypeParam", ({ - enumerable: true, - get: function () { - return _index.functionTypeParam; - } -})); -Object.defineProperty(exports, "GenericTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.genericTypeAnnotation; - } -})); -Object.defineProperty(exports, "InferredPredicate", ({ - enumerable: true, - get: function () { - return _index.inferredPredicate; - } -})); -Object.defineProperty(exports, "InterfaceExtends", ({ - enumerable: true, - get: function () { - return _index.interfaceExtends; - } -})); -Object.defineProperty(exports, "InterfaceDeclaration", ({ - enumerable: true, - get: function () { - return _index.interfaceDeclaration; - } -})); -Object.defineProperty(exports, "InterfaceTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.interfaceTypeAnnotation; - } -})); -Object.defineProperty(exports, "IntersectionTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.intersectionTypeAnnotation; - } -})); -Object.defineProperty(exports, "MixedTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.mixedTypeAnnotation; - } -})); -Object.defineProperty(exports, "EmptyTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.emptyTypeAnnotation; - } -})); -Object.defineProperty(exports, "NullableTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.nullableTypeAnnotation; - } -})); -Object.defineProperty(exports, "NumberLiteralTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.numberLiteralTypeAnnotation; - } -})); -Object.defineProperty(exports, "NumberTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.numberTypeAnnotation; - } -})); -Object.defineProperty(exports, "ObjectTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.objectTypeAnnotation; - } -})); -Object.defineProperty(exports, "ObjectTypeInternalSlot", ({ - enumerable: true, - get: function () { - return _index.objectTypeInternalSlot; - } -})); -Object.defineProperty(exports, "ObjectTypeCallProperty", ({ - enumerable: true, - get: function () { - return _index.objectTypeCallProperty; - } -})); -Object.defineProperty(exports, "ObjectTypeIndexer", ({ - enumerable: true, - get: function () { - return _index.objectTypeIndexer; - } -})); -Object.defineProperty(exports, "ObjectTypeProperty", ({ - enumerable: true, - get: function () { - return _index.objectTypeProperty; - } -})); -Object.defineProperty(exports, "ObjectTypeSpreadProperty", ({ - enumerable: true, - get: function () { - return _index.objectTypeSpreadProperty; - } -})); -Object.defineProperty(exports, "OpaqueType", ({ - enumerable: true, - get: function () { - return _index.opaqueType; - } -})); -Object.defineProperty(exports, "QualifiedTypeIdentifier", ({ - enumerable: true, - get: function () { - return _index.qualifiedTypeIdentifier; - } -})); -Object.defineProperty(exports, "StringLiteralTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.stringLiteralTypeAnnotation; - } -})); -Object.defineProperty(exports, "StringTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.stringTypeAnnotation; - } -})); -Object.defineProperty(exports, "SymbolTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.symbolTypeAnnotation; - } -})); -Object.defineProperty(exports, "ThisTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.thisTypeAnnotation; - } -})); -Object.defineProperty(exports, "TupleTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.tupleTypeAnnotation; - } -})); -Object.defineProperty(exports, "TypeofTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.typeofTypeAnnotation; - } -})); -Object.defineProperty(exports, "TypeAlias", ({ - enumerable: true, - get: function () { - return _index.typeAlias; - } -})); -Object.defineProperty(exports, "TypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.typeAnnotation; - } -})); -Object.defineProperty(exports, "TypeCastExpression", ({ - enumerable: true, - get: function () { - return _index.typeCastExpression; - } -})); -Object.defineProperty(exports, "TypeParameter", ({ - enumerable: true, - get: function () { - return _index.typeParameter; - } -})); -Object.defineProperty(exports, "TypeParameterDeclaration", ({ - enumerable: true, - get: function () { - return _index.typeParameterDeclaration; - } -})); -Object.defineProperty(exports, "TypeParameterInstantiation", ({ - enumerable: true, - get: function () { - return _index.typeParameterInstantiation; - } -})); -Object.defineProperty(exports, "UnionTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.unionTypeAnnotation; - } -})); -Object.defineProperty(exports, "Variance", ({ - enumerable: true, - get: function () { - return _index.variance; - } -})); -Object.defineProperty(exports, "VoidTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.voidTypeAnnotation; - } -})); -Object.defineProperty(exports, "EnumDeclaration", ({ - enumerable: true, - get: function () { - return _index.enumDeclaration; - } -})); -Object.defineProperty(exports, "EnumBooleanBody", ({ - enumerable: true, - get: function () { - return _index.enumBooleanBody; - } -})); -Object.defineProperty(exports, "EnumNumberBody", ({ - enumerable: true, - get: function () { - return _index.enumNumberBody; - } -})); -Object.defineProperty(exports, "EnumStringBody", ({ - enumerable: true, - get: function () { - return _index.enumStringBody; - } -})); -Object.defineProperty(exports, "EnumSymbolBody", ({ - enumerable: true, - get: function () { - return _index.enumSymbolBody; - } -})); -Object.defineProperty(exports, "EnumBooleanMember", ({ - enumerable: true, - get: function () { - return _index.enumBooleanMember; - } -})); -Object.defineProperty(exports, "EnumNumberMember", ({ - enumerable: true, - get: function () { - return _index.enumNumberMember; - } -})); -Object.defineProperty(exports, "EnumStringMember", ({ - enumerable: true, - get: function () { - return _index.enumStringMember; - } -})); -Object.defineProperty(exports, "EnumDefaultedMember", ({ - enumerable: true, - get: function () { - return _index.enumDefaultedMember; - } -})); -Object.defineProperty(exports, "IndexedAccessType", ({ - enumerable: true, - get: function () { - return _index.indexedAccessType; - } -})); -Object.defineProperty(exports, "OptionalIndexedAccessType", ({ - enumerable: true, - get: function () { - return _index.optionalIndexedAccessType; - } -})); -Object.defineProperty(exports, "JSXAttribute", ({ - enumerable: true, - get: function () { - return _index.jsxAttribute; - } -})); -Object.defineProperty(exports, "JSXClosingElement", ({ - enumerable: true, - get: function () { - return _index.jsxClosingElement; - } -})); -Object.defineProperty(exports, "JSXElement", ({ - enumerable: true, - get: function () { - return _index.jsxElement; - } -})); -Object.defineProperty(exports, "JSXEmptyExpression", ({ - enumerable: true, - get: function () { - return _index.jsxEmptyExpression; - } -})); -Object.defineProperty(exports, "JSXExpressionContainer", ({ - enumerable: true, - get: function () { - return _index.jsxExpressionContainer; - } -})); -Object.defineProperty(exports, "JSXSpreadChild", ({ - enumerable: true, - get: function () { - return _index.jsxSpreadChild; - } -})); -Object.defineProperty(exports, "JSXIdentifier", ({ - enumerable: true, - get: function () { - return _index.jsxIdentifier; - } -})); -Object.defineProperty(exports, "JSXMemberExpression", ({ - enumerable: true, - get: function () { - return _index.jsxMemberExpression; - } -})); -Object.defineProperty(exports, "JSXNamespacedName", ({ - enumerable: true, - get: function () { - return _index.jsxNamespacedName; - } -})); -Object.defineProperty(exports, "JSXOpeningElement", ({ - enumerable: true, - get: function () { - return _index.jsxOpeningElement; - } -})); -Object.defineProperty(exports, "JSXSpreadAttribute", ({ - enumerable: true, - get: function () { - return _index.jsxSpreadAttribute; - } -})); -Object.defineProperty(exports, "JSXText", ({ - enumerable: true, - get: function () { - return _index.jsxText; - } -})); -Object.defineProperty(exports, "JSXFragment", ({ - enumerable: true, - get: function () { - return _index.jsxFragment; - } -})); -Object.defineProperty(exports, "JSXOpeningFragment", ({ - enumerable: true, - get: function () { - return _index.jsxOpeningFragment; - } -})); -Object.defineProperty(exports, "JSXClosingFragment", ({ - enumerable: true, - get: function () { - return _index.jsxClosingFragment; - } -})); -Object.defineProperty(exports, "Noop", ({ - enumerable: true, - get: function () { - return _index.noop; - } -})); -Object.defineProperty(exports, "Placeholder", ({ - enumerable: true, - get: function () { - return _index.placeholder; - } -})); -Object.defineProperty(exports, "V8IntrinsicIdentifier", ({ - enumerable: true, - get: function () { - return _index.v8IntrinsicIdentifier; - } -})); -Object.defineProperty(exports, "ArgumentPlaceholder", ({ - enumerable: true, - get: function () { - return _index.argumentPlaceholder; - } -})); -Object.defineProperty(exports, "BindExpression", ({ - enumerable: true, - get: function () { - return _index.bindExpression; - } -})); -Object.defineProperty(exports, "ImportAttribute", ({ - enumerable: true, - get: function () { - return _index.importAttribute; - } -})); -Object.defineProperty(exports, "Decorator", ({ - enumerable: true, - get: function () { - return _index.decorator; - } -})); -Object.defineProperty(exports, "DoExpression", ({ - enumerable: true, - get: function () { - return _index.doExpression; - } -})); -Object.defineProperty(exports, "ExportDefaultSpecifier", ({ - enumerable: true, - get: function () { - return _index.exportDefaultSpecifier; - } -})); -Object.defineProperty(exports, "RecordExpression", ({ - enumerable: true, - get: function () { - return _index.recordExpression; - } -})); -Object.defineProperty(exports, "TupleExpression", ({ - enumerable: true, - get: function () { - return _index.tupleExpression; - } -})); -Object.defineProperty(exports, "DecimalLiteral", ({ - enumerable: true, - get: function () { - return _index.decimalLiteral; - } -})); -Object.defineProperty(exports, "StaticBlock", ({ - enumerable: true, - get: function () { - return _index.staticBlock; - } -})); -Object.defineProperty(exports, "ModuleExpression", ({ - enumerable: true, - get: function () { - return _index.moduleExpression; - } -})); -Object.defineProperty(exports, "TopicReference", ({ - enumerable: true, - get: function () { - return _index.topicReference; - } -})); -Object.defineProperty(exports, "PipelineTopicExpression", ({ - enumerable: true, - get: function () { - return _index.pipelineTopicExpression; - } -})); -Object.defineProperty(exports, "PipelineBareFunction", ({ - enumerable: true, - get: function () { - return _index.pipelineBareFunction; - } -})); -Object.defineProperty(exports, "PipelinePrimaryTopicReference", ({ - enumerable: true, - get: function () { - return _index.pipelinePrimaryTopicReference; - } -})); -Object.defineProperty(exports, "TSParameterProperty", ({ - enumerable: true, - get: function () { - return _index.tsParameterProperty; - } -})); -Object.defineProperty(exports, "TSDeclareFunction", ({ - enumerable: true, - get: function () { - return _index.tsDeclareFunction; - } -})); -Object.defineProperty(exports, "TSDeclareMethod", ({ - enumerable: true, - get: function () { - return _index.tsDeclareMethod; - } -})); -Object.defineProperty(exports, "TSQualifiedName", ({ - enumerable: true, - get: function () { - return _index.tsQualifiedName; - } -})); -Object.defineProperty(exports, "TSCallSignatureDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsCallSignatureDeclaration; - } -})); -Object.defineProperty(exports, "TSConstructSignatureDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsConstructSignatureDeclaration; - } -})); -Object.defineProperty(exports, "TSPropertySignature", ({ - enumerable: true, - get: function () { - return _index.tsPropertySignature; - } -})); -Object.defineProperty(exports, "TSMethodSignature", ({ - enumerable: true, - get: function () { - return _index.tsMethodSignature; - } -})); -Object.defineProperty(exports, "TSIndexSignature", ({ - enumerable: true, - get: function () { - return _index.tsIndexSignature; - } -})); -Object.defineProperty(exports, "TSAnyKeyword", ({ - enumerable: true, - get: function () { - return _index.tsAnyKeyword; - } -})); -Object.defineProperty(exports, "TSBooleanKeyword", ({ - enumerable: true, - get: function () { - return _index.tsBooleanKeyword; - } -})); -Object.defineProperty(exports, "TSBigIntKeyword", ({ - enumerable: true, - get: function () { - return _index.tsBigIntKeyword; - } -})); -Object.defineProperty(exports, "TSIntrinsicKeyword", ({ - enumerable: true, - get: function () { - return _index.tsIntrinsicKeyword; - } -})); -Object.defineProperty(exports, "TSNeverKeyword", ({ - enumerable: true, - get: function () { - return _index.tsNeverKeyword; - } -})); -Object.defineProperty(exports, "TSNullKeyword", ({ - enumerable: true, - get: function () { - return _index.tsNullKeyword; - } -})); -Object.defineProperty(exports, "TSNumberKeyword", ({ - enumerable: true, - get: function () { - return _index.tsNumberKeyword; - } -})); -Object.defineProperty(exports, "TSObjectKeyword", ({ - enumerable: true, - get: function () { - return _index.tsObjectKeyword; - } -})); -Object.defineProperty(exports, "TSStringKeyword", ({ - enumerable: true, - get: function () { - return _index.tsStringKeyword; - } -})); -Object.defineProperty(exports, "TSSymbolKeyword", ({ - enumerable: true, - get: function () { - return _index.tsSymbolKeyword; - } -})); -Object.defineProperty(exports, "TSUndefinedKeyword", ({ - enumerable: true, - get: function () { - return _index.tsUndefinedKeyword; - } -})); -Object.defineProperty(exports, "TSUnknownKeyword", ({ - enumerable: true, - get: function () { - return _index.tsUnknownKeyword; - } -})); -Object.defineProperty(exports, "TSVoidKeyword", ({ - enumerable: true, - get: function () { - return _index.tsVoidKeyword; - } -})); -Object.defineProperty(exports, "TSThisType", ({ - enumerable: true, - get: function () { - return _index.tsThisType; - } -})); -Object.defineProperty(exports, "TSFunctionType", ({ - enumerable: true, - get: function () { - return _index.tsFunctionType; - } -})); -Object.defineProperty(exports, "TSConstructorType", ({ - enumerable: true, - get: function () { - return _index.tsConstructorType; - } -})); -Object.defineProperty(exports, "TSTypeReference", ({ - enumerable: true, - get: function () { - return _index.tsTypeReference; - } -})); -Object.defineProperty(exports, "TSTypePredicate", ({ - enumerable: true, - get: function () { - return _index.tsTypePredicate; - } -})); -Object.defineProperty(exports, "TSTypeQuery", ({ - enumerable: true, - get: function () { - return _index.tsTypeQuery; - } -})); -Object.defineProperty(exports, "TSTypeLiteral", ({ - enumerable: true, - get: function () { - return _index.tsTypeLiteral; - } -})); -Object.defineProperty(exports, "TSArrayType", ({ - enumerable: true, - get: function () { - return _index.tsArrayType; - } -})); -Object.defineProperty(exports, "TSTupleType", ({ - enumerable: true, - get: function () { - return _index.tsTupleType; - } -})); -Object.defineProperty(exports, "TSOptionalType", ({ - enumerable: true, - get: function () { - return _index.tsOptionalType; - } -})); -Object.defineProperty(exports, "TSRestType", ({ - enumerable: true, - get: function () { - return _index.tsRestType; - } -})); -Object.defineProperty(exports, "TSNamedTupleMember", ({ - enumerable: true, - get: function () { - return _index.tsNamedTupleMember; - } -})); -Object.defineProperty(exports, "TSUnionType", ({ - enumerable: true, - get: function () { - return _index.tsUnionType; - } -})); -Object.defineProperty(exports, "TSIntersectionType", ({ - enumerable: true, - get: function () { - return _index.tsIntersectionType; - } -})); -Object.defineProperty(exports, "TSConditionalType", ({ - enumerable: true, - get: function () { - return _index.tsConditionalType; - } -})); -Object.defineProperty(exports, "TSInferType", ({ - enumerable: true, - get: function () { - return _index.tsInferType; - } -})); -Object.defineProperty(exports, "TSParenthesizedType", ({ - enumerable: true, - get: function () { - return _index.tsParenthesizedType; - } -})); -Object.defineProperty(exports, "TSTypeOperator", ({ - enumerable: true, - get: function () { - return _index.tsTypeOperator; - } -})); -Object.defineProperty(exports, "TSIndexedAccessType", ({ - enumerable: true, - get: function () { - return _index.tsIndexedAccessType; - } -})); -Object.defineProperty(exports, "TSMappedType", ({ - enumerable: true, - get: function () { - return _index.tsMappedType; - } -})); -Object.defineProperty(exports, "TSLiteralType", ({ - enumerable: true, - get: function () { - return _index.tsLiteralType; - } -})); -Object.defineProperty(exports, "TSExpressionWithTypeArguments", ({ - enumerable: true, - get: function () { - return _index.tsExpressionWithTypeArguments; - } -})); -Object.defineProperty(exports, "TSInterfaceDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsInterfaceDeclaration; - } -})); -Object.defineProperty(exports, "TSInterfaceBody", ({ - enumerable: true, - get: function () { - return _index.tsInterfaceBody; - } -})); -Object.defineProperty(exports, "TSTypeAliasDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsTypeAliasDeclaration; - } -})); -Object.defineProperty(exports, "TSAsExpression", ({ - enumerable: true, - get: function () { - return _index.tsAsExpression; - } -})); -Object.defineProperty(exports, "TSTypeAssertion", ({ - enumerable: true, - get: function () { - return _index.tsTypeAssertion; - } -})); -Object.defineProperty(exports, "TSEnumDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsEnumDeclaration; - } -})); -Object.defineProperty(exports, "TSEnumMember", ({ - enumerable: true, - get: function () { - return _index.tsEnumMember; - } -})); -Object.defineProperty(exports, "TSModuleDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsModuleDeclaration; - } -})); -Object.defineProperty(exports, "TSModuleBlock", ({ - enumerable: true, - get: function () { - return _index.tsModuleBlock; - } -})); -Object.defineProperty(exports, "TSImportType", ({ - enumerable: true, - get: function () { - return _index.tsImportType; - } -})); -Object.defineProperty(exports, "TSImportEqualsDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsImportEqualsDeclaration; - } -})); -Object.defineProperty(exports, "TSExternalModuleReference", ({ - enumerable: true, - get: function () { - return _index.tsExternalModuleReference; - } -})); -Object.defineProperty(exports, "TSNonNullExpression", ({ - enumerable: true, - get: function () { - return _index.tsNonNullExpression; - } -})); -Object.defineProperty(exports, "TSExportAssignment", ({ - enumerable: true, - get: function () { - return _index.tsExportAssignment; - } -})); -Object.defineProperty(exports, "TSNamespaceExportDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsNamespaceExportDeclaration; - } -})); -Object.defineProperty(exports, "TSTypeAnnotation", ({ - enumerable: true, - get: function () { - return _index.tsTypeAnnotation; - } -})); -Object.defineProperty(exports, "TSTypeParameterInstantiation", ({ - enumerable: true, - get: function () { - return _index.tsTypeParameterInstantiation; - } -})); -Object.defineProperty(exports, "TSTypeParameterDeclaration", ({ - enumerable: true, - get: function () { - return _index.tsTypeParameterDeclaration; - } -})); -Object.defineProperty(exports, "TSTypeParameter", ({ - enumerable: true, - get: function () { - return _index.tsTypeParameter; - } -})); -Object.defineProperty(exports, "NumberLiteral", ({ - enumerable: true, - get: function () { - return _index.numberLiteral; - } -})); -Object.defineProperty(exports, "RegexLiteral", ({ - enumerable: true, - get: function () { - return _index.regexLiteral; - } -})); -Object.defineProperty(exports, "RestProperty", ({ - enumerable: true, - get: function () { - return _index.restProperty; - } -})); -Object.defineProperty(exports, "SpreadProperty", ({ - enumerable: true, - get: function () { - return _index.spreadProperty; - } -})); - -var _index = __nccwpck_require__(10758); - -/***/ }), - -/***/ 72259: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = buildChildren; - -var _generated = __nccwpck_require__(52047); - -var _cleanJSXElementLiteralChild = __nccwpck_require__(46671); - -function buildChildren(node) { - const elements = []; - - for (let i = 0; i < node.children.length; i++) { - let child = node.children[i]; - - if ((0, _generated.isJSXText)(child)) { - (0, _cleanJSXElementLiteralChild.default)(child, elements); - continue; - } - - if ((0, _generated.isJSXExpressionContainer)(child)) child = child.expression; - if ((0, _generated.isJSXEmptyExpression)(child)) continue; - elements.push(child); - } - - return elements; -} - -/***/ }), - -/***/ 69114: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = createTSUnionType; - -var _generated = __nccwpck_require__(10758); - -var _removeTypeDuplicates = __nccwpck_require__(6262); - -function createTSUnionType(typeAnnotations) { - const types = typeAnnotations.map(type => type.typeAnnotation); - const flattened = (0, _removeTypeDuplicates.default)(types); - - if (flattened.length === 1) { - return flattened[0]; - } else { - return (0, _generated.tsUnionType)(flattened); - } -} - -/***/ }), - -/***/ 39827: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = clone; - -var _cloneNode = __nccwpck_require__(66479); - -function clone(node) { - return (0, _cloneNode.default)(node, false); -} - -/***/ }), - -/***/ 68567: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = cloneDeep; - -var _cloneNode = __nccwpck_require__(66479); - -function cloneDeep(node) { - return (0, _cloneNode.default)(node); -} - -/***/ }), - -/***/ 33298: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = cloneDeepWithoutLoc; - -var _cloneNode = __nccwpck_require__(66479); - -function cloneDeepWithoutLoc(node) { - return (0, _cloneNode.default)(node, true, true); -} - -/***/ }), - -/***/ 66479: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = cloneNode; - -var _definitions = __nccwpck_require__(19090); - -var _generated = __nccwpck_require__(52047); - -const has = Function.call.bind(Object.prototype.hasOwnProperty); - -function cloneIfNode(obj, deep, withoutLoc) { - if (obj && typeof obj.type === "string") { - return cloneNode(obj, deep, withoutLoc); - } - - return obj; -} - -function cloneIfNodeOrArray(obj, deep, withoutLoc) { - if (Array.isArray(obj)) { - return obj.map(node => cloneIfNode(node, deep, withoutLoc)); - } - - return cloneIfNode(obj, deep, withoutLoc); -} - -function cloneNode(node, deep = true, withoutLoc = false) { - if (!node) return node; - const { - type - } = node; - const newNode = { - type: node.type - }; - - if ((0, _generated.isIdentifier)(node)) { - newNode.name = node.name; - - if (has(node, "optional") && typeof node.optional === "boolean") { - newNode.optional = node.optional; - } - - if (has(node, "typeAnnotation")) { - newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc) : node.typeAnnotation; - } - } else if (!has(_definitions.NODE_FIELDS, type)) { - throw new Error(`Unknown node type: "${type}"`); - } else { - for (const field of Object.keys(_definitions.NODE_FIELDS[type])) { - if (has(node, field)) { - if (deep) { - newNode[field] = (0, _generated.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc) : cloneIfNodeOrArray(node[field], true, withoutLoc); - } else { - newNode[field] = node[field]; - } - } - } - } - - if (has(node, "loc")) { - if (withoutLoc) { - newNode.loc = null; - } else { - newNode.loc = node.loc; - } - } - - if (has(node, "leadingComments")) { - newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc); - } - - if (has(node, "innerComments")) { - newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc); - } - - if (has(node, "trailingComments")) { - newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc); - } - - if (has(node, "extra")) { - newNode.extra = Object.assign({}, node.extra); - } - - return newNode; -} - -function maybeCloneComments(comments, deep, withoutLoc) { - if (!comments || !deep) { - return comments; - } - - return comments.map(({ - type, - value, - loc - }) => { - if (withoutLoc) { - return { - type, - value, - loc: null - }; - } - - return { - type, - value, - loc - }; - }); -} - -/***/ }), - -/***/ 36087: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = cloneWithoutLoc; - -var _cloneNode = __nccwpck_require__(66479); - -function cloneWithoutLoc(node) { - return (0, _cloneNode.default)(node, false, true); -} - -/***/ }), - -/***/ 73952: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = addComment; - -var _addComments = __nccwpck_require__(27032); - -function addComment(node, type, content, line) { - return (0, _addComments.default)(node, type, [{ - type: line ? "CommentLine" : "CommentBlock", - value: content - }]); -} - -/***/ }), - -/***/ 27032: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = addComments; - -function addComments(node, type, comments) { - if (!comments || !node) return node; - const key = `${type}Comments`; - - if (node[key]) { - if (type === "leading") { - node[key] = comments.concat(node[key]); - } else { - node[key] = node[key].concat(comments); - } - } else { - node[key] = comments; - } - - return node; -} - -/***/ }), - -/***/ 62666: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = inheritInnerComments; - -var _inherit = __nccwpck_require__(4335); - -function inheritInnerComments(child, parent) { - (0, _inherit.default)("innerComments", child, parent); -} - -/***/ }), - -/***/ 47158: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = inheritLeadingComments; - -var _inherit = __nccwpck_require__(4335); - -function inheritLeadingComments(child, parent) { - (0, _inherit.default)("leadingComments", child, parent); -} - -/***/ }), - -/***/ 75225: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = inheritTrailingComments; - -var _inherit = __nccwpck_require__(4335); - -function inheritTrailingComments(child, parent) { - (0, _inherit.default)("trailingComments", child, parent); -} - -/***/ }), - -/***/ 41832: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = inheritsComments; - -var _inheritTrailingComments = __nccwpck_require__(75225); - -var _inheritLeadingComments = __nccwpck_require__(47158); - -var _inheritInnerComments = __nccwpck_require__(62666); - -function inheritsComments(child, parent) { - (0, _inheritTrailingComments.default)(child, parent); - (0, _inheritLeadingComments.default)(child, parent); - (0, _inheritInnerComments.default)(child, parent); - return child; -} - -/***/ }), - -/***/ 53755: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = removeComments; - -var _constants = __nccwpck_require__(90514); - -function removeComments(node) { - _constants.COMMENT_KEYS.forEach(key => { - node[key] = null; - }); - - return node; -} - -/***/ }), - -/***/ 86441: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TSBASETYPE_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.JSX_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.FLOWTYPE_TYPES = exports.FLOW_TYPES = exports.PRIVATE_TYPES = exports.MODULESPECIFIER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = exports.CLASS_TYPES = exports.PATTERN_TYPES = exports.UNARYLIKE_TYPES = exports.PROPERTY_TYPES = exports.OBJECTMEMBER_TYPES = exports.METHOD_TYPES = exports.USERWHITESPACABLE_TYPES = exports.IMMUTABLE_TYPES = exports.LITERAL_TYPES = exports.TSENTITYNAME_TYPES = exports.LVAL_TYPES = exports.PATTERNLIKE_TYPES = exports.DECLARATION_TYPES = exports.PUREISH_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTION_TYPES = exports.FORXSTATEMENT_TYPES = exports.FOR_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.WHILE_TYPES = exports.LOOP_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.SCOPABLE_TYPES = exports.BINARY_TYPES = exports.EXPRESSION_TYPES = void 0; - -var _definitions = __nccwpck_require__(19090); - -const EXPRESSION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Expression"]; -exports.EXPRESSION_TYPES = EXPRESSION_TYPES; -const BINARY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Binary"]; -exports.BINARY_TYPES = BINARY_TYPES; -const SCOPABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Scopable"]; -exports.SCOPABLE_TYPES = SCOPABLE_TYPES; -const BLOCKPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["BlockParent"]; -exports.BLOCKPARENT_TYPES = BLOCKPARENT_TYPES; -const BLOCK_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Block"]; -exports.BLOCK_TYPES = BLOCK_TYPES; -const STATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Statement"]; -exports.STATEMENT_TYPES = STATEMENT_TYPES; -const TERMINATORLESS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Terminatorless"]; -exports.TERMINATORLESS_TYPES = TERMINATORLESS_TYPES; -const COMPLETIONSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["CompletionStatement"]; -exports.COMPLETIONSTATEMENT_TYPES = COMPLETIONSTATEMENT_TYPES; -const CONDITIONAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Conditional"]; -exports.CONDITIONAL_TYPES = CONDITIONAL_TYPES; -const LOOP_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Loop"]; -exports.LOOP_TYPES = LOOP_TYPES; -const WHILE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["While"]; -exports.WHILE_TYPES = WHILE_TYPES; -const EXPRESSIONWRAPPER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExpressionWrapper"]; -exports.EXPRESSIONWRAPPER_TYPES = EXPRESSIONWRAPPER_TYPES; -const FOR_TYPES = _definitions.FLIPPED_ALIAS_KEYS["For"]; -exports.FOR_TYPES = FOR_TYPES; -const FORXSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ForXStatement"]; -exports.FORXSTATEMENT_TYPES = FORXSTATEMENT_TYPES; -const FUNCTION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Function"]; -exports.FUNCTION_TYPES = FUNCTION_TYPES; -const FUNCTIONPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FunctionParent"]; -exports.FUNCTIONPARENT_TYPES = FUNCTIONPARENT_TYPES; -const PUREISH_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pureish"]; -exports.PUREISH_TYPES = PUREISH_TYPES; -const DECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Declaration"]; -exports.DECLARATION_TYPES = DECLARATION_TYPES; -const PATTERNLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["PatternLike"]; -exports.PATTERNLIKE_TYPES = PATTERNLIKE_TYPES; -const LVAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["LVal"]; -exports.LVAL_TYPES = LVAL_TYPES; -const TSENTITYNAME_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSEntityName"]; -exports.TSENTITYNAME_TYPES = TSENTITYNAME_TYPES; -const LITERAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Literal"]; -exports.LITERAL_TYPES = LITERAL_TYPES; -const IMMUTABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Immutable"]; -exports.IMMUTABLE_TYPES = IMMUTABLE_TYPES; -const USERWHITESPACABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UserWhitespacable"]; -exports.USERWHITESPACABLE_TYPES = USERWHITESPACABLE_TYPES; -const METHOD_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Method"]; -exports.METHOD_TYPES = METHOD_TYPES; -const OBJECTMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ObjectMember"]; -exports.OBJECTMEMBER_TYPES = OBJECTMEMBER_TYPES; -const PROPERTY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Property"]; -exports.PROPERTY_TYPES = PROPERTY_TYPES; -const UNARYLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UnaryLike"]; -exports.UNARYLIKE_TYPES = UNARYLIKE_TYPES; -const PATTERN_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pattern"]; -exports.PATTERN_TYPES = PATTERN_TYPES; -const CLASS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Class"]; -exports.CLASS_TYPES = CLASS_TYPES; -const MODULEDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleDeclaration"]; -exports.MODULEDECLARATION_TYPES = MODULEDECLARATION_TYPES; -const EXPORTDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExportDeclaration"]; -exports.EXPORTDECLARATION_TYPES = EXPORTDECLARATION_TYPES; -const MODULESPECIFIER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleSpecifier"]; -exports.MODULESPECIFIER_TYPES = MODULESPECIFIER_TYPES; -const PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"]; -exports.PRIVATE_TYPES = PRIVATE_TYPES; -const FLOW_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Flow"]; -exports.FLOW_TYPES = FLOW_TYPES; -const FLOWTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowType"]; -exports.FLOWTYPE_TYPES = FLOWTYPE_TYPES; -const FLOWBASEANNOTATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"]; -exports.FLOWBASEANNOTATION_TYPES = FLOWBASEANNOTATION_TYPES; -const FLOWDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowDeclaration"]; -exports.FLOWDECLARATION_TYPES = FLOWDECLARATION_TYPES; -const FLOWPREDICATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowPredicate"]; -exports.FLOWPREDICATE_TYPES = FLOWPREDICATE_TYPES; -const ENUMBODY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["EnumBody"]; -exports.ENUMBODY_TYPES = ENUMBODY_TYPES; -const ENUMMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["EnumMember"]; -exports.ENUMMEMBER_TYPES = ENUMMEMBER_TYPES; -const JSX_TYPES = _definitions.FLIPPED_ALIAS_KEYS["JSX"]; -exports.JSX_TYPES = JSX_TYPES; -const TSTYPEELEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSTypeElement"]; -exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES; -const TSTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSType"]; -exports.TSTYPE_TYPES = TSTYPE_TYPES; -const TSBASETYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSBaseType"]; -exports.TSBASETYPE_TYPES = TSBASETYPE_TYPES; - -/***/ }), - -/***/ 90514: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.NOT_LOCAL_BINDING = exports.BLOCK_SCOPED_SYMBOL = exports.INHERIT_KEYS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = exports.BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.UPDATE_OPERATORS = exports.LOGICAL_OPERATORS = exports.COMMENT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = void 0; -const STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"]; -exports.STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS; -const FLATTENABLE_KEYS = ["body", "expressions"]; -exports.FLATTENABLE_KEYS = FLATTENABLE_KEYS; -const FOR_INIT_KEYS = ["left", "init"]; -exports.FOR_INIT_KEYS = FOR_INIT_KEYS; -const COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"]; -exports.COMMENT_KEYS = COMMENT_KEYS; -const LOGICAL_OPERATORS = ["||", "&&", "??"]; -exports.LOGICAL_OPERATORS = LOGICAL_OPERATORS; -const UPDATE_OPERATORS = ["++", "--"]; -exports.UPDATE_OPERATORS = UPDATE_OPERATORS; -const BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="]; -exports.BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS; -const EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="]; -exports.EQUALITY_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS; -const COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"]; -exports.COMPARISON_BINARY_OPERATORS = COMPARISON_BINARY_OPERATORS; -const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS]; -exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS; -const NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"]; -exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS; -const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS]; -exports.BINARY_OPERATORS = BINARY_OPERATORS; -const ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")]; -exports.ASSIGNMENT_OPERATORS = ASSIGNMENT_OPERATORS; -const BOOLEAN_UNARY_OPERATORS = ["delete", "!"]; -exports.BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS; -const NUMBER_UNARY_OPERATORS = ["+", "-", "~"]; -exports.NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS; -const STRING_UNARY_OPERATORS = ["typeof"]; -exports.STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS; -const UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS]; -exports.UNARY_OPERATORS = UNARY_OPERATORS; -const INHERIT_KEYS = { - optional: ["typeAnnotation", "typeParameters", "returnType"], - force: ["start", "loc", "end"] -}; -exports.INHERIT_KEYS = INHERIT_KEYS; -const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped"); -exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL; -const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding"); -exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING; - -/***/ }), - -/***/ 32938: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = ensureBlock; - -var _toBlock = __nccwpck_require__(17300); - -function ensureBlock(node, key = "body") { - return node[key] = (0, _toBlock.default)(node[key], node); -} - -/***/ }), - -/***/ 58517: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = gatherSequenceExpressions; - -var _getBindingIdentifiers = __nccwpck_require__(80805); - -var _generated = __nccwpck_require__(52047); - -var _generated2 = __nccwpck_require__(10758); - -var _cloneNode = __nccwpck_require__(66479); - -function gatherSequenceExpressions(nodes, scope, declars) { - const exprs = []; - let ensureLastUndefined = true; - - for (const node of nodes) { - if (!(0, _generated.isEmptyStatement)(node)) { - ensureLastUndefined = false; - } - - if ((0, _generated.isExpression)(node)) { - exprs.push(node); - } else if ((0, _generated.isExpressionStatement)(node)) { - exprs.push(node.expression); - } else if ((0, _generated.isVariableDeclaration)(node)) { - if (node.kind !== "var") return; - - for (const declar of node.declarations) { - const bindings = (0, _getBindingIdentifiers.default)(declar); - - for (const key of Object.keys(bindings)) { - declars.push({ - kind: node.kind, - id: (0, _cloneNode.default)(bindings[key]) - }); - } - - if (declar.init) { - exprs.push((0, _generated2.assignmentExpression)("=", declar.id, declar.init)); - } - } - - ensureLastUndefined = true; - } else if ((0, _generated.isIfStatement)(node)) { - const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode(); - const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode(); - if (!consequent || !alternate) return; - exprs.push((0, _generated2.conditionalExpression)(node.test, consequent, alternate)); - } else if ((0, _generated.isBlockStatement)(node)) { - const body = gatherSequenceExpressions(node.body, scope, declars); - if (!body) return; - exprs.push(body); - } else if ((0, _generated.isEmptyStatement)(node)) { - if (nodes.indexOf(node) === 0) { - ensureLastUndefined = true; - } - } else { - return; - } - } - - if (ensureLastUndefined) { - exprs.push(scope.buildUndefinedNode()); - } - - if (exprs.length === 1) { - return exprs[0]; - } else { - return (0, _generated2.sequenceExpression)(exprs); - } -} - -/***/ }), - -/***/ 45099: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = toBindingIdentifierName; - -var _toIdentifier = __nccwpck_require__(62910); - -function toBindingIdentifierName(name) { - name = (0, _toIdentifier.default)(name); - if (name === "eval" || name === "arguments") name = "_" + name; - return name; -} - -/***/ }), - -/***/ 17300: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = toBlock; - -var _generated = __nccwpck_require__(52047); - -var _generated2 = __nccwpck_require__(10758); - -function toBlock(node, parent) { - if ((0, _generated.isBlockStatement)(node)) { - return node; - } - - let blockNodes = []; - - if ((0, _generated.isEmptyStatement)(node)) { - blockNodes = []; - } else { - if (!(0, _generated.isStatement)(node)) { - if ((0, _generated.isFunction)(parent)) { - node = (0, _generated2.returnStatement)(node); - } else { - node = (0, _generated2.expressionStatement)(node); - } - } - - blockNodes = [node]; - } - - return (0, _generated2.blockStatement)(blockNodes); -} - -/***/ }), - -/***/ 52828: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = toComputedKey; - -var _generated = __nccwpck_require__(52047); - -var _generated2 = __nccwpck_require__(10758); - -function toComputedKey(node, key = node.key || node.property) { - if (!node.computed && (0, _generated.isIdentifier)(key)) key = (0, _generated2.stringLiteral)(key.name); - return key; -} - -/***/ }), - -/***/ 22628: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _generated = __nccwpck_require__(52047); - -var _default = toExpression; -exports["default"] = _default; - -function toExpression(node) { - if ((0, _generated.isExpressionStatement)(node)) { - node = node.expression; - } - - if ((0, _generated.isExpression)(node)) { - return node; - } - - if ((0, _generated.isClass)(node)) { - node.type = "ClassExpression"; - } else if ((0, _generated.isFunction)(node)) { - node.type = "FunctionExpression"; - } - - if (!(0, _generated.isExpression)(node)) { - throw new Error(`cannot turn ${node.type} to an expression`); - } - - return node; -} - -/***/ }), - -/***/ 62910: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = toIdentifier; - -var _isValidIdentifier = __nccwpck_require__(98557); - -var _helperValidatorIdentifier = __nccwpck_require__(49586); - -function toIdentifier(input) { - input = input + ""; - let name = ""; - - for (const c of input) { - name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : "-"; - } - - name = name.replace(/^[-0-9]+/, ""); - name = name.replace(/[-\s]+(.)?/g, function (match, c) { - return c ? c.toUpperCase() : ""; - }); - - if (!(0, _isValidIdentifier.default)(name)) { - name = `_${name}`; - } - - return name || "_"; -} - -/***/ }), - -/***/ 89099: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = toKeyAlias; - -var _generated = __nccwpck_require__(52047); - -var _cloneNode = __nccwpck_require__(66479); - -var _removePropertiesDeep = __nccwpck_require__(83983); - -function toKeyAlias(node, key = node.key) { - let alias; - - if (node.kind === "method") { - return toKeyAlias.increment() + ""; - } else if ((0, _generated.isIdentifier)(key)) { - alias = key.name; - } else if ((0, _generated.isStringLiteral)(key)) { - alias = JSON.stringify(key.value); - } else { - alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key))); - } - - if (node.computed) { - alias = `[${alias}]`; - } - - if (node.static) { - alias = `static:${alias}`; - } - - return alias; -} - -toKeyAlias.uid = 0; - -toKeyAlias.increment = function () { - if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) { - return toKeyAlias.uid = 0; - } else { - return toKeyAlias.uid++; - } -}; - -/***/ }), - -/***/ 67455: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = toSequenceExpression; - -var _gatherSequenceExpressions = __nccwpck_require__(58517); - -function toSequenceExpression(nodes, scope) { - if (!(nodes != null && nodes.length)) return; - const declars = []; - const result = (0, _gatherSequenceExpressions.default)(nodes, scope, declars); - if (!result) return; - - for (const declar of declars) { - scope.push(declar); - } - - return result; -} - -/***/ }), - -/***/ 13198: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _generated = __nccwpck_require__(52047); - -var _generated2 = __nccwpck_require__(10758); - -var _default = toStatement; -exports["default"] = _default; - -function toStatement(node, ignore) { - if ((0, _generated.isStatement)(node)) { - return node; - } - - let mustHaveId = false; - let newType; - - if ((0, _generated.isClass)(node)) { - mustHaveId = true; - newType = "ClassDeclaration"; - } else if ((0, _generated.isFunction)(node)) { - mustHaveId = true; - newType = "FunctionDeclaration"; - } else if ((0, _generated.isAssignmentExpression)(node)) { - return (0, _generated2.expressionStatement)(node); - } - - if (mustHaveId && !node.id) { - newType = false; - } - - if (!newType) { - if (ignore) { - return false; - } else { - throw new Error(`cannot turn ${node.type} to a statement`); - } - } - - node.type = newType; - return node; -} - -/***/ }), - -/***/ 17411: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _isValidIdentifier = __nccwpck_require__(98557); - -var _generated = __nccwpck_require__(10758); - -var _default = valueToNode; -exports["default"] = _default; -const objectToString = Function.call.bind(Object.prototype.toString); - -function isRegExp(value) { - return objectToString(value) === "[object RegExp]"; -} - -function isPlainObject(value) { - if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") { - return false; - } - - const proto = Object.getPrototypeOf(value); - return proto === null || Object.getPrototypeOf(proto) === null; -} - -function valueToNode(value) { - if (value === undefined) { - return (0, _generated.identifier)("undefined"); - } - - if (value === true || value === false) { - return (0, _generated.booleanLiteral)(value); - } - - if (value === null) { - return (0, _generated.nullLiteral)(); - } - - if (typeof value === "string") { - return (0, _generated.stringLiteral)(value); - } - - if (typeof value === "number") { - let result; - - if (Number.isFinite(value)) { - result = (0, _generated.numericLiteral)(Math.abs(value)); - } else { - let numerator; - - if (Number.isNaN(value)) { - numerator = (0, _generated.numericLiteral)(0); - } else { - numerator = (0, _generated.numericLiteral)(1); - } - - result = (0, _generated.binaryExpression)("/", numerator, (0, _generated.numericLiteral)(0)); - } - - if (value < 0 || Object.is(value, -0)) { - result = (0, _generated.unaryExpression)("-", result); - } - - return result; - } - - if (isRegExp(value)) { - const pattern = value.source; - const flags = value.toString().match(/\/([a-z]+|)$/)[1]; - return (0, _generated.regExpLiteral)(pattern, flags); - } - - if (Array.isArray(value)) { - return (0, _generated.arrayExpression)(value.map(valueToNode)); - } - - if (isPlainObject(value)) { - const props = []; - - for (const key of Object.keys(value)) { - let nodeKey; - - if ((0, _isValidIdentifier.default)(key)) { - nodeKey = (0, _generated.identifier)(key); - } else { - nodeKey = (0, _generated.stringLiteral)(key); - } - - props.push((0, _generated.objectProperty)(nodeKey, valueToNode(value[key]))); - } - - return (0, _generated.objectExpression)(props); - } - - throw new Error("don't know how to turn this value into a node"); -} - -/***/ }), - -/***/ 85210: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.classMethodOrDeclareMethodCommon = exports.classMethodOrPropertyCommon = exports.patternLikeCommon = exports.functionDeclarationCommon = exports.functionTypeAnnotationCommon = exports.functionCommon = void 0; - -var _is = __nccwpck_require__(31334); - -var _isValidIdentifier = __nccwpck_require__(98557); - -var _helperValidatorIdentifier = __nccwpck_require__(49586); - -var _constants = __nccwpck_require__(90514); - -var _utils = __nccwpck_require__(82426); - -(0, _utils.default)("ArrayExpression", { - fields: { - elements: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement"))), - default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined - } - }, - visitor: ["elements"], - aliases: ["Expression"] -}); -(0, _utils.default)("AssignmentExpression", { - fields: { - operator: { - validate: function () { - if (!process.env.BABEL_TYPES_8_BREAKING) { - return (0, _utils.assertValueType)("string"); - } - - const identifier = (0, _utils.assertOneOf)(..._constants.ASSIGNMENT_OPERATORS); - const pattern = (0, _utils.assertOneOf)("="); - return function (node, key, val) { - const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier; - validator(node, key, val); - }; - }() - }, - left: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern") - }, - right: { - validate: (0, _utils.assertNodeType)("Expression") - } - }, - builder: ["operator", "left", "right"], - visitor: ["left", "right"], - aliases: ["Expression"] -}); -(0, _utils.default)("BinaryExpression", { - builder: ["operator", "left", "right"], - fields: { - operator: { - validate: (0, _utils.assertOneOf)(..._constants.BINARY_OPERATORS) - }, - left: { - validate: function () { - const expression = (0, _utils.assertNodeType)("Expression"); - const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName"); - - const validator = function (node, key, val) { - const validator = node.operator === "in" ? inOp : expression; - validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "PrivateName"]; - return validator; - }() - }, - right: { - validate: (0, _utils.assertNodeType)("Expression") - } - }, - visitor: ["left", "right"], - aliases: ["Binary", "Expression"] -}); -(0, _utils.default)("InterpreterDirective", { - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("string") - } - } -}); -(0, _utils.default)("Directive", { - visitor: ["value"], - fields: { - value: { - validate: (0, _utils.assertNodeType)("DirectiveLiteral") - } - } -}); -(0, _utils.default)("DirectiveLiteral", { - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("string") - } - } -}); -(0, _utils.default)("BlockStatement", { - builder: ["body", "directives"], - visitor: ["directives", "body"], - fields: { - directives: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))), - default: [] - }, - body: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) - } - }, - aliases: ["Scopable", "BlockParent", "Block", "Statement"] -}); -(0, _utils.default)("BreakStatement", { - visitor: ["label"], - fields: { - label: { - validate: (0, _utils.assertNodeType)("Identifier"), - optional: true - } - }, - aliases: ["Statement", "Terminatorless", "CompletionStatement"] -}); -(0, _utils.default)("CallExpression", { - visitor: ["callee", "arguments", "typeParameters", "typeArguments"], - builder: ["callee", "arguments"], - aliases: ["Expression"], - fields: Object.assign({ - callee: { - validate: (0, _utils.assertNodeType)("Expression", "V8IntrinsicIdentifier") - }, - arguments: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder"))) - } - }, !process.env.BABEL_TYPES_8_BREAKING ? { - optional: { - validate: (0, _utils.assertOneOf)(true, false), - optional: true - } - } : {}, { - typeArguments: { - validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), - optional: true - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), - optional: true - } - }) -}); -(0, _utils.default)("CatchClause", { - visitor: ["param", "body"], - fields: { - param: { - validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"), - optional: true - }, - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - } - }, - aliases: ["Scopable", "BlockParent"] -}); -(0, _utils.default)("ConditionalExpression", { - visitor: ["test", "consequent", "alternate"], - fields: { - test: { - validate: (0, _utils.assertNodeType)("Expression") - }, - consequent: { - validate: (0, _utils.assertNodeType)("Expression") - }, - alternate: { - validate: (0, _utils.assertNodeType)("Expression") - } - }, - aliases: ["Expression", "Conditional"] -}); -(0, _utils.default)("ContinueStatement", { - visitor: ["label"], - fields: { - label: { - validate: (0, _utils.assertNodeType)("Identifier"), - optional: true - } - }, - aliases: ["Statement", "Terminatorless", "CompletionStatement"] -}); -(0, _utils.default)("DebuggerStatement", { - aliases: ["Statement"] -}); -(0, _utils.default)("DoWhileStatement", { - visitor: ["test", "body"], - fields: { - test: { - validate: (0, _utils.assertNodeType)("Expression") - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - } - }, - aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"] -}); -(0, _utils.default)("EmptyStatement", { - aliases: ["Statement"] -}); -(0, _utils.default)("ExpressionStatement", { - visitor: ["expression"], - fields: { - expression: { - validate: (0, _utils.assertNodeType)("Expression") - } - }, - aliases: ["Statement", "ExpressionWrapper"] -}); -(0, _utils.default)("File", { - builder: ["program", "comments", "tokens"], - visitor: ["program"], - fields: { - program: { - validate: (0, _utils.assertNodeType)("Program") - }, - comments: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, { - each: { - oneOfNodeTypes: ["CommentBlock", "CommentLine"] - } - }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")), - optional: true - }, - tokens: { - validate: (0, _utils.assertEach)(Object.assign(() => {}, { - type: "any" - })), - optional: true - } - } -}); -(0, _utils.default)("ForInStatement", { - visitor: ["left", "right", "body"], - aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], - fields: { - left: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern") - }, - right: { - validate: (0, _utils.assertNodeType)("Expression") - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - } - } -}); -(0, _utils.default)("ForStatement", { - visitor: ["init", "test", "update", "body"], - aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"], - fields: { - init: { - validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"), - optional: true - }, - test: { - validate: (0, _utils.assertNodeType)("Expression"), - optional: true - }, - update: { - validate: (0, _utils.assertNodeType)("Expression"), - optional: true - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - } - } -}); -const functionCommon = { - params: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement"))) - }, - generator: { - default: false - }, - async: { - default: false - } -}; -exports.functionCommon = functionCommon; -const functionTypeAnnotationCommon = { - returnType: { - validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), - optional: true - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), - optional: true - } -}; -exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon; -const functionDeclarationCommon = Object.assign({}, functionCommon, { - declare: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - id: { - validate: (0, _utils.assertNodeType)("Identifier"), - optional: true - } -}); -exports.functionDeclarationCommon = functionDeclarationCommon; -(0, _utils.default)("FunctionDeclaration", { - builder: ["id", "params", "body", "generator", "async"], - visitor: ["id", "params", "body", "returnType", "typeParameters"], - fields: Object.assign({}, functionDeclarationCommon, functionTypeAnnotationCommon, { - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - } - }), - aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"], - validate: function () { - if (!process.env.BABEL_TYPES_8_BREAKING) return () => {}; - const identifier = (0, _utils.assertNodeType)("Identifier"); - return function (parent, key, node) { - if (!(0, _is.default)("ExportDefaultDeclaration", parent)) { - identifier(node, "id", node.id); - } - }; - }() -}); -(0, _utils.default)("FunctionExpression", { - inherits: "FunctionDeclaration", - aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], - fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { - id: { - validate: (0, _utils.assertNodeType)("Identifier"), - optional: true - }, - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - } - }) -}); -const patternLikeCommon = { - typeAnnotation: { - validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))) - } -}; -exports.patternLikeCommon = patternLikeCommon; -(0, _utils.default)("Identifier", { - builder: ["name"], - visitor: ["typeAnnotation", "decorators"], - aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"], - fields: Object.assign({}, patternLikeCommon, { - name: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (!(0, _isValidIdentifier.default)(val, false)) { - throw new TypeError(`"${val}" is not a valid identifier name`); - } - }, { - type: "string" - })) - }, - optional: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - } - }), - - validate(parent, key, node) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - const match = /\.(\w+)$/.exec(key); - if (!match) return; - const [, parentKey] = match; - const nonComp = { - computed: false - }; - - if (parentKey === "property") { - if ((0, _is.default)("MemberExpression", parent, nonComp)) return; - if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return; - } else if (parentKey === "key") { - if ((0, _is.default)("Property", parent, nonComp)) return; - if ((0, _is.default)("Method", parent, nonComp)) return; - } else if (parentKey === "exported") { - if ((0, _is.default)("ExportSpecifier", parent)) return; - } else if (parentKey === "imported") { - if ((0, _is.default)("ImportSpecifier", parent, { - imported: node - })) return; - } else if (parentKey === "meta") { - if ((0, _is.default)("MetaProperty", parent, { - meta: node - })) return; - } - - if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") { - throw new TypeError(`"${node.name}" is not a valid identifier`); - } - } - -}); -(0, _utils.default)("IfStatement", { - visitor: ["test", "consequent", "alternate"], - aliases: ["Statement", "Conditional"], - fields: { - test: { - validate: (0, _utils.assertNodeType)("Expression") - }, - consequent: { - validate: (0, _utils.assertNodeType)("Statement") - }, - alternate: { - optional: true, - validate: (0, _utils.assertNodeType)("Statement") - } - } -}); -(0, _utils.default)("LabeledStatement", { - visitor: ["label", "body"], - aliases: ["Statement"], - fields: { - label: { - validate: (0, _utils.assertNodeType)("Identifier") - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - } - } -}); -(0, _utils.default)("StringLiteral", { - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("string") - } - }, - aliases: ["Expression", "Pureish", "Literal", "Immutable"] -}); -(0, _utils.default)("NumericLiteral", { - builder: ["value"], - deprecatedAlias: "NumberLiteral", - fields: { - value: { - validate: (0, _utils.assertValueType)("number") - } - }, - aliases: ["Expression", "Pureish", "Literal", "Immutable"] -}); -(0, _utils.default)("NullLiteral", { - aliases: ["Expression", "Pureish", "Literal", "Immutable"] -}); -(0, _utils.default)("BooleanLiteral", { - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("boolean") - } - }, - aliases: ["Expression", "Pureish", "Literal", "Immutable"] -}); -(0, _utils.default)("RegExpLiteral", { - builder: ["pattern", "flags"], - deprecatedAlias: "RegexLiteral", - aliases: ["Expression", "Pureish", "Literal"], - fields: { - pattern: { - validate: (0, _utils.assertValueType)("string") - }, - flags: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - const invalid = /[^gimsuy]/.exec(val); - - if (invalid) { - throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`); - } - }, { - type: "string" - })), - default: "" - } - } -}); -(0, _utils.default)("LogicalExpression", { - builder: ["operator", "left", "right"], - visitor: ["left", "right"], - aliases: ["Binary", "Expression"], - fields: { - operator: { - validate: (0, _utils.assertOneOf)(..._constants.LOGICAL_OPERATORS) - }, - left: { - validate: (0, _utils.assertNodeType)("Expression") - }, - right: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("MemberExpression", { - builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])], - visitor: ["object", "property"], - aliases: ["Expression", "LVal"], - fields: Object.assign({ - object: { - validate: (0, _utils.assertNodeType)("Expression") - }, - property: { - validate: function () { - const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName"); - const computed = (0, _utils.assertNodeType)("Expression"); - - const validator = function (node, key, val) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"]; - return validator; - }() - }, - computed: { - default: false - } - }, !process.env.BABEL_TYPES_8_BREAKING ? { - optional: { - validate: (0, _utils.assertOneOf)(true, false), - optional: true - } - } : {}) -}); -(0, _utils.default)("NewExpression", { - inherits: "CallExpression" -}); -(0, _utils.default)("Program", { - visitor: ["directives", "body"], - builder: ["body", "directives", "sourceType", "interpreter"], - fields: { - sourceFile: { - validate: (0, _utils.assertValueType)("string") - }, - sourceType: { - validate: (0, _utils.assertOneOf)("script", "module"), - default: "script" - }, - interpreter: { - validate: (0, _utils.assertNodeType)("InterpreterDirective"), - default: null, - optional: true - }, - directives: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))), - default: [] - }, - body: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) - } - }, - aliases: ["Scopable", "BlockParent", "Block"] -}); -(0, _utils.default)("ObjectExpression", { - visitor: ["properties"], - aliases: ["Expression"], - fields: { - properties: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectMethod", "ObjectProperty", "SpreadElement"))) - } - } -}); -(0, _utils.default)("ObjectMethod", { - builder: ["kind", "key", "params", "body", "computed", "generator", "async"], - fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { - kind: Object.assign({ - validate: (0, _utils.assertOneOf)("method", "get", "set") - }, !process.env.BABEL_TYPES_8_BREAKING ? { - default: "method" - } : {}), - computed: { - default: false - }, - key: { - validate: function () { - const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); - const computed = (0, _utils.assertNodeType)("Expression"); - - const validator = function (node, key, val) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"]; - return validator; - }() - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - }, - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - } - }), - visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], - aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"] -}); -(0, _utils.default)("ObjectProperty", { - builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])], - fields: { - computed: { - default: false - }, - key: { - validate: function () { - const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); - const computed = (0, _utils.assertNodeType)("Expression"); - - const validator = function (node, key, val) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"]; - return validator; - }() - }, - value: { - validate: (0, _utils.assertNodeType)("Expression", "PatternLike") - }, - shorthand: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (val && node.computed) { - throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true"); - } - }, { - type: "boolean" - }), function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (val && !(0, _is.default)("Identifier", node.key)) { - throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier"); - } - }), - default: false - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - } - }, - visitor: ["key", "value", "decorators"], - aliases: ["UserWhitespacable", "Property", "ObjectMember"], - validate: function () { - const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern"); - const expression = (0, _utils.assertNodeType)("Expression"); - return function (parent, key, node) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression; - validator(node, "value", node.value); - }; - }() -}); -(0, _utils.default)("RestElement", { - visitor: ["argument", "typeAnnotation"], - builder: ["argument"], - aliases: ["LVal", "PatternLike"], - deprecatedAlias: "RestProperty", - fields: Object.assign({}, patternLikeCommon, { - argument: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "Pattern", "MemberExpression") - }, - optional: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - } - }), - - validate(parent, key) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - const match = /(\w+)\[(\d+)\]/.exec(key); - if (!match) throw new Error("Internal Babel error: malformed key."); - const [, listKey, index] = match; - - if (parent[listKey].length > index + 1) { - throw new TypeError(`RestElement must be last element of ${listKey}`); - } - } - -}); -(0, _utils.default)("ReturnStatement", { - visitor: ["argument"], - aliases: ["Statement", "Terminatorless", "CompletionStatement"], - fields: { - argument: { - validate: (0, _utils.assertNodeType)("Expression"), - optional: true - } - } -}); -(0, _utils.default)("SequenceExpression", { - visitor: ["expressions"], - fields: { - expressions: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression"))) - } - }, - aliases: ["Expression"] -}); -(0, _utils.default)("ParenthesizedExpression", { - visitor: ["expression"], - aliases: ["Expression", "ExpressionWrapper"], - fields: { - expression: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("SwitchCase", { - visitor: ["test", "consequent"], - fields: { - test: { - validate: (0, _utils.assertNodeType)("Expression"), - optional: true - }, - consequent: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) - } - } -}); -(0, _utils.default)("SwitchStatement", { - visitor: ["discriminant", "cases"], - aliases: ["Statement", "BlockParent", "Scopable"], - fields: { - discriminant: { - validate: (0, _utils.assertNodeType)("Expression") - }, - cases: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("SwitchCase"))) - } - } -}); -(0, _utils.default)("ThisExpression", { - aliases: ["Expression"] -}); -(0, _utils.default)("ThrowStatement", { - visitor: ["argument"], - aliases: ["Statement", "Terminatorless", "CompletionStatement"], - fields: { - argument: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("TryStatement", { - visitor: ["block", "handler", "finalizer"], - aliases: ["Statement"], - fields: { - block: { - validate: (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (!node.handler && !node.finalizer) { - throw new TypeError("TryStatement expects either a handler or finalizer, or both"); - } - }, { - oneOfNodeTypes: ["BlockStatement"] - })) - }, - handler: { - optional: true, - validate: (0, _utils.assertNodeType)("CatchClause") - }, - finalizer: { - optional: true, - validate: (0, _utils.assertNodeType)("BlockStatement") - } - } -}); -(0, _utils.default)("UnaryExpression", { - builder: ["operator", "argument", "prefix"], - fields: { - prefix: { - default: true - }, - argument: { - validate: (0, _utils.assertNodeType)("Expression") - }, - operator: { - validate: (0, _utils.assertOneOf)(..._constants.UNARY_OPERATORS) - } - }, - visitor: ["argument"], - aliases: ["UnaryLike", "Expression"] -}); -(0, _utils.default)("UpdateExpression", { - builder: ["operator", "argument", "prefix"], - fields: { - prefix: { - default: false - }, - argument: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression") - }, - operator: { - validate: (0, _utils.assertOneOf)(..._constants.UPDATE_OPERATORS) - } - }, - visitor: ["argument"], - aliases: ["Expression"] -}); -(0, _utils.default)("VariableDeclaration", { - builder: ["kind", "declarations"], - visitor: ["declarations"], - aliases: ["Statement", "Declaration"], - fields: { - declare: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - kind: { - validate: (0, _utils.assertOneOf)("var", "let", "const") - }, - declarations: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("VariableDeclarator"))) - } - }, - - validate(parent, key, node) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - if (!(0, _is.default)("ForXStatement", parent, { - left: node - })) return; - - if (node.declarations.length !== 1) { - throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`); - } - } - -}); -(0, _utils.default)("VariableDeclarator", { - visitor: ["id", "init"], - fields: { - id: { - validate: function () { - if (!process.env.BABEL_TYPES_8_BREAKING) { - return (0, _utils.assertNodeType)("LVal"); - } - - const normal = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"); - const without = (0, _utils.assertNodeType)("Identifier"); - return function (node, key, val) { - const validator = node.init ? normal : without; - validator(node, key, val); - }; - }() - }, - definite: { - optional: true, - validate: (0, _utils.assertValueType)("boolean") - }, - init: { - optional: true, - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("WhileStatement", { - visitor: ["test", "body"], - aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"], - fields: { - test: { - validate: (0, _utils.assertNodeType)("Expression") - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - } - } -}); -(0, _utils.default)("WithStatement", { - visitor: ["object", "body"], - aliases: ["Statement"], - fields: { - object: { - validate: (0, _utils.assertNodeType)("Expression") - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - } - } -}); -(0, _utils.default)("AssignmentPattern", { - visitor: ["left", "right", "decorators"], - builder: ["left", "right"], - aliases: ["Pattern", "PatternLike", "LVal"], - fields: Object.assign({}, patternLikeCommon, { - left: { - validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression") - }, - right: { - validate: (0, _utils.assertNodeType)("Expression") - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - } - }) -}); -(0, _utils.default)("ArrayPattern", { - visitor: ["elements", "typeAnnotation"], - builder: ["elements"], - aliases: ["Pattern", "PatternLike", "LVal"], - fields: Object.assign({}, patternLikeCommon, { - elements: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike"))) - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - }, - optional: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - } - }) -}); -(0, _utils.default)("ArrowFunctionExpression", { - builder: ["params", "body", "async"], - visitor: ["params", "body", "returnType", "typeParameters"], - aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], - fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, { - expression: { - validate: (0, _utils.assertValueType)("boolean") - }, - body: { - validate: (0, _utils.assertNodeType)("BlockStatement", "Expression") - } - }) -}); -(0, _utils.default)("ClassBody", { - visitor: ["body"], - fields: { - body: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "TSDeclareMethod", "TSIndexSignature"))) - } - } -}); -(0, _utils.default)("ClassExpression", { - builder: ["id", "superClass", "body", "decorators"], - visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"], - aliases: ["Scopable", "Class", "Expression"], - fields: { - id: { - validate: (0, _utils.assertNodeType)("Identifier"), - optional: true - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), - optional: true - }, - body: { - validate: (0, _utils.assertNodeType)("ClassBody") - }, - superClass: { - optional: true, - validate: (0, _utils.assertNodeType)("Expression") - }, - superTypeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), - optional: true - }, - implements: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - }, - mixins: { - validate: (0, _utils.assertNodeType)("InterfaceExtends"), - optional: true - } - } -}); -(0, _utils.default)("ClassDeclaration", { - inherits: "ClassExpression", - aliases: ["Scopable", "Class", "Statement", "Declaration"], - fields: { - id: { - validate: (0, _utils.assertNodeType)("Identifier") - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), - optional: true - }, - body: { - validate: (0, _utils.assertNodeType)("ClassBody") - }, - superClass: { - optional: true, - validate: (0, _utils.assertNodeType)("Expression") - }, - superTypeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), - optional: true - }, - implements: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - }, - mixins: { - validate: (0, _utils.assertNodeType)("InterfaceExtends"), - optional: true - }, - declare: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - abstract: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - } - }, - validate: function () { - const identifier = (0, _utils.assertNodeType)("Identifier"); - return function (parent, key, node) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (!(0, _is.default)("ExportDefaultDeclaration", parent)) { - identifier(node, "id", node.id); - } - }; - }() -}); -(0, _utils.default)("ExportAllDeclaration", { - visitor: ["source"], - aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], - fields: { - source: { - validate: (0, _utils.assertNodeType)("StringLiteral") - }, - exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")), - assertions: { - optional: true, - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute"))) - } - } -}); -(0, _utils.default)("ExportDefaultDeclaration", { - visitor: ["declaration"], - aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], - fields: { - declaration: { - validate: (0, _utils.assertNodeType)("FunctionDeclaration", "TSDeclareFunction", "ClassDeclaration", "Expression") - }, - exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value")) - } -}); -(0, _utils.default)("ExportNamedDeclaration", { - visitor: ["declaration", "specifiers", "source"], - aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"], - fields: { - declaration: { - optional: true, - validate: (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (val && node.specifiers.length) { - throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration"); - } - }, { - oneOfNodeTypes: ["Declaration"] - }), function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (val && node.source) { - throw new TypeError("Cannot export a declaration from a source"); - } - }) - }, - assertions: { - optional: true, - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute"))) - }, - specifiers: { - default: [], - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)(function () { - const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"); - const sourceless = (0, _utils.assertNodeType)("ExportSpecifier"); - if (!process.env.BABEL_TYPES_8_BREAKING) return sourced; - return function (node, key, val) { - const validator = node.source ? sourced : sourceless; - validator(node, key, val); - }; - }())) - }, - source: { - validate: (0, _utils.assertNodeType)("StringLiteral"), - optional: true - }, - exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) - } -}); -(0, _utils.default)("ExportSpecifier", { - visitor: ["local", "exported"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: (0, _utils.assertNodeType)("Identifier") - }, - exported: { - validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") - } - } -}); -(0, _utils.default)("ForOfStatement", { - visitor: ["left", "right", "body"], - builder: ["left", "right", "body", "await"], - aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], - fields: { - left: { - validate: function () { - if (!process.env.BABEL_TYPES_8_BREAKING) { - return (0, _utils.assertNodeType)("VariableDeclaration", "LVal"); - } - - const declaration = (0, _utils.assertNodeType)("VariableDeclaration"); - const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern"); - return function (node, key, val) { - if ((0, _is.default)("VariableDeclaration", val)) { - declaration(node, key, val); - } else { - lval(node, key, val); - } - }; - }() - }, - right: { - validate: (0, _utils.assertNodeType)("Expression") - }, - body: { - validate: (0, _utils.assertNodeType)("Statement") - }, - await: { - default: false - } - } -}); -(0, _utils.default)("ImportDeclaration", { - visitor: ["specifiers", "source"], - aliases: ["Statement", "Declaration", "ModuleDeclaration"], - fields: { - assertions: { - optional: true, - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute"))) - }, - specifiers: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"))) - }, - source: { - validate: (0, _utils.assertNodeType)("StringLiteral") - }, - importKind: { - validate: (0, _utils.assertOneOf)("type", "typeof", "value"), - optional: true - } - } -}); -(0, _utils.default)("ImportDefaultSpecifier", { - visitor: ["local"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: (0, _utils.assertNodeType)("Identifier") - } - } -}); -(0, _utils.default)("ImportNamespaceSpecifier", { - visitor: ["local"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: (0, _utils.assertNodeType)("Identifier") - } - } -}); -(0, _utils.default)("ImportSpecifier", { - visitor: ["local", "imported"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: (0, _utils.assertNodeType)("Identifier") - }, - imported: { - validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") - }, - importKind: { - validate: (0, _utils.assertOneOf)("type", "typeof"), - optional: true - } - } -}); -(0, _utils.default)("MetaProperty", { - visitor: ["meta", "property"], - aliases: ["Expression"], - fields: { - meta: { - validate: (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - let property; - - switch (val.name) { - case "function": - property = "sent"; - break; - - case "new": - property = "target"; - break; - - case "import": - property = "meta"; - break; - } - - if (!(0, _is.default)("Identifier", node.property, { - name: property - })) { - throw new TypeError("Unrecognised MetaProperty"); - } - }, { - oneOfNodeTypes: ["Identifier"] - })) - }, - property: { - validate: (0, _utils.assertNodeType)("Identifier") - } - } -}); -const classMethodOrPropertyCommon = { - abstract: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - accessibility: { - validate: (0, _utils.assertOneOf)("public", "private", "protected"), - optional: true - }, - static: { - default: false - }, - override: { - default: false - }, - computed: { - default: false - }, - optional: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - key: { - validate: (0, _utils.chain)(function () { - const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral"); - const computed = (0, _utils.assertNodeType)("Expression"); - return function (node, key, val) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "Expression")) - } -}; -exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon; -const classMethodOrDeclareMethodCommon = Object.assign({}, functionCommon, classMethodOrPropertyCommon, { - params: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement", "TSParameterProperty"))) - }, - kind: { - validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"), - default: "method" - }, - access: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - } -}); -exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon; -(0, _utils.default)("ClassMethod", { - aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], - builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"], - visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], - fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, { - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - } - }) -}); -(0, _utils.default)("ObjectPattern", { - visitor: ["properties", "typeAnnotation", "decorators"], - builder: ["properties"], - aliases: ["Pattern", "PatternLike", "LVal"], - fields: Object.assign({}, patternLikeCommon, { - properties: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("RestElement", "ObjectProperty"))) - } - }) -}); -(0, _utils.default)("SpreadElement", { - visitor: ["argument"], - aliases: ["UnaryLike"], - deprecatedAlias: "SpreadProperty", - fields: { - argument: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("Super", { - aliases: ["Expression"] -}); -(0, _utils.default)("TaggedTemplateExpression", { - visitor: ["tag", "quasi", "typeParameters"], - builder: ["tag", "quasi"], - aliases: ["Expression"], - fields: { - tag: { - validate: (0, _utils.assertNodeType)("Expression") - }, - quasi: { - validate: (0, _utils.assertNodeType)("TemplateLiteral") - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), - optional: true - } - } -}); -(0, _utils.default)("TemplateElement", { - builder: ["value", "tail"], - fields: { - value: { - validate: (0, _utils.assertShape)({ - raw: { - validate: (0, _utils.assertValueType)("string") - }, - cooked: { - validate: (0, _utils.assertValueType)("string"), - optional: true - } - }) - }, - tail: { - default: false - } - } -}); -(0, _utils.default)("TemplateLiteral", { - visitor: ["quasis", "expressions"], - aliases: ["Expression", "Literal"], - fields: { - quasis: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TemplateElement"))) - }, - expressions: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) { - if (node.quasis.length !== val.length + 1) { - throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`); - } - }) - } - } -}); -(0, _utils.default)("YieldExpression", { - builder: ["argument", "delegate"], - visitor: ["argument"], - aliases: ["Expression", "Terminatorless"], - fields: { - delegate: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (val && !node.argument) { - throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument"); - } - }, { - type: "boolean" - })), - default: false - }, - argument: { - optional: true, - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("AwaitExpression", { - builder: ["argument"], - visitor: ["argument"], - aliases: ["Expression", "Terminatorless"], - fields: { - argument: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("Import", { - aliases: ["Expression"] -}); -(0, _utils.default)("BigIntLiteral", { - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("string") - } - }, - aliases: ["Expression", "Pureish", "Literal", "Immutable"] -}); -(0, _utils.default)("ExportNamespaceSpecifier", { - visitor: ["exported"], - aliases: ["ModuleSpecifier"], - fields: { - exported: { - validate: (0, _utils.assertNodeType)("Identifier") - } - } -}); -(0, _utils.default)("OptionalMemberExpression", { - builder: ["object", "property", "computed", "optional"], - visitor: ["object", "property"], - aliases: ["Expression"], - fields: { - object: { - validate: (0, _utils.assertNodeType)("Expression") - }, - property: { - validate: function () { - const normal = (0, _utils.assertNodeType)("Identifier"); - const computed = (0, _utils.assertNodeType)("Expression"); - - const validator = function (node, key, val) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - - validator.oneOfNodeTypes = ["Expression", "Identifier"]; - return validator; - }() - }, - computed: { - default: false - }, - optional: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)()) - } - } -}); -(0, _utils.default)("OptionalCallExpression", { - visitor: ["callee", "arguments", "typeParameters", "typeArguments"], - builder: ["callee", "arguments", "optional"], - aliases: ["Expression"], - fields: { - callee: { - validate: (0, _utils.assertNodeType)("Expression") - }, - arguments: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder"))) - }, - optional: { - validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)()) - }, - typeArguments: { - validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), - optional: true - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), - optional: true - } - } -}); -(0, _utils.default)("ClassProperty", { - visitor: ["key", "value", "typeAnnotation", "decorators"], - builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], - aliases: ["Property"], - fields: Object.assign({}, classMethodOrPropertyCommon, { - value: { - validate: (0, _utils.assertNodeType)("Expression"), - optional: true - }, - definite: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - typeAnnotation: { - validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - }, - readonly: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - declare: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - variance: { - validate: (0, _utils.assertNodeType)("Variance"), - optional: true - } - }) -}); -(0, _utils.default)("ClassPrivateProperty", { - visitor: ["key", "value", "decorators", "typeAnnotation"], - builder: ["key", "value", "decorators", "static"], - aliases: ["Property", "Private"], - fields: { - key: { - validate: (0, _utils.assertNodeType)("PrivateName") - }, - value: { - validate: (0, _utils.assertNodeType)("Expression"), - optional: true - }, - typeAnnotation: { - validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - }, - readonly: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - definite: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - variance: { - validate: (0, _utils.assertNodeType)("Variance"), - optional: true - } - } -}); -(0, _utils.default)("ClassPrivateMethod", { - builder: ["kind", "key", "params", "body", "static"], - visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"], - aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"], - fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, { - key: { - validate: (0, _utils.assertNodeType)("PrivateName") - }, - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - } - }) -}); -(0, _utils.default)("PrivateName", { - visitor: ["id"], - aliases: ["Private"], - fields: { - id: { - validate: (0, _utils.assertNodeType)("Identifier") - } - } -}); - -/***/ }), - -/***/ 82697: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var _utils = __nccwpck_require__(82426); - -(0, _utils.default)("ArgumentPlaceholder", {}); -(0, _utils.default)("BindExpression", { - visitor: ["object", "callee"], - aliases: ["Expression"], - fields: !process.env.BABEL_TYPES_8_BREAKING ? { - object: { - validate: Object.assign(() => {}, { - oneOfNodeTypes: ["Expression"] - }) - }, - callee: { - validate: Object.assign(() => {}, { - oneOfNodeTypes: ["Expression"] - }) - } - } : { - object: { - validate: (0, _utils.assertNodeType)("Expression") - }, - callee: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("ImportAttribute", { - visitor: ["key", "value"], - fields: { - key: { - validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") - }, - value: { - validate: (0, _utils.assertNodeType)("StringLiteral") - } - } -}); -(0, _utils.default)("Decorator", { - visitor: ["expression"], - fields: { - expression: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("DoExpression", { - visitor: ["body"], - builder: ["body", "async"], - aliases: ["Expression"], - fields: { - body: { - validate: (0, _utils.assertNodeType)("BlockStatement") - }, - async: { - validate: (0, _utils.assertValueType)("boolean"), - default: false - } - } -}); -(0, _utils.default)("ExportDefaultSpecifier", { - visitor: ["exported"], - aliases: ["ModuleSpecifier"], - fields: { - exported: { - validate: (0, _utils.assertNodeType)("Identifier") - } - } -}); -(0, _utils.default)("RecordExpression", { - visitor: ["properties"], - aliases: ["Expression"], - fields: { - properties: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectProperty", "SpreadElement"))) - } - } -}); -(0, _utils.default)("TupleExpression", { - fields: { - elements: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement"))), - default: [] - } - }, - visitor: ["elements"], - aliases: ["Expression"] -}); -(0, _utils.default)("DecimalLiteral", { - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("string") - } - }, - aliases: ["Expression", "Pureish", "Literal", "Immutable"] -}); -(0, _utils.default)("StaticBlock", { - visitor: ["body"], - fields: { - body: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement"))) - } - }, - aliases: ["Scopable", "BlockParent"] -}); -(0, _utils.default)("ModuleExpression", { - visitor: ["body"], - fields: { - body: { - validate: (0, _utils.assertNodeType)("Program") - } - }, - aliases: ["Expression"] -}); -(0, _utils.default)("TopicReference", { - aliases: ["Expression"] -}); -(0, _utils.default)("PipelineTopicExpression", { - builder: ["expression"], - visitor: ["expression"], - fields: { - expression: { - validate: (0, _utils.assertNodeType)("Expression") - } - }, - aliases: ["Expression"] -}); -(0, _utils.default)("PipelineBareFunction", { - builder: ["callee"], - visitor: ["callee"], - fields: { - callee: { - validate: (0, _utils.assertNodeType)("Expression") - } - }, - aliases: ["Expression"] -}); -(0, _utils.default)("PipelinePrimaryTopicReference", { - aliases: ["Expression"] -}); - -/***/ }), - -/***/ 56284: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var _utils = __nccwpck_require__(82426); - -const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => { - (0, _utils.default)(name, { - builder: ["id", "typeParameters", "extends", "body"], - visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)(typeParameterType), - extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), - mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), - implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")), - body: (0, _utils.validateType)("ObjectTypeAnnotation") - } - }); -}; - -(0, _utils.default)("AnyTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("ArrayTypeAnnotation", { - visitor: ["elementType"], - aliases: ["Flow", "FlowType"], - fields: { - elementType: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("BooleanTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("BooleanLiteralTypeAnnotation", { - builder: ["value"], - aliases: ["Flow", "FlowType"], - fields: { - value: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("NullLiteralTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("ClassImplements", { - visitor: ["id", "typeParameters"], - aliases: ["Flow"], - fields: { - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") - } -}); -defineInterfaceishType("DeclareClass"); -(0, _utils.default)("DeclareFunction", { - visitor: ["id"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier"), - predicate: (0, _utils.validateOptionalType)("DeclaredPredicate") - } -}); -defineInterfaceishType("DeclareInterface"); -(0, _utils.default)("DeclareModule", { - builder: ["id", "body", "kind"], - visitor: ["id", "body"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), - body: (0, _utils.validateType)("BlockStatement"), - kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES")) - } -}); -(0, _utils.default)("DeclareModuleExports", { - visitor: ["typeAnnotation"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - typeAnnotation: (0, _utils.validateType)("TypeAnnotation") - } -}); -(0, _utils.default)("DeclareTypeAlias", { - visitor: ["id", "typeParameters", "right"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), - right: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("DeclareOpaqueType", { - visitor: ["id", "typeParameters", "supertype"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), - supertype: (0, _utils.validateOptionalType)("FlowType"), - impltype: (0, _utils.validateOptionalType)("FlowType") - } -}); -(0, _utils.default)("DeclareVariable", { - visitor: ["id"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier") - } -}); -(0, _utils.default)("DeclareExportDeclaration", { - visitor: ["declaration", "specifiers", "source"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - declaration: (0, _utils.validateOptionalType)("Flow"), - specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)(["ExportSpecifier", "ExportNamespaceSpecifier"])), - source: (0, _utils.validateOptionalType)("StringLiteral"), - default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("DeclareExportAllDeclaration", { - visitor: ["source"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - source: (0, _utils.validateType)("StringLiteral"), - exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) - } -}); -(0, _utils.default)("DeclaredPredicate", { - visitor: ["value"], - aliases: ["Flow", "FlowPredicate"], - fields: { - value: (0, _utils.validateType)("Flow") - } -}); -(0, _utils.default)("ExistsTypeAnnotation", { - aliases: ["Flow", "FlowType"] -}); -(0, _utils.default)("FunctionTypeAnnotation", { - visitor: ["typeParameters", "params", "rest", "returnType"], - aliases: ["Flow", "FlowType"], - fields: { - typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), - params: (0, _utils.validate)((0, _utils.arrayOfType)("FunctionTypeParam")), - rest: (0, _utils.validateOptionalType)("FunctionTypeParam"), - this: (0, _utils.validateOptionalType)("FunctionTypeParam"), - returnType: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("FunctionTypeParam", { - visitor: ["name", "typeAnnotation"], - aliases: ["Flow"], - fields: { - name: (0, _utils.validateOptionalType)("Identifier"), - typeAnnotation: (0, _utils.validateType)("FlowType"), - optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("GenericTypeAnnotation", { - visitor: ["id", "typeParameters"], - aliases: ["Flow", "FlowType"], - fields: { - id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") - } -}); -(0, _utils.default)("InferredPredicate", { - aliases: ["Flow", "FlowPredicate"] -}); -(0, _utils.default)("InterfaceExtends", { - visitor: ["id", "typeParameters"], - aliases: ["Flow"], - fields: { - id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") - } -}); -defineInterfaceishType("InterfaceDeclaration"); -(0, _utils.default)("InterfaceTypeAnnotation", { - visitor: ["extends", "body"], - aliases: ["Flow", "FlowType"], - fields: { - extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), - body: (0, _utils.validateType)("ObjectTypeAnnotation") - } -}); -(0, _utils.default)("IntersectionTypeAnnotation", { - visitor: ["types"], - aliases: ["Flow", "FlowType"], - fields: { - types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) - } -}); -(0, _utils.default)("MixedTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("EmptyTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("NullableTypeAnnotation", { - visitor: ["typeAnnotation"], - aliases: ["Flow", "FlowType"], - fields: { - typeAnnotation: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("NumberLiteralTypeAnnotation", { - builder: ["value"], - aliases: ["Flow", "FlowType"], - fields: { - value: (0, _utils.validate)((0, _utils.assertValueType)("number")) - } -}); -(0, _utils.default)("NumberTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("ObjectTypeAnnotation", { - visitor: ["properties", "indexers", "callProperties", "internalSlots"], - aliases: ["Flow", "FlowType"], - builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"], - fields: { - properties: (0, _utils.validate)((0, _utils.arrayOfType)(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])), - indexers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeIndexer")), - callProperties: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeCallProperty")), - internalSlots: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeInternalSlot")), - exact: { - validate: (0, _utils.assertValueType)("boolean"), - default: false - }, - inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("ObjectTypeInternalSlot", { - visitor: ["id", "value", "optional", "static", "method"], - aliases: ["Flow", "UserWhitespacable"], - fields: { - id: (0, _utils.validateType)("Identifier"), - value: (0, _utils.validateType)("FlowType"), - optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("ObjectTypeCallProperty", { - visitor: ["value"], - aliases: ["Flow", "UserWhitespacable"], - fields: { - value: (0, _utils.validateType)("FlowType"), - static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("ObjectTypeIndexer", { - visitor: ["id", "key", "value", "variance"], - aliases: ["Flow", "UserWhitespacable"], - fields: { - id: (0, _utils.validateOptionalType)("Identifier"), - key: (0, _utils.validateType)("FlowType"), - value: (0, _utils.validateType)("FlowType"), - static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - variance: (0, _utils.validateOptionalType)("Variance") - } -}); -(0, _utils.default)("ObjectTypeProperty", { - visitor: ["key", "value", "variance"], - aliases: ["Flow", "UserWhitespacable"], - fields: { - key: (0, _utils.validateType)(["Identifier", "StringLiteral"]), - value: (0, _utils.validateType)("FlowType"), - kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")), - static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - variance: (0, _utils.validateOptionalType)("Variance"), - method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("ObjectTypeSpreadProperty", { - visitor: ["argument"], - aliases: ["Flow", "UserWhitespacable"], - fields: { - argument: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("OpaqueType", { - visitor: ["id", "typeParameters", "supertype", "impltype"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), - supertype: (0, _utils.validateOptionalType)("FlowType"), - impltype: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("QualifiedTypeIdentifier", { - visitor: ["id", "qualification"], - aliases: ["Flow"], - fields: { - id: (0, _utils.validateType)("Identifier"), - qualification: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]) - } -}); -(0, _utils.default)("StringLiteralTypeAnnotation", { - builder: ["value"], - aliases: ["Flow", "FlowType"], - fields: { - value: (0, _utils.validate)((0, _utils.assertValueType)("string")) - } -}); -(0, _utils.default)("StringTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("SymbolTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("ThisTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("TupleTypeAnnotation", { - visitor: ["types"], - aliases: ["Flow", "FlowType"], - fields: { - types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) - } -}); -(0, _utils.default)("TypeofTypeAnnotation", { - visitor: ["argument"], - aliases: ["Flow", "FlowType"], - fields: { - argument: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("TypeAlias", { - visitor: ["id", "typeParameters", "right"], - aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"], - fields: { - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), - right: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("TypeAnnotation", { - aliases: ["Flow"], - visitor: ["typeAnnotation"], - fields: { - typeAnnotation: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("TypeCastExpression", { - visitor: ["expression", "typeAnnotation"], - aliases: ["Flow", "ExpressionWrapper", "Expression"], - fields: { - expression: (0, _utils.validateType)("Expression"), - typeAnnotation: (0, _utils.validateType)("TypeAnnotation") - } -}); -(0, _utils.default)("TypeParameter", { - aliases: ["Flow"], - visitor: ["bound", "default", "variance"], - fields: { - name: (0, _utils.validate)((0, _utils.assertValueType)("string")), - bound: (0, _utils.validateOptionalType)("TypeAnnotation"), - default: (0, _utils.validateOptionalType)("FlowType"), - variance: (0, _utils.validateOptionalType)("Variance") - } -}); -(0, _utils.default)("TypeParameterDeclaration", { - aliases: ["Flow"], - visitor: ["params"], - fields: { - params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter")) - } -}); -(0, _utils.default)("TypeParameterInstantiation", { - aliases: ["Flow"], - visitor: ["params"], - fields: { - params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) - } -}); -(0, _utils.default)("UnionTypeAnnotation", { - visitor: ["types"], - aliases: ["Flow", "FlowType"], - fields: { - types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) - } -}); -(0, _utils.default)("Variance", { - aliases: ["Flow"], - builder: ["kind"], - fields: { - kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus")) - } -}); -(0, _utils.default)("VoidTypeAnnotation", { - aliases: ["Flow", "FlowType", "FlowBaseAnnotation"] -}); -(0, _utils.default)("EnumDeclaration", { - aliases: ["Statement", "Declaration"], - visitor: ["id", "body"], - fields: { - id: (0, _utils.validateType)("Identifier"), - body: (0, _utils.validateType)(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"]) - } -}); -(0, _utils.default)("EnumBooleanBody", { - aliases: ["EnumBody"], - visitor: ["members"], - fields: { - explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - members: (0, _utils.validateArrayOfType)("EnumBooleanMember"), - hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("EnumNumberBody", { - aliases: ["EnumBody"], - visitor: ["members"], - fields: { - explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - members: (0, _utils.validateArrayOfType)("EnumNumberMember"), - hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("EnumStringBody", { - aliases: ["EnumBody"], - visitor: ["members"], - fields: { - explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), - members: (0, _utils.validateArrayOfType)(["EnumStringMember", "EnumDefaultedMember"]), - hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("EnumSymbolBody", { - aliases: ["EnumBody"], - visitor: ["members"], - fields: { - members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"), - hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); -(0, _utils.default)("EnumBooleanMember", { - aliases: ["EnumMember"], - visitor: ["id"], - fields: { - id: (0, _utils.validateType)("Identifier"), - init: (0, _utils.validateType)("BooleanLiteral") - } -}); -(0, _utils.default)("EnumNumberMember", { - aliases: ["EnumMember"], - visitor: ["id", "init"], - fields: { - id: (0, _utils.validateType)("Identifier"), - init: (0, _utils.validateType)("NumericLiteral") - } -}); -(0, _utils.default)("EnumStringMember", { - aliases: ["EnumMember"], - visitor: ["id", "init"], - fields: { - id: (0, _utils.validateType)("Identifier"), - init: (0, _utils.validateType)("StringLiteral") - } -}); -(0, _utils.default)("EnumDefaultedMember", { - aliases: ["EnumMember"], - visitor: ["id"], - fields: { - id: (0, _utils.validateType)("Identifier") - } -}); -(0, _utils.default)("IndexedAccessType", { - visitor: ["objectType", "indexType"], - aliases: ["Flow", "FlowType"], - fields: { - objectType: (0, _utils.validateType)("FlowType"), - indexType: (0, _utils.validateType)("FlowType") - } -}); -(0, _utils.default)("OptionalIndexedAccessType", { - visitor: ["objectType", "indexType"], - aliases: ["Flow", "FlowType"], - fields: { - objectType: (0, _utils.validateType)("FlowType"), - indexType: (0, _utils.validateType)("FlowType"), - optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) - } -}); - -/***/ }), - -/***/ 19090: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "VISITOR_KEYS", ({ - enumerable: true, - get: function () { - return _utils.VISITOR_KEYS; - } -})); -Object.defineProperty(exports, "ALIAS_KEYS", ({ - enumerable: true, - get: function () { - return _utils.ALIAS_KEYS; - } -})); -Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", ({ - enumerable: true, - get: function () { - return _utils.FLIPPED_ALIAS_KEYS; - } -})); -Object.defineProperty(exports, "NODE_FIELDS", ({ - enumerable: true, - get: function () { - return _utils.NODE_FIELDS; - } -})); -Object.defineProperty(exports, "BUILDER_KEYS", ({ - enumerable: true, - get: function () { - return _utils.BUILDER_KEYS; - } -})); -Object.defineProperty(exports, "DEPRECATED_KEYS", ({ - enumerable: true, - get: function () { - return _utils.DEPRECATED_KEYS; - } -})); -Object.defineProperty(exports, "NODE_PARENT_VALIDATIONS", ({ - enumerable: true, - get: function () { - return _utils.NODE_PARENT_VALIDATIONS; - } -})); -Object.defineProperty(exports, "PLACEHOLDERS", ({ - enumerable: true, - get: function () { - return _placeholders.PLACEHOLDERS; - } -})); -Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", ({ - enumerable: true, - get: function () { - return _placeholders.PLACEHOLDERS_ALIAS; - } -})); -Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", ({ - enumerable: true, - get: function () { - return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS; - } -})); -exports.TYPES = void 0; - -var _toFastProperties = __nccwpck_require__(88693); - -__nccwpck_require__(85210); - -__nccwpck_require__(56284); - -__nccwpck_require__(6472); - -__nccwpck_require__(3297); - -__nccwpck_require__(82697); - -__nccwpck_require__(39896); - -var _utils = __nccwpck_require__(82426); - -var _placeholders = __nccwpck_require__(97339); - -_toFastProperties(_utils.VISITOR_KEYS); - -_toFastProperties(_utils.ALIAS_KEYS); - -_toFastProperties(_utils.FLIPPED_ALIAS_KEYS); - -_toFastProperties(_utils.NODE_FIELDS); - -_toFastProperties(_utils.BUILDER_KEYS); - -_toFastProperties(_utils.DEPRECATED_KEYS); - -_toFastProperties(_placeholders.PLACEHOLDERS_ALIAS); - -_toFastProperties(_placeholders.PLACEHOLDERS_FLIPPED_ALIAS); - -const TYPES = Object.keys(_utils.VISITOR_KEYS).concat(Object.keys(_utils.FLIPPED_ALIAS_KEYS)).concat(Object.keys(_utils.DEPRECATED_KEYS)); -exports.TYPES = TYPES; - -/***/ }), - -/***/ 6472: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var _utils = __nccwpck_require__(82426); - -(0, _utils.default)("JSXAttribute", { - visitor: ["name", "value"], - aliases: ["JSX", "Immutable"], - fields: { - name: { - validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName") - }, - value: { - optional: true, - validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer") - } - } -}); -(0, _utils.default)("JSXClosingElement", { - visitor: ["name"], - aliases: ["JSX", "Immutable"], - fields: { - name: { - validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") - } - } -}); -(0, _utils.default)("JSXElement", { - builder: ["openingElement", "closingElement", "children", "selfClosing"], - visitor: ["openingElement", "children", "closingElement"], - aliases: ["JSX", "Immutable", "Expression"], - fields: { - openingElement: { - validate: (0, _utils.assertNodeType)("JSXOpeningElement") - }, - closingElement: { - optional: true, - validate: (0, _utils.assertNodeType)("JSXClosingElement") - }, - children: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) - }, - selfClosing: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - } - } -}); -(0, _utils.default)("JSXEmptyExpression", { - aliases: ["JSX"] -}); -(0, _utils.default)("JSXExpressionContainer", { - visitor: ["expression"], - aliases: ["JSX", "Immutable"], - fields: { - expression: { - validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression") - } - } -}); -(0, _utils.default)("JSXSpreadChild", { - visitor: ["expression"], - aliases: ["JSX", "Immutable"], - fields: { - expression: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("JSXIdentifier", { - builder: ["name"], - aliases: ["JSX"], - fields: { - name: { - validate: (0, _utils.assertValueType)("string") - } - } -}); -(0, _utils.default)("JSXMemberExpression", { - visitor: ["object", "property"], - aliases: ["JSX"], - fields: { - object: { - validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier") - }, - property: { - validate: (0, _utils.assertNodeType)("JSXIdentifier") - } - } -}); -(0, _utils.default)("JSXNamespacedName", { - visitor: ["namespace", "name"], - aliases: ["JSX"], - fields: { - namespace: { - validate: (0, _utils.assertNodeType)("JSXIdentifier") - }, - name: { - validate: (0, _utils.assertNodeType)("JSXIdentifier") - } - } -}); -(0, _utils.default)("JSXOpeningElement", { - builder: ["name", "attributes", "selfClosing"], - visitor: ["name", "attributes"], - aliases: ["JSX", "Immutable"], - fields: { - name: { - validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") - }, - selfClosing: { - default: false - }, - attributes: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXAttribute", "JSXSpreadAttribute"))) - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), - optional: true - } - } -}); -(0, _utils.default)("JSXSpreadAttribute", { - visitor: ["argument"], - aliases: ["JSX"], - fields: { - argument: { - validate: (0, _utils.assertNodeType)("Expression") - } - } -}); -(0, _utils.default)("JSXText", { - aliases: ["JSX", "Immutable"], - builder: ["value"], - fields: { - value: { - validate: (0, _utils.assertValueType)("string") - } - } -}); -(0, _utils.default)("JSXFragment", { - builder: ["openingFragment", "closingFragment", "children"], - visitor: ["openingFragment", "children", "closingFragment"], - aliases: ["JSX", "Immutable", "Expression"], - fields: { - openingFragment: { - validate: (0, _utils.assertNodeType)("JSXOpeningFragment") - }, - closingFragment: { - validate: (0, _utils.assertNodeType)("JSXClosingFragment") - }, - children: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) - } - } -}); -(0, _utils.default)("JSXOpeningFragment", { - aliases: ["JSX", "Immutable"] -}); -(0, _utils.default)("JSXClosingFragment", { - aliases: ["JSX", "Immutable"] -}); - -/***/ }), - -/***/ 3297: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var _utils = __nccwpck_require__(82426); - -var _placeholders = __nccwpck_require__(97339); - -{ - (0, _utils.default)("Noop", { - visitor: [] - }); -} -(0, _utils.default)("Placeholder", { - visitor: [], - builder: ["expectedNode", "name"], - fields: { - name: { - validate: (0, _utils.assertNodeType)("Identifier") - }, - expectedNode: { - validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS) - } - } -}); -(0, _utils.default)("V8IntrinsicIdentifier", { - builder: ["name"], - fields: { - name: { - validate: (0, _utils.assertValueType)("string") - } - } -}); - -/***/ }), - -/***/ 97339: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0; - -var _utils = __nccwpck_require__(82426); - -const PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"]; -exports.PLACEHOLDERS = PLACEHOLDERS; -const PLACEHOLDERS_ALIAS = { - Declaration: ["Statement"], - Pattern: ["PatternLike", "LVal"] -}; -exports.PLACEHOLDERS_ALIAS = PLACEHOLDERS_ALIAS; - -for (const type of PLACEHOLDERS) { - const alias = _utils.ALIAS_KEYS[type]; - if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias; -} - -const PLACEHOLDERS_FLIPPED_ALIAS = {}; -exports.PLACEHOLDERS_FLIPPED_ALIAS = PLACEHOLDERS_FLIPPED_ALIAS; -Object.keys(PLACEHOLDERS_ALIAS).forEach(type => { - PLACEHOLDERS_ALIAS[type].forEach(alias => { - if (!Object.hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) { - PLACEHOLDERS_FLIPPED_ALIAS[alias] = []; - } - - PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type); - }); -}); - -/***/ }), - -/***/ 39896: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var _utils = __nccwpck_require__(82426); - -var _core = __nccwpck_require__(85210); - -var _is = __nccwpck_require__(31334); - -const bool = (0, _utils.assertValueType)("boolean"); -const tSFunctionTypeAnnotationCommon = { - returnType: { - validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"), - optional: true - }, - typeParameters: { - validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"), - optional: true - } -}; -(0, _utils.default)("TSParameterProperty", { - aliases: ["LVal"], - visitor: ["parameter"], - fields: { - accessibility: { - validate: (0, _utils.assertOneOf)("public", "private", "protected"), - optional: true - }, - readonly: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - parameter: { - validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern") - }, - override: { - validate: (0, _utils.assertValueType)("boolean"), - optional: true - }, - decorators: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))), - optional: true - } - } -}); -(0, _utils.default)("TSDeclareFunction", { - aliases: ["Statement", "Declaration"], - visitor: ["id", "typeParameters", "params", "returnType"], - fields: Object.assign({}, _core.functionDeclarationCommon, tSFunctionTypeAnnotationCommon) -}); -(0, _utils.default)("TSDeclareMethod", { - visitor: ["decorators", "key", "typeParameters", "params", "returnType"], - fields: Object.assign({}, _core.classMethodOrDeclareMethodCommon, tSFunctionTypeAnnotationCommon) -}); -(0, _utils.default)("TSQualifiedName", { - aliases: ["TSEntityName"], - visitor: ["left", "right"], - fields: { - left: (0, _utils.validateType)("TSEntityName"), - right: (0, _utils.validateType)("Identifier") - } -}); -const signatureDeclarationCommon = { - typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), - parameters: (0, _utils.validateArrayOfType)(["Identifier", "RestElement"]), - typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") -}; -const callConstructSignatureDeclaration = { - aliases: ["TSTypeElement"], - visitor: ["typeParameters", "parameters", "typeAnnotation"], - fields: signatureDeclarationCommon -}; -(0, _utils.default)("TSCallSignatureDeclaration", callConstructSignatureDeclaration); -(0, _utils.default)("TSConstructSignatureDeclaration", callConstructSignatureDeclaration); -const namedTypeElementCommon = { - key: (0, _utils.validateType)("Expression"), - computed: (0, _utils.validate)(bool), - optional: (0, _utils.validateOptional)(bool) -}; -(0, _utils.default)("TSPropertySignature", { - aliases: ["TSTypeElement"], - visitor: ["key", "typeAnnotation", "initializer"], - fields: Object.assign({}, namedTypeElementCommon, { - readonly: (0, _utils.validateOptional)(bool), - typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), - initializer: (0, _utils.validateOptionalType)("Expression"), - kind: { - validate: (0, _utils.assertOneOf)("get", "set") - } - }) -}); -(0, _utils.default)("TSMethodSignature", { - aliases: ["TSTypeElement"], - visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], - fields: Object.assign({}, signatureDeclarationCommon, namedTypeElementCommon, { - kind: { - validate: (0, _utils.assertOneOf)("method", "get", "set") - } - }) -}); -(0, _utils.default)("TSIndexSignature", { - aliases: ["TSTypeElement"], - visitor: ["parameters", "typeAnnotation"], - fields: { - readonly: (0, _utils.validateOptional)(bool), - static: (0, _utils.validateOptional)(bool), - parameters: (0, _utils.validateArrayOfType)("Identifier"), - typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") - } -}); -const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"]; - -for (const type of tsKeywordTypes) { - (0, _utils.default)(type, { - aliases: ["TSType", "TSBaseType"], - visitor: [], - fields: {} - }); -} - -(0, _utils.default)("TSThisType", { - aliases: ["TSType", "TSBaseType"], - visitor: [], - fields: {} -}); -const fnOrCtrBase = { - aliases: ["TSType"], - visitor: ["typeParameters", "parameters", "typeAnnotation"] -}; -(0, _utils.default)("TSFunctionType", Object.assign({}, fnOrCtrBase, { - fields: signatureDeclarationCommon -})); -(0, _utils.default)("TSConstructorType", Object.assign({}, fnOrCtrBase, { - fields: Object.assign({}, signatureDeclarationCommon, { - abstract: (0, _utils.validateOptional)(bool) - }) -})); -(0, _utils.default)("TSTypeReference", { - aliases: ["TSType"], - visitor: ["typeName", "typeParameters"], - fields: { - typeName: (0, _utils.validateType)("TSEntityName"), - typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") - } -}); -(0, _utils.default)("TSTypePredicate", { - aliases: ["TSType"], - visitor: ["parameterName", "typeAnnotation"], - builder: ["parameterName", "typeAnnotation", "asserts"], - fields: { - parameterName: (0, _utils.validateType)(["Identifier", "TSThisType"]), - typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), - asserts: (0, _utils.validateOptional)(bool) - } -}); -(0, _utils.default)("TSTypeQuery", { - aliases: ["TSType"], - visitor: ["exprName"], - fields: { - exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"]) - } -}); -(0, _utils.default)("TSTypeLiteral", { - aliases: ["TSType"], - visitor: ["members"], - fields: { - members: (0, _utils.validateArrayOfType)("TSTypeElement") - } -}); -(0, _utils.default)("TSArrayType", { - aliases: ["TSType"], - visitor: ["elementType"], - fields: { - elementType: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSTupleType", { - aliases: ["TSType"], - visitor: ["elementTypes"], - fields: { - elementTypes: (0, _utils.validateArrayOfType)(["TSType", "TSNamedTupleMember"]) - } -}); -(0, _utils.default)("TSOptionalType", { - aliases: ["TSType"], - visitor: ["typeAnnotation"], - fields: { - typeAnnotation: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSRestType", { - aliases: ["TSType"], - visitor: ["typeAnnotation"], - fields: { - typeAnnotation: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSNamedTupleMember", { - visitor: ["label", "elementType"], - builder: ["label", "elementType", "optional"], - fields: { - label: (0, _utils.validateType)("Identifier"), - optional: { - validate: bool, - default: false - }, - elementType: (0, _utils.validateType)("TSType") - } -}); -const unionOrIntersection = { - aliases: ["TSType"], - visitor: ["types"], - fields: { - types: (0, _utils.validateArrayOfType)("TSType") - } -}; -(0, _utils.default)("TSUnionType", unionOrIntersection); -(0, _utils.default)("TSIntersectionType", unionOrIntersection); -(0, _utils.default)("TSConditionalType", { - aliases: ["TSType"], - visitor: ["checkType", "extendsType", "trueType", "falseType"], - fields: { - checkType: (0, _utils.validateType)("TSType"), - extendsType: (0, _utils.validateType)("TSType"), - trueType: (0, _utils.validateType)("TSType"), - falseType: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSInferType", { - aliases: ["TSType"], - visitor: ["typeParameter"], - fields: { - typeParameter: (0, _utils.validateType)("TSTypeParameter") - } -}); -(0, _utils.default)("TSParenthesizedType", { - aliases: ["TSType"], - visitor: ["typeAnnotation"], - fields: { - typeAnnotation: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSTypeOperator", { - aliases: ["TSType"], - visitor: ["typeAnnotation"], - fields: { - operator: (0, _utils.validate)((0, _utils.assertValueType)("string")), - typeAnnotation: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSIndexedAccessType", { - aliases: ["TSType"], - visitor: ["objectType", "indexType"], - fields: { - objectType: (0, _utils.validateType)("TSType"), - indexType: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSMappedType", { - aliases: ["TSType"], - visitor: ["typeParameter", "typeAnnotation", "nameType"], - fields: { - readonly: (0, _utils.validateOptional)(bool), - typeParameter: (0, _utils.validateType)("TSTypeParameter"), - optional: (0, _utils.validateOptional)(bool), - typeAnnotation: (0, _utils.validateOptionalType)("TSType"), - nameType: (0, _utils.validateOptionalType)("TSType") - } -}); -(0, _utils.default)("TSLiteralType", { - aliases: ["TSType", "TSBaseType"], - visitor: ["literal"], - fields: { - literal: { - validate: function () { - const unaryExpression = (0, _utils.assertNodeType)("NumericLiteral", "BigIntLiteral"); - const unaryOperator = (0, _utils.assertOneOf)("-"); - const literal = (0, _utils.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral"); - - function validator(parent, key, node) { - if ((0, _is.default)("UnaryExpression", node)) { - unaryOperator(node, "operator", node.operator); - unaryExpression(node, "argument", node.argument); - } else { - literal(parent, key, node); - } - } - - validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "UnaryExpression"]; - return validator; - }() - } - } -}); -(0, _utils.default)("TSExpressionWithTypeArguments", { - aliases: ["TSType"], - visitor: ["expression", "typeParameters"], - fields: { - expression: (0, _utils.validateType)("TSEntityName"), - typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") - } -}); -(0, _utils.default)("TSInterfaceDeclaration", { - aliases: ["Statement", "Declaration"], - visitor: ["id", "typeParameters", "extends", "body"], - fields: { - declare: (0, _utils.validateOptional)(bool), - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), - extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")), - body: (0, _utils.validateType)("TSInterfaceBody") - } -}); -(0, _utils.default)("TSInterfaceBody", { - visitor: ["body"], - fields: { - body: (0, _utils.validateArrayOfType)("TSTypeElement") - } -}); -(0, _utils.default)("TSTypeAliasDeclaration", { - aliases: ["Statement", "Declaration"], - visitor: ["id", "typeParameters", "typeAnnotation"], - fields: { - declare: (0, _utils.validateOptional)(bool), - id: (0, _utils.validateType)("Identifier"), - typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), - typeAnnotation: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSAsExpression", { - aliases: ["Expression"], - visitor: ["expression", "typeAnnotation"], - fields: { - expression: (0, _utils.validateType)("Expression"), - typeAnnotation: (0, _utils.validateType)("TSType") - } -}); -(0, _utils.default)("TSTypeAssertion", { - aliases: ["Expression"], - visitor: ["typeAnnotation", "expression"], - fields: { - typeAnnotation: (0, _utils.validateType)("TSType"), - expression: (0, _utils.validateType)("Expression") - } -}); -(0, _utils.default)("TSEnumDeclaration", { - aliases: ["Statement", "Declaration"], - visitor: ["id", "members"], - fields: { - declare: (0, _utils.validateOptional)(bool), - const: (0, _utils.validateOptional)(bool), - id: (0, _utils.validateType)("Identifier"), - members: (0, _utils.validateArrayOfType)("TSEnumMember"), - initializer: (0, _utils.validateOptionalType)("Expression") - } -}); -(0, _utils.default)("TSEnumMember", { - visitor: ["id", "initializer"], - fields: { - id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), - initializer: (0, _utils.validateOptionalType)("Expression") - } -}); -(0, _utils.default)("TSModuleDeclaration", { - aliases: ["Statement", "Declaration"], - visitor: ["id", "body"], - fields: { - declare: (0, _utils.validateOptional)(bool), - global: (0, _utils.validateOptional)(bool), - id: (0, _utils.validateType)(["Identifier", "StringLiteral"]), - body: (0, _utils.validateType)(["TSModuleBlock", "TSModuleDeclaration"]) - } -}); -(0, _utils.default)("TSModuleBlock", { - aliases: ["Scopable", "Block", "BlockParent"], - visitor: ["body"], - fields: { - body: (0, _utils.validateArrayOfType)("Statement") - } -}); -(0, _utils.default)("TSImportType", { - aliases: ["TSType"], - visitor: ["argument", "qualifier", "typeParameters"], - fields: { - argument: (0, _utils.validateType)("StringLiteral"), - qualifier: (0, _utils.validateOptionalType)("TSEntityName"), - typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") - } -}); -(0, _utils.default)("TSImportEqualsDeclaration", { - aliases: ["Statement"], - visitor: ["id", "moduleReference"], - fields: { - isExport: (0, _utils.validate)(bool), - id: (0, _utils.validateType)("Identifier"), - moduleReference: (0, _utils.validateType)(["TSEntityName", "TSExternalModuleReference"]), - importKind: { - validate: (0, _utils.assertOneOf)("type", "value"), - optional: true - } - } -}); -(0, _utils.default)("TSExternalModuleReference", { - visitor: ["expression"], - fields: { - expression: (0, _utils.validateType)("StringLiteral") - } -}); -(0, _utils.default)("TSNonNullExpression", { - aliases: ["Expression"], - visitor: ["expression"], - fields: { - expression: (0, _utils.validateType)("Expression") - } -}); -(0, _utils.default)("TSExportAssignment", { - aliases: ["Statement"], - visitor: ["expression"], - fields: { - expression: (0, _utils.validateType)("Expression") - } -}); -(0, _utils.default)("TSNamespaceExportDeclaration", { - aliases: ["Statement"], - visitor: ["id"], - fields: { - id: (0, _utils.validateType)("Identifier") - } -}); -(0, _utils.default)("TSTypeAnnotation", { - visitor: ["typeAnnotation"], - fields: { - typeAnnotation: { - validate: (0, _utils.assertNodeType)("TSType") - } - } -}); -(0, _utils.default)("TSTypeParameterInstantiation", { - visitor: ["params"], - fields: { - params: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType"))) - } - } -}); -(0, _utils.default)("TSTypeParameterDeclaration", { - visitor: ["params"], - fields: { - params: { - validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSTypeParameter"))) - } - } -}); -(0, _utils.default)("TSTypeParameter", { - builder: ["constraint", "default", "name"], - visitor: ["constraint", "default"], - fields: { - name: { - validate: (0, _utils.assertValueType)("string") - }, - constraint: { - validate: (0, _utils.assertNodeType)("TSType"), - optional: true - }, - default: { - validate: (0, _utils.assertNodeType)("TSType"), - optional: true - } - } -}); - -/***/ }), - -/***/ 82426: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.validate = validate; -exports.typeIs = typeIs; -exports.validateType = validateType; -exports.validateOptional = validateOptional; -exports.validateOptionalType = validateOptionalType; -exports.arrayOf = arrayOf; -exports.arrayOfType = arrayOfType; -exports.validateArrayOfType = validateArrayOfType; -exports.assertEach = assertEach; -exports.assertOneOf = assertOneOf; -exports.assertNodeType = assertNodeType; -exports.assertNodeOrValueType = assertNodeOrValueType; -exports.assertValueType = assertValueType; -exports.assertShape = assertShape; -exports.assertOptionalChainStart = assertOptionalChainStart; -exports.chain = chain; -exports["default"] = defineType; -exports.NODE_PARENT_VALIDATIONS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = void 0; - -var _is = __nccwpck_require__(31334); - -var _validate = __nccwpck_require__(4432); - -const VISITOR_KEYS = {}; -exports.VISITOR_KEYS = VISITOR_KEYS; -const ALIAS_KEYS = {}; -exports.ALIAS_KEYS = ALIAS_KEYS; -const FLIPPED_ALIAS_KEYS = {}; -exports.FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS; -const NODE_FIELDS = {}; -exports.NODE_FIELDS = NODE_FIELDS; -const BUILDER_KEYS = {}; -exports.BUILDER_KEYS = BUILDER_KEYS; -const DEPRECATED_KEYS = {}; -exports.DEPRECATED_KEYS = DEPRECATED_KEYS; -const NODE_PARENT_VALIDATIONS = {}; -exports.NODE_PARENT_VALIDATIONS = NODE_PARENT_VALIDATIONS; - -function getType(val) { - if (Array.isArray(val)) { - return "array"; - } else if (val === null) { - return "null"; - } else { - return typeof val; - } -} - -function validate(validate) { - return { - validate - }; -} - -function typeIs(typeName) { - return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType(...typeName); -} - -function validateType(typeName) { - return validate(typeIs(typeName)); -} - -function validateOptional(validate) { - return { - validate, - optional: true - }; -} - -function validateOptionalType(typeName) { - return { - validate: typeIs(typeName), - optional: true - }; -} - -function arrayOf(elementType) { - return chain(assertValueType("array"), assertEach(elementType)); -} - -function arrayOfType(typeName) { - return arrayOf(typeIs(typeName)); -} - -function validateArrayOfType(typeName) { - return validate(arrayOfType(typeName)); -} - -function assertEach(callback) { - function validator(node, key, val) { - if (!Array.isArray(val)) return; - - for (let i = 0; i < val.length; i++) { - const subkey = `${key}[${i}]`; - const v = val[i]; - callback(node, subkey, v); - if (process.env.BABEL_TYPES_8_BREAKING) (0, _validate.validateChild)(node, subkey, v); - } - } - - validator.each = callback; - return validator; -} - -function assertOneOf(...values) { - function validate(node, key, val) { - if (values.indexOf(val) < 0) { - throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`); - } - } - - validate.oneOf = values; - return validate; -} - -function assertNodeType(...types) { - function validate(node, key, val) { - for (const type of types) { - if ((0, _is.default)(type, val)) { - (0, _validate.validateChild)(node, key, val); - return; - } - } - - throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`); - } - - validate.oneOfNodeTypes = types; - return validate; -} - -function assertNodeOrValueType(...types) { - function validate(node, key, val) { - for (const type of types) { - if (getType(val) === type || (0, _is.default)(type, val)) { - (0, _validate.validateChild)(node, key, val); - return; - } - } - - throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`); - } - - validate.oneOfNodeOrValueTypes = types; - return validate; -} - -function assertValueType(type) { - function validate(node, key, val) { - const valid = getType(val) === type; - - if (!valid) { - throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`); - } - } - - validate.type = type; - return validate; -} - -function assertShape(shape) { - function validate(node, key, val) { - const errors = []; - - for (const property of Object.keys(shape)) { - try { - (0, _validate.validateField)(node, property, val[property], shape[property]); - } catch (error) { - if (error instanceof TypeError) { - errors.push(error.message); - continue; - } - - throw error; - } - } - - if (errors.length) { - throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`); - } - } - - validate.shapeOf = shape; - return validate; -} - -function assertOptionalChainStart() { - function validate(node) { - var _current; - - let current = node; - - while (node) { - const { - type - } = current; - - if (type === "OptionalCallExpression") { - if (current.optional) return; - current = current.callee; - continue; - } - - if (type === "OptionalMemberExpression") { - if (current.optional) return; - current = current.object; - continue; - } - - break; - } - - throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`); - } - - return validate; -} - -function chain(...fns) { - function validate(...args) { - for (const fn of fns) { - fn(...args); - } - } - - validate.chainOf = fns; - - if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) { - throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`); - } - - return validate; -} - -const validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"]; -const validFieldKeys = ["default", "optional", "validate"]; - -function defineType(type, opts = {}) { - const inherits = opts.inherits && store[opts.inherits] || {}; - let fields = opts.fields; - - if (!fields) { - fields = {}; - - if (inherits.fields) { - const keys = Object.getOwnPropertyNames(inherits.fields); - - for (const key of keys) { - const field = inherits.fields[key]; - const def = field.default; - - if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") { - throw new Error("field defaults can only be primitives or empty arrays currently"); - } - - fields[key] = { - default: Array.isArray(def) ? [] : def, - optional: field.optional, - validate: field.validate - }; - } - } - } - - const visitor = opts.visitor || inherits.visitor || []; - const aliases = opts.aliases || inherits.aliases || []; - const builder = opts.builder || inherits.builder || opts.visitor || []; - - for (const k of Object.keys(opts)) { - if (validTypeOpts.indexOf(k) === -1) { - throw new Error(`Unknown type option "${k}" on ${type}`); - } - } - - if (opts.deprecatedAlias) { - DEPRECATED_KEYS[opts.deprecatedAlias] = type; - } - - for (const key of visitor.concat(builder)) { - fields[key] = fields[key] || {}; - } - - for (const key of Object.keys(fields)) { - const field = fields[key]; - - if (field.default !== undefined && builder.indexOf(key) === -1) { - field.optional = true; - } - - if (field.default === undefined) { - field.default = null; - } else if (!field.validate && field.default != null) { - field.validate = assertValueType(getType(field.default)); - } - - for (const k of Object.keys(field)) { - if (validFieldKeys.indexOf(k) === -1) { - throw new Error(`Unknown field key "${k}" on ${type}.${key}`); - } - } - } - - VISITOR_KEYS[type] = opts.visitor = visitor; - BUILDER_KEYS[type] = opts.builder = builder; - NODE_FIELDS[type] = opts.fields = fields; - ALIAS_KEYS[type] = opts.aliases = aliases; - aliases.forEach(alias => { - FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || []; - FLIPPED_ALIAS_KEYS[alias].push(type); - }); - - if (opts.validate) { - NODE_PARENT_VALIDATIONS[type] = opts.validate; - } - - store[type] = opts; -} - -const store = {}; - -/***/ }), - -/***/ 24479: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _exportNames = { - react: true, - assertNode: true, - createTypeAnnotationBasedOnTypeof: true, - createUnionTypeAnnotation: true, - createFlowUnionType: true, - createTSUnionType: true, - cloneNode: true, - clone: true, - cloneDeep: true, - cloneDeepWithoutLoc: true, - cloneWithoutLoc: true, - addComment: true, - addComments: true, - inheritInnerComments: true, - inheritLeadingComments: true, - inheritsComments: true, - inheritTrailingComments: true, - removeComments: true, - ensureBlock: true, - toBindingIdentifierName: true, - toBlock: true, - toComputedKey: true, - toExpression: true, - toIdentifier: true, - toKeyAlias: true, - toSequenceExpression: true, - toStatement: true, - valueToNode: true, - appendToMemberExpression: true, - inherits: true, - prependToMemberExpression: true, - removeProperties: true, - removePropertiesDeep: true, - removeTypeDuplicates: true, - getBindingIdentifiers: true, - getOuterBindingIdentifiers: true, - traverse: true, - traverseFast: true, - shallowEqual: true, - is: true, - isBinding: true, - isBlockScoped: true, - isImmutable: true, - isLet: true, - isNode: true, - isNodesEquivalent: true, - isPlaceholderType: true, - isReferenced: true, - isScope: true, - isSpecifierDefault: true, - isType: true, - isValidES3Identifier: true, - isValidIdentifier: true, - isVar: true, - matchesPattern: true, - validate: true, - buildMatchMemberExpression: true -}; -Object.defineProperty(exports, "assertNode", ({ - enumerable: true, - get: function () { - return _assertNode.default; - } -})); -Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", ({ - enumerable: true, - get: function () { - return _createTypeAnnotationBasedOnTypeof.default; - } -})); -Object.defineProperty(exports, "createUnionTypeAnnotation", ({ - enumerable: true, - get: function () { - return _createFlowUnionType.default; - } -})); -Object.defineProperty(exports, "createFlowUnionType", ({ - enumerable: true, - get: function () { - return _createFlowUnionType.default; - } -})); -Object.defineProperty(exports, "createTSUnionType", ({ - enumerable: true, - get: function () { - return _createTSUnionType.default; - } -})); -Object.defineProperty(exports, "cloneNode", ({ - enumerable: true, - get: function () { - return _cloneNode.default; - } -})); -Object.defineProperty(exports, "clone", ({ - enumerable: true, - get: function () { - return _clone.default; - } -})); -Object.defineProperty(exports, "cloneDeep", ({ - enumerable: true, - get: function () { - return _cloneDeep.default; - } -})); -Object.defineProperty(exports, "cloneDeepWithoutLoc", ({ - enumerable: true, - get: function () { - return _cloneDeepWithoutLoc.default; - } -})); -Object.defineProperty(exports, "cloneWithoutLoc", ({ - enumerable: true, - get: function () { - return _cloneWithoutLoc.default; - } -})); -Object.defineProperty(exports, "addComment", ({ - enumerable: true, - get: function () { - return _addComment.default; - } -})); -Object.defineProperty(exports, "addComments", ({ - enumerable: true, - get: function () { - return _addComments.default; - } -})); -Object.defineProperty(exports, "inheritInnerComments", ({ - enumerable: true, - get: function () { - return _inheritInnerComments.default; - } -})); -Object.defineProperty(exports, "inheritLeadingComments", ({ - enumerable: true, - get: function () { - return _inheritLeadingComments.default; - } -})); -Object.defineProperty(exports, "inheritsComments", ({ - enumerable: true, - get: function () { - return _inheritsComments.default; - } -})); -Object.defineProperty(exports, "inheritTrailingComments", ({ - enumerable: true, - get: function () { - return _inheritTrailingComments.default; - } -})); -Object.defineProperty(exports, "removeComments", ({ - enumerable: true, - get: function () { - return _removeComments.default; - } -})); -Object.defineProperty(exports, "ensureBlock", ({ - enumerable: true, - get: function () { - return _ensureBlock.default; - } -})); -Object.defineProperty(exports, "toBindingIdentifierName", ({ - enumerable: true, - get: function () { - return _toBindingIdentifierName.default; - } -})); -Object.defineProperty(exports, "toBlock", ({ - enumerable: true, - get: function () { - return _toBlock.default; - } -})); -Object.defineProperty(exports, "toComputedKey", ({ - enumerable: true, - get: function () { - return _toComputedKey.default; - } -})); -Object.defineProperty(exports, "toExpression", ({ - enumerable: true, - get: function () { - return _toExpression.default; - } -})); -Object.defineProperty(exports, "toIdentifier", ({ - enumerable: true, - get: function () { - return _toIdentifier.default; - } -})); -Object.defineProperty(exports, "toKeyAlias", ({ - enumerable: true, - get: function () { - return _toKeyAlias.default; - } -})); -Object.defineProperty(exports, "toSequenceExpression", ({ - enumerable: true, - get: function () { - return _toSequenceExpression.default; - } -})); -Object.defineProperty(exports, "toStatement", ({ - enumerable: true, - get: function () { - return _toStatement.default; - } -})); -Object.defineProperty(exports, "valueToNode", ({ - enumerable: true, - get: function () { - return _valueToNode.default; - } -})); -Object.defineProperty(exports, "appendToMemberExpression", ({ - enumerable: true, - get: function () { - return _appendToMemberExpression.default; - } -})); -Object.defineProperty(exports, "inherits", ({ - enumerable: true, - get: function () { - return _inherits.default; - } -})); -Object.defineProperty(exports, "prependToMemberExpression", ({ - enumerable: true, - get: function () { - return _prependToMemberExpression.default; - } -})); -Object.defineProperty(exports, "removeProperties", ({ - enumerable: true, - get: function () { - return _removeProperties.default; - } -})); -Object.defineProperty(exports, "removePropertiesDeep", ({ - enumerable: true, - get: function () { - return _removePropertiesDeep.default; - } -})); -Object.defineProperty(exports, "removeTypeDuplicates", ({ - enumerable: true, - get: function () { - return _removeTypeDuplicates.default; - } -})); -Object.defineProperty(exports, "getBindingIdentifiers", ({ - enumerable: true, - get: function () { - return _getBindingIdentifiers.default; - } -})); -Object.defineProperty(exports, "getOuterBindingIdentifiers", ({ - enumerable: true, - get: function () { - return _getOuterBindingIdentifiers.default; - } -})); -Object.defineProperty(exports, "traverse", ({ - enumerable: true, - get: function () { - return _traverse.default; - } -})); -Object.defineProperty(exports, "traverseFast", ({ - enumerable: true, - get: function () { - return _traverseFast.default; - } -})); -Object.defineProperty(exports, "shallowEqual", ({ - enumerable: true, - get: function () { - return _shallowEqual.default; - } -})); -Object.defineProperty(exports, "is", ({ - enumerable: true, - get: function () { - return _is.default; - } -})); -Object.defineProperty(exports, "isBinding", ({ - enumerable: true, - get: function () { - return _isBinding.default; - } -})); -Object.defineProperty(exports, "isBlockScoped", ({ - enumerable: true, - get: function () { - return _isBlockScoped.default; - } -})); -Object.defineProperty(exports, "isImmutable", ({ - enumerable: true, - get: function () { - return _isImmutable.default; - } -})); -Object.defineProperty(exports, "isLet", ({ - enumerable: true, - get: function () { - return _isLet.default; - } -})); -Object.defineProperty(exports, "isNode", ({ - enumerable: true, - get: function () { - return _isNode.default; - } -})); -Object.defineProperty(exports, "isNodesEquivalent", ({ - enumerable: true, - get: function () { - return _isNodesEquivalent.default; - } -})); -Object.defineProperty(exports, "isPlaceholderType", ({ - enumerable: true, - get: function () { - return _isPlaceholderType.default; - } -})); -Object.defineProperty(exports, "isReferenced", ({ - enumerable: true, - get: function () { - return _isReferenced.default; - } -})); -Object.defineProperty(exports, "isScope", ({ - enumerable: true, - get: function () { - return _isScope.default; - } -})); -Object.defineProperty(exports, "isSpecifierDefault", ({ - enumerable: true, - get: function () { - return _isSpecifierDefault.default; - } -})); -Object.defineProperty(exports, "isType", ({ - enumerable: true, - get: function () { - return _isType.default; - } -})); -Object.defineProperty(exports, "isValidES3Identifier", ({ - enumerable: true, - get: function () { - return _isValidES3Identifier.default; - } -})); -Object.defineProperty(exports, "isValidIdentifier", ({ - enumerable: true, - get: function () { - return _isValidIdentifier.default; - } -})); -Object.defineProperty(exports, "isVar", ({ - enumerable: true, - get: function () { - return _isVar.default; - } -})); -Object.defineProperty(exports, "matchesPattern", ({ - enumerable: true, - get: function () { - return _matchesPattern.default; - } -})); -Object.defineProperty(exports, "validate", ({ - enumerable: true, - get: function () { - return _validate.default; - } -})); -Object.defineProperty(exports, "buildMatchMemberExpression", ({ - enumerable: true, - get: function () { - return _buildMatchMemberExpression.default; - } -})); -exports.react = void 0; - -var _isReactComponent = __nccwpck_require__(91982); - -var _isCompatTag = __nccwpck_require__(31569); - -var _buildChildren = __nccwpck_require__(72259); - -var _assertNode = __nccwpck_require__(98162); - -var _generated = __nccwpck_require__(93333); - -Object.keys(_generated).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _generated[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _generated[key]; - } - }); -}); - -var _createTypeAnnotationBasedOnTypeof = __nccwpck_require__(7112); - -var _createFlowUnionType = __nccwpck_require__(53598); - -var _createTSUnionType = __nccwpck_require__(69114); - -var _generated2 = __nccwpck_require__(10758); - -Object.keys(_generated2).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _generated2[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _generated2[key]; - } - }); -}); - -var _uppercase = __nccwpck_require__(41665); - -Object.keys(_uppercase).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _uppercase[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _uppercase[key]; - } - }); -}); - -var _cloneNode = __nccwpck_require__(66479); - -var _clone = __nccwpck_require__(39827); - -var _cloneDeep = __nccwpck_require__(68567); - -var _cloneDeepWithoutLoc = __nccwpck_require__(33298); - -var _cloneWithoutLoc = __nccwpck_require__(36087); - -var _addComment = __nccwpck_require__(73952); - -var _addComments = __nccwpck_require__(27032); - -var _inheritInnerComments = __nccwpck_require__(62666); - -var _inheritLeadingComments = __nccwpck_require__(47158); - -var _inheritsComments = __nccwpck_require__(41832); - -var _inheritTrailingComments = __nccwpck_require__(75225); - -var _removeComments = __nccwpck_require__(53755); - -var _generated3 = __nccwpck_require__(86441); - -Object.keys(_generated3).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _generated3[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _generated3[key]; - } - }); -}); - -var _constants = __nccwpck_require__(90514); - -Object.keys(_constants).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _constants[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _constants[key]; - } - }); -}); - -var _ensureBlock = __nccwpck_require__(32938); - -var _toBindingIdentifierName = __nccwpck_require__(45099); - -var _toBlock = __nccwpck_require__(17300); - -var _toComputedKey = __nccwpck_require__(52828); - -var _toExpression = __nccwpck_require__(22628); - -var _toIdentifier = __nccwpck_require__(62910); - -var _toKeyAlias = __nccwpck_require__(89099); - -var _toSequenceExpression = __nccwpck_require__(67455); - -var _toStatement = __nccwpck_require__(13198); - -var _valueToNode = __nccwpck_require__(17411); - -var _definitions = __nccwpck_require__(19090); - -Object.keys(_definitions).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _definitions[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _definitions[key]; - } - }); -}); - -var _appendToMemberExpression = __nccwpck_require__(49016); - -var _inherits = __nccwpck_require__(88713); - -var _prependToMemberExpression = __nccwpck_require__(68411); - -var _removeProperties = __nccwpck_require__(78814); - -var _removePropertiesDeep = __nccwpck_require__(83983); - -var _removeTypeDuplicates = __nccwpck_require__(30036); - -var _getBindingIdentifiers = __nccwpck_require__(80805); - -var _getOuterBindingIdentifiers = __nccwpck_require__(20844); - -var _traverse = __nccwpck_require__(36862); - -Object.keys(_traverse).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _traverse[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _traverse[key]; - } - }); -}); - -var _traverseFast = __nccwpck_require__(53139); - -var _shallowEqual = __nccwpck_require__(56522); - -var _is = __nccwpck_require__(31334); - -var _isBinding = __nccwpck_require__(71743); - -var _isBlockScoped = __nccwpck_require__(64602); - -var _isImmutable = __nccwpck_require__(88817); - -var _isLet = __nccwpck_require__(44376); - -var _isNode = __nccwpck_require__(46832); - -var _isNodesEquivalent = __nccwpck_require__(31439); - -var _isPlaceholderType = __nccwpck_require__(2853); - -var _isReferenced = __nccwpck_require__(20570); - -var _isScope = __nccwpck_require__(21748); - -var _isSpecifierDefault = __nccwpck_require__(6152); - -var _isType = __nccwpck_require__(90179); - -var _isValidES3Identifier = __nccwpck_require__(71684); - -var _isValidIdentifier = __nccwpck_require__(98557); - -var _isVar = __nccwpck_require__(49992); - -var _matchesPattern = __nccwpck_require__(49234); - -var _validate = __nccwpck_require__(4432); - -var _buildMatchMemberExpression = __nccwpck_require__(48072); - -var _generated4 = __nccwpck_require__(52047); - -Object.keys(_generated4).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _generated4[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _generated4[key]; - } - }); -}); - -var _generated5 = __nccwpck_require__(64373); - -Object.keys(_generated5).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _generated5[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _generated5[key]; - } - }); -}); -const react = { - isReactComponent: _isReactComponent.default, - isCompatTag: _isCompatTag.default, - buildChildren: _buildChildren.default -}; -exports.react = react; - -/***/ }), - -/***/ 49016: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = appendToMemberExpression; - -var _generated = __nccwpck_require__(10758); - -function appendToMemberExpression(member, append, computed = false) { - member.object = (0, _generated.memberExpression)(member.object, member.property, member.computed); - member.property = append; - member.computed = !!computed; - return member; -} - -/***/ }), - -/***/ 30036: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = removeTypeDuplicates; - -var _generated = __nccwpck_require__(52047); - -function getQualifiedName(node) { - return (0, _generated.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`; -} - -function removeTypeDuplicates(nodes) { - const generics = {}; - const bases = {}; - const typeGroups = []; - const types = []; - - for (let i = 0; i < nodes.length; i++) { - const node = nodes[i]; - if (!node) continue; - - if (types.indexOf(node) >= 0) { - continue; - } - - if ((0, _generated.isAnyTypeAnnotation)(node)) { - return [node]; - } - - if ((0, _generated.isFlowBaseAnnotation)(node)) { - bases[node.type] = node; - continue; - } - - if ((0, _generated.isUnionTypeAnnotation)(node)) { - if (typeGroups.indexOf(node.types) < 0) { - nodes = nodes.concat(node.types); - typeGroups.push(node.types); - } - - continue; - } - - if ((0, _generated.isGenericTypeAnnotation)(node)) { - const name = getQualifiedName(node.id); - - if (generics[name]) { - let existing = generics[name]; - - if (existing.typeParameters) { - if (node.typeParameters) { - existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params)); - } - } else { - existing = node.typeParameters; - } - } else { - generics[name] = node; - } - - continue; - } - - types.push(node); - } - - for (const type of Object.keys(bases)) { - types.push(bases[type]); - } - - for (const name of Object.keys(generics)) { - types.push(generics[name]); - } - - return types; -} - -/***/ }), - -/***/ 88713: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = inherits; - -var _constants = __nccwpck_require__(90514); - -var _inheritsComments = __nccwpck_require__(41832); - -function inherits(child, parent) { - if (!child || !parent) return child; - - for (const key of _constants.INHERIT_KEYS.optional) { - if (child[key] == null) { - child[key] = parent[key]; - } - } - - for (const key of Object.keys(parent)) { - if (key[0] === "_" && key !== "__clone") child[key] = parent[key]; - } - - for (const key of _constants.INHERIT_KEYS.force) { - child[key] = parent[key]; - } - - (0, _inheritsComments.default)(child, parent); - return child; -} - -/***/ }), - -/***/ 68411: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = prependToMemberExpression; - -var _generated = __nccwpck_require__(10758); - -function prependToMemberExpression(member, prepend) { - member.object = (0, _generated.memberExpression)(prepend, member.object); - return member; -} - -/***/ }), - -/***/ 78814: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = removeProperties; - -var _constants = __nccwpck_require__(90514); - -const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"]; - -const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS); - -function removeProperties(node, opts = {}) { - const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS; - - for (const key of map) { - if (node[key] != null) node[key] = undefined; - } - - for (const key of Object.keys(node)) { - if (key[0] === "_" && node[key] != null) node[key] = undefined; - } - - const symbols = Object.getOwnPropertySymbols(node); - - for (const sym of symbols) { - node[sym] = null; - } -} - -/***/ }), - -/***/ 83983: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = removePropertiesDeep; - -var _traverseFast = __nccwpck_require__(53139); - -var _removeProperties = __nccwpck_require__(78814); - -function removePropertiesDeep(tree, opts) { - (0, _traverseFast.default)(tree, _removeProperties.default, opts); - return tree; -} - -/***/ }), - -/***/ 6262: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = removeTypeDuplicates; - -var _generated = __nccwpck_require__(52047); - -function removeTypeDuplicates(nodes) { - const generics = {}; - const bases = {}; - const typeGroups = []; - const types = []; - - for (let i = 0; i < nodes.length; i++) { - const node = nodes[i]; - if (!node) continue; - - if (types.indexOf(node) >= 0) { - continue; - } - - if ((0, _generated.isTSAnyKeyword)(node)) { - return [node]; - } - - if ((0, _generated.isTSBaseType)(node)) { - bases[node.type] = node; - continue; - } - - if ((0, _generated.isTSUnionType)(node)) { - if (typeGroups.indexOf(node.types) < 0) { - nodes = nodes.concat(node.types); - typeGroups.push(node.types); - } - - continue; - } - - types.push(node); - } - - for (const type of Object.keys(bases)) { - types.push(bases[type]); - } - - for (const name of Object.keys(generics)) { - types.push(generics[name]); - } - - return types; -} - -/***/ }), - -/***/ 80805: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = getBindingIdentifiers; - -var _generated = __nccwpck_require__(52047); - -function getBindingIdentifiers(node, duplicates, outerOnly) { - let search = [].concat(node); - const ids = Object.create(null); - - while (search.length) { - const id = search.shift(); - if (!id) continue; - const keys = getBindingIdentifiers.keys[id.type]; - - if ((0, _generated.isIdentifier)(id)) { - if (duplicates) { - const _ids = ids[id.name] = ids[id.name] || []; - - _ids.push(id); - } else { - ids[id.name] = id; - } - - continue; - } - - if ((0, _generated.isExportDeclaration)(id) && !(0, _generated.isExportAllDeclaration)(id)) { - if ((0, _generated.isDeclaration)(id.declaration)) { - search.push(id.declaration); - } - - continue; - } - - if (outerOnly) { - if ((0, _generated.isFunctionDeclaration)(id)) { - search.push(id.id); - continue; - } - - if ((0, _generated.isFunctionExpression)(id)) { - continue; - } - } - - if (keys) { - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - - if (id[key]) { - search = search.concat(id[key]); - } - } - } - } - - return ids; -} - -getBindingIdentifiers.keys = { - DeclareClass: ["id"], - DeclareFunction: ["id"], - DeclareModule: ["id"], - DeclareVariable: ["id"], - DeclareInterface: ["id"], - DeclareTypeAlias: ["id"], - DeclareOpaqueType: ["id"], - InterfaceDeclaration: ["id"], - TypeAlias: ["id"], - OpaqueType: ["id"], - CatchClause: ["param"], - LabeledStatement: ["label"], - UnaryExpression: ["argument"], - AssignmentExpression: ["left"], - ImportSpecifier: ["local"], - ImportNamespaceSpecifier: ["local"], - ImportDefaultSpecifier: ["local"], - ImportDeclaration: ["specifiers"], - ExportSpecifier: ["exported"], - ExportNamespaceSpecifier: ["exported"], - ExportDefaultSpecifier: ["exported"], - FunctionDeclaration: ["id", "params"], - FunctionExpression: ["id", "params"], - ArrowFunctionExpression: ["params"], - ObjectMethod: ["params"], - ClassMethod: ["params"], - ForInStatement: ["left"], - ForOfStatement: ["left"], - ClassDeclaration: ["id"], - ClassExpression: ["id"], - RestElement: ["argument"], - UpdateExpression: ["argument"], - ObjectProperty: ["value"], - AssignmentPattern: ["left"], - ArrayPattern: ["elements"], - ObjectPattern: ["properties"], - VariableDeclaration: ["declarations"], - VariableDeclarator: ["id"] -}; - -/***/ }), - -/***/ 20844: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _getBindingIdentifiers = __nccwpck_require__(80805); - -var _default = getOuterBindingIdentifiers; -exports["default"] = _default; - -function getOuterBindingIdentifiers(node, duplicates) { - return (0, _getBindingIdentifiers.default)(node, duplicates, true); -} - -/***/ }), - -/***/ 36862: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = traverse; - -var _definitions = __nccwpck_require__(19090); - -function traverse(node, handlers, state) { - if (typeof handlers === "function") { - handlers = { - enter: handlers - }; - } - - const { - enter, - exit - } = handlers; - traverseSimpleImpl(node, enter, exit, state, []); -} - -function traverseSimpleImpl(node, enter, exit, state, ancestors) { - const keys = _definitions.VISITOR_KEYS[node.type]; - if (!keys) return; - if (enter) enter(node, ancestors, state); - - for (const key of keys) { - const subNode = node[key]; - - if (Array.isArray(subNode)) { - for (let i = 0; i < subNode.length; i++) { - const child = subNode[i]; - if (!child) continue; - ancestors.push({ - node, - key, - index: i - }); - traverseSimpleImpl(child, enter, exit, state, ancestors); - ancestors.pop(); - } - } else if (subNode) { - ancestors.push({ - node, - key - }); - traverseSimpleImpl(subNode, enter, exit, state, ancestors); - ancestors.pop(); - } - } - - if (exit) exit(node, ancestors, state); -} - -/***/ }), - -/***/ 53139: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = traverseFast; - -var _definitions = __nccwpck_require__(19090); - -function traverseFast(node, enter, opts) { - if (!node) return; - const keys = _definitions.VISITOR_KEYS[node.type]; - if (!keys) return; - opts = opts || {}; - enter(node, opts); - - for (const key of keys) { - const subNode = node[key]; - - if (Array.isArray(subNode)) { - for (const node of subNode) { - traverseFast(node, enter, opts); - } - } else { - traverseFast(subNode, enter, opts); - } - } -} - -/***/ }), - -/***/ 4335: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = inherit; - -function inherit(key, child, parent) { - if (child && parent) { - child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean))); - } -} - -/***/ }), - -/***/ 46671: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = cleanJSXElementLiteralChild; - -var _generated = __nccwpck_require__(10758); - -function cleanJSXElementLiteralChild(child, args) { - const lines = child.value.split(/\r\n|\n|\r/); - let lastNonEmptyLine = 0; - - for (let i = 0; i < lines.length; i++) { - if (lines[i].match(/[^ \t]/)) { - lastNonEmptyLine = i; - } - } - - let str = ""; - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - const isFirstLine = i === 0; - const isLastLine = i === lines.length - 1; - const isLastNonEmptyLine = i === lastNonEmptyLine; - let trimmedLine = line.replace(/\t/g, " "); - - if (!isFirstLine) { - trimmedLine = trimmedLine.replace(/^[ ]+/, ""); - } - - if (!isLastLine) { - trimmedLine = trimmedLine.replace(/[ ]+$/, ""); - } - - if (trimmedLine) { - if (!isLastNonEmptyLine) { - trimmedLine += " "; - } - - str += trimmedLine; - } - } - - if (str) args.push((0, _generated.stringLiteral)(str)); -} - -/***/ }), - -/***/ 56522: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = shallowEqual; - -function shallowEqual(actual, expected) { - const keys = Object.keys(expected); - - for (const key of keys) { - if (actual[key] !== expected[key]) { - return false; - } - } - - return true; -} - -/***/ }), - -/***/ 48072: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = buildMatchMemberExpression; - -var _matchesPattern = __nccwpck_require__(49234); - -function buildMatchMemberExpression(match, allowPartial) { - const parts = match.split("."); - return member => (0, _matchesPattern.default)(member, parts, allowPartial); -} - -/***/ }), - -/***/ 52047: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isArrayExpression = isArrayExpression; -exports.isAssignmentExpression = isAssignmentExpression; -exports.isBinaryExpression = isBinaryExpression; -exports.isInterpreterDirective = isInterpreterDirective; -exports.isDirective = isDirective; -exports.isDirectiveLiteral = isDirectiveLiteral; -exports.isBlockStatement = isBlockStatement; -exports.isBreakStatement = isBreakStatement; -exports.isCallExpression = isCallExpression; -exports.isCatchClause = isCatchClause; -exports.isConditionalExpression = isConditionalExpression; -exports.isContinueStatement = isContinueStatement; -exports.isDebuggerStatement = isDebuggerStatement; -exports.isDoWhileStatement = isDoWhileStatement; -exports.isEmptyStatement = isEmptyStatement; -exports.isExpressionStatement = isExpressionStatement; -exports.isFile = isFile; -exports.isForInStatement = isForInStatement; -exports.isForStatement = isForStatement; -exports.isFunctionDeclaration = isFunctionDeclaration; -exports.isFunctionExpression = isFunctionExpression; -exports.isIdentifier = isIdentifier; -exports.isIfStatement = isIfStatement; -exports.isLabeledStatement = isLabeledStatement; -exports.isStringLiteral = isStringLiteral; -exports.isNumericLiteral = isNumericLiteral; -exports.isNullLiteral = isNullLiteral; -exports.isBooleanLiteral = isBooleanLiteral; -exports.isRegExpLiteral = isRegExpLiteral; -exports.isLogicalExpression = isLogicalExpression; -exports.isMemberExpression = isMemberExpression; -exports.isNewExpression = isNewExpression; -exports.isProgram = isProgram; -exports.isObjectExpression = isObjectExpression; -exports.isObjectMethod = isObjectMethod; -exports.isObjectProperty = isObjectProperty; -exports.isRestElement = isRestElement; -exports.isReturnStatement = isReturnStatement; -exports.isSequenceExpression = isSequenceExpression; -exports.isParenthesizedExpression = isParenthesizedExpression; -exports.isSwitchCase = isSwitchCase; -exports.isSwitchStatement = isSwitchStatement; -exports.isThisExpression = isThisExpression; -exports.isThrowStatement = isThrowStatement; -exports.isTryStatement = isTryStatement; -exports.isUnaryExpression = isUnaryExpression; -exports.isUpdateExpression = isUpdateExpression; -exports.isVariableDeclaration = isVariableDeclaration; -exports.isVariableDeclarator = isVariableDeclarator; -exports.isWhileStatement = isWhileStatement; -exports.isWithStatement = isWithStatement; -exports.isAssignmentPattern = isAssignmentPattern; -exports.isArrayPattern = isArrayPattern; -exports.isArrowFunctionExpression = isArrowFunctionExpression; -exports.isClassBody = isClassBody; -exports.isClassExpression = isClassExpression; -exports.isClassDeclaration = isClassDeclaration; -exports.isExportAllDeclaration = isExportAllDeclaration; -exports.isExportDefaultDeclaration = isExportDefaultDeclaration; -exports.isExportNamedDeclaration = isExportNamedDeclaration; -exports.isExportSpecifier = isExportSpecifier; -exports.isForOfStatement = isForOfStatement; -exports.isImportDeclaration = isImportDeclaration; -exports.isImportDefaultSpecifier = isImportDefaultSpecifier; -exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier; -exports.isImportSpecifier = isImportSpecifier; -exports.isMetaProperty = isMetaProperty; -exports.isClassMethod = isClassMethod; -exports.isObjectPattern = isObjectPattern; -exports.isSpreadElement = isSpreadElement; -exports.isSuper = isSuper; -exports.isTaggedTemplateExpression = isTaggedTemplateExpression; -exports.isTemplateElement = isTemplateElement; -exports.isTemplateLiteral = isTemplateLiteral; -exports.isYieldExpression = isYieldExpression; -exports.isAwaitExpression = isAwaitExpression; -exports.isImport = isImport; -exports.isBigIntLiteral = isBigIntLiteral; -exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier; -exports.isOptionalMemberExpression = isOptionalMemberExpression; -exports.isOptionalCallExpression = isOptionalCallExpression; -exports.isClassProperty = isClassProperty; -exports.isClassPrivateProperty = isClassPrivateProperty; -exports.isClassPrivateMethod = isClassPrivateMethod; -exports.isPrivateName = isPrivateName; -exports.isAnyTypeAnnotation = isAnyTypeAnnotation; -exports.isArrayTypeAnnotation = isArrayTypeAnnotation; -exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation; -exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation; -exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation; -exports.isClassImplements = isClassImplements; -exports.isDeclareClass = isDeclareClass; -exports.isDeclareFunction = isDeclareFunction; -exports.isDeclareInterface = isDeclareInterface; -exports.isDeclareModule = isDeclareModule; -exports.isDeclareModuleExports = isDeclareModuleExports; -exports.isDeclareTypeAlias = isDeclareTypeAlias; -exports.isDeclareOpaqueType = isDeclareOpaqueType; -exports.isDeclareVariable = isDeclareVariable; -exports.isDeclareExportDeclaration = isDeclareExportDeclaration; -exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration; -exports.isDeclaredPredicate = isDeclaredPredicate; -exports.isExistsTypeAnnotation = isExistsTypeAnnotation; -exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation; -exports.isFunctionTypeParam = isFunctionTypeParam; -exports.isGenericTypeAnnotation = isGenericTypeAnnotation; -exports.isInferredPredicate = isInferredPredicate; -exports.isInterfaceExtends = isInterfaceExtends; -exports.isInterfaceDeclaration = isInterfaceDeclaration; -exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation; -exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation; -exports.isMixedTypeAnnotation = isMixedTypeAnnotation; -exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation; -exports.isNullableTypeAnnotation = isNullableTypeAnnotation; -exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation; -exports.isNumberTypeAnnotation = isNumberTypeAnnotation; -exports.isObjectTypeAnnotation = isObjectTypeAnnotation; -exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot; -exports.isObjectTypeCallProperty = isObjectTypeCallProperty; -exports.isObjectTypeIndexer = isObjectTypeIndexer; -exports.isObjectTypeProperty = isObjectTypeProperty; -exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty; -exports.isOpaqueType = isOpaqueType; -exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier; -exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation; -exports.isStringTypeAnnotation = isStringTypeAnnotation; -exports.isSymbolTypeAnnotation = isSymbolTypeAnnotation; -exports.isThisTypeAnnotation = isThisTypeAnnotation; -exports.isTupleTypeAnnotation = isTupleTypeAnnotation; -exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation; -exports.isTypeAlias = isTypeAlias; -exports.isTypeAnnotation = isTypeAnnotation; -exports.isTypeCastExpression = isTypeCastExpression; -exports.isTypeParameter = isTypeParameter; -exports.isTypeParameterDeclaration = isTypeParameterDeclaration; -exports.isTypeParameterInstantiation = isTypeParameterInstantiation; -exports.isUnionTypeAnnotation = isUnionTypeAnnotation; -exports.isVariance = isVariance; -exports.isVoidTypeAnnotation = isVoidTypeAnnotation; -exports.isEnumDeclaration = isEnumDeclaration; -exports.isEnumBooleanBody = isEnumBooleanBody; -exports.isEnumNumberBody = isEnumNumberBody; -exports.isEnumStringBody = isEnumStringBody; -exports.isEnumSymbolBody = isEnumSymbolBody; -exports.isEnumBooleanMember = isEnumBooleanMember; -exports.isEnumNumberMember = isEnumNumberMember; -exports.isEnumStringMember = isEnumStringMember; -exports.isEnumDefaultedMember = isEnumDefaultedMember; -exports.isIndexedAccessType = isIndexedAccessType; -exports.isOptionalIndexedAccessType = isOptionalIndexedAccessType; -exports.isJSXAttribute = isJSXAttribute; -exports.isJSXClosingElement = isJSXClosingElement; -exports.isJSXElement = isJSXElement; -exports.isJSXEmptyExpression = isJSXEmptyExpression; -exports.isJSXExpressionContainer = isJSXExpressionContainer; -exports.isJSXSpreadChild = isJSXSpreadChild; -exports.isJSXIdentifier = isJSXIdentifier; -exports.isJSXMemberExpression = isJSXMemberExpression; -exports.isJSXNamespacedName = isJSXNamespacedName; -exports.isJSXOpeningElement = isJSXOpeningElement; -exports.isJSXSpreadAttribute = isJSXSpreadAttribute; -exports.isJSXText = isJSXText; -exports.isJSXFragment = isJSXFragment; -exports.isJSXOpeningFragment = isJSXOpeningFragment; -exports.isJSXClosingFragment = isJSXClosingFragment; -exports.isNoop = isNoop; -exports.isPlaceholder = isPlaceholder; -exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier; -exports.isArgumentPlaceholder = isArgumentPlaceholder; -exports.isBindExpression = isBindExpression; -exports.isImportAttribute = isImportAttribute; -exports.isDecorator = isDecorator; -exports.isDoExpression = isDoExpression; -exports.isExportDefaultSpecifier = isExportDefaultSpecifier; -exports.isRecordExpression = isRecordExpression; -exports.isTupleExpression = isTupleExpression; -exports.isDecimalLiteral = isDecimalLiteral; -exports.isStaticBlock = isStaticBlock; -exports.isModuleExpression = isModuleExpression; -exports.isTopicReference = isTopicReference; -exports.isPipelineTopicExpression = isPipelineTopicExpression; -exports.isPipelineBareFunction = isPipelineBareFunction; -exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference; -exports.isTSParameterProperty = isTSParameterProperty; -exports.isTSDeclareFunction = isTSDeclareFunction; -exports.isTSDeclareMethod = isTSDeclareMethod; -exports.isTSQualifiedName = isTSQualifiedName; -exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration; -exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration; -exports.isTSPropertySignature = isTSPropertySignature; -exports.isTSMethodSignature = isTSMethodSignature; -exports.isTSIndexSignature = isTSIndexSignature; -exports.isTSAnyKeyword = isTSAnyKeyword; -exports.isTSBooleanKeyword = isTSBooleanKeyword; -exports.isTSBigIntKeyword = isTSBigIntKeyword; -exports.isTSIntrinsicKeyword = isTSIntrinsicKeyword; -exports.isTSNeverKeyword = isTSNeverKeyword; -exports.isTSNullKeyword = isTSNullKeyword; -exports.isTSNumberKeyword = isTSNumberKeyword; -exports.isTSObjectKeyword = isTSObjectKeyword; -exports.isTSStringKeyword = isTSStringKeyword; -exports.isTSSymbolKeyword = isTSSymbolKeyword; -exports.isTSUndefinedKeyword = isTSUndefinedKeyword; -exports.isTSUnknownKeyword = isTSUnknownKeyword; -exports.isTSVoidKeyword = isTSVoidKeyword; -exports.isTSThisType = isTSThisType; -exports.isTSFunctionType = isTSFunctionType; -exports.isTSConstructorType = isTSConstructorType; -exports.isTSTypeReference = isTSTypeReference; -exports.isTSTypePredicate = isTSTypePredicate; -exports.isTSTypeQuery = isTSTypeQuery; -exports.isTSTypeLiteral = isTSTypeLiteral; -exports.isTSArrayType = isTSArrayType; -exports.isTSTupleType = isTSTupleType; -exports.isTSOptionalType = isTSOptionalType; -exports.isTSRestType = isTSRestType; -exports.isTSNamedTupleMember = isTSNamedTupleMember; -exports.isTSUnionType = isTSUnionType; -exports.isTSIntersectionType = isTSIntersectionType; -exports.isTSConditionalType = isTSConditionalType; -exports.isTSInferType = isTSInferType; -exports.isTSParenthesizedType = isTSParenthesizedType; -exports.isTSTypeOperator = isTSTypeOperator; -exports.isTSIndexedAccessType = isTSIndexedAccessType; -exports.isTSMappedType = isTSMappedType; -exports.isTSLiteralType = isTSLiteralType; -exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments; -exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration; -exports.isTSInterfaceBody = isTSInterfaceBody; -exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration; -exports.isTSAsExpression = isTSAsExpression; -exports.isTSTypeAssertion = isTSTypeAssertion; -exports.isTSEnumDeclaration = isTSEnumDeclaration; -exports.isTSEnumMember = isTSEnumMember; -exports.isTSModuleDeclaration = isTSModuleDeclaration; -exports.isTSModuleBlock = isTSModuleBlock; -exports.isTSImportType = isTSImportType; -exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration; -exports.isTSExternalModuleReference = isTSExternalModuleReference; -exports.isTSNonNullExpression = isTSNonNullExpression; -exports.isTSExportAssignment = isTSExportAssignment; -exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration; -exports.isTSTypeAnnotation = isTSTypeAnnotation; -exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation; -exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration; -exports.isTSTypeParameter = isTSTypeParameter; -exports.isExpression = isExpression; -exports.isBinary = isBinary; -exports.isScopable = isScopable; -exports.isBlockParent = isBlockParent; -exports.isBlock = isBlock; -exports.isStatement = isStatement; -exports.isTerminatorless = isTerminatorless; -exports.isCompletionStatement = isCompletionStatement; -exports.isConditional = isConditional; -exports.isLoop = isLoop; -exports.isWhile = isWhile; -exports.isExpressionWrapper = isExpressionWrapper; -exports.isFor = isFor; -exports.isForXStatement = isForXStatement; -exports.isFunction = isFunction; -exports.isFunctionParent = isFunctionParent; -exports.isPureish = isPureish; -exports.isDeclaration = isDeclaration; -exports.isPatternLike = isPatternLike; -exports.isLVal = isLVal; -exports.isTSEntityName = isTSEntityName; -exports.isLiteral = isLiteral; -exports.isImmutable = isImmutable; -exports.isUserWhitespacable = isUserWhitespacable; -exports.isMethod = isMethod; -exports.isObjectMember = isObjectMember; -exports.isProperty = isProperty; -exports.isUnaryLike = isUnaryLike; -exports.isPattern = isPattern; -exports.isClass = isClass; -exports.isModuleDeclaration = isModuleDeclaration; -exports.isExportDeclaration = isExportDeclaration; -exports.isModuleSpecifier = isModuleSpecifier; -exports.isPrivate = isPrivate; -exports.isFlow = isFlow; -exports.isFlowType = isFlowType; -exports.isFlowBaseAnnotation = isFlowBaseAnnotation; -exports.isFlowDeclaration = isFlowDeclaration; -exports.isFlowPredicate = isFlowPredicate; -exports.isEnumBody = isEnumBody; -exports.isEnumMember = isEnumMember; -exports.isJSX = isJSX; -exports.isTSTypeElement = isTSTypeElement; -exports.isTSType = isTSType; -exports.isTSBaseType = isTSBaseType; -exports.isNumberLiteral = isNumberLiteral; -exports.isRegexLiteral = isRegexLiteral; -exports.isRestProperty = isRestProperty; -exports.isSpreadProperty = isSpreadProperty; - -var _shallowEqual = __nccwpck_require__(56522); - -function isArrayExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ArrayExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isAssignmentExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "AssignmentExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBinaryExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BinaryExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isInterpreterDirective(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "InterpreterDirective") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDirective(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Directive") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDirectiveLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DirectiveLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBlockStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BlockStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBreakStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BreakStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isCallExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "CallExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isCatchClause(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "CatchClause") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isConditionalExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ConditionalExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isContinueStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ContinueStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDebuggerStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DebuggerStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDoWhileStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DoWhileStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEmptyStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EmptyStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExpressionStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExpressionStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFile(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "File") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isForInStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ForInStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isForStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ForStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFunctionDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "FunctionDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFunctionExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "FunctionExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isIdentifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Identifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isIfStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "IfStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isLabeledStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "LabeledStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isStringLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "StringLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNumericLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NumericLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNullLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NullLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBooleanLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BooleanLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isRegExpLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "RegExpLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isLogicalExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "LogicalExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isMemberExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "MemberExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNewExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NewExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isProgram(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Program") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectMethod(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectMethod") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isRestElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "RestElement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isReturnStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ReturnStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSequenceExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "SequenceExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isParenthesizedExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ParenthesizedExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSwitchCase(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "SwitchCase") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSwitchStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "SwitchStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isThisExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ThisExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isThrowStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ThrowStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTryStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TryStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isUnaryExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "UnaryExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isUpdateExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "UpdateExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isVariableDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "VariableDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isVariableDeclarator(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "VariableDeclarator") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isWhileStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "WhileStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isWithStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "WithStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isAssignmentPattern(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "AssignmentPattern") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isArrayPattern(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ArrayPattern") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isArrowFunctionExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ArrowFunctionExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassBody") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportAllDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExportAllDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportDefaultDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExportDefaultDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportNamedDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExportNamedDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExportSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isForOfStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ForOfStatement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImportDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ImportDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImportDefaultSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ImportDefaultSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImportNamespaceSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ImportNamespaceSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImportSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ImportSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isMetaProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "MetaProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassMethod(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassMethod") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectPattern(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectPattern") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSpreadElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "SpreadElement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSuper(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Super") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTaggedTemplateExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TaggedTemplateExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTemplateElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TemplateElement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTemplateLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TemplateLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isYieldExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "YieldExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isAwaitExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "AwaitExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImport(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Import") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBigIntLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BigIntLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportNamespaceSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExportNamespaceSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isOptionalMemberExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "OptionalMemberExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isOptionalCallExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "OptionalCallExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassPrivateProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassPrivateProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassPrivateMethod(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassPrivateMethod") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPrivateName(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "PrivateName") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isAnyTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "AnyTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isArrayTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ArrayTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBooleanTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BooleanTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBooleanLiteralTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BooleanLiteralTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNullLiteralTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NullLiteralTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClassImplements(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ClassImplements") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareClass(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareClass") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareFunction(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareFunction") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareInterface(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareInterface") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareModule(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareModule") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareModuleExports(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareModuleExports") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareTypeAlias(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareTypeAlias") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareOpaqueType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareOpaqueType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareVariable(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareVariable") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareExportDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareExportDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclareExportAllDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclareExportAllDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclaredPredicate(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DeclaredPredicate") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExistsTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExistsTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFunctionTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "FunctionTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFunctionTypeParam(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "FunctionTypeParam") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isGenericTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "GenericTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isInferredPredicate(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "InferredPredicate") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isInterfaceExtends(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "InterfaceExtends") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isInterfaceDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "InterfaceDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isInterfaceTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "InterfaceTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isIntersectionTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "IntersectionTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isMixedTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "MixedTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEmptyTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EmptyTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNullableTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NullableTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNumberLiteralTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NumberLiteralTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNumberTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NumberTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectTypeInternalSlot(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectTypeInternalSlot") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectTypeCallProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectTypeCallProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectTypeIndexer(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectTypeIndexer") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectTypeProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectTypeProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectTypeSpreadProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ObjectTypeSpreadProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isOpaqueType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "OpaqueType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isQualifiedTypeIdentifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "QualifiedTypeIdentifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isStringLiteralTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "StringLiteralTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isStringTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "StringTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSymbolTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "SymbolTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isThisTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ThisTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTupleTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TupleTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeofTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeofTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeAlias(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeAlias") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeCastExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeCastExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeParameter(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeParameter") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeParameterDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeParameterDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTypeParameterInstantiation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TypeParameterInstantiation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isUnionTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "UnionTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isVariance(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Variance") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isVoidTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "VoidTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumBooleanBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumBooleanBody") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumNumberBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumNumberBody") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumStringBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumStringBody") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumSymbolBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumSymbolBody") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumBooleanMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumBooleanMember") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumNumberMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumNumberMember") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumStringMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumStringMember") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumDefaultedMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "EnumDefaultedMember") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isIndexedAccessType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "IndexedAccessType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isOptionalIndexedAccessType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "OptionalIndexedAccessType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXAttribute(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXAttribute") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXClosingElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXClosingElement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXElement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXEmptyExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXEmptyExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXExpressionContainer(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXExpressionContainer") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXSpreadChild(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXSpreadChild") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXIdentifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXIdentifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXMemberExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXMemberExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXNamespacedName(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXNamespacedName") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXOpeningElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXOpeningElement") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXSpreadAttribute(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXSpreadAttribute") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXText(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXText") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXFragment(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXFragment") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXOpeningFragment(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXOpeningFragment") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSXClosingFragment(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "JSXClosingFragment") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNoop(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Noop") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPlaceholder(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Placeholder") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isV8IntrinsicIdentifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "V8IntrinsicIdentifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isArgumentPlaceholder(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ArgumentPlaceholder") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBindExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "BindExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImportAttribute(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ImportAttribute") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDecorator(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "Decorator") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDoExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DoExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportDefaultSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ExportDefaultSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isRecordExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "RecordExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTupleExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TupleExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDecimalLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "DecimalLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isStaticBlock(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "StaticBlock") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isModuleExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "ModuleExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTopicReference(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TopicReference") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPipelineTopicExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "PipelineTopicExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPipelineBareFunction(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "PipelineBareFunction") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPipelinePrimaryTopicReference(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "PipelinePrimaryTopicReference") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSParameterProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSParameterProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSDeclareFunction(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSDeclareFunction") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSDeclareMethod(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSDeclareMethod") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSQualifiedName(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSQualifiedName") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSCallSignatureDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSCallSignatureDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSConstructSignatureDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSConstructSignatureDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSPropertySignature(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSPropertySignature") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSMethodSignature(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSMethodSignature") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSIndexSignature(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSIndexSignature") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSAnyKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSAnyKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSBooleanKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSBooleanKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSBigIntKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSBigIntKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSIntrinsicKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSIntrinsicKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSNeverKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSNeverKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSNullKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSNullKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSNumberKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSNumberKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSObjectKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSObjectKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSStringKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSStringKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSSymbolKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSSymbolKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSUndefinedKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSUndefinedKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSUnknownKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSUnknownKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSVoidKeyword(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSVoidKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSThisType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSThisType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSFunctionType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSFunctionType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSConstructorType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSConstructorType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeReference(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeReference") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypePredicate(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypePredicate") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeQuery(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeQuery") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSArrayType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSArrayType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTupleType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTupleType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSOptionalType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSOptionalType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSRestType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSRestType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSNamedTupleMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSNamedTupleMember") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSUnionType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSUnionType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSIntersectionType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSIntersectionType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSConditionalType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSConditionalType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSInferType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSInferType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSParenthesizedType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSParenthesizedType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeOperator(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeOperator") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSIndexedAccessType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSIndexedAccessType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSMappedType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSMappedType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSLiteralType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSLiteralType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSExpressionWithTypeArguments(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSExpressionWithTypeArguments") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSInterfaceDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSInterfaceDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSInterfaceBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSInterfaceBody") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeAliasDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeAliasDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSAsExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSAsExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeAssertion(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeAssertion") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSEnumDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSEnumDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSEnumMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSEnumMember") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSModuleDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSModuleDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSModuleBlock(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSModuleBlock") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSImportType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSImportType") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSImportEqualsDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSImportEqualsDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSExternalModuleReference(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSExternalModuleReference") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSNonNullExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSNonNullExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSExportAssignment(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSExportAssignment") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSNamespaceExportDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSNamespaceExportDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeAnnotation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeParameterInstantiation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeParameterInstantiation") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeParameterDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeParameterDeclaration") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeParameter(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "TSTypeParameter") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExpression(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "CallExpression" === nodeType || "ConditionalExpression" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "ObjectExpression" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "ThisExpression" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "MetaProperty" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType || "Import" === nodeType || "BigIntLiteral" === nodeType || "OptionalMemberExpression" === nodeType || "OptionalCallExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "BindExpression" === nodeType || "DoExpression" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || "DecimalLiteral" === nodeType || "ModuleExpression" === nodeType || "TopicReference" === nodeType || "PipelineTopicExpression" === nodeType || "PipelineBareFunction" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Expression" === node.expectedNode || "Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode)) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBinary(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BinaryExpression" === nodeType || "LogicalExpression" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isScopable(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "ClassDeclaration" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBlockParent(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isBlock(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BlockStatement" === nodeType || "Program" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BlockStatement" === nodeType || "BreakStatement" === nodeType || "ContinueStatement" === nodeType || "DebuggerStatement" === nodeType || "DoWhileStatement" === nodeType || "EmptyStatement" === nodeType || "ExpressionStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "IfStatement" === nodeType || "LabeledStatement" === nodeType || "ReturnStatement" === nodeType || "SwitchStatement" === nodeType || "ThrowStatement" === nodeType || "TryStatement" === nodeType || "VariableDeclaration" === nodeType || "WhileStatement" === nodeType || "WithStatement" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ForOfStatement" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "EnumDeclaration" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || nodeType === "Placeholder" && ("Statement" === node.expectedNode || "Declaration" === node.expectedNode || "BlockStatement" === node.expectedNode)) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTerminatorless(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isCompletionStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isConditional(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ConditionalExpression" === nodeType || "IfStatement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isLoop(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "WhileStatement" === nodeType || "ForOfStatement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isWhile(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("DoWhileStatement" === nodeType || "WhileStatement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExpressionWrapper(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ExpressionStatement" === nodeType || "ParenthesizedExpression" === nodeType || "TypeCastExpression" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFor(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ForInStatement" === nodeType || "ForStatement" === nodeType || "ForOfStatement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isForXStatement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ForInStatement" === nodeType || "ForOfStatement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFunction(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFunctionParent(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPureish(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "ArrowFunctionExpression" === nodeType || "BigIntLiteral" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("FunctionDeclaration" === nodeType || "VariableDeclaration" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "EnumDeclaration" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || nodeType === "Placeholder" && "Declaration" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPatternLike(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("Identifier" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isLVal(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("Identifier" === nodeType || "MemberExpression" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSParameterProperty" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSEntityName(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("Identifier" === nodeType || "TSQualifiedName" === nodeType || nodeType === "Placeholder" && "Identifier" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isLiteral(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "TemplateLiteral" === nodeType || "BigIntLiteral" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isImmutable(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "BigIntLiteral" === nodeType || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXOpeningElement" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isUserWhitespacable(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ObjectMethod" === nodeType || "ObjectProperty" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isMethod(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ObjectMethod" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isObjectMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ObjectMethod" === nodeType || "ObjectProperty" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isProperty(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ObjectProperty" === nodeType || "ClassProperty" === nodeType || "ClassPrivateProperty" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isUnaryLike(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("UnaryExpression" === nodeType || "SpreadElement" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPattern(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && "Pattern" === node.expectedNode) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isClass(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ClassExpression" === nodeType || "ClassDeclaration" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isModuleDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isExportDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isModuleSpecifier(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ExportSpecifier" === nodeType || "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || "ExportNamespaceSpecifier" === nodeType || "ExportDefaultSpecifier" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isPrivate(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("ClassPrivateProperty" === nodeType || "ClassPrivateMethod" === nodeType || "PrivateName" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFlow(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ClassImplements" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "DeclaredPredicate" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "FunctionTypeParam" === nodeType || "GenericTypeAnnotation" === nodeType || "InferredPredicate" === nodeType || "InterfaceExtends" === nodeType || "InterfaceDeclaration" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType || "OpaqueType" === nodeType || "QualifiedTypeIdentifier" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "TypeAlias" === nodeType || "TypeAnnotation" === nodeType || "TypeCastExpression" === nodeType || "TypeParameter" === nodeType || "TypeParameterDeclaration" === nodeType || "TypeParameterInstantiation" === nodeType || "UnionTypeAnnotation" === nodeType || "Variance" === nodeType || "VoidTypeAnnotation" === nodeType || "IndexedAccessType" === nodeType || "OptionalIndexedAccessType" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFlowType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "GenericTypeAnnotation" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "UnionTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType || "IndexedAccessType" === nodeType || "OptionalIndexedAccessType" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFlowBaseAnnotation(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("AnyTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFlowDeclaration(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isFlowPredicate(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("DeclaredPredicate" === nodeType || "InferredPredicate" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumBody(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("EnumBooleanBody" === nodeType || "EnumNumberBody" === nodeType || "EnumStringBody" === nodeType || "EnumSymbolBody" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isEnumMember(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("EnumBooleanMember" === nodeType || "EnumNumberMember" === nodeType || "EnumStringMember" === nodeType || "EnumDefaultedMember" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isJSX(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXEmptyExpression" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXIdentifier" === nodeType || "JSXMemberExpression" === nodeType || "JSXNamespacedName" === nodeType || "JSXOpeningElement" === nodeType || "JSXSpreadAttribute" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSTypeElement(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSImportType" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isTSBaseType(node, opts) { - if (!node) return false; - const nodeType = node.type; - - if ("TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSLiteralType" === nodeType) { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isNumberLiteral(node, opts) { - console.trace("The node type NumberLiteral has been renamed to NumericLiteral"); - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "NumberLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isRegexLiteral(node, opts) { - console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "RegexLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isRestProperty(node, opts) { - console.trace("The node type RestProperty has been renamed to RestElement"); - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "RestProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -function isSpreadProperty(node, opts) { - console.trace("The node type SpreadProperty has been renamed to SpreadElement"); - if (!node) return false; - const nodeType = node.type; - - if (nodeType === "SpreadProperty") { - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } - } - - return false; -} - -/***/ }), - -/***/ 31334: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = is; - -var _shallowEqual = __nccwpck_require__(56522); - -var _isType = __nccwpck_require__(90179); - -var _isPlaceholderType = __nccwpck_require__(2853); - -var _definitions = __nccwpck_require__(19090); - -function is(type, node, opts) { - if (!node) return false; - const matches = (0, _isType.default)(node.type, type); - - if (!matches) { - if (!opts && node.type === "Placeholder" && type in _definitions.FLIPPED_ALIAS_KEYS) { - return (0, _isPlaceholderType.default)(node.expectedNode, type); - } - - return false; - } - - if (typeof opts === "undefined") { - return true; - } else { - return (0, _shallowEqual.default)(node, opts); - } -} - -/***/ }), - -/***/ 71743: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isBinding; - -var _getBindingIdentifiers = __nccwpck_require__(80805); - -function isBinding(node, parent, grandparent) { - if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") { - return false; - } - - const keys = _getBindingIdentifiers.default.keys[parent.type]; - - if (keys) { - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const val = parent[key]; - - if (Array.isArray(val)) { - if (val.indexOf(node) >= 0) return true; - } else { - if (val === node) return true; - } - } - } - - return false; -} - -/***/ }), - -/***/ 64602: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isBlockScoped; - -var _generated = __nccwpck_require__(52047); - -var _isLet = __nccwpck_require__(44376); - -function isBlockScoped(node) { - return (0, _generated.isFunctionDeclaration)(node) || (0, _generated.isClassDeclaration)(node) || (0, _isLet.default)(node); -} - -/***/ }), - -/***/ 88817: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isImmutable; - -var _isType = __nccwpck_require__(90179); - -var _generated = __nccwpck_require__(52047); - -function isImmutable(node) { - if ((0, _isType.default)(node.type, "Immutable")) return true; - - if ((0, _generated.isIdentifier)(node)) { - if (node.name === "undefined") { - return true; - } else { - return false; - } - } - - return false; -} - -/***/ }), - -/***/ 44376: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isLet; - -var _generated = __nccwpck_require__(52047); - -var _constants = __nccwpck_require__(90514); - -function isLet(node) { - return (0, _generated.isVariableDeclaration)(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]); -} - -/***/ }), - -/***/ 46832: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isNode; - -var _definitions = __nccwpck_require__(19090); - -function isNode(node) { - return !!(node && _definitions.VISITOR_KEYS[node.type]); -} - -/***/ }), - -/***/ 31439: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isNodesEquivalent; - -var _definitions = __nccwpck_require__(19090); - -function isNodesEquivalent(a, b) { - if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) { - return a === b; - } - - if (a.type !== b.type) { - return false; - } - - const fields = Object.keys(_definitions.NODE_FIELDS[a.type] || a.type); - const visitorKeys = _definitions.VISITOR_KEYS[a.type]; - - for (const field of fields) { - if (typeof a[field] !== typeof b[field]) { - return false; - } - - if (a[field] == null && b[field] == null) { - continue; - } else if (a[field] == null || b[field] == null) { - return false; - } - - if (Array.isArray(a[field])) { - if (!Array.isArray(b[field])) { - return false; - } - - if (a[field].length !== b[field].length) { - return false; - } - - for (let i = 0; i < a[field].length; i++) { - if (!isNodesEquivalent(a[field][i], b[field][i])) { - return false; - } - } - - continue; - } - - if (typeof a[field] === "object" && !(visitorKeys != null && visitorKeys.includes(field))) { - for (const key of Object.keys(a[field])) { - if (a[field][key] !== b[field][key]) { - return false; - } - } - - continue; - } - - if (!isNodesEquivalent(a[field], b[field])) { - return false; - } - } - - return true; -} - -/***/ }), - -/***/ 2853: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isPlaceholderType; - -var _definitions = __nccwpck_require__(19090); - -function isPlaceholderType(placeholderType, targetType) { - if (placeholderType === targetType) return true; - const aliases = _definitions.PLACEHOLDERS_ALIAS[placeholderType]; - - if (aliases) { - for (const alias of aliases) { - if (targetType === alias) return true; - } - } - - return false; -} - -/***/ }), - -/***/ 20570: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isReferenced; - -function isReferenced(node, parent, grandparent) { - switch (parent.type) { - case "MemberExpression": - case "JSXMemberExpression": - case "OptionalMemberExpression": - if (parent.property === node) { - return !!parent.computed; - } - - return parent.object === node; - - case "VariableDeclarator": - return parent.init === node; - - case "ArrowFunctionExpression": - return parent.body === node; - - case "PrivateName": - return false; - - case "ClassMethod": - case "ClassPrivateMethod": - case "ObjectMethod": - if (parent.params.includes(node)) { - return false; - } - - case "ObjectProperty": - case "ClassProperty": - case "ClassPrivateProperty": - if (parent.key === node) { - return !!parent.computed; - } - - if (parent.value === node) { - return !grandparent || grandparent.type !== "ObjectPattern"; - } - - return true; - - case "ClassDeclaration": - case "ClassExpression": - return parent.superClass === node; - - case "AssignmentExpression": - return parent.right === node; - - case "AssignmentPattern": - return parent.right === node; - - case "LabeledStatement": - return false; - - case "CatchClause": - return false; - - case "RestElement": - return false; - - case "BreakStatement": - case "ContinueStatement": - return false; - - case "FunctionDeclaration": - case "FunctionExpression": - return false; - - case "ExportNamespaceSpecifier": - case "ExportDefaultSpecifier": - return false; - - case "ExportSpecifier": - if (grandparent != null && grandparent.source) { - return false; - } - - return parent.local === node; - - case "ImportDefaultSpecifier": - case "ImportNamespaceSpecifier": - case "ImportSpecifier": - return false; - - case "JSXAttribute": - return false; - - case "ObjectPattern": - case "ArrayPattern": - return false; - - case "MetaProperty": - return false; - - case "ObjectTypeProperty": - return parent.key !== node; - - case "TSEnumMember": - return parent.id !== node; - - case "TSPropertySignature": - if (parent.key === node) { - return !!parent.computed; - } - - return true; - } - - return true; -} - -/***/ }), - -/***/ 21748: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isScope; - -var _generated = __nccwpck_require__(52047); - -function isScope(node, parent) { - if ((0, _generated.isBlockStatement)(node) && ((0, _generated.isFunction)(parent) || (0, _generated.isCatchClause)(parent))) { - return false; - } - - if ((0, _generated.isPattern)(node) && ((0, _generated.isFunction)(parent) || (0, _generated.isCatchClause)(parent))) { - return true; - } - - return (0, _generated.isScopable)(node); -} - -/***/ }), - -/***/ 6152: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isSpecifierDefault; - -var _generated = __nccwpck_require__(52047); - -function isSpecifierDefault(specifier) { - return (0, _generated.isImportDefaultSpecifier)(specifier) || (0, _generated.isIdentifier)(specifier.imported || specifier.exported, { - name: "default" - }); -} - -/***/ }), - -/***/ 90179: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isType; - -var _definitions = __nccwpck_require__(19090); - -function isType(nodeType, targetType) { - if (nodeType === targetType) return true; - if (_definitions.ALIAS_KEYS[targetType]) return false; - const aliases = _definitions.FLIPPED_ALIAS_KEYS[targetType]; - - if (aliases) { - if (aliases[0] === nodeType) return true; - - for (const alias of aliases) { - if (nodeType === alias) return true; - } - } - - return false; -} - -/***/ }), - -/***/ 71684: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isValidES3Identifier; - -var _isValidIdentifier = __nccwpck_require__(98557); - -const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]); - -function isValidES3Identifier(name) { - return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name); -} - -/***/ }), - -/***/ 98557: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isValidIdentifier; - -var _helperValidatorIdentifier = __nccwpck_require__(49586); - -function isValidIdentifier(name, reserved = true) { - if (typeof name !== "string") return false; - - if (reserved) { - if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) { - return false; - } - } - - return (0, _helperValidatorIdentifier.isIdentifierName)(name); -} - -/***/ }), - -/***/ 49992: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isVar; - -var _generated = __nccwpck_require__(52047); - -var _constants = __nccwpck_require__(90514); - -function isVar(node) { - return (0, _generated.isVariableDeclaration)(node, { - kind: "var" - }) && !node[_constants.BLOCK_SCOPED_SYMBOL]; -} - -/***/ }), - -/***/ 49234: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = matchesPattern; - -var _generated = __nccwpck_require__(52047); - -function matchesPattern(member, match, allowPartial) { - if (!(0, _generated.isMemberExpression)(member)) return false; - const parts = Array.isArray(match) ? match : match.split("."); - const nodes = []; - let node; - - for (node = member; (0, _generated.isMemberExpression)(node); node = node.object) { - nodes.push(node.property); - } - - nodes.push(node); - if (nodes.length < parts.length) return false; - if (!allowPartial && nodes.length > parts.length) return false; - - for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) { - const node = nodes[j]; - let value; - - if ((0, _generated.isIdentifier)(node)) { - value = node.name; - } else if ((0, _generated.isStringLiteral)(node)) { - value = node.value; - } else if ((0, _generated.isThisExpression)(node)) { - value = "this"; - } else { - return false; - } - - if (parts[i] !== value) return false; - } - - return true; -} - -/***/ }), - -/***/ 31569: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = isCompatTag; - -function isCompatTag(tagName) { - return !!tagName && /^[a-z]/.test(tagName); -} - -/***/ }), - -/***/ 91982: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _buildMatchMemberExpression = __nccwpck_require__(48072); - -const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component"); -var _default = isReactComponent; -exports["default"] = _default; - -/***/ }), - -/***/ 4432: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = validate; -exports.validateField = validateField; -exports.validateChild = validateChild; - -var _definitions = __nccwpck_require__(19090); - -function validate(node, key, val) { - if (!node) return; - const fields = _definitions.NODE_FIELDS[node.type]; - if (!fields) return; - const field = fields[key]; - validateField(node, key, val, field); - validateChild(node, key, val); -} - -function validateField(node, key, val, field) { - if (!(field != null && field.validate)) return; - if (field.optional && val == null) return; - field.validate(node, key, val); -} - -function validateChild(node, key, val) { - if (val == null) return; - const validate = _definitions.NODE_PARENT_VALIDATIONS[val.type]; - if (!validate) return; - validate(node, key, val); -} - -/***/ }), - -/***/ 58826: -/***/ ((module) => { - -const IMPORT_REGEX = /^import\s/ -const EXPORT_REGEX = /^export\s/ -const EXPORT_DEFAULT_REGEX = /^export default\s/ -const STARTS_WITH_CAPITAL_LETTER_REGEX = /^[A-Z]/ -const EMPTY_NEWLINE = '\n\n' -const COMMENT_OPEN = '<!--' -const COMMENT_CLOSE = '-->' - -const isImport = text => IMPORT_REGEX.test(text) -const isExport = text => EXPORT_REGEX.test(text) -const isExportDefault = text => EXPORT_DEFAULT_REGEX.test(text) -const isImportOrExport = text => isImport(text) || isExport(text) - -const isComment = str => - str.startsWith(COMMENT_OPEN) && str.endsWith(COMMENT_CLOSE) - -const getCommentContents = str => - str.slice(COMMENT_OPEN.length, -COMMENT_CLOSE.length) - -const startsWithCapitalLetter = str => - STARTS_WITH_CAPITAL_LETTER_REGEX.test(str) - -const paramCase = string => - string - .replace(/([a-z0-9])([A-Z])/g, '$1-$2') - .replace(/([a-z])([0-9])/g, '$1-$2') - .toLowerCase() - -const toTemplateLiteral = text => { - const escaped = text - .replace(/\\(?!\$)/g, '\\\\') // Escape all "\" to avoid unwanted escaping in text nodes - // and ignore "\$" since it's already escaped and is common - // with prettier https://github.com/mdx-js/mdx/issues/606 - .replace(/`/g, '\\`') // Escape "`"" since - .replace(/(\\\$)/g, '\\$1') // Escape \$ so render it as it is - .replace(/(\\\$)(\{)/g, '\\$1\\$2') // Escape \${} so render it as it is - .replace(/\$\{/g, '\\${') // Escape ${} in text so that it doesn't eval - - return '{`' + escaped + '`}' -} - -module.exports.EMPTY_NEWLINE = EMPTY_NEWLINE -module.exports.isImport = isImport -module.exports.isExport = isExport -module.exports.isExportDefault = isExportDefault -module.exports.isImportOrExport = isImportOrExport -module.exports.startsWithCapitalLetter = startsWithCapitalLetter -module.exports.isComment = isComment -module.exports.getCommentContents = getCommentContents -module.exports.paramCase = paramCase -module.exports.toTemplateLiteral = toTemplateLiteral - - -/***/ }), - -/***/ 73741: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; -/* module decorator */ module = __nccwpck_require__.nmd(module); - -const colorConvert = __nccwpck_require__(42830); - -const wrapAnsi16 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${code + offset}m`; -}; - -const wrapAnsi256 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};5;${code}m`; -}; - -const wrapAnsi16m = (fn, offset) => function () { - const rgb = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; -}; - -function assembleStyles() { - const codes = new Map(); - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - // Bright color - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], - - // Bright color - bgBlackBright: [100, 49], - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49] - } - }; - - // Fix humans - styles.color.grey = styles.color.gray; - - for (const groupName of Object.keys(styles)) { - const group = styles[groupName]; - - for (const styleName of Object.keys(group)) { - const style = group[styleName]; - - styles[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m` - }; - - group[styleName] = styles[styleName]; - - codes.set(style[0], style[1]); - } - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - - Object.defineProperty(styles, 'codes', { - value: codes, - enumerable: false - }); - } - - const ansi2ansi = n => n; - const rgb2rgb = (r, g, b) => [r, g, b]; - - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; - - styles.color.ansi = { - ansi: wrapAnsi16(ansi2ansi, 0) - }; - styles.color.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 0) - }; - styles.color.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 0) - }; - - styles.bgColor.ansi = { - ansi: wrapAnsi16(ansi2ansi, 10) - }; - styles.bgColor.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 10) - }; - styles.bgColor.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 10) - }; - - for (let key of Object.keys(colorConvert)) { - if (typeof colorConvert[key] !== 'object') { - continue; - } - - const suite = colorConvert[key]; - - if (key === 'ansi16') { - key = 'ansi'; - } - - if ('ansi16' in suite) { - styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); - styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); - } - - if ('ansi256' in suite) { - styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); - styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); - } - - if ('rgb' in suite) { - styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); - styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); - } - } - - return styles; -} - -// Make the export immutable -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); - - -/***/ }), - -/***/ 58803: -/***/ ((module) => { - -"use strict"; - - -/* global SharedArrayBuffer, Atomics */ - -if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') { - const nil = new Int32Array(new SharedArrayBuffer(4)) - - function sleep (ms) { - // also filters out NaN, non-number types, including empty strings, but allows bigints - const valid = ms > 0 && ms < Infinity - if (valid === false) { - if (typeof ms !== 'number' && typeof ms !== 'bigint') { - throw TypeError('sleep: ms must be a number') - } - throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity') - } - - Atomics.wait(nil, 0, 0, Number(ms)) - } - module.exports = sleep -} else { - - function sleep (ms) { - // also filters out NaN, non-number types, including empty strings, but allows bigints - const valid = ms > 0 && ms < Infinity - if (valid === false) { - if (typeof ms !== 'number' && typeof ms !== 'bigint') { - throw TypeError('sleep: ms must be a number') - } - throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity') - } - const target = Date.now() + Number(ms) - while (target > Date.now()){} - } - - module.exports = sleep - -} - - -/***/ }), - -/***/ 2308: -/***/ ((module) => { - -"use strict"; - - -module.exports = bail - -function bail(err) { - if (err) { - throw err - } -} - - -/***/ }), - -/***/ 33772: -/***/ ((module) => { - -"use strict"; - - -module.exports = ccount - -function ccount(source, character) { - var value = String(source) - var count = 0 - var index - - if (typeof character !== 'string') { - throw new Error('Expected character') - } - - index = value.indexOf(character) - - while (index !== -1) { - count++ - index = value.indexOf(character, index + character.length) - } - - return count -} - - -/***/ }), - -/***/ 4215: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -const escapeStringRegexp = __nccwpck_require__(36003); -const ansiStyles = __nccwpck_require__(73741); -const stdoutColor = (__nccwpck_require__(30395).stdout); - -const template = __nccwpck_require__(23816); - -const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); - -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; - -// `color-convert` models to exclude from the Chalk API due to conflicts and such -const skipModels = new Set(['gray']); - -const styles = Object.create(null); - -function applyOptions(obj, options) { - options = options || {}; - - // Detect level if not set manually - const scLevel = stdoutColor ? stdoutColor.level : 0; - obj.level = options.level === undefined ? scLevel : options.level; - obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; -} - -function Chalk(options) { - // We check for this.template here since calling `chalk.constructor()` - // by itself will have a `this` of a previously constructed chalk object - if (!this || !(this instanceof Chalk) || this.template) { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = function () { - const args = [].slice.call(arguments); - return chalkTag.apply(null, [chalk.template].concat(args)); - }; - - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); - - chalk.template.constructor = Chalk; - - return chalk.template; - } - - applyOptions(this, options); -} - -// Use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001B[94m'; -} - -for (const key of Object.keys(ansiStyles)) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - styles[key] = { - get() { - const codes = ansiStyles[key]; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); - } - }; -} - -styles.visible = { - get() { - return build.call(this, this._styles || [], true, 'visible'); - } -}; - -ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); -for (const model of Object.keys(ansiStyles.color.ansi)) { - if (skipModels.has(model)) { - continue; - } - - styles[model] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.color.close, - closeRe: ansiStyles.color.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); -for (const model of Object.keys(ansiStyles.bgColor.ansi)) { - if (skipModels.has(model)) { - continue; - } - - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.bgColor.close, - closeRe: ansiStyles.bgColor.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -const proto = Object.defineProperties(() => {}, styles); - -function build(_styles, _empty, key) { - const builder = function () { - return applyStyle.apply(builder, arguments); - }; - - builder._styles = _styles; - builder._empty = _empty; - - const self = this; - - Object.defineProperty(builder, 'level', { - enumerable: true, - get() { - return self.level; - }, - set(level) { - self.level = level; - } - }); - - Object.defineProperty(builder, 'enabled', { - enumerable: true, - get() { - return self.enabled; - }, - set(enabled) { - self.enabled = enabled; - } - }); - - // See below for fix regarding invisible grey/dim combination on Windows - builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; - - // `__proto__` is used because we must return a function, but there is - // no way to create a function with a different prototype - builder.__proto__ = proto; // eslint-disable-line no-proto - - return builder; -} - -function applyStyle() { - // Support varags, but simply cast to string in case there's only one arg - const args = arguments; - const argsLen = args.length; - let str = String(arguments[0]); - - if (argsLen === 0) { - return ''; - } - - if (argsLen > 1) { - // Don't slice `arguments`, it prevents V8 optimizations - for (let a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!this.enabled || this.level <= 0 || !str) { - return this._empty ? '' : str; - } - - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - const originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && this.hasGrey) { - ansiStyles.dim.open = ''; - } - - for (const code of this._styles.slice().reverse()) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - - // Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS - // https://github.com/chalk/chalk/pull/92 - str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); - } - - // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue - ansiStyles.dim.open = originalDim; - - return str; -} - -function chalkTag(chalk, strings) { - if (!Array.isArray(strings)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - return [].slice.call(arguments, 1).join(' '); - } - - const args = [].slice.call(arguments, 2); - const parts = [strings.raw[0]]; - - for (let i = 1; i < strings.length; i++) { - parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); - parts.push(String(strings.raw[i])); - } - - return template(chalk, parts.join('')); -} - -Object.defineProperties(Chalk.prototype, styles); - -module.exports = Chalk(); // eslint-disable-line new-cap -module.exports.supportsColor = stdoutColor; -module.exports["default"] = module.exports; // For TypeScript - - -/***/ }), - -/***/ 23816: -/***/ ((module) => { - -"use strict"; - -const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; -const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; -const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; -const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; - -const ESCAPES = new Map([ - ['n', '\n'], - ['r', '\r'], - ['t', '\t'], - ['b', '\b'], - ['f', '\f'], - ['v', '\v'], - ['0', '\0'], - ['\\', '\\'], - ['e', '\u001B'], - ['a', '\u0007'] -]); - -function unescape(c) { - if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) { - return String.fromCharCode(parseInt(c.slice(1), 16)); - } - - return ESCAPES.get(c) || c; -} - -function parseArguments(name, args) { - const results = []; - const chunks = args.trim().split(/\s*,\s*/g); - let matches; - - for (const chunk of chunks) { - if (!isNaN(chunk)) { - results.push(Number(chunk)); - } else if ((matches = chunk.match(STRING_REGEX))) { - results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr)); - } else { - throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); - } - } - - return results; -} - -function parseStyle(style) { - STYLE_REGEX.lastIndex = 0; - - const results = []; - let matches; - - while ((matches = STYLE_REGEX.exec(style)) !== null) { - const name = matches[1]; - - if (matches[2]) { - const args = parseArguments(name, matches[2]); - results.push([name].concat(args)); - } else { - results.push([name]); - } - } - - return results; -} - -function buildStyle(chalk, styles) { - const enabled = {}; - - for (const layer of styles) { - for (const style of layer.styles) { - enabled[style[0]] = layer.inverse ? null : style.slice(1); - } - } - - let current = chalk; - for (const styleName of Object.keys(enabled)) { - if (Array.isArray(enabled[styleName])) { - if (!(styleName in current)) { - throw new Error(`Unknown Chalk style: ${styleName}`); - } - - if (enabled[styleName].length > 0) { - current = current[styleName].apply(current, enabled[styleName]); - } else { - current = current[styleName]; - } - } - } - - return current; -} - -module.exports = (chalk, tmp) => { - const styles = []; - const chunks = []; - let chunk = []; - - // eslint-disable-next-line max-params - tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { - if (escapeChar) { - chunk.push(unescape(escapeChar)); - } else if (style) { - const str = chunk.join(''); - chunk = []; - chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str)); - styles.push({inverse, styles: parseStyle(style)}); - } else if (close) { - if (styles.length === 0) { - throw new Error('Found extraneous } in Chalk template literal'); - } - - chunks.push(buildStyle(chalk, styles)(chunk.join(''))); - chunk = []; - styles.pop(); - } else { - chunk.push(chr); - } - }); - - chunks.push(chunk.join('')); - - if (styles.length > 0) { - const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; - throw new Error(errMsg); - } - - return chunks.join(''); -}; - - -/***/ }), - -/***/ 93764: -/***/ ((module) => { - -"use strict"; - - -module.exports = collapse - -// `collapse(' \t\nbar \nbaz\t') // ' bar baz '` -function collapse(value) { - return String(value).replace(/\s+/g, ' ') -} - - -/***/ }), - -/***/ 9598: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -/* MIT license */ -var cssKeywords = __nccwpck_require__(39407); - -// NOTE: conversions should only return primitive values (i.e. arrays, or -// values that give correct `typeof` results). -// do not use box values types (i.e. Number(), String(), etc.) - -var reverseKeywords = {}; -for (var key in cssKeywords) { - if (cssKeywords.hasOwnProperty(key)) { - reverseKeywords[cssKeywords[key]] = key; - } -} - -var convert = module.exports = { - rgb: {channels: 3, labels: 'rgb'}, - hsl: {channels: 3, labels: 'hsl'}, - hsv: {channels: 3, labels: 'hsv'}, - hwb: {channels: 3, labels: 'hwb'}, - cmyk: {channels: 4, labels: 'cmyk'}, - xyz: {channels: 3, labels: 'xyz'}, - lab: {channels: 3, labels: 'lab'}, - lch: {channels: 3, labels: 'lch'}, - hex: {channels: 1, labels: ['hex']}, - keyword: {channels: 1, labels: ['keyword']}, - ansi16: {channels: 1, labels: ['ansi16']}, - ansi256: {channels: 1, labels: ['ansi256']}, - hcg: {channels: 3, labels: ['h', 'c', 'g']}, - apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, - gray: {channels: 1, labels: ['gray']} -}; - -// hide .channels and .labels properties -for (var model in convert) { - if (convert.hasOwnProperty(model)) { - if (!('channels' in convert[model])) { - throw new Error('missing channels property: ' + model); - } - - if (!('labels' in convert[model])) { - throw new Error('missing channel labels property: ' + model); - } - - if (convert[model].labels.length !== convert[model].channels) { - throw new Error('channel and label counts mismatch: ' + model); - } - - var channels = convert[model].channels; - var labels = convert[model].labels; - delete convert[model].channels; - delete convert[model].labels; - Object.defineProperty(convert[model], 'channels', {value: channels}); - Object.defineProperty(convert[model], 'labels', {value: labels}); - } -} - -convert.rgb.hsl = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var delta = max - min; - var h; - var s; - var l; - - if (max === min) { - h = 0; - } else if (r === max) { - h = (g - b) / delta; - } else if (g === max) { - h = 2 + (b - r) / delta; - } else if (b === max) { - h = 4 + (r - g) / delta; - } - - h = Math.min(h * 60, 360); - - if (h < 0) { - h += 360; - } - - l = (min + max) / 2; - - if (max === min) { - s = 0; - } else if (l <= 0.5) { - s = delta / (max + min); - } else { - s = delta / (2 - max - min); - } - - return [h, s * 100, l * 100]; -}; - -convert.rgb.hsv = function (rgb) { - var rdif; - var gdif; - var bdif; - var h; - var s; - - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var v = Math.max(r, g, b); - var diff = v - Math.min(r, g, b); - var diffc = function (c) { - return (v - c) / 6 / diff + 1 / 2; - }; - - if (diff === 0) { - h = s = 0; - } else { - s = diff / v; - rdif = diffc(r); - gdif = diffc(g); - bdif = diffc(b); - - if (r === v) { - h = bdif - gdif; - } else if (g === v) { - h = (1 / 3) + rdif - bdif; - } else if (b === v) { - h = (2 / 3) + gdif - rdif; - } - if (h < 0) { - h += 1; - } else if (h > 1) { - h -= 1; - } - } - - return [ - h * 360, - s * 100, - v * 100 - ]; -}; - -convert.rgb.hwb = function (rgb) { - var r = rgb[0]; - var g = rgb[1]; - var b = rgb[2]; - var h = convert.rgb.hsl(rgb)[0]; - var w = 1 / 255 * Math.min(r, Math.min(g, b)); - - b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); - - return [h, w * 100, b * 100]; -}; - -convert.rgb.cmyk = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var c; - var m; - var y; - var k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - - return [c * 100, m * 100, y * 100, k * 100]; -}; - -/** - * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance - * */ -function comparativeDistance(x, y) { - return ( - Math.pow(x[0] - y[0], 2) + - Math.pow(x[1] - y[1], 2) + - Math.pow(x[2] - y[2], 2) - ); -} - -convert.rgb.keyword = function (rgb) { - var reversed = reverseKeywords[rgb]; - if (reversed) { - return reversed; - } - - var currentClosestDistance = Infinity; - var currentClosestKeyword; - - for (var keyword in cssKeywords) { - if (cssKeywords.hasOwnProperty(keyword)) { - var value = cssKeywords[keyword]; - - // Compute comparative distance - var distance = comparativeDistance(rgb, value); - - // Check if its less, if so set as closest - if (distance < currentClosestDistance) { - currentClosestDistance = distance; - currentClosestKeyword = keyword; - } - } - } - - return currentClosestKeyword; -}; - -convert.keyword.rgb = function (keyword) { - return cssKeywords[keyword]; -}; - -convert.rgb.xyz = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - - return [x * 100, y * 100, z * 100]; -}; - -convert.rgb.lab = function (rgb) { - var xyz = convert.rgb.xyz(rgb); - var x = xyz[0]; - var y = xyz[1]; - var z = xyz[2]; - var l; - var a; - var b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -}; - -convert.hsl.rgb = function (hsl) { - var h = hsl[0] / 360; - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var t1; - var t2; - var t3; - var rgb; - var val; - - if (s === 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) { - t2 = l * (1 + s); - } else { - t2 = l + s - l * s; - } - - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * -(i - 1); - if (t3 < 0) { - t3++; - } - if (t3 > 1) { - t3--; - } - - if (6 * t3 < 1) { - val = t1 + (t2 - t1) * 6 * t3; - } else if (2 * t3 < 1) { - val = t2; - } else if (3 * t3 < 2) { - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - } else { - val = t1; - } - - rgb[i] = val * 255; - } - - return rgb; -}; - -convert.hsl.hsv = function (hsl) { - var h = hsl[0]; - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var smin = s; - var lmin = Math.max(l, 0.01); - var sv; - var v; - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - smin *= lmin <= 1 ? lmin : 2 - lmin; - v = (l + s) / 2; - sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); - - return [h, sv * 100, v * 100]; -}; - -convert.hsv.rgb = function (hsv) { - var h = hsv[0] / 60; - var s = hsv[1] / 100; - var v = hsv[2] / 100; - var hi = Math.floor(h) % 6; - - var f = h - Math.floor(h); - var p = 255 * v * (1 - s); - var q = 255 * v * (1 - (s * f)); - var t = 255 * v * (1 - (s * (1 - f))); - v *= 255; - - switch (hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -}; - -convert.hsv.hsl = function (hsv) { - var h = hsv[0]; - var s = hsv[1] / 100; - var v = hsv[2] / 100; - var vmin = Math.max(v, 0.01); - var lmin; - var sl; - var l; - - l = (2 - s) * v; - lmin = (2 - s) * vmin; - sl = s * vmin; - sl /= (lmin <= 1) ? lmin : 2 - lmin; - sl = sl || 0; - l /= 2; - - return [h, sl * 100, l * 100]; -}; - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -convert.hwb.rgb = function (hwb) { - var h = hwb[0] / 360; - var wh = hwb[1] / 100; - var bl = hwb[2] / 100; - var ratio = wh + bl; - var i; - var v; - var f; - var n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - - if ((i & 0x01) !== 0) { - f = 1 - f; - } - - n = wh + f * (v - wh); // linear interpolation - - var r; - var g; - var b; - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; -}; - -convert.cmyk.rgb = function (cmyk) { - var c = cmyk[0] / 100; - var m = cmyk[1] / 100; - var y = cmyk[2] / 100; - var k = cmyk[3] / 100; - var r; - var g; - var b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - - return [r * 255, g * 255, b * 255]; -}; - -convert.xyz.rgb = function (xyz) { - var x = xyz[0] / 100; - var y = xyz[1] / 100; - var z = xyz[2] / 100; - var r; - var g; - var b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - - // assume sRGB - r = r > 0.0031308 - ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r * 12.92; - - g = g > 0.0031308 - ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g * 12.92; - - b = b > 0.0031308 - ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b * 12.92; - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - - return [r * 255, g * 255, b * 255]; -}; - -convert.xyz.lab = function (xyz) { - var x = xyz[0]; - var y = xyz[1]; - var z = xyz[2]; - var l; - var a; - var b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -}; - -convert.lab.xyz = function (lab) { - var l = lab[0]; - var a = lab[1]; - var b = lab[2]; - var x; - var y; - var z; - - y = (l + 16) / 116; - x = a / 500 + y; - z = y - b / 200; - - var y2 = Math.pow(y, 3); - var x2 = Math.pow(x, 3); - var z2 = Math.pow(z, 3); - y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; - x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; - z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; - - x *= 95.047; - y *= 100; - z *= 108.883; - - return [x, y, z]; -}; - -convert.lab.lch = function (lab) { - var l = lab[0]; - var a = lab[1]; - var b = lab[2]; - var hr; - var h; - var c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - - if (h < 0) { - h += 360; - } - - c = Math.sqrt(a * a + b * b); - - return [l, c, h]; -}; - -convert.lch.lab = function (lch) { - var l = lch[0]; - var c = lch[1]; - var h = lch[2]; - var a; - var b; - var hr; - - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - - return [l, a, b]; -}; - -convert.rgb.ansi16 = function (args) { - var r = args[0]; - var g = args[1]; - var b = args[2]; - var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization - - value = Math.round(value / 50); - - if (value === 0) { - return 30; - } - - var ansi = 30 - + ((Math.round(b / 255) << 2) - | (Math.round(g / 255) << 1) - | Math.round(r / 255)); - - if (value === 2) { - ansi += 60; - } - - return ansi; -}; - -convert.hsv.ansi16 = function (args) { - // optimization here; we already know the value and don't need to get - // it converted for us. - return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); -}; - -convert.rgb.ansi256 = function (args) { - var r = args[0]; - var g = args[1]; - var b = args[2]; - - // we use the extended greyscale palette here, with the exception of - // black and white. normal palette only has 4 greyscale shades. - if (r === g && g === b) { - if (r < 8) { - return 16; - } - - if (r > 248) { - return 231; - } - - return Math.round(((r - 8) / 247) * 24) + 232; - } - - var ansi = 16 - + (36 * Math.round(r / 255 * 5)) - + (6 * Math.round(g / 255 * 5)) - + Math.round(b / 255 * 5); - - return ansi; -}; - -convert.ansi16.rgb = function (args) { - var color = args % 10; - - // handle greyscale - if (color === 0 || color === 7) { - if (args > 50) { - color += 3.5; - } - - color = color / 10.5 * 255; - - return [color, color, color]; - } - - var mult = (~~(args > 50) + 1) * 0.5; - var r = ((color & 1) * mult) * 255; - var g = (((color >> 1) & 1) * mult) * 255; - var b = (((color >> 2) & 1) * mult) * 255; - - return [r, g, b]; -}; - -convert.ansi256.rgb = function (args) { - // handle greyscale - if (args >= 232) { - var c = (args - 232) * 10 + 8; - return [c, c, c]; - } - - args -= 16; - - var rem; - var r = Math.floor(args / 36) / 5 * 255; - var g = Math.floor((rem = args % 36) / 6) / 5 * 255; - var b = (rem % 6) / 5 * 255; - - return [r, g, b]; -}; - -convert.rgb.hex = function (args) { - var integer = ((Math.round(args[0]) & 0xFF) << 16) - + ((Math.round(args[1]) & 0xFF) << 8) - + (Math.round(args[2]) & 0xFF); - - var string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; - -convert.hex.rgb = function (args) { - var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); - if (!match) { - return [0, 0, 0]; - } - - var colorString = match[0]; - - if (match[0].length === 3) { - colorString = colorString.split('').map(function (char) { - return char + char; - }).join(''); - } - - var integer = parseInt(colorString, 16); - var r = (integer >> 16) & 0xFF; - var g = (integer >> 8) & 0xFF; - var b = integer & 0xFF; - - return [r, g, b]; -}; - -convert.rgb.hcg = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var max = Math.max(Math.max(r, g), b); - var min = Math.min(Math.min(r, g), b); - var chroma = (max - min); - var grayscale; - var hue; - - if (chroma < 1) { - grayscale = min / (1 - chroma); - } else { - grayscale = 0; - } - - if (chroma <= 0) { - hue = 0; - } else - if (max === r) { - hue = ((g - b) / chroma) % 6; - } else - if (max === g) { - hue = 2 + (b - r) / chroma; - } else { - hue = 4 + (r - g) / chroma + 4; - } - - hue /= 6; - hue %= 1; - - return [hue * 360, chroma * 100, grayscale * 100]; -}; - -convert.hsl.hcg = function (hsl) { - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var c = 1; - var f = 0; - - if (l < 0.5) { - c = 2.0 * s * l; - } else { - c = 2.0 * s * (1.0 - l); - } - - if (c < 1.0) { - f = (l - 0.5 * c) / (1.0 - c); - } - - return [hsl[0], c * 100, f * 100]; -}; - -convert.hsv.hcg = function (hsv) { - var s = hsv[1] / 100; - var v = hsv[2] / 100; - - var c = s * v; - var f = 0; - - if (c < 1.0) { - f = (v - c) / (1 - c); - } - - return [hsv[0], c * 100, f * 100]; -}; - -convert.hcg.rgb = function (hcg) { - var h = hcg[0] / 360; - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - if (c === 0.0) { - return [g * 255, g * 255, g * 255]; - } - - var pure = [0, 0, 0]; - var hi = (h % 1) * 6; - var v = hi % 1; - var w = 1 - v; - var mg = 0; - - switch (Math.floor(hi)) { - case 0: - pure[0] = 1; pure[1] = v; pure[2] = 0; break; - case 1: - pure[0] = w; pure[1] = 1; pure[2] = 0; break; - case 2: - pure[0] = 0; pure[1] = 1; pure[2] = v; break; - case 3: - pure[0] = 0; pure[1] = w; pure[2] = 1; break; - case 4: - pure[0] = v; pure[1] = 0; pure[2] = 1; break; - default: - pure[0] = 1; pure[1] = 0; pure[2] = w; - } - - mg = (1.0 - c) * g; - - return [ - (c * pure[0] + mg) * 255, - (c * pure[1] + mg) * 255, - (c * pure[2] + mg) * 255 - ]; -}; - -convert.hcg.hsv = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - var v = c + g * (1.0 - c); - var f = 0; - - if (v > 0.0) { - f = c / v; - } - - return [hcg[0], f * 100, v * 100]; -}; - -convert.hcg.hsl = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - var l = g * (1.0 - c) + 0.5 * c; - var s = 0; - - if (l > 0.0 && l < 0.5) { - s = c / (2 * l); - } else - if (l >= 0.5 && l < 1.0) { - s = c / (2 * (1 - l)); - } - - return [hcg[0], s * 100, l * 100]; -}; - -convert.hcg.hwb = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - var v = c + g * (1.0 - c); - return [hcg[0], (v - c) * 100, (1 - v) * 100]; -}; - -convert.hwb.hcg = function (hwb) { - var w = hwb[1] / 100; - var b = hwb[2] / 100; - var v = 1 - b; - var c = v - w; - var g = 0; - - if (c < 1) { - g = (v - c) / (1 - c); - } - - return [hwb[0], c * 100, g * 100]; -}; - -convert.apple.rgb = function (apple) { - return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; -}; - -convert.rgb.apple = function (rgb) { - return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; -}; - -convert.gray.rgb = function (args) { - return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; -}; - -convert.gray.hsl = convert.gray.hsv = function (args) { - return [0, 0, args[0]]; -}; - -convert.gray.hwb = function (gray) { - return [0, 100, gray[0]]; -}; - -convert.gray.cmyk = function (gray) { - return [0, 0, 0, gray[0]]; -}; - -convert.gray.lab = function (gray) { - return [gray[0], 0, 0]; -}; - -convert.gray.hex = function (gray) { - var val = Math.round(gray[0] / 100 * 255) & 0xFF; - var integer = (val << 16) + (val << 8) + val; - - var string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; - -convert.rgb.gray = function (rgb) { - var val = (rgb[0] + rgb[1] + rgb[2]) / 3; - return [val / 255 * 100]; -}; - - -/***/ }), - -/***/ 42830: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var conversions = __nccwpck_require__(9598); -var route = __nccwpck_require__(95180); - -var convert = {}; - -var models = Object.keys(conversions); - -function wrapRaw(fn) { - var wrappedFn = function (args) { - if (args === undefined || args === null) { - return args; - } - - if (arguments.length > 1) { - args = Array.prototype.slice.call(arguments); - } - - return fn(args); - }; - - // preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } - - return wrappedFn; -} - -function wrapRounded(fn) { - var wrappedFn = function (args) { - if (args === undefined || args === null) { - return args; - } - - if (arguments.length > 1) { - args = Array.prototype.slice.call(arguments); - } - - var result = fn(args); - - // we're assuming the result is an array here. - // see notice in conversions.js; don't use box types - // in conversion functions. - if (typeof result === 'object') { - for (var len = result.length, i = 0; i < len; i++) { - result[i] = Math.round(result[i]); - } - } - - return result; - }; - - // preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } - - return wrappedFn; -} - -models.forEach(function (fromModel) { - convert[fromModel] = {}; - - Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); - Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); - - var routes = route(fromModel); - var routeModels = Object.keys(routes); - - routeModels.forEach(function (toModel) { - var fn = routes[toModel]; - - convert[fromModel][toModel] = wrapRounded(fn); - convert[fromModel][toModel].raw = wrapRaw(fn); - }); -}); - -module.exports = convert; - - -/***/ }), - -/***/ 95180: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var conversions = __nccwpck_require__(9598); - -/* - this function routes a model to all other models. - - all functions that are routed have a property `.conversion` attached - to the returned synthetic function. This property is an array - of strings, each with the steps in between the 'from' and 'to' - color models (inclusive). - - conversions that are not possible simply are not included. -*/ - -function buildGraph() { - var graph = {}; - // https://jsperf.com/object-keys-vs-for-in-with-closure/3 - var models = Object.keys(conversions); - - for (var len = models.length, i = 0; i < len; i++) { - graph[models[i]] = { - // http://jsperf.com/1-vs-infinity - // micro-opt, but this is simple. - distance: -1, - parent: null - }; - } - - return graph; -} - -// https://en.wikipedia.org/wiki/Breadth-first_search -function deriveBFS(fromModel) { - var graph = buildGraph(); - var queue = [fromModel]; // unshift -> queue -> pop - - graph[fromModel].distance = 0; - - while (queue.length) { - var current = queue.pop(); - var adjacents = Object.keys(conversions[current]); - - for (var len = adjacents.length, i = 0; i < len; i++) { - var adjacent = adjacents[i]; - var node = graph[adjacent]; - - if (node.distance === -1) { - node.distance = graph[current].distance + 1; - node.parent = current; - queue.unshift(adjacent); - } - } - } - - return graph; -} - -function link(from, to) { - return function (args) { - return to(from(args)); - }; -} - -function wrapConversion(toModel, graph) { - var path = [graph[toModel].parent, toModel]; - var fn = conversions[graph[toModel].parent][toModel]; - - var cur = graph[toModel].parent; - while (graph[cur].parent) { - path.unshift(graph[cur].parent); - fn = link(conversions[graph[cur].parent][cur], fn); - cur = graph[cur].parent; - } - - fn.conversion = path; - return fn; -} - -module.exports = function (fromModel) { - var graph = deriveBFS(fromModel); - var conversion = {}; - - var models = Object.keys(graph); - for (var len = models.length, i = 0; i < len; i++) { - var toModel = models[i]; - var node = graph[toModel]; - - if (node.parent === null) { - // no possible conversion, or this node is the source model. - continue; - } - - conversion[toModel] = wrapConversion(toModel, graph); - } - - return conversion; -}; - - - -/***/ }), - -/***/ 39407: -/***/ ((module) => { - -"use strict"; - - -module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; - - -/***/ }), - -/***/ 12270: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -var fs = __nccwpck_require__(57147); -var path = __nccwpck_require__(71017); -var SafeBuffer = __nccwpck_require__(53118); - -Object.defineProperty(exports, "commentRegex", ({ - get: function getCommentRegex () { - return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg; - } -})); - -Object.defineProperty(exports, "mapFileCommentRegex", ({ - get: function getMapFileCommentRegex () { - // Matches sourceMappingURL in either // or /* comment styles. - return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg; - } -})); - - -function decodeBase64(base64) { - return (SafeBuffer.Buffer.from(base64, 'base64') || "").toString(); -} - -function stripComment(sm) { - return sm.split(',').pop(); -} - -function readFromFileMap(sm, dir) { - // NOTE: this will only work on the server since it attempts to read the map file - - var r = exports.mapFileCommentRegex.exec(sm); - - // for some odd reason //# .. captures in 1 and /* .. */ in 2 - var filename = r[1] || r[2]; - var filepath = path.resolve(dir, filename); - - try { - return fs.readFileSync(filepath, 'utf8'); - } catch (e) { - throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e); - } -} - -function Converter (sm, opts) { - opts = opts || {}; - - if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir); - if (opts.hasComment) sm = stripComment(sm); - if (opts.isEncoded) sm = decodeBase64(sm); - if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm); - - this.sourcemap = sm; -} - -Converter.prototype.toJSON = function (space) { - return JSON.stringify(this.sourcemap, null, space); -}; - -Converter.prototype.toBase64 = function () { - var json = this.toJSON(); - return (SafeBuffer.Buffer.from(json, 'utf8') || "").toString('base64'); -}; - -Converter.prototype.toComment = function (options) { - var base64 = this.toBase64(); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; -}; - -// returns copy instead of original -Converter.prototype.toObject = function () { - return JSON.parse(this.toJSON()); -}; - -Converter.prototype.addProperty = function (key, value) { - if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead'); - return this.setProperty(key, value); -}; - -Converter.prototype.setProperty = function (key, value) { - this.sourcemap[key] = value; - return this; -}; - -Converter.prototype.getProperty = function (key) { - return this.sourcemap[key]; -}; - -exports.fromObject = function (obj) { - return new Converter(obj); -}; - -exports.fromJSON = function (json) { - return new Converter(json, { isJSON: true }); -}; - -exports.fromBase64 = function (base64) { - return new Converter(base64, { isEncoded: true }); -}; - -exports.fromComment = function (comment) { - comment = comment - .replace(/^\/\*/g, '//') - .replace(/\*\/$/g, ''); - - return new Converter(comment, { isEncoded: true, hasComment: true }); -}; - -exports.fromMapFileComment = function (comment, dir) { - return new Converter(comment, { commentFileDir: dir, isFileComment: true, isJSON: true }); -}; - -// Finds last sourcemap comment in file or returns null if none was found -exports.fromSource = function (content) { - var m = content.match(exports.commentRegex); - return m ? exports.fromComment(m.pop()) : null; -}; - -// Finds last sourcemap comment in file or returns null if none was found -exports.fromMapFileSource = function (content, dir) { - var m = content.match(exports.mapFileCommentRegex); - return m ? exports.fromMapFileComment(m.pop(), dir) : null; -}; - -exports.removeComments = function (src) { - return src.replace(exports.commentRegex, ''); -}; - -exports.removeMapFileComments = function (src) { - return src.replace(exports.mapFileCommentRegex, ''); -}; - -exports.generateMapFileComment = function (file, options) { - var data = 'sourceMappingURL=' + file; - return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; -}; - - -/***/ }), - -/***/ 74598: -/***/ ((module, exports) => { - -"use strict"; -function _typeof(obj){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}return _typeof(obj)}(function(global){var _arguments=arguments;var dateFormat=function(){var token=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|W{1,2}|[LlopSZN]|"[^"]*"|'[^']*'/g;var timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g;var timezoneClip=/[^-+\dA-Z]/g;return function(date,mask,utc,gmt){if(_arguments.length===1&&kindOf(date)==="string"&&!/\d/.test(date)){mask=date;date=undefined}date=date||date===0?date:new Date;if(!(date instanceof Date)){date=new Date(date)}if(isNaN(date)){throw TypeError("Invalid date")}mask=String(dateFormat.masks[mask]||mask||dateFormat.masks["default"]);var maskSlice=mask.slice(0,4);if(maskSlice==="UTC:"||maskSlice==="GMT:"){mask=mask.slice(4);utc=true;if(maskSlice==="GMT:"){gmt=true}}var _=function _(){return utc?"getUTC":"get"};var _d=function d(){return date[_()+"Date"]()};var D=function D(){return date[_()+"Day"]()};var _m=function m(){return date[_()+"Month"]()};var y=function y(){return date[_()+"FullYear"]()};var _H=function H(){return date[_()+"Hours"]()};var _M=function M(){return date[_()+"Minutes"]()};var _s=function s(){return date[_()+"Seconds"]()};var _L=function L(){return date[_()+"Milliseconds"]()};var _o=function o(){return utc?0:date.getTimezoneOffset()};var _W=function W(){return getWeek(date)};var _N=function N(){return getDayOfWeek(date)};var flags={d:function d(){return _d()},dd:function dd(){return pad(_d())},ddd:function ddd(){return dateFormat.i18n.dayNames[D()]},DDD:function DDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()],short:true})},dddd:function dddd(){return dateFormat.i18n.dayNames[D()+7]},DDDD:function DDDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()+7]})},m:function m(){return _m()+1},mm:function mm(){return pad(_m()+1)},mmm:function mmm(){return dateFormat.i18n.monthNames[_m()]},mmmm:function mmmm(){return dateFormat.i18n.monthNames[_m()+12]},yy:function yy(){return String(y()).slice(2)},yyyy:function yyyy(){return pad(y(),4)},h:function h(){return _H()%12||12},hh:function hh(){return pad(_H()%12||12)},H:function H(){return _H()},HH:function HH(){return pad(_H())},M:function M(){return _M()},MM:function MM(){return pad(_M())},s:function s(){return _s()},ss:function ss(){return pad(_s())},l:function l(){return pad(_L(),3)},L:function L(){return pad(Math.floor(_L()/10))},t:function t(){return _H()<12?dateFormat.i18n.timeNames[0]:dateFormat.i18n.timeNames[1]},tt:function tt(){return _H()<12?dateFormat.i18n.timeNames[2]:dateFormat.i18n.timeNames[3]},T:function T(){return _H()<12?dateFormat.i18n.timeNames[4]:dateFormat.i18n.timeNames[5]},TT:function TT(){return _H()<12?dateFormat.i18n.timeNames[6]:dateFormat.i18n.timeNames[7]},Z:function Z(){return gmt?"GMT":utc?"UTC":(String(date).match(timezone)||[""]).pop().replace(timezoneClip,"").replace(/GMT\+0000/g,"UTC")},o:function o(){return(_o()>0?"-":"+")+pad(Math.floor(Math.abs(_o())/60)*100+Math.abs(_o())%60,4)},p:function p(){return(_o()>0?"-":"+")+pad(Math.floor(Math.abs(_o())/60),2)+":"+pad(Math.floor(Math.abs(_o())%60),2)},S:function S(){return["th","st","nd","rd"][_d()%10>3?0:(_d()%100-_d()%10!=10)*_d()%10]},W:function W(){return _W()},WW:function WW(){return pad(_W())},N:function N(){return _N()}};return mask.replace(token,function(match){if(match in flags){return flags[match]()}return match.slice(1,match.length-1)})}}();dateFormat.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]};var pad=function pad(val,len){val=String(val);len=len||2;while(val.length<len){val="0"+val}return val};var getDayName=function getDayName(_ref){var y=_ref.y,m=_ref.m,d=_ref.d,_=_ref._,dayName=_ref.dayName,_ref$short=_ref["short"],_short=_ref$short===void 0?false:_ref$short;var today=new Date;var yesterday=new Date;yesterday.setDate(yesterday[_+"Date"]()-1);var tomorrow=new Date;tomorrow.setDate(tomorrow[_+"Date"]()+1);var today_d=function today_d(){return today[_+"Date"]()};var today_m=function today_m(){return today[_+"Month"]()};var today_y=function today_y(){return today[_+"FullYear"]()};var yesterday_d=function yesterday_d(){return yesterday[_+"Date"]()};var yesterday_m=function yesterday_m(){return yesterday[_+"Month"]()};var yesterday_y=function yesterday_y(){return yesterday[_+"FullYear"]()};var tomorrow_d=function tomorrow_d(){return tomorrow[_+"Date"]()};var tomorrow_m=function tomorrow_m(){return tomorrow[_+"Month"]()};var tomorrow_y=function tomorrow_y(){return tomorrow[_+"FullYear"]()};if(today_y()===y&&today_m()===m&&today_d()===d){return _short?"Tdy":"Today"}else if(yesterday_y()===y&&yesterday_m()===m&&yesterday_d()===d){return _short?"Ysd":"Yesterday"}else if(tomorrow_y()===y&&tomorrow_m()===m&&tomorrow_d()===d){return _short?"Tmw":"Tomorrow"}return dayName};var getWeek=function getWeek(date){var targetThursday=new Date(date.getFullYear(),date.getMonth(),date.getDate());targetThursday.setDate(targetThursday.getDate()-(targetThursday.getDay()+6)%7+3);var firstThursday=new Date(targetThursday.getFullYear(),0,4);firstThursday.setDate(firstThursday.getDate()-(firstThursday.getDay()+6)%7+3);var ds=targetThursday.getTimezoneOffset()-firstThursday.getTimezoneOffset();targetThursday.setHours(targetThursday.getHours()-ds);var weekDiff=(targetThursday-firstThursday)/(864e5*7);return 1+Math.floor(weekDiff)};var getDayOfWeek=function getDayOfWeek(date){var dow=date.getDay();if(dow===0){dow=7}return dow};var kindOf=function kindOf(val){if(val===null){return"null"}if(val===undefined){return"undefined"}if(_typeof(val)!=="object"){return _typeof(val)}if(Array.isArray(val)){return"array"}return{}.toString.call(val).slice(8,-1).toLowerCase()};if(typeof define==="function"&&define.amd){define(function(){return dateFormat})}else if(( false?0:_typeof(exports))==="object"){module.exports=dateFormat}else{global.dateFormat=dateFormat}})(void 0); - -/***/ }), - -/***/ 39851: -/***/ ((module, exports, __nccwpck_require__) => { - -/* eslint-env browser */ - -/** - * This is the web browser implementation of `debug()`. - */ - -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); -exports.destroy = (() => { - let warned = false; - - return () => { - if (!warned) { - warned = true; - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - }; -})(); - -/** - * Colors. - */ - -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; - } - - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } - - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); -} - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); - - if (!this.useColors) { - return; - } - - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); - - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); -} - -/** - * Invokes `console.debug()` when available. - * No-op when `console.debug` is not a "function". - * If `console.debug` is not available, falls back - * to `console.log`. - * - * @api public - */ -exports.log = console.debug || console.log || (() => {}); - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); - } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } - - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } - - return r; -} - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } -} - -module.exports = __nccwpck_require__(36033)(exports); - -const {formatters} = module.exports; - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } -}; - - -/***/ }), - -/***/ 36033: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = __nccwpck_require__(80040); - createDebug.destroy = destroy; - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - let enableOverride = null; - let namespacesCache; - let enabledCache; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return '%'; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.useColors = createDebug.useColors(); - debug.color = createDebug.selectColor(namespace); - debug.extend = extend; - debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - - Object.defineProperty(debug, 'enabled', { - enumerable: true, - configurable: false, - get: () => { - if (enableOverride !== null) { - return enableOverride; - } - if (namespacesCache !== createDebug.namespaces) { - namespacesCache = createDebug.namespaces; - enabledCache = createDebug.enabled(namespace); - } - - return enabledCache; - }, - set: v => { - enableOverride = v; - } - }); - - // Env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - return debug; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - createDebug.namespaces = namespaces; - - createDebug.names = []; - createDebug.skips = []; - - let i; - const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - const len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } - - namespaces = split[i].replace(/\*/g, '.*?'); - - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); - } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); - } - } - } - - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } - - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } - - let i; - let len; - - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } - - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } - - return false; - } - - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - function toNamespace(regexp) { - return regexp.toString() - .substring(2, regexp.toString().length - 2) - .replace(/\.\*\?$/, '*'); - } - - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } - - /** - * XXX DO NOT USE. This is a temporary stub function. - * XXX It WILL be removed in the next major release. - */ - function destroy() { - console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); - } - - createDebug.enable(createDebug.load()); - - return createDebug; -} - -module.exports = setup; - - -/***/ }), - -/***/ 67984: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ - -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = __nccwpck_require__(39851); -} else { - module.exports = __nccwpck_require__(13860); -} - - -/***/ }), - -/***/ 13860: -/***/ ((module, exports, __nccwpck_require__) => { - -/** - * Module dependencies. - */ - -const tty = __nccwpck_require__(76224); -const util = __nccwpck_require__(73837); - -/** - * This is the Node.js implementation of `debug()`. - */ - -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.destroy = util.deprecate( - () => {}, - 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' -); - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = __nccwpck_require__(30395); - - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} - -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ - -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); - - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } - - obj[prop] = val; - return obj; -}, {}); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - const {namespace: name, useColors} = this; - - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } -} - -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; -} - -/** - * Invokes `util.format()` with the specified arguments and writes to stderr. - */ - -function log(...args) { - return process.stderr.write(util.format(...args) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init(debug) { - debug.inspectOpts = {}; - - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -module.exports = __nccwpck_require__(36033)(exports); - -const {formatters} = module.exports; - -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n') - .map(str => str.trim()) - .join(' '); -}; - -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ - -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - - -/***/ }), - -/***/ 93265: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var stream = __nccwpck_require__(30675) -var eos = __nccwpck_require__(92498) -var inherits = __nccwpck_require__(76919) -var shift = __nccwpck_require__(20662) - -var SIGNAL_FLUSH = (Buffer.from && Buffer.from !== Uint8Array.from) - ? Buffer.from([0]) - : new Buffer([0]) - -var onuncork = function(self, fn) { - if (self._corked) self.once('uncork', fn) - else fn() -} - -var autoDestroy = function (self, err) { - if (self._autoDestroy) self.destroy(err) -} - -var destroyer = function(self, end) { - return function(err) { - if (err) autoDestroy(self, err.message === 'premature close' ? null : err) - else if (end && !self._ended) self.end() - } -} - -var end = function(ws, fn) { - if (!ws) return fn() - if (ws._writableState && ws._writableState.finished) return fn() - if (ws._writableState) return ws.end(fn) - ws.end() - fn() -} - -var noop = function() {} - -var toStreams2 = function(rs) { - return new (stream.Readable)({objectMode:true, highWaterMark:16}).wrap(rs) -} - -var Duplexify = function(writable, readable, opts) { - if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts) - stream.Duplex.call(this, opts) - - this._writable = null - this._readable = null - this._readable2 = null - - this._autoDestroy = !opts || opts.autoDestroy !== false - this._forwardDestroy = !opts || opts.destroy !== false - this._forwardEnd = !opts || opts.end !== false - this._corked = 1 // start corked - this._ondrain = null - this._drained = false - this._forwarding = false - this._unwrite = null - this._unread = null - this._ended = false - - this.destroyed = false - - if (writable) this.setWritable(writable) - if (readable) this.setReadable(readable) -} - -inherits(Duplexify, stream.Duplex) - -Duplexify.obj = function(writable, readable, opts) { - if (!opts) opts = {} - opts.objectMode = true - opts.highWaterMark = 16 - return new Duplexify(writable, readable, opts) -} - -Duplexify.prototype.cork = function() { - if (++this._corked === 1) this.emit('cork') -} - -Duplexify.prototype.uncork = function() { - if (this._corked && --this._corked === 0) this.emit('uncork') -} - -Duplexify.prototype.setWritable = function(writable) { - if (this._unwrite) this._unwrite() - - if (this.destroyed) { - if (writable && writable.destroy) writable.destroy() - return - } - - if (writable === null || writable === false) { - this.end() - return - } - - var self = this - var unend = eos(writable, {writable:true, readable:false}, destroyer(this, this._forwardEnd)) - - var ondrain = function() { - var ondrain = self._ondrain - self._ondrain = null - if (ondrain) ondrain() - } - - var clear = function() { - self._writable.removeListener('drain', ondrain) - unend() - } - - if (this._unwrite) process.nextTick(ondrain) // force a drain on stream reset to avoid livelocks - - this._writable = writable - this._writable.on('drain', ondrain) - this._unwrite = clear - - this.uncork() // always uncork setWritable -} - -Duplexify.prototype.setReadable = function(readable) { - if (this._unread) this._unread() - - if (this.destroyed) { - if (readable && readable.destroy) readable.destroy() - return - } - - if (readable === null || readable === false) { - this.push(null) - this.resume() - return - } - - var self = this - var unend = eos(readable, {writable:false, readable:true}, destroyer(this)) - - var onreadable = function() { - self._forward() - } - - var onend = function() { - self.push(null) - } - - var clear = function() { - self._readable2.removeListener('readable', onreadable) - self._readable2.removeListener('end', onend) - unend() - } - - this._drained = true - this._readable = readable - this._readable2 = readable._readableState ? readable : toStreams2(readable) - this._readable2.on('readable', onreadable) - this._readable2.on('end', onend) - this._unread = clear - - this._forward() -} - -Duplexify.prototype._read = function() { - this._drained = true - this._forward() -} - -Duplexify.prototype._forward = function() { - if (this._forwarding || !this._readable2 || !this._drained) return - this._forwarding = true - - var data - - while (this._drained && (data = shift(this._readable2)) !== null) { - if (this.destroyed) continue - this._drained = this.push(data) - } - - this._forwarding = false -} - -Duplexify.prototype.destroy = function(err, cb) { - if (!cb) cb = noop - if (this.destroyed) return cb(null) - this.destroyed = true - - var self = this - process.nextTick(function() { - self._destroy(err) - cb(null) - }) -} - -Duplexify.prototype._destroy = function(err) { - if (err) { - var ondrain = this._ondrain - this._ondrain = null - if (ondrain) ondrain(err) - else this.emit('error', err) - } - - if (this._forwardDestroy) { - if (this._readable && this._readable.destroy) this._readable.destroy() - if (this._writable && this._writable.destroy) this._writable.destroy() - } - - this.emit('close') -} - -Duplexify.prototype._write = function(data, enc, cb) { - if (this.destroyed) return - if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb)) - if (data === SIGNAL_FLUSH) return this._finish(cb) - if (!this._writable) return cb() - - if (this._writable.write(data) === false) this._ondrain = cb - else if (!this.destroyed) cb() -} - -Duplexify.prototype._finish = function(cb) { - var self = this - this.emit('preend') - onuncork(this, function() { - end(self._forwardEnd && self._writable, function() { - // haxx to not emit prefinish twice - if (self._writableState.prefinished === false) self._writableState.prefinished = true - self.emit('prefinish') - onuncork(self, cb) - }) - }) -} - -Duplexify.prototype.end = function(data, enc, cb) { - if (typeof data === 'function') return this.end(null, null, data) - if (typeof enc === 'function') return this.end(data, null, enc) - this._ended = true - if (data) this.write(data) - if (!this._writableState.ending && !this._writableState.destroyed) this.write(SIGNAL_FLUSH) - return stream.Writable.prototype.end.call(this, cb) -} - -module.exports = Duplexify - - -/***/ }), - -/***/ 92498: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var once = __nccwpck_require__(87197); - -var noop = function() {}; - -var isRequest = function(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -}; - -var isChildProcess = function(stream) { - return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 -}; - -var eos = function(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; - - callback = once(callback || noop); - - var ws = stream._writableState; - var rs = stream._readableState; - var readable = opts.readable || (opts.readable !== false && stream.readable); - var writable = opts.writable || (opts.writable !== false && stream.writable); - var cancelled = false; - - var onlegacyfinish = function() { - if (!stream.writable) onfinish(); - }; - - var onfinish = function() { - writable = false; - if (!readable) callback.call(stream); - }; - - var onend = function() { - readable = false; - if (!writable) callback.call(stream); - }; - - var onexit = function(exitCode) { - callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); - }; - - var onerror = function(err) { - callback.call(stream, err); - }; - - var onclose = function() { - process.nextTick(onclosenexttick); - }; - - var onclosenexttick = function() { - if (cancelled) return; - if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); - if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); - }; - - var onrequest = function() { - stream.req.on('finish', onfinish); - }; - - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest(); - else stream.on('request', onrequest); - } else if (writable && !ws) { // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - if (isChildProcess(stream)) stream.on('exit', onexit); - - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - - return function() { - cancelled = true; - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('exit', onexit); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -}; - -module.exports = eos; - - -/***/ }), - -/***/ 36003: -/***/ ((module) => { - -"use strict"; - - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; - - -/***/ }), - -/***/ 72533: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var isObject = __nccwpck_require__(77242); - -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } - - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; - - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - - -/***/ }), - -/***/ 36005: -/***/ ((module) => { - -"use strict"; - - -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var defineProperty = Object.defineProperty; -var gOPD = Object.getOwnPropertyDescriptor; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { /**/ } - - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; - -// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target -var setProperty = function setProperty(target, options) { - if (defineProperty && options.name === '__proto__') { - defineProperty(target, options.name, { - enumerable: true, - configurable: true, - value: options.newValue, - writable: true - }); - } else { - target[options.name] = options.newValue; - } -}; - -// Return undefined instead of __proto__ if '__proto__' is not an own property -var getProperty = function getProperty(obj, name) { - if (name === '__proto__') { - if (!hasOwn.call(obj, name)) { - return void 0; - } else if (gOPD) { - // In early versions of node, obj['__proto__'] is buggy when obj has - // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. - return gOPD(obj, name).value; - } - } - - return obj[name]; -}; - -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone; - var target = arguments[0]; - var i = 1; - var length = arguments.length; - var deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = getProperty(target, name); - copy = getProperty(options, name); - - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - setProperty(target, { name: name, newValue: copy }); - } - } - } - } - } - - // Return the modified object - return target; -}; - - -/***/ }), - -/***/ 56129: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const validator = __nccwpck_require__(43276) -const parse = __nccwpck_require__(4390) -const redactor = __nccwpck_require__(10756) -const restorer = __nccwpck_require__(60595) -const { groupRedact, nestedRedact } = __nccwpck_require__(99454) -const state = __nccwpck_require__(66714) -const rx = __nccwpck_require__(81364) -const validate = validator() -const noop = (o) => o -noop.restore = noop - -const DEFAULT_CENSOR = '[REDACTED]' -fastRedact.rx = rx -fastRedact.validator = validator - -module.exports = fastRedact - -function fastRedact (opts = {}) { - const paths = Array.from(new Set(opts.paths || [])) - const serialize = 'serialize' in opts ? ( - opts.serialize === false ? opts.serialize - : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify) - ) : JSON.stringify - const remove = opts.remove - if (remove === true && serialize !== JSON.stringify) { - throw Error('fast-redact – remove option may only be set when serializer is JSON.stringify') - } - const censor = remove === true - ? undefined - : 'censor' in opts ? opts.censor : DEFAULT_CENSOR - - const isCensorFct = typeof censor === 'function' - const censorFctTakesPath = isCensorFct && censor.length > 1 - - if (paths.length === 0) return serialize || noop - - validate({ paths, serialize, censor }) - - const { wildcards, wcLen, secret } = parse({ paths, censor }) - - const compileRestore = restorer({ secret, wcLen }) - const strict = 'strict' in opts ? opts.strict : true - - return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({ - secret, - censor, - compileRestore, - serialize, - groupRedact, - nestedRedact, - wildcards, - wcLen - })) -} - - -/***/ }), - -/***/ 99454: -/***/ ((module) => { - -"use strict"; - - -module.exports = { - groupRedact, - groupRestore, - nestedRedact, - nestedRestore -} - -function groupRestore ({ keys, values, target }) { - if (target == null) return - const length = keys.length - for (var i = 0; i < length; i++) { - const k = keys[i] - target[k] = values[i] - } -} - -function groupRedact (o, path, censor, isCensorFct, censorFctTakesPath) { - const target = get(o, path) - if (target == null) return { keys: null, values: null, target: null, flat: true } - const keys = Object.keys(target) - const keysLength = keys.length - const pathLength = path.length - const pathWithKey = censorFctTakesPath ? [...path] : undefined - const values = new Array(keysLength) - - for (var i = 0; i < keysLength; i++) { - const key = keys[i] - values[i] = target[key] - - if (censorFctTakesPath) { - pathWithKey[pathLength] = key - target[key] = censor(target[key], pathWithKey) - } else if (isCensorFct) { - target[key] = censor(target[key]) - } else { - target[key] = censor - } - } - return { keys, values, target, flat: true } -} - -function nestedRestore (arr) { - const length = arr.length - for (var i = 0; i < length; i++) { - const { key, target, value } = arr[i] - if (has(target, key)) { - target[key] = value - } - /* istanbul ignore else */ - if (typeof target === 'object') { - const targetKeys = Object.keys(target) - for (var j = 0; j < targetKeys.length; j++) { - const tKey = targetKeys[j] - const subTarget = target[tKey] - if (has(subTarget, key)) { - subTarget[key] = value - } - } - } - } -} - -function nestedRedact (store, o, path, ns, censor, isCensorFct, censorFctTakesPath) { - const target = get(o, path) - if (target == null) return - const keys = Object.keys(target) - const keysLength = keys.length - for (var i = 0; i < keysLength; i++) { - const key = keys[i] - const { value, parent, exists } = - specialSet(target, key, path, ns, censor, isCensorFct, censorFctTakesPath) - - if (exists === true && parent !== null) { - store.push({ key: ns[ns.length - 1], target: parent, value }) - } - } - return store -} - -function has (obj, prop) { - return obj !== undefined && obj !== null - ? ('hasOwn' in Object ? Object.hasOwn(obj, prop) : Object.prototype.hasOwnProperty.call(obj, prop)) - : false -} - -function specialSet (o, k, path, afterPath, censor, isCensorFct, censorFctTakesPath) { - const afterPathLen = afterPath.length - const lastPathIndex = afterPathLen - 1 - const originalKey = k - var i = -1 - var n - var nv - var ov - var oov = null - var exists = true - var wc = null - ov = n = o[k] - if (typeof n !== 'object') return { value: null, parent: null, exists } - while (n != null && ++i < afterPathLen) { - k = afterPath[i] - oov = ov - if (k !== '*' && !wc && !(typeof n === 'object' && k in n)) { - exists = false - break - } - if (k === '*') { - wc = k - if (i !== lastPathIndex) { - continue - } - } - if (wc) { - const wcKeys = Object.keys(n) - for (var j = 0; j < wcKeys.length; j++) { - const wck = wcKeys[j] - const wcov = n[wck] - const kIsWc = k === '*' - if (kIsWc || (typeof wcov === 'object' && wcov !== null && k in wcov)) { - if (kIsWc) { - ov = wcov - } else { - ov = wcov[k] - } - nv = (i !== lastPathIndex) - ? ov - : (isCensorFct - ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov)) - : censor) - if (kIsWc) { - n[wck] = nv - } else { - wcov[k] = (nv === undefined && censor !== undefined) || (has(wcov, k) && nv === ov) ? wcov[k] : nv - } - } - } - wc = null - } else { - ov = n[k] - nv = (i !== lastPathIndex) - ? ov - : (isCensorFct - ? (censorFctTakesPath ? censor(ov, [...path, originalKey, ...afterPath]) : censor(ov)) - : censor) - n[k] = (has(n, k) && nv === ov) || (nv === undefined && censor !== undefined) ? n[k] : nv - n = n[k] - } - if (typeof n !== 'object') break - } - return { value: ov, parent: oov, exists } -} - -function get (o, p) { - var i = -1 - var l = p.length - var n = o - while (n != null && ++i < l) { - n = n[p[i]] - } - return n -} - - -/***/ }), - -/***/ 4390: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const rx = __nccwpck_require__(81364) - -module.exports = parse - -function parse ({ paths }) { - const wildcards = [] - var wcLen = 0 - const secret = paths.reduce(function (o, strPath, ix) { - var path = strPath.match(rx).map((p) => p.replace(/'|"|`/g, '')) - const leadingBracket = strPath[0] === '[' - path = path.map((p) => { - if (p[0] === '[') return p.substr(1, p.length - 2) - else return p - }) - const star = path.indexOf('*') - if (star > -1) { - const before = path.slice(0, star) - const beforeStr = before.join('.') - const after = path.slice(star + 1, path.length) - const nested = after.length > 0 - wcLen++ - wildcards.push({ - before, - beforeStr, - after, - nested - }) - } else { - o[strPath] = { - path: path, - val: undefined, - precensored: false, - circle: '', - escPath: JSON.stringify(strPath), - leadingBracket: leadingBracket - } - } - return o - }, {}) - - return { wildcards, wcLen, secret } -} - - -/***/ }), - -/***/ 10756: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const rx = __nccwpck_require__(81364) - -module.exports = redactor - -function redactor ({ secret, serialize, wcLen, strict, isCensorFct, censorFctTakesPath }, state) { - /* eslint-disable-next-line */ - const redact = Function('o', ` - if (typeof o !== 'object' || o == null) { - ${strictImpl(strict, serialize)} - } - const { censor, secret } = this - ${redactTmpl(secret, isCensorFct, censorFctTakesPath)} - this.compileRestore() - ${dynamicRedactTmpl(wcLen > 0, isCensorFct, censorFctTakesPath)} - ${resultTmpl(serialize)} - `).bind(state) - - if (serialize === false) { - redact.restore = (o) => state.restore(o) - } - - return redact -} - -function redactTmpl (secret, isCensorFct, censorFctTakesPath) { - return Object.keys(secret).map((path) => { - const { escPath, leadingBracket, path: arrPath } = secret[path] - const skip = leadingBracket ? 1 : 0 - const delim = leadingBracket ? '' : '.' - const hops = [] - var match - while ((match = rx.exec(path)) !== null) { - const [ , ix ] = match - const { index, input } = match - if (index > skip) hops.push(input.substring(0, index - (ix ? 0 : 1))) - } - var existence = hops.map((p) => `o${delim}${p}`).join(' && ') - if (existence.length === 0) existence += `o${delim}${path} != null` - else existence += ` && o${delim}${path} != null` - - const circularDetection = ` - switch (true) { - ${hops.reverse().map((p) => ` - case o${delim}${p} === censor: - secret[${escPath}].circle = ${JSON.stringify(p)} - break - `).join('\n')} - } - ` - - const censorArgs = censorFctTakesPath - ? `val, ${JSON.stringify(arrPath)}` - : `val` - - return ` - if (${existence}) { - const val = o${delim}${path} - if (val === censor) { - secret[${escPath}].precensored = true - } else { - secret[${escPath}].val = val - o${delim}${path} = ${isCensorFct ? `censor(${censorArgs})` : 'censor'} - ${circularDetection} - } - } - ` - }).join('\n') -} - -function dynamicRedactTmpl (hasWildcards, isCensorFct, censorFctTakesPath) { - return hasWildcards === true ? ` - { - const { wildcards, wcLen, groupRedact, nestedRedact } = this - for (var i = 0; i < wcLen; i++) { - const { before, beforeStr, after, nested } = wildcards[i] - if (nested === true) { - secret[beforeStr] = secret[beforeStr] || [] - nestedRedact(secret[beforeStr], o, before, after, censor, ${isCensorFct}, ${censorFctTakesPath}) - } else secret[beforeStr] = groupRedact(o, before, censor, ${isCensorFct}, ${censorFctTakesPath}) - } - } - ` : '' -} - -function resultTmpl (serialize) { - return serialize === false ? `return o` : ` - var s = this.serialize(o) - this.restore(o) - return s - ` -} - -function strictImpl (strict, serialize) { - return strict === true - ? `throw Error('fast-redact: primitives cannot be redacted')` - : serialize === false ? `return o` : `return this.serialize(o)` -} - - -/***/ }), - -/***/ 60595: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const { groupRestore, nestedRestore } = __nccwpck_require__(99454) - -module.exports = restorer - -function restorer ({ secret, wcLen }) { - return function compileRestore () { - if (this.restore) return - const paths = Object.keys(secret) - const resetters = resetTmpl(secret, paths) - const hasWildcards = wcLen > 0 - const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret } - /* eslint-disable-next-line */ - this.restore = Function( - 'o', - restoreTmpl(resetters, paths, hasWildcards) - ).bind(state) - } -} - -/** - * Mutates the original object to be censored by restoring its original values - * prior to censoring. - * - * @param {object} secret Compiled object describing which target fields should - * be censored and the field states. - * @param {string[]} paths The list of paths to censor as provided at - * initialization time. - * - * @returns {string} String of JavaScript to be used by `Function()`. The - * string compiles to the function that does the work in the description. - */ -function resetTmpl (secret, paths) { - return paths.map((path) => { - const { circle, escPath, leadingBracket } = secret[path] - const delim = leadingBracket ? '' : '.' - const reset = circle - ? `o.${circle} = secret[${escPath}].val` - : `o${delim}${path} = secret[${escPath}].val` - const clear = `secret[${escPath}].val = undefined` - return ` - if (secret[${escPath}].val !== undefined) { - try { ${reset} } catch (e) {} - ${clear} - } - ` - }).join('') -} - -/** - * Creates the body of the restore function - * - * Restoration of the redacted object happens - * backwards, in reverse order of redactions, - * so that repeated redactions on the same object - * property can be eventually rolled back to the - * original value. - * - * This way dynamic redactions are restored first, - * starting from the last one working backwards and - * followed by the static ones. - * - * @returns {string} the body of the restore function - */ -function restoreTmpl (resetters, paths, hasWildcards) { - const dynamicReset = hasWildcards === true ? ` - const keys = Object.keys(secret) - const len = keys.length - for (var i = len - 1; i >= ${paths.length}; i--) { - const k = keys[i] - const o = secret[k] - if (o.flat === true) this.groupRestore(o) - else this.nestedRestore(o) - secret[k] = null - } - ` : '' - - return ` - const secret = this.secret - ${dynamicReset} - ${resetters} - return o - ` -} - - -/***/ }), - -/***/ 81364: -/***/ ((module) => { - -"use strict"; - - -module.exports = /[^.[\]]+|\[((?:.)*?)\]/g - -/* -Regular expression explanation: - -Alt 1: /[^.[\]]+/ - Match one or more characters that are *not* a dot (.) - opening square bracket ([) or closing square bracket (]) - -Alt 2: /\[((?:.)*?)\]/ - If the char IS dot or square bracket, then create a capture - group (which will be capture group $1) that matches anything - within square brackets. Expansion is lazy so it will - stop matching as soon as the first closing bracket is met `]` - (rather than continuing to match until the final closing bracket). -*/ - - -/***/ }), - -/***/ 66714: -/***/ ((module) => { - -"use strict"; - - -module.exports = state - -function state (o) { - const { - secret, - censor, - compileRestore, - serialize, - groupRedact, - nestedRedact, - wildcards, - wcLen - } = o - const builder = [{ secret, censor, compileRestore }] - if (serialize !== false) builder.push({ serialize }) - if (wcLen > 0) builder.push({ groupRedact, nestedRedact, wildcards, wcLen }) - return Object.assign(...builder) -} - - -/***/ }), - -/***/ 43276: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const { createContext, runInContext } = __nccwpck_require__(26144) - -module.exports = validator - -function validator (opts = {}) { - const { - ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings', - ERR_INVALID_PATH = (s) => `fast-redact – Invalid path (${s})` - } = opts - - return function validate ({ paths }) { - paths.forEach((s) => { - if (typeof s !== 'string') { - throw Error(ERR_PATHS_MUST_BE_STRINGS()) - } - try { - if (/〇/.test(s)) throw Error() - const proxy = new Proxy({}, { get: () => proxy, set: () => { throw Error() } }) - const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\*/, '〇').replace(/\.\*/g, '.〇').replace(/\[\*\]/g, '[〇]') - if (/\n|\r|;/.test(expr)) throw Error() - if (/\/\*/.test(expr)) throw Error() - runInContext(` - (function () { - 'use strict' - o${expr} - if ([o${expr}].length !== 1) throw Error() - })() - `, createContext({ o: proxy, 〇: null }), { - codeGeneration: { strings: false, wasm: false } - }) - } catch (e) { - throw Error(ERR_INVALID_PATH(s)) - } - }) - } -} - - -/***/ }), - -/***/ 50460: -/***/ ((module) => { - -module.exports = stringify -stringify.default = stringify -stringify.stable = deterministicStringify -stringify.stableStringify = deterministicStringify - -var LIMIT_REPLACE_NODE = '[...]' -var CIRCULAR_REPLACE_NODE = '[Circular]' - -var arr = [] -var replacerStack = [] - -function defaultOptions () { - return { - depthLimit: Number.MAX_SAFE_INTEGER, - edgesLimit: Number.MAX_SAFE_INTEGER - } -} - -// Regular stringify -function stringify (obj, replacer, spacer, options) { - if (typeof options === 'undefined') { - options = defaultOptions() - } - - decirc(obj, '', 0, [], undefined, 0, options) - var res - try { - if (replacerStack.length === 0) { - res = JSON.stringify(obj, replacer, spacer) - } else { - res = JSON.stringify(obj, replaceGetterValues(replacer), spacer) - } - } catch (_) { - return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]') - } finally { - while (arr.length !== 0) { - var part = arr.pop() - if (part.length === 4) { - Object.defineProperty(part[0], part[1], part[3]) - } else { - part[0][part[1]] = part[2] - } - } - } - return res -} - -function setReplace (replace, val, k, parent) { - var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k) - if (propertyDescriptor.get !== undefined) { - if (propertyDescriptor.configurable) { - Object.defineProperty(parent, k, { value: replace }) - arr.push([parent, k, val, propertyDescriptor]) - } else { - replacerStack.push([val, k, replace]) - } - } else { - parent[k] = replace - arr.push([parent, k, val]) - } -} - -function decirc (val, k, edgeIndex, stack, parent, depth, options) { - depth += 1 - var i - if (typeof val === 'object' && val !== null) { - for (i = 0; i < stack.length; i++) { - if (stack[i] === val) { - setReplace(CIRCULAR_REPLACE_NODE, val, k, parent) - return - } - } - - if ( - typeof options.depthLimit !== 'undefined' && - depth > options.depthLimit - ) { - setReplace(LIMIT_REPLACE_NODE, val, k, parent) - return - } - - if ( - typeof options.edgesLimit !== 'undefined' && - edgeIndex + 1 > options.edgesLimit - ) { - setReplace(LIMIT_REPLACE_NODE, val, k, parent) - return - } - - stack.push(val) - // Optimize for Arrays. Big arrays could kill the performance otherwise! - if (Array.isArray(val)) { - for (i = 0; i < val.length; i++) { - decirc(val[i], i, i, stack, val, depth, options) - } - } else { - var keys = Object.keys(val) - for (i = 0; i < keys.length; i++) { - var key = keys[i] - decirc(val[key], key, i, stack, val, depth, options) - } - } - stack.pop() - } -} - -// Stable-stringify -function compareFunction (a, b) { - if (a < b) { - return -1 - } - if (a > b) { - return 1 - } - return 0 -} - -function deterministicStringify (obj, replacer, spacer, options) { - if (typeof options === 'undefined') { - options = defaultOptions() - } - - var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj - var res - try { - if (replacerStack.length === 0) { - res = JSON.stringify(tmp, replacer, spacer) - } else { - res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer) - } - } catch (_) { - return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]') - } finally { - // Ensure that we restore the object as it was. - while (arr.length !== 0) { - var part = arr.pop() - if (part.length === 4) { - Object.defineProperty(part[0], part[1], part[3]) - } else { - part[0][part[1]] = part[2] - } - } - } - return res -} - -function deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) { - depth += 1 - var i - if (typeof val === 'object' && val !== null) { - for (i = 0; i < stack.length; i++) { - if (stack[i] === val) { - setReplace(CIRCULAR_REPLACE_NODE, val, k, parent) - return - } - } - try { - if (typeof val.toJSON === 'function') { - return - } - } catch (_) { - return - } - - if ( - typeof options.depthLimit !== 'undefined' && - depth > options.depthLimit - ) { - setReplace(LIMIT_REPLACE_NODE, val, k, parent) - return - } - - if ( - typeof options.edgesLimit !== 'undefined' && - edgeIndex + 1 > options.edgesLimit - ) { - setReplace(LIMIT_REPLACE_NODE, val, k, parent) - return - } - - stack.push(val) - // Optimize for Arrays. Big arrays could kill the performance otherwise! - if (Array.isArray(val)) { - for (i = 0; i < val.length; i++) { - deterministicDecirc(val[i], i, i, stack, val, depth, options) - } - } else { - // Create a temporary object in the required way - var tmp = {} - var keys = Object.keys(val).sort(compareFunction) - for (i = 0; i < keys.length; i++) { - var key = keys[i] - deterministicDecirc(val[key], key, i, stack, val, depth, options) - tmp[key] = val[key] - } - if (typeof parent !== 'undefined') { - arr.push([parent, k, val]) - parent[k] = tmp - } else { - return tmp - } - } - stack.pop() - } -} - -// wraps replacer function to handle values we couldn't replace -// and mark them as replaced value -function replaceGetterValues (replacer) { - replacer = - typeof replacer !== 'undefined' - ? replacer - : function (k, v) { - return v - } - return function (key, val) { - if (replacerStack.length > 0) { - for (var i = 0; i < replacerStack.length; i++) { - var part = replacerStack[i] - if (part[1] === key && part[0] === val) { - val = part[2] - replacerStack.splice(i, 1) - break - } - } - } - return replacer.call(this, key, val) - } -} - - -/***/ }), - -/***/ 49733: -/***/ ((module) => { - -"use strict"; - - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var toStr = Object.prototype.toString; -var max = Math.max; -var funcType = '[object Function]'; - -var concatty = function concatty(a, b) { - var arr = []; - - for (var i = 0; i < a.length; i += 1) { - arr[i] = a[i]; - } - for (var j = 0; j < b.length; j += 1) { - arr[j + a.length] = b[j]; - } - - return arr; -}; - -var slicy = function slicy(arrLike, offset) { - var arr = []; - for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { - arr[j] = arrLike[i]; - } - return arr; -}; - -var joiny = function (arr, joiner) { - var str = ''; - for (var i = 0; i < arr.length; i += 1) { - str += arr[i]; - if (i + 1 < arr.length) { - str += joiner; - } - } - return str; -}; - -module.exports = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.apply(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slicy(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - concatty(args, arguments) - ); - if (Object(result) === result) { - return result; - } - return this; - } - return target.apply( - that, - concatty(args, arguments) - ); - - }; - - var boundLength = max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs[i] = '$' + i; - } - - bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - - -/***/ }), - -/***/ 64517: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var implementation = __nccwpck_require__(49733); - -module.exports = Function.prototype.bind || implementation; - - -/***/ }), - -/***/ 686: -/***/ ((module) => { - -"use strict"; - - -// These use the global symbol registry so that multiple copies of this -// library can work together in case they are not deduped. -const GENSYNC_START = Symbol.for("gensync:v1:start"); -const GENSYNC_SUSPEND = Symbol.for("gensync:v1:suspend"); - -const GENSYNC_EXPECTED_START = "GENSYNC_EXPECTED_START"; -const GENSYNC_EXPECTED_SUSPEND = "GENSYNC_EXPECTED_SUSPEND"; -const GENSYNC_OPTIONS_ERROR = "GENSYNC_OPTIONS_ERROR"; -const GENSYNC_RACE_NONEMPTY = "GENSYNC_RACE_NONEMPTY"; -const GENSYNC_ERRBACK_NO_CALLBACK = "GENSYNC_ERRBACK_NO_CALLBACK"; - -module.exports = Object.assign( - function gensync(optsOrFn) { - let genFn = optsOrFn; - if (typeof optsOrFn !== "function") { - genFn = newGenerator(optsOrFn); - } else { - genFn = wrapGenerator(optsOrFn); - } - - return Object.assign(genFn, makeFunctionAPI(genFn)); - }, - { - all: buildOperation({ - name: "all", - arity: 1, - sync: function(args) { - const items = Array.from(args[0]); - return items.map(item => evaluateSync(item)); - }, - async: function(args, resolve, reject) { - const items = Array.from(args[0]); - - if (items.length === 0) { - Promise.resolve().then(() => resolve([])); - return; - } - - let count = 0; - const results = items.map(() => undefined); - items.forEach((item, i) => { - evaluateAsync( - item, - val => { - results[i] = val; - count += 1; - - if (count === results.length) resolve(results); - }, - reject - ); - }); - }, - }), - race: buildOperation({ - name: "race", - arity: 1, - sync: function(args) { - const items = Array.from(args[0]); - if (items.length === 0) { - throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY); - } - - return evaluateSync(items[0]); - }, - async: function(args, resolve, reject) { - const items = Array.from(args[0]); - if (items.length === 0) { - throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY); - } - - for (const item of items) { - evaluateAsync(item, resolve, reject); - } - }, - }), - } -); - -/** - * Given a generator function, return the standard API object that executes - * the generator and calls the callbacks. - */ -function makeFunctionAPI(genFn) { - const fns = { - sync: function(...args) { - return evaluateSync(genFn.apply(this, args)); - }, - async: function(...args) { - return new Promise((resolve, reject) => { - evaluateAsync(genFn.apply(this, args), resolve, reject); - }); - }, - errback: function(...args) { - const cb = args.pop(); - if (typeof cb !== "function") { - throw makeError( - "Asynchronous function called without callback", - GENSYNC_ERRBACK_NO_CALLBACK - ); - } - - let gen; - try { - gen = genFn.apply(this, args); - } catch (err) { - cb(err); - return; - } - - evaluateAsync(gen, val => cb(undefined, val), err => cb(err)); - }, - }; - return fns; -} - -function assertTypeof(type, name, value, allowUndefined) { - if ( - typeof value === type || - (allowUndefined && typeof value === "undefined") - ) { - return; - } - - let msg; - if (allowUndefined) { - msg = `Expected opts.${name} to be either a ${type}, or undefined.`; - } else { - msg = `Expected opts.${name} to be a ${type}.`; - } - - throw makeError(msg, GENSYNC_OPTIONS_ERROR); -} -function makeError(msg, code) { - return Object.assign(new Error(msg), { code }); -} - -/** - * Given an options object, return a new generator that dispatches the - * correct handler based on sync or async execution. - */ -function newGenerator({ name, arity, sync, async, errback }) { - assertTypeof("string", "name", name, true /* allowUndefined */); - assertTypeof("number", "arity", arity, true /* allowUndefined */); - assertTypeof("function", "sync", sync); - assertTypeof("function", "async", async, true /* allowUndefined */); - assertTypeof("function", "errback", errback, true /* allowUndefined */); - if (async && errback) { - throw makeError( - "Expected one of either opts.async or opts.errback, but got _both_.", - GENSYNC_OPTIONS_ERROR - ); - } - - if (typeof name !== "string") { - let fnName; - if (errback && errback.name && errback.name !== "errback") { - fnName = errback.name; - } - if (async && async.name && async.name !== "async") { - fnName = async.name.replace(/Async$/, ""); - } - if (sync && sync.name && sync.name !== "sync") { - fnName = sync.name.replace(/Sync$/, ""); - } - - if (typeof fnName === "string") { - name = fnName; - } - } - - if (typeof arity !== "number") { - arity = sync.length; - } - - return buildOperation({ - name, - arity, - sync: function(args) { - return sync.apply(this, args); - }, - async: function(args, resolve, reject) { - if (async) { - async.apply(this, args).then(resolve, reject); - } else if (errback) { - errback.call(this, ...args, (err, value) => { - if (err == null) resolve(value); - else reject(err); - }); - } else { - resolve(sync.apply(this, args)); - } - }, - }); -} - -function wrapGenerator(genFn) { - return setFunctionMetadata(genFn.name, genFn.length, function(...args) { - return genFn.apply(this, args); - }); -} - -function buildOperation({ name, arity, sync, async }) { - return setFunctionMetadata(name, arity, function*(...args) { - const resume = yield GENSYNC_START; - if (!resume) { - // Break the tail call to avoid a bug in V8 v6.X with --harmony enabled. - const res = sync.call(this, args); - return res; - } - - let result; - try { - async.call( - this, - args, - value => { - if (result) return; - - result = { value }; - resume(); - }, - err => { - if (result) return; - - result = { err }; - resume(); - } - ); - } catch (err) { - result = { err }; - resume(); - } - - // Suspend until the callbacks run. Will resume synchronously if the - // callback was already called. - yield GENSYNC_SUSPEND; - - if (result.hasOwnProperty("err")) { - throw result.err; - } - - return result.value; - }); -} - -function evaluateSync(gen) { - let value; - while (!({ value } = gen.next()).done) { - assertStart(value, gen); - } - return value; -} - -function evaluateAsync(gen, resolve, reject) { - (function step() { - try { - let value; - while (!({ value } = gen.next()).done) { - assertStart(value, gen); - - // If this throws, it is considered to have broken the contract - // established for async handlers. If these handlers are called - // synchronously, it is also considered bad behavior. - let sync = true; - let didSyncResume = false; - const out = gen.next(() => { - if (sync) { - didSyncResume = true; - } else { - step(); - } - }); - sync = false; - - assertSuspend(out, gen); - - if (!didSyncResume) { - // Callback wasn't called synchronously, so break out of the loop - // and let it call 'step' later. - return; - } - } - - return resolve(value); - } catch (err) { - return reject(err); - } - })(); -} - -function assertStart(value, gen) { - if (value === GENSYNC_START) return; - - throwError( - gen, - makeError( - `Got unexpected yielded value in gensync generator: ${JSON.stringify( - value - )}. Did you perhaps mean to use 'yield*' instead of 'yield'?`, - GENSYNC_EXPECTED_START - ) - ); -} -function assertSuspend({ value, done }, gen) { - if (!done && value === GENSYNC_SUSPEND) return; - - throwError( - gen, - makeError( - done - ? "Unexpected generator completion. If you get this, it is probably a gensync bug." - : `Expected GENSYNC_SUSPEND, got ${JSON.stringify( - value - )}. If you get this, it is probably a gensync bug.`, - GENSYNC_EXPECTED_SUSPEND - ) - ); -} - -function throwError(gen, err) { - // Call `.throw` so that users can step in a debugger to easily see which - // 'yield' passed an unexpected value. If the `.throw` call didn't throw - // back to the generator, we explicitly do it to stop the error - // from being swallowed by user code try/catches. - if (gen.throw) gen.throw(err); - throw err; -} - -function isIterable(value) { - return ( - !!value && - (typeof value === "object" || typeof value === "function") && - !value[Symbol.iterator] - ); -} - -function setFunctionMetadata(name, arity, fn) { - if (typeof name === "string") { - // This should always work on the supported Node versions, but for the - // sake of users that are compiling to older versions, we check for - // configurability so we don't throw. - const nameDesc = Object.getOwnPropertyDescriptor(fn, "name"); - if (!nameDesc || nameDesc.configurable) { - Object.defineProperty( - fn, - "name", - Object.assign(nameDesc || {}, { - configurable: true, - value: name, - }) - ); - } - } - - if (typeof arity === "number") { - const lengthDesc = Object.getOwnPropertyDescriptor(fn, "length"); - if (!lengthDesc || lengthDesc.configurable) { - Object.defineProperty( - fn, - "length", - Object.assign(lengthDesc || {}, { - configurable: true, - value: arity, - }) - ); - } - } - - return fn; -} - - -/***/ }), - -/***/ 15548: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -module.exports = __nccwpck_require__(47796); - - -/***/ }), - -/***/ 89132: -/***/ ((module) => { - -"use strict"; - - -module.exports = clone - -var getPrototypeOf = Object.getPrototypeOf || function (obj) { - return obj.__proto__ -} - -function clone (obj) { - if (obj === null || typeof obj !== 'object') - return obj - - if (obj instanceof Object) - var copy = { __proto__: getPrototypeOf(obj) } - else - var copy = Object.create(null) - - Object.getOwnPropertyNames(obj).forEach(function (key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) - }) - - return copy -} - - -/***/ }), - -/***/ 90552: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var fs = __nccwpck_require__(57147) -var polyfills = __nccwpck_require__(11290) -var legacy = __nccwpck_require__(54410) -var clone = __nccwpck_require__(89132) - -var util = __nccwpck_require__(73837) - -/* istanbul ignore next - node 0.x polyfill */ -var gracefulQueue -var previousSymbol - -/* istanbul ignore else - node 0.x polyfill */ -if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { - gracefulQueue = Symbol.for('graceful-fs.queue') - // This is used in testing by future versions - previousSymbol = Symbol.for('graceful-fs.previous') -} else { - gracefulQueue = '___graceful-fs.queue' - previousSymbol = '___graceful-fs.previous' -} - -function noop () {} - -function publishQueue(context, queue) { - Object.defineProperty(context, gracefulQueue, { - get: function() { - return queue - } - }) -} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs4') -else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') - console.error(m) - } - -// Once time initialization -if (!fs[gracefulQueue]) { - // This queue can be shared by multiple loaded instances - var queue = global[gracefulQueue] || [] - publishQueue(fs, queue) - - // Patch fs.close/closeSync to shared queue version, because we need - // to retry() whenever a close happens *anywhere* in the program. - // This is essential when multiple graceful-fs instances are - // in play at the same time. - fs.close = (function (fs$close) { - function close (fd, cb) { - return fs$close.call(fs, fd, function (err) { - // This function uses the graceful-fs shared queue - if (!err) { - resetQueue() - } - - if (typeof cb === 'function') - cb.apply(this, arguments) - }) - } - - Object.defineProperty(close, previousSymbol, { - value: fs$close - }) - return close - })(fs.close) - - fs.closeSync = (function (fs$closeSync) { - function closeSync (fd) { - // This function uses the graceful-fs shared queue - fs$closeSync.apply(fs, arguments) - resetQueue() - } - - Object.defineProperty(closeSync, previousSymbol, { - value: fs$closeSync - }) - return closeSync - })(fs.closeSync) - - if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug(fs[gracefulQueue]) - __nccwpck_require__(39491).equal(fs[gracefulQueue].length, 0) - }) - } -} - -if (!global[gracefulQueue]) { - publishQueue(global, fs[gracefulQueue]); -} - -module.exports = patch(clone(fs)) -if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { - module.exports = patch(fs) - fs.__patched = true; -} - -function patch (fs) { - // Everything that references the open() function needs to be in here - polyfills(fs) - fs.gracefulify = patch - - fs.createReadStream = createReadStream - fs.createWriteStream = createWriteStream - var fs$readFile = fs.readFile - fs.readFile = readFile - function readFile (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$readFile(path, options, cb) - - function go$readFile (path, options, cb, startTime) { - return fs$readFile(path, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$writeFile = fs.writeFile - fs.writeFile = writeFile - function writeFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$writeFile(path, data, options, cb) - - function go$writeFile (path, data, options, cb, startTime) { - return fs$writeFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$appendFile = fs.appendFile - if (fs$appendFile) - fs.appendFile = appendFile - function appendFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$appendFile(path, data, options, cb) - - function go$appendFile (path, data, options, cb, startTime) { - return fs$appendFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$copyFile = fs.copyFile - if (fs$copyFile) - fs.copyFile = copyFile - function copyFile (src, dest, flags, cb) { - if (typeof flags === 'function') { - cb = flags - flags = 0 - } - return go$copyFile(src, dest, flags, cb) - - function go$copyFile (src, dest, flags, cb, startTime) { - return fs$copyFile(src, dest, flags, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$readdir = fs.readdir - fs.readdir = readdir - var noReaddirOptionVersions = /^v[0-5]\./ - function readdir (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - var go$readdir = noReaddirOptionVersions.test(process.version) - ? function go$readdir (path, options, cb, startTime) { - return fs$readdir(path, fs$readdirCallback( - path, options, cb, startTime - )) - } - : function go$readdir (path, options, cb, startTime) { - return fs$readdir(path, options, fs$readdirCallback( - path, options, cb, startTime - )) - } - - return go$readdir(path, options, cb) - - function fs$readdirCallback (path, options, cb, startTime) { - return function (err, files) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([ - go$readdir, - [path, options, cb], - err, - startTime || Date.now(), - Date.now() - ]) - else { - if (files && files.sort) - files.sort() - - if (typeof cb === 'function') - cb.call(this, err, files) - } - } - } - } - - if (process.version.substr(0, 4) === 'v0.8') { - var legStreams = legacy(fs) - ReadStream = legStreams.ReadStream - WriteStream = legStreams.WriteStream - } - - var fs$ReadStream = fs.ReadStream - if (fs$ReadStream) { - ReadStream.prototype = Object.create(fs$ReadStream.prototype) - ReadStream.prototype.open = ReadStream$open - } - - var fs$WriteStream = fs.WriteStream - if (fs$WriteStream) { - WriteStream.prototype = Object.create(fs$WriteStream.prototype) - WriteStream.prototype.open = WriteStream$open - } - - Object.defineProperty(fs, 'ReadStream', { - get: function () { - return ReadStream - }, - set: function (val) { - ReadStream = val - }, - enumerable: true, - configurable: true - }) - Object.defineProperty(fs, 'WriteStream', { - get: function () { - return WriteStream - }, - set: function (val) { - WriteStream = val - }, - enumerable: true, - configurable: true - }) - - // legacy names - var FileReadStream = ReadStream - Object.defineProperty(fs, 'FileReadStream', { - get: function () { - return FileReadStream - }, - set: function (val) { - FileReadStream = val - }, - enumerable: true, - configurable: true - }) - var FileWriteStream = WriteStream - Object.defineProperty(fs, 'FileWriteStream', { - get: function () { - return FileWriteStream - }, - set: function (val) { - FileWriteStream = val - }, - enumerable: true, - configurable: true - }) - - function ReadStream (path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments) - } - - function ReadStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - if (that.autoClose) - that.destroy() - - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - that.read() - } - }) - } - - function WriteStream (path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments) - } - - function WriteStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - that.destroy() - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - } - }) - } - - function createReadStream (path, options) { - return new fs.ReadStream(path, options) - } - - function createWriteStream (path, options) { - return new fs.WriteStream(path, options) - } - - var fs$open = fs.open - fs.open = open - function open (path, flags, mode, cb) { - if (typeof mode === 'function') - cb = mode, mode = null - - return go$open(path, flags, mode, cb) - - function go$open (path, flags, mode, cb, startTime) { - return fs$open(path, flags, mode, function (err, fd) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - return fs -} - -function enqueue (elem) { - debug('ENQUEUE', elem[0].name, elem[1]) - fs[gracefulQueue].push(elem) - retry() -} - -// keep track of the timeout between retry() calls -var retryTimer - -// reset the startTime and lastTime to now -// this resets the start of the 60 second overall timeout as well as the -// delay between attempts so that we'll retry these jobs sooner -function resetQueue () { - var now = Date.now() - for (var i = 0; i < fs[gracefulQueue].length; ++i) { - // entries that are only a length of 2 are from an older version, don't - // bother modifying those since they'll be retried anyway. - if (fs[gracefulQueue][i].length > 2) { - fs[gracefulQueue][i][3] = now // startTime - fs[gracefulQueue][i][4] = now // lastTime - } - } - // call retry to make sure we're actively processing the queue - retry() -} - -function retry () { - // clear the timer and remove it to help prevent unintended concurrency - clearTimeout(retryTimer) - retryTimer = undefined - - if (fs[gracefulQueue].length === 0) - return - - var elem = fs[gracefulQueue].shift() - var fn = elem[0] - var args = elem[1] - // these items may be unset if they were added by an older graceful-fs - var err = elem[2] - var startTime = elem[3] - var lastTime = elem[4] - - // if we don't have a startTime we have no way of knowing if we've waited - // long enough, so go ahead and retry this item now - if (startTime === undefined) { - debug('RETRY', fn.name, args) - fn.apply(null, args) - } else if (Date.now() - startTime >= 60000) { - // it's been more than 60 seconds total, bail now - debug('TIMEOUT', fn.name, args) - var cb = args.pop() - if (typeof cb === 'function') - cb.call(null, err) - } else { - // the amount of time between the last attempt and right now - var sinceAttempt = Date.now() - lastTime - // the amount of time between when we first tried, and when we last tried - // rounded up to at least 1 - var sinceStart = Math.max(lastTime - startTime, 1) - // backoff. wait longer than the total time we've been retrying, but only - // up to a maximum of 100ms - var desiredDelay = Math.min(sinceStart * 1.2, 100) - // it's been long enough since the last retry, do it again - if (sinceAttempt >= desiredDelay) { - debug('RETRY', fn.name, args) - fn.apply(null, args.concat([startTime])) - } else { - // if we can't do this job yet, push it to the end of the queue - // and let the next iteration check again - fs[gracefulQueue].push(elem) - } - } - - // schedule our next run if one isn't already scheduled - if (retryTimer === undefined) { - retryTimer = setTimeout(retry, 0) - } -} - - -/***/ }), - -/***/ 54410: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var Stream = (__nccwpck_require__(12781).Stream) - -module.exports = legacy - -function legacy (fs) { - return { - ReadStream: ReadStream, - WriteStream: WriteStream - } - - function ReadStream (path, options) { - if (!(this instanceof ReadStream)) return new ReadStream(path, options); - - Stream.call(this); - - var self = this; - - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; - - this.flags = 'r'; - this.mode = 438; /*=0666*/ - this.bufferSize = 64 * 1024; - - options = options || {}; - - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - - if (this.encoding) this.setEncoding(this.encoding); - - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.end === undefined) { - this.end = Infinity; - } else if ('number' !== typeof this.end) { - throw TypeError('end must be a Number'); - } - - if (this.start > this.end) { - throw new Error('start must be <= end'); - } - - this.pos = this.start; - } - - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } - - fs.open(this.path, this.flags, this.mode, function (err, fd) { - if (err) { - self.emit('error', err); - self.readable = false; - return; - } - - self.fd = fd; - self.emit('open', fd); - self._read(); - }) - } - - function WriteStream (path, options) { - if (!(this instanceof WriteStream)) return new WriteStream(path, options); - - Stream.call(this); - - this.path = path; - this.fd = null; - this.writable = true; - - this.flags = 'w'; - this.encoding = 'binary'; - this.mode = 438; /*=0666*/ - this.bytesWritten = 0; - - options = options || {}; - - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.start < 0) { - throw new Error('start must be >= zero'); - } - - this.pos = this.start; - } - - this.busy = false; - this._queue = []; - - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } -} - - -/***/ }), - -/***/ 11290: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var constants = __nccwpck_require__(22057) - -var origCwd = process.cwd -var cwd = null - -var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform - -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -try { - process.cwd() -} catch (er) {} - -// This check is needed until node.js 12 is required -if (typeof process.chdir === 'function') { - var chdir = process.chdir - process.chdir = function (d) { - cwd = null - chdir.call(process, d) - } - if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) -} - -module.exports = patch - -function patch (fs) { - // (re-)implement some things that are known busted or missing. - - // lchmod, broken prior to 0.6.2 - // back-port the fix here. - if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs) - } - - // lutimes implementation, or no-op - if (!fs.lutimes) { - patchLutimes(fs) - } - - // https://github.com/isaacs/node-graceful-fs/issues/4 - // Chown should not fail on einval or eperm if non-root. - // It should not fail on enosys ever, as this just indicates - // that a fs doesn't support the intended operation. - - fs.chown = chownFix(fs.chown) - fs.fchown = chownFix(fs.fchown) - fs.lchown = chownFix(fs.lchown) - - fs.chmod = chmodFix(fs.chmod) - fs.fchmod = chmodFix(fs.fchmod) - fs.lchmod = chmodFix(fs.lchmod) - - fs.chownSync = chownFixSync(fs.chownSync) - fs.fchownSync = chownFixSync(fs.fchownSync) - fs.lchownSync = chownFixSync(fs.lchownSync) - - fs.chmodSync = chmodFixSync(fs.chmodSync) - fs.fchmodSync = chmodFixSync(fs.fchmodSync) - fs.lchmodSync = chmodFixSync(fs.lchmodSync) - - fs.stat = statFix(fs.stat) - fs.fstat = statFix(fs.fstat) - fs.lstat = statFix(fs.lstat) - - fs.statSync = statFixSync(fs.statSync) - fs.fstatSync = statFixSync(fs.fstatSync) - fs.lstatSync = statFixSync(fs.lstatSync) - - // if lchmod/lchown do not exist, then make them no-ops - if (fs.chmod && !fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - if (cb) process.nextTick(cb) - } - fs.lchmodSync = function () {} - } - if (fs.chown && !fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - if (cb) process.nextTick(cb) - } - fs.lchownSync = function () {} - } - - // on Windows, A/V software can lock the directory, causing this - // to fail with an EACCES or EPERM if the directory contains newly - // created files. Try again on failure, for up to 60 seconds. - - // Set the timeout this long because some Windows Anti-Virus, such as Parity - // bit9, may lock files for up to a minute, causing npm package install - // failures. Also, take care to yield the scheduler. Windows scheduling gives - // CPU to a busy looping process, which can cause the program causing the lock - // contention to be starved of CPU by node, so the contention doesn't resolve. - if (platform === "win32") { - fs.rename = typeof fs.rename !== 'function' ? fs.rename - : (function (fs$rename) { - function rename (from, to, cb) { - var start = Date.now() - var backoff = 0; - fs$rename(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") - && Date.now() - start < 60000) { - setTimeout(function() { - fs.stat(to, function (stater, st) { - if (stater && stater.code === "ENOENT") - fs$rename(from, to, CB); - else - cb(er) - }) - }, backoff) - if (backoff < 100) - backoff += 10; - return; - } - if (cb) cb(er) - }) - } - if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) - return rename - })(fs.rename) - } - - // if read() returns EAGAIN, then just try it again. - fs.read = typeof fs.read !== 'function' ? fs.read - : (function (fs$read) { - function read (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - - // This ensures `util.promisify` works as it does for native `fs.read`. - if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) - return read - })(fs.read) - - fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync - : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } - }})(fs.readSync) - - function patchLchmod (fs) { - fs.lchmod = function (path, mode, callback) { - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - if (callback) callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - if (callback) callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var threw = true - var ret - try { - ret = fs.fchmodSync(fd, mode) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } - } - - function patchLutimes (fs) { - if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - if (er) { - if (cb) cb(er) - return - } - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - if (cb) cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - var ret - var threw = true - try { - ret = fs.futimesSync(fd, at, mt) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } - - } else if (fs.futimes) { - fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } - fs.lutimesSync = function () {} - } - } - - function chmodFix (orig) { - if (!orig) return orig - return function (target, mode, cb) { - return orig.call(fs, target, mode, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } - } - - function chmodFixSync (orig) { - if (!orig) return orig - return function (target, mode) { - try { - return orig.call(fs, target, mode) - } catch (er) { - if (!chownErOk(er)) throw er - } - } - } - - - function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } - } - - function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } - } - - function statFix (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - function callback (er, stats) { - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - } - if (cb) cb.apply(this, arguments) - } - return options ? orig.call(fs, target, options, callback) - : orig.call(fs, target, callback) - } - } - - function statFixSync (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options) { - var stats = options ? orig.call(fs, target, options) - : orig.call(fs, target) - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - } - return stats; - } - } - - // ENOSYS means that the fs doesn't support the op. Just ignore - // that, because it doesn't matter. - // - // if there's no getuid, or if getuid() is something other - // than 0, and the error is EINVAL or EPERM, then just ignore - // it. - // - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // - // When running as root, or if other types of errors are - // encountered, then it's strict. - function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false - } -} - - -/***/ }), - -/***/ 94708: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const fs = __nccwpck_require__(57147); -const sections = __nccwpck_require__(31040); -const defaults = __nccwpck_require__(44591); -const stringify = __nccwpck_require__(31843); -const excerpt = __nccwpck_require__(48290); -const engines = __nccwpck_require__(83186); -const toFile = __nccwpck_require__(11835); -const parse = __nccwpck_require__(44040); -const utils = __nccwpck_require__(33645); - -/** - * Takes a string or object with `content` property, extracts - * and parses front-matter from the string, then returns an object - * with `data`, `content` and other [useful properties](#returned-object). - * - * ```js - * const matter = require('gray-matter'); - * console.log(matter('---\ntitle: Home\n---\nOther stuff')); - * //=> { data: { title: 'Home'}, content: 'Other stuff' } - * ``` - * @param {Object|String} `input` String, or object with `content` string - * @param {Object} `options` - * @return {Object} - * @api public - */ - -function matter(input, options) { - if (input === '') { - return { data: {}, content: input, excerpt: '', orig: input }; - } - - let file = toFile(input); - const cached = matter.cache[file.content]; - - if (!options) { - if (cached) { - file = Object.assign({}, cached); - file.orig = cached.orig; - return file; - } - - // only cache if there are no options passed. if we cache when options - // are passed, we would need to also cache options values, which would - // negate any performance benefits of caching - matter.cache[file.content] = file; - } - - return parseMatter(file, options); -} - -/** - * Parse front matter - */ - -function parseMatter(file, options) { - const opts = defaults(options); - const open = opts.delimiters[0]; - const close = '\n' + opts.delimiters[1]; - let str = file.content; - - if (opts.language) { - file.language = opts.language; - } - - // get the length of the opening delimiter - const openLen = open.length; - if (!utils.startsWith(str, open, openLen)) { - excerpt(file, opts); - return file; - } - - // if the next character after the opening delimiter is - // a character from the delimiter, then it's not a front- - // matter delimiter - if (str.charAt(openLen) === open.slice(-1)) { - return file; - } - - // strip the opening delimiter - str = str.slice(openLen); - const len = str.length; - - // use the language defined after first delimiter, if it exists - const language = matter.language(str, opts); - if (language.name) { - file.language = language.name; - str = str.slice(language.raw.length); - } - - // get the index of the closing delimiter - let closeIndex = str.indexOf(close); - if (closeIndex === -1) { - closeIndex = len; - } - - // get the raw front-matter block - file.matter = str.slice(0, closeIndex); - - const block = file.matter.replace(/^\s*#[^\n]+/gm, '').trim(); - if (block === '') { - file.isEmpty = true; - file.empty = file.content; - file.data = {}; - } else { - - // create file.data by parsing the raw file.matter block - file.data = parse(file.language, file.matter, opts); - } - - // update file.content - if (closeIndex === len) { - file.content = ''; - } else { - file.content = str.slice(closeIndex + close.length); - if (file.content[0] === '\r') { - file.content = file.content.slice(1); - } - if (file.content[0] === '\n') { - file.content = file.content.slice(1); - } - } - - excerpt(file, opts); - - if (opts.sections === true || typeof opts.section === 'function') { - sections(file, opts.section); - } - return file; -} - -/** - * Expose engines - */ - -matter.engines = engines; - -/** - * Stringify an object to YAML or the specified language, and - * append it to the given string. By default, only YAML and JSON - * can be stringified. See the [engines](#engines) section to learn - * how to stringify other languages. - * - * ```js - * console.log(matter.stringify('foo bar baz', {title: 'Home'})); - * // results in: - * // --- - * // title: Home - * // --- - * // foo bar baz - * ``` - * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string. - * @param {Object} `data` Front matter to stringify. - * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml]. - * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string. - * @api public - */ - -matter.stringify = function(file, data, options) { - if (typeof file === 'string') file = matter(file, options); - return stringify(file, data, options); -}; - -/** - * Synchronously read a file from the file system and parse - * front matter. Returns the same object as the [main function](#matter). - * - * ```js - * const file = matter.read('./content/blog-post.md'); - * ``` - * @param {String} `filepath` file path of the file to read. - * @param {Object} `options` [Options](#options) to pass to gray-matter. - * @return {Object} Returns [an object](#returned-object) with `data` and `content` - * @api public - */ - -matter.read = function(filepath, options) { - const str = fs.readFileSync(filepath, 'utf8'); - const file = matter(str, options); - file.path = filepath; - return file; -}; - -/** - * Returns true if the given `string` has front matter. - * @param {String} `string` - * @param {Object} `options` - * @return {Boolean} True if front matter exists. - * @api public - */ - -matter.test = function(str, options) { - return utils.startsWith(str, defaults(options).delimiters[0]); -}; - -/** - * Detect the language to use, if one is defined after the - * first front-matter delimiter. - * @param {String} `string` - * @param {Object} `options` - * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed - */ - -matter.language = function(str, options) { - const opts = defaults(options); - const open = opts.delimiters[0]; - - if (matter.test(str)) { - str = str.slice(open.length); - } - - const language = str.slice(0, str.search(/\r?\n/)); - return { - raw: language, - name: language ? language.trim() : '' - }; -}; - -/** - * Expose `matter` - */ - -matter.cache = {}; -matter.clearCache = function() { - matter.cache = {}; -}; -module.exports = matter; - - -/***/ }), - -/***/ 44591: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const engines = __nccwpck_require__(83186); -const utils = __nccwpck_require__(33645); - -module.exports = function(options) { - const opts = Object.assign({}, options); - - // ensure that delimiters are an array - opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---'); - if (opts.delimiters.length === 1) { - opts.delimiters.push(opts.delimiters[0]); - } - - opts.language = (opts.language || opts.lang || 'yaml').toLowerCase(); - opts.engines = Object.assign({}, engines, opts.parsers, opts.engines); - return opts; -}; - - -/***/ }), - -/***/ 9801: -/***/ ((module) => { - -"use strict"; - - -module.exports = function(name, options) { - let engine = options.engines[name] || options.engines[aliase(name)]; - if (typeof engine === 'undefined') { - throw new Error('gray-matter engine "' + name + '" is not registered'); - } - if (typeof engine === 'function') { - engine = { parse: engine }; - } - return engine; -}; - -function aliase(name) { - switch (name.toLowerCase()) { - case 'js': - case 'javascript': - return 'javascript'; - case 'coffee': - case 'coffeescript': - case 'cson': - return 'coffee'; - case 'yaml': - case 'yml': - return 'yaml'; - default: { - return name; - } - } -} - - -/***/ }), - -/***/ 83186: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -const yaml = __nccwpck_require__(26264); - -/** - * Default engines - */ - -const engines = exports = module.exports; - -/** - * YAML - */ - -engines.yaml = { - parse: yaml.safeLoad.bind(yaml), - stringify: yaml.safeDump.bind(yaml) -}; - -/** - * JSON - */ - -engines.json = { - parse: JSON.parse.bind(JSON), - stringify: function(obj, options) { - const opts = Object.assign({replacer: null, space: 2}, options); - return JSON.stringify(obj, opts.replacer, opts.space); - } -}; - -/** - * JavaScript - */ - -engines.javascript = { - parse: function parse(str, options, wrap) { - /* eslint no-eval: 0 */ - try { - if (wrap !== false) { - str = '(function() {\nreturn ' + str.trim() + ';\n}());'; - } - return eval(str) || {}; - } catch (err) { - if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) { - return parse(str, options, false); - } - throw new SyntaxError(err); - } - }, - stringify: function() { - throw new Error('stringifying JavaScript is not supported'); - } -}; - - -/***/ }), - -/***/ 48290: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const defaults = __nccwpck_require__(44591); - -module.exports = function(file, options) { - const opts = defaults(options); - - if (file.data == null) { - file.data = {}; - } - - if (typeof opts.excerpt === 'function') { - return opts.excerpt(file, opts); - } - - const sep = file.data.excerpt_separator || opts.excerpt_separator; - if (sep == null && (opts.excerpt === false || opts.excerpt == null)) { - return file; - } - - const delimiter = typeof opts.excerpt === 'string' - ? opts.excerpt - : (sep || opts.delimiters[0]); - - // if enabled, get the excerpt defined after front-matter - const idx = file.content.indexOf(delimiter); - if (idx !== -1) { - file.excerpt = file.content.slice(0, idx); - } - - return file; -}; - - -/***/ }), - -/***/ 44040: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const getEngine = __nccwpck_require__(9801); -const defaults = __nccwpck_require__(44591); - -module.exports = function(language, str, options) { - const opts = defaults(options); - const engine = getEngine(language, opts); - if (typeof engine.parse !== 'function') { - throw new TypeError('expected "' + language + '.parse" to be a function'); - } - return engine.parse(str, opts); -}; - - -/***/ }), - -/***/ 31843: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const typeOf = __nccwpck_require__(49413); -const getEngine = __nccwpck_require__(9801); -const defaults = __nccwpck_require__(44591); - -module.exports = function(file, data, options) { - if (data == null && options == null) { - switch (typeOf(file)) { - case 'object': - data = file.data; - options = {}; - break; - case 'string': - return file; - default: { - throw new TypeError('expected file to be a string or object'); - } - } - } - - const str = file.content; - const opts = defaults(options); - if (data == null) { - if (!opts.data) return file; - data = opts.data; - } - - const language = file.language || opts.language; - const engine = getEngine(language, opts); - if (typeof engine.stringify !== 'function') { - throw new TypeError('expected "' + language + '.stringify" to be a function'); - } - - data = Object.assign({}, file.data, data); - const open = opts.delimiters[0]; - const close = opts.delimiters[1]; - const matter = engine.stringify(data, options).trim(); - let buf = ''; - - if (matter !== '{}') { - buf = newline(open) + newline(matter) + newline(close); - } - - if (typeof file.excerpt === 'string' && file.excerpt !== '') { - if (str.indexOf(file.excerpt.trim()) === -1) { - buf += newline(file.excerpt) + newline(close); - } - } - - return buf + newline(str); -}; - -function newline(str) { - return str.slice(-1) !== '\n' ? str + '\n' : str; -} - - -/***/ }), - -/***/ 11835: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const typeOf = __nccwpck_require__(49413); -const stringify = __nccwpck_require__(31843); -const utils = __nccwpck_require__(33645); - -/** - * Normalize the given value to ensure an object is returned - * with the expected properties. - */ - -module.exports = function(file) { - if (typeOf(file) !== 'object') { - file = { content: file }; - } - - if (typeOf(file.data) !== 'object') { - file.data = {}; - } - - // if file was passed as an object, ensure that - // "file.content" is set - if (file.contents && file.content == null) { - file.content = file.contents; - } - - // set non-enumerable properties on the file object - utils.define(file, 'orig', utils.toBuffer(file.content)); - utils.define(file, 'language', file.language || ''); - utils.define(file, 'matter', file.matter || ''); - utils.define(file, 'stringify', function(data, options) { - if (options && options.language) { - file.language = options.language; - } - return stringify(file, data, options); - }); - - // strip BOM and ensure that "file.content" is a string - file.content = utils.toString(file.content); - file.isEmpty = false; - file.excerpt = ''; - return file; -}; - - -/***/ }), - -/***/ 33645: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -const stripBom = __nccwpck_require__(26574); -const typeOf = __nccwpck_require__(49413); - -exports.define = function(obj, key, val) { - Reflect.defineProperty(obj, key, { - enumerable: false, - configurable: true, - writable: true, - value: val - }); -}; - -/** - * Returns true if `val` is a buffer - */ - -exports.isBuffer = function(val) { - return typeOf(val) === 'buffer'; -}; - -/** - * Returns true if `val` is an object - */ - -exports.isObject = function(val) { - return typeOf(val) === 'object'; -}; - -/** - * Cast `input` to a buffer - */ - -exports.toBuffer = function(input) { - return typeof input === 'string' ? Buffer.from(input) : input; -}; - -/** - * Cast `val` to a string. - */ - -exports.toString = function(input) { - if (exports.isBuffer(input)) return stripBom(String(input)); - if (typeof input !== 'string') { - throw new TypeError('expected input to be a string or buffer'); - } - return stripBom(input); -}; - -/** - * Cast `val` to an array. - */ - -exports.arrayify = function(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -}; - -/** - * Returns true if `str` starts with `substr`. - */ - -exports.startsWith = function(str, substr, len) { - if (typeof len !== 'number') len = substr.length; - return str.slice(0, len) === substr; -}; - - -/***/ }), - -/***/ 64250: -/***/ ((module) => { - -"use strict"; - -module.exports = (flag, argv) => { - argv = argv || process.argv; - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const pos = argv.indexOf(prefix + flag); - const terminatorPos = argv.indexOf('--'); - return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); -}; - - -/***/ }), - -/***/ 793: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var bind = __nccwpck_require__(64517); - -module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); - - -/***/ }), - -/***/ 76919: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -try { - var util = __nccwpck_require__(73837); - /* istanbul ignore next */ - if (typeof util.inherits !== 'function') throw ''; - module.exports = util.inherits; -} catch (e) { - /* istanbul ignore next */ - module.exports = __nccwpck_require__(27526); -} - - -/***/ }), - -/***/ 27526: -/***/ ((module) => { - -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }) - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } - } -} - - -/***/ }), - -/***/ 84989: -/***/ ((module) => { - -"use strict"; - - -module.exports = alphabetical - -// Check if the given character code, or the character code at the first -// character, is alphabetical. -function alphabetical(character) { - var code = typeof character === 'string' ? character.charCodeAt(0) : character - - return ( - (code >= 97 && code <= 122) /* a-z */ || - (code >= 65 && code <= 90) /* A-Z */ - ) -} - - -/***/ }), - -/***/ 41536: -/***/ ((module) => { - -"use strict"; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return !/[^0-9a-z\xDF-\xFF]/.test(str.toLowerCase()); -}; - - -/***/ }), - -/***/ 1931: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var alphabetical = __nccwpck_require__(84989) -var decimal = __nccwpck_require__(76995) - -module.exports = alphanumerical - -// Check if the given character code, or the character code at the first -// character, is alphanumerical. -function alphanumerical(character) { - return alphabetical(character) || decimal(character) -} - - -/***/ }), - -/***/ 6324: -/***/ ((module) => { - -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh <https://feross.org> - * @license MIT - */ - -module.exports = function isBuffer (obj) { - return obj != null && obj.constructor != null && - typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - - -/***/ }), - -/***/ 18746: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var has = __nccwpck_require__(793); - -function specifierIncluded(current, specifier) { - var nodeParts = current.split('.'); - var parts = specifier.split(' '); - var op = parts.length > 1 ? parts[0] : '='; - var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); - - for (var i = 0; i < 3; ++i) { - var cur = parseInt(nodeParts[i] || 0, 10); - var ver = parseInt(versionParts[i] || 0, 10); - if (cur === ver) { - continue; // eslint-disable-line no-restricted-syntax, no-continue - } - if (op === '<') { - return cur < ver; - } - if (op === '>=') { - return cur >= ver; - } - return false; - } - return op === '>='; -} - -function matchesRange(current, range) { - var specifiers = range.split(/ ?&& ?/); - if (specifiers.length === 0) { - return false; - } - for (var i = 0; i < specifiers.length; ++i) { - if (!specifierIncluded(current, specifiers[i])) { - return false; - } - } - return true; -} - -function versionIncluded(nodeVersion, specifierValue) { - if (typeof specifierValue === 'boolean') { - return specifierValue; - } - - var current = typeof nodeVersion === 'undefined' - ? process.versions && process.versions.node - : nodeVersion; - - if (typeof current !== 'string') { - throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); - } - - if (specifierValue && typeof specifierValue === 'object') { - for (var i = 0; i < specifierValue.length; ++i) { - if (matchesRange(current, specifierValue[i])) { - return true; - } - } - return false; - } - return matchesRange(current, specifierValue); -} - -var data = __nccwpck_require__(94651); - -module.exports = function isCore(x, nodeVersion) { - return has(data, x) && versionIncluded(nodeVersion, data[x]); -}; - - -/***/ }), - -/***/ 76995: -/***/ ((module) => { - -"use strict"; - - -module.exports = decimal - -// Check if the given character code, or the character code at the first -// character, is decimal. -function decimal(character) { - var code = typeof character === 'string' ? character.charCodeAt(0) : character - - return code >= 48 && code <= 57 /* 0-9 */ -} - - -/***/ }), - -/***/ 77242: -/***/ ((module) => { - -"use strict"; -/*! - * is-extendable <https://github.com/jonschlinkert/is-extendable> - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; - - -/***/ }), - -/***/ 95731: -/***/ ((module) => { - -"use strict"; - - -module.exports = hexadecimal - -// Check if the given character code, or the character code at the first -// character, is hexadecimal. -function hexadecimal(character) { - var code = typeof character === 'string' ? character.charCodeAt(0) : character - - return ( - (code >= 97 /* a */ && code <= 102) /* z */ || - (code >= 65 /* A */ && code <= 70) /* Z */ || - (code >= 48 /* A */ && code <= 57) /* Z */ - ) -} - - -/***/ }), - -/***/ 67337: -/***/ ((module) => { - -"use strict"; - - -module.exports = value => { - if (Object.prototype.toString.call(value) !== '[object Object]') { - return false; - } - - const prototype = Object.getPrototypeOf(value); - return prototype === null || prototype === Object.prototype; -}; - - -/***/ }), - -/***/ 35708: -/***/ ((module) => { - -"use strict"; - - -module.exports = whitespace - -var fromCode = String.fromCharCode -var re = /\s/ - -// Check if the given character code, or the character code at the first -// character, is a whitespace character. -function whitespace(character) { - return re.test( - typeof character === 'number' ? fromCode(character) : character.charAt(0) - ) -} - - -/***/ }), - -/***/ 59685: -/***/ ((module) => { - -"use strict"; - - -module.exports = wordCharacter - -var fromCode = String.fromCharCode -var re = /\w/ - -// Check if the given character code, or the character code at the first -// character, is a word character. -function wordCharacter(character) { - return re.test( - typeof character === 'number' ? fromCode(character) : character.charAt(0) - ) -} - - -/***/ }), - -/***/ 48035: -/***/ ((__unused_webpack_module, exports) => { - -// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell -// License: MIT. (See LICENSE.) - -Object.defineProperty(exports, "__esModule", ({ - value: true -})) - -// This regex comes from regex.coffee, and is inserted here by generate-index.js -// (run `npm run build`). -exports["default"] = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g - -exports.matchToToken = function(match) { - var token = {type: "invalid", value: match[0], closed: undefined} - if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]) - else if (match[ 5]) token.type = "comment" - else if (match[ 6]) token.type = "comment", token.closed = !!match[7] - else if (match[ 8]) token.type = "regex" - else if (match[ 9]) token.type = "number" - else if (match[10]) token.type = "name" - else if (match[11]) token.type = "punctuator" - else if (match[12]) token.type = "whitespace" - return token -} - - -/***/ }), - -/***/ 26264: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - - -var yaml = __nccwpck_require__(34847); - - -module.exports = yaml; - - -/***/ }), - -/***/ 34847: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - - -var loader = __nccwpck_require__(20055); -var dumper = __nccwpck_require__(29652); - - -function deprecated(name) { - return function () { - throw new Error('Function ' + name + ' is deprecated and cannot be used.'); - }; -} - - -module.exports.Type = __nccwpck_require__(92355); -module.exports.Schema = __nccwpck_require__(61181); -module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(93487); -module.exports.JSON_SCHEMA = __nccwpck_require__(74637); -module.exports.CORE_SCHEMA = __nccwpck_require__(80119); -module.exports.DEFAULT_SAFE_SCHEMA = __nccwpck_require__(39591); -module.exports.DEFAULT_FULL_SCHEMA = __nccwpck_require__(54250); -module.exports.load = loader.load; -module.exports.loadAll = loader.loadAll; -module.exports.safeLoad = loader.safeLoad; -module.exports.safeLoadAll = loader.safeLoadAll; -module.exports.dump = dumper.dump; -module.exports.safeDump = dumper.safeDump; -module.exports.YAMLException = __nccwpck_require__(30962); - -// Deprecated schema names from JS-YAML 2.0.x -module.exports.MINIMAL_SCHEMA = __nccwpck_require__(93487); -module.exports.SAFE_SCHEMA = __nccwpck_require__(39591); -module.exports.DEFAULT_SCHEMA = __nccwpck_require__(54250); - -// Deprecated functions from JS-YAML 1.x.x -module.exports.scan = deprecated('scan'); -module.exports.parse = deprecated('parse'); -module.exports.compose = deprecated('compose'); -module.exports.addConstructor = deprecated('addConstructor'); - - -/***/ }), - -/***/ 75974: -/***/ ((module) => { - -"use strict"; - - - -function isNothing(subject) { - return (typeof subject === 'undefined') || (subject === null); -} - - -function isObject(subject) { - return (typeof subject === 'object') && (subject !== null); -} - - -function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; - - return [ sequence ]; -} - - -function extend(target, source) { - var index, length, key, sourceKeys; - - if (source) { - sourceKeys = Object.keys(source); - - for (index = 0, length = sourceKeys.length; index < length; index += 1) { - key = sourceKeys[index]; - target[key] = source[key]; - } - } - - return target; -} - - -function repeat(string, count) { - var result = '', cycle; - - for (cycle = 0; cycle < count; cycle += 1) { - result += string; - } - - return result; -} - - -function isNegativeZero(number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); -} - - -module.exports.isNothing = isNothing; -module.exports.isObject = isObject; -module.exports.toArray = toArray; -module.exports.repeat = repeat; -module.exports.isNegativeZero = isNegativeZero; -module.exports.extend = extend; - - -/***/ }), - -/***/ 29652: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -/*eslint-disable no-use-before-define*/ - -var common = __nccwpck_require__(75974); -var YAMLException = __nccwpck_require__(30962); -var DEFAULT_FULL_SCHEMA = __nccwpck_require__(54250); -var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(39591); - -var _toString = Object.prototype.toString; -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -var CHAR_TAB = 0x09; /* Tab */ -var CHAR_LINE_FEED = 0x0A; /* LF */ -var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ -var CHAR_SPACE = 0x20; /* Space */ -var CHAR_EXCLAMATION = 0x21; /* ! */ -var CHAR_DOUBLE_QUOTE = 0x22; /* " */ -var CHAR_SHARP = 0x23; /* # */ -var CHAR_PERCENT = 0x25; /* % */ -var CHAR_AMPERSAND = 0x26; /* & */ -var CHAR_SINGLE_QUOTE = 0x27; /* ' */ -var CHAR_ASTERISK = 0x2A; /* * */ -var CHAR_COMMA = 0x2C; /* , */ -var CHAR_MINUS = 0x2D; /* - */ -var CHAR_COLON = 0x3A; /* : */ -var CHAR_EQUALS = 0x3D; /* = */ -var CHAR_GREATER_THAN = 0x3E; /* > */ -var CHAR_QUESTION = 0x3F; /* ? */ -var CHAR_COMMERCIAL_AT = 0x40; /* @ */ -var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ -var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ -var CHAR_GRAVE_ACCENT = 0x60; /* ` */ -var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ -var CHAR_VERTICAL_LINE = 0x7C; /* | */ -var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ - -var ESCAPE_SEQUENCES = {}; - -ESCAPE_SEQUENCES[0x00] = '\\0'; -ESCAPE_SEQUENCES[0x07] = '\\a'; -ESCAPE_SEQUENCES[0x08] = '\\b'; -ESCAPE_SEQUENCES[0x09] = '\\t'; -ESCAPE_SEQUENCES[0x0A] = '\\n'; -ESCAPE_SEQUENCES[0x0B] = '\\v'; -ESCAPE_SEQUENCES[0x0C] = '\\f'; -ESCAPE_SEQUENCES[0x0D] = '\\r'; -ESCAPE_SEQUENCES[0x1B] = '\\e'; -ESCAPE_SEQUENCES[0x22] = '\\"'; -ESCAPE_SEQUENCES[0x5C] = '\\\\'; -ESCAPE_SEQUENCES[0x85] = '\\N'; -ESCAPE_SEQUENCES[0xA0] = '\\_'; -ESCAPE_SEQUENCES[0x2028] = '\\L'; -ESCAPE_SEQUENCES[0x2029] = '\\P'; - -var DEPRECATED_BOOLEANS_SYNTAX = [ - 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', - 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' -]; - -function compileStyleMap(schema, map) { - var result, keys, index, length, tag, style, type; - - if (map === null) return {}; - - result = {}; - keys = Object.keys(map); - - for (index = 0, length = keys.length; index < length; index += 1) { - tag = keys[index]; - style = String(map[tag]); - - if (tag.slice(0, 2) === '!!') { - tag = 'tag:yaml.org,2002:' + tag.slice(2); - } - type = schema.compiledTypeMap['fallback'][tag]; - - if (type && _hasOwnProperty.call(type.styleAliases, style)) { - style = type.styleAliases[style]; - } - - result[tag] = style; - } - - return result; -} - -function encodeHex(character) { - var string, handle, length; - - string = character.toString(16).toUpperCase(); - - if (character <= 0xFF) { - handle = 'x'; - length = 2; - } else if (character <= 0xFFFF) { - handle = 'u'; - length = 4; - } else if (character <= 0xFFFFFFFF) { - handle = 'U'; - length = 8; - } else { - throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); - } - - return '\\' + handle + common.repeat('0', length - string.length) + string; -} - -function State(options) { - this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; - this.indent = Math.max(1, (options['indent'] || 2)); - this.noArrayIndent = options['noArrayIndent'] || false; - this.skipInvalid = options['skipInvalid'] || false; - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); - this.styleMap = compileStyleMap(this.schema, options['styles'] || null); - this.sortKeys = options['sortKeys'] || false; - this.lineWidth = options['lineWidth'] || 80; - this.noRefs = options['noRefs'] || false; - this.noCompatMode = options['noCompatMode'] || false; - this.condenseFlow = options['condenseFlow'] || false; - - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; - - this.tag = null; - this.result = ''; - - this.duplicates = []; - this.usedDuplicates = null; -} - -// Indents every line in a string. Empty lines (\n only) are not indented. -function indentString(string, spaces) { - var ind = common.repeat(' ', spaces), - position = 0, - next = -1, - result = '', - line, - length = string.length; - - while (position < length) { - next = string.indexOf('\n', position); - if (next === -1) { - line = string.slice(position); - position = length; - } else { - line = string.slice(position, next + 1); - position = next + 1; - } - - if (line.length && line !== '\n') result += ind; - - result += line; - } - - return result; -} - -function generateNextLine(state, level) { - return '\n' + common.repeat(' ', state.indent * level); -} - -function testImplicitResolving(state, str) { - var index, length, type; - - for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { - type = state.implicitTypes[index]; - - if (type.resolve(str)) { - return true; - } - } - - return false; -} - -// [33] s-white ::= s-space | s-tab -function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; -} - -// Returns true if the character can be printed without escaping. -// From YAML 1.2: "any allowed characters known to be non-printable -// should also be escaped. [However,] This isn’t mandatory" -// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. -function isPrintable(c) { - return (0x00020 <= c && c <= 0x00007E) - || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) - || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) - || (0x10000 <= c && c <= 0x10FFFF); -} - -// [34] ns-char ::= nb-char - s-white -// [27] nb-char ::= c-printable - b-char - c-byte-order-mark -// [26] b-char ::= b-line-feed | b-carriage-return -// [24] b-line-feed ::= #xA /* LF */ -// [25] b-carriage-return ::= #xD /* CR */ -// [3] c-byte-order-mark ::= #xFEFF -function isNsChar(c) { - return isPrintable(c) && !isWhitespace(c) - // byte-order-mark - && c !== 0xFEFF - // b-char - && c !== CHAR_CARRIAGE_RETURN - && c !== CHAR_LINE_FEED; -} - -// Simplified test for values allowed after the first character in plain style. -function isPlainSafe(c, prev) { - // Uses a subset of nb-char - c-flow-indicator - ":" - "#" - // where nb-char ::= c-printable - b-char - c-byte-order-mark. - return isPrintable(c) && c !== 0xFEFF - // - c-flow-indicator - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // - ":" - "#" - // /* An ns-char preceding */ "#" - && c !== CHAR_COLON - && ((c !== CHAR_SHARP) || (prev && isNsChar(prev))); -} - -// Simplified test for values allowed as the first character in plain style. -function isPlainSafeFirst(c) { - // Uses a subset of ns-char - c-indicator - // where ns-char = nb-char - s-white. - return isPrintable(c) && c !== 0xFEFF - && !isWhitespace(c) // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - && c !== CHAR_MINUS - && c !== CHAR_QUESTION - && c !== CHAR_COLON - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - && c !== CHAR_SHARP - && c !== CHAR_AMPERSAND - && c !== CHAR_ASTERISK - && c !== CHAR_EXCLAMATION - && c !== CHAR_VERTICAL_LINE - && c !== CHAR_EQUALS - && c !== CHAR_GREATER_THAN - && c !== CHAR_SINGLE_QUOTE - && c !== CHAR_DOUBLE_QUOTE - // | “%” | “@” | “`”) - && c !== CHAR_PERCENT - && c !== CHAR_COMMERCIAL_AT - && c !== CHAR_GRAVE_ACCENT; -} - -// Determines whether block indentation indicator is required. -function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); -} - -var STYLE_PLAIN = 1, - STYLE_SINGLE = 2, - STYLE_LITERAL = 3, - STYLE_FOLDED = 4, - STYLE_DOUBLE = 5; - -// Determines which scalar styles are possible and returns the preferred style. -// lineWidth = -1 => no limit. -// Pre-conditions: str.length > 0. -// Post-conditions: -// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. -// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). -// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). -function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { - var i; - var char, prev_char; - var hasLineBreak = false; - var hasFoldableLine = false; // only checked if shouldTrackWidth - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; // count the first line correctly - var plain = isPlainSafeFirst(string.charCodeAt(0)) - && !isWhitespace(string.charCodeAt(string.length - 1)); - - if (singleLineOnly) { - // Case: no block styles. - // Check for disallowed characters to rule out plain and single. - for (i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - prev_char = i > 0 ? string.charCodeAt(i - 1) : null; - plain = plain && isPlainSafe(char, prev_char); - } - } else { - // Case: block styles permitted. - for (i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - // Check if any line can be folded. - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || - // Foldable line = too long, and not more-indented. - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' '); - previousLineBreak = i; - } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - prev_char = i > 0 ? string.charCodeAt(i - 1) : null; - plain = plain && isPlainSafe(char, prev_char); - } - // in case the end is missing a \n - hasFoldableLine = hasFoldableLine || (shouldTrackWidth && - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')); - } - // Although every style can represent \n without escaping, prefer block styles - // for multiline, since they're more readable and they don't add empty lines. - // Also prefer folding a super-long line. - if (!hasLineBreak && !hasFoldableLine) { - // Strings interpretable as another type have to be quoted; - // e.g. the string 'true' vs. the boolean true. - return plain && !testAmbiguousType(string) - ? STYLE_PLAIN : STYLE_SINGLE; - } - // Edge case: block indentation indicator can only have one digit. - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; - } - // At this point we know block styles are valid. - // Prefer literal style unless we want to fold. - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; -} - -// Note: line breaking/folding is implemented for only the folded style. -// NB. We drop the last trailing newline (if any) of a returned block scalar -// since the dumper adds its own newline. This always works: -// • No ending newline => unaffected; already using strip "-" chomping. -// • Ending newline => removed then restored. -// Importantly, this keeps the "+" chomp indicator from gaining an extra line. -function writeScalar(state, string, level, iskey) { - state.dump = (function () { - if (string.length === 0) { - return "''"; - } - if (!state.noCompatMode && - DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { - return "'" + string + "'"; - } - - var indent = state.indent * Math.max(1, level); // no 0-indent scalars - // As indentation gets deeper, let the width decrease monotonically - // to the lower bound min(state.lineWidth, 40). - // Note that this implies - // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. - // state.lineWidth > 40 + state.indent: width decreases until the lower bound. - // This behaves better than a constant minimum width which disallows narrower options, - // or an indent threshold which causes the width to suddenly increase. - var lineWidth = state.lineWidth === -1 - ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); - - // Without knowing if keys are implicit/explicit, assume implicit for safety. - var singleLineOnly = iskey - // No block styles in flow mode. - || (state.flowLevel > -1 && level >= state.flowLevel); - function testAmbiguity(string) { - return testImplicitResolving(state, string); - } - - switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { - case STYLE_PLAIN: - return string; - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; - case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(string, indent)); - case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); - case STYLE_DOUBLE: - return '"' + escapeString(string, lineWidth) + '"'; - default: - throw new YAMLException('impossible error: invalid scalar style'); - } - }()); -} - -// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. -function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; - - // note the special case: the string '\n' counts as a "trailing" empty line. - var clip = string[string.length - 1] === '\n'; - var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); - var chomp = keep ? '+' : (clip ? '' : '-'); - - return indentIndicator + chomp + '\n'; -} - -// (See the note for writeScalar.) -function dropEndingNewline(string) { - return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; -} - -// Note: a long line without a suitable break point will exceed the width limit. -// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. -function foldString(string, width) { - // In folded style, $k$ consecutive newlines output as $k+1$ newlines— - // unless they're before or after a more-indented line, or at the very - // beginning or end, in which case $k$ maps to $k$. - // Therefore, parse each chunk as newline(s) followed by a content line. - var lineRe = /(\n+)([^\n]*)/g; - - // first line (possibly an empty line) - var result = (function () { - var nextLF = string.indexOf('\n'); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - }()); - // If we haven't reached the first content line yet, don't add an extra \n. - var prevMoreIndented = string[0] === '\n' || string[0] === ' '; - var moreIndented; - - // rest of the lines - var match; - while ((match = lineRe.exec(string))) { - var prefix = match[1], line = match[2]; - moreIndented = (line[0] === ' '); - result += prefix - + (!prevMoreIndented && !moreIndented && line !== '' - ? '\n' : '') - + foldLine(line, width); - prevMoreIndented = moreIndented; - } - - return result; -} - -// Greedy line breaking. -// Picks the longest line under the limit each time, -// otherwise settles for the shortest line over the limit. -// NB. More-indented lines *cannot* be folded, as that would add an extra \n. -function foldLine(line, width) { - if (line === '' || line[0] === ' ') return line; - - // Since a more-indented line adds a \n, breaks can't be followed by a space. - var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. - var match; - // start is an inclusive index. end, curr, and next are exclusive. - var start = 0, end, curr = 0, next = 0; - var result = ''; - - // Invariants: 0 <= start <= length-1. - // 0 <= curr <= next <= max(0, length-2). curr - start <= width. - // Inside the loop: - // A match implies length >= 2, so curr and next are <= length-2. - while ((match = breakRe.exec(line))) { - next = match.index; - // maintain invariant: curr - start <= width - if (next - start > width) { - end = (curr > start) ? curr : next; // derive end <= length-2 - result += '\n' + line.slice(start, end); - // skip the space that was output as \n - start = end + 1; // derive start <= length-1 - } - curr = next; - } - - // By the invariants, start <= length-1, so there is something left over. - // It is either the whole string or a part starting from non-whitespace. - result += '\n'; - // Insert a break if the remainder is too long and there is a break available. - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + '\n' + line.slice(curr + 1); - } else { - result += line.slice(start); - } - - return result.slice(1); // drop extra \n joiner -} - -// Escapes a double-quoted string. -function escapeString(string) { - var result = ''; - var char, nextChar; - var escapeSeq; - - for (var i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). - if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) { - nextChar = string.charCodeAt(i + 1); - if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) { - // Combine the surrogate pair and store it escaped. - result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); - // Advance index one extra since we already used that char here. - i++; continue; - } - } - escapeSeq = ESCAPE_SEQUENCES[char]; - result += !escapeSeq && isPrintable(char) - ? string[i] - : escapeSeq || encodeHex(char); - } - - return result; -} - -function writeFlowSequence(state, level, object) { - var _result = '', - _tag = state.tag, - index, - length; - - for (index = 0, length = object.length; index < length; index += 1) { - // Write only valid elements. - if (writeNode(state, level, object[index], false, false)) { - if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); - _result += state.dump; - } - } - - state.tag = _tag; - state.dump = '[' + _result + ']'; -} - -function writeBlockSequence(state, level, object, compact) { - var _result = '', - _tag = state.tag, - index, - length; - - for (index = 0, length = object.length; index < length; index += 1) { - // Write only valid elements. - if (writeNode(state, level + 1, object[index], true, true)) { - if (!compact || index !== 0) { - _result += generateNextLine(state, level); - } - - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += '-'; - } else { - _result += '- '; - } - - _result += state.dump; - } - } - - state.tag = _tag; - state.dump = _result || '[]'; // Empty sequence if no valid values. -} - -function writeFlowMapping(state, level, object) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - pairBuffer; - - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - - pairBuffer = ''; - if (index !== 0) pairBuffer += ', '; - - if (state.condenseFlow) pairBuffer += '"'; - - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; - - if (!writeNode(state, level, objectKey, false, false)) { - continue; // Skip this pair because of invalid key; - } - - if (state.dump.length > 1024) pairBuffer += '? '; - - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); - - if (!writeNode(state, level, objectValue, false, false)) { - continue; // Skip this pair because of invalid value. - } - - pairBuffer += state.dump; - - // Both key and value are valid. - _result += pairBuffer; - } - - state.tag = _tag; - state.dump = '{' + _result + '}'; -} - -function writeBlockMapping(state, level, object, compact) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - explicitPair, - pairBuffer; - - // Allow sorting keys so that the output file is deterministic - if (state.sortKeys === true) { - // Default sorting - objectKeyList.sort(); - } else if (typeof state.sortKeys === 'function') { - // Custom sort function - objectKeyList.sort(state.sortKeys); - } else if (state.sortKeys) { - // Something is wrong - throw new YAMLException('sortKeys must be a boolean or a function'); - } - - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - pairBuffer = ''; - - if (!compact || index !== 0) { - pairBuffer += generateNextLine(state, level); - } - - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; - - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; // Skip this pair because of invalid key. - } + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); - explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024); + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += '?'; + // Several line breaks - perceive as different lines. } else { - pairBuffer += '? '; + state.result += common.repeat('\n', emptyLines); } - } - - pairBuffer += state.dump; - if (explicitPair) { - pairBuffer += generateNextLine(state, level); + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); } - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; // Skip this pair because of invalid value. - } + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ':'; - } else { - pairBuffer += ': '; + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); } - pairBuffer += state.dump; - - // Both key and value are valid. - _result += pairBuffer; + captureSegment(state, captureStart, state.position, false); } - state.tag = _tag; - state.dump = _result || '{}'; // Empty mapping if no valid pairs. + return true; } -function detectType(state, object, explicit) { - var _result, typeList, index, length, type, style; +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; - typeList = explicit ? state.explicitTypes : state.implicitTypes; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } - for (index = 0, length = typeList.length; index < length; index += 1) { - type = typeList[index]; + ch = state.input.charCodeAt(state.position); - if ((type.instanceOf || type.predicate) && - (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { + while (ch !== 0) { - state.tag = explicit ? type.tag : '?'; + if (ch !== 0x2D/* - */) { + break; + } - if (type.represent) { - style = state.styleMap[type.tag] || type.defaultStyle; + following = state.input.charCodeAt(state.position + 1); - if (_toString.call(type.represent) === '[object Function]') { - _result = type.represent(object, style); - } else if (_hasOwnProperty.call(type.represent, style)) { - _result = type.represent[style](object, style); - } else { - throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); - } + if (!is_WS_OR_EOL(following)) { + break; + } - state.dump = _result; + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; } + } - return true; + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; } } + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } return false; } -// Serializes `object` and writes it to global `result`. -// Returns true on success, or false on invalid object. -// -function writeNode(state, level, object, block, compact, iskey) { - state.tag = null; - state.dump = object; +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _pos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = {}, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; - if (!detectType(state, object, false)) { - detectType(state, object, true); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; } - var type = _toString.call(state.dump); + ch = state.input.charCodeAt(state.position); - if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level); - } + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + _pos = state.position; - var objectOrArray = type === '[object Object]' || type === '[object Array]', - duplicateIndex, - duplicate; + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; - } + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } - if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { - compact = false; - } + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = '*ref_' + duplicateIndex; - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; - } - if (type === '[object Object]') { - if (block && (Object.keys(state.dump).length !== 0)) { - writeBlockMapping(state, level, state.dump, compact); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; - } } else { - writeFlowMapping(state, level, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; - } + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); } - } else if (type === '[object Array]') { - var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level; - if (block && (state.dump.length !== 0)) { - writeBlockSequence(state, arrayLevel, state.dump, compact); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; - } - } else { - writeFlowSequence(state, arrayLevel, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); } - } - } else if (type === '[object String]') { - if (state.tag !== '?') { - writeScalar(state, state.dump, level, iskey); - } - } else { - if (state.skipInvalid) return false; - throw new YAMLException('unacceptable kind of an object to dump ' + type); - } - if (state.tag !== null && state.tag !== '?') { - state.dump = '!<' + state.tag + '> ' + state.dump; - } - } + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); - return true; -} + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } -function getDuplicateReferences(object, state) { - var objects = [], - duplicatesIndexes = [], - index, - length; + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } - inspectNode(object, objects, duplicatesIndexes); + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; - for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); - } - state.usedDuplicates = new Array(length); -} + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); -function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, - index, - length; + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } - if (object !== null && typeof object === 'object') { - index = objects.indexOf(object); - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. } + } else { - objects.push(object); + break; // Reading is done. Go to the epilogue. + } - if (Array.isArray(object)) { - for (index = 0, length = object.length; index < length; index += 1) { - inspectNode(object[index], objects, duplicatesIndexes); + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; } - } else { - objectKeyList = Object.keys(object); + } - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); - } + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); + keyTag = keyNode = valueNode = null; } - } - } -} -function dump(input, options) { - options = options || {}; + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } - var state = new State(options); + if (state.lineIndent > nodeIndent && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } - if (!state.noRefs) getDuplicateReferences(input, state); + // + // Epilogue. + // - if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + } - return ''; -} + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } -function safeDump(input, options) { - return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); + return detected; } -module.exports.dump = dump; -module.exports.safeDump = safeDump; - +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; -/***/ }), + ch = state.input.charCodeAt(state.position); -/***/ 30962: -/***/ ((module) => { + if (ch !== 0x21/* ! */) return false; -"use strict"; -// YAML error class. http://stackoverflow.com/questions/8458984 -// + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + ch = state.input.charCodeAt(++state.position); -function YAMLException(reason, mark) { - // Super constructor - Error.call(this); + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); - this.name = 'YAMLException'; - this.reason = reason; - this.mark = mark; - this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); - // Include stack trace in error object - if (Error.captureStackTrace) { - // Chrome and NodeJS - Error.captureStackTrace(this, this.constructor); } else { - // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || ''; + tagHandle = '!'; } -} - - -// Inherit from Error -YAMLException.prototype = Object.create(Error.prototype); -YAMLException.prototype.constructor = YAMLException; + _position = state.position; -YAMLException.prototype.toString = function toString(compact) { - var result = this.name + ': '; - - result += this.reason || '(unknown reason)'; + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); - if (!compact && this.mark) { - result += ' ' + this.mark.toString(); - } + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { - return result; -}; + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } -module.exports = YAMLException; + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + ch = state.input.charCodeAt(++state.position); + } -/***/ }), + tagName = state.input.slice(_position, state.position); -/***/ 20055: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } -"use strict"; + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + if (isVerbatim) { + state.tag = tagName; -/*eslint-disable max-len,no-use-before-define*/ + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; -var common = __nccwpck_require__(75974); -var YAMLException = __nccwpck_require__(30962); -var Mark = __nccwpck_require__(74548); -var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(39591); -var DEFAULT_FULL_SCHEMA = __nccwpck_require__(54250); + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; -var _hasOwnProperty = Object.prototype.hasOwnProperty; + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + return true; +} -var CONTEXT_FLOW_IN = 1; -var CONTEXT_FLOW_OUT = 2; -var CONTEXT_BLOCK_IN = 3; -var CONTEXT_BLOCK_OUT = 4; +function readAnchorProperty(state) { + var _position, + ch; + ch = state.input.charCodeAt(state.position); -var CHOMPING_CLIP = 1; -var CHOMPING_STRIP = 2; -var CHOMPING_KEEP = 3; + if (ch !== 0x26/* & */) return false; + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } -var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; -var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; -var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; -var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; -var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } -function _class(obj) { return Object.prototype.toString.call(obj); } + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } -function is_EOL(c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); + state.anchor = state.input.slice(_position, state.position); + return true; } -function is_WHITE_SPACE(c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */); -} +function readAlias(state) { + var _position, alias, + ch; -function is_WS_OR_EOL(c) { - return (c === 0x09/* Tab */) || - (c === 0x20/* Space */) || - (c === 0x0A/* LF */) || - (c === 0x0D/* CR */); -} + ch = state.input.charCodeAt(state.position); -function is_FLOW_INDICATOR(c) { - return c === 0x2C/* , */ || - c === 0x5B/* [ */ || - c === 0x5D/* ] */ || - c === 0x7B/* { */ || - c === 0x7D/* } */; -} + if (ch !== 0x2A/* * */) return false; -function fromHexCode(c) { - var lc; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); } - /*eslint-disable no-bitwise*/ - lc = c | 0x20; + alias = state.input.slice(_position, state.position); - if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { - return lc - 0x61 + 10; + if (!_hasOwnProperty.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); } - return -1; + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; } -function escapedHexLen(c) { - if (c === 0x78/* x */) { return 2; } - if (c === 0x75/* u */) { return 4; } - if (c === 0x55/* U */) { return 8; } - return 0; -} +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent + atNewLine = false, + hasContent = false, + typeIndex, + typeQuantity, + type, + flowIndent, + blockIndent; -function fromDecimalCode(c) { - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; + if (state.listener !== null) { + state.listener('open', state); } - return -1; -} + state.tag = null; + state.anchor = null; + state.kind = null; + state.result = null; -function simpleEscapeSequence(c) { - /* eslint-disable indent */ - return (c === 0x30/* 0 */) ? '\x00' : - (c === 0x61/* a */) ? '\x07' : - (c === 0x62/* b */) ? '\x08' : - (c === 0x74/* t */) ? '\x09' : - (c === 0x09/* Tab */) ? '\x09' : - (c === 0x6E/* n */) ? '\x0A' : - (c === 0x76/* v */) ? '\x0B' : - (c === 0x66/* f */) ? '\x0C' : - (c === 0x72/* r */) ? '\x0D' : - (c === 0x65/* e */) ? '\x1B' : - (c === 0x20/* Space */) ? ' ' : - (c === 0x22/* " */) ? '\x22' : - (c === 0x2F/* / */) ? '/' : - (c === 0x5C/* \ */) ? '\x5C' : - (c === 0x4E/* N */) ? '\x85' : - (c === 0x5F/* _ */) ? '\xA0' : - (c === 0x4C/* L */) ? '\u2028' : - (c === 0x50/* P */) ? '\u2029' : ''; -} + allowBlockStyles = allowBlockScalars = allowBlockCollections = + CONTEXT_BLOCK_OUT === nodeContext || + CONTEXT_BLOCK_IN === nodeContext; -function charFromCodepoint(c) { - if (c <= 0xFFFF) { - return String.fromCharCode(c); + if (allowToSeek) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } } - // Encode UTF-16 surrogate pair - // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF - return String.fromCharCode( - ((c - 0x010000) >> 10) + 0xD800, - ((c - 0x010000) & 0x03FF) + 0xDC00 - ); -} -var simpleEscapeCheck = new Array(256); // integer, for fast access -var simpleEscapeMap = new Array(256); -for (var i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); -} + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } -function State(input, options) { - this.input = input; + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } - this.filename = options['filename'] || null; - this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; - this.onWarning = options['onWarning'] || null; - this.legacy = options['legacy'] || false; - this.json = options['json'] || false; - this.listener = options['listener'] || null; + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; + blockIndent = state.position - state.lineStart; - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; - this.documents = []; + } else if (readAlias(state)) { + hasContent = true; - /* - this.version; - this.checkLineBreaks; - this.tagMap; - this.anchorMap; - this.tag; - this.anchor; - this.kind; - this.result;*/ + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } -} + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + if (state.tag === null) { + state.tag = '?'; + } + } -function generateError(state, message) { - return new YAMLException( - message, - new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); -} + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } -function throwError(state, message) { - throw generateError(state, message); -} + if (state.tag !== null && state.tag !== '!') { + if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "!<?> [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"'); + } -function throwWarning(state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } } -} + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} -var directiveHandlers = { +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; - YAML: function handleYamlDirective(state, name, args) { + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; - var match, major, minor; + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); - if (state.version !== null) { - throwError(state, 'duplication of %YAML directive'); - } + ch = state.input.charCodeAt(state.position); - if (args.length !== 1) { - throwError(state, 'YAML directive accepts exactly one argument'); + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; } - match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; - if (match === null) { - throwError(state, 'ill-formed argument of the YAML directive'); + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); } - major = parseInt(match[1], 10); - minor = parseInt(match[2], 10); + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; - if (major !== 1) { - throwError(state, 'unacceptable YAML version of the document'); + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); } - state.version = args[0]; - state.checkLineBreaks = (minor < 2); + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } - if (minor !== 1 && minor !== 2) { - throwWarning(state, 'unsupported YAML version of the document'); - } - }, + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } - TAG: function handleTagDirective(state, name, args) { + if (is_EOL(ch)) break; - var handle, prefix; + _position = state.position; - if (args.length !== 2) { - throwError(state, 'TAG directive accepts exactly two arguments'); + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); } - handle = args[0]; - prefix = args[1]; + if (ch !== 0) readLineBreak(state); - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); } + } - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); - } + skipSeparationSpace(state, true, -1); - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); - } + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); - state.tagMap[handle] = prefix; + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); } -}; + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); -function captureSegment(state, start, end, checkJson) { - var _position, _length, _character, _result; + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } - if (start < end) { - _result = state.input.slice(start, end); + state.documents.push(state.result); - if (checkJson) { - for (_position = 0, _length = _result.length; _position < _length; _position += 1) { - _character = _result.charCodeAt(_position); - if (!(_character === 0x09 || - (0x20 <= _character && _character <= 0x10FFFF))) { - throwError(state, 'expected valid JSON character'); - } - } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, 'the stream contains non-printable characters'); + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); } + return; + } - state.result += _result; + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; } } -function mergeMappings(state, destination, source, overridableKeys) { - var sourceKeys, key, index, quantity; - if (!common.isObject(source)) { - throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); - } +function loadDocuments(input, options) { + input = String(input); + options = options || {}; - sourceKeys = Object.keys(source); + if (input.length !== 0) { - for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - key = sourceKeys[index]; + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } - if (!_hasOwnProperty.call(destination, key)) { - destination[key] = source[key]; - overridableKeys[key] = true; + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); } } -} -function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { - var index, quantity; + var state = new State(input, options); - // The output is a plain object here, so keys can only be strings. - // We need to convert keyNode to a string, but doing so can hang the process - // (deeply nested arrays that explode exponentially using aliases). - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); + var nullpos = input.indexOf('\0'); - for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, 'nested arrays are not supported inside keys'); - } + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } - if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { - keyNode[index] = '[object Object]'; - } - } + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; } - // Avoid code execution in load() via toString property - // (still use its own toString for arrays, timestamps, - // and whatever user schema extensions happen to have @@toStringTag) - if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { - keyNode = '[object Object]'; + while (state.position < (state.length - 1)) { + readDocument(state); } + return state.documents; +} - keyNode = String(keyNode); - if (_result === null) { - _result = {}; +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; } - if (keyTag === 'tag:yaml.org,2002:merge') { - if (Array.isArray(valueNode)) { - for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys); - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys); - } - } else { - if (!state.json && - !_hasOwnProperty.call(overridableKeys, keyNode) && - _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.position = startPos || state.position; - throwError(state, 'duplicated mapping key'); - } - _result[keyNode] = valueNode; - delete overridableKeys[keyNode]; + var documents = loadDocuments(input, options); + + if (typeof iterator !== 'function') { + return documents; } - return _result; + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } } -function readLineBreak(state) { - var ch; - ch = state.input.charCodeAt(state.position); +function load(input, options) { + var documents = loadDocuments(input, options); - if (ch === 0x0A/* LF */) { - state.position++; - } else if (ch === 0x0D/* CR */) { - state.position++; - if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { - state.position++; - } - } else { - throwError(state, 'a line break is expected'); + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new YAMLException('expected a single document in the stream, but found more'); +} + + +function safeLoadAll(input, iterator, options) { + if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { + options = iterator; + iterator = null; } - state.line += 1; - state.lineStart = state.position; + return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } -function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0, - ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } +function safeLoad(input, options) { + return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +} + + +module.exports.loadAll = loadAll; +module.exports.load = load; +module.exports.safeLoadAll = safeLoadAll; +module.exports.safeLoad = safeLoad; + + +/***/ }), + +/***/ 3241: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (allowComments && ch === 0x23/* # */) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); - } +"use strict"; - if (is_EOL(ch)) { - readLineBreak(state); - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; - while (ch === 0x20/* Space */) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - } else { - break; - } - } +var common = __nccwpck_require__(4206); - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, 'deficient indentation'); - } - return lineBreaks; +function Mark(name, buffer, position, line, column) { + this.name = name; + this.buffer = buffer; + this.position = position; + this.line = line; + this.column = column; } -function testDocumentSeparator(state) { - var _position = state.position, - ch; - ch = state.input.charCodeAt(_position); +Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { + var head, start, tail, end, snippet; - // Condition state.position === state.lineStart is tested - // in parent on each call, for efficiency. No needs to test here again. - if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && - ch === state.input.charCodeAt(_position + 1) && - ch === state.input.charCodeAt(_position + 2)) { + if (!this.buffer) return null; - _position += 3; + indent = indent || 4; + maxLength = maxLength || 75; - ch = state.input.charCodeAt(_position); + head = ''; + start = this.position; - if (ch === 0 || is_WS_OR_EOL(ch)) { - return true; + while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { + start -= 1; + if (this.position - start > (maxLength / 2 - 1)) { + head = ' ... '; + start += 5; + break; } } - return false; -} + tail = ''; + end = this.position; -function writeFoldedLines(state, count) { - if (count === 1) { - state.result += ' '; - } else if (count > 1) { - state.result += common.repeat('\n', count - 1); + while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { + end += 1; + if (end - this.position > (maxLength / 2 - 1)) { + tail = ' ... '; + end -= 5; + break; + } } -} + snippet = this.buffer.slice(start, end); -function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var preceding, - following, - captureStart, - captureEnd, - hasPendingContent, - _line, - _lineStart, - _lineIndent, - _kind = state.kind, - _result = state.result, - ch; + return common.repeat(' ', indent) + head + snippet + tail + '\n' + + common.repeat(' ', indent + this.position - start + head.length) + '^'; +}; - ch = state.input.charCodeAt(state.position); - if (is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || - ch === 0x60/* ` */) { - return false; +Mark.prototype.toString = function toString(compact) { + var snippet, where = ''; + + if (this.name) { + where += 'in "' + this.name + '" '; } - if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - following = state.input.charCodeAt(state.position + 1); + where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - return false; + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += ':\n' + snippet; } } - state.kind = 'scalar'; - state.result = ''; - captureStart = captureEnd = state.position; - hasPendingContent = false; + return where; +}; - while (ch !== 0) { - if (ch === 0x3A/* : */) { - following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - break; - } +module.exports = Mark; - } else if (ch === 0x23/* # */) { - preceding = state.input.charCodeAt(state.position - 1); - if (is_WS_OR_EOL(preceding)) { - break; - } +/***/ }), - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - withinFlowCollection && is_FLOW_INDICATOR(ch)) { - break; +/***/ 3487: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - } else if (is_EOL(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); +"use strict"; - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; - } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; - } - } - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; - } +/*eslint-disable max-len*/ - if (!is_WHITE_SPACE(ch)) { - captureEnd = state.position + 1; - } +var common = __nccwpck_require__(4206); +var YAMLException = __nccwpck_require__(5622); +var Type = __nccwpck_require__(323); - ch = state.input.charCodeAt(++state.position); - } - captureSegment(state, captureStart, captureEnd, false); +function compileList(schema, name, result) { + var exclude = []; - if (state.result) { - return true; - } + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); - state.kind = _kind; - state.result = _result; - return false; -} + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); + } + }); -function readSingleQuotedScalar(state, nodeIndent) { - var ch, - captureStart, captureEnd; + result.push(currentType); + }); - ch = state.input.charCodeAt(state.position); + return result.filter(function (type, index) { + return exclude.indexOf(index) === -1; + }); +} - if (ch !== 0x27/* ' */) { - return false; - } - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, index, length; - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); + function collectType(type) { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } - if (ch === 0x27/* ' */) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a single quoted scalar'); +function Schema(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; - } else { - state.position++; - captureEnd = state.position; + this.implicit.forEach(function (type) { + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); } - } + }); - throwError(state, 'unexpected end of the stream within a single quoted scalar'); + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); } -function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, - captureEnd, - hexLength, - hexResult, - tmp, - ch; - - ch = state.input.charCodeAt(state.position); - if (ch !== 0x22/* " */) { - return false; - } +Schema.DEFAULT = null; - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; +Schema.create = function createSchema() { + var schemas, types; - } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); + switch (arguments.length) { + case 1: + schemas = Schema.DEFAULT; + types = arguments[0]; + break; - if (is_EOL(ch)) { - skipSeparationSpace(state, false, nodeIndent); + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; - // TODO: rework to inline fn with no type cast? - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; + default: + throw new YAMLException('Wrong number of arguments for Schema.create function'); + } - } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; + schemas = common.toArray(schemas); + types = common.toArray(types); - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); + if (!schemas.every(function (schema) { return schema instanceof Schema; })) { + throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); + } - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; + if (!types.every(function (type) { return type instanceof Type; })) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } - } else { - throwError(state, 'expected hexadecimal character'); - } - } + return new Schema({ + include: schemas, + explicit: types + }); +}; - state.result += charFromCodepoint(hexResult); - state.position++; +module.exports = Schema; - } else { - throwError(state, 'unknown escape sequence'); - } - captureStart = captureEnd = state.position; +/***/ }), - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; +/***/ 5116: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a double quoted scalar'); +"use strict"; +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. - } else { - state.position++; - captureEnd = state.position; - } - } - throwError(state, 'unexpected end of the stream within a double quoted scalar'); -} -function readFlowCollection(state, nodeIndent) { - var readNext = true, - _line, - _tag = state.tag, - _result, - _anchor = state.anchor, - following, - terminator, - isPair, - isExplicitPair, - isMapping, - overridableKeys = {}, - keyNode, - keyTag, - valueNode, - ch; - ch = state.input.charCodeAt(state.position); - if (ch === 0x5B/* [ */) { - terminator = 0x5D;/* ] */ - isMapping = false; - _result = []; - } else if (ch === 0x7B/* { */) { - terminator = 0x7D;/* } */ - isMapping = true; - _result = {}; - } else { - return false; - } +var Schema = __nccwpck_require__(3487); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } - ch = state.input.charCodeAt(++state.position); +module.exports = new Schema({ + include: [ + __nccwpck_require__(6613) + ] +}); - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); +/***/ }), - if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? 'mapping' : 'sequence'; - state.result = _result; - return true; - } else if (!readNext) { - throwError(state, 'missed comma between flow collection entries'); - } +/***/ 948: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; +"use strict"; +// JS-YAML's default schema for `load` function. +// It is not described in the YAML specification. +// +// This schema is based on JS-YAML's default safe schema and includes +// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. +// +// Also this schema is used as default base schema at `Schema.create` function. - if (ch === 0x3F/* ? */) { - following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); - } - } - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); - if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } +var Schema = __nccwpck_require__(3487); - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); - } else { - _result.push(keyNode); - } - skipSeparationSpace(state, true, nodeIndent); +module.exports = Schema.DEFAULT = new Schema({ + include: [ + __nccwpck_require__(6032) + ], + explicit: [ + __nccwpck_require__(9178), + __nccwpck_require__(8953), + __nccwpck_require__(1832) + ] +}); - ch = state.input.charCodeAt(state.position); - if (ch === 0x2C/* , */) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { - readNext = false; - } - } +/***/ }), - throwError(state, 'unexpected end of the stream within a flow collection'); -} +/***/ 6032: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function readBlockScalar(state, nodeIndent) { - var captureStart, - folding, - chomping = CHOMPING_CLIP, - didReadContent = false, - detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, - atMoreIndented = false, - tmp, - ch; +"use strict"; +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) - ch = state.input.charCodeAt(state.position); - if (ch === 0x7C/* | */) { - folding = false; - } else if (ch === 0x3E/* > */) { - folding = true; - } else { - return false; - } - state.kind = 'scalar'; - state.result = ''; - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); - if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { - if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, 'repeat of a chomping mode identifier'); - } +var Schema = __nccwpck_require__(3487); - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; - } else { - throwError(state, 'repeat of an indentation width identifier'); - } - } else { - break; - } - } +module.exports = new Schema({ + include: [ + __nccwpck_require__(5116) + ], + implicit: [ + __nccwpck_require__(7044), + __nccwpck_require__(112) + ], + explicit: [ + __nccwpck_require__(5295), + __nccwpck_require__(7395), + __nccwpck_require__(9117), + __nccwpck_require__(7812) + ] +}); - if (is_WHITE_SPACE(ch)) { - do { ch = state.input.charCodeAt(++state.position); } - while (is_WHITE_SPACE(ch)); - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (!is_EOL(ch) && (ch !== 0)); - } - } +/***/ }), - while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; +/***/ 6810: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - ch = state.input.charCodeAt(state.position); +"use strict"; +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 - while ((!detectedIndent || state.lineIndent < textIndent) && - (ch === 0x20/* Space */)) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; - } - if (is_EOL(ch)) { - emptyLines++; - continue; - } - // End of the scalar. - if (state.lineIndent < textIndent) { - // Perform the chomping. - if (chomping === CHOMPING_KEEP) { - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { // i.e. only if the scalar is not empty. - state.result += '\n'; - } - } +var Schema = __nccwpck_require__(3487); - // Break this `while` cycle and go to the funciton's epilogue. - break; - } - // Folded style: use fancy rules to handle line breaks. - if (folding) { +module.exports = new Schema({ + explicit: [ + __nccwpck_require__(4107), + __nccwpck_require__(2863), + __nccwpck_require__(4278) + ] +}); - // Lines starting with white space characters (more-indented lines) are not folded. - if (is_WHITE_SPACE(ch)) { - atMoreIndented = true; - // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - // End of more-indented block. - } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common.repeat('\n', emptyLines + 1); +/***/ }), - // Just one line break - perceive as the same line. - } else if (emptyLines === 0) { - if (didReadContent) { // i.e. only if we have already read some scalar content. - state.result += ' '; - } +/***/ 6613: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Several line breaks - perceive as different lines. - } else { - state.result += common.repeat('\n', emptyLines); - } +"use strict"; +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. - // Literal style: just add exact number of line breaks between content lines. - } else { - // Keep all line breaks except the header line break. - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - captureStart = state.position; - while (!is_EOL(ch) && (ch !== 0)) { - ch = state.input.charCodeAt(++state.position); - } - captureSegment(state, captureStart, state.position, false); - } - return true; -} +var Schema = __nccwpck_require__(3487); -function readBlockSequence(state, nodeIndent) { - var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], - following, - detected = false, - ch; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } +module.exports = new Schema({ + include: [ + __nccwpck_require__(6810) + ], + implicit: [ + __nccwpck_require__(7767), + __nccwpck_require__(3066), + __nccwpck_require__(53), + __nccwpck_require__(3122) + ] +}); - ch = state.input.charCodeAt(state.position); - while (ch !== 0) { +/***/ }), - if (ch !== 0x2D/* - */) { - break; - } +/***/ 323: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - following = state.input.charCodeAt(state.position + 1); +"use strict"; - if (!is_WS_OR_EOL(following)) { - break; - } - detected = true; - state.position++; +var YAMLException = __nccwpck_require__(5622); - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; - } - } +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'defaultStyle', + 'styleAliases' +]; - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; - ch = state.input.charCodeAt(state.position); +function compileStyleAliases(map) { + var result = {}; - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a sequence entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'sequence'; - state.result = _result; - return true; - } - return false; + return result; } -function readBlockMapping(state, nodeIndent, flowIndent) { - var following, - allowCompact, - _line, - _pos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, - overridableKeys = {}, - keyTag = null, - keyNode = null, - valueNode = null, - atExplicitKey = false, - detected = false, - ch; +function Type(tag, options) { + options = options || {}; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } +} - ch = state.input.charCodeAt(state.position); +module.exports = Type; - while (ch !== 0) { - following = state.input.charCodeAt(state.position + 1); - _line = state.line; // Save the current line. - _pos = state.position; - // - // Explicit notation case. There are two separate blocks: - // first for the key (denoted by "?") and second for the value (denoted by ":") - // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { +/***/ }), - if (ch === 0x3F/* ? */) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - keyTag = keyNode = valueNode = null; - } +/***/ 5295: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - detected = true; - atExplicitKey = true; - allowCompact = true; +"use strict"; - } else if (atExplicitKey) { - // i.e. 0x3A/* : */ === character after the explicit key. - atExplicitKey = false; - allowCompact = true; - } else { - throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); - } +/*eslint-disable no-bitwise*/ - state.position += 1; - ch = following; +var NodeBuffer; - // - // Implicit notation case. Flow-style node as the key first, then ":", and the value. - // - } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { +try { + // A trick for browserified version, to not include `Buffer` shim + var _require = require; + NodeBuffer = _require('buffer').Buffer; +} catch (__) {} - if (state.line === _line) { - ch = state.input.charCodeAt(state.position); +var Type = __nccwpck_require__(323); - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position); +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; - if (!is_WS_OR_EOL(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); - } - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - keyTag = keyNode = valueNode = null; - } +function resolveYamlBinary(data) { + if (data === null) return false; - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; - } else if (detected) { - throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } + // Skip CR/LF + if (code > 64) continue; - } else if (detected) { - throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + // Fail on illegal characters + if (code < 0) return false; - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } + bitlen += 6; + } - } else { - break; // Reading is done. Go to the epilogue. - } + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} - // - // Common reading code for both explicit and implicit notations. - // - if (state.line === _line || state.lineIndent > nodeIndent) { - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result; - } else { - valueNode = state.result; - } - } +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); - keyTag = keyNode = valueNode = null; - } + // Collect by 6*4 bits (3 bytes) - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); } - if (state.lineIndent > nodeIndent && (ch !== 0)) { - throwError(state, 'bad indentation of a mapping entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } + bits = (bits << 6) | map.indexOf(input.charAt(idx)); } - // - // Epilogue. - // + // Dump tail - // Special case: last mapping's node contains only the key in explicit notation. - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); } - // Expose the resulting mapping. - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'mapping'; - state.result = _result; + // Wrap into Buffer for NodeJS and leave Array for browser + if (NodeBuffer) { + // Support node 6.+ Buffer API when available + return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); } - return detected; + return result; } -function readTagProperty(state) { - var _position, - isVerbatim = false, - isNamed = false, - tagHandle, - tagName, - ch; +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; - ch = state.input.charCodeAt(state.position); + // Convert every three bytes to 4 ASCII characters. - if (ch !== 0x21/* ! */) return false; + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } - if (state.tag !== null) { - throwError(state, 'duplication of a tag property'); + bits = (bits << 8) + object[idx]; } - ch = state.input.charCodeAt(++state.position); - - if (ch === 0x3C/* < */) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); + // Dump tail - } else if (ch === 0x21/* ! */) { - isNamed = true; - tagHandle = '!!'; - ch = state.input.charCodeAt(++state.position); + tail = max % 3; - } else { - tagHandle = '!'; + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; } - _position = state.position; + return result; +} - if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && ch !== 0x3E/* > */); +function isBinary(object) { + return NodeBuffer && NodeBuffer.isBuffer(object); +} - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); - } else { - throwError(state, 'unexpected end of the stream within a verbatim tag'); - } - } else { - while (ch !== 0 && !is_WS_OR_EOL(ch)) { +module.exports = new Type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); - if (ch === 0x21/* ! */) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters'); - } +/***/ }), - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, 'tag suffix cannot contain exclamation marks'); - } - } +/***/ 3066: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - ch = state.input.charCodeAt(++state.position); - } +"use strict"; - tagName = state.input.slice(_position, state.position); - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, 'tag suffix cannot contain flow indicator characters'); - } - } +var Type = __nccwpck_require__(323); - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, 'tag name cannot contain such characters: ' + tagName); - } +function resolveYamlBoolean(data) { + if (data === null) return false; - if (isVerbatim) { - state.tag = tagName; + var max = data.length; - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} - } else if (tagHandle === '!') { - state.tag = '!' + tagName; +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} - } else if (tagHandle === '!!') { - state.tag = 'tag:yaml.org,2002:' + tagName; +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +module.exports = new Type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); - } - return true; -} +/***/ }), -function readAnchorProperty(state) { - var _position, - ch; +/***/ 3122: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - ch = state.input.charCodeAt(state.position); +"use strict"; - if (ch !== 0x26/* & */) return false; - if (state.anchor !== null) { - throwError(state, 'duplication of an anchor property'); - } +var common = __nccwpck_require__(4206); +var Type = __nccwpck_require__(323); - ch = state.input.charCodeAt(++state.position); - _position = state.position; +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // 20:59 + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); - } +function resolveYamlFloat(data) { + if (data === null) return false; - if (state.position === _position) { - throwError(state, 'name of an anchor node must contain at least one character'); + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; } - state.anchor = state.input.slice(_position, state.position); return true; } -function readAlias(state) { - var _position, alias, - ch; - - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x2A/* * */) return false; +function constructYamlFloat(data) { + var value, sign, base, digits; - ch = state.input.charCodeAt(++state.position); - _position = state.position; + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + digits = []; - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); } - if (state.position === _position) { - throwError(state, 'name of an alias node must contain at least one character'); - } + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - alias = state.input.slice(_position, state.position); + } else if (value === '.nan') { + return NaN; - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); - } + } else if (value.indexOf(':') >= 0) { + value.split(':').forEach(function (v) { + digits.unshift(parseFloat(v, 10)); + }); - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; -} + value = 0.0; + base = 1; -function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - var allowBlockStyles, - allowBlockScalars, - allowBlockCollections, - indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent - atNewLine = false, - hasContent = false, - typeIndex, - typeQuantity, - type, - flowIndent, - blockIndent; + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + + return sign * value; - if (state.listener !== null) { - state.listener('open', state); } + return sign * parseFloat(value, 10); +} - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; - allowBlockStyles = allowBlockScalars = allowBlockCollections = - CONTEXT_BLOCK_OUT === nodeContext || - CONTEXT_BLOCK_IN === nodeContext; +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; - if (allowToSeek) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; +function representYamlFloat(object, style) { + var res; - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; } - } - - if (indentStatus === 1) { - while (readTagProperty(state) || readAnchorProperty(state)) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; - - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } else { - allowBlockCollections = false; - } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; } - } - - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; - } - - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; - } else { - flowIndent = parentIndent + 1; + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } - blockIndent = state.position - state.lineStart; - - if (indentStatus === 1) { - if (allowBlockCollections && - (readBlockSequence(state, blockIndent) || - readBlockMapping(state, blockIndent, flowIndent)) || - readFlowCollection(state, flowIndent)) { - hasContent = true; - } else { - if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || - readSingleQuotedScalar(state, flowIndent) || - readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; + res = object.toString(10); - } else if (readAlias(state)) { - hasContent = true; + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack - if (state.tag !== null || state.anchor !== null) { - throwError(state, 'alias node should not have any properties'); - } + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); +} - if (state.tag === null) { - state.tag = '?'; - } - } +module.exports = new Type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - } - } else if (indentStatus === 0) { - // Special case: block sequences are allowed to have same indentation level as the parent. - // http://www.yaml.org/spec/1.2/spec.html#id2799784 - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); - } - } - if (state.tag !== null && state.tag !== '!') { - if (state.tag === '?') { - // Implicit resolving is not allowed for non-scalar types, and '?' - // non-specific tag is only automatically assigned to plain scalars. - // - // We only need to check kind conformity in case user explicitly assigns '?' - // tag, for example like this: "!<?> [0]" - // - if (state.result !== null && state.kind !== 'scalar') { - throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"'); - } +/***/ }), - for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type = state.implicitTypes[typeIndex]; +/***/ 53: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (type.resolve(state.result)) { // `state.result` updated in resolver if matched - state.result = type.construct(state.result); - state.tag = type.tag; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - break; - } - } - } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { - type = state.typeMap[state.kind || 'fallback'][state.tag]; +"use strict"; - if (state.result !== null && type.kind !== state.kind) { - throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); - } - if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched - throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); - } else { - state.result = type.construct(state.result); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - } - } else { - throwError(state, 'unknown tag !<' + state.tag + '>'); - } - } +var common = __nccwpck_require__(4206); +var Type = __nccwpck_require__(323); - if (state.listener !== null) { - state.listener('close', state); - } - return state.tag !== null || state.anchor !== null || hasContent; +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); } -function readDocument(state) { - var documentStart = state.position, - _position, - directiveName, - directiveArgs, - hasDirectives = false, - ch; +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = {}; - state.anchorMap = {}; +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); +function resolveYamlInteger(data) { + if (data === null) return false; - ch = state.input.charCodeAt(state.position); + var max = data.length, + index = 0, + hasDigits = false, + ch; - if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break; - } + if (!max) return false; - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - _position = state.position; + ch = data[index]; - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); - } + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } - directiveName = state.input.slice(_position, state.position); - directiveArgs = []; + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; - if (directiveName.length < 1) { - throwError(state, 'directive name must not be less than one character in length'); - } + // base 2, base 8, base 16 - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } + if (ch === 'b') { + // base 2 + index++; - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && !is_EOL(ch)); - break; + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; } + return hasDigits && ch !== '_'; + } - if (is_EOL(ch)) break; - _position = state.position; + if (ch === 'x') { + // base 16 + index++; - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; } + return hasDigits && ch !== '_'; + } - directiveArgs.push(state.input.slice(_position, state.position)); + // base 8 + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; } + return hasDigits && ch !== '_'; + } - if (ch !== 0) readLineBreak(state); + // base 10 (except 0) or base 60 - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); + // value should not start with `_`; + if (ch === '_') return false; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch === ':') break; + if (!isDecCode(data.charCodeAt(index))) { + return false; } + hasDigits = true; } - skipSeparationSpace(state, true, -1); + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; - if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3; - skipSeparationSpace(state, true, -1); + // if !base60 - done; + if (ch !== ':') return true; - } else if (hasDirectives) { - throwError(state, 'directives end mark is expected'); - } + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); +function constructYamlInteger(data) { + var value = data, sign = 1, ch, base, digits = []; - if (state.checkLineBreaks && - PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); } - state.documents.push(state.result); - - if (state.position === state.lineStart && testDocumentSeparator(state)) { + ch = value[0]; - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } - return; + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; } - if (state.position < (state.length - 1)) { - throwError(state, 'end of the stream or a document separator is expected'); - } else { - return; + if (value === '0') return 0; + + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value, 16); + return sign * parseInt(value, 8); } -} + if (value.indexOf(':') !== -1) { + value.split(':').forEach(function (v) { + digits.unshift(parseInt(v, 10)); + }); -function loadDocuments(input, options) { - input = String(input); - options = options || {}; + value = 0; + base = 1; - if (input.length !== 0) { + digits.forEach(function (d) { + value += (d * base); + base *= 60; + }); - // Add tailing `\n` if not exists - if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && - input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n'; - } + return sign * value; - // Strip BOM - if (input.charCodeAt(0) === 0xFEFF) { - input = input.slice(1); - } } - var state = new State(input, options); + return sign * parseInt(value, 10); +} - var nullpos = input.indexOf('\0'); +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); +} - if (nullpos !== -1) { - state.position = nullpos; - throwError(state, 'null byte is not allowed in input'); +module.exports = new Type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] } +}); - // Use 0 as string terminator. That significantly simplifies bounds check. - state.input += '\0'; - while (state.input.charCodeAt(state.position) === 0x20/* Space */) { - state.lineIndent += 1; - state.position += 1; - } +/***/ }), - while (state.position < (state.length - 1)) { - readDocument(state); - } +/***/ 1832: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return state.documents; +"use strict"; + + +var esprima; + +// Browserified version does not have esprima +// +// 1. For node.js just require module as deps +// 2. For browser try to require mudule via external AMD system. +// If not found - try to fallback to window.esprima. If not +// found too - then fail to parse. +// +try { + // workaround to exclude package from browserify list. + var _require = require; + esprima = _require('esprima'); +} catch (_) { + /* eslint-disable no-redeclare */ + /* global window */ + if (typeof window !== 'undefined') esprima = window.esprima; } +var Type = __nccwpck_require__(323); -function loadAll(input, iterator, options) { - if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { - options = iterator; - iterator = null; - } +function resolveJavascriptFunction(data) { + if (data === null) return false; - var documents = loadDocuments(input, options); + try { + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }); - if (typeof iterator !== 'function') { - return documents; - } + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + (ast.body[0].expression.type !== 'ArrowFunctionExpression' && + ast.body[0].expression.type !== 'FunctionExpression')) { + return false; + } - for (var index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); + return true; + } catch (err) { + return false; } } +function constructJavascriptFunction(data) { + /*jslint evil:true*/ -function load(input, options) { - var documents = loadDocuments(input, options); + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }), + params = [], + body; - if (documents.length === 0) { - /*eslint-disable no-undefined*/ - return undefined; - } else if (documents.length === 1) { - return documents[0]; + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + (ast.body[0].expression.type !== 'ArrowFunctionExpression' && + ast.body[0].expression.type !== 'FunctionExpression')) { + throw new Error('Failed to resolve function'); } - throw new YAMLException('expected a single document in the stream, but found more'); -} + ast.body[0].expression.params.forEach(function (param) { + params.push(param.name); + }); -function safeLoadAll(input, iterator, options) { - if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { - options = iterator; - iterator = null; - } + body = ast.body[0].expression.body.range; - return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); + // Esprima's ranges include the first '{' and the last '}' characters on + // function expressions. So cut them out. + if (ast.body[0].expression.body.type === 'BlockStatement') { + /*eslint-disable no-new-func*/ + return new Function(params, source.slice(body[0] + 1, body[1] - 1)); + } + // ES6 arrow functions can omit the BlockStatement. In that case, just return + // the body. + /*eslint-disable no-new-func*/ + return new Function(params, 'return ' + source.slice(body[0], body[1])); } - -function safeLoad(input, options) { - return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +function representJavascriptFunction(object /*, style*/) { + return object.toString(); } +function isFunction(object) { + return Object.prototype.toString.call(object) === '[object Function]'; +} -module.exports.loadAll = loadAll; -module.exports.load = load; -module.exports.safeLoadAll = safeLoadAll; -module.exports.safeLoad = safeLoad; +module.exports = new Type('tag:yaml.org,2002:js/function', { + kind: 'scalar', + resolve: resolveJavascriptFunction, + construct: constructJavascriptFunction, + predicate: isFunction, + represent: representJavascriptFunction +}); /***/ }), -/***/ 74548: +/***/ 8953: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var Type = __nccwpck_require__(323); -var common = __nccwpck_require__(75974); - - -function Mark(name, buffer, position, line, column) { - this.name = name; - this.buffer = buffer; - this.position = position; - this.line = line; - this.column = column; -} - - -Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { - var head, start, tail, end, snippet; - - if (!this.buffer) return null; - - indent = indent || 4; - maxLength = maxLength || 75; - - head = ''; - start = this.position; +function resolveJavascriptRegExp(data) { + if (data === null) return false; + if (data.length === 0) return false; - while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { - start -= 1; - if (this.position - start > (maxLength / 2 - 1)) { - head = ' ... '; - start += 5; - break; - } - } + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; - tail = ''; - end = this.position; + // if regexp starts with '/' it can have modifiers and must be properly closed + // `/foo/gim` - modifiers tail can be maximum 3 chars + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; - while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { - end += 1; - if (end - this.position > (maxLength / 2 - 1)) { - tail = ' ... '; - end -= 5; - break; - } + if (modifiers.length > 3) return false; + // if expression starts with /, is should be properly terminated + if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; } - snippet = this.buffer.slice(start, end); - - return common.repeat(' ', indent) + head + snippet + tail + '\n' + - common.repeat(' ', indent + this.position - start + head.length) + '^'; -}; - + return true; +} -Mark.prototype.toString = function toString(compact) { - var snippet, where = ''; +function constructJavascriptRegExp(data) { + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; - if (this.name) { - where += 'in "' + this.name + '" '; + // `/foo/gim` - tail can be maximum 4 chars + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + regexp = regexp.slice(1, regexp.length - modifiers.length - 1); } - where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); + return new RegExp(regexp, modifiers); +} - if (!compact) { - snippet = this.getSnippet(); +function representJavascriptRegExp(object /*, style*/) { + var result = '/' + object.source + '/'; - if (snippet) { - where += ':\n' + snippet; - } - } + if (object.global) result += 'g'; + if (object.multiline) result += 'm'; + if (object.ignoreCase) result += 'i'; - return where; -}; + return result; +} +function isRegExp(object) { + return Object.prototype.toString.call(object) === '[object RegExp]'; +} -module.exports = Mark; +module.exports = new Type('tag:yaml.org,2002:js/regexp', { + kind: 'scalar', + resolve: resolveJavascriptRegExp, + construct: constructJavascriptRegExp, + predicate: isRegExp, + represent: representJavascriptRegExp +}); /***/ }), -/***/ 61181: +/***/ 9178: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -/*eslint-disable max-len*/ - -var common = __nccwpck_require__(75974); -var YAMLException = __nccwpck_require__(30962); -var Type = __nccwpck_require__(92355); - - -function compileList(schema, name, result) { - var exclude = []; - - schema.include.forEach(function (includedSchema) { - result = compileList(includedSchema, name, result); - }); - - schema[name].forEach(function (currentType) { - result.forEach(function (previousType, previousIndex) { - if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { - exclude.push(previousIndex); - } - }); - - result.push(currentType); - }); +var Type = __nccwpck_require__(323); - return result.filter(function (type, index) { - return exclude.indexOf(index) === -1; - }); +function resolveJavascriptUndefined() { + return true; } +function constructJavascriptUndefined() { + /*eslint-disable no-undefined*/ + return undefined; +} -function compileMap(/* lists... */) { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {} - }, index, length; - - function collectType(type) { - result[type.kind][type.tag] = result['fallback'][type.tag] = type; - } - - for (index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); - } - return result; +function representJavascriptUndefined() { + return ''; } +function isUndefined(object) { + return typeof object === 'undefined'; +} -function Schema(definition) { - this.include = definition.include || []; - this.implicit = definition.implicit || []; - this.explicit = definition.explicit || []; +module.exports = new Type('tag:yaml.org,2002:js/undefined', { + kind: 'scalar', + resolve: resolveJavascriptUndefined, + construct: constructJavascriptUndefined, + predicate: isUndefined, + represent: representJavascriptUndefined +}); - this.implicit.forEach(function (type) { - if (type.loadKind && type.loadKind !== 'scalar') { - throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); - } - }); - this.compiledImplicit = compileList(this, 'implicit', []); - this.compiledExplicit = compileList(this, 'explicit', []); - this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); -} +/***/ }), +/***/ 4278: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Schema.DEFAULT = null; +"use strict"; -Schema.create = function createSchema() { - var schemas, types; +var Type = __nccwpck_require__(323); - switch (arguments.length) { - case 1: - schemas = Schema.DEFAULT; - types = arguments[0]; - break; +module.exports = new Type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); - case 2: - schemas = arguments[0]; - types = arguments[1]; - break; - default: - throw new YAMLException('Wrong number of arguments for Schema.create function'); - } +/***/ }), - schemas = common.toArray(schemas); - types = common.toArray(types); +/***/ 112: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (!schemas.every(function (schema) { return schema instanceof Schema; })) { - throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); - } +"use strict"; - if (!types.every(function (type) { return type instanceof Type; })) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); - } - return new Schema({ - include: schemas, - explicit: types - }); -}; +var Type = __nccwpck_require__(323); +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} -module.exports = Schema; +module.exports = new Type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); /***/ }), -/***/ 80119: +/***/ 7767: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// Standard YAML's Core schema. -// http://www.yaml.org/spec/1.2/spec.html#id2804923 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, Core schema has no distinctions from JSON schema is JS-YAML. +var Type = __nccwpck_require__(323); +function resolveYamlNull(data) { + if (data === null) return true; + + var max = data.length; + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} -var Schema = __nccwpck_require__(61181); +function constructYamlNull() { + return null; +} +function isNull(object) { + return object === null; +} -module.exports = new Schema({ - include: [ - __nccwpck_require__(74637) - ] +module.exports = new Type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; } + }, + defaultStyle: 'lowercase' }); /***/ }), -/***/ 54250: +/***/ 7395: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// JS-YAML's default schema for `load` function. -// It is not described in the YAML specification. -// -// This schema is based on JS-YAML's default safe schema and includes -// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. -// -// Also this schema is used as default base schema at `Schema.create` function. +var Type = __nccwpck_require__(323); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + if (_toString.call(pair) !== '[object Object]') return false; -var Schema = __nccwpck_require__(61181); + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + if (!pairHasKey) return false; -module.exports = Schema.DEFAULT = new Schema({ - include: [ - __nccwpck_require__(39591) - ], - explicit: [ - __nccwpck_require__(76692), - __nccwpck_require__(20664), - __nccwpck_require__(57596) - ] + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +module.exports = new Type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap }); /***/ }), -/***/ 39591: +/***/ 9117: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// JS-YAML's default schema for `safeLoad` function. -// It is not described in the YAML specification. -// -// This schema is based on standard YAML's Core schema and includes most of -// extra types described at YAML tag repository. (http://yaml.org/type/) +var Type = __nccwpck_require__(323); +var _toString = Object.prototype.toString; +function resolveYamlPairs(data) { + if (data === null) return true; -var Schema = __nccwpck_require__(61181); + var index, length, pair, keys, result, + object = data; + result = new Array(object.length); -module.exports = new Schema({ - include: [ - __nccwpck_require__(80119) - ], - implicit: [ - __nccwpck_require__(22989), - __nccwpck_require__(27058) - ], - explicit: [ - __nccwpck_require__(68700), - __nccwpck_require__(92710), - __nccwpck_require__(85978), - __nccwpck_require__(34438) - ] -}); + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + if (_toString.call(pair) !== '[object Object]') return false; -/***/ }), + keys = Object.keys(pair); -/***/ 93487: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (keys.length !== 1) return false; -"use strict"; -// Standard YAML's Failsafe schema. -// http://www.yaml.org/spec/1.2/spec.html#id2802346 + result[index] = [ keys[0], pair[keys[0]] ]; + } + return true; +} +function constructYamlPairs(data) { + if (data === null) return []; + var index, length, pair, keys, result, + object = data; + result = new Array(object.length); -var Schema = __nccwpck_require__(61181); + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + keys = Object.keys(pair); -module.exports = new Schema({ - explicit: [ - __nccwpck_require__(58192), - __nccwpck_require__(47538), - __nccwpck_require__(23332) - ] + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +module.exports = new Type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs }); /***/ }), -/***/ 74637: +/***/ 2863: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// Standard YAML's JSON schema. -// http://www.yaml.org/spec/1.2/spec.html#id2803231 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, this schema is not such strict as defined in the YAML specification. -// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. - +var Type = __nccwpck_require__(323); - -var Schema = __nccwpck_require__(61181); - - -module.exports = new Schema({ - include: [ - __nccwpck_require__(93487) - ], - implicit: [ - __nccwpck_require__(44262), - __nccwpck_require__(49578), - __nccwpck_require__(96823), - __nccwpck_require__(96661) - ] +module.exports = new Type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } }); /***/ }), -/***/ 92355: +/***/ 7812: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var YAMLException = __nccwpck_require__(30962); +var Type = __nccwpck_require__(323); -var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'defaultStyle', - 'styleAliases' -]; +var _hasOwnProperty = Object.prototype.hasOwnProperty; -var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -]; +function resolveYamlSet(data) { + if (data === null) return true; -function compileStyleAliases(map) { - var result = {}; + var key, object = data; - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); + for (key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } } - return result; + return true; } -function Type(tag, options) { - options = options || {}; - - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); - - // TODO: Add tag format check. - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); - - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); - } +function constructYamlSet(data) { + return data !== null ? data : {}; } -module.exports = Type; +module.exports = new Type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); /***/ }), -/***/ 68700: +/***/ 4107: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -/*eslint-disable no-bitwise*/ - -var NodeBuffer; +var Type = __nccwpck_require__(323); -try { - // A trick for browserified version, to not include `Buffer` shim - var _require = require; - NodeBuffer = _require('buffer').Buffer; -} catch (__) {} +module.exports = new Type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); -var Type = __nccwpck_require__(92355); +/***/ }), -// [ 64, 65, 66 ] -> [ padding, CR, LF ] -var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; +/***/ 7044: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -function resolveYamlBinary(data) { - if (data === null) return false; - var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; +var Type = __nccwpck_require__(323); - // Convert one by one. - for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day - // Skip CR/LF - if (code > 64) continue; +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute - // Fail on illegal characters - if (code < 0) return false; +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} - bitlen += 6; - } +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; - // If there are any bits left, source was corrupted - return (bitlen % 8) === 0; -} + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); -function constructYamlBinary(data) { - var idx, tailbits, - input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan - max = input.length, - map = BASE64_MAP, - bits = 0, - result = []; + if (match === null) throw new Error('Date resolve error'); - // Collect by 6*4 bits (3 bytes) + // match: [1] year [2] month [3] day - for (idx = 0; idx < max; idx++) { - if ((idx % 4 === 0) && idx) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); - bits = (bits << 6) | map.indexOf(input.charAt(idx)); + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); } - // Dump tail + // match: [4] hour [5] minute [6] second [7] fraction - tailbits = (max % 4) * 6; + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); - if (tailbits === 0) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF); - result.push((bits >> 2) & 0xFF); - } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF); + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; } - // Wrap into Buffer for NodeJS and leave Array for browser - if (NodeBuffer) { - // Support node 6.+ Buffer API when available - return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; } - return result; + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; } -function representYamlBinary(object /*, style*/) { - var result = '', bits = 0, idx, tail, - max = object.length, - map = BASE64_MAP; +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} - // Convert every three bytes to 4 ASCII characters. +module.exports = new Type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); - for (idx = 0; idx < max; idx++) { - if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } - bits = (bits << 8) + object[idx]; - } +/***/ }), - // Dump tail +/***/ 5140: +/***/ ((module) => { - tail = max % 3; +var toString = Object.prototype.toString; - if (tail === 0) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F]; - result += map[(bits >> 4) & 0x3F]; - result += map[(bits << 2) & 0x3F]; - result += map[64]; - } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F]; - result += map[(bits << 4) & 0x3F]; - result += map[64]; - result += map[64]; +module.exports = function kindOf(val) { + if (val === void 0) return 'undefined'; + if (val === null) return 'null'; + + var type = typeof val; + if (type === 'boolean') return 'boolean'; + if (type === 'string') return 'string'; + if (type === 'number') return 'number'; + if (type === 'symbol') return 'symbol'; + if (type === 'function') { + return isGeneratorFn(val) ? 'generatorfunction' : 'function'; } - return result; -} + if (isArray(val)) return 'array'; + if (isBuffer(val)) return 'buffer'; + if (isArguments(val)) return 'arguments'; + if (isDate(val)) return 'date'; + if (isError(val)) return 'error'; + if (isRegexp(val)) return 'regexp'; -function isBinary(object) { - return NodeBuffer && NodeBuffer.isBuffer(object); -} + switch (ctorName(val)) { + case 'Symbol': return 'symbol'; + case 'Promise': return 'promise'; -module.exports = new Type('tag:yaml.org,2002:binary', { - kind: 'scalar', - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary -}); + // Set, Map, WeakSet, WeakMap + case 'WeakMap': return 'weakmap'; + case 'WeakSet': return 'weakset'; + case 'Map': return 'map'; + case 'Set': return 'set'; + // 8-bit typed arrays + case 'Int8Array': return 'int8array'; + case 'Uint8Array': return 'uint8array'; + case 'Uint8ClampedArray': return 'uint8clampedarray'; -/***/ }), + // 16-bit typed arrays + case 'Int16Array': return 'int16array'; + case 'Uint16Array': return 'uint16array'; -/***/ 49578: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 32-bit typed arrays + case 'Int32Array': return 'int32array'; + case 'Uint32Array': return 'uint32array'; + case 'Float32Array': return 'float32array'; + case 'Float64Array': return 'float64array'; + } -"use strict"; + if (isGeneratorObj(val)) { + return 'generator'; + } + // Non-plain objects + type = toString.call(val); + switch (type) { + case '[object Object]': return 'object'; + // iterators + case '[object Map Iterator]': return 'mapiterator'; + case '[object Set Iterator]': return 'setiterator'; + case '[object String Iterator]': return 'stringiterator'; + case '[object Array Iterator]': return 'arrayiterator'; + } -var Type = __nccwpck_require__(92355); + // other + return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); +}; -function resolveYamlBoolean(data) { - if (data === null) return false; +function ctorName(val) { + return typeof val.constructor === 'function' ? val.constructor.name : null; +} - var max = data.length; +function isArray(val) { + if (Array.isArray) return Array.isArray(val); + return val instanceof Array; +} - return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +function isError(val) { + return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'); } -function constructYamlBoolean(data) { - return data === 'true' || - data === 'True' || - data === 'TRUE'; +function isDate(val) { + if (val instanceof Date) return true; + return typeof val.toDateString === 'function' + && typeof val.getDate === 'function' + && typeof val.setDate === 'function'; } -function isBoolean(object) { - return Object.prototype.toString.call(object) === '[object Boolean]'; +function isRegexp(val) { + if (val instanceof RegExp) return true; + return typeof val.flags === 'string' + && typeof val.ignoreCase === 'boolean' + && typeof val.multiline === 'boolean' + && typeof val.global === 'boolean'; } -module.exports = new Type('tag:yaml.org,2002:bool', { - kind: 'scalar', - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function (object) { return object ? 'true' : 'false'; }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, - camelcase: function (object) { return object ? 'True' : 'False'; } - }, - defaultStyle: 'lowercase' -}); +function isGeneratorFn(name, val) { + return ctorName(name) === 'GeneratorFunction'; +} + +function isGeneratorObj(val) { + return typeof val.throw === 'function' + && typeof val.return === 'function' + && typeof val.next === 'function'; +} + +function isArguments(val) { + try { + if (typeof val.length === 'number' && typeof val.callee === 'function') { + return true; + } + } catch (err) { + if (err.message.indexOf('callee') !== -1) { + return true; + } + } + return false; +} + +/** + * If you need to support Safari 5-7 (8-10 yr-old browser), + * take a look at https://github.com/feross/is-buffer + */ + +function isBuffer(val) { + if (val.constructor && typeof val.constructor.isBuffer === 'function') { + return val.constructor.isBuffer(val); + } + return false; +} /***/ }), -/***/ 96661: +/***/ 1628: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +const fs = __nccwpck_require__(5744) +const path = __nccwpck_require__(6928) + +function klawSync (dir, opts, ls) { + if (!ls) { + ls = [] + dir = path.resolve(dir) + opts = opts || {} + opts.fs = opts.fs || fs + if (opts.depthLimit > -1) opts.rootDepth = dir.split(path.sep).length + 1 + } + const paths = opts.fs.readdirSync(dir).map(p => dir + path.sep + p) + for (var i = 0; i < paths.length; i += 1) { + const pi = paths[i] + const st = opts.fs.lstatSync(pi) + const item = {path: pi, stats: st} + const isUnderDepthLimit = (!opts.rootDepth || pi.split(path.sep).length - opts.rootDepth < opts.depthLimit) + const filterResult = opts.filter ? opts.filter(item) : true + const isDir = st.isDirectory() + const shouldAdd = filterResult && (isDir ? !opts.nodir : !opts.nofile) + const shouldTraverse = isDir && isUnderDepthLimit && (opts.traverseAll || filterResult) + if (shouldAdd) ls.push(item) + if (shouldTraverse) ls = klawSync(pi, opts, ls) + } + return ls +} -var common = __nccwpck_require__(75974); -var Type = __nccwpck_require__(92355); +module.exports = klawSync -var YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + - // .2e4, .2 - // special case, seems not from spec - '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + - // 20:59 - '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + - // .inf - '|[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$'); -function resolveYamlFloat(data) { - if (data === null) return false; +/***/ }), - if (!YAML_FLOAT_PATTERN.test(data) || - // Quick hack to not allow integers end with `_` - // Probably should update regexp & check speed - data[data.length - 1] === '_') { - return false; - } +/***/ 9495: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return true; -} +"use strict"; -function constructYamlFloat(data) { - var value, sign, base, digits; - value = data.replace(/_/g, '').toLowerCase(); - sign = value[0] === '-' ? -1 : 1; - digits = []; +var typeOf = __nccwpck_require__(5140); +var extend = __nccwpck_require__(8905); - if ('+-'.indexOf(value[0]) >= 0) { - value = value.slice(1); +/** + * Parse sections in `input` with the given `options`. + * + * ```js + * var sections = require('{%= name %}'); + * var result = sections(input, options); + * // { content: 'Content before sections', sections: [] } + * ``` + * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer. + * @param {Object} options + * @return {Object} Returns an object with a `content` string and an array of `sections` objects. + * @api public + */ + +module.exports = function(input, options) { + if (typeof options === 'function') { + options = { parse: options }; } - if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + var file = toObject(input); + var defaults = {section_delimiter: '---', parse: identity}; + var opts = extend({}, defaults, options); + var delim = opts.section_delimiter; + var lines = file.content.split(/\r?\n/); + var sections = null; + var section = createSection(); + var content = []; + var stack = []; - } else if (value === '.nan') { - return NaN; + function initSections(val) { + file.content = val; + sections = []; + content = []; + } - } else if (value.indexOf(':') >= 0) { - value.split(':').forEach(function (v) { - digits.unshift(parseFloat(v, 10)); - }); + function closeSection(val) { + if (stack.length) { + section.key = getKey(stack[0], delim); + section.content = val; + opts.parse(section, sections); + sections.push(section); + section = createSection(); + content = []; + stack = []; + } + } - value = 0.0; - base = 1; + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + var len = stack.length; + var ln = line.trim(); - digits.forEach(function (d) { - value += d * base; - base *= 60; - }); + if (isDelimiter(ln, delim)) { + if (ln.length === 3 && i !== 0) { + if (len === 0 || len === 2) { + content.push(line); + continue; + } + stack.push(ln); + section.data = content.join('\n'); + content = []; + continue; + } - return sign * value; + if (sections === null) { + initSections(content.join('\n')); + } + + if (len === 2) { + closeSection(content.join('\n')); + } + + stack.push(ln); + continue; + } + content.push(line); } - return sign * parseFloat(value, 10); -} + if (sections === null) { + initSections(content.join('\n')); + } else { + closeSection(content.join('\n')); + } -var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + file.sections = sections; + return file; +}; -function representYamlFloat(object, style) { - var res; +function isDelimiter(line, delim) { + if (line.slice(0, delim.length) !== delim) { + return false; + } + if (line.charAt(delim.length + 1) === delim.slice(-1)) { + return false; + } + return true; +} - if (isNaN(object)) { - switch (style) { - case 'lowercase': return '.nan'; - case 'uppercase': return '.NAN'; - case 'camelcase': return '.NaN'; - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '.inf'; - case 'uppercase': return '.INF'; - case 'camelcase': return '.Inf'; - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '-.inf'; - case 'uppercase': return '-.INF'; - case 'camelcase': return '-.Inf'; - } - } else if (common.isNegativeZero(object)) { - return '-0.0'; +function toObject(input) { + if (typeOf(input) !== 'object') { + input = { content: input }; } - res = object.toString(10); + if (typeof input.content !== 'string' && !isBuffer(input.content)) { + throw new TypeError('expected a buffer or string'); + } + + input.content = input.content.toString(); + input.sections = []; + return input; +} + +function getKey(val, delim) { + return val ? val.slice(delim.length).trim() : ''; +} - // JS stringifier can build scientific format without dots: 5e-100, - // while YAML requres dot: 5.e-100. Fix it with simple hack +function createSection() { + return { key: '', data: '', content: '' }; +} - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +function identity(val) { + return val; } -function isFloat(object) { - return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)); +function isBuffer(val) { + if (val && val.constructor && typeof val.constructor.isBuffer === 'function') { + return val.constructor.isBuffer(val); + } + return false; } -module.exports = new Type('tag:yaml.org,2002:float', { - kind: 'scalar', - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: 'lowercase' -}); + +/***/ }), + +/***/ 1389: +/***/ ((module) => { + +"use strict"; +/*! + * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string> + * + * Copyright (c) 2015, 2017, Jon Schlinkert. + * Released under the MIT License. + */ + + + +module.exports = function(str) { + if (typeof str === 'string' && str.charAt(0) === '\ufeff') { + return str.slice(1); + } + return str; +}; /***/ }), -/***/ 96823: +/***/ 770: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +module.exports = __nccwpck_require__(218); -var common = __nccwpck_require__(75974); -var Type = __nccwpck_require__(92355); +/***/ }), -function isHexCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || - ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || - ((0x61/* a */ <= c) && (c <= 0x66/* f */)); -} +/***/ 218: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -function isOctCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); -} +"use strict"; -function isDecCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); -} -function resolveYamlInteger(data) { - if (data === null) return false; +var net = __nccwpck_require__(9278); +var tls = __nccwpck_require__(4756); +var http = __nccwpck_require__(8611); +var https = __nccwpck_require__(5692); +var events = __nccwpck_require__(4434); +var assert = __nccwpck_require__(2613); +var util = __nccwpck_require__(9023); - var max = data.length, - index = 0, - hasDigits = false, - ch; - if (!max) return false; +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; - ch = data[index]; - // sign - if (ch === '-' || ch === '+') { - ch = data[++index]; - } +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} - if (ch === '0') { - // 0 - if (index + 1 === max) return true; - ch = data[++index]; +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} - // base 2, base 8, base 16 +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} - if (ch === 'b') { - // base 2 - index++; +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (ch !== '0' && ch !== '1') return false; - hasDigits = true; + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; } - return hasDigits && ch !== '_'; } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - if (ch === 'x') { - // base 16 - index++; + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isHexCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && ch !== '_'; - } + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); - // base 8 - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; + function onFree() { + self.emit('free', socket, options); } - return hasDigits && ch !== '_'; - } - // base 10 (except 0) or base 60 + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; - // value should not start with `_`; - if (ch === '_') return false; +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (ch === ':') break; - if (!isDecCode(data.charCodeAt(index))) { - return false; + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port } - hasDigits = true; + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); } - // Should have digits and should not end with `_` - if (!hasDigits || ch === '_') return false; + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); - // if !base60 - done; - if (ch !== ':') return true; + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } - // base60 almost not used, no needs to optimize - return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); -} + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } -function constructYamlInteger(data) { - var value = data, sign = 1, ch, base, digits = []; + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); - if (value.indexOf('_') !== -1) { - value = value.replace(/_/g, ''); + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); } - ch = value[0]; + function onError(cause) { + connectReq.removeAllListeners(); - if (ch === '-' || ch === '+') { - if (ch === '-') sign = -1; - value = value.slice(1); - ch = value[0]; + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); } +}; - if (value === '0') return 0; - - if (ch === '0') { - if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); - if (value[1] === 'x') return sign * parseInt(value, 16); - return sign * parseInt(value, 8); +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; } + this.sockets.splice(pos, 1); - if (value.indexOf(':') !== -1) { - value.split(':').forEach(function (v) { - digits.unshift(parseInt(v, 10)); + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); }); + } +}; - value = 0; - base = 1; - - digits.forEach(function (d) { - value += (d * base); - base *= 60; +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host }); - return sign * value; + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} - } - return sign * parseInt(value, 10); +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later } -function isInteger(object) { - return (Object.prototype.toString.call(object)) === '[object Number]' && - (object % 1 === 0 && !common.isNegativeZero(object)); +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; } -module.exports = new Type('tag:yaml.org,2002:int', { - kind: 'scalar', - resolve: resolveYamlInteger, - construct: constructYamlInteger, - predicate: isInteger, - represent: { - binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, - octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); }, - decimal: function (obj) { return obj.toString(10); }, - /* eslint-disable max-len */ - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } - }, - defaultStyle: 'decimal', - styleAliases: { - binary: [ 2, 'bin' ], - octal: [ 8, 'oct' ], - decimal: [ 10, 'dec' ], - hexadecimal: [ 16, 'hex' ] + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); } -}); +} else { + debug = function() {}; +} +exports.debug = debug; // for test /***/ }), -/***/ 57596: +/***/ 6752: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var esprima; - -// Browserified version does not have esprima -// -// 1. For node.js just require module as deps -// 2. For browser try to require mudule via external AMD system. -// If not found - try to fallback to window.esprima. If not -// found too - then fail to parse. -// +const Client = __nccwpck_require__(6197) +const Dispatcher = __nccwpck_require__(992) +const errors = __nccwpck_require__(8707) +const Pool = __nccwpck_require__(5076) +const BalancedPool = __nccwpck_require__(1093) +const Agent = __nccwpck_require__(9965) +const util = __nccwpck_require__(3440) +const { InvalidArgumentError } = errors +const api = __nccwpck_require__(6615) +const buildConnector = __nccwpck_require__(9136) +const MockClient = __nccwpck_require__(7365) +const MockAgent = __nccwpck_require__(7501) +const MockPool = __nccwpck_require__(4004) +const mockErrors = __nccwpck_require__(2429) +const ProxyAgent = __nccwpck_require__(2720) +const RetryHandler = __nccwpck_require__(3573) +const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(2581) +const DecoratorHandler = __nccwpck_require__(8840) +const RedirectHandler = __nccwpck_require__(8299) +const createRedirectInterceptor = __nccwpck_require__(4415) + +let hasCrypto try { - // workaround to exclude package from browserify list. - var _require = require; - esprima = _require('esprima'); -} catch (_) { - /* eslint-disable no-redeclare */ - /* global window */ - if (typeof window !== 'undefined') esprima = window.esprima; + __nccwpck_require__(6982) + hasCrypto = true +} catch { + hasCrypto = false } -var Type = __nccwpck_require__(92355); +Object.assign(Dispatcher.prototype, api) -function resolveJavascriptFunction(data) { - if (data === null) return false; +module.exports.Dispatcher = Dispatcher +module.exports.Client = Client +module.exports.Pool = Pool +module.exports.BalancedPool = BalancedPool +module.exports.Agent = Agent +module.exports.ProxyAgent = ProxyAgent +module.exports.RetryHandler = RetryHandler - try { - var source = '(' + data + ')', - ast = esprima.parse(source, { range: true }); +module.exports.DecoratorHandler = DecoratorHandler +module.exports.RedirectHandler = RedirectHandler +module.exports.createRedirectInterceptor = createRedirectInterceptor - if (ast.type !== 'Program' || - ast.body.length !== 1 || - ast.body[0].type !== 'ExpressionStatement' || - (ast.body[0].expression.type !== 'ArrowFunctionExpression' && - ast.body[0].expression.type !== 'FunctionExpression')) { - return false; +module.exports.buildConnector = buildConnector +module.exports.errors = errors + +function makeDispatcher (fn) { + return (url, opts, handler) => { + if (typeof opts === 'function') { + handler = opts + opts = null } - return true; - } catch (err) { - return false; - } -} + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url') + } -function constructJavascriptFunction(data) { - /*jslint evil:true*/ + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } - var source = '(' + data + ')', - ast = esprima.parse(source, { range: true }), - params = [], - body; + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path') + } - if (ast.type !== 'Program' || - ast.body.length !== 1 || - ast.body[0].type !== 'ExpressionStatement' || - (ast.body[0].expression.type !== 'ArrowFunctionExpression' && - ast.body[0].expression.type !== 'FunctionExpression')) { - throw new Error('Failed to resolve function'); - } + let path = opts.path + if (!opts.path.startsWith('/')) { + path = `/${path}` + } - ast.body[0].expression.params.forEach(function (param) { - params.push(param.name); - }); + url = new URL(util.parseOrigin(url).origin + path) + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {} + } - body = ast.body[0].expression.body.range; + url = util.parseURL(url) + } - // Esprima's ranges include the first '{' and the last '}' characters on - // function expressions. So cut them out. - if (ast.body[0].expression.body.type === 'BlockStatement') { - /*eslint-disable no-new-func*/ - return new Function(params, source.slice(body[0] + 1, body[1] - 1)); - } - // ES6 arrow functions can omit the BlockStatement. In that case, just return - // the body. - /*eslint-disable no-new-func*/ - return new Function(params, 'return ' + source.slice(body[0], body[1])); -} + const { agent, dispatcher = getGlobalDispatcher() } = opts -function representJavascriptFunction(object /*, style*/) { - return object.toString(); -} + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') + } -function isFunction(object) { - return Object.prototype.toString.call(object) === '[object Function]'; + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, handler) + } } -module.exports = new Type('tag:yaml.org,2002:js/function', { - kind: 'scalar', - resolve: resolveJavascriptFunction, - construct: constructJavascriptFunction, - predicate: isFunction, - represent: representJavascriptFunction -}); - - -/***/ }), - -/***/ 20664: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(92355); - -function resolveJavascriptRegExp(data) { - if (data === null) return false; - if (data.length === 0) return false; +module.exports.setGlobalDispatcher = setGlobalDispatcher +module.exports.getGlobalDispatcher = getGlobalDispatcher - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ''; +if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { + let fetchImpl = null + module.exports.fetch = async function fetch (resource) { + if (!fetchImpl) { + fetchImpl = (__nccwpck_require__(2315).fetch) + } - // if regexp starts with '/' it can have modifiers and must be properly closed - // `/foo/gim` - modifiers tail can be maximum 3 chars - if (regexp[0] === '/') { - if (tail) modifiers = tail[1]; + try { + return await fetchImpl(...arguments) + } catch (err) { + if (typeof err === 'object') { + Error.captureStackTrace(err, this) + } - if (modifiers.length > 3) return false; - // if expression starts with /, is should be properly terminated - if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; + throw err + } } + module.exports.Headers = __nccwpck_require__(6349).Headers + module.exports.Response = __nccwpck_require__(8676).Response + module.exports.Request = __nccwpck_require__(5194).Request + module.exports.FormData = __nccwpck_require__(3073).FormData + module.exports.File = __nccwpck_require__(3041).File + module.exports.FileReader = __nccwpck_require__(2160).FileReader - return true; -} - -function constructJavascriptRegExp(data) { - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ''; - - // `/foo/gim` - tail can be maximum 4 chars - if (regexp[0] === '/') { - if (tail) modifiers = tail[1]; - regexp = regexp.slice(1, regexp.length - modifiers.length - 1); - } + const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(5628) - return new RegExp(regexp, modifiers); + module.exports.setGlobalOrigin = setGlobalOrigin + module.exports.getGlobalOrigin = getGlobalOrigin + + const { CacheStorage } = __nccwpck_require__(4738) + const { kConstruct } = __nccwpck_require__(296) + + // Cache & CacheStorage are tightly coupled with fetch. Even if it may run + // in an older version of Node, it doesn't have any use without fetch. + module.exports.caches = new CacheStorage(kConstruct) } -function representJavascriptRegExp(object /*, style*/) { - var result = '/' + object.source + '/'; +if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(3168) - if (object.global) result += 'g'; - if (object.multiline) result += 'm'; - if (object.ignoreCase) result += 'i'; + module.exports.deleteCookie = deleteCookie + module.exports.getCookies = getCookies + module.exports.getSetCookies = getSetCookies + module.exports.setCookie = setCookie - return result; + const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) + + module.exports.parseMIMEType = parseMIMEType + module.exports.serializeAMimeType = serializeAMimeType } -function isRegExp(object) { - return Object.prototype.toString.call(object) === '[object RegExp]'; +if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = __nccwpck_require__(5171) + + module.exports.WebSocket = WebSocket } -module.exports = new Type('tag:yaml.org,2002:js/regexp', { - kind: 'scalar', - resolve: resolveJavascriptRegExp, - construct: constructJavascriptRegExp, - predicate: isRegExp, - represent: representJavascriptRegExp -}); +module.exports.request = makeDispatcher(api.request) +module.exports.stream = makeDispatcher(api.stream) +module.exports.pipeline = makeDispatcher(api.pipeline) +module.exports.connect = makeDispatcher(api.connect) +module.exports.upgrade = makeDispatcher(api.upgrade) + +module.exports.MockClient = MockClient +module.exports.MockPool = MockPool +module.exports.MockAgent = MockAgent +module.exports.mockErrors = mockErrors /***/ }), -/***/ 76692: +/***/ 9965: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(92355); +const { InvalidArgumentError } = __nccwpck_require__(8707) +const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = __nccwpck_require__(6443) +const DispatcherBase = __nccwpck_require__(1) +const Pool = __nccwpck_require__(5076) +const Client = __nccwpck_require__(6197) +const util = __nccwpck_require__(3440) +const createRedirectInterceptor = __nccwpck_require__(4415) +const { WeakRef, FinalizationRegistry } = __nccwpck_require__(3194)() -function resolveJavascriptUndefined() { - return true; -} +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kMaxRedirections = Symbol('maxRedirections') +const kOnDrain = Symbol('onDrain') +const kFactory = Symbol('factory') +const kFinalizer = Symbol('finalizer') +const kOptions = Symbol('options') -function constructJavascriptUndefined() { - /*eslint-disable no-undefined*/ - return undefined; +function defaultFactory (origin, opts) { + return opts && opts.connections === 1 + ? new Client(origin, opts) + : new Pool(origin, opts) } -function representJavascriptUndefined() { - return ''; -} +class Agent extends DispatcherBase { + constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super() -function isUndefined(object) { - return typeof object === 'undefined'; -} + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } -module.exports = new Type('tag:yaml.org,2002:js/undefined', { - kind: 'scalar', - resolve: resolveJavascriptUndefined, - construct: constructJavascriptUndefined, - predicate: isUndefined, - represent: representJavascriptUndefined -}); + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } -/***/ }), + if (connect && typeof connect !== 'function') { + connect = { ...connect } + } -/***/ 23332: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })] -"use strict"; + this[kOptions] = { ...util.deepClone(options), connect } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kMaxRedirections] = maxRedirections + this[kFactory] = factory + this[kClients] = new Map() + this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => { + const ref = this[kClients].get(key) + if (ref !== undefined && ref.deref() === undefined) { + this[kClients].delete(key) + } + }) + const agent = this -var Type = __nccwpck_require__(92355); + this[kOnDrain] = (origin, targets) => { + agent.emit('drain', origin, [agent, ...targets]) + } -module.exports = new Type('tag:yaml.org,2002:map', { - kind: 'mapping', - construct: function (data) { return data !== null ? data : {}; } -}); + this[kOnConnect] = (origin, targets) => { + agent.emit('connect', origin, [agent, ...targets]) + } + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit('disconnect', origin, [agent, ...targets], err) + } -/***/ }), + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit('connectionError', origin, [agent, ...targets], err) + } + } -/***/ 27058: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + get [kRunning] () { + let ret = 0 + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore next: gc is undeterministic */ + if (client) { + ret += client[kRunning] + } + } + return ret + } -"use strict"; + [kDispatch] (opts, handler) { + let key + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin) + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') + } + const ref = this[kClients].get(key) -var Type = __nccwpck_require__(92355); + let dispatcher = ref ? ref.deref() : null + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) -function resolveYamlMerge(data) { - return data === '<<' || data === null; + this[kClients].set(key, new WeakRef(dispatcher)) + this[kFinalizer].register(dispatcher, key) + } + + return dispatcher.dispatch(opts, handler) + } + + async [kClose] () { + const closePromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + closePromises.push(client.close()) + } + } + + await Promise.all(closePromises) + } + + async [kDestroy] (err) { + const destroyPromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + destroyPromises.push(client.destroy(err)) + } + } + + await Promise.all(destroyPromises) + } } -module.exports = new Type('tag:yaml.org,2002:merge', { - kind: 'scalar', - resolve: resolveYamlMerge -}); +module.exports = Agent /***/ }), -/***/ 44262: +/***/ 158: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +const { addAbortListener } = __nccwpck_require__(3440) +const { RequestAbortedError } = __nccwpck_require__(8707) +const kListener = Symbol('kListener') +const kSignal = Symbol('kSignal') -var Type = __nccwpck_require__(92355); +function abort (self) { + if (self.abort) { + self.abort() + } else { + self.onError(new RequestAbortedError()) + } +} -function resolveYamlNull(data) { - if (data === null) return true; +function addSignal (self, signal) { + self[kSignal] = null + self[kListener] = null - var max = data.length; + if (!signal) { + return + } - return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); -} + if (signal.aborted) { + abort(self) + return + } -function constructYamlNull() { - return null; + self[kSignal] = signal + self[kListener] = () => { + abort(self) + } + + addAbortListener(self[kSignal], self[kListener]) } -function isNull(object) { - return object === null; +function removeSignal (self) { + if (!self[kSignal]) { + return + } + + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]) + } else { + self[kSignal].removeListener('abort', self[kListener]) + } + + self[kSignal] = null + self[kListener] = null } -module.exports = new Type('tag:yaml.org,2002:null', { - kind: 'scalar', - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function () { return '~'; }, - lowercase: function () { return 'null'; }, - uppercase: function () { return 'NULL'; }, - camelcase: function () { return 'Null'; } - }, - defaultStyle: 'lowercase' -}); +module.exports = { + addSignal, + removeSignal +} /***/ }), -/***/ 92710: +/***/ 4660: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(92355); +const { AsyncResource } = __nccwpck_require__(290) +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { addSignal, removeSignal } = __nccwpck_require__(158) -var _hasOwnProperty = Object.prototype.hasOwnProperty; -var _toString = Object.prototype.toString; +class ConnectHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } -function resolveYamlOmap(data) { - if (data === null) return true; + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } - var objectKeys = [], index, length, pair, pairKey, pairHasKey, - object = data; + const { signal, opaque, responseHeaders } = opts - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - pairHasKey = false; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } - if (_toString.call(pair) !== '[object Object]') return false; + super('UNDICI_CONNECT') - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; - } + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.callback = callback + this.abort = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() } - if (!pairHasKey) return false; + this.abort = abort + this.context = context + } - if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); - else return false; + onHeaders () { + throw new SocketError('bad connect', null) } - return true; + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + removeSignal(this) + + this.callback = null + + let headers = rawHeaders + // Indicates is an HTTP2Session + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + } + + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } } -function constructYamlOmap(data) { - return data !== null ? data : []; +function connect (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const connectHandler = new ConnectHandler(opts, callback) + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } } -module.exports = new Type('tag:yaml.org,2002:omap', { - kind: 'sequence', - resolve: resolveYamlOmap, - construct: constructYamlOmap -}); +module.exports = connect /***/ }), -/***/ 85978: +/***/ 6862: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(92355); +const { + Readable, + Duplex, + PassThrough +} = __nccwpck_require__(2203) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { AsyncResource } = __nccwpck_require__(290) +const { addSignal, removeSignal } = __nccwpck_require__(158) +const assert = __nccwpck_require__(2613) -var _toString = Object.prototype.toString; +const kResume = Symbol('resume') -function resolveYamlPairs(data) { - if (data === null) return true; +class PipelineRequest extends Readable { + constructor () { + super({ autoDestroy: true }) - var index, length, pair, keys, result, - object = data; + this[kResume] = null + } - result = new Array(object.length); + _read () { + const { [kResume]: resume } = this - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; + if (resume) { + this[kResume] = null + resume() + } + } - if (_toString.call(pair) !== '[object Object]') return false; + _destroy (err, callback) { + this._read() - keys = Object.keys(pair); + callback(err) + } +} - if (keys.length !== 1) return false; +class PipelineResponse extends Readable { + constructor (resume) { + super({ autoDestroy: true }) + this[kResume] = resume + } - result[index] = [ keys[0], pair[keys[0]] ]; + _read () { + this[kResume]() } - return true; + _destroy (err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + callback(err) + } } -function constructYamlPairs(data) { - if (data === null) return []; +class PipelineHandler extends AsyncResource { + constructor (opts, handler) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } - var index, length, pair, keys, result, - object = data; + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler') + } - result = new Array(object.length); + const { signal, method, opaque, onInfo, responseHeaders } = opts - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } - keys = Object.keys(pair); + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } - result[index] = [ keys[0], pair[keys[0]] ]; - } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } - return result; -} + super('UNDICI_PIPELINE') -module.exports = new Type('tag:yaml.org,2002:pairs', { - kind: 'sequence', - resolve: resolveYamlPairs, - construct: constructYamlPairs -}); + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.handler = handler + this.abort = null + this.context = null + this.onInfo = onInfo || null + this.req = new PipelineRequest().on('error', util.nop) -/***/ }), + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this -/***/ 47538: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (body && body.resume) { + body.resume() + } + }, + write: (chunk, encoding, callback) => { + const { req } = this -"use strict"; + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback() + } else { + req[kResume] = callback + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError() + } -var Type = __nccwpck_require__(92355); + if (abort && err) { + abort() + } -module.exports = new Type('tag:yaml.org,2002:seq', { - kind: 'sequence', - construct: function (data) { return data !== null ? data : []; } -}); + util.destroy(body, err) + util.destroy(req, err) + util.destroy(res, err) + removeSignal(this) -/***/ }), + callback(err) + } + }).on('prefinish', () => { + const { req } = this -/***/ 34438: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Node < 15 does not call _final in same tick. + req.push(null) + }) -"use strict"; + this.res = null + addSignal(this, signal) + } -var Type = __nccwpck_require__(92355); + onConnect (abort, context) { + const { ret, res } = this -var _hasOwnProperty = Object.prototype.hasOwnProperty; + assert(!res, 'pipeline cannot be retried') -function resolveYamlSet(data) { - if (data === null) return true; + if (ret.destroyed) { + throw new RequestAbortedError() + } - var key, object = data; + this.abort = abort + this.context = context + } - for (key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; + onHeaders (statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this + + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.onInfo({ statusCode, headers }) + } + return + } + + this.res = new PipelineResponse(resume) + + let body + try { + this.handler = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }) + } catch (err) { + this.res.on('error', util.nop) + throw err } + + if (!body || typeof body.on !== 'function') { + throw new InvalidReturnValueError('expected Readable') + } + + body + .on('data', (chunk) => { + const { ret, body } = this + + if (!ret.push(chunk) && body.pause) { + body.pause() + } + }) + .on('error', (err) => { + const { ret } = this + + util.destroy(ret, err) + }) + .on('end', () => { + const { ret } = this + + ret.push(null) + }) + .on('close', () => { + const { ret } = this + + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()) + } + }) + + this.body = body } - return true; + onData (chunk) { + const { res } = this + return res.push(chunk) + } + + onComplete (trailers) { + const { res } = this + res.push(null) + } + + onError (err) { + const { ret } = this + this.handler = null + util.destroy(ret, err) + } } -function constructYamlSet(data) { - return data !== null ? data : {}; +function pipeline (opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler) + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler) + return pipelineHandler.ret + } catch (err) { + return new PassThrough().destroy(err) + } } -module.exports = new Type('tag:yaml.org,2002:set', { - kind: 'mapping', - resolve: resolveYamlSet, - construct: constructYamlSet -}); +module.exports = pipeline /***/ }), -/***/ 58192: +/***/ 4043: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(92355); +const Readable = __nccwpck_require__(9927) +const { + InvalidArgumentError, + RequestAbortedError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { getResolveErrorBodyCallback } = __nccwpck_require__(7655) +const { AsyncResource } = __nccwpck_require__(290) +const { addSignal, removeSignal } = __nccwpck_require__(158) -module.exports = new Type('tag:yaml.org,2002:str', { - kind: 'scalar', - construct: function (data) { return data !== null ? data : ''; } -}); +class RequestHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts -/***/ }), + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } -/***/ 22989: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark') + } -"use strict"; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } -var Type = __nccwpck_require__(92355); + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } -var YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$'); // [3] day + super('UNDICI_REQUEST') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } -var YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour - '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.res = null + this.abort = null + this.body = body + this.trailers = {} + this.context = null + this.onInfo = onInfo || null + this.throwOnError = throwOnError + this.highWaterMark = highWaterMark + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } -function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; -} + addSignal(this, signal) + } -function constructYamlTimestamp(data) { - var match, year, month, day, hour, minute, second, fraction = 0, - delta = null, tz_hour, tz_minute, date; + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } - match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + this.abort = abort + this.context = context + } - if (match === null) throw new Error('Date resolve error'); + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this - // match: [1] year [2] month [3] day + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) - year = +(match[1]); - month = +(match[2]) - 1; // JS month starts with 0 - day = +(match[3]); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } - if (!match[4]) { // no hour - return new Date(Date.UTC(year, month, day)); + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + const body = new Readable({ resume, abort, contentType, highWaterMark }) + + this.callback = null + this.res = body + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body, contentType, statusCode, statusMessage, headers } + ) + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }) + } + } } - // match: [4] hour [5] minute [6] second [7] fraction + onData (chunk) { + const { res } = this + return res.push(chunk) + } - hour = +(match[4]); - minute = +(match[5]); - second = +(match[6]); + onComplete (trailers) { + const { res } = this - if (match[7]) { - fraction = match[7].slice(0, 3); - while (fraction.length < 3) { // milli-seconds - fraction += '0'; - } - fraction = +fraction; - } + removeSignal(this) - // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + util.parseHeaders(trailers, this.trailers) - if (match[9]) { - tz_hour = +(match[10]); - tz_minute = +(match[11] || 0); - delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds - if (match[9] === '-') delta = -delta; + res.push(null) } - date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + onError (err) { + const { res, callback, body, opaque } = this - if (delta) date.setTime(date.getTime() - delta); + removeSignal(this) - return date; + if (callback) { + // TODO: Does this need queueMicrotask? + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (res) { + this.res = null + // Ensure all queued handlers are invoked before destroying res. + queueMicrotask(() => { + util.destroy(res, err) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + } } -function representYamlTimestamp(object /*, style*/) { - return object.toISOString(); +function request (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + request.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new RequestHandler(opts, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } } -module.exports = new Type('tag:yaml.org,2002:timestamp', { - kind: 'scalar', - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp -}); +module.exports = request +module.exports.RequestHandler = RequestHandler /***/ }), -/***/ 48978: -/***/ ((module) => { +/***/ 3560: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const object = {}; -const hasOwnProperty = object.hasOwnProperty; -const forOwn = (object, callback) => { - for (const key in object) { - if (hasOwnProperty.call(object, key)) { - callback(key, object[key]); - } - } -}; +const { finished, PassThrough } = __nccwpck_require__(2203) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { getResolveErrorBodyCallback } = __nccwpck_require__(7655) +const { AsyncResource } = __nccwpck_require__(290) +const { addSignal, removeSignal } = __nccwpck_require__(158) -const extend = (destination, source) => { - if (!source) { - return destination; - } - forOwn(source, (key, value) => { - destination[key] = value; - }); - return destination; -}; +class StreamHandler extends AsyncResource { + constructor (opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } -const forEach = (array, callback) => { - const length = array.length; - let index = -1; - while (++index < length) { - callback(array[index]); - } -}; + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts -const toString = object.toString; -const isArray = Array.isArray; -const isBuffer = Buffer.isBuffer; -const isObject = (value) => { - // This is a very simple check, but it’s good enough for what we need. - return toString.call(value) == '[object Object]'; -}; -const isString = (value) => { - return typeof value == 'string' || - toString.call(value) == '[object String]'; -}; -const isNumber = (value) => { - return typeof value == 'number' || - toString.call(value) == '[object Number]'; -}; -const isFunction = (value) => { - return typeof value == 'function'; -}; -const isMap = (value) => { - return toString.call(value) == '[object Map]'; -}; -const isSet = (value) => { - return toString.call(value) == '[object Set]'; -}; + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } -/*--------------------------------------------------------------------------*/ - -// https://mathiasbynens.be/notes/javascript-escapes#single -const singleEscapes = { - '"': '\\"', - '\'': '\\\'', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t' - // `\v` is omitted intentionally, because in IE < 9, '\v' == 'v'. - // '\v': '\\x0B' -}; -const regexSingleEscape = /["'\\\b\f\n\r\t]/; - -const regexDigit = /[0-9]/; -const regexWhitelist = /[ !#-&\(-\[\]-_a-~]/; - -const jsesc = (argument, options) => { - const increaseIndentation = () => { - oldIndent = indent; - ++options.indentLevel; - indent = options.indent.repeat(options.indentLevel) - }; - // Handle options - const defaults = { - 'escapeEverything': false, - 'minimal': false, - 'isScriptContext': false, - 'quotes': 'single', - 'wrap': false, - 'es6': false, - 'json': false, - 'compact': true, - 'lowercaseHex': false, - 'numbers': 'decimal', - 'indent': '\t', - 'indentLevel': 0, - '__inline1__': false, - '__inline2__': false - }; - const json = options && options.json; - if (json) { - defaults.quotes = 'double'; - defaults.wrap = true; - } - options = extend(defaults, options); - if ( - options.quotes != 'single' && - options.quotes != 'double' && - options.quotes != 'backtick' - ) { - options.quotes = 'single'; - } - const quote = options.quotes == 'double' ? - '"' : - (options.quotes == 'backtick' ? - '`' : - '\'' - ); - const compact = options.compact; - const lowercaseHex = options.lowercaseHex; - let indent = options.indent.repeat(options.indentLevel); - let oldIndent = ''; - const inline1 = options.__inline1__; - const inline2 = options.__inline2__; - const newLine = compact ? '' : '\n'; - let result; - let isEmpty = true; - const useBinNumbers = options.numbers == 'binary'; - const useOctNumbers = options.numbers == 'octal'; - const useDecNumbers = options.numbers == 'decimal'; - const useHexNumbers = options.numbers == 'hexadecimal'; - - if (json && argument && isFunction(argument.toJSON)) { - argument = argument.toJSON(); - } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory') + } - if (!isString(argument)) { - if (isMap(argument)) { - if (argument.size == 0) { - return 'new Map()'; - } - if (!compact) { - options.__inline1__ = true; - options.__inline2__ = false; - } - return 'new Map(' + jsesc(Array.from(argument), options) + ')'; - } - if (isSet(argument)) { - if (argument.size == 0) { - return 'new Set()'; - } - return 'new Set(' + jsesc(Array.from(argument), options) + ')'; - } - if (isBuffer(argument)) { - if (argument.length == 0) { - return 'Buffer.from([])'; - } - return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')'; - } - if (isArray(argument)) { - result = []; - options.wrap = true; - if (inline1) { - options.__inline1__ = false; - options.__inline2__ = true; - } - if (!inline2) { - increaseIndentation(); - } - forEach(argument, (value) => { - isEmpty = false; - if (inline2) { - options.__inline2__ = false; - } - result.push( - (compact || inline2 ? '' : indent) + - jsesc(value, options) - ); - }); - if (isEmpty) { - return '[]'; - } - if (inline2) { - return '[' + result.join(', ') + ']'; - } - return '[' + newLine + result.join(',' + newLine) + newLine + - (compact ? '' : oldIndent) + ']'; - } else if (isNumber(argument)) { - if (json) { - // Some number values (e.g. `Infinity`) cannot be represented in JSON. - return JSON.stringify(argument); - } - if (useDecNumbers) { - return String(argument); - } - if (useHexNumbers) { - let hexadecimal = argument.toString(16); - if (!lowercaseHex) { - hexadecimal = hexadecimal.toUpperCase(); - } - return '0x' + hexadecimal; - } - if (useBinNumbers) { - return '0b' + argument.toString(2); - } - if (useOctNumbers) { - return '0o' + argument.toString(8); - } - } else if (!isObject(argument)) { - if (json) { - // For some values (e.g. `undefined`, `function` objects), - // `JSON.stringify(value)` returns `undefined` (which isn’t valid - // JSON) instead of `'null'`. - return JSON.stringify(argument) || 'null'; - } - return String(argument); - } else { // it’s an object - result = []; - options.wrap = true; - increaseIndentation(); - forOwn(argument, (key, value) => { - isEmpty = false; - result.push( - (compact ? '' : indent) + - jsesc(key, options) + ':' + - (compact ? '' : ' ') + - jsesc(value, options) - ); - }); - if (isEmpty) { - return '{}'; - } - return '{' + newLine + result.join(',' + newLine) + newLine + - (compact ? '' : oldIndent) + '}'; - } - } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } - const string = argument; - // Loop over each code unit in the string and escape it - let index = -1; - const length = string.length; - result = ''; - while (++index < length) { - const character = string.charAt(index); - if (options.es6) { - const first = string.charCodeAt(index); - if ( // check if it’s the start of a surrogate pair - first >= 0xD800 && first <= 0xDBFF && // high surrogate - length > index + 1 // there is a next code unit - ) { - const second = string.charCodeAt(index + 1); - if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - const codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; - let hexadecimal = codePoint.toString(16); - if (!lowercaseHex) { - hexadecimal = hexadecimal.toUpperCase(); - } - result += '\\u{' + hexadecimal + '}'; - ++index; - continue; - } - } - } - if (!options.escapeEverything) { - if (regexWhitelist.test(character)) { - // It’s a printable ASCII character that is not `"`, `'` or `\`, - // so don’t escape it. - result += character; - continue; - } - if (character == '"') { - result += quote == character ? '\\"' : character; - continue; - } - if (character == '`') { - result += quote == character ? '\\`' : character; - continue; - } - if (character == '\'') { - result += quote == character ? '\\\'' : character; - continue; - } - } - if ( - character == '\0' && - !json && - !regexDigit.test(string.charAt(index + 1)) - ) { - result += '\\0'; - continue; - } - if (regexSingleEscape.test(character)) { - // no need for a `hasOwnProperty` check here - result += singleEscapes[character]; - continue; - } - const charCode = character.charCodeAt(0); - if (options.minimal && charCode != 0x2028 && charCode != 0x2029) { - result += character; - continue; - } - let hexadecimal = charCode.toString(16); - if (!lowercaseHex) { - hexadecimal = hexadecimal.toUpperCase(); - } - const longhand = hexadecimal.length > 2 || json; - const escaped = '\\' + (longhand ? 'u' : 'x') + - ('0000' + hexadecimal).slice(longhand ? -4 : -2); - result += escaped; - continue; - } - if (options.wrap) { - result = quote + result + quote; - } - if (quote == '`') { - result = result.replace(/\$\{/g, '\\\$\{'); - } - if (options.isScriptContext) { - // https://mathiasbynens.be/notes/etago - return result - .replace(/<\/(script|style)/gi, '<\\/$1') - .replace(/<!--/g, json ? '\\u003C!--' : '\\x3C!--'); - } - return result; -}; + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_STREAM') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.factory = factory + this.callback = callback + this.res = null + this.abort = null + this.context = null + this.trailers = null + this.body = body + this.onInfo = onInfo || null + this.throwOnError = throwOnError || false + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + addSignal(this, signal) + } -jsesc.version = '2.5.2'; + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + this.factory = null + + let res + + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + res = new PassThrough() + + this.callback = null + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ) + } else { + if (factory === null) { + return + } -module.exports = jsesc; + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }) + if ( + !res || + typeof res.write !== 'function' || + typeof res.end !== 'function' || + typeof res.on !== 'function' + ) { + throw new InvalidReturnValueError('expected Writable') + } -/***/ }), + // TODO: Avoid finished. It registers an unnecessary amount of listeners. + finished(res, { readable: false }, (err) => { + const { callback, res, opaque, trailers, abort } = this -/***/ 25130: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.res = null + if (err || !res.readable) { + util.destroy(res, err) + } -const parse = __nccwpck_require__(13210) -const stringify = __nccwpck_require__(75627) + this.callback = null + this.runInAsyncScope(callback, null, err || null, { opaque, trailers }) -const JSON5 = { - parse, - stringify, -} + if (err) { + abort() + } + }) + } -module.exports = JSON5 + res.on('drain', resume) + this.res = res -/***/ }), + const needDrain = res.writableNeedDrain !== undefined + ? res.writableNeedDrain + : res._writableState && res._writableState.needDrain -/***/ 13210: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return needDrain !== true + } -const util = __nccwpck_require__(93009) - -let source -let parseState -let stack -let pos -let line -let column -let token -let key -let root - -module.exports = function parse (text, reviver) { - source = String(text) - parseState = 'start' - stack = [] - pos = 0 - line = 1 - column = 0 - token = undefined - key = undefined - root = undefined + onData (chunk) { + const { res } = this - do { - token = lex() + return res ? res.write(chunk) : true + } - // This code is unreachable. - // if (!parseStates[parseState]) { - // throw invalidParseState() - // } + onComplete (trailers) { + const { res } = this - parseStates[parseState]() - } while (token.type !== 'eof') + removeSignal(this) - if (typeof reviver === 'function') { - return internalize({'': root}, '', reviver) + if (!res) { + return } - return root -} - -function internalize (holder, name, reviver) { - const value = holder[name] - if (value != null && typeof value === 'object') { - if (Array.isArray(value)) { - for (let i = 0; i < value.length; i++) { - const key = String(i) - const replacement = internalize(value, key, reviver) - if (replacement === undefined) { - delete value[key] - } else { - Object.defineProperty(value, key, { - value: replacement, - writable: true, - enumerable: true, - configurable: true, - }) - } - } - } else { - for (const key in value) { - const replacement = internalize(value, key, reviver) - if (replacement === undefined) { - delete value[key] - } else { - Object.defineProperty(value, key, { - value: replacement, - writable: true, - enumerable: true, - configurable: true, - }) - } - } - } - } + this.trailers = util.parseHeaders(trailers) - return reviver.call(holder, name, value) -} + res.end() + } -let lexState -let buffer -let doubleQuote -let sign -let c + onError (err) { + const { res, callback, opaque, body } = this -function lex () { - lexState = 'default' - buffer = '' - doubleQuote = false - sign = 1 + removeSignal(this) - for (;;) { - c = peek() + this.factory = null - // This code is unreachable. - // if (!lexStates[lexState]) { - // throw invalidLexState(lexState) - // } + if (res) { + this.res = null + util.destroy(res, err) + } else if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } - const token = lexStates[lexState]() - if (token) { - return token - } + if (body) { + this.body = null + util.destroy(body, err) } + } } -function peek () { - if (source[pos]) { - return String.fromCodePoint(source.codePointAt(pos)) +function stream (opts, factory, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } } -function read () { - const c = peek() +module.exports = stream - if (c === '\n') { - line++ - column = 0 - } else if (c) { - column += c.length - } else { - column++ - } - if (c) { - pos += c.length +/***/ }), + +/***/ 1882: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8707) +const { AsyncResource } = __nccwpck_require__(290) +const util = __nccwpck_require__(3440) +const { addSignal, removeSignal } = __nccwpck_require__(158) +const assert = __nccwpck_require__(2613) + +class UpgradeHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') } - return c -} + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } -const lexStates = { - default () { - switch (c) { - case '\t': - case '\v': - case '\f': - case ' ': - case '\u00A0': - case '\uFEFF': - case '\n': - case '\r': - case '\u2028': - case '\u2029': - read() - return + const { signal, opaque, responseHeaders } = opts - case '/': - read() - lexState = 'comment' - return + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } - case undefined: - read() - return newToken('eof') - } + super('UNDICI_UPGRADE') - if (util.isSpaceSeparator(c)) { - read() - return - } + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.abort = null + this.context = null - // This code is unreachable. - // if (!lexStates[parseState]) { - // throw invalidLexState(parseState) - // } + addSignal(this, signal) + } - return lexStates[parseState]() - }, + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } - comment () { - switch (c) { - case '*': - read() - lexState = 'multiLineComment' - return + this.abort = abort + this.context = null + } - case '/': - read() - lexState = 'singleLineComment' - return - } + onHeaders () { + throw new SocketError('bad upgrade', null) + } - throw invalidChar(read()) - }, + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this - multiLineComment () { - switch (c) { - case '*': - read() - lexState = 'multiLineCommentAsterisk' - return + assert.strictEqual(statusCode, 101) - case undefined: - throw invalidChar(read()) - } + removeSignal(this) - read() - }, + this.callback = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }) + } - multiLineCommentAsterisk () { - switch (c) { - case '*': - read() - return + onError (err) { + const { callback, opaque } = this - case '/': - read() - lexState = 'default' - return + removeSignal(this) - case undefined: - throw invalidChar(read()) - } + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} - read() - lexState = 'multiLineComment' - }, +function upgrade (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } - singleLineComment () { - switch (c) { - case '\n': - case '\r': - case '\u2028': - case '\u2029': - read() - lexState = 'default' - return + try { + const upgradeHandler = new UpgradeHandler(opts, callback) + this.dispatch({ + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, upgradeHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} - case undefined: - read() - return newToken('eof') - } +module.exports = upgrade - read() - }, - value () { - switch (c) { - case '{': - case '[': - return newToken('punctuator', read()) - - case 'n': - read() - literal('ull') - return newToken('null', null) - - case 't': - read() - literal('rue') - return newToken('boolean', true) - - case 'f': - read() - literal('alse') - return newToken('boolean', false) - - case '-': - case '+': - if (read() === '-') { - sign = -1 - } +/***/ }), - lexState = 'sign' - return +/***/ 6615: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - case '.': - buffer = read() - lexState = 'decimalPointLeading' - return +"use strict"; - case '0': - buffer = read() - lexState = 'zero' - return - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - buffer = read() - lexState = 'decimalInteger' - return +module.exports.request = __nccwpck_require__(4043) +module.exports.stream = __nccwpck_require__(3560) +module.exports.pipeline = __nccwpck_require__(6862) +module.exports.upgrade = __nccwpck_require__(1882) +module.exports.connect = __nccwpck_require__(4660) - case 'I': - read() - literal('nfinity') - return newToken('numeric', Infinity) - - case 'N': - read() - literal('aN') - return newToken('numeric', NaN) - - case '"': - case "'": - doubleQuote = (read() === '"') - buffer = '' - lexState = 'string' - return - } - throw invalidChar(read()) - }, +/***/ }), - identifierNameStartEscape () { - if (c !== 'u') { - throw invalidChar(read()) - } +/***/ 9927: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - read() - const u = unicodeEscape() - switch (u) { - case '$': - case '_': - break +"use strict"; +// Ported from https://github.com/nodejs/undici/pull/907 - default: - if (!util.isIdStartChar(u)) { - throw invalidIdentifier() - } - break - } - buffer += u - lexState = 'identifierName' - }, +const assert = __nccwpck_require__(2613) +const { Readable } = __nccwpck_require__(2203) +const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3440) - identifierName () { - switch (c) { - case '$': - case '_': - case '\u200C': - case '\u200D': - buffer += read() - return +let Blob - case '\\': - read() - lexState = 'identifierNameEscape' - return - } +const kConsume = Symbol('kConsume') +const kReading = Symbol('kReading') +const kBody = Symbol('kBody') +const kAbort = Symbol('abort') +const kContentType = Symbol('kContentType') - if (util.isIdContinueChar(c)) { - buffer += read() - return - } +const noop = () => {} - return newToken('identifier', buffer) - }, +module.exports = class BodyReadable extends Readable { + constructor ({ + resume, + abort, + contentType = '', + highWaterMark = 64 * 1024 // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }) - identifierNameEscape () { - if (c !== 'u') { - throw invalidChar(read()) - } + this._readableState.dataEmitted = false - read() - const u = unicodeEscape() - switch (u) { - case '$': - case '_': - case '\u200C': - case '\u200D': - break + this[kAbort] = abort + this[kConsume] = null + this[kBody] = null + this[kContentType] = contentType - default: - if (!util.isIdContinueChar(u)) { - throw invalidIdentifier() - } + // Is stream being consumed through Readable API? + // This is an optimization so that we avoid checking + // for 'data' and 'readable' listeners in the hot path + // inside push(). + this[kReading] = false + } - break - } + destroy (err) { + if (this.destroyed) { + // Node < 16 + return this + } - buffer += u - lexState = 'identifierName' - }, + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } - sign () { - switch (c) { - case '.': - buffer = read() - lexState = 'decimalPointLeading' - return + if (err) { + this[kAbort]() + } - case '0': - buffer = read() - lexState = 'zero' - return + return super.destroy(err) + } - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - buffer = read() - lexState = 'decimalInteger' - return + emit (ev, ...args) { + if (ev === 'data') { + // Node < 16.7 + this._readableState.dataEmitted = true + } else if (ev === 'error') { + // Node < 16 + this._readableState.errorEmitted = true + } + return super.emit(ev, ...args) + } - case 'I': - read() - literal('nfinity') - return newToken('numeric', sign * Infinity) + on (ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true + } + return super.on(ev, ...args) + } - case 'N': - read() - literal('aN') - return newToken('numeric', NaN) - } + addListener (ev, ...args) { + return this.on(ev, ...args) + } - throw invalidChar(read()) - }, + off (ev, ...args) { + const ret = super.off(ev, ...args) + if (ev === 'data' || ev === 'readable') { + this[kReading] = ( + this.listenerCount('data') > 0 || + this.listenerCount('readable') > 0 + ) + } + return ret + } - zero () { - switch (c) { - case '.': - buffer += read() - lexState = 'decimalPoint' - return + removeListener (ev, ...args) { + return this.off(ev, ...args) + } - case 'e': - case 'E': - buffer += read() - lexState = 'decimalExponent' - return + push (chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk) + return this[kReading] ? super.push(chunk) : true + } + return super.push(chunk) + } - case 'x': - case 'X': - buffer += read() - lexState = 'hexadecimal' - return - } + // https://fetch.spec.whatwg.org/#dom-body-text + async text () { + return consume(this, 'text') + } - return newToken('numeric', sign * 0) - }, + // https://fetch.spec.whatwg.org/#dom-body-json + async json () { + return consume(this, 'json') + } - decimalInteger () { - switch (c) { - case '.': - buffer += read() - lexState = 'decimalPoint' - return + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob () { + return consume(this, 'blob') + } - case 'e': - case 'E': - buffer += read() - lexState = 'decimalExponent' - return - } + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer () { + return consume(this, 'arrayBuffer') + } - if (util.isDigit(c)) { - buffer += read() - return - } + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData () { + // TODO: Implement. + throw new NotSupportedError() + } - return newToken('numeric', sign * Number(buffer)) - }, + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed () { + return util.isDisturbed(this) + } - decimalPointLeading () { - if (util.isDigit(c)) { - buffer += read() - lexState = 'decimalFraction' - return - } + // https://fetch.spec.whatwg.org/#dom-body-body + get body () { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this) + if (this[kConsume]) { + // TODO: Is this the best way to force a lock? + this[kBody].getReader() // Ensure stream is locked. + assert(this[kBody].locked) + } + } + return this[kBody] + } - throw invalidChar(read()) - }, + dump (opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144 + const signal = opts && opts.signal - decimalPoint () { - switch (c) { - case 'e': - case 'E': - buffer += read() - lexState = 'decimalExponent' - return + if (signal) { + try { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new InvalidArgumentError('signal must be an AbortSignal') } + util.throwIfAborted(signal) + } catch (err) { + return Promise.reject(err) + } + } - if (util.isDigit(c)) { - buffer += read() - lexState = 'decimalFraction' - return - } + if (this.closed) { + return Promise.resolve(null) + } - return newToken('numeric', sign * Number(buffer)) - }, + return new Promise((resolve, reject) => { + const signalListenerCleanup = signal + ? util.addAbortListener(signal, () => { + this.destroy() + }) + : noop - decimalFraction () { - switch (c) { - case 'e': - case 'E': - buffer += read() - lexState = 'decimalExponent' - return - } + this + .on('close', function () { + signalListenerCleanup() + if (signal && signal.aborted) { + reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })) + } else { + resolve(null) + } + }) + .on('error', noop) + .on('data', function (chunk) { + limit -= chunk.length + if (limit <= 0) { + this.destroy() + } + }) + .resume() + }) + } +} - if (util.isDigit(c)) { - buffer += read() - return - } +// https://streams.spec.whatwg.org/#readablestream-locked +function isLocked (self) { + // Consume is an implicit lock. + return (self[kBody] && self[kBody].locked === true) || self[kConsume] +} - return newToken('numeric', sign * Number(buffer)) - }, +// https://fetch.spec.whatwg.org/#body-unusable +function isUnusable (self) { + return util.isDisturbed(self) || isLocked(self) +} - decimalExponent () { - switch (c) { - case '+': - case '-': - buffer += read() - lexState = 'decimalExponentSign' - return - } +async function consume (stream, type) { + if (isUnusable(stream)) { + throw new TypeError('unusable') + } - if (util.isDigit(c)) { - buffer += read() - lexState = 'decimalExponentInteger' - return - } + assert(!stream[kConsume]) - throw invalidChar(read()) - }, + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + } - decimalExponentSign () { - if (util.isDigit(c)) { - buffer += read() - lexState = 'decimalExponentInteger' - return + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err) + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()) } + }) - throw invalidChar(read()) - }, + process.nextTick(consumeStart, stream[kConsume]) + }) +} - decimalExponentInteger () { - if (util.isDigit(c)) { - buffer += read() - return - } +function consumeStart (consume) { + if (consume.body === null) { + return + } - return newToken('numeric', sign * Number(buffer)) - }, + const { _readableState: state } = consume.stream - hexadecimal () { - if (util.isHexDigit(c)) { - buffer += read() - lexState = 'hexadecimalInteger' - return - } + for (const chunk of state.buffer) { + consumePush(consume, chunk) + } - throw invalidChar(read()) - }, + if (state.endEmitted) { + consumeEnd(this[kConsume]) + } else { + consume.stream.on('end', function () { + consumeEnd(this[kConsume]) + }) + } - hexadecimalInteger () { - if (util.isHexDigit(c)) { - buffer += read() - return - } + consume.stream.resume() - return newToken('numeric', sign * Number(buffer)) - }, + while (consume.stream.read() != null) { + // Loop + } +} - string () { - switch (c) { - case '\\': - read() - buffer += escape() - return +function consumeEnd (consume) { + const { type, body, resolve, stream, length } = consume - case '"': - if (doubleQuote) { - read() - return newToken('string', buffer) - } + try { + if (type === 'text') { + resolve(toUSVString(Buffer.concat(body))) + } else if (type === 'json') { + resolve(JSON.parse(Buffer.concat(body))) + } else if (type === 'arrayBuffer') { + const dst = new Uint8Array(length) - buffer += read() - return + let pos = 0 + for (const buf of body) { + dst.set(buf, pos) + pos += buf.byteLength + } - case "'": - if (!doubleQuote) { - read() - return newToken('string', buffer) - } + resolve(dst.buffer) + } else if (type === 'blob') { + if (!Blob) { + Blob = (__nccwpck_require__(181).Blob) + } + resolve(new Blob(body, { type: stream[kContentType] })) + } - buffer += read() - return + consumeFinish(consume) + } catch (err) { + stream.destroy(err) + } +} - case '\n': - case '\r': - throw invalidChar(read()) +function consumePush (consume, chunk) { + consume.length += chunk.length + consume.body.push(chunk) +} - case '\u2028': - case '\u2029': - separatorChar(c) - break +function consumeFinish (consume, err) { + if (consume.body === null) { + return + } - case undefined: - throw invalidChar(read()) - } + if (err) { + consume.reject(err) + } else { + consume.resolve() + } - buffer += read() - }, + consume.type = null + consume.stream = null + consume.resolve = null + consume.reject = null + consume.length = 0 + consume.body = null +} - start () { - switch (c) { - case '{': - case '[': - return newToken('punctuator', read()) - // This code is unreachable since the default lexState handles eof. - // case undefined: - // return newToken('eof') - } +/***/ }), - lexState = 'value' - }, +/***/ 7655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - beforePropertyName () { - switch (c) { - case '$': - case '_': - buffer = read() - lexState = 'identifierName' - return +const assert = __nccwpck_require__(2613) +const { + ResponseStatusCodeError +} = __nccwpck_require__(8707) +const { toUSVString } = __nccwpck_require__(3440) - case '\\': - read() - lexState = 'identifierNameStartEscape' - return +async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body) - case '}': - return newToken('punctuator', read()) + let chunks = [] + let limit = 0 - case '"': - case "'": - doubleQuote = (read() === '"') - lexState = 'string' - return - } + for await (const chunk of body) { + chunks.push(chunk) + limit += chunk.length + if (limit > 128 * 1024) { + chunks = null + break + } + } - if (util.isIdStartChar(c)) { - buffer += read() - lexState = 'identifierName' - return - } + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) + return + } - throw invalidChar(read()) - }, + try { + if (contentType.startsWith('application/json')) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } - afterPropertyName () { - if (c === ':') { - return newToken('punctuator', read()) - } + if (contentType.startsWith('text/')) { + const payload = toUSVString(Buffer.concat(chunks)) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + } catch (err) { + // Process in a fallback if error + } - throw invalidChar(read()) - }, + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) +} - beforePropertyValue () { - lexState = 'value' - }, +module.exports = { getResolveErrorBodyCallback } - afterPropertyValue () { - switch (c) { - case ',': - case '}': - return newToken('punctuator', read()) - } - throw invalidChar(read()) - }, +/***/ }), - beforeArrayValue () { - if (c === ']') { - return newToken('punctuator', read()) - } +/***/ 1093: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - lexState = 'value' - }, +"use strict"; - afterArrayValue () { - switch (c) { - case ',': - case ']': - return newToken('punctuator', read()) - } - throw invalidChar(read()) - }, +const { + BalancedPoolMissingUpstreamError, + InvalidArgumentError +} = __nccwpck_require__(8707) +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} = __nccwpck_require__(8640) +const Pool = __nccwpck_require__(5076) +const { kUrl, kInterceptors } = __nccwpck_require__(6443) +const { parseOrigin } = __nccwpck_require__(3440) +const kFactory = Symbol('factory') + +const kOptions = Symbol('options') +const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') +const kCurrentWeight = Symbol('kCurrentWeight') +const kIndex = Symbol('kIndex') +const kWeight = Symbol('kWeight') +const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') +const kErrorPenalty = Symbol('kErrorPenalty') + +function getGreatestCommonDivisor (a, b) { + if (b === 0) return a + return getGreatestCommonDivisor(b, a % b) +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class BalancedPool extends PoolBase { + constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super() - end () { - // This code is unreachable since it's handled by the default lexState. - // if (c === undefined) { - // read() - // return newToken('eof') - // } + this[kOptions] = opts + this[kIndex] = -1 + this[kCurrentWeight] = 0 - throw invalidChar(read()) - }, -} + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 + this[kErrorPenalty] = this[kOptions].errorPenalty || 15 -function newToken (type, value) { - return { - type, - value, - line, - column, + if (!Array.isArray(upstreams)) { + upstreams = [upstreams] } -} -function literal (s) { - for (const c of s) { - const p = peek() + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } - if (p !== c) { - throw invalidChar(read()) - } + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) + ? opts.interceptors.BalancedPool + : [] + this[kFactory] = factory - read() + for (const upstream of upstreams) { + this.addUpstream(upstream) } -} + this._updateBalancedPoolStats() + } -function escape () { - const c = peek() - switch (c) { - case 'b': - read() - return '\b' + addUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin - case 'f': - read() - return '\f' + if (this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + ))) { + return this + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) - case 'n': - read() - return '\n' + this[kAddClient](pool) + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) + }) - case 'r': - read() - return '\r' + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + }) - case 't': - read() - return '\t' + pool.on('disconnect', (...args) => { + const err = args[2] + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + } + }) - case 'v': - read() - return '\v' + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer] + } - case '0': - read() - if (util.isDigit(peek())) { - throw invalidChar(read()) - } + this._updateBalancedPoolStats() - return '\0' + return this + } - case 'x': - read() - return hexEscape() + _updateBalancedPoolStats () { + this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0) + } - case 'u': - read() - return unicodeEscape() + removeUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin - case '\n': - case '\u2028': - case '\u2029': - read() - return '' + const pool = this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + )) - case '\r': - read() - if (peek() === '\n') { - read() - } + if (pool) { + this[kRemoveClient](pool) + } - return '' + return this + } - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - throw invalidChar(read()) + get upstreams () { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map((p) => p[kUrl].origin) + } - case undefined: - throw invalidChar(read()) + [kGetDispatcher] () { + // We validate that pools is greater than 0, + // otherwise we would have to wait until an upstream + // is added, which might never happen. + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError() } - return read() -} - -function hexEscape () { - let buffer = '' - let c = peek() + const dispatcher = this[kClients].find(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) - if (!util.isHexDigit(c)) { - throw invalidChar(read()) + if (!dispatcher) { + return } - buffer += read() + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) - c = peek() - if (!util.isHexDigit(c)) { - throw invalidChar(read()) + if (allClientsBusy) { + return } - buffer += read() + let counter = 0 - return String.fromCodePoint(parseInt(buffer, 16)) -} + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) -function unicodeEscape () { - let buffer = '' - let count = 4 + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length + const pool = this[kClients][this[kIndex]] - while (count-- > 0) { - const c = peek() - if (!util.isHexDigit(c)) { - throw invalidChar(read()) - } + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex] + } - buffer += read() + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] + + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer] + } + } + if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { + return pool + } } - return String.fromCodePoint(parseInt(buffer, 16)) + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] + this[kIndex] = maxWeightIndex + return this[kClients][maxWeightIndex] + } } -const parseStates = { - start () { - if (token.type === 'eof') { - throw invalidEOF() - } +module.exports = BalancedPool - push() - }, - beforePropertyName () { - switch (token.type) { - case 'identifier': - case 'string': - key = token.value - parseState = 'afterPropertyName' - return +/***/ }), - case 'punctuator': - // This code is unreachable since it's handled by the lexState. - // if (token.value !== '}') { - // throw invalidToken() - // } +/***/ 479: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - pop() - return +"use strict"; - case 'eof': - throw invalidEOF() - } - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, +const { kConstruct } = __nccwpck_require__(296) +const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(3993) +const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3440) +const { kHeadersList } = __nccwpck_require__(6443) +const { webidl } = __nccwpck_require__(4222) +const { Response, cloneResponse } = __nccwpck_require__(8676) +const { Request } = __nccwpck_require__(5194) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) +const { fetching } = __nccwpck_require__(2315) +const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(5523) +const assert = __nccwpck_require__(2613) +const { getGlobalDispatcher } = __nccwpck_require__(2581) - afterPropertyName () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator' || token.value !== ':') { - // throw invalidToken() - // } +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation + * @typedef {Object} CacheBatchOperation + * @property {'delete' | 'put'} type + * @property {any} request + * @property {any} response + * @property {import('../../types/cache').CacheQueryOptions} options + */ - if (token.type === 'eof') { - throw invalidEOF() - } +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list + * @typedef {[any, any][]} requestResponseList + */ - parseState = 'beforePropertyValue' - }, +class Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList - beforePropertyValue () { - if (token.type === 'eof') { - throw invalidEOF() - } + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() + } - push() - }, + this.#relevantRequestResponseList = arguments[1] + } - beforeArrayValue () { - if (token.type === 'eof') { - throw invalidEOF() - } + async match (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }) - if (token.type === 'punctuator' && token.value === ']') { - pop() - return - } + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) - push() - }, + const p = await this.matchAll(request, options) - afterPropertyValue () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator') { - // throw invalidToken() - // } + if (p.length === 0) { + return + } - if (token.type === 'eof') { - throw invalidEOF() - } + return p[0] + } - switch (token.value) { - case ',': - parseState = 'beforePropertyName' - return + async matchAll (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) - case '}': - pop() - } + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, + // 1. + let r = null - afterArrayValue () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'punctuator') { - // throw invalidToken() - // } + // 2. + if (request !== undefined) { + if (request instanceof Request) { + // 2.1.1 + r = request[kState] - if (token.type === 'eof') { - throw invalidEOF() + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] } + } else if (typeof request === 'string') { + // 2.2.1 + r = new Request(request)[kState] + } + } - switch (token.value) { - case ',': - parseState = 'beforeArrayValue' - return + // 5. + // 5.1 + const responses = [] - case ']': - pop() - } + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) - // This code is unreachable since it's handled by the lexState. - // throw invalidToken() - }, + // 5.3.2 + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]) + } + } - end () { - // This code is unreachable since it's handled by the lexState. - // if (token.type !== 'eof') { - // throw invalidToken() - // } - }, -} + // 5.4 + // We don't implement CORs so we don't need to loop over the responses, yay! -function push () { - let value + // 5.5.1 + const responseList = [] - switch (token.type) { - case 'punctuator': - switch (token.value) { - case '{': - value = {} - break + // 5.5.2 + for (const response of responses) { + // 5.5.2.1 + const responseObject = new Response(response.body?.source ?? null) + const body = responseObject[kState].body + responseObject[kState] = response + responseObject[kState].body = body + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' - case '[': - value = [] - break - } + responseList.push(responseObject) + } - break + // 6. + return Object.freeze(responseList) + } - case 'null': - case 'boolean': - case 'numeric': - case 'string': - value = token.value - break + async add (request) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }) - // This code is unreachable. - // default: - // throw invalidToken() - } + request = webidl.converters.RequestInfo(request) - if (root === undefined) { - root = value - } else { - const parent = stack[stack.length - 1] - if (Array.isArray(parent)) { - parent.push(value) - } else { - Object.defineProperty(parent, key, { - value, - writable: true, - enumerable: true, - configurable: true, - }) - } + // 1. + const requests = [request] + + // 2. + const responseArrayPromise = this.addAll(requests) + + // 3. + return await responseArrayPromise + } + + async addAll (requests) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }) + + requests = webidl.converters['sequence<RequestInfo>'](requests) + + // 1. + const responsePromises = [] + + // 2. + const requestList = [] + + // 3. + for (const request of requests) { + if (typeof request === 'string') { + continue + } + + // 3.1 + const r = request[kState] + + // 3.2 + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme when method is not GET.' + }) + } } - if (value !== null && typeof value === 'object') { - stack.push(value) + // 4. + /** @type {ReturnType<typeof fetching>[]} */ + const fetchControllers = [] - if (Array.isArray(value)) { - parseState = 'beforeArrayValue' - } else { - parseState = 'beforePropertyName' - } - } else { - const current = stack[stack.length - 1] - if (current == null) { - parseState = 'end' - } else if (Array.isArray(current)) { - parseState = 'afterArrayValue' - } else { - parseState = 'afterPropertyValue' + // 5. + for (const request of requests) { + // 5.1 + const r = new Request(request)[kState] + + // 5.2 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme.' + }) + } + + // 5.4 + r.initiator = 'fetch' + r.destination = 'subresource' + + // 5.5 + requestList.push(r) + + // 5.6 + const responsePromise = createDeferredPromise() + + // 5.7 + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse (response) { + // 1. + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + })) + } else if (response.headersList.contains('vary')) { // 2. + // 2.1 + const fieldValues = getFieldValues(response.headersList.get('vary')) + + // 2.2 + for (const fieldValue of fieldValues) { + // 2.2.1 + if (fieldValue === '*') { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + })) + + for (const controller of fetchControllers) { + controller.abort() + } + + return + } + } + } + }, + processResponseEndOfBody (response) { + // 1. + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')) + return + } + + // 2. + responsePromise.resolve(response) } + })) + + // 5.8 + responsePromises.push(responsePromise.promise) } -} -function pop () { - stack.pop() + // 6. + const p = Promise.all(responsePromises) - const current = stack[stack.length - 1] - if (current == null) { - parseState = 'end' - } else if (Array.isArray(current)) { - parseState = 'afterArrayValue' - } else { - parseState = 'afterPropertyValue' - } -} + // 7. + const responses = await p + + // 7.1 + const operations = [] -// This code is unreachable. -// function invalidParseState () { -// return new Error(`JSON5: invalid parse state '${parseState}'`) -// } + // 7.2 + let index = 0 -// This code is unreachable. -// function invalidLexState (state) { -// return new Error(`JSON5: invalid lex state '${state}'`) -// } + // 7.3 + for (const response of responses) { + // 7.3.1 + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 7.3.2 + request: requestList[index], // 7.3.3 + response // 7.3.4 + } + + operations.push(operation) // 7.3.5 -function invalidChar (c) { - if (c === undefined) { - return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) + index++ // 7.3.6 } - return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) -} + // 7.5 + const cacheJobPromise = createDeferredPromise() -function invalidEOF () { - return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) -} + // 7.6.1 + let errorData = null -// This code is unreachable. -// function invalidToken () { -// if (token.type === 'eof') { -// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) -// } + // 7.6.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } -// const c = String.fromCodePoint(token.value.codePointAt(0)) -// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) -// } + // 7.6.3 + queueMicrotask(() => { + // 7.6.3.1 + if (errorData === null) { + cacheJobPromise.resolve(undefined) + } else { + // 7.6.3.2 + cacheJobPromise.reject(errorData) + } + }) -function invalidIdentifier () { - column -= 5 - return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) -} + // 7.7 + return cacheJobPromise.promise + } -function separatorChar (c) { - console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`) -} + async put (request, response) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }) + + request = webidl.converters.RequestInfo(request) + response = webidl.converters.Response(response) -function formatChar (c) { - const replacements = { - "'": "\\'", - '"': '\\"', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\v': '\\v', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029', + // 1. + let innerRequest = null + + // 2. + if (request instanceof Request) { + innerRequest = request[kState] + } else { // 3. + innerRequest = new Request(request)[kState] } - if (replacements[c]) { - return replacements[c] + // 4. + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Expected an http/s scheme when method is not GET' + }) } - if (c < ' ') { - const hexString = c.charCodeAt(0).toString(16) - return '\\x' + ('00' + hexString).substring(hexString.length) + // 5. + const innerResponse = response[kState] + + // 6. + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got 206 status' + }) } - return c -} + // 7. + if (innerResponse.headersList.contains('vary')) { + // 7.1. + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')) -function syntaxError (message) { - const err = new SyntaxError(message) - err.lineNumber = line - err.columnNumber = column - return err -} + // 7.2. + for (const fieldValue of fieldValues) { + // 7.2.1 + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got * vary field value' + }) + } + } + } + // 8. + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Response body is locked or disturbed' + }) + } -/***/ }), + // 9. + const clonedResponse = cloneResponse(innerResponse) -/***/ 75627: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 10. + const bodyReadPromise = createDeferredPromise() -const util = __nccwpck_require__(93009) + // 11. + if (innerResponse.body != null) { + // 11.1 + const stream = innerResponse.body.stream -module.exports = function stringify (value, replacer, space) { - const stack = [] - let indent = '' - let propertyList - let replacerFunc - let gap = '' - let quote + // 11.2 + const reader = stream.getReader() - if ( - replacer != null && - typeof replacer === 'object' && - !Array.isArray(replacer) - ) { - space = replacer.space - quote = replacer.quote - replacer = replacer.replacer - } - - if (typeof replacer === 'function') { - replacerFunc = replacer - } else if (Array.isArray(replacer)) { - propertyList = [] - for (const v of replacer) { - let item - - if (typeof v === 'string') { - item = v - } else if ( - typeof v === 'number' || - v instanceof String || - v instanceof Number - ) { - item = String(v) - } + // 11.3 + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject) + } else { + bodyReadPromise.resolve(undefined) + } - if (item !== undefined && propertyList.indexOf(item) < 0) { - propertyList.push(item) - } - } + // 12. + /** @type {CacheBatchOperation[]} */ + const operations = [] + + // 13. + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 14. + request: innerRequest, // 15. + response: clonedResponse // 16. } - if (space instanceof Number) { - space = Number(space) - } else if (space instanceof String) { - space = String(space) + // 17. + operations.push(operation) + + // 19. + const bytes = await bodyReadPromise.promise + + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes } - if (typeof space === 'number') { - if (space > 0) { - space = Math.min(10, Math.floor(space)) - gap = ' '.substr(0, space) - } - } else if (typeof space === 'string') { - gap = space.substr(0, 10) + // 19.1 + const cacheJobPromise = createDeferredPromise() + + // 19.2.1 + let errorData = null + + // 19.2.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e } - return serializeProperty('', {'': value}) + // 19.2.3 + queueMicrotask(() => { + // 19.2.3.1 + if (errorData === null) { + cacheJobPromise.resolve() + } else { // 19.2.3.2 + cacheJobPromise.reject(errorData) + } + }) - function serializeProperty (key, holder) { - let value = holder[key] - if (value != null) { - if (typeof value.toJSON5 === 'function') { - value = value.toJSON5(key) - } else if (typeof value.toJSON === 'function') { - value = value.toJSON(key) - } - } + return cacheJobPromise.promise + } - if (replacerFunc) { - value = replacerFunc.call(holder, key, value) - } + async delete (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }) - if (value instanceof Number) { - value = Number(value) - } else if (value instanceof String) { - value = String(value) - } else if (value instanceof Boolean) { - value = value.valueOf() - } + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) - switch (value) { - case null: return 'null' - case true: return 'true' - case false: return 'false' - } + /** + * @type {Request} + */ + let r = null - if (typeof value === 'string') { - return quoteString(value, false) - } + if (request instanceof Request) { + r = request[kState] - if (typeof value === 'number') { - return String(value) - } + if (r.method !== 'GET' && !options.ignoreMethod) { + return false + } + } else { + assert(typeof request === 'string') - if (typeof value === 'object') { - return Array.isArray(value) ? serializeArray(value) : serializeObject(value) - } + r = new Request(request)[kState] + } - return undefined + /** @type {CacheBatchOperation[]} */ + const operations = [] + + /** @type {CacheBatchOperation} */ + const operation = { + type: 'delete', + request: r, + options } - function quoteString (value) { - const quotes = { - "'": 0.1, - '"': 0.2, - } + operations.push(operation) - const replacements = { - "'": "\\'", - '"': '\\"', - '\\': '\\\\', - '\b': '\\b', - '\f': '\\f', - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - '\v': '\\v', - '\0': '\\0', - '\u2028': '\\u2028', - '\u2029': '\\u2029', - } + const cacheJobPromise = createDeferredPromise() - let product = '' - - for (let i = 0; i < value.length; i++) { - const c = value[i] - switch (c) { - case "'": - case '"': - quotes[c]++ - product += c - continue - - case '\0': - if (util.isDigit(value[i + 1])) { - product += '\\x00' - continue - } - } + let errorData = null + let requestResponses + + try { + requestResponses = this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length) + } else { + cacheJobPromise.reject(errorData) + } + }) - if (replacements[c]) { - product += replacements[c] - continue - } + return cacheJobPromise.promise + } - if (c < ' ') { - let hexString = c.charCodeAt(0).toString(16) - product += '\\x' + ('00' + hexString).substring(hexString.length) - continue - } + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) - product += c - } + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) - const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b) + // 1. + let r = null - product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]) + // 2. + if (request !== undefined) { + // 2.1 + if (request instanceof Request) { + // 2.1.1 + r = request[kState] - return quoteChar + product + quoteChar + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { // 2.2 + r = new Request(request)[kState] + } } - function serializeObject (value) { - if (stack.indexOf(value) >= 0) { - throw TypeError('Converting circular structure to JSON5') - } + // 4. + const promise = createDeferredPromise() - stack.push(value) + // 5. + // 5.1 + const requests = [] - let stepback = indent - indent = indent + gap + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + // 5.2.1.1 + requests.push(requestResponse[0]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) - let keys = propertyList || Object.keys(value) - let partial = [] - for (const key of keys) { - const propertyString = serializeProperty(key, value) - if (propertyString !== undefined) { - let member = serializeKey(key) + ':' - if (gap !== '') { - member += ' ' - } - member += propertyString - partial.push(member) - } - } + // 5.3.2 + for (const requestResponse of requestResponses) { + // 5.3.2.1 + requests.push(requestResponse[0]) + } + } - let final - if (partial.length === 0) { - final = '{}' - } else { - let properties - if (gap === '') { - properties = partial.join(',') - final = '{' + properties + '}' - } else { - let separator = ',\n' + indent - properties = partial.join(separator) - final = '{\n' + indent + properties + ',\n' + stepback + '}' - } - } + // 5.4 + queueMicrotask(() => { + // 5.4.1 + const requestList = [] - stack.pop() - indent = stepback - return final - } + // 5.4.2 + for (const request of requests) { + const requestObject = new Request('https://a') + requestObject[kState] = request + requestObject[kHeaders][kHeadersList] = request.headersList + requestObject[kHeaders][kGuard] = 'immutable' + requestObject[kRealm] = request.client - function serializeKey (key) { - if (key.length === 0) { - return quoteString(key, true) - } + // 5.4.2.1 + requestList.push(requestObject) + } - const firstChar = String.fromCodePoint(key.codePointAt(0)) - if (!util.isIdStartChar(firstChar)) { - return quoteString(key, true) - } + // 5.4.3 + promise.resolve(Object.freeze(requestList)) + }) - for (let i = firstChar.length; i < key.length; i++) { - if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { - return quoteString(key, true) - } - } + return promise.promise + } - return key - } + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations (operations) { + // 1. + const cache = this.#relevantRequestResponseList - function serializeArray (value) { - if (stack.indexOf(value) >= 0) { - throw TypeError('Converting circular structure to JSON5') - } + // 2. + const backupCache = [...cache] - stack.push(value) + // 3. + const addedItems = [] - let stepback = indent - indent = indent + gap + // 4.1 + const resultList = [] - let partial = [] - for (let i = 0; i < value.length; i++) { - const propertyString = serializeProperty(String(i), value) - partial.push((propertyString !== undefined) ? propertyString : 'null') + try { + // 4.2 + for (const operation of operations) { + // 4.2.1 + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }) } - let final - if (partial.length === 0) { - final = '[]' - } else { - if (gap === '') { - let properties = partial.join(',') - final = '[' + properties + ']' - } else { - let separator = ',\n' + indent - let properties = partial.join(separator) - final = '[\n' + indent + properties + ',\n' + stepback + ']' - } + // 4.2.2 + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }) } - stack.pop() - indent = stepback - return final - } -} - + // 4.2.3 + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError') + } -/***/ }), + // 4.2.4 + let requestResponses -/***/ 29527: -/***/ ((module) => { + // 4.2.5 + if (operation.type === 'delete') { + // 4.2.5.1 + requestResponses = this.#queryCache(operation.request, operation.options) -// This is a generated file. Do not edit. -module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/ -module.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/ -module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + // TODO: the spec is wrong, this is needed to pass WPTs + if (requestResponses.length === 0) { + return [] + } + // 4.2.5.2 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) -/***/ }), + // 4.2.5.2.1 + cache.splice(idx, 1) + } + } else if (operation.type === 'put') { // 4.2.6 + // 4.2.6.1 + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }) + } -/***/ 93009: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 4.2.6.2 + const r = operation.request -const unicode = __nccwpck_require__(29527) + // 4.2.6.3 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }) + } -module.exports = { - isSpaceSeparator (c) { - return typeof c === 'string' && unicode.Space_Separator.test(c) - }, + // 4.2.6.4 + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }) + } - isIdStartChar (c) { - return typeof c === 'string' && ( - (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c === '$') || (c === '_') || - unicode.ID_Start.test(c) - ) - }, + // 4.2.6.5 + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }) + } - isIdContinueChar (c) { - return typeof c === 'string' && ( - (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || - (c === '$') || (c === '_') || - (c === '\u200C') || (c === '\u200D') || - unicode.ID_Continue.test(c) - ) - }, + // 4.2.6.6 + requestResponses = this.#queryCache(operation.request) - isDigit (c) { - return typeof c === 'string' && /[0-9]/.test(c) - }, + // 4.2.6.7 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) - isHexDigit (c) { - return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) - }, -} + // 4.2.6.7.1 + cache.splice(idx, 1) + } + // 4.2.6.8 + cache.push([operation.request, operation.response]) -/***/ }), + // 4.2.6.10 + addedItems.push([operation.request, operation.response]) + } -/***/ 49413: -/***/ ((module) => { + // 4.2.7 + resultList.push([operation.request, operation.response]) + } -var toString = Object.prototype.toString; + // 4.3 + return resultList + } catch (e) { // 5. + // 5.1 + this.#relevantRequestResponseList.length = 0 -module.exports = function kindOf(val) { - if (val === void 0) return 'undefined'; - if (val === null) return 'null'; + // 5.2 + this.#relevantRequestResponseList = backupCache - var type = typeof val; - if (type === 'boolean') return 'boolean'; - if (type === 'string') return 'string'; - if (type === 'number') return 'number'; - if (type === 'symbol') return 'symbol'; - if (type === 'function') { - return isGeneratorFn(val) ? 'generatorfunction' : 'function'; + // 5.3 + throw e + } } - if (isArray(val)) return 'array'; - if (isBuffer(val)) return 'buffer'; - if (isArguments(val)) return 'arguments'; - if (isDate(val)) return 'date'; - if (isError(val)) return 'error'; - if (isRegexp(val)) return 'regexp'; - - switch (ctorName(val)) { - case 'Symbol': return 'symbol'; - case 'Promise': return 'promise'; - - // Set, Map, WeakSet, WeakMap - case 'WeakMap': return 'weakmap'; - case 'WeakSet': return 'weakset'; - case 'Map': return 'map'; - case 'Set': return 'set'; + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache (requestQuery, options, targetStorage) { + /** @type {requestResponseList} */ + const resultList = [] - // 8-bit typed arrays - case 'Int8Array': return 'int8array'; - case 'Uint8Array': return 'uint8array'; - case 'Uint8ClampedArray': return 'uint8clampedarray'; + const storage = targetStorage ?? this.#relevantRequestResponseList - // 16-bit typed arrays - case 'Int16Array': return 'int16array'; - case 'Uint16Array': return 'uint16array'; + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse) + } + } - // 32-bit typed arrays - case 'Int32Array': return 'int32array'; - case 'Uint32Array': return 'uint32array'; - case 'Float32Array': return 'float32array'; - case 'Float64Array': return 'float64array'; + return resultList } - if (isGeneratorObj(val)) { - return 'generator'; - } + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem (requestQuery, request, response = null, options) { + // if (options?.ignoreMethod === false && request.method === 'GET') { + // return false + // } - // Non-plain objects - type = toString.call(val); - switch (type) { - case '[object Object]': return 'object'; - // iterators - case '[object Map Iterator]': return 'mapiterator'; - case '[object Set Iterator]': return 'setiterator'; - case '[object String Iterator]': return 'stringiterator'; - case '[object Array Iterator]': return 'arrayiterator'; - } + const queryURL = new URL(requestQuery.url) - // other - return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); -}; + const cachedURL = new URL(request.url) -function ctorName(val) { - return typeof val.constructor === 'function' ? val.constructor.name : null; -} + if (options?.ignoreSearch) { + cachedURL.search = '' -function isArray(val) { - if (Array.isArray) return Array.isArray(val); - return val instanceof Array; -} + queryURL.search = '' + } -function isError(val) { - return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'); -} + if (!urlEquals(queryURL, cachedURL, true)) { + return false + } -function isDate(val) { - if (val instanceof Date) return true; - return typeof val.toDateString === 'function' - && typeof val.getDate === 'function' - && typeof val.setDate === 'function'; -} + if ( + response == null || + options?.ignoreVary || + !response.headersList.contains('vary') + ) { + return true + } -function isRegexp(val) { - if (val instanceof RegExp) return true; - return typeof val.flags === 'string' - && typeof val.ignoreCase === 'boolean' - && typeof val.multiline === 'boolean' - && typeof val.global === 'boolean'; -} + const fieldValues = getFieldValues(response.headersList.get('vary')) -function isGeneratorFn(name, val) { - return ctorName(name) === 'GeneratorFunction'; -} + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false + } -function isGeneratorObj(val) { - return typeof val.throw === 'function' - && typeof val.return === 'function' - && typeof val.next === 'function'; -} + const requestValue = request.headersList.get(fieldValue) + const queryValue = requestQuery.headersList.get(fieldValue) -function isArguments(val) { - try { - if (typeof val.length === 'number' && typeof val.callee === 'function') { - return true; - } - } catch (err) { - if (err.message.indexOf('callee') !== -1) { - return true; + // If one has the header and the other doesn't, or one has + // a different value than the other, return false + if (requestValue !== queryValue) { + return false + } } + + return true } - return false; } -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ +Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) -function isBuffer(val) { - if (val.constructor && typeof val.constructor.isBuffer === 'function') { - return val.constructor.isBuffer(val); +const cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: false } - return false; -} - +] -/***/ }), +webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters) -/***/ 74880: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString + } +]) -"use strict"; +webidl.converters.Response = webidl.interfaceConverter(Response) -const fs = __nccwpck_require__(90552) -const path = __nccwpck_require__(71017) +webidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter( + webidl.converters.RequestInfo +) -function klawSync (dir, opts, ls) { - if (!ls) { - ls = [] - dir = path.resolve(dir) - opts = opts || {} - opts.fs = opts.fs || fs - if (opts.depthLimit > -1) opts.rootDepth = dir.split(path.sep).length + 1 - } - const paths = opts.fs.readdirSync(dir).map(p => dir + path.sep + p) - for (var i = 0; i < paths.length; i += 1) { - const pi = paths[i] - const st = opts.fs.statSync(pi) - const item = {path: pi, stats: st} - const isUnderDepthLimit = (!opts.rootDepth || pi.split(path.sep).length - opts.rootDepth < opts.depthLimit) - const filterResult = opts.filter ? opts.filter(item) : true - const isDir = st.isDirectory() - const shouldAdd = filterResult && (isDir ? !opts.nodir : !opts.nofile) - const shouldTraverse = isDir && isUnderDepthLimit && (opts.traverseAll || filterResult) - if (shouldAdd) ls.push(item) - if (shouldTraverse) ls = klawSync(pi, opts, ls) - } - return ls +module.exports = { + Cache } -module.exports = klawSync - /***/ }), -/***/ 63830: +/***/ 4738: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var getNative = __nccwpck_require__(16221), - root = __nccwpck_require__(95173); - -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'); - -module.exports = DataView; - - -/***/ }), +"use strict"; -/***/ 68184: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var hashClear = __nccwpck_require__(20443), - hashDelete = __nccwpck_require__(54570), - hashGet = __nccwpck_require__(46331), - hashHas = __nccwpck_require__(10339), - hashSet = __nccwpck_require__(60910); +const { kConstruct } = __nccwpck_require__(296) +const { Cache } = __nccwpck_require__(479) +const { webidl } = __nccwpck_require__(4222) +const { kEnumerableProperty } = __nccwpck_require__(3440) -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; +class CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map<string, import('./cache').requestResponseList} + */ + #caches = new Map() - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() + } } -} -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; + async match (request, options = {}) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.match' }) -module.exports = Hash; + request = webidl.converters.RequestInfo(request) + options = webidl.converters.MultiCacheQueryOptions(options) + // 1. + if (options.cacheName != null) { + // 1.1.1.1 + if (this.#caches.has(options.cacheName)) { + // 1.1.1.1.1 + const cacheList = this.#caches.get(options.cacheName) + const cache = new Cache(kConstruct, cacheList) -/***/ }), + return await cache.match(request, options) + } + } else { // 2. + // 2.2 + for (const cacheList of this.#caches.values()) { + const cache = new Cache(kConstruct, cacheList) -/***/ 46242: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2.2.1.2 + const response = await cache.match(request, options) -var listCacheClear = __nccwpck_require__(60527), - listCacheDelete = __nccwpck_require__(44877), - listCacheGet = __nccwpck_require__(30765), - listCacheHas = __nccwpck_require__(97220), - listCacheSet = __nccwpck_require__(74558); + if (response !== undefined) { + return response + } + } + } + } -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-has + * @param {string} cacheName + * @returns {Promise<boolean>} + */ + async has (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }) - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + cacheName = webidl.converters.DOMString(cacheName) + + // 2.1.1 + // 2.2 + return this.#caches.has(cacheName) } -} -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise<Cache>} + */ + async open (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }) -module.exports = ListCache; + cacheName = webidl.converters.DOMString(cacheName) + // 2.1 + if (this.#caches.has(cacheName)) { + // await caches.open('v1') !== await caches.open('v1') -/***/ }), + // 2.1.1 + const cache = this.#caches.get(cacheName) -/***/ 16137: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2.1.1.1 + return new Cache(kConstruct, cache) + } -var getNative = __nccwpck_require__(16221), - root = __nccwpck_require__(95173); + // 2.2 + const cache = [] -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); + // 2.3 + this.#caches.set(cacheName, cache) -module.exports = Map; + // 2.4 + return new Cache(kConstruct, cache) + } + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise<boolean>} + */ + async delete (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }) -/***/ }), + cacheName = webidl.converters.DOMString(cacheName) -/***/ 8108: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return this.#caches.delete(cacheName) + } -var mapCacheClear = __nccwpck_require__(40497), - mapCacheDelete = __nccwpck_require__(20756), - mapCacheGet = __nccwpck_require__(12886), - mapCacheHas = __nccwpck_require__(18510), - mapCacheSet = __nccwpck_require__(10210); + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys () { + webidl.brandCheck(this, CacheStorage) -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; + // 2.1 + const keys = this.#caches.keys() - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + // 2.2 + return [...keys] } } -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; +Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) -module.exports = MapCache; +module.exports = { + CacheStorage +} /***/ }), -/***/ 50211: +/***/ 296: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var getNative = __nccwpck_require__(16221), - root = __nccwpck_require__(95173); +"use strict"; -/* Built-in method references that are verified to be native. */ -var Promise = getNative(root, 'Promise'); -module.exports = Promise; +module.exports = { + kConstruct: (__nccwpck_require__(6443).kConstruct) +} /***/ }), -/***/ 4994: +/***/ 3993: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var getNative = __nccwpck_require__(16221), - root = __nccwpck_require__(95173); - -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); - -module.exports = Set; - - -/***/ }), +"use strict"; -/***/ 57869: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var MapCache = __nccwpck_require__(8108), - setCacheAdd = __nccwpck_require__(28551), - setCacheHas = __nccwpck_require__(87850); +const assert = __nccwpck_require__(2613) +const { URLSerializer } = __nccwpck_require__(4322) +const { isValidHeaderName } = __nccwpck_require__(5523) /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. + * @see https://url.spec.whatwg.org/#concept-url-equals + * @param {URL} A + * @param {URL} B + * @param {boolean | undefined} excludeFragment + * @returns {boolean} */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } -} - -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; - -module.exports = SetCache; - +function urlEquals (A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment) -/***/ }), - -/***/ 15531: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const serializedB = URLSerializer(B, excludeFragment) -var ListCache = __nccwpck_require__(46242), - stackClear = __nccwpck_require__(25172), - stackDelete = __nccwpck_require__(25489), - stackGet = __nccwpck_require__(42362), - stackHas = __nccwpck_require__(99736), - stackSet = __nccwpck_require__(83463); + return serializedA === serializedB +} /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. + * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 + * @param {string} header */ -function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; -} - -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; - -module.exports = Stack; +function fieldValues (header) { + assert(header !== null) + const values = [] -/***/ }), + for (let value of header.split(',')) { + value = value.trim() -/***/ 25344: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!value.length) { + continue + } else if (!isValidHeaderName(value)) { + continue + } -var root = __nccwpck_require__(95173); + values.push(value) + } -/** Built-in value references. */ -var Symbol = root.Symbol; + return values +} -module.exports = Symbol; +module.exports = { + urlEquals, + fieldValues +} /***/ }), -/***/ 82382: +/***/ 6197: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var root = __nccwpck_require__(95173); - -/** Built-in value references. */ -var Uint8Array = root.Uint8Array; +"use strict"; +// @ts-check -module.exports = Uint8Array; -/***/ }), +/* global WebAssembly */ -/***/ 34105: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +const assert = __nccwpck_require__(2613) +const net = __nccwpck_require__(9278) +const http = __nccwpck_require__(8611) +const { pipeline } = __nccwpck_require__(2203) +const util = __nccwpck_require__(3440) +const timers = __nccwpck_require__(8804) +const Request = __nccwpck_require__(4655) +const DispatcherBase = __nccwpck_require__(1) +const { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError +} = __nccwpck_require__(8707) +const buildConnector = __nccwpck_require__(9136) +const { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest +} = __nccwpck_require__(6443) + +/** @type {import('http2')} */ +let http2 +try { + http2 = __nccwpck_require__(5675) +} catch { + // @ts-ignore + http2 = { constants: {} } +} -var getNative = __nccwpck_require__(16221), - root = __nccwpck_require__(95173); +const { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } +} = http2 -/* Built-in method references that are verified to be native. */ -var WeakMap = getNative(root, 'WeakMap'); +// Experimental +let h2ExperimentalWarned = false -module.exports = WeakMap; +const FastBuffer = Buffer[Symbol.species] +const kClosedResolve = Symbol('kClosedResolve') -/***/ }), +const channels = {} -/***/ 52743: -/***/ ((module) => { +try { + const diagnosticsChannel = __nccwpck_require__(1637) + channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders') + channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect') + channels.connectError = diagnosticsChannel.channel('undici:client:connectError') + channels.connected = diagnosticsChannel.channel('undici:client:connected') +} catch { + channels.sendHeaders = { hasSubscribers: false } + channels.beforeConnect = { hasSubscribers: false } + channels.connectError = { hasSubscribers: false } + channels.connected = { hasSubscribers: false } +} /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. + * @type {import('../types/client').default} */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} +class Client extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor (url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super() -module.exports = apply; + if (keepAlive !== undefined) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') + } + if (socketTimeout !== undefined) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') + } -/***/ }), + if (requestTimeout !== undefined) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') + } -/***/ 31489: -/***/ ((module) => { + if (idleTimeout !== undefined) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') + } -/** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; + if (maxKeepAliveTimeout !== undefined) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') + } - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize') } - } - return array; -} -module.exports = arrayEach; + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath') + } + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout') + } -/***/ }), + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout') + } -/***/ 33281: -/***/ ((module) => { + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout') + } -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') + } - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') } - } - return result; -} -module.exports = arrayFilter; + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') + } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } -/***/ }), + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } -/***/ 69511: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') + } -var baseTimes = __nccwpck_require__(31579), - isArguments = __nccwpck_require__(43891), - isArray = __nccwpck_require__(68635), - isBuffer = __nccwpck_require__(1236), - isIndex = __nccwpck_require__(77844), - isTypedArray = __nccwpck_require__(46431); + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address') + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number') + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number') + } -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); + // h2 + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value') } - } - return result; -} -module.exports = arrayLikeKeys; + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0') + } + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } -/***/ }), + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) + ? interceptors.Client + : [createRedirectInterceptor({ maxRedirections })] + this[kUrl] = util.parseOrigin(url) + this[kConnector] = connect + this[kSocket] = null + this[kPipelining] = pipelining != null ? pipelining : 1 + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout] + this[kServerName] = null + this[kLocalAddress] = localAddress != null ? localAddress : null + this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n` + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3 + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3 + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength + this[kMaxRedirections] = maxRedirections + this[kMaxRequests] = maxRequestsPerClient + this[kClosedResolve] = null + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1 + this[kHTTPConnVersion] = 'h1' -/***/ 10044: -/***/ ((module) => { + // HTTP/2 + this[kHTTP2Session] = null + this[kHTTP2SessionState] = !allowH2 + ? null + : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server + } + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}` -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); + // kQueue is built up of 3 sections separated by + // the kRunningIdx and kPendingIdx indices. + // | complete | running | pending | + // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length + // kRunningIdx points to the first running element. + // kPendingIdx points to the first pending element. + // This implements a fast queue with an amortized + // time of O(1). - while (++index < length) { - result[index] = iteratee(array[index], index, array); + this[kQueue] = [] + this[kRunningIdx] = 0 + this[kPendingIdx] = 0 } - return result; -} -module.exports = arrayMap; + get pipelining () { + return this[kPipelining] + } + set pipelining (value) { + this[kPipelining] = value + resume(this, true) + } -/***/ }), + get [kPending] () { + return this[kQueue].length - this[kPendingIdx] + } -/***/ 89592: -/***/ ((module) => { + get [kRunning] () { + return this[kPendingIdx] - this[kRunningIdx] + } -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; + get [kSize] () { + return this[kQueue].length - this[kRunningIdx] + } - while (++index < length) { - array[offset + index] = values[index]; + get [kConnected] () { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed } - return array; -} -module.exports = arrayPush; + get [kBusy] () { + const socket = this[kSocket] + return ( + (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || + (this[kSize] >= (this[kPipelining] || 1)) || + this[kPending] > 0 + ) + } + /* istanbul ignore: only used for test */ + [kConnect] (cb) { + connect(this) + this.once('connect', cb) + } -/***/ }), + [kDispatch] (opts, handler) { + const origin = opts.origin || this[kUrl].origin -/***/ 54151: -/***/ ((module) => { + const request = this[kHTTPConnVersion] === 'h2' + ? Request[kHTTP2BuildRequest](origin, opts, handler) + : Request[kHTTP1BuildRequest](origin, opts, handler) -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; + this[kQueue].push(request) + if (this[kResuming]) { + // Do nothing. + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + // Wait a tick in case stream/iterator is ended in the same tick. + this[kResuming] = 1 + process.nextTick(resume, this) + } else { + resume(this, true) } - } - return false; -} -module.exports = arraySome; + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2 + } + return this[kNeedDrain] < 2 + } -/***/ }), + async [kClose] () { + // TODO: for H2 we need to gracefully flush the remaining enqueued + // request and close each stream. + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null) + } else { + this[kClosedResolve] = resolve + } + }) + } -/***/ 6167: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + async [kDestroy] (err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } -var baseAssignValue = __nccwpck_require__(37158), - eq = __nccwpck_require__(15379); + const callback = () => { + if (this[kClosedResolve]) { + // TODO (fix): Should we error here with ClientDestroyedError? + this[kClosedResolve]() + this[kClosedResolve] = null + } + resolve() + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err) + this[kHTTP2Session] = null + this[kHTTP2SessionState] = null + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + if (!this[kSocket]) { + queueMicrotask(callback) + } else { + util.destroy(this[kSocket].on('close', callback), err) + } -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); + resume(this) + }) } } -module.exports = assignValue; +function onHttp2SessionError (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + this[kSocket][kError] = err -/***/ }), - -/***/ 75744: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + onError(this[kClient], err) +} -var eq = __nccwpck_require__(15379); +function onHttp2FrameError (type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } + if (id === 0) { + this[kSocket][kError] = err + onError(this[kClient], err) } - return -1; } -module.exports = assocIndexOf; - - -/***/ }), - -/***/ 13902: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var copyObject = __nccwpck_require__(80860), - keys = __nccwpck_require__(34894); - -/** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); +function onHttp2SessionEnd () { + util.destroy(this, new SocketError('other side closed')) + util.destroy(this[kSocket], new SocketError('other side closed')) } -module.exports = baseAssign; +function onHTTP2GoAway (code) { + const client = this[kClient] + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`) + client[kSocket] = null + client[kHTTP2Session] = null + if (client.destroyed) { + assert(this[kPending] === 0) -/***/ }), + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + } else if (client[kRunning] > 0) { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null -/***/ 83527: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + errorRequest(client, request, err) + } -var copyObject = __nccwpck_require__(80860), - keysIn = __nccwpck_require__(1089); + client[kPendingIdx] = client[kRunningIdx] -/** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); -} + assert(client[kRunning] === 0) -module.exports = baseAssignIn; + client.emit('disconnect', + client[kUrl], + [client], + err + ) + resume(client) +} -/***/ }), +const constants = __nccwpck_require__(2824) +const createRedirectInterceptor = __nccwpck_require__(4415) +const EMPTY_BUF = Buffer.alloc(0) -/***/ 37158: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +async function lazyllhttp () { + const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(3870) : undefined -var defineProperty = __nccwpck_require__(74649); + let mod + try { + mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(3434), 'base64')) + } catch (e) { + /* istanbul ignore next */ -/** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; + // We could check if the error was caused by the simd option not + // being enabled, but the occurring of this other error + // * https://github.com/emscripten-core/emscripten/issues/11495 + // got me to remove that check to avoid breaking Node 12. + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || __nccwpck_require__(3870), 'base64')) } -} -module.exports = baseAssignValue; + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + wasm_on_url: (p, at, len) => { + /* istanbul ignore next */ + return 0 + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageBegin() || 0 + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageComplete() || 0 + } -/***/ }), - -/***/ 82306: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var Stack = __nccwpck_require__(15531), - arrayEach = __nccwpck_require__(31489), - assignValue = __nccwpck_require__(6167), - baseAssign = __nccwpck_require__(13902), - baseAssignIn = __nccwpck_require__(83527), - cloneBuffer = __nccwpck_require__(67555), - copyArray = __nccwpck_require__(91027), - copySymbols = __nccwpck_require__(80813), - copySymbolsIn = __nccwpck_require__(68854), - getAllKeys = __nccwpck_require__(39346), - getAllKeysIn = __nccwpck_require__(50101), - getTag = __nccwpck_require__(41704), - initCloneArray = __nccwpck_require__(87042), - initCloneByTag = __nccwpck_require__(79322), - initCloneObject = __nccwpck_require__(22258), - isArray = __nccwpck_require__(68635), - isBuffer = __nccwpck_require__(1236), - isMap = __nccwpck_require__(39000), - isObject = __nccwpck_require__(85670), - isSet = __nccwpck_require__(55374), - keys = __nccwpck_require__(34894), - keysIn = __nccwpck_require__(1089); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values supported by `_.clone`. */ -var cloneableTags = {}; -cloneableTags[argsTag] = cloneableTags[arrayTag] = -cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = -cloneableTags[boolTag] = cloneableTags[dateTag] = -cloneableTags[float32Tag] = cloneableTags[float64Tag] = -cloneableTags[int8Tag] = cloneableTags[int16Tag] = -cloneableTags[int32Tag] = cloneableTags[mapTag] = -cloneableTags[numberTag] = cloneableTags[objectTag] = -cloneableTags[regexpTag] = cloneableTags[setTag] = -cloneableTags[stringTag] = cloneableTags[symbolTag] = -cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = -cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; -cloneableTags[errorTag] = cloneableTags[funcTag] = -cloneableTags[weakMapTag] = false; - -/** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ -function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); + /* eslint-enable camelcase */ } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; + }) +} - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); +let llhttpInstance = null +let llhttpPromise = lazyllhttp() +llhttpPromise.catch() + +let currentParser = null +let currentBufferRef = null +let currentBufferSize = 0 +let currentBufferPtr = null + +const TIMEOUT_HEADERS = 1 +const TIMEOUT_BODY = 2 +const TIMEOUT_IDLE = 3 + +class Parser { + constructor (client, socket, { exports }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0) + + this.llhttp = exports + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE) + this.client = client + this.socket = socket + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + this.statusCode = null + this.statusText = '' + this.upgrade = false + this.headers = [] + this.headersSize = 0 + this.headersMaxSize = client[kMaxHeadersSize] + this.shouldKeepAlive = false + this.paused = false + this.resume = this.resume.bind(this) + + this.bytesRead = 0 + + this.keepAlive = '' + this.contentLength = '' + this.connection = '' + this.maxResponseSize = client[kMaxResponseSize] + } + + setTimeout (value, type) { + this.timeoutType = type + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout) + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this) + // istanbul ignore else: only for jest + if (this.timeout.unref) { + this.timeout.unref() + } + } else { + this.timeout = null } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; + this.timeoutValue = value + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() } - result = initCloneByTag(value, tag, isDeep); } } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; + resume () { + if (this.socket.destroyed || !this.paused) { + return } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; -} -module.exports = baseClone; + assert(this.ptr != null) + assert(currentParser == null) + this.llhttp.llhttp_resume(this.ptr) -/***/ }), + assert(this.timeoutType === TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } -/***/ 60537: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.paused = false + this.execute(this.socket.read() || EMPTY_BUF) // Flush parser. + this.readMore() + } -var isObject = __nccwpck_require__(85670); + readMore () { + while (!this.paused && this.ptr) { + const chunk = this.socket.read() + if (chunk === null) { + break + } + this.execute(chunk) + } + } -/** Built-in value references. */ -var objectCreate = Object.create; + execute (data) { + assert(this.ptr != null) + assert(currentParser == null) + assert(!this.paused) -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; -}()); + const { socket, llhttp } = this -module.exports = baseCreate; + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr) + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096 + currentBufferPtr = llhttp.malloc(currentBufferSize) + } + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data) -/***/ }), + // Call `execute` on the wasm parser. + // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, + // and finally the length of bytes to parse. + // The return value is an error code or `constants.ERROR.OK`. + try { + let ret -/***/ 83084: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + try { + currentBufferRef = data + currentParser = this + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length) + /* eslint-disable-next-line no-useless-catch */ + } catch (err) { + /* istanbul ignore next: difficult to make a test case for */ + throw err + } finally { + currentParser = null + currentBufferRef = null + } + + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr + + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)) + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true + socket.unshift(data.slice(offset)) + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr) + let message = '' + /* istanbul ignore else: difficult to make a test case for */ + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0) + message = + 'Response does not match the HTTP/1.1 protocol (' + + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + + ')' + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) + } + } catch (err) { + util.destroy(socket, err) + } + } -var baseForOwn = __nccwpck_require__(59522), - createBaseEach = __nccwpck_require__(26764); + destroy () { + assert(this.ptr != null) + assert(currentParser == null) -/** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEach = createBaseEach(baseForOwn); + this.llhttp.llhttp_free(this.ptr) + this.ptr = null -module.exports = baseEach; + timers.clearTimeout(this.timeout) + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + this.paused = false + } -/***/ }), + onStatus (buf) { + this.statusText = buf.toString() + } -/***/ 34069: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + onMessageBegin () { + const { socket, client } = this -var arrayPush = __nccwpck_require__(89592), - isFlattenable = __nccwpck_require__(35949); + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } -/** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ -function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; + const request = client[kQueue][client[kRunningIdx]] + if (!request) { + return -1 } } - return result; -} -module.exports = baseFlatten; + onHeaderField (buf) { + const len = this.headers.length + if ((len & 1) === 0) { + this.headers.push(buf) + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } -/***/ }), + this.trackHeader(buf.length) + } -/***/ 52562: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + onHeaderValue (buf) { + let len = this.headers.length -var createBaseFor = __nccwpck_require__(57519); + if ((len & 1) === 1) { + this.headers.push(buf) + len += 1 + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); + const key = this.headers[len - 2] + if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { + this.keepAlive += buf.toString() + } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { + this.connection += buf.toString() + } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + this.contentLength += buf.toString() + } -module.exports = baseFor; + this.trackHeader(buf.length) + } + trackHeader (len) { + this.headersSize += len + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()) + } + } -/***/ }), + onUpgrade (head) { + const { upgrade, client, socket, headers, statusCode } = this -/***/ 59522: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + assert(upgrade) -var baseFor = __nccwpck_require__(52562), - keys = __nccwpck_require__(34894); + const request = client[kQueue][client[kRunningIdx]] + assert(request) -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} + assert(!socket.destroyed) + assert(socket === client[kSocket]) + assert(!this.paused) + assert(request.upgrade || request.method === 'CONNECT') -module.exports = baseForOwn; + this.statusCode = null + this.statusText = '' + this.shouldKeepAlive = null + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 -/***/ }), + socket.unshift(head) -/***/ 25835: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + socket[kParser].destroy() + socket[kParser] = null -var castPath = __nccwpck_require__(70908), - toKey = __nccwpck_require__(12432); + socket[kClient] = null + socket[kError] = null + socket + .removeListener('error', onSocketError) + .removeListener('readable', onSocketReadable) + .removeListener('end', onSocketEnd) + .removeListener('close', onSocketClose) -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = castPath(path, object); + client[kSocket] = null + client[kQueue][client[kRunningIdx]++] = null + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')) - var index = 0, - length = path.length; + try { + request.onUpgrade(statusCode, headers, socket) + } catch (err) { + util.destroy(socket, err) + } - while (object != null && index < length) { - object = object[toKey(path[index++])]; + resume(client) } - return (index && index == length) ? object : undefined; -} - -module.exports = baseGet; + onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this -/***/ }), + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } -/***/ 41260: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const request = client[kQueue][client[kRunningIdx]] -var arrayPush = __nccwpck_require__(89592), - isArray = __nccwpck_require__(68635); + /* istanbul ignore next: difficult to make a test case for */ + if (!request) { + return -1 + } -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); -} + assert(!this.upgrade) + assert(this.statusCode < 200) -module.exports = baseGetAllKeys; + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 + } + /* this can only happen if server is misbehaving */ + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) + return -1 + } -/***/ }), + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS) -/***/ 77772: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.statusCode = statusCode + this.shouldKeepAlive = ( + shouldKeepAlive || + // Override llhttp value which does not allow keepAlive for HEAD. + (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive') + ) -var Symbol = __nccwpck_require__(25344), - getRawTag = __nccwpck_require__(96416), - objectToString = __nccwpck_require__(79230); + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null + ? request.bodyTimeout + : client[kBodyTimeout] + this.setTimeout(bodyTimeout, TIMEOUT_BODY) + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + if (upgrade) { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 -module.exports = baseGetTag; + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ) + if (timeout <= 0) { + socket[kReset] = true + } else { + client[kKeepAliveTimeoutValue] = timeout + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout] + } + } else { + // Stop more requests from being dispatched. + socket[kReset] = true + } -/***/ }), + const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false -/***/ 88916: -/***/ ((module) => { + if (request.aborted) { + return -1 + } -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} + if (request.method === 'HEAD') { + return 1 + } -module.exports = baseHasIn; + if (statusCode < 200) { + return 1 + } + if (socket[kBlocking]) { + socket[kBlocking] = false + resume(client) + } -/***/ }), + return pause ? constants.ERROR.PAUSED : 0 + } -/***/ 86982: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + onBody (buf) { + const { client, socket, statusCode, maxResponseSize } = this -var baseGetTag = __nccwpck_require__(77772), - isObjectLike = __nccwpck_require__(45281); + if (socket.destroyed) { + return -1 + } -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; + const request = client[kQueue][client[kRunningIdx]] + assert(request) -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} + assert.strictEqual(this.timeoutType, TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } -module.exports = baseIsArguments; + assert(statusCode >= 200) + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()) + return -1 + } -/***/ }), + this.bytesRead += buf.length -/***/ 74375: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED + } + } -var baseIsEqualDeep = __nccwpck_require__(74882), - isObjectLike = __nccwpck_require__(45281); + onMessageComplete () { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); -} + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1 + } -module.exports = baseIsEqual; + if (upgrade) { + return + } + const request = client[kQueue][client[kRunningIdx]] + assert(request) -/***/ }), + assert(statusCode >= 100) -/***/ 74882: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.statusCode = null + this.statusText = '' + this.bytesRead = 0 + this.contentLength = '' + this.keepAlive = '' + this.connection = '' -var Stack = __nccwpck_require__(15531), - equalArrays = __nccwpck_require__(87509), - equalByTag = __nccwpck_require__(10092), - equalObjects = __nccwpck_require__(25574), - getTag = __nccwpck_require__(41704), - isArray = __nccwpck_require__(68635), - isBuffer = __nccwpck_require__(1236), - isTypedArray = __nccwpck_require__(46431); + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; + if (statusCode < 200) { + return + } -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - objectTag = '[object Object]'; + /* istanbul ignore next: should be handled by llhttp? */ + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()) + return -1 + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + request.onComplete(headers) -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + client[kQueue][client[kRunningIdx]++] = null -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0) + // Response completed before request. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (socket[kReset] && client[kRunning] === 0) { + // Destroy socket once all requests have completed. + // The request at the tail of the pipeline is the one + // that requested reset and no further requests should + // have been queued since then. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(resume, client) + } else { + resume(client) } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); +} - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; +function onParserTimeout (parser) { + const { socket, timeoutType, client } = parser - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + /* istanbul ignore else */ + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, 'cannot be paused while waiting for headers') + util.destroy(socket, new HeadersTimeoutError()) } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()) + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]) + util.destroy(socket, new InformationalError('socket idle timeout')) } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } -module.exports = baseIsEqualDeep; - +function onSocketReadable () { + const { [kParser]: parser } = this + if (parser) { + parser.readMore() + } +} -/***/ }), +function onSocketError (err) { + const { [kClient]: client, [kParser]: parser } = this -/***/ 28059: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') -var getTag = __nccwpck_require__(41704), - isObjectLike = __nccwpck_require__(45281); + if (client[kHTTPConnVersion] !== 'h2') { + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded + // to the user. + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so for as a valid response. + parser.onMessageComplete() + return + } + } -/** `Object#toString` result references. */ -var mapTag = '[object Map]'; + this[kError] = err -/** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ -function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; + onError(this[kClient], err) } -module.exports = baseIsMap; - - -/***/ }), - -/***/ 12653: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var Stack = __nccwpck_require__(15531), - baseIsEqual = __nccwpck_require__(74375); +function onError (client, err) { + if ( + client[kRunning] === 0 && + err.code !== 'UND_ERR_INFO' && + err.code !== 'UND_ERR_SOCKET' + ) { + // Error is not caused by running request and not a recoverable + // socket error. -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; + assert(client[kPendingIdx] === client[kRunningIdx]) -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) } + assert(client[kSize] === 0) } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; +} - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } +function onSocketEnd () { + const { [kParser]: parser, [kClient]: client } = this + + if (client[kHTTPConnVersion] !== 'h2') { + if (parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + return } } - return true; + + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) } -module.exports = baseIsMatch; +function onSocketClose () { + const { [kClient]: client, [kParser]: parser } = this + if (client[kHTTPConnVersion] === 'h1' && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + } -/***/ }), + this[kParser].destroy() + this[kParser] = null + } -/***/ 38635: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) -var isFunction = __nccwpck_require__(57983), - isMasked = __nccwpck_require__(24255), - isObject = __nccwpck_require__(85670), - toSource = __nccwpck_require__(69399); + client[kSocket] = null -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + if (client.destroyed) { + assert(client[kPending] === 0) -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; + errorRequest(client, request, err) + } -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; + client[kPendingIdx] = client[kRunningIdx] -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + assert(client[kRunning] === 0) -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); + client.emit('disconnect', client[kUrl], [client], err) -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); + resume(client) } -module.exports = baseIsNative; +async function connect (client) { + assert(!client[kConnecting]) + assert(!client[kSocket]) + let { host, hostname, protocol, port } = client[kUrl] -/***/ }), + // Resolve ipv6 + if (hostname[0] === '[') { + const idx = hostname.indexOf(']') -/***/ 20952: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + assert(idx !== -1) + const ip = hostname.substring(1, idx) -var getTag = __nccwpck_require__(41704), - isObjectLike = __nccwpck_require__(45281); + assert(net.isIP(ip)) + hostname = ip + } -/** `Object#toString` result references. */ -var setTag = '[object Set]'; + client[kConnecting] = true -/** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ -function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; -} + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }) + } -module.exports = baseIsSet; + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket) => { + if (err) { + reject(err) + } else { + resolve(socket) + } + }) + }) + if (client.destroyed) { + util.destroy(socket.on('error', () => {}), new ClientDestroyedError()) + return + } -/***/ }), + client[kConnecting] = false -/***/ 90006: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + assert(socket) -var baseGetTag = __nccwpck_require__(77772), - isLength = __nccwpck_require__(32480), - isObjectLike = __nccwpck_require__(45281); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; -} + const isH2 = socket.alpnProtocol === 'h2' + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }) + } -module.exports = baseIsTypedArray; + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }) + client[kHTTPConnVersion] = 'h2' + session[kClient] = client + session[kSocket] = socket + session.on('error', onHttp2SessionError) + session.on('frameError', onHttp2FrameError) + session.on('end', onHttp2SessionEnd) + session.on('goaway', onHTTP2GoAway) + session.on('close', onSocketClose) + session.unref() + + client[kHTTP2Session] = session + socket[kHTTP2Session] = session + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise + llhttpPromise = null + } + + socket[kNoRef] = false + socket[kWriting] = false + socket[kReset] = false + socket[kBlocking] = false + socket[kParser] = new Parser(client, socket, llhttpInstance) + } + + socket[kCounter] = 0 + socket[kMaxRequests] = client[kMaxRequests] + socket[kClient] = client + socket[kError] = null + + socket + .on('error', onSocketError) + .on('readable', onSocketReadable) + .on('end', onSocketEnd) + .on('close', onSocketClose) + + client[kSocket] = socket + + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }) + } + client.emit('connect', client[kUrl], [client]) + } catch (err) { + if (client.destroyed) { + return + } -/***/ }), + client[kConnecting] = false -/***/ 64331: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }) + } -var baseMatches = __nccwpck_require__(63598), - baseMatchesProperty = __nccwpck_require__(5644), - identity = __nccwpck_require__(53740), - isArray = __nccwpck_require__(68635), - property = __nccwpck_require__(36247); + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0) + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++] + errorRequest(client, request, err) + } + } else { + onError(client, err) + } -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; + client.emit('connectionError', client[kUrl], [client], err) } - if (value == null) { - return identity; + + resume(client) +} + +function emitDrain (client) { + client[kNeedDrain] = 0 + client.emit('drain', client[kUrl], [client]) +} + +function resume (client, sync) { + if (client[kResuming] === 2) { + return } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); + + client[kResuming] = 2 + + _resume(client, sync) + client[kResuming] = 0 + + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]) + client[kPendingIdx] -= client[kRunningIdx] + client[kRunningIdx] = 0 } - return property(value); } -module.exports = baseIteratee; +function _resume (client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0) + return + } + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve]() + client[kClosedResolve] = null + return + } -/***/ }), + const socket = client[kSocket] -/***/ 89864: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref() + socket[kNoRef] = true + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref() + socket[kNoRef] = false + } -var isPrototype = __nccwpck_require__(49393), - nativeKeys = __nccwpck_require__(59192); + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE) + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request = client[kQueue][client[kRunningIdx]] + const headersTimeout = request.headersTimeout != null + ? request.headersTimeout + : client[kHeadersTimeout] + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS) + } + } + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + if (client[kBusy]) { + client[kNeedDrain] = 2 + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1 + process.nextTick(emitDrain, client) + } else { + emitDrain(client) + } + continue + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + if (client[kPending] === 0) { + return + } -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); + if (client[kRunning] >= (client[kPipelining] || 1)) { + return } - } - return result; -} -module.exports = baseKeys; + const request = client[kQueue][client[kPendingIdx]] + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return + } -/***/ }), + client[kServerName] = request.servername -/***/ 25475: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError('servername changed')) + return + } + } + + if (client[kConnecting]) { + return + } + + if (!socket && !client[kHTTP2Session]) { + connect(client) + return + } -var isObject = __nccwpck_require__(85670), - isPrototype = __nccwpck_require__(49393), - nativeKeysIn = __nccwpck_require__(29624); + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + if (client[kRunning] > 0 && !request.idempotent) { + // Non-idempotent request cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + // Don't dispatch an upgrade until all preceding requests have completed. + // A misbehaving server might upgrade the connection before all pipelined + // request has completed. + return + } -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; + if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && + (util.isStream(request.body) || util.isAsyncIterable(request.body))) { + // Request with stream or iterator body can error while other requests + // are inflight and indirectly error those as well. + // Ensure this doesn't happen by waiting for inflight + // to complete before dispatching. - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); + // Request with stream or iterator body cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } + + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++ + } else { + client[kQueue].splice(client[kPendingIdx], 1) } } - return result; } -module.exports = baseKeysIn; - +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength (method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' +} -/***/ }), +function write (client, request) { + if (client[kHTTPConnVersion] === 'h2') { + writeH2(client, client[kHTTP2Session], request) + return + } -/***/ 56079: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const { body, method, path, host, upgrade, headers, blocking, reset } = request -var baseEach = __nccwpck_require__(83084), - isArrayLike = __nccwpck_require__(28049); + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 -/** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; -} + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) -module.exports = baseMap; + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + const bodyLength = util.bodyLength(body) -/***/ }), + let contentLength = bodyLength -/***/ 63598: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (contentLength === null) { + contentLength = request.contentLength + } -var baseIsMatch = __nccwpck_require__(12653), - getMatchData = __nccwpck_require__(55726), - matchesStrictComparable = __nccwpck_require__(25654); + if (contentLength === 0 && !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); + contentLength = null } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} -module.exports = baseMatches; + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + const socket = client[kSocket] -/***/ }), + try { + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } -/***/ 5644: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + errorRequest(client, request, err || new RequestAbortedError()) -var baseIsEqual = __nccwpck_require__(74375), - get = __nccwpck_require__(47006), - hasIn = __nccwpck_require__(86366), - isKey = __nccwpck_require__(76930), - isStrictComparable = __nccwpck_require__(56184), - matchesStrictComparable = __nccwpck_require__(25654), - toKey = __nccwpck_require__(12432); + util.destroy(socket, new InformationalError('aborted')) + }) + } catch (err) { + errorRequest(client, request, err) + } -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; + if (request.aborted) { + return false + } -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; -} + if (method === 'HEAD') { + // https://github.com/mcollina/undici/issues/258 + // Close after a HEAD request to interop with misbehaving servers + // that may send a body in the response. -module.exports = baseMatchesProperty; + socket[kReset] = true + } + if (upgrade || method === 'CONNECT') { + // On CONNECT or upgrade, block pipeline from dispatching further + // requests on this connection. -/***/ }), + socket[kReset] = true + } -/***/ 42157: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (reset != null) { + socket[kReset] = reset + } -var arrayMap = __nccwpck_require__(10044), - baseGet = __nccwpck_require__(25835), - baseIteratee = __nccwpck_require__(64331), - baseMap = __nccwpck_require__(56079), - baseSortBy = __nccwpck_require__(16876), - baseUnary = __nccwpck_require__(47606), - compareMultiple = __nccwpck_require__(10002), - identity = __nccwpck_require__(53740), - isArray = __nccwpck_require__(68635); + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true + } -/** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ -function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee) { - if (isArray(iteratee)) { - return function(value) { - return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity]; + if (blocking) { + socket[kBlocking] = true } - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + let header = `${method} ${path} HTTP/1.1\r\n` - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); + if (typeof host === 'string') { + header += `host: ${host}\r\n` + } else { + header += client[kHostHeader] + } - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); -} + if (upgrade) { + header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n` + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n' + } else { + header += 'connection: close\r\n' + } -module.exports = baseOrderBy; + if (headers) { + header += headers + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }) + } -/***/ }), + /* istanbul ignore else: assertion */ + if (!body || bodyLength === 0) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + assert(contentLength === null, 'no body must not have content length') + socket.write(`${header}\r\n`, 'latin1') + } + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') -/***/ 95716: -/***/ ((module) => { + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(body) + socket.uncork() + request.onBodySent(body) + request.onRequestSent() + if (!expectsPayload) { + socket[kReset] = true + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }) + } else { + writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) + } + } else if (util.isStream(body)) { + writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) + } else if (util.isIterable(body)) { + writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) + } else { + assert(false) + } -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; + return true } -module.exports = baseProperty; +function writeH2 (client, session, request) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request + let headers + if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()) + else headers = reqHeaders -/***/ }), + if (upgrade) { + errorRequest(client, request, new Error('Upgrade not supported for H2')) + return false + } -/***/ 18956: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + try { + // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } -var baseGet = __nccwpck_require__(25835); + errorRequest(client, request, err || new RequestAbortedError()) + }) + } catch (err) { + errorRequest(client, request, err) + } -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} + if (request.aborted) { + return false + } -module.exports = basePropertyDeep; + /** @type {import('node:http2').ClientHttp2Stream} */ + let stream + const h2State = client[kHTTP2SessionState] + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost] + headers[HTTP2_HEADER_METHOD] = method -/***/ }), + if (method === 'CONNECT') { + session.ref() + // we are already connected, streams are pending, first request + // will create a new stream. We trigger a request to create the stream and wait until + // `ready` event is triggered + // We disabled endStream to allow the user to write to the stream + stream = session.request(headers, { endStream: false, signal }) -/***/ 51226: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + } else { + stream.once('ready', () => { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + }) + } -var identity = __nccwpck_require__(53740), - overRest = __nccwpck_require__(60111), - setToString = __nccwpck_require__(41736); + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) session.unref() + }) -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); -} + return true + } -module.exports = baseRest; + // https://tools.ietf.org/html/rfc7540#section-8.3 + // :path and :scheme headers must be omited when sending CONNECT + headers[HTTP2_HEADER_PATH] = path + headers[HTTP2_HEADER_SCHEME] = 'https' -/***/ }), + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 -/***/ 1557: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. -var constant = __nccwpck_require__(99178), - defineProperty = __nccwpck_require__(74649), - identity = __nccwpck_require__(53740); + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) -/** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); -}; + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } -module.exports = baseSetToString; + let contentLength = util.bodyLength(body) + if (contentLength == null) { + contentLength = request.contentLength + } -/***/ }), + if (contentLength === 0 || !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. -/***/ 16876: -/***/ ((module) => { + contentLength = null + } -/** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ -function baseSortBy(array, comparer) { - var length = array.length; + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } - array.sort(comparer); - while (length--) { - array[length] = array[length].value; + process.emitWarning(new RequestContentLengthMismatchError()) } - return array; -} -module.exports = baseSortBy; + if (contentLength != null) { + assert(body, 'no body must not have content length') + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}` + } + session.ref() -/***/ }), + const shouldEndStream = method === 'GET' || method === 'HEAD' + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue' + stream = session.request(headers, { endStream: shouldEndStream, signal }) -/***/ 31579: -/***/ ((module) => { + stream.once('continue', writeBodyH2) + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }) + writeBodyH2() + } -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); + // Increment counter as we have new several streams open + ++h2State.openStreams - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} + stream.once('response', headers => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers -module.exports = baseTimes; + if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { + stream.pause() + } + }) + stream.once('end', () => { + request.onComplete([]) + }) -/***/ }), + stream.on('data', (chunk) => { + if (request.onData(chunk) === false) { + stream.pause() + } + }) -/***/ 74256: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) { + session.unref() + } + }) -var Symbol = __nccwpck_require__(25344), - arrayMap = __nccwpck_require__(10044), - isArray = __nccwpck_require__(68635), - isSymbol = __nccwpck_require__(97894); + stream.once('error', function (err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; + stream.once('frameError', (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + errorRequest(client, request, err) -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} + // stream.on('aborted', () => { + // // TODO(HTTP/2): Support aborted + // }) -module.exports = baseToString; + // stream.on('timeout', () => { + // // TODO(HTTP/2): Support timeout + // }) + // stream.on('push', headers => { + // // TODO(HTTP/2): Suppor push + // }) -/***/ }), + // stream.on('trailers', headers => { + // // TODO(HTTP/2): Support trailers + // }) -/***/ 47606: -/***/ ((module) => { + return true -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; + function writeBodyH2 () { + /* istanbul ignore else: assertion */ + if (!body) { + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + stream.cork() + stream.write(body) + stream.uncork() + stream.end() + request.onBodySent(body) + request.onRequestSent() + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ + client, + request, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: '' + }) + } else { + writeBlob({ + body, + client, + request, + contentLength, + expectsPayload, + h2stream: stream, + header: '', + socket: client[kSocket] + }) + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: '' + }) + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request, + contentLength, + expectsPayload, + header: '', + h2stream: stream, + socket: client[kSocket] + }) + } else { + assert(false) + } + } } -module.exports = baseUnary; - +function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') -/***/ }), + if (client[kHTTPConnVersion] === 'h2') { + // For HTTP/2, is enough to pipe the stream + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err) + util.destroy(h2stream, err) + } else { + request.onRequestSent() + } + } + ) -/***/ 11624: -/***/ ((module) => { + pipe.on('data', onPipeData) + pipe.once('end', () => { + pipe.removeListener('data', onPipeData) + util.destroy(pipe) + }) -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} + function onPipeData (chunk) { + request.onBodySent(chunk) + } -module.exports = cacheHas; + return + } + let finished = false -/***/ }), + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) -/***/ 70908: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const onData = function (chunk) { + if (finished) { + return + } -var isArray = __nccwpck_require__(68635), - isKey = __nccwpck_require__(76930), - stringToPath = __nccwpck_require__(3665), - toString = __nccwpck_require__(58052); + try { + if (!writer.write(chunk) && this.pause) { + this.pause() + } + } catch (err) { + util.destroy(this, err) + } + } + const onDrain = function () { + if (finished) { + return + } -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value, object) { - if (isArray(value)) { - return value; + if (body.resume) { + body.resume() + } } - return isKey(value, object) ? [value] : stringToPath(toString(value)); -} + const onAbort = function () { + if (finished) { + return + } + const err = new RequestAbortedError() + queueMicrotask(() => onFinished(err)) + } + const onFinished = function (err) { + if (finished) { + return + } -module.exports = castPath; + finished = true + assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)) -/***/ }), + socket + .off('drain', onDrain) + .off('error', onFinished) -/***/ 51940: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + body + .removeListener('data', onData) + .removeListener('end', onFinished) + .removeListener('error', onFinished) + .removeListener('close', onAbort) + + if (!err) { + try { + writer.end() + } catch (er) { + err = er + } + } -var Uint8Array = __nccwpck_require__(82382); + writer.destroy(err) -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; -} + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body, err) + } else { + util.destroy(body) + } + } -module.exports = cloneArrayBuffer; + body + .on('data', onData) + .on('end', onFinished) + .on('error', onFinished) + .on('close', onAbort) + if (body.resume) { + body.resume() + } -/***/ }), + socket + .on('drain', onDrain) + .on('error', onFinished) +} -/***/ 67555: -/***/ ((module, exports, __nccwpck_require__) => { +async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, 'blob body must have content length') -/* module decorator */ module = __nccwpck_require__.nmd(module); -var root = __nccwpck_require__(95173); + const isH2 = client[kHTTPConnVersion] === 'h2' + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError() + } -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; + const buffer = Buffer.from(await body.arrayBuffer()) -/** Detect free variable `module`. */ -var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + if (isH2) { + h2stream.cork() + h2stream.write(buffer) + h2stream.uncork() + } else { + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(buffer) + socket.uncork() + } -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; + request.onBodySent(buffer) + request.onRequestSent() -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + if (!expectsPayload) { + socket[kReset] = true + } -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); + resume(client) + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err) } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; } -module.exports = cloneBuffer; +async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') + let callback = null + function onDrain () { + if (callback) { + const cb = callback + callback = null + cb() + } + } -/***/ }), + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null) -/***/ 81261: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (socket[kError]) { + reject(socket[kError]) + } else { + callback = resolve + } + }) -var cloneArrayBuffer = __nccwpck_require__(51940); + if (client[kHTTPConnVersion] === 'h2') { + h2stream + .on('close', onDrain) + .on('drain', onDrain) -/** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ -function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); -} + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } -module.exports = cloneDataView; + const res = h2stream.write(chunk) + request.onBodySent(chunk) + if (!res) { + await waitForDrain() + } + } + } catch (err) { + h2stream.destroy(err) + } finally { + request.onRequestSent() + h2stream.end() + h2stream + .off('close', onDrain) + .off('drain', onDrain) + } + return + } -/***/ }), + socket + .on('close', onDrain) + .on('drain', onDrain) -/***/ 16375: -/***/ ((module) => { + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } -/** Used to match `RegExp` flags from their coerced string values. */ -var reFlags = /\w*$/; + if (!writer.write(chunk)) { + await waitForDrain() + } + } -/** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ -function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; + writer.end() + } catch (err) { + writer.destroy(err) + } finally { + socket + .off('close', onDrain) + .off('drain', onDrain) + } } -module.exports = cloneRegExp; - +class AsyncWriter { + constructor ({ socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket + this.request = request + this.contentLength = contentLength + this.client = client + this.bytesWritten = 0 + this.expectsPayload = expectsPayload + this.header = header -/***/ }), - -/***/ 31651: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + socket[kWriting] = true + } -var Symbol = __nccwpck_require__(25344); + write (chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + if (socket[kError]) { + throw socket[kError] + } -/** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ -function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; -} + if (socket.destroyed) { + return false + } -module.exports = cloneSymbol; + const len = Buffer.byteLength(chunk) + if (!len) { + return true + } + // We should defer writing chunks. + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } -/***/ }), + process.emitWarning(new RequestContentLengthMismatchError()) + } -/***/ 55584: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + socket.cork() -var cloneArrayBuffer = __nccwpck_require__(51940); + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true + } -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1') + } else { + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + } + } -module.exports = cloneTypedArray; + if (contentLength === null) { + socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1') + } + this.bytesWritten += len -/***/ }), + const ret = socket.write(chunk) -/***/ 95676: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + socket.uncork() -var isSymbol = __nccwpck_require__(97894); + request.onBodySent(chunk) -/** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ -function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } } + + return ret } - return 0; -} -module.exports = compareAscending; + end () { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this + request.onRequestSent() + socket[kWriting] = false -/***/ }), + if (socket[kError]) { + throw socket[kError] + } -/***/ 10002: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (socket.destroyed) { + return + } -var compareAscending = __nccwpck_require__(95676); + if (bytesWritten === 0) { + if (expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD send a Content-Length in a request message when + // no Transfer-Encoding is sent and the request method defines a meaning + // for an enclosed payload body. -/** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ -function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + socket.write(`${header}\r\n`, 'latin1') } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1') } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; -} -module.exports = compareMultiple; + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } else { + process.emitWarning(new RequestContentLengthMismatchError()) + } + } + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } -/***/ }), + resume(client) + } -/***/ 91027: -/***/ ((module) => { + destroy (err) { + const { socket, client } = this -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; + socket[kWriting] = false + + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request') + util.destroy(socket, err) + } + } +} - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; +function errorRequest (client, request, err) { + try { + request.onError(err) + assert(request.aborted) + } catch (err) { + client.emit('error', err) } - return array; } -module.exports = copyArray; +module.exports = Client /***/ }), -/***/ 80860: +/***/ 3194: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var assignValue = __nccwpck_require__(6167), - baseAssignValue = __nccwpck_require__(37158); +"use strict"; -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - var index = -1, - length = props.length; +/* istanbul ignore file: only for Node 12 */ - while (++index < length) { - var key = props[index]; +const { kConnected, kSize } = __nccwpck_require__(6443) - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; +class CompatWeakRef { + constructor (value) { + this.value = value + } - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); + deref () { + return this.value[kConnected] === 0 && this.value[kSize] === 0 + ? undefined + : this.value + } +} + +class CompatFinalizer { + constructor (finalizer) { + this.finalizer = finalizer + } + + register (dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key) + } + }) } } - return object; } -module.exports = copyObject; +module.exports = function () { + // FIXME: remove workaround when the Node bug is fixed + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + } + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + } +} /***/ }), -/***/ 80813: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 9237: +/***/ ((module) => { -var copyObject = __nccwpck_require__(80860), - getSymbols = __nccwpck_require__(97045); +"use strict"; -/** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); -} -module.exports = copySymbols; +// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size +const maxAttributeValueSize = 1024 + +// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size +const maxNameValuePairSize = 4096 + +module.exports = { + maxAttributeValueSize, + maxNameValuePairSize +} /***/ }), -/***/ 68854: +/***/ 3168: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var copyObject = __nccwpck_require__(80860), - getSymbolsIn = __nccwpck_require__(52044); +"use strict"; + + +const { parseSetCookie } = __nccwpck_require__(8915) +const { stringify } = __nccwpck_require__(3834) +const { webidl } = __nccwpck_require__(4222) +const { Headers } = __nccwpck_require__(6349) /** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. + * @typedef {Object} Cookie + * @property {string} name + * @property {string} value + * @property {Date|number|undefined} expires + * @property {number|undefined} maxAge + * @property {string|undefined} domain + * @property {string|undefined} path + * @property {boolean|undefined} secure + * @property {boolean|undefined} httpOnly + * @property {'Strict'|'Lax'|'None'} sameSite + * @property {string[]} unparsed */ -function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); -} -module.exports = copySymbolsIn; +/** + * @param {Headers} headers + * @returns {Record<string, string>} + */ +function getCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }) + webidl.brandCheck(headers, Headers, { strict: false }) -/***/ }), + const cookie = headers.get('cookie') + const out = {} -/***/ 3578: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!cookie) { + return out + } -var root = __nccwpck_require__(95173); + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('=') -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; + out[name.trim()] = value.join('=') + } -module.exports = coreJsData; + return out +} +/** + * @param {Headers} headers + * @param {string} name + * @param {{ path?: string, domain?: string }|undefined} attributes + * @returns {void} + */ +function deleteCookie (headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }) -/***/ }), + webidl.brandCheck(headers, Headers, { strict: false }) -/***/ 26764: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + name = webidl.converters.DOMString(name) + attributes = webidl.converters.DeleteCookieAttributes(attributes) -var isArrayLike = __nccwpck_require__(28049); + // Matches behavior of + // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 + setCookie(headers, { + name, + value: '', + expires: new Date(0), + ...attributes + }) +} /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. + * @param {Headers} headers + * @returns {Cookie[]} */ -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; -} +function getSetCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }) -module.exports = createBaseEach; + webidl.brandCheck(headers, Headers, { strict: false }) + const cookies = headers.getSetCookie() -/***/ }), + if (!cookies) { + return [] + } -/***/ 57519: -/***/ ((module) => { + return cookies.map((pair) => parseSetCookie(pair)) +} /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} + * @param {Headers} headers + * @param {Cookie} cookie + * @returns {void} + */ +function setCookie (headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }) -module.exports = createBaseFor; + webidl.brandCheck(headers, Headers, { strict: false }) + cookie = webidl.converters.Cookie(cookie) -/***/ }), + const str = stringify(cookie) -/***/ 74649: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (str) { + headers.append('Set-Cookie', stringify(cookie)) + } +} -var getNative = __nccwpck_require__(16221); +webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + } +]) -var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} -}()); +webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value) + } + + return new Date(value) + }), + key: 'expires', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: [] + } +]) -module.exports = defineProperty; +module.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie +} /***/ }), -/***/ 87509: +/***/ 8915: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var SetCache = __nccwpck_require__(57869), - arraySome = __nccwpck_require__(54151), - cacheHas = __nccwpck_require__(11624); +"use strict"; + -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; +const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(9237) +const { isCTLExcludingHtab } = __nccwpck_require__(3834) +const { collectASequenceOfCodePointsFast } = __nccwpck_require__(4322) +const assert = __nccwpck_require__(2613) /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; + * @description Parses the field-value attributes of a set-cookie header string. + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} header + * @returns if the header is invalid, null will be returned + */ +function parseSetCookie (header) { + // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F + // character (CTL characters excluding HTAB): Abort these steps and + // ignore the set-cookie-string entirely. + if (isCTLExcludingHtab(header)) { + return null } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; + + let nameValuePair = '' + let unparsedAttributes = '' + let name = '' + let value = '' + + // 2. If the set-cookie-string contains a %x3B (";") character: + if (header.includes(';')) { + // 1. The name-value-pair string consists of the characters up to, + // but not including, the first %x3B (";"), and the unparsed- + // attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question). + const position = { position: 0 } + + nameValuePair = collectASequenceOfCodePointsFast(';', header, position) + unparsedAttributes = header.slice(position.position) + } else { + // Otherwise: + + // 1. The name-value-pair string consists of all the characters + // contained in the set-cookie-string, and the unparsed- + // attributes is the empty string. + nameValuePair = header } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - stack.set(array, other); - stack.set(other, array); + // 3. If the name-value-pair string lacks a %x3D ("=") character, then + // the name string is empty, and the value string is the value of + // name-value-pair. + if (!nameValuePair.includes('=')) { + value = nameValuePair + } else { + // Otherwise, the name string consists of the characters up to, but + // not including, the first %x3D ("=") character, and the (possibly + // empty) value string consists of the characters after the first + // %x3D ("=") character. + const position = { position: 0 } + name = collectASequenceOfCodePointsFast( + '=', + nameValuePair, + position + ) + value = nameValuePair.slice(position.position + 1) + } - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; + // 4. Remove any leading or trailing WSP characters from the name + // string and the value string. + name = name.trim() + value = value.trim() - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } + // 5. If the sum of the lengths of the name string and the value string + // is more than 4096 octets, abort these steps and ignore the set- + // cookie-string entirely. + if (name.length + value.length > maxNameValuePairSize) { + return null + } + + // 6. The cookie-name is the name string, and the cookie-value is the + // value string. + return { + name, value, ...parseUnparsedAttributes(unparsedAttributes) } - stack['delete'](array); - stack['delete'](other); - return result; } -module.exports = equalArrays; +/** + * Parses the remaining attributes of a set-cookie header + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} unparsedAttributes + * @param {[Object.<string, unknown>]={}} cookieAttributeList + */ +function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) { + // 1. If the unparsed-attributes string is empty, skip the rest of + // these steps. + if (unparsedAttributes.length === 0) { + return cookieAttributeList + } + + // 2. Discard the first character of the unparsed-attributes (which + // will be a %x3B (";") character). + assert(unparsedAttributes[0] === ';') + unparsedAttributes = unparsedAttributes.slice(1) + + let cookieAv = '' + + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + if (unparsedAttributes.includes(';')) { + // 1. Consume the characters of the unparsed-attributes up to, but + // not including, the first %x3B (";") character. + cookieAv = collectASequenceOfCodePointsFast( + ';', + unparsedAttributes, + { position: 0 } + ) + unparsedAttributes = unparsedAttributes.slice(cookieAv.length) + } else { + // Otherwise: + // 1. Consume the remainder of the unparsed-attributes. + cookieAv = unparsedAttributes + unparsedAttributes = '' + } -/***/ }), + // Let the cookie-av string be the characters consumed in this step. -/***/ 10092: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + let attributeName = '' + let attributeValue = '' -var Symbol = __nccwpck_require__(25344), - Uint8Array = __nccwpck_require__(82382), - eq = __nccwpck_require__(15379), - equalArrays = __nccwpck_require__(87509), - mapToArray = __nccwpck_require__(27916), - setToArray = __nccwpck_require__(93126); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]'; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; + // 4. If the cookie-av string contains a %x3D ("=") character: + if (cookieAv.includes('=')) { + // 1. The (possibly empty) attribute-name string consists of the + // characters up to, but not including, the first %x3D ("=") + // character, and the (possibly empty) attribute-value string + // consists of the characters after the first %x3D ("=") + // character. + const position = { position: 0 } - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; + attributeName = collectASequenceOfCodePointsFast( + '=', + cookieAv, + position + ) + attributeValue = cookieAv.slice(position.position + 1) + } else { + // Otherwise: - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); + // 1. The attribute-name string consists of the entire cookie-av + // string, and the attribute-value string is empty. + attributeName = cookieAv + } - case errorTag: - return object.name == other.name && object.message == other.message; + // 5. Remove any leading or trailing WSP characters from the attribute- + // name string and the attribute-value string. + attributeName = attributeName.trim() + attributeValue = attributeValue.trim() - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); + // 6. If the attribute-value is longer than 1024 octets, ignore the + // cookie-av string and return to Step 1 of this algorithm. + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } - case mapTag: - var convert = mapToArray; + // 7. Process the attribute-name and attribute-value according to the + // requirements in the following subsections. (Notice that + // attributes with unrecognized attribute-names are ignored.) + const attributeNameLowercase = attributeName.toLowerCase() - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 + // If the attribute-name case-insensitively matches the string + // "Expires", the user agent MUST process the cookie-av as follows. + if (attributeNameLowercase === 'expires') { + // 1. Let the expiry-time be the result of parsing the attribute-value + // as cookie-date (see Section 5.1.1). + const expiryTime = new Date(attributeValue) + + // 2. If the attribute-value failed to parse as a cookie date, ignore + // the cookie-av. + + cookieAttributeList.expires = expiryTime + } else if (attributeNameLowercase === 'max-age') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 + // If the attribute-name case-insensitively matches the string "Max- + // Age", the user agent MUST process the cookie-av as follows. + + // 1. If the first character of the attribute-value is not a DIGIT or a + // "-" character, ignore the cookie-av. + const charCode = attributeValue.charCodeAt(0) + + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 2. If the remainder of attribute-value contains a non-DIGIT + // character, ignore the cookie-av. + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 3. Let delta-seconds be the attribute-value converted to an integer. + const deltaSeconds = Number(attributeValue) - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; + // 4. Let cookie-age-limit be the maximum age of the cookie (which + // SHOULD be 400 days or less, see Section 4.1.2.2). + + // 5. Set delta-seconds to the smaller of its present value and cookie- + // age-limit. + // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) + + // 6. If delta-seconds is less than or equal to zero (0), let expiry- + // time be the earliest representable date and time. Otherwise, let + // the expiry-time be the current date and time plus delta-seconds + // seconds. + // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds + + // 7. Append an attribute to the cookie-attribute-list with an + // attribute-name of Max-Age and an attribute-value of expiry-time. + cookieAttributeList.maxAge = deltaSeconds + } else if (attributeNameLowercase === 'domain') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 + // If the attribute-name case-insensitively matches the string "Domain", + // the user agent MUST process the cookie-av as follows. + + // 1. Let cookie-domain be the attribute-value. + let cookieDomain = attributeValue + + // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be + // cookie-domain without its leading %x2E ("."). + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1) + } + + // 3. Convert the cookie-domain to lower case. + cookieDomain = cookieDomain.toLowerCase() + + // 4. Append an attribute to the cookie-attribute-list with an + // attribute-name of Domain and an attribute-value of cookie-domain. + cookieAttributeList.domain = cookieDomain + } else if (attributeNameLowercase === 'path') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 + // If the attribute-name case-insensitively matches the string "Path", + // the user agent MUST process the cookie-av as follows. + + // 1. If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + let cookiePath = '' + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + // 1. Let cookie-path be the default-path. + cookiePath = '/' + } else { + // Otherwise: + + // 1. Let cookie-path be the attribute-value. + cookiePath = attributeValue + } + + // 2. Append an attribute to the cookie-attribute-list with an + // attribute-name of Path and an attribute-value of cookie-path. + cookieAttributeList.path = cookiePath + } else if (attributeNameLowercase === 'secure') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 + // If the attribute-name case-insensitively matches the string "Secure", + // the user agent MUST append an attribute to the cookie-attribute-list + // with an attribute-name of Secure and an empty attribute-value. + + cookieAttributeList.secure = true + } else if (attributeNameLowercase === 'httponly') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 + // If the attribute-name case-insensitively matches the string + // "HttpOnly", the user agent MUST append an attribute to the cookie- + // attribute-list with an attribute-name of HttpOnly and an empty + // attribute-value. + + cookieAttributeList.httpOnly = true + } else if (attributeNameLowercase === 'samesite') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 + // If the attribute-name case-insensitively matches the string + // "SameSite", the user agent MUST process the cookie-av as follows: - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; + // 1. Let enforcement be "Default". + let enforcement = 'Default' + + const attributeValueLowercase = attributeValue.toLowerCase() + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "None", set enforcement to "None". + if (attributeValueLowercase.includes('none')) { + enforcement = 'None' + } - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", set enforcement to "Strict". + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict' + } + + // 4. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", set enforcement to "Lax". + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax' + } + + // 5. Append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of + // enforcement. + cookieAttributeList.sameSite = enforcement + } else { + cookieAttributeList.unparsed ??= [] + + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`) } - return false; + + // 8. Return to Step 1 of this algorithm. + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) } -module.exports = equalByTag; +module.exports = { + parseSetCookie, + parseUnparsedAttributes +} /***/ }), -/***/ 25574: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var getAllKeys = __nccwpck_require__(39346); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; +/***/ 3834: +/***/ ((module) => { -/** Used for built-in method references. */ -var objectProto = Object.prototype; +"use strict"; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); + * @param {string} value + * @returns {boolean} + */ +function isCTLExcludingHtab (value) { + if (value.length === 0) { + return false } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; + for (const char of value) { + const code = char.charCodeAt(0) + + if ( + (code >= 0x00 || code <= 0x08) || + (code >= 0x0A || code <= 0x1F) || + code === 0x7F + ) { + return false } } - stack['delete'](object); - stack['delete'](other); - return result; } -module.exports = equalObjects; - - -/***/ }), - -/***/ 53795: -/***/ ((module) => { - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; +/** + CHAR = <any US-ASCII character (octets 0 - 127)> + token = 1*<any CHAR except CTLs or separators> + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + * @param {string} name + */ +function validateCookieName (name) { + for (const char of name) { + const code = char.charCodeAt(0) -module.exports = freeGlobal; + if ( + (code <= 0x20 || code > 0x7F) || + char === '(' || + char === ')' || + char === '>' || + char === '<' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' + ) { + throw new Error('Invalid cookie name') + } + } +} +/** + cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + ; US-ASCII characters excluding CTLs, + ; whitespace DQUOTE, comma, semicolon, + ; and backslash + * @param {string} value + */ +function validateCookieValue (value) { + for (const char of value) { + const code = char.charCodeAt(0) -/***/ }), + if ( + code < 0x21 || // exclude CTLs (0-31) + code === 0x22 || + code === 0x2C || + code === 0x3B || + code === 0x5C || + code > 0x7E // non-ascii + ) { + throw new Error('Invalid header value') + } + } +} -/***/ 39346: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * path-value = <any CHAR except CTLs or ";"> + * @param {string} path + */ +function validateCookiePath (path) { + for (const char of path) { + const code = char.charCodeAt(0) -var baseGetAllKeys = __nccwpck_require__(41260), - getSymbols = __nccwpck_require__(97045), - keys = __nccwpck_require__(34894); + if (code < 0x21 || char === ';') { + throw new Error('Invalid cookie path') + } + } +} /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. + * I have no idea why these values aren't allowed to be honest, + * but Deno tests these. - Khafra + * @param {string} domain */ -function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); +function validateCookieDomain (domain) { + if ( + domain.startsWith('-') || + domain.endsWith('.') || + domain.endsWith('-') + ) { + throw new Error('Invalid cookie domain') + } } -module.exports = getAllKeys; +/** + * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 + * @param {number|Date} date + IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT + ; fixed length/zone/capitalization subset of the format + ; see Section 3.3 of [RFC5322] + + day-name = %x4D.6F.6E ; "Mon", case-sensitive + / %x54.75.65 ; "Tue", case-sensitive + / %x57.65.64 ; "Wed", case-sensitive + / %x54.68.75 ; "Thu", case-sensitive + / %x46.72.69 ; "Fri", case-sensitive + / %x53.61.74 ; "Sat", case-sensitive + / %x53.75.6E ; "Sun", case-sensitive + date1 = day SP month SP year + ; e.g., 02 Jun 1982 + + day = 2DIGIT + month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + year = 4DIGIT + + GMT = %x47.4D.54 ; "GMT", case-sensitive + + time-of-day = hour ":" minute ":" second + ; 00:00:00 - 23:59:60 (leap second) + + hour = 2DIGIT + minute = 2DIGIT + second = 2DIGIT + */ +function toIMFDate (date) { + if (typeof date === 'number') { + date = new Date(date) + } + const days = [ + 'Sun', 'Mon', 'Tue', 'Wed', + 'Thu', 'Fri', 'Sat' + ] -/***/ }), + const months = [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' + ] -/***/ 50101: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const dayName = days[date.getUTCDay()] + const day = date.getUTCDate().toString().padStart(2, '0') + const month = months[date.getUTCMonth()] + const year = date.getUTCFullYear() + const hour = date.getUTCHours().toString().padStart(2, '0') + const minute = date.getUTCMinutes().toString().padStart(2, '0') + const second = date.getUTCSeconds().toString().padStart(2, '0') -var baseGetAllKeys = __nccwpck_require__(41260), - getSymbolsIn = __nccwpck_require__(52044), - keysIn = __nccwpck_require__(1089); + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT` +} /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. + max-age-av = "Max-Age=" non-zero-digit *DIGIT + ; In practice, both expires-av and max-age-av + ; are limited to dates representable by the + ; user agent. + * @param {number} maxAge */ -function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); +function validateCookieMaxAge (maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age') + } } -module.exports = getAllKeysIn; +/** + * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 + * @param {import('./index').Cookie} cookie + */ +function stringify (cookie) { + if (cookie.name.length === 0) { + return null + } + + validateCookieName(cookie.name) + validateCookieValue(cookie.value) + const out = [`${cookie.name}=${cookie.value}`] -/***/ }), + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true + } -/***/ 76246: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true + cookie.domain = null + cookie.path = '/' + } -var isKeyable = __nccwpck_require__(83961); + if (cookie.secure) { + out.push('Secure') + } -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} + if (cookie.httpOnly) { + out.push('HttpOnly') + } -module.exports = getMapData; + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge) + out.push(`Max-Age=${cookie.maxAge}`) + } + if (cookie.domain) { + validateCookieDomain(cookie.domain) + out.push(`Domain=${cookie.domain}`) + } -/***/ }), + if (cookie.path) { + validateCookiePath(cookie.path) + out.push(`Path=${cookie.path}`) + } -/***/ 55726: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`) + } -var isStrictComparable = __nccwpck_require__(56184), - keys = __nccwpck_require__(34894); + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`) + } -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed') + } - while (length--) { - var key = result[length], - value = object[key]; + const [key, ...value] = part.split('=') - result[length] = [key, value, isStrictComparable(value)]; + out.push(`${key.trim()}=${value.join('=')}`) } - return result; + + return out.join('; ') } -module.exports = getMatchData; +module.exports = { + isCTLExcludingHtab, + validateCookieName, + validateCookiePath, + validateCookieValue, + toIMFDate, + stringify +} /***/ }), -/***/ 16221: +/***/ 9136: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var baseIsNative = __nccwpck_require__(38635), - getValue = __nccwpck_require__(54830); +"use strict"; -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} -module.exports = getNative; +const net = __nccwpck_require__(9278) +const assert = __nccwpck_require__(2613) +const util = __nccwpck_require__(3440) +const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8707) +let tls // include tls conditionally since it is not always available -/***/ }), +// TODO: session re-use does not wait for the first +// connection to resolve the session and might therefore +// resolve the same servername multiple times even when +// re-use is enabled. -/***/ 93287: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +let SessionCache +// FIXME: remove workaround when the Node bug is fixed +// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 +if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return + } -var overArg = __nccwpck_require__(184); + const ref = this._sessionCache.get(key) + if (ref !== undefined && ref.deref() === undefined) { + this._sessionCache.delete(key) + } + }) + } -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); + get (sessionKey) { + const ref = this._sessionCache.get(sessionKey) + return ref ? ref.deref() : null + } -module.exports = getPrototype; + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + this._sessionCache.set(sessionKey, new WeakRef(session)) + this._sessionRegistry.register(session, sessionKey) + } + } +} else { + SessionCache = class SimpleSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + } -/***/ }), + get (sessionKey) { + return this._sessionCache.get(sessionKey) + } -/***/ 96416: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } -var Symbol = __nccwpck_require__(25344); + if (this._sessionCache.size >= this._maxCachedSessions) { + // remove the oldest session + const { value: oldestKey } = this._sessionCache.keys().next() + this._sessionCache.delete(oldestKey) + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + this._sessionCache.set(sessionKey, session) + } + } +} -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; +function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') + } -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; + const options = { path: socketPath, ...opts } + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions) + timeout = timeout == null ? 10e3 : timeout + allowH2 = allowH2 != null ? allowH2 : false + return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket + if (protocol === 'https:') { + if (!tls) { + tls = __nccwpck_require__(4756) + } + servername = servername || options.servername || util.getServerName(host) || null -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + const sessionKey = servername || hostname + const session = sessionCache.get(sessionKey) || null -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; + assert(sessionKey) - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; + socket = tls.connect({ + highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, // upgrade socket connection + port: port || 443, + host: hostname + }) + + socket + .on('session', function (session) { + // TODO (fix): Can a session become invalid once established? Don't think so? + sessionCache.set(sessionKey, session) + }) } else { - delete value[symToStringTag]; + assert(!httpSocket, 'httpSocket can only be sent on TLS update') + socket = net.connect({ + highWaterMark: 64 * 1024, // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }) + } + + // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay + socket.setKeepAlive(true, keepAliveInitialDelay) } + + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout) + + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + cancelTimeout() + + if (callback) { + const cb = callback + callback = null + cb(null, this) + } + }) + .on('error', function (err) { + cancelTimeout() + + if (callback) { + const cb = callback + callback = null + cb(err) + } + }) + + return socket } - return result; } -module.exports = getRawTag; +function setupTimeout (onConnectTimeout, timeout) { + if (!timeout) { + return () => {} + } + + let s1 = null + let s2 = null + const timeoutId = setTimeout(() => { + // setImmediate is added to make sure that we priotorise socket error events over timeouts + s1 = setImmediate(() => { + if (process.platform === 'win32') { + // Windows needs an extra setImmediate probably due to implementation differences in the socket logic + s2 = setImmediate(() => onConnectTimeout()) + } else { + onConnectTimeout() + } + }) + }, timeout) + return () => { + clearTimeout(timeoutId) + clearImmediate(s1) + clearImmediate(s2) + } +} + +function onConnectTimeout (socket) { + util.destroy(socket, new ConnectTimeoutError()) +} + +module.exports = buildConnector /***/ }), -/***/ 97045: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 735: +/***/ ((module) => { -var arrayFilter = __nccwpck_require__(33281), - stubArray = __nccwpck_require__(23509); +"use strict"; -/** Used for built-in method references. */ -var objectProto = Object.prototype; -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; +/** @type {Record<string, string | undefined>} */ +const headerNameLowerCasedRecord = {} + +// https://developer.mozilla.org/docs/Web/HTTP/Headers +const wellknownHeaderNames = [ + 'Accept', + 'Accept-Encoding', + 'Accept-Language', + 'Accept-Ranges', + 'Access-Control-Allow-Credentials', + 'Access-Control-Allow-Headers', + 'Access-Control-Allow-Methods', + 'Access-Control-Allow-Origin', + 'Access-Control-Expose-Headers', + 'Access-Control-Max-Age', + 'Access-Control-Request-Headers', + 'Access-Control-Request-Method', + 'Age', + 'Allow', + 'Alt-Svc', + 'Alt-Used', + 'Authorization', + 'Cache-Control', + 'Clear-Site-Data', + 'Connection', + 'Content-Disposition', + 'Content-Encoding', + 'Content-Language', + 'Content-Length', + 'Content-Location', + 'Content-Range', + 'Content-Security-Policy', + 'Content-Security-Policy-Report-Only', + 'Content-Type', + 'Cookie', + 'Cross-Origin-Embedder-Policy', + 'Cross-Origin-Opener-Policy', + 'Cross-Origin-Resource-Policy', + 'Date', + 'Device-Memory', + 'Downlink', + 'ECT', + 'ETag', + 'Expect', + 'Expect-CT', + 'Expires', + 'Forwarded', + 'From', + 'Host', + 'If-Match', + 'If-Modified-Since', + 'If-None-Match', + 'If-Range', + 'If-Unmodified-Since', + 'Keep-Alive', + 'Last-Modified', + 'Link', + 'Location', + 'Max-Forwards', + 'Origin', + 'Permissions-Policy', + 'Pragma', + 'Proxy-Authenticate', + 'Proxy-Authorization', + 'RTT', + 'Range', + 'Referer', + 'Referrer-Policy', + 'Refresh', + 'Retry-After', + 'Sec-WebSocket-Accept', + 'Sec-WebSocket-Extensions', + 'Sec-WebSocket-Key', + 'Sec-WebSocket-Protocol', + 'Sec-WebSocket-Version', + 'Server', + 'Server-Timing', + 'Service-Worker-Allowed', + 'Service-Worker-Navigation-Preload', + 'Set-Cookie', + 'SourceMap', + 'Strict-Transport-Security', + 'Supports-Loading-Mode', + 'TE', + 'Timing-Allow-Origin', + 'Trailer', + 'Transfer-Encoding', + 'Upgrade', + 'Upgrade-Insecure-Requests', + 'User-Agent', + 'Vary', + 'Via', + 'WWW-Authenticate', + 'X-Content-Type-Options', + 'X-DNS-Prefetch-Control', + 'X-Frame-Options', + 'X-Permitted-Cross-Domain-Policies', + 'X-Powered-By', + 'X-Requested-With', + 'X-XSS-Protection' +] -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; +for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i] + const lowerCasedKey = key.toLowerCase() + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = + lowerCasedKey +} -/** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); -}; +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(headerNameLowerCasedRecord, null) -module.exports = getSymbols; +module.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord +} /***/ }), -/***/ 52044: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 8707: +/***/ ((module) => { -var arrayPush = __nccwpck_require__(89592), - getPrototype = __nccwpck_require__(93287), - getSymbols = __nccwpck_require__(97045), - stubArray = __nccwpck_require__(23509); +"use strict"; -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; -/** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); +class UndiciError extends Error { + constructor (message) { + super(message) + this.name = 'UndiciError' + this.code = 'UND_ERR' } - return result; -}; - -module.exports = getSymbolsIn; - +} -/***/ }), +class ConnectTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ConnectTimeoutError) + this.name = 'ConnectTimeoutError' + this.message = message || 'Connect Timeout Error' + this.code = 'UND_ERR_CONNECT_TIMEOUT' + } +} -/***/ 41704: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +class HeadersTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersTimeoutError) + this.name = 'HeadersTimeoutError' + this.message = message || 'Headers Timeout Error' + this.code = 'UND_ERR_HEADERS_TIMEOUT' + } +} -var DataView = __nccwpck_require__(63830), - Map = __nccwpck_require__(16137), - Promise = __nccwpck_require__(50211), - Set = __nccwpck_require__(4994), - WeakMap = __nccwpck_require__(34105), - baseGetTag = __nccwpck_require__(77772), - toSource = __nccwpck_require__(69399); +class HeadersOverflowError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersOverflowError) + this.name = 'HeadersOverflowError' + this.message = message || 'Headers Overflow Error' + this.code = 'UND_ERR_HEADERS_OVERFLOW' + } +} -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - weakMapTag = '[object WeakMap]'; +class BodyTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, BodyTimeoutError) + this.name = 'BodyTimeoutError' + this.message = message || 'Body Timeout Error' + this.code = 'UND_ERR_BODY_TIMEOUT' + } +} -var dataViewTag = '[object DataView]'; +class ResponseStatusCodeError extends UndiciError { + constructor (message, statusCode, headers, body) { + super(message) + Error.captureStackTrace(this, ResponseStatusCodeError) + this.name = 'ResponseStatusCodeError' + this.message = message || 'Response Status Code Error' + this.code = 'UND_ERR_RESPONSE_STATUS_CODE' + this.body = body + this.status = statusCode + this.statusCode = statusCode + this.headers = headers + } +} -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); +class InvalidArgumentError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidArgumentError) + this.name = 'InvalidArgumentError' + this.message = message || 'Invalid Argument Error' + this.code = 'UND_ERR_INVALID_ARG' + } +} -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; - -// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; +class InvalidReturnValueError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidReturnValueError) + this.name = 'InvalidReturnValueError' + this.message = message || 'Invalid Return Value Error' + this.code = 'UND_ERR_INVALID_RETURN_VALUE' + } } -module.exports = getTag; +class RequestAbortedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestAbortedError) + this.name = 'AbortError' + this.message = message || 'Request aborted' + this.code = 'UND_ERR_ABORTED' + } +} +class InformationalError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InformationalError) + this.name = 'InformationalError' + this.message = message || 'Request information' + this.code = 'UND_ERR_INFO' + } +} -/***/ }), +class RequestContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestContentLengthMismatchError) + this.name = 'RequestContentLengthMismatchError' + this.message = message || 'Request body length does not match content-length header' + this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' + } +} -/***/ 54830: -/***/ ((module) => { +class ResponseContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseContentLengthMismatchError) + this.name = 'ResponseContentLengthMismatchError' + this.message = message || 'Response body length does not match content-length header' + this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH' + } +} -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; +class ClientDestroyedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientDestroyedError) + this.name = 'ClientDestroyedError' + this.message = message || 'The client is destroyed' + this.code = 'UND_ERR_DESTROYED' + } } -module.exports = getValue; +class ClientClosedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientClosedError) + this.name = 'ClientClosedError' + this.message = message || 'The client is closed' + this.code = 'UND_ERR_CLOSED' + } +} +class SocketError extends UndiciError { + constructor (message, socket) { + super(message) + Error.captureStackTrace(this, SocketError) + this.name = 'SocketError' + this.message = message || 'Socket error' + this.code = 'UND_ERR_SOCKET' + this.socket = socket + } +} -/***/ }), +class NotSupportedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'NotSupportedError' + this.message = message || 'Not supported error' + this.code = 'UND_ERR_NOT_SUPPORTED' + } +} -/***/ 74027: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +class BalancedPoolMissingUpstreamError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'MissingUpstreamError' + this.message = message || 'No upstream has been added to the BalancedPool' + this.code = 'UND_ERR_BPL_MISSING_UPSTREAM' + } +} -var castPath = __nccwpck_require__(70908), - isArguments = __nccwpck_require__(43891), - isArray = __nccwpck_require__(68635), - isIndex = __nccwpck_require__(77844), - isLength = __nccwpck_require__(32480), - toKey = __nccwpck_require__(12432); +class HTTPParserError extends Error { + constructor (message, code, data) { + super(message) + Error.captureStackTrace(this, HTTPParserError) + this.name = 'HTTPParserError' + this.code = code ? `HPE_${code}` : undefined + this.data = data ? data.toString() : undefined + } +} -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; +class ResponseExceededMaxSizeError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseExceededMaxSizeError) + this.name = 'ResponseExceededMaxSizeError' + this.message = message || 'Response content exceeded max size' + this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE' } - if (result || ++index != length) { - return result; +} + +class RequestRetryError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message) + Error.captureStackTrace(this, RequestRetryError) + this.name = 'RequestRetryError' + this.message = message || 'Request retry error' + this.code = 'UND_ERR_REQ_RETRY' + this.statusCode = code + this.data = data + this.headers = headers } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); } -module.exports = hasPath; +module.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError +} + + +/***/ }), + +/***/ 4655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -/***/ }), -/***/ 20443: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +const { + InvalidArgumentError, + NotSupportedError +} = __nccwpck_require__(8707) +const assert = __nccwpck_require__(2613) +const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(6443) +const util = __nccwpck_require__(3440) -var nativeCreate = __nccwpck_require__(24081); +// tokenRegExp and headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash + * Verifies that the given val is a valid HTTP token + * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} - -module.exports = hashClear; +const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/ +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ -/***/ }), +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +const invalidPathRegex = /[^\u0021-\u00ff]/ -/***/ 54570: -/***/ ((module) => { +const kHandler = Symbol('handler') -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} +const channels = {} -module.exports = hashDelete; +let extractBody +try { + const diagnosticsChannel = __nccwpck_require__(1637) + channels.create = diagnosticsChannel.channel('undici:request:create') + channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent') + channels.headers = diagnosticsChannel.channel('undici:request:headers') + channels.trailers = diagnosticsChannel.channel('undici:request:trailers') + channels.error = diagnosticsChannel.channel('undici:request:error') +} catch { + channels.create = { hasSubscribers: false } + channels.bodySent = { hasSubscribers: false } + channels.headers = { hasSubscribers: false } + channels.trailers = { hasSubscribers: false } + channels.error = { hasSubscribers: false } +} + +class Request { + constructor (origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string') + } else if ( + path[0] !== '/' && + !(path.startsWith('http://') || path.startsWith('https://')) && + method !== 'CONNECT' + ) { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash') + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path') + } -/***/ }), + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string') + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method') + } -/***/ 46331: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string') + } -var nativeCreate = __nccwpck_require__(24081); + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout') + } -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout') + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset') + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue') + } -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} + this.headersTimeout = headersTimeout -module.exports = hashGet; + this.bodyTimeout = bodyTimeout + this.throwOnError = throwOnError === true -/***/ }), + this.method = method -/***/ 10339: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.abort = null -var nativeCreate = __nccwpck_require__(24081); + if (body == null) { + this.body = null + } else if (util.isStream(body)) { + this.body = body -/** Used for built-in method references. */ -var objectProto = Object.prototype; + const rState = this.body._readableState + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy () { + util.destroy(this) + } + this.body.on('end', this.endHandler) + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + this.errorHandler = err => { + if (this.abort) { + this.abort(err) + } else { + this.error = err + } + } + this.body.on('error', this.errorHandler) + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null + } else if (typeof body === 'string') { + this.body = body.length ? Buffer.from(body) : null + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') + } -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} + this.completed = false -module.exports = hashHas; + this.aborted = false + this.upgrade = upgrade || null -/***/ }), + this.path = query ? util.buildURL(path, query) : path -/***/ 60910: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.origin = origin -var nativeCreate = __nccwpck_require__(24081); + this.idempotent = idempotent == null + ? method === 'HEAD' || method === 'GET' + : idempotent -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; + this.blocking = blocking == null ? false : blocking -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} + this.reset = reset == null ? null : reset -module.exports = hashSet; + this.host = null + this.contentLength = null -/***/ }), + this.contentType = null -/***/ 87042: -/***/ ((module) => { + this.headers = '' -/** Used for built-in method references. */ -var objectProto = Object.prototype; + // Only for H2 + this.expectContinue = expectContinue != null ? expectContinue : false -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(this, key, headers[key]) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } -/** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ -function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') + } - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; -} + if (!extractBody) { + extractBody = (__nccwpck_require__(8923).extractBody) + } -module.exports = initCloneArray; + const [bodyStream, contentType] = extractBody(body) + if (this.contentType == null) { + this.contentType = contentType + this.headers += `content-type: ${contentType}\r\n` + } + this.body = bodyStream.stream + this.contentLength = bodyStream.length + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type + this.headers += `content-type: ${body.type}\r\n` + } + util.validateHandler(handler, method, upgrade) -/***/ }), + this.servername = util.getServerName(this.host) -/***/ 79322: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this[kHandler] = handler -var cloneArrayBuffer = __nccwpck_require__(51940), - cloneDataView = __nccwpck_require__(81261), - cloneRegExp = __nccwpck_require__(16375), - cloneSymbol = __nccwpck_require__(31651), - cloneTypedArray = __nccwpck_require__(55584); - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }) + } + } - case boolTag: - case dateTag: - return new Ctor(+object); + onBodySent (chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk) + } catch (err) { + this.abort(err) + } + } + } - case dataViewTag: - return cloneDataView(object, isDeep); + onRequestSent () { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }) + } - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent() + } catch (err) { + this.abort(err) + } + } + } - case mapTag: - return new Ctor; + onConnect (abort) { + assert(!this.aborted) + assert(!this.completed) - case numberTag: - case stringTag: - return new Ctor(object); + if (this.error) { + abort(this.error) + } else { + this.abort = abort + return this[kHandler].onConnect(abort) + } + } - case regexpTag: - return cloneRegExp(object); + onHeaders (statusCode, headers, resume, statusText) { + assert(!this.aborted) + assert(!this.completed) - case setTag: - return new Ctor; + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }) + } - case symbolTag: - return cloneSymbol(object); + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText) + } catch (err) { + this.abort(err) + } } -} -module.exports = initCloneByTag; + onData (chunk) { + assert(!this.aborted) + assert(!this.completed) + try { + return this[kHandler].onData(chunk) + } catch (err) { + this.abort(err) + return false + } + } -/***/ }), - -/***/ 22258: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + onUpgrade (statusCode, headers, socket) { + assert(!this.aborted) + assert(!this.completed) -var baseCreate = __nccwpck_require__(60537), - getPrototype = __nccwpck_require__(93287), - isPrototype = __nccwpck_require__(49393); + return this[kHandler].onUpgrade(statusCode, headers, socket) + } -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; -} + onComplete (trailers) { + this.onFinally() -module.exports = initCloneObject; + assert(!this.aborted) + this.completed = true + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }) + } -/***/ }), + try { + return this[kHandler].onComplete(trailers) + } catch (err) { + // TODO (fix): This might be a bad idea? + this.onError(err) + } + } -/***/ 35949: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + onError (error) { + this.onFinally() -var Symbol = __nccwpck_require__(25344), - isArguments = __nccwpck_require__(43891), - isArray = __nccwpck_require__(68635); + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }) + } -/** Built-in value references. */ -var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + if (this.aborted) { + return + } + this.aborted = true -/** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ -function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); -} + return this[kHandler].onError(error) + } -module.exports = isFlattenable; + onFinally () { + if (this.errorHandler) { + this.body.off('error', this.errorHandler) + this.errorHandler = null + } + if (this.endHandler) { + this.body.off('end', this.endHandler) + this.endHandler = null + } + } -/***/ }), + // TODO: adjust to support H2 + addHeader (key, value) { + processHeader(this, key, value) + return this + } -/***/ 77844: -/***/ ((module) => { + static [kHTTP1BuildRequest] (origin, opts, handler) { + // TODO: Migrate header parsing here, to make Requests + // HTTP agnostic + return new Request(origin, opts, handler) + } -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; + static [kHTTP2BuildRequest] (origin, opts, handler) { + const headers = opts.headers + opts = { ...opts, headers: null } -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; + const request = new Request(origin, opts, handler) -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; + request.headers = {} - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request, headers[i], headers[i + 1], true) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(request, key, headers[key], true) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } -module.exports = isIndex; + return request + } + static [kHTTP2CopyHeaders] (raw) { + const rawHeaders = raw.split('\r\n') + const headers = {} -/***/ }), + for (const header of rawHeaders) { + const [key, value] = header.split(': ') -/***/ 42406: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (value == null || value.length === 0) continue -var eq = __nccwpck_require__(15379), - isArrayLike = __nccwpck_require__(28049), - isIndex = __nccwpck_require__(77844), - isObject = __nccwpck_require__(85670); + if (headers[key]) headers[key] += `,${value}` + else headers[key] = value + } -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; + return headers } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; } -module.exports = isIterateeCall; - - -/***/ }), +function processHeaderValue (key, val, skipAppend) { + if (val && typeof val === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`) + } -/***/ 76930: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + val = val != null ? `${val}` : '' -var isArray = __nccwpck_require__(68635), - isSymbol = __nccwpck_require__(97894); + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; + return skipAppend ? val : `${key}: ${val}\r\n` +} -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; +function processHeader (request, key, val, skipAppend = false) { + if (val && (typeof val === 'object' && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`) + } else if (val === undefined) { + return } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; + + if ( + request.host === null && + key.length === 4 && + key.toLowerCase() === 'host' + ) { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + // Consumed by Client + request.host = val + } else if ( + request.contentLength === null && + key.length === 14 && + key.toLowerCase() === 'content-length' + ) { + request.contentLength = parseInt(val, 10) + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header') + } + } else if ( + request.contentType === null && + key.length === 12 && + key.toLowerCase() === 'content-type' + ) { + request.contentType = val + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } else if ( + key.length === 17 && + key.toLowerCase() === 'transfer-encoding' + ) { + throw new InvalidArgumentError('invalid transfer-encoding header') + } else if ( + key.length === 10 && + key.toLowerCase() === 'connection' + ) { + const value = typeof val === 'string' ? val.toLowerCase() : null + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header') + } else if (value === 'close') { + request.reset = true + } + } else if ( + key.length === 10 && + key.toLowerCase() === 'keep-alive' + ) { + throw new InvalidArgumentError('invalid keep-alive header') + } else if ( + key.length === 7 && + key.toLowerCase() === 'upgrade' + ) { + throw new InvalidArgumentError('invalid upgrade header') + } else if ( + key.length === 6 && + key.toLowerCase() === 'expect' + ) { + throw new NotSupportedError('expect header not supported') + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key') + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}` + else request.headers[key] = processHeaderValue(key, val[i], skipAppend) + } else { + request.headers += processHeaderValue(key, val[i]) + } + } + } else { + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); } -module.exports = isKey; +module.exports = Request /***/ }), -/***/ 83961: +/***/ 6443: /***/ ((module) => { -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} +module.exports = { + kClose: Symbol('close'), + kDestroy: Symbol('destroy'), + kDispatch: Symbol('dispatch'), + kUrl: Symbol('url'), + kWriting: Symbol('writing'), + kResuming: Symbol('resuming'), + kQueue: Symbol('queue'), + kConnect: Symbol('connect'), + kConnecting: Symbol('connecting'), + kHeadersList: Symbol('headers list'), + kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: Symbol('keep alive timeout'), + kKeepAlive: Symbol('keep alive'), + kHeadersTimeout: Symbol('headers timeout'), + kBodyTimeout: Symbol('body timeout'), + kServerName: Symbol('server name'), + kLocalAddress: Symbol('local address'), + kHost: Symbol('host'), + kNoRef: Symbol('no ref'), + kBodyUsed: Symbol('used'), + kRunning: Symbol('running'), + kBlocking: Symbol('blocking'), + kPending: Symbol('pending'), + kSize: Symbol('size'), + kBusy: Symbol('busy'), + kQueued: Symbol('queued'), + kFree: Symbol('free'), + kConnected: Symbol('connected'), + kClosed: Symbol('closed'), + kNeedDrain: Symbol('need drain'), + kReset: Symbol('reset'), + kDestroyed: Symbol.for('nodejs.stream.destroyed'), + kMaxHeadersSize: Symbol('max headers size'), + kRunningIdx: Symbol('running index'), + kPendingIdx: Symbol('pending index'), + kError: Symbol('error'), + kClients: Symbol('clients'), + kClient: Symbol('client'), + kParser: Symbol('parser'), + kOnDestroyed: Symbol('destroy callbacks'), + kPipelining: Symbol('pipelining'), + kSocket: Symbol('socket'), + kHostHeader: Symbol('host header'), + kConnector: Symbol('connector'), + kStrictContentLength: Symbol('strict content length'), + kMaxRedirections: Symbol('maxRedirections'), + kMaxRequests: Symbol('maxRequestsPerClient'), + kProxy: Symbol('proxy agent options'), + kCounter: Symbol('socket request counter'), + kInterceptors: Symbol('dispatch interceptors'), + kMaxResponseSize: Symbol('max response size'), + kHTTP2Session: Symbol('http2Session'), + kHTTP2SessionState: Symbol('http2Session state'), + kHTTP2BuildRequest: Symbol('http2 build request'), + kHTTP1BuildRequest: Symbol('http1 build request'), + kHTTP2CopyHeaders: Symbol('http2 copy headers'), + kHTTPConnVersion: Symbol('http connection version'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable') +} + + +/***/ }), + +/***/ 3440: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = isKeyable; +"use strict"; -/***/ }), +const assert = __nccwpck_require__(2613) +const { kDestroyed, kBodyUsed } = __nccwpck_require__(6443) +const { IncomingMessage } = __nccwpck_require__(8611) +const stream = __nccwpck_require__(2203) +const net = __nccwpck_require__(9278) +const { InvalidArgumentError } = __nccwpck_require__(8707) +const { Blob } = __nccwpck_require__(181) +const nodeUtil = __nccwpck_require__(9023) +const { stringify } = __nccwpck_require__(3480) +const { headerNameLowerCasedRecord } = __nccwpck_require__(735) -/***/ 24255: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) -var coreJsData = __nccwpck_require__(3578); +function nop () {} -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); +function isStream (obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function' +} -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); +// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) +function isBlobLike (object) { + return (Blob && object instanceof Blob) || ( + object && + typeof object === 'object' && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + /^(Blob|File)$/.test(object[Symbol.toStringTag]) + ) } -module.exports = isMasked; +function buildURL (url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".') + } + const stringified = stringify(queryParams) -/***/ }), + if (stringified) { + url += '?' + stringified + } -/***/ 49393: -/***/ ((module) => { + return url +} -/** Used for built-in method references. */ -var objectProto = Object.prototype; +function parseURL (url) { + if (typeof url === 'string') { + url = new URL(url) -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } - return value === proto; -} + return url + } -module.exports = isPrototype; + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.') + } + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } -/***/ }), + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.') + } -/***/ 56184: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.') + } -var isObject = __nccwpck_require__(85670); + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.') + } -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.') + } -module.exports = isStrictComparable; + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.') + } + const port = url.port != null + ? url.port + : (url.protocol === 'https:' ? 443 : 80) + let origin = url.origin != null + ? url.origin + : `${url.protocol}//${url.hostname}:${port}` + let path = url.path != null + ? url.path + : `${url.pathname || ''}${url.search || ''}` -/***/ }), + if (origin.endsWith('/')) { + origin = origin.substring(0, origin.length - 1) + } -/***/ 60527: -/***/ ((module) => { + if (path && !path.startsWith('/')) { + path = `/${path}` + } + // new URL(path, origin) is unsafe when `path` contains an absolute URL + // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: + // If first parameter is a relative URL, second param is required, and will be used as the base URL. + // If first parameter is an absolute URL, a given second param will be ignored. + url = new URL(origin + path) + } -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; + return url } -module.exports = listCacheClear; - +function parseOrigin (url) { + url = parseURL(url) -/***/ }), + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url') + } -/***/ 44877: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return url +} -var assocIndexOf = __nccwpck_require__(75744); +function getHostname (host) { + if (host[0] === '[') { + const idx = host.indexOf(']') -/** Used for built-in method references. */ -var arrayProto = Array.prototype; + assert(idx !== -1) + return host.substring(1, idx) + } -/** Built-in value references. */ -var splice = arrayProto.splice; + const idx = host.indexOf(':') + if (idx === -1) return host -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + return host.substring(0, idx) +} - if (index < 0) { - return false; +// IP addresses are not valid server names per RFC6066 +// > Currently, the only server names supported are DNS hostnames +function getServerName (host) { + if (!host) { + return null } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); + + assert.strictEqual(typeof host, 'string') + + const servername = getHostname(host) + if (net.isIP(servername)) { + return '' } - --this.size; - return true; + + return servername } -module.exports = listCacheDelete; +function deepClone (obj) { + return JSON.parse(JSON.stringify(obj)) +} +function isAsyncIterable (obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') +} -/***/ }), +function isIterable (obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) +} -/***/ 30765: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function bodyLength (body) { + if (body == null) { + return 0 + } else if (isStream(body)) { + const state = body._readableState + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) + ? state.length + : null + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null + } else if (isBuffer(body)) { + return body.byteLength + } -var assocIndexOf = __nccwpck_require__(75744); + return null +} -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); +function isDestroyed (stream) { + return !stream || !!(stream.destroyed || stream[kDestroyed]) +} - return index < 0 ? undefined : data[index][1]; +function isReadableAborted (stream) { + const state = stream && stream._readableState + return isDestroyed(stream) && state && !state.endEmitted } -module.exports = listCacheGet; +function destroy (stream, err) { + if (stream == null || !isStream(stream) || isDestroyed(stream)) { + return + } + if (typeof stream.destroy === 'function') { + if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { + // See: https://github.com/nodejs/node/pull/38505/files + stream.socket = null + } -/***/ }), + stream.destroy(err) + } else if (err) { + process.nextTick((stream, err) => { + stream.emit('error', err) + }, stream, err) + } -/***/ 97220: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (stream.destroyed !== true) { + stream[kDestroyed] = true + } +} -var assocIndexOf = __nccwpck_require__(75744); +const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/ +function parseKeepAliveTimeout (val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR) + return m ? parseInt(m[1], 10) * 1000 : null +} /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + * Retrieves a header name and returns its lowercase value. + * @param {string | Buffer} value Header name + * @returns {string} */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; +function headerNameToString (value) { + return headerNameLowerCasedRecord[value] || value.toLowerCase() } -module.exports = listCacheHas; - - -/***/ }), +function parseHeaders (headers, obj = {}) { + // For H2 support + if (!Array.isArray(headers)) return headers -/***/ 74558: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase() + let val = obj[key] -var assocIndexOf = __nccwpck_require__(75744); + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1].map(x => x.toString('utf8')) + } else { + obj[key] = headers[i + 1].toString('utf8') + } + } else { + if (!Array.isArray(val)) { + val = [val] + obj[key] = val + } + val.push(headers[i + 1].toString('utf8')) + } + } -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; + // See https://github.com/nodejs/node/pull/46528 + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1') } - return this; -} -module.exports = listCacheSet; + return obj +} +function parseRawHeaders (headers) { + const ret = [] + let hasContentLength = false + let contentDispositionIdx = -1 -/***/ }), + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString() + const val = headers[n + 1].toString('utf8') -/***/ 40497: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + ret.push(key, val) + hasContentLength = true + } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = ret.push(key, val) - 1 + } else { + ret.push(key, val) + } + } -var Hash = __nccwpck_require__(68184), - ListCache = __nccwpck_require__(46242), - Map = __nccwpck_require__(16137); + // See https://github.com/nodejs/node/pull/46528 + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1') + } -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; + return ret } -module.exports = mapCacheClear; - - -/***/ }), +function isBuffer (buffer) { + // See, https://github.com/mcollina/undici/pull/319 + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) +} -/***/ 20756: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function validateHandler (handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } -var getMapData = __nccwpck_require__(76246); + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method') + } -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } -module.exports = mapCacheDelete; + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { + throw new InvalidArgumentError('invalid onBodySent method') + } + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method') + } + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method') + } -/***/ }), + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method') + } -/***/ 12886: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method') + } + } +} -var getMapData = __nccwpck_require__(76246); +// A body is disturbed if it has been read from and it cannot +// be re-used without losing state or data. +function isDisturbed (body) { + return !!(body && ( + stream.isDisturbed + ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? + : body[kBodyUsed] || + body.readableDidRead || + (body._readableState && body._readableState.dataEmitted) || + isReadableAborted(body) + )) +} -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); +function isErrored (body) { + return !!(body && ( + stream.isErrored + ? stream.isErrored(body) + : /state: 'errored'/.test(nodeUtil.inspect(body) + ))) } -module.exports = mapCacheGet; +function isReadable (body) { + return !!(body && ( + stream.isReadable + ? stream.isReadable(body) + : /state: 'readable'/.test(nodeUtil.inspect(body) + ))) +} +function getSocketInfo (socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + } +} -/***/ }), +async function * convertIterableToBuffer (iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) + } +} -/***/ 18510: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +let ReadableStream +function ReadableStreamFrom (iterable) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } -var getMapData = __nccwpck_require__(76246); + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)) + } -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); + let iterator + return new ReadableStream( + { + async start () { + iterator = iterable[Symbol.asyncIterator]() + }, + async pull (controller) { + const { done, value } = await iterator.next() + if (done) { + queueMicrotask(() => { + controller.close() + }) + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value) + controller.enqueue(new Uint8Array(buf)) + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + } + }, + 0 + ) } -module.exports = mapCacheHas; - +// The chunk should be a FormData instance and contains +// all the required methods. +function isFormDataLike (object) { + return ( + object && + typeof object === 'object' && + typeof object.append === 'function' && + typeof object.delete === 'function' && + typeof object.get === 'function' && + typeof object.getAll === 'function' && + typeof object.has === 'function' && + typeof object.set === 'function' && + object[Symbol.toStringTag] === 'FormData' + ) +} -/***/ }), +function throwIfAborted (signal) { + if (!signal) { return } + if (typeof signal.throwIfAborted === 'function') { + signal.throwIfAborted() + } else { + if (signal.aborted) { + // DOMException not available < v17.0.0 + const err = new Error('The operation was aborted') + err.name = 'AbortError' + throw err + } + } +} -/***/ 10210: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function addAbortListener (signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { once: true }) + return () => signal.removeEventListener('abort', listener) + } + signal.addListener('abort', listener) + return () => signal.removeListener('abort', listener) +} -var getMapData = __nccwpck_require__(76246); +const hasToWellFormed = !!String.prototype.toWellFormed /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. + * @param {string} val */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; +function toUSVString (val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed() + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val) + } - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; + return `${val}` } -module.exports = mapCacheSet; +// Parsed accordingly to RFC 9110 +// https://www.rfc-editor.org/rfc/rfc9110#field.content-range +function parseRangeHeader (range) { + if (range == null || range === '') return { start: 0, end: null, size: null } + const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } + : null +} -/***/ }), +const kEnumerableProperty = Object.create(null) +kEnumerableProperty.enumerable = true -/***/ 27916: -/***/ ((module) => { +module.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + headerNameToString, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + parseRangeHeader, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +} + + +/***/ }), + +/***/ 1: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); +"use strict"; - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} -module.exports = mapToArray; +const Dispatcher = __nccwpck_require__(992) +const { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError +} = __nccwpck_require__(8707) +const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(6443) + +const kDestroyed = Symbol('destroyed') +const kClosed = Symbol('closed') +const kOnDestroyed = Symbol('onDestroyed') +const kOnClosed = Symbol('onClosed') +const kInterceptedDispatch = Symbol('Intercepted Dispatch') + +class DispatcherBase extends Dispatcher { + constructor () { + super() + this[kDestroyed] = false + this[kOnDestroyed] = null + this[kClosed] = false + this[kOnClosed] = [] + } -/***/ }), + get destroyed () { + return this[kDestroyed] + } -/***/ 25654: -/***/ ((module) => { + get closed () { + return this[kClosed] + } -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; + get interceptors () { + return this[kInterceptors] + } + + set interceptors (newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i] + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function') + } + } } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} -module.exports = matchesStrictComparable; + this[kInterceptors] = newInterceptors + } + close (callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } -/***/ }), + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } -/***/ 91941: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)) + return + } -var memoize = __nccwpck_require__(80968); + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } -/** Used as the maximum memoize cache size. */ -var MAX_MEMOIZE_SIZE = 500; + this[kClosed] = true + this[kOnClosed].push(callback) -/** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ -function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); + const onClosed = () => { + const callbacks = this[kOnClosed] + this[kOnClosed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } } - return key; - }); - var cache = result.cache; - return result; -} + // Should not error. + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed) + }) + } -module.exports = memoizeCapped; + destroy (err, callback) { + if (typeof err === 'function') { + callback = err + err = null + } + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.destroy(err, (err, data) => { + return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) + }) + }) + } -/***/ }), + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } -/***/ 24081: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } -var getNative = __nccwpck_require__(16221); + if (!err) { + err = new ClientDestroyedError() + } -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); + this[kDestroyed] = true + this[kOnDestroyed] = this[kOnDestroyed] || [] + this[kOnDestroyed].push(callback) -module.exports = nativeCreate; + const onDestroyed = () => { + const callbacks = this[kOnDestroyed] + this[kOnDestroyed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + // Should not error. + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed) + }) + } -/***/ }), + [kInterceptedDispatch] (opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch] + return this[kDispatch](opts, handler) + } -/***/ 59192: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + let dispatch = this[kDispatch].bind(this) + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch) + } + this[kInterceptedDispatch] = dispatch + return dispatch(opts, handler) + } -var overArg = __nccwpck_require__(184); + dispatch (opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.') + } -module.exports = nativeKeys; + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError() + } + if (this[kClosed]) { + throw new ClientClosedError() + } -/***/ }), + return this[kInterceptedDispatch](opts, handler) + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } -/***/ 29624: -/***/ ((module) => { + handler.onError(err) -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); + return false } } - return result; } -module.exports = nativeKeysIn; +module.exports = DispatcherBase /***/ }), -/***/ 19434: -/***/ ((module, exports, __nccwpck_require__) => { - -/* module decorator */ module = __nccwpck_require__.nmd(module); -var freeGlobal = __nccwpck_require__(53795); - -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; +/***/ 992: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** Detect free variable `module`. */ -var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; +"use strict"; -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; +const EventEmitter = __nccwpck_require__(4434) -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; +class Dispatcher extends EventEmitter { + dispatch () { + throw new Error('not implemented') + } - if (types) { - return types; - } + close () { + throw new Error('not implemented') + } - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); + destroy () { + throw new Error('not implemented') + } +} -module.exports = nodeUtil; +module.exports = Dispatcher /***/ }), -/***/ 79230: -/***/ ((module) => { +/***/ 8923: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** Used for built-in method references. */ -var objectProto = Object.prototype; +"use strict"; -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); +const Busboy = __nccwpck_require__(9581) +const util = __nccwpck_require__(3440) +const { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody +} = __nccwpck_require__(5523) +const { FormData } = __nccwpck_require__(3073) +const { kState } = __nccwpck_require__(9710) +const { webidl } = __nccwpck_require__(4222) +const { DOMException, structuredClone } = __nccwpck_require__(7326) +const { Blob, File: NativeFile } = __nccwpck_require__(181) +const { kBodyUsed } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { isErrored } = __nccwpck_require__(3440) +const { isUint8Array, isArrayBuffer } = __nccwpck_require__(8253) +const { File: UndiciFile } = __nccwpck_require__(3041) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) + +let random +try { + const crypto = __nccwpck_require__(7598) + random = (max) => crypto.randomInt(0, max) +} catch { + random = (max) => Math.floor(Math.random(max)) } -module.exports = objectToString; - - -/***/ }), - -/***/ 184: -/***/ ((module) => { +let ReadableStream = globalThis.ReadableStream -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile +const textEncoder = new TextEncoder() +const textDecoder = new TextDecoder() -module.exports = overArg; +// https://fetch.spec.whatwg.org/#concept-bodyinit-extract +function extractBody (object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } + // 1. Let stream be null. + let stream = null -/***/ }), + // 2. If object is a ReadableStream object, then set stream to object. + if (object instanceof ReadableStream) { + stream = object + } else if (isBlobLike(object)) { + // 3. Otherwise, if object is a Blob object, set stream to the + // result of running object’s get stream. + stream = object.stream() + } else { + // 4. Otherwise, set stream to a new ReadableStream object, and set + // up stream. + stream = new ReadableStream({ + async pull (controller) { + controller.enqueue( + typeof source === 'string' ? textEncoder.encode(source) : source + ) + queueMicrotask(() => readableStreamClose(controller)) + }, + start () {}, + type: undefined + }) + } -/***/ 60111: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 5. Assert: stream is a ReadableStream object. + assert(isReadableStreamLike(stream)) + + // 6. Let action be null. + let action = null + + // 7. Let source be null. + let source = null + + // 8. Let length be null. + let length = null + + // 9. Let type be null. + let type = null + + // 10. Switch on object: + if (typeof object === 'string') { + // Set source to the UTF-8 encoding of object. + // Note: setting source to a Uint8Array here breaks some mocking assumptions. + source = object + + // Set type to `text/plain;charset=UTF-8`. + type = 'text/plain;charset=UTF-8' + } else if (object instanceof URLSearchParams) { + // URLSearchParams + + // spec says to run application/x-www-form-urlencoded on body.list + // this is implemented in Node.js as apart of an URLSearchParams instance toString method + // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 + // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 + + // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. + source = object.toString() + + // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. + type = 'application/x-www-form-urlencoded;charset=UTF-8' + } else if (isArrayBuffer(object)) { + // BufferSource/ArrayBuffer + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.slice()) + } else if (ArrayBuffer.isView(object)) { + // BufferSource/ArrayBufferView + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)) + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}` + const prefix = `--${boundary}\r\nContent-Disposition: form-data` + + /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */ + const escape = (str) => + str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22') + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n') + + // Set action to this step: run the multipart/form-data + // encoding algorithm, with object’s entry list and UTF-8. + // - This ensures that the body is immutable and can't be changed afterwords + // - That the content-length is calculated in advance. + // - And that all parts are pre-encoded and ready to be sent. + + const blobParts = [] + const rn = new Uint8Array([13, 10]) // '\r\n' + length = 0 + let hasUnknownSizeValue = false + + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk = textEncoder.encode(prefix + + `; name="${escape(normalizeLinefeeds(name))}"` + + `\r\n\r\n${normalizeLinefeeds(value)}\r\n`) + blobParts.push(chunk) + length += chunk.byteLength + } else { + const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' + + `Content-Type: ${ + value.type || 'application/octet-stream' + }\r\n\r\n`) + blobParts.push(chunk, value, rn) + if (typeof value.size === 'number') { + length += chunk.byteLength + value.size + rn.byteLength + } else { + hasUnknownSizeValue = true + } + } + } -var apply = __nccwpck_require__(52743); + const chunk = textEncoder.encode(`--${boundary}--`) + blobParts.push(chunk) + length += chunk.byteLength + if (hasUnknownSizeValue) { + length = null + } -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; + // Set source to object. + source = object -/** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ -function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; + action = async function * () { + for (const part of blobParts) { + if (part.stream) { + yield * part.stream() + } else { + yield part + } + } } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; -} -module.exports = overRest; + // Set type to `multipart/form-data; boundary=`, + // followed by the multipart/form-data boundary string generated + // by the multipart/form-data encoding algorithm. + type = 'multipart/form-data; boundary=' + boundary + } else if (isBlobLike(object)) { + // Blob + // Set source to object. + source = object -/***/ }), + // Set length to object’s size. + length = object.size -/***/ 95173: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // If object’s type attribute is not the empty byte sequence, set + // type to its value. + if (object.type) { + type = object.type + } + } else if (typeof object[Symbol.asyncIterator] === 'function') { + // If keepalive is true, then throw a TypeError. + if (keepalive) { + throw new TypeError('keepalive') + } + + // If object is disturbed or locked, then throw a TypeError. + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + 'Response body object should not be disturbed or locked' + ) + } -var freeGlobal = __nccwpck_require__(53795); + stream = + object instanceof ReadableStream ? object : ReadableStreamFrom(object) + } -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + // 11. If source is a byte sequence, then set action to a + // step that returns source and length to source’s length. + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source) + } -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + // 12. If action is non-null, then run these steps in in parallel: + if (action != null) { + // Run action. + let iterator + stream = new ReadableStream({ + async start () { + iterator = action(object)[Symbol.asyncIterator]() + }, + async pull (controller) { + const { value, done } = await iterator.next() + if (done) { + // When running action is done, close stream. + queueMicrotask(() => { + controller.close() + }) + } else { + // Whenever one or more bytes are available and stream is not errored, + // enqueue a Uint8Array wrapping an ArrayBuffer containing the available + // bytes into stream. + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)) + } + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + }, + type: undefined + }) + } -module.exports = root; + // 13. Let body be a body whose stream is stream, source is source, + // and length is length. + const body = { stream, source, length } + // 14. Return (body, type). + return [body, type] +} -/***/ }), +// https://fetch.spec.whatwg.org/#bodyinit-safely-extract +function safelyExtractBody (object, keepalive = false) { + if (!ReadableStream) { + // istanbul ignore next + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } -/***/ 28551: -/***/ ((module) => { + // To safely extract a body and a `Content-Type` value from + // a byte sequence or BodyInit object object, run these steps: -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; + // 1. If object is a ReadableStream object, then: + if (object instanceof ReadableStream) { + // Assert: object is neither disturbed nor locked. + // istanbul ignore next + assert(!util.isDisturbed(object), 'The body has already been consumed.') + // istanbul ignore next + assert(!object.locked, 'The stream is locked.') + } -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; + // 2. Return the results of extracting object. + return extractBody(object, keepalive) } -module.exports = setCacheAdd; +function cloneBody (body) { + // To clone a body body, run these steps: + // https://fetch.spec.whatwg.org/#concept-body-clone -/***/ }), + // 1. Let « out1, out2 » be the result of teeing body’s stream. + const [out1, out2] = body.stream.tee() + const out2Clone = structuredClone(out2, { transfer: [out2] }) + // This, for whatever reasons, unrefs out2Clone which allows + // the process to exit by itself. + const [, finalClone] = out2Clone.tee() -/***/ 87850: -/***/ ((module) => { + // 2. Set body’s stream to out1. + body.stream = out1 -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); + // 3. Return a body whose stream is out2 and other members are copied from body. + return { + stream: finalClone, + length: body.length, + source: body.source + } } -module.exports = setCacheHas; +async function * consumeBody (body) { + if (body) { + if (isUint8Array(body)) { + yield body + } else { + const stream = body.stream + if (util.isDisturbed(stream)) { + throw new TypeError('The body has already been consumed.') + } -/***/ }), + if (stream.locked) { + throw new TypeError('The stream is locked.') + } -/***/ 93126: -/***/ ((module) => { + // Compat. + stream[kBodyUsed] = true -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); + yield * stream + } + } +} - set.forEach(function(value) { - result[++index] = value; - }); - return result; +function throwIfAborted (state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError') + } } -module.exports = setToArray; +function bodyMixinMethods (instance) { + const methods = { + blob () { + // The blob() method steps are to return the result of + // running consume body with this and the following step + // given a byte sequence bytes: return a Blob whose + // contents are bytes and whose type attribute is this’s + // MIME type. + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this) + if (mimeType === 'failure') { + mimeType = '' + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType) + } -/***/ }), + // Return a Blob whose contents are bytes and type attribute + // is mimeType. + return new Blob([bytes], { type: mimeType }) + }, instance) + }, -/***/ 41736: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + arrayBuffer () { + // The arrayBuffer() method steps are to return the result + // of running consume body with this and the following step + // given a byte sequence bytes: return a new ArrayBuffer + // whose contents are bytes. + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer + }, instance) + }, -var baseSetToString = __nccwpck_require__(1557), - shortOut = __nccwpck_require__(95032); + text () { + // The text() method steps are to return the result of running + // consume body with this and UTF-8 decode. + return specConsumeBody(this, utf8DecodeBytes, instance) + }, -/** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var setToString = shortOut(baseSetToString); + json () { + // The json() method steps are to return the result of running + // consume body with this and parse JSON from bytes. + return specConsumeBody(this, parseJSONFromBytes, instance) + }, -module.exports = setToString; + async formData () { + webidl.brandCheck(this, instance) + throwIfAborted(this[kState]) -/***/ }), + const contentType = this.headers.get('Content-Type') -/***/ 95032: -/***/ ((module) => { + // If mimeType’s essence is "multipart/form-data", then: + if (/multipart\/form-data/.test(contentType)) { + const headers = {} + for (const [key, value] of this.headers) headers[key.toLowerCase()] = value -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 800, - HOT_SPAN = 16; + const responseFormData = new FormData() -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeNow = Date.now; + let busboy -/** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ -function shortOut(func) { - var count = 0, - lastCalled = 0; + try { + busboy = new Busboy({ + headers, + preservePath: true + }) + } catch (err) { + throw new DOMException(`${err}`, 'AbortError') + } - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); + busboy.on('field', (name, value) => { + responseFormData.append(name, value) + }) + busboy.on('file', (name, value, filename, encoding, mimeType) => { + const chunks = [] - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; -} + if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { + let base64chunk = '' -module.exports = shortOut; + value.on('data', (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, '') + const end = base64chunk.length - base64chunk.length % 4 + chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')) -/***/ }), + base64chunk = base64chunk.slice(end) + }) + value.on('end', () => { + chunks.push(Buffer.from(base64chunk, 'base64')) + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } else { + value.on('data', (chunk) => { + chunks.push(chunk) + }) + value.on('end', () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } + }) -/***/ 25172: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const busboyResolve = new Promise((resolve, reject) => { + busboy.on('finish', resolve) + busboy.on('error', (err) => reject(new TypeError(err))) + }) -var ListCache = __nccwpck_require__(46242); + if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk) + busboy.end() + await busboyResolve -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} + return responseFormData + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: -module.exports = stackClear; + // 1. Let entries be the result of parsing bytes. + let entries + try { + let text = '' + // application/x-www-form-urlencoded parser will keep the BOM. + // https://url.spec.whatwg.org/#concept-urlencoded-parser + // Note that streaming decoder is stateful and cannot be reused + const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }) + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') + } + text += streamingDecoder.decode(chunk, { stream: true }) + } + text += streamingDecoder.decode() + entries = new URLSearchParams(text) + } catch (err) { + // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. + // 2. If entries is failure, then throw a TypeError. + throw Object.assign(new TypeError(), { cause: err }) + } + // 3. Return a new FormData object whose entries are entries. + const formData = new FormData() + for (const [name, value] of entries) { + formData.append(name, value) + } + return formData + } else { + // Wait a tick before checking if the request has been aborted. + // Otherwise, a TypeError can be thrown when an AbortError should. + await Promise.resolve() -/***/ }), + throwIfAborted(this[kState]) -/***/ 25489: -/***/ ((module) => { + // Otherwise, throw a TypeError. + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: 'Could not parse content as FormData.' + }) + } + } + } -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); + return methods +} - this.size = data.size; - return result; +function mixinBody (prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)) } -module.exports = stackDelete; +/** + * @see https://fetch.spec.whatwg.org/#concept-body-consume-body + * @param {Response|Request} object + * @param {(value: unknown) => unknown} convertBytesToJSValue + * @param {Response|Request} instance + */ +async function specConsumeBody (object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance) + throwIfAborted(object[kState]) -/***/ }), + // 1. If object is unusable, then return a promise rejected + // with a TypeError. + if (bodyUnusable(object[kState].body)) { + throw new TypeError('Body is unusable') + } -/***/ 42362: -/***/ ((module) => { + // 2. Let promise be a new promise. + const promise = createDeferredPromise() -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} + // 3. Let errorSteps given error be to reject promise with error. + const errorSteps = (error) => promise.reject(error) -module.exports = stackGet; + // 4. Let successSteps given a byte sequence data be to resolve + // promise with the result of running convertBytesToJSValue + // with data. If that threw an exception, then run errorSteps + // with that exception. + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)) + } catch (e) { + errorSteps(e) + } + } + // 5. If object’s body is null, then run successSteps with an + // empty byte sequence. + if (object[kState].body == null) { + successSteps(new Uint8Array()) + return promise.promise + } -/***/ }), + // 6. Otherwise, fully read object’s body given successSteps, + // errorSteps, and object’s relevant global object. + await fullyReadBody(object[kState].body, successSteps, errorSteps) -/***/ 99736: -/***/ ((module) => { + // 7. Return promise. + return promise.promise +} -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); +// https://fetch.spec.whatwg.org/#body-unusable +function bodyUnusable (body) { + // An object including the Body interface mixin is + // said to be unusable if its body is non-null and + // its body’s stream is disturbed or locked. + return body != null && (body.stream.locked || util.isDisturbed(body.stream)) } -module.exports = stackHas; +/** + * @see https://encoding.spec.whatwg.org/#utf-8-decode + * @param {Buffer} buffer + */ +function utf8DecodeBytes (buffer) { + if (buffer.length === 0) { + return '' + } + // 1. Let buffer be the result of peeking three bytes from + // ioQueue, converted to a byte sequence. -/***/ }), + // 2. If buffer is 0xEF 0xBB 0xBF, then read three + // bytes from ioQueue. (Do nothing with those bytes.) + if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + buffer = buffer.subarray(3) + } -/***/ 83463: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 3. Process a queue with an instance of UTF-8’s + // decoder, ioQueue, output, and "replacement". + const output = textDecoder.decode(buffer) -var ListCache = __nccwpck_require__(46242), - Map = __nccwpck_require__(16137), - MapCache = __nccwpck_require__(8108); + // 4. Return output. + return output +} -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; +/** + * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value + * @param {Uint8Array} bytes + */ +function parseJSONFromBytes (bytes) { + return JSON.parse(utf8DecodeBytes(bytes)) +} /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. + * @see https://fetch.spec.whatwg.org/#concept-body-mime-type + * @param {import('./response').Response|import('./request').Request} object */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); +function bodyMimeType (object) { + const { headersList } = object[kState] + const contentType = headersList.get('content-type') + + if (contentType === null) { + return 'failure' } - data.set(key, value); - this.size = data.size; - return this; + + return parseMIMEType(contentType) } -module.exports = stackSet; +module.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody +} /***/ }), -/***/ 3665: +/***/ 7326: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var memoizeCapped = __nccwpck_require__(91941); - -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; +"use strict"; -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); +const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(8167) -module.exports = stringToPath; +const corsSafeListedMethods = ['GET', 'HEAD', 'POST'] +const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) +const nullBodyStatus = [101, 204, 205, 304] -/***/ }), +const redirectStatus = [301, 302, 303, 307, 308] +const redirectStatusSet = new Set(redirectStatus) -/***/ 12432: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// https://fetch.spec.whatwg.org/#block-bad-port +const badPorts = [ + '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', + '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', + '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', + '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', + '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', + '10080' +] -var isSymbol = __nccwpck_require__(97894); +const badPortsSet = new Set(badPorts) + +// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies +const referrerPolicy = [ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' +] +const referrerPolicySet = new Set(referrerPolicy) -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; +const requestRedirect = ['follow', 'manual', 'error'] -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} +const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +const safeMethodsSet = new Set(safeMethods) -module.exports = toKey; +const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors'] +const requestCredentials = ['omit', 'same-origin', 'include'] -/***/ }), +const requestCache = [ + 'default', + 'no-store', + 'reload', + 'no-cache', + 'force-cache', + 'only-if-cached' +] -/***/ 69399: -/***/ ((module) => { +// https://fetch.spec.whatwg.org/#request-body-header-name +const requestBodyHeader = [ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' +] -/** Used for built-in method references. */ -var funcProto = Function.prototype; +// https://fetch.spec.whatwg.org/#enumdef-requestduplex +const requestDuplex = [ + 'half' +] -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; +// http://fetch.spec.whatwg.org/#forbidden-method +const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK'] +const forbiddenMethodsSet = new Set(forbiddenMethods) + +const subresource = [ + 'audio', + 'audioworklet', + 'font', + 'image', + 'manifest', + 'paintworklet', + 'script', + 'style', + 'track', + 'video', + 'xslt', + '' +] +const subresourceSet = new Set(subresource) -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} +/** @type {globalThis['DOMException']} */ +const DOMException = globalThis.DOMException ?? (() => { + // DOMException was only made a global in Node v17.0.0, + // but fetch supports >= v16.8. + try { + atob('~') + } catch (err) { + return Object.getPrototypeOf(err).constructor } - return ''; -} +})() -module.exports = toSource; +let channel +/** @type {globalThis['structuredClone']} */ +const structuredClone = + globalThis.structuredClone ?? + // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone (value, options = undefined) { + if (arguments.length === 0) { + throw new TypeError('missing argument') + } -/***/ }), + if (!channel) { + channel = new MessageChannel() + } + channel.port1.unref() + channel.port2.unref() + channel.port1.postMessage(value, options?.transfer) + return receiveMessageOnPort(channel.port2).message + } -/***/ 35026: +module.exports = { + DOMException, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet +} + + +/***/ }), + +/***/ 4322: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var baseClone = __nccwpck_require__(82306); +const assert = __nccwpck_require__(2613) +const { atob } = __nccwpck_require__(181) +const { isomorphicDecode } = __nccwpck_require__(5523) -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_SYMBOLS_FLAG = 4; +const encoder = new TextEncoder() /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false + * @see https://mimesniff.spec.whatwg.org/#http-token-code-point */ -function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); -} +const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/ +const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line +/** + * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + */ +const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line + +// https://fetch.spec.whatwg.org/#data-url-processor +/** @param {URL} dataURL */ +function dataURLProcessor (dataURL) { + // 1. Assert: dataURL’s scheme is "data". + assert(dataURL.protocol === 'data:') + + // 2. Let input be the result of running the URL + // serializer on dataURL with exclude fragment + // set to true. + let input = URLSerializer(dataURL, true) + + // 3. Remove the leading "data:" string from input. + input = input.slice(5) + + // 4. Let position point at the start of input. + const position = { position: 0 } + + // 5. Let mimeType be the result of collecting a + // sequence of code points that are not equal + // to U+002C (,), given position. + let mimeType = collectASequenceOfCodePointsFast( + ',', + input, + position + ) -module.exports = cloneDeep; + // 6. Strip leading and trailing ASCII whitespace + // from mimeType. + // Undici implementation note: we need to store the + // length because if the mimetype has spaces removed, + // the wrong amount will be sliced from the input in + // step #9 + const mimeTypeLength = mimeType.length + mimeType = removeASCIIWhitespace(mimeType, true, true) + // 7. If position is past the end of input, then + // return failure + if (position.position >= input.length) { + return 'failure' + } -/***/ }), + // 8. Advance position by 1. + position.position++ -/***/ 99178: -/***/ ((module) => { + // 9. Let encodedBody be the remainder of input. + const encodedBody = input.slice(mimeTypeLength + 1) -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; -} + // 10. Let body be the percent-decoding of encodedBody. + let body = stringPercentDecode(encodedBody) -module.exports = constant; + // 11. If mimeType ends with U+003B (;), followed by + // zero or more U+0020 SPACE, followed by an ASCII + // case-insensitive match for "base64", then: + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + // 1. Let stringBody be the isomorphic decode of body. + const stringBody = isomorphicDecode(body) + // 2. Set body to the forgiving-base64 decode of + // stringBody. + body = forgivingBase64(stringBody) -/***/ }), + // 3. If body is failure, then return failure. + if (body === 'failure') { + return 'failure' + } -/***/ 15379: -/***/ ((module) => { + // 4. Remove the last 6 code points from mimeType. + mimeType = mimeType.slice(0, -6) -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} + // 5. Remove trailing U+0020 SPACE code points from mimeType, + // if any. + mimeType = mimeType.replace(/(\u0020)+$/, '') -module.exports = eq; + // 6. Remove the last U+003B (;) code point from mimeType. + mimeType = mimeType.slice(0, -1) + } + // 12. If mimeType starts with U+003B (;), then prepend + // "text/plain" to mimeType. + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType + } -/***/ }), + // 13. Let mimeTypeRecord be the result of parsing + // mimeType. + let mimeTypeRecord = parseMIMEType(mimeType) -/***/ 11160: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 14. If mimeTypeRecord is failure, then set + // mimeTypeRecord to text/plain;charset=US-ASCII. + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII') + } -var toString = __nccwpck_require__(58052); + // 15. Return a new data: URL struct whose MIME + // type is mimeTypeRecord and body is body. + // https://fetch.spec.whatwg.org/#data-url-struct + return { mimeType: mimeTypeRecord, body } +} +// https://url.spec.whatwg.org/#concept-url-serializer /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + * @param {URL} url + * @param {boolean} excludeFragment */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); +function URLSerializer (url, excludeFragment = false) { + if (!excludeFragment) { + return url.href + } -/** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ -function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; -} + const href = url.href + const hashLength = url.hash.length -module.exports = escapeRegExp; + return hashLength === 0 ? href : href.substring(0, href.length - hashLength) +} +// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/** + * @param {(char: string) => boolean} condition + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePoints (condition, input, position) { + // 1. Let result be the empty string. + let result = '' -/***/ }), + // 2. While position doesn’t point past the end of input and the + // code point at position within input meets the condition condition: + while (position.position < input.length && condition(input[position.position])) { + // 1. Append that code point to the end of result. + result += input[position.position] -/***/ 47006: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. Advance position by 1. + position.position++ + } -var baseGet = __nccwpck_require__(25835); + // 3. Return result. + return result +} /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' + * A faster collectASequenceOfCodePoints that only works when comparing a single character. + * @param {string} char + * @param {string} input + * @param {{ position: number }} position */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} +function collectASequenceOfCodePointsFast (char, input, position) { + const idx = input.indexOf(char, position.position) + const start = position.position -module.exports = get; - - -/***/ }), + if (idx === -1) { + position.position = input.length + return input.slice(start) + } -/***/ 86366: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + position.position = idx + return input.slice(start, position.position) +} -var baseHasIn = __nccwpck_require__(88916), - hasPath = __nccwpck_require__(74027); +// https://url.spec.whatwg.org/#string-percent-decode +/** @param {string} input */ +function stringPercentDecode (input) { + // 1. Let bytes be the UTF-8 encoding of input. + const bytes = encoder.encode(input) -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); + // 2. Return the percent-decoding of bytes. + return percentDecode(bytes) } -module.exports = hasIn; +// https://url.spec.whatwg.org/#percent-decode +/** @param {Uint8Array} input */ +function percentDecode (input) { + // 1. Let output be an empty byte sequence. + /** @type {number[]} */ + const output = [] + // 2. For each byte byte in input: + for (let i = 0; i < input.length; i++) { + const byte = input[i] -/***/ }), + // 1. If byte is not 0x25 (%), then append byte to output. + if (byte !== 0x25) { + output.push(byte) -/***/ 53740: -/***/ ((module) => { + // 2. Otherwise, if byte is 0x25 (%) and the next two bytes + // after byte in input are not in the ranges + // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), + // and 0x61 (a) to 0x66 (f), all inclusive, append byte + // to output. + } else if ( + byte === 0x25 && + !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) + ) { + output.push(0x25) -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} + // 3. Otherwise: + } else { + // 1. Let bytePoint be the two bytes after byte in input, + // decoded, and then interpreted as hexadecimal number. + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]) + const bytePoint = Number.parseInt(nextTwoBytes, 16) -module.exports = identity; + // 2. Append a byte whose value is bytePoint to output. + output.push(bytePoint) + // 3. Skip the next two bytes in input. + i += 2 + } + } -/***/ }), + // 3. Return output. + return Uint8Array.from(output) +} -/***/ 43891: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// https://mimesniff.spec.whatwg.org/#parse-a-mime-type +/** @param {string} input */ +function parseMIMEType (input) { + // 1. Remove any leading and trailing HTTP whitespace + // from input. + input = removeHTTPWhitespace(input, true, true) -var baseIsArguments = __nccwpck_require__(86982), - isObjectLike = __nccwpck_require__(45281); + // 2. Let position be a position variable for input, + // initially pointing at the start of input. + const position = { position: 0 } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + // 3. Let type be the result of collecting a sequence + // of code points that are not U+002F (/) from + // input, given position. + const type = collectASequenceOfCodePointsFast( + '/', + input, + position + ) -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + // 4. If type is the empty string or does not solely + // contain HTTP token code points, then return failure. + // https://mimesniff.spec.whatwg.org/#http-token-code-point + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure' + } -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; + // 5. If position is past the end of input, then return + // failure + if (position.position > input.length) { + return 'failure' + } -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; + // 6. Advance position by 1. (This skips past U+002F (/).) + position.position++ -module.exports = isArguments; + // 7. Let subtype be the result of collecting a sequence of + // code points that are not U+003B (;) from input, given + // position. + let subtype = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + // 8. Remove any trailing HTTP whitespace from subtype. + subtype = removeHTTPWhitespace(subtype, false, true) + + // 9. If subtype is the empty string or does not solely + // contain HTTP token code points, then return failure. + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure' + } + + const typeLowercase = type.toLowerCase() + const subtypeLowercase = subtype.toLowerCase() + + // 10. Let mimeType be a new MIME type record whose type + // is type, in ASCII lowercase, and subtype is subtype, + // in ASCII lowercase. + // https://mimesniff.spec.whatwg.org/#mime-type + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map<string, string>} */ + parameters: new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + } + + // 11. While position is not past the end of input: + while (position.position < input.length) { + // 1. Advance position by 1. (This skips past U+003B (;).) + position.position++ + + // 2. Collect a sequence of code points that are HTTP + // whitespace from input given position. + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + char => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ) -/***/ }), + // 3. Let parameterName be the result of collecting a + // sequence of code points that are not U+003B (;) + // or U+003D (=) from input, given position. + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ';' && char !== '=', + input, + position + ) -/***/ 68635: -/***/ ((module) => { + // 4. Set parameterName to parameterName, in ASCII + // lowercase. + parameterName = parameterName.toLowerCase() -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; + // 5. If position is not past the end of input, then: + if (position.position < input.length) { + // 1. If the code point at position within input is + // U+003B (;), then continue. + if (input[position.position] === ';') { + continue + } -module.exports = isArray; + // 2. Advance position by 1. (This skips past U+003D (=).) + position.position++ + } + // 6. If position is past the end of input, then break. + if (position.position > input.length) { + break + } -/***/ }), + // 7. Let parameterValue be null. + let parameterValue = null -/***/ 28049: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 8. If the code point at position within input is + // U+0022 ("), then: + if (input[position.position] === '"') { + // 1. Set parameterValue to the result of collecting + // an HTTP quoted string from input, given position + // and the extract-value flag. + parameterValue = collectAnHTTPQuotedString(input, position, true) -var isFunction = __nccwpck_require__(57983), - isLength = __nccwpck_require__(32480); + // 2. Collect a sequence of code points that are not + // U+003B (;) from input, given position. + collectASequenceOfCodePointsFast( + ';', + input, + position + ) -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} + // 9. Otherwise: + } else { + // 1. Set parameterValue to the result of collecting + // a sequence of code points that are not U+003B (;) + // from input, given position. + parameterValue = collectASequenceOfCodePointsFast( + ';', + input, + position + ) -module.exports = isArrayLike; + // 2. Remove any trailing HTTP whitespace from parameterValue. + parameterValue = removeHTTPWhitespace(parameterValue, false, true) + // 3. If parameterValue is the empty string, then continue. + if (parameterValue.length === 0) { + continue + } + } -/***/ }), + // 10. If all of the following are true + // - parameterName is not the empty string + // - parameterName solely contains HTTP token code points + // - parameterValue solely contains HTTP quoted-string token code points + // - mimeType’s parameters[parameterName] does not exist + // then set mimeType’s parameters[parameterName] to parameterValue. + if ( + parameterName.length !== 0 && + HTTP_TOKEN_CODEPOINTS.test(parameterName) && + (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && + !mimeType.parameters.has(parameterName) + ) { + mimeType.parameters.set(parameterName, parameterValue) + } + } -/***/ 1236: -/***/ ((module, exports, __nccwpck_require__) => { + // 12. Return mimeType. + return mimeType +} -/* module decorator */ module = __nccwpck_require__.nmd(module); -var root = __nccwpck_require__(95173), - stubFalse = __nccwpck_require__(33825); +// https://infra.spec.whatwg.org/#forgiving-base64-decode +/** @param {string} data */ +function forgivingBase64 (data) { + // 1. Remove all ASCII whitespace from data. + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '') // eslint-disable-line + + // 2. If data’s code point length divides by 4 leaving + // no remainder, then: + if (data.length % 4 === 0) { + // 1. If data ends with one or two U+003D (=) code points, + // then remove them from data. + data = data.replace(/=?=$/, '') + } -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; + // 3. If data’s code point length divides by 4 leaving + // a remainder of 1, then return failure. + if (data.length % 4 === 1) { + return 'failure' + } -/** Detect free variable `module`. */ -var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; + // 4. If data contains a code point that is not one of + // U+002B (+) + // U+002F (/) + // ASCII alphanumeric + // then return failure. + if (/[^+/0-9A-Za-z]/.test(data)) { + return 'failure' + } -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; + const binary = atob(data) + const bytes = new Uint8Array(binary.length) -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined; + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte) + } -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + return bytes +} +// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string +// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false + * @param {string} input + * @param {{ position: number }} position + * @param {boolean?} extractValue */ -var isBuffer = nativeIsBuffer || stubFalse; +function collectAnHTTPQuotedString (input, position, extractValue) { + // 1. Let positionStart be position. + const positionStart = position.position -module.exports = isBuffer; + // 2. Let value be the empty string. + let value = '' + // 3. Assert: the code point at position within input + // is U+0022 ("). + assert(input[position.position] === '"') -/***/ }), + // 4. Advance position by 1. + position.position++ -/***/ 57983: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 5. While true: + while (true) { + // 1. Append the result of collecting a sequence of code points + // that are not U+0022 (") or U+005C (\) from input, given + // position, to value. + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== '\\', + input, + position + ) -var baseGetTag = __nccwpck_require__(77772), - isObject = __nccwpck_require__(85670); + // 2. If position is past the end of input, then break. + if (position.position >= input.length) { + break + } -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; + // 3. Let quoteOrBackslash be the code point at position within + // input. + const quoteOrBackslash = input[position.position] -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} + // 4. Advance position by 1. + position.position++ -module.exports = isFunction; + // 5. If quoteOrBackslash is U+005C (\), then: + if (quoteOrBackslash === '\\') { + // 1. If position is past the end of input, then append + // U+005C (\) to value and break. + if (position.position >= input.length) { + value += '\\' + break + } + // 2. Append the code point at position within input to value. + value += input[position.position] -/***/ }), + // 3. Advance position by 1. + position.position++ -/***/ 32480: -/***/ ((module) => { + // 6. Otherwise: + } else { + // 1. Assert: quoteOrBackslash is U+0022 ("). + assert(quoteOrBackslash === '"') -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; + // 2. Break. + break + } + } -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} + // 6. If the extract-value flag is set, then return value. + if (extractValue) { + return value + } -module.exports = isLength; + // 7. Return the code points from positionStart to position, + // inclusive, within input. + return input.slice(positionStart, position.position) +} +/** + * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + */ +function serializeAMimeType (mimeType) { + assert(mimeType !== 'failure') + const { parameters, essence } = mimeType -/***/ }), + // 1. Let serialization be the concatenation of mimeType’s + // type, U+002F (/), and mimeType’s subtype. + let serialization = essence -/***/ 39000: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. For each name → value of mimeType’s parameters: + for (let [name, value] of parameters.entries()) { + // 1. Append U+003B (;) to serialization. + serialization += ';' -var baseIsMap = __nccwpck_require__(28059), - baseUnary = __nccwpck_require__(47606), - nodeUtil = __nccwpck_require__(19434); + // 2. Append name to serialization. + serialization += name -/* Node.js helper references. */ -var nodeIsMap = nodeUtil && nodeUtil.isMap; + // 3. Append U+003D (=) to serialization. + serialization += '=' -/** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ -var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + // 4. If value does not solely contain HTTP token code + // points or value is the empty string, then: + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + // 1. Precede each occurence of U+0022 (") or + // U+005C (\) in value with U+005C (\). + value = value.replace(/(\\|")/g, '\\$1') -module.exports = isMap; + // 2. Prepend U+0022 (") to value. + value = '"' + value + // 3. Append U+0022 (") to value. + value += '"' + } -/***/ }), + // 5. Append value to serialization. + serialization += value + } -/***/ 85670: -/***/ ((module) => { + // 3. Return serialization. + return serialization +} /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} char */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); +function isHTTPWhiteSpace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === ' ' } -module.exports = isObject; +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} str + */ +function removeHTTPWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); + } -/***/ }), + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); + } -/***/ 45281: -/***/ ((module) => { + return str.slice(lead, trail + 1) +} /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * @param {string} char */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; +function isASCIIWhitespace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' ' } -module.exports = isObjectLike; - - -/***/ }), - -/***/ 55374: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace + */ +function removeASCIIWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 -var baseIsSet = __nccwpck_require__(20952), - baseUnary = __nccwpck_require__(47606), - nodeUtil = __nccwpck_require__(19434); + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); + } -/* Node.js helper references. */ -var nodeIsSet = nodeUtil && nodeUtil.isSet; + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); + } -/** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ -var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + return str.slice(lead, trail + 1) +} -module.exports = isSet; +module.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType +} /***/ }), -/***/ 97894: +/***/ 3041: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var baseGetTag = __nccwpck_require__(77772), - isObjectLike = __nccwpck_require__(45281); - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; +"use strict"; -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} -module.exports = isSymbol; +const { Blob, File: NativeFile } = __nccwpck_require__(181) +const { types } = __nccwpck_require__(9023) +const { kState } = __nccwpck_require__(9710) +const { isBlobLike } = __nccwpck_require__(5523) +const { webidl } = __nccwpck_require__(4222) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const encoder = new TextEncoder() +class File extends Blob { + constructor (fileBits, fileName, options = {}) { + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }) -/***/ }), + fileBits = webidl.converters['sequence<BlobPart>'](fileBits) + fileName = webidl.converters.USVString(fileName) + options = webidl.converters.FilePropertyBag(options) -/***/ 46431: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + // Note: Blob handles this for us -var baseIsTypedArray = __nccwpck_require__(90006), - baseUnary = __nccwpck_require__(47606), - nodeUtil = __nccwpck_require__(19434); + // 2. Let n be the fileName argument to the constructor. + const n = fileName -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // 2. Convert every character in t to ASCII lowercase. + let t = options.type + let d -module.exports = isTypedArray; + // eslint-disable-next-line no-labels + substep: { + if (t) { + t = parseMIMEType(t) + if (t === 'failure') { + t = '' + // eslint-disable-next-line no-labels + break substep + } -/***/ }), + t = serializeAMimeType(t).toLowerCase() + } -/***/ 34894: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + d = options.lastModified + } -var arrayLikeKeys = __nccwpck_require__(69511), - baseKeys = __nccwpck_require__(89864), - isArrayLike = __nccwpck_require__(28049); + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} + super(processBlobParts(fileBits, options), { type: t }) + this[kState] = { + name: n, + lastModified: d, + type: t + } + } -module.exports = keys; + get name () { + webidl.brandCheck(this, File) + return this[kState].name + } -/***/ }), + get lastModified () { + webidl.brandCheck(this, File) -/***/ 1089: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return this[kState].lastModified + } -var arrayLikeKeys = __nccwpck_require__(69511), - baseKeysIn = __nccwpck_require__(25475), - isArrayLike = __nccwpck_require__(28049); + get type () { + webidl.brandCheck(this, File) -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + return this[kState].type + } } -module.exports = keysIn; - +class FileLike { + constructor (blobLike, fileName, options = {}) { + // TODO: argument idl type check -/***/ }), - -/***/ 80968: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: -var MapCache = __nccwpck_require__(8108); + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; + // 2. Let n be the fileName argument to the constructor. + const n = fileName -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // TODO + const t = options.type -// Expose `MapCache`. -memoize.Cache = MapCache; + // 2. Convert every character in t to ASCII lowercase. + // TODO -module.exports = memoize; + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + const d = options.lastModified ?? Date.now() + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. -/***/ }), + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + } + } -/***/ 36247: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + stream (...args) { + webidl.brandCheck(this, FileLike) -var baseProperty = __nccwpck_require__(95716), - basePropertyDeep = __nccwpck_require__(18956), - isKey = __nccwpck_require__(76930), - toKey = __nccwpck_require__(12432); + return this[kState].blobLike.stream(...args) + } -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ -function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); -} + arrayBuffer (...args) { + webidl.brandCheck(this, FileLike) -module.exports = property; + return this[kState].blobLike.arrayBuffer(...args) + } + slice (...args) { + webidl.brandCheck(this, FileLike) -/***/ }), + return this[kState].blobLike.slice(...args) + } -/***/ 39625: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + text (...args) { + webidl.brandCheck(this, FileLike) -var baseFlatten = __nccwpck_require__(34069), - baseOrderBy = __nccwpck_require__(42157), - baseRest = __nccwpck_require__(51226), - isIterateeCall = __nccwpck_require__(42406); + return this[kState].blobLike.text(...args) + } -/** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] - */ -var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; + get size () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.size } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; + + get type () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.type } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); -}); -module.exports = sortBy; + get name () { + webidl.brandCheck(this, FileLike) + return this[kState].name + } -/***/ }), + get lastModified () { + webidl.brandCheck(this, FileLike) -/***/ 23509: -/***/ ((module) => { + return this[kState].lastModified + } -/** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ -function stubArray() { - return []; + get [Symbol.toStringTag] () { + return 'File' + } } -module.exports = stubArray; +Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: 'File', + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty +}) +webidl.converters.Blob = webidl.interfaceConverter(Blob) -/***/ }), +webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } -/***/ 33825: -/***/ ((module) => { + if ( + ArrayBuffer.isView(V) || + types.isAnyArrayBuffer(V) + ) { + return webidl.converters.BufferSource(V, opts) + } + } -/** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; + return webidl.converters.USVString(V, opts) } -module.exports = stubFalse; +webidl.converters['sequence<BlobPart>'] = webidl.sequenceConverter( + webidl.converters.BlobPart +) + +// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag +webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue () { + return Date.now() + } + }, + { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'endings', + converter: (value) => { + value = webidl.converters.DOMString(value) + value = value.toLowerCase() + if (value !== 'native') { + value = 'transparent' + } -/***/ }), + return value + }, + defaultValue: 'transparent' + } +]) -/***/ 58052: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @see https://www.w3.org/TR/FileAPI/#process-blob-parts + * @param {(NodeJS.TypedArray|Blob|string)[]} parts + * @param {{ type: string, endings: string }} options + */ +function processBlobParts (parts, options) { + // 1. Let bytes be an empty sequence of bytes. + /** @type {NodeJS.TypedArray[]} */ + const bytes = [] + + // 2. For each element in parts: + for (const element of parts) { + // 1. If element is a USVString, run the following substeps: + if (typeof element === 'string') { + // 1. Let s be element. + let s = element + + // 2. If the endings member of options is "native", set s + // to the result of converting line endings to native + // of element. + if (options.endings === 'native') { + s = convertLineEndingsNative(s) + } + + // 3. Append the result of UTF-8 encoding s to bytes. + bytes.push(encoder.encode(s)) + } else if ( + types.isAnyArrayBuffer(element) || + types.isTypedArray(element) + ) { + // 2. If element is a BufferSource, get a copy of the + // bytes held by the buffer source, and append those + // bytes to bytes. + if (!element.buffer) { // ArrayBuffer + bytes.push(new Uint8Array(element)) + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ) + } + } else if (isBlobLike(element)) { + // 3. If element is a Blob, append the bytes it represents + // to bytes. + bytes.push(element) + } + } -var baseToString = __nccwpck_require__(74256); + // 3. Return bytes. + return bytes +} /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' + * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native + * @param {string} s */ -function toString(value) { - return value == null ? '' : baseToString(value); +function convertLineEndingsNative (s) { + // 1. Let native line ending be be the code point U+000A LF. + let nativeLineEnding = '\n' + + // 2. If the underlying platform’s conventions are to + // represent newlines as a carriage return and line feed + // sequence, set native line ending to the code point + // U+000D CR followed by the code point U+000A LF. + if (process.platform === 'win32') { + nativeLineEnding = '\r\n' + } + + return s.replace(/\r?\n/g, nativeLineEnding) +} + +// If this function is moved to ./util.js, some tools (such as +// rollup) will warn about circular dependencies. See: +// https://github.com/nodejs/undici/issues/1629 +function isFileLike (object) { + return ( + (NativeFile && object instanceof NativeFile) || + object instanceof File || ( + object && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File' + ) + ) } -module.exports = toString; +module.exports = { File, FileLike, isFileLike } /***/ }), -/***/ 18697: -/***/ ((module) => { +/***/ 3073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = longestStreak +const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(5523) +const { kState } = __nccwpck_require__(9710) +const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(3041) +const { webidl } = __nccwpck_require__(4222) +const { Blob, File: NativeFile } = __nccwpck_require__(181) -// Get the count of the longest repeating streak of `character` in `value`. -function longestStreak(value, character) { - var count = 0 - var maximum = 0 - var expected - var index +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile - if (typeof character !== 'string' || character.length !== 1) { - throw new Error('Expected character') +// https://xhr.spec.whatwg.org/#formdata +class FormData { + constructor (form) { + if (form !== undefined) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }) + } + + this[kState] = [] } - value = String(value) - index = value.indexOf(character) - expected = index + append (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) - while (index !== -1) { - count++ + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }) - if (index === expected) { - if (count > maximum) { - maximum = count - } - } else { - count = 1 + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ) } - expected = index + 1 - index = value.indexOf(character, expected) - } + // 1. Let value be value if given; otherwise blobValue. - return maximum -} + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? webidl.converters.USVString(filename) + : undefined + // 2. Let entry be the result of creating an entry with + // name, value, and filename if given. + const entry = makeEntry(name, value, filename) -/***/ }), + // 3. Append entry to this’s entry list. + this[kState].push(entry) + } -/***/ 31152: -/***/ ((module) => { + delete (name) { + webidl.brandCheck(this, FormData) -"use strict"; + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }) + name = webidl.converters.USVString(name) -module.exports = escapes - -var defaults = [ - '\\', - '`', - '*', - '{', - '}', - '[', - ']', - '(', - ')', - '#', - '+', - '-', - '.', - '!', - '_', - '>' -] + // The delete(name) method steps are to remove all entries whose name + // is name from this’s entry list. + this[kState] = this[kState].filter(entry => entry.name !== name) + } -var gfm = defaults.concat(['~', '|']) - -var commonmark = gfm.concat([ - '\n', - '"', - '$', - '%', - '&', - "'", - ',', - '/', - ':', - ';', - '<', - '=', - '?', - '@', - '^' -]) + get (name) { + webidl.brandCheck(this, FormData) -escapes.default = defaults -escapes.gfm = gfm -escapes.commonmark = commonmark + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }) -// Get markdown escapes. -function escapes(options) { - var settings = options || {} + name = webidl.converters.USVString(name) - if (settings.commonmark) { - return commonmark - } + // 1. If there is no entry whose name is name in this’s entry list, + // then return null. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx === -1) { + return null + } - return settings.gfm ? gfm : defaults -} + // 2. Return the value of the first entry whose name is name from + // this’s entry list. + return this[kState][idx].value + } + getAll (name) { + webidl.brandCheck(this, FormData) -/***/ }), + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }) -/***/ 90906: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + name = webidl.converters.USVString(name) -"use strict"; + // 1. If there is no entry whose name is name in this’s entry list, + // then return the empty list. + // 2. Return the values of all entries whose name is name, in order, + // from this’s entry list. + return this[kState] + .filter((entry) => entry.name === name) + .map((entry) => entry.value) + } + has (name) { + webidl.brandCheck(this, FormData) -var repeat = __nccwpck_require__(69626) - -module.exports = markdownTable - -var trailingWhitespace = / +$/ - -// Characters. -var space = ' ' -var lineFeed = '\n' -var dash = '-' -var colon = ':' -var verticalBar = '|' - -var x = 0 -var C = 67 -var L = 76 -var R = 82 -var c = 99 -var l = 108 -var r = 114 - -// Create a table from a matrix of strings. -function markdownTable(table, options) { - var settings = options || {} - var padding = settings.padding !== false - var start = settings.delimiterStart !== false - var end = settings.delimiterEnd !== false - var align = (settings.align || []).concat() - var alignDelimiters = settings.alignDelimiters !== false - var alignments = [] - var stringLength = settings.stringLength || defaultStringLength - var rowIndex = -1 - var rowLength = table.length - var cellMatrix = [] - var sizeMatrix = [] - var row = [] - var sizes = [] - var longestCellByColumn = [] - var mostCellsPerRow = 0 - var cells - var columnIndex - var columnLength - var largest - var size - var cell - var lines - var line - var before - var after - var code - - // This is a superfluous loop if we don’t align delimiters, but otherwise we’d - // do superfluous work when aligning, so optimize for aligning. - while (++rowIndex < rowLength) { - cells = table[rowIndex] - columnIndex = -1 - columnLength = cells.length - row = [] - sizes = [] - - if (columnLength > mostCellsPerRow) { - mostCellsPerRow = columnLength - } - - while (++columnIndex < columnLength) { - cell = serialize(cells[columnIndex]) - - if (alignDelimiters === true) { - size = stringLength(cell) - sizes[columnIndex] = size - - largest = longestCellByColumn[columnIndex] - - if (largest === undefined || size > largest) { - longestCellByColumn[columnIndex] = size - } - } + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }) - row.push(cell) - } + name = webidl.converters.USVString(name) - cellMatrix[rowIndex] = row - sizeMatrix[rowIndex] = sizes + // The has(name) method steps are to return true if there is an entry + // whose name is name in this’s entry list; otherwise false. + return this[kState].findIndex((entry) => entry.name === name) !== -1 } - // Figure out which alignments to use. - columnIndex = -1 - columnLength = mostCellsPerRow + set (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) - if (typeof align === 'object' && 'length' in align) { - while (++columnIndex < columnLength) { - alignments[columnIndex] = toAlignment(align[columnIndex]) + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ) } - } else { - code = toAlignment(align) - while (++columnIndex < columnLength) { - alignments[columnIndex] = code + // The set(name, value) and set(name, blobValue, filename) method steps + // are: + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? toUSVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with name, value, and + // filename if given. + const entry = makeEntry(name, value, filename) + + // 3. If there are entries in this’s entry list whose name is name, then + // replace the first such entry with entry and remove the others. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) + ] + } else { + // 4. Otherwise, append entry to this’s entry list. + this[kState].push(entry) } } - // Inject the alignment row. - columnIndex = -1 - columnLength = mostCellsPerRow - row = [] - sizes = [] + entries () { + webidl.brandCheck(this, FormData) - while (++columnIndex < columnLength) { - code = alignments[columnIndex] - before = '' - after = '' + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key+value' + ) + } - if (code === l) { - before = colon - } else if (code === r) { - after = colon - } else if (code === c) { - before = colon - after = colon - } + keys () { + webidl.brandCheck(this, FormData) - // There *must* be at least one hyphen-minus in each alignment cell. - size = alignDelimiters - ? Math.max( - 1, - longestCellByColumn[columnIndex] - before.length - after.length - ) - : 1 + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key' + ) + } - cell = before + repeat(dash, size) + after + values () { + webidl.brandCheck(this, FormData) - if (alignDelimiters === true) { - size = before.length + size + after.length + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'value' + ) + } - if (size > longestCellByColumn[columnIndex]) { - longestCellByColumn[columnIndex] = size - } + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }) - sizes[columnIndex] = size + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ) } - row[columnIndex] = cell + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } } +} - // Inject the alignment row. - cellMatrix.splice(1, 0, row) - sizeMatrix.splice(1, 0, sizes) - - rowIndex = -1 - rowLength = cellMatrix.length - lines = [] +FormData.prototype[Symbol.iterator] = FormData.prototype.entries - while (++rowIndex < rowLength) { - row = cellMatrix[rowIndex] - sizes = sizeMatrix[rowIndex] - columnIndex = -1 - columnLength = mostCellsPerRow - line = [] +Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true + } +}) - while (++columnIndex < columnLength) { - cell = row[columnIndex] || '' - before = '' - after = '' +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ +function makeEntry (name, value, filename) { + // 1. Set name to the result of converting name into a scalar value string. + // "To convert a string into a scalar value string, replace any surrogates + // with U+FFFD." + // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end + name = Buffer.from(name).toString('utf8') + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8') + } else { + // 3. Otherwise: - if (alignDelimiters === true) { - size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0) - code = alignments[columnIndex] + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }) + } - if (code === r) { - before = repeat(space, size) - } else if (code === c) { - if (size % 2 === 0) { - before = repeat(space, size / 2) - after = before - } else { - before = repeat(space, size / 2 + 0.5) - after = repeat(space, size / 2 - 0.5) - } - } else { - after = repeat(space, size) - } + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + /** @type {FilePropertyBag} */ + const options = { + type: value.type, + lastModified: value.lastModified } - if (start === true && columnIndex === 0) { - line.push(verticalBar) - } + value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile + ? new File([value], filename, options) + : new FileLike(value, filename, options) + } + } - if ( - padding === true && - // Don’t add the opening space if we’re not aligning and the cell is - // empty: there will be a closing space. - !(alignDelimiters === false && cell === '') && - (start === true || columnIndex !== 0) - ) { - line.push(space) - } + // 4. Return an entry whose name is name and whose value is value. + return { name, value } +} - if (alignDelimiters === true) { - line.push(before) - } +module.exports = { FormData } - line.push(cell) - if (alignDelimiters === true) { - line.push(after) - } +/***/ }), - if (padding === true) { - line.push(space) - } +/***/ 5628: +/***/ ((module) => { - if (end === true || columnIndex !== columnLength - 1) { - line.push(verticalBar) - } - } +"use strict"; - line = line.join('') - if (end === false) { - line = line.replace(trailingWhitespace, '') - } +// In case of breaking changes, increase the version +// number to avoid conflicts. +const globalOrigin = Symbol.for('undici.globalOrigin.1') + +function getGlobalOrigin () { + return globalThis[globalOrigin] +} + +function setGlobalOrigin (newOrigin) { + if (newOrigin === undefined) { + Object.defineProperty(globalThis, globalOrigin, { + value: undefined, + writable: true, + enumerable: false, + configurable: false + }) - lines.push(line) + return } - return lines.join(lineFeed) -} + const parsedURL = new URL(newOrigin) -function serialize(value) { - return value === null || value === undefined ? '' : String(value) -} + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`) + } -function defaultStringLength(value) { - return value.length + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }) } -function toAlignment(value) { - var code = typeof value === 'string' ? value.charCodeAt(0) : x - - return code === L || code === l - ? l - : code === R || code === r - ? r - : code === C || code === c - ? c - : x +module.exports = { + getGlobalOrigin, + setGlobalOrigin } /***/ }), -/***/ 62608: +/***/ 6349: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch -var visit = __nccwpck_require__(47982) -module.exports = compact - -// Make an mdast tree compact by merging adjacent text nodes. -function compact(tree, commonmark) { - visit(tree, visitor) - - return tree +const { kHeadersList, kConstruct } = __nccwpck_require__(6443) +const { kGuard } = __nccwpck_require__(9710) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const { + makeIterator, + isValidHeaderName, + isValidHeaderValue +} = __nccwpck_require__(5523) +const util = __nccwpck_require__(9023) +const { webidl } = __nccwpck_require__(4222) +const assert = __nccwpck_require__(2613) - function visitor(child, index, parent) { - var siblings = parent ? parent.children : [] - var prev = index && siblings[index - 1] +const kHeadersMap = Symbol('headers map') +const kHeadersSortedMap = Symbol('headers map sorted') - if ( - prev && - child.type === prev.type && - mergeable(prev, commonmark) && - mergeable(child, commonmark) - ) { - if (child.value) { - prev.value += child.value - } +/** + * @param {number} code + */ +function isHTTPWhiteSpaceCharCode (code) { + return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020 +} - if (child.children) { - prev.children = prev.children.concat(child.children) +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize (potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + let i = 0; let j = potentialValue.length + + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i + + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j) +} + +function fill (headers, object) { + // To fill a Headers object headers with a given object object, run these steps: + + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i] + // 1. If header does not contain exactly two items, then throw a TypeError. + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }) } - siblings.splice(index, 1) - - if (prev.position && child.position) { - prev.position.end = child.position.end - } + // 2. Append (header’s first item, header’s second item) to headers. + appendHeader(headers, header[0], header[1]) + } + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw - return index + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + const keys = Object.keys(object) + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]) } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>'] + }) } } -function mergeable(node, commonmark) { - var start - var end +/** + * @see https://fetch.spec.whatwg.org/#concept-headers-append + */ +function appendHeader (headers, name, value) { + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }) + } - if (node.type === 'text') { - if (!node.position) { - return true - } + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // Note: undici does not implement forbidden header names + if (headers[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (headers[kGuard] === 'request-no-cors') { + // 5. Otherwise, if headers’s guard is "request-no-cors": + // TODO + } - start = node.position.start - end = node.position.end + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. - // Only merge nodes which occupy the same size as their `value`. - return ( - start.line !== end.line || end.column - start.column === node.value.length - ) - } + // 7. Append (name, value) to headers’s header list. + return headers[kHeadersList].append(name, value) - return commonmark && node.type === 'blockquote' + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers } +class HeadersList { + /** @type {[string, string][]|null} */ + cookies = null -/***/ }), + constructor (init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]) + this[kHeadersSortedMap] = init[kHeadersSortedMap] + this.cookies = init.cookies === null ? null : [...init.cookies] + } else { + this[kHeadersMap] = new Map(init) + this[kHeadersSortedMap] = null + } + } -/***/ 80040: -/***/ ((module) => { + // https://fetch.spec.whatwg.org/#header-list-contains + contains (name) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + name = name.toLowerCase() -/** - * Helpers. - */ + return this[kHeadersMap].has(name) + } -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; + clear () { + this[kHeadersMap].clear() + this[kHeadersSortedMap] = null + this.cookies = null + } -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ + // https://fetch.spec.whatwg.org/#concept-header-list-append + append (name, value) { + this[kHeadersSortedMap] = null -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; + // 1. If list contains name, then set name to the first such + // header’s name. + const lowercaseName = name.toLowerCase() + const exists = this[kHeadersMap].get(lowercaseName) -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ + // 2. Append (name, value) to list. + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', ' + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }) + } else { + this[kHeadersMap].set(lowercaseName, { name, value }) + } -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; + if (lowercaseName === 'set-cookie') { + this.cookies ??= [] + this.cookies.push(value) + } } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; + + // https://fetch.spec.whatwg.org/#concept-header-list-set + set (name, value) { + this[kHeadersSortedMap] = null + const lowercaseName = name.toLowerCase() + + if (lowercaseName === 'set-cookie') { + this.cookies = [value] + } + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + this[kHeadersMap].set(lowercaseName, { name, value }) } -} -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete (name) { + this[kHeadersSortedMap] = null + + name = name.toLowerCase() + + if (name === 'set-cookie') { + this.cookies = null + } -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; + this[kHeadersMap].delete(name) } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; + + // https://fetch.spec.whatwg.org/#concept-header-list-get + get (name) { + const value = this[kHeadersMap].get(name.toLowerCase()) + + // 1. If list does not contain name, then return null. + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return value === undefined ? null : value.value } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; + + * [Symbol.iterator] () { + // use the lowercased name + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value] + } } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; + + get entries () { + const headers = {} + + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value + } + } + + return headers } - return ms + 'ms'; } -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ +// https://fetch.spec.whatwg.org/#headers-class +class Headers { + constructor (init = undefined) { + if (init === kConstruct) { + return + } + this[kHeadersList] = new HeadersList() -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); + // The new Headers(init) constructor steps are: + + // 1. Set this’s guard to "none". + this[kGuard] = 'none' + + // 2. If init is given, then fill this with init. + if (init !== undefined) { + init = webidl.converters.HeadersInit(init) + fill(this, init) + } } - return ms + ' ms'; -} -/** - * Pluralization helper. - */ + // https://fetch.spec.whatwg.org/#dom-headers-append + append (name, value) { + webidl.brandCheck(this, Headers) -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }) + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) -/***/ }), + return appendHeader(this, name, value) + } -/***/ 41045: -/***/ ((module) => { + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete (name) { + webidl.brandCheck(this, Headers) -"use strict"; + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }) + name = webidl.converters.ByteString(name) -function genWrap (wraps, ref, fn, event) { - function wrap () { - const obj = ref.deref() - // This should alway happen, however GC is - // undeterministic so it might happen. - /* istanbul ignore else */ - if (obj !== undefined) { - fn(obj, event) + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }) + } + + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this[kHeadersList].contains(name)) { + return } + + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + this[kHeadersList].delete(name) } - wraps[event] = wrap - process.once(event, wrap) -} + // https://fetch.spec.whatwg.org/#dom-headers-get + get (name) { + webidl.brandCheck(this, Headers) -const registry = new FinalizationRegistry(clear) -const map = new WeakMap() + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }) -function clear (wraps) { - process.removeListener('exit', wraps.exit) - process.removeListener('beforeExit', wraps.beforeExit) -} + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }) + } -function register (obj, fn) { - if (obj === undefined) { - throw new Error('the object can\'t be undefined') + // 2. Return the result of getting name from this’s header + // list. + return this[kHeadersList].get(name) } - const ref = new WeakRef(obj) - const wraps = {} - map.set(obj, wraps) - registry.register(obj, wraps) + // https://fetch.spec.whatwg.org/#dom-headers-has + has (name) { + webidl.brandCheck(this, Headers) - genWrap(wraps, ref, fn, 'exit') - genWrap(wraps, ref, fn, 'beforeExit') -} + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }) -function unregister (obj) { - const wraps = map.get(obj) - map.delete(obj) - if (wraps) { - clear(wraps) - } - registry.unregister(obj) -} + name = webidl.converters.ByteString(name) -module.exports = { - register, - unregister -} + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }) + } + // 2. Return true if this’s header list contains name; + // otherwise false. + return this[kHeadersList].contains(name) + } -/***/ }), + // https://fetch.spec.whatwg.org/#dom-headers-set + set (name, value) { + webidl.brandCheck(this, Headers) -/***/ 87197: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }) -var wrappy = __nccwpck_require__(84586) -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) + // 1. Normalize value. + value = headerValueNormalize(value) - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value, + type: 'header value' + }) + } -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + this[kHeadersList].set(name, value) } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie () { + webidl.brandCheck(this, Headers) -/***/ }), + // 1. If this’s header list does not contain `Set-Cookie`, then return « ». + // 2. Return the values of all headers in this’s header list whose name is + // a byte-case-insensitive match for `Set-Cookie`, in order. -/***/ 21581: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const list = this[kHeadersList].cookies -"use strict"; + if (list) { + return [...list] + } + return [] + } -var characterEntities = __nccwpck_require__(45129) + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap] () { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap] + } -module.exports = decodeEntity + // 1. Let headers be an empty list of headers with the key being the name + // and value the value. + const headers = [] -var own = {}.hasOwnProperty + // 2. Let names be the result of convert header names to a sorted-lowercase + // set with all the names of the headers in list. + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1) + const cookies = this[kHeadersList].cookies -function decodeEntity(characters) { - return own.call(characterEntities, characters) - ? characterEntities[characters] - : false -} + // 3. For each name of names: + for (let i = 0; i < names.length; ++i) { + const [name, value] = names[i] + // 1. If name is `set-cookie`, then: + if (name === 'set-cookie') { + // 1. Let values be a list of all values of headers in list whose name + // is a byte-case-insensitive match for name, in order. + // 2. For each value of values: + // 1. Append (name, value) to headers. + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]) + } + } else { + // 2. Otherwise: -/***/ }), + // 1. Let value be the result of getting name from list. -/***/ 81085: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. Assert: value is non-null. + assert(value !== null) -"use strict"; + // 3. Append (name, value) to headers. + headers.push([name, value]) + } + } + this[kHeadersList][kHeadersSortedMap] = headers -var legacy = __nccwpck_require__(93562) -var invalid = __nccwpck_require__(71216) -var decimal = __nccwpck_require__(76995) -var hexadecimal = __nccwpck_require__(95731) -var alphanumerical = __nccwpck_require__(1931) -var decodeEntity = __nccwpck_require__(21581) - -module.exports = parseEntities - -var own = {}.hasOwnProperty -var fromCharCode = String.fromCharCode -var noop = Function.prototype - -// Default settings. -var defaults = { - warning: null, - reference: null, - text: null, - warningContext: null, - referenceContext: null, - textContext: null, - position: {}, - additional: null, - attribute: false, - nonTerminated: true -} - -// Characters. -var tab = 9 // '\t' -var lineFeed = 10 // '\n' -var formFeed = 12 // '\f' -var space = 32 // ' ' -var ampersand = 38 // '&' -var semicolon = 59 // ';' -var lessThan = 60 // '<' -var equalsTo = 61 // '=' -var numberSign = 35 // '#' -var uppercaseX = 88 // 'X' -var lowercaseX = 120 // 'x' -var replacementCharacter = 65533 // '�' - -// Reference types. -var name = 'named' -var hexa = 'hexadecimal' -var deci = 'decimal' - -// Map of bases. -var bases = {} - -bases[hexa] = 16 -bases[deci] = 10 - -// Map of types to tests. -// Each type of character reference accepts different characters. -// This test is used to detect whether a reference has ended (as the semicolon -// is not strictly needed). -var tests = {} - -tests[name] = alphanumerical -tests[deci] = decimal -tests[hexa] = hexadecimal - -// Warning types. -var namedNotTerminated = 1 -var numericNotTerminated = 2 -var namedEmpty = 3 -var numericEmpty = 4 -var namedUnknown = 5 -var numericDisallowed = 6 -var numericProhibited = 7 + // 4. Return headers. + return headers + } -// Warning messages. -var messages = {} - -messages[namedNotTerminated] = - 'Named character references must be terminated by a semicolon' -messages[numericNotTerminated] = - 'Numeric character references must be terminated by a semicolon' -messages[namedEmpty] = 'Named character references cannot be empty' -messages[numericEmpty] = 'Numeric character references cannot be empty' -messages[namedUnknown] = 'Named character references must be known' -messages[numericDisallowed] = - 'Numeric character references cannot be disallowed' -messages[numericProhibited] = - 'Numeric character references cannot be outside the permissible Unicode range' + keys () { + webidl.brandCheck(this, Headers) -// Wrap to ensure clean parameters are given to `parse`. -function parseEntities(value, options) { - var settings = {} - var option - var key + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key') + } - if (!options) { - options = {} + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key' + ) } - for (key in defaults) { - option = options[key] - settings[key] = - option === null || option === undefined ? defaults[key] : option - } + values () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'value') + } - if (settings.position.indent || settings.position.start) { - settings.indent = settings.position.indent || [] - settings.position = settings.position.start + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'value' + ) } - return parse(value, settings) -} + entries () { + webidl.brandCheck(this, Headers) -// Parse entities. -// eslint-disable-next-line complexity -function parse(value, settings) { - var additional = settings.additional - var nonTerminated = settings.nonTerminated - var handleText = settings.text - var handleReference = settings.reference - var handleWarning = settings.warning - var textContext = settings.textContext - var referenceContext = settings.referenceContext - var warningContext = settings.warningContext - var pos = settings.position - var indent = settings.indent || [] - var length = value.length - var index = 0 - var lines = -1 - var column = pos.column || 1 - var line = pos.line || 1 - var queue = '' - var result = [] - var entityCharacters - var namedEntity - var terminated - var characters - var character - var reference - var following - var warning - var reason - var output - var entity - var begin - var start - var type - var test - var prev - var next - var diff - var end - - if (typeof additional === 'string') { - additional = additional.charCodeAt(0) - } + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key+value') + } - // Cache the current point. - prev = now() + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key+value' + ) + } - // Wrap `handleWarning`. - warning = handleWarning ? parseError : noop + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, Headers) - // Ensure the algorithm walks over the first character and the end - // (inclusive). - index-- - length++ + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }) - while (++index < length) { - // If the previous character was a newline. - if (character === lineFeed) { - column = indent[lines] || 1 + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ) } - character = value.charCodeAt(index) + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } - if (character === ampersand) { - following = value.charCodeAt(index + 1) + [Symbol.for('nodejs.util.inspect.custom')] () { + webidl.brandCheck(this, Headers) - // The behaviour depends on the identity of the next character. - if ( - following === tab || - following === lineFeed || - following === formFeed || - following === space || - following === ampersand || - following === lessThan || - following !== following || - (additional && following === additional) - ) { - // Not a character reference. - // No characters are consumed, and nothing is returned. - // This is not an error, either. - queue += fromCharCode(character) - column++ + return this[kHeadersList] + } +} - continue - } +Headers.prototype[Symbol.iterator] = Headers.prototype.entries - start = index + 1 - begin = start - end = start +Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + }, + [util.inspect.custom]: { + enumerable: false + } +}) - if (following === numberSign) { - // Numerical entity. - end = ++begin +webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence<sequence<ByteString>>'](V) + } - // The behaviour further depends on the next character. - following = value.charCodeAt(end) + return webidl.converters['record<ByteString, ByteString>'](V) + } - if (following === uppercaseX || following === lowercaseX) { - // ASCII hex digits. - type = hexa - end = ++begin - } else { - // ASCII digits. - type = deci - } - } else { - // Named entity. - type = name - } + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>'] + }) +} - entityCharacters = '' - entity = '' - characters = '' - test = tests[type] - end-- +module.exports = { + fill, + Headers, + HeadersList +} - while (++end < length) { - following = value.charCodeAt(end) - if (!test(following)) { - break - } +/***/ }), - characters += fromCharCode(following) +/***/ 2315: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Check if we can match a legacy named reference. - // If so, we cache that as the last viable named reference. - // This ensures we do not need to walk backwards later. - if (type === name && own.call(legacy, characters)) { - entityCharacters = characters - entity = legacy[characters] - } - } +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch - terminated = value.charCodeAt(end) === semicolon - if (terminated) { - end++ - namedEntity = type === name ? decodeEntity(characters) : false +const { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse +} = __nccwpck_require__(8676) +const { Headers } = __nccwpck_require__(6349) +const { Request, makeRequest } = __nccwpck_require__(5194) +const zlib = __nccwpck_require__(3106) +const { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme +} = __nccwpck_require__(5523) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) +const assert = __nccwpck_require__(2613) +const { safelyExtractBody } = __nccwpck_require__(8923) +const { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException +} = __nccwpck_require__(7326) +const { kHeadersList } = __nccwpck_require__(6443) +const EE = __nccwpck_require__(4434) +const { Readable, pipeline } = __nccwpck_require__(2203) +const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = __nccwpck_require__(3440) +const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(4322) +const { TransformStream } = __nccwpck_require__(3774) +const { getGlobalDispatcher } = __nccwpck_require__(2581) +const { webidl } = __nccwpck_require__(4222) +const { STATUS_CODES } = __nccwpck_require__(8611) +const GET_OR_HEAD = ['GET', 'HEAD'] + +/** @type {import('buffer').resolveObjectURL} */ +let resolveObjectURL +let ReadableStream = globalThis.ReadableStream + +class Fetch extends EE { + constructor (dispatcher) { + super() - if (namedEntity) { - entityCharacters = characters - entity = namedEntity - } - } + this.dispatcher = dispatcher + this.connection = null + this.dump = false + this.state = 'ongoing' + // 2 terminated listeners get added per request, + // but only 1 gets removed. If there are 20 redirects, + // 21 listeners will be added. + // See https://github.com/nodejs/undici/issues/1711 + // TODO (fix): Find and fix root cause for leaked listener. + this.setMaxListeners(21) + } - diff = 1 + end - start + terminate (reason) { + if (this.state !== 'ongoing') { + return + } - if (!terminated && !nonTerminated) { - // Empty. - } else if (!characters) { - // An empty (possible) entity is valid, unless it’s numeric (thus an - // ampersand followed by an octothorp). - if (type !== name) { - warning(numericEmpty, diff) - } - } else if (type === name) { - // An ampersand followed by anything unknown, and not terminated, is - // invalid. - if (terminated && !entity) { - warning(namedUnknown, 1) - } else { - // If theres something after an entity name which is not known, cap - // the reference. - if (entityCharacters !== characters) { - end = begin + entityCharacters.length - diff = 1 + end - begin - terminated = false - } + this.state = 'terminated' + this.connection?.destroy(reason) + this.emit('terminated', reason) + } - // If the reference is not terminated, warn. - if (!terminated) { - reason = entityCharacters ? namedNotTerminated : namedEmpty + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort (error) { + if (this.state !== 'ongoing') { + return + } - if (settings.attribute) { - following = value.charCodeAt(end) + // 1. Set controller’s state to "aborted". + this.state = 'aborted' - if (following === equalsTo) { - warning(reason, diff) - entity = null - } else if (alphanumerical(following)) { - entity = null - } else { - warning(reason, diff) - } - } else { - warning(reason, diff) - } - } - } + // 2. Let fallbackError be an "AbortError" DOMException. + // 3. Set error to fallbackError if it is not given. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } - reference = entity - } else { - if (!terminated) { - // All non-terminated numeric entities are not rendered, and trigger a - // warning. - warning(numericNotTerminated, diff) - } + // 4. Let serializedError be StructuredSerialize(error). + // If that threw an exception, catch it, and let + // serializedError be StructuredSerialize(fallbackError). - // When terminated and number, parse as either hexadecimal or decimal. - reference = parseInt(characters, bases[type]) - - // Trigger a warning when the parsed number is prohibited, and replace - // with replacement character. - if (prohibited(reference)) { - warning(numericProhibited, diff) - reference = fromCharCode(replacementCharacter) - } else if (reference in invalid) { - // Trigger a warning when the parsed number is disallowed, and replace - // by an alternative. - warning(numericDisallowed, diff) - reference = invalid[reference] - } else { - // Parse the number. - output = '' + // 5. Set controller’s serialized abort reason to serializedError. + this.serializedAbortReason = error - // Trigger a warning when the parsed number should not be used. - if (disallowed(reference)) { - warning(numericDisallowed, diff) - } + this.connection?.destroy(error) + this.emit('terminated', error) + } +} - // Stringify the number. - if (reference > 0xffff) { - reference -= 0x10000 - output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800) - reference = 0xdc00 | (reference & 0x3ff) - } +// https://fetch.spec.whatwg.org/#fetch-method +function fetch (input, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }) - reference = output + fromCharCode(reference) - } - } + // 1. Let p be a new promise. + const p = createDeferredPromise() - // Found it! - // First eat the queued characters as normal text, then eat an entity. - if (reference) { - flush() + // 2. Let requestObject be the result of invoking the initial value of + // Request as constructor with input and init as arguments. If this throws + // an exception, reject p with it and return p. + let requestObject - prev = now() - index = end - 1 - column += end - start + 1 - result.push(reference) - next = now() - next.offset++ + try { + requestObject = new Request(input, init) + } catch (e) { + p.reject(e) + return p.promise + } - if (handleReference) { - handleReference.call( - referenceContext, - reference, - {start: prev, end: next}, - value.slice(start - 1, end) - ) - } + // 3. Let request be requestObject’s request. + const request = requestObject[kState] - prev = next - } else { - // If we could not find a reference, queue the checked characters (as - // normal characters), and move the pointer to their end. - // This is possible because we can be certain neither newlines nor - // ampersands are included. - characters = value.slice(start - 1, end) - queue += characters - column += characters.length - index = end - 1 - } - } else { - // Handle anything other than an ampersand, including newlines and EOF. - if ( - character === 10 // Line feed - ) { - line++ - lines++ - column = 0 - } + // 4. If requestObject’s signal’s aborted flag is set, then: + if (requestObject.signal.aborted) { + // 1. Abort the fetch() call with p, request, null, and + // requestObject’s signal’s abort reason. + abortFetch(p, request, null, requestObject.signal.reason) - if (character === character) { - queue += fromCharCode(character) - column++ - } else { - flush() - } - } + // 2. Return p. + return p.promise } - // Return the reduced nodes. - return result.join('') + // 5. Let globalObject be request’s client’s global object. + const globalObject = request.client.globalObject - // Get current position. - function now() { - return { - line: line, - column: column, - offset: index + (pos.offset || 0) - } + // 6. If globalObject is a ServiceWorkerGlobalScope object, then set + // request’s service-workers mode to "none". + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none' } - // “Throw” a parse-error: a warning. - function parseError(code, offset) { - var position = now() + // 7. Let responseObject be null. + let responseObject = null - position.column += offset - position.offset += offset + // 8. Let relevantRealm be this’s relevant Realm. + const relevantRealm = null - handleWarning.call(warningContext, messages[code], position, code) - } + // 9. Let locallyAborted be false. + let locallyAborted = false - // Flush `queue` (normal text). - // Macro invoked before each entity and at the end of `value`. - // Does nothing when `queue` is empty. - function flush() { - if (queue) { - result.push(queue) + // 10. Let controller be null. + let controller = null - if (handleText) { - handleText.call(textContext, queue, {start: prev, end: now()}) - } + // 11. Add the following abort steps to requestObject’s signal: + addAbortListener( + requestObject.signal, + () => { + // 1. Set locallyAborted to true. + locallyAborted = true - queue = '' - } - } -} + // 2. Assert: controller is non-null. + assert(controller != null) -// Check if `character` is outside the permissible unicode range. -function prohibited(code) { - return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff -} + // 3. Abort controller with requestObject’s signal’s abort reason. + controller.abort(requestObject.signal.reason) -// Check if `character` is disallowed. -function disallowed(code) { - return ( - (code >= 0x0001 && code <= 0x0008) || - code === 0x000b || - (code >= 0x000d && code <= 0x001f) || - (code >= 0x007f && code <= 0x009f) || - (code >= 0xfdd0 && code <= 0xfdef) || - (code & 0xffff) === 0xffff || - (code & 0xffff) === 0xfffe + // 4. Abort the fetch() call with p, request, responseObject, + // and requestObject’s signal’s abort reason. + abortFetch(p, request, responseObject, requestObject.signal.reason) + } ) -} + // 12. Let handleFetchDone given response response be to finalize and + // report timing with response, globalObject, and "fetch". + const handleFetchDone = (response) => + finalizeAndReportTiming(response, 'fetch') + + // 13. Set controller to the result of calling fetch given request, + // with processResponseEndOfBody set to handleFetchDone, and processResponse + // given response being these substeps: + + const processResponse = (response) => { + // 1. If locallyAborted is true, terminate these substeps. + if (locallyAborted) { + return Promise.resolve() + } + + // 2. If response’s aborted flag is set, then: + if (response.aborted) { + // 1. Let deserializedError be the result of deserialize a serialized + // abort reason given controller’s serialized abort reason and + // relevantRealm. + + // 2. Abort the fetch() call with p, request, responseObject, and + // deserializedError. + + abortFetch(p, request, responseObject, controller.serializedAbortReason) + return Promise.resolve() + } + + // 3. If response is a network error, then reject p with a TypeError + // and terminate these substeps. + if (response.type === 'error') { + p.reject( + Object.assign(new TypeError('fetch failed'), { cause: response.error }) + ) + return Promise.resolve() + } + + // 4. Set responseObject to the result of creating a Response object, + // given response, "immutable", and relevantRealm. + responseObject = new Response() + responseObject[kState] = response + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm -/***/ }), + // 5. Resolve p with responseObject. + p.resolve(responseObject) + } -/***/ 42742: -/***/ ((module) => { + controller = fetching({ + request, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici + }) -"use strict"; + // 14. Return p. + return p.promise +} +// https://fetch.spec.whatwg.org/#finalize-and-report-timing +function finalizeAndReportTiming (response, initiatorType = 'other') { + // 1. If response is an aborted network error, then return. + if (response.type === 'error' && response.aborted) { + return + } -var isWindows = process.platform === 'win32'; + // 2. If response’s URL list is null or empty, then return. + if (!response.urlList?.length) { + return + } -// Regex to split a windows path into into [dir, root, basename, name, ext] -var splitWindowsRe = - /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; + // 3. Let originalURL be response’s URL list[0]. + const originalURL = response.urlList[0] -var win32 = {}; + // 4. Let timingInfo be response’s timing info. + let timingInfo = response.timingInfo -function win32SplitPath(filename) { - return splitWindowsRe.exec(filename).slice(1); -} + // 5. Let cacheState be response’s cache state. + let cacheState = response.cacheState -win32.parse = function(pathString) { - if (typeof pathString !== 'string') { - throw new TypeError( - "Parameter 'pathString' must be a string, not " + typeof pathString - ); + // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. + if (!urlIsHttpHttpsScheme(originalURL)) { + return } - var allParts = win32SplitPath(pathString); - if (!allParts || allParts.length !== 5) { - throw new TypeError("Invalid path '" + pathString + "'"); + + // 7. If timingInfo is null, then return. + if (timingInfo === null) { + return } - return { - root: allParts[1], - dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), - base: allParts[2], - ext: allParts[4], - name: allParts[3] - }; -}; + // 8. If response’s timing allow passed flag is not set, then: + if (!response.timingAllowPassed) { + // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }) + // 2. Set cacheState to the empty string. + cacheState = '' + } -// Split a filename into [dir, root, basename, name, ext], unix version -// 'root' is just a slash, or nothing. -var splitPathRe = - /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; -var posix = {}; + // 9. Set timingInfo’s end time to the coarsened shared current time + // given global’s relevant settings object’s cross-origin isolated + // capability. + // TODO: given global’s relevant settings object’s cross-origin isolated + // capability? + timingInfo.endTime = coarsenedSharedCurrentTime() + // 10. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo -function posixSplitPath(filename) { - return splitPathRe.exec(filename).slice(1); + // 11. Mark resource timing for timingInfo, originalURL, initiatorType, + // global, and cacheState. + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ) } - -posix.parse = function(pathString) { - if (typeof pathString !== 'string') { - throw new TypeError( - "Parameter 'pathString' must be a string, not " + typeof pathString - ); - } - var allParts = posixSplitPath(pathString); - if (!allParts || allParts.length !== 5) { - throw new TypeError("Invalid path '" + pathString + "'"); +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { + if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState) } - - return { - root: allParts[1], - dir: allParts[0].slice(0, -1), - base: allParts[2], - ext: allParts[4], - name: allParts[3], - }; -}; +} +// https://fetch.spec.whatwg.org/#abort-fetch +function abortFetch (p, request, responseObject, error) { + // Note: AbortSignal.reason was added in node v17.2.0 + // which would give us an undefined error to reject with. + // Remove this once node v16 is no longer supported. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } -if (isWindows) - module.exports = win32.parse; -else /* posix */ - module.exports = posix.parse; + // 1. Reject promise with error. + p.reject(error) -module.exports.posix = posix.parse; -module.exports.win32 = win32.parse; + // 2. If request’s body is not null and is readable, then cancel request’s + // body with error. + if (request.body != null && isReadable(request.body?.stream)) { + request.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } + // 3. If responseObject is null, then return. + if (responseObject == null) { + return + } -/***/ }), + // 4. Let response be responseObject’s response. + const response = responseObject[kState] -/***/ 90795: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 5. If response’s body is not null and is readable, then error response’s + // body with error. + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } +} -"use strict"; +// https://fetch.spec.whatwg.org/#fetching +function fetching ({ + request, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher // undici +}) { + // 1. Let taskDestination be null. + let taskDestination = null + // 2. Let crossOriginIsolatedCapability be false. + let crossOriginIsolatedCapability = false -const metadata = Symbol.for('pino.metadata') -const split = __nccwpck_require__(22011) -const duplexify = __nccwpck_require__(93265) + // 3. If request’s client is non-null, then: + if (request.client != null) { + // 1. Set taskDestination to request’s client’s global object. + taskDestination = request.client.globalObject -module.exports = function build (fn, opts = {}) { - const parseLines = opts.parse === 'lines' - const parseLine = typeof opts.parseLine === 'function' ? opts.parseLine : JSON.parse - const close = opts.close || defaultClose - const stream = split(function (line) { - let value + // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin + // isolated capability. + crossOriginIsolatedCapability = + request.client.crossOriginIsolatedCapability + } - try { - value = parseLine(line) - } catch (error) { - this.emit('unknown', line, error) - return - } + // 4. If useParallelQueue is true, then set taskDestination to the result of + // starting a new parallel queue. + // TODO - if (value === null) { - this.emit('unknown', line, 'Null value ignored') - return - } + // 5. Let timingInfo be a new fetch timing info whose start time and + // post-redirect start time are the coarsened shared current time given + // crossOriginIsolatedCapability. + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability) + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }) - if (typeof value !== 'object') { - value = { - data: value, - time: Date.now() - } + // 6. Let fetchParams be a new fetch params whose + // request is request, + // timing info is timingInfo, + // process request body chunk length is processRequestBodyChunkLength, + // process request end-of-body is processRequestEndOfBody, + // process response is processResponse, + // process response consume body is processResponseConsumeBody, + // process response end-of-body is processResponseEndOfBody, + // task destination is taskDestination, + // and cross-origin isolated capability is crossOriginIsolatedCapability. + const fetchParams = { + controller: new Fetch(dispatcher), + request, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + } + + // 7. If request’s body is a byte sequence, then set request’s body to + // request’s body as a body. + // NOTE: Since fetching is only called from fetch, body should already be + // extracted. + assert(!request.body || request.body.stream) + + // 8. If request’s window is "client", then set request’s window to request’s + // client, if request’s client’s global object is a Window object; otherwise + // "no-window". + if (request.window === 'client') { + // TODO: What if request.client is null? + request.window = + request.client?.globalObject?.constructor?.name === 'Window' + ? request.client + : 'no-window' + } + + // 9. If request’s origin is "client", then set request’s origin to request’s + // client’s origin. + if (request.origin === 'client') { + // TODO: What if request.client is null? + request.origin = request.client?.origin + } + + // 10. If all of the following conditions are true: + // TODO + + // 11. If request’s policy container is "client", then: + if (request.policyContainer === 'client') { + // 1. If request’s client is non-null, then set request’s policy + // container to a clone of request’s client’s policy container. [HTML] + if (request.client != null) { + request.policyContainer = clonePolicyContainer( + request.client.policyContainer + ) + } else { + // 2. Otherwise, set request’s policy container to a new policy + // container. + request.policyContainer = makePolicyContainer() } + } - if (stream[metadata]) { - stream.lastTime = value.time - stream.lastLevel = value.level - stream.lastObj = value - } + // 12. If request’s header list does not contain `Accept`, then: + if (!request.headersList.contains('accept')) { + // 1. Let value be `*/*`. + const value = '*/*' - if (parseLines) { - return line - } + // 2. A user agent should set value to the first matching statement, if + // any, switching on request’s destination: + // "document" + // "frame" + // "iframe" + // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` + // "image" + // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` + // "style" + // `text/css,*/*;q=0.1` + // TODO - return value - }, { autoDestroy: true }) + // 3. Append `Accept`/value to request’s header list. + request.headersList.append('accept', value) + } - stream._destroy = function (err, cb) { - const promise = close(err, cb) - if (promise && typeof promise.then === 'function') { - promise.then(cb, cb) - } + // 13. If request’s header list does not contain `Accept-Language`, then + // user agents should append `Accept-Language`/an appropriate value to + // request’s header list. + if (!request.headersList.contains('accept-language')) { + request.headersList.append('accept-language', '*') } - if (opts.metadata !== false) { - stream[metadata] = true - stream.lastTime = 0 - stream.lastLevel = 0 - stream.lastObj = null + // 14. If request’s priority is null, then use request’s initiator and + // destination appropriately in setting request’s priority to a + // user-agent-defined object. + if (request.priority === null) { + // TODO } - let res = fn(stream) + // 15. If request is a subresource request, then: + if (subresourceSet.has(request.destination)) { + // TODO + } - if (res && typeof res.catch === 'function') { - res.catch((err) => { - stream.destroy(err) + // 16. Run main fetch given fetchParams. + mainFetch(fetchParams) + .catch(err => { + fetchParams.controller.terminate(err) }) - // set it to null to not retain a reference to the promise - res = null - } else if (opts.enablePipelining && res) { - return duplexify(stream, res, { - objectMode: true - }) + // 17. Return fetchParam's controller + return fetchParams.controller +} + +// https://fetch.spec.whatwg.org/#concept-main-fetch +async function mainFetch (fetchParams, recursive = false) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. If request’s local-URLs-only flag is set and request’s current URL is + // not local, then set response to a network error. + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only') } - return stream -} + // 4. Run report Content Security Policy violations for request. + // TODO -function defaultClose (err, cb) { - process.nextTick(cb, err) -} + // 5. Upgrade request to a potentially trustworthy URL, if appropriate. + tryUpgradeRequestToAPotentiallyTrustworthyURL(request) + // 6. If should request be blocked due to a bad port, should fetching request + // be blocked as mixed content, or should request be blocked by Content + // Security Policy returns blocked, then set response to a network error. + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port') + } + // TODO: should fetching request be blocked as mixed content? + // TODO: should request be blocked by Content Security Policy? -/***/ }), + // 7. If request’s referrer policy is the empty string, then set request’s + // referrer policy to request’s policy container’s referrer policy. + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy + } -/***/ 22011: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 8. If request’s referrer is not "no-referrer", then set request’s + // referrer to the result of invoking determine request’s referrer. + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request) + } -"use strict"; -/* -Copyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com> + // 9. Set request’s current URL’s scheme to "https" if all of the following + // conditions are true: + // - request’s current URL’s scheme is "http" + // - request’s current URL’s host is a domain + // - Matching request’s current URL’s host per Known HSTS Host Domain Name + // Matching results in either a superdomain match with an asserted + // includeSubDomains directive or a congruent match (with or without an + // asserted includeSubDomains directive). [HSTS] + // TODO -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. + // 10. If recursive is false, then run the remaining steps in parallel. + // TODO -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ + // 11. If response is null, then set response to the result of running + // the steps corresponding to the first matching statement: + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request) + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || + // request’s current URL’s scheme is "data" + (currentURL.protocol === 'data:') || + // - request’s mode is "navigate" or "websocket" + (request.mode === 'navigate' || request.mode === 'websocket') + ) { + // 1. Set request’s response tainting to "basic". + request.responseTainting = 'basic' + // 2. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } -const { Transform } = __nccwpck_require__(12781) -const { StringDecoder } = __nccwpck_require__(71576) -const kLast = Symbol('last') -const kDecoder = Symbol('decoder') + // request’s mode is "same-origin" + if (request.mode === 'same-origin') { + // 1. Return a network error. + return makeNetworkError('request mode cannot be "same-origin"') + } -function transform (chunk, enc, cb) { - let list - if (this.overflow) { // Line buffer is full. Skip to start of next line. - const buf = this[kDecoder].write(chunk) - list = buf.split(this.matcher) + // request’s mode is "no-cors" + if (request.mode === 'no-cors') { + // 1. If request’s redirect mode is not "follow", then return a network + // error. + if (request.redirect !== 'follow') { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ) + } - if (list.length === 1) return cb() // Line ending not found. Discard entire chunk. + // 2. Set request’s response tainting to "opaque". + request.responseTainting = 'opaque' - // Line ending found. Discard trailing fragment of previous line and reset overflow state. - list.shift() - this.overflow = false - } else { - this[kLast] += this[kDecoder].write(chunk) - list = this[kLast].split(this.matcher) + // 3. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s current URL’s scheme is not an HTTP(S) scheme + if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { + // Return a network error. + return makeNetworkError('URL scheme must be a HTTP(S) scheme') + } + + // - request’s use-CORS-preflight flag is set + // - request’s unsafe-request flag is set and either request’s method is + // not a CORS-safelisted method or CORS-unsafe request-header names with + // request’s header list is not empty + // 1. Set request’s response tainting to "cors". + // 2. Let corsWithPreflightResponse be the result of running HTTP fetch + // given fetchParams and true. + // 3. If corsWithPreflightResponse is a network error, then clear cache + // entries using request. + // 4. Return corsWithPreflightResponse. + // TODO + + // Otherwise + // 1. Set request’s response tainting to "cors". + request.responseTainting = 'cors' + + // 2. Return the result of running HTTP fetch given fetchParams. + return await httpFetch(fetchParams) + })() } - this[kLast] = list.pop() + // 12. If recursive is true, then return response. + if (recursive) { + return response + } - for (let i = 0; i < list.length; i++) { - try { - push(this, this.mapper(list[i])) - } catch (error) { - return cb(error) + // 13. If response is not a network error and response is not a filtered + // response, then: + if (response.status !== 0 && !response.internalResponse) { + // If request’s response tainting is "cors", then: + if (request.responseTainting === 'cors') { + // 1. Let headerNames be the result of extracting header list values + // given `Access-Control-Expose-Headers` and response’s header list. + // TODO + // 2. If request’s credentials mode is not "include" and headerNames + // contains `*`, then set response’s CORS-exposed header-name list to + // all unique header names in response’s header list. + // TODO + // 3. Otherwise, if headerNames is not null or failure, then set + // response’s CORS-exposed header-name list to headerNames. + // TODO } - } - this.overflow = this[kLast].length > this.maxLength - if (this.overflow && !this.skipOverflow) { - cb(new Error('maximum buffer reached')) - return + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic') + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors') + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque') + } else { + assert(false) + } } - cb() -} + // 14. Let internalResponse be response, if response is a network error, + // and response’s internal response otherwise. + let internalResponse = + response.status === 0 ? response : response.internalResponse -function flush (cb) { - // forward any gibberish left in there - this[kLast] += this[kDecoder].end() + // 15. If internalResponse’s URL list is empty, then set it to a clone of + // request’s URL list. + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request.urlList) + } - if (this[kLast]) { - try { - push(this, this.mapper(this[kLast])) - } catch (error) { - return cb(error) - } + // 16. If request’s timing allow failed flag is unset, then set + // internalResponse’s timing allow passed flag. + if (!request.timingAllowFailed) { + response.timingAllowPassed = true } - cb() -} + // 17. If response is not a network error and any of the following returns + // blocked + // - should internalResponse to request be blocked as mixed content + // - should internalResponse to request be blocked by Content Security Policy + // - should internalResponse to request be blocked due to its MIME type + // - should internalResponse to request be blocked due to nosniff + // TODO -function push (self, val) { - if (val !== undefined) { - self.push(val) + // 18. If response’s type is "opaque", internalResponse’s status is 206, + // internalResponse’s range-requested flag is set, and request’s header + // list does not contain `Range`, then set response and internalResponse + // to a network error. + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request.headers.contains('range') + ) { + response = internalResponse = makeNetworkError() } -} -function noop (incoming) { - return incoming -} + // 19. If response is not a network error and either request’s method is + // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, + // set internalResponse’s body to null and disregard any enqueuing toward + // it (if any). + if ( + response.status !== 0 && + (request.method === 'HEAD' || + request.method === 'CONNECT' || + nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null + fetchParams.controller.dump = true + } -function split (matcher, mapper, options) { - // Set defaults for any arguments not supplied. - matcher = matcher || /\r?\n/ - mapper = mapper || noop - options = options || {} + // 20. If request’s integrity metadata is not the empty string, then: + if (request.integrity) { + // 1. Let processBodyError be this step: run fetch finale given fetchParams + // and a network error. + const processBodyError = (reason) => + fetchFinale(fetchParams, makeNetworkError(reason)) - // Test arguments explicitly. - switch (arguments.length) { - case 1: - // If mapper is only argument. - if (typeof matcher === 'function') { - mapper = matcher - matcher = /\r?\n/ - // If options is only argument. - } else if (typeof matcher === 'object' && !(matcher instanceof RegExp)) { - options = matcher - matcher = /\r?\n/ - } - break + // 2. If request’s response tainting is "opaque", or response’s body is null, + // then run processBodyError and abort these steps. + if (request.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error) + return + } - case 2: - // If mapper and options are arguments. - if (typeof matcher === 'function') { - options = mapper - mapper = matcher - matcher = /\r?\n/ - // If matcher and options are arguments. - } else if (typeof mapper === 'object') { - options = mapper - mapper = noop + // 3. Let processBody given bytes be these steps: + const processBody = (bytes) => { + // 1. If bytes do not match request’s integrity metadata, + // then run processBodyError and abort these steps. [SRI] + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch') + return } - } - options = Object.assign({}, options) - options.autoDestroy = true - options.transform = transform - options.flush = flush - options.readableObjectMode = true + // 2. Set response’s body to bytes as a body. + response.body = safelyExtractBody(bytes)[0] - const stream = new Transform(options) + // 3. Run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } - stream[kLast] = '' - stream[kDecoder] = new StringDecoder('utf8') - stream.matcher = matcher - stream.mapper = mapper - stream.maxLength = options.maxLength - stream.skipOverflow = options.skipOverflow || false - stream.overflow = false - stream._destroy = function (err, cb) { - // Weird Node v12 bug that we need to work around - this._writableState.errorEmitted = false - cb(err) + // 4. Fully read response’s body given processBody and processBodyError. + await fullyReadBody(response.body, processBody, processBodyError) + } else { + // 21. Otherwise, run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) } - - return stream } -module.exports = split +// https://fetch.spec.whatwg.org/#concept-scheme-fetch +// given a fetch params fetchParams +function schemeFetch (fetchParams) { + // Note: since the connection is destroyed on redirect, which sets fetchParams to a + // cancelled state, we do not want this condition to trigger *unless* there have been + // no redirects. See https://github.com/nodejs/undici/issues/1776 + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)) + } + // 2. Let request be fetchParams’s request. + const { request } = fetchParams -/***/ }), + const { protocol: scheme } = requestCurrentURL(request) -/***/ 725: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 3. Switch on request’s current URL’s scheme and run the associated steps: + switch (scheme) { + case 'about:': { + // If request’s current URL’s path is the string "blank", then return a new response + // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », + // and body is the empty byte sequence as a body. -"use strict"; + // Otherwise, return a network error. + return Promise.resolve(makeNetworkError('about scheme is not supported')) + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = (__nccwpck_require__(181).resolveObjectURL) + } + // 1. Let blobURLEntry be request’s current URL’s blob URL entry. + const blobURLEntry = requestCurrentURL(request) + + // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 + // Buffer.resolveObjectURL does not ignore URL queries. + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')) + } -const { format } = __nccwpck_require__(73837) + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()) -function build () { - const codes = {} - const emitted = new Map() + // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s + // object is not a Blob object, then return a network error. + if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError('invalid method')) + } - function create (name, code, message) { - if (!name) throw new Error('Warning name must not be empty') - if (!code) throw new Error('Warning code must not be empty') - if (!message) throw new Error('Warning message must not be empty') + // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. + const bodyWithType = safelyExtractBody(blobURLEntryObject) - code = code.toUpperCase() + // 4. Let body be bodyWithType’s body. + const body = bodyWithType[0] - if (codes[code] !== undefined) { - throw new Error(`The code '${code}' already exist`) - } + // 5. Let length be body’s length, serialized and isomorphic encoded. + const length = isomorphicEncode(`${body.length}`) - function buildWarnOpts (a, b, c) { - // more performant than spread (...) operator - let formatted - if (a && b && c) { - formatted = format(message, a, b, c) - } else if (a && b) { - formatted = format(message, a, b) - } else if (a) { - formatted = format(message, a) - } else { - formatted = message - } + // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. + const type = bodyWithType[1] ?? '' - return { - code, - name, - message: formatted - } - } + // 7. Return a new response whose status message is `OK`, header list is + // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. + const response = makeResponse({ + statusText: 'OK', + headersList: [ + ['content-length', { name: 'Content-Length', value: length }], + ['content-type', { name: 'Content-Type', value: type }] + ] + }) - emitted.set(code, false) - codes[code] = buildWarnOpts + response.body = body - return codes[code] - } + return Promise.resolve(response) + } + case 'data:': { + // 1. Let dataURLStruct be the result of running the + // data: URL processor on request’s current URL. + const currentURL = requestCurrentURL(request) + const dataURLStruct = dataURLProcessor(currentURL) - function emit (code, a, b, c) { - if (codes[code] === undefined) throw new Error(`The code '${code}' does not exist`) - if (emitted.get(code) === true) return - emitted.set(code, true) + // 2. If dataURLStruct is failure, then return a + // network error. + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')) + } - const warning = codes[code](a, b, c) - process.emitWarning(warning.message, warning.name, warning.code) - } + // 3. Let mimeType be dataURLStruct’s MIME type, serialized. + const mimeType = serializeAMimeType(dataURLStruct.mimeType) - return { - create, - emit, - emitted + // 4. Return a response whose status message is `OK`, + // header list is « (`Content-Type`, mimeType) », + // and body is dataURLStruct’s body as a body. + return Promise.resolve(makeResponse({ + statusText: 'OK', + headersList: [ + ['content-type', { name: 'Content-Type', value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })) + } + case 'file:': { + // For now, unfortunate as it is, file URLs are left as an exercise for the reader. + // When in doubt, return a network error. + return Promise.resolve(makeNetworkError('not implemented... yet...')) + } + case 'http:': + case 'https:': { + // Return the result of running HTTP fetch given fetchParams. + + return httpFetch(fetchParams) + .catch((err) => makeNetworkError(err)) + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')) + } } } -module.exports = build - +// https://fetch.spec.whatwg.org/#finalize-response +function finalizeResponse (fetchParams, response) { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true -/***/ }), + // 2, If fetchParams’s process response done is not null, then queue a fetch + // task to run fetchParams’s process response done given response, with + // fetchParams’s task destination. + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)) + } +} -/***/ 89595: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// https://fetch.spec.whatwg.org/#fetch-finale +function fetchFinale (fetchParams, response) { + // 1. If response is a network error, then: + if (response.type === 'error') { + // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». + response.urlList = [fetchParams.request.urlList[0]] -var once = __nccwpck_require__(87197) -var eos = __nccwpck_require__(92498) -var fs = __nccwpck_require__(57147) // we only need fs to get the ReadStream and WriteStream prototypes + // 2. Set response’s timing info to the result of creating an opaque timing + // info for fetchParams’s timing info. + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }) + } -var noop = function () {} -var ancient = /^v?\.0/.test(process.version) + // 2. Let processResponseEndOfBody be the following steps: + const processResponseEndOfBody = () => { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true -var isFn = function (fn) { - return typeof fn === 'function' -} + // If fetchParams’s process response end-of-body is not null, + // then queue a fetch task to run fetchParams’s process response + // end-of-body given response with fetchParams’s task destination. + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)) + } + } -var isFS = function (stream) { - if (!ancient) return false // newer node version do not need to care about fs is a special way - if (!fs) return false // browser - return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) -} + // 3. If fetchParams’s process response is non-null, then queue a fetch task + // to run fetchParams’s process response given response, with fetchParams’s + // task destination. + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)) + } -var isRequest = function (stream) { - return stream.setHeader && isFn(stream.abort) -} + // 4. If response’s body is null, then run processResponseEndOfBody. + if (response.body == null) { + processResponseEndOfBody() + } else { + // 5. Otherwise: -var destroyer = function (stream, reading, writing, callback) { - callback = once(callback) + // 1. Let transformStream be a new a TransformStream. - var closed = false - stream.on('close', function () { - closed = true - }) + // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, + // enqueues chunk in transformStream. + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk) + } - eos(stream, {readable: reading, writable: writing}, function (err) { - if (err) return callback(err) - closed = true - callback() - }) + // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm + // and flushAlgorithm set to processResponseEndOfBody. + const transformStream = new TransformStream({ + start () {}, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size () { + return 1 + } + }, { + size () { + return 1 + } + }) - var destroyed = false - return function (err) { - if (closed) return - if (destroyed) return - destroyed = true + // 4. Set response’s body to the result of piping response’s body through transformStream. + response.body = { stream: response.body.stream.pipeThrough(transformStream) } + } - if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks - if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want + // 6. If fetchParams’s process response consume body is non-null, then: + if (fetchParams.processResponseConsumeBody != null) { + // 1. Let processBody given nullOrBytes be this step: run fetchParams’s + // process response consume body given response and nullOrBytes. + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes) - if (isFn(stream.destroy)) return stream.destroy() + // 2. Let processBodyError be this step: run fetchParams’s process + // response consume body given response and failure. + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure) - callback(err || new Error('stream was destroyed')) + // 3. If response’s body is null, then queue a fetch task to run processBody + // given null, with fetchParams’s task destination. + if (response.body == null) { + queueMicrotask(() => processBody(null)) + } else { + // 4. Otherwise, fully read response’s body given processBody, processBodyError, + // and fetchParams’s task destination. + return fullyReadBody(response.body, processBody, processBodyError) + } + return Promise.resolve() } } -var call = function (fn) { - fn() -} +// https://fetch.spec.whatwg.org/#http-fetch +async function httpFetch (fetchParams) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request -var pipe = function (from, to) { - return from.pipe(to) -} + // 2. Let response be null. + let response = null -var pump = function () { - var streams = Array.prototype.slice.call(arguments) - var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop + // 3. Let actualResponse be null. + let actualResponse = null - if (Array.isArray(streams[0])) streams = streams[0] - if (streams.length < 2) throw new Error('pump requires two streams per minimum') + // 4. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo - var error - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1 - var writing = i > 0 - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err - if (err) destroys.forEach(call) - if (reading) return - destroys.forEach(call) - callback(error) - }) - }) + // 5. If request’s service-workers mode is "all", then: + if (request.serviceWorkers === 'all') { + // TODO + } - return streams.reduce(pipe) -} + // 6. If response is null, then: + if (response === null) { + // 1. If makeCORSPreflight is true and one of these conditions is true: + // TODO -module.exports = pump + // 2. If request’s redirect mode is "follow", then set request’s + // service-workers mode to "none". + if (request.redirect === 'follow') { + request.serviceWorkers = 'none' + } + // 3. Set response and actualResponse to the result of running + // HTTP-network-or-cache fetch given fetchParams. + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams) -/***/ }), + // 4. If request’s response tainting is "cors" and a CORS check + // for request and response returns failure, then return a network error. + if ( + request.responseTainting === 'cors' && + corsCheck(request, response) === 'failure' + ) { + return makeNetworkError('cors failure') + } -/***/ 34397: -/***/ ((module) => { + // 5. If the TAO check for request and response returns failure, then set + // request’s timing allow failed flag. + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true + } + } -"use strict"; + // 7. If either request’s response tainting or response’s type + // is "opaque", and the cross-origin resource policy check with + // request’s origin, request’s client, request’s destination, + // and actualResponse returns blocked, then return a network error. + if ( + (request.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck( + request.origin, + request.client, + request.destination, + actualResponse + ) === 'blocked' + ) { + return makeNetworkError('blocked') + } -function tryStringify (o) { - try { return JSON.stringify(o) } catch(e) { return '"[Circular]"' } -} - -module.exports = format - -function format(f, args, opts) { - var ss = (opts && opts.stringify) || tryStringify - var offset = 1 - if (typeof f === 'object' && f !== null) { - var len = args.length + offset - if (len === 1) return f - var objects = new Array(len) - objects[0] = ss(f) - for (var index = 1; index < len; index++) { - objects[index] = ss(args[index]) - } - return objects.join(' ') - } - if (typeof f !== 'string') { - return f - } - var argLen = args.length - if (argLen === 0) return f - var str = '' - var a = 1 - offset - var lastPos = -1 - var flen = (f && f.length) || 0 - for (var i = 0; i < flen;) { - if (f.charCodeAt(i) === 37 && i + 1 < flen) { - lastPos = lastPos > -1 ? lastPos : 0 - switch (f.charCodeAt(i + 1)) { - case 100: // 'd' - case 102: // 'f' - if (a >= argLen) - break - if (args[a] == null) break - if (lastPos < i) - str += f.slice(lastPos, i) - str += Number(args[a]) - lastPos = i + 2 - i++ - break - case 105: // 'i' - if (a >= argLen) - break - if (args[a] == null) break - if (lastPos < i) - str += f.slice(lastPos, i) - str += Math.floor(Number(args[a])) - lastPos = i + 2 - i++ - break - case 79: // 'O' - case 111: // 'o' - case 106: // 'j' - if (a >= argLen) - break - if (args[a] === undefined) break - if (lastPos < i) - str += f.slice(lastPos, i) - var type = typeof args[a] - if (type === 'string') { - str += '\'' + args[a] + '\'' - lastPos = i + 2 - i++ - break - } - if (type === 'function') { - str += args[a].name || '<anonymous>' - lastPos = i + 2 - i++ - break - } - str += ss(args[a]) - lastPos = i + 2 - i++ - break - case 115: // 's' - if (a >= argLen) - break - if (lastPos < i) - str += f.slice(lastPos, i) - str += String(args[a]) - lastPos = i + 2 - i++ - break - case 37: // '%' - if (lastPos < i) - str += f.slice(lastPos, i) - str += '%' - lastPos = i + 2 - i++ - a-- - break - } - ++a + // 8. If actualResponse’s status is a redirect status, then: + if (redirectStatusSet.has(actualResponse.status)) { + // 1. If actualResponse’s status is not 303, request’s body is not null, + // and the connection uses HTTP/2, then user agents may, and are even + // encouraged to, transmit an RST_STREAM frame. + // See, https://github.com/whatwg/fetch/issues/1288 + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy() + } + + // 2. Switch on request’s redirect mode: + if (request.redirect === 'error') { + // Set response to a network error. + response = makeNetworkError('unexpected redirect') + } else if (request.redirect === 'manual') { + // Set response to an opaque-redirect filtered response whose internal + // response is actualResponse. + // NOTE(spec): On the web this would return an `opaqueredirect` response, + // but that doesn't make sense server side. + // See https://github.com/nodejs/undici/issues/1193. + response = actualResponse + } else if (request.redirect === 'follow') { + // Set response to the result of running HTTP-redirect fetch given + // fetchParams and response. + response = await httpRedirectFetch(fetchParams, response) + } else { + assert(false) } - ++i - } - if (lastPos === -1) - return f - else if (lastPos < flen) { - str += f.slice(lastPos) } - return str + // 9. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 10. Return response. + return response } +// https://fetch.spec.whatwg.org/#http-redirect-fetch +function httpRedirectFetch (fetchParams, response) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request -/***/ }), + // 2. Let actualResponse be response, if response is not a filtered response, + // and response’s internal response otherwise. + const actualResponse = response.internalResponse + ? response.internalResponse + : response -/***/ 13130: -/***/ ((module) => { + // 3. Let locationURL be actualResponse’s location URL given request’s current + // URL’s fragment. + let locationURL -"use strict"; + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request).hash + ) + // 4. If locationURL is null, then return response. + if (locationURL == null) { + return response + } + } catch (err) { + // 5. If locationURL is failure, then return a network error. + return Promise.resolve(makeNetworkError(err)) + } -const codes = {}; + // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network + // error. + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')) + } -function createErrorType(code, message, Base) { - if (!Base) { - Base = Error + // 7. If request’s redirect count is 20, then return a network error. + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')) } - function getMessage (arg1, arg2, arg3) { - if (typeof message === 'string') { - return message - } else { - return message(arg1, arg2, arg3) - } + // 8. Increase request’s redirect count by 1. + request.redirectCount += 1 + + // 9. If request’s mode is "cors", locationURL includes credentials, and + // request’s origin is not same origin with locationURL’s origin, then return + // a network error. + if ( + request.mode === 'cors' && + (locationURL.username || locationURL.password) && + !sameOrigin(request, locationURL) + ) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')) } - class NodeError extends Base { - constructor (arg1, arg2, arg3) { - super(getMessage(arg1, arg2, arg3)); - } + // 10. If request’s response tainting is "cors" and locationURL includes + // credentials, then return a network error. + if ( + request.responseTainting === 'cors' && + (locationURL.username || locationURL.password) + ) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )) } - NodeError.prototype.name = Base.name; - NodeError.prototype.code = code; + // 11. If actualResponse’s status is not 303, request’s body is non-null, + // and request’s body’s source is null, then return a network error. + if ( + actualResponse.status !== 303 && + request.body != null && + request.body.source == null + ) { + return Promise.resolve(makeNetworkError()) + } - codes[code] = NodeError; -} + // 12. If one of the following is true + // - actualResponse’s status is 301 or 302 and request’s method is `POST` + // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` + if ( + ([301, 302].includes(actualResponse.status) && request.method === 'POST') || + (actualResponse.status === 303 && + !GET_OR_HEAD.includes(request.method)) + ) { + // then: + // 1. Set request’s method to `GET` and request’s body to null. + request.method = 'GET' + request.body = null -// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js -function oneOf(expected, thing) { - if (Array.isArray(expected)) { - const len = expected.length; - expected = expected.map((i) => String(i)); - if (len > 2) { - return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` + - expected[len - 1]; - } else if (len === 2) { - return `one of ${thing} ${expected[0]} or ${expected[1]}`; - } else { - return `of ${thing} ${expected[0]}`; + // 2. For each headerName of request-body-header name, delete headerName from + // request’s header list. + for (const headerName of requestBodyHeader) { + request.headersList.delete(headerName) } - } else { - return `of ${thing} ${String(expected)}`; } -} -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith -function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; -} + // 13. If request’s current URL’s origin is not same origin with locationURL’s + // origin, then for each headerName of CORS non-wildcard request-header name, + // delete headerName from request’s header list. + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name + request.headersList.delete('authorization') -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith -function endsWith(str, search, this_len) { - if (this_len === undefined || this_len > str.length) { - this_len = str.length; - } - return str.substring(this_len - search.length, this_len) === search; -} + // https://fetch.spec.whatwg.org/#authentication-entries + request.headersList.delete('proxy-authorization', true) -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes -function includes(str, search, start) { - if (typeof start !== 'number') { - start = 0; + // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. + request.headersList.delete('cookie') + request.headersList.delete('host') } - if (start + search.length > str.length) { - return false; - } else { - return str.indexOf(search, start) !== -1; + // 14. If request’s body is non-null, then set request’s body to the first return + // value of safely extracting request’s body’s source. + if (request.body != null) { + assert(request.body.source != null) + request.body = safelyExtractBody(request.body.source)[0] } -} -createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { - return 'The value "' + value + '" is invalid for option "' + name + '"' -}, TypeError); -createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { - // determiner: 'must be' or 'must not be' - let determiner; - if (typeof expected === 'string' && startsWith(expected, 'not ')) { - determiner = 'must not be'; - expected = expected.replace(/^not /, ''); - } else { - determiner = 'must be'; - } + // 15. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo - let msg; - if (endsWith(name, ' argument')) { - // For cases like 'first argument' - msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`; - } else { - const type = includes(name, '.') ? 'property' : 'argument'; - msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, 'type')}`; + // 16. Set timingInfo’s redirect end time and post-redirect start time to the + // coarsened shared current time given fetchParams’s cross-origin isolated + // capability. + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = + coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + + // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s + // redirect start time to timingInfo’s start time. + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime } - msg += `. Received type ${typeof actual}`; - return msg; -}, TypeError); -createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); -createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { - return 'The ' + name + ' method is not implemented' -}); -createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); -createErrorType('ERR_STREAM_DESTROYED', function (name) { - return 'Cannot call ' + name + ' after a stream was destroyed'; -}); -createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); -createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); -createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); -createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); -createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { - return 'Unknown encoding: ' + arg -}, TypeError); -createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); + // 18. Append locationURL to request’s URL list. + request.urlList.push(locationURL) -module.exports.q = codes; + // 19. Invoke set request’s referrer policy on redirect on request and + // actualResponse. + setRequestReferrerPolicyOnRedirect(request, actualResponse) + // 20. Return the result of running main fetch given fetchParams and true. + return mainFetch(fetchParams, true) +} -/***/ }), +// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch +async function httpNetworkOrCacheFetch ( + fetchParams, + isAuthenticationFetch = false, + isNewConnectionFetch = false +) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request -/***/ 88393: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. Let httpFetchParams be null. + let httpFetchParams = null -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. + // 3. Let httpRequest be null. + let httpRequest = null -/*<replacement>*/ + // 4. Let response be null. + let response = null -var objectKeys = Object.keys || function (obj) { - var keys = []; + // 5. Let storedResponse be null. + // TODO: cache - for (var key in obj) { - keys.push(key); - } + // 6. Let httpCache be null. + const httpCache = null - return keys; -}; -/*</replacement>*/ + // 7. Let the revalidatingFlag be unset. + const revalidatingFlag = false + // 8. Run these steps, but abort when the ongoing fetch is terminated: -module.exports = Duplex; + // 1. If request’s window is "no-window" and request’s redirect mode is + // "error", then set httpFetchParams to fetchParams and httpRequest to + // request. + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams + httpRequest = request + } else { + // Otherwise: -var Readable = __nccwpck_require__(80284); + // 1. Set httpRequest to a clone of request. + httpRequest = makeRequest(request) -var Writable = __nccwpck_require__(36100); + // 2. Set httpFetchParams to a copy of fetchParams. + httpFetchParams = { ...fetchParams } -__nccwpck_require__(76919)(Duplex, Readable); + // 3. Set httpFetchParams’s request to httpRequest. + httpFetchParams.request = httpRequest + } -{ - // Allow the keys array to be GC'ed. - var keys = objectKeys(Writable.prototype); + // 3. Let includeCredentials be true if one of + const includeCredentials = + request.credentials === 'include' || + (request.credentials === 'same-origin' && + request.responseTainting === 'basic') - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} + // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s + // body is non-null; otherwise null. + const contentLength = httpRequest.body ? httpRequest.body.length : null -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - Readable.call(this, options); - Writable.call(this, options); - this.allowHalfOpen = true; + // 5. Let contentLengthHeaderValue be null. + let contentLengthHeaderValue = null - if (options) { - if (options.readable === false) this.readable = false; - if (options.writable === false) this.writable = false; + // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or + // `PUT`, then set contentLengthHeaderValue to `0`. + if ( + httpRequest.body == null && + ['POST', 'PUT'].includes(httpRequest.method) + ) { + contentLengthHeaderValue = '0' + } - if (options.allowHalfOpen === false) { - this.allowHalfOpen = false; - this.once('end', onend); - } + // 7. If contentLength is non-null, then set contentLengthHeaderValue to + // contentLength, serialized and isomorphic encoded. + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`) } -} -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; + // 8. If contentLengthHeaderValue is non-null, then append + // `Content-Length`/contentLengthHeaderValue to httpRequest’s header + // list. + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue) } -}); -Object.defineProperty(Duplex.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); + + // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, + // contentLengthHeaderValue) to httpRequest’s header list. + + // 10. If contentLength is non-null and httpRequest’s keepalive is true, + // then: + if (contentLength != null && httpRequest.keepalive) { + // NOTE: keepalive is a noop outside of browser context. } -}); -Object.defineProperty(Duplex.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; + + // 11. If httpRequest’s referrer is a URL, then append + // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, + // to httpRequest’s header list. + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)) } -}); // the no-half-open enforcer -function onend() { - // If the writable side ended, then we're ok. - if (this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. + // 12. Append a request `Origin` header for httpRequest. + appendRequestOriginHeader(httpRequest) - process.nextTick(onEndNT, this); -} + // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] + appendFetchMetadata(httpRequest) -function onEndNT(self) { - self.end(); -} + // 14. If httpRequest’s header list does not contain `User-Agent`, then + // user agents should append `User-Agent`/default `User-Agent` value to + // httpRequest’s header list. + if (!httpRequest.headersList.contains('user-agent')) { + httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node') + } -Object.defineProperty(Duplex.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined || this._writableState === undefined) { - return false; + // 15. If httpRequest’s cache mode is "default" and httpRequest’s header + // list contains `If-Modified-Since`, `If-None-Match`, + // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set + // httpRequest’s cache mode to "no-store". + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since') || + httpRequest.headersList.contains('if-none-match') || + httpRequest.headersList.contains('if-unmodified-since') || + httpRequest.headersList.contains('if-match') || + httpRequest.headersList.contains('if-range')) + ) { + httpRequest.cache = 'no-store' + } + + // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent + // no-cache cache-control header modification flag is unset, and + // httpRequest’s header list does not contain `Cache-Control`, then append + // `Cache-Control`/`max-age=0` to httpRequest’s header list. + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control') + ) { + httpRequest.headersList.append('cache-control', 'max-age=0') + } + + // 17. If httpRequest’s cache mode is "no-store" or "reload", then: + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + // 1. If httpRequest’s header list does not contain `Pragma`, then append + // `Pragma`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('pragma')) { + httpRequest.headersList.append('pragma', 'no-cache') } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed + // 2. If httpRequest’s header list does not contain `Cache-Control`, + // then append `Cache-Control`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'no-cache') + } + } + // 18. If httpRequest’s header list contains `Range`, then append + // `Accept-Encoding`/`identity` to httpRequest’s header list. + if (httpRequest.headersList.contains('range')) { + httpRequest.headersList.append('accept-encoding', 'identity') + } - this._readableState.destroyed = value; - this._writableState.destroyed = value; + // 19. Modify httpRequest’s header list per HTTP. Do not append a given + // header if httpRequest’s header list contains that header’s name. + // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 + if (!httpRequest.headersList.contains('accept-encoding')) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate') + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate') + } } -}); -/***/ }), + httpRequest.headersList.delete('host') -/***/ 55125: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 20. If includeCredentials is true, then: + if (includeCredentials) { + // 1. If the user agent is not configured to block cookies for httpRequest + // (see section 7 of [COOKIES]), then: + // TODO: credentials + // 2. If httpRequest’s header list does not contain `Authorization`, then: + // TODO: credentials + } -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. + // 21. If there’s a proxy-authentication entry, use it as appropriate. + // TODO: proxy-authentication + // 22. Set httpCache to the result of determining the HTTP cache + // partition, given httpRequest. + // TODO: cache -module.exports = PassThrough; + // 23. If httpCache is null, then set httpRequest’s cache mode to + // "no-store". + if (httpCache == null) { + httpRequest.cache = 'no-store' + } -var Transform = __nccwpck_require__(65469); + // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", + // then: + if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + // TODO: cache + } -__nccwpck_require__(76919)(PassThrough, Transform); + // 9. If aborted, then return the appropriate network error for fetchParams. + // TODO -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform.call(this, options); -} + // 10. If response is null, then: + if (response == null) { + // 1. If httpRequest’s cache mode is "only-if-cached", then return a + // network error. + if (httpRequest.mode === 'only-if-cached') { + return makeNetworkError('only if cached') + } -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; + // 2. Let forwardResponse be the result of running HTTP-network fetch + // given httpFetchParams, includeCredentials, and isNewConnectionFetch. + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ) -/***/ }), + // 3. If httpRequest’s method is unsafe and forwardResponse’s status is + // in the range 200 to 399, inclusive, invalidate appropriate stored + // responses in httpCache, as per the "Invalidation" chapter of HTTP + // Caching, and set storedResponse to null. [HTTP-CACHING] + if ( + !safeMethodsSet.has(httpRequest.method) && + forwardResponse.status >= 200 && + forwardResponse.status <= 399 + ) { + // TODO: cache + } -/***/ 80284: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, + // then: + if (revalidatingFlag && forwardResponse.status === 304) { + // TODO: cache + } -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + // 5. If response is null, then: + if (response == null) { + // 1. Set response to forwardResponse. + response = forwardResponse + // 2. Store httpRequest and forwardResponse in httpCache, as per the + // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] + // TODO: cache + } + } -module.exports = Readable; -/*<replacement>*/ + // 11. Set response’s URL list to a clone of httpRequest’s URL list. + response.urlList = [...httpRequest.urlList] -var Duplex; -/*</replacement>*/ + // 12. If httpRequest’s header list contains `Range`, then set response’s + // range-requested flag. + if (httpRequest.headersList.contains('range')) { + response.rangeRequested = true + } -Readable.ReadableState = ReadableState; -/*<replacement>*/ + // 13. Set response’s request-includes-credentials to includeCredentials. + response.requestIncludesCredentials = includeCredentials -var EE = (__nccwpck_require__(82361).EventEmitter); + // 14. If response’s status is 401, httpRequest’s response tainting is not + // "cors", includeCredentials is true, and request’s window is an environment + // settings object, then: + // TODO -var EElistenerCount = function EElistenerCount(emitter, type) { - return emitter.listeners(type).length; -}; -/*</replacement>*/ + // 15. If response’s status is 407, then: + if (response.status === 407) { + // 1. If request’s window is "no-window", then return a network error. + if (request.window === 'no-window') { + return makeNetworkError() + } -/*<replacement>*/ + // 2. ??? + // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 4. Prompt the end user as appropriate in request’s window and store + // the result as a proxy-authentication entry. [HTTP-AUTH] + // TODO: Invoke some kind of callback? + + // 5. Set response to the result of running HTTP-network-or-cache fetch given + // fetchParams. + // TODO + return makeNetworkError('proxy authentication required') + } -var Stream = __nccwpck_require__(35016); -/*</replacement>*/ + // 16. If all of the following are true + if ( + // response’s status is 421 + response.status === 421 && + // isNewConnectionFetch is false + !isNewConnectionFetch && + // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request.body == null || request.body.source != null) + ) { + // then: + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } -var Buffer = (__nccwpck_require__(14300).Buffer); + // 2. Set response to the result of running HTTP-network-or-cache + // fetch given fetchParams, isAuthenticationFetch, and true. -var OurUint8Array = global.Uint8Array || function () {}; + // TODO (spec): The spec doesn't specify this but we need to cancel + // the active response before we can start a new one. + // https://github.com/whatwg/fetch/issues/1293 + fetchParams.controller.connection.destroy() -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ) + } + + // 17. If isAuthenticationFetch is true, then create an authentication entry + if (isAuthenticationFetch) { + // TODO + } -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; + // 18. Return response. + return response } -/*<replacement>*/ +// https://fetch.spec.whatwg.org/#http-network-fetch +async function httpNetworkFetch ( + fetchParams, + includeCredentials = false, + forceNewConnection = false +) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed) -var debugUtil = __nccwpck_require__(73837); + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy (err) { + if (!this.destroyed) { + this.destroyed = true + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) + } + } + } -var debug; + // 1. Let request be fetchParams’s request. + const request = fetchParams.request -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function debug() {}; -} -/*</replacement>*/ + // 2. Let response be null. + let response = null + // 3. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo -var BufferList = __nccwpck_require__(63900); + // 4. Let httpCache be the result of determining the HTTP cache partition, + // given request. + // TODO: cache + const httpCache = null + + // 5. If httpCache is null, then set request’s cache mode to "no-store". + if (httpCache == null) { + request.cache = 'no-store' + } -var destroyImpl = __nccwpck_require__(3090); + // 6. Let networkPartitionKey be the result of determining the network + // partition key given request. + // TODO -var _require = __nccwpck_require__(5785), - getHighWaterMark = _require.getHighWaterMark; + // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise + // "no". + const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars -var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + // 8. Switch on request’s mode: + if (request.mode === 'websocket') { + // Let connection be the result of obtaining a WebSocket connection, + // given request’s current URL. + // TODO + } else { + // Let connection be the result of obtaining a connection, given + // networkPartitionKey, request’s current URL’s origin, + // includeCredentials, and forceNewConnection. + // TODO + } + // 9. Run these steps, but abort when the ongoing fetch is terminated: -var StringDecoder; -var createReadableStreamAsyncIterator; -var from; + // 1. If connection is failure, then return a network error. -__nccwpck_require__(76919)(Readable, Stream); + // 2. Set timingInfo’s final connection timing info to the result of + // calling clamp and coarsen connection timing info with connection’s + // timing info, timingInfo’s post-redirect start time, and fetchParams’s + // cross-origin isolated capability. -var errorOrDestroy = destroyImpl.errorOrDestroy; -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + // 3. If connection is not an HTTP/2 connection, request’s body is non-null, + // and request’s body’s source is null, then append (`Transfer-Encoding`, + // `chunked`) to request’s header list. -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. + // 4. Set timingInfo’s final network-request start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated + // capability. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} + // 5. Set response to the result of making an HTTP request over connection + // using request with the following caveats: -function ReadableState(options, stream, isDuplex) { - Duplex = Duplex || __nccwpck_require__(88393); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. + // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] + // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away + // - If request’s body is non-null, and request’s body’s source is null, + // then the user agent may have a buffer of up to 64 kibibytes and store + // a part of request’s body in that buffer. If the user agent reads from + // request’s body beyond that buffer’s size and the user agent needs to + // resend request, then instead return a network error. - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" + // - Set timingInfo’s final network-response start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated capability, + // immediately after the user agent’s HTTP parser receives the first byte + // of the response (e.g., frame header bytes for HTTP/2 or response status + // line for HTTP/1.x). - this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() + // - Wait until all the headers are transmitted. - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. + // - Any responses whose status is in the range 100 to 199, inclusive, + // and is not 101, are to be ignored, except for the purposes of setting + // timingInfo’s final network-response start time above. - this.sync = true; // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. + // - If request’s header list contains `Transfer-Encoding`/`chunked` and + // response is transferred via HTTP/1.0 or older, then return a network + // error. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - this.paused = true; // Should close be emitted on destroy. Defaults to true. + // - If the HTTP request results in a TLS client certificate dialog, then: - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + // 1. If request’s window is an environment settings object, make the + // dialog available in request’s window. - this.autoDestroy = !!options.autoDestroy; // has it been destroyed + // 2. Otherwise, return a network error. - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. + // To transmit request’s body body, run these steps: + let requestBody = null + // 1. If body is null and fetchParams’s process request end-of-body is + // non-null, then queue a fetch task given fetchParams’s process request + // end-of-body and fetchParams’s task destination. + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()) + } else if (request.body != null) { + // 2. Otherwise, if body is non-null: - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + // 1. Let processBodyChunk given bytes be these steps: + const processBodyChunk = async function * (bytes) { + // 1. If the ongoing fetch is terminated, then abort these steps. + if (isCancelled(fetchParams)) { + return + } - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + // 2. Run this step in parallel: transmit bytes. + yield bytes - this.readingMore = false; - this.decoder = null; - this.encoding = null; + // 3. If fetchParams’s process request body is non-null, then run + // fetchParams’s process request body given bytes’s length. + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength) + } - if (options.encoding) { - if (!StringDecoder) StringDecoder = (__nccwpck_require__(60642)/* .StringDecoder */ .s); - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} + // 2. Let processEndOfBody be these steps: + const processEndOfBody = () => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } -function Readable(options) { - Duplex = Duplex || __nccwpck_require__(88393); - if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5 + // 2. If fetchParams’s process request end-of-body is non-null, + // then run fetchParams’s process request end-of-body. + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody() + } + } - var isDuplex = this instanceof Duplex; - this._readableState = new ReadableState(options, this, isDuplex); // legacy + // 3. Let processBodyError given e be these steps: + const processBodyError = (e) => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } - this.readable = true; + // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. + if (e.name === 'AbortError') { + fetchParams.controller.abort() + } else { + fetchParams.controller.terminate(e) + } + } - if (options) { - if (typeof options.read === 'function') this._read = options.read; - if (typeof options.destroy === 'function') this._destroy = options.destroy; + // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, + // processBodyError, and fetchParams’s task destination. + requestBody = (async function * () { + try { + for await (const bytes of request.body.stream) { + yield * processBodyChunk(bytes) + } + processEndOfBody() + } catch (err) { + processBodyError(err) + } + })() } - Stream.call(this); -} + try { + // socket is only provided for websockets + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }) -Object.defineProperty(Readable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._readableState === undefined) { - return false; + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }) + } else { + const iterator = body[Symbol.asyncIterator]() + fetchParams.controller.next = () => iterator.next() + + response = makeResponse({ status, statusText, headersList }) } + } catch (err) { + // 10. If aborted, then: + if (err.name === 'AbortError') { + // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. + fetchParams.controller.connection.destroy() - return this._readableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed + // 2. Return the appropriate network error for fetchParams. + return makeAppropriateNetworkError(fetchParams, err) + } + return makeNetworkError(err) + } - this._readableState.destroyed = value; + // 11. Let pullAlgorithm be an action that resumes the ongoing fetch + // if it is suspended. + const pullAlgorithm = () => { + fetchParams.controller.resume() } -}); -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; -Readable.prototype._destroy = function (err, cb) { - cb(err); -}; // Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. + // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s + // controller with reason, given reason. + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason) + } + // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by + // the user agent. + // TODO -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; + // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object + // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. + // TODO - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; + // 15. Let stream be a new ReadableStream. + // 16. Set up stream with pullAlgorithm set to pullAlgorithm, + // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to + // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; + const stream = new ReadableStream( + { + async start (controller) { + fetchParams.controller.controller = controller + }, + async pull (controller) { + await pullAlgorithm(controller) + }, + async cancel (reason) { + await cancelAlgorithm(reason) + } + }, + { + highWaterMark: 0, + size () { + return 1 } - - skipChunkCheck = true; } - } else { - skipChunkCheck = true; - } + ) - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() + // 17. Run these steps, but abort when the ongoing fetch is terminated: + // 1. Set response’s body to a new body whose stream is stream. + response.body = { stream } -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; + // 2. If response is not a network error and request’s cache mode is + // not "no-store", then update response in httpCache for request. + // TODO -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - debug('readableAddChunk', chunk); - var state = stream._readableState; + // 3. If includeCredentials is true and the user agent is not configured + // to block cookies for request (see section 7 of [COOKIES]), then run the + // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on + // the value of each header whose name is a byte-case-insensitive match for + // `Set-Cookie` in response’s header list, if any, and request’s current URL. + // TODO - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); + // 18. If aborted, then: + // TODO - if (er) { - errorOrDestroy(stream, er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); - } + // 19. Run these steps in parallel: - if (addToFront) { - if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); - } else if (state.destroyed) { - return false; - } else { - state.reading = false; + // 1. Run these steps, but abort when fetchParams is canceled: + fetchParams.controller.on('terminated', onAborted) + fetchParams.controller.resume = async () => { + // 1. While true + while (true) { + // 1-3. See onData... - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); + // 4. Set bytes to the result of handling content codings given + // codings and bytes. + let bytes + let isFailure + try { + const { done, value } = await fetchParams.controller.next() + + if (isAborted(fetchParams)) { + break } - } - } else if (!addToFront) { - state.reading = false; - maybeReadMore(stream, state); - } - } // We can push more data if we are below the highWaterMark. - // Also, if we have no data yet, we can stand some more bytes. - // This is to work around cases where hwm=0, such as the repl. + bytes = done ? undefined : value + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + // zlib doesn't like empty streams. + bytes = undefined + } else { + bytes = err - return !state.ended && (state.length < state.highWaterMark || state.length === 0); -} + // err may be propagated from the result of calling readablestream.cancel, + // which might not be an error. https://github.com/nodejs/undici/issues/2009 + isFailure = true + } + } -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - state.awaitDrain = 0; - stream.emit('data', chunk); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (state.needReadable) emitReadable(stream); - } + if (bytes === undefined) { + // 2. Otherwise, if the bytes transmission for response’s message + // body is done normally and stream is readable, then close + // stream, finalize response for fetchParams and response, and + // abort these in-parallel steps. + readableStreamClose(fetchParams.controller.controller) - maybeReadMore(stream, state); -} + finalizeResponse(fetchParams, response) -function chunkInvalid(state, chunk) { - var er; + return + } - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); - } + // 5. Increase timingInfo’s decoded body size by bytes’s length. + timingInfo.decodedBodySize += bytes?.byteLength ?? 0 - return er; -} + // 6. If bytes is failure, then terminate fetchParams’s controller. + if (isFailure) { + fetchParams.controller.terminate(bytes) + return + } -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; // backwards compatibility. + // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes + // into stream. + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)) + // 8. If stream is errored, then terminate the ongoing fetch. + if (isErrored(stream)) { + fetchParams.controller.terminate() + return + } -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = (__nccwpck_require__(60642)/* .StringDecoder */ .s); - var decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + // 9. If stream doesn’t need more data ask the user agent to suspend + // the ongoing fetch. + if (!fetchParams.controller.controller.desiredSize) { + return + } + } + } - this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + // 2. If aborted, then: + function onAborted (reason) { + // 2. If fetchParams is aborted, then: + if (isAborted(fetchParams)) { + // 1. Set response’s aborted flag. + response.aborted = true - var p = this._readableState.buffer.head; - var content = ''; + // 2. If stream is readable, then error stream with the result of + // deserialize a serialized abort reason given fetchParams’s + // controller’s serialized abort reason and an + // implementation-defined realm. + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ) + } + } else { + // 3. Otherwise, if stream is readable, error stream with a TypeError. + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : undefined + })) + } + } - while (p !== null) { - content += decoder.write(p.data); - p = p.next; + // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. + // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. + fetchParams.controller.connection.destroy() } - this._readableState.buffer.clear(); + // 20. Return response. + return response + + async function dispatch ({ body }) { + const url = requestCurrentURL(request) + /** @type {import('../..').Agent} */ + const agent = fetchParams.controller.dispatcher - if (content !== '') this._readableState.buffer.push(content); - this._readableState.length = content.length; - return this; -}; // Don't raise the hwm > 1GB + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : undefined + }, + { + body: null, + abort: null, + onConnect (abort) { + // TODO (fix): Do we need connection here? + const { connection } = fetchParams.controller -var MAX_HWM = 0x40000000; + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')) + } else { + fetchParams.controller.on('terminated', abort) + this.abort = connection.abort = abort + } + }, -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } + onHeaders (status, headersList, resume, statusText) { + if (status < 200) { + return + } - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. + let codings = [] + let location = '' + + const headers = new Headers() + + // For H2, the headers are a plain JS object + // We distinguish between them and iterate accordingly + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()) + } else if (key.toLowerCase() === 'location') { + location = val + } + headers[kHeadersList].append(key, val) + } + } else { + const keys = Object.keys(headersList) + for (const key of keys) { + const val = headersList[key] + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse() + } else if (key.toLowerCase() === 'location') { + location = val + } -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; + headers[kHeadersList].append(key, val) + } + } - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. + this.body = new Readable({ read: resume }) + + const decoders = [] + + const willFollow = request.redirect === 'follow' && + location && + redirectStatusSet.has(status) + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })) + } else if (coding === 'deflate') { + decoders.push(zlib.createInflate()) + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()) + } else { + decoders.length = 0 + break + } + } + } + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length + ? pipeline(this.body, ...decoders, () => { }) + : this.body.on('error', () => {}) + }) - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough + return true + }, - if (!state.ended) { - state.needReadable = true; - return 0; - } + onData (chunk) { + if (fetchParams.controller.dump) { + return + } - return state.length; -} // you can override either this method, or the async _read(n) below. + // 1. If one or more bytes have been transmitted from response’s + // message body, then: + // 1. Let bytes be the transmitted bytes. + const bytes = chunk -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. + // 2. Let codings be the result of extracting header list values + // given `Content-Encoding` and response’s header list. + // See pullAlgorithm. - if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } + // 3. Increase timingInfo’s encoded body size by bytes’s length. + timingInfo.encodedBodySize += bytes.byteLength - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + // 4. See pullAlgorithm... - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. + return this.body.push(bytes) + }, + onComplete () { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } - var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + fetchParams.controller.ended = true - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. + this.body.push(null) + }, + onError (error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. + this.body?.destroy(error) - if (state.length === 0) state.needReadable = true; // call internal read method + fetchParams.controller.terminate(error) - this._read(state.highWaterMark); + reject(error) + }, - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. + onUpgrade (status, headersList, socket) { + if (status !== 101) { + return + } - if (!state.reading) n = howMuchToRead(nOrig, state); - } + const headers = new Headers() - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark; - n = 0; - } else { - state.length -= n; - state.awaitDrain = 0; - } + headers[kHeadersList].append(key, val) + } - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }) - if (nOrig !== n && state.ended) endReadable(this); + return true + } + } + )) } +} - if (ret !== null) this.emit('data', ret); - return ret; -}; +module.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming +} -function onEofChunk(stream, state) { - debug('onEofChunk'); - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); +/***/ }), - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } +/***/ 5194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - state.ended = true; +"use strict"; +/* globals AbortController */ - if (state.sync) { - // if we are sync, wait until next tick to emit the data. - // Otherwise we risk emitting data in the flow() - // the readable code triggers during a read() call - emitReadable(stream); - } else { - // emit 'readable' now to make sure it gets picked up. - state.needReadable = false; - if (!state.emittedReadable) { - state.emittedReadable = true; - emitReadable_(stream); - } - } -} // Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. +const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(8923) +const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(6349) +const { FinalizationRegistry } = __nccwpck_require__(3194)() +const util = __nccwpck_require__(3440) +const { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer, + normalizeMethodRecord +} = __nccwpck_require__(5523) +const { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex +} = __nccwpck_require__(7326) +const { kEnumerableProperty } = util +const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(9710) +const { webidl } = __nccwpck_require__(4222) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { URLSerializer } = __nccwpck_require__(4322) +const { kHeadersList, kConstruct } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(4434) + +let TransformStream = globalThis.TransformStream + +const kAbortController = Symbol('abortController') + +const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort) +}) -function emitReadable(stream) { - var state = stream._readableState; - debug('emitReadable', state.needReadable, state.emittedReadable); - state.needReadable = false; +// https://fetch.spec.whatwg.org/#request-class +class Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor (input, init = {}) { + if (input === kConstruct) { + return + } - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - process.nextTick(emitReadable_, stream); - } -} + webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }) -function emitReadable_(stream) { - var state = stream._readableState; - debug('emitReadable_', state.destroyed, state.length, state.ended); + input = webidl.converters.RequestInfo(input) + init = webidl.converters.RequestInit(init) - if (!state.destroyed && (state.length || state.ended)) { - stream.emit('readable'); - state.emittedReadable = false; - } // The stream needs another readable event if - // 1. It is not flowing, as the flow mechanism will take - // care of it. - // 2. It is not ended. - // 3. It is below the highWaterMark, so we can schedule - // another readable later. + // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin () { + return this.baseUrl?.origin + }, + policyContainer: makePolicyContainer() + } + } + // 1. Let request be null. + let request = null - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; - flow(stream); -} // at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. + // 2. Let fallbackMode be null. + let fallbackMode = null + // 3. Let baseURL be this’s relevant settings object’s API base URL. + const baseUrl = this[kRealm].settingsObject.baseUrl -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(maybeReadMore_, stream, state); - } -} + // 4. Let signal be null. + let signal = null -function maybeReadMore_(stream, state) { - // Attempt to read more data if we should. - // - // The conditions for reading more data are (one of): - // - Not enough data buffered (state.length < state.highWaterMark). The loop - // is responsible for filling the buffer with enough data if such data - // is available. If highWaterMark is 0 and we are not in the flowing mode - // we should _not_ attempt to buffer any extra data. We'll get more data - // when the stream consumer calls read() instead. - // - No data in the buffer, and the stream is in flowing mode. In this mode - // the loop below is responsible for ensuring read() is called. Failing to - // call read here would abort the flow and there's no other mechanism for - // continuing the flow if the stream consumer has just subscribed to the - // 'data' event. - // - // In addition to the above conditions to keep reading data, the following - // conditions prevent the data from being read: - // - The stream has ended (state.ended). - // - There is already a pending 'read' operation (state.reading). This is a - // case where the the stream has called the implementation defined _read() - // method, but they are processing the call asynchronously and have _not_ - // called push() with new data. In this case we skip performing more - // read()s. The execution ends in this method again after the _read() ends - // up calling push() with more data. - while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { - var len = state.length; - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. - break; - } + // 5. If input is a string, then: + if (typeof input === 'string') { + // 1. Let parsedURL be the result of parsing input with baseURL. + // 2. If parsedURL is failure, then throw a TypeError. + let parsedURL + try { + parsedURL = new URL(input, baseUrl) + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }) + } - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. + // 3. If parsedURL includes credentials, then throw a TypeError. + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + 'Request cannot be constructed from a URL that includes credentials: ' + + input + ) + } + // 4. Set request to a new request whose URL is parsedURL. + request = makeRequest({ urlList: [parsedURL] }) -Readable.prototype._read = function (n) { - errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); -}; + // 5. Set fallbackMode to "cors". + fallbackMode = 'cors' + } else { + // 6. Otherwise: -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; + // 7. Assert: input is a Request object. + assert(input instanceof Request) - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; + // 8. Set request to input’s request. + request = input[kState] - case 1: - state.pipes = [state.pipes, dest]; - break; + // 9. Set signal to input’s signal. + signal = input[kSignal] + } - default: - state.pipes.push(dest); - break; - } + // 7. Let origin be this’s relevant settings object’s origin. + const origin = this[kRealm].settingsObject.origin - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); - dest.on('unpipe', onunpipe); + // 8. Let window be "client". + let window = 'client' - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); + // 9. If request’s window is an environment settings object and its origin + // is same origin with origin, then set window to request’s window. + if ( + request.window?.constructor?.name === 'EnvironmentSettingsObject' && + sameOrigin(request.window, origin) + ) { + window = request.window + } + + // 10. If init["window"] exists and is non-null, then throw a TypeError. + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`) + } + + // 11. If init["window"] exists, then set window to "no-window". + if ('window' in init) { + window = 'no-window' + } + + // 12. Set request to a new request with the following properties: + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request.urlList] + }) + + const initHasKey = Object.keys(init).length !== 0 - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); + // 13. If init is not empty, then: + if (initHasKey) { + // 1. If request’s mode is "navigate", then set it to "same-origin". + if (request.mode === 'navigate') { + request.mode = 'same-origin' } - } - } - function onend() { - debug('onend'); - dest.end(); - } // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. + // 2. Unset request’s reload-navigation flag. + request.reloadNavigation = false + // 3. Unset request’s history-navigation flag. + request.historyNavigation = false - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - var cleanedUp = false; + // 4. Set request’s origin to "client". + request.origin = 'client' - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken + // 5. Set request’s referrer to "client" + request.referrer = 'client' - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. + // 6. Set request’s referrer policy to the empty string. + request.referrerPolicy = '' - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } + // 7. Set request’s URL to request’s current URL. + request.url = request.urlList[request.urlList.length - 1] - src.on('data', ondata); + // 8. Set request’s URL list to « request’s URL ». + request.urlList = [request.url] + } - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - debug('dest.write', ret); + // 14. If init["referrer"] exists, then: + if (init.referrer !== undefined) { + // 1. Let referrer be init["referrer"]. + const referrer = init.referrer - if (ret === false) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', state.awaitDrain); - state.awaitDrain++; - } + // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". + if (referrer === '') { + request.referrer = 'no-referrer' + } else { + // 1. Let parsedReferrer be the result of parsing referrer with + // baseURL. + // 2. If parsedReferrer is failure, then throw a TypeError. + let parsedReferrer + try { + parsedReferrer = new URL(referrer, baseUrl) + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) + } - src.pause(); + // 3. If one of the following is true + // - parsedReferrer’s scheme is "about" and path is the string "client" + // - parsedReferrer’s origin is not same origin with origin + // then set request’s referrer to "client". + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) + ) { + request.referrer = 'client' + } else { + // 4. Otherwise, set request’s referrer to parsedReferrer. + request.referrer = parsedReferrer + } + } } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. + // 15. If init["referrerPolicy"] exists, then set request’s referrer policy + // to it. + if (init.referrerPolicy !== undefined) { + request.referrerPolicy = init.referrerPolicy + } - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); - } // Make sure our error handler is attached before userland ones. + // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. + let mode + if (init.mode !== undefined) { + mode = init.mode + } else { + mode = fallbackMode + } + // 17. If mode is "navigate", then throw a TypeError. + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }) + } - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + // 18. If mode is non-null, set request’s mode to mode. + if (mode != null) { + request.mode = mode + } - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } + // 19. If init["credentials"] exists, then set request’s credentials mode + // to it. + if (init.credentials !== undefined) { + request.credentials = init.credentials + } - dest.once('close', onclose); + // 18. If init["cache"] exists, then set request’s cache mode to it. + if (init.cache !== undefined) { + request.cache = init.cache + } - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } + // 21. If request’s cache mode is "only-if-cached" and request’s mode is + // not "same-origin", then throw a TypeError. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ) + } - dest.once('finish', onfinish); + // 22. If init["redirect"] exists, then set request’s redirect mode to it. + if (init.redirect !== undefined) { + request.redirect = init.redirect + } - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } // tell the dest that it's being piped to + // 23. If init["integrity"] exists, then set request’s integrity metadata to it. + if (init.integrity != null) { + request.integrity = String(init.integrity) + } + // 24. If init["keepalive"] exists, then set request’s keepalive to it. + if (init.keepalive !== undefined) { + request.keepalive = Boolean(init.keepalive) + } - dest.emit('pipe', src); // start the flow if it hasn't been started already. + // 25. If init["method"] exists, then: + if (init.method !== undefined) { + // 1. Let method be init["method"]. + let method = init.method - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } + // 2. If method is not a method or method is a forbidden method, then + // throw a TypeError. + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`) + } - return dest; -}; + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw new TypeError(`'${method}' HTTP method is unsupported.`) + } -function pipeOnDrain(src) { - return function pipeOnDrainFunctionResult() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; + // 3. Normalize method. + method = normalizeMethodRecord[method] ?? normalizeMethod(method) - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); + // 4. Set request’s method to method. + request.method = method } - }; -} -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { - hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. + // 26. If init["signal"] exists, then set signal to it. + if (init.signal !== undefined) { + signal = init.signal + } - if (state.pipesCount === 0) return this; // just one destination. most common case. + // 27. Set this’s request to request. + this[kState] = request - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. + // 28. Set this’s signal to a new AbortSignal object with this’s relevant + // Realm. + // TODO: could this be simplified with AbortSignal.any + // (https://dom.spec.whatwg.org/#dom-abortsignal-any) + const ac = new AbortController() + this[kSignal] = ac.signal + this[kSignal][kRealm] = this[kRealm] - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } // slow case. multiple pipe destinations. + // 29. If signal is not null, then make this’s signal follow signal. + if (signal != null) { + if ( + !signal || + typeof signal.aborted !== 'boolean' || + typeof signal.addEventListener !== 'function' + ) { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ) + } + if (signal.aborted) { + ac.abort(signal.reason) + } else { + // Keep a strong ref to ac while request object + // is alive. This is needed to prevent AbortController + // from being prematurely garbage collected. + // See, https://github.com/nodejs/undici/issues/1926. + this[kAbortController] = ac + + const acRef = new WeakRef(ac) + const abort = function () { + const ac = acRef.deref() + if (ac !== undefined) { + ac.abort(this.reason) + } + } - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; + // Third-party AbortControllers may not work with these. + // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. + try { + // If the max amount of listeners is equal to the default, increase it + // This is only available in node >= v19.9.0 + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal) + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(100, signal) + } + } catch {} - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); + util.addAbortListener(signal, abort) + requestFinalizer.register(ac, { signal, abort }) + } } - return this; - } // try to find the right one. - - - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); - return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something + // 30. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is request’s header list and guard is + // "request". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kHeadersList] = request.headersList + this[kHeaders][kGuard] = 'request' + this[kHeaders][kRealm] = this[kRealm] + // 31. If this’s request’s mode is "no-cors", then: + if (mode === 'no-cors') { + // 1. If this’s request’s method is not a CORS-safelisted method, + // then throw a TypeError. + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError( + `'${request.method} is unsupported in no-cors mode.` + ) + } -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - var state = this._readableState; + // 2. Set this’s headers’s guard to "request-no-cors". + this[kHeaders][kGuard] = 'request-no-cors' + } - if (ev === 'data') { - // update readableListening so that resume() may be a no-op - // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + // 32. If init is not empty, then: + if (initHasKey) { + /** @type {HeadersList} */ + const headersList = this[kHeaders][kHeadersList] + // 1. Let headers be a copy of this’s headers and its associated header + // list. + // 2. If init["headers"] exists, then set headers to init["headers"]. + const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList) - if (state.flowing !== false) this.resume(); - } else if (ev === 'readable') { - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.flowing = false; - state.emittedReadable = false; - debug('on readable', state.length, state.reading); + // 3. Empty this’s headers’s header list. + headersList.clear() - if (state.length) { - emitReadable(this); - } else if (!state.reading) { - process.nextTick(nReadingNextTick, this); + // 4. If headers is a Headers object, then for each header in its header + // list, append header’s name/header’s value to this’s headers. + if (headers instanceof HeadersList) { + for (const [key, val] of headers) { + headersList.append(key, val) + } + // Note: Copy the `set-cookie` meta-data. + headersList.cookies = headers.cookies + } else { + // 5. Otherwise, fill this’s headers with headers. + fillHeaders(this[kHeaders], headers) } } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; + // 33. Let inputBody be input’s request’s body if input is a Request + // object; otherwise null. + const inputBody = input instanceof Request ? input[kState].body : null -Readable.prototype.removeListener = function (ev, fn) { - var res = Stream.prototype.removeListener.call(this, ev, fn); + // 34. If either init["body"] exists and is non-null or inputBody is + // non-null, and request’s method is `GET` or `HEAD`, then throw a + // TypeError. + if ( + (init.body != null || inputBody != null) && + (request.method === 'GET' || request.method === 'HEAD') + ) { + throw new TypeError('Request with GET/HEAD method cannot have body.') + } - if (ev === 'readable') { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } + // 35. Let initBody be null. + let initBody = null - return res; -}; + // 36. If init["body"] exists and is non-null, then: + if (init.body != null) { + // 1. Let Content-Type be null. + // 2. Set initBody and Content-Type to the result of extracting + // init["body"], with keepalive set to request’s keepalive. + const [extractedBody, contentType] = extractBody( + init.body, + request.keepalive + ) + initBody = extractedBody -Readable.prototype.removeAllListeners = function (ev) { - var res = Stream.prototype.removeAllListeners.apply(this, arguments); + // 3, If Content-Type is non-null and this’s headers’s header list does + // not contain `Content-Type`, then append `Content-Type`/Content-Type to + // this’s headers. + if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { + this[kHeaders].append('content-type', contentType) + } + } - if (ev === 'readable' || ev === undefined) { - // We need to check if there is someone still listening to - // readable and reset the state. However this needs to happen - // after readable has been emitted but before I/O (nextTick) to - // support once('readable', fn) cycles. This means that calling - // resume within the same tick will have no - // effect. - process.nextTick(updateReadableListening, this); - } + // 37. Let inputOrInitBody be initBody if it is non-null; otherwise + // inputBody. + const inputOrInitBody = initBody ?? inputBody - return res; -}; + // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is + // null, then: + if (inputOrInitBody != null && inputOrInitBody.source == null) { + // 1. If initBody is non-null and init["duplex"] does not exist, + // then throw a TypeError. + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.') + } -function updateReadableListening(self) { - var state = self._readableState; - state.readableListening = self.listenerCount('readable') > 0; + // 2. If this’s request’s mode is neither "same-origin" nor "cors", + // then throw a TypeError. + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ) + } - if (state.resumeScheduled && !state.paused) { - // flowing needs to be set to true now, otherwise - // the upcoming resume will not flow. - state.flowing = true; // crude way to check if we should resume - } else if (self.listenerCount('data') > 0) { - self.resume(); - } -} + // 3. Set this’s request’s use-CORS-preflight flag. + request.useCORSPreflightFlag = true + } -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. + // 39. Let finalBody be inputOrInitBody. + let finalBody = inputOrInitBody + // 40. If initBody is null and inputBody is non-null, then: + if (initBody == null && inputBody != null) { + // 1. If input is unusable, then throw a TypeError. + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + 'Cannot construct a Request with a Request object that has already been used.' + ) + } -Readable.prototype.resume = function () { - var state = this._readableState; + // 2. Set finalBody to the result of creating a proxy for inputBody. + if (!TransformStream) { + TransformStream = (__nccwpck_require__(3774).TransformStream) + } - if (!state.flowing) { - debug('resume'); // we flow only if there is no one listening - // for readable, but we still have to call - // resume() + // https://streams.spec.whatwg.org/#readablestream-create-a-proxy + const identityTransform = new TransformStream() + inputBody.stream.pipeThrough(identityTransform) + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + } + } - state.flowing = !state.readableListening; - resume(this, state); + // 41. Set this’s request’s body to finalBody. + this[kState].body = finalBody } - state.paused = false; - return this; -}; + // Returns request’s HTTP method, which is "GET" by default. + get method () { + webidl.brandCheck(this, Request) -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(resume_, stream, state); + // The method getter steps are to return this’s request’s method. + return this[kState].method } -} -function resume_(stream, state) { - debug('resume', state.reading); + // Returns the URL of request as a string. + get url () { + webidl.brandCheck(this, Request) - if (!state.reading) { - stream.read(0); + // The url getter steps are to return this’s request’s URL, serialized. + return URLSerializer(this[kState].url) } - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers () { + webidl.brandCheck(this, Request) - if (this._readableState.flowing !== false) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); + // The headers getter steps are to return this’s headers. + return this[kHeaders] } - this._readableState.paused = true; - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination () { + webidl.brandCheck(this, Request) - while (state.flowing && stream.read() !== null) { - ; + // The destination getter are to return this’s request’s destination. + return this[kState].destination } -} // wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. - - -Readable.prototype.wrap = function (stream) { - var _this = this; - - var state = this._readableState; - var paused = false; - stream.on('end', function () { - debug('wrapped end'); - - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } - - _this.push(null); - }); - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode - - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - var ret = _this.push(chunk); + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer () { + webidl.brandCheck(this, Request) - if (!ret) { - paused = true; - stream.pause(); + // 1. If this’s request’s referrer is "no-referrer", then return the + // empty string. + if (this[kState].referrer === 'no-referrer') { + return '' } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function methodWrap(method) { - return function methodWrapReturnFunction() { - return stream[method].apply(stream, arguments); - }; - }(i); + // 2. If this’s request’s referrer is "client", then return + // "about:client". + if (this[kState].referrer === 'client') { + return 'about:client' } - } // proxy certain important events. - - - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. + // Return this’s request’s referrer, serialized. + return this[kState].referrer.toString() + } - this._read = function (n) { - debug('wrapped _read', n); - - if (paused) { - paused = false; - stream.resume(); - } - }; - - return this; -}; + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy () { + webidl.brandCheck(this, Request) -if (typeof Symbol === 'function') { - Readable.prototype[Symbol.asyncIterator] = function () { - if (createReadableStreamAsyncIterator === undefined) { - createReadableStreamAsyncIterator = __nccwpck_require__(42250); - } + // The referrerPolicy getter steps are to return this’s request’s referrer policy. + return this[kState].referrerPolicy + } - return createReadableStreamAsyncIterator(this); - }; -} + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode () { + webidl.brandCheck(this, Request) -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.highWaterMark; - } -}); -Object.defineProperty(Readable.prototype, 'readableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState && this._readableState.buffer; + // The mode getter steps are to return this’s request’s mode. + return this[kState].mode } -}); -Object.defineProperty(Readable.prototype, 'readableFlowing', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.flowing; - }, - set: function set(state) { - if (this._readableState) { - this._readableState.flowing = state; - } - } -}); // exposed for testing purposes only. - -Readable._fromList = fromList; -Object.defineProperty(Readable.prototype, 'readableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._readableState.length; - } -}); // Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. - -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = state.buffer.consume(n, state.decoder); - } - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - debug('endReadable', state.endEmitted); - if (!state.endEmitted) { - state.ended = true; - process.nextTick(endReadableNT, state, stream); + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials () { + // The credentials getter steps are to return this’s request’s credentials mode. + return this[kState].credentials } -} -function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache () { + webidl.brandCheck(this, Request) - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); + // The cache getter steps are to return this’s request’s cache mode. + return this[kState].cache + } - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the writable side is ready for autoDestroy as well - var wState = stream._writableState; + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect () { + webidl.brandCheck(this, Request) - if (!wState || wState.autoDestroy && wState.finished) { - stream.destroy(); - } - } + // The redirect getter steps are to return this’s request’s redirect mode. + return this[kState].redirect } -} - -if (typeof Symbol === 'function') { - Readable.from = function (iterable, opts) { - if (from === undefined) { - from = __nccwpck_require__(57453); - } - return from(Readable, iterable, opts); - }; -} + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity () { + webidl.brandCheck(this, Request) -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; + // The integrity getter steps are to return this’s request’s integrity + // metadata. + return this[kState].integrity } - return -1; -} - -/***/ }), + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive () { + webidl.brandCheck(this, Request) -/***/ 65469: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // The keepalive getter steps are to return this’s request’s keepalive. + return this[kState].keepalive + } -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation () { + webidl.brandCheck(this, Request) + // The isReloadNavigation getter steps are to return true if this’s + // request’s reload-navigation flag is set; otherwise false. + return this[kState].reloadNavigation + } -module.exports = Transform; + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation () { + webidl.brandCheck(this, Request) -var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, - ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + // The isHistoryNavigation getter steps are to return true if this’s request’s + // history-navigation flag is set; otherwise false. + return this[kState].historyNavigation + } -var Duplex = __nccwpck_require__(88393); + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal () { + webidl.brandCheck(this, Request) -__nccwpck_require__(76919)(Transform, Duplex); + // The signal getter steps are to return this’s signal. + return this[kSignal] + } -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; - var cb = ts.writecb; + get body () { + webidl.brandCheck(this, Request) - if (cb === null) { - return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + return this[kState].body ? this[kState].body.stream : null } - ts.writechunk = null; - ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - cb(er); - var rs = this._readableState; - rs.reading = false; + get bodyUsed () { + webidl.brandCheck(this, Request) - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - Duplex.call(this, options); - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. + get duplex () { + webidl.brandCheck(this, Request) - this._readableState.sync = false; + return 'half' + } - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. + // Returns a clone of request. + clone () { + webidl.brandCheck(this, Request) + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || this.body?.locked) { + throw new TypeError('unusable') + } - this.on('prefinish', prefinish); -} + // 2. Let clonedRequest be the result of cloning this’s request. + const clonedRequest = cloneRequest(this[kState]) -function prefinish() { - var _this = this; + // 3. Let clonedRequestObject be the result of creating a Request object, + // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. + const clonedRequestObject = new Request(kConstruct) + clonedRequestObject[kState] = clonedRequest + clonedRequestObject[kRealm] = this[kRealm] + clonedRequestObject[kHeaders] = new Headers(kConstruct) + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm] - if (typeof this._flush === 'function' && !this._readableState.destroyed) { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); + // 4. Make clonedRequestObject’s signal follow this’s signal. + const ac = new AbortController() + if (this.signal.aborted) { + ac.abort(this.signal.reason) + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason) + } + ) + } + clonedRequestObject[kSignal] = ac.signal + + // 4. Return clonedRequestObject. + return clonedRequestObject + } +} + +mixinBody(Request) + +function makeRequest (init) { + // https://fetch.spec.whatwg.org/#requests + const request = { + method: 'GET', + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: '', + window: 'client', + keepalive: false, + serviceWorkers: 'all', + initiator: '', + destination: '', + priority: null, + origin: 'client', + policyContainer: 'client', + referrer: 'client', + referrerPolicy: '', + mode: 'no-cors', + useCORSPreflightFlag: false, + credentials: 'same-origin', + useCredentials: false, + cache: 'default', + redirect: 'follow', + integrity: '', + cryptoGraphicsNonceMetadata: '', + parserMetadata: '', + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: 'basic', + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList() + } + request.url = request.urlList[0] + return request +} + +// https://fetch.spec.whatwg.org/#concept-request-clone +function cloneRequest (request) { + // To clone a request request, run these steps: + + // 1. Let newRequest be a copy of request, except for its body. + const newRequest = makeRequest({ ...request, body: null }) + + // 2. If request’s body is non-null, set newRequest’s body to the + // result of cloning request’s body. + if (request.body != null) { + newRequest.body = cloneBody(request.body) + } + + // 3. Return newRequest. + return newRequest +} + +Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true } -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. - - -Transform.prototype._transform = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); -}; +}) -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; +webidl.converters.Request = webidl.interfaceConverter( + Request +) - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) } -}; // Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. + if (V instanceof Request) { + return webidl.converters.Request(V) + } -Transform.prototype._read = function (n) { - var ts = this._transformState; + return webidl.converters.USVString(V) +} - if (ts.writechunk !== null && !ts.transforming) { - ts.transforming = true; +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex } -}; - -Transform.prototype._destroy = function (err, cb) { - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - }); -}; +]) -function done(stream, er, data) { - if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // TODO(BridgeAR): Write a test for these two error cases - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided +module.exports = { Request, makeRequest } - if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); - if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); - return stream.push(null); -} /***/ }), -/***/ 36100: +/***/ 8676: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - - -module.exports = Writable; -/* <replacement> */ - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} // It seems a linked list but it is not -// there will be only 2 of these for each stream - - -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); - }; -} -/* </replacement> */ -/*<replacement>*/ +const { Headers, HeadersList, fill } = __nccwpck_require__(6349) +const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(8923) +const util = __nccwpck_require__(3440) +const { kEnumerableProperty } = util +const { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode +} = __nccwpck_require__(5523) +const { + redirectStatusSet, + nullBodyStatus, + DOMException +} = __nccwpck_require__(7326) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) +const { webidl } = __nccwpck_require__(4222) +const { FormData } = __nccwpck_require__(3073) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { URLSerializer } = __nccwpck_require__(4322) +const { kHeadersList, kConstruct } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { types } = __nccwpck_require__(9023) + +const ReadableStream = globalThis.ReadableStream || (__nccwpck_require__(3774).ReadableStream) +const textEncoder = new TextEncoder('utf-8') + +// https://fetch.spec.whatwg.org/#response-class +class Response { + // Creates network error Response. + static error () { + // TODO + const relevantRealm = { settingsObject: {} } + + // The static error() method steps are to return the result of creating a + // Response object, given a new network error, "immutable", and this’s + // relevant Realm. + const responseObject = new Response() + responseObject[kState] = makeNetworkError() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response-json + static json (data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }) + + if (init !== null) { + init = webidl.converters.ResponseInit(init) + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ) -var Duplex; -/*</replacement>*/ - -Writable.WritableState = WritableState; -/*<replacement>*/ - -var internalUtil = { - deprecate: __nccwpck_require__(49209) -}; -/*</replacement>*/ - -/*<replacement>*/ + // 2. Let body be the result of extracting bytes. + const body = extractBody(bytes) -var Stream = __nccwpck_require__(35016); -/*</replacement>*/ + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + const relevantRealm = { settingsObject: {} } + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'response' + responseObject[kHeaders][kRealm] = relevantRealm + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) -var Buffer = (__nccwpck_require__(14300).Buffer); + // 5. Return responseObject. + return responseObject + } -var OurUint8Array = global.Uint8Array || function () {}; + // Creates a redirect Response that redirects to url with status status. + static redirect (url, status = 302) { + const relevantRealm = { settingsObject: {} } -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }) -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; -} + url = webidl.converters.USVString(url) + status = webidl.converters['unsigned short'](status) -var destroyImpl = __nccwpck_require__(3090); + // 1. Let parsedURL be the result of parsing url with current settings + // object’s API base URL. + // 2. If parsedURL is failure, then throw a TypeError. + // TODO: base-URL? + let parsedURL + try { + parsedURL = new URL(url, getGlobalOrigin()) + } catch (err) { + throw Object.assign(new TypeError('Failed to parse URL from ' + url), { + cause: err + }) + } -var _require = __nccwpck_require__(5785), - getHighWaterMark = _require.getHighWaterMark; + // 3. If status is not a redirect status, then throw a RangeError. + if (!redirectStatusSet.has(status)) { + throw new RangeError('Invalid status code ' + status) + } -var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, - ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + // 4. Let responseObject be the result of creating a Response object, + // given a new response, "immutable", and this’s relevant Realm. + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm -var errorOrDestroy = destroyImpl.errorOrDestroy; + // 5. Set responseObject’s response’s status to status. + responseObject[kState].status = status -__nccwpck_require__(76919)(Writable, Stream); + // 6. Let value be parsedURL, serialized and isomorphic encoded. + const value = isomorphicEncode(URLSerializer(parsedURL)) -function nop() {} + // 7. Append `Location`/value to responseObject’s response’s header list. + responseObject[kState].headersList.append('location', value) -function WritableState(options, stream, isDuplex) { - Duplex = Duplex || __nccwpck_require__(88393); - options = options || {}; // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream, - // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + // 8. Return responseObject. + return responseObject + } - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream - // contains buffers or objects. + // https://fetch.spec.whatwg.org/#dom-response + constructor (body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body) + } - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() + init = webidl.converters.ResponseInit(init) - this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + // TODO + this[kRealm] = { settingsObject: {} } - this.finalCalled = false; // drain event flag. + // 1. Set this’s response to a new response. + this[kState] = makeResponse({}) - this.needDrain = false; // at the start of calling end() + // 2. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is this’s response’s header list and guard + // is "response". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kGuard] = 'response' + this[kHeaders][kHeadersList] = this[kState].headersList + this[kHeaders][kRealm] = this[kRealm] - this.ending = false; // when end() has been called, and returned + // 3. Let bodyWithType be null. + let bodyWithType = null - this.ended = false; // when 'finish' is emitted + // 4. If body is non-null, then set bodyWithType to the result of extracting body. + if (body != null) { + const [extractedBody, type] = extractBody(body) + bodyWithType = { body: extractedBody, type } + } - this.finished = false; // has it been destroyed + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType) + } - this.destroyed = false; // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. + // Returns response’s type, e.g., "cors". + get type () { + webidl.brandCheck(this, Response) - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. + // The type getter steps are to return this’s response’s type. + return this[kState].type + } - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. + // Returns response’s URL, if it has one; otherwise the empty string. + get url () { + webidl.brandCheck(this, Response) - this.length = 0; // a flag to see when we're in the middle of a write. + const urlList = this[kState].urlList - this.writing = false; // when true all writes will be buffered until .uncork() call + // The url getter steps are to return the empty string if this’s + // response’s URL is null; otherwise this’s response’s URL, + // serialized with exclude fragment set to true. + const url = urlList[urlList.length - 1] ?? null - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. + if (url === null) { + return '' + } - this.sync = true; // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. + return URLSerializer(url, true) + } - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + // Returns whether response was obtained through a redirect. + get redirected () { + webidl.brandCheck(this, Response) - this.onwrite = function (er) { - onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) + // The redirected getter steps are to return true if this’s response’s URL + // list has more than one item; otherwise false. + return this[kState].urlList.length > 1 + } + // Returns response’s status. + get status () { + webidl.brandCheck(this, Response) - this.writecb = null; // the amount that is being written when _write is called. + // The status getter steps are to return this’s response’s status. + return this[kState].status + } - this.writelen = 0; - this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted + // Returns whether response’s status is an ok status. + get ok () { + webidl.brandCheck(this, Response) - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams + // The ok getter steps are to return true if this’s response’s status is an + // ok status; otherwise false. + return this[kState].status >= 200 && this[kState].status <= 299 + } - this.prefinished = false; // True if the error was already emitted and should not be thrown again + // Returns response’s status message. + get statusText () { + webidl.brandCheck(this, Response) - this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + // The statusText getter steps are to return this’s response’s status + // message. + return this[kState].statusText + } - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + // Returns response’s headers as Headers. + get headers () { + webidl.brandCheck(this, Response) - this.autoDestroy = !!options.autoDestroy; // count buffered requests + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two + get body () { + webidl.brandCheck(this, Response) - this.corkedRequestsFree = new CorkedRequest(this); -} + return this[kState].body ? this[kState].body.stream : null + } -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; + get bodyUsed () { + webidl.brandCheck(this, Response) - while (current) { - out.push(current); - current = current.next; + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) } - return out; -}; + // Returns a clone of response. + clone () { + webidl.brandCheck(this, Response) -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function writableStateBufferGetter() { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || (this.body && this.body.locked)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }) + } + // 2. Let clonedResponse be the result of cloning this’s response. + const clonedResponse = cloneResponse(this[kState]) -var realHasInstance; + // 3. Return the result of creating a Response object, given + // clonedResponse, this’s headers’s guard, and this’s relevant Realm. + const clonedResponseObject = new Response() + clonedResponseObject[kState] = clonedResponse + clonedResponseObject[kRealm] = this[kRealm] + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm] -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function value(object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function realHasInstance(object) { - return object instanceof this; - }; + return clonedResponseObject + } } -function Writable(options) { - Duplex = Duplex || __nccwpck_require__(88393); // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - // Checking for a Stream.Duplex instance is faster here instead of inside - // the WritableState constructor, at least with V8 6.5 +mixinBody(Response) - var isDuplex = this instanceof Duplex; - if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); - this._writableState = new WritableState(options, this, isDuplex); // legacy. +Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } +}) - this.writable = true; +Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty +}) - if (options) { - if (typeof options.write === 'function') this._write = options.write; - if (typeof options.writev === 'function') this._writev = options.writev; - if (typeof options.destroy === 'function') this._destroy = options.destroy; - if (typeof options.final === 'function') this._final = options.final; +// https://fetch.spec.whatwg.org/#concept-response-clone +function cloneResponse (response) { + // To clone a response response, run these steps: + + // 1. If response is a filtered response, then return a new identical + // filtered response whose internal response is a clone of response’s + // internal response. + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ) } - Stream.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. + // 2. Let newResponse be a copy of response, except for its body. + const newResponse = makeResponse({ ...response, body: null }) + // 3. If response’s body is non-null, then set newResponse’s body to the + // result of cloning response’s body. + if (response.body != null) { + newResponse.body = cloneBody(response.body) + } -Writable.prototype.pipe = function () { - errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); -}; - -function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + // 4. Return newResponse. + return newResponse +} - errorOrDestroy(stream, er); - process.nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. +function makeResponse (init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + } +} + +function makeNetworkError (reason) { + const isError = isErrorLike(reason) + return makeResponse({ + type: 'error', + status: 0, + error: isError + ? reason + : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }) +} +function makeFilteredResponse (response, state) { + state = { + internalResponse: response, + ...state + } -function validChunk(stream, state, chunk, cb) { - var er; + return new Proxy(response, { + get (target, p) { + return p in state ? state[p] : target[p] + }, + set (target, p, value) { + assert(!(p in state)) + target[p] = value + return true + } + }) +} - if (chunk === null) { - er = new ERR_STREAM_NULL_VALUES(); - } else if (typeof chunk !== 'string' && !state.objectMode) { - er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); - } +// https://fetch.spec.whatwg.org/#concept-filtered-response +function filterResponse (response, type) { + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (type === 'basic') { + // A basic filtered response is a filtered response whose type is "basic" + // and header list excludes any headers in internal response’s header list + // whose name is a forbidden response-header name. - if (er) { - errorOrDestroy(stream, er); - process.nextTick(cb, er); - return false; + // Note: undici does not implement forbidden response-header names + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }) + } else if (type === 'cors') { + // A CORS filtered response is a filtered response whose type is "cors" + // and header list excludes any headers in internal response’s header + // list whose name is not a CORS-safelisted response-header name, given + // internal response’s CORS-exposed header-name list. + + // Note: undici does not implement CORS-safelisted response-header names + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }) + } else if (type === 'opaque') { + // An opaque filtered response is a filtered response whose type is + // "opaque", URL list is the empty list, status is 0, status message + // is the empty byte sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }) + } else if (type === 'opaqueredirect') { + // An opaque-redirect filtered response is a filtered response whose type + // is "opaqueredirect", status is 0, status message is the empty byte + // sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }) + } else { + assert(false) } - - return true; } -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; +// https://fetch.spec.whatwg.org/#appropriate-network-error +function makeAppropriateNetworkError (fetchParams, err = null) { + // 1. Assert: fetchParams is canceled. + assert(isCancelled(fetchParams)) - var isBuf = !state.objectMode && _isUint8Array(chunk); - - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } + // 2. Return an aborted network error if fetchParams is aborted; + // otherwise return a network error. + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })) +} - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse (response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') } - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - if (typeof cb !== 'function') cb = nop; - if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText') + } } - return ret; -}; - -Writable.prototype.cork = function () { - this._writableState.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - if (state.corked) { - state.corked--; - if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; -Object.defineProperty(Writable.prototype, 'writableBuffer', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState && this._writableState.getBuffer(); + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText } -}); -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers) } - return chunk; -} - -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.highWaterMark; - } -}); // if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code ' + response.status + }) + } -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); + // 2. Set response's body to body's body. + response[kState].body = body.body - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.contains('Content-Type')) { + response[kState].headersList.append('content-type', body.type) } } +} - var len = state.objectMode ? 1 : chunk.length; - state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. +webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream +) - if (!ret) state.needDrain = true; +webidl.converters.FormData = webidl.interfaceConverter( + FormData +) - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; +webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams +) - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) } - return ret; -} + if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V) + } -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }) + } -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V) + } - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - process.nextTick(cb, er); // this can emit finish, and it will always happen - // after error + return webidl.converters.DOMString(V) +} - process.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); // this can emit finish, but finish must - // always follow error +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V) + } - finishMaybe(stream, state); + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V?.[Symbol.asyncIterator]) { + return V } -} -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; + return webidl.converters.XMLHttpRequestBodyInit(V) } -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); - onwriteStateUpdate(state); - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state) || stream.destroyed; - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(afterWrite, stream, state, finished, cb); - } else { - afterWrite(stream, state, finished, cb); - } +webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit } +]) + +module.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse } -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. +/***/ }), -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} // if there's something in the buffer waiting, then process it +/***/ 9710: +/***/ ((module) => { +"use strict"; -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - var count = 0; - var allBuffers = true; +module.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kGuard: Symbol('guard'), + kRealm: Symbol('realm') +} - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite +/***/ }), - state.pendingcb++; - state.lastBufferedRequest = null; +/***/ 5523: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } +"use strict"; - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - - if (state.writing) { - break; - } - } - if (entry === null) state.lastBufferedRequest = null; - } +const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = __nccwpck_require__(7326) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { performance } = __nccwpck_require__(2987) +const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3440) +const assert = __nccwpck_require__(2613) +const { isUint8Array } = __nccwpck_require__(8253) - state.bufferedRequest = entry; - state.bufferProcessing = false; -} +let supportedHashes = [] -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); -}; +// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable +/** @type {import('crypto')|undefined} */ +let crypto -Writable.prototype._writev = null; +try { + crypto = __nccwpck_require__(6982) + const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] + supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) +/* c8 ignore next 3 */ +} catch { +} + +function responseURL (response) { + // https://fetch.spec.whatwg.org/#responses + // A response has an associated URL. It is a pointer to the last URL + // in response’s URL list and null if response’s URL list is empty. + const urlList = response.urlList + const length = urlList.length + return length === 0 ? null : urlList[length - 1].toString() +} + +// https://fetch.spec.whatwg.org/#concept-response-location-url +function responseLocationURL (response, requestFragment) { + // 1. If response’s status is not a redirect status, then return null. + if (!redirectStatusSet.has(response.status)) { + return null + } -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; + // 2. Let location be the result of extracting header list values given + // `Location` and response’s header list. + let location = response.headersList.get('location') - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; + // 3. If location is a header value, then set location to the result of + // parsing location with response’s URL. + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)) } - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + // 4. If location is a URL whose fragment is null, then set location’s + // fragment to requestFragment. + if (location && !location.hash) { + location.hash = requestFragment + } - if (state.corked) { - state.corked = 1; - this.uncork(); - } // ignore unnecessary end() calls. + // 5. Return location. + return location +} +/** @returns {URL} */ +function requestCurrentURL (request) { + return request.urlList[request.urlList.length - 1] +} - if (!state.ending) endWritable(this, state, cb); - return this; -}; +function requestBadPort (request) { + // 1. Let url be request’s current URL. + const url = requestCurrentURL(request) -Object.defineProperty(Writable.prototype, 'writableLength', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - return this._writableState.length; + // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, + // then return blocked. + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked' } -}); -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; + // 3. Return allowed. + return 'allowed' } -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; +function isErrorLike (object) { + return object instanceof Error || ( + object?.constructor?.name === 'Error' || + object?.constructor?.name === 'DOMException' + ) +} - if (err) { - errorOrDestroy(stream, err); +// Check whether |statusText| is a ByteString and +// matches the Reason-Phrase token production. +// RFC 2616: https://tools.ietf.org/html/rfc2616 +// RFC 7230: https://tools.ietf.org/html/rfc7230 +// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" +// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 +function isValidReasonPhrase (statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i) + if ( + !( + ( + c === 0x09 || // HTAB + (c >= 0x20 && c <= 0x7e) || // SP / VCHAR + (c >= 0x80 && c <= 0xff) + ) // obs-text + ) + ) { + return false } + } + return true +} - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); +/** + * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 + * @param {number} c + */ +function isTokenCharCode (c) { + switch (c) { + case 0x22: + case 0x28: + case 0x29: + case 0x2c: + case 0x2f: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x40: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x7b: + case 0x7d: + // DQUOTE and "(),/:;<=>?@[\]{}" + return false + default: + // VCHAR %x21-7E + return c >= 0x21 && c <= 0x7e + } } -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function' && !state.destroyed) { - state.pendingcb++; - state.finalCalled = true; - process.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); +/** + * @param {string} characters + */ +function isValidHTTPToken (characters) { + if (characters.length === 0) { + return false + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false } } + return true } -function finishMaybe(stream, state) { - var need = needFinish(state); +/** + * @see https://fetch.spec.whatwg.org/#header-name + * @param {string} potentialValue + */ +function isValidHeaderName (potentialValue) { + return isValidHTTPToken(potentialValue) +} - if (need) { - prefinish(stream, state); +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue (potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + if ( + potentialValue.startsWith('\t') || + potentialValue.startsWith(' ') || + potentialValue.endsWith('\t') || + potentialValue.endsWith(' ') + ) { + return false + } - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); + if ( + potentialValue.includes('\0') || + potentialValue.includes('\r') || + potentialValue.includes('\n') + ) { + return false + } - if (state.autoDestroy) { - // In case of duplex streams we need a way to detect - // if the readable side is ready for autoDestroy as well - var rState = stream._readableState; + return true +} - if (!rState || rState.autoDestroy && rState.endEmitted) { - stream.destroy(); - } +// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect +function setRequestReferrerPolicyOnRedirect (request, actualResponse) { + // Given a request request and a response actualResponse, this algorithm + // updates request’s referrer policy according to the Referrer-Policy + // header (if any) in actualResponse. + + // 1. Let policy be the result of executing § 8.1 Parse a referrer policy + // from a Referrer-Policy header on actualResponse. + + // 8.1 Parse a referrer policy from a Referrer-Policy header + // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. + const { headersList } = actualResponse + // 2. Let policy be the empty string. + // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. + // 4. Return policy. + const policyHeader = (headersList.get('referrer-policy') ?? '').split(',') + + // Note: As the referrer-policy can contain multiple policies + // separated by comma, we need to loop through all of them + // and pick the first valid one. + // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy + let policy = '' + if (policyHeader.length > 0) { + // The right-most policy takes precedence. + // The left-most policy is the fallback. + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim() + if (referrerPolicyTokens.has(token)) { + policy = token + break } } } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - - if (cb) { - if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + // 2. If policy is not the empty string, then set request’s referrer policy to policy. + if (policy !== '') { + request.referrerPolicy = policy } - - state.ended = true; - stream.writable = false; } -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } // reuse the free corkReq. +// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check +function crossOriginResourcePolicyCheck () { + // TODO + return 'allowed' +} +// https://fetch.spec.whatwg.org/#concept-cors-check +function corsCheck () { + // TODO + return 'success' +} - state.corkedRequestsFree.next = corkReq; +// https://fetch.spec.whatwg.org/#concept-tao-check +function TAOCheck () { + // TODO + return 'success' } -Object.defineProperty(Writable.prototype, 'destroyed', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function get() { - if (this._writableState === undefined) { - return false; - } +function appendFetchMetadata (httpRequest) { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header + // TODO - return this._writableState.destroyed; - }, - set: function set(value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } // backward compatibility, the user is explicitly - // managing destroyed + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + // 1. Assert: r’s url is a potentially trustworthy URL. + // TODO - this._writableState.destroyed = value; - } -}); -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; + // 2. Let header be a Structured Header whose value is a token. + let header = null -Writable.prototype._destroy = function (err, cb) { - cb(err); -}; + // 3. Set header’s value to r’s mode. + header = httpRequest.mode -/***/ }), + // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. + httpRequest.headersList.set('sec-fetch-mode', header) -/***/ 42250: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header + // TODO -"use strict"; + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header + // TODO +} +// https://fetch.spec.whatwg.org/#append-a-request-origin-header +function appendRequestOriginHeader (request) { + // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. + let serializedOrigin = request.origin -var _Object$setPrototypeO; + // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin) + } -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + // 1. Switch on request’s referrer policy: + switch (request.referrerPolicy) { + case 'no-referrer': + // Set serializedOrigin to `null`. + serializedOrigin = null + break + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null + } + break + case 'same-origin': + // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null + } + break + default: + // Do nothing. + } -var finished = __nccwpck_require__(4360); + if (serializedOrigin) { + // 2. Append (`Origin`, serializedOrigin) to request’s header list. + request.headersList.append('origin', serializedOrigin) + } + } +} -var kLastResolve = Symbol('lastResolve'); -var kLastReject = Symbol('lastReject'); -var kError = Symbol('error'); -var kEnded = Symbol('ended'); -var kLastPromise = Symbol('lastPromise'); -var kHandlePromise = Symbol('handlePromise'); -var kStream = Symbol('stream'); +function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { + // TODO + return performance.now() +} -function createIterResult(value, done) { +// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info +function createOpaqueTimingInfo (timingInfo) { return { - value: value, - done: done - }; + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#policy-container +function makePolicyContainer () { + // Note: the fetch spec doesn't make use of embedder policy or CSP list + return { + referrerPolicy: 'strict-origin-when-cross-origin' + } } -function readAndResolve(iter) { - var resolve = iter[kLastResolve]; - - if (resolve !== null) { - var data = iter[kStream].read(); // we defer if data is null - // we can be expecting either 'end' or - // 'error' - - if (data !== null) { - iter[kLastPromise] = null; - iter[kLastResolve] = null; - iter[kLastReject] = null; - resolve(createIterResult(data, false)); - } +// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container +function clonePolicyContainer (policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy } } -function onReadable(iter) { - // we wait for the next tick, because it might - // emit an error with process.nextTick - process.nextTick(readAndResolve, iter); -} +// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer +function determineRequestsReferrer (request) { + // 1. Let policy be request's referrer policy. + const policy = request.referrerPolicy -function wrapForNext(lastPromise, iter) { - return function (resolve, reject) { - lastPromise.then(function () { - if (iter[kEnded]) { - resolve(createIterResult(undefined, true)); - return; - } + // Note: policy cannot (shouldn't) be null or an empty string. + assert(policy) - iter[kHandlePromise](resolve, reject); - }, reject); - }; -} + // 2. Let environment be request’s client. -var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); -var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { - get stream() { - return this[kStream]; - }, + let referrerSource = null - next: function next() { - var _this = this; + // 3. Switch on request’s referrer: + if (request.referrer === 'client') { + // Note: node isn't a browser and doesn't implement document/iframes, + // so we bypass this step and replace it with our own. - // if we have detected an error in the meanwhile - // reject straight away - var error = this[kError]; + const globalOrigin = getGlobalOrigin() - if (error !== null) { - return Promise.reject(error); + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer' } - if (this[kEnded]) { - return Promise.resolve(createIterResult(undefined, true)); - } + // note: we need to clone it as it's mutated + referrerSource = new URL(globalOrigin) + } else if (request.referrer instanceof URL) { + // Let referrerSource be request’s referrer. + referrerSource = request.referrer + } - if (this[kStream].destroyed) { - // We need to defer via nextTick because if .destroy(err) is - // called, the error will be emitted via nextTick, and - // we cannot guarantee that there is no error lingering around - // waiting to be emitted. - return new Promise(function (resolve, reject) { - process.nextTick(function () { - if (_this[kError]) { - reject(_this[kError]); - } else { - resolve(createIterResult(undefined, true)); - } - }); - }); - } // if we have multiple next() calls - // we will wait for the previous Promise to finish - // this logic is optimized to support for await loops, - // where next() is only called once at a time + // 4. Let request’s referrerURL be the result of stripping referrerSource for + // use as a referrer. + let referrerURL = stripURLForReferrer(referrerSource) + + // 5. Let referrerOrigin be the result of stripping referrerSource for use as + // a referrer, with the origin-only flag set to true. + const referrerOrigin = stripURLForReferrer(referrerSource, true) + // 6. If the result of serializing referrerURL is a string whose length is + // greater than 4096, set referrerURL to referrerOrigin. + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin + } - var lastPromise = this[kLastPromise]; - var promise; + const areSameOrigin = sameOrigin(request, referrerURL) + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && + !isURLPotentiallyTrustworthy(request.url) - if (lastPromise) { - promise = new Promise(wrapForNext(lastPromise, this)); - } else { - // fast path needed to support multiple this.push() - // without triggering the next() queue - var data = this[kStream].read(); + // 8. Execute the switch statements corresponding to the value of policy: + switch (policy) { + case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true) + case 'unsafe-url': return referrerURL + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer' + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request) - if (data !== null) { - return Promise.resolve(createIterResult(data, false)); + // 1. If the origin of referrerURL and the origin of request’s current + // URL are the same, then return referrerURL. + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL } - promise = new Promise(this[kHandlePromise]); + // 2. If referrerURL is a potentially trustworthy URL and request’s + // current URL is not a potentially trustworthy URL, then return no + // referrer. + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer' + } + + // 3. Return referrerOrigin. + return referrerOrigin } + case 'strict-origin': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + case 'no-referrer-when-downgrade': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ - this[kLastPromise] = promise; - return promise; + default: // eslint-disable-line + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin } -}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { - return this; -}), _defineProperty(_Object$setPrototypeO, "return", function _return() { - var _this2 = this; +} - // destroy(err, cb) is a private API - // we can guarantee we have that here, because we control the - // Readable class this is attached to - return new Promise(function (resolve, reject) { - _this2[kStream].destroy(null, function (err) { - if (err) { - reject(err); - return; - } +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url + * @param {URL} url + * @param {boolean|undefined} originOnly + */ +function stripURLForReferrer (url, originOnly) { + // 1. Assert: url is a URL. + assert(url instanceof URL) - resolve(createIterResult(undefined, true)); - }); - }); -}), _Object$setPrototypeO), AsyncIteratorPrototype); - -var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { - var _Object$create; - - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { - value: stream, - writable: true - }), _defineProperty(_Object$create, kLastResolve, { - value: null, - writable: true - }), _defineProperty(_Object$create, kLastReject, { - value: null, - writable: true - }), _defineProperty(_Object$create, kError, { - value: null, - writable: true - }), _defineProperty(_Object$create, kEnded, { - value: stream._readableState.endEmitted, - writable: true - }), _defineProperty(_Object$create, kHandlePromise, { - value: function value(resolve, reject) { - var data = iterator[kStream].read(); - - if (data) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(data, false)); - } else { - iterator[kLastResolve] = resolve; - iterator[kLastReject] = reject; - } - }, - writable: true - }), _Object$create)); - iterator[kLastPromise] = null; - finished(stream, function (err) { - if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise - // returned by next() and store the error - - if (reject !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - reject(err); - } - - iterator[kError] = err; - return; - } + // 2. If url’s scheme is a local scheme, then return no referrer. + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer' + } - var resolve = iterator[kLastResolve]; + // 3. Set url’s username to the empty string. + url.username = '' - if (resolve !== null) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(undefined, true)); - } + // 4. Set url’s password to the empty string. + url.password = '' - iterator[kEnded] = true; - }); - stream.on('readable', onReadable.bind(null, iterator)); - return iterator; -}; + // 5. Set url’s fragment to null. + url.hash = '' -module.exports = createReadableStreamAsyncIterator; + // 6. If the origin-only flag is true, then: + if (originOnly) { + // 1. Set url’s path to « the empty string ». + url.pathname = '' -/***/ }), + // 2. Set url’s query to null. + url.search = '' + } -/***/ 63900: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 7. Return url. + return url +} -"use strict"; +function isURLPotentiallyTrustworthy (url) { + if (!(url instanceof URL)) { + return false + } + + // If child of about, return true + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true + } + // If scheme is data, return true + if (url.protocol === 'data:') return true -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + // If file, return true + if (url.protocol === 'file:') return true -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + return isOriginPotentiallyTrustworthy(url.origin) -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + function isOriginPotentiallyTrustworthy (origin) { + // If origin is explicitly null, return false + if (origin == null || origin === 'null') return false -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + const originAsURL = new URL(origin) -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + // If secure, return true + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true + } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + // If localhost or variants, return true + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) || + (originAsURL.hostname.endsWith('.localhost'))) { + return true + } -var _require = __nccwpck_require__(14300), - Buffer = _require.Buffer; + // If any other, return false + return false + } +} -var _require2 = __nccwpck_require__(73837), - inspect = _require2.inspect; +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist + * @param {Uint8Array} bytes + * @param {string} metadataList + */ +function bytesMatch (bytes, metadataList) { + // If node is not built with OpenSSL support, we cannot check + // a request's integrity, so allow it by default (the spec will + // allow requests if an invalid hash is given, as precedence). + /* istanbul ignore if: only if node is built with --without-ssl */ + if (crypto === undefined) { + return true + } -var custom = inspect && inspect.custom || 'inspect'; + // 1. Let parsedMetadata be the result of parsing metadataList. + const parsedMetadata = parseMetadata(metadataList) -function copyBuffer(src, target, offset) { - Buffer.prototype.copy.call(src, target, offset); -} + // 2. If parsedMetadata is no metadata, return true. + if (parsedMetadata === 'no metadata') { + return true + } -module.exports = -/*#__PURE__*/ -function () { - function BufferList() { - _classCallCheck(this, BufferList); + // 3. If response is not eligible for integrity validation, return false. + // TODO - this.head = null; - this.tail = null; - this.length = 0; + // 4. If parsedMetadata is the empty set, return true. + if (parsedMetadata.length === 0) { + return true } - _createClass(BufferList, [{ - key: "push", - value: function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - } - }, { - key: "unshift", - value: function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - }, { - key: "shift", - value: function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - } - }, { - key: "clear", - value: function clear() { - this.head = this.tail = null; - this.length = 0; - } - }, { - key: "join", - value: function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; - } - }, { - key: "concat", - value: function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - - }, { - key: "consume", - value: function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); - } - - return ret; - } - }, { - key: "first", - value: function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - - }, { - key: "_getString", - value: function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } + // 5. Let metadata be the result of getting the strongest + // metadata from parsedMetadata. + const strongest = getStrongestMetadata(parsedMetadata) + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) - break; - } + // 6. For each item in metadata: + for (const item of metadata) { + // 1. Let algorithm be the alg component of item. + const algorithm = item.algo - ++c; - } + // 2. Let expectedValue be the val component of item. + const expectedValue = item.hash - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. + // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e + // "be liberal with padding". This is annoying, and it's not even in the spec. - }, { - key: "_getBuffer", - value: function _getBuffer(n) { - var ret = Buffer.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; + // 3. Let actualValue be the result of applying algorithm to bytes. + let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2) + } else { + actualValue = actualValue.slice(0, -1) + } + } - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); - } + // 4. If actualValue is a case-sensitive match for expectedValue, + // return true. + if (compareBase64Mixed(actualValue, expectedValue)) { + return true + } + } - break; - } + // 7. Return false. + return false +} - ++c; - } +// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options +// https://www.w3.org/TR/CSP2/#source-list-syntax +// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 +const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + * @param {string} metadata + */ +function parseMetadata (metadata) { + // 1. Let result be the empty set. + /** @type {{ algo: string, hash: string }[]} */ + const result = [] - }, { - key: custom, - value: function value(_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); - } - }]); + // 2. Let empty be equal to true. + let empty = true - return BufferList; -}(); + // 3. For each token returned by splitting metadata on spaces: + for (const token of metadata.split(' ')) { + // 1. Set empty to false. + empty = false -/***/ }), + // 2. Parse token as a hash-with-options. + const parsedToken = parseHashWithOptions.exec(token) -/***/ 3090: -/***/ ((module) => { + // 3. If token does not parse, continue to the next token. + if ( + parsedToken === null || + parsedToken.groups === undefined || + parsedToken.groups.algo === undefined + ) { + // Note: Chromium blocks the request at this point, but Firefox + // gives a warning that an invalid integrity was given. The + // correct behavior is to ignore these, and subsequently not + // check the integrity of the resource. + continue + } -"use strict"; - // undocumented cb() API, needed for core, not for public API + // 4. Let algorithm be the hash-algo component of token. + const algorithm = parsedToken.groups.algo.toLowerCase() -function destroy(err, cb) { - var _this = this; + // 5. If algorithm is a hash function recognized by the user + // agent, add the parsed token to result. + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups) + } + } - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; + // 4. Return no metadata if empty is true, otherwise return result. + if (empty === true) { + return 'no metadata' + } - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err) { - if (!this._writableState) { - process.nextTick(emitErrorNT, this, err); - } else if (!this._writableState.errorEmitted) { - this._writableState.errorEmitted = true; - process.nextTick(emitErrorNT, this, err); - } + return result +} + +/** + * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList + */ +function getStrongestMetadata (metadataList) { + // Let algorithm be the algo component of the first item in metadataList. + // Can be sha256 + let algorithm = metadataList[0].algo + // If the algorithm is sha512, then it is the strongest + // and we can return immediately + if (algorithm[3] === '5') { + return algorithm + } + + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i] + // If the algorithm is sha512, then it is the strongest + // and we can break the loop immediately + if (metadata.algo[3] === '5') { + algorithm = 'sha512' + break + // If the algorithm is sha384, then a potential sha256 or sha384 is ignored + } else if (algorithm[3] === '3') { + continue + // algorithm is sha256, check if algorithm is sha384 and if so, set it as + // the strongest + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384' } + } + return algorithm +} - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks +function filterMetadataListByAlgorithm (metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList + } + let pos = 0 + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i] + } + } - if (this._readableState) { - this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well + metadataList.length = pos + return metadataList +} - if (this._writableState) { - this._writableState.destroyed = true; +/** + * Compares two base64 strings, allowing for base64url + * in the second string. + * +* @param {string} actualValue always base64 + * @param {string} expectedValue base64 or base64url + * @returns {boolean} + */ +function compareBase64Mixed (actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false } - - this._destroy(err || null, function (err) { - if (!cb && err) { - if (!_this._writableState) { - process.nextTick(emitErrorAndCloseNT, _this, err); - } else if (!_this._writableState.errorEmitted) { - _this._writableState.errorEmitted = true; - process.nextTick(emitErrorAndCloseNT, _this, err); - } else { - process.nextTick(emitCloseNT, _this); + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if ( + (actualValue[i] === '+' && expectedValue[i] === '-') || + (actualValue[i] === '/' && expectedValue[i] === '_') + ) { + continue } - } else if (cb) { - process.nextTick(emitCloseNT, _this); - cb(err); - } else { - process.nextTick(emitCloseNT, _this); + return false } - }); - - return this; -} + } -function emitErrorAndCloseNT(self, err) { - emitErrorNT(self, err); - emitCloseNT(self); + return true } -function emitCloseNT(self) { - if (self._writableState && !self._writableState.emitClose) return; - if (self._readableState && !self._readableState.emitClose) return; - self.emit('close'); +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request +function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { + // TODO } -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; +/** + * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} + * @param {URL} A + * @param {URL} B + */ +function sameOrigin (A, B) { + // 1. If A and B are the same opaque origin, then return true. + if (A.origin === B.origin && A.origin === 'null') { + return true } - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finalCalled = false; - this._writableState.prefinished = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; + // 2. If A and B are both tuple origins and their schemes, + // hosts, and port are identical, then return true. + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true } -} -function emitErrorNT(self, err) { - self.emit('error', err); + // 3. Return false. + return false } -function errorOrDestroy(stream, err) { - // We have tests that rely on errors being emitted - // in the same tick, so changing this is semver major. - // For now when you opt-in to autoDestroy we allow - // the error to be emitted nextTick. In a future - // semver major update we should change the default to this. - var rState = stream._readableState; - var wState = stream._writableState; - if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +function createDeferredPromise () { + let res + let rej + const promise = new Promise((resolve, reject) => { + res = resolve + rej = reject + }) + + return { promise, resolve: res, reject: rej } } -module.exports = { - destroy: destroy, - undestroy: undestroy, - errorOrDestroy: errorOrDestroy -}; +function isAborted (fetchParams) { + return fetchParams.controller.state === 'aborted' +} -/***/ }), +function isCancelled (fetchParams) { + return fetchParams.controller.state === 'aborted' || + fetchParams.controller.state === 'terminated' +} -/***/ 4360: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +const normalizeMethodRecord = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' +} -"use strict"; -// Ported from https://github.com/mafintosh/end-of-stream with -// permission from the author, Mathias Buus (@mafintosh). +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(normalizeMethodRecord, null) +/** + * @see https://fetch.spec.whatwg.org/#concept-method-normalize + * @param {string} method + */ +function normalizeMethod (method) { + return normalizeMethodRecord[method.toLowerCase()] ?? method +} -var ERR_STREAM_PREMATURE_CLOSE = (__nccwpck_require__(13130)/* .codes.ERR_STREAM_PREMATURE_CLOSE */ .q.ERR_STREAM_PREMATURE_CLOSE); +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString (value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + const result = JSON.stringify(value) -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable') + } - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } + // 3. Assert: result is a string. + assert(typeof result === 'string') - callback.apply(this, args); - }; + // 4. Return result. + return result } -function noop() {} - -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -} +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) -function eos(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; - callback = once(callback || noop); - var readable = opts.readable || opts.readable !== false && stream.readable; - var writable = opts.writable || opts.writable !== false && stream.writable; +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {() => unknown[]} iterator + * @param {string} name name of the instance + * @param {'key'|'value'|'key+value'} kind + */ +function makeIterator (iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + } - var onlegacyfinish = function onlegacyfinish() { - if (!stream.writable) onfinish(); - }; + const i = { + next () { + // 1. Let interface be the interface for which the iterator prototype object exists. - var writableEnded = stream._writableState && stream._writableState.finished; + // 2. Let thisValue be the this value. - var onfinish = function onfinish() { - writable = false; - writableEnded = true; - if (!readable) callback.call(stream); - }; + // 3. Let object be ? ToObject(thisValue). - var readableEnded = stream._readableState && stream._readableState.endEmitted; + // 4. If object is a platform object, then perform a security + // check, passing: - var onend = function onend() { - readable = false; - readableEnded = true; - if (!writable) callback.call(stream); - }; + // 5. If object is not a default iterator object for interface, + // then throw a TypeError. + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ) + } - var onerror = function onerror(err) { - callback.call(stream, err); - }; + // 6. Let index be object’s index. + // 7. Let kind be object’s kind. + // 8. Let values be object’s target's value pairs to iterate over. + const { index, kind, target } = object + const values = target() - var onclose = function onclose() { - var err; + // 9. Let len be the length of values. + const len = values.length - if (readable && !readableEnded) { - if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } + // 10. If index is greater than or equal to len, then return + // CreateIterResultObject(undefined, true). + if (index >= len) { + return { value: undefined, done: true } + } - if (writable && !writableEnded) { - if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); - return callback.call(stream, err); - } - }; + // 11. Let pair be the entry in values at index index. + const pair = values[index] - var onrequest = function onrequest() { - stream.req.on('finish', onfinish); - }; + // 12. Set object’s index to index + 1. + object.index = index + 1 - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest();else stream.on('request', onrequest); - } else if (writable && !stream._writableState) { - // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); + // 13. Return the iterator result for pair and kind. + return iteratorResult(pair, kind) + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + } + + // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. + Object.setPrototypeOf(i, esIteratorPrototype) + // esIteratorPrototype needs to be the prototype of i + // which is the prototype of an empty object. Yes, it's confusing. + return Object.setPrototypeOf({}, i) +} + +// https://webidl.spec.whatwg.org/#iterator-result +function iteratorResult (pair, kind) { + let result + + // 1. Let result be a value determined by the value of kind: + switch (kind) { + case 'key': { + // 1. Let idlKey be pair’s key. + // 2. Let key be the result of converting idlKey to an + // ECMAScript value. + // 3. result is key. + result = pair[0] + break + } + case 'value': { + // 1. Let idlValue be pair’s value. + // 2. Let value be the result of converting idlValue to + // an ECMAScript value. + // 3. result is value. + result = pair[1] + break + } + case 'key+value': { + // 1. Let idlKey be pair’s key. + // 2. Let idlValue be pair’s value. + // 3. Let key be the result of converting idlKey to an + // ECMAScript value. + // 4. Let value be the result of converting idlValue to + // an ECMAScript value. + // 5. Let array be ! ArrayCreate(2). + // 6. Call ! CreateDataProperty(array, "0", key). + // 7. Call ! CreateDataProperty(array, "1", value). + // 8. result is array. + result = pair + break + } } - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); - return function () { - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; + // 2. Return CreateIterResultObject(result, false). + return { value: result, done: false } } -module.exports = eos; - -/***/ }), - -/***/ 57453: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @see https://fetch.spec.whatwg.org/#body-fully-read + */ +async function fullyReadBody (body, processBody, processBodyError) { + // 1. If taskDestination is null, then set taskDestination to + // the result of starting a new parallel queue. -"use strict"; + // 2. Let successSteps given a byte sequence bytes be to queue a + // fetch task to run processBody given bytes, with taskDestination. + const successSteps = processBody + // 3. Let errorSteps be to queue a fetch task to run processBodyError, + // with taskDestination. + const errorSteps = processBodyError -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + // 4. Let reader be the result of getting a reader for body’s stream. + // If that threw an exception, then run errorSteps with that + // exception and return. + let reader -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + try { + reader = body.stream.getReader() + } catch (e) { + errorSteps(e) + return + } -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + // 5. Read all bytes from reader, given successSteps and errorSteps. + try { + const result = await readAllBytes(reader) + successSteps(result) + } catch (e) { + errorSteps(e) + } +} -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } +/** @type {ReadableStream} */ +let ReadableStream = globalThis.ReadableStream -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function isReadableStreamLike (stream) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } -var ERR_INVALID_ARG_TYPE = (__nccwpck_require__(13130)/* .codes.ERR_INVALID_ARG_TYPE */ .q.ERR_INVALID_ARG_TYPE); + return stream instanceof ReadableStream || ( + stream[Symbol.toStringTag] === 'ReadableStream' && + typeof stream.tee === 'function' + ) +} -function from(Readable, iterable, opts) { - var iterator; +const MAXIMUM_ARGUMENT_LENGTH = 65535 - if (iterable && typeof iterable.next === 'function') { - iterator = iterable; - } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); +/** + * @see https://infra.spec.whatwg.org/#isomorphic-decode + * @param {number[]|Uint8Array} input + */ +function isomorphicDecode (input) { + // 1. To isomorphic decode a byte sequence input, return a string whose code point + // length is equal to input’s length and whose code points have the same values + // as the values of input’s bytes, in the same order. - var readable = new Readable(_objectSpread({ - objectMode: true - }, opts)); // Reading boolean to protect against _read - // being called before last iteration completion. + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input) + } - var reading = false; + return input.reduce((previous, current) => previous + String.fromCharCode(current), '') +} - readable._read = function () { - if (!reading) { - reading = true; - next(); +/** + * @param {ReadableStreamController<Uint8Array>} controller + */ +function readableStreamClose (controller) { + try { + controller.close() + } catch (err) { + // TODO: add comment explaining why this error occurs. + if (!err.message.includes('Controller is already closed')) { + throw err } - }; - - function next() { - return _next2.apply(this, arguments); } +} - function _next2() { - _next2 = _asyncToGenerator(function* () { - try { - var _ref = yield iterator.next(), - value = _ref.value, - done = _ref.done; - - if (done) { - readable.push(null); - } else if (readable.push((yield value))) { - next(); - } else { - reading = false; - } - } catch (err) { - readable.destroy(err); - } - }); - return _next2.apply(this, arguments); +/** + * @see https://infra.spec.whatwg.org/#isomorphic-encode + * @param {string} input + */ +function isomorphicEncode (input) { + // 1. Assert: input contains no code points greater than U+00FF. + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 0xFF) } - return readable; + // 2. Return a byte sequence whose length is equal to input’s code + // point length and whose bytes have the same values as the + // values of input’s code points, in the same order + return input } -module.exports = from; - -/***/ }), +/** + * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes + * @see https://streams.spec.whatwg.org/#read-loop + * @param {ReadableStreamDefaultReader} reader + */ +async function readAllBytes (reader) { + const bytes = [] + let byteLength = 0 -/***/ 61391: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + while (true) { + const { done, value: chunk } = await reader.read() -"use strict"; -// Ported from https://github.com/mafintosh/pump with -// permission from the author, Mathias Buus (@mafintosh). + if (done) { + // 1. Call successSteps with bytes. + return Buffer.concat(bytes, byteLength) + } + // 1. If chunk is not a Uint8Array object, call failureSteps + // with a TypeError and abort these steps. + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk') + } -var eos; + // 2. Append the bytes represented by chunk to bytes. + bytes.push(chunk) + byteLength += chunk.length -function once(callback) { - var called = false; - return function () { - if (called) return; - called = true; - callback.apply(void 0, arguments); - }; + // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + } } -var _require$codes = (__nccwpck_require__(13130)/* .codes */ .q), - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; +/** + * @see https://fetch.spec.whatwg.org/#is-local + * @param {URL} url + */ +function urlIsLocal (url) { + assert('protocol' in url) // ensure it's a url object -function noop(err) { - // Rethrow the error if it exists to avoid swallowing it - if (err) throw err; -} + const protocol = url.protocol -function isRequest(stream) { - return stream.setHeader && typeof stream.abort === 'function'; + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:' } -function destroyer(stream, reading, writing, callback) { - callback = once(callback); - var closed = false; - stream.on('close', function () { - closed = true; - }); - if (eos === undefined) eos = __nccwpck_require__(4360); - eos(stream, { - readable: reading, - writable: writing - }, function (err) { - if (err) return callback(err); - closed = true; - callback(); - }); - var destroyed = false; - return function (err) { - if (closed) return; - if (destroyed) return; - destroyed = true; // request.destroy just do .end - .abort is what we want - - if (isRequest(stream)) return stream.abort(); - if (typeof stream.destroy === 'function') return stream.destroy(); - callback(err || new ERR_STREAM_DESTROYED('pipe')); - }; -} +/** + * @param {string|URL} url + */ +function urlHasHttpsScheme (url) { + if (typeof url === 'string') { + return url.startsWith('https:') + } -function call(fn) { - fn(); + return url.protocol === 'https:' } -function pipe(from, to) { - return from.pipe(to); -} +/** + * @see https://fetch.spec.whatwg.org/#http-scheme + * @param {URL} url + */ +function urlIsHttpHttpsScheme (url) { + assert('protocol' in url) // ensure it's a url object -function popCallback(streams) { - if (!streams.length) return noop; - if (typeof streams[streams.length - 1] !== 'function') return noop; - return streams.pop(); -} + const protocol = url.protocol -function pipeline() { - for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { - streams[_key] = arguments[_key]; - } + return protocol === 'http:' || protocol === 'https:' +} - var callback = popCallback(streams); - if (Array.isArray(streams[0])) streams = streams[0]; +/** + * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. + */ +const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)) - if (streams.length < 2) { - throw new ERR_MISSING_ARGS('streams'); - } +module.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + normalizeMethodRecord, + parseMetadata +} + + +/***/ }), + +/***/ 4222: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - var error; - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1; - var writing = i > 0; - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err; - if (err) destroys.forEach(call); - if (reading) return; - destroys.forEach(call); - callback(error); - }); - }); - return streams.reduce(pipe); -} +"use strict"; -module.exports = pipeline; -/***/ }), +const { types } = __nccwpck_require__(9023) +const { hasOwn, toUSVString } = __nccwpck_require__(5523) -/***/ 5785: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** @type {import('../../types/webidl').Webidl} */ +const webidl = {} +webidl.converters = {} +webidl.util = {} +webidl.errors = {} -"use strict"; +webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`) +} +webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of' + const message = + `${context.argument} could not be converted to` + + `${plural}: ${context.types.join(', ')}.` -var ERR_INVALID_OPT_VALUE = (__nccwpck_require__(13130)/* .codes.ERR_INVALID_OPT_VALUE */ .q.ERR_INVALID_OPT_VALUE); + return webidl.errors.exception({ + header: context.prefix, + message + }) +} -function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }) } -function getHighWaterMark(state, options, duplexKey, isDuplex) { - var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); +// https://webidl.spec.whatwg.org/#implements +webidl.brandCheck = function (V, I, opts = undefined) { + if (opts?.strict !== false && !(V instanceof I)) { + throw new TypeError('Illegal invocation') + } else { + return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag] + } +} - if (hwm != null) { - if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { - var name = isDuplex ? duplexKey : 'highWaterMark'; - throw new ERR_INVALID_OPT_VALUE(name, hwm); - } +webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, ` + + `but${length ? ' only' : ''} ${length} found.`, + ...ctx + }) + } +} - return Math.floor(hwm); - } // Default value +webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }) +} +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': return 'Undefined' + case 'boolean': return 'Boolean' + case 'string': return 'String' + case 'symbol': return 'Symbol' + case 'number': return 'Number' + case 'bigint': return 'BigInt' + case 'function': + case 'object': { + if (V === null) { + return 'Null' + } - return state.objectMode ? 16 : 16 * 1024; + return 'Object' + } + } } -module.exports = { - getHighWaterMark: getHighWaterMark -}; +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { + let upperBound + let lowerBound -/***/ }), + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1 -/***/ 35016: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0 + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1 + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: -module.exports = __nccwpck_require__(12781); + // 1. Let lowerBound be 0. + lowerBound = 0 + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1 + } else { + // 3. Otherwise: -/***/ }), + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1 -/***/ 30675: -/***/ ((module, exports, __nccwpck_require__) => { + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1 + } -var Stream = __nccwpck_require__(12781); -if (process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream.Readable; - Object.assign(module.exports, Stream); - module.exports.Stream = Stream; -} else { - exports = module.exports = __nccwpck_require__(80284); - exports.Stream = Stream || exports; - exports.Readable = exports; - exports.Writable = __nccwpck_require__(36100); - exports.Duplex = __nccwpck_require__(88393); - exports.Transform = __nccwpck_require__(65469); - exports.PassThrough = __nccwpck_require__(55125); - exports.finished = __nccwpck_require__(4360); - exports.pipeline = __nccwpck_require__(61391); -} + // 4. Let x be ? ToNumber(V). + let x = Number(V) + // 5. If x is −0, then set x to +0. + if (x === 0) { + x = 0 + } -/***/ }), + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if ( + Number.isNaN(x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${V} to an integer.` + }) + } -/***/ 90612: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) -// Source copied and then modified from -// https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/tokenize/html-block.js -// -// MIT License https://github.com/remarkjs/remark/blob/master/license - -const {openCloseTag} = __nccwpck_require__(8882) - -module.exports = blockHtml - -const tab = '\t' -const space = ' ' -const lineFeed = '\n' -const lessThan = '<' - -const rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i -const rawCloseExpression = /<\/(script|pre|style)>/i -const commentOpenExpression = /^<!--/ -const commentCloseExpression = /-->/ -const instructionOpenExpression = /^<\?/ -const instructionCloseExpression = /\?>/ -const directiveOpenExpression = /^<![A-Za-z]/ -const directiveCloseExpression = />/ -const cdataOpenExpression = /^<!\[CDATA\[/ -const cdataCloseExpression = /\]\]>/ -const elementCloseExpression = /^$/ -const otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$') -const fragmentOpenExpression = /^<>/ - -function blockHtml(eat, value, silent) { - const blocks = '[a-z\\.]*(\\.){0,1}[a-z][a-z0-9\\.]*' - const elementOpenExpression = new RegExp( - '^</?(' + blocks + ')(?=(\\s|/?>|$))', - 'i' - ) + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }) + } - const length = value.length - let index = 0 - let next - let line - let offset - let character - let count - let sequence - let subvalue - - const sequences = [ - [rawOpenExpression, rawCloseExpression, true], - [commentOpenExpression, commentCloseExpression, true], - [instructionOpenExpression, instructionCloseExpression, true], - [directiveOpenExpression, directiveCloseExpression, true], - [cdataOpenExpression, cdataCloseExpression, true], - [elementOpenExpression, elementCloseExpression, true], - [fragmentOpenExpression, elementCloseExpression, true], - [otherElementOpenExpression, elementCloseExpression, false] - ] + // 4. Return x. + return x + } - // Eat initial spacing. - while (index < length) { - character = value.charAt(index) + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound) - if (character !== tab && character !== space) { - break + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x) + } else { + x = Math.ceil(x) } - index++ + // 3. Return x. + return x } - if (value.charAt(index) !== lessThan) { - return + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if ( + Number.isNaN(x) || + (x === 0 && Object.is(0, x)) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0 } - next = value.indexOf(lineFeed, index + 1) - next = next === -1 ? length : next - line = value.slice(index, next) - offset = -1 - count = sequences.length + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) - while (++offset < count) { - if (sequences[offset][0].test(line)) { - sequence = sequences[offset] - break - } - } + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength) - if (!sequence) { - return + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength) } - if (silent) { - return sequence[2] + // 12. Otherwise, return x. + return x +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + const r = Math.floor(Math.abs(n)) + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r } - index = next + // 3. Otherwise, return r. + return r +} + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return (V) => { + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: 'Sequence', + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }) + } - if (!sequence[1].test(line)) { - while (index < length) { - next = value.indexOf(lineFeed, index + 1) - next = next === -1 ? length : next - line = value.slice(index + 1, next) + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + const method = V?.[Symbol.iterator]?.() + const seq = [] - if (sequence[1].test(line)) { - if (line) { - index = next - } + // 3. If method is undefined, throw a TypeError. + if ( + method === undefined || + typeof method.next !== 'function' + ) { + throw webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }) + } + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + const { done, value } = method.next() + + if (done) { break } - index = next + seq.push(converter(value)) } + + return seq } +} - subvalue = value.slice(0, index) +// https://webidl.spec.whatwg.org/#es-to-record +webidl.recordConverter = function (keyConverter, valueConverter) { + return (O) => { + // 1. If Type(O) is not Object, throw a TypeError. + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: 'Record', + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }) + } - return eat(subvalue)({type: 'html', value: subvalue}) -} + // 2. Let result be a new empty instance of record<K, V>. + const result = {} + if (!types.isProxy(O)) { + // Object.keys only returns enumerable properties + const keys = Object.keys(O) -/***/ }), + for (const key of keys) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) -/***/ 8825: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) -const {transformSync} = __nccwpck_require__(92092) -const declare = (__nccwpck_require__(29055).declare) + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } -const syntaxJsxPlugin = __nccwpck_require__(28926) -const proposalObjectRestSpreadPlugin = __nccwpck_require__(56309) + // 5. Return result. + return result + } -class BabelPluginExtractImportsAndExports { - constructor() { - const nodes = [] - this.state = {nodes} + // 3. Let keys be ? O.[[OwnPropertyKeys]](). + const keys = Reflect.ownKeys(O) - this.plugin = declare(api => { - api.assertVersion(7) + // 4. For each key of keys. + for (const key of keys) { + // 1. Let desc be ? O.[[GetOwnProperty]](key). + const desc = Reflect.getOwnPropertyDescriptor(O, key) - return { - visitor: { - ExportDefaultDeclaration(path) { - const {start} = path.node - nodes.push({type: 'export', start, default: true}) - }, - ExportNamedDeclaration(path) { - const {start} = path.node - nodes.push({type: 'export', start}) - }, - ExportAllDeclaration(path) { - const {start} = path.node - nodes.push({type: 'export', start}) - }, - ImportDeclaration(path) { - const {start} = path.node - - // Imports that are used in exports can end up as - // ImportDeclarations with no start/end metadata, - // these can be ignored - if (start === undefined) { - return - } + // 2. If desc is not undefined and desc.[[Enumerable]] is true: + if (desc?.enumerable) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) - nodes.push({type: 'import', start}) - } - } + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue } - }) + } + + // 5. Return result. + return result } } -const partitionString = (str, indices) => - indices.map((val, i) => { - return str.slice(val, indices[i + 1]) - }) - -module.exports = (value, vfile) => { - const instance = new BabelPluginExtractImportsAndExports() +webidl.interfaceConverter = function (i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }) + } - transformSync(value, { - plugins: [syntaxJsxPlugin, proposalObjectRestSpreadPlugin, instance.plugin], - filename: vfile.path, - configFile: false, - babelrc: false - }) + return V + } +} - const sortedNodes = instance.state.nodes.sort((a, b) => a.start - b.start) - const nodeStarts = sortedNodes.map(n => n.start) - const values = partitionString(value, nodeStarts) +webidl.dictionaryConverter = function (converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary) + const dict = {} - const allNodes = sortedNodes.map(({start: _, ...node}, i) => { - const value = values[i] - return {...node, value} - }) + if (type === 'Null' || type === 'Undefined') { + return dict + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }) + } - // Group adjacent nodes of the same type so that they can be combined - // into a single node later, this also ensures that order is preserved - let currType = allNodes[0].type - const groupedNodes = allNodes.reduce( - (acc, curr) => { - // Default export nodes shouldn't be grouped with other exports - // because they're handled specially by MDX - if (curr.default) { - currType = 'default' - return [...acc, [curr]] - } + for (const options of converters) { + const { key, defaultValue, required, converter } = options - if (curr.type === currType) { - const lastNodes = acc.pop() - return [...acc, [...lastNodes, curr]] + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Missing required key "${key}".` + }) + } } - currType = curr.type - return [...acc, [curr]] - }, - [[]] - ) + let value = dictionary[key] + const hasDefault = hasOwn(options, 'defaultValue') - // Combine adjacent nodes into a single node - return groupedNodes - .filter(a => a.length) - .reduce((acc, curr) => { - const node = curr.reduce((acc, curr) => ({ - ...acc, - value: acc.value + curr.value - })) + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + value = value ?? defaultValue + } - return [...acc, node] - }, []) -} + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value) + if ( + options.allowedValues && + !options.allowedValues.includes(value) + ) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }) + } -/***/ }), + dict[key] = value + } + } -/***/ 43650: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return dict + } +} -const isAlphabetical = __nccwpck_require__(84989) -const {isImportOrExport, EMPTY_NEWLINE} = __nccwpck_require__(58826) -const extractImportsAndExports = __nccwpck_require__(8825) -const block = __nccwpck_require__(90612) -const {tag} = __nccwpck_require__(8882) +webidl.nullableConverter = function (converter) { + return (V) => { + if (V === null) { + return V + } -const LESS_THAN = '<' -const GREATER_THAN = '>' -const SLASH = '/' -const EXCLAMATION = '!' + return converter(V) + } +} -module.exports = mdx +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V, opts = {}) { + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts.legacyNullToEmptyString) { + return '' + } -mdx.default = mdx + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.') + } -tokenizeEsSyntax.locator = tokenizeEsSyntaxLocator + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V) +} -function mdx(_options) { - const parser = this.Parser - const compiler = this.Compiler +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + const x = webidl.converters.DOMString(V) - if (parser && parser.prototype && parser.prototype.blockTokenizers) { - attachParser(parser) + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + 'Cannot convert argument to a ByteString because the character at ' + + `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + ) + } } - if (compiler && compiler.prototype && compiler.prototype.visitors) { - attachCompiler(compiler) - } + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x } -function attachParser(parser) { - const blocks = parser.prototype.blockTokenizers - const inlines = parser.prototype.inlineTokenizers - const methods = parser.prototype.blockMethods +// https://webidl.spec.whatwg.org/#es-USVString +webidl.converters.USVString = toUSVString - blocks.esSyntax = tokenizeEsSyntax - blocks.html = wrap(block) - inlines.html = wrap(inlines.html, inlineJsx) +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters.boolean = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + const x = Boolean(V) - tokenizeEsSyntax.notInBlock = true + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x +} - methods.splice(methods.indexOf('paragraph'), 0, 'esSyntax') +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V +} - function wrap(original, customTokenizer) { - const tokenizer = customTokenizer || tokenizeJsx - tokenizer.locator = original.locator +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + const x = webidl.util.ConvertToInt(V, 64, 'signed') - return tokenizer + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x +} - function tokenizeJsx() { - const node = original.apply(this, arguments) +// https://webidl.spec.whatwg.org/#es-unsigned-long-long +webidl.converters['unsigned long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). + const x = webidl.util.ConvertToInt(V, 64, 'unsigned') - if (node) { - node.type = 'jsx' - } + // 2. Return the IDL unsigned long long value that + // represents the same numeric value as x. + return x +} - return node - } - } +// https://webidl.spec.whatwg.org/#es-unsigned-long +webidl.converters['unsigned long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). + const x = webidl.util.ConvertToInt(V, 32, 'unsigned') - function inlineJsx(eat, value) { - if (value.charAt(0) !== LESS_THAN) { - return - } + // 2. Return the IDL unsigned long value that + // represents the same numeric value as x. + return x +} - const nextChar = value.charAt(1) - if ( - nextChar !== GREATER_THAN && - nextChar !== SLASH && - nextChar !== EXCLAMATION && - !isAlphabetical(nextChar) - ) { - return - } +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V, opts) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts) - const subvalueMatches = value.match(tag) - if (!subvalueMatches) { - return - } + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x +} - const subvalue = subvalueMatches[0] - return eat(subvalue)({type: 'jsx', value: subvalue}) +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if ( + webidl.util.Type(V) !== 'Object' || + !types.isAnyArrayBuffer(V) + ) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ['ArrayBuffer'] + }) } -} -function attachCompiler(compiler) { - const proto = compiler.prototype + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } - proto.visitors = Object.assign({}, proto.visitors, { - import: stringifyEsSyntax, - export: stringifyEsSyntax, - jsx: stringifyEsSyntax - }) -} + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + // Note: resizable ArrayBuffers are currently a proposal. -function stringifyEsSyntax(node) { - return node.value.trim() + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V } -function tokenizeEsSyntax(eat, value) { - const index = value.indexOf(EMPTY_NEWLINE) - const subvalue = index !== -1 ? value.slice(0, index) : value +webidl.converters.TypedArray = function (V, T, opts = {}) { + // 1. Let T be the IDL type V is being converted to. - if (isImportOrExport(subvalue)) { - const nodes = extractImportsAndExports(subvalue, this.file) - nodes.map(node => eat(node.value)(node)) + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if ( + webidl.util.Type(V) !== 'Object' || + !types.isTypedArray(V) || + V.constructor.name !== T.name + ) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }) } -} -function tokenizeEsSyntaxLocator(value, _fromIndex) { - return isImportOrExport(value) ? -1 : 1 -} + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable array buffers are currently a proposal -/***/ }), + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V +} -/***/ 8882: -/***/ ((__unused_webpack_module, exports) => { +webidl.converters.DataView = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }) + } -// Source copied and then modified from -// https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/util/html.js -// -// MIT License https://github.com/remarkjs/remark/blob/master/license - -// https://github.com/DmitrySoshnikov/babel-plugin-transform-modern-regexp#dotall-s-flag -// Firefox and other browsers don't support the dotAll ("s") flag, but it can be polyfilled via this: -const dotAllPolyfill = '[\0-\uFFFF]' - -const attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' -const unquoted = '[^"\'=<>`\\u0000-\\u0020]+' -const singleQuoted = "'[^']*'" -const doubleQuoted = '"[^"]*"' -const jsProps = '{.*}'.replace('.', dotAllPolyfill) -const attributeValue = - '(?:' + - unquoted + - '|' + - singleQuoted + - '|' + - doubleQuoted + - '|' + - jsProps + - ')' -const attribute = - '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' -const openTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*\\/?>' -const closeTag = '<\\/[A-Za-z][A-Za-z0-9\\.\\-]*\\s*>' -const comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->' -const processing = '<[?].*?[?]>'.replace('.', dotAllPolyfill) -const declaration = '<![A-Za-z]+\\s+[^>]*>' -const cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' - -exports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')') - -exports.tag = new RegExp( - '^(?:' + - openTag + - '|' + - closeTag + - '|' + - comment + - '|' + - processing + - '|' + - declaration + - '|' + - cdata + - ')' -) + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable ArrayBuffers are currently a proposal -/***/ }), + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V +} -/***/ 35212: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts) + } -"use strict"; + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor) + } + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts) + } -var unherit = __nccwpck_require__(68475) -var xtend = __nccwpck_require__(76738) -var Parser = __nccwpck_require__(14714) + throw new TypeError(`Could not convert ${V} to a BufferSource.`) +} -module.exports = parse -parse.Parser = Parser +webidl.converters['sequence<ByteString>'] = webidl.sequenceConverter( + webidl.converters.ByteString +) -function parse(options) { - var settings = this.data('settings') - var Local = unherit(Parser) +webidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter( + webidl.converters['sequence<ByteString>'] +) - Local.prototype.options = xtend(Local.prototype.options, settings, options) +webidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString +) - this.Parser = Local +module.exports = { + webidl } /***/ }), -/***/ 14841: +/***/ 396: /***/ ((module) => { "use strict"; -module.exports = [ - 'address', - 'article', - 'aside', - 'base', - 'basefont', - 'blockquote', - 'body', - 'caption', - 'center', - 'col', - 'colgroup', - 'dd', - 'details', - 'dialog', - 'dir', - 'div', - 'dl', - 'dt', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'frame', - 'frameset', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'head', - 'header', - 'hgroup', - 'hr', - 'html', - 'iframe', - 'legend', - 'li', - 'link', - 'main', - 'menu', - 'menuitem', - 'meta', - 'nav', - 'noframes', - 'ol', - 'optgroup', - 'option', - 'p', - 'param', - 'pre', - 'section', - 'source', - 'title', - 'summary', - 'table', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'title', - 'tr', - 'track', - 'ul' -] +/** + * @see https://encoding.spec.whatwg.org/#concept-encoding-get + * @param {string|undefined} label + */ +function getEncoding (label) { + if (!label) { + return 'failure' + } + + // 1. Remove any leading and trailing ASCII whitespace from label. + // 2. If label is an ASCII case-insensitive match for any of the + // labels listed in the table below, then return the + // corresponding encoding; otherwise return failure. + switch (label.trim().toLowerCase()) { + case 'unicode-1-1-utf-8': + case 'unicode11utf8': + case 'unicode20utf8': + case 'utf-8': + case 'utf8': + case 'x-unicode20utf8': + return 'UTF-8' + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866' + case 'csisolatin2': + case 'iso-8859-2': + case 'iso-ir-101': + case 'iso8859-2': + case 'iso88592': + case 'iso_8859-2': + case 'iso_8859-2:1987': + case 'l2': + case 'latin2': + return 'ISO-8859-2' + case 'csisolatin3': + case 'iso-8859-3': + case 'iso-ir-109': + case 'iso8859-3': + case 'iso88593': + case 'iso_8859-3': + case 'iso_8859-3:1988': + case 'l3': + case 'latin3': + return 'ISO-8859-3' + case 'csisolatin4': + case 'iso-8859-4': + case 'iso-ir-110': + case 'iso8859-4': + case 'iso88594': + case 'iso_8859-4': + case 'iso_8859-4:1988': + case 'l4': + case 'latin4': + return 'ISO-8859-4' + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso-8859-5': + case 'iso-ir-144': + case 'iso8859-5': + case 'iso88595': + case 'iso_8859-5': + case 'iso_8859-5:1988': + return 'ISO-8859-5' + case 'arabic': + case 'asmo-708': + case 'csiso88596e': + case 'csiso88596i': + case 'csisolatinarabic': + case 'ecma-114': + case 'iso-8859-6': + case 'iso-8859-6-e': + case 'iso-8859-6-i': + case 'iso-ir-127': + case 'iso8859-6': + case 'iso88596': + case 'iso_8859-6': + case 'iso_8859-6:1987': + return 'ISO-8859-6' + case 'csisolatingreek': + case 'ecma-118': + case 'elot_928': + case 'greek': + case 'greek8': + case 'iso-8859-7': + case 'iso-ir-126': + case 'iso8859-7': + case 'iso88597': + case 'iso_8859-7': + case 'iso_8859-7:1987': + case 'sun_eu_greek': + return 'ISO-8859-7' + case 'csiso88598e': + case 'csisolatinhebrew': + case 'hebrew': + case 'iso-8859-8': + case 'iso-8859-8-e': + case 'iso-ir-138': + case 'iso8859-8': + case 'iso88598': + case 'iso_8859-8': + case 'iso_8859-8:1988': + case 'visual': + return 'ISO-8859-8' + case 'csiso88598i': + case 'iso-8859-8-i': + case 'logical': + return 'ISO-8859-8-I' + case 'csisolatin6': + case 'iso-8859-10': + case 'iso-ir-157': + case 'iso8859-10': + case 'iso885910': + case 'l6': + case 'latin6': + return 'ISO-8859-10' + case 'iso-8859-13': + case 'iso8859-13': + case 'iso885913': + return 'ISO-8859-13' + case 'iso-8859-14': + case 'iso8859-14': + case 'iso885914': + return 'ISO-8859-14' + case 'csisolatin9': + case 'iso-8859-15': + case 'iso8859-15': + case 'iso885915': + case 'iso_8859-15': + case 'l9': + return 'ISO-8859-15' + case 'iso-8859-16': + return 'ISO-8859-16' + case 'cskoi8r': + case 'koi': + case 'koi8': + case 'koi8-r': + case 'koi8_r': + return 'KOI8-R' + case 'koi8-ru': + case 'koi8-u': + return 'KOI8-U' + case 'csmacintosh': + case 'mac': + case 'macintosh': + case 'x-mac-roman': + return 'macintosh' + case 'iso-8859-11': + case 'iso8859-11': + case 'iso885911': + case 'tis-620': + case 'windows-874': + return 'windows-874' + case 'cp1250': + case 'windows-1250': + case 'x-cp1250': + return 'windows-1250' + case 'cp1251': + case 'windows-1251': + case 'x-cp1251': + return 'windows-1251' + case 'ansi_x3.4-1968': + case 'ascii': + case 'cp1252': + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso-8859-1': + case 'iso-ir-100': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'iso_8859-1:1987': + case 'l1': + case 'latin1': + case 'us-ascii': + case 'windows-1252': + case 'x-cp1252': + return 'windows-1252' + case 'cp1253': + case 'windows-1253': + case 'x-cp1253': + return 'windows-1253' + case 'cp1254': + case 'csisolatin5': + case 'iso-8859-9': + case 'iso-ir-148': + case 'iso8859-9': + case 'iso88599': + case 'iso_8859-9': + case 'iso_8859-9:1989': + case 'l5': + case 'latin5': + case 'windows-1254': + case 'x-cp1254': + return 'windows-1254' + case 'cp1255': + case 'windows-1255': + case 'x-cp1255': + return 'windows-1255' + case 'cp1256': + case 'windows-1256': + case 'x-cp1256': + return 'windows-1256' + case 'cp1257': + case 'windows-1257': + case 'x-cp1257': + return 'windows-1257' + case 'cp1258': + case 'windows-1258': + case 'x-cp1258': + return 'windows-1258' + case 'x-mac-cyrillic': + case 'x-mac-ukrainian': + return 'x-mac-cyrillic' + case 'chinese': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb_2312': + case 'gb_2312-80': + case 'gbk': + case 'iso-ir-58': + case 'x-gbk': + return 'GBK' + case 'gb18030': + return 'gb18030' + case 'big5': + case 'big5-hkscs': + case 'cn-big5': + case 'csbig5': + case 'x-x-big5': + return 'Big5' + case 'cseucpkdfmtjapanese': + case 'euc-jp': + case 'x-euc-jp': + return 'EUC-JP' + case 'csiso2022jp': + case 'iso-2022-jp': + return 'ISO-2022-JP' + case 'csshiftjis': + case 'ms932': + case 'ms_kanji': + case 'shift-jis': + case 'shift_jis': + case 'sjis': + case 'windows-31j': + case 'x-sjis': + return 'Shift_JIS' + case 'cseuckr': + case 'csksc56011987': + case 'euc-kr': + case 'iso-ir-149': + case 'korean': + case 'ks_c_5601-1987': + case 'ks_c_5601-1989': + case 'ksc5601': + case 'ksc_5601': + case 'windows-949': + return 'EUC-KR' + case 'csiso2022kr': + case 'hz-gb-2312': + case 'iso-2022-cn': + case 'iso-2022-cn-ext': + case 'iso-2022-kr': + case 'replacement': + return 'replacement' + case 'unicodefffe': + case 'utf-16be': + return 'UTF-16BE' + case 'csunicode': + case 'iso-10646-ucs-2': + case 'ucs-2': + case 'unicode': + case 'unicodefeff': + case 'utf-16': + case 'utf-16le': + return 'UTF-16LE' + case 'x-user-defined': + return 'x-user-defined' + default: return 'failure' + } +} + +module.exports = { + getEncoding +} /***/ }), -/***/ 71777: +/***/ 2160: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var xtend = __nccwpck_require__(76738) -var entities = __nccwpck_require__(81085) - -module.exports = factory - -// Factory to create an entity decoder. -function factory(ctx) { - decoder.raw = decodeRaw - - return decoder - - // Normalize `position` to add an `indent`. - function normalize(position) { - var offsets = ctx.offset - var line = position.line - var result = [] - - while (++line) { - if (!(line in offsets)) { - break - } - - result.push((offsets[line] || 0) + 1) - } - - return {start: position, indent: result} - } - - // Decode `value` (at `position`) into text-nodes. - function decoder(value, position, handler) { - entities(value, { - position: normalize(position), - warning: handleWarning, - text: handler, - reference: handler, - textContext: ctx, - referenceContext: ctx - }) - } - - // Decode `value` (at `position`) into a string. - function decodeRaw(value, position, options) { - return entities( - value, - xtend(options, {position: normalize(position), warning: handleWarning}) - ) - } +const { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} = __nccwpck_require__(165) +const { + kState, + kError, + kResult, + kEvents, + kAborted +} = __nccwpck_require__(6812) +const { webidl } = __nccwpck_require__(4222) +const { kEnumerableProperty } = __nccwpck_require__(3440) + +class FileReader extends EventTarget { + constructor () { + super() - // Handle a warning. - // See <https://github.com/wooorm/parse-entities> for the warnings. - function handleWarning(reason, position, code) { - if (code !== 3) { - ctx.file.message(reason, position) + this[kState] = 'empty' + this[kResult] = null + this[kError] = null + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null } } -} - - -/***/ }), -/***/ 5984: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer (blob) { + webidl.brandCheck(this, FileReader) -"use strict"; + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }) + blob = webidl.converters.Blob(blob, { strict: false }) -module.exports = { - position: true, - gfm: true, - commonmark: false, - pedantic: false, - blocks: __nccwpck_require__(14841) -} + // The readAsArrayBuffer(blob) method, when invoked, + // must initiate a read operation for blob with ArrayBuffer. + readOperation(this, blob, 'ArrayBuffer') + } + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString (blob) { + webidl.brandCheck(this, FileReader) -/***/ }), + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }) -/***/ 83962: -/***/ ((module) => { + blob = webidl.converters.Blob(blob, { strict: false }) -"use strict"; + // The readAsBinaryString(blob) method, when invoked, + // must initiate a read operation for blob with BinaryString. + readOperation(this, blob, 'BinaryString') + } + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText (blob, encoding = undefined) { + webidl.brandCheck(this, FileReader) -module.exports = locate + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }) -function locate(value, fromIndex) { - var index = value.indexOf('\n', fromIndex) + blob = webidl.converters.Blob(blob, { strict: false }) - while (index > fromIndex) { - if (value.charAt(index - 1) !== ' ') { - break + if (encoding !== undefined) { + encoding = webidl.converters.DOMString(encoding) } - index-- + // The readAsText(blob, encoding) method, when invoked, + // must initiate a read operation for blob with Text and encoding. + readOperation(this, blob, 'Text', encoding) } - return index -} + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL (blob) { + webidl.brandCheck(this, FileReader) + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }) -/***/ }), + blob = webidl.converters.Blob(blob, { strict: false }) -/***/ 88121: -/***/ ((module) => { + // The readAsDataURL(blob) method, when invoked, must + // initiate a read operation for blob with DataURL. + readOperation(this, blob, 'DataURL') + } -"use strict"; + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort () { + // 1. If this's state is "empty" or if this's state is + // "done" set this's result to null and terminate + // this algorithm. + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null + return + } + // 2. If this's state is "loading" set this's state to + // "done" and set this's result to null. + if (this[kState] === 'loading') { + this[kState] = 'done' + this[kResult] = null + } -module.exports = locate + // 3. If there are any tasks from this on the file reading + // task source in an affiliated task queue, then remove + // those tasks from that task queue. + this[kAborted] = true -function locate(value, fromIndex) { - return value.indexOf('`', fromIndex) -} + // 4. Terminate the algorithm for the read method being processed. + // TODO + // 5. Fire a progress event called abort at this. + fireAProgressEvent('abort', this) -/***/ }), + // 6. If this's state is not "loading", fire a progress + // event called loadend at this. + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this) + } + } -/***/ 90639: -/***/ ((module) => { + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState () { + webidl.brandCheck(this, FileReader) -"use strict"; + switch (this[kState]) { + case 'empty': return this.EMPTY + case 'loading': return this.LOADING + case 'done': return this.DONE + } + } + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result () { + webidl.brandCheck(this, FileReader) -module.exports = locate + // The result attribute’s getter, when invoked, must return + // this's result. + return this[kResult] + } -function locate(value, fromIndex) { - return value.indexOf('~~', fromIndex) -} + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error () { + webidl.brandCheck(this, FileReader) + // The error attribute’s getter, when invoked, must return + // this's error. + return this[kError] + } -/***/ }), + get onloadend () { + webidl.brandCheck(this, FileReader) -/***/ 16365: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return this[kEvents].loadend + } -"use strict"; + set onloadend (fn) { + webidl.brandCheck(this, FileReader) + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend) + } -var decimal = __nccwpck_require__(76995) -var alphabetical = __nccwpck_require__(84989) + if (typeof fn === 'function') { + this[kEvents].loadend = fn + this.addEventListener('loadend', fn) + } else { + this[kEvents].loadend = null + } + } -var plusSign = 43 // '+' -var dash = 45 // '-' -var dot = 46 // '.' -var underscore = 95 // '_' + get onerror () { + webidl.brandCheck(this, FileReader) -module.exports = locate + return this[kEvents].error + } -// See: <https://github.github.com/gfm/#extended-email-autolink> -function locate(value, fromIndex) { - var self = this - var at - var position + set onerror (fn) { + webidl.brandCheck(this, FileReader) - if (!this.options.gfm) { - return -1 + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error) + } + + if (typeof fn === 'function') { + this[kEvents].error = fn + this.addEventListener('error', fn) + } else { + this[kEvents].error = null + } } - at = value.indexOf('@', fromIndex) + get onloadstart () { + webidl.brandCheck(this, FileReader) - if (at === -1) { - return -1 + return this[kEvents].loadstart } - position = at + set onloadstart (fn) { + webidl.brandCheck(this, FileReader) - if (position === fromIndex || !isGfmAtext(value.charCodeAt(position - 1))) { - return locate.call(self, value, at + 1) - } + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart) + } - while (position > fromIndex && isGfmAtext(value.charCodeAt(position - 1))) { - position-- + if (typeof fn === 'function') { + this[kEvents].loadstart = fn + this.addEventListener('loadstart', fn) + } else { + this[kEvents].loadstart = null + } } - return position -} + get onprogress () { + webidl.brandCheck(this, FileReader) -function isGfmAtext(code) { - return ( - decimal(code) || - alphabetical(code) || - code === plusSign || - code === dash || - code === dot || - code === underscore - ) -} + return this[kEvents].progress + } + set onprogress (fn) { + webidl.brandCheck(this, FileReader) -/***/ }), + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress) + } -/***/ 77896: -/***/ ((module) => { + if (typeof fn === 'function') { + this[kEvents].progress = fn + this.addEventListener('progress', fn) + } else { + this[kEvents].progress = null + } + } -"use strict"; + get onload () { + webidl.brandCheck(this, FileReader) + return this[kEvents].load + } -module.exports = locate + set onload (fn) { + webidl.brandCheck(this, FileReader) -function locate(value, fromIndex) { - var asterisk = value.indexOf('*', fromIndex) - var underscore = value.indexOf('_', fromIndex) + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load) + } - if (underscore === -1) { - return asterisk + if (typeof fn === 'function') { + this[kEvents].load = fn + this.addEventListener('load', fn) + } else { + this[kEvents].load = null + } } - if (asterisk === -1) { - return underscore - } + get onabort () { + webidl.brandCheck(this, FileReader) - return underscore < asterisk ? underscore : asterisk -} + return this[kEvents].abort + } + set onabort (fn) { + webidl.brandCheck(this, FileReader) -/***/ }), + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort) + } -/***/ 21210: -/***/ ((module) => { + if (typeof fn === 'function') { + this[kEvents].abort = fn + this.addEventListener('abort', fn) + } else { + this[kEvents].abort = null + } + } +} -"use strict"; +// https://w3c.github.io/FileAPI/#dom-filereader-empty +FileReader.EMPTY = FileReader.prototype.EMPTY = 0 +// https://w3c.github.io/FileAPI/#dom-filereader-loading +FileReader.LOADING = FileReader.prototype.LOADING = 1 +// https://w3c.github.io/FileAPI/#dom-filereader-done +FileReader.DONE = FileReader.prototype.DONE = 2 +Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } +}) -module.exports = locate +Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors +}) -function locate(value, fromIndex) { - return value.indexOf('\\', fromIndex) +module.exports = { + FileReader } /***/ }), -/***/ 49687: -/***/ ((module) => { +/***/ 5976: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = locate - -function locate(value, fromIndex) { - var link = value.indexOf('[', fromIndex) - var image = value.indexOf('![', fromIndex) +const { webidl } = __nccwpck_require__(4222) - if (image === -1) { - return link - } +const kState = Symbol('ProgressEvent state') - // Link can never be `-1` if an image is found, so we don’t need to check - // for that :) - return link < image ? link : image -} +/** + * @see https://xhr.spec.whatwg.org/#progressevent + */ +class ProgressEvent extends Event { + constructor (type, eventInitDict = {}) { + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}) + super(type, eventInitDict) -/***/ }), + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + } + } -/***/ 49128: -/***/ ((module) => { + get lengthComputable () { + webidl.brandCheck(this, ProgressEvent) -"use strict"; + return this[kState].lengthComputable + } + get loaded () { + webidl.brandCheck(this, ProgressEvent) -module.exports = locate + return this[kState].loaded + } -function locate(value, fromIndex) { - var asterisk = value.indexOf('**', fromIndex) - var underscore = value.indexOf('__', fromIndex) + get total () { + webidl.brandCheck(this, ProgressEvent) - if (underscore === -1) { - return asterisk + return this[kState].total } +} - if (asterisk === -1) { - return underscore +webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false } +]) - return underscore < asterisk ? underscore : asterisk +module.exports = { + ProgressEvent } /***/ }), -/***/ 70471: +/***/ 6812: /***/ ((module) => { "use strict"; -module.exports = locate - -function locate(value, fromIndex) { - return value.indexOf('<', fromIndex) +module.exports = { + kState: Symbol('FileReader state'), + kResult: Symbol('FileReader result'), + kError: Symbol('FileReader error'), + kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), + kEvents: Symbol('FileReader events'), + kAborted: Symbol('FileReader aborted') } /***/ }), -/***/ 93917: -/***/ ((module) => { +/***/ 165: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = locate - -var values = ['www.', 'http://', 'https://'] - -function locate(value, fromIndex) { - var min = -1 - var index - var length - var position - - if (!this.options.gfm) { - return min - } - - length = values.length - index = -1 - - while (++index < length) { - position = value.indexOf(values[index], fromIndex) +const { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired +} = __nccwpck_require__(6812) +const { ProgressEvent } = __nccwpck_require__(5976) +const { getEncoding } = __nccwpck_require__(396) +const { DOMException } = __nccwpck_require__(7326) +const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(4322) +const { types } = __nccwpck_require__(9023) +const { StringDecoder } = __nccwpck_require__(3193) +const { btoa } = __nccwpck_require__(181) + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} - if (position !== -1 && (min === -1 || position < min)) { - min = position - } +/** + * @see https://w3c.github.io/FileAPI/#readOperation + * @param {import('./filereader').FileReader} fr + * @param {import('buffer').Blob} blob + * @param {string} type + * @param {string?} encodingName + */ +function readOperation (fr, blob, type, encodingName) { + // 1. If fr’s state is "loading", throw an InvalidStateError + // DOMException. + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError') } - return min -} + // 2. Set fr’s state to "loading". + fr[kState] = 'loading' + // 3. Set fr’s result to null. + fr[kResult] = null -/***/ }), + // 4. Set fr’s error to null. + fr[kError] = null -/***/ 11027: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 5. Let stream be the result of calling get stream on blob. + /** @type {import('stream/web').ReadableStream} */ + const stream = blob.stream() -"use strict"; + // 6. Let reader be the result of getting a reader from stream. + const reader = stream.getReader() + // 7. Let bytes be an empty byte sequence. + /** @type {Uint8Array[]} */ + const bytes = [] -var xtend = __nccwpck_require__(76738) -var removePosition = __nccwpck_require__(60299) + // 8. Let chunkPromise be the result of reading a chunk from + // stream with reader. + let chunkPromise = reader.read() -module.exports = parse + // 9. Let isFirstChunk be true. + let isFirstChunk = true -var lineFeed = '\n' -var lineBreaksExpression = /\r\n|\r/g + // 10. In parallel, while true: + // Note: "In parallel" just means non-blocking + // Note 2: readOperation itself cannot be async as double + // reading the body would then reject the promise, instead + // of throwing an error. + ;(async () => { + while (!fr[kAborted]) { + // 1. Wait for chunkPromise to be fulfilled or rejected. + try { + const { done, value } = await chunkPromise + + // 2. If chunkPromise is fulfilled, and isFirstChunk is + // true, queue a task to fire a progress event called + // loadstart at fr. + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr) + }) + } -// Parse the bound file. -function parse() { - var self = this - var value = String(self.file) - var start = {line: 1, column: 1, offset: 0} - var content = xtend(start) - var node + // 3. Set isFirstChunk to false. + isFirstChunk = false + + // 4. If chunkPromise is fulfilled with an object whose + // done property is false and whose value property is + // a Uint8Array object, run these steps: + if (!done && types.isUint8Array(value)) { + // 1. Let bs be the byte sequence represented by the + // Uint8Array object. + + // 2. Append bs to bytes. + bytes.push(value) + + // 3. If roughly 50ms have passed since these steps + // were last invoked, queue a task to fire a + // progress event called progress at fr. + if ( + ( + fr[kLastProgressEventFired] === undefined || + Date.now() - fr[kLastProgressEventFired] >= 50 + ) && + !fr[kAborted] + ) { + fr[kLastProgressEventFired] = Date.now() + queueMicrotask(() => { + fireAProgressEvent('progress', fr) + }) + } - // Clean non-unix newlines: `\r\n` and `\r` are all changed to `\n`. - // This should not affect positional information. - value = value.replace(lineBreaksExpression, lineFeed) + // 4. Set chunkPromise to the result of reading a + // chunk from stream with reader. + chunkPromise = reader.read() + } else if (done) { + // 5. Otherwise, if chunkPromise is fulfilled with an + // object whose done property is true, queue a task + // to run the following steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Let result be the result of package data given + // bytes, type, blob’s type, and encodingName. + try { + const result = packageData(bytes, type, blob.type, encodingName) - // BOM. - if (value.charCodeAt(0) === 0xfeff) { - value = value.slice(1) + // 4. Else: - content.column++ - content.offset++ - } + if (fr[kAborted]) { + return + } - node = { - type: 'root', - children: self.tokenizeBlock(value, content), - position: {start: start, end: self.eof || xtend(start)} - } + // 1. Set fr’s result to result. + fr[kResult] = result - if (!self.options.position) { - removePosition(node, true) - } + // 2. Fire a progress event called load at the fr. + fireAProgressEvent('load', fr) + } catch (error) { + // 3. If package data threw an exception error: - return node -} + // 1. Set fr’s error to error. + fr[kError] = error + // 2. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + } -/***/ }), + // 5. If fr’s state is not "loading", fire a progress + // event called loadend at the fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) -/***/ 14714: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + break + } + } catch (error) { + if (fr[kAborted]) { + return + } -"use strict"; + // 6. Otherwise, if chunkPromise is rejected with an + // error error, queue a task to run the following + // steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + // 2. Set fr’s error to error. + fr[kError] = error -var xtend = __nccwpck_require__(76738) -var toggle = __nccwpck_require__(78447) -var vfileLocation = __nccwpck_require__(2832) -var unescape = __nccwpck_require__(73235) -var decode = __nccwpck_require__(71777) -var tokenizer = __nccwpck_require__(87327) + // 3. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) -module.exports = Parser + // 4. If fr’s state is not "loading", fire a progress + // event called loadend at fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) -function Parser(doc, file) { - this.file = file - this.offset = {} - this.options = xtend(this.options) - this.setOptions({}) + break + } + } + })() +} - this.inList = false - this.inBlock = false - this.inLink = false - this.atStart = true +/** + * @see https://w3c.github.io/FileAPI/#fire-a-progress-event + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e The name of the event + * @param {import('./filereader').FileReader} reader + */ +function fireAProgressEvent (e, reader) { + // The progress event e does not bubble. e.bubbles must be false + // The progress event e is NOT cancelable. e.cancelable must be false + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }) - this.toOffset = vfileLocation(file).toOffset - this.unescape = unescape(this, 'escape') - this.decode = decode(this) + reader.dispatchEvent(event) } -var proto = Parser.prototype - -// Expose core. -proto.setOptions = __nccwpck_require__(14356) -proto.parse = __nccwpck_require__(11027) +/** + * @see https://w3c.github.io/FileAPI/#blob-package-data + * @param {Uint8Array[]} bytes + * @param {string} type + * @param {string?} mimeType + * @param {string?} encodingName + */ +function packageData (bytes, type, mimeType, encodingName) { + // 1. A Blob has an associated package data algorithm, given + // bytes, a type, a optional mimeType, and a optional + // encodingName, which switches on type and runs the + // associated steps: -// Expose `defaults`. -proto.options = __nccwpck_require__(5984) + switch (type) { + case 'DataURL': { + // 1. Return bytes as a DataURL [RFC2397] subject to + // the considerations below: + // * Use mimeType as part of the Data URL if it is + // available in keeping with the Data URL + // specification [RFC2397]. + // * If mimeType is not available return a Data URL + // without a media-type. [RFC2397]. -// Enter and exit helpers. -proto.exitStart = toggle('atStart', true) -proto.enterList = toggle('inList', false) -proto.enterLink = toggle('inLink', false) -proto.enterBlock = toggle('inBlock', false) + // https://datatracker.ietf.org/doc/html/rfc2397#section-3 + // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data + // mediatype := [ type "/" subtype ] *( ";" parameter ) + // data := *urlchar + // parameter := attribute "=" value + let dataURL = 'data:' -// Nodes that can interupt a paragraph: -// -// ```markdown -// A paragraph, followed by a thematic break. -// ___ -// ``` -// -// In the above example, the thematic break “interupts” the paragraph. -proto.interruptParagraph = [ - ['thematicBreak'], - ['list'], - ['atxHeading'], - ['fencedCode'], - ['blockquote'], - ['html'], - ['setextHeading', {commonmark: false}], - ['definition', {commonmark: false}] -] + const parsed = parseMIMEType(mimeType || 'application/octet-stream') -// Nodes that can interupt a list: -// -// ```markdown -// - One -// ___ -// ``` -// -// In the above example, the thematic break “interupts” the list. -proto.interruptList = [ - ['atxHeading', {pedantic: false}], - ['fencedCode', {pedantic: false}], - ['thematicBreak', {pedantic: false}], - ['definition', {commonmark: false}] -] + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed) + } -// Nodes that can interupt a blockquote: -// -// ```markdown -// > A paragraph. -// ___ -// ``` -// -// In the above example, the thematic break “interupts” the blockquote. -proto.interruptBlockquote = [ - ['indentedCode', {commonmark: true}], - ['fencedCode', {commonmark: true}], - ['atxHeading', {commonmark: true}], - ['setextHeading', {commonmark: true}], - ['thematicBreak', {commonmark: true}], - ['html', {commonmark: true}], - ['list', {commonmark: true}], - ['definition', {commonmark: false}] -] + dataURL += ';base64,' -// Handlers. -proto.blockTokenizers = { - blankLine: __nccwpck_require__(6627), - indentedCode: __nccwpck_require__(21575), - fencedCode: __nccwpck_require__(9789), - blockquote: __nccwpck_require__(74021), - atxHeading: __nccwpck_require__(39769), - thematicBreak: __nccwpck_require__(76964), - list: __nccwpck_require__(39165), - setextHeading: __nccwpck_require__(46373), - html: __nccwpck_require__(94728), - definition: __nccwpck_require__(9975), - table: __nccwpck_require__(24444), - paragraph: __nccwpck_require__(22073) -} - -proto.inlineTokenizers = { - escape: __nccwpck_require__(96312), - autoLink: __nccwpck_require__(80254), - url: __nccwpck_require__(6305), - email: __nccwpck_require__(18337), - html: __nccwpck_require__(42764), - link: __nccwpck_require__(70086), - reference: __nccwpck_require__(4648), - strong: __nccwpck_require__(82250), - emphasis: __nccwpck_require__(8653), - deletion: __nccwpck_require__(24332), - code: __nccwpck_require__(72826), - break: __nccwpck_require__(41816), - text: __nccwpck_require__(16931) -} - -// Expose precedence. -proto.blockMethods = keys(proto.blockTokenizers) -proto.inlineMethods = keys(proto.inlineTokenizers) - -// Tokenizers. -proto.tokenizeBlock = tokenizer('block') -proto.tokenizeInline = tokenizer('inline') -proto.tokenizeFactory = tokenizer - -// Get all keys in `value`. -function keys(value) { - var result = [] - var key - - for (key in value) { - result.push(key) - } + const decoder = new StringDecoder('latin1') - return result -} + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)) + } + dataURL += btoa(decoder.end()) -/***/ }), + return dataURL + } + case 'Text': { + // 1. Let encoding be failure + let encoding = 'failure' -/***/ 14356: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 2. If the encodingName is present, set encoding to the + // result of getting an encoding from encodingName. + if (encodingName) { + encoding = getEncoding(encodingName) + } -"use strict"; + // 3. If encoding is failure, and mimeType is present: + if (encoding === 'failure' && mimeType) { + // 1. Let type be the result of parse a MIME type + // given mimeType. + const type = parseMIMEType(mimeType) + // 2. If type is not failure, set encoding to the result + // of getting an encoding from type’s parameters["charset"]. + if (type !== 'failure') { + encoding = getEncoding(type.parameters.get('charset')) + } + } -var xtend = __nccwpck_require__(76738) -var escapes = __nccwpck_require__(31152) -var defaults = __nccwpck_require__(5984) + // 4. If encoding is failure, then set encoding to UTF-8. + if (encoding === 'failure') { + encoding = 'UTF-8' + } -module.exports = setOptions + // 5. Decode bytes using fallback encoding encoding, and + // return the result. + return decode(bytes, encoding) + } + case 'ArrayBuffer': { + // Return a new ArrayBuffer whose contents are bytes. + const sequence = combineByteSequences(bytes) -function setOptions(options) { - var self = this - var current = self.options - var key - var value + return sequence.buffer + } + case 'BinaryString': { + // Return bytes as a binary string, in which every byte + // is represented by a code unit of equal value [0..255]. + let binaryString = '' - if (options == null) { - options = {} - } else if (typeof options === 'object') { - options = xtend(options) - } else { - throw new Error('Invalid value `' + options + '` for setting `options`') - } + const decoder = new StringDecoder('latin1') - for (key in defaults) { - value = options[key] + for (const chunk of bytes) { + binaryString += decoder.write(chunk) + } - if (value == null) { - value = current[key] - } + binaryString += decoder.end() - if ( - (key !== 'blocks' && typeof value !== 'boolean') || - (key === 'blocks' && typeof value !== 'object') - ) { - throw new Error( - 'Invalid value `' + value + '` for setting `options.' + key + '`' - ) + return binaryString } - - options[key] = value } - - self.options = options - self.escape = escapes(options) - - return self } +/** + * @see https://encoding.spec.whatwg.org/#decode + * @param {Uint8Array[]} ioQueue + * @param {string} encoding + */ +function decode (ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue) -/***/ }), - -/***/ 80254: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. + const BOMEncoding = BOMSniffing(bytes) -"use strict"; + let slice = 0 + // 2. If BOMEncoding is non-null: + if (BOMEncoding !== null) { + // 1. Set encoding to BOMEncoding. + encoding = BOMEncoding -var whitespace = __nccwpck_require__(35708) -var decode = __nccwpck_require__(81085) -var locate = __nccwpck_require__(70471) - -module.exports = autoLink -autoLink.locator = locate -autoLink.notInLink = true - -var lessThan = '<' -var greaterThan = '>' -var atSign = '@' -var slash = '/' -var mailto = 'mailto:' -var mailtoLength = mailto.length - -function autoLink(eat, value, silent) { - var self = this - var subvalue = '' - var length = value.length - var index = 0 - var queue = '' - var hasAtCharacter = false - var link = '' - var character - var now - var content - var tokenizers - var exit - - if (value.charAt(0) !== lessThan) { - return + // 2. Read three bytes from ioQueue, if BOMEncoding is + // UTF-8; otherwise read two bytes. + // (Do nothing with those bytes.) + slice = BOMEncoding === 'UTF-8' ? 3 : 2 } - index++ - subvalue = lessThan + // 3. Process a queue with an instance of encoding’s + // decoder, ioQueue, output, and "replacement". - while (index < length) { - character = value.charAt(index) + // 4. Return output. - if ( - whitespace(character) || - character === greaterThan || - character === atSign || - (character === ':' && value.charAt(index + 1) === slash) - ) { - break - } + const sliced = bytes.slice(slice) + return new TextDecoder(encoding).decode(sliced) +} - queue += character - index++ +/** + * @see https://encoding.spec.whatwg.org/#bom-sniff + * @param {Uint8Array} ioQueue + */ +function BOMSniffing (ioQueue) { + // 1. Let BOM be the result of peeking 3 bytes from ioQueue, + // converted to a byte sequence. + const [a, b, c] = ioQueue + + // 2. For each of the rows in the table below, starting with + // the first one and going down, if BOM starts with the + // bytes given in the first column, then return the + // encoding given in the cell in the second column of that + // row. Otherwise, return null. + if (a === 0xEF && b === 0xBB && c === 0xBF) { + return 'UTF-8' + } else if (a === 0xFE && b === 0xFF) { + return 'UTF-16BE' + } else if (a === 0xFF && b === 0xFE) { + return 'UTF-16LE' } - if (!queue) { - return - } + return null +} - link += queue - queue = '' +/** + * @param {Uint8Array[]} sequences + */ +function combineByteSequences (sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength + }, 0) - character = value.charAt(index) - link += character - index++ + let offset = 0 - if (character === atSign) { - hasAtCharacter = true - } else { - if (character !== ':' || value.charAt(index + 1) !== slash) { - return - } + return sequences.reduce((a, b) => { + a.set(b, offset) + offset += b.byteLength + return a + }, new Uint8Array(size)) +} - link += slash - index++ - } +module.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} - while (index < length) { - character = value.charAt(index) - if (whitespace(character) || character === greaterThan) { - break - } +/***/ }), - queue += character - index++ - } +/***/ 2581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - character = value.charAt(index) +"use strict"; - if (!queue || character !== greaterThan) { - return - } - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +const globalDispatcher = Symbol.for('undici.globalDispatcher.1') +const { InvalidArgumentError } = __nccwpck_require__(8707) +const Agent = __nccwpck_require__(9965) - link += queue - content = link - subvalue += link + character - now = eat.now() - now.column++ - now.offset++ +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()) +} - if (hasAtCharacter) { - if (link.slice(0, mailtoLength).toLowerCase() === mailto) { - content = content.slice(mailtoLength) - now.column += mailtoLength - now.offset += mailtoLength - } else { - link = mailto + link - } +function setGlobalDispatcher (agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent') } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }) +} - // Temporarily remove all tokenizers except text in autolinks. - tokenizers = self.inlineTokenizers - self.inlineTokenizers = {text: tokenizers.text} - - exit = self.enterLink() - - content = self.tokenizeInline(content, now) - - self.inlineTokenizers = tokenizers - exit() +function getGlobalDispatcher () { + return globalThis[globalDispatcher] +} - return eat(subvalue)({ - type: 'link', - title: null, - url: decode(link, {nonTerminated: false}), - children: content - }) +module.exports = { + setGlobalDispatcher, + getGlobalDispatcher } /***/ }), -/***/ 6627: +/***/ 8840: /***/ ((module) => { "use strict"; -// A line containing no characters, or a line containing only spaces (U+0020) or -// tabs (U+0009), is called a blank line. -// See <https://spec.commonmark.org/0.29/#blank-line>. -var reBlankLine = /^[ \t]*(\n|$)/ - -// Note that though blank lines play a special role in lists to determine -// whether the list is tight or loose -// (<https://spec.commonmark.org/0.29/#blank-lines>), it’s done by the list -// tokenizer and this blank line tokenizer does not have to be responsible for -// that. -// Therefore, configs such as `blankLine.notInList` do not have to be set here. -module.exports = blankLine +module.exports = class DecoratorHandler { + constructor (handler) { + this.handler = handler + } -function blankLine(eat, value, silent) { - var match - var subvalue = '' - var index = 0 - var length = value.length + onConnect (...args) { + return this.handler.onConnect(...args) + } - while (index < length) { - match = reBlankLine.exec(value.slice(index)) + onError (...args) { + return this.handler.onError(...args) + } - if (match == null) { - break - } + onUpgrade (...args) { + return this.handler.onUpgrade(...args) + } - index += match[0].length - subvalue += match[0] + onHeaders (...args) { + return this.handler.onHeaders(...args) } - if (subvalue === '') { - return + onData (...args) { + return this.handler.onData(...args) } - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true + onComplete (...args) { + return this.handler.onComplete(...args) } - eat(subvalue) + onBodySent (...args) { + return this.handler.onBodySent(...args) + } } /***/ }), -/***/ 74021: +/***/ 8299: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var trim = __nccwpck_require__(82315) -var interrupt = __nccwpck_require__(915) - -module.exports = blockquote - -var lineFeed = '\n' -var tab = '\t' -var space = ' ' -var greaterThan = '>' - -function blockquote(eat, value, silent) { - var self = this - var offsets = self.offset - var tokenizers = self.blockTokenizers - var interruptors = self.interruptBlockquote - var now = eat.now() - var currentLine = now.line - var length = value.length - var values = [] - var contents = [] - var indents = [] - var add - var index = 0 - var character - var rest - var nextIndex - var content - var line - var startIndex - var prefixed - var exit - - while (index < length) { - character = value.charAt(index) - - if (character !== space && character !== tab) { - break - } +const util = __nccwpck_require__(3440) +const { kBodyUsed } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { InvalidArgumentError } = __nccwpck_require__(8707) +const EE = __nccwpck_require__(4434) - index++ - } +const redirectableStatusCodes = [300, 301, 302, 303, 307, 308] - if (value.charAt(index) !== greaterThan) { - return - } +const kBody = Symbol('body') - if (silent) { - return true +class BodyAsyncIterable { + constructor (body) { + this[kBody] = body + this[kBodyUsed] = false } - index = 0 - - while (index < length) { - nextIndex = value.indexOf(lineFeed, index) - startIndex = index - prefixed = false + async * [Symbol.asyncIterator] () { + assert(!this[kBodyUsed], 'disturbed') + this[kBodyUsed] = true + yield * this[kBody] + } +} - if (nextIndex === -1) { - nextIndex = length +class RedirectHandler { + constructor (dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') } - while (index < length) { - character = value.charAt(index) - - if (character !== space && character !== tab) { - break - } - - index++ - } + util.validateHandler(handler, opts.method, opts.upgrade) - if (value.charAt(index) === greaterThan) { - index++ - prefixed = true + this.dispatch = dispatch + this.location = null + this.abort = null + this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy + this.maxRedirections = maxRedirections + this.handler = handler + this.history = [] - if (value.charAt(index) === space) { - index++ + if (util.isStream(this.opts.body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body + .on('data', function () { + assert(false) + }) } - } else { - index = startIndex - } - - content = value.slice(index, nextIndex) - - if (!prefixed && !trim(content)) { - index = startIndex - break - } - if (!prefixed) { - rest = value.slice(index) - - // Check if the following code contains a possible block. - if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) { - break + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = true + }) } + } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + this.opts.body = new BodyAsyncIterable(this.opts.body) + } else if ( + this.opts.body && + typeof this.opts.body !== 'string' && + !ArrayBuffer.isView(this.opts.body) && + util.isIterable(this.opts.body) + ) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + this.opts.body = new BodyAsyncIterable(this.opts.body) } + } - line = startIndex === index ? content : value.slice(startIndex, nextIndex) - - indents.push(index - startIndex) - values.push(line) - contents.push(content) - - index = nextIndex + 1 + onConnect (abort) { + this.abort = abort + this.handler.onConnect(abort, { history: this.history }) } - index = -1 - length = indents.length - add = eat(values.join(lineFeed)) + onUpgrade (statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket) + } - while (++index < length) { - offsets[currentLine] = (offsets[currentLine] || 0) + indents[index] - currentLine++ + onError (error) { + this.handler.onError(error) } - exit = self.enterBlock() - contents = self.tokenizeBlock(contents.join(lineFeed), now) - exit() + onHeaders (statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers) - return add({type: 'blockquote', children: contents}) -} + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)) + } + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText) + } -/***/ }), + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) + const path = search ? `${pathname}${search}` : pathname -/***/ 41816: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Remove headers referring to the original URL. + // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. + // https://tools.ietf.org/html/rfc7231#section-6.4 + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin) + this.opts.path = path + this.opts.origin = origin + this.opts.maxRedirections = 0 + this.opts.query = null -"use strict"; + // https://tools.ietf.org/html/rfc7231#section-6.4.4 + // In case of HTTP 303, always replace method to be either HEAD or GET + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET' + this.opts.body = null + } + } + onData (chunk) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 -var locate = __nccwpck_require__(83962) + TLDR: undici always ignores 3xx response bodies. -module.exports = hardBreak -hardBreak.locator = locate + Redirection is used to serve the requested resource from another URL, so it is assumes that + no body is generated (and thus can be ignored). Even though generating a body is not prohibited. -var space = ' ' -var lineFeed = '\n' -var minBreakLength = 2 + For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually + (which means it's optional and not mandated) contain just an hyperlink to the value of + the Location response header, so the body can be ignored safely. -function hardBreak(eat, value, silent) { - var length = value.length - var index = -1 - var queue = '' - var character + For status 300, which is "Multiple Choices", the spec mentions both generating a Location + response header AND a response body with the other possible location to follow. + Since the spec explicitily chooses not to specify a format for such body and leave it to + servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. + */ + } else { + return this.handler.onData(chunk) + } + } - while (++index < length) { - character = value.charAt(index) + onComplete (trailers) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 - if (character === lineFeed) { - if (index < minBreakLength) { - return - } + TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections + and neither are useful if present. - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } + See comment on onData method above for more detailed informations. + */ - queue += character + this.location = null + this.abort = null - return eat(queue)({type: 'break'}) + this.dispatch(this.opts, this) + } else { + this.handler.onComplete(trailers) } + } - if (character !== space) { - return + onBodySent (chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk) } - - queue += character } } - -/***/ }), - -/***/ 9789: -/***/ ((module) => { - -"use strict"; - - -module.exports = fencedCode - -var lineFeed = '\n' -var tab = '\t' -var space = ' ' -var tilde = '~' -var graveAccent = '`' - -var minFenceCount = 3 -var tabSize = 4 - -function fencedCode(eat, value, silent) { - var self = this - var gfm = self.options.gfm - var length = value.length + 1 - var index = 0 - var subvalue = '' - var fenceCount - var marker - var character - var flag - var lang - var meta - var queue - var content - var exdentedContent - var closing - var exdentedClosing - var indent - var now - - if (!gfm) { - return +function parseLocation (statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null } - // Eat initial spacing. - while (index < length) { - character = value.charAt(index) - - if (character !== space && character !== tab) { - break + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === 'location') { + return headers[i + 1] } - - subvalue += character - index++ } +} - indent = index - - // Eat the fence. - character = value.charAt(index) - - if (character !== tilde && character !== graveAccent) { - return +// https://tools.ietf.org/html/rfc7231#section-6.4.4 +function shouldRemoveHeader (header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host' } - - index++ - marker = character - fenceCount = 1 - subvalue += character - - while (index < length) { - character = value.charAt(index) - - if (character !== marker) { - break - } - - subvalue += character - fenceCount++ - index++ + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true } - - if (fenceCount < minFenceCount) { - return + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header) + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' } + return false +} - // Eat spacing before flag. - while (index < length) { - character = value.charAt(index) - - if (character !== space && character !== tab) { - break +// https://tools.ietf.org/html/rfc7231#section-6.4 +function cleanRequestHeaders (headers, removeContent, unknownOrigin) { + const ret = [] + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]) + } } - - subvalue += character - index++ + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]) + } + } + } else { + assert(headers == null, 'headers must be an object or an array') } + return ret +} - // Eat flag. - flag = '' - queue = '' - - while (index < length) { - character = value.charAt(index) - - if ( - character === lineFeed || - (marker === graveAccent && character === marker) - ) { - break - } +module.exports = RedirectHandler - if (character === space || character === tab) { - queue += character - } else { - flag += queue + character - queue = '' - } - index++ - } +/***/ }), - character = value.charAt(index) +/***/ 3573: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (character && character !== lineFeed) { - return - } +const assert = __nccwpck_require__(2613) - if (silent) { - return true - } +const { kRetryHandlerDefaultRetry } = __nccwpck_require__(6443) +const { RequestRetryError } = __nccwpck_require__(8707) +const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3440) - now = eat.now() - now.column += subvalue.length - now.offset += subvalue.length +function calculateRetryAfterHeader (retryAfter) { + const current = Date.now() + const diff = new Date(retryAfter).getTime() - current - subvalue += flag - flag = self.decode.raw(self.unescape(flag), now) + return diff +} - if (queue) { - subvalue += queue +class RetryHandler { + constructor (opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {} + + this.dispatch = handlers.dispatch + this.handler = handlers.handler + this.opts = dispatchOpts + this.abort = null + this.aborted = false + this.retryOpts = { + retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1000, // 30s, + timeout: minTimeout ?? 500, // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE' + ] + } + + this.retryCount = 0 + this.start = 0 + this.end = null + this.etag = null + this.resume = null + + // Handle possible onConnect duplication + this.handler.onConnect(reason => { + this.aborted = true + if (this.abort) { + this.abort(reason) + } else { + this.reason = reason + } + }) } - queue = '' - closing = '' - exdentedClosing = '' - content = '' - exdentedContent = '' - var skip = true - - // Eat content. - while (index < length) { - character = value.charAt(index) - content += closing - exdentedContent += exdentedClosing - closing = '' - exdentedClosing = '' + onRequestSent () { + if (this.handler.onRequestSent) { + this.handler.onRequestSent() + } + } - if (character !== lineFeed) { - content += character - exdentedClosing += character - index++ - continue + onUpgrade (statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket) } + } - // The first line feed is ignored. Others aren’t. - if (skip) { - subvalue += character - skip = false + onConnect (abort) { + if (this.aborted) { + abort(this.reason) } else { - closing += character - exdentedClosing += character + this.abort = abort } + } - queue = '' - index++ + onBodySent (chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk) + } - while (index < length) { - character = value.charAt(index) + static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) { + const { statusCode, code, headers } = err + const { method, retryOptions } = opts + const { + maxRetries, + timeout, + maxTimeout, + timeoutFactor, + statusCodes, + errorCodes, + methods + } = retryOptions + let { counter, currentTimeout } = state + + currentTimeout = + currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout + + // Any code that is not a Undici's originated and allowed to retry + if ( + code && + code !== 'UND_ERR_REQ_RETRY' && + code !== 'UND_ERR_SOCKET' && + !errorCodes.includes(code) + ) { + cb(err) + return + } - if (character !== space) { - break - } + // If a set of method are provided and the current method is not in the list + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err) + return + } - queue += character - index++ + // If a set of status code are provided and the current status code is not in the list + if ( + statusCode != null && + Array.isArray(statusCodes) && + !statusCodes.includes(statusCode) + ) { + cb(err) + return } - closing += queue - exdentedClosing += queue.slice(indent) + // If we reached the max number of retries + if (counter > maxRetries) { + cb(err) + return + } - if (queue.length >= tabSize) { - continue + let retryAfterHeader = headers != null && headers['retry-after'] + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader) + retryAfterHeader = isNaN(retryAfterHeader) + ? calculateRetryAfterHeader(retryAfterHeader) + : retryAfterHeader * 1e3 // Retry-After is in seconds } - queue = '' + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout) - while (index < length) { - character = value.charAt(index) + state.currentTimeout = retryTimeout - if (character !== marker) { - break - } + setTimeout(() => cb(null), retryTimeout) + } - queue += character - index++ - } + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders) - closing += queue - exdentedClosing += queue + this.retryCount += 1 - if (queue.length < fenceCount) { - continue + if (statusCode >= 300) { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + ) + return false } - queue = '' - - while (index < length) { - character = value.charAt(index) + // Checkpoint for resume from where we left it + if (this.resume != null) { + this.resume = null - if (character !== space && character !== tab) { - break + if (statusCode !== 206) { + return true } - closing += character - exdentedClosing += character - index++ - } - - if (!character || character === lineFeed) { - break - } - } + const contentRange = parseRangeHeader(headers['content-range']) + // If no content range + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } - subvalue += content + closing + // Let's start with a weak etag check + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } - // Get lang and meta from the flag. - index = -1 - length = flag.length + const { start, size, end = size } = contentRange - while (++index < length) { - character = flag.charAt(index) + assert(this.start === start, 'content-range mismatch') + assert(this.end == null || this.end === end, 'content-range mismatch') - if (character === space || character === tab) { - if (!lang) { - lang = flag.slice(0, index) - } - } else if (lang) { - meta = flag.slice(index) - break + this.resume = resume + return true } - } - return eat(subvalue)({ - type: 'code', - lang: lang || flag || null, - meta: meta || null, - value: exdentedContent - }) -} + if (this.end == null) { + if (statusCode === 206) { + // First time we receive 206 + const range = parseRangeHeader(headers['content-range']) + if (range == null) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } -/***/ }), + const { start, size, end = size } = range -/***/ 21575: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + assert( + start != null && Number.isFinite(start) && this.start !== start, + 'content-range mismatch' + ) + assert(Number.isFinite(start)) + assert( + end != null && Number.isFinite(end) && this.end !== end, + 'invalid content-length' + ) -"use strict"; + this.start = start + this.end = end + } + // We make our best to checkpoint the body for further range headers + if (this.end == null) { + const contentLength = headers['content-length'] + this.end = contentLength != null ? Number(contentLength) : null + } -var repeat = __nccwpck_require__(69626) -var trim = __nccwpck_require__(54411) + assert(Number.isFinite(this.start)) + assert( + this.end == null || Number.isFinite(this.end), + 'invalid content-length' + ) -module.exports = indentedCode + this.resume = resume + this.etag = headers.etag != null ? headers.etag : null -var lineFeed = '\n' -var tab = '\t' -var space = ' ' + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } -var tabSize = 4 -var codeIndent = repeat(space, tabSize) + const err = new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) -function indentedCode(eat, value, silent) { - var index = -1 - var length = value.length - var subvalue = '' - var content = '' - var subvalueQueue = '' - var contentQueue = '' - var character - var blankQueue - var indent + this.abort(err) - while (++index < length) { - character = value.charAt(index) + return false + } - if (indent) { - indent = false + onData (chunk) { + this.start += chunk.length - subvalue += subvalueQueue - content += contentQueue - subvalueQueue = '' - contentQueue = '' + return this.handler.onData(chunk) + } - if (character === lineFeed) { - subvalueQueue = character - contentQueue = character - } else { - subvalue += character - content += character + onComplete (rawTrailers) { + this.retryCount = 0 + return this.handler.onComplete(rawTrailers) + } - while (++index < length) { - character = value.charAt(index) + onError (err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } - if (!character || character === lineFeed) { - contentQueue = character - subvalueQueue = character - break - } + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ) - subvalue += character - content += character - } + function onRetry (err) { + if (err != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) } - } else if ( - character === space && - value.charAt(index + 1) === character && - value.charAt(index + 2) === character && - value.charAt(index + 3) === character - ) { - subvalueQueue += codeIndent - index += 3 - indent = true - } else if (character === tab) { - subvalueQueue += character - indent = true - } else { - blankQueue = '' - while (character === tab || character === space) { - blankQueue += character - character = value.charAt(++index) + if (this.start !== 0) { + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + range: `bytes=${this.start}-${this.end ?? ''}` + } + } } - if (character !== lineFeed) { - break + try { + this.dispatch(this.opts, this) + } catch (err) { + this.handler.onError(err) } - - subvalueQueue += blankQueue + character - contentQueue += character - } - } - - if (content) { - if (silent) { - return true } - - return eat(subvalue)({ - type: 'code', - lang: null, - meta: null, - value: trim(content) - }) } } +module.exports = RetryHandler + /***/ }), -/***/ 72826: +/***/ 4415: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var locate = __nccwpck_require__(88121) - -module.exports = inlineCode -inlineCode.locator = locate +const RedirectHandler = __nccwpck_require__(8299) -var lineFeed = 10 // '\n' -var space = 32 // ' ' -var graveAccent = 96 // '`' +function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept (opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts -function inlineCode(eat, value, silent) { - var length = value.length - var index = 0 - var openingFenceEnd - var closingFenceStart - var closingFenceEnd - var code - var next - var found + if (!maxRedirections) { + return dispatch(opts, handler) + } - while (index < length) { - if (value.charCodeAt(index) !== graveAccent) { - break + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler) + opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler) } - - index++ } +} - if (index === 0 || index === length) { - return - } +module.exports = createRedirectInterceptor - openingFenceEnd = index - next = value.charCodeAt(index) - while (index < length) { - code = next - next = value.charCodeAt(index + 1) +/***/ }), - if (code === graveAccent) { - if (closingFenceStart === undefined) { - closingFenceStart = index - } +/***/ 2824: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - closingFenceEnd = index + 1 +"use strict"; - if ( - next !== graveAccent && - closingFenceEnd - closingFenceStart === openingFenceEnd - ) { - found = true - break - } - } else if (closingFenceStart !== undefined) { - closingFenceStart = undefined - closingFenceEnd = undefined +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; +const utils_1 = __nccwpck_require__(172); +// C headers +var ERROR; +(function (ERROR) { + ERROR[ERROR["OK"] = 0] = "OK"; + ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; + ERROR[ERROR["STRICT"] = 2] = "STRICT"; + ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; + ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR[ERROR["USER"] = 24] = "USER"; +})(ERROR = exports.ERROR || (exports.ERROR = {})); +var TYPE; +(function (TYPE) { + TYPE[TYPE["BOTH"] = 0] = "BOTH"; + TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; + TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; +})(TYPE = exports.TYPE || (exports.TYPE = {})); +var FLAGS; +(function (FLAGS) { + FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; + FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; + FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; + // 1 << 8 is unused + FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; +})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); +var LENIENT_FLAGS; +(function (LENIENT_FLAGS) { + LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; +})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); +var METHODS; +(function (METHODS) { + METHODS[METHODS["DELETE"] = 0] = "DELETE"; + METHODS[METHODS["GET"] = 1] = "GET"; + METHODS[METHODS["HEAD"] = 2] = "HEAD"; + METHODS[METHODS["POST"] = 3] = "POST"; + METHODS[METHODS["PUT"] = 4] = "PUT"; + /* pathological */ + METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; + METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; + METHODS[METHODS["TRACE"] = 7] = "TRACE"; + /* WebDAV */ + METHODS[METHODS["COPY"] = 8] = "COPY"; + METHODS[METHODS["LOCK"] = 9] = "LOCK"; + METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; + METHODS[METHODS["MOVE"] = 11] = "MOVE"; + METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; + METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; + METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; + METHODS[METHODS["BIND"] = 16] = "BIND"; + METHODS[METHODS["REBIND"] = 17] = "REBIND"; + METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; + METHODS[METHODS["ACL"] = 19] = "ACL"; + /* subversion */ + METHODS[METHODS["REPORT"] = 20] = "REPORT"; + METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS[METHODS["MERGE"] = 23] = "MERGE"; + /* upnp */ + METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; + METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + /* RFC-5789 */ + METHODS[METHODS["PATCH"] = 28] = "PATCH"; + METHODS[METHODS["PURGE"] = 29] = "PURGE"; + /* CalDAV */ + METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; + /* RFC-2068, section 19.6.1.2 */ + METHODS[METHODS["LINK"] = 31] = "LINK"; + METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; + /* icecast */ + METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; + /* RFC-7540, section 11.6 */ + METHODS[METHODS["PRI"] = 34] = "PRI"; + /* RFC-2326 RTSP */ + METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS[METHODS["SETUP"] = 37] = "SETUP"; + METHODS[METHODS["PLAY"] = 38] = "PLAY"; + METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; + METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; + METHODS[METHODS["RECORD"] = 44] = "RECORD"; + /* RAOP */ + METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; +})(METHODS = exports.METHODS || (exports.METHODS = {})); +exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE, +]; +exports.METHODS_ICE = [ + METHODS.SOURCE, +]; +exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST, +]; +exports.METHOD_MAP = utils_1.enumToMap(METHODS); +exports.H_METHOD_MAP = {}; +Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; } +}); +var FINISH; +(function (FINISH) { + FINISH[FINISH["SAFE"] = 0] = "SAFE"; + FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; +})(FINISH = exports.FINISH || (exports.FINISH = {})); +exports.ALPHA = []; +for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + // Upper case + exports.ALPHA.push(String.fromCharCode(i)); + // Lower case + exports.ALPHA.push(String.fromCharCode(i + 0x20)); +} +exports.NUM_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, +}; +exports.HEX_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, + A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, + a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, +}; +exports.NUM = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', +]; +exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); +exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; +exports.USERINFO_CHARS = exports.ALPHANUM + .concat(exports.MARK) + .concat(['%', ';', ':', '&', '=', '+', '$', ',']); +// TODO(indutny): use RFC +exports.STRICT_URL_CHAR = [ + '!', '"', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + ':', ';', '<', '=', '>', + '@', '[', '\\', ']', '^', '_', + '`', + '{', '|', '}', '~', +].concat(exports.ALPHANUM); +exports.URL_CHAR = exports.STRICT_URL_CHAR + .concat(['\t', '\f']); +// All characters with 0x80 bit set to 1 +for (let i = 0x80; i <= 0xff; i++) { + exports.URL_CHAR.push(i); +} +exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1*<any CHAR except CTLs or separators> + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +exports.STRICT_TOKEN = [ + '!', '#', '$', '%', '&', '\'', + '*', '+', '-', '.', + '^', '_', '`', + '|', '~', +].concat(exports.ALPHANUM); +exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); +/* + * Verify that a char is a valid visible (printable) US-ASCII + * character or %x80-FF + */ +exports.HEADER_CHARS = ['\t']; +for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } +} +// ',' = \x44 +exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); +exports.MAJOR = exports.NUM_MAP; +exports.MINOR = exports.MAJOR; +var HEADER_STATE; +(function (HEADER_STATE) { + HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; +})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); +exports.SPECIAL_HEADERS = { + 'connection': HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + 'upgrade': HEADER_STATE.UPGRADE, +}; +//# sourceMappingURL=constants.js.map - index++ - } +/***/ }), - if (!found) { - return - } +/***/ 3870: +/***/ ((module) => { - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=' - // Remove the initial and final space (or line feed), iff they exist and there - // are non-space characters in the content. - index = openingFenceEnd - length = closingFenceStart - code = value.charCodeAt(index) - next = value.charCodeAt(length - 1) - found = false - if ( - length - index > 2 && - (code === space || code === lineFeed) && - (next === space || next === lineFeed) - ) { - index++ - length-- +/***/ }), - while (index < length) { - code = value.charCodeAt(index) +/***/ 3434: +/***/ ((module) => { - if (code !== space && code !== lineFeed) { - found = true - break - } +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==' - index++ - } - if (found === true) { - openingFenceEnd++ - closingFenceStart-- - } - } +/***/ }), - return eat(value.slice(0, closingFenceEnd))({ - type: 'inlineCode', - value: value.slice(openingFenceEnd, closingFenceStart) - }) -} +/***/ 172: +/***/ ((__unused_webpack_module, exports) => { +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.enumToMap = void 0; +function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; +} +exports.enumToMap = enumToMap; +//# sourceMappingURL=utils.js.map /***/ }), -/***/ 9975: +/***/ 7501: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var whitespace = __nccwpck_require__(35708) -var normalize = __nccwpck_require__(98851) - -module.exports = definition - -var quotationMark = '"' -var apostrophe = "'" -var backslash = '\\' -var lineFeed = '\n' -var tab = '\t' -var space = ' ' -var leftSquareBracket = '[' -var rightSquareBracket = ']' -var leftParenthesis = '(' -var rightParenthesis = ')' -var colon = ':' -var lessThan = '<' -var greaterThan = '>' - -function definition(eat, value, silent) { - var self = this - var commonmark = self.options.commonmark - var index = 0 - var length = value.length - var subvalue = '' - var beforeURL - var beforeTitle - var queue - var character - var test - var identifier - var url - var title - - while (index < length) { - character = value.charAt(index) - - if (character !== space && character !== tab) { - break - } +const { kClients } = __nccwpck_require__(6443) +const Agent = __nccwpck_require__(9965) +const { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory +} = __nccwpck_require__(1117) +const MockClient = __nccwpck_require__(7365) +const MockPool = __nccwpck_require__(4004) +const { matchValue, buildMockOptions } = __nccwpck_require__(3397) +const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8707) +const Dispatcher = __nccwpck_require__(992) +const Pluralizer = __nccwpck_require__(1529) +const PendingInterceptorsFormatter = __nccwpck_require__(6142) - subvalue += character - index++ +class FakeWeakRef { + constructor (value) { + this.value = value } - character = value.charAt(index) - - if (character !== leftSquareBracket) { - return + deref () { + return this.value } +} - index++ - subvalue += character - queue = '' +class MockAgent extends Dispatcher { + constructor (opts) { + super(opts) - while (index < length) { - character = value.charAt(index) + this[kNetConnect] = true + this[kIsMockActive] = true - if (character === rightSquareBracket) { - break - } else if (character === backslash) { - queue += character - index++ - character = value.charAt(index) + // Instantiate Agent and encapsulate + if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') } + const agent = opts && opts.agent ? opts.agent : new Agent(opts) + this[kAgent] = agent - queue += character - index++ - } - - if ( - !queue || - value.charAt(index) !== rightSquareBracket || - value.charAt(index + 1) !== colon - ) { - return + this[kClients] = agent[kClients] + this[kOptions] = buildMockOptions(opts) } - identifier = queue - subvalue += queue + rightSquareBracket + colon - index = subvalue.length - queue = '' + get (origin) { + let dispatcher = this[kMockAgentGet](origin) - while (index < length) { - character = value.charAt(index) - - if (character !== tab && character !== space && character !== lineFeed) { - break + if (!dispatcher) { + dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) } - - subvalue += character - index++ + return dispatcher } - character = value.charAt(index) - queue = '' - beforeURL = subvalue - - if (character === lessThan) { - index++ - - while (index < length) { - character = value.charAt(index) - - if (!isEnclosedURLCharacter(character)) { - break - } - - queue += character - index++ - } - - character = value.charAt(index) - - if (character === isEnclosedURLCharacter.delimiter) { - subvalue += lessThan + queue + character - index++ - } else { - if (commonmark) { - return - } - - index -= queue.length + 1 - queue = '' - } + dispatch (opts, handler) { + // Call MockAgent.get to perform additional setup before dispatching as normal + this.get(opts.origin) + return this[kAgent].dispatch(opts, handler) } - if (!queue) { - while (index < length) { - character = value.charAt(index) - - if (!isUnclosedURLCharacter(character)) { - break - } - - queue += character - index++ - } - - subvalue += queue + async close () { + await this[kAgent].close() + this[kClients].clear() } - if (!queue) { - return + deactivate () { + this[kIsMockActive] = false } - url = queue - queue = '' - - while (index < length) { - character = value.charAt(index) + activate () { + this[kIsMockActive] = true + } - if (character !== tab && character !== space && character !== lineFeed) { - break + enableNetConnect (matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher) + } else { + this[kNetConnect] = [matcher] + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') } - - queue += character - index++ } - character = value.charAt(index) - test = null - - if (character === quotationMark) { - test = quotationMark - } else if (character === apostrophe) { - test = apostrophe - } else if (character === leftParenthesis) { - test = rightParenthesis + disableNetConnect () { + this[kNetConnect] = false } - if (!test) { - queue = '' - index = subvalue.length - } else if (queue) { - subvalue += queue + character - index = subvalue.length - queue = '' - - while (index < length) { - character = value.charAt(index) - - if (character === test) { - break - } - - if (character === lineFeed) { - index++ - character = value.charAt(index) + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive () { + return this[kIsMockActive] + } - if (character === lineFeed || character === test) { - return - } + [kMockAgentSet] (origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)) + } - queue += lineFeed - } + [kFactory] (origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]) + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions) + } - queue += character - index++ + [kMockAgentGet] (origin) { + // First check if we can immediately find it + const ref = this[kClients].get(origin) + if (ref) { + return ref.deref() } - character = value.charAt(index) - - if (character !== test) { - return + // If the origin is not a string create a dummy parent pool and return to user + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999') + this[kMockAgentSet](origin, dispatcher) + return dispatcher } - beforeTitle = subvalue - subvalue += queue + character - index++ - title = queue - queue = '' - } else { - return + // If we match, create a pool and assign the same dispatches + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref() + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] + return dispatcher + } + } } - while (index < length) { - character = value.charAt(index) + [kGetNetConnect] () { + return this[kNetConnect] + } - if (character !== tab && character !== space) { - break - } + pendingInterceptors () { + const mockAgentClients = this[kClients] - subvalue += character - index++ + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending) } - character = value.charAt(index) + assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors() - if (!character || character === lineFeed) { - if (silent) { - return true + if (pending.length === 0) { + return } - beforeURL = eat(beforeURL).test().end - url = self.decode.raw(self.unescape(url), beforeURL, {nonTerminated: false}) + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) - if (title) { - beforeTitle = eat(beforeTitle).test().end - title = self.decode.raw(self.unescape(title), beforeTitle) - } + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: - return eat(subvalue)({ - type: 'definition', - identifier: normalize(identifier), - label: identifier, - title: title || null, - url: url - }) +${pendingInterceptorsFormatter.format(pending)} +`.trim()) } } -// Check if `character` can be inside an enclosed URI. -function isEnclosedURLCharacter(character) { - return ( - character !== greaterThan && - character !== leftSquareBracket && - character !== rightSquareBracket - ) -} - -isEnclosedURLCharacter.delimiter = greaterThan - -// Check if `character` can be inside an unclosed URI. -function isUnclosedURLCharacter(character) { - return ( - character !== leftSquareBracket && - character !== rightSquareBracket && - !whitespace(character) - ) -} +module.exports = MockAgent /***/ }), -/***/ 24332: +/***/ 7365: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var whitespace = __nccwpck_require__(35708) -var locate = __nccwpck_require__(90639) +const { promisify } = __nccwpck_require__(9023) +const Client = __nccwpck_require__(6197) +const { buildMockDispatch } = __nccwpck_require__(3397) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(1117) +const { MockInterceptor } = __nccwpck_require__(1511) +const Symbols = __nccwpck_require__(6443) +const { InvalidArgumentError } = __nccwpck_require__(8707) -module.exports = strikethrough -strikethrough.locator = locate +/** + * MockClient provides an API that extends the Client to influence the mockDispatches. + */ +class MockClient extends Client { + constructor (origin, opts) { + super(origin, opts) -var tilde = '~' -var fence = '~~' + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } -function strikethrough(eat, value, silent) { - var self = this - var character = '' - var previous = '' - var preceding = '' - var subvalue = '' - var index - var length - var now + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) - if ( - !self.options.gfm || - value.charAt(0) !== tilde || - value.charAt(1) !== tilde || - whitespace(value.charAt(2)) - ) { - return + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] } - index = 1 - length = value.length - now = eat.now() - now.column += 2 - now.offset += 2 - - while (++index < length) { - character = value.charAt(index) - - if ( - character === tilde && - previous === tilde && - (!preceding || !whitespace(preceding)) - ) { - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } + get [Symbols.kConnected] () { + return this[kConnected] + } - return eat(fence + subvalue + fence)({ - type: 'delete', - children: self.tokenizeInline(subvalue, now) - }) - } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } - subvalue += previous - preceding = previous - previous = character + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) } } +module.exports = MockClient + /***/ }), -/***/ 18337: +/***/ 2429: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var decode = __nccwpck_require__(81085) -var decimal = __nccwpck_require__(76995) -var alphabetical = __nccwpck_require__(84989) -var locate = __nccwpck_require__(16365) - -module.exports = email -email.locator = locate -email.notInLink = true - -var plusSign = 43 // '+' -var dash = 45 // '-' -var dot = 46 // '.' -var atSign = 64 // '@' -var underscore = 95 // '_' - -function email(eat, value, silent) { - var self = this - var gfm = self.options.gfm - var tokenizers = self.inlineTokenizers - var index = 0 - var length = value.length - var firstDot = -1 - var code - var content - var children - var exit - - if (!gfm) { - return - } +const { UndiciError } = __nccwpck_require__(8707) - code = value.charCodeAt(index) - - while ( - decimal(code) || - alphabetical(code) || - code === plusSign || - code === dash || - code === dot || - code === underscore - ) { - code = value.charCodeAt(++index) +class MockNotMatchedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, MockNotMatchedError) + this.name = 'MockNotMatchedError' + this.message = message || 'The request does not match any registered mock dispatches' + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED' } +} - if (index === 0) { - return - } +module.exports = { + MockNotMatchedError +} - if (code !== atSign) { - return - } - index++ +/***/ }), - while (index < length) { - code = value.charCodeAt(index) +/***/ 1511: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if ( - decimal(code) || - alphabetical(code) || - code === dash || - code === dot || - code === underscore - ) { - index++ +"use strict"; - if (firstDot === -1 && code === dot) { - firstDot = index - } - continue - } +const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(3397) +const { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch +} = __nccwpck_require__(1117) +const { InvalidArgumentError } = __nccwpck_require__(8707) +const { buildURL } = __nccwpck_require__(3440) - break +/** + * Defines the scope API for an interceptor reply + */ +class MockScope { + constructor (mockDispatch) { + this[kMockDispatch] = mockDispatch } - if ( - firstDot === -1 || - firstDot === index || - code === dash || - code === underscore - ) { - return - } + /** + * Delay a reply by a set amount in ms. + */ + delay (waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0') + } - if (code === dot) { - index-- + this[kMockDispatch].delay = waitInMs + return this } - content = value.slice(0, index) - - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true + /** + * For a defined reply, never mark as consumed. + */ + persist () { + this[kMockDispatch].persist = true + return this } - exit = self.enterLink() - - // Temporarily remove all tokenizers except text in url. - self.inlineTokenizers = {text: tokenizers.text} - children = self.tokenizeInline(content, eat.now()) - self.inlineTokenizers = tokenizers - - exit() + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times (repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') + } - return eat(content)({ - type: 'link', - title: null, - url: 'mailto:' + decode(content, {nonTerminated: false}), - children: children - }) + this[kMockDispatch].times = repeatTimes + return this + } } +/** + * Defines an interceptor for a Mock + */ +class MockInterceptor { + constructor (opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object') + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined') + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET' + } + // See https://github.com/nodejs/undici/issues/1245 + // As per RFC 3986, clients are not supposed to send URI + // fragments to servers when they retrieve a document, + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query) + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 + const parsedURL = new URL(opts.path, 'data://') + opts.path = parsedURL.pathname + parsedURL.search + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase() + } -/***/ }), - -/***/ 8653: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var trim = __nccwpck_require__(82315) -var word = __nccwpck_require__(59685) -var whitespace = __nccwpck_require__(35708) -var locate = __nccwpck_require__(77896) - -module.exports = emphasis -emphasis.locator = locate - -var asterisk = '*' -var underscore = '_' -var backslash = '\\' - -function emphasis(eat, value, silent) { - var self = this - var index = 0 - var character = value.charAt(index) - var now - var pedantic - var marker - var queue - var subvalue - var length - var previous - - if (character !== asterisk && character !== underscore) { - return + this[kDispatchKey] = buildKey(opts) + this[kDispatches] = mockDispatches + this[kDefaultHeaders] = {} + this[kDefaultTrailers] = {} + this[kContentLength] = false } - pedantic = self.options.pedantic - subvalue = character - marker = character - length = value.length - index++ - queue = '' - character = '' + createMockScopeDispatchData (statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data) + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {} + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers } + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers } - if (pedantic && whitespace(value.charAt(index))) { - return + return { statusCode, data, headers, trailers } } - while (index < length) { - previous = character - character = value.charAt(index) + validateReplyParameters (statusCode, data, responseOptions) { + if (typeof statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined') + } + if (typeof data === 'undefined') { + throw new InvalidArgumentError('data must be defined') + } + if (typeof responseOptions !== 'object') { + throw new InvalidArgumentError('responseOptions must be an object') + } + } - if (character === marker && (!pedantic || !whitespace(previous))) { - character = value.charAt(++index) + /** + * Mock an undici request with a defined reply. + */ + reply (replyData) { + // Values of reply aren't available right now as they + // can only be available when the reply callback is invoked. + if (typeof replyData === 'function') { + // We'll first wrap the provided callback in another function, + // this function will properly resolve the data from the callback + // when invoked. + const wrappedDefaultsCallback = (opts) => { + // Our reply options callback contains the parameter for statusCode, data and options. + const resolvedData = replyData(opts) - if (character !== marker) { - if (!trim(queue) || previous === marker) { - return + // Check if it is in the right format + if (typeof resolvedData !== 'object') { + throw new InvalidArgumentError('reply options callback must return an object') } - if (!pedantic && marker === underscore && word(character)) { - queue += marker - continue + const { statusCode, data = '', responseOptions = {} } = resolvedData + this.validateReplyParameters(statusCode, data, responseOptions) + // Since the values can be obtained immediately we return them + // from this higher order function that will be resolved later. + return { + ...this.createMockScopeDispatchData(statusCode, data, responseOptions) } + } - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } + // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback) + return new MockScope(newMockDispatch) + } - now = eat.now() - now.column++ - now.offset++ + // We can have either one or three parameters, if we get here, + // we should have 1-3 parameters. So we spread the arguments of + // this function to obtain the parameters, since replyData will always + // just be the statusCode. + const [statusCode, data = '', responseOptions = {}] = [...arguments] + this.validateReplyParameters(statusCode, data, responseOptions) - return eat(subvalue + queue + marker)({ - type: 'emphasis', - children: self.tokenizeInline(queue, now) - }) - } + // Send in-already provided data like usual + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions) + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData) + return new MockScope(newMockDispatch) + } + + /** + * Mock an undici request with a defined error. + */ + replyWithError (error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined') + } + + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }) + return new MockScope(newMockDispatch) + } - queue += marker + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders (headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined') } - if (!pedantic && character === backslash) { - queue += character - character = value.charAt(++index) + this[kDefaultHeaders] = headers + return this + } + + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers (trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined') } - queue += character - index++ + this[kDefaultTrailers] = trailers + return this + } + + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength () { + this[kContentLength] = true + return this } } +module.exports.MockInterceptor = MockInterceptor +module.exports.MockScope = MockScope + /***/ }), -/***/ 96312: +/***/ 4004: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var locate = __nccwpck_require__(21210) +const { promisify } = __nccwpck_require__(9023) +const Pool = __nccwpck_require__(5076) +const { buildMockDispatch } = __nccwpck_require__(3397) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(1117) +const { MockInterceptor } = __nccwpck_require__(1511) +const Symbols = __nccwpck_require__(6443) +const { InvalidArgumentError } = __nccwpck_require__(8707) -module.exports = escape -escape.locator = locate +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +class MockPool extends Pool { + constructor (origin, opts) { + super(origin, opts) -var lineFeed = '\n' -var backslash = '\\' + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } -function escape(eat, value, silent) { - var self = this - var character - var node + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) - if (value.charAt(0) === backslash) { - character = value.charAt(1) + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } - if (self.escape.indexOf(character) !== -1) { - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } + get [Symbols.kConnected] () { + return this[kConnected] + } - if (character === lineFeed) { - node = {type: 'break'} - } else { - node = {type: 'text', value: character} - } + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } - return eat(backslash + character)(node) - } + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) } } +module.exports = MockPool + /***/ }), -/***/ 39769: +/***/ 1117: /***/ ((module) => { "use strict"; -module.exports = atxHeading - -var lineFeed = '\n' -var tab = '\t' -var space = ' ' -var numberSign = '#' - -var maxFenceCount = 6 - -function atxHeading(eat, value, silent) { - var self = this - var pedantic = self.options.pedantic - var length = value.length + 1 - var index = -1 - var now = eat.now() - var subvalue = '' - var content = '' - var character - var queue - var depth +module.exports = { + kAgent: Symbol('agent'), + kOptions: Symbol('options'), + kFactory: Symbol('factory'), + kDispatches: Symbol('dispatches'), + kDispatchKey: Symbol('dispatch key'), + kDefaultHeaders: Symbol('default headers'), + kDefaultTrailers: Symbol('default trailers'), + kContentLength: Symbol('content length'), + kMockAgent: Symbol('mock agent'), + kMockAgentSet: Symbol('mock agent set'), + kMockAgentGet: Symbol('mock agent get'), + kMockDispatch: Symbol('mock dispatch'), + kClose: Symbol('close'), + kOriginalClose: Symbol('original agent close'), + kOrigin: Symbol('origin'), + kIsMockActive: Symbol('is mock active'), + kNetConnect: Symbol('net connect'), + kGetNetConnect: Symbol('get net connect'), + kConnected: Symbol('connected') +} + + +/***/ }), + +/***/ 3397: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Eat initial spacing. - while (++index < length) { - character = value.charAt(index) +"use strict"; - if (character !== space && character !== tab) { - index-- - break - } - subvalue += character +const { MockNotMatchedError } = __nccwpck_require__(2429) +const { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect +} = __nccwpck_require__(1117) +const { buildURL, nop } = __nccwpck_require__(3440) +const { STATUS_CODES } = __nccwpck_require__(8611) +const { + types: { + isPromise } +} = __nccwpck_require__(9023) - // Eat hashes. - depth = 0 - - while (++index <= length) { - character = value.charAt(index) - - if (character !== numberSign) { - index-- - break - } - - subvalue += character - depth++ +function matchValue (match, value) { + if (typeof match === 'string') { + return match === value } - - if (depth > maxFenceCount) { - return + if (match instanceof RegExp) { + return match.test(value) } - - if (!depth || (!pedantic && value.charAt(index + 1) === numberSign)) { - return + if (typeof match === 'function') { + return match(value) === true } + return false +} - length = value.length + 1 - - // Eat intermediate white-space. - queue = '' - - while (++index < length) { - character = value.charAt(index) +function lowerCaseEntries (headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue] + }) + ) +} - if (character !== space && character !== tab) { - index-- - break +/** + * @param {import('../../index').Headers|string[]|Record<string, string>} headers + * @param {string} key + */ +function getHeaderByName (headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1] + } } - queue += character + return undefined + } else if (typeof headers.get === 'function') { + return headers.get(key) + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()] } +} - // Exit when not in pedantic mode without spacing. - if (!pedantic && queue.length === 0 && character && character !== lineFeed) { - return +/** @param {string[]} headers */ +function buildHeadersFromArray (headers) { // fetch HeadersList + const clone = headers.slice() + const entries = [] + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]) } + return Object.fromEntries(entries) +} - if (silent) { +function matchHeaders (mockDispatch, headers) { + if (typeof mockDispatch.headers === 'function') { + if (Array.isArray(headers)) { // fetch HeadersList + headers = buildHeadersFromArray(headers) + } + return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) + } + if (typeof mockDispatch.headers === 'undefined') { return true } + if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { + return false + } - // Eat content. - subvalue += queue - queue = '' - content = '' - - while (++index < length) { - character = value.charAt(index) + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName) - if (!character || character === lineFeed) { - break + if (!matchValue(matchHeaderValue, headerValue)) { + return false } + } + return true +} - if (character !== space && character !== tab && character !== numberSign) { - content += queue + character - queue = '' - continue - } +function safeUrl (path) { + if (typeof path !== 'string') { + return path + } - while (character === space || character === tab) { - queue += character - character = value.charAt(++index) - } + const pathSegments = path.split('?') - // `#` without a queue is part of the content. - if (!pedantic && content && !queue && character === numberSign) { - content += character - continue - } + if (pathSegments.length !== 2) { + return path + } - while (character === numberSign) { - queue += character - character = value.charAt(++index) - } + const qp = new URLSearchParams(pathSegments.pop()) + qp.sort() + return [...pathSegments, qp.toString()].join('?') +} - while (character === space || character === tab) { - queue += character - character = value.charAt(++index) - } +function matchKey (mockDispatch, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch.path, path) + const methodMatch = matchValue(mockDispatch.method, method) + const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true + const headersMatch = matchHeaders(mockDispatch, headers) + return pathMatch && methodMatch && bodyMatch && headersMatch +} - index-- +function getResponseData (data) { + if (Buffer.isBuffer(data)) { + return data + } else if (typeof data === 'object') { + return JSON.stringify(data) + } else { + return data.toString() } +} - now.column += subvalue.length - now.offset += subvalue.length - subvalue += content + queue +function getMockDispatch (mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath - return eat(subvalue)({ - type: 'heading', - depth: depth, - children: self.tokenizeInline(content, now) - }) -} + // Match path + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) + } + // Match method + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`) + } -/***/ }), + // Match body + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`) + } -/***/ 46373: -/***/ ((module) => { + // Match headers + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`) + } -"use strict"; + return matchedMockDispatches[0] +} +function addMockDispatch (mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } + const replyData = typeof data === 'function' ? { callback: data } : { ...data } + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } + mockDispatches.push(newMockDispatch) + return newMockDispatch +} -module.exports = setextHeading +function deleteMockDispatch (mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false + } + return matchKey(dispatch, key) + }) + if (index !== -1) { + mockDispatches.splice(index, 1) + } +} -var lineFeed = '\n' -var tab = '\t' -var space = ' ' -var equalsTo = '=' -var dash = '-' +function buildKey (opts) { + const { path, method, body, headers, query } = opts + return { + path, + method, + body, + headers, + query + } +} -var maxIndent = 3 +function generateKeyValues (data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []) +} -var equalsToDepth = 1 -var dashDepth = 2 +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText (statusCode) { + return STATUS_CODES[statusCode] || 'unknown' +} -function setextHeading(eat, value, silent) { - var self = this - var now = eat.now() - var length = value.length - var index = -1 - var subvalue = '' - var content - var queue - var character - var marker - var depth +async function getResponse (body) { + const buffers = [] + for await (const data of body) { + buffers.push(data) + } + return Buffer.concat(buffers).toString('utf8') +} - // Eat initial indentation. - while (++index < length) { - character = value.charAt(index) +/** + * Mock dispatch function used to simulate undici dispatches + */ +function mockDispatch (opts, handler) { + // Get mock dispatch from built key + const key = buildKey(opts) + const mockDispatch = getMockDispatch(this[kDispatches], key) - if (character !== space || index >= maxIndent) { - index-- - break - } + mockDispatch.timesInvoked++ - subvalue += character + // Here's where we resolve a callback if a callback is present for the dispatch data. + if (mockDispatch.data.callback) { + mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } } - // Eat content. - content = '' - queue = '' + // Parse mockDispatch data + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch + const { timesInvoked, times } = mockDispatch - while (++index < length) { - character = value.charAt(index) - - if (character === lineFeed) { - index-- - break - } + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times + mockDispatch.pending = timesInvoked < times - if (character === space || character === tab) { - queue += character - } else { - content += queue + character - queue = '' - } + // If specified, trigger dispatch error + if (error !== null) { + deleteMockDispatch(this[kDispatches], key) + handler.onError(error) + return true } - now.column += subvalue.length - now.offset += subvalue.length - subvalue += content + queue + // Handle the request with a delay if necessary + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]) + }, delay) + } else { + handleReply(this[kDispatches]) + } + + function handleReply (mockDispatches, _data = data) { + // fetch's HeadersList is a 1D string array + const optsHeaders = Array.isArray(opts.headers) + ? buildHeadersFromArray(opts.headers) + : opts.headers + const body = typeof _data === 'function' + ? _data({ ...opts, headers: optsHeaders }) + : _data + + // util.types.isPromise is likely needed for jest. + if (isPromise(body)) { + // If handleReply is asynchronous, throwing an error + // in the callback will reject the promise, rather than + // synchronously throw the error, which breaks some tests. + // Rather, we wait for the callback to resolve if it is a + // promise, and then re-run handleReply with the new body. + body.then((newData) => handleReply(mockDispatches, newData)) + return + } - // Ensure the content is followed by a newline and a valid marker. - character = value.charAt(++index) - marker = value.charAt(++index) + const responseData = getResponseData(body) + const responseHeaders = generateKeyValues(headers) + const responseTrailers = generateKeyValues(trailers) - if (character !== lineFeed || (marker !== equalsTo && marker !== dash)) { - return + handler.abort = nop + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)) + handler.onData(Buffer.from(responseData)) + handler.onComplete(responseTrailers) + deleteMockDispatch(mockDispatches, key) } - subvalue += character + function resume () {} - // Eat Setext-line. - queue = marker - depth = marker === equalsTo ? equalsToDepth : dashDepth + return true +} - while (++index < length) { - character = value.charAt(index) +function buildMockDispatch () { + const agent = this[kMockAgent] + const origin = this[kOrigin] + const originalDispatch = this[kOriginalDispatch] - if (character !== marker) { - if (character !== lineFeed) { - return + return function dispatch (opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler) + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect]() + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler) + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) + } + } else { + throw error + } } - - index-- - break + } else { + originalDispatch.call(this, opts, handler) } - - queue += character } +} - if (silent) { +function checkNetConnect (netConnect, origin) { + const url = new URL(origin) + if (netConnect === true) { + return true + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { return true } + return false +} - return eat(subvalue + queue)({ - type: 'heading', - depth: depth, - children: self.tokenizeInline(content, now) - }) +function buildMockOptions (opts) { + if (opts) { + const { agent, ...mockOptions } = opts + return mockOptions + } +} + +module.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName } /***/ }), -/***/ 94728: +/***/ 6142: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var openCloseTag = (__nccwpck_require__(29631)/* .openCloseTag */ .g) - -module.exports = blockHtml - -var tab = '\t' -var space = ' ' -var lineFeed = '\n' -var lessThan = '<' - -var rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i -var rawCloseExpression = /<\/(script|pre|style)>/i -var commentOpenExpression = /^<!--/ -var commentCloseExpression = /-->/ -var instructionOpenExpression = /^<\?/ -var instructionCloseExpression = /\?>/ -var directiveOpenExpression = /^<![A-Za-z]/ -var directiveCloseExpression = />/ -var cdataOpenExpression = /^<!\[CDATA\[/ -var cdataCloseExpression = /]]>/ -var elementCloseExpression = /^$/ -var otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$') - -function blockHtml(eat, value, silent) { - var self = this - var blocks = self.options.blocks.join('|') - var elementOpenExpression = new RegExp( - '^</?(' + blocks + ')(?=(\\s|/?>|$))', - 'i' - ) - var length = value.length - var index = 0 - var next - var line - var offset - var character - var count - var sequence - var subvalue - - var sequences = [ - [rawOpenExpression, rawCloseExpression, true], - [commentOpenExpression, commentCloseExpression, true], - [instructionOpenExpression, instructionCloseExpression, true], - [directiveOpenExpression, directiveCloseExpression, true], - [cdataOpenExpression, cdataCloseExpression, true], - [elementOpenExpression, elementCloseExpression, true], - [otherElementOpenExpression, elementCloseExpression, false] - ] - - // Eat initial spacing. - while (index < length) { - character = value.charAt(index) - - if (character !== tab && character !== space) { - break - } +const { Transform } = __nccwpck_require__(2203) +const { Console } = __nccwpck_require__(4236) - index++ - } +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = class PendingInterceptorsFormatter { + constructor ({ disableColors } = {}) { + this.transform = new Transform({ + transform (chunk, _enc, cb) { + cb(null, chunk) + } + }) - if (value.charAt(index) !== lessThan) { - return + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }) } - next = value.indexOf(lineFeed, index + 1) - next = next === -1 ? length : next - line = value.slice(index, next) - offset = -1 - count = sequences.length + format (pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '✅' : '❌', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + })) - while (++offset < count) { - if (sequences[offset][0].test(line)) { - sequence = sequences[offset] - break - } + this.logger.table(withPrettyHeaders) + return this.transform.read().toString() } +} - if (!sequence) { - return - } - if (silent) { - return sequence[2] - } +/***/ }), - index = next +/***/ 1529: +/***/ ((module) => { - if (!sequence[1].test(line)) { - while (index < length) { - next = value.indexOf(lineFeed, index + 1) - next = next === -1 ? length : next - line = value.slice(index + 1, next) +"use strict"; - if (sequence[1].test(line)) { - if (line) { - index = next - } - break - } +const singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' +} - index = next - } - } +const plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' +} - subvalue = value.slice(0, index) +module.exports = class Pluralizer { + constructor (singular, plural) { + this.singular = singular + this.plural = plural + } - return eat(subvalue)({type: 'html', value: subvalue}) + pluralize (count) { + const one = count === 1 + const keys = one ? singulars : plurals + const noun = one ? this.singular : this.plural + return { ...keys, count, noun } + } } /***/ }), -/***/ 42764: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 4869: +/***/ ((module) => { "use strict"; +/* eslint-disable */ -var alphabetical = __nccwpck_require__(84989) -var locate = __nccwpck_require__(70471) -var tag = (__nccwpck_require__(29631)/* .tag */ ._) - -module.exports = inlineHTML -inlineHTML.locator = locate -var lessThan = '<' -var questionMark = '?' -var exclamationMark = '!' -var slash = '/' +// Extracted from node/lib/internal/fixed_queue.js -var htmlLinkOpenExpression = /^<a /i -var htmlLinkCloseExpression = /^<\/a>/i +// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. +const kSize = 2048; +const kMask = kSize - 1; -function inlineHTML(eat, value, silent) { - var self = this - var length = value.length - var character - var subvalue +// The FixedQueue is implemented as a singly-linked list of fixed-size +// circular buffers. It looks something like this: +// +// head tail +// | | +// v v +// +-----------+ <-----\ +-----------+ <------\ +-----------+ +// | [null] | \----- | next | \------- | next | +// +-----------+ +-----------+ +-----------+ +// | item | <-- bottom | item | <-- bottom | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | bottom --> | item | +// | item | | item | | item | +// | ... | | ... | | ... | +// | item | | item | | item | +// | item | | item | | item | +// | [empty] | <-- top | item | | item | +// | [empty] | | item | | item | +// | [empty] | | [empty] | <-- top top --> | [empty] | +// +-----------+ +-----------+ +-----------+ +// +// Or, if there is only one circular buffer, it looks something +// like either of these: +// +// head tail head tail +// | | | | +// v v v v +// +-----------+ +-----------+ +// | [null] | | [null] | +// +-----------+ +-----------+ +// | [empty] | | item | +// | [empty] | | item | +// | item | <-- bottom top --> | [empty] | +// | item | | [empty] | +// | [empty] | <-- top bottom --> | item | +// | [empty] | | item | +// +-----------+ +-----------+ +// +// Adding a value means moving `top` forward by one, removing means +// moving `bottom` forward by one. After reaching the end, the queue +// wraps around. +// +// When `top === bottom` the current queue is empty and when +// `top + 1 === bottom` it's full. This wastes a single space of storage +// but allows much quicker checks. - if (value.charAt(0) !== lessThan || length < 3) { - return +class FixedCircularBuffer { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; } - character = value.charAt(1) + isEmpty() { + return this.top === this.bottom; + } - if ( - !alphabetical(character) && - character !== questionMark && - character !== exclamationMark && - character !== slash - ) { - return + isFull() { + return ((this.top + 1) & kMask) === this.bottom; } - subvalue = value.match(tag) + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } - if (!subvalue) { - return + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === undefined) + return null; + this.list[this.bottom] = undefined; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; } +} - /* istanbul ignore if - not used yet. */ - if (silent) { - return true +module.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); } - subvalue = subvalue[0] + isEmpty() { + return this.head.isEmpty(); + } - if (!self.inLink && htmlLinkOpenExpression.test(subvalue)) { - self.inLink = true - } else if (self.inLink && htmlLinkCloseExpression.test(subvalue)) { - self.inLink = false + push(data) { + if (this.head.isFull()) { + // Head is full: Creates a new queue, sets the old queue's `.next` to it, + // and sets it as the new main queue. + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); } - return eat(subvalue)({type: 'html', value: subvalue}) -} + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + // If there is another queue, it forms the new tail. + this.tail = tail.next; + } + return next; + } +}; /***/ }), -/***/ 70086: +/***/ 8640: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var whitespace = __nccwpck_require__(35708) -var locate = __nccwpck_require__(49687) - -module.exports = link -link.locator = locate - -var lineFeed = '\n' -var exclamationMark = '!' -var quotationMark = '"' -var apostrophe = "'" -var leftParenthesis = '(' -var rightParenthesis = ')' -var lessThan = '<' -var greaterThan = '>' -var leftSquareBracket = '[' -var backslash = '\\' -var rightSquareBracket = ']' -var graveAccent = '`' - -function link(eat, value, silent) { - var self = this - var subvalue = '' - var index = 0 - var character = value.charAt(0) - var pedantic = self.options.pedantic - var commonmark = self.options.commonmark - var gfm = self.options.gfm - var closed - var count - var opening - var beforeURL - var beforeTitle - var subqueue - var hasMarker - var isImage - var content - var marker - var length - var title - var depth - var queue - var url - var now - var exit - var node - - // Detect whether this is an image. - if (character === exclamationMark) { - isImage = true - subvalue = character - character = value.charAt(++index) - } - - // Eat the opening. - if (character !== leftSquareBracket) { - return - } +const DispatcherBase = __nccwpck_require__(1) +const FixedQueue = __nccwpck_require__(4869) +const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(6443) +const PoolStats = __nccwpck_require__(4622) - // Exit when this is a link and we’re already inside a link. - if (!isImage && self.inLink) { - return - } +const kClients = Symbol('clients') +const kNeedDrain = Symbol('needDrain') +const kQueue = Symbol('queue') +const kClosedResolve = Symbol('closed resolve') +const kOnDrain = Symbol('onDrain') +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kGetDispatcher = Symbol('get dispatcher') +const kAddClient = Symbol('add client') +const kRemoveClient = Symbol('remove client') +const kStats = Symbol('stats') - subvalue += character - queue = '' - index++ +class PoolBase extends DispatcherBase { + constructor () { + super() - // Eat the content. - length = value.length - now = eat.now() - depth = 0 + this[kQueue] = new FixedQueue() + this[kClients] = [] + this[kQueued] = 0 - now.column += index - now.offset += index + const pool = this - while (index < length) { - character = value.charAt(index) - subqueue = character + this[kOnDrain] = function onDrain (origin, targets) { + const queue = pool[kQueue] - if (character === graveAccent) { - // Inline-code in link content. - count = 1 + let needDrain = false - while (value.charAt(index + 1) === graveAccent) { - subqueue += character - index++ - count++ - } - - if (!opening) { - opening = count - } else if (count >= opening) { - opening = 0 - } - } else if (character === backslash) { - // Allow brackets to be escaped. - index++ - subqueue += value.charAt(index) - } else if ((!opening || gfm) && character === leftSquareBracket) { - // In GFM mode, brackets in code still count. In all other modes, - // they don’t. - depth++ - } else if ((!opening || gfm) && character === rightSquareBracket) { - if (depth) { - depth-- - } else { - if (value.charAt(index + 1) !== leftParenthesis) { - return + while (!needDrain) { + const item = queue.shift() + if (!item) { + break } + pool[kQueued]-- + needDrain = !this.dispatch(item.opts, item.handler) + } - subqueue += leftParenthesis - closed = true - index++ + this[kNeedDrain] = needDrain - break + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false + pool.emit('drain', origin, [pool, ...targets]) + } + + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise + .all(pool[kClients].map(c => c.close())) + .then(pool[kClosedResolve]) } } - queue += subqueue - subqueue = '' - index++ + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err) + } + + this[kStats] = new PoolStats(this) } - // Eat the content closing. - if (!closed) { - return + get [kBusy] () { + return this[kNeedDrain] } - content = queue - subvalue += queue + subqueue - index++ + get [kConnected] () { + return this[kClients].filter(client => client[kConnected]).length + } - // Eat white-space. - while (index < length) { - character = value.charAt(index) + get [kFree] () { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length + } - if (!whitespace(character)) { - break + get [kPending] () { + let ret = this[kQueued] + for (const { [kPending]: pending } of this[kClients]) { + ret += pending } + return ret + } - subvalue += character - index++ + get [kRunning] () { + let ret = 0 + for (const { [kRunning]: running } of this[kClients]) { + ret += running + } + return ret } - // Eat the URL. - character = value.charAt(index) - queue = '' - beforeURL = subvalue + get [kSize] () { + let ret = this[kQueued] + for (const { [kSize]: size } of this[kClients]) { + ret += size + } + return ret + } - if (character === lessThan) { - index++ - beforeURL += lessThan + get stats () { + return this[kStats] + } - while (index < length) { - character = value.charAt(index) + async [kClose] () { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map(c => c.close())) + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve + }) + } + } - if (character === greaterThan) { + async [kDestroy] (err) { + while (true) { + const item = this[kQueue].shift() + if (!item) { break } + item.handler.onError(err) + } - if (commonmark && character === lineFeed) { - return - } + return Promise.all(this[kClients].map(c => c.destroy(err))) + } - queue += character - index++ - } + [kDispatch] (opts, handler) { + const dispatcher = this[kGetDispatcher]() - if (value.charAt(index) !== greaterThan) { - return + if (!dispatcher) { + this[kNeedDrain] = true + this[kQueue].push({ opts, handler }) + this[kQueued]++ + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true + this[kNeedDrain] = !this[kGetDispatcher]() } - subvalue += lessThan + queue + greaterThan - url = queue - index++ - } else { - character = null - subqueue = '' + return !this[kNeedDrain] + } - while (index < length) { - character = value.charAt(index) + [kAddClient] (client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) - if ( - subqueue && - (character === quotationMark || - character === apostrophe || - (commonmark && character === leftParenthesis)) - ) { - break - } + this[kClients].push(client) - if (whitespace(character)) { - if (!pedantic) { - break + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]) } + }) + } - subqueue += character - } else { - if (character === leftParenthesis) { - depth++ - } else if (character === rightParenthesis) { - if (depth === 0) { - break - } + return this + } - depth-- - } + [kRemoveClient] (client) { + client.close(() => { + const idx = this[kClients].indexOf(client) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + }) - queue += subqueue - subqueue = '' + this[kNeedDrain] = this[kClients].some(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + } +} - if (character === backslash) { - queue += backslash - character = value.charAt(++index) - } +module.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} - queue += character - } - index++ - } +/***/ }), - subvalue += queue - url = queue - index = subvalue.length - } +/***/ 4622: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Eat white-space. - queue = '' +const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(6443) +const kPool = Symbol('pool') - while (index < length) { - character = value.charAt(index) +class PoolStats { + constructor (pool) { + this[kPool] = pool + } - if (!whitespace(character)) { - break - } + get connected () { + return this[kPool][kConnected] + } - queue += character - index++ + get free () { + return this[kPool][kFree] } - character = value.charAt(index) - subvalue += queue + get pending () { + return this[kPool][kPending] + } - // Eat the title. - if ( - queue && - (character === quotationMark || - character === apostrophe || - (commonmark && character === leftParenthesis)) - ) { - index++ - subvalue += character - queue = '' - marker = character === leftParenthesis ? rightParenthesis : character - beforeTitle = subvalue - - // In commonmark-mode, things are pretty easy: the marker cannot occur - // inside the title. Non-commonmark does, however, support nested - // delimiters. - if (commonmark) { - while (index < length) { - character = value.charAt(index) - - if (character === marker) { - break - } + get queued () { + return this[kPool][kQueued] + } - if (character === backslash) { - queue += backslash - character = value.charAt(++index) - } + get running () { + return this[kPool][kRunning] + } - index++ - queue += character - } + get size () { + return this[kPool][kSize] + } +} - character = value.charAt(index) +module.exports = PoolStats - if (character !== marker) { - return - } - title = queue - subvalue += queue + character - index++ +/***/ }), - while (index < length) { - character = value.charAt(index) +/***/ 5076: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (!whitespace(character)) { - break - } +"use strict"; - subvalue += character - index++ - } - } else { - subqueue = '' - while (index < length) { - character = value.charAt(index) +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher +} = __nccwpck_require__(8640) +const Client = __nccwpck_require__(6197) +const { + InvalidArgumentError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { kUrl, kInterceptors } = __nccwpck_require__(6443) +const buildConnector = __nccwpck_require__(9136) + +const kOptions = Symbol('options') +const kConnections = Symbol('connections') +const kFactory = Symbol('factory') + +function defaultFactory (origin, opts) { + return new Client(origin, opts) +} + +class Pool extends PoolBase { + constructor (origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super() - if (character === marker) { - if (hasMarker) { - queue += marker + subqueue - subqueue = '' - } + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections') + } - hasMarker = true - } else if (!hasMarker) { - queue += character - } else if (character === rightParenthesis) { - subvalue += queue + marker + subqueue - title = queue - break - } else if (whitespace(character)) { - subqueue += character - } else { - queue += marker + subqueue + character - subqueue = '' - hasMarker = false - } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } - index++ - } + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') } - } - if (value.charAt(index) !== rightParenthesis) { - return - } + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) + ? options.interceptors.Pool + : [] + this[kConnections] = connections || null + this[kUrl] = util.parseOrigin(origin) + this[kOptions] = { ...util.deepClone(options), connect, allowH2 } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kFactory] = factory + + this.on('connectionError', (origin, targets, error) => { + // If a connection error occurs, we remove the client from the pool, + // and emit a connectionError event. They will not be re-used. + // Fixes https://github.com/nodejs/undici/issues/3895 + for (const target of targets) { + // Do not use kRemoveClient here, as it will close the client, + // but the client cannot be closed in this state. + const idx = this[kClients].indexOf(target) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + } + }) } - subvalue += rightParenthesis - - url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, { - nonTerminated: false - }) + [kGetDispatcher] () { + let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain]) - if (title) { - beforeTitle = eat(beforeTitle).test().end - title = self.decode.raw(self.unescape(title), beforeTitle) - } + if (dispatcher) { + return dispatcher + } - node = { - type: isImage ? 'image' : 'link', - title: title || null, - url: url - } + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]) + this[kAddClient](dispatcher) + } - if (isImage) { - node.alt = self.decode.raw(self.unescape(content), now) || null - } else { - exit = self.enterLink() - node.children = self.tokenizeInline(content, now) - exit() + return dispatcher } - - return eat(subvalue)(node) } +module.exports = Pool + /***/ }), -/***/ 39165: +/***/ 2720: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var trim = __nccwpck_require__(82315) -var repeat = __nccwpck_require__(69626) -var decimal = __nccwpck_require__(76995) -var getIndent = __nccwpck_require__(54656) -var removeIndent = __nccwpck_require__(80210) -var interrupt = __nccwpck_require__(915) - -module.exports = list - -var asterisk = '*' -var underscore = '_' -var plusSign = '+' -var dash = '-' -var dot = '.' -var space = ' ' -var lineFeed = '\n' -var tab = '\t' -var rightParenthesis = ')' -var lowercaseX = 'x' - -var tabSize = 4 -var looseListItemExpression = /\n\n(?!\s*$)/ -var taskItemExpression = /^\[([ X\tx])][ \t]/ -var bulletExpression = /^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/ -var pedanticBulletExpression = /^([ \t]*)([*+-]|\d+[.)])([ \t]+)/ -var initialIndentExpression = /^( {1,4}|\t)?/gm - -function list(eat, value, silent) { - var self = this - var commonmark = self.options.commonmark - var pedantic = self.options.pedantic - var tokenizers = self.blockTokenizers - var interuptors = self.interruptList - var index = 0 - var length = value.length - var start = null - var size - var queue - var ordered - var character - var marker - var nextIndex - var startIndex - var prefixed - var currentMarker - var content - var line - var previousEmpty - var empty - var items - var allLines - var emptyLines - var item - var enterTop - var exitBlockquote - var spread = false - var node - var now - var end - var indented - - while (index < length) { - character = value.charAt(index) - - if (character !== tab && character !== space) { - break - } +const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(6443) +const { URL } = __nccwpck_require__(7016) +const Agent = __nccwpck_require__(9965) +const Pool = __nccwpck_require__(5076) +const DispatcherBase = __nccwpck_require__(1) +const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8707) +const buildConnector = __nccwpck_require__(9136) + +const kAgent = Symbol('proxy agent') +const kClient = Symbol('proxy client') +const kProxyHeaders = Symbol('proxy headers') +const kRequestTls = Symbol('request tls settings') +const kProxyTls = Symbol('proxy tls settings') +const kConnectEndpoint = Symbol('connect endpoint function') + +function defaultProtocolPort (protocol) { + return protocol === 'https:' ? 443 : 80 +} - index++ +function buildProxyOptions (opts) { + if (typeof opts === 'string') { + opts = { uri: opts } } - character = value.charAt(index) + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } - if (character === asterisk || character === plusSign || character === dash) { - marker = character - ordered = false - } else { - ordered = true - queue = '' + return { + uri: opts.uri, + protocol: opts.protocol || 'https' + } +} - while (index < length) { - character = value.charAt(index) +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} - if (!decimal(character)) { - break - } +class ProxyAgent extends DispatcherBase { + constructor (opts) { + super(opts) + this[kProxy] = buildProxyOptions(opts) + this[kAgent] = new Agent(opts) + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) + ? opts.interceptors.ProxyAgent + : [] - queue += character - index++ + if (typeof opts === 'string') { + opts = { uri: opts } } - character = value.charAt(index) + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } - if ( - !queue || - !(character === dot || (commonmark && character === rightParenthesis)) - ) { - return + const { clientFactory = defaultFactory } = opts + + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') } - /* Slightly abusing `silent` mode, whose goal is to make interrupting - * paragraphs work. - * Well, that’s exactly what we want to do here: don’t interrupt: - * 2. here, because the “list” doesn’t start with `1`. */ - if (silent && queue !== '1') { - return + this[kRequestTls] = opts.requestTls + this[kProxyTls] = opts.proxyTls + this[kProxyHeaders] = opts.headers || {} + + const resolvedUrl = new URL(opts.uri) + const { origin, port, host, username, password } = resolvedUrl + + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token') + } else if (opts.auth) { + /* @deprecated in favour of opts.token */ + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` + } + + const connect = buildConnector({ ...opts.proxyTls }) + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) + this[kClient] = clientFactory(resolvedUrl, { connect }) + this[kAgent] = new Agent({ + ...opts, + connect: async (opts, callback) => { + let requestedHost = opts.host + if (!opts.port) { + requestedHost += `:${defaultProtocolPort(opts.protocol)}` + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts.signal, + headers: { + ...this[kProxyHeaders], + host + } + }) + if (statusCode !== 200) { + socket.on('error', () => {}).destroy() + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)) + } + if (opts.protocol !== 'https:') { + callback(null, socket) + return + } + let servername + if (this[kRequestTls]) { + servername = this[kRequestTls].servername + } else { + servername = opts.servername + } + this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) + } catch (err) { + callback(err) + } + } + }) + } + + dispatch (opts, handler) { + const { host } = new URL(opts.origin) + const headers = buildHeaders(opts.headers) + throwIfProxyAuthIsSent(headers) + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ) + } + + async [kClose] () { + await this[kAgent].close() + await this[kClient].close() + } + + async [kDestroy] () { + await this[kAgent].destroy() + await this[kClient].destroy() + } +} + +/** + * @param {string[] | Record<string, string>} headers + * @returns {Record<string, string>} + */ +function buildHeaders (headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record<string, string>} */ + const headersPair = {} + + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1] } - start = parseInt(queue, 10) - marker = character + return headersPair } - character = value.charAt(++index) + return headers +} - if ( - character !== space && - character !== tab && - (pedantic || (character !== lineFeed && character !== '')) - ) { - return +/** + * @param {Record<string, string>} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent (headers) { + const existProxyAuth = headers && Object.keys(headers) + .find((key) => key.toLowerCase() === 'proxy-authorization') + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') } +} + +module.exports = ProxyAgent + + +/***/ }), - if (silent) { - return true - } +/***/ 8804: +/***/ ((module) => { - index = 0 - items = [] - allLines = [] - emptyLines = [] +"use strict"; - while (index < length) { - nextIndex = value.indexOf(lineFeed, index) - startIndex = index - prefixed = false - indented = false - if (nextIndex === -1) { - nextIndex = length - } +let fastNow = Date.now() +let fastNowTimeout - size = 0 +const fastTimers = [] - while (index < length) { - character = value.charAt(index) +function onTimeout () { + fastNow = Date.now() - if (character === tab) { - size += tabSize - (size % tabSize) - } else if (character === space) { - size++ - } else { - break - } + let len = fastTimers.length + let idx = 0 + while (idx < len) { + const timer = fastTimers[idx] - index++ + if (timer.state === 0) { + timer.state = fastNow + timer.delay + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1 + timer.callback(timer.opaque) } - if (item && size >= item.indent) { - indented = true + if (timer.state === -1) { + timer.state = -2 + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop() + } else { + fastTimers.pop() + } + len -= 1 + } else { + idx += 1 } + } - character = value.charAt(index) - currentMarker = null - - if (!indented) { - if ( - character === asterisk || - character === plusSign || - character === dash - ) { - currentMarker = character - index++ - size++ - } else { - queue = '' + if (fastTimers.length > 0) { + refreshTimeout() + } +} - while (index < length) { - character = value.charAt(index) +function refreshTimeout () { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh() + } else { + clearTimeout(fastNowTimeout) + fastNowTimeout = setTimeout(onTimeout, 1e3) + if (fastNowTimeout.unref) { + fastNowTimeout.unref() + } + } +} - if (!decimal(character)) { - break - } +class Timeout { + constructor (callback, delay, opaque) { + this.callback = callback + this.delay = delay + this.opaque = opaque - queue += character - index++ - } + // -2 not in timer list + // -1 in timer list but inactive + // 0 in timer list waiting for time + // > 0 in timer list waiting for time to expire + this.state = -2 - character = value.charAt(index) - index++ + this.refresh() + } - if ( - queue && - (character === dot || (commonmark && character === rightParenthesis)) - ) { - currentMarker = character - size += queue.length + 1 - } + refresh () { + if (this.state === -2) { + fastTimers.push(this) + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout() } + } - if (currentMarker) { - character = value.charAt(index) + this.state = 0 + } - if (character === tab) { - size += tabSize - (size % tabSize) - index++ - } else if (character === space) { - end = index + tabSize + clear () { + this.state = -1 + } +} - while (index < end) { - if (value.charAt(index) !== space) { - break - } +module.exports = { + setTimeout (callback, delay, opaque) { + return delay < 1e3 + ? setTimeout(callback, delay, opaque) + : new Timeout(callback, delay, opaque) + }, + clearTimeout (timeout) { + if (timeout instanceof Timeout) { + timeout.clear() + } else { + clearTimeout(timeout) + } + } +} - index++ - size++ - } - if (index === end && value.charAt(index) === space) { - index -= tabSize - 1 - size -= tabSize - 1 - } - } else if (character !== lineFeed && character !== '') { - currentMarker = null - } - } - } +/***/ }), - if (currentMarker) { - if (!pedantic && marker !== currentMarker) { - break - } +/***/ 8550: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - prefixed = true - } else { - if (!commonmark && !indented && value.charAt(startIndex) === space) { - indented = true - } else if (commonmark && item) { - indented = size >= item.indent || size > tabSize - } +"use strict"; - prefixed = false - index = startIndex - } - line = value.slice(startIndex, nextIndex) - content = startIndex === index ? line : value.slice(index, nextIndex) +const diagnosticsChannel = __nccwpck_require__(1637) +const { uid, states } = __nccwpck_require__(5913) +const { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose +} = __nccwpck_require__(2933) +const { fireEvent, failWebsocketConnection } = __nccwpck_require__(3574) +const { CloseEvent } = __nccwpck_require__(6255) +const { makeRequest } = __nccwpck_require__(5194) +const { fetching } = __nccwpck_require__(2315) +const { Headers } = __nccwpck_require__(6349) +const { getGlobalDispatcher } = __nccwpck_require__(2581) +const { kHeadersList } = __nccwpck_require__(6443) + +const channels = {} +channels.open = diagnosticsChannel.channel('undici:websocket:open') +channels.close = diagnosticsChannel.channel('undici:websocket:close') +channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error') + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(6982) +} catch { - if ( - currentMarker === asterisk || - currentMarker === underscore || - currentMarker === dash - ) { - if (tokenizers.thematicBreak.call(self, eat, line, true)) { - break - } - } +} - previousEmpty = empty - empty = !prefixed && !trim(content).length +/** + * @see https://websockets.spec.whatwg.org/#concept-websocket-establish + * @param {URL} url + * @param {string|string[]} protocols + * @param {import('./websocket').WebSocket} ws + * @param {(response: any) => void} onEstablish + * @param {Partial<import('../../types/websocket').WebSocketInit>} options + */ +function establishWebSocketConnection (url, protocols, ws, onEstablish, options) { + // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s + // scheme is "ws", and to "https" otherwise. + const requestURL = url + + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:' + + // 2. Let request be a new request, whose URL is requestURL, client is client, + // service-workers mode is "none", referrer is "no-referrer", mode is + // "websocket", credentials mode is "include", cache mode is "no-store" , + // and redirect mode is "error". + const request = makeRequest({ + urlList: [requestURL], + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }) - if (indented && item) { - item.value = item.value.concat(emptyLines, line) - allLines = allLines.concat(emptyLines, line) - emptyLines = [] - } else if (prefixed) { - if (emptyLines.length !== 0) { - spread = true - item.value.push('') - item.trail = emptyLines.concat() + // Note: undici extension, allow setting custom headers. + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList] + + request.headersList = headersList + } + + // 3. Append (`Upgrade`, `websocket`) to request’s header list. + // 4. Append (`Connection`, `Upgrade`) to request’s header list. + // Note: both of these are handled by undici currently. + // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 + + // 5. Let keyValue be a nonce consisting of a randomly selected + // 16-byte value that has been forgiving-base64-encoded and + // isomorphic encoded. + const keyValue = crypto.randomBytes(16).toString('base64') + + // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s + // header list. + request.headersList.append('sec-websocket-key', keyValue) + + // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s + // header list. + request.headersList.append('sec-websocket-version', '13') + + // 8. For each protocol in protocols, combine + // (`Sec-WebSocket-Protocol`, protocol) in request’s header + // list. + for (const protocol of protocols) { + request.headersList.append('sec-websocket-protocol', protocol) + } + + // 9. Let permessageDeflate be a user-agent defined + // "permessage-deflate" extension header value. + // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 + // TODO: enable once permessage-deflate is supported + const permessageDeflate = '' // 'permessage-deflate; 15' + + // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to + // request’s header list. + // request.headersList.append('sec-websocket-extensions', permessageDeflate) + + // 11. Fetch request with useParallelQueue set to true, and + // processResponse given response being these steps: + const controller = fetching({ + request, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse (response) { + // 1. If response is a network error or its status is not 101, + // fail the WebSocket connection. + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.') + return } - item = { - value: [line], - indent: size, - trail: [] + // 2. If protocols is not the empty list and extracting header + // list values given `Sec-WebSocket-Protocol` and response’s + // header list results in null, failure, or the empty byte + // sequence, then fail the WebSocket connection. + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.') + return } - items.push(item) - allLines = allLines.concat(emptyLines, line) - emptyLines = [] - } else if (empty) { - if (previousEmpty && !commonmark) { - break - } + // 3. Follow the requirements stated step 2 to step 6, inclusive, + // of the last set of steps in section 4.1 of The WebSocket + // Protocol to validate response. This either results in fail + // the WebSocket connection or the WebSocket connection is + // established. - emptyLines.push(line) - } else { - if (previousEmpty) { - break + // 2. If the response lacks an |Upgrade| header field or the |Upgrade| + // header field contains a value that is not an ASCII case- + // insensitive match for the value "websocket", the client MUST + // _Fail the WebSocket Connection_. + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".') + return } - if (interrupt(interuptors, tokenizers, self, [eat, line, true])) { - break + // 3. If the response lacks a |Connection| header field or the + // |Connection| header field doesn't contain a token that is an + // ASCII case-insensitive match for the value "Upgrade", the client + // MUST _Fail the WebSocket Connection_. + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".') + return } - item.value = item.value.concat(emptyLines, line) - allLines = allLines.concat(emptyLines, line) - emptyLines = [] - } + // 4. If the response lacks a |Sec-WebSocket-Accept| header field or + // the |Sec-WebSocket-Accept| contains a value other than the + // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- + // Key| (as a string, not base64-decoded) with the string "258EAFA5- + // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and + // trailing whitespace, the client MUST _Fail the WebSocket + // Connection_. + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept') + const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64') + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.') + return + } - index = nextIndex + 1 - } + // 5. If the response includes a |Sec-WebSocket-Extensions| header + // field and this header field indicates the use of an extension + // that was not present in the client's handshake (the server has + // indicated an extension not requested by the client), the client + // MUST _Fail the WebSocket Connection_. (The parsing of this + // header field to determine which extensions are requested is + // discussed in Section 9.1.) + const secExtension = response.headersList.get('Sec-WebSocket-Extensions') - node = eat(allLines.join(lineFeed)).reset({ - type: 'list', - ordered: ordered, - start: start, - spread: spread, - children: [] - }) + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.') + return + } - enterTop = self.enterList() - exitBlockquote = self.enterBlock() - index = -1 - length = items.length + // 6. If the response includes a |Sec-WebSocket-Protocol| header field + // and this header field indicates the use of a subprotocol that was + // not present in the client's handshake (the server has indicated a + // subprotocol not requested by the client), the client MUST _Fail + // the WebSocket Connection_. + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol') - while (++index < length) { - item = items[index].value.join(lineFeed) - now = eat.now() + if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.') + return + } - eat(item)(listItem(self, item, now), node) + response.socket.on('data', onSocketData) + response.socket.on('close', onSocketClose) + response.socket.on('error', onSocketError) - item = items[index].trail.join(lineFeed) + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }) + } - if (index !== length - 1) { - item += lineFeed + onEstablish(response) } + }) - eat(item) - } - - enterTop() - exitBlockquote() - - return node + return controller } -function listItem(ctx, value, position) { - var offsets = ctx.offset - var fn = ctx.options.pedantic ? pedanticListItem : normalListItem - var checked = null - var task - var indent - - value = fn.apply(null, arguments) - - if (ctx.options.gfm) { - task = value.match(taskItemExpression) - - if (task) { - indent = task[0].length - checked = task[1].toLowerCase() === lowercaseX - offsets[position.line] += indent - value = value.slice(indent) - } +/** + * @param {Buffer} chunk + */ +function onSocketData (chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause() } +} - return { - type: 'listItem', - spread: looseListItemExpression.test(value), - checked: checked, - children: ctx.tokenizeBlock(value, position) +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ +function onSocketClose () { + const { ws } = this + + // If the TCP connection was closed after the + // WebSocket closing handshake was completed, the WebSocket connection + // is said to have been closed _cleanly_. + const wasClean = ws[kSentClose] && ws[kReceivedClose] + + let code = 1005 + let reason = '' + + const result = ws[kByteParser].closingInfo + + if (result) { + code = result.code ?? 1005 + reason = result.reason + } else if (!ws[kSentClose]) { + // If _The WebSocket + // Connection is Closed_ and no Close control frame was received by the + // endpoint (such as could occur if the underlying transport connection + // is lost), _The WebSocket Connection Close Code_ is considered to be + // 1006. + code = 1006 + } + + // 1. Change the ready state to CLOSED (3). + ws[kReadyState] = states.CLOSED + + // 2. If the user agent was required to fail the WebSocket + // connection, or if the WebSocket connection was closed + // after being flagged as full, fire an event named error + // at the WebSocket object. + // TODO + + // 3. Fire an event named close at the WebSocket object, + // using CloseEvent, with the wasClean attribute + // initialized to true if the connection closed cleanly + // and false otherwise, the code attribute initialized to + // the WebSocket connection close code, and the reason + // attribute initialized to the result of applying UTF-8 + // decode without BOM to the WebSocket connection close + // reason. + fireEvent('close', ws, CloseEvent, { + wasClean, code, reason + }) + + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }) } } -// Create a list-item using overly simple mechanics. -function pedanticListItem(ctx, value, position) { - var offsets = ctx.offset - var line = position.line +function onSocketError (error) { + const { ws } = this - // Remove the list-item’s bullet. - value = value.replace(pedanticBulletExpression, replacer) + ws[kReadyState] = states.CLOSING - // The initial line was also matched by the below, so we reset the `line`. - line = position.line - - return value.replace(initialIndentExpression, replacer) + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error) + } - // A simple replacer which removed all matches, and adds their length to - // `offset`. - function replacer($0) { - offsets[line] = (offsets[line] || 0) + $0.length - line++ + this.destroy() +} - return '' - } +module.exports = { + establishWebSocketConnection } -// Create a list-item using sane mechanics. -function normalListItem(ctx, value, position) { - var offsets = ctx.offset - var line = position.line - var max - var bullet - var rest - var lines - var trimmedLines - var index - var length - // Remove the list-item’s bullet. - value = value.replace(bulletExpression, replacer) +/***/ }), - lines = value.split(lineFeed) +/***/ 5913: +/***/ ((module) => { - trimmedLines = removeIndent(value, getIndent(max).indent).split(lineFeed) +"use strict"; - // We replaced the initial bullet with something else above, which was used - // to trick `removeIndentation` into removing some more characters when - // possible. However, that could result in the initial line to be stripped - // more than it should be. - trimmedLines[0] = rest - offsets[line] = (offsets[line] || 0) + bullet.length - line++ +// This is a Globally Unique Identifier unique used +// to validate that the endpoint accepts websocket +// connections. +// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 +const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' - index = 0 - length = lines.length +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} - while (++index < length) { - offsets[line] = - (offsets[line] || 0) + lines[index].length - trimmedLines[index].length - line++ - } +const states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 +} - return trimmedLines.join(lineFeed) +const opcodes = { + CONTINUATION: 0x0, + TEXT: 0x1, + BINARY: 0x2, + CLOSE: 0x8, + PING: 0x9, + PONG: 0xA +} - /* eslint-disable-next-line max-params */ - function replacer($0, $1, $2, $3, $4) { - bullet = $1 + $2 + $3 - rest = $4 +const maxUnsigned16Bit = 2 ** 16 - 1 // 65535 - // Make sure that the first nine numbered list items can indent with an - // extra space. That is, when the bullet did not receive an extra final - // space. - if (Number($2) < 10 && bullet.length % 2 === 1) { - $2 = space + $2 - } +const parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 +} - max = $1 + repeat(space, $2.length) + $3 +const emptyBuffer = Buffer.allocUnsafe(0) - return max + rest - } +module.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer } /***/ }), -/***/ 22073: +/***/ 6255: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var trim = __nccwpck_require__(82315) -var trimTrailingLines = __nccwpck_require__(54411) -var interrupt = __nccwpck_require__(915) - -module.exports = paragraph - -var tab = '\t' -var lineFeed = '\n' -var space = ' ' - -var tabSize = 4 - -// Tokenise paragraph. -function paragraph(eat, value, silent) { - var self = this - var settings = self.options - var commonmark = settings.commonmark - var tokenizers = self.blockTokenizers - var interruptors = self.interruptParagraph - var index = value.indexOf(lineFeed) - var length = value.length - var position - var subvalue - var character - var size - var now - - while (index < length) { - // Eat everything if there’s no following newline. - if (index === -1) { - index = length - break - } - - // Stop if the next character is NEWLINE. - if (value.charAt(index + 1) === lineFeed) { - break - } +const { webidl } = __nccwpck_require__(4222) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const { MessagePort } = __nccwpck_require__(8167) - // In commonmark-mode, following indented lines are part of the paragraph. - if (commonmark) { - size = 0 - position = index + 1 +/** + * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent + */ +class MessageEvent extends Event { + #eventInit - while (position < length) { - character = value.charAt(position) + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }) - if (character === tab) { - size = tabSize - break - } else if (character === space) { - size++ - } else { - break - } + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.MessageEventInit(eventInitDict) - position++ - } + super(type, eventInitDict) - if (size >= tabSize && character !== lineFeed) { - index = value.indexOf(lineFeed, index + 1) - continue - } - } + this.#eventInit = eventInitDict + } - subvalue = value.slice(index + 1) + get data () { + webidl.brandCheck(this, MessageEvent) - // Check if the following code contains a possible block. - if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) { - break - } + return this.#eventInit.data + } - position = index - index = value.indexOf(lineFeed, index + 1) + get origin () { + webidl.brandCheck(this, MessageEvent) - if (index !== -1 && trim(value.slice(position, index)) === '') { - index = position - break - } + return this.#eventInit.origin } - subvalue = value.slice(0, index) + get lastEventId () { + webidl.brandCheck(this, MessageEvent) - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true + return this.#eventInit.lastEventId } - now = eat.now() - subvalue = trimTrailingLines(subvalue) + get source () { + webidl.brandCheck(this, MessageEvent) - return eat(subvalue)({ - type: 'paragraph', - children: self.tokenizeInline(subvalue, now) - }) -} + return this.#eventInit.source + } + get ports () { + webidl.brandCheck(this, MessageEvent) -/***/ }), + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports) + } -/***/ 4648: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return this.#eventInit.ports + } -"use strict"; + initMessageEvent ( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, MessageEvent) + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }) -var whitespace = __nccwpck_require__(35708) -var locate = __nccwpck_require__(49687) -var normalize = __nccwpck_require__(98851) - -module.exports = reference -reference.locator = locate - -var link = 'link' -var image = 'image' -var shortcut = 'shortcut' -var collapsed = 'collapsed' -var full = 'full' -var exclamationMark = '!' -var leftSquareBracket = '[' -var backslash = '\\' -var rightSquareBracket = ']' - -function reference(eat, value, silent) { - var self = this - var commonmark = self.options.commonmark - var character = value.charAt(0) - var index = 0 - var length = value.length - var subvalue = '' - var intro = '' - var type = link - var referenceType = shortcut - var content - var identifier - var now - var node - var exit - var queue - var bracketed - var depth - - // Check whether we’re eating an image. - if (character === exclamationMark) { - type = image - intro = character - character = value.charAt(++index) - } - - if (character !== leftSquareBracket) { - return + return new MessageEvent(type, { + bubbles, cancelable, data, origin, lastEventId, source, ports + }) } +} - index++ - intro += character - queue = '' - - // Eat the text. - depth = 0 - - while (index < length) { - character = value.charAt(index) +/** + * @see https://websockets.spec.whatwg.org/#the-closeevent-interface + */ +class CloseEvent extends Event { + #eventInit - if (character === leftSquareBracket) { - bracketed = true - depth++ - } else if (character === rightSquareBracket) { - if (!depth) { - break - } + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }) - depth-- - } + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.CloseEventInit(eventInitDict) - if (character === backslash) { - queue += backslash - character = value.charAt(++index) - } + super(type, eventInitDict) - queue += character - index++ + this.#eventInit = eventInitDict } - subvalue = queue - content = queue - character = value.charAt(index) + get wasClean () { + webidl.brandCheck(this, CloseEvent) - if (character !== rightSquareBracket) { - return + return this.#eventInit.wasClean } - index++ - subvalue += character - queue = '' + get code () { + webidl.brandCheck(this, CloseEvent) - if (!commonmark) { - // The original markdown syntax definition explicitly allows for whitespace - // between the link text and link label; commonmark departs from this, in - // part to improve support for shortcut reference links - while (index < length) { - character = value.charAt(index) + return this.#eventInit.code + } - if (!whitespace(character)) { - break - } + get reason () { + webidl.brandCheck(this, CloseEvent) - queue += character - index++ - } + return this.#eventInit.reason } +} - character = value.charAt(index) +// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface +class ErrorEvent extends Event { + #eventInit - if (character === leftSquareBracket) { - identifier = '' - queue += character - index++ + constructor (type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }) - while (index < length) { - character = value.charAt(index) + super(type, eventInitDict) - if (character === leftSquareBracket || character === rightSquareBracket) { - break - } + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}) - if (character === backslash) { - identifier += backslash - character = value.charAt(++index) - } + this.#eventInit = eventInitDict + } - identifier += character - index++ - } + get message () { + webidl.brandCheck(this, ErrorEvent) - character = value.charAt(index) + return this.#eventInit.message + } - if (character === rightSquareBracket) { - referenceType = identifier ? full : collapsed - queue += identifier + character - index++ - } else { - identifier = '' - } + get filename () { + webidl.brandCheck(this, ErrorEvent) - subvalue += queue - queue = '' - } else { - if (!content) { - return - } + return this.#eventInit.filename + } + + get lineno () { + webidl.brandCheck(this, ErrorEvent) - identifier = content + return this.#eventInit.lineno } - // Brackets cannot be inside the identifier. - if (referenceType !== full && bracketed) { - return + get colno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.colno } - subvalue = intro + subvalue + get error () { + webidl.brandCheck(this, ErrorEvent) - if (type === link && self.inLink) { - return null + return this.#eventInit.error } +} - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true +Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty +}) + +Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty +}) + +Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty +}) + +webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort) + +webidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter( + webidl.converters.MessagePort +) + +const eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false } +] - now = eat.now() - now.column += intro.length - now.offset += intro.length - identifier = referenceType === full ? identifier : content +webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: 'ports', + converter: webidl.converters['sequence<MessagePort>'], + get defaultValue () { + return [] + } + } +]) - node = { - type: type + 'Reference', - identifier: normalize(identifier), - label: identifier, - referenceType: referenceType +webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: '' } +]) - if (type === link) { - exit = self.enterLink() - node.children = self.tokenizeInline(content, now) - exit() - } else { - node.alt = self.decode.raw(self.unescape(content), now) || null +webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'error', + converter: webidl.converters.any } +]) - return eat(subvalue)(node) +module.exports = { + MessageEvent, + CloseEvent, + ErrorEvent } /***/ }), -/***/ 82250: +/***/ 1237: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var trim = __nccwpck_require__(82315) -var whitespace = __nccwpck_require__(35708) -var locate = __nccwpck_require__(49128) - -module.exports = strong -strong.locator = locate +const { maxUnsigned16Bit } = __nccwpck_require__(5913) -var backslash = '\\' -var asterisk = '*' -var underscore = '_' +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(6982) +} catch { -function strong(eat, value, silent) { - var self = this - var index = 0 - var character = value.charAt(index) - var now - var pedantic - var marker - var queue - var subvalue - var length - var previous +} - if ( - (character !== asterisk && character !== underscore) || - value.charAt(++index) !== character - ) { - return +class WebsocketFrameSend { + /** + * @param {Buffer|undefined} data + */ + constructor (data) { + this.frameData = data + this.maskKey = crypto.randomBytes(4) } - pedantic = self.options.pedantic - marker = character - subvalue = marker + marker - length = value.length - index++ - queue = '' - character = '' + createFrame (opcode) { + const bodyLength = this.frameData?.byteLength ?? 0 - if (pedantic && whitespace(value.charAt(index))) { - return - } + /** @type {number} */ + let payloadLength = bodyLength // 0-125 + let offset = 6 - while (index < length) { - previous = character - character = value.charAt(index) + if (bodyLength > maxUnsigned16Bit) { + offset += 8 // payload length is next 8 bytes + payloadLength = 127 + } else if (bodyLength > 125) { + offset += 2 // payload length is next 2 bytes + payloadLength = 126 + } - if ( - character === marker && - value.charAt(index + 1) === marker && - (!pedantic || !whitespace(previous)) - ) { - character = value.charAt(index + 2) + const buffer = Buffer.allocUnsafe(bodyLength + offset) - if (character !== marker) { - if (!trim(queue)) { - return - } + // Clear first 2 bytes, everything else is overwritten + buffer[0] = buffer[1] = 0 + buffer[0] |= 0x80 // FIN + buffer[0] = (buffer[0] & 0xF0) + opcode // opcode - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } + /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */ + buffer[offset - 4] = this.maskKey[0] + buffer[offset - 3] = this.maskKey[1] + buffer[offset - 2] = this.maskKey[2] + buffer[offset - 1] = this.maskKey[3] - now = eat.now() - now.column += 2 - now.offset += 2 + buffer[1] = payloadLength - return eat(subvalue + queue + subvalue)({ - type: 'strong', - children: self.tokenizeInline(queue, now) - }) - } + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2) + } else if (payloadLength === 127) { + // Clear extended payload length + buffer[2] = buffer[3] = 0 + buffer.writeUIntBE(bodyLength, 4, 6) } - if (!pedantic && character === backslash) { - queue += character - character = value.charAt(++index) + buffer[1] |= 0x80 // MASK + + // mask body + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4] } - queue += character - index++ + return buffer } } +module.exports = { + WebsocketFrameSend +} + /***/ }), -/***/ 24444: +/***/ 3171: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var whitespace = __nccwpck_require__(35708) - -module.exports = table - -var tab = '\t' -var lineFeed = '\n' -var space = ' ' -var dash = '-' -var colon = ':' -var backslash = '\\' -var verticalBar = '|' - -var minColumns = 1 -var minRows = 2 - -var left = 'left' -var center = 'center' -var right = 'right' - -function table(eat, value, silent) { - var self = this - var index - var alignments - var alignment - var subvalue - var row - var length - var lines - var queue - var character - var hasDash - var align - var cell - var preamble - var now - var position - var lineCount - var line - var rows - var table - var lineIndex - var pipeIndex - var first - - // Exit when not in gfm-mode. - if (!self.options.gfm) { - return - } +const { Writable } = __nccwpck_require__(2203) +const diagnosticsChannel = __nccwpck_require__(1637) +const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(5913) +const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(2933) +const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = __nccwpck_require__(3574) +const { WebsocketFrameSend } = __nccwpck_require__(1237) - // Get the rows. - // Detecting tables soon is hard, so there are some checks for performance - // here, such as the minimum number of rows, and allowed characters in the - // alignment row. - index = 0 - lineCount = 0 - length = value.length + 1 - lines = [] +// This code was influenced by ws released under the MIT license. +// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com> +// Copyright (c) 2013 Arnout Kazemier and contributors +// Copyright (c) 2016 Luigi Pinca and contributors - while (index < length) { - lineIndex = value.indexOf(lineFeed, index) - pipeIndex = value.indexOf(verticalBar, index + 1) +const channels = {} +channels.ping = diagnosticsChannel.channel('undici:websocket:ping') +channels.pong = diagnosticsChannel.channel('undici:websocket:pong') - if (lineIndex === -1) { - lineIndex = value.length - } +class ByteParser extends Writable { + #buffers = [] + #byteOffset = 0 - if (pipeIndex === -1 || pipeIndex > lineIndex) { - if (lineCount < minRows) { - return - } + #state = parserStates.INFO - break - } + #info = {} + #fragments = [] + + constructor (ws) { + super() + + this.ws = ws + } + + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write (chunk, _, callback) { + this.#buffers.push(chunk) + this.#byteOffset += chunk.length - lines.push(value.slice(index, lineIndex)) - lineCount++ - index = lineIndex + 1 + this.run(callback) } - // Parse the alignment row. - subvalue = lines.join(lineFeed) - alignments = lines.splice(1, 1)[0] || [] - index = 0 - length = alignments.length - lineCount-- - alignment = false - align = [] + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run (callback) { + while (true) { + if (this.#state === parserStates.INFO) { + // If there aren't enough bytes to parse the payload length, etc. + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.fin = (buffer[0] & 0x80) !== 0 + this.#info.opcode = buffer[0] & 0x0F - while (index < length) { - character = alignments.charAt(index) + // If we receive a fragmented message, we use the type of the first + // frame to parse the full message as binary/text, when it's terminated + this.#info.originalOpcode ??= this.#info.opcode - if (character === verticalBar) { - hasDash = null + this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION - if (alignment === false) { - if (first === false) { + if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { + // Only text and binary frames can be fragmented + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.') return } - } else { - align.push(alignment) - alignment = false - } - - first = false - } else if (character === dash) { - hasDash = true - alignment = alignment || null - } else if (character === colon) { - if (alignment === left) { - alignment = center - } else if (hasDash && alignment === null) { - alignment = right - } else { - alignment = left - } - } else if (!whitespace(character)) { - return - } - - index++ - } - if (alignment !== false) { - align.push(alignment) - } + const payloadLength = buffer[1] & 0x7F - // Exit when without enough columns. - if (align.length < minColumns) { - return - } + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength + this.#state = parserStates.READ_DATA + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16 + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64 + } - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true - } + if (this.#info.fragmented && payloadLength > 125) { + // A fragmented frame can't be fragmented itself + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.') + return + } else if ( + (this.#info.opcode === opcodes.PING || + this.#info.opcode === opcodes.PONG || + this.#info.opcode === opcodes.CLOSE) && + payloadLength > 125 + ) { + // Control frames can have a payload length of 125 bytes MAX + failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.') + return + } else if (this.#info.opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.') + return + } - // Parse the rows. - position = -1 - rows = [] + const body = this.consume(payloadLength) - table = eat(subvalue).reset({type: 'table', align: align, children: rows}) + this.#info.closeInfo = this.parseCloseBody(false, body) - while (++position < lineCount) { - line = lines[position] - row = {type: 'tableRow', children: []} + if (!this.ws[kSentClose]) { + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) + const body = Buffer.allocUnsafe(2) + body.writeUInt16BE(this.#info.closeInfo.code, 0) + const closeFrame = new WebsocketFrameSend(body) - // Eat a newline character when this is not the first row. - if (position) { - eat(lineFeed) - } + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true + } + } + ) + } - // Eat the row. - eat(line).reset(row, table) + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this.ws[kReadyState] = states.CLOSING + this.ws[kReceivedClose] = true - length = line.length + 1 - index = 0 - queue = '' - cell = '' - preamble = true + this.end() - while (index < length) { - character = line.charAt(index) + return + } else if (this.#info.opcode === opcodes.PING) { + // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in + // response, unless it already received a Close frame. + // A Pong frame sent in response to a Ping frame must have identical + // "Application data" - if (character === tab || character === space) { - if (cell) { - queue += character - } else { - eat(character) - } + const body = this.consume(payloadLength) - index++ - continue - } + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body) - if (character === '' || character === verticalBar) { - if (preamble) { - eat(character) - } else { - if ((cell || character) && !preamble) { - subvalue = cell + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)) - if (queue.length > 1) { - if (character) { - subvalue += queue.slice(0, -1) - queue = queue.charAt(queue.length - 1) - } else { - subvalue += queue - queue = '' - } + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }) } + } - now = eat.now() + this.#state = parserStates.INFO - eat(subvalue)( - {type: 'tableCell', children: self.tokenizeInline(cell, now)}, - row - ) + if (this.#byteOffset > 0) { + continue + } else { + callback() + return } + } else if (this.#info.opcode === opcodes.PONG) { + // A Pong frame MAY be sent unsolicited. This serves as a + // unidirectional heartbeat. A response to an unsolicited Pong frame is + // not expected. + + const body = this.consume(payloadLength) - eat(queue + character) + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }) + } - queue = '' - cell = '' + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } } - } else { - if (queue) { - cell += queue - queue = '' + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback() } - cell += character + const buffer = this.consume(2) - if (character === backslash && index !== length - 2) { - cell += line.charAt(index + 1) - index++ + this.#info.payloadLength = buffer.readUInt16BE(0) + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback() } - } - preamble = false - index++ - } + const buffer = this.consume(8) + const upper = buffer.readUInt32BE(0) - // Eat the alignment row. - if (!position) { - eat(lineFeed + alignments) - } - } + // 2^31 is the maxinimum bytes an arraybuffer can contain + // on 32-bit systems. Although, on 64-bit systems, this is + // 2^53-1 bytes. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.') + return + } - return table -} + const lower = buffer.readUInt32BE(4) + this.#info.payloadLength = (upper << 8) + lower + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + // If there is still more data in this chunk that needs to be read + return callback() + } else if (this.#byteOffset >= this.#info.payloadLength) { + // If the server sent multiple frames in a single chunk -/***/ }), + const body = this.consume(this.#info.payloadLength) -/***/ 16931: -/***/ ((module) => { + this.#fragments.push(body) -"use strict"; + // If the frame is unfragmented, or a fragmented frame was terminated, + // a message was received + if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { + const fullMessage = Buffer.concat(this.#fragments) + websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage) -module.exports = text + this.#info = {} + this.#fragments.length = 0 + } -function text(eat, value, silent) { - var self = this - var methods - var tokenizers - var index - var length - var subvalue - var position - var tokenizer - var name - var min - var now + this.#state = parserStates.INFO + } + } - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true + if (this.#byteOffset > 0) { + continue + } else { + callback() + break + } + } } - methods = self.inlineMethods - length = methods.length - tokenizers = self.inlineTokenizers - index = -1 - min = value.length - - while (++index < length) { - name = methods[index] - - if (name === 'text' || !tokenizers[name]) { - continue + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume (n) { + if (n > this.#byteOffset) { + return null + } else if (n === 0) { + return emptyBuffer } - tokenizer = tokenizers[name].locator - - if (!tokenizer) { - eat.file.fail('Missing locator: `' + name + '`') + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length + return this.#buffers.shift() } - position = tokenizer.call(self, value, 1) + const buffer = Buffer.allocUnsafe(n) + let offset = 0 - if (position !== -1 && position < min) { - min = position - } - } + while (offset !== n) { + const next = this.#buffers[0] + const { length } = next - subvalue = value.slice(0, min) - now = eat.now() + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset) + break + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset) + this.#buffers[0] = next.subarray(n - offset) + break + } else { + buffer.set(this.#buffers.shift(), offset) + offset += next.length + } + } - self.decode(subvalue, now, handler) + this.#byteOffset -= n - function handler(content, position, source) { - eat(source || content)({type: 'text', value: content}) + return buffer } -} - - -/***/ }), -/***/ 76964: -/***/ ((module) => { - -"use strict"; + parseCloseBody (onlyCode, data) { + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 + /** @type {number|undefined} */ + let code + if (data.length >= 2) { + // _The WebSocket Connection Close Code_ is + // defined as the status code (Section 7.4) contained in the first Close + // control frame received by the application + code = data.readUInt16BE(0) + } -module.exports = thematicBreak + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null + } -var tab = '\t' -var lineFeed = '\n' -var space = ' ' -var asterisk = '*' -var dash = '-' -var underscore = '_' + return { code } + } -var maxCount = 3 + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 + /** @type {Buffer} */ + let reason = data.subarray(2) -function thematicBreak(eat, value, silent) { - var index = -1 - var length = value.length + 1 - var subvalue = '' - var character - var marker - var markerCount - var queue + // Remove BOM + if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { + reason = reason.subarray(3) + } - while (++index < length) { - character = value.charAt(index) + if (code !== undefined && !isValidStatusCode(code)) { + return null + } - if (character !== tab && character !== space) { - break + try { + // TODO: optimize this + reason = new TextDecoder('utf-8', { fatal: true }).decode(reason) + } catch { + return null } - subvalue += character + return { code, reason } } - if ( - character !== asterisk && - character !== dash && - character !== underscore - ) { - return + get closingInfo () { + return this.#info.closeInfo } +} - marker = character - subvalue += character - markerCount = 1 - queue = '' +module.exports = { + ByteParser +} - while (++index < length) { - character = value.charAt(index) - if (character === marker) { - markerCount++ - subvalue += queue + marker - queue = '' - } else if (character === space) { - queue += character - } else if ( - markerCount >= maxCount && - (!character || character === lineFeed) - ) { - subvalue += queue +/***/ }), - if (silent) { - return true - } +/***/ 2933: +/***/ ((module) => { - return eat(subvalue)({type: 'thematicBreak'}) - } else { - return - } - } +"use strict"; + + +module.exports = { + kWebSocketURL: Symbol('url'), + kReadyState: Symbol('ready state'), + kController: Symbol('controller'), + kResponse: Symbol('response'), + kBinaryType: Symbol('binary type'), + kSentClose: Symbol('sent close'), + kReceivedClose: Symbol('received close'), + kByteParser: Symbol('byte parser') } /***/ }), -/***/ 6305: +/***/ 3574: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var ccount = __nccwpck_require__(33772) -var decode = __nccwpck_require__(81085) -var decimal = __nccwpck_require__(76995) -var alphabetical = __nccwpck_require__(84989) -var whitespace = __nccwpck_require__(35708) -var locate = __nccwpck_require__(93917) - -module.exports = url -url.locator = locate -url.notInLink = true - -var exclamationMark = 33 // '!' -var ampersand = 38 // '&' -var rightParenthesis = 41 // ')' -var asterisk = 42 // '*' -var comma = 44 // ',' -var dash = 45 // '-' -var dot = 46 // '.' -var colon = 58 // ':' -var semicolon = 59 // ';' -var questionMark = 63 // '?' -var lessThan = 60 // '<' -var underscore = 95 // '_' -var tilde = 126 // '~' - -var leftParenthesisCharacter = '(' -var rightParenthesisCharacter = ')' - -function url(eat, value, silent) { - var self = this - var gfm = self.options.gfm - var tokenizers = self.inlineTokenizers - var length = value.length - var previousDot = -1 - var protocolless = false - var dots - var lastTwoPartsStart - var start - var index - var pathStart - var path - var code - var end - var leftCount - var rightCount - var content - var children - var url - var exit - - if (!gfm) { - return - } - - // `WWW.` doesn’t work. - if (value.slice(0, 4) === 'www.') { - protocolless = true - index = 4 - } else if (value.slice(0, 7).toLowerCase() === 'http://') { - index = 7 - } else if (value.slice(0, 8).toLowerCase() === 'https://') { - index = 8 - } else { - return - } +const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = __nccwpck_require__(2933) +const { states, opcodes } = __nccwpck_require__(5913) +const { MessageEvent, ErrorEvent } = __nccwpck_require__(6255) - // Act as if the starting boundary is a dot. - previousDot = index - 1 +/* globals Blob */ - // Parse a valid domain. - start = index - dots = [] +/** + * @param {import('./websocket').WebSocket} ws + */ +function isEstablished (ws) { + // If the server's response is validated as provided for above, it is + // said that _The WebSocket Connection is Established_ and that the + // WebSocket Connection is in the OPEN state. + return ws[kReadyState] === states.OPEN +} - while (index < length) { - code = value.charCodeAt(index) +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosing (ws) { + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + return ws[kReadyState] === states.CLOSING +} - if (code === dot) { - // Dots may not appear after each other. - if (previousDot === index - 1) { - break - } +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosed (ws) { + return ws[kReadyState] === states.CLOSED +} - dots.push(index) - previousDot = index - index++ - continue - } +/** + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e + * @param {EventTarget} target + * @param {EventInit | undefined} eventInitDict + */ +function fireEvent (e, target, eventConstructor = Event, eventInitDict) { + // 1. If eventConstructor is not given, then let eventConstructor be Event. - if ( - decimal(code) || - alphabetical(code) || - code === dash || - code === underscore - ) { - index++ - continue - } + // 2. Let event be the result of creating an event given eventConstructor, + // in the relevant realm of target. + // 3. Initialize event’s type attribute to e. + const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap - break - } + // 4. Initialize any other IDL attributes of event as described in the + // invocation of this algorithm. - // Ignore a final dot: - if (code === dot) { - dots.pop() - index-- - } + // 5. Return the result of dispatching event at target, with legacy target + // override flag set if set. + target.dispatchEvent(event) +} - // If there are not dots, exit. - if (dots[0] === undefined) { +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @param {import('./websocket').WebSocket} ws + * @param {number} type Opcode + * @param {Buffer} data application data + */ +function websocketMessageReceived (ws, type, data) { + // 1. If ready state is not OPEN (1), then return. + if (ws[kReadyState] !== states.OPEN) { return } - // If there is an underscore in the last two domain parts, exit: - // `www.example.c_m` and `www.ex_ample.com` are not OK, but - // `www.sub_domain.example.com` is. - lastTwoPartsStart = dots.length < 2 ? start : dots[dots.length - 2] + 1 + // 2. Let dataForEvent be determined by switching on type and binary type: + let dataForEvent - if (value.slice(lastTwoPartsStart, index).indexOf('_') !== -1) { - return - } - - /* istanbul ignore if - never used (yet) */ - if (silent) { - return true + if (type === opcodes.TEXT) { + // -> type indicates that the data is Text + // a new DOMString containing data + try { + dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data) + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.') + return + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + // -> type indicates that the data is Binary and binary type is "blob" + // a new Blob object, created in the relevant Realm of the WebSocket + // object, that represents data as its raw data + dataForEvent = new Blob([data]) + } else { + // -> type indicates that the data is Binary and binary type is "arraybuffer" + // a new ArrayBuffer object, created in the relevant Realm of the + // WebSocket object, whose contents are data + dataForEvent = new Uint8Array(data).buffer + } } - end = index - pathStart = index - - // Parse a path. - while (index < length) { - code = value.charCodeAt(index) + // 3. Fire an event named message at the WebSocket object, using MessageEvent, + // with the origin attribute initialized to the serialization of the WebSocket + // object’s url's origin, and the data attribute initialized to dataForEvent. + fireEvent('message', ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }) +} - if (whitespace(code) || code === lessThan) { - break - } +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455 + * @see https://datatracker.ietf.org/doc/html/rfc2616 + * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 + * @param {string} protocol + */ +function isValidSubprotocol (protocol) { + // If present, this value indicates one + // or more comma-separated subprotocol the client wishes to speak, + // ordered by preference. The elements that comprise this value + // MUST be non-empty strings with characters in the range U+0021 to + // U+007E not including separator characters as defined in + // [RFC2616] and MUST all be unique strings. + if (protocol.length === 0) { + return false + } - index++ + for (const char of protocol) { + const code = char.charCodeAt(0) if ( - code === exclamationMark || - code === asterisk || - code === comma || - code === dot || - code === colon || - code === questionMark || - code === underscore || - code === tilde + code < 0x21 || + code > 0x7E || + char === '(' || + char === ')' || + char === '<' || + char === '>' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' || + code === 32 || // SP + code === 9 // HT ) { - // Empty - } else { - end = index + return false } } - index = end - - // If the path ends in a closing paren, and the count of closing parens is - // higher than the opening count, then remove the supefluous closing parens. - if (value.charCodeAt(index - 1) === rightParenthesis) { - path = value.slice(pathStart, index) - leftCount = ccount(path, leftParenthesisCharacter) - rightCount = ccount(path, rightParenthesisCharacter) + return true +} - while (rightCount > leftCount) { - index = pathStart + path.lastIndexOf(rightParenthesisCharacter) - path = value.slice(pathStart, index) - rightCount-- - } +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 + * @param {number} code + */ +function isValidStatusCode (code) { + if (code >= 1000 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 // "MUST NOT be set as a status code" + ) } - if (value.charCodeAt(index - 1) === semicolon) { - // GitHub doesn’t document this, but final semicolons aren’t paret of the - // URL either. - index-- + return code >= 3000 && code <= 4999 +} - // // If the path ends in what looks like an entity, it’s not part of the path. - if (alphabetical(value.charCodeAt(index - 1))) { - end = index - 2 +/** + * @param {import('./websocket').WebSocket} ws + * @param {string|undefined} reason + */ +function failWebsocketConnection (ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws - while (alphabetical(value.charCodeAt(end))) { - end-- - } + controller.abort() - if (value.charCodeAt(end) === ampersand) { - index = end - } - } + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy() } - content = value.slice(0, index) - url = decode(content, {nonTerminated: false}) - - if (protocolless) { - url = 'http://' + url + if (reason) { + fireEvent('error', ws, ErrorEvent, { + error: new Error(reason) + }) } +} - exit = self.enterLink() - - // Temporarily remove all tokenizers except text in url. - self.inlineTokenizers = {text: tokenizers.text} - children = self.tokenizeInline(content, eat.now()) - self.inlineTokenizers = tokenizers - - exit() - - return eat(content)({type: 'link', title: null, url: url, children: children}) +module.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived } /***/ }), -/***/ 87327: -/***/ ((module) => { +/***/ 5171: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = factory - -// Construct a tokenizer. This creates both `tokenizeInline` and `tokenizeBlock`. -function factory(type) { - return tokenize - - // Tokenizer for a bound `type`. - function tokenize(value, location) { - var self = this - var offset = self.offset - var tokens = [] - var methods = self[type + 'Methods'] - var tokenizers = self[type + 'Tokenizers'] - var line = location.line - var column = location.column - var index - var length - var method - var name - var matched - var valueLength - - // Trim white space only lines. - if (!value) { - return tokens +const { webidl } = __nccwpck_require__(4222) +const { DOMException } = __nccwpck_require__(7326) +const { URLSerializer } = __nccwpck_require__(4322) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(5913) +const { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser +} = __nccwpck_require__(2933) +const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = __nccwpck_require__(3574) +const { establishWebSocketConnection } = __nccwpck_require__(8550) +const { WebsocketFrameSend } = __nccwpck_require__(1237) +const { ByteParser } = __nccwpck_require__(3171) +const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3440) +const { getGlobalDispatcher } = __nccwpck_require__(2581) +const { types } = __nccwpck_require__(9023) + +let experimentalWarned = false + +// https://websockets.spec.whatwg.org/#interface-definition +class WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + } + + #bufferedAmount = 0 + #protocol = '' + #extensions = '' + + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor (url, protocols = []) { + super() + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }) + + if (!experimentalWarned) { + experimentalWarned = true + process.emitWarning('WebSockets are experimental, expect them to change at any time.', { + code: 'UNDICI-WS' + }) } - // Expose on `eat`. - eat.now = now - eat.file = self.file + const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols) - // Sync initial offset. - updatePosition('') + url = webidl.converters.USVString(url) + protocols = options.protocols - // Iterate over `value`, and iterate over all tokenizers. When one eats - // something, re-iterate with the remaining value. If no tokenizer eats, - // something failed (should not happen) and an exception is thrown. - while (value) { - index = -1 - length = methods.length - matched = false + // 1. Let baseURL be this's relevant settings object's API base URL. + const baseURL = getGlobalOrigin() - while (++index < length) { - name = methods[index] - method = tokenizers[name] + // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. + let urlRecord - // Previously, we had constructs such as footnotes and YAML that used - // these properties. - // Those are now external (plus there are userland extensions), that may - // still use them. - if ( - method && - /* istanbul ignore next */ (!method.onlyAtStart || self.atStart) && - /* istanbul ignore next */ (!method.notInList || !self.inList) && - /* istanbul ignore next */ (!method.notInBlock || !self.inBlock) && - (!method.notInLink || !self.inLink) - ) { - valueLength = value.length + try { + urlRecord = new URL(url, baseURL) + } catch (e) { + // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError') + } - method.apply(self, [eat, value]) + // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:' + } else if (urlRecord.protocol === 'https:') { + // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". + urlRecord.protocol = 'wss:' + } - matched = valueLength !== value.length + // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + 'SyntaxError' + ) + } - if (matched) { - break - } - } - } + // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" + // DOMException. + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError') + } - /* istanbul ignore if */ - if (!matched) { - self.file.fail(new Error('Infinite loop'), eat.now()) - } + // 8. If protocols is a string, set protocols to a sequence consisting + // of just that string. + if (typeof protocols === 'string') { + protocols = [protocols] } - self.eof = now() + // 9. If any of the values in protocols occur more than once or otherwise + // fail to match the requirements for elements that comprise the value + // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket + // protocol, then throw a "SyntaxError" DOMException. + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } - return tokens + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } - // Update line, column, and offset based on `value`. - function updatePosition(subvalue) { - var lastIndex = -1 - var index = subvalue.indexOf('\n') + // 10. Set this's url to urlRecord. + this[kWebSocketURL] = new URL(urlRecord.href) - while (index !== -1) { - line++ - lastIndex = index - index = subvalue.indexOf('\n', index + 1) - } + // 11. Let client be this's relevant settings object. - if (lastIndex === -1) { - column += subvalue.length - } else { - column = subvalue.length - lastIndex + // 12. Run this step in parallel: + + // 1. Establish a WebSocket connection given urlRecord, protocols, + // and client. + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => this.#onConnectionEstablished(response), + options + ) + + // Each WebSocket object has an associated ready state, which is a + // number representing the state of the connection. Initially it must + // be CONNECTING (0). + this[kReadyState] = WebSocket.CONNECTING + + // The extensions attribute must initially return the empty string. + + // The protocol attribute must initially return the empty string. + + // Each WebSocket object has an associated binary type, which is a + // BinaryType. Initially it must be "blob". + this[kBinaryType] = 'blob' + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close (code = undefined, reason = undefined) { + webidl.brandCheck(this, WebSocket) + + if (code !== undefined) { + code = webidl.converters['unsigned short'](code, { clamp: true }) + } + + if (reason !== undefined) { + reason = webidl.converters.USVString(reason) + } + + // 1. If code is present, but is neither an integer equal to 1000 nor an + // integer in the range 3000 to 4999, inclusive, throw an + // "InvalidAccessError" DOMException. + if (code !== undefined) { + if (code !== 1000 && (code < 3000 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError') } + } - if (line in offset) { - if (lastIndex !== -1) { - column += offset[line] - } else if (column <= offset[line]) { - column = offset[line] + 1 - } + let reasonByteLength = 0 + + // 2. If reason is present, then run these substeps: + if (reason !== undefined) { + // 1. Let reasonBytes be the result of encoding reason. + // 2. If reasonBytes is longer than 123 bytes, then throw a + // "SyntaxError" DOMException. + reasonByteLength = Buffer.byteLength(reason) + + if (reasonByteLength > 123) { + throw new DOMException( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + 'SyntaxError' + ) } } - // Get offset. Called before the first character is eaten to retrieve the - // range’s offsets. - function getOffset() { - var indentation = [] - var pos = line + 1 - - // Done. Called when the last character is eaten to retrieve the range’s - // offsets. - return function () { - var last = line + 1 + // 3. Run the first matching steps from the following list: + if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { + // If this's ready state is CLOSING (2) or CLOSED (3) + // Do nothing. + } else if (!isEstablished(this)) { + // If the WebSocket connection is not yet established + // Fail the WebSocket connection and set this's ready state + // to CLOSING (2). + failWebsocketConnection(this, 'Connection was closed before it was established.') + this[kReadyState] = WebSocket.CLOSING + } else if (!isClosing(this)) { + // If the WebSocket closing handshake has not yet been started + // Start the WebSocket closing handshake and set this's ready + // state to CLOSING (2). + // - If neither code nor reason is present, the WebSocket Close + // message must not have a body. + // - If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + // - If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + + const frame = new WebsocketFrameSend() + + // If neither code nor reason is present, the WebSocket Close + // message must not have a body. + + // If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + if (code !== undefined && reason === undefined) { + frame.frameData = Buffer.allocUnsafe(2) + frame.frameData.writeUInt16BE(code, 0) + } else if (code !== undefined && reason !== undefined) { + // If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength) + frame.frameData.writeUInt16BE(code, 0) + // the body MAY contain UTF-8-encoded data with value /reason/ + frame.frameData.write(reason, 2, 'utf-8') + } else { + frame.frameData = emptyBuffer + } - while (pos < last) { - indentation.push((offset[pos] || 0) + 1) + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket - pos++ + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true } + }) - return indentation - } + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this[kReadyState] = states.CLOSING + } else { + // Otherwise + // Set this's ready state to CLOSING (2). + this[kReadyState] = WebSocket.CLOSING } + } - // Get the current position. - function now() { - var pos = {line: line, column: column} + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send (data) { + webidl.brandCheck(this, WebSocket) - pos.offset = self.toOffset(pos) + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }) - return pos + data = webidl.converters.WebSocketSendData(data) + + // 1. If this's ready state is CONNECTING, then throw an + // "InvalidStateError" DOMException. + if (this[kReadyState] === WebSocket.CONNECTING) { + throw new DOMException('Sent before connected.', 'InvalidStateError') } - // Store position information for a node. - function Position(start) { - this.start = start - this.end = now() + // 2. Run the appropriate set of steps from the following list: + // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 + // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 + + if (!isEstablished(this) || isClosing(this)) { + return } - // Throw when a value is incorrectly eaten. This shouldn’t happen but will - // throw on new, incorrect rules. - function validateEat(subvalue) { - /* istanbul ignore if */ - if (value.slice(0, subvalue.length) !== subvalue) { - // Capture stack-trace. - self.file.fail( - new Error( - 'Incorrectly eaten value: please report this warning on https://git.io/vg5Ft' - ), - now() - ) - } + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + // If data is a string + if (typeof data === 'string') { + // If the WebSocket connection is established and the WebSocket + // closing handshake has not yet started, then the user agent + // must send a WebSocket Message comprised of the data argument + // using a text frame opcode; if the data cannot be sent, e.g. + // because it would need to be buffered but the buffer is full, + // the user agent must flag the WebSocket as full and then close + // the WebSocket connection. Any invocation of this method with a + // string argument that does not throw an exception must increase + // the bufferedAmount attribute by the number of bytes needed to + // express the argument as UTF-8. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.TEXT) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (types.isArrayBuffer(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need + // to be buffered but the buffer is full, the user agent must flag + // the WebSocket as full and then close the WebSocket connection. + // The data to be sent is the data stored in the buffer described + // by the ArrayBuffer object. Any invocation of this method with an + // ArrayBuffer argument that does not throw an exception must + // increase the bufferedAmount attribute by the length of the + // ArrayBuffer in bytes. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (ArrayBuffer.isView(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The + // data to be sent is the data stored in the section of the buffer + // described by the ArrayBuffer object that data references. Any + // invocation of this method with this kind of argument that does + // not throw an exception must increase the bufferedAmount attribute + // by the length of data’s buffer in bytes. + + const ab = Buffer.from(data, data.byteOffset, data.byteLength) + + const frame = new WebsocketFrameSend(ab) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += ab.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= ab.byteLength + }) + } else if (isBlobLike(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The data + // to be sent is the raw data represented by the Blob object. Any + // invocation of this method with a Blob argument that does not throw + // an exception must increase the bufferedAmount attribute by the size + // of the Blob object’s raw data, in bytes. + + const frame = new WebsocketFrameSend() + + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab) + frame.frameData = value + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + }) } + } - // Mark position and patch `node.position`. - function position() { - var before = now() + get readyState () { + webidl.brandCheck(this, WebSocket) - return update + // The readyState getter steps are to return this's ready state. + return this[kReadyState] + } - // Add the position to a node. - function update(node, indent) { - var previous = node.position - var start = previous ? previous.start : before - var combined = [] - var n = previous && previous.end.line - var l = before.line + get bufferedAmount () { + webidl.brandCheck(this, WebSocket) - node.position = new Position(start) + return this.#bufferedAmount + } - // If there was already a `position`, this node was merged. Fixing - // `start` wasn’t hard, but the indent is different. Especially - // because some information, the indent between `n` and `l` wasn’t - // tracked. Luckily, that space is (should be?) empty, so we can - // safely check for it now. - if (previous && indent && previous.indent) { - combined = previous.indent + get url () { + webidl.brandCheck(this, WebSocket) - if (n < l) { - while (++n < l) { - combined.push((offset[n] || 0) + 1) - } + // The url getter steps are to return this's url, serialized. + return URLSerializer(this[kWebSocketURL]) + } - combined.push(before.column) - } + get extensions () { + webidl.brandCheck(this, WebSocket) - indent = combined.concat(indent) - } + return this.#extensions + } - node.position.indent = indent || [] + get protocol () { + webidl.brandCheck(this, WebSocket) - return node - } + return this.#protocol + } + + get onopen () { + webidl.brandCheck(this, WebSocket) + + return this.#events.open + } + + set onopen (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.open) { + this.removeEventListener('open', this.#events.open) } - // Add `node` to `parent`s children or to `tokens`. Performs merges where - // possible. - function add(node, parent) { - var children = parent ? parent.children : tokens - var previous = children[children.length - 1] - var fn + if (typeof fn === 'function') { + this.#events.open = fn + this.addEventListener('open', fn) + } else { + this.#events.open = null + } + } - if ( - previous && - node.type === previous.type && - (node.type === 'text' || node.type === 'blockquote') && - mergeable(previous) && - mergeable(node) - ) { - fn = node.type === 'text' ? mergeText : mergeBlockquote - node = fn.call(self, previous, node) - } + get onerror () { + webidl.brandCheck(this, WebSocket) - if (node !== previous) { - children.push(node) - } + return this.#events.error + } - if (self.atStart && tokens.length !== 0) { - self.exitStart() - } + set onerror (fn) { + webidl.brandCheck(this, WebSocket) - return node + if (this.#events.error) { + this.removeEventListener('error', this.#events.error) } - // Remove `subvalue` from `value`. `subvalue` must be at the start of - // `value`. - function eat(subvalue) { - var indent = getOffset() - var pos = position() - var current = now() + if (typeof fn === 'function') { + this.#events.error = fn + this.addEventListener('error', fn) + } else { + this.#events.error = null + } + } + + get onclose () { + webidl.brandCheck(this, WebSocket) - validateEat(subvalue) + return this.#events.close + } - apply.reset = reset - reset.test = test - apply.test = test + set onclose (fn) { + webidl.brandCheck(this, WebSocket) - value = value.slice(subvalue.length) + if (this.#events.close) { + this.removeEventListener('close', this.#events.close) + } - updatePosition(subvalue) + if (typeof fn === 'function') { + this.#events.close = fn + this.addEventListener('close', fn) + } else { + this.#events.close = null + } + } - indent = indent() + get onmessage () { + webidl.brandCheck(this, WebSocket) - return apply + return this.#events.message + } - // Add the given arguments, add `position` to the returned node, and - // return the node. - function apply(node, parent) { - return pos(add(pos(node), parent), indent) - } + set onmessage (fn) { + webidl.brandCheck(this, WebSocket) - // Functions just like apply, but resets the content: the line and - // column are reversed, and the eaten value is re-added. This is - // useful for nodes with a single type of content, such as lists and - // tables. See `apply` above for what parameters are expected. - function reset() { - var node = apply.apply(null, arguments) + if (this.#events.message) { + this.removeEventListener('message', this.#events.message) + } - line = current.line - column = current.column - value = subvalue + value + if (typeof fn === 'function') { + this.#events.message = fn + this.addEventListener('message', fn) + } else { + this.#events.message = null + } + } - return node - } + get binaryType () { + webidl.brandCheck(this, WebSocket) - // Test the position, after eating, and reverse to a not-eaten state. - function test() { - var result = pos({}) + return this[kBinaryType] + } - line = current.line - column = current.column - value = subvalue + value + set binaryType (type) { + webidl.brandCheck(this, WebSocket) - return result.position - } + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob' + } else { + this[kBinaryType] = type } } -} -// Check whether a node is mergeable with adjacent nodes. -function mergeable(node) { - var start - var end + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished (response) { + // processResponse is called when the "response’s header list has been received and initialized." + // once this happens, the connection is open + this[kResponse] = response - if (node.type !== 'text' || !node.position) { - return true + const parser = new ByteParser(this) + parser.on('drain', function onParserDrain () { + this.ws[kResponse].socket.resume() + }) + + response.socket.ws = this + this[kByteParser] = parser + + // 1. Change the ready state to OPEN (1). + this[kReadyState] = states.OPEN + + // 2. Change the extensions attribute’s value to the extensions in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 + const extensions = response.headersList.get('sec-websocket-extensions') + + if (extensions !== null) { + this.#extensions = extensions + } + + // 3. Change the protocol attribute’s value to the subprotocol in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 + const protocol = response.headersList.get('sec-websocket-protocol') + + if (protocol !== null) { + this.#protocol = protocol + } + + // 4. Fire an event named open at the WebSocket object. + fireEvent('open', this) + } +} + +// https://websockets.spec.whatwg.org/#dom-websocket-connecting +WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING +// https://websockets.spec.whatwg.org/#dom-websocket-open +WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN +// https://websockets.spec.whatwg.org/#dom-websocket-closing +WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING +// https://websockets.spec.whatwg.org/#dom-websocket-closed +WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED + +Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true } +}) + +Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors +}) - start = node.position.start - end = node.position.end +webidl.converters['sequence<DOMString>'] = webidl.sequenceConverter( + webidl.converters.DOMString +) - // Only merge nodes which occupy the same size as their `value`. - return ( - start.line !== end.line || end.column - start.column === node.value.length - ) +webidl.converters['DOMString or sequence<DOMString>'] = function (V) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence<DOMString>'](V) + } + + return webidl.converters.DOMString(V) } -// Merge two text nodes: `node` into `prev`. -function mergeText(previous, node) { - previous.value += node.value +// This implements the propsal made in https://github.com/whatwg/websockets/issues/42 +webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.converters['DOMString or sequence<DOMString>'], + get defaultValue () { + return [] + } + }, + { + key: 'dispatcher', + converter: (V) => V, + get defaultValue () { + return getGlobalDispatcher() + } + }, + { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } +]) + +webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V) + } - return previous + return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) } } -// Merge two blockquotes: `node` into `prev`, unless in CommonMark or gfm modes. -function mergeBlockquote(previous, node) { - if (this.options.commonmark || this.options.gfm) { - return node +webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V) + } } - previous.children = previous.children.concat(node.children) + return webidl.converters.USVString(V) +} - return previous +module.exports = { + WebSocket } /***/ }), -/***/ 73235: +/***/ 2613: /***/ ((module) => { "use strict"; +module.exports = require("assert"); +/***/ }), -module.exports = factory - -var backslash = '\\' - -// Factory to de-escape a value, based on a list at `key` in `ctx`. -function factory(ctx, key) { - return unescape +/***/ 290: +/***/ ((module) => { - // De-escape a string using the expression at `key` in `ctx`. - function unescape(value) { - var previous = 0 - var index = value.indexOf(backslash) - var escape = ctx[key] - var queue = [] - var character +"use strict"; +module.exports = require("async_hooks"); - while (index !== -1) { - queue.push(value.slice(previous, index)) - previous = index + 1 - character = value.charAt(previous) +/***/ }), - // If the following character is not a valid escape, add the slash. - if (!character || escape.indexOf(character) === -1) { - queue.push(backslash) - } +/***/ 181: +/***/ ((module) => { - index = value.indexOf(backslash, previous + 1) - } +"use strict"; +module.exports = require("buffer"); - queue.push(value.slice(previous)) +/***/ }), - return queue.join('') - } -} +/***/ 5317: +/***/ ((module) => { +"use strict"; +module.exports = require("child_process"); /***/ }), -/***/ 54656: +/***/ 4236: /***/ ((module) => { "use strict"; +module.exports = require("console"); +/***/ }), -module.exports = indentation +/***/ 9140: +/***/ ((module) => { -var tab = '\t' -var space = ' ' +"use strict"; +module.exports = require("constants"); -var spaceSize = 1 -var tabSize = 4 +/***/ }), -// Gets indentation information for a line. -function indentation(value) { - var index = 0 - var indent = 0 - var character = value.charAt(index) - var stops = {} - var size - var lastIndent = 0 +/***/ 6982: +/***/ ((module) => { - while (character === tab || character === space) { - size = character === tab ? tabSize : spaceSize +"use strict"; +module.exports = require("crypto"); - indent += size +/***/ }), - if (size > 1) { - indent = Math.floor(indent / size) * size - } +/***/ 1637: +/***/ ((module) => { - while (lastIndent < indent) { - stops[++lastIndent] = index - } +"use strict"; +module.exports = require("diagnostics_channel"); - character = value.charAt(++index) - } +/***/ }), - return {indent: indent, stops: stops} -} +/***/ 4434: +/***/ ((module) => { +"use strict"; +module.exports = require("events"); /***/ }), -/***/ 29631: -/***/ ((__unused_webpack_module, exports) => { +/***/ 9896: +/***/ ((module) => { "use strict"; +module.exports = require("fs"); +/***/ }), -var attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' -var unquoted = '[^"\'=<>`\\u0000-\\u0020]+' -var singleQuoted = "'[^']*'" -var doubleQuoted = '"[^"]*"' -var attributeValue = - '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')' -var attribute = - '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' -var openTag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>' -var closeTag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>' -var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->' -var processing = '<[?].*?[?]>' -var declaration = '<![A-Za-z]+\\s+[^>]*>' -var cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' - -exports.g = new RegExp('^(?:' + openTag + '|' + closeTag + ')') - -exports._ = new RegExp( - '^(?:' + - openTag + - '|' + - closeTag + - '|' + - comment + - '|' + - processing + - '|' + - declaration + - '|' + - cdata + - ')' -) +/***/ 8611: +/***/ ((module) => { +"use strict"; +module.exports = require("http"); /***/ }), -/***/ 915: +/***/ 5675: /***/ ((module) => { "use strict"; +module.exports = require("http2"); +/***/ }), -module.exports = interrupt +/***/ 5692: +/***/ ((module) => { -function interrupt(interruptors, tokenizers, ctx, parameters) { - var length = interruptors.length - var index = -1 - var interruptor - var config +"use strict"; +module.exports = require("https"); - while (++index < length) { - interruptor = interruptors[index] - config = interruptor[1] || {} +/***/ }), - if ( - config.pedantic !== undefined && - config.pedantic !== ctx.options.pedantic - ) { - continue - } +/***/ 9278: +/***/ ((module) => { - if ( - config.commonmark !== undefined && - config.commonmark !== ctx.options.commonmark - ) { - continue - } +"use strict"; +module.exports = require("net"); - if (tokenizers[interruptor[0]].apply(ctx, parameters)) { - return true - } - } +/***/ }), - return false -} +/***/ 7598: +/***/ ((module) => { +"use strict"; +module.exports = require("node:crypto"); /***/ }), -/***/ 98851: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 8474: +/***/ ((module) => { "use strict"; +module.exports = require("node:events"); + +/***/ }), +/***/ 7075: +/***/ ((module) => { -var collapseWhiteSpace = __nccwpck_require__(93764) +"use strict"; +module.exports = require("node:stream"); -module.exports = normalize +/***/ }), -// Normalize an identifier. Collapses multiple white space characters into a -// single space, and removes casing. -function normalize(value) { - return collapseWhiteSpace(value).toLowerCase() -} +/***/ 7975: +/***/ ((module) => { +"use strict"; +module.exports = require("node:util"); /***/ }), -/***/ 80210: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 857: +/***/ ((module) => { "use strict"; +module.exports = require("os"); +/***/ }), -var trim = __nccwpck_require__(82315) -var repeat = __nccwpck_require__(69626) -var getIndent = __nccwpck_require__(54656) +/***/ 6928: +/***/ ((module) => { -module.exports = indentation +"use strict"; +module.exports = require("path"); -var lineFeed = '\n' -var space = ' ' -var exclamationMark = '!' +/***/ }), -// Remove the minimum indent from every line in `value`. Supports both tab, -// spaced, and mixed indentation (as well as possible). -function indentation(value, maximum) { - var values = value.split(lineFeed) - var position = values.length + 1 - var minIndent = Infinity - var matrix = [] - var index - var indentation - var stops +/***/ 2987: +/***/ ((module) => { - values.unshift(repeat(space, maximum) + exclamationMark) +"use strict"; +module.exports = require("perf_hooks"); - while (position--) { - indentation = getIndent(values[position]) +/***/ }), - matrix[position] = indentation.stops +/***/ 3480: +/***/ ((module) => { - if (trim(values[position]).length === 0) { - continue - } +"use strict"; +module.exports = require("querystring"); - if (indentation.indent) { - if (indentation.indent > 0 && indentation.indent < minIndent) { - minIndent = indentation.indent - } - } else { - minIndent = Infinity +/***/ }), - break - } - } +/***/ 2203: +/***/ ((module) => { - if (minIndent !== Infinity) { - position = values.length +"use strict"; +module.exports = require("stream"); - while (position--) { - stops = matrix[position] - index = minIndent +/***/ }), - while (index && !(index in stops)) { - index-- - } +/***/ 3774: +/***/ ((module) => { - values[position] = values[position].slice(stops[index] + 1) - } - } +"use strict"; +module.exports = require("stream/web"); - values.shift() +/***/ }), - return values.join(lineFeed) -} +/***/ 3193: +/***/ ((module) => { +"use strict"; +module.exports = require("string_decoder"); /***/ }), -/***/ 36686: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 3557: +/***/ ((module) => { "use strict"; +module.exports = require("timers"); +/***/ }), -var unherit = __nccwpck_require__(68475) -var xtend = __nccwpck_require__(76738) -var Compiler = __nccwpck_require__(48398) +/***/ 4756: +/***/ ((module) => { -module.exports = stringify -stringify.Compiler = Compiler +"use strict"; +module.exports = require("tls"); -function stringify(options) { - var Local = unherit(Compiler) - Local.prototype.options = xtend( - Local.prototype.options, - this.data('settings'), - options - ) - this.Compiler = Local -} +/***/ }), + +/***/ 7016: +/***/ ((module) => { +"use strict"; +module.exports = require("url"); /***/ }), -/***/ 48398: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 9023: +/***/ ((module) => { "use strict"; +module.exports = require("util"); +/***/ }), -var xtend = __nccwpck_require__(76738) -var toggle = __nccwpck_require__(78447) - -module.exports = Compiler - -// Construct a new compiler. -function Compiler(tree, file) { - this.inLink = false - this.inTable = false - this.tree = tree - this.file = file - this.options = xtend(this.options) - this.setOptions({}) -} - -var proto = Compiler.prototype - -// Enter and exit helpers. */ -proto.enterLink = toggle('inLink', false) -proto.enterTable = toggle('inTable', false) -proto.enterLinkReference = __nccwpck_require__(78425) - -// Configuration. -proto.options = __nccwpck_require__(12979) -proto.setOptions = __nccwpck_require__(17767) - -proto.compile = __nccwpck_require__(39978) -proto.visit = __nccwpck_require__(19744) -proto.all = __nccwpck_require__(53395) -proto.block = __nccwpck_require__(37624) -proto.visitOrderedItems = __nccwpck_require__(71401) -proto.visitUnorderedItems = __nccwpck_require__(367) - -// Expose visitors. -proto.visitors = { - root: __nccwpck_require__(71342), - text: __nccwpck_require__(16332), - heading: __nccwpck_require__(63353), - paragraph: __nccwpck_require__(66601), - blockquote: __nccwpck_require__(91296), - list: __nccwpck_require__(82878), - listItem: __nccwpck_require__(18141), - inlineCode: __nccwpck_require__(83254), - code: __nccwpck_require__(69279), - html: __nccwpck_require__(48195), - thematicBreak: __nccwpck_require__(74416), - strong: __nccwpck_require__(33986), - emphasis: __nccwpck_require__(60250), - break: __nccwpck_require__(52505), - delete: __nccwpck_require__(26808), - link: __nccwpck_require__(97556), - linkReference: __nccwpck_require__(17271), - imageReference: __nccwpck_require__(70911), - definition: __nccwpck_require__(82838), - image: __nccwpck_require__(10964), - table: __nccwpck_require__(88664), - tableCell: __nccwpck_require__(10730) -} +/***/ 8253: +/***/ ((module) => { +"use strict"; +module.exports = require("util/types"); /***/ }), -/***/ 12979: +/***/ 8167: /***/ ((module) => { "use strict"; +module.exports = require("worker_threads"); +/***/ }), -module.exports = { - gfm: true, - commonmark: false, - pedantic: false, - entities: 'false', - setext: false, - closeAtx: false, - tableCellPadding: true, - tablePipeAlign: true, - stringLength: stringLength, - incrementListMarker: true, - tightDefinitions: false, - fences: false, - fence: '`', - bullet: '-', - listItemIndent: 'tab', - rule: '*', - ruleSpaces: true, - ruleRepetition: 3, - strong: '*', - emphasis: '_' -} - -function stringLength(value) { - return value.length -} +/***/ 3106: +/***/ ((module) => { +"use strict"; +module.exports = require("zlib"); /***/ }), -/***/ 28428: +/***/ 7182: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var decimal = __nccwpck_require__(76995) -var alphanumeric = __nccwpck_require__(41536) -var whitespace = __nccwpck_require__(35708) -var escapes = __nccwpck_require__(31152) -var prefix = __nccwpck_require__(30876) - -module.exports = factory - -var tab = '\t' -var lineFeed = '\n' -var space = ' ' -var numberSign = '#' -var ampersand = '&' -var leftParenthesis = '(' -var rightParenthesis = ')' -var asterisk = '*' -var plusSign = '+' -var dash = '-' -var dot = '.' -var colon = ':' -var lessThan = '<' -var greaterThan = '>' -var leftSquareBracket = '[' -var backslash = '\\' -var rightSquareBracket = ']' -var underscore = '_' -var graveAccent = '`' -var verticalBar = '|' -var tilde = '~' -var exclamationMark = '!' - -var entities = { - '<': '&lt;', - ':': '&#x3A;', - '&': '&amp;', - '|': '&#x7C;', - '~': '&#x7E;' -} - -var shortcut = 'shortcut' -var mailto = 'mailto' -var https = 'https' -var http = 'http' - -var blankExpression = /\n\s*$/ - -// Factory to escape characters. -function factory(options) { - return escape - - // Escape punctuation characters in a node’s value. - function escape(value, node, parent) { - var self = this - var gfm = options.gfm - var commonmark = options.commonmark - var pedantic = options.pedantic - var markers = commonmark ? [dot, rightParenthesis] : [dot] - var siblings = parent && parent.children - var index = siblings && siblings.indexOf(node) - var previous = siblings && siblings[index - 1] - var next = siblings && siblings[index + 1] - var length = value.length - var escapable = escapes(options) - var position = -1 - var queue = [] - var escaped = queue - var afterNewLine - var character - var wordCharBefore - var wordCharAfter - var offset - var replace +const WritableStream = (__nccwpck_require__(7075).Writable) +const inherits = (__nccwpck_require__(7975).inherits) - if (previous) { - afterNewLine = text(previous) && blankExpression.test(previous.value) - } else { - afterNewLine = - !parent || parent.type === 'root' || parent.type === 'paragraph' - } - - while (++position < length) { - character = value.charAt(position) - replace = false - - if (character === '\n') { - afterNewLine = true - } else if ( - character === backslash || - character === graveAccent || - character === asterisk || - character === leftSquareBracket || - character === lessThan || - (character === ampersand && prefix(value.slice(position)) > 0) || - (character === rightSquareBracket && self.inLink) || - (gfm && character === tilde && value.charAt(position + 1) === tilde) || - (gfm && - character === verticalBar && - (self.inTable || alignment(value, position))) || - (character === underscore && - // Delegate leading/trailing underscores to the multinode version below. - position > 0 && - position < length - 1 && - (pedantic || - !alphanumeric(value.charAt(position - 1)) || - !alphanumeric(value.charAt(position + 1)))) || - (gfm && !self.inLink && character === colon && protocol(queue.join(''))) - ) { - replace = true - } else if (afterNewLine) { - if ( - character === greaterThan || - character === numberSign || - character === asterisk || - character === dash || - character === plusSign - ) { - replace = true - } else if (decimal(character)) { - offset = position + 1 +const StreamSearch = __nccwpck_require__(4136) - while (offset < length) { - if (!decimal(value.charAt(offset))) { - break - } +const PartStream = __nccwpck_require__(612) +const HeaderParser = __nccwpck_require__(2271) - offset++ - } +const DASH = 45 +const B_ONEDASH = Buffer.from('-') +const B_CRLF = Buffer.from('\r\n') +const EMPTY_FN = function () {} - if (markers.indexOf(value.charAt(offset)) !== -1) { - next = value.charAt(offset + 1) +function Dicer (cfg) { + if (!(this instanceof Dicer)) { return new Dicer(cfg) } + WritableStream.call(this, cfg) - if (!next || next === space || next === tab || next === lineFeed) { - queue.push(value.slice(position, offset)) - position = offset - character = value.charAt(position) - replace = true - } - } - } - } + if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') } - if (afterNewLine && !whitespace(character)) { - afterNewLine = false - } + if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined } - queue.push(replace ? one(character) : character) - } + this._headerFirst = cfg.headerFirst - // Multi-node versions. - if (siblings && text(node)) { - // Check for an opening parentheses after a link-reference (which can be - // joined by white-space). - if (previous && previous.referenceType === shortcut) { - position = -1 - length = escaped.length + this._dashes = 0 + this._parts = 0 + this._finished = false + this._realFinish = false + this._isPreamble = true + this._justMatched = false + this._firstWrite = true + this._inHeader = true + this._part = undefined + this._cb = undefined + this._ignoreData = false + this._partOpts = { highWaterMark: cfg.partHwm } + this._pause = false - while (++position < length) { - character = escaped[position] + const self = this + this._hparser = new HeaderParser(cfg) + this._hparser.on('header', function (header) { + self._inHeader = false + self._part.emit('header', header) + }) +} +inherits(Dicer, WritableStream) + +Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + const self = this + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')) + if (self._part && !self._ignoreData) { + const type = (self._isPreamble ? 'Preamble' : 'Part') + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')) + self._part.push(null) + process.nextTick(function () { + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + return + } + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + } + } else { WritableStream.prototype.emit.apply(this, arguments) } +} - if (character === space || character === tab) { - continue - } +Dicer.prototype._write = function (data, encoding, cb) { + // ignore unexpected data (e.g. extra trailer data after finished) + if (!this._hparser && !this._bparser) { return cb() } - if (character === leftParenthesis || character === colon) { - escaped[position] = one(character) - } + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts) + if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() } + } + const r = this._hparser.push(data) + if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() } + } - break - } + // allows for "easier" testing + if (this._firstWrite) { + this._bparser.push(B_CRLF) + this._firstWrite = false + } - // If the current node is all spaces / tabs, preceded by a shortcut, - // and followed by a text starting with `(`, escape it. - if ( - text(next) && - position === length && - next.value.charAt(0) === leftParenthesis - ) { - escaped.push(backslash) - } - } + this._bparser.push(data) - // Ensure non-auto-links are not seen as links. This pattern needs to - // check the preceding nodes too. - if ( - gfm && - !self.inLink && - text(previous) && - value.charAt(0) === colon && - protocol(previous.value.slice(-6)) - ) { - escaped[0] = one(colon) - } + if (this._pause) { this._cb = cb } else { cb() } +} - // Escape ampersand if it would otherwise start an entity. - if ( - text(next) && - value.charAt(length - 1) === ampersand && - prefix(ampersand + next.value) !== 0 - ) { - escaped[escaped.length - 1] = one(ampersand) - } +Dicer.prototype.reset = function () { + this._part = undefined + this._bparser = undefined + this._hparser = undefined +} - // Escape exclamation marks immediately followed by links. - if ( - next && - next.type === 'link' && - value.charAt(length - 1) === exclamationMark - ) { - escaped[escaped.length - 1] = one(exclamationMark) - } +Dicer.prototype.setBoundary = function (boundary) { + const self = this + this._bparser = new StreamSearch('\r\n--' + boundary) + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end) + }) +} - // Escape double tildes in GFM. - if ( - gfm && - text(next) && - value.charAt(length - 1) === tilde && - next.value.charAt(0) === tilde - ) { - escaped.splice(-1, 0, backslash) - } +Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true + this._part.on('error', EMPTY_FN) + // we must perform some kind of read on the stream even though we are + // ignoring the data, otherwise node's Readable stream will not emit 'end' + // after pushing null to the stream + this._part.resume() + } +} - // Escape underscores, but not mid-word (unless in pedantic mode). - wordCharBefore = text(previous) && alphanumeric(previous.value.slice(-1)) - wordCharAfter = text(next) && alphanumeric(next.value.charAt(0)) +Dicer.prototype._oninfo = function (isMatch, data, start, end) { + let buf; const self = this; let i = 0; let r; let shouldWriteMore = true - if (length === 1) { - if ( - value === underscore && - (pedantic || !wordCharBefore || !wordCharAfter) - ) { - escaped.unshift(backslash) - } + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && (start + i) < end) { + if (data[start + i] === DASH) { + ++i + ++this._dashes } else { - if ( - value.charAt(0) === underscore && - (pedantic || !wordCharBefore || !alphanumeric(value.charAt(1))) - ) { - escaped.unshift(backslash) - } - - if ( - value.charAt(length - 1) === underscore && - (pedantic || - !wordCharAfter || - !alphanumeric(value.charAt(length - 2))) - ) { - escaped.splice(-1, 0, backslash) - } + if (this._dashes) { buf = B_ONEDASH } + this._dashes = 0 + break } } - - return escaped.join('') - - function one(character) { - return escapable.indexOf(character) === -1 - ? entities[character] - : backslash + character + if (this._dashes === 2) { + if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) } + this.reset() + this._finished = true + // no more parts will be added + if (self._parts === 0) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } + } + if (this._dashes) { return } + } + if (this._justMatched) { this._justMatched = false } + if (!this._part) { + this._part = new PartStream(this._partOpts) + this._part._read = function (n) { + self._unpause() + } + if (this._isPreamble && this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part) + } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { + this.emit('part', this._part) + } else { + this._ignore() + } + if (!this._isPreamble) { this._inHeader = true } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { shouldWriteMore = this._part.push(buf) } + shouldWriteMore = this._part.push(data.slice(start, end)) + if (!shouldWriteMore) { this._pause = true } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { this._hparser.push(buf) } + r = this._hparser.push(data.slice(start, end)) + if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) } + } + } + if (isMatch) { + this._hparser.reset() + if (this._isPreamble) { this._isPreamble = false } else { + if (start !== end) { + ++this._parts + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } else { + self._unpause() + } + } + }) + } } + this._part.push(null) + this._part = undefined + this._ignoreData = false + this._justMatched = true + this._dashes = 0 } } -// Check if `index` in `value` is inside an alignment row. -function alignment(value, index) { - var start = value.lastIndexOf(lineFeed, index) - var end = value.indexOf(lineFeed, index) - var char - - end = end === -1 ? value.length : end +Dicer.prototype._unpause = function () { + if (!this._pause) { return } - while (++start < end) { - char = value.charAt(start) - - if ( - char !== colon && - char !== dash && - char !== space && - char !== verticalBar - ) { - return false - } + this._pause = false + if (this._cb) { + const cb = this._cb + this._cb = undefined + cb() } - - return true -} - -// Check if `node` is a text node. -function text(node) { - return node && node.type === 'text' } -// Check if `value` ends in a protocol. -function protocol(value) { - var tail = value.slice(-6).toLowerCase() - return tail === mailto || tail.slice(-5) === https || tail.slice(-4) === http -} +module.exports = Dicer /***/ }), -/***/ 53395: -/***/ ((module) => { +/***/ 2271: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = all - -// Visit all children of `parent`. -function all(parent) { - var self = this - var children = parent.children - var length = children.length - var results = [] - var index = -1 - - while (++index < length) { - results[index] = self.visit(children[index], parent) - } - - return results -} +const EventEmitter = (__nccwpck_require__(8474).EventEmitter) +const inherits = (__nccwpck_require__(7975).inherits) +const getLimit = __nccwpck_require__(2393) +const StreamSearch = __nccwpck_require__(4136) -/***/ }), +const B_DCRLF = Buffer.from('\r\n\r\n') +const RE_CRLF = /\r\n/g +const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex -/***/ 37624: -/***/ ((module) => { +function HeaderParser (cfg) { + EventEmitter.call(this) -"use strict"; + cfg = cfg || {} + const self = this + this.nread = 0 + this.maxed = false + this.npairs = 0 + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000) + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024) + this.buffer = '' + this.header = {} + this.finished = false + this.ss = new StreamSearch(B_DCRLF) + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start + self.nread = self.maxHeaderSize + self.maxed = true + } else { self.nread += (end - start) } + self.buffer += data.toString('binary', start, end) + } + if (isMatch) { self._finish() } + }) +} +inherits(HeaderParser, EventEmitter) -module.exports = block +HeaderParser.prototype.push = function (data) { + const r = this.ss.push(data) + if (this.finished) { return r } +} -var lineFeed = '\n' +HeaderParser.prototype.reset = function () { + this.finished = false + this.buffer = '' + this.header = {} + this.ss.reset() +} -var blank = lineFeed + lineFeed -var triple = blank + lineFeed -var comment = blank + '<!---->' + blank +HeaderParser.prototype._finish = function () { + if (this.buffer) { this._parseHeader() } + this.ss.matches = this.ss.maxMatches + const header = this.header + this.header = {} + this.buffer = '' + this.finished = true + this.nread = this.npairs = 0 + this.maxed = false + this.emit('header', header) +} -// Stringify a block node with block children (e.g., `root` or `blockquote`). -// Knows about code following a list, or adjacent lists with similar bullets, -// and places an extra line feed between them. -function block(node) { - var self = this - var options = self.options - var fences = options.fences - var gap = options.commonmark ? comment : triple - var definitionGap = options.tightDefinitions ? lineFeed : blank - var values = [] - var children = node.children - var length = children.length - var index = -1 - var previous - var child +HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { return } - while (++index < length) { - previous = child - child = children[index] + const lines = this.buffer.split(RE_CRLF) + const len = lines.length + let m, h - if (previous) { - // A list preceding another list that are equally ordered, or a - // list preceding an indented code block, need a gap between them, - // so as not to see them as one list, or content of the list, - // respectively. - // - // In commonmark, only something that breaks both up can do that, - // so we opt for an empty, invisible comment. In other flavours, - // two blank lines are fine. - if ( - previous.type === 'list' && - ((child.type === 'list' && previous.ordered === child.ordered) || - (child.type === 'code' && !child.lang && !fences)) - ) { - values.push(gap) - } else if ( - previous.type === 'definition' && - child.type === 'definition' - ) { - values.push(definitionGap) - } else { - values.push(blank) + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (lines[i].length === 0) { continue } + if (lines[i][0] === '\t' || lines[i][0] === ' ') { + // folded header content + // RFC2822 says to just remove the CRLF and not the whitespace following + // it, so we follow the RFC and include the leading whitespace ... + if (h) { + this.header[h][this.header[h].length - 1] += lines[i] + continue } } - values.push(self.visit(child, node)) + const posColon = lines[i].indexOf(':') + if ( + posColon === -1 || + posColon === 0 + ) { + return + } + m = RE_HDR.exec(lines[i]) + h = m[1].toLowerCase() + this.header[h] = this.header[h] || [] + this.header[h].push((m[2] || '')) + if (++this.npairs === this.maxHeaderPairs) { break } } - - return values.join('') } +module.exports = HeaderParser + /***/ }), -/***/ 39978: +/***/ 612: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var compact = __nccwpck_require__(62608) - -module.exports = compile +const inherits = (__nccwpck_require__(7975).inherits) +const ReadableStream = (__nccwpck_require__(7075).Readable) -// Stringify the given tree. -function compile() { - return this.visit(compact(this.tree, this.options.commonmark)) +function PartStream (opts) { + ReadableStream.call(this, opts) } +inherits(PartStream, ReadableStream) + +PartStream.prototype._read = function (n) {} + +module.exports = PartStream /***/ }), -/***/ 19744: -/***/ ((module) => { +/***/ 4136: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = one - -function one(node, parent) { - var self = this - var visitors = self.visitors +/** + * Copyright Brian White. All rights reserved. + * + * @see https://github.com/mscdex/streamsearch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool + */ +const EventEmitter = (__nccwpck_require__(8474).EventEmitter) +const inherits = (__nccwpck_require__(7975).inherits) - // Fail on unknown nodes. - if (typeof visitors[node.type] !== 'function') { - self.file.fail( - new Error( - 'Missing compiler for node of type `' + node.type + '`: `' + node + '`' - ), - node - ) +function SBMH (needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle) } - return visitors[node.type].call(self, node, parent) -} - - -/***/ }), - -/***/ 71401: -/***/ ((module) => { - -"use strict"; + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.') + } + const needleLength = needle.length -module.exports = orderedItems + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.') + } -var lineFeed = '\n' -var dot = '.' + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.') + } -var blank = lineFeed + lineFeed + this.maxMatches = Infinity + this.matches = 0 -// Visit ordered list items. -// -// Starts the list with -// `node.start` and increments each following list item -// bullet by one: -// -// 2. foo -// 3. bar -// -// In `incrementListMarker: false` mode, does not increment -// each marker and stays on `node.start`: -// -// 1. foo -// 1. bar -function orderedItems(node) { - var self = this - var fn = self.visitors.listItem - var increment = self.options.incrementListMarker - var values = [] - var start = node.start - var children = node.children - var length = children.length - var index = -1 - var bullet + this._occ = new Array(256) + .fill(needleLength) // Initialize occurrence table. + this._lookbehind_size = 0 + this._needle = needle + this._bufpos = 0 - start = start == null ? 1 : start + this._lookbehind = Buffer.alloc(needleLength) - while (++index < length) { - bullet = (increment ? start + index : start) + dot - values[index] = fn.call(self, children[index], node, index, bullet) + // Populate occurrence table with analysis of the needle, + // ignoring last letter. + for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var + this._occ[needle[i]] = needleLength - 1 - i } - - return values.join(node.spread ? blank : lineFeed) } +inherits(SBMH, EventEmitter) +SBMH.prototype.reset = function () { + this._lookbehind_size = 0 + this.matches = 0 + this._bufpos = 0 +} -/***/ }), - -/***/ 367: -/***/ ((module) => { +SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary') + } + const chlen = chunk.length + this._bufpos = pos || 0 + let r + while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) } + return r +} -"use strict"; +SBMH.prototype._sbmh_feed = function (data) { + const len = data.length + const needle = this._needle + const needleLength = needle.length + const lastNeedleChar = needle[needleLength - 1] + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehind_size - 2] + let pos = -this._lookbehind_size + let ch -module.exports = unorderedItems + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1) -var lineFeed = '\n' + if ( + ch === lastNeedleChar && + this._sbmh_memcmp(data, pos, needleLength - 1) + ) { + this._lookbehind_size = 0 + ++this.matches + this.emit('info', true) -var blank = lineFeed + lineFeed + return (this._bufpos = pos + needleLength) + } + pos += this._occ[ch] + } -// Visit unordered list items. Uses `options.bullet` as each item’s bullet. -function unorderedItems(node) { - var self = this - var bullet = self.options.bullet - var fn = self.visitors.listItem - var children = node.children - var length = children.length - var index = -1 - var values = [] + // No match. - while (++index < length) { - values[index] = fn.call(self, children[index], node, index, bullet) - } + if (pos < 0) { + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos } + } - return values.join(node.spread ? blank : lineFeed) -} + if (pos >= 0) { + // Discard lookbehind buffer. + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size) + this._lookbehind_size = 0 + } else { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = this._lookbehind_size + pos + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + this.emit('info', false, this._lookbehind, 0, bytesToCutOff) + } + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, + this._lookbehind_size - bytesToCutOff) + this._lookbehind_size -= bytesToCutOff -/***/ }), + data.copy(this._lookbehind, this._lookbehind_size) + this._lookbehind_size += len -/***/ 17767: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this._bufpos = len + return len + } + } -"use strict"; + pos += (pos >= 0) * this._bufpos + // Lookbehind buffer is now empty. We only need to check if the + // needle is in the haystack. + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos) + ++this.matches + if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) } -var xtend = __nccwpck_require__(76738) -var encode = __nccwpck_require__(94405) -var defaults = __nccwpck_require__(12979) -var escapeFactory = __nccwpck_require__(28428) -var identity = __nccwpck_require__(80614) - -module.exports = setOptions - -// Map of applicable enums. -var maps = { - entities: {true: true, false: true, numbers: true, escape: true}, - bullet: {'*': true, '-': true, '+': true}, - rule: {'-': true, _: true, '*': true}, - listItemIndent: {tab: true, mixed: true, 1: true}, - emphasis: {_: true, '*': true}, - strong: {_: true, '*': true}, - fence: {'`': true, '~': true} -} - -// Expose `validate`. -var validate = { - boolean: validateBoolean, - string: validateString, - number: validateNumber, - function: validateFunction -} - -// Set options. Does not overwrite previously set options. -function setOptions(options) { - var self = this - var current = self.options - var ruleRepetition - var key - - if (options == null) { - options = {} - } else if (typeof options === 'object') { - options = xtend(options) + return (this._bufpos = pos + needleLength) } else { - throw new Error('Invalid value `' + options + '` for setting `options`') + pos = len - needleLength } - for (key in defaults) { - validate[typeof defaults[key]](options, key, current[key], maps[key]) + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while ( + pos < len && + ( + data[pos] !== needle[0] || + ( + (Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0) + ) + ) + ) { + ++pos } - - ruleRepetition = options.ruleRepetition - - if (ruleRepetition && ruleRepetition < 3) { - raise(ruleRepetition, 'options.ruleRepetition') + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)) + this._lookbehind_size = len - pos } - self.encode = encodeFactory(String(options.entities)) - self.escape = escapeFactory(options) - - self.options = options + // Everything until pos is guaranteed not to contain needle data. + if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) } - return self + this._bufpos = len + return len } -// Validate a value to be boolean. Defaults to `def`. Raises an exception with -// `context[name]` when not a boolean. -function validateBoolean(context, name, def) { - var value = context[name] - - if (value == null) { - value = def - } +SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return (pos < 0) + ? this._lookbehind[this._lookbehind_size + pos] + : data[pos] +} - if (typeof value !== 'boolean') { - raise(value, 'options.' + name) +SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false } } - - context[name] = value + return true } -// Validate a value to be boolean. Defaults to `def`. Raises an exception with -// `context[name]` when not a boolean. -function validateNumber(context, name, def) { - var value = context[name] - - if (value == null) { - value = def - } +module.exports = SBMH - if (isNaN(value)) { - raise(value, 'options.' + name) - } - context[name] = value -} +/***/ }), -// Validate a value to be in `map`. Defaults to `def`. Raises an exception -// with `context[name]` when not in `map`. -function validateString(context, name, def, map) { - var value = context[name] +/***/ 9581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (value == null) { - value = def - } +"use strict"; - value = String(value) - if (!(value in map)) { - raise(value, 'options.' + name) - } +const WritableStream = (__nccwpck_require__(7075).Writable) +const { inherits } = __nccwpck_require__(7975) +const Dicer = __nccwpck_require__(7182) - context[name] = value -} +const MultipartParser = __nccwpck_require__(1192) +const UrlencodedParser = __nccwpck_require__(855) +const parseParams = __nccwpck_require__(8929) -// Validate a value to be function. Defaults to `def`. Raises an exception -// with `context[name]` when not a function. -function validateFunction(context, name, def) { - var value = context[name] +function Busboy (opts) { + if (!(this instanceof Busboy)) { return new Busboy(opts) } - if (value == null) { - value = def + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.') + } + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.') + } + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.') } - if (typeof value !== 'function') { - raise(value, 'options.' + name) + const { + headers, + ...streamOptions + } = opts + + this.opts = { + autoDestroy: false, + ...streamOptions } + WritableStream.call(this, this.opts) - context[name] = value + this._done = false + this._parser = this.getParserByHeaders(headers) + this._finished = false } +inherits(Busboy, WritableStream) -// Factory to encode HTML entities. Creates a no-operation function when -// `type` is `'false'`, a function which encodes using named references when -// `type` is `'true'`, and a function which encodes using numbered references -// when `type` is `'numbers'`. -function encodeFactory(type) { - var options = {} - - if (type === 'false') { - return identity +Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + this._parser?.end() + return + } else if (this._finished) { + return + } + this._finished = true } + WritableStream.prototype.emit.apply(this, arguments) +} - if (type === 'true') { - options.useNamedReferences = true - } +Busboy.prototype.getParserByHeaders = function (headers) { + const parsed = parseParams(headers['content-type']) - if (type === 'escape') { - options.escapeOnly = true - options.useNamedReferences = true + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath } - return wrapped - - // Encode HTML entities using the bound options. - function wrapped(value) { - return encode(value, options) + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg) + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg) } + throw new Error('Unsupported Content-Type.') } -// Throw an exception with in its `message` `value` and `name`. -function raise(value, name) { - throw new Error('Invalid value `' + value + '` for setting `' + name + '`') +Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb) } +module.exports = Busboy +module.exports["default"] = Busboy +module.exports.Busboy = Busboy + +module.exports.Dicer = Dicer + /***/ }), -/***/ 88864: +/***/ 1192: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var entityPrefixLength = __nccwpck_require__(30876) - -module.exports = copy - -var ampersand = '&' - -var punctuationExppresion = /[-!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~_]/ - -// For shortcut and collapsed reference links, the contents is also an -// identifier, so we need to restore the original encoding and escaping -// that were present in the source string. -// -// This function takes the unescaped & unencoded value from shortcut’s -// child nodes and the identifier and encodes the former according to -// the latter. -function copy(value, identifier) { - var length = value.length - var count = identifier.length - var result = [] - var position = 0 - var index = 0 - var start - - while (index < length) { - // Take next non-punctuation characters from `value`. - start = index - - while (index < length && !punctuationExppresion.test(value.charAt(index))) { - index += 1 - } - - result.push(value.slice(start, index)) - - // Advance `position` to the next punctuation character. - while ( - position < count && - !punctuationExppresion.test(identifier.charAt(position)) - ) { - position += 1 - } - - // Take next punctuation characters from `identifier`. - start = position - - while ( - position < count && - punctuationExppresion.test(identifier.charAt(position)) - ) { - if (identifier.charAt(position) === ampersand) { - position += entityPrefixLength(identifier.slice(position)) - } - - position += 1 - } - - result.push(identifier.slice(start, position)) - - // Advance `index` to the next non-punctuation character. - while (index < length && punctuationExppresion.test(value.charAt(index))) { - index += 1 +// TODO: +// * support 1 nested multipart level +// (see second multipart example here: +// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) +// * support limits.fieldNameSize +// -- this will require modifications to utils.parseParams + +const { Readable } = __nccwpck_require__(7075) +const { inherits } = __nccwpck_require__(7975) + +const Dicer = __nccwpck_require__(7182) + +const parseParams = __nccwpck_require__(8929) +const decodeText = __nccwpck_require__(2747) +const basename = __nccwpck_require__(692) +const getLimit = __nccwpck_require__(2393) + +const RE_BOUNDARY = /^boundary$/i +const RE_FIELD = /^form-data$/i +const RE_CHARSET = /^charset$/i +const RE_FILENAME = /^filename$/i +const RE_NAME = /^name$/i + +Multipart.detect = /^multipart\/form-data/i +function Multipart (boy, cfg) { + let i + let len + const self = this + let boundary + const limits = cfg.limits + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)) + const parsedConType = cfg.parsedConType || [] + const defCharset = cfg.defCharset || 'utf8' + const preservePath = cfg.preservePath + const fileOpts = { highWaterMark: cfg.fileHwm } + + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && + RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1] + break } } - return result.join('') -} - + function checkFinished () { + if (nends === 0 && finished && !boy._done) { + finished = false + self.end() + } + } + + if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') } + + const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + const fileSizeLimit = getLimit(limits, 'fileSize', Infinity) + const filesLimit = getLimit(limits, 'files', Infinity) + const fieldsLimit = getLimit(limits, 'fields', Infinity) + const partsLimit = getLimit(limits, 'parts', Infinity) + const headerPairsLimit = getLimit(limits, 'headerPairs', 2000) + const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024) + + let nfiles = 0 + let nfields = 0 + let nends = 0 + let curFile + let curField + let finished = false + + this._needDrain = false + this._pause = false + this._cb = undefined + this._nparts = 0 + this._boy = boy + + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + } + + this.parser = new Dicer(parserCfg) + this.parser.on('drain', function () { + self._needDrain = false + if (self._cb && !self._pause) { + const cb = self._cb + self._cb = undefined + cb() + } + }).on('part', function onPart (part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart) + self.parser.on('part', skipPart) + boy.hitPartsLimit = true + boy.emit('partsLimit') + return skipPart(part) + } + + // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let + // us emit 'end' early since we know the part has ended if we are already + // seeing the next part + if (curField) { + const field = curField + field.emit('end') + field.removeAllListeners('end') + } + + part.on('header', function (header) { + let contype + let fieldname + let parsed + let charset + let encoding + let filename + let nsize = 0 + + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]) + if (parsed[0]) { + contype = parsed[0].toLowerCase() + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase() + break + } + } + } + } -/***/ }), + if (contype === undefined) { contype = 'text/plain' } + if (charset === undefined) { charset = defCharset } -/***/ 45917: -/***/ ((module) => { + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]) + if (!RE_FIELD.test(parsed[0])) { return skipPart(part) } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1] + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1] + if (!preservePath) { filename = basename(filename) } + } + } + } else { return skipPart(part) } -"use strict"; + if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' } + let onData, + onEnd -module.exports = enclose + if (isPartAFile(fieldname, contype, filename)) { + // file/binary field + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true + boy.emit('filesLimit') + } + return skipPart(part) + } -var quotationMark = '"' -var apostrophe = "'" + ++nfiles -// There is currently no way to support nested delimiters across Markdown.pl, -// CommonMark, and GitHub (RedCarpet). The following code supports Markdown.pl -// and GitHub. -// CommonMark is not supported when mixing double- and single quotes inside a -// title. -function enclose(title) { - var delimiter = - title.indexOf(quotationMark) === -1 ? quotationMark : apostrophe - return delimiter + title + delimiter -} + if (boy.listenerCount('file') === 0) { + self.parser._ignore() + return + } + ++nends + const file = new FileStream(fileOpts) + curFile = file + file.on('end', function () { + --nends + self._pause = false + checkFinished() + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + }) + file._read = function (n) { + if (!self._pause) { return } + self._pause = false + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + } + boy.emit('file', fieldname, file, filename, encoding, contype) -/***/ }), + onData = function (data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length + if (extralen > 0) { file.push(data.slice(0, extralen)) } + file.truncated = true + file.bytesRead = fileSizeLimit + part.removeAllListeners('data') + file.emit('limit') + return + } else if (!file.push(data)) { self._pause = true } -/***/ 71490: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + file.bytesRead = nsize + } -"use strict"; + onEnd = function () { + curFile = undefined + file.push(null) + } + } else { + // non-file field + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true + boy.emit('fieldsLimit') + } + return skipPart(part) + } + ++nfields + ++nends + let buffer = '' + let truncated = false + curField = part -var count = __nccwpck_require__(33772) + onData = function (data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = (fieldSizeLimit - (nsize - data.length)) + buffer += data.toString('binary', 0, extralen) + truncated = true + part.removeAllListeners('data') + } else { buffer += data.toString('binary') } + } -module.exports = enclose + onEnd = function () { + curField = undefined + if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype) + --nends + checkFinished() + } + } -var leftParenthesis = '(' -var rightParenthesis = ')' -var lessThan = '<' -var greaterThan = '>' + /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become + broken. Streams2/streams3 is a huge black box of confusion, but + somehow overriding the sync state seems to fix things again (and still + seems to work for previous node versions). + */ + part._readableState.sync = false -var expression = /\s/ + part.on('data', onData) + part.on('end', onEnd) + }).on('error', function (err) { + if (curFile) { curFile.emit('error', err) } + }) + }).on('error', function (err) { + boy.emit('error', err) + }).on('finish', function () { + finished = true + checkFinished() + }) +} -// Wrap `url` in angle brackets when needed, or when -// forced. -// In links, images, and definitions, the URL part needs -// to be enclosed when it: -// -// - has a length of `0` -// - contains white-space -// - has more or less opening than closing parentheses -function enclose(uri, always) { - if ( - always || - uri.length === 0 || - expression.test(uri) || - count(uri, leftParenthesis) !== count(uri, rightParenthesis) - ) { - return lessThan + uri + greaterThan +Multipart.prototype.write = function (chunk, cb) { + const r = this.parser.write(chunk) + if (r && !this._pause) { + cb() + } else { + this._needDrain = !r + this._cb = cb } - - return uri } +Multipart.prototype.end = function () { + const self = this -/***/ }), - -/***/ 78425: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var identity = __nccwpck_require__(80614) + if (self.parser.writable) { + self.parser.end() + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true + self._boy.emit('finish') + }) + } +} -module.exports = enter +function skipPart (part) { + part.resume() +} -// Shortcut and collapsed link references need no escaping and encoding during -// the processing of child nodes (it must be implied from identifier). -// -// This toggler turns encoding and escaping off for shortcut and collapsed -// references. -// -// Implies `enterLink`. -function enter(compiler, node) { - var encode = compiler.encode - var escape = compiler.escape - var exitLink = compiler.enterLink() +function FileStream (opts) { + Readable.call(this, opts) - if (node.referenceType !== 'shortcut' && node.referenceType !== 'collapsed') { - return exitLink - } + this.bytesRead = 0 - compiler.escape = identity - compiler.encode = identity + this.truncated = false +} - return exit +inherits(FileStream, Readable) - function exit() { - compiler.encode = encode - compiler.escape = escape - exitLink() - } -} +FileStream.prototype._read = function (n) {} + +module.exports = Multipart /***/ }), -/***/ 30876: +/***/ 855: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var decode = __nccwpck_require__(81085) +const Decoder = __nccwpck_require__(1496) +const decodeText = __nccwpck_require__(2747) +const getLimit = __nccwpck_require__(2393) -module.exports = length +const RE_CHARSET = /^charset$/i -var ampersand = '&' +UrlEncoded.detect = /^application\/x-www-form-urlencoded/i +function UrlEncoded (boy, cfg) { + const limits = cfg.limits + const parsedConType = cfg.parsedConType + this.boy = boy -// Returns the length of HTML entity that is a prefix of the given string -// (excluding the ampersand), 0 if it does not start with an entity. -function length(value) { - var prefix + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100) + this.fieldsLimit = getLimit(limits, 'fields', Infinity) - /* istanbul ignore if - Currently also tested for at implemention, but we - * keep it here because that’s proper. */ - if (value.charAt(0) !== ampersand) { - return 0 + let charset + for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var + if (Array.isArray(parsedConType[i]) && + RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase() + break + } } - prefix = value.split(ampersand, 2).join(ampersand) + if (charset === undefined) { charset = cfg.defCharset || 'utf8' } - return prefix.length - decode(prefix).length + this.decoder = new Decoder() + this.charset = charset + this._fields = 0 + this._state = 'key' + this._checkingBytes = true + this._bytesKey = 0 + this._bytesVal = 0 + this._key = '' + this._val = '' + this._keyTrunc = false + this._valTrunc = false + this._hitLimit = false } +UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true + this.boy.emit('fieldsLimit') + } + return cb() + } -/***/ }), - -/***/ 80614: -/***/ ((module) => { - -"use strict"; + let idxeq; let idxamp; let i; let p = 0; const len = data.length + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x3D/* = */) { + idxeq = i + break + } else if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesKey } + } + + if (idxeq !== undefined) { + // key with assignment + if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) } + this._state = 'val' + + this._hitLimit = false + this._checkingBytes = true + this._val = '' + this._bytesVal = 0 + this._valTrunc = false + this.decoder.reset() + + p = idxeq + 1 + } else if (idxamp !== undefined) { + // key with no assignment + ++this._fields + let key; const keyTrunc = this._keyTrunc + if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key } + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), + '', + keyTrunc, + false) + } + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._keyTrunc = true + } + } else { + if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) } + p = len + } + } else { + idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesVal } + } + + if (idxamp !== undefined) { + ++this._fields + if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) } + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + this._state = 'key' + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._val === '' && this.fieldSizeLimit === 0) || + (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._valTrunc = true + } + } else { + if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) } + p = len + } + } + } + cb() +} -module.exports = identity +UrlEncoded.prototype.end = function () { + if (this.boy._done) { return } -function identity(value) { - return value + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + '', + this._keyTrunc, + false) + } else if (this._state === 'val') { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + } + this.boy._done = true + this.boy.emit('finish') } +module.exports = UrlEncoded + /***/ }), -/***/ 99872: +/***/ 1496: /***/ ((module) => { "use strict"; -module.exports = label +const RE_PLUS = /\+/g -var leftSquareBracket = '[' -var rightSquareBracket = ']' - -var shortcut = 'shortcut' -var collapsed = 'collapsed' - -// Stringify a reference label. -// Because link references are easily, mistakingly, created (for example, -// `[foo]`), reference nodes have an extra property depicting how it looked in -// the original document, so stringification can cause minimal changes. -function label(node) { - var type = node.referenceType +const HEX = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +] - if (type === shortcut) { - return '' +function Decoder () { + this.buffer = undefined +} +Decoder.prototype.write = function (str) { + // Replace '+' with ' ' before decoding + str = str.replace(RE_PLUS, ' ') + let res = '' + let i = 0; let p = 0; const len = str.length + for (; i < len; ++i) { + if (this.buffer !== undefined) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer + this.buffer = undefined + --i // retry character + } else { + this.buffer += str[i] + ++p + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)) + this.buffer = undefined + } + } + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i) + p = i + } + this.buffer = '' + ++p + } } - - return ( - leftSquareBracket + - (type === collapsed ? '' : node.label || node.identifier) + - rightSquareBracket - ) + if (p < len && this.buffer === undefined) { res += str.substring(p) } + return res +} +Decoder.prototype.reset = function () { + this.buffer = undefined } +module.exports = Decoder + /***/ }), -/***/ 13203: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 692: +/***/ ((module) => { "use strict"; -var repeat = __nccwpck_require__(69626) - -module.exports = pad - -var lineFeed = '\n' -var space = ' ' - -var tabSize = 4 - -// Pad `value` with `level * tabSize` spaces. Respects lines. Ignores empty -// lines. -function pad(value, level) { - var values = value.split(lineFeed) - var index = values.length - var padding = repeat(space, level * tabSize) - - while (index--) { - if (values[index].length !== 0) { - values[index] = padding + values[index] +module.exports = function basename (path) { + if (typeof path !== 'string') { return '' } + for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1) + return (path === '..' || path === '.' ? '' : path) } } - - return values.join(lineFeed) + return (path === '..' || path === '.' ? '' : path) } /***/ }), -/***/ 91296: -/***/ ((module) => { +/***/ 2747: +/***/ (function(module) { "use strict"; -module.exports = blockquote +// Node has always utf-8 +const utf8Decoder = new TextDecoder('utf-8') +const textDecoders = new Map([ + ['utf-8', utf8Decoder], + ['utf8', utf8Decoder] +]) + +function getDecoder (charset) { + let lc + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8 + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1 + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le + case 'base64': + return decoders.base64 + default: + if (lc === undefined) { + lc = true + charset = charset.toLowerCase() + continue + } + return decoders.other.bind(charset) + } + } +} + +const decoders = { + utf8: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.utf8Slice(0, data.length) + }, + + latin1: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + return data + } + return data.latin1Slice(0, data.length) + }, + + utf16le: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.ucs2Slice(0, data.length) + }, -var lineFeed = '\n' -var space = ' ' -var greaterThan = '>' + base64: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.base64Slice(0, data.length) + }, -function blockquote(node) { - var values = this.block(node).split(lineFeed) - var result = [] - var length = values.length - var index = -1 - var value + other: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } - while (++index < length) { - value = values[index] - result[index] = (value ? space : '') + value + if (textDecoders.has(this.toString())) { + try { + return textDecoders.get(this).decode(data) + } catch {} + } + return typeof data === 'string' + ? data + : data.toString() } +} - return greaterThan + result.join(lineFeed + greaterThan) +function decodeText (text, sourceEncoding, destEncoding) { + if (text) { + return getDecoder(destEncoding)(text, sourceEncoding) + } + return text } +module.exports = decodeText + /***/ }), -/***/ 52505: +/***/ 2393: /***/ ((module) => { "use strict"; -module.exports = lineBreak - -var backslash = '\\' -var lineFeed = '\n' -var space = ' ' +module.exports = function getLimit (limits, name, defaultLimit) { + if ( + !limits || + limits[name] === undefined || + limits[name] === null + ) { return defaultLimit } -var commonmark = backslash + lineFeed -var normal = space + space + lineFeed + if ( + typeof limits[name] !== 'number' || + isNaN(limits[name]) + ) { throw new TypeError('Limit ' + name + ' is not a valid number') } -function lineBreak() { - return this.options.commonmark ? commonmark : normal + return limits[name] } /***/ }), -/***/ 69279: +/***/ 8929: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; - - -var streak = __nccwpck_require__(18697) -var repeat = __nccwpck_require__(69626) -var pad = __nccwpck_require__(13203) - -module.exports = code - -var lineFeed = '\n' -var space = ' ' -var tilde = '~' -var graveAccent = '`' - -// Stringify code. -// Creates indented code when: -// -// - No language tag exists -// - Not in `fences: true` mode -// - A non-empty value exists -// -// Otherwise, GFM fenced code is created: -// -// ````markdown -// ```js -// foo(); -// ``` -// ```` -// -// When in ``fence: `~` `` mode, uses tildes as fences: -// -// ```markdown -// ~~~js -// foo(); -// ~~~ -// ``` -// -// Knows about internal fences: -// -// `````markdown -// ````markdown -// ```javascript -// foo(); -// ``` -// ```` -// ````` -function code(node, parent) { - var self = this - var value = node.value - var options = self.options - var marker = options.fence - var info = node.lang || '' - var fence - - if (info && node.meta) { - info += space + node.meta - } - - info = self.encode(self.escape(info, node)) - - // Without (needed) fences. - if ( - !info && - !options.fences && - value && - value.charAt(0) !== lineFeed && - value.charAt(value.length - 1) !== lineFeed - ) { - // Throw when pedantic, in a list item which isn’t compiled using a tab. - if ( - parent && - parent.type === 'listItem' && - options.listItemIndent !== 'tab' && - options.pedantic - ) { - self.file.fail( - 'Cannot indent code properly. See https://git.io/fxKR8', - node.position - ) +/* eslint-disable object-property-newline */ + + +const decodeText = __nccwpck_require__(2747) + +const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g + +const EncodedLookup = { + '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04', + '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09', + '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c', + '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e', + '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12', + '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17', + '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b', + '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d', + '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20', + '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25', + '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a', + '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c', + '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f', + '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33', + '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38', + '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b', + '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e', + '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41', + '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46', + '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a', + '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d', + '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f', + '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54', + '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59', + '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c', + '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e', + '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62', + '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67', + '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b', + '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d', + '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70', + '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75', + '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a', + '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c', + '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f', + '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83', + '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88', + '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b', + '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e', + '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91', + '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96', + '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a', + '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d', + '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f', + '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2', + '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4', + '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7', + '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9', + '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab', + '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac', + '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad', + '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae', + '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0', + '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2', + '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5', + '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7', + '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba', + '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb', + '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc', + '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd', + '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf', + '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0', + '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3', + '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5', + '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8', + '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca', + '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb', + '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc', + '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce', + '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf', + '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1', + '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3', + '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6', + '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8', + '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda', + '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb', + '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd', + '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde', + '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf', + '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1', + '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4', + '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6', + '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9', + '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea', + '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec', + '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed', + '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee', + '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef', + '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2', + '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4', + '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7', + '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9', + '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb', + '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc', + '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd', + '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe', + '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff' +} + +function encodedReplacer (match) { + return EncodedLookup[match] +} + +const STATE_KEY = 0 +const STATE_VALUE = 1 +const STATE_CHARSET = 2 +const STATE_LANG = 3 + +function parseParams (str) { + const res = [] + let state = STATE_KEY + let charset = '' + let inquote = false + let escaping = false + let p = 0 + let tmp = '' + const len = str.length + + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + const char = str[i] + if (char === '\\' && inquote) { + if (escaping) { escaping = false } else { + escaping = true + continue + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false + state = STATE_KEY + } else { inquote = true } + continue + } else { escaping = false } + } else { + if (escaping && inquote) { tmp += '\\' } + escaping = false + if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { + if (state === STATE_CHARSET) { + state = STATE_LANG + charset = tmp.substring(1) + } else { state = STATE_VALUE } + tmp = '' + continue + } else if (state === STATE_KEY && + (char === '*' || char === '=') && + res.length) { + state = char === '*' + ? STATE_CHARSET + : STATE_VALUE + res[p] = [tmp, undefined] + tmp = '' + continue + } else if (!inquote && char === ';') { + state = STATE_KEY + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } + charset = '' + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp } + tmp = '' + ++p + continue + } else if (!inquote && (char === ' ' || char === '\t')) { continue } } - - return pad(value, 1) + tmp += char } - - // Backticks in the info string don’t work with backtick fenced code. - // Backticks (and tildes) are fine in tilde fenced code. - if (marker === graveAccent && info.indexOf(graveAccent) !== -1) { - marker = tilde + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8') } - fence = repeat(marker, Math.max(streak(value, marker) + 1, 3)) + if (res[p] === undefined) { + if (tmp) { res[p] = tmp } + } else { res[p][1] = tmp } - return fence + info + lineFeed + value + lineFeed + fence + return res } +module.exports = parseParams -/***/ }), -/***/ 82838: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ }) +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __nccwpck_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __nccwpck_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __nccwpck_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __nccwpck_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { "use strict"; +// NAMESPACE OBJECT: ./node_modules/micromark/lib/constructs.js +var constructs_namespaceObject = {}; +__nccwpck_require__.r(constructs_namespaceObject); +__nccwpck_require__.d(constructs_namespaceObject, { + attentionMarkers: () => (attentionMarkers), + contentInitial: () => (contentInitial), + disable: () => (disable), + document: () => (constructs_document), + flow: () => (constructs_flow), + flowInitial: () => (flowInitial), + insideSpan: () => (insideSpan), + string: () => (constructs_string), + text: () => (constructs_text) +}); -var uri = __nccwpck_require__(71490) -var title = __nccwpck_require__(45917) +// EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js +var lib_core = __nccwpck_require__(7484); +// EXTERNAL MODULE: external "fs" +var external_fs_ = __nccwpck_require__(9896); +// EXTERNAL MODULE: external "path" +var external_path_ = __nccwpck_require__(6928); +// EXTERNAL MODULE: ./node_modules/klaw-sync/klaw-sync.js +var klaw_sync = __nccwpck_require__(1628); +var klaw_sync_default = /*#__PURE__*/__nccwpck_require__.n(klaw_sync); +// EXTERNAL MODULE: ./node_modules/gray-matter/index.js +var gray_matter = __nccwpck_require__(9599); +var gray_matter_default = /*#__PURE__*/__nccwpck_require__.n(gray_matter); +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-string/lib/index.js +/** + * @typedef {import('mdast').Nodes} Nodes + * + * @typedef Options + * Configuration (optional). + * @property {boolean | null | undefined} [includeImageAlt=true] + * Whether to use `alt` for `image`s (default: `true`). + * @property {boolean | null | undefined} [includeHtml=true] + * Whether to use `value` of HTML (default: `true`). + */ -module.exports = definition +/** @type {Options} */ +const emptyOptions = {} -var space = ' ' -var colon = ':' -var leftSquareBracket = '[' -var rightSquareBracket = ']' +/** + * Get the text content of a node or list of nodes. + * + * Prefers the node’s plain-text fields, otherwise serializes its children, + * and if the given value is an array, serialize the nodes in it. + * + * @param {unknown} [value] + * Thing to serialize, typically `Node`. + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {string} + * Serialized `value`. + */ +function lib_toString(value, options) { + const settings = options || emptyOptions + const includeImageAlt = + typeof settings.includeImageAlt === 'boolean' + ? settings.includeImageAlt + : true + const includeHtml = + typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true -// Stringify an URL definition. -// -// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see -// `encloseTitle()`). -// -// ```markdown -// [foo]: <foo at bar dot com> 'An "example" e-mail' -// ``` -function definition(node) { - var content = uri(node.url) + return one(value, includeImageAlt, includeHtml) +} - if (node.title) { - content += space + title(node.title) +/** + * One node or several nodes. + * + * @param {unknown} value + * Thing to serialize. + * @param {boolean} includeImageAlt + * Include image `alt`s. + * @param {boolean} includeHtml + * Include HTML. + * @returns {string} + * Serialized node. + */ +function one(value, includeImageAlt, includeHtml) { + if (node(value)) { + if ('value' in value) { + return value.type === 'html' && !includeHtml ? '' : value.value + } + + if (includeImageAlt && 'alt' in value && value.alt) { + return value.alt + } + + if ('children' in value) { + return lib_all(value.children, includeImageAlt, includeHtml) + } } - return ( - leftSquareBracket + - (node.label || node.identifier) + - rightSquareBracket + - colon + - space + - content - ) + if (Array.isArray(value)) { + return lib_all(value, includeImageAlt, includeHtml) + } + + return '' } +/** + * Serialize a list of nodes. + * + * @param {Array<unknown>} values + * Thing to serialize. + * @param {boolean} includeImageAlt + * Include image `alt`s. + * @param {boolean} includeHtml + * Include HTML. + * @returns {string} + * Serialized nodes. + */ +function lib_all(values, includeImageAlt, includeHtml) { + /** @type {Array<string>} */ + const result = [] + let index = -1 -/***/ }), + while (++index < values.length) { + result[index] = one(values[index], includeImageAlt, includeHtml) + } -/***/ 26808: -/***/ ((module) => { + return result.join('') +} -"use strict"; +/** + * Check if `value` looks like a node. + * + * @param {unknown} value + * Thing. + * @returns {value is Nodes} + * Whether `value` is a node. + */ +function node(value) { + return Boolean(value && typeof value === 'object') +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-chunked/index.js +/** + * Like `Array#splice`, but smarter for giant arrays. + * + * `Array#splice` takes all items to be inserted as individual argument which + * causes a stack overflow in V8 when trying to insert 100k items for instance. + * + * Otherwise, this does not return the removed items, and takes `items` as an + * array instead of rest parameters. + * + * @template {unknown} T + * Item type. + * @param {Array<T>} list + * List to operate on. + * @param {number} start + * Index to remove/insert at (can be negative). + * @param {number} remove + * Number of items to remove. + * @param {Array<T>} items + * Items to inject into `list`. + * @returns {undefined} + * Nothing. + */ +function splice(list, start, remove, items) { + const end = list.length; + let chunkStart = 0; + /** @type {Array<unknown>} */ + let parameters; + + // Make start between zero and `end` (included). + if (start < 0) { + start = -start > end ? 0 : end + start; + } else { + start = start > end ? end : start; + } + remove = remove > 0 ? remove : 0; -module.exports = strikethrough + // No need to chunk the items if there’s only a couple (10k) items. + if (items.length < 10000) { + parameters = Array.from(items); + parameters.unshift(start, remove); + // @ts-expect-error Hush, it’s fine. + list.splice(...parameters); + } else { + // Delete `remove` items starting from `start` + if (remove) list.splice(start, remove); -var tilde = '~' + // Insert the items in chunks to not cause stack overflows. + while (chunkStart < items.length) { + parameters = items.slice(chunkStart, chunkStart + 10000); + parameters.unshift(start, 0); + // @ts-expect-error Hush, it’s fine. + list.splice(...parameters); + chunkStart += 10000; + start += 10000; + } + } +} -var fence = tilde + tilde +/** + * Append `items` (an array) at the end of `list` (another array). + * When `list` was empty, returns `items` instead. + * + * This prevents a potentially expensive operation when `list` is empty, + * and adds items in batches to prevent V8 from hanging. + * + * @template {unknown} T + * Item type. + * @param {Array<T>} list + * List to operate on. + * @param {Array<T>} items + * Items to add to `list`. + * @returns {Array<T>} + * Either `list` or `items`. + */ +function push(list, items) { + if (list.length > 0) { + splice(list, list.length, 0, items); + return list; + } + return items; +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-subtokenize/lib/splice-buffer.js +/** + * Some of the internal operations of micromark do lots of editing + * operations on very large arrays. This runs into problems with two + * properties of most circa-2020 JavaScript interpreters: + * + * - Array-length modifications at the high end of an array (push/pop) are + * expected to be common and are implemented in (amortized) time + * proportional to the number of elements added or removed, whereas + * other operations (shift/unshift and splice) are much less efficient. + * - Function arguments are passed on the stack, so adding tens of thousands + * of elements to an array with `arr.push(...newElements)` will frequently + * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>) + * + * SpliceBuffers are an implementation of gap buffers, which are a + * generalization of the "queue made of two stacks" idea. The splice buffer + * maintains a cursor, and moving the cursor has cost proportional to the + * distance the cursor moves, but inserting, deleting, or splicing in + * new information at the cursor is as efficient as the push/pop operation. + * This allows for an efficient sequence of splices (or pushes, pops, shifts, + * or unshifts) as long such edits happen at the same part of the array or + * generally sweep through the array from the beginning to the end. + * + * The interface for splice buffers also supports large numbers of inputs by + * passing a single array argument rather passing multiple arguments on the + * function call stack. + * + * @template T + * Item type. + */ +class SpliceBuffer { + /** + * @param {ReadonlyArray<T> | null | undefined} [initial] + * Initial items (optional). + * @returns + * Splice buffer. + */ + constructor(initial) { + /** @type {Array<T>} */ + this.left = initial ? [...initial] : []; + /** @type {Array<T>} */ + this.right = []; + } + + /** + * Array access; + * does not move the cursor. + * + * @param {number} index + * Index. + * @return {T} + * Item. + */ + get(index) { + if (index < 0 || index >= this.left.length + this.right.length) { + throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`'); + } + if (index < this.left.length) return this.left[index]; + return this.right[this.right.length - index + this.left.length - 1]; + } + + /** + * The length of the splice buffer, one greater than the largest index in the + * array. + */ + get length() { + return this.left.length + this.right.length; + } + + /** + * Remove and return `list[0]`; + * moves the cursor to `0`. + * + * @returns {T | undefined} + * Item, optional. + */ + shift() { + this.setCursor(0); + return this.right.pop(); + } + + /** + * Slice the buffer to get an array; + * does not move the cursor. + * + * @param {number} start + * Start. + * @param {number | null | undefined} [end] + * End (optional). + * @returns {Array<T>} + * Array of items. + */ + slice(start, end) { + /** @type {number} */ + const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end; + if (stop < this.left.length) { + return this.left.slice(start, stop); + } + if (start > this.left.length) { + return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse(); + } + return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse()); + } + + /** + * Mimics the behavior of Array.prototype.splice() except for the change of + * interface necessary to avoid segfaults when patching in very large arrays. + * + * This operation moves cursor is moved to `start` and results in the cursor + * placed after any inserted items. + * + * @param {number} start + * Start; + * zero-based index at which to start changing the array; + * negative numbers count backwards from the end of the array and values + * that are out-of bounds are clamped to the appropriate end of the array. + * @param {number | null | undefined} [deleteCount=0] + * Delete count (default: `0`); + * maximum number of elements to delete, starting from start. + * @param {Array<T> | null | undefined} [items=[]] + * Items to include in place of the deleted items (default: `[]`). + * @return {Array<T>} + * Any removed items. + */ + splice(start, deleteCount, items) { + /** @type {number} */ + const count = deleteCount || 0; + this.setCursor(Math.trunc(start)); + const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY); + if (items) chunkedPush(this.left, items); + return removed.reverse(); + } + + /** + * Remove and return the highest-numbered item in the array, so + * `list[list.length - 1]`; + * Moves the cursor to `length`. + * + * @returns {T | undefined} + * Item, optional. + */ + pop() { + this.setCursor(Number.POSITIVE_INFINITY); + return this.left.pop(); + } + + /** + * Inserts a single item to the high-numbered side of the array; + * moves the cursor to `length`. + * + * @param {T} item + * Item. + * @returns {undefined} + * Nothing. + */ + push(item) { + this.setCursor(Number.POSITIVE_INFINITY); + this.left.push(item); + } + + /** + * Inserts many items to the high-numbered side of the array. + * Moves the cursor to `length`. + * + * @param {Array<T>} items + * Items. + * @returns {undefined} + * Nothing. + */ + pushMany(items) { + this.setCursor(Number.POSITIVE_INFINITY); + chunkedPush(this.left, items); + } + + /** + * Inserts a single item to the low-numbered side of the array; + * Moves the cursor to `0`. + * + * @param {T} item + * Item. + * @returns {undefined} + * Nothing. + */ + unshift(item) { + this.setCursor(0); + this.right.push(item); + } + + /** + * Inserts many items to the low-numbered side of the array; + * moves the cursor to `0`. + * + * @param {Array<T>} items + * Items. + * @returns {undefined} + * Nothing. + */ + unshiftMany(items) { + this.setCursor(0); + chunkedPush(this.right, items.reverse()); + } + + /** + * Move the cursor to a specific position in the array. Requires + * time proportional to the distance moved. + * + * If `n < 0`, the cursor will end up at the beginning. + * If `n > length`, the cursor will end up at the end. + * + * @param {number} n + * Position. + * @return {undefined} + * Nothing. + */ + setCursor(n) { + if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return; + if (n < this.left.length) { + // Move cursor to the this.left + const removed = this.left.splice(n, Number.POSITIVE_INFINITY); + chunkedPush(this.right, removed.reverse()); + } else { + // Move cursor to the this.right + const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY); + chunkedPush(this.left, removed.reverse()); + } + } +} -function strikethrough(node) { - return fence + this.all(node).join('') + fence +/** + * Avoid stack overflow by pushing items onto the stack in segments + * + * @template T + * Item type. + * @param {Array<T>} list + * List to inject into. + * @param {ReadonlyArray<T>} right + * Items to inject. + * @return {undefined} + * Nothing. + */ +function chunkedPush(list, right) { + /** @type {number} */ + let chunkStart = 0; + if (right.length < 10000) { + list.push(...right); + } else { + while (chunkStart < right.length) { + list.push(...right.slice(chunkStart, chunkStart + 10000)); + chunkStart += 10000; + } + } } +;// CONCATENATED MODULE: ./node_modules/micromark-util-subtokenize/index.js +/** + * @import {Chunk, Event, Token} from 'micromark-util-types' + */ -/***/ }), -/***/ 60250: -/***/ ((module) => { -"use strict"; +// Hidden API exposed for testing. -module.exports = emphasis +/** + * Tokenize subcontent. + * + * @param {Array<Event>} eventsArray + * List of events. + * @returns {boolean} + * Whether subtokens were found. + */ +// eslint-disable-next-line complexity +function subtokenize(eventsArray) { + /** @type {Record<string, number>} */ + const jumps = {}; + let index = -1; + /** @type {Event} */ + let event; + /** @type {number | undefined} */ + let lineIndex; + /** @type {number} */ + let otherIndex; + /** @type {Event} */ + let otherEvent; + /** @type {Array<Event>} */ + let parameters; + /** @type {Array<Event>} */ + let subevents; + /** @type {boolean | undefined} */ + let more; + const events = new SpliceBuffer(eventsArray); + while (++index < events.length) { + while (index in jumps) { + index = jumps[index]; + } + event = events.get(index); + + // Add a hook for the GFM tasklist extension, which needs to know if text + // is in the first content of a list item. + if (index && event[1].type === "chunkFlow" && events.get(index - 1)[1].type === "listItemPrefix") { + subevents = event[1]._tokenizer.events; + otherIndex = 0; + if (otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank") { + otherIndex += 2; + } + if (otherIndex < subevents.length && subevents[otherIndex][1].type === "content") { + while (++otherIndex < subevents.length) { + if (subevents[otherIndex][1].type === "content") { + break; + } + if (subevents[otherIndex][1].type === "chunkText") { + subevents[otherIndex][1]._isInFirstContentOfListItem = true; + otherIndex++; + } + } + } + } -var underscore = '_' -var asterisk = '*' + // Enter. + if (event[0] === 'enter') { + if (event[1].contentType) { + Object.assign(jumps, subcontent(events, index)); + index = jumps[index]; + more = true; + } + } + // Exit. + else if (event[1]._container) { + otherIndex = index; + lineIndex = undefined; + while (otherIndex--) { + otherEvent = events.get(otherIndex); + if (otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank") { + if (otherEvent[0] === 'enter') { + if (lineIndex) { + events.get(lineIndex)[1].type = "lineEndingBlank"; + } + otherEvent[1].type = "lineEnding"; + lineIndex = otherIndex; + } + } else if (otherEvent[1].type === "linePrefix" || otherEvent[1].type === "listItemIndent") { + // Move past. + } else { + break; + } + } + if (lineIndex) { + // Fix position. + event[1].end = { + ...events.get(lineIndex)[1].start + }; -// Stringify an `emphasis`. -// -// The marker used is configurable through `emphasis`, which defaults to an -// underscore (`'_'`) but also accepts an asterisk (`'*'`): -// -// ```markdown -// *foo* -// ``` -// -// In `pedantic` mode, text which itself contains an underscore will cause the -// marker to default to an asterisk instead: -// -// ```markdown -// *foo_bar* -// ``` -function emphasis(node) { - var marker = this.options.emphasis - var content = this.all(node).join('') - - // When in pedantic mode, prevent using underscore as the marker when there - // are underscores in the content. - if ( - this.options.pedantic && - marker === underscore && - content.indexOf(marker) !== -1 - ) { - marker = asterisk + // Switch container exit w/ line endings. + parameters = events.slice(lineIndex, index); + parameters.unshift(event); + events.splice(lineIndex, index - lineIndex + 1, parameters); + } + } } - return marker + content + marker + // The changes to the `events` buffer must be copied back into the eventsArray + splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0)); + return !more; } +/** + * Tokenize embedded tokens. + * + * @param {SpliceBuffer<Event>} events + * Events. + * @param {number} eventIndex + * Index. + * @returns {Record<string, number>} + * Gaps. + */ +function subcontent(events, eventIndex) { + const token = events.get(eventIndex)[1]; + const context = events.get(eventIndex)[2]; + let startPosition = eventIndex - 1; + /** @type {Array<number>} */ + const startPositions = []; + let tokenizer = token._tokenizer; + if (!tokenizer) { + tokenizer = context.parser[token.contentType](token.start); + if (token._contentTypeTextTrailing) { + tokenizer._contentTypeTextTrailing = true; + } + } + const childEvents = tokenizer.events; + /** @type {Array<[number, number]>} */ + const jumps = []; + /** @type {Record<string, number>} */ + const gaps = {}; + /** @type {Array<Chunk>} */ + let stream; + /** @type {Token | undefined} */ + let previous; + let index = -1; + /** @type {Token | undefined} */ + let current = token; + let adjust = 0; + let start = 0; + const breaks = [start]; + + // Loop forward through the linked tokens to pass them in order to the + // subtokenizer. + while (current) { + // Find the position of the event for this token. + while (events.get(++startPosition)[1] !== current) { + // Empty. + } + startPositions.push(startPosition); + if (!current._tokenizer) { + stream = context.sliceStream(current); + if (!current.next) { + stream.push(null); + } + if (previous) { + tokenizer.defineSkip(current.start); + } + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = true; + } + tokenizer.write(stream); + if (current._isInFirstContentOfListItem) { + tokenizer._gfmTasklistFirstContentOfListItem = undefined; + } + } + + // Unravel the next token. + previous = current; + current = current.next; + } -/***/ }), + // Now, loop back through all events (and linked tokens), to figure out which + // parts belong where. + current = token; + while (++index < childEvents.length) { + if ( + // Find a void token that includes a break. + childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) { + start = index + 1; + breaks.push(start); + // Help GC. + current._tokenizer = undefined; + current.previous = undefined; + current = current.next; + } + } + + // Help GC. + tokenizer.events = []; + + // If there’s one more token (which is the cases for lines that end in an + // EOF), that’s perfect: the last point we found starts it. + // If there isn’t then make sure any remaining content is added to it. + if (current) { + // Help GC. + current._tokenizer = undefined; + current.previous = undefined; + } else { + breaks.pop(); + } -/***/ 63353: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Now splice the events from the subtokenizer into the current events, + // moving back to front so that splice indices aren’t affected. + index = breaks.length; + while (index--) { + const slice = childEvents.slice(breaks[index], breaks[index + 1]); + const start = startPositions.pop(); + jumps.push([start, start + slice.length - 1]); + events.splice(start, 2, slice); + } + jumps.reverse(); + index = -1; + while (++index < jumps.length) { + gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]; + adjust += jumps[index][1] - jumps[index][0] - 1; + } + return gaps; +} +;// CONCATENATED MODULE: ./node_modules/micromark/lib/postprocess.js +/** + * @import {Event} from 'micromark-util-types' + */ -"use strict"; -var repeat = __nccwpck_require__(69626) +/** + * @param {Array<Event>} events + * Events. + * @returns {Array<Event>} + * Events. + */ +function postprocess(events) { + while (!subtokenize(events)) { + // Empty + } + return events; +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-combine-extensions/index.js +/** + * @import { + * Extension, + * Handles, + * HtmlExtension, + * NormalizedExtension + * } from 'micromark-util-types' + */ -module.exports = heading -var lineFeed = '\n' -var space = ' ' -var numberSign = '#' -var dash = '-' -var equalsTo = '=' -// Stringify a heading. -// -// In `setext: true` mode and when `depth` is smaller than three, creates a -// setext header: -// -// ```markdown -// Foo -// === -// ``` -// -// Otherwise, an ATX header is generated: -// -// ```markdown -// ### Foo -// ``` -// -// In `closeAtx: true` mode, the header is closed with hashes: -// -// ```markdown -// ### Foo ### -// ``` -function heading(node) { - var self = this - var depth = node.depth - var setext = self.options.setext - var closeAtx = self.options.closeAtx - var content = self.all(node).join('') - var prefix - - if (setext && depth < 3) { - return ( - content + lineFeed + repeat(depth === 1 ? equalsTo : dash, content.length) - ) - } +const micromark_util_combine_extensions_hasOwnProperty = {}.hasOwnProperty + +/** + * Combine multiple syntax extensions into one. + * + * @param {ReadonlyArray<Extension>} extensions + * List of syntax extensions. + * @returns {NormalizedExtension} + * A single combined extension. + */ +function combineExtensions(extensions) { + /** @type {NormalizedExtension} */ + const all = {} + let index = -1 - prefix = repeat(numberSign, node.depth) + while (++index < extensions.length) { + syntaxExtension(all, extensions[index]) + } - return prefix + space + content + (closeAtx ? space + prefix : '') + return all } +/** + * Merge `extension` into `all`. + * + * @param {NormalizedExtension} all + * Extension to merge into. + * @param {Extension} extension + * Extension to merge. + * @returns {undefined} + * Nothing. + */ +function syntaxExtension(all, extension) { + /** @type {keyof Extension} */ + let hook + + for (hook in extension) { + const maybe = micromark_util_combine_extensions_hasOwnProperty.call(all, hook) ? all[hook] : undefined + /** @type {Record<string, unknown>} */ + const left = maybe || (all[hook] = {}) + /** @type {Record<string, unknown> | undefined} */ + const right = extension[hook] + /** @type {string} */ + let code + + if (right) { + for (code in right) { + if (!micromark_util_combine_extensions_hasOwnProperty.call(left, code)) left[code] = [] + const value = right[code] + constructs( + // @ts-expect-error Looks like a list. + left[code], + Array.isArray(value) ? value : value ? [value] : [] + ) + } + } + } +} -/***/ }), +/** + * Merge `list` into `existing` (both lists of constructs). + * Mutates `existing`. + * + * @param {Array<unknown>} existing + * List of constructs to merge into. + * @param {Array<unknown>} list + * List of constructs to merge. + * @returns {undefined} + * Nothing. + */ +function constructs(existing, list) { + let index = -1 + /** @type {Array<unknown>} */ + const before = [] -/***/ 48195: -/***/ ((module) => { + while (++index < list.length) { + // @ts-expect-error Looks like an object. + ;(list[index].add === 'after' ? existing : before).push(list[index]) + } -"use strict"; + splice(existing, 0, 0, before) +} +/** + * Combine multiple HTML extensions into one. + * + * @param {ReadonlyArray<HtmlExtension>} htmlExtensions + * List of HTML extensions. + * @returns {HtmlExtension} + * Single combined HTML extension. + */ +function combineHtmlExtensions(htmlExtensions) { + /** @type {HtmlExtension} */ + const handlers = {} + let index = -1 -module.exports = html + while (++index < htmlExtensions.length) { + htmlExtension(handlers, htmlExtensions[index]) + } -function html(node) { - return node.value + return handlers } +/** + * Merge `extension` into `all`. + * + * @param {HtmlExtension} all + * Extension to merge into. + * @param {HtmlExtension} extension + * Extension to merge. + * @returns {undefined} + * Nothing. + */ +function htmlExtension(all, extension) { + /** @type {keyof HtmlExtension} */ + let hook -/***/ }), - -/***/ 70911: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + for (hook in extension) { + const maybe = micromark_util_combine_extensions_hasOwnProperty.call(all, hook) ? all[hook] : undefined + const left = maybe || (all[hook] = {}) + const right = extension[hook] + /** @type {keyof Handles} */ + let type -"use strict"; + if (right) { + for (type in right) { + // @ts-expect-error assume document vs regular handler are managed correctly. + left[type] = right[type] + } + } + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-character/index.js +/** + * @import {Code} from 'micromark-util-types' + */ -var label = __nccwpck_require__(99872) +/** + * Check whether the character code represents an ASCII alpha (`a` through `z`, + * case insensitive). + * + * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. + * + * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) + * to U+005A (`Z`). + * + * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) + * to U+007A (`z`). + * + * @param code + * Code. + * @returns {boolean} + * Whether it matches. + */ +const asciiAlpha = regexCheck(/[A-Za-z]/); -module.exports = imageReference +/** + * Check whether the character code represents an ASCII alphanumeric (`a` + * through `z`, case insensitive, or `0` through `9`). + * + * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha + * (see `asciiAlpha`). + * + * @param code + * Code. + * @returns {boolean} + * Whether it matches. + */ +const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/); -var leftSquareBracket = '[' -var rightSquareBracket = ']' -var exclamationMark = '!' +/** + * Check whether the character code represents an ASCII atext. + * + * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in + * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), + * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F + * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E + * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE + * (`{`) to U+007E TILDE (`~`). + * + * See: + * **\[RFC5322]**: + * [Internet Message Format](https://tools.ietf.org/html/rfc5322). + * P. Resnick. + * IETF. + * + * @param code + * Code. + * @returns {boolean} + * Whether it matches. + */ +const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/); -function imageReference(node) { +/** + * Check whether a character code is an ASCII control character. + * + * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) + * to U+001F (US), or U+007F (DEL). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function asciiControl(code) { return ( - exclamationMark + - leftSquareBracket + - (this.encode(node.alt, node) || '') + - rightSquareBracket + - label(node) - ) + // Special whitespace codes (which have negative values), C0 and Control + // character DEL + code !== null && (code < 32 || code === 127) + ); } +/** + * Check whether the character code represents an ASCII digit (`0` through `9`). + * + * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to + * U+0039 (`9`). + * + * @param code + * Code. + * @returns {boolean} + * Whether it matches. + */ +const asciiDigit = regexCheck(/\d/); -/***/ }), +/** + * Check whether the character code represents an ASCII hex digit (`a` through + * `f`, case insensitive, or `0` through `9`). + * + * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex + * digit, or an ASCII lower hex digit. + * + * An **ASCII upper hex digit** is a character in the inclusive range U+0041 + * (`A`) to U+0046 (`F`). + * + * An **ASCII lower hex digit** is a character in the inclusive range U+0061 + * (`a`) to U+0066 (`f`). + * + * @param code + * Code. + * @returns {boolean} + * Whether it matches. + */ +const asciiHexDigit = regexCheck(/[\dA-Fa-f]/); -/***/ 10964: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * Check whether the character code represents ASCII punctuation. + * + * An **ASCII punctuation** is a character in the inclusive ranges U+0021 + * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT + * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT + * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). + * + * @param code + * Code. + * @returns {boolean} + * Whether it matches. + */ +const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/); -"use strict"; +/** + * Check whether a character code is a markdown line ending. + * + * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN + * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). + * + * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE + * RETURN (CR) are replaced by these virtual characters depending on whether + * they occurred together. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownLineEnding(code) { + return code !== null && code < -2; +} +/** + * Check whether a character code is a markdown line ending (see + * `markdownLineEnding`) or markdown space (see `markdownSpace`). + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownLineEndingOrSpace(code) { + return code !== null && (code < 0 || code === 32); +} -var uri = __nccwpck_require__(71490) -var title = __nccwpck_require__(45917) +/** + * Check whether a character code is a markdown space. + * + * A **markdown space** is the concrete character U+0020 SPACE (SP) and the + * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). + * + * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is + * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL + * SPACE (VS) characters, depending on the column at which the tab occurred. + * + * @param {Code} code + * Code. + * @returns {boolean} + * Whether it matches. + */ +function markdownSpace(code) { + return code === -2 || code === -1 || code === 32; +} -module.exports = image +// Size note: removing ASCII from the regex and using `asciiPunctuation` here +// In fact adds to the bundle size. +/** + * Check whether the character code represents Unicode punctuation. + * + * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, + * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` + * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` + * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII + * punctuation (see `asciiPunctuation`). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const unicodePunctuation = regexCheck(/\p{P}|\p{S}/u); -var space = ' ' -var leftParenthesis = '(' -var rightParenthesis = ')' -var leftSquareBracket = '[' -var rightSquareBracket = ']' -var exclamationMark = '!' +/** + * Check whether the character code represents Unicode whitespace. + * + * Note that this does handle micromark specific markdown whitespace characters. + * See `markdownLineEndingOrSpace` to check that. + * + * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, + * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), + * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). + * + * See: + * **\[UNICODE]**: + * [The Unicode Standard](https://www.unicode.org/versions/). + * Unicode Consortium. + * + * @param code + * Code. + * @returns + * Whether it matches. + */ +const unicodeWhitespace = regexCheck(/\s/); -// Stringify an image. -// -// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see -// `encloseTitle()`). -// -// ```markdown -// ![foo](</fav icon.png> 'My "favourite" icon') -// ``` -// -// Supports named entities in `url`, `alt`, and `title` when in -// `settings.encode` mode. -function image(node) { - var self = this - var content = uri(self.encode(node.url || '', node)) - var exit = self.enterLink() - var alt = self.encode(self.escape(node.alt || '', node)) +/** + * Create a code check from a regex. + * + * @param {RegExp} regex + * Expression. + * @returns {(code: Code) => boolean} + * Check. + */ +function regexCheck(regex) { + return check; + + /** + * Check whether a code matches the bound regex. + * + * @param {Code} code + * Character code. + * @returns {boolean} + * Whether the character code matches the bound regex. + */ + function check(code) { + return code !== null && code > -1 && regex.test(String.fromCharCode(code)); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-factory-space/index.js +/** + * @import {Effects, State, TokenType} from 'micromark-util-types' + */ - exit() - if (node.title) { - content += space + title(self.encode(node.title, node)) - } - return ( - exclamationMark + - leftSquareBracket + - alt + - rightSquareBracket + - leftParenthesis + - content + - rightParenthesis - ) -} +// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`. +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * spaces in markdown are often optional, in which case this factory can be + * used and `ok` will be switched to whether spaces were found or not + * * one line ending or space can be detected with `markdownSpace(code)` right + * before using `factorySpace` + * + * ###### Examples + * + * Where `␉` represents a tab (plus how much it expands) and `␠` represents a + * single space. + * + * ```markdown + * ␉ + * ␠␠␠␠ + * ␉␠ + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {TokenType} type + * Type (`' \t'`). + * @param {number | undefined} [max=Infinity] + * Max (exclusive). + * @returns {State} + * Start state. + */ +function factorySpace(effects, ok, type, max) { + const limit = max ? max - 1 : Number.POSITIVE_INFINITY; + let size = 0; + return start; -/***/ }), + /** @type {State} */ + function start(code) { + if (markdownSpace(code)) { + effects.enter(type); + return prefix(code); + } + return ok(code); + } -/***/ 83254: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** @type {State} */ + function prefix(code) { + if (markdownSpace(code) && size++ < limit) { + effects.consume(code); + return prefix; + } + effects.exit(type); + return ok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/content.js +/** + * @import { + * InitialConstruct, + * Initializer, + * State, + * TokenizeContext, + * Token + * } from 'micromark-util-types' + */ -"use strict"; -var streak = __nccwpck_require__(18697) -var repeat = __nccwpck_require__(69626) +/** @type {InitialConstruct} */ +const content = { + tokenize: initializeContent +}; -module.exports = inlineCode +/** + * @this {TokenizeContext} + * Context. + * @type {Initializer} + * Content. + */ +function initializeContent(effects) { + const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial); + /** @type {Token} */ + let previous; + return contentStart; + + /** @type {State} */ + function afterContentStartConstruct(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, contentStart, "linePrefix"); + } -var graveAccentChar = '`' -var lineFeed = 10 // '\n' -var space = 32 // ' ' -var graveAccent = 96 // '`' + /** @type {State} */ + function paragraphInitial(code) { + effects.enter("paragraph"); + return lineStart(code); + } -// Stringify inline code. -// -// Knows about internal ticks (`\``), and ensures one more tick is used to -// enclose the inline code: -// -// ````markdown -// ```foo ``bar`` baz``` -// ```` -// -// Even knows about inital and final ticks: -// -// ``markdown -// `` `foo `` -// `` foo` `` -// ``` -function inlineCode(node) { - var value = node.value - var ticks = repeat(graveAccentChar, streak(value, graveAccentChar) + 1) - var start = ticks - var end = ticks - var head = value.charCodeAt(0) - var tail = value.charCodeAt(value.length - 1) - var wrap = false - var index - var length - - if (head === graveAccent || tail === graveAccent) { - wrap = true - } else if (value.length > 2 && ws(head) && ws(tail)) { - index = 1 - length = value.length - 1 - - while (++index < length) { - if (!ws(value.charCodeAt(index))) { - wrap = true - break - } + /** @type {State} */ + function lineStart(code) { + const token = effects.enter("chunkText", { + contentType: "text", + previous + }); + if (previous) { + previous.next = token; } + previous = token; + return data(code); } - if (wrap) { - start += ' ' - end = ' ' + end - } - - return start + value + end -} + /** @type {State} */ + function data(code) { + if (code === null) { + effects.exit("chunkText"); + effects.exit("paragraph"); + effects.consume(code); + return; + } + if (markdownLineEnding(code)) { + effects.consume(code); + effects.exit("chunkText"); + return lineStart; + } -function ws(code) { - return code === lineFeed || code === space + // Data. + effects.consume(code); + return data; + } } +;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/document.js +/** + * @import { + * Construct, + * ContainerState, + * InitialConstruct, + * Initializer, + * Point, + * State, + * TokenizeContext, + * Tokenizer, + * Token + * } from 'micromark-util-types' + */ +/** + * @typedef {[Construct, ContainerState]} StackItem + * Construct and its state. + */ -/***/ }), -/***/ 17271: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +/** @type {InitialConstruct} */ +const document_document = { + tokenize: initializeDocument +}; -var copy = __nccwpck_require__(88864) -var label = __nccwpck_require__(99872) +/** @type {Construct} */ +const containerConstruct = { + tokenize: tokenizeContainer +}; -module.exports = linkReference +/** + * @this {TokenizeContext} + * Self. + * @type {Initializer} + * Initializer. + */ +function initializeDocument(effects) { + const self = this; + /** @type {Array<StackItem>} */ + const stack = []; + let continued = 0; + /** @type {TokenizeContext | undefined} */ + let childFlow; + /** @type {Token | undefined} */ + let childToken; + /** @type {number} */ + let lineStartOffset; + return start; + + /** @type {State} */ + function start(code) { + // First we iterate through the open blocks, starting with the root + // document, and descending through last children down to the last open + // block. + // Each block imposes a condition that the line must satisfy if the block is + // to remain open. + // For example, a block quote requires a `>` character. + // A paragraph requires a non-blank line. + // In this phase we may match all or just some of the open blocks. + // But we cannot close unmatched blocks yet, because we may have a lazy + // continuation line. + if (continued < stack.length) { + const item = stack[continued]; + self.containerState = item[1]; + return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code); + } + + // Done. + return checkNewContainers(code); + } + + /** @type {State} */ + function documentContinue(code) { + continued++; + + // Note: this field is called `_closeFlow` but it also closes containers. + // Perhaps a good idea to rename it but it’s already used in the wild by + // extensions. + if (self.containerState._closeFlow) { + self.containerState._closeFlow = undefined; + if (childFlow) { + closeFlow(); + } + + // Note: this algorithm for moving events around is similar to the + // algorithm when dealing with lazy lines in `writeToChild`. + const indexBeforeExits = self.events.length; + let indexBeforeFlow = indexBeforeExits; + /** @type {Point | undefined} */ + let point; + + // Find the flow chunk. + while (indexBeforeFlow--) { + if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === "chunkFlow") { + point = self.events[indexBeforeFlow][1].end; + break; + } + } + exitContainers(continued); -var leftSquareBracket = '[' -var rightSquareBracket = ']' + // Fix positions. + let index = indexBeforeExits; + while (index < self.events.length) { + self.events[index][1].end = { + ...point + }; + index++; + } -var shortcut = 'shortcut' -var collapsed = 'collapsed' + // Inject the exits earlier (they’re still also at the end). + splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits)); -function linkReference(node) { - var self = this - var type = node.referenceType - var exit = self.enterLinkReference(self, node) - var value = self.all(node).join('') + // Discard the duplicate exits. + self.events.length = index; + return checkNewContainers(code); + } + return start(code); + } - exit() + /** @type {State} */ + function checkNewContainers(code) { + // Next, after consuming the continuation markers for existing blocks, we + // look for new block starts (e.g. `>` for a block quote). + // If we encounter a new block start, we close any blocks unmatched in + // step 1 before creating the new block as a child of the last matched + // block. + if (continued === stack.length) { + // No need to `check` whether there’s a container, of `exitContainers` + // would be moot. + // We can instead immediately `attempt` to parse one. + if (!childFlow) { + return documentContinued(code); + } - if (type === shortcut || type === collapsed) { - value = copy(value, node.label || node.identifier) - } + // If we have concrete content, such as block HTML or fenced code, + // we can’t have containers “pierce” into them, so we can immediately + // start. + if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { + return flowStart(code); + } - return leftSquareBracket + value + rightSquareBracket + label(node) -} + // If we do have flow, it could still be a blank line, + // but we’d be interrupting it w/ a new container if there’s a current + // construct. + // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer + // needed in micromark-extension-gfm-table@1.0.6). + self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack); + } + // Check if there is a new container. + self.containerState = {}; + return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code); + } -/***/ }), + /** @type {State} */ + function thereIsANewContainer(code) { + if (childFlow) closeFlow(); + exitContainers(continued); + return documentContinued(code); + } -/***/ 97556: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** @type {State} */ + function thereIsNoNewContainer(code) { + self.parser.lazy[self.now().line] = continued !== stack.length; + lineStartOffset = self.now().offset; + return flowStart(code); + } -"use strict"; + /** @type {State} */ + function documentContinued(code) { + // Try new containers. + self.containerState = {}; + return effects.attempt(containerConstruct, containerContinue, flowStart)(code); + } + /** @type {State} */ + function containerContinue(code) { + continued++; + stack.push([self.currentConstruct, self.containerState]); + // Try another. + return documentContinued(code); + } -var uri = __nccwpck_require__(71490) -var title = __nccwpck_require__(45917) + /** @type {State} */ + function flowStart(code) { + if (code === null) { + if (childFlow) closeFlow(); + exitContainers(0); + effects.consume(code); + return; + } + childFlow = childFlow || self.parser.flow(self.now()); + effects.enter("chunkFlow", { + _tokenizer: childFlow, + contentType: "flow", + previous: childToken + }); + return flowContinue(code); + } -module.exports = link + /** @type {State} */ + function flowContinue(code) { + if (code === null) { + writeToChild(effects.exit("chunkFlow"), true); + exitContainers(0); + effects.consume(code); + return; + } + if (markdownLineEnding(code)) { + effects.consume(code); + writeToChild(effects.exit("chunkFlow")); + // Get ready for the next line. + continued = 0; + self.interrupt = undefined; + return start; + } + effects.consume(code); + return flowContinue; + } + + /** + * @param {Token} token + * Token. + * @param {boolean | undefined} [endOfFile] + * Whether the token is at the end of the file (default: `false`). + * @returns {undefined} + * Nothing. + */ + function writeToChild(token, endOfFile) { + const stream = self.sliceStream(token); + if (endOfFile) stream.push(null); + token.previous = childToken; + if (childToken) childToken.next = token; + childToken = token; + childFlow.defineSkip(token.start); + childFlow.write(stream); + + // Alright, so we just added a lazy line: + // + // ```markdown + // > a + // b. + // + // Or: + // + // > ~~~c + // d + // + // Or: + // + // > | e | + // f + // ``` + // + // The construct in the second example (fenced code) does not accept lazy + // lines, so it marked itself as done at the end of its first line, and + // then the content construct parses `d`. + // Most constructs in markdown match on the first line: if the first line + // forms a construct, a non-lazy line can’t “unmake” it. + // + // The construct in the third example is potentially a GFM table, and + // those are *weird*. + // It *could* be a table, from the first line, if the following line + // matches a condition. + // In this case, that second line is lazy, which “unmakes” the first line + // and turns the whole into one content block. + // + // We’ve now parsed the non-lazy and the lazy line, and can figure out + // whether the lazy line started a new flow block. + // If it did, we exit the current containers between the two flow blocks. + if (self.parser.lazy[token.start.line]) { + let index = childFlow.events.length; + while (index--) { + if ( + // The token starts before the line ending… + childFlow.events[index][1].start.offset < lineStartOffset && ( + // …and either is not ended yet… + !childFlow.events[index][1].end || + // …or ends after it. + childFlow.events[index][1].end.offset > lineStartOffset)) { + // Exit: there’s still something open, which means it’s a lazy line + // part of something. + return; + } + } -var space = ' ' -var leftSquareBracket = '[' -var rightSquareBracket = ']' -var leftParenthesis = '(' -var rightParenthesis = ')' + // Note: this algorithm for moving events around is similar to the + // algorithm when closing flow in `documentContinue`. + const indexBeforeExits = self.events.length; + let indexBeforeFlow = indexBeforeExits; + /** @type {boolean | undefined} */ + let seen; + /** @type {Point | undefined} */ + let point; -// Expression for a protocol: -// See <https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Generic_syntax>. -var protocol = /^[a-z][a-z+.-]+:\/?/i + // Find the previous chunk (the one before the lazy line). + while (indexBeforeFlow--) { + if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === "chunkFlow") { + if (seen) { + point = self.events[indexBeforeFlow][1].end; + break; + } + seen = true; + } + } + exitContainers(continued); -// Stringify a link. -// -// When no title exists, the compiled `children` equal `url`, and `url` starts -// with a protocol, an auto link is created: -// -// ```markdown -// <http://example.com> -// ``` -// -// Otherwise, is smart about enclosing `url` (see `encloseURI()`) and `title` -// (see `encloseTitle()`). -// ``` -// -// ```markdown -// [foo](<foo at bar dot com> 'An "example" e-mail') -// ``` -// -// Supports named entities in the `url` and `title` when in `settings.encode` -// mode. -function link(node) { - var self = this - var content = self.encode(node.url || '', node) - var exit = self.enterLink() - var escaped = self.encode(self.escape(node.url || '', node)) - var value = self.all(node).join('') + // Fix positions. + index = indexBeforeExits; + while (index < self.events.length) { + self.events[index][1].end = { + ...point + }; + index++; + } - exit() + // Inject the exits earlier (they’re still also at the end). + splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits)); - if (node.title == null && protocol.test(content) && escaped === value) { - // Backslash escapes do not work in autolinks, so we do not escape. - return uri(self.encode(node.url), true) + // Discard the duplicate exits. + self.events.length = index; + } } - content = uri(content) + /** + * @param {number} size + * Size. + * @returns {undefined} + * Nothing. + */ + function exitContainers(size) { + let index = stack.length; - if (node.title) { - content += space + title(self.encode(self.escape(node.title, node), node)) + // Exit open containers. + while (index-- > size) { + const entry = stack[index]; + self.containerState = entry[1]; + entry[0].exit.call(self, effects); + } + stack.length = size; + } + function closeFlow() { + childFlow.write([null]); + childToken = undefined; + childFlow = undefined; + self.containerState._closeFlow = undefined; } - - return ( - leftSquareBracket + - value + - rightSquareBracket + - leftParenthesis + - content + - rightParenthesis - ) } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + * Tokenizer. + */ +function tokenizeContainer(effects, ok, nok) { + // Always populated by defaults. -/***/ }), + return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), "linePrefix", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4); +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/blank-line.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -/***/ 18141: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +/** @type {Construct} */ +const blankLine = { + partial: true, + tokenize: tokenizeBlankLine +}; -var repeat = __nccwpck_require__(69626) -var pad = __nccwpck_require__(13203) +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeBlankLine(effects, ok, nok) { + return start; + + /** + * Start of blank line. + * + * > 👉 **Note**: `␠` represents a space character. + * + * ```markdown + * > | ␠␠␊ + * ^ + * > | ␊ + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + return markdownSpace(code) ? factorySpace(effects, after, "linePrefix")(code) : after(code); + } + + /** + * At eof/eol, after optional whitespace. + * + * > 👉 **Note**: `␠` represents a space character. + * + * ```markdown + * > | ␠␠␊ + * ^ + * > | ␊ + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return code === null || markdownLineEnding(code) ? ok(code) : nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/content.js +/** + * @import { + * Construct, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer, + * Token + * } from 'micromark-util-types' + */ -module.exports = listItem -var lineFeed = '\n' -var space = ' ' -var leftSquareBracket = '[' -var rightSquareBracket = ']' -var lowercaseX = 'x' -var ceil = Math.ceil -var blank = lineFeed + lineFeed -var tabSize = 4 +/** + * No name because it must not be turned off. + * @type {Construct} + */ +const content_content = { + resolve: resolveContent, + tokenize: tokenizeContent +}; -// Stringify a list item. -// -// Prefixes the content with a checked checkbox when `checked: true`: -// -// ```markdown -// [x] foo -// ``` -// -// Prefixes the content with an unchecked checkbox when `checked: false`: -// -// ```markdown -// [ ] foo -// ``` -function listItem(node, parent, position, bullet) { - var self = this - var style = self.options.listItemIndent - var marker = bullet || self.options.bullet - var spread = node.spread == null ? true : node.spread - var checked = node.checked - var children = node.children - var length = children.length - var values = [] - var index = -1 - var value - var indent - var spacing - - while (++index < length) { - values[index] = self.visit(children[index], node) - } - - value = values.join(spread ? blank : lineFeed) - - if (typeof checked === 'boolean') { - // Note: I’d like to be able to only add the space between the check and - // the value, but unfortunately github does not support empty list-items - // with a checkbox :( - value = - leftSquareBracket + - (checked ? lowercaseX : space) + - rightSquareBracket + - space + - value - } - - if (style === '1' || (style === 'mixed' && value.indexOf(lineFeed) === -1)) { - indent = marker.length + 1 - spacing = space - } else { - indent = ceil((marker.length + 1) / tabSize) * tabSize - spacing = repeat(space, indent - marker.length) - } +/** @type {Construct} */ +const continuationConstruct = { + partial: true, + tokenize: tokenizeContinuation +}; - return value - ? marker + spacing + pad(value, indent / tabSize).slice(indent) - : marker +/** + * Content is transparent: it’s parsed right now. That way, definitions are also + * parsed right now: before text in paragraphs (specifically, media) are parsed. + * + * @type {Resolver} + */ +function resolveContent(events) { + subtokenize(events); + return events; } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeContent(effects, ok) { + /** @type {Token | undefined} */ + let previous; + return chunkStart; + + /** + * Before a content chunk. + * + * ```markdown + * > | abc + * ^ + * ``` + * + * @type {State} + */ + function chunkStart(code) { + effects.enter("content"); + previous = effects.enter("chunkContent", { + contentType: "content" + }); + return chunkInside(code); + } + + /** + * In a content chunk. + * + * ```markdown + * > | abc + * ^^^ + * ``` + * + * @type {State} + */ + function chunkInside(code) { + if (code === null) { + return contentEnd(code); + } + + // To do: in `markdown-rs`, each line is parsed on its own, and everything + // is stitched together resolving. + if (markdownLineEnding(code)) { + return effects.check(continuationConstruct, contentContinue, contentEnd)(code); + } + + // Data. + effects.consume(code); + return chunkInside; + } + + /** + * + * + * @type {State} + */ + function contentEnd(code) { + effects.exit("chunkContent"); + effects.exit("content"); + return ok(code); + } + + /** + * + * + * @type {State} + */ + function contentContinue(code) { + effects.consume(code); + effects.exit("chunkContent"); + previous.next = effects.enter("chunkContent", { + contentType: "content", + previous + }); + previous = previous.next; + return chunkInside; + } +} -/***/ }), - -/***/ 82878: -/***/ ((module) => { +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeContinuation(effects, ok, nok) { + const self = this; + return startLookahead; -"use strict"; + /** + * + * + * @type {State} + */ + function startLookahead(code) { + effects.exit("chunkContent"); + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, prefixed, "linePrefix"); + } + /** + * + * + * @type {State} + */ + function prefixed(code) { + if (code === null || markdownLineEnding(code)) { + return nok(code); + } -module.exports = list + // Always populated by defaults. -function list(node) { - var fn = node.ordered ? this.visitOrderedItems : this.visitUnorderedItems - return fn.call(this, node) + const tail = self.events[self.events.length - 1]; + if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4) { + return ok(code); + } + return effects.interrupt(self.parser.constructs.flow, nok, ok)(code); + } } +;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/flow.js +/** + * @import { + * InitialConstruct, + * Initializer, + * State, + * TokenizeContext + * } from 'micromark-util-types' + */ -/***/ }), - -/***/ 66601: -/***/ ((module) => { -"use strict"; +/** @type {InitialConstruct} */ +const flow = { + tokenize: initializeFlow +}; -module.exports = paragraph +/** + * @this {TokenizeContext} + * Self. + * @type {Initializer} + * Initializer. + */ +function initializeFlow(effects) { + const self = this; + const initial = effects.attempt( + // Try to parse a blank line. + blankLine, atBlankEnding, + // Try to parse initial flow (essentially, only code). + effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content_content, afterConstruct)), "linePrefix"))); + return initial; + + /** @type {State} */ + function atBlankEnding(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("lineEndingBlank"); + effects.consume(code); + effects.exit("lineEndingBlank"); + self.currentConstruct = undefined; + return initial; + } -function paragraph(node) { - return this.all(node).join('') + /** @type {State} */ + function afterConstruct(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + self.currentConstruct = undefined; + return initial; + } } +;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/text.js +/** + * @import { + * Code, + * InitialConstruct, + * Initializer, + * Resolver, + * State, + * TokenizeContext + * } from 'micromark-util-types' + */ +const resolver = { + resolveAll: createResolver() +}; +const string = initializeFactory('string'); +const text_text = initializeFactory('text'); -/***/ }), - -/***/ 71342: -/***/ ((module) => { - -"use strict"; +/** + * @param {'string' | 'text'} field + * Field. + * @returns {InitialConstruct} + * Construct. + */ +function initializeFactory(field) { + return { + resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined), + tokenize: initializeText + }; + /** + * @this {TokenizeContext} + * Context. + * @type {Initializer} + */ + function initializeText(effects) { + const self = this; + const constructs = this.parser.constructs[field]; + const text = effects.attempt(constructs, start, notText); + return start; + + /** @type {State} */ + function start(code) { + return atBreak(code) ? text(code) : notText(code); + } + + /** @type {State} */ + function notText(code) { + if (code === null) { + effects.consume(code); + return; + } + effects.enter("data"); + effects.consume(code); + return data; + } -module.exports = root + /** @type {State} */ + function data(code) { + if (atBreak(code)) { + effects.exit("data"); + return text(code); + } -var lineFeed = '\n' + // Data. + effects.consume(code); + return data; + } -// Stringify a root. -// Adds a final newline to ensure valid POSIX files. */ -function root(node) { - var doc = this.block(node) + /** + * @param {Code} code + * Code. + * @returns {boolean} + * Whether the code is a break. + */ + function atBreak(code) { + if (code === null) { + return true; + } + const list = constructs[code]; + let index = -1; + if (list) { + // Always populated by defaults. - if (doc.charAt(doc.length - 1) !== lineFeed) { - doc += lineFeed + while (++index < list.length) { + const item = list[index]; + if (!item.previous || item.previous.call(self, self.previous)) { + return true; + } + } + } + return false; + } } - - return doc } +/** + * @param {Resolver | undefined} [extraResolver] + * Resolver. + * @returns {Resolver} + * Resolver. + */ +function createResolver(extraResolver) { + return resolveAllText; -/***/ }), - -/***/ 33986: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - + /** @type {Resolver} */ + function resolveAllText(events, context) { + let index = -1; + /** @type {number | undefined} */ + let enter; -var repeat = __nccwpck_require__(69626) + // A rather boring computation (to merge adjacent `data` events) which + // improves mm performance by 29%. + while (++index <= events.length) { + if (enter === undefined) { + if (events[index] && events[index][1].type === "data") { + enter = index; + index++; + } + } else if (!events[index] || events[index][1].type !== "data") { + // Don’t do anything if there is one data token. + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end; + events.splice(enter + 2, index - enter - 2); + index = enter + 2; + } + enter = undefined; + } + } + return extraResolver ? extraResolver(events, context) : events; + } +} -module.exports = strong +/** + * A rather ugly set of instructions which again looks at chunks in the input + * stream. + * The reason to do this here is that it is *much* faster to parse in reverse. + * And that we can’t hook into `null` to split the line suffix before an EOF. + * To do: figure out if we can make this into a clean utility, or even in core. + * As it will be useful for GFMs literal autolink extension (and maybe even + * tables?) + * + * @type {Resolver} + */ +function resolveAllLineSuffixes(events, context) { + let eventIndex = 0; // Skip first. + + while (++eventIndex <= events.length) { + if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") { + const data = events[eventIndex - 1][1]; + const chunks = context.sliceStream(data); + let index = chunks.length; + let bufferIndex = -1; + let size = 0; + /** @type {boolean | undefined} */ + let tabs; + while (index--) { + const chunk = chunks[index]; + if (typeof chunk === 'string') { + bufferIndex = chunk.length; + while (chunk.charCodeAt(bufferIndex - 1) === 32) { + size++; + bufferIndex--; + } + if (bufferIndex) break; + bufferIndex = -1; + } + // Number + else if (chunk === -2) { + tabs = true; + size++; + } else if (chunk === -1) { + // Empty + } else { + // Replacement character, exit. + index++; + break; + } + } -// Stringify a `strong`. -// -// The marker used is configurable by `strong`, which defaults to an asterisk -// (`'*'`) but also accepts an underscore (`'_'`): -// -// ```markdown -// __foo__ -// ``` -function strong(node) { - var marker = repeat(this.options.strong, 2) - return marker + this.all(node).join('') + marker + // Allow final trailing whitespace. + if (context._contentTypeTextTrailing && eventIndex === events.length) { + size = 0; + } + if (size) { + const token = { + type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing", + start: { + _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex, + _index: data.start._index + index, + line: data.end.line, + column: data.end.column - size, + offset: data.end.offset - size + }, + end: { + ...data.end + } + }; + data.end = { + ...token.start + }; + if (data.start.offset === data.end.offset) { + Object.assign(data, token); + } else { + events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]); + eventIndex += 2; + } + } + eventIndex++; + } + } + return events; } +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/thematic-break.js +/** + * @import { + * Code, + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -/***/ }), -/***/ 10730: -/***/ ((module) => { +/** @type {Construct} */ +const thematicBreak = { + name: 'thematicBreak', + tokenize: tokenizeThematicBreak +}; -"use strict"; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeThematicBreak(effects, ok, nok) { + let size = 0; + /** @type {NonNullable<Code>} */ + let marker; + return start; + + /** + * Start of thematic break. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("thematicBreak"); + // To do: parse indent like `markdown-rs`. + return before(code); + } + + /** + * After optional whitespace, at marker. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + marker = code; + return atBreak(code); + } + + /** + * After something, before something else. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === marker) { + effects.enter("thematicBreakSequence"); + return sequence(code); + } + if (size >= 3 && (code === null || markdownLineEnding(code))) { + effects.exit("thematicBreak"); + return ok(code); + } + return nok(code); + } + + /** + * In sequence. + * + * ```markdown + * > | *** + * ^ + * ``` + * + * @type {State} + */ + function sequence(code) { + if (code === marker) { + effects.consume(code); + size++; + return sequence; + } + effects.exit("thematicBreakSequence"); + return markdownSpace(code) ? factorySpace(effects, atBreak, "whitespace")(code) : atBreak(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/list.js +/** + * @import { + * Code, + * Construct, + * Exiter, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -module.exports = tableCell -var lineFeed = /\r?\n/g -function tableCell(node) { - return this.all(node).join('').replace(lineFeed, ' ') -} -/***/ }), +/** @type {Construct} */ +const list = { + continuation: { + tokenize: tokenizeListContinuation + }, + exit: tokenizeListEnd, + name: 'list', + tokenize: tokenizeListStart +}; -/***/ 88664: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** @type {Construct} */ +const listItemPrefixWhitespaceConstruct = { + partial: true, + tokenize: tokenizeListItemPrefixWhitespace +}; -"use strict"; +/** @type {Construct} */ +const indentConstruct = { + partial: true, + tokenize: tokenizeIndent +}; +// To do: `markdown-rs` parses list items on their own and later stitches them +// together. -var markdownTable = __nccwpck_require__(90906) +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeListStart(effects, ok, nok) { + const self = this; + const tail = self.events[self.events.length - 1]; + let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; + let size = 0; + return start; + + /** @type {State} */ + function start(code) { + const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? "listUnordered" : "listOrdered"); + if (kind === "listUnordered" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) { + if (!self.containerState.type) { + self.containerState.type = kind; + effects.enter(kind, { + _container: true + }); + } + if (kind === "listUnordered") { + effects.enter("listItemPrefix"); + return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code); + } + if (!self.interrupt || code === 49) { + effects.enter("listItemPrefix"); + effects.enter("listItemValue"); + return inside(code); + } + } + return nok(code); + } -module.exports = table + /** @type {State} */ + function inside(code) { + if (asciiDigit(code) && ++size < 10) { + effects.consume(code); + return inside; + } + if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) { + effects.exit("listItemValue"); + return atMarker(code); + } + return nok(code); + } -// Stringify table. -// -// Creates a fenced table. -// The table has aligned delimiters by default, but not in -// `tablePipeAlign: false`: -// -// ```markdown -// | Header 1 | Header 2 | -// | :-: | - | -// | Alpha | Bravo | -// ``` -// -// The table is spaced by default, but not in `tableCellPadding: false`: -// -// ```markdown -// |Foo|Bar| -// |:-:|---| -// |Baz|Qux| -// ``` -function table(node) { - var self = this - var options = self.options - var padding = options.tableCellPadding - var alignDelimiters = options.tablePipeAlign - var stringLength = options.stringLength - var rows = node.children - var index = rows.length - var exit = self.enterTable() - var result = [] + /** + * @type {State} + **/ + function atMarker(code) { + effects.enter("listItemMarker"); + effects.consume(code); + effects.exit("listItemMarker"); + self.containerState.marker = self.containerState.marker || code; + return effects.check(blankLine, + // Can’t be empty when interrupting. + self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix)); + } - while (index--) { - result[index] = self.all(rows[index]) + /** @type {State} */ + function onBlank(code) { + self.containerState.initialBlankLine = true; + initialSize++; + return endOfPrefix(code); } - exit() + /** @type {State} */ + function otherPrefix(code) { + if (markdownSpace(code)) { + effects.enter("listItemPrefixWhitespace"); + effects.consume(code); + effects.exit("listItemPrefixWhitespace"); + return endOfPrefix; + } + return nok(code); + } - return markdownTable(result, { - align: node.align, - alignDelimiters: alignDelimiters, - padding: padding, - stringLength: stringLength - }) + /** @type {State} */ + function endOfPrefix(code) { + self.containerState.size = initialSize + self.sliceSerialize(effects.exit("listItemPrefix"), true).length; + return ok(code); + } } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeListContinuation(effects, ok, nok) { + const self = this; + self.containerState._closeFlow = undefined; + return effects.check(blankLine, onBlank, notBlank); -/***/ }), - -/***/ 16332: -/***/ ((module) => { + /** @type {State} */ + function onBlank(code) { + self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine; -"use strict"; + // We have a blank line. + // Still, try to consume at most the items size. + return factorySpace(effects, ok, "listItemIndent", self.containerState.size + 1)(code); + } + /** @type {State} */ + function notBlank(code) { + if (self.containerState.furtherBlankLines || !markdownSpace(code)) { + self.containerState.furtherBlankLines = undefined; + self.containerState.initialBlankLine = undefined; + return notInCurrentItem(code); + } + self.containerState.furtherBlankLines = undefined; + self.containerState.initialBlankLine = undefined; + return effects.attempt(indentConstruct, ok, notInCurrentItem)(code); + } -module.exports = text + /** @type {State} */ + function notInCurrentItem(code) { + // While we do continue, we signal that the flow should be closed. + self.containerState._closeFlow = true; + // As we’re closing flow, we’re no longer interrupting. + self.interrupt = undefined; + // Always populated by defaults. -// Stringify text. -// Supports named entities in `settings.encode: true` mode: -// -// ```markdown -// AT&amp;T -// ``` -// -// Supports numbered entities in `settings.encode: numbers` mode: -// -// ```markdown -// AT&#x26;T -// ``` -function text(node, parent) { - return this.encode(this.escape(node.value, node, parent), node) + return factorySpace(effects, effects.attempt(list, ok, nok), "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code); + } } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeIndent(effects, ok, nok) { + const self = this; + return factorySpace(effects, afterPrefix, "listItemIndent", self.containerState.size + 1); -/***/ }), - -/***/ 74416: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var repeat = __nccwpck_require__(69626) - -module.exports = thematic - -var space = ' ' - -// Stringify a `thematic-break`. -// The character used is configurable through `rule`: (`'_'`): -// -// ```markdown -// ___ -// ``` -// -// The number of repititions is defined through `ruleRepetition` (`6`): -// -// ```markdown -// ****** -// ``` -// -// Whether spaces delimit each character, is configured through `ruleSpaces` -// (`true`): -// ```markdown -// * * * -// ``` -function thematic() { - var options = this.options - var rule = repeat(options.rule, options.ruleRepetition) - return options.ruleSpaces ? rule.split('').join(space) : rule + /** @type {State} */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1]; + return tail && tail[1].type === "listItemIndent" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code); + } } +/** + * @this {TokenizeContext} + * Context. + * @type {Exiter} + */ +function tokenizeListEnd(effects) { + effects.exit(this.containerState.type); +} -/***/ }), +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeListItemPrefixWhitespace(effects, ok, nok) { + const self = this; -/***/ 63280: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Always populated by defaults. -"use strict"; + return factorySpace(effects, afterPrefix, "listItemPrefixWhitespace", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1); + /** @type {State} */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1]; + return !markdownSpace(code) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok(code) : nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/block-quote.js +/** + * @import { + * Construct, + * Exiter, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -var unified = __nccwpck_require__(9507) -var parse = __nccwpck_require__(35212) -var stringify = __nccwpck_require__(36686) -module.exports = unified().use(parse).use(stringify).freeze() +/** @type {Construct} */ +const blockQuote = { + continuation: { + tokenize: tokenizeBlockQuoteContinuation + }, + exit, + name: 'blockQuote', + tokenize: tokenizeBlockQuoteStart +}; -/***/ }), +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeBlockQuoteStart(effects, ok, nok) { + const self = this; + return start; + + /** + * Start of block quote. + * + * ```markdown + * > | > a + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === 62) { + const state = self.containerState; + if (!state.open) { + effects.enter("blockQuote", { + _container: true + }); + state.open = true; + } + effects.enter("blockQuotePrefix"); + effects.enter("blockQuoteMarker"); + effects.consume(code); + effects.exit("blockQuoteMarker"); + return after; + } + return nok(code); + } -/***/ 69626: -/***/ ((module) => { + /** + * After `>`, before optional whitespace. + * + * ```markdown + * > | > a + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + if (markdownSpace(code)) { + effects.enter("blockQuotePrefixWhitespace"); + effects.consume(code); + effects.exit("blockQuotePrefixWhitespace"); + effects.exit("blockQuotePrefix"); + return ok; + } + effects.exit("blockQuotePrefix"); + return ok(code); + } +} -"use strict"; -/*! - * repeat-string <https://github.com/jonschlinkert/repeat-string> +/** + * Start of block quote continuation. * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeBlockQuoteContinuation(effects, ok, nok) { + const self = this; + return contStart; + + /** + * Start of block quote continuation. + * + * Also used to parse the first block quote opening. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @type {State} + */ + function contStart(code) { + if (markdownSpace(code)) { + // Always populated by defaults. + + return factorySpace(effects, contBefore, "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code); + } + return contBefore(code); + } + + /** + * At `>`, after optional whitespace. + * + * Also used to parse the first block quote opening. + * + * ```markdown + * | > a + * > | > b + * ^ + * ``` + * + * @type {State} + */ + function contBefore(code) { + return effects.attempt(blockQuote, ok, nok)(code); + } +} + +/** @type {Exiter} */ +function exit(effects) { + effects.exit("blockQuote"); +} +;// CONCATENATED MODULE: ./node_modules/micromark-factory-destination/index.js +/** + * @import {Effects, State, TokenType} from 'micromark-util-types' */ - /** - * Results cache + * Parse destinations. + * + * ###### Examples + * + * ```markdown + * <a> + * <a\>b> + * <a b> + * <a)> + * a + * a\)b + * a(b)c + * a(b) + * ``` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type for whole (`<a>` or `b`). + * @param {TokenType} literalType + * Type when enclosed (`<a>`). + * @param {TokenType} literalMarkerType + * Type for enclosing (`<` and `>`). + * @param {TokenType} rawType + * Type when not enclosed (`b`). + * @param {TokenType} stringType + * Type for the value (`a` or `b`). + * @param {number | undefined} [max=Infinity] + * Depth of nested parens (inclusive). + * @returns {State} + * Start state. + */ +function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) { + const limit = max || Number.POSITIVE_INFINITY; + let balance = 0; + return start; + + /** + * Start of destination. + * + * ```markdown + * > | <aa> + * ^ + * > | aa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === 60) { + effects.enter(type); + effects.enter(literalType); + effects.enter(literalMarkerType); + effects.consume(code); + effects.exit(literalMarkerType); + return enclosedBefore; + } + + // ASCII control, space, closing paren. + if (code === null || code === 32 || code === 41 || asciiControl(code)) { + return nok(code); + } + effects.enter(type); + effects.enter(rawType); + effects.enter(stringType); + effects.enter("chunkString", { + contentType: "string" + }); + return raw(code); + } + + /** + * After `<`, at an enclosed destination. + * + * ```markdown + * > | <aa> + * ^ + * ``` + * + * @type {State} + */ + function enclosedBefore(code) { + if (code === 62) { + effects.enter(literalMarkerType); + effects.consume(code); + effects.exit(literalMarkerType); + effects.exit(literalType); + effects.exit(type); + return ok; + } + effects.enter(stringType); + effects.enter("chunkString", { + contentType: "string" + }); + return enclosed(code); + } + + /** + * In enclosed destination. + * + * ```markdown + * > | <aa> + * ^ + * ``` + * + * @type {State} + */ + function enclosed(code) { + if (code === 62) { + effects.exit("chunkString"); + effects.exit(stringType); + return enclosedBefore(code); + } + if (code === null || code === 60 || markdownLineEnding(code)) { + return nok(code); + } + effects.consume(code); + return code === 92 ? enclosedEscape : enclosed; + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | <a\*a> + * ^ + * ``` + * + * @type {State} + */ + function enclosedEscape(code) { + if (code === 60 || code === 62 || code === 92) { + effects.consume(code); + return enclosed; + } + return enclosed(code); + } + + /** + * In raw destination. + * + * ```markdown + * > | aa + * ^ + * ``` + * + * @type {State} + */ + function raw(code) { + if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) { + effects.exit("chunkString"); + effects.exit(stringType); + effects.exit(rawType); + effects.exit(type); + return ok(code); + } + if (balance < limit && code === 40) { + effects.consume(code); + balance++; + return raw; + } + if (code === 41) { + effects.consume(code); + balance--; + return raw; + } + + // ASCII control (but *not* `\0`) and space and `(`. + // Note: in `markdown-rs`, `\0` exists in codes, in `micromark-js` it + // doesn’t. + if (code === null || code === 32 || code === 40 || asciiControl(code)) { + return nok(code); + } + effects.consume(code); + return code === 92 ? rawEscape : raw; + } + + /** + * After `\`, at special character. + * + * ```markdown + * > | a\*a + * ^ + * ``` + * + * @type {State} + */ + function rawEscape(code) { + if (code === 40 || code === 41 || code === 92) { + effects.consume(code); + return raw; + } + return raw(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-factory-label/index.js +/** + * @import { + * Effects, + * State, + * TokenizeContext, + * TokenType + * } from 'micromark-util-types' */ -var res = ''; -var cache; /** - * Expose `repeat` + * Parse labels. + * + * > 👉 **Note**: labels in markdown are capped at 999 characters in the string. + * + * ###### Examples + * + * ```markdown + * [a] + * [a + * b] + * [a\]b] + * ``` + * + * @this {TokenizeContext} + * Tokenize context. + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type of the whole label (`[a]`). + * @param {TokenType} markerType + * Type for the markers (`[` and `]`). + * @param {TokenType} stringType + * Type for the identifier (`a`). + * @returns {State} + * Start state. + */ +function factoryLabel(effects, ok, nok, type, markerType, stringType) { + const self = this; + let size = 0; + /** @type {boolean} */ + let seen; + return start; + + /** + * Start of label. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + effects.enter(stringType); + return atBreak; + } + + /** + * In label, at something, before something else. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (size > 999 || code === null || code === 91 || code === 93 && !seen || + // To do: remove in the future once we’ve switched from + // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`, + // which doesn’t need this. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) { + return nok(code); + } + if (code === 93) { + effects.exit(stringType); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + effects.exit(type); + return ok; + } + + // To do: indent? Link chunks and EOLs together? + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return atBreak; + } + effects.enter("chunkString", { + contentType: "string" + }); + return labelInside(code); + } + + /** + * In label, in text. + * + * ```markdown + * > | [a] + * ^ + * ``` + * + * @type {State} + */ + function labelInside(code) { + if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) { + effects.exit("chunkString"); + return atBreak(code); + } + effects.consume(code); + if (!seen) seen = !markdownSpace(code); + return code === 92 ? labelEscape : labelInside; + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | [a\*a] + * ^ + * ``` + * + * @type {State} + */ + function labelEscape(code) { + if (code === 91 || code === 92 || code === 93) { + effects.consume(code); + size++; + return labelInside; + } + return labelInside(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-factory-title/index.js +/** + * @import { + * Code, + * Effects, + * State, + * TokenType + * } from 'micromark-util-types' */ -module.exports = repeat; + /** - * Repeat the given `string` the specified `number` - * of times. + * Parse titles. * - * **Example:** + * ###### Examples * - * ```js - * var repeat = require('repeat-string'); - * repeat('A', 5); - * //=> AAAAA + * ```markdown + * "a" + * 'b' + * (c) + * "a + * b" + * 'a + * b' + * (a\)b) * ``` * - * @param {String} `string` The string to repeat - * @param {Number} `number` The number of times to repeat the string - * @return {String} Repeated string - * @api public + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @param {State} nok + * State switched to when unsuccessful. + * @param {TokenType} type + * Type of the whole title (`"a"`, `'b'`, `(c)`). + * @param {TokenType} markerType + * Type for the markers (`"`, `'`, `(`, and `)`). + * @param {TokenType} stringType + * Type for the value (`a`). + * @returns {State} + * Start state. + */ +function factoryTitle(effects, ok, nok, type, markerType, stringType) { + /** @type {NonNullable<Code>} */ + let marker; + return start; + + /** + * Start of title. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + if (code === 34 || code === 39 || code === 40) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + marker = code === 40 ? 41 : code; + return begin; + } + return nok(code); + } + + /** + * After opening marker. + * + * This is also used at the closing marker. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function begin(code) { + if (code === marker) { + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + effects.exit(type); + return ok; + } + effects.enter(stringType); + return atBreak(code); + } + + /** + * At something, before something else. + * + * ```markdown + * > | "a" + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === marker) { + effects.exit(stringType); + return begin(marker); + } + if (code === null) { + return nok(code); + } + + // Note: blank lines can’t exist in content. + if (markdownLineEnding(code)) { + // To do: use `space_or_tab_eol_with_options`, connect. + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, atBreak, "linePrefix"); + } + effects.enter("chunkString", { + contentType: "string" + }); + return inside(code); + } + + /** + * + * + * @type {State} + */ + function inside(code) { + if (code === marker || code === null || markdownLineEnding(code)) { + effects.exit("chunkString"); + return atBreak(code); + } + effects.consume(code); + return code === 92 ? escape : inside; + } + + /** + * After `\`, at a special character. + * + * ```markdown + * > | "a\*b" + * ^ + * ``` + * + * @type {State} + */ + function escape(code) { + if (code === marker || code === 92) { + effects.consume(code); + return inside; + } + return inside(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-factory-whitespace/index.js +/** + * @import {Effects, State} from 'micromark-util-types' */ -function repeat(str, num) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - // cover common, quick use cases - if (num === 1) return str; - if (num === 2) return str + str; - var max = str.length * num; - if (cache !== str || typeof cache === 'undefined') { - cache = str; - res = ''; - } else if (res.length >= max) { - return res.substr(0, max); - } +/** + * Parse spaces and tabs. + * + * There is no `nok` parameter: + * + * * line endings or spaces in markdown are often optional, in which case this + * factory can be used and `ok` will be switched to whether spaces were found + * or not + * * one line ending or space can be detected with + * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace` + * + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful. + * @returns {State} + * Start state. + */ +function factoryWhitespace(effects, ok) { + /** @type {boolean} */ + let seen; + return start; - while (max > res.length && num > 1) { - if (num & 1) { - res += str; + /** @type {State} */ + function start(code) { + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + seen = true; + return start; } - - num >>= 1; - str += str; + if (markdownSpace(code)) { + return factorySpace(effects, start, seen ? "linePrefix" : "lineSuffix")(code); + } + return ok(code); } - - res += str; - res = res.substr(0, max); - return res; } +;// CONCATENATED MODULE: ./node_modules/micromark-util-normalize-identifier/index.js +/** + * Normalize an identifier (as found in references, definitions). + * + * Collapses markdown whitespace, trim, and then lower- and uppercase. + * + * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their + * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different + * uppercase character (U+0398 (`Θ`)). + * So, to get a canonical form, we perform both lower- and uppercase. + * + * Using uppercase last makes sure keys will never interact with default + * prototypal values (such as `constructor`): nothing in the prototype of + * `Object` is uppercase. + * + * @param {string} value + * Identifier to normalize. + * @returns {string} + * Normalized identifier. + */ +function normalizeIdentifier(value) { + return value + // Collapse markdown whitespace. + .replace(/[\t\n\r ]+/g, " ") + // Trim. + .replace(/^ | $/g, '') + // Some characters are considered “uppercase”, but if their lowercase + // counterpart is uppercased will result in a different uppercase + // character. + // Hence, to get that form, we perform both lower- and uppercase. + // Upper case makes sure keys will not interact with default prototypal + // methods: no method is uppercase. + .toLowerCase().toUpperCase(); +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/definition.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -/***/ }), - -/***/ 89227: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var async = __nccwpck_require__(49091); -async.core = __nccwpck_require__(10069); -async.isCore = __nccwpck_require__(35522); -async.sync = __nccwpck_require__(12785); - -module.exports = async; -/***/ }), -/***/ 49091: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var fs = __nccwpck_require__(57147); -var path = __nccwpck_require__(71017); -var caller = __nccwpck_require__(73881); -var nodeModulesPaths = __nccwpck_require__(5507); -var normalizeOptions = __nccwpck_require__(55415); -var isCore = __nccwpck_require__(18746); -var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; -var defaultIsFile = function isFile(file, cb) { - fs.stat(file, function (err, stat) { - if (!err) { - return cb(null, stat.isFile() || stat.isFIFO()); - } - if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); - return cb(err); - }); +/** @type {Construct} */ +const definition = { + name: 'definition', + tokenize: tokenizeDefinition }; -var defaultIsDir = function isDirectory(dir, cb) { - fs.stat(dir, function (err, stat) { - if (!err) { - return cb(null, stat.isDirectory()); - } - if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); - return cb(err); - }); +/** @type {Construct} */ +const titleBefore = { + partial: true, + tokenize: tokenizeTitleBefore }; -var defaultRealpath = function realpath(x, cb) { - realpathFS(x, function (realpathErr, realPath) { - if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); - else cb(null, realpathErr ? x : realPath); - }); -}; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeDefinition(effects, ok, nok) { + const self = this; + /** @type {string} */ + let identifier; + return start; + + /** + * At start of a definition. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Do not interrupt paragraphs (but do follow definitions). + // To do: do `interrupt` the way `markdown-rs` does. + // To do: parse whitespace the way `markdown-rs` does. + effects.enter("definition"); + return before(code); + } + + /** + * After optional whitespace, at `[`. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + // To do: parse whitespace the way `markdown-rs` does. + + return factoryLabel.call(self, effects, labelAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, "definitionLabel", "definitionLabelMarker", "definitionLabelString")(code); + } + + /** + * After label. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function labelAfter(code) { + identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)); + if (code === 58) { + effects.enter("definitionMarker"); + effects.consume(code); + effects.exit("definitionMarker"); + return markerAfter; + } + return nok(code); + } + + /** + * After marker. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function markerAfter(code) { + // Note: whitespace is optional. + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code); + } + + /** + * Before destination. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function destinationBefore(code) { + return factoryDestination(effects, destinationAfter, + // Note: we don’t need to reset the way `markdown-rs` does. + nok, "definitionDestination", "definitionDestinationLiteral", "definitionDestinationLiteralMarker", "definitionDestinationRaw", "definitionDestinationString")(code); + } + + /** + * After destination. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function destinationAfter(code) { + return effects.attempt(titleBefore, after, after)(code); + } + + /** + * After definition. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return markdownSpace(code) ? factorySpace(effects, afterWhitespace, "whitespace")(code) : afterWhitespace(code); + } + + /** + * After definition, after optional whitespace. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function afterWhitespace(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("definition"); + + // Note: we don’t care about uniqueness. + // It’s likely that that doesn’t happen very frequently. + // It is more likely that it wastes precious time. + self.parser.defined.push(identifier); + + // To do: `markdown-rs` interrupt. + // // You’d be interrupting. + // tokenizer.interrupt = true + return ok(code); + } + return nok(code); + } +} -var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { - if (opts && opts.preserveSymlinks === false) { - realpath(x, cb); - } else { - cb(null, x); - } -}; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeTitleBefore(effects, ok, nok) { + return titleBefore; + + /** + * After destination, at whitespace. + * + * ```markdown + * > | [a]: b + * ^ + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleBefore(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code); + } + + /** + * At title. + * + * ```markdown + * | [a]: b + * > | "c" + * ^ + * ``` + * + * @type {State} + */ + function beforeMarker(code) { + return factoryTitle(effects, titleAfter, nok, "definitionTitle", "definitionTitleMarker", "definitionTitleString")(code); + } + + /** + * After title. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleAfter(code) { + return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, "whitespace")(code) : titleAfterOptionalWhitespace(code); + } + + /** + * After title, after optional whitespace. + * + * ```markdown + * > | [a]: b "c" + * ^ + * ``` + * + * @type {State} + */ + function titleAfterOptionalWhitespace(code) { + return code === null || markdownLineEnding(code) ? ok(code) : nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-indented.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) { - readFile(pkgfile, function (readFileErr, body) { - if (readFileErr) cb(readFileErr); - else { - try { - var pkg = JSON.parse(body); - cb(null, pkg); - } catch (jsonErr) { - cb(null); - } - } - }); -}; -var getPackageCandidates = function getPackageCandidates(x, start, opts) { - var dirs = nodeModulesPaths(start, opts, x); - for (var i = 0; i < dirs.length; i++) { - dirs[i] = path.join(dirs[i], x); - } - return dirs; -}; -module.exports = function resolve(x, options, callback) { - var cb = callback; - var opts = options; - if (typeof options === 'function') { - cb = opts; - opts = {}; - } - if (typeof x !== 'string') { - var err = new TypeError('Path must be a string.'); - return process.nextTick(function () { - cb(err); - }); - } +/** @type {Construct} */ +const codeIndented = { + name: 'codeIndented', + tokenize: tokenizeCodeIndented +}; - opts = normalizeOptions(x, opts); +/** @type {Construct} */ +const furtherStart = { + partial: true, + tokenize: tokenizeFurtherStart +}; - var isFile = opts.isFile || defaultIsFile; - var isDirectory = opts.isDirectory || defaultIsDir; - var readFile = opts.readFile || fs.readFile; - var realpath = opts.realpath || defaultRealpath; - var readPackage = opts.readPackage || defaultReadPackage; - if (opts.readFile && opts.readPackage) { - var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.'); - return process.nextTick(function () { - cb(conflictErr); - }); - } - var packageIterator = opts.packageIterator; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeCodeIndented(effects, ok, nok) { + const self = this; + return start; + + /** + * Start of code (indented). + * + * > **Parsing note**: it is not needed to check if this first line is a + * > filled line (that it has a non-whitespace character), because blank lines + * > are parsed already, so we never run into that. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: manually check if interrupting like `markdown-rs`. + + effects.enter("codeIndented"); + // To do: use an improved `space_or_tab` function like `markdown-rs`, + // so that we can drop the next state. + return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code); + } + + /** + * At start, after 1 or 4 spaces. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1]; + return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code); + } + + /** + * At a break. + * + * ```markdown + * > | aaa + * ^ ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === null) { + return after(code); + } + if (markdownLineEnding(code)) { + return effects.attempt(furtherStart, atBreak, after)(code); + } + effects.enter("codeFlowValue"); + return inside(code); + } + + /** + * In code content. + * + * ```markdown + * > | aaa + * ^^^^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFlowValue"); + return atBreak(code); + } + effects.consume(code); + return inside; + } + + /** @type {State} */ + function after(code) { + effects.exit("codeIndented"); + // To do: allow interrupting like `markdown-rs`. + // Feel free to interrupt. + // tokenizer.interrupt = false + return ok(code); + } +} - var extensions = opts.extensions || ['.js']; - var includeCoreModules = opts.includeCoreModules !== false; - var basedir = opts.basedir || path.dirname(caller()); - var parent = opts.filename || basedir; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeFurtherStart(effects, ok, nok) { + const self = this; + return furtherStart; + + /** + * At eol, trying to parse another indent. + * + * ```markdown + * > | aaa + * ^ + * | bbb + * ``` + * + * @type {State} + */ + function furtherStart(code) { + // To do: improve `lazy` / `pierce` handling. + // If this is a lazy line, it can’t be code. + if (self.parser.lazy[self.now().line]) { + return nok(code); + } + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return furtherStart; + } + + // To do: the code here in `micromark-js` is a bit different from + // `markdown-rs` because there it can attempt spaces. + // We can’t yet. + // + // To do: use an improved `space_or_tab` function like `markdown-rs`, + // so that we can drop the next state. + return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code); + } + + /** + * At start, after 1 or 4 spaces. + * + * ```markdown + * > | aaa + * ^ + * ``` + * + * @type {State} + */ + function afterPrefix(code) { + const tail = self.events[self.events.length - 1]; + return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/heading-atx.js +/** + * @import { + * Construct, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer, + * Token + * } from 'micromark-util-types' + */ - opts.paths = opts.paths || []; - // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory - var absoluteStart = path.resolve(basedir); - maybeRealpath( - realpath, - absoluteStart, - opts, - function (err, realStart) { - if (err) cb(err); - else init(realStart); - } - ); - var res; - function init(basedir) { - if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { - res = path.resolve(basedir, x); - if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; - if ((/\/$/).test(x) && res === basedir) { - loadAsDirectory(res, opts.package, onfile); - } else loadAsFile(res, opts.package, onfile); - } else if (includeCoreModules && isCore(x)) { - return cb(null, x); - } else loadNodeModules(x, basedir, function (err, n, pkg) { - if (err) cb(err); - else if (n) { - return maybeRealpath(realpath, n, opts, function (err, realN) { - if (err) { - cb(err); - } else { - cb(null, realN, pkg); - } - }); - } else { - var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); - moduleError.code = 'MODULE_NOT_FOUND'; - cb(moduleError); - } - }); - } +/** @type {Construct} */ +const headingAtx = { + name: 'headingAtx', + resolve: resolveHeadingAtx, + tokenize: tokenizeHeadingAtx +}; - function onfile(err, m, pkg) { - if (err) cb(err); - else if (m) cb(null, m, pkg); - else loadAsDirectory(res, function (err, d, pkg) { - if (err) cb(err); - else if (d) { - maybeRealpath(realpath, d, opts, function (err, realD) { - if (err) { - cb(err); - } else { - cb(null, realD, pkg); - } - }); - } else { - var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); - moduleError.code = 'MODULE_NOT_FOUND'; - cb(moduleError); - } - }); - } +/** @type {Resolver} */ +function resolveHeadingAtx(events, context) { + let contentEnd = events.length - 2; + let contentStart = 3; + /** @type {Token} */ + let content; + /** @type {Token} */ + let text; - function loadAsFile(x, thePackage, callback) { - var loadAsFilePackage = thePackage; - var cb = callback; - if (typeof loadAsFilePackage === 'function') { - cb = loadAsFilePackage; - loadAsFilePackage = undefined; - } + // Prefix whitespace, part of the opening. + if (events[contentStart][1].type === "whitespace") { + contentStart += 2; + } - var exts = [''].concat(extensions); - load(exts, x, loadAsFilePackage); - - function load(exts, x, loadPackage) { - if (exts.length === 0) return cb(null, undefined, loadPackage); - var file = x + exts[0]; - - var pkg = loadPackage; - if (pkg) onpkg(null, pkg); - else loadpkg(path.dirname(file), onpkg); - - function onpkg(err, pkg_, dir) { - pkg = pkg_; - if (err) return cb(err); - if (dir && pkg && opts.pathFilter) { - var rfile = path.relative(dir, file); - var rel = rfile.slice(0, rfile.length - exts[0].length); - var r = opts.pathFilter(pkg, x, rel); - if (r) return load( - [''].concat(extensions.slice()), - path.resolve(dir, r), - pkg - ); - } - isFile(file, onex); - } - function onex(err, ex) { - if (err) return cb(err); - if (ex) return cb(null, file, pkg); - load(exts.slice(1), x, pkg); - } - } - } + // Suffix whitespace, part of the closing. + if (contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace") { + contentEnd -= 2; + } + if (events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace")) { + contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; + } + if (contentEnd > contentStart) { + content = { + type: "atxHeadingText", + start: events[contentStart][1].start, + end: events[contentEnd][1].end + }; + text = { + type: "chunkText", + start: events[contentStart][1].start, + end: events[contentEnd][1].end, + contentType: "text" + }; + splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]); + } + return events; +} - function loadpkg(dir, cb) { - if (dir === '' || dir === '/') return cb(null); - if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { - return cb(null); - } - if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeHeadingAtx(effects, ok, nok) { + let size = 0; + return start; + + /** + * Start of a heading (atx). + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse indent like `markdown-rs`. + effects.enter("atxHeading"); + return before(code); + } + + /** + * After optional whitespace, at `#`. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + effects.enter("atxHeadingSequence"); + return sequenceOpen(code); + } + + /** + * In opening sequence. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === 35 && size++ < 6) { + effects.consume(code); + return sequenceOpen; + } + + // Always at least one `#`. + if (code === null || markdownLineEndingOrSpace(code)) { + effects.exit("atxHeadingSequence"); + return atBreak(code); + } + return nok(code); + } + + /** + * After something, before something else. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function atBreak(code) { + if (code === 35) { + effects.enter("atxHeadingSequence"); + return sequenceFurther(code); + } + if (code === null || markdownLineEnding(code)) { + effects.exit("atxHeading"); + // To do: interrupt like `markdown-rs`. + // // Feel free to interrupt. + // tokenizer.interrupt = false + return ok(code); + } + if (markdownSpace(code)) { + return factorySpace(effects, atBreak, "whitespace")(code); + } + + // To do: generate `data` tokens, add the `text` token later. + // Needs edit map, see: `markdown.rs`. + effects.enter("atxHeadingText"); + return data(code); + } + + /** + * In further sequence (after whitespace). + * + * Could be normal “visible” hashes in the heading or a final sequence. + * + * ```markdown + * > | ## aa ## + * ^ + * ``` + * + * @type {State} + */ + function sequenceFurther(code) { + if (code === 35) { + effects.consume(code); + return sequenceFurther; + } + effects.exit("atxHeadingSequence"); + return atBreak(code); + } + + /** + * In text. + * + * ```markdown + * > | ## aa + * ^ + * ``` + * + * @type {State} + */ + function data(code) { + if (code === null || code === 35 || markdownLineEndingOrSpace(code)) { + effects.exit("atxHeadingText"); + return atBreak(code); + } + effects.consume(code); + return data; + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/setext-underline.js +/** + * @import { + * Code, + * Construct, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ - maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { - if (unwrapErr) return loadpkg(path.dirname(dir), cb); - var pkgfile = path.join(pkgdir, 'package.json'); - isFile(pkgfile, function (err, ex) { - // on err, ex is false - if (!ex) return loadpkg(path.dirname(dir), cb); - readPackage(readFile, pkgfile, function (err, pkgParam) { - if (err) cb(err); - var pkg = pkgParam; +/** @type {Construct} */ +const setextUnderline = { + name: 'setextUnderline', + resolveTo: resolveToSetextUnderline, + tokenize: tokenizeSetextUnderline +}; - if (pkg && opts.packageFilter) { - pkg = opts.packageFilter(pkg, pkgfile); - } - cb(null, pkg, dir); - }); - }); - }); +/** @type {Resolver} */ +function resolveToSetextUnderline(events, context) { + // To do: resolve like `markdown-rs`. + let index = events.length; + /** @type {number | undefined} */ + let content; + /** @type {number | undefined} */ + let text; + /** @type {number | undefined} */ + let definition; + + // Find the opening of the content. + // It’ll always exist: we don’t tokenize if it isn’t there. + while (index--) { + if (events[index][0] === 'enter') { + if (events[index][1].type === "content") { + content = index; + break; + } + if (events[index][1].type === "paragraph") { + text = index; + } + } + // Exit + else { + if (events[index][1].type === "content") { + // Remove the content end (if needed we’ll add it later) + events.splice(index, 1); + } + if (!definition && events[index][1].type === "definition") { + definition = index; + } + } + } + const heading = { + type: "setextHeading", + start: { + ...events[content][1].start + }, + end: { + ...events[events.length - 1][1].end } + }; - function loadAsDirectory(x, loadAsDirectoryPackage, callback) { - var cb = callback; - var fpkg = loadAsDirectoryPackage; - if (typeof fpkg === 'function') { - cb = fpkg; - fpkg = opts.package; - } + // Change the paragraph to setext heading text. + events[text][1].type = "setextHeadingText"; - maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { - if (unwrapErr) return cb(unwrapErr); - var pkgfile = path.join(pkgdir, 'package.json'); - isFile(pkgfile, function (err, ex) { - if (err) return cb(err); - if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); + // If we have definitions in the content, we’ll keep on having content, + // but we need move it. + if (definition) { + events.splice(text, 0, ['enter', heading, context]); + events.splice(definition + 1, 0, ['exit', events[content][1], context]); + events[content][1].end = { + ...events[definition][1].end + }; + } else { + events[content][1] = heading; + } - readPackage(readFile, pkgfile, function (err, pkgParam) { - if (err) return cb(err); + // Add the heading exit at the end. + events.push(['exit', heading, context]); + return events; +} - var pkg = pkgParam; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeSetextUnderline(effects, ok, nok) { + const self = this; + /** @type {NonNullable<Code>} */ + let marker; + return start; + + /** + * At start of heading (setext) underline. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + let index = self.events.length; + /** @type {boolean | undefined} */ + let paragraph; + // Find an opening. + while (index--) { + // Skip enter/exit of line ending, line prefix, and content. + // We can now either have a definition or a paragraph. + if (self.events[index][1].type !== "lineEnding" && self.events[index][1].type !== "linePrefix" && self.events[index][1].type !== "content") { + paragraph = self.events[index][1].type === "paragraph"; + break; + } + } - if (pkg && opts.packageFilter) { - pkg = opts.packageFilter(pkg, pkgfile); - } + // To do: handle lazy/pierce like `markdown-rs`. + // To do: parse indent like `markdown-rs`. + if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) { + effects.enter("setextHeadingLine"); + marker = code; + return before(code); + } + return nok(code); + } + + /** + * After optional whitespace, at `-` or `=`. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + effects.enter("setextHeadingLineSequence"); + return inside(code); + } + + /** + * In sequence. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === marker) { + effects.consume(code); + return inside; + } + effects.exit("setextHeadingLineSequence"); + return markdownSpace(code) ? factorySpace(effects, after, "lineSuffix")(code) : after(code); + } + + /** + * After sequence, after optional whitespace. + * + * ```markdown + * | aa + * > | == + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("setextHeadingLine"); + return ok(code); + } + return nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-html-tag-name/index.js +/** + * List of lowercase HTML “block” tag names. + * + * The list, when parsing HTML (flow), results in more relaxed rules (condition + * 6). + * Because they are known blocks, the HTML-like syntax doesn’t have to be + * strictly parsed. + * For tag names not in this list, a more strict algorithm (condition 7) is used + * to detect whether the HTML-like syntax is seen as HTML (flow) or not. + * + * This is copied from: + * <https://spec.commonmark.org/0.30/#html-blocks>. + * + * > 👉 **Note**: `search` was added in `CommonMark@0.31`. + */ +const htmlBlockNames = [ + 'address', + 'article', + 'aside', + 'base', + 'basefont', + 'blockquote', + 'body', + 'caption', + 'center', + 'col', + 'colgroup', + 'dd', + 'details', + 'dialog', + 'dir', + 'div', + 'dl', + 'dt', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'frame', + 'frameset', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hr', + 'html', + 'iframe', + 'legend', + 'li', + 'link', + 'main', + 'menu', + 'menuitem', + 'nav', + 'noframes', + 'ol', + 'optgroup', + 'option', + 'p', + 'param', + 'search', + 'section', + 'summary', + 'table', + 'tbody', + 'td', + 'tfoot', + 'th', + 'thead', + 'title', + 'tr', + 'track', + 'ul' +] - if (pkg && pkg.main) { - if (typeof pkg.main !== 'string') { - var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); - mainError.code = 'INVALID_PACKAGE_MAIN'; - return cb(mainError); - } - if (pkg.main === '.' || pkg.main === './') { - pkg.main = 'index'; - } - loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { - if (err) return cb(err); - if (m) return cb(null, m, pkg); - if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); - - var dir = path.resolve(x, pkg.main); - loadAsDirectory(dir, pkg, function (err, n, pkg) { - if (err) return cb(err); - if (n) return cb(null, n, pkg); - loadAsFile(path.join(x, 'index'), pkg, cb); - }); - }); - return; - } +/** + * List of lowercase HTML “raw” tag names. + * + * The list, when parsing HTML (flow), results in HTML that can include lines + * without exiting, until a closing tag also in this list is found (condition + * 1). + * + * This module is copied from: + * <https://spec.commonmark.org/0.30/#html-blocks>. + * + * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`. + */ +const htmlRawNames = ['pre', 'script', 'style', 'textarea'] - loadAsFile(path.join(x, '/index'), pkg, cb); - }); - }); - }); - } +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/html-flow.js +/** + * @import { + * Code, + * Construct, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ - function processDirs(cb, dirs) { - if (dirs.length === 0) return cb(null, undefined); - var dir = dirs[0]; - isDirectory(path.dirname(dir), isdir); - function isdir(err, isdir) { - if (err) return cb(err); - if (!isdir) return processDirs(cb, dirs.slice(1)); - loadAsFile(dir, opts.package, onfile); - } - function onfile(err, m, pkg) { - if (err) return cb(err); - if (m) return cb(null, m, pkg); - loadAsDirectory(dir, opts.package, ondir); - } - function ondir(err, n, pkg) { - if (err) return cb(err); - if (n) return cb(null, n, pkg); - processDirs(cb, dirs.slice(1)); - } - } - function loadNodeModules(x, start, cb) { - var thunk = function () { return getPackageCandidates(x, start, opts); }; - processDirs( - cb, - packageIterator ? packageIterator(x, start, thunk, opts) : thunk() - ); - } +/** @type {Construct} */ +const htmlFlow = { + concrete: true, + name: 'htmlFlow', + resolveTo: resolveToHtmlFlow, + tokenize: tokenizeHtmlFlow }; - -/***/ }), - -/***/ 73881: -/***/ ((module) => { - -module.exports = function () { - // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi - var origPrepareStackTrace = Error.prepareStackTrace; - Error.prepareStackTrace = function (_, stack) { return stack; }; - var stack = (new Error()).stack; - Error.prepareStackTrace = origPrepareStackTrace; - return stack[2].getFileName(); +/** @type {Construct} */ +const blankLineBefore = { + partial: true, + tokenize: tokenizeBlankLineBefore +}; +const nonLazyContinuationStart = { + partial: true, + tokenize: tokenizeNonLazyContinuationStart }; - -/***/ }), - -/***/ 10069: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; - -function specifierIncluded(specifier) { - var parts = specifier.split(' '); - var op = parts.length > 1 ? parts[0] : '='; - var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); - - for (var i = 0; i < 3; ++i) { - var cur = parseInt(current[i] || 0, 10); - var ver = parseInt(versionParts[i] || 0, 10); - if (cur === ver) { - continue; // eslint-disable-line no-restricted-syntax, no-continue - } - if (op === '<') { - return cur < ver; - } else if (op === '>=') { - return cur >= ver; - } else { - return false; - } - } - return op === '>='; -} - -function matchesRange(range) { - var specifiers = range.split(/ ?&& ?/); - if (specifiers.length === 0) { return false; } - for (var i = 0; i < specifiers.length; ++i) { - if (!specifierIncluded(specifiers[i])) { return false; } +/** @type {Resolver} */ +function resolveToHtmlFlow(events) { + let index = events.length; + while (index--) { + if (events[index][0] === 'enter' && events[index][1].type === "htmlFlow") { + break; } - return true; + } + if (index > 1 && events[index - 2][1].type === "linePrefix") { + // Add the prefix start to the HTML token. + events[index][1].start = events[index - 2][1].start; + // Add the prefix start to the HTML line token. + events[index + 1][1].start = events[index - 2][1].start; + // Remove the line prefix. + events.splice(index - 2, 2); + } + return events; } -function versionIncluded(specifierValue) { - if (typeof specifierValue === 'boolean') { return specifierValue; } - if (specifierValue && typeof specifierValue === 'object') { - for (var i = 0; i < specifierValue.length; ++i) { - if (matchesRange(specifierValue[i])) { return true; } - } - return false; - } - return matchesRange(specifierValue); +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeHtmlFlow(effects, ok, nok) { + const self = this; + /** @type {number} */ + let marker; + /** @type {boolean} */ + let closingTag; + /** @type {string} */ + let buffer; + /** @type {number} */ + let index; + /** @type {Code} */ + let markerB; + return start; + + /** + * Start of HTML (flow). + * + * ```markdown + * > | <x /> + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse indent like `markdown-rs`. + return before(code); + } + + /** + * At `<`, after optional whitespace. + * + * ```markdown + * > | <x /> + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + effects.enter("htmlFlow"); + effects.enter("htmlFlowData"); + effects.consume(code); + return open; + } + + /** + * After `<`, at tag name or other stuff. + * + * ```markdown + * > | <x /> + * ^ + * > | <!doctype> + * ^ + * > | <!--xxx--> + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === 33) { + effects.consume(code); + return declarationOpen; + } + if (code === 47) { + effects.consume(code); + closingTag = true; + return tagCloseStart; + } + if (code === 63) { + effects.consume(code); + marker = 3; + // To do: + // tokenizer.concrete = true + // To do: use `markdown-rs` style interrupt. + // While we’re in an instruction instead of a declaration, we’re on a `?` + // right now, so we do need to search for `>`, similar to declarations. + return self.interrupt ? ok : continuationDeclarationInside; + } + + // ASCII alphabetical. + if (asciiAlpha(code)) { + // Always the case. + effects.consume(code); + buffer = String.fromCharCode(code); + return tagName; + } + return nok(code); + } + + /** + * After `<!`, at declaration, comment, or CDATA. + * + * ```markdown + * > | <!doctype> + * ^ + * > | <!--xxx--> + * ^ + * > | <![CDATA[>&<]]> + * ^ + * ``` + * + * @type {State} + */ + function declarationOpen(code) { + if (code === 45) { + effects.consume(code); + marker = 2; + return commentOpenInside; + } + if (code === 91) { + effects.consume(code); + marker = 5; + index = 0; + return cdataOpenInside; + } + + // ASCII alphabetical. + if (asciiAlpha(code)) { + effects.consume(code); + marker = 4; + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuationDeclarationInside; + } + return nok(code); + } + + /** + * After `<!-`, inside a comment, at another `-`. + * + * ```markdown + * > | <!--xxx--> + * ^ + * ``` + * + * @type {State} + */ + function commentOpenInside(code) { + if (code === 45) { + effects.consume(code); + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuationDeclarationInside; + } + return nok(code); + } + + /** + * After `<![`, inside CDATA, expecting `CDATA[`. + * + * ```markdown + * > | <![CDATA[>&<]]> + * ^^^^^^ + * ``` + * + * @type {State} + */ + function cdataOpenInside(code) { + const value = "CDATA["; + if (code === value.charCodeAt(index++)) { + effects.consume(code); + if (index === value.length) { + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuation; + } + return cdataOpenInside; + } + return nok(code); + } + + /** + * After `</`, in closing tag, at tag name. + * + * ```markdown + * > | </x> + * ^ + * ``` + * + * @type {State} + */ + function tagCloseStart(code) { + if (asciiAlpha(code)) { + // Always the case. + effects.consume(code); + buffer = String.fromCharCode(code); + return tagName; + } + return nok(code); + } + + /** + * In tag name. + * + * ```markdown + * > | <ab> + * ^^ + * > | </ab> + * ^^ + * ``` + * + * @type {State} + */ + function tagName(code) { + if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + const slash = code === 47; + const name = buffer.toLowerCase(); + if (!slash && !closingTag && htmlRawNames.includes(name)) { + marker = 1; + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok(code) : continuation(code); + } + if (htmlBlockNames.includes(buffer.toLowerCase())) { + marker = 6; + if (slash) { + effects.consume(code); + return basicSelfClosing; + } + + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok(code) : continuation(code); + } + marker = 7; + // Do not support complete HTML when interrupting. + return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code); + } + + // ASCII alphanumerical and `-`. + if (code === 45 || asciiAlphanumeric(code)) { + effects.consume(code); + buffer += String.fromCharCode(code); + return tagName; + } + return nok(code); + } + + /** + * After closing slash of a basic tag name. + * + * ```markdown + * > | <div/> + * ^ + * ``` + * + * @type {State} + */ + function basicSelfClosing(code) { + if (code === 62) { + effects.consume(code); + // // Do not form containers. + // tokenizer.concrete = true + return self.interrupt ? ok : continuation; + } + return nok(code); + } + + /** + * After closing slash of a complete tag name. + * + * ```markdown + * > | <x/> + * ^ + * ``` + * + * @type {State} + */ + function completeClosingTagAfter(code) { + if (markdownSpace(code)) { + effects.consume(code); + return completeClosingTagAfter; + } + return completeEnd(code); + } + + /** + * At an attribute name. + * + * At first, this state is used after a complete tag name, after whitespace, + * where it expects optional attributes or the end of the tag. + * It is also reused after attributes, when expecting more optional + * attributes. + * + * ```markdown + * > | <a /> + * ^ + * > | <a :b> + * ^ + * > | <a _b> + * ^ + * > | <a b> + * ^ + * > | <a > + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeNameBefore(code) { + if (code === 47) { + effects.consume(code); + return completeEnd; + } + + // ASCII alphanumerical and `:` and `_`. + if (code === 58 || code === 95 || asciiAlpha(code)) { + effects.consume(code); + return completeAttributeName; + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAttributeNameBefore; + } + return completeEnd(code); + } + + /** + * In attribute name. + * + * ```markdown + * > | <a :b> + * ^ + * > | <a _b> + * ^ + * > | <a b> + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeName(code) { + // ASCII alphanumerical and `-`, `.`, `:`, and `_`. + if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) { + effects.consume(code); + return completeAttributeName; + } + return completeAttributeNameAfter(code); + } + + /** + * After attribute name, at an optional initializer, the end of the tag, or + * whitespace. + * + * ```markdown + * > | <a b> + * ^ + * > | <a b=c> + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeNameAfter(code) { + if (code === 61) { + effects.consume(code); + return completeAttributeValueBefore; + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAttributeNameAfter; + } + return completeAttributeNameBefore(code); + } + + /** + * Before unquoted, double quoted, or single quoted attribute value, allowing + * whitespace. + * + * ```markdown + * > | <a b=c> + * ^ + * > | <a b="c"> + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueBefore(code) { + if (code === null || code === 60 || code === 61 || code === 62 || code === 96) { + return nok(code); + } + if (code === 34 || code === 39) { + effects.consume(code); + markerB = code; + return completeAttributeValueQuoted; + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAttributeValueBefore; + } + return completeAttributeValueUnquoted(code); + } + + /** + * In double or single quoted attribute value. + * + * ```markdown + * > | <a b="c"> + * ^ + * > | <a b='c'> + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueQuoted(code) { + if (code === markerB) { + effects.consume(code); + markerB = null; + return completeAttributeValueQuotedAfter; + } + if (code === null || markdownLineEnding(code)) { + return nok(code); + } + effects.consume(code); + return completeAttributeValueQuoted; + } + + /** + * In unquoted attribute value. + * + * ```markdown + * > | <a b=c> + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueUnquoted(code) { + if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) { + return completeAttributeNameAfter(code); + } + effects.consume(code); + return completeAttributeValueUnquoted; + } + + /** + * After double or single quoted attribute value, before whitespace or the + * end of the tag. + * + * ```markdown + * > | <a b="c"> + * ^ + * ``` + * + * @type {State} + */ + function completeAttributeValueQuotedAfter(code) { + if (code === 47 || code === 62 || markdownSpace(code)) { + return completeAttributeNameBefore(code); + } + return nok(code); + } + + /** + * In certain circumstances of a complete tag where only an `>` is allowed. + * + * ```markdown + * > | <a b="c"> + * ^ + * ``` + * + * @type {State} + */ + function completeEnd(code) { + if (code === 62) { + effects.consume(code); + return completeAfter; + } + return nok(code); + } + + /** + * After `>` in a complete tag. + * + * ```markdown + * > | <x> + * ^ + * ``` + * + * @type {State} + */ + function completeAfter(code) { + if (code === null || markdownLineEnding(code)) { + // // Do not form containers. + // tokenizer.concrete = true + return continuation(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return completeAfter; + } + return nok(code); + } + + /** + * In continuation of any HTML kind. + * + * ```markdown + * > | <!--xxx--> + * ^ + * ``` + * + * @type {State} + */ + function continuation(code) { + if (code === 45 && marker === 2) { + effects.consume(code); + return continuationCommentInside; + } + if (code === 60 && marker === 1) { + effects.consume(code); + return continuationRawTagOpen; + } + if (code === 62 && marker === 4) { + effects.consume(code); + return continuationClose; + } + if (code === 63 && marker === 3) { + effects.consume(code); + return continuationDeclarationInside; + } + if (code === 93 && marker === 5) { + effects.consume(code); + return continuationCdataInside; + } + if (markdownLineEnding(code) && (marker === 6 || marker === 7)) { + effects.exit("htmlFlowData"); + return effects.check(blankLineBefore, continuationAfter, continuationStart)(code); + } + if (code === null || markdownLineEnding(code)) { + effects.exit("htmlFlowData"); + return continuationStart(code); + } + effects.consume(code); + return continuation; + } + + /** + * In continuation, at eol. + * + * ```markdown + * > | <x> + * ^ + * | asd + * ``` + * + * @type {State} + */ + function continuationStart(code) { + return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code); + } + + /** + * In continuation, at eol, before non-lazy content. + * + * ```markdown + * > | <x> + * ^ + * | asd + * ``` + * + * @type {State} + */ + function continuationStartNonLazy(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return continuationBefore; + } + + /** + * In continuation, before non-lazy content. + * + * ```markdown + * | <x> + * > | asd + * ^ + * ``` + * + * @type {State} + */ + function continuationBefore(code) { + if (code === null || markdownLineEnding(code)) { + return continuationStart(code); + } + effects.enter("htmlFlowData"); + return continuation(code); + } + + /** + * In comment continuation, after one `-`, expecting another. + * + * ```markdown + * > | <!--xxx--> + * ^ + * ``` + * + * @type {State} + */ + function continuationCommentInside(code) { + if (code === 45) { + effects.consume(code); + return continuationDeclarationInside; + } + return continuation(code); + } + + /** + * In raw continuation, after `<`, at `/`. + * + * ```markdown + * > | <script>console.log(1)</script> + * ^ + * ``` + * + * @type {State} + */ + function continuationRawTagOpen(code) { + if (code === 47) { + effects.consume(code); + buffer = ''; + return continuationRawEndTag; + } + return continuation(code); + } + + /** + * In raw continuation, after `</`, in a raw tag name. + * + * ```markdown + * > | <script>console.log(1)</script> + * ^^^^^^ + * ``` + * + * @type {State} + */ + function continuationRawEndTag(code) { + if (code === 62) { + const name = buffer.toLowerCase(); + if (htmlRawNames.includes(name)) { + effects.consume(code); + return continuationClose; + } + return continuation(code); + } + if (asciiAlpha(code) && buffer.length < 8) { + // Always the case. + effects.consume(code); + buffer += String.fromCharCode(code); + return continuationRawEndTag; + } + return continuation(code); + } + + /** + * In cdata continuation, after `]`, expecting `]>`. + * + * ```markdown + * > | <![CDATA[>&<]]> + * ^ + * ``` + * + * @type {State} + */ + function continuationCdataInside(code) { + if (code === 93) { + effects.consume(code); + return continuationDeclarationInside; + } + return continuation(code); + } + + /** + * In declaration or instruction continuation, at `>`. + * + * ```markdown + * > | <!--> + * ^ + * > | <?> + * ^ + * > | <!q> + * ^ + * > | <!--ab--> + * ^ + * > | <![CDATA[>&<]]> + * ^ + * ``` + * + * @type {State} + */ + function continuationDeclarationInside(code) { + if (code === 62) { + effects.consume(code); + return continuationClose; + } + + // More dashes. + if (code === 45 && marker === 2) { + effects.consume(code); + return continuationDeclarationInside; + } + return continuation(code); + } + + /** + * In closed continuation: everything we get until the eol/eof is part of it. + * + * ```markdown + * > | <!doctype> + * ^ + * ``` + * + * @type {State} + */ + function continuationClose(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("htmlFlowData"); + return continuationAfter(code); + } + effects.consume(code); + return continuationClose; + } + + /** + * Done. + * + * ```markdown + * > | <!doctype> + * ^ + * ``` + * + * @type {State} + */ + function continuationAfter(code) { + effects.exit("htmlFlow"); + // // Feel free to interrupt. + // tokenizer.interrupt = false + // // No longer concrete. + // tokenizer.concrete = false + return ok(code); + } } -var data = __nccwpck_require__(98398); - -var core = {}; -for (var mod in data) { // eslint-disable-line no-restricted-syntax - if (Object.prototype.hasOwnProperty.call(data, mod)) { - core[mod] = versionIncluded(data[mod]); - } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeNonLazyContinuationStart(effects, ok, nok) { + const self = this; + return start; + + /** + * At eol, before continuation. + * + * ```markdown + * > | * ```js + * ^ + * | b + * ``` + * + * @type {State} + */ + function start(code) { + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return after; + } + return nok(code); + } + + /** + * A continuation. + * + * ```markdown + * | * ```js + * > | b + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return self.parser.lazy[self.now().line] ? nok(code) : ok(code); + } } -module.exports = core; - -/***/ }), +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeBlankLineBefore(effects, ok, nok) { + return start; + + /** + * Before eol, expecting blank line. + * + * ```markdown + * > | <div> + * ^ + * | + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return effects.attempt(blankLine, ok, nok); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-fenced.js +/** + * @import { + * Code, + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -/***/ 35522: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var isCoreModule = __nccwpck_require__(18746); -module.exports = function isCore(x) { - return isCoreModule(x); +/** @type {Construct} */ +const nonLazyContinuation = { + partial: true, + tokenize: tokenizeNonLazyContinuation }; +/** @type {Construct} */ +const codeFenced = { + concrete: true, + name: 'codeFenced', + tokenize: tokenizeCodeFenced +}; -/***/ }), +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeCodeFenced(effects, ok, nok) { + const self = this; + /** @type {Construct} */ + const closeStart = { + partial: true, + tokenize: tokenizeCloseStart + }; + let initialPrefix = 0; + let sizeOpen = 0; + /** @type {NonNullable<Code>} */ + let marker; + return start; + + /** + * Start of code. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: parse whitespace like `markdown-rs`. + return beforeSequenceOpen(code); + } + + /** + * In opening fence, after prefix, at sequence. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function beforeSequenceOpen(code) { + const tail = self.events[self.events.length - 1]; + initialPrefix = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; + marker = code; + effects.enter("codeFenced"); + effects.enter("codeFencedFence"); + effects.enter("codeFencedFenceSequence"); + return sequenceOpen(code); + } + + /** + * In opening fence sequence. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === marker) { + sizeOpen++; + effects.consume(code); + return sequenceOpen; + } + if (sizeOpen < 3) { + return nok(code); + } + effects.exit("codeFencedFenceSequence"); + return markdownSpace(code) ? factorySpace(effects, infoBefore, "whitespace")(code) : infoBefore(code); + } + + /** + * In opening fence, after the sequence (and optional whitespace), before info. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function infoBefore(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFencedFence"); + return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); + } + effects.enter("codeFencedFenceInfo"); + effects.enter("chunkString", { + contentType: "string" + }); + return info(code); + } + + /** + * In info. + * + * ```markdown + * > | ~~~js + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function info(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceInfo"); + return infoBefore(code); + } + if (markdownSpace(code)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceInfo"); + return factorySpace(effects, metaBefore, "whitespace")(code); + } + if (code === 96 && code === marker) { + return nok(code); + } + effects.consume(code); + return info; + } + + /** + * In opening fence, after info and whitespace, before meta. + * + * ```markdown + * > | ~~~js eval + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function metaBefore(code) { + if (code === null || markdownLineEnding(code)) { + return infoBefore(code); + } + effects.enter("codeFencedFenceMeta"); + effects.enter("chunkString", { + contentType: "string" + }); + return meta(code); + } + + /** + * In meta. + * + * ```markdown + * > | ~~~js eval + * ^ + * | alert(1) + * | ~~~ + * ``` + * + * @type {State} + */ + function meta(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("chunkString"); + effects.exit("codeFencedFenceMeta"); + return infoBefore(code); + } + if (code === 96 && code === marker) { + return nok(code); + } + effects.consume(code); + return meta; + } + + /** + * At eol/eof in code, before a non-lazy closing fence or content. + * + * ```markdown + * > | ~~~js + * ^ + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function atNonLazyBreak(code) { + return effects.attempt(closeStart, after, contentBefore)(code); + } + + /** + * Before code content, not a closing fence, at eol. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentBefore(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return contentStart; + } + + /** + * Before code content, not a closing fence. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentStart(code) { + return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, "linePrefix", initialPrefix + 1)(code) : beforeContentChunk(code); + } + + /** + * Before code content, after optional prefix. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^ + * | ~~~ + * ``` + * + * @type {State} + */ + function beforeContentChunk(code) { + if (code === null || markdownLineEnding(code)) { + return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); + } + effects.enter("codeFlowValue"); + return contentChunk(code); + } + + /** + * In code content. + * + * ```markdown + * | ~~~js + * > | alert(1) + * ^^^^^^^^ + * | ~~~ + * ``` + * + * @type {State} + */ + function contentChunk(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFlowValue"); + return beforeContentChunk(code); + } + effects.consume(code); + return contentChunk; + } + + /** + * After code. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + effects.exit("codeFenced"); + return ok(code); + } + + /** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ + function tokenizeCloseStart(effects, ok, nok) { + let size = 0; + return startBefore; -/***/ 5507: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** + * + * + * @type {State} + */ + function startBefore(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return start; + } -var path = __nccwpck_require__(71017); -var parse = path.parse || __nccwpck_require__(42742); + /** + * Before closing fence, at optional whitespace. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Always populated by defaults. -var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { - var prefix = '/'; - if ((/^([A-Za-z]:)/).test(absoluteStart)) { - prefix = ''; - } else if ((/^\\\\/).test(absoluteStart)) { - prefix = '\\\\'; + // To do: `enter` here or in next state? + effects.enter("codeFencedFence"); + return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code); } - var paths = [absoluteStart]; - var parsed = parse(absoluteStart); - while (parsed.dir !== paths[paths.length - 1]) { - paths.push(parsed.dir); - parsed = parse(parsed.dir); + /** + * In closing fence, after optional whitespace, at sequence. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function beforeSequenceClose(code) { + if (code === marker) { + effects.enter("codeFencedFenceSequence"); + return sequenceClose(code); + } + return nok(code); } - return paths.reduce(function (dirs, aPath) { - return dirs.concat(modules.map(function (moduleDir) { - return path.resolve(prefix, aPath, moduleDir); - })); - }, []); -}; - -module.exports = function nodeModulesPaths(start, opts, request) { - var modules = opts && opts.moduleDirectory - ? [].concat(opts.moduleDirectory) - : ['node_modules']; - - if (opts && typeof opts.paths === 'function') { - return opts.paths( - request, - start, - function () { return getNodeModulesDirs(start, modules); }, - opts - ); + /** + * In closing fence sequence. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} + */ + function sequenceClose(code) { + if (code === marker) { + size++; + effects.consume(code); + return sequenceClose; + } + if (size >= sizeOpen) { + effects.exit("codeFencedFenceSequence"); + return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, "whitespace")(code) : sequenceCloseAfter(code); + } + return nok(code); } - var dirs = getNodeModulesDirs(start, modules); - return opts && opts.paths ? dirs.concat(opts.paths) : dirs; -}; - - -/***/ }), - -/***/ 55415: -/***/ ((module) => { - -module.exports = function (x, opts) { /** - * This file is purposefully a passthrough. It's expected that third-party - * environments will override it at runtime in order to inject special logic - * into `resolve` (by manipulating the options). One such example is the PnP - * code path in Yarn. + * After closing fence sequence, after optional whitespace. + * + * ```markdown + * | ~~~js + * | alert(1) + * > | ~~~ + * ^ + * ``` + * + * @type {State} */ + function sequenceCloseAfter(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit("codeFencedFence"); + return ok(code); + } + return nok(code); + } + } +} - return opts || {}; -}; - - -/***/ }), +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeNonLazyContinuation(effects, ok, nok) { + const self = this; + return start; + + /** + * + * + * @type {State} + */ + function start(code) { + if (code === null) { + return nok(code); + } + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return lineStart; + } + + /** + * + * + * @type {State} + */ + function lineStart(code) { + return self.parser.lazy[self.now().line] ? nok(code) : ok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/character-entities/index.js +/** + * Map of named character references. + * + * @type {Record<string, string>} + */ +const characterEntities = { + AElig: 'Æ', + AMP: '&', + Aacute: 'Á', + Abreve: 'Ă', + Acirc: 'Â', + Acy: 'А', + Afr: '𝔄', + Agrave: 'À', + Alpha: 'Α', + Amacr: 'Ā', + And: '⩓', + Aogon: 'Ą', + Aopf: '𝔸', + ApplyFunction: '⁡', + Aring: 'Å', + Ascr: '𝒜', + Assign: '≔', + Atilde: 'Ã', + Auml: 'Ä', + Backslash: '∖', + Barv: '⫧', + Barwed: '⌆', + Bcy: 'Б', + Because: '∵', + Bernoullis: 'ℬ', + Beta: 'Β', + Bfr: '𝔅', + Bopf: '𝔹', + Breve: '˘', + Bscr: 'ℬ', + Bumpeq: '≎', + CHcy: 'Ч', + COPY: '©', + Cacute: 'Ć', + Cap: '⋒', + CapitalDifferentialD: 'ⅅ', + Cayleys: 'ℭ', + Ccaron: 'Č', + Ccedil: 'Ç', + Ccirc: 'Ĉ', + Cconint: '∰', + Cdot: 'Ċ', + Cedilla: '¸', + CenterDot: '·', + Cfr: 'ℭ', + Chi: 'Χ', + CircleDot: '⊙', + CircleMinus: '⊖', + CirclePlus: '⊕', + CircleTimes: '⊗', + ClockwiseContourIntegral: '∲', + CloseCurlyDoubleQuote: '”', + CloseCurlyQuote: '’', + Colon: '∷', + Colone: '⩴', + Congruent: '≡', + Conint: '∯', + ContourIntegral: '∮', + Copf: 'ℂ', + Coproduct: '∐', + CounterClockwiseContourIntegral: '∳', + Cross: '⨯', + Cscr: '𝒞', + Cup: '⋓', + CupCap: '≍', + DD: 'ⅅ', + DDotrahd: '⤑', + DJcy: 'Ђ', + DScy: 'Ѕ', + DZcy: 'Џ', + Dagger: '‡', + Darr: '↡', + Dashv: '⫤', + Dcaron: 'Ď', + Dcy: 'Д', + Del: '∇', + Delta: 'Δ', + Dfr: '𝔇', + DiacriticalAcute: '´', + DiacriticalDot: '˙', + DiacriticalDoubleAcute: '˝', + DiacriticalGrave: '`', + DiacriticalTilde: '˜', + Diamond: '⋄', + DifferentialD: 'ⅆ', + Dopf: '𝔻', + Dot: '¨', + DotDot: '⃜', + DotEqual: '≐', + DoubleContourIntegral: '∯', + DoubleDot: '¨', + DoubleDownArrow: '⇓', + DoubleLeftArrow: '⇐', + DoubleLeftRightArrow: '⇔', + DoubleLeftTee: '⫤', + DoubleLongLeftArrow: '⟸', + DoubleLongLeftRightArrow: '⟺', + DoubleLongRightArrow: '⟹', + DoubleRightArrow: '⇒', + DoubleRightTee: '⊨', + DoubleUpArrow: '⇑', + DoubleUpDownArrow: '⇕', + DoubleVerticalBar: '∥', + DownArrow: '↓', + DownArrowBar: '⤓', + DownArrowUpArrow: '⇵', + DownBreve: '̑', + DownLeftRightVector: '⥐', + DownLeftTeeVector: '⥞', + DownLeftVector: '↽', + DownLeftVectorBar: '⥖', + DownRightTeeVector: '⥟', + DownRightVector: '⇁', + DownRightVectorBar: '⥗', + DownTee: '⊤', + DownTeeArrow: '↧', + Downarrow: '⇓', + Dscr: '𝒟', + Dstrok: 'Đ', + ENG: 'Ŋ', + ETH: 'Ð', + Eacute: 'É', + Ecaron: 'Ě', + Ecirc: 'Ê', + Ecy: 'Э', + Edot: 'Ė', + Efr: '𝔈', + Egrave: 'È', + Element: '∈', + Emacr: 'Ē', + EmptySmallSquare: '◻', + EmptyVerySmallSquare: '▫', + Eogon: 'Ę', + Eopf: '𝔼', + Epsilon: 'Ε', + Equal: '⩵', + EqualTilde: '≂', + Equilibrium: '⇌', + Escr: 'ℰ', + Esim: '⩳', + Eta: 'Η', + Euml: 'Ë', + Exists: '∃', + ExponentialE: 'ⅇ', + Fcy: 'Ф', + Ffr: '𝔉', + FilledSmallSquare: '◼', + FilledVerySmallSquare: '▪', + Fopf: '𝔽', + ForAll: '∀', + Fouriertrf: 'ℱ', + Fscr: 'ℱ', + GJcy: 'Ѓ', + GT: '>', + Gamma: 'Γ', + Gammad: 'Ϝ', + Gbreve: 'Ğ', + Gcedil: 'Ģ', + Gcirc: 'Ĝ', + Gcy: 'Г', + Gdot: 'Ġ', + Gfr: '𝔊', + Gg: '⋙', + Gopf: '𝔾', + GreaterEqual: '≥', + GreaterEqualLess: '⋛', + GreaterFullEqual: '≧', + GreaterGreater: '⪢', + GreaterLess: '≷', + GreaterSlantEqual: '⩾', + GreaterTilde: '≳', + Gscr: '𝒢', + Gt: '≫', + HARDcy: 'Ъ', + Hacek: 'ˇ', + Hat: '^', + Hcirc: 'Ĥ', + Hfr: 'ℌ', + HilbertSpace: 'ℋ', + Hopf: 'ℍ', + HorizontalLine: '─', + Hscr: 'ℋ', + Hstrok: 'Ħ', + HumpDownHump: '≎', + HumpEqual: '≏', + IEcy: 'Е', + IJlig: 'IJ', + IOcy: 'Ё', + Iacute: 'Í', + Icirc: 'Î', + Icy: 'И', + Idot: 'İ', + Ifr: 'ℑ', + Igrave: 'Ì', + Im: 'ℑ', + Imacr: 'Ī', + ImaginaryI: 'ⅈ', + Implies: '⇒', + Int: '∬', + Integral: '∫', + Intersection: '⋂', + InvisibleComma: '⁣', + InvisibleTimes: '⁢', + Iogon: 'Į', + Iopf: '𝕀', + Iota: 'Ι', + Iscr: 'ℐ', + Itilde: 'Ĩ', + Iukcy: 'І', + Iuml: 'Ï', + Jcirc: 'Ĵ', + Jcy: 'Й', + Jfr: '𝔍', + Jopf: '𝕁', + Jscr: '𝒥', + Jsercy: 'Ј', + Jukcy: 'Є', + KHcy: 'Х', + KJcy: 'Ќ', + Kappa: 'Κ', + Kcedil: 'Ķ', + Kcy: 'К', + Kfr: '𝔎', + Kopf: '𝕂', + Kscr: '𝒦', + LJcy: 'Љ', + LT: '<', + Lacute: 'Ĺ', + Lambda: 'Λ', + Lang: '⟪', + Laplacetrf: 'ℒ', + Larr: '↞', + Lcaron: 'Ľ', + Lcedil: 'Ļ', + Lcy: 'Л', + LeftAngleBracket: '⟨', + LeftArrow: '←', + LeftArrowBar: '⇤', + LeftArrowRightArrow: '⇆', + LeftCeiling: '⌈', + LeftDoubleBracket: '⟦', + LeftDownTeeVector: '⥡', + LeftDownVector: '⇃', + LeftDownVectorBar: '⥙', + LeftFloor: '⌊', + LeftRightArrow: '↔', + LeftRightVector: '⥎', + LeftTee: '⊣', + LeftTeeArrow: '↤', + LeftTeeVector: '⥚', + LeftTriangle: '⊲', + LeftTriangleBar: '⧏', + LeftTriangleEqual: '⊴', + LeftUpDownVector: '⥑', + LeftUpTeeVector: '⥠', + LeftUpVector: '↿', + LeftUpVectorBar: '⥘', + LeftVector: '↼', + LeftVectorBar: '⥒', + Leftarrow: '⇐', + Leftrightarrow: '⇔', + LessEqualGreater: '⋚', + LessFullEqual: '≦', + LessGreater: '≶', + LessLess: '⪡', + LessSlantEqual: '⩽', + LessTilde: '≲', + Lfr: '𝔏', + Ll: '⋘', + Lleftarrow: '⇚', + Lmidot: 'Ŀ', + LongLeftArrow: '⟵', + LongLeftRightArrow: '⟷', + LongRightArrow: '⟶', + Longleftarrow: '⟸', + Longleftrightarrow: '⟺', + Longrightarrow: '⟹', + Lopf: '𝕃', + LowerLeftArrow: '↙', + LowerRightArrow: '↘', + Lscr: 'ℒ', + Lsh: '↰', + Lstrok: 'Ł', + Lt: '≪', + Map: '⤅', + Mcy: 'М', + MediumSpace: ' ', + Mellintrf: 'ℳ', + Mfr: '𝔐', + MinusPlus: '∓', + Mopf: '𝕄', + Mscr: 'ℳ', + Mu: 'Μ', + NJcy: 'Њ', + Nacute: 'Ń', + Ncaron: 'Ň', + Ncedil: 'Ņ', + Ncy: 'Н', + NegativeMediumSpace: '​', + NegativeThickSpace: '​', + NegativeThinSpace: '​', + NegativeVeryThinSpace: '​', + NestedGreaterGreater: '≫', + NestedLessLess: '≪', + NewLine: '\n', + Nfr: '𝔑', + NoBreak: '⁠', + NonBreakingSpace: ' ', + Nopf: 'ℕ', + Not: '⫬', + NotCongruent: '≢', + NotCupCap: '≭', + NotDoubleVerticalBar: '∦', + NotElement: '∉', + NotEqual: '≠', + NotEqualTilde: '≂̸', + NotExists: '∄', + NotGreater: '≯', + NotGreaterEqual: '≱', + NotGreaterFullEqual: '≧̸', + NotGreaterGreater: '≫̸', + NotGreaterLess: '≹', + NotGreaterSlantEqual: '⩾̸', + NotGreaterTilde: '≵', + NotHumpDownHump: '≎̸', + NotHumpEqual: '≏̸', + NotLeftTriangle: '⋪', + NotLeftTriangleBar: '⧏̸', + NotLeftTriangleEqual: '⋬', + NotLess: '≮', + NotLessEqual: '≰', + NotLessGreater: '≸', + NotLessLess: '≪̸', + NotLessSlantEqual: '⩽̸', + NotLessTilde: '≴', + NotNestedGreaterGreater: '⪢̸', + NotNestedLessLess: '⪡̸', + NotPrecedes: '⊀', + NotPrecedesEqual: '⪯̸', + NotPrecedesSlantEqual: '⋠', + NotReverseElement: '∌', + NotRightTriangle: '⋫', + NotRightTriangleBar: '⧐̸', + NotRightTriangleEqual: '⋭', + NotSquareSubset: '⊏̸', + NotSquareSubsetEqual: '⋢', + NotSquareSuperset: '⊐̸', + NotSquareSupersetEqual: '⋣', + NotSubset: '⊂⃒', + NotSubsetEqual: '⊈', + NotSucceeds: '⊁', + NotSucceedsEqual: '⪰̸', + NotSucceedsSlantEqual: '⋡', + NotSucceedsTilde: '≿̸', + NotSuperset: '⊃⃒', + NotSupersetEqual: '⊉', + NotTilde: '≁', + NotTildeEqual: '≄', + NotTildeFullEqual: '≇', + NotTildeTilde: '≉', + NotVerticalBar: '∤', + Nscr: '𝒩', + Ntilde: 'Ñ', + Nu: 'Ν', + OElig: 'Œ', + Oacute: 'Ó', + Ocirc: 'Ô', + Ocy: 'О', + Odblac: 'Ő', + Ofr: '𝔒', + Ograve: 'Ò', + Omacr: 'Ō', + Omega: 'Ω', + Omicron: 'Ο', + Oopf: '𝕆', + OpenCurlyDoubleQuote: '“', + OpenCurlyQuote: '‘', + Or: '⩔', + Oscr: '𝒪', + Oslash: 'Ø', + Otilde: 'Õ', + Otimes: '⨷', + Ouml: 'Ö', + OverBar: '‾', + OverBrace: '⏞', + OverBracket: '⎴', + OverParenthesis: '⏜', + PartialD: '∂', + Pcy: 'П', + Pfr: '𝔓', + Phi: 'Φ', + Pi: 'Π', + PlusMinus: '±', + Poincareplane: 'ℌ', + Popf: 'ℙ', + Pr: '⪻', + Precedes: '≺', + PrecedesEqual: '⪯', + PrecedesSlantEqual: '≼', + PrecedesTilde: '≾', + Prime: '″', + Product: '∏', + Proportion: '∷', + Proportional: '∝', + Pscr: '𝒫', + Psi: 'Ψ', + QUOT: '"', + Qfr: '𝔔', + Qopf: 'ℚ', + Qscr: '𝒬', + RBarr: '⤐', + REG: '®', + Racute: 'Ŕ', + Rang: '⟫', + Rarr: '↠', + Rarrtl: '⤖', + Rcaron: 'Ř', + Rcedil: 'Ŗ', + Rcy: 'Р', + Re: 'ℜ', + ReverseElement: '∋', + ReverseEquilibrium: '⇋', + ReverseUpEquilibrium: '⥯', + Rfr: 'ℜ', + Rho: 'Ρ', + RightAngleBracket: '⟩', + RightArrow: '→', + RightArrowBar: '⇥', + RightArrowLeftArrow: '⇄', + RightCeiling: '⌉', + RightDoubleBracket: '⟧', + RightDownTeeVector: '⥝', + RightDownVector: '⇂', + RightDownVectorBar: '⥕', + RightFloor: '⌋', + RightTee: '⊢', + RightTeeArrow: '↦', + RightTeeVector: '⥛', + RightTriangle: '⊳', + RightTriangleBar: '⧐', + RightTriangleEqual: '⊵', + RightUpDownVector: '⥏', + RightUpTeeVector: '⥜', + RightUpVector: '↾', + RightUpVectorBar: '⥔', + RightVector: '⇀', + RightVectorBar: '⥓', + Rightarrow: '⇒', + Ropf: 'ℝ', + RoundImplies: '⥰', + Rrightarrow: '⇛', + Rscr: 'ℛ', + Rsh: '↱', + RuleDelayed: '⧴', + SHCHcy: 'Щ', + SHcy: 'Ш', + SOFTcy: 'Ь', + Sacute: 'Ś', + Sc: '⪼', + Scaron: 'Š', + Scedil: 'Ş', + Scirc: 'Ŝ', + Scy: 'С', + Sfr: '𝔖', + ShortDownArrow: '↓', + ShortLeftArrow: '←', + ShortRightArrow: '→', + ShortUpArrow: '↑', + Sigma: 'Σ', + SmallCircle: '∘', + Sopf: '𝕊', + Sqrt: '√', + Square: '□', + SquareIntersection: '⊓', + SquareSubset: '⊏', + SquareSubsetEqual: '⊑', + SquareSuperset: '⊐', + SquareSupersetEqual: '⊒', + SquareUnion: '⊔', + Sscr: '𝒮', + Star: '⋆', + Sub: '⋐', + Subset: '⋐', + SubsetEqual: '⊆', + Succeeds: '≻', + SucceedsEqual: '⪰', + SucceedsSlantEqual: '≽', + SucceedsTilde: '≿', + SuchThat: '∋', + Sum: '∑', + Sup: '⋑', + Superset: '⊃', + SupersetEqual: '⊇', + Supset: '⋑', + THORN: 'Þ', + TRADE: '™', + TSHcy: 'Ћ', + TScy: 'Ц', + Tab: '\t', + Tau: 'Τ', + Tcaron: 'Ť', + Tcedil: 'Ţ', + Tcy: 'Т', + Tfr: '𝔗', + Therefore: '∴', + Theta: 'Θ', + ThickSpace: '  ', + ThinSpace: ' ', + Tilde: '∼', + TildeEqual: '≃', + TildeFullEqual: '≅', + TildeTilde: '≈', + Topf: '𝕋', + TripleDot: '⃛', + Tscr: '𝒯', + Tstrok: 'Ŧ', + Uacute: 'Ú', + Uarr: '↟', + Uarrocir: '⥉', + Ubrcy: 'Ў', + Ubreve: 'Ŭ', + Ucirc: 'Û', + Ucy: 'У', + Udblac: 'Ű', + Ufr: '𝔘', + Ugrave: 'Ù', + Umacr: 'Ū', + UnderBar: '_', + UnderBrace: '⏟', + UnderBracket: '⎵', + UnderParenthesis: '⏝', + Union: '⋃', + UnionPlus: '⊎', + Uogon: 'Ų', + Uopf: '𝕌', + UpArrow: '↑', + UpArrowBar: '⤒', + UpArrowDownArrow: '⇅', + UpDownArrow: '↕', + UpEquilibrium: '⥮', + UpTee: '⊥', + UpTeeArrow: '↥', + Uparrow: '⇑', + Updownarrow: '⇕', + UpperLeftArrow: '↖', + UpperRightArrow: '↗', + Upsi: 'ϒ', + Upsilon: 'Υ', + Uring: 'Ů', + Uscr: '𝒰', + Utilde: 'Ũ', + Uuml: 'Ü', + VDash: '⊫', + Vbar: '⫫', + Vcy: 'В', + Vdash: '⊩', + Vdashl: '⫦', + Vee: '⋁', + Verbar: '‖', + Vert: '‖', + VerticalBar: '∣', + VerticalLine: '|', + VerticalSeparator: '❘', + VerticalTilde: '≀', + VeryThinSpace: ' ', + Vfr: '𝔙', + Vopf: '𝕍', + Vscr: '𝒱', + Vvdash: '⊪', + Wcirc: 'Ŵ', + Wedge: '⋀', + Wfr: '𝔚', + Wopf: '𝕎', + Wscr: '𝒲', + Xfr: '𝔛', + Xi: 'Ξ', + Xopf: '𝕏', + Xscr: '𝒳', + YAcy: 'Я', + YIcy: 'Ї', + YUcy: 'Ю', + Yacute: 'Ý', + Ycirc: 'Ŷ', + Ycy: 'Ы', + Yfr: '𝔜', + Yopf: '𝕐', + Yscr: '𝒴', + Yuml: 'Ÿ', + ZHcy: 'Ж', + Zacute: 'Ź', + Zcaron: 'Ž', + Zcy: 'З', + Zdot: 'Ż', + ZeroWidthSpace: '​', + Zeta: 'Ζ', + Zfr: 'ℨ', + Zopf: 'ℤ', + Zscr: '𝒵', + aacute: 'á', + abreve: 'ă', + ac: '∾', + acE: '∾̳', + acd: '∿', + acirc: 'â', + acute: '´', + acy: 'а', + aelig: 'æ', + af: '⁡', + afr: '𝔞', + agrave: 'à', + alefsym: 'ℵ', + aleph: 'ℵ', + alpha: 'α', + amacr: 'ā', + amalg: '⨿', + amp: '&', + and: '∧', + andand: '⩕', + andd: '⩜', + andslope: '⩘', + andv: '⩚', + ang: '∠', + ange: '⦤', + angle: '∠', + angmsd: '∡', + angmsdaa: '⦨', + angmsdab: '⦩', + angmsdac: '⦪', + angmsdad: '⦫', + angmsdae: '⦬', + angmsdaf: '⦭', + angmsdag: '⦮', + angmsdah: '⦯', + angrt: '∟', + angrtvb: '⊾', + angrtvbd: '⦝', + angsph: '∢', + angst: 'Å', + angzarr: '⍼', + aogon: 'ą', + aopf: '𝕒', + ap: '≈', + apE: '⩰', + apacir: '⩯', + ape: '≊', + apid: '≋', + apos: "'", + approx: '≈', + approxeq: '≊', + aring: 'å', + ascr: '𝒶', + ast: '*', + asymp: '≈', + asympeq: '≍', + atilde: 'ã', + auml: 'ä', + awconint: '∳', + awint: '⨑', + bNot: '⫭', + backcong: '≌', + backepsilon: '϶', + backprime: '‵', + backsim: '∽', + backsimeq: '⋍', + barvee: '⊽', + barwed: '⌅', + barwedge: '⌅', + bbrk: '⎵', + bbrktbrk: '⎶', + bcong: '≌', + bcy: 'б', + bdquo: '„', + becaus: '∵', + because: '∵', + bemptyv: '⦰', + bepsi: '϶', + bernou: 'ℬ', + beta: 'β', + beth: 'ℶ', + between: '≬', + bfr: '𝔟', + bigcap: '⋂', + bigcirc: '◯', + bigcup: '⋃', + bigodot: '⨀', + bigoplus: '⨁', + bigotimes: '⨂', + bigsqcup: '⨆', + bigstar: '★', + bigtriangledown: '▽', + bigtriangleup: '△', + biguplus: '⨄', + bigvee: '⋁', + bigwedge: '⋀', + bkarow: '⤍', + blacklozenge: '⧫', + blacksquare: '▪', + blacktriangle: '▴', + blacktriangledown: '▾', + blacktriangleleft: '◂', + blacktriangleright: '▸', + blank: '␣', + blk12: '▒', + blk14: '░', + blk34: '▓', + block: '█', + bne: '=⃥', + bnequiv: '≡⃥', + bnot: '⌐', + bopf: '𝕓', + bot: '⊥', + bottom: '⊥', + bowtie: '⋈', + boxDL: '╗', + boxDR: '╔', + boxDl: '╖', + boxDr: '╓', + boxH: '═', + boxHD: '╦', + boxHU: '╩', + boxHd: '╤', + boxHu: '╧', + boxUL: '╝', + boxUR: '╚', + boxUl: '╜', + boxUr: '╙', + boxV: '║', + boxVH: '╬', + boxVL: '╣', + boxVR: '╠', + boxVh: '╫', + boxVl: '╢', + boxVr: '╟', + boxbox: '⧉', + boxdL: '╕', + boxdR: '╒', + boxdl: '┐', + boxdr: '┌', + boxh: '─', + boxhD: '╥', + boxhU: '╨', + boxhd: '┬', + boxhu: '┴', + boxminus: '⊟', + boxplus: '⊞', + boxtimes: '⊠', + boxuL: '╛', + boxuR: '╘', + boxul: '┘', + boxur: '└', + boxv: '│', + boxvH: '╪', + boxvL: '╡', + boxvR: '╞', + boxvh: '┼', + boxvl: '┤', + boxvr: '├', + bprime: '‵', + breve: '˘', + brvbar: '¦', + bscr: '𝒷', + bsemi: '⁏', + bsim: '∽', + bsime: '⋍', + bsol: '\\', + bsolb: '⧅', + bsolhsub: '⟈', + bull: '•', + bullet: '•', + bump: '≎', + bumpE: '⪮', + bumpe: '≏', + bumpeq: '≏', + cacute: 'ć', + cap: '∩', + capand: '⩄', + capbrcup: '⩉', + capcap: '⩋', + capcup: '⩇', + capdot: '⩀', + caps: '∩︀', + caret: '⁁', + caron: 'ˇ', + ccaps: '⩍', + ccaron: 'č', + ccedil: 'ç', + ccirc: 'ĉ', + ccups: '⩌', + ccupssm: '⩐', + cdot: 'ċ', + cedil: '¸', + cemptyv: '⦲', + cent: '¢', + centerdot: '·', + cfr: '𝔠', + chcy: 'ч', + check: '✓', + checkmark: '✓', + chi: 'χ', + cir: '○', + cirE: '⧃', + circ: 'ˆ', + circeq: '≗', + circlearrowleft: '↺', + circlearrowright: '↻', + circledR: '®', + circledS: 'Ⓢ', + circledast: '⊛', + circledcirc: '⊚', + circleddash: '⊝', + cire: '≗', + cirfnint: '⨐', + cirmid: '⫯', + cirscir: '⧂', + clubs: '♣', + clubsuit: '♣', + colon: ':', + colone: '≔', + coloneq: '≔', + comma: ',', + commat: '@', + comp: '∁', + compfn: '∘', + complement: '∁', + complexes: 'ℂ', + cong: '≅', + congdot: '⩭', + conint: '∮', + copf: '𝕔', + coprod: '∐', + copy: '©', + copysr: '℗', + crarr: '↵', + cross: '✗', + cscr: '𝒸', + csub: '⫏', + csube: '⫑', + csup: '⫐', + csupe: '⫒', + ctdot: '⋯', + cudarrl: '⤸', + cudarrr: '⤵', + cuepr: '⋞', + cuesc: '⋟', + cularr: '↶', + cularrp: '⤽', + cup: '∪', + cupbrcap: '⩈', + cupcap: '⩆', + cupcup: '⩊', + cupdot: '⊍', + cupor: '⩅', + cups: '∪︀', + curarr: '↷', + curarrm: '⤼', + curlyeqprec: '⋞', + curlyeqsucc: '⋟', + curlyvee: '⋎', + curlywedge: '⋏', + curren: '¤', + curvearrowleft: '↶', + curvearrowright: '↷', + cuvee: '⋎', + cuwed: '⋏', + cwconint: '∲', + cwint: '∱', + cylcty: '⌭', + dArr: '⇓', + dHar: '⥥', + dagger: '†', + daleth: 'ℸ', + darr: '↓', + dash: '‐', + dashv: '⊣', + dbkarow: '⤏', + dblac: '˝', + dcaron: 'ď', + dcy: 'д', + dd: 'ⅆ', + ddagger: '‡', + ddarr: '⇊', + ddotseq: '⩷', + deg: '°', + delta: 'δ', + demptyv: '⦱', + dfisht: '⥿', + dfr: '𝔡', + dharl: '⇃', + dharr: '⇂', + diam: '⋄', + diamond: '⋄', + diamondsuit: '♦', + diams: '♦', + die: '¨', + digamma: 'ϝ', + disin: '⋲', + div: '÷', + divide: '÷', + divideontimes: '⋇', + divonx: '⋇', + djcy: 'ђ', + dlcorn: '⌞', + dlcrop: '⌍', + dollar: '$', + dopf: '𝕕', + dot: '˙', + doteq: '≐', + doteqdot: '≑', + dotminus: '∸', + dotplus: '∔', + dotsquare: '⊡', + doublebarwedge: '⌆', + downarrow: '↓', + downdownarrows: '⇊', + downharpoonleft: '⇃', + downharpoonright: '⇂', + drbkarow: '⤐', + drcorn: '⌟', + drcrop: '⌌', + dscr: '𝒹', + dscy: 'ѕ', + dsol: '⧶', + dstrok: 'đ', + dtdot: '⋱', + dtri: '▿', + dtrif: '▾', + duarr: '⇵', + duhar: '⥯', + dwangle: '⦦', + dzcy: 'џ', + dzigrarr: '⟿', + eDDot: '⩷', + eDot: '≑', + eacute: 'é', + easter: '⩮', + ecaron: 'ě', + ecir: '≖', + ecirc: 'ê', + ecolon: '≕', + ecy: 'э', + edot: 'ė', + ee: 'ⅇ', + efDot: '≒', + efr: '𝔢', + eg: '⪚', + egrave: 'è', + egs: '⪖', + egsdot: '⪘', + el: '⪙', + elinters: '⏧', + ell: 'ℓ', + els: '⪕', + elsdot: '⪗', + emacr: 'ē', + empty: '∅', + emptyset: '∅', + emptyv: '∅', + emsp13: ' ', + emsp14: ' ', + emsp: ' ', + eng: 'ŋ', + ensp: ' ', + eogon: 'ę', + eopf: '𝕖', + epar: '⋕', + eparsl: '⧣', + eplus: '⩱', + epsi: 'ε', + epsilon: 'ε', + epsiv: 'ϵ', + eqcirc: '≖', + eqcolon: '≕', + eqsim: '≂', + eqslantgtr: '⪖', + eqslantless: '⪕', + equals: '=', + equest: '≟', + equiv: '≡', + equivDD: '⩸', + eqvparsl: '⧥', + erDot: '≓', + erarr: '⥱', + escr: 'ℯ', + esdot: '≐', + esim: '≂', + eta: 'η', + eth: 'ð', + euml: 'ë', + euro: '€', + excl: '!', + exist: '∃', + expectation: 'ℰ', + exponentiale: 'ⅇ', + fallingdotseq: '≒', + fcy: 'ф', + female: '♀', + ffilig: 'ffi', + fflig: 'ff', + ffllig: 'ffl', + ffr: '𝔣', + filig: 'fi', + fjlig: 'fj', + flat: '♭', + fllig: 'fl', + fltns: '▱', + fnof: 'ƒ', + fopf: '𝕗', + forall: '∀', + fork: '⋔', + forkv: '⫙', + fpartint: '⨍', + frac12: '½', + frac13: '⅓', + frac14: '¼', + frac15: '⅕', + frac16: '⅙', + frac18: '⅛', + frac23: '⅔', + frac25: '⅖', + frac34: '¾', + frac35: '⅗', + frac38: '⅜', + frac45: '⅘', + frac56: '⅚', + frac58: '⅝', + frac78: '⅞', + frasl: '⁄', + frown: '⌢', + fscr: '𝒻', + gE: '≧', + gEl: '⪌', + gacute: 'ǵ', + gamma: 'γ', + gammad: 'ϝ', + gap: '⪆', + gbreve: 'ğ', + gcirc: 'ĝ', + gcy: 'г', + gdot: 'ġ', + ge: '≥', + gel: '⋛', + geq: '≥', + geqq: '≧', + geqslant: '⩾', + ges: '⩾', + gescc: '⪩', + gesdot: '⪀', + gesdoto: '⪂', + gesdotol: '⪄', + gesl: '⋛︀', + gesles: '⪔', + gfr: '𝔤', + gg: '≫', + ggg: '⋙', + gimel: 'ℷ', + gjcy: 'ѓ', + gl: '≷', + glE: '⪒', + gla: '⪥', + glj: '⪤', + gnE: '≩', + gnap: '⪊', + gnapprox: '⪊', + gne: '⪈', + gneq: '⪈', + gneqq: '≩', + gnsim: '⋧', + gopf: '𝕘', + grave: '`', + gscr: 'ℊ', + gsim: '≳', + gsime: '⪎', + gsiml: '⪐', + gt: '>', + gtcc: '⪧', + gtcir: '⩺', + gtdot: '⋗', + gtlPar: '⦕', + gtquest: '⩼', + gtrapprox: '⪆', + gtrarr: '⥸', + gtrdot: '⋗', + gtreqless: '⋛', + gtreqqless: '⪌', + gtrless: '≷', + gtrsim: '≳', + gvertneqq: '≩︀', + gvnE: '≩︀', + hArr: '⇔', + hairsp: ' ', + half: '½', + hamilt: 'ℋ', + hardcy: 'ъ', + harr: '↔', + harrcir: '⥈', + harrw: '↭', + hbar: 'ℏ', + hcirc: 'ĥ', + hearts: '♥', + heartsuit: '♥', + hellip: '…', + hercon: '⊹', + hfr: '𝔥', + hksearow: '⤥', + hkswarow: '⤦', + hoarr: '⇿', + homtht: '∻', + hookleftarrow: '↩', + hookrightarrow: '↪', + hopf: '𝕙', + horbar: '―', + hscr: '𝒽', + hslash: 'ℏ', + hstrok: 'ħ', + hybull: '⁃', + hyphen: '‐', + iacute: 'í', + ic: '⁣', + icirc: 'î', + icy: 'и', + iecy: 'е', + iexcl: '¡', + iff: '⇔', + ifr: '𝔦', + igrave: 'ì', + ii: 'ⅈ', + iiiint: '⨌', + iiint: '∭', + iinfin: '⧜', + iiota: '℩', + ijlig: 'ij', + imacr: 'ī', + image: 'ℑ', + imagline: 'ℐ', + imagpart: 'ℑ', + imath: 'ı', + imof: '⊷', + imped: 'Ƶ', + in: '∈', + incare: '℅', + infin: '∞', + infintie: '⧝', + inodot: 'ı', + int: '∫', + intcal: '⊺', + integers: 'ℤ', + intercal: '⊺', + intlarhk: '⨗', + intprod: '⨼', + iocy: 'ё', + iogon: 'į', + iopf: '𝕚', + iota: 'ι', + iprod: '⨼', + iquest: '¿', + iscr: '𝒾', + isin: '∈', + isinE: '⋹', + isindot: '⋵', + isins: '⋴', + isinsv: '⋳', + isinv: '∈', + it: '⁢', + itilde: 'ĩ', + iukcy: 'і', + iuml: 'ï', + jcirc: 'ĵ', + jcy: 'й', + jfr: '𝔧', + jmath: 'ȷ', + jopf: '𝕛', + jscr: '𝒿', + jsercy: 'ј', + jukcy: 'є', + kappa: 'κ', + kappav: 'ϰ', + kcedil: 'ķ', + kcy: 'к', + kfr: '𝔨', + kgreen: 'ĸ', + khcy: 'х', + kjcy: 'ќ', + kopf: '𝕜', + kscr: '𝓀', + lAarr: '⇚', + lArr: '⇐', + lAtail: '⤛', + lBarr: '⤎', + lE: '≦', + lEg: '⪋', + lHar: '⥢', + lacute: 'ĺ', + laemptyv: '⦴', + lagran: 'ℒ', + lambda: 'λ', + lang: '⟨', + langd: '⦑', + langle: '⟨', + lap: '⪅', + laquo: '«', + larr: '←', + larrb: '⇤', + larrbfs: '⤟', + larrfs: '⤝', + larrhk: '↩', + larrlp: '↫', + larrpl: '⤹', + larrsim: '⥳', + larrtl: '↢', + lat: '⪫', + latail: '⤙', + late: '⪭', + lates: '⪭︀', + lbarr: '⤌', + lbbrk: '❲', + lbrace: '{', + lbrack: '[', + lbrke: '⦋', + lbrksld: '⦏', + lbrkslu: '⦍', + lcaron: 'ľ', + lcedil: 'ļ', + lceil: '⌈', + lcub: '{', + lcy: 'л', + ldca: '⤶', + ldquo: '“', + ldquor: '„', + ldrdhar: '⥧', + ldrushar: '⥋', + ldsh: '↲', + le: '≤', + leftarrow: '←', + leftarrowtail: '↢', + leftharpoondown: '↽', + leftharpoonup: '↼', + leftleftarrows: '⇇', + leftrightarrow: '↔', + leftrightarrows: '⇆', + leftrightharpoons: '⇋', + leftrightsquigarrow: '↭', + leftthreetimes: '⋋', + leg: '⋚', + leq: '≤', + leqq: '≦', + leqslant: '⩽', + les: '⩽', + lescc: '⪨', + lesdot: '⩿', + lesdoto: '⪁', + lesdotor: '⪃', + lesg: '⋚︀', + lesges: '⪓', + lessapprox: '⪅', + lessdot: '⋖', + lesseqgtr: '⋚', + lesseqqgtr: '⪋', + lessgtr: '≶', + lesssim: '≲', + lfisht: '⥼', + lfloor: '⌊', + lfr: '𝔩', + lg: '≶', + lgE: '⪑', + lhard: '↽', + lharu: '↼', + lharul: '⥪', + lhblk: '▄', + ljcy: 'љ', + ll: '≪', + llarr: '⇇', + llcorner: '⌞', + llhard: '⥫', + lltri: '◺', + lmidot: 'ŀ', + lmoust: '⎰', + lmoustache: '⎰', + lnE: '≨', + lnap: '⪉', + lnapprox: '⪉', + lne: '⪇', + lneq: '⪇', + lneqq: '≨', + lnsim: '⋦', + loang: '⟬', + loarr: '⇽', + lobrk: '⟦', + longleftarrow: '⟵', + longleftrightarrow: '⟷', + longmapsto: '⟼', + longrightarrow: '⟶', + looparrowleft: '↫', + looparrowright: '↬', + lopar: '⦅', + lopf: '𝕝', + loplus: '⨭', + lotimes: '⨴', + lowast: '∗', + lowbar: '_', + loz: '◊', + lozenge: '◊', + lozf: '⧫', + lpar: '(', + lparlt: '⦓', + lrarr: '⇆', + lrcorner: '⌟', + lrhar: '⇋', + lrhard: '⥭', + lrm: '‎', + lrtri: '⊿', + lsaquo: '‹', + lscr: '𝓁', + lsh: '↰', + lsim: '≲', + lsime: '⪍', + lsimg: '⪏', + lsqb: '[', + lsquo: '‘', + lsquor: '‚', + lstrok: 'ł', + lt: '<', + ltcc: '⪦', + ltcir: '⩹', + ltdot: '⋖', + lthree: '⋋', + ltimes: '⋉', + ltlarr: '⥶', + ltquest: '⩻', + ltrPar: '⦖', + ltri: '◃', + ltrie: '⊴', + ltrif: '◂', + lurdshar: '⥊', + luruhar: '⥦', + lvertneqq: '≨︀', + lvnE: '≨︀', + mDDot: '∺', + macr: '¯', + male: '♂', + malt: '✠', + maltese: '✠', + map: '↦', + mapsto: '↦', + mapstodown: '↧', + mapstoleft: '↤', + mapstoup: '↥', + marker: '▮', + mcomma: '⨩', + mcy: 'м', + mdash: '—', + measuredangle: '∡', + mfr: '𝔪', + mho: '℧', + micro: 'µ', + mid: '∣', + midast: '*', + midcir: '⫰', + middot: '·', + minus: '−', + minusb: '⊟', + minusd: '∸', + minusdu: '⨪', + mlcp: '⫛', + mldr: '…', + mnplus: '∓', + models: '⊧', + mopf: '𝕞', + mp: '∓', + mscr: '𝓂', + mstpos: '∾', + mu: 'μ', + multimap: '⊸', + mumap: '⊸', + nGg: '⋙̸', + nGt: '≫⃒', + nGtv: '≫̸', + nLeftarrow: '⇍', + nLeftrightarrow: '⇎', + nLl: '⋘̸', + nLt: '≪⃒', + nLtv: '≪̸', + nRightarrow: '⇏', + nVDash: '⊯', + nVdash: '⊮', + nabla: '∇', + nacute: 'ń', + nang: '∠⃒', + nap: '≉', + napE: '⩰̸', + napid: '≋̸', + napos: 'ʼn', + napprox: '≉', + natur: '♮', + natural: '♮', + naturals: 'ℕ', + nbsp: ' ', + nbump: '≎̸', + nbumpe: '≏̸', + ncap: '⩃', + ncaron: 'ň', + ncedil: 'ņ', + ncong: '≇', + ncongdot: '⩭̸', + ncup: '⩂', + ncy: 'н', + ndash: '–', + ne: '≠', + neArr: '⇗', + nearhk: '⤤', + nearr: '↗', + nearrow: '↗', + nedot: '≐̸', + nequiv: '≢', + nesear: '⤨', + nesim: '≂̸', + nexist: '∄', + nexists: '∄', + nfr: '𝔫', + ngE: '≧̸', + nge: '≱', + ngeq: '≱', + ngeqq: '≧̸', + ngeqslant: '⩾̸', + nges: '⩾̸', + ngsim: '≵', + ngt: '≯', + ngtr: '≯', + nhArr: '⇎', + nharr: '↮', + nhpar: '⫲', + ni: '∋', + nis: '⋼', + nisd: '⋺', + niv: '∋', + njcy: 'њ', + nlArr: '⇍', + nlE: '≦̸', + nlarr: '↚', + nldr: '‥', + nle: '≰', + nleftarrow: '↚', + nleftrightarrow: '↮', + nleq: '≰', + nleqq: '≦̸', + nleqslant: '⩽̸', + nles: '⩽̸', + nless: '≮', + nlsim: '≴', + nlt: '≮', + nltri: '⋪', + nltrie: '⋬', + nmid: '∤', + nopf: '𝕟', + not: '¬', + notin: '∉', + notinE: '⋹̸', + notindot: '⋵̸', + notinva: '∉', + notinvb: '⋷', + notinvc: '⋶', + notni: '∌', + notniva: '∌', + notnivb: '⋾', + notnivc: '⋽', + npar: '∦', + nparallel: '∦', + nparsl: '⫽⃥', + npart: '∂̸', + npolint: '⨔', + npr: '⊀', + nprcue: '⋠', + npre: '⪯̸', + nprec: '⊀', + npreceq: '⪯̸', + nrArr: '⇏', + nrarr: '↛', + nrarrc: '⤳̸', + nrarrw: '↝̸', + nrightarrow: '↛', + nrtri: '⋫', + nrtrie: '⋭', + nsc: '⊁', + nsccue: '⋡', + nsce: '⪰̸', + nscr: '𝓃', + nshortmid: '∤', + nshortparallel: '∦', + nsim: '≁', + nsime: '≄', + nsimeq: '≄', + nsmid: '∤', + nspar: '∦', + nsqsube: '⋢', + nsqsupe: '⋣', + nsub: '⊄', + nsubE: '⫅̸', + nsube: '⊈', + nsubset: '⊂⃒', + nsubseteq: '⊈', + nsubseteqq: '⫅̸', + nsucc: '⊁', + nsucceq: '⪰̸', + nsup: '⊅', + nsupE: '⫆̸', + nsupe: '⊉', + nsupset: '⊃⃒', + nsupseteq: '⊉', + nsupseteqq: '⫆̸', + ntgl: '≹', + ntilde: 'ñ', + ntlg: '≸', + ntriangleleft: '⋪', + ntrianglelefteq: '⋬', + ntriangleright: '⋫', + ntrianglerighteq: '⋭', + nu: 'ν', + num: '#', + numero: '№', + numsp: ' ', + nvDash: '⊭', + nvHarr: '⤄', + nvap: '≍⃒', + nvdash: '⊬', + nvge: '≥⃒', + nvgt: '>⃒', + nvinfin: '⧞', + nvlArr: '⤂', + nvle: '≤⃒', + nvlt: '<⃒', + nvltrie: '⊴⃒', + nvrArr: '⤃', + nvrtrie: '⊵⃒', + nvsim: '∼⃒', + nwArr: '⇖', + nwarhk: '⤣', + nwarr: '↖', + nwarrow: '↖', + nwnear: '⤧', + oS: 'Ⓢ', + oacute: 'ó', + oast: '⊛', + ocir: '⊚', + ocirc: 'ô', + ocy: 'о', + odash: '⊝', + odblac: 'ő', + odiv: '⨸', + odot: '⊙', + odsold: '⦼', + oelig: 'œ', + ofcir: '⦿', + ofr: '𝔬', + ogon: '˛', + ograve: 'ò', + ogt: '⧁', + ohbar: '⦵', + ohm: 'Ω', + oint: '∮', + olarr: '↺', + olcir: '⦾', + olcross: '⦻', + oline: '‾', + olt: '⧀', + omacr: 'ō', + omega: 'ω', + omicron: 'ο', + omid: '⦶', + ominus: '⊖', + oopf: '𝕠', + opar: '⦷', + operp: '⦹', + oplus: '⊕', + or: '∨', + orarr: '↻', + ord: '⩝', + order: 'ℴ', + orderof: 'ℴ', + ordf: 'ª', + ordm: 'º', + origof: '⊶', + oror: '⩖', + orslope: '⩗', + orv: '⩛', + oscr: 'ℴ', + oslash: 'ø', + osol: '⊘', + otilde: 'õ', + otimes: '⊗', + otimesas: '⨶', + ouml: 'ö', + ovbar: '⌽', + par: '∥', + para: '¶', + parallel: '∥', + parsim: '⫳', + parsl: '⫽', + part: '∂', + pcy: 'п', + percnt: '%', + period: '.', + permil: '‰', + perp: '⊥', + pertenk: '‱', + pfr: '𝔭', + phi: 'φ', + phiv: 'ϕ', + phmmat: 'ℳ', + phone: '☎', + pi: 'π', + pitchfork: '⋔', + piv: 'ϖ', + planck: 'ℏ', + planckh: 'ℎ', + plankv: 'ℏ', + plus: '+', + plusacir: '⨣', + plusb: '⊞', + pluscir: '⨢', + plusdo: '∔', + plusdu: '⨥', + pluse: '⩲', + plusmn: '±', + plussim: '⨦', + plustwo: '⨧', + pm: '±', + pointint: '⨕', + popf: '𝕡', + pound: '£', + pr: '≺', + prE: '⪳', + prap: '⪷', + prcue: '≼', + pre: '⪯', + prec: '≺', + precapprox: '⪷', + preccurlyeq: '≼', + preceq: '⪯', + precnapprox: '⪹', + precneqq: '⪵', + precnsim: '⋨', + precsim: '≾', + prime: '′', + primes: 'ℙ', + prnE: '⪵', + prnap: '⪹', + prnsim: '⋨', + prod: '∏', + profalar: '⌮', + profline: '⌒', + profsurf: '⌓', + prop: '∝', + propto: '∝', + prsim: '≾', + prurel: '⊰', + pscr: '𝓅', + psi: 'ψ', + puncsp: ' ', + qfr: '𝔮', + qint: '⨌', + qopf: '𝕢', + qprime: '⁗', + qscr: '𝓆', + quaternions: 'ℍ', + quatint: '⨖', + quest: '?', + questeq: '≟', + quot: '"', + rAarr: '⇛', + rArr: '⇒', + rAtail: '⤜', + rBarr: '⤏', + rHar: '⥤', + race: '∽̱', + racute: 'ŕ', + radic: '√', + raemptyv: '⦳', + rang: '⟩', + rangd: '⦒', + range: '⦥', + rangle: '⟩', + raquo: '»', + rarr: '→', + rarrap: '⥵', + rarrb: '⇥', + rarrbfs: '⤠', + rarrc: '⤳', + rarrfs: '⤞', + rarrhk: '↪', + rarrlp: '↬', + rarrpl: '⥅', + rarrsim: '⥴', + rarrtl: '↣', + rarrw: '↝', + ratail: '⤚', + ratio: '∶', + rationals: 'ℚ', + rbarr: '⤍', + rbbrk: '❳', + rbrace: '}', + rbrack: ']', + rbrke: '⦌', + rbrksld: '⦎', + rbrkslu: '⦐', + rcaron: 'ř', + rcedil: 'ŗ', + rceil: '⌉', + rcub: '}', + rcy: 'р', + rdca: '⤷', + rdldhar: '⥩', + rdquo: '”', + rdquor: '”', + rdsh: '↳', + real: 'ℜ', + realine: 'ℛ', + realpart: 'ℜ', + reals: 'ℝ', + rect: '▭', + reg: '®', + rfisht: '⥽', + rfloor: '⌋', + rfr: '𝔯', + rhard: '⇁', + rharu: '⇀', + rharul: '⥬', + rho: 'ρ', + rhov: 'ϱ', + rightarrow: '→', + rightarrowtail: '↣', + rightharpoondown: '⇁', + rightharpoonup: '⇀', + rightleftarrows: '⇄', + rightleftharpoons: '⇌', + rightrightarrows: '⇉', + rightsquigarrow: '↝', + rightthreetimes: '⋌', + ring: '˚', + risingdotseq: '≓', + rlarr: '⇄', + rlhar: '⇌', + rlm: '‏', + rmoust: '⎱', + rmoustache: '⎱', + rnmid: '⫮', + roang: '⟭', + roarr: '⇾', + robrk: '⟧', + ropar: '⦆', + ropf: '𝕣', + roplus: '⨮', + rotimes: '⨵', + rpar: ')', + rpargt: '⦔', + rppolint: '⨒', + rrarr: '⇉', + rsaquo: '›', + rscr: '𝓇', + rsh: '↱', + rsqb: ']', + rsquo: '’', + rsquor: '’', + rthree: '⋌', + rtimes: '⋊', + rtri: '▹', + rtrie: '⊵', + rtrif: '▸', + rtriltri: '⧎', + ruluhar: '⥨', + rx: '℞', + sacute: 'ś', + sbquo: '‚', + sc: '≻', + scE: '⪴', + scap: '⪸', + scaron: 'š', + sccue: '≽', + sce: '⪰', + scedil: 'ş', + scirc: 'ŝ', + scnE: '⪶', + scnap: '⪺', + scnsim: '⋩', + scpolint: '⨓', + scsim: '≿', + scy: 'с', + sdot: '⋅', + sdotb: '⊡', + sdote: '⩦', + seArr: '⇘', + searhk: '⤥', + searr: '↘', + searrow: '↘', + sect: '§', + semi: ';', + seswar: '⤩', + setminus: '∖', + setmn: '∖', + sext: '✶', + sfr: '𝔰', + sfrown: '⌢', + sharp: '♯', + shchcy: 'щ', + shcy: 'ш', + shortmid: '∣', + shortparallel: '∥', + shy: '­', + sigma: 'σ', + sigmaf: 'ς', + sigmav: 'ς', + sim: '∼', + simdot: '⩪', + sime: '≃', + simeq: '≃', + simg: '⪞', + simgE: '⪠', + siml: '⪝', + simlE: '⪟', + simne: '≆', + simplus: '⨤', + simrarr: '⥲', + slarr: '←', + smallsetminus: '∖', + smashp: '⨳', + smeparsl: '⧤', + smid: '∣', + smile: '⌣', + smt: '⪪', + smte: '⪬', + smtes: '⪬︀', + softcy: 'ь', + sol: '/', + solb: '⧄', + solbar: '⌿', + sopf: '𝕤', + spades: '♠', + spadesuit: '♠', + spar: '∥', + sqcap: '⊓', + sqcaps: '⊓︀', + sqcup: '⊔', + sqcups: '⊔︀', + sqsub: '⊏', + sqsube: '⊑', + sqsubset: '⊏', + sqsubseteq: '⊑', + sqsup: '⊐', + sqsupe: '⊒', + sqsupset: '⊐', + sqsupseteq: '⊒', + squ: '□', + square: '□', + squarf: '▪', + squf: '▪', + srarr: '→', + sscr: '𝓈', + ssetmn: '∖', + ssmile: '⌣', + sstarf: '⋆', + star: '☆', + starf: '★', + straightepsilon: 'ϵ', + straightphi: 'ϕ', + strns: '¯', + sub: '⊂', + subE: '⫅', + subdot: '⪽', + sube: '⊆', + subedot: '⫃', + submult: '⫁', + subnE: '⫋', + subne: '⊊', + subplus: '⪿', + subrarr: '⥹', + subset: '⊂', + subseteq: '⊆', + subseteqq: '⫅', + subsetneq: '⊊', + subsetneqq: '⫋', + subsim: '⫇', + subsub: '⫕', + subsup: '⫓', + succ: '≻', + succapprox: '⪸', + succcurlyeq: '≽', + succeq: '⪰', + succnapprox: '⪺', + succneqq: '⪶', + succnsim: '⋩', + succsim: '≿', + sum: '∑', + sung: '♪', + sup1: '¹', + sup2: '²', + sup3: '³', + sup: '⊃', + supE: '⫆', + supdot: '⪾', + supdsub: '⫘', + supe: '⊇', + supedot: '⫄', + suphsol: '⟉', + suphsub: '⫗', + suplarr: '⥻', + supmult: '⫂', + supnE: '⫌', + supne: '⊋', + supplus: '⫀', + supset: '⊃', + supseteq: '⊇', + supseteqq: '⫆', + supsetneq: '⊋', + supsetneqq: '⫌', + supsim: '⫈', + supsub: '⫔', + supsup: '⫖', + swArr: '⇙', + swarhk: '⤦', + swarr: '↙', + swarrow: '↙', + swnwar: '⤪', + szlig: 'ß', + target: '⌖', + tau: 'τ', + tbrk: '⎴', + tcaron: 'ť', + tcedil: 'ţ', + tcy: 'т', + tdot: '⃛', + telrec: '⌕', + tfr: '𝔱', + there4: '∴', + therefore: '∴', + theta: 'θ', + thetasym: 'ϑ', + thetav: 'ϑ', + thickapprox: '≈', + thicksim: '∼', + thinsp: ' ', + thkap: '≈', + thksim: '∼', + thorn: 'þ', + tilde: '˜', + times: '×', + timesb: '⊠', + timesbar: '⨱', + timesd: '⨰', + tint: '∭', + toea: '⤨', + top: '⊤', + topbot: '⌶', + topcir: '⫱', + topf: '𝕥', + topfork: '⫚', + tosa: '⤩', + tprime: '‴', + trade: '™', + triangle: '▵', + triangledown: '▿', + triangleleft: '◃', + trianglelefteq: '⊴', + triangleq: '≜', + triangleright: '▹', + trianglerighteq: '⊵', + tridot: '◬', + trie: '≜', + triminus: '⨺', + triplus: '⨹', + trisb: '⧍', + tritime: '⨻', + trpezium: '⏢', + tscr: '𝓉', + tscy: 'ц', + tshcy: 'ћ', + tstrok: 'ŧ', + twixt: '≬', + twoheadleftarrow: '↞', + twoheadrightarrow: '↠', + uArr: '⇑', + uHar: '⥣', + uacute: 'ú', + uarr: '↑', + ubrcy: 'ў', + ubreve: 'ŭ', + ucirc: 'û', + ucy: 'у', + udarr: '⇅', + udblac: 'ű', + udhar: '⥮', + ufisht: '⥾', + ufr: '𝔲', + ugrave: 'ù', + uharl: '↿', + uharr: '↾', + uhblk: '▀', + ulcorn: '⌜', + ulcorner: '⌜', + ulcrop: '⌏', + ultri: '◸', + umacr: 'ū', + uml: '¨', + uogon: 'ų', + uopf: '𝕦', + uparrow: '↑', + updownarrow: '↕', + upharpoonleft: '↿', + upharpoonright: '↾', + uplus: '⊎', + upsi: 'υ', + upsih: 'ϒ', + upsilon: 'υ', + upuparrows: '⇈', + urcorn: '⌝', + urcorner: '⌝', + urcrop: '⌎', + uring: 'ů', + urtri: '◹', + uscr: '𝓊', + utdot: '⋰', + utilde: 'ũ', + utri: '▵', + utrif: '▴', + uuarr: '⇈', + uuml: 'ü', + uwangle: '⦧', + vArr: '⇕', + vBar: '⫨', + vBarv: '⫩', + vDash: '⊨', + vangrt: '⦜', + varepsilon: 'ϵ', + varkappa: 'ϰ', + varnothing: '∅', + varphi: 'ϕ', + varpi: 'ϖ', + varpropto: '∝', + varr: '↕', + varrho: 'ϱ', + varsigma: 'ς', + varsubsetneq: '⊊︀', + varsubsetneqq: '⫋︀', + varsupsetneq: '⊋︀', + varsupsetneqq: '⫌︀', + vartheta: 'ϑ', + vartriangleleft: '⊲', + vartriangleright: '⊳', + vcy: 'в', + vdash: '⊢', + vee: '∨', + veebar: '⊻', + veeeq: '≚', + vellip: '⋮', + verbar: '|', + vert: '|', + vfr: '𝔳', + vltri: '⊲', + vnsub: '⊂⃒', + vnsup: '⊃⃒', + vopf: '𝕧', + vprop: '∝', + vrtri: '⊳', + vscr: '𝓋', + vsubnE: '⫋︀', + vsubne: '⊊︀', + vsupnE: '⫌︀', + vsupne: '⊋︀', + vzigzag: '⦚', + wcirc: 'ŵ', + wedbar: '⩟', + wedge: '∧', + wedgeq: '≙', + weierp: '℘', + wfr: '𝔴', + wopf: '𝕨', + wp: '℘', + wr: '≀', + wreath: '≀', + wscr: '𝓌', + xcap: '⋂', + xcirc: '◯', + xcup: '⋃', + xdtri: '▽', + xfr: '𝔵', + xhArr: '⟺', + xharr: '⟷', + xi: 'ξ', + xlArr: '⟸', + xlarr: '⟵', + xmap: '⟼', + xnis: '⋻', + xodot: '⨀', + xopf: '𝕩', + xoplus: '⨁', + xotime: '⨂', + xrArr: '⟹', + xrarr: '⟶', + xscr: '𝓍', + xsqcup: '⨆', + xuplus: '⨄', + xutri: '△', + xvee: '⋁', + xwedge: '⋀', + yacute: 'ý', + yacy: 'я', + ycirc: 'ŷ', + ycy: 'ы', + yen: '¥', + yfr: '𝔶', + yicy: 'ї', + yopf: '𝕪', + yscr: '𝓎', + yucy: 'ю', + yuml: 'ÿ', + zacute: 'ź', + zcaron: 'ž', + zcy: 'з', + zdot: 'ż', + zeetrf: 'ℨ', + zeta: 'ζ', + zfr: '𝔷', + zhcy: 'ж', + zigrarr: '⇝', + zopf: '𝕫', + zscr: '𝓏', + zwj: '‍', + zwnj: '‌' +} + +;// CONCATENATED MODULE: ./node_modules/decode-named-character-reference/index.js + + +// To do: next major: use `Object.hasOwn`. +const own = {}.hasOwnProperty -/***/ 12785: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * Decode a single character reference (without the `&` or `;`). + * You probably only need this when you’re building parsers yourself that follow + * different rules compared to HTML. + * This is optimized to be tiny in browsers. + * + * @param {string} value + * `notin` (named), `#123` (deci), `#x123` (hexa). + * @returns {string|false} + * Decoded reference. + */ +function decodeNamedCharacterReference(value) { + return own.call(characterEntities, value) ? characterEntities[value] : false +} -var isCore = __nccwpck_require__(18746); -var fs = __nccwpck_require__(57147); -var path = __nccwpck_require__(71017); -var caller = __nccwpck_require__(73881); -var nodeModulesPaths = __nccwpck_require__(5507); -var normalizeOptions = __nccwpck_require__(55415); +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/character-reference.js +/** + * @import { + * Code, + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; -var defaultIsFile = function isFile(file) { - try { - var stat = fs.statSync(file); - } catch (e) { - if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; - throw e; - } - return stat.isFile() || stat.isFIFO(); -}; -var defaultIsDir = function isDirectory(dir) { - try { - var stat = fs.statSync(dir); - } catch (e) { - if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; - throw e; - } - return stat.isDirectory(); +/** @type {Construct} */ +const characterReference = { + name: 'characterReference', + tokenize: tokenizeCharacterReference }; -var defaultRealpathSync = function realpathSync(x) { - try { - return realpathFS(x); - } catch (realpathErr) { - if (realpathErr.code !== 'ENOENT') { - throw realpathErr; - } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeCharacterReference(effects, ok, nok) { + const self = this; + let size = 0; + /** @type {number} */ + let max; + /** @type {(code: Code) => boolean} */ + let test; + return start; + + /** + * Start of character reference. + * + * ```markdown + * > | a&amp;b + * ^ + * > | a&#123;b + * ^ + * > | a&#x9;b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("characterReference"); + effects.enter("characterReferenceMarker"); + effects.consume(code); + effects.exit("characterReferenceMarker"); + return open; + } + + /** + * After `&`, at `#` for numeric references or alphanumeric for named + * references. + * + * ```markdown + * > | a&amp;b + * ^ + * > | a&#123;b + * ^ + * > | a&#x9;b + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === 35) { + effects.enter("characterReferenceMarkerNumeric"); + effects.consume(code); + effects.exit("characterReferenceMarkerNumeric"); + return numeric; + } + effects.enter("characterReferenceValue"); + max = 31; + test = asciiAlphanumeric; + return value(code); + } + + /** + * After `#`, at `x` for hexadecimals or digit for decimals. + * + * ```markdown + * > | a&#123;b + * ^ + * > | a&#x9;b + * ^ + * ``` + * + * @type {State} + */ + function numeric(code) { + if (code === 88 || code === 120) { + effects.enter("characterReferenceMarkerHexadecimal"); + effects.consume(code); + effects.exit("characterReferenceMarkerHexadecimal"); + effects.enter("characterReferenceValue"); + max = 6; + test = asciiHexDigit; + return value; } - return x; -}; - -var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { - if (opts && opts.preserveSymlinks === false) { - return realpathSync(x); + effects.enter("characterReferenceValue"); + max = 7; + test = asciiDigit; + return value(code); + } + + /** + * After markers (`&#x`, `&#`, or `&`), in value, before `;`. + * + * The character reference kind defines what and how many characters are + * allowed. + * + * ```markdown + * > | a&amp;b + * ^^^ + * > | a&#123;b + * ^^^ + * > | a&#x9;b + * ^ + * ``` + * + * @type {State} + */ + function value(code) { + if (code === 59 && size) { + const token = effects.exit("characterReferenceValue"); + if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) { + return nok(code); + } + + // To do: `markdown-rs` uses a different name: + // `CharacterReferenceMarkerSemi`. + effects.enter("characterReferenceMarker"); + effects.consume(code); + effects.exit("characterReferenceMarker"); + effects.exit("characterReference"); + return ok; + } + if (test(code) && size++ < max) { + effects.consume(code); + return value; } - return x; -}; + return nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/character-escape.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) { - var body = readFileSync(pkgfile); - try { - var pkg = JSON.parse(body); - return pkg; - } catch (jsonErr) {} -}; -var getPackageCandidates = function getPackageCandidates(x, start, opts) { - var dirs = nodeModulesPaths(start, opts, x); - for (var i = 0; i < dirs.length; i++) { - dirs[i] = path.join(dirs[i], x); - } - return dirs; +/** @type {Construct} */ +const characterEscape = { + name: 'characterEscape', + tokenize: tokenizeCharacterEscape }; -module.exports = function resolveSync(x, options) { - if (typeof x !== 'string') { - throw new TypeError('Path must be a string.'); - } - var opts = normalizeOptions(x, options); - - var isFile = opts.isFile || defaultIsFile; - var readFileSync = opts.readFileSync || fs.readFileSync; - var isDirectory = opts.isDirectory || defaultIsDir; - var realpathSync = opts.realpathSync || defaultRealpathSync; - var readPackageSync = opts.readPackageSync || defaultReadPackageSync; - if (opts.readFileSync && opts.readPackageSync) { - throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.'); - } - var packageIterator = opts.packageIterator; - - var extensions = opts.extensions || ['.js']; - var includeCoreModules = opts.includeCoreModules !== false; - var basedir = opts.basedir || path.dirname(caller()); - var parent = opts.filename || basedir; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeCharacterEscape(effects, ok, nok) { + return start; + + /** + * Start of character escape. + * + * ```markdown + * > | a\*b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("characterEscape"); + effects.enter("escapeMarker"); + effects.consume(code); + effects.exit("escapeMarker"); + return inside; + } + + /** + * After `\`, at punctuation. + * + * ```markdown + * > | a\*b + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + // ASCII punctuation. + if (asciiPunctuation(code)) { + effects.enter("characterEscapeValue"); + effects.consume(code); + effects.exit("characterEscapeValue"); + effects.exit("characterEscape"); + return ok; + } + return nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/line-ending.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ - opts.paths = opts.paths || []; - // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory - var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); - if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { - var res = path.resolve(absoluteStart, x); - if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; - var m = loadAsFileSync(res) || loadAsDirectorySync(res); - if (m) return maybeRealpathSync(realpathSync, m, opts); - } else if (includeCoreModules && isCore(x)) { - return x; - } else { - var n = loadNodeModulesSync(x, absoluteStart); - if (n) return maybeRealpathSync(realpathSync, n, opts); - } +/** @type {Construct} */ +const lineEnding = { + name: 'lineEnding', + tokenize: tokenizeLineEnding +}; - var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeLineEnding(effects, ok) { + return start; - function loadAsFileSync(x) { - var pkg = loadpkg(path.dirname(x)); + /** @type {State} */ + function start(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return factorySpace(effects, ok, "linePrefix"); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-resolve-all/index.js +/** + * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types' + */ - if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { - var rfile = path.relative(pkg.dir, x); - var r = opts.pathFilter(pkg.pkg, x, rfile); - if (r) { - x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign - } - } +/** + * Call all `resolveAll`s. + * + * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs + * List of constructs, optionally with `resolveAll`s. + * @param {Array<Event>} events + * List of events. + * @param {TokenizeContext} context + * Context used by `tokenize`. + * @returns {Array<Event>} + * Changed events. + */ +function resolveAll(constructs, events, context) { + /** @type {Array<Resolver>} */ + const called = [] + let index = -1 - if (isFile(x)) { - return x; - } + while (++index < constructs.length) { + const resolve = constructs[index].resolveAll - for (var i = 0; i < extensions.length; i++) { - var file = x + extensions[i]; - if (isFile(file)) { - return file; - } - } + if (resolve && !called.includes(resolve)) { + events = resolve(events, context) + called.push(resolve) } + } - function loadpkg(dir) { - if (dir === '' || dir === '/') return; - if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { - return; - } - if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; - - var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json'); + return events +} - if (!isFile(pkgfile)) { - return loadpkg(path.dirname(dir)); - } +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-end.js +/** + * @import { + * Construct, + * Event, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer, + * Token + * } from 'micromark-util-types' + */ - var pkg = readPackageSync(readFileSync, pkgfile); - if (pkg && opts.packageFilter) { - // v2 will pass pkgfile - pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment - } - return { pkg: pkg, dir: dir }; - } - function loadAsDirectorySync(x) { - var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json'); - if (isFile(pkgfile)) { - try { - var pkg = readPackageSync(readFileSync, pkgfile); - } catch (e) {} - if (pkg && opts.packageFilter) { - // v2 will pass pkgfile - pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment - } - if (pkg && pkg.main) { - if (typeof pkg.main !== 'string') { - var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); - mainError.code = 'INVALID_PACKAGE_MAIN'; - throw mainError; - } - if (pkg.main === '.' || pkg.main === './') { - pkg.main = 'index'; - } - try { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - var n = loadAsDirectorySync(path.resolve(x, pkg.main)); - if (n) return n; - } catch (e) {} - } - } - return loadAsFileSync(path.join(x, '/index')); - } - function loadNodeModulesSync(x, start) { - var thunk = function () { return getPackageCandidates(x, start, opts); }; - var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - if (isDirectory(path.dirname(dir))) { - var m = loadAsFileSync(dir); - if (m) return m; - var n = loadAsDirectorySync(dir); - if (n) return n; - } - } - } +/** @type {Construct} */ +const labelEnd = { + name: 'labelEnd', + resolveAll: resolveAllLabelEnd, + resolveTo: resolveToLabelEnd, + tokenize: tokenizeLabelEnd }; +/** @type {Construct} */ +const resourceConstruct = { + tokenize: tokenizeResource +}; +/** @type {Construct} */ +const referenceFullConstruct = { + tokenize: tokenizeReferenceFull +}; +/** @type {Construct} */ +const referenceCollapsedConstruct = { + tokenize: tokenizeReferenceCollapsed +}; -/***/ }), - -/***/ 85314: -/***/ ((module) => { - -"use strict"; - -module.exports = rfdc - -function copyBuffer (cur) { - if (cur instanceof Buffer) { - return Buffer.from(cur) - } - - return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length) -} - -function rfdc (opts) { - opts = opts || {} - - if (opts.circles) return rfdcCircles(opts) - return opts.proto ? cloneProto : clone - - function cloneArray (a, fn) { - var keys = Object.keys(a) - var a2 = new Array(keys.length) - for (var i = 0; i < keys.length; i++) { - var k = keys[i] - var cur = a[k] - if (typeof cur !== 'object' || cur === null) { - a2[k] = cur - } else if (cur instanceof Date) { - a2[k] = new Date(cur) - } else if (ArrayBuffer.isView(cur)) { - a2[k] = copyBuffer(cur) - } else { - a2[k] = fn(cur) - } - } - return a2 - } - - function clone (o) { - if (typeof o !== 'object' || o === null) return o - if (o instanceof Date) return new Date(o) - if (Array.isArray(o)) return cloneArray(o, clone) - if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone)) - if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone)) - var o2 = {} - for (var k in o) { - if (Object.hasOwnProperty.call(o, k) === false) continue - var cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur instanceof Date) { - o2[k] = new Date(cur) - } else if (cur instanceof Map) { - o2[k] = new Map(cloneArray(Array.from(cur), clone)) - } else if (cur instanceof Set) { - o2[k] = new Set(cloneArray(Array.from(cur), clone)) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - o2[k] = clone(cur) - } - } - return o2 - } - - function cloneProto (o) { - if (typeof o !== 'object' || o === null) return o - if (o instanceof Date) return new Date(o) - if (Array.isArray(o)) return cloneArray(o, cloneProto) - if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto)) - if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto)) - var o2 = {} - for (var k in o) { - var cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur instanceof Date) { - o2[k] = new Date(cur) - } else if (cur instanceof Map) { - o2[k] = new Map(cloneArray(Array.from(cur), cloneProto)) - } else if (cur instanceof Set) { - o2[k] = new Set(cloneArray(Array.from(cur), cloneProto)) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - o2[k] = cloneProto(cur) +/** @type {Resolver} */ +function resolveAllLabelEnd(events) { + let index = -1; + /** @type {Array<Event>} */ + const newEvents = []; + while (++index < events.length) { + const token = events[index][1]; + newEvents.push(events[index]); + if (token.type === "labelImage" || token.type === "labelLink" || token.type === "labelEnd") { + // Remove the marker. + const offset = token.type === "labelImage" ? 4 : 2; + token.type = "data"; + index += offset; + } + } + + // If the events are equal, we don't have to copy newEvents to events + if (events.length !== newEvents.length) { + splice(events, 0, events.length, newEvents); + } + return events; +} + +/** @type {Resolver} */ +function resolveToLabelEnd(events, context) { + let index = events.length; + let offset = 0; + /** @type {Token} */ + let token; + /** @type {number | undefined} */ + let open; + /** @type {number | undefined} */ + let close; + /** @type {Array<Event>} */ + let media; + + // Find an opening. + while (index--) { + token = events[index][1]; + if (open) { + // If we see another link, or inactive link label, we’ve been here before. + if (token.type === "link" || token.type === "labelLink" && token._inactive) { + break; } - } - return o2 - } -} - -function rfdcCircles (opts) { - var refs = [] - var refsNew = [] - return opts.proto ? cloneProto : clone - - function cloneArray (a, fn) { - var keys = Object.keys(a) - var a2 = new Array(keys.length) - for (var i = 0; i < keys.length; i++) { - var k = keys[i] - var cur = a[k] - if (typeof cur !== 'object' || cur === null) { - a2[k] = cur - } else if (cur instanceof Date) { - a2[k] = new Date(cur) - } else if (ArrayBuffer.isView(cur)) { - a2[k] = copyBuffer(cur) - } else { - var index = refs.indexOf(cur) - if (index !== -1) { - a2[k] = refsNew[index] - } else { - a2[k] = fn(cur) - } - } - } - return a2 - } - - function clone (o) { - if (typeof o !== 'object' || o === null) return o - if (o instanceof Date) return new Date(o) - if (Array.isArray(o)) return cloneArray(o, clone) - if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone)) - if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone)) - var o2 = {} - refs.push(o) - refsNew.push(o2) - for (var k in o) { - if (Object.hasOwnProperty.call(o, k) === false) continue - var cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur instanceof Date) { - o2[k] = new Date(cur) - } else if (cur instanceof Map) { - o2[k] = new Map(cloneArray(Array.from(cur), clone)) - } else if (cur instanceof Set) { - o2[k] = new Set(cloneArray(Array.from(cur), clone)) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - var i = refs.indexOf(cur) - if (i !== -1) { - o2[k] = refsNew[i] - } else { - o2[k] = clone(cur) - } + // Mark other link openings as inactive, as we can’t have links in + // links. + if (events[index][0] === 'enter' && token.type === "labelLink") { + token._inactive = true; } - } - refs.pop() - refsNew.pop() - return o2 - } - - function cloneProto (o) { - if (typeof o !== 'object' || o === null) return o - if (o instanceof Date) return new Date(o) - if (Array.isArray(o)) return cloneArray(o, cloneProto) - if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto)) - if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto)) - var o2 = {} - refs.push(o) - refsNew.push(o2) - for (var k in o) { - var cur = o[k] - if (typeof cur !== 'object' || cur === null) { - o2[k] = cur - } else if (cur instanceof Date) { - o2[k] = new Date(cur) - } else if (cur instanceof Map) { - o2[k] = new Map(cloneArray(Array.from(cur), cloneProto)) - } else if (cur instanceof Set) { - o2[k] = new Set(cloneArray(Array.from(cur), cloneProto)) - } else if (ArrayBuffer.isView(cur)) { - o2[k] = copyBuffer(cur) - } else { - var i = refs.indexOf(cur) - if (i !== -1) { - o2[k] = refsNew[i] - } else { - o2[k] = cloneProto(cur) + } else if (close) { + if (events[index][0] === 'enter' && (token.type === "labelImage" || token.type === "labelLink") && !token._balanced) { + open = index; + if (token.type !== "labelLink") { + offset = 2; + break; } } + } else if (token.type === "labelEnd") { + close = index; } - refs.pop() - refsNew.pop() - return o2 } -} - + const group = { + type: events[open][1].type === "labelLink" ? "link" : "image", + start: { + ...events[open][1].start + }, + end: { + ...events[events.length - 1][1].end + } + }; + const label = { + type: "label", + start: { + ...events[open][1].start + }, + end: { + ...events[close][1].end + } + }; + const text = { + type: "labelText", + start: { + ...events[open + offset + 2][1].end + }, + end: { + ...events[close - 2][1].start + } + }; + media = [['enter', group, context], ['enter', label, context]]; -/***/ }), + // Opening marker. + media = push(media, events.slice(open + 1, open + offset + 3)); -/***/ 53118: -/***/ ((module, exports, __nccwpck_require__) => { + // Text open. + media = push(media, [['enter', text, context]]); -/* eslint-disable node/no-deprecated-api */ -var buffer = __nccwpck_require__(14300) -var Buffer = buffer.Buffer + // Always populated by defaults. -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} + // Between. + media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context)); -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} + // Text close, marker close, label close. + media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]); -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) + // Reference, resource, or so. + media = push(media, events.slice(close + 1)); -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) + // Media close. + media = push(media, [['exit', group, context]]); + splice(events, open, events.length, media); + return events; } -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeLabelEnd(effects, ok, nok) { + const self = this; + let index = self.events.length; + /** @type {Token} */ + let labelStart; + /** @type {boolean} */ + let defined; + + // Find an opening. + while (index--) { + if ((self.events[index][1].type === "labelImage" || self.events[index][1].type === "labelLink") && !self.events[index][1]._balanced) { + labelStart = self.events[index][1]; + break; } - } else { - buf.fill(0) } - return buf + return start; + + /** + * Start of label end. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ``` + * + * @type {State} + */ + function start(code) { + // If there is not an okay opening. + if (!labelStart) { + return nok(code); + } + + // If the corresponding label (link) start is marked as inactive, + // it means we’d be wrapping a link, like this: + // + // ```markdown + // > | a [b [c](d) e](f) g. + // ^ + // ``` + // + // We can’t have that, so it’s just balanced brackets. + if (labelStart._inactive) { + return labelEndNok(code); + } + defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({ + start: labelStart.end, + end: self.now() + }))); + effects.enter("labelEnd"); + effects.enter("labelMarker"); + effects.consume(code); + effects.exit("labelMarker"); + effects.exit("labelEnd"); + return after; + } + + /** + * After `]`. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + // Note: `markdown-rs` also parses GFM footnotes here, which for us is in + // an extension. + + // Resource (`[asd](fgh)`)? + if (code === 40) { + return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code); + } + + // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference? + if (code === 91) { + return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code); + } + + // Shortcut (`[asd]`) reference? + return defined ? labelEndOk(code) : labelEndNok(code); + } + + /** + * After `]`, at `[`, but not at a full reference. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function referenceNotFull(code) { + return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code); + } + + /** + * Done, we found something. + * + * ```markdown + * > | [a](b) c + * ^ + * > | [a][b] c + * ^ + * > | [a][] b + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function labelEndOk(code) { + // Note: `markdown-rs` does a bunch of stuff here. + return ok(code); + } + + /** + * Done, it’s nothing. + * + * There was an okay opening, but we didn’t match anything. + * + * ```markdown + * > | [a](b c + * ^ + * > | [a][b c + * ^ + * > | [a] b + * ^ + * ``` + * + * @type {State} + */ + function labelEndNok(code) { + labelStart._balanced = true; + return nok(code); + } } -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeResource(effects, ok, nok) { + return resourceStart; + + /** + * At a resource. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceStart(code) { + effects.enter("resource"); + effects.enter("resourceMarker"); + effects.consume(code); + effects.exit("resourceMarker"); + return resourceBefore; + } + + /** + * In resource, after `(`, at optional whitespace. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceBefore(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code); + } + + /** + * In resource, after optional whitespace, at `)` or a destination. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceOpen(code) { + if (code === 41) { + return resourceEnd(code); + } + return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, "resourceDestination", "resourceDestinationLiteral", "resourceDestinationLiteralMarker", "resourceDestinationRaw", "resourceDestinationString", 32)(code); + } + + /** + * In resource, after destination, at optional whitespace. + * + * ```markdown + * > | [a](b) c + * ^ + * ``` + * + * @type {State} + */ + function resourceDestinationAfter(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code); + } + + /** + * At invalid destination. + * + * ```markdown + * > | [a](<<) b + * ^ + * ``` + * + * @type {State} + */ + function resourceDestinationMissing(code) { + return nok(code); + } + + /** + * In resource, after destination and whitespace, at `(` or title. + * + * ```markdown + * > | [a](b ) c + * ^ + * ``` + * + * @type {State} + */ + function resourceBetween(code) { + if (code === 34 || code === 39 || code === 40) { + return factoryTitle(effects, resourceTitleAfter, nok, "resourceTitle", "resourceTitleMarker", "resourceTitleString")(code); + } + return resourceEnd(code); + } + + /** + * In resource, after title, at optional whitespace. + * + * ```markdown + * > | [a](b "c") d + * ^ + * ``` + * + * @type {State} + */ + function resourceTitleAfter(code) { + return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code); + } + + /** + * In resource, at `)`. + * + * ```markdown + * > | [a](b) d + * ^ + * ``` + * + * @type {State} + */ + function resourceEnd(code) { + if (code === 41) { + effects.enter("resourceMarker"); + effects.consume(code); + effects.exit("resourceMarker"); + effects.exit("resource"); + return ok; + } + return nok(code); } - return Buffer(size) } -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeReferenceFull(effects, ok, nok) { + const self = this; + return referenceFull; + + /** + * In a reference (full), at the `[`. + * + * ```markdown + * > | [a][b] d + * ^ + * ``` + * + * @type {State} + */ + function referenceFull(code) { + return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, "reference", "referenceMarker", "referenceString")(code); + } + + /** + * In a reference (full), after `]`. + * + * ```markdown + * > | [a][b] d + * ^ + * ``` + * + * @type {State} + */ + function referenceFullAfter(code) { + return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code); + } + + /** + * In reference (full) that was missing. + * + * ```markdown + * > | [a][b d + * ^ + * ``` + * + * @type {State} + */ + function referenceFullMissing(code) { + return nok(code); } - return buffer.SlowBuffer(size) } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeReferenceCollapsed(effects, ok, nok) { + return referenceCollapsedStart; + + /** + * In reference (collapsed), at `[`. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] d + * ^ + * ``` + * + * @type {State} + */ + function referenceCollapsedStart(code) { + // We only attempt a collapsed label if there’s a `[`. + + effects.enter("reference"); + effects.enter("referenceMarker"); + effects.consume(code); + effects.exit("referenceMarker"); + return referenceCollapsedOpen; + } + + /** + * In reference (collapsed), at `]`. + * + * > 👉 **Note**: we only get here if the label is defined. + * + * ```markdown + * > | [a][] d + * ^ + * ``` + * + * @type {State} + */ + function referenceCollapsedOpen(code) { + if (code === 93) { + effects.enter("referenceMarker"); + effects.consume(code); + effects.exit("referenceMarker"); + effects.exit("reference"); + return ok; + } + return nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-start-image.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -/***/ }), - -/***/ 5693: -/***/ ((module, exports) => { - -"use strict"; - - -const stringify = configure() - -// @ts-expect-error -stringify.configure = configure -// @ts-expect-error -stringify.stringify = stringify - -// @ts-expect-error -stringify.default = stringify - -// @ts-expect-error used for named export -exports.stringify = stringify -// @ts-expect-error used for named export -exports.configure = configure - -module.exports = stringify - -// eslint-disable-next-line -const strEscapeSequencesRegExp = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/ -// eslint-disable-next-line -const strEscapeSequencesReplacer = /[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/g - -// Escaped special characters. Use empty strings to fill up unused entries. -const meta = [ - '\\u0000', '\\u0001', '\\u0002', '\\u0003', '\\u0004', - '\\u0005', '\\u0006', '\\u0007', '\\b', '\\t', - '\\n', '\\u000b', '\\f', '\\r', '\\u000e', - '\\u000f', '\\u0010', '\\u0011', '\\u0012', '\\u0013', - '\\u0014', '\\u0015', '\\u0016', '\\u0017', '\\u0018', - '\\u0019', '\\u001a', '\\u001b', '\\u001c', '\\u001d', - '\\u001e', '\\u001f', '', '', '\\"', - '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '\\\\' -] - -function escapeFn (str) { - if (str.length === 2) { - const charCode = str.charCodeAt(1) - return `${str[0]}\\u${charCode.toString(16)}` - } - const charCode = str.charCodeAt(0) - return meta.length > charCode - ? meta[charCode] - : `\\u${charCode.toString(16)}` -} -// Escape C0 control characters, double quotes, the backslash and every code -// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF. -function strEscape (str) { - // Some magic numbers that worked out fine while benchmarking with v8 8.0 - if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) { - return str - } - if (str.length > 100) { - return str.replace(strEscapeSequencesReplacer, escapeFn) - } - let result = '' - let last = 0 - for (let i = 0; i < str.length; i++) { - const point = str.charCodeAt(i) - if (point === 34 || point === 92 || point < 32) { - result += `${str.slice(last, i)}${meta[point]}` - last = i + 1 - } else if (point >= 0xd800 && point <= 0xdfff) { - if (point <= 0xdbff && i + 1 < str.length) { - const point = str.charCodeAt(i + 1) - if (point >= 0xdc00 && point <= 0xdfff) { - i++ - continue - } - } - result += `${str.slice(last, i)}${`\\u${point.toString(16)}`}` - last = i + 1 - } - } - result += str.slice(last) - return result -} -function insertSort (array) { - // Insertion sort is very efficient for small input sizes but it has a bad - // worst case complexity. Thus, use native array sort for bigger values. - if (array.length > 2e2) { - return array.sort() - } - for (let i = 1; i < array.length; i++) { - const currentValue = array[i] - let position = i - while (position !== 0 && array[position - 1] > currentValue) { - array[position] = array[position - 1] - position-- - } - array[position] = currentValue - } - return array -} +/** @type {Construct} */ +const labelStartImage = { + name: 'labelStartImage', + resolveAll: labelEnd.resolveAll, + tokenize: tokenizeLabelStartImage +}; -const typedArrayPrototypeGetSymbolToStringTag = - Object.getOwnPropertyDescriptor( - Object.getPrototypeOf( - Object.getPrototypeOf( - new Uint8Array() - ) - ), - Symbol.toStringTag - ).get +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeLabelStartImage(effects, ok, nok) { + const self = this; + return start; + + /** + * Start of label (image) start. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("labelImage"); + effects.enter("labelImageMarker"); + effects.consume(code); + effects.exit("labelImageMarker"); + return open; + } + + /** + * After `!`, at `[`. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === 91) { + effects.enter("labelMarker"); + effects.consume(code); + effects.exit("labelMarker"); + effects.exit("labelImage"); + return after; + } + return nok(code); + } + + /** + * After `![`. + * + * ```markdown + * > | a ![b] c + * ^ + * ``` + * + * This is needed in because, when GFM footnotes are enabled, images never + * form when started with a `^`. + * Instead, links form: + * + * ```markdown + * ![^a](b) + * + * ![^a][b] + * + * [b]: c + * ``` + * + * ```html + * <p>!<a href=\"b\">^a</a></p> + * <p>!<a href=\"c\">^a</a></p> + * ``` + * + * @type {State} + */ + function after(code) { + // To do: use a new field to do this, this is still needed for + // `micromark-extension-gfm-footnote`, but the `label-start-link` + // behavior isn’t. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-classify-character/index.js +/** + * @import {Code} from 'micromark-util-types' + */ -function isTypedArrayWithEntries (value) { - return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0 -} -function stringifyTypedArray (array, separator, maximumBreadth) { - if (array.length < maximumBreadth) { - maximumBreadth = array.length +/** + * Classify whether a code represents whitespace, punctuation, or something + * else. + * + * Used for attention (emphasis, strong), whose sequences can open or close + * based on the class of surrounding characters. + * + * > 👉 **Note**: eof (`null`) is seen as whitespace. + * + * @param {Code} code + * Code. + * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined} + * Group. + */ +function classifyCharacter(code) { + if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + return 1; } - const whitespace = separator === ',' ? '' : ' ' - let res = `"0":${whitespace}${array[0]}` - for (let i = 1; i < maximumBreadth; i++) { - res += `${separator}"${i}":${whitespace}${array[i]}` + if (unicodePunctuation(code)) { + return 2; } - return res } +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/attention.js +/** + * @import { + * Code, + * Construct, + * Event, + * Point, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer, + * Token + * } from 'micromark-util-types' + */ -function getCircularValueOption (options) { - if (options && Object.prototype.hasOwnProperty.call(options, 'circularValue')) { - var circularValue = options.circularValue - if (typeof circularValue === 'string') { - return `"${circularValue}"` - } - if (circularValue == null) { - return circularValue - } - if (circularValue === Error || circularValue === TypeError) { - return { - toString () { - throw new TypeError('Converting circular structure to JSON') - } - } - } - throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined') - } - return '"[Circular]"' -} -function getBooleanOption (options, key) { - if (options && Object.prototype.hasOwnProperty.call(options, key)) { - var value = options[key] - if (typeof value !== 'boolean') { - throw new TypeError(`The "${key}" argument must be of type boolean`) - } - } - return value === undefined ? true : value -} -function getPositiveIntegerOption (options, key) { - if (options && Object.prototype.hasOwnProperty.call(options, key)) { - var value = options[key] - if (typeof value !== 'number') { - throw new TypeError(`The "${key}" argument must be of type number`) - } - if (!Number.isInteger(value)) { - throw new TypeError(`The "${key}" argument must be an integer`) - } - if (value < 1) { - throw new RangeError(`The "${key}" argument must be >= 1`) - } - } - return value === undefined ? Infinity : value -} -function getItemCount (number) { - if (number === 1) { - return '1 item' - } - return `${number} items` -} +/** @type {Construct} */ +const attention = { + name: 'attention', + resolveAll: resolveAllAttention, + tokenize: tokenizeAttention +}; -function getUniqueReplacerSet (replacerArray) { - const replacerSet = new Set() - for (const value of replacerArray) { - if (typeof value === 'string') { - replacerSet.add(value) - } else if (typeof value === 'number') { - replacerSet.add(String(value)) - } - } - return replacerSet -} +/** + * Take all events and resolve attention to emphasis or strong. + * + * @type {Resolver} + */ +// eslint-disable-next-line complexity +function resolveAllAttention(events, context) { + let index = -1; + /** @type {number} */ + let open; + /** @type {Token} */ + let group; + /** @type {Token} */ + let text; + /** @type {Token} */ + let openingSequence; + /** @type {Token} */ + let closingSequence; + /** @type {number} */ + let use; + /** @type {Array<Event>} */ + let nextEvents; + /** @type {number} */ + let offset; + + // Walk through all events. + // + // Note: performance of this is fine on an mb of normal markdown, but it’s + // a bottleneck for malicious stuff. + while (++index < events.length) { + // Find a token that can close. + if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) { + open = index; + + // Now walk back to find an opener. + while (open--) { + // Find a token that can open the closer. + if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open && + // If the markers are the same: + context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) { + // If the opening can close or the closing can open, + // and the close size *is not* a multiple of three, + // but the sum of the opening and closing size *is* multiple of three, + // then don’t match. + if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) { + continue; + } -function configure (options) { - const circularValue = getCircularValueOption(options) - const bigint = getBooleanOption(options, 'bigint') - const deterministic = getBooleanOption(options, 'deterministic') - const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth') - const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth') + // Number of markers to use from the sequence. + use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1; + const start = { + ...events[open][1].end + }; + const end = { + ...events[index][1].start + }; + movePoint(start, -use); + movePoint(end, use); + openingSequence = { + type: use > 1 ? "strongSequence" : "emphasisSequence", + start, + end: { + ...events[open][1].end + } + }; + closingSequence = { + type: use > 1 ? "strongSequence" : "emphasisSequence", + start: { + ...events[index][1].start + }, + end + }; + text = { + type: use > 1 ? "strongText" : "emphasisText", + start: { + ...events[open][1].end + }, + end: { + ...events[index][1].start + } + }; + group = { + type: use > 1 ? "strong" : "emphasis", + start: { + ...openingSequence.start + }, + end: { + ...closingSequence.end + } + }; + events[open][1].end = { + ...openingSequence.start + }; + events[index][1].start = { + ...closingSequence.end + }; + nextEvents = []; - function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) { - let value = parent[key] + // If there are more markers in the opening, add them before. + if (events[open][1].end.offset - events[open][1].start.offset) { + nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]); + } - if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') { - value = value.toJSON(key) - } - value = replacer.call(parent, key, value) + // Opening. + nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]); - switch (typeof value) { - case 'string': - return `"${strEscape(value)}"` - case 'object': { - if (value === null) { - return 'null' - } - if (stack.indexOf(value) !== -1) { - return circularValue - } + // Always populated by defaults. - let res = '' - let join = ',' - const originalIndentation = indentation + // Between. + nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context)); - if (Array.isArray(value)) { - if (value.length === 0) { - return '[]' - } - if (maximumDepth < stack.length + 1) { - return '"[Array]"' - } - stack.push(value) - if (spacer !== '') { - indentation += spacer - res += `\n${indentation}` - join = `,\n${indentation}` - } - const maximumValuesToStringify = Math.min(value.length, maximumBreadth) - let i = 0 - for (; i < maximumValuesToStringify - 1; i++) { - const tmp = stringifyFnReplacer(i, value, stack, replacer, spacer, indentation) - res += tmp !== undefined ? tmp : 'null' - res += join - } - const tmp = stringifyFnReplacer(i, value, stack, replacer, spacer, indentation) - res += tmp !== undefined ? tmp : 'null' - if (value.length - 1 > maximumBreadth) { - const removedKeys = value.length - maximumBreadth - 1 - res += `${join}"... ${getItemCount(removedKeys)} not stringified"` - } - if (spacer !== '') { - res += `\n${originalIndentation}` - } - stack.pop() - return `[${res}]` - } + // Closing. + nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]); - let keys = Object.keys(value) - const keyLength = keys.length - if (keyLength === 0) { - return '{}' - } - if (maximumDepth < stack.length + 1) { - return '"[Object]"' - } - let whitespace = '' - let separator = '' - if (spacer !== '') { - indentation += spacer - join = `,\n${indentation}` - whitespace = ' ' - } - let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth) - if (isTypedArrayWithEntries(value)) { - res += stringifyTypedArray(value, join, maximumBreadth) - keys = keys.slice(value.length) - maximumPropertiesToStringify -= value.length - separator = join - } - if (deterministic) { - keys = insertSort(keys) - } - stack.push(value) - for (let i = 0; i < maximumPropertiesToStringify; i++) { - const key = keys[i] - const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation) - if (tmp !== undefined) { - res += `${separator}"${strEscape(key)}":${whitespace}${tmp}` - separator = join + // If there are more markers in the closing, add them after. + if (events[index][1].end.offset - events[index][1].start.offset) { + offset = 2; + nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]); + } else { + offset = 0; } + splice(events, open - 1, index - open + 3, nextEvents); + index = open + nextEvents.length - offset - 2; + break; } - if (keyLength > maximumBreadth) { - const removedKeys = keyLength - maximumBreadth - res += `${separator}"...":${whitespace}"${getItemCount(removedKeys)} not stringified"` - separator = join - } - if (spacer !== '' && separator.length > 1) { - res = `\n${indentation}${res}\n${originalIndentation}` - } - stack.pop() - return `{${res}}` } - case 'number': - return isFinite(value) ? String(value) : 'null' - case 'boolean': - return value === true ? 'true' : 'false' - case 'bigint': - return bigint ? String(value) : undefined } } - function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) { - if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') { - value = value.toJSON(key) + // Remove remaining sequences. + index = -1; + while (++index < events.length) { + if (events[index][1].type === 'attentionSequence') { + events[index][1].type = 'data'; } + } + return events; +} - switch (typeof value) { - case 'string': - return `"${strEscape(value)}"` - case 'object': { - if (value === null) { - return 'null' - } - if (stack.indexOf(value) !== -1) { - return circularValue - } - - const originalIndentation = indentation - let res = '' - let join = ',' - - if (Array.isArray(value)) { - if (value.length === 0) { - return '[]' - } - if (maximumDepth < stack.length + 1) { - return '"[Array]"' - } - stack.push(value) - if (spacer !== '') { - indentation += spacer - res += `\n${indentation}` - join = `,\n${indentation}` - } - const maximumValuesToStringify = Math.min(value.length, maximumBreadth) - let i = 0 - for (; i < maximumValuesToStringify - 1; i++) { - const tmp = stringifyArrayReplacer(i, value[i], stack, replacer, spacer, indentation) - res += tmp !== undefined ? tmp : 'null' - res += join - } - const tmp = stringifyArrayReplacer(i, value[i], stack, replacer, spacer, indentation) - res += tmp !== undefined ? tmp : 'null' - if (value.length - 1 > maximumBreadth) { - const removedKeys = value.length - maximumBreadth - 1 - res += `${join}"... ${getItemCount(removedKeys)} not stringified"` - } - if (spacer !== '') { - res += `\n${originalIndentation}` - } - stack.pop() - return `[${res}]` - } - if (replacer.size === 0) { - return '{}' - } - stack.push(value) - let whitespace = '' - if (spacer !== '') { - indentation += spacer - join = `,\n${indentation}` - whitespace = ' ' - } - let separator = '' - for (const key of replacer) { - const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation) - if (tmp !== undefined) { - res += `${separator}"${strEscape(key)}":${whitespace}${tmp}` - separator = join - } - } - if (spacer !== '' && separator.length > 1) { - res = `\n${indentation}${res}\n${originalIndentation}` - } - stack.pop() - return `{${res}}` - } - case 'number': - return isFinite(value) ? String(value) : 'null' - case 'boolean': - return value === true ? 'true' : 'false' - case 'bigint': - return bigint ? String(value) : undefined - } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeAttention(effects, ok) { + const attentionMarkers = this.parser.constructs.attentionMarkers.null; + const previous = this.previous; + const before = classifyCharacter(previous); + + /** @type {NonNullable<Code>} */ + let marker; + return start; + + /** + * Before a sequence. + * + * ```markdown + * > | ** + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + marker = code; + effects.enter('attentionSequence'); + return inside(code); + } + + /** + * In a sequence. + * + * ```markdown + * > | ** + * ^^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === marker) { + effects.consume(code); + return inside; + } + const token = effects.exit('attentionSequence'); + + // To do: next major: move this to resolver, just like `markdown-rs`. + const after = classifyCharacter(code); + + // Always populated by defaults. + + const open = !after || after === 2 && before || attentionMarkers.includes(code); + const close = !before || before === 2 && after || attentionMarkers.includes(previous); + token._open = Boolean(marker === 42 ? open : open && (before || !close)); + token._close = Boolean(marker === 42 ? close : close && (after || !open)); + return ok(code); } +} - function stringifyIndent (key, value, stack, spacer, indentation) { - switch (typeof value) { - case 'string': - return `"${strEscape(value)}"` - case 'object': { - if (value === null) { - return 'null' - } - if (typeof value.toJSON === 'function') { - value = value.toJSON(key) - // Prevent calling `toJSON` again. - if (typeof value !== 'object') { - return stringifyIndent(key, value, stack, spacer, indentation) - } - if (value === null) { - return 'null' - } - } - if (stack.indexOf(value) !== -1) { - return circularValue - } - const originalIndentation = indentation +/** + * Move a point a bit. + * + * Note: `move` only works inside lines! It’s not possible to move past other + * chunks (replacement characters, tabs, or line endings). + * + * @param {Point} point + * Point. + * @param {number} offset + * Amount to move. + * @returns {undefined} + * Nothing. + */ +function movePoint(point, offset) { + point.column += offset; + point.offset += offset; + point._bufferIndex += offset; +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/autolink.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ - if (Array.isArray(value)) { - if (value.length === 0) { - return '[]' - } - if (maximumDepth < stack.length + 1) { - return '"[Array]"' - } - stack.push(value) - indentation += spacer - let res = `\n${indentation}` - const join = `,\n${indentation}` - const maximumValuesToStringify = Math.min(value.length, maximumBreadth) - let i = 0 - for (; i < maximumValuesToStringify - 1; i++) { - const tmp = stringifyIndent(i, value[i], stack, spacer, indentation) - res += tmp !== undefined ? tmp : 'null' - res += join - } - const tmp = stringifyIndent(i, value[i], stack, spacer, indentation) - res += tmp !== undefined ? tmp : 'null' - if (value.length - 1 > maximumBreadth) { - const removedKeys = value.length - maximumBreadth - 1 - res += `${join}"... ${getItemCount(removedKeys)} not stringified"` - } - res += `\n${originalIndentation}` - stack.pop() - return `[${res}]` - } - let keys = Object.keys(value) - const keyLength = keys.length - if (keyLength === 0) { - return '{}' - } - if (maximumDepth < stack.length + 1) { - return '"[Object]"' - } - indentation += spacer - const join = `,\n${indentation}` - let res = '' - let separator = '' - let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth) - if (isTypedArrayWithEntries(value)) { - res += stringifyTypedArray(value, join, maximumBreadth) - keys = keys.slice(value.length) - maximumPropertiesToStringify -= value.length - separator = join - } - if (deterministic) { - keys = insertSort(keys) - } - stack.push(value) - for (let i = 0; i < maximumPropertiesToStringify; i++) { - const key = keys[i] - const tmp = stringifyIndent(key, value[key], stack, spacer, indentation) - if (tmp !== undefined) { - res += `${separator}"${strEscape(key)}": ${tmp}` - separator = join - } - } - if (keyLength > maximumBreadth) { - const removedKeys = keyLength - maximumBreadth - res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"` - separator = join - } - if (separator !== '') { - res = `\n${indentation}${res}\n${originalIndentation}` - } - stack.pop() - return `{${res}}` - } - case 'number': - return isFinite(value) ? String(value) : 'null' - case 'boolean': - return value === true ? 'true' : 'false' - case 'bigint': - return bigint ? String(value) : undefined - } - } +/** @type {Construct} */ +const autolink = { + name: 'autolink', + tokenize: tokenizeAutolink +}; - function stringifySimple (key, value, stack) { - switch (typeof value) { - case 'string': - return `"${strEscape(value)}"` - case 'object': { - if (value === null) { - return 'null' - } - if (typeof value.toJSON === 'function') { - value = value.toJSON(key) - // Prevent calling `toJSON` again - if (typeof value !== 'object') { - return stringifySimple(key, value, stack) - } - if (value === null) { - return 'null' - } - } - if (stack.indexOf(value) !== -1) { - return circularValue - } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeAutolink(effects, ok, nok) { + let size = 0; + return start; + + /** + * Start of an autolink. + * + * ```markdown + * > | a<https://example.com>b + * ^ + * > | a<user@example.com>b + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("autolink"); + effects.enter("autolinkMarker"); + effects.consume(code); + effects.exit("autolinkMarker"); + effects.enter("autolinkProtocol"); + return open; + } + + /** + * After `<`, at protocol or atext. + * + * ```markdown + * > | a<https://example.com>b + * ^ + * > | a<user@example.com>b + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (asciiAlpha(code)) { + effects.consume(code); + return schemeOrEmailAtext; + } + if (code === 64) { + return nok(code); + } + return emailAtext(code); + } + + /** + * At second byte of protocol or atext. + * + * ```markdown + * > | a<https://example.com>b + * ^ + * > | a<user@example.com>b + * ^ + * ``` + * + * @type {State} + */ + function schemeOrEmailAtext(code) { + // ASCII alphanumeric and `+`, `-`, and `.`. + if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) { + // Count the previous alphabetical from `open` too. + size = 1; + return schemeInsideOrEmailAtext(code); + } + return emailAtext(code); + } + + /** + * In ambiguous protocol or atext. + * + * ```markdown + * > | a<https://example.com>b + * ^ + * > | a<user@example.com>b + * ^ + * ``` + * + * @type {State} + */ + function schemeInsideOrEmailAtext(code) { + if (code === 58) { + effects.consume(code); + size = 0; + return urlInside; + } + + // ASCII alphanumeric and `+`, `-`, and `.`. + if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) { + effects.consume(code); + return schemeInsideOrEmailAtext; + } + size = 0; + return emailAtext(code); + } + + /** + * After protocol, in URL. + * + * ```markdown + * > | a<https://example.com>b + * ^ + * ``` + * + * @type {State} + */ + function urlInside(code) { + if (code === 62) { + effects.exit("autolinkProtocol"); + effects.enter("autolinkMarker"); + effects.consume(code); + effects.exit("autolinkMarker"); + effects.exit("autolink"); + return ok; + } + + // ASCII control, space, or `<`. + if (code === null || code === 32 || code === 60 || asciiControl(code)) { + return nok(code); + } + effects.consume(code); + return urlInside; + } + + /** + * In email atext. + * + * ```markdown + * > | a<user.name@example.com>b + * ^ + * ``` + * + * @type {State} + */ + function emailAtext(code) { + if (code === 64) { + effects.consume(code); + return emailAtSignOrDot; + } + if (asciiAtext(code)) { + effects.consume(code); + return emailAtext; + } + return nok(code); + } + + /** + * In label, after at-sign or dot. + * + * ```markdown + * > | a<user.name@example.com>b + * ^ ^ + * ``` + * + * @type {State} + */ + function emailAtSignOrDot(code) { + return asciiAlphanumeric(code) ? emailLabel(code) : nok(code); + } + + /** + * In label, where `.` and `>` are allowed. + * + * ```markdown + * > | a<user.name@example.com>b + * ^ + * ``` + * + * @type {State} + */ + function emailLabel(code) { + if (code === 46) { + effects.consume(code); + size = 0; + return emailAtSignOrDot; + } + if (code === 62) { + // Exit, then change the token type. + effects.exit("autolinkProtocol").type = "autolinkEmail"; + effects.enter("autolinkMarker"); + effects.consume(code); + effects.exit("autolinkMarker"); + effects.exit("autolink"); + return ok; + } + return emailValue(code); + } + + /** + * In label, where `.` and `>` are *not* allowed. + * + * Though, this is also used in `emailLabel` to parse other values. + * + * ```markdown + * > | a<user.name@ex-ample.com>b + * ^ + * ``` + * + * @type {State} + */ + function emailValue(code) { + // ASCII alphanumeric or `-`. + if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) { + const next = code === 45 ? emailValue : emailLabel; + effects.consume(code); + return next; + } + return nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/html-text.js +/** + * @import { + * Code, + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ - let res = '' - if (Array.isArray(value)) { - if (value.length === 0) { - return '[]' - } - if (maximumDepth < stack.length + 1) { - return '"[Array]"' - } - stack.push(value) - const maximumValuesToStringify = Math.min(value.length, maximumBreadth) - let i = 0 - for (; i < maximumValuesToStringify - 1; i++) { - const tmp = stringifySimple(i, value[i], stack) - res += tmp !== undefined ? tmp : 'null' - res += ',' - } - const tmp = stringifySimple(i, value[i], stack) - res += tmp !== undefined ? tmp : 'null' - if (value.length - 1 > maximumBreadth) { - const removedKeys = value.length - maximumBreadth - 1 - res += `,"... ${getItemCount(removedKeys)} not stringified"` - } - stack.pop() - return `[${res}]` - } - let keys = Object.keys(value) - const keyLength = keys.length - if (keyLength === 0) { - return '{}' - } - if (maximumDepth < stack.length + 1) { - return '"[Object]"' - } - let separator = '' - let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth) - if (isTypedArrayWithEntries(value)) { - res += stringifyTypedArray(value, ',', maximumBreadth) - keys = keys.slice(value.length) - maximumPropertiesToStringify -= value.length - separator = ',' - } - if (deterministic) { - keys = insertSort(keys) - } - stack.push(value) - for (let i = 0; i < maximumPropertiesToStringify; i++) { - const key = keys[i] - const tmp = stringifySimple(key, value[key], stack) - if (tmp !== undefined) { - res += `${separator}"${strEscape(key)}":${tmp}` - separator = ',' - } - } - if (keyLength > maximumBreadth) { - const removedKeys = keyLength - maximumBreadth - res += `${separator}"...":"${getItemCount(removedKeys)} not stringified"` - } - stack.pop() - return `{${res}}` - } - case 'number': - return isFinite(value) ? String(value) : 'null' - case 'boolean': - return value === true ? 'true' : 'false' - case 'bigint': - return bigint ? String(value) : undefined - } - } +/** @type {Construct} */ +const htmlText = { + name: 'htmlText', + tokenize: tokenizeHtmlText +}; - function stringify (value, replacer, space) { - if (arguments.length > 1) { - let spacer = '' - if (typeof space === 'number') { - spacer = ' '.repeat(Math.min(space, 10)) - } else if (typeof space === 'string') { - spacer = space.slice(0, 10) - } - if (replacer != null) { - if (typeof replacer === 'function') { - return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '') - } - if (Array.isArray(replacer)) { - return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '') - } - } - if (spacer.length !== 0) { - return stringifyIndent('', value, [], spacer, '') - } - } - return stringifySimple('', value, []) +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeHtmlText(effects, ok, nok) { + const self = this; + /** @type {NonNullable<Code> | undefined} */ + let marker; + /** @type {number} */ + let index; + /** @type {State} */ + let returnState; + return start; + + /** + * Start of HTML (text). + * + * ```markdown + * > | a <b> c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("htmlText"); + effects.enter("htmlTextData"); + effects.consume(code); + return open; + } + + /** + * After `<`, at tag name or other stuff. + * + * ```markdown + * > | a <b> c + * ^ + * > | a <!doctype> c + * ^ + * > | a <!--b--> c + * ^ + * ``` + * + * @type {State} + */ + function open(code) { + if (code === 33) { + effects.consume(code); + return declarationOpen; + } + if (code === 47) { + effects.consume(code); + return tagCloseStart; + } + if (code === 63) { + effects.consume(code); + return instruction; + } + + // ASCII alphabetical. + if (asciiAlpha(code)) { + effects.consume(code); + return tagOpen; + } + return nok(code); + } + + /** + * After `<!`, at declaration, comment, or CDATA. + * + * ```markdown + * > | a <!doctype> c + * ^ + * > | a <!--b--> c + * ^ + * > | a <![CDATA[>&<]]> c + * ^ + * ``` + * + * @type {State} + */ + function declarationOpen(code) { + if (code === 45) { + effects.consume(code); + return commentOpenInside; + } + if (code === 91) { + effects.consume(code); + index = 0; + return cdataOpenInside; + } + if (asciiAlpha(code)) { + effects.consume(code); + return declaration; + } + return nok(code); + } + + /** + * In a comment, after `<!-`, at another `-`. + * + * ```markdown + * > | a <!--b--> c + * ^ + * ``` + * + * @type {State} + */ + function commentOpenInside(code) { + if (code === 45) { + effects.consume(code); + return commentEnd; + } + return nok(code); + } + + /** + * In comment. + * + * ```markdown + * > | a <!--b--> c + * ^ + * ``` + * + * @type {State} + */ + function comment(code) { + if (code === null) { + return nok(code); + } + if (code === 45) { + effects.consume(code); + return commentClose; + } + if (markdownLineEnding(code)) { + returnState = comment; + return lineEndingBefore(code); + } + effects.consume(code); + return comment; } - return stringify -} - - -/***/ }), + /** + * In comment, after `-`. + * + * ```markdown + * > | a <!--b--> c + * ^ + * ``` + * + * @type {State} + */ + function commentClose(code) { + if (code === 45) { + effects.consume(code); + return commentEnd; + } + return comment(code); + } + + /** + * In comment, after `--`. + * + * ```markdown + * > | a <!--b--> c + * ^ + * ``` + * + * @type {State} + */ + function commentEnd(code) { + return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code); + } + + /** + * After `<![`, in CDATA, expecting `CDATA[`. + * + * ```markdown + * > | a <![CDATA[>&<]]> b + * ^^^^^^ + * ``` + * + * @type {State} + */ + function cdataOpenInside(code) { + const value = "CDATA["; + if (code === value.charCodeAt(index++)) { + effects.consume(code); + return index === value.length ? cdata : cdataOpenInside; + } + return nok(code); + } + + /** + * In CDATA. + * + * ```markdown + * > | a <![CDATA[>&<]]> b + * ^^^ + * ``` + * + * @type {State} + */ + function cdata(code) { + if (code === null) { + return nok(code); + } + if (code === 93) { + effects.consume(code); + return cdataClose; + } + if (markdownLineEnding(code)) { + returnState = cdata; + return lineEndingBefore(code); + } + effects.consume(code); + return cdata; + } + + /** + * In CDATA, after `]`, at another `]`. + * + * ```markdown + * > | a <![CDATA[>&<]]> b + * ^ + * ``` + * + * @type {State} + */ + function cdataClose(code) { + if (code === 93) { + effects.consume(code); + return cdataEnd; + } + return cdata(code); + } + + /** + * In CDATA, after `]]`, at `>`. + * + * ```markdown + * > | a <![CDATA[>&<]]> b + * ^ + * ``` + * + * @type {State} + */ + function cdataEnd(code) { + if (code === 62) { + return end(code); + } + if (code === 93) { + effects.consume(code); + return cdataEnd; + } + return cdata(code); + } + + /** + * In declaration. + * + * ```markdown + * > | a <!b> c + * ^ + * ``` + * + * @type {State} + */ + function declaration(code) { + if (code === null || code === 62) { + return end(code); + } + if (markdownLineEnding(code)) { + returnState = declaration; + return lineEndingBefore(code); + } + effects.consume(code); + return declaration; + } -/***/ 31040: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** + * In instruction. + * + * ```markdown + * > | a <?b?> c + * ^ + * ``` + * + * @type {State} + */ + function instruction(code) { + if (code === null) { + return nok(code); + } + if (code === 63) { + effects.consume(code); + return instructionClose; + } + if (markdownLineEnding(code)) { + returnState = instruction; + return lineEndingBefore(code); + } + effects.consume(code); + return instruction; + } + + /** + * In instruction, after `?`, at `>`. + * + * ```markdown + * > | a <?b?> c + * ^ + * ``` + * + * @type {State} + */ + function instructionClose(code) { + return code === 62 ? end(code) : instruction(code); + } + + /** + * After `</`, in closing tag, at tag name. + * + * ```markdown + * > | a </b> c + * ^ + * ``` + * + * @type {State} + */ + function tagCloseStart(code) { + // ASCII alphabetical. + if (asciiAlpha(code)) { + effects.consume(code); + return tagClose; + } + return nok(code); + } + + /** + * After `</x`, in a tag name. + * + * ```markdown + * > | a </b> c + * ^ + * ``` + * + * @type {State} + */ + function tagClose(code) { + // ASCII alphanumerical and `-`. + if (code === 45 || asciiAlphanumeric(code)) { + effects.consume(code); + return tagClose; + } + return tagCloseBetween(code); + } + + /** + * In closing tag, after tag name. + * + * ```markdown + * > | a </b> c + * ^ + * ``` + * + * @type {State} + */ + function tagCloseBetween(code) { + if (markdownLineEnding(code)) { + returnState = tagCloseBetween; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagCloseBetween; + } + return end(code); + } + + /** + * After `<x`, in opening tag name. + * + * ```markdown + * > | a <b> c + * ^ + * ``` + * + * @type {State} + */ + function tagOpen(code) { + // ASCII alphanumerical and `-`. + if (code === 45 || asciiAlphanumeric(code)) { + effects.consume(code); + return tagOpen; + } + if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + return tagOpenBetween(code); + } + return nok(code); + } + + /** + * In opening tag, after tag name. + * + * ```markdown + * > | a <b> c + * ^ + * ``` + * + * @type {State} + */ + function tagOpenBetween(code) { + if (code === 47) { + effects.consume(code); + return end; + } + + // ASCII alphabetical and `:` and `_`. + if (code === 58 || code === 95 || asciiAlpha(code)) { + effects.consume(code); + return tagOpenAttributeName; + } + if (markdownLineEnding(code)) { + returnState = tagOpenBetween; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagOpenBetween; + } + return end(code); + } + + /** + * In attribute name. + * + * ```markdown + * > | a <b c> d + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeName(code) { + // ASCII alphabetical and `-`, `.`, `:`, and `_`. + if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) { + effects.consume(code); + return tagOpenAttributeName; + } + return tagOpenAttributeNameAfter(code); + } + + /** + * After attribute name, before initializer, the end of the tag, or + * whitespace. + * + * ```markdown + * > | a <b c> d + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeNameAfter(code) { + if (code === 61) { + effects.consume(code); + return tagOpenAttributeValueBefore; + } + if (markdownLineEnding(code)) { + returnState = tagOpenAttributeNameAfter; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagOpenAttributeNameAfter; + } + return tagOpenBetween(code); + } + + /** + * Before unquoted, double quoted, or single quoted attribute value, allowing + * whitespace. + * + * ```markdown + * > | a <b c=d> e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueBefore(code) { + if (code === null || code === 60 || code === 61 || code === 62 || code === 96) { + return nok(code); + } + if (code === 34 || code === 39) { + effects.consume(code); + marker = code; + return tagOpenAttributeValueQuoted; + } + if (markdownLineEnding(code)) { + returnState = tagOpenAttributeValueBefore; + return lineEndingBefore(code); + } + if (markdownSpace(code)) { + effects.consume(code); + return tagOpenAttributeValueBefore; + } + effects.consume(code); + return tagOpenAttributeValueUnquoted; + } + + /** + * In double or single quoted attribute value. + * + * ```markdown + * > | a <b c="d"> e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueQuoted(code) { + if (code === marker) { + effects.consume(code); + marker = undefined; + return tagOpenAttributeValueQuotedAfter; + } + if (code === null) { + return nok(code); + } + if (markdownLineEnding(code)) { + returnState = tagOpenAttributeValueQuoted; + return lineEndingBefore(code); + } + effects.consume(code); + return tagOpenAttributeValueQuoted; + } + + /** + * In unquoted attribute value. + * + * ```markdown + * > | a <b c=d> e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueUnquoted(code) { + if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) { + return nok(code); + } + if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + return tagOpenBetween(code); + } + effects.consume(code); + return tagOpenAttributeValueUnquoted; + } + + /** + * After double or single quoted attribute value, before whitespace or the end + * of the tag. + * + * ```markdown + * > | a <b c="d"> e + * ^ + * ``` + * + * @type {State} + */ + function tagOpenAttributeValueQuotedAfter(code) { + if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { + return tagOpenBetween(code); + } + return nok(code); + } + + /** + * In certain circumstances of a tag where only an `>` is allowed. + * + * ```markdown + * > | a <b c="d"> e + * ^ + * ``` + * + * @type {State} + */ + function end(code) { + if (code === 62) { + effects.consume(code); + effects.exit("htmlTextData"); + effects.exit("htmlText"); + return ok; + } + return nok(code); + } + + /** + * At eol. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * > | a <!--a + * ^ + * | b--> + * ``` + * + * @type {State} + */ + function lineEndingBefore(code) { + effects.exit("htmlTextData"); + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return lineEndingAfter; + } + + /** + * After eol, at optional whitespace. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * | a <!--a + * > | b--> + * ^ + * ``` + * + * @type {State} + */ + function lineEndingAfter(code) { + // Always populated by defaults. + + return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code); + } + + /** + * After eol, after optional whitespace. + * + * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about + * > empty tokens. + * + * ```markdown + * | a <!--a + * > | b--> + * ^ + * ``` + * + * @type {State} + */ + function lineEndingAfterPrefix(code) { + effects.enter("htmlTextData"); + return returnState(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-start-link.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' + */ -"use strict"; -var typeOf = __nccwpck_require__(49413); -var extend = __nccwpck_require__(72533); +/** @type {Construct} */ +const labelStartLink = { + name: 'labelStartLink', + resolveAll: labelEnd.resolveAll, + tokenize: tokenizeLabelStartLink +}; /** - * Parse sections in `input` with the given `options`. - * - * ```js - * var sections = require('{%= name %}'); - * var result = sections(input, options); - * // { content: 'Content before sections', sections: [] } - * ``` - * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer. - * @param {Object} options - * @return {Object} Returns an object with a `content` string and an array of `sections` objects. - * @api public + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeLabelStartLink(effects, ok, nok) { + const self = this; + return start; + + /** + * Start of label (link) start. + * + * ```markdown + * > | a [b] c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("labelLink"); + effects.enter("labelMarker"); + effects.consume(code); + effects.exit("labelMarker"); + effects.exit("labelLink"); + return after; + } + + /** @type {State} */ + function after(code) { + // To do: this isn’t needed in `micromark-extension-gfm-footnote`, + // remove. + // Hidden footnotes hook. + /* c8 ignore next 3 */ + return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/hard-break-escape.js +/** + * @import { + * Construct, + * State, + * TokenizeContext, + * Tokenizer + * } from 'micromark-util-types' */ -module.exports = function(input, options) { - if (typeof options === 'function') { - options = { parse: options }; - } - var file = toObject(input); - var defaults = {section_delimiter: '---', parse: identity}; - var opts = extend({}, defaults, options); - var delim = opts.section_delimiter; - var lines = file.content.split(/\r?\n/); - var sections = null; - var section = createSection(); - var content = []; - var stack = []; +/** @type {Construct} */ +const hardBreakEscape = { + name: 'hardBreakEscape', + tokenize: tokenizeHardBreakEscape +}; - function initSections(val) { - file.content = val; - sections = []; - content = []; - } +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeHardBreakEscape(effects, ok, nok) { + return start; + + /** + * Start of a hard break (escape). + * + * ```markdown + * > | a\ + * ^ + * | b + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("hardBreakEscape"); + effects.consume(code); + return after; + } + + /** + * After `\`, at eol. + * + * ```markdown + * > | a\ + * ^ + * | b + * ``` + * + * @type {State} + */ + function after(code) { + if (markdownLineEnding(code)) { + effects.exit("hardBreakEscape"); + return ok(code); + } + return nok(code); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-text.js +/** + * @import { + * Construct, + * Previous, + * Resolver, + * State, + * TokenizeContext, + * Tokenizer, + * Token + * } from 'micromark-util-types' + */ - function closeSection(val) { - if (stack.length) { - section.key = getKey(stack[0], delim); - section.content = val; - opts.parse(section, sections); - sections.push(section); - section = createSection(); - content = []; - stack = []; - } - } - for (var i = 0; i < lines.length; i++) { - var line = lines[i]; - var len = stack.length; - var ln = line.trim(); +/** @type {Construct} */ +const codeText = { + name: 'codeText', + previous, + resolve: resolveCodeText, + tokenize: tokenizeCodeText +}; - if (isDelimiter(ln, delim)) { - if (ln.length === 3 && i !== 0) { - if (len === 0 || len === 2) { - content.push(line); - continue; - } - stack.push(ln); - section.data = content.join('\n'); - content = []; - continue; +// To do: next major: don’t resolve, like `markdown-rs`. +/** @type {Resolver} */ +function resolveCodeText(events) { + let tailExitIndex = events.length - 4; + let headEnterIndex = 3; + /** @type {number} */ + let index; + /** @type {number | undefined} */ + let enter; + + // If we start and end with an EOL or a space. + if ((events[headEnterIndex][1].type === "lineEnding" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === "lineEnding" || events[tailExitIndex][1].type === 'space')) { + index = headEnterIndex; + + // And we have data. + while (++index < tailExitIndex) { + if (events[index][1].type === "codeTextData") { + // Then we have padding. + events[headEnterIndex][1].type = "codeTextPadding"; + events[tailExitIndex][1].type = "codeTextPadding"; + headEnterIndex += 2; + tailExitIndex -= 2; + break; } + } + } - if (sections === null) { - initSections(content.join('\n')); + // Merge adjacent spaces and data. + index = headEnterIndex - 1; + tailExitIndex++; + while (++index <= tailExitIndex) { + if (enter === undefined) { + if (index !== tailExitIndex && events[index][1].type !== "lineEnding") { + enter = index; } - - if (len === 2) { - closeSection(content.join('\n')); + } else if (index === tailExitIndex || events[index][1].type === "lineEnding") { + events[enter][1].type = "codeTextData"; + if (index !== enter + 2) { + events[enter][1].end = events[index - 1][1].end; + events.splice(enter + 2, index - enter - 2); + tailExitIndex -= index - enter - 2; + index = enter + 2; } - - stack.push(ln); - continue; + enter = undefined; } - - content.push(line); } + return events; +} - if (sections === null) { - initSections(content.join('\n')); - } else { - closeSection(content.join('\n')); +/** + * @this {TokenizeContext} + * Context. + * @type {Previous} + */ +function previous(code) { + // If there is a previous code, there will always be a tail. + return code !== 96 || this.events[this.events.length - 1][1].type === "characterEscape"; +} + +/** + * @this {TokenizeContext} + * Context. + * @type {Tokenizer} + */ +function tokenizeCodeText(effects, ok, nok) { + const self = this; + let sizeOpen = 0; + /** @type {number} */ + let size; + /** @type {Token} */ + let token; + return start; + + /** + * Start of code (text). + * + * ```markdown + * > | `a` + * ^ + * > | \`a` + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter("codeText"); + effects.enter("codeTextSequence"); + return sequenceOpen(code); + } + + /** + * In opening sequence. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function sequenceOpen(code) { + if (code === 96) { + effects.consume(code); + sizeOpen++; + return sequenceOpen; + } + effects.exit("codeTextSequence"); + return between(code); + } + + /** + * Between something and something else. + * + * ```markdown + * > | `a` + * ^^ + * ``` + * + * @type {State} + */ + function between(code) { + // EOF. + if (code === null) { + return nok(code); + } + + // To do: next major: don’t do spaces in resolve, but when compiling, + // like `markdown-rs`. + // Tabs don’t work, and virtual spaces don’t make sense. + if (code === 32) { + effects.enter('space'); + effects.consume(code); + effects.exit('space'); + return between; + } + + // Closing fence? Could also be data. + if (code === 96) { + token = effects.enter("codeTextSequence"); + size = 0; + return sequenceClose(code); + } + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return between; + } + + // Data. + effects.enter("codeTextData"); + return data(code); + } + + /** + * In data. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function data(code) { + if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) { + effects.exit("codeTextData"); + return between(code); + } + effects.consume(code); + return data; } - file.sections = sections; - return file; -}; + /** + * In closing sequence. + * + * ```markdown + * > | `a` + * ^ + * ``` + * + * @type {State} + */ + function sequenceClose(code) { + // More. + if (code === 96) { + effects.consume(code); + size++; + return sequenceClose; + } -function isDelimiter(line, delim) { - if (line.slice(0, delim.length) !== delim) { - return false; - } - if (line.charAt(delim.length + 1) === delim.slice(-1)) { - return false; + // Done! + if (size === sizeOpen) { + effects.exit("codeTextSequence"); + effects.exit("codeText"); + return ok(code); + } + + // More or less accents: mark as data. + token.type = "codeTextData"; + return data(code); } - return true; } +;// CONCATENATED MODULE: ./node_modules/micromark/lib/constructs.js +/** + * @import {Extension} from 'micromark-util-types' + */ -function toObject(input) { - if (typeOf(input) !== 'object') { - input = { content: input }; - } - if (typeof input.content !== 'string' && !isBuffer(input.content)) { - throw new TypeError('expected a buffer or string'); - } - input.content = input.content.toString(); - input.sections = []; - return input; -} -function getKey(val, delim) { - return val ? val.slice(delim.length).trim() : ''; -} +/** @satisfies {Extension['document']} */ +const constructs_document = { + [42]: list, + [43]: list, + [45]: list, + [48]: list, + [49]: list, + [50]: list, + [51]: list, + [52]: list, + [53]: list, + [54]: list, + [55]: list, + [56]: list, + [57]: list, + [62]: blockQuote +}; -function createSection() { - return { key: '', data: '', content: '' }; -} +/** @satisfies {Extension['contentInitial']} */ +const contentInitial = { + [91]: definition +}; -function identity(val) { - return val; -} +/** @satisfies {Extension['flowInitial']} */ +const flowInitial = { + [-2]: codeIndented, + [-1]: codeIndented, + [32]: codeIndented +}; -function isBuffer(val) { - if (val && val.constructor && typeof val.constructor.isBuffer === 'function') { - return val.constructor.isBuffer(val); - } - return false; -} +/** @satisfies {Extension['flow']} */ +const constructs_flow = { + [35]: headingAtx, + [42]: thematicBreak, + [45]: [setextUnderline, thematicBreak], + [60]: htmlFlow, + [61]: setextUnderline, + [95]: thematicBreak, + [96]: codeFenced, + [126]: codeFenced +}; +/** @satisfies {Extension['string']} */ +const constructs_string = { + [38]: characterReference, + [92]: characterEscape +}; -/***/ }), +/** @satisfies {Extension['text']} */ +const constructs_text = { + [-5]: lineEnding, + [-4]: lineEnding, + [-3]: lineEnding, + [33]: labelStartImage, + [38]: characterReference, + [42]: attention, + [60]: [autolink, htmlText], + [91]: labelStartLink, + [92]: [hardBreakEscape, characterEscape], + [93]: labelEnd, + [95]: attention, + [96]: codeText +}; -/***/ 29131: -/***/ ((module) => { +/** @satisfies {Extension['insideSpan']} */ +const insideSpan = { + null: [attention, resolver] +}; -"use strict"; +/** @satisfies {Extension['attentionMarkers']} */ +const attentionMarkers = { + null: [42, 95] +}; +/** @satisfies {Extension['disable']} */ +const disable = { + null: [] +}; +;// CONCATENATED MODULE: ./node_modules/micromark/lib/create-tokenizer.js +/** + * @import { + * Chunk, + * Code, + * ConstructRecord, + * Construct, + * Effects, + * InitialConstruct, + * ParseContext, + * Point, + * State, + * TokenizeContext, + * Token + * } from 'micromark-util-types' + */ -const hasBuffer = typeof Buffer !== 'undefined' -const suspectProtoRx = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/ -const suspectConstructorRx = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/ +/** + * @callback Restore + * Restore the state. + * @returns {undefined} + * Nothing. + * + * @typedef Info + * Info. + * @property {Restore} restore + * Restore. + * @property {number} from + * From. + * + * @callback ReturnHandle + * Handle a successful run. + * @param {Construct} construct + * Construct. + * @param {Info} info + * Info. + * @returns {undefined} + * Nothing. + */ -function parse (text, reviver, options) { - // Normalize arguments - if (options == null) { - if (reviver !== null && typeof reviver === 'object') { - options = reviver - reviver = undefined - } else { - options = {} - } - } - const protoAction = options.protoAction || 'error' - const constructorAction = options.constructorAction || 'error' - if (hasBuffer && Buffer.isBuffer(text)) { - text = text.toString() - } - // BOM checker - if (text && text.charCodeAt(0) === 0xFEFF) { - text = text.slice(1) - } +/** + * Create a tokenizer. + * Tokenizers deal with one type of data (e.g., containers, flow, text). + * The parser is the object dealing with it all. + * `initialize` works like other constructs, except that only its `tokenize` + * function is used, in which case it doesn’t receive an `ok` or `nok`. + * `from` can be given to set the point before the first character, although + * when further lines are indented, they must be set with `defineSkip`. + * + * @param {ParseContext} parser + * Parser. + * @param {InitialConstruct} initialize + * Construct. + * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from] + * Point (optional). + * @returns {TokenizeContext} + * Context. + */ +function createTokenizer(parser, initialize, from) { + /** @type {Point} */ + let point = { + _bufferIndex: -1, + _index: 0, + line: from && from.line || 1, + column: from && from.column || 1, + offset: from && from.offset || 0 + }; + /** @type {Record<string, number>} */ + const columnStart = {}; + /** @type {Array<Construct>} */ + const resolveAllConstructs = []; + /** @type {Array<Chunk>} */ + let chunks = []; + /** @type {Array<Token>} */ + let stack = []; + /** @type {boolean | undefined} */ + let consumed = true; + + /** + * Tools used for tokenizing. + * + * @type {Effects} + */ + const effects = { + attempt: constructFactory(onsuccessfulconstruct), + check: constructFactory(onsuccessfulcheck), + consume, + enter, + exit, + interrupt: constructFactory(onsuccessfulcheck, { + interrupt: true + }) + }; - // Parse normally, allowing exceptions - const obj = JSON.parse(text, reviver) + /** + * State and tools for resolving and serializing. + * + * @type {TokenizeContext} + */ + const context = { + code: null, + containerState: {}, + defineSkip, + events: [], + now, + parser, + previous: null, + sliceSerialize, + sliceStream, + write + }; - // options: 'error' (default) / 'remove' / 'ignore' - if (protoAction === 'ignore' && constructorAction === 'ignore') { - return obj - } + /** + * The state function. + * + * @type {State | undefined} + */ + let state = initialize.tokenize.call(context, effects); + + /** + * Track which character we expect to be consumed, to catch bugs. + * + * @type {Code} + */ + let expectedCode; + if (initialize.resolveAll) { + resolveAllConstructs.push(initialize); + } + return context; + + /** @type {TokenizeContext['write']} */ + function write(slice) { + chunks = push(chunks, slice); + main(); + + // Exit if we’re not done, resolve might change stuff. + if (chunks[chunks.length - 1] !== null) { + return []; + } + addResult(initialize, 0); - // Ignore null and non-objects - if (obj === null || typeof obj !== 'object') { - return obj + // Otherwise, resolve, and exit. + context.events = resolveAll(resolveAllConstructs, context.events, context); + return context.events; } - if (protoAction !== 'ignore' && constructorAction !== 'ignore') { - if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) { - return obj - } - } else if (protoAction !== 'ignore' && constructorAction === 'ignore') { - if (suspectProtoRx.test(text) === false) { - return obj - } - } else { - if (suspectConstructorRx.test(text) === false) { - return obj - } + // + // Tools. + // + + /** @type {TokenizeContext['sliceSerialize']} */ + function sliceSerialize(token, expandTabs) { + return serializeChunks(sliceStream(token), expandTabs); } - // Scan result for proto keys - scan(obj, { protoAction, constructorAction }) + /** @type {TokenizeContext['sliceStream']} */ + function sliceStream(token) { + return sliceChunks(chunks, token); + } - return obj -} + /** @type {TokenizeContext['now']} */ + function now() { + // This is a hot path, so we clone manually instead of `Object.assign({}, point)` + const { + _bufferIndex, + _index, + line, + column, + offset + } = point; + return { + _bufferIndex, + _index, + line, + column, + offset + }; + } -function scan (obj, { protoAction = 'error', constructorAction = 'error' } = {}) { - let next = [obj] + /** @type {TokenizeContext['defineSkip']} */ + function defineSkip(value) { + columnStart[value.line] = value.column; + accountForPotentialSkip(); + } - while (next.length) { - const nodes = next - next = [] + // + // State management. + // - for (const node of nodes) { - if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly - if (protoAction === 'error') { - throw new SyntaxError('Object contains forbidden prototype property') + /** + * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by + * `consume`). + * Here is where we walk through the chunks, which either include strings of + * several characters, or numerical character codes. + * The reason to do this in a loop instead of a call is so the stack can + * drain. + * + * @returns {undefined} + * Nothing. + */ + function main() { + /** @type {number} */ + let chunkIndex; + while (point._index < chunks.length) { + const chunk = chunks[point._index]; + + // If we’re in a buffer chunk, loop through it. + if (typeof chunk === 'string') { + chunkIndex = point._index; + if (point._bufferIndex < 0) { + point._bufferIndex = 0; + } + while (point._index === chunkIndex && point._bufferIndex < chunk.length) { + go(chunk.charCodeAt(point._bufferIndex)); } + } else { + go(chunk); + } + } + } + + /** + * Deal with one code. + * + * @param {Code} code + * Code. + * @returns {undefined} + * Nothing. + */ + function go(code) { + consumed = undefined; + expectedCode = code; + state = state(code); + } + + /** @type {Effects['consume']} */ + function consume(code) { + if (markdownLineEnding(code)) { + point.line++; + point.column = 1; + point.offset += code === -3 ? 2 : 1; + accountForPotentialSkip(); + } else if (code !== -1) { + point.column++; + point.offset++; + } + + // Not in a string chunk. + if (point._bufferIndex < 0) { + point._index++; + } else { + point._bufferIndex++; + + // At end of string chunk. + if (point._bufferIndex === + // Points w/ non-negative `_bufferIndex` reference + // strings. + /** @type {string} */ + chunks[point._index].length) { + point._bufferIndex = -1; + point._index++; + } + } + + // Expose the previous character. + context.previous = code; + + // Mark as consumed. + consumed = true; + } + + /** @type {Effects['enter']} */ + function enter(type, fields) { + /** @type {Token} */ + // @ts-expect-error Patch instead of assign required fields to help GC. + const token = fields || {}; + token.type = type; + token.start = now(); + context.events.push(['enter', token, context]); + stack.push(token); + return token; + } + + /** @type {Effects['exit']} */ + function exit(type) { + const token = stack.pop(); + token.end = now(); + context.events.push(['exit', token, context]); + return token; + } + + /** + * Use results. + * + * @type {ReturnHandle} + */ + function onsuccessfulconstruct(construct, info) { + addResult(construct, info.from); + } + + /** + * Discard results. + * + * @type {ReturnHandle} + */ + function onsuccessfulcheck(_, info) { + info.restore(); + } + + /** + * Factory to attempt/check/interrupt. + * + * @param {ReturnHandle} onreturn + * Callback. + * @param {{interrupt?: boolean | undefined} | undefined} [fields] + * Fields. + */ + function constructFactory(onreturn, fields) { + return hook; - delete node.__proto__ // eslint-disable-line no-proto - } + /** + * Handle either an object mapping codes to constructs, a list of + * constructs, or a single construct. + * + * @param {Array<Construct> | ConstructRecord | Construct} constructs + * Constructs. + * @param {State} returnState + * State. + * @param {State | undefined} [bogusState] + * State. + * @returns {State} + * State. + */ + function hook(constructs, returnState, bogusState) { + /** @type {ReadonlyArray<Construct>} */ + let listOfConstructs; + /** @type {number} */ + let constructIndex; + /** @type {Construct} */ + let currentConstruct; + /** @type {Info} */ + let info; + return Array.isArray(constructs) ? /* c8 ignore next 1 */ + handleListOfConstructs(constructs) : 'tokenize' in constructs ? + // Looks like a construct. + handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs); + + /** + * Handle a list of construct. + * + * @param {ConstructRecord} map + * Constructs. + * @returns {State} + * State. + */ + function handleMapOfConstructs(map) { + return start; + + /** @type {State} */ + function start(code) { + const left = code !== null && map[code]; + const all = code !== null && map.null; + const list = [ + // To do: add more extension tests. + /* c8 ignore next 2 */ + ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])]; + return handleListOfConstructs(list)(code); + } + } + + /** + * Handle a list of construct. + * + * @param {ReadonlyArray<Construct>} list + * Constructs. + * @returns {State} + * State. + */ + function handleListOfConstructs(list) { + listOfConstructs = list; + constructIndex = 0; + if (list.length === 0) { + return bogusState; + } + return handleConstruct(list[constructIndex]); + } + + /** + * Handle a single construct. + * + * @param {Construct} construct + * Construct. + * @returns {State} + * State. + */ + function handleConstruct(construct) { + return start; + + /** @type {State} */ + function start(code) { + // To do: not needed to store if there is no bogus state, probably? + // Currently doesn’t work because `inspect` in document does a check + // w/o a bogus, which doesn’t make sense. But it does seem to help perf + // by not storing. + info = store(); + currentConstruct = construct; + if (!construct.partial) { + context.currentConstruct = construct; + } + + // Always populated by defaults. - if (constructorAction !== 'ignore' && - Object.prototype.hasOwnProperty.call(node, 'constructor') && - Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly - if (constructorAction === 'error') { - throw new SyntaxError('Object contains forbidden prototype property') + if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) { + return nok(code); + } + return construct.tokenize.call( + // If we do have fields, create an object w/ `context` as its + // prototype. + // This allows a “live binding”, which is needed for `interrupt`. + fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code); } + } - delete node.constructor + /** @type {State} */ + function ok(code) { + consumed = true; + onreturn(currentConstruct, info); + return returnState; } - for (const key in node) { - const value = node[key] - if (value && typeof value === 'object') { - next.push(node[key]) + /** @type {State} */ + function nok(code) { + consumed = true; + info.restore(); + if (++constructIndex < listOfConstructs.length) { + return handleConstruct(listOfConstructs[constructIndex]); } + return bogusState; } } } + + /** + * @param {Construct} construct + * Construct. + * @param {number} from + * From. + * @returns {undefined} + * Nothing. + */ + function addResult(construct, from) { + if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { + resolveAllConstructs.push(construct); + } + if (construct.resolve) { + splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context)); + } + if (construct.resolveTo) { + context.events = construct.resolveTo(context.events, context); + } + } + + /** + * Store state. + * + * @returns {Info} + * Info. + */ + function store() { + const startPoint = now(); + const startPrevious = context.previous; + const startCurrentConstruct = context.currentConstruct; + const startEventsIndex = context.events.length; + const startStack = Array.from(stack); + return { + from: startEventsIndex, + restore + }; + + /** + * Restore state. + * + * @returns {undefined} + * Nothing. + */ + function restore() { + point = startPoint; + context.previous = startPrevious; + context.currentConstruct = startCurrentConstruct; + context.events.length = startEventsIndex; + stack = startStack; + accountForPotentialSkip(); + } + } + + /** + * Move the current point a bit forward in the line when it’s on a column + * skip. + * + * @returns {undefined} + * Nothing. + */ + function accountForPotentialSkip() { + if (point.line in columnStart && point.column < 2) { + point.column = columnStart[point.line]; + point.offset += columnStart[point.line] - 1; + } + } } -function safeParse (text, reviver) { - try { - return parse(text, reviver) - } catch (ignoreError) { - return null +/** + * Get the chunks from a slice of chunks in the range of a token. + * + * @param {ReadonlyArray<Chunk>} chunks + * Chunks. + * @param {Pick<Token, 'end' | 'start'>} token + * Token. + * @returns {Array<Chunk>} + * Chunks. + */ +function sliceChunks(chunks, token) { + const startIndex = token.start._index; + const startBufferIndex = token.start._bufferIndex; + const endIndex = token.end._index; + const endBufferIndex = token.end._bufferIndex; + /** @type {Array<Chunk>} */ + let view; + if (startIndex === endIndex) { + // @ts-expect-error `_bufferIndex` is used on string chunks. + view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; + } else { + view = chunks.slice(startIndex, endIndex); + if (startBufferIndex > -1) { + const head = view[0]; + if (typeof head === 'string') { + view[0] = head.slice(startBufferIndex); + /* c8 ignore next 4 -- used to be used, no longer */ + } else { + view.shift(); + } + } + if (endBufferIndex > 0) { + // @ts-expect-error `_bufferIndex` is used on string chunks. + view.push(chunks[endIndex].slice(0, endBufferIndex)); + } } + return view; } -module.exports = { - parse, - scan, - safeParse +/** + * Get the string value of a slice of chunks. + * + * @param {ReadonlyArray<Chunk>} chunks + * Chunks. + * @param {boolean | undefined} [expandTabs=false] + * Whether to expand tabs (default: `false`). + * @returns {string} + * Result. + */ +function serializeChunks(chunks, expandTabs) { + let index = -1; + /** @type {Array<string>} */ + const result = []; + /** @type {boolean | undefined} */ + let atTab; + while (++index < chunks.length) { + const chunk = chunks[index]; + /** @type {string} */ + let value; + if (typeof chunk === 'string') { + value = chunk; + } else switch (chunk) { + case -5: + { + value = "\r"; + break; + } + case -4: + { + value = "\n"; + break; + } + case -3: + { + value = "\r" + "\n"; + break; + } + case -2: + { + value = expandTabs ? " " : "\t"; + break; + } + case -1: + { + if (!expandTabs && atTab) continue; + value = " "; + break; + } + default: + { + // Currently only replacement character. + value = String.fromCharCode(chunk); + } + } + atTab = chunk === -2; + result.push(value); + } + return result.join(''); } +;// CONCATENATED MODULE: ./node_modules/micromark/lib/parse.js +/** + * @import { + * Create, + * FullNormalizedExtension, + * InitialConstruct, + * ParseContext, + * ParseOptions + * } from 'micromark-util-types' + */ + + + -/***/ }), -/***/ 42989: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var util = __nccwpck_require__(358); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. + * @param {ParseOptions | null | undefined} [options] + * Configuration (optional). + * @returns {ParseContext} + * Parser. */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); -} +function parse(options) { + const settings = options || {}; + const constructs = /** @type {FullNormalizedExtension} */ + combineExtensions([constructs_namespaceObject, ...(settings.extensions || [])]); + + /** @type {ParseContext} */ + const parser = { + constructs, + content: create(content), + defined: [], + document: create(document_document), + flow: create(flow), + lazy: {}, + string: create(string), + text: create(text_text) + }; + return parser; + /** + * @param {InitialConstruct} initial + * Construct to start with. + * @returns {Create} + * Create a tokenizer. + */ + function create(initial) { + return creator; + /** @type {Create} */ + function creator(from) { + return createTokenizer(parser, initial, from); + } + } +} +;// CONCATENATED MODULE: ./node_modules/micromark/lib/preprocess.js /** - * Static method for creating ArraySet instances from an existing array. + * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types' */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; -}; /** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number + * @callback Preprocessor + * Preprocess a value. + * @param {Value} value + * Value. + * @param {Encoding | null | undefined} [encoding] + * Encoding when `value` is a typed array (optional). + * @param {boolean | null | undefined} [end=false] + * Whether this is the last chunk (default: `false`). + * @returns {Array<Chunk>} + * Chunks. */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; -}; + +const search = /[\0\t\n\r]/g; /** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; + * @returns {Preprocessor} + * Preprocess a value. + */ +function preprocess() { + let column = 1; + let buffer = ''; + /** @type {boolean | undefined} */ + let start = true; + /** @type {boolean | undefined} */ + let atCarriageReturn; + return preprocessor; + + /** @type {Preprocessor} */ + // eslint-disable-next-line complexity + function preprocessor(value, encoding, end) { + /** @type {Array<Chunk>} */ + const chunks = []; + /** @type {RegExpMatchArray | null} */ + let match; + /** @type {number} */ + let next; + /** @type {number} */ + let startPosition; + /** @type {number} */ + let endPosition; + /** @type {Code} */ + let code; + value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value)); + startPosition = 0; + buffer = ''; + if (start) { + // To do: `markdown-rs` actually parses BOMs (byte order mark). + if (value.charCodeAt(0) === 65279) { + startPosition++; + } + start = undefined; + } + while (startPosition < value.length) { + search.lastIndex = startPosition; + match = search.exec(value); + endPosition = match && match.index !== undefined ? match.index : value.length; + code = value.charCodeAt(endPosition); + if (!match) { + buffer = value.slice(startPosition); + break; + } + if (code === 10 && startPosition === endPosition && atCarriageReturn) { + chunks.push(-3); + atCarriageReturn = undefined; + } else { + if (atCarriageReturn) { + chunks.push(-5); + atCarriageReturn = undefined; + } + if (startPosition < endPosition) { + chunks.push(value.slice(startPosition, endPosition)); + column += endPosition - startPosition; + } + switch (code) { + case 0: + { + chunks.push(65533); + column++; + break; + } + case 9: + { + next = Math.ceil(column / 4) * 4; + chunks.push(-2); + while (column++ < next) chunks.push(-1); + break; + } + case 10: + { + chunks.push(-4); + column = 1; + break; + } + default: + { + atCarriageReturn = true; + column = 1; + } + } + } + startPosition = endPosition + 1; + } + if (end) { + if (atCarriageReturn) chunks.push(-5); + if (buffer) chunks.push(buffer); + chunks.push(null); } + return chunks; } -}; - +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-decode-numeric-character-reference/index.js /** - * Is the given string a member of this set? + * Turn the number (in string form as either hexa- or plain decimal) coming from + * a numeric character reference into a character. + * + * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes + * non-characters and control characters safe. * - * @param String aStr + * @param {string} value + * Value to decode. + * @param {number} base + * Numeric base. + * @returns {string} + * Character. */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); +function decodeNumericCharacterReference(value, base) { + const code = Number.parseInt(value, base); + if ( + // C0 except for HT, LF, FF, CR, space. + code < 9 || code === 11 || code > 13 && code < 32 || + // Control character (DEL) of C0, and C1 controls. + code > 126 && code < 160 || + // Lone high surrogates and low surrogates. + code > 55_295 && code < 57_344 || + // Noncharacters. + code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */ + (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */ + // Out of range + code > 1_114_111) { + return "\uFFFD"; } -}; + return String.fromCodePoint(code); +} +;// CONCATENATED MODULE: ./node_modules/micromark-util-decode-string/index.js + + +const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi; /** - * What is the index of the given string in the array? + * Decode markdown strings (which occur in places such as fenced code info + * strings, destinations, labels, and titles). * - * @param String aStr + * The “string” content type allows character escapes and -references. + * This decodes those. + * + * @param {string} value + * Value to decode. + * @returns {string} + * Decoded value. */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; +function decodeString(value) { + return value.replace(characterEscapeOrReference, decode); +} /** - * What is the element at the given index? - * - * @param Number aIdx + * @param {string} $0 + * Match. + * @param {string} $1 + * Character escape. + * @param {string} $2 + * Character reference. + * @returns {string} + * Decoded value */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; +function decode($0, $1, $2) { + if ($1) { + // Escape. + return $1; } - throw new Error('No element indexed by ' + aIdx); -}; + // Reference. + const head = $2.charCodeAt(0); + if (head === 35) { + const head = $2.charCodeAt(1); + const hex = head === 120 || head === 88; + return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10); + } + return decodeNamedCharacterReference($2) || $0; +} +;// CONCATENATED MODULE: ./node_modules/unist-util-stringify-position/lib/index.js /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Point} Point + * @typedef {import('unist').Position} Position */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.I = ArraySet; - -/***/ }), - -/***/ 80675: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause +/** + * @typedef NodeLike + * @property {string} type + * @property {PositionLike | null | undefined} [position] * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * @typedef PointLike + * @property {number | null | undefined} [line] + * @property {number | null | undefined} [column] + * @property {number | null | undefined} [offset] * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: + * @typedef PositionLike + * @property {PointLike | null | undefined} [start] + * @property {PointLike | null | undefined} [end] + */ + +/** + * Serialize the positional info of a point, position (start and end points), + * or node. * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. + * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value] + * Node, position, or point. + * @returns {string} + * Pretty printed positional info of a node (`string`). * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = __nccwpck_require__(75756); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 + * In the format of a range `ls:cs-le:ce` (when given `node` or `position`) + * or a point `l:c` (when given `point`), where `l` stands for line, `c` for + * column, `s` for `start`, and `e` for end. + * An empty string (`''`) is returned if the given value is neither `node`, + * `position`, nor `point`. + */ +function stringifyPosition(value) { + // Nothing. + if (!value || typeof value !== 'object') { + return '' + } -var VLQ_BASE_SHIFT = 5; + // Node. + if ('position' in value || 'type' in value) { + return position(value.position) + } -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + // Position. + if ('start' in value || 'end' in value) { + return position(value) + } -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; + // Point. + if ('line' in value || 'column' in value) { + return point(value) + } -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; + // ? + return '' +} /** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + * @param {Point | PointLike | null | undefined} point + * @returns {string} */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; +function point(point) { + return index(point && point.line) + ':' + index(point && point.column) } /** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + * @param {Position | PositionLike | null | undefined} pos + * @returns {string} */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; +function position(pos) { + return point(pos && pos.start) + '-' + point(pos && pos.end) } /** - * Returns the base 64 VLQ encoded value. + * @param {number | null | undefined} value + * @returns {number} */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; +function index(value) { + return value && typeof value === 'number' ? value : 1 +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-from-markdown/lib/index.js /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. + * @import { + * Break, + * Blockquote, + * Code, + * Definition, + * Emphasis, + * Heading, + * Html, + * Image, + * InlineCode, + * Link, + * ListItem, + * List, + * Nodes, + * Paragraph, + * PhrasingContent, + * ReferenceType, + * Root, + * Strong, + * Text, + * ThematicBreak + * } from 'mdast' + * @import { + * Encoding, + * Event, + * Token, + * Value + * } from 'micromark-util-types' + * @import {Point} from 'unist' + * @import { + * CompileContext, + * CompileData, + * Config, + * Extension, + * Handle, + * OnEnterError, + * Options + * } from './types.js' */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; -/***/ }), -/***/ 75756: -/***/ ((__unused_webpack_module, exports) => { -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); +const lib_own = {}.hasOwnProperty; /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. + * Turn markdown into a syntax tree. + * + * @overload + * @param {Value} value + * @param {Encoding | null | undefined} [encoding] + * @param {Options | null | undefined} [options] + * @returns {Root} + * + * @overload + * @param {Value} value + * @param {Options | null | undefined} [options] + * @returns {Root} + * + * @param {Value} value + * Markdown to parse. + * @param {Encoding | Options | null | undefined} [encoding] + * Character encoding for when `value` is `Buffer`. + * @param {Options | null | undefined} [options] + * Configuration. + * @returns {Root} + * mdast tree. */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; +function fromMarkdown(value, encoding, options) { + if (typeof encoding !== 'string') { + options = encoding; + encoding = undefined; } - throw new TypeError("Must be between 0 and 63: " + number); -}; + return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true)))); +} /** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. + * Note this compiler only understand complete buffering, not streaming. + * + * @param {Options | null | undefined} [options] */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' +function compiler(options) { + /** @type {Config} */ + const config = { + transforms: [], + canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'], + enter: { + autolink: opener(link), + autolinkProtocol: onenterdata, + autolinkEmail: onenterdata, + atxHeading: opener(heading), + blockQuote: opener(blockQuote), + characterEscape: onenterdata, + characterReference: onenterdata, + codeFenced: opener(codeFlow), + codeFencedFenceInfo: buffer, + codeFencedFenceMeta: buffer, + codeIndented: opener(codeFlow, buffer), + codeText: opener(codeText, buffer), + codeTextData: onenterdata, + data: onenterdata, + codeFlowValue: onenterdata, + definition: opener(definition), + definitionDestinationString: buffer, + definitionLabelString: buffer, + definitionTitleString: buffer, + emphasis: opener(emphasis), + hardBreakEscape: opener(hardBreak), + hardBreakTrailing: opener(hardBreak), + htmlFlow: opener(html, buffer), + htmlFlowData: onenterdata, + htmlText: opener(html, buffer), + htmlTextData: onenterdata, + image: opener(image), + label: buffer, + link: opener(link), + listItem: opener(listItem), + listItemValue: onenterlistitemvalue, + listOrdered: opener(list, onenterlistordered), + listUnordered: opener(list), + paragraph: opener(paragraph), + reference: onenterreference, + referenceString: buffer, + resourceDestinationString: buffer, + resourceTitleString: buffer, + setextHeading: opener(heading), + strong: opener(strong), + thematicBreak: opener(thematicBreak) + }, + exit: { + atxHeading: closer(), + atxHeadingSequence: onexitatxheadingsequence, + autolink: closer(), + autolinkEmail: onexitautolinkemail, + autolinkProtocol: onexitautolinkprotocol, + blockQuote: closer(), + characterEscapeValue: onexitdata, + characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, + characterReferenceMarkerNumeric: onexitcharacterreferencemarker, + characterReferenceValue: onexitcharacterreferencevalue, + characterReference: onexitcharacterreference, + codeFenced: closer(onexitcodefenced), + codeFencedFence: onexitcodefencedfence, + codeFencedFenceInfo: onexitcodefencedfenceinfo, + codeFencedFenceMeta: onexitcodefencedfencemeta, + codeFlowValue: onexitdata, + codeIndented: closer(onexitcodeindented), + codeText: closer(onexitcodetext), + codeTextData: onexitdata, + data: onexitdata, + definition: closer(), + definitionDestinationString: onexitdefinitiondestinationstring, + definitionLabelString: onexitdefinitionlabelstring, + definitionTitleString: onexitdefinitiontitlestring, + emphasis: closer(), + hardBreakEscape: closer(onexithardbreak), + hardBreakTrailing: closer(onexithardbreak), + htmlFlow: closer(onexithtmlflow), + htmlFlowData: onexitdata, + htmlText: closer(onexithtmltext), + htmlTextData: onexitdata, + image: closer(onexitimage), + label: onexitlabel, + labelText: onexitlabeltext, + lineEnding: onexitlineending, + link: closer(onexitlink), + listItem: closer(), + listOrdered: closer(), + listUnordered: closer(), + paragraph: closer(), + referenceString: onexitreferencestring, + resourceDestinationString: onexitresourcedestinationstring, + resourceTitleString: onexitresourcetitlestring, + resource: onexitresource, + setextHeading: closer(onexitsetextheading), + setextHeadingLineSequence: onexitsetextheadinglinesequence, + setextHeadingText: onexitsetextheadingtext, + strong: closer(), + thematicBreak: closer() + } + }; + configure(config, (options || {}).mdastExtensions || []); + + /** @type {CompileData} */ + const data = {}; + return compile; + + /** + * Turn micromark events into an mdast tree. + * + * @param {Array<Event>} events + * Events. + * @returns {Root} + * mdast tree. + */ + function compile(events) { + /** @type {Root} */ + let tree = { + type: 'root', + children: [] + }; + /** @type {Omit<CompileContext, 'sliceSerialize'>} */ + const context = { + stack: [tree], + tokenStack: [], + config, + enter, + exit, + buffer, + resume, + data + }; + /** @type {Array<number>} */ + const listStack = []; + let index = -1; + while (++index < events.length) { + // We preprocess lists to add `listItem` tokens, and to infer whether + // items the list itself are spread out. + if (events[index][1].type === "listOrdered" || events[index][1].type === "listUnordered") { + if (events[index][0] === 'enter') { + listStack.push(index); + } else { + const tail = listStack.pop(); + index = prepareList(events, tail, index); + } + } + } + index = -1; + while (++index < events.length) { + const handler = config[events[index][0]]; + if (lib_own.call(handler, events[index][1].type)) { + handler[events[index][1].type].call(Object.assign({ + sliceSerialize: events[index][2].sliceSerialize + }, context), events[index][1]); + } + } + + // Handle tokens still being open. + if (context.tokenStack.length > 0) { + const tail = context.tokenStack[context.tokenStack.length - 1]; + const handler = tail[1] || defaultOnError; + handler.call(context, undefined, tail[0]); + } + + // Figure out `root` position. + tree.position = { + start: lib_point(events.length > 0 ? events[0][1].start : { + line: 1, + column: 1, + offset: 0 + }), + end: lib_point(events.length > 0 ? events[events.length - 2][1].end : { + line: 1, + column: 1, + offset: 0 + }) + }; + + // Call transforms. + index = -1; + while (++index < config.transforms.length) { + tree = config.transforms[index](tree) || tree; + } + return tree; + } + + /** + * @param {Array<Event>} events + * @param {number} start + * @param {number} length + * @returns {number} + */ + function prepareList(events, start, length) { + let index = start - 1; + let containerBalance = -1; + let listSpread = false; + /** @type {Token | undefined} */ + let listItem; + /** @type {number | undefined} */ + let lineIndex; + /** @type {number | undefined} */ + let firstBlankLineIndex; + /** @type {boolean | undefined} */ + let atMarker; + while (++index <= length) { + const event = events[index]; + switch (event[1].type) { + case "listUnordered": + case "listOrdered": + case "blockQuote": + { + if (event[0] === 'enter') { + containerBalance++; + } else { + containerBalance--; + } + atMarker = undefined; + break; + } + case "lineEndingBlank": + { + if (event[0] === 'enter') { + if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) { + firstBlankLineIndex = index; + } + atMarker = undefined; + } + break; + } + case "linePrefix": + case "listItemValue": + case "listItemMarker": + case "listItemPrefix": + case "listItemPrefixWhitespace": + { + // Empty. - var littleA = 97; // 'a' - var littleZ = 122; // 'z' + break; + } + default: + { + atMarker = undefined; + } + } + if (!containerBalance && event[0] === 'enter' && event[1].type === "listItemPrefix" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === "listUnordered" || event[1].type === "listOrdered")) { + if (listItem) { + let tailIndex = index; + lineIndex = undefined; + while (tailIndex--) { + const tailEvent = events[tailIndex]; + if (tailEvent[1].type === "lineEnding" || tailEvent[1].type === "lineEndingBlank") { + if (tailEvent[0] === 'exit') continue; + if (lineIndex) { + events[lineIndex][1].type = "lineEndingBlank"; + listSpread = true; + } + tailEvent[1].type = "lineEnding"; + lineIndex = tailIndex; + } else if (tailEvent[1].type === "linePrefix" || tailEvent[1].type === "blockQuotePrefix" || tailEvent[1].type === "blockQuotePrefixWhitespace" || tailEvent[1].type === "blockQuoteMarker" || tailEvent[1].type === "listItemIndent") { + // Empty + } else { + break; + } + } + if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) { + listItem._spread = true; + } - var zero = 48; // '0' - var nine = 57; // '9' + // Fix position. + listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end); + events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]); + index++; + length++; + } + + // Create a new list item. + if (event[1].type === "listItemPrefix") { + /** @type {Token} */ + const item = { + type: 'listItem', + _spread: false, + start: Object.assign({}, event[1].start), + // @ts-expect-error: we’ll add `end` in a second. + end: undefined + }; + listItem = item; + events.splice(index, 0, ['enter', item, event[2]]); + index++; + length++; + firstBlankLineIndex = undefined; + atMarker = true; + } + } + } + events[start][1]._spread = listSpread; + return length; + } - var plus = 43; // '+' - var slash = 47; // '/' + /** + * Create an opener handle. + * + * @param {(token: Token) => Nodes} create + * Create a node. + * @param {Handle | undefined} [and] + * Optional function to also run. + * @returns {Handle} + * Handle. + */ + function opener(create, and) { + return open; - var littleOffset = 26; - var numberOffset = 52; + /** + * @this {CompileContext} + * @param {Token} token + * @returns {undefined} + */ + function open(token) { + enter.call(this, create(token), token); + if (and) and.call(this, token); + } + } - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); + /** + * @type {CompileContext['buffer']} + */ + function buffer() { + this.stack.push({ + type: 'fragment', + children: [] + }); } - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); + /** + * @type {CompileContext['enter']} + */ + function enter(node, token, errorHandler) { + const parent = this.stack[this.stack.length - 1]; + /** @type {Array<Nodes>} */ + const siblings = parent.children; + siblings.push(node); + this.stack.push(node); + this.tokenStack.push([token, errorHandler || undefined]); + node.position = { + start: lib_point(token.start), + // @ts-expect-error: `end` will be patched later. + end: undefined + }; } - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); + /** + * Create a closer handle. + * + * @param {Handle | undefined} [and] + * Optional function to also run. + * @returns {Handle} + * Handle. + */ + function closer(and) { + return close; + + /** + * @this {CompileContext} + * @param {Token} token + * @returns {undefined} + */ + function close(token) { + if (and) and.call(this, token); + exit.call(this, token); + } + } + + /** + * @type {CompileContext['exit']} + */ + function exit(token, onExitError) { + const node = this.stack.pop(); + const open = this.tokenStack.pop(); + if (!open) { + throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({ + start: token.start, + end: token.end + }) + '): it’s not open'); + } else if (open[0].type !== token.type) { + if (onExitError) { + onExitError.call(this, token, open[0]); + } else { + const handler = open[1] || defaultOnError; + handler.call(this, token, open[0]); + } + } + node.position.end = lib_point(token.end); } - // 62: + - if (charCode == plus) { - return 62; + /** + * @type {CompileContext['resume']} + */ + function resume() { + return lib_toString(this.stack.pop()); } - // 63: / - if (charCode == slash) { - return 63; + // + // Handlers. + // + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onenterlistordered() { + this.data.expectingFirstListItemValue = true; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onenterlistitemvalue(token) { + if (this.data.expectingFirstListItemValue) { + const ancestor = this.stack[this.stack.length - 2]; + ancestor.start = Number.parseInt(this.sliceSerialize(token), 10); + this.data.expectingFirstListItemValue = undefined; + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefencedfenceinfo() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.lang = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefencedfencemeta() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.meta = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefencedfence() { + // Exit if this is the closing fence. + if (this.data.flowCodeInside) return; + this.buffer(); + this.data.flowCodeInside = true; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodefenced() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ''); + this.data.flowCodeInside = undefined; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcodeindented() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data.replace(/(\r?\n|\r)$/g, ''); + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdefinitionlabelstring(token) { + const label = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.label = label; + node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase(); + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdefinitiontitlestring() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.title = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdefinitiondestinationstring() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.url = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitatxheadingsequence(token) { + const node = this.stack[this.stack.length - 1]; + if (!node.depth) { + const depth = this.sliceSerialize(token).length; + node.depth = depth; + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitsetextheadingtext() { + this.data.setextHeadingSlurpLineEnding = true; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitsetextheadinglinesequence(token) { + const node = this.stack[this.stack.length - 1]; + node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitsetextheading() { + this.data.setextHeadingSlurpLineEnding = undefined; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onenterdata(token) { + const node = this.stack[this.stack.length - 1]; + /** @type {Array<Nodes>} */ + const siblings = node.children; + let tail = siblings[siblings.length - 1]; + if (!tail || tail.type !== 'text') { + // Add a new text node. + tail = text(); + tail.position = { + start: lib_point(token.start), + // @ts-expect-error: we’ll add `end` later. + end: undefined + }; + siblings.push(tail); + } + this.stack.push(tail); } - // Invalid base64 digit. - return -1; -}; + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitdata(token) { + const tail = this.stack.pop(); + tail.value += this.sliceSerialize(token); + tail.position.end = lib_point(token.end); + } -/***/ }), + /** + * @this {CompileContext} + * @type {Handle} + */ -/***/ 31063: -/***/ ((__unused_webpack_module, exports) => { + function onexitlineending(token) { + const context = this.stack[this.stack.length - 1]; + // If we’re at a hard break, include the line ending in there. + if (this.data.atHardBreak) { + const tail = context.children[context.children.length - 1]; + tail.position.end = lib_point(token.end); + this.data.atHardBreak = undefined; + return; + } + if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) { + onenterdata.call(this, token); + onexitdata.call(this, token); + } + } -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ + /** + * @this {CompileContext} + * @type {Handle} + */ -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; + function onexithardbreak() { + this.data.atHardBreak = true; + } -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexithtmlflow() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexithtmltext() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitcodetext() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.value = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlink() { + const node = this.stack[this.stack.length - 1]; + // Note: there are also `identifier` and `label` fields on this link node! + // These are used / cleaned here. + + // To do: clean. + if (this.data.inReference) { + /** @type {ReferenceType} */ + const referenceType = this.data.referenceType || 'shortcut'; + node.type += 'Reference'; + // @ts-expect-error: mutate. + node.referenceType = referenceType; + // @ts-expect-error: mutate. + delete node.url; + delete node.title; } else { - return mid; + // @ts-expect-error: mutate. + delete node.identifier; + // @ts-expect-error: mutate. + delete node.label; } + this.data.referenceType = undefined; } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitimage() { + const node = this.stack[this.stack.length - 1]; + // Note: there are also `identifier` and `label` fields on this link node! + // These are used / cleaned here. + + // To do: clean. + if (this.data.inReference) { + /** @type {ReferenceType} */ + const referenceType = this.data.referenceType || 'shortcut'; + node.type += 'Reference'; + // @ts-expect-error: mutate. + node.referenceType = referenceType; + // @ts-expect-error: mutate. + delete node.url; + delete node.title; } else { - return aLow < 0 ? -1 : aLow; + // @ts-expect-error: mutate. + delete node.identifier; + // @ts-expect-error: mutate. + delete node.label; } + this.data.referenceType = undefined; } -} -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlabeltext(token) { + const string = this.sliceSerialize(token); + const ancestor = this.stack[this.stack.length - 2]; + // @ts-expect-error: stash this on the node, as it might become a reference + // later. + ancestor.label = decodeString(string); + // @ts-expect-error: same as above. + ancestor.identifier = normalizeIdentifier(string).toLowerCase(); + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitlabel() { + const fragment = this.stack[this.stack.length - 1]; + const value = this.resume(); + const node = this.stack[this.stack.length - 1]; + // Assume a reference. + this.data.inReference = true; + if (node.type === 'link') { + /** @type {Array<PhrasingContent>} */ + const children = fragment.children; + node.children = children; + } else { + node.alt = value; + } + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitresourcedestinationstring() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.url = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitresourcetitlestring() { + const data = this.resume(); + const node = this.stack[this.stack.length - 1]; + node.title = data; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitresource() { + this.data.inReference = undefined; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onenterreference() { + this.data.referenceType = 'collapsed'; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitreferencestring(token) { + const label = this.resume(); + const node = this.stack[this.stack.length - 1]; + // @ts-expect-error: stash this on the node, as it might become a reference + // later. + node.label = label; + // @ts-expect-error: same as above. + node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase(); + this.data.referenceType = 'full'; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + + function onexitcharacterreferencemarker(token) { + this.data.characterReferenceType = token.type; + } + + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcharacterreferencevalue(token) { + const data = this.sliceSerialize(token); + const type = this.data.characterReferenceType; + /** @type {string} */ + let value; + if (type) { + value = decodeNumericCharacterReference(data, type === "characterReferenceMarkerNumeric" ? 10 : 16); + this.data.characterReferenceType = undefined; + } else { + const result = decodeNamedCharacterReference(data); + value = result; } - --index; + const tail = this.stack[this.stack.length - 1]; + tail.value += value; } - return index; -}; + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitcharacterreference(token) { + const tail = this.stack.pop(); + tail.position.end = lib_point(token.end); + } + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitautolinkprotocol(token) { + onexitdata.call(this, token); + const node = this.stack[this.stack.length - 1]; + node.url = this.sliceSerialize(token); + } -/***/ }), + /** + * @this {CompileContext} + * @type {Handle} + */ + function onexitautolinkemail(token) { + onexitdata.call(this, token); + const node = this.stack[this.stack.length - 1]; + node.url = 'mailto:' + this.sliceSerialize(token); + } -/***/ 18397: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // + // Creaters. + // -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ + /** @returns {Blockquote} */ + function blockQuote() { + return { + type: 'blockquote', + children: [] + }; + } -var util = __nccwpck_require__(358); + /** @returns {Code} */ + function codeFlow() { + return { + type: 'code', + lang: null, + meta: null, + value: '' + }; + } -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} + /** @returns {InlineCode} */ + function codeText() { + return { + type: 'inlineCode', + value: '' + }; + } + + /** @returns {Definition} */ + function definition() { + return { + type: 'definition', + identifier: '', + label: null, + title: null, + url: '' + }; + } + + /** @returns {Emphasis} */ + function emphasis() { + return { + type: 'emphasis', + children: [] + }; + } + + /** @returns {Heading} */ + function heading() { + return { + type: 'heading', + // @ts-expect-error `depth` will be set later. + depth: 0, + children: [] + }; + } -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} + /** @returns {Break} */ + function hardBreak() { + return { + type: 'break' + }; + } -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; + /** @returns {Html} */ + function html() { + return { + type: 'html', + value: '' + }; + } -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); + /** @returns {Image} */ + function image() { + return { + type: 'image', + title: null, + url: '', + alt: null + }; } -}; -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; + /** @returns {Link} */ + function link() { + return { + type: 'link', + title: null, + url: '', + children: [] + }; } - return this._array; -}; -exports.H = MappingList; + /** + * @param {Token} token + * @returns {List} + */ + function list(token) { + return { + type: 'list', + ordered: token.type === 'listOrdered', + start: null, + spread: token._spread, + children: [] + }; + } + /** + * @param {Token} token + * @returns {ListItem} + */ + function listItem(token) { + return { + type: 'listItem', + spread: token._spread, + checked: null, + children: [] + }; + } -/***/ }), + /** @returns {Paragraph} */ + function paragraph() { + return { + type: 'paragraph', + children: [] + }; + } -/***/ 16467: -/***/ ((__unused_webpack_module, exports) => { + /** @returns {Strong} */ + function strong() { + return { + type: 'strong', + children: [] + }; + } -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ + /** @returns {Text} */ + function text() { + return { + type: 'text', + value: '' + }; + } -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. + /** @returns {ThematicBreak} */ + function thematicBreak() { + return { + type: 'thematicBreak' + }; + } +} /** - * Swap the elements indexed by `x` and `y` in the array `ary`. + * Copy a point-like value. * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. + * @param {Point} d + * Point-like value. + * @returns {Point} + * unist point. */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; +function lib_point(d) { + return { + line: d.line, + column: d.column, + offset: d.offset + }; } /** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. + * @param {Config} combined + * @param {Array<Array<Extension> | Extension>} extensions + * @returns {undefined} */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); +function configure(combined, extensions) { + let index = -1; + while (++index < extensions.length) { + const value = extensions[index]; + if (Array.isArray(value)) { + configure(combined, value); + } else { + extension(combined, value); + } + } } /** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); + * @param {Config} combined + * @param {Extension} extension + * @returns {undefined} + */ +function extension(combined, extension) { + /** @type {keyof Extension} */ + let key; + for (key in extension) { + if (lib_own.call(extension, key)) { + switch (key) { + case 'canContainEols': + { + const right = extension[key]; + if (right) { + combined[key].push(...right); + } + break; + } + case 'transforms': + { + const right = extension[key]; + if (right) { + combined[key].push(...right); + } + break; + } + case 'enter': + case 'exit': + { + const right = extension[key]; + if (right) { + Object.assign(combined[key], right); + } + break; + } + // No default } } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); } } +/** @type {OnEnterError} */ +function defaultOnError(left, right) { + if (left) { + throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({ + start: left.start, + end: left.end + }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({ + start: right.start, + end: right.end + }) + ') is open'); + } else { + throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({ + start: right.start, + end: right.end + }) + ') is still open'); + } +} +;// CONCATENATED MODULE: ./node_modules/remark-parse/lib/index.js /** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. + * @typedef {import('mdast').Root} Root + * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions + * @typedef {import('unified').Parser<Root>} Parser + * @typedef {import('unified').Processor<Root>} Processor */ -exports.U = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; +/** + * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options + */ -/***/ }), -/***/ 53161: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var __webpack_unused_export__; -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause +/** + * Aadd support for parsing from markdown. + * + * @param {Readonly<Options> | null | undefined} [options] + * Configuration (optional). + * @returns {undefined} + * Nothing. */ - -var util = __nccwpck_require__(358); -var binarySearch = __nccwpck_require__(31063); -var ArraySet = (__nccwpck_require__(42989)/* .ArraySet */ .I); -var base64VLQ = __nccwpck_require__(80675); -var quickSort = (__nccwpck_require__(16467)/* .quickSort */ .U); - -function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); +function remarkParse(options) { + /** @type {Processor} */ + // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly. + const self = this + + self.parser = parser + + /** + * @type {Parser} + */ + function parser(doc) { + return fromMarkdown(doc, { + ...self.data('settings'), + ...options, + // Note: these options are not in the readme. + // The goal is for them to be set by plugins on `data` instead of being + // passed by users. + extensions: self.data('micromarkExtensions') || [], + mdastExtensions: self.data('fromMarkdownExtensions') || [] + }) } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); } +;// CONCATENATED MODULE: ./node_modules/zwitch/index.js /** - * The version of the source mapping spec that we are consuming. + * @callback Handler + * Handle a value, with a certain ID field set to a certain value. + * The ID field is passed to `zwitch`, and it’s value is this function’s + * place on the `handlers` record. + * @param {...any} parameters + * Arbitrary parameters passed to the zwitch. + * The first will be an object with a certain ID field set to a certain value. + * @returns {any} + * Anything! */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; +/** + * @callback UnknownHandler + * Handle values that do have a certain ID field, but it’s set to a value + * that is not listed in the `handlers` record. + * @param {unknown} value + * An object with a certain ID field set to an unknown value. + * @param {...any} rest + * Arbitrary parameters passed to the zwitch. + * @returns {any} + * Anything! + */ /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). + * @callback InvalidHandler + * Handle values that do not have a certain ID field. + * @param {unknown} value + * Any unknown value. + * @param {...any} rest + * Arbitrary parameters passed to the zwitch. + * @returns {void|null|undefined|never} + * This should crash or return nothing. */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; +/** + * @template {InvalidHandler} [Invalid=InvalidHandler] + * @template {UnknownHandler} [Unknown=UnknownHandler] + * @template {Record<string, Handler>} [Handlers=Record<string, Handler>] + * @typedef Options + * Configuration (required). + * @property {Invalid} [invalid] + * Handler to use for invalid values. + * @property {Unknown} [unknown] + * Handler to use for unknown values. + * @property {Handlers} [handlers] + * Handlers to use. + */ -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; +const zwitch_own = {}.hasOwnProperty /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. + * Handle values based on a field. * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } + * @template {InvalidHandler} [Invalid=InvalidHandler] + * @template {UnknownHandler} [Unknown=UnknownHandler] + * @template {Record<string, Handler>} [Handlers=Record<string, Handler>] + * @param {string} key + * Field to switch on. + * @param {Options<Invalid, Unknown, Handlers>} [options] + * Configuration (required). + * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}} + */ +function zwitch(key, options) { + const settings = options || {} + + /** + * Handle one value. + * + * Based on the bound `key`, a respective handler will be called. + * If `value` is not an object, or doesn’t have a `key` property, the special + * “invalid” handler will be called. + * If `value` has an unknown `key`, the special “unknown” handler will be + * called. + * + * All arguments, and the context object, are passed through to the handler, + * and it’s result is returned. + * + * @this {unknown} + * Any context object. + * @param {unknown} [value] + * Any value. + * @param {...unknown} parameters + * Arbitrary parameters passed to the zwitch. + * @property {Handler} invalid + * Handle for values that do not have a certain ID field. + * @property {Handler} unknown + * Handle values that do have a certain ID field, but it’s set to a value + * that is not listed in the `handlers` record. + * @property {Handlers} handlers + * Record of handlers. + * @returns {unknown} + * Anything. + */ + function one(value, ...parameters) { + /** @type {Handler|undefined} */ + let fn = one.invalid + const handlers = one.handlers + + if (value && zwitch_own.call(value, key)) { + // @ts-expect-error Indexable. + const id = String(value[key]) + // @ts-expect-error Indexable. + fn = zwitch_own.call(handlers, id) ? handlers[id] : one.unknown + } + + if (fn) { + return fn.call(this, value, ...parameters) + } + } + + one.handlers = settings.handlers || {} + one.invalid = settings.invalid + one.unknown = settings.unknown + + // @ts-expect-error: matches! + return one +} + +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/configure.js +/** + * @import {Options, State} from './types.js' + */ - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; +const configure_own = {}.hasOwnProperty /** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; + * @param {State} base + * @param {Options} extension + * @returns {State} + */ +function configure_configure(base, extension) { + let index = -1 + /** @type {keyof Options} */ + let key - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; + // First do subextensions. + if (extension.extensions) { + while (++index < extension.extensions.length) { + configure_configure(base, extension.extensions[index]) } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); + } - mapping = this._originalMappings[++index]; + for (key in extension) { + if (configure_own.call(extension, key)) { + switch (key) { + case 'extensions': { + // Empty. + break } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - mapping = this._originalMappings[++index]; + /* c8 ignore next 4 */ + case 'unsafe': { + configure_list(base[key], extension[key]) + break } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; -} -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + case 'join': { + configure_list(base[key], extension[key]) + break + } -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); + case 'handlers': { + map(base[key], extension[key]) + break } - destOriginalMappings.push(destMapping); + default: { + // @ts-expect-error: matches. + base.options[key] = extension[key] + } } - - destGeneratedMappings.push(destMapping); } + } - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; + return base +} /** - * The version of the source mapping spec that we are consuming. + * @template T + * @param {Array<T>} left + * @param {Array<T> | null | undefined} right */ -BasicSourceMapConsumer.prototype._version = 3; +function configure_list(left, right) { + if (right) { + left.push(...right) + } +} /** - * The list of original sources. + * @template T + * @param {Record<string, T>} left + * @param {Record<string, T> | null | undefined} right */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); +function map(left, right) { + if (right) { + Object.assign(left, right) } -}); +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/blockquote.js /** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); + * @import {Blockquote, Parents} from 'mdast' + * @import {Info, Map, State} from 'mdast-util-to-markdown' + */ - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } +/** + * @param {Blockquote} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function blockquote(node, _, state, info) { + const exit = state.enter('blockquote') + const tracker = state.createTracker(info) + tracker.move('> ') + tracker.shift(2) + const value = state.indentLines( + state.containerFlow(node, tracker.current()), + blockquote_map + ) + exit() + return value +} - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } +/** @type {Map} */ +function blockquote_map(line, _, blank) { + return '>' + (blank ? '' : ' ') + line +} - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js +/** + * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown' + */ - cachedSegments[str] = segment; - } +/** + * @param {Array<ConstructName>} stack + * @param {Unsafe} pattern + * @returns {boolean} + */ +function patternInScope(stack, pattern) { + return ( + listInScope(stack, pattern.inConstruct, true) && + !listInScope(stack, pattern.notInConstruct, false) + ) +} - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } +/** + * @param {Array<ConstructName>} stack + * @param {Unsafe['inConstruct']} list + * @param {boolean} none + * @returns {boolean} + */ +function listInScope(stack, list, none) { + if (typeof list === 'string') { + list = [list] + } - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } + if (!list || list.length === 0) { + return none + } - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; + let index = -1 - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; + while (++index < list.length) { + if (stack.includes(list[index])) { + return true + } + } + + return false +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/break.js /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. + * @import {Break, Parents} from 'mdast' + * @import {Info, State} from 'mdast-util-to-markdown' */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; /** - * Compute the last column for each generated mapping. The last column is - * inclusive. + * @param {Break} _ + * @param {Parents | undefined} _1 + * @param {State} state + * @param {Info} info + * @returns {string} */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } +function hardBreak(_, _1, state, info) { + let index = -1 - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; + while (++index < state.unsafe.length) { + // If we can’t put eols in this construct (setext headings, tables), use a + // space instead. + if ( + state.unsafe[index].character === '\n' && + patternInScope(state.stack, state.unsafe[index]) + ) { + return /[ \t]/.test(info.before) ? '' : ' ' } - }; + } + return '\\\n' +} + +;// CONCATENATED MODULE: ./node_modules/longest-streak/index.js /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: + * Get the count of the longest repeating streak of `substring` in `value`. * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); + * @param {string} value + * Content to search in. + * @param {string} substring + * Substring to look for, typically one character. + * @returns {number} + * Count of most frequent adjacent `substring`s in `value`. + */ +function longestStreak(value, substring) { + const source = String(value) + let index = source.indexOf(substring) + let expected = index + let count = 0 + let max = 0 - if (index >= 0) { - var mapping = this._generatedMappings[index]; + if (typeof substring !== 'string') { + throw new TypeError('Expected substring') + } - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; + while (index !== -1) { + if (index === expected) { + if (++count > max) { + max = count } + } else { + count = 1 } - return { - source: null, - line: null, - column: null, - name: null - }; - }; + expected = index + substring.length + index = source.indexOf(substring, expected) + } + + return max +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js /** - * Return true if we have the source content for every source in the source - * map, false otherwise. + * @import {State} from 'mdast-util-to-markdown' + * @import {Code} from 'mdast' */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. + * @param {Code} node + * @param {State} state + * @returns {boolean} */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } +function formatCodeAsIndented(node, state) { + return Boolean( + state.options.fences === false && + node.value && + // If there’s no info… + !node.lang && + // And there’s a non-whitespace character… + /[^ \r\n]/.test(node.value) && + // And the value doesn’t start or end in a blank… + !/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(node.value) + ) +} - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-fence.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } +/** + * @param {State} state + * @returns {Exclude<Options['fence'], null | undefined>} + */ +function checkFence(state) { + const marker = state.options.fence || '`' - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } + if (marker !== '`' && marker !== '~') { + throw new Error( + 'Cannot serialize code with `' + + marker + + '` for `options.fence`, expected `` ` `` or `~`' + ) + } - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; + return marker +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/code.js /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. + * @import {Info, Map, State} from 'mdast-util-to-markdown' + * @import {Code, Parents} from 'mdast' */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - return { - line: null, - column: null, - lastColumn: null - }; - }; -__webpack_unused_export__ = BasicSourceMapConsumer; /** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + * @param {Code} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} */ -function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); +function code(node, _, state, info) { + const marker = checkFence(state) + const raw = node.value || '' + const suffix = marker === '`' ? 'GraveAccent' : 'Tilde' + + if (formatCodeAsIndented(node, state)) { + const exit = state.enter('codeIndented') + const value = state.indentLines(raw, code_map) + exit() + return value } - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); + const tracker = state.createTracker(info) + const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3)) + const exit = state.enter('codeFenced') + let value = tracker.move(sequence) - if (version != this._version) { - throw new Error('Unsupported version: ' + version); + if (node.lang) { + const subexit = state.enter(`codeFencedLang${suffix}`) + value += tracker.move( + state.safe(node.lang, { + before: value, + after: ' ', + encode: ['`'], + ...tracker.current() + }) + ) + subexit() + } + + if (node.lang && node.meta) { + const subexit = state.enter(`codeFencedMeta${suffix}`) + value += tracker.move(' ') + value += tracker.move( + state.safe(node.meta, { + before: value, + after: '\n', + encode: ['`'], + ...tracker.current() + }) + ) + subexit() } - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); + value += tracker.move('\n') - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; + if (raw) { + value += tracker.move(raw + '\n') + } - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); + value += tracker.move(sequence) + exit() + return value } -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; +/** @type {Map} */ +function code_map(line, _, blank) { + return (blank ? '' : ' ') + line +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-quote.js /** - * The list of original sources. + * @import {Options, State} from 'mdast-util-to-markdown' */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; /** - * Return true if we have the source content for every source in the source - * map, false otherwise. + * @param {State} state + * @returns {Exclude<Options['quote'], null | undefined>} */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; +function checkQuote(state) { + const marker = state.options.quote || '"' -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; + if (marker !== '"' && marker !== "'") { + throw new Error( + 'Cannot serialize title with `' + + marker + + '` for `options.quote`, expected `"`, or `\'`' + ) + } - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; + return marker +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/definition.js /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Definition, Parents} from 'mdast' */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - return { - line: null, - column: null - }; - }; /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). + * @param {Definition} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; +function definition_definition(node, _, state, info) { + const quote = checkQuote(state) + const suffix = quote === '"' ? 'Quote' : 'Apostrophe' + const exit = state.enter('definition') + let subexit = state.enter('label') + const tracker = state.createTracker(info) + let value = tracker.move('[') + value += tracker.move( + state.safe(state.associationId(node), { + before: value, + after: ']', + ...tracker.current() + }) + ) + value += tracker.move(']: ') - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } + subexit() - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; + if ( + // If there’s no url, or… + !node.url || + // If there are control characters or whitespace. + /[\0- \u007F]/.test(node.url) + ) { + subexit = state.enter('destinationLiteral') + value += tracker.move('<') + value += tracker.move( + state.safe(node.url, {before: value, after: '>', ...tracker.current()}) + ) + value += tracker.move('>') + } else { + // No whitespace, raw is prettier. + subexit = state.enter('destinationRaw') + value += tracker.move( + state.safe(node.url, { + before: value, + after: node.title ? ' ' : '\n', + ...tracker.current() + }) + ) + } -__webpack_unused_export__ = IndexedSourceMapConsumer; + subexit() + if (node.title) { + subexit = state.enter(`title${suffix}`) + value += tracker.move(' ' + quote) + value += tracker.move( + state.safe(node.title, { + before: value, + after: quote, + ...tracker.current() + }) + ) + value += tracker.move(quote) + subexit() + } -/***/ }), + exit() -/***/ 50826: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + return value +} -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' */ -var base64VLQ = __nccwpck_require__(80675); -var util = __nccwpck_require__(358); -var ArraySet = (__nccwpck_require__(42989)/* .ArraySet */ .I); -var MappingList = (__nccwpck_require__(18397)/* .MappingList */ .H); - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. + * @param {State} state + * @returns {Exclude<Options['emphasis'], null | undefined>} */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; +function checkEmphasis(state) { + const marker = state.options.emphasis || '*' + + if (marker !== '*' && marker !== '_') { + throw new Error( + 'Cannot serialize emphasis with `' + + marker + + '` for `options.emphasis`, expected `*`, or `_`' + ) } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} -SourceMapGenerator.prototype._version = 3; + return marker +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer + * Encode a code point as a character reference. * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; + * @param {number} code + * Code point to encode. + * @returns {string} + * Encoded character reference. + */ +function encodeCharacterReference(code) { + return '&#x' + code.toString(16).toUpperCase() + ';' +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/encode-info.js /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. + * @import {EncodeSides} from '../types.js' */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; /** - * Set the source content for a source file. + * Check whether to encode (as a character reference) the characters + * surrounding an attention run. + * + * Which characters are around an attention run influence whether it works or + * not. + * + * See <https://github.com/orgs/syntax-tree/discussions/60> for more info. + * See this markdown in a particular renderer to see what works: + * + * ```markdown + * | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) | + * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ | + * | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z | + * | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. | + * | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z | + * | 4 (nothing outside) | *x* | *.* | * * | ** | + * ``` + * + * @param {number} outside + * Code point on the outer side of the run. + * @param {number} inside + * Code point on the inner side of the run. + * @param {'*' | '_'} marker + * Marker of the run. + * Underscores are handled more strictly (they form less often) than + * asterisks. + * @returns {EncodeSides} + * Whether to encode characters. */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - +// Important: punctuation must never be encoded. +// Punctuation is solely used by markdown constructs. +// And by encoding itself. +// Encoding them will break constructs or double encode things. +function encodeInfo(outside, inside, marker) { + const outsideKind = classifyCharacter(outside) + const insideKind = classifyCharacter(inside) + + // Letter outside: + if (outsideKind === undefined) { + return insideKind === undefined + ? // Letter inside: + // we have to encode *both* letters for `_` as it is looser. + // it already forms for `*` (and GFMs `~`). + marker === '_' + ? {inside: true, outside: true} + : {inside: false, outside: false} + : insideKind === 1 + ? // Whitespace inside: encode both (letter, whitespace). + {inside: true, outside: true} + : // Punctuation inside: encode outer (letter) + {inside: false, outside: true} + } + + // Whitespace outside: + if (outsideKind === 1) { + return insideKind === undefined + ? // Letter inside: already forms. + {inside: false, outside: false} + : insideKind === 1 + ? // Whitespace inside: encode both (whitespace). + {inside: true, outside: true} + : // Punctuation inside: already forms. + {inside: false, outside: false} + } + + // Punctuation outside: + return insideKind === undefined + ? // Letter inside: already forms. + {inside: false, outside: false} + : insideKind === 1 + ? // Whitespace inside: encode inner (whitespace). + {inside: true, outside: false} + : // Punctuation inside: already forms. + {inside: false, outside: false} +} + +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/emphasis.js /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Emphasis, Parents} from 'mdast' + */ - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - }, this); - this._sources = newSources; - this._names = newNames; - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; +emphasis.peek = emphasisPeek /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; + * @param {Emphasis} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function emphasis(node, _, state, info) { + const marker = checkEmphasis(state) + const exit = state.enter('emphasis') + const tracker = state.createTracker(info) + const before = tracker.move(marker) + + let between = tracker.move( + state.containerPhrasing(node, { + after: marker, + before, + ...tracker.current() + }) + ) + const betweenHead = between.charCodeAt(0) + const open = encodeInfo( + info.before.charCodeAt(info.before.length - 1), + betweenHead, + marker + ) - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; + if (open.inside) { + between = encodeCharacterReference(betweenHead) + between.slice(1) + } - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; + const betweenTail = between.charCodeAt(between.length - 1) + const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker) - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } + if (close.inside) { + between = between.slice(0, -1) + encodeCharacterReference(betweenTail) + } - result += next; - } + const after = tracker.move(marker) - return result; - }; + exit() -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; + state.attentionEncodeSurroundingInfo = { + after: close.outside, + before: open.outside + } + return before + between + after +} /** - * Externalize the source map. + * @param {Emphasis} _ + * @param {Parents | undefined} _1 + * @param {State} state + * @returns {string} */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; +function emphasisPeek(_, _1, state) { + return state.options.emphasis || '*' +} +;// CONCATENATED MODULE: ./node_modules/unist-util-is/lib/index.js /** - * Render the source map being generated to a string. + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Parent} Parent */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; - -/***/ }), +/** + * @template Fn + * @template Fallback + * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate + */ -/***/ 82767: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/** + * @callback Check + * Check that an arbitrary value is a node. + * @param {unknown} this + * The given context. + * @param {unknown} [node] + * Anything (typically a node). + * @param {number | null | undefined} [index] + * The node’s position in its parent. + * @param {Parent | null | undefined} [parent] + * The node’s parent. + * @returns {boolean} + * Whether this is a node and passes a test. + * + * @typedef {Record<string, unknown> | Node} Props + * Object to check for equivalence. + * + * Note: `Node` is included as it is common but is not indexable. + * + * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test + * Check for an arbitrary node. + * + * @callback TestFunction + * Check if a node passes a test. + * @param {unknown} this + * The given context. + * @param {Node} node + * A node. + * @param {number | undefined} [index] + * The node’s position in its parent. + * @param {Parent | undefined} [parent] + * The node’s parent. + * @returns {boolean | undefined | void} + * Whether this node passes the test. + * + * Note: `void` is included until TS sees no return as `undefined`. + */ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause +/** + * Check if `node` is a `Node` and whether it passes the given test. + * + * @param {unknown} node + * Thing to check, typically `Node`. + * @param {Test} test + * A check for a specific node. + * @param {number | null | undefined} index + * The node’s position in its parent. + * @param {Parent | null | undefined} parent + * The node’s parent. + * @param {unknown} context + * Context object (`this`) to pass to `test` functions. + * @returns {boolean} + * Whether `node` is a node and passes a test. */ +const is = + // Note: overloads in JSDoc can’t yet use different `@template`s. + /** + * @type {( + * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & + * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & + * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) & + * ((node?: null | undefined) => false) & + * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & + * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean) + * )} + */ + ( + /** + * @param {unknown} [node] + * @param {Test} [test] + * @param {number | null | undefined} [index] + * @param {Parent | null | undefined} [parent] + * @param {unknown} [context] + * @returns {boolean} + */ + // eslint-disable-next-line max-params + function (node, test, index, parent, context) { + const check = convert(test) -var SourceMapGenerator = (__nccwpck_require__(50826).SourceMapGenerator); -var util = __nccwpck_require__(358); + if ( + index !== undefined && + index !== null && + (typeof index !== 'number' || + index < 0 || + index === Number.POSITIVE_INFINITY) + ) { + throw new Error('Expected positive finite index') + } -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; + if ( + parent !== undefined && + parent !== null && + (!is(parent) || !parent.children) + ) { + throw new Error('Expected parent node') + } -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; + if ( + (parent === undefined || parent === null) !== + (index === undefined || index === null) + ) { + throw new Error('Expected both parent and index') + } -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; + return looksLikeANode(node) + ? check.call(context, node, index, parent) + : false + } + ) /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. + * Generate an assertion from a test. + * + * Useful if you’re going to test many nodes, for example when creating a + * utility where something else passes a compatible test. * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. + * The created function is a bit faster because it expects valid input only: + * a `node`, `index`, and `parent`. * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; + * @param {Test} test + * * when nullish, checks if `node` is a `Node`. + * * when `string`, works like passing `(node) => node.type === test`. + * * when `function` checks if function passed the node is true. + * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values. + * * when `array`, checks if any one of the subtests pass. + * @returns {Check} + * An assertion. + */ +const convert = + // Note: overloads in JSDoc can’t yet use different `@template`s. + /** + * @type {( + * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & + * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & + * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) & + * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & + * ((test?: Test) => Check) + * )} + */ + ( + /** + * @param {Test} [test] + * @returns {Check} + */ + function (test) { + if (test === null || test === undefined) { + return ok } - }; - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); + if (typeof test === 'function') { + return castFactory(test) } - }); - return node; + if (typeof test === 'object') { + return Array.isArray(test) ? anyFactory(test) : propsFactory(test) + } - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); + if (typeof test === 'string') { + return typeFactory(test) } + + throw new Error('Expected function, string, or object as test') } - }; + ) /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. + * @param {Array<Props | TestFunction | string>} tests + * @returns {Check} */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); +function anyFactory(tests) { + /** @type {Array<Check>} */ + const checks = [] + let index = -1 + + while (++index < tests.length) { + checks[index] = convert(tests[index]) } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); + + return castFactory(any) + + /** + * @this {unknown} + * @type {TestFunction} + */ + function any(...parameters) { + let index = -1 + + while (++index < checks.length) { + if (checks[index].apply(this, parameters)) return true } + + return false } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; +} /** - * Add a chunk of generated JS to the beginning of this source node. + * Turn an object into a test for a node with a certain fields. * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. + * @param {Props} check + * @returns {Check} */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); +function propsFactory(check) { + const checkAsRecord = /** @type {Record<string, unknown>} */ (check) + + return castFactory(all) + + /** + * @param {Node} node + * @returns {boolean} + */ + function all(node) { + const nodeAsRecord = /** @type {Record<string, unknown>} */ ( + /** @type {unknown} */ (node) + ) + + /** @type {string} */ + let key + + for (key in check) { + if (nodeAsRecord[key] !== checkAsRecord[key]) return false } + + return true } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; +} /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. + * Turn a string into a test for a node with a certain type. * - * @param aFn The traversal function. + * @param {string} check + * @returns {Check} */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } +function typeFactory(check) { + return castFactory(type) + + /** + * @param {Node} node + */ + function type(node) { + return node && node.type === check } -}; +} /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. + * Turn a custom test into a test for a node that passes that test. * - * @param aSep The separator. + * @param {TestFunction} testFunction + * @returns {Check} */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; +function castFactory(testFunction) { + return check + + /** + * @this {unknown} + * @type {Check} + */ + function check(value, index, parent) { + return Boolean( + looksLikeANode(value) && + testFunction.call( + this, + value, + typeof index === 'number' ? index : undefined, + parent || undefined + ) + ) } - return this; -}; +} + +function ok() { + return true +} /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. + * @param {unknown} value + * @returns {value is Node} */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; +function looksLikeANode(value) { + return value !== null && typeof value === 'object' && 'type' in value +} +;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/color.node.js /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file + * @param {string} d + * @returns {string} */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; +function color(d) { + return '\u001B[33m' + d + '\u001B[39m' +} +;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/index.js /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. + * @typedef {import('unist').Node} UnistNode + * @typedef {import('unist').Parent} UnistParent + */ + +/** + * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test + * Test from `unist-util-is`. * - * @param aFn The traversal function. + * Note: we have remove and add `undefined`, because otherwise when generating + * automatic `.d.ts` files, TS tries to flatten paths from a local perspective, + * which doesn’t work when publishing on npm. */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; +/** + * @typedef {( + * Fn extends (value: any) => value is infer Thing + * ? Thing + * : Fallback + * )} Predicate + * Get the value of a type guard `Fn`. + * @template Fn + * Value; typically function that is a type guard (such as `(x): x is Y`). + * @template Fallback + * Value to yield if `Fn` is not a type guard. + */ /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. + * @typedef {( + * Check extends null | undefined // No test. + * ? Value + * : Value extends {type: Check} // String (type) test. + * ? Value + * : Value extends Check // Partial test. + * ? Value + * : Check extends Function // Function test. + * ? Predicate<Check, Value> extends Value + * ? Predicate<Check, Value> + * : never + * : never // Some other test? + * )} MatchesOne + * Check whether a node matches a primitive check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test, but not arrays. */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; /** - * Returns the string representation of this source node along with a source - * map. + * @typedef {( + * Check extends Array<any> + * ? MatchesOne<Value, Check[keyof Check]> + * : MatchesOne<Value, Check> + * )} Matches + * Check whether a node matches a check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test. */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - return { code: generated.code, map: map }; -}; +/** + * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint + * Number; capped reasonably. + */ -exports.SourceNode = SourceNode; +/** + * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment + * Increment a number in the type system. + * @template {Uint} [I=0] + * Index. + */ +/** + * @typedef {( + * Node extends UnistParent + * ? Node extends {children: Array<infer Children>} + * ? Child extends Children ? Node : never + * : never + * : never + * )} InternalParent + * Collect nodes that can be parents of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ -/***/ }), +/** + * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent + * Collect nodes in `Tree` that can be parents of `Child`. + * @template {UnistNode} Tree + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ -/***/ 358: -/***/ ((__unused_webpack_module, exports) => { +/** + * @typedef {( + * Depth extends Max + * ? never + * : + * | InternalParent<Node, Child> + * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>> + * )} InternalAncestor + * Collect nodes in `Tree` that can be ancestors of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. + */ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause +/** + * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor + * Collect nodes in `Tree` that can be ancestors of `Child`. + * @template {UnistNode} Tree + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. */ /** - * This is a helper function for getting values from parameter/options - * objects. + * @typedef {( + * Tree extends UnistParent + * ? Depth extends Max + * ? Tree + * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>> + * : Tree + * )} InclusiveDescendant + * Collect all (inclusive) descendants of `Tree`. * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; + * > 👉 **Note**: for performance reasons, this seems to be the fastest way to + * > recurse without actually running into an infinite loop, which the + * > previous version did. + * > + * > Practically, a max of `2` is typically enough assuming a `Root` is + * > passed, but it doesn’t improve performance. + * > It gets higher with `List > ListItem > Table > TableRow > TableCell`. + * > Using up to `10` doesn’t hurt or help either. + * @template {UnistNode} Tree + * Tree type. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. + */ /** - * Normalizes a path, or the path portion of a URL: + * @typedef {'skip' | boolean} Action + * Union of the action types. * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '<dir>/..' parts. + * @typedef {number} Index + * Move to the sibling at `index` next (after node itself is completely + * traversed). * - * Based on code in the Node.js 'path' core module. + * Useful if mutating the tree, such as removing the node the visitor is + * currently on, or any of its previous siblings. + * Results less than 0 or greater than or equal to `children.length` stop + * traversing the parent. * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; + * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple + * List with one or two values, the first an action, the second an index. + * + * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult + * Any value that can be returned from a visitor. + */ /** - * Joins two paths/URLs. + * @callback Visitor + * Handle a node (matching `test`, if given). + * + * Visitors are free to transform `node`. + * They can also transform the parent of node (the last of `ancestors`). * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. + * Replacing `node` itself, if `SKIP` is not returned, still causes its + * descendants to be walked (which is a bug). * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. + * When adding or removing previous siblings of `node` (or next siblings, in + * case of reverse), the `Visitor` should return a new `Index` to specify the + * sibling to traverse after `node` is traversed. + * Adding or removing next siblings of `node` (or previous siblings, in case + * of reverse) is handled as expected without needing to return a new `Index`. + * + * Removing the children property of an ancestor still results in them being + * traversed. + * @param {Visited} node + * Found node. + * @param {Array<VisitedParents>} ancestors + * Ancestors of `node`. + * @returns {VisitorResult} + * What to do next. + * + * An `Index` is treated as a tuple of `[CONTINUE, Index]`. + * An `Action` is treated as a tuple of `[Action]`. + * + * Passing a tuple back only makes sense if the `Action` is `SKIP`. + * When the `Action` is `EXIT`, that action can be returned. + * When the `Action` is `CONTINUE`, `Index` can be returned. + * @template {UnistNode} [Visited=UnistNode] + * Visited node type. + * @template {UnistParent} [VisitedParents=UnistParent] + * Ancestor type. */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); -}; /** - * Make a path relative to a URL or another path. + * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor + * Build a typed `Visitor` function from a tree and a test. * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. + * It will infer which values are passed as `node` and which as `parents`. + * @template {UnistNode} [Tree=UnistNode] + * Tree type. + * @template {Test} [Check=Test] + * Test type. */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - aRoot = aRoot.replace(/\/$/, ''); - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - ++level; - } +/** @type {Readonly<ActionTuple>} */ +const empty = [] - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; +/** + * Continue traversing as normal. + */ +const CONTINUE = true -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); +/** + * Stop traversing immediately. + */ +const EXIT = false -function identity (s) { - return s; -} +/** + * Do not traverse this node’s children. + */ +const SKIP = 'skip' /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. + * Visit nodes, with ancestral information. + * + * This algorithm performs *depth-first* *tree traversal* in *preorder* + * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**). * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 + * You can choose for which nodes `visitor` is called by passing a `test`. + * For complex tests, you should test yourself in `visitor`, as it will be + * faster and will have improved type information. * - * @param String aStr + * Walking the tree is an intensive task. + * Make use of the return values of the visitor when possible. + * Instead of walking a tree multiple times, walk it once, use `unist-util-is` + * to check if a node matches, and then perform different operations. + * + * You can change the tree. + * See `Visitor` for more info. + * + * @overload + * @param {Tree} tree + * @param {Check} check + * @param {BuildVisitor<Tree, Check>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @overload + * @param {Tree} tree + * @param {BuildVisitor<Tree>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @param {UnistNode} tree + * Tree to traverse. + * @param {Visitor | Test} test + * `unist-util-is`-compatible test + * @param {Visitor | boolean | null | undefined} [visitor] + * Handle each node. + * @param {boolean | null | undefined} [reverse] + * Traverse in reverse preorder (NRL) instead of the default preorder (NLR). + * @returns {undefined} + * Nothing. + * + * @template {UnistNode} Tree + * Node type. + * @template {Test} Check + * `unist-util-is`-compatible test. */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; +function visitParents(tree, test, visitor, reverse) { + /** @type {Test} */ + let check + + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + // @ts-expect-error no visitor given, so `visitor` is test. + visitor = test + } else { + // @ts-expect-error visitor given, so `test` isn’t a visitor. + check = test } - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; + const is = convert(check) + const step = reverse ? -1 : 1 -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } + factory(tree, undefined, [])() - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; + /** + * @param {UnistNode} node + * @param {number | undefined} index + * @param {Array<UnistParent>} parents + */ + function factory(node, index, parents) { + const value = /** @type {Record<string, unknown>} */ ( + node && typeof node === 'object' ? node : {} + ) -function isProtoString(s) { - if (!s) { - return false; - } + if (typeof value.type === 'string') { + const name = + // `hast` + typeof value.tagName === 'string' + ? value.tagName + : // `xast` + typeof value.name === 'string' + ? value.name + : undefined - var length = s.length; + Object.defineProperty(visit, 'name', { + value: + 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')' + }) + } - if (length < 9 /* "__proto__".length */) { - return false; - } + return visit - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } + function visit() { + /** @type {Readonly<ActionTuple>} */ + let result = empty + /** @type {Readonly<ActionTuple>} */ + let subresult + /** @type {number} */ + let offset + /** @type {Array<UnistParent>} */ + let grandparents + + if (!test || is(node, index, parents[parents.length - 1] || undefined)) { + // @ts-expect-error: `visitor` is now a visitor. + result = toResult(visitor(node, parents)) - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } + if (result[0] === EXIT) { + return result + } + } - return true; -} + if ('children' in node && node.children) { + const nodeAsParent = /** @type {UnistParent} */ (node) -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } + if (nodeAsParent.children && result[0] !== SKIP) { + offset = (reverse ? nodeAsParent.children.length : -1) + step + grandparents = parents.concat(nodeAsParent) - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } + while (offset > -1 && offset < nodeAsParent.children.length) { + const child = nodeAsParent.children[offset] - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } + subresult = factory(child, offset, grandparents)() - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } + if (subresult[0] === EXIT) { + return subresult + } - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step + } + } + } - return mappingA.name - mappingB.name; + return result + } + } } -exports.compareByOriginalPositions = compareByOriginalPositions; /** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. + * Turn a return value into a clean result. * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. + * @param {VisitorResult} value + * Valid return values from visitors. + * @returns {Readonly<ActionTuple>} + * Clean result. */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; +function toResult(value) { + if (Array.isArray(value)) { + return value } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; + if (typeof value === 'number') { + return [CONTINUE, value] } - return mappingA.name - mappingB.name; + return value === null || value === undefined ? empty : [value] } -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } +;// CONCATENATED MODULE: ./node_modules/unist-util-visit/lib/index.js +/** + * @typedef {import('unist').Node} UnistNode + * @typedef {import('unist').Parent} UnistParent + * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult + */ - if (aStr1 > aStr2) { - return 1; - } +/** + * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test + * Test from `unist-util-is`. + * + * Note: we have remove and add `undefined`, because otherwise when generating + * automatic `.d.ts` files, TS tries to flatten paths from a local perspective, + * which doesn’t work when publishing on npm. + */ - return -1; -} +// To do: use types from `unist-util-visit-parents` when it’s released. /** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. + * @typedef {( + * Fn extends (value: any) => value is infer Thing + * ? Thing + * : Fallback + * )} Predicate + * Get the value of a type guard `Fn`. + * @template Fn + * Value; typically function that is a type guard (such as `(x): x is Y`). + * @template Fallback + * Value to yield if `Fn` is not a type guard. */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } +/** + * @typedef {( + * Check extends null | undefined // No test. + * ? Value + * : Value extends {type: Check} // String (type) test. + * ? Value + * : Value extends Check // Partial test. + * ? Value + * : Check extends Function // Function test. + * ? Predicate<Check, Value> extends Value + * ? Predicate<Check, Value> + * : never + * : never // Some other test? + * )} MatchesOne + * Check whether a node matches a primitive check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test, but not arrays. + */ - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } +/** + * @typedef {( + * Check extends Array<any> + * ? MatchesOne<Value, Check[keyof Check]> + * : MatchesOne<Value, Check> + * )} Matches + * Check whether a node matches a check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test. + */ - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } +/** + * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint + * Number; capped reasonably. + */ - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } +/** + * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment + * Increment a number in the type system. + * @template {Uint} [I=0] + * Index. + */ - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; +/** + * @typedef {( + * Node extends UnistParent + * ? Node extends {children: Array<infer Children>} + * ? Child extends Children ? Node : never + * : never + * : never + * )} InternalParent + * Collect nodes that can be parents of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ +/** + * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent + * Collect nodes in `Tree` that can be parents of `Child`. + * @template {UnistNode} Tree + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ -/***/ }), +/** + * @typedef {( + * Depth extends Max + * ? never + * : + * | InternalParent<Node, Child> + * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>> + * )} InternalAncestor + * Collect nodes in `Tree` that can be ancestors of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. + */ -/***/ 45018: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/** + * @typedef {( + * Tree extends UnistParent + * ? Depth extends Max + * ? Tree + * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>> + * : Tree + * )} InclusiveDescendant + * Collect all (inclusive) descendants of `Tree`. + * + * > 👉 **Note**: for performance reasons, this seems to be the fastest way to + * > recurse without actually running into an infinite loop, which the + * > previous version did. + * > + * > Practically, a max of `2` is typically enough assuming a `Root` is + * > passed, but it doesn’t improve performance. + * > It gets higher with `List > ListItem > Table > TableRow > TableCell`. + * > Using up to `10` doesn’t hurt or help either. + * @template {UnistNode} Tree + * Tree type. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. + */ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause +/** + * @callback Visitor + * Handle a node (matching `test`, if given). + * + * Visitors are free to transform `node`. + * They can also transform `parent`. + * + * Replacing `node` itself, if `SKIP` is not returned, still causes its + * descendants to be walked (which is a bug). + * + * When adding or removing previous siblings of `node` (or next siblings, in + * case of reverse), the `Visitor` should return a new `Index` to specify the + * sibling to traverse after `node` is traversed. + * Adding or removing next siblings of `node` (or previous siblings, in case + * of reverse) is handled as expected without needing to return a new `Index`. + * + * Removing the children property of `parent` still results in them being + * traversed. + * @param {Visited} node + * Found node. + * @param {Visited extends UnistNode ? number | undefined : never} index + * Index of `node` in `parent`. + * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent + * Parent of `node`. + * @returns {VisitorResult} + * What to do next. + * + * An `Index` is treated as a tuple of `[CONTINUE, Index]`. + * An `Action` is treated as a tuple of `[Action]`. + * + * Passing a tuple back only makes sense if the `Action` is `SKIP`. + * When the `Action` is `EXIT`, that action can be returned. + * When the `Action` is `CONTINUE`, `Index` can be returned. + * @template {UnistNode} [Visited=UnistNode] + * Visited node type. + * @template {UnistParent} [Ancestor=UnistParent] + * Ancestor type. */ -exports.SourceMapGenerator = __nccwpck_require__(50826).SourceMapGenerator; -exports.SourceMapConsumer = __nccwpck_require__(53161).SourceMapConsumer; -exports.SourceNode = __nccwpck_require__(82767).SourceNode; +/** + * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch + * Build a typed `Visitor` function from a node and all possible parents. + * + * It will infer which values are passed as `node` and which as `parent`. + * @template {UnistNode} Visited + * Node type. + * @template {UnistParent} Ancestor + * Parent type. + */ -/***/ }), +/** + * @typedef {( + * BuildVisitorFromMatch< + * Matches<Descendant, Check>, + * Extract<Descendant, UnistParent> + * > + * )} BuildVisitorFromDescendants + * Build a typed `Visitor` function from a list of descendants and a test. + * + * It will infer which values are passed as `node` and which as `parent`. + * @template {UnistNode} Descendant + * Node type. + * @template {Test} Check + * Test type. + */ -/***/ 78447: -/***/ ((module) => { +/** + * @typedef {( + * BuildVisitorFromDescendants< + * InclusiveDescendant<Tree>, + * Check + * > + * )} BuildVisitor + * Build a typed `Visitor` function from a tree and a test. + * + * It will infer which values are passed as `node` and which as `parent`. + * @template {UnistNode} [Tree=UnistNode] + * Node type. + * @template {Test} [Check=Test] + * Test type. + */ -"use strict"; -module.exports = factory -// Construct a state `toggler`: a function which inverses `property` in context -// based on its current value. -// The by `toggler` returned function restores that value. -function factory(key, state, ctx) { - return enter - function enter() { - var context = ctx || this - var current = context[key] +/** + * Visit nodes. + * + * This algorithm performs *depth-first* *tree traversal* in *preorder* + * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**). + * + * You can choose for which nodes `visitor` is called by passing a `test`. + * For complex tests, you should test yourself in `visitor`, as it will be + * faster and will have improved type information. + * + * Walking the tree is an intensive task. + * Make use of the return values of the visitor when possible. + * Instead of walking a tree multiple times, walk it once, use `unist-util-is` + * to check if a node matches, and then perform different operations. + * + * You can change the tree. + * See `Visitor` for more info. + * + * @overload + * @param {Tree} tree + * @param {Check} check + * @param {BuildVisitor<Tree, Check>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @overload + * @param {Tree} tree + * @param {BuildVisitor<Tree>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @param {UnistNode} tree + * Tree to traverse. + * @param {Visitor | Test} testOrVisitor + * `unist-util-is`-compatible test (optional, omit to pass a visitor). + * @param {Visitor | boolean | null | undefined} [visitorOrReverse] + * Handle each node (when test is omitted, pass `reverse`). + * @param {boolean | null | undefined} [maybeReverse=false] + * Traverse in reverse preorder (NRL) instead of the default preorder (NLR). + * @returns {undefined} + * Nothing. + * + * @template {UnistNode} Tree + * Node type. + * @template {Test} Check + * `unist-util-is`-compatible test. + */ +function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) { + /** @type {boolean | null | undefined} */ + let reverse + /** @type {Test} */ + let test + /** @type {Visitor} */ + let visitor - context[key] = !state + if ( + typeof testOrVisitor === 'function' && + typeof visitorOrReverse !== 'function' + ) { + test = undefined + visitor = testOrVisitor + reverse = visitorOrReverse + } else { + // @ts-expect-error: assume the overload with test was given. + test = testOrVisitor + // @ts-expect-error: assume the overload with test was given. + visitor = visitorOrReverse + reverse = maybeReverse + } - return exit + visitParents(tree, test, overload, reverse) - function exit() { - context[key] = current - } + /** + * @param {UnistNode} node + * @param {Array<UnistParent>} parents + */ + function overload(node, parents) { + const parent = parents[parents.length - 1] + const index = parent ? parent.children.indexOf(node) : undefined + return visitor(node, index, parent) } } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js +/** + * @import {State} from 'mdast-util-to-markdown' + * @import {Heading} from 'mdast' + */ -/***/ }), -/***/ 20662: -/***/ ((module) => { -module.exports = shift -function shift (stream) { - var rs = stream._readableState - if (!rs) return null - return (rs.objectMode || typeof stream._duplexState === 'number') ? stream.read() : stream.read(getStateLength(rs)) -} +/** + * @param {Heading} node + * @param {State} state + * @returns {boolean} + */ +function formatHeadingAsSetext(node, state) { + let literalWithBreak = false -function getStateLength (state) { - if (state.buffer.length) { - // Since node 6.3.0 state.buffer is a BufferList not an array - if (state.buffer.head) { - return state.buffer.head.data.length + // Look for literals with a line break. + // Note that this also + visit(node, function (node) { + if ( + ('value' in node && /\r?\n|\r/.test(node.value)) || + node.type === 'break' + ) { + literalWithBreak = true + return EXIT } + }) - return state.buffer[0].length - } - - return state.length + return Boolean( + (!node.depth || node.depth < 3) && + lib_toString(node) && + (state.options.setext || literalWithBreak) + ) } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/heading.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Heading, Parents} from 'mdast' + */ -/***/ }), -/***/ 60642: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +/** + * @param {Heading} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function heading(node, _, state, info) { + const rank = Math.max(Math.min(6, node.depth || 1), 1) + const tracker = state.createTracker(info) + + if (formatHeadingAsSetext(node, state)) { + const exit = state.enter('headingSetext') + const subexit = state.enter('phrasing') + const value = state.containerPhrasing(node, { + ...tracker.current(), + before: '\n', + after: '\n' + }) + subexit() + exit() + return ( + value + + '\n' + + (rank === 1 ? '=' : '-').repeat( + // The whole size… + value.length - + // Minus the position of the character after the last EOL (or + // 0 if there is none)… + (Math.max(value.lastIndexOf('\r'), value.lastIndexOf('\n')) + 1) + ) + ) + } -/*<replacement>*/ + const sequence = '#'.repeat(rank) + const exit = state.enter('headingAtx') + const subexit = state.enter('phrasing') -var Buffer = (__nccwpck_require__(70265).Buffer); -/*</replacement>*/ + // Note: for proper tracking, we should reset the output positions when there + // is no content returned, because then the space is not output. + // Practically, in that case, there is no content, so it doesn’t matter that + // we’ve tracked one too many characters. + tracker.move(sequence + ' ') -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; + let value = state.containerPhrasing(node, { + before: '# ', + after: '\n', + ...tracker.current() + }) -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } + if (/^[\t ]/.test(value)) { + // To do: what effect has the character reference on tracking? + value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1) } -}; -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.s = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; - } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); -} + value = value ? sequence + ' ' + value : sequence -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; + if (state.options.closeAtx) { + value += ' ' + sequence } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; -StringDecoder.prototype.end = utf8End; - -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; - -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; + subexit() + exit() -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return byte >> 6 === 0x02 ? -1 : -2; -} - -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; - } - return nb; - } - return 0; + return value } -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; - } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; - } - } - } -} - -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); - } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} - -// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a -// partial character, the character's bytes are buffered until the required -// number of bytes are available. -function utf8Text(buf, i) { - var total = utf8CheckIncomplete(this, buf, i); - if (!this.lastNeed) return buf.toString('utf8', i); - this.lastTotal = total; - var end = buf.length - (total - this.lastNeed); - buf.copy(this.lastChar, 0, end); - return buf.toString('utf8', i, end); -} - -// For UTF-8, a replacement character is added when ending on a partial -// character. -function utf8End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + '\ufffd'; - return r; -} - -// UTF-16LE typically needs two bytes per character, but even if we have an even -// number of bytes available, we need to check if we end on a leading/high -// surrogate. In that case, we need to wait for the next two bytes in order to -// decode the last character properly. -function utf16Text(buf, i) { - if ((buf.length - i) % 2 === 0) { - var r = buf.toString('utf16le', i); - if (r) { - var c = r.charCodeAt(r.length - 1); - if (c >= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } - } - return r; - } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} - -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); - } - return r; -} - -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - } - return buf.toString('base64', i, buf.length - n); -} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/html.js +/** + * @import {Html} from 'mdast' + */ -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; -} +html.peek = htmlPeek -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); +/** + * @param {Html} node + * @returns {string} + */ +function html(node) { + return node.value || '' } -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; +/** + * @returns {string} + */ +function htmlPeek() { + return '<' } -/***/ }), - -/***/ 70265: -/***/ ((module, exports, __nccwpck_require__) => { - -/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ -/* eslint-disable node/no-deprecated-api */ -var buffer = __nccwpck_require__(14300) -var Buffer = buffer.Buffer +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/image.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Image, Parents} from 'mdast' + */ -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} -SafeBuffer.prototype = Object.create(Buffer.prototype) +image_image.peek = imagePeek -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) +/** + * @param {Image} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function image_image(node, _, state, info) { + const quote = checkQuote(state) + const suffix = quote === '"' ? 'Quote' : 'Apostrophe' + const exit = state.enter('image') + let subexit = state.enter('label') + const tracker = state.createTracker(info) + let value = tracker.move('![') + value += tracker.move( + state.safe(node.alt, {before: value, after: ']', ...tracker.current()}) + ) + value += tracker.move('](') -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} + subexit() -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } + if ( + // If there’s no url but there is a title… + (!node.url && node.title) || + // If there are control characters or whitespace. + /[\0- \u007F]/.test(node.url) + ) { + subexit = state.enter('destinationLiteral') + value += tracker.move('<') + value += tracker.move( + state.safe(node.url, {before: value, after: '>', ...tracker.current()}) + ) + value += tracker.move('>') } else { - buf.fill(0) + // No whitespace, raw is prettier. + subexit = state.enter('destinationRaw') + value += tracker.move( + state.safe(node.url, { + before: value, + after: node.title ? ' ' : ')', + ...tracker.current() + }) + ) } - return buf -} -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} + subexit() -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') + if (node.title) { + subexit = state.enter(`title${suffix}`) + value += tracker.move(' ' + quote) + value += tracker.move( + state.safe(node.title, { + before: value, + after: quote, + ...tracker.current() + }) + ) + value += tracker.move(quote) + subexit() } - return buffer.SlowBuffer(size) -} - - -/***/ }), -/***/ 94405: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + value += tracker.move(')') + exit() -"use strict"; + return value +} +/** + * @returns {string} + */ +function imagePeek() { + return '!' +} -module.exports = __nccwpck_require__(81936) +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/image-reference.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {ImageReference, Parents} from 'mdast' + */ +imageReference.peek = imageReferencePeek -/***/ }), +/** + * @param {ImageReference} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function imageReference(node, _, state, info) { + const type = node.referenceType + const exit = state.enter('imageReference') + let subexit = state.enter('label') + const tracker = state.createTracker(info) + let value = tracker.move('![') + const alt = state.safe(node.alt, { + before: value, + after: ']', + ...tracker.current() + }) + value += tracker.move(alt + '][') + + subexit() + // Hide the fact that we’re in phrasing, because escapes don’t work. + const stack = state.stack + state.stack = [] + subexit = state.enter('reference') + // Note: for proper tracking, we should reset the output positions when we end + // up making a `shortcut` reference, because then there is no brace output. + // Practically, in that case, there is no content, so it doesn’t matter that + // we’ve tracked one too many characters. + const reference = state.safe(state.associationId(node), { + before: value, + after: ']', + ...tracker.current() + }) + subexit() + state.stack = stack + exit() -/***/ 3212: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (type === 'full' || !alt || alt !== reference) { + value += tracker.move(reference + ']') + } else if (type === 'shortcut') { + // Remove the unwanted `[`. + value = value.slice(0, -1) + } else { + value += tracker.move(']') + } -var entities = __nccwpck_require__(22017) + return value +} -var characters = {} -var name +/** + * @returns {string} + */ +function imageReferencePeek() { + return '!' +} -module.exports = characters +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js +/** + * @import {State} from 'mdast-util-to-markdown' + * @import {InlineCode, Parents} from 'mdast' + */ -for (name in entities) { - characters[entities[name]] = name -} +inlineCode.peek = inlineCodePeek +/** + * @param {InlineCode} node + * @param {Parents | undefined} _ + * @param {State} state + * @returns {string} + */ +function inlineCode(node, _, state) { + let value = node.value || '' + let sequence = '`' + let index = -1 -/***/ }), + // If there is a single grave accent on its own in the code, use a fence of + // two. + // If there are two in a row, use one. + while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) { + sequence += '`' + } -/***/ 84185: -/***/ ((module) => { + // If this is not just spaces or eols (tabs don’t count), and either the + // first or last character are a space, eol, or tick, then pad with spaces. + if ( + /[^ \r\n]/.test(value) && + ((/^[ \r\n]/.test(value) && /[ \r\n]$/.test(value)) || /^`|`$/.test(value)) + ) { + value = ' ' + value + ' ' + } + + // We have a potential problem: certain characters after eols could result in + // blocks being seen. + // For example, if someone injected the string `'\n# b'`, then that would + // result in an ATX heading. + // We can’t escape characters in `inlineCode`, but because eols are + // transformed to spaces when going from markdown to HTML anyway, we can swap + // them out. + while (++index < state.unsafe.length) { + const pattern = state.unsafe[index] + const expression = state.compilePattern(pattern) + /** @type {RegExpExecArray | null} */ + let match + + // Only look for `atBreak`s. + // Btw: note that `atBreak` patterns will always start the regex at LF or + // CR. + if (!pattern.atBreak) continue + + while ((match = expression.exec(value))) { + let position = match.index + + // Support CRLF (patterns only look for one of the characters). + if ( + value.charCodeAt(position) === 10 /* `\n` */ && + value.charCodeAt(position - 1) === 13 /* `\r` */ + ) { + position-- + } -module.exports = String.fromCharCode + value = value.slice(0, position) + ' ' + value.slice(match.index + 1) + } + } + return sequence + value + sequence +} -/***/ }), +/** + * @returns {string} + */ +function inlineCodePeek() { + return '`' +} -/***/ 13487: -/***/ ((module) => { +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js +/** + * @import {State} from 'mdast-util-to-markdown' + * @import {Link} from 'mdast' + */ -module.exports = {}.hasOwnProperty -/***/ }), +/** + * @param {Link} node + * @param {State} state + * @returns {boolean} + */ +function formatLinkAsAutolink(node, state) { + const raw = lib_toString(node) + + return Boolean( + !state.options.resourceLink && + // If there’s a url… + node.url && + // And there’s a no title… + !node.title && + // And the content of `node` is a single text node… + node.children && + node.children.length === 1 && + node.children[0].type === 'text' && + // And if the url is the same as the content… + (raw === node.url || 'mailto:' + raw === node.url) && + // And that starts w/ a protocol… + /^[a-z][a-z+.-]+:/i.test(node.url) && + // And that doesn’t contain ASCII control codes (character escapes and + // references don’t work), space, or angle brackets… + !/[\0- <>\u007F]/.test(node.url) + ) +} -/***/ 54560: -/***/ ((module) => { +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/link.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Link, Parents} from 'mdast' + * @import {Exit} from '../types.js' + */ -"use strict"; -module.exports = encode -// Encode special characters in `value`. -function encode(value, options) { - value = value.replace( - options.subset ? charactersToExpression(options.subset) : /["&'<>`]/g, - basic - ) +link_link.peek = linkPeek - if (options.subset || options.escapeOnly) { +/** + * @param {Link} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function link_link(node, _, state, info) { + const quote = checkQuote(state) + const suffix = quote === '"' ? 'Quote' : 'Apostrophe' + const tracker = state.createTracker(info) + /** @type {Exit} */ + let exit + /** @type {Exit} */ + let subexit + + if (formatLinkAsAutolink(node, state)) { + // Hide the fact that we’re in phrasing, because escapes don’t work. + const stack = state.stack + state.stack = [] + exit = state.enter('autolink') + let value = tracker.move('<') + value += tracker.move( + state.containerPhrasing(node, { + before: value, + after: '>', + ...tracker.current() + }) + ) + value += tracker.move('>') + exit() + state.stack = stack return value } - return ( - value - // Surrogate pairs. - .replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, surrogate) - // BMP control characters (C0 except for LF, CR, SP; DEL; and some more - // non-ASCII ones). - .replace( - // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape - /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g, - basic - ) + exit = state.enter('link') + subexit = state.enter('label') + let value = tracker.move('[') + value += tracker.move( + state.containerPhrasing(node, { + before: value, + after: '](', + ...tracker.current() + }) ) + value += tracker.move('](') + subexit() - function surrogate(pair, index, all) { - return options.format( - (pair.charCodeAt(0) - 0xd800) * 0x400 + - pair.charCodeAt(1) - - 0xdc00 + - 0x10000, - all.charCodeAt(index + 2), - options + if ( + // If there’s no url but there is a title… + (!node.url && node.title) || + // If there are control characters or whitespace. + /[\0- \u007F]/.test(node.url) + ) { + subexit = state.enter('destinationLiteral') + value += tracker.move('<') + value += tracker.move( + state.safe(node.url, {before: value, after: '>', ...tracker.current()}) + ) + value += tracker.move('>') + } else { + // No whitespace, raw is prettier. + subexit = state.enter('destinationRaw') + value += tracker.move( + state.safe(node.url, { + before: value, + after: node.title ? ' ' : ')', + ...tracker.current() + }) ) } - function basic(character, index, all) { - return options.format( - character.charCodeAt(0), - all.charCodeAt(index + 1), - options + subexit() + + if (node.title) { + subexit = state.enter(`title${suffix}`) + value += tracker.move(' ' + quote) + value += tracker.move( + state.safe(node.title, { + before: value, + after: quote, + ...tracker.current() + }) ) + value += tracker.move(quote) + subexit() } -} -function charactersToExpression(subset) { - var groups = [] - var index = -1 + value += tracker.move(')') - while (++index < subset.length) { - groups.push(subset[index].replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')) - } + exit() + return value +} - return new RegExp('(?:' + groups.join('|') + ')', 'g') +/** + * @param {Link} node + * @param {Parents | undefined} _ + * @param {State} state + * @returns {string} + */ +function linkPeek(node, _, state) { + return formatLinkAsAutolink(node, state) ? '<' : '[' } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/link-reference.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {LinkReference, Parents} from 'mdast' + */ -/***/ }), +linkReference.peek = linkReferencePeek -/***/ 84664: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @param {LinkReference} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function linkReference(node, _, state, info) { + const type = node.referenceType + const exit = state.enter('linkReference') + let subexit = state.enter('label') + const tracker = state.createTracker(info) + let value = tracker.move('[') + const text = state.containerPhrasing(node, { + before: value, + after: ']', + ...tracker.current() + }) + value += tracker.move(text + '][') + + subexit() + // Hide the fact that we’re in phrasing, because escapes don’t work. + const stack = state.stack + state.stack = [] + subexit = state.enter('reference') + // Note: for proper tracking, we should reset the output positions when we end + // up making a `shortcut` reference, because then there is no brace output. + // Practically, in that case, there is no content, so it doesn’t matter that + // we’ve tracked one too many characters. + const reference = state.safe(state.associationId(node), { + before: value, + after: ']', + ...tracker.current() + }) + subexit() + state.stack = stack + exit() -"use strict"; + if (type === 'full' || !text || text !== reference) { + value += tracker.move(reference + ']') + } else if (type === 'shortcut') { + // Remove the unwanted `[`. + value = value.slice(0, -1) + } else { + value += tracker.move(']') + } + return value +} + +/** + * @returns {string} + */ +function linkReferencePeek() { + return '[' +} + +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ -var xtend = __nccwpck_require__(76738) -var core = __nccwpck_require__(54560) -var smart = __nccwpck_require__(64399) +/** + * @param {State} state + * @returns {Exclude<Options['bullet'], null | undefined>} + */ +function checkBullet(state) { + const marker = state.options.bullet || '*' -module.exports = encode + if (marker !== '*' && marker !== '+' && marker !== '-') { + throw new Error( + 'Cannot serialize items with `' + + marker + + '` for `options.bullet`, expected `*`, `+`, or `-`' + ) + } -// Encode special characters in `value`. -function encode(value, options) { - // Note: Switch to `Object.assign` next major. - return core(value, xtend(options, {format: smart})) + return marker } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ -/***/ }), -/***/ 95526: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +/** + * @param {State} state + * @returns {Exclude<Options['bullet'], null | undefined>} + */ +function checkBulletOther(state) { + const bullet = checkBullet(state) + const bulletOther = state.options.bulletOther + if (!bulletOther) { + return bullet === '*' ? '-' : '*' + } -var core = __nccwpck_require__(54560) -var smart = __nccwpck_require__(64399) + if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') { + throw new Error( + 'Cannot serialize items with `' + + bulletOther + + '` for `options.bulletOther`, expected `*`, `+`, or `-`' + ) + } -module.exports = escape + if (bulletOther === bullet) { + throw new Error( + 'Expected `bullet` (`' + + bullet + + '`) and `bulletOther` (`' + + bulletOther + + '`) to be different' + ) + } -// Shortcut to escape special characters in HTML. -function escape(value) { - return core(value, { - escapeOnly: true, - useNamedReferences: true, - format: smart - }) + return bulletOther } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ -/***/ }), +/** + * @param {State} state + * @returns {Exclude<Options['bulletOrdered'], null | undefined>} + */ +function checkBulletOrdered(state) { + const marker = state.options.bulletOrdered || '.' -/***/ 81936: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (marker !== '.' && marker !== ')') { + throw new Error( + 'Cannot serialize items with `' + + marker + + '` for `options.bulletOrdered`, expected `.` or `)`' + ) + } -"use strict"; + return marker +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-rule.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ -var encode = __nccwpck_require__(84664) -var escape = __nccwpck_require__(95526) +/** + * @param {State} state + * @returns {Exclude<Options['rule'], null | undefined>} + */ +function checkRule(state) { + const marker = state.options.rule || '*' -module.exports = encode -encode.escape = escape + if (marker !== '*' && marker !== '-' && marker !== '_') { + throw new Error( + 'Cannot serialize rules with `' + + marker + + '` for `options.rule`, expected `*`, `-`, or `_`' + ) + } + return marker +} -/***/ }), +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/list.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {List, Parents} from 'mdast' + */ -/***/ 64399: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = formatPretty -var toHexadecimal = __nccwpck_require__(98501) -var toDecimal = __nccwpck_require__(91987) -var toNamed = __nccwpck_require__(62387) -// Encode `character` according to `options`. -function formatPretty(code, next, options) { - var named - var numeric - var decimal - if (options.useNamedReferences || options.useShortestReferences) { - named = toNamed( - code, - next, - options.omitOptionalSemicolons, - options.attribute - ) - } - if (options.useShortestReferences || !named) { - numeric = toHexadecimal(code, next, options.omitOptionalSemicolons) +/** + * @param {List} node + * @param {Parents | undefined} parent + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function list_list(node, parent, state, info) { + const exit = state.enter('list') + const bulletCurrent = state.bulletCurrent + /** @type {string} */ + let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state) + /** @type {string} */ + const bulletOther = node.ordered + ? bullet === '.' + ? ')' + : '.' + : checkBulletOther(state) + let useDifferentMarker = + parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false + + if (!node.ordered) { + const firstListItem = node.children ? node.children[0] : undefined + + // If there’s an empty first list item directly in two list items, + // we have to use a different bullet: + // + // ```markdown + // * - * + // ``` + // + // …because otherwise it would become one big thematic break. + if ( + // Bullet could be used as a thematic break marker: + (bullet === '*' || bullet === '-') && + // Empty first list item: + firstListItem && + (!firstListItem.children || !firstListItem.children[0]) && + // Directly in two other list items: + state.stack[state.stack.length - 1] === 'list' && + state.stack[state.stack.length - 2] === 'listItem' && + state.stack[state.stack.length - 3] === 'list' && + state.stack[state.stack.length - 4] === 'listItem' && + // That are each the first child. + state.indexStack[state.indexStack.length - 1] === 0 && + state.indexStack[state.indexStack.length - 2] === 0 && + state.indexStack[state.indexStack.length - 3] === 0 + ) { + useDifferentMarker = true + } - // Use the shortest numeric reference when requested. - // A simple algorithm would use decimal for all code points under 100, as - // those are shorter than hexadecimal: + // If there’s a thematic break at the start of the first list item, + // we have to use a different bullet: // - // * `&#99;` vs `&#x63;` (decimal shorter) - // * `&#100;` vs `&#x64;` (equal) + // ```markdown + // * --- + // ``` // - // However, because we take `next` into consideration when `omit` is used, - // And it would be possible that decimals are shorter on bigger values as - // well if `next` is hexadecimal but not decimal, we instead compare both. - if (options.useShortestReferences) { - decimal = toDecimal(code, next, options.omitOptionalSemicolons) + // …because otherwise it would become one big thematic break. + if (checkRule(state) === bullet && firstListItem) { + let index = -1 - if (decimal.length < numeric.length) { - numeric = decimal + while (++index < node.children.length) { + const item = node.children[index] + + if ( + item && + item.type === 'listItem' && + item.children && + item.children[0] && + item.children[0].type === 'thematicBreak' + ) { + useDifferentMarker = true + break + } } } } - return named && - (!options.useShortestReferences || named.length < numeric.length) - ? named - : numeric -} - + if (useDifferentMarker) { + bullet = bulletOther + } -/***/ }), + state.bulletCurrent = bullet + const value = state.containerFlow(node, info) + state.bulletLastUsed = bullet + state.bulletCurrent = bulletCurrent + exit() + return value +} -/***/ 91987: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ -module.exports = toDecimalReference +/** + * @param {State} state + * @returns {Exclude<Options['listItemIndent'], null | undefined>} + */ +function checkListItemIndent(state) { + const style = state.options.listItemIndent || 'one' -var fromCharCode = __nccwpck_require__(84185) + if (style !== 'tab' && style !== 'one' && style !== 'mixed') { + throw new Error( + 'Cannot serialize items with `' + + style + + '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`' + ) + } -// Transform `code` into a decimal character reference. -function toDecimalReference(code, next, omit) { - var value = '&#' + String(code) - return omit && next && !/\d/.test(fromCharCode(next)) ? value : value + ';' + return style } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/list-item.js +/** + * @import {Info, Map, State} from 'mdast-util-to-markdown' + * @import {ListItem, Parents} from 'mdast' + */ -/***/ }), - -/***/ 98501: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -module.exports = toHexReference - -var fromCharCode = __nccwpck_require__(84185) -// Transform `code` into a hexadecimal character reference. -function toHexReference(code, next, omit) { - var value = '&#x' + code.toString(16).toUpperCase() - return omit && next && !/[\dA-Fa-f]/.test(fromCharCode(next)) - ? value - : value + ';' -} -/***/ }), +/** + * @param {ListItem} node + * @param {Parents | undefined} parent + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function listItem(node, parent, state, info) { + const listItemIndent = checkListItemIndent(state) + let bullet = state.bulletCurrent || checkBullet(state) -/***/ 62387: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Add the marker value for ordered lists. + if (parent && parent.type === 'list' && parent.ordered) { + bullet = + (typeof parent.start === 'number' && parent.start > -1 + ? parent.start + : 1) + + (state.options.incrementListMarker === false + ? 0 + : parent.children.indexOf(node)) + + bullet + } -module.exports = toNamed + let size = bullet.length + 1 -var legacy = __nccwpck_require__(93562) -var characters = __nccwpck_require__(3212) -var fromCharCode = __nccwpck_require__(84185) -var own = __nccwpck_require__(13487) -var dangerous = __nccwpck_require__(66195) + if ( + listItemIndent === 'tab' || + (listItemIndent === 'mixed' && + ((parent && parent.type === 'list' && parent.spread) || node.spread)) + ) { + size = Math.ceil(size / 4) * 4 + } -// Transform `code` into a named character reference. -function toNamed(code, next, omit, attribute) { - var character = fromCharCode(code) - var name - var value + const tracker = state.createTracker(info) + tracker.move(bullet + ' '.repeat(size - bullet.length)) + tracker.shift(size) + const exit = state.enter('listItem') + const value = state.indentLines( + state.containerFlow(node, tracker.current()), + map + ) + exit() - if (own.call(characters, character)) { - name = characters[character] - value = '&' + name + return value - if ( - omit && - own.call(legacy, name) && - dangerous.indexOf(name) === -1 && - (!attribute || - (next && next !== 61 /* `=` */ && /[^\da-z]/i.test(fromCharCode(next)))) - ) { - return value + /** @type {Map} */ + function map(line, index, blank) { + if (index) { + return (blank ? '' : ' '.repeat(size)) + line } - return value + ';' + return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line } +} - return '' +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/paragraph.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Paragraph, Parents} from 'mdast' + */ + +/** + * @param {Paragraph} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function paragraph(node, _, state, info) { + const exit = state.enter('paragraph') + const subexit = state.enter('phrasing') + const value = state.containerPhrasing(node, info) + subexit() + exit() + return value } +;// CONCATENATED MODULE: ./node_modules/mdast-util-phrasing/lib/index.js +/** + * @typedef {import('mdast').Html} Html + * @typedef {import('mdast').PhrasingContent} PhrasingContent + */ -/***/ }), -/***/ 26574: -/***/ ((module) => { -"use strict"; -/*! - * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string> +/** + * Check if the given value is *phrasing content*. * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. + * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow. + * + * @param node + * Thing to check, typically `Node`. + * @returns + * Whether `value` is phrasing content. */ +const phrasing = + /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */ + ( + convert([ + 'break', + 'delete', + 'emphasis', + // To do: next major: removed since footnotes were added to GFM. + 'footnote', + 'footnoteReference', + 'image', + 'imageReference', + 'inlineCode', + // Enabled by `mdast-util-math`: + 'inlineMath', + 'link', + 'linkReference', + // Enabled by `mdast-util-mdx`: + 'mdxJsxTextElement', + // Enabled by `mdast-util-mdx`: + 'mdxTextExpression', + 'strong', + 'text', + // Enabled by `mdast-util-directive`: + 'textDirective' + ]) + ) +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/root.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Parents, Root} from 'mdast' + */ -module.exports = function(str) { - if (typeof str === 'string' && str.charAt(0) === '\ufeff') { - return str.slice(1); - } - return str; -}; -/***/ }), +/** + * @param {Root} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function root(node, _, state, info) { + // Note: `html` nodes are ambiguous. + const hasPhrasing = node.children.some(function (d) { + return phrasing(d) + }) -/***/ 30395: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const container = hasPhrasing ? state.containerPhrasing : state.containerFlow + return container.call(state, node, info) +} -"use strict"; +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-strong.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ -const os = __nccwpck_require__(22037); -const hasFlag = __nccwpck_require__(64250); +/** + * @param {State} state + * @returns {Exclude<Options['strong'], null | undefined>} + */ +function checkStrong(state) { + const marker = state.options.strong || '*' -const env = process.env; + if (marker !== '*' && marker !== '_') { + throw new Error( + 'Cannot serialize strong with `' + + marker + + '` for `options.strong`, expected `*`, or `_`' + ) + } -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - forceColor = false; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = true; -} -if ('FORCE_COLOR' in env) { - forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + return marker } -function translateLevel(level) { - if (level === 0) { - return false; - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/strong.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Parents, Strong} from 'mdast' + */ - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} -function supportsColor(stream) { - if (forceColor === false) { - return 0; - } - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - if (hasFlag('color=256')) { - return 2; - } - if (stream && !stream.isTTY && forceColor !== true) { - return 0; - } +strong.peek = strongPeek - const min = forceColor ? 1 : 0; - - if (process.platform === 'win32') { - // Node.js 7.5.0 is the first version of Node.js to include a patch to - // libuv that enables 256 color output on Windows. Anything earlier and it - // won't work. However, here we target Node.js 8 at minimum as it is an LTS - // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows - // release that supports 256 colors. Windows 10 build 14931 is the first release - // that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(process.versions.node.split('.')[0]) >= 8 && - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } +/** + * @param {Strong} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function strong(node, _, state, info) { + const marker = checkStrong(state) + const exit = state.enter('strong') + const tracker = state.createTracker(info) + const before = tracker.move(marker + marker) + + let between = tracker.move( + state.containerPhrasing(node, { + after: marker, + before, + ...tracker.current() + }) + ) + const betweenHead = between.charCodeAt(0) + const open = encodeInfo( + info.before.charCodeAt(info.before.length - 1), + betweenHead, + marker + ) - return 1; - } + if (open.inside) { + between = encodeCharacterReference(betweenHead) + between.slice(1) + } - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } + const betweenTail = between.charCodeAt(between.length - 1) + const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker) - return min; - } + if (close.inside) { + between = between.slice(0, -1) + encodeCharacterReference(betweenTail) + } - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } + const after = tracker.move(marker + marker) - if (env.COLORTERM === 'truecolor') { - return 3; - } + exit() - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + state.attentionEncodeSurroundingInfo = { + after: close.outside, + before: open.outside + } + return before + between + after +} - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } +/** + * @param {Strong} _ + * @param {Parents | undefined} _1 + * @param {State} state + * @returns {string} + */ +function strongPeek(_, _1, state) { + return state.options.strong || '*' +} - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/text.js +/** + * @import {Info, State} from 'mdast-util-to-markdown' + * @import {Parents, Text} from 'mdast' + */ - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } +/** + * @param {Text} node + * @param {Parents | undefined} _ + * @param {State} state + * @param {Info} info + * @returns {string} + */ +function handle_text_text(node, _, state, info) { + return state.safe(node.value, info) +} - if ('COLORTERM' in env) { - return 1; - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js +/** + * @import {Options, State} from 'mdast-util-to-markdown' + */ - if (env.TERM === 'dumb') { - return min; - } +/** + * @param {State} state + * @returns {Exclude<Options['ruleRepetition'], null | undefined>} + */ +function checkRuleRepetition(state) { + const repetition = state.options.ruleRepetition || 3 - return min; -} + if (repetition < 3) { + throw new Error( + 'Cannot serialize rules with repetition `' + + repetition + + '` for `options.ruleRepetition`, expected `3` or more' + ) + } -function getSupportLevel(stream) { - const level = supportsColor(stream); - return translateLevel(level); + return repetition } -module.exports = { - supportsColor: getSupportLevel, - stdout: getSupportLevel(process.stdout), - stderr: getSupportLevel(process.stderr) -}; +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js +/** + * @import {State} from 'mdast-util-to-markdown' + * @import {Parents, ThematicBreak} from 'mdast' + */ -/***/ }), -/***/ 66931: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +/** + * @param {ThematicBreak} _ + * @param {Parents | undefined} _1 + * @param {State} state + * @returns {string} + */ +function thematic_break_thematicBreak(_, _1, state) { + const value = ( + checkRule(state) + (state.options.ruleSpaces ? ' ' : '') + ).repeat(checkRuleRepetition(state)) + return state.options.ruleSpaces ? value.slice(0, -1) : value +} -const { EventEmitter } = __nccwpck_require__(82361) -const { Worker } = __nccwpck_require__(71267) -const { join } = __nccwpck_require__(71017) -const { pathToFileURL } = __nccwpck_require__(57310) -const { wait } = __nccwpck_require__(80269) -const { - WRITE_INDEX, - READ_INDEX -} = __nccwpck_require__(21598) -const buffer = __nccwpck_require__(14300) -const assert = __nccwpck_require__(39491) +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/index.js -const kImpl = Symbol('kImpl') -// V8 limit for string size -const MAX_STRING = buffer.constants.MAX_STRING_LENGTH -class FakeWeakRef { - constructor (value) { - this._value = value - } - deref () { - return this._value - } -} -const FinalizationRegistry = global.FinalizationRegistry || class FakeFinalizationRegistry { - register () {} - unregister () {} -} -const WeakRef = global.WeakRef || FakeWeakRef -const registry = new FinalizationRegistry((worker) => { - if (worker.exited) { - return - } - worker.terminate() -}) -function createWorker (stream, opts) { - const { filename, workerData } = opts - const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {} - const toExecute = bundlerOverrides['thread-stream-worker'] || __nccwpck_require__.ab + "worker1.js" - const worker = new Worker(toExecute, { - ...opts.workerOpts, - workerData: { - filename: filename.indexOf('file://') === 0 - ? filename - : pathToFileURL(filename).href, - dataBuf: stream[kImpl].dataBuf, - stateBuf: stream[kImpl].stateBuf, - workerData - } - }) - // We keep a strong reference for now, - // we need to start writing first - worker.stream = new FakeWeakRef(stream) - worker.on('message', onWorkerMessage) - worker.on('exit', onWorkerExit) - registry.register(stream, worker) - return worker -} -function drain (stream) { - assert(!stream[kImpl].sync) - if (stream[kImpl].needDrain) { - stream[kImpl].needDrain = false - stream.emit('drain') - } -} -function nextFlush (stream) { - const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX) - let leftover = stream[kImpl].data.length - writeIndex - if (leftover > 0) { - if (stream[kImpl].buf.length === 0) { - stream[kImpl].flushing = false - if (stream[kImpl].ending) { - end(stream) - } else if (stream[kImpl].needDrain) { - process.nextTick(drain, stream) - } - return - } - let toWrite = stream[kImpl].buf.slice(0, leftover) - let toWriteBytes = Buffer.byteLength(toWrite) - if (toWriteBytes <= leftover) { - stream[kImpl].buf = stream[kImpl].buf.slice(leftover) - // process._rawDebug('writing ' + toWrite.length) - write(stream, toWrite, nextFlush.bind(null, stream)) - } else { - // multi-byte utf-8 - stream.flush(() => { - // err is already handled in flush() - if (stream.destroyed) { - return - } - Atomics.store(stream[kImpl].state, READ_INDEX, 0) - Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) +/** + * Default (CommonMark) handlers. + */ +const handle = { + blockquote: blockquote, + break: hardBreak, + code: code, + definition: definition_definition, + emphasis: emphasis, + hardBreak: hardBreak, + heading: heading, + html: html, + image: image_image, + imageReference: imageReference, + inlineCode: inlineCode, + link: link_link, + linkReference: linkReference, + list: list_list, + listItem: listItem, + paragraph: paragraph, + root: root, + strong: strong, + text: handle_text_text, + thematicBreak: thematic_break_thematicBreak +} + +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/join.js +/** + * @import {Join} from 'mdast-util-to-markdown' + */ + - // Find a toWrite length that fits the buffer - // it must exists as the buffer is at least 4 bytes length - // and the max utf-8 length for a char is 4 bytes. - while (toWriteBytes > stream[kImpl].data.length) { - leftover = leftover / 2 - toWrite = stream[kImpl].buf.slice(0, leftover) - toWriteBytes = Buffer.byteLength(toWrite) - } - stream[kImpl].buf = stream[kImpl].buf.slice(leftover) - write(stream, toWrite, nextFlush.bind(null, stream)) - }) - } - } else if (leftover === 0) { - if (writeIndex === 0 && stream[kImpl].buf.length === 0) { - // we had a flushSync in the meanwhile + + +/** @type {Array<Join>} */ +const join = [joinDefaults] + +/** @type {Join} */ +function joinDefaults(left, right, parent, state) { + // Indented code after list or another indented code. + if ( + right.type === 'code' && + formatCodeAsIndented(right, state) && + (left.type === 'list' || + (left.type === right.type && formatCodeAsIndented(left, state))) + ) { + return false + } + + // Join children of a list or an item. + // In which case, `parent` has a `spread` field. + if ('spread' in parent && typeof parent.spread === 'boolean') { + if ( + left.type === 'paragraph' && + // Two paragraphs. + (left.type === right.type || + right.type === 'definition' || + // Paragraph followed by a setext heading. + (right.type === 'heading' && formatHeadingAsSetext(right, state))) + ) { return } - stream.flush(() => { - Atomics.store(stream[kImpl].state, READ_INDEX, 0) - Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) - nextFlush(stream) - }) - } else { - // This should never happen - throw new Error('overwritten') + + return parent.spread ? 1 : 0 } } -function onWorkerMessage (msg) { - const stream = this.stream.deref() - if (stream === undefined) { - this.exited = true - // Terminate the worker. - this.terminate() - return - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/unsafe.js +/** + * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown' + */ + +/** + * List of constructs that occur in phrasing (paragraphs, headings), but cannot + * contain things like attention (emphasis, strong), images, or links. + * So they sort of cancel each other out. + * Note: could use a better name. + * + * @type {Array<ConstructName>} + */ +const fullPhrasingSpans = [ + 'autolink', + 'destinationLiteral', + 'destinationRaw', + 'reference', + 'titleQuote', + 'titleApostrophe' +] + +/** @type {Array<Unsafe>} */ +const unsafe = [ + {character: '\t', after: '[\\r\\n]', inConstruct: 'phrasing'}, + {character: '\t', before: '[\\r\\n]', inConstruct: 'phrasing'}, + { + character: '\t', + inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde'] + }, + { + character: '\r', + inConstruct: [ + 'codeFencedLangGraveAccent', + 'codeFencedLangTilde', + 'codeFencedMetaGraveAccent', + 'codeFencedMetaTilde', + 'destinationLiteral', + 'headingAtx' + ] + }, + { + character: '\n', + inConstruct: [ + 'codeFencedLangGraveAccent', + 'codeFencedLangTilde', + 'codeFencedMetaGraveAccent', + 'codeFencedMetaTilde', + 'destinationLiteral', + 'headingAtx' + ] + }, + {character: ' ', after: '[\\r\\n]', inConstruct: 'phrasing'}, + {character: ' ', before: '[\\r\\n]', inConstruct: 'phrasing'}, + { + character: ' ', + inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde'] + }, + // An exclamation mark can start an image, if it is followed by a link or + // a link reference. + { + character: '!', + after: '\\[', + inConstruct: 'phrasing', + notInConstruct: fullPhrasingSpans + }, + // A quote can break out of a title. + {character: '"', inConstruct: 'titleQuote'}, + // A number sign could start an ATX heading if it starts a line. + {atBreak: true, character: '#'}, + {character: '#', inConstruct: 'headingAtx', after: '(?:[\r\n]|$)'}, + // Dollar sign and percentage are not used in markdown. + // An ampersand could start a character reference. + {character: '&', after: '[#A-Za-z]', inConstruct: 'phrasing'}, + // An apostrophe can break out of a title. + {character: "'", inConstruct: 'titleApostrophe'}, + // A left paren could break out of a destination raw. + {character: '(', inConstruct: 'destinationRaw'}, + // A left paren followed by `]` could make something into a link or image. + { + before: '\\]', + character: '(', + inConstruct: 'phrasing', + notInConstruct: fullPhrasingSpans + }, + // A right paren could start a list item or break out of a destination + // raw. + {atBreak: true, before: '\\d+', character: ')'}, + {character: ')', inConstruct: 'destinationRaw'}, + // An asterisk can start thematic breaks, list items, emphasis, strong. + {atBreak: true, character: '*', after: '(?:[ \t\r\n*])'}, + {character: '*', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, + // A plus sign could start a list item. + {atBreak: true, character: '+', after: '(?:[ \t\r\n])'}, + // A dash can start thematic breaks, list items, and setext heading + // underlines. + {atBreak: true, character: '-', after: '(?:[ \t\r\n-])'}, + // A dot could start a list item. + {atBreak: true, before: '\\d+', character: '.', after: '(?:[ \t\r\n]|$)'}, + // Slash, colon, and semicolon are not used in markdown for constructs. + // A less than can start html (flow or text) or an autolink. + // HTML could start with an exclamation mark (declaration, cdata, comment), + // slash (closing tag), question mark (instruction), or a letter (tag). + // An autolink also starts with a letter. + // Finally, it could break out of a destination literal. + {atBreak: true, character: '<', after: '[!/?A-Za-z]'}, + { + character: '<', + after: '[!/?A-Za-z]', + inConstruct: 'phrasing', + notInConstruct: fullPhrasingSpans + }, + {character: '<', inConstruct: 'destinationLiteral'}, + // An equals to can start setext heading underlines. + {atBreak: true, character: '='}, + // A greater than can start block quotes and it can break out of a + // destination literal. + {atBreak: true, character: '>'}, + {character: '>', inConstruct: 'destinationLiteral'}, + // Question mark and at sign are not used in markdown for constructs. + // A left bracket can start definitions, references, labels, + {atBreak: true, character: '['}, + {character: '[', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, + {character: '[', inConstruct: ['label', 'reference']}, + // A backslash can start an escape (when followed by punctuation) or a + // hard break (when followed by an eol). + // Note: typical escapes are handled in `safe`! + {character: '\\', after: '[\\r\\n]', inConstruct: 'phrasing'}, + // A right bracket can exit labels. + {character: ']', inConstruct: ['label', 'reference']}, + // Caret is not used in markdown for constructs. + // An underscore can start emphasis, strong, or a thematic break. + {atBreak: true, character: '_'}, + {character: '_', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, + // A grave accent can start code (fenced or text), or it can break out of + // a grave accent code fence. + {atBreak: true, character: '`'}, + { + character: '`', + inConstruct: ['codeFencedLangGraveAccent', 'codeFencedMetaGraveAccent'] + }, + {character: '`', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, + // Left brace, vertical bar, right brace are not used in markdown for + // constructs. + // A tilde can start code (fenced). + {atBreak: true, character: '~'} +] - switch (msg.code) { - case 'READY': - // Replace the FakeWeakRef with a - // proper one. - this.stream = new WeakRef(stream) +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/association.js +/** + * @import {AssociationId} from '../types.js' + */ - stream.flush(() => { - stream[kImpl].ready = true - stream.emit('ready') - }) - break - case 'ERROR': - destroy(stream, msg.err) - break - default: - throw new Error('this should not happen: ' + msg.code) + + +/** + * Get an identifier from an association to match it to others. + * + * Associations are nodes that match to something else through an ID: + * <https://github.com/syntax-tree/mdast#association>. + * + * The `label` of an association is the string value: character escapes and + * references work, and casing is intact. + * The `identifier` is used to match one association to another: + * controversially, character escapes and references don’t work in this + * matching: `&copy;` does not match `©`, and `\+` does not match `+`. + * + * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\nb` + * matches `a b`. + * So, we do prefer the label when figuring out how we’re going to serialize: + * it has whitespace, casing, and we can ignore most useless character + * escapes and all character references. + * + * @type {AssociationId} + */ +function association(node) { + if (node.label || !node.identifier) { + return node.label || '' } + + return decodeString(node.identifier) } -function onWorkerExit (code) { - const stream = this.stream.deref() - if (stream === undefined) { - // Nothing to do, the worker already exit - return +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js +/** + * @import {CompilePattern} from '../types.js' + */ + +/** + * @type {CompilePattern} + */ +function compilePattern(pattern) { + if (!pattern._compiled) { + const before = + (pattern.atBreak ? '[\\r\\n][\\t ]*' : '') + + (pattern.before ? '(?:' + pattern.before + ')' : '') + + pattern._compiled = new RegExp( + (before ? '(' + before + ')' : '') + + (/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? '\\' : '') + + pattern.character + + (pattern.after ? '(?:' + pattern.after + ')' : ''), + 'g' + ) } - registry.unregister(stream) - stream.worker.exited = true - stream.worker.off('exit', onWorkerExit) - destroy(stream, code !== 0 ? new Error('The worker thread exited') : null) + + return pattern._compiled } -class ThreadStream extends EventEmitter { - constructor (opts = {}) { - super() +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js +/** + * @import {Handle, Info, State} from 'mdast-util-to-markdown' + * @import {PhrasingParents} from '../types.js' + */ - if (opts.bufferSize < 4) { - throw new Error('bufferSize must at least fit a 4-byte utf-8 char') - } - this[kImpl] = {} - this[kImpl].stateBuf = new SharedArrayBuffer(128) - this[kImpl].state = new Int32Array(this[kImpl].stateBuf) - this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024) - this[kImpl].data = Buffer.from(this[kImpl].dataBuf) - this[kImpl].sync = opts.sync || false - this[kImpl].ending = false - this[kImpl].ended = false - this[kImpl].needDrain = false - this[kImpl].destroyed = false - this[kImpl].flushing = false - this[kImpl].ready = false - this[kImpl].finished = false - this[kImpl].errored = null - this[kImpl].closed = false - this[kImpl].buf = '' - // TODO (fix): Make private? - this.worker = createWorker(this, opts) // TODO (fix): make private - } +/** + * Serialize the children of a parent that contains phrasing children. + * + * These children will be joined flush together. + * + * @param {PhrasingParents} parent + * Parent of flow nodes. + * @param {State} state + * Info passed around about the current state. + * @param {Info} info + * Info on where we are in the document we are generating. + * @returns {string} + * Serialized children, joined together. + */ +function containerPhrasing(parent, state, info) { + const indexStack = state.indexStack + const children = parent.children || [] + /** @type {Array<string>} */ + const results = [] + let index = -1 + let before = info.before + /** @type {string | undefined} */ + let encodeAfter + + indexStack.push(-1) + let tracker = state.createTracker(info) + + while (++index < children.length) { + const child = children[index] + /** @type {string} */ + let after + + indexStack[indexStack.length - 1] = index + + if (index + 1 < children.length) { + /** @type {Handle} */ + // @ts-expect-error: hush, it’s actually a `zwitch`. + let handle = state.handle.handlers[children[index + 1].type] + /** @type {Handle} */ + // @ts-expect-error: hush, it’s actually a `zwitch`. + if (handle && handle.peek) handle = handle.peek + after = handle + ? handle(children[index + 1], parent, state, { + before: '', + after: '', + ...tracker.current() + }).charAt(0) + : '' + } else { + after = info.after + } + + // In some cases, html (text) can be found in phrasing right after an eol. + // When we’d serialize that, in most cases that would be seen as html + // (flow). + // As we can’t escape or so to prevent it from happening, we take a somewhat + // reasonable approach: replace that eol with a space. + // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15> + if ( + results.length > 0 && + (before === '\r' || before === '\n') && + child.type === 'html' + ) { + results[results.length - 1] = results[results.length - 1].replace( + /(\r?\n|\r)$/, + ' ' + ) + before = ' ' - write (data) { - if (this[kImpl].destroyed) { - throw new Error('the worker has exited') + // To do: does this work to reset tracker? + tracker = state.createTracker(info) + tracker.move(results.join('')) } - if (this[kImpl].ending) { - throw new Error('the worker is ending') - } + let value = state.handle(child, parent, state, { + ...tracker.current(), + after, + before + }) - if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) { - try { - writeSync(this) - this[kImpl].flushing = true - } catch (err) { - destroy(this, err) - return false - } + // If we had to encode the first character after the previous node and it’s + // still the same character, + // encode it. + if (encodeAfter && encodeAfter === value.slice(0, 1)) { + value = + encodeCharacterReference(encodeAfter.charCodeAt(0)) + value.slice(1) } - this[kImpl].buf += data + const encodingInfo = state.attentionEncodeSurroundingInfo + state.attentionEncodeSurroundingInfo = undefined + encodeAfter = undefined - if (this[kImpl].sync) { - try { - writeSync(this) - return true - } catch (err) { - destroy(this, err) - return false + // If we have to encode the first character before the current node and + // it’s still the same character, + // encode it. + if (encodingInfo) { + if ( + results.length > 0 && + encodingInfo.before && + before === results[results.length - 1].slice(-1) + ) { + results[results.length - 1] = + results[results.length - 1].slice(0, -1) + + encodeCharacterReference(before.charCodeAt(0)) } - } - if (!this[kImpl].flushing) { - this[kImpl].flushing = true - setImmediate(nextFlush, this) + if (encodingInfo.after) encodeAfter = after } - this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0 - return !this[kImpl].needDrain + tracker.move(value) + results.push(value) + before = value.slice(-1) } - end () { - if (this[kImpl].destroyed) { - return - } + indexStack.pop() - this[kImpl].ending = true - end(this) - } + return results.join('') +} - flush (cb) { - if (this[kImpl].destroyed) { - if (typeof cb === 'function') { - process.nextTick(cb, new Error('the worker has exited')) - } - return - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/container-flow.js +/** + * @import {State} from 'mdast-util-to-markdown' + * @import {FlowChildren, FlowParents, TrackFields} from '../types.js' + */ - // TODO write all .buf - const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX) - // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`) - wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => { - if (err) { - destroy(this, err) - process.nextTick(cb, err) - return - } - if (res === 'not-equal') { - // TODO handle deadlock - this.flush(cb) - return - } - process.nextTick(cb) - }) - } +/** + * @param {FlowParents} parent + * Parent of flow nodes. + * @param {State} state + * Info passed around about the current state. + * @param {TrackFields} info + * Info on where we are in the document we are generating. + * @returns {string} + * Serialized children, joined by (blank) lines. + */ +function containerFlow(parent, state, info) { + const indexStack = state.indexStack + const children = parent.children || [] + const tracker = state.createTracker(info) + /** @type {Array<string>} */ + const results = [] + let index = -1 + + indexStack.push(-1) + + while (++index < children.length) { + const child = children[index] + + indexStack[indexStack.length - 1] = index + + results.push( + tracker.move( + state.handle(child, parent, state, { + before: '\n', + after: '\n', + ...tracker.current() + }) + ) + ) - flushSync () { - if (this[kImpl].destroyed) { - return + if (child.type !== 'list') { + state.bulletLastUsed = undefined } - writeSync(this) - flushSync(this) + if (index < children.length - 1) { + results.push( + tracker.move(between(child, children[index + 1], parent, state)) + ) + } } - unref () { - this.worker.unref() - } + indexStack.pop() - ref () { - this.worker.ref() - } + return results.join('') +} - get ready () { - return this[kImpl].ready - } +/** + * @param {FlowChildren} left + * @param {FlowChildren} right + * @param {FlowParents} parent + * @param {State} state + * @returns {string} + */ +function between(left, right, parent, state) { + let index = state.join.length - get destroyed () { - return this[kImpl].destroyed - } + while (index--) { + const result = state.join[index](left, right, parent, state) - get closed () { - return this[kImpl].closed - } + if (result === true || result === 1) { + break + } - get writable () { - return !this[kImpl].destroyed && !this[kImpl].ending - } + if (typeof result === 'number') { + return '\n'.repeat(1 + result) + } - get writableEnded () { - return this[kImpl].ending + if (result === false) { + return '\n\n<!---->\n\n' + } } - get writableFinished () { - return this[kImpl].finished - } + return '\n\n' +} - get writableNeedDrain () { - return this[kImpl].needDrain - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js +/** + * @import {IndentLines} from '../types.js' + */ - get writableObjectMode () { - return false - } +const eol = /\r?\n|\r/g - get writableErrored () { - return this[kImpl].errored +/** + * @type {IndentLines} + */ +function indentLines(value, map) { + /** @type {Array<string>} */ + const result = [] + let start = 0 + let line = 0 + /** @type {RegExpExecArray | null} */ + let match + + while ((match = eol.exec(value))) { + one(value.slice(start, match.index)) + result.push(match[0]) + start = match.index + match[0].length + line++ } -} -function destroy (stream, err) { - if (stream[kImpl].destroyed) { - return - } - stream[kImpl].destroyed = true + one(value.slice(start)) - if (err) { - stream[kImpl].errored = err - stream.emit('error', err) - } + return result.join('') - if (!stream.worker.exited) { - stream.worker.terminate() - .catch(() => {}) - .then(() => { - stream[kImpl].closed = true - stream.emit('close') - }) - } else { - setImmediate(() => { - stream[kImpl].closed = true - stream.emit('close') - }) + /** + * @param {string} value + */ + function one(value) { + result.push(map(value, line, !value)) } } -function write (stream, data, cb) { - // data is smaller than the shared buffer length - const current = Atomics.load(stream[kImpl].state, WRITE_INDEX) - const length = Buffer.byteLength(data) - stream[kImpl].data.write(data, current) - Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length) - Atomics.notify(stream[kImpl].state, WRITE_INDEX) - cb() - return true -} - -function end (stream) { - if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) { - return - } - stream[kImpl].ended = true +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/safe.js +/** + * @import {SafeConfig, State} from 'mdast-util-to-markdown' + */ - try { - stream.flushSync() - let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX) - // process._rawDebug('writing index') - Atomics.store(stream[kImpl].state, WRITE_INDEX, -1) - // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`) - Atomics.notify(stream[kImpl].state, WRITE_INDEX) - // Wait for the process to complete - let spins = 0 - while (readIndex !== -1) { - // process._rawDebug(`read = ${read}`) - Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000) - readIndex = Atomics.load(stream[kImpl].state, READ_INDEX) +/** + * Make a string safe for embedding in markdown constructs. + * + * In markdown, almost all punctuation characters can, in certain cases, + * result in something. + * Whether they do is highly subjective to where they happen and in what + * they happen. + * + * To solve this, `mdast-util-to-markdown` tracks: + * + * * Characters before and after something; + * * What “constructs” we are in. + * + * This information is then used by this function to escape or encode + * special characters. + * + * @param {State} state + * Info passed around about the current state. + * @param {string | null | undefined} input + * Raw value to make safe. + * @param {SafeConfig} config + * Configuration. + * @returns {string} + * Serialized markdown safe for embedding. + */ +function safe(state, input, config) { + const value = (config.before || '') + (input || '') + (config.after || '') + /** @type {Array<number>} */ + const positions = [] + /** @type {Array<string>} */ + const result = [] + /** @type {Record<number, {before: boolean, after: boolean}>} */ + const infos = {} + let index = -1 - if (readIndex === -2) { - throw new Error('end() failed') - } + while (++index < state.unsafe.length) { + const pattern = state.unsafe[index] - if (++spins === 10) { - throw new Error('end() took too long (10s)') - } + if (!patternInScope(state.stack, pattern)) { + continue } - process.nextTick(() => { - stream[kImpl].finished = true - stream.emit('finish') - }) - } catch (err) { - destroy(stream, err) - } - // process._rawDebug('end finished...') -} - -function writeSync (stream) { - const cb = () => { - if (stream[kImpl].ending) { - end(stream) - } else if (stream[kImpl].needDrain) { - process.nextTick(drain, stream) - } - } - stream[kImpl].flushing = false + const expression = state.compilePattern(pattern) + /** @type {RegExpExecArray | null} */ + let match - while (stream[kImpl].buf.length !== 0) { - const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX) - let leftover = stream[kImpl].data.length - writeIndex - if (leftover === 0) { - flushSync(stream) - Atomics.store(stream[kImpl].state, READ_INDEX, 0) - Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) - continue - } else if (leftover < 0) { - // stream should never happen - throw new Error('overwritten') - } + while ((match = expression.exec(value))) { + const before = 'before' in pattern || Boolean(pattern.atBreak) + const after = 'after' in pattern + const position = match.index + (before ? match[1].length : 0) - let toWrite = stream[kImpl].buf.slice(0, leftover) - let toWriteBytes = Buffer.byteLength(toWrite) - if (toWriteBytes <= leftover) { - stream[kImpl].buf = stream[kImpl].buf.slice(leftover) - // process._rawDebug('writing ' + toWrite.length) - write(stream, toWrite, cb) - } else { - // multi-byte utf-8 - flushSync(stream) - Atomics.store(stream[kImpl].state, READ_INDEX, 0) - Atomics.store(stream[kImpl].state, WRITE_INDEX, 0) + if (positions.includes(position)) { + if (infos[position].before && !before) { + infos[position].before = false + } - // Find a toWrite length that fits the buffer - // it must exists as the buffer is at least 4 bytes length - // and the max utf-8 length for a char is 4 bytes. - while (toWriteBytes > stream[kImpl].buf.length) { - leftover = leftover / 2 - toWrite = stream[kImpl].buf.slice(0, leftover) - toWriteBytes = Buffer.byteLength(toWrite) + if (infos[position].after && !after) { + infos[position].after = false + } + } else { + positions.push(position) + infos[position] = {before, after} } - stream[kImpl].buf = stream[kImpl].buf.slice(leftover) - write(stream, toWrite, cb) } } -} - -function flushSync (stream) { - if (stream[kImpl].flushing) { - throw new Error('unable to flush while flushing') - } - // process._rawDebug('flushSync started') + positions.sort(numerical) - const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX) + let start = config.before ? config.before.length : 0 + const end = value.length - (config.after ? config.after.length : 0) + index = -1 - let spins = 0 + while (++index < positions.length) { + const position = positions[index] - // TODO handle deadlock - while (true) { - const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX) + // Character before or after matched: + if (position < start || position >= end) { + continue + } - if (readIndex === -2) { - throw new Error('_flushSync failed') + // If this character is supposed to be escaped because it has a condition on + // the next character, and the next character is definitly being escaped, + // then skip this escape. + if ( + (position + 1 < end && + positions[index + 1] === position + 1 && + infos[position].after && + !infos[position + 1].before && + !infos[position + 1].after) || + (positions[index - 1] === position - 1 && + infos[position].before && + !infos[position - 1].before && + !infos[position - 1].after) + ) { + continue } - // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`) - if (readIndex !== writeIndex) { - // TODO stream timeouts for some reason. - Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000) - } else { - break + if (start !== position) { + // If we have to use a character reference, an ampersand would be more + // correct, but as backslashes only care about punctuation, either will + // do the trick + result.push(escapeBackslashes(value.slice(start, position), '\\')) } - if (++spins === 10) { - throw new Error('_flushSync took too long (10s)') + start = position + + if ( + /[!-/:-@[-`{-~]/.test(value.charAt(position)) && + (!config.encode || !config.encode.includes(value.charAt(position))) + ) { + // Character escape. + result.push('\\') + } else { + // Character reference. + result.push(encodeCharacterReference(value.charCodeAt(position))) + start++ } } - // process._rawDebug('flushSync finished') + + result.push(escapeBackslashes(value.slice(start, end), config.after)) + + return result.join('') } -module.exports = ThreadStream +/** + * @param {number} a + * @param {number} b + * @returns {number} + */ +function numerical(a, b) { + return a - b +} + +/** + * @param {string} value + * @param {string} after + * @returns {string} + */ +function escapeBackslashes(value, after) { + const expression = /\\(?=[!-/:-@[-`{-~])/g + /** @type {Array<number>} */ + const positions = [] + /** @type {Array<string>} */ + const results = [] + const whole = value + after + let index = -1 + let start = 0 + /** @type {RegExpExecArray | null} */ + let match + while ((match = expression.exec(whole))) { + positions.push(match.index) + } -/***/ }), + while (++index < positions.length) { + if (start !== positions[index]) { + results.push(value.slice(start, positions[index])) + } -/***/ 21598: -/***/ ((module) => { + results.push('\\') + start = positions[index] + } -"use strict"; + results.push(value.slice(start)) + return results.join('') +} -const WRITE_INDEX = 4 -const READ_INDEX = 8 +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/track.js +/** + * @import {CreateTracker, TrackCurrent, TrackMove, TrackShift} from '../types.js' + */ -module.exports = { - WRITE_INDEX, - READ_INDEX +/** + * Track positional info in the output. + * + * @type {CreateTracker} + */ +function track(config) { + // Defaults are used to prevent crashes when older utilities somehow activate + // this code. + /* c8 ignore next 5 */ + const options = config || {} + const now = options.now || {} + let lineShift = options.lineShift || 0 + let line = now.line || 1 + let column = now.column || 1 + + return {move, current, shift} + + /** + * Get the current tracked info. + * + * @type {TrackCurrent} + */ + function current() { + return {now: {line, column}, lineShift} + } + + /** + * Define an increased line shift (the typical indent for lines). + * + * @type {TrackShift} + */ + function shift(value) { + lineShift += value + } + + /** + * Move past some generated markdown. + * + * @type {TrackMove} + */ + function move(input) { + // eslint-disable-next-line unicorn/prefer-default-parameters + const value = input || '' + const chunks = value.split(/\r?\n|\r/g) + const tail = chunks[chunks.length - 1] + line += chunks.length - 1 + column = + chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift + return value + } } +;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/index.js +/** + * @import {Info, Join, Options, SafeConfig, State} from 'mdast-util-to-markdown' + * @import {Nodes} from 'mdast' + * @import {Enter, FlowParents, PhrasingParents, TrackFields} from './types.js' + */ -/***/ }), -/***/ 80269: -/***/ ((module) => { -"use strict"; -const MAX_TIMEOUT = 1000 -function wait (state, index, expected, timeout, done) { - const max = Date.now() + timeout - let current = Atomics.load(state, index) - if (current === expected) { - done(null, 'ok') - return - } - let prior = current - const check = (backoff) => { - if (Date.now() > max) { - done(null, 'timed-out') - } else { - setTimeout(() => { - prior = current - current = Atomics.load(state, index) - if (current === prior) { - check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2) - } else { - if (current === expected) done(null, 'ok') - else done(null, 'not-equal') - } - }, backoff) - } - } - check(1) -} -// let waitDiffCount = 0 -function waitDiff (state, index, expected, timeout, done) { - // const id = waitDiffCount++ - // process._rawDebug(`>>> waitDiff ${id}`) - const max = Date.now() + timeout - let current = Atomics.load(state, index) - if (current !== expected) { - done(null, 'ok') - return - } - const check = (backoff) => { - // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`) - // process._rawDebug('' + backoff) - if (Date.now() > max) { - done(null, 'timed-out') - } else { - setTimeout(() => { - current = Atomics.load(state, index) - if (current !== expected) { - done(null, 'ok') - } else { - check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2) - } - }, backoff) - } - } - check(1) -} -module.exports = { wait, waitDiff } -/***/ }), -/***/ 88693: -/***/ ((module) => { -"use strict"; -let fastProto = null; - -// Creates an object with permanently fast properties in V8. See Toon Verwaest's -// post https://medium.com/@tverwaes/setting-up-prototypes-in-v8-ec9c9491dfe2#5f62 -// for more details. Use %HasFastProperties(object) and the Node.js flag -// --allow-natives-syntax to check whether an object has fast properties. -function FastObject(o) { - // A prototype object will have "fast properties" enabled once it is checked - // against the inline property cache of a function, e.g. fastProto.property: - // https://github.com/v8/v8/blob/6.0.122/test/mjsunit/fast-prototype.js#L48-L63 - if (fastProto !== null && typeof fastProto.property) { - const result = fastProto; - fastProto = FastObject.prototype = null; - return result; - } - fastProto = FastObject.prototype = o == null ? Object.create(null) : o; - return new FastObject; -} +/** + * Turn an mdast syntax tree into markdown. + * + * @param {Nodes} tree + * Tree to serialize. + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {string} + * Serialized markdown representing `tree`. + */ +function toMarkdown(tree, options) { + const settings = options || {} + /** @type {State} */ + const state = { + associationId: association, + containerPhrasing: containerPhrasingBound, + containerFlow: containerFlowBound, + createTracker: track, + compilePattern: compilePattern, + enter, + // @ts-expect-error: GFM / frontmatter are typed in `mdast` but not defined + // here. + handlers: {...handle}, + // @ts-expect-error: add `handle` in a second. + handle: undefined, + indentLines: indentLines, + indexStack: [], + join: [...join], + options: {}, + safe: safeBound, + stack: [], + unsafe: [...unsafe] + } + + configure_configure(state, settings) + + if (state.options.tightDefinitions) { + state.join.push(joinDefinition) + } + + state.handle = zwitch('type', { + invalid, + unknown, + handlers: state.handlers + }) -// Initialize the inline property cache of FastObject -FastObject(); + let result = state.handle(tree, undefined, state, { + before: '\n', + after: '\n', + now: {line: 1, column: 1}, + lineShift: 0 + }) -module.exports = function toFastproperties(o) { - return FastObject(o); -}; + if ( + result && + result.charCodeAt(result.length - 1) !== 10 && + result.charCodeAt(result.length - 1) !== 13 + ) { + result += '\n' + } + return result -/***/ }), + /** @type {Enter} */ + function enter(name) { + state.stack.push(name) + return exit -/***/ 54411: -/***/ ((module) => { + /** + * @returns {undefined} + */ + function exit() { + state.stack.pop() + } + } +} -"use strict"; +/** + * @param {unknown} value + * @returns {never} + */ +function invalid(value) { + throw new Error('Cannot handle value `' + value + '`, expected node') +} +/** + * @param {unknown} value + * @returns {never} + */ +function unknown(value) { + // Always a node. + const node = /** @type {Nodes} */ (value) + throw new Error('Cannot handle unknown node `' + node.type + '`') +} -module.exports = trimTrailingLines +/** @type {Join} */ +function joinDefinition(left, right) { + // No blank line between adjacent definitions. + if (left.type === 'definition' && left.type === right.type) { + return 0 + } +} -// Remove final newline characters from `value`. -function trimTrailingLines(value) { - return String(value).replace(/\n+$/, '') +/** + * Serialize the children of a parent that contains phrasing children. + * + * These children will be joined flush together. + * + * @this {State} + * Info passed around about the current state. + * @param {PhrasingParents} parent + * Parent of flow nodes. + * @param {Info} info + * Info on where we are in the document we are generating. + * @returns {string} + * Serialized children, joined together. + */ +function containerPhrasingBound(parent, info) { + return containerPhrasing(parent, this, info) } +/** + * Serialize the children of a parent that contains flow children. + * + * These children will typically be joined by blank lines. + * What they are joined by exactly is defined by `Join` functions. + * + * @this {State} + * Info passed around about the current state. + * @param {FlowParents} parent + * Parent of flow nodes. + * @param {TrackFields} info + * Info on where we are in the document we are generating. + * @returns {string} + * Serialized children, joined by (blank) lines. + */ +function containerFlowBound(parent, info) { + return containerFlow(parent, this, info) +} -/***/ }), +/** + * Make a string safe for embedding in markdown constructs. + * + * In markdown, almost all punctuation characters can, in certain cases, + * result in something. + * Whether they do is highly subjective to where they happen and in what + * they happen. + * + * To solve this, `mdast-util-to-markdown` tracks: + * + * * Characters before and after something; + * * What “constructs” we are in. + * + * This information is then used by this function to escape or encode + * special characters. + * + * @this {State} + * Info passed around about the current state. + * @param {string | null | undefined} value + * Raw value to make safe. + * @param {SafeConfig} config + * Configuration. + * @returns {string} + * Serialized markdown safe for embedding. + */ +function safeBound(value, config) { + return safe(this, value, config) +} -/***/ 82315: -/***/ ((module, exports) => { +;// CONCATENATED MODULE: ./node_modules/remark-stringify/lib/index.js +/** + * @typedef {import('mdast').Root} Root + * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownOptions + * @typedef {import('unified').Compiler<Root, string>} Compiler + * @typedef {import('unified').Processor<undefined, undefined, undefined, Root, string>} Processor + */ +/** + * @typedef {Omit<ToMarkdownOptions, 'extensions'>} Options + */ -exports = module.exports = trim; -function trim(str){ - return str.replace(/^\s*|\s*$/g, ''); -} -exports.left = function(str){ - return str.replace(/^\s*/, ''); -}; +/** + * Add support for serializing to markdown. + * + * @param {Readonly<Options> | null | undefined} [options] + * Configuration (optional). + * @returns {undefined} + * Nothing. + */ +function remarkStringify(options) { + /** @type {Processor} */ + // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly. + const self = this + + self.compiler = compiler + + /** + * @type {Compiler} + */ + function compiler(tree) { + return toMarkdown(tree, { + ...self.data('settings'), + ...options, + // Note: this option is not in the readme. + // The goal is for it to be set by plugins on `data` instead of being + // passed by users. + extensions: self.data('toMarkdownExtensions') || [] + }) + } +} -exports.right = function(str){ - return str.replace(/\s*$/, ''); -}; +;// CONCATENATED MODULE: ./node_modules/bail/index.js +/** + * Throw a given error. + * + * @param {Error|null|undefined} [error] + * Maybe error. + * @returns {asserts error is null|undefined} + */ +function bail(error) { + if (error) { + throw error + } +} +// EXTERNAL MODULE: ./node_modules/extend/index.js +var extend = __nccwpck_require__(3860); +;// CONCATENATED MODULE: ./node_modules/devlop/lib/default.js +function deprecate(fn) { + return fn +} -/***/ }), +function equal() {} -/***/ 83520: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function default_ok() {} -"use strict"; +function unreachable() {} +;// CONCATENATED MODULE: ./node_modules/is-plain-obj/index.js +function isPlainObject(value) { + if (typeof value !== 'object' || value === null) { + return false; + } -var wrap = __nccwpck_require__(95679) + const prototype = Object.getPrototypeOf(value); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); +} -module.exports = trough +;// CONCATENATED MODULE: ./node_modules/trough/lib/index.js +// To do: remove `void`s +// To do: remove `null` from output of our APIs, allow it as user APIs. -trough.wrap = wrap +/** + * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback + * Callback. + * + * @typedef {(...input: Array<any>) => any} Middleware + * Ware. + * + * @typedef Pipeline + * Pipeline. + * @property {Run} run + * Run the pipeline. + * @property {Use} use + * Add middleware. + * + * @typedef {(...input: Array<any>) => void} Run + * Call all middleware. + * + * Calls `done` on completion with either an error or the output of the + * last middleware. + * + * > 👉 **Note**: as the length of input defines whether async functions get a + * > `next` function, + * > it’s recommended to keep `input` at one value normally. -var slice = [].slice + * + * @typedef {(fn: Middleware) => Pipeline} Use + * Add middleware. + */ -// Create new middleware. +/** + * Create new middleware. + * + * @returns {Pipeline} + * Pipeline. + */ function trough() { - var fns = [] - var middleware = {} + /** @type {Array<Middleware>} */ + const fns = [] + /** @type {Pipeline} */ + const pipeline = {run, use} - middleware.run = run - middleware.use = use + return pipeline - return middleware + /** @type {Run} */ + function run(...values) { + let middlewareIndex = -1 + /** @type {Callback} */ + const callback = values.pop() - // Run `fns`. Last argument must be a completion handler. - function run() { - var index = -1 - var input = slice.call(arguments, 0, -1) - var done = arguments[arguments.length - 1] - - if (typeof done !== 'function') { - throw new Error('Expected function as last argument, not ' + done) + if (typeof callback !== 'function') { + throw new TypeError('Expected function as last argument, not ' + callback) } - next.apply(null, [null].concat(input)) + next(null, ...values) - // Run the next `fn`, if any. - function next(err) { - var fn = fns[++index] - var params = slice.call(arguments, 0) - var values = params.slice(1) - var length = input.length - var pos = -1 + /** + * Run the next `fn`, or we’re done. + * + * @param {Error | null | undefined} error + * @param {Array<any>} output + */ + function next(error, ...output) { + const fn = fns[++middlewareIndex] + let index = -1 - if (err) { - done(err) + if (error) { + callback(error) return } - // Copy non-nully input into values. - while (++pos < length) { - if (values[pos] === null || values[pos] === undefined) { - values[pos] = input[pos] + // Copy non-nullish input into values. + while (++index < values.length) { + if (output[index] === null || output[index] === undefined) { + output[index] = values[index] } } - input = values + // Save the newly created `output` for the next call. + values = output // Next or done. if (fn) { - wrap(fn, next).apply(null, input) + wrap(fn, next)(...output) } else { - done.apply(null, [null].concat(input)) + callback(null, ...output) } } } - // Add `fn` to the list. - function use(fn) { - if (typeof fn !== 'function') { - throw new Error('Expected `fn` to be a function, not ' + fn) + /** @type {Use} */ + function use(middelware) { + if (typeof middelware !== 'function') { + throw new TypeError( + 'Expected `middelware` to be a function, not ' + middelware + ) } - fns.push(fn) - - return middleware + fns.push(middelware) + return pipeline } } - -/***/ }), - -/***/ 95679: -/***/ ((module) => { - -"use strict"; - - -var slice = [].slice - -module.exports = wrap - -// Wrap `fn`. -// Can be sync or async; return a promise, receive a completion handler, return -// new values and errors. -function wrap(fn, callback) { - var invoked +/** + * Wrap `middleware` into a uniform interface. + * + * You can pass all input to the resulting function. + * `callback` is then called with the output of `middleware`. + * + * If `middleware` accepts more arguments than the later given in input, + * an extra `done` function is passed to it after that input, + * which must be called by `middleware`. + * + * The first value in `input` is the main input value. + * All other input values are the rest input values. + * The values given to `callback` are the input values, + * merged with every non-nullish output value. + * + * * if `middleware` throws an error, + * returns a promise that is rejected, + * or calls the given `done` function with an error, + * `callback` is called with that error + * * if `middleware` returns a value or returns a promise that is resolved, + * that value is the main output value + * * if `middleware` calls `done`, + * all non-nullish values except for the first one (the error) overwrite the + * output values + * + * @param {Middleware} middleware + * Function to wrap. + * @param {Callback} callback + * Callback called with the output of `middleware`. + * @returns {Run} + * Wrapped middleware. + */ +function wrap(middleware, callback) { + /** @type {boolean} */ + let called return wrapped - function wrapped() { - var params = slice.call(arguments, 0) - var callback = fn.length > params.length - var result + /** + * Call `middleware`. + * @this {any} + * @param {Array<any>} parameters + * @returns {void} + */ + function wrapped(...parameters) { + const fnExpectsCallback = middleware.length > parameters.length + /** @type {any} */ + let result - if (callback) { - params.push(done) + if (fnExpectsCallback) { + parameters.push(done) } try { - result = fn.apply(null, params) + result = middleware.apply(this, parameters) } catch (error) { + const exception = /** @type {Error} */ (error) + // Well, this is quite the pickle. - // `fn` received a callback and invoked it (thus continuing the pipeline), - // but later also threw an error. - // We’re not about to restart the pipeline again, so the only thing left - // to do is to throw the thing instead. - if (callback && invoked) { - throw error + // `middleware` received a callback and called it synchronously, but that + // threw an error. + // The only thing left to do is to throw the thing instead. + if (fnExpectsCallback && called) { + throw exception } - return done(error) + return done(exception) } - if (!callback) { - if (result && typeof result.then === 'function') { + if (!fnExpectsCallback) { + if (result && result.then && typeof result.then === 'function') { result.then(then, done) } else if (result instanceof Error) { done(result) @@ -96053,815 +57282,2349 @@ function wrap(fn, callback) { } } - // Invoke `next`, only once. - function done() { - if (!invoked) { - invoked = true - - callback.apply(null, arguments) + /** + * Call `callback`, only once. + * + * @type {Callback} + */ + function done(error, ...output) { + if (!called) { + called = true + callback(error, ...output) } } - // Invoke `done` with one value. - // Tracks if an error is passed, too. + /** + * Call `done` with one value. + * + * @param {any} [value] + */ function then(value) { done(null, value) } } +;// CONCATENATED MODULE: ./node_modules/vfile-message/lib/index.js +/** + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Point} Point + * @typedef {import('unist').Position} Position + */ -/***/ }), - -/***/ 89382: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @typedef {object & {type: string, position?: Position | undefined}} NodeLike + * + * @typedef Options + * Configuration. + * @property {Array<Node> | null | undefined} [ancestors] + * Stack of (inclusive) ancestor nodes surrounding the message (optional). + * @property {Error | null | undefined} [cause] + * Original error cause of the message (optional). + * @property {Point | Position | null | undefined} [place] + * Place of message (optional). + * @property {string | null | undefined} [ruleId] + * Category of message (optional, example: `'my-rule'`). + * @property {string | null | undefined} [source] + * Namespace of who sent the message (optional, example: `'my-package'`). + */ -module.exports = __nccwpck_require__(91418); -/***/ }), +/** + * Message. + */ +class VFileMessage extends Error { + /** + * Create a message for `reason`. + * + * > 🪦 **Note**: also has obsolete signatures. + * + * @overload + * @param {string} reason + * @param {Options | null | undefined} [options] + * @returns + * + * @overload + * @param {string} reason + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns + * + * @overload + * @param {string} reason + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns + * + * @overload + * @param {string} reason + * @param {string | null | undefined} [origin] + * @returns + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns + * + * @overload + * @param {Error | VFileMessage} cause + * @param {string | null | undefined} [origin] + * @returns + * + * @param {Error | VFileMessage | string} causeOrReason + * Reason for message, should use markdown. + * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace] + * Configuration (optional). + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns + * Instance of `VFileMessage`. + */ + // eslint-disable-next-line complexity + constructor(causeOrReason, optionsOrParentOrPlace, origin) { + super() -/***/ 91418: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (typeof optionsOrParentOrPlace === 'string') { + origin = optionsOrParentOrPlace + optionsOrParentOrPlace = undefined + } -"use strict"; + /** @type {string} */ + let reason = '' + /** @type {Options} */ + let options = {} + let legacyCause = false + if (optionsOrParentOrPlace) { + // Point. + if ( + 'line' in optionsOrParentOrPlace && + 'column' in optionsOrParentOrPlace + ) { + options = {place: optionsOrParentOrPlace} + } + // Position. + else if ( + 'start' in optionsOrParentOrPlace && + 'end' in optionsOrParentOrPlace + ) { + options = {place: optionsOrParentOrPlace} + } + // Node. + else if ('type' in optionsOrParentOrPlace) { + options = { + ancestors: [optionsOrParentOrPlace], + place: optionsOrParentOrPlace.position + } + } + // Options. + else { + options = {...optionsOrParentOrPlace} + } + } -var net = __nccwpck_require__(41808); -var tls = __nccwpck_require__(24404); -var http = __nccwpck_require__(13685); -var https = __nccwpck_require__(95687); -var events = __nccwpck_require__(82361); -var assert = __nccwpck_require__(39491); -var util = __nccwpck_require__(73837); + if (typeof causeOrReason === 'string') { + reason = causeOrReason + } + // Error. + else if (!options.cause && causeOrReason) { + legacyCause = true + reason = causeOrReason.message + options.cause = causeOrReason + } + if (!options.ruleId && !options.source && typeof origin === 'string') { + const index = origin.indexOf(':') -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; + if (index === -1) { + options.ruleId = origin + } else { + options.source = origin.slice(0, index) + options.ruleId = origin.slice(index + 1) + } + } + if (!options.place && options.ancestors && options.ancestors) { + const parent = options.ancestors[options.ancestors.length - 1] -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} + if (parent) { + options.place = parent.position + } + } -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} + const start = + options.place && 'start' in options.place + ? options.place.start + : options.place -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; -} + /* eslint-disable no-unused-expressions */ + /** + * Stack of ancestor nodes surrounding the message. + * + * @type {Array<Node> | undefined} + */ + this.ancestors = options.ancestors || undefined -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} + /** + * Original error cause of the message. + * + * @type {Error | undefined} + */ + this.cause = options.cause || undefined + /** + * Starting column of message. + * + * @type {number | undefined} + */ + this.column = start ? start.column : undefined -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; + /** + * State of problem. + * + * * `true` — error, file not usable + * * `false` — warning, change may be needed + * * `undefined` — change likely not needed + * + * @type {boolean | null | undefined} + */ + this.fatal = undefined - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); -} -util.inherits(TunnelingAgent, events.EventEmitter); + /** + * Path of a file (used throughout the `VFile` ecosystem). + * + * @type {string | undefined} + */ + this.file -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + // Field from `Error`. + /** + * Reason for message. + * + * @type {string} + */ + this.message = reason - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } + /** + * Starting line of error. + * + * @type {number | undefined} + */ + this.line = start ? start.line : undefined - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); + // Field from `Error`. + /** + * Serialized positional info of message. + * + * On normal errors, this would be something like `ParseError`, buit in + * `VFile` messages we use this space to show where an error happened. + */ + this.name = stringifyPosition(options.place) || '1:1' - function onFree() { - self.emit('free', socket, options); - } + /** + * Place of message. + * + * @type {Point | Position | undefined} + */ + this.place = options.place || undefined - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); -}; + /** + * Reason for message, should use markdown. + * + * @type {string} + */ + this.reason = this.message -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); + /** + * Category of message (example: `'my-rule'`). + * + * @type {string | undefined} + */ + this.ruleId = options.ruleId || undefined - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); - } + /** + * Namespace of message (example: `'my-package'`). + * + * @type {string | undefined} + */ + this.source = options.source || undefined - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); + // Field from `Error`. + /** + * Stack of message. + * + * This is used by normal errors to show where something happened in + * programming code, irrelevant for `VFile` messages, + * + * @type {string} + */ + this.stack = + legacyCause && options.cause && typeof options.cause.stack === 'string' + ? options.cause.stack + : '' - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } + // The following fields are “well known”. + // Not standard. + // Feel free to add other non-standard fields to your messages. - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); - } + /** + * Specify the source value that’s being reported, which is deemed + * incorrect. + * + * @type {string | undefined} + */ + this.actual - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); + /** + * Suggest acceptable values that can be used instead of `actual`. + * + * @type {Array<string> | undefined} + */ + this.expected - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } + /** + * Long form description of the message (you should use markdown). + * + * @type {string | undefined} + */ + this.note - function onError(cause) { - connectReq.removeAllListeners(); + /** + * Link to docs for the message. + * + * > 👉 **Note**: this must be an absolute URL that can be passed as `x` + * > to `new URL(x)`. + * + * @type {string | undefined} + */ + this.url + /* eslint-enable no-unused-expressions */ + } +} + +VFileMessage.prototype.file = '' +VFileMessage.prototype.name = '' +VFileMessage.prototype.reason = '' +VFileMessage.prototype.message = '' +VFileMessage.prototype.stack = '' +VFileMessage.prototype.column = undefined +VFileMessage.prototype.line = undefined +VFileMessage.prototype.ancestors = undefined +VFileMessage.prototype.cause = undefined +VFileMessage.prototype.fatal = undefined +VFileMessage.prototype.place = undefined +VFileMessage.prototype.ruleId = undefined +VFileMessage.prototype.source = undefined + +;// CONCATENATED MODULE: external "node:path" +const external_node_path_namespaceObject = require("node:path"); +;// CONCATENATED MODULE: external "node:process" +const external_node_process_namespaceObject = require("node:process"); +;// CONCATENATED MODULE: ./node_modules/vfile/lib/minurl.shared.js +/** + * Checks if a value has the shape of a WHATWG URL object. + * + * Using a symbol or instanceof would not be able to recognize URL objects + * coming from other implementations (e.g. in Electron), so instead we are + * checking some well known properties for a lack of a better test. + * + * We use `href` and `protocol` as they are the only properties that are + * easy to retrieve and calculate due to the lazy nature of the getters. + * + * We check for auth attribute to distinguish legacy url instance with + * WHATWG URL instance. + * + * @param {unknown} fileUrlOrPath + * File path or URL. + * @returns {fileUrlOrPath is URL} + * Whether it’s a URL. + */ +// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720> +function isUrl(fileUrlOrPath) { + return Boolean( + fileUrlOrPath !== null && + typeof fileUrlOrPath === 'object' && + 'href' in fileUrlOrPath && + fileUrlOrPath.href && + 'protocol' in fileUrlOrPath && + fileUrlOrPath.protocol && + // @ts-expect-error: indexing is fine. + fileUrlOrPath.auth === undefined + ) +} - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - } -}; +;// CONCATENATED MODULE: external "node:url" +const external_node_url_namespaceObject = require("node:url"); +;// CONCATENATED MODULE: ./node_modules/vfile/lib/index.js +/** + * @import {Node, Point, Position} from 'unist' + * @import {Options as MessageOptions} from 'vfile-message' + * @import {Compatible, Data, Map, Options, Value} from 'vfile' + */ -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); +/** + * @typedef {object & {type: string, position?: Position | undefined}} NodeLike + */ - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); - } -}; -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); -} -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; - } - return host; // for v0.11 or later -} -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; -} +/** + * Order of setting (least specific to most), we need this because otherwise + * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a + * stem can be set. + */ +const order = /** @type {const} */ ([ + 'history', + 'path', + 'basename', + 'stem', + 'extname', + 'dirname' +]) +class VFile { + /** + * Create a new virtual file. + * + * `options` is treated as: + * + * * `string` or `Uint8Array` — `{value: options}` + * * `URL` — `{path: options}` + * * `VFile` — shallow copies its data over to the new file + * * `object` — all fields are shallow copied over to the new file + * + * Path related fields are set in the following order (least specific to + * most specific): `history`, `path`, `basename`, `stem`, `extname`, + * `dirname`. + * + * You cannot set `dirname` or `extname` without setting either `history`, + * `path`, `basename`, or `stem` too. + * + * @param {Compatible | null | undefined} [value] + * File value. + * @returns + * New instance. + */ + constructor(value) { + /** @type {Options | VFile} */ + let options -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; + if (!value) { + options = {} + } else if (isUrl(value)) { + options = {path: value} + } else if (typeof value === 'string' || isUint8Array(value)) { + options = {value} } else { - args.unshift('TUNNEL:'); + options = value } - console.error.apply(console, args); - } -} else { - debug = function() {}; -} -exports.debug = debug; // for test + /* eslint-disable no-unused-expressions */ -/***/ }), + /** + * Base of `path` (default: `process.cwd()` or `'/'` in browsers). + * + * @type {string} + */ + // Prevent calling `cwd` (which could be expensive) if it’s not needed; + // the empty string will be overridden in the next block. + this.cwd = 'cwd' in options ? '' : external_node_process_namespaceObject.cwd() -/***/ 68475: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** + * Place to store custom info (default: `{}`). + * + * It’s OK to store custom data directly on the file but moving it to + * `data` is recommended. + * + * @type {Data} + */ + this.data = {} + + /** + * List of file paths the file moved between. + * + * The first is the original path and the last is the current path. + * + * @type {Array<string>} + */ + this.history = [] + + /** + * List of messages associated with the file. + * + * @type {Array<VFileMessage>} + */ + this.messages = [] + + /** + * Raw value. + * + * @type {Value} + */ + this.value + + // The below are non-standard, they are “well-known”. + // As in, used in several tools. + /** + * Source map. + * + * This type is equivalent to the `RawSourceMap` type from the `source-map` + * module. + * + * @type {Map | null | undefined} + */ + this.map + + /** + * Custom, non-string, compiled, representation. + * + * This is used by unified to store non-string results. + * One example is when turning markdown into React nodes. + * + * @type {unknown} + */ + this.result + + /** + * Whether a file was saved to disk. + * + * This is used by vfile reporters. + * + * @type {boolean} + */ + this.stored + /* eslint-enable no-unused-expressions */ -"use strict"; + // Set path related properties in the correct order. + let index = -1 + while (++index < order.length) { + const field = order[index] -var xtend = __nccwpck_require__(76738) -var inherits = __nccwpck_require__(76919) + // Note: we specifically use `in` instead of `hasOwnProperty` to accept + // `vfile`s too. + if ( + field in options && + options[field] !== undefined && + options[field] !== null + ) { + // @ts-expect-error: TS doesn’t understand basic reality. + this[field] = field === 'history' ? [...options[field]] : options[field] + } + } + + /** @type {string} */ + let field + + // Set non-path related properties. + for (field in options) { + // @ts-expect-error: fine to set other things. + if (!order.includes(field)) { + // @ts-expect-error: fine to set other things. + this[field] = options[field] + } + } + } + + /** + * Get the basename (including extname) (example: `'index.min.js'`). + * + * @returns {string | undefined} + * Basename. + */ + get basename() { + return typeof this.path === 'string' + ? external_node_path_namespaceObject.basename(this.path) + : undefined + } + + /** + * Set basename (including extname) (`'index.min.js'`). + * + * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` + * on windows). + * Cannot be nullified (use `file.path = file.dirname` instead). + * + * @param {string} basename + * Basename. + * @returns {undefined} + * Nothing. + */ + set basename(basename) { + assertNonEmpty(basename, 'basename') + assertPart(basename, 'basename') + this.path = external_node_path_namespaceObject.join(this.dirname || '', basename) + } + + /** + * Get the parent path (example: `'~'`). + * + * @returns {string | undefined} + * Dirname. + */ + get dirname() { + return typeof this.path === 'string' + ? external_node_path_namespaceObject.dirname(this.path) + : undefined + } + + /** + * Set the parent path (example: `'~'`). + * + * Cannot be set if there’s no `path` yet. + * + * @param {string | undefined} dirname + * Dirname. + * @returns {undefined} + * Nothing. + */ + set dirname(dirname) { + assertPath(this.basename, 'dirname') + this.path = external_node_path_namespaceObject.join(dirname || '', this.basename) + } + + /** + * Get the extname (including dot) (example: `'.js'`). + * + * @returns {string | undefined} + * Extname. + */ + get extname() { + return typeof this.path === 'string' + ? external_node_path_namespaceObject.extname(this.path) + : undefined + } + + /** + * Set the extname (including dot) (example: `'.js'`). + * + * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` + * on windows). + * Cannot be set if there’s no `path` yet. + * + * @param {string | undefined} extname + * Extname. + * @returns {undefined} + * Nothing. + */ + set extname(extname) { + assertPart(extname, 'extname') + assertPath(this.dirname, 'extname') + + if (extname) { + if (extname.codePointAt(0) !== 46 /* `.` */) { + throw new Error('`extname` must start with `.`') + } + + if (extname.includes('.', 1)) { + throw new Error('`extname` cannot contain multiple dots') + } + } + + this.path = external_node_path_namespaceObject.join(this.dirname, this.stem + (extname || '')) + } + + /** + * Get the full path (example: `'~/index.min.js'`). + * + * @returns {string} + * Path. + */ + get path() { + return this.history[this.history.length - 1] + } + + /** + * Set the full path (example: `'~/index.min.js'`). + * + * Cannot be nullified. + * You can set a file URL (a `URL` object with a `file:` protocol) which will + * be turned into a path with `url.fileURLToPath`. + * + * @param {URL | string} path + * Path. + * @returns {undefined} + * Nothing. + */ + set path(path) { + if (isUrl(path)) { + path = (0,external_node_url_namespaceObject.fileURLToPath)(path) + } + + assertNonEmpty(path, 'path') + + if (this.path !== path) { + this.history.push(path) + } + } + + /** + * Get the stem (basename w/o extname) (example: `'index.min'`). + * + * @returns {string | undefined} + * Stem. + */ + get stem() { + return typeof this.path === 'string' + ? external_node_path_namespaceObject.basename(this.path, this.extname) + : undefined + } + + /** + * Set the stem (basename w/o extname) (example: `'index.min'`). + * + * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` + * on windows). + * Cannot be nullified (use `file.path = file.dirname` instead). + * + * @param {string} stem + * Stem. + * @returns {undefined} + * Nothing. + */ + set stem(stem) { + assertNonEmpty(stem, 'stem') + assertPart(stem, 'stem') + this.path = external_node_path_namespaceObject.join(this.dirname || '', stem + (this.extname || '')) + } + + // Normal prototypal methods. + /** + * Create a fatal message for `reason` associated with the file. + * + * The `fatal` field of the message is set to `true` (error; file not usable) + * and the `file` field is set to the current file path. + * The message is added to the `messages` field on `file`. + * + * > 🪦 **Note**: also has obsolete signatures. + * + * @overload + * @param {string} reason + * @param {MessageOptions | null | undefined} [options] + * @returns {never} + * + * @overload + * @param {string} reason + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns {never} + * + * @overload + * @param {string} reason + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns {never} + * + * @overload + * @param {string} reason + * @param {string | null | undefined} [origin] + * @returns {never} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns {never} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns {never} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {string | null | undefined} [origin] + * @returns {never} + * + * @param {Error | VFileMessage | string} causeOrReason + * Reason for message, should use markdown. + * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] + * Configuration (optional). + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns {never} + * Never. + * @throws {VFileMessage} + * Message. + */ + fail(causeOrReason, optionsOrParentOrPlace, origin) { + // @ts-expect-error: the overloads are fine. + const message = this.message(causeOrReason, optionsOrParentOrPlace, origin) + + message.fatal = true + + throw message + } + + /** + * Create an info message for `reason` associated with the file. + * + * The `fatal` field of the message is set to `undefined` (info; change + * likely not needed) and the `file` field is set to the current file path. + * The message is added to the `messages` field on `file`. + * + * > 🪦 **Note**: also has obsolete signatures. + * + * @overload + * @param {string} reason + * @param {MessageOptions | null | undefined} [options] + * @returns {VFileMessage} + * + * @overload + * @param {string} reason + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {string} reason + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {string} reason + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @param {Error | VFileMessage | string} causeOrReason + * Reason for message, should use markdown. + * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] + * Configuration (optional). + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns {VFileMessage} + * Message. + */ + info(causeOrReason, optionsOrParentOrPlace, origin) { + // @ts-expect-error: the overloads are fine. + const message = this.message(causeOrReason, optionsOrParentOrPlace, origin) + + message.fatal = undefined + + return message + } + + /** + * Create a message for `reason` associated with the file. + * + * The `fatal` field of the message is set to `false` (warning; change may be + * needed) and the `file` field is set to the current file path. + * The message is added to the `messages` field on `file`. + * + * > 🪦 **Note**: also has obsolete signatures. + * + * @overload + * @param {string} reason + * @param {MessageOptions | null | undefined} [options] + * @returns {VFileMessage} + * + * @overload + * @param {string} reason + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {string} reason + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {string} reason + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Node | NodeLike | null | undefined} parent + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {Point | Position | null | undefined} place + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @overload + * @param {Error | VFileMessage} cause + * @param {string | null | undefined} [origin] + * @returns {VFileMessage} + * + * @param {Error | VFileMessage | string} causeOrReason + * Reason for message, should use markdown. + * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] + * Configuration (optional). + * @param {string | null | undefined} [origin] + * Place in code where the message originates (example: + * `'my-package:my-rule'` or `'my-rule'`). + * @returns {VFileMessage} + * Message. + */ + message(causeOrReason, optionsOrParentOrPlace, origin) { + const message = new VFileMessage( + // @ts-expect-error: the overloads are fine. + causeOrReason, + optionsOrParentOrPlace, + origin + ) -module.exports = unherit + if (this.path) { + message.name = this.path + ':' + message.name + message.file = this.path + } -// Create a custom constructor which can be modified without affecting the -// original class. -function unherit(Super) { - var result - var key - var value + message.fatal = false - inherits(Of, Super) - inherits(From, Of) + this.messages.push(message) - // Clone values. - result = Of.prototype + return message + } - for (key in result) { - value = result[key] + /** + * Serialize the file. + * + * > **Note**: which encodings are supported depends on the engine. + * > For info on Node.js, see: + * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>. + * + * @param {string | null | undefined} [encoding='utf8'] + * Character encoding to understand `value` as when it’s a `Uint8Array` + * (default: `'utf-8'`). + * @returns {string} + * Serialized file. + */ + toString(encoding) { + if (this.value === undefined) { + return '' + } - if (value && typeof value === 'object') { - result[key] = 'concat' in value ? value.concat() : xtend(value) + if (typeof this.value === 'string') { + return this.value } - } - return Of + const decoder = new TextDecoder(encoding || undefined) + return decoder.decode(this.value) + } +} - // Constructor accepting a single argument, which itself is an `arguments` - // object. - function From(parameters) { - return Super.apply(this, parameters) +/** + * Assert that `part` is not a path (as in, does not contain `path.sep`). + * + * @param {string | null | undefined} part + * File path part. + * @param {string} name + * Part name. + * @returns {undefined} + * Nothing. + */ +function assertPart(part, name) { + if (part && part.includes(external_node_path_namespaceObject.sep)) { + throw new Error( + '`' + name + '` cannot be a path: did not expect `' + external_node_path_namespaceObject.sep + '`' + ) } +} - // Constructor accepting variadic arguments. - function Of() { - if (!(this instanceof Of)) { - return new From(arguments) - } +/** + * Assert that `part` is not empty. + * + * @param {string | undefined} part + * Thing. + * @param {string} name + * Part name. + * @returns {asserts part is string} + * Nothing. + */ +function assertNonEmpty(part, name) { + if (!part) { + throw new Error('`' + name + '` cannot be empty') + } +} - return Super.apply(this, arguments) +/** + * Assert `path` exists. + * + * @param {string | undefined} path + * Path. + * @param {string} name + * Dependency name. + * @returns {asserts path is string} + * Nothing. + */ +function assertPath(path, name) { + if (!path) { + throw new Error('Setting `' + name + '` requires `path` to be set too') } } +/** + * Assert `value` is an `Uint8Array`. + * + * @param {unknown} value + * thing. + * @returns {value is Uint8Array} + * Whether `value` is an `Uint8Array`. + */ +function isUint8Array(value) { + return Boolean( + value && + typeof value === 'object' && + 'byteLength' in value && + 'byteOffset' in value + ) +} -/***/ }), +;// CONCATENATED MODULE: ./node_modules/unified/lib/callable-instance.js +const CallableInstance = + /** + * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result} + */ + ( + /** @type {unknown} */ + ( + /** + * @this {Function} + * @param {string | symbol} property + * @returns {(...parameters: Array<unknown>) => unknown} + */ + function (property) { + const self = this + const constr = self.constructor + const proto = /** @type {Record<string | symbol, Function>} */ ( + // Prototypes do exist. + // type-coverage:ignore-next-line + constr.prototype + ) + const value = proto[property] + /** @type {(...parameters: Array<unknown>) => unknown} */ + const apply = function () { + return value.apply(apply, arguments) + } + + Object.setPrototypeOf(apply, proto) + + // Not needed for us in `unified`: we only call this on the `copy` + // function, + // and we don't need to add its fields (`length`, `name`) + // over. + // See also: GH-246. + // const names = Object.getOwnPropertyNames(value) + // + // for (const p of names) { + // const descriptor = Object.getOwnPropertyDescriptor(value, p) + // if (descriptor) Object.defineProperty(apply, p, descriptor) + // } -/***/ 9507: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return apply + } + ) + ) -"use strict"; +;// CONCATENATED MODULE: ./node_modules/unified/lib/index.js +/** + * @typedef {import('trough').Pipeline} Pipeline + * + * @typedef {import('unist').Node} Node + * + * @typedef {import('vfile').Compatible} Compatible + * @typedef {import('vfile').Value} Value + * + * @typedef {import('../index.js').CompileResultMap} CompileResultMap + * @typedef {import('../index.js').Data} Data + * @typedef {import('../index.js').Settings} Settings + */ + +/** + * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults + * Acceptable results from compilers. + * + * To register custom results, add them to + * {@linkcode CompileResultMap}. + */ +/** + * @template {Node} [Tree=Node] + * The node that the compiler receives (default: `Node`). + * @template {CompileResults} [Result=CompileResults] + * The thing that the compiler yields (default: `CompileResults`). + * @callback Compiler + * A **compiler** handles the compiling of a syntax tree to something else + * (in most cases, text) (TypeScript type). + * + * It is used in the stringify phase and called with a {@linkcode Node} + * and {@linkcode VFile} representation of the document to compile. + * It should return the textual representation of the given tree (typically + * `string`). + * + * > **Note**: unified typically compiles by serializing: most compilers + * > return `string` (or `Uint8Array`). + * > Some compilers, such as the one configured with + * > [`rehype-react`][rehype-react], return other values (in this case, a + * > React tree). + * > If you’re using a compiler that doesn’t serialize, expect different + * > result values. + * > + * > To register custom results in TypeScript, add them to + * > {@linkcode CompileResultMap}. + * + * [rehype-react]: https://github.com/rehypejs/rehype-react + * @param {Tree} tree + * Tree to compile. + * @param {VFile} file + * File associated with `tree`. + * @returns {Result} + * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or + * something else (for `file.result`). + */ -var bail = __nccwpck_require__(2308) -var buffer = __nccwpck_require__(6324) -var extend = __nccwpck_require__(36005) -var plain = __nccwpck_require__(67337) -var trough = __nccwpck_require__(83520) -var vfile = __nccwpck_require__(67532) +/** + * @template {Node} [Tree=Node] + * The node that the parser yields (default: `Node`) + * @callback Parser + * A **parser** handles the parsing of text to a syntax tree. + * + * It is used in the parse phase and is called with a `string` and + * {@linkcode VFile} of the document to parse. + * It must return the syntax tree representation of the given file + * ({@linkcode Node}). + * @param {string} document + * Document to parse. + * @param {VFile} file + * File associated with `document`. + * @returns {Tree} + * Node representing the given file. + */ -// Expose a frozen processor. -module.exports = unified().freeze() +/** + * @typedef {( + * Plugin<Array<any>, any, any> | + * PluginTuple<Array<any>, any, any> | + * Preset + * )} Pluggable + * Union of the different ways to add plugins and settings. + */ -var slice = [].slice -var own = {}.hasOwnProperty +/** + * @typedef {Array<Pluggable>} PluggableList + * List of plugins and presets. + */ -// Process pipeline. -var pipeline = trough() - .use(pipelineParse) - .use(pipelineRun) - .use(pipelineStringify) +// Note: we can’t use `callback` yet as it messes up `this`: +// <https://github.com/microsoft/TypeScript/issues/55197>. +/** + * @template {Array<unknown>} [PluginParameters=[]] + * Arguments passed to the plugin (default: `[]`, the empty tuple). + * @template {Node | string | undefined} [Input=Node] + * Value that is expected as input (default: `Node`). + * + * * If the plugin returns a {@linkcode Transformer}, this + * should be the node it expects. + * * If the plugin sets a {@linkcode Parser}, this should be + * `string`. + * * If the plugin sets a {@linkcode Compiler}, this should be the + * node it expects. + * @template [Output=Input] + * Value that is yielded as output (default: `Input`). + * + * * If the plugin returns a {@linkcode Transformer}, this + * should be the node that that yields. + * * If the plugin sets a {@linkcode Parser}, this should be the + * node that it yields. + * * If the plugin sets a {@linkcode Compiler}, this should be + * result it yields. + * @typedef {( + * (this: Processor, ...parameters: PluginParameters) => + * Input extends string ? // Parser. + * Output extends Node | undefined ? undefined | void : never : + * Output extends CompileResults ? // Compiler. + * Input extends Node | undefined ? undefined | void : never : + * Transformer< + * Input extends Node ? Input : Node, + * Output extends Node ? Output : Node + * > | undefined | void + * )} Plugin + * Single plugin. + * + * Plugins configure the processors they are applied on in the following + * ways: + * + * * they change the processor, such as the parser, the compiler, or by + * configuring data + * * they specify how to handle trees and files + * + * In practice, they are functions that can receive options and configure the + * processor (`this`). + * + * > **Note**: plugins are called when the processor is *frozen*, not when + * > they are applied. + */ -function pipelineParse(p, ctx) { - ctx.tree = p.parse(ctx.file) -} +/** + * Tuple of a plugin and its configuration. + * + * The first item is a plugin, the rest are its parameters. + * + * @template {Array<unknown>} [TupleParameters=[]] + * Arguments passed to the plugin (default: `[]`, the empty tuple). + * @template {Node | string | undefined} [Input=undefined] + * Value that is expected as input (optional). + * + * * If the plugin returns a {@linkcode Transformer}, this + * should be the node it expects. + * * If the plugin sets a {@linkcode Parser}, this should be + * `string`. + * * If the plugin sets a {@linkcode Compiler}, this should be the + * node it expects. + * @template [Output=undefined] (optional). + * Value that is yielded as output. + * + * * If the plugin returns a {@linkcode Transformer}, this + * should be the node that that yields. + * * If the plugin sets a {@linkcode Parser}, this should be the + * node that it yields. + * * If the plugin sets a {@linkcode Compiler}, this should be + * result it yields. + * @typedef {( + * [ + * plugin: Plugin<TupleParameters, Input, Output>, + * ...parameters: TupleParameters + * ] + * )} PluginTuple + */ -function pipelineRun(p, ctx, next) { - p.run(ctx.tree, ctx.file, done) +/** + * @typedef Preset + * Sharable configuration. + * + * They can contain plugins and settings. + * @property {PluggableList | undefined} [plugins] + * List of plugins and presets (optional). + * @property {Settings | undefined} [settings] + * Shared settings for parsers and compilers (optional). + */ - function done(error, tree, file) { - if (error) { - next(error) - } else { - ctx.tree = tree - ctx.file = file - next() - } - } -} +/** + * @template {VFile} [File=VFile] + * The file that the callback receives (default: `VFile`). + * @callback ProcessCallback + * Callback called when the process is done. + * + * Called with either an error or a result. + * @param {Error | undefined} [error] + * Fatal error (optional). + * @param {File | undefined} [file] + * Processed file (optional). + * @returns {undefined} + * Nothing. + */ -function pipelineStringify(p, ctx) { - var result = p.stringify(ctx.tree, ctx.file) +/** + * @template {Node} [Tree=Node] + * The tree that the callback receives (default: `Node`). + * @callback RunCallback + * Callback called when transformers are done. + * + * Called with either an error or results. + * @param {Error | undefined} [error] + * Fatal error (optional). + * @param {Tree | undefined} [tree] + * Transformed tree (optional). + * @param {VFile | undefined} [file] + * File (optional). + * @returns {undefined} + * Nothing. + */ - if (result === undefined || result === null) { - // Empty. - } else if (typeof result === 'string' || buffer(result)) { - if ('value' in ctx.file) { - ctx.file.value = result - } +/** + * @template {Node} [Output=Node] + * Node type that the transformer yields (default: `Node`). + * @callback TransformCallback + * Callback passed to transforms. + * + * If the signature of a `transformer` accepts a third argument, the + * transformer may perform asynchronous operations, and must call it. + * @param {Error | undefined} [error] + * Fatal error to stop the process (optional). + * @param {Output | undefined} [tree] + * New, changed, tree (optional). + * @param {VFile | undefined} [file] + * New, changed, file (optional). + * @returns {undefined} + * Nothing. + */ - ctx.file.contents = result - } else { - ctx.file.result = result - } -} +/** + * @template {Node} [Input=Node] + * Node type that the transformer expects (default: `Node`). + * @template {Node} [Output=Input] + * Node type that the transformer yields (default: `Input`). + * @callback Transformer + * Transformers handle syntax trees and files. + * + * They are functions that are called each time a syntax tree and file are + * passed through the run phase. + * When an error occurs in them (either because it’s thrown, returned, + * rejected, or passed to `next`), the process stops. + * + * The run phase is handled by [`trough`][trough], see its documentation for + * the exact semantics of these functions. + * + * > **Note**: you should likely ignore `next`: don’t accept it. + * > it supports callback-style async work. + * > But promises are likely easier to reason about. + * + * [trough]: https://github.com/wooorm/trough#function-fninput-next + * @param {Input} tree + * Tree to handle. + * @param {VFile} file + * File to handle. + * @param {TransformCallback<Output>} next + * Callback. + * @returns {( + * Promise<Output | undefined | void> | + * Promise<never> | // For some reason this is needed separately. + * Output | + * Error | + * undefined | + * void + * )} + * If you accept `next`, nothing. + * Otherwise: + * + * * `Error` — fatal error to stop the process + * * `Promise<undefined>` or `undefined` — the next transformer keeps using + * same tree + * * `Promise<Node>` or `Node` — new, changed, tree + */ -// Function to create the first processor. -function unified() { - var attachers = [] - var transformers = trough() - var namespace = {} - var freezeIndex = -1 - var frozen +/** + * @template {Node | undefined} ParseTree + * Output of `parse`. + * @template {Node | undefined} HeadTree + * Input for `run`. + * @template {Node | undefined} TailTree + * Output for `run`. + * @template {Node | undefined} CompileTree + * Input of `stringify`. + * @template {CompileResults | undefined} CompileResult + * Output of `stringify`. + * @template {Node | string | undefined} Input + * Input of plugin. + * @template Output + * Output of plugin (optional). + * @typedef {( + * Input extends string + * ? Output extends Node | undefined + * ? // Parser. + * Processor< + * Output extends undefined ? ParseTree : Output, + * HeadTree, + * TailTree, + * CompileTree, + * CompileResult + * > + * : // Unknown. + * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> + * : Output extends CompileResults + * ? Input extends Node | undefined + * ? // Compiler. + * Processor< + * ParseTree, + * HeadTree, + * TailTree, + * Input extends undefined ? CompileTree : Input, + * Output extends undefined ? CompileResult : Output + * > + * : // Unknown. + * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> + * : Input extends Node | undefined + * ? Output extends Node | undefined + * ? // Transform. + * Processor< + * ParseTree, + * HeadTree extends undefined ? Input : HeadTree, + * Output extends undefined ? TailTree : Output, + * CompileTree, + * CompileResult + * > + * : // Unknown. + * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> + * : // Unknown. + * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> + * )} UsePlugin + * Create a processor based on the input/output of a {@link Plugin plugin}. + */ - // Data management. - processor.data = data +/** + * @template {CompileResults | undefined} Result + * Node type that the transformer yields. + * @typedef {( + * Result extends Value | undefined ? + * VFile : + * VFile & {result: Result} + * )} VFileWithOutput + * Type to generate a {@linkcode VFile} corresponding to a compiler result. + * + * If a result that is not acceptable on a `VFile` is used, that will + * be stored on the `result` field of {@linkcode VFile}. + */ - // Lock. - processor.freeze = freeze - // Plugins. - processor.attachers = attachers - processor.use = use - // API. - processor.parse = parse - processor.stringify = stringify - processor.run = run - processor.runSync = runSync - processor.process = process - processor.processSync = processSync - // Expose. - return processor - // Create a new processor based on the processor in the current scope. - function processor() { - var destination = unified() - var index = -1 - while (++index < attachers.length) { - destination.use.apply(null, attachers[index]) - } - destination.data(extend(true, {}, namespace)) - return destination - } - // Freeze: used to signal a processor that has finished configuration. - // - // For example, take unified itself: it’s frozen. - // Plugins should not be added to it. - // Rather, it should be extended, by invoking it, before modifying it. - // - // In essence, always invoke this when exporting a processor. - function freeze() { - var values - var transformer +// To do: next major: drop `Compiler`, `Parser`: prefer lowercase. - if (frozen) { - return processor - } +// To do: we could start yielding `never` in TS when a parser is missing and +// `parse` is called. +// Currently, we allow directly setting `processor.parser`, which is untyped. - while (++freezeIndex < attachers.length) { - values = attachers[freezeIndex] +const unified_lib_own = {}.hasOwnProperty - if (values[1] === false) { - continue - } +/** + * @template {Node | undefined} [ParseTree=undefined] + * Output of `parse` (optional). + * @template {Node | undefined} [HeadTree=undefined] + * Input for `run` (optional). + * @template {Node | undefined} [TailTree=undefined] + * Output for `run` (optional). + * @template {Node | undefined} [CompileTree=undefined] + * Input of `stringify` (optional). + * @template {CompileResults | undefined} [CompileResult=undefined] + * Output of `stringify` (optional). + * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>} + */ +class Processor extends CallableInstance { + /** + * Create a processor. + */ + constructor() { + // If `Processor()` is called (w/o new), `copy` is called instead. + super('copy') - if (values[1] === true) { - values[1] = undefined - } + /** + * Compiler to use (deprecated). + * + * @deprecated + * Use `compiler` instead. + * @type {( + * Compiler< + * CompileTree extends undefined ? Node : CompileTree, + * CompileResult extends undefined ? CompileResults : CompileResult + * > | + * undefined + * )} + */ + this.Compiler = undefined - transformer = values[0].apply(processor, values.slice(1)) + /** + * Parser to use (deprecated). + * + * @deprecated + * Use `parser` instead. + * @type {( + * Parser<ParseTree extends undefined ? Node : ParseTree> | + * undefined + * )} + */ + this.Parser = undefined - if (typeof transformer === 'function') { - transformers.use(transformer) - } + // Note: the following fields are considered private. + // However, they are needed for tests, and TSC generates an untyped + // `private freezeIndex` field for, which trips `type-coverage` up. + // Instead, we use `@deprecated` to visualize that they shouldn’t be used. + /** + * Internal list of configured plugins. + * + * @deprecated + * This is a private internal property and should not be used. + * @type {Array<PluginTuple<Array<unknown>>>} + */ + this.attachers = [] + + /** + * Compiler to use. + * + * @type {( + * Compiler< + * CompileTree extends undefined ? Node : CompileTree, + * CompileResult extends undefined ? CompileResults : CompileResult + * > | + * undefined + * )} + */ + this.compiler = undefined + + /** + * Internal state to track where we are while freezing. + * + * @deprecated + * This is a private internal property and should not be used. + * @type {number} + */ + this.freezeIndex = -1 + + /** + * Internal state to track whether we’re frozen. + * + * @deprecated + * This is a private internal property and should not be used. + * @type {boolean | undefined} + */ + this.frozen = undefined + + /** + * Internal state. + * + * @deprecated + * This is a private internal property and should not be used. + * @type {Data} + */ + this.namespace = {} + + /** + * Parser to use. + * + * @type {( + * Parser<ParseTree extends undefined ? Node : ParseTree> | + * undefined + * )} + */ + this.parser = undefined + + /** + * Internal list of configured transformers. + * + * @deprecated + * This is a private internal property and should not be used. + * @type {Pipeline} + */ + this.transformers = trough() + } + + /** + * Copy a processor. + * + * @deprecated + * This is a private internal method and should not be used. + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * New *unfrozen* processor ({@linkcode Processor}) that is + * configured to work the same as its ancestor. + * When the descendant processor is configured in the future it does not + * affect the ancestral processor. + */ + copy() { + // Cast as the type parameters will be the same after attaching. + const destination = + /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ ( + new Processor() + ) + let index = -1 + + while (++index < this.attachers.length) { + const attacher = this.attachers[index] + destination.use(...attacher) } - frozen = true - freezeIndex = Infinity + destination.data(extend(true, {}, this.namespace)) - return processor + return destination } - // Data management. - // Getter / setter for processor-specific informtion. - function data(key, value) { + /** + * Configure the processor with info available to all plugins. + * Information is stored in an object. + * + * Typically, options can be given to a specific plugin, but sometimes it + * makes sense to have information shared with several plugins. + * For example, a list of HTML elements that are self-closing, which is + * needed during all phases. + * + * > **Note**: setting information cannot occur on *frozen* processors. + * > Call the processor first to create a new unfrozen processor. + * + * > **Note**: to register custom data in TypeScript, augment the + * > {@linkcode Data} interface. + * + * @example + * This example show how to get and set info: + * + * ```js + * import {unified} from 'unified' + * + * const processor = unified().data('alpha', 'bravo') + * + * processor.data('alpha') // => 'bravo' + * + * processor.data() // => {alpha: 'bravo'} + * + * processor.data({charlie: 'delta'}) + * + * processor.data() // => {charlie: 'delta'} + * ``` + * + * @template {keyof Data} Key + * + * @overload + * @returns {Data} + * + * @overload + * @param {Data} dataset + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * + * @overload + * @param {Key} key + * @returns {Data[Key]} + * + * @overload + * @param {Key} key + * @param {Data[Key]} value + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * + * @param {Data | Key} [key] + * Key to get or set, or entire dataset to set, or nothing to get the + * entire dataset (optional). + * @param {Data[Key]} [value] + * Value to set (optional). + * @returns {unknown} + * The current processor when setting, the value at `key` when getting, or + * the entire dataset when getting without key. + */ + data(key, value) { if (typeof key === 'string') { // Set `key`. if (arguments.length === 2) { - assertUnfrozen('data', frozen) - namespace[key] = value - return processor + assertUnfrozen('data', this.frozen) + this.namespace[key] = value + return this } // Get `key`. - return (own.call(namespace, key) && namespace[key]) || null + return (unified_lib_own.call(this.namespace, key) && this.namespace[key]) || undefined } // Set space. if (key) { - assertUnfrozen('data', frozen) - namespace = key - return processor + assertUnfrozen('data', this.frozen) + this.namespace = key + return this } // Get space. - return namespace - } - - // Plugin management. - // - // Pass it: - // * an attacher and options, - // * a preset, - // * a list of presets, attachers, and arguments (list of attachers and - // options). - function use(value) { - var settings - - assertUnfrozen('use', frozen) - - if (value === null || value === undefined) { - // Empty. - } else if (typeof value === 'function') { - addPlugin.apply(null, arguments) - } else if (typeof value === 'object') { - if ('length' in value) { - addList(value) - } else { - addPreset(value) - } - } else { - throw new Error('Expected usable value, not `' + value + '`') - } - - if (settings) { - namespace.settings = extend(namespace.settings || {}, settings) - } - - return processor - - function addPreset(result) { - addList(result.plugins) - - if (result.settings) { - settings = extend(settings || {}, result.settings) + return this.namespace + } + + /** + * Freeze a processor. + * + * Frozen processors are meant to be extended and not to be configured + * directly. + * + * When a processor is frozen it cannot be unfrozen. + * New processors working the same way can be created by calling the + * processor. + * + * It’s possible to freeze processors explicitly by calling `.freeze()`. + * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`, + * `.stringify()`, `.process()`, or `.processSync()` are called. + * + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * The current processor. + */ + freeze() { + if (this.frozen) { + return this + } + + // Cast so that we can type plugins easier. + // Plugins are supposed to be usable on different processors, not just on + // this exact processor. + const self = /** @type {Processor} */ (/** @type {unknown} */ (this)) + + while (++this.freezeIndex < this.attachers.length) { + const [attacher, ...options] = this.attachers[this.freezeIndex] + + if (options[0] === false) { + continue } - } - function add(value) { - if (typeof value === 'function') { - addPlugin(value) - } else if (typeof value === 'object') { - if ('length' in value) { - addPlugin.apply(null, value) - } else { - addPreset(value) - } - } else { - throw new Error('Expected usable value, not `' + value + '`') + if (options[0] === true) { + options[0] = undefined } - } - - function addList(plugins) { - var index = -1 - if (plugins === null || plugins === undefined) { - // Empty. - } else if (typeof plugins === 'object' && 'length' in plugins) { - while (++index < plugins.length) { - add(plugins[index]) - } - } else { - throw new Error('Expected a list of plugins, not `' + plugins + '`') - } - } + const transformer = attacher.call(self, ...options) - function addPlugin(plugin, value) { - var entry = find(plugin) + if (typeof transformer === 'function') { + this.transformers.use(transformer) + } + } + + this.frozen = true + this.freezeIndex = Number.POSITIVE_INFINITY + + return this + } + + /** + * Parse text to a syntax tree. + * + * > **Note**: `parse` freezes the processor if not already *frozen*. + * + * > **Note**: `parse` performs the parse phase, not the run phase or other + * > phases. + * + * @param {Compatible | undefined} [file] + * file to parse (optional); typically `string` or `VFile`; any value + * accepted as `x` in `new VFile(x)`. + * @returns {ParseTree extends undefined ? Node : ParseTree} + * Syntax tree representing `file`. + */ + parse(file) { + this.freeze() + const realFile = vfile(file) + const parser = this.parser || this.Parser + assertParser('parse', parser) + return parser(String(realFile), realFile) + } + + /** + * Process the given file as configured on the processor. + * + * > **Note**: `process` freezes the processor if not already *frozen*. + * + * > **Note**: `process` performs the parse, run, and stringify phases. + * + * @overload + * @param {Compatible | undefined} file + * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done + * @returns {undefined} + * + * @overload + * @param {Compatible | undefined} [file] + * @returns {Promise<VFileWithOutput<CompileResult>>} + * + * @param {Compatible | undefined} [file] + * File (optional); typically `string` or `VFile`]; any value accepted as + * `x` in `new VFile(x)`. + * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done] + * Callback (optional). + * @returns {Promise<VFile> | undefined} + * Nothing if `done` is given. + * Otherwise a promise, rejected with a fatal error or resolved with the + * processed file. + * + * The parsed, transformed, and compiled value is available at + * `file.value` (see note). + * + * > **Note**: unified typically compiles by serializing: most + * > compilers return `string` (or `Uint8Array`). + * > Some compilers, such as the one configured with + * > [`rehype-react`][rehype-react], return other values (in this case, a + * > React tree). + * > If you’re using a compiler that doesn’t serialize, expect different + * > result values. + * > + * > To register custom results in TypeScript, add them to + * > {@linkcode CompileResultMap}. + * + * [rehype-react]: https://github.com/rehypejs/rehype-react + */ + process(file, done) { + const self = this + + this.freeze() + assertParser('process', this.parser || this.Parser) + assertCompiler('process', this.compiler || this.Compiler) + + return done ? executor(undefined, done) : new Promise(executor) + + // Note: `void`s needed for TS. + /** + * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve + * @param {(error: Error | undefined) => undefined | void} reject + * @returns {undefined} + */ + function executor(resolve, reject) { + const realFile = vfile(file) + // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the + // input of the first transform). + const parseTree = + /** @type {HeadTree extends undefined ? Node : HeadTree} */ ( + /** @type {unknown} */ (self.parse(realFile)) + ) - if (entry) { - if (plain(entry[1]) && plain(value)) { - value = extend(true, entry[1], value) + self.run(parseTree, realFile, function (error, tree, file) { + if (error || !tree || !file) { + return realDone(error) } - entry[1] = value - } else { - attachers.push(slice.call(arguments)) - } - } - } - - function find(plugin) { - var index = -1 - - while (++index < attachers.length) { - if (attachers[index][0] === plugin) { - return attachers[index] - } - } - } - - // Parse a file (in string or vfile representation) into a unist node using - // the `Parser` on the processor. - function parse(doc) { - var file = vfile(doc) - var Parser - - freeze() - Parser = processor.Parser - assertParser('parse', Parser) - - if (newable(Parser, 'parse')) { - return new Parser(String(file), file).parse() - } + // Assume `TailTree` (the output of the last transform) matches + // `CompileTree` (the input of the compiler). + const compileTree = + /** @type {CompileTree extends undefined ? Node : CompileTree} */ ( + /** @type {unknown} */ (tree) + ) - return Parser(String(file), file) // eslint-disable-line new-cap - } + const compileResult = self.stringify(compileTree, file) - // Run transforms on a unist node representation of a file (in string or - // vfile representation), async. - function run(node, file, cb) { - assertNode(node) - freeze() + if (looksLikeAValue(compileResult)) { + file.value = compileResult + } else { + file.result = compileResult + } - if (!cb && typeof file === 'function') { - cb = file - file = null - } + realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file)) + }) - if (!cb) { - return new Promise(executor) - } + /** + * @param {Error | undefined} error + * @param {VFileWithOutput<CompileResult> | undefined} [file] + * @returns {undefined} + */ + function realDone(error, file) { + if (error || !file) { + reject(error) + } else if (resolve) { + resolve(file) + } else { + default_ok(done, '`done` is defined if `resolve` is not') + done(undefined, file) + } + } + } + } + + /** + * Process the given file as configured on the processor. + * + * An error is thrown if asynchronous transforms are configured. + * + * > **Note**: `processSync` freezes the processor if not already *frozen*. + * + * > **Note**: `processSync` performs the parse, run, and stringify phases. + * + * @param {Compatible | undefined} [file] + * File (optional); typically `string` or `VFile`; any value accepted as + * `x` in `new VFile(x)`. + * @returns {VFileWithOutput<CompileResult>} + * The processed file. + * + * The parsed, transformed, and compiled value is available at + * `file.value` (see note). + * + * > **Note**: unified typically compiles by serializing: most + * > compilers return `string` (or `Uint8Array`). + * > Some compilers, such as the one configured with + * > [`rehype-react`][rehype-react], return other values (in this case, a + * > React tree). + * > If you’re using a compiler that doesn’t serialize, expect different + * > result values. + * > + * > To register custom results in TypeScript, add them to + * > {@linkcode CompileResultMap}. + * + * [rehype-react]: https://github.com/rehypejs/rehype-react + */ + processSync(file) { + /** @type {boolean} */ + let complete = false + /** @type {VFileWithOutput<CompileResult> | undefined} */ + let result + + this.freeze() + assertParser('processSync', this.parser || this.Parser) + assertCompiler('processSync', this.compiler || this.Compiler) + + this.process(file, realDone) + assertDone('processSync', 'process', complete) + default_ok(result, 'we either bailed on an error or have a tree') - executor(null, cb) + return result + /** + * @type {ProcessCallback<VFileWithOutput<CompileResult>>} + */ + function realDone(error, file) { + complete = true + bail(error) + result = file + } + } + + /** + * Run *transformers* on a syntax tree. + * + * > **Note**: `run` freezes the processor if not already *frozen*. + * + * > **Note**: `run` performs the run phase, not other phases. + * + * @overload + * @param {HeadTree extends undefined ? Node : HeadTree} tree + * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done + * @returns {undefined} + * + * @overload + * @param {HeadTree extends undefined ? Node : HeadTree} tree + * @param {Compatible | undefined} file + * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done + * @returns {undefined} + * + * @overload + * @param {HeadTree extends undefined ? Node : HeadTree} tree + * @param {Compatible | undefined} [file] + * @returns {Promise<TailTree extends undefined ? Node : TailTree>} + * + * @param {HeadTree extends undefined ? Node : HeadTree} tree + * Tree to transform and inspect. + * @param {( + * RunCallback<TailTree extends undefined ? Node : TailTree> | + * Compatible + * )} [file] + * File associated with `node` (optional); any value accepted as `x` in + * `new VFile(x)`. + * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done] + * Callback (optional). + * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined} + * Nothing if `done` is given. + * Otherwise, a promise rejected with a fatal error or resolved with the + * transformed tree. + */ + run(tree, file, done) { + assertNode(tree) + this.freeze() + + const transformers = this.transformers + + if (!done && typeof file === 'function') { + done = file + file = undefined + } + + return done ? executor(undefined, done) : new Promise(executor) + + // Note: `void`s needed for TS. + /** + * @param {( + * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) | + * undefined + * )} resolve + * @param {(error: Error) => undefined | void} reject + * @returns {undefined} + */ function executor(resolve, reject) { - transformers.run(node, vfile(file), done) + default_ok( + typeof file !== 'function', + '`file` can’t be a `done` anymore, we checked' + ) + const realFile = vfile(file) + transformers.run(tree, realFile, realDone) + + /** + * @param {Error | undefined} error + * @param {Node} outputTree + * @param {VFile} file + * @returns {undefined} + */ + function realDone(error, outputTree, file) { + const resultingTree = + /** @type {TailTree extends undefined ? Node : TailTree} */ ( + outputTree || tree + ) - function done(error, tree, file) { - tree = tree || node if (error) { reject(error) } else if (resolve) { - resolve(tree) + resolve(resultingTree) } else { - cb(null, tree, file) - } - } - } - } - - // Run transforms on a unist node representation of a file (in string or - // vfile representation), sync. - function runSync(node, file) { - var result - var complete - - run(node, file, done) + default_ok(done, '`done` is defined if `resolve` is not') + done(undefined, resultingTree, file) + } + } + } + } + + /** + * Run *transformers* on a syntax tree. + * + * An error is thrown if asynchronous transforms are configured. + * + * > **Note**: `runSync` freezes the processor if not already *frozen*. + * + * > **Note**: `runSync` performs the run phase, not other phases. + * + * @param {HeadTree extends undefined ? Node : HeadTree} tree + * Tree to transform and inspect. + * @param {Compatible | undefined} [file] + * File associated with `node` (optional); any value accepted as `x` in + * `new VFile(x)`. + * @returns {TailTree extends undefined ? Node : TailTree} + * Transformed tree. + */ + runSync(tree, file) { + /** @type {boolean} */ + let complete = false + /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */ + let result + + this.run(tree, file, realDone) assertDone('runSync', 'run', complete) - + default_ok(result, 'we either bailed on an error or have a tree') return result - function done(error, tree) { - complete = true - result = tree + /** + * @type {RunCallback<TailTree extends undefined ? Node : TailTree>} + */ + function realDone(error, tree) { bail(error) + result = tree + complete = true } } - // Stringify a unist node representation of a file (in string or vfile - // representation) into a string using the `Compiler` on the processor. - function stringify(node, doc) { - var file = vfile(doc) - var Compiler + /** + * Compile a syntax tree. + * + * > **Note**: `stringify` freezes the processor if not already *frozen*. + * + * > **Note**: `stringify` performs the stringify phase, not the run phase + * > or other phases. + * + * @param {CompileTree extends undefined ? Node : CompileTree} tree + * Tree to compile. + * @param {Compatible | undefined} [file] + * File associated with `node` (optional); any value accepted as `x` in + * `new VFile(x)`. + * @returns {CompileResult extends undefined ? Value : CompileResult} + * Textual representation of the tree (see note). + * + * > **Note**: unified typically compiles by serializing: most compilers + * > return `string` (or `Uint8Array`). + * > Some compilers, such as the one configured with + * > [`rehype-react`][rehype-react], return other values (in this case, a + * > React tree). + * > If you’re using a compiler that doesn’t serialize, expect different + * > result values. + * > + * > To register custom results in TypeScript, add them to + * > {@linkcode CompileResultMap}. + * + * [rehype-react]: https://github.com/rehypejs/rehype-react + */ + stringify(tree, file) { + this.freeze() + const realFile = vfile(file) + const compiler = this.compiler || this.Compiler + assertCompiler('stringify', compiler) + assertNode(tree) + + return compiler(tree, realFile) + } + + /** + * Configure the processor to use a plugin, a list of usable values, or a + * preset. + * + * If the processor is already using a plugin, the previous plugin + * configuration is changed based on the options that are passed in. + * In other words, the plugin is not added a second time. + * + * > **Note**: `use` cannot be called on *frozen* processors. + * > Call the processor first to create a new unfrozen processor. + * + * @example + * There are many ways to pass plugins to `.use()`. + * This example gives an overview: + * + * ```js + * import {unified} from 'unified' + * + * unified() + * // Plugin with options: + * .use(pluginA, {x: true, y: true}) + * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`): + * .use(pluginA, {y: false, z: true}) + * // Plugins: + * .use([pluginB, pluginC]) + * // Two plugins, the second with options: + * .use([pluginD, [pluginE, {}]]) + * // Preset with plugins and settings: + * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}}) + * // Settings only: + * .use({settings: {position: false}}) + * ``` + * + * @template {Array<unknown>} [Parameters=[]] + * @template {Node | string | undefined} [Input=undefined] + * @template [Output=Input] + * + * @overload + * @param {Preset | null | undefined} [preset] + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * + * @overload + * @param {PluggableList} list + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * + * @overload + * @param {Plugin<Parameters, Input, Output>} plugin + * @param {...(Parameters | [boolean])} parameters + * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>} + * + * @param {PluggableList | Plugin | Preset | null | undefined} value + * Usable value. + * @param {...unknown} parameters + * Parameters, when a plugin is given as a usable value. + * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} + * Current processor. + */ + use(value, ...parameters) { + const attachers = this.attachers + const namespace = this.namespace + + assertUnfrozen('use', this.frozen) - freeze() - Compiler = processor.Compiler - assertCompiler('stringify', Compiler) - assertNode(node) - - if (newable(Compiler, 'compile')) { - return new Compiler(node, file).compile() + if (value === null || value === undefined) { + // Empty. + } else if (typeof value === 'function') { + addPlugin(value, parameters) + } else if (typeof value === 'object') { + if (Array.isArray(value)) { + addList(value) + } else { + addPreset(value) + } + } else { + throw new TypeError('Expected usable value, not `' + value + '`') } - return Compiler(node, file) // eslint-disable-line new-cap - } - - // Parse a file (in string or vfile representation) into a unist node using - // the `Parser` on the processor, then run transforms on that node, and - // compile the resulting node using the `Compiler` on the processor, and - // store that result on the vfile. - function process(doc, cb) { - freeze() - assertParser('process', processor.Parser) - assertCompiler('process', processor.Compiler) + return this - if (!cb) { - return new Promise(executor) + /** + * @param {Pluggable} value + * @returns {undefined} + */ + function add(value) { + if (typeof value === 'function') { + addPlugin(value, []) + } else if (typeof value === 'object') { + if (Array.isArray(value)) { + const [plugin, ...parameters] = + /** @type {PluginTuple<Array<unknown>>} */ (value) + addPlugin(plugin, parameters) + } else { + addPreset(value) + } + } else { + throw new TypeError('Expected usable value, not `' + value + '`') + } } - executor(null, cb) - - function executor(resolve, reject) { - var file = vfile(doc) + /** + * @param {Preset} result + * @returns {undefined} + */ + function addPreset(result) { + if (!('plugins' in result) && !('settings' in result)) { + throw new Error( + 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither' + ) + } - pipeline.run(processor, {file: file}, done) + addList(result.plugins) - function done(error) { - if (error) { - reject(error) - } else if (resolve) { - resolve(file) - } else { - cb(null, file) - } + if (result.settings) { + namespace.settings = extend(true, namespace.settings, result.settings) } } - } - // Process the given document (in string or vfile representation), sync. - function processSync(doc) { - var file - var complete + /** + * @param {PluggableList | null | undefined} plugins + * @returns {undefined} + */ + function addList(plugins) { + let index = -1 - freeze() - assertParser('processSync', processor.Parser) - assertCompiler('processSync', processor.Compiler) - file = vfile(doc) + if (plugins === null || plugins === undefined) { + // Empty. + } else if (Array.isArray(plugins)) { + while (++index < plugins.length) { + const thing = plugins[index] + add(thing) + } + } else { + throw new TypeError('Expected a list of plugins, not `' + plugins + '`') + } + } - process(file, done) + /** + * @param {Plugin} plugin + * @param {Array<unknown>} parameters + * @returns {undefined} + */ + function addPlugin(plugin, parameters) { + let index = -1 + let entryIndex = -1 - assertDone('processSync', 'process', complete) + while (++index < attachers.length) { + if (attachers[index][0] === plugin) { + entryIndex = index + break + } + } - return file + if (entryIndex === -1) { + attachers.push([plugin, ...parameters]) + } + // Only set if there was at least a `primary` value, otherwise we’d change + // `arguments.length`. + else if (parameters.length > 0) { + let [primary, ...rest] = parameters + const currentPrimary = attachers[entryIndex][1] + if (isPlainObject(currentPrimary) && isPlainObject(primary)) { + primary = extend(true, currentPrimary, primary) + } - function done(error) { - complete = true - bail(error) + attachers[entryIndex] = [plugin, primary, ...rest] + } } } } -// Check if `value` is a constructor. -function newable(value, name) { - return ( - typeof value === 'function' && - value.prototype && - // A function with keys in its prototype is probably a constructor. - // Classes’ prototype methods are not enumerable, so we check if some value - // exists in the prototype. - (keys(value.prototype) || name in value.prototype) - ) -} - -// Check if `value` is an object with keys. -function keys(value) { - var key - for (key in value) { - return true - } - - return false -} +// Note: this returns a *callable* instance. +// That’s why it’s documented as a function. +/** + * Create a new processor. + * + * @example + * This example shows how a new processor can be created (from `remark`) and linked + * to **stdin**(4) and **stdout**(4). + * + * ```js + * import process from 'node:process' + * import concatStream from 'concat-stream' + * import {remark} from 'remark' + * + * process.stdin.pipe( + * concatStream(function (buf) { + * process.stdout.write(String(remark().processSync(buf))) + * }) + * ) + * ``` + * + * @returns + * New *unfrozen* processor (`processor`). + * + * This processor is configured to work the same as its ancestor. + * When the descendant processor is configured in the future it does not + * affect the ancestral processor. + */ +const unified = new Processor().freeze() -// Assert a parser is available. -function assertParser(name, Parser) { - if (typeof Parser !== 'function') { - throw new Error('Cannot `' + name + '` without `Parser`') +/** + * Assert a parser is available. + * + * @param {string} name + * @param {unknown} value + * @returns {asserts value is Parser} + */ +function assertParser(name, value) { + if (typeof value !== 'function') { + throw new TypeError('Cannot `' + name + '` without `parser`') } } -// Assert a compiler is available. -function assertCompiler(name, Compiler) { - if (typeof Compiler !== 'function') { - throw new Error('Cannot `' + name + '` without `Compiler`') +/** + * Assert a compiler is available. + * + * @param {string} name + * @param {unknown} value + * @returns {asserts value is Compiler} + */ +function assertCompiler(name, value) { + if (typeof value !== 'function') { + throw new TypeError('Cannot `' + name + '` without `compiler`') } } -// Assert the processor is not frozen. +/** + * Assert the processor is not frozen. + * + * @param {string} name + * @param {unknown} frozen + * @returns {asserts frozen is false} + */ function assertUnfrozen(name, frozen) { if (frozen) { throw new Error( - 'Cannot invoke `' + + 'Cannot call `' + name + - '` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.' + '` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.' ) } } -// Assert `node` is a unist node. +/** + * Assert `node` is a unist node. + * + * @param {unknown} node + * @returns {asserts node is Node} + */ function assertNode(node) { - if (!node || typeof node.type !== 'string') { - throw new Error('Expected node, got `' + node + '`') + // `isPlainObj` unfortunately uses `any` instead of `unknown`. + // type-coverage:ignore-next-line + if (!isPlainObject(node) || typeof node.type !== 'string') { + throw new TypeError('Expected node, got `' + node + '`') + // Fine. } } -// Assert that `complete` is `true`. +/** + * Assert that `complete` is `true`. + * + * @param {string} name + * @param {string} asyncName + * @param {unknown} complete + * @returns {asserts complete is true} + */ function assertDone(name, asyncName, complete) { if (!complete) { throw new Error( @@ -96870,5749 +59633,10771 @@ function assertDone(name, asyncName, complete) { } } +/** + * @param {Compatible | undefined} [value] + * @returns {VFile} + */ +function vfile(value) { + return looksLikeAVFile(value) ? value : new VFile(value) +} -/***/ }), - -/***/ 88308: -/***/ ((module) => { +/** + * @param {Compatible | undefined} [value] + * @returns {value is VFile} + */ +function looksLikeAVFile(value) { + return Boolean( + value && + typeof value === 'object' && + 'message' in value && + 'messages' in value + ) +} -"use strict"; +/** + * @param {unknown} [value] + * @returns {value is Value} + */ +function looksLikeAValue(value) { + return typeof value === 'string' || lib_isUint8Array(value) +} +/** + * Assert `value` is an `Uint8Array`. + * + * @param {unknown} value + * thing. + * @returns {value is Uint8Array} + * Whether `value` is an `Uint8Array`. + */ +function lib_isUint8Array(value) { + return Boolean( + value && + typeof value === 'object' && + 'byteLength' in value && + 'byteOffset' in value + ) +} -module.exports = convert +;// CONCATENATED MODULE: ./node_modules/remark/index.js +// Note: types exposed from `index.d.ts` -function convert(test) { - if (test == null) { - return ok - } - if (typeof test === 'string') { - return typeFactory(test) - } - if (typeof test === 'object') { - return 'length' in test ? anyFactory(test) : allFactory(test) - } - if (typeof test === 'function') { - return test - } +/** + * Create a new unified processor that already uses `remark-parse` and + * `remark-stringify`. + */ +const remark = unified().use(remarkParse).use(remarkStringify).freeze() - throw new Error('Expected function, string, or object as test') -} +;// CONCATENATED MODULE: ./node_modules/mdast-util-mdx-expression/lib/index.js +/** + * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle} from 'mdast-util-from-markdown' + * @import {MdxFlowExpression, MdxTextExpression} from 'mdast-util-mdx-expression' + * @import {Handle as ToMarkdownHandle, Options as ToMarkdownExtension, State} from 'mdast-util-to-markdown' + * @import {Parents} from 'mdast' + */ -// Utility assert each property in `test` is represented in `node`, and each -// values are strictly equal. -function allFactory(test) { - return all - function all(node) { - var key - for (key in test) { - if (node[key] !== test[key]) return false +/** + * Create an extension for `mdast-util-from-markdown` to enable MDX expressions + * in markdown. + * + * When using the micromark syntax extension with `addResult`, nodes will have + * a `data.estree` field set to an ESTree `Program` node. + * + * @returns {FromMarkdownExtension} + * Extension for `mdast-util-from-markdown` to enable MDX expressions. + */ +function mdxExpressionFromMarkdown() { + return { + enter: { + mdxFlowExpression: enterMdxFlowExpression, + mdxTextExpression: enterMdxTextExpression + }, + exit: { + mdxFlowExpression: exitMdxExpression, + mdxFlowExpressionChunk: exitMdxExpressionData, + mdxTextExpression: exitMdxExpression, + mdxTextExpressionChunk: exitMdxExpressionData } - - return true } } -function anyFactory(tests) { - var checks = [] - var index = -1 - - while (++index < tests.length) { - checks[index] = convert(tests[index]) +/** + * Create an extension for `mdast-util-to-markdown` to enable MDX expressions + * in markdown. + * + * @returns {ToMarkdownExtension} + * Extension for `mdast-util-to-markdown` to enable MDX expressions. + */ +function mdxExpressionToMarkdown() { + return { + handlers: { + mdxFlowExpression: handleMdxExpression, + mdxTextExpression: handleMdxExpression + }, + unsafe: [ + {character: '{', inConstruct: ['phrasing']}, + {atBreak: true, character: '{'} + ] } +} - return any - - function any() { - var index = -1 - - while (++index < checks.length) { - if (checks[index].apply(this, arguments)) { - return true - } - } +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function enterMdxFlowExpression(token) { + this.enter({type: 'mdxFlowExpression', value: ''}, token) + this.buffer() +} - return false - } +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function enterMdxTextExpression(token) { + this.enter({type: 'mdxTextExpression', value: ''}, token) + this.buffer() } -// Utility to convert a string into a function which checks a given node’s type -// for said string. -function typeFactory(test) { - return type +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function exitMdxExpression(token) { + const value = this.resume() + const estree = token.estree + const node = this.stack[this.stack.length - 1] + default_ok(node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') + this.exit(token) + node.value = value - function type(node) { - return Boolean(node && node.type === test) + if (estree) { + node.data = {estree} } } -// Utility to return true. -function ok() { - return true +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function exitMdxExpressionData(token) { + this.config.enter.data.call(this, token) + this.config.exit.data.call(this, token) } +/** + * @type {ToMarkdownHandle} + * @param {MdxFlowExpression | MdxTextExpression} node + * Node. + * @param {Parents | undefined} parent + * Parent, if any. + * @param {State} state + * Info passed around about the current state. + * @returns {string} + * Serialized markdown. + */ +function handleMdxExpression(node, parent, state) { + const value = node.value || '' + const result = state.indentLines(value, function (line, index, blank) { + // Tab-size to eat has to be the same as what we serialize as. + // While in some places in markdown that’s 4, in JS it’s more common as 2. + // Which is what’s also in `mdast-util-mdx-jsx`: + // <https://github.com/syntax-tree/mdast-util-mdx-jsx/blob/40b951b/lib/index.js#L52> + return (index === 0 || blank ? '' : ' ') + line + }) + return '{' + result + '}' +} -/***/ }), - -/***/ 84984: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var convert = __nccwpck_require__(88308) - -module.exports = is - -is.convert = convert - -// Assert if `test` passes for `node`. -// When a `parent` node is known the `index` of node should also be given. -function is(node, test, index, parent, context) { - var check = convert(test) +;// CONCATENATED MODULE: ./node_modules/ccount/index.js +/** + * Count how often a character (or substring) is used in a string. + * + * @param {string} value + * Value to search in. + * @param {string} character + * Character (or substring) to look for. + * @return {number} + * Number of times `character` occurred in `value`. + */ +function ccount(value, character) { + const source = String(value) - if ( - index != null && - (typeof index !== 'number' || index < 0 || index === Infinity) - ) { - throw new Error('Expected positive finite index') + if (typeof character !== 'string') { + throw new TypeError('Expected character') } - if (parent != null && (!is(parent) || !parent.children)) { - throw new Error('Expected parent node') - } + let count = 0 + let index = source.indexOf(character) - if ((parent == null) !== (index == null)) { - throw new Error('Expected both parent and index') + while (index !== -1) { + count++ + index = source.indexOf(character, index + character.length) } - return node && node.type && typeof node.type === 'string' - ? Boolean(check.call(context, node, index, parent)) - : false + return count } +;// CONCATENATED MODULE: ./node_modules/character-entities-legacy/index.js +/** + * List of legacy HTML named character references that don’t need a trailing semicolon. + * + * @type {Array<string>} + */ +const characterEntitiesLegacy = [ + 'AElig', + 'AMP', + 'Aacute', + 'Acirc', + 'Agrave', + 'Aring', + 'Atilde', + 'Auml', + 'COPY', + 'Ccedil', + 'ETH', + 'Eacute', + 'Ecirc', + 'Egrave', + 'Euml', + 'GT', + 'Iacute', + 'Icirc', + 'Igrave', + 'Iuml', + 'LT', + 'Ntilde', + 'Oacute', + 'Ocirc', + 'Ograve', + 'Oslash', + 'Otilde', + 'Ouml', + 'QUOT', + 'REG', + 'THORN', + 'Uacute', + 'Ucirc', + 'Ugrave', + 'Uuml', + 'Yacute', + 'aacute', + 'acirc', + 'acute', + 'aelig', + 'agrave', + 'amp', + 'aring', + 'atilde', + 'auml', + 'brvbar', + 'ccedil', + 'cedil', + 'cent', + 'copy', + 'curren', + 'deg', + 'divide', + 'eacute', + 'ecirc', + 'egrave', + 'eth', + 'euml', + 'frac12', + 'frac14', + 'frac34', + 'gt', + 'iacute', + 'icirc', + 'iexcl', + 'igrave', + 'iquest', + 'iuml', + 'laquo', + 'lt', + 'macr', + 'micro', + 'middot', + 'nbsp', + 'not', + 'ntilde', + 'oacute', + 'ocirc', + 'ograve', + 'ordf', + 'ordm', + 'oslash', + 'otilde', + 'ouml', + 'para', + 'plusmn', + 'pound', + 'quot', + 'raquo', + 'reg', + 'sect', + 'shy', + 'sup1', + 'sup2', + 'sup3', + 'szlig', + 'thorn', + 'times', + 'uacute', + 'ucirc', + 'ugrave', + 'uml', + 'uuml', + 'yacute', + 'yen', + 'yuml' +] -/***/ }), - -/***/ 60299: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var visit = __nccwpck_require__(47982) - -module.exports = removePosition - -function removePosition(node, force) { - visit(node, force ? hard : soft) - return node -} - -function hard(node) { - delete node.position -} +;// CONCATENATED MODULE: ./node_modules/character-reference-invalid/index.js +/** + * Map of invalid numeric character references to their replacements, according to HTML. + * + * @type {Record<number, string>} + */ +const characterReferenceInvalid = { + 0: '�', + 128: '€', + 130: '‚', + 131: 'ƒ', + 132: '„', + 133: '…', + 134: '†', + 135: '‡', + 136: 'ˆ', + 137: '‰', + 138: 'Š', + 139: '‹', + 140: 'Œ', + 142: 'Ž', + 145: '‘', + 146: '’', + 147: '“', + 148: '”', + 149: '•', + 150: '–', + 151: '—', + 152: '˜', + 153: '™', + 154: 'š', + 155: '›', + 156: 'œ', + 158: 'ž', + 159: 'Ÿ' +} + +;// CONCATENATED MODULE: ./node_modules/is-decimal/index.js +/** + * Check if the given character code, or the character code at the first + * character, is decimal. + * + * @param {string|number} character + * @returns {boolean} Whether `character` is a decimal + */ +function isDecimal(character) { + const code = + typeof character === 'string' ? character.charCodeAt(0) : character -function soft(node) { - node.position = undefined + return code >= 48 && code <= 57 /* 0-9 */ } +;// CONCATENATED MODULE: ./node_modules/is-hexadecimal/index.js +/** + * Check if the given character code, or the character code at the first + * character, is hexadecimal. + * + * @param {string|number} character + * @returns {boolean} Whether `character` is hexadecimal + */ +function isHexadecimal(character) { + const code = + typeof character === 'string' ? character.charCodeAt(0) : character -/***/ }), - -/***/ 63427: -/***/ ((module) => { - -module.exports = color -function color(d) { - return '\u001B[33m' + d + '\u001B[39m' + return ( + (code >= 97 /* a */ && code <= 102) /* z */ || + (code >= 65 /* A */ && code <= 70) /* Z */ || + (code >= 48 /* A */ && code <= 57) /* Z */ + ) } +;// CONCATENATED MODULE: ./node_modules/is-alphabetical/index.js +/** + * Check if the given character code, or the character code at the first + * character, is alphabetical. + * + * @param {string|number} character + * @returns {boolean} Whether `character` is alphabetical. + */ +function isAlphabetical(character) { + const code = + typeof character === 'string' ? character.charCodeAt(0) : character -/***/ }), - -/***/ 3117: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -module.exports = visitParents - -var convert = __nccwpck_require__(88308) -var color = __nccwpck_require__(63427) - -var CONTINUE = true -var SKIP = 'skip' -var EXIT = false - -visitParents.CONTINUE = CONTINUE -visitParents.SKIP = SKIP -visitParents.EXIT = EXIT - -function visitParents(tree, test, visitor, reverse) { - var step - var is - - if (typeof test === 'function' && typeof visitor !== 'function') { - reverse = visitor - visitor = test - test = null - } - - is = convert(test) - step = reverse ? -1 : 1 + return ( + (code >= 97 && code <= 122) /* a-z */ || + (code >= 65 && code <= 90) /* A-Z */ + ) +} - factory(tree, null, [])() +;// CONCATENATED MODULE: ./node_modules/is-alphanumerical/index.js - function factory(node, index, parents) { - var value = typeof node === 'object' && node !== null ? node : {} - var name - if (typeof value.type === 'string') { - name = - typeof value.tagName === 'string' - ? value.tagName - : typeof value.name === 'string' - ? value.name - : undefined - visit.displayName = - 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')' - } +/** + * Check if the given character code, or the character code at the first + * character, is alphanumerical. + * + * @param {string|number} character + * @returns {boolean} Whether `character` is alphanumerical. + */ +function isAlphanumerical(character) { + return isAlphabetical(character) || isDecimal(character) +} - return visit +;// CONCATENATED MODULE: ./node_modules/parse-entities/lib/index.js +/** + * @import {Point} from 'unist' + * @import {Options} from '../index.js' + */ - function visit() { - var grandparents = parents.concat(node) - var result = [] - var subresult - var offset - if (!test || is(node, index, parents[parents.length - 1] || null)) { - result = toResult(visitor(node, parents)) - if (result[0] === EXIT) { - return result - } - } - if (node.children && result[0] !== SKIP) { - offset = (reverse ? node.children.length : -1) + step - while (offset > -1 && offset < node.children.length) { - subresult = factory(node.children[offset], offset, grandparents)() - if (subresult[0] === EXIT) { - return subresult - } - offset = - typeof subresult[1] === 'number' ? subresult[1] : offset + step - } - } - return result - } - } -} +// Warning messages. +const messages = [ + '', + /* 1: Non terminated (named) */ + 'Named character references must be terminated by a semicolon', + /* 2: Non terminated (numeric) */ + 'Numeric character references must be terminated by a semicolon', + /* 3: Empty (named) */ + 'Named character references cannot be empty', + /* 4: Empty (numeric) */ + 'Numeric character references cannot be empty', + /* 5: Unknown (named) */ + 'Named character references must be known', + /* 6: Disallowed (numeric) */ + 'Numeric character references cannot be disallowed', + /* 7: Prohibited (numeric) */ + 'Numeric character references cannot be outside the permissible Unicode range' +] -function toResult(value) { - if (value !== null && typeof value === 'object' && 'length' in value) { - return value - } +/** + * Parse HTML character references. + * + * @param {string} value + * @param {Readonly<Options> | null | undefined} [options] + */ +function parseEntities(value, options) { + const settings = options || {} + const additional = + typeof settings.additional === 'string' + ? settings.additional.charCodeAt(0) + : settings.additional + /** @type {Array<string>} */ + const result = [] + let index = 0 + let lines = -1 + let queue = '' + /** @type {Point | undefined} */ + let point + /** @type {Array<number>|undefined} */ + let indent - if (typeof value === 'number') { - return [CONTINUE, value] + if (settings.position) { + if ('start' in settings.position || 'indent' in settings.position) { + // @ts-expect-error: points don’t have indent. + indent = settings.position.indent + // @ts-expect-error: points don’t have indent. + point = settings.position.start + } else { + point = settings.position + } } - return [value] -} - - -/***/ }), + let line = (point ? point.line : 0) || 1 + let column = (point ? point.column : 0) || 1 -/***/ 47982: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Cache the current point. + let previous = now() + /** @type {number|undefined} */ + let character -"use strict"; + // Ensure the algorithm walks over the first character (inclusive). + index-- + while (++index <= value.length) { + // If the previous character was a newline. + if (character === 10 /* `\n` */) { + column = (indent ? indent[lines] : 0) || 1 + } -module.exports = visit + character = value.charCodeAt(index) -var visitParents = __nccwpck_require__(3117) + if (character === 38 /* `&` */) { + const following = value.charCodeAt(index + 1) -var CONTINUE = visitParents.CONTINUE -var SKIP = visitParents.SKIP -var EXIT = visitParents.EXIT + // The behavior depends on the identity of the next character. + if ( + following === 9 /* `\t` */ || + following === 10 /* `\n` */ || + following === 12 /* `\f` */ || + following === 32 /* ` ` */ || + following === 38 /* `&` */ || + following === 60 /* `<` */ || + Number.isNaN(following) || + (additional && following === additional) + ) { + // Not a character reference. + // No characters are consumed, and nothing is returned. + // This is not an error, either. + queue += String.fromCharCode(character) + column++ + continue + } -visit.CONTINUE = CONTINUE -visit.SKIP = SKIP -visit.EXIT = EXIT + const start = index + 1 + let begin = start + let end = start + /** @type {string} */ + let type -function visit(tree, test, visitor, reverse) { - if (typeof test === 'function' && typeof visitor !== 'function') { - reverse = visitor - visitor = test - test = null - } + if (following === 35 /* `#` */) { + // Numerical reference. + end = ++begin - visitParents(tree, test, overload, reverse) + // The behavior further depends on the next character. + const following = value.charCodeAt(end) - function overload(node, parents) { - var parent = parents[parents.length - 1] - var index = parent ? parent.children.indexOf(node) : null - return visitor(node, index, parent) - } -} + if (following === 88 /* `X` */ || following === 120 /* `x` */) { + // ASCII hexadecimal digits. + type = 'hexadecimal' + end = ++begin + } else { + // ASCII decimal digits. + type = 'decimal' + } + } else { + // Named reference. + type = 'named' + } + + let characterReferenceCharacters = '' + let characterReference = '' + let characters = '' + // Each type of character reference accepts different characters. + // This test is used to detect whether a reference has ended (as the semicolon + // is not strictly needed). + const test = + type === 'named' + ? isAlphanumerical + : type === 'decimal' + ? isDecimal + : isHexadecimal + end-- -/***/ }), + while (++end <= value.length) { + const following = value.charCodeAt(end) -/***/ 49209: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!test(following)) { + break + } + characters += String.fromCharCode(following) -/** - * For Node.js, simply re-export the core `util.deprecate` function. - */ + // Check if we can match a legacy named reference. + // If so, we cache that as the last viable named reference. + // This ensures we do not need to walk backwards later. + if (type === 'named' && characterEntitiesLegacy.includes(characters)) { + characterReferenceCharacters = characters + // @ts-expect-error: always able to decode. + characterReference = decodeNamedCharacterReference(characters) + } + } -module.exports = __nccwpck_require__(73837).deprecate; + let terminated = value.charCodeAt(end) === 59 /* `;` */ + if (terminated) { + end++ -/***/ }), + const namedReference = + type === 'named' ? decodeNamedCharacterReference(characters) : false -/***/ 91972: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (namedReference) { + characterReferenceCharacters = characters + characterReference = namedReference + } + } -"use strict"; + let diff = 1 + end - start + let reference = '' + if (!terminated && settings.nonTerminated === false) { + // Empty. + } else if (!characters) { + // An empty (possible) reference is valid, unless it’s numeric (thus an + // ampersand followed by an octothorp). + if (type !== 'named') { + warning(4 /* Empty (numeric) */, diff) + } + } else if (type === 'named') { + // An ampersand followed by anything unknown, and not terminated, is + // invalid. + if (terminated && !characterReference) { + warning(5 /* Unknown (named) */, 1) + } else { + // If there’s something after an named reference which is not known, + // cap the reference. + if (characterReferenceCharacters !== characters) { + end = begin + characterReferenceCharacters.length + diff = 1 + end - begin + terminated = false + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "v1", ({ - enumerable: true, - get: function () { - return _v.default; - } -})); -Object.defineProperty(exports, "v3", ({ - enumerable: true, - get: function () { - return _v2.default; - } -})); -Object.defineProperty(exports, "v4", ({ - enumerable: true, - get: function () { - return _v3.default; - } -})); -Object.defineProperty(exports, "v5", ({ - enumerable: true, - get: function () { - return _v4.default; - } -})); -Object.defineProperty(exports, "NIL", ({ - enumerable: true, - get: function () { - return _nil.default; - } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _version.default; - } -})); -Object.defineProperty(exports, "validate", ({ - enumerable: true, - get: function () { - return _validate.default; - } -})); -Object.defineProperty(exports, "stringify", ({ - enumerable: true, - get: function () { - return _stringify.default; - } -})); -Object.defineProperty(exports, "parse", ({ - enumerable: true, - get: function () { - return _parse.default; - } -})); + // If the reference is not terminated, warn. + if (!terminated) { + const reason = characterReferenceCharacters + ? 1 /* Non terminated (named) */ + : 3 /* Empty (named) */ -var _v = _interopRequireDefault(__nccwpck_require__(71265)); + if (settings.attribute) { + const following = value.charCodeAt(end) -var _v2 = _interopRequireDefault(__nccwpck_require__(95203)); + if (following === 61 /* `=` */) { + warning(reason, diff) + characterReference = '' + } else if (isAlphanumerical(following)) { + characterReference = '' + } else { + warning(reason, diff) + } + } else { + warning(reason, diff) + } + } + } -var _v3 = _interopRequireDefault(__nccwpck_require__(41222)); + reference = characterReference + } else { + if (!terminated) { + // All nonterminated numeric references are not rendered, and emit a + // warning. + warning(2 /* Non terminated (numeric) */, diff) + } -var _v4 = _interopRequireDefault(__nccwpck_require__(56193)); + // When terminated and numerical, parse as either hexadecimal or + // decimal. + let referenceCode = Number.parseInt( + characters, + type === 'hexadecimal' ? 16 : 10 + ) -var _nil = _interopRequireDefault(__nccwpck_require__(2110)); + // Emit a warning when the parsed number is prohibited, and replace with + // replacement character. + if (prohibited(referenceCode)) { + warning(7 /* Prohibited (numeric) */, diff) + reference = String.fromCharCode(65533 /* `�` */) + } else if (referenceCode in characterReferenceInvalid) { + // Emit a warning when the parsed number is disallowed, and replace by + // an alternative. + warning(6 /* Disallowed (numeric) */, diff) + reference = characterReferenceInvalid[referenceCode] + } else { + // Parse the number. + let output = '' -var _version = _interopRequireDefault(__nccwpck_require__(15988)); + // Emit a warning when the parsed number should not be used. + if (disallowed(referenceCode)) { + warning(6 /* Disallowed (numeric) */, diff) + } -var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + // Serialize the number. + if (referenceCode > 0xffff) { + referenceCode -= 0x10000 + output += String.fromCharCode( + (referenceCode >>> (10 & 0x3ff)) | 0xd800 + ) + referenceCode = 0xdc00 | (referenceCode & 0x3ff) + } -var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); + reference = output + String.fromCharCode(referenceCode) + } + } -var _parse = _interopRequireDefault(__nccwpck_require__(24713)); + // Found it! + // First eat the queued characters as normal text, then eat a reference. + if (reference) { + flush() -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + previous = now() + index = end - 1 + column += end - start + 1 + result.push(reference) + const next = now() + next.offset++ -/***/ }), + if (settings.reference) { + settings.reference.call( + settings.referenceContext || undefined, + reference, + {start: previous, end: next}, + value.slice(start - 1, end) + ) + } -/***/ 88374: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + previous = next + } else { + // If we could not find a reference, queue the checked characters (as + // normal characters), and move the pointer to their end. + // This is possible because we can be certain neither newlines nor + // ampersands are included. + characters = value.slice(start - 1, end) + queue += characters + column += characters.length + index = end - 1 + } + } else { + // Handle anything other than an ampersand, including newlines and EOF. + if (character === 10 /* `\n` */) { + line++ + lines++ + column = 0 + } -"use strict"; + if (Number.isNaN(character)) { + flush() + } else { + queue += String.fromCharCode(character) + column++ + } + } + } + // Return the reduced nodes. + return result.join('') -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // Get current position. + function now() { + return { + line, + column, + offset: index + ((point ? point.offset : 0) || 0) + } + } + + /** + * Handle the warning. + * + * @param {1|2|3|4|5|6|7} code + * @param {number} offset + */ + function warning(code, offset) { + /** @type {ReturnType<now>} */ + let position + + if (settings.warning) { + position = now() + position.column += offset + position.offset += offset + + settings.warning.call( + settings.warningContext || undefined, + messages[code], + position, + code + ) + } + } -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + /** + * Flush `queue` (normal text). + * Macro invoked before each reference and at the end of `value`. + * Does nothing when `queue` is empty. + */ + function flush() { + if (queue) { + result.push(queue) -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (settings.text) { + settings.text.call(settings.textContext || undefined, queue, { + start: previous, + end: now() + }) + } -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); + queue = '' + } } +} - return _crypto.default.createHash('md5').update(bytes).digest(); +/** + * Check if `character` is outside the permissible unicode range. + * + * @param {number} code + * @returns {boolean} + */ +function prohibited(code) { + return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff } -var _default = md5; -exports["default"] = _default; +/** + * Check if `character` is disallowed. + * + * @param {number} code + * @returns {boolean} + */ +function disallowed(code) { + return ( + (code >= 0x0001 && code <= 0x0008) || + code === 0x000b || + (code >= 0x000d && code <= 0x001f) || + (code >= 0x007f && code <= 0x009f) || + (code >= 0xfdd0 && code <= 0xfdef) || + (code & 0xffff) === 0xffff || + (code & 0xffff) === 0xfffe + ) +} -/***/ }), +;// CONCATENATED MODULE: ./node_modules/stringify-entities/lib/core.js +/** + * @typedef CoreOptions + * @property {ReadonlyArray<string>} [subset=[]] + * Whether to only escape the given subset of characters. + * @property {boolean} [escapeOnly=false] + * Whether to only escape possibly dangerous characters. + * Those characters are `"`, `&`, `'`, `<`, `>`, and `` ` ``. + * + * @typedef FormatOptions + * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format + * Format strategy. + * + * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions + */ -/***/ 2110: -/***/ ((__unused_webpack_module, exports) => { +const defaultSubsetRegex = /["&'<>`]/g +const surrogatePairsRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g +const controlCharactersRegex = + // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape + /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g +const regexEscapeRegex = /[|\\{}()[\]^$+*?.]/g -"use strict"; +/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */ +const subsetToRegexCache = new WeakMap() +/** + * Encode certain characters in `value`. + * + * @param {string} value + * @param {CoreWithFormatOptions} options + * @returns {string} + */ +function core_core(value, options) { + value = value.replace( + options.subset + ? charactersToExpressionCached(options.subset) + : defaultSubsetRegex, + basic + ) -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports["default"] = _default; + if (options.subset || options.escapeOnly) { + return value + } -/***/ }), + return ( + value + // Surrogate pairs. + .replace(surrogatePairsRegex, surrogate) + // BMP control characters (C0 except for LF, CR, SP; DEL; and some more + // non-ASCII ones). + .replace(controlCharactersRegex, basic) + ) -/***/ 24713: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + /** + * @param {string} pair + * @param {number} index + * @param {string} all + */ + function surrogate(pair, index, all) { + return options.format( + (pair.charCodeAt(0) - 0xd800) * 0x400 + + pair.charCodeAt(1) - + 0xdc00 + + 0x10000, + all.charCodeAt(index + 2), + options + ) + } -"use strict"; + /** + * @param {string} character + * @param {number} index + * @param {string} all + */ + function basic(character, index, all) { + return options.format( + character.charCodeAt(0), + all.charCodeAt(index + 1), + options + ) + } +} +/** + * A wrapper function that caches the result of `charactersToExpression` with a WeakMap. + * This can improve performance when tooling calls `charactersToExpression` repeatedly + * with the same subset. + * + * @param {ReadonlyArray<string>} subset + * @returns {RegExp} + */ +function charactersToExpressionCached(subset) { + let cached = subsetToRegexCache.get(subset) -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (!cached) { + cached = charactersToExpression(subset) + subsetToRegexCache.set(subset, cached) + } -var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + return cached +} -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/** + * @param {ReadonlyArray<string>} subset + * @returns {RegExp} + */ +function charactersToExpression(subset) { + /** @type {Array<string>} */ + const groups = [] + let index = -1 -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); + while (++index < subset.length) { + groups.push(subset[index].replace(regexEscapeRegex, '\\$&')) } - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ + return new RegExp('(?:' + groups.join('|') + ')', 'g') +} - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ +;// CONCATENATED MODULE: ./node_modules/stringify-entities/lib/util/format-basic.js +/** + * The smallest way to encode a character. + * + * @param {number} code + * @returns {string} + */ +function formatBasic(code) { + return '&#x' + code.toString(16).toUpperCase() + ';' +} - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ +;// CONCATENATED MODULE: ./node_modules/stringify-entities/lib/index.js +/** + * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options + * @typedef {import('./core.js').CoreOptions} LightOptions + */ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} -var _default = parse; -exports["default"] = _default; -/***/ }), -/***/ 55496: -/***/ ((__unused_webpack_module, exports) => { +/** + * Encode special characters in `value`. + * + * @param {string} value + * Value to encode. + * @param {Options} [options] + * Configuration. + * @returns {string} + * Encoded value. + */ +function stringifyEntities(value, options) { + return core(value, Object.assign({format: formatSmart}, options)) +} -"use strict"; +/** + * Encode special characters in `value` as hexadecimals. + * + * @param {string} value + * Value to encode. + * @param {LightOptions} [options] + * Configuration. + * @returns {string} + * Encoded value. + */ +function stringifyEntitiesLight(value, options) { + return core_core(value, Object.assign({format: formatBasic}, options)) +} +;// CONCATENATED MODULE: ./node_modules/mdast-util-mdx-jsx/lib/index.js +/** + * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, OnEnterError, OnExitError, Token} from 'mdast-util-from-markdown' + * @import {Handle as ToMarkdownHandle, Options as ToMarkdownExtension, State, Tracker} from 'mdast-util-to-markdown' + * @import {Point} from 'unist' + * @import {MdxJsxAttribute, MdxJsxAttributeValueExpression, MdxJsxExpressionAttribute, MdxJsxFlowElement, MdxJsxTextElement} from '../index.js' + */ -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; -exports["default"] = _default; +/** + * @typedef Tag + * Single tag. + * @property {string | undefined} name + * Name of tag, or `undefined` for fragment. + * + * > 👉 **Note**: `null` is used in the AST for fragments, as it serializes in + * > JSON. + * @property {Array<MdxJsxAttribute | MdxJsxExpressionAttribute>} attributes + * Attributes. + * @property {boolean} close + * Whether the tag is closing (`</x>`). + * @property {boolean} selfClosing + * Whether the tag is self-closing (`<x/>`). + * @property {Token['start']} start + * Start point. + * @property {Token['start']} end + * End point. + * + * @typedef ToMarkdownOptions + * Configuration. + * @property {'"' | "'" | null | undefined} [quote='"'] + * Preferred quote to use around attribute values (default: `'"'`). + * @property {boolean | null | undefined} [quoteSmart=false] + * Use the other quote if that results in less bytes (default: `false`). + * @property {boolean | null | undefined} [tightSelfClosing=false] + * Do not use an extra space when closing self-closing elements: `<img/>` + * instead of `<img />` (default: `false`). + * @property {number | null | undefined} [printWidth=Infinity] + * Try and wrap syntax at this width (default: `Infinity`). + * + * When set to a finite number (say, `80`), the formatter will print + * attributes on separate lines when a tag doesn’t fit on one line. + * The normal behavior is to print attributes with spaces between them + * instead of line endings. + */ -/***/ }), -/***/ 72127: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rng; -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +const indent = ' ' -let poolPtr = rnds8Pool.length; +/** + * Create an extension for `mdast-util-from-markdown` to enable MDX JSX. + * + * @returns {FromMarkdownExtension} + * Extension for `mdast-util-from-markdown` to enable MDX JSX. + * + * When using the syntax extension with `addResult`, nodes will have a + * `data.estree` field set to an ESTree `Program` node. + */ +function mdxJsxFromMarkdown() { + return { + canContainEols: ['mdxJsxTextElement'], + enter: { + mdxJsxFlowTag: enterMdxJsxTag, + mdxJsxFlowTagClosingMarker: enterMdxJsxTagClosingMarker, + mdxJsxFlowTagAttribute: enterMdxJsxTagAttribute, + mdxJsxFlowTagExpressionAttribute: enterMdxJsxTagExpressionAttribute, + mdxJsxFlowTagAttributeValueLiteral: buffer, + mdxJsxFlowTagAttributeValueExpression: buffer, + mdxJsxFlowTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker, + + mdxJsxTextTag: enterMdxJsxTag, + mdxJsxTextTagClosingMarker: enterMdxJsxTagClosingMarker, + mdxJsxTextTagAttribute: enterMdxJsxTagAttribute, + mdxJsxTextTagExpressionAttribute: enterMdxJsxTagExpressionAttribute, + mdxJsxTextTagAttributeValueLiteral: buffer, + mdxJsxTextTagAttributeValueExpression: buffer, + mdxJsxTextTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker + }, + exit: { + mdxJsxFlowTagClosingMarker: exitMdxJsxTagClosingMarker, + mdxJsxFlowTagNamePrimary: exitMdxJsxTagNamePrimary, + mdxJsxFlowTagNameMember: exitMdxJsxTagNameMember, + mdxJsxFlowTagNameLocal: exitMdxJsxTagNameLocal, + mdxJsxFlowTagExpressionAttribute: exitMdxJsxTagExpressionAttribute, + mdxJsxFlowTagExpressionAttributeValue: data, + mdxJsxFlowTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary, + mdxJsxFlowTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal, + mdxJsxFlowTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral, + mdxJsxFlowTagAttributeValueLiteralValue: data, + mdxJsxFlowTagAttributeValueExpression: + exitMdxJsxTagAttributeValueExpression, + mdxJsxFlowTagAttributeValueExpressionValue: data, + mdxJsxFlowTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker, + mdxJsxFlowTag: exitMdxJsxTag, + + mdxJsxTextTagClosingMarker: exitMdxJsxTagClosingMarker, + mdxJsxTextTagNamePrimary: exitMdxJsxTagNamePrimary, + mdxJsxTextTagNameMember: exitMdxJsxTagNameMember, + mdxJsxTextTagNameLocal: exitMdxJsxTagNameLocal, + mdxJsxTextTagExpressionAttribute: exitMdxJsxTagExpressionAttribute, + mdxJsxTextTagExpressionAttributeValue: data, + mdxJsxTextTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary, + mdxJsxTextTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal, + mdxJsxTextTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral, + mdxJsxTextTagAttributeValueLiteralValue: data, + mdxJsxTextTagAttributeValueExpression: + exitMdxJsxTagAttributeValueExpression, + mdxJsxTextTagAttributeValueExpressionValue: data, + mdxJsxTextTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker, + mdxJsxTextTag: exitMdxJsxTag + } + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function buffer() { + this.buffer() + } + + /** + * Copy a point-like value. + * + * @param {Point} d + * Point-like value. + * @returns {Point} + * unist point. + */ + function point(d) { + return {line: d.line, column: d.column, offset: d.offset} + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function data(token) { + this.config.enter.data.call(this, token) + this.config.exit.data.call(this, token) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function enterMdxJsxTag(token) { + /** @type {Tag} */ + const tag = { + name: undefined, + attributes: [], + close: false, + selfClosing: false, + start: token.start, + end: token.end + } + if (!this.data.mdxJsxTagStack) this.data.mdxJsxTagStack = [] + this.data.mdxJsxTag = tag + this.buffer() + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function enterMdxJsxTagClosingMarker(token) { + const stack = this.data.mdxJsxTagStack + default_ok(stack, 'expected `mdxJsxTagStack`') + + if (stack.length === 0) { + throw new VFileMessage( + 'Unexpected closing slash `/` in tag, expected an open tag first', + {start: token.start, end: token.end}, + 'mdast-util-mdx-jsx:unexpected-closing-slash' + ) + } + } -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function enterMdxJsxTagAnyAttribute(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') - poolPtr = 0; + if (tag.close) { + throw new VFileMessage( + 'Unexpected attribute in closing tag, expected the end of the tag', + {start: token.start, end: token.end}, + 'mdast-util-mdx-jsx:unexpected-attribute' + ) + } } - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} - -/***/ }), + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function enterMdxJsxTagSelfClosingMarker(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') -/***/ 80170: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (tag.close) { + throw new VFileMessage( + 'Unexpected self-closing slash `/` in closing tag, expected the end of the tag', + {start: token.start, end: token.end}, + 'mdast-util-mdx-jsx:unexpected-self-closing-slash' + ) + } + } -"use strict"; + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagClosingMarker() { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + tag.close = true + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagNamePrimary(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + tag.name = this.sliceSerialize(token) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagNameMember(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + tag.name += '.' + this.sliceSerialize(token) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagNameLocal(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + tag.name += ':' + this.sliceSerialize(token) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function enterMdxJsxTagAttribute(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + enterMdxJsxTagAnyAttribute.call(this, token) + tag.attributes.push({ + type: 'mdxJsxAttribute', + name: '', + value: null, + position: { + start: point(token.start), + // @ts-expect-error: `end` will be patched later. + end: undefined + } + }) + } + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function enterMdxJsxTagExpressionAttribute(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + enterMdxJsxTagAnyAttribute.call(this, token) + tag.attributes.push({ + type: 'mdxJsxExpressionAttribute', + value: '', + position: { + start: point(token.start), + // @ts-expect-error: `end` will be patched later. + end: undefined + } + }) + this.buffer() + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagExpressionAttribute(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + const tail = tag.attributes[tag.attributes.length - 1] + default_ok(tail.type === 'mdxJsxExpressionAttribute') + const estree = token.estree + + tail.value = this.resume() + default_ok(tail.position !== undefined) + tail.position.end = point(token.end) + + if (estree) { + tail.data = {estree} + } + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagAttributeNamePrimary(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + const node = tag.attributes[tag.attributes.length - 1] + default_ok(node.type === 'mdxJsxAttribute') + node.name = this.sliceSerialize(token) + default_ok(node.position !== undefined) + node.position.end = point(token.end) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagAttributeNameLocal(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + const node = tag.attributes[tag.attributes.length - 1] + default_ok(node.type === 'mdxJsxAttribute') + node.name += ':' + this.sliceSerialize(token) + default_ok(node.position !== undefined) + node.position.end = point(token.end) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagAttributeValueLiteral(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + const node = tag.attributes[tag.attributes.length - 1] + node.value = parseEntities(this.resume(), {nonTerminated: false}) + default_ok(node.position !== undefined) + node.position.end = point(token.end) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagAttributeValueExpression(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + const tail = tag.attributes[tag.attributes.length - 1] + default_ok(tail.type === 'mdxJsxAttribute') + /** @type {MdxJsxAttributeValueExpression} */ + const node = {type: 'mdxJsxAttributeValueExpression', value: this.resume()} + const estree = token.estree + + if (estree) { + node.data = {estree} + } + + tail.value = node + default_ok(tail.position !== undefined) + tail.position.end = point(token.end) + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTagSelfClosingMarker() { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + + tag.selfClosing = true + } + + /** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ + function exitMdxJsxTag(token) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + const stack = this.data.mdxJsxTagStack + default_ok(stack, 'expected `mdxJsxTagStack`') + const tail = stack[stack.length - 1] + + if (tag.close && tail.name !== tag.name) { + throw new VFileMessage( + 'Unexpected closing tag `' + + serializeAbbreviatedTag(tag) + + '`, expected corresponding closing tag for `' + + serializeAbbreviatedTag(tail) + + '` (' + + stringifyPosition(tail) + + ')', + {start: token.start, end: token.end}, + 'mdast-util-mdx-jsx:end-tag-mismatch' + ) + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // End of a tag, so drop the buffer. + this.resume() -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + if (tag.close) { + stack.pop() + } else { + this.enter( + { + type: + token.type === 'mdxJsxTextTag' + ? 'mdxJsxTextElement' + : 'mdxJsxFlowElement', + name: tag.name || null, + attributes: tag.attributes, + children: [] + }, + token, + onErrorRightIsTag + ) + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (tag.selfClosing || tag.close) { + this.exit(token, onErrorLeftIsTag) + } else { + stack.push(tag) + } + } + + /** + * @this {CompileContext} + * @type {OnEnterError} + */ + function onErrorRightIsTag(closing, open) { + const stack = this.data.mdxJsxTagStack + default_ok(stack, 'expected `mdxJsxTagStack`') + const tag = stack[stack.length - 1] + default_ok(tag, 'expected `mdxJsxTag`') + const place = closing ? ' before the end of `' + closing.type + '`' : '' + const position = closing + ? {start: closing.start, end: closing.end} + : undefined + + throw new VFileMessage( + 'Expected a closing tag for `' + + serializeAbbreviatedTag(tag) + + '` (' + + stringifyPosition({start: open.start, end: open.end}) + + ')' + + place, + position, + 'mdast-util-mdx-jsx:end-tag-mismatch' + ) + } -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); + /** + * @this {CompileContext} + * @type {OnExitError} + */ + function onErrorLeftIsTag(a, b) { + const tag = this.data.mdxJsxTag + default_ok(tag, 'expected `mdxJsxTag`') + + throw new VFileMessage( + 'Expected the closing tag `' + + serializeAbbreviatedTag(tag) + + '` either after the end of `' + + b.type + + '` (' + + stringifyPosition(b.end) + + ') or another opening tag after the start of `' + + b.type + + '` (' + + stringifyPosition(b.start) + + ')', + {start: a.start, end: a.end}, + 'mdast-util-mdx-jsx:end-tag-mismatch' + ) } - return _crypto.default.createHash('sha1').update(bytes).digest(); + /** + * Serialize a tag, excluding attributes. + * `self-closing` is not supported, because we don’t need it yet. + * + * @param {Tag} tag + * @returns {string} + */ + function serializeAbbreviatedTag(tag) { + return '<' + (tag.close ? '/' : '') + (tag.name || '') + '>' + } } -var _default = sha1; -exports["default"] = _default; - -/***/ }), +/** + * Create an extension for `mdast-util-to-markdown` to enable MDX JSX. + * + * This extension configures `mdast-util-to-markdown` with + * `options.fences: true` and `options.resourceLink: true` too, do not + * overwrite them! + * + * @param {ToMarkdownOptions | null | undefined} [options] + * Configuration (optional). + * @returns {ToMarkdownExtension} + * Extension for `mdast-util-to-markdown` to enable MDX JSX. + */ +function mdxJsxToMarkdown(options) { + const options_ = options || {} + const quote = options_.quote || '"' + const quoteSmart = options_.quoteSmart || false + const tightSelfClosing = options_.tightSelfClosing || false + const printWidth = options_.printWidth || Number.POSITIVE_INFINITY + const alternative = quote === '"' ? "'" : '"' + + if (quote !== '"' && quote !== "'") { + throw new Error( + 'Cannot serialize attribute values with `' + + quote + + '` for `options.quote`, expected `"`, or `\'`' + ) + } -/***/ 55997: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + mdxElement.peek = peekElement -"use strict"; + return { + handlers: { + mdxJsxFlowElement: mdxElement, + mdxJsxTextElement: mdxElement + }, + unsafe: [ + {character: '<', inConstruct: ['phrasing']}, + {atBreak: true, character: '<'} + ], + // Always generate fenced code (never indented code). + fences: true, + // Always generate links with resources (never autolinks). + resourceLink: true + } + + /** + * @type {ToMarkdownHandle} + * @param {MdxJsxFlowElement | MdxJsxTextElement} node + */ + // eslint-disable-next-line complexity + function mdxElement(node, _, state, info) { + const flow = node.type === 'mdxJsxFlowElement' + const selfClosing = node.name + ? !node.children || node.children.length === 0 + : false + const depth = inferDepth(state) + const currentIndent = createIndent(depth) + const trackerOneLine = state.createTracker(info) + const trackerMultiLine = state.createTracker(info) + /** @type {Array<string>} */ + const serializedAttributes = [] + const prefix = (flow ? currentIndent : '') + '<' + (node.name || '') + const exit = state.enter(node.type) + + trackerOneLine.move(prefix) + trackerMultiLine.move(prefix) + + // None. + if (node.attributes && node.attributes.length > 0) { + if (!node.name) { + throw new Error('Cannot serialize fragment w/ attributes') + } + + let index = -1 + while (++index < node.attributes.length) { + const attribute = node.attributes[index] + /** @type {string} */ + let result + + if (attribute.type === 'mdxJsxExpressionAttribute') { + result = '{' + (attribute.value || '') + '}' + } else { + if (!attribute.name) { + throw new Error('Cannot serialize attribute w/o name') + } + const value = attribute.value + const left = attribute.name + /** @type {string} */ + let right = '' -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (value === null || value === undefined) { + // Empty. + } else if (typeof value === 'object') { + right = '{' + (value.value || '') + '}' + } else { + // If the alternative is less common than `quote`, switch. + const appliedQuote = + quoteSmart && ccount(value, quote) > ccount(value, alternative) + ? alternative + : quote + right = + appliedQuote + + stringifyEntitiesLight(value, {subset: [appliedQuote]}) + + appliedQuote + } -var _validate = _interopRequireDefault(__nccwpck_require__(86350)); + result = left + (right ? '=' : '') + right + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + serializedAttributes.push(result) + } + } -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -const byteToHex = []; + let attributesOnTheirOwnLine = false + const attributesOnOneLine = serializedAttributes.join(' ') -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); -} + if ( + // Block: + flow && + // Including a line ending (expressions). + (/\r?\n|\r/.test(attributesOnOneLine) || + // Current position (including `<tag`). + trackerOneLine.current().now.column + + // -1 because columns, +1 for ` ` before attributes. + // Attributes joined by spaces. + attributesOnOneLine.length + + // ` />`. + (selfClosing ? (tightSelfClosing ? 2 : 3) : 1) > + printWidth) + ) { + attributesOnTheirOwnLine = true + } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields + let tracker = trackerOneLine + let value = prefix - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } + if (attributesOnTheirOwnLine) { + tracker = trackerMultiLine - return uuid; -} + let index = -1 -var _default = stringify; -exports["default"] = _default; + while (++index < serializedAttributes.length) { + // Only indent first line of of attributes, we can’t indent attribute + // values. + serializedAttributes[index] = + currentIndent + indent + serializedAttributes[index] + } -/***/ }), + value += tracker.move( + '\n' + serializedAttributes.join('\n') + '\n' + currentIndent + ) + } else if (attributesOnOneLine) { + value += tracker.move(' ' + attributesOnOneLine) + } -/***/ 71265: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (selfClosing) { + value += tracker.move( + (tightSelfClosing || attributesOnTheirOwnLine ? '' : ' ') + '/' + ) + } -"use strict"; + value += tracker.move('>') + if (node.children && node.children.length > 0) { + if (node.type === 'mdxJsxTextElement') { + value += tracker.move( + state.containerPhrasing(node, { + ...tracker.current(), + before: '>', + after: '<' + }) + ) + } else { + tracker.shift(2) + value += tracker.move('\n') + value += tracker.move(lib_containerFlow(node, state, tracker.current())) + value += tracker.move('\n') + } + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (!selfClosing) { + value += tracker.move( + (flow ? currentIndent : '') + '</' + (node.name || '') + '>' + ) + } -var _rng = _interopRequireDefault(__nccwpck_require__(72127)); + exit() + return value + } +} -var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); +// Modified copy of: +// <https://github.com/syntax-tree/mdast-util-to-markdown/blob/a381cbc/lib/util/container-flow.js>. +// +// To do: add `indent` support to `mdast-util-to-markdown`. +// As indents are only used for JSX, it’s fine for now, but perhaps better +// there. +/** + * @param {MdxJsxFlowElement} parent + * Parent of flow nodes. + * @param {State} state + * Info passed around about the current state. + * @param {ReturnType<Tracker['current']>} info + * Info on where we are in the document we are generating. + * @returns {string} + * Serialized children, joined by (blank) lines. + */ +function lib_containerFlow(parent, state, info) { + const indexStack = state.indexStack + const children = parent.children + const tracker = state.createTracker(info) + const currentIndent = createIndent(inferDepth(state)) + /** @type {Array<string>} */ + const results = [] + let index = -1 -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + indexStack.push(-1) -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; + while (++index < children.length) { + const child = children[index] -let _clockseq; // Previous uuid creation time + indexStack[indexStack.length - 1] = index + const childInfo = {before: '\n', after: '\n', ...tracker.current()} -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + const result = state.handle(child, parent, state, childInfo) -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 + const serializedChild = + child.type === 'mdxJsxFlowElement' + ? result + : state.indentLines(result, function (line, _, blank) { + return (blank ? '' : currentIndent) + line + }) - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); + results.push(tracker.move(serializedChild)) - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + if (child.type !== 'list') { + state.bulletLastUsed = undefined } - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + if (index < children.length - 1) { + results.push(tracker.move('\n\n')) } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + } + indexStack.pop() - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock + return results.join('') +} - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +/** + * @param {State} state + * @returns {number} + */ +function inferDepth(state) { + let depth = 0 + let index = state.stack.length - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + while (--index > -1) { + const name = state.stack[index] - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval + if (name === 'blockquote' || name === 'listItem') break + if (name === 'mdxJsxFlowElement') depth++ + } + return depth +} - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/** + * @param {number} depth + * @returns {string} + */ +function createIndent(depth) { + return indent.repeat(depth) +} +/** + * @type {ToMarkdownHandle} + */ +function peekElement() { + return '<' +} - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +;// CONCATENATED MODULE: ./node_modules/mdast-util-mdxjs-esm/lib/index.js +/** + * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext + * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension + * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle + * + * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle + * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension + * + * @typedef {import('../index.js').MdxjsEsm} MdxjsEsm + */ - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch +// To do: next major: expose functions. - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +/** + * Create an extension for `mdast-util-from-markdown` to enable MDX.js ESM in + * markdown. + * + * When using the micromark syntax extension with `addResult`, nodes will have + * a `data.estree` field set to an ESTree [`Program`][program] node. + * + * @returns {FromMarkdownExtension} + * Extension for `mdast-util-from-markdown` to enable MDX.js ESM. + */ +function mdxjsEsmFromMarkdown() { + return { + enter: {mdxjsEsm: enterMdxjsEsm}, + exit: {mdxjsEsm: exitMdxjsEsm, mdxjsEsmData: exitMdxjsEsmData} + } +} + +/** + * Create an extension for `mdast-util-to-markdown` to enable MDX.js ESM in + * markdown. + * + * @returns {ToMarkdownExtension} + * Extension for `mdast-util-to-markdown` to enable MDX.js ESM. + */ +function mdxjsEsmToMarkdown() { + return {handlers: {mdxjsEsm: handleMdxjsEsm}} +} - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function enterMdxjsEsm(token) { + this.enter({type: 'mdxjsEsm', value: ''}, token) + this.buffer() // Capture EOLs +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function exitMdxjsEsm(token) { + const value = this.resume() + const node = this.stack[this.stack.length - 1] + default_ok(node.type === 'mdxjsEsm') - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + this.exit(token) - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + const estree = token.estree - b[i++] = clockseq & 0xff; // `node` + node.value = value - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; + if (estree) { + node.data = {estree} } +} - return buf || (0, _stringify.default)(b); +/** + * @this {CompileContext} + * @type {FromMarkdownHandle} + */ +function exitMdxjsEsmData(token) { + this.config.enter.data.call(this, token) + this.config.exit.data.call(this, token) } -var _default = v1; -exports["default"] = _default; +/** + * @type {ToMarkdownHandle} + * @param {MdxjsEsm} node + */ +function handleMdxjsEsm(node) { + return node.value || '' +} -/***/ }), +;// CONCATENATED MODULE: ./node_modules/mdast-util-mdx/lib/index.js +/** + * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension + * @typedef {import('mdast-util-mdx-jsx').ToMarkdownOptions} ToMarkdownOptions + * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension + */ -/***/ 95203: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _v = _interopRequireDefault(__nccwpck_require__(79952)); +/** + * Create an extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX, + * expressions). + * + * @returns {Array<FromMarkdownExtension>} + * Extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX, + * expressions). + * + * When using the syntax extensions with `addResult`, ESM and expression + * nodes will have `data.estree` fields set to ESTree `Program` node. + */ +function mdxFromMarkdown() { + return [ + mdxExpressionFromMarkdown(), + mdxJsxFromMarkdown(), + mdxjsEsmFromMarkdown() + ] +} -var _md = _interopRequireDefault(__nccwpck_require__(88374)); +/** + * Create an extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX, + * expressions). + * + * @param {ToMarkdownOptions | null | undefined} [options] + * Configuration (optional). + * @returns {ToMarkdownExtension} + * Extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX, + * expressions). + */ +function mdxToMarkdown(options) { + return { + extensions: [ + mdxExpressionToMarkdown(), + mdxJsxToMarkdown(options), + mdxjsEsmToMarkdown() + ] + } +} -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +;// CONCATENATED MODULE: ./node_modules/acorn/dist/acorn.mjs +// This file was generated. Do not modify manually! +var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; -const v3 = (0, _v.default)('v3', 0x30, _md.default); -var _default = v3; -exports["default"] = _default; +// This file was generated. Do not modify manually! +var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; -/***/ }), +// This file was generated. Do not modify manually! +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; -/***/ 79952: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// This file was generated. Do not modify manually! +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -"use strict"; +// These are a run-length and offset encoded representation of the +// >0xffff code points that are a valid part of identifiers. The +// offset starts at 0x10000, and each pair of numbers represents an +// offset to the next range, and then a size of the range. +// Reserved word lists for various dialects of the language -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -exports.URL = exports.DNS = void 0; +var reservedWords = { + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", + 5: "class enum extends super const export import", + 6: "enum", + strict: "implements interface let package private protected public static yield", + strictBind: "eval arguments" +}; -var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); +// And the keywords -var _parse = _interopRequireDefault(__nccwpck_require__(24713)); +var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var keywords$1 = { + 5: ecma5AndLessKeywords, + "5module": ecma5AndLessKeywords + " export import", + 6: ecma5AndLessKeywords + " const class extends export import super" +}; + +var keywordRelationalOperator = /^in(stanceof)?$/; -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape +// ## Character categories - const bytes = []; +var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); +// This has a complexity linear to the value of the code. The +// assumption is that looking up astral identifier characters is +// rare. +function isInAstralSet(code, set) { + var pos = 0x10000; + for (var i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) { return false } + pos += set[i + 1]; + if (pos >= code) { return true } } + return false +} + +// Test whether a given character code starts an identifier. - return bytes; +function isIdentifierStart(code, astral) { + if (code < 65) { return code === 36 } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; +// Test whether a given character is part of an identifier. -function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +function isIdentifierChar(code, astral) { + if (code < 48) { return code === 36 } + if (code < 58) { return true } + if (code < 65) { return false } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) +} - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); - } +// ## Token types - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +// The assignment of fine-grained, information-carrying type objects +// allows the tokenizer to store the information it has about a +// token in a way that is very cheap for the parser to look up. +// All token type variables start with an underscore, to make them +// easy to recognize. - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// The `beforeExpr` property is used to disambiguate between regular +// expressions and divisions. It is set on all token types that can +// be followed by an expression (thus, a slash after them would be a +// regular expression). +// +// The `startsExpr` property is used to check if the token ends a +// `yield` expression. It is set on all token types that either can +// directly start an expression (like a quotation mark) or can +// continue an expression (like the body of a string). +// +// `isLoop` marks a keyword as starting a loop, which is important +// to know when parsing a label, in order to allow or disallow +// continue jumps to that label. + +var TokenType = function TokenType(label, conf) { + if ( conf === void 0 ) conf = {}; + + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop || null; + this.updateContext = null; +}; - if (buf) { - offset = offset || 0; +function binop(name, prec) { + return new TokenType(name, {beforeExpr: true, binop: prec}) +} +var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// Map keyword names to token types. - return buf; - } +var keywords = {}; + +// Succinct definitions of keyword token types +function kw(name, options) { + if ( options === void 0 ) options = {}; + + options.keyword = name; + return keywords[name] = new TokenType(name, options) +} + +var types$1 = { + num: new TokenType("num", startsExpr), + regexp: new TokenType("regexp", startsExpr), + string: new TokenType("string", startsExpr), + name: new TokenType("name", startsExpr), + privateId: new TokenType("privateId", startsExpr), + eof: new TokenType("eof"), + + // Punctuation token types. + bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), + bracketR: new TokenType("]"), + braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), + braceR: new TokenType("}"), + parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), + parenR: new TokenType(")"), + comma: new TokenType(",", beforeExpr), + semi: new TokenType(";", beforeExpr), + colon: new TokenType(":", beforeExpr), + dot: new TokenType("."), + question: new TokenType("?", beforeExpr), + questionDot: new TokenType("?."), + arrow: new TokenType("=>", beforeExpr), + template: new TokenType("template"), + invalidTemplate: new TokenType("invalidTemplate"), + ellipsis: new TokenType("...", beforeExpr), + backQuote: new TokenType("`", startsExpr), + dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), + + // Operators. These carry several kinds of properties to help the + // parser use them properly (the presence of these properties is + // what categorizes them as operators). + // + // `binop`, when present, specifies that this operator is a binary + // operator, and will refer to its precedence. + // + // `prefix` and `postfix` mark the operator as a prefix or postfix + // unary operator. + // + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as + // binary operators with a very low precedence, that should result + // in AssignmentExpression nodes. + + eq: new TokenType("=", {beforeExpr: true, isAssign: true}), + assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), + incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), + prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), + logicalOR: binop("||", 1), + logicalAND: binop("&&", 2), + bitwiseOR: binop("|", 3), + bitwiseXOR: binop("^", 4), + bitwiseAND: binop("&", 5), + equality: binop("==/!=/===/!==", 6), + relational: binop("</>/<=/>=", 7), + bitShift: binop("<</>>/>>>", 8), + plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), + modulo: binop("%", 10), + star: binop("*", 10), + slash: binop("/", 10), + starstar: new TokenType("**", {beforeExpr: true}), + coalesce: binop("??", 1), + + // Keyword token types. + _break: kw("break"), + _case: kw("case", beforeExpr), + _catch: kw("catch"), + _continue: kw("continue"), + _debugger: kw("debugger"), + _default: kw("default", beforeExpr), + _do: kw("do", {isLoop: true, beforeExpr: true}), + _else: kw("else", beforeExpr), + _finally: kw("finally"), + _for: kw("for", {isLoop: true}), + _function: kw("function", startsExpr), + _if: kw("if"), + _return: kw("return", beforeExpr), + _switch: kw("switch"), + _throw: kw("throw", beforeExpr), + _try: kw("try"), + _var: kw("var"), + _const: kw("const"), + _while: kw("while", {isLoop: true}), + _with: kw("with"), + _new: kw("new", {beforeExpr: true, startsExpr: true}), + _this: kw("this", startsExpr), + _super: kw("super", startsExpr), + _class: kw("class", startsExpr), + _extends: kw("extends", beforeExpr), + _export: kw("export"), + _import: kw("import", startsExpr), + _null: kw("null", startsExpr), + _true: kw("true", startsExpr), + _false: kw("false", startsExpr), + _in: kw("in", {beforeExpr: true, binop: 7}), + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) +}; - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) +// Matches a whole line break (where CRLF is considered a single +// line break). Used to count lines. +var lineBreak = /\r\n?|\n|\u2028|\u2029/; +var lineBreakG = new RegExp(lineBreak.source, "g"); - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +function isNewLine(code) { + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 +} +function nextLineBreak(code, from, end) { + if ( end === void 0 ) end = code.length; - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + for (var i = from; i < end; i++) { + var next = code.charCodeAt(i); + if (isNewLine(next)) + { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } + } + return -1 } -/***/ }), - -/***/ 41222: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; -"use strict"; +var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +var ref = Object.prototype; +var acorn_hasOwnProperty = ref.hasOwnProperty; +var acorn_toString = ref.toString; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +var hasOwn = Object.hasOwn || (function (obj, propName) { return ( + acorn_hasOwnProperty.call(obj, propName) +); }); -var _rng = _interopRequireDefault(__nccwpck_require__(72127)); +var isArray = Array.isArray || (function (obj) { return ( + acorn_toString.call(obj) === "[object Array]" +); }); -var _stringify = _interopRequireDefault(__nccwpck_require__(55997)); +var regexpCache = Object.create(null); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function wordsRegexp(words) { + return regexpCache[words] || (regexpCache[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")) +} -function v4(options, buf, offset) { - options = options || {}; +function codePointToString(code) { + // UTF-16 Decoding + if (code <= 0xFFFF) { return String.fromCharCode(code) } + code -= 0x10000; + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) +} - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` +var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; +// These are used when `options.locations` is on, for the +// `startLoc` and `endLoc` properties. - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +var Position = function Position(line, col) { + this.line = line; + this.column = col; +}; - if (buf) { - offset = offset || 0; +Position.prototype.offset = function offset (n) { + return new Position(this.line, this.column + n) +}; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } +var SourceLocation = function SourceLocation(p, start, end) { + this.start = start; + this.end = end; + if (p.sourceFile !== null) { this.source = p.sourceFile; } +}; - return buf; - } +// The `getLineInfo` function is mostly useful when the +// `locations` option is off (for performance reasons) and you +// want to find the line/column position for a given character +// offset. `input` should be the code string that the offset refers +// into. - return (0, _stringify.default)(rnds); -} +function getLineInfo(input, offset) { + for (var line = 1, cur = 0;;) { + var nextBreak = nextLineBreak(input, cur, offset); + if (nextBreak < 0) { return new Position(line, offset - cur) } + ++line; + cur = nextBreak; + } +} + +// A second argument must be given to configure the parser process. +// These options are recognized (only `ecmaVersion` is required): + +var defaultOptions = { + // `ecmaVersion` indicates the ECMAScript version to parse. Must be + // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 + // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` + // (the latest version the library supports). This influences + // support for strict mode, the set of reserved words, and support + // for new syntax features. + ecmaVersion: null, + // `sourceType` indicates the mode the code should be parsed in. + // Can be either `"script"` or `"module"`. This influences global + // strict mode and parsing of `import` and `export` declarations. + sourceType: "script", + // `onInsertedSemicolon` can be a callback that will be called when + // a semicolon is automatically inserted. It will be passed the + // position of the inserted semicolon as an offset, and if + // `locations` is enabled, it is given the location as a `{line, + // column}` object as second argument. + onInsertedSemicolon: null, + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for + // trailing commas. + onTrailingComma: null, + // By default, reserved words are only enforced if ecmaVersion >= 5. + // Set `allowReserved` to a boolean value to explicitly turn this on + // an off. When this option has the value "never", reserved words + // and keywords can also not be used as property names. + allowReserved: null, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program, and an import.meta expression + // in a script isn't considered an error. + allowImportExportEverywhere: false, + // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022. + // When enabled, await identifiers are allowed to appear at the top-level scope, + // but they are still not allowed in non-async functions. + allowAwaitOutsideFunction: null, + // When enabled, super identifiers are not constrained to + // appearing in methods and do not raise an error when they appear elsewhere. + allowSuperOutsideMethod: null, + // When enabled, hashbang directive in the beginning of file is + // allowed and treated as a line comment. Enabled by default when + // `ecmaVersion` >= 2023. + allowHashBang: false, + // By default, the parser will verify that private properties are + // only used in places where they are valid and have been declared. + // Set this to false to turn such checks off. + checkPrivateFields: true, + // When `locations` is on, `loc` properties holding objects with + // `start` and `end` properties in `{line, column}` form (with + // line being 1-based and column 0-based) will be attached to the + // nodes. + locations: false, + // A function can be passed as `onToken` option, which will + // cause Acorn to call that function with object in the same + // format as tokens returned from `tokenizer().getToken()`. Note + // that you are not allowed to call the parser from the + // callback—that will corrupt its internal state. + onToken: null, + // A function can be passed as `onComment` option, which will + // cause Acorn to call that function with `(block, text, start, + // end)` parameters whenever a comment is skipped. `block` is a + // boolean indicating whether this is a block (`/* */`) comment, + // `text` is the content of the comment, and `start` and `end` are + // character offsets that denote the start and end of the comment. + // When the `locations` option is on, two more parameters are + // passed, the full `{line, column}` locations of the start and + // end of the comments. Note that you are not allowed to call the + // parser from the callback—that will corrupt its internal state. + // When this option has an array as value, objects representing the + // comments are pushed to it. + onComment: null, + // Nodes have their start and end characters offsets recorded in + // `start` and `end` properties (directly on the node, rather than + // the `loc` object, which holds line/column data. To also add a + // [semi-standardized][range] `range` property holding a `[start, + // end]` array with the same numbers, set the `ranges` option to + // `true`. + // + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 + ranges: false, + // It is possible to parse multiple files into a single AST by + // passing the tree produced by parsing the first file as + // `program` option in subsequent parses. This will add the + // toplevel forms of the parsed file to the `Program` (top) node + // of an existing parse tree. + program: null, + // When `locations` is on, you can pass this to record the source + // file in every node's `loc` object. + sourceFile: null, + // This value, if given, is stored in every node, whether + // `locations` is on or off. + directSourceFile: null, + // When enabled, parenthesized expressions are represented by + // (non-standard) ParenthesizedExpression nodes + preserveParens: false +}; -var _default = v4; -exports["default"] = _default; +// Interpret and default an options object -/***/ }), +var warnedAboutEcmaVersion = false; -/***/ 56193: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +function getOptions(opts) { + var options = {}; -"use strict"; + for (var opt in defaultOptions) + { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } + if (options.ecmaVersion === "latest") { + options.ecmaVersion = 1e8; + } else if (options.ecmaVersion == null) { + if (!warnedAboutEcmaVersion && typeof console === "object" && console.warn) { + warnedAboutEcmaVersion = true; + console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future."); + } + options.ecmaVersion = 11; + } else if (options.ecmaVersion >= 2015) { + options.ecmaVersion -= 2009; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (options.allowReserved == null) + { options.allowReserved = options.ecmaVersion < 5; } -var _v = _interopRequireDefault(__nccwpck_require__(79952)); + if (!opts || opts.allowHashBang == null) + { options.allowHashBang = options.ecmaVersion >= 14; } -var _sha = _interopRequireDefault(__nccwpck_require__(80170)); + if (isArray(options.onToken)) { + var tokens = options.onToken; + options.onToken = function (token) { return tokens.push(token); }; + } + if (isArray(options.onComment)) + { options.onComment = pushComment(options, options.onComment); } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + return options +} -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports["default"] = _default; +function pushComment(options, array) { + return function(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "Block" : "Line", + value: text, + start: start, + end: end + }; + if (options.locations) + { comment.loc = new SourceLocation(this, startLoc, endLoc); } + if (options.ranges) + { comment.range = [start, end]; } + array.push(comment); + } +} + +// Each scope gets a bitset that may contain these flags +var + SCOPE_TOP = 1, + SCOPE_FUNCTION = 2, + SCOPE_ASYNC = 4, + SCOPE_GENERATOR = 8, + SCOPE_ARROW = 16, + SCOPE_SIMPLE_CATCH = 32, + SCOPE_SUPER = 64, + SCOPE_DIRECT_SUPER = 128, + SCOPE_CLASS_STATIC_BLOCK = 256, + SCOPE_CLASS_FIELD_INIT = 512, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; + +function functionFlags(async, generator) { + return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) +} + +// Used in checkLVal* and declareName to determine the type of a binding +var + BIND_NONE = 0, // Not a binding + BIND_VAR = 1, // Var-style binding + BIND_LEXICAL = 2, // Let- or const-style binding + BIND_FUNCTION = 3, // Function declaration + BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding + BIND_OUTSIDE = 5; // Special case for function names as bound inside the function + +var Parser = function Parser(options, input, startPos) { + this.options = options = getOptions(options); + this.sourceFile = options.sourceFile; + this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); + var reserved = ""; + if (options.allowReserved !== true) { + reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3]; + if (options.sourceType === "module") { reserved += " await"; } + } + this.reservedWords = wordsRegexp(reserved); + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; + this.reservedWordsStrict = wordsRegexp(reservedStrict); + this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); + this.input = String(input); + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + this.containsEsc = false; + + // Set up token state + + // The current position of the tokenizer in the input. + if (startPos) { + this.pos = startPos; + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; + } else { + this.pos = this.lineStart = 0; + this.curLine = 1; + } + + // Properties of the current token: + // Its type + this.type = types$1.eof; + // For tokens that include more information than their type, the value + this.value = null; + // Its start and end offset + this.start = this.end = this.pos; + // And, if locations are used, the {line, column} object + // corresponding to those offsets + this.startLoc = this.endLoc = this.curPosition(); + + // Position information for the previous token + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; + + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + this.context = this.initialContext(); + this.exprAllowed = true; + + // Figure out if it's a module code. + this.inModule = options.sourceType === "module"; + this.strict = this.inModule || this.strictDirective(this.pos); + + // Used to signify the start of a potential arrow function + this.potentialArrowAt = -1; + this.potentialArrowInForAwait = false; + + // Positions to delayed-check that yield/await does not exist in default parameters. + this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; + // Labels in scope. + this.labels = []; + // Thus-far undefined exports. + this.undefinedExports = Object.create(null); + + // If enabled, skip leading hashbang line. + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") + { this.skipLineComment(2); } + + // Scope tracking for duplicate variable names (see scope.js) + this.scopeStack = []; + this.enterScope(SCOPE_TOP); + + // For RegExp validation + this.regexpState = null; + + // The stack of private names. + // Each element has two properties: 'declared' and 'used'. + // When it exited from the outermost class definition, all used private names must be declared. + this.privateNameStack = []; +}; -/***/ }), +var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; -/***/ 86350: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +Parser.prototype.parse = function parse () { + var node = this.options.program || this.startNode(); + this.nextToken(); + return this.parseTopLevel(node) +}; -"use strict"; +prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; +prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; -var _regex = _interopRequireDefault(__nccwpck_require__(55496)); +prototypeAccessors.canAwait.get = function () { + for (var i = this.scopeStack.length - 1; i >= 0; i--) { + var ref = this.scopeStack[i]; + var flags = ref.flags; + if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false } + if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 } + } + return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction +}; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +prototypeAccessors.allowSuper.get = function () { + var ref = this.currentThisScope(); + var flags = ref.flags; + return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod +}; -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} +prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; -var _default = validate; -exports["default"] = _default; +prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; -/***/ }), +prototypeAccessors.allowNewDotTarget.get = function () { + for (var i = this.scopeStack.length - 1; i >= 0; i--) { + var ref = this.scopeStack[i]; + var flags = ref.flags; + if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) || + ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true } + } + return false +}; -/***/ 15988: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +prototypeAccessors.inClassStaticBlock.get = function () { + return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 +}; -"use strict"; +Parser.extend = function extend () { + var plugins = [], len = arguments.length; + while ( len-- ) plugins[ len ] = arguments[ len ]; + var cls = this; + for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } + return cls +}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +Parser.parse = function parse (input, options) { + return new this(options, input).parse() +}; -var _validate = _interopRequireDefault(__nccwpck_require__(86350)); +Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { + var parser = new this(options, input, pos); + parser.nextToken(); + return parser.parseExpression() +}; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +Parser.tokenizer = function tokenizer (input, options) { + return new this(options, input) +}; -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); +Object.defineProperties( Parser.prototype, prototypeAccessors ); + +var pp$9 = Parser.prototype; + +// ## Parser utilities + +var literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/; +pp$9.strictDirective = function(start) { + if (this.options.ecmaVersion < 5) { return false } + for (;;) { + // Try to find string literal. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + var match = literal.exec(this.input.slice(start)); + if (!match) { return false } + if ((match[1] || match[2]) === "use strict") { + skipWhiteSpace.lastIndex = start + match[0].length; + var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length; + var next = this.input.charAt(end); + return next === ";" || next === "}" || + (lineBreak.test(spaceAfter[0]) && + !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=")) + } + start += match[0].length; + + // Skip semicolon, if any. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + if (this.input[start] === ";") + { start++; } } +}; - return parseInt(uuid.substr(14, 1), 16); -} +// Predicate that tests whether the next token is of the given +// type, and if yes, consumes it as a side effect. -var _default = version; -exports["default"] = _default; +pp$9.eat = function(type) { + if (this.type === type) { + this.next(); + return true + } else { + return false + } +}; -/***/ }), +// Tests whether parsed token is a contextual keyword. -/***/ 2832: -/***/ ((module) => { +pp$9.isContextual = function(name) { + return this.type === types$1.name && this.value === name && !this.containsEsc +}; -"use strict"; +// Consumes contextual keyword if possible. +pp$9.eatContextual = function(name) { + if (!this.isContextual(name)) { return false } + this.next(); + return true +}; -module.exports = factory +// Asserts that following token is given contextual keyword. -function factory(file) { - var value = String(file) - var indices = [] - var search = /\r?\n|\r/g +pp$9.expectContextual = function(name) { + if (!this.eatContextual(name)) { this.unexpected(); } +}; - while (search.exec(value)) { - indices.push(search.lastIndex) - } +// Test whether a semicolon can be inserted at the current position. - indices.push(value.length + 1) +pp$9.canInsertSemicolon = function() { + return this.type === types$1.eof || + this.type === types$1.braceR || + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) +}; - return { - toPoint: offsetToPoint, - toPosition: offsetToPoint, - toOffset: pointToOffset +pp$9.insertSemicolon = function() { + if (this.canInsertSemicolon()) { + if (this.options.onInsertedSemicolon) + { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } + return true } +}; - // Get the line and column-based `point` for `offset` in the bound indices. - function offsetToPoint(offset) { - var index = -1 +// Consume a semicolon, or, failing that, see if we are allowed to +// pretend that there is a semicolon at this position. - if (offset > -1 && offset < indices[indices.length - 1]) { - while (++index < indices.length) { - if (indices[index] > offset) { - return { - line: index + 1, - column: offset - (indices[index - 1] || 0) + 1, - offset: offset - } - } - } - } +pp$9.semicolon = function() { + if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); } +}; - return {} +pp$9.afterTrailingComma = function(tokType, notNext) { + if (this.type === tokType) { + if (this.options.onTrailingComma) + { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } + if (!notNext) + { this.next(); } + return true } +}; - // Get the `offset` for a line and column-based `point` in the bound - // indices. - function pointToOffset(point) { - var line = point && point.line - var column = point && point.column - var offset - - if (!isNaN(line) && !isNaN(column) && line - 1 in indices) { - offset = (indices[line - 2] || 0) + column - 1 || 0 - } - - return offset > -1 && offset < indices[indices.length - 1] ? offset : -1 - } -} +// Expect a token of a given type. If found, consume it, otherwise, +// raise an unexpected token error. +pp$9.expect = function(type) { + this.eat(type) || this.unexpected(); +}; -/***/ }), +// Raise an unexpected token error. -/***/ 92240: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +pp$9.unexpected = function(pos) { + this.raise(pos != null ? pos : this.start, "Unexpected token"); +}; -"use strict"; +var DestructuringErrors = function DestructuringErrors() { + this.shorthandAssign = + this.trailingComma = + this.parenthesizedAssign = + this.parenthesizedBind = + this.doubleProto = + -1; +}; +pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { + if (!refDestructuringErrors) { return } + if (refDestructuringErrors.trailingComma > -1) + { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; + if (parens > -1) { this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern"); } +}; -var stringify = __nccwpck_require__(27633) +pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) { + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } +}; -module.exports = VMessage +pp$9.checkYieldAwaitInDefaultParams = function() { + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) + { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } + if (this.awaitPos) + { this.raise(this.awaitPos, "Await expression cannot be a default value"); } +}; -// Inherit from `Error#`. -function VMessagePrototype() {} -VMessagePrototype.prototype = Error.prototype -VMessage.prototype = new VMessagePrototype() +pp$9.isSimpleAssignTarget = function(expr) { + if (expr.type === "ParenthesizedExpression") + { return this.isSimpleAssignTarget(expr.expression) } + return expr.type === "Identifier" || expr.type === "MemberExpression" +}; -// Message properties. -var proto = VMessage.prototype +var pp$8 = Parser.prototype; -proto.file = '' -proto.name = '' -proto.reason = '' -proto.message = '' -proto.stack = '' -proto.fatal = null -proto.column = null -proto.line = null +// ### Statement parsing -// Construct a new VMessage. -// -// Note: We cannot invoke `Error` on the created context, as that adds readonly -// `line` and `column` attributes on Safari 9, thus throwing and failing the -// data. -function VMessage(reason, position, origin) { - var parts - var range - var location +// Parse a program. Initializes the parser, reads any number of +// statements, and wraps them in a Program node. Optionally takes a +// `program` argument. If present, the statements will be appended +// to its body instead of creating a new node. - if (typeof position === 'string') { - origin = position - position = null +pp$8.parseTopLevel = function(node) { + var exports = Object.create(null); + if (!node.body) { node.body = []; } + while (this.type !== types$1.eof) { + var stmt = this.parseStatement(null, true, exports); + node.body.push(stmt); } + if (this.inModule) + { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) + { + var name = list[i]; + + this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); + } } + this.adaptDirectivePrologue(node.body); + this.next(); + node.sourceType = this.options.sourceType; + return this.finishNode(node, "Program") +}; - parts = parseOrigin(origin) - range = stringify(position) || '1:1' - - location = { - start: {line: null, column: null}, - end: {line: null, column: null} +var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; + +pp$8.isLet = function(context) { + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + // For ambiguous cases, determine if a LexicalDeclaration (or only a + // Statement) is allowed here. If context is not empty then only a Statement + // is allowed. However, `let [` is an explicit negative lookahead for + // ExpressionStatement, so special-case it first. + if (nextCh === 91 || nextCh === 92) { return true } // '[', '\' + if (context) { return false } + + if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral + if (isIdentifierStart(nextCh, true)) { + var pos = next + 1; + while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; } + if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } + var ident = this.input.slice(next, pos); + if (!keywordRelationalOperator.test(ident)) { return true } } + return false +}; - // Node. - if (position && position.position) { - position = position.position - } +// check 'async [no LineTerminator here] function' +// - 'async /*foo*/ function' is OK. +// - 'async /*\n*/ function' is invalid. +pp$8.isAsyncFunction = function() { + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) + { return false } + + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, after; + return !lineBreak.test(this.input.slice(this.pos, next)) && + this.input.slice(next, next + 8) === "function" && + (next + 8 === this.input.length || + !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00)) +}; - if (position) { - // Position. - if (position.start) { - location = position - position = position.start - } else { - // Point. - location.start = position +// Parse a single statement. +// +// If expecting a statement and finding a slash operator, parse a +// regular expression literal. This is to handle cases like +// `if (foo) /blah/.exec(foo)`, where looking at the previous token +// does not help. + +pp$8.parseStatement = function(context, topLevel, exports) { + var starttype = this.type, node = this.startNode(), kind; + + if (this.isLet(context)) { + starttype = types$1._var; + kind = "let"; + } + + // Most types of statements are recognized by the keyword they + // start with. Many are trivial to parse, some require a bit of + // complexity. + + switch (starttype) { + case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword) + case types$1._debugger: return this.parseDebuggerStatement(node) + case types$1._do: return this.parseDoStatement(node) + case types$1._for: return this.parseForStatement(node) + case types$1._function: + // Function as sole body of either an if statement or a labeled statement + // works, but not when it is part of a labeled statement that is the sole + // body of an if statement. + if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } + return this.parseFunctionStatement(node, false, !context) + case types$1._class: + if (context) { this.unexpected(); } + return this.parseClass(node, true) + case types$1._if: return this.parseIfStatement(node) + case types$1._return: return this.parseReturnStatement(node) + case types$1._switch: return this.parseSwitchStatement(node) + case types$1._throw: return this.parseThrowStatement(node) + case types$1._try: return this.parseTryStatement(node) + case types$1._const: case types$1._var: + kind = kind || this.value; + if (context && kind !== "var") { this.unexpected(); } + return this.parseVarStatement(node, kind) + case types$1._while: return this.parseWhileStatement(node) + case types$1._with: return this.parseWithStatement(node) + case types$1.braceL: return this.parseBlock(true, node) + case types$1.semi: return this.parseEmptyStatement(node) + case types$1._export: + case types$1._import: + if (this.options.ecmaVersion > 10 && starttype === types$1._import) { + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + if (nextCh === 40 || nextCh === 46) // '(' or '.' + { return this.parseExpressionStatement(node, this.parseExpression()) } + } + + if (!this.options.allowImportExportEverywhere) { + if (!topLevel) + { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } + if (!this.inModule) + { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } + } + return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports) + + // If the statement does not start with a statement keyword or a + // brace, it's an ExpressionStatement or LabeledStatement. We + // simply start parsing an expression, and afterwards, if the + // next token is a colon and the expression was a simple + // Identifier node, we switch to interpreting it as a label. + default: + if (this.isAsyncFunction()) { + if (context) { this.unexpected(); } + this.next(); + return this.parseFunctionStatement(node, true, !context) } - } - if (reason.stack) { - this.stack = reason.stack - reason = reason.message + var maybeName = this.value, expr = this.parseExpression(); + if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) + { return this.parseLabeledStatement(node, maybeName, expr, context) } + else { return this.parseExpressionStatement(node, expr) } } +}; - this.message = reason - this.name = range - this.reason = reason - this.line = position ? position.line : null - this.column = position ? position.column : null - this.location = location - this.source = parts[0] - this.ruleId = parts[1] -} - -function parseOrigin(origin) { - var result = [null, null] - var index - - if (typeof origin === 'string') { - index = origin.indexOf(':') +pp$8.parseBreakContinueStatement = function(node, keyword) { + var isBreak = keyword === "break"; + this.next(); + if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; } + else if (this.type !== types$1.name) { this.unexpected(); } + else { + node.label = this.parseIdent(); + this.semicolon(); + } - if (index === -1) { - result[1] = origin - } else { - result[0] = origin.slice(0, index) - result[1] = origin.slice(index + 1) + // Verify that there is an actual destination to break or + // continue to. + var i = 0; + for (; i < this.labels.length; ++i) { + var lab = this.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } + if (node.label && isBreak) { break } } } + if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") +}; - return result -} - +pp$8.parseDebuggerStatement = function(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement") +}; -/***/ }), +pp$8.parseDoStatement = function(node) { + this.next(); + this.labels.push(loopLabel); + node.body = this.parseStatement("do"); + this.labels.pop(); + this.expect(types$1._while); + node.test = this.parseParenExpression(); + if (this.options.ecmaVersion >= 6) + { this.eat(types$1.semi); } + else + { this.semicolon(); } + return this.finishNode(node, "DoWhileStatement") +}; -/***/ 27633: -/***/ ((module) => { +// Disambiguating between a `for` and a `for`/`in` or `for`/`of` +// loop is non-trivial. Basically, we have to parse the init `var` +// statement or expression, disallowing the `in` operator (see +// the second parameter to `parseExpression`), and then check +// whether the next token is `in` or `of`. When there is no init +// part (semicolon immediately after the opening parenthesis), it +// is a regular `for` loop. + +pp$8.parseForStatement = function(node) { + this.next(); + var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await")) ? this.lastTokStart : -1; + this.labels.push(loopLabel); + this.enterScope(0); + this.expect(types$1.parenL); + if (this.type === types$1.semi) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, null) + } + var isLet = this.isLet(); + if (this.type === types$1._var || this.type === types$1._const || isLet) { + var init$1 = this.startNode(), kind = isLet ? "let" : this.value; + this.next(); + this.parseVar(init$1, true, kind); + this.finishNode(init$1, "VariableDeclaration"); + if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types$1._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + return this.parseForIn(node, init$1) + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init$1) + } + var startsWithLet = this.isContextual("let"), isForOf = false; + var containsEsc = this.containsEsc; + var refDestructuringErrors = new DestructuringErrors; + var initPos = this.start; + var init = awaitAt > -1 + ? this.parseExprSubscripts(refDestructuringErrors, "await") + : this.parseExpression(true, refDestructuringErrors); + if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt) + if (this.type === types$1._in) { this.unexpected(awaitAt); } + node.await = true; + } else if (isForOf && this.options.ecmaVersion >= 8) { + if (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async") { this.unexpected(); } + else if (this.options.ecmaVersion >= 9) { node.await = false; } + } + if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } + this.toAssignable(init, false, refDestructuringErrors); + this.checkLValPattern(init); + return this.parseForIn(node, init) + } else { + this.checkExpressionErrors(refDestructuringErrors, true); + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init) +}; -"use strict"; +pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) +}; +pp$8.parseIfStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + // allow function declarations in branches, but only in non-strict mode + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement") +}; -var own = {}.hasOwnProperty +pp$8.parseReturnStatement = function(node) { + if (!this.inFunction && !this.options.allowReturnOutsideFunction) + { this.raise(this.start, "'return' outside of function"); } + this.next(); -module.exports = stringify + // In `return` (and `break`/`continue`), the keywords with + // optional arguments, we eagerly look for a semicolon or the + // possibility to insert one. -function stringify(value) { - // Nothing. - if (!value || typeof value !== 'object') { - return '' - } + if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; } + else { node.argument = this.parseExpression(); this.semicolon(); } + return this.finishNode(node, "ReturnStatement") +}; - // Node. - if (own.call(value, 'position') || own.call(value, 'type')) { - return position(value.position) +pp$8.parseSwitchStatement = function(node) { + this.next(); + node.discriminant = this.parseParenExpression(); + node.cases = []; + this.expect(types$1.braceL); + this.labels.push(switchLabel); + this.enterScope(0); + + // Statements under must be grouped (by label) in SwitchCase + // nodes. `cur` is used to keep the node that we are currently + // adding statements to. + + var cur; + for (var sawDefault = false; this.type !== types$1.braceR;) { + if (this.type === types$1._case || this.type === types$1._default) { + var isCase = this.type === types$1._case; + if (cur) { this.finishNode(cur, "SwitchCase"); } + node.cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } + sawDefault = true; + cur.test = null; + } + this.expect(types$1.colon); + } else { + if (!cur) { this.unexpected(); } + cur.consequent.push(this.parseStatement(null)); + } } + this.exitScope(); + if (cur) { this.finishNode(cur, "SwitchCase"); } + this.next(); // Closing brace + this.labels.pop(); + return this.finishNode(node, "SwitchStatement") +}; - // Position. - if (own.call(value, 'start') || own.call(value, 'end')) { - return position(value) - } +pp$8.parseThrowStatement = function(node) { + this.next(); + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) + { this.raise(this.lastTokEnd, "Illegal newline after throw"); } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement") +}; - // Point. - if (own.call(value, 'line') || own.call(value, 'column')) { - return point(value) - } +// Reused empty array added for node fields that are always empty. - // ? - return '' -} +var empty$1 = []; -function point(point) { - if (!point || typeof point !== 'object') { - point = {} - } +pp$8.parseCatchClauseParam = function() { + var param = this.parseBindingAtom(); + var simple = param.type === "Identifier"; + this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); + this.expect(types$1.parenR); - return index(point.line) + ':' + index(point.column) -} + return param +}; -function position(pos) { - if (!pos || typeof pos !== 'object') { - pos = {} +pp$8.parseTryStatement = function(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.type === types$1._catch) { + var clause = this.startNode(); + this.next(); + if (this.eat(types$1.parenL)) { + clause.param = this.parseCatchClauseParam(); + } else { + if (this.options.ecmaVersion < 10) { this.unexpected(); } + clause.param = null; + this.enterScope(0); + } + clause.body = this.parseBlock(false); + this.exitScope(); + node.handler = this.finishNode(clause, "CatchClause"); } + node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) + { this.raise(node.start, "Missing catch or finally clause"); } + return this.finishNode(node, "TryStatement") +}; - return point(pos.start) + '-' + point(pos.end) -} +pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration") +}; -function index(value) { - return value && typeof value === 'number' ? value : 1 -} +pp$8.parseWhileStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + this.labels.push(loopLabel); + node.body = this.parseStatement("while"); + this.labels.pop(); + return this.finishNode(node, "WhileStatement") +}; +pp$8.parseWithStatement = function(node) { + if (this.strict) { this.raise(this.start, "'with' in strict mode"); } + this.next(); + node.object = this.parseParenExpression(); + node.body = this.parseStatement("with"); + return this.finishNode(node, "WithStatement") +}; -/***/ }), +pp$8.parseEmptyStatement = function(node) { + this.next(); + return this.finishNode(node, "EmptyStatement") +}; -/***/ 67532: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +pp$8.parseLabeledStatement = function(node, maybeName, expr, context) { + for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) + { + var label = list[i$1]; + + if (label.name === maybeName) + { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); + } } + var kind = this.type.isLoop ? "loop" : this.type === types$1._switch ? "switch" : null; + for (var i = this.labels.length - 1; i >= 0; i--) { + var label$1 = this.labels[i]; + if (label$1.statementStart === node.start) { + // Update information about previous labels on this node + label$1.statementStart = this.start; + label$1.kind = kind; + } else { break } + } + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement") +}; -"use strict"; +pp$8.parseExpressionStatement = function(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement") +}; +// Parse a semicolon-enclosed block of statements, handling `"use +// strict"` declarations when `allowStrict` is true (used for +// function bodies). + +pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) { + if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; + if ( node === void 0 ) node = this.startNode(); + + node.body = []; + this.expect(types$1.braceL); + if (createNewLexicalScope) { this.enterScope(0); } + while (this.type !== types$1.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + if (exitStrict) { this.strict = false; } + this.next(); + if (createNewLexicalScope) { this.exitScope(); } + return this.finishNode(node, "BlockStatement") +}; -module.exports = __nccwpck_require__(3570) +// Parse a regular `for` loop. The disambiguation code in +// `parseStatement` will already have parsed the init statement or +// expression. + +pp$8.parseFor = function(node, init) { + node.init = init; + this.expect(types$1.semi); + node.test = this.type === types$1.semi ? null : this.parseExpression(); + this.expect(types$1.semi); + node.update = this.type === types$1.parenR ? null : this.parseExpression(); + this.expect(types$1.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, "ForStatement") +}; +// Parse a `for`/`in` and `for`/`of` loop, which are almost +// same from parser's perspective. -/***/ }), +pp$8.parseForIn = function(node, init) { + var isForIn = this.type === types$1._in; + this.next(); -/***/ 95985: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if ( + init.type === "VariableDeclaration" && + init.declarations[0].init != null && + ( + !isForIn || + this.options.ecmaVersion < 8 || + this.strict || + init.kind !== "var" || + init.declarations[0].id.type !== "Identifier" + ) + ) { + this.raise( + init.start, + ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") + ); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + this.expect(types$1.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") +}; -"use strict"; +// Parse a list of variable declarations. +pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) { + node.declarations = []; + node.kind = kind; + for (;;) { + var decl = this.startNode(); + this.parseVarId(decl, kind); + if (this.eat(types$1.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else if (!allowMissingInitializer && kind === "const" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { + this.unexpected(); + } else if (!allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of")))) { + this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); + } else { + decl.init = null; + } + node.declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types$1.comma)) { break } + } + return node +}; -var p = __nccwpck_require__(80335) -var proc = __nccwpck_require__(55576) -var buffer = __nccwpck_require__(6324) +pp$8.parseVarId = function(decl, kind) { + decl.id = this.parseBindingAtom(); + this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); +}; -module.exports = VFile +var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; -var own = {}.hasOwnProperty +// Parse a function declaration or literal (depending on the +// `statement & FUNC_STATEMENT`). -// Order of setting (least specific to most), we need this because otherwise -// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a -// stem can be set. -var order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'] +// Remove `allowExpressionBody` for 7.0.0, as it is only called with false +pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { + this.initFunction(node); + if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { + if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT)) + { this.unexpected(); } + node.generator = this.eat(types$1.star); + } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } -VFile.prototype.toString = toString + if (statement & FUNC_STATEMENT) { + node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent(); + if (node.id && !(statement & FUNC_HANGING_STATEMENT)) + // If it is a regular function declaration in sloppy mode, then it is + // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding + // mode depends on properties of the current scope (see + // treatFunctionsAsVar). + { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } + } -// Access full path (`~/index.min.js`). -Object.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath}) + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(node.async, node.generator)); -// Access parent path (`~`). -Object.defineProperty(VFile.prototype, 'dirname', { - get: getDirname, - set: setDirname -}) + if (!(statement & FUNC_STATEMENT)) + { node.id = this.type === types$1.name ? this.parseIdent() : null; } -// Access basename (`index.min.js`). -Object.defineProperty(VFile.prototype, 'basename', { - get: getBasename, - set: setBasename -}) + this.parseFunctionParams(node); + this.parseFunctionBody(node, allowExpressionBody, false, forInit); -// Access extname (`.js`). -Object.defineProperty(VFile.prototype, 'extname', { - get: getExtname, - set: setExtname -}) + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") +}; -// Access stem (`index.min`). -Object.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem}) +pp$8.parseFunctionParams = function(node) { + this.expect(types$1.parenL); + node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); +}; -// Construct a new file. -function VFile(options) { - var prop - var index +// Parse a class declaration or literal (depending on the +// `isStatement` parameter). + +pp$8.parseClass = function(node, isStatement) { + this.next(); + + // ecma-262 14.6 Class Definitions + // A class definition is always strict mode code. + var oldStrict = this.strict; + this.strict = true; + + this.parseClassId(node, isStatement); + this.parseClassSuper(node); + var privateNameMap = this.enterClassBody(); + var classBody = this.startNode(); + var hadConstructor = false; + classBody.body = []; + this.expect(types$1.braceL); + while (this.type !== types$1.braceR) { + var element = this.parseClassElement(node.superClass !== null); + if (element) { + classBody.body.push(element); + if (element.type === "MethodDefinition" && element.kind === "constructor") { + if (hadConstructor) { this.raiseRecoverable(element.start, "Duplicate constructor in the same class"); } + hadConstructor = true; + } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { + this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); + } + } + } + this.strict = oldStrict; + this.next(); + node.body = this.finishNode(classBody, "ClassBody"); + this.exitClassBody(); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") +}; - if (!options) { - options = {} - } else if (typeof options === 'string' || buffer(options)) { - options = {contents: options} - } else if ('message' in options && 'messages' in options) { - return options +pp$8.parseClassElement = function(constructorAllowsSuper) { + if (this.eat(types$1.semi)) { return null } + + var ecmaVersion = this.options.ecmaVersion; + var node = this.startNode(); + var keyName = ""; + var isGenerator = false; + var isAsync = false; + var kind = "method"; + var isStatic = false; + + if (this.eatContextual("static")) { + // Parse static init block + if (ecmaVersion >= 13 && this.eat(types$1.braceL)) { + this.parseClassStaticBlock(node); + return node + } + if (this.isClassElementNameStart() || this.type === types$1.star) { + isStatic = true; + } else { + keyName = "static"; + } + } + node.static = isStatic; + if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { + if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) { + isAsync = true; + } else { + keyName = "async"; + } + } + if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) { + isGenerator = true; + } + if (!keyName && !isAsync && !isGenerator) { + var lastValue = this.value; + if (this.eatContextual("get") || this.eatContextual("set")) { + if (this.isClassElementNameStart()) { + kind = lastValue; + } else { + keyName = lastValue; + } + } } - if (!(this instanceof VFile)) { - return new VFile(options) + // Parse element name + if (keyName) { + // 'async', 'get', 'set', or 'static' were not a keyword contextually. + // The last token is any of those. Make it the element name. + node.computed = false; + node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc); + node.key.name = keyName; + this.finishNode(node.key, "Identifier"); + } else { + this.parseClassElementName(node); } - this.data = {} - this.messages = [] - this.history = [] - this.cwd = proc.cwd() + // Parse element value + if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== "method" || isGenerator || isAsync) { + var isConstructor = !node.static && checkKeyName(node, "constructor"); + var allowsDirectSuper = isConstructor && constructorAllowsSuper; + // Couldn't move this check into the 'parseClassMethod' method for backward compatibility. + if (isConstructor && kind !== "method") { this.raise(node.key.start, "Constructor can't have get/set modifier"); } + node.kind = isConstructor ? "constructor" : kind; + this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper); + } else { + this.parseClassField(node); + } - // Set path related properties in the correct order. - index = -1 + return node +}; - while (++index < order.length) { - prop = order[index] +pp$8.isClassElementNameStart = function() { + return ( + this.type === types$1.name || + this.type === types$1.privateId || + this.type === types$1.num || + this.type === types$1.string || + this.type === types$1.bracketL || + this.type.keyword + ) +}; - if (own.call(options, prop)) { - this[prop] = options[prop] +pp$8.parseClassElementName = function(element) { + if (this.type === types$1.privateId) { + if (this.value === "constructor") { + this.raise(this.start, "Classes can't have an element named '#constructor'"); } + element.computed = false; + element.key = this.parsePrivateIdent(); + } else { + this.parsePropertyName(element); } +}; - // Set non-path related properties. - for (prop in options) { - if (order.indexOf(prop) < 0) { - this[prop] = options[prop] - } +pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { + // Check key and flags + var key = method.key; + if (method.kind === "constructor") { + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + } else if (method.static && checkKeyName(method, "prototype")) { + this.raise(key.start, "Classes may not have a static property named prototype"); } -} - -function getPath() { - return this.history[this.history.length - 1] -} -function setPath(path) { - assertNonEmpty(path, 'path') + // Parse value + var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); - if (this.path !== path) { - this.history.push(path) - } -} + // Check value + if (method.kind === "get" && value.params.length !== 0) + { this.raiseRecoverable(value.start, "getter should have no params"); } + if (method.kind === "set" && value.params.length !== 1) + { this.raiseRecoverable(value.start, "setter should have exactly one param"); } + if (method.kind === "set" && value.params[0].type === "RestElement") + { this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"); } -function getDirname() { - return typeof this.path === 'string' ? p.dirname(this.path) : undefined -} + return this.finishNode(method, "MethodDefinition") +}; -function setDirname(dirname) { - assertPath(this.path, 'dirname') - this.path = p.join(dirname || '', this.basename) -} +pp$8.parseClassField = function(field) { + if (checkKeyName(field, "constructor")) { + this.raise(field.key.start, "Classes can't have a field named 'constructor'"); + } else if (field.static && checkKeyName(field, "prototype")) { + this.raise(field.key.start, "Classes can't have a static field named 'prototype'"); + } -function getBasename() { - return typeof this.path === 'string' ? p.basename(this.path) : undefined -} + if (this.eat(types$1.eq)) { + // To raise SyntaxError if 'arguments' exists in the initializer. + this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER); + field.value = this.parseMaybeAssign(); + this.exitScope(); + } else { + field.value = null; + } + this.semicolon(); -function setBasename(basename) { - assertNonEmpty(basename, 'basename') - assertPart(basename, 'basename') - this.path = p.join(this.dirname || '', basename) -} + return this.finishNode(field, "PropertyDefinition") +}; -function getExtname() { - return typeof this.path === 'string' ? p.extname(this.path) : undefined -} +pp$8.parseClassStaticBlock = function(node) { + node.body = []; -function setExtname(extname) { - assertPart(extname, 'extname') - assertPath(this.path, 'extname') + var oldLabels = this.labels; + this.labels = []; + this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); + while (this.type !== types$1.braceR) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + this.next(); + this.exitScope(); + this.labels = oldLabels; - if (extname) { - if (extname.charCodeAt(0) !== 46 /* `.` */) { - throw new Error('`extname` must start with `.`') - } + return this.finishNode(node, "StaticBlock") +}; - if (extname.indexOf('.', 1) > -1) { - throw new Error('`extname` cannot contain multiple dots') - } +pp$8.parseClassId = function(node, isStatement) { + if (this.type === types$1.name) { + node.id = this.parseIdent(); + if (isStatement) + { this.checkLValSimple(node.id, BIND_LEXICAL, false); } + } else { + if (isStatement === true) + { this.unexpected(); } + node.id = null; } +}; - this.path = p.join(this.dirname, this.stem + (extname || '')) -} +pp$8.parseClassSuper = function(node) { + node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null; +}; -function getStem() { - return typeof this.path === 'string' - ? p.basename(this.path, this.extname) - : undefined -} +pp$8.enterClassBody = function() { + var element = {declared: Object.create(null), used: []}; + this.privateNameStack.push(element); + return element.declared +}; -function setStem(stem) { - assertNonEmpty(stem, 'stem') - assertPart(stem, 'stem') - this.path = p.join(this.dirname || '', stem + (this.extname || '')) -} +pp$8.exitClassBody = function() { + var ref = this.privateNameStack.pop(); + var declared = ref.declared; + var used = ref.used; + if (!this.options.checkPrivateFields) { return } + var len = this.privateNameStack.length; + var parent = len === 0 ? null : this.privateNameStack[len - 1]; + for (var i = 0; i < used.length; ++i) { + var id = used[i]; + if (!hasOwn(declared, id.name)) { + if (parent) { + parent.used.push(id); + } else { + this.raiseRecoverable(id.start, ("Private field '#" + (id.name) + "' must be declared in an enclosing class")); + } + } + } +}; -// Get the value of the file. -function toString(encoding) { - return (this.contents || '').toString(encoding) -} +function isPrivateNameConflicted(privateNameMap, element) { + var name = element.key.name; + var curr = privateNameMap[name]; -// Assert that `part` is not a path (i.e., does not contain `p.sep`). -function assertPart(part, name) { - if (part && part.indexOf(p.sep) > -1) { - throw new Error( - '`' + name + '` cannot be a path: did not expect `' + p.sep + '`' - ) + var next = "true"; + if (element.type === "MethodDefinition" && (element.kind === "get" || element.kind === "set")) { + next = (element.static ? "s" : "i") + element.kind; } -} -// Assert that `part` is not empty. -function assertNonEmpty(part, name) { - if (!part) { - throw new Error('`' + name + '` cannot be empty') + // `class { get #a(){}; static set #a(_){} }` is also conflict. + if ( + curr === "iget" && next === "iset" || + curr === "iset" && next === "iget" || + curr === "sget" && next === "sset" || + curr === "sset" && next === "sget" + ) { + privateNameMap[name] = "true"; + return false + } else if (!curr) { + privateNameMap[name] = next; + return false + } else { + return true } } -// Assert `path` exists. -function assertPath(path, name) { - if (!path) { - throw new Error('Setting `' + name + '` requires `path` to be set too') - } +function checkKeyName(node, name) { + var computed = node.computed; + var key = node.key; + return !computed && ( + key.type === "Identifier" && key.name === name || + key.type === "Literal" && key.value === name + ) } +// Parses module export declaration. -/***/ }), - -/***/ 3570: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var VMessage = __nccwpck_require__(92240) -var VFile = __nccwpck_require__(95985) +pp$8.parseExportAllDeclaration = function(node, exports) { + if (this.options.ecmaVersion >= 11) { + if (this.eatContextual("as")) { + node.exported = this.parseModuleExportName(); + this.checkExport(exports, node.exported, this.lastTokStart); + } else { + node.exported = null; + } + } + this.expectContextual("from"); + if (this.type !== types$1.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + if (this.options.ecmaVersion >= 16) + { node.attributes = this.parseWithClause(); } + this.semicolon(); + return this.finishNode(node, "ExportAllDeclaration") +}; -module.exports = VFile +pp$8.parseExport = function(node, exports) { + this.next(); + // export * from '...' + if (this.eat(types$1.star)) { + return this.parseExportAllDeclaration(node, exports) + } + if (this.eat(types$1._default)) { // export default ... + this.checkExport(exports, "default", this.lastTokStart); + node.declaration = this.parseExportDefaultDeclaration(); + return this.finishNode(node, "ExportDefaultDeclaration") + } + // export var|const|let|function|class ... + if (this.shouldParseExportStatement()) { + node.declaration = this.parseExportDeclaration(node); + if (node.declaration.type === "VariableDeclaration") + { this.checkVariableExport(exports, node.declaration.declarations); } + else + { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } + node.specifiers = []; + node.source = null; + if (this.options.ecmaVersion >= 16) + { node.attributes = []; } + } else { // export { x, y as z } [from '...'] + node.declaration = null; + node.specifiers = this.parseExportSpecifiers(exports); + if (this.eatContextual("from")) { + if (this.type !== types$1.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + if (this.options.ecmaVersion >= 16) + { node.attributes = this.parseWithClause(); } + } else { + for (var i = 0, list = node.specifiers; i < list.length; i += 1) { + // check for keywords used as local names + var spec = list[i]; -VFile.prototype.message = message -VFile.prototype.info = info -VFile.prototype.fail = fail + this.checkUnreserved(spec.local); + // check if export is defined + this.checkLocalExport(spec.local); -// Create a message with `reason` at `position`. -// When an error is passed in as `reason`, copies the stack. -function message(reason, position, origin) { - var message = new VMessage(reason, position, origin) + if (spec.local.type === "Literal") { + this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); + } + } - if (this.path) { - message.name = this.path + ':' + message.name - message.file = this.path + node.source = null; + if (this.options.ecmaVersion >= 16) + { node.attributes = []; } + } + this.semicolon(); } + return this.finishNode(node, "ExportNamedDeclaration") +}; - message.fatal = false - - this.messages.push(message) +pp$8.parseExportDeclaration = function(node) { + return this.parseStatement(null) +}; - return message -} +pp$8.parseExportDefaultDeclaration = function() { + var isAsync; + if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) { + var fNode = this.startNode(); + this.next(); + if (isAsync) { this.next(); } + return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync) + } else if (this.type === types$1._class) { + var cNode = this.startNode(); + return this.parseClass(cNode, "nullableID") + } else { + var declaration = this.parseMaybeAssign(); + this.semicolon(); + return declaration + } +}; -// Fail: creates a vmessage, associates it with the file, and throws it. -function fail() { - var message = this.message.apply(this, arguments) +pp$8.checkExport = function(exports, name, pos) { + if (!exports) { return } + if (typeof name !== "string") + { name = name.type === "Identifier" ? name.name : name.value; } + if (hasOwn(exports, name)) + { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } + exports[name] = true; +}; - message.fatal = true +pp$8.checkPatternExport = function(exports, pat) { + var type = pat.type; + if (type === "Identifier") + { this.checkExport(exports, pat, pat.start); } + else if (type === "ObjectPattern") + { for (var i = 0, list = pat.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkPatternExport(exports, prop); + } } + else if (type === "ArrayPattern") + { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { + var elt = list$1[i$1]; + + if (elt) { this.checkPatternExport(exports, elt); } + } } + else if (type === "Property") + { this.checkPatternExport(exports, pat.value); } + else if (type === "AssignmentPattern") + { this.checkPatternExport(exports, pat.left); } + else if (type === "RestElement") + { this.checkPatternExport(exports, pat.argument); } +}; - throw message -} +pp$8.checkVariableExport = function(exports, decls) { + if (!exports) { return } + for (var i = 0, list = decls; i < list.length; i += 1) + { + var decl = list[i]; -// Info: creates a vmessage, associates it with the file, and marks the fatality -// as null. -function info() { - var message = this.message.apply(this, arguments) + this.checkPatternExport(exports, decl.id); + } +}; - message.fatal = null +pp$8.shouldParseExportStatement = function() { + return this.type.keyword === "var" || + this.type.keyword === "const" || + this.type.keyword === "class" || + this.type.keyword === "function" || + this.isLet() || + this.isAsyncFunction() +}; - return message -} +// Parses a comma-separated list of module exports. +pp$8.parseExportSpecifier = function(exports) { + var node = this.startNode(); + node.local = this.parseModuleExportName(); -/***/ }), + node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; + this.checkExport( + exports, + node.exported, + node.exported.start + ); -/***/ 80335: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return this.finishNode(node, "ExportSpecifier") +}; -"use strict"; +pp$8.parseExportSpecifiers = function(exports) { + var nodes = [], first = true; + // export { x, y as z } [from '...'] + this.expect(types$1.braceL); + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } + nodes.push(this.parseExportSpecifier(exports)); + } + return nodes +}; -module.exports = __nccwpck_require__(71017) +// Parses import declaration. +pp$8.parseImport = function(node) { + this.next(); -/***/ }), + // import '...' + if (this.type === types$1.string) { + node.specifiers = empty$1; + node.source = this.parseExprAtom(); + } else { + node.specifiers = this.parseImportSpecifiers(); + this.expectContextual("from"); + node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected(); + } + if (this.options.ecmaVersion >= 16) + { node.attributes = this.parseWithClause(); } + this.semicolon(); + return this.finishNode(node, "ImportDeclaration") +}; -/***/ 55576: -/***/ ((module) => { +// Parses a comma-separated list of module imports. -"use strict"; +pp$8.parseImportSpecifier = function() { + var node = this.startNode(); + node.imported = this.parseModuleExportName(); + if (this.eatContextual("as")) { + node.local = this.parseIdent(); + } else { + this.checkUnreserved(node.imported); + node.local = node.imported; + } + this.checkLValSimple(node.local, BIND_LEXICAL); -module.exports = process + return this.finishNode(node, "ImportSpecifier") +}; +pp$8.parseImportDefaultSpecifier = function() { + // import defaultObj, { x, y as z } from '...' + var node = this.startNode(); + node.local = this.parseIdent(); + this.checkLValSimple(node.local, BIND_LEXICAL); + return this.finishNode(node, "ImportDefaultSpecifier") +}; -/***/ }), +pp$8.parseImportNamespaceSpecifier = function() { + var node = this.startNode(); + this.next(); + this.expectContextual("as"); + node.local = this.parseIdent(); + this.checkLValSimple(node.local, BIND_LEXICAL); + return this.finishNode(node, "ImportNamespaceSpecifier") +}; -/***/ 84586: -/***/ ((module) => { +pp$8.parseImportSpecifiers = function() { + var nodes = [], first = true; + if (this.type === types$1.name) { + nodes.push(this.parseImportDefaultSpecifier()); + if (!this.eat(types$1.comma)) { return nodes } + } + if (this.type === types$1.star) { + nodes.push(this.parseImportNamespaceSpecifier()); + return nodes + } + this.expect(types$1.braceL); + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) + nodes.push(this.parseImportSpecifier()); + } + return nodes +}; - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') +pp$8.parseWithClause = function() { + var nodes = []; + if (!this.eat(types$1._with)) { + return nodes + } + this.expect(types$1.braceL); + var attributeKeys = {}; + var first = true; + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) + var attr = this.parseImportAttribute(); + var keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value; + if (hasOwn(attributeKeys, keyName)) + { this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"); } + attributeKeys[keyName] = true; + nodes.push(attr); + } + return nodes +}; - return wrapper +pp$8.parseImportAttribute = function() { + var node = this.startNode(); + node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"); + this.expect(types$1.colon); + if (this.type !== types$1.string) { + this.unexpected(); + } + node.value = this.parseExprAtom(); + return this.finishNode(node, "ImportAttribute") +}; - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) +pp$8.parseModuleExportName = function() { + if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { + var stringLiteral = this.parseLiteral(this.value); + if (loneSurrogate.test(stringLiteral.value)) { + this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); } - return ret + return stringLiteral } -} - - -/***/ }), + return this.parseIdent(true) +}; -/***/ 76738: -/***/ ((module) => { +// Set `ExpressionStatement#directive` property for directive prologues. +pp$8.adaptDirectivePrologue = function(statements) { + for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { + statements[i].directive = statements[i].expression.raw.slice(1, -1); + } +}; +pp$8.isDirectiveCandidate = function(statement) { + return ( + this.options.ecmaVersion >= 5 && + statement.type === "ExpressionStatement" && + statement.expression.type === "Literal" && + typeof statement.expression.value === "string" && + // Reject parenthesized strings. + (this.input[statement.start] === "\"" || this.input[statement.start] === "'") + ) +}; -module.exports = extend +var pp$7 = Parser.prototype; -var hasOwnProperty = Object.prototype.hasOwnProperty; +// Convert existing expression atom to assignable pattern +// if possible. -function extend() { - var target = {} +pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) { + if (this.options.ecmaVersion >= 6 && node) { + switch (node.type) { + case "Identifier": + if (this.inAsync && node.name === "await") + { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } + break - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } + case "ObjectExpression": + node.type = "ObjectPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) { + var prop = list[i]; + + this.toAssignable(prop, isBinding); + // Early error: + // AssignmentRestProperty[Yield, Await] : + // `...` DestructuringAssignmentTarget[Yield, Await] + // + // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. + if ( + prop.type === "RestElement" && + (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") + ) { + this.raise(prop.argument.start, "Unexpected token"); } - } - - return target -} - - -/***/ }), - -/***/ 39491: -/***/ ((module) => { - -"use strict"; -module.exports = require("assert"); - -/***/ }), - -/***/ 14300: -/***/ ((module) => { + } + break -"use strict"; -module.exports = require("buffer"); + case "Property": + // AssignmentProperty has type === "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); + break -/***/ }), + case "ArrayExpression": + node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + this.toAssignableList(node.elements, isBinding); + break -/***/ 22057: -/***/ ((module) => { + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break -"use strict"; -module.exports = require("constants"); + case "AssignmentExpression": + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + break -/***/ }), + case "ParenthesizedExpression": + this.toAssignable(node.expression, isBinding, refDestructuringErrors); + break -/***/ 6113: -/***/ ((module) => { + case "ChainExpression": + this.raiseRecoverable(node.start, "Optional chaining cannot appear in left-hand side"); + break -"use strict"; -module.exports = require("crypto"); + case "MemberExpression": + if (!isBinding) { break } -/***/ }), + default: + this.raise(node.start, "Assigning to rvalue"); + } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + return node +}; -/***/ 82361: -/***/ ((module) => { +// Convert list of expression atoms to binding list. -"use strict"; -module.exports = require("events"); +pp$7.toAssignableList = function(exprList, isBinding) { + var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this.toAssignable(elt, isBinding); } + } + if (end) { + var last = exprList[end - 1]; + if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") + { this.unexpected(last.argument.start); } + } + return exprList +}; -/***/ }), +// Parses spread element. -/***/ 57147: -/***/ ((module) => { +pp$7.parseSpread = function(refDestructuringErrors) { + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(false, refDestructuringErrors); + return this.finishNode(node, "SpreadElement") +}; -"use strict"; -module.exports = require("fs"); +pp$7.parseRestBinding = function() { + var node = this.startNode(); + this.next(); -/***/ }), + // RestElement inside of a function parameter must be an identifier + if (this.options.ecmaVersion === 6 && this.type !== types$1.name) + { this.unexpected(); } -/***/ 13685: -/***/ ((module) => { + node.argument = this.parseBindingAtom(); -"use strict"; -module.exports = require("http"); + return this.finishNode(node, "RestElement") +}; -/***/ }), +// Parses lvalue (assignable) atom. -/***/ 95687: -/***/ ((module) => { +pp$7.parseBindingAtom = function() { + if (this.options.ecmaVersion >= 6) { + switch (this.type) { + case types$1.bracketL: + var node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types$1.bracketR, true, true); + return this.finishNode(node, "ArrayPattern") -"use strict"; -module.exports = require("https"); + case types$1.braceL: + return this.parseObj(true) + } + } + return this.parseIdent() +}; -/***/ }), +pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) { + var elts = [], first = true; + while (!this.eat(close)) { + if (first) { first = false; } + else { this.expect(types$1.comma); } + if (allowEmpty && this.type === types$1.comma) { + elts.push(null); + } else if (allowTrailingComma && this.afterTrailingComma(close)) { + break + } else if (this.type === types$1.ellipsis) { + var rest = this.parseRestBinding(); + this.parseBindingListItem(rest); + elts.push(rest); + if (this.type === types$1.comma) { this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); } + this.expect(close); + break + } else { + elts.push(this.parseAssignableListItem(allowModifiers)); + } + } + return elts +}; -/***/ 98188: -/***/ ((module) => { +pp$7.parseAssignableListItem = function(allowModifiers) { + var elem = this.parseMaybeDefault(this.start, this.startLoc); + this.parseBindingListItem(elem); + return elem +}; -"use strict"; -module.exports = require("module"); +pp$7.parseBindingListItem = function(param) { + return param +}; -/***/ }), +// Parses assignment pattern around given atom if possible. -/***/ 41808: -/***/ ((module) => { +pp$7.parseMaybeDefault = function(startPos, startLoc, left) { + left = left || this.parseBindingAtom(); + if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern") +}; -"use strict"; -module.exports = require("net"); +// The following three functions all verify that a node is an lvalue — +// something that can be bound, or assigned to. In order to do so, they perform +// a variety of checks: +// +// - Check that none of the bound/assigned-to identifiers are reserved words. +// - Record name declarations for bindings in the appropriate scope. +// - Check duplicate argument names, if checkClashes is set. +// +// If a complex binding pattern is encountered (e.g., object and array +// destructuring), the entire pattern is recursively checked. +// +// There are three versions of checkLVal*() appropriate for different +// circumstances: +// +// - checkLValSimple() shall be used if the syntactic construct supports +// nothing other than identifiers and member expressions. Parenthesized +// expressions are also correctly handled. This is generally appropriate for +// constructs for which the spec says +// +// > It is a Syntax Error if AssignmentTargetType of [the production] is not +// > simple. +// +// It is also appropriate for checking if an identifier is valid and not +// defined elsewhere, like import declarations or function/class identifiers. +// +// Examples where this is used include: +// a += …; +// import a from '…'; +// where a is the node to be checked. +// +// - checkLValPattern() shall be used if the syntactic construct supports +// anything checkLValSimple() supports, as well as object and array +// destructuring patterns. This is generally appropriate for constructs for +// which the spec says +// +// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor +// > an ArrayLiteral and AssignmentTargetType of [the production] is not +// > simple. +// +// Examples where this is used include: +// (a = …); +// const a = …; +// try { … } catch (a) { … } +// where a is the node to be checked. +// +// - checkLValInnerPattern() shall be used if the syntactic construct supports +// anything checkLValPattern() supports, as well as default assignment +// patterns, rest elements, and other constructs that may appear within an +// object or array destructuring pattern. +// +// As a special case, function parameters also use checkLValInnerPattern(), +// as they also support defaults and rest constructs. +// +// These functions deliberately support both assignment and binding constructs, +// as the logic for both is exceedingly similar. If the node is the target of +// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it +// should be set to the appropriate BIND_* constant, like BIND_VAR or +// BIND_LEXICAL. +// +// If the function is called with a non-BIND_NONE bindingType, then +// additionally a checkClashes object may be specified to allow checking for +// duplicate argument names. checkClashes is ignored if the provided construct +// is an assignment (i.e., bindingType is BIND_NONE). + +pp$7.checkLValSimple = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; + + var isBind = bindingType !== BIND_NONE; + + switch (expr.type) { + case "Identifier": + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) + { this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } + if (isBind) { + if (bindingType === BIND_LEXICAL && expr.name === "let") + { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } + if (checkClashes) { + if (hasOwn(checkClashes, expr.name)) + { this.raiseRecoverable(expr.start, "Argument name clash"); } + checkClashes[expr.name] = true; + } + if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } + } + break -/***/ }), + case "ChainExpression": + this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side"); + break -/***/ 22037: -/***/ ((module) => { + case "MemberExpression": + if (isBind) { this.raiseRecoverable(expr.start, "Binding member expression"); } + break -"use strict"; -module.exports = require("os"); + case "ParenthesizedExpression": + if (isBind) { this.raiseRecoverable(expr.start, "Binding parenthesized expression"); } + return this.checkLValSimple(expr.expression, bindingType, checkClashes) -/***/ }), + default: + this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue"); + } +}; -/***/ 71017: -/***/ ((module) => { +pp$7.checkLValPattern = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; -"use strict"; -module.exports = require("path"); + switch (expr.type) { + case "ObjectPattern": + for (var i = 0, list = expr.properties; i < list.length; i += 1) { + var prop = list[i]; -/***/ }), + this.checkLValInnerPattern(prop, bindingType, checkClashes); + } + break -/***/ 12781: -/***/ ((module) => { + case "ArrayPattern": + for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { + var elem = list$1[i$1]; -"use strict"; -module.exports = require("stream"); + if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); } + } + break -/***/ }), + default: + this.checkLValSimple(expr, bindingType, checkClashes); + } +}; -/***/ 71576: -/***/ ((module) => { +pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; -"use strict"; -module.exports = require("string_decoder"); + switch (expr.type) { + case "Property": + // AssignmentProperty has type === "Property" + this.checkLValInnerPattern(expr.value, bindingType, checkClashes); + break -/***/ }), + case "AssignmentPattern": + this.checkLValPattern(expr.left, bindingType, checkClashes); + break -/***/ 24404: -/***/ ((module) => { + case "RestElement": + this.checkLValPattern(expr.argument, bindingType, checkClashes); + break -"use strict"; -module.exports = require("tls"); + default: + this.checkLValPattern(expr, bindingType, checkClashes); + } +}; -/***/ }), +// The algorithm used to determine whether a regexp can appear at a +// given point in the program is loosely based on sweet.js' approach. +// See https://github.com/mozilla/sweet.js/wiki/design -/***/ 76224: -/***/ ((module) => { -"use strict"; -module.exports = require("tty"); +var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; +}; -/***/ }), +var types = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) +}; -/***/ 57310: -/***/ ((module) => { +var pp$6 = Parser.prototype; -"use strict"; -module.exports = require("url"); +pp$6.initialContext = function() { + return [types.b_stat] +}; -/***/ }), +pp$6.curContext = function() { + return this.context[this.context.length - 1] +}; -/***/ 73837: -/***/ ((module) => { +pp$6.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types.f_expr || parent === types.f_stat) + { return true } + if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow) + { return true } + if (prevType === types$1.braceL) + { return parent === types.b_stat } + if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name) + { return false } + return !this.exprAllowed +}; -"use strict"; -module.exports = require("util"); +pp$6.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false +}; -/***/ }), +pp$6.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types$1.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } +}; -/***/ 26144: -/***/ ((module) => { +// Used to handle edge cases when token context could not be inferred correctly during tokenization phase -"use strict"; -module.exports = require("vm"); +pp$6.overrideContext = function(tokenCtx) { + if (this.curContext() !== tokenCtx) { + this.context[this.context.length - 1] = tokenCtx; + } +}; -/***/ }), +// Token-specific context update code -/***/ 71267: -/***/ ((module) => { +types$1.parenR.updateContext = types$1.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; +}; -"use strict"; -module.exports = require("worker_threads"); +types$1.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); + this.exprAllowed = true; +}; -/***/ }), +types$1.dollarBraceL.updateContext = function() { + this.context.push(types.b_tmpl); + this.exprAllowed = true; +}; -/***/ 87952: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +types$1.parenL.updateContext = function(prevType) { + var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while; + this.context.push(statementParens ? types.p_stat : types.p_expr); + this.exprAllowed = true; +}; -"use strict"; +types$1.incDec.updateContext = function() { + // tokExprAllowed stays unchanged +}; +types$1._function.updateContext = types$1._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types$1._else && + !(prevType === types$1.semi && this.curContext() !== types.p_stat) && + !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat)) + { this.context.push(types.f_expr); } + else + { this.context.push(types.f_stat); } + this.exprAllowed = false; +}; -const { isColorSupported } = __nccwpck_require__(65595) -const pump = __nccwpck_require__(89595) -const { Transform } = __nccwpck_require__(30675) -const abstractTransport = __nccwpck_require__(90795) -const sjs = __nccwpck_require__(29131) -const colors = __nccwpck_require__(84022) -const { ERROR_LIKE_KEYS, MESSAGE_KEY, TIMESTAMP_KEY, LEVEL_KEY, LEVEL_NAMES } = __nccwpck_require__(73985) -const { - isObject, - prettifyErrorLog, - prettifyLevel, - prettifyMessage, - prettifyMetadata, - prettifyObject, - prettifyTime, - buildSafeSonicBoom, - filterLog -} = __nccwpck_require__(34372) - -const jsonParser = input => { - try { - return { value: sjs.parse(input, { protoAction: 'remove' }) } - } catch (err) { - return { err } - } -} - -const defaultOptions = { - colorize: isColorSupported, - crlf: false, - errorLikeObjectKeys: ERROR_LIKE_KEYS, - errorProps: '', - customLevels: null, - customColors: null, - levelFirst: false, - messageKey: MESSAGE_KEY, - messageFormat: false, - timestampKey: TIMESTAMP_KEY, - translateTime: false, - useMetadata: false, - outputStream: process.stdout, - customPrettifiers: {}, - hideObject: false, - singleLine: false -} - -function prettyFactory (options) { - const opts = Object.assign({}, defaultOptions, options) - const EOL = opts.crlf ? '\r\n' : '\n' - const IDENT = ' ' - const messageKey = opts.messageKey - const levelKey = opts.levelKey - const levelLabel = opts.levelLabel - const minimumLevel = opts.minimumLevel - const messageFormat = opts.messageFormat - const timestampKey = opts.timestampKey - const errorLikeObjectKeys = opts.errorLikeObjectKeys - const errorProps = opts.errorProps.split(',') - const customLevels = opts.customLevels - ? opts.customLevels - .split(',') - .reduce((agg, value, idx) => { - const [levelName, levelIdx = idx] = value.split(':') +types$1.colon.updateContext = function() { + if (this.curContext().token === "function") { this.context.pop(); } + this.exprAllowed = true; +}; - agg[levelIdx] = levelName.toUpperCase() +types$1.backQuote.updateContext = function() { + if (this.curContext() === types.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types.q_tmpl); } + this.exprAllowed = false; +}; - return agg - }, { default: 'USERLVL' }) - : undefined - const customLevelNames = opts.customLevels - ? opts.customLevels - .split(',') - .reduce((agg, value, idx) => { - const [levelName, levelIdx = idx] = value.split(':') +types$1.star.updateContext = function(prevType) { + if (prevType === types$1._function) { + var index = this.context.length - 1; + if (this.context[index] === types.f_expr) + { this.context[index] = types.f_expr_gen; } + else + { this.context[index] = types.f_gen; } + } + this.exprAllowed = true; +}; - agg[levelName] = levelIdx +types$1.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; +}; - return agg - }, {}) - : undefined - const customColors = opts.customColors - ? opts.customColors - .split(',') - .reduce((agg, value) => { - const [level, color] = value.split(':') - - const levelNum = customLevelNames !== undefined ? customLevelNames[level] : LEVEL_NAMES[level] - const colorIdx = levelNum !== undefined ? levelNum : level - - agg.push([colorIdx, color]) - - return agg - }, []) - : undefined - const customPrettifiers = opts.customPrettifiers - const ignoreKeys = opts.ignore ? new Set(opts.ignore.split(',')) : undefined - const hideObject = opts.hideObject - const singleLine = opts.singleLine - const colorizer = colors(opts.colorize, customColors) - - return pretty - - function pretty (inputData) { - let log - if (!isObject(inputData)) { - const parsed = jsonParser(inputData) - if (parsed.err || !isObject(parsed.value)) { - // pass through - return inputData + EOL - } - log = parsed.value - } else { - log = inputData +// A recursive descent parser operates by defining functions for all +// syntactic elements, and recursively calling those, each function +// advancing the input stream and returning an AST node. Precedence +// of constructs (for example, the fact that `!x[1]` means `!(x[1])` +// instead of `(!x)[1]` is handled by the fact that the parser +// function that parses unary prefix operators is called first, and +// in turn calls the function that parses `[]` subscripts — that +// way, it'll receive the node for `x[1]` already parsed, and wraps +// *that* in the unary operator node. +// +// Acorn uses an [operator precedence parser][opp] to handle binary +// operator precedence, because it is much more compact than using +// the technique outlined above, which uses different, nesting +// functions to specify precedence, for all of the ten binary +// precedence levels that JavaScript defines. +// +// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser + + +var pp$5 = Parser.prototype; + +// Check if property name clashes with already added. +// Object/class getters and setters are not allowed to clash — +// either with each other or with an init property — and in +// strict mode, init properties are also not allowed to be repeated. + +pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) { + if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") + { return } + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) + { return } + var key = prop.key; + var name; + switch (key.type) { + case "Identifier": name = key.name; break + case "Literal": name = String(key.value); break + default: return + } + var kind = prop.kind; + if (this.options.ecmaVersion >= 6) { + if (name === "__proto__" && kind === "init") { + if (propHash.proto) { + if (refDestructuringErrors) { + if (refDestructuringErrors.doubleProto < 0) { + refDestructuringErrors.doubleProto = key.start; + } + } else { + this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); + } + } + propHash.proto = true; } - - if (minimumLevel) { - const minimum = (customLevelNames === undefined ? LEVEL_NAMES[minimumLevel] : customLevelNames[minimumLevel]) || Number(minimumLevel) - const level = log[levelKey === undefined ? LEVEL_KEY : levelKey] - if (level < minimum) return + return + } + name = "$" + name; + var other = propHash[name]; + if (other) { + var redefinition; + if (kind === "init") { + redefinition = this.strict && other.init || other.get || other.set; + } else { + redefinition = other.init || other[kind]; } + if (redefinition) + { this.raiseRecoverable(key.start, "Redefinition of property"); } + } else { + other = propHash[name] = { + init: false, + get: false, + set: false + }; + } + other[kind] = true; +}; - const prettifiedMessage = prettifyMessage({ log, messageKey, colorizer, messageFormat, levelLabel }) +// ### Expression parsing + +// These nest, from the most general expression type at the top to +// 'atomic', nondivisible expression types at the bottom. Most of +// the functions will simply let the function(s) below them parse, +// and, *if* the syntactic construct they handle is present, wrap +// the AST node that the inner parser gave them in another node. + +// Parse a full expression. The optional arguments are used to +// forbid the `in` operator (in for loops initalization expressions) +// and provide reference for storing '=' operator inside shorthand +// property assignment in contexts where both object expression +// and object pattern might appear (so it's possible to raise +// delayed syntax error at correct position). + +pp$5.parseExpression = function(forInit, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); + if (this.type === types$1.comma) { + var node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); } + return this.finishNode(node, "SequenceExpression") + } + return expr +}; - if (ignoreKeys) { - log = filterLog(log, ignoreKeys) - } +// Parse an assignment expression. This includes applications of +// operators like `+=`. - const prettifiedLevel = prettifyLevel({ log, colorizer, levelKey, prettifier: customPrettifiers.level, customLevels, customLevelNames }) - const prettifiedMetadata = prettifyMetadata({ log, prettifiers: customPrettifiers }) - const prettifiedTime = prettifyTime({ log, translateFormat: opts.translateTime, timestampKey, prettifier: customPrettifiers.time }) +pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { + if (this.isContextual("yield")) { + if (this.inGenerator) { return this.parseYield(forInit) } + // The tokenizer will assume an expression is allowed after + // `yield`, but this isn't that kind of yield + else { this.exprAllowed = false; } + } - let line = '' - if (opts.levelFirst && prettifiedLevel) { - line = `${prettifiedLevel}` - } + var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1; + if (refDestructuringErrors) { + oldParenAssign = refDestructuringErrors.parenthesizedAssign; + oldTrailingComma = refDestructuringErrors.trailingComma; + oldDoubleProto = refDestructuringErrors.doubleProto; + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; + } else { + refDestructuringErrors = new DestructuringErrors; + ownDestructuringErrors = true; + } + + var startPos = this.start, startLoc = this.startLoc; + if (this.type === types$1.parenL || this.type === types$1.name) { + this.potentialArrowAt = this.start; + this.potentialArrowInForAwait = forInit === "await"; + } + var left = this.parseMaybeConditional(forInit, refDestructuringErrors); + if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } + if (this.type.isAssign) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.value; + if (this.type === types$1.eq) + { left = this.toAssignable(left, false, refDestructuringErrors); } + if (!ownDestructuringErrors) { + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; + } + if (refDestructuringErrors.shorthandAssign >= left.start) + { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly + if (this.type === types$1.eq) + { this.checkLValPattern(left); } + else + { this.checkLValSimple(left); } + node.left = left; + this.next(); + node.right = this.parseMaybeAssign(forInit); + if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; } + return this.finishNode(node, "AssignmentExpression") + } else { + if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } + } + if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } + if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } + return left +}; - if (prettifiedTime && line === '') { - line = `${prettifiedTime}` - } else if (prettifiedTime) { - line = `${line} ${prettifiedTime}` - } +// Parse a ternary conditional (`?:`) operator. - if (!opts.levelFirst && prettifiedLevel) { - if (line.length > 0) { - line = `${line} ${prettifiedLevel}` - } else { - line = prettifiedLevel - } - } +pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprOps(forInit, refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + if (this.eat(types$1.question)) { + var node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(types$1.colon); + node.alternate = this.parseMaybeAssign(forInit); + return this.finishNode(node, "ConditionalExpression") + } + return expr +}; - if (prettifiedMetadata) { - if (line.length > 0) { - line = `${line} ${prettifiedMetadata}:` - } else { - line = prettifiedMetadata - } - } +// Start the precedence parser. - if (line.endsWith(':') === false && line !== '') { - line += ':' - } +pp$5.parseExprOps = function(forInit, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) +}; - if (prettifiedMessage) { - if (line.length > 0) { - line = `${line} ${prettifiedMessage}` - } else { - line = prettifiedMessage +// Parse binary operators with the operator precedence parsing +// algorithm. `left` is the left-hand side of the operator. +// `minPrec` provides context that allows the function to stop and +// defer further parser to one of its callers when it encounters an +// operator that has a lower precedence than the set it is parsing. + +pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { + var prec = this.type.binop; + if (prec != null && (!forInit || this.type !== types$1._in)) { + if (prec > minPrec) { + var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND; + var coalesce = this.type === types$1.coalesce; + if (coalesce) { + // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. + // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. + prec = types$1.logicalAND.binop; + } + var op = this.value; + this.next(); + var startPos = this.start, startLoc = this.startLoc; + var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); + if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) { + this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); } + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit) } + } + return left +}; - if (line.length > 0 && !singleLine) { - line += EOL - } - - // pino@7+ does not log this anymore - if (log.type === 'Error' && log.stack) { - const prettifiedErrorLog = prettifyErrorLog({ - log, - errorLikeKeys: errorLikeObjectKeys, - errorProperties: errorProps, - ident: IDENT, - eol: EOL - }) - if (singleLine) line += EOL - line += prettifiedErrorLog - } else if (!hideObject) { - const skipKeys = [messageKey, levelKey, timestampKey].filter(key => typeof log[key] === 'string' || typeof log[key] === 'number') - const prettifiedObject = prettifyObject({ - input: log, - skipKeys, - customPrettifiers, - errorLikeKeys: errorLikeObjectKeys, - eol: EOL, - ident: IDENT, - singleLine, - colorizer - }) +pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) { + if (right.type === "PrivateIdentifier") { this.raise(right.start, "Private identifier can only be left side of binary expression"); } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.operator = op; + node.right = right; + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") +}; - // In single line mode, include a space only if prettified version isn't empty - if (singleLine && !/^\s$/.test(prettifiedObject)) { - line += ' ' - } - line += prettifiedObject +// Parse unary operators, both prefix and postfix. + +pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { + var startPos = this.start, startLoc = this.startLoc, expr; + if (this.isContextual("await") && this.canAwait) { + expr = this.parseAwait(forInit); + sawUnary = true; + } else if (this.type.prefix) { + var node = this.startNode(), update = this.type === types$1.incDec; + node.operator = this.value; + node.prefix = true; + this.next(); + node.argument = this.parseMaybeUnary(null, true, update, forInit); + this.checkExpressionErrors(refDestructuringErrors, true); + if (update) { this.checkLValSimple(node.argument); } + else if (this.strict && node.operator === "delete" && isLocalVariableAccess(node.argument)) + { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } + else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) + { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } + else { sawUnary = true; } + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } else if (!sawUnary && this.type === types$1.privateId) { + if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); } + expr = this.parsePrivateIdent(); + // only could be private fields in 'in', such as #x in obj + if (this.type !== types$1._in) { this.unexpected(); } + } else { + expr = this.parseExprSubscripts(refDestructuringErrors, forInit); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + while (this.type.postfix && !this.canInsertSemicolon()) { + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.operator = this.value; + node$1.prefix = false; + node$1.argument = expr; + this.checkLValSimple(expr); + this.next(); + expr = this.finishNode(node$1, "UpdateExpression"); } - - return line } -} -function build (opts = {}) { - const pretty = prettyFactory(opts) - return abstractTransport(function (source) { - const stream = new Transform({ - objectMode: true, - autoDestroy: true, - transform (chunk, enc, cb) { - const line = pretty(chunk) - cb(null, line) - } - }) + if (!incDec && this.eat(types$1.starstar)) { + if (sawUnary) + { this.unexpected(this.lastTokStart); } + else + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } + } else { + return expr + } +}; - let destination +function isLocalVariableAccess(node) { + return ( + node.type === "Identifier" || + node.type === "ParenthesizedExpression" && isLocalVariableAccess(node.expression) + ) +} - if (typeof opts.destination === 'object' && typeof opts.destination.write === 'function') { - destination = opts.destination - } else { - destination = buildSafeSonicBoom({ - dest: opts.destination || 1, - append: opts.append, - mkdir: opts.mkdir, - sync: opts.sync // by default sonic will be async - }) - } +function isPrivateFieldAccess(node) { + return ( + node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || + node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) || + node.type === "ParenthesizedExpression" && isPrivateFieldAccess(node.expression) + ) +} - source.on('unknown', function (line) { - destination.write(line + '\n') - }) +// Parse call, dot, and `[]`-subscript expressions. - pump(source, stream, destination) - return stream - }, { parse: 'lines' }) -} +pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprAtom(refDestructuringErrors, forInit); + if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") + { return expr } + var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); + if (refDestructuringErrors && result.type === "MemberExpression") { + if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } + if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } + if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; } + } + return result +}; -module.exports = build -module.exports.prettyFactory = prettyFactory -module.exports.colorizerFactory = colors -module.exports["default"] = build +pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && + this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && + this.potentialArrowAt === base.start; + var optionalChained = false; + while (true) { + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); -/***/ }), + if (element.optional) { optionalChained = true; } + if (element === base || element.type === "ArrowFunctionExpression") { + if (optionalChained) { + var chainNode = this.startNodeAt(startPos, startLoc); + chainNode.expression = element; + element = this.finishNode(chainNode, "ChainExpression"); + } + return element + } -/***/ 84022: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + base = element; + } +}; -"use strict"; +pp$5.shouldParseAsyncArrow = function() { + return !this.canInsertSemicolon() && this.eat(types$1.arrow) +}; +pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) +}; -const { LEVELS, LEVEL_NAMES } = __nccwpck_require__(73985) +pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { + var optionalSupported = this.options.ecmaVersion >= 11; + var optional = optionalSupported && this.eat(types$1.questionDot); + if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } -const nocolor = input => input -const plain = { - default: nocolor, - 60: nocolor, - 50: nocolor, - 40: nocolor, - 30: nocolor, - 20: nocolor, - 10: nocolor, - message: nocolor, - greyMessage: nocolor -} + var computed = this.eat(types$1.bracketL); + if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + if (computed) { + node.property = this.parseExpression(); + this.expect(types$1.bracketR); + } else if (this.type === types$1.privateId && base.type !== "Super") { + node.property = this.parsePrivateIdent(); + } else { + node.property = this.parseIdent(this.options.allowReserved !== "never"); + } + node.computed = !!computed; + if (optionalSupported) { + node.optional = optional; + } + base = this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.eat(types$1.parenL)) { + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); + if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + if (this.awaitIdentPos > 0) + { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit) + } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.callee = base; + node$1.arguments = exprList; + if (optionalSupported) { + node$1.optional = optional; + } + base = this.finishNode(node$1, "CallExpression"); + } else if (this.type === types$1.backQuote) { + if (optional || optionalChained) { + this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); + } + var node$2 = this.startNodeAt(startPos, startLoc); + node$2.tag = base; + node$2.quasi = this.parseTemplate({isTagged: true}); + base = this.finishNode(node$2, "TaggedTemplateExpression"); + } + return base +}; -const { createColors } = __nccwpck_require__(65595) -const availableColors = createColors({ useColor: true }) -const { white, bgRed, red, yellow, green, blue, gray, cyan } = availableColors +// Parse an atomic expression — either a single token that is an +// expression, an expression started by a keyword like `function` or +// `new`, or an expression wrapped in punctuation like `()`, `[]`, +// or `{}`. + +pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) { + // If a division operator appears in an expression position, the + // tokenizer got confused, and we force it to read a regexp instead. + if (this.type === types$1.slash) { this.readRegexp(); } + + var node, canBeArrow = this.potentialArrowAt === this.start; + switch (this.type) { + case types$1._super: + if (!this.allowSuper) + { this.raise(this.start, "'super' keyword outside a method"); } + node = this.startNode(); + this.next(); + if (this.type === types$1.parenL && !this.allowDirectSuper) + { this.raise(node.start, "super() call outside constructor of a subclass"); } + // The `super` keyword can appear at below: + // SuperProperty: + // super [ Expression ] + // super . IdentifierName + // SuperCall: + // super ( Arguments ) + if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL) + { this.unexpected(); } + return this.finishNode(node, "Super") + + case types$1._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression") + + case types$1.name: + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; + var id = this.parseIdent(false); + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$1._function)) { + this.overrideContext(types.f_expr); + return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) + } + if (canBeArrow && !this.canInsertSemicolon()) { + if (this.eat(types$1.arrow)) + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$1.name && !containsEsc && + (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { + id = this.parseIdent(false); + if (this.canInsertSemicolon() || !this.eat(types$1.arrow)) + { this.unexpected(); } + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) + } + } + return id + + case types$1.regexp: + var value = this.value; + node = this.parseLiteral(value.value); + node.regex = {pattern: value.pattern, flags: value.flags}; + return node -const colored = { - default: white, - 60: bgRed, - 50: red, - 40: yellow, - 30: green, - 20: blue, - 10: gray, - message: cyan, - greyMessage: gray -} + case types$1.num: case types$1.string: + return this.parseLiteral(this.value) -function resolveCustomColoredColorizer (customColors) { - return customColors.reduce( - function (agg, [level, color]) { - agg[level] = typeof availableColors[color] === 'function' ? availableColors[color] : white + case types$1._null: case types$1._true: case types$1._false: + node = this.startNode(); + node.value = this.type === types$1._null ? null : this.type === types$1._true; + node.raw = this.type.keyword; + this.next(); + return this.finishNode(node, "Literal") - return agg - }, - { default: white, message: cyan, greyMessage: gray } - ) -} + case types$1.parenL: + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); + if (refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) + { refDestructuringErrors.parenthesizedAssign = start; } + if (refDestructuringErrors.parenthesizedBind < 0) + { refDestructuringErrors.parenthesizedBind = start; } + } + return expr -function colorizeLevel (level, colorizer, { customLevels, customLevelNames } = {}) { - const levels = customLevels || LEVELS - const levelNames = customLevelNames || LEVEL_NAMES + case types$1.bracketL: + node = this.startNode(); + this.next(); + node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors); + return this.finishNode(node, "ArrayExpression") - let levelNum = 'default' - if (Number.isInteger(+level)) { - levelNum = Object.prototype.hasOwnProperty.call(levels, level) ? level : levelNum - } else { - levelNum = Object.prototype.hasOwnProperty.call(levelNames, level.toLowerCase()) ? levelNames[level.toLowerCase()] : levelNum - } + case types$1.braceL: + this.overrideContext(types.b_expr); + return this.parseObj(false, refDestructuringErrors) - const levelStr = levels[levelNum] + case types$1._function: + node = this.startNode(); + this.next(); + return this.parseFunction(node, 0) - return Object.prototype.hasOwnProperty.call(colorizer, levelNum) ? colorizer[levelNum](levelStr) : colorizer.default(levelStr) -} + case types$1._class: + return this.parseClass(this.startNode(), false) -function plainColorizer (level, opts) { - return colorizeLevel(level, plain, opts) -} -plainColorizer.message = plain.message -plainColorizer.greyMessage = plain.greyMessage + case types$1._new: + return this.parseNew() -function coloredColorizer (level, opts) { - return colorizeLevel(level, colored, opts) -} -coloredColorizer.message = colored.message -coloredColorizer.greyMessage = colored.greyMessage + case types$1.backQuote: + return this.parseTemplate() -function customColoredColorizerFactory (customColors) { - const customColored = resolveCustomColoredColorizer(customColors) + case types$1._import: + if (this.options.ecmaVersion >= 11) { + return this.parseExprImport(forNew) + } else { + return this.unexpected() + } - const customColoredColorizer = function (level, opts) { - return colorizeLevel(level, customColored, opts) + default: + return this.parseExprAtomDefault() } - customColoredColorizer.message = customColoredColorizer.message || customColored.message - customColoredColorizer.greyMessage = customColoredColorizer.greyMessage || customColored.greyMessage +}; - return customColoredColorizer -} +pp$5.parseExprAtomDefault = function() { + this.unexpected(); +}; -/** - * Factory function get a function to colorized levels. The returned function - * also includes a `.message(str)` method to colorize strings. - * - * @param {boolean} [useColors=false] When `true` a function that applies standard - * terminal colors is returned. - * @param {array[]} [customColors] Touple where first item of each array is the level index and the second item is the color - * - * @returns {function} `function (level) {}` has a `.message(str)` method to - * apply colorization to a string. The core function accepts either an integer - * `level` or a `string` level. The integer level will map to a known level - * string or to `USERLVL` if not known. The string `level` will map to the same - * colors as the integer `level` and will also default to `USERLVL` if the given - * string is not a recognized level name. - */ -module.exports = function getColorizer (useColors = false, customColors) { - if (useColors && customColors !== undefined) { - return customColoredColorizerFactory(customColors) - } else if (useColors) { - return coloredColorizer +pp$5.parseExprImport = function(forNew) { + var node = this.startNode(); + + // Consume `import` as an identifier for `import.meta`. + // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`. + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword import"); } + this.next(); + + if (this.type === types$1.parenL && !forNew) { + return this.parseDynamicImport(node) + } else if (this.type === types$1.dot) { + var meta = this.startNodeAt(node.start, node.loc && node.loc.start); + meta.name = "import"; + node.meta = this.finishNode(meta, "Identifier"); + return this.parseImportMeta(node) + } else { + this.unexpected(); } +}; - return plainColorizer -} +pp$5.parseDynamicImport = function(node) { + this.next(); // skip `(` + // Parse node.source. + node.source = this.parseMaybeAssign(); -/***/ }), + if (this.options.ecmaVersion >= 16) { + if (!this.eat(types$1.parenR)) { + this.expect(types$1.comma); + if (!this.afterTrailingComma(types$1.parenR)) { + node.options = this.parseMaybeAssign(); + if (!this.eat(types$1.parenR)) { + this.expect(types$1.comma); + if (!this.afterTrailingComma(types$1.parenR)) { + this.unexpected(); + } + } + } else { + node.options = null; + } + } else { + node.options = null; + } + } else { + // Verify ending. + if (!this.eat(types$1.parenR)) { + var errorPos = this.start; + if (this.eat(types$1.comma) && this.eat(types$1.parenR)) { + this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); + } else { + this.unexpected(errorPos); + } + } + } -/***/ 73985: -/***/ ((module) => { + return this.finishNode(node, "ImportExpression") +}; -"use strict"; +pp$5.parseImportMeta = function(node) { + this.next(); // skip `.` + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); -module.exports = { - DATE_FORMAT: 'yyyy-mm-dd HH:MM:ss.l o', + if (node.property.name !== "meta") + { this.raiseRecoverable(node.property.start, "The only valid meta property for import is 'import.meta'"); } + if (containsEsc) + { this.raiseRecoverable(node.start, "'import.meta' must not contain escaped characters"); } + if (this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere) + { this.raiseRecoverable(node.start, "Cannot use 'import.meta' outside a module"); } - ERROR_LIKE_KEYS: ['err', 'error'], + return this.finishNode(node, "MetaProperty") +}; - MESSAGE_KEY: 'msg', +pp$5.parseLiteral = function(value) { + var node = this.startNode(); + node.value = value; + node.raw = this.input.slice(this.start, this.end); + if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, ""); } + this.next(); + return this.finishNode(node, "Literal") +}; - LEVEL_KEY: 'level', +pp$5.parseParenExpression = function() { + this.expect(types$1.parenL); + var val = this.parseExpression(); + this.expect(types$1.parenR); + return val +}; - LEVEL_LABEL: 'levelLabel', +pp$5.shouldParseArrow = function(exprList) { + return !this.canInsertSemicolon() +}; - TIMESTAMP_KEY: 'time', +pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; + if (this.options.ecmaVersion >= 6) { + this.next(); - LEVELS: { - default: 'USERLVL', - 60: 'FATAL', - 50: 'ERROR', - 40: 'WARN', - 30: 'INFO', - 20: 'DEBUG', - 10: 'TRACE' - }, + var innerStartPos = this.start, innerStartLoc = this.startLoc; + var exprList = [], first = true, lastIsComma = false; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; + this.yieldPos = 0; + this.awaitPos = 0; + // Do not save awaitIdentPos to allow checking awaits nested in parameters + while (this.type !== types$1.parenR) { + first ? first = false : this.expect(types$1.comma); + if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) { + lastIsComma = true; + break + } else if (this.type === types$1.ellipsis) { + spreadStart = this.start; + exprList.push(this.parseParenItem(this.parseRestBinding())); + if (this.type === types$1.comma) { + this.raiseRecoverable( + this.start, + "Comma is not permitted after the rest element" + ); + } + break + } else { + exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); + } + } + var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; + this.expect(types$1.parenR); - LEVEL_NAMES: { - fatal: 60, - error: 50, - warn: 40, - info: 30, - debug: 20, - trace: 10 - }, + if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + return this.parseParenArrowList(startPos, startLoc, exprList, forInit) + } - // Object keys that probably came from a logger like Pino or Bunyan. - LOGGER_KEYS: [ - 'pid', - 'hostname', - 'name', - 'level', - 'time', - 'timestamp', - 'caller' - ] -} + if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } + if (spreadStart) { this.unexpected(spreadStart); } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + } else { + val = this.parseParenExpression(); + } -/***/ }), + if (this.options.preserveParens) { + var par = this.startNodeAt(startPos, startLoc); + par.expression = val; + return this.finishNode(par, "ParenthesizedExpression") + } else { + return val + } +}; -/***/ 34372: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +pp$5.parseParenItem = function(item) { + return item +}; -"use strict"; +pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit) +}; +// New's precedence is slightly tricky. It must allow its argument to +// be a `[]` or dot subscript expression, but not a call — at least, +// not without wrapping it in parentheses. Thus, it uses the noCalls +// argument to parseSubscripts to prevent it from consuming the +// argument list. + +var acorn_empty = []; + +pp$5.parseNew = function() { + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } + var node = this.startNode(); + this.next(); + if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) { + var meta = this.startNodeAt(node.start, node.loc && node.loc.start); + meta.name = "new"; + node.meta = this.finishNode(meta, "Identifier"); + this.next(); + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); + if (node.property.name !== "target") + { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } + if (containsEsc) + { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } + if (!this.allowNewDotTarget) + { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } + return this.finishNode(node, "MetaProperty") + } + var startPos = this.start, startLoc = this.startLoc; + node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false); + if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); } + else { node.arguments = acorn_empty; } + return this.finishNode(node, "NewExpression") +}; -const clone = __nccwpck_require__(85314)({ circles: true }) -const dateformat = __nccwpck_require__(74598) -const SonicBoom = __nccwpck_require__(93565) -const stringifySafe = __nccwpck_require__(50460) -const { isMainThread } = __nccwpck_require__(71267) -const defaultColorizer = __nccwpck_require__(84022)() -const { - DATE_FORMAT, - ERROR_LIKE_KEYS, - MESSAGE_KEY, - LEVEL_KEY, - LEVEL_LABEL, - TIMESTAMP_KEY, - LOGGER_KEYS, - LEVELS -} = __nccwpck_require__(73985) +// Parse template expression. -module.exports = { - isObject, - prettifyErrorLog, - prettifyLevel, - prettifyMessage, - prettifyMetadata, - prettifyObject, - prettifyTime, - buildSafeSonicBoom, - filterLog -} +pp$5.parseTemplateElement = function(ref) { + var isTagged = ref.isTagged; -module.exports.internals = { - formatTime, - joinLinesWithIndentation, - prettifyError, - deleteLogProperty, - splitIgnoreKey, - createDate, - isValidDate -} + var elem = this.startNode(); + if (this.type === types$1.invalidTemplate) { + if (!isTagged) { + this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); + } + elem.value = { + raw: this.value.replace(/\r\n?/g, "\n"), + cooked: null + }; + } else { + elem.value = { + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), + cooked: this.value + }; + } + this.next(); + elem.tail = this.type === types$1.backQuote; + return this.finishNode(elem, "TemplateElement") +}; -/** - * Converts a given `epoch` to a desired display format. - * - * @param {number|string} epoch The time to convert. May be any value that is - * valid for `new Date()`. - * @param {boolean|string} [translateTime=false] When `false`, the given `epoch` - * will simply be returned. When `true`, the given `epoch` will be converted - * to a string at UTC using the `DATE_FORMAT` constant. If `translateTime` is - * a string, the following rules are available: - * - * - `<format string>`: The string is a literal format string. This format - * string will be used to interpret the `epoch` and return a display string - * at UTC. - * - `SYS:STANDARD`: The returned display string will follow the `DATE_FORMAT` - * constant at the system's local timezone. - * - `SYS:<format string>`: The returned display string will follow the given - * `<format string>` at the system's local timezone. - * - `UTC:<format string>`: The returned display string will follow the given - * `<format string>` at UTC. - * - * @returns {number|string} The formatted time. - */ -function formatTime (epoch, translateTime = false) { - if (translateTime === false) { - return epoch +pp$5.parseTemplate = function(ref) { + if ( ref === void 0 ) ref = {}; + var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; + + var node = this.startNode(); + this.next(); + node.expressions = []; + var curElt = this.parseTemplateElement({isTagged: isTagged}); + node.quasis = [curElt]; + while (!curElt.tail) { + if (this.type === types$1.eof) { this.raise(this.pos, "Unterminated template literal"); } + this.expect(types$1.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(types$1.braceR); + node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); } + this.next(); + return this.finishNode(node, "TemplateLiteral") +}; - const instant = createDate(epoch) +pp$5.isAsyncProp = function(prop) { + return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && + (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) && + !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) +}; - // If the Date is invalid, do not attempt to format - if (!isValidDate(instant)) { - return epoch - } +// Parse an object literal or binding pattern. - if (translateTime === true) { - return dateformat(instant, 'UTC:' + DATE_FORMAT) - } +pp$5.parseObj = function(isPattern, refDestructuringErrors) { + var node = this.startNode(), first = true, propHash = {}; + node.properties = []; + this.next(); + while (!this.eat(types$1.braceR)) { + if (!first) { + this.expect(types$1.comma); + if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break } + } else { first = false; } - const upperFormat = translateTime.toUpperCase() - if (upperFormat === 'SYS:STANDARD') { - return dateformat(instant, DATE_FORMAT) + var prop = this.parseProperty(isPattern, refDestructuringErrors); + if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } + node.properties.push(prop); } + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") +}; - const prefix = upperFormat.substr(0, 4) - if (prefix === 'SYS:' || prefix === 'UTC:') { - if (prefix === 'UTC:') { - return dateformat(instant, translateTime) +pp$5.parseProperty = function(isPattern, refDestructuringErrors) { + var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; + if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) { + if (isPattern) { + prop.argument = this.parseIdent(false); + if (this.type === types$1.comma) { + this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); + } + return this.finishNode(prop, "RestElement") } - return dateformat(instant, translateTime.slice(4)) + // Parse argument. + prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); + // To disallow trailing comma via `this.toAssignable()`. + if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { + refDestructuringErrors.trailingComma = this.start; + } + // Finish + return this.finishNode(prop, "SpreadElement") } - - return dateformat(instant, `UTC:${translateTime}`) -} - -/** - * Constructs a JS Date from a number or string. Accepts any single number - * or single string argument that is valid for the Date() constructor, - * or an epoch as a string. - * - * @param {string|number} epoch The representation of the Date. - * - * @returns {Date} The constructed Date. - */ -function createDate (epoch) { - // If epoch is already a valid argument, return the valid Date - let date = new Date(epoch) - if (isValidDate(date)) { - return date + if (this.options.ecmaVersion >= 6) { + prop.method = false; + prop.shorthand = false; + if (isPattern || refDestructuringErrors) { + startPos = this.start; + startLoc = this.startLoc; + } + if (!isPattern) + { isGenerator = this.eat(types$1.star); } + } + var containsEsc = this.containsEsc; + this.parsePropertyName(prop); + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star); + this.parsePropertyName(prop); + } else { + isAsync = false; } + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); + return this.finishNode(prop, "Property") +}; - // Convert to a number to permit epoch as a string - date = new Date(+epoch) - return date -} - -/** - * Checks if the argument is a JS Date and not 'Invalid Date'. - * - * @param {Date} date The date to check. - * - * @returns {boolean} true if the argument is a JS Date and not 'Invalid Date'. - */ -function isValidDate (date) { - return date instanceof Date && !Number.isNaN(date.getTime()) -} - -function isObject (input) { - return Object.prototype.toString.apply(input) === '[object Object]' -} - -/** - * Given a string with line separators, either `\r\n` or `\n`, add indentation - * to all lines subsequent to the first line and rejoin the lines using an - * end of line sequence. - * - * @param {object} input - * @param {string} input.input The string to split and reformat. - * @param {string} [input.ident] The indentation string. Default: ` ` (4 spaces). - * @param {string} [input.eol] The end of line sequence to use when rejoining - * the lines. Default: `'\n'`. - * - * @returns {string} A string with lines subsequent to the first indented - * with the given indentation sequence. - */ -function joinLinesWithIndentation ({ input, ident = ' ', eol = '\n' }) { - const lines = input.split(/\r?\n/) - for (let i = 1; i < lines.length; i += 1) { - lines[i] = ident + lines[i] +pp$5.parseGetterSetter = function(prop) { + var kind = prop.key.name; + this.parsePropertyName(prop); + prop.value = this.parseMethod(false); + prop.kind = kind; + var paramCount = prop.kind === "get" ? 0 : 1; + if (prop.value.params.length !== paramCount) { + var start = prop.value.start; + if (prop.kind === "get") + { this.raiseRecoverable(start, "getter should have no params"); } + else + { this.raiseRecoverable(start, "setter should have exactly one param"); } + } else { + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") + { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } } - return lines.join(eol) -} +}; -/** - * Given a log object that has a `type: 'Error'` key, prettify the object and - * return the result. In other - * - * @param {object} input - * @param {object} input.log The error log to prettify. - * @param {string} [input.messageKey] The name of the key that contains a - * general log message. This is not the error's message property but the logger - * messsage property. Default: `MESSAGE_KEY` constant. - * @param {string} [input.ident] The sequence to use for indentation. Default: `' '`. - * @param {string} [input.eol] The sequence to use for EOL. Default: `'\n'`. - * @param {string[]} [input.errorLikeKeys] A set of keys that should be considered - * to have error objects as values. Default: `ERROR_LIKE_KEYS` constant. - * @param {string[]} [input.errorProperties] A set of specific error object - * properties, that are not the value of `messageKey`, `type`, or `stack`, to - * include in the prettified result. The first entry in the list may be `'*'` - * to indicate that all sibiling properties should be prettified. Default: `[]`. - * - * @returns {string} A sring that represents the prettified error log. - */ -function prettifyErrorLog ({ - log, - messageKey = MESSAGE_KEY, - ident = ' ', - eol = '\n', - errorLikeKeys = ERROR_LIKE_KEYS, - errorProperties = [] -}) { - const stack = log.stack - const joinedLines = joinLinesWithIndentation({ input: stack, ident, eol }) - let result = `${ident}${joinedLines}${eol}` - - if (errorProperties.length > 0) { - const excludeProperties = LOGGER_KEYS.concat(messageKey, 'type', 'stack') - let propertiesToPrint - if (errorProperties[0] === '*') { - // Print all sibling properties except for the standard exclusions. - propertiesToPrint = Object.keys(log).filter(k => excludeProperties.includes(k) === false) +pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { + if ((isGenerator || isAsync) && this.type === types$1.colon) + { this.unexpected(); } + + if (this.eat(types$1.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); + prop.kind = "init"; + } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) { + if (isPattern) { this.unexpected(); } + prop.method = true; + prop.value = this.parseMethod(isGenerator, isAsync); + prop.kind = "init"; + } else if (!isPattern && !containsEsc && + this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && + (prop.key.name === "get" || prop.key.name === "set") && + (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) { + if (isGenerator || isAsync) { this.unexpected(); } + this.parseGetterSetter(prop); + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { + if (isGenerator || isAsync) { this.unexpected(); } + this.checkUnreserved(prop.key); + if (prop.key.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = startPos; } + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); + } else if (this.type === types$1.eq && refDestructuringErrors) { + if (refDestructuringErrors.shorthandAssign < 0) + { refDestructuringErrors.shorthandAssign = this.start; } + prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); } else { - // Print only specified properties unless the property is a standard exclusion. - propertiesToPrint = errorProperties.filter(k => excludeProperties.includes(k) === false) - } - - for (let i = 0; i < propertiesToPrint.length; i += 1) { - const key = propertiesToPrint[i] - if (key in log === false) continue - if (isObject(log[key])) { - // The nested object may have "logger" type keys but since they are not - // at the root level of the object being processed, we want to print them. - // Thus, we invoke with `excludeLoggerKeys: false`. - const prettifiedObject = prettifyObject({ input: log[key], errorLikeKeys, excludeLoggerKeys: false, eol, ident: ident + ident }) - result = `${result}${ident}${key}: {${eol}${prettifiedObject}${ident}}${eol}` - continue - } - result = `${result}${ident}${key}: ${log[key]}${eol}` + prop.value = this.copyNode(prop.key); } - } + prop.kind = "init"; + prop.shorthand = true; + } else { this.unexpected(); } +}; - return result -} +pp$5.parsePropertyName = function(prop) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(types$1.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(types$1.bracketR); + return prop.key + } else { + prop.computed = false; + } + } + return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") +}; -/** - * Checks if the passed in log has a `level` value and returns a prettified - * string for that level if so. - * - * @param {object} input - * @param {object} input.log The log object. - * @param {function} [input.colorizer] A colorizer function that accepts a level - * value and returns a colorized string. Default: a no-op colorizer. - * @param {string} [input.levelKey='level'] The key to find the level under. - * @param {function} [input.prettifier] A user-supplied formatter to be called instead of colorizer. - * @param {object} [input.customLevels] The custom levels where key as the level index and value as the level name. - * @param {object} [input.customLevelNames] The custom level names where key is the level name and value is the level index. - * - * @returns {undefined|string} If `log` does not have a `level` property then - * `undefined` will be returned. Otherwise, a string from the specified - * `colorizer` is returned. - */ -function prettifyLevel ({ log, colorizer = defaultColorizer, levelKey = LEVEL_KEY, prettifier, customLevels, customLevelNames }) { - if (levelKey in log === false) return undefined - const output = log[levelKey] - return prettifier ? prettifier(output) : colorizer(output, { customLevels, customLevelNames }) -} +// Initialize empty function node. -/** - * Prettifies a message string if the given `log` has a message property. - * - * @param {object} input - * @param {object} input.log The log object with the message to colorize. - * @param {string} [input.messageKey='msg'] The property of the `log` that is the - * message to be prettified. - * @param {string|function} [input.messageFormat=undefined] A format string or function that defines how the - * logged message should be formatted, e.g. `'{level} - {pid}'`. - * @param {function} [input.colorizer] A colorizer function that has a - * `.message(str)` method attached to it. This function should return a colorized - * string which will be the "prettified" message. Default: a no-op colorizer. - * @param {string} [input.levelLabel='levelLabel'] The label used to output the log level - * @param {string} [input.levelKey='level'] The key to find the level under. - * @param {object} [input.customLevels] The custom levels where key as the level index and value as the level name. - * - * @returns {undefined|string} If the message key is not found, or the message - * key is not a string, then `undefined` will be returned. Otherwise, a string - * that is the prettified message. - */ -function prettifyMessage ({ log, messageFormat, messageKey = MESSAGE_KEY, colorizer = defaultColorizer, levelLabel = LEVEL_LABEL, levelKey = LEVEL_KEY, customLevels }) { - if (messageFormat && typeof messageFormat === 'string') { - const message = String(messageFormat).replace(/{([^{}]+)}/g, function (match, p1) { - // return log level as string instead of int - if (p1 === levelLabel && log[levelKey]) { - return customLevels === undefined ? LEVELS[log[levelKey]] : customLevels[log[levelKey]] - } - // Parse nested key access, e.g. `{keyA.subKeyB}`. - return p1.split('.').reduce(function (prev, curr) { - if (prev && prev[curr]) { - return prev[curr] - } - return '' - }, log) - }) - return colorizer.message(message) - } - if (messageFormat && typeof messageFormat === 'function') { - const msg = messageFormat(log, messageKey, levelLabel) - return colorizer.message(msg) - } - if (messageKey in log === false) return undefined - if (typeof log[messageKey] !== 'string') return undefined - return colorizer.message(log[messageKey]) -} +pp$5.initFunction = function(node) { + node.id = null; + if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } + if (this.options.ecmaVersion >= 8) { node.async = false; } +}; -/** - * Prettifies metadata that is usually present in a Pino log line. It looks for - * fields `name`, `pid`, `hostname`, and `caller` and returns a formatted string using - * the fields it finds. - * - * @param {object} input - * @param {object} input.log The log that may or may not contain metadata to - * be prettified. - * @param {object} input.prettifiers A set of functions used to prettify each - * key of the input log's metadata. The keys are the keys of the metadata (like - * `hostname`, `pid`, `name`, etc), and the values are functions which take the - * metadata value and return a string. Each key is optional. - * - * @returns {undefined|string} If no metadata is found then `undefined` is - * returned. Otherwise, a string of prettified metadata is returned. - */ -function prettifyMetadata ({ log, prettifiers = {} }) { - let line = '' +// Parse object or class method. - if (log.name || log.pid || log.hostname) { - line += '(' +pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { + var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - if (log.name) { - line += prettifiers.name ? prettifiers.name(log.name) : log.name - } + this.initFunction(node); + if (this.options.ecmaVersion >= 6) + { node.generator = isGenerator; } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } - if (log.pid) { - const prettyPid = prettifiers.pid ? prettifiers.pid(log.pid) : log.pid - if (log.name && log.pid) { - line += '/' + prettyPid - } else { - line += prettyPid - } - } + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); - if (log.hostname) { - // If `pid` and `name` were in the ignore keys list then we don't need - // the leading space. - line += `${line === '(' ? 'on' : ' on'} ${prettifiers.hostname ? prettifiers.hostname(log.hostname) : log.hostname}` - } + this.expect(types$1.parenL); + node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + this.parseFunctionBody(node, false, true, false); - line += ')' - } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "FunctionExpression") +}; - if (log.caller) { - line += `${line === '' ? '' : ' '}<${prettifiers.caller ? prettifiers.caller(log.caller) : log.caller}>` - } +// Parse arrow function expression with given parameters. - if (line === '') { - return undefined - } else { - return line - } -} +pp$5.parseArrowExpression = function(node, params, isAsync, forInit) { + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; -/** - * Prettifies a standard object. Special care is taken when processing the object - * to handle child objects that are attached to keys known to contain error - * objects. - * - * @param {object} input - * @param {object} input.input The object to prettify. - * @param {string} [input.ident] The identation sequence to use. Default: `' '`. - * @param {string} [input.eol] The EOL sequence to use. Default: `'\n'`. - * @param {string[]} [input.skipKeys] A set of object keys to exclude from the - * prettified result. Default: `[]`. - * @param {Object<string, function>} [input.customPrettifiers] Dictionary of - * custom prettifiers. Default: `{}`. - * @param {string[]} [input.errorLikeKeys] A set of object keys that contain - * error objects. Default: `ERROR_LIKE_KEYS` constant. - * @param {boolean} [input.excludeLoggerKeys] Indicates if known logger specific - * keys should be excluded from prettification. Default: `true`. - * @param {boolean} [input.singleLine] Should non-error keys all be formatted - * on a single line? This does NOT apply to errors, which will still be - * multi-line. Default: `false` - * - * @returns {string} The prettified string. This can be as little as `''` if - * there was nothing to prettify. - */ -function prettifyObject ({ - input, - ident = ' ', - eol = '\n', - skipKeys = [], - customPrettifiers = {}, - errorLikeKeys = ERROR_LIKE_KEYS, - excludeLoggerKeys = true, - singleLine = false, - colorizer = defaultColorizer -}) { - const keysToIgnore = [].concat(skipKeys) + this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); + this.initFunction(node); + if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } - if (excludeLoggerKeys === true) Array.prototype.push.apply(keysToIgnore, LOGGER_KEYS) + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; - let result = '' + node.params = this.toAssignableList(params, true); + this.parseFunctionBody(node, true, false, forInit); - // Split object keys into two categories: error and non-error - const { plain, errors } = Object.entries(input).reduce(({ plain, errors }, [k, v]) => { - if (keysToIgnore.includes(k) === false) { - // Pre-apply custom prettifiers, because all 3 cases below will need this - const pretty = typeof customPrettifiers[k] === 'function' - ? customPrettifiers[k](v, k, input) - : v - if (errorLikeKeys.includes(k)) { - errors[k] = pretty - } else { - plain[k] = pretty - } - } - return { plain, errors } - }, { plain: {}, errors: {} }) + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "ArrowFunctionExpression") +}; - if (singleLine) { - // Stringify the entire object as a single JSON line - if (Object.keys(plain).length > 0) { - result += colorizer.greyMessage(stringifySafe(plain)) - } - result += eol - } else { - // Put each object entry on its own line - Object.entries(plain).forEach(([keyName, keyValue]) => { - // custom prettifiers are already applied above, so we can skip it now - const lines = typeof customPrettifiers[keyName] === 'function' - ? keyValue - : stringifySafe(keyValue, null, 2) +// Parse function body and check parameters. - if (lines === undefined) return +pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { + var isExpression = isArrowFunction && this.type !== types$1.braceL; + var oldStrict = this.strict, useStrict = false; - const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol }) - result += `${ident}${keyName}:${joinedLines.startsWith(eol) ? '' : ' '}${joinedLines}${eol}` - }) + if (isExpression) { + node.body = this.parseMaybeAssign(forInit); + node.expression = true; + this.checkParams(node, false); + } else { + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); + if (!oldStrict || nonSimple) { + useStrict = this.strictDirective(this.end); + // If this is a strict mode function, verify that argument names + // are not repeated, and it does not try to bind the words `eval` + // or `arguments`. + if (useStrict && nonSimple) + { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } + } + // Start a new scope with regard to labels and the `inFunction` + // flag (restore them to their old value afterwards). + var oldLabels = this.labels; + this.labels = []; + if (useStrict) { this.strict = true; } + + // Add the params to varDeclaredNames to ensure that an error is thrown + // if a let/const declaration in the function clashes with one of the params. + this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); + // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' + if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); } + node.body = this.parseBlock(false, undefined, useStrict && !oldStrict); + node.expression = false; + this.adaptDirectivePrologue(node.body.body); + this.labels = oldLabels; } + this.exitScope(); +}; - // Errors - Object.entries(errors).forEach(([keyName, keyValue]) => { - // custom prettifiers are already applied above, so we can skip it now - const lines = typeof customPrettifiers[keyName] === 'function' - ? keyValue - : stringifySafe(keyValue, null, 2) - - if (lines === undefined) return +pp$5.isSimpleParamList = function(params) { + for (var i = 0, list = params; i < list.length; i += 1) + { + var param = list[i]; - result += prettifyError({ keyName, lines, eol, ident }) - }) + if (param.type !== "Identifier") { return false + } } + return true +}; - return result -} +// Checks function params for various disallowed patterns such as using "eval" +// or "arguments" and duplicate parameters. -/** - * Prettifies a timestamp if the given `log` has either `time`, `timestamp` or custom specified timestamp - * property. - * - * @param {object} input - * @param {object} input.log The log object with the timestamp to be prettified. - * @param {string} [input.timestampKey='time'] The log property that should be used to resolve timestamp value - * @param {boolean|string} [input.translateFormat=undefined] When `true` the - * timestamp will be prettified into a string at UTC using the default - * `DATE_FORMAT`. If a string, then `translateFormat` will be used as the format - * string to determine the output; see the `formatTime` function for details. - * @param {function} [input.prettifier] A user-supplied formatter for altering output. - * - * @returns {undefined|string} If a timestamp property cannot be found then - * `undefined` is returned. Otherwise, the prettified time is returned as a - * string. - */ -function prettifyTime ({ log, timestampKey = TIMESTAMP_KEY, translateFormat = undefined, prettifier }) { - let time = null +pp$5.checkParams = function(node, allowDuplicates) { + var nameHash = Object.create(null); + for (var i = 0, list = node.params; i < list.length; i += 1) + { + var param = list[i]; - if (timestampKey in log) { - time = log[timestampKey] - } else if ('timestamp' in log) { - time = log.timestamp + this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash); } +}; - if (time === null) return undefined - const output = translateFormat ? formatTime(time, translateFormat) : time +// Parses a comma-separated list of expressions, and returns them as +// an array. `close` is the token type that ends the list, and +// `allowEmpty` can be turned on to allow subsequent commas with +// nothing in between them to be parsed as `null` (which is needed +// for array literals). - return prettifier ? prettifier(output) : `[${output}]` -} +pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { + var elts = [], first = true; + while (!this.eat(close)) { + if (!first) { + this.expect(types$1.comma); + if (allowTrailingComma && this.afterTrailingComma(close)) { break } + } else { first = false; } -/** - * Prettifies an error string into a multi-line format. - * @param {object} input - * @param {string} input.keyName The key assigned to this error in the log object - * @param {string} input.lines The STRINGIFIED error. If the error field has a - * custom prettifier, that should be pre-applied as well - * @param {string} input.ident The indentation sequence to use - * @param {string} input.eol The EOL sequence to use - */ -function prettifyError ({ keyName, lines, eol, ident }) { - let result = '' - const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol }) - const splitLines = `${ident}${keyName}: ${joinedLines}${eol}`.split(eol) - - for (let j = 0; j < splitLines.length; j += 1) { - if (j !== 0) result += eol - - const line = splitLines[j] - if (/^\s*"stack"/.test(line)) { - const matches = /^(\s*"stack":)\s*(".*"),?$/.exec(line) - /* istanbul ignore else */ - if (matches && matches.length === 3) { - const indentSize = /^\s*/.exec(line)[0].length + 4 - const indentation = ' '.repeat(indentSize) - const stackMessage = matches[2] - result += matches[1] + eol + indentation + JSON.parse(stackMessage).replace(/\n/g, eol + indentation) - } else { - result += line - } + var elt = (void 0); + if (allowEmpty && this.type === types$1.comma) + { elt = null; } + else if (this.type === types$1.ellipsis) { + elt = this.parseSpread(refDestructuringErrors); + if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0) + { refDestructuringErrors.trailingComma = this.start; } } else { - result += line + elt = this.parseMaybeAssign(false, refDestructuringErrors); } + elts.push(elt); } + return elts +}; - return result -} - -/** - * Splits the input key delimited by a dot character but not when it is preceded - * by a backslash. - * - * @param {string} key A string identifying the property. - * - * @returns {string[]} Returns a list of string containing each delimited property. - * e.g. `'prop2\.domain\.corp.prop2'` should return [ 'prop2.domain.com', 'prop2' ] - */ -function splitIgnoreKey (key) { - const result = [] - let backslash = false - let segment = '' - - for (let i = 0; i < key.length; i++) { - const c = key.charAt(i) - - if (c === '\\') { - backslash = true - continue - } - - if (backslash) { - backslash = false - segment += c - continue - } +pp$5.checkUnreserved = function(ref) { + var start = ref.start; + var end = ref.end; + var name = ref.name; + + if (this.inGenerator && name === "yield") + { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } + if (this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } + if (!(this.currentThisScope().flags & SCOPE_VAR) && name === "arguments") + { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } + if (this.inClassStaticBlock && (name === "arguments" || name === "await")) + { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } + if (this.keywords.test(name)) + { this.raise(start, ("Unexpected keyword '" + name + "'")); } + if (this.options.ecmaVersion < 6 && + this.input.slice(start, end).indexOf("\\") !== -1) { return } + var re = this.strict ? this.reservedWordsStrict : this.reservedWords; + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } +}; - /* Non-escaped dot, push to result */ - if (c === '.') { - result.push(segment) - segment = '' - continue - } +// Parse the next token as an identifier. If `liberal` is true (used +// when parsing properties), it will also convert keywords into +// identifiers. - segment += c +pp$5.parseIdent = function(liberal) { + var node = this.parseIdentNode(); + this.next(!!liberal); + this.finishNode(node, "Identifier"); + if (!liberal) { + this.checkUnreserved(node); + if (node.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = node.start; } } + return node +}; - /* Push last entry to result */ - if (segment.length) { - result.push(segment) +pp$5.parseIdentNode = function() { + var node = this.startNode(); + if (this.type === types$1.name) { + node.name = this.value; + } else if (this.type.keyword) { + node.name = this.type.keyword; + + // To fix https://github.com/acornjs/acorn/issues/575 + // `class` and `function` keywords push new context into this.context. + // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. + // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword + if ((node.name === "class" || node.name === "function") && + (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { + this.context.pop(); + } + this.type = types$1.name; + } else { + this.unexpected(); } + return node +}; - return result -} +pp$5.parsePrivateIdent = function() { + var node = this.startNode(); + if (this.type === types$1.privateId) { + node.name = this.value; + } else { + this.unexpected(); + } + this.next(); + this.finishNode(node, "PrivateIdentifier"); -/** - * Deletes a specified property from a log object if it exists. - * This function mutates the passed in `log` object. - * - * @param {object} log The log object to be modified. - * @param {string} property A string identifying the property to be deleted from - * the log object. Accepts nested properties delimited by a `.` - * Delimiter can be escaped to preserve property names that contain the delimiter. - * e.g. `'prop1.prop2'` or `'prop2\.domain\.corp.prop2'` - */ -function deleteLogProperty (log, property) { - const props = splitIgnoreKey(property) - const propToDelete = props.pop() - - props.forEach((prop) => { - if (!Object.prototype.hasOwnProperty.call(log, prop)) { - return + // For validating existence + if (this.options.checkPrivateFields) { + if (this.privateNameStack.length === 0) { + this.raise(node.start, ("Private field '#" + (node.name) + "' must be declared in an enclosing class")); + } else { + this.privateNameStack[this.privateNameStack.length - 1].used.push(node); } - log = log[prop] - }) + } - delete log[propToDelete] -} + return node +}; -/** - * Filter a log object by removing any ignored keys. - * - * @param {object} log The log object to be modified. - * @param {string} ignoreKeys An array of strings identifying the properties to be removed. - * - * @returns {object} A new `log` object instance that does not include the ignored keys. - */ -function filterLog (log, ignoreKeys) { - const logCopy = clone(log) - ignoreKeys.forEach((ignoreKey) => { - deleteLogProperty(logCopy, ignoreKey) - }) - return logCopy -} +// Parses yield expression inside generator. -function noop () {} +pp$5.parseYield = function(forInit) { + if (!this.yieldPos) { this.yieldPos = this.start; } -/** - * Creates a safe SonicBoom instance - * - * @param {object} opts Options for SonicBoom - * - * @returns {object} A new SonicBoom stream - */ -function buildSafeSonicBoom (opts) { - const stream = new SonicBoom(opts) - stream.on('error', filterBrokenPipe) - // if we are sync: false, we must flush on exit - if (!opts.sync && isMainThread) { - setupOnExit(stream) - } - return stream - - function filterBrokenPipe (err) { - if (err.code === 'EPIPE') { - stream.write = noop - stream.end = noop - stream.flushSync = noop - stream.destroy = noop - return - } - stream.removeListener('error', filterBrokenPipe) + var node = this.startNode(); + this.next(); + if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(types$1.star); + node.argument = this.parseMaybeAssign(forInit); } -} - -function setupOnExit (stream) { - /* istanbul ignore next */ - if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) { - // This is leak free, it does not leave event handlers - const onExit = __nccwpck_require__(41045) + return this.finishNode(node, "YieldExpression") +}; - onExit.register(stream, autoEnd) +pp$5.parseAwait = function(forInit) { + if (!this.awaitPos) { this.awaitPos = this.start; } - stream.on('close', function () { - onExit.unregister(stream) - }) - } -} + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeUnary(null, true, false, forInit); + return this.finishNode(node, "AwaitExpression") +}; -/* istanbul ignore next */ -function autoEnd (stream, eventName) { - // This check is needed only on some platforms +var pp$4 = Parser.prototype; - if (stream.destroyed) { - return - } +// This function is used to raise exceptions on parse errors. It +// takes an offset integer (into the current `input`) to indicate +// the location of the error, attaches the position to the end +// of the error message, and then raises a `SyntaxError` with that +// message. - if (eventName === 'beforeExit') { - // We still have an event loop, let's use it - stream.flush() - stream.on('drain', function () { - stream.end() - }) - } else { - // We do not have an event loop, so flush synchronously - stream.flushSync() +pp$4.raise = function(pos, message) { + var loc = getLineInfo(this.input, pos); + message += " (" + loc.line + ":" + loc.column + ")"; + if (this.sourceFile) { + message += " in " + this.sourceFile; } -} + var err = new SyntaxError(message); + err.pos = pos; err.loc = loc; err.raisedAt = this.pos; + throw err +}; +pp$4.raiseRecoverable = pp$4.raise; -/***/ }), +pp$4.curPosition = function() { + if (this.options.locations) { + return new Position(this.curLine, this.pos - this.lineStart) + } +}; -/***/ 72274: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var pp$3 = Parser.prototype; -"use strict"; +var Scope = function Scope(flags) { + this.flags = flags; + // A list of var-declared names in the current lexical scope + this.var = []; + // A list of lexically-declared names in the current lexical scope + this.lexical = []; + // A list of lexically-declared FunctionDeclaration names in the current lexical scope + this.functions = []; +}; +// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. -const errSerializer = __nccwpck_require__(52825) -const reqSerializers = __nccwpck_require__(89859) -const resSerializers = __nccwpck_require__(35995) +pp$3.enterScope = function(flags) { + this.scopeStack.push(new Scope(flags)); +}; -module.exports = { - err: errSerializer, - mapHttpRequest: reqSerializers.mapHttpRequest, - mapHttpResponse: resSerializers.mapHttpResponse, - req: reqSerializers.reqSerializer, - res: resSerializers.resSerializer, +pp$3.exitScope = function() { + this.scopeStack.pop(); +}; - wrapErrorSerializer: function wrapErrorSerializer (customSerializer) { - if (customSerializer === errSerializer) return customSerializer - return function wrapErrSerializer (err) { - return customSerializer(errSerializer(err)) - } - }, +// The spec says: +// > At the top level of a function, or script, function declarations are +// > treated like var declarations rather than like lexical declarations. +pp$3.treatFunctionsAsVarInScope = function(scope) { + return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) +}; - wrapRequestSerializer: function wrapRequestSerializer (customSerializer) { - if (customSerializer === reqSerializers.reqSerializer) return customSerializer - return function wrappedReqSerializer (req) { - return customSerializer(reqSerializers.reqSerializer(req)) +pp$3.declareName = function(name, bindingType, pos) { + var redeclared = false; + if (bindingType === BIND_LEXICAL) { + var scope = this.currentScope(); + redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; + scope.lexical.push(name); + if (this.inModule && (scope.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + } else if (bindingType === BIND_SIMPLE_CATCH) { + var scope$1 = this.currentScope(); + scope$1.lexical.push(name); + } else if (bindingType === BIND_FUNCTION) { + var scope$2 = this.currentScope(); + if (this.treatFunctionsAsVar) + { redeclared = scope$2.lexical.indexOf(name) > -1; } + else + { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } + scope$2.functions.push(name); + } else { + for (var i = this.scopeStack.length - 1; i >= 0; --i) { + var scope$3 = this.scopeStack[i]; + if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || + !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { + redeclared = true; + break + } + scope$3.var.push(name); + if (this.inModule && (scope$3.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + if (scope$3.flags & SCOPE_VAR) { break } } - }, + } + if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } +}; - wrapResponseSerializer: function wrapResponseSerializer (customSerializer) { - if (customSerializer === resSerializers.resSerializer) return customSerializer - return function wrappedResSerializer (res) { - return customSerializer(resSerializers.resSerializer(res)) - } +pp$3.checkLocalExport = function(id) { + // scope.functions must be empty as Module code is always strict. + if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && + this.scopeStack[0].var.indexOf(id.name) === -1) { + this.undefinedExports[id.name] = id; } -} +}; +pp$3.currentScope = function() { + return this.scopeStack[this.scopeStack.length - 1] +}; -/***/ }), +pp$3.currentVarScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope } + } +}; -/***/ 52825: -/***/ ((module) => { +// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. +pp$3.currentThisScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) && + !(scope.flags & SCOPE_ARROW)) { return scope } + } +}; -"use strict"; +var Node = function Node(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + if (parser.options.locations) + { this.loc = new SourceLocation(parser, loc); } + if (parser.options.directSourceFile) + { this.sourceFile = parser.options.directSourceFile; } + if (parser.options.ranges) + { this.range = [pos, 0]; } +}; +// Start an AST node, attaching a start offset. -module.exports = errSerializer +var pp$2 = Parser.prototype; -const { toString } = Object.prototype -const seen = Symbol('circular-ref-tag') -const rawSymbol = Symbol('pino-raw-err-ref') -const pinoErrProto = Object.create({}, { - type: { - enumerable: true, - writable: true, - value: undefined - }, - message: { - enumerable: true, - writable: true, - value: undefined - }, - stack: { - enumerable: true, - writable: true, - value: undefined - }, - raw: { - enumerable: false, - get: function () { - return this[rawSymbol] - }, - set: function (val) { - this[rawSymbol] = val - } - } -}) -Object.defineProperty(pinoErrProto, rawSymbol, { - writable: true, - value: {} -}) +pp$2.startNode = function() { + return new Node(this, this.start, this.startLoc) +}; + +pp$2.startNodeAt = function(pos, loc) { + return new Node(this, pos, loc) +}; -function errSerializer (err) { - if (!(err instanceof Error)) { - return err - } - - err[seen] = undefined // tag to prevent re-looking at this - const _err = Object.create(pinoErrProto) - _err.type = toString.call(err.constructor) === '[object Function]' - ? err.constructor.name - : err.name - _err.message = err.message - _err.stack = err.stack - for (const key in err) { - if (_err[key] === undefined) { - const val = err[key] - if (val instanceof Error) { - /* eslint-disable no-prototype-builtins */ - if (!val.hasOwnProperty(seen)) { - _err[key] = errSerializer(val) - } - } else { - _err[key] = val - } - } - } +// Finish an AST node, adding `type` and `end` properties. - delete err[seen] // clean up tag in case err is serialized again later - _err.raw = err - return _err +function finishNodeAt(node, type, pos, loc) { + node.type = type; + node.end = pos; + if (this.options.locations) + { node.loc.end = loc; } + if (this.options.ranges) + { node.range[1] = pos; } + return node } +pp$2.finishNode = function(node, type) { + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) +}; -/***/ }), +// Finish node at given position -/***/ 89859: -/***/ ((module) => { +pp$2.finishNodeAt = function(node, type, pos, loc) { + return finishNodeAt.call(this, node, type, pos, loc) +}; -"use strict"; +pp$2.copyNode = function(node) { + var newNode = new Node(this, node.start, this.startLoc); + for (var prop in node) { newNode[prop] = node[prop]; } + return newNode +}; +// This file was generated by "bin/generate-unicode-script-values.js". Do not modify manually! +var scriptValuesAddedInUnicode = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"; + +// This file contains Unicode properties extracted from the ECMAScript specification. +// The lists are extracted like so: +// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) + +// #table-binary-unicode-properties +var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; +var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; +var ecma11BinaryProperties = ecma10BinaryProperties; +var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; +var ecma13BinaryProperties = ecma12BinaryProperties; +var ecma14BinaryProperties = ecma13BinaryProperties; + +var unicodeBinaryProperties = { + 9: ecma9BinaryProperties, + 10: ecma10BinaryProperties, + 11: ecma11BinaryProperties, + 12: ecma12BinaryProperties, + 13: ecma13BinaryProperties, + 14: ecma14BinaryProperties +}; -module.exports = { - mapHttpRequest, - reqSerializer +// #table-binary-unicode-properties-of-strings +var ecma14BinaryPropertiesOfStrings = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"; + +var unicodeBinaryPropertiesOfStrings = { + 9: "", + 10: "", + 11: "", + 12: "", + 13: "", + 14: ecma14BinaryPropertiesOfStrings +}; + +// #table-unicode-general-category-values +var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; + +// #table-unicode-script-values +var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; +var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; +var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; +var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; +var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; +var ecma14ScriptValues = ecma13ScriptValues + " " + scriptValuesAddedInUnicode; + +var unicodeScriptValues = { + 9: ecma9ScriptValues, + 10: ecma10ScriptValues, + 11: ecma11ScriptValues, + 12: ecma12ScriptValues, + 13: ecma13ScriptValues, + 14: ecma14ScriptValues +}; + +var data = {}; +function buildUnicodeData(ecmaVersion) { + var d = data[ecmaVersion] = { + binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), + binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]), + nonBinary: { + General_Category: wordsRegexp(unicodeGeneralCategoryValues), + Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) + } + }; + d.nonBinary.Script_Extensions = d.nonBinary.Script; + + d.nonBinary.gc = d.nonBinary.General_Category; + d.nonBinary.sc = d.nonBinary.Script; + d.nonBinary.scx = d.nonBinary.Script_Extensions; } -const rawSymbol = Symbol('pino-raw-req-ref') -const pinoReqProto = Object.create({}, { - id: { - enumerable: true, - writable: true, - value: '' - }, - method: { - enumerable: true, - writable: true, - value: '' - }, - url: { - enumerable: true, - writable: true, - value: '' - }, - query: { - enumerable: true, - writable: true, - value: '' - }, - params: { - enumerable: true, - writable: true, - value: '' - }, - headers: { - enumerable: true, - writable: true, - value: {} - }, - remoteAddress: { - enumerable: true, - writable: true, - value: '' - }, - remotePort: { - enumerable: true, - writable: true, - value: '' - }, - raw: { - enumerable: false, - get: function () { - return this[rawSymbol] - }, - set: function (val) { - this[rawSymbol] = val +for (var i = 0, acorn_list = [9, 10, 11, 12, 13, 14]; i < acorn_list.length; i += 1) { + var ecmaVersion = acorn_list[i]; + + buildUnicodeData(ecmaVersion); +} + +var pp$1 = Parser.prototype; + +// Track disjunction structure to determine whether a duplicate +// capture group name is allowed because it is in a separate branch. +var BranchID = function BranchID(parent, base) { + // Parent disjunction branch + this.parent = parent; + // Identifies this set of sibling branches + this.base = base || this; +}; + +BranchID.prototype.separatedFrom = function separatedFrom (alt) { + // A branch is separate from another branch if they or any of + // their parents are siblings in a given disjunction + for (var self = this; self; self = self.parent) { + for (var other = alt; other; other = other.parent) { + if (self.base === other.base && self !== other) { return true } } } -}) -Object.defineProperty(pinoReqProto, rawSymbol, { - writable: true, - value: {} -}) + return false +}; + +BranchID.prototype.sibling = function sibling () { + return new BranchID(this.parent, this.base) +}; + +var RegExpValidationState = function RegExpValidationState(parser) { + this.parser = parser; + this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); + this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion]; + this.source = ""; + this.flags = ""; + this.start = 0; + this.switchU = false; + this.switchV = false; + this.switchN = false; + this.pos = 0; + this.lastIntValue = 0; + this.lastStringValue = ""; + this.lastAssertionIsQuantifiable = false; + this.numCapturingParens = 0; + this.maxBackReference = 0; + this.groupNames = Object.create(null); + this.backReferenceNames = []; + this.branchID = null; +}; -function reqSerializer (req) { - // req.info is for hapi compat. - const connection = req.info || req.socket - const _req = Object.create(pinoReqProto) - _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined))) - _req.method = req.method - // req.originalUrl is for expressjs compat. - if (req.originalUrl) { - _req.url = req.originalUrl - _req.query = req.query - _req.params = req.params +RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { + var unicodeSets = flags.indexOf("v") !== -1; + var unicode = flags.indexOf("u") !== -1; + this.start = start | 0; + this.source = pattern + ""; + this.flags = flags; + if (unicodeSets && this.parser.options.ecmaVersion >= 15) { + this.switchU = true; + this.switchV = true; + this.switchN = true; } else { - // req.url.path is for hapi compat. - _req.url = req.path || (req.url ? (req.url.path || req.url) : undefined) + this.switchU = unicode && this.parser.options.ecmaVersion >= 6; + this.switchV = false; + this.switchN = unicode && this.parser.options.ecmaVersion >= 9; } - _req.headers = req.headers - _req.remoteAddress = connection && connection.remoteAddress - _req.remotePort = connection && connection.remotePort - // req.raw is for hapi compat/equivalence - _req.raw = req.raw || req - return _req -} +}; -function mapHttpRequest (req) { - return { - req: reqSerializer(req) +RegExpValidationState.prototype.raise = function raise (message) { + this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); +}; + +// If u flag is given, this returns the code point at the index (it combines a surrogate pair). +// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). +RegExpValidationState.prototype.at = function at (i, forceU) { + if ( forceU === void 0 ) forceU = false; + + var s = this.source; + var l = s.length; + if (i >= l) { + return -1 } -} + var c = s.charCodeAt(i); + if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { + return c + } + var next = s.charCodeAt(i + 1); + return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c +}; +RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) { + if ( forceU === void 0 ) forceU = false; -/***/ }), + var s = this.source; + var l = s.length; + if (i >= l) { + return l + } + var c = s.charCodeAt(i), next; + if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || + (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { + return i + 1 + } + return i + 2 +}; -/***/ 35995: -/***/ ((module) => { +RegExpValidationState.prototype.current = function current (forceU) { + if ( forceU === void 0 ) forceU = false; -"use strict"; + return this.at(this.pos, forceU) +}; +RegExpValidationState.prototype.lookahead = function lookahead (forceU) { + if ( forceU === void 0 ) forceU = false; -module.exports = { - mapHttpResponse, - resSerializer -} + return this.at(this.nextIndex(this.pos, forceU), forceU) +}; -const rawSymbol = Symbol('pino-raw-res-ref') -const pinoResProto = Object.create({}, { - statusCode: { - enumerable: true, - writable: true, - value: 0 - }, - headers: { - enumerable: true, - writable: true, - value: '' - }, - raw: { - enumerable: false, - get: function () { - return this[rawSymbol] - }, - set: function (val) { - this[rawSymbol] = val - } - } -}) -Object.defineProperty(pinoResProto, rawSymbol, { - writable: true, - value: {} -}) +RegExpValidationState.prototype.advance = function advance (forceU) { + if ( forceU === void 0 ) forceU = false; -function resSerializer (res) { - const _res = Object.create(pinoResProto) - _res.statusCode = res.statusCode - _res.headers = res.getHeaders ? res.getHeaders() : res._headers - _res.raw = res - return _res -} + this.pos = this.nextIndex(this.pos, forceU); +}; -function mapHttpResponse (res) { - return { - res: resSerializer(res) +RegExpValidationState.prototype.eat = function eat (ch, forceU) { + if ( forceU === void 0 ) forceU = false; + + if (this.current(forceU) === ch) { + this.advance(forceU); + return true } -} + return false +}; +RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) { + if ( forceU === void 0 ) forceU = false; -/***/ }), + var pos = this.pos; + for (var i = 0, list = chs; i < list.length; i += 1) { + var ch = list[i]; -/***/ 15749: -/***/ ((module) => { + var current = this.at(pos, forceU); + if (current === -1 || current !== ch) { + return false + } + pos = this.nextIndex(pos, forceU); + } + this.pos = pos; + return true +}; -"use strict"; +/** + * Validate the flags part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ +pp$1.validateRegExpFlags = function(state) { + var validFlags = state.validFlags; + var flags = state.flags; + var u = false; + var v = false; -function noOpPrepareStackTrace (_, stack) { - return stack -} + for (var i = 0; i < flags.length; i++) { + var flag = flags.charAt(i); + if (validFlags.indexOf(flag) === -1) { + this.raise(state.start, "Invalid regular expression flag"); + } + if (flags.indexOf(flag, i + 1) > -1) { + this.raise(state.start, "Duplicate regular expression flag"); + } + if (flag === "u") { u = true; } + if (flag === "v") { v = true; } + } + if (this.options.ecmaVersion >= 15 && u && v) { + this.raise(state.start, "Invalid regular expression flag"); + } +}; -module.exports = function getCallers () { - const originalPrepare = Error.prepareStackTrace - Error.prepareStackTrace = noOpPrepareStackTrace - const stack = new Error().stack - Error.prepareStackTrace = originalPrepare +function hasProp(obj) { + for (var _ in obj) { return true } + return false +} - if (!Array.isArray(stack)) { - return undefined +/** + * Validate the pattern part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ +pp$1.validateRegExpPattern = function(state) { + this.regexp_pattern(state); + + // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of + // parsing contains a |GroupName|, reparse with the goal symbol + // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* + // exception if _P_ did not conform to the grammar, if any elements of _P_ + // were not matched by the parse, or if any Early Error conditions exist. + if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) { + state.switchN = true; + this.regexp_pattern(state); } +}; - const entries = stack.slice(2) +// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern +pp$1.regexp_pattern = function(state) { + state.pos = 0; + state.lastIntValue = 0; + state.lastStringValue = ""; + state.lastAssertionIsQuantifiable = false; + state.numCapturingParens = 0; + state.maxBackReference = 0; + state.groupNames = Object.create(null); + state.backReferenceNames.length = 0; + state.branchID = null; - const fileNames = [] + this.regexp_disjunction(state); - for (const entry of entries) { - if (!entry) { - continue + if (state.pos !== state.source.length) { + // Make the same messages as V8. + if (state.eat(0x29 /* ) */)) { + state.raise("Unmatched ')'"); } + if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { + state.raise("Lone quantifier brackets"); + } + } + if (state.maxBackReference > state.numCapturingParens) { + state.raise("Invalid escape"); + } + for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { + var name = list[i]; - fileNames.push(entry.getFileName()) + if (!state.groupNames[name]) { + state.raise("Invalid named capture referenced"); + } } +}; - return fileNames -} +// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction +pp$1.regexp_disjunction = function(state) { + var trackDisjunction = this.options.ecmaVersion >= 16; + if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); } + this.regexp_alternative(state); + while (state.eat(0x7C /* | */)) { + if (trackDisjunction) { state.branchID = state.branchID.sibling(); } + this.regexp_alternative(state); + } + if (trackDisjunction) { state.branchID = state.branchID.parent; } + // Make the same message as V8. + if (this.regexp_eatQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + if (state.eat(0x7B /* { */)) { + state.raise("Lone quantifier brackets"); + } +}; -/***/ }), +// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative +pp$1.regexp_alternative = function(state) { + while (state.pos < state.source.length && this.regexp_eatTerm(state)) {} +}; -/***/ 39640: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term +pp$1.regexp_eatTerm = function(state) { + if (this.regexp_eatAssertion(state)) { + // Handle `QuantifiableAssertion Quantifier` alternative. + // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion + // is a QuantifiableAssertion. + if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { + // Make the same message as V8. + if (state.switchU) { + state.raise("Invalid quantifier"); + } + } + return true + } -"use strict"; + if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { + this.regexp_eatQuantifier(state); + return true + } + return false +}; -const warning = __nccwpck_require__(725)() -module.exports = warning +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion +pp$1.regexp_eatAssertion = function(state) { + var start = state.pos; + state.lastAssertionIsQuantifiable = false; -const warnName = 'PinoWarning' + // ^, $ + if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { + return true + } -warning.create(warnName, 'PINODEP008', 'prettyPrint is deprecated, look at https://github.com/pinojs/pino-pretty for alternatives.') + // \b \B + if (state.eat(0x5C /* \ */)) { + if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { + return true + } + state.pos = start; + } -warning.create(warnName, 'PINODEP009', 'The use of pino.final is discouraged in Node.js v14+ and not required. It will be removed in the next major version') + // Lookahead / Lookbehind + if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { + var lookbehind = false; + if (this.options.ecmaVersion >= 9) { + lookbehind = state.eat(0x3C /* < */); + } + if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { + this.regexp_disjunction(state); + if (!state.eat(0x29 /* ) */)) { + state.raise("Unterminated group"); + } + state.lastAssertionIsQuantifiable = !lookbehind; + return true + } + } + state.pos = start; + return false +}; -/***/ }), +// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier +pp$1.regexp_eatQuantifier = function(state, noError) { + if ( noError === void 0 ) noError = false; -/***/ 98122: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (this.regexp_eatQuantifierPrefix(state, noError)) { + state.eat(0x3F /* ? */); + return true + } + return false +}; -"use strict"; +// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix +pp$1.regexp_eatQuantifierPrefix = function(state, noError) { + return ( + state.eat(0x2A /* * */) || + state.eat(0x2B /* + */) || + state.eat(0x3F /* ? */) || + this.regexp_eatBracedQuantifier(state, noError) + ) +}; +pp$1.regexp_eatBracedQuantifier = function(state, noError) { + var start = state.pos; + if (state.eat(0x7B /* { */)) { + var min = 0, max = -1; + if (this.regexp_eatDecimalDigits(state)) { + min = state.lastIntValue; + if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { + max = state.lastIntValue; + } + if (state.eat(0x7D /* } */)) { + // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term + if (max !== -1 && max < min && !noError) { + state.raise("numbers out of order in {} quantifier"); + } + return true + } + } + if (state.switchU && !noError) { + state.raise("Incomplete quantifier"); + } + state.pos = start; + } + return false +}; -/* eslint no-prototype-builtins: 0 */ -const { - lsCacheSym, - levelValSym, - useOnlyCustomLevelsSym, - streamSym, - formattersSym, - hooksSym -} = __nccwpck_require__(75683) -const { noop, genLog } = __nccwpck_require__(80566) - -const levels = { - trace: 10, - debug: 20, - info: 30, - warn: 40, - error: 50, - fatal: 60 -} -const levelMethods = { - fatal: (hook) => { - const logFatal = genLog(levels.fatal, hook) - return function (...args) { - const stream = this[streamSym] - logFatal.call(this, ...args) - if (typeof stream.flushSync === 'function') { - try { - stream.flushSync() - } catch (e) { - // https://github.com/pinojs/pino/pull/740#discussion_r346788313 +// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom +pp$1.regexp_eatAtom = function(state) { + return ( + this.regexp_eatPatternCharacters(state) || + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) + ) +}; +pp$1.regexp_eatReverseSolidusAtomEscape = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatAtomEscape(state)) { + return true + } + state.pos = start; + } + return false +}; +pp$1.regexp_eatUncapturingGroup = function(state) { + var start = state.pos; + if (state.eat(0x28 /* ( */)) { + if (state.eat(0x3F /* ? */)) { + if (this.options.ecmaVersion >= 16) { + var addModifiers = this.regexp_eatModifiers(state); + var hasHyphen = state.eat(0x2D /* - */); + if (addModifiers || hasHyphen) { + for (var i = 0; i < addModifiers.length; i++) { + var modifier = addModifiers.charAt(i); + if (addModifiers.indexOf(modifier, i + 1) > -1) { + state.raise("Duplicate regular expression modifiers"); + } + } + if (hasHyphen) { + var removeModifiers = this.regexp_eatModifiers(state); + if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) { + state.raise("Invalid regular expression modifiers"); + } + for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) { + var modifier$1 = removeModifiers.charAt(i$1); + if ( + removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || + addModifiers.indexOf(modifier$1) > -1 + ) { + state.raise("Duplicate regular expression modifiers"); + } + } + } } } + if (state.eat(0x3A /* : */)) { + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + return true + } + state.raise("Unterminated group"); + } } - }, - error: (hook) => genLog(levels.error, hook), - warn: (hook) => genLog(levels.warn, hook), - info: (hook) => genLog(levels.info, hook), - debug: (hook) => genLog(levels.debug, hook), - trace: (hook) => genLog(levels.trace, hook) + state.pos = start; + } + return false +}; +pp$1.regexp_eatCapturingGroup = function(state) { + if (state.eat(0x28 /* ( */)) { + if (this.options.ecmaVersion >= 9) { + this.regexp_groupSpecifier(state); + } else if (state.current() === 0x3F /* ? */) { + state.raise("Invalid group"); + } + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + state.numCapturingParens += 1; + return true + } + state.raise("Unterminated group"); + } + return false +}; +// RegularExpressionModifiers :: +// [empty] +// RegularExpressionModifiers RegularExpressionModifier +pp$1.regexp_eatModifiers = function(state) { + var modifiers = ""; + var ch = 0; + while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) { + modifiers += codePointToString(ch); + state.advance(); + } + return modifiers +}; +// RegularExpressionModifier :: one of +// `i` `m` `s` +function isRegularExpressionModifier(ch) { + return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */ } -const nums = Object.keys(levels).reduce((o, k) => { - o[levels[k]] = k - return o -}, {}) +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom +pp$1.regexp_eatExtendedAtom = function(state) { + return ( + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) || + this.regexp_eatInvalidBracedQuantifier(state) || + this.regexp_eatExtendedPatternCharacter(state) + ) +}; -const initialLsCache = Object.keys(nums).reduce((o, k) => { - o[k] = '{"level":' + Number(k) - return o -}, {}) +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier +pp$1.regexp_eatInvalidBracedQuantifier = function(state) { + if (this.regexp_eatBracedQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + return false +}; -function genLsCache (instance) { - const formatter = instance[formattersSym].level - const { labels } = instance.levels - const cache = {} - for (const label in labels) { - const level = formatter(labels[label], Number(label)) - cache[label] = JSON.stringify(level).slice(0, -1) +// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter +pp$1.regexp_eatSyntaxCharacter = function(state) { + var ch = state.current(); + if (isSyntaxCharacter(ch)) { + state.lastIntValue = ch; + state.advance(); + return true } - instance[lsCacheSym] = cache - return instance + return false +}; +function isSyntaxCharacter(ch) { + return ( + ch === 0x24 /* $ */ || + ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || + ch === 0x2E /* . */ || + ch === 0x3F /* ? */ || + ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) } -function isStandardLevel (level, useOnlyCustomLevels) { - if (useOnlyCustomLevels) { - return false +// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter +// But eat eager. +pp$1.regexp_eatPatternCharacters = function(state) { + var start = state.pos; + var ch = 0; + while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { + state.advance(); } + return state.pos !== start +}; - switch (level) { - case 'fatal': - case 'error': - case 'warn': - case 'info': - case 'debug': - case 'trace': - return true - default: - return false +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter +pp$1.regexp_eatExtendedPatternCharacter = function(state) { + var ch = state.current(); + if ( + ch !== -1 && + ch !== 0x24 /* $ */ && + !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && + ch !== 0x2E /* . */ && + ch !== 0x3F /* ? */ && + ch !== 0x5B /* [ */ && + ch !== 0x5E /* ^ */ && + ch !== 0x7C /* | */ + ) { + state.advance(); + return true } -} + return false +}; -function setLevel (level) { - const { labels, values } = this.levels - if (typeof level === 'number') { - if (labels[level] === undefined) throw Error('unknown level value' + level) - level = labels[level] +// GroupSpecifier :: +// [empty] +// `?` GroupName +pp$1.regexp_groupSpecifier = function(state) { + if (state.eat(0x3F /* ? */)) { + if (!this.regexp_eatGroupName(state)) { state.raise("Invalid group"); } + var trackDisjunction = this.options.ecmaVersion >= 16; + var known = state.groupNames[state.lastStringValue]; + if (known) { + if (trackDisjunction) { + for (var i = 0, list = known; i < list.length; i += 1) { + var altID = list[i]; + + if (!altID.separatedFrom(state.branchID)) + { state.raise("Duplicate capture group name"); } + } + } else { + state.raise("Duplicate capture group name"); + } + } + if (trackDisjunction) { + (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID); + } else { + state.groupNames[state.lastStringValue] = true; + } } - if (values[level] === undefined) throw Error('unknown level ' + level) - const preLevelVal = this[levelValSym] - const levelVal = this[levelValSym] = values[level] - const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym] - const hook = this[hooksSym].logMethod +}; - for (const key in values) { - if (levelVal > values[key]) { - this[key] = noop - continue +// GroupName :: +// `<` RegExpIdentifierName `>` +// Note: this updates `state.lastStringValue` property with the eaten name. +pp$1.regexp_eatGroupName = function(state) { + state.lastStringValue = ""; + if (state.eat(0x3C /* < */)) { + if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { + return true } - this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook) + state.raise("Invalid capture group name"); } + return false +}; - this.emit( - 'level-change', - level, - levelVal, - labels[preLevelVal], - preLevelVal - ) -} - -function getLevel (level) { - const { levels, levelVal } = this - // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833) - return (levels && levels.labels) ? levels.labels[levelVal] : '' -} +// RegExpIdentifierName :: +// RegExpIdentifierStart +// RegExpIdentifierName RegExpIdentifierPart +// Note: this updates `state.lastStringValue` property with the eaten name. +pp$1.regexp_eatRegExpIdentifierName = function(state) { + state.lastStringValue = ""; + if (this.regexp_eatRegExpIdentifierStart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + while (this.regexp_eatRegExpIdentifierPart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + } + return true + } + return false +}; -function isLevelEnabled (logLevel) { - const { values } = this.levels - const logLevelVal = values[logLevel] - return logLevelVal !== undefined && (logLevelVal >= this[levelValSym]) -} +// RegExpIdentifierStart :: +// UnicodeIDStart +// `$` +// `_` +// `\` RegExpUnicodeEscapeSequence[+U] +pp$1.regexp_eatRegExpIdentifierStart = function(state) { + var start = state.pos; + var forceU = this.options.ecmaVersion >= 11; + var ch = state.current(forceU); + state.advance(forceU); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierStart(ch)) { + state.lastIntValue = ch; + return true + } -function mappings (customLevels = null, useOnlyCustomLevels = false) { - const customNums = customLevels - /* eslint-disable */ - ? Object.keys(customLevels).reduce((o, k) => { - o[customLevels[k]] = k - return o - }, {}) - : null - /* eslint-enable */ + state.pos = start; + return false +}; +function isRegExpIdentifierStart(ch) { + return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ +} + +// RegExpIdentifierPart :: +// UnicodeIDContinue +// `$` +// `_` +// `\` RegExpUnicodeEscapeSequence[+U] +// <ZWNJ> +// <ZWJ> +pp$1.regexp_eatRegExpIdentifierPart = function(state) { + var start = state.pos; + var forceU = this.options.ecmaVersion >= 11; + var ch = state.current(forceU); + state.advance(forceU); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierPart(ch)) { + state.lastIntValue = ch; + return true + } - const labels = Object.assign( - Object.create(Object.prototype, { Infinity: { value: 'silent' } }), - useOnlyCustomLevels ? null : nums, - customNums - ) - const values = Object.assign( - Object.create(Object.prototype, { silent: { value: Infinity } }), - useOnlyCustomLevels ? null : levels, - customLevels - ) - return { labels, values } + state.pos = start; + return false +}; +function isRegExpIdentifierPart(ch) { + return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */ } -function assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) { - if (typeof defaultLevel === 'number') { - const values = [].concat( - Object.keys(customLevels || {}).map(key => customLevels[key]), - useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level), - Infinity - ) - if (!values.includes(defaultLevel)) { - throw Error(`default level:${defaultLevel} must be included in custom levels`) +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape +pp$1.regexp_eatAtomEscape = function(state) { + if ( + this.regexp_eatBackReference(state) || + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) || + (state.switchN && this.regexp_eatKGroupName(state)) + ) { + return true + } + if (state.switchU) { + // Make the same message as V8. + if (state.current() === 0x63 /* c */) { + state.raise("Invalid unicode escape"); } - return + state.raise("Invalid escape"); + } + return false +}; +pp$1.regexp_eatBackReference = function(state) { + var start = state.pos; + if (this.regexp_eatDecimalEscape(state)) { + var n = state.lastIntValue; + if (state.switchU) { + // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape + if (n > state.maxBackReference) { + state.maxBackReference = n; + } + return true + } + if (n <= state.numCapturingParens) { + return true + } + state.pos = start; + } + return false +}; +pp$1.regexp_eatKGroupName = function(state) { + if (state.eat(0x6B /* k */)) { + if (this.regexp_eatGroupName(state)) { + state.backReferenceNames.push(state.lastStringValue); + return true + } + state.raise("Invalid named reference"); } + return false +}; - const labels = Object.assign( - Object.create(Object.prototype, { silent: { value: Infinity } }), - useOnlyCustomLevels ? null : levels, - customLevels +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape +pp$1.regexp_eatCharacterEscape = function(state) { + return ( + this.regexp_eatControlEscape(state) || + this.regexp_eatCControlLetter(state) || + this.regexp_eatZero(state) || + this.regexp_eatHexEscapeSequence(state) || + this.regexp_eatRegExpUnicodeEscapeSequence(state, false) || + (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || + this.regexp_eatIdentityEscape(state) ) - if (!(defaultLevel in labels)) { - throw Error(`default level:${defaultLevel} must be included in custom levels`) +}; +pp$1.regexp_eatCControlLetter = function(state) { + var start = state.pos; + if (state.eat(0x63 /* c */)) { + if (this.regexp_eatControlLetter(state)) { + return true + } + state.pos = start; + } + return false +}; +pp$1.regexp_eatZero = function(state) { + if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { + state.lastIntValue = 0; + state.advance(); + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape +pp$1.regexp_eatControlEscape = function(state) { + var ch = state.current(); + if (ch === 0x74 /* t */) { + state.lastIntValue = 0x09; /* \t */ + state.advance(); + return true + } + if (ch === 0x6E /* n */) { + state.lastIntValue = 0x0A; /* \n */ + state.advance(); + return true + } + if (ch === 0x76 /* v */) { + state.lastIntValue = 0x0B; /* \v */ + state.advance(); + return true + } + if (ch === 0x66 /* f */) { + state.lastIntValue = 0x0C; /* \f */ + state.advance(); + return true + } + if (ch === 0x72 /* r */) { + state.lastIntValue = 0x0D; /* \r */ + state.advance(); + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter +pp$1.regexp_eatControlLetter = function(state) { + var ch = state.current(); + if (isControlLetter(ch)) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true } + return false +}; +function isControlLetter(ch) { + return ( + (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || + (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) + ) } -function assertNoLevelCollisions (levels, customLevels) { - const { labels, values } = levels - for (const k in customLevels) { - if (k in values) { - throw Error('levels cannot be overridden') +// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence +pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) { + if ( forceU === void 0 ) forceU = false; + + var start = state.pos; + var switchU = forceU || state.switchU; + + if (state.eat(0x75 /* u */)) { + if (this.regexp_eatFixedHexDigits(state, 4)) { + var lead = state.lastIntValue; + if (switchU && lead >= 0xD800 && lead <= 0xDBFF) { + var leadSurrogateEnd = state.pos; + if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { + var trail = state.lastIntValue; + if (trail >= 0xDC00 && trail <= 0xDFFF) { + state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + return true + } + } + state.pos = leadSurrogateEnd; + state.lastIntValue = lead; + } + return true + } + if ( + switchU && + state.eat(0x7B /* { */) && + this.regexp_eatHexDigits(state) && + state.eat(0x7D /* } */) && + isValidUnicode(state.lastIntValue) + ) { + return true } - if (customLevels[k] in labels) { - throw Error('pre-existing level values cannot be used for new levels') + if (switchU) { + state.raise("Invalid unicode escape"); } + state.pos = start; } -} -module.exports = { - initialLsCache, - genLsCache, - levelMethods, - getLevel, - setLevel, - isLevelEnabled, - mappings, - levels, - assertNoLevelCollisions, - assertDefaultLevelFound + return false +}; +function isValidUnicode(ch) { + return ch >= 0 && ch <= 0x10FFFF } +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape +pp$1.regexp_eatIdentityEscape = function(state) { + if (state.switchU) { + if (this.regexp_eatSyntaxCharacter(state)) { + return true + } + if (state.eat(0x2F /* / */)) { + state.lastIntValue = 0x2F; /* / */ + return true + } + return false + } -/***/ }), - -/***/ 84834: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + var ch = state.current(); + if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { + state.lastIntValue = ch; + state.advance(); + return true + } -"use strict"; + return false +}; +// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape +pp$1.regexp_eatDecimalEscape = function(state) { + state.lastIntValue = 0; + var ch = state.current(); + if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { + do { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) + return true + } + return false +}; -const { version } = __nccwpck_require__(12139) +// Return values used by character set parsing methods, needed to +// forbid negation of sets that can match strings. +var CharSetNone = 0; // Nothing parsed +var CharSetOk = 1; // Construct parsed, cannot contain strings +var CharSetString = 2; // Construct parsed, can contain strings -module.exports = { version } +// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape +pp$1.regexp_eatCharacterClassEscape = function(state) { + var ch = state.current(); + if (isCharacterClassEscape(ch)) { + state.lastIntValue = -1; + state.advance(); + return CharSetOk + } -/***/ }), + var negate = false; + if ( + state.switchU && + this.options.ecmaVersion >= 9 && + ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */) + ) { + state.lastIntValue = -1; + state.advance(); + var result; + if ( + state.eat(0x7B /* { */) && + (result = this.regexp_eatUnicodePropertyValueExpression(state)) && + state.eat(0x7D /* } */) + ) { + if (negate && result === CharSetString) { state.raise("Invalid property name"); } + return result + } + state.raise("Invalid property name"); + } -/***/ 54881: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return CharSetNone +}; -"use strict"; +function isCharacterClassEscape(ch) { + return ( + ch === 0x64 /* d */ || + ch === 0x44 /* D */ || + ch === 0x73 /* s */ || + ch === 0x53 /* S */ || + ch === 0x77 /* w */ || + ch === 0x57 /* W */ + ) +} +// UnicodePropertyValueExpression :: +// UnicodePropertyName `=` UnicodePropertyValue +// LoneUnicodePropertyNameOrValue +pp$1.regexp_eatUnicodePropertyValueExpression = function(state) { + var start = state.pos; -const metadata = Symbol.for('pino.metadata') -const { levels } = __nccwpck_require__(98122) + // UnicodePropertyName `=` UnicodePropertyValue + if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { + var name = state.lastStringValue; + if (this.regexp_eatUnicodePropertyValue(state)) { + var value = state.lastStringValue; + this.regexp_validateUnicodePropertyNameAndValue(state, name, value); + return CharSetOk + } + } + state.pos = start; -const defaultLevels = Object.create(levels) -defaultLevels.silent = Infinity + // LoneUnicodePropertyNameOrValue + if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { + var nameOrValue = state.lastStringValue; + return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue) + } + return CharSetNone +}; -const DEFAULT_INFO_LEVEL = levels.info +pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { + if (!hasOwn(state.unicodeProperties.nonBinary, name)) + { state.raise("Invalid property name"); } + if (!state.unicodeProperties.nonBinary[name].test(value)) + { state.raise("Invalid property value"); } +}; -function multistream (streamsArray, opts) { - let counter = 0 - streamsArray = streamsArray || [] - opts = opts || { dedupe: false } +pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { + if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk } + if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString } + state.raise("Invalid property name"); +}; - let levels = defaultLevels - if (opts.levels && typeof opts.levels === 'object') { - levels = opts.levels +// UnicodePropertyName :: +// UnicodePropertyNameCharacters +pp$1.regexp_eatUnicodePropertyName = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyNameCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); } + return state.lastStringValue !== "" +}; - const res = { - write, - add, - flushSync, - end, - minLevel: 0, - streams: [], - clone, - [metadata]: true - } +function isUnicodePropertyNameCharacter(ch) { + return isControlLetter(ch) || ch === 0x5F /* _ */ +} - if (Array.isArray(streamsArray)) { - streamsArray.forEach(add, res) - } else { - add.call(res, streamsArray) +// UnicodePropertyValue :: +// UnicodePropertyValueCharacters +pp$1.regexp_eatUnicodePropertyValue = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyValueCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); } + return state.lastStringValue !== "" +}; +function isUnicodePropertyValueCharacter(ch) { + return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) +} - // clean this object up - // or it will stay allocated forever - // as it is closed on the following closures - streamsArray = null +// LoneUnicodePropertyNameOrValue :: +// UnicodePropertyValueCharacters +pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { + return this.regexp_eatUnicodePropertyValue(state) +}; - return res +// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass +pp$1.regexp_eatCharacterClass = function(state) { + if (state.eat(0x5B /* [ */)) { + var negate = state.eat(0x5E /* ^ */); + var result = this.regexp_classContents(state); + if (!state.eat(0x5D /* ] */)) + { state.raise("Unterminated character class"); } + if (negate && result === CharSetString) + { state.raise("Negated character class may contain strings"); } + return true + } + return false +}; - // we can exit early because the streams are ordered by level - function write (data) { - let dest - const level = this.lastLevel - const { streams } = this - let stream - for (let i = 0; i < streams.length; i++) { - dest = streams[i] - if (dest.level <= level) { - stream = dest.stream - if (stream[metadata]) { - const { lastTime, lastMsg, lastObj, lastLogger } = this - stream.lastLevel = level - stream.lastTime = lastTime - stream.lastMsg = lastMsg - stream.lastObj = lastObj - stream.lastLogger = lastLogger - } - if (!opts.dedupe || dest.level === level) { - stream.write(data) - } - } else { - break +// https://tc39.es/ecma262/#prod-ClassContents +// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges +pp$1.regexp_classContents = function(state) { + if (state.current() === 0x5D /* ] */) { return CharSetOk } + if (state.switchV) { return this.regexp_classSetExpression(state) } + this.regexp_nonEmptyClassRanges(state); + return CharSetOk +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges +// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash +pp$1.regexp_nonEmptyClassRanges = function(state) { + while (this.regexp_eatClassAtom(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { + var right = state.lastIntValue; + if (state.switchU && (left === -1 || right === -1)) { + state.raise("Invalid character class"); + } + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); } } } +}; - function flushSync () { - for (const { stream } of this.streams) { - if (typeof stream.flushSync === 'function') { - stream.flushSync() +// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom +// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash +pp$1.regexp_eatClassAtom = function(state) { + var start = state.pos; + + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatClassEscape(state)) { + return true + } + if (state.switchU) { + // Make the same message as V8. + var ch$1 = state.current(); + if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { + state.raise("Invalid class escape"); } + state.raise("Invalid escape"); } + state.pos = start; } - function add (dest) { - if (!dest) { - return res - } + var ch = state.current(); + if (ch !== 0x5D /* ] */) { + state.lastIntValue = ch; + state.advance(); + return true + } - // Check that dest implements either StreamEntry or DestinationStream - const isStream = typeof dest.write === 'function' || dest.stream - const stream_ = dest.write ? dest : dest.stream - // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write() - if (!isStream) { - throw Error('stream object needs to implement either StreamEntry or DestinationStream interface') - } + return false +}; - const { streams } = this +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape +pp$1.regexp_eatClassEscape = function(state) { + var start = state.pos; - let level - if (typeof dest.levelVal === 'number') { - level = dest.levelVal - } else if (typeof dest.level === 'string') { - level = levels[dest.level] - } else if (typeof dest.level === 'number') { - level = dest.level - } else { - level = DEFAULT_INFO_LEVEL - } + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* <BS> */ + return true + } - const dest_ = { - stream: stream_, - level, - levelVal: undefined, - id: counter++ - } + if (state.switchU && state.eat(0x2D /* - */)) { + state.lastIntValue = 0x2D; /* - */ + return true + } - streams.unshift(dest_) - streams.sort(compareByLevel) + if (!state.switchU && state.eat(0x63 /* c */)) { + if (this.regexp_eatClassControlLetter(state)) { + return true + } + state.pos = start; + } - this.minLevel = streams[0].level + return ( + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) + ) +}; - return res +// https://tc39.es/ecma262/#prod-ClassSetExpression +// https://tc39.es/ecma262/#prod-ClassUnion +// https://tc39.es/ecma262/#prod-ClassIntersection +// https://tc39.es/ecma262/#prod-ClassSubtraction +pp$1.regexp_classSetExpression = function(state) { + var result = CharSetOk, subResult; + if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) { + if (subResult === CharSetString) { result = CharSetString; } + // https://tc39.es/ecma262/#prod-ClassIntersection + var start = state.pos; + while (state.eatChars([0x26, 0x26] /* && */)) { + if ( + state.current() !== 0x26 /* & */ && + (subResult = this.regexp_eatClassSetOperand(state)) + ) { + if (subResult !== CharSetString) { result = CharSetOk; } + continue + } + state.raise("Invalid character in character class"); + } + if (start !== state.pos) { return result } + // https://tc39.es/ecma262/#prod-ClassSubtraction + while (state.eatChars([0x2D, 0x2D] /* -- */)) { + if (this.regexp_eatClassSetOperand(state)) { continue } + state.raise("Invalid character in character class"); + } + if (start !== state.pos) { return result } + } else { + state.raise("Invalid character in character class"); + } + // https://tc39.es/ecma262/#prod-ClassUnion + for (;;) { + if (this.regexp_eatClassSetRange(state)) { continue } + subResult = this.regexp_eatClassSetOperand(state); + if (!subResult) { return result } + if (subResult === CharSetString) { result = CharSetString; } } +}; - function end () { - for (const { stream } of this.streams) { - if (typeof stream.flushSync === 'function') { - stream.flushSync() +// https://tc39.es/ecma262/#prod-ClassSetRange +pp$1.regexp_eatClassSetRange = function(state) { + var start = state.pos; + if (this.regexp_eatClassSetCharacter(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) { + var right = state.lastIntValue; + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); } - stream.end() + return true } + state.pos = start; } + return false +}; - function clone (level) { - const streams = new Array(this.streams.length) +// https://tc39.es/ecma262/#prod-ClassSetOperand +pp$1.regexp_eatClassSetOperand = function(state) { + if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk } + return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state) +}; - for (let i = 0; i < streams.length; i++) { - streams[i] = { - level: level, - stream: this.streams[i].stream +// https://tc39.es/ecma262/#prod-NestedClass +pp$1.regexp_eatNestedClass = function(state) { + var start = state.pos; + if (state.eat(0x5B /* [ */)) { + var negate = state.eat(0x5E /* ^ */); + var result = this.regexp_classContents(state); + if (state.eat(0x5D /* ] */)) { + if (negate && result === CharSetString) { + state.raise("Negated character class may contain strings"); } + return result } - - return { - write, - add, - minLevel: level, - streams, - clone, - flushSync, - [metadata]: true + state.pos = start; + } + if (state.eat(0x5C /* \ */)) { + var result$1 = this.regexp_eatCharacterClassEscape(state); + if (result$1) { + return result$1 } + state.pos = start; } -} - -function compareByLevel (a, b) { - return a.level - b.level -} + return null +}; -module.exports = multistream +// https://tc39.es/ecma262/#prod-ClassStringDisjunction +pp$1.regexp_eatClassStringDisjunction = function(state) { + var start = state.pos; + if (state.eatChars([0x5C, 0x71] /* \q */)) { + if (state.eat(0x7B /* { */)) { + var result = this.regexp_classStringDisjunctionContents(state); + if (state.eat(0x7D /* } */)) { + return result + } + } else { + // Make the same message as V8. + state.raise("Invalid escape"); + } + state.pos = start; + } + return null +}; +// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents +pp$1.regexp_classStringDisjunctionContents = function(state) { + var result = this.regexp_classString(state); + while (state.eat(0x7C /* | */)) { + if (this.regexp_classString(state) === CharSetString) { result = CharSetString; } + } + return result +}; -/***/ }), +// https://tc39.es/ecma262/#prod-ClassString +// https://tc39.es/ecma262/#prod-NonEmptyClassString +pp$1.regexp_classString = function(state) { + var count = 0; + while (this.regexp_eatClassSetCharacter(state)) { count++; } + return count === 1 ? CharSetOk : CharSetString +}; -/***/ 27921: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// https://tc39.es/ecma262/#prod-ClassSetCharacter +pp$1.regexp_eatClassSetCharacter = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if ( + this.regexp_eatCharacterEscape(state) || + this.regexp_eatClassSetReservedPunctuator(state) + ) { + return true + } + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* <BS> */ + return true + } + state.pos = start; + return false + } + var ch = state.current(); + if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false } + if (isClassSetSyntaxCharacter(ch)) { return false } + state.advance(); + state.lastIntValue = ch; + return true +}; -"use strict"; +// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator +function isClassSetReservedDoublePunctuatorCharacter(ch) { + return ( + ch === 0x21 /* ! */ || + ch >= 0x23 /* # */ && ch <= 0x26 /* & */ || + ch >= 0x2A /* * */ && ch <= 0x2C /* , */ || + ch === 0x2E /* . */ || + ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ || + ch === 0x5E /* ^ */ || + ch === 0x60 /* ` */ || + ch === 0x7E /* ~ */ + ) +} +// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter +function isClassSetSyntaxCharacter(ch) { + return ( + ch === 0x28 /* ( */ || + ch === 0x29 /* ) */ || + ch === 0x2D /* - */ || + ch === 0x2F /* / */ || + ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) +} -/* eslint no-prototype-builtins: 0 */ +// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator +pp$1.regexp_eatClassSetReservedPunctuator = function(state) { + var ch = state.current(); + if (isClassSetReservedPunctuator(ch)) { + state.lastIntValue = ch; + state.advance(); + return true + } + return false +}; -const { EventEmitter } = __nccwpck_require__(82361) -const { - lsCacheSym, - levelValSym, - setLevelSym, - getLevelSym, - chindingsSym, - parsedChindingsSym, - mixinSym, - asJsonSym, - writeSym, - mixinMergeStrategySym, - timeSym, - timeSliceIndexSym, - streamSym, - serializersSym, - formattersSym, - useOnlyCustomLevelsSym, - needsMetadataGsym, - redactFmtSym, - stringifySym, - formatOptsSym, - stringifiersSym -} = __nccwpck_require__(75683) -const { - getLevel, - setLevel, - isLevelEnabled, - mappings, - initialLsCache, - genLsCache, - assertNoLevelCollisions -} = __nccwpck_require__(98122) -const { - asChindings, - asJson, - buildFormatters, - stringify -} = __nccwpck_require__(80566) -const { - version -} = __nccwpck_require__(84834) -const redaction = __nccwpck_require__(74517) - -// note: use of class is satirical -// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127 -const constructor = class Pino {} -const prototype = { - constructor, - child, - bindings, - setBindings, - flush, - isLevelEnabled, - version, - get level () { return this[getLevelSym]() }, - set level (lvl) { this[setLevelSym](lvl) }, - get levelVal () { return this[levelValSym] }, - set levelVal (n) { throw Error('levelVal is read-only') }, - [lsCacheSym]: initialLsCache, - [writeSym]: write, - [asJsonSym]: asJson, - [getLevelSym]: getLevel, - [setLevelSym]: setLevel -} - -Object.setPrototypeOf(prototype, EventEmitter.prototype) - -// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing -module.exports = function () { - return Object.create(prototype) +// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator +function isClassSetReservedPunctuator(ch) { + return ( + ch === 0x21 /* ! */ || + ch === 0x23 /* # */ || + ch === 0x25 /* % */ || + ch === 0x26 /* & */ || + ch === 0x2C /* , */ || + ch === 0x2D /* - */ || + ch >= 0x3A /* : */ && ch <= 0x3E /* > */ || + ch === 0x40 /* @ */ || + ch === 0x60 /* ` */ || + ch === 0x7E /* ~ */ + ) } -const resetChildingsFormatter = bindings => bindings -function child (bindings, options) { - if (!bindings) { - throw Error('missing bindings for child Pino') +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter +pp$1.regexp_eatClassControlLetter = function(state) { + var ch = state.current(); + if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true } - options = options || {} // default options to empty object - const serializers = this[serializersSym] - const formatters = this[formattersSym] - const instance = Object.create(this) - - if (options.hasOwnProperty('serializers') === true) { - instance[serializersSym] = Object.create(null) + return false +}; - for (const k in serializers) { - instance[serializersSym][k] = serializers[k] +// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence +pp$1.regexp_eatHexEscapeSequence = function(state) { + var start = state.pos; + if (state.eat(0x78 /* x */)) { + if (this.regexp_eatFixedHexDigits(state, 2)) { + return true } - const parentSymbols = Object.getOwnPropertySymbols(serializers) - /* eslint no-var: off */ - for (var i = 0; i < parentSymbols.length; i++) { - const ks = parentSymbols[i] - instance[serializersSym][ks] = serializers[ks] + if (state.switchU) { + state.raise("Invalid escape"); } + state.pos = start; + } + return false +}; - for (const bk in options.serializers) { - instance[serializersSym][bk] = options.serializers[bk] - } - const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers) - for (var bi = 0; bi < bindingsSymbols.length; bi++) { - const bks = bindingsSymbols[bi] - instance[serializersSym][bks] = options.serializers[bks] +// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits +pp$1.regexp_eatDecimalDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isDecimalDigit(ch = state.current())) { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } + return state.pos !== start +}; +function isDecimalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits +pp$1.regexp_eatHexDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isHexDigit(ch = state.current())) { + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return state.pos !== start +}; +function isHexDigit(ch) { + return ( + (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || + (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || + (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) + ) +} +function hexToInt(ch) { + if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { + return 10 + (ch - 0x41 /* A */) + } + if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { + return 10 + (ch - 0x61 /* a */) + } + return ch - 0x30 /* 0 */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence +// Allows only 0-377(octal) i.e. 0-255(decimal). +pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) { + if (this.regexp_eatOctalDigit(state)) { + var n1 = state.lastIntValue; + if (this.regexp_eatOctalDigit(state)) { + var n2 = state.lastIntValue; + if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { + state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; + } else { + state.lastIntValue = n1 * 8 + n2; + } + } else { + state.lastIntValue = n1; } - } else instance[serializersSym] = serializers - if (options.hasOwnProperty('formatters')) { - const { level, bindings: chindings, log } = options.formatters - instance[formattersSym] = buildFormatters( - level || formatters.level, - chindings || resetChildingsFormatter, - log || formatters.log - ) - } else { - instance[formattersSym] = buildFormatters( - formatters.level, - resetChildingsFormatter, - formatters.log - ) + return true + } + return false +}; + +// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit +pp$1.regexp_eatOctalDigit = function(state) { + var ch = state.current(); + if (isOctalDigit(ch)) { + state.lastIntValue = ch - 0x30; /* 0 */ + state.advance(); + return true } - if (options.hasOwnProperty('customLevels') === true) { - assertNoLevelCollisions(this.levels, options.customLevels) - instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym]) - genLsCache(instance) + state.lastIntValue = 0; + return false +}; +function isOctalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ +} + +// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits +// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit +// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence +pp$1.regexp_eatFixedHexDigits = function(state, length) { + var start = state.pos; + state.lastIntValue = 0; + for (var i = 0; i < length; ++i) { + var ch = state.current(); + if (!isHexDigit(ch)) { + state.pos = start; + return false + } + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); } + return true +}; - // redact must place before asChindings and only replace if exist - if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) { - instance.redact = options.redact // replace redact directly - const stringifiers = redaction(instance.redact, stringify) - const formatOpts = { stringify: stringifiers[redactFmtSym] } - instance[stringifySym] = stringify - instance[stringifiersSym] = stringifiers - instance[formatOptsSym] = formatOpts - } +// Object type used to represent tokens. Note that normally, tokens +// simply exist as properties on the parser object. This is only +// used for the onToken callback and the external tokenizer. + +var Token = function Token(p) { + this.type = p.type; + this.value = p.value; + this.start = p.start; + this.end = p.end; + if (p.options.locations) + { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } + if (p.options.ranges) + { this.range = [p.start, p.end]; } +}; - instance[chindingsSym] = asChindings(instance, bindings) - const childLevel = options.level || this.level - instance[setLevelSym](childLevel) +// ## Tokenizer - return instance -} +var pp = Parser.prototype; -function bindings () { - const chindings = this[chindingsSym] - const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,"pid":7068,"hostname":"myMac" - const bindingsFromJson = JSON.parse(chindingsJson) - delete bindingsFromJson.pid - delete bindingsFromJson.hostname - return bindingsFromJson -} +// Move to the next token -function setBindings (newBindings) { - const chindings = asChindings(this, newBindings) - this[chindingsSym] = chindings - delete this[parsedChindingsSym] -} +pp.next = function(ignoreEscapeSequenceInKeyword) { + if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) + { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } + if (this.options.onToken) + { this.options.onToken(new Token(this)); } -/** - * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`. - * Fields from `mergeObject` have higher priority in this strategy. - * - * @param {Object} mergeObject The object a user has supplied to the logging function. - * @param {Object} mixinObject The result of the `mixin` method. - * @return {Object} - */ -function defaultMixinMergeStrategy (mergeObject, mixinObject) { - return Object.assign(mixinObject, mergeObject) -} + this.lastTokEnd = this.end; + this.lastTokStart = this.start; + this.lastTokEndLoc = this.endLoc; + this.lastTokStartLoc = this.startLoc; + this.nextToken(); +}; -function write (_obj, msg, num) { - const t = this[timeSym]() - const mixin = this[mixinSym] - const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy - let obj +pp.getToken = function() { + this.next(); + return new Token(this) +}; - if (_obj === undefined || _obj === null) { - obj = {} - } else if (_obj instanceof Error) { - obj = { err: _obj } - if (msg === undefined) { - msg = _obj.message - } - } else { - obj = _obj - if (msg === undefined && _obj.err) { - msg = _obj.err.message +// If we're in an ES6 environment, make parsers iterable +if (typeof Symbol !== "undefined") + { pp[Symbol.iterator] = function() { + var this$1$1 = this; + + return { + next: function () { + var token = this$1$1.getToken(); + return { + done: token.type === types$1.eof, + value: token + } + } } - } + }; } - if (mixin) { - obj = mixinMergeStrategy(obj, mixin(obj, num)) - } +// Toggle strict mode. Re-reads the next number or string to please +// pedantic tests (`"use strict"; 010;` should fail). - const s = this[asJsonSym](obj, msg, num, t) +// Read a single token, updating the parser object's token-related +// properties. - const stream = this[streamSym] - if (stream[needsMetadataGsym] === true) { - stream.lastLevel = num - stream.lastObj = obj - stream.lastMsg = msg - stream.lastTime = t.slice(this[timeSliceIndexSym]) - stream.lastLogger = this // for child loggers - } - stream.write(s) -} +pp.nextToken = function() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } -function noop () {} + this.start = this.pos; + if (this.options.locations) { this.startLoc = this.curPosition(); } + if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) } -function flush () { - const stream = this[streamSym] - if ('flush' in stream) stream.flush(noop) -} + if (curContext.override) { return curContext.override(this) } + else { this.readToken(this.fullCharCodeAtPos()); } +}; +pp.readToken = function(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) + { return this.readWord() } -/***/ }), + return this.getTokenFromCode(code) +}; -/***/ 74517: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +pp.fullCharCodeAtPos = function() { + var code = this.input.charCodeAt(this.pos); + if (code <= 0xd7ff || code >= 0xdc00) { return code } + var next = this.input.charCodeAt(this.pos + 1); + return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00 +}; -"use strict"; +pp.skipBlockComment = function() { + var startLoc = this.options.onComment && this.curPosition(); + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); + if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } + this.pos = end + 2; + if (this.options.locations) { + for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { + ++this.curLine; + pos = this.lineStart = nextBreak; + } + } + if (this.options.onComment) + { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, + startLoc, this.curPosition()); } +}; +pp.skipLineComment = function(startSkip) { + var start = this.pos; + var startLoc = this.options.onComment && this.curPosition(); + var ch = this.input.charCodeAt(this.pos += startSkip); + while (this.pos < this.input.length && !isNewLine(ch)) { + ch = this.input.charCodeAt(++this.pos); + } + if (this.options.onComment) + { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, + startLoc, this.curPosition()); } +}; -const fastRedact = __nccwpck_require__(56129) -const { redactFmtSym, wildcardFirstSym } = __nccwpck_require__(75683) -const { rx, validator } = fastRedact +// Called at the start of the parse and after every token. Skips +// whitespace and comments, and. -const validate = validator({ - ERR_PATHS_MUST_BE_STRINGS: () => 'pino – redacted paths must be strings', - ERR_INVALID_PATH: (s) => `pino – redact paths array contains an invalid path (${s})` -}) +pp.skipSpace = function() { + loop: while (this.pos < this.input.length) { + var ch = this.input.charCodeAt(this.pos); + switch (ch) { + case 32: case 160: // ' ' + ++this.pos; + break + case 13: + if (this.input.charCodeAt(this.pos + 1) === 10) { + ++this.pos; + } + case 10: case 8232: case 8233: + ++this.pos; + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + break + case 47: // '/' + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: // '*' + this.skipBlockComment(); + break + case 47: + this.skipLineComment(2); + break + default: + break loop + } + break + default: + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.pos; + } else { + break loop + } + } + } +}; -const CENSOR = '[Redacted]' -const strict = false // TODO should this be configurable? +// Called at the end of every token. Sets `end`, `val`, and +// maintains `context` and `exprAllowed`, and skips the space after +// the token, so that the next one's `start` will point at the +// right position. -function redaction (opts, serialize) { - const { paths, censor } = handle(opts) +pp.finishToken = function(type, val) { + this.end = this.pos; + if (this.options.locations) { this.endLoc = this.curPosition(); } + var prevType = this.type; + this.type = type; + this.value = val; - const shape = paths.reduce((o, str) => { - rx.lastIndex = 0 - const first = rx.exec(str) - const next = rx.exec(str) + this.updateContext(prevType); +}; - // ns is the top-level path segment, brackets + quoting removed. - let ns = first[1] !== undefined - ? first[1].replace(/^(?:"|'|`)(.*)(?:"|'|`)$/, '$1') - : first[0] +// ### Token reading - if (ns === '*') { - ns = wildcardFirstSym - } +// This is the function that is called to fetch the next token. It +// is somewhat obscure, because it works in character codes rather +// than characters, and because operator parsing has been inlined +// into it. +// +// All in the name of speed. +// +pp.readToken_dot = function() { + var next = this.input.charCodeAt(this.pos + 1); + if (next >= 48 && next <= 57) { return this.readNumber(true) } + var next2 = this.input.charCodeAt(this.pos + 2); + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' + this.pos += 3; + return this.finishToken(types$1.ellipsis) + } else { + ++this.pos; + return this.finishToken(types$1.dot) + } +}; - // top level key: - if (next === null) { - o[ns] = null - return o - } +pp.readToken_slash = function() { // '/' + var next = this.input.charCodeAt(this.pos + 1); + if (this.exprAllowed) { ++this.pos; return this.readRegexp() } + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(types$1.slash, 1) +}; - // path with at least two segments: - // if ns is already redacted at the top level, ignore lower level redactions - if (o[ns] === null) { - return o - } +pp.readToken_mult_modulo_exp = function(code) { // '%*' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + var tokentype = code === 42 ? types$1.star : types$1.modulo; - const { index } = next - const nextPath = `${str.substr(index, str.length - 1)}` + // exponentiation operator ** and **= + if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { + ++size; + tokentype = types$1.starstar; + next = this.input.charCodeAt(this.pos + 2); + } - o[ns] = o[ns] || [] + if (next === 61) { return this.finishOp(types$1.assign, size + 1) } + return this.finishOp(tokentype, size) +}; - // shape is a mix of paths beginning with literal values and wildcard - // paths [ "a.b.c", "*.b.z" ] should reduce to a shape of - // { "a": [ "b.c", "b.z" ], *: [ "b.z" ] } - // note: "b.z" is in both "a" and * arrays because "a" matches the wildcard. - // (* entry has wildcardFirstSym as key) - if (ns !== wildcardFirstSym && o[ns].length === 0) { - // first time ns's get all '*' redactions so far - o[ns].push(...(o[wildcardFirstSym] || [])) +pp.readToken_pipe_amp = function(code) { // '|&' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (this.options.ecmaVersion >= 12) { + var next2 = this.input.charCodeAt(this.pos + 2); + if (next2 === 61) { return this.finishOp(types$1.assign, 3) } } + return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2) + } + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1) +}; - if (ns === wildcardFirstSym) { - // new * path gets added to all previously registered literal ns's. - Object.keys(o).forEach(function (k) { - if (o[k]) { - o[k].push(nextPath) - } - }) +pp.readToken_caret = function() { // '^' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(types$1.bitwiseXOR, 1) +}; + +pp.readToken_plus_min = function(code) { // '+-' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && + (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken() } + return this.finishOp(types$1.incDec, 2) + } + if (next === 61) { return this.finishOp(types$1.assign, 2) } + return this.finishOp(types$1.plusMin, 1) +}; - o[ns].push(nextPath) - return o - }, {}) +pp.readToken_lt_gt = function(code) { // '<>' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) } + return this.finishOp(types$1.bitShift, size) + } + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && + this.input.charCodeAt(this.pos + 3) === 45) { + // `<!--`, an XML-style comment that should be interpreted as a line comment + this.skipLineComment(4); + this.skipSpace(); + return this.nextToken() + } + if (next === 61) { size = 2; } + return this.finishOp(types$1.relational, size) +}; - // the redactor assigned to the format symbol key - // provides top level redaction for instances where - // an object is interpolated into the msg string - const result = { - [redactFmtSym]: fastRedact({ paths, censor, serialize, strict }) +pp.readToken_eq_excl = function(code) { // '=!' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) } + if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>' + this.pos += 2; + return this.finishToken(types$1.arrow) } + return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1) +}; - const topCensor = (...args) => { - return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor) +pp.readToken_question = function() { // '?' + var ecmaVersion = this.options.ecmaVersion; + if (ecmaVersion >= 11) { + var next = this.input.charCodeAt(this.pos + 1); + if (next === 46) { + var next2 = this.input.charCodeAt(this.pos + 2); + if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) } + } + if (next === 63) { + if (ecmaVersion >= 12) { + var next2$1 = this.input.charCodeAt(this.pos + 2); + if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) } + } + return this.finishOp(types$1.coalesce, 2) + } } + return this.finishOp(types$1.question, 1) +}; - return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => { - // top level key: - if (shape[k] === null) { - o[k] = (value) => topCensor(value, [k]) - } else { - const wrappedCensor = typeof censor === 'function' - ? (value, path) => { - return censor(value, [k, ...path]) - } - : censor - o[k] = fastRedact({ - paths: shape[k], - censor: wrappedCensor, - serialize, - strict - }) +pp.readToken_numberSign = function() { // '#' + var ecmaVersion = this.options.ecmaVersion; + var code = 35; // '#' + if (ecmaVersion >= 13) { + ++this.pos; + code = this.fullCharCodeAtPos(); + if (isIdentifierStart(code, true) || code === 92 /* '\' */) { + return this.finishToken(types$1.privateId, this.readWord1()) } - return o - }, result) -} - -function handle (opts) { - if (Array.isArray(opts)) { - opts = { paths: opts, censor: CENSOR } - validate(opts) - return opts } - let { paths, censor = CENSOR, remove } = opts - if (Array.isArray(paths) === false) { throw Error('pino – redact must contain an array of strings') } - if (remove === true) censor = undefined - validate({ paths, censor }) - - return { paths, censor } -} -module.exports = redaction - - -/***/ }), - -/***/ 75683: -/***/ ((module) => { + this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); +}; -"use strict"; +pp.getTokenFromCode = function(code) { + switch (code) { + // The interpretation of a dot depends on whether it is followed + // by a digit or another two dots. + case 46: // '.' + return this.readToken_dot() + // Punctuation tokens. + case 40: ++this.pos; return this.finishToken(types$1.parenL) + case 41: ++this.pos; return this.finishToken(types$1.parenR) + case 59: ++this.pos; return this.finishToken(types$1.semi) + case 44: ++this.pos; return this.finishToken(types$1.comma) + case 91: ++this.pos; return this.finishToken(types$1.bracketL) + case 93: ++this.pos; return this.finishToken(types$1.bracketR) + case 123: ++this.pos; return this.finishToken(types$1.braceL) + case 125: ++this.pos; return this.finishToken(types$1.braceR) + case 58: ++this.pos; return this.finishToken(types$1.colon) -const setLevelSym = Symbol('pino.setLevel') -const getLevelSym = Symbol('pino.getLevel') -const levelValSym = Symbol('pino.levelVal') -const useLevelLabelsSym = Symbol('pino.useLevelLabels') -const useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels') -const mixinSym = Symbol('pino.mixin') - -const lsCacheSym = Symbol('pino.lsCache') -const chindingsSym = Symbol('pino.chindings') -const parsedChindingsSym = Symbol('pino.parsedChindings') - -const asJsonSym = Symbol('pino.asJson') -const writeSym = Symbol('pino.write') -const redactFmtSym = Symbol('pino.redactFmt') - -const timeSym = Symbol('pino.time') -const timeSliceIndexSym = Symbol('pino.timeSliceIndex') -const streamSym = Symbol('pino.stream') -const stringifySym = Symbol('pino.stringify') -const stringifySafeSym = Symbol('pino.stringifySafe') -const stringifiersSym = Symbol('pino.stringifiers') -const endSym = Symbol('pino.end') -const formatOptsSym = Symbol('pino.formatOpts') -const messageKeySym = Symbol('pino.messageKey') -const nestedKeySym = Symbol('pino.nestedKey') -const nestedKeyStrSym = Symbol('pino.nestedKeyStr') -const mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy') - -const wildcardFirstSym = Symbol('pino.wildcardFirst') - -// public symbols, no need to use the same pino -// version for these -const serializersSym = Symbol.for('pino.serializers') -const formattersSym = Symbol.for('pino.formatters') -const hooksSym = Symbol.for('pino.hooks') -const needsMetadataGsym = Symbol.for('pino.metadata') + case 96: // '`' + if (this.options.ecmaVersion < 6) { break } + ++this.pos; + return this.finishToken(types$1.backQuote) -module.exports = { - setLevelSym, - getLevelSym, - levelValSym, - useLevelLabelsSym, - mixinSym, - lsCacheSym, - chindingsSym, - parsedChindingsSym, - asJsonSym, - writeSym, - serializersSym, - redactFmtSym, - timeSym, - timeSliceIndexSym, - streamSym, - stringifySym, - stringifySafeSym, - stringifiersSym, - endSym, - formatOptsSym, - messageKeySym, - nestedKeySym, - wildcardFirstSym, - needsMetadataGsym, - useOnlyCustomLevelsSym, - formattersSym, - hooksSym, - nestedKeyStrSym, - mixinMergeStrategySym -} + case 48: // '0' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number + if (this.options.ecmaVersion >= 6) { + if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number + if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number + } + // Anything else beginning with a digit is an integer, octal + // number, or float. + case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 + return this.readNumber(false) -/***/ }), + // Quotes produce strings. + case 34: case 39: // '"', "'" + return this.readString(code) -/***/ 81554: -/***/ ((module) => { + // Operators are parsed inline in tiny state machines. '=' (61) is + // often referred to. `finishOp` simply skips the amount of + // characters it is given as second argument, and returns a token + // of the type given by its first argument. + case 47: // '/' + return this.readToken_slash() -"use strict"; + case 37: case 42: // '%*' + return this.readToken_mult_modulo_exp(code) + case 124: case 38: // '|&' + return this.readToken_pipe_amp(code) -const nullTime = () => '' + case 94: // '^' + return this.readToken_caret() -const epochTime = () => `,"time":${Date.now()}` + case 43: case 45: // '+-' + return this.readToken_plus_min(code) -const unixTime = () => `,"time":${Math.round(Date.now() / 1000.0)}` + case 60: case 62: // '<>' + return this.readToken_lt_gt(code) -const isoTime = () => `,"time":"${new Date(Date.now()).toISOString()}"` // using Date.now() for testability + case 61: case 33: // '=!' + return this.readToken_eq_excl(code) -module.exports = { nullTime, epochTime, unixTime, isoTime } + case 63: // '?' + return this.readToken_question() + case 126: // '~' + return this.finishOp(types$1.prefix, 1) -/***/ }), + case 35: // '#' + return this.readToken_numberSign() + } -/***/ 80566: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); +}; -"use strict"; +pp.finishOp = function(type, size) { + var str = this.input.slice(this.pos, this.pos + size); + this.pos += size; + return this.finishToken(type, str) +}; +pp.readRegexp = function() { + var escaped, inClass, start = this.pos; + for (;;) { + if (this.pos >= this.input.length) { this.raise(start, "Unterminated regular expression"); } + var ch = this.input.charAt(this.pos); + if (lineBreak.test(ch)) { this.raise(start, "Unterminated regular expression"); } + if (!escaped) { + if (ch === "[") { inClass = true; } + else if (ch === "]" && inClass) { inClass = false; } + else if (ch === "/" && !inClass) { break } + escaped = ch === "\\"; + } else { escaped = false; } + ++this.pos; + } + var pattern = this.input.slice(start, this.pos); + ++this.pos; + var flagsStart = this.pos; + var flags = this.readWord1(); + if (this.containsEsc) { this.unexpected(flagsStart); } + + // Validate pattern + var state = this.regexpState || (this.regexpState = new RegExpValidationState(this)); + state.reset(start, pattern, flags); + this.validateRegExpFlags(state); + this.validateRegExpPattern(state); + + // Create Literal#value property value. + var value = null; + try { + value = new RegExp(pattern, flags); + } catch (e) { + // ESTree requires null if it failed to instantiate RegExp object. + // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral + } -/* eslint no-prototype-builtins: 0 */ + return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value}) +}; -const format = __nccwpck_require__(34397) -const { mapHttpRequest, mapHttpResponse } = __nccwpck_require__(72274) -const SonicBoom = __nccwpck_require__(93565) -const warning = __nccwpck_require__(39640) -const { - lsCacheSym, - chindingsSym, - parsedChindingsSym, - writeSym, - serializersSym, - formatOptsSym, - endSym, - stringifiersSym, - stringifySym, - stringifySafeSym, - wildcardFirstSym, - needsMetadataGsym, - redactFmtSym, - streamSym, - nestedKeySym, - formattersSym, - messageKeySym, - nestedKeyStrSym -} = __nccwpck_require__(75683) -const { isMainThread } = __nccwpck_require__(71267) -const transport = __nccwpck_require__(77548) +// Read an integer in the given radix. Return null if zero digits +// were read, the integer value otherwise. When `len` is given, this +// will return `null` unless the integer has exactly `len` digits. -function noop () {} +pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) { + // `len` is used for character escape sequences. In that case, disallow separators. + var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined; -function genLog (level, hook) { - if (!hook) return LOG + // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b) + // and isn't fraction part nor exponent part. In that case, if the first digit + // is zero then disallow separators. + var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48; - return function hookWrappedLog (...args) { - hook.call(this, args, LOG, level) - } + var start = this.pos, total = 0, lastCode = 0; + for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) { + var code = this.input.charCodeAt(this.pos), val = (void 0); - function LOG (o, ...n) { - if (typeof o === 'object') { - let msg = o - if (o !== null) { - if (o.method && o.headers && o.socket) { - o = mapHttpRequest(o) - } else if (typeof o.setHeader === 'function') { - o = mapHttpResponse(o) - } - } - let formatParams - if (msg === null && n.length === 0) { - formatParams = [null] - } else { - msg = n.shift() - formatParams = n - } - this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level) - } else { - this[writeSym](null, format(o, n, this[formatOptsSym]), level) + if (allowSeparators && code === 95) { + if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"); } + if (lastCode === 95) { this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"); } + if (i === 0) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"); } + lastCode = code; + continue } - } -} -// magically escape strings for json -// relying on their charCodeAt -// everything below 32 needs JSON.stringify() -// 34 and 92 happens all the time, so we -// have a fast case for them -function asString (str) { - let result = '' - let last = 0 - let found = false - let point = 255 - const l = str.length - if (l > 100) { - return JSON.stringify(str) - } - for (var i = 0; i < l && point >= 32; i++) { - point = str.charCodeAt(i) - if (point === 34 || point === 92) { - result += str.slice(last, i) + '\\' - last = i - found = true - } - } - if (!found) { - result = str - } else { - result += str.slice(last) - } - return point < 32 ? JSON.stringify(str) : '"' + result + '"' -} - -function asJson (obj, msg, num, time) { - const stringify = this[stringifySym] - const stringifySafe = this[stringifySafeSym] - const stringifiers = this[stringifiersSym] - const end = this[endSym] - const chindings = this[chindingsSym] - const serializers = this[serializersSym] - const formatters = this[formattersSym] - const messageKey = this[messageKeySym] - let data = this[lsCacheSym][num] + time - - // we need the child bindings added to the output first so instance logged - // objects can take precedence when JSON.parse-ing the resulting log line - data = data + chindings - - let value - const notHasOwnProperty = obj.hasOwnProperty === undefined - if (formatters.log) { - obj = formatters.log(obj) - } - const wildcardStringifier = stringifiers[wildcardFirstSym] - let propStr = '' - for (const key in obj) { - value = obj[key] - if ((notHasOwnProperty || obj.hasOwnProperty(key)) && value !== undefined) { - value = serializers[key] ? serializers[key](value) : value - - const stringifier = stringifiers[key] || wildcardStringifier - - switch (typeof value) { - case 'undefined': - case 'function': - continue - case 'number': - /* eslint no-fallthrough: "off" */ - if (Number.isFinite(value) === false) { - value = null - } - // this case explicitly falls through to the next one - case 'boolean': - if (stringifier) value = stringifier(value) - break - case 'string': - value = (stringifier || asString)(value) - break - default: - value = (stringifier || stringify)(value, stringifySafe) - } - if (value === undefined) continue - propStr += ',"' + key + '":' + value - } + if (code >= 97) { val = code - 97 + 10; } // a + else if (code >= 65) { val = code - 65 + 10; } // A + else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9 + else { val = Infinity; } + if (val >= radix) { break } + lastCode = code; + total = total * radix + val; } - let msgStr = '' - if (msg !== undefined) { - value = serializers[messageKey] ? serializers[messageKey](msg) : msg - const stringifier = stringifiers[messageKey] || wildcardStringifier + if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"); } + if (this.pos === start || len != null && this.pos - start !== len) { return null } - switch (typeof value) { - case 'function': - break - case 'number': - /* eslint no-fallthrough: "off" */ - if (Number.isFinite(value) === false) { - value = null - } - // this case explicitly falls through to the next one - case 'boolean': - if (stringifier) value = stringifier(value) - msgStr = ',"' + messageKey + '":' + value - break - case 'string': - value = (stringifier || asString)(value) - msgStr = ',"' + messageKey + '":' + value - break - default: - value = (stringifier || stringify)(value, stringifySafe) - msgStr = ',"' + messageKey + '":' + value - } - } + return total +}; - if (this[nestedKeySym] && propStr) { - // place all the obj properties under the specified key - // the nested key is already formatted from the constructor - return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end - } else { - return data + propStr + msgStr + end +function stringToNumber(str, isLegacyOctalNumericLiteral) { + if (isLegacyOctalNumericLiteral) { + return parseInt(str, 8) } -} - -function asChindings (instance, bindings) { - let value - let data = instance[chindingsSym] - const stringify = instance[stringifySym] - const stringifySafe = instance[stringifySafeSym] - const stringifiers = instance[stringifiersSym] - const wildcardStringifier = stringifiers[wildcardFirstSym] - const serializers = instance[serializersSym] - const formatter = instance[formattersSym].bindings - bindings = formatter(bindings) - for (const key in bindings) { - value = bindings[key] - const valid = key !== 'level' && - key !== 'serializers' && - key !== 'formatters' && - key !== 'customLevels' && - bindings.hasOwnProperty(key) && - value !== undefined - if (valid === true) { - value = serializers[key] ? serializers[key](value) : value - value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe) - if (value === undefined) continue - data += ',"' + key + '":' + value - } - } - return data + // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value. + return parseFloat(str.replace(/_/g, "")) } -function getPrettyStream (opts, prettifier, dest, instance) { - if (prettifier && typeof prettifier === 'function') { - prettifier = prettifier.bind(instance) - return prettifierMetaWrapper(prettifier(opts), dest, opts) - } - try { - const prettyFactory = (__nccwpck_require__(87952).prettyFactory) - prettyFactory.asMetaWrapper = prettifierMetaWrapper - return prettifierMetaWrapper(prettyFactory(opts), dest, opts) - } catch (e) { - if (e.message.startsWith("Cannot find module 'pino-pretty'")) { - throw Error('Missing `pino-pretty` module: `pino-pretty` must be installed separately') - }; - throw e +function stringToBigInt(str) { + if (typeof BigInt !== "function") { + return null } + + // `BigInt(value)` throws syntax error if the string contains numeric separators. + return BigInt(str.replace(/_/g, "")) } -function prettifierMetaWrapper (pretty, dest, opts) { - opts = Object.assign({ suppressFlushSyncWarning: false }, opts) - let warned = false - return { - [needsMetadataGsym]: true, - lastLevel: 0, - lastMsg: null, - lastObj: null, - lastLogger: null, - flushSync () { - if (opts.suppressFlushSyncWarning || warned) { - return - } - warned = true - setMetadataProps(dest, this) - dest.write(pretty(Object.assign({ - level: 40, // warn - msg: 'pino.final with prettyPrint does not support flushing', - time: Date.now() - }, this.chindings()))) - }, - chindings () { - const lastLogger = this.lastLogger - let chindings = null +pp.readRadixNumber = function(radix) { + var start = this.pos; + this.pos += 2; // 0x + var val = this.readInt(radix); + if (val == null) { this.raise(this.start + 2, "Expected number in radix " + radix); } + if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) { + val = stringToBigInt(this.input.slice(start, this.pos)); + ++this.pos; + } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } + return this.finishToken(types$1.num, val) +}; - // protection against flushSync being called before logging - // anything - if (!lastLogger) { - return null - } +// Read an integer, octal integer, or floating-point number. + +pp.readNumber = function(startsWithDot) { + var start = this.pos; + if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, "Invalid number"); } + var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (octal && this.strict) { this.raise(start, "Invalid number"); } + var next = this.input.charCodeAt(this.pos); + if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) { + var val$1 = stringToBigInt(this.input.slice(start, this.pos)); + ++this.pos; + if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } + return this.finishToken(types$1.num, val$1) + } + if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; } + if (next === 46 && !octal) { // '.' + ++this.pos; + this.readInt(10); + next = this.input.charCodeAt(this.pos); + } + if ((next === 69 || next === 101) && !octal) { // 'eE' + next = this.input.charCodeAt(++this.pos); + if (next === 43 || next === 45) { ++this.pos; } // '+-' + if (this.readInt(10) === null) { this.raise(start, "Invalid number"); } + } + if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } + + var val = stringToNumber(this.input.slice(start, this.pos), octal); + return this.finishToken(types$1.num, val) +}; - if (lastLogger.hasOwnProperty(parsedChindingsSym)) { - chindings = lastLogger[parsedChindingsSym] - } else { - chindings = JSON.parse('{' + lastLogger[chindingsSym].substr(1) + '}') - lastLogger[parsedChindingsSym] = chindings - } +// Read a string value, interpreting backslash-escapes. - return chindings - }, - write (chunk) { - const lastLogger = this.lastLogger - const chindings = this.chindings() +pp.readCodePoint = function() { + var ch = this.input.charCodeAt(this.pos), code; - let time = this.lastTime + if (ch === 123) { // '{' + if (this.options.ecmaVersion < 6) { this.unexpected(); } + var codePos = ++this.pos; + code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos); + ++this.pos; + if (code > 0x10FFFF) { this.invalidStringToken(codePos, "Code point out of bounds"); } + } else { + code = this.readHexChar(4); + } + return code +}; - /* istanbul ignore next */ - if (typeof time === 'number') { - // do nothing! - } else if (time.match(/^\d+/)) { - time = parseInt(time) - } else { - time = time.slice(1, -1) - } +pp.readString = function(quote) { + var out = "", chunkStart = ++this.pos; + for (;;) { + if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated string constant"); } + var ch = this.input.charCodeAt(this.pos); + if (ch === quote) { break } + if (ch === 92) { // '\' + out += this.input.slice(chunkStart, this.pos); + out += this.readEscapedChar(false); + chunkStart = this.pos; + } else if (ch === 0x2028 || ch === 0x2029) { + if (this.options.ecmaVersion < 10) { this.raise(this.start, "Unterminated string constant"); } + ++this.pos; + if (this.options.locations) { + this.curLine++; + this.lineStart = this.pos; + } + } else { + if (isNewLine(ch)) { this.raise(this.start, "Unterminated string constant"); } + ++this.pos; + } + } + out += this.input.slice(chunkStart, this.pos++); + return this.finishToken(types$1.string, out) +}; - const lastObj = this.lastObj - const lastMsg = this.lastMsg - const errorProps = null +// Reads template string tokens. - const formatters = lastLogger[formattersSym] - const formattedObj = formatters.log ? formatters.log(lastObj) : lastObj +var INVALID_TEMPLATE_ESCAPE_ERROR = {}; - const messageKey = lastLogger[messageKeySym] - if (lastMsg && formattedObj && !formattedObj.hasOwnProperty(messageKey)) { - formattedObj[messageKey] = lastMsg - } +pp.tryReadTemplateToken = function() { + this.inTemplateElement = true; + try { + this.readTmplToken(); + } catch (err) { + if (err === INVALID_TEMPLATE_ESCAPE_ERROR) { + this.readInvalidTemplateToken(); + } else { + throw err + } + } - const obj = Object.assign({ - level: this.lastLevel, - time - }, formattedObj, errorProps) + this.inTemplateElement = false; +}; - const serializers = lastLogger[serializersSym] - const keys = Object.keys(serializers) +pp.invalidStringToken = function(position, message) { + if (this.inTemplateElement && this.options.ecmaVersion >= 9) { + throw INVALID_TEMPLATE_ESCAPE_ERROR + } else { + this.raise(position, message); + } +}; - for (var i = 0; i < keys.length; i++) { - const key = keys[i] - if (obj[key] !== undefined) { - obj[key] = serializers[key](obj[key]) +pp.readTmplToken = function() { + var out = "", chunkStart = this.pos; + for (;;) { + if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated template"); } + var ch = this.input.charCodeAt(this.pos); + if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${' + if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) { + if (ch === 36) { + this.pos += 2; + return this.finishToken(types$1.dollarBraceL) + } else { + ++this.pos; + return this.finishToken(types$1.backQuote) } } - - for (const key in chindings) { - if (!obj.hasOwnProperty(key)) { - obj[key] = chindings[key] - } + out += this.input.slice(chunkStart, this.pos); + return this.finishToken(types$1.template, out) + } + if (ch === 92) { // '\' + out += this.input.slice(chunkStart, this.pos); + out += this.readEscapedChar(true); + chunkStart = this.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.pos); + ++this.pos; + switch (ch) { + case 13: + if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } + case 10: + out += "\n"; + break + default: + out += String.fromCharCode(ch); + break } - - const stringifiers = lastLogger[stringifiersSym] - const redact = stringifiers[redactFmtSym] - - const formatted = pretty(typeof redact === 'function' ? redact(obj) : obj) - if (formatted === undefined) return - - setMetadataProps(dest, this) - dest.write(formatted) + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + chunkStart = this.pos; + } else { + ++this.pos; } } -} - -function hasBeenTampered (stream) { - return stream.write !== stream.constructor.prototype.write -} +}; -function buildSafeSonicBoom (opts) { - const stream = new SonicBoom(opts) - stream.on('error', filterBrokenPipe) - // if we are sync: false, we must flush on exit - if (!opts.sync && isMainThread) { - setupOnExit(stream) - } - return stream +// Reads a template token to search for the end, without validating any escape sequences +pp.readInvalidTemplateToken = function() { + for (; this.pos < this.input.length; this.pos++) { + switch (this.input[this.pos]) { + case "\\": + ++this.pos; + break - function filterBrokenPipe (err) { - // TODO verify on Windows - if (err.code === 'EPIPE') { - // If we get EPIPE, we should stop logging here - // however we have no control to the consumer of - // SonicBoom, so we just overwrite the write method - stream.write = noop - stream.end = noop - stream.flushSync = noop - stream.destroy = noop - return + case "$": + if (this.input[this.pos + 1] !== "{") { break } + // fall through + case "`": + return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos)) + + case "\r": + if (this.input[this.pos + 1] === "\n") { ++this.pos; } + // fall through + case "\n": case "\u2028": case "\u2029": + ++this.curLine; + this.lineStart = this.pos + 1; + break } - stream.removeListener('error', filterBrokenPipe) - stream.emit('error', err) } -} - -function setupOnExit (stream) { - /* istanbul ignore next */ - if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) { - // This is leak free, it does not leave event handlers - const onExit = __nccwpck_require__(41045) + this.raise(this.start, "Unterminated template"); +}; - onExit.register(stream, autoEnd) +// Used to read escaped characters + +pp.readEscapedChar = function(inTemplate) { + var ch = this.input.charCodeAt(++this.pos); + ++this.pos; + switch (ch) { + case 110: return "\n" // 'n' -> '\n' + case 114: return "\r" // 'r' -> '\r' + case 120: return String.fromCharCode(this.readHexChar(2)) // 'x' + case 117: return codePointToString(this.readCodePoint()) // 'u' + case 116: return "\t" // 't' -> '\t' + case 98: return "\b" // 'b' -> '\b' + case 118: return "\u000b" // 'v' -> '\u000b' + case 102: return "\f" // 'f' -> '\f' + case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\r\n' + case 10: // ' \n' + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } + return "" + case 56: + case 57: + if (this.strict) { + this.invalidStringToken( + this.pos - 1, + "Invalid escape sequence" + ); + } + if (inTemplate) { + var codePos = this.pos - 1; - stream.on('close', function () { - onExit.unregister(stream) - }) + this.invalidStringToken( + codePos, + "Invalid escape sequence in template string" + ); + } + default: + if (ch >= 48 && ch <= 55) { + var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]; + var octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + this.pos += octalStr.length - 1; + ch = this.input.charCodeAt(this.pos); + if ((octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate)) { + this.invalidStringToken( + this.pos - 1 - octalStr.length, + inTemplate + ? "Octal literal in template string" + : "Octal literal in strict mode" + ); + } + return String.fromCharCode(octal) + } + if (isNewLine(ch)) { + // Unicode new line characters after \ get removed from output in both + // template literals and strings + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } + return "" + } + return String.fromCharCode(ch) } -} +}; -function autoEnd (stream, eventName) { - // This check is needed only on some platforms - /* istanbul ignore next */ - if (stream.destroyed) { - return - } +// Used to read character escape sequences ('\x', '\u', '\U'). - if (eventName === 'beforeExit') { - // We still have an event loop, let's use it - stream.flush() - stream.on('drain', function () { - stream.end() - }) - } else { - // We do not have an event loop, so flush synchronously - stream.flushSync() - } -} +pp.readHexChar = function(len) { + var codePos = this.pos; + var n = this.readInt(16, len); + if (n === null) { this.invalidStringToken(codePos, "Bad character escape sequence"); } + return n +}; -function createArgsNormalizer (defaultOptions) { - return function normalizeArgs (instance, caller, opts = {}, stream) { - // support stream as a string - if (typeof opts === 'string') { - stream = buildSafeSonicBoom({ dest: opts, sync: true }) - opts = {} - } else if (typeof stream === 'string') { - if (opts && opts.transport) { - throw Error('only one of option.transport or stream can be specified') - } - stream = buildSafeSonicBoom({ dest: stream, sync: true }) - } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) { - stream = opts - opts = {} - } else if (opts.transport) { - if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) { - throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)') - } - if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') { - throw Error('option.transport.targets do not allow custom level formatters') - } - stream = transport({ caller, ...opts.transport }) - } - opts = Object.assign({}, defaultOptions, opts) - opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers) - opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters) - - if ('onTerminated' in opts) { - throw Error('The onTerminated option has been removed, use pino.final instead') - } - if ('changeLevelName' in opts) { - process.emitWarning( - 'The changeLevelName option is deprecated and will be removed in v7. Use levelKey instead.', - { code: 'changeLevelName_deprecation' } - ) - opts.levelKey = opts.changeLevelName - delete opts.changeLevelName - } - const { enabled, prettyPrint, prettifier, messageKey } = opts - if (enabled === false) opts.level = 'silent' - stream = stream || process.stdout - if (stream === process.stdout && stream.fd >= 0 && !hasBeenTampered(stream)) { - stream = buildSafeSonicBoom({ fd: stream.fd, sync: true }) - } - if (prettyPrint) { - warning.emit('PINODEP008') - const prettyOpts = Object.assign({ messageKey }, prettyPrint) - stream = getPrettyStream(prettyOpts, prettifier, stream, instance) +// Read an identifier, and return it as a string. Sets `this.containsEsc` +// to whether the word contained a '\u' escape. +// +// Incrementally adds only escaped chars, adding other chunks as-is +// as a micro-optimization. + +pp.readWord1 = function() { + this.containsEsc = false; + var word = "", first = true, chunkStart = this.pos; + var astral = this.options.ecmaVersion >= 6; + while (this.pos < this.input.length) { + var ch = this.fullCharCodeAtPos(); + if (isIdentifierChar(ch, astral)) { + this.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { // "\" + this.containsEsc = true; + word += this.input.slice(chunkStart, this.pos); + var escStart = this.pos; + if (this.input.charCodeAt(++this.pos) !== 117) // "u" + { this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"); } + ++this.pos; + var esc = this.readCodePoint(); + if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) + { this.invalidStringToken(escStart, "Invalid Unicode escape"); } + word += codePointToString(esc); + chunkStart = this.pos; + } else { + break } - return { opts, stream } + first = false; } -} + return word + this.input.slice(chunkStart, this.pos) +}; -function final (logger, handler) { - const major = Number(process.versions.node.split('.')[0]) - if (major >= 14) warning.emit('PINODEP009') +// Read an identifier or keyword token. Will check for reserved +// words when necessary. - if (typeof logger === 'undefined' || typeof logger.child !== 'function') { - throw Error('expected a pino logger instance') - } - const hasHandler = (typeof handler !== 'undefined') - if (hasHandler && typeof handler !== 'function') { - throw Error('if supplied, the handler parameter should be a function') - } - const stream = logger[streamSym] - if (typeof stream.flushSync !== 'function') { - throw Error('final requires a stream that has a flushSync method, such as pino.destination') +pp.readWord = function() { + var word = this.readWord1(); + var type = types$1.name; + if (this.keywords.test(word)) { + type = keywords[word]; } + return this.finishToken(type, word) +}; - const finalLogger = new Proxy(logger, { - get: (logger, key) => { - if (key in logger.levels.values) { - return (...args) => { - logger[key](...args) - stream.flushSync() - } - } - return logger[key] - } - }) +// Acorn is a tiny, fast JavaScript parser written in JavaScript. +// +// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and +// various contributors and released under an MIT license. +// +// Git repositories for Acorn are available at +// +// http://marijnhaverbeke.nl/git/acorn +// https://github.com/acornjs/acorn.git +// +// Please use the [github bug tracker][ghbt] to report issues. +// +// [ghbt]: https://github.com/acornjs/acorn/issues +// +// [walk]: util/walk.js + + +var version = "8.14.1"; + +Parser.acorn = { + Parser: Parser, + version: version, + defaultOptions: defaultOptions, + Position: Position, + SourceLocation: SourceLocation, + getLineInfo: getLineInfo, + Node: Node, + TokenType: TokenType, + tokTypes: types$1, + keywordTypes: keywords, + TokContext: TokContext, + tokContexts: types, + isIdentifierChar: isIdentifierChar, + isIdentifierStart: isIdentifierStart, + Token: Token, + isNewLine: isNewLine, + lineBreak: lineBreak, + lineBreakG: lineBreakG, + nonASCIIwhitespace: nonASCIIwhitespace +}; - if (!hasHandler) { - try { - stream.flushSync() - } catch { - // it's too late to wait for the stream to be ready - // because this is a final tick scenario. - // in practice there shouldn't be a situation where it isn't - // however, swallow the error just in case (and for easier testing) - } - return finalLogger - } +// The main exported interface (under `self.acorn` when in the +// browser) is a `parse` function that takes a code string and returns +// an abstract syntax tree as specified by the [ESTree spec][estree]. +// +// [estree]: https://github.com/estree/estree - return (err = null, ...args) => { - try { - stream.flushSync() - } catch (e) { - // it's too late to wait for the stream to be ready - // because this is a final tick scenario. - // in practice there shouldn't be a situation where it isn't - // however, swallow the error just in case (and for easier testing) - } - return handler(err, finalLogger, ...args) - } +function acorn_parse(input, options) { + return Parser.parse(input, options) } -function stringify (obj, stringifySafeFn) { - try { - return JSON.stringify(obj) - } catch (_) { - try { - const stringify = stringifySafeFn || this[stringifySafeSym] - return stringify(obj) - } catch (_) { - return '"[unable to serialize, circular reference is too complex to analyze]"' - } - } -} +// This function tries to parse a single expression at a given +// offset in a string. Useful for parsing mixed-language formats +// that embed JavaScript expressions. -function buildFormatters (level, bindings, log) { - return { - level, - bindings, - log - } +function parseExpressionAt(input, pos, options) { + return Parser.parseExpressionAt(input, pos, options) } -function setMetadataProps (dest, that) { - if (dest[needsMetadataGsym] === true) { - dest.lastLevel = that.lastLevel - dest.lastMsg = that.lastMsg - dest.lastObj = that.lastObj - dest.lastTime = that.lastTime - dest.lastLogger = that.lastLogger - } +// Acorn is organized as a tokenizer and a recursive-descent parser. +// The `tokenizer` export provides an interface to the tokenizer. + +function tokenizer(input, options) { + return Parser.tokenizer(input, options) } + + +// EXTERNAL MODULE: ./node_modules/acorn-jsx/index.js +var acorn_jsx = __nccwpck_require__(3637); +;// CONCATENATED MODULE: ./node_modules/estree-util-visit/lib/color.node.js /** - * Convert a string integer file descriptor to a proper native integer - * file descriptor. - * - * @param {string} destination The file descriptor string to attempt to convert. - * - * @returns {Number} + * @param {string} d + * @returns {string} */ -function normalizeDestFileDescriptor (destination) { - const fd = Number(destination) - if (typeof destination === 'string' && Number.isFinite(fd)) { - return fd - } - return destination -} - -module.exports = { - noop, - buildSafeSonicBoom, - getPrettyStream, - asChindings, - asJson, - genLog, - createArgsNormalizer, - final, - stringify, - buildFormatters, - normalizeDestFileDescriptor +function color_node_color(d) { + return '\u001B[33m' + d + '\u001B[39m' } +;// CONCATENATED MODULE: ./node_modules/estree-util-visit/lib/index.js +/** + * @typedef {import('estree-jsx').Node} Node + */ -/***/ }), +/** + * @typedef {CONTINUE | EXIT | SKIP} Action + * Union of the action types. + * + * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple + * List with one or two values, the first an action, the second an index. + * + * @typedef {number} Index + * Move to the sibling at `index` next (after node itself is completely + * traversed), when moving in an array. + * + * Useful if mutating the tree, such as removing the node the visitor is + * currently on, or any of its previous siblings. + * Results less than 0 or greater than or equal to `children.length` stop + * traversing the parent. + */ -/***/ 77548: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @callback Visitor + * Handle a node. + * + * Visitors are free to transform `node`. + * They can also transform the parent of node (the last of `ancestors`). + * + * Replacing `node` itself, if `SKIP` is not returned, still causes its + * descendants to be walked (which is a bug). + * + * When adding or removing previous siblings of `node`, the `Visitor` should + * return a new `Index` to specify the sibling to traverse after `node` is + * traversed. + * Adding or removing next siblings of `node` is handled as expected without + * needing to return a new `Index`. + * @param {Node} node + * Found node. + * @param {string | undefined} key + * Field at which `node` lives in its parent (or where a list of nodes lives). + * @param {number | undefined} index + * Index where `node` lives if `parent[key]` is an array. + * @param {Array<Node>} ancestors + * Ancestors of `node`. + * @returns {Action | ActionTuple | Index | null | undefined | void} + * What to do next. + * + * An `Index` is treated as a tuple of `[CONTINUE, Index]`. + * An `Action` is treated as a tuple of `[Action]`. + * + * Passing a tuple back only makes sense if the `Action` is `SKIP`. + * When the `Action` is `EXIT`, that action can be returned. + * When the `Action` is `CONTINUE`, `Index` can be returned. + */ -"use strict"; +/** + * @typedef Visitors + * Handle nodes when entering (preorder) and leaving (postorder). + * @property {Visitor | null | undefined} [enter] + * Handle nodes when entering (preorder) (optional). + * @property {Visitor | null | undefined} [leave] + * Handle nodes when leaving (postorder) (optional). + */ -const { createRequire } = __nccwpck_require__(98188) -const getCallers = __nccwpck_require__(15749) -const { join, isAbsolute } = __nccwpck_require__(71017) -let onExit +const estree_util_visit_lib_own = {}.hasOwnProperty -if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) { - // This require MUST be top level otherwise the transport would - // not work from within Jest as it hijacks require. - onExit = __nccwpck_require__(41045) -} +/** + * Continue traversing as normal. + */ +const lib_CONTINUE = Symbol('continue') -const ThreadStream = __nccwpck_require__(66931) +/** + * Stop traversing immediately. + */ +const lib_EXIT = Symbol('exit') -function setupOnExit (stream) { - /* istanbul ignore next */ - if (onExit) { - // This is leak free, it does not leave event handlers - onExit.register(stream, autoEnd) +/** + * Do not traverse this node’s children. + */ +const lib_SKIP = Symbol('skip') - stream.on('close', function () { - onExit.unregister(stream) - }) - } else { - const fn = autoEnd.bind(null, stream) - process.once('beforeExit', fn) - process.once('exit', fn) +/** + * Visit nodes, with ancestral information. + * + * This algorithm performs *depth-first* *tree traversal* in *preorder* + * (**NLR**) and/or *postorder* (**LRN**). + * + * Walking the tree is an intensive task. + * Make use of the return values of the visitor(s) when possible. + * Instead of walking a tree multiple times, walk it once, use `unist-util-is` + * to check if a node matches, and then perform different operations. + * + * @param {Node} tree + * Tree to traverse + * @param {Visitor | Visitors | null | undefined} [visitor] + * Handle each node (optional). + * @returns {undefined} + * Nothing. + */ +function lib_visit(tree, visitor) { + /** @type {Visitor | undefined} */ + let enter + /** @type {Visitor | undefined} */ + let leave - stream.on('close', function () { - process.removeListener('beforeExit', fn) - process.removeListener('exit', fn) - }) + if (typeof visitor === 'function') { + enter = visitor + } else if (visitor && typeof visitor === 'object') { + if (visitor.enter) enter = visitor.enter + if (visitor.leave) leave = visitor.leave } -} -function buildStream (filename, workerData, workerOpts) { - const stream = new ThreadStream({ - filename, - workerData, - workerOpts - }) + build(tree, undefined, undefined, [])() - stream.on('ready', onReady) - stream.on('close', function () { - process.removeListener('exit', onExit) - }) + /** + * @param {Node} node + * @param {string | undefined} key + * @param {number | undefined} index + * @param {Array<Node>} parents + */ + function build(node, key, index, parents) { + if (nodelike(node)) { + visit.displayName = 'node (' + color_node_color(node.type) + ')' + } - process.on('exit', onExit) + return visit - function onReady () { - process.removeListener('exit', onExit) - stream.unref() + /** + * @returns {ActionTuple} + */ + function visit() { + /** @type {ActionTuple} */ + const result = enter ? lib_toResult(enter(node, key, index, parents)) : [] + + if (result[0] === lib_EXIT) { + return result + } + + if (result[0] !== lib_SKIP) { + /** @type {keyof node} */ + let cKey + + for (cKey in node) { + if ( + estree_util_visit_lib_own.call(node, cKey) && + node[cKey] && + typeof node[cKey] === 'object' && + // @ts-expect-error: custom esast extension. + cKey !== 'data' && + // @ts-expect-error: custom esast extension. + cKey !== 'position' + ) { + const grandparents = parents.concat(node) + /** @type {unknown} */ + const value = node[cKey] + + if (Array.isArray(value)) { + const nodes = /** @type {Array<unknown>} */ (value) + let cIndex = 0 + + while (cIndex > -1 && cIndex < nodes.length) { + const subvalue = nodes[cIndex] + + if (nodelike(subvalue)) { + const subresult = build( + subvalue, + cKey, + cIndex, + grandparents + )() + if (subresult[0] === lib_EXIT) return subresult + cIndex = + typeof subresult[1] === 'number' ? subresult[1] : cIndex + 1 + } else { + cIndex++ + } + } + } else if (nodelike(value)) { + const subresult = build(value, cKey, undefined, grandparents)() + if (subresult[0] === lib_EXIT) return subresult + } + } + } + } - if (workerOpts.autoEnd !== false) { - setupOnExit(stream) + return leave ? lib_toResult(leave(node, key, index, parents)) : result } } +} + +/** + * Turn a return value into a clean result. + * + * @param {Action | ActionTuple | Index | null | undefined | void} value + * Valid return values from visitors. + * @returns {ActionTuple} + * Clean result. + */ +function lib_toResult(value) { + if (Array.isArray(value)) { + return value + } - function onExit () { - if (stream.closed) { - return - } - stream.flushSync() - stream.end() + if (typeof value === 'number') { + return [lib_CONTINUE, value] } - return stream + return [value] } -function autoEnd (stream) { - stream.ref() - stream.flushSync() - stream.end() - stream.once('close', function () { - stream.unref() - }) +/** + * Check if something looks like a node. + * + * @param {unknown} value + * Anything. + * @returns {value is Node} + * Whether `value` looks like a node. + */ +function nodelike(value) { + return Boolean( + value && + typeof value === 'object' && + 'type' in value && + typeof value.type === 'string' && + value.type.length > 0 + ) } -function transport (fullOptions) { - const { pipeline, targets, options = {}, worker = {}, caller = getCallers() } = fullOptions +;// CONCATENATED MODULE: ./node_modules/micromark-util-events-to-acorn/lib/index.js +/** + * @import {Comment, Node as AcornNode, Token} from 'acorn' + * @import {Node as EstreeNode, Program} from 'estree' + * @import {Chunk, Event, Point as MicromarkPoint, TokenType} from 'micromark-util-types' + * @import {Point as UnistPoint} from 'unist' + * + * @import {AcornOptions, Options} from 'micromark-util-events-to-acorn' + * @import {AcornError, Collection, Result, Stop} from './types.js' + */ - // Backwards compatibility - const callers = typeof caller === 'string' ? [caller] : caller - // This will be eventually modified by bundlers - const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {} - let target = fullOptions.target - if (target && targets) { - throw new Error('only one of target or targets can be specified') +/** + * Parse a list of micromark events with acorn. + * + * @param {Array<Event>} events + * Events. + * @param {Options} options + * Configuration (required). + * @returns {Result} + * Result. + */ +// eslint-disable-next-line complexity +function eventsToAcorn(events, options) { + const prefix = options.prefix || ''; + const suffix = options.suffix || ''; + const acornOptions = Object.assign({}, options.acornOptions); + /** @type {Array<Comment>} */ + const comments = []; + /** @type {Array<Token>} */ + const tokens = []; + const onComment = acornOptions.onComment; + const onToken = acornOptions.onToken; + let swallow = false; + /** @type {AcornNode | undefined} */ + let estree; + /** @type {AcornError | undefined} */ + let exception; + /** @type {AcornOptions} */ + const acornConfig = Object.assign({}, acornOptions, { + onComment: comments, + preserveParens: true + }); + if (onToken) { + acornConfig.onToken = tokens; + } + const collection = collect(events, options.tokenTypes); + const source = collection.value; + const value = prefix + source + suffix; + const isEmptyExpression = options.expression && lib_empty(source); + if (isEmptyExpression && !options.allowEmpty) { + throw new VFileMessage('Unexpected empty expression', { + place: parseOffsetToUnistPoint(0), + ruleId: 'unexpected-empty-expression', + source: 'micromark-extension-mdx-expression' + }); } + try { + estree = options.expression && !isEmptyExpression ? options.acorn.parseExpressionAt(value, 0, acornConfig) : options.acorn.parse(value, acornConfig); + } catch (error_) { + const error = /** @type {AcornError} */error_; + const point = parseOffsetToUnistPoint(error.pos); + error.message = String(error.message).replace(/ \(\d+:\d+\)$/, ''); + // Always defined in our unist points that come from micromark. + + error.pos = point.offset; + error.loc = { + line: point.line, + column: point.column - 1 + }; + exception = error; + swallow = error.raisedAt >= prefix.length + source.length || + // Broken comments are raised at their start, not their end. + error.message === 'Unterminated comment'; + } + if (estree && options.expression && !isEmptyExpression) { + if (lib_empty(value.slice(estree.end, value.length - suffix.length))) { + estree = { + type: 'Program', + start: 0, + end: prefix.length + source.length, + // @ts-expect-error: It’s good. + body: [{ + type: 'ExpressionStatement', + expression: estree, + start: 0, + end: prefix.length + source.length + }], + sourceType: 'module', + comments: [] + }; + } else { + const point = parseOffsetToUnistPoint(estree.end); + const error = /** @type {AcornError} */ + new Error('Unexpected content after expression'); + // Always defined in our unist points that come from micromark. - if (targets) { - target = bundlerOverrides['pino-worker'] || __nccwpck_require__.ab + "worker.js" - options.targets = targets.map((dest) => { - return { - ...dest, - target: fixTarget(dest.target) - } - }) - } else if (fullOptions.pipeline) { - target = bundlerOverrides['pino-pipeline-worker'] || __nccwpck_require__.ab + "worker-pipeline.js" - options.targets = pipeline.map((dest) => { - return { - ...dest, - target: fixTarget(dest.target) - } - }) + error.pos = point.offset; + error.loc = { + line: point.line, + column: point.column - 1 + }; + exception = error; + estree = undefined; + } } + if (estree) { + // @ts-expect-error: acorn *does* allow comments + estree.comments = comments; - return buildStream(fixTarget(target), options, worker) + // @ts-expect-error: acorn looks enough like estree. + lib_visit(estree, function (esnode, field, index, parents) { + let context = /** @type {AcornNode | Array<AcornNode>} */ + parents[parents.length - 1]; + /** @type {number | string | undefined} */ + let property = field; - function fixTarget (origin) { - origin = bundlerOverrides[origin] || origin + // Remove non-standard `ParenthesizedExpression`. + // @ts-expect-error: included in acorn. + if (esnode.type === 'ParenthesizedExpression' && context && property) { + /* c8 ignore next 5 */ + if (typeof index === 'number') { + // @ts-expect-error: indexable. + context = context[property]; + property = index; + } - if (isAbsolute(origin) || origin.indexOf('file://') === 0) { - return origin - } + // @ts-expect-error: indexable. + context[property] = esnode.expression; + } + fixPosition(esnode); + }); - if (origin === 'pino/file') { - return __nccwpck_require__.ab + "file.js" + // Comment positions are fixed by `visit` because they’re in the tree. + if (Array.isArray(onComment)) { + onComment.push(...comments); + } else if (typeof onComment === 'function') { + for (const comment of comments) { + onComment(comment.type === 'Block', comment.value, comment.start, comment.end, comment.loc.start, comment.loc.end); + } } + for (const token of tokens) { + // Ignore tokens that ends in prefix or start in suffix: + if (token.end <= prefix.length || token.start - prefix.length >= source.length) { + continue; + } + fixPosition(token); + if (Array.isArray(onToken)) { + onToken.push(token); + } else { + // `tokens` are not added if `onToken` is not defined, so it must be a + // function. - let fixTarget - - for (const filePath of callers) { - try { - fixTarget = createRequire(filePath).resolve(origin) - break - } catch (err) { - // Silent catch - continue + onToken(token); } } + } - if (!fixTarget) { - throw new Error(`unable to determine transport target for "${origin}"`) - } + // @ts-expect-error: It’s a program now. + return { + estree, + error: exception, + swallow + }; - return fixTarget + /** + * Update the position of a node. + * + * @param {AcornNode | EstreeNode | Token} nodeOrToken + * @returns {undefined} + */ + function fixPosition(nodeOrToken) { + const pointStart = parseOffsetToUnistPoint(nodeOrToken.start); + const pointEnd = parseOffsetToUnistPoint(nodeOrToken.end); + // Always defined in our unist points that come from micromark. + + nodeOrToken.start = pointStart.offset; + nodeOrToken.end = pointEnd.offset; + nodeOrToken.loc = { + start: { + line: pointStart.line, + column: pointStart.column - 1, + // @ts-expect-error: not allowed by acorn types. + offset: pointStart.offset + }, + end: { + line: pointEnd.line, + column: pointEnd.column - 1, + // @ts-expect-error: not allowed by acorn types. + offset: pointEnd.offset + } + }; + nodeOrToken.range = [nodeOrToken.start, nodeOrToken.end]; + } + + /** + * Turn an arbitrary offset into the parsed value, into a point in the source + * value. + * + * @param {number} acornOffset + * @returns {UnistPoint} + */ + function parseOffsetToUnistPoint(acornOffset) { + let sourceOffset = acornOffset - prefix.length; + if (sourceOffset < 0) { + sourceOffset = 0; + } else if (sourceOffset > source.length) { + sourceOffset = source.length; + } + let point = relativeToPoint(collection.stops, sourceOffset); + if (!point) { + point = { + line: options.start.line, + column: options.start.column, + offset: options.start.offset + }; + } + return point; } } -module.exports = transport - - -/***/ }), +/** + * @param {string} value + * @returns {boolean} + */ +function lib_empty(value) { + return /^\s*$/.test(value + // Multiline comments. + .replace(/\/\*[\s\S]*?\*\//g, '') + // Line comments. + // EOF instead of EOL is specifically not allowed, because that would + // mean the closing brace is on the commented-out line + .replace(/\/\/[^\r\n]*(\r\n|\n|\r)/g, '')); +} -/***/ 55124: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// Port from <https://github.com/wooorm/markdown-rs/blob/e692ab0/src/util/mdx_collect.rs#L15>. +/** + * @param {Array<Event>} events + * @param {Array<TokenType>} tokenTypes + * @returns {Collection} + */ +function collect(events, tokenTypes) { + /** @type {Collection} */ + const result = { + value: '', + stops: [] + }; + let index = -1; + while (++index < events.length) { + const event = events[index]; -"use strict"; + // Assume void. + if (event[0] === 'enter') { + const type = event[1].type; + if (type === "lineEnding" || tokenTypes.includes(type)) { + const chunks = event[2].sliceStream(event[1]); -/* eslint no-prototype-builtins: 0 */ -const os = __nccwpck_require__(22037) -const stdSerializers = __nccwpck_require__(72274) -const caller = __nccwpck_require__(15749) -const redaction = __nccwpck_require__(74517) -const time = __nccwpck_require__(81554) -const proto = __nccwpck_require__(27921) -const symbols = __nccwpck_require__(75683) -const { configure } = __nccwpck_require__(5693) -const { assertDefaultLevelFound, mappings, genLsCache } = __nccwpck_require__(98122) -const { - createArgsNormalizer, - asChindings, - final, - buildSafeSonicBoom, - buildFormatters, - stringify, - normalizeDestFileDescriptor, - noop -} = __nccwpck_require__(80566) -const { version } = __nccwpck_require__(84834) -const { - chindingsSym, - redactFmtSym, - serializersSym, - timeSym, - timeSliceIndexSym, - streamSym, - stringifySym, - stringifySafeSym, - stringifiersSym, - setLevelSym, - endSym, - formatOptsSym, - messageKeySym, - nestedKeySym, - mixinSym, - useOnlyCustomLevelsSym, - formattersSym, - hooksSym, - nestedKeyStrSym, - mixinMergeStrategySym -} = symbols -const { epochTime, nullTime } = time -const { pid } = process -const hostname = os.hostname() -const defaultErrorSerializer = stdSerializers.err -const defaultOptions = { - level: 'info', - messageKey: 'msg', - nestedKey: null, - enabled: true, - prettyPrint: false, - base: { pid, hostname }, - serializers: Object.assign(Object.create(null), { - err: defaultErrorSerializer - }), - formatters: Object.assign(Object.create(null), { - bindings (bindings) { - return bindings - }, - level (label, number) { - return { level: number } + // Drop virtual spaces. + while (chunks.length > 0 && chunks[0] === -1) { + chunks.shift(); + } + const value = lib_serializeChunks(chunks); + result.stops.push([result.value.length, event[1].start]); + result.value += value; + result.stops.push([result.value.length, event[1].end]); + } } - }), - hooks: { - logMethod: undefined - }, - timestamp: epochTime, - name: undefined, - redact: null, - customLevels: null, - useOnlyCustomLevels: false, - depthLimit: 5, - edgeLimit: 100 + } + return result; } -const normalize = createArgsNormalizer(defaultOptions) - -const serializers = Object.assign(Object.create(null), stdSerializers) - -function pino (...args) { - const instance = {} - const { opts, stream } = normalize(instance, caller(), ...args) - const { - redact, - crlf, - serializers, - timestamp, - messageKey, - nestedKey, - base, - name, - level, - customLevels, - mixin, - mixinMergeStrategy, - useOnlyCustomLevels, - formatters, - hooks, - depthLimit, - edgeLimit - } = opts - - const stringifySafe = configure({ - maximumDepth: depthLimit, - maximumBreadth: edgeLimit - }) - - const allFormatters = buildFormatters( - formatters.level, - formatters.bindings, - formatters.log - ) - - const stringifiers = redact ? redaction(redact, stringify) : {} - const stringifyFn = stringify.bind({ - [stringifySafeSym]: stringifySafe - }) - const formatOpts = redact - ? { stringify: stringifiers[redactFmtSym] } - : { stringify: stringifyFn } - const end = '}' + (crlf ? '\r\n' : '\n') - const coreChindings = asChindings.bind(null, { - [chindingsSym]: '', - [serializersSym]: serializers, - [stringifiersSym]: stringifiers, - [stringifySym]: stringify, - [stringifySafeSym]: stringifySafe, - [formattersSym]: allFormatters - }) - - let chindings = '' - if (base !== null) { - if (name === undefined) { - chindings = coreChindings(base) - } else { - chindings = coreChindings(Object.assign({}, base, { name })) - } - } - - const time = (timestamp instanceof Function) - ? timestamp - : (timestamp ? epochTime : nullTime) - const timeSliceIndex = time().indexOf(':') + 1 - - if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true') - if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type "${typeof mixin}" - expected "function"`) - - assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels) - const levels = mappings(customLevels, useOnlyCustomLevels) - - Object.assign(instance, { - levels, - [useOnlyCustomLevelsSym]: useOnlyCustomLevels, - [streamSym]: stream, - [timeSym]: time, - [timeSliceIndexSym]: timeSliceIndex, - [stringifySym]: stringify, - [stringifySafeSym]: stringifySafe, - [stringifiersSym]: stringifiers, - [endSym]: end, - [formatOptsSym]: formatOpts, - [messageKeySym]: messageKey, - [nestedKeySym]: nestedKey, - // protect against injection - [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '', - [serializersSym]: serializers, - [mixinSym]: mixin, - [mixinMergeStrategySym]: mixinMergeStrategy, - [chindingsSym]: chindings, - [formattersSym]: allFormatters, - [hooksSym]: hooks, - silent: noop - }) - - Object.setPrototypeOf(instance, proto()) - - genLsCache(instance) - - instance[setLevelSym](level) +// Port from <https://github.com/wooorm/markdown-rs/blob/e692ab0/src/util/location.rs#L91>. +/** + * Turn a relative offset into an absolute offset. + * + * @param {Array<Stop>} stops + * @param {number} relative + * @returns {UnistPoint | undefined} + */ +function relativeToPoint(stops, relative) { + let index = 0; + while (index < stops.length && stops[index][0] <= relative) { + index += 1; + } - return instance + // There are no points: that only occurs if there was an empty string. + if (index === 0) { + return undefined; + } + const [stopRelative, stopAbsolute] = stops[index - 1]; + const rest = relative - stopRelative; + return { + line: stopAbsolute.line, + column: stopAbsolute.column + rest, + offset: stopAbsolute.offset + rest + }; } -module.exports = pino +// Copy from <https://github.com/micromark/micromark/blob/ce3593a/packages/micromark/dev/lib/create-tokenizer.js#L595> +// To do: expose that? +/** + * Get the string value of a slice of chunks. + * + * @param {Array<Chunk>} chunks + * @returns {string} + */ +function lib_serializeChunks(chunks) { + let index = -1; + /** @type {Array<string>} */ + const result = []; + /** @type {boolean | undefined} */ + let atTab; + while (++index < chunks.length) { + const chunk = chunks[index]; + /** @type {string} */ + let value; + if (typeof chunk === 'string') { + value = chunk; + } else switch (chunk) { + case -5: + { + value = "\r"; + break; + } + case -4: + { + value = "\n"; + break; + } + case -3: + { + value = "\r" + "\n"; + break; + } + case -2: + { + value = "\t"; + break; + } -module.exports.destination = (dest = process.stdout.fd) => { - if (typeof dest === 'object') { - dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd) - return buildSafeSonicBoom(dest) - } else { - return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0, sync: true }) + /* c8 ignore next 6 */ + case -1: + { + if (atTab) continue; + value = " "; + break; + } + default: + { + // Currently only replacement character. + // eslint-disable-next-line unicorn/prefer-code-point + value = String.fromCharCode(chunk); + } + } + atTab = chunk === -2; + result.push(value); } + return result.join(''); } +;// CONCATENATED MODULE: ./node_modules/unist-util-position-from-estree/lib/index.js +/** + * @typedef {import('unist').Point} UnistPoint + * @typedef {import('unist').Position} UnistPosition + */ -module.exports.transport = __nccwpck_require__(77548) -module.exports.multistream = __nccwpck_require__(54881) - -module.exports.final = final -module.exports.levels = mappings() -module.exports.stdSerializers = serializers -module.exports.stdTimeFunctions = Object.assign({}, time) -module.exports.symbols = symbols -module.exports.version = version +/** + * @typedef {[start: number | null | undefined, end: number | null | undefined]} RangeLike + * + * @typedef PointLike + * @property {number | null | undefined} [line] + * @property {number | null | undefined} [column] + * + * @typedef LocLike + * @property {PointLike | null | undefined} [start] + * @property {PointLike | null | undefined} [end] + * + * @typedef NodeLike + * @property {LocLike | null | undefined} [loc] + * @property {RangeLike | null | undefined} [range] + * @property {number | null | undefined} [start] + * @property {number | null | undefined} [end] + */ -// Enables default and name export with TypeScript and Babel -module.exports["default"] = pino -module.exports.pino = pino +/** + * Turn an estree `node` into a unist `position`. + * + * @param {NodeLike | null | undefined} [node] + * estree node. + * @returns {UnistPosition | undefined} + * unist position. + */ +function positionFromEstree(node) { + const nodeLike = node || {} + const loc = nodeLike.loc || {} + const range = nodeLike.range || [undefined, undefined] + const start = pointOrUndefined(loc.start, range[0] || nodeLike.start) + const end = pointOrUndefined(loc.end, range[1] || nodeLike.end) + if (start && end) { + return {start, end} + } +} -/***/ }), +/** + * @param {unknown} estreePoint + * estree point. + * @param {unknown} estreeOffset + * estree offset. + * @returns {UnistPoint | undefined} + * unist point. + */ +function pointOrUndefined(estreePoint, estreeOffset) { + if (estreePoint && typeof estreePoint === 'object') { + const line = + 'line' in estreePoint ? numberOrUndefined(estreePoint.line) : undefined + const column = + 'column' in estreePoint + ? numberOrUndefined(estreePoint.column) + : undefined + + if (line && column !== undefined) { + return { + line, + column: column + 1, + offset: numberOrUndefined(estreeOffset) + } + } + } +} -/***/ 93565: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * @param {unknown} value + * @returns {number | undefined} + */ +function numberOrUndefined(value) { + return typeof value === 'number' && value > -1 ? value : undefined +} -"use strict"; +;// CONCATENATED MODULE: ./node_modules/micromark-factory-mdx-expression/index.js +/** + * @import {Program} from 'estree' + * @import {Acorn, AcornOptions} from 'micromark-util-events-to-acorn' + * @import {Effects, Point, State, TokenType, TokenizeContext} from 'micromark-util-types' + */ +/** + * @typedef MdxSignalOk + * Good result. + * @property {'ok'} type + * Type. + * @property {Program | undefined} estree + * Value. + * + * @typedef MdxSignalNok + * Bad result. + * @property {'nok'} type + * Type. + * @property {VFileMessage} message + * Value. + * + * @typedef {MdxSignalNok | MdxSignalOk} MdxSignal + */ -const fs = __nccwpck_require__(57147) -const EventEmitter = __nccwpck_require__(82361) -const inherits = (__nccwpck_require__(73837).inherits) -const path = __nccwpck_require__(71017) -const sleep = __nccwpck_require__(58803) -const BUSY_WRITE_TIMEOUT = 100 -// This constant ensures that SonicBoom only needs -// 64KB MB of free memory to run. In case of having 1GB+ -// of data to write, this prevents an out of memory -// condition. -const MAX_WRITE = 64 * 1024 -function openFile (file, sonic) { - sonic._opening = true - sonic._writing = true - sonic._asyncDrainScheduled = false - // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false - // for sync mode, there is no way to add a listener that will receive these - function fileOpened (err, fd) { - if (err) { - sonic._reopening = false - sonic._writing = false - sonic._opening = false - - if (sonic.sync) { - process.nextTick(() => { - if (sonic.listenerCount('error') > 0) { - sonic.emit('error', err) - } - }) - } else { - sonic.emit('error', err) - } - return - } - sonic.fd = fd - sonic.file = file - sonic._reopening = false - sonic._opening = false - sonic._writing = false +// Tab-size to eat has to be the same as what we serialize as. +// While in some places in markdown that’s 4, in JS it’s more common as 2. +// Which is what’s also in `mdast-util-mdx-jsx`: +// <https://github.com/syntax-tree/mdast-util-mdx-jsx/blob/40b951b/lib/index.js#L52> +const indentSize = 2; +const trouble = 'https://github.com/micromark/micromark-extension-mdx-expression/tree/main/packages/micromark-extension-mdx-expression'; +const unexpectedEndOfFileHash = '#unexpected-end-of-file-in-expression-expected-a-corresponding-closing-brace-for-'; +const unexpectedLazyHash = '#unexpected-lazy-line-in-expression-in-container-expected-line-to-be-prefixed'; +const nonSpreadHash = '#unexpected-type-in-code-expected-an-object-spread-spread'; +const spreadExtraHash = '#unexpected-extra-content-in-spread-only-a-single-spread-is-supported'; +const acornHash = '#could-not-parse-expression-with-acorn'; - if (sonic.sync) { - process.nextTick(() => sonic.emit('ready')) - } else { - sonic.emit('ready') +/** + * @this {TokenizeContext} + * Context. + * @param {Effects} effects + * Context. + * @param {State} ok + * State switched to when successful + * @param {TokenType} type + * Token type for whole (`{}`). + * @param {TokenType} markerType + * Token type for the markers (`{`, `}`). + * @param {TokenType} chunkType + * Token type for the value (`1`). + * @param {Acorn | null | undefined} [acorn] + * Object with `acorn.parse` and `acorn.parseExpressionAt`. + * @param {AcornOptions | null | undefined} [acornOptions] + * Configuration for acorn. + * @param {boolean | null | undefined} [addResult=false] + * Add `estree` to token (default: `false`). + * @param {boolean | null | undefined} [spread=false] + * Support a spread (`{...a}`) only (default: `false`). + * @param {boolean | null | undefined} [allowEmpty=false] + * Support an empty expression (default: `false`). + * @param {boolean | null | undefined} [allowLazy=false] + * Support lazy continuation of an expression (default: `false`). + * @returns {State} + */ +// eslint-disable-next-line max-params +function factoryMdxExpression(effects, ok, type, markerType, chunkType, acorn, acornOptions, addResult, spread, allowEmpty, allowLazy) { + const self = this; + const eventStart = this.events.length + 3; // Add main and marker token + let size = 0; + /** @type {Point} */ + let pointStart; + /** @type {Error} */ + let lastCrash; + return start; + + /** + * Start of an MDX expression. + * + * ```markdown + * > | a {Math.PI} c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter(type); + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + pointStart = self.now(); + return before; + } + + /** + * Before data. + * + * ```markdown + * > | a {Math.PI} c + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + if (code === null) { + if (lastCrash) throw lastCrash; + const error = new VFileMessage('Unexpected end of file in expression, expected a corresponding closing brace for `{`', { + place: self.now(), + ruleId: 'unexpected-eof', + source: 'micromark-extension-mdx-expression' + }); + error.url = trouble + unexpectedEndOfFileHash; + throw error; } - - if (sonic._reopening) { - return + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return eolAfter; + } + if (code === 125 && size === 0) { + /** @type {MdxSignal} */ + const next = acorn ? mdxExpressionParse.call(self, acorn, acornOptions, chunkType, eventStart, pointStart, allowEmpty || false, spread || false) : { + type: 'ok', + estree: undefined + }; + if (next.type === 'ok') { + effects.enter(markerType); + effects.consume(code); + effects.exit(markerType); + const token = effects.exit(type); + if (addResult && next.estree) { + Object.assign(token, { + estree: next.estree + }); + } + return ok; + } + lastCrash = next.message; + effects.enter(chunkType); + effects.consume(code); + return inside; + } + effects.enter(chunkType); + return inside(code); + } + + /** + * In data. + * + * ```markdown + * > | a {Math.PI} c + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === 125 && size === 0 || code === null || markdownLineEnding(code)) { + effects.exit(chunkType); + return before(code); + } + + // Don’t count if gnostic. + if (code === 123 && !acorn) { + size += 1; + } else if (code === 125) { + size -= 1; + } + effects.consume(code); + return inside; + } + + /** + * After eol. + * + * ```markdown + * | a {b + + * > | c} d + * ^ + * ``` + * + * @type {State} + */ + function eolAfter(code) { + const now = self.now(); + + // Lazy continuation in a flow expression (or flow tag) is a syntax error. + if (now.line !== pointStart.line && !allowLazy && self.parser.lazy[now.line]) { + const error = new VFileMessage('Unexpected lazy line in expression in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc', { + place: self.now(), + ruleId: 'unexpected-lazy', + source: 'micromark-extension-mdx-expression' + }); + error.url = trouble + unexpectedLazyHash; + throw error; } - // start - if (!sonic._writing && sonic._len > sonic.minLength && !sonic.destroyed) { - actualWrite(sonic) + // Note: `markdown-rs` uses `4`, but we use `2`. + // + // Idea: investigate if we’d need to use more complex stripping. + // Take this example: + // + // ```markdown + // > aaa <b c={` + // > d + // > `} /> eee + // ``` + // + // Currently, the “paragraph” starts at `> | aaa`, so for the next line + // here we split it into `>␠|␠␠|␠␠␠d` (prefix, this indent here, + // expression data). + if (markdownSpace(code)) { + return factorySpace(effects, before, "linePrefix", indentSize + 1)(code); } + return before(code); } +} - const flags = sonic.append ? 'a' : 'w' - const mode = sonic.mode - - if (sonic.sync) { - try { - if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true }) - const fd = fs.openSync(file, flags, mode) - fileOpened(null, fd) - } catch (err) { - fileOpened(err) - throw err +/** + * Mix of `markdown-rs`’s `parse_expression` and `MdxExpressionParse` + * functionality, to wrap our `eventsToAcorn`. + * + * In the future, the plan is to realise the rust way, which allows arbitrary + * parsers. + * + * @this {TokenizeContext} + * @param {Acorn} acorn + * @param {AcornOptions | null | undefined} acornOptions + * @param {TokenType} chunkType + * @param {number} eventStart + * @param {Point} pointStart + * @param {boolean} allowEmpty + * @param {boolean} spread + * @returns {MdxSignal} + */ +// eslint-disable-next-line max-params +function mdxExpressionParse(acorn, acornOptions, chunkType, eventStart, pointStart, allowEmpty, spread) { + // Gnostic mode: parse w/ acorn. + const result = eventsToAcorn(this.events.slice(eventStart), { + acorn, + tokenTypes: [chunkType], + acornOptions, + start: pointStart, + expression: true, + allowEmpty, + prefix: spread ? '({' : '', + suffix: spread ? '})' : '' + }); + const estree = result.estree; + + // Get the spread value. + if (spread && estree) { + // Should always be the case as we wrap in `d={}` + + const head = estree.body[0]; + if (head.type !== 'ExpressionStatement' || head.expression.type !== 'ObjectExpression') { + const place = positionFromEstree(head); + const error = new VFileMessage('Unexpected `' + head.type + '` in code: expected an object spread (`{...spread}`)', { + place: place.start, + ruleId: 'non-spread', + source: 'micromark-extension-mdx-expression' + }); + error.url = trouble + nonSpreadHash; + throw error; + } + if (head.expression.properties[1]) { + const place = positionFromEstree(head.expression.properties[1]); + const error = new VFileMessage('Unexpected extra content in spread: only a single spread is supported', { + place: place.start, + ruleId: 'spread-extra', + source: 'micromark-extension-mdx-expression' + }); + error.url = trouble + spreadExtraHash; + throw error; + } + if (head.expression.properties[0] && head.expression.properties[0].type !== 'SpreadElement') { + const place = positionFromEstree(head.expression.properties[0]); + const error = new VFileMessage('Unexpected `' + head.expression.properties[0].type + '` in code: only spread elements are supported', { + place: place.start, + ruleId: 'non-spread', + source: 'micromark-extension-mdx-expression' + }); + error.url = trouble + nonSpreadHash; + throw error; } - } else if (sonic.mkdir) { - fs.mkdir(path.dirname(file), { recursive: true }, (err) => { - if (err) return fileOpened(err) - fs.open(file, flags, mode, fileOpened) - }) - } else { - fs.open(file, flags, mode, fileOpened) - } -} - -function SonicBoom (opts) { - if (!(this instanceof SonicBoom)) { - return new SonicBoom(opts) - } - - let { fd, dest, minLength, maxLength, sync, append = true, mode, mkdir, retryEAGAIN } = opts || {} - - fd = fd || dest - - this._bufs = [] - this._len = 0 - this.fd = -1 - this._writing = false - this._writingBuf = '' - this._ending = false - this._reopening = false - this._asyncDrainScheduled = false - this._hwm = Math.max(minLength || 0, 16387) - this.file = null - this.destroyed = false - this.minLength = minLength || 0 - this.maxLength = maxLength || 0 - this.sync = sync || false - this.append = append || false - this.mode = mode - this.retryEAGAIN = retryEAGAIN || (() => true) - this.mkdir = mkdir || false - - if (typeof fd === 'number') { - this.fd = fd - process.nextTick(() => this.emit('ready')) - } else if (typeof fd === 'string') { - openFile(fd, this) - } else { - throw new Error('SonicBoom supports only file descriptors and files') } - if (this.minLength >= MAX_WRITE) { - throw new Error(`minLength should be smaller than MAX_WRITE (${MAX_WRITE})`) + if (result.error) { + const error = new VFileMessage('Could not parse expression with acorn', { + cause: result.error, + place: { + line: result.error.loc.line, + column: result.error.loc.column + 1, + offset: result.error.pos + }, + ruleId: 'acorn', + source: 'micromark-extension-mdx-expression' + }); + error.url = trouble + acornHash; + return { + type: 'nok', + message: error + }; } + return { + type: 'ok', + estree + }; +} +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-expression/lib/syntax.js +/** + * @import {Options} from 'micromark-extension-mdx-expression' + * @import {AcornOptions} from 'micromark-util-events-to-acorn' + * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types' + */ - this.release = (err, n) => { - if (err) { - if (err.code === 'EAGAIN' && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) { - if (this.sync) { - // This error code should not happen in sync mode, because it is - // not using the underlining operating system asynchronous functions. - // However it happens, and so we handle it. - // Ref: https://github.com/pinojs/pino/issues/783 - try { - sleep(BUSY_WRITE_TIMEOUT) - this.release(undefined, 0) - } catch (err) { - this.release(err) - } - } else { - // Let's give the destination some time to process the chunk. - setTimeout(() => { - fs.write(this.fd, this._writingBuf, 'utf8', this.release) - }, BUSY_WRITE_TIMEOUT) - } - } else { - this._writing = false - this.emit('error', err) - } - return - } - this._len -= n - this._writingBuf = this._writingBuf.slice(n) - if (this._writingBuf.length) { - if (!this.sync) { - fs.write(this.fd, this._writingBuf, 'utf8', this.release) - return +/** + * Create an extension for `micromark` to enable MDX expression syntax. + * + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {Extension} + * Extension for `micromark` that can be passed in `extensions` to enable MDX + * expression syntax. + */ +function mdxExpression(options) { + const options_ = options || {}; + const addResult = options_.addResult; + const acorn = options_.acorn; + // Hidden: `micromark-extension-mdx-jsx` supports expressions in tags, + // and one of them is only “spread” elements. + // It also has expressions that are not allowed to be empty (`<x y={}/>`). + // Instead of duplicating code there, this are two small hidden feature here + // to test that behavior. + const spread = options_.spread; + let allowEmpty = options_.allowEmpty; + /** @type {AcornOptions} */ + let acornOptions; + if (allowEmpty === null || allowEmpty === undefined) { + allowEmpty = true; + } + if (acorn) { + if (!acorn.parseExpressionAt) { + throw new Error('Expected a proper `acorn` instance passed in as `options.acorn`'); + } + acornOptions = Object.assign({ + ecmaVersion: 2024, + sourceType: 'module' + }, options_.acornOptions); + } else if (options_.acornOptions || options_.addResult) { + throw new Error('Expected an `acorn` instance passed in as `options.acorn`'); + } + return { + flow: { + [123]: { + name: 'mdxFlowExpression', + tokenize: tokenizeFlowExpression, + concrete: true } - - try { - do { - const n = fs.writeSync(this.fd, this._writingBuf, 'utf8') - this._len -= n - this._writingBuf = this._writingBuf.slice(n) - } while (this._writingBuf) - } catch (err) { - this.release(err) - return + }, + text: { + [123]: { + name: 'mdxTextExpression', + tokenize: tokenizeTextExpression } } + }; - const len = this._len - if (this._reopening) { - this._writing = false - this._reopening = false - this.reopen() - } else if (len > this.minLength) { - actualWrite(this) - } else if (this._ending) { - if (len > 0) { - actualWrite(this) - } else { - this._writing = false - actualClose(this) - } - } else { - this._writing = false - if (this.sync) { - if (!this._asyncDrainScheduled) { - this._asyncDrainScheduled = true - process.nextTick(emitDrain, this) - } - } else { - this.emit('drain') - } + /** + * MDX expression (flow). + * + * ```markdown + * > | {Math.PI} + * ^^^^^^^^^ + * ``` + * + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeFlowExpression(effects, ok, nok) { + const self = this; + return start; + + /** + * Start of an MDX expression (flow). + * + * ```markdown + * > | {Math.PI} + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: in `markdown-rs`, constructs need to parse the indent themselves. + // This should also be introduced in `micromark-js`. + + return before(code); } - } - this.on('newListener', function (name) { - if (name === 'drain') { - this._asyncDrainScheduled = false + /** + * After optional whitespace, before expression. + * + * ```markdown + * > | {Math.PI} + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + return factoryMdxExpression.call(self, effects, after, 'mdxFlowExpression', 'mdxFlowExpressionMarker', 'mdxFlowExpressionChunk', acorn, acornOptions, addResult, spread, allowEmpty)(code); } - }) -} -function emitDrain (sonic) { - const hasListeners = sonic.listenerCount('drain') > 0 - if (!hasListeners) return - sonic._asyncDrainScheduled = false - sonic.emit('drain') -} + /** + * After expression. + * + * ```markdown + * > | {Math.PI} + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return markdownSpace(code) ? factorySpace(effects, end, "whitespace")(code) : end(code); + } -inherits(SonicBoom, EventEmitter) + /** + * After expression, after optional whitespace. + * + * ```markdown + * > | {Math.PI}␠␊ + * ^ + * ``` + * + * @type {State} + */ + function end(code) { + // We want to allow tags directly after expressions. + // + // This case is useful: + // + // ```mdx + // <a>{b}</a> + // ``` + // + // This case is not (very?) useful: + // + // ```mdx + // {a}<b/> + // ``` + // + // …but it would be tougher than needed to disallow. + // + // To allow that, here we call the flow construct of + // `micromark-extension-mdx-jsx`, and there we call this one. + // + // It would introduce a cyclical interdependency if we test JSX and + // expressions here. + // Because the JSX extension already uses parts of this monorepo, we + // instead test it there. + const lessThanValue = self.parser.constructs.flow[60]; + const constructs = Array.isArray(lessThanValue) ? lessThanValue : /* c8 ignore next 3 -- always a list when normalized. */ + lessThanValue ? [lessThanValue] : []; + const jsxTag = constructs.find(function (d) { + return d.name === 'mdxJsxFlowTag'; + }); -SonicBoom.prototype.write = function (data) { - if (this.destroyed) { - throw new Error('SonicBoom destroyed') + /* c8 ignore next 3 -- this is tested in `micromark-extension-mdx-jsx` */ + if (code === 60 && jsxTag) { + return effects.attempt(jsxTag, end, nok)(code); + } + return code === null || markdownLineEnding(code) ? ok(code) : nok(code); + } } - const len = this._len + data.length - const bufs = this._bufs + /** + * MDX expression (text). + * + * ```markdown + * > | a {Math.PI} c. + * ^^^^^^^^^ + * ``` + * + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeTextExpression(effects, ok) { + const self = this; + return start; - if (this.maxLength && len > this.maxLength) { - this.emit('drop', data) - return this._len < this._hwm + /** + * Start of an MDX expression (text). + * + * ```markdown + * > | a {Math.PI} c. + * ^ + * ``` + * + * + * @type {State} + */ + function start(code) { + return factoryMdxExpression.call(self, effects, ok, 'mdxTextExpression', 'mdxTextExpressionMarker', 'mdxTextExpressionChunk', acorn, acornOptions, addResult, spread, allowEmpty, true)(code); + } } +} +;// CONCATENATED MODULE: ./node_modules/estree-util-is-identifier-name/lib/index.js +/** + * @typedef Options + * Configuration. + * @property {boolean | null | undefined} [jsx=false] + * Support JSX identifiers (default: `false`). + */ - if ( - bufs.length === 0 || - bufs[bufs.length - 1].length + data.length > MAX_WRITE - ) { - bufs.push('' + data) - } else { - bufs[bufs.length - 1] += data - } +const startRe = /[$_\p{ID_Start}]/u +const contRe = /[$_\u{200C}\u{200D}\p{ID_Continue}]/u +const contReJsx = /[-$_\u{200C}\u{200D}\p{ID_Continue}]/u +const nameRe = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u +const nameReJsx = /^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u - this._len = len +/** @type {Options} */ +const lib_emptyOptions = {} - if (!this._writing && this._len >= this.minLength) { - actualWrite(this) - } +/** + * Checks if the given code point can start an identifier. + * + * @param {number | undefined} code + * Code point to check. + * @returns {boolean} + * Whether `code` can start an identifier. + */ +// Note: `undefined` is supported so you can pass the result from `''.codePointAt`. +function lib_start(code) { + return code ? startRe.test(String.fromCodePoint(code)) : false +} - return this._len < this._hwm +/** + * Checks if the given code point can continue an identifier. + * + * @param {number | undefined} code + * Code point to check. + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {boolean} + * Whether `code` can continue an identifier. + */ +// Note: `undefined` is supported so you can pass the result from `''.codePointAt`. +function cont(code, options) { + const settings = options || lib_emptyOptions + const re = settings.jsx ? contReJsx : contRe + return code ? re.test(String.fromCodePoint(code)) : false } -SonicBoom.prototype.flush = function () { - if (this.destroyed) { - throw new Error('SonicBoom destroyed') - } +/** + * Checks if the given value is a valid identifier name. + * + * @param {string} name + * Identifier to check. + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {boolean} + * Whether `name` can be an identifier. + */ +function lib_name(name, options) { + const settings = options || lib_emptyOptions + const re = settings.jsx ? nameReJsx : nameRe + return re.test(name) +} - if (this._writing || this.minLength <= 0) { - return - } +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/factory-tag.js +/** + * @import {AcornOptions, Acorn} from 'micromark-util-events-to-acorn' + * @import {Code, Effects, State, TokenType, TokenizeContext} from 'micromark-util-types' + */ - if (this._bufs.length === 0) { - this._bufs.push('') - } - actualWrite(this) -} -SonicBoom.prototype.reopen = function (file) { - if (this.destroyed) { - throw new Error('SonicBoom destroyed') - } - if (this._opening) { - this.once('ready', () => { - this.reopen(file) - }) - return - } - if (this._ending) { - return - } +const factory_tag_trouble = 'https://github.com/micromark/micromark-extension-mdx-jsx'; - if (!this.file) { - throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom') +/** + * @this {TokenizeContext} + * @param {Effects} effects + * @param {State} ok + * @param {State} nok + * @param {Acorn | null | undefined} acorn + * @param {AcornOptions | null | undefined} acornOptions + * @param {boolean | null | undefined} addResult + * @param {boolean | undefined} allowLazy + * @param {TokenType} tagType + * @param {TokenType} tagMarkerType + * @param {TokenType} tagClosingMarkerType + * @param {TokenType} tagSelfClosingMarker + * @param {TokenType} tagNameType + * @param {TokenType} tagNamePrimaryType + * @param {TokenType} tagNameMemberMarkerType + * @param {TokenType} tagNameMemberType + * @param {TokenType} tagNamePrefixMarkerType + * @param {TokenType} tagNameLocalType + * @param {TokenType} tagExpressionAttributeType + * @param {TokenType} tagExpressionAttributeMarkerType + * @param {TokenType} tagExpressionAttributeValueType + * @param {TokenType} tagAttributeType + * @param {TokenType} tagAttributeNameType + * @param {TokenType} tagAttributeNamePrimaryType + * @param {TokenType} tagAttributeNamePrefixMarkerType + * @param {TokenType} tagAttributeNameLocalType + * @param {TokenType} tagAttributeInitializerMarkerType + * @param {TokenType} tagAttributeValueLiteralType + * @param {TokenType} tagAttributeValueLiteralMarkerType + * @param {TokenType} tagAttributeValueLiteralValueType + * @param {TokenType} tagAttributeValueExpressionType + * @param {TokenType} tagAttributeValueExpressionMarkerType + * @param {TokenType} tagAttributeValueExpressionValueType + */ +// eslint-disable-next-line max-params +function factoryTag(effects, ok, nok, acorn, acornOptions, addResult, allowLazy, tagType, tagMarkerType, tagClosingMarkerType, tagSelfClosingMarker, tagNameType, tagNamePrimaryType, tagNameMemberMarkerType, tagNameMemberType, tagNamePrefixMarkerType, tagNameLocalType, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, tagAttributeType, tagAttributeNameType, tagAttributeNamePrimaryType, tagAttributeNamePrefixMarkerType, tagAttributeNameLocalType, tagAttributeInitializerMarkerType, tagAttributeValueLiteralType, tagAttributeValueLiteralMarkerType, tagAttributeValueLiteralValueType, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType) { + const self = this; + /** @type {State} */ + let returnState; + /** @type {NonNullable<Code> | undefined} */ + let marker; + return start; + + /** + * Start of MDX: JSX. + * + * ```markdown + * > | a <B /> c + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + effects.enter(tagType); + effects.enter(tagMarkerType); + effects.consume(code); + effects.exit(tagMarkerType); + return startAfter; + } + + /** + * After `<`. + * + * ```markdown + * > | a <B /> c + * ^ + * ``` + * + * @type {State} + */ + function startAfter(code) { + // Deviate from JSX, which allows arbitrary whitespace. + // See: <https://github.com/micromark/micromark-extension-mdx-jsx/issues/7>. + if (markdownLineEndingOrSpace(code)) { + return nok(code); + } + + // Any other ES whitespace does not get this treatment. + returnState = nameBefore; + return esWhitespaceStart(code); + } + + /** + * Before name, self slash, or end of tag for fragments. + * + * ```markdown + * > | a <B> c + * ^ + * > | a </B> c + * ^ + * > | a <> b + * ^ + * ``` + * + * @type {State} + */ + function nameBefore(code) { + // Closing tag. + if (code === 47) { + effects.enter(tagClosingMarkerType); + effects.consume(code); + effects.exit(tagClosingMarkerType); + returnState = closingTagNameBefore; + return esWhitespaceStart; + } + + // Fragment opening tag. + if (code === 62) { + return tagEnd(code); + } + + // Start of a name. + if (code !== null && code >= 0 && lib_start(code)) { + effects.enter(tagNameType); + effects.enter(tagNamePrimaryType); + effects.consume(code); + return primaryName; + } + crash(code, 'before name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 33 ? ' (note: to create a comment in MDX, use `{/* text */}`)' : '')); + } + + /** + * Before name of closing tag or end of closing fragment tag. + * + * ```markdown + * > | a </> b + * ^ + * > | a </B> c + * ^ + * ``` + * + * @type {State} + */ + function closingTagNameBefore(code) { + // Fragment closing tag. + if (code === 62) { + return tagEnd(code); + } + + // Start of a closing tag name. + if (code !== null && code >= 0 && lib_start(code)) { + effects.enter(tagNameType); + effects.enter(tagNamePrimaryType); + effects.consume(code); + return primaryName; + } + crash(code, 'before name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 42 || code === 47 ? ' (note: JS comments in JSX tags are not supported in MDX)' : '')); + } + + /** + * In primary name. + * + * ```markdown + * > | a <Bc> d + * ^ + * ``` + * + * @type {State} + */ + function primaryName(code) { + // Continuation of name: remain. + if (code !== null && code >= 0 && cont(code, { + jsx: true + })) { + effects.consume(code); + return primaryName; + } + + // End of name. + if (code === 46 || code === 47 || code === 58 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + effects.exit(tagNamePrimaryType); + returnState = primaryNameAfter; + return esWhitespaceStart(code); + } + crash(code, 'in name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag' + (code === 64 ? ' (note: to create a link in MDX, use `[text](url)`)' : '')); + } + + /** + * After primary name. + * + * ```markdown + * > | a <b.c> d + * ^ + * > | a <b:c> d + * ^ + * ``` + * + * @type {State} + */ + function primaryNameAfter(code) { + // Start of a member name. + if (code === 46) { + effects.enter(tagNameMemberMarkerType); + effects.consume(code); + effects.exit(tagNameMemberMarkerType); + returnState = memberNameBefore; + return esWhitespaceStart; + } + + // Start of a local name. + if (code === 58) { + effects.enter(tagNamePrefixMarkerType); + effects.consume(code); + effects.exit(tagNamePrefixMarkerType); + returnState = localNameBefore; + return esWhitespaceStart; + } + + // End of name. + if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { + effects.exit(tagNameType); + return attributeBefore(code); + } + crash(code, 'after name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); + } + + /** + * Before member name. + * + * ```markdown + * > | a <b.c> d + * ^ + * ``` + * + * @type {State} + */ + function memberNameBefore(code) { + // Start of a member name. + if (code !== null && code >= 0 && lib_start(code)) { + effects.enter(tagNameMemberType); + effects.consume(code); + return memberName; + } + crash(code, 'before member name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); + } + + /** + * In member name. + * + * ```markdown + * > | a <b.cd> e + * ^ + * ``` + * + * @type {State} + */ + function memberName(code) { + // Continuation of name: remain. + if (code !== null && code >= 0 && cont(code, { + jsx: true + })) { + effects.consume(code); + return memberName; + } + + // End of name. + // Note: no `:` allowed here. + if (code === 46 || code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + effects.exit(tagNameMemberType); + returnState = memberNameAfter; + return esWhitespaceStart(code); + } + crash(code, 'in member name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag' + (code === 64 ? ' (note: to create a link in MDX, use `[text](url)`)' : '')); + } + + /** + * After member name. + * + * ```markdown + * > | a <b.c> d + * ^ + * > | a <b.c.d> e + * ^ + * ``` + * + * @type {State} + */ + function memberNameAfter(code) { + // Start another member name. + if (code === 46) { + effects.enter(tagNameMemberMarkerType); + effects.consume(code); + effects.exit(tagNameMemberMarkerType); + returnState = memberNameBefore; + return esWhitespaceStart; + } + + // End of name. + if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { + effects.exit(tagNameType); + return attributeBefore(code); + } + crash(code, 'after member name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); + } + + /** + * Local member name. + * + * ```markdown + * > | a <b:c> d + * ^ + * ``` + * + * @type {State} + */ + function localNameBefore(code) { + // Start of a local name. + if (code !== null && code >= 0 && lib_start(code)) { + effects.enter(tagNameLocalType); + effects.consume(code); + return localName; + } + crash(code, 'before local name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 43 || code !== null && code > 46 && code < 58 /* `/` - `9` */ ? ' (note: to create a link in MDX, use `[text](url)`)' : '')); + } + + /** + * In local name. + * + * ```markdown + * > | a <b:cd> e + * ^ + * ``` + * + * @type {State} + */ + function localName(code) { + // Continuation of name: remain. + if (code !== null && code >= 0 && cont(code, { + jsx: true + })) { + effects.consume(code); + return localName; + } + + // End of local name (note that we don’t expect another colon, or a member). + if (code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + effects.exit(tagNameLocalType); + returnState = localNameAfter; + return esWhitespaceStart(code); + } + crash(code, 'in local name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag'); + } + + /** + * After local name. + * + * This is like as `primary_name_after`, but we don’t expect colons or + * periods. + * + * ```markdown + * > | a <b.c> d + * ^ + * > | a <b.c.d> e + * ^ + * ``` + * + * @type {State} + */ + function localNameAfter(code) { + // End of name. + if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { + effects.exit(tagNameType); + return attributeBefore(code); + } + crash(code, 'after local name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); + } + + /** + * Before attribute. + * + * ```markdown + * > | a <b /> c + * ^ + * > | a <b > c + * ^ + * > | a <b {...c}> d + * ^ + * > | a <b c> d + * ^ + * ``` + * + * @type {State} + */ + function attributeBefore(code) { + // Self-closing. + if (code === 47) { + effects.enter(tagSelfClosingMarker); + effects.consume(code); + effects.exit(tagSelfClosingMarker); + returnState = selfClosing; + return esWhitespaceStart; + } + + // End of tag. + if (code === 62) { + return tagEnd(code); + } + + // Attribute expression. + if (code === 123) { + return factoryMdxExpression.call(self, effects, attributeExpressionAfter, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, acorn, acornOptions, addResult, true, false, allowLazy)(code); + } + + // Start of an attribute name. + if (code !== null && code >= 0 && lib_start(code)) { + effects.enter(tagAttributeType); + effects.enter(tagAttributeNameType); + effects.enter(tagAttributeNamePrimaryType); + effects.consume(code); + return attributePrimaryName; + } + crash(code, 'before attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); + } + + /** + * After attribute expression. + * + * ```markdown + * > | a <b {c} d/> e + * ^ + * ``` + * + * @type {State} + */ + function attributeExpressionAfter(code) { + returnState = attributeBefore; + return esWhitespaceStart(code); + } + + /** + * In primary attribute name. + * + * ```markdown + * > | a <b cd/> e + * ^ + * > | a <b c:d> e + * ^ + * > | a <b c=d> e + * ^ + * ``` + * + * @type {State} + */ + function attributePrimaryName(code) { + // Continuation of name: remain. + if (code !== null && code >= 0 && cont(code, { + jsx: true + })) { + effects.consume(code); + return attributePrimaryName; + } + + // End of attribute name or tag. + if (code === 47 || code === 58 || code === 61 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + effects.exit(tagAttributeNamePrimaryType); + returnState = attributePrimaryNameAfter; + return esWhitespaceStart(code); + } + crash(code, 'in attribute name', 'an attribute name character such as letters, digits, `$`, or `_`; `=` to initialize a value; whitespace before attributes; or the end of the tag'); + } + + /** + * After primary attribute name. + * + * ```markdown + * > | a <b c/> d + * ^ + * > | a <b c:d> e + * ^ + * > | a <b c=d> e + * ^ + * ``` + * + * @type {State} + */ + function attributePrimaryNameAfter(code) { + // Start of a local name. + if (code === 58) { + effects.enter(tagAttributeNamePrefixMarkerType); + effects.consume(code); + effects.exit(tagAttributeNamePrefixMarkerType); + returnState = attributeLocalNameBefore; + return esWhitespaceStart; + } + + // Initializer: start of an attribute value. + if (code === 61) { + effects.exit(tagAttributeNameType); + effects.enter(tagAttributeInitializerMarkerType); + effects.consume(code); + effects.exit(tagAttributeInitializerMarkerType); + returnState = attributeValueBefore; + return esWhitespaceStart; + } + + // End of tag / new attribute. + if (code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== null && code >= 0 && lib_start(code)) { + effects.exit(tagAttributeNameType); + effects.exit(tagAttributeType); + returnState = attributeBefore; + return esWhitespaceStart(code); + } + crash(code, 'after attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag'); + } + + /** + * Before local attribute name. + * + * ```markdown + * > | a <b c:d/> e + * ^ + * ``` + * + * @type {State} + */ + function attributeLocalNameBefore(code) { + // Start of a local name. + if (code !== null && code >= 0 && lib_start(code)) { + effects.enter(tagAttributeNameLocalType); + effects.consume(code); + return attributeLocalName; + } + crash(code, 'before local attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag'); + } + + /** + * In local attribute name. + * + * ```markdown + * > | a <b c:de/> f + * ^ + * > | a <b c:d=e/> f + * ^ + * ``` + * + * @type {State} + */ + function attributeLocalName(code) { + // Continuation of name: remain. + if (code !== null && code >= 0 && cont(code, { + jsx: true + })) { + effects.consume(code); + return attributeLocalName; + } + + // End of local name (note that we don’t expect another colon). + if (code === 47 || code === 61 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { + effects.exit(tagAttributeNameLocalType); + effects.exit(tagAttributeNameType); + returnState = attributeLocalNameAfter; + return esWhitespaceStart(code); + } + crash(code, 'in local attribute name', 'an attribute name character such as letters, digits, `$`, or `_`; `=` to initialize a value; whitespace before attributes; or the end of the tag'); + } + + /** + * After local attribute name. + * + * ```markdown + * > | a <b c:d/> f + * ^ + * > | a <b c:d=e/> f + * ^ + * ``` + * + * @type {State} + */ + function attributeLocalNameAfter(code) { + // Start of an attribute value. + if (code === 61) { + effects.enter(tagAttributeInitializerMarkerType); + effects.consume(code); + effects.exit(tagAttributeInitializerMarkerType); + returnState = attributeValueBefore; + return esWhitespaceStart; + } + + // End of name. + if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { + effects.exit(tagAttributeType); + return attributeBefore(code); + } + crash(code, 'after local attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag'); + } + + /** + * After `=`, before value. + * + * ```markdown + * > | a <b c="d"/> e + * ^ + * > | a <b c={d}/> e + * ^ + * ``` + * + * @type {State} + */ + function attributeValueBefore(code) { + // Start of double- or single quoted value. + if (code === 34 || code === 39) { + effects.enter(tagAttributeValueLiteralType); + effects.enter(tagAttributeValueLiteralMarkerType); + effects.consume(code); + effects.exit(tagAttributeValueLiteralMarkerType); + marker = code; + return attributeValueQuotedStart; + } + + // Attribute value expression. + if (code === 123) { + return factoryMdxExpression.call(self, effects, attributeValueExpressionAfter, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType, acorn, acornOptions, addResult, false, false, allowLazy)(code); + } + crash(code, 'before attribute value', 'a character that can start an attribute value, such as `"`, `\'`, or `{`' + (code === 60 ? ' (note: to use an element or fragment as a prop value in MDX, use `{<element />}`)' : '')); + } + + /** + * After attribute value expression. + * + * ```markdown + * > | a <b c={d} e/> f + * ^ + * ``` + * + * @type {State} + */ + function attributeValueExpressionAfter(code) { + effects.exit(tagAttributeType); + returnState = attributeBefore; + return esWhitespaceStart(code); + } + + /** + * Before quoted literal attribute value. + * + * ```markdown + * > | a <b c="d"/> e + * ^ + * ``` + * + * @type {State} + */ + function attributeValueQuotedStart(code) { + if (code === null) { + crash(code, 'in attribute value', 'a corresponding closing quote `' + String.fromCodePoint(marker) + '`'); + } + if (code === marker) { + effects.enter(tagAttributeValueLiteralMarkerType); + effects.consume(code); + effects.exit(tagAttributeValueLiteralMarkerType); + effects.exit(tagAttributeValueLiteralType); + effects.exit(tagAttributeType); + marker = undefined; + returnState = attributeBefore; + return esWhitespaceStart; + } + if (markdownLineEnding(code)) { + returnState = attributeValueQuotedStart; + return esWhitespaceStart(code); + } + effects.enter(tagAttributeValueLiteralValueType); + return attributeValueQuoted(code); + } + + /** + * In quoted literal attribute value. + * + * ```markdown + * > | a <b c="d"/> e + * ^ + * ``` + * + * @type {State} + */ + function attributeValueQuoted(code) { + if (code === null || code === marker || markdownLineEnding(code)) { + effects.exit(tagAttributeValueLiteralValueType); + return attributeValueQuotedStart(code); + } + effects.consume(code); + return attributeValueQuoted; + } + + /** + * After self-closing slash. + * + * ```markdown + * > | a <b/> c + * ^ + * ``` + * + * @type {State} + */ + function selfClosing(code) { + if (code === 62) { + return tagEnd(code); + } + crash(code, 'after self-closing slash', '`>` to end the tag' + (code === 42 || code === 47 ? ' (note: JS comments in JSX tags are not supported in MDX)' : '')); + } + + /** + * At final `>`. + * + * ```markdown + * > | a <b> c + * ^ + * ``` + * + * @type {State} + */ + function tagEnd(code) { + effects.enter(tagMarkerType); + effects.consume(code); + effects.exit(tagMarkerType); + effects.exit(tagType); + return ok; + } + + /** + * Before optional ECMAScript whitespace. + * + * ```markdown + * > | a <a b> c + * ^ + * ``` + * + * @type {State} + */ + function esWhitespaceStart(code) { + if (markdownLineEnding(code)) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return esWhitespaceEolAfter; + } + if (markdownSpace(code) || unicodeWhitespace(code)) { + effects.enter('esWhitespace'); + return esWhitespaceInside(code); + } + return returnState(code); + } + + /** + * In ECMAScript whitespace. + * + * ```markdown + * > | a <a b> c + * ^ + * ``` + * + * @type {State} + */ + function esWhitespaceInside(code) { + if (markdownLineEnding(code)) { + effects.exit('esWhitespace'); + return esWhitespaceStart(code); + } + if (markdownSpace(code) || unicodeWhitespace(code)) { + effects.consume(code); + return esWhitespaceInside; + } + effects.exit('esWhitespace'); + return returnState(code); + } + + /** + * After eol in whitespace. + * + * ```markdown + * > | a <a\nb> c + * ^ + * ``` + * + * @type {State} + */ + function esWhitespaceEolAfter(code) { + // Lazy continuation in a flow tag is a syntax error. + if (!allowLazy && self.parser.lazy[self.now().line]) { + const error = new VFileMessage('Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc', self.now(), 'micromark-extension-mdx-jsx:unexpected-lazy'); + error.url = factory_tag_trouble + '#unexpected-lazy-line-in-container-expected-line-to-be'; + throw error; + } + return esWhitespaceStart(code); } - this._reopening = true - - if (this._writing) { - return + /** + * Crash at a nonconforming character. + * + * @param {Code} code + * @param {string} at + * @param {string} expect + */ + function crash(code, at, expect) { + const error = new VFileMessage('Unexpected ' + (code === null ? 'end of file' : 'character `' + (code === 96 ? '` ` `' : String.fromCodePoint(code)) + '` (' + serializeCharCode(code) + ')') + ' ' + at + ', expected ' + expect, self.now(), 'micromark-extension-mdx-jsx:unexpected-' + (code === null ? 'eof' : 'character')); + error.url = factory_tag_trouble + (code === null ? '#unexpected-end-of-file-at-expected-expect' : '#unexpected-character-at-expected-expect'); + throw error; } +} - const fd = this.fd - this.once('ready', () => { - if (fd !== this.fd) { - fs.close(fd, (err) => { - if (err) { - return this.emit('error', err) - } - }) - } - }) - - openFile(file || this.file, this) +/** + * @param {NonNullable<Code>} code + * @returns {string} + */ +function serializeCharCode(code) { + return 'U+' + code.toString(16).toUpperCase().padStart(4, '0'); } +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/jsx-text.js +/** + * @import {Options} from 'micromark-extension-mdx-jsx' + * @import {Acorn} from 'micromark-util-events-to-acorn' + * @import {Construct, TokenizeContext, Tokenizer} from 'micromark-util-types' + */ -SonicBoom.prototype.end = function () { - if (this.destroyed) { - throw new Error('SonicBoom destroyed') - } - if (this._opening) { - this.once('ready', () => { - this.end() - }) - return - } - if (this._ending) { - return - } +/** + * Parse JSX (text). + * + * @param {Acorn | undefined} acorn + * Acorn parser to use (optional). + * @param {Options} options + * Configuration. + * @returns {Construct} + * Construct. + */ +function jsxText(acorn, options) { + return { + name: 'mdxJsxTextTag', + tokenize: tokenizeJsxText + }; - this._ending = true + /** + * MDX JSX (text). + * + * ```markdown + * > | a <b />. + * ^^^^^ + * ``` + * + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeJsxText(effects, ok, nok) { + return factoryTag.call(this, effects, ok, nok, acorn, options.acornOptions, options.addResult, true, 'mdxJsxTextTag', 'mdxJsxTextTagMarker', 'mdxJsxTextTagClosingMarker', 'mdxJsxTextTagSelfClosingMarker', 'mdxJsxTextTagName', 'mdxJsxTextTagNamePrimary', 'mdxJsxTextTagNameMemberMarker', 'mdxJsxTextTagNameMember', 'mdxJsxTextTagNamePrefixMarker', 'mdxJsxTextTagNameLocal', 'mdxJsxTextTagExpressionAttribute', 'mdxJsxTextTagExpressionAttributeMarker', 'mdxJsxTextTagExpressionAttributeValue', 'mdxJsxTextTagAttribute', 'mdxJsxTextTagAttributeName', 'mdxJsxTextTagAttributeNamePrimary', 'mdxJsxTextTagAttributeNamePrefixMarker', 'mdxJsxTextTagAttributeNameLocal', 'mdxJsxTextTagAttributeInitializerMarker', 'mdxJsxTextTagAttributeValueLiteral', 'mdxJsxTextTagAttributeValueLiteralMarker', 'mdxJsxTextTagAttributeValueLiteralValue', 'mdxJsxTextTagAttributeValueExpression', 'mdxJsxTextTagAttributeValueExpressionMarker', 'mdxJsxTextTagAttributeValueExpressionValue'); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/jsx-flow.js +/** + * @import {Options} from 'micromark-extension-mdx-jsx' + * @import {Acorn} from 'micromark-util-events-to-acorn' + * @import {Construct, State, TokenizeContext, Tokenizer} from 'micromark-util-types' + */ - if (this._writing) { - return - } - if (this._len > 0 && this.fd >= 0) { - actualWrite(this) - } else { - actualClose(this) - } -} -SonicBoom.prototype.flushSync = function () { - if (this.destroyed) { - throw new Error('SonicBoom destroyed') - } - if (this.fd < 0) { - throw new Error('sonic boom is not ready yet') - } - if (!this._writing && this._writingBuf.length > 0) { - this._bufs.unshift(this._writingBuf) - this._writingBuf = '' - } +/** + * Parse JSX (flow). + * + * @param {Acorn | undefined} acorn + * Acorn parser to use (optional). + * @param {Options} options + * Configuration. + * @returns {Construct} + * Construct. + */ +function jsxFlow(acorn, options) { + return { + concrete: true, + name: 'mdxJsxFlowTag', + tokenize: tokenizeJsxFlow + }; - while (this._bufs.length) { - const buf = this._bufs[0] - try { - this._len -= fs.writeSync(this.fd, buf, 'utf8') - this._bufs.shift() - } catch (err) { - if (err.code !== 'EAGAIN' || !this.retryEAGAIN(err, buf.length, this._len - buf.length)) { - throw err - } + /** + * MDX JSX (flow). + * + * ```markdown + * > | <A /> + * ^^^^^ + * ``` + * + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeJsxFlow(effects, ok, nok) { + const self = this; + return start; + + /** + * Start of MDX: JSX (flow). + * + * ```markdown + * > | <A /> + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // To do: in `markdown-rs`, constructs need to parse the indent themselves. + // This should also be introduced in `micromark-js`. - sleep(BUSY_WRITE_TIMEOUT) + return before(code); } - } -} -SonicBoom.prototype.destroy = function () { - if (this.destroyed) { - return - } - actualClose(this) -} + /** + * After optional whitespace, before of MDX JSX (flow). + * + * ```markdown + * > | <A /> + * ^ + * ``` + * + * @type {State} + */ + function before(code) { + return factoryTag.call(self, effects, after, nok, acorn, options.acornOptions, options.addResult, false, 'mdxJsxFlowTag', 'mdxJsxFlowTagMarker', 'mdxJsxFlowTagClosingMarker', 'mdxJsxFlowTagSelfClosingMarker', 'mdxJsxFlowTagName', 'mdxJsxFlowTagNamePrimary', 'mdxJsxFlowTagNameMemberMarker', 'mdxJsxFlowTagNameMember', 'mdxJsxFlowTagNamePrefixMarker', 'mdxJsxFlowTagNameLocal', 'mdxJsxFlowTagExpressionAttribute', 'mdxJsxFlowTagExpressionAttributeMarker', 'mdxJsxFlowTagExpressionAttributeValue', 'mdxJsxFlowTagAttribute', 'mdxJsxFlowTagAttributeName', 'mdxJsxFlowTagAttributeNamePrimary', 'mdxJsxFlowTagAttributeNamePrefixMarker', 'mdxJsxFlowTagAttributeNameLocal', 'mdxJsxFlowTagAttributeInitializerMarker', 'mdxJsxFlowTagAttributeValueLiteral', 'mdxJsxFlowTagAttributeValueLiteralMarker', 'mdxJsxFlowTagAttributeValueLiteralValue', 'mdxJsxFlowTagAttributeValueExpression', 'mdxJsxFlowTagAttributeValueExpressionMarker', 'mdxJsxFlowTagAttributeValueExpressionValue')(code); + } -function actualWrite (sonic) { - const release = sonic.release - sonic._writing = true - sonic._writingBuf = sonic._writingBuf || sonic._bufs.shift() || '' + /** + * After an MDX JSX (flow) tag. + * + * ```markdown + * > | <A> + * ^ + * ``` + * + * @type {State} + */ + function after(code) { + return markdownSpace(code) ? factorySpace(effects, end, "whitespace")(code) : end(code); + } - if (sonic.sync) { - try { - const written = fs.writeSync(sonic.fd, sonic._writingBuf, 'utf8') - release(null, written) - } catch (err) { - release(err) + /** + * After an MDX JSX (flow) tag, after optional whitespace. + * + * ```markdown + * > | <A> <B> + * ^ + * ``` + * + * @type {State} + */ + function end(code) { + // We want to allow expressions directly after tags. + // See <https://github.com/micromark/micromark-extension-mdx-expression/blob/d5d92b9/packages/micromark-extension-mdx-expression/dev/lib/syntax.js#L183> + // for more info. + const leftBraceValue = self.parser.constructs.flow[123]; + /* c8 ignore next 5 -- always a list when normalized. */ + const constructs = Array.isArray(leftBraceValue) ? leftBraceValue : leftBraceValue ? [leftBraceValue] : []; + /** @type {Construct | undefined} */ + let expression; + for (const construct of constructs) { + if (construct.name === 'mdxFlowExpression') { + expression = construct; + break; + } + } + + // Another tag. + return code === 60 ? + // We can’t just say: fine. Lines of blocks have to be parsed until an eol/eof. + start(code) : code === 123 && expression ? effects.attempt(expression, end, nok)(code) : code === null || markdownLineEnding(code) ? ok(code) : nok(code); } - } else { - fs.write(sonic.fd, sonic._writingBuf, 'utf8', release) } } +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/syntax.js +/** + * @import {Options} from 'micromark-extension-mdx-jsx' + * @import {AcornOptions} from 'micromark-util-events-to-acorn' + * @import {Extension} from 'micromark-util-types' + */ -function actualClose (sonic) { - if (sonic.fd === -1) { - sonic.once('ready', actualClose.bind(null, sonic)) - return - } - sonic.destroyed = true - sonic._bufs = [] - if (sonic.fd !== 1 && sonic.fd !== 2) { - fs.close(sonic.fd, done) - } else { - setImmediate(done) - } - function done (err) { - if (err) { - sonic.emit('error', err) - return +/** + * Create an extension for `micromark` to enable MDX JSX syntax. + * + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {Extension} + * Extension for `micromark` that can be passed in `extensions` to enable MDX + * JSX syntax. + */ +function mdxJsx(options) { + const settings = options || {}; + const acorn = settings.acorn; + /** @type {AcornOptions | undefined} */ + let acornOptions; + if (acorn) { + if (!acorn.parse || !acorn.parseExpressionAt) { + throw new Error('Expected a proper `acorn` instance passed in as `options.acorn`'); + } + acornOptions = Object.assign({ + ecmaVersion: 2024, + sourceType: 'module' + }, settings.acornOptions, { + locations: true + }); + } else if (settings.acornOptions || settings.addResult) { + throw new Error('Expected an `acorn` instance passed in as `options.acorn`'); + } + return { + flow: { + [60]: jsxFlow(acorn || undefined, { + acornOptions, + addResult: settings.addResult || undefined + }) + }, + text: { + [60]: jsxText(acorn || undefined, { + acornOptions, + addResult: settings.addResult || undefined + }) } + }; +} +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-md/index.js +/** + * @typedef {import('micromark-util-types').Extension} Extension + */ - if (sonic._ending && !sonic._writing) { - sonic.emit('finish') - } - sonic.emit('close') +/** + * Create an extension for `micromark` to disable some CommonMark syntax (code + * (indented), autolinks, and HTML (flow and text)) for MDX. + * + * @returns {Extension} + * Extension for `micromark` that can be passed in `extensions` to disable + * some CommonMark syntax for MDX. + */ +function mdxMd() { + return { + disable: {null: ['autolink', 'codeIndented', 'htmlFlow', 'htmlText']} } } +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdxjs-esm/lib/syntax.js /** - * These export configurations enable JS and TS developers - * to consumer SonicBoom in whatever way best suits their needs. - * Some examples of supported import syntax includes: - * - `const SonicBoom = require('SonicBoom')` - * - `const { SonicBoom } = require('SonicBoom')` - * - `import * as SonicBoom from 'SonicBoom'` - * - `import { SonicBoom } from 'SonicBoom'` - * - `import SonicBoom from 'SonicBoom'` + * @typedef {import('micromark-util-events-to-acorn').Acorn} Acorn + * @typedef {import('micromark-util-events-to-acorn').AcornOptions} AcornOptions + * @typedef {import('micromark-util-types').Extension} Extension + * @typedef {import('micromark-util-types').State} State + * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext + * @typedef {import('micromark-util-types').Tokenizer} Tokenizer */ -SonicBoom.SonicBoom = SonicBoom -SonicBoom.default = SonicBoom -module.exports = SonicBoom +/** + * @typedef Options + * Configuration (required). + * @property {Acorn} acorn + * Acorn parser to use (required). + * @property {AcornOptions | null | undefined} [acornOptions] + * Configuration for acorn (default: `{ecmaVersion: 2024, locations: true, + * sourceType: 'module'}`); all fields except `locations` can be set. + * @property {boolean | null | undefined} [addResult=false] + * Whether to add `estree` fields to tokens with results from acorn + * (default: `false`). + */ -/***/ }), -/***/ 65595: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -var tty = __nccwpck_require__(76224); - -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { return e[k]; } - }); - } - }); - } - n["default"] = e; - return Object.freeze(n); -} - -var tty__namespace = /*#__PURE__*/_interopNamespace(tty); - -const env = process.env || {}; -const argv = process.argv || []; - -const isDisabled = "NO_COLOR" in env || argv.includes("--no-color"); -const isForced = "FORCE_COLOR" in env || argv.includes("--color"); -const isWindows = process.platform === "win32"; - -const isCompatibleTerminal = - tty__namespace && tty__namespace.isatty && tty__namespace.isatty(1) && env.TERM && env.TERM !== "dumb"; - -const isCI = - "CI" in env && - ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env); - -const isColorSupported = - !isDisabled && (isForced || isWindows || isCompatibleTerminal || isCI); - -const replaceClose = ( - index, - string, - close, - replace, - head = string.substring(0, index) + replace, - tail = string.substring(index + close.length), - next = tail.indexOf(close) -) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace)); - -const clearBleed = (index, string, open, close, replace) => - index < 0 - ? open + string + close - : open + replaceClose(index, string, close, replace) + close; - -const filterEmpty = - (open, close, replace = open, at = open.length + 1) => - (string) => - string || !(string === "" || string === undefined) - ? clearBleed( - ("" + string).indexOf(close, at), - string, - open, - close, - replace - ) - : ""; - -const init = (open, close, replace) => - filterEmpty(`\x1b[${open}m`, `\x1b[${close}m`, replace); - -const colors = { - reset: init(0, 0), - bold: init(1, 22, "\x1b[22m\x1b[1m"), - dim: init(2, 22, "\x1b[22m\x1b[2m"), - italic: init(3, 23), - underline: init(4, 24), - inverse: init(7, 27), - hidden: init(8, 28), - strikethrough: init(9, 29), - black: init(30, 39), - red: init(31, 39), - green: init(32, 39), - yellow: init(33, 39), - blue: init(34, 39), - magenta: init(35, 39), - cyan: init(36, 39), - white: init(37, 39), - gray: init(90, 39), - bgBlack: init(40, 49), - bgRed: init(41, 49), - bgGreen: init(42, 49), - bgYellow: init(43, 49), - bgBlue: init(44, 49), - bgMagenta: init(45, 49), - bgCyan: init(46, 49), - bgWhite: init(47, 49), - blackBright: init(90, 39), - redBright: init(91, 39), - greenBright: init(92, 39), - yellowBright: init(93, 39), - blueBright: init(94, 39), - magentaBright: init(95, 39), - cyanBright: init(96, 39), - whiteBright: init(97, 39), - bgBlackBright: init(100, 49), - bgRedBright: init(101, 49), - bgGreenBright: init(102, 49), - bgYellowBright: init(103, 49), - bgBlueBright: init(104, 49), - bgMagentaBright: init(105, 49), - bgCyanBright: init(106, 49), - bgWhiteBright: init(107, 49), +const syntax_blankLineBefore = { + tokenize: tokenizeNextBlank, + partial: true }; +const syntax_trouble = 'https://github.com/micromark/micromark-extension-mdxjs-esm'; +const allowedAcornTypes = new Set(['ExportAllDeclaration', 'ExportDefaultDeclaration', 'ExportNamedDeclaration', 'ImportDeclaration']); -const none = (any) => any; - -const createColors = ({ useColor = isColorSupported } = {}) => - useColor - ? colors - : Object.keys(colors).reduce( - (colors, key) => ({ ...colors, [key]: none }), - {} - ); - -const { - reset, - bold, - dim, - italic, - underline, - inverse, - hidden, - strikethrough, - black, - red, - green, - yellow, - blue, - magenta, - cyan, - white, - gray, - bgBlack, - bgRed, - bgGreen, - bgYellow, - bgBlue, - bgMagenta, - bgCyan, - bgWhite, - blackBright, - redBright, - greenBright, - yellowBright, - blueBright, - magentaBright, - cyanBright, - whiteBright, - bgBlackBright, - bgRedBright, - bgGreenBright, - bgYellowBright, - bgBlueBright, - bgMagentaBright, - bgCyanBright, - bgWhiteBright, -} = createColors(); - -exports.bgBlack = bgBlack; -exports.bgBlackBright = bgBlackBright; -exports.bgBlue = bgBlue; -exports.bgBlueBright = bgBlueBright; -exports.bgCyan = bgCyan; -exports.bgCyanBright = bgCyanBright; -exports.bgGreen = bgGreen; -exports.bgGreenBright = bgGreenBright; -exports.bgMagenta = bgMagenta; -exports.bgMagentaBright = bgMagentaBright; -exports.bgRed = bgRed; -exports.bgRedBright = bgRedBright; -exports.bgWhite = bgWhite; -exports.bgWhiteBright = bgWhiteBright; -exports.bgYellow = bgYellow; -exports.bgYellowBright = bgYellowBright; -exports.black = black; -exports.blackBright = blackBright; -exports.blue = blue; -exports.blueBright = blueBright; -exports.bold = bold; -exports.createColors = createColors; -exports.cyan = cyan; -exports.cyanBright = cyanBright; -exports.dim = dim; -exports.gray = gray; -exports.green = green; -exports.greenBright = greenBright; -exports.hidden = hidden; -exports.inverse = inverse; -exports.isColorSupported = isColorSupported; -exports.italic = italic; -exports.magenta = magenta; -exports.magentaBright = magentaBright; -exports.red = red; -exports.redBright = redBright; -exports.reset = reset; -exports.strikethrough = strikethrough; -exports.underline = underline; -exports.white = white; -exports.whiteBright = whiteBright; -exports.yellow = yellow; -exports.yellowBright = yellowBright; - - -/***/ }), - -/***/ 83352: -/***/ ((module) => { - -"use strict"; -module.exports = JSON.parse('{"name":"@babel/core","version":"7.12.9","description":"Babel compiler core.","main":"lib/index.js","author":"Sebastian McKenzie <sebmck@gmail.com>","homepage":"https://babeljs.io/","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-core"},"keywords":["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core","compiler"],"engines":{"node":">=6.9.0"},"funding":{"type":"opencollective","url":"https://opencollective.com/babel"},"browser":{"./lib/config/files/index.js":"./lib/config/files/index-browser.js","./lib/transform-file.js":"./lib/transform-file-browser.js","./src/config/files/index.js":"./src/config/files/index-browser.js","./src/transform-file.js":"./src/transform-file-browser.js"},"dependencies":{"@babel/code-frame":"^7.10.4","@babel/generator":"^7.12.5","@babel/helper-module-transforms":"^7.12.1","@babel/helpers":"^7.12.5","@babel/parser":"^7.12.7","@babel/template":"^7.12.7","@babel/traverse":"^7.12.9","@babel/types":"^7.12.7","convert-source-map":"^1.7.0","debug":"^4.1.0","gensync":"^1.0.0-beta.1","json5":"^2.1.2","lodash":"^4.17.19","resolve":"^1.3.2","semver":"^5.4.1","source-map":"^0.5.0"},"devDependencies":{"@babel/helper-transform-fixture-test-runner":"7.12.1"}}'); - -/***/ }), - -/***/ 22017: -/***/ ((module) => { +/** + * Create an extension for `micromark` to enable MDX ESM syntax. + * + * @param {Options} options + * Configuration (required). + * @returns {Extension} + * Extension for `micromark` that can be passed in `extensions` to enable MDX + * ESM syntax. + */ +function mdxjsEsm(options) { + const exportImportConstruct = { + tokenize: tokenizeExportImport, + concrete: true + }; + if (!options || !options.acorn || !options.acorn.parse) { + throw new Error('Expected an `acorn` instance passed in as `options.acorn`'); + } + const acorn = options.acorn; + const acornOptions = Object.assign({ + ecmaVersion: 2024, + sourceType: 'module' + }, options.acornOptions, { + locations: true + }); + return { + flow: { + [101]: exportImportConstruct, + [105]: exportImportConstruct + } + }; -"use strict"; -module.exports = JSON.parse('{"nbsp":" ","iexcl":"¡","cent":"¢","pound":"£","curren":"¤","yen":"¥","brvbar":"¦","sect":"§","uml":"¨","copy":"©","ordf":"ª","laquo":"«","not":"¬","shy":"­","reg":"®","macr":"¯","deg":"°","plusmn":"±","sup2":"²","sup3":"³","acute":"´","micro":"µ","para":"¶","middot":"·","cedil":"¸","sup1":"¹","ordm":"º","raquo":"»","frac14":"¼","frac12":"½","frac34":"¾","iquest":"¿","Agrave":"À","Aacute":"Á","Acirc":"Â","Atilde":"Ã","Auml":"Ä","Aring":"Å","AElig":"Æ","Ccedil":"Ç","Egrave":"È","Eacute":"É","Ecirc":"Ê","Euml":"Ë","Igrave":"Ì","Iacute":"Í","Icirc":"Î","Iuml":"Ï","ETH":"Ð","Ntilde":"Ñ","Ograve":"Ò","Oacute":"Ó","Ocirc":"Ô","Otilde":"Õ","Ouml":"Ö","times":"×","Oslash":"Ø","Ugrave":"Ù","Uacute":"Ú","Ucirc":"Û","Uuml":"Ü","Yacute":"Ý","THORN":"Þ","szlig":"ß","agrave":"à","aacute":"á","acirc":"â","atilde":"ã","auml":"ä","aring":"å","aelig":"æ","ccedil":"ç","egrave":"è","eacute":"é","ecirc":"ê","euml":"ë","igrave":"ì","iacute":"í","icirc":"î","iuml":"ï","eth":"ð","ntilde":"ñ","ograve":"ò","oacute":"ó","ocirc":"ô","otilde":"õ","ouml":"ö","divide":"÷","oslash":"ø","ugrave":"ù","uacute":"ú","ucirc":"û","uuml":"ü","yacute":"ý","thorn":"þ","yuml":"ÿ","fnof":"ƒ","Alpha":"Α","Beta":"Β","Gamma":"Γ","Delta":"Δ","Epsilon":"Ε","Zeta":"Ζ","Eta":"Η","Theta":"Θ","Iota":"Ι","Kappa":"Κ","Lambda":"Λ","Mu":"Μ","Nu":"Ν","Xi":"Ξ","Omicron":"Ο","Pi":"Π","Rho":"Ρ","Sigma":"Σ","Tau":"Τ","Upsilon":"Υ","Phi":"Φ","Chi":"Χ","Psi":"Ψ","Omega":"Ω","alpha":"α","beta":"β","gamma":"γ","delta":"δ","epsilon":"ε","zeta":"ζ","eta":"η","theta":"θ","iota":"ι","kappa":"κ","lambda":"λ","mu":"μ","nu":"ν","xi":"ξ","omicron":"ο","pi":"π","rho":"ρ","sigmaf":"ς","sigma":"σ","tau":"τ","upsilon":"υ","phi":"φ","chi":"χ","psi":"ψ","omega":"ω","thetasym":"ϑ","upsih":"ϒ","piv":"ϖ","bull":"•","hellip":"…","prime":"′","Prime":"″","oline":"‾","frasl":"⁄","weierp":"℘","image":"ℑ","real":"ℜ","trade":"™","alefsym":"ℵ","larr":"←","uarr":"↑","rarr":"→","darr":"↓","harr":"↔","crarr":"↵","lArr":"⇐","uArr":"⇑","rArr":"⇒","dArr":"⇓","hArr":"⇔","forall":"∀","part":"∂","exist":"∃","empty":"∅","nabla":"∇","isin":"∈","notin":"∉","ni":"∋","prod":"∏","sum":"∑","minus":"−","lowast":"∗","radic":"√","prop":"∝","infin":"∞","ang":"∠","and":"∧","or":"∨","cap":"∩","cup":"∪","int":"∫","there4":"∴","sim":"∼","cong":"≅","asymp":"≈","ne":"≠","equiv":"≡","le":"≤","ge":"≥","sub":"⊂","sup":"⊃","nsub":"⊄","sube":"⊆","supe":"⊇","oplus":"⊕","otimes":"⊗","perp":"⊥","sdot":"⋅","lceil":"⌈","rceil":"⌉","lfloor":"⌊","rfloor":"⌋","lang":"〈","rang":"〉","loz":"◊","spades":"♠","clubs":"♣","hearts":"♥","diams":"♦","quot":"\\"","amp":"&","lt":"<","gt":">","OElig":"Œ","oelig":"œ","Scaron":"Š","scaron":"š","Yuml":"Ÿ","circ":"ˆ","tilde":"˜","ensp":" ","emsp":" ","thinsp":" ","zwnj":"‌","zwj":"‍","lrm":"‎","rlm":"‏","ndash":"–","mdash":"—","lsquo":"‘","rsquo":"’","sbquo":"‚","ldquo":"“","rdquo":"”","bdquo":"„","dagger":"†","Dagger":"‡","permil":"‰","lsaquo":"‹","rsaquo":"›","euro":"€"}'); + /** + * @this {TokenizeContext} + * @type {Tokenizer} + */ + function tokenizeExportImport(effects, ok, nok) { + const self = this; + const definedModuleSpecifiers = self.parser.definedModuleSpecifiers || (self.parser.definedModuleSpecifiers = []); + const eventStart = this.events.length + 1; // Add the main `mdxjsEsm` token + let buffer = ''; + return self.interrupt ? nok : start; -/***/ }), + /** + * Start of MDX ESM. + * + * ```markdown + * > | import a from 'b' + * ^ + * ``` + * + * @type {State} + */ + function start(code) { + // Only at the start of a line, not at whitespace or in a container. + if (self.now().column > 1) return nok(code); + effects.enter('mdxjsEsm'); + effects.enter('mdxjsEsmData'); + effects.consume(code); + // eslint-disable-next-line unicorn/prefer-code-point + buffer += String.fromCharCode(code); + return word; + } -/***/ 93562: -/***/ ((module) => { + /** + * In keyword. + * + * ```markdown + * > | import a from 'b' + * ^^^^^^ + * ``` + * + * @type {State} + */ + function word(code) { + if (asciiAlpha(code)) { + effects.consume(code); + // @ts-expect-error: definitely a number. + // eslint-disable-next-line unicorn/prefer-code-point + buffer += String.fromCharCode(code); + return word; + } + if ((buffer === 'import' || buffer === 'export') && code === 32) { + effects.consume(code); + return inside; + } + return nok(code); + } -"use strict"; -module.exports = JSON.parse('{"AElig":"Æ","AMP":"&","Aacute":"Á","Acirc":"Â","Agrave":"À","Aring":"Å","Atilde":"Ã","Auml":"Ä","COPY":"©","Ccedil":"Ç","ETH":"Ð","Eacute":"É","Ecirc":"Ê","Egrave":"È","Euml":"Ë","GT":">","Iacute":"Í","Icirc":"Î","Igrave":"Ì","Iuml":"Ï","LT":"<","Ntilde":"Ñ","Oacute":"Ó","Ocirc":"Ô","Ograve":"Ò","Oslash":"Ø","Otilde":"Õ","Ouml":"Ö","QUOT":"\\"","REG":"®","THORN":"Þ","Uacute":"Ú","Ucirc":"Û","Ugrave":"Ù","Uuml":"Ü","Yacute":"Ý","aacute":"á","acirc":"â","acute":"´","aelig":"æ","agrave":"à","amp":"&","aring":"å","atilde":"ã","auml":"ä","brvbar":"¦","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","curren":"¤","deg":"°","divide":"÷","eacute":"é","ecirc":"ê","egrave":"è","eth":"ð","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","iacute":"í","icirc":"î","iexcl":"¡","igrave":"ì","iquest":"¿","iuml":"ï","laquo":"«","lt":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","ntilde":"ñ","oacute":"ó","ocirc":"ô","ograve":"ò","ordf":"ª","ordm":"º","oslash":"ø","otilde":"õ","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","raquo":"»","reg":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","thorn":"þ","times":"×","uacute":"ú","ucirc":"û","ugrave":"ù","uml":"¨","uuml":"ü","yacute":"ý","yen":"¥","yuml":"ÿ"}'); + /** + * In data. + * + * ```markdown + * > | import a from 'b' + * ^ + * ``` + * + * @type {State} + */ + function inside(code) { + if (code === null || markdownLineEnding(code)) { + effects.exit('mdxjsEsmData'); + return lineStart(code); + } + effects.consume(code); + return inside; + } -/***/ }), + /** + * At line ending. + * + * ```markdown + * > | import a from 'b' + * ^ + * | export {a} + * ``` + * + * @type {State} + */ + function lineStart(code) { + if (code === null) { + return atEnd(code); + } + if (markdownLineEnding(code)) { + return effects.check(syntax_blankLineBefore, atEnd, continuationStart)(code); + } + effects.enter('mdxjsEsmData'); + return inside(code); + } -/***/ 45129: -/***/ ((module) => { + /** + * At line ending that continues. + * + * ```markdown + * > | import a from 'b' + * ^ + * | export {a} + * ``` + * + * @type {State} + */ + function continuationStart(code) { + effects.enter("lineEnding"); + effects.consume(code); + effects.exit("lineEnding"); + return lineStart; + } -"use strict"; -module.exports = JSON.parse('{"AEli":"Æ","AElig":"Æ","AM":"&","AMP":"&","Aacut":"Á","Aacute":"Á","Abreve":"Ă","Acir":"Â","Acirc":"Â","Acy":"А","Afr":"𝔄","Agrav":"À","Agrave":"À","Alpha":"Α","Amacr":"Ā","And":"⩓","Aogon":"Ą","Aopf":"𝔸","ApplyFunction":"⁡","Arin":"Å","Aring":"Å","Ascr":"𝒜","Assign":"≔","Atild":"Ã","Atilde":"Ã","Aum":"Ä","Auml":"Ä","Backslash":"∖","Barv":"⫧","Barwed":"⌆","Bcy":"Б","Because":"∵","Bernoullis":"ℬ","Beta":"Β","Bfr":"𝔅","Bopf":"𝔹","Breve":"˘","Bscr":"ℬ","Bumpeq":"≎","CHcy":"Ч","COP":"©","COPY":"©","Cacute":"Ć","Cap":"⋒","CapitalDifferentialD":"ⅅ","Cayleys":"ℭ","Ccaron":"Č","Ccedi":"Ç","Ccedil":"Ç","Ccirc":"Ĉ","Cconint":"∰","Cdot":"Ċ","Cedilla":"¸","CenterDot":"·","Cfr":"ℭ","Chi":"Χ","CircleDot":"⊙","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","Colon":"∷","Colone":"⩴","Congruent":"≡","Conint":"∯","ContourIntegral":"∮","Copf":"ℂ","Coproduct":"∐","CounterClockwiseContourIntegral":"∳","Cross":"⨯","Cscr":"𝒞","Cup":"⋓","CupCap":"≍","DD":"ⅅ","DDotrahd":"⤑","DJcy":"Ђ","DScy":"Ѕ","DZcy":"Џ","Dagger":"‡","Darr":"↡","Dashv":"⫤","Dcaron":"Ď","Dcy":"Д","Del":"∇","Delta":"Δ","Dfr":"𝔇","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","Diamond":"⋄","DifferentialD":"ⅆ","Dopf":"𝔻","Dot":"¨","DotDot":"⃜","DotEqual":"≐","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrow":"↓","DownArrowBar":"⤓","DownArrowUpArrow":"⇵","DownBreve":"̑","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVector":"↽","DownLeftVectorBar":"⥖","DownRightTeeVector":"⥟","DownRightVector":"⇁","DownRightVectorBar":"⥗","DownTee":"⊤","DownTeeArrow":"↧","Downarrow":"⇓","Dscr":"𝒟","Dstrok":"Đ","ENG":"Ŋ","ET":"Ð","ETH":"Ð","Eacut":"É","Eacute":"É","Ecaron":"Ě","Ecir":"Ê","Ecirc":"Ê","Ecy":"Э","Edot":"Ė","Efr":"𝔈","Egrav":"È","Egrave":"È","Element":"∈","Emacr":"Ē","EmptySmallSquare":"◻","EmptyVerySmallSquare":"▫","Eogon":"Ę","Eopf":"𝔼","Epsilon":"Ε","Equal":"⩵","EqualTilde":"≂","Equilibrium":"⇌","Escr":"ℰ","Esim":"⩳","Eta":"Η","Eum":"Ë","Euml":"Ë","Exists":"∃","ExponentialE":"ⅇ","Fcy":"Ф","Ffr":"𝔉","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","Fopf":"𝔽","ForAll":"∀","Fouriertrf":"ℱ","Fscr":"ℱ","GJcy":"Ѓ","G":">","GT":">","Gamma":"Γ","Gammad":"Ϝ","Gbreve":"Ğ","Gcedil":"Ģ","Gcirc":"Ĝ","Gcy":"Г","Gdot":"Ġ","Gfr":"𝔊","Gg":"⋙","Gopf":"𝔾","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","Gt":"≫","HARDcy":"Ъ","Hacek":"ˇ","Hat":"^","Hcirc":"Ĥ","Hfr":"ℌ","HilbertSpace":"ℋ","Hopf":"ℍ","HorizontalLine":"─","Hscr":"ℋ","Hstrok":"Ħ","HumpDownHump":"≎","HumpEqual":"≏","IEcy":"Е","IJlig":"IJ","IOcy":"Ё","Iacut":"Í","Iacute":"Í","Icir":"Î","Icirc":"Î","Icy":"И","Idot":"İ","Ifr":"ℑ","Igrav":"Ì","Igrave":"Ì","Im":"ℑ","Imacr":"Ī","ImaginaryI":"ⅈ","Implies":"⇒","Int":"∬","Integral":"∫","Intersection":"⋂","InvisibleComma":"⁣","InvisibleTimes":"⁢","Iogon":"Į","Iopf":"𝕀","Iota":"Ι","Iscr":"ℐ","Itilde":"Ĩ","Iukcy":"І","Ium":"Ï","Iuml":"Ï","Jcirc":"Ĵ","Jcy":"Й","Jfr":"𝔍","Jopf":"𝕁","Jscr":"𝒥","Jsercy":"Ј","Jukcy":"Є","KHcy":"Х","KJcy":"Ќ","Kappa":"Κ","Kcedil":"Ķ","Kcy":"К","Kfr":"𝔎","Kopf":"𝕂","Kscr":"𝒦","LJcy":"Љ","L":"<","LT":"<","Lacute":"Ĺ","Lambda":"Λ","Lang":"⟪","Laplacetrf":"ℒ","Larr":"↞","Lcaron":"Ľ","Lcedil":"Ļ","Lcy":"Л","LeftAngleBracket":"⟨","LeftArrow":"←","LeftArrowBar":"⇤","LeftArrowRightArrow":"⇆","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVector":"⇃","LeftDownVectorBar":"⥙","LeftFloor":"⌊","LeftRightArrow":"↔","LeftRightVector":"⥎","LeftTee":"⊣","LeftTeeArrow":"↤","LeftTeeVector":"⥚","LeftTriangle":"⊲","LeftTriangleBar":"⧏","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVector":"↿","LeftUpVectorBar":"⥘","LeftVector":"↼","LeftVectorBar":"⥒","Leftarrow":"⇐","Leftrightarrow":"⇔","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","LessLess":"⪡","LessSlantEqual":"⩽","LessTilde":"≲","Lfr":"𝔏","Ll":"⋘","Lleftarrow":"⇚","Lmidot":"Ŀ","LongLeftArrow":"⟵","LongLeftRightArrow":"⟷","LongRightArrow":"⟶","Longleftarrow":"⟸","Longleftrightarrow":"⟺","Longrightarrow":"⟹","Lopf":"𝕃","LowerLeftArrow":"↙","LowerRightArrow":"↘","Lscr":"ℒ","Lsh":"↰","Lstrok":"Ł","Lt":"≪","Map":"⤅","Mcy":"М","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","MinusPlus":"∓","Mopf":"𝕄","Mscr":"ℳ","Mu":"Μ","NJcy":"Њ","Nacute":"Ń","Ncaron":"Ň","Ncedil":"Ņ","Ncy":"Н","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","Nfr":"𝔑","NoBreak":"⁠","NonBreakingSpace":" ","Nopf":"ℕ","Not":"⫬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","NotLeftTriangle":"⋪","NotLeftTriangleBar":"⧏̸","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangle":"⋫","NotRightTriangleBar":"⧐̸","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","Nscr":"𝒩","Ntild":"Ñ","Ntilde":"Ñ","Nu":"Ν","OElig":"Œ","Oacut":"Ó","Oacute":"Ó","Ocir":"Ô","Ocirc":"Ô","Ocy":"О","Odblac":"Ő","Ofr":"𝔒","Ograv":"Ò","Ograve":"Ò","Omacr":"Ō","Omega":"Ω","Omicron":"Ο","Oopf":"𝕆","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","Or":"⩔","Oscr":"𝒪","Oslas":"Ø","Oslash":"Ø","Otild":"Õ","Otilde":"Õ","Otimes":"⨷","Oum":"Ö","Ouml":"Ö","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","PartialD":"∂","Pcy":"П","Pfr":"𝔓","Phi":"Φ","Pi":"Π","PlusMinus":"±","Poincareplane":"ℌ","Popf":"ℙ","Pr":"⪻","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","Prime":"″","Product":"∏","Proportion":"∷","Proportional":"∝","Pscr":"𝒫","Psi":"Ψ","QUO":"\\"","QUOT":"\\"","Qfr":"𝔔","Qopf":"ℚ","Qscr":"𝒬","RBarr":"⤐","RE":"®","REG":"®","Racute":"Ŕ","Rang":"⟫","Rarr":"↠","Rarrtl":"⤖","Rcaron":"Ř","Rcedil":"Ŗ","Rcy":"Р","Re":"ℜ","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","Rfr":"ℜ","Rho":"Ρ","RightAngleBracket":"⟩","RightArrow":"→","RightArrowBar":"⇥","RightArrowLeftArrow":"⇄","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVector":"⇂","RightDownVectorBar":"⥕","RightFloor":"⌋","RightTee":"⊢","RightTeeArrow":"↦","RightTeeVector":"⥛","RightTriangle":"⊳","RightTriangleBar":"⧐","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVector":"↾","RightUpVectorBar":"⥔","RightVector":"⇀","RightVectorBar":"⥓","Rightarrow":"⇒","Ropf":"ℝ","RoundImplies":"⥰","Rrightarrow":"⇛","Rscr":"ℛ","Rsh":"↱","RuleDelayed":"⧴","SHCHcy":"Щ","SHcy":"Ш","SOFTcy":"Ь","Sacute":"Ś","Sc":"⪼","Scaron":"Š","Scedil":"Ş","Scirc":"Ŝ","Scy":"С","Sfr":"𝔖","ShortDownArrow":"↓","ShortLeftArrow":"←","ShortRightArrow":"→","ShortUpArrow":"↑","Sigma":"Σ","SmallCircle":"∘","Sopf":"𝕊","Sqrt":"√","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","Sscr":"𝒮","Star":"⋆","Sub":"⋐","Subset":"⋐","SubsetEqual":"⊆","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","SuchThat":"∋","Sum":"∑","Sup":"⋑","Superset":"⊃","SupersetEqual":"⊇","Supset":"⋑","THOR":"Þ","THORN":"Þ","TRADE":"™","TSHcy":"Ћ","TScy":"Ц","Tab":"\\t","Tau":"Τ","Tcaron":"Ť","Tcedil":"Ţ","Tcy":"Т","Tfr":"𝔗","Therefore":"∴","Theta":"Θ","ThickSpace":"  ","ThinSpace":" ","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","Topf":"𝕋","TripleDot":"⃛","Tscr":"𝒯","Tstrok":"Ŧ","Uacut":"Ú","Uacute":"Ú","Uarr":"↟","Uarrocir":"⥉","Ubrcy":"Ў","Ubreve":"Ŭ","Ucir":"Û","Ucirc":"Û","Ucy":"У","Udblac":"Ű","Ufr":"𝔘","Ugrav":"Ù","Ugrave":"Ù","Umacr":"Ū","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","Uopf":"𝕌","UpArrow":"↑","UpArrowBar":"⤒","UpArrowDownArrow":"⇅","UpDownArrow":"↕","UpEquilibrium":"⥮","UpTee":"⊥","UpTeeArrow":"↥","Uparrow":"⇑","Updownarrow":"⇕","UpperLeftArrow":"↖","UpperRightArrow":"↗","Upsi":"ϒ","Upsilon":"Υ","Uring":"Ů","Uscr":"𝒰","Utilde":"Ũ","Uum":"Ü","Uuml":"Ü","VDash":"⊫","Vbar":"⫫","Vcy":"В","Vdash":"⊩","Vdashl":"⫦","Vee":"⋁","Verbar":"‖","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","Vopf":"𝕍","Vscr":"𝒱","Vvdash":"⊪","Wcirc":"Ŵ","Wedge":"⋀","Wfr":"𝔚","Wopf":"𝕎","Wscr":"𝒲","Xfr":"𝔛","Xi":"Ξ","Xopf":"𝕏","Xscr":"𝒳","YAcy":"Я","YIcy":"Ї","YUcy":"Ю","Yacut":"Ý","Yacute":"Ý","Ycirc":"Ŷ","Ycy":"Ы","Yfr":"𝔜","Yopf":"𝕐","Yscr":"𝒴","Yuml":"Ÿ","ZHcy":"Ж","Zacute":"Ź","Zcaron":"Ž","Zcy":"З","Zdot":"Ż","ZeroWidthSpace":"​","Zeta":"Ζ","Zfr":"ℨ","Zopf":"ℤ","Zscr":"𝒵","aacut":"á","aacute":"á","abreve":"ă","ac":"∾","acE":"∾̳","acd":"∿","acir":"â","acirc":"â","acut":"´","acute":"´","acy":"а","aeli":"æ","aelig":"æ","af":"⁡","afr":"𝔞","agrav":"à","agrave":"à","alefsym":"ℵ","aleph":"ℵ","alpha":"α","amacr":"ā","amalg":"⨿","am":"&","amp":"&","and":"∧","andand":"⩕","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsd":"∡","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","aogon":"ą","aopf":"𝕒","ap":"≈","apE":"⩰","apacir":"⩯","ape":"≊","apid":"≋","apos":"\'","approx":"≈","approxeq":"≊","arin":"å","aring":"å","ascr":"𝒶","ast":"*","asymp":"≈","asympeq":"≍","atild":"ã","atilde":"ã","aum":"ä","auml":"ä","awconint":"∳","awint":"⨑","bNot":"⫭","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","barvee":"⊽","barwed":"⌅","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","beta":"β","beth":"ℶ","between":"≬","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bnot":"⌐","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxDL":"╗","boxDR":"╔","boxDl":"╖","boxDr":"╓","boxH":"═","boxHD":"╦","boxHU":"╩","boxHd":"╤","boxHu":"╧","boxUL":"╝","boxUR":"╚","boxUl":"╜","boxUr":"╙","boxV":"║","boxVH":"╬","boxVL":"╣","boxVR":"╠","boxVh":"╫","boxVl":"╢","boxVr":"╟","boxbox":"⧉","boxdL":"╕","boxdR":"╒","boxdl":"┐","boxdr":"┌","boxh":"─","boxhD":"╥","boxhU":"╨","boxhd":"┬","boxhu":"┴","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxuL":"╛","boxuR":"╘","boxul":"┘","boxur":"└","boxv":"│","boxvH":"╪","boxvL":"╡","boxvR":"╞","boxvh":"┼","boxvl":"┤","boxvr":"├","bprime":"‵","breve":"˘","brvba":"¦","brvbar":"¦","bscr":"𝒷","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsol":"\\\\","bsolb":"⧅","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","bumpeq":"≏","cacute":"ć","cap":"∩","capand":"⩄","capbrcup":"⩉","capcap":"⩋","capcup":"⩇","capdot":"⩀","caps":"∩︀","caret":"⁁","caron":"ˇ","ccaps":"⩍","ccaron":"č","ccedi":"ç","ccedil":"ç","ccirc":"ĉ","ccups":"⩌","ccupssm":"⩐","cdot":"ċ","cedi":"¸","cedil":"¸","cemptyv":"⦲","cen":"¢","cent":"¢","centerdot":"·","cfr":"𝔠","chcy":"ч","check":"✓","checkmark":"✓","chi":"χ","cir":"○","cirE":"⧃","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledR":"®","circledS":"Ⓢ","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","clubs":"♣","clubsuit":"♣","colon":":","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","conint":"∮","copf":"𝕔","coprod":"∐","cop":"©","copy":"©","copysr":"℗","crarr":"↵","cross":"✗","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cup":"∪","cupbrcap":"⩈","cupcap":"⩆","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curre":"¤","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dArr":"⇓","dHar":"⥥","dagger":"†","daleth":"ℸ","darr":"↓","dash":"‐","dashv":"⊣","dbkarow":"⤏","dblac":"˝","dcaron":"ď","dcy":"д","dd":"ⅆ","ddagger":"‡","ddarr":"⇊","ddotseq":"⩷","de":"°","deg":"°","delta":"δ","demptyv":"⦱","dfisht":"⥿","dfr":"𝔡","dharl":"⇃","dharr":"⇂","diam":"⋄","diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","digamma":"ϝ","disin":"⋲","div":"÷","divid":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","dopf":"𝕕","dot":"˙","doteq":"≐","doteqdot":"≑","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","downarrow":"↓","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","dscr":"𝒹","dscy":"ѕ","dsol":"⧶","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","dzcy":"џ","dzigrarr":"⟿","eDDot":"⩷","eDot":"≑","eacut":"é","eacute":"é","easter":"⩮","ecaron":"ě","ecir":"ê","ecirc":"ê","ecolon":"≕","ecy":"э","edot":"ė","ee":"ⅇ","efDot":"≒","efr":"𝔢","eg":"⪚","egrav":"è","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","emacr":"ē","empty":"∅","emptyset":"∅","emptyv":"∅","emsp13":" ","emsp14":" ","emsp":" ","eng":"ŋ","ensp":" ","eogon":"ę","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","equals":"=","equest":"≟","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erDot":"≓","erarr":"⥱","escr":"ℯ","esdot":"≐","esim":"≂","eta":"η","et":"ð","eth":"ð","eum":"ë","euml":"ë","euro":"€","excl":"!","exist":"∃","expectation":"ℰ","exponentiale":"ⅇ","fallingdotseq":"≒","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","ffr":"𝔣","filig":"fi","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","fopf":"𝕗","forall":"∀","fork":"⋔","forkv":"⫙","fpartint":"⨍","frac1":"¼","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac3":"¾","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","gE":"≧","gEl":"⪌","gacute":"ǵ","gamma":"γ","gammad":"ϝ","gap":"⪆","gbreve":"ğ","gcirc":"ĝ","gcy":"г","gdot":"ġ","ge":"≥","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","ges":"⩾","gescc":"⪩","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","gfr":"𝔤","gg":"≫","ggg":"⋙","gimel":"ℷ","gjcy":"ѓ","gl":"≷","glE":"⪒","gla":"⪥","glj":"⪤","gnE":"≩","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gneq":"⪈","gneqq":"≩","gnsim":"⋧","gopf":"𝕘","grave":"`","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","g":">","gt":">","gtcc":"⪧","gtcir":"⩺","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","hArr":"⇔","hairsp":" ","half":"½","hamilt":"ℋ","hardcy":"ъ","harr":"↔","harrcir":"⥈","harrw":"↭","hbar":"ℏ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","horbar":"―","hscr":"𝒽","hslash":"ℏ","hstrok":"ħ","hybull":"⁃","hyphen":"‐","iacut":"í","iacute":"í","ic":"⁣","icir":"î","icirc":"î","icy":"и","iecy":"е","iexc":"¡","iexcl":"¡","iff":"⇔","ifr":"𝔦","igrav":"ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","ijlig":"ij","imacr":"ī","image":"ℑ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","imof":"⊷","imped":"Ƶ","in":"∈","incare":"℅","infin":"∞","infintie":"⧝","inodot":"ı","int":"∫","intcal":"⊺","integers":"ℤ","intercal":"⊺","intlarhk":"⨗","intprod":"⨼","iocy":"ё","iogon":"į","iopf":"𝕚","iota":"ι","iprod":"⨼","iques":"¿","iquest":"¿","iscr":"𝒾","isin":"∈","isinE":"⋹","isindot":"⋵","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","itilde":"ĩ","iukcy":"і","ium":"ï","iuml":"ï","jcirc":"ĵ","jcy":"й","jfr":"𝔧","jmath":"ȷ","jopf":"𝕛","jscr":"𝒿","jsercy":"ј","jukcy":"є","kappa":"κ","kappav":"ϰ","kcedil":"ķ","kcy":"к","kfr":"𝔨","kgreen":"ĸ","khcy":"х","kjcy":"ќ","kopf":"𝕜","kscr":"𝓀","lAarr":"⇚","lArr":"⇐","lAtail":"⤛","lBarr":"⤎","lE":"≦","lEg":"⪋","lHar":"⥢","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","lambda":"λ","lang":"⟨","langd":"⦑","langle":"⟨","lap":"⪅","laqu":"«","laquo":"«","larr":"←","larrb":"⇤","larrbfs":"⤟","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","lat":"⪫","latail":"⤙","late":"⪭","lates":"⪭︀","lbarr":"⤌","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","lcaron":"ľ","lcedil":"ļ","lceil":"⌈","lcub":"{","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","leftarrow":"←","leftarrowtail":"↢","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","leftthreetimes":"⋋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","les":"⩽","lescc":"⪨","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","lessgtr":"≶","lesssim":"≲","lfisht":"⥼","lfloor":"⌊","lfr":"𝔩","lg":"≶","lgE":"⪑","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","ljcy":"љ","ll":"≪","llarr":"⇇","llcorner":"⌞","llhard":"⥫","lltri":"◺","lmidot":"ŀ","lmoust":"⎰","lmoustache":"⎰","lnE":"≨","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","longleftrightarrow":"⟷","longmapsto":"⟼","longrightarrow":"⟶","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","lstrok":"ł","l":"<","lt":"<","ltcc":"⪦","ltcir":"⩹","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltrPar":"⦖","ltri":"◃","ltrie":"⊴","ltrif":"◂","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","mDDot":"∺","mac":"¯","macr":"¯","male":"♂","malt":"✠","maltese":"✠","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","mcy":"м","mdash":"—","measuredangle":"∡","mfr":"𝔪","mho":"℧","micr":"µ","micro":"µ","mid":"∣","midast":"*","midcir":"⫰","middo":"·","middot":"·","minus":"−","minusb":"⊟","minusd":"∸","minusdu":"⨪","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","mopf":"𝕞","mp":"∓","mscr":"𝓂","mstpos":"∾","mu":"μ","multimap":"⊸","mumap":"⊸","nGg":"⋙̸","nGt":"≫⃒","nGtv":"≫̸","nLeftarrow":"⇍","nLeftrightarrow":"⇎","nLl":"⋘̸","nLt":"≪⃒","nLtv":"≪̸","nRightarrow":"⇏","nVDash":"⊯","nVdash":"⊮","nabla":"∇","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natur":"♮","natural":"♮","naturals":"ℕ","nbs":" ","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","ncaron":"ň","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","ncy":"н","ndash":"–","ne":"≠","neArr":"⇗","nearhk":"⤤","nearr":"↗","nearrow":"↗","nedot":"≐̸","nequiv":"≢","nesear":"⤨","nesim":"≂̸","nexist":"∄","nexists":"∄","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","ngsim":"≵","ngt":"≯","ngtr":"≯","nhArr":"⇎","nharr":"↮","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","njcy":"њ","nlArr":"⇍","nlE":"≦̸","nlarr":"↚","nldr":"‥","nle":"≰","nleftarrow":"↚","nleftrightarrow":"↮","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nlsim":"≴","nlt":"≮","nltri":"⋪","nltrie":"⋬","nmid":"∤","nopf":"𝕟","no":"¬","not":"¬","notin":"∉","notinE":"⋹̸","notindot":"⋵̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","npar":"∦","nparallel":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","npre":"⪯̸","nprec":"⊀","npreceq":"⪯̸","nrArr":"⇏","nrarr":"↛","nrarrc":"⤳̸","nrarrw":"↝̸","nrightarrow":"↛","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","ntild":"ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","nu":"ν","num":"#","numero":"№","numsp":" ","nvDash":"⊭","nvHarr":"⤄","nvap":"≍⃒","nvdash":"⊬","nvge":"≥⃒","nvgt":">⃒","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwArr":"⇖","nwarhk":"⤣","nwarr":"↖","nwarrow":"↖","nwnear":"⤧","oS":"Ⓢ","oacut":"ó","oacute":"ó","oast":"⊛","ocir":"ô","ocirc":"ô","ocy":"о","odash":"⊝","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","oelig":"œ","ofcir":"⦿","ofr":"𝔬","ogon":"˛","ograv":"ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","omacr":"ō","omega":"ω","omicron":"ο","omid":"⦶","ominus":"⊖","oopf":"𝕠","opar":"⦷","operp":"⦹","oplus":"⊕","or":"∨","orarr":"↻","ord":"º","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oscr":"ℴ","oslas":"ø","oslash":"ø","osol":"⊘","otild":"õ","otilde":"õ","otimes":"⊗","otimesas":"⨶","oum":"ö","ouml":"ö","ovbar":"⌽","par":"¶","para":"¶","parallel":"∥","parsim":"⫳","parsl":"⫽","part":"∂","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","pfr":"𝔭","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plus":"+","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plusdo":"∔","plusdu":"⨥","pluse":"⩲","plusm":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","pointint":"⨕","popf":"𝕡","poun":"£","pound":"£","pr":"≺","prE":"⪳","prap":"⪷","prcue":"≼","pre":"⪯","prec":"≺","precapprox":"⪷","preccurlyeq":"≼","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","precsim":"≾","prime":"′","primes":"ℙ","prnE":"⪵","prnap":"⪹","prnsim":"⋨","prod":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","propto":"∝","prsim":"≾","prurel":"⊰","pscr":"𝓅","psi":"ψ","puncsp":" ","qfr":"𝔮","qint":"⨌","qopf":"𝕢","qprime":"⁗","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quo":"\\"","quot":"\\"","rAarr":"⇛","rArr":"⇒","rAtail":"⤜","rBarr":"⤏","rHar":"⥤","race":"∽̱","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","rangd":"⦒","range":"⦥","rangle":"⟩","raqu":"»","raquo":"»","rarr":"→","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","rarrtl":"↣","rarrw":"↝","ratail":"⤚","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","rcaron":"ř","rcedil":"ŗ","rceil":"⌉","rcub":"}","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","rect":"▭","re":"®","reg":"®","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","rhard":"⇁","rharu":"⇀","rharul":"⥬","rho":"ρ","rhov":"ϱ","rightarrow":"→","rightarrowtail":"↣","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","rightthreetimes":"⋌","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoust":"⎱","rmoustache":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","roplus":"⨮","rotimes":"⨵","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","rsaquo":"›","rscr":"𝓇","rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","ruluhar":"⥨","rx":"℞","sacute":"ś","sbquo":"‚","sc":"≻","scE":"⪴","scap":"⪸","scaron":"š","sccue":"≽","sce":"⪰","scedil":"ş","scirc":"ŝ","scnE":"⪶","scnap":"⪺","scnsim":"⋩","scpolint":"⨓","scsim":"≿","scy":"с","sdot":"⋅","sdotb":"⊡","sdote":"⩦","seArr":"⇘","searhk":"⤥","searr":"↘","searrow":"↘","sec":"§","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","sfr":"𝔰","sfrown":"⌢","sharp":"♯","shchcy":"щ","shcy":"ш","shortmid":"∣","shortparallel":"∥","sh":"­","shy":"­","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","softcy":"ь","sol":"/","solb":"⧄","solbar":"⌿","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","squ":"□","square":"□","squarf":"▪","squf":"▪","srarr":"→","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","subE":"⫅","subdot":"⪽","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","subseteq":"⊆","subseteqq":"⫅","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succ":"≻","succapprox":"⪸","succcurlyeq":"≽","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","sum":"∑","sung":"♪","sup":"⊃","sup1":"¹","sup2":"²","sup3":"³","supE":"⫆","supdot":"⪾","supdsub":"⫘","supe":"⊇","supedot":"⫄","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swArr":"⇙","swarhk":"⤦","swarr":"↙","swarrow":"↙","swnwar":"⤪","szli":"ß","szlig":"ß","target":"⌖","tau":"τ","tbrk":"⎴","tcaron":"ť","tcedil":"ţ","tcy":"т","tdot":"⃛","telrec":"⌕","tfr":"𝔱","there4":"∴","therefore":"∴","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","thinsp":" ","thkap":"≈","thksim":"∼","thor":"þ","thorn":"þ","tilde":"˜","time":"×","times":"×","timesb":"⊠","timesbar":"⨱","timesd":"⨰","tint":"∭","toea":"⤨","top":"⊤","topbot":"⌶","topcir":"⫱","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","tscr":"𝓉","tscy":"ц","tshcy":"ћ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","uArr":"⇑","uHar":"⥣","uacut":"ú","uacute":"ú","uarr":"↑","ubrcy":"ў","ubreve":"ŭ","ucir":"û","ucirc":"û","ucy":"у","udarr":"⇅","udblac":"ű","udhar":"⥮","ufisht":"⥾","ufr":"𝔲","ugrav":"ù","ugrave":"ù","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","umacr":"ū","um":"¨","uml":"¨","uogon":"ų","uopf":"𝕦","uparrow":"↑","updownarrow":"↕","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","upsi":"υ","upsih":"ϒ","upsilon":"υ","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","uring":"ů","urtri":"◹","uscr":"𝓊","utdot":"⋰","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","uum":"ü","uuml":"ü","uwangle":"⦧","vArr":"⇕","vBar":"⫨","vBarv":"⫩","vDash":"⊨","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vcy":"в","vdash":"⊢","vee":"∨","veebar":"⊻","veeeq":"≚","vellip":"⋮","verbar":"|","vert":"|","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","vopf":"𝕧","vprop":"∝","vrtri":"⊳","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","vzigzag":"⦚","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","wedgeq":"≙","weierp":"℘","wfr":"𝔴","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","xfr":"𝔵","xhArr":"⟺","xharr":"⟷","xi":"ξ","xlArr":"⟸","xlarr":"⟵","xmap":"⟼","xnis":"⋻","xodot":"⨀","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrArr":"⟹","xrarr":"⟶","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","yacut":"ý","yacute":"ý","yacy":"я","ycirc":"ŷ","ycy":"ы","ye":"¥","yen":"¥","yfr":"𝔶","yicy":"ї","yopf":"𝕪","yscr":"𝓎","yucy":"ю","yum":"ÿ","yuml":"ÿ","zacute":"ź","zcaron":"ž","zcy":"з","zdot":"ż","zeetrf":"ℨ","zeta":"ζ","zfr":"𝔷","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","zscr":"𝓏","zwj":"‍","zwnj":"‌"}'); + /** + * At end of line (blank or eof). + * + * ```markdown + * > | import a from 'b' + * ^ + * ``` + * + * @type {State} + */ + function atEnd(code) { + const result = eventsToAcorn(self.events.slice(eventStart), { + acorn, + acornOptions, + tokenTypes: ['mdxjsEsmData'], + prefix: definedModuleSpecifiers.length > 0 ? 'var ' + definedModuleSpecifiers.join(',') + '\n' : '' + }); + if (result.error) { + // There’s an error, which could be solved with more content, and there + // is more content. + if (code !== null && result.swallow) { + return continuationStart(code); + } + const error = new VFileMessage('Could not parse import/exports with acorn', { + cause: result.error, + place: { + line: result.error.loc.line, + column: result.error.loc.column + 1, + offset: result.error.pos + }, + ruleId: 'acorn', + source: 'micromark-extension-mdxjs-esm' + }); + error.url = syntax_trouble + '#could-not-parse-importexports-with-acorn'; + throw error; + } + // Remove the `VariableDeclaration`. + if (definedModuleSpecifiers.length > 0) { + const declaration = result.estree.body.shift(); + } + let index = -1; + while (++index < result.estree.body.length) { + const node = result.estree.body[index]; + if (!allowedAcornTypes.has(node.type)) { + const error = new VFileMessage('Unexpected `' + node.type + '` in code: only import/exports are supported', { + place: positionFromEstree(node), + ruleId: 'non-esm', + source: 'micromark-extension-mdxjs-esm' + }); + error.url = syntax_trouble + '#unexpected-type-in-code-only-importexports-are-supported'; + throw error; + } + + // Otherwise, when we’re not interrupting (hacky, because `interrupt` is + // used to parse containers and “sniff” if this is ESM), collect all the + // local values that are imported. + if (node.type === 'ImportDeclaration' && !self.interrupt) { + let index = -1; + while (++index < node.specifiers.length) { + const specifier = node.specifiers[index]; + definedModuleSpecifiers.push(specifier.local.name); + } + } + } + Object.assign(effects.exit('mdxjsEsm'), options.addResult ? { + estree: result.estree + } : undefined); + return ok(code); + } + } +} -/***/ }), +/** @type {Tokenizer} */ +function tokenizeNextBlank(effects, ok, nok) { + return start; -/***/ 71216: -/***/ ((module) => { + /** + * @type {State} + */ + function start(code) { + effects.enter("lineEndingBlank"); + effects.consume(code); + effects.exit("lineEndingBlank"); + return effects.attempt(blankLine, ok, nok); + } +} +;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdxjs/index.js +/** + * @typedef {import('micromark-extension-mdx-expression').Options} Options + * @typedef {import('micromark-util-types').Extension} Extension + */ -"use strict"; -module.exports = JSON.parse('{"0":"�","128":"€","130":"‚","131":"ƒ","132":"„","133":"…","134":"†","135":"‡","136":"ˆ","137":"‰","138":"Š","139":"‹","140":"Œ","142":"Ž","145":"‘","146":"’","147":"“","148":"”","149":"•","150":"–","151":"—","152":"˜","153":"™","154":"š","155":"›","156":"œ","158":"ž","159":"Ÿ"}'); -/***/ }), -/***/ 47796: -/***/ ((module) => { -"use strict"; -module.exports = JSON.parse('{"builtin":{"Array":false,"ArrayBuffer":false,"Atomics":false,"BigInt":false,"BigInt64Array":false,"BigUint64Array":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"globalThis":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"SharedArrayBuffer":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"es5":{"Array":false,"Boolean":false,"constructor":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"propertyIsEnumerable":false,"RangeError":false,"ReferenceError":false,"RegExp":false,"String":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false},"es2015":{"Array":false,"ArrayBuffer":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"es2017":{"Array":false,"ArrayBuffer":false,"Atomics":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"SharedArrayBuffer":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"browser":{"AbortController":false,"AbortSignal":false,"addEventListener":false,"alert":false,"AnalyserNode":false,"Animation":false,"AnimationEffectReadOnly":false,"AnimationEffectTiming":false,"AnimationEffectTimingReadOnly":false,"AnimationEvent":false,"AnimationPlaybackEvent":false,"AnimationTimeline":false,"applicationCache":false,"ApplicationCache":false,"ApplicationCacheErrorEvent":false,"atob":false,"Attr":false,"Audio":false,"AudioBuffer":false,"AudioBufferSourceNode":false,"AudioContext":false,"AudioDestinationNode":false,"AudioListener":false,"AudioNode":false,"AudioParam":false,"AudioProcessingEvent":false,"AudioScheduledSourceNode":false,"AudioWorkletGlobalScope ":false,"AudioWorkletNode":false,"AudioWorkletProcessor":false,"BarProp":false,"BaseAudioContext":false,"BatteryManager":false,"BeforeUnloadEvent":false,"BiquadFilterNode":false,"Blob":false,"BlobEvent":false,"blur":false,"BroadcastChannel":false,"btoa":false,"BudgetService":false,"ByteLengthQueuingStrategy":false,"Cache":false,"caches":false,"CacheStorage":false,"cancelAnimationFrame":false,"cancelIdleCallback":false,"CanvasCaptureMediaStreamTrack":false,"CanvasGradient":false,"CanvasPattern":false,"CanvasRenderingContext2D":false,"ChannelMergerNode":false,"ChannelSplitterNode":false,"CharacterData":false,"clearInterval":false,"clearTimeout":false,"clientInformation":false,"ClipboardEvent":false,"close":false,"closed":false,"CloseEvent":false,"Comment":false,"CompositionEvent":false,"confirm":false,"console":false,"ConstantSourceNode":false,"ConvolverNode":false,"CountQueuingStrategy":false,"createImageBitmap":false,"Credential":false,"CredentialsContainer":false,"crypto":false,"Crypto":false,"CryptoKey":false,"CSS":false,"CSSConditionRule":false,"CSSFontFaceRule":false,"CSSGroupingRule":false,"CSSImportRule":false,"CSSKeyframeRule":false,"CSSKeyframesRule":false,"CSSMediaRule":false,"CSSNamespaceRule":false,"CSSPageRule":false,"CSSRule":false,"CSSRuleList":false,"CSSStyleDeclaration":false,"CSSStyleRule":false,"CSSStyleSheet":false,"CSSSupportsRule":false,"CustomElementRegistry":false,"customElements":false,"CustomEvent":false,"DataTransfer":false,"DataTransferItem":false,"DataTransferItemList":false,"defaultstatus":false,"defaultStatus":false,"DelayNode":false,"DeviceMotionEvent":false,"DeviceOrientationEvent":false,"devicePixelRatio":false,"dispatchEvent":false,"document":false,"Document":false,"DocumentFragment":false,"DocumentType":false,"DOMError":false,"DOMException":false,"DOMImplementation":false,"DOMMatrix":false,"DOMMatrixReadOnly":false,"DOMParser":false,"DOMPoint":false,"DOMPointReadOnly":false,"DOMQuad":false,"DOMRect":false,"DOMRectReadOnly":false,"DOMStringList":false,"DOMStringMap":false,"DOMTokenList":false,"DragEvent":false,"DynamicsCompressorNode":false,"Element":false,"ErrorEvent":false,"event":false,"Event":false,"EventSource":false,"EventTarget":false,"external":false,"fetch":false,"File":false,"FileList":false,"FileReader":false,"find":false,"focus":false,"FocusEvent":false,"FontFace":false,"FontFaceSetLoadEvent":false,"FormData":false,"frameElement":false,"frames":false,"GainNode":false,"Gamepad":false,"GamepadButton":false,"GamepadEvent":false,"getComputedStyle":false,"getSelection":false,"HashChangeEvent":false,"Headers":false,"history":false,"History":false,"HTMLAllCollection":false,"HTMLAnchorElement":false,"HTMLAreaElement":false,"HTMLAudioElement":false,"HTMLBaseElement":false,"HTMLBodyElement":false,"HTMLBRElement":false,"HTMLButtonElement":false,"HTMLCanvasElement":false,"HTMLCollection":false,"HTMLContentElement":false,"HTMLDataElement":false,"HTMLDataListElement":false,"HTMLDetailsElement":false,"HTMLDialogElement":false,"HTMLDirectoryElement":false,"HTMLDivElement":false,"HTMLDListElement":false,"HTMLDocument":false,"HTMLElement":false,"HTMLEmbedElement":false,"HTMLFieldSetElement":false,"HTMLFontElement":false,"HTMLFormControlsCollection":false,"HTMLFormElement":false,"HTMLFrameElement":false,"HTMLFrameSetElement":false,"HTMLHeadElement":false,"HTMLHeadingElement":false,"HTMLHRElement":false,"HTMLHtmlElement":false,"HTMLIFrameElement":false,"HTMLImageElement":false,"HTMLInputElement":false,"HTMLLabelElement":false,"HTMLLegendElement":false,"HTMLLIElement":false,"HTMLLinkElement":false,"HTMLMapElement":false,"HTMLMarqueeElement":false,"HTMLMediaElement":false,"HTMLMenuElement":false,"HTMLMetaElement":false,"HTMLMeterElement":false,"HTMLModElement":false,"HTMLObjectElement":false,"HTMLOListElement":false,"HTMLOptGroupElement":false,"HTMLOptionElement":false,"HTMLOptionsCollection":false,"HTMLOutputElement":false,"HTMLParagraphElement":false,"HTMLParamElement":false,"HTMLPictureElement":false,"HTMLPreElement":false,"HTMLProgressElement":false,"HTMLQuoteElement":false,"HTMLScriptElement":false,"HTMLSelectElement":false,"HTMLShadowElement":false,"HTMLSlotElement":false,"HTMLSourceElement":false,"HTMLSpanElement":false,"HTMLStyleElement":false,"HTMLTableCaptionElement":false,"HTMLTableCellElement":false,"HTMLTableColElement":false,"HTMLTableElement":false,"HTMLTableRowElement":false,"HTMLTableSectionElement":false,"HTMLTemplateElement":false,"HTMLTextAreaElement":false,"HTMLTimeElement":false,"HTMLTitleElement":false,"HTMLTrackElement":false,"HTMLUListElement":false,"HTMLUnknownElement":false,"HTMLVideoElement":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"IdleDeadline":false,"IIRFilterNode":false,"Image":false,"ImageBitmap":false,"ImageBitmapRenderingContext":false,"ImageCapture":false,"ImageData":false,"indexedDB":false,"innerHeight":false,"innerWidth":false,"InputEvent":false,"IntersectionObserver":false,"IntersectionObserverEntry":false,"Intl":false,"isSecureContext":false,"KeyboardEvent":false,"KeyframeEffect":false,"KeyframeEffectReadOnly":false,"length":false,"localStorage":false,"location":true,"Location":false,"locationbar":false,"matchMedia":false,"MediaDeviceInfo":false,"MediaDevices":false,"MediaElementAudioSourceNode":false,"MediaEncryptedEvent":false,"MediaError":false,"MediaKeyMessageEvent":false,"MediaKeySession":false,"MediaKeyStatusMap":false,"MediaKeySystemAccess":false,"MediaList":false,"MediaQueryList":false,"MediaQueryListEvent":false,"MediaRecorder":false,"MediaSettingsRange":false,"MediaSource":false,"MediaStream":false,"MediaStreamAudioDestinationNode":false,"MediaStreamAudioSourceNode":false,"MediaStreamEvent":false,"MediaStreamTrack":false,"MediaStreamTrackEvent":false,"menubar":false,"MessageChannel":false,"MessageEvent":false,"MessagePort":false,"MIDIAccess":false,"MIDIConnectionEvent":false,"MIDIInput":false,"MIDIInputMap":false,"MIDIMessageEvent":false,"MIDIOutput":false,"MIDIOutputMap":false,"MIDIPort":false,"MimeType":false,"MimeTypeArray":false,"MouseEvent":false,"moveBy":false,"moveTo":false,"MutationEvent":false,"MutationObserver":false,"MutationRecord":false,"name":false,"NamedNodeMap":false,"NavigationPreloadManager":false,"navigator":false,"Navigator":false,"NetworkInformation":false,"Node":false,"NodeFilter":false,"NodeIterator":false,"NodeList":false,"Notification":false,"OfflineAudioCompletionEvent":false,"OfflineAudioContext":false,"offscreenBuffering":false,"OffscreenCanvas":true,"onabort":true,"onafterprint":true,"onanimationend":true,"onanimationiteration":true,"onanimationstart":true,"onappinstalled":true,"onauxclick":true,"onbeforeinstallprompt":true,"onbeforeprint":true,"onbeforeunload":true,"onblur":true,"oncancel":true,"oncanplay":true,"oncanplaythrough":true,"onchange":true,"onclick":true,"onclose":true,"oncontextmenu":true,"oncuechange":true,"ondblclick":true,"ondevicemotion":true,"ondeviceorientation":true,"ondeviceorientationabsolute":true,"ondrag":true,"ondragend":true,"ondragenter":true,"ondragleave":true,"ondragover":true,"ondragstart":true,"ondrop":true,"ondurationchange":true,"onemptied":true,"onended":true,"onerror":true,"onfocus":true,"ongotpointercapture":true,"onhashchange":true,"oninput":true,"oninvalid":true,"onkeydown":true,"onkeypress":true,"onkeyup":true,"onlanguagechange":true,"onload":true,"onloadeddata":true,"onloadedmetadata":true,"onloadstart":true,"onlostpointercapture":true,"onmessage":true,"onmessageerror":true,"onmousedown":true,"onmouseenter":true,"onmouseleave":true,"onmousemove":true,"onmouseout":true,"onmouseover":true,"onmouseup":true,"onmousewheel":true,"onoffline":true,"ononline":true,"onpagehide":true,"onpageshow":true,"onpause":true,"onplay":true,"onplaying":true,"onpointercancel":true,"onpointerdown":true,"onpointerenter":true,"onpointerleave":true,"onpointermove":true,"onpointerout":true,"onpointerover":true,"onpointerup":true,"onpopstate":true,"onprogress":true,"onratechange":true,"onrejectionhandled":true,"onreset":true,"onresize":true,"onscroll":true,"onsearch":true,"onseeked":true,"onseeking":true,"onselect":true,"onstalled":true,"onstorage":true,"onsubmit":true,"onsuspend":true,"ontimeupdate":true,"ontoggle":true,"ontransitionend":true,"onunhandledrejection":true,"onunload":true,"onvolumechange":true,"onwaiting":true,"onwheel":true,"open":false,"openDatabase":false,"opener":false,"Option":false,"origin":false,"OscillatorNode":false,"outerHeight":false,"outerWidth":false,"PageTransitionEvent":false,"pageXOffset":false,"pageYOffset":false,"PannerNode":false,"parent":false,"Path2D":false,"PaymentAddress":false,"PaymentRequest":false,"PaymentRequestUpdateEvent":false,"PaymentResponse":false,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceLongTaskTiming":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceNavigationTiming":false,"PerformanceObserver":false,"PerformanceObserverEntryList":false,"PerformancePaintTiming":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"PeriodicWave":false,"Permissions":false,"PermissionStatus":false,"personalbar":false,"PhotoCapabilities":false,"Plugin":false,"PluginArray":false,"PointerEvent":false,"PopStateEvent":false,"postMessage":false,"Presentation":false,"PresentationAvailability":false,"PresentationConnection":false,"PresentationConnectionAvailableEvent":false,"PresentationConnectionCloseEvent":false,"PresentationConnectionList":false,"PresentationReceiver":false,"PresentationRequest":false,"print":false,"ProcessingInstruction":false,"ProgressEvent":false,"PromiseRejectionEvent":false,"prompt":false,"PushManager":false,"PushSubscription":false,"PushSubscriptionOptions":false,"queueMicrotask":false,"RadioNodeList":false,"Range":false,"ReadableStream":false,"registerProcessor":false,"RemotePlayback":false,"removeEventListener":false,"Request":false,"requestAnimationFrame":false,"requestIdleCallback":false,"resizeBy":false,"ResizeObserver":false,"ResizeObserverEntry":false,"resizeTo":false,"Response":false,"RTCCertificate":false,"RTCDataChannel":false,"RTCDataChannelEvent":false,"RTCDtlsTransport":false,"RTCIceCandidate":false,"RTCIceGatherer":false,"RTCIceTransport":false,"RTCPeerConnection":false,"RTCPeerConnectionIceEvent":false,"RTCRtpContributingSource":false,"RTCRtpReceiver":false,"RTCRtpSender":false,"RTCSctpTransport":false,"RTCSessionDescription":false,"RTCStatsReport":false,"RTCTrackEvent":false,"screen":false,"Screen":false,"screenLeft":false,"ScreenOrientation":false,"screenTop":false,"screenX":false,"screenY":false,"ScriptProcessorNode":false,"scroll":false,"scrollbars":false,"scrollBy":false,"scrollTo":false,"scrollX":false,"scrollY":false,"SecurityPolicyViolationEvent":false,"Selection":false,"self":false,"ServiceWorker":false,"ServiceWorkerContainer":false,"ServiceWorkerRegistration":false,"sessionStorage":false,"setInterval":false,"setTimeout":false,"ShadowRoot":false,"SharedWorker":false,"SourceBuffer":false,"SourceBufferList":false,"speechSynthesis":false,"SpeechSynthesisEvent":false,"SpeechSynthesisUtterance":false,"StaticRange":false,"status":false,"statusbar":false,"StereoPannerNode":false,"stop":false,"Storage":false,"StorageEvent":false,"StorageManager":false,"styleMedia":false,"StyleSheet":false,"StyleSheetList":false,"SubtleCrypto":false,"SVGAElement":false,"SVGAngle":false,"SVGAnimatedAngle":false,"SVGAnimatedBoolean":false,"SVGAnimatedEnumeration":false,"SVGAnimatedInteger":false,"SVGAnimatedLength":false,"SVGAnimatedLengthList":false,"SVGAnimatedNumber":false,"SVGAnimatedNumberList":false,"SVGAnimatedPreserveAspectRatio":false,"SVGAnimatedRect":false,"SVGAnimatedString":false,"SVGAnimatedTransformList":false,"SVGAnimateElement":false,"SVGAnimateMotionElement":false,"SVGAnimateTransformElement":false,"SVGAnimationElement":false,"SVGCircleElement":false,"SVGClipPathElement":false,"SVGComponentTransferFunctionElement":false,"SVGDefsElement":false,"SVGDescElement":false,"SVGDiscardElement":false,"SVGElement":false,"SVGEllipseElement":false,"SVGFEBlendElement":false,"SVGFEColorMatrixElement":false,"SVGFEComponentTransferElement":false,"SVGFECompositeElement":false,"SVGFEConvolveMatrixElement":false,"SVGFEDiffuseLightingElement":false,"SVGFEDisplacementMapElement":false,"SVGFEDistantLightElement":false,"SVGFEDropShadowElement":false,"SVGFEFloodElement":false,"SVGFEFuncAElement":false,"SVGFEFuncBElement":false,"SVGFEFuncGElement":false,"SVGFEFuncRElement":false,"SVGFEGaussianBlurElement":false,"SVGFEImageElement":false,"SVGFEMergeElement":false,"SVGFEMergeNodeElement":false,"SVGFEMorphologyElement":false,"SVGFEOffsetElement":false,"SVGFEPointLightElement":false,"SVGFESpecularLightingElement":false,"SVGFESpotLightElement":false,"SVGFETileElement":false,"SVGFETurbulenceElement":false,"SVGFilterElement":false,"SVGForeignObjectElement":false,"SVGGElement":false,"SVGGeometryElement":false,"SVGGradientElement":false,"SVGGraphicsElement":false,"SVGImageElement":false,"SVGLength":false,"SVGLengthList":false,"SVGLinearGradientElement":false,"SVGLineElement":false,"SVGMarkerElement":false,"SVGMaskElement":false,"SVGMatrix":false,"SVGMetadataElement":false,"SVGMPathElement":false,"SVGNumber":false,"SVGNumberList":false,"SVGPathElement":false,"SVGPatternElement":false,"SVGPoint":false,"SVGPointList":false,"SVGPolygonElement":false,"SVGPolylineElement":false,"SVGPreserveAspectRatio":false,"SVGRadialGradientElement":false,"SVGRect":false,"SVGRectElement":false,"SVGScriptElement":false,"SVGSetElement":false,"SVGStopElement":false,"SVGStringList":false,"SVGStyleElement":false,"SVGSVGElement":false,"SVGSwitchElement":false,"SVGSymbolElement":false,"SVGTextContentElement":false,"SVGTextElement":false,"SVGTextPathElement":false,"SVGTextPositioningElement":false,"SVGTitleElement":false,"SVGTransform":false,"SVGTransformList":false,"SVGTSpanElement":false,"SVGUnitTypes":false,"SVGUseElement":false,"SVGViewElement":false,"TaskAttributionTiming":false,"Text":false,"TextDecoder":false,"TextEncoder":false,"TextEvent":false,"TextMetrics":false,"TextTrack":false,"TextTrackCue":false,"TextTrackCueList":false,"TextTrackList":false,"TimeRanges":false,"toolbar":false,"top":false,"Touch":false,"TouchEvent":false,"TouchList":false,"TrackEvent":false,"TransitionEvent":false,"TreeWalker":false,"UIEvent":false,"URL":false,"URLSearchParams":false,"ValidityState":false,"visualViewport":false,"VisualViewport":false,"VTTCue":false,"WaveShaperNode":false,"WebAssembly":false,"WebGL2RenderingContext":false,"WebGLActiveInfo":false,"WebGLBuffer":false,"WebGLContextEvent":false,"WebGLFramebuffer":false,"WebGLProgram":false,"WebGLQuery":false,"WebGLRenderbuffer":false,"WebGLRenderingContext":false,"WebGLSampler":false,"WebGLShader":false,"WebGLShaderPrecisionFormat":false,"WebGLSync":false,"WebGLTexture":false,"WebGLTransformFeedback":false,"WebGLUniformLocation":false,"WebGLVertexArrayObject":false,"WebSocket":false,"WheelEvent":false,"window":false,"Window":false,"Worker":false,"WritableStream":false,"XMLDocument":false,"XMLHttpRequest":false,"XMLHttpRequestEventTarget":false,"XMLHttpRequestUpload":false,"XMLSerializer":false,"XPathEvaluator":false,"XPathExpression":false,"XPathResult":false,"XSLTProcessor":false},"worker":{"addEventListener":false,"applicationCache":false,"atob":false,"Blob":false,"BroadcastChannel":false,"btoa":false,"Cache":false,"caches":false,"clearInterval":false,"clearTimeout":false,"close":true,"console":false,"fetch":false,"FileReaderSync":false,"FormData":false,"Headers":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"ImageData":false,"importScripts":true,"indexedDB":false,"location":false,"MessageChannel":false,"MessagePort":false,"name":false,"navigator":false,"Notification":false,"onclose":true,"onconnect":true,"onerror":true,"onlanguagechange":true,"onmessage":true,"onoffline":true,"ononline":true,"onrejectionhandled":true,"onunhandledrejection":true,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"postMessage":true,"Promise":false,"queueMicrotask":false,"removeEventListener":false,"Request":false,"Response":false,"self":true,"ServiceWorkerRegistration":false,"setInterval":false,"setTimeout":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false,"WebSocket":false,"Worker":false,"WorkerGlobalScope":false,"XMLHttpRequest":false},"node":{"__dirname":false,"__filename":false,"Buffer":false,"clearImmediate":false,"clearInterval":false,"clearTimeout":false,"console":false,"exports":true,"global":false,"Intl":false,"module":false,"process":false,"queueMicrotask":false,"require":false,"setImmediate":false,"setInterval":false,"setTimeout":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false},"commonjs":{"exports":true,"global":false,"module":false,"require":false},"amd":{"define":false,"require":false},"mocha":{"after":false,"afterEach":false,"before":false,"beforeEach":false,"context":false,"describe":false,"it":false,"mocha":false,"run":false,"setup":false,"specify":false,"suite":false,"suiteSetup":false,"suiteTeardown":false,"teardown":false,"test":false,"xcontext":false,"xdescribe":false,"xit":false,"xspecify":false},"jasmine":{"afterAll":false,"afterEach":false,"beforeAll":false,"beforeEach":false,"describe":false,"expect":false,"fail":false,"fdescribe":false,"fit":false,"it":false,"jasmine":false,"pending":false,"runs":false,"spyOn":false,"spyOnProperty":false,"waits":false,"waitsFor":false,"xdescribe":false,"xit":false},"jest":{"afterAll":false,"afterEach":false,"beforeAll":false,"beforeEach":false,"describe":false,"expect":false,"fdescribe":false,"fit":false,"it":false,"jest":false,"pit":false,"require":false,"test":false,"xdescribe":false,"xit":false,"xtest":false},"qunit":{"asyncTest":false,"deepEqual":false,"equal":false,"expect":false,"module":false,"notDeepEqual":false,"notEqual":false,"notOk":false,"notPropEqual":false,"notStrictEqual":false,"ok":false,"propEqual":false,"QUnit":false,"raises":false,"start":false,"stop":false,"strictEqual":false,"test":false,"throws":false},"phantomjs":{"console":true,"exports":true,"phantom":true,"require":true,"WebPage":true},"couch":{"emit":false,"exports":false,"getRow":false,"log":false,"module":false,"provides":false,"require":false,"respond":false,"send":false,"start":false,"sum":false},"rhino":{"defineClass":false,"deserialize":false,"gc":false,"help":false,"importClass":false,"importPackage":false,"java":false,"load":false,"loadClass":false,"Packages":false,"print":false,"quit":false,"readFile":false,"readUrl":false,"runCommand":false,"seal":false,"serialize":false,"spawn":false,"sync":false,"toint32":false,"version":false},"nashorn":{"__DIR__":false,"__FILE__":false,"__LINE__":false,"com":false,"edu":false,"exit":false,"java":false,"Java":false,"javafx":false,"JavaImporter":false,"javax":false,"JSAdapter":false,"load":false,"loadWithNewGlobal":false,"org":false,"Packages":false,"print":false,"quit":false},"wsh":{"ActiveXObject":true,"Enumerator":true,"GetObject":true,"ScriptEngine":true,"ScriptEngineBuildVersion":true,"ScriptEngineMajorVersion":true,"ScriptEngineMinorVersion":true,"VBArray":true,"WScript":true,"WSH":true,"XDomainRequest":true},"jquery":{"$":false,"jQuery":false},"yui":{"YAHOO":false,"YAHOO_config":false,"YUI":false,"YUI_config":false},"shelljs":{"cat":false,"cd":false,"chmod":false,"config":false,"cp":false,"dirs":false,"echo":false,"env":false,"error":false,"exec":false,"exit":false,"find":false,"grep":false,"ln":false,"ls":false,"mkdir":false,"mv":false,"popd":false,"pushd":false,"pwd":false,"rm":false,"sed":false,"set":false,"target":false,"tempdir":false,"test":false,"touch":false,"which":false},"prototypejs":{"$":false,"$$":false,"$A":false,"$break":false,"$continue":false,"$F":false,"$H":false,"$R":false,"$w":false,"Abstract":false,"Ajax":false,"Autocompleter":false,"Builder":false,"Class":false,"Control":false,"Draggable":false,"Draggables":false,"Droppables":false,"Effect":false,"Element":false,"Enumerable":false,"Event":false,"Field":false,"Form":false,"Hash":false,"Insertion":false,"ObjectRange":false,"PeriodicalExecuter":false,"Position":false,"Prototype":false,"Scriptaculous":false,"Selector":false,"Sortable":false,"SortableObserver":false,"Sound":false,"Template":false,"Toggle":false,"Try":false},"meteor":{"_":false,"$":false,"Accounts":false,"AccountsClient":false,"AccountsCommon":false,"AccountsServer":false,"App":false,"Assets":false,"Blaze":false,"check":false,"Cordova":false,"DDP":false,"DDPRateLimiter":false,"DDPServer":false,"Deps":false,"EJSON":false,"Email":false,"HTTP":false,"Log":false,"Match":false,"Meteor":false,"Mongo":false,"MongoInternals":false,"Npm":false,"Package":false,"Plugin":false,"process":false,"Random":false,"ReactiveDict":false,"ReactiveVar":false,"Router":false,"ServiceConfiguration":false,"Session":false,"share":false,"Spacebars":false,"Template":false,"Tinytest":false,"Tracker":false,"UI":false,"Utils":false,"WebApp":false,"WebAppInternals":false},"mongo":{"_isWindows":false,"_rand":false,"BulkWriteResult":false,"cat":false,"cd":false,"connect":false,"db":false,"getHostName":false,"getMemInfo":false,"hostname":false,"ISODate":false,"listFiles":false,"load":false,"ls":false,"md5sumFile":false,"mkdir":false,"Mongo":false,"NumberInt":false,"NumberLong":false,"ObjectId":false,"PlanCache":false,"print":false,"printjson":false,"pwd":false,"quit":false,"removeFile":false,"rs":false,"sh":false,"UUID":false,"version":false,"WriteResult":false},"applescript":{"$":false,"Application":false,"Automation":false,"console":false,"delay":false,"Library":false,"ObjC":false,"ObjectSpecifier":false,"Path":false,"Progress":false,"Ref":false},"serviceworker":{"addEventListener":false,"applicationCache":false,"atob":false,"Blob":false,"BroadcastChannel":false,"btoa":false,"Cache":false,"caches":false,"CacheStorage":false,"clearInterval":false,"clearTimeout":false,"Client":false,"clients":false,"Clients":false,"close":true,"console":false,"ExtendableEvent":false,"ExtendableMessageEvent":false,"fetch":false,"FetchEvent":false,"FileReaderSync":false,"FormData":false,"Headers":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"ImageData":false,"importScripts":false,"indexedDB":false,"location":false,"MessageChannel":false,"MessagePort":false,"name":false,"navigator":false,"Notification":false,"onclose":true,"onconnect":true,"onerror":true,"onfetch":true,"oninstall":true,"onlanguagechange":true,"onmessage":true,"onmessageerror":true,"onnotificationclick":true,"onnotificationclose":true,"onoffline":true,"ononline":true,"onpush":true,"onpushsubscriptionchange":true,"onrejectionhandled":true,"onsync":true,"onunhandledrejection":true,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"postMessage":true,"Promise":false,"queueMicrotask":false,"registration":false,"removeEventListener":false,"Request":false,"Response":false,"self":false,"ServiceWorker":false,"ServiceWorkerContainer":false,"ServiceWorkerGlobalScope":false,"ServiceWorkerMessageEvent":false,"ServiceWorkerRegistration":false,"setInterval":false,"setTimeout":false,"skipWaiting":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false,"WebSocket":false,"WindowClient":false,"Worker":false,"WorkerGlobalScope":false,"XMLHttpRequest":false},"atomtest":{"advanceClock":false,"fakeClearInterval":false,"fakeClearTimeout":false,"fakeSetInterval":false,"fakeSetTimeout":false,"resetTimeouts":false,"waitsForPromise":false},"embertest":{"andThen":false,"click":false,"currentPath":false,"currentRouteName":false,"currentURL":false,"fillIn":false,"find":false,"findAll":false,"findWithAssert":false,"keyEvent":false,"pauseTest":false,"resumeTest":false,"triggerEvent":false,"visit":false,"wait":false},"protractor":{"$":false,"$$":false,"browser":false,"by":false,"By":false,"DartObject":false,"element":false,"protractor":false},"shared-node-browser":{"clearInterval":false,"clearTimeout":false,"console":false,"setInterval":false,"setTimeout":false,"URL":false,"URLSearchParams":false},"webextensions":{"browser":false,"chrome":false,"opr":false},"greasemonkey":{"cloneInto":false,"createObjectIn":false,"exportFunction":false,"GM":false,"GM_addStyle":false,"GM_deleteValue":false,"GM_getResourceText":false,"GM_getResourceURL":false,"GM_getValue":false,"GM_info":false,"GM_listValues":false,"GM_log":false,"GM_openInTab":false,"GM_registerMenuCommand":false,"GM_setClipboard":false,"GM_setValue":false,"GM_xmlhttpRequest":false,"unsafeWindow":false},"devtools":{"$":false,"$_":false,"$$":false,"$0":false,"$1":false,"$2":false,"$3":false,"$4":false,"$x":false,"chrome":false,"clear":false,"copy":false,"debug":false,"dir":false,"dirxml":false,"getEventListeners":false,"inspect":false,"keys":false,"monitor":false,"monitorEvents":false,"profile":false,"profileEnd":false,"queryObjects":false,"table":false,"undebug":false,"unmonitor":false,"unmonitorEvents":false,"values":false}}'); -/***/ }), -/***/ 94651: -/***/ ((module) => { -"use strict"; -module.exports = JSON.parse('{"assert":true,"node:assert":[">= 14.18 && < 15",">= 16"],"assert/strict":">= 15","node:assert/strict":">= 16","async_hooks":">= 8","node:async_hooks":[">= 14.18 && < 15",">= 16"],"buffer_ieee754":">= 0.5 && < 0.9.7","buffer":true,"node:buffer":[">= 14.18 && < 15",">= 16"],"child_process":true,"node:child_process":[">= 14.18 && < 15",">= 16"],"cluster":">= 0.5","node:cluster":[">= 14.18 && < 15",">= 16"],"console":true,"node:console":[">= 14.18 && < 15",">= 16"],"constants":true,"node:constants":[">= 14.18 && < 15",">= 16"],"crypto":true,"node:crypto":[">= 14.18 && < 15",">= 16"],"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"node:dgram":[">= 14.18 && < 15",">= 16"],"diagnostics_channel":[">= 14.17 && < 15",">= 15.1"],"node:diagnostics_channel":[">= 14.18 && < 15",">= 16"],"dns":true,"node:dns":[">= 14.18 && < 15",">= 16"],"dns/promises":">= 15","node:dns/promises":">= 16","domain":">= 0.7.12","node:domain":[">= 14.18 && < 15",">= 16"],"events":true,"node:events":[">= 14.18 && < 15",">= 16"],"freelist":"< 6","fs":true,"node:fs":[">= 14.18 && < 15",">= 16"],"fs/promises":[">= 10 && < 10.1",">= 14"],"node:fs/promises":[">= 14.18 && < 15",">= 16"],"_http_agent":">= 0.11.1","node:_http_agent":[">= 14.18 && < 15",">= 16"],"_http_client":">= 0.11.1","node:_http_client":[">= 14.18 && < 15",">= 16"],"_http_common":">= 0.11.1","node:_http_common":[">= 14.18 && < 15",">= 16"],"_http_incoming":">= 0.11.1","node:_http_incoming":[">= 14.18 && < 15",">= 16"],"_http_outgoing":">= 0.11.1","node:_http_outgoing":[">= 14.18 && < 15",">= 16"],"_http_server":">= 0.11.1","node:_http_server":[">= 14.18 && < 15",">= 16"],"http":true,"node:http":[">= 14.18 && < 15",">= 16"],"http2":">= 8.8","node:http2":[">= 14.18 && < 15",">= 16"],"https":true,"node:https":[">= 14.18 && < 15",">= 16"],"inspector":">= 8","node:inspector":[">= 14.18 && < 15",">= 16"],"inspector/promises":[">= 19"],"node:inspector/promises":[">= 19"],"_linklist":"< 8","module":true,"node:module":[">= 14.18 && < 15",">= 16"],"net":true,"node:net":[">= 14.18 && < 15",">= 16"],"node-inspect/lib/_inspect":">= 7.6 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6 && < 12","os":true,"node:os":[">= 14.18 && < 15",">= 16"],"path":true,"node:path":[">= 14.18 && < 15",">= 16"],"path/posix":">= 15.3","node:path/posix":">= 16","path/win32":">= 15.3","node:path/win32":">= 16","perf_hooks":">= 8.5","node:perf_hooks":[">= 14.18 && < 15",">= 16"],"process":">= 1","node:process":[">= 14.18 && < 15",">= 16"],"punycode":">= 0.5","node:punycode":[">= 14.18 && < 15",">= 16"],"querystring":true,"node:querystring":[">= 14.18 && < 15",">= 16"],"readline":true,"node:readline":[">= 14.18 && < 15",">= 16"],"readline/promises":">= 17","node:readline/promises":">= 17","repl":true,"node:repl":[">= 14.18 && < 15",">= 16"],"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","node:_stream_duplex":[">= 14.18 && < 15",">= 16"],"_stream_transform":">= 0.9.4","node:_stream_transform":[">= 14.18 && < 15",">= 16"],"_stream_wrap":">= 1.4.1","node:_stream_wrap":[">= 14.18 && < 15",">= 16"],"_stream_passthrough":">= 0.9.4","node:_stream_passthrough":[">= 14.18 && < 15",">= 16"],"_stream_readable":">= 0.9.4","node:_stream_readable":[">= 14.18 && < 15",">= 16"],"_stream_writable":">= 0.9.4","node:_stream_writable":[">= 14.18 && < 15",">= 16"],"stream":true,"node:stream":[">= 14.18 && < 15",">= 16"],"stream/consumers":">= 16.7","node:stream/consumers":">= 16.7","stream/promises":">= 15","node:stream/promises":">= 16","stream/web":">= 16.5","node:stream/web":">= 16.5","string_decoder":true,"node:string_decoder":[">= 14.18 && < 15",">= 16"],"sys":[">= 0.4 && < 0.7",">= 0.8"],"node:sys":[">= 14.18 && < 15",">= 16"],"node:test":[">= 16.17 && < 17",">= 18"],"timers":true,"node:timers":[">= 14.18 && < 15",">= 16"],"timers/promises":">= 15","node:timers/promises":">= 16","_tls_common":">= 0.11.13","node:_tls_common":[">= 14.18 && < 15",">= 16"],"_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","node:_tls_wrap":[">= 14.18 && < 15",">= 16"],"tls":true,"node:tls":[">= 14.18 && < 15",">= 16"],"trace_events":">= 10","node:trace_events":[">= 14.18 && < 15",">= 16"],"tty":true,"node:tty":[">= 14.18 && < 15",">= 16"],"url":true,"node:url":[">= 14.18 && < 15",">= 16"],"util":true,"node:util":[">= 14.18 && < 15",">= 16"],"util/types":">= 15.3","node:util/types":">= 16","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/consarray":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/csvparser":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/logreader":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/profile_view":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/splaytree":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8":">= 1","node:v8":[">= 14.18 && < 15",">= 16"],"vm":true,"node:vm":[">= 14.18 && < 15",">= 16"],"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","node:worker_threads":[">= 14.18 && < 15",">= 16"],"zlib":">= 0.5","node:zlib":[">= 14.18 && < 15",">= 16"]}'); -/***/ }), -/***/ 12139: -/***/ ((module) => { +/** + * Create an extension for `micromark` to enable MDX syntax. + * + * @param {Options | null | undefined} [options] + * Configuration (optional). + * @returns {Extension} + * Extension for `micromark` that can be passed in `extensions` to enable MDX + * syntax. + */ +function mdxjs(options) { + const settings = Object.assign( + { + acorn: Parser.extend(acorn_jsx()), + acornOptions: {ecmaVersion: 2024, sourceType: 'module'}, + addResult: true + }, + options + ) -"use strict"; -module.exports = JSON.parse('{"name":"pino","version":"7.9.2","description":"super fast, all natural json logger","main":"pino.js","type":"commonjs","types":"pino.d.ts","browser":"./browser.js","files":["pino.js","file.js","pino.d.ts","bin.js","browser.js","pretty.js","usage.txt","test","docs","example.js","lib"],"scripts":{"docs":"docsify serve","browser-test":"airtap --local 8080 test/browser*test.js","lint":"eslint .","test":"npm run lint && tap test/*test.js test/*/*test.js && jest test/jest && npm run test-types","test-ci":"npm run lint && tap --no-check-coverage test/*test.js test/*/*test.js --coverage-report=lcovonly && npm run test-types","test-ci-pnpm":"pnpm run lint && tap --no-coverage --no-check-coverage test/*test.js test/*/*test.js && pnpm run test-types","test-ci-yarn-pnp":"yarn run lint && tap --no-check-coverage test/*test.js test/*/*test.js --coverage-report=lcovonly","test-types":"tsc && tsd && ts-node test/types/pino.ts","cov-ui":"tap --coverage-report=html test/*test.js test/*/*test.js","bench":"node benchmarks/utils/runbench all","bench-basic":"node benchmarks/utils/runbench basic","bench-object":"node benchmarks/utils/runbench object","bench-deep-object":"node benchmarks/utils/runbench deep-object","bench-multi-arg":"node benchmarks/utils/runbench multi-arg","bench-longs-tring":"node benchmarks/utils/runbench long-string","bench-child":"node benchmarks/utils/runbench child","bench-child-child":"node benchmarks/utils/runbench child-child","bench-child-creation":"node benchmarks/utils/runbench child-creation","bench-formatters":"node benchmarks/utils/runbench formatters","update-bench-doc":"node benchmarks/utils/generate-benchmark-doc > docs/benchmarks.md"},"bin":{"pino":"./bin.js"},"precommit":"test","repository":{"type":"git","url":"git+https://github.com/pinojs/pino.git"},"keywords":["fast","logger","stream","json"],"author":"Matteo Collina <hello@matteocollina.com>","contributors":["David Mark Clements <huperekchuno@googlemail.com>","James Sumners <james.sumners@gmail.com>","Thomas Watson Steen <w@tson.dk> (https://twitter.com/wa7son)"],"license":"MIT","bugs":{"url":"https://github.com/pinojs/pino/issues"},"homepage":"http://getpino.io","devDependencies":{"@types/node":"^17.0.0","airtap":"4.0.4","benchmark":"^2.1.4","bole":"^4.0.0","bunyan":"^1.8.14","docsify-cli":"^4.4.1","eslint":"^7.17.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.1.0","execa":"^5.0.0","fastbench":"^1.0.1","flush-write-stream":"^2.0.0","import-fresh":"^3.2.1","jest":"^27.3.1","log":"^6.0.0","loglevel":"^1.6.7","pino-pretty":"^v7.5.4","pre-commit":"^1.2.2","proxyquire":"^2.1.3","pump":"^3.0.0","semver":"^7.0.0","split2":"^4.0.0","steed":"^1.1.3","strip-ansi":"^6.0.0","tap":"^16.0.0","tape":"^5.0.0","through2":"^4.0.0","ts-node":"^10.3.0","tsd":"^0.19.0","typescript":"^4.4.4","winston":"^3.3.3"},"dependencies":{"fast-redact":"^3.0.0","process-warning":"^1.0.0","on-exit-leak-free":"^0.2.0","pino-abstract-transport":"v0.5.0","pino-std-serializers":"^4.0.0","quick-format-unescaped":"^4.0.3","real-require":"^0.1.0","safe-stable-stringify":"^2.1.0","sonic-boom":"^2.2.1","thread-stream":"^0.15.0"},"tsd":{"directory":"test/types"}}'); + return combineExtensions([ + mdxjsEsm(settings), + mdxExpression(settings), + mdxJsx(settings), + mdxMd() + ]) +} -/***/ }), +;// CONCATENATED MODULE: ./node_modules/remark-mdx/lib/index.js +/** + * @import {ToMarkdownOptions} from 'mdast-util-mdx' + * @import {Options as MicromarkOptions} from 'micromark-extension-mdxjs' + * @import {Processor} from 'unified' + */ -/***/ 98398: -/***/ ((module) => { +/** + * @typedef {MicromarkOptions & ToMarkdownOptions} Options + * Configuration. + */ -"use strict"; -module.exports = JSON.parse('{"assert":true,"assert/strict":">= 15","async_hooks":">= 8","buffer_ieee754":"< 0.9.7","buffer":true,"child_process":true,"cluster":true,"console":true,"constants":true,"crypto":true,"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"diagnostics_channel":">= 15.1","dns":true,"dns/promises":">= 15","domain":">= 0.7.12","events":true,"freelist":"< 6","fs":true,"fs/promises":[">= 10 && < 10.1",">= 14"],"_http_agent":">= 0.11.1","_http_client":">= 0.11.1","_http_common":">= 0.11.1","_http_incoming":">= 0.11.1","_http_outgoing":">= 0.11.1","_http_server":">= 0.11.1","http":true,"http2":">= 8.8","https":true,"inspector":">= 8.0.0","_linklist":"< 8","module":true,"net":true,"node-inspect/lib/_inspect":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6.0 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6.0 && < 12","os":true,"path":true,"path/posix":">= 15.3","path/win32":">= 15.3","perf_hooks":">= 8.5","process":">= 1","punycode":true,"querystring":true,"readline":true,"repl":true,"smalloc":">= 0.11.5 && < 3","_stream_duplex":">= 0.9.4","_stream_transform":">= 0.9.4","_stream_wrap":">= 1.4.1","_stream_passthrough":">= 0.9.4","_stream_readable":">= 0.9.4","_stream_writable":">= 0.9.4","stream":true,"stream/promises":">= 15","string_decoder":true,"sys":[">= 0.6 && < 0.7",">= 0.8"],"timers":true,"timers/promises":">= 15","_tls_common":">= 0.11.13","_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","tls":true,"trace_events":">= 10","tty":true,"url":true,"util":true,"util/types":">= 15.3","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/consarray":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/csvparser":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/logreader":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/profile_view":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8/tools/splaytree":[">= 4.4.0 && < 5",">= 5.2.0 && < 12"],"v8":">= 1","vm":true,"wasi":">= 13.4 && < 13.5","worker_threads":">= 11.7","zlib":true}'); -/***/ }), -/***/ 66195: -/***/ ((module) => { -"use strict"; -module.exports = JSON.parse('["cent","copy","divide","gt","lt","not","para","times"]'); +/** @type {Readonly<Options>} */ +const remark_mdx_lib_emptyOptions = {} -/***/ }) +/** + * Add support for MDX (JSX: `<Video id={123} />`, export/imports: `export {x} + * from 'y'`; and expressions: `{1 + 1}`). + * + * @this {Processor} + * Processor. + * @param {Readonly<Options> | null | undefined} [options] + * Configuration (optional). + * @returns {undefined} + * Nothing. + */ +function remarkMdx(options) { + const self = this + const settings = options || remark_mdx_lib_emptyOptions + const data = self.data() -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __nccwpck_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ id: moduleId, -/******/ loaded: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ var threw = true; -/******/ try { -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); -/******/ threw = false; -/******/ } finally { -/******/ if(threw) delete __webpack_module_cache__[moduleId]; -/******/ } -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __nccwpck_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __nccwpck_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __nccwpck_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __nccwpck_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/node module decorator */ -/******/ (() => { -/******/ __nccwpck_require__.nmd = (module) => { -/******/ module.paths = []; -/******/ if (!module.children) module.children = []; -/******/ return module; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat */ -/******/ -/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); + const micromarkExtensions = + data.micromarkExtensions || (data.micromarkExtensions = []) + const fromMarkdownExtensions = + data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []) + const toMarkdownExtensions = + data.toMarkdownExtensions || (data.toMarkdownExtensions = []) -// EXTERNAL MODULE: ../../node_modules/@actions/core/lib/core.js -var core = __nccwpck_require__(37117); -// EXTERNAL MODULE: external "fs" -var external_fs_ = __nccwpck_require__(57147); -// EXTERNAL MODULE: external "path" -var external_path_ = __nccwpck_require__(71017); -// EXTERNAL MODULE: ../../node_modules/klaw-sync/klaw-sync.js -var klaw_sync = __nccwpck_require__(74880); -var klaw_sync_default = /*#__PURE__*/__nccwpck_require__.n(klaw_sync); -// EXTERNAL MODULE: ../../node_modules/gray-matter/index.js -var gray_matter = __nccwpck_require__(94708); -var gray_matter_default = /*#__PURE__*/__nccwpck_require__.n(gray_matter); -// EXTERNAL MODULE: ../../node_modules/remark/index.js -var remark = __nccwpck_require__(63280); -var remark_default = /*#__PURE__*/__nccwpck_require__.n(remark); -// EXTERNAL MODULE: ../../node_modules/remark-mdx/index.js -var remark_mdx = __nccwpck_require__(43650); -var remark_mdx_default = /*#__PURE__*/__nccwpck_require__.n(remark_mdx); -// EXTERNAL MODULE: ../../node_modules/pino/pino.js -var pino = __nccwpck_require__(55124); -var pino_default = /*#__PURE__*/__nccwpck_require__.n(pino); -// EXTERNAL MODULE: ../../node_modules/pino-pretty/index.js -var pino_pretty = __nccwpck_require__(87952); -var pino_pretty_default = /*#__PURE__*/__nccwpck_require__.n(pino_pretty); -;// CONCATENATED MODULE: ../../shared/logger.ts - - -// don't log in test -const isTest = process.env.NODE_ENV === 'test'; -// don't color in Vercel -const isVercel = process.env.VERCEL === '1' || !!process.env.VERCEL_ENV; -// allow LOG_LEVEL to take top priority -const level = process.env.LOG_LEVEL || (isTest ? 'fatal' : 'info'); -const stream = pino_pretty_default()({ - colorize: !isVercel, - levelFirst: true, - ignore: 'hostname,pid,time', -}); -const options = { - level, -}; -const logger = pino_default()(options, stream); + micromarkExtensions.push(mdxjs(settings)) + fromMarkdownExtensions.push(mdxFromMarkdown()) + toMarkdownExtensions.push(mdxToMarkdown(settings)) +} // EXTERNAL MODULE: external "assert" -var external_assert_ = __nccwpck_require__(39491); -// EXTERNAL MODULE: ../../node_modules/unist-util-is/index.js -var unist_util_is = __nccwpck_require__(84984); -var unist_util_is_default = /*#__PURE__*/__nccwpck_require__.n(unist_util_is); -// EXTERNAL MODULE: ../../node_modules/unist-util-visit/index.js -var unist_util_visit = __nccwpck_require__(47982); -var unist_util_visit_default = /*#__PURE__*/__nccwpck_require__.n(unist_util_visit); +var external_assert_ = __nccwpck_require__(2613); ;// CONCATENATED MODULE: ./remark-get-images-plugin.ts +// @ts-nocheck // stdlib @@ -102622,10 +70407,10 @@ var unist_util_visit_default = /*#__PURE__*/__nccwpck_require__.n(unist_util_vis const remarkGetImages = (sourceRepoPublicDir, imageSrcSet) => { const test = (node) => { - return unist_util_is_default()(node, 'image'); + return is(node, 'image'); }; return function (tree) { - unist_util_visit_default()(tree, test, (node) => { + visit(tree, test, (node) => { const src = external_path_.join(sourceRepoPublicDir, node.url); external_assert_.ok(external_fs_.existsSync(src), '[getImagesPlugin] image not found: ' + src); imageSrcSet.add(src); @@ -102634,16 +70419,17 @@ const remarkGetImages = (sourceRepoPublicDir, imageSrcSet) => { }; ;// CONCATENATED MODULE: ./remark-transfrom-cloud-docs-links.ts +// @ts-nocheck // for creating custom remark plugin // Use 4.1.0; 5+ is ESM const remarkTransformCloudDocsLinks = () => { const test = (node) => { - return unist_util_is_default()(node, 'link') || unist_util_is_default()(node, 'definition'); + return is(node, 'link') || is(node, 'definition'); }; return function (tree) { - unist_util_visit_default()(tree, test, (node) => { + visit(tree, test, (node) => { // early exit if any urls match any ignored patterns if (IGNORE_PATTERNS.some((e) => e.test(node.url))) { return; @@ -102657,15 +70443,6 @@ const remarkTransformCloudDocsLinks = () => { }; ;// CONCATENATED MODULE: ./main.ts -var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; // stdlib @@ -102675,7 +70452,6 @@ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _argume // mdx processing -// @ts-expect-error - remark-mdx@1.6.22 has no types // plugins @@ -102702,160 +70478,158 @@ const SUB_PATH_MAPPINGS = [ * This function will also prune the target directory * of any files that are not in the source directory. * - * @param sourceRepo An absolute path to a GitHub repository on disk - * @param targetRepo An absolute path to a GitHub repository on disk + * @param sourceDir An absolute path to a GitHub repository on disk + * @param targetDir An absolute path to a GitHub repository on disk */ -function main(sourceRepo, targetRepo) { - return __awaiter(this, void 0, void 0, function* () { - const sourceRepoContentDir = external_path_.join(sourceRepo, 'website/docs'); - // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk - const sourceRepoPublicDir = external_path_.join(sourceRepo, 'website'); - const targetRepoContentDir = external_path_.join(targetRepo, 'website/docs'); - // this gets prepended to img reference **bases** (aka filename.extension only) - const targetRepoImageDir = external_path_.join(targetRepo, 'website/img/docs'); - const targetRepoLastSyncFile = external_path_.join(targetRepo, 'website/last-cloud-docs-sync.txt'); - // traverse source docs and accumulate mdx files for a given set of "subPaths" - let items = []; - for (const { source: subPath } of SUB_PATH_MAPPINGS) { - const src = external_path_.join(sourceRepoContentDir, subPath); - const docItems = klaw_sync_default()(src, { - nodir: true, - filter: filterFunc, - }); - items = items.concat(docItems); +async function main(sourceDir, targetDir) { + const sourceRepoContentDir = external_path_.join(sourceDir, 'website/docs'); + // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk + const sourceRepoPublicDir = external_path_.join(sourceDir, 'website'); + const targetRepoContentDir = external_path_.join(targetDir, 'website/docs'); + // this gets prepended to img reference **bases** (aka filename.extension only) + const targetRepoImageDir = external_path_.join(targetDir, 'website/img/docs'); + const targetRepoLastSyncFile = external_path_.join(targetDir, 'website/last-cloud-docs-sync.txt'); + // traverse source docs and accumulate mdx files for a given set of "subPaths" + let items = []; + for (const { source: subPath } of SUB_PATH_MAPPINGS) { + const src = external_path_.join(sourceRepoContentDir, subPath); + const docItems = klaw_sync_default()(src, { + nodir: true, + filter: filterFunc, + }); + items = items.concat(docItems); + } + // process each mdx file + for (const item of items) { + // ignore some files + if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + continue; } - // process each mdx file + // extract mdx content; ignore frontmatter + const fullContent = external_fs_.readFileSync(item.path, 'utf8'); + // eslint-disable-next-line prefer-const + let { content, data } = gray_matter_default()(fullContent); + data = transformObject(data, [ + // inject `source` frontmatter property + function injectSource(d) { + d.source = external_path_.basename(sourceDir); + return d; + }, + // replace cloud instances with enterprise + function replaceCloudWithEnterprise(d) { + // Some docs do not have all frontmatter properties. Make sure + // we do not assign `undefined` (which is invalid) in YAML + if (d.page_title) { + d.page_title = d.page_title.replace('Terraform Cloud', 'Terraform Enterprise'); + d.page_title = d.page_title.replace('HCP Terraform', 'Terraform Enterprise'); + } + if (d.description) { + d.description = d.description.replace('Terraform Cloud', 'Terraform Enterprise'); + d.description = d.description.replace('HCP Terraform', 'Terraform Enterprise'); + } + return d; + }, + ]); + const vfile = await remark() + .use(remarkMdx) + .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) + .use(remarkTransformCloudDocsLinks) // transforms link + .process(content); + // replace \-> with -> + const stringOutput = vfile.toString().replaceAll('\\->', '->'); + // overwrite original file with transformed content + const contents = gray_matter_default().stringify('\n' + stringOutput, data); + external_fs_.writeFileSync(item.path, contents); + } + // keep track of the files that were copied in the target repo + const copiedTargetRepoRelativePaths = []; + // Copy an entire directory + // --------------------------------------------- + // /{source}/cloud-docs/dir/some-doc.mdx + // ↓ ↓ ↓ ↓ + // /{target}/enterprise/dir/some-docs.mdx + // --------------------------------------------- + for (const { source, target } of SUB_PATH_MAPPINGS) { + const src = external_path_.join(sourceRepoContentDir, source); + const dest = external_path_.join(targetRepoContentDir, target); + const items = klaw_sync_default()(src, { + nodir: true, + filter: filterFunc, + }); for (const item of items) { // ignore some files if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { continue; } - // extract mdx content; ignore frontmatter - const fullContent = external_fs_.readFileSync(item.path, 'utf8'); - // eslint-disable-next-line prefer-const - let { content, data } = gray_matter_default()(fullContent); - data = transformObject(data, [ - // inject `source` frontmatter property - function injectSource(d) { - d.source = external_path_.basename(sourceRepo); - return d; - }, - // replace cloud instances with enterprise - function replaceCloudWithEnterprise(d) { - // Some docs do not have all frontmatter properties. Make sure - // we do not assign `undefined` (which is invalid) in YAML - if (d.page_title) { - d.page_title = d.page_title.replace('Terraform Cloud', 'Terraform Enterprise'); - d.page_title = d.page_title.replace('HCP Terraform', 'Terraform Enterprise'); - } - if (d.description) { - d.description = d.description.replace('Terraform Cloud', 'Terraform Enterprise'); - d.description = d.description.replace('HCP Terraform', 'Terraform Enterprise'); - } - return d; - }, - ]); - const vfile = yield remark_default()() - .use((remark_mdx_default())) - .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) - .use(remarkTransformCloudDocsLinks) // transforms link - .process(content); - // replace \-> with -> - const stringOutput = vfile.toString().replaceAll('\\->', '->'); - // overwrite original file with transformed content - const contents = gray_matter_default().stringify('\n' + stringOutput, data); - external_fs_.writeFileSync(item.path, contents); - } - // keep track of the files that were copied in the target repo - const copiedTargetRepoRelativePaths = []; - // Copy an entire directory - // --------------------------------------------- - // /{source}/cloud-docs/dir/some-doc.mdx - // ↓ ↓ ↓ ↓ - // /{target}/enterprise/dir/some-docs.mdx - // --------------------------------------------- - for (const { source, target } of SUB_PATH_MAPPINGS) { - const src = external_path_.join(sourceRepoContentDir, source); - const dest = external_path_.join(targetRepoContentDir, target); - const items = klaw_sync_default()(src, { - nodir: true, - filter: filterFunc, - }); - for (const item of items) { - // ignore some files - if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { - continue; - } - const destAbsolutePath = item.path.replace(src, dest); - external_fs_.mkdirSync(external_path_.dirname(destAbsolutePath), { recursive: true }); - external_fs_.copyFileSync(item.path, destAbsolutePath); - // accumulate copied files - const relativePath = external_path_.relative(targetRepo, destAbsolutePath); - copiedTargetRepoRelativePaths.push(relativePath); - } - } - // Copy images - for (const src of Array.from(imageSrcSet)) { - const basename = external_path_.basename(src); - const target = external_path_.join(targetRepoImageDir, basename); - external_fs_.mkdirSync(targetRepoImageDir, { recursive: true }); - external_fs_.copyFileSync(src, target); + const destAbsolutePath = item.path.replace(src, dest); + external_fs_.mkdirSync(external_path_.dirname(destAbsolutePath), { recursive: true }); + external_fs_.copyFileSync(item.path, destAbsolutePath); // accumulate copied files - const relativePath = external_path_.relative(targetRepo, target); + const relativePath = external_path_.relative(targetDir, destAbsolutePath); copiedTargetRepoRelativePaths.push(relativePath); } - // Read or Create and Read `last-cloud-docs-sync.txt` - if (!external_fs_.existsSync(targetRepoLastSyncFile)) { - logger.info('Creating `${targetRepoLastSyncFile}`'); - external_fs_.writeFileSync(targetRepoLastSyncFile, '', 'utf8'); - } - logger.info('Reading `${targetRepoLastSyncFile}`'); - // Any filename that is in this list, that was not just sync'd is considered stale; Prune. - // Then save over `last-cloud-docs-sync.txt` - const lastSync = external_fs_.readFileSync(targetRepoLastSyncFile) - .toString() - .split('\n') - // filter empty strings; This is encountered when creating - // the last-cloud-docs-sync.txt file for the first time. - .filter(Boolean); - // prune files and empty directories - lastSync - .filter((relativePath) => { - return !copiedTargetRepoRelativePaths.includes(relativePath); - }) - .forEach((relativePath) => { - const file = external_path_.join(targetRepo, relativePath); - // set force to true to ignore errors; - // This happens when a file is deleted from the source repo. - logger.info(`Deleting stale file: ${file}...`); - external_fs_.rmSync(file, { force: true }); - logger.info(`Deleted stale file: ${file}`); - recursiveRmEmptyParentDirs(file); - }); - // clear file - logger.info('Clearing `${targetRepoLastSyncFile}`'); - external_fs_.truncateSync(targetRepoLastSyncFile, 0); - const stream = external_fs_.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }); - for (const item of copiedTargetRepoRelativePaths) { - stream.write(`${item}\n`); - } - // wait for the stream to end - return new Promise((resolve) => { - stream.end(resolve); - }); + } + // Copy images + for (const src of Array.from(imageSrcSet)) { + const basename = external_path_.basename(src); + const target = external_path_.join(targetRepoImageDir, basename); + external_fs_.mkdirSync(targetRepoImageDir, { recursive: true }); + external_fs_.copyFileSync(src, target); + // accumulate copied files + const relativePath = external_path_.relative(targetDir, target); + copiedTargetRepoRelativePaths.push(relativePath); + } + // Read or Create and Read `last-cloud-docs-sync.txt` + if (!external_fs_.existsSync(targetRepoLastSyncFile)) { + lib_core.info('Creating `${targetRepoLastSyncFile}`'); + external_fs_.writeFileSync(targetRepoLastSyncFile, '', 'utf8'); + } + lib_core.info('Reading `${targetRepoLastSyncFile}`'); + // Any filename that is in this list, that was not just sync'd is considered stale; Prune. + // Then save over `last-cloud-docs-sync.txt` + const lastSync = external_fs_.readFileSync(targetRepoLastSyncFile) + .toString() + .split('\n') + // filter empty strings; This is encountered when creating + // the last-cloud-docs-sync.txt file for the first time. + .filter(Boolean); + // prune files and empty directories + lastSync + .filter((relativePath) => { + return !copiedTargetRepoRelativePaths.includes(relativePath); + }) + .forEach((relativePath) => { + const file = external_path_.join(targetDir, relativePath); + // set force to true to ignore errors; + // This happens when a file is deleted from the source repo. + lib_core.info(`Deleting stale file: ${file}...`); + external_fs_.rmSync(file, { force: true }); + lib_core.info(`Deleted stale file: ${file}`); + recursiveRmEmptyParentDirs(file); + }); + // clear file + lib_core.info('Clearing `${targetRepoLastSyncFile}`'); + external_fs_.truncateSync(targetRepoLastSyncFile, 0); + const stream = external_fs_.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }); + for (const item of copiedTargetRepoRelativePaths) { + stream.write(`${item}\n`); + } + // wait for the stream to end + return new Promise((resolve) => { + stream.end(resolve); }); } // This is a helper for pruning empty dirs for tests; // Git ignores empty dirs entirely but an in-memory filesystem doesn't. const recursiveRmEmptyParentDirs = (file) => { - logger.info(`Deleting empty parent dirs for ${file}...`); + lib_core.info(`Deleting empty parent dirs for ${file}...`); const dir = external_path_.dirname(file); if (external_fs_.existsSync(dir)) { const files = external_fs_.readdirSync(dir); if (files.length === 0) { // @ts-expect-error force is there but not typed correctly external_fs_.rmdirSync(dir, { force: true, recursive: true }); - logger.info(`Deleted empty parent dirs for ${file}`); + lib_core.info(`Deleted empty parent dirs for ${file}`); recursiveRmEmptyParentDirs(external_path_.dirname(dir)); } } @@ -102892,28 +70666,17 @@ const transformObject = (data, plugins) => { }; ;// CONCATENATED MODULE: ./index.ts -var index_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -function action() { - return index_awaiter(this, void 0, void 0, function* () { - // These are absolute paths, like: - // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} - const sourceRepo = core.getInput('source_repo'); - const targetRepo = core.getInput('target_repo'); - // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows - core.notice(`sourceRepo: ${sourceRepo}`); - core.notice(`targetRepo: ${targetRepo}`); - yield main(sourceRepo, targetRepo); - }); +async function action() { + // These are absolute paths, like: + // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} + const sourceDir = lib_core.getInput('source_dir'); + const targetDir = lib_core.getInput('target_dir'); + // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows + lib_core.notice(`sourceDir: ${sourceDir}`); + lib_core.notice(`targetDir: ${targetDir}`); + await main(sourceDir, targetDir); } action(); diff --git a/.github/actions/copy-cloud-docs-for-tfe/package-lock.json b/.github/actions/copy-cloud-docs-for-tfe/package-lock.json new file mode 100644 index 0000000000..f153f39127 --- /dev/null +++ b/.github/actions/copy-cloud-docs-for-tfe/package-lock.json @@ -0,0 +1,4844 @@ +{ + "name": "copy-cloud-docs-for-tfe", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "copy-cloud-docs-for-tfe", + "devDependencies": { + "@actions/core": "^1.11.1", + "@vercel/ncc": "^0.38.3", + "gray-matter": "^4.0.3", + "klaw-sync": "^7.0.0", + "mdast": "^2.3.2", + "ncc": "^0.3.6", + "remark": "^15.0.1", + "remark-mdx": "^3.1.0", + "unified": "^11.0.5", + "unist": "^0.0.1", + "unist-util-is": "^6.0.0", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz", + "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.6.0.tgz", + "integrity": "sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vercel/ncc": { + "version": "0.38.3", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.3.tgz", + "integrity": "sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==", + "dev": true, + "license": "MIT", + "bin": { + "ncc": "dist/ncc/cli.js" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "license": "ISC", + "dependencies": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/attach-ware": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/attach-ware/-/attach-ware-1.1.1.tgz", + "integrity": "sha512-OpavlXWZkyE7m28fpCWF/RmxCukC1edukJp9IKjEpZs/O11H3896DkLpK7lMiL8ZDx2yxo9FrZQaeHkyJGcIuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unherit": "^1.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "optionalDependencies": { + "fsevents": "^1.0.0" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha512-CQsjCRiNObI8AtTsNIBDRMQ4oMR83CzEswHYahClvul7gKk+lDQiOKv+5qh7LQWf5sh6jkZNispz/QlsZxyNgA==", + "dev": true, + "license": "MIT" + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/colors": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.3.tgz", + "integrity": "sha512-qTfM2pNFeMZcLvf/RbrVAzDEVttZjFhaApfx9dplNjvHSX88Ui66zBRb/4YGob/xUWxDceirgoC1lT676asfCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-posix-bracket": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend.js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/extend.js/-/extend.js-0.0.2.tgz", + "integrity": "sha512-kSK5oO9X2i9qUptwhkilKqBfLG322xXY2ZO6/dlPY/ozt0fc+Ac9Qo6hZE/RiRTau5XUvVv2y6z1G6lNZ8f1WA==", + "dev": true + }, + "node_modules/extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^2.0.0" + } + }, + "node_modules/globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha512-JPDtMSr0bt25W64q792rvlrSwIaZwqUAhqdYKSr57Wh/xBcQ5JDWLM85ndn+Q1WdBQXLb9YGCl0QN/T0HpqU0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^6.0.1", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/he/-/he-0.5.0.tgz", + "integrity": "sha512-DoufbNNOFzwRPy8uecq+j+VCPQ+JyDelHTmSgygrA5TsR8Cbw4Qcir5sGtWiusB4BdT89nmlaVDhSJOqC/33vw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha512-kniTIJmaZYiwa17eTtWIfm0K342seyugl6vuC8DiiyiRAJWAVlLkqGCI0Im0neo0TkXw+pRcKaBPRdcKHnQJ6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-primitive": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-7.0.0.tgz", + "integrity": "sha512-UQVrq/XIu/nqf/t89IAhc0sLy0x7VlE+Gv2XCouN4rp0RKrv/S4rx80O61V6LCHqoidBr3Sz28gWvobiPAH9UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "memfs": "^4.17.0" + } + }, + "node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha512-4vSow8gbiGnwdDNrpy1dyNaXWKSCIPop0EHdE8GrnngHoJujM3QhvHUN/igsYCgPoHo7pFOezlJ61Hlln0KHyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-table": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz", + "integrity": "sha512-9i/E3ZtVAoaDulRQjoPseX2X5pBNdeR8MInQb57JFvCAq4glz/w2q31eL0NHMKOntzy2D6X3plZDH4+OGuz5Fw==", + "dev": true, + "license": "MIT" + }, + "node_modules/math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mdast/-/mdast-2.3.2.tgz", + "integrity": "sha512-GyTRTczR3uAbXpxy56FOBXQueq3WST8aBG0T/xoV8jGBBr2YBLDhsCHyEuXg/yILWHLvqG4F54BKsLTyIKLX/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^2.0.0", + "ccount": "^1.0.0", + "chalk": "^1.0.0", + "chokidar": "^1.0.5", + "collapse-white-space": "^1.0.0", + "commander": "^2.0.0", + "concat-stream": "^1.0.0", + "debug": "^2.0.0", + "elegant-spinner": "^1.0.0", + "extend.js": "0.0.2", + "glob": "^6.0.1", + "globby": "^4.0.0", + "he": "^0.5.0", + "log-update": "^1.0.1", + "longest-streak": "^1.0.0", + "markdown-table": "^0.4.0", + "minimatch": "^3.0.0", + "npm-prefix": "^1.0.1", + "repeat-string": "^1.5.0", + "text-table": "^0.2.0", + "to-vfile": "^1.0.0", + "trim": "^0.0.1", + "trim-trailing-lines": "^1.0.0", + "unified": "^2.0.0", + "user-home": "^2.0.0", + "vfile": "^1.1.0", + "vfile-find-down": "^1.0.0", + "vfile-find-up": "^1.0.0", + "vfile-reporter": "^1.5.0", + "ware": "^1.3.0" + }, + "bin": { + "mdast": "bin/mdast" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast/node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mdast/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mdast/node_modules/longest-streak": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-1.0.0.tgz", + "integrity": "sha512-84jGpz/1j02Xm/L4y4uEXGxFFPHFabKjMHQ+rEPi0gPQbD5p0J3aZomvk0ZpUPpTtcVqhtSEq+4WNQbJjWiZ1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/mdast/node_modules/unified": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-2.1.4.tgz", + "integrity": "sha512-qa4nA26ms49OczPueTt7G46r89TOlwAJ4pEk2U4mwkV1wNhjttItF03SE/YnfkgWg14tzmAHXGhJp2GhDYwn1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "attach-ware": "^1.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "unherit": "^1.0.4", + "vfile": "^1.0.0", + "ware": "^1.3.0" + } + }, + "node_modules/mdast/node_modules/vfile": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz", + "integrity": "sha512-7Fz639rwERslMqQCuf1/0H4Tqe2q484Xl6X/jsKqrP7IjFcDODFURhv0GekMnImpbj9pTOojtqL7r39LJJkjGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/memfs": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.2.tgz", + "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nan": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ncc": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/ncc/-/ncc-0.3.6.tgz", + "integrity": "sha512-OXudTB2Ebt/FnOuDoPQbaa17+tdVqSOWA+gLfPxccWwsNED1uA2zEhpoB1hwdFC9yYbio/mdV5cvOtQI3Zrx1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "tracer": "^0.8.7", + "ws": "^2.3.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-prefix": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/npm-prefix/-/npm-prefix-1.2.0.tgz", + "integrity": "sha512-EkGZ7jtA2onsULFpnZ/P5S0DPy8w9qH1TVytPhY54s+dmtLXBmp1evt8W9nfg5JEay24K3bX9WWTIHR8WQcOJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.1.0", + "shellsubstitute": "^1.1.0", + "untildify": "^2.1.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha512-WhcHk576xg9y/iv6RWOuroZgsqvCbJN+XGvAypCJwLAYs2iWDp5LUmvaCdV6JR2O0SMBf8l6p7A94AyLCFVMlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "irregular-plurals": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/randomatic/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/readdirp/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/readdirp/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-equal-shallow": "^0.1.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "license": "ISC" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true, + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "license": "MIT", + "dependencies": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha512-cr7dZWLwOeaFBLTIuZeYdkfO7UzGIKhjYENJFAxUOMKWGaWDm2nJM2rzxNRm5Owu0DH3ApwNo6kx5idXZfb/Iw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shellsubstitute": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shellsubstitute/-/shellsubstitute-1.2.0.tgz", + "integrity": "sha512-CI1ViFC5a3ub86aaBmBVQ7kqg8eFypZLgBh+Bmq+ehHy9g7vu9kqCj5hS82cPzLwfdJRgiPB2hNHnd6oetiakQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true, + "license": "MIT" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/tinytim": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tinytim/-/tinytim-0.1.1.tgz", + "integrity": "sha512-NIpsp9lBIxPNzB++HnMmUd4byzJSVbbO4F+As1Gb1IG/YQT5QvmBDjpx8SpDS8fhGC+t+Qw8ldQgbcAIaU+2cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-vfile": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-1.0.0.tgz", + "integrity": "sha512-BHc+hdHwULe8x6xmQhSuTsiiPHyTCCf7dtH7l6WkBoYBR2rDfYtoJufKLDDAYGMfA+1XoRq44HfyjoB9vMBr1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vfile": "^1.0.0" + } + }, + "node_modules/to-vfile/node_modules/vfile": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz", + "integrity": "sha512-7Fz639rwERslMqQCuf1/0H4Tqe2q484Xl6X/jsKqrP7IjFcDODFURhv0GekMnImpbj9pTOojtqL7r39LJJkjGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tracer": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/tracer/-/tracer-0.8.15.tgz", + "integrity": "sha512-ZQzlhd6zZFIpAhACiZkxLjl65XqVwi8t8UEBVGRIHAQN6nj55ftJWiFell+WSqWCP/vEycrIbUSuiyMwul+TFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "colors": "1.2.3", + "dateformat": "3.0.3", + "mkdirp": "^0.5.1", + "tinytim": "0.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead", + "dev": true + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unist": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/unist/-/unist-0.0.1.tgz", + "integrity": "sha512-bnzuF8b6d47WubA4a5yLqFbuZz/v/NS6eRwUIdOaDmsqzwTlyv8yS1g3M7ISdtBQrigPD3qKK87Cu7zhEfCF3A==", + "deprecated": "Use @types/unist instead", + "dev": true + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true, + "license": "MIT" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-find-down": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vfile-find-down/-/vfile-find-down-1.0.0.tgz", + "integrity": "sha512-AOXiJrVKizToYfRosXd1p9Fq8b0u0qchvSwVF1/ue3JE7o7KuQ/UH24bNAPLDUG/RIM1DZ6zWtDsiLShcma4WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-vfile": "^1.0.0" + } + }, + "node_modules/vfile-find-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vfile-find-up/-/vfile-find-up-1.0.0.tgz", + "integrity": "sha512-t97P/jQswvX0n//+RB74Wj43VOg3tel2InzaJYryaBewd4uN4pNXuoH/F00PkI3U1fBp+w/SIyrTjzIzPwDODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-vfile": "^1.0.0" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-1.5.0.tgz", + "integrity": "sha512-VFF1LK0O8/nLmrPcc+5VMEnyP21BTzdVoq1rbxTaVt6cmSVk5MQs1POhkfY/cctndmZheNgirTcAMoiKj3aJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.0", + "log-symbols": "^1.0.2", + "plur": "^2.0.0", + "repeat-string": "^1.5.0", + "string-width": "^1.0.0", + "text-table": "^0.2.0", + "vfile-sort": "^1.0.0" + } + }, + "node_modules/vfile-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-1.0.0.tgz", + "integrity": "sha512-6qIalNEKUt2YyVFzyJptdEo9sm/pMrSKvOJ35lH4us9YeW08zRs3E9VbdJ0O0n2Thxc1TWINP5QVhucy/YiGPA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ware": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", + "integrity": "sha512-Y2HUDMktriUm+SR2gZWxlrszcgtXExlhQYZ8QJNYbl22jum00KIUcHJ/h/sdAXhWTJcbSkiMYN9Z2tWbWYSrrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "wrap-fn": "^0.1.0" + } + }, + "node_modules/wrap-fn": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", + "integrity": "sha512-xDLdGx0M8JQw9QDAC9s5NUxtg9MI09F6Vbxa2LYoSoCvzJnx2n81YMIfykmXEGsUvuLaxnblJTzhSOjUOX37ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "co": "3.1.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", + "integrity": "sha512-61a+9LgtYZxTq1hAonhX8Xwpo2riK4IOR/BIVxioFbCfc3QFKmpE4x9dLExfLHKtUfVZigYa36tThVhO57erEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.0.1", + "ultron": "~1.1.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/.github/actions/copy-cloud-docs-for-tfe/package.json b/.github/actions/copy-cloud-docs-for-tfe/package.json index 7efbe220da..bda443629a 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/package.json +++ b/.github/actions/copy-cloud-docs-for-tfe/package.json @@ -2,5 +2,18 @@ "name": "copy-cloud-docs-for-tfe", "scripts": { "build": "ncc build index.ts -o out" + }, + "devDependencies": { + "@actions/core": "^1.11.1", + "@vercel/ncc": "^0.38.3", + "gray-matter": "^4.0.3", + "klaw-sync": "^7.0.0", + "mdast": "^2.3.2", + "remark": "^15.0.1", + "remark-mdx": "^3.1.0", + "unified": "^11.0.5", + "unist": "^0.0.1", + "unist-util-is": "^6.0.0", + "unist-util-visit": "^5.0.0" } } diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts index 64ef63f4cb..4b214e0214 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts @@ -1,11 +1,13 @@ +// @ts-nocheck + // stdlib import * as fs from 'fs' import * as path from 'path' import * as assert from 'assert' // for creating custom remark plugin -import is from 'unist-util-is' // Use 4.1.0; 5+ is ESM -import visit from 'unist-util-visit' +import { is } from 'unist-util-is' // Use 4.1.0; 5+ is ESM +import { visit } from 'unist-util-visit' import type { Node } from 'unist' import type { Image } from 'mdast' import type { Plugin } from 'unified' diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts index 5126b60c08..a45e6d97cd 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts @@ -1,6 +1,8 @@ +// @ts-nocheck + // for creating custom remark plugin -import is from 'unist-util-is' // Use 4.1.0; 5+ is ESM -import visit from 'unist-util-visit' +import { is } from 'unist-util-is' // Use 4.1.0; 5+ is ESM +import { visit } from 'unist-util-visit' import type { Node } from 'unist' import type { Link, Definition } from 'mdast' import type { Plugin } from 'unified' diff --git a/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json b/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json index d0027d8dc9..df7d1e2c7d 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json +++ b/.github/actions/copy-cloud-docs-for-tfe/tsconfig.json @@ -1,7 +1,6 @@ { - "extends": "../../tsconfig.json", "compilerOptions": { - "target": "es2015", + "target": "ES2021", "moduleResolution": "node", "allowSyntheticDefaultImports": true }, diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index dac6b5f37e..de95c35fd8 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -75,12 +75,12 @@ jobs: with: ref: ${{env.release_branch}} - # - # Run our composite action - # name: Copy files - # uses: ./github/actions/copy-cloud-docs-for-tfe - # with: - # source_repo: ${{ env.workspace }}/${{ env.source_repo }} - # target_repo: ${{ env.workspace }}/${{ env.target_repo }} + - # Run our composite action + name: Copy files + uses: ./github/actions/copy-cloud-docs-for-tfe + with: + source_dir: ${{ env.workspace }}/${{ env.source_repo }} + target_dir: ${{ env.workspace }}/${{ env.target_repo }} - name: Open PR in Target Repo env: @@ -106,6 +106,9 @@ jobs: - [ ] @hashicorp/ptfe-review - [ ] @hashicorp/web-platform + + # secrets.WORKFLOW_TESTING_TOKEN requires permissions read:org, repo, workflow + run: | echo ${{ secrets.WORKFLOW_TESTING_TOKEN }} | gh auth login --with-token git config --global user.email "team-rel-eng@hashicorp.com" diff --git a/.gitignore b/.gitignore index e079bed6ed..56f405d097 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,6 @@ scripts/test-output/** # tfe-releases release notes workflow tfe-releases-repos.json + +# copy-cloud-docs-for-tfe action +.github/actions/copy-cloud-docs-for-tfe/node_modules From 813da4b2c665de543cf9ef5c13ea2c5f6f407b2b Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Mon, 19 May 2025 14:29:18 -0400 Subject: [PATCH 21/47] Only building only version metadata --- package.json | 1 + scripts/prebuild.mjs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/package.json b/package.json index 0041c25946..e5883c190b 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "scripts": { "dev": "npm run watch-content & dotenvx run -- next dev", "prebuild": "node ./scripts/prebuild.mjs", + "prebuild-only-version-metadata": "node ./scripts/prebuild.mjs --only-version-metadata", "build": "next build", "start": "next start", "test": "vitest", diff --git a/scripts/prebuild.mjs b/scripts/prebuild.mjs index 52779abe47..250064607b 100644 --- a/scripts/prebuild.mjs +++ b/scripts/prebuild.mjs @@ -36,6 +36,11 @@ async function main() { const versionMetadataJson = JSON.stringify(versionMetadata, null, 2) fs.writeFileSync(VERSION_METADATA_FILE, versionMetadataJson) + if (process.argv.includes('--only-version-metadata')) { + console.log('Only generating version metadata, skipping other steps.') + return + } + const docsPathsAllVersions = await gatherAllVersionsDocsPaths(versionMetadata) const docsPathsAllVersionsJson = JSON.stringify(docsPathsAllVersions, null, 2) fs.writeFileSync(DOCS_PATHS_ALL_VERSIONS_FILE, docsPathsAllVersionsJson) From 432800557a2859991f920484255d2ce457dac406 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Tue, 20 May 2025 09:49:09 -0400 Subject: [PATCH 22/47] Refactor to remove targetRepoLastSyncFile --- .../actions/copy-cloud-docs-for-tfe/main.ts | 431 ++++++++---------- 1 file changed, 185 insertions(+), 246 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts index 94ee12cd0f..04ee43a0fa 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/main.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -13,8 +13,6 @@ import { remark } from 'remark' import remarkMdx from 'remark-mdx' -import * as core from '@actions/core' - // plugins import { remarkGetImages } from './remark-get-images-plugin' import { remarkTransformCloudDocsLinks } from './remark-transfrom-cloud-docs-links' @@ -26,15 +24,58 @@ const IGNORE_LIST = ['cloud-docs/index.mdx'] export const IGNORE_PATTERNS: RegExp[] = [/cloud-docs\/agents/i] const SUB_PATH_MAPPINGS: { - source: string - target: string + source: string + target: string }[] = [ - { - source: 'cloud-docs', - target: 'enterprise', - }, + { + source: 'cloud-docs', + target: 'enterprise', + }, ] +/** + * This is a helper to be passed to `walk` dry up repeated logic + * for ignore certain files. + */ +const filterFunc = (item: walk.Item) => { + // if the item matches a IGNORE_PATTERNS expression, exclude it + if ( + IGNORE_PATTERNS.some((pattern) => { + return pattern.test(item.path) + }) + ) { + return false + } + + // Check files for `tfc_only` frontmatter property; Ignore them if true + if (item.stats.isFile()) { + const fullContent = fs.readFileSync(item.path, 'utf8') + const { data } = matter(fullContent) + if (data.tfc_only == true) { + return false + } + } + + return true +} + +/** + * A helper that accepts a data object and an array of functions that + * receive the object as an arg and transform it. + */ +const transformObject = <T = Record<string, any>>( + data: T, + plugins: Array<(data: T) => T>, +): T => { + let result = data + + plugins.forEach((fn) => { + result = fn(result) + }) + + return result +} + /** * This function will copy 3 things * - MDX files @@ -50,243 +91,141 @@ const SUB_PATH_MAPPINGS: { * @param targetDir An absolute path to a GitHub repository on disk */ export async function main( - sourceDir: string, - targetDir: string + sourceDir: string, + targetDir: string, ): Promise<void> { - const sourceRepoContentDir = path.join(sourceDir, 'website/docs') - // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk - const sourceRepoPublicDir = path.join(sourceDir, 'website') - - const targetRepoContentDir = path.join(targetDir, 'website/docs') - // this gets prepended to img reference **bases** (aka filename.extension only) - const targetRepoImageDir = path.join(targetDir, 'website/img/docs') - const targetRepoLastSyncFile = path.join( - targetDir, - 'website/last-cloud-docs-sync.txt' - ) - - // traverse source docs and accumulate mdx files for a given set of "subPaths" - let items: ReadonlyArray<walk.Item> = [] - - for (const { source: subPath } of SUB_PATH_MAPPINGS) { - const src = path.join(sourceRepoContentDir, subPath) - const docItems = walk(src, { - nodir: true, - filter: filterFunc, - }) - items = items.concat(docItems) - } - - // process each mdx file - for (const item of items) { - // ignore some files - if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { - continue - } - - // extract mdx content; ignore frontmatter - const fullContent = fs.readFileSync(item.path, 'utf8') - - // eslint-disable-next-line prefer-const - let { content, data } = matter(fullContent) - - data = transformObject(data, [ - // inject `source` frontmatter property - function injectSource(d) { - d.source = path.basename(sourceDir) - return d - }, - // replace cloud instances with enterprise - function replaceCloudWithEnterprise(d) { - // Some docs do not have all frontmatter properties. Make sure - // we do not assign `undefined` (which is invalid) in YAML - if (d.page_title) { - d.page_title = d.page_title.replace( - 'Terraform Cloud', - 'Terraform Enterprise' - ) - d.page_title = d.page_title.replace( - 'HCP Terraform', - 'Terraform Enterprise' - ) - } - - if (d.description) { - d.description = d.description.replace( - 'Terraform Cloud', - 'Terraform Enterprise' - ) - d.description = d.description.replace( - 'HCP Terraform', - 'Terraform Enterprise' - ) - } - return d - }, - ]) - - const vfile = await remark() - .use(remarkMdx) - .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) - .use(remarkTransformCloudDocsLinks) // transforms link - .process(content) - - // replace \-> with -> - const stringOutput = vfile.toString().replaceAll('\\->', '->') - - // overwrite original file with transformed content - const contents = matter.stringify('\n' + stringOutput, data) - fs.writeFileSync(item.path, contents) - } - - // keep track of the files that were copied in the target repo - const copiedTargetRepoRelativePaths: string[] = [] - - // Copy an entire directory - // --------------------------------------------- - // /{source}/cloud-docs/dir/some-doc.mdx - // ↓ ↓ ↓ ↓ - // /{target}/enterprise/dir/some-docs.mdx - // --------------------------------------------- - for (const { source, target } of SUB_PATH_MAPPINGS) { - const src = path.join(sourceRepoContentDir, source) - const dest = path.join(targetRepoContentDir, target) - - const items = walk(src, { - nodir: true, - filter: filterFunc, - }) - - for (const item of items) { - // ignore some files - if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { - continue - } - - const destAbsolutePath = item.path.replace(src, dest) - fs.mkdirSync(path.dirname(destAbsolutePath), { recursive: true }) - fs.copyFileSync(item.path, destAbsolutePath) - - // accumulate copied files - const relativePath = path.relative(targetDir, destAbsolutePath) - copiedTargetRepoRelativePaths.push(relativePath) - } - } - - // Copy images - for (const src of Array.from(imageSrcSet)) { - const basename = path.basename(src) - const target = path.join(targetRepoImageDir, basename) - - fs.mkdirSync(targetRepoImageDir, { recursive: true }) - fs.copyFileSync(src, target) - - // accumulate copied files - const relativePath = path.relative(targetDir, target) - copiedTargetRepoRelativePaths.push(relativePath) - } - - // Read or Create and Read `last-cloud-docs-sync.txt` - if (!fs.existsSync(targetRepoLastSyncFile)) { - core.info('Creating `${targetRepoLastSyncFile}`') - fs.writeFileSync(targetRepoLastSyncFile, '', 'utf8') - } - - core.info('Reading `${targetRepoLastSyncFile}`') - // Any filename that is in this list, that was not just sync'd is considered stale; Prune. - // Then save over `last-cloud-docs-sync.txt` - const lastSync = fs - .readFileSync(targetRepoLastSyncFile) - .toString() - .split('\n') - // filter empty strings; This is encountered when creating - // the last-cloud-docs-sync.txt file for the first time. - .filter(Boolean) - - // prune files and empty directories - lastSync - .filter((relativePath) => { - return !copiedTargetRepoRelativePaths.includes(relativePath) - }) - .forEach((relativePath) => { - const file = path.join(targetDir, relativePath) - // set force to true to ignore errors; - // This happens when a file is deleted from the source repo. - core.info(`Deleting stale file: ${file}...`) - fs.rmSync(file, { force: true }) - core.info(`Deleted stale file: ${file}`) - - recursiveRmEmptyParentDirs(file) - }) - - // clear file - core.info('Clearing `${targetRepoLastSyncFile}`') - fs.truncateSync(targetRepoLastSyncFile, 0) - - const stream = fs.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }) - for (const item of copiedTargetRepoRelativePaths) { - stream.write(`${item}\n`) - } - - // wait for the stream to end - return new Promise((resolve) => { - stream.end(resolve) - }) -} - -// This is a helper for pruning empty dirs for tests; -// Git ignores empty dirs entirely but an in-memory filesystem doesn't. -const recursiveRmEmptyParentDirs = (file: string) => { - core.info(`Deleting empty parent dirs for ${file}...`) - const dir = path.dirname(file) - - if (fs.existsSync(dir)) { - const files = fs.readdirSync(dir) - if (files.length === 0) { - // @ts-expect-error force is there but not typed correctly - fs.rmdirSync(dir, { force: true, recursive: true }) - core.info(`Deleted empty parent dirs for ${file}`) - - recursiveRmEmptyParentDirs(path.dirname(dir)) - } - } -} - -/** - * This is a helper to be passed to `walk` dry up repeated logic - * for ignore certain files. - */ -const filterFunc = (item: walk.Item) => { - // if the item matches a IGNORE_PATTERNS expression, exclude it - if (IGNORE_PATTERNS.some((pattern) => pattern.test(item.path))) { - return false - } - - // Check files for `tfc_only` frontmatter property; Ignore them if true - if (item.stats.isFile()) { - const fullContent = fs.readFileSync(item.path, 'utf8') - const { data } = matter(fullContent) - if (data.tfc_only == true) { - return false - } - } - - return true -} - -/** - * A helper that accepts a data object and an array of functions that - * receive the object as an arg and transform it. - */ -const transformObject = <T = Record<string, any>>( - data: T, - plugins: Array<(data: T) => T> -): T => { - let result = data - - plugins.forEach((fn) => { - result = fn(result) - }) - - return result + const sourceRepoContentDir = path.join(sourceDir, 'docs') + const sourceRepoPublicDir = path.join(sourceDir, 'img/docs') + + const targetRepoContentDir = path.join(targetDir, 'docs') + const targetRepoImageDir = path.join(targetDir, 'img') + + // traverse source docs and accumulate mdx files for a given set of "subPaths" + let items: ReadonlyArray<walk.Item> = [] + + for (const { source: subPath } of SUB_PATH_MAPPINGS) { + const src = path.join(sourceRepoContentDir, subPath) + const docItems = walk(src, { + nodir: true, + filter: filterFunc, + }) + items = items.concat(docItems) + } + + // process each mdx file + for (const item of items) { + // ignore some files + if ( + IGNORE_LIST.some((ignore) => { + return item.path.endsWith(ignore) + }) + ) { + continue + } + + // extract mdx content; ignore frontmatter + const fullContent = fs.readFileSync(item.path, 'utf8') + + // eslint-disable-next-line prefer-const + let { content, data } = matter(fullContent) + + data = transformObject(data, [ + // inject `source` frontmatter property + function injectSource(d) { + d.source = path.basename(sourceDir) + return d + }, + // replace cloud instances with enterprise + function replaceCloudWithEnterprise(d) { + // Some docs do not have all frontmatter properties. Make sure + // we do not assign `undefined` (which is invalid) in YAML + if (d.page_title) { + d.page_title = d.page_title.replace( + 'Terraform Cloud', + 'Terraform Enterprise', + ) + d.page_title = d.page_title.replace( + 'HCP Terraform', + 'Terraform Enterprise', + ) + } + + if (d.description) { + d.description = d.description.replace( + 'Terraform Cloud', + 'Terraform Enterprise', + ) + d.description = d.description.replace( + 'HCP Terraform', + 'Terraform Enterprise', + ) + } + return d + }, + ]) + + const vfile = await remark() + .use(remarkMdx) + .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) + .use(remarkTransformCloudDocsLinks) // transforms link + .process(content) + + // replace \-> with -> + const stringOutput = vfile.toString().replaceAll('\\->', '->') + + // overwrite original file with transformed content + const contents = matter.stringify('\n' + stringOutput, data) + fs.writeFileSync(item.path, contents) + } + + // keep track of the files that were copied in the target repo + const copiedTargetRepoRelativePaths: string[] = [] + + // Copy an entire directory + // --------------------------------------------- + // /{source}/cloud-docs/dir/some-doc.mdx + // ↓ ↓ ↓ ↓ + // /{target}/enterprise/dir/some-docs.mdx + // --------------------------------------------- + for (const { source, target } of SUB_PATH_MAPPINGS) { + const src = path.join(sourceRepoContentDir, source) + const dest = path.join(targetRepoContentDir, target) + + const items = walk(src, { + nodir: true, + filter: filterFunc, + }) + + for (const item of items) { + // ignore some files + if ( + IGNORE_LIST.some((ignore) => { + return item.path.endsWith(ignore) + }) + ) { + continue + } + + const destAbsolutePath = item.path.replace(src, dest) + fs.mkdirSync(path.dirname(destAbsolutePath), { recursive: true }) + fs.copyFileSync(item.path, destAbsolutePath) + + // accumulate copied files + const relativePath = path.relative(targetDir, destAbsolutePath) + copiedTargetRepoRelativePaths.push(relativePath) + } + } + + // Copy images + for (const src of Array.from(imageSrcSet)) { + const basename = path.basename(src) + const target = path.join(targetRepoImageDir, basename) + + fs.mkdirSync(targetRepoImageDir, { recursive: true }) + fs.copyFileSync(src, target) + + // accumulate copied files + const relativePath = path.relative(targetDir, target) + copiedTargetRepoRelativePaths.push(relativePath) + } } From c0dc4e3e2f7b63b5417d07ad73f12d0cf13adb5e Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Tue, 20 May 2025 15:19:03 -0400 Subject: [PATCH 23/47] Downgrade remark to fix mdx v2 errors --- .../copy-cloud-docs-for-tfe/package-lock.json | 2192 +++++++++-------- .../copy-cloud-docs-for-tfe/package.json | 5 +- 2 files changed, 1110 insertions(+), 1087 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/package-lock.json b/.github/actions/copy-cloud-docs-for-tfe/package-lock.json index f153f39127..c3d2ab5d03 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/package-lock.json +++ b/.github/actions/copy-cloud-docs-for-tfe/package-lock.json @@ -12,8 +12,8 @@ "klaw-sync": "^7.0.0", "mdast": "^2.3.2", "ncc": "^0.3.6", - "remark": "^15.0.1", - "remark-mdx": "^3.1.0", + "remark": "^12.0.0", + "remark-mdx": "^1.6.22", "unified": "^11.0.5", "unist": "^0.0.1", "unist-util-is": "^6.0.0", @@ -59,6 +59,275 @@ "dev": true, "license": "MIT" }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", + "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", + "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters/node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -69,6 +338,59 @@ "node": ">=14" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@jsonjoy.com/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", @@ -126,60 +448,17 @@ "tslib": "2" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", "dev": true, "license": "MIT", - "dependencies": { - "@types/unist": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -197,29 +476,6 @@ "ncc": "dist/ncc/cli.js" } }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", @@ -549,9 +805,9 @@ } }, "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", "dev": true, "license": "MIT", "funding": { @@ -577,9 +833,9 @@ } }, "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true, "license": "MIT", "funding": { @@ -588,9 +844,9 @@ } }, "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", "dev": true, "license": "MIT", "funding": { @@ -599,9 +855,9 @@ } }, "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", "dev": true, "license": "MIT", "funding": { @@ -610,9 +866,9 @@ } }, "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true, "license": "MIT", "funding": { @@ -798,6 +1054,13 @@ "typedarray": "^0.0.6" } }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -843,20 +1106,6 @@ } } }, - "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -959,32 +1208,6 @@ "node": ">=4" } }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", @@ -1168,6 +1391,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -1224,6 +1457,16 @@ "is-glob": "^2.0.0" } }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/globby": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", @@ -1457,9 +1700,9 @@ } }, "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true, "license": "MIT", "funding": { @@ -1467,18 +1710,28 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "node_modules/is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", "dev": true, "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", "url": "https://github.com/sponsors/wooorm" } }, @@ -1502,6 +1755,22 @@ "dev": true, "license": "MIT" }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-data-descriptor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", @@ -1516,9 +1785,9 @@ } }, "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true, "license": "MIT", "funding": { @@ -1610,9 +1879,9 @@ } }, "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true, "license": "MIT", "funding": { @@ -1702,6 +1971,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -1712,6 +1992,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1732,6 +2023,13 @@ "node": ">=0.10.0" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -1746,6 +2044,32 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -1767,6 +2091,13 @@ "memfs": "^4.17.0" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -1795,9 +2126,9 @@ } }, "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true, "license": "MIT", "funding": { @@ -1828,6 +2159,17 @@ "node": ">=0.10.0" } }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/markdown-table": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz", @@ -1884,157 +2226,63 @@ "mdast": "bin/mdast" } }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { + "node_modules/mdast-util-compact": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" + "unist-util-visit": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "node_modules/mdast-util-compact/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "license": "MIT" }, - "node_modules/mdast-util-phrasing": { + "node_modules/mdast-util-compact/node_modules/unist-util-is": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "node_modules/mdast-util-compact/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "node_modules/mdast-util-compact/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" }, "funding": { "type": "opencollective", @@ -2052,17 +2300,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast/node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/mdast/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2128,648 +2365,24 @@ "license": "MIT" }, "node_modules/memfs": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.2.tgz", - "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.3.0", - "tree-dump": "^1.0.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">= 4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", - "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", - "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^3.0.0", - "micromark-extension-mdx-jsx": "^3.0.0", - "micromark-extension-mdx-md": "^2.0.0", - "micromark-extension-mdxjs-esm": "^3.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", - "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", - "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.2.tgz", + "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } }, "node_modules/micromatch": { "version": "2.3.11", @@ -3161,32 +2774,24 @@ } }, "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true, - "license": "MIT" - }, "node_modules/parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -3223,6 +2828,20 @@ "node": ">=0.10.0" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -3522,214 +3141,512 @@ "node": ">=0.10.0" } }, - "node_modules/readdirp/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/readdirp/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-equal-shallow": "^0.1.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", + "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/remark-mdx/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-mdx/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/remark-mdx/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/remark-mdx/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "@types/unist": "^2.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readdirp/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/remark-mdx/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/remark-mdx/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readdirp/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", "dev": true, "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readdirp/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/remark-stringify/node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "repeat-string": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/readdirp/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/remark/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "dev": true, "license": "MIT" }, - "node_modules/regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "node_modules/remark/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true, "license": "MIT", - "dependencies": { - "is-equal-shallow": "^0.1.3" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/remark/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/remark/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/remark/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true, "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/remark": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", - "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "node_modules/remark/node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "node_modules/remark/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dev": true, "license": "MIT", "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" + "@types/unist": "^2.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "node_modules/remark/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "node_modules/remark/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, "funding": { "type": "opencollective", @@ -3763,6 +3680,27 @@ "node": ">=0.10" } }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -3840,6 +3778,16 @@ "node": ">=4" } }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -4071,6 +4019,17 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -4145,14 +4104,15 @@ } }, "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", "dev": true, "license": "MIT", "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" }, "funding": { "type": "github", @@ -4202,6 +4162,19 @@ "node": ">=0.8.0" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4536,14 +4509,63 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0" + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" }, "funding": { "type": "opencollective", @@ -4743,6 +4765,17 @@ "to-vfile": "^1.0.0" } }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -4828,17 +4861,6 @@ "engines": { "node": ">=0.4" } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } } } diff --git a/.github/actions/copy-cloud-docs-for-tfe/package.json b/.github/actions/copy-cloud-docs-for-tfe/package.json index bda443629a..d690608765 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/package.json +++ b/.github/actions/copy-cloud-docs-for-tfe/package.json @@ -9,8 +9,9 @@ "gray-matter": "^4.0.3", "klaw-sync": "^7.0.0", "mdast": "^2.3.2", - "remark": "^15.0.1", - "remark-mdx": "^3.1.0", + "ncc": "^0.3.6", + "remark": "^12.0.0", + "remark-mdx": "^1.6.22", "unified": "^11.0.5", "unist": "^0.0.1", "unist-util-is": "^6.0.0", From 8439ce211d3c3489838b93377cb5c07a28d1d40e Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Tue, 20 May 2025 15:20:15 -0400 Subject: [PATCH 24/47] Get Copy cloud-docs for TFE working --- .../copy-cloud-docs-for-tfe/action.yml | 7 +-- .../actions/copy-cloud-docs-for-tfe/index.ts | 12 +--- .../actions/copy-cloud-docs-for-tfe/main.ts | 61 +++++++++++++------ .../remark-get-images-plugin.ts | 4 +- .github/workflows/copy-cloud-docs-for-tfe.yml | 3 +- 5 files changed, 50 insertions(+), 37 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/action.yml b/.github/actions/copy-cloud-docs-for-tfe/action.yml index 1fe1731373..0342ae9e54 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/action.yml +++ b/.github/actions/copy-cloud-docs-for-tfe/action.yml @@ -4,9 +4,6 @@ runs: using: 'node20' main: 'out/index.js' inputs: - source_dir: + new_TFE_version: required: true - description: 'The absolute path from which to copy files. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/cloud-docs' - target_dir: - required: true - description: 'The absolute path to which to copy files. Ex: /home/runner/work/mktg-content-workflows/mktg-content-workflows/ptfe-releases' + description: 'The new TFE version to create and copy docs into.' diff --git a/.github/actions/copy-cloud-docs-for-tfe/index.ts b/.github/actions/copy-cloud-docs-for-tfe/index.ts index 70d0ddcedf..da331a89c6 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/index.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/index.ts @@ -3,16 +3,10 @@ import * as core from '@actions/core' import { main } from './main' async function action() { - // These are absolute paths, like: - // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} - const sourceDir = core.getInput('source_dir') - const targetDir = core.getInput('target_dir') + // const newTFEVersion = core.getInput('new_TFE_version') + const newTFEVersion = 'v000011-1' - // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows - core.notice(`sourceDir: ${sourceDir}`) - core.notice(`targetDir: ${targetDir}`) - - await main(sourceDir, targetDir) + await main(newTFEVersion) } action() diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts index 04ee43a0fa..99ceb85e50 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/main.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -9,7 +9,7 @@ import walk from 'klaw-sync' import matter from 'gray-matter' // mdx processing -import { remark } from 'remark' +import remark from 'remark' import remarkMdx from 'remark-mdx' @@ -87,24 +87,47 @@ const transformObject = <T = Record<string, any>>( * This function will also prune the target directory * of any files that are not in the source directory. * - * @param sourceDir An absolute path to a GitHub repository on disk - * @param targetDir An absolute path to a GitHub repository on disk + * @param newTFEVersion An absolute path to a GitHub repository on disk */ export async function main( - sourceDir: string, - targetDir: string, + // sourceDir: string, + // targetDir: string, + newTFEVersion: string, ): Promise<void> { - const sourceRepoContentDir = path.join(sourceDir, 'docs') - const sourceRepoPublicDir = path.join(sourceDir, 'img/docs') + const newTFEVersionDir = path.join('./content/ptfe-releases', newTFEVersion) - const targetRepoContentDir = path.join(targetDir, 'docs') - const targetRepoImageDir = path.join(targetDir, 'img') + // Create a new folder for the new TFE version + // if (fs.existsSync(targetDir)) { + // throw new Error(`Directory already exists: ${targetDir}`) + // } + // fs.mkdirSync(targetDir, { recursive: true }) + + const HCPsourceDir = './content/terraform-docs-common' + + const HCPContentDir = path.join(HCPsourceDir, 'docs') + + const newTFEVersionContentDir = path.join(newTFEVersionDir, 'docs') + const newTFEVersionImageDir = path.join(newTFEVersionDir, 'img/docs') + + + // Read version metadata and get the latest version of ptfe-releases + // const versionMetadataPath = path.resolve('app/api/versionMetadata.json') + // const versionMetadata = JSON.parse(fs.readFileSync(versionMetadataPath, 'utf8')) + + // const ptfeReleases = versionMetadata['ptfe-releases'] + // if (!ptfeReleases || ptfeReleases.length === 0) { + // throw new Error('No ptfe-releases found in versionMetadata.json') + // } + + // const latestPtfeRelease = ptfeReleases[0] + + // Actually don't think I need this // traverse source docs and accumulate mdx files for a given set of "subPaths" let items: ReadonlyArray<walk.Item> = [] for (const { source: subPath } of SUB_PATH_MAPPINGS) { - const src = path.join(sourceRepoContentDir, subPath) + const src = path.join(HCPContentDir, subPath) const docItems = walk(src, { nodir: true, filter: filterFunc, @@ -132,7 +155,7 @@ export async function main( data = transformObject(data, [ // inject `source` frontmatter property function injectSource(d) { - d.source = path.basename(sourceDir) + d.source = path.basename(HCPsourceDir) return d }, // replace cloud instances with enterprise @@ -166,8 +189,8 @@ export async function main( const vfile = await remark() .use(remarkMdx) - .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) - .use(remarkTransformCloudDocsLinks) // transforms link + .use(remarkGetImages, HCPsourceDir, imageSrcSet) + .use(remarkTransformCloudDocsLinks) .process(content) // replace \-> with -> @@ -188,8 +211,8 @@ export async function main( // /{target}/enterprise/dir/some-docs.mdx // --------------------------------------------- for (const { source, target } of SUB_PATH_MAPPINGS) { - const src = path.join(sourceRepoContentDir, source) - const dest = path.join(targetRepoContentDir, target) + const src = path.join(HCPContentDir, source) + const dest = path.join(newTFEVersionContentDir, target) const items = walk(src, { nodir: true, @@ -211,7 +234,7 @@ export async function main( fs.copyFileSync(item.path, destAbsolutePath) // accumulate copied files - const relativePath = path.relative(targetDir, destAbsolutePath) + const relativePath = path.relative(newTFEVersionDir, destAbsolutePath) copiedTargetRepoRelativePaths.push(relativePath) } } @@ -219,13 +242,13 @@ export async function main( // Copy images for (const src of Array.from(imageSrcSet)) { const basename = path.basename(src) - const target = path.join(targetRepoImageDir, basename) + const target = path.join(newTFEVersionImageDir, basename) - fs.mkdirSync(targetRepoImageDir, { recursive: true }) + fs.mkdirSync(newTFEVersionImageDir, { recursive: true }) fs.copyFileSync(src, target) // accumulate copied files - const relativePath = path.relative(targetDir, target) + const relativePath = path.relative(newTFEVersionDir, target) copiedTargetRepoRelativePaths.push(relativePath) } } diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts index 4b214e0214..c2761236b7 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts @@ -13,7 +13,7 @@ import type { Image } from 'mdast' import type { Plugin } from 'unified' export const remarkGetImages: Plugin<[string, Set<string>]> = ( - sourceRepoPublicDir, + HCPsourceDir, imageSrcSet ) => { const test = (node: Node): node is Image => { @@ -22,7 +22,7 @@ export const remarkGetImages: Plugin<[string, Set<string>]> = ( return function (tree) { visit<Image>(tree, test, (node) => { - const src = path.join(sourceRepoPublicDir, node.url) + const src = path.join(HCPsourceDir, node.url) assert.ok(fs.existsSync(src), '[getImagesPlugin] image not found: ' + src) imageSrcSet.add(src) }) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index de95c35fd8..8f078f45fe 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -79,8 +79,7 @@ jobs: name: Copy files uses: ./github/actions/copy-cloud-docs-for-tfe with: - source_dir: ${{ env.workspace }}/${{ env.source_repo }} - target_dir: ${{ env.workspace }}/${{ env.target_repo }} + new_TFE_version: ${{env.SERIES}}-${{env.RELEASE}} - name: Open PR in Target Repo env: From ac124bf0a4db0f46b44ae17e6199f4526d7a324c Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Tue, 20 May 2025 15:24:25 -0400 Subject: [PATCH 25/47] Check if the branch name already exists --- .github/workflows/copy-cloud-docs-for-tfe.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 8f078f45fe..25493c09c6 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -108,15 +108,24 @@ jobs: # secrets.WORKFLOW_TESTING_TOKEN requires permissions read:org, repo, workflow + + run: | echo ${{ secrets.WORKFLOW_TESTING_TOKEN }} | gh auth login --with-token git config --global user.email "team-rel-eng@hashicorp.com" git config --global user.name "tfe-release-bot" + + # Check if branch already exists on origin + if git ls-remote --exit-code --heads origin "${{env.branch_name}}"; then + echo "❌ branch name ${{env.branch_name}} already exists, please delete it from remote/origin and try again. (i.e. git push origin --delete ${{env.branch_name}})" >> $GITHUB_STEP_SUMMARY + exit 1 + fi + git checkout -b ${{env.branch_name}} - echo "This is a test file." > test.txt git add . git commit -m "Automated Docs PR" --no-verify git push origin HEAD + gh pr create \ --body="${{env.pr_body}}" \ --title="Automated Docs PR" \ @@ -124,4 +133,5 @@ jobs: --head ${{env.branch_name}} \ --base develop url=$(gh pr view --json url --jq '.url') + echo "**Automated PR URL**: ${url}" >> $GITHUB_STEP_SUMMARY From b9991dd0b2d8fa88632297bb40b4a73e17bbb888 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Tue, 20 May 2025 15:34:09 -0400 Subject: [PATCH 26/47] Fix type errors --- .../actions/copy-cloud-docs-for-tfe/index.ts | 8 ++--- .../actions/copy-cloud-docs-for-tfe/main.ts | 17 +++++----- .../remark-get-images-plugin.ts | 26 ++++++++------- .../remark-transfrom-cloud-docs-links.ts | 32 ++++++++++--------- 4 files changed, 44 insertions(+), 39 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/index.ts b/.github/actions/copy-cloud-docs-for-tfe/index.ts index da331a89c6..7b884c72c4 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/index.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/index.ts @@ -1,12 +1,12 @@ -import * as core from '@actions/core' +// import * as core from '@actions/core' import { main } from './main' async function action() { - // const newTFEVersion = core.getInput('new_TFE_version') - const newTFEVersion = 'v000011-1' + // const newTFEVersion = core.getInput('new_TFE_version') + const newTFEVersion = 'v000011-1' - await main(newTFEVersion) + await main(newTFEVersion) } action() diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts index 99ceb85e50..69b2b91cdf 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/main.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -40,7 +40,7 @@ const SUB_PATH_MAPPINGS: { const filterFunc = (item: walk.Item) => { // if the item matches a IGNORE_PATTERNS expression, exclude it if ( - IGNORE_PATTERNS.some((pattern) => { + IGNORE_PATTERNS.some((pattern: RegExp) => { return pattern.test(item.path) }) ) { @@ -69,7 +69,7 @@ const transformObject = <T = Record<string, any>>( ): T => { let result = data - plugins.forEach((fn) => { + plugins.forEach((fn: (data: T) => T) => { result = fn(result) }) @@ -96,7 +96,7 @@ export async function main( ): Promise<void> { const newTFEVersionDir = path.join('./content/ptfe-releases', newTFEVersion) - // Create a new folder for the new TFE version + // Create a new folder for the new TFE version // if (fs.existsSync(targetDir)) { // throw new Error(`Directory already exists: ${targetDir}`) // } @@ -109,7 +109,6 @@ export async function main( const newTFEVersionContentDir = path.join(newTFEVersionDir, 'docs') const newTFEVersionImageDir = path.join(newTFEVersionDir, 'img/docs') - // Read version metadata and get the latest version of ptfe-releases // const versionMetadataPath = path.resolve('app/api/versionMetadata.json') // const versionMetadata = JSON.parse(fs.readFileSync(versionMetadataPath, 'utf8')) @@ -139,7 +138,7 @@ export async function main( for (const item of items) { // ignore some files if ( - IGNORE_LIST.some((ignore) => { + IGNORE_LIST.some((ignore: string) => { return item.path.endsWith(ignore) }) ) { @@ -154,12 +153,12 @@ export async function main( data = transformObject(data, [ // inject `source` frontmatter property - function injectSource(d) { + function injectSource(d: { [key: string]: any }) { d.source = path.basename(HCPsourceDir) return d }, // replace cloud instances with enterprise - function replaceCloudWithEnterprise(d) { + function replaceCloudWithEnterprise(d: { [key: string]: any }) { // Some docs do not have all frontmatter properties. Make sure // we do not assign `undefined` (which is invalid) in YAML if (d.page_title) { @@ -189,7 +188,9 @@ export async function main( const vfile = await remark() .use(remarkMdx) + // @ts-expect-error remark is being passed in through the pipeline .use(remarkGetImages, HCPsourceDir, imageSrcSet) + // @ts-expect-error remark is being passed in through the pipeline .use(remarkTransformCloudDocsLinks) .process(content) @@ -222,7 +223,7 @@ export async function main( for (const item of items) { // ignore some files if ( - IGNORE_LIST.some((ignore) => { + IGNORE_LIST.some((ignore: string) => { return item.path.endsWith(ignore) }) ) { diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts index c2761236b7..c06096370a 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-get-images-plugin.ts @@ -1,4 +1,6 @@ +/* eslint-disable */ // @ts-nocheck +// TODO: fix types // stdlib import * as fs from 'fs' @@ -13,18 +15,18 @@ import type { Image } from 'mdast' import type { Plugin } from 'unified' export const remarkGetImages: Plugin<[string, Set<string>]> = ( - HCPsourceDir, - imageSrcSet + HCPsourceDir, + imageSrcSet, ) => { - const test = (node: Node): node is Image => { - return is<Image>(node, 'image') - } + const test = (node: Node): node is Image => { + return is<Image>(node, 'image') + } - return function (tree) { - visit<Image>(tree, test, (node) => { - const src = path.join(HCPsourceDir, node.url) - assert.ok(fs.existsSync(src), '[getImagesPlugin] image not found: ' + src) - imageSrcSet.add(src) - }) - } + return function (tree) { + visit<Image>(tree, test, (node) => { + const src = path.join(HCPsourceDir, node.url) + assert.ok(fs.existsSync(src), '[getImagesPlugin] image not found: ' + src) + imageSrcSet.add(src) + }) + } } diff --git a/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts b/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts index a45e6d97cd..88c3d497af 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/remark-transfrom-cloud-docs-links.ts @@ -1,4 +1,6 @@ +/* eslint-disable */ // @ts-nocheck +// TODO: fix types // for creating custom remark plugin import { is } from 'unist-util-is' // Use 4.1.0; 5+ is ESM @@ -10,21 +12,21 @@ import type { Plugin } from 'unified' import { IGNORE_PATTERNS } from './main' export const remarkTransformCloudDocsLinks: Plugin = () => { - const test = (node: Node): node is Link | Definition => { - return is<Link>(node, 'link') || is<Definition>(node, 'definition') - } + const test = (node: Node): node is Link | Definition => { + return is<Link>(node, 'link') || is<Definition>(node, 'definition') + } - return function (tree) { - visit(tree, test, (node) => { - // early exit if any urls match any ignored patterns - if (IGNORE_PATTERNS.some((e) => e.test(node.url))) { - return - } + return function (tree) { + visit(tree, test, (node) => { + // early exit if any urls match any ignored patterns + if (IGNORE_PATTERNS.some((e) => e.test(node.url))) { + return + } - // Match urls beginning with `/cloud-docs` or `/terraform/cloud-docs` - if (/^(\/terraform)?\/cloud-docs/i.test(node.url)) { - node.url = node.url.replace('cloud-docs', 'enterprise') - } - }) - } + // Match urls beginning with `/cloud-docs` or `/terraform/cloud-docs` + if (/^(\/terraform)?\/cloud-docs/i.test(node.url)) { + node.url = node.url.replace('cloud-docs', 'enterprise') + } + }) + } } From 503dea9f085adff12e3cfc2b0d45894dbad8369e Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Tue, 20 May 2025 15:34:29 -0400 Subject: [PATCH 27/47] Update the README with the new name --- .github/actions/copy-cloud-docs-for-tfe/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/README.md b/.github/actions/copy-cloud-docs-for-tfe/README.md index 4ecae1377c..0f7e343d86 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/README.md +++ b/.github/actions/copy-cloud-docs-for-tfe/README.md @@ -1,6 +1,6 @@ # `copy-cloud-docs-for-tfe` -This composite action is consumed by the `copy-docs.yml` workflow, which is triggered +This composite action is consumed by the `copy-docs.yml` workflow, which is triggered at the time of the Terraform Enterprise team's **APP_DEADLINE** event. Roughly, it behaves as depicted in this diagram: @@ -34,7 +34,7 @@ description: >- ### HTML Comments -Specially formatted HTML comments can be used in matching pairs +Specially formatted HTML comments can be used in matching pairs to omit multiple **lines** of text from the copy process. > **Warning**: This only works with MDX v1. @@ -56,4 +56,4 @@ More content available in both TFC & TFE... > **Note**: More details are available in this [TFC/TFE Content exclusion][rfc] RFC. -[rfc]: https://docs.google.com/document/d/1DPJU6_7AdGIJVlwJUWBlRqREmYon2IgYf_DrtKjhkcE/edit \ No newline at end of file +[rfc]: https://docs.google.com/document/d/1DPJU6_7AdGIJVlwJUWBlRqREmYon2IgYf_DrtKjhkcE/edit From 5abeeedcad761268edbddffd435516080018e46b Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:16:28 -0400 Subject: [PATCH 28/47] Test the whole workflow connected together --- .github/actions/copy-cloud-docs-for-tfe/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/index.ts b/.github/actions/copy-cloud-docs-for-tfe/index.ts index 7b884c72c4..3ce65be989 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/index.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/index.ts @@ -1,10 +1,10 @@ -// import * as core from '@actions/core' +import * as core from '@actions/core' import { main } from './main' async function action() { - // const newTFEVersion = core.getInput('new_TFE_version') - const newTFEVersion = 'v000011-1' + const newTFEVersion = core.getInput('new_TFE_version') + // const newTFEVersion = 'v000011-1' await main(newTFEVersion) } From 4c1a475bce9935a82483ba407e6c3b0ce255f1d1 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:22:08 -0400 Subject: [PATCH 29/47] checkout the proper workflow file before running --- .github/actions/copy-cloud-docs-for-tfe/main.ts | 3 ++- .github/workflows/copy-cloud-docs-for-tfe.yml | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts index 69b2b91cdf..902e95f705 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/main.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -102,7 +102,8 @@ export async function main( // } // fs.mkdirSync(targetDir, { recursive: true }) - const HCPsourceDir = './content/terraform-docs-common' + const HCPsourceDir = './test/content/terraform-docs-common' + // const HCPsourceDir = './content/terraform-docs-common' const HCPContentDir = path.join(HCPsourceDir, 'docs') diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 25493c09c6..24143589cb 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -74,6 +74,14 @@ jobs: uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{env.release_branch}} + # TODO: remove this after testing + path: ./testing + + - # This repository holds workflow logic + name: Checkout repository + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + with: + ref: "rn/add-copy-docs-workflow" - # Run our composite action name: Copy files From d51ac067776301460470fe3de98a3a4ae2272b47 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:24:38 -0400 Subject: [PATCH 30/47] path should be a string --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 24143589cb..4d05957972 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -75,7 +75,7 @@ jobs: with: ref: ${{env.release_branch}} # TODO: remove this after testing - path: ./testing + path: "testing" - # This repository holds workflow logic name: Checkout repository From d6a4a8755a2178f72dd42b01a290cc513b34f0b9 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:25:55 -0400 Subject: [PATCH 31/47] forgot a period --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 4d05957972..23be9337ba 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -85,7 +85,7 @@ jobs: - # Run our composite action name: Copy files - uses: ./github/actions/copy-cloud-docs-for-tfe + uses: ./.github/actions/copy-cloud-docs-for-tfe with: new_TFE_version: ${{env.SERIES}}-${{env.RELEASE}} From e4af74dbc6be46bc084d745868f921eb3b1f6607 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:29:17 -0400 Subject: [PATCH 32/47] Use latest sha for GHA run --- .github/workflows/copy-cloud-docs-for-tfe.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 23be9337ba..fd94811c0b 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -81,7 +81,8 @@ jobs: name: Checkout repository uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: - ref: "rn/add-copy-docs-workflow" + # ref: "rn/add-copy-docs-workflow" + ref: "d6a4a8755a2178f72dd42b01a290cc513b34f0b9" - # Run our composite action name: Copy files From 25db2b1998a2cfaa17fbe6b59a90bb0fc889607f Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:31:30 -0400 Subject: [PATCH 33/47] Forgot to build :facepalm: --- .../copy-cloud-docs-for-tfe/out/index.js | 157928 +++++++++------ .github/workflows/copy-cloud-docs-for-tfe.yml | 3 +- 2 files changed, 100854 insertions(+), 57077 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/index.js b/.github/actions/copy-cloud-docs-for-tfe/out/index.js index b58c059b79..44d38ee919 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/out/index.js +++ b/.github/actions/copy-cloud-docs-for-tfe/out/index.js @@ -1,7 +1,26 @@ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ 4914: +/***/ 18541: +/***/ ((module) => { + +function webpackEmptyAsyncContext(req) { + // Here Promise.resolve().then() is used instead of new Promise() to prevent + // uncaught exception popping up in devtools + return Promise.resolve().then(() => { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; + }); +} +webpackEmptyAsyncContext.keys = () => ([]); +webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; +webpackEmptyAsyncContext.id = 18541; +module.exports = webpackEmptyAsyncContext; + +/***/ }), + +/***/ 44914: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -31,8 +50,8 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.issue = exports.issueCommand = void 0; -const os = __importStar(__nccwpck_require__(857)); -const utils_1 = __nccwpck_require__(302); +const os = __importStar(__nccwpck_require__(70857)); +const utils_1 = __nccwpck_require__(30302); /** * Commands * @@ -104,7 +123,7 @@ function escapeProperty(s) { /***/ }), -/***/ 7484: +/***/ 37484: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -143,12 +162,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; -const command_1 = __nccwpck_require__(4914); -const file_command_1 = __nccwpck_require__(4753); -const utils_1 = __nccwpck_require__(302); -const os = __importStar(__nccwpck_require__(857)); -const path = __importStar(__nccwpck_require__(6928)); -const oidc_utils_1 = __nccwpck_require__(5306); +const command_1 = __nccwpck_require__(44914); +const file_command_1 = __nccwpck_require__(24753); +const utils_1 = __nccwpck_require__(30302); +const os = __importStar(__nccwpck_require__(70857)); +const path = __importStar(__nccwpck_require__(16928)); +const oidc_utils_1 = __nccwpck_require__(35306); /** * The code to exit an action */ @@ -433,29 +452,29 @@ exports.getIDToken = getIDToken; /** * Summary exports */ -var summary_1 = __nccwpck_require__(1847); +var summary_1 = __nccwpck_require__(71847); Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); /** * @deprecated use core.summary */ -var summary_2 = __nccwpck_require__(1847); +var summary_2 = __nccwpck_require__(71847); Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); /** * Path exports */ -var path_utils_1 = __nccwpck_require__(1976); +var path_utils_1 = __nccwpck_require__(31976); Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); /** * Platform utilities exports */ -exports.platform = __importStar(__nccwpck_require__(8968)); +exports.platform = __importStar(__nccwpck_require__(18968)); //# sourceMappingURL=core.js.map /***/ }), -/***/ 4753: +/***/ 24753: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -488,10 +507,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ -const crypto = __importStar(__nccwpck_require__(6982)); -const fs = __importStar(__nccwpck_require__(9896)); -const os = __importStar(__nccwpck_require__(857)); -const utils_1 = __nccwpck_require__(302); +const crypto = __importStar(__nccwpck_require__(76982)); +const fs = __importStar(__nccwpck_require__(79896)); +const os = __importStar(__nccwpck_require__(70857)); +const utils_1 = __nccwpck_require__(30302); function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; if (!filePath) { @@ -524,7 +543,7 @@ exports.prepareKeyValueMessage = prepareKeyValueMessage; /***/ }), -/***/ 5306: +/***/ 35306: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -540,9 +559,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.OidcClient = void 0; -const http_client_1 = __nccwpck_require__(4844); -const auth_1 = __nccwpck_require__(4552); -const core_1 = __nccwpck_require__(7484); +const http_client_1 = __nccwpck_require__(54844); +const auth_1 = __nccwpck_require__(44552); +const core_1 = __nccwpck_require__(37484); class OidcClient { static createHttpClient(allowRetry = true, maxRetry = 10) { const requestOptions = { @@ -608,7 +627,7 @@ exports.OidcClient = OidcClient; /***/ }), -/***/ 1976: +/***/ 31976: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -638,7 +657,7 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; -const path = __importStar(__nccwpck_require__(6928)); +const path = __importStar(__nccwpck_require__(16928)); /** * toPosixPath converts the given path to the posix form. On Windows, \\ will be * replaced with /. @@ -677,7 +696,7 @@ exports.toPlatformPath = toPlatformPath; /***/ }), -/***/ 8968: +/***/ 18968: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -719,8 +738,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; -const os_1 = __importDefault(__nccwpck_require__(857)); -const exec = __importStar(__nccwpck_require__(5236)); +const os_1 = __importDefault(__nccwpck_require__(70857)); +const exec = __importStar(__nccwpck_require__(95236)); const getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { silent: true @@ -778,7 +797,7 @@ exports.getDetails = getDetails; /***/ }), -/***/ 1847: +/***/ 71847: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -794,8 +813,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; -const os_1 = __nccwpck_require__(857); -const fs_1 = __nccwpck_require__(9896); +const os_1 = __nccwpck_require__(70857); +const fs_1 = __nccwpck_require__(79896); const { access, appendFile, writeFile } = fs_1.promises; exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; @@ -1068,7 +1087,7 @@ exports.summary = _summary; /***/ }), -/***/ 302: +/***/ 30302: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -1115,7 +1134,7 @@ exports.toCommandProperties = toCommandProperties; /***/ }), -/***/ 5236: +/***/ 95236: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -1150,7 +1169,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getExecOutput = exports.exec = void 0; -const string_decoder_1 = __nccwpck_require__(3193); +const string_decoder_1 = __nccwpck_require__(13193); const tr = __importStar(__nccwpck_require__(6665)); /** * Exec a command. @@ -1260,13 +1279,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.argStringToArray = exports.ToolRunner = void 0; -const os = __importStar(__nccwpck_require__(857)); -const events = __importStar(__nccwpck_require__(4434)); -const child = __importStar(__nccwpck_require__(5317)); -const path = __importStar(__nccwpck_require__(6928)); -const io = __importStar(__nccwpck_require__(4994)); -const ioUtil = __importStar(__nccwpck_require__(5207)); -const timers_1 = __nccwpck_require__(3557); +const os = __importStar(__nccwpck_require__(70857)); +const events = __importStar(__nccwpck_require__(24434)); +const child = __importStar(__nccwpck_require__(35317)); +const path = __importStar(__nccwpck_require__(16928)); +const io = __importStar(__nccwpck_require__(94994)); +const ioUtil = __importStar(__nccwpck_require__(75207)); +const timers_1 = __nccwpck_require__(53557); /* eslint-disable @typescript-eslint/unbound-method */ const IS_WINDOWS = process.platform === 'win32'; /* @@ -1850,7 +1869,7 @@ class ExecState extends events.EventEmitter { /***/ }), -/***/ 4552: +/***/ 44552: /***/ (function(__unused_webpack_module, exports) { "use strict"; @@ -1938,7 +1957,7 @@ exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHand /***/ }), -/***/ 4844: +/***/ 54844: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -1978,11 +1997,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; -const http = __importStar(__nccwpck_require__(8611)); -const https = __importStar(__nccwpck_require__(5692)); -const pm = __importStar(__nccwpck_require__(4988)); -const tunnel = __importStar(__nccwpck_require__(770)); -const undici_1 = __nccwpck_require__(6752); +const http = __importStar(__nccwpck_require__(58611)); +const https = __importStar(__nccwpck_require__(65692)); +const pm = __importStar(__nccwpck_require__(54988)); +const tunnel = __importStar(__nccwpck_require__(20770)); +const undici_1 = __nccwpck_require__(46752); var HttpCodes; (function (HttpCodes) { HttpCodes[HttpCodes["OK"] = 200] = "OK"; @@ -2597,7 +2616,7 @@ const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCa /***/ }), -/***/ 4988: +/***/ 54988: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -2699,7 +2718,7 @@ class DecodedURL extends URL { /***/ }), -/***/ 5207: +/***/ 75207: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -2735,8 +2754,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge var _a; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; -const fs = __importStar(__nccwpck_require__(9896)); -const path = __importStar(__nccwpck_require__(6928)); +const fs = __importStar(__nccwpck_require__(79896)); +const path = __importStar(__nccwpck_require__(16928)); _a = fs.promises // export const {open} = 'fs' , exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; @@ -2889,7 +2908,7 @@ exports.getCmdPath = getCmdPath; /***/ }), -/***/ 4994: +/***/ 94994: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -2924,9 +2943,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; -const assert_1 = __nccwpck_require__(2613); -const path = __importStar(__nccwpck_require__(6928)); -const ioUtil = __importStar(__nccwpck_require__(5207)); +const assert_1 = __nccwpck_require__(42613); +const path = __importStar(__nccwpck_require__(16928)); +const ioUtil = __importStar(__nccwpck_require__(75207)); /** * Copies a file or folder. * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js @@ -3195,67209 +3214,111003 @@ function copyFile(srcFile, destFile, force) { /***/ }), -/***/ 3637: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 46268: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -const XHTMLEntities = __nccwpck_require__(5980); - -const hexNumber = /^[\da-fA-F]+$/; -const decimalNumber = /^\d+$/; - -// The map to `acorn-jsx` tokens from `acorn` namespace objects. -const acornJsxMap = new WeakMap(); - -// Get the original tokens for the given `acorn` namespace object. -function getJsxTokens(acorn) { - acorn = acorn.Parser.acorn || acorn; - let acornJsx = acornJsxMap.get(acorn); - if (!acornJsx) { - const tt = acorn.tokTypes; - const TokContext = acorn.TokContext; - const TokenType = acorn.TokenType; - const tc_oTag = new TokContext('<tag', false); - const tc_cTag = new TokContext('</tag', false); - const tc_expr = new TokContext('<tag>...</tag>', true, true); - const tokContexts = { - tc_oTag: tc_oTag, - tc_cTag: tc_cTag, - tc_expr: tc_expr - }; - const tokTypes = { - jsxName: new TokenType('jsxName'), - jsxText: new TokenType('jsxText', {beforeExpr: true}), - jsxTagStart: new TokenType('jsxTagStart', {startsExpr: true}), - jsxTagEnd: new TokenType('jsxTagEnd') - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.makeWeakCache = makeWeakCache; +exports.makeWeakCacheSync = makeWeakCacheSync; +exports.makeStrongCache = makeStrongCache; +exports.makeStrongCacheSync = makeStrongCacheSync; +exports.assertSimpleType = assertSimpleType; - tokTypes.jsxTagStart.updateContext = function() { - this.context.push(tc_expr); // treat as beginning of JSX expression - this.context.push(tc_oTag); // start opening tag context - this.exprAllowed = false; - }; - tokTypes.jsxTagEnd.updateContext = function(prevType) { - let out = this.context.pop(); - if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) { - this.context.pop(); - this.exprAllowed = this.curContext() === tc_expr; - } else { - this.exprAllowed = true; - } - }; +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes }; - acornJsxMap.set(acorn, acornJsx); - } + _gensync = function () { + return data; + }; - return acornJsx; + return data; } -// Transforms JSX element name to string. +var _async = __nccwpck_require__(87360); -function getQualifiedJSXName(object) { - if (!object) - return object; +var _util = __nccwpck_require__(54493); - if (object.type === 'JSXIdentifier') - return object.name; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (object.type === 'JSXNamespacedName') - return object.namespace.name + ':' + object.name.name; +const synchronize = gen => { + return (0, _gensync().default)(gen).sync; +}; - if (object.type === 'JSXMemberExpression') - return getQualifiedJSXName(object.object) + '.' + - getQualifiedJSXName(object.property); +function* genTrue(data) { + return true; } -module.exports = function(options) { - options = options || {}; - return function(Parser) { - return plugin({ - allowNamespaces: options.allowNamespaces !== false, - allowNamespacedObjects: !!options.allowNamespacedObjects - }, Parser); - }; -}; - -// This is `tokTypes` of the peer dep. -// This can be different instances from the actual `tokTypes` this plugin uses. -Object.defineProperty(module.exports, "tokTypes", ({ - get: function get_tokTypes() { - return getJsxTokens(__nccwpck_require__(859)).tokTypes; - }, - configurable: true, - enumerable: true -})); +function makeWeakCache(handler) { + return makeCachedFunction(WeakMap, handler); +} -function plugin(options, Parser) { - const acorn = Parser.acorn || __nccwpck_require__(859); - const acornJsx = getJsxTokens(acorn); - const tt = acorn.tokTypes; - const tok = acornJsx.tokTypes; - const tokContexts = acorn.tokContexts; - const tc_oTag = acornJsx.tokContexts.tc_oTag; - const tc_cTag = acornJsx.tokContexts.tc_cTag; - const tc_expr = acornJsx.tokContexts.tc_expr; - const isNewLine = acorn.isNewLine; - const isIdentifierStart = acorn.isIdentifierStart; - const isIdentifierChar = acorn.isIdentifierChar; - - return class extends Parser { - // Expose actual `tokTypes` and `tokContexts` to other plugins. - static get acornJsx() { - return acornJsx; - } - - // Reads inline JSX contents token. - jsx_readToken() { - let out = '', chunkStart = this.pos; - for (;;) { - if (this.pos >= this.input.length) - this.raise(this.start, 'Unterminated JSX contents'); - let ch = this.input.charCodeAt(this.pos); - - switch (ch) { - case 60: // '<' - case 123: // '{' - if (this.pos === this.start) { - if (ch === 60 && this.exprAllowed) { - ++this.pos; - return this.finishToken(tok.jsxTagStart); - } - return this.getTokenFromCode(ch); - } - out += this.input.slice(chunkStart, this.pos); - return this.finishToken(tok.jsxText, out); +function makeWeakCacheSync(handler) { + return synchronize(makeWeakCache(handler)); +} - case 38: // '&' - out += this.input.slice(chunkStart, this.pos); - out += this.jsx_readEntity(); - chunkStart = this.pos; - break; +function makeStrongCache(handler) { + return makeCachedFunction(Map, handler); +} - case 62: // '>' - case 125: // '}' - this.raise( - this.pos, - "Unexpected token `" + this.input[this.pos] + "`. Did you mean `" + - (ch === 62 ? "&gt;" : "&rbrace;") + "` or " + "`{\"" + this.input[this.pos] + "\"}" + "`?" - ); +function makeStrongCacheSync(handler) { + return synchronize(makeStrongCache(handler)); +} - default: - if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.pos); - out += this.jsx_readNewLine(true); - chunkStart = this.pos; - } else { - ++this.pos; - } - } - } - } +function makeCachedFunction(CallCache, handler) { + const callCacheSync = new CallCache(); + const callCacheAsync = new CallCache(); + const futureCache = new CallCache(); + return function* cachedFunction(arg, data) { + const asyncContext = yield* (0, _async.isAsync)(); + const callCache = asyncContext ? callCacheAsync : callCacheSync; + const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data); + if (cached.valid) return cached.value; + const cache = new CacheConfigurator(data); + const handlerResult = handler(arg, cache); + let finishLock; + let value; - jsx_readNewLine(normalizeCRLF) { - let ch = this.input.charCodeAt(this.pos); - let out; - ++this.pos; - if (ch === 13 && this.input.charCodeAt(this.pos) === 10) { - ++this.pos; - out = normalizeCRLF ? '\n' : '\r\n'; - } else { - out = String.fromCharCode(ch); - } - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - - return out; - } - - jsx_readString(quote) { - let out = '', chunkStart = ++this.pos; - for (;;) { - if (this.pos >= this.input.length) - this.raise(this.start, 'Unterminated string constant'); - let ch = this.input.charCodeAt(this.pos); - if (ch === quote) break; - if (ch === 38) { // '&' - out += this.input.slice(chunkStart, this.pos); - out += this.jsx_readEntity(); - chunkStart = this.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.pos); - out += this.jsx_readNewLine(false); - chunkStart = this.pos; - } else { - ++this.pos; - } - } - out += this.input.slice(chunkStart, this.pos++); - return this.finishToken(tt.string, out); - } - - jsx_readEntity() { - let str = '', count = 0, entity; - let ch = this.input[this.pos]; - if (ch !== '&') - this.raise(this.pos, 'Entity must start with an ampersand'); - let startPos = ++this.pos; - while (this.pos < this.input.length && count++ < 10) { - ch = this.input[this.pos++]; - if (ch === ';') { - if (str[0] === '#') { - if (str[1] === 'x') { - str = str.substr(2); - if (hexNumber.test(str)) - entity = String.fromCharCode(parseInt(str, 16)); - } else { - str = str.substr(1); - if (decimalNumber.test(str)) - entity = String.fromCharCode(parseInt(str, 10)); - } - } else { - entity = XHTMLEntities[str]; - } - break; - } - str += ch; - } - if (!entity) { - this.pos = startPos; - return '&'; - } - return entity; + if ((0, _util.isIterableIterator)(handlerResult)) { + const gen = handlerResult; + value = yield* (0, _async.onFirstPause)(gen, () => { + finishLock = setupAsyncLocks(cache, futureCache, arg); + }); + } else { + value = handlerResult; } - // Read a JSX identifier (valid tag or attribute name). - // - // Optimized version since JSX identifiers can't contain - // escape characters and so can be read as single slice. - // Also assumes that first character was already checked - // by isIdentifierStart in readToken. + updateFunctionCache(callCache, cache, arg, value); - jsx_readWord() { - let ch, start = this.pos; - do { - ch = this.input.charCodeAt(++this.pos); - } while (isIdentifierChar(ch) || ch === 45); // '-' - return this.finishToken(tok.jsxName, this.input.slice(start, this.pos)); + if (finishLock) { + futureCache.delete(arg); + finishLock.release(value); } - // Parse next token as JSX identifier - - jsx_parseIdentifier() { - let node = this.startNode(); - if (this.type === tok.jsxName) - node.name = this.value; - else if (this.type.keyword) - node.name = this.type.keyword; - else - this.unexpected(); - this.next(); - return this.finishNode(node, 'JSXIdentifier'); - } + return value; + }; +} - // Parse namespaced identifier. +function* getCachedValue(cache, arg, data) { + const cachedValue = cache.get(arg); - jsx_parseNamespacedName() { - let startPos = this.start, startLoc = this.startLoc; - let name = this.jsx_parseIdentifier(); - if (!options.allowNamespaces || !this.eat(tt.colon)) return name; - var node = this.startNodeAt(startPos, startLoc); - node.namespace = name; - node.name = this.jsx_parseIdentifier(); - return this.finishNode(node, 'JSXNamespacedName'); + if (cachedValue) { + for (const { + value, + valid + } of cachedValue) { + if (yield* valid(data)) return { + valid: true, + value + }; } + } - // Parses element name in any form - namespaced, member - // or single identifier. - - jsx_parseElementName() { - if (this.type === tok.jsxTagEnd) return ''; - let startPos = this.start, startLoc = this.startLoc; - let node = this.jsx_parseNamespacedName(); - if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !options.allowNamespacedObjects) { - this.unexpected(); - } - while (this.eat(tt.dot)) { - let newNode = this.startNodeAt(startPos, startLoc); - newNode.object = node; - newNode.property = this.jsx_parseIdentifier(); - node = this.finishNode(newNode, 'JSXMemberExpression'); - } - return node; - } + return { + valid: false, + value: null + }; +} - // Parses any type of JSX attribute value. +function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) { + const cached = yield* getCachedValue(callCache, arg, data); - jsx_parseAttributeValue() { - switch (this.type) { - case tt.braceL: - let node = this.jsx_parseExpressionContainer(); - if (node.expression.type === 'JSXEmptyExpression') - this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression'); - return node; + if (cached.valid) { + return cached; + } - case tok.jsxTagStart: - case tt.string: - return this.parseExprAtom(); + if (asyncContext) { + const cached = yield* getCachedValue(futureCache, arg, data); - default: - this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text'); - } + if (cached.valid) { + const value = yield* (0, _async.waitFor)(cached.value.promise); + return { + valid: true, + value + }; } + } - // JSXEmptyExpression is unique type since it doesn't actually parse anything, - // and so it should start at the end of last read token (left brace) and finish - // at the beginning of the next one (right brace). - - jsx_parseEmptyExpression() { - let node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc); - return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc); - } + return { + valid: false, + value: null + }; +} - // Parses JSX expression enclosed into curly brackets. +function setupAsyncLocks(config, futureCache, arg) { + const finishLock = new Lock(); + updateFunctionCache(futureCache, config, arg, finishLock); + return finishLock; +} - jsx_parseExpressionContainer() { - let node = this.startNode(); - this.next(); - node.expression = this.type === tt.braceR - ? this.jsx_parseEmptyExpression() - : this.parseExpression(); - this.expect(tt.braceR); - return this.finishNode(node, 'JSXExpressionContainer'); - } - - // Parses following JSX attribute name-value pair. - - jsx_parseAttribute() { - let node = this.startNode(); - if (this.eat(tt.braceL)) { - this.expect(tt.ellipsis); - node.argument = this.parseMaybeAssign(); - this.expect(tt.braceR); - return this.finishNode(node, 'JSXSpreadAttribute'); - } - node.name = this.jsx_parseNamespacedName(); - node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null; - return this.finishNode(node, 'JSXAttribute'); - } - - // Parses JSX opening tag starting after '<'. - - jsx_parseOpeningElementAt(startPos, startLoc) { - let node = this.startNodeAt(startPos, startLoc); - node.attributes = []; - let nodeName = this.jsx_parseElementName(); - if (nodeName) node.name = nodeName; - while (this.type !== tt.slash && this.type !== tok.jsxTagEnd) - node.attributes.push(this.jsx_parseAttribute()); - node.selfClosing = this.eat(tt.slash); - this.expect(tok.jsxTagEnd); - return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment'); - } - - // Parses JSX closing tag starting after '</'. - - jsx_parseClosingElementAt(startPos, startLoc) { - let node = this.startNodeAt(startPos, startLoc); - let nodeName = this.jsx_parseElementName(); - if (nodeName) node.name = nodeName; - this.expect(tok.jsxTagEnd); - return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment'); - } - - // Parses entire JSX element, including it's opening tag - // (starting after '<'), attributes, contents and closing tag. - - jsx_parseElementAt(startPos, startLoc) { - let node = this.startNodeAt(startPos, startLoc); - let children = []; - let openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc); - let closingElement = null; - - if (!openingElement.selfClosing) { - contents: for (;;) { - switch (this.type) { - case tok.jsxTagStart: - startPos = this.start; startLoc = this.startLoc; - this.next(); - if (this.eat(tt.slash)) { - closingElement = this.jsx_parseClosingElementAt(startPos, startLoc); - break contents; - } - children.push(this.jsx_parseElementAt(startPos, startLoc)); - break; +function updateFunctionCache(cache, config, arg, value) { + if (!config.configured()) config.forever(); + let cachedValue = cache.get(arg); + config.deactivate(); - case tok.jsxText: - children.push(this.parseExprAtom()); - break; + switch (config.mode()) { + case "forever": + cachedValue = [{ + value, + valid: genTrue + }]; + cache.set(arg, cachedValue); + break; - case tt.braceL: - children.push(this.jsx_parseExpressionContainer()); - break; + case "invalidate": + cachedValue = [{ + value, + valid: config.validator() + }]; + cache.set(arg, cachedValue); + break; - default: - this.unexpected(); - } - } - if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { - this.raise( - closingElement.start, - 'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>'); - } + case "valid": + if (cachedValue) { + cachedValue.push({ + value, + valid: config.validator() + }); + } else { + cachedValue = [{ + value, + valid: config.validator() + }]; + cache.set(arg, cachedValue); } - let fragmentOrElement = openingElement.name ? 'Element' : 'Fragment'; - node['opening' + fragmentOrElement] = openingElement; - node['closing' + fragmentOrElement] = closingElement; - node.children = children; - if (this.type === tt.relational && this.value === "<") { - this.raise(this.start, "Adjacent JSX elements must be wrapped in an enclosing tag"); - } - return this.finishNode(node, 'JSX' + fragmentOrElement); - } + } +} - // Parse JSX text +class CacheConfigurator { + constructor(data) { + this._active = true; + this._never = false; + this._forever = false; + this._invalidate = false; + this._configured = false; + this._pairs = []; + this._data = void 0; + this._data = data; + } - jsx_parseText() { - let node = this.parseLiteral(this.value); - node.type = "JSXText"; - return node; - } + simple() { + return makeSimpleConfigurator(this); + } - // Parses entire JSX element from current position. + mode() { + if (this._never) return "never"; + if (this._forever) return "forever"; + if (this._invalidate) return "invalidate"; + return "valid"; + } - jsx_parseElement() { - let startPos = this.start, startLoc = this.startLoc; - this.next(); - return this.jsx_parseElementAt(startPos, startLoc); + forever() { + if (!this._active) { + throw new Error("Cannot change caching after evaluation has completed."); } - parseExprAtom(refShortHandDefaultPos) { - if (this.type === tok.jsxText) - return this.jsx_parseText(); - else if (this.type === tok.jsxTagStart) - return this.jsx_parseElement(); - else - return super.parseExprAtom(refShortHandDefaultPos); + if (this._never) { + throw new Error("Caching has already been configured with .never()"); } - readToken(code) { - let context = this.curContext(); - - if (context === tc_expr) return this.jsx_readToken(); + this._forever = true; + this._configured = true; + } - if (context === tc_oTag || context === tc_cTag) { - if (isIdentifierStart(code)) return this.jsx_readWord(); + never() { + if (!this._active) { + throw new Error("Cannot change caching after evaluation has completed."); + } - if (code == 62) { - ++this.pos; - return this.finishToken(tok.jsxTagEnd); - } + if (this._forever) { + throw new Error("Caching has already been configured with .forever()"); + } - if ((code === 34 || code === 39) && context == tc_oTag) - return this.jsx_readString(code); - } + this._never = true; + this._configured = true; + } - if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) { - ++this.pos; - return this.finishToken(tok.jsxTagStart); - } - return super.readToken(code); + using(handler) { + if (!this._active) { + throw new Error("Cannot change caching after evaluation has completed."); } - updateContext(prevType) { - if (this.type == tt.braceL) { - var curContext = this.curContext(); - if (curContext == tc_oTag) this.context.push(tokContexts.b_expr); - else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl); - else super.updateContext(prevType); - this.exprAllowed = true; - } else if (this.type === tt.slash && prevType === tok.jsxTagStart) { - this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore - this.context.push(tc_cTag); // reconsider as closing tag context - this.exprAllowed = false; - } else { - return super.updateContext(prevType); - } + if (this._never || this._forever) { + throw new Error("Caching has already been configured with .never or .forever()"); } - }; -} + this._configured = true; + const key = handler(this._data); + const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`); -/***/ }), + if ((0, _async.isThenable)(key)) { + return key.then(key => { + this._pairs.push([key, fn]); -/***/ 5980: -/***/ ((module) => { + return key; + }); + } -module.exports = { - quot: '\u0022', - amp: '&', - apos: '\u0027', - lt: '<', - gt: '>', - nbsp: '\u00A0', - iexcl: '\u00A1', - cent: '\u00A2', - pound: '\u00A3', - curren: '\u00A4', - yen: '\u00A5', - brvbar: '\u00A6', - sect: '\u00A7', - uml: '\u00A8', - copy: '\u00A9', - ordf: '\u00AA', - laquo: '\u00AB', - not: '\u00AC', - shy: '\u00AD', - reg: '\u00AE', - macr: '\u00AF', - deg: '\u00B0', - plusmn: '\u00B1', - sup2: '\u00B2', - sup3: '\u00B3', - acute: '\u00B4', - micro: '\u00B5', - para: '\u00B6', - middot: '\u00B7', - cedil: '\u00B8', - sup1: '\u00B9', - ordm: '\u00BA', - raquo: '\u00BB', - frac14: '\u00BC', - frac12: '\u00BD', - frac34: '\u00BE', - iquest: '\u00BF', - Agrave: '\u00C0', - Aacute: '\u00C1', - Acirc: '\u00C2', - Atilde: '\u00C3', - Auml: '\u00C4', - Aring: '\u00C5', - AElig: '\u00C6', - Ccedil: '\u00C7', - Egrave: '\u00C8', - Eacute: '\u00C9', - Ecirc: '\u00CA', - Euml: '\u00CB', - Igrave: '\u00CC', - Iacute: '\u00CD', - Icirc: '\u00CE', - Iuml: '\u00CF', - ETH: '\u00D0', - Ntilde: '\u00D1', - Ograve: '\u00D2', - Oacute: '\u00D3', - Ocirc: '\u00D4', - Otilde: '\u00D5', - Ouml: '\u00D6', - times: '\u00D7', - Oslash: '\u00D8', - Ugrave: '\u00D9', - Uacute: '\u00DA', - Ucirc: '\u00DB', - Uuml: '\u00DC', - Yacute: '\u00DD', - THORN: '\u00DE', - szlig: '\u00DF', - agrave: '\u00E0', - aacute: '\u00E1', - acirc: '\u00E2', - atilde: '\u00E3', - auml: '\u00E4', - aring: '\u00E5', - aelig: '\u00E6', - ccedil: '\u00E7', - egrave: '\u00E8', - eacute: '\u00E9', - ecirc: '\u00EA', - euml: '\u00EB', - igrave: '\u00EC', - iacute: '\u00ED', - icirc: '\u00EE', - iuml: '\u00EF', - eth: '\u00F0', - ntilde: '\u00F1', - ograve: '\u00F2', - oacute: '\u00F3', - ocirc: '\u00F4', - otilde: '\u00F5', - ouml: '\u00F6', - divide: '\u00F7', - oslash: '\u00F8', - ugrave: '\u00F9', - uacute: '\u00FA', - ucirc: '\u00FB', - uuml: '\u00FC', - yacute: '\u00FD', - thorn: '\u00FE', - yuml: '\u00FF', - OElig: '\u0152', - oelig: '\u0153', - Scaron: '\u0160', - scaron: '\u0161', - Yuml: '\u0178', - fnof: '\u0192', - circ: '\u02C6', - tilde: '\u02DC', - Alpha: '\u0391', - Beta: '\u0392', - Gamma: '\u0393', - Delta: '\u0394', - Epsilon: '\u0395', - Zeta: '\u0396', - Eta: '\u0397', - Theta: '\u0398', - Iota: '\u0399', - Kappa: '\u039A', - Lambda: '\u039B', - Mu: '\u039C', - Nu: '\u039D', - Xi: '\u039E', - Omicron: '\u039F', - Pi: '\u03A0', - Rho: '\u03A1', - Sigma: '\u03A3', - Tau: '\u03A4', - Upsilon: '\u03A5', - Phi: '\u03A6', - Chi: '\u03A7', - Psi: '\u03A8', - Omega: '\u03A9', - alpha: '\u03B1', - beta: '\u03B2', - gamma: '\u03B3', - delta: '\u03B4', - epsilon: '\u03B5', - zeta: '\u03B6', - eta: '\u03B7', - theta: '\u03B8', - iota: '\u03B9', - kappa: '\u03BA', - lambda: '\u03BB', - mu: '\u03BC', - nu: '\u03BD', - xi: '\u03BE', - omicron: '\u03BF', - pi: '\u03C0', - rho: '\u03C1', - sigmaf: '\u03C2', - sigma: '\u03C3', - tau: '\u03C4', - upsilon: '\u03C5', - phi: '\u03C6', - chi: '\u03C7', - psi: '\u03C8', - omega: '\u03C9', - thetasym: '\u03D1', - upsih: '\u03D2', - piv: '\u03D6', - ensp: '\u2002', - emsp: '\u2003', - thinsp: '\u2009', - zwnj: '\u200C', - zwj: '\u200D', - lrm: '\u200E', - rlm: '\u200F', - ndash: '\u2013', - mdash: '\u2014', - lsquo: '\u2018', - rsquo: '\u2019', - sbquo: '\u201A', - ldquo: '\u201C', - rdquo: '\u201D', - bdquo: '\u201E', - dagger: '\u2020', - Dagger: '\u2021', - bull: '\u2022', - hellip: '\u2026', - permil: '\u2030', - prime: '\u2032', - Prime: '\u2033', - lsaquo: '\u2039', - rsaquo: '\u203A', - oline: '\u203E', - frasl: '\u2044', - euro: '\u20AC', - image: '\u2111', - weierp: '\u2118', - real: '\u211C', - trade: '\u2122', - alefsym: '\u2135', - larr: '\u2190', - uarr: '\u2191', - rarr: '\u2192', - darr: '\u2193', - harr: '\u2194', - crarr: '\u21B5', - lArr: '\u21D0', - uArr: '\u21D1', - rArr: '\u21D2', - dArr: '\u21D3', - hArr: '\u21D4', - forall: '\u2200', - part: '\u2202', - exist: '\u2203', - empty: '\u2205', - nabla: '\u2207', - isin: '\u2208', - notin: '\u2209', - ni: '\u220B', - prod: '\u220F', - sum: '\u2211', - minus: '\u2212', - lowast: '\u2217', - radic: '\u221A', - prop: '\u221D', - infin: '\u221E', - ang: '\u2220', - and: '\u2227', - or: '\u2228', - cap: '\u2229', - cup: '\u222A', - 'int': '\u222B', - there4: '\u2234', - sim: '\u223C', - cong: '\u2245', - asymp: '\u2248', - ne: '\u2260', - equiv: '\u2261', - le: '\u2264', - ge: '\u2265', - sub: '\u2282', - sup: '\u2283', - nsub: '\u2284', - sube: '\u2286', - supe: '\u2287', - oplus: '\u2295', - otimes: '\u2297', - perp: '\u22A5', - sdot: '\u22C5', - lceil: '\u2308', - rceil: '\u2309', - lfloor: '\u230A', - rfloor: '\u230B', - lang: '\u2329', - rang: '\u232A', - loz: '\u25CA', - spades: '\u2660', - clubs: '\u2663', - hearts: '\u2665', - diams: '\u2666' -}; + this._pairs.push([key, fn]); + return key; + } -/***/ }), + invalidate(handler) { + this._invalidate = true; + return this.using(handler); + } -/***/ 859: -/***/ (function(__unused_webpack_module, exports) { + validator() { + const pairs = this._pairs; + return function* (data) { + for (const [key, fn] of pairs) { + if (key !== (yield* fn(data))) return false; + } -(function (global, factory) { - true ? factory(exports) : - 0; -})(this, (function (exports) { 'use strict'; + return true; + }; + } - // This file was generated. Do not modify manually! - var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + deactivate() { + this._active = false; + } - // This file was generated. Do not modify manually! - var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; + configured() { + return this._configured; + } - // This file was generated. Do not modify manually! - var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +} - // This file was generated. Do not modify manually! - var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +function makeSimpleConfigurator(cache) { + function cacheFn(val) { + if (typeof val === "boolean") { + if (val) cache.forever();else cache.never(); + return; + } - // These are a run-length and offset encoded representation of the - // >0xffff code points that are a valid part of identifiers. The - // offset starts at 0x10000, and each pair of numbers represents an - // offset to the next range, and then a size of the range. + return cache.using(() => assertSimpleType(val())); + } - // Reserved word lists for various dialects of the language + cacheFn.forever = () => cache.forever(); - var reservedWords = { - 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", - 5: "class enum extends super const export import", - 6: "enum", - strict: "implements interface let package private protected public static yield", - strictBind: "eval arguments" - }; + cacheFn.never = () => cache.never(); - // And the keywords + cacheFn.using = cb => cache.using(() => assertSimpleType(cb())); - var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; + cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb())); - var keywords$1 = { - 5: ecma5AndLessKeywords, - "5module": ecma5AndLessKeywords + " export import", - 6: ecma5AndLessKeywords + " const class extends export import super" - }; + return cacheFn; +} - var keywordRelationalOperator = /^in(stanceof)?$/; +function assertSimpleType(value) { + if ((0, _async.isThenable)(value)) { + throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`); + } - // ## Character categories + if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") { + throw new Error("Cache keys must be either string, boolean, number, null, or undefined."); + } - var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); - var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + return value; +} - // This has a complexity linear to the value of the code. The - // assumption is that looking up astral identifier characters is - // rare. - function isInAstralSet(code, set) { - var pos = 0x10000; - for (var i = 0; i < set.length; i += 2) { - pos += set[i]; - if (pos > code) { return false } - pos += set[i + 1]; - if (pos >= code) { return true } - } - return false +class Lock { + constructor() { + this.released = false; + this.promise = void 0; + this._resolve = void 0; + this.promise = new Promise(resolve => { + this._resolve = resolve; + }); } - // Test whether a given character code starts an identifier. + release(value) { + this.released = true; - function isIdentifierStart(code, astral) { - if (code < 65) { return code === 36 } - if (code < 91) { return true } - if (code < 97) { return code === 95 } - if (code < 123) { return true } - if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } - if (astral === false) { return false } - return isInAstralSet(code, astralIdentifierStartCodes) + this._resolve(value); } - // Test whether a given character is part of an identifier. +} - function isIdentifierChar(code, astral) { - if (code < 48) { return code === 36 } - if (code < 58) { return true } - if (code < 65) { return false } - if (code < 91) { return true } - if (code < 97) { return code === 95 } - if (code < 123) { return true } - if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } - if (astral === false) { return false } - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) - } +/***/ }), - // ## Token types +/***/ 70835: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // The assignment of fine-grained, information-carrying type objects - // allows the tokenizer to store the information it has about a - // token in a way that is very cheap for the parser to look up. +"use strict"; - // All token type variables start with an underscore, to make them - // easy to recognize. - // The `beforeExpr` property is used to disambiguate between regular - // expressions and divisions. It is set on all token types that can - // be followed by an expression (thus, a slash after them would be a - // regular expression). - // - // The `startsExpr` property is used to check if the token ends a - // `yield` expression. It is set on all token types that either can - // directly start an expression (like a quotation mark) or can - // continue an expression (like the body of a string). - // - // `isLoop` marks a keyword as starting a loop, which is important - // to know when parsing a label, in order to allow or disallow - // continue jumps to that label. +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.buildPresetChain = buildPresetChain; +exports.buildRootChain = buildRootChain; +exports.buildPresetChainWalker = void 0; - var TokenType = function TokenType(label, conf) { - if ( conf === void 0 ) conf = {}; +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); - this.label = label; - this.keyword = conf.keyword; - this.beforeExpr = !!conf.beforeExpr; - this.startsExpr = !!conf.startsExpr; - this.isLoop = !!conf.isLoop; - this.isAssign = !!conf.isAssign; - this.prefix = !!conf.prefix; - this.postfix = !!conf.postfix; - this.binop = conf.binop || null; - this.updateContext = null; + _path = function () { + return data; }; - function binop(name, prec) { - return new TokenType(name, {beforeExpr: true, binop: prec}) - } - var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; - - // Map keyword names to token types. - - var keywords = {}; - - // Succinct definitions of keyword token types - function kw(name, options) { - if ( options === void 0 ) options = {}; - - options.keyword = name; - return keywords[name] = new TokenType(name, options) - } - - var types$1 = { - num: new TokenType("num", startsExpr), - regexp: new TokenType("regexp", startsExpr), - string: new TokenType("string", startsExpr), - name: new TokenType("name", startsExpr), - privateId: new TokenType("privateId", startsExpr), - eof: new TokenType("eof"), - - // Punctuation token types. - bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), - bracketR: new TokenType("]"), - braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), - braceR: new TokenType("}"), - parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), - parenR: new TokenType(")"), - comma: new TokenType(",", beforeExpr), - semi: new TokenType(";", beforeExpr), - colon: new TokenType(":", beforeExpr), - dot: new TokenType("."), - question: new TokenType("?", beforeExpr), - questionDot: new TokenType("?."), - arrow: new TokenType("=>", beforeExpr), - template: new TokenType("template"), - invalidTemplate: new TokenType("invalidTemplate"), - ellipsis: new TokenType("...", beforeExpr), - backQuote: new TokenType("`", startsExpr), - dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), - - // Operators. These carry several kinds of properties to help the - // parser use them properly (the presence of these properties is - // what categorizes them as operators). - // - // `binop`, when present, specifies that this operator is a binary - // operator, and will refer to its precedence. - // - // `prefix` and `postfix` mark the operator as a prefix or postfix - // unary operator. - // - // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as - // binary operators with a very low precedence, that should result - // in AssignmentExpression nodes. - - eq: new TokenType("=", {beforeExpr: true, isAssign: true}), - assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), - incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), - prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), - logicalOR: binop("||", 1), - logicalAND: binop("&&", 2), - bitwiseOR: binop("|", 3), - bitwiseXOR: binop("^", 4), - bitwiseAND: binop("&", 5), - equality: binop("==/!=/===/!==", 6), - relational: binop("</>/<=/>=", 7), - bitShift: binop("<</>>/>>>", 8), - plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), - modulo: binop("%", 10), - star: binop("*", 10), - slash: binop("/", 10), - starstar: new TokenType("**", {beforeExpr: true}), - coalesce: binop("??", 1), - - // Keyword token types. - _break: kw("break"), - _case: kw("case", beforeExpr), - _catch: kw("catch"), - _continue: kw("continue"), - _debugger: kw("debugger"), - _default: kw("default", beforeExpr), - _do: kw("do", {isLoop: true, beforeExpr: true}), - _else: kw("else", beforeExpr), - _finally: kw("finally"), - _for: kw("for", {isLoop: true}), - _function: kw("function", startsExpr), - _if: kw("if"), - _return: kw("return", beforeExpr), - _switch: kw("switch"), - _throw: kw("throw", beforeExpr), - _try: kw("try"), - _var: kw("var"), - _const: kw("const"), - _while: kw("while", {isLoop: true}), - _with: kw("with"), - _new: kw("new", {beforeExpr: true, startsExpr: true}), - _this: kw("this", startsExpr), - _super: kw("super", startsExpr), - _class: kw("class", startsExpr), - _extends: kw("extends", beforeExpr), - _export: kw("export"), - _import: kw("import", startsExpr), - _null: kw("null", startsExpr), - _true: kw("true", startsExpr), - _false: kw("false", startsExpr), - _in: kw("in", {beforeExpr: true, binop: 7}), - _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), - _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), - _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), - _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) + return data; +} + +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(2830)); + + _debug = function () { + return data; }; - // Matches a whole line break (where CRLF is considered a single - // line break). Used to count lines. + return data; +} - var lineBreak = /\r\n?|\n|\u2028|\u2029/; - var lineBreakG = new RegExp(lineBreak.source, "g"); +var _options = __nccwpck_require__(44743); - function isNewLine(code) { - return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 - } +var _patternToRegex = _interopRequireDefault(__nccwpck_require__(79619)); - function nextLineBreak(code, from, end) { - if ( end === void 0 ) end = code.length; +var _printer = __nccwpck_require__(30333); - for (var i = from; i < end; i++) { - var next = code.charCodeAt(i); - if (isNewLine(next)) - { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } - } - return -1 - } +var _files = __nccwpck_require__(37217); - var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; +var _caching = __nccwpck_require__(46268); - var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +var _configDescriptors = __nccwpck_require__(2420); - var ref = Object.prototype; - var hasOwnProperty = ref.hasOwnProperty; - var toString = ref.toString; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var hasOwn = Object.hasOwn || (function (obj, propName) { return ( - hasOwnProperty.call(obj, propName) - ); }); +const debug = (0, _debug().default)("babel:config:config-chain"); - var isArray = Array.isArray || (function (obj) { return ( - toString.call(obj) === "[object Array]" - ); }); +function* buildPresetChain(arg, context) { + const chain = yield* buildPresetChainWalker(arg, context); + if (!chain) return null; + return { + plugins: dedupDescriptors(chain.plugins), + presets: dedupDescriptors(chain.presets), + options: chain.options.map(o => normalizeOptions(o)), + files: new Set() + }; +} - var regexpCache = Object.create(null); +const buildPresetChainWalker = makeChainWalker({ + root: preset => loadPresetDescriptors(preset), + env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName), + overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index), + overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName), + createLogger: () => () => {} +}); +exports.buildPresetChainWalker = buildPresetChainWalker; +const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors)); +const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName))); +const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index))); +const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName)))); - function wordsRegexp(words) { - return regexpCache[words] || (regexpCache[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")) - } +function* buildRootChain(opts, context) { + let configReport, babelRcReport; + const programmaticLogger = new _printer.ConfigPrinter(); + const programmaticChain = yield* loadProgrammaticChain({ + options: opts, + dirname: context.cwd + }, context, undefined, programmaticLogger); + if (!programmaticChain) return null; + const programmaticReport = programmaticLogger.output(); + let configFile; - function codePointToString(code) { - // UTF-16 Decoding - if (code <= 0xFFFF) { return String.fromCharCode(code) } - code -= 0x10000; - return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) + if (typeof opts.configFile === "string") { + configFile = yield* (0, _files.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller); + } else if (opts.configFile !== false) { + configFile = yield* (0, _files.findRootConfig)(context.root, context.envName, context.caller); } - var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; + let { + babelrc, + babelrcRoots + } = opts; + let babelrcRootsDirectory = context.cwd; + const configFileChain = emptyChain(); + const configFileLogger = new _printer.ConfigPrinter(); - // These are used when `options.locations` is on, for the - // `startLoc` and `endLoc` properties. + if (configFile) { + const validatedFile = validateConfigFile(configFile); + const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger); + if (!result) return null; + configReport = configFileLogger.output(); - var Position = function Position(line, col) { - this.line = line; - this.column = col; - }; + if (babelrc === undefined) { + babelrc = validatedFile.options.babelrc; + } - Position.prototype.offset = function offset (n) { - return new Position(this.line, this.column + n) - }; + if (babelrcRoots === undefined) { + babelrcRootsDirectory = validatedFile.dirname; + babelrcRoots = validatedFile.options.babelrcRoots; + } - var SourceLocation = function SourceLocation(p, start, end) { - this.start = start; - this.end = end; - if (p.sourceFile !== null) { this.source = p.sourceFile; } - }; + mergeChain(configFileChain, result); + } - // The `getLineInfo` function is mostly useful when the - // `locations` option is off (for performance reasons) and you - // want to find the line/column position for a given character - // offset. `input` should be the code string that the offset refers - // into. - - function getLineInfo(input, offset) { - for (var line = 1, cur = 0;;) { - var nextBreak = nextLineBreak(input, cur, offset); - if (nextBreak < 0) { return new Position(line, offset - cur) } - ++line; - cur = nextBreak; - } - } - - // A second argument must be given to configure the parser process. - // These options are recognized (only `ecmaVersion` is required): - - var defaultOptions = { - // `ecmaVersion` indicates the ECMAScript version to parse. Must be - // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 - // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` - // (the latest version the library supports). This influences - // support for strict mode, the set of reserved words, and support - // for new syntax features. - ecmaVersion: null, - // `sourceType` indicates the mode the code should be parsed in. - // Can be either `"script"` or `"module"`. This influences global - // strict mode and parsing of `import` and `export` declarations. - sourceType: "script", - // `onInsertedSemicolon` can be a callback that will be called when - // a semicolon is automatically inserted. It will be passed the - // position of the inserted semicolon as an offset, and if - // `locations` is enabled, it is given the location as a `{line, - // column}` object as second argument. - onInsertedSemicolon: null, - // `onTrailingComma` is similar to `onInsertedSemicolon`, but for - // trailing commas. - onTrailingComma: null, - // By default, reserved words are only enforced if ecmaVersion >= 5. - // Set `allowReserved` to a boolean value to explicitly turn this on - // an off. When this option has the value "never", reserved words - // and keywords can also not be used as property names. - allowReserved: null, - // When enabled, a return at the top level is not considered an - // error. - allowReturnOutsideFunction: false, - // When enabled, import/export statements are not constrained to - // appearing at the top of the program, and an import.meta expression - // in a script isn't considered an error. - allowImportExportEverywhere: false, - // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022. - // When enabled, await identifiers are allowed to appear at the top-level scope, - // but they are still not allowed in non-async functions. - allowAwaitOutsideFunction: null, - // When enabled, super identifiers are not constrained to - // appearing in methods and do not raise an error when they appear elsewhere. - allowSuperOutsideMethod: null, - // When enabled, hashbang directive in the beginning of file is - // allowed and treated as a line comment. Enabled by default when - // `ecmaVersion` >= 2023. - allowHashBang: false, - // By default, the parser will verify that private properties are - // only used in places where they are valid and have been declared. - // Set this to false to turn such checks off. - checkPrivateFields: true, - // When `locations` is on, `loc` properties holding objects with - // `start` and `end` properties in `{line, column}` form (with - // line being 1-based and column 0-based) will be attached to the - // nodes. - locations: false, - // A function can be passed as `onToken` option, which will - // cause Acorn to call that function with object in the same - // format as tokens returned from `tokenizer().getToken()`. Note - // that you are not allowed to call the parser from the - // callback—that will corrupt its internal state. - onToken: null, - // A function can be passed as `onComment` option, which will - // cause Acorn to call that function with `(block, text, start, - // end)` parameters whenever a comment is skipped. `block` is a - // boolean indicating whether this is a block (`/* */`) comment, - // `text` is the content of the comment, and `start` and `end` are - // character offsets that denote the start and end of the comment. - // When the `locations` option is on, two more parameters are - // passed, the full `{line, column}` locations of the start and - // end of the comments. Note that you are not allowed to call the - // parser from the callback—that will corrupt its internal state. - // When this option has an array as value, objects representing the - // comments are pushed to it. - onComment: null, - // Nodes have their start and end characters offsets recorded in - // `start` and `end` properties (directly on the node, rather than - // the `loc` object, which holds line/column data. To also add a - // [semi-standardized][range] `range` property holding a `[start, - // end]` array with the same numbers, set the `ranges` option to - // `true`. - // - // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 - ranges: false, - // It is possible to parse multiple files into a single AST by - // passing the tree produced by parsing the first file as - // `program` option in subsequent parses. This will add the - // toplevel forms of the parsed file to the `Program` (top) node - // of an existing parse tree. - program: null, - // When `locations` is on, you can pass this to record the source - // file in every node's `loc` object. - sourceFile: null, - // This value, if given, is stored in every node, whether - // `locations` is on or off. - directSourceFile: null, - // When enabled, parenthesized expressions are represented by - // (non-standard) ParenthesizedExpression nodes - preserveParens: false - }; + const pkgData = typeof context.filename === "string" ? yield* (0, _files.findPackageData)(context.filename) : null; + let ignoreFile, babelrcFile; + let isIgnored = false; + const fileChain = emptyChain(); - // Interpret and default an options object + if ((babelrc === true || babelrc === undefined) && pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) { + ({ + ignore: ignoreFile, + config: babelrcFile + } = yield* (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller)); - var warnedAboutEcmaVersion = false; + if (ignoreFile) { + fileChain.files.add(ignoreFile.filepath); + } - function getOptions(opts) { - var options = {}; + if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) { + isIgnored = true; + } - for (var opt in defaultOptions) - { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } + if (babelrcFile && !isIgnored) { + const validatedFile = validateBabelrcFile(babelrcFile); + const babelrcLogger = new _printer.ConfigPrinter(); + const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger); - if (options.ecmaVersion === "latest") { - options.ecmaVersion = 1e8; - } else if (options.ecmaVersion == null) { - if (!warnedAboutEcmaVersion && typeof console === "object" && console.warn) { - warnedAboutEcmaVersion = true; - console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future."); + if (!result) { + isIgnored = true; + } else { + babelRcReport = babelrcLogger.output(); + mergeChain(fileChain, result); } - options.ecmaVersion = 11; - } else if (options.ecmaVersion >= 2015) { - options.ecmaVersion -= 2009; } - if (options.allowReserved == null) - { options.allowReserved = options.ecmaVersion < 5; } - - if (!opts || opts.allowHashBang == null) - { options.allowHashBang = options.ecmaVersion >= 14; } - - if (isArray(options.onToken)) { - var tokens = options.onToken; - options.onToken = function (token) { return tokens.push(token); }; + if (babelrcFile && isIgnored) { + fileChain.files.add(babelrcFile.filepath); } - if (isArray(options.onComment)) - { options.onComment = pushComment(options, options.onComment); } - - return options } - function pushComment(options, array) { - return function(block, text, start, end, startLoc, endLoc) { - var comment = { - type: block ? "Block" : "Line", - value: text, - start: start, - end: end - }; - if (options.locations) - { comment.loc = new SourceLocation(this, startLoc, endLoc); } - if (options.ranges) - { comment.range = [start, end]; } - array.push(comment); - } - } - - // Each scope gets a bitset that may contain these flags - var - SCOPE_TOP = 1, - SCOPE_FUNCTION = 2, - SCOPE_ASYNC = 4, - SCOPE_GENERATOR = 8, - SCOPE_ARROW = 16, - SCOPE_SIMPLE_CATCH = 32, - SCOPE_SUPER = 64, - SCOPE_DIRECT_SUPER = 128, - SCOPE_CLASS_STATIC_BLOCK = 256, - SCOPE_CLASS_FIELD_INIT = 512, - SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; - - function functionFlags(async, generator) { - return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) - } - - // Used in checkLVal* and declareName to determine the type of a binding - var - BIND_NONE = 0, // Not a binding - BIND_VAR = 1, // Var-style binding - BIND_LEXICAL = 2, // Let- or const-style binding - BIND_FUNCTION = 3, // Function declaration - BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding - BIND_OUTSIDE = 5; // Special case for function names as bound inside the function - - var Parser = function Parser(options, input, startPos) { - this.options = options = getOptions(options); - this.sourceFile = options.sourceFile; - this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); - var reserved = ""; - if (options.allowReserved !== true) { - reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3]; - if (options.sourceType === "module") { reserved += " await"; } - } - this.reservedWords = wordsRegexp(reserved); - var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; - this.reservedWordsStrict = wordsRegexp(reservedStrict); - this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); - this.input = String(input); - - // Used to signal to callers of `readWord1` whether the word - // contained any escape sequences. This is needed because words with - // escape sequences must not be interpreted as keywords. - this.containsEsc = false; - - // Set up token state - - // The current position of the tokenizer in the input. - if (startPos) { - this.pos = startPos; - this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; - this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; - } else { - this.pos = this.lineStart = 0; - this.curLine = 1; - } + if (context.showConfig) { + console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n")); + return null; + } - // Properties of the current token: - // Its type - this.type = types$1.eof; - // For tokens that include more information than their type, the value - this.value = null; - // Its start and end offset - this.start = this.end = this.pos; - // And, if locations are used, the {line, column} object - // corresponding to those offsets - this.startLoc = this.endLoc = this.curPosition(); - - // Position information for the previous token - this.lastTokEndLoc = this.lastTokStartLoc = null; - this.lastTokStart = this.lastTokEnd = this.pos; - - // The context stack is used to superficially track syntactic - // context to predict whether a regular expression is allowed in a - // given position. - this.context = this.initialContext(); - this.exprAllowed = true; - - // Figure out if it's a module code. - this.inModule = options.sourceType === "module"; - this.strict = this.inModule || this.strictDirective(this.pos); - - // Used to signify the start of a potential arrow function - this.potentialArrowAt = -1; - this.potentialArrowInForAwait = false; + const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain); + return { + plugins: isIgnored ? [] : dedupDescriptors(chain.plugins), + presets: isIgnored ? [] : dedupDescriptors(chain.presets), + options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)), + fileHandling: isIgnored ? "ignored" : "transpile", + ignore: ignoreFile || undefined, + babelrc: babelrcFile || undefined, + config: configFile || undefined, + files: chain.files + }; +} - // Positions to delayed-check that yield/await does not exist in default parameters. - this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; - // Labels in scope. - this.labels = []; - // Thus-far undefined exports. - this.undefinedExports = Object.create(null); +function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) { + if (typeof babelrcRoots === "boolean") return babelrcRoots; + const absoluteRoot = context.root; - // If enabled, skip leading hashbang line. - if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") - { this.skipLineComment(2); } + if (babelrcRoots === undefined) { + return pkgData.directories.indexOf(absoluteRoot) !== -1; + } - // Scope tracking for duplicate variable names (see scope.js) - this.scopeStack = []; - this.enterScope(SCOPE_TOP); + let babelrcPatterns = babelrcRoots; + if (!Array.isArray(babelrcPatterns)) babelrcPatterns = [babelrcPatterns]; + babelrcPatterns = babelrcPatterns.map(pat => { + return typeof pat === "string" ? _path().default.resolve(babelrcRootsDirectory, pat) : pat; + }); - // For RegExp validation - this.regexpState = null; + if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) { + return pkgData.directories.indexOf(absoluteRoot) !== -1; + } - // The stack of private names. - // Each element has two properties: 'declared' and 'used'. - // When it exited from the outermost class definition, all used private names must be declared. - this.privateNameStack = []; - }; + return babelrcPatterns.some(pat => { + if (typeof pat === "string") { + pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory); + } - var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; + return pkgData.directories.some(directory => { + return matchPattern(pat, babelrcRootsDirectory, directory, context); + }); + }); +} - Parser.prototype.parse = function parse () { - var node = this.options.program || this.startNode(); - this.nextToken(); - return this.parseTopLevel(node) - }; +const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({ + filepath: file.filepath, + dirname: file.dirname, + options: (0, _options.validate)("configfile", file.options) +})); +const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({ + filepath: file.filepath, + dirname: file.dirname, + options: (0, _options.validate)("babelrcfile", file.options) +})); +const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({ + filepath: file.filepath, + dirname: file.dirname, + options: (0, _options.validate)("extendsfile", file.options) +})); +const loadProgrammaticChain = makeChainWalker({ + root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors), + env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName), + overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index), + overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName), + createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger) +}); +const loadFileChainWalker = makeChainWalker({ + root: file => loadFileDescriptors(file), + env: (file, envName) => loadFileEnvDescriptors(file)(envName), + overrides: (file, index) => loadFileOverridesDescriptors(file)(index), + overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName), + createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger) +}); - prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; +function* loadFileChain(input, context, files, baseLogger) { + const chain = yield* loadFileChainWalker(input, context, files, baseLogger); - prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; + if (chain) { + chain.files.add(input.filepath); + } - prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; + return chain; +} - prototypeAccessors.canAwait.get = function () { - for (var i = this.scopeStack.length - 1; i >= 0; i--) { - var ref = this.scopeStack[i]; - var flags = ref.flags; - if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false } - if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 } - } - return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction - }; +const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors)); +const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName))); +const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index))); +const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName)))); - prototypeAccessors.allowSuper.get = function () { - var ref = this.currentThisScope(); - var flags = ref.flags; - return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod - }; +function buildFileLogger(filepath, context, baseLogger) { + if (!baseLogger) { + return () => {}; + } - prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; + return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, { + filepath + }); +} - prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; +function buildRootDescriptors({ + dirname, + options +}, alias, descriptors) { + return descriptors(dirname, options, alias); +} - prototypeAccessors.allowNewDotTarget.get = function () { - for (var i = this.scopeStack.length - 1; i >= 0; i--) { - var ref = this.scopeStack[i]; - var flags = ref.flags; - if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) || - ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true } - } - return false - }; +function buildProgrammaticLogger(_, context, baseLogger) { + var _context$caller; - prototypeAccessors.inClassStaticBlock.get = function () { - return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 - }; + if (!baseLogger) { + return () => {}; + } - Parser.extend = function extend () { - var plugins = [], len = arguments.length; - while ( len-- ) plugins[ len ] = arguments[ len ]; + return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, { + callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name + }); +} - var cls = this; - for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } - return cls - }; +function buildEnvDescriptors({ + dirname, + options +}, alias, descriptors, envName) { + const opts = options.env && options.env[envName]; + return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null; +} - Parser.parse = function parse (input, options) { - return new this(options, input).parse() - }; +function buildOverrideDescriptors({ + dirname, + options +}, alias, descriptors, index) { + const opts = options.overrides && options.overrides[index]; + if (!opts) throw new Error("Assertion failure - missing override"); + return descriptors(dirname, opts, `${alias}.overrides[${index}]`); +} - Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { - var parser = new this(options, input, pos); - parser.nextToken(); - return parser.parseExpression() - }; +function buildOverrideEnvDescriptors({ + dirname, + options +}, alias, descriptors, index, envName) { + const override = options.overrides && options.overrides[index]; + if (!override) throw new Error("Assertion failure - missing override"); + const opts = override.env && override.env[envName]; + return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null; +} - Parser.tokenizer = function tokenizer (input, options) { - return new this(options, input) - }; +function makeChainWalker({ + root, + env, + overrides, + overridesEnv, + createLogger +}) { + return function* (input, context, files = new Set(), baseLogger) { + const { + dirname + } = input; + const flattenedConfigs = []; + const rootOpts = root(input); + + if (configIsApplicable(rootOpts, dirname, context)) { + flattenedConfigs.push({ + config: rootOpts, + envName: undefined, + index: undefined + }); + const envOpts = env(input, context.envName); - Object.defineProperties( Parser.prototype, prototypeAccessors ); + if (envOpts && configIsApplicable(envOpts, dirname, context)) { + flattenedConfigs.push({ + config: envOpts, + envName: context.envName, + index: undefined + }); + } - var pp$9 = Parser.prototype; + (rootOpts.options.overrides || []).forEach((_, index) => { + const overrideOps = overrides(input, index); - // ## Parser utilities + if (configIsApplicable(overrideOps, dirname, context)) { + flattenedConfigs.push({ + config: overrideOps, + index, + envName: undefined + }); + const overrideEnvOpts = overridesEnv(input, index, context.envName); - var literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/; - pp$9.strictDirective = function(start) { - if (this.options.ecmaVersion < 5) { return false } - for (;;) { - // Try to find string literal. - skipWhiteSpace.lastIndex = start; - start += skipWhiteSpace.exec(this.input)[0].length; - var match = literal.exec(this.input.slice(start)); - if (!match) { return false } - if ((match[1] || match[2]) === "use strict") { - skipWhiteSpace.lastIndex = start + match[0].length; - var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length; - var next = this.input.charAt(end); - return next === ";" || next === "}" || - (lineBreak.test(spaceAfter[0]) && - !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=")) - } - start += match[0].length; - - // Skip semicolon, if any. - skipWhiteSpace.lastIndex = start; - start += skipWhiteSpace.exec(this.input)[0].length; - if (this.input[start] === ";") - { start++; } + if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) { + flattenedConfigs.push({ + config: overrideEnvOpts, + index, + envName: context.envName + }); + } + } + }); } - }; - // Predicate that tests whether the next token is of the given - // type, and if yes, consumes it as a side effect. - - pp$9.eat = function(type) { - if (this.type === type) { - this.next(); - return true - } else { - return false + if (flattenedConfigs.some(({ + config: { + options: { + ignore, + only + } + } + }) => shouldIgnore(context, ignore, only, dirname))) { + return null; } - }; - // Tests whether parsed token is a contextual keyword. + const chain = emptyChain(); + const logger = createLogger(input, context, baseLogger); - pp$9.isContextual = function(name) { - return this.type === types$1.name && this.value === name && !this.containsEsc - }; + for (const { + config, + index, + envName + } of flattenedConfigs) { + if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) { + return null; + } - // Consumes contextual keyword if possible. + logger(config, index, envName); + mergeChainOpts(chain, config); + } - pp$9.eatContextual = function(name) { - if (!this.isContextual(name)) { return false } - this.next(); - return true + return chain; }; +} - // Asserts that following token is given contextual keyword. +function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) { + if (opts.extends === undefined) return true; + const file = yield* (0, _files.loadConfig)(opts.extends, dirname, context.envName, context.caller); - pp$9.expectContextual = function(name) { - if (!this.eatContextual(name)) { this.unexpected(); } - }; + if (files.has(file)) { + throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n")); + } - // Test whether a semicolon can be inserted at the current position. + files.add(file); + const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger); + files.delete(file); + if (!fileChain) return false; + mergeChain(chain, fileChain); + return true; +} - pp$9.canInsertSemicolon = function() { - return this.type === types$1.eof || - this.type === types$1.braceR || - lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) - }; +function mergeChain(target, source) { + target.options.push(...source.options); + target.plugins.push(...source.plugins); + target.presets.push(...source.presets); - pp$9.insertSemicolon = function() { - if (this.canInsertSemicolon()) { - if (this.options.onInsertedSemicolon) - { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } - return true - } - }; + for (const file of source.files) { + target.files.add(file); + } - // Consume a semicolon, or, failing that, see if we are allowed to - // pretend that there is a semicolon at this position. + return target; +} - pp$9.semicolon = function() { - if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); } - }; +function mergeChainOpts(target, { + options, + plugins, + presets +}) { + target.options.push(options); + target.plugins.push(...plugins()); + target.presets.push(...presets()); + return target; +} - pp$9.afterTrailingComma = function(tokType, notNext) { - if (this.type === tokType) { - if (this.options.onTrailingComma) - { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } - if (!notNext) - { this.next(); } - return true - } +function emptyChain() { + return { + options: [], + presets: [], + plugins: [], + files: new Set() }; +} - // Expect a token of a given type. If found, consume it, otherwise, - // raise an unexpected token error. +function normalizeOptions(opts) { + const options = Object.assign({}, opts); + delete options.extends; + delete options.env; + delete options.overrides; + delete options.plugins; + delete options.presets; + delete options.passPerPreset; + delete options.ignore; + delete options.only; + delete options.test; + delete options.include; + delete options.exclude; - pp$9.expect = function(type) { - this.eat(type) || this.unexpected(); - }; + if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) { + options.sourceMaps = options.sourceMap; + delete options.sourceMap; + } - // Raise an unexpected token error. + return options; +} - pp$9.unexpected = function(pos) { - this.raise(pos != null ? pos : this.start, "Unexpected token"); - }; +function dedupDescriptors(items) { + const map = new Map(); + const descriptors = []; - var DestructuringErrors = function DestructuringErrors() { - this.shorthandAssign = - this.trailingComma = - this.parenthesizedAssign = - this.parenthesizedBind = - this.doubleProto = - -1; - }; + for (const item of items) { + if (typeof item.value === "function") { + const fnKey = item.value; + let nameMap = map.get(fnKey); - pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { - if (!refDestructuringErrors) { return } - if (refDestructuringErrors.trailingComma > -1) - { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } - var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; - if (parens > -1) { this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern"); } - }; + if (!nameMap) { + nameMap = new Map(); + map.set(fnKey, nameMap); + } - pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) { - if (!refDestructuringErrors) { return false } - var shorthandAssign = refDestructuringErrors.shorthandAssign; - var doubleProto = refDestructuringErrors.doubleProto; - if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } - if (shorthandAssign >= 0) - { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } - if (doubleProto >= 0) - { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } - }; + let desc = nameMap.get(item.name); - pp$9.checkYieldAwaitInDefaultParams = function() { - if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) - { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } - if (this.awaitPos) - { this.raise(this.awaitPos, "Await expression cannot be a default value"); } - }; + if (!desc) { + desc = { + value: item + }; + descriptors.push(desc); + if (!item.ownPass) nameMap.set(item.name, desc); + } else { + desc.value = item; + } + } else { + descriptors.push({ + value: item + }); + } + } - pp$9.isSimpleAssignTarget = function(expr) { - if (expr.type === "ParenthesizedExpression") - { return this.isSimpleAssignTarget(expr.expression) } - return expr.type === "Identifier" || expr.type === "MemberExpression" - }; + return descriptors.reduce((acc, desc) => { + acc.push(desc.value); + return acc; + }, []); +} + +function configIsApplicable({ + options +}, dirname, context) { + return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname)); +} - var pp$8 = Parser.prototype; +function configFieldIsApplicable(context, test, dirname) { + const patterns = Array.isArray(test) ? test : [test]; + return matchesPatterns(context, patterns, dirname); +} - // ### Statement parsing +function shouldIgnore(context, ignore, only, dirname) { + if (ignore && matchesPatterns(context, ignore, dirname)) { + var _context$filename; - // Parse a program. Initializes the parser, reads any number of - // statements, and wraps them in a Program node. Optionally takes a - // `program` argument. If present, the statements will be appended - // to its body instead of creating a new node. + const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore)}\` from "${dirname}"`; + debug(message); - pp$8.parseTopLevel = function(node) { - var exports = Object.create(null); - if (!node.body) { node.body = []; } - while (this.type !== types$1.eof) { - var stmt = this.parseStatement(null, true, exports); - node.body.push(stmt); + if (context.showConfig) { + console.log(message); } - if (this.inModule) - { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) - { - var name = list[i]; - this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); - } } - this.adaptDirectivePrologue(node.body); - this.next(); - node.sourceType = this.options.sourceType; - return this.finishNode(node, "Program") - }; + return true; + } + + if (only && !matchesPatterns(context, only, dirname)) { + var _context$filename2; + + const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only)}\` from "${dirname}"`; + debug(message); - var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; - - pp$8.isLet = function(context) { - if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); - // For ambiguous cases, determine if a LexicalDeclaration (or only a - // Statement) is allowed here. If context is not empty then only a Statement - // is allowed. However, `let [` is an explicit negative lookahead for - // ExpressionStatement, so special-case it first. - if (nextCh === 91 || nextCh === 92) { return true } // '[', '\' - if (context) { return false } - - if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral - if (isIdentifierStart(nextCh, true)) { - var pos = next + 1; - while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; } - if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } - var ident = this.input.slice(next, pos); - if (!keywordRelationalOperator.test(ident)) { return true } + if (context.showConfig) { + console.log(message); } - return false - }; - // check 'async [no LineTerminator here] function' - // - 'async /*foo*/ function' is OK. - // - 'async /*\n*/ function' is invalid. - pp$8.isAsyncFunction = function() { - if (this.options.ecmaVersion < 8 || !this.isContextual("async")) - { return false } - - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, after; - return !lineBreak.test(this.input.slice(this.pos, next)) && - this.input.slice(next, next + 8) === "function" && - (next + 8 === this.input.length || - !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00)) - }; + return true; + } - // Parse a single statement. - // - // If expecting a statement and finding a slash operator, parse a - // regular expression literal. This is to handle cases like - // `if (foo) /blah/.exec(foo)`, where looking at the previous token - // does not help. + return false; +} - pp$8.parseStatement = function(context, topLevel, exports) { - var starttype = this.type, node = this.startNode(), kind; +function matchesPatterns(context, patterns, dirname) { + return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context)); +} - if (this.isLet(context)) { - starttype = types$1._var; - kind = "let"; - } +function matchPattern(pattern, dirname, pathToTest, context) { + if (typeof pattern === "function") { + return !!pattern(pathToTest, { + dirname, + envName: context.envName, + caller: context.caller + }); + } - // Most types of statements are recognized by the keyword they - // start with. Many are trivial to parse, some require a bit of - // complexity. - - switch (starttype) { - case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword) - case types$1._debugger: return this.parseDebuggerStatement(node) - case types$1._do: return this.parseDoStatement(node) - case types$1._for: return this.parseForStatement(node) - case types$1._function: - // Function as sole body of either an if statement or a labeled statement - // works, but not when it is part of a labeled statement that is the sole - // body of an if statement. - if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } - return this.parseFunctionStatement(node, false, !context) - case types$1._class: - if (context) { this.unexpected(); } - return this.parseClass(node, true) - case types$1._if: return this.parseIfStatement(node) - case types$1._return: return this.parseReturnStatement(node) - case types$1._switch: return this.parseSwitchStatement(node) - case types$1._throw: return this.parseThrowStatement(node) - case types$1._try: return this.parseTryStatement(node) - case types$1._const: case types$1._var: - kind = kind || this.value; - if (context && kind !== "var") { this.unexpected(); } - return this.parseVarStatement(node, kind) - case types$1._while: return this.parseWhileStatement(node) - case types$1._with: return this.parseWithStatement(node) - case types$1.braceL: return this.parseBlock(true, node) - case types$1.semi: return this.parseEmptyStatement(node) - case types$1._export: - case types$1._import: - if (this.options.ecmaVersion > 10 && starttype === types$1._import) { - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); - if (nextCh === 40 || nextCh === 46) // '(' or '.' - { return this.parseExpressionStatement(node, this.parseExpression()) } - } - - if (!this.options.allowImportExportEverywhere) { - if (!topLevel) - { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } - if (!this.inModule) - { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } - } - return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports) - - // If the statement does not start with a statement keyword or a - // brace, it's an ExpressionStatement or LabeledStatement. We - // simply start parsing an expression, and afterwards, if the - // next token is a colon and the expression was a simple - // Identifier node, we switch to interpreting it as a label. - default: - if (this.isAsyncFunction()) { - if (context) { this.unexpected(); } - this.next(); - return this.parseFunctionStatement(node, true, !context) - } + if (typeof pathToTest !== "string") { + throw new Error(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`); + } - var maybeName = this.value, expr = this.parseExpression(); - if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) - { return this.parseLabeledStatement(node, maybeName, expr, context) } - else { return this.parseExpressionStatement(node, expr) } - } - }; + if (typeof pattern === "string") { + pattern = (0, _patternToRegex.default)(pattern, dirname); + } - pp$8.parseBreakContinueStatement = function(node, keyword) { - var isBreak = keyword === "break"; - this.next(); - if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; } - else if (this.type !== types$1.name) { this.unexpected(); } - else { - node.label = this.parseIdent(); - this.semicolon(); - } + return pattern.test(pathToTest); +} - // Verify that there is an actual destination to break or - // continue to. - var i = 0; - for (; i < this.labels.length; ++i) { - var lab = this.labels[i]; - if (node.label == null || lab.name === node.label.name) { - if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } - if (node.label && isBreak) { break } - } - } - if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } - return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") - }; +/***/ }), - pp$8.parseDebuggerStatement = function(node) { - this.next(); - this.semicolon(); - return this.finishNode(node, "DebuggerStatement") - }; +/***/ 2420: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - pp$8.parseDoStatement = function(node) { - this.next(); - this.labels.push(loopLabel); - node.body = this.parseStatement("do"); - this.labels.pop(); - this.expect(types$1._while); - node.test = this.parseParenExpression(); - if (this.options.ecmaVersion >= 6) - { this.eat(types$1.semi); } - else - { this.semicolon(); } - return this.finishNode(node, "DoWhileStatement") - }; +"use strict"; - // Disambiguating between a `for` and a `for`/`in` or `for`/`of` - // loop is non-trivial. Basically, we have to parse the init `var` - // statement or expression, disallowing the `in` operator (see - // the second parameter to `parseExpression`), and then check - // whether the next token is `in` or `of`. When there is no init - // part (semicolon immediately after the opening parenthesis), it - // is a regular `for` loop. - pp$8.parseForStatement = function(node) { - this.next(); - var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await")) ? this.lastTokStart : -1; - this.labels.push(loopLabel); - this.enterScope(0); - this.expect(types$1.parenL); - if (this.type === types$1.semi) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, null) - } - var isLet = this.isLet(); - if (this.type === types$1._var || this.type === types$1._const || isLet) { - var init$1 = this.startNode(), kind = isLet ? "let" : this.value; - this.next(); - this.parseVar(init$1, true, kind); - this.finishNode(init$1, "VariableDeclaration"); - if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { - if (this.options.ecmaVersion >= 9) { - if (this.type === types$1._in) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - } else { node.await = awaitAt > -1; } - } - return this.parseForIn(node, init$1) - } - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, init$1) - } - var startsWithLet = this.isContextual("let"), isForOf = false; - var containsEsc = this.containsEsc; - var refDestructuringErrors = new DestructuringErrors; - var initPos = this.start; - var init = awaitAt > -1 - ? this.parseExprSubscripts(refDestructuringErrors, "await") - : this.parseExpression(true, refDestructuringErrors); - if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt) - if (this.type === types$1._in) { this.unexpected(awaitAt); } - node.await = true; - } else if (isForOf && this.options.ecmaVersion >= 8) { - if (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async") { this.unexpected(); } - else if (this.options.ecmaVersion >= 9) { node.await = false; } - } - if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } - this.toAssignable(init, false, refDestructuringErrors); - this.checkLValPattern(init); - return this.parseForIn(node, init) - } else { - this.checkExpressionErrors(refDestructuringErrors, true); - } - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, init) - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createCachedDescriptors = createCachedDescriptors; +exports.createUncachedDescriptors = createUncachedDescriptors; +exports.createDescriptor = createDescriptor; - pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) { - this.next(); - return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) - }; +var _files = __nccwpck_require__(37217); - pp$8.parseIfStatement = function(node) { - this.next(); - node.test = this.parseParenExpression(); - // allow function declarations in branches, but only in non-strict mode - node.consequent = this.parseStatement("if"); - node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; - return this.finishNode(node, "IfStatement") - }; +var _item = __nccwpck_require__(72478); - pp$8.parseReturnStatement = function(node) { - if (!this.inFunction && !this.options.allowReturnOutsideFunction) - { this.raise(this.start, "'return' outside of function"); } - this.next(); +var _caching = __nccwpck_require__(46268); - // In `return` (and `break`/`continue`), the keywords with - // optional arguments, we eagerly look for a semicolon or the - // possibility to insert one. +function isEqualDescriptor(a, b) { + return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved); +} - if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; } - else { node.argument = this.parseExpression(); this.semicolon(); } - return this.finishNode(node, "ReturnStatement") +function createCachedDescriptors(dirname, options, alias) { + const { + plugins, + presets, + passPerPreset + } = options; + return { + options, + plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => [], + presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => [] }; +} - pp$8.parseSwitchStatement = function(node) { - this.next(); - node.discriminant = this.parseParenExpression(); - node.cases = []; - this.expect(types$1.braceL); - this.labels.push(switchLabel); - this.enterScope(0); - - // Statements under must be grouped (by label) in SwitchCase - // nodes. `cur` is used to keep the node that we are currently - // adding statements to. - - var cur; - for (var sawDefault = false; this.type !== types$1.braceR;) { - if (this.type === types$1._case || this.type === types$1._default) { - var isCase = this.type === types$1._case; - if (cur) { this.finishNode(cur, "SwitchCase"); } - node.cases.push(cur = this.startNode()); - cur.consequent = []; - this.next(); - if (isCase) { - cur.test = this.parseExpression(); - } else { - if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } - sawDefault = true; - cur.test = null; - } - this.expect(types$1.colon); - } else { - if (!cur) { this.unexpected(); } - cur.consequent.push(this.parseStatement(null)); +function createUncachedDescriptors(dirname, options, alias) { + let plugins; + let presets; + return { + options, + plugins: () => { + if (!plugins) { + plugins = createPluginDescriptors(options.plugins || [], dirname, alias); } + + return plugins; + }, + presets: () => { + if (!presets) { + presets = createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset); + } + + return presets; } - this.exitScope(); - if (cur) { this.finishNode(cur, "SwitchCase"); } - this.next(); // Closing brace - this.labels.pop(); - return this.finishNode(node, "SwitchStatement") }; +} - pp$8.parseThrowStatement = function(node) { - this.next(); - if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) - { this.raise(this.lastTokEnd, "Illegal newline after throw"); } - node.argument = this.parseExpression(); - this.semicolon(); - return this.finishNode(node, "ThrowStatement") - }; +const PRESET_DESCRIPTOR_CACHE = new WeakMap(); +const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => { + const dirname = cache.using(dir => dir); + return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCacheSync)(passPerPreset => createPresetDescriptors(items, dirname, alias, passPerPreset).map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc)))); +}); +const PLUGIN_DESCRIPTOR_CACHE = new WeakMap(); +const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => { + const dirname = cache.using(dir => dir); + return (0, _caching.makeStrongCacheSync)(alias => createPluginDescriptors(items, dirname, alias).map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc))); +}); +const DEFAULT_OPTIONS = {}; - // Reused empty array added for node fields that are always empty. +function loadCachedDescriptor(cache, desc) { + const { + value, + options = DEFAULT_OPTIONS + } = desc; + if (options === false) return desc; + let cacheByOptions = cache.get(value); - var empty$1 = []; + if (!cacheByOptions) { + cacheByOptions = new WeakMap(); + cache.set(value, cacheByOptions); + } - pp$8.parseCatchClauseParam = function() { - var param = this.parseBindingAtom(); - var simple = param.type === "Identifier"; - this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); - this.expect(types$1.parenR); + let possibilities = cacheByOptions.get(options); - return param - }; + if (!possibilities) { + possibilities = []; + cacheByOptions.set(options, possibilities); + } - pp$8.parseTryStatement = function(node) { - this.next(); - node.block = this.parseBlock(); - node.handler = null; - if (this.type === types$1._catch) { - var clause = this.startNode(); - this.next(); - if (this.eat(types$1.parenL)) { - clause.param = this.parseCatchClauseParam(); - } else { - if (this.options.ecmaVersion < 10) { this.unexpected(); } - clause.param = null; - this.enterScope(0); - } - clause.body = this.parseBlock(false); - this.exitScope(); - node.handler = this.finishNode(clause, "CatchClause"); + if (possibilities.indexOf(desc) === -1) { + const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc)); + + if (matches.length > 0) { + return matches[0]; } - node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; - if (!node.handler && !node.finalizer) - { this.raise(node.start, "Missing catch or finally clause"); } - return this.finishNode(node, "TryStatement") - }; - pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) { - this.next(); - this.parseVar(node, false, kind, allowMissingInitializer); - this.semicolon(); - return this.finishNode(node, "VariableDeclaration") - }; + possibilities.push(desc); + } - pp$8.parseWhileStatement = function(node) { - this.next(); - node.test = this.parseParenExpression(); - this.labels.push(loopLabel); - node.body = this.parseStatement("while"); - this.labels.pop(); - return this.finishNode(node, "WhileStatement") - }; + return desc; +} - pp$8.parseWithStatement = function(node) { - if (this.strict) { this.raise(this.start, "'with' in strict mode"); } - this.next(); - node.object = this.parseParenExpression(); - node.body = this.parseStatement("with"); - return this.finishNode(node, "WithStatement") - }; +function createPresetDescriptors(items, dirname, alias, passPerPreset) { + return createDescriptors("preset", items, dirname, alias, passPerPreset); +} - pp$8.parseEmptyStatement = function(node) { - this.next(); - return this.finishNode(node, "EmptyStatement") - }; +function createPluginDescriptors(items, dirname, alias) { + return createDescriptors("plugin", items, dirname, alias); +} - pp$8.parseLabeledStatement = function(node, maybeName, expr, context) { - for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) - { - var label = list[i$1]; - - if (label.name === maybeName) - { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); - } } - var kind = this.type.isLoop ? "loop" : this.type === types$1._switch ? "switch" : null; - for (var i = this.labels.length - 1; i >= 0; i--) { - var label$1 = this.labels[i]; - if (label$1.statementStart === node.start) { - // Update information about previous labels on this node - label$1.statementStart = this.start; - label$1.kind = kind; - } else { break } - } - this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); - node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); - this.labels.pop(); - node.label = expr; - return this.finishNode(node, "LabeledStatement") - }; +function createDescriptors(type, items, dirname, alias, ownPass) { + const descriptors = items.map((item, index) => createDescriptor(item, dirname, { + type, + alias: `${alias}$${index}`, + ownPass: !!ownPass + })); + assertNoDuplicates(descriptors); + return descriptors; +} - pp$8.parseExpressionStatement = function(node, expr) { - node.expression = expr; - this.semicolon(); - return this.finishNode(node, "ExpressionStatement") - }; +function createDescriptor(pair, dirname, { + type, + alias, + ownPass +}) { + const desc = (0, _item.getItemDescriptor)(pair); - // Parse a semicolon-enclosed block of statements, handling `"use - // strict"` declarations when `allowStrict` is true (used for - // function bodies). + if (desc) { + return desc; + } - pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) { - if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; - if ( node === void 0 ) node = this.startNode(); + let name; + let options; + let value = pair; - node.body = []; - this.expect(types$1.braceL); - if (createNewLexicalScope) { this.enterScope(0); } - while (this.type !== types$1.braceR) { - var stmt = this.parseStatement(null); - node.body.push(stmt); + if (Array.isArray(value)) { + if (value.length === 3) { + [value, options, name] = value; + } else { + [value, options] = value; } - if (exitStrict) { this.strict = false; } - this.next(); - if (createNewLexicalScope) { this.exitScope(); } - return this.finishNode(node, "BlockStatement") - }; + } - // Parse a regular `for` loop. The disambiguation code in - // `parseStatement` will already have parsed the init statement or - // expression. + let file = undefined; + let filepath = null; - pp$8.parseFor = function(node, init) { - node.init = init; - this.expect(types$1.semi); - node.test = this.type === types$1.semi ? null : this.parseExpression(); - this.expect(types$1.semi); - node.update = this.type === types$1.parenR ? null : this.parseExpression(); - this.expect(types$1.parenR); - node.body = this.parseStatement("for"); - this.exitScope(); - this.labels.pop(); - return this.finishNode(node, "ForStatement") - }; + if (typeof value === "string") { + if (typeof type !== "string") { + throw new Error("To resolve a string-based item, the type of item must be given"); + } - // Parse a `for`/`in` and `for`/`of` loop, which are almost - // same from parser's perspective. + const resolver = type === "plugin" ? _files.loadPlugin : _files.loadPreset; + const request = value; + ({ + filepath, + value + } = resolver(value, dirname)); + file = { + request, + resolved: filepath + }; + } - pp$8.parseForIn = function(node, init) { - var isForIn = this.type === types$1._in; - this.next(); + if (!value) { + throw new Error(`Unexpected falsy value: ${String(value)}`); + } - if ( - init.type === "VariableDeclaration" && - init.declarations[0].init != null && - ( - !isForIn || - this.options.ecmaVersion < 8 || - this.strict || - init.kind !== "var" || - init.declarations[0].id.type !== "Identifier" - ) - ) { - this.raise( - init.start, - ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") - ); + if (typeof value === "object" && value.__esModule) { + if (value.default) { + value = value.default; + } else { + throw new Error("Must export a default export when using ES6 modules."); } - node.left = init; - node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); - this.expect(types$1.parenR); - node.body = this.parseStatement("for"); - this.exitScope(); - this.labels.pop(); - return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") - }; + } - // Parse a list of variable declarations. + if (typeof value !== "object" && typeof value !== "function") { + throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`); + } - pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) { - node.declarations = []; - node.kind = kind; - for (;;) { - var decl = this.startNode(); - this.parseVarId(decl, kind); - if (this.eat(types$1.eq)) { - decl.init = this.parseMaybeAssign(isFor); - } else if (!allowMissingInitializer && kind === "const" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { - this.unexpected(); - } else if (!allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of")))) { - this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); - } else { - decl.init = null; - } - node.declarations.push(this.finishNode(decl, "VariableDeclarator")); - if (!this.eat(types$1.comma)) { break } - } - return node - }; + if (filepath !== null && typeof value === "object" && value) { + throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`); + } - pp$8.parseVarId = function(decl, kind) { - decl.id = this.parseBindingAtom(); - this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); + return { + name, + alias: filepath || alias, + value, + options, + dirname, + ownPass, + file }; +} - var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; +function assertNoDuplicates(items) { + const map = new Map(); - // Parse a function declaration or literal (depending on the - // `statement & FUNC_STATEMENT`). + for (const item of items) { + if (typeof item.value !== "function") continue; + let nameMap = map.get(item.value); - // Remove `allowExpressionBody` for 7.0.0, as it is only called with false - pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { - this.initFunction(node); - if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { - if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT)) - { this.unexpected(); } - node.generator = this.eat(types$1.star); + if (!nameMap) { + nameMap = new Set(); + map.set(item.value, nameMap); } - if (this.options.ecmaVersion >= 8) - { node.async = !!isAsync; } - if (statement & FUNC_STATEMENT) { - node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent(); - if (node.id && !(statement & FUNC_HANGING_STATEMENT)) - // If it is a regular function declaration in sloppy mode, then it is - // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding - // mode depends on properties of the current scope (see - // treatFunctionsAsVar). - { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } + if (nameMap.has(item.name)) { + const conflicts = items.filter(i => i.value === item.value); + throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n")); } - var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - this.enterScope(functionFlags(node.async, node.generator)); + nameMap.add(item.name); + } +} - if (!(statement & FUNC_STATEMENT)) - { node.id = this.type === types$1.name ? this.parseIdent() : null; } +/***/ }), - this.parseFunctionParams(node); - this.parseFunctionBody(node, allowExpressionBody, false, forInit); +/***/ 86199: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") - }; +"use strict"; - pp$8.parseFunctionParams = function(node) { - this.expect(types$1.parenL); - node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); - this.checkYieldAwaitInDefaultParams(); - }; - // Parse a class declaration or literal (depending on the - // `isStatement` parameter). +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.findConfigUpwards = findConfigUpwards; +exports.findRelativeConfig = findRelativeConfig; +exports.findRootConfig = findRootConfig; +exports.loadConfig = loadConfig; +exports.resolveShowConfigPath = resolveShowConfigPath; +exports.ROOT_CONFIG_FILENAMES = void 0; - pp$8.parseClass = function(node, isStatement) { - this.next(); +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(2830)); - // ecma-262 14.6 Class Definitions - // A class definition is always strict mode code. - var oldStrict = this.strict; - this.strict = true; + _debug = function () { + return data; + }; - this.parseClassId(node, isStatement); - this.parseClassSuper(node); - var privateNameMap = this.enterClassBody(); - var classBody = this.startNode(); - var hadConstructor = false; - classBody.body = []; - this.expect(types$1.braceL); - while (this.type !== types$1.braceR) { - var element = this.parseClassElement(node.superClass !== null); - if (element) { - classBody.body.push(element); - if (element.type === "MethodDefinition" && element.kind === "constructor") { - if (hadConstructor) { this.raiseRecoverable(element.start, "Duplicate constructor in the same class"); } - hadConstructor = true; - } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { - this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); - } - } - } - this.strict = oldStrict; - this.next(); - node.body = this.finishNode(classBody, "ClassBody"); - this.exitClassBody(); - return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") - }; + return data; +} - pp$8.parseClassElement = function(constructorAllowsSuper) { - if (this.eat(types$1.semi)) { return null } - - var ecmaVersion = this.options.ecmaVersion; - var node = this.startNode(); - var keyName = ""; - var isGenerator = false; - var isAsync = false; - var kind = "method"; - var isStatic = false; - - if (this.eatContextual("static")) { - // Parse static init block - if (ecmaVersion >= 13 && this.eat(types$1.braceL)) { - this.parseClassStaticBlock(node); - return node - } - if (this.isClassElementNameStart() || this.type === types$1.star) { - isStatic = true; - } else { - keyName = "static"; - } - } - node.static = isStatic; - if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { - if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) { - isAsync = true; - } else { - keyName = "async"; - } - } - if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) { - isGenerator = true; - } - if (!keyName && !isAsync && !isGenerator) { - var lastValue = this.value; - if (this.eatContextual("get") || this.eatContextual("set")) { - if (this.isClassElementNameStart()) { - kind = lastValue; - } else { - keyName = lastValue; - } - } - } +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); - // Parse element name - if (keyName) { - // 'async', 'get', 'set', or 'static' were not a keyword contextually. - // The last token is any of those. Make it the element name. - node.computed = false; - node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc); - node.key.name = keyName; - this.finishNode(node.key, "Identifier"); - } else { - this.parseClassElementName(node); - } + _path = function () { + return data; + }; - // Parse element value - if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== "method" || isGenerator || isAsync) { - var isConstructor = !node.static && checkKeyName(node, "constructor"); - var allowsDirectSuper = isConstructor && constructorAllowsSuper; - // Couldn't move this check into the 'parseClassMethod' method for backward compatibility. - if (isConstructor && kind !== "method") { this.raise(node.key.start, "Constructor can't have get/set modifier"); } - node.kind = isConstructor ? "constructor" : kind; - this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper); - } else { - this.parseClassField(node); - } + return data; +} - return node - }; +function _json() { + const data = _interopRequireDefault(__nccwpck_require__(84841)); - pp$8.isClassElementNameStart = function() { - return ( - this.type === types$1.name || - this.type === types$1.privateId || - this.type === types$1.num || - this.type === types$1.string || - this.type === types$1.bracketL || - this.type.keyword - ) + _json = function () { + return data; }; - pp$8.parseClassElementName = function(element) { - if (this.type === types$1.privateId) { - if (this.value === "constructor") { - this.raise(this.start, "Classes can't have an element named '#constructor'"); - } - element.computed = false; - element.key = this.parsePrivateIdent(); - } else { - this.parsePropertyName(element); - } + return data; +} + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); + + _gensync = function () { + return data; }; - pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { - // Check key and flags - var key = method.key; - if (method.kind === "constructor") { - if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } - if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } - } else if (method.static && checkKeyName(method, "prototype")) { - this.raise(key.start, "Classes may not have a static property named prototype"); - } + return data; +} - // Parse value - var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); +var _caching = __nccwpck_require__(46268); - // Check value - if (method.kind === "get" && value.params.length !== 0) - { this.raiseRecoverable(value.start, "getter should have no params"); } - if (method.kind === "set" && value.params.length !== 1) - { this.raiseRecoverable(value.start, "setter should have exactly one param"); } - if (method.kind === "set" && value.params[0].type === "RestElement") - { this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"); } +var _configApi = _interopRequireDefault(__nccwpck_require__(33700)); - return this.finishNode(method, "MethodDefinition") - }; +var _utils = __nccwpck_require__(748); - pp$8.parseClassField = function(field) { - if (checkKeyName(field, "constructor")) { - this.raise(field.key.start, "Classes can't have a field named 'constructor'"); - } else if (field.static && checkKeyName(field, "prototype")) { - this.raise(field.key.start, "Classes can't have a static field named 'prototype'"); - } +var _moduleTypes = _interopRequireDefault(__nccwpck_require__(67465)); - if (this.eat(types$1.eq)) { - // To raise SyntaxError if 'arguments' exists in the initializer. - this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER); - field.value = this.parseMaybeAssign(); - this.exitScope(); - } else { - field.value = null; - } - this.semicolon(); +var _patternToRegex = _interopRequireDefault(__nccwpck_require__(79619)); - return this.finishNode(field, "PropertyDefinition") - }; +var fs = _interopRequireWildcard(__nccwpck_require__(10733)); - pp$8.parseClassStaticBlock = function(node) { - node.body = []; +var _resolve = _interopRequireDefault(__nccwpck_require__(12620)); - var oldLabels = this.labels; - this.labels = []; - this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); - while (this.type !== types$1.braceR) { - var stmt = this.parseStatement(null); - node.body.push(stmt); - } - this.next(); - this.exitScope(); - this.labels = oldLabels; +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - return this.finishNode(node, "StaticBlock") - }; +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - pp$8.parseClassId = function(node, isStatement) { - if (this.type === types$1.name) { - node.id = this.parseIdent(); - if (isStatement) - { this.checkLValSimple(node.id, BIND_LEXICAL, false); } - } else { - if (isStatement === true) - { this.unexpected(); } - node.id = null; - } - }; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - pp$8.parseClassSuper = function(node) { - node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null; - }; +const debug = (0, _debug().default)("babel:config:loading:files:configuration"); +const ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json"]; +exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES; +const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json"]; +const BABELIGNORE_FILENAME = ".babelignore"; - pp$8.enterClassBody = function() { - var element = {declared: Object.create(null), used: []}; - this.privateNameStack.push(element); - return element.declared - }; +function* findConfigUpwards(rootDir) { + let dirname = rootDir; - pp$8.exitClassBody = function() { - var ref = this.privateNameStack.pop(); - var declared = ref.declared; - var used = ref.used; - if (!this.options.checkPrivateFields) { return } - var len = this.privateNameStack.length; - var parent = len === 0 ? null : this.privateNameStack[len - 1]; - for (var i = 0; i < used.length; ++i) { - var id = used[i]; - if (!hasOwn(declared, id.name)) { - if (parent) { - parent.used.push(id); - } else { - this.raiseRecoverable(id.start, ("Private field '#" + (id.name) + "' must be declared in an enclosing class")); - } + while (true) { + for (const filename of ROOT_CONFIG_FILENAMES) { + if (yield* fs.exists(_path().default.join(dirname, filename))) { + return dirname; } } - }; - - function isPrivateNameConflicted(privateNameMap, element) { - var name = element.key.name; - var curr = privateNameMap[name]; - var next = "true"; - if (element.type === "MethodDefinition" && (element.kind === "get" || element.kind === "set")) { - next = (element.static ? "s" : "i") + element.kind; - } + const nextDir = _path().default.dirname(dirname); - // `class { get #a(){}; static set #a(_){} }` is also conflict. - if ( - curr === "iget" && next === "iset" || - curr === "iset" && next === "iget" || - curr === "sget" && next === "sset" || - curr === "sset" && next === "sget" - ) { - privateNameMap[name] = "true"; - return false - } else if (!curr) { - privateNameMap[name] = next; - return false - } else { - return true - } + if (dirname === nextDir) break; + dirname = nextDir; } - function checkKeyName(node, name) { - var computed = node.computed; - var key = node.key; - return !computed && ( - key.type === "Identifier" && key.name === name || - key.type === "Literal" && key.value === name - ) - } + return null; +} - // Parses module export declaration. +function* findRelativeConfig(packageData, envName, caller) { + let config = null; + let ignore = null; - pp$8.parseExportAllDeclaration = function(node, exports) { - if (this.options.ecmaVersion >= 11) { - if (this.eatContextual("as")) { - node.exported = this.parseModuleExportName(); - this.checkExport(exports, node.exported, this.lastTokStart); - } else { - node.exported = null; - } - } - this.expectContextual("from"); - if (this.type !== types$1.string) { this.unexpected(); } - node.source = this.parseExprAtom(); - if (this.options.ecmaVersion >= 16) - { node.attributes = this.parseWithClause(); } - this.semicolon(); - return this.finishNode(node, "ExportAllDeclaration") - }; + const dirname = _path().default.dirname(packageData.filepath); - pp$8.parseExport = function(node, exports) { - this.next(); - // export * from '...' - if (this.eat(types$1.star)) { - return this.parseExportAllDeclaration(node, exports) - } - if (this.eat(types$1._default)) { // export default ... - this.checkExport(exports, "default", this.lastTokStart); - node.declaration = this.parseExportDefaultDeclaration(); - return this.finishNode(node, "ExportDefaultDeclaration") + for (const loc of packageData.directories) { + if (!config) { + var _packageData$pkg; + + config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null); } - // export var|const|let|function|class ... - if (this.shouldParseExportStatement()) { - node.declaration = this.parseExportDeclaration(node); - if (node.declaration.type === "VariableDeclaration") - { this.checkVariableExport(exports, node.declaration.declarations); } - else - { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } - node.specifiers = []; - node.source = null; - if (this.options.ecmaVersion >= 16) - { node.attributes = []; } - } else { // export { x, y as z } [from '...'] - node.declaration = null; - node.specifiers = this.parseExportSpecifiers(exports); - if (this.eatContextual("from")) { - if (this.type !== types$1.string) { this.unexpected(); } - node.source = this.parseExprAtom(); - if (this.options.ecmaVersion >= 16) - { node.attributes = this.parseWithClause(); } - } else { - for (var i = 0, list = node.specifiers; i < list.length; i += 1) { - // check for keywords used as local names - var spec = list[i]; - this.checkUnreserved(spec.local); - // check if export is defined - this.checkLocalExport(spec.local); + if (!ignore) { + const ignoreLoc = _path().default.join(loc, BABELIGNORE_FILENAME); - if (spec.local.type === "Literal") { - this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); - } - } + ignore = yield* readIgnoreConfig(ignoreLoc); - node.source = null; - if (this.options.ecmaVersion >= 16) - { node.attributes = []; } + if (ignore) { + debug("Found ignore %o from %o.", ignore.filepath, dirname); } - this.semicolon(); } - return this.finishNode(node, "ExportNamedDeclaration") - }; + } - pp$8.parseExportDeclaration = function(node) { - return this.parseStatement(null) + return { + config, + ignore }; +} - pp$8.parseExportDefaultDeclaration = function() { - var isAsync; - if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) { - var fNode = this.startNode(); - this.next(); - if (isAsync) { this.next(); } - return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync) - } else if (this.type === types$1._class) { - var cNode = this.startNode(); - return this.parseClass(cNode, "nullableID") - } else { - var declaration = this.parseMaybeAssign(); - this.semicolon(); - return declaration - } - }; +function findRootConfig(dirname, envName, caller) { + return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller); +} - pp$8.checkExport = function(exports, name, pos) { - if (!exports) { return } - if (typeof name !== "string") - { name = name.type === "Identifier" ? name.name : name.value; } - if (hasOwn(exports, name)) - { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } - exports[name] = true; - }; +function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) { + const configs = yield* _gensync().default.all(names.map(filename => readConfig(_path().default.join(dirname, filename), envName, caller))); + const config = configs.reduce((previousConfig, config) => { + if (config && previousConfig) { + throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`); + } - pp$8.checkPatternExport = function(exports, pat) { - var type = pat.type; - if (type === "Identifier") - { this.checkExport(exports, pat, pat.start); } - else if (type === "ObjectPattern") - { for (var i = 0, list = pat.properties; i < list.length; i += 1) - { - var prop = list[i]; - - this.checkPatternExport(exports, prop); - } } - else if (type === "ArrayPattern") - { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { - var elt = list$1[i$1]; - - if (elt) { this.checkPatternExport(exports, elt); } - } } - else if (type === "Property") - { this.checkPatternExport(exports, pat.value); } - else if (type === "AssignmentPattern") - { this.checkPatternExport(exports, pat.left); } - else if (type === "RestElement") - { this.checkPatternExport(exports, pat.argument); } - }; + return config || previousConfig; + }, previousConfig); - pp$8.checkVariableExport = function(exports, decls) { - if (!exports) { return } - for (var i = 0, list = decls; i < list.length; i += 1) - { - var decl = list[i]; + if (config) { + debug("Found configuration %o from %o.", config.filepath, dirname); + } - this.checkPatternExport(exports, decl.id); - } - }; + return config; +} - pp$8.shouldParseExportStatement = function() { - return this.type.keyword === "var" || - this.type.keyword === "const" || - this.type.keyword === "class" || - this.type.keyword === "function" || - this.isLet() || - this.isAsyncFunction() - }; +function* loadConfig(name, dirname, envName, caller) { + const filepath = yield* (0, _resolve.default)(name, { + basedir: dirname + }); + const conf = yield* readConfig(filepath, envName, caller); - // Parses a comma-separated list of module exports. + if (!conf) { + throw new Error(`Config file ${filepath} contains no configuration data`); + } - pp$8.parseExportSpecifier = function(exports) { - var node = this.startNode(); - node.local = this.parseModuleExportName(); + debug("Loaded config %o from %o.", name, dirname); + return conf; +} - node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; - this.checkExport( - exports, - node.exported, - node.exported.start - ); +function readConfig(filepath, envName, caller) { + const ext = _path().default.extname(filepath); - return this.finishNode(node, "ExportSpecifier") - }; + return ext === ".js" || ext === ".cjs" || ext === ".mjs" ? readConfigJS(filepath, { + envName, + caller + }) : readConfigJSON5(filepath); +} - pp$8.parseExportSpecifiers = function(exports) { - var nodes = [], first = true; - // export { x, y as z } [from '...'] - this.expect(types$1.braceL); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } +const LOADING_CONFIGS = new Set(); +const readConfigJS = (0, _caching.makeStrongCache)(function* readConfigJS(filepath, cache) { + if (!fs.exists.sync(filepath)) { + cache.forever(); + return null; + } - nodes.push(this.parseExportSpecifier(exports)); - } - return nodes - }; + if (LOADING_CONFIGS.has(filepath)) { + cache.never(); + debug("Auto-ignoring usage of config %o.", filepath); + return { + filepath, + dirname: _path().default.dirname(filepath), + options: {} + }; + } - // Parses import declaration. + let options; - pp$8.parseImport = function(node) { - this.next(); + try { + LOADING_CONFIGS.add(filepath); + options = yield* (0, _moduleTypes.default)(filepath, "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously."); + } catch (err) { + err.message = `${filepath}: Error while loading config - ${err.message}`; + throw err; + } finally { + LOADING_CONFIGS.delete(filepath); + } - // import '...' - if (this.type === types$1.string) { - node.specifiers = empty$1; - node.source = this.parseExprAtom(); - } else { - node.specifiers = this.parseImportSpecifiers(); - this.expectContextual("from"); - node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected(); - } - if (this.options.ecmaVersion >= 16) - { node.attributes = this.parseWithClause(); } - this.semicolon(); - return this.finishNode(node, "ImportDeclaration") - }; + let assertCache = false; - // Parses a comma-separated list of module imports. + if (typeof options === "function") { + yield* []; + options = options((0, _configApi.default)(cache)); + assertCache = true; + } - pp$8.parseImportSpecifier = function() { - var node = this.startNode(); - node.imported = this.parseModuleExportName(); + if (!options || typeof options !== "object" || Array.isArray(options)) { + throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`); + } - if (this.eatContextual("as")) { - node.local = this.parseIdent(); - } else { - this.checkUnreserved(node.imported); - node.local = node.imported; - } - this.checkLValSimple(node.local, BIND_LEXICAL); + if (typeof options.then === "function") { + throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`); + } - return this.finishNode(node, "ImportSpecifier") + if (assertCache && !cache.configured()) throwConfigError(); + return { + filepath, + dirname: _path().default.dirname(filepath), + options }; +}); +const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => { + const babel = file.options["babel"]; + if (typeof babel === "undefined") return null; - pp$8.parseImportDefaultSpecifier = function() { - // import defaultObj, { x, y as z } from '...' - var node = this.startNode(); - node.local = this.parseIdent(); - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportDefaultSpecifier") - }; + if (typeof babel !== "object" || Array.isArray(babel) || babel === null) { + throw new Error(`${file.filepath}: .babel property must be an object`); + } - pp$8.parseImportNamespaceSpecifier = function() { - var node = this.startNode(); - this.next(); - this.expectContextual("as"); - node.local = this.parseIdent(); - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportNamespaceSpecifier") + return { + filepath: file.filepath, + dirname: file.dirname, + options: babel }; +}); +const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => { + let options; - pp$8.parseImportSpecifiers = function() { - var nodes = [], first = true; - if (this.type === types$1.name) { - nodes.push(this.parseImportDefaultSpecifier()); - if (!this.eat(types$1.comma)) { return nodes } - } - if (this.type === types$1.star) { - nodes.push(this.parseImportNamespaceSpecifier()); - return nodes - } - this.expect(types$1.braceL); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } + try { + options = _json().default.parse(content); + } catch (err) { + err.message = `${filepath}: Error while parsing config - ${err.message}`; + throw err; + } - nodes.push(this.parseImportSpecifier()); - } - return nodes - }; + if (!options) throw new Error(`${filepath}: No config detected`); - pp$8.parseWithClause = function() { - var nodes = []; - if (!this.eat(types$1._with)) { - return nodes - } - this.expect(types$1.braceL); - var attributeKeys = {}; - var first = true; - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - var attr = this.parseImportAttribute(); - var keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value; - if (hasOwn(attributeKeys, keyName)) - { this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"); } - attributeKeys[keyName] = true; - nodes.push(attr); - } - return nodes - }; + if (typeof options !== "object") { + throw new Error(`${filepath}: Config returned typeof ${typeof options}`); + } - pp$8.parseImportAttribute = function() { - var node = this.startNode(); - node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"); - this.expect(types$1.colon); - if (this.type !== types$1.string) { - this.unexpected(); - } - node.value = this.parseExprAtom(); - return this.finishNode(node, "ImportAttribute") + if (Array.isArray(options)) { + throw new Error(`${filepath}: Expected config object but found array`); + } + + return { + filepath, + dirname: _path().default.dirname(filepath), + options }; +}); +const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => { + const ignoreDir = _path().default.dirname(filepath); - pp$8.parseModuleExportName = function() { - if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { - var stringLiteral = this.parseLiteral(this.value); - if (loneSurrogate.test(stringLiteral.value)) { - this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); - } - return stringLiteral + const ignorePatterns = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line); + + for (const pattern of ignorePatterns) { + if (pattern[0] === "!") { + throw new Error(`Negation of file paths is not supported.`); } - return this.parseIdent(true) + } + + return { + filepath, + dirname: _path().default.dirname(filepath), + ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir)) }; +}); + +function* resolveShowConfigPath(dirname) { + const targetPath = process.env.BABEL_SHOW_CONFIG_FOR; - // Set `ExpressionStatement#directive` property for directive prologues. - pp$8.adaptDirectivePrologue = function(statements) { - for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { - statements[i].directive = statements[i].expression.raw.slice(1, -1); + if (targetPath != null) { + const absolutePath = _path().default.resolve(dirname, targetPath); + + const stats = yield* fs.stat(absolutePath); + + if (!stats.isFile()) { + throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`); } - }; - pp$8.isDirectiveCandidate = function(statement) { - return ( - this.options.ecmaVersion >= 5 && - statement.type === "ExpressionStatement" && - statement.expression.type === "Literal" && - typeof statement.expression.value === "string" && - // Reject parenthesized strings. - (this.input[statement.start] === "\"" || this.input[statement.start] === "'") - ) - }; - var pp$7 = Parser.prototype; + return absolutePath; + } - // Convert existing expression atom to assignable pattern - // if possible. + return null; +} - pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) { - if (this.options.ecmaVersion >= 6 && node) { - switch (node.type) { - case "Identifier": - if (this.inAsync && node.name === "await") - { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } - break +function throwConfigError() { + throw new Error(`\ +Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured +for various types of caching, using the first param of their handler functions: - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - break +module.exports = function(api) { + // The API exposes the following: - case "ObjectExpression": - node.type = "ObjectPattern"; - if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - for (var i = 0, list = node.properties; i < list.length; i += 1) { - var prop = list[i]; - - this.toAssignable(prop, isBinding); - // Early error: - // AssignmentRestProperty[Yield, Await] : - // `...` DestructuringAssignmentTarget[Yield, Await] - // - // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. - if ( - prop.type === "RestElement" && - (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") - ) { - this.raise(prop.argument.start, "Unexpected token"); - } - } - break + // Cache the returned value forever and don't call this function again. + api.cache(true); - case "Property": - // AssignmentProperty has type === "Property" - if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } - this.toAssignable(node.value, isBinding); - break + // Don't cache at all. Not recommended because it will be very slow. + api.cache(false); - case "ArrayExpression": - node.type = "ArrayPattern"; - if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - this.toAssignableList(node.elements, isBinding); - break + // Cached based on the value of some function. If this function returns a value different from + // a previously-encountered value, the plugins will re-evaluate. + var env = api.cache(() => process.env.NODE_ENV); - case "SpreadElement": - node.type = "RestElement"; - this.toAssignable(node.argument, isBinding); - if (node.argument.type === "AssignmentPattern") - { this.raise(node.argument.start, "Rest elements cannot have a default value"); } - break + // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for + // any possible NODE_ENV value that might come up during plugin execution. + var isProd = api.cache(() => process.env.NODE_ENV === "production"); - case "AssignmentExpression": - if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isBinding); - break + // .cache(fn) will perform a linear search though instances to find the matching plugin based + // based on previous instantiated plugins. If you want to recreate the plugin and discard the + // previous instance whenever something changes, you may use: + var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production"); - case "ParenthesizedExpression": - this.toAssignable(node.expression, isBinding, refDestructuringErrors); - break + // Note, we also expose the following more-verbose versions of the above examples: + api.cache.forever(); // api.cache(true) + api.cache.never(); // api.cache(false) + api.cache.using(fn); // api.cache(fn) - case "ChainExpression": - this.raiseRecoverable(node.start, "Optional chaining cannot appear in left-hand side"); - break + // Return the value that will be cached. + return { }; +};`); +} - case "MemberExpression": - if (!isBinding) { break } +/***/ }), - default: - this.raise(node.start, "Assigning to rvalue"); - } - } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - return node - }; +/***/ 81028: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Convert list of expression atoms to binding list. +"use strict"; +var __webpack_unused_export__; - pp$7.toAssignableList = function(exprList, isBinding) { - var end = exprList.length; - for (var i = 0; i < end; i++) { - var elt = exprList[i]; - if (elt) { this.toAssignable(elt, isBinding); } - } - if (end) { - var last = exprList[end - 1]; - if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") - { this.unexpected(last.argument.start); } - } - return exprList - }; - // Parses spread element. +__webpack_unused_export__ = ({ + value: true +}); +exports.A = import_; - pp$7.parseSpread = function(refDestructuringErrors) { - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeAssign(false, refDestructuringErrors); - return this.finishNode(node, "SpreadElement") - }; +function import_(filepath) { + return __nccwpck_require__(18541)(filepath); +} - pp$7.parseRestBinding = function() { - var node = this.startNode(); - this.next(); +/***/ }), - // RestElement inside of a function parameter must be an identifier - if (this.options.ecmaVersion === 6 && this.type !== types$1.name) - { this.unexpected(); } +/***/ 37217: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - node.argument = this.parseBindingAtom(); +"use strict"; - return this.finishNode(node, "RestElement") - }; - // Parses lvalue (assignable) atom. +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "findPackageData", ({ + enumerable: true, + get: function () { + return _package.findPackageData; + } +})); +Object.defineProperty(exports, "findConfigUpwards", ({ + enumerable: true, + get: function () { + return _configuration.findConfigUpwards; + } +})); +Object.defineProperty(exports, "findRelativeConfig", ({ + enumerable: true, + get: function () { + return _configuration.findRelativeConfig; + } +})); +Object.defineProperty(exports, "findRootConfig", ({ + enumerable: true, + get: function () { + return _configuration.findRootConfig; + } +})); +Object.defineProperty(exports, "loadConfig", ({ + enumerable: true, + get: function () { + return _configuration.loadConfig; + } +})); +Object.defineProperty(exports, "resolveShowConfigPath", ({ + enumerable: true, + get: function () { + return _configuration.resolveShowConfigPath; + } +})); +Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", ({ + enumerable: true, + get: function () { + return _configuration.ROOT_CONFIG_FILENAMES; + } +})); +Object.defineProperty(exports, "resolvePlugin", ({ + enumerable: true, + get: function () { + return _plugins.resolvePlugin; + } +})); +Object.defineProperty(exports, "resolvePreset", ({ + enumerable: true, + get: function () { + return _plugins.resolvePreset; + } +})); +Object.defineProperty(exports, "loadPlugin", ({ + enumerable: true, + get: function () { + return _plugins.loadPlugin; + } +})); +Object.defineProperty(exports, "loadPreset", ({ + enumerable: true, + get: function () { + return _plugins.loadPreset; + } +})); + +var _package = __nccwpck_require__(70597); - pp$7.parseBindingAtom = function() { - if (this.options.ecmaVersion >= 6) { - switch (this.type) { - case types$1.bracketL: - var node = this.startNode(); - this.next(); - node.elements = this.parseBindingList(types$1.bracketR, true, true); - return this.finishNode(node, "ArrayPattern") +var _configuration = __nccwpck_require__(86199); - case types$1.braceL: - return this.parseObj(true) - } - } - return this.parseIdent() - }; +var _plugins = __nccwpck_require__(19669); - pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) { - var elts = [], first = true; - while (!this.eat(close)) { - if (first) { first = false; } - else { this.expect(types$1.comma); } - if (allowEmpty && this.type === types$1.comma) { - elts.push(null); - } else if (allowTrailingComma && this.afterTrailingComma(close)) { - break - } else if (this.type === types$1.ellipsis) { - var rest = this.parseRestBinding(); - this.parseBindingListItem(rest); - elts.push(rest); - if (this.type === types$1.comma) { this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); } - this.expect(close); - break - } else { - elts.push(this.parseAssignableListItem(allowModifiers)); - } - } - return elts - }; +({}); - pp$7.parseAssignableListItem = function(allowModifiers) { - var elem = this.parseMaybeDefault(this.start, this.startLoc); - this.parseBindingListItem(elem); - return elem - }; +/***/ }), - pp$7.parseBindingListItem = function(param) { - return param - }; +/***/ 67465: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Parses assignment pattern around given atom if possible. +"use strict"; - pp$7.parseMaybeDefault = function(startPos, startLoc, left) { - left = left || this.parseBindingAtom(); - if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left } - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.right = this.parseMaybeAssign(); - return this.finishNode(node, "AssignmentPattern") + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = loadCjsOrMjsDefault; + +var _async = __nccwpck_require__(87360); + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); + + _path = function () { + return data; }; - // The following three functions all verify that a node is an lvalue — - // something that can be bound, or assigned to. In order to do so, they perform - // a variety of checks: - // - // - Check that none of the bound/assigned-to identifiers are reserved words. - // - Record name declarations for bindings in the appropriate scope. - // - Check duplicate argument names, if checkClashes is set. - // - // If a complex binding pattern is encountered (e.g., object and array - // destructuring), the entire pattern is recursively checked. - // - // There are three versions of checkLVal*() appropriate for different - // circumstances: - // - // - checkLValSimple() shall be used if the syntactic construct supports - // nothing other than identifiers and member expressions. Parenthesized - // expressions are also correctly handled. This is generally appropriate for - // constructs for which the spec says - // - // > It is a Syntax Error if AssignmentTargetType of [the production] is not - // > simple. - // - // It is also appropriate for checking if an identifier is valid and not - // defined elsewhere, like import declarations or function/class identifiers. - // - // Examples where this is used include: - // a += …; - // import a from '…'; - // where a is the node to be checked. - // - // - checkLValPattern() shall be used if the syntactic construct supports - // anything checkLValSimple() supports, as well as object and array - // destructuring patterns. This is generally appropriate for constructs for - // which the spec says - // - // > It is a Syntax Error if [the production] is neither an ObjectLiteral nor - // > an ArrayLiteral and AssignmentTargetType of [the production] is not - // > simple. - // - // Examples where this is used include: - // (a = …); - // const a = …; - // try { … } catch (a) { … } - // where a is the node to be checked. - // - // - checkLValInnerPattern() shall be used if the syntactic construct supports - // anything checkLValPattern() supports, as well as default assignment - // patterns, rest elements, and other constructs that may appear within an - // object or array destructuring pattern. - // - // As a special case, function parameters also use checkLValInnerPattern(), - // as they also support defaults and rest constructs. - // - // These functions deliberately support both assignment and binding constructs, - // as the logic for both is exceedingly similar. If the node is the target of - // an assignment, then bindingType should be set to BIND_NONE. Otherwise, it - // should be set to the appropriate BIND_* constant, like BIND_VAR or - // BIND_LEXICAL. - // - // If the function is called with a non-BIND_NONE bindingType, then - // additionally a checkClashes object may be specified to allow checking for - // duplicate argument names. checkClashes is ignored if the provided construct - // is an assignment (i.e., bindingType is BIND_NONE). + return data; +} - pp$7.checkLValSimple = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; +function _url() { + const data = __nccwpck_require__(87016); - var isBind = bindingType !== BIND_NONE; + _url = function () { + return data; + }; - switch (expr.type) { - case "Identifier": - if (this.strict && this.reservedWordsStrictBind.test(expr.name)) - { this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } - if (isBind) { - if (bindingType === BIND_LEXICAL && expr.name === "let") - { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } - if (checkClashes) { - if (hasOwn(checkClashes, expr.name)) - { this.raiseRecoverable(expr.start, "Argument name clash"); } - checkClashes[expr.name] = true; - } - if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } - } - break + return data; +} - case "ChainExpression": - this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side"); - break +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - case "MemberExpression": - if (isBind) { this.raiseRecoverable(expr.start, "Binding member expression"); } - break +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - case "ParenthesizedExpression": - if (isBind) { this.raiseRecoverable(expr.start, "Binding parenthesized expression"); } - return this.checkLValSimple(expr.expression, bindingType, checkClashes) +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - default: - this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue"); - } - }; +let import_; - pp$7.checkLValPattern = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; +try { + import_ = (__nccwpck_require__(81028)/* ["default"] */ .A); +} catch (_unused) {} - switch (expr.type) { - case "ObjectPattern": - for (var i = 0, list = expr.properties; i < list.length; i += 1) { - var prop = list[i]; +function* loadCjsOrMjsDefault(filepath, asyncError) { + switch (guessJSModuleType(filepath)) { + case "cjs": + return loadCjsDefault(filepath); - this.checkLValInnerPattern(prop, bindingType, checkClashes); + case "unknown": + try { + return loadCjsDefault(filepath); + } catch (e) { + if (e.code !== "ERR_REQUIRE_ESM") throw e; } - break - case "ArrayPattern": - for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { - var elem = list$1[i$1]; - - if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); } + case "mjs": + if (yield* (0, _async.isAsync)()) { + return yield* (0, _async.waitFor)(loadMjsDefault(filepath)); } - break - default: - this.checkLValSimple(expr, bindingType, checkClashes); - } - }; + throw new Error(asyncError); + } +} - pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; +function guessJSModuleType(filename) { + switch (_path().default.extname(filename)) { + case ".cjs": + return "cjs"; - switch (expr.type) { - case "Property": - // AssignmentProperty has type === "Property" - this.checkLValInnerPattern(expr.value, bindingType, checkClashes); - break + case ".mjs": + return "mjs"; - case "AssignmentPattern": - this.checkLValPattern(expr.left, bindingType, checkClashes); - break + default: + return "unknown"; + } +} - case "RestElement": - this.checkLValPattern(expr.argument, bindingType, checkClashes); - break +function loadCjsDefault(filepath) { + const module = require(filepath); - default: - this.checkLValPattern(expr, bindingType, checkClashes); + return (module == null ? void 0 : module.__esModule) ? module.default || undefined : module; +} + +function loadMjsDefault(_x) { + return _loadMjsDefault.apply(this, arguments); +} + +function _loadMjsDefault() { + _loadMjsDefault = _asyncToGenerator(function* (filepath) { + if (!import_) { + throw new Error("Internal error: Native ECMAScript modules aren't supported" + " by this platform.\n"); } - }; - // The algorithm used to determine whether a regexp can appear at a - // given point in the program is loosely based on sweet.js' approach. - // See https://github.com/mozilla/sweet.js/wiki/design + const module = yield import_((0, _url().pathToFileURL)(filepath)); + return module.default; + }); + return _loadMjsDefault.apply(this, arguments); +} +/***/ }), - var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; - this.generator = !!generator; - }; +/***/ 70597: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - var types = { - b_stat: new TokContext("{", false), - b_expr: new TokContext("{", true), - b_tmpl: new TokContext("${", false), - p_stat: new TokContext("(", false), - p_expr: new TokContext("(", true), - q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), - f_stat: new TokContext("function", false), - f_expr: new TokContext("function", true), - f_expr_gen: new TokContext("function", true, false, null, true), - f_gen: new TokContext("function", false, false, null, true) - }; +"use strict"; - var pp$6 = Parser.prototype; - pp$6.initialContext = function() { - return [types.b_stat] - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.findPackageData = findPackageData; - pp$6.curContext = function() { - return this.context[this.context.length - 1] - }; +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); - pp$6.braceIsBlock = function(prevType) { - var parent = this.curContext(); - if (parent === types.f_expr || parent === types.f_stat) - { return true } - if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr)) - { return !parent.isExpr } - - // The check for `tt.name && exprAllowed` detects whether we are - // after a `yield` or `of` construct. See the `updateContext` for - // `tt.name`. - if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed) - { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } - if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow) - { return true } - if (prevType === types$1.braceL) - { return parent === types.b_stat } - if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name) - { return false } - return !this.exprAllowed + _path = function () { + return data; }; - pp$6.inGeneratorContext = function() { - for (var i = this.context.length - 1; i >= 1; i--) { - var context = this.context[i]; - if (context.token === "function") - { return context.generator } - } - return false - }; + return data; +} - pp$6.updateContext = function(prevType) { - var update, type = this.type; - if (type.keyword && prevType === types$1.dot) - { this.exprAllowed = false; } - else if (update = type.updateContext) - { update.call(this, prevType); } - else - { this.exprAllowed = type.beforeExpr; } - }; +var _utils = __nccwpck_require__(748); - // Used to handle edge cases when token context could not be inferred correctly during tokenization phase +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - pp$6.overrideContext = function(tokenCtx) { - if (this.curContext() !== tokenCtx) { - this.context[this.context.length - 1] = tokenCtx; - } - }; +const PACKAGE_FILENAME = "package.json"; - // Token-specific context update code +function* findPackageData(filepath) { + let pkg = null; + const directories = []; + let isPackage = true; - types$1.parenR.updateContext = types$1.braceR.updateContext = function() { - if (this.context.length === 1) { - this.exprAllowed = true; - return - } - var out = this.context.pop(); - if (out === types.b_stat && this.curContext().token === "function") { - out = this.context.pop(); - } - this.exprAllowed = !out.isExpr; - }; + let dirname = _path().default.dirname(filepath); - types$1.braceL.updateContext = function(prevType) { - this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); - this.exprAllowed = true; - }; + while (!pkg && _path().default.basename(dirname) !== "node_modules") { + directories.push(dirname); + pkg = yield* readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME)); - types$1.dollarBraceL.updateContext = function() { - this.context.push(types.b_tmpl); - this.exprAllowed = true; - }; + const nextLoc = _path().default.dirname(dirname); - types$1.parenL.updateContext = function(prevType) { - var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while; - this.context.push(statementParens ? types.p_stat : types.p_expr); - this.exprAllowed = true; - }; + if (dirname === nextLoc) { + isPackage = false; + break; + } - types$1.incDec.updateContext = function() { - // tokExprAllowed stays unchanged - }; + dirname = nextLoc; + } - types$1._function.updateContext = types$1._class.updateContext = function(prevType) { - if (prevType.beforeExpr && prevType !== types$1._else && - !(prevType === types$1.semi && this.curContext() !== types.p_stat) && - !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && - !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat)) - { this.context.push(types.f_expr); } - else - { this.context.push(types.f_stat); } - this.exprAllowed = false; + return { + filepath, + directories, + pkg, + isPackage }; +} - types$1.colon.updateContext = function() { - if (this.curContext().token === "function") { this.context.pop(); } - this.exprAllowed = true; - }; +const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => { + let options; - types$1.backQuote.updateContext = function() { - if (this.curContext() === types.q_tmpl) - { this.context.pop(); } - else - { this.context.push(types.q_tmpl); } - this.exprAllowed = false; - }; + try { + options = JSON.parse(content); + } catch (err) { + err.message = `${filepath}: Error while parsing JSON - ${err.message}`; + throw err; + } - types$1.star.updateContext = function(prevType) { - if (prevType === types$1._function) { - var index = this.context.length - 1; - if (this.context[index] === types.f_expr) - { this.context[index] = types.f_expr_gen; } - else - { this.context[index] = types.f_gen; } - } - this.exprAllowed = true; - }; + if (!options) throw new Error(`${filepath}: No config detected`); - types$1.name.updateContext = function(prevType) { - var allowed = false; - if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) { - if (this.value === "of" && !this.exprAllowed || - this.value === "yield" && this.inGeneratorContext()) - { allowed = true; } - } - this.exprAllowed = allowed; - }; + if (typeof options !== "object") { + throw new Error(`${filepath}: Config returned typeof ${typeof options}`); + } - // A recursive descent parser operates by defining functions for all - // syntactic elements, and recursively calling those, each function - // advancing the input stream and returning an AST node. Precedence - // of constructs (for example, the fact that `!x[1]` means `!(x[1])` - // instead of `(!x)[1]` is handled by the fact that the parser - // function that parses unary prefix operators is called first, and - // in turn calls the function that parses `[]` subscripts — that - // way, it'll receive the node for `x[1]` already parsed, and wraps - // *that* in the unary operator node. - // - // Acorn uses an [operator precedence parser][opp] to handle binary - // operator precedence, because it is much more compact than using - // the technique outlined above, which uses different, nesting - // functions to specify precedence, for all of the ten binary - // precedence levels that JavaScript defines. - // - // [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser - - - var pp$5 = Parser.prototype; - - // Check if property name clashes with already added. - // Object/class getters and setters are not allowed to clash — - // either with each other or with an init property — and in - // strict mode, init properties are also not allowed to be repeated. - - pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) { - if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") - { return } - if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) - { return } - var key = prop.key; - var name; - switch (key.type) { - case "Identifier": name = key.name; break - case "Literal": name = String(key.value); break - default: return - } - var kind = prop.kind; - if (this.options.ecmaVersion >= 6) { - if (name === "__proto__" && kind === "init") { - if (propHash.proto) { - if (refDestructuringErrors) { - if (refDestructuringErrors.doubleProto < 0) { - refDestructuringErrors.doubleProto = key.start; - } - } else { - this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); - } - } - propHash.proto = true; - } - return - } - name = "$" + name; - var other = propHash[name]; - if (other) { - var redefinition; - if (kind === "init") { - redefinition = this.strict && other.init || other.get || other.set; - } else { - redefinition = other.init || other[kind]; - } - if (redefinition) - { this.raiseRecoverable(key.start, "Redefinition of property"); } - } else { - other = propHash[name] = { - init: false, - get: false, - set: false - }; - } - other[kind] = true; - }; + if (Array.isArray(options)) { + throw new Error(`${filepath}: Expected config object but found array`); + } - // ### Expression parsing - - // These nest, from the most general expression type at the top to - // 'atomic', nondivisible expression types at the bottom. Most of - // the functions will simply let the function(s) below them parse, - // and, *if* the syntactic construct they handle is present, wrap - // the AST node that the inner parser gave them in another node. - - // Parse a full expression. The optional arguments are used to - // forbid the `in` operator (in for loops initalization expressions) - // and provide reference for storing '=' operator inside shorthand - // property assignment in contexts where both object expression - // and object pattern might appear (so it's possible to raise - // delayed syntax error at correct position). - - pp$5.parseExpression = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); - if (this.type === types$1.comma) { - var node = this.startNodeAt(startPos, startLoc); - node.expressions = [expr]; - while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); } - return this.finishNode(node, "SequenceExpression") - } - return expr + return { + filepath, + dirname: _path().default.dirname(filepath), + options }; +}); - // Parse an assignment expression. This includes applications of - // operators like `+=`. +/***/ }), - pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { - if (this.isContextual("yield")) { - if (this.inGenerator) { return this.parseYield(forInit) } - // The tokenizer will assume an expression is allowed after - // `yield`, but this isn't that kind of yield - else { this.exprAllowed = false; } - } +/***/ 19669: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1; - if (refDestructuringErrors) { - oldParenAssign = refDestructuringErrors.parenthesizedAssign; - oldTrailingComma = refDestructuringErrors.trailingComma; - oldDoubleProto = refDestructuringErrors.doubleProto; - refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; - } else { - refDestructuringErrors = new DestructuringErrors; - ownDestructuringErrors = true; - } - - var startPos = this.start, startLoc = this.startLoc; - if (this.type === types$1.parenL || this.type === types$1.name) { - this.potentialArrowAt = this.start; - this.potentialArrowInForAwait = forInit === "await"; - } - var left = this.parseMaybeConditional(forInit, refDestructuringErrors); - if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } - if (this.type.isAssign) { - var node = this.startNodeAt(startPos, startLoc); - node.operator = this.value; - if (this.type === types$1.eq) - { left = this.toAssignable(left, false, refDestructuringErrors); } - if (!ownDestructuringErrors) { - refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; - } - if (refDestructuringErrors.shorthandAssign >= left.start) - { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly - if (this.type === types$1.eq) - { this.checkLValPattern(left); } - else - { this.checkLValSimple(left); } - node.left = left; - this.next(); - node.right = this.parseMaybeAssign(forInit); - if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; } - return this.finishNode(node, "AssignmentExpression") - } else { - if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } - } - if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } - if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } - return left - }; +"use strict"; - // Parse a ternary conditional (`?:`) operator. - pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprOps(forInit, refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - if (this.eat(types$1.question)) { - var node = this.startNodeAt(startPos, startLoc); - node.test = expr; - node.consequent = this.parseMaybeAssign(); - this.expect(types$1.colon); - node.alternate = this.parseMaybeAssign(forInit); - return this.finishNode(node, "ConditionalExpression") - } - return expr - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.resolvePlugin = resolvePlugin; +exports.resolvePreset = resolvePreset; +exports.loadPlugin = loadPlugin; +exports.loadPreset = loadPreset; - // Start the precedence parser. +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(2830)); - pp$5.parseExprOps = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) + _debug = function () { + return data; }; - // Parse binary operators with the operator precedence parsing - // algorithm. `left` is the left-hand side of the operator. - // `minPrec` provides context that allows the function to stop and - // defer further parser to one of its callers when it encounters an - // operator that has a lower precedence than the set it is parsing. + return data; +} - pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { - var prec = this.type.binop; - if (prec != null && (!forInit || this.type !== types$1._in)) { - if (prec > minPrec) { - var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND; - var coalesce = this.type === types$1.coalesce; - if (coalesce) { - // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. - // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. - prec = types$1.logicalAND.binop; - } - var op = this.value; - this.next(); - var startPos = this.start, startLoc = this.startLoc; - var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); - var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); - if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) { - this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); - } - return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit) - } - } - return left - }; +function _resolve() { + const data = _interopRequireDefault(__nccwpck_require__(92312)); - pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) { - if (right.type === "PrivateIdentifier") { this.raise(right.start, "Private identifier can only be left side of binary expression"); } - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.operator = op; - node.right = right; - return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") + _resolve = function () { + return data; }; - // Parse unary operators, both prefix and postfix. + return data; +} - pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { - var startPos = this.start, startLoc = this.startLoc, expr; - if (this.isContextual("await") && this.canAwait) { - expr = this.parseAwait(forInit); - sawUnary = true; - } else if (this.type.prefix) { - var node = this.startNode(), update = this.type === types$1.incDec; - node.operator = this.value; - node.prefix = true; - this.next(); - node.argument = this.parseMaybeUnary(null, true, update, forInit); - this.checkExpressionErrors(refDestructuringErrors, true); - if (update) { this.checkLValSimple(node.argument); } - else if (this.strict && node.operator === "delete" && isLocalVariableAccess(node.argument)) - { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } - else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) - { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } - else { sawUnary = true; } - expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); - } else if (!sawUnary && this.type === types$1.privateId) { - if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); } - expr = this.parsePrivateIdent(); - // only could be private fields in 'in', such as #x in obj - if (this.type !== types$1._in) { this.unexpected(); } - } else { - expr = this.parseExprSubscripts(refDestructuringErrors, forInit); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - while (this.type.postfix && !this.canInsertSemicolon()) { - var node$1 = this.startNodeAt(startPos, startLoc); - node$1.operator = this.value; - node$1.prefix = false; - node$1.argument = expr; - this.checkLValSimple(expr); - this.next(); - expr = this.finishNode(node$1, "UpdateExpression"); - } - } +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); - if (!incDec && this.eat(types$1.starstar)) { - if (sawUnary) - { this.unexpected(this.lastTokStart); } - else - { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } - } else { - return expr - } + _path = function () { + return data; }; - function isLocalVariableAccess(node) { - return ( - node.type === "Identifier" || - node.type === "ParenthesizedExpression" && isLocalVariableAccess(node.expression) - ) - } + return data; +} - function isPrivateFieldAccess(node) { - return ( - node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || - node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) || - node.type === "ParenthesizedExpression" && isPrivateFieldAccess(node.expression) - ) - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - // Parse call, dot, and `[]`-subscript expressions. +const debug = (0, _debug().default)("babel:config:loading:files:plugins"); +const EXACT_RE = /^module:/; +const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/; +const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/; +const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/; +const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/; +const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/; +const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/; +const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/; - pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprAtom(refDestructuringErrors, forInit); - if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") - { return expr } - var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); - if (refDestructuringErrors && result.type === "MemberExpression") { - if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } - if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } - if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; } - } - return result - }; +function resolvePlugin(name, dirname) { + return resolveStandardizedName("plugin", name, dirname); +} - pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { - var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && - this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && - this.potentialArrowAt === base.start; - var optionalChained = false; +function resolvePreset(name, dirname) { + return resolveStandardizedName("preset", name, dirname); +} - while (true) { - var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); +function loadPlugin(name, dirname) { + const filepath = resolvePlugin(name, dirname); - if (element.optional) { optionalChained = true; } - if (element === base || element.type === "ArrowFunctionExpression") { - if (optionalChained) { - var chainNode = this.startNodeAt(startPos, startLoc); - chainNode.expression = element; - element = this.finishNode(chainNode, "ChainExpression"); - } - return element - } + if (!filepath) { + throw new Error(`Plugin ${name} not found relative to ${dirname}`); + } - base = element; - } + const value = requireModule("plugin", filepath); + debug("Loaded plugin %o from %o.", name, dirname); + return { + filepath, + value }; +} - pp$5.shouldParseAsyncArrow = function() { - return !this.canInsertSemicolon() && this.eat(types$1.arrow) - }; +function loadPreset(name, dirname) { + const filepath = resolvePreset(name, dirname); - pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) - }; + if (!filepath) { + throw new Error(`Preset ${name} not found relative to ${dirname}`); + } - pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { - var optionalSupported = this.options.ecmaVersion >= 11; - var optional = optionalSupported && this.eat(types$1.questionDot); - if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } - - var computed = this.eat(types$1.bracketL); - if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) { - var node = this.startNodeAt(startPos, startLoc); - node.object = base; - if (computed) { - node.property = this.parseExpression(); - this.expect(types$1.bracketR); - } else if (this.type === types$1.privateId && base.type !== "Super") { - node.property = this.parsePrivateIdent(); - } else { - node.property = this.parseIdent(this.options.allowReserved !== "never"); - } - node.computed = !!computed; - if (optionalSupported) { - node.optional = optional; - } - base = this.finishNode(node, "MemberExpression"); - } else if (!noCalls && this.eat(types$1.parenL)) { - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); - if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) { - this.checkPatternErrors(refDestructuringErrors, false); - this.checkYieldAwaitInDefaultParams(); - if (this.awaitIdentPos > 0) - { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit) - } - this.checkExpressionErrors(refDestructuringErrors, true); - this.yieldPos = oldYieldPos || this.yieldPos; - this.awaitPos = oldAwaitPos || this.awaitPos; - this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; - var node$1 = this.startNodeAt(startPos, startLoc); - node$1.callee = base; - node$1.arguments = exprList; - if (optionalSupported) { - node$1.optional = optional; - } - base = this.finishNode(node$1, "CallExpression"); - } else if (this.type === types$1.backQuote) { - if (optional || optionalChained) { - this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); - } - var node$2 = this.startNodeAt(startPos, startLoc); - node$2.tag = base; - node$2.quasi = this.parseTemplate({isTagged: true}); - base = this.finishNode(node$2, "TaggedTemplateExpression"); - } - return base + const value = requireModule("preset", filepath); + debug("Loaded preset %o from %o.", name, dirname); + return { + filepath, + value }; +} - // Parse an atomic expression — either a single token that is an - // expression, an expression started by a keyword like `function` or - // `new`, or an expression wrapped in punctuation like `()`, `[]`, - // or `{}`. - - pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) { - // If a division operator appears in an expression position, the - // tokenizer got confused, and we force it to read a regexp instead. - if (this.type === types$1.slash) { this.readRegexp(); } - - var node, canBeArrow = this.potentialArrowAt === this.start; - switch (this.type) { - case types$1._super: - if (!this.allowSuper) - { this.raise(this.start, "'super' keyword outside a method"); } - node = this.startNode(); - this.next(); - if (this.type === types$1.parenL && !this.allowDirectSuper) - { this.raise(node.start, "super() call outside constructor of a subclass"); } - // The `super` keyword can appear at below: - // SuperProperty: - // super [ Expression ] - // super . IdentifierName - // SuperCall: - // super ( Arguments ) - if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL) - { this.unexpected(); } - return this.finishNode(node, "Super") - - case types$1._this: - node = this.startNode(); - this.next(); - return this.finishNode(node, "ThisExpression") - - case types$1.name: - var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; - var id = this.parseIdent(false); - if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$1._function)) { - this.overrideContext(types.f_expr); - return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) - } - if (canBeArrow && !this.canInsertSemicolon()) { - if (this.eat(types$1.arrow)) - { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } - if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$1.name && !containsEsc && - (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { - id = this.parseIdent(false); - if (this.canInsertSemicolon() || !this.eat(types$1.arrow)) - { this.unexpected(); } - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) - } - } - return id +function standardizeName(type, name) { + if (_path().default.isAbsolute(name)) return name; + const isPreset = type === "preset"; + return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, ""); +} - case types$1.regexp: - var value = this.value; - node = this.parseLiteral(value.value); - node.regex = {pattern: value.pattern, flags: value.flags}; - return node +function resolveStandardizedName(type, name, dirname = process.cwd()) { + const standardizedName = standardizeName(type, name); + + try { + return _resolve().default.sync(standardizedName, { + basedir: dirname + }); + } catch (e) { + if (e.code !== "MODULE_NOT_FOUND") throw e; - case types$1.num: case types$1.string: - return this.parseLiteral(this.value) + if (standardizedName !== name) { + let resolvedOriginal = false; - case types$1._null: case types$1._true: case types$1._false: - node = this.startNode(); - node.value = this.type === types$1._null ? null : this.type === types$1._true; - node.raw = this.type.keyword; - this.next(); - return this.finishNode(node, "Literal") + try { + _resolve().default.sync(name, { + basedir: dirname + }); + + resolvedOriginal = true; + } catch (_unused) {} - case types$1.parenL: - var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); - if (refDestructuringErrors) { - if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) - { refDestructuringErrors.parenthesizedAssign = start; } - if (refDestructuringErrors.parenthesizedBind < 0) - { refDestructuringErrors.parenthesizedBind = start; } + if (resolvedOriginal) { + e.message += `\n- If you want to resolve "${name}", use "module:${name}"`; } - return expr + } - case types$1.bracketL: - node = this.startNode(); - this.next(); - node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors); - return this.finishNode(node, "ArrayExpression") + let resolvedBabel = false; - case types$1.braceL: - this.overrideContext(types.b_expr); - return this.parseObj(false, refDestructuringErrors) + try { + _resolve().default.sync(standardizeName(type, "@babel/" + name), { + basedir: dirname + }); - case types$1._function: - node = this.startNode(); - this.next(); - return this.parseFunction(node, 0) + resolvedBabel = true; + } catch (_unused2) {} - case types$1._class: - return this.parseClass(this.startNode(), false) + if (resolvedBabel) { + e.message += `\n- Did you mean "@babel/${name}"?`; + } - case types$1._new: - return this.parseNew() + let resolvedOppositeType = false; + const oppositeType = type === "preset" ? "plugin" : "preset"; - case types$1.backQuote: - return this.parseTemplate() + try { + _resolve().default.sync(standardizeName(oppositeType, name), { + basedir: dirname + }); - case types$1._import: - if (this.options.ecmaVersion >= 11) { - return this.parseExprImport(forNew) - } else { - return this.unexpected() - } + resolvedOppositeType = true; + } catch (_unused3) {} - default: - return this.parseExprAtomDefault() + if (resolvedOppositeType) { + e.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`; } - }; - pp$5.parseExprAtomDefault = function() { - this.unexpected(); - }; + throw e; + } +} - pp$5.parseExprImport = function(forNew) { - var node = this.startNode(); +const LOADING_MODULES = new Set(); - // Consume `import` as an identifier for `import.meta`. - // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`. - if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword import"); } - this.next(); +function requireModule(type, name) { + if (LOADING_MODULES.has(name)) { + throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.'); + } - if (this.type === types$1.parenL && !forNew) { - return this.parseDynamicImport(node) - } else if (this.type === types$1.dot) { - var meta = this.startNodeAt(node.start, node.loc && node.loc.start); - meta.name = "import"; - node.meta = this.finishNode(meta, "Identifier"); - return this.parseImportMeta(node) - } else { - this.unexpected(); - } - }; + try { + LOADING_MODULES.add(name); + return require(name); + } finally { + LOADING_MODULES.delete(name); + } +} - pp$5.parseDynamicImport = function(node) { - this.next(); // skip `(` - - // Parse node.source. - node.source = this.parseMaybeAssign(); - - if (this.options.ecmaVersion >= 16) { - if (!this.eat(types$1.parenR)) { - this.expect(types$1.comma); - if (!this.afterTrailingComma(types$1.parenR)) { - node.options = this.parseMaybeAssign(); - if (!this.eat(types$1.parenR)) { - this.expect(types$1.comma); - if (!this.afterTrailingComma(types$1.parenR)) { - this.unexpected(); - } - } - } else { - node.options = null; - } - } else { - node.options = null; - } - } else { - // Verify ending. - if (!this.eat(types$1.parenR)) { - var errorPos = this.start; - if (this.eat(types$1.comma) && this.eat(types$1.parenR)) { - this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); - } else { - this.unexpected(errorPos); - } - } - } +/***/ }), - return this.finishNode(node, "ImportExpression") - }; +/***/ 748: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - pp$5.parseImportMeta = function(node) { - this.next(); // skip `.` +"use strict"; - var containsEsc = this.containsEsc; - node.property = this.parseIdent(true); - if (node.property.name !== "meta") - { this.raiseRecoverable(node.property.start, "The only valid meta property for import is 'import.meta'"); } - if (containsEsc) - { this.raiseRecoverable(node.start, "'import.meta' must not contain escaped characters"); } - if (this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere) - { this.raiseRecoverable(node.start, "Cannot use 'import.meta' outside a module"); } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.makeStaticFileCache = makeStaticFileCache; - return this.finishNode(node, "MetaProperty") - }; +var _caching = __nccwpck_require__(46268); - pp$5.parseLiteral = function(value) { - var node = this.startNode(); - node.value = value; - node.raw = this.input.slice(this.start, this.end); - if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, ""); } - this.next(); - return this.finishNode(node, "Literal") - }; +var fs = _interopRequireWildcard(__nccwpck_require__(10733)); - pp$5.parseParenExpression = function() { - this.expect(types$1.parenL); - var val = this.parseExpression(); - this.expect(types$1.parenR); - return val - }; +function _fs2() { + const data = _interopRequireDefault(__nccwpck_require__(79896)); - pp$5.shouldParseArrow = function(exprList) { - return !this.canInsertSemicolon() + _fs2 = function () { + return data; }; - pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { - var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; - if (this.options.ecmaVersion >= 6) { - this.next(); + return data; +} - var innerStartPos = this.start, innerStartLoc = this.startLoc; - var exprList = [], first = true, lastIsComma = false; - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; - this.yieldPos = 0; - this.awaitPos = 0; - // Do not save awaitIdentPos to allow checking awaits nested in parameters - while (this.type !== types$1.parenR) { - first ? first = false : this.expect(types$1.comma); - if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) { - lastIsComma = true; - break - } else if (this.type === types$1.ellipsis) { - spreadStart = this.start; - exprList.push(this.parseParenItem(this.parseRestBinding())); - if (this.type === types$1.comma) { - this.raiseRecoverable( - this.start, - "Comma is not permitted after the rest element" - ); - } - break - } else { - exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); - } - } - var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; - this.expect(types$1.parenR); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) { - this.checkPatternErrors(refDestructuringErrors, false); - this.checkYieldAwaitInDefaultParams(); - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - return this.parseParenArrowList(startPos, startLoc, exprList, forInit) - } +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } - if (spreadStart) { this.unexpected(spreadStart); } - this.checkExpressionErrors(refDestructuringErrors, true); - this.yieldPos = oldYieldPos || this.yieldPos; - this.awaitPos = oldAwaitPos || this.awaitPos; +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - if (exprList.length > 1) { - val = this.startNodeAt(innerStartPos, innerStartLoc); - val.expressions = exprList; - this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); - } else { - val = exprList[0]; - } - } else { - val = this.parseParenExpression(); - } +function makeStaticFileCache(fn) { + return (0, _caching.makeStrongCache)(function* (filepath, cache) { + const cached = cache.invalidate(() => fileMtime(filepath)); - if (this.options.preserveParens) { - var par = this.startNodeAt(startPos, startLoc); - par.expression = val; - return this.finishNode(par, "ParenthesizedExpression") - } else { - return val + if (cached === null) { + return null; } - }; - - pp$5.parseParenItem = function(item) { - return item - }; - pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit) - }; + return fn(filepath, yield* fs.readFile(filepath, "utf8")); + }); +} - // New's precedence is slightly tricky. It must allow its argument to - // be a `[]` or dot subscript expression, but not a call — at least, - // not without wrapping it in parentheses. Thus, it uses the noCalls - // argument to parseSubscripts to prevent it from consuming the - // argument list. +function fileMtime(filepath) { + try { + return +_fs2().default.statSync(filepath).mtime; + } catch (e) { + if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e; + } - var empty = []; + return null; +} - pp$5.parseNew = function() { - if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } - var node = this.startNode(); - this.next(); - if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) { - var meta = this.startNodeAt(node.start, node.loc && node.loc.start); - meta.name = "new"; - node.meta = this.finishNode(meta, "Identifier"); - this.next(); - var containsEsc = this.containsEsc; - node.property = this.parseIdent(true); - if (node.property.name !== "target") - { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } - if (containsEsc) - { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } - if (!this.allowNewDotTarget) - { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } - return this.finishNode(node, "MetaProperty") - } - var startPos = this.start, startLoc = this.startLoc; - node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false); - if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); } - else { node.arguments = empty; } - return this.finishNode(node, "NewExpression") - }; +/***/ }), - // Parse template expression. +/***/ 74396: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - pp$5.parseTemplateElement = function(ref) { - var isTagged = ref.isTagged; +"use strict"; - var elem = this.startNode(); - if (this.type === types$1.invalidTemplate) { - if (!isTagged) { - this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); - } - elem.value = { - raw: this.value.replace(/\r\n?/g, "\n"), - cooked: null - }; - } else { - elem.value = { - raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), - cooked: this.value - }; - } - this.next(); - elem.tail = this.type === types$1.backQuote; - return this.finishNode(elem, "TemplateElement") - }; - pp$5.parseTemplate = function(ref) { - if ( ref === void 0 ) ref = {}; - var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - var node = this.startNode(); - this.next(); - node.expressions = []; - var curElt = this.parseTemplateElement({isTagged: isTagged}); - node.quasis = [curElt]; - while (!curElt.tail) { - if (this.type === types$1.eof) { this.raise(this.pos, "Unterminated template literal"); } - this.expect(types$1.dollarBraceL); - node.expressions.push(this.parseExpression()); - this.expect(types$1.braceR); - node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); - } - this.next(); - return this.finishNode(node, "TemplateLiteral") - }; +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - pp$5.isAsyncProp = function(prop) { - return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && - (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) && - !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + _gensync = function () { + return data; }; - // Parse an object literal or binding pattern. + return data; +} - pp$5.parseObj = function(isPattern, refDestructuringErrors) { - var node = this.startNode(), first = true, propHash = {}; - node.properties = []; - this.next(); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - var prop = this.parseProperty(isPattern, refDestructuringErrors); - if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } - node.properties.push(prop); - } - return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") - }; +var _async = __nccwpck_require__(87360); - pp$5.parseProperty = function(isPattern, refDestructuringErrors) { - var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; - if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) { - if (isPattern) { - prop.argument = this.parseIdent(false); - if (this.type === types$1.comma) { - this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); - } - return this.finishNode(prop, "RestElement") - } - // Parse argument. - prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); - // To disallow trailing comma via `this.toAssignable()`. - if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { - refDestructuringErrors.trailingComma = this.start; - } - // Finish - return this.finishNode(prop, "SpreadElement") - } - if (this.options.ecmaVersion >= 6) { - prop.method = false; - prop.shorthand = false; - if (isPattern || refDestructuringErrors) { - startPos = this.start; - startLoc = this.startLoc; - } - if (!isPattern) - { isGenerator = this.eat(types$1.star); } - } - var containsEsc = this.containsEsc; - this.parsePropertyName(prop); - if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { - isAsync = true; - isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star); - this.parsePropertyName(prop); - } else { - isAsync = false; - } - this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); - return this.finishNode(prop, "Property") - }; +var _util = __nccwpck_require__(54493); - pp$5.parseGetterSetter = function(prop) { - var kind = prop.key.name; - this.parsePropertyName(prop); - prop.value = this.parseMethod(false); - prop.kind = kind; - var paramCount = prop.kind === "get" ? 0 : 1; - if (prop.value.params.length !== paramCount) { - var start = prop.value.start; - if (prop.kind === "get") - { this.raiseRecoverable(start, "getter should have no params"); } - else - { this.raiseRecoverable(start, "setter should have exactly one param"); } - } else { - if (prop.kind === "set" && prop.value.params[0].type === "RestElement") - { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } - } - }; +var context = _interopRequireWildcard(__nccwpck_require__(85414)); - pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { - if ((isGenerator || isAsync) && this.type === types$1.colon) - { this.unexpected(); } +var _plugin = _interopRequireDefault(__nccwpck_require__(68618)); - if (this.eat(types$1.colon)) { - prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); - prop.kind = "init"; - } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) { - if (isPattern) { this.unexpected(); } - prop.method = true; - prop.value = this.parseMethod(isGenerator, isAsync); - prop.kind = "init"; - } else if (!isPattern && !containsEsc && - this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && - (prop.key.name === "get" || prop.key.name === "set") && - (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) { - if (isGenerator || isAsync) { this.unexpected(); } - this.parseGetterSetter(prop); - } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { - if (isGenerator || isAsync) { this.unexpected(); } - this.checkUnreserved(prop.key); - if (prop.key.name === "await" && !this.awaitIdentPos) - { this.awaitIdentPos = startPos; } - if (isPattern) { - prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); - } else if (this.type === types$1.eq && refDestructuringErrors) { - if (refDestructuringErrors.shorthandAssign < 0) - { refDestructuringErrors.shorthandAssign = this.start; } - prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); - } else { - prop.value = this.copyNode(prop.key); - } - prop.kind = "init"; - prop.shorthand = true; - } else { this.unexpected(); } - }; +var _item = __nccwpck_require__(72478); - pp$5.parsePropertyName = function(prop) { - if (this.options.ecmaVersion >= 6) { - if (this.eat(types$1.bracketL)) { - prop.computed = true; - prop.key = this.parseMaybeAssign(); - this.expect(types$1.bracketR); - return prop.key - } else { - prop.computed = false; - } - } - return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") - }; +var _configChain = __nccwpck_require__(70835); - // Initialize empty function node. +function _traverse() { + const data = _interopRequireDefault(__nccwpck_require__(50148)); - pp$5.initFunction = function(node) { - node.id = null; - if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } - if (this.options.ecmaVersion >= 8) { node.async = false; } + _traverse = function () { + return data; }; - // Parse object or class method. + return data; +} + +var _caching = __nccwpck_require__(46268); - pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { - var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; +var _options = __nccwpck_require__(44743); - this.initFunction(node); - if (this.options.ecmaVersion >= 6) - { node.generator = isGenerator; } - if (this.options.ecmaVersion >= 8) - { node.async = !!isAsync; } +var _plugins = __nccwpck_require__(22449); - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); +var _configApi = _interopRequireDefault(__nccwpck_require__(33700)); - this.expect(types$1.parenL); - node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); - this.checkYieldAwaitInDefaultParams(); - this.parseFunctionBody(node, false, true, false); +var _partial = _interopRequireDefault(__nccwpck_require__(71700)); - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, "FunctionExpression") - }; +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - // Parse arrow function expression with given parameters. +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - pp$5.parseArrowExpression = function(node, params, isAsync, forInit) { - var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); - this.initFunction(node); - if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } +var _default = (0, _gensync().default)(function* loadFullConfig(inputOpts) { + const result = yield* (0, _partial.default)(inputOpts); - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; + if (!result) { + return null; + } - node.params = this.toAssignableList(params, true); - this.parseFunctionBody(node, true, false, forInit); + const { + options, + context, + fileHandling + } = result; - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, "ArrowFunctionExpression") - }; + if (fileHandling === "ignored") { + return null; + } - // Parse function body and check parameters. + const optionDefaults = {}; + const { + plugins, + presets + } = options; - pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { - var isExpression = isArrowFunction && this.type !== types$1.braceL; - var oldStrict = this.strict, useStrict = false; + if (!plugins || !presets) { + throw new Error("Assertion failure - plugins and presets exist"); + } - if (isExpression) { - node.body = this.parseMaybeAssign(forInit); - node.expression = true; - this.checkParams(node, false); - } else { - var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); - if (!oldStrict || nonSimple) { - useStrict = this.strictDirective(this.end); - // If this is a strict mode function, verify that argument names - // are not repeated, and it does not try to bind the words `eval` - // or `arguments`. - if (useStrict && nonSimple) - { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } - } - // Start a new scope with regard to labels and the `inFunction` - // flag (restore them to their old value afterwards). - var oldLabels = this.labels; - this.labels = []; - if (useStrict) { this.strict = true; } - - // Add the params to varDeclaredNames to ensure that an error is thrown - // if a let/const declaration in the function clashes with one of the params. - this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); - // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' - if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); } - node.body = this.parseBlock(false, undefined, useStrict && !oldStrict); - node.expression = false; - this.adaptDirectivePrologue(node.body.body); - this.labels = oldLabels; - } - this.exitScope(); - }; + const toDescriptor = item => { + const desc = (0, _item.getItemDescriptor)(item); - pp$5.isSimpleParamList = function(params) { - for (var i = 0, list = params; i < list.length; i += 1) - { - var param = list[i]; + if (!desc) { + throw new Error("Assertion failure - must be config item"); + } - if (param.type !== "Identifier") { return false - } } - return true + return desc; }; - // Checks function params for various disallowed patterns such as using "eval" - // or "arguments" and duplicate parameters. + const presetsDescriptors = presets.map(toDescriptor); + const initialPluginsDescriptors = plugins.map(toDescriptor); + const pluginDescriptorsByPass = [[]]; + const passes = []; + const ignored = yield* enhanceError(context, function* recursePresetDescriptors(rawPresets, pluginDescriptorsPass) { + const presets = []; - pp$5.checkParams = function(node, allowDuplicates) { - var nameHash = Object.create(null); - for (var i = 0, list = node.params; i < list.length; i += 1) - { - var param = list[i]; + for (let i = 0; i < rawPresets.length; i++) { + const descriptor = rawPresets[i]; + + if (descriptor.options !== false) { + try { + if (descriptor.ownPass) { + presets.push({ + preset: yield* loadPresetDescriptor(descriptor, context), + pass: [] + }); + } else { + presets.unshift({ + preset: yield* loadPresetDescriptor(descriptor, context), + pass: pluginDescriptorsPass + }); + } + } catch (e) { + if (e.code === "BABEL_UNKNOWN_OPTION") { + (0, _options.checkNoUnwrappedItemOptionPairs)(rawPresets, i, "preset", e); + } - this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash); + throw e; + } + } } - }; - // Parses a comma-separated list of expressions, and returns them as - // an array. `close` is the token type that ends the list, and - // `allowEmpty` can be turned on to allow subsequent commas with - // nothing in between them to be parsed as `null` (which is needed - // for array literals). + if (presets.length > 0) { + pluginDescriptorsByPass.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pluginDescriptorsPass)); - pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { - var elts = [], first = true; - while (!this.eat(close)) { - if (!first) { - this.expect(types$1.comma); - if (allowTrailingComma && this.afterTrailingComma(close)) { break } - } else { first = false; } - - var elt = (void 0); - if (allowEmpty && this.type === types$1.comma) - { elt = null; } - else if (this.type === types$1.ellipsis) { - elt = this.parseSpread(refDestructuringErrors); - if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0) - { refDestructuringErrors.trailingComma = this.start; } - } else { - elt = this.parseMaybeAssign(false, refDestructuringErrors); + for (const { + preset, + pass + } of presets) { + if (!preset) return true; + pass.push(...preset.plugins); + const ignored = yield* recursePresetDescriptors(preset.presets, pass); + if (ignored) return true; + preset.options.forEach(opts => { + (0, _util.mergeOptions)(optionDefaults, opts); + }); } - elts.push(elt); } - return elts - }; + })(presetsDescriptors, pluginDescriptorsByPass[0]); + if (ignored) return null; + const opts = optionDefaults; + (0, _util.mergeOptions)(opts, options); + yield* enhanceError(context, function* loadPluginDescriptors() { + pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors); - pp$5.checkUnreserved = function(ref) { - var start = ref.start; - var end = ref.end; - var name = ref.name; - - if (this.inGenerator && name === "yield") - { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } - if (this.inAsync && name === "await") - { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } - if (!(this.currentThisScope().flags & SCOPE_VAR) && name === "arguments") - { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } - if (this.inClassStaticBlock && (name === "arguments" || name === "await")) - { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } - if (this.keywords.test(name)) - { this.raise(start, ("Unexpected keyword '" + name + "'")); } - if (this.options.ecmaVersion < 6 && - this.input.slice(start, end).indexOf("\\") !== -1) { return } - var re = this.strict ? this.reservedWordsStrict : this.reservedWords; - if (re.test(name)) { - if (!this.inAsync && name === "await") - { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } - this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); - } - }; + for (const descs of pluginDescriptorsByPass) { + const pass = []; + passes.push(pass); + + for (let i = 0; i < descs.length; i++) { + const descriptor = descs[i]; - // Parse the next token as an identifier. If `liberal` is true (used - // when parsing properties), it will also convert keywords into - // identifiers. + if (descriptor.options !== false) { + try { + pass.push(yield* loadPluginDescriptor(descriptor, context)); + } catch (e) { + if (e.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") { + (0, _options.checkNoUnwrappedItemOptionPairs)(descs, i, "plugin", e); + } - pp$5.parseIdent = function(liberal) { - var node = this.parseIdentNode(); - this.next(!!liberal); - this.finishNode(node, "Identifier"); - if (!liberal) { - this.checkUnreserved(node); - if (node.name === "await" && !this.awaitIdentPos) - { this.awaitIdentPos = node.start; } + throw e; + } + } + } } - return node + })(); + opts.plugins = passes[0]; + opts.presets = passes.slice(1).filter(plugins => plugins.length > 0).map(plugins => ({ + plugins + })); + opts.passPerPreset = opts.presets.length > 0; + return { + options: opts, + passes: passes }; +}); - pp$5.parseIdentNode = function() { - var node = this.startNode(); - if (this.type === types$1.name) { - node.name = this.value; - } else if (this.type.keyword) { - node.name = this.type.keyword; - - // To fix https://github.com/acornjs/acorn/issues/575 - // `class` and `function` keywords push new context into this.context. - // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. - // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword - if ((node.name === "class" || node.name === "function") && - (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { - this.context.pop(); - } - this.type = types$1.name; - } else { - this.unexpected(); +exports["default"] = _default; + +function enhanceError(context, fn) { + return function* (arg1, arg2) { + try { + return yield* fn(arg1, arg2); + } catch (e) { + if (!/^\[BABEL\]/.test(e.message)) { + e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`; + } + + throw e; } - return node }; +} - pp$5.parsePrivateIdent = function() { - var node = this.startNode(); - if (this.type === types$1.privateId) { - node.name = this.value; - } else { - this.unexpected(); - } - this.next(); - this.finishNode(node, "PrivateIdentifier"); +const loadDescriptor = (0, _caching.makeWeakCache)(function* ({ + value, + options, + dirname, + alias +}, cache) { + if (options === false) throw new Error("Assertion failure"); + options = options || {}; + let item = value; - // For validating existence - if (this.options.checkPrivateFields) { - if (this.privateNameStack.length === 0) { - this.raise(node.start, ("Private field '#" + (node.name) + "' must be declared in an enclosing class")); - } else { - this.privateNameStack[this.privateNameStack.length - 1].used.push(node); + if (typeof value === "function") { + const api = Object.assign({}, context, (0, _configApi.default)(cache)); + + try { + item = value(api, options, dirname); + } catch (e) { + if (alias) { + e.message += ` (While processing: ${JSON.stringify(alias)})`; } + + throw e; } + } - return node - }; + if (!item || typeof item !== "object") { + throw new Error("Plugin/Preset did not return an object."); + } - // Parses yield expression inside generator. + if (typeof item.then === "function") { + yield* []; + throw new Error(`You appear to be using an async plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); + } - pp$5.parseYield = function(forInit) { - if (!this.yieldPos) { this.yieldPos = this.start; } + return { + value: item, + options, + dirname, + alias + }; +}); - var node = this.startNode(); - this.next(); - if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) { - node.delegate = false; - node.argument = null; - } else { - node.delegate = this.eat(types$1.star); - node.argument = this.parseMaybeAssign(forInit); +function* loadPluginDescriptor(descriptor, context) { + if (descriptor.value instanceof _plugin.default) { + if (descriptor.options) { + throw new Error("Passed options to an existing Plugin instance will not work."); } - return this.finishNode(node, "YieldExpression") - }; - pp$5.parseAwait = function(forInit) { - if (!this.awaitPos) { this.awaitPos = this.start; } + return descriptor.value; + } - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeUnary(null, true, false, forInit); - return this.finishNode(node, "AwaitExpression") - }; + return yield* instantiatePlugin(yield* loadDescriptor(descriptor, context), context); +} + +const instantiatePlugin = (0, _caching.makeWeakCache)(function* ({ + value, + options, + dirname, + alias +}, cache) { + const pluginObj = (0, _plugins.validatePluginObject)(value); + const plugin = Object.assign({}, pluginObj); + + if (plugin.visitor) { + plugin.visitor = _traverse().default.explode(Object.assign({}, plugin.visitor)); + } - var pp$4 = Parser.prototype; + if (plugin.inherits) { + const inheritsDescriptor = { + name: undefined, + alias: `${alias}$inherits`, + value: plugin.inherits, + options, + dirname + }; + const inherits = yield* (0, _async.forwardAsync)(loadPluginDescriptor, run => { + return cache.invalidate(data => run(inheritsDescriptor, data)); + }); + plugin.pre = chain(inherits.pre, plugin.pre); + plugin.post = chain(inherits.post, plugin.post); + plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions); + plugin.visitor = _traverse().default.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]); + } + + return new _plugin.default(plugin, options, alias); +}); + +const validateIfOptionNeedsFilename = (options, descriptor) => { + if (options.test || options.include || options.exclude) { + const formattedPresetName = descriptor.name ? `"${descriptor.name}"` : "/* your preset */"; + throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n")); + } +}; - // This function is used to raise exceptions on parse errors. It - // takes an offset integer (into the current `input`) to indicate - // the location of the error, attaches the position to the end - // of the error message, and then raises a `SyntaxError` with that - // message. +const validatePreset = (preset, context, descriptor) => { + if (!context.filename) { + const { + options + } = preset; + validateIfOptionNeedsFilename(options, descriptor); - pp$4.raise = function(pos, message) { - var loc = getLineInfo(this.input, pos); - message += " (" + loc.line + ":" + loc.column + ")"; - if (this.sourceFile) { - message += " in " + this.sourceFile; + if (options.overrides) { + options.overrides.forEach(overrideOptions => validateIfOptionNeedsFilename(overrideOptions, descriptor)); } - var err = new SyntaxError(message); - err.pos = pos; err.loc = loc; err.raisedAt = this.pos; - throw err - }; + } +}; + +function* loadPresetDescriptor(descriptor, context) { + const preset = instantiatePreset(yield* loadDescriptor(descriptor, context)); + validatePreset(preset, context, descriptor); + return yield* (0, _configChain.buildPresetChain)(preset, context); +} - pp$4.raiseRecoverable = pp$4.raise; +const instantiatePreset = (0, _caching.makeWeakCacheSync)(({ + value, + dirname, + alias +}) => { + return { + options: (0, _options.validate)("preset", value), + alias, + dirname + }; +}); - pp$4.curPosition = function() { - if (this.options.locations) { - return new Position(this.curLine, this.pos - this.lineStart) +function chain(a, b) { + const fns = [a, b].filter(Boolean); + if (fns.length <= 1) return fns[0]; + return function (...args) { + for (const fn of fns) { + fn.apply(this, args); } }; +} - var pp$3 = Parser.prototype; +/***/ }), - var Scope = function Scope(flags) { - this.flags = flags; - // A list of var-declared names in the current lexical scope - this.var = []; - // A list of lexically-declared names in the current lexical scope - this.lexical = []; - // A list of lexically-declared FunctionDeclaration names in the current lexical scope - this.functions = []; - }; +/***/ 33700: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. +"use strict"; - pp$3.enterScope = function(flags) { - this.scopeStack.push(new Scope(flags)); - }; - pp$3.exitScope = function() { - this.scopeStack.pop(); - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = makeAPI; - // The spec says: - // > At the top level of a function, or script, function declarations are - // > treated like var declarations rather than like lexical declarations. - pp$3.treatFunctionsAsVarInScope = function(scope) { - return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) - }; +function _semver() { + const data = _interopRequireDefault(__nccwpck_require__(39318)); - pp$3.declareName = function(name, bindingType, pos) { - var redeclared = false; - if (bindingType === BIND_LEXICAL) { - var scope = this.currentScope(); - redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; - scope.lexical.push(name); - if (this.inModule && (scope.flags & SCOPE_TOP)) - { delete this.undefinedExports[name]; } - } else if (bindingType === BIND_SIMPLE_CATCH) { - var scope$1 = this.currentScope(); - scope$1.lexical.push(name); - } else if (bindingType === BIND_FUNCTION) { - var scope$2 = this.currentScope(); - if (this.treatFunctionsAsVar) - { redeclared = scope$2.lexical.indexOf(name) > -1; } - else - { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } - scope$2.functions.push(name); - } else { - for (var i = this.scopeStack.length - 1; i >= 0; --i) { - var scope$3 = this.scopeStack[i]; - if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || - !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { - redeclared = true; - break - } - scope$3.var.push(name); - if (this.inModule && (scope$3.flags & SCOPE_TOP)) - { delete this.undefinedExports[name]; } - if (scope$3.flags & SCOPE_VAR) { break } - } - } - if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } + _semver = function () { + return data; }; - pp$3.checkLocalExport = function(id) { - // scope.functions must be empty as Module code is always strict. - if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && - this.scopeStack[0].var.indexOf(id.name) === -1) { - this.undefinedExports[id.name] = id; - } - }; + return data; +} - pp$3.currentScope = function() { - return this.scopeStack[this.scopeStack.length - 1] - }; +var _ = __nccwpck_require__(85414); - pp$3.currentVarScope = function() { - for (var i = this.scopeStack.length - 1;; i--) { - var scope = this.scopeStack[i]; - if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope } - } - }; +var _caching = __nccwpck_require__(46268); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function makeAPI(cache) { + const env = value => cache.using(data => { + if (typeof value === "undefined") return data.envName; - // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. - pp$3.currentThisScope = function() { - for (var i = this.scopeStack.length - 1;; i--) { - var scope = this.scopeStack[i]; - if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) && - !(scope.flags & SCOPE_ARROW)) { return scope } + if (typeof value === "function") { + return (0, _caching.assertSimpleType)(value(data.envName)); } - }; - var Node = function Node(parser, pos, loc) { - this.type = ""; - this.start = pos; - this.end = 0; - if (parser.options.locations) - { this.loc = new SourceLocation(parser, loc); } - if (parser.options.directSourceFile) - { this.sourceFile = parser.options.directSourceFile; } - if (parser.options.ranges) - { this.range = [pos, 0]; } - }; + if (!Array.isArray(value)) value = [value]; + return value.some(entry => { + if (typeof entry !== "string") { + throw new Error("Unexpected non-string value"); + } - // Start an AST node, attaching a start offset. + return entry === data.envName; + }); + }); - var pp$2 = Parser.prototype; + const caller = cb => cache.using(data => (0, _caching.assertSimpleType)(cb(data.caller))); - pp$2.startNode = function() { - return new Node(this, this.start, this.startLoc) + return { + version: _.version, + cache: cache.simple(), + env, + async: () => false, + caller, + assertVersion }; +} - pp$2.startNodeAt = function(pos, loc) { - return new Node(this, pos, loc) - }; +function assertVersion(range) { + if (typeof range === "number") { + if (!Number.isInteger(range)) { + throw new Error("Expected string or integer value."); + } - // Finish an AST node, adding `type` and `end` properties. + range = `^${range}.0.0-0`; + } - function finishNodeAt(node, type, pos, loc) { - node.type = type; - node.end = pos; - if (this.options.locations) - { node.loc.end = loc; } - if (this.options.ranges) - { node.range[1] = pos; } - return node + if (typeof range !== "string") { + throw new Error("Expected string or integer value."); } - pp$2.finishNode = function(node, type) { - return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) - }; + if (_semver().default.satisfies(_.version, range)) return; + const limit = Error.stackTraceLimit; - // Finish node at given position + if (typeof limit === "number" && limit < 25) { + Error.stackTraceLimit = 25; + } - pp$2.finishNodeAt = function(node, type, pos, loc) { - return finishNodeAt.call(this, node, type, pos, loc) - }; + const err = new Error(`Requires Babel "${range}", but was loaded with "${_.version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); - pp$2.copyNode = function(node) { - var newNode = new Node(this, node.start, this.startLoc); - for (var prop in node) { newNode[prop] = node[prop]; } - return newNode - }; + if (typeof limit === "number") { + Error.stackTraceLimit = limit; + } - // This file was generated by "bin/generate-unicode-script-values.js". Do not modify manually! - var scriptValuesAddedInUnicode = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"; - - // This file contains Unicode properties extracted from the ECMAScript specification. - // The lists are extracted like so: - // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) - - // #table-binary-unicode-properties - var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; - var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; - var ecma11BinaryProperties = ecma10BinaryProperties; - var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; - var ecma13BinaryProperties = ecma12BinaryProperties; - var ecma14BinaryProperties = ecma13BinaryProperties; - - var unicodeBinaryProperties = { - 9: ecma9BinaryProperties, - 10: ecma10BinaryProperties, - 11: ecma11BinaryProperties, - 12: ecma12BinaryProperties, - 13: ecma13BinaryProperties, - 14: ecma14BinaryProperties - }; + throw Object.assign(err, { + code: "BABEL_VERSION_UNSUPPORTED", + version: _.version, + range + }); +} - // #table-binary-unicode-properties-of-strings - var ecma14BinaryPropertiesOfStrings = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"; +/***/ }), - var unicodeBinaryPropertiesOfStrings = { - 9: "", - 10: "", - 11: "", - 12: "", - 13: "", - 14: ecma14BinaryPropertiesOfStrings - }; +/***/ 3110: +/***/ ((__unused_webpack_module, exports) => { - // #table-unicode-general-category-values - var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; - - // #table-unicode-script-values - var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; - var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; - var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; - var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; - var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; - var ecma14ScriptValues = ecma13ScriptValues + " " + scriptValuesAddedInUnicode; - - var unicodeScriptValues = { - 9: ecma9ScriptValues, - 10: ecma10ScriptValues, - 11: ecma11ScriptValues, - 12: ecma12ScriptValues, - 13: ecma13ScriptValues, - 14: ecma14ScriptValues - }; +"use strict"; - var data = {}; - function buildUnicodeData(ecmaVersion) { - var d = data[ecmaVersion] = { - binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), - binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]), - nonBinary: { - General_Category: wordsRegexp(unicodeGeneralCategoryValues), - Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) - } - }; - d.nonBinary.Script_Extensions = d.nonBinary.Script; - d.nonBinary.gc = d.nonBinary.General_Category; - d.nonBinary.sc = d.nonBinary.Script; - d.nonBinary.scx = d.nonBinary.Script_Extensions; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getEnv = getEnv; - for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) { - var ecmaVersion = list[i]; +function getEnv(defaultValue = "development") { + return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue; +} - buildUnicodeData(ecmaVersion); - } +/***/ }), + +/***/ 73677: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - var pp$1 = Parser.prototype; +"use strict"; - // Track disjunction structure to determine whether a duplicate - // capture group name is allowed because it is in a separate branch. - var BranchID = function BranchID(parent, base) { - // Parent disjunction branch - this.parent = parent; - // Identifies this set of sibling branches - this.base = base || this; - }; - BranchID.prototype.separatedFrom = function separatedFrom (alt) { - // A branch is separate from another branch if they or any of - // their parents are siblings in a given disjunction - for (var self = this; self; self = self.parent) { - for (var other = alt; other; other = other.parent) { - if (self.base === other.base && self !== other) { return true } - } - } - return false - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "default", ({ + enumerable: true, + get: function () { + return _full.default; + } +})); +exports.loadOptionsAsync = exports.loadOptionsSync = exports.loadOptions = exports.loadPartialConfigAsync = exports.loadPartialConfigSync = exports.loadPartialConfig = void 0; - BranchID.prototype.sibling = function sibling () { - return new BranchID(this.parent, this.base) - }; +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - var RegExpValidationState = function RegExpValidationState(parser) { - this.parser = parser; - this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); - this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion]; - this.source = ""; - this.flags = ""; - this.start = 0; - this.switchU = false; - this.switchV = false; - this.switchN = false; - this.pos = 0; - this.lastIntValue = 0; - this.lastStringValue = ""; - this.lastAssertionIsQuantifiable = false; - this.numCapturingParens = 0; - this.maxBackReference = 0; - this.groupNames = Object.create(null); - this.backReferenceNames = []; - this.branchID = null; + _gensync = function () { + return data; }; - RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { - var unicodeSets = flags.indexOf("v") !== -1; - var unicode = flags.indexOf("u") !== -1; - this.start = start | 0; - this.source = pattern + ""; - this.flags = flags; - if (unicodeSets && this.parser.options.ecmaVersion >= 15) { - this.switchU = true; - this.switchV = true; - this.switchN = true; - } else { - this.switchU = unicode && this.parser.options.ecmaVersion >= 6; - this.switchV = false; - this.switchN = unicode && this.parser.options.ecmaVersion >= 9; - } - }; + return data; +} - RegExpValidationState.prototype.raise = function raise (message) { - this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); - }; +var _full = _interopRequireDefault(__nccwpck_require__(74396)); - // If u flag is given, this returns the code point at the index (it combines a surrogate pair). - // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). - RegExpValidationState.prototype.at = function at (i, forceU) { - if ( forceU === void 0 ) forceU = false; +var _partial = __nccwpck_require__(71700); - var s = this.source; - var l = s.length; - if (i >= l) { - return -1 - } - var c = s.charCodeAt(i); - if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { - return c - } - var next = s.charCodeAt(i + 1); - return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c - }; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) { - if ( forceU === void 0 ) forceU = false; +const loadOptionsRunner = (0, _gensync().default)(function* (opts) { + var _config$options; - var s = this.source; - var l = s.length; - if (i >= l) { - return l - } - var c = s.charCodeAt(i), next; - if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || - (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { - return i + 1 - } - return i + 2 - }; + const config = yield* (0, _full.default)(opts); + return (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null; +}); + +const maybeErrback = runner => (opts, callback) => { + if (callback === undefined && typeof opts === "function") { + callback = opts; + opts = undefined; + } - RegExpValidationState.prototype.current = function current (forceU) { - if ( forceU === void 0 ) forceU = false; + return callback ? runner.errback(opts, callback) : runner.sync(opts); +}; - return this.at(this.pos, forceU) - }; +const loadPartialConfig = maybeErrback(_partial.loadPartialConfig); +exports.loadPartialConfig = loadPartialConfig; +const loadPartialConfigSync = _partial.loadPartialConfig.sync; +exports.loadPartialConfigSync = loadPartialConfigSync; +const loadPartialConfigAsync = _partial.loadPartialConfig.async; +exports.loadPartialConfigAsync = loadPartialConfigAsync; +const loadOptions = maybeErrback(loadOptionsRunner); +exports.loadOptions = loadOptions; +const loadOptionsSync = loadOptionsRunner.sync; +exports.loadOptionsSync = loadOptionsSync; +const loadOptionsAsync = loadOptionsRunner.async; +exports.loadOptionsAsync = loadOptionsAsync; - RegExpValidationState.prototype.lookahead = function lookahead (forceU) { - if ( forceU === void 0 ) forceU = false; +/***/ }), - return this.at(this.nextIndex(this.pos, forceU), forceU) - }; +/***/ 72478: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - RegExpValidationState.prototype.advance = function advance (forceU) { - if ( forceU === void 0 ) forceU = false; +"use strict"; - this.pos = this.nextIndex(this.pos, forceU); - }; - RegExpValidationState.prototype.eat = function eat (ch, forceU) { - if ( forceU === void 0 ) forceU = false; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createItemFromDescriptor = createItemFromDescriptor; +exports.createConfigItem = createConfigItem; +exports.getItemDescriptor = getItemDescriptor; - if (this.current(forceU) === ch) { - this.advance(forceU); - return true - } - return false +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); + + _path = function () { + return data; }; - RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) { - if ( forceU === void 0 ) forceU = false; + return data; +} - var pos = this.pos; - for (var i = 0, list = chs; i < list.length; i += 1) { - var ch = list[i]; +var _configDescriptors = __nccwpck_require__(2420); - var current = this.at(pos, forceU); - if (current === -1 || current !== ch) { - return false - } - pos = this.nextIndex(pos, forceU); - } - this.pos = pos; - return true - }; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - /** - * Validate the flags part of a given RegExpLiteral. - * - * @param {RegExpValidationState} state The state to validate RegExp. - * @returns {void} - */ - pp$1.validateRegExpFlags = function(state) { - var validFlags = state.validFlags; - var flags = state.flags; +function createItemFromDescriptor(desc) { + return new ConfigItem(desc); +} - var u = false; - var v = false; +function createConfigItem(value, { + dirname = ".", + type +} = {}) { + const descriptor = (0, _configDescriptors.createDescriptor)(value, _path().default.resolve(dirname), { + type, + alias: "programmatic item" + }); + return createItemFromDescriptor(descriptor); +} - for (var i = 0; i < flags.length; i++) { - var flag = flags.charAt(i); - if (validFlags.indexOf(flag) === -1) { - this.raise(state.start, "Invalid regular expression flag"); - } - if (flags.indexOf(flag, i + 1) > -1) { - this.raise(state.start, "Duplicate regular expression flag"); - } - if (flag === "u") { u = true; } - if (flag === "v") { v = true; } - } - if (this.options.ecmaVersion >= 15 && u && v) { - this.raise(state.start, "Invalid regular expression flag"); - } - }; +function getItemDescriptor(item) { + if (item == null ? void 0 : item[CONFIG_ITEM_BRAND]) { + return item._descriptor; + } - function hasProp(obj) { - for (var _ in obj) { return true } - return false + return undefined; +} + +const CONFIG_ITEM_BRAND = Symbol.for("@babel/core@7 - ConfigItem"); + +class ConfigItem { + constructor(descriptor) { + this._descriptor = void 0; + this[CONFIG_ITEM_BRAND] = true; + this.value = void 0; + this.options = void 0; + this.dirname = void 0; + this.name = void 0; + this.file = void 0; + this._descriptor = descriptor; + Object.defineProperty(this, "_descriptor", { + enumerable: false + }); + Object.defineProperty(this, CONFIG_ITEM_BRAND, { + enumerable: false + }); + this.value = this._descriptor.value; + this.options = this._descriptor.options; + this.dirname = this._descriptor.dirname; + this.name = this._descriptor.name; + this.file = this._descriptor.file ? { + request: this._descriptor.file.request, + resolved: this._descriptor.file.resolved + } : undefined; + Object.freeze(this); } - /** - * Validate the pattern part of a given RegExpLiteral. - * - * @param {RegExpValidationState} state The state to validate RegExp. - * @returns {void} - */ - pp$1.validateRegExpPattern = function(state) { - this.regexp_pattern(state); - - // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of - // parsing contains a |GroupName|, reparse with the goal symbol - // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* - // exception if _P_ did not conform to the grammar, if any elements of _P_ - // were not matched by the parse, or if any Early Error conditions exist. - if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) { - state.switchN = true; - this.regexp_pattern(state); - } - }; +} - // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern - pp$1.regexp_pattern = function(state) { - state.pos = 0; - state.lastIntValue = 0; - state.lastStringValue = ""; - state.lastAssertionIsQuantifiable = false; - state.numCapturingParens = 0; - state.maxBackReference = 0; - state.groupNames = Object.create(null); - state.backReferenceNames.length = 0; - state.branchID = null; +Object.freeze(ConfigItem.prototype); - this.regexp_disjunction(state); +/***/ }), - if (state.pos !== state.source.length) { - // Make the same messages as V8. - if (state.eat(0x29 /* ) */)) { - state.raise("Unmatched ')'"); - } - if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { - state.raise("Lone quantifier brackets"); - } - } - if (state.maxBackReference > state.numCapturingParens) { - state.raise("Invalid escape"); - } - for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { - var name = list[i]; +/***/ 71700: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if (!state.groupNames[name]) { - state.raise("Invalid named capture referenced"); - } - } - }; +"use strict"; - // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction - pp$1.regexp_disjunction = function(state) { - var trackDisjunction = this.options.ecmaVersion >= 16; - if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); } - this.regexp_alternative(state); - while (state.eat(0x7C /* | */)) { - if (trackDisjunction) { state.branchID = state.branchID.sibling(); } - this.regexp_alternative(state); - } - if (trackDisjunction) { state.branchID = state.branchID.parent; } - // Make the same message as V8. - if (this.regexp_eatQuantifier(state, true)) { - state.raise("Nothing to repeat"); - } - if (state.eat(0x7B /* { */)) { - state.raise("Lone quantifier brackets"); - } - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = loadPrivatePartialConfig; +exports.loadPartialConfig = void 0; - // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative - pp$1.regexp_alternative = function(state) { - while (state.pos < state.source.length && this.regexp_eatTerm(state)) {} +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); + + _path = function () { + return data; }; - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term - pp$1.regexp_eatTerm = function(state) { - if (this.regexp_eatAssertion(state)) { - // Handle `QuantifiableAssertion Quantifier` alternative. - // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion - // is a QuantifiableAssertion. - if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { - // Make the same message as V8. - if (state.switchU) { - state.raise("Invalid quantifier"); - } - } - return true - } + return data; +} - if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { - this.regexp_eatQuantifier(state); - return true - } +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - return false + _gensync = function () { + return data; }; - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion - pp$1.regexp_eatAssertion = function(state) { - var start = state.pos; - state.lastAssertionIsQuantifiable = false; + return data; +} - // ^, $ - if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { - return true - } +var _plugin = _interopRequireDefault(__nccwpck_require__(68618)); - // \b \B - if (state.eat(0x5C /* \ */)) { - if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { - return true - } - state.pos = start; - } +var _util = __nccwpck_require__(54493); - // Lookahead / Lookbehind - if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { - var lookbehind = false; - if (this.options.ecmaVersion >= 9) { - lookbehind = state.eat(0x3C /* < */); - } - if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { - this.regexp_disjunction(state); - if (!state.eat(0x29 /* ) */)) { - state.raise("Unterminated group"); - } - state.lastAssertionIsQuantifiable = !lookbehind; - return true - } - } +var _item = __nccwpck_require__(72478); - state.pos = start; - return false - }; +var _configChain = __nccwpck_require__(70835); - // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier - pp$1.regexp_eatQuantifier = function(state, noError) { - if ( noError === void 0 ) noError = false; +var _environment = __nccwpck_require__(3110); - if (this.regexp_eatQuantifierPrefix(state, noError)) { - state.eat(0x3F /* ? */); - return true - } - return false - }; +var _options = __nccwpck_require__(44743); - // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix - pp$1.regexp_eatQuantifierPrefix = function(state, noError) { - return ( - state.eat(0x2A /* * */) || - state.eat(0x2B /* + */) || - state.eat(0x3F /* ? */) || - this.regexp_eatBracedQuantifier(state, noError) - ) - }; - pp$1.regexp_eatBracedQuantifier = function(state, noError) { - var start = state.pos; - if (state.eat(0x7B /* { */)) { - var min = 0, max = -1; - if (this.regexp_eatDecimalDigits(state)) { - min = state.lastIntValue; - if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { - max = state.lastIntValue; - } - if (state.eat(0x7D /* } */)) { - // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term - if (max !== -1 && max < min && !noError) { - state.raise("numbers out of order in {} quantifier"); - } - return true - } - } - if (state.switchU && !noError) { - state.raise("Incomplete quantifier"); - } - state.pos = start; - } - return false - }; +var _files = __nccwpck_require__(37217); - // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom - pp$1.regexp_eatAtom = function(state) { - return ( - this.regexp_eatPatternCharacters(state) || - state.eat(0x2E /* . */) || - this.regexp_eatReverseSolidusAtomEscape(state) || - this.regexp_eatCharacterClass(state) || - this.regexp_eatUncapturingGroup(state) || - this.regexp_eatCapturingGroup(state) - ) - }; - pp$1.regexp_eatReverseSolidusAtomEscape = function(state) { - var start = state.pos; - if (state.eat(0x5C /* \ */)) { - if (this.regexp_eatAtomEscape(state)) { - return true - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatUncapturingGroup = function(state) { - var start = state.pos; - if (state.eat(0x28 /* ( */)) { - if (state.eat(0x3F /* ? */)) { - if (this.options.ecmaVersion >= 16) { - var addModifiers = this.regexp_eatModifiers(state); - var hasHyphen = state.eat(0x2D /* - */); - if (addModifiers || hasHyphen) { - for (var i = 0; i < addModifiers.length; i++) { - var modifier = addModifiers.charAt(i); - if (addModifiers.indexOf(modifier, i + 1) > -1) { - state.raise("Duplicate regular expression modifiers"); - } - } - if (hasHyphen) { - var removeModifiers = this.regexp_eatModifiers(state); - if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) { - state.raise("Invalid regular expression modifiers"); - } - for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) { - var modifier$1 = removeModifiers.charAt(i$1); - if ( - removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || - addModifiers.indexOf(modifier$1) > -1 - ) { - state.raise("Duplicate regular expression modifiers"); - } - } - } - } - } - if (state.eat(0x3A /* : */)) { - this.regexp_disjunction(state); - if (state.eat(0x29 /* ) */)) { - return true - } - state.raise("Unterminated group"); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function* resolveRootMode(rootDir, rootMode) { + switch (rootMode) { + case "root": + return rootDir; + + case "upward-optional": + { + const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir); + return upwardRootDir === null ? rootDir : upwardRootDir; } - state.pos = start; - } - return false - }; - pp$1.regexp_eatCapturingGroup = function(state) { - if (state.eat(0x28 /* ( */)) { - if (this.options.ecmaVersion >= 9) { - this.regexp_groupSpecifier(state); - } else if (state.current() === 0x3F /* ? */) { - state.raise("Invalid group"); - } - this.regexp_disjunction(state); - if (state.eat(0x29 /* ) */)) { - state.numCapturingParens += 1; - return true + + case "upward": + { + const upwardRootDir = yield* (0, _files.findConfigUpwards)(rootDir); + if (upwardRootDir !== null) return upwardRootDir; + throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}".\n` + `One of the following config files must be in the directory tree: ` + `"${_files.ROOT_CONFIG_FILENAMES.join(", ")}".`), { + code: "BABEL_ROOT_NOT_FOUND", + dirname: rootDir + }); } - state.raise("Unterminated group"); - } - return false + + default: + throw new Error(`Assertion failure - unknown rootMode value.`); + } +} + +function* loadPrivatePartialConfig(inputOpts) { + if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) { + throw new Error("Babel options must be an object, null, or undefined"); + } + + const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {}; + const { + envName = (0, _environment.getEnv)(), + cwd = ".", + root: rootDir = ".", + rootMode = "root", + caller, + cloneInputAst = true + } = args; + + const absoluteCwd = _path().default.resolve(cwd); + + const absoluteRootDir = yield* resolveRootMode(_path().default.resolve(absoluteCwd, rootDir), rootMode); + const filename = typeof args.filename === "string" ? _path().default.resolve(cwd, args.filename) : undefined; + const showConfigPath = yield* (0, _files.resolveShowConfigPath)(absoluteCwd); + const context = { + filename, + cwd: absoluteCwd, + root: absoluteRootDir, + envName, + caller, + showConfig: showConfigPath === filename }; - // RegularExpressionModifiers :: - // [empty] - // RegularExpressionModifiers RegularExpressionModifier - pp$1.regexp_eatModifiers = function(state) { - var modifiers = ""; - var ch = 0; - while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) { - modifiers += codePointToString(ch); - state.advance(); - } - return modifiers + const configChain = yield* (0, _configChain.buildRootChain)(args, context); + if (!configChain) return null; + const options = {}; + configChain.options.forEach(opts => { + (0, _util.mergeOptions)(options, opts); + }); + options.cloneInputAst = cloneInputAst; + options.babelrc = false; + options.configFile = false; + options.passPerPreset = false; + options.envName = context.envName; + options.cwd = context.cwd; + options.root = context.root; + options.filename = typeof context.filename === "string" ? context.filename : undefined; + options.plugins = configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); + options.presets = configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); + return { + options, + context, + fileHandling: configChain.fileHandling, + ignore: configChain.ignore, + babelrc: configChain.babelrc, + config: configChain.config, + files: configChain.files }; - // RegularExpressionModifier :: one of - // `i` `m` `s` - function isRegularExpressionModifier(ch) { - return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */ +} + +const loadPartialConfig = (0, _gensync().default)(function* (opts) { + let showIgnoredFiles = false; + + if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) { + var _opts = opts; + ({ + showIgnoredFiles + } = _opts); + opts = _objectWithoutPropertiesLoose(_opts, ["showIgnoredFiles"]); + _opts; } - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom - pp$1.regexp_eatExtendedAtom = function(state) { - return ( - state.eat(0x2E /* . */) || - this.regexp_eatReverseSolidusAtomEscape(state) || - this.regexp_eatCharacterClass(state) || - this.regexp_eatUncapturingGroup(state) || - this.regexp_eatCapturingGroup(state) || - this.regexp_eatInvalidBracedQuantifier(state) || - this.regexp_eatExtendedPatternCharacter(state) - ) - }; + const result = yield* loadPrivatePartialConfig(opts); + if (!result) return null; + const { + options, + babelrc, + ignore, + config, + fileHandling, + files + } = result; - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier - pp$1.regexp_eatInvalidBracedQuantifier = function(state) { - if (this.regexp_eatBracedQuantifier(state, true)) { - state.raise("Nothing to repeat"); - } - return false - }; + if (fileHandling === "ignored" && !showIgnoredFiles) { + return null; + } - // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter - pp$1.regexp_eatSyntaxCharacter = function(state) { - var ch = state.current(); - if (isSyntaxCharacter(ch)) { - state.lastIntValue = ch; - state.advance(); - return true + (options.plugins || []).forEach(item => { + if (item.value instanceof _plugin.default) { + throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()"); } - return false - }; - function isSyntaxCharacter(ch) { - return ( - ch === 0x24 /* $ */ || - ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || - ch === 0x2E /* . */ || - ch === 0x3F /* ? */ || - ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || - ch >= 0x7B /* { */ && ch <= 0x7D /* } */ - ) + }); + return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files); +}); +exports.loadPartialConfig = loadPartialConfig; + +class PartialConfig { + constructor(options, babelrc, ignore, config, fileHandling, files) { + this.options = void 0; + this.babelrc = void 0; + this.babelignore = void 0; + this.config = void 0; + this.fileHandling = void 0; + this.files = void 0; + this.options = options; + this.babelignore = ignore; + this.babelrc = babelrc; + this.config = config; + this.fileHandling = fileHandling; + this.files = files; + Object.freeze(this); } - // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter - // But eat eager. - pp$1.regexp_eatPatternCharacters = function(state) { - var start = state.pos; - var ch = 0; - while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { - state.advance(); - } - return state.pos !== start - }; + hasFilesystemConfig() { + return this.babelrc !== undefined || this.config !== undefined; + } - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter - pp$1.regexp_eatExtendedPatternCharacter = function(state) { - var ch = state.current(); - if ( - ch !== -1 && - ch !== 0x24 /* $ */ && - !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && - ch !== 0x2E /* . */ && - ch !== 0x3F /* ? */ && - ch !== 0x5B /* [ */ && - ch !== 0x5E /* ^ */ && - ch !== 0x7C /* | */ - ) { - state.advance(); - return true - } - return false - }; +} - // GroupSpecifier :: - // [empty] - // `?` GroupName - pp$1.regexp_groupSpecifier = function(state) { - if (state.eat(0x3F /* ? */)) { - if (!this.regexp_eatGroupName(state)) { state.raise("Invalid group"); } - var trackDisjunction = this.options.ecmaVersion >= 16; - var known = state.groupNames[state.lastStringValue]; - if (known) { - if (trackDisjunction) { - for (var i = 0, list = known; i < list.length; i += 1) { - var altID = list[i]; - - if (!altID.separatedFrom(state.branchID)) - { state.raise("Duplicate capture group name"); } - } - } else { - state.raise("Duplicate capture group name"); - } - } - if (trackDisjunction) { - (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID); - } else { - state.groupNames[state.lastStringValue] = true; - } - } - }; +Object.freeze(PartialConfig.prototype); - // GroupName :: - // `<` RegExpIdentifierName `>` - // Note: this updates `state.lastStringValue` property with the eaten name. - pp$1.regexp_eatGroupName = function(state) { - state.lastStringValue = ""; - if (state.eat(0x3C /* < */)) { - if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { - return true - } - state.raise("Invalid capture group name"); - } - return false - }; +/***/ }), - // RegExpIdentifierName :: - // RegExpIdentifierStart - // RegExpIdentifierName RegExpIdentifierPart - // Note: this updates `state.lastStringValue` property with the eaten name. - pp$1.regexp_eatRegExpIdentifierName = function(state) { - state.lastStringValue = ""; - if (this.regexp_eatRegExpIdentifierStart(state)) { - state.lastStringValue += codePointToString(state.lastIntValue); - while (this.regexp_eatRegExpIdentifierPart(state)) { - state.lastStringValue += codePointToString(state.lastIntValue); - } - return true - } - return false +/***/ 79619: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = pathToPattern; + +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); + + _path = function () { + return data; }; - // RegExpIdentifierStart :: - // UnicodeIDStart - // `$` - // `_` - // `\` RegExpUnicodeEscapeSequence[+U] - pp$1.regexp_eatRegExpIdentifierStart = function(state) { - var start = state.pos; - var forceU = this.options.ecmaVersion >= 11; - var ch = state.current(forceU); - state.advance(forceU); - - if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { - ch = state.lastIntValue; - } - if (isRegExpIdentifierStart(ch)) { - state.lastIntValue = ch; - return true - } + return data; +} - state.pos = start; - return false +function _escapeRegExp() { + const data = _interopRequireDefault(__nccwpck_require__(66195)); + + _escapeRegExp = function () { + return data; }; - function isRegExpIdentifierStart(ch) { - return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ - } - - // RegExpIdentifierPart :: - // UnicodeIDContinue - // `$` - // `_` - // `\` RegExpUnicodeEscapeSequence[+U] - // <ZWNJ> - // <ZWJ> - pp$1.regexp_eatRegExpIdentifierPart = function(state) { - var start = state.pos; - var forceU = this.options.ecmaVersion >= 11; - var ch = state.current(forceU); - state.advance(forceU); - - if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { - ch = state.lastIntValue; - } - if (isRegExpIdentifierPart(ch)) { - state.lastIntValue = ch; - return true + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const sep = `\\${_path().default.sep}`; +const endSep = `(?:${sep}|$)`; +const substitution = `[^${sep}]+`; +const starPat = `(?:${substitution}${sep})`; +const starPatLast = `(?:${substitution}${endSep})`; +const starStarPat = `${starPat}*?`; +const starStarPatLast = `${starPat}*?${starPatLast}?`; + +function pathToPattern(pattern, dirname) { + const parts = _path().default.resolve(dirname, pattern).split(_path().default.sep); + + return new RegExp(["^", ...parts.map((part, i) => { + const last = i === parts.length - 1; + if (part === "**") return last ? starStarPatLast : starStarPat; + if (part === "*") return last ? starPatLast : starPat; + + if (part.indexOf("*.") === 0) { + return substitution + (0, _escapeRegExp().default)(part.slice(1)) + (last ? endSep : sep); } - state.pos = start; - return false - }; - function isRegExpIdentifierPart(ch) { - return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */ + return (0, _escapeRegExp().default)(part) + (last ? endSep : sep); + })].join("")); +} + +/***/ }), + +/***/ 68618: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +class Plugin { + constructor(plugin, options, key) { + this.key = void 0; + this.manipulateOptions = void 0; + this.post = void 0; + this.pre = void 0; + this.visitor = void 0; + this.parserOverride = void 0; + this.generatorOverride = void 0; + this.options = void 0; + this.key = plugin.name || key; + this.manipulateOptions = plugin.manipulateOptions; + this.post = plugin.post; + this.pre = plugin.pre; + this.visitor = plugin.visitor || {}; + this.parserOverride = plugin.parserOverride; + this.generatorOverride = plugin.generatorOverride; + this.options = options; } - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape - pp$1.regexp_eatAtomEscape = function(state) { - if ( - this.regexp_eatBackReference(state) || - this.regexp_eatCharacterClassEscape(state) || - this.regexp_eatCharacterEscape(state) || - (state.switchN && this.regexp_eatKGroupName(state)) - ) { - return true - } - if (state.switchU) { - // Make the same message as V8. - if (state.current() === 0x63 /* c */) { - state.raise("Invalid unicode escape"); - } - state.raise("Invalid escape"); - } - return false - }; - pp$1.regexp_eatBackReference = function(state) { - var start = state.pos; - if (this.regexp_eatDecimalEscape(state)) { - var n = state.lastIntValue; - if (state.switchU) { - // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape - if (n > state.maxBackReference) { - state.maxBackReference = n; - } - return true - } - if (n <= state.numCapturingParens) { - return true - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatKGroupName = function(state) { - if (state.eat(0x6B /* k */)) { - if (this.regexp_eatGroupName(state)) { - state.backReferenceNames.push(state.lastStringValue); - return true - } - state.raise("Invalid named reference"); - } - return false - }; +} - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape - pp$1.regexp_eatCharacterEscape = function(state) { - return ( - this.regexp_eatControlEscape(state) || - this.regexp_eatCControlLetter(state) || - this.regexp_eatZero(state) || - this.regexp_eatHexEscapeSequence(state) || - this.regexp_eatRegExpUnicodeEscapeSequence(state, false) || - (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || - this.regexp_eatIdentityEscape(state) - ) - }; - pp$1.regexp_eatCControlLetter = function(state) { - var start = state.pos; - if (state.eat(0x63 /* c */)) { - if (this.regexp_eatControlLetter(state)) { - return true - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatZero = function(state) { - if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { - state.lastIntValue = 0; - state.advance(); - return true - } - return false - }; +exports["default"] = Plugin; - // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape - pp$1.regexp_eatControlEscape = function(state) { - var ch = state.current(); - if (ch === 0x74 /* t */) { - state.lastIntValue = 0x09; /* \t */ - state.advance(); - return true - } - if (ch === 0x6E /* n */) { - state.lastIntValue = 0x0A; /* \n */ - state.advance(); - return true - } - if (ch === 0x76 /* v */) { - state.lastIntValue = 0x0B; /* \v */ - state.advance(); - return true - } - if (ch === 0x66 /* f */) { - state.lastIntValue = 0x0C; /* \f */ - state.advance(); - return true - } - if (ch === 0x72 /* r */) { - state.lastIntValue = 0x0D; /* \r */ - state.advance(); - return true - } - return false - }; +/***/ }), - // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter - pp$1.regexp_eatControlLetter = function(state) { - var ch = state.current(); - if (isControlLetter(ch)) { - state.lastIntValue = ch % 0x20; - state.advance(); - return true - } - return false - }; - function isControlLetter(ch) { - return ( - (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || - (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) - ) - } +/***/ 30333: +/***/ ((__unused_webpack_module, exports) => { - // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence - pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) { - if ( forceU === void 0 ) forceU = false; +"use strict"; - var start = state.pos; - var switchU = forceU || state.switchU; - if (state.eat(0x75 /* u */)) { - if (this.regexp_eatFixedHexDigits(state, 4)) { - var lead = state.lastIntValue; - if (switchU && lead >= 0xD800 && lead <= 0xDBFF) { - var leadSurrogateEnd = state.pos; - if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { - var trail = state.lastIntValue; - if (trail >= 0xDC00 && trail <= 0xDFFF) { - state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; - return true - } - } - state.pos = leadSurrogateEnd; - state.lastIntValue = lead; - } - return true - } - if ( - switchU && - state.eat(0x7B /* { */) && - this.regexp_eatHexDigits(state) && - state.eat(0x7D /* } */) && - isValidUnicode(state.lastIntValue) - ) { - return true - } - if (switchU) { - state.raise("Invalid unicode escape"); - } - state.pos = start; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ConfigPrinter = exports.ChainFormatter = void 0; +const ChainFormatter = { + Programmatic: 0, + Config: 1 +}; +exports.ChainFormatter = ChainFormatter; +const Formatter = { + title(type, callerName, filepath) { + let title = ""; - return false - }; - function isValidUnicode(ch) { - return ch >= 0 && ch <= 0x10FFFF - } + if (type === ChainFormatter.Programmatic) { + title = "programmatic options"; - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape - pp$1.regexp_eatIdentityEscape = function(state) { - if (state.switchU) { - if (this.regexp_eatSyntaxCharacter(state)) { - return true - } - if (state.eat(0x2F /* / */)) { - state.lastIntValue = 0x2F; /* / */ - return true + if (callerName) { + title += " from " + callerName; } - return false + } else { + title = "config " + filepath; } - var ch = state.current(); - if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { - state.lastIntValue = ch; - state.advance(); - return true - } + return title; + }, - return false - }; + loc(index, envName) { + let loc = ""; - // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape - pp$1.regexp_eatDecimalEscape = function(state) { - state.lastIntValue = 0; - var ch = state.current(); - if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { - do { - state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); - state.advance(); - } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) - return true + if (index != null) { + loc += `.overrides[${index}]`; } - return false - }; - - // Return values used by character set parsing methods, needed to - // forbid negation of sets that can match strings. - var CharSetNone = 0; // Nothing parsed - var CharSetOk = 1; // Construct parsed, cannot contain strings - var CharSetString = 2; // Construct parsed, can contain strings - - // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape - pp$1.regexp_eatCharacterClassEscape = function(state) { - var ch = state.current(); - if (isCharacterClassEscape(ch)) { - state.lastIntValue = -1; - state.advance(); - return CharSetOk + if (envName != null) { + loc += `.env["${envName}"]`; } - var negate = false; - if ( - state.switchU && - this.options.ecmaVersion >= 9 && - ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */) - ) { - state.lastIntValue = -1; - state.advance(); - var result; - if ( - state.eat(0x7B /* { */) && - (result = this.regexp_eatUnicodePropertyValueExpression(state)) && - state.eat(0x7D /* } */) - ) { - if (negate && result === CharSetString) { state.raise("Invalid property name"); } - return result - } - state.raise("Invalid property name"); - } + return loc; + }, - return CharSetNone - }; + optionsAndDescriptors(opt) { + const content = Object.assign({}, opt.options); + delete content.overrides; + delete content.env; + const pluginDescriptors = [...opt.plugins()]; - function isCharacterClassEscape(ch) { - return ( - ch === 0x64 /* d */ || - ch === 0x44 /* D */ || - ch === 0x73 /* s */ || - ch === 0x53 /* S */ || - ch === 0x77 /* w */ || - ch === 0x57 /* W */ - ) - } + if (pluginDescriptors.length) { + content.plugins = pluginDescriptors.map(d => descriptorToConfig(d)); + } - // UnicodePropertyValueExpression :: - // UnicodePropertyName `=` UnicodePropertyValue - // LoneUnicodePropertyNameOrValue - pp$1.regexp_eatUnicodePropertyValueExpression = function(state) { - var start = state.pos; + const presetDescriptors = [...opt.presets()]; - // UnicodePropertyName `=` UnicodePropertyValue - if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { - var name = state.lastStringValue; - if (this.regexp_eatUnicodePropertyValue(state)) { - var value = state.lastStringValue; - this.regexp_validateUnicodePropertyNameAndValue(state, name, value); - return CharSetOk - } + if (presetDescriptors.length) { + content.presets = [...presetDescriptors].map(d => descriptorToConfig(d)); } - state.pos = start; - // LoneUnicodePropertyNameOrValue - if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { - var nameOrValue = state.lastStringValue; - return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue) - } - return CharSetNone - }; + return JSON.stringify(content, undefined, 2); + } - pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { - if (!hasOwn(state.unicodeProperties.nonBinary, name)) - { state.raise("Invalid property name"); } - if (!state.unicodeProperties.nonBinary[name].test(value)) - { state.raise("Invalid property value"); } - }; +}; - pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { - if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk } - if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString } - state.raise("Invalid property name"); - }; +function descriptorToConfig(d) { + var _d$file; - // UnicodePropertyName :: - // UnicodePropertyNameCharacters - pp$1.regexp_eatUnicodePropertyName = function(state) { - var ch = 0; - state.lastStringValue = ""; - while (isUnicodePropertyNameCharacter(ch = state.current())) { - state.lastStringValue += codePointToString(ch); - state.advance(); - } - return state.lastStringValue !== "" - }; + let name = (_d$file = d.file) == null ? void 0 : _d$file.request; - function isUnicodePropertyNameCharacter(ch) { - return isControlLetter(ch) || ch === 0x5F /* _ */ + if (name == null) { + if (typeof d.value === "object") { + name = d.value; + } else if (typeof d.value === "function") { + name = `[Function: ${d.value.toString().substr(0, 50)} ... ]`; + } } - // UnicodePropertyValue :: - // UnicodePropertyValueCharacters - pp$1.regexp_eatUnicodePropertyValue = function(state) { - var ch = 0; - state.lastStringValue = ""; - while (isUnicodePropertyValueCharacter(ch = state.current())) { - state.lastStringValue += codePointToString(ch); - state.advance(); - } - return state.lastStringValue !== "" - }; - function isUnicodePropertyValueCharacter(ch) { - return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) + if (name == null) { + name = "[Unknown]"; } - // LoneUnicodePropertyNameOrValue :: - // UnicodePropertyValueCharacters - pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { - return this.regexp_eatUnicodePropertyValue(state) - }; + if (d.options === undefined) { + return name; + } else if (d.name == null) { + return [name, d.options]; + } else { + return [name, d.options, d.name]; + } +} - // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass - pp$1.regexp_eatCharacterClass = function(state) { - if (state.eat(0x5B /* [ */)) { - var negate = state.eat(0x5E /* ^ */); - var result = this.regexp_classContents(state); - if (!state.eat(0x5D /* ] */)) - { state.raise("Unterminated character class"); } - if (negate && result === CharSetString) - { state.raise("Negated character class may contain strings"); } - return true - } - return false - }; +class ConfigPrinter { + constructor() { + this._stack = []; + } - // https://tc39.es/ecma262/#prod-ClassContents - // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges - pp$1.regexp_classContents = function(state) { - if (state.current() === 0x5D /* ] */) { return CharSetOk } - if (state.switchV) { return this.regexp_classSetExpression(state) } - this.regexp_nonEmptyClassRanges(state); - return CharSetOk - }; + configure(enabled, type, { + callerName, + filepath + }) { + if (!enabled) return () => {}; + return (content, index, envName) => { + this._stack.push({ + type, + callerName, + filepath, + content, + index, + envName + }); + }; + } - // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges - // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash - pp$1.regexp_nonEmptyClassRanges = function(state) { - while (this.regexp_eatClassAtom(state)) { - var left = state.lastIntValue; - if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { - var right = state.lastIntValue; - if (state.switchU && (left === -1 || right === -1)) { - state.raise("Invalid character class"); - } - if (left !== -1 && right !== -1 && left > right) { - state.raise("Range out of order in character class"); - } - } - } - }; + static format(config) { + let title = Formatter.title(config.type, config.callerName, config.filepath); + const loc = Formatter.loc(config.index, config.envName); + if (loc) title += ` ${loc}`; + const content = Formatter.optionsAndDescriptors(config.content); + return `${title}\n${content}`; + } - // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom - // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash - pp$1.regexp_eatClassAtom = function(state) { - var start = state.pos; + output() { + if (this._stack.length === 0) return ""; + return this._stack.map(s => ConfigPrinter.format(s)).join("\n\n"); + } - if (state.eat(0x5C /* \ */)) { - if (this.regexp_eatClassEscape(state)) { - return true - } - if (state.switchU) { - // Make the same message as V8. - var ch$1 = state.current(); - if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { - state.raise("Invalid class escape"); - } - state.raise("Invalid escape"); - } - state.pos = start; - } +} - var ch = state.current(); - if (ch !== 0x5D /* ] */) { - state.lastIntValue = ch; - state.advance(); - return true - } +exports.ConfigPrinter = ConfigPrinter; - return false - }; +/***/ }), - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape - pp$1.regexp_eatClassEscape = function(state) { - var start = state.pos; +/***/ 54493: +/***/ ((__unused_webpack_module, exports) => { - if (state.eat(0x62 /* b */)) { - state.lastIntValue = 0x08; /* <BS> */ - return true - } +"use strict"; - if (state.switchU && state.eat(0x2D /* - */)) { - state.lastIntValue = 0x2D; /* - */ - return true - } - if (!state.switchU && state.eat(0x63 /* c */)) { - if (this.regexp_eatClassControlLetter(state)) { - return true - } - state.pos = start; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.mergeOptions = mergeOptions; +exports.isIterableIterator = isIterableIterator; + +function mergeOptions(target, source) { + for (const k of Object.keys(source)) { + if (k === "parserOpts" && source.parserOpts) { + const parserOpts = source.parserOpts; + const targetObj = target.parserOpts = target.parserOpts || {}; + mergeDefaultFields(targetObj, parserOpts); + } else if (k === "generatorOpts" && source.generatorOpts) { + const generatorOpts = source.generatorOpts; + const targetObj = target.generatorOpts = target.generatorOpts || {}; + mergeDefaultFields(targetObj, generatorOpts); + } else { + const val = source[k]; + if (val !== undefined) target[k] = val; } + } +} - return ( - this.regexp_eatCharacterClassEscape(state) || - this.regexp_eatCharacterEscape(state) - ) - }; +function mergeDefaultFields(target, source) { + for (const k of Object.keys(source)) { + const val = source[k]; + if (val !== undefined) target[k] = val; + } +} - // https://tc39.es/ecma262/#prod-ClassSetExpression - // https://tc39.es/ecma262/#prod-ClassUnion - // https://tc39.es/ecma262/#prod-ClassIntersection - // https://tc39.es/ecma262/#prod-ClassSubtraction - pp$1.regexp_classSetExpression = function(state) { - var result = CharSetOk, subResult; - if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) { - if (subResult === CharSetString) { result = CharSetString; } - // https://tc39.es/ecma262/#prod-ClassIntersection - var start = state.pos; - while (state.eatChars([0x26, 0x26] /* && */)) { - if ( - state.current() !== 0x26 /* & */ && - (subResult = this.regexp_eatClassSetOperand(state)) - ) { - if (subResult !== CharSetString) { result = CharSetOk; } - continue - } - state.raise("Invalid character in character class"); - } - if (start !== state.pos) { return result } - // https://tc39.es/ecma262/#prod-ClassSubtraction - while (state.eatChars([0x2D, 0x2D] /* -- */)) { - if (this.regexp_eatClassSetOperand(state)) { continue } - state.raise("Invalid character in character class"); - } - if (start !== state.pos) { return result } - } else { - state.raise("Invalid character in character class"); - } - // https://tc39.es/ecma262/#prod-ClassUnion - for (;;) { - if (this.regexp_eatClassSetRange(state)) { continue } - subResult = this.regexp_eatClassSetOperand(state); - if (!subResult) { return result } - if (subResult === CharSetString) { result = CharSetString; } - } - }; +function isIterableIterator(value) { + return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function"; +} - // https://tc39.es/ecma262/#prod-ClassSetRange - pp$1.regexp_eatClassSetRange = function(state) { - var start = state.pos; - if (this.regexp_eatClassSetCharacter(state)) { - var left = state.lastIntValue; - if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) { - var right = state.lastIntValue; - if (left !== -1 && right !== -1 && left > right) { - state.raise("Range out of order in character class"); - } - return true - } - state.pos = start; - } - return false - }; +/***/ }), - // https://tc39.es/ecma262/#prod-ClassSetOperand - pp$1.regexp_eatClassSetOperand = function(state) { - if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk } - return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state) - }; +/***/ 28: +/***/ ((__unused_webpack_module, exports) => { - // https://tc39.es/ecma262/#prod-NestedClass - pp$1.regexp_eatNestedClass = function(state) { - var start = state.pos; - if (state.eat(0x5B /* [ */)) { - var negate = state.eat(0x5E /* ^ */); - var result = this.regexp_classContents(state); - if (state.eat(0x5D /* ] */)) { - if (negate && result === CharSetString) { - state.raise("Negated character class may contain strings"); - } - return result - } - state.pos = start; - } - if (state.eat(0x5C /* \ */)) { - var result$1 = this.regexp_eatCharacterClassEscape(state); - if (result$1) { - return result$1 - } - state.pos = start; - } - return null - }; +"use strict"; - // https://tc39.es/ecma262/#prod-ClassStringDisjunction - pp$1.regexp_eatClassStringDisjunction = function(state) { - var start = state.pos; - if (state.eatChars([0x5C, 0x71] /* \q */)) { - if (state.eat(0x7B /* { */)) { - var result = this.regexp_classStringDisjunctionContents(state); - if (state.eat(0x7D /* } */)) { - return result - } - } else { - // Make the same message as V8. - state.raise("Invalid escape"); - } - state.pos = start; - } - return null - }; - // https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents - pp$1.regexp_classStringDisjunctionContents = function(state) { - var result = this.regexp_classString(state); - while (state.eat(0x7C /* | */)) { - if (this.regexp_classString(state) === CharSetString) { result = CharSetString; } - } - return result - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.msg = msg; +exports.access = access; +exports.assertRootMode = assertRootMode; +exports.assertSourceMaps = assertSourceMaps; +exports.assertCompact = assertCompact; +exports.assertSourceType = assertSourceType; +exports.assertCallerMetadata = assertCallerMetadata; +exports.assertInputSourceMap = assertInputSourceMap; +exports.assertString = assertString; +exports.assertFunction = assertFunction; +exports.assertBoolean = assertBoolean; +exports.assertObject = assertObject; +exports.assertArray = assertArray; +exports.assertIgnoreList = assertIgnoreList; +exports.assertConfigApplicableTest = assertConfigApplicableTest; +exports.assertConfigFileSearch = assertConfigFileSearch; +exports.assertBabelrcSearch = assertBabelrcSearch; +exports.assertPluginList = assertPluginList; + +function msg(loc) { + switch (loc.type) { + case "root": + return ``; + + case "env": + return `${msg(loc.parent)}.env["${loc.name}"]`; + + case "overrides": + return `${msg(loc.parent)}.overrides[${loc.index}]`; + + case "option": + return `${msg(loc.parent)}.${loc.name}`; + + case "access": + return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`; - // https://tc39.es/ecma262/#prod-ClassString - // https://tc39.es/ecma262/#prod-NonEmptyClassString - pp$1.regexp_classString = function(state) { - var count = 0; - while (this.regexp_eatClassSetCharacter(state)) { count++; } - return count === 1 ? CharSetOk : CharSetString - }; + default: + throw new Error(`Assertion failure: Unknown type ${loc.type}`); + } +} - // https://tc39.es/ecma262/#prod-ClassSetCharacter - pp$1.regexp_eatClassSetCharacter = function(state) { - var start = state.pos; - if (state.eat(0x5C /* \ */)) { - if ( - this.regexp_eatCharacterEscape(state) || - this.regexp_eatClassSetReservedPunctuator(state) - ) { - return true - } - if (state.eat(0x62 /* b */)) { - state.lastIntValue = 0x08; /* <BS> */ - return true - } - state.pos = start; - return false - } - var ch = state.current(); - if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false } - if (isClassSetSyntaxCharacter(ch)) { return false } - state.advance(); - state.lastIntValue = ch; - return true +function access(loc, name) { + return { + type: "access", + name, + parent: loc }; +} - // https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator - function isClassSetReservedDoublePunctuatorCharacter(ch) { - return ( - ch === 0x21 /* ! */ || - ch >= 0x23 /* # */ && ch <= 0x26 /* & */ || - ch >= 0x2A /* * */ && ch <= 0x2C /* , */ || - ch === 0x2E /* . */ || - ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ || - ch === 0x5E /* ^ */ || - ch === 0x60 /* ` */ || - ch === 0x7E /* ~ */ - ) +function assertRootMode(loc, value) { + if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") { + throw new Error(`${msg(loc)} must be a "root", "upward", "upward-optional" or undefined`); } - // https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter - function isClassSetSyntaxCharacter(ch) { - return ( - ch === 0x28 /* ( */ || - ch === 0x29 /* ) */ || - ch === 0x2D /* - */ || - ch === 0x2F /* / */ || - ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ || - ch >= 0x7B /* { */ && ch <= 0x7D /* } */ - ) + return value; +} + +function assertSourceMaps(loc, value) { + if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") { + throw new Error(`${msg(loc)} must be a boolean, "inline", "both", or undefined`); } - // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator - pp$1.regexp_eatClassSetReservedPunctuator = function(state) { - var ch = state.current(); - if (isClassSetReservedPunctuator(ch)) { - state.lastIntValue = ch; - state.advance(); - return true - } - return false - }; + return value; +} - // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator - function isClassSetReservedPunctuator(ch) { - return ( - ch === 0x21 /* ! */ || - ch === 0x23 /* # */ || - ch === 0x25 /* % */ || - ch === 0x26 /* & */ || - ch === 0x2C /* , */ || - ch === 0x2D /* - */ || - ch >= 0x3A /* : */ && ch <= 0x3E /* > */ || - ch === 0x40 /* @ */ || - ch === 0x60 /* ` */ || - ch === 0x7E /* ~ */ - ) +function assertCompact(loc, value) { + if (value !== undefined && typeof value !== "boolean" && value !== "auto") { + throw new Error(`${msg(loc)} must be a boolean, "auto", or undefined`); } - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter - pp$1.regexp_eatClassControlLetter = function(state) { - var ch = state.current(); - if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { - state.lastIntValue = ch % 0x20; - state.advance(); - return true - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence - pp$1.regexp_eatHexEscapeSequence = function(state) { - var start = state.pos; - if (state.eat(0x78 /* x */)) { - if (this.regexp_eatFixedHexDigits(state, 2)) { - return true - } - if (state.switchU) { - state.raise("Invalid escape"); - } - state.pos = start; - } - return false - }; + return value; +} - // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits - pp$1.regexp_eatDecimalDigits = function(state) { - var start = state.pos; - var ch = 0; - state.lastIntValue = 0; - while (isDecimalDigit(ch = state.current())) { - state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); - state.advance(); - } - return state.pos !== start - }; - function isDecimalDigit(ch) { - return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ +function assertSourceType(loc, value) { + if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") { + throw new Error(`${msg(loc)} must be "module", "script", "unambiguous", or undefined`); } - // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits - pp$1.regexp_eatHexDigits = function(state) { - var start = state.pos; - var ch = 0; - state.lastIntValue = 0; - while (isHexDigit(ch = state.current())) { - state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); - state.advance(); - } - return state.pos !== start - }; - function isHexDigit(ch) { - return ( - (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || - (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || - (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) - ) - } - function hexToInt(ch) { - if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { - return 10 + (ch - 0x41 /* A */) - } - if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { - return 10 + (ch - 0x61 /* a */) - } - return ch - 0x30 /* 0 */ - } + return value; +} - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence - // Allows only 0-377(octal) i.e. 0-255(decimal). - pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) { - if (this.regexp_eatOctalDigit(state)) { - var n1 = state.lastIntValue; - if (this.regexp_eatOctalDigit(state)) { - var n2 = state.lastIntValue; - if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { - state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; - } else { - state.lastIntValue = n1 * 8 + n2; - } - } else { - state.lastIntValue = n1; - } - return true - } - return false - }; +function assertCallerMetadata(loc, value) { + const obj = assertObject(loc, value); - // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit - pp$1.regexp_eatOctalDigit = function(state) { - var ch = state.current(); - if (isOctalDigit(ch)) { - state.lastIntValue = ch - 0x30; /* 0 */ - state.advance(); - return true + if (obj) { + if (typeof obj["name"] !== "string") { + throw new Error(`${msg(loc)} set but does not contain "name" property string`); } - state.lastIntValue = 0; - return false - }; - function isOctalDigit(ch) { - return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits - // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit - // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence - pp$1.regexp_eatFixedHexDigits = function(state, length) { - var start = state.pos; - state.lastIntValue = 0; - for (var i = 0; i < length; ++i) { - var ch = state.current(); - if (!isHexDigit(ch)) { - state.pos = start; - return false + + for (const prop of Object.keys(obj)) { + const propLoc = access(loc, prop); + const value = obj[prop]; + + if (value != null && typeof value !== "boolean" && typeof value !== "string" && typeof value !== "number") { + throw new Error(`${msg(propLoc)} must be null, undefined, a boolean, a string, or a number.`); } - state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); - state.advance(); } - return true - }; - - // Object type used to represent tokens. Note that normally, tokens - // simply exist as properties on the parser object. This is only - // used for the onToken callback and the external tokenizer. - - var Token = function Token(p) { - this.type = p.type; - this.value = p.value; - this.start = p.start; - this.end = p.end; - if (p.options.locations) - { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } - if (p.options.ranges) - { this.range = [p.start, p.end]; } - }; + } - // ## Tokenizer + return value; +} - var pp = Parser.prototype; +function assertInputSourceMap(loc, value) { + if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) { + throw new Error(`${msg(loc)} must be a boolean, object, or undefined`); + } - // Move to the next token + return value; +} - pp.next = function(ignoreEscapeSequenceInKeyword) { - if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) - { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } - if (this.options.onToken) - { this.options.onToken(new Token(this)); } +function assertString(loc, value) { + if (value !== undefined && typeof value !== "string") { + throw new Error(`${msg(loc)} must be a string, or undefined`); + } - this.lastTokEnd = this.end; - this.lastTokStart = this.start; - this.lastTokEndLoc = this.endLoc; - this.lastTokStartLoc = this.startLoc; - this.nextToken(); - }; + return value; +} - pp.getToken = function() { - this.next(); - return new Token(this) - }; +function assertFunction(loc, value) { + if (value !== undefined && typeof value !== "function") { + throw new Error(`${msg(loc)} must be a function, or undefined`); + } - // If we're in an ES6 environment, make parsers iterable - if (typeof Symbol !== "undefined") - { pp[Symbol.iterator] = function() { - var this$1$1 = this; + return value; +} - return { - next: function () { - var token = this$1$1.getToken(); - return { - done: token.type === types$1.eof, - value: token - } - } - } - }; } +function assertBoolean(loc, value) { + if (value !== undefined && typeof value !== "boolean") { + throw new Error(`${msg(loc)} must be a boolean, or undefined`); + } - // Toggle strict mode. Re-reads the next number or string to please - // pedantic tests (`"use strict"; 010;` should fail). + return value; +} - // Read a single token, updating the parser object's token-related - // properties. +function assertObject(loc, value) { + if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) { + throw new Error(`${msg(loc)} must be an object, or undefined`); + } - pp.nextToken = function() { - var curContext = this.curContext(); - if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } + return value; +} - this.start = this.pos; - if (this.options.locations) { this.startLoc = this.curPosition(); } - if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) } +function assertArray(loc, value) { + if (value != null && !Array.isArray(value)) { + throw new Error(`${msg(loc)} must be an array, or undefined`); + } - if (curContext.override) { return curContext.override(this) } - else { this.readToken(this.fullCharCodeAtPos()); } - }; + return value; +} - pp.readToken = function(code) { - // Identifier or keyword. '\uXXXX' sequences are allowed in - // identifiers, so '\' also dispatches to that. - if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) - { return this.readWord() } +function assertIgnoreList(loc, value) { + const arr = assertArray(loc, value); - return this.getTokenFromCode(code) - }; + if (arr) { + arr.forEach((item, i) => assertIgnoreItem(access(loc, i), item)); + } - pp.fullCharCodeAtPos = function() { - var code = this.input.charCodeAt(this.pos); - if (code <= 0xd7ff || code >= 0xdc00) { return code } - var next = this.input.charCodeAt(this.pos + 1); - return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00 - }; + return arr; +} - pp.skipBlockComment = function() { - var startLoc = this.options.onComment && this.curPosition(); - var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); - if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } - this.pos = end + 2; - if (this.options.locations) { - for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { - ++this.curLine; - pos = this.lineStart = nextBreak; - } - } - if (this.options.onComment) - { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, - startLoc, this.curPosition()); } - }; +function assertIgnoreItem(loc, value) { + if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) { + throw new Error(`${msg(loc)} must be an array of string/Function/RegExp values, or undefined`); + } - pp.skipLineComment = function(startSkip) { - var start = this.pos; - var startLoc = this.options.onComment && this.curPosition(); - var ch = this.input.charCodeAt(this.pos += startSkip); - while (this.pos < this.input.length && !isNewLine(ch)) { - ch = this.input.charCodeAt(++this.pos); - } - if (this.options.onComment) - { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, - startLoc, this.curPosition()); } - }; + return value; +} - // Called at the start of the parse and after every token. Skips - // whitespace and comments, and. +function assertConfigApplicableTest(loc, value) { + if (value === undefined) return value; - pp.skipSpace = function() { - loop: while (this.pos < this.input.length) { - var ch = this.input.charCodeAt(this.pos); - switch (ch) { - case 32: case 160: // ' ' - ++this.pos; - break - case 13: - if (this.input.charCodeAt(this.pos + 1) === 10) { - ++this.pos; - } - case 10: case 8232: case 8233: - ++this.pos; - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - break - case 47: // '/' - switch (this.input.charCodeAt(this.pos + 1)) { - case 42: // '*' - this.skipBlockComment(); - break - case 47: - this.skipLineComment(2); - break - default: - break loop - } - break - default: - if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { - ++this.pos; - } else { - break loop - } + if (Array.isArray(value)) { + value.forEach((item, i) => { + if (!checkValidTest(item)) { + throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); } - } - }; + }); + } else if (!checkValidTest(value)) { + throw new Error(`${msg(loc)} must be a string/Function/RegExp, or an array of those`); + } - // Called at the end of every token. Sets `end`, `val`, and - // maintains `context` and `exprAllowed`, and skips the space after - // the token, so that the next one's `start` will point at the - // right position. + return value; +} - pp.finishToken = function(type, val) { - this.end = this.pos; - if (this.options.locations) { this.endLoc = this.curPosition(); } - var prevType = this.type; - this.type = type; - this.value = val; +function checkValidTest(value) { + return typeof value === "string" || typeof value === "function" || value instanceof RegExp; +} - this.updateContext(prevType); - }; +function assertConfigFileSearch(loc, value) { + if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") { + throw new Error(`${msg(loc)} must be a undefined, a boolean, a string, ` + `got ${JSON.stringify(value)}`); + } - // ### Token reading + return value; +} - // This is the function that is called to fetch the next token. It - // is somewhat obscure, because it works in character codes rather - // than characters, and because operator parsing has been inlined - // into it. - // - // All in the name of speed. - // - pp.readToken_dot = function() { - var next = this.input.charCodeAt(this.pos + 1); - if (next >= 48 && next <= 57) { return this.readNumber(true) } - var next2 = this.input.charCodeAt(this.pos + 2); - if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' - this.pos += 3; - return this.finishToken(types$1.ellipsis) - } else { - ++this.pos; - return this.finishToken(types$1.dot) - } - }; +function assertBabelrcSearch(loc, value) { + if (value === undefined || typeof value === "boolean") return value; - pp.readToken_slash = function() { // '/' - var next = this.input.charCodeAt(this.pos + 1); - if (this.exprAllowed) { ++this.pos; return this.readRegexp() } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.slash, 1) - }; + if (Array.isArray(value)) { + value.forEach((item, i) => { + if (!checkValidTest(item)) { + throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`); + } + }); + } else if (!checkValidTest(value)) { + throw new Error(`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` + `or an array of those, got ${JSON.stringify(value)}`); + } - pp.readToken_mult_modulo_exp = function(code) { // '%*' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - var tokentype = code === 42 ? types$1.star : types$1.modulo; + return value; +} - // exponentiation operator ** and **= - if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { - ++size; - tokentype = types$1.starstar; - next = this.input.charCodeAt(this.pos + 2); - } +function assertPluginList(loc, value) { + const arr = assertArray(loc, value); - if (next === 61) { return this.finishOp(types$1.assign, size + 1) } - return this.finishOp(tokentype, size) - }; + if (arr) { + arr.forEach((item, i) => assertPluginItem(access(loc, i), item)); + } - pp.readToken_pipe_amp = function(code) { // '|&' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (this.options.ecmaVersion >= 12) { - var next2 = this.input.charCodeAt(this.pos + 2); - if (next2 === 61) { return this.finishOp(types$1.assign, 3) } - } - return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2) - } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1) - }; + return arr; +} - pp.readToken_caret = function() { // '^' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.bitwiseXOR, 1) - }; +function assertPluginItem(loc, value) { + if (Array.isArray(value)) { + if (value.length === 0) { + throw new Error(`${msg(loc)} must include an object`); + } - pp.readToken_plus_min = function(code) { // '+-' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && - (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { - // A `-->` line comment - this.skipLineComment(3); - this.skipSpace(); - return this.nextToken() - } - return this.finishOp(types$1.incDec, 2) + if (value.length > 3) { + throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`); } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.plusMin, 1) - }; - pp.readToken_lt_gt = function(code) { // '<>' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; - if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) } - return this.finishOp(types$1.bitShift, size) - } - if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && - this.input.charCodeAt(this.pos + 3) === 45) { - // `<!--`, an XML-style comment that should be interpreted as a line comment - this.skipLineComment(4); - this.skipSpace(); - return this.nextToken() - } - if (next === 61) { size = 2; } - return this.finishOp(types$1.relational, size) - }; + assertPluginTarget(access(loc, 0), value[0]); - pp.readToken_eq_excl = function(code) { // '=!' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) } - if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>' - this.pos += 2; - return this.finishToken(types$1.arrow) - } - return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1) - }; + if (value.length > 1) { + const opts = value[1]; - pp.readToken_question = function() { // '?' - var ecmaVersion = this.options.ecmaVersion; - if (ecmaVersion >= 11) { - var next = this.input.charCodeAt(this.pos + 1); - if (next === 46) { - var next2 = this.input.charCodeAt(this.pos + 2); - if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) } - } - if (next === 63) { - if (ecmaVersion >= 12) { - var next2$1 = this.input.charCodeAt(this.pos + 2); - if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) } - } - return this.finishOp(types$1.coalesce, 2) + if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) { + throw new Error(`${msg(access(loc, 1))} must be an object, false, or undefined`); } } - return this.finishOp(types$1.question, 1) - }; - pp.readToken_numberSign = function() { // '#' - var ecmaVersion = this.options.ecmaVersion; - var code = 35; // '#' - if (ecmaVersion >= 13) { - ++this.pos; - code = this.fullCharCodeAtPos(); - if (isIdentifierStart(code, true) || code === 92 /* '\' */) { - return this.finishToken(types$1.privateId, this.readWord1()) + if (value.length === 3) { + const name = value[2]; + + if (name !== undefined && typeof name !== "string") { + throw new Error(`${msg(access(loc, 2))} must be a string, or undefined`); } } + } else { + assertPluginTarget(loc, value); + } - this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); - }; + return value; +} - pp.getTokenFromCode = function(code) { - switch (code) { - // The interpretation of a dot depends on whether it is followed - // by a digit or another two dots. - case 46: // '.' - return this.readToken_dot() +function assertPluginTarget(loc, value) { + if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") { + throw new Error(`${msg(loc)} must be a string, object, function`); + } - // Punctuation tokens. - case 40: ++this.pos; return this.finishToken(types$1.parenL) - case 41: ++this.pos; return this.finishToken(types$1.parenR) - case 59: ++this.pos; return this.finishToken(types$1.semi) - case 44: ++this.pos; return this.finishToken(types$1.comma) - case 91: ++this.pos; return this.finishToken(types$1.bracketL) - case 93: ++this.pos; return this.finishToken(types$1.bracketR) - case 123: ++this.pos; return this.finishToken(types$1.braceL) - case 125: ++this.pos; return this.finishToken(types$1.braceR) - case 58: ++this.pos; return this.finishToken(types$1.colon) + return value; +} - case 96: // '`' - if (this.options.ecmaVersion < 6) { break } - ++this.pos; - return this.finishToken(types$1.backQuote) +/***/ }), - case 48: // '0' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number - if (this.options.ecmaVersion >= 6) { - if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number - if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number - } +/***/ 44743: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Anything else beginning with a digit is an integer, octal - // number, or float. - case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 - return this.readNumber(false) +"use strict"; - // Quotes produce strings. - case 34: case 39: // '"', "'" - return this.readString(code) - // Operators are parsed inline in tiny state machines. '=' (61) is - // often referred to. `finishOp` simply skips the amount of - // characters it is given as second argument, and returns a token - // of the type given by its first argument. - case 47: // '/' - return this.readToken_slash() +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.validate = validate; +exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs; - case 37: case 42: // '%*' - return this.readToken_mult_modulo_exp(code) +var _plugin = _interopRequireDefault(__nccwpck_require__(68618)); - case 124: case 38: // '|&' - return this.readToken_pipe_amp(code) +var _removed = _interopRequireDefault(__nccwpck_require__(87269)); - case 94: // '^' - return this.readToken_caret() +var _optionAssertions = __nccwpck_require__(28); - case 43: case 45: // '+-' - return this.readToken_plus_min(code) +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - case 60: case 62: // '<>' - return this.readToken_lt_gt(code) +const ROOT_VALIDATORS = { + cwd: _optionAssertions.assertString, + root: _optionAssertions.assertString, + rootMode: _optionAssertions.assertRootMode, + configFile: _optionAssertions.assertConfigFileSearch, + caller: _optionAssertions.assertCallerMetadata, + filename: _optionAssertions.assertString, + filenameRelative: _optionAssertions.assertString, + code: _optionAssertions.assertBoolean, + ast: _optionAssertions.assertBoolean, + cloneInputAst: _optionAssertions.assertBoolean, + envName: _optionAssertions.assertString +}; +const BABELRC_VALIDATORS = { + babelrc: _optionAssertions.assertBoolean, + babelrcRoots: _optionAssertions.assertBabelrcSearch +}; +const NONPRESET_VALIDATORS = { + extends: _optionAssertions.assertString, + ignore: _optionAssertions.assertIgnoreList, + only: _optionAssertions.assertIgnoreList +}; +const COMMON_VALIDATORS = { + inputSourceMap: _optionAssertions.assertInputSourceMap, + presets: _optionAssertions.assertPluginList, + plugins: _optionAssertions.assertPluginList, + passPerPreset: _optionAssertions.assertBoolean, + env: assertEnvSet, + overrides: assertOverridesList, + test: _optionAssertions.assertConfigApplicableTest, + include: _optionAssertions.assertConfigApplicableTest, + exclude: _optionAssertions.assertConfigApplicableTest, + retainLines: _optionAssertions.assertBoolean, + comments: _optionAssertions.assertBoolean, + shouldPrintComment: _optionAssertions.assertFunction, + compact: _optionAssertions.assertCompact, + minified: _optionAssertions.assertBoolean, + auxiliaryCommentBefore: _optionAssertions.assertString, + auxiliaryCommentAfter: _optionAssertions.assertString, + sourceType: _optionAssertions.assertSourceType, + wrapPluginVisitorMethod: _optionAssertions.assertFunction, + highlightCode: _optionAssertions.assertBoolean, + sourceMaps: _optionAssertions.assertSourceMaps, + sourceMap: _optionAssertions.assertSourceMaps, + sourceFileName: _optionAssertions.assertString, + sourceRoot: _optionAssertions.assertString, + getModuleId: _optionAssertions.assertFunction, + moduleRoot: _optionAssertions.assertString, + moduleIds: _optionAssertions.assertBoolean, + moduleId: _optionAssertions.assertString, + parserOpts: _optionAssertions.assertObject, + generatorOpts: _optionAssertions.assertObject +}; - case 61: case 33: // '=!' - return this.readToken_eq_excl(code) +function getSource(loc) { + return loc.type === "root" ? loc.source : getSource(loc.parent); +} - case 63: // '?' - return this.readToken_question() +function validate(type, opts) { + return validateNested({ + type: "root", + source: type + }, opts); +} - case 126: // '~' - return this.finishOp(types$1.prefix, 1) +function validateNested(loc, opts) { + const type = getSource(loc); + assertNoDuplicateSourcemap(opts); + Object.keys(opts).forEach(key => { + const optLoc = { + type: "option", + name: key, + parent: loc + }; - case 35: // '#' - return this.readToken_numberSign() + if (type === "preset" && NONPRESET_VALIDATORS[key]) { + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`); } - this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); - }; - - pp.finishOp = function(type, size) { - var str = this.input.slice(this.pos, this.pos + size); - this.pos += size; - return this.finishToken(type, str) - }; - - pp.readRegexp = function() { - var escaped, inClass, start = this.pos; - for (;;) { - if (this.pos >= this.input.length) { this.raise(start, "Unterminated regular expression"); } - var ch = this.input.charAt(this.pos); - if (lineBreak.test(ch)) { this.raise(start, "Unterminated regular expression"); } - if (!escaped) { - if (ch === "[") { inClass = true; } - else if (ch === "]" && inClass) { inClass = false; } - else if (ch === "/" && !inClass) { break } - escaped = ch === "\\"; - } else { escaped = false; } - ++this.pos; - } - var pattern = this.input.slice(start, this.pos); - ++this.pos; - var flagsStart = this.pos; - var flags = this.readWord1(); - if (this.containsEsc) { this.unexpected(flagsStart); } - - // Validate pattern - var state = this.regexpState || (this.regexpState = new RegExpValidationState(this)); - state.reset(start, pattern, flags); - this.validateRegExpFlags(state); - this.validateRegExpPattern(state); - - // Create Literal#value property value. - var value = null; - try { - value = new RegExp(pattern, flags); - } catch (e) { - // ESTree requires null if it failed to instantiate RegExp object. - // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral + if (type !== "arguments" && ROOT_VALIDATORS[key]) { + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`); } - return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value}) - }; + if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) { + if (type === "babelrcfile" || type === "extendsfile") { + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`); + } - // Read an integer in the given radix. Return null if zero digits - // were read, the integer value otherwise. When `len` is given, this - // will return `null` unless the integer has exactly `len` digits. + throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`); + } - pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) { - // `len` is used for character escape sequences. In that case, disallow separators. - var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined; + const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError; + validator(optLoc, opts[key]); + }); + return opts; +} - // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b) - // and isn't fraction part nor exponent part. In that case, if the first digit - // is zero then disallow separators. - var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48; +function throwUnknownError(loc) { + const key = loc.name; - var start = this.pos, total = 0, lastCode = 0; - for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) { - var code = this.input.charCodeAt(this.pos), val = (void 0); + if (_removed.default[key]) { + const { + message, + version = 5 + } = _removed.default[key]; + throw new Error(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`); + } else { + const unknownOptErr = new Error(`Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`); + unknownOptErr.code = "BABEL_UNKNOWN_OPTION"; + throw unknownOptErr; + } +} - if (allowSeparators && code === 95) { - if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"); } - if (lastCode === 95) { this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"); } - if (i === 0) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"); } - lastCode = code; - continue - } +function has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} - if (code >= 97) { val = code - 97 + 10; } // a - else if (code >= 65) { val = code - 65 + 10; } // A - else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9 - else { val = Infinity; } - if (val >= radix) { break } - lastCode = code; - total = total * radix + val; - } +function assertNoDuplicateSourcemap(opts) { + if (has(opts, "sourceMap") && has(opts, "sourceMaps")) { + throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both"); + } +} - if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"); } - if (this.pos === start || len != null && this.pos - start !== len) { return null } +function assertEnvSet(loc, value) { + if (loc.parent.type === "env") { + throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`); + } - return total - }; + const parent = loc.parent; + const obj = (0, _optionAssertions.assertObject)(loc, value); - function stringToNumber(str, isLegacyOctalNumericLiteral) { - if (isLegacyOctalNumericLiteral) { - return parseInt(str, 8) + if (obj) { + for (const envName of Object.keys(obj)) { + const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]); + if (!env) continue; + const envLoc = { + type: "env", + name: envName, + parent + }; + validateNested(envLoc, env); } - - // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value. - return parseFloat(str.replace(/_/g, "")) } - function stringToBigInt(str) { - if (typeof BigInt !== "function") { - return null - } + return obj; +} - // `BigInt(value)` throws syntax error if the string contains numeric separators. - return BigInt(str.replace(/_/g, "")) +function assertOverridesList(loc, value) { + if (loc.parent.type === "env") { + throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`); } - pp.readRadixNumber = function(radix) { - var start = this.pos; - this.pos += 2; // 0x - var val = this.readInt(radix); - if (val == null) { this.raise(this.start + 2, "Expected number in radix " + radix); } - if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) { - val = stringToBigInt(this.input.slice(start, this.pos)); - ++this.pos; - } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - return this.finishToken(types$1.num, val) - }; + if (loc.parent.type === "overrides") { + throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`); + } - // Read an integer, octal integer, or floating-point number. - - pp.readNumber = function(startsWithDot) { - var start = this.pos; - if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, "Invalid number"); } - var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48; - if (octal && this.strict) { this.raise(start, "Invalid number"); } - var next = this.input.charCodeAt(this.pos); - if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) { - var val$1 = stringToBigInt(this.input.slice(start, this.pos)); - ++this.pos; - if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - return this.finishToken(types$1.num, val$1) - } - if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; } - if (next === 46 && !octal) { // '.' - ++this.pos; - this.readInt(10); - next = this.input.charCodeAt(this.pos); - } - if ((next === 69 || next === 101) && !octal) { // 'eE' - next = this.input.charCodeAt(++this.pos); - if (next === 43 || next === 45) { ++this.pos; } // '+-' - if (this.readInt(10) === null) { this.raise(start, "Invalid number"); } + const parent = loc.parent; + const arr = (0, _optionAssertions.assertArray)(loc, value); + + if (arr) { + for (const [index, item] of arr.entries()) { + const objLoc = (0, _optionAssertions.access)(loc, index); + const env = (0, _optionAssertions.assertObject)(objLoc, item); + if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`); + const overridesLoc = { + type: "overrides", + index, + parent + }; + validateNested(overridesLoc, env); } - if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } + } - var val = stringToNumber(this.input.slice(start, this.pos), octal); - return this.finishToken(types$1.num, val) - }; + return arr; +} - // Read a string value, interpreting backslash-escapes. +function checkNoUnwrappedItemOptionPairs(items, index, type, e) { + if (index === 0) return; + const lastItem = items[index - 1]; + const thisItem = items[index]; - pp.readCodePoint = function() { - var ch = this.input.charCodeAt(this.pos), code; + if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") { + e.message += `\n- Maybe you meant to use\n` + `"${type}": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`; + } +} - if (ch === 123) { // '{' - if (this.options.ecmaVersion < 6) { this.unexpected(); } - var codePos = ++this.pos; - code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos); - ++this.pos; - if (code > 0x10FFFF) { this.invalidStringToken(codePos, "Code point out of bounds"); } - } else { - code = this.readHexChar(4); - } - return code - }; +/***/ }), - pp.readString = function(quote) { - var out = "", chunkStart = ++this.pos; - for (;;) { - if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated string constant"); } - var ch = this.input.charCodeAt(this.pos); - if (ch === quote) { break } - if (ch === 92) { // '\' - out += this.input.slice(chunkStart, this.pos); - out += this.readEscapedChar(false); - chunkStart = this.pos; - } else if (ch === 0x2028 || ch === 0x2029) { - if (this.options.ecmaVersion < 10) { this.raise(this.start, "Unterminated string constant"); } - ++this.pos; - if (this.options.locations) { - this.curLine++; - this.lineStart = this.pos; - } - } else { - if (isNewLine(ch)) { this.raise(this.start, "Unterminated string constant"); } - ++this.pos; - } - } - out += this.input.slice(chunkStart, this.pos++); - return this.finishToken(types$1.string, out) - }; +/***/ 22449: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Reads template string tokens. +"use strict"; - var INVALID_TEMPLATE_ESCAPE_ERROR = {}; - pp.tryReadTemplateToken = function() { - this.inTemplateElement = true; - try { - this.readTmplToken(); - } catch (err) { - if (err === INVALID_TEMPLATE_ESCAPE_ERROR) { - this.readInvalidTemplateToken(); - } else { - throw err - } - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.validatePluginObject = validatePluginObject; + +var _optionAssertions = __nccwpck_require__(28); + +const VALIDATORS = { + name: _optionAssertions.assertString, + manipulateOptions: _optionAssertions.assertFunction, + pre: _optionAssertions.assertFunction, + post: _optionAssertions.assertFunction, + inherits: _optionAssertions.assertFunction, + visitor: assertVisitorMap, + parserOverride: _optionAssertions.assertFunction, + generatorOverride: _optionAssertions.assertFunction +}; - this.inTemplateElement = false; - }; +function assertVisitorMap(loc, value) { + const obj = (0, _optionAssertions.assertObject)(loc, value); - pp.invalidStringToken = function(position, message) { - if (this.inTemplateElement && this.options.ecmaVersion >= 9) { - throw INVALID_TEMPLATE_ESCAPE_ERROR - } else { - this.raise(position, message); - } - }; + if (obj) { + Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop])); - pp.readTmplToken = function() { - var out = "", chunkStart = this.pos; - for (;;) { - if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated template"); } - var ch = this.input.charCodeAt(this.pos); - if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${' - if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) { - if (ch === 36) { - this.pos += 2; - return this.finishToken(types$1.dollarBraceL) - } else { - ++this.pos; - return this.finishToken(types$1.backQuote) - } - } - out += this.input.slice(chunkStart, this.pos); - return this.finishToken(types$1.template, out) - } - if (ch === 92) { // '\' - out += this.input.slice(chunkStart, this.pos); - out += this.readEscapedChar(true); - chunkStart = this.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.pos); - ++this.pos; - switch (ch) { - case 13: - if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } - case 10: - out += "\n"; - break - default: - out += String.fromCharCode(ch); - break - } - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - chunkStart = this.pos; - } else { - ++this.pos; - } + if (obj.enter || obj.exit) { + throw new Error(`${(0, _optionAssertions.msg)(loc)} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`); } - }; + } - // Reads a template token to search for the end, without validating any escape sequences - pp.readInvalidTemplateToken = function() { - for (; this.pos < this.input.length; this.pos++) { - switch (this.input[this.pos]) { - case "\\": - ++this.pos; - break + return obj; +} - case "$": - if (this.input[this.pos + 1] !== "{") { break } - // fall through - case "`": - return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos)) - - case "\r": - if (this.input[this.pos + 1] === "\n") { ++this.pos; } - // fall through - case "\n": case "\u2028": case "\u2029": - ++this.curLine; - this.lineStart = this.pos + 1; - break +function assertVisitorHandler(key, value) { + if (value && typeof value === "object") { + Object.keys(value).forEach(handler => { + if (handler !== "enter" && handler !== "exit") { + throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`); } - } - this.raise(this.start, "Unterminated template"); - }; + }); + } else if (typeof value !== "function") { + throw new Error(`.visitor["${key}"] must be a function`); + } - // Used to read escaped characters - - pp.readEscapedChar = function(inTemplate) { - var ch = this.input.charCodeAt(++this.pos); - ++this.pos; - switch (ch) { - case 110: return "\n" // 'n' -> '\n' - case 114: return "\r" // 'r' -> '\r' - case 120: return String.fromCharCode(this.readHexChar(2)) // 'x' - case 117: return codePointToString(this.readCodePoint()) // 'u' - case 116: return "\t" // 't' -> '\t' - case 98: return "\b" // 'b' -> '\b' - case 118: return "\u000b" // 'v' -> '\u000b' - case 102: return "\f" // 'f' -> '\f' - case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\r\n' - case 10: // ' \n' - if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } - return "" - case 56: - case 57: - if (this.strict) { - this.invalidStringToken( - this.pos - 1, - "Invalid escape sequence" - ); - } - if (inTemplate) { - var codePos = this.pos - 1; + return value; +} - this.invalidStringToken( - codePos, - "Invalid escape sequence in template string" - ); - } - default: - if (ch >= 48 && ch <= 55) { - var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]; - var octal = parseInt(octalStr, 8); - if (octal > 255) { - octalStr = octalStr.slice(0, -1); - octal = parseInt(octalStr, 8); - } - this.pos += octalStr.length - 1; - ch = this.input.charCodeAt(this.pos); - if ((octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate)) { - this.invalidStringToken( - this.pos - 1 - octalStr.length, - inTemplate - ? "Octal literal in template string" - : "Octal literal in strict mode" - ); - } - return String.fromCharCode(octal) - } - if (isNewLine(ch)) { - // Unicode new line characters after \ get removed from output in both - // template literals and strings - if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } - return "" - } - return String.fromCharCode(ch) - } +function validatePluginObject(obj) { + const rootPath = { + type: "root", + source: "plugin" }; + Object.keys(obj).forEach(key => { + const validator = VALIDATORS[key]; + + if (validator) { + const optLoc = { + type: "option", + name: key, + parent: rootPath + }; + validator(optLoc, obj[key]); + } else { + const invalidPluginPropertyError = new Error(`.${key} is not a valid Plugin property`); + invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY"; + throw invalidPluginPropertyError; + } + }); + return obj; +} - // Used to read character escape sequences ('\x', '\u', '\U'). +/***/ }), - pp.readHexChar = function(len) { - var codePos = this.pos; - var n = this.readInt(16, len); - if (n === null) { this.invalidStringToken(codePos, "Bad character escape sequence"); } - return n - }; +/***/ 87269: +/***/ ((__unused_webpack_module, exports) => { - // Read an identifier, and return it as a string. Sets `this.containsEsc` - // to whether the word contained a '\u' escape. - // - // Incrementally adds only escaped chars, adding other chunks as-is - // as a micro-optimization. - - pp.readWord1 = function() { - this.containsEsc = false; - var word = "", first = true, chunkStart = this.pos; - var astral = this.options.ecmaVersion >= 6; - while (this.pos < this.input.length) { - var ch = this.fullCharCodeAtPos(); - if (isIdentifierChar(ch, astral)) { - this.pos += ch <= 0xffff ? 1 : 2; - } else if (ch === 92) { // "\" - this.containsEsc = true; - word += this.input.slice(chunkStart, this.pos); - var escStart = this.pos; - if (this.input.charCodeAt(++this.pos) !== 117) // "u" - { this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"); } - ++this.pos; - var esc = this.readCodePoint(); - if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) - { this.invalidStringToken(escStart, "Invalid Unicode escape"); } - word += codePointToString(esc); - chunkStart = this.pos; - } else { - break - } - first = false; - } - return word + this.input.slice(chunkStart, this.pos) - }; +"use strict"; - // Read an identifier or keyword token. Will check for reserved - // words when necessary. - pp.readWord = function() { - var word = this.readWord1(); - var type = types$1.name; - if (this.keywords.test(word)) { - type = keywords[word]; - } - return this.finishToken(type, word) - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = { + auxiliaryComment: { + message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`" + }, + blacklist: { + message: "Put the specific transforms you want in the `plugins` option" + }, + breakConfig: { + message: "This is not a necessary option in Babel 6" + }, + experimental: { + message: "Put the specific transforms you want in the `plugins` option" + }, + externalHelpers: { + message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/" + }, + extra: { + message: "" + }, + jsxPragma: { + message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/" + }, + loose: { + message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option." + }, + metadataUsedHelpers: { + message: "Not required anymore as this is enabled by default" + }, + modules: { + message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules" + }, + nonStandard: { + message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/" + }, + optional: { + message: "Put the specific transforms you want in the `plugins` option" + }, + sourceMapName: { + message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves." + }, + stage: { + message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets" + }, + whitelist: { + message: "Put the specific transforms you want in the `plugins` option" + }, + resolveModuleSource: { + version: 6, + message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options" + }, + metadata: { + version: 6, + message: "Generated plugin metadata is always included in the output result" + }, + sourceMapTarget: { + version: 6, + message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves." + } +}; +exports["default"] = _default; - // Acorn is a tiny, fast JavaScript parser written in JavaScript. - // - // Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and - // various contributors and released under an MIT license. - // - // Git repositories for Acorn are available at - // - // http://marijnhaverbeke.nl/git/acorn - // https://github.com/acornjs/acorn.git - // - // Please use the [github bug tracker][ghbt] to report issues. - // - // [ghbt]: https://github.com/acornjs/acorn/issues - // - // [walk]: util/walk.js - - - var version = "8.14.1"; - - Parser.acorn = { - Parser: Parser, - version: version, - defaultOptions: defaultOptions, - Position: Position, - SourceLocation: SourceLocation, - getLineInfo: getLineInfo, - Node: Node, - TokenType: TokenType, - tokTypes: types$1, - keywordTypes: keywords, - TokContext: TokContext, - tokContexts: types, - isIdentifierChar: isIdentifierChar, - isIdentifierStart: isIdentifierStart, - Token: Token, - isNewLine: isNewLine, - lineBreak: lineBreak, - lineBreakG: lineBreakG, - nonASCIIwhitespace: nonASCIIwhitespace - }; +/***/ }), - // The main exported interface (under `self.acorn` when in the - // browser) is a `parse` function that takes a code string and returns - // an abstract syntax tree as specified by the [ESTree spec][estree]. - // - // [estree]: https://github.com/estree/estree - - function parse(input, options) { - return Parser.parse(input, options) - } - - // This function tries to parse a single expression at a given - // offset in a string. Useful for parsing mixed-language formats - // that embed JavaScript expressions. - - function parseExpressionAt(input, pos, options) { - return Parser.parseExpressionAt(input, pos, options) - } - - // Acorn is organized as a tokenizer and a recursive-descent parser. - // The `tokenizer` export provides an interface to the tokenizer. - - function tokenizer(input, options) { - return Parser.tokenizer(input, options) - } - - exports.Node = Node; - exports.Parser = Parser; - exports.Position = Position; - exports.SourceLocation = SourceLocation; - exports.TokContext = TokContext; - exports.Token = Token; - exports.TokenType = TokenType; - exports.defaultOptions = defaultOptions; - exports.getLineInfo = getLineInfo; - exports.isIdentifierChar = isIdentifierChar; - exports.isIdentifierStart = isIdentifierStart; - exports.isNewLine = isNewLine; - exports.keywordTypes = keywords; - exports.lineBreak = lineBreak; - exports.lineBreakG = lineBreakG; - exports.nonASCIIwhitespace = nonASCIIwhitespace; - exports.parse = parse; - exports.parseExpressionAt = parseExpressionAt; - exports.tokContexts = types; - exports.tokTypes = types$1; - exports.tokenizer = tokenizer; - exports.version = version; +/***/ 87360: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -})); +"use strict"; -/***/ }), +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.maybeAsync = maybeAsync; +exports.forwardAsync = forwardAsync; +exports.isThenable = isThenable; +exports.waitFor = exports.onFirstPause = exports.isAsync = void 0; -/***/ 8905: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); -"use strict"; + _gensync = function () { + return data; + }; + return data; +} -var isObject = __nccwpck_require__(6403); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } +const id = x => x; - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; +const runGenerator = (0, _gensync().default)(function* (item) { + return yield* item; +}); +const isAsync = (0, _gensync().default)({ + sync: () => false, + errback: cb => cb(null, true) +}); +exports.isAsync = isAsync; + +function maybeAsync(fn, message) { + return (0, _gensync().default)({ + sync(...args) { + const result = fn.apply(this, args); + if (isThenable(result)) throw new Error(message); + return result; + }, - if (isObject(obj)) { - assign(o, obj); + async(...args) { + return Promise.resolve(fn.apply(this, args)); } - } - return o; -}; -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } + }); } -/** - * Returns true if the given `key` is an own property of `obj`. - */ +const withKind = (0, _gensync().default)({ + sync: cb => cb("sync"), + async: cb => cb("async") +}); -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); +function forwardAsync(action, cb) { + const g = (0, _gensync().default)(action); + return withKind(kind => { + const adapted = g[kind]; + return cb(adapted); + }); } +const onFirstPause = (0, _gensync().default)({ + name: "onFirstPause", + arity: 2, + sync: function (item) { + return runGenerator.sync(item); + }, + errback: function (item, firstPause, cb) { + let completed = false; + runGenerator.errback(item, (err, value) => { + completed = true; + cb(err, value); + }); + + if (!completed) { + firstPause(); + } + } +}); +exports.onFirstPause = onFirstPause; +const waitFor = (0, _gensync().default)({ + sync: id, + async: id +}); +exports.waitFor = waitFor; + +function isThenable(val) { + return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; +} /***/ }), -/***/ 3860: -/***/ ((module) => { +/***/ 10733: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var defineProperty = Object.defineProperty; -var gOPD = Object.getOwnPropertyDescriptor; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.stat = exports.exists = exports.readFile = void 0; -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } +function _fs() { + const data = _interopRequireDefault(__nccwpck_require__(79896)); - return toStr.call(arr) === '[object Array]'; -}; + _fs = function () { + return data; + }; -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } + return data; +} - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { /**/ } + _gensync = function () { + return data; + }; - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; + return data; +} -// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target -var setProperty = function setProperty(target, options) { - if (defineProperty && options.name === '__proto__') { - defineProperty(target, options.name, { - enumerable: true, - configurable: true, - value: options.newValue, - writable: true - }); - } else { - target[options.name] = options.newValue; - } -}; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Return undefined instead of __proto__ if '__proto__' is not an own property -var getProperty = function getProperty(obj, name) { - if (name === '__proto__') { - if (!hasOwn.call(obj, name)) { - return void 0; - } else if (gOPD) { - // In early versions of node, obj['__proto__'] is buggy when obj has - // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. - return gOPD(obj, name).value; - } - } +const readFile = (0, _gensync().default)({ + sync: _fs().default.readFileSync, + errback: _fs().default.readFile +}); +exports.readFile = readFile; +const exists = (0, _gensync().default)({ + sync(path) { + try { + _fs().default.accessSync(path); - return obj[name]; -}; + return true; + } catch (_unused) { + return false; + } + }, -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone; - var target = arguments[0]; - var i = 1; - var length = arguments.length; - var deep = false; + errback: (path, cb) => _fs().default.access(path, undefined, err => cb(null, !err)) +}); +exports.exists = exists; +const stat = (0, _gensync().default)({ + sync: _fs().default.statSync, + errback: _fs().default.stat +}); +exports.stat = stat; - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { - target = {}; - } +/***/ }), - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = getProperty(target, name); - copy = getProperty(options, name); +/***/ 12620: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } +"use strict"; - // Never move original objects, clone them - setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - setProperty(target, { name: name, newValue: copy }); - } - } - } - } - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - // Return the modified object - return target; -}; +function _resolve() { + const data = _interopRequireDefault(__nccwpck_require__(92312)); + + _resolve = function () { + return data; + }; + + return data; +} + +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); + + _gensync = function () { + return data; + }; + + return data; +} +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var _default = (0, _gensync().default)({ + sync: _resolve().default.sync, + errback: _resolve().default +}); + +exports["default"] = _default; /***/ }), -/***/ 3964: -/***/ ((module) => { +/***/ 85414: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -module.exports = clone +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Plugin = Plugin; +Object.defineProperty(exports, "File", ({ + enumerable: true, + get: function () { + return _file.default; + } +})); +Object.defineProperty(exports, "buildExternalHelpers", ({ + enumerable: true, + get: function () { + return _buildExternalHelpers.default; + } +})); +Object.defineProperty(exports, "resolvePlugin", ({ + enumerable: true, + get: function () { + return _files.resolvePlugin; + } +})); +Object.defineProperty(exports, "resolvePreset", ({ + enumerable: true, + get: function () { + return _files.resolvePreset; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _package.version; + } +})); +Object.defineProperty(exports, "getEnv", ({ + enumerable: true, + get: function () { + return _environment.getEnv; + } +})); +Object.defineProperty(exports, "tokTypes", ({ + enumerable: true, + get: function () { + return _parser().tokTypes; + } +})); +Object.defineProperty(exports, "traverse", ({ + enumerable: true, + get: function () { + return _traverse().default; + } +})); +Object.defineProperty(exports, "template", ({ + enumerable: true, + get: function () { + return _template().default; + } +})); +Object.defineProperty(exports, "createConfigItem", ({ + enumerable: true, + get: function () { + return _item.createConfigItem; + } +})); +Object.defineProperty(exports, "loadPartialConfig", ({ + enumerable: true, + get: function () { + return _config.loadPartialConfig; + } +})); +Object.defineProperty(exports, "loadPartialConfigSync", ({ + enumerable: true, + get: function () { + return _config.loadPartialConfigSync; + } +})); +Object.defineProperty(exports, "loadPartialConfigAsync", ({ + enumerable: true, + get: function () { + return _config.loadPartialConfigAsync; + } +})); +Object.defineProperty(exports, "loadOptions", ({ + enumerable: true, + get: function () { + return _config.loadOptions; + } +})); +Object.defineProperty(exports, "loadOptionsSync", ({ + enumerable: true, + get: function () { + return _config.loadOptionsSync; + } +})); +Object.defineProperty(exports, "loadOptionsAsync", ({ + enumerable: true, + get: function () { + return _config.loadOptionsAsync; + } +})); +Object.defineProperty(exports, "transform", ({ + enumerable: true, + get: function () { + return _transform.transform; + } +})); +Object.defineProperty(exports, "transformSync", ({ + enumerable: true, + get: function () { + return _transform.transformSync; + } +})); +Object.defineProperty(exports, "transformAsync", ({ + enumerable: true, + get: function () { + return _transform.transformAsync; + } +})); +Object.defineProperty(exports, "transformFile", ({ + enumerable: true, + get: function () { + return _transformFile.transformFile; + } +})); +Object.defineProperty(exports, "transformFileSync", ({ + enumerable: true, + get: function () { + return _transformFile.transformFileSync; + } +})); +Object.defineProperty(exports, "transformFileAsync", ({ + enumerable: true, + get: function () { + return _transformFile.transformFileAsync; + } +})); +Object.defineProperty(exports, "transformFromAst", ({ + enumerable: true, + get: function () { + return _transformAst.transformFromAst; + } +})); +Object.defineProperty(exports, "transformFromAstSync", ({ + enumerable: true, + get: function () { + return _transformAst.transformFromAstSync; + } +})); +Object.defineProperty(exports, "transformFromAstAsync", ({ + enumerable: true, + get: function () { + return _transformAst.transformFromAstAsync; + } +})); +Object.defineProperty(exports, "parse", ({ + enumerable: true, + get: function () { + return _parse.parse; + } +})); +Object.defineProperty(exports, "parseSync", ({ + enumerable: true, + get: function () { + return _parse.parseSync; + } +})); +Object.defineProperty(exports, "parseAsync", ({ + enumerable: true, + get: function () { + return _parse.parseAsync; + } +})); +exports.types = exports.OptionManager = exports.DEFAULT_EXTENSIONS = void 0; -var getPrototypeOf = Object.getPrototypeOf || function (obj) { - return obj.__proto__ -} +var _file = _interopRequireDefault(__nccwpck_require__(12211)); -function clone (obj) { - if (obj === null || typeof obj !== 'object') - return obj +var _buildExternalHelpers = _interopRequireDefault(__nccwpck_require__(60316)); - if (obj instanceof Object) - var copy = { __proto__: getPrototypeOf(obj) } - else - var copy = Object.create(null) +var _files = __nccwpck_require__(37217); - Object.getOwnPropertyNames(obj).forEach(function (key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) - }) +var _package = __nccwpck_require__(29602); - return copy +var _environment = __nccwpck_require__(3110); + +function _types() { + const data = _interopRequireWildcard(__nccwpck_require__(16535)); + + _types = function () { + return data; + }; + + return data; } +Object.defineProperty(exports, "types", ({ + enumerable: true, + get: function () { + return _types(); + } +})); -/***/ }), +function _parser() { + const data = __nccwpck_require__(5429); -/***/ 5744: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + _parser = function () { + return data; + }; -var fs = __nccwpck_require__(9896) -var polyfills = __nccwpck_require__(3501) -var legacy = __nccwpck_require__(2270) -var clone = __nccwpck_require__(3964) + return data; +} -var util = __nccwpck_require__(9023) +function _traverse() { + const data = _interopRequireDefault(__nccwpck_require__(50148)); -/* istanbul ignore next - node 0.x polyfill */ -var gracefulQueue -var previousSymbol + _traverse = function () { + return data; + }; -/* istanbul ignore else - node 0.x polyfill */ -if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { - gracefulQueue = Symbol.for('graceful-fs.queue') - // This is used in testing by future versions - previousSymbol = Symbol.for('graceful-fs.previous') -} else { - gracefulQueue = '___graceful-fs.queue' - previousSymbol = '___graceful-fs.previous' + return data; } -function noop () {} +function _template() { + const data = _interopRequireDefault(__nccwpck_require__(19648)); -function publishQueue(context, queue) { - Object.defineProperty(context, gracefulQueue, { - get: function() { - return queue - } - }) + _template = function () { + return data; + }; + + return data; } -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs4') -else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') - console.error(m) - } +var _item = __nccwpck_require__(72478); -// Once time initialization -if (!fs[gracefulQueue]) { - // This queue can be shared by multiple loaded instances - var queue = global[gracefulQueue] || [] - publishQueue(fs, queue) +var _config = __nccwpck_require__(73677); - // Patch fs.close/closeSync to shared queue version, because we need - // to retry() whenever a close happens *anywhere* in the program. - // This is essential when multiple graceful-fs instances are - // in play at the same time. - fs.close = (function (fs$close) { - function close (fd, cb) { - return fs$close.call(fs, fd, function (err) { - // This function uses the graceful-fs shared queue - if (!err) { - resetQueue() - } +var _transform = __nccwpck_require__(46442); - if (typeof cb === 'function') - cb.apply(this, arguments) - }) - } +var _transformFile = __nccwpck_require__(39037); - Object.defineProperty(close, previousSymbol, { - value: fs$close - }) - return close - })(fs.close) +var _transformAst = __nccwpck_require__(98239); - fs.closeSync = (function (fs$closeSync) { - function closeSync (fd) { - // This function uses the graceful-fs shared queue - fs$closeSync.apply(fs, arguments) - resetQueue() - } +var _parse = __nccwpck_require__(35973); - Object.defineProperty(closeSync, previousSymbol, { - value: fs$closeSync - }) - return closeSync - })(fs.closeSync) +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } - if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug(fs[gracefulQueue]) - __nccwpck_require__(2613).equal(fs[gracefulQueue].length, 0) - }) +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs"]); +exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS; + +class OptionManager { + init(opts) { + return (0, _config.loadOptions)(opts); } -} -if (!global[gracefulQueue]) { - publishQueue(global, fs[gracefulQueue]); } -module.exports = patch(clone(fs)) -if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { - module.exports = patch(fs) - fs.__patched = true; +exports.OptionManager = OptionManager; + +function Plugin(alias) { + throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`); } -function patch (fs) { - // Everything that references the open() function needs to be in here - polyfills(fs) - fs.gracefulify = patch +/***/ }), - fs.createReadStream = createReadStream - fs.createWriteStream = createWriteStream - var fs$readFile = fs.readFile - fs.readFile = readFile - function readFile (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null +/***/ 35973: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - return go$readFile(path, options, cb) +"use strict"; - function go$readFile (path, options, cb, startTime) { - return fs$readFile(path, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - var fs$writeFile = fs.writeFile - fs.writeFile = writeFile - function writeFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.parseAsync = exports.parseSync = exports.parse = void 0; - return go$writeFile(path, data, options, cb) +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - function go$writeFile (path, data, options, cb, startTime) { - return fs$writeFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } + _gensync = function () { + return data; + }; - var fs$appendFile = fs.appendFile - if (fs$appendFile) - fs.appendFile = appendFile - function appendFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null + return data; +} - return go$appendFile(path, data, options, cb) +var _config = _interopRequireDefault(__nccwpck_require__(73677)); - function go$appendFile (path, data, options, cb, startTime) { - return fs$appendFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } +var _parser = _interopRequireDefault(__nccwpck_require__(99904)); + +var _normalizeOpts = _interopRequireDefault(__nccwpck_require__(74944)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const parseRunner = (0, _gensync().default)(function* parse(code, opts) { + const config = yield* (0, _config.default)(opts); + + if (config === null) { + return null; } - var fs$copyFile = fs.copyFile - if (fs$copyFile) - fs.copyFile = copyFile - function copyFile (src, dest, flags, cb) { - if (typeof flags === 'function') { - cb = flags - flags = 0 - } - return go$copyFile(src, dest, flags, cb) + return yield* (0, _parser.default)(config.passes, (0, _normalizeOpts.default)(config), code); +}); - function go$copyFile (src, dest, flags, cb, startTime) { - return fs$copyFile(src, dest, flags, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } +const parse = function parse(code, opts, callback) { + if (typeof opts === "function") { + callback = opts; + opts = undefined; } - var fs$readdir = fs.readdir - fs.readdir = readdir - var noReaddirOptionVersions = /^v[0-5]\./ - function readdir (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null + if (callback === undefined) return parseRunner.sync(code, opts); + parseRunner.errback(code, opts, callback); +}; - var go$readdir = noReaddirOptionVersions.test(process.version) - ? function go$readdir (path, options, cb, startTime) { - return fs$readdir(path, fs$readdirCallback( - path, options, cb, startTime - )) - } - : function go$readdir (path, options, cb, startTime) { - return fs$readdir(path, options, fs$readdirCallback( - path, options, cb, startTime - )) +exports.parse = parse; +const parseSync = parseRunner.sync; +exports.parseSync = parseSync; +const parseAsync = parseRunner.async; +exports.parseAsync = parseAsync; + +/***/ }), + +/***/ 99904: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = parser; + +function _parser() { + const data = __nccwpck_require__(5429); + + _parser = function () { + return data; + }; + + return data; +} + +function _codeFrame() { + const data = __nccwpck_require__(90147); + + _codeFrame = function () { + return data; + }; + + return data; +} + +var _missingPluginHelper = _interopRequireDefault(__nccwpck_require__(3498)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function* parser(pluginPasses, { + parserOpts, + highlightCode = true, + filename = "unknown" +}, code) { + try { + const results = []; + + for (const plugins of pluginPasses) { + for (const plugin of plugins) { + const { + parserOverride + } = plugin; + + if (parserOverride) { + const ast = parserOverride(code, parserOpts, _parser().parse); + if (ast !== undefined) results.push(ast); + } } + } - return go$readdir(path, options, cb) + if (results.length === 0) { + return (0, _parser().parse)(code, parserOpts); + } else if (results.length === 1) { + yield* []; - function fs$readdirCallback (path, options, cb, startTime) { - return function (err, files) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([ - go$readdir, - [path, options, cb], - err, - startTime || Date.now(), - Date.now() - ]) - else { - if (files && files.sort) - files.sort() + if (typeof results[0].then === "function") { + throw new Error(`You appear to be using an async parser plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } - if (typeof cb === 'function') - cb.call(this, err, files) + return results[0]; + } + + throw new Error("More than one plugin attempted to override parsing."); + } catch (err) { + if (err.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") { + err.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file."; + } + + const { + loc, + missingPlugin + } = err; + + if (loc) { + const codeFrame = (0, _codeFrame().codeFrameColumns)(code, { + start: { + line: loc.line, + column: loc.column + 1 } + }, { + highlightCode + }); + + if (missingPlugin) { + err.message = `${filename}: ` + (0, _missingPluginHelper.default)(missingPlugin[0], loc, codeFrame); + } else { + err.message = `${filename}: ${err.message}\n\n` + codeFrame; } + + err.code = "BABEL_PARSE_ERROR"; } - } - if (process.version.substr(0, 4) === 'v0.8') { - var legStreams = legacy(fs) - ReadStream = legStreams.ReadStream - WriteStream = legStreams.WriteStream + throw err; } +} - var fs$ReadStream = fs.ReadStream - if (fs$ReadStream) { - ReadStream.prototype = Object.create(fs$ReadStream.prototype) - ReadStream.prototype.open = ReadStream$open - } +/***/ }), - var fs$WriteStream = fs.WriteStream - if (fs$WriteStream) { - WriteStream.prototype = Object.create(fs$WriteStream.prototype) - WriteStream.prototype.open = WriteStream$open - } +/***/ 3498: +/***/ ((__unused_webpack_module, exports) => { - Object.defineProperty(fs, 'ReadStream', { - get: function () { - return ReadStream +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = generateMissingPluginMessage; +const pluginNameMap = { + classProperties: { + syntax: { + name: "@babel/plugin-syntax-class-properties", + url: "https://git.io/vb4yQ" }, - set: function (val) { - ReadStream = val + transform: { + name: "@babel/plugin-proposal-class-properties", + url: "https://git.io/vb4SL" + } + }, + classPrivateProperties: { + syntax: { + name: "@babel/plugin-syntax-class-properties", + url: "https://git.io/vb4yQ" }, - enumerable: true, - configurable: true - }) - Object.defineProperty(fs, 'WriteStream', { - get: function () { - return WriteStream + transform: { + name: "@babel/plugin-proposal-class-properties", + url: "https://git.io/vb4SL" + } + }, + classPrivateMethods: { + syntax: { + name: "@babel/plugin-syntax-class-properties", + url: "https://git.io/vb4yQ" }, - set: function (val) { - WriteStream = val + transform: { + name: "@babel/plugin-proposal-private-methods", + url: "https://git.io/JvpRG" + } + }, + classStaticBlock: { + syntax: { + name: "@babel/plugin-syntax-class-static-block", + url: "https://git.io/JTLB6" }, - enumerable: true, - configurable: true - }) - - // legacy names - var FileReadStream = ReadStream - Object.defineProperty(fs, 'FileReadStream', { - get: function () { - return FileReadStream + transform: { + name: "@babel/plugin-proposal-class-static-block", + url: "https://git.io/JTLBP" + } + }, + decimal: { + syntax: { + name: "@babel/plugin-syntax-decimal", + url: "https://git.io/JfKOH" + } + }, + decorators: { + syntax: { + name: "@babel/plugin-syntax-decorators", + url: "https://git.io/vb4y9" }, - set: function (val) { - FileReadStream = val + transform: { + name: "@babel/plugin-proposal-decorators", + url: "https://git.io/vb4ST" + } + }, + doExpressions: { + syntax: { + name: "@babel/plugin-syntax-do-expressions", + url: "https://git.io/vb4yh" }, - enumerable: true, - configurable: true - }) - var FileWriteStream = WriteStream - Object.defineProperty(fs, 'FileWriteStream', { - get: function () { - return FileWriteStream + transform: { + name: "@babel/plugin-proposal-do-expressions", + url: "https://git.io/vb4S3" + } + }, + dynamicImport: { + syntax: { + name: "@babel/plugin-syntax-dynamic-import", + url: "https://git.io/vb4Sv" + } + }, + exportDefaultFrom: { + syntax: { + name: "@babel/plugin-syntax-export-default-from", + url: "https://git.io/vb4SO" }, - set: function (val) { - FileWriteStream = val + transform: { + name: "@babel/plugin-proposal-export-default-from", + url: "https://git.io/vb4yH" + } + }, + exportNamespaceFrom: { + syntax: { + name: "@babel/plugin-syntax-export-namespace-from", + url: "https://git.io/vb4Sf" }, - enumerable: true, - configurable: true - }) - - function ReadStream (path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + transform: { + name: "@babel/plugin-proposal-export-namespace-from", + url: "https://git.io/vb4SG" + } + }, + flow: { + syntax: { + name: "@babel/plugin-syntax-flow", + url: "https://git.io/vb4yb" + }, + transform: { + name: "@babel/preset-flow", + url: "https://git.io/JfeDn" + } + }, + functionBind: { + syntax: { + name: "@babel/plugin-syntax-function-bind", + url: "https://git.io/vb4y7" + }, + transform: { + name: "@babel/plugin-proposal-function-bind", + url: "https://git.io/vb4St" + } + }, + functionSent: { + syntax: { + name: "@babel/plugin-syntax-function-sent", + url: "https://git.io/vb4yN" + }, + transform: { + name: "@babel/plugin-proposal-function-sent", + url: "https://git.io/vb4SZ" + } + }, + importMeta: { + syntax: { + name: "@babel/plugin-syntax-import-meta", + url: "https://git.io/vbKK6" + } + }, + jsx: { + syntax: { + name: "@babel/plugin-syntax-jsx", + url: "https://git.io/vb4yA" + }, + transform: { + name: "@babel/preset-react", + url: "https://git.io/JfeDR" + } + }, + importAssertions: { + syntax: { + name: "@babel/plugin-syntax-import-assertions", + url: "https://git.io/JUbkv" + } + }, + moduleStringNames: { + syntax: { + name: "@babel/plugin-syntax-module-string-names", + url: "https://git.io/JTL8G" + } + }, + numericSeparator: { + syntax: { + name: "@babel/plugin-syntax-numeric-separator", + url: "https://git.io/vb4Sq" + }, + transform: { + name: "@babel/plugin-proposal-numeric-separator", + url: "https://git.io/vb4yS" + } + }, + optionalChaining: { + syntax: { + name: "@babel/plugin-syntax-optional-chaining", + url: "https://git.io/vb4Sc" + }, + transform: { + name: "@babel/plugin-proposal-optional-chaining", + url: "https://git.io/vb4Sk" + } + }, + pipelineOperator: { + syntax: { + name: "@babel/plugin-syntax-pipeline-operator", + url: "https://git.io/vb4yj" + }, + transform: { + name: "@babel/plugin-proposal-pipeline-operator", + url: "https://git.io/vb4SU" + } + }, + privateIn: { + syntax: { + name: "@babel/plugin-syntax-private-property-in-object", + url: "https://git.io/JfK3q" + }, + transform: { + name: "@babel/plugin-proposal-private-property-in-object", + url: "https://git.io/JfK3O" + } + }, + recordAndTuple: { + syntax: { + name: "@babel/plugin-syntax-record-and-tuple", + url: "https://git.io/JvKp3" + } + }, + throwExpressions: { + syntax: { + name: "@babel/plugin-syntax-throw-expressions", + url: "https://git.io/vb4SJ" + }, + transform: { + name: "@babel/plugin-proposal-throw-expressions", + url: "https://git.io/vb4yF" + } + }, + typescript: { + syntax: { + name: "@babel/plugin-syntax-typescript", + url: "https://git.io/vb4SC" + }, + transform: { + name: "@babel/preset-typescript", + url: "https://git.io/JfeDz" + } + }, + asyncGenerators: { + syntax: { + name: "@babel/plugin-syntax-async-generators", + url: "https://git.io/vb4SY" + }, + transform: { + name: "@babel/plugin-proposal-async-generator-functions", + url: "https://git.io/vb4yp" + } + }, + logicalAssignment: { + syntax: { + name: "@babel/plugin-syntax-logical-assignment-operators", + url: "https://git.io/vAlBp" + }, + transform: { + name: "@babel/plugin-proposal-logical-assignment-operators", + url: "https://git.io/vAlRe" + } + }, + nullishCoalescingOperator: { + syntax: { + name: "@babel/plugin-syntax-nullish-coalescing-operator", + url: "https://git.io/vb4yx" + }, + transform: { + name: "@babel/plugin-proposal-nullish-coalescing-operator", + url: "https://git.io/vb4Se" + } + }, + objectRestSpread: { + syntax: { + name: "@babel/plugin-syntax-object-rest-spread", + url: "https://git.io/vb4y5" + }, + transform: { + name: "@babel/plugin-proposal-object-rest-spread", + url: "https://git.io/vb4Ss" + } + }, + optionalCatchBinding: { + syntax: { + name: "@babel/plugin-syntax-optional-catch-binding", + url: "https://git.io/vb4Sn" + }, + transform: { + name: "@babel/plugin-proposal-optional-catch-binding", + url: "https://git.io/vb4SI" + } } +}; +pluginNameMap.privateIn.syntax = pluginNameMap.privateIn.transform; - function ReadStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - if (that.autoClose) - that.destroy() +const getNameURLCombination = ({ + name, + url +}) => `${name} (${url})`; - that.emit('error', err) +function generateMissingPluginMessage(missingPluginName, loc, codeFrame) { + let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame; + const pluginInfo = pluginNameMap[missingPluginName]; + + if (pluginInfo) { + const { + syntax: syntaxPlugin, + transform: transformPlugin + } = pluginInfo; + + if (syntaxPlugin) { + const syntaxPluginInfo = getNameURLCombination(syntaxPlugin); + + if (transformPlugin) { + const transformPluginInfo = getNameURLCombination(transformPlugin); + const sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets"; + helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation. +If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`; } else { - that.fd = fd - that.emit('open', fd) - that.read() + helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`; } - }) + } } - function WriteStream (path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments) - } + return helpMessage; +} - function WriteStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - that.destroy() - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - } - }) - } +/***/ }), - function createReadStream (path, options) { - return new fs.ReadStream(path, options) - } +/***/ 60316: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - function createWriteStream (path, options) { - return new fs.WriteStream(path, options) - } +"use strict"; - var fs$open = fs.open - fs.open = open - function open (path, flags, mode, cb) { - if (typeof mode === 'function') - cb = mode, mode = null - return go$open(path, flags, mode, cb) +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; - function go$open (path, flags, mode, cb, startTime) { - return fs$open(path, flags, mode, function (err, fd) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } +function helpers() { + const data = _interopRequireWildcard(__nccwpck_require__(71475)); - return fs -} + helpers = function () { + return data; + }; -function enqueue (elem) { - debug('ENQUEUE', elem[0].name, elem[1]) - fs[gracefulQueue].push(elem) - retry() + return data; } -// keep track of the timeout between retry() calls -var retryTimer +function _generator() { + const data = _interopRequireDefault(__nccwpck_require__(12123)); -// reset the startTime and lastTime to now -// this resets the start of the 60 second overall timeout as well as the -// delay between attempts so that we'll retry these jobs sooner -function resetQueue () { - var now = Date.now() - for (var i = 0; i < fs[gracefulQueue].length; ++i) { - // entries that are only a length of 2 are from an older version, don't - // bother modifying those since they'll be retried anyway. - if (fs[gracefulQueue][i].length > 2) { - fs[gracefulQueue][i][3] = now // startTime - fs[gracefulQueue][i][4] = now // lastTime - } - } - // call retry to make sure we're actively processing the queue - retry() + _generator = function () { + return data; + }; + + return data; } -function retry () { - // clear the timer and remove it to help prevent unintended concurrency - clearTimeout(retryTimer) - retryTimer = undefined +function _template() { + const data = _interopRequireDefault(__nccwpck_require__(19648)); - if (fs[gracefulQueue].length === 0) - return + _template = function () { + return data; + }; - var elem = fs[gracefulQueue].shift() - var fn = elem[0] - var args = elem[1] - // these items may be unset if they were added by an older graceful-fs - var err = elem[2] - var startTime = elem[3] - var lastTime = elem[4] + return data; +} - // if we don't have a startTime we have no way of knowing if we've waited - // long enough, so go ahead and retry this item now - if (startTime === undefined) { - debug('RETRY', fn.name, args) - fn.apply(null, args) - } else if (Date.now() - startTime >= 60000) { - // it's been more than 60 seconds total, bail now - debug('TIMEOUT', fn.name, args) - var cb = args.pop() - if (typeof cb === 'function') - cb.call(null, err) - } else { - // the amount of time between the last attempt and right now - var sinceAttempt = Date.now() - lastTime - // the amount of time between when we first tried, and when we last tried - // rounded up to at least 1 - var sinceStart = Math.max(lastTime - startTime, 1) - // backoff. wait longer than the total time we've been retrying, but only - // up to a maximum of 100ms - var desiredDelay = Math.min(sinceStart * 1.2, 100) - // it's been long enough since the last retry, do it again - if (sinceAttempt >= desiredDelay) { - debug('RETRY', fn.name, args) - fn.apply(null, args.concat([startTime])) - } else { - // if we can't do this job yet, push it to the end of the queue - // and let the next iteration check again - fs[gracefulQueue].push(elem) - } - } +function t() { + const data = _interopRequireWildcard(__nccwpck_require__(16535)); - // schedule our next run if one isn't already scheduled - if (retryTimer === undefined) { - retryTimer = setTimeout(retry, 0) - } + t = function () { + return data; + }; + + return data; } +var _file = _interopRequireDefault(__nccwpck_require__(12211)); -/***/ }), +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/***/ 2270: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } -var Stream = (__nccwpck_require__(2203).Stream) +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } -module.exports = legacy +const buildUmdWrapper = replacements => (0, _template().default)` + (function (root, factory) { + if (typeof define === "function" && define.amd) { + define(AMD_ARGUMENTS, factory); + } else if (typeof exports === "object") { + factory(COMMON_ARGUMENTS); + } else { + factory(BROWSER_ARGUMENTS); + } + })(UMD_ROOT, function (FACTORY_PARAMETERS) { + FACTORY_BODY + }); + `(replacements); + +function buildGlobal(allowlist) { + const namespace = t().identifier("babelHelpers"); + const body = []; + const container = t().functionExpression(null, [t().identifier("global")], t().blockStatement(body)); + const tree = t().program([t().expressionStatement(t().callExpression(container, [t().conditionalExpression(t().binaryExpression("===", t().unaryExpression("typeof", t().identifier("global")), t().stringLiteral("undefined")), t().identifier("self"), t().identifier("global"))]))]); + body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().assignmentExpression("=", t().memberExpression(t().identifier("global"), namespace), t().objectExpression([])))])); + buildHelpers(body, namespace, allowlist); + return tree; +} + +function buildModule(allowlist) { + const body = []; + const refs = buildHelpers(body, null, allowlist); + body.unshift(t().exportNamedDeclaration(null, Object.keys(refs).map(name => { + return t().exportSpecifier(t().cloneNode(refs[name]), t().identifier(name)); + }))); + return t().program(body, [], "module"); +} + +function buildUmd(allowlist) { + const namespace = t().identifier("babelHelpers"); + const body = []; + body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().identifier("global"))])); + buildHelpers(body, namespace, allowlist); + return t().program([buildUmdWrapper({ + FACTORY_PARAMETERS: t().identifier("global"), + BROWSER_ARGUMENTS: t().assignmentExpression("=", t().memberExpression(t().identifier("root"), namespace), t().objectExpression([])), + COMMON_ARGUMENTS: t().identifier("exports"), + AMD_ARGUMENTS: t().arrayExpression([t().stringLiteral("exports")]), + FACTORY_BODY: body, + UMD_ROOT: t().identifier("this") + })]); +} + +function buildVar(allowlist) { + const namespace = t().identifier("babelHelpers"); + const body = []; + body.push(t().variableDeclaration("var", [t().variableDeclarator(namespace, t().objectExpression([]))])); + const tree = t().program(body); + buildHelpers(body, namespace, allowlist); + body.push(t().expressionStatement(namespace)); + return tree; +} + +function buildHelpers(body, namespace, allowlist) { + const getHelperReference = name => { + return namespace ? t().memberExpression(namespace, t().identifier(name)) : t().identifier(`_${name}`); + }; -function legacy (fs) { - return { - ReadStream: ReadStream, - WriteStream: WriteStream + const refs = {}; + helpers().list.forEach(function (name) { + if (allowlist && allowlist.indexOf(name) < 0) return; + const ref = refs[name] = getHelperReference(name); + helpers().ensure(name, _file.default); + const { + nodes + } = helpers().get(name, getHelperReference, ref); + body.push(...nodes); + }); + return refs; +} + +function _default(allowlist, outputType = "global") { + let tree; + const build = { + global: buildGlobal, + module: buildModule, + umd: buildUmd, + var: buildVar + }[outputType]; + + if (build) { + tree = build(allowlist); + } else { + throw new Error(`Unsupported output type ${outputType}`); } - function ReadStream (path, options) { - if (!(this instanceof ReadStream)) return new ReadStream(path, options); + return (0, _generator().default)(tree).code; +} - Stream.call(this); +/***/ }), - var self = this; +/***/ 98239: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; +"use strict"; - this.flags = 'r'; - this.mode = 438; /*=0666*/ - this.bufferSize = 64 * 1024; - options = options || {}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformFromAstAsync = exports.transformFromAstSync = exports.transformFromAst = void 0; - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - if (this.encoding) this.setEncoding(this.encoding); + _gensync = function () { + return data; + }; - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.end === undefined) { - this.end = Infinity; - } else if ('number' !== typeof this.end) { - throw TypeError('end must be a Number'); - } + return data; +} - if (this.start > this.end) { - throw new Error('start must be <= end'); - } +var _config = _interopRequireDefault(__nccwpck_require__(73677)); - this.pos = this.start; - } +var _transformation = __nccwpck_require__(16486); - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - fs.open(this.path, this.flags, this.mode, function (err, fd) { - if (err) { - self.emit('error', err); - self.readable = false; - return; - } +const transformFromAstRunner = (0, _gensync().default)(function* (ast, code, opts) { + const config = yield* (0, _config.default)(opts); + if (config === null) return null; + if (!ast) throw new Error("No AST given"); + return yield* (0, _transformation.run)(config, code, ast); +}); - self.fd = fd; - self.emit('open', fd); - self._read(); - }) +const transformFromAst = function transformFromAst(ast, code, opts, callback) { + if (typeof opts === "function") { + callback = opts; + opts = undefined; } - function WriteStream (path, options) { - if (!(this instanceof WriteStream)) return new WriteStream(path, options); + if (callback === undefined) { + return transformFromAstRunner.sync(ast, code, opts); + } - Stream.call(this); + transformFromAstRunner.errback(ast, code, opts, callback); +}; - this.path = path; - this.fd = null; - this.writable = true; +exports.transformFromAst = transformFromAst; +const transformFromAstSync = transformFromAstRunner.sync; +exports.transformFromAstSync = transformFromAstSync; +const transformFromAstAsync = transformFromAstRunner.async; +exports.transformFromAstAsync = transformFromAstAsync; - this.flags = 'w'; - this.encoding = 'binary'; - this.mode = 438; /*=0666*/ - this.bytesWritten = 0; +/***/ }), - options = options || {}; +/***/ 39037: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } +"use strict"; - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.start < 0) { - throw new Error('start must be >= zero'); - } - this.pos = this.start; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformFileAsync = exports.transformFileSync = exports.transformFile = void 0; - this.busy = false; - this._queue = []; +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } + _gensync = function () { + return data; + }; + + return data; } +var _config = _interopRequireDefault(__nccwpck_require__(73677)); + +var _transformation = __nccwpck_require__(16486); + +var fs = _interopRequireWildcard(__nccwpck_require__(10733)); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +({}); +const transformFileRunner = (0, _gensync().default)(function* (filename, opts) { + const options = Object.assign({}, opts, { + filename + }); + const config = yield* (0, _config.default)(options); + if (config === null) return null; + const code = yield* fs.readFile(filename, "utf8"); + return yield* (0, _transformation.run)(config, code); +}); +const transformFile = transformFileRunner.errback; +exports.transformFile = transformFile; +const transformFileSync = transformFileRunner.sync; +exports.transformFileSync = transformFileSync; +const transformFileAsync = transformFileRunner.async; +exports.transformFileAsync = transformFileAsync; /***/ }), -/***/ 3501: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 46442: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var constants = __nccwpck_require__(9140) +"use strict"; -var origCwd = process.cwd -var cwd = null -var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.transformAsync = exports.transformSync = exports.transform = void 0; -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -try { - process.cwd() -} catch (er) {} +function _gensync() { + const data = _interopRequireDefault(__nccwpck_require__(9621)); -// This check is needed until node.js 12 is required -if (typeof process.chdir === 'function') { - var chdir = process.chdir - process.chdir = function (d) { - cwd = null - chdir.call(process, d) - } - if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) + _gensync = function () { + return data; + }; + + return data; } -module.exports = patch +var _config = _interopRequireDefault(__nccwpck_require__(73677)); -function patch (fs) { - // (re-)implement some things that are known busted or missing. +var _transformation = __nccwpck_require__(16486); - // lchmod, broken prior to 0.6.2 - // back-port the fix here. - if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs) - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - // lutimes implementation, or no-op - if (!fs.lutimes) { - patchLutimes(fs) +const transformRunner = (0, _gensync().default)(function* transform(code, opts) { + const config = yield* (0, _config.default)(opts); + if (config === null) return null; + return yield* (0, _transformation.run)(config, code); +}); + +const transform = function transform(code, opts, callback) { + if (typeof opts === "function") { + callback = opts; + opts = undefined; } - // https://github.com/isaacs/node-graceful-fs/issues/4 - // Chown should not fail on einval or eperm if non-root. - // It should not fail on enosys ever, as this just indicates - // that a fs doesn't support the intended operation. + if (callback === undefined) return transformRunner.sync(code, opts); + transformRunner.errback(code, opts, callback); +}; - fs.chown = chownFix(fs.chown) - fs.fchown = chownFix(fs.fchown) - fs.lchown = chownFix(fs.lchown) +exports.transform = transform; +const transformSync = transformRunner.sync; +exports.transformSync = transformSync; +const transformAsync = transformRunner.async; +exports.transformAsync = transformAsync; - fs.chmod = chmodFix(fs.chmod) - fs.fchmod = chmodFix(fs.fchmod) - fs.lchmod = chmodFix(fs.lchmod) +/***/ }), - fs.chownSync = chownFixSync(fs.chownSync) - fs.fchownSync = chownFixSync(fs.fchownSync) - fs.lchownSync = chownFixSync(fs.lchownSync) +/***/ 28925: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - fs.chmodSync = chmodFixSync(fs.chmodSync) - fs.fchmodSync = chmodFixSync(fs.fchmodSync) - fs.lchmodSync = chmodFixSync(fs.lchmodSync) +"use strict"; - fs.stat = statFix(fs.stat) - fs.fstat = statFix(fs.fstat) - fs.lstat = statFix(fs.lstat) - fs.statSync = statFixSync(fs.statSync) - fs.fstatSync = statFixSync(fs.fstatSync) - fs.lstatSync = statFixSync(fs.lstatSync) +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = loadBlockHoistPlugin; - // if lchmod/lchown do not exist, then make them no-ops - if (fs.chmod && !fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - if (cb) process.nextTick(cb) - } - fs.lchmodSync = function () {} - } - if (fs.chown && !fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - if (cb) process.nextTick(cb) - } - fs.lchownSync = function () {} - } +function _sortBy() { + const data = _interopRequireDefault(__nccwpck_require__(94604)); - // on Windows, A/V software can lock the directory, causing this - // to fail with an EACCES or EPERM if the directory contains newly - // created files. Try again on failure, for up to 60 seconds. + _sortBy = function () { + return data; + }; - // Set the timeout this long because some Windows Anti-Virus, such as Parity - // bit9, may lock files for up to a minute, causing npm package install - // failures. Also, take care to yield the scheduler. Windows scheduling gives - // CPU to a busy looping process, which can cause the program causing the lock - // contention to be starved of CPU by node, so the contention doesn't resolve. - if (platform === "win32") { - fs.rename = typeof fs.rename !== 'function' ? fs.rename - : (function (fs$rename) { - function rename (from, to, cb) { - var start = Date.now() - var backoff = 0; - fs$rename(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") - && Date.now() - start < 60000) { - setTimeout(function() { - fs.stat(to, function (stater, st) { - if (stater && stater.code === "ENOENT") - fs$rename(from, to, CB); - else - cb(er) - }) - }, backoff) - if (backoff < 100) - backoff += 10; - return; - } - if (cb) cb(er) - }) - } - if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) - return rename - })(fs.rename) + return data; +} + +var _config = _interopRequireDefault(__nccwpck_require__(73677)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +let LOADED_PLUGIN; + +function loadBlockHoistPlugin() { + if (!LOADED_PLUGIN) { + const config = _config.default.sync({ + babelrc: false, + configFile: false, + plugins: [blockHoistPlugin] + }); + + LOADED_PLUGIN = config ? config.passes[0][0] : undefined; + if (!LOADED_PLUGIN) throw new Error("Assertion failure"); } - // if read() returns EAGAIN, then just try it again. - fs.read = typeof fs.read !== 'function' ? fs.read - : (function (fs$read) { - function read (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return fs$read.call(fs, fd, buffer, offset, length, position, callback) + return LOADED_PLUGIN; +} + +const blockHoistPlugin = { + name: "internal.blockHoist", + visitor: { + Block: { + exit({ + node + }) { + let hasChange = false; + + for (let i = 0; i < node.body.length; i++) { + const bodyNode = node.body[i]; + + if ((bodyNode == null ? void 0 : bodyNode._blockHoist) != null) { + hasChange = true; + break; } - callback_.apply(this, arguments) } + + if (!hasChange) return; + node.body = (0, _sortBy().default)(node.body, function (bodyNode) { + let priority = bodyNode == null ? void 0 : bodyNode._blockHoist; + if (priority == null) priority = 1; + if (priority === true) priority = 2; + return -1 * priority; + }); } - return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + } +}; - // This ensures `util.promisify` works as it does for native `fs.read`. - if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) - return read - })(fs.read) +/***/ }), - fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync - : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } - }})(fs.readSync) +/***/ 12211: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - function patchLchmod (fs) { - fs.lchmod = function (path, mode, callback) { - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - if (callback) callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - if (callback) callback(err || err2) - }) - }) - }) - } +"use strict"; - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var threw = true - var ret - try { - ret = fs.fchmodSync(fd, mode) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +function helpers() { + const data = _interopRequireWildcard(__nccwpck_require__(71475)); + + helpers = function () { + return data; + }; + + return data; +} + +function _traverse() { + const data = _interopRequireWildcard(__nccwpck_require__(50148)); + + _traverse = function () { + return data; + }; + + return data; +} + +function _codeFrame() { + const data = __nccwpck_require__(90147); + + _codeFrame = function () { + return data; + }; + + return data; +} + +function t() { + const data = _interopRequireWildcard(__nccwpck_require__(16535)); + + t = function () { + return data; + }; + + return data; +} + +function _helperModuleTransforms() { + const data = __nccwpck_require__(3665); + + _helperModuleTransforms = function () { + return data; + }; + + return data; +} + +function _semver() { + const data = _interopRequireDefault(__nccwpck_require__(39318)); + + _semver = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +const errorVisitor = { + enter(path, state) { + const loc = path.node.loc; + + if (loc) { + state.loc = loc; + path.stop(); } } - function patchLutimes (fs) { - if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - if (er) { - if (cb) cb(er) - return - } - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - if (cb) cb(er || er2) - }) - }) - }) - } +}; - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - var ret - var threw = true - try { - ret = fs.futimesSync(fd, at, mt) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } +class File { + constructor(options, { + code, + ast, + inputMap + }) { + this._map = new Map(); + this.opts = void 0; + this.declarations = {}; + this.path = null; + this.ast = {}; + this.scope = void 0; + this.metadata = {}; + this.code = ""; + this.inputMap = null; + this.hub = { + file: this, + getCode: () => this.code, + getScope: () => this.scope, + addHelper: this.addHelper.bind(this), + buildError: this.buildCodeFrameError.bind(this) + }; + this.opts = options; + this.code = code; + this.ast = ast; + this.inputMap = inputMap; + this.path = _traverse().NodePath.get({ + hub: this.hub, + parentPath: null, + parent: this.ast, + container: this.ast, + key: "program" + }).setContext(); + this.scope = this.path.scope; + } + + get shebang() { + const { + interpreter + } = this.path.node; + return interpreter ? interpreter.value : ""; + } - } else if (fs.futimes) { - fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } - fs.lutimesSync = function () {} + set shebang(value) { + if (value) { + this.path.get("interpreter").replaceWith(t().interpreterDirective(value)); + } else { + this.path.get("interpreter").remove(); } } - function chmodFix (orig) { - if (!orig) return orig - return function (target, mode, cb) { - return orig.call(fs, target, mode, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) + set(key, val) { + if (key === "helpersNamespace") { + throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'."); } + + this._map.set(key, val); } - function chmodFixSync (orig) { - if (!orig) return orig - return function (target, mode) { - try { - return orig.call(fs, target, mode) - } catch (er) { - if (!chownErOk(er)) throw er - } - } + get(key) { + return this._map.get(key); } + has(key) { + return this._map.has(key); + } - function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } + getModuleName() { + return (0, _helperModuleTransforms().getModuleName)(this.opts, this.opts); } - function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } + addImport() { + throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'."); } - function statFix (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - function callback (er, stats) { - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - } - if (cb) cb.apply(this, arguments) - } - return options ? orig.call(fs, target, options, callback) - : orig.call(fs, target, callback) + availableHelper(name, versionRange) { + let minVersion; + + try { + minVersion = helpers().minVersion(name); + } catch (err) { + if (err.code !== "BABEL_HELPER_UNKNOWN") throw err; + return false; } + + if (typeof versionRange !== "string") return true; + if (_semver().default.valid(versionRange)) versionRange = `^${versionRange}`; + return !_semver().default.intersects(`<${minVersion}`, versionRange) && !_semver().default.intersects(`>=8.0.0`, versionRange); } - function statFixSync (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options) { - var stats = options ? orig.call(fs, target, options) - : orig.call(fs, target) - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - } - return stats; + addHelper(name) { + const declar = this.declarations[name]; + if (declar) return t().cloneNode(declar); + const generator = this.get("helperGenerator"); + + if (generator) { + const res = generator(name); + if (res) return res; + } + + helpers().ensure(name, File); + const uid = this.declarations[name] = this.scope.generateUidIdentifier(name); + const dependencies = {}; + + for (const dep of helpers().getDependencies(name)) { + dependencies[dep] = this.addHelper(dep); } + + const { + nodes, + globals + } = helpers().get(name, dep => dependencies[dep], uid, Object.keys(this.scope.getAllBindings())); + globals.forEach(name => { + if (this.path.scope.hasBinding(name, true)) { + this.path.scope.rename(name); + } + }); + nodes.forEach(node => { + node._compact = true; + }); + this.path.unshiftContainer("body", nodes); + this.path.get("body").forEach(path => { + if (nodes.indexOf(path.node) === -1) return; + if (path.isVariableDeclaration()) this.scope.registerDeclaration(path); + }); + return uid; } - // ENOSYS means that the fs doesn't support the op. Just ignore - // that, because it doesn't matter. - // - // if there's no getuid, or if getuid() is something other - // than 0, and the error is EINVAL or EPERM, then just ignore - // it. - // - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // - // When running as root, or if other types of errors are - // encountered, then it's strict. - function chownErOk (er) { - if (!er) - return true + addTemplateObject() { + throw new Error("This function has been moved into the template literal transform itself."); + } - if (er.code === "ENOSYS") - return true + buildCodeFrameError(node, msg, Error = SyntaxError) { + let loc = node && (node.loc || node._loc); - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true + if (!loc && node) { + const state = { + loc: null + }; + (0, _traverse().default)(node, errorVisitor, this.scope, state); + loc = state.loc; + let txt = "This is an error on an internal node. Probably an internal error."; + if (loc) txt += " Location has been estimated."; + msg += ` (${txt})`; + } + + if (loc) { + const { + highlightCode = true + } = this.opts; + msg += "\n" + (0, _codeFrame().codeFrameColumns)(this.code, { + start: { + line: loc.start.line, + column: loc.start.column + 1 + }, + end: loc.end && loc.start.line === loc.end.line ? { + line: loc.end.line, + column: loc.end.column + 1 + } : undefined + }, { + highlightCode + }); } - return false + return new Error(msg); } + } +exports["default"] = File; /***/ }), -/***/ 9599: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 48358: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -const fs = __nccwpck_require__(9896); -const sections = __nccwpck_require__(9495); -const defaults = __nccwpck_require__(7545); -const stringify = __nccwpck_require__(4710); -const excerpt = __nccwpck_require__(7894); -const engines = __nccwpck_require__(4452); -const toFile = __nccwpck_require__(8073); -const parse = __nccwpck_require__(8120); -const utils = __nccwpck_require__(8698); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = generateCode; -/** - * Takes a string or object with `content` property, extracts - * and parses front-matter from the string, then returns an object - * with `data`, `content` and other [useful properties](#returned-object). - * - * ```js - * const matter = require('gray-matter'); - * console.log(matter('---\ntitle: Home\n---\nOther stuff')); - * //=> { data: { title: 'Home'}, content: 'Other stuff' } - * ``` - * @param {Object|String} `input` String, or object with `content` string - * @param {Object} `options` - * @return {Object} - * @api public - */ +function _convertSourceMap() { + const data = _interopRequireDefault(__nccwpck_require__(25288)); -function matter(input, options) { - if (input === '') { - return { data: {}, content: input, excerpt: '', orig: input }; - } + _convertSourceMap = function () { + return data; + }; - let file = toFile(input); - const cached = matter.cache[file.content]; + return data; +} - if (!options) { - if (cached) { - file = Object.assign({}, cached); - file.orig = cached.orig; - return file; - } +function _generator() { + const data = _interopRequireDefault(__nccwpck_require__(12123)); - // only cache if there are no options passed. if we cache when options - // are passed, we would need to also cache options values, which would - // negate any performance benefits of caching - matter.cache[file.content] = file; - } + _generator = function () { + return data; + }; - return parseMatter(file, options); + return data; } -/** - * Parse front matter - */ +var _mergeMap = _interopRequireDefault(__nccwpck_require__(5890)); -function parseMatter(file, options) { - const opts = defaults(options); - const open = opts.delimiters[0]; - const close = '\n' + opts.delimiters[1]; - let str = file.content; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (opts.language) { - file.language = opts.language; - } +function generateCode(pluginPasses, file) { + const { + opts, + ast, + code, + inputMap + } = file; + const results = []; - // get the length of the opening delimiter - const openLen = open.length; - if (!utils.startsWith(str, open, openLen)) { - excerpt(file, opts); - return file; + for (const plugins of pluginPasses) { + for (const plugin of plugins) { + const { + generatorOverride + } = plugin; + + if (generatorOverride) { + const result = generatorOverride(ast, opts.generatorOpts, code, _generator().default); + if (result !== undefined) results.push(result); + } + } } - // if the next character after the opening delimiter is - // a character from the delimiter, then it's not a front- - // matter delimiter - if (str.charAt(openLen) === open.slice(-1)) { - return file; + let result; + + if (results.length === 0) { + result = (0, _generator().default)(ast, opts.generatorOpts, code); + } else if (results.length === 1) { + result = results[0]; + + if (typeof result.then === "function") { + throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`); + } + } else { + throw new Error("More than one plugin attempted to override codegen."); } - // strip the opening delimiter - str = str.slice(openLen); - const len = str.length; + let { + code: outputCode, + map: outputMap + } = result; - // use the language defined after first delimiter, if it exists - const language = matter.language(str, opts); - if (language.name) { - file.language = language.name; - str = str.slice(language.raw.length); + if (outputMap && inputMap) { + outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap); } - // get the index of the closing delimiter - let closeIndex = str.indexOf(close); - if (closeIndex === -1) { - closeIndex = len; + if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") { + outputCode += "\n" + _convertSourceMap().default.fromObject(outputMap).toComment(); } - // get the raw front-matter block - file.matter = str.slice(0, closeIndex); + if (opts.sourceMaps === "inline") { + outputMap = null; + } - const block = file.matter.replace(/^\s*#[^\n]+/gm, '').trim(); - if (block === '') { - file.isEmpty = true; - file.empty = file.content; - file.data = {}; - } else { + return { + outputCode, + outputMap + }; +} - // create file.data by parsing the raw file.matter block - file.data = parse(file.language, file.matter, opts); - } +/***/ }), - // update file.content - if (closeIndex === len) { - file.content = ''; - } else { - file.content = str.slice(closeIndex + close.length); - if (file.content[0] === '\r') { - file.content = file.content.slice(1); +/***/ 5890: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = mergeSourceMap; + +function _sourceMap() { + const data = _interopRequireDefault(__nccwpck_require__(62618)); + + _sourceMap = function () { + return data; + }; + + return data; +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function mergeSourceMap(inputMap, map) { + const input = buildMappingData(inputMap); + const output = buildMappingData(map); + const mergedGenerator = new (_sourceMap().default.SourceMapGenerator)(); + + for (const { + source + } of input.sources) { + if (typeof source.content === "string") { + mergedGenerator.setSourceContent(source.path, source.content); } - if (file.content[0] === '\n') { - file.content = file.content.slice(1); + } + + if (output.sources.length === 1) { + const defaultSource = output.sources[0]; + const insertedMappings = new Map(); + eachInputGeneratedRange(input, (generated, original, source) => { + eachOverlappingGeneratedOutputRange(defaultSource, generated, item => { + const key = makeMappingKey(item); + if (insertedMappings.has(key)) return; + insertedMappings.set(key, item); + mergedGenerator.addMapping({ + source: source.path, + original: { + line: original.line, + column: original.columnStart + }, + generated: { + line: item.line, + column: item.columnStart + }, + name: original.name + }); + }); + }); + + for (const item of insertedMappings.values()) { + if (item.columnEnd === Infinity) { + continue; + } + + const clearItem = { + line: item.line, + columnStart: item.columnEnd + }; + const key = makeMappingKey(clearItem); + + if (insertedMappings.has(key)) { + continue; + } + + mergedGenerator.addMapping({ + generated: { + line: clearItem.line, + column: clearItem.columnStart + } + }); } } - excerpt(file, opts); + const result = mergedGenerator.toJSON(); - if (opts.sections === true || typeof opts.section === 'function') { - sections(file, opts.section); + if (typeof input.sourceRoot === "string") { + result.sourceRoot = input.sourceRoot; } - return file; + + return result; } -/** - * Expose engines - */ +function makeMappingKey(item) { + return `${item.line}/${item.columnStart}`; +} -matter.engines = engines; +function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) { + const overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange); -/** - * Stringify an object to YAML or the specified language, and - * append it to the given string. By default, only YAML and JSON - * can be stringified. See the [engines](#engines) section to learn - * how to stringify other languages. - * - * ```js - * console.log(matter.stringify('foo bar baz', {title: 'Home'})); - * // results in: - * // --- - * // title: Home - * // --- - * // foo bar baz - * ``` - * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string. - * @param {Object} `data` Front matter to stringify. - * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml]. - * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string. - * @api public - */ + for (const { + generated + } of overlappingOriginal) { + for (const item of generated) { + callback(item); + } + } +} -matter.stringify = function(file, data, options) { - if (typeof file === 'string') file = matter(file, options); - return stringify(file, data, options); -}; +function filterApplicableOriginalRanges({ + mappings +}, { + line, + columnStart, + columnEnd +}) { + return filterSortedArray(mappings, ({ + original: outOriginal + }) => { + if (line > outOriginal.line) return -1; + if (line < outOriginal.line) return 1; + if (columnStart >= outOriginal.columnEnd) return -1; + if (columnEnd <= outOriginal.columnStart) return 1; + return 0; + }); +} -/** - * Synchronously read a file from the file system and parse - * front matter. Returns the same object as the [main function](#matter). - * - * ```js - * const file = matter.read('./content/blog-post.md'); - * ``` - * @param {String} `filepath` file path of the file to read. - * @param {Object} `options` [Options](#options) to pass to gray-matter. - * @return {Object} Returns [an object](#returned-object) with `data` and `content` - * @api public - */ +function eachInputGeneratedRange(map, callback) { + for (const { + source, + mappings + } of map.sources) { + for (const { + original, + generated + } of mappings) { + for (const item of generated) { + callback(item, original, source); + } + } + } +} -matter.read = function(filepath, options) { - const str = fs.readFileSync(filepath, 'utf8'); - const file = matter(str, options); - file.path = filepath; - return file; -}; +function buildMappingData(map) { + const consumer = new (_sourceMap().default.SourceMapConsumer)(Object.assign({}, map, { + sourceRoot: null + })); + const sources = new Map(); + const mappings = new Map(); + let last = null; + consumer.computeColumnSpans(); + consumer.eachMapping(m => { + if (m.originalLine === null) return; + let source = sources.get(m.source); -/** - * Returns true if the given `string` has front matter. - * @param {String} `string` - * @param {Object} `options` - * @return {Boolean} True if front matter exists. - * @api public - */ + if (!source) { + source = { + path: m.source, + content: consumer.sourceContentFor(m.source, true) + }; + sources.set(m.source, source); + } -matter.test = function(str, options) { - return utils.startsWith(str, defaults(options).delimiters[0]); -}; + let sourceData = mappings.get(source); -/** - * Detect the language to use, if one is defined after the - * first front-matter delimiter. - * @param {String} `string` - * @param {Object} `options` - * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed - */ + if (!sourceData) { + sourceData = { + source, + mappings: [] + }; + mappings.set(source, sourceData); + } -matter.language = function(str, options) { - const opts = defaults(options); - const open = opts.delimiters[0]; + const obj = { + line: m.originalLine, + columnStart: m.originalColumn, + columnEnd: Infinity, + name: m.name + }; - if (matter.test(str)) { - str = str.slice(open.length); - } + if (last && last.source === source && last.mapping.line === m.originalLine) { + last.mapping.columnEnd = m.originalColumn; + } - const language = str.slice(0, str.search(/\r?\n/)); + last = { + source, + mapping: obj + }; + sourceData.mappings.push({ + original: obj, + generated: consumer.allGeneratedPositionsFor({ + source: m.source, + line: m.originalLine, + column: m.originalColumn + }).map(item => ({ + line: item.line, + columnStart: item.column, + columnEnd: item.lastColumn + 1 + })) + }); + }, null, _sourceMap().default.SourceMapConsumer.ORIGINAL_ORDER); return { - raw: language, - name: language ? language.trim() : '' + file: map.file, + sourceRoot: map.sourceRoot, + sources: Array.from(mappings.values()) }; -}; +} -/** - * Expose `matter` - */ +function findInsertionLocation(array, callback) { + let left = 0; + let right = array.length; -matter.cache = {}; -matter.clearCache = function() { - matter.cache = {}; -}; -module.exports = matter; + while (left < right) { + const mid = Math.floor((left + right) / 2); + const item = array[mid]; + const result = callback(item); + if (result === 0) { + left = mid; + break; + } -/***/ }), + if (result >= 0) { + right = mid; + } else { + left = mid + 1; + } + } -/***/ 7545: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + let i = left; -"use strict"; + if (i < array.length) { + while (i >= 0 && callback(array[i]) >= 0) { + i--; + } + return i + 1; + } -const engines = __nccwpck_require__(4452); -const utils = __nccwpck_require__(8698); + return i; +} -module.exports = function(options) { - const opts = Object.assign({}, options); +function filterSortedArray(array, callback) { + const start = findInsertionLocation(array, callback); + const results = []; - // ensure that delimiters are an array - opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---'); - if (opts.delimiters.length === 1) { - opts.delimiters.push(opts.delimiters[0]); + for (let i = start; i < array.length && callback(array[i]) === 0; i++) { + results.push(array[i]); } - opts.language = (opts.language || opts.lang || 'yaml').toLowerCase(); - opts.engines = Object.assign({}, engines, opts.parsers, opts.engines); - return opts; -}; - + return results; +} /***/ }), -/***/ 5921: -/***/ ((module) => { +/***/ 16486: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -module.exports = function(name, options) { - let engine = options.engines[name] || options.engines[aliase(name)]; - if (typeof engine === 'undefined') { - throw new Error('gray-matter engine "' + name + '" is not registered'); - } - if (typeof engine === 'function') { - engine = { parse: engine }; - } - return engine; -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.run = run; -function aliase(name) { - switch (name.toLowerCase()) { - case 'js': - case 'javascript': - return 'javascript'; - case 'coffee': - case 'coffeescript': - case 'cson': - return 'coffee'; - case 'yaml': - case 'yml': - return 'yaml'; - default: { - return name; - } - } -} +function _traverse() { + const data = _interopRequireDefault(__nccwpck_require__(50148)); + _traverse = function () { + return data; + }; -/***/ }), + return data; +} -/***/ 4452: -/***/ ((module, exports, __nccwpck_require__) => { +var _pluginPass = _interopRequireDefault(__nccwpck_require__(20937)); -"use strict"; +var _blockHoistPlugin = _interopRequireDefault(__nccwpck_require__(28925)); +var _normalizeOpts = _interopRequireDefault(__nccwpck_require__(74944)); -const yaml = __nccwpck_require__(4281); +var _normalizeFile = _interopRequireDefault(__nccwpck_require__(99168)); -/** - * Default engines - */ +var _generate = _interopRequireDefault(__nccwpck_require__(48358)); -const engines = exports = module.exports; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** - * YAML - */ +function* run(config, code, ast) { + const file = yield* (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code, ast); + const opts = file.opts; -engines.yaml = { - parse: yaml.safeLoad.bind(yaml), - stringify: yaml.safeDump.bind(yaml) -}; + try { + yield* transformFile(file, config.passes); + } catch (e) { + var _opts$filename; -/** - * JSON - */ + e.message = `${(_opts$filename = opts.filename) != null ? _opts$filename : "unknown"}: ${e.message}`; -engines.json = { - parse: JSON.parse.bind(JSON), - stringify: function(obj, options) { - const opts = Object.assign({replacer: null, space: 2}, options); - return JSON.stringify(obj, opts.replacer, opts.space); + if (!e.code) { + e.code = "BABEL_TRANSFORM_ERROR"; + } + + throw e; } -}; -/** - * JavaScript - */ + let outputCode, outputMap; -engines.javascript = { - parse: function parse(str, options, wrap) { - /* eslint no-eval: 0 */ - try { - if (wrap !== false) { - str = '(function() {\nreturn ' + str.trim() + ';\n}());'; - } - return eval(str) || {}; - } catch (err) { - if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) { - return parse(str, options, false); - } - throw new SyntaxError(err); + try { + if (opts.code !== false) { + ({ + outputCode, + outputMap + } = (0, _generate.default)(config.passes, file)); } - }, - stringify: function() { - throw new Error('stringifying JavaScript is not supported'); - } -}; + } catch (e) { + var _opts$filename2; + e.message = `${(_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown"}: ${e.message}`; -/***/ }), + if (!e.code) { + e.code = "BABEL_GENERATE_ERROR"; + } -/***/ 7894: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + throw e; + } -"use strict"; + return { + metadata: file.metadata, + options: opts, + ast: opts.ast === true ? file.ast : null, + code: outputCode === undefined ? null : outputCode, + map: outputMap === undefined ? null : outputMap, + sourceType: file.ast.program.sourceType + }; +} +function* transformFile(file, pluginPasses) { + for (const pluginPairs of pluginPasses) { + const passPairs = []; + const passes = []; + const visitors = []; -const defaults = __nccwpck_require__(7545); + for (const plugin of pluginPairs.concat([(0, _blockHoistPlugin.default)()])) { + const pass = new _pluginPass.default(file, plugin.key, plugin.options); + passPairs.push([plugin, pass]); + passes.push(pass); + visitors.push(plugin.visitor); + } -module.exports = function(file, options) { - const opts = defaults(options); + for (const [plugin, pass] of passPairs) { + const fn = plugin.pre; - if (file.data == null) { - file.data = {}; - } + if (fn) { + const result = fn.call(pass, file); + yield* []; - if (typeof opts.excerpt === 'function') { - return opts.excerpt(file, opts); - } + if (isThenable(result)) { + throw new Error(`You appear to be using an plugin with an async .pre, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + } + } - const sep = file.data.excerpt_separator || opts.excerpt_separator; - if (sep == null && (opts.excerpt === false || opts.excerpt == null)) { - return file; - } + const visitor = _traverse().default.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod); - const delimiter = typeof opts.excerpt === 'string' - ? opts.excerpt - : (sep || opts.delimiters[0]); + (0, _traverse().default)(file.ast, visitor, file.scope); - // if enabled, get the excerpt defined after front-matter - const idx = file.content.indexOf(delimiter); - if (idx !== -1) { - file.excerpt = file.content.slice(0, idx); - } + for (const [plugin, pass] of passPairs) { + const fn = plugin.post; - return file; -}; + if (fn) { + const result = fn.call(pass, file); + yield* []; + + if (isThenable(result)) { + throw new Error(`You appear to be using an plugin with an async .post, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + } + } + } +} +function isThenable(val) { + return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function"; +} /***/ }), -/***/ 8120: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 99168: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -const getEngine = __nccwpck_require__(5921); -const defaults = __nccwpck_require__(7545); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = normalizeFile; -module.exports = function(language, str, options) { - const opts = defaults(options); - const engine = getEngine(language, opts); - if (typeof engine.parse !== 'function') { - throw new TypeError('expected "' + language + '.parse" to be a function'); - } - return engine.parse(str, opts); -}; +function _fs() { + const data = _interopRequireDefault(__nccwpck_require__(79896)); + _fs = function () { + return data; + }; -/***/ }), + return data; +} -/***/ 4710: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); -"use strict"; + _path = function () { + return data; + }; + return data; +} -const typeOf = __nccwpck_require__(5140); -const getEngine = __nccwpck_require__(5921); -const defaults = __nccwpck_require__(7545); +function _debug() { + const data = _interopRequireDefault(__nccwpck_require__(2830)); -module.exports = function(file, data, options) { - if (data == null && options == null) { - switch (typeOf(file)) { - case 'object': - data = file.data; - options = {}; - break; - case 'string': - return file; - default: { - throw new TypeError('expected file to be a string or object'); - } - } - } + _debug = function () { + return data; + }; - const str = file.content; - const opts = defaults(options); - if (data == null) { - if (!opts.data) return file; - data = opts.data; - } + return data; +} - const language = file.language || opts.language; - const engine = getEngine(language, opts); - if (typeof engine.stringify !== 'function') { - throw new TypeError('expected "' + language + '.stringify" to be a function'); - } +function _cloneDeep() { + const data = _interopRequireDefault(__nccwpck_require__(80542)); - data = Object.assign({}, file.data, data); - const open = opts.delimiters[0]; - const close = opts.delimiters[1]; - const matter = engine.stringify(data, options).trim(); - let buf = ''; + _cloneDeep = function () { + return data; + }; - if (matter !== '{}') { - buf = newline(open) + newline(matter) + newline(close); - } + return data; +} - if (typeof file.excerpt === 'string' && file.excerpt !== '') { - if (str.indexOf(file.excerpt.trim()) === -1) { - buf += newline(file.excerpt) + newline(close); - } - } +function t() { + const data = _interopRequireWildcard(__nccwpck_require__(16535)); - return buf + newline(str); -}; + t = function () { + return data; + }; -function newline(str) { - return str.slice(-1) !== '\n' ? str + '\n' : str; + return data; } +function _convertSourceMap() { + const data = _interopRequireDefault(__nccwpck_require__(25288)); -/***/ }), + _convertSourceMap = function () { + return data; + }; -/***/ 8073: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return data; +} -"use strict"; +var _file = _interopRequireDefault(__nccwpck_require__(12211)); +var _parser = _interopRequireDefault(__nccwpck_require__(99904)); -const typeOf = __nccwpck_require__(5140); -const stringify = __nccwpck_require__(4710); -const utils = __nccwpck_require__(8698); +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } -/** - * Normalize the given value to ensure an object is returned - * with the expected properties. - */ +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } -module.exports = function(file) { - if (typeOf(file) !== 'object') { - file = { content: file }; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (typeOf(file.data) !== 'object') { - file.data = {}; - } +const debug = (0, _debug().default)("babel:transform:file"); +const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000; - // if file was passed as an object, ensure that - // "file.content" is set - if (file.contents && file.content == null) { - file.content = file.contents; - } +function* normalizeFile(pluginPasses, options, code, ast) { + code = `${code || ""}`; - // set non-enumerable properties on the file object - utils.define(file, 'orig', utils.toBuffer(file.content)); - utils.define(file, 'language', file.language || ''); - utils.define(file, 'matter', file.matter || ''); - utils.define(file, 'stringify', function(data, options) { - if (options && options.language) { - file.language = options.language; + if (ast) { + if (ast.type === "Program") { + ast = t().file(ast, [], []); + } else if (ast.type !== "File") { + throw new Error("AST root must be a Program or File node"); } - return stringify(file, data, options); - }); - // strip BOM and ensure that "file.content" is a string - file.content = utils.toString(file.content); - file.isEmpty = false; - file.excerpt = ''; - return file; -}; + const { + cloneInputAst + } = options; + if (cloneInputAst) { + ast = (0, _cloneDeep().default)(ast); + } + } else { + ast = yield* (0, _parser.default)(pluginPasses, options, code); + } -/***/ }), + let inputMap = null; -/***/ 8698: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (options.inputSourceMap !== false) { + if (typeof options.inputSourceMap === "object") { + inputMap = _convertSourceMap().default.fromObject(options.inputSourceMap); + } -"use strict"; + if (!inputMap) { + const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast); + if (lastComment) { + try { + inputMap = _convertSourceMap().default.fromComment(lastComment); + } catch (err) { + debug("discarding unknown inline input sourcemap", err); + } + } + } -const stripBom = __nccwpck_require__(1389); -const typeOf = __nccwpck_require__(5140); + if (!inputMap) { + const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast); -exports.define = function(obj, key, val) { - Reflect.defineProperty(obj, key, { - enumerable: false, - configurable: true, - writable: true, - value: val - }); -}; + if (typeof options.filename === "string" && lastComment) { + try { + const match = EXTERNAL_SOURCEMAP_REGEX.exec(lastComment); -/** - * Returns true if `val` is a buffer - */ + const inputMapContent = _fs().default.readFileSync(_path().default.resolve(_path().default.dirname(options.filename), match[1])); -exports.isBuffer = function(val) { - return typeOf(val) === 'buffer'; -}; + if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) { + debug("skip merging input map > 1 MB"); + } else { + inputMap = _convertSourceMap().default.fromJSON(inputMapContent); + } + } catch (err) { + debug("discarding unknown file input sourcemap", err); + } + } else if (lastComment) { + debug("discarding un-loadable file input sourcemap"); + } + } + } -/** - * Returns true if `val` is an object - */ + return new _file.default(options, { + code, + ast, + inputMap + }); +} -exports.isObject = function(val) { - return typeOf(val) === 'object'; -}; +const INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/; +const EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/; -/** - * Cast `input` to a buffer - */ +function extractCommentsFromList(regex, comments, lastComment) { + if (comments) { + comments = comments.filter(({ + value + }) => { + if (regex.test(value)) { + lastComment = value; + return false; + } -exports.toBuffer = function(input) { - return typeof input === 'string' ? Buffer.from(input) : input; -}; + return true; + }); + } -/** - * Cast `val` to a string. - */ + return [comments, lastComment]; +} -exports.toString = function(input) { - if (exports.isBuffer(input)) return stripBom(String(input)); - if (typeof input !== 'string') { - throw new TypeError('expected input to be a string or buffer'); - } - return stripBom(input); -}; +function extractComments(regex, ast) { + let lastComment = null; + t().traverseFast(ast, node => { + [node.leadingComments, lastComment] = extractCommentsFromList(regex, node.leadingComments, lastComment); + [node.innerComments, lastComment] = extractCommentsFromList(regex, node.innerComments, lastComment); + [node.trailingComments, lastComment] = extractCommentsFromList(regex, node.trailingComments, lastComment); + }); + return lastComment; +} -/** - * Cast `val` to an array. - */ +/***/ }), -exports.arrayify = function(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -}; +/***/ 74944: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -/** - * Returns true if `str` starts with `substr`. - */ +"use strict"; -exports.startsWith = function(str, substr, len) { - if (typeof len !== 'number') len = substr.length; - return str.slice(0, len) === substr; -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = normalizeOptions; -/***/ }), +function _path() { + const data = _interopRequireDefault(__nccwpck_require__(16928)); -/***/ 6403: -/***/ ((module) => { + _path = function () { + return data; + }; -"use strict"; -/*! - * is-extendable <https://github.com/jonschlinkert/is-extendable> - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ + return data; +} +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function normalizeOptions(config) { + const { + filename, + cwd, + filenameRelative = typeof filename === "string" ? _path().default.relative(cwd, filename) : "unknown", + sourceType = "module", + inputSourceMap, + sourceMaps = !!inputSourceMap, + moduleRoot, + sourceRoot = moduleRoot, + sourceFileName = _path().default.basename(filenameRelative), + comments = true, + compact = "auto" + } = config.options; + const opts = config.options; + const options = Object.assign({}, opts, { + parserOpts: Object.assign({ + sourceType: _path().default.extname(filenameRelative) === ".mjs" ? "module" : sourceType, + sourceFileName: filename, + plugins: [] + }, opts.parserOpts), + generatorOpts: Object.assign({ + filename, + auxiliaryCommentBefore: opts.auxiliaryCommentBefore, + auxiliaryCommentAfter: opts.auxiliaryCommentAfter, + retainLines: opts.retainLines, + comments, + shouldPrintComment: opts.shouldPrintComment, + compact, + minified: opts.minified, + sourceMaps, + sourceRoot, + sourceFileName + }, opts.generatorOpts) + }); -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; + for (const plugins of config.passes) { + for (const plugin of plugins) { + if (plugin.manipulateOptions) { + plugin.manipulateOptions(options, options.parserOpts); + } + } + } + return options; +} /***/ }), -/***/ 4281: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 20937: +/***/ ((__unused_webpack_module, exports) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +class PluginPass { + constructor(file, key, options) { + this._map = new Map(); + this.key = void 0; + this.file = void 0; + this.opts = void 0; + this.cwd = void 0; + this.filename = void 0; + this.key = key; + this.file = file; + this.opts = options || {}; + this.cwd = file.opts.cwd; + this.filename = file.opts.filename; + } -var yaml = __nccwpck_require__(4040); + set(key, val) { + this._map.set(key, val); + } + get(key) { + return this._map.get(key); + } -module.exports = yaml; + availableHelper(name, versionRange) { + return this.file.availableHelper(name, versionRange); + } + addHelper(name) { + return this.file.addHelper(name); + } + + addImport() { + return this.file.addImport(); + } + + getModuleName() { + return this.file.getModuleName(); + } + + buildCodeFrameError(node, msg, Error) { + return this.file.buildCodeFrameError(node, msg, Error); + } + +} + +exports["default"] = PluginPass; /***/ }), -/***/ 4040: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 25683: +/***/ ((__unused_webpack_module, exports) => { "use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.declare = declare; + +function declare(builder) { + return (api, options, dirname) => { + if (!api.assertVersion) { + api = Object.assign(copyApiObject(api), { + assertVersion(range) { + throwVersionError(range, api.version); + } -var loader = __nccwpck_require__(5868); -var dumper = __nccwpck_require__(5078); - + }); + } -function deprecated(name) { - return function () { - throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + return builder(api, options || {}, dirname); }; } +function copyApiObject(api) { + let proto = null; -module.exports.Type = __nccwpck_require__(323); -module.exports.Schema = __nccwpck_require__(3487); -module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(6810); -module.exports.JSON_SCHEMA = __nccwpck_require__(6613); -module.exports.CORE_SCHEMA = __nccwpck_require__(5116); -module.exports.DEFAULT_SAFE_SCHEMA = __nccwpck_require__(6032); -module.exports.DEFAULT_FULL_SCHEMA = __nccwpck_require__(948); -module.exports.load = loader.load; -module.exports.loadAll = loader.loadAll; -module.exports.safeLoad = loader.safeLoad; -module.exports.safeLoadAll = loader.safeLoadAll; -module.exports.dump = dumper.dump; -module.exports.safeDump = dumper.safeDump; -module.exports.YAMLException = __nccwpck_require__(5622); - -// Deprecated schema names from JS-YAML 2.0.x -module.exports.MINIMAL_SCHEMA = __nccwpck_require__(6810); -module.exports.SAFE_SCHEMA = __nccwpck_require__(6032); -module.exports.DEFAULT_SCHEMA = __nccwpck_require__(948); + if (typeof api.version === "string" && /^7\./.test(api.version)) { + proto = Object.getPrototypeOf(api); -// Deprecated functions from JS-YAML 1.x.x -module.exports.scan = deprecated('scan'); -module.exports.parse = deprecated('parse'); -module.exports.compose = deprecated('compose'); -module.exports.addConstructor = deprecated('addConstructor'); + if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) { + proto = null; + } + } + return Object.assign({}, proto, api); +} -/***/ }), +function has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} -/***/ 4206: -/***/ ((module) => { +function throwVersionError(range, version) { + if (typeof range === "number") { + if (!Number.isInteger(range)) { + throw new Error("Expected string or integer value."); + } -"use strict"; + range = `^${range}.0.0-0`; + } + if (typeof range !== "string") { + throw new Error("Expected string or integer value."); + } + const limit = Error.stackTraceLimit; -function isNothing(subject) { - return (typeof subject === 'undefined') || (subject === null); -} + if (typeof limit === "number" && limit < 25) { + Error.stackTraceLimit = 25; + } + let err; -function isObject(subject) { - return (typeof subject === 'object') && (subject !== null); -} - + if (version.slice(0, 2) === "7.") { + err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); + } else { + err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); + } -function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; + if (typeof limit === "number") { + Error.stackTraceLimit = limit; + } - return [ sequence ]; + throw Object.assign(err, { + code: "BABEL_VERSION_UNSUPPORTED", + version, + range + }); } +/***/ }), -function extend(target, source) { - var index, length, key, sourceKeys; +/***/ 16186: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if (source) { - sourceKeys = Object.keys(source); +"use strict"; - for (index = 0, length = sourceKeys.length; index < length; index += 1) { - key = sourceKeys[index]; - target[key] = source[key]; - } - } - return target; -} +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _helperPluginUtils = __nccwpck_require__(25683); -function repeat(string, count) { - var result = '', cycle; +var _pluginSyntaxObjectRestSpread = _interopRequireDefault(__nccwpck_require__(55165)); - for (cycle = 0; cycle < count; cycle += 1) { - result += string; - } +var _core = __nccwpck_require__(85414); - return result; -} +var _pluginTransformParameters = __nccwpck_require__(32519); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function isNegativeZero(number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); -} +const ZERO_REFS = (() => { + const node = _core.types.identifier("a"); + const property = _core.types.objectProperty(_core.types.identifier("key"), node); -module.exports.isNothing = isNothing; -module.exports.isObject = isObject; -module.exports.toArray = toArray; -module.exports.repeat = repeat; -module.exports.isNegativeZero = isNegativeZero; -module.exports.extend = extend; + const pattern = _core.types.objectPattern([property]); + return _core.types.isReferenced(node, property, pattern) ? 1 : 0; +})(); -/***/ }), +var _default = (0, _helperPluginUtils.declare)((api, opts) => { + api.assertVersion(7); + const { + useBuiltIns = false, + loose = false + } = opts; -/***/ 5078: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (typeof loose !== "boolean") { + throw new Error(".loose must be a boolean, or undefined"); + } -"use strict"; + function getExtendsHelper(file) { + return useBuiltIns ? _core.types.memberExpression(_core.types.identifier("Object"), _core.types.identifier("assign")) : file.addHelper("extends"); + } + function hasRestElement(path) { + let foundRestElement = false; + visitRestElements(path, restElement => { + foundRestElement = true; + restElement.stop(); + }); + return foundRestElement; + } -/*eslint-disable no-use-before-define*/ + function hasObjectPatternRestElement(path) { + let foundRestElement = false; + visitRestElements(path, restElement => { + if (restElement.parentPath.isObjectPattern()) { + foundRestElement = true; + restElement.stop(); + } + }); + return foundRestElement; + } -var common = __nccwpck_require__(4206); -var YAMLException = __nccwpck_require__(5622); -var DEFAULT_FULL_SCHEMA = __nccwpck_require__(948); -var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(6032); + function visitRestElements(path, visitor) { + path.traverse({ + Expression(path) { + const parentType = path.parent.type; -var _toString = Object.prototype.toString; -var _hasOwnProperty = Object.prototype.hasOwnProperty; + if (parentType === "AssignmentPattern" && path.key === "right" || parentType === "ObjectProperty" && path.parent.computed && path.key === "key") { + path.skip(); + } + }, -var CHAR_TAB = 0x09; /* Tab */ -var CHAR_LINE_FEED = 0x0A; /* LF */ -var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ -var CHAR_SPACE = 0x20; /* Space */ -var CHAR_EXCLAMATION = 0x21; /* ! */ -var CHAR_DOUBLE_QUOTE = 0x22; /* " */ -var CHAR_SHARP = 0x23; /* # */ -var CHAR_PERCENT = 0x25; /* % */ -var CHAR_AMPERSAND = 0x26; /* & */ -var CHAR_SINGLE_QUOTE = 0x27; /* ' */ -var CHAR_ASTERISK = 0x2A; /* * */ -var CHAR_COMMA = 0x2C; /* , */ -var CHAR_MINUS = 0x2D; /* - */ -var CHAR_COLON = 0x3A; /* : */ -var CHAR_EQUALS = 0x3D; /* = */ -var CHAR_GREATER_THAN = 0x3E; /* > */ -var CHAR_QUESTION = 0x3F; /* ? */ -var CHAR_COMMERCIAL_AT = 0x40; /* @ */ -var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ -var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ -var CHAR_GRAVE_ACCENT = 0x60; /* ` */ -var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ -var CHAR_VERTICAL_LINE = 0x7C; /* | */ -var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + RestElement: visitor + }); + } -var ESCAPE_SEQUENCES = {}; + function hasSpread(node) { + for (const prop of node.properties) { + if (_core.types.isSpreadElement(prop)) { + return true; + } + } -ESCAPE_SEQUENCES[0x00] = '\\0'; -ESCAPE_SEQUENCES[0x07] = '\\a'; -ESCAPE_SEQUENCES[0x08] = '\\b'; -ESCAPE_SEQUENCES[0x09] = '\\t'; -ESCAPE_SEQUENCES[0x0A] = '\\n'; -ESCAPE_SEQUENCES[0x0B] = '\\v'; -ESCAPE_SEQUENCES[0x0C] = '\\f'; -ESCAPE_SEQUENCES[0x0D] = '\\r'; -ESCAPE_SEQUENCES[0x1B] = '\\e'; -ESCAPE_SEQUENCES[0x22] = '\\"'; -ESCAPE_SEQUENCES[0x5C] = '\\\\'; -ESCAPE_SEQUENCES[0x85] = '\\N'; -ESCAPE_SEQUENCES[0xA0] = '\\_'; -ESCAPE_SEQUENCES[0x2028] = '\\L'; -ESCAPE_SEQUENCES[0x2029] = '\\P'; + return false; + } -var DEPRECATED_BOOLEANS_SYNTAX = [ - 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', - 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' -]; + function extractNormalizedKeys(path) { + const props = path.node.properties; + const keys = []; + let allLiteral = true; -function compileStyleMap(schema, map) { - var result, keys, index, length, tag, style, type; + for (const prop of props) { + if (_core.types.isIdentifier(prop.key) && !prop.computed) { + keys.push(_core.types.stringLiteral(prop.key.name)); + } else if (_core.types.isTemplateLiteral(prop.key)) { + keys.push(_core.types.cloneNode(prop.key)); + } else if (_core.types.isLiteral(prop.key)) { + keys.push(_core.types.stringLiteral(String(prop.key.value))); + } else { + keys.push(_core.types.cloneNode(prop.key)); + allLiteral = false; + } + } - if (map === null) return {}; + return { + keys, + allLiteral + }; + } - result = {}; - keys = Object.keys(map); + function replaceImpureComputedKeys(properties, scope) { + const impureComputedPropertyDeclarators = []; - for (index = 0, length = keys.length; index < length; index += 1) { - tag = keys[index]; - style = String(map[tag]); + for (const propPath of properties) { + const key = propPath.get("key"); - if (tag.slice(0, 2) === '!!') { - tag = 'tag:yaml.org,2002:' + tag.slice(2); - } - type = schema.compiledTypeMap['fallback'][tag]; + if (propPath.node.computed && !key.isPure()) { + const name = scope.generateUidBasedOnNode(key.node); - if (type && _hasOwnProperty.call(type.styleAliases, style)) { - style = type.styleAliases[style]; + const declarator = _core.types.variableDeclarator(_core.types.identifier(name), key.node); + + impureComputedPropertyDeclarators.push(declarator); + key.replaceWith(_core.types.identifier(name)); + } } - result[tag] = style; + return impureComputedPropertyDeclarators; } - return result; -} - -function encodeHex(character) { - var string, handle, length; + function removeUnusedExcludedKeys(path) { + const bindings = path.getOuterBindingIdentifierPaths(); + Object.keys(bindings).forEach(bindingName => { + const bindingParentPath = bindings[bindingName].parentPath; - string = character.toString(16).toUpperCase(); + if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) { + return; + } - if (character <= 0xFF) { - handle = 'x'; - length = 2; - } else if (character <= 0xFFFF) { - handle = 'u'; - length = 4; - } else if (character <= 0xFFFFFFFF) { - handle = 'U'; - length = 8; - } else { - throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + bindingParentPath.remove(); + }); } - return '\\' + handle + common.repeat('0', length - string.length) + string; -} + function createObjectSpread(path, file, objRef) { + const props = path.get("properties"); + const last = props[props.length - 1]; -function State(options) { - this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; - this.indent = Math.max(1, (options['indent'] || 2)); - this.noArrayIndent = options['noArrayIndent'] || false; - this.skipInvalid = options['skipInvalid'] || false; - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); - this.styleMap = compileStyleMap(this.schema, options['styles'] || null); - this.sortKeys = options['sortKeys'] || false; - this.lineWidth = options['lineWidth'] || 80; - this.noRefs = options['noRefs'] || false; - this.noCompatMode = options['noCompatMode'] || false; - this.condenseFlow = options['condenseFlow'] || false; + _core.types.assertRestElement(last.node); - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; + const restElement = _core.types.cloneNode(last.node); - this.tag = null; - this.result = ''; + last.remove(); + const impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope); + const { + keys, + allLiteral + } = extractNormalizedKeys(path); - this.duplicates = []; - this.usedDuplicates = null; -} + if (keys.length === 0) { + return [impureComputedPropertyDeclarators, restElement.argument, _core.types.callExpression(getExtendsHelper(file), [_core.types.objectExpression([]), _core.types.cloneNode(objRef)])]; + } -// Indents every line in a string. Empty lines (\n only) are not indented. -function indentString(string, spaces) { - var ind = common.repeat(' ', spaces), - position = 0, - next = -1, - result = '', - line, - length = string.length; + let keyExpression; - while (position < length) { - next = string.indexOf('\n', position); - if (next === -1) { - line = string.slice(position); - position = length; + if (!allLiteral) { + keyExpression = _core.types.callExpression(_core.types.memberExpression(_core.types.arrayExpression(keys), _core.types.identifier("map")), [file.addHelper("toPropertyKey")]); } else { - line = string.slice(position, next + 1); - position = next + 1; + keyExpression = _core.types.arrayExpression(keys); } - if (line.length && line !== '\n') result += ind; - - result += line; + return [impureComputedPropertyDeclarators, restElement.argument, _core.types.callExpression(file.addHelper(`objectWithoutProperties${loose ? "Loose" : ""}`), [_core.types.cloneNode(objRef), keyExpression])]; } - return result; -} + function replaceRestElement(parentPath, paramPath, container) { + if (paramPath.isAssignmentPattern()) { + replaceRestElement(parentPath, paramPath.get("left"), container); + return; + } -function generateNextLine(state, level) { - return '\n' + common.repeat(' ', state.indent * level); -} + if (paramPath.isArrayPattern() && hasRestElement(paramPath)) { + const elements = paramPath.get("elements"); -function testImplicitResolving(state, str) { - var index, length, type; + for (let i = 0; i < elements.length; i++) { + replaceRestElement(parentPath, elements[i], container); + } + } - for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { - type = state.implicitTypes[index]; + if (paramPath.isObjectPattern() && hasRestElement(paramPath)) { + const uid = parentPath.scope.generateUidIdentifier("ref"); - if (type.resolve(str)) { - return true; + const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(paramPath.node, uid)]); + + if (container) { + container.push(declar); + } else { + parentPath.ensureBlock(); + parentPath.get("body").unshiftContainer("body", declar); + } + + paramPath.replaceWith(_core.types.cloneNode(uid)); } } - return false; -} + return { + name: "proposal-object-rest-spread", + inherits: _pluginSyntaxObjectRestSpread.default, + visitor: { + Function(path) { + const params = path.get("params"); + const paramsWithRestElement = new Set(); + const idsInRestParams = new Set(); + + for (let i = 0; i < params.length; ++i) { + const param = params[i]; + + if (hasRestElement(param)) { + paramsWithRestElement.add(i); + + for (const name of Object.keys(param.getBindingIdentifiers())) { + idsInRestParams.add(name); + } + } + } -// [33] s-white ::= s-space | s-tab -function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; -} + let idInRest = false; -// Returns true if the character can be printed without escaping. -// From YAML 1.2: "any allowed characters known to be non-printable -// should also be escaped. [However,] This isn’t mandatory" -// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. -function isPrintable(c) { - return (0x00020 <= c && c <= 0x00007E) - || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) - || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) - || (0x10000 <= c && c <= 0x10FFFF); -} + const IdentifierHandler = function (path, functionScope) { + const name = path.node.name; -// [34] ns-char ::= nb-char - s-white -// [27] nb-char ::= c-printable - b-char - c-byte-order-mark -// [26] b-char ::= b-line-feed | b-carriage-return -// [24] b-line-feed ::= #xA /* LF */ -// [25] b-carriage-return ::= #xD /* CR */ -// [3] c-byte-order-mark ::= #xFEFF -function isNsChar(c) { - return isPrintable(c) && !isWhitespace(c) - // byte-order-mark - && c !== 0xFEFF - // b-char - && c !== CHAR_CARRIAGE_RETURN - && c !== CHAR_LINE_FEED; -} + if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) { + idInRest = true; + path.stop(); + } + }; -// Simplified test for values allowed after the first character in plain style. -function isPlainSafe(c, prev) { - // Uses a subset of nb-char - c-flow-indicator - ":" - "#" - // where nb-char ::= c-printable - b-char - c-byte-order-mark. - return isPrintable(c) && c !== 0xFEFF - // - c-flow-indicator - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // - ":" - "#" - // /* An ns-char preceding */ "#" - && c !== CHAR_COLON - && ((c !== CHAR_SHARP) || (prev && isNsChar(prev))); -} + let i; -// Simplified test for values allowed as the first character in plain style. -function isPlainSafeFirst(c) { - // Uses a subset of ns-char - c-indicator - // where ns-char = nb-char - s-white. - return isPrintable(c) && c !== 0xFEFF - && !isWhitespace(c) // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - && c !== CHAR_MINUS - && c !== CHAR_QUESTION - && c !== CHAR_COLON - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - && c !== CHAR_SHARP - && c !== CHAR_AMPERSAND - && c !== CHAR_ASTERISK - && c !== CHAR_EXCLAMATION - && c !== CHAR_VERTICAL_LINE - && c !== CHAR_EQUALS - && c !== CHAR_GREATER_THAN - && c !== CHAR_SINGLE_QUOTE - && c !== CHAR_DOUBLE_QUOTE - // | “%” | “@” | “`”) - && c !== CHAR_PERCENT - && c !== CHAR_COMMERCIAL_AT - && c !== CHAR_GRAVE_ACCENT; -} + for (i = 0; i < params.length && !idInRest; ++i) { + const param = params[i]; -// Determines whether block indentation indicator is required. -function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); -} + if (!paramsWithRestElement.has(i)) { + if (param.isReferencedIdentifier() || param.isBindingIdentifier()) { + IdentifierHandler(path, path.scope); + } else { + param.traverse({ + "Scope|TypeAnnotation|TSTypeAnnotation": path => path.skip(), + "ReferencedIdentifier|BindingIdentifier": IdentifierHandler + }, path.scope); + } + } + } -var STYLE_PLAIN = 1, - STYLE_SINGLE = 2, - STYLE_LITERAL = 3, - STYLE_FOLDED = 4, - STYLE_DOUBLE = 5; + if (!idInRest) { + for (let i = 0; i < params.length; ++i) { + const param = params[i]; -// Determines which scalar styles are possible and returns the preferred style. -// lineWidth = -1 => no limit. -// Pre-conditions: str.length > 0. -// Post-conditions: -// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. -// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). -// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). -function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { - var i; - var char, prev_char; - var hasLineBreak = false; - var hasFoldableLine = false; // only checked if shouldTrackWidth - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; // count the first line correctly - var plain = isPlainSafeFirst(string.charCodeAt(0)) - && !isWhitespace(string.charCodeAt(string.length - 1)); + if (paramsWithRestElement.has(i)) { + replaceRestElement(param.parentPath, param); + } + } + } else { + const shouldTransformParam = idx => idx >= i - 1 || paramsWithRestElement.has(idx); - if (singleLineOnly) { - // Case: no block styles. - // Check for disallowed characters to rule out plain and single. - for (i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - prev_char = i > 0 ? string.charCodeAt(i - 1) : null; - plain = plain && isPlainSafe(char, prev_char); - } - } else { - // Case: block styles permitted. - for (i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - // Check if any line can be folded. - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || - // Foldable line = too long, and not more-indented. - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' '); - previousLineBreak = i; + (0, _pluginTransformParameters.convertFunctionParams)(path, loose, shouldTransformParam, replaceRestElement); } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - prev_char = i > 0 ? string.charCodeAt(i - 1) : null; - plain = plain && isPlainSafe(char, prev_char); - } - // in case the end is missing a \n - hasFoldableLine = hasFoldableLine || (shouldTrackWidth && - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')); - } - // Although every style can represent \n without escaping, prefer block styles - // for multiline, since they're more readable and they don't add empty lines. - // Also prefer folding a super-long line. - if (!hasLineBreak && !hasFoldableLine) { - // Strings interpretable as another type have to be quoted; - // e.g. the string 'true' vs. the boolean true. - return plain && !testAmbiguousType(string) - ? STYLE_PLAIN : STYLE_SINGLE; - } - // Edge case: block indentation indicator can only have one digit. - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; - } - // At this point we know block styles are valid. - // Prefer literal style unless we want to fold. - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; -} + }, -// Note: line breaking/folding is implemented for only the folded style. -// NB. We drop the last trailing newline (if any) of a returned block scalar -// since the dumper adds its own newline. This always works: -// • No ending newline => unaffected; already using strip "-" chomping. -// • Ending newline => removed then restored. -// Importantly, this keeps the "+" chomp indicator from gaining an extra line. -function writeScalar(state, string, level, iskey) { - state.dump = (function () { - if (string.length === 0) { - return "''"; - } - if (!state.noCompatMode && - DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { - return "'" + string + "'"; - } + VariableDeclarator(path, file) { + if (!path.get("id").isObjectPattern()) { + return; + } - var indent = state.indent * Math.max(1, level); // no 0-indent scalars - // As indentation gets deeper, let the width decrease monotonically - // to the lower bound min(state.lineWidth, 40). - // Note that this implies - // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. - // state.lineWidth > 40 + state.indent: width decreases until the lower bound. - // This behaves better than a constant minimum width which disallows narrower options, - // or an indent threshold which causes the width to suddenly increase. - var lineWidth = state.lineWidth === -1 - ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + let insertionPath = path; + const originalPath = path; + visitRestElements(path.get("id"), path => { + if (!path.parentPath.isObjectPattern()) { + return; + } - // Without knowing if keys are implicit/explicit, assume implicit for safety. - var singleLineOnly = iskey - // No block styles in flow mode. - || (state.flowLevel > -1 && level >= state.flowLevel); - function testAmbiguity(string) { - return testImplicitResolving(state, string); - } + if (originalPath.node.id.properties.length > 1 && !_core.types.isIdentifier(originalPath.node.init)) { + const initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref"); + originalPath.insertBefore(_core.types.variableDeclarator(initRef, originalPath.node.init)); + originalPath.replaceWith(_core.types.variableDeclarator(originalPath.node.id, _core.types.cloneNode(initRef))); + return; + } - switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { - case STYLE_PLAIN: - return string; - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; - case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(string, indent)); - case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); - case STYLE_DOUBLE: - return '"' + escapeString(string, lineWidth) + '"'; - default: - throw new YAMLException('impossible error: invalid scalar style'); - } - }()); -} + let ref = originalPath.node.init; + const refPropertyPath = []; + let kind; + path.findParent(path => { + if (path.isObjectProperty()) { + refPropertyPath.unshift(path); + } else if (path.isVariableDeclarator()) { + kind = path.parentPath.node.kind; + return true; + } + }); + const impureObjRefComputedDeclarators = replaceImpureComputedKeys(refPropertyPath, path.scope); + refPropertyPath.forEach(prop => { + const { + node + } = prop; + ref = _core.types.memberExpression(ref, _core.types.cloneNode(node.key), node.computed || _core.types.isLiteral(node.key)); + }); + const objectPatternPath = path.findParent(path => path.isObjectPattern()); + const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectSpread(objectPatternPath, file, ref); -// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. -function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; + if (loose) { + removeUnusedExcludedKeys(objectPatternPath); + } - // note the special case: the string '\n' counts as a "trailing" empty line. - var clip = string[string.length - 1] === '\n'; - var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); - var chomp = keep ? '+' : (clip ? '' : '-'); + _core.types.assertIdentifier(argument); - return indentIndicator + chomp + '\n'; -} + insertionPath.insertBefore(impureComputedPropertyDeclarators); + insertionPath.insertBefore(impureObjRefComputedDeclarators); + insertionPath.insertAfter(_core.types.variableDeclarator(argument, callExpression)); + insertionPath = insertionPath.getSibling(insertionPath.key + 1); + path.scope.registerBinding(kind, insertionPath); -// (See the note for writeScalar.) -function dropEndingNewline(string) { - return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; -} + if (objectPatternPath.node.properties.length === 0) { + objectPatternPath.findParent(path => path.isObjectProperty() || path.isVariableDeclarator()).remove(); + } + }); + }, -// Note: a long line without a suitable break point will exceed the width limit. -// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. -function foldString(string, width) { - // In folded style, $k$ consecutive newlines output as $k+1$ newlines— - // unless they're before or after a more-indented line, or at the very - // beginning or end, in which case $k$ maps to $k$. - // Therefore, parse each chunk as newline(s) followed by a content line. - var lineRe = /(\n+)([^\n]*)/g; + ExportNamedDeclaration(path) { + const declaration = path.get("declaration"); + if (!declaration.isVariableDeclaration()) return; + const hasRest = declaration.get("declarations").some(path => hasObjectPatternRestElement(path.get("id"))); + if (!hasRest) return; + const specifiers = []; - // first line (possibly an empty line) - var result = (function () { - var nextLF = string.indexOf('\n'); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - }()); - // If we haven't reached the first content line yet, don't add an extra \n. - var prevMoreIndented = string[0] === '\n' || string[0] === ' '; - var moreIndented; + for (const name of Object.keys(path.getOuterBindingIdentifiers(path))) { + specifiers.push(_core.types.exportSpecifier(_core.types.identifier(name), _core.types.identifier(name))); + } - // rest of the lines - var match; - while ((match = lineRe.exec(string))) { - var prefix = match[1], line = match[2]; - moreIndented = (line[0] === ' '); - result += prefix - + (!prevMoreIndented && !moreIndented && line !== '' - ? '\n' : '') - + foldLine(line, width); - prevMoreIndented = moreIndented; - } + path.replaceWith(declaration.node); + path.insertAfter(_core.types.exportNamedDeclaration(null, specifiers)); + }, - return result; -} + CatchClause(path) { + const paramPath = path.get("param"); + replaceRestElement(paramPath.parentPath, paramPath); + }, -// Greedy line breaking. -// Picks the longest line under the limit each time, -// otherwise settles for the shortest line over the limit. -// NB. More-indented lines *cannot* be folded, as that would add an extra \n. -function foldLine(line, width) { - if (line === '' || line[0] === ' ') return line; + AssignmentExpression(path, file) { + const leftPath = path.get("left"); - // Since a more-indented line adds a \n, breaks can't be followed by a space. - var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. - var match; - // start is an inclusive index. end, curr, and next are exclusive. - var start = 0, end, curr = 0, next = 0; - var result = ''; + if (leftPath.isObjectPattern() && hasRestElement(leftPath)) { + const nodes = []; + const refName = path.scope.generateUidBasedOnNode(path.node.right, "ref"); + nodes.push(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(refName), path.node.right)])); + const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectSpread(leftPath, file, _core.types.identifier(refName)); - // Invariants: 0 <= start <= length-1. - // 0 <= curr <= next <= max(0, length-2). curr - start <= width. - // Inside the loop: - // A match implies length >= 2, so curr and next are <= length-2. - while ((match = breakRe.exec(line))) { - next = match.index; - // maintain invariant: curr - start <= width - if (next - start > width) { - end = (curr > start) ? curr : next; // derive end <= length-2 - result += '\n' + line.slice(start, end); - // skip the space that was output as \n - start = end + 1; // derive start <= length-1 - } - curr = next; - } - - // By the invariants, start <= length-1, so there is something left over. - // It is either the whole string or a part starting from non-whitespace. - result += '\n'; - // Insert a break if the remainder is too long and there is a break available. - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + '\n' + line.slice(curr + 1); - } else { - result += line.slice(start); - } + if (impureComputedPropertyDeclarators.length > 0) { + nodes.push(_core.types.variableDeclaration("var", impureComputedPropertyDeclarators)); + } - return result.slice(1); // drop extra \n joiner -} + const nodeWithoutSpread = _core.types.cloneNode(path.node); -// Escapes a double-quoted string. -function escapeString(string) { - var result = ''; - var char, nextChar; - var escapeSeq; + nodeWithoutSpread.right = _core.types.identifier(refName); + nodes.push(_core.types.expressionStatement(nodeWithoutSpread)); + nodes.push(_core.types.toStatement(_core.types.assignmentExpression("=", argument, callExpression))); + nodes.push(_core.types.expressionStatement(_core.types.identifier(refName))); + path.replaceWithMultiple(nodes); + } + }, - for (var i = 0; i < string.length; i++) { - char = string.charCodeAt(i); - // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). - if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) { - nextChar = string.charCodeAt(i + 1); - if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) { - // Combine the surrogate pair and store it escaped. - result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); - // Advance index one extra since we already used that char here. - i++; continue; - } - } - escapeSeq = ESCAPE_SEQUENCES[char]; - result += !escapeSeq && isPrintable(char) - ? string[i] - : escapeSeq || encodeHex(char); - } + ForXStatement(path) { + const { + node, + scope + } = path; + const leftPath = path.get("left"); + const left = node.left; - return result; -} + if (!hasObjectPatternRestElement(leftPath)) { + return; + } -function writeFlowSequence(state, level, object) { - var _result = '', - _tag = state.tag, - index, - length; + if (!_core.types.isVariableDeclaration(left)) { + const temp = scope.generateUidIdentifier("ref"); + node.left = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(temp)]); + path.ensureBlock(); - for (index = 0, length = object.length; index < length; index += 1) { - // Write only valid elements. - if (writeNode(state, level, object[index], false, false)) { - if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); - _result += state.dump; - } - } + if (node.body.body.length === 0 && path.isCompletionRecord()) { + node.body.body.unshift(_core.types.expressionStatement(scope.buildUndefinedNode())); + } - state.tag = _tag; - state.dump = '[' + _result + ']'; -} + node.body.body.unshift(_core.types.expressionStatement(_core.types.assignmentExpression("=", left, _core.types.cloneNode(temp)))); + } else { + const pattern = left.declarations[0].id; + const key = scope.generateUidIdentifier("ref"); + node.left = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(key, null)]); + path.ensureBlock(); + node.body.body.unshift(_core.types.variableDeclaration(node.left.kind, [_core.types.variableDeclarator(pattern, _core.types.cloneNode(key))])); + } + }, -function writeBlockSequence(state, level, object, compact) { - var _result = '', - _tag = state.tag, - index, - length; + ArrayPattern(path) { + const objectPatterns = []; + visitRestElements(path, path => { + if (!path.parentPath.isObjectPattern()) { + return; + } - for (index = 0, length = object.length; index < length; index += 1) { - // Write only valid elements. - if (writeNode(state, level + 1, object[index], true, true)) { - if (!compact || index !== 0) { - _result += generateNextLine(state, level); - } + const objectPattern = path.parentPath; + const uid = path.scope.generateUidIdentifier("ref"); + objectPatterns.push(_core.types.variableDeclarator(objectPattern.node, uid)); + objectPattern.replaceWith(_core.types.cloneNode(uid)); + path.skip(); + }); - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += '-'; - } else { - _result += '- '; - } + if (objectPatterns.length > 0) { + const statementPath = path.getStatementParent(); + statementPath.insertAfter(_core.types.variableDeclaration(statementPath.node.kind || "var", objectPatterns)); + } + }, - _result += state.dump; - } - } + ObjectExpression(path, file) { + if (!hasSpread(path.node)) return; + let helper; - state.tag = _tag; - state.dump = _result || '[]'; // Empty sequence if no valid values. -} + if (loose) { + helper = getExtendsHelper(file); + } else { + try { + helper = file.addHelper("objectSpread2"); + } catch (_unused) { + this.file.declarations["objectSpread2"] = null; + helper = file.addHelper("objectSpread"); + } + } -function writeFlowMapping(state, level, object) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - pairBuffer; + let exp = null; + let props = []; - for (index = 0, length = objectKeyList.length; index < length; index += 1) { + function make() { + const hadProps = props.length > 0; - pairBuffer = ''; - if (index !== 0) pairBuffer += ', '; + const obj = _core.types.objectExpression(props); - if (state.condenseFlow) pairBuffer += '"'; + props = []; - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + if (!exp) { + exp = _core.types.callExpression(helper, [obj]); + return; + } - if (!writeNode(state, level, objectKey, false, false)) { - continue; // Skip this pair because of invalid key; - } + if (loose) { + if (hadProps) { + exp.arguments.push(obj); + } - if (state.dump.length > 1024) pairBuffer += '? '; + return; + } - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + exp = _core.types.callExpression(_core.types.cloneNode(helper), [exp, ...(hadProps ? [_core.types.objectExpression([]), obj] : [])]); + } - if (!writeNode(state, level, objectValue, false, false)) { - continue; // Skip this pair because of invalid value. - } + for (const prop of path.node.properties) { + if (_core.types.isSpreadElement(prop)) { + make(); + exp.arguments.push(prop.argument); + } else { + props.push(prop); + } + } - pairBuffer += state.dump; + if (props.length) make(); + path.replaceWith(exp); + } - // Both key and value are valid. - _result += pairBuffer; - } + } + }; +}); - state.tag = _tag; - state.dump = '{' + _result + '}'; -} +exports["default"] = _default; -function writeBlockMapping(state, level, object, compact) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - explicitPair, - pairBuffer; +/***/ }), - // Allow sorting keys so that the output file is deterministic - if (state.sortKeys === true) { - // Default sorting - objectKeyList.sort(); - } else if (typeof state.sortKeys === 'function') { - // Custom sort function - objectKeyList.sort(state.sortKeys); - } else if (state.sortKeys) { - // Something is wrong - throw new YAMLException('sortKeys must be a boolean or a function'); - } +/***/ 47358: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - pairBuffer = ''; +"use strict"; - if (!compact || index !== 0) { - pairBuffer += generateNextLine(state, level); - } - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; // Skip this pair because of invalid key. - } +var _helperPluginUtils = __nccwpck_require__(25683); - explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024); +var _default = (0, _helperPluginUtils.declare)(api => { + api.assertVersion(7); + return { + name: "syntax-jsx", - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += '?'; - } else { - pairBuffer += '? '; + manipulateOptions(opts, parserOpts) { + if (parserOpts.plugins.some(p => (Array.isArray(p) ? p[0] : p) === "typescript")) { + return; } - } - - pairBuffer += state.dump; - - if (explicitPair) { - pairBuffer += generateNextLine(state, level); - } - - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; // Skip this pair because of invalid value. - } - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ':'; - } else { - pairBuffer += ': '; + parserOpts.plugins.push("jsx"); } - pairBuffer += state.dump; - - // Both key and value are valid. - _result += pairBuffer; - } - - state.tag = _tag; - state.dump = _result || '{}'; // Empty mapping if no valid pairs. -} + }; +}); -function detectType(state, object, explicit) { - var _result, typeList, index, length, type, style; +exports["default"] = _default; - typeList = explicit ? state.explicitTypes : state.implicitTypes; +/***/ }), - for (index = 0, length = typeList.length; index < length; index += 1) { - type = typeList[index]; +/***/ 55165: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if ((type.instanceOf || type.predicate) && - (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { +"use strict"; - state.tag = explicit ? type.tag : '?'; - if (type.represent) { - style = state.styleMap[type.tag] || type.defaultStyle; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; - if (_toString.call(type.represent) === '[object Function]') { - _result = type.represent(object, style); - } else if (_hasOwnProperty.call(type.represent, style)) { - _result = type.represent[style](object, style); - } else { - throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); - } +var _helperPluginUtils = __nccwpck_require__(25683); - state.dump = _result; - } +var _default = (0, _helperPluginUtils.declare)(api => { + api.assertVersion(7); + return { + name: "syntax-object-rest-spread", - return true; + manipulateOptions(opts, parserOpts) { + parserOpts.plugins.push("objectRestSpread"); } - } - - return false; -} - -// Serializes `object` and writes it to global `result`. -// Returns true on success, or false on invalid object. -// -function writeNode(state, level, object, block, compact, iskey) { - state.tag = null; - state.dump = object; - if (!detectType(state, object, false)) { - detectType(state, object, true); - } + }; +}); - var type = _toString.call(state.dump); +exports["default"] = _default; - if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level); - } +/***/ }), - var objectOrArray = type === '[object Object]' || type === '[object Array]', - duplicateIndex, - duplicate; +/***/ 36153: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; - } +(function (global, factory) { + true ? factory(exports, __nccwpck_require__(83199), __nccwpck_require__(69551), __nccwpck_require__(99535)) : + 0; +})(this, (function (exports, setArray, sourcemapCodec, traceMapping) { 'use strict'; - if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { - compact = false; - } + const COLUMN = 0; + const SOURCES_INDEX = 1; + const SOURCE_LINE = 2; + const SOURCE_COLUMN = 3; + const NAMES_INDEX = 4; - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = '*ref_' + duplicateIndex; - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; + const NO_NAME = -1; + /** + * Provides the state to generate a sourcemap. + */ + class GenMapping { + constructor({ file, sourceRoot } = {}) { + this._names = new setArray.SetArray(); + this._sources = new setArray.SetArray(); + this._sourcesContent = []; + this._mappings = []; + this.file = file; + this.sourceRoot = sourceRoot; + this._ignoreList = new setArray.SetArray(); + } } - if (type === '[object Object]') { - if (block && (Object.keys(state.dump).length !== 0)) { - writeBlockMapping(state, level, state.dump, compact); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; + /** + * Typescript doesn't allow friend access to private fields, so this just casts the map into a type + * with public access modifiers. + */ + function cast(map) { + return map; + } + function addSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); + } + function addMapping(map, mapping) { + return addMappingInternal(false, map, mapping); + } + /** + * Same as `addSegment`, but will only add the segment if it generates useful information in the + * resulting map. This only works correctly if segments are added **in order**, meaning you should + * not add a segment with a lower generated line/column than one that came before. + */ + const maybeAddSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) => { + return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content); + }; + /** + * Same as `addMapping`, but will only add the mapping if it generates useful information in the + * resulting map. This only works correctly if mappings are added **in order**, meaning you should + * not add a mapping with a lower generated line/column than one that came before. + */ + const maybeAddMapping = (map, mapping) => { + return addMappingInternal(true, map, mapping); + }; + /** + * Adds/removes the content of the source file to the source map. + */ + function setSourceContent(map, source, content) { + const { _sources: sources, _sourcesContent: sourcesContent } = cast(map); + const index = setArray.put(sources, source); + sourcesContent[index] = content; + } + function setIgnore(map, source, ignore = true) { + const { _sources: sources, _sourcesContent: sourcesContent, _ignoreList: ignoreList } = cast(map); + const index = setArray.put(sources, source); + if (index === sourcesContent.length) + sourcesContent[index] = null; + if (ignore) + setArray.put(ignoreList, index); + else + setArray.remove(ignoreList, index); + } + /** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + function toDecodedMap(map) { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, _ignoreList: ignoreList, } = cast(map); + removeEmptyFinalLines(mappings); + return { + version: 3, + file: map.file || undefined, + names: names.array, + sourceRoot: map.sourceRoot || undefined, + sources: sources.array, + sourcesContent, + mappings, + ignoreList: ignoreList.array, + }; + } + /** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + function toEncodedMap(map) { + const decoded = toDecodedMap(map); + return Object.assign(Object.assign({}, decoded), { mappings: sourcemapCodec.encode(decoded.mappings) }); + } + /** + * Constructs a new GenMapping, using the already present mappings of the input. + */ + function fromMap(input) { + const map = new traceMapping.TraceMap(input); + const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot }); + putAll(cast(gen)._names, map.names); + putAll(cast(gen)._sources, map.sources); + cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null); + cast(gen)._mappings = traceMapping.decodedMappings(map); + if (map.ignoreList) + putAll(cast(gen)._ignoreList, map.ignoreList); + return gen; + } + /** + * Returns an array of high-level mapping objects for every recorded segment, which could then be + * passed to the `source-map` library. + */ + function allMappings(map) { + const out = []; + const { _mappings: mappings, _sources: sources, _names: names } = cast(map); + for (let i = 0; i < mappings.length; i++) { + const line = mappings[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generated = { line: i + 1, column: seg[COLUMN] }; + let source = undefined; + let original = undefined; + let name = undefined; + if (seg.length !== 1) { + source = sources.array[seg[SOURCES_INDEX]]; + original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] }; + if (seg.length === 5) + name = names.array[seg[NAMES_INDEX]]; + } + out.push({ generated, source, original, name }); + } } - } else { - writeFlowMapping(state, level, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + return out; + } + // This split declaration is only so that terser can elminiate the static initialization block. + function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) { + const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = cast(map); + const line = getLine(mappings, genLine); + const index = getColumnIndex(line, genColumn); + if (!source) { + if (skipable && skipSourceless(line, index)) + return; + return insert(line, index, [genColumn]); } - } - } else if (type === '[object Array]') { - var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level; - if (block && (state.dump.length !== 0)) { - writeBlockSequence(state, arrayLevel, state.dump, compact); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; + const sourcesIndex = setArray.put(sources, source); + const namesIndex = name ? setArray.put(names, name) : NO_NAME; + if (sourcesIndex === sourcesContent.length) + sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null; + if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { + return; } - } else { - writeFlowSequence(state, arrayLevel, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + return insert(line, index, name + ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] + : [genColumn, sourcesIndex, sourceLine, sourceColumn]); + } + function getLine(mappings, index) { + for (let i = mappings.length; i <= index; i++) { + mappings[i] = []; } - } - } else if (type === '[object String]') { - if (state.tag !== '?') { - writeScalar(state, state.dump, level, iskey); - } - } else { - if (state.skipInvalid) return false; - throw new YAMLException('unacceptable kind of an object to dump ' + type); + return mappings[index]; } - - if (state.tag !== null && state.tag !== '?') { - state.dump = '!<' + state.tag + '> ' + state.dump; + function getColumnIndex(line, genColumn) { + let index = line.length; + for (let i = index - 1; i >= 0; index = i--) { + const current = line[i]; + if (genColumn >= current[COLUMN]) + break; + } + return index; + } + function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; + } + function removeEmptyFinalLines(mappings) { + const { length } = mappings; + let len = length; + for (let i = len - 1; i >= 0; len = i, i--) { + if (mappings[i].length > 0) + break; + } + if (len < length) + mappings.length = len; + } + function putAll(setarr, array) { + for (let i = 0; i < array.length; i++) + setArray.put(setarr, array[i]); + } + function skipSourceless(line, index) { + // The start of a line is already sourceless, so adding a sourceless segment to the beginning + // doesn't generate any useful information. + if (index === 0) + return true; + const prev = line[index - 1]; + // If the previous segment is also sourceless, then adding another sourceless segment doesn't + // genrate any new information. Else, this segment will end the source/named segment and point to + // a sourceless position, which is useful. + return prev.length === 1; + } + function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { + // A source/named segment at the start of a line gives position at that genColumn + if (index === 0) + return false; + const prev = line[index - 1]; + // If the previous segment is sourceless, then we're transitioning to a source. + if (prev.length === 1) + return false; + // If the previous segment maps to the exact same source position, then this segment doesn't + // provide any new position information. + return (sourcesIndex === prev[SOURCES_INDEX] && + sourceLine === prev[SOURCE_LINE] && + sourceColumn === prev[SOURCE_COLUMN] && + namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)); + } + function addMappingInternal(skipable, map, mapping) { + const { generated, source, original, name, content } = mapping; + if (!source) { + return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null); + } + return addSegmentInternal(skipable, map, generated.line - 1, generated.column, source, original.line - 1, original.column, name, content); } - } - return true; -} + exports.GenMapping = GenMapping; + exports.addMapping = addMapping; + exports.addSegment = addSegment; + exports.allMappings = allMappings; + exports.fromMap = fromMap; + exports.maybeAddMapping = maybeAddMapping; + exports.maybeAddSegment = maybeAddSegment; + exports.setIgnore = setIgnore; + exports.setSourceContent = setSourceContent; + exports.toDecodedMap = toDecodedMap; + exports.toEncodedMap = toEncodedMap; -function getDuplicateReferences(object, state) { - var objects = [], - duplicatesIndexes = [], - index, - length; + Object.defineProperty(exports, '__esModule', { value: true }); - inspectNode(object, objects, duplicatesIndexes); +})); +//# sourceMappingURL=gen-mapping.umd.js.map - for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); - } - state.usedDuplicates = new Array(length); -} -function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, - index, - length; +/***/ }), - if (object !== null && typeof object === 'object') { - index = objects.indexOf(object); - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); - } - } else { - objects.push(object); +/***/ 59445: +/***/ (function(module) { - if (Array.isArray(object)) { - for (index = 0, length = object.length; index < length; index += 1) { - inspectNode(object[index], objects, duplicatesIndexes); - } - } else { - objectKeyList = Object.keys(object); +(function (global, factory) { + true ? module.exports = factory() : + 0; +})(this, (function () { 'use strict'; - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + // Matches the scheme of a URL, eg "http://" + const schemeRegex = /^[\w+.-]+:\/\//; + /** + * Matches the parts of a URL: + * 1. Scheme, including ":", guaranteed. + * 2. User/password, including "@", optional. + * 3. Host, guaranteed. + * 4. Port, including ":", optional. + * 5. Path, including "/", optional. + * 6. Query, including "?", optional. + * 7. Hash, including "#", optional. + */ + const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; + /** + * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start + * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). + * + * 1. Host, optional. + * 2. Path, which may include "/", guaranteed. + * 3. Query, including "?", optional. + * 4. Hash, including "#", optional. + */ + const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; + function isAbsoluteUrl(input) { + return schemeRegex.test(input); + } + function isSchemeRelativeUrl(input) { + return input.startsWith('//'); + } + function isAbsolutePath(input) { + return input.startsWith('/'); + } + function isFileUrl(input) { + return input.startsWith('file:'); + } + function isRelative(input) { + return /^[.?#]/.test(input); + } + function parseAbsoluteUrl(input) { + const match = urlRegex.exec(input); + return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); + } + function parseFileUrl(input) { + const match = fileRegex.exec(input); + const path = match[2]; + return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); + } + function makeUrl(scheme, user, host, port, path, query, hash) { + return { + scheme, + user, + host, + port, + path, + query, + hash, + type: 7 /* Absolute */, + }; + } + function parseUrl(input) { + if (isSchemeRelativeUrl(input)) { + const url = parseAbsoluteUrl('http:' + input); + url.scheme = ''; + url.type = 6 /* SchemeRelative */; + return url; + } + if (isAbsolutePath(input)) { + const url = parseAbsoluteUrl('http://foo.com' + input); + url.scheme = ''; + url.host = ''; + url.type = 5 /* AbsolutePath */; + return url; + } + if (isFileUrl(input)) + return parseFileUrl(input); + if (isAbsoluteUrl(input)) + return parseAbsoluteUrl(input); + const url = parseAbsoluteUrl('http://foo.com/' + input); + url.scheme = ''; + url.host = ''; + url.type = input + ? input.startsWith('?') + ? 3 /* Query */ + : input.startsWith('#') + ? 2 /* Hash */ + : 4 /* RelativePath */ + : 1 /* Empty */; + return url; + } + function stripPathFilename(path) { + // If a path ends with a parent directory "..", then it's a relative path with excess parent + // paths. It's not a file, so we can't strip it. + if (path.endsWith('/..')) + return path; + const index = path.lastIndexOf('/'); + return path.slice(0, index + 1); + } + function mergePaths(url, base) { + normalizePath(base, base.type); + // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative + // path). + if (url.path === '/') { + url.path = base.path; + } + else { + // Resolution happens relative to the base path's directory, not the file. + url.path = stripPathFilename(base.path) + url.path; + } + } + /** + * The path can have empty directories "//", unneeded parents "foo/..", or current directory + * "foo/.". We need to normalize to a standard representation. + */ + function normalizePath(url, type) { + const rel = type <= 4 /* RelativePath */; + const pieces = url.path.split('/'); + // We need to preserve the first piece always, so that we output a leading slash. The item at + // pieces[0] is an empty string. + let pointer = 1; + // Positive is the number of real directories we've output, used for popping a parent directory. + // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo". + let positive = 0; + // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will + // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a + // real directory, we won't need to append, unless the other conditions happen again. + let addTrailingSlash = false; + for (let i = 1; i < pieces.length; i++) { + const piece = pieces[i]; + // An empty directory, could be a trailing slash, or just a double "//" in the path. + if (!piece) { + addTrailingSlash = true; + continue; + } + // If we encounter a real directory, then we don't need to append anymore. + addTrailingSlash = false; + // A current directory, which we can always drop. + if (piece === '.') + continue; + // A parent directory, we need to see if there are any real directories we can pop. Else, we + // have an excess of parents, and we'll need to keep the "..". + if (piece === '..') { + if (positive) { + addTrailingSlash = true; + positive--; + pointer--; + } + else if (rel) { + // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute + // URL, protocol relative URL, or an absolute path, we don't need to keep excess. + pieces[pointer++] = piece; + } + continue; + } + // We've encountered a real directory. Move it to the next insertion pointer, which accounts for + // any popped or dropped directories. + pieces[pointer++] = piece; + positive++; + } + let path = ''; + for (let i = 1; i < pointer; i++) { + path += '/' + pieces[i]; + } + if (!path || (addTrailingSlash && !path.endsWith('/..'))) { + path += '/'; + } + url.path = path; + } + /** + * Attempts to resolve `input` URL/path relative to `base`. + */ + function resolve(input, base) { + if (!input && !base) + return ''; + const url = parseUrl(input); + let inputType = url.type; + if (base && inputType !== 7 /* Absolute */) { + const baseUrl = parseUrl(base); + const baseType = baseUrl.type; + switch (inputType) { + case 1 /* Empty */: + url.hash = baseUrl.hash; + // fall through + case 2 /* Hash */: + url.query = baseUrl.query; + // fall through + case 3 /* Query */: + case 4 /* RelativePath */: + mergePaths(url, baseUrl); + // fall through + case 5 /* AbsolutePath */: + // The host, user, and port are joined, you can't copy one without the others. + url.user = baseUrl.user; + url.host = baseUrl.host; + url.port = baseUrl.port; + // fall through + case 6 /* SchemeRelative */: + // The input doesn't have a schema at least, so we need to copy at least that over. + url.scheme = baseUrl.scheme; + } + if (baseType > inputType) + inputType = baseType; + } + normalizePath(url, inputType); + const queryHash = url.query + url.hash; + switch (inputType) { + // This is impossible, because of the empty checks at the start of the function. + // case UrlType.Empty: + case 2 /* Hash */: + case 3 /* Query */: + return queryHash; + case 4 /* RelativePath */: { + // The first char is always a "/", and we need it to be relative. + const path = url.path.slice(1); + if (!path) + return queryHash || '.'; + if (isRelative(base || input) && !isRelative(path)) { + // If base started with a leading ".", or there is no base and input started with a ".", + // then we need to ensure that the relative path starts with a ".". We don't know if + // relative starts with a "..", though, so check before prepending. + return './' + path + queryHash; + } + return path + queryHash; + } + case 5 /* AbsolutePath */: + return url.path + queryHash; + default: + return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; } - } } - } -} - -function dump(input, options) { - options = options || {}; - - var state = new State(options); - - if (!state.noRefs) getDuplicateReferences(input, state); - - if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; - - return ''; -} -function safeDump(input, options) { - return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); -} + return resolve; -module.exports.dump = dump; -module.exports.safeDump = safeDump; +})); +//# sourceMappingURL=resolve-uri.umd.js.map /***/ }), -/***/ 5622: -/***/ ((module) => { +/***/ 83199: +/***/ (function(__unused_webpack_module, exports) { -"use strict"; -// YAML error class. http://stackoverflow.com/questions/8458984 -// +(function (global, factory) { + true ? factory(exports) : + 0; +})(this, (function (exports) { 'use strict'; + /** + * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the + * index of the `key` in the backing array. + * + * This is designed to allow synchronizing a second array with the contents of the backing array, + * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, + * and there are never duplicates. + */ + class SetArray { + constructor() { + this._indexes = { __proto__: null }; + this.array = []; + } + } + /** + * Typescript doesn't allow friend access to private fields, so this just casts the set into a type + * with public access modifiers. + */ + function cast(set) { + return set; + } + /** + * Gets the index associated with `key` in the backing array, if it is already present. + */ + function get(setarr, key) { + return cast(setarr)._indexes[key]; + } + /** + * Puts `key` into the backing array, if it is not already present. Returns + * the index of the `key` in the backing array. + */ + function put(setarr, key) { + // The key may or may not be present. If it is present, it's a number. + const index = get(setarr, key); + if (index !== undefined) + return index; + const { array, _indexes: indexes } = cast(setarr); + const length = array.push(key); + return (indexes[key] = length - 1); + } + /** + * Pops the last added item out of the SetArray. + */ + function pop(setarr) { + const { array, _indexes: indexes } = cast(setarr); + if (array.length === 0) + return; + const last = array.pop(); + indexes[last] = undefined; + } + /** + * Removes the key, if it exists in the set. + */ + function remove(setarr, key) { + const index = get(setarr, key); + if (index === undefined) + return; + const { array, _indexes: indexes } = cast(setarr); + for (let i = index + 1; i < array.length; i++) { + const k = array[i]; + array[i - 1] = k; + indexes[k]--; + } + indexes[key] = undefined; + array.pop(); + } -function YAMLException(reason, mark) { - // Super constructor - Error.call(this); + exports.SetArray = SetArray; + exports.get = get; + exports.pop = pop; + exports.put = put; + exports.remove = remove; - this.name = 'YAMLException'; - this.reason = reason; - this.mark = mark; - this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); + Object.defineProperty(exports, '__esModule', { value: true }); - // Include stack trace in error object - if (Error.captureStackTrace) { - // Chrome and NodeJS - Error.captureStackTrace(this, this.constructor); - } else { - // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || ''; - } -} +})); +//# sourceMappingURL=set-array.umd.js.map -// Inherit from Error -YAMLException.prototype = Object.create(Error.prototype); -YAMLException.prototype.constructor = YAMLException; +/***/ }), +/***/ 69551: +/***/ (function(__unused_webpack_module, exports) { -YAMLException.prototype.toString = function toString(compact) { - var result = this.name + ': '; +(function (global, factory) { + true ? factory(exports) : + 0; +})(this, (function (exports) { 'use strict'; - result += this.reason || '(unknown reason)'; + const comma = ','.charCodeAt(0); + const semicolon = ';'.charCodeAt(0); + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + const intToChar = new Uint8Array(64); // 64 possible chars. + const charToInt = new Uint8Array(128); // z is 122 in ASCII + for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; + } + function decodeInteger(reader, relative) { + let value = 0; + let shift = 0; + let integer = 0; + do { + const c = reader.next(); + integer = charToInt[c]; + value |= (integer & 31) << shift; + shift += 5; + } while (integer & 32); + const shouldNegate = value & 1; + value >>>= 1; + if (shouldNegate) { + value = -0x80000000 | -value; + } + return relative + value; + } + function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? (-delta << 1) | 1 : delta << 1; + do { + let clamped = delta & 0b011111; + delta >>>= 5; + if (delta > 0) + clamped |= 0b100000; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; + } + function hasMoreVlq(reader, max) { + if (reader.pos >= max) + return false; + return reader.peek() !== comma; + } + + const bufLength = 1024 * 16; + // Provide a fallback for older environments. + const td = typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf) { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; + class StringWriter { + constructor() { + this.pos = 0; + this.out = ''; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } + } + class StringReader { + constructor(buffer) { + this.pos = 0; + this.buffer = buffer; + } + next() { + return this.buffer.charCodeAt(this.pos++); + } + peek() { + return this.buffer.charCodeAt(this.pos); + } + indexOf(char) { + const { buffer, pos } = this; + const idx = buffer.indexOf(char, pos); + return idx === -1 ? buffer.length : idx; + } + } - if (!compact && this.mark) { - result += ' ' + this.mark.toString(); - } + const EMPTY = []; + function decodeOriginalScopes(input) { + const { length } = input; + const reader = new StringReader(input); + const scopes = []; + const stack = []; + let line = 0; + for (; reader.pos < length; reader.pos++) { + line = decodeInteger(reader, line); + const column = decodeInteger(reader, 0); + if (!hasMoreVlq(reader, length)) { + const last = stack.pop(); + last[2] = line; + last[3] = column; + continue; + } + const kind = decodeInteger(reader, 0); + const fields = decodeInteger(reader, 0); + const hasName = fields & 0b0001; + const scope = (hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]); + let vars = EMPTY; + if (hasMoreVlq(reader, length)) { + vars = []; + do { + const varsIndex = decodeInteger(reader, 0); + vars.push(varsIndex); + } while (hasMoreVlq(reader, length)); + } + scope.vars = vars; + scopes.push(scope); + stack.push(scope); + } + return scopes; + } + function encodeOriginalScopes(scopes) { + const writer = new StringWriter(); + for (let i = 0; i < scopes.length;) { + i = _encodeOriginalScopes(scopes, i, writer, [0]); + } + return writer.flush(); + } + function _encodeOriginalScopes(scopes, index, writer, state) { + const scope = scopes[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope; + if (index > 0) + writer.write(comma); + state[0] = encodeInteger(writer, startLine, state[0]); + encodeInteger(writer, startColumn, 0); + encodeInteger(writer, kind, 0); + const fields = scope.length === 6 ? 0b0001 : 0; + encodeInteger(writer, fields, 0); + if (scope.length === 6) + encodeInteger(writer, scope[5], 0); + for (const v of vars) { + encodeInteger(writer, v, 0); + } + for (index++; index < scopes.length;) { + const next = scopes[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeOriginalScopes(scopes, index, writer, state); + } + writer.write(comma); + state[0] = encodeInteger(writer, endLine, state[0]); + encodeInteger(writer, endColumn, 0); + return index; + } + function decodeGeneratedRanges(input) { + const { length } = input; + const reader = new StringReader(input); + const ranges = []; + const stack = []; + let genLine = 0; + let definitionSourcesIndex = 0; + let definitionScopeIndex = 0; + let callsiteSourcesIndex = 0; + let callsiteLine = 0; + let callsiteColumn = 0; + let bindingLine = 0; + let bindingColumn = 0; + do { + const semi = reader.indexOf(';'); + let genColumn = 0; + for (; reader.pos < semi; reader.pos++) { + genColumn = decodeInteger(reader, genColumn); + if (!hasMoreVlq(reader, semi)) { + const last = stack.pop(); + last[2] = genLine; + last[3] = genColumn; + continue; + } + const fields = decodeInteger(reader, 0); + const hasDefinition = fields & 0b0001; + const hasCallsite = fields & 0b0010; + const hasScope = fields & 0b0100; + let callsite = null; + let bindings = EMPTY; + let range; + if (hasDefinition) { + const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex); + definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0); + definitionSourcesIndex = defSourcesIndex; + range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex]; + } + else { + range = [genLine, genColumn, 0, 0]; + } + range.isScope = !!hasScope; + if (hasCallsite) { + const prevCsi = callsiteSourcesIndex; + const prevLine = callsiteLine; + callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex); + const sameSource = prevCsi === callsiteSourcesIndex; + callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0); + callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0); + callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn]; + } + range.callsite = callsite; + if (hasMoreVlq(reader, semi)) { + bindings = []; + do { + bindingLine = genLine; + bindingColumn = genColumn; + const expressionsCount = decodeInteger(reader, 0); + let expressionRanges; + if (expressionsCount < -1) { + expressionRanges = [[decodeInteger(reader, 0)]]; + for (let i = -1; i > expressionsCount; i--) { + const prevBl = bindingLine; + bindingLine = decodeInteger(reader, bindingLine); + bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0); + const expression = decodeInteger(reader, 0); + expressionRanges.push([expression, bindingLine, bindingColumn]); + } + } + else { + expressionRanges = [[expressionsCount]]; + } + bindings.push(expressionRanges); + } while (hasMoreVlq(reader, semi)); + } + range.bindings = bindings; + ranges.push(range); + stack.push(range); + } + genLine++; + reader.pos = semi + 1; + } while (reader.pos < length); + return ranges; + } + function encodeGeneratedRanges(ranges) { + if (ranges.length === 0) + return ''; + const writer = new StringWriter(); + for (let i = 0; i < ranges.length;) { + i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]); + } + return writer.flush(); + } + function _encodeGeneratedRanges(ranges, index, writer, state) { + const range = ranges[index]; + const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings, } = range; + if (state[0] < startLine) { + catchupLine(writer, state[0], startLine); + state[0] = startLine; + state[1] = 0; + } + else if (index > 0) { + writer.write(comma); + } + state[1] = encodeInteger(writer, range[1], state[1]); + const fields = (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0); + encodeInteger(writer, fields, 0); + if (range.length === 6) { + const { 4: sourcesIndex, 5: scopesIndex } = range; + if (sourcesIndex !== state[2]) { + state[3] = 0; + } + state[2] = encodeInteger(writer, sourcesIndex, state[2]); + state[3] = encodeInteger(writer, scopesIndex, state[3]); + } + if (callsite) { + const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite; + if (sourcesIndex !== state[4]) { + state[5] = 0; + state[6] = 0; + } + else if (callLine !== state[5]) { + state[6] = 0; + } + state[4] = encodeInteger(writer, sourcesIndex, state[4]); + state[5] = encodeInteger(writer, callLine, state[5]); + state[6] = encodeInteger(writer, callColumn, state[6]); + } + if (bindings) { + for (const binding of bindings) { + if (binding.length > 1) + encodeInteger(writer, -binding.length, 0); + const expression = binding[0][0]; + encodeInteger(writer, expression, 0); + let bindingStartLine = startLine; + let bindingStartColumn = startColumn; + for (let i = 1; i < binding.length; i++) { + const expRange = binding[i]; + bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine); + bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn); + encodeInteger(writer, expRange[0], 0); + } + } + } + for (index++; index < ranges.length;) { + const next = ranges[index]; + const { 0: l, 1: c } = next; + if (l > endLine || (l === endLine && c >= endColumn)) { + break; + } + index = _encodeGeneratedRanges(ranges, index, writer, state); + } + if (state[0] < endLine) { + catchupLine(writer, state[0], endLine); + state[0] = endLine; + state[1] = 0; + } + else { + writer.write(comma); + } + state[1] = encodeInteger(writer, endColumn, state[1]); + return index; + } + function catchupLine(writer, lastLine, line) { + do { + writer.write(semicolon); + } while (++lastLine < line); + } + + function decode(mappings) { + const { length } = mappings; + const reader = new StringReader(mappings); + const decoded = []; + let genColumn = 0; + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + do { + const semi = reader.indexOf(';'); + const line = []; + let sorted = true; + let lastCol = 0; + genColumn = 0; + while (reader.pos < semi) { + let seg; + genColumn = decodeInteger(reader, genColumn); + if (genColumn < lastCol) + sorted = false; + lastCol = genColumn; + if (hasMoreVlq(reader, semi)) { + sourcesIndex = decodeInteger(reader, sourcesIndex); + sourceLine = decodeInteger(reader, sourceLine); + sourceColumn = decodeInteger(reader, sourceColumn); + if (hasMoreVlq(reader, semi)) { + namesIndex = decodeInteger(reader, namesIndex); + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]; + } + else { + seg = [genColumn, sourcesIndex, sourceLine, sourceColumn]; + } + } + else { + seg = [genColumn]; + } + line.push(seg); + reader.pos++; + } + if (!sorted) + sort(line); + decoded.push(line); + reader.pos = semi + 1; + } while (reader.pos <= length); + return decoded; + } + function sort(line) { + line.sort(sortComparator); + } + function sortComparator(a, b) { + return a[0] - b[0]; + } + function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) + writer.write(semicolon); + if (line.length === 0) + continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) + writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) + continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) + continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); + } - return result; -}; + exports.decode = decode; + exports.decodeGeneratedRanges = decodeGeneratedRanges; + exports.decodeOriginalScopes = decodeOriginalScopes; + exports.encode = encode; + exports.encodeGeneratedRanges = encodeGeneratedRanges; + exports.encodeOriginalScopes = encodeOriginalScopes; + Object.defineProperty(exports, '__esModule', { value: true }); -module.exports = YAMLException; +})); +//# sourceMappingURL=sourcemap-codec.umd.js.map /***/ }), -/***/ 5868: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - +/***/ 99535: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -/*eslint-disable max-len,no-use-before-define*/ +(function (global, factory) { + true ? factory(exports, __nccwpck_require__(69551), __nccwpck_require__(59445)) : + 0; +})(this, (function (exports, sourcemapCodec, resolveUri) { 'use strict'; -var common = __nccwpck_require__(4206); -var YAMLException = __nccwpck_require__(5622); -var Mark = __nccwpck_require__(3241); -var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(6032); -var DEFAULT_FULL_SCHEMA = __nccwpck_require__(948); + function resolve(input, base) { + // The base is always treated as a directory, if it's not empty. + // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327 + // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401 + if (base && !base.endsWith('/')) + base += '/'; + return resolveUri(input, base); + } + /** + * Removes everything after the last "/", but leaves the slash. + */ + function stripFilename(path) { + if (!path) + return ''; + const index = path.lastIndexOf('/'); + return path.slice(0, index + 1); + } + + const COLUMN = 0; + const SOURCES_INDEX = 1; + const SOURCE_LINE = 2; + const SOURCE_COLUMN = 3; + const NAMES_INDEX = 4; + const REV_GENERATED_LINE = 1; + const REV_GENERATED_COLUMN = 2; + + function maybeSort(mappings, owned) { + const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); + if (unsortedIndex === mappings.length) + return mappings; + // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If + // not, we do not want to modify the consumer's input array. + if (!owned) + mappings = mappings.slice(); + for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) { + mappings[i] = sortSegments(mappings[i], owned); + } + return mappings; + } + function nextUnsortedSegmentLine(mappings, start) { + for (let i = start; i < mappings.length; i++) { + if (!isSorted(mappings[i])) + return i; + } + return mappings.length; + } + function isSorted(line) { + for (let j = 1; j < line.length; j++) { + if (line[j][COLUMN] < line[j - 1][COLUMN]) { + return false; + } + } + return true; + } + function sortSegments(line, owned) { + if (!owned) + line = line.slice(); + return line.sort(sortComparator); + } + function sortComparator(a, b) { + return a[COLUMN] - b[COLUMN]; + } -var _hasOwnProperty = Object.prototype.hasOwnProperty; + let found = false; + /** + * A binary search implementation that returns the index if a match is found. + * If no match is found, then the left-index (the index associated with the item that comes just + * before the desired index) is returned. To maintain proper sort order, a splice would happen at + * the next index: + * + * ```js + * const array = [1, 3]; + * const needle = 2; + * const index = binarySearch(array, needle, (item, needle) => item - needle); + * + * assert.equal(index, 0); + * array.splice(index + 1, 0, needle); + * assert.deepEqual(array, [1, 2, 3]); + * ``` + */ + function binarySearch(haystack, needle, low, high) { + while (low <= high) { + const mid = low + ((high - low) >> 1); + const cmp = haystack[mid][COLUMN] - needle; + if (cmp === 0) { + found = true; + return mid; + } + if (cmp < 0) { + low = mid + 1; + } + else { + high = mid - 1; + } + } + found = false; + return low - 1; + } + function upperBound(haystack, needle, index) { + for (let i = index + 1; i < haystack.length; index = i++) { + if (haystack[i][COLUMN] !== needle) + break; + } + return index; + } + function lowerBound(haystack, needle, index) { + for (let i = index - 1; i >= 0; index = i--) { + if (haystack[i][COLUMN] !== needle) + break; + } + return index; + } + function memoizedState() { + return { + lastKey: -1, + lastNeedle: -1, + lastIndex: -1, + }; + } + /** + * This overly complicated beast is just to record the last tested line/column and the resulting + * index, allowing us to skip a few tests if mappings are monotonically increasing. + */ + function memoizedBinarySearch(haystack, needle, state, key) { + const { lastKey, lastNeedle, lastIndex } = state; + let low = 0; + let high = haystack.length - 1; + if (key === lastKey) { + if (needle === lastNeedle) { + found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle; + return lastIndex; + } + if (needle >= lastNeedle) { + // lastIndex may be -1 if the previous needle was not found. + low = lastIndex === -1 ? 0 : lastIndex; + } + else { + high = lastIndex; + } + } + state.lastKey = key; + state.lastNeedle = needle; + return (state.lastIndex = binarySearch(haystack, needle, low, high)); + } + + // Rebuilds the original source files, with mappings that are ordered by source line/column instead + // of generated line/column. + function buildBySources(decoded, memos) { + const sources = memos.map(buildNullArray); + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + if (seg.length === 1) + continue; + const sourceIndex = seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + const originalSource = sources[sourceIndex]; + const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = [])); + const memo = memos[sourceIndex]; + // The binary search either found a match, or it found the left-index just before where the + // segment should go. Either way, we want to insert after that. And there may be multiple + // generated segments associated with an original location, so there may need to move several + // indexes before we find where we need to insert. + let index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine)); + memo.lastIndex = ++index; + insert(originalLine, index, [sourceColumn, i, seg[COLUMN]]); + } + } + return sources; + } + function insert(array, index, value) { + for (let i = array.length; i > index; i--) { + array[i] = array[i - 1]; + } + array[index] = value; + } + // Null arrays allow us to use ordered index keys without actually allocating contiguous memory like + // a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations. + // Numeric properties on objects are magically sorted in ascending order by the engine regardless of + // the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending + // order when iterating with for-in. + function buildNullArray() { + return { __proto__: null }; + } + const AnyMap = function (map, mapUrl) { + const parsed = parse(map); + if (!('sections' in parsed)) { + return new TraceMap(parsed, mapUrl); + } + const mappings = []; + const sources = []; + const sourcesContent = []; + const names = []; + const ignoreList = []; + recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, ignoreList, 0, 0, Infinity, Infinity); + const joined = { + version: 3, + file: parsed.file, + names, + sources, + sourcesContent, + mappings, + ignoreList, + }; + return presortedDecodedMap(joined); + }; + function parse(map) { + return typeof map === 'string' ? JSON.parse(map) : map; + } + function recurse(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) { + const { sections } = input; + for (let i = 0; i < sections.length; i++) { + const { map, offset } = sections[i]; + let sl = stopLine; + let sc = stopColumn; + if (i + 1 < sections.length) { + const nextOffset = sections[i + 1].offset; + sl = Math.min(stopLine, lineOffset + nextOffset.line); + if (sl === stopLine) { + sc = Math.min(stopColumn, columnOffset + nextOffset.column); + } + else if (sl < stopLine) { + sc = columnOffset + nextOffset.column; + } + } + addSection(map, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset + offset.line, columnOffset + offset.column, sl, sc); + } + } + function addSection(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) { + const parsed = parse(input); + if ('sections' in parsed) + return recurse(...arguments); + const map = new TraceMap(parsed, mapUrl); + const sourcesOffset = sources.length; + const namesOffset = names.length; + const decoded = decodedMappings(map); + const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map; + append(sources, resolvedSources); + append(names, map.names); + if (contents) + append(sourcesContent, contents); + else + for (let i = 0; i < resolvedSources.length; i++) + sourcesContent.push(null); + if (ignores) + for (let i = 0; i < ignores.length; i++) + ignoreList.push(ignores[i] + sourcesOffset); + for (let i = 0; i < decoded.length; i++) { + const lineI = lineOffset + i; + // We can only add so many lines before we step into the range that the next section's map + // controls. When we get to the last line, then we'll start checking the segments to see if + // they've crossed into the column range. But it may not have any columns that overstep, so we + // still need to check that we don't overstep lines, too. + if (lineI > stopLine) + return; + // The out line may already exist in mappings (if we're continuing the line started by a + // previous section). Or, we may have jumped ahead several lines to start this section. + const out = getLine(mappings, lineI); + // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the + // map can be multiple lines), it doesn't. + const cOffset = i === 0 ? columnOffset : 0; + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const column = cOffset + seg[COLUMN]; + // If this segment steps into the column range that the next section's map controls, we need + // to stop early. + if (lineI === stopLine && column >= stopColumn) + return; + if (seg.length === 1) { + out.push([column]); + continue; + } + const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX]; + const sourceLine = seg[SOURCE_LINE]; + const sourceColumn = seg[SOURCE_COLUMN]; + out.push(seg.length === 4 + ? [column, sourcesIndex, sourceLine, sourceColumn] + : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]); + } + } + } + function append(arr, other) { + for (let i = 0; i < other.length; i++) + arr.push(other[i]); + } + function getLine(arr, index) { + for (let i = arr.length; i <= index; i++) + arr[i] = []; + return arr[index]; + } + + const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)'; + const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)'; + const LEAST_UPPER_BOUND = -1; + const GREATEST_LOWER_BOUND = 1; + class TraceMap { + constructor(map, mapUrl) { + const isString = typeof map === 'string'; + if (!isString && map._decodedMemo) + return map; + const parsed = (isString ? JSON.parse(map) : map); + const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; + this.version = version; + this.file = file; + this.names = names || []; + this.sourceRoot = sourceRoot; + this.sources = sources; + this.sourcesContent = sourcesContent; + this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || undefined; + const from = resolve(sourceRoot || '', stripFilename(mapUrl)); + this.resolvedSources = sources.map((s) => resolve(s || '', from)); + const { mappings } = parsed; + if (typeof mappings === 'string') { + this._encoded = mappings; + this._decoded = undefined; + } + else { + this._encoded = undefined; + this._decoded = maybeSort(mappings, isString); + } + this._decodedMemo = memoizedState(); + this._bySources = undefined; + this._bySourceMemos = undefined; + } + } + /** + * Typescript doesn't allow friend access to private fields, so this just casts the map into a type + * with public access modifiers. + */ + function cast(map) { + return map; + } + /** + * Returns the encoded (VLQ string) form of the SourceMap's mappings field. + */ + function encodedMappings(map) { + var _a; + var _b; + return ((_a = (_b = cast(map))._encoded) !== null && _a !== void 0 ? _a : (_b._encoded = sourcemapCodec.encode(cast(map)._decoded))); + } + /** + * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field. + */ + function decodedMappings(map) { + var _a; + return ((_a = cast(map))._decoded || (_a._decoded = sourcemapCodec.decode(cast(map)._encoded))); + } + /** + * A low-level API to find the segment associated with a generated line/column (think, from a + * stack trace). Line and column here are 0-based, unlike `originalPositionFor`. + */ + function traceSegment(map, line, column) { + const decoded = decodedMappings(map); + // It's common for parent source maps to have pointers to lines that have no + // mapping (like a "//# sourceMappingURL=") at the end of the child file. + if (line >= decoded.length) + return null; + const segments = decoded[line]; + const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, GREATEST_LOWER_BOUND); + return index === -1 ? null : segments[index]; + } + /** + * A higher-level API to find the source/line/column associated with a generated line/column + * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in + * `source-map` library. + */ + function originalPositionFor(map, needle) { + let { line, column, bias } = needle; + line--; + if (line < 0) + throw new Error(LINE_GTR_ZERO); + if (column < 0) + throw new Error(COL_GTR_EQ_ZERO); + const decoded = decodedMappings(map); + // It's common for parent source maps to have pointers to lines that have no + // mapping (like a "//# sourceMappingURL=") at the end of the child file. + if (line >= decoded.length) + return OMapping(null, null, null, null); + const segments = decoded[line]; + const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND); + if (index === -1) + return OMapping(null, null, null, null); + const segment = segments[index]; + if (segment.length === 1) + return OMapping(null, null, null, null); + const { names, resolvedSources } = map; + return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null); + } + /** + * Finds the generated line/column position of the provided source/line/column source position. + */ + function generatedPositionFor(map, needle) { + const { source, line, column, bias } = needle; + return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false); + } + /** + * Finds all generated line/column positions of the provided source/line/column source position. + */ + function allGeneratedPositionsFor(map, needle) { + const { source, line, column, bias } = needle; + // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit. + return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true); + } + /** + * Iterates each mapping in generated position order. + */ + function eachMapping(map, cb) { + const decoded = decodedMappings(map); + const { names, resolvedSources } = map; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + for (let j = 0; j < line.length; j++) { + const seg = line[j]; + const generatedLine = i + 1; + const generatedColumn = seg[0]; + let source = null; + let originalLine = null; + let originalColumn = null; + let name = null; + if (seg.length !== 1) { + source = resolvedSources[seg[1]]; + originalLine = seg[2] + 1; + originalColumn = seg[3]; + } + if (seg.length === 5) + name = names[seg[4]]; + cb({ + generatedLine, + generatedColumn, + source, + originalLine, + originalColumn, + name, + }); + } + } + } + function sourceIndex(map, source) { + const { sources, resolvedSources } = map; + let index = sources.indexOf(source); + if (index === -1) + index = resolvedSources.indexOf(source); + return index; + } + /** + * Retrieves the source content for a particular source, if its found. Returns null if not. + */ + function sourceContentFor(map, source) { + const { sourcesContent } = map; + if (sourcesContent == null) + return null; + const index = sourceIndex(map, source); + return index === -1 ? null : sourcesContent[index]; + } + /** + * Determines if the source is marked to ignore by the source map. + */ + function isIgnored(map, source) { + const { ignoreList } = map; + if (ignoreList == null) + return false; + const index = sourceIndex(map, source); + return index === -1 ? false : ignoreList.includes(index); + } + /** + * A helper that skips sorting of the input map's mappings array, which can be expensive for larger + * maps. + */ + function presortedDecodedMap(map, mapUrl) { + const tracer = new TraceMap(clone(map, []), mapUrl); + cast(tracer)._decoded = map.mappings; + return tracer; + } + /** + * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + function decodedMap(map) { + return clone(map, decodedMappings(map)); + } + /** + * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects + * a sourcemap, or to JSON.stringify. + */ + function encodedMap(map) { + return clone(map, encodedMappings(map)); + } + function clone(map, mappings) { + return { + version: map.version, + file: map.file, + names: map.names, + sourceRoot: map.sourceRoot, + sources: map.sources, + sourcesContent: map.sourcesContent, + mappings, + ignoreList: map.ignoreList || map.x_google_ignoreList, + }; + } + function OMapping(source, line, column, name) { + return { source, line, column, name }; + } + function GMapping(line, column) { + return { line, column }; + } + function traceSegmentInternal(segments, memo, line, column, bias) { + let index = memoizedBinarySearch(segments, column, memo, line); + if (found) { + index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); + } + else if (bias === LEAST_UPPER_BOUND) + index++; + if (index === -1 || index === segments.length) + return -1; + return index; + } + function sliceGeneratedPositions(segments, memo, line, column, bias) { + let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND); + // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in + // insertion order) segment that matched. Even if we did respect the bias when tracing, we would + // still need to call `lowerBound()` to find the first segment, which is slower than just looking + // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the + // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to + // match LEAST_UPPER_BOUND. + if (!found && bias === LEAST_UPPER_BOUND) + min++; + if (min === -1 || min === segments.length) + return []; + // We may have found the segment that started at an earlier column. If this is the case, then we + // need to slice all generated segments that match _that_ column, because all such segments span + // to our desired column. + const matchedColumn = found ? column : segments[min][COLUMN]; + // The binary search is not guaranteed to find the lower bound when a match wasn't found. + if (!found) + min = lowerBound(segments, matchedColumn, min); + const max = upperBound(segments, matchedColumn, min); + const result = []; + for (; min <= max; min++) { + const segment = segments[min]; + result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN])); + } + return result; + } + function generatedPosition(map, source, line, column, bias, all) { + var _a; + line--; + if (line < 0) + throw new Error(LINE_GTR_ZERO); + if (column < 0) + throw new Error(COL_GTR_EQ_ZERO); + const { sources, resolvedSources } = map; + let sourceIndex = sources.indexOf(source); + if (sourceIndex === -1) + sourceIndex = resolvedSources.indexOf(source); + if (sourceIndex === -1) + return all ? [] : GMapping(null, null); + const generated = ((_a = cast(map))._bySources || (_a._bySources = buildBySources(decodedMappings(map), (cast(map)._bySourceMemos = sources.map(memoizedState))))); + const segments = generated[sourceIndex][line]; + if (segments == null) + return all ? [] : GMapping(null, null); + const memo = cast(map)._bySourceMemos[sourceIndex]; + if (all) + return sliceGeneratedPositions(segments, memo, line, column, bias); + const index = traceSegmentInternal(segments, memo, line, column, bias); + if (index === -1) + return GMapping(null, null); + const segment = segments[index]; + return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]); + } + + exports.AnyMap = AnyMap; + exports.GREATEST_LOWER_BOUND = GREATEST_LOWER_BOUND; + exports.LEAST_UPPER_BOUND = LEAST_UPPER_BOUND; + exports.TraceMap = TraceMap; + exports.allGeneratedPositionsFor = allGeneratedPositionsFor; + exports.decodedMap = decodedMap; + exports.decodedMappings = decodedMappings; + exports.eachMapping = eachMapping; + exports.encodedMap = encodedMap; + exports.encodedMappings = encodedMappings; + exports.generatedPositionFor = generatedPositionFor; + exports.isIgnored = isIgnored; + exports.originalPositionFor = originalPositionFor; + exports.presortedDecodedMap = presortedDecodedMap; + exports.sourceContentFor = sourceContentFor; + exports.traceSegment = traceSegment; -var CONTEXT_FLOW_IN = 1; -var CONTEXT_FLOW_OUT = 2; -var CONTEXT_BLOCK_IN = 3; -var CONTEXT_BLOCK_OUT = 4; +})); +//# sourceMappingURL=trace-mapping.umd.js.map -var CHOMPING_CLIP = 1; -var CHOMPING_STRIP = 2; -var CHOMPING_KEEP = 3; +/***/ }), +/***/ 73654: +/***/ ((module) => { -var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; -var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; -var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; -var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; -var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; +const IMPORT_REGEX = /^import\s/ +const EXPORT_REGEX = /^export\s/ +const EXPORT_DEFAULT_REGEX = /^export default\s/ +const STARTS_WITH_CAPITAL_LETTER_REGEX = /^[A-Z]/ +const EMPTY_NEWLINE = '\n\n' +const COMMENT_OPEN = '<!--' +const COMMENT_CLOSE = '-->' + +const isImport = text => IMPORT_REGEX.test(text) +const isExport = text => EXPORT_REGEX.test(text) +const isExportDefault = text => EXPORT_DEFAULT_REGEX.test(text) +const isImportOrExport = text => isImport(text) || isExport(text) + +const isComment = str => + str.startsWith(COMMENT_OPEN) && str.endsWith(COMMENT_CLOSE) + +const getCommentContents = str => + str.slice(COMMENT_OPEN.length, -COMMENT_CLOSE.length) + +const startsWithCapitalLetter = str => + STARTS_WITH_CAPITAL_LETTER_REGEX.test(str) + +const paramCase = string => + string + .replace(/([a-z0-9])([A-Z])/g, '$1-$2') + .replace(/([a-z])([0-9])/g, '$1-$2') + .toLowerCase() + +const toTemplateLiteral = text => { + const escaped = text + .replace(/\\(?!\$)/g, '\\\\') // Escape all "\" to avoid unwanted escaping in text nodes + // and ignore "\$" since it's already escaped and is common + // with prettier https://github.com/mdx-js/mdx/issues/606 + .replace(/`/g, '\\`') // Escape "`"" since + .replace(/(\\\$)/g, '\\$1') // Escape \$ so render it as it is + .replace(/(\\\$)(\{)/g, '\\$1\\$2') // Escape \${} so render it as it is + .replace(/\$\{/g, '\\${') // Escape ${} in text so that it doesn't eval + + return '{`' + escaped + '`}' +} + +module.exports.EMPTY_NEWLINE = EMPTY_NEWLINE +module.exports.isImport = isImport +module.exports.isExport = isExport +module.exports.isExportDefault = isExportDefault +module.exports.isImportOrExport = isImportOrExport +module.exports.startsWithCapitalLetter = startsWithCapitalLetter +module.exports.isComment = isComment +module.exports.getCommentContents = getCommentContents +module.exports.paramCase = paramCase +module.exports.toTemplateLiteral = toTemplateLiteral -function _class(obj) { return Object.prototype.toString.call(obj); } +/***/ }), -function is_EOL(c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); -} +/***/ 83076: +/***/ ((module) => { -function is_WHITE_SPACE(c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */); -} +"use strict"; -function is_WS_OR_EOL(c) { - return (c === 0x09/* Tab */) || - (c === 0x20/* Space */) || - (c === 0x0A/* LF */) || - (c === 0x0D/* CR */); -} -function is_FLOW_INDICATOR(c) { - return c === 0x2C/* , */ || - c === 0x5B/* [ */ || - c === 0x5D/* ] */ || - c === 0x7B/* { */ || - c === 0x7D/* } */; -} +module.exports = ccount -function fromHexCode(c) { - var lc; +function ccount(source, character) { + var value = String(source) + var count = 0 + var index - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; + if (typeof character !== 'string') { + throw new Error('Expected character') } - /*eslint-disable no-bitwise*/ - lc = c | 0x20; + index = value.indexOf(character) - if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { - return lc - 0x61 + 10; + while (index !== -1) { + count++ + index = value.indexOf(character, index + character.length) } - return -1; + return count } -function escapedHexLen(c) { - if (c === 0x78/* x */) { return 2; } - if (c === 0x75/* u */) { return 4; } - if (c === 0x55/* U */) { return 8; } - return 0; + +/***/ }), + +/***/ 37352: +/***/ ((module) => { + +"use strict"; + + +module.exports = collapse + +// `collapse(' \t\nbar \nbaz\t') // ' bar baz '` +function collapse(value) { + return String(value).replace(/\s+/g, ' ') } -function fromDecimalCode(c) { - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; + +/***/ }), + +/***/ 25288: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var fs = __nccwpck_require__(79896); +var path = __nccwpck_require__(16928); + +Object.defineProperty(exports, "commentRegex", ({ + get: function getCommentRegex () { + return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg; } +})); - return -1; +Object.defineProperty(exports, "mapFileCommentRegex", ({ + get: function getMapFileCommentRegex () { + // Matches sourceMappingURL in either // or /* comment styles. + return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg; + } +})); + +var decodeBase64; +if (typeof Buffer !== 'undefined') { + if (typeof Buffer.from === 'function') { + decodeBase64 = decodeBase64WithBufferFrom; + } else { + decodeBase64 = decodeBase64WithNewBuffer; + } +} else { + decodeBase64 = decodeBase64WithAtob; } -function simpleEscapeSequence(c) { - /* eslint-disable indent */ - return (c === 0x30/* 0 */) ? '\x00' : - (c === 0x61/* a */) ? '\x07' : - (c === 0x62/* b */) ? '\x08' : - (c === 0x74/* t */) ? '\x09' : - (c === 0x09/* Tab */) ? '\x09' : - (c === 0x6E/* n */) ? '\x0A' : - (c === 0x76/* v */) ? '\x0B' : - (c === 0x66/* f */) ? '\x0C' : - (c === 0x72/* r */) ? '\x0D' : - (c === 0x65/* e */) ? '\x1B' : - (c === 0x20/* Space */) ? ' ' : - (c === 0x22/* " */) ? '\x22' : - (c === 0x2F/* / */) ? '/' : - (c === 0x5C/* \ */) ? '\x5C' : - (c === 0x4E/* N */) ? '\x85' : - (c === 0x5F/* _ */) ? '\xA0' : - (c === 0x4C/* L */) ? '\u2028' : - (c === 0x50/* P */) ? '\u2029' : ''; +function decodeBase64WithBufferFrom(base64) { + return Buffer.from(base64, 'base64').toString(); } -function charFromCodepoint(c) { - if (c <= 0xFFFF) { - return String.fromCharCode(c); +function decodeBase64WithNewBuffer(base64) { + if (typeof value === 'number') { + throw new TypeError('The value to decode must not be of type number.'); } - // Encode UTF-16 surrogate pair - // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF - return String.fromCharCode( - ((c - 0x010000) >> 10) + 0xD800, - ((c - 0x010000) & 0x03FF) + 0xDC00 - ); + return new Buffer(base64, 'base64').toString(); } -var simpleEscapeCheck = new Array(256); // integer, for fast access -var simpleEscapeMap = new Array(256); -for (var i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); +function decodeBase64WithAtob(base64) { + return decodeURIComponent(escape(atob(base64))); } +function stripComment(sm) { + return sm.split(',').pop(); +} -function State(input, options) { - this.input = input; +function readFromFileMap(sm, dir) { + // NOTE: this will only work on the server since it attempts to read the map file - this.filename = options['filename'] || null; - this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; - this.onWarning = options['onWarning'] || null; - this.legacy = options['legacy'] || false; - this.json = options['json'] || false; - this.listener = options['listener'] || null; + var r = exports.mapFileCommentRegex.exec(sm); - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; + // for some odd reason //# .. captures in 1 and /* .. */ in 2 + var filename = r[1] || r[2]; + var filepath = path.resolve(dir, filename); - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; + try { + return fs.readFileSync(filepath, 'utf8'); + } catch (e) { + throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e); + } +} - this.documents = []; +function Converter (sm, opts) { + opts = opts || {}; - /* - this.version; - this.checkLineBreaks; - this.tagMap; - this.anchorMap; - this.tag; - this.anchor; - this.kind; - this.result;*/ + if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir); + if (opts.hasComment) sm = stripComment(sm); + if (opts.isEncoded) sm = decodeBase64(sm); + if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm); + this.sourcemap = sm; } +Converter.prototype.toJSON = function (space) { + return JSON.stringify(this.sourcemap, null, space); +}; -function generateError(state, message) { - return new YAMLException( - message, - new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); +if (typeof Buffer !== 'undefined') { + if (typeof Buffer.from === 'function') { + Converter.prototype.toBase64 = encodeBase64WithBufferFrom; + } else { + Converter.prototype.toBase64 = encodeBase64WithNewBuffer; + } +} else { + Converter.prototype.toBase64 = encodeBase64WithBtoa; } -function throwError(state, message) { - throw generateError(state, message); +function encodeBase64WithBufferFrom() { + var json = this.toJSON(); + return Buffer.from(json, 'utf8').toString('base64'); } -function throwWarning(state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); +function encodeBase64WithNewBuffer() { + var json = this.toJSON(); + if (typeof json === 'number') { + throw new TypeError('The json to encode must not be of type number.'); } + return new Buffer(json, 'utf8').toString('base64'); } +function encodeBase64WithBtoa() { + var json = this.toJSON(); + return btoa(unescape(encodeURIComponent(json))); +} -var directiveHandlers = { +Converter.prototype.toComment = function (options) { + var base64 = this.toBase64(); + var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; + return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; +}; - YAML: function handleYamlDirective(state, name, args) { +// returns copy instead of original +Converter.prototype.toObject = function () { + return JSON.parse(this.toJSON()); +}; - var match, major, minor; +Converter.prototype.addProperty = function (key, value) { + if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead'); + return this.setProperty(key, value); +}; - if (state.version !== null) { - throwError(state, 'duplication of %YAML directive'); - } +Converter.prototype.setProperty = function (key, value) { + this.sourcemap[key] = value; + return this; +}; - if (args.length !== 1) { - throwError(state, 'YAML directive accepts exactly one argument'); - } +Converter.prototype.getProperty = function (key) { + return this.sourcemap[key]; +}; - match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); +exports.fromObject = function (obj) { + return new Converter(obj); +}; - if (match === null) { - throwError(state, 'ill-formed argument of the YAML directive'); - } +exports.fromJSON = function (json) { + return new Converter(json, { isJSON: true }); +}; - major = parseInt(match[1], 10); - minor = parseInt(match[2], 10); +exports.fromBase64 = function (base64) { + return new Converter(base64, { isEncoded: true }); +}; - if (major !== 1) { - throwError(state, 'unacceptable YAML version of the document'); - } +exports.fromComment = function (comment) { + comment = comment + .replace(/^\/\*/g, '//') + .replace(/\*\/$/g, ''); - state.version = args[0]; - state.checkLineBreaks = (minor < 2); + return new Converter(comment, { isEncoded: true, hasComment: true }); +}; - if (minor !== 1 && minor !== 2) { - throwWarning(state, 'unsupported YAML version of the document'); - } - }, +exports.fromMapFileComment = function (comment, dir) { + return new Converter(comment, { commentFileDir: dir, isFileComment: true, isJSON: true }); +}; - TAG: function handleTagDirective(state, name, args) { +// Finds last sourcemap comment in file or returns null if none was found +exports.fromSource = function (content) { + var m = content.match(exports.commentRegex); + return m ? exports.fromComment(m.pop()) : null; +}; - var handle, prefix; +// Finds last sourcemap comment in file or returns null if none was found +exports.fromMapFileSource = function (content, dir) { + var m = content.match(exports.mapFileCommentRegex); + return m ? exports.fromMapFileComment(m.pop(), dir) : null; +}; - if (args.length !== 2) { - throwError(state, 'TAG directive accepts exactly two arguments'); - } +exports.removeComments = function (src) { + return src.replace(exports.commentRegex, ''); +}; - handle = args[0]; - prefix = args[1]; +exports.removeMapFileComments = function (src) { + return src.replace(exports.mapFileCommentRegex, ''); +}; - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); - } +exports.generateMapFileComment = function (file, options) { + var data = 'sourceMappingURL=' + file; + return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data; +}; - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); - } - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); - } +/***/ }), - state.tagMap[handle] = prefix; - } -}; +/***/ 6110: +/***/ ((module, exports, __nccwpck_require__) => { +/* eslint-env browser */ -function captureSegment(state, start, end, checkJson) { - var _position, _length, _character, _result; +/** + * This is the web browser implementation of `debug()`. + */ - if (start < end) { - _result = state.input.slice(start, end); +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; - if (checkJson) { - for (_position = 0, _length = _result.length; _position < _length; _position += 1) { - _character = _result.charCodeAt(_position); - if (!(_character === 0x09 || - (0x20 <= _character && _character <= 0x10FFFF))) { - throwError(state, 'expected valid JSON character'); - } - } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, 'the stream contains non-printable characters'); - } + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); - state.result += _result; - } -} +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; -function mergeMappings(state, destination, source, overridableKeys) { - var sourceKeys, key, index, quantity; +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ - if (!common.isObject(source)) { - throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); - } +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } - sourceKeys = Object.keys(source); + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } - for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - key = sourceKeys[index]; + let m; - if (!_hasOwnProperty.call(destination, key)) { - destination[key] = source[key]; - overridableKeys[key] = true; - } - } + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + // eslint-disable-next-line no-return-assign + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } -function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { - var index, quantity; - - // The output is a plain object here, so keys can only be strings. - // We need to convert keyNode to a string, but doing so can hang the process - // (deeply nested arrays that explode exponentially using aliases). - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); +/** + * Colorize log arguments if enabled. + * + * @api public + */ - for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, 'nested arrays are not supported inside keys'); - } +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); - if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { - keyNode[index] = '[object Object]'; - } - } - } + if (!this.useColors) { + return; + } - // Avoid code execution in load() via toString property - // (still use its own toString for arrays, timestamps, - // and whatever user schema extensions happen to have @@toStringTag) - if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { - keyNode = '[object Object]'; - } + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + args.splice(lastC, 0, c); +} - keyNode = String(keyNode); +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); - if (_result === null) { - _result = {}; - } +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} - if (keyTag === 'tag:yaml.org,2002:merge') { - if (Array.isArray(valueNode)) { - for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys); - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys); - } - } else { - if (!state.json && - !_hasOwnProperty.call(overridableKeys, keyNode) && - _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.position = startPos || state.position; - throwError(state, 'duplicated mapping key'); - } - _result[keyNode] = valueNode; - delete overridableKeys[keyNode]; - } +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } - return _result; + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; } -function readLineBreak(state) { - var ch; +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} - ch = state.input.charCodeAt(state.position); +module.exports = __nccwpck_require__(40897)(exports); - if (ch === 0x0A/* LF */) { - state.position++; - } else if (ch === 0x0D/* CR */) { - state.position++; - if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { - state.position++; - } - } else { - throwError(state, 'a line break is expected'); - } +const {formatters} = module.exports; - state.line += 1; - state.lineStart = state.position; -} +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ -function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0, - ch = state.input.charCodeAt(state.position); +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (allowComments && ch === 0x23/* # */) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); - } +/***/ }), - if (is_EOL(ch)) { - readLineBreak(state); +/***/ 40897: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; - while (ch === 0x20/* Space */) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } - } else { - break; - } - } +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, 'deficient indentation'); - } +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __nccwpck_require__(70744); + createDebug.destroy = destroy; - return lineBreaks; -} + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); -function testDocumentSeparator(state) { - var _position = state.position, - ch; + /** + * The currently active debug mode names, and names to skip. + */ - ch = state.input.charCodeAt(_position); + createDebug.names = []; + createDebug.skips = []; - // Condition state.position === state.lineStart is tested - // in parent on each call, for efficiency. No needs to test here again. - if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && - ch === state.input.charCodeAt(_position + 1) && - ch === state.input.charCodeAt(_position + 2)) { + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; - _position += 3; + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; - ch = state.input.charCodeAt(_position); + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } - if (ch === 0 || is_WS_OR_EOL(ch)) { - return true; - } - } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } - return false; -} + const self = debug; -function writeFoldedLines(state, count) { - if (count === 1) { - state.result += ' '; - } else if (count > 1) { - state.result += common.repeat('\n', count - 1); - } -} + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); -function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var preceding, - following, - captureStart, - captureEnd, - hasPendingContent, - _line, - _lineStart, - _lineIndent, - _kind = state.kind, - _result = state.result, - ch; + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } - ch = state.input.charCodeAt(state.position); + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); - if (is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || - ch === 0x60/* ` */) { - return false; - } + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); - if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - following = state.input.charCodeAt(state.position + 1); + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - return false; - } - } + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. - state.kind = 'scalar'; - state.result = ''; - captureStart = captureEnd = state.position; - hasPendingContent = false; + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } - while (ch !== 0) { - if (ch === 0x3A/* : */) { - following = state.input.charCodeAt(state.position + 1); + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - break; - } + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } - } else if (ch === 0x23/* # */) { - preceding = state.input.charCodeAt(state.position - 1); + return debug; + } - if (is_WS_OR_EOL(preceding)) { - break; - } + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - withinFlowCollection && is_FLOW_INDICATOR(ch)) { - break; + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + const split = (typeof namespaces === 'string' ? namespaces : '') + .trim() + .replace(/\s+/g, ',') + .split(',') + .filter(Boolean); + + for (const ns of split) { + if (ns[0] === '-') { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } - } else if (is_EOL(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); + /** + * Checks if the given string matches a namespace template, honoring + * asterisks as wildcards. + * + * @param {String} search + * @param {String} template + * @return {Boolean} + */ + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { + // Match character or proceed with wildcard + if (template[templateIndex] === '*') { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; // Skip the '*' + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition + // Backtrack to the last '*' and try to match more characters + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; // No match + } + } - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; - } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; - } - } + // Handle trailing '*' in template + while (templateIndex < template.length && template[templateIndex] === '*') { + templateIndex++; + } - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; - } + return templateIndex === template.length; + } - if (!is_WHITE_SPACE(ch)) { - captureEnd = state.position + 1; - } + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } - ch = state.input.charCodeAt(++state.position); - } + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } - captureSegment(state, captureStart, captureEnd, false); + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } - if (state.result) { - return true; - } + return false; + } - state.kind = _kind; - state.result = _result; - return false; + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; } -function readSingleQuotedScalar(state, nodeIndent) { - var ch, - captureStart, captureEnd; +module.exports = setup; - ch = state.input.charCodeAt(state.position); - if (ch !== 0x27/* ' */) { - return false; - } +/***/ }), - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; +/***/ 2830: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ - if (ch === 0x27/* ' */) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = __nccwpck_require__(6110); +} else { + module.exports = __nccwpck_require__(95108); +} - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a single quoted scalar'); +/***/ }), - } else { - state.position++; - captureEnd = state.position; - } - } +/***/ 95108: +/***/ ((module, exports, __nccwpck_require__) => { - throwError(state, 'unexpected end of the stream within a single quoted scalar'); -} +/** + * Module dependencies. + */ -function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, - captureEnd, - hexLength, - hexResult, - tmp, - ch; +const tty = __nccwpck_require__(52018); +const util = __nccwpck_require__(39023); - ch = state.input.charCodeAt(state.position); +/** + * This is the Node.js implementation of `debug()`. + */ - if (ch !== 0x22/* " */) { - return false; - } +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; +/** + * Colors. + */ - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; +exports.colors = [6, 2, 3, 4, 5, 1]; - } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = __nccwpck_require__(21450); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} - if (is_EOL(ch)) { - skipSeparationSpace(state, false, nodeIndent); +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); - // TODO: rework to inline fn with no type cast? - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } - } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; + obj[prop] = val; + return obj; +}, {}); - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} - } else { - throwError(state, 'expected hexadecimal character'); - } - } +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ - state.result += charFromCodepoint(hexResult); +function formatArgs(args) { + const {namespace: name, useColors} = this; - state.position++; + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; - } else { - throwError(state, 'unknown escape sequence'); - } + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} - captureStart = captureEnd = state.position; +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; +/** + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. + */ - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a double quoted scalar'); +function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); +} - } else { - state.position++; - captureEnd = state.position; - } - } +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} - throwError(state, 'unexpected end of the stream within a double quoted scalar'); +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; } -function readFlowCollection(state, nodeIndent) { - var readNext = true, - _line, - _tag = state.tag, - _result, - _anchor = state.anchor, - following, - terminator, - isPair, - isExplicitPair, - isMapping, - overridableKeys = {}, - keyNode, - keyTag, - valueNode, - ch; +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ - ch = state.input.charCodeAt(state.position); +function init(debug) { + debug.inspectOpts = {}; - if (ch === 0x5B/* [ */) { - terminator = 0x5D;/* ] */ - isMapping = false; - _result = []; - } else if (ch === 0x7B/* { */) { - terminator = 0x7D;/* } */ - isMapping = true; - _result = {}; - } else { - return false; - } + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } +module.exports = __nccwpck_require__(40897)(exports); - ch = state.input.charCodeAt(++state.position); +const {formatters} = module.exports; - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); +/** + * Map %o to `util.inspect()`, all on a single line. + */ - ch = state.input.charCodeAt(state.position); +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; - if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? 'mapping' : 'sequence'; - state.result = _result; - return true; - } else if (!readNext) { - throwError(state, 'missed comma between flow collection entries'); - } +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; - if (ch === 0x3F/* ? */) { - following = state.input.charCodeAt(state.position + 1); - if (is_WS_OR_EOL(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); - } - } +/***/ }), - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); +/***/ 48905: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - ch = state.input.charCodeAt(state.position); +"use strict"; - if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); - } else { - _result.push(keyNode); - } +var isObject = __nccwpck_require__(36403); - skipSeparationSpace(state, true, nodeIndent); +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } - ch = state.input.charCodeAt(state.position); + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; - if (ch === 0x2C/* , */) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { - readNext = false; + if (isObject(obj)) { + assign(o, obj); } } + return o; +}; - throwError(state, 'unexpected end of the stream within a flow collection'); +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } } -function readBlockScalar(state, nodeIndent) { - var captureStart, - folding, - chomping = CHOMPING_CLIP, - didReadContent = false, - detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, - atMoreIndented = false, - tmp, - ch; +/** + * Returns true if the given `key` is an own property of `obj`. + */ - ch = state.input.charCodeAt(state.position); +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} - if (ch === 0x7C/* | */) { - folding = false; - } else if (ch === 0x3E/* > */) { - folding = true; - } else { - return false; - } - state.kind = 'scalar'; - state.result = ''; +/***/ }), - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); +/***/ 23860: +/***/ ((module) => { - if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { - if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, 'repeat of a chomping mode identifier'); - } +"use strict"; - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; - } else { - throwError(state, 'repeat of an indentation width identifier'); - } - } else { - break; - } - } +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; - if (is_WHITE_SPACE(ch)) { - do { ch = state.input.charCodeAt(++state.position); } - while (is_WHITE_SPACE(ch)); +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (!is_EOL(ch) && (ch !== 0)); - } - } + return toStr.call(arr) === '[object Array]'; +}; - while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } - ch = state.input.charCodeAt(state.position); + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } - while ((!detectedIndent || state.lineIndent < textIndent) && - (ch === 0x20/* Space */)) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; - } + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; - if (is_EOL(ch)) { - emptyLines++; - continue; - } +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } +}; - // End of the scalar. - if (state.lineIndent < textIndent) { +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } - // Perform the chomping. - if (chomping === CHOMPING_KEEP) { - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { // i.e. only if the scalar is not empty. - state.result += '\n'; - } - } + return obj[name]; +}; - // Break this `while` cycle and go to the funciton's epilogue. - break; - } +module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; - // Folded style: use fancy rules to handle line breaks. - if (folding) { + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } - // Lines starting with white space characters (more-indented lines) are not folded. - if (is_WHITE_SPACE(ch)) { - atMoreIndented = true; - // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); - // End of more-indented block. - } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common.repeat('\n', emptyLines + 1); + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } - // Just one line break - perceive as the same line. - } else if (emptyLines === 0) { - if (didReadContent) { // i.e. only if we have already read some scalar content. - state.result += ' '; - } + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); - // Several line breaks - perceive as different lines. - } else { - state.result += common.repeat('\n', emptyLines); - } + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } - // Literal style: just add exact number of line breaks between content lines. - } else { - // Keep all line breaks except the header line break. - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } + // Return the modified object + return target; +}; - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - captureStart = state.position; - while (!is_EOL(ch) && (ch !== 0)) { - ch = state.input.charCodeAt(++state.position); - } +/***/ }), - captureSegment(state, captureStart, state.position, false); - } +/***/ 99808: +/***/ ((module) => { - return true; -} +"use strict"; -function readBlockSequence(state, nodeIndent) { - var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], - following, - detected = false, - ch; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } +/* eslint no-invalid-this: 1 */ - ch = state.input.charCodeAt(state.position); +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; - while (ch !== 0) { +var concatty = function concatty(a, b) { + var arr = []; - if (ch !== 0x2D/* - */) { - break; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; } - following = state.input.charCodeAt(state.position + 1); + return arr; +}; - if (!is_WS_OR_EOL(following)) { - break; +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; } + return arr; +}; - detected = true; - state.position++; +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; - } +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); } + var args = slicy(arguments, 1); - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); - ch = state.input.charCodeAt(state.position); + }; - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a sequence entry'); - } else if (state.lineIndent < nodeIndent) { - break; + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; } - } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'sequence'; - state.result = _result; - return true; - } - return false; -} + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); -function readBlockMapping(state, nodeIndent, flowIndent) { - var following, - allowCompact, - _line, - _pos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, - overridableKeys = {}, - keyTag = null, - keyNode = null, - valueNode = null, - atExplicitKey = false, - detected = false, - ch; + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } + return bound; +}; - ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - following = state.input.charCodeAt(state.position + 1); - _line = state.line; // Save the current line. - _pos = state.position; +/***/ }), - // - // Explicit notation case. There are two separate blocks: - // first for the key (denoted by "?") and second for the value (denoted by ":") - // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { +/***/ 37564: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (ch === 0x3F/* ? */) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - keyTag = keyNode = valueNode = null; - } +"use strict"; - detected = true; - atExplicitKey = true; - allowCompact = true; - } else if (atExplicitKey) { - // i.e. 0x3A/* : */ === character after the explicit key. - atExplicitKey = false; - allowCompact = true; +var implementation = __nccwpck_require__(99808); - } else { - throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); - } +module.exports = Function.prototype.bind || implementation; - state.position += 1; - ch = following; - // - // Implicit notation case. Flow-style node as the key first, then ":", and the value. - // - } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { +/***/ }), - if (state.line === _line) { - ch = state.input.charCodeAt(state.position); +/***/ 9621: +/***/ ((module) => { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } +"use strict"; - if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position); - if (!is_WS_OR_EOL(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); - } +// These use the global symbol registry so that multiple copies of this +// library can work together in case they are not deduped. +const GENSYNC_START = Symbol.for("gensync:v1:start"); +const GENSYNC_SUSPEND = Symbol.for("gensync:v1:suspend"); - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); - keyTag = keyNode = valueNode = null; - } +const GENSYNC_EXPECTED_START = "GENSYNC_EXPECTED_START"; +const GENSYNC_EXPECTED_SUSPEND = "GENSYNC_EXPECTED_SUSPEND"; +const GENSYNC_OPTIONS_ERROR = "GENSYNC_OPTIONS_ERROR"; +const GENSYNC_RACE_NONEMPTY = "GENSYNC_RACE_NONEMPTY"; +const GENSYNC_ERRBACK_NO_CALLBACK = "GENSYNC_ERRBACK_NO_CALLBACK"; - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; +module.exports = Object.assign( + function gensync(optsOrFn) { + let genFn = optsOrFn; + if (typeof optsOrFn !== "function") { + genFn = newGenerator(optsOrFn); + } else { + genFn = wrapGenerator(optsOrFn); + } - } else if (detected) { - throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + return Object.assign(genFn, makeFunctionAPI(genFn)); + }, + { + all: buildOperation({ + name: "all", + arity: 1, + sync: function(args) { + const items = Array.from(args[0]); + return items.map(item => evaluateSync(item)); + }, + async: function(args, resolve, reject) { + const items = Array.from(args[0]); - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. + if (items.length === 0) { + Promise.resolve().then(() => resolve([])); + return; } - } else if (detected) { - throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + let count = 0; + const results = items.map(() => undefined); + items.forEach((item, i) => { + evaluateAsync( + item, + val => { + results[i] = val; + count += 1; - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } + if (count === results.length) resolve(results); + }, + reject + ); + }); + }, + }), + race: buildOperation({ + name: "race", + arity: 1, + sync: function(args) { + const items = Array.from(args[0]); + if (items.length === 0) { + throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY); + } - } else { - break; // Reading is done. Go to the epilogue. - } + return evaluateSync(items[0]); + }, + async: function(args, resolve, reject) { + const items = Array.from(args[0]); + if (items.length === 0) { + throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY); + } - // - // Common reading code for both explicit and implicit notations. - // - if (state.line === _line || state.lineIndent > nodeIndent) { - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result; - } else { - valueNode = state.result; + for (const item of items) { + evaluateAsync(item, resolve, reject); } - } + }, + }), + } +); - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); - keyTag = keyNode = valueNode = null; +/** + * Given a generator function, return the standard API object that executes + * the generator and calls the callbacks. + */ +function makeFunctionAPI(genFn) { + const fns = { + sync: function(...args) { + return evaluateSync(genFn.apply(this, args)); + }, + async: function(...args) { + return new Promise((resolve, reject) => { + evaluateAsync(genFn.apply(this, args), resolve, reject); + }); + }, + errback: function(...args) { + const cb = args.pop(); + if (typeof cb !== "function") { + throw makeError( + "Asynchronous function called without callback", + GENSYNC_ERRBACK_NO_CALLBACK + ); } - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - } - - if (state.lineIndent > nodeIndent && (ch !== 0)) { - throwError(state, 'bad indentation of a mapping entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } - } + let gen; + try { + gen = genFn.apply(this, args); + } catch (err) { + cb(err); + return; + } - // - // Epilogue. - // + evaluateAsync(gen, val => cb(undefined, val), err => cb(err)); + }, + }; + return fns; +} - // Special case: last mapping's node contains only the key in explicit notation. - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); +function assertTypeof(type, name, value, allowUndefined) { + if ( + typeof value === type || + (allowUndefined && typeof value === "undefined") + ) { + return; } - // Expose the resulting mapping. - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'mapping'; - state.result = _result; + let msg; + if (allowUndefined) { + msg = `Expected opts.${name} to be either a ${type}, or undefined.`; + } else { + msg = `Expected opts.${name} to be a ${type}.`; } - return detected; + throw makeError(msg, GENSYNC_OPTIONS_ERROR); +} +function makeError(msg, code) { + return Object.assign(new Error(msg), { code }); } -function readTagProperty(state) { - var _position, - isVerbatim = false, - isNamed = false, - tagHandle, - tagName, - ch; +/** + * Given an options object, return a new generator that dispatches the + * correct handler based on sync or async execution. + */ +function newGenerator({ name, arity, sync, async, errback }) { + assertTypeof("string", "name", name, true /* allowUndefined */); + assertTypeof("number", "arity", arity, true /* allowUndefined */); + assertTypeof("function", "sync", sync); + assertTypeof("function", "async", async, true /* allowUndefined */); + assertTypeof("function", "errback", errback, true /* allowUndefined */); + if (async && errback) { + throw makeError( + "Expected one of either opts.async or opts.errback, but got _both_.", + GENSYNC_OPTIONS_ERROR + ); + } - ch = state.input.charCodeAt(state.position); + if (typeof name !== "string") { + let fnName; + if (errback && errback.name && errback.name !== "errback") { + fnName = errback.name; + } + if (async && async.name && async.name !== "async") { + fnName = async.name.replace(/Async$/, ""); + } + if (sync && sync.name && sync.name !== "sync") { + fnName = sync.name.replace(/Sync$/, ""); + } - if (ch !== 0x21/* ! */) return false; + if (typeof fnName === "string") { + name = fnName; + } + } - if (state.tag !== null) { - throwError(state, 'duplication of a tag property'); + if (typeof arity !== "number") { + arity = sync.length; } - ch = state.input.charCodeAt(++state.position); + return buildOperation({ + name, + arity, + sync: function(args) { + return sync.apply(this, args); + }, + async: function(args, resolve, reject) { + if (async) { + async.apply(this, args).then(resolve, reject); + } else if (errback) { + errback.call(this, ...args, (err, value) => { + if (err == null) resolve(value); + else reject(err); + }); + } else { + resolve(sync.apply(this, args)); + } + }, + }); +} - if (ch === 0x3C/* < */) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); +function wrapGenerator(genFn) { + return setFunctionMetadata(genFn.name, genFn.length, function(...args) { + return genFn.apply(this, args); + }); +} - } else if (ch === 0x21/* ! */) { - isNamed = true; - tagHandle = '!!'; - ch = state.input.charCodeAt(++state.position); +function buildOperation({ name, arity, sync, async }) { + return setFunctionMetadata(name, arity, function*(...args) { + const resume = yield GENSYNC_START; + if (!resume) { + // Break the tail call to avoid a bug in V8 v6.X with --harmony enabled. + const res = sync.call(this, args); + return res; + } - } else { - tagHandle = '!'; - } + let result; + try { + async.call( + this, + args, + value => { + if (result) return; + + result = { value }; + resume(); + }, + err => { + if (result) return; - _position = state.position; + result = { err }; + resume(); + } + ); + } catch (err) { + result = { err }; + resume(); + } - if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && ch !== 0x3E/* > */); + // Suspend until the callbacks run. Will resume synchronously if the + // callback was already called. + yield GENSYNC_SUSPEND; - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); - } else { - throwError(state, 'unexpected end of the stream within a verbatim tag'); + if (result.hasOwnProperty("err")) { + throw result.err; } - } else { - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - if (ch === 0x21/* ! */) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); + return result.value; + }); +} - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters'); +function evaluateSync(gen) { + let value; + while (!({ value } = gen.next()).done) { + assertStart(value, gen); + } + return value; +} + +function evaluateAsync(gen, resolve, reject) { + (function step() { + try { + let value; + while (!({ value } = gen.next()).done) { + assertStart(value, gen); + + // If this throws, it is considered to have broken the contract + // established for async handlers. If these handlers are called + // synchronously, it is also considered bad behavior. + let sync = true; + let didSyncResume = false; + const out = gen.next(() => { + if (sync) { + didSyncResume = true; + } else { + step(); } + }); + sync = false; - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, 'tag suffix cannot contain exclamation marks'); + assertSuspend(out, gen); + + if (!didSyncResume) { + // Callback wasn't called synchronously, so break out of the loop + // and let it call 'step' later. + return; } } - ch = state.input.charCodeAt(++state.position); + return resolve(value); + } catch (err) { + return reject(err); } + })(); +} - tagName = state.input.slice(_position, state.position); +function assertStart(value, gen) { + if (value === GENSYNC_START) return; - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, 'tag suffix cannot contain flow indicator characters'); - } - } - - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, 'tag name cannot contain such characters: ' + tagName); - } - - if (isVerbatim) { - state.tag = tagName; + throwError( + gen, + makeError( + `Got unexpected yielded value in gensync generator: ${JSON.stringify( + value + )}. Did you perhaps mean to use 'yield*' instead of 'yield'?`, + GENSYNC_EXPECTED_START + ) + ); +} +function assertSuspend({ value, done }, gen) { + if (!done && value === GENSYNC_SUSPEND) return; + + throwError( + gen, + makeError( + done + ? "Unexpected generator completion. If you get this, it is probably a gensync bug." + : `Expected GENSYNC_SUSPEND, got ${JSON.stringify( + value + )}. If you get this, it is probably a gensync bug.`, + GENSYNC_EXPECTED_SUSPEND + ) + ); +} - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; +function throwError(gen, err) { + // Call `.throw` so that users can step in a debugger to easily see which + // 'yield' passed an unexpected value. If the `.throw` call didn't throw + // back to the generator, we explicitly do it to stop the error + // from being swallowed by user code try/catches. + if (gen.throw) gen.throw(err); + throw err; +} - } else if (tagHandle === '!') { - state.tag = '!' + tagName; +function isIterable(value) { + return ( + !!value && + (typeof value === "object" || typeof value === "function") && + !value[Symbol.iterator] + ); +} - } else if (tagHandle === '!!') { - state.tag = 'tag:yaml.org,2002:' + tagName; +function setFunctionMetadata(name, arity, fn) { + if (typeof name === "string") { + // This should always work on the supported Node versions, but for the + // sake of users that are compiling to older versions, we check for + // configurability so we don't throw. + const nameDesc = Object.getOwnPropertyDescriptor(fn, "name"); + if (!nameDesc || nameDesc.configurable) { + Object.defineProperty( + fn, + "name", + Object.assign(nameDesc || {}, { + configurable: true, + value: name, + }) + ); + } + } - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + if (typeof arity === "number") { + const lengthDesc = Object.getOwnPropertyDescriptor(fn, "length"); + if (!lengthDesc || lengthDesc.configurable) { + Object.defineProperty( + fn, + "length", + Object.assign(lengthDesc || {}, { + configurable: true, + value: arity, + }) + ); + } } - return true; + return fn; } -function readAnchorProperty(state) { - var _position, - ch; - - ch = state.input.charCodeAt(state.position); - if (ch !== 0x26/* & */) return false; +/***/ }), - if (state.anchor !== null) { - throwError(state, 'duplication of an anchor property'); - } +/***/ 21384: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - ch = state.input.charCodeAt(++state.position); - _position = state.position; +"use strict"; - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); - } +module.exports = __nccwpck_require__(14652); - if (state.position === _position) { - throwError(state, 'name of an anchor node must contain at least one character'); - } - state.anchor = state.input.slice(_position, state.position); - return true; -} +/***/ }), -function readAlias(state) { - var _position, alias, - ch; +/***/ 73964: +/***/ ((module) => { - ch = state.input.charCodeAt(state.position); +"use strict"; - if (ch !== 0x2A/* * */) return false; - ch = state.input.charCodeAt(++state.position); - _position = state.position; +module.exports = clone - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); - } +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} - if (state.position === _position) { - throwError(state, 'name of an alias node must contain at least one character'); - } +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj - alias = state.input.slice(_position, state.position); + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); - } + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; + return copy } -function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - var allowBlockStyles, - allowBlockScalars, - allowBlockCollections, - indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent - atNewLine = false, - hasContent = false, - typeIndex, - typeQuantity, - type, - flowIndent, - blockIndent; - if (state.listener !== null) { - state.listener('open', state); - } +/***/ }), - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; +/***/ 35744: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - allowBlockStyles = allowBlockScalars = allowBlockCollections = - CONTEXT_BLOCK_OUT === nodeContext || - CONTEXT_BLOCK_IN === nodeContext; +var fs = __nccwpck_require__(79896) +var polyfills = __nccwpck_require__(83501) +var legacy = __nccwpck_require__(12270) +var clone = __nccwpck_require__(73964) - if (allowToSeek) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; +var util = __nccwpck_require__(39023) - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) } - if (indentStatus === 1) { - while (readTagProperty(state) || readAnchorProperty(state)) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() } - } else { - allowBlockCollections = false; - } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) } - } - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; - } + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; - } else { - flowIndent = parentIndent + 1; + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() } - blockIndent = state.position - state.lineStart; + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) - if (indentStatus === 1) { - if (allowBlockCollections && - (readBlockSequence(state, blockIndent) || - readBlockMapping(state, blockIndent, flowIndent)) || - readFlowCollection(state, flowIndent)) { - hasContent = true; - } else { - if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || - readSingleQuotedScalar(state, flowIndent) || - readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __nccwpck_require__(42613).equal(fs[gracefulQueue].length, 0) + }) + } +} - } else if (readAlias(state)) { - hasContent = true; +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} - if (state.tag !== null || state.anchor !== null) { - throwError(state, 'alias node should not have any properties'); - } +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch - if (state.tag === null) { - state.tag = '?'; - } - } + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) } - } - } else if (indentStatus === 0) { - // Special case: block sequences are allowed to have same indentation level as the parent. - // http://www.yaml.org/spec/1.2/spec.html#id2799784 - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + }) } } - if (state.tag !== null && state.tag !== '!') { - if (state.tag === '?') { - // Implicit resolving is not allowed for non-scalar types, and '?' - // non-specific tag is only automatically assigned to plain scalars. - // - // We only need to check kind conformity in case user explicitly assigns '?' - // tag, for example like this: "!<?> [0]" - // - if (state.result !== null && state.kind !== 'scalar') { - throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"'); - } - - for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type = state.implicitTypes[typeIndex]; - - if (type.resolve(state.result)) { // `state.result` updated in resolver if matched - state.result = type.construct(state.result); - state.tag = type.tag; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - break; - } - } - } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { - type = state.typeMap[state.kind || 'fallback'][state.tag]; + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null - if (state.result !== null && type.kind !== state.kind) { - throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); - } + return go$writeFile(path, data, options, cb) - if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched - throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); - } else { - state.result = type.construct(state.result); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) } - } - } else { - throwError(state, 'unknown tag !<' + state.tag + '>'); + }) } } - if (state.listener !== null) { - state.listener('close', state); - } - return state.tag !== null || state.anchor !== null || hasContent; -} - -function readDocument(state) { - var documentStart = state.position, - _position, - directiveName, - directiveArgs, - hasDirectives = false, - ch; - - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = {}; - state.anchorMap = {}; - - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null - ch = state.input.charCodeAt(state.position); + return go$appendFile(path, data, options, cb) - if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break; + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) } + } - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 } + return go$copyFile(src, dest, flags, cb) - directiveName = state.input.slice(_position, state.position); - directiveArgs = []; - - if (directiveName.length < 1) { - throwError(state, 'directive name must not be less than one character in length'); + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) } + } - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && !is_EOL(ch)); - break; + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) } - - if (is_EOL(ch)) break; - - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) } - directiveArgs.push(state.input.slice(_position, state.position)); - } + return go$readdir(path, options, cb) - if (ch !== 0) readLineBreak(state); + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); + if (typeof cb === 'function') + cb.call(this, err, files) + } + } } } - skipSeparationSpace(state, true, -1); - - if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - - } else if (hasDirectives) { - throwError(state, 'directives end mark is expected'); - } - - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); - - if (state.checkLineBreaks && - PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream } - state.documents.push(state.result); - - if (state.position === state.lineStart && testDocumentSeparator(state)) { - - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - } - return; + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open } - if (state.position < (state.length - 1)) { - throwError(state, 'end of the stream or a document separator is expected'); - } else { - return; + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open } -} - -function loadDocuments(input, options) { - input = String(input); - options = options || {}; - - if (input.length !== 0) { - - // Add tailing `\n` if not exists - if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && - input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n'; - } - - // Strip BOM - if (input.charCodeAt(0) === 0xFEFF) { - input = input.slice(1); - } - } - - var state = new State(input, options); + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) - var nullpos = input.indexOf('\0'); + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) - if (nullpos !== -1) { - state.position = nullpos; - throwError(state, 'null byte is not allowed in input'); + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) } - // Use 0 as string terminator. That significantly simplifies bounds check. - state.input += '\0'; + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() - while (state.input.charCodeAt(state.position) === 0x20/* Space */) { - state.lineIndent += 1; - state.position += 1; + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) } - while (state.position < (state.length - 1)) { - readDocument(state); + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) } - return state.documents; -} + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } -function loadAll(input, iterator, options) { - if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { - options = iterator; - iterator = null; + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) } - var documents = loadDocuments(input, options); + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null - if (typeof iterator !== 'function') { - return documents; - } + return go$open(path, flags, mode, cb) - for (var index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } } + + return fs } +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} -function load(input, options) { - var documents = loadDocuments(input, options); +// keep track of the timeout between retry() calls +var retryTimer - if (documents.length === 0) { - /*eslint-disable no-undefined*/ - return undefined; - } else if (documents.length === 1) { - return documents[0]; +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } } - throw new YAMLException('expected a single document in the stream, but found more'); + // call retry to make sure we're actively processing the queue + retry() } +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined -function safeLoadAll(input, iterator, options) { - if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { - options = iterator; - iterator = null; - } + if (fs[gracefulQueue].length === 0) + return - return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); -} + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } -function safeLoad(input, options) { - return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } } -module.exports.loadAll = loadAll; -module.exports.load = load; -module.exports.safeLoadAll = safeLoadAll; -module.exports.safeLoad = safeLoad; - - /***/ }), -/***/ 3241: +/***/ 12270: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; - - +var Stream = (__nccwpck_require__(2203).Stream) -var common = __nccwpck_require__(4206); +module.exports = legacy +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } -function Mark(name, buffer, position, line, column) { - this.name = name; - this.buffer = buffer; - this.position = position; - this.line = line; - this.column = column; -} + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + Stream.call(this); -Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { - var head, start, tail, end, snippet; + var self = this; - if (!this.buffer) return null; + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; - indent = indent || 4; - maxLength = maxLength || 75; + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; - head = ''; - start = this.position; + options = options || {}; - while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { - start -= 1; - if (this.position - start > (maxLength / 2 - 1)) { - head = ' ... '; - start += 5; - break; + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; } - } - tail = ''; - end = this.position; + if (this.encoding) this.setEncoding(this.encoding); - while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { - end += 1; - if (end - this.position > (maxLength / 2 - 1)) { - tail = ' ... '; - end -= 5; - break; - } - } + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } - snippet = this.buffer.slice(start, end); + if (this.start > this.end) { + throw new Error('start must be <= end'); + } - return common.repeat(' ', indent) + head + snippet + tail + '\n' + - common.repeat(' ', indent + this.position - start + head.length) + '^'; -}; + this.pos = this.start; + } + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } -Mark.prototype.toString = function toString(compact) { - var snippet, where = ''; + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } - if (this.name) { - where += 'in "' + this.name + '" '; + self.fd = fd; + self.emit('open', fd); + self._read(); + }) } - where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); - - if (!compact) { - snippet = this.getSnippet(); + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); - if (snippet) { - where += ':\n' + snippet; - } - } + Stream.call(this); - return where; -}; + this.path = path; + this.fd = null; + this.writable = true; + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; -module.exports = Mark; + options = options || {}; + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } -/***/ }), + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } -/***/ 3487: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.pos = this.start; + } -"use strict"; + this.busy = false; + this._queue = []; + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} -/*eslint-disable max-len*/ -var common = __nccwpck_require__(4206); -var YAMLException = __nccwpck_require__(5622); -var Type = __nccwpck_require__(323); +/***/ }), +/***/ 83501: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function compileList(schema, name, result) { - var exclude = []; +var constants = __nccwpck_require__(49140) - schema.include.forEach(function (includedSchema) { - result = compileList(includedSchema, name, result); - }); +var origCwd = process.cwd +var cwd = null - schema[name].forEach(function (currentType) { - result.forEach(function (previousType, previousIndex) { - if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { - exclude.push(previousIndex); - } - }); +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform - result.push(currentType); - }); +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} - return result.filter(function (type, index) { - return exclude.indexOf(index) === -1; - }); +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) } +module.exports = patch -function compileMap(/* lists... */) { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {} - }, index, length; +function patch (fs) { + // (re-)implement some things that are known busted or missing. - function collectType(type) { - result[type.kind][type.tag] = result['fallback'][type.tag] = type; + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) } - for (index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) } - return result; -} - - -function Schema(definition) { - this.include = definition.include || []; - this.implicit = definition.implicit || []; - this.explicit = definition.explicit || []; - this.implicit.forEach(function (type) { - if (type.loadKind && type.loadKind !== 'scalar') { - throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); - } - }); - - this.compiledImplicit = compileList(this, 'implicit', []); - this.compiledExplicit = compileList(this, 'explicit', []); - this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); -} + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) -Schema.DEFAULT = null; + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) -Schema.create = function createSchema() { - var schemas, types; + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) - switch (arguments.length) { - case 1: - schemas = Schema.DEFAULT; - types = arguments[0]; - break; + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) - case 2: - schemas = arguments[0]; - types = arguments[1]; - break; + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) - default: - throw new YAMLException('Wrong number of arguments for Schema.create function'); + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} } - - schemas = common.toArray(schemas); - types = common.toArray(types); - - if (!schemas.every(function (schema) { return schema instanceof Schema; })) { - throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} } - if (!types.every(function (type) { return type instanceof Type; })) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); - } + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. - return new Schema({ - include: schemas, - explicit: types - }); -}; + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } -module.exports = Schema; + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) -/***/ }), + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } -/***/ 5116: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) -"use strict"; -// Standard YAML's Core schema. -// http://www.yaml.org/spec/1.2/spec.html#id2804923 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, Core schema has no distinctions from JSON schema is JS-YAML. + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } -var Schema = __nccwpck_require__(3487); + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } -module.exports = new Schema({ - include: [ - __nccwpck_require__(6613) - ] -}); + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } -/***/ }), + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } -/***/ 948: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } -"use strict"; -// JS-YAML's default schema for `load` function. -// It is not described in the YAML specification. -// -// This schema is based on JS-YAML's default safe schema and includes -// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. -// -// Also this schema is used as default base schema at `Schema.create` function. + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + if (er.code === "ENOSYS") + return true + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + return false + } +} -var Schema = __nccwpck_require__(3487); +/***/ }), +/***/ 19599: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = Schema.DEFAULT = new Schema({ - include: [ - __nccwpck_require__(6032) - ], - explicit: [ - __nccwpck_require__(9178), - __nccwpck_require__(8953), - __nccwpck_require__(1832) - ] -}); +"use strict"; -/***/ }), +const fs = __nccwpck_require__(79896); +const sections = __nccwpck_require__(89495); +const defaults = __nccwpck_require__(27545); +const stringify = __nccwpck_require__(34710); +const excerpt = __nccwpck_require__(77894); +const engines = __nccwpck_require__(74452); +const toFile = __nccwpck_require__(48073); +const parse = __nccwpck_require__(88120); +const utils = __nccwpck_require__(58698); -/***/ 6032: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * Takes a string or object with `content` property, extracts + * and parses front-matter from the string, then returns an object + * with `data`, `content` and other [useful properties](#returned-object). + * + * ```js + * const matter = require('gray-matter'); + * console.log(matter('---\ntitle: Home\n---\nOther stuff')); + * //=> { data: { title: 'Home'}, content: 'Other stuff' } + * ``` + * @param {Object|String} `input` String, or object with `content` string + * @param {Object} `options` + * @return {Object} + * @api public + */ -"use strict"; -// JS-YAML's default schema for `safeLoad` function. -// It is not described in the YAML specification. -// -// This schema is based on standard YAML's Core schema and includes most of -// extra types described at YAML tag repository. (http://yaml.org/type/) +function matter(input, options) { + if (input === '') { + return { data: {}, content: input, excerpt: '', orig: input }; + } + + let file = toFile(input); + const cached = matter.cache[file.content]; + + if (!options) { + if (cached) { + file = Object.assign({}, cached); + file.orig = cached.orig; + return file; + } + + // only cache if there are no options passed. if we cache when options + // are passed, we would need to also cache options values, which would + // negate any performance benefits of caching + matter.cache[file.content] = file; + } + return parseMatter(file, options); +} +/** + * Parse front matter + */ +function parseMatter(file, options) { + const opts = defaults(options); + const open = opts.delimiters[0]; + const close = '\n' + opts.delimiters[1]; + let str = file.content; + if (opts.language) { + file.language = opts.language; + } -var Schema = __nccwpck_require__(3487); + // get the length of the opening delimiter + const openLen = open.length; + if (!utils.startsWith(str, open, openLen)) { + excerpt(file, opts); + return file; + } + // if the next character after the opening delimiter is + // a character from the delimiter, then it's not a front- + // matter delimiter + if (str.charAt(openLen) === open.slice(-1)) { + return file; + } -module.exports = new Schema({ - include: [ - __nccwpck_require__(5116) - ], - implicit: [ - __nccwpck_require__(7044), - __nccwpck_require__(112) - ], - explicit: [ - __nccwpck_require__(5295), - __nccwpck_require__(7395), - __nccwpck_require__(9117), - __nccwpck_require__(7812) - ] -}); + // strip the opening delimiter + str = str.slice(openLen); + const len = str.length; + // use the language defined after first delimiter, if it exists + const language = matter.language(str, opts); + if (language.name) { + file.language = language.name; + str = str.slice(language.raw.length); + } -/***/ }), + // get the index of the closing delimiter + let closeIndex = str.indexOf(close); + if (closeIndex === -1) { + closeIndex = len; + } -/***/ 6810: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // get the raw front-matter block + file.matter = str.slice(0, closeIndex); -"use strict"; -// Standard YAML's Failsafe schema. -// http://www.yaml.org/spec/1.2/spec.html#id2802346 + const block = file.matter.replace(/^\s*#[^\n]+/gm, '').trim(); + if (block === '') { + file.isEmpty = true; + file.empty = file.content; + file.data = {}; + } else { + // create file.data by parsing the raw file.matter block + file.data = parse(file.language, file.matter, opts); + } + // update file.content + if (closeIndex === len) { + file.content = ''; + } else { + file.content = str.slice(closeIndex + close.length); + if (file.content[0] === '\r') { + file.content = file.content.slice(1); + } + if (file.content[0] === '\n') { + file.content = file.content.slice(1); + } + } + excerpt(file, opts); + if (opts.sections === true || typeof opts.section === 'function') { + sections(file, opts.section); + } + return file; +} -var Schema = __nccwpck_require__(3487); +/** + * Expose engines + */ +matter.engines = engines; -module.exports = new Schema({ - explicit: [ - __nccwpck_require__(4107), - __nccwpck_require__(2863), - __nccwpck_require__(4278) - ] -}); +/** + * Stringify an object to YAML or the specified language, and + * append it to the given string. By default, only YAML and JSON + * can be stringified. See the [engines](#engines) section to learn + * how to stringify other languages. + * + * ```js + * console.log(matter.stringify('foo bar baz', {title: 'Home'})); + * // results in: + * // --- + * // title: Home + * // --- + * // foo bar baz + * ``` + * @param {String|Object} `file` The content string to append to stringified front-matter, or a file object with `file.content` string. + * @param {Object} `data` Front matter to stringify. + * @param {Object} `options` [Options](#options) to pass to gray-matter and [js-yaml]. + * @return {String} Returns a string created by wrapping stringified yaml with delimiters, and appending that to the given string. + * @api public + */ +matter.stringify = function(file, data, options) { + if (typeof file === 'string') file = matter(file, options); + return stringify(file, data, options); +}; -/***/ }), +/** + * Synchronously read a file from the file system and parse + * front matter. Returns the same object as the [main function](#matter). + * + * ```js + * const file = matter.read('./content/blog-post.md'); + * ``` + * @param {String} `filepath` file path of the file to read. + * @param {Object} `options` [Options](#options) to pass to gray-matter. + * @return {Object} Returns [an object](#returned-object) with `data` and `content` + * @api public + */ -/***/ 6613: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +matter.read = function(filepath, options) { + const str = fs.readFileSync(filepath, 'utf8'); + const file = matter(str, options); + file.path = filepath; + return file; +}; -"use strict"; -// Standard YAML's JSON schema. -// http://www.yaml.org/spec/1.2/spec.html#id2803231 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, this schema is not such strict as defined in the YAML specification. -// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. +/** + * Returns true if the given `string` has front matter. + * @param {String} `string` + * @param {Object} `options` + * @return {Boolean} True if front matter exists. + * @api public + */ +matter.test = function(str, options) { + return utils.startsWith(str, defaults(options).delimiters[0]); +}; +/** + * Detect the language to use, if one is defined after the + * first front-matter delimiter. + * @param {String} `string` + * @param {Object} `options` + * @return {Object} Object with `raw` (actual language string), and `name`, the language with whitespace trimmed + */ +matter.language = function(str, options) { + const opts = defaults(options); + const open = opts.delimiters[0]; + if (matter.test(str)) { + str = str.slice(open.length); + } -var Schema = __nccwpck_require__(3487); + const language = str.slice(0, str.search(/\r?\n/)); + return { + raw: language, + name: language ? language.trim() : '' + }; +}; +/** + * Expose `matter` + */ -module.exports = new Schema({ - include: [ - __nccwpck_require__(6810) - ], - implicit: [ - __nccwpck_require__(7767), - __nccwpck_require__(3066), - __nccwpck_require__(53), - __nccwpck_require__(3122) - ] -}); +matter.cache = {}; +matter.clearCache = function() { + matter.cache = {}; +}; +module.exports = matter; /***/ }), -/***/ 323: +/***/ 27545: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var YAMLException = __nccwpck_require__(5622); +const engines = __nccwpck_require__(74452); +const utils = __nccwpck_require__(58698); -var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'defaultStyle', - 'styleAliases' -]; +module.exports = function(options) { + const opts = Object.assign({}, options); -var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -]; + // ensure that delimiters are an array + opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || '---'); + if (opts.delimiters.length === 1) { + opts.delimiters.push(opts.delimiters[0]); + } -function compileStyleAliases(map) { - var result = {}; + opts.language = (opts.language || opts.lang || 'yaml').toLowerCase(); + opts.engines = Object.assign({}, engines, opts.parsers, opts.engines); + return opts; +}; - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); - } - return result; -} +/***/ }), -function Type(tag, options) { - options = options || {}; +/***/ 5921: +/***/ ((module) => { - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); +"use strict"; - // TODO: Add tag format check. - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); +module.exports = function(name, options) { + let engine = options.engines[name] || options.engines[aliase(name)]; + if (typeof engine === 'undefined') { + throw new Error('gray-matter engine "' + name + '" is not registered'); } -} + if (typeof engine === 'function') { + engine = { parse: engine }; + } + return engine; +}; -module.exports = Type; +function aliase(name) { + switch (name.toLowerCase()) { + case 'js': + case 'javascript': + return 'javascript'; + case 'coffee': + case 'coffeescript': + case 'cson': + return 'coffee'; + case 'yaml': + case 'yml': + return 'yaml'; + default: { + return name; + } + } +} /***/ }), -/***/ 5295: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 74452: +/***/ ((module, exports, __nccwpck_require__) => { "use strict"; -/*eslint-disable no-bitwise*/ - -var NodeBuffer; - -try { - // A trick for browserified version, to not include `Buffer` shim - var _require = require; - NodeBuffer = _require('buffer').Buffer; -} catch (__) {} - -var Type = __nccwpck_require__(323); - +const yaml = __nccwpck_require__(74281); -// [ 64, 65, 66 ] -> [ padding, CR, LF ] -var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; +/** + * Default engines + */ +const engines = exports = module.exports; -function resolveYamlBinary(data) { - if (data === null) return false; +/** + * YAML + */ - var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; +engines.yaml = { + parse: yaml.safeLoad.bind(yaml), + stringify: yaml.safeDump.bind(yaml) +}; - // Convert one by one. - for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); +/** + * JSON + */ - // Skip CR/LF - if (code > 64) continue; +engines.json = { + parse: JSON.parse.bind(JSON), + stringify: function(obj, options) { + const opts = Object.assign({replacer: null, space: 2}, options); + return JSON.stringify(obj, opts.replacer, opts.space); + } +}; - // Fail on illegal characters - if (code < 0) return false; +/** + * JavaScript + */ - bitlen += 6; +engines.javascript = { + parse: function parse(str, options, wrap) { + /* eslint no-eval: 0 */ + try { + if (wrap !== false) { + str = '(function() {\nreturn ' + str.trim() + ';\n}());'; + } + return eval(str) || {}; + } catch (err) { + if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) { + return parse(str, options, false); + } + throw new SyntaxError(err); + } + }, + stringify: function() { + throw new Error('stringifying JavaScript is not supported'); } +}; - // If there are any bits left, source was corrupted - return (bitlen % 8) === 0; -} -function constructYamlBinary(data) { - var idx, tailbits, - input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan - max = input.length, - map = BASE64_MAP, - bits = 0, - result = []; +/***/ }), - // Collect by 6*4 bits (3 bytes) +/***/ 77894: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - for (idx = 0; idx < max; idx++) { - if ((idx % 4 === 0) && idx) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } +"use strict"; - bits = (bits << 6) | map.indexOf(input.charAt(idx)); - } - // Dump tail +const defaults = __nccwpck_require__(27545); - tailbits = (max % 4) * 6; +module.exports = function(file, options) { + const opts = defaults(options); - if (tailbits === 0) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF); - result.push((bits >> 2) & 0xFF); - } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF); + if (file.data == null) { + file.data = {}; } - // Wrap into Buffer for NodeJS and leave Array for browser - if (NodeBuffer) { - // Support node 6.+ Buffer API when available - return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); + if (typeof opts.excerpt === 'function') { + return opts.excerpt(file, opts); } - return result; -} + const sep = file.data.excerpt_separator || opts.excerpt_separator; + if (sep == null && (opts.excerpt === false || opts.excerpt == null)) { + return file; + } -function representYamlBinary(object /*, style*/) { - var result = '', bits = 0, idx, tail, - max = object.length, - map = BASE64_MAP; + const delimiter = typeof opts.excerpt === 'string' + ? opts.excerpt + : (sep || opts.delimiters[0]); - // Convert every three bytes to 4 ASCII characters. + // if enabled, get the excerpt defined after front-matter + const idx = file.content.indexOf(delimiter); + if (idx !== -1) { + file.excerpt = file.content.slice(0, idx); + } - for (idx = 0; idx < max; idx++) { - if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } + return file; +}; - bits = (bits << 8) + object[idx]; - } - // Dump tail +/***/ }), - tail = max % 3; +/***/ 88120: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (tail === 0) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F]; - result += map[(bits >> 4) & 0x3F]; - result += map[(bits << 2) & 0x3F]; - result += map[64]; - } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F]; - result += map[(bits << 4) & 0x3F]; - result += map[64]; - result += map[64]; - } +"use strict"; - return result; -} -function isBinary(object) { - return NodeBuffer && NodeBuffer.isBuffer(object); -} +const getEngine = __nccwpck_require__(5921); +const defaults = __nccwpck_require__(27545); -module.exports = new Type('tag:yaml.org,2002:binary', { - kind: 'scalar', - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary -}); +module.exports = function(language, str, options) { + const opts = defaults(options); + const engine = getEngine(language, opts); + if (typeof engine.parse !== 'function') { + throw new TypeError('expected "' + language + '.parse" to be a function'); + } + return engine.parse(str, opts); +}; /***/ }), -/***/ 3066: +/***/ 34710: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(323); +const typeOf = __nccwpck_require__(5140); +const getEngine = __nccwpck_require__(5921); +const defaults = __nccwpck_require__(27545); -function resolveYamlBoolean(data) { - if (data === null) return false; +module.exports = function(file, data, options) { + if (data == null && options == null) { + switch (typeOf(file)) { + case 'object': + data = file.data; + options = {}; + break; + case 'string': + return file; + default: { + throw new TypeError('expected file to be a string or object'); + } + } + } - var max = data.length; + const str = file.content; + const opts = defaults(options); + if (data == null) { + if (!opts.data) return file; + data = opts.data; + } - return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); -} + const language = file.language || opts.language; + const engine = getEngine(language, opts); + if (typeof engine.stringify !== 'function') { + throw new TypeError('expected "' + language + '.stringify" to be a function'); + } -function constructYamlBoolean(data) { - return data === 'true' || - data === 'True' || - data === 'TRUE'; -} + data = Object.assign({}, file.data, data); + const open = opts.delimiters[0]; + const close = opts.delimiters[1]; + const matter = engine.stringify(data, options).trim(); + let buf = ''; -function isBoolean(object) { - return Object.prototype.toString.call(object) === '[object Boolean]'; -} + if (matter !== '{}') { + buf = newline(open) + newline(matter) + newline(close); + } -module.exports = new Type('tag:yaml.org,2002:bool', { - kind: 'scalar', - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function (object) { return object ? 'true' : 'false'; }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, - camelcase: function (object) { return object ? 'True' : 'False'; } - }, - defaultStyle: 'lowercase' -}); + if (typeof file.excerpt === 'string' && file.excerpt !== '') { + if (str.indexOf(file.excerpt.trim()) === -1) { + buf += newline(file.excerpt) + newline(close); + } + } + + return buf + newline(str); +}; + +function newline(str) { + return str.slice(-1) !== '\n' ? str + '\n' : str; +} /***/ }), -/***/ 3122: +/***/ 48073: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var common = __nccwpck_require__(4206); -var Type = __nccwpck_require__(323); +const typeOf = __nccwpck_require__(5140); +const stringify = __nccwpck_require__(34710); +const utils = __nccwpck_require__(58698); -var YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + - // .2e4, .2 - // special case, seems not from spec - '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + - // 20:59 - '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + - // .inf - '|[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$'); +/** + * Normalize the given value to ensure an object is returned + * with the expected properties. + */ -function resolveYamlFloat(data) { - if (data === null) return false; +module.exports = function(file) { + if (typeOf(file) !== 'object') { + file = { content: file }; + } - if (!YAML_FLOAT_PATTERN.test(data) || - // Quick hack to not allow integers end with `_` - // Probably should update regexp & check speed - data[data.length - 1] === '_') { - return false; + if (typeOf(file.data) !== 'object') { + file.data = {}; } - return true; -} + // if file was passed as an object, ensure that + // "file.content" is set + if (file.contents && file.content == null) { + file.content = file.contents; + } -function constructYamlFloat(data) { - var value, sign, base, digits; + // set non-enumerable properties on the file object + utils.define(file, 'orig', utils.toBuffer(file.content)); + utils.define(file, 'language', file.language || ''); + utils.define(file, 'matter', file.matter || ''); + utils.define(file, 'stringify', function(data, options) { + if (options && options.language) { + file.language = options.language; + } + return stringify(file, data, options); + }); - value = data.replace(/_/g, '').toLowerCase(); - sign = value[0] === '-' ? -1 : 1; - digits = []; + // strip BOM and ensure that "file.content" is a string + file.content = utils.toString(file.content); + file.isEmpty = false; + file.excerpt = ''; + return file; +}; - if ('+-'.indexOf(value[0]) >= 0) { - value = value.slice(1); - } - if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; +/***/ }), - } else if (value === '.nan') { - return NaN; +/***/ 58698: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - } else if (value.indexOf(':') >= 0) { - value.split(':').forEach(function (v) { - digits.unshift(parseFloat(v, 10)); - }); +"use strict"; - value = 0.0; - base = 1; - digits.forEach(function (d) { - value += d * base; - base *= 60; - }); +const stripBom = __nccwpck_require__(91389); +const typeOf = __nccwpck_require__(5140); - return sign * value; +exports.define = function(obj, key, val) { + Reflect.defineProperty(obj, key, { + enumerable: false, + configurable: true, + writable: true, + value: val + }); +}; - } - return sign * parseFloat(value, 10); -} +/** + * Returns true if `val` is a buffer + */ +exports.isBuffer = function(val) { + return typeOf(val) === 'buffer'; +}; -var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; +/** + * Returns true if `val` is an object + */ -function representYamlFloat(object, style) { - var res; +exports.isObject = function(val) { + return typeOf(val) === 'object'; +}; - if (isNaN(object)) { - switch (style) { - case 'lowercase': return '.nan'; - case 'uppercase': return '.NAN'; - case 'camelcase': return '.NaN'; - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '.inf'; - case 'uppercase': return '.INF'; - case 'camelcase': return '.Inf'; - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '-.inf'; - case 'uppercase': return '-.INF'; - case 'camelcase': return '-.Inf'; - } - } else if (common.isNegativeZero(object)) { - return '-0.0'; - } +/** + * Cast `input` to a buffer + */ - res = object.toString(10); +exports.toBuffer = function(input) { + return typeof input === 'string' ? Buffer.from(input) : input; +}; - // JS stringifier can build scientific format without dots: 5e-100, - // while YAML requres dot: 5.e-100. Fix it with simple hack +/** + * Cast `val` to a string. + */ - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; -} +exports.toString = function(input) { + if (exports.isBuffer(input)) return stripBom(String(input)); + if (typeof input !== 'string') { + throw new TypeError('expected input to be a string or buffer'); + } + return stripBom(input); +}; -function isFloat(object) { - return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)); -} +/** + * Cast `val` to an array. + */ -module.exports = new Type('tag:yaml.org,2002:float', { - kind: 'scalar', - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: 'lowercase' -}); +exports.arrayify = function(val) { + return val ? (Array.isArray(val) ? val : [val]) : []; +}; + +/** + * Returns true if `str` starts with `substr`. + */ + +exports.startsWith = function(str, substr, len) { + if (typeof len !== 'number') len = substr.length; + return str.slice(0, len) === substr; +}; /***/ }), -/***/ 53: +/***/ 54076: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var common = __nccwpck_require__(4206); -var Type = __nccwpck_require__(323); +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = __nccwpck_require__(37564); -function isHexCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || - ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || - ((0x61/* a */ <= c) && (c <= 0x66/* f */)); -} - -function isOctCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); -} - -function isDecCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); -} - -function resolveYamlInteger(data) { - if (data === null) return false; +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); - var max = data.length, - index = 0, - hasDigits = false, - ch; - - if (!max) return false; - - ch = data[index]; - // sign - if (ch === '-' || ch === '+') { - ch = data[++index]; - } - - if (ch === '0') { - // 0 - if (index + 1 === max) return true; - ch = data[++index]; +/***/ }), - // base 2, base 8, base 16 +/***/ 39598: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (ch === 'b') { - // base 2 - index++; +try { + var util = __nccwpck_require__(39023); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = __nccwpck_require__(26589); +} - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (ch !== '0' && ch !== '1') return false; - hasDigits = true; - } - return hasDigits && ch !== '_'; - } +/***/ }), - if (ch === 'x') { - // base 16 - index++; +/***/ 26589: +/***/ ((module) => { - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isHexCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && ch !== '_'; +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) } - - // base 8 - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor } - return hasDigits && ch !== '_'; } +} - // base 10 (except 0) or base 60 - // value should not start with `_`; - if (ch === '_') return false; +/***/ }), - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (ch === ':') break; - if (!isDecCode(data.charCodeAt(index))) { - return false; - } - hasDigits = true; - } +/***/ 59201: +/***/ ((module) => { - // Should have digits and should not end with `_` - if (!hasDigits || ch === '_') return false; +"use strict"; - // if !base60 - done; - if (ch !== ':') return true; - // base60 almost not used, no needs to optimize - return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +module.exports = alphabetical + +// Check if the given character code, or the character code at the first +// character, is alphabetical. +function alphabetical(character) { + var code = typeof character === 'string' ? character.charCodeAt(0) : character + + return ( + (code >= 97 && code <= 122) /* a-z */ || + (code >= 65 && code <= 90) /* A-Z */ + ) } -function constructYamlInteger(data) { - var value = data, sign = 1, ch, base, digits = []; - if (value.indexOf('_') !== -1) { - value = value.replace(/_/g, ''); - } +/***/ }), - ch = value[0]; +/***/ 99624: +/***/ ((module) => { - if (ch === '-' || ch === '+') { - if (ch === '-') sign = -1; - value = value.slice(1); - ch = value[0]; - } +"use strict"; - if (value === '0') return 0; +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } - if (ch === '0') { - if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); - if (value[1] === 'x') return sign * parseInt(value, 16); - return sign * parseInt(value, 8); - } + return !/[^0-9a-z\xDF-\xFF]/.test(str.toLowerCase()); +}; - if (value.indexOf(':') !== -1) { - value.split(':').forEach(function (v) { - digits.unshift(parseInt(v, 10)); - }); - value = 0; - base = 1; +/***/ }), - digits.forEach(function (d) { - value += (d * base); - base *= 60; - }); +/***/ 51685: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return sign * value; +"use strict"; - } - return sign * parseInt(value, 10); -} +var alphabetical = __nccwpck_require__(59201) +var decimal = __nccwpck_require__(96734) -function isInteger(object) { - return (Object.prototype.toString.call(object)) === '[object Number]' && - (object % 1 === 0 && !common.isNegativeZero(object)); -} +module.exports = alphanumerical -module.exports = new Type('tag:yaml.org,2002:int', { - kind: 'scalar', - resolve: resolveYamlInteger, - construct: constructYamlInteger, - predicate: isInteger, - represent: { - binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, - octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); }, - decimal: function (obj) { return obj.toString(10); }, - /* eslint-disable max-len */ - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } - }, - defaultStyle: 'decimal', - styleAliases: { - binary: [ 2, 'bin' ], - octal: [ 8, 'oct' ], - decimal: [ 10, 'dec' ], - hexadecimal: [ 16, 'hex' ] - } -}); +// Check if the given character code, or the character code at the first +// character, is alphanumerical. +function alphanumerical(character) { + return alphabetical(character) || decimal(character) +} /***/ }), -/***/ 1832: +/***/ 65223: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var esprima; +var hasOwn = __nccwpck_require__(54076); -// Browserified version does not have esprima -// -// 1. For node.js just require module as deps -// 2. For browser try to require mudule via external AMD system. -// If not found - try to fallback to window.esprima. If not -// found too - then fail to parse. -// -try { - // workaround to exclude package from browserify list. - var _require = require; - esprima = _require('esprima'); -} catch (_) { - /* eslint-disable no-redeclare */ - /* global window */ - if (typeof window !== 'undefined') esprima = window.esprima; +function specifierIncluded(current, specifier) { + var nodeParts = current.split('.'); + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } + if (op === '>=') { + return cur >= ver; + } + return false; + } + return op === '>='; } -var Type = __nccwpck_require__(323); +function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; +} -function resolveJavascriptFunction(data) { - if (data === null) return false; +function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === 'boolean') { + return specifierValue; + } - try { - var source = '(' + data + ')', - ast = esprima.parse(source, { range: true }); + var current = typeof nodeVersion === 'undefined' + ? process.versions && process.versions.node + : nodeVersion; - if (ast.type !== 'Program' || - ast.body.length !== 1 || - ast.body[0].type !== 'ExpressionStatement' || - (ast.body[0].expression.type !== 'ArrowFunctionExpression' && - ast.body[0].expression.type !== 'FunctionExpression')) { - return false; - } + if (typeof current !== 'string') { + throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); + } - return true; - } catch (err) { - return false; - } + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); } -function constructJavascriptFunction(data) { - /*jslint evil:true*/ +var data = __nccwpck_require__(17324); - var source = '(' + data + ')', - ast = esprima.parse(source, { range: true }), - params = [], - body; +module.exports = function isCore(x, nodeVersion) { + return hasOwn(data, x) && versionIncluded(nodeVersion, data[x]); +}; - if (ast.type !== 'Program' || - ast.body.length !== 1 || - ast.body[0].type !== 'ExpressionStatement' || - (ast.body[0].expression.type !== 'ArrowFunctionExpression' && - ast.body[0].expression.type !== 'FunctionExpression')) { - throw new Error('Failed to resolve function'); - } - ast.body[0].expression.params.forEach(function (param) { - params.push(param.name); - }); +/***/ }), - body = ast.body[0].expression.body.range; +/***/ 96734: +/***/ ((module) => { - // Esprima's ranges include the first '{' and the last '}' characters on - // function expressions. So cut them out. - if (ast.body[0].expression.body.type === 'BlockStatement') { - /*eslint-disable no-new-func*/ - return new Function(params, source.slice(body[0] + 1, body[1] - 1)); - } - // ES6 arrow functions can omit the BlockStatement. In that case, just return - // the body. - /*eslint-disable no-new-func*/ - return new Function(params, 'return ' + source.slice(body[0], body[1])); -} +"use strict"; -function representJavascriptFunction(object /*, style*/) { - return object.toString(); -} -function isFunction(object) { - return Object.prototype.toString.call(object) === '[object Function]'; -} +module.exports = decimal -module.exports = new Type('tag:yaml.org,2002:js/function', { - kind: 'scalar', - resolve: resolveJavascriptFunction, - construct: constructJavascriptFunction, - predicate: isFunction, - represent: representJavascriptFunction -}); +// Check if the given character code, or the character code at the first +// character, is decimal. +function decimal(character) { + var code = typeof character === 'string' ? character.charCodeAt(0) : character + + return code >= 48 && code <= 57 /* 0-9 */ +} /***/ }), -/***/ 8953: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 36403: +/***/ ((module) => { "use strict"; +/*! + * is-extendable <https://github.com/jonschlinkert/is-extendable> + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ -var Type = __nccwpck_require__(323); - -function resolveJavascriptRegExp(data) { - if (data === null) return false; - if (data.length === 0) return false; - - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ''; - - // if regexp starts with '/' it can have modifiers and must be properly closed - // `/foo/gim` - modifiers tail can be maximum 3 chars - if (regexp[0] === '/') { - if (tail) modifiers = tail[1]; - if (modifiers.length > 3) return false; - // if expression starts with /, is should be properly terminated - if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; - } +module.exports = function isExtendable(val) { + return typeof val !== 'undefined' && val !== null + && (typeof val === 'object' || typeof val === 'function'); +}; - return true; -} -function constructJavascriptRegExp(data) { - var regexp = data, - tail = /\/([gim]*)$/.exec(data), - modifiers = ''; +/***/ }), - // `/foo/gim` - tail can be maximum 4 chars - if (regexp[0] === '/') { - if (tail) modifiers = tail[1]; - regexp = regexp.slice(1, regexp.length - modifiers.length - 1); - } +/***/ 84794: +/***/ ((module) => { - return new RegExp(regexp, modifiers); -} +"use strict"; -function representJavascriptRegExp(object /*, style*/) { - var result = '/' + object.source + '/'; - if (object.global) result += 'g'; - if (object.multiline) result += 'm'; - if (object.ignoreCase) result += 'i'; +module.exports = hexadecimal - return result; -} +// Check if the given character code, or the character code at the first +// character, is hexadecimal. +function hexadecimal(character) { + var code = typeof character === 'string' ? character.charCodeAt(0) : character -function isRegExp(object) { - return Object.prototype.toString.call(object) === '[object RegExp]'; + return ( + (code >= 97 /* a */ && code <= 102) /* z */ || + (code >= 65 /* A */ && code <= 70) /* Z */ || + (code >= 48 /* A */ && code <= 57) /* Z */ + ) } -module.exports = new Type('tag:yaml.org,2002:js/regexp', { - kind: 'scalar', - resolve: resolveJavascriptRegExp, - construct: constructJavascriptRegExp, - predicate: isRegExp, - represent: representJavascriptRegExp -}); - /***/ }), -/***/ 9178: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 96472: +/***/ ((module) => { "use strict"; -var Type = __nccwpck_require__(323); - -function resolveJavascriptUndefined() { - return true; -} - -function constructJavascriptUndefined() { - /*eslint-disable no-undefined*/ - return undefined; -} +module.exports = whitespace -function representJavascriptUndefined() { - return ''; -} +var fromCode = String.fromCharCode +var re = /\s/ -function isUndefined(object) { - return typeof object === 'undefined'; +// Check if the given character code, or the character code at the first +// character, is a whitespace character. +function whitespace(character) { + return re.test( + typeof character === 'number' ? fromCode(character) : character.charAt(0) + ) } -module.exports = new Type('tag:yaml.org,2002:js/undefined', { - kind: 'scalar', - resolve: resolveJavascriptUndefined, - construct: constructJavascriptUndefined, - predicate: isUndefined, - represent: representJavascriptUndefined -}); - /***/ }), -/***/ 4278: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 70009: +/***/ ((module) => { "use strict"; -var Type = __nccwpck_require__(323); +module.exports = wordCharacter -module.exports = new Type('tag:yaml.org,2002:map', { - kind: 'mapping', - construct: function (data) { return data !== null ? data : {}; } -}); +var fromCode = String.fromCharCode +var re = /\w/ + +// Check if the given character code, or the character code at the first +// character, is a word character. +function wordCharacter(character) { + return re.test( + typeof character === 'number' ? fromCode(character) : character.charAt(0) + ) +} /***/ }), -/***/ 112: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 85756: +/***/ ((__unused_webpack_module, exports) => { -"use strict"; +// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell +// License: MIT. (See LICENSE.) +Object.defineProperty(exports, "__esModule", ({ + value: true +})) -var Type = __nccwpck_require__(323); +// This regex comes from regex.coffee, and is inserted here by generate-index.js +// (run `npm run build`). +exports["default"] = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g -function resolveYamlMerge(data) { - return data === '<<' || data === null; +exports.matchToToken = function(match) { + var token = {type: "invalid", value: match[0], closed: undefined} + if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]) + else if (match[ 5]) token.type = "comment" + else if (match[ 6]) token.type = "comment", token.closed = !!match[7] + else if (match[ 8]) token.type = "regex" + else if (match[ 9]) token.type = "number" + else if (match[10]) token.type = "name" + else if (match[11]) token.type = "punctuator" + else if (match[12]) token.type = "whitespace" + return token } -module.exports = new Type('tag:yaml.org,2002:merge', { - kind: 'scalar', - resolve: resolveYamlMerge -}); - /***/ }), -/***/ 7767: +/***/ 74281: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(323); - -function resolveYamlNull(data) { - if (data === null) return true; - - var max = data.length; - - return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); -} -function constructYamlNull() { - return null; -} +var yaml = __nccwpck_require__(24040); -function isNull(object) { - return object === null; -} -module.exports = new Type('tag:yaml.org,2002:null', { - kind: 'scalar', - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function () { return '~'; }, - lowercase: function () { return 'null'; }, - uppercase: function () { return 'NULL'; }, - camelcase: function () { return 'Null'; } - }, - defaultStyle: 'lowercase' -}); +module.exports = yaml; /***/ }), -/***/ 7395: +/***/ 24040: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(323); - -var _hasOwnProperty = Object.prototype.hasOwnProperty; -var _toString = Object.prototype.toString; - -function resolveYamlOmap(data) { - if (data === null) return true; - - var objectKeys = [], index, length, pair, pairKey, pairHasKey, - object = data; - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - pairHasKey = false; - if (_toString.call(pair) !== '[object Object]') return false; +var loader = __nccwpck_require__(75868); +var dumper = __nccwpck_require__(45078); - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; - } - } - if (!pairHasKey) return false; +function deprecated(name) { + return function () { + throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + }; +} - if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); - else return false; - } - return true; -} +module.exports.Type = __nccwpck_require__(50323); +module.exports.Schema = __nccwpck_require__(45868); +module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(86810); +module.exports.JSON_SCHEMA = __nccwpck_require__(96613); +module.exports.CORE_SCHEMA = __nccwpck_require__(55116); +module.exports.DEFAULT_SAFE_SCHEMA = __nccwpck_require__(76032); +module.exports.DEFAULT_FULL_SCHEMA = __nccwpck_require__(60948); +module.exports.load = loader.load; +module.exports.loadAll = loader.loadAll; +module.exports.safeLoad = loader.safeLoad; +module.exports.safeLoadAll = loader.safeLoadAll; +module.exports.dump = dumper.dump; +module.exports.safeDump = dumper.safeDump; +module.exports.YAMLException = __nccwpck_require__(15622); -function constructYamlOmap(data) { - return data !== null ? data : []; -} +// Deprecated schema names from JS-YAML 2.0.x +module.exports.MINIMAL_SCHEMA = __nccwpck_require__(86810); +module.exports.SAFE_SCHEMA = __nccwpck_require__(76032); +module.exports.DEFAULT_SCHEMA = __nccwpck_require__(60948); -module.exports = new Type('tag:yaml.org,2002:omap', { - kind: 'sequence', - resolve: resolveYamlOmap, - construct: constructYamlOmap -}); +// Deprecated functions from JS-YAML 1.x.x +module.exports.scan = deprecated('scan'); +module.exports.parse = deprecated('parse'); +module.exports.compose = deprecated('compose'); +module.exports.addConstructor = deprecated('addConstructor'); /***/ }), -/***/ 9117: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 24206: +/***/ ((module) => { "use strict"; -var Type = __nccwpck_require__(323); -var _toString = Object.prototype.toString; +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); +} -function resolveYamlPairs(data) { - if (data === null) return true; - var index, length, pair, keys, result, - object = data; +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); +} - result = new Array(object.length); - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; - if (_toString.call(pair) !== '[object Object]') return false; + return [ sequence ]; +} - keys = Object.keys(pair); - if (keys.length !== 1) return false; +function extend(target, source) { + var index, length, key, sourceKeys; - result[index] = [ keys[0], pair[keys[0]] ]; + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } } - return true; + return target; } -function constructYamlPairs(data) { - if (data === null) return []; - - var index, length, pair, keys, result, - object = data; - - result = new Array(object.length); - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - keys = Object.keys(pair); +function repeat(string, count) { + var result = '', cycle; - result[index] = [ keys[0], pair[keys[0]] ]; + for (cycle = 0; cycle < count; cycle += 1) { + result += string; } return result; } -module.exports = new Type('tag:yaml.org,2002:pairs', { - kind: 'sequence', - resolve: resolveYamlPairs, - construct: constructYamlPairs -}); - -/***/ }), - -/***/ 2863: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(323); - -module.exports = new Type('tag:yaml.org,2002:seq', { - kind: 'sequence', - construct: function (data) { return data !== null ? data : []; } -}); - - -/***/ }), - -/***/ 7812: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(323); - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -function resolveYamlSet(data) { - if (data === null) return true; - - var key, object = data; - - for (key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; - } - } - - return true; +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); } -function constructYamlSet(data) { - return data !== null ? data : {}; -} -module.exports = new Type('tag:yaml.org,2002:set', { - kind: 'mapping', - resolve: resolveYamlSet, - construct: constructYamlSet -}); +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; /***/ }), -/***/ 4107: +/***/ 45078: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -var Type = __nccwpck_require__(323); - -module.exports = new Type('tag:yaml.org,2002:str', { - kind: 'scalar', - construct: function (data) { return data !== null ? data : ''; } -}); - - -/***/ }), +/*eslint-disable no-use-before-define*/ -/***/ 7044: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var common = __nccwpck_require__(24206); +var YAMLException = __nccwpck_require__(15622); +var DEFAULT_FULL_SCHEMA = __nccwpck_require__(60948); +var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(76032); -"use strict"; +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ -var Type = __nccwpck_require__(323); +var ESCAPE_SEQUENCES = {}; -var YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$'); // [3] day +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; -var YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour - '(?::([0-9][0-9]))?))?$'); // [11] tz_minute +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; -function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; -} +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; -function constructYamlTimestamp(data) { - var match, year, month, day, hour, minute, second, fraction = 0, - delta = null, tz_hour, tz_minute, date; + if (map === null) return {}; - match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + result = {}; + keys = Object.keys(map); - if (match === null) throw new Error('Date resolve error'); + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); - // match: [1] year [2] month [3] day + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; - year = +(match[1]); - month = +(match[2]) - 1; // JS month starts with 0 - day = +(match[3]); + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } - if (!match[4]) { // no hour - return new Date(Date.UTC(year, month, day)); + result[tag] = style; } - // match: [4] hour [5] minute [6] second [7] fraction - - hour = +(match[4]); - minute = +(match[5]); - second = +(match[6]); + return result; +} - if (match[7]) { - fraction = match[7].slice(0, 3); - while (fraction.length < 3) { // milli-seconds - fraction += '0'; - } - fraction = +fraction; - } +function encodeHex(character) { + var string, handle, length; - // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + string = character.toString(16).toUpperCase(); - if (match[9]) { - tz_hour = +(match[10]); - tz_minute = +(match[11] || 0); - delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds - if (match[9] === '-') delta = -delta; + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); } - date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - - if (delta) date.setTime(date.getTime() - delta); - - return date; + return '\\' + handle + common.repeat('0', length - string.length) + string; } -function representYamlTimestamp(object /*, style*/) { - return object.toISOString(); -} +function State(options) { + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; -module.exports = new Type('tag:yaml.org,2002:timestamp', { - kind: 'scalar', - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp -}); + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + this.tag = null; + this.result = ''; -/***/ }), + this.duplicates = []; + this.usedDuplicates = null; +} -/***/ 5140: -/***/ ((module) => { +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; -var toString = Object.prototype.toString; + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } -module.exports = function kindOf(val) { - if (val === void 0) return 'undefined'; - if (val === null) return 'null'; + if (line.length && line !== '\n') result += ind; - var type = typeof val; - if (type === 'boolean') return 'boolean'; - if (type === 'string') return 'string'; - if (type === 'number') return 'number'; - if (type === 'symbol') return 'symbol'; - if (type === 'function') { - return isGeneratorFn(val) ? 'generatorfunction' : 'function'; + result += line; } - if (isArray(val)) return 'array'; - if (isBuffer(val)) return 'buffer'; - if (isArguments(val)) return 'arguments'; - if (isDate(val)) return 'date'; - if (isError(val)) return 'error'; - if (isRegexp(val)) return 'regexp'; - - switch (ctorName(val)) { - case 'Symbol': return 'symbol'; - case 'Promise': return 'promise'; - - // Set, Map, WeakSet, WeakMap - case 'WeakMap': return 'weakmap'; - case 'WeakSet': return 'weakset'; - case 'Map': return 'map'; - case 'Set': return 'set'; - - // 8-bit typed arrays - case 'Int8Array': return 'int8array'; - case 'Uint8Array': return 'uint8array'; - case 'Uint8ClampedArray': return 'uint8clampedarray'; + return result; +} - // 16-bit typed arrays - case 'Int16Array': return 'int16array'; - case 'Uint16Array': return 'uint16array'; +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} - // 32-bit typed arrays - case 'Int32Array': return 'int32array'; - case 'Uint32Array': return 'uint32array'; - case 'Float32Array': return 'float32array'; - case 'Float64Array': return 'float64array'; - } +function testImplicitResolving(state, str) { + var index, length, type; - if (isGeneratorObj(val)) { - return 'generator'; - } + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; - // Non-plain objects - type = toString.call(val); - switch (type) { - case '[object Object]': return 'object'; - // iterators - case '[object Map Iterator]': return 'mapiterator'; - case '[object Set Iterator]': return 'setiterator'; - case '[object String Iterator]': return 'stringiterator'; - case '[object Array Iterator]': return 'arrayiterator'; + if (type.resolve(str)) { + return true; + } } - // other - return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); -}; - -function ctorName(val) { - return typeof val.constructor === 'function' ? val.constructor.name : null; + return false; } -function isArray(val) { - if (Array.isArray) return Array.isArray(val); - return val instanceof Array; +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; } -function isError(val) { - return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'); +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) + || (0x10000 <= c && c <= 0x10FFFF); } -function isDate(val) { - if (val instanceof Date) return true; - return typeof val.toDateString === 'function' - && typeof val.getDate === 'function' - && typeof val.setDate === 'function'; +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// [24] b-line-feed ::= #xA /* LF */ +// [25] b-carriage-return ::= #xD /* CR */ +// [3] c-byte-order-mark ::= #xFEFF +function isNsChar(c) { + return isPrintable(c) && !isWhitespace(c) + // byte-order-mark + && c !== 0xFEFF + // b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; } -function isRegexp(val) { - if (val instanceof RegExp) return true; - return typeof val.flags === 'string' - && typeof val.ignoreCase === 'boolean' - && typeof val.multiline === 'boolean' - && typeof val.global === 'boolean'; +// Simplified test for values allowed after the first character in plain style. +function isPlainSafe(c, prev) { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return isPrintable(c) && c !== 0xFEFF + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // - ":" - "#" + // /* An ns-char preceding */ "#" + && c !== CHAR_COLON + && ((c !== CHAR_SHARP) || (prev && isNsChar(prev))); } -function isGeneratorFn(name, val) { - return ctorName(name) === 'GeneratorFunction'; +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return isPrintable(c) && c !== 0xFEFF + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; } -function isGeneratorObj(val) { - return typeof val.throw === 'function' - && typeof val.return === 'function' - && typeof val.next === 'function'; +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); } -function isArguments(val) { - try { - if (typeof val.length === 'number' && typeof val.callee === 'function') { - return true; +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { + var i; + var char, prev_char; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(string.charCodeAt(0)) + && !isWhitespace(string.charCodeAt(string.length - 1)); + + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); } - } catch (err) { - if (err.message.indexOf('callee') !== -1) { - return true; + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + prev_char = i > 0 ? string.charCodeAt(i - 1) : null; + plain = plain && isPlainSafe(char, prev_char); } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); } - return false; -} - -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ - -function isBuffer(val) { - if (val.constructor && typeof val.constructor.isBuffer === 'function') { - return val.constructor.isBuffer(val); + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) + ? STYLE_PLAIN : STYLE_SINGLE; } - return false; + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; } +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey) { + state.dump = (function () { + if (string.length === 0) { + return "''"; + } + if (!state.noCompatMode && + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + return "'" + string + "'"; + } -/***/ }), - -/***/ 1628: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -const fs = __nccwpck_require__(5744) -const path = __nccwpck_require__(6928) - -function klawSync (dir, opts, ls) { - if (!ls) { - ls = [] - dir = path.resolve(dir) - opts = opts || {} - opts.fs = opts.fs || fs - if (opts.depthLimit > -1) opts.rootDepth = dir.split(path.sep).length + 1 - } - const paths = opts.fs.readdirSync(dir).map(p => dir + path.sep + p) - for (var i = 0; i < paths.length; i += 1) { - const pi = paths[i] - const st = opts.fs.lstatSync(pi) - const item = {path: pi, stats: st} - const isUnderDepthLimit = (!opts.rootDepth || pi.split(path.sep).length - opts.rootDepth < opts.depthLimit) - const filterResult = opts.filter ? opts.filter(item) : true - const isDir = st.isDirectory() - const shouldAdd = filterResult && (isDir ? !opts.nodir : !opts.nofile) - const shouldTraverse = isDir && isUnderDepthLimit && (opts.traverseAll || filterResult) - if (shouldAdd) ls.push(item) - if (shouldTraverse) ls = klawSync(pi, opts, ls) - } - return ls -} + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); -module.exports = klawSync + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException('impossible error: invalid scalar style'); + } + }()); +} -/***/ }), +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; -/***/ 9495: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); -"use strict"; + return indentIndicator + chomp + '\n'; +} +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} -var typeOf = __nccwpck_require__(5140); -var extend = __nccwpck_require__(8905); +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; -/** - * Parse sections in `input` with the given `options`. - * - * ```js - * var sections = require('{%= name %}'); - * var result = sections(input, options); - * // { content: 'Content before sections', sections: [] } - * ``` - * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer. - * @param {Object} options - * @return {Object} Returns an object with a `content` string and an array of `sections` objects. - * @api public - */ + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; -module.exports = function(input, options) { - if (typeof options === 'function') { - options = { parse: options }; + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; } - var file = toObject(input); - var defaults = {section_delimiter: '---', parse: identity}; - var opts = extend({}, defaults, options); - var delim = opts.section_delimiter; - var lines = file.content.split(/\r?\n/); - var sections = null; - var section = createSection(); - var content = []; - var stack = []; + return result; +} - function initSections(val) { - file.content = val; - sections = []; - content = []; - } +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; - function closeSection(val) { - if (stack.length) { - section.key = getKey(stack[0], delim); - section.content = val; - opts.parse(section, sections); - sections.push(section); - section = createSection(); - content = []; - stack = []; + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 } + curr = next; } - for (var i = 0; i < lines.length; i++) { - var line = lines[i]; - var len = stack.length; - var ln = line.trim(); + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } - if (isDelimiter(ln, delim)) { - if (ln.length === 3 && i !== 0) { - if (len === 0 || len === 2) { - content.push(line); - continue; - } - stack.push(ln); - section.data = content.join('\n'); - content = []; - continue; - } + return result.slice(1); // drop extra \n joiner +} - if (sections === null) { - initSections(content.join('\n')); - } +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char, nextChar; + var escapeSeq; - if (len === 2) { - closeSection(content.join('\n')); + for (var i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) { + nextChar = string.charCodeAt(i + 1); + if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) { + // Combine the surrogate pair and store it escaped. + result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); + // Advance index one extra since we already used that char here. + i++; continue; } - - stack.push(ln); - continue; } - - content.push(line); + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) + ? string[i] + : escapeSeq || encodeHex(char); } - if (sections === null) { - initSections(content.join('\n')); - } else { - closeSection(content.join('\n')); - } + return result; +} - file.sections = sections; - return file; -}; +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length; -function isDelimiter(line, delim) { - if (line.slice(0, delim.length) !== delim) { - return false; - } - if (line.charAt(delim.length + 1) === delim.slice(-1)) { - return false; + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } } - return true; + + state.tag = _tag; + state.dump = '[' + _result + ']'; } -function toObject(input) { - if (typeOf(input) !== 'object') { - input = { content: input }; - } +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length; - if (typeof input.content !== 'string' && !isBuffer(input.content)) { - throw new TypeError('expected a buffer or string'); + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } + + _result += state.dump; + } } - input.content = input.content.toString(); - input.sections = []; - return input; + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. } -function getKey(val, delim) { - return val ? val.slice(delim.length).trim() : ''; -} +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; -function createSection() { - return { key: '', data: '', content: '' }; -} + for (index = 0, length = objectKeyList.length; index < length; index += 1) { -function identity(val) { - return val; -} + pairBuffer = ''; + if (index !== 0) pairBuffer += ', '; -function isBuffer(val) { - if (val && val.constructor && typeof val.constructor.isBuffer === 'function') { - return val.constructor.isBuffer(val); - } - return false; -} + if (state.condenseFlow) pairBuffer += '"'; + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; -/***/ }), + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } -/***/ 1389: -/***/ ((module) => { + if (state.dump.length > 1024) pairBuffer += '? '; -"use strict"; -/*! - * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string> - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + pairBuffer += state.dump; -module.exports = function(str) { - if (typeof str === 'string' && str.charAt(0) === '\ufeff') { - return str.slice(1); + // Both key and value are valid. + _result += pairBuffer; } - return str; -}; + state.tag = _tag; + state.dump = '{' + _result + '}'; +} -/***/ }), +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; -/***/ 770: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException('sortKeys must be a boolean or a function'); + } -module.exports = __nccwpck_require__(218); + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } -/***/ }), + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; -/***/ 218: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } -"use strict"; + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } -var net = __nccwpck_require__(9278); -var tls = __nccwpck_require__(4756); -var http = __nccwpck_require__(8611); -var https = __nccwpck_require__(5692); -var events = __nccwpck_require__(4434); -var assert = __nccwpck_require__(2613); -var util = __nccwpck_require__(9023); + pairBuffer += state.dump; + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} + pairBuffer += state.dump; -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} + // Both key and value are valid. + _result += pairBuffer; + } -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. } -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + typeList = explicit ? state.explicitTypes : state.implicitTypes; -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + state.tag = explicit ? type.tag : '?'; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; } + + return true; } - socket.destroy(); - self.removeSocket(socket); - }); + } + + return false; } -util.inherits(TunnelingAgent, events.EventEmitter); -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey) { + state.tag = null; + state.dump = object; - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; + if (!detectType(state, object, false)) { + detectType(state, object, true); } - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit('free', socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); -}; - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); + var type = _toString.call(state.dump); - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); } - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; } - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; } - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level; + if (block && (state.dump.length !== 0)) { + writeBlockSequence(state, arrayLevel, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, arrayLevel, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) return false; + throw new YAMLException('unacceptable kind of an object to dump ' + type); } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); + if (state.tag !== null && state.tag !== '?') { + state.dump = '!<' + state.tag + '> ' + state.dump; + } } -}; -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); + return true; +} - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); - } -}; +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); + inspectNode(object, objects, duplicatesIndexes); - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); } +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; - } - return host; // for v0.11 or later -} + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); } } } } - return target; } +function dump(input, options) { + options = options || {}; -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; - } else { - args.unshift('TUNNEL:'); - } - console.error.apply(console, args); - } -} else { - debug = function() {}; + var state = new State(options); + + if (!state.noRefs) getDuplicateReferences(input, state); + + if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; + + return ''; } -exports.debug = debug; // for test + +function safeDump(input, options) { + return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +} + +module.exports.dump = dump; +module.exports.safeDump = safeDump; /***/ }), -/***/ 6752: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 15622: +/***/ ((module) => { "use strict"; +// YAML error class. http://stackoverflow.com/questions/8458984 +// -const Client = __nccwpck_require__(6197) -const Dispatcher = __nccwpck_require__(992) -const errors = __nccwpck_require__(8707) -const Pool = __nccwpck_require__(5076) -const BalancedPool = __nccwpck_require__(1093) -const Agent = __nccwpck_require__(9965) -const util = __nccwpck_require__(3440) -const { InvalidArgumentError } = errors -const api = __nccwpck_require__(6615) -const buildConnector = __nccwpck_require__(9136) -const MockClient = __nccwpck_require__(7365) -const MockAgent = __nccwpck_require__(7501) -const MockPool = __nccwpck_require__(4004) -const mockErrors = __nccwpck_require__(2429) -const ProxyAgent = __nccwpck_require__(2720) -const RetryHandler = __nccwpck_require__(3573) -const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(2581) -const DecoratorHandler = __nccwpck_require__(8840) -const RedirectHandler = __nccwpck_require__(8299) -const createRedirectInterceptor = __nccwpck_require__(4415) +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); -let hasCrypto -try { - __nccwpck_require__(6982) - hasCrypto = true -} catch { - hasCrypto = false + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } } -Object.assign(Dispatcher.prototype, api) -module.exports.Dispatcher = Dispatcher -module.exports.Client = Client -module.exports.Pool = Pool -module.exports.BalancedPool = BalancedPool -module.exports.Agent = Agent -module.exports.ProxyAgent = ProxyAgent -module.exports.RetryHandler = RetryHandler +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; -module.exports.DecoratorHandler = DecoratorHandler -module.exports.RedirectHandler = RedirectHandler -module.exports.createRedirectInterceptor = createRedirectInterceptor -module.exports.buildConnector = buildConnector -module.exports.errors = errors +YAMLException.prototype.toString = function toString(compact) { + var result = this.name + ': '; -function makeDispatcher (fn) { - return (url, opts, handler) => { - if (typeof opts === 'function') { - handler = opts - opts = null - } + result += this.reason || '(unknown reason)'; - if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { - throw new InvalidArgumentError('invalid url') - } + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); + } - if (opts != null && typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + return result; +}; - if (opts && opts.path != null) { - if (typeof opts.path !== 'string') { - throw new InvalidArgumentError('invalid opts.path') - } - let path = opts.path - if (!opts.path.startsWith('/')) { - path = `/${path}` - } +module.exports = YAMLException; - url = new URL(util.parseOrigin(url).origin + path) - } else { - if (!opts) { - opts = typeof url === 'object' ? url : {} - } - url = util.parseURL(url) - } +/***/ }), - const { agent, dispatcher = getGlobalDispatcher() } = opts +/***/ 75868: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (agent) { - throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') - } +"use strict"; - return fn.call(dispatcher, { - ...opts, - origin: url.origin, - path: url.search ? `${url.pathname}${url.search}` : url.pathname, - method: opts.method || (opts.body ? 'PUT' : 'GET') - }, handler) - } -} -module.exports.setGlobalDispatcher = setGlobalDispatcher -module.exports.getGlobalDispatcher = getGlobalDispatcher +/*eslint-disable max-len,no-use-before-define*/ -if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { - let fetchImpl = null - module.exports.fetch = async function fetch (resource) { - if (!fetchImpl) { - fetchImpl = (__nccwpck_require__(2315).fetch) - } +var common = __nccwpck_require__(24206); +var YAMLException = __nccwpck_require__(15622); +var Mark = __nccwpck_require__(45622); +var DEFAULT_SAFE_SCHEMA = __nccwpck_require__(76032); +var DEFAULT_FULL_SCHEMA = __nccwpck_require__(60948); - try { - return await fetchImpl(...arguments) - } catch (err) { - if (typeof err === 'object') { - Error.captureStackTrace(err, this) - } - throw err - } - } - module.exports.Headers = __nccwpck_require__(6349).Headers - module.exports.Response = __nccwpck_require__(8676).Response - module.exports.Request = __nccwpck_require__(5194).Request - module.exports.FormData = __nccwpck_require__(3073).FormData - module.exports.File = __nccwpck_require__(3041).File - module.exports.FileReader = __nccwpck_require__(2160).FileReader +var _hasOwnProperty = Object.prototype.hasOwnProperty; - const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(5628) - module.exports.setGlobalOrigin = setGlobalOrigin - module.exports.getGlobalOrigin = getGlobalOrigin +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; - const { CacheStorage } = __nccwpck_require__(4738) - const { kConstruct } = __nccwpck_require__(296) - // Cache & CacheStorage are tightly coupled with fetch. Even if it may run - // in an older version of Node, it doesn't have any use without fetch. - module.exports.caches = new CacheStorage(kConstruct) -} +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; -if (util.nodeMajor >= 16) { - const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(3168) - module.exports.deleteCookie = deleteCookie - module.exports.getCookies = getCookies - module.exports.getSetCookies = getSetCookies - module.exports.setCookie = setCookie +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) - module.exports.parseMIMEType = parseMIMEType - module.exports.serializeAMimeType = serializeAMimeType +function _class(obj) { return Object.prototype.toString.call(obj); } + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); } -if (util.nodeMajor >= 18 && hasCrypto) { - const { WebSocket } = __nccwpck_require__(5171) +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} - module.exports.WebSocket = WebSocket +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); } -module.exports.request = makeDispatcher(api.request) -module.exports.stream = makeDispatcher(api.stream) -module.exports.pipeline = makeDispatcher(api.pipeline) -module.exports.connect = makeDispatcher(api.connect) -module.exports.upgrade = makeDispatcher(api.upgrade) +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} -module.exports.MockClient = MockClient -module.exports.MockPool = MockPool -module.exports.MockAgent = MockAgent -module.exports.mockErrors = mockErrors +function fromHexCode(c) { + var lc; + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } -/***/ }), + /*eslint-disable no-bitwise*/ + lc = c | 0x20; -/***/ 9965: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } -"use strict"; + return -1; +} +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} -const { InvalidArgumentError } = __nccwpck_require__(8707) -const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = __nccwpck_require__(6443) -const DispatcherBase = __nccwpck_require__(1) -const Pool = __nccwpck_require__(5076) -const Client = __nccwpck_require__(6197) -const util = __nccwpck_require__(3440) -const createRedirectInterceptor = __nccwpck_require__(4415) -const { WeakRef, FinalizationRegistry } = __nccwpck_require__(3194)() +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } -const kOnConnect = Symbol('onConnect') -const kOnDisconnect = Symbol('onDisconnect') -const kOnConnectionError = Symbol('onConnectionError') -const kMaxRedirections = Symbol('maxRedirections') -const kOnDrain = Symbol('onDrain') -const kFactory = Symbol('factory') -const kFinalizer = Symbol('finalizer') -const kOptions = Symbol('options') + return -1; +} -function defaultFactory (origin, opts) { - return opts && opts.connections === 1 - ? new Client(origin, opts) - : new Pool(origin, opts) +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; } -class Agent extends DispatcherBase { - constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super() +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); +} - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.') - } +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object') - } - if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { - throw new InvalidArgumentError('maxRedirections must be a positive number') - } +function State(input, options) { + this.input = input; - if (connect && typeof connect !== 'function') { - connect = { ...connect } - } + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; + this.onWarning = options['onWarning'] || null; + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; - this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) - ? options.interceptors.Agent - : [createRedirectInterceptor({ maxRedirections })] + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; - this[kOptions] = { ...util.deepClone(options), connect } - this[kOptions].interceptors = options.interceptors - ? { ...options.interceptors } - : undefined - this[kMaxRedirections] = maxRedirections - this[kFactory] = factory - this[kClients] = new Map() - this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => { - const ref = this[kClients].get(key) - if (ref !== undefined && ref.deref() === undefined) { - this[kClients].delete(key) - } - }) + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; - const agent = this + this.documents = []; - this[kOnDrain] = (origin, targets) => { - agent.emit('drain', origin, [agent, ...targets]) - } + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ - this[kOnConnect] = (origin, targets) => { - agent.emit('connect', origin, [agent, ...targets]) - } +} - this[kOnDisconnect] = (origin, targets, err) => { - agent.emit('disconnect', origin, [agent, ...targets], err) - } - this[kOnConnectionError] = (origin, targets, err) => { - agent.emit('connectionError', origin, [agent, ...targets], err) - } - } +function generateError(state, message) { + return new YAMLException( + message, + new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); +} - get [kRunning] () { - let ret = 0 - for (const ref of this[kClients].values()) { - const client = ref.deref() - /* istanbul ignore next: gc is undeterministic */ - if (client) { - ret += client[kRunning] - } - } - return ret +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); } +} - [kDispatch] (opts, handler) { - let key - if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { - key = String(opts.origin) - } else { - throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') - } - const ref = this[kClients].get(key) +var directiveHandlers = { - let dispatcher = ref ? ref.deref() : null - if (!dispatcher) { - dispatcher = this[kFactory](opts.origin, this[kOptions]) - .on('drain', this[kOnDrain]) - .on('connect', this[kOnConnect]) - .on('disconnect', this[kOnDisconnect]) - .on('connectionError', this[kOnConnectionError]) + YAML: function handleYamlDirective(state, name, args) { - this[kClients].set(key, new WeakRef(dispatcher)) - this[kFinalizer].register(dispatcher, key) - } + var match, major, minor; - return dispatcher.dispatch(opts, handler) - } + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } - async [kClose] () { - const closePromises = [] - for (const ref of this[kClients].values()) { - const client = ref.deref() - /* istanbul ignore else: gc is undeterministic */ - if (client) { - closePromises.push(client.close()) - } + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); } - await Promise.all(closePromises) - } + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); - async [kDestroy] (err) { - const destroyPromises = [] - for (const ref of this[kClients].values()) { - const client = ref.deref() - /* istanbul ignore else: gc is undeterministic */ - if (client) { - destroyPromises.push(client.destroy(err)) - } + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); } - await Promise.all(destroyPromises) - } -} + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); -module.exports = Agent + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + state.version = args[0]; + state.checkLineBreaks = (minor < 2); -/***/ }), + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, -/***/ 158: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + TAG: function handleTagDirective(state, name, args) { -const { addAbortListener } = __nccwpck_require__(3440) -const { RequestAbortedError } = __nccwpck_require__(8707) + var handle, prefix; -const kListener = Symbol('kListener') -const kSignal = Symbol('kSignal') + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } -function abort (self) { - if (self.abort) { - self.abort() - } else { - self.onError(new RequestAbortedError()) - } -} + handle = args[0]; + prefix = args[1]; -function addSignal (self, signal) { - self[kSignal] = null - self[kListener] = null + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } - if (!signal) { - return - } + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } - if (signal.aborted) { - abort(self) - return - } + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } - self[kSignal] = signal - self[kListener] = () => { - abort(self) + state.tagMap[handle] = prefix; } +}; - addAbortListener(self[kSignal], self[kListener]) -} -function removeSignal (self) { - if (!self[kSignal]) { - return - } +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; - if ('removeEventListener' in self[kSignal]) { - self[kSignal].removeEventListener('abort', self[kListener]) - } else { - self[kSignal].removeListener('abort', self[kListener]) - } + if (start < end) { + _result = state.input.slice(start, end); - self[kSignal] = null - self[kListener] = null -} + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } -module.exports = { - addSignal, - removeSignal + state.result += _result; + } } +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; -/***/ }), - -/***/ 4660: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const { AsyncResource } = __nccwpck_require__(290) -const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8707) -const util = __nccwpck_require__(3440) -const { addSignal, removeSignal } = __nccwpck_require__(158) - -class ConnectHandler extends AsyncResource { - constructor (opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + sourceKeys = Object.keys(source); - const { signal, opaque, responseHeaders } = opts + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; } + } +} - super('UNDICI_CONNECT') +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { + var index, quantity; - this.opaque = opaque || null - this.responseHeaders = responseHeaders || null - this.callback = callback - this.abort = null + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); - addSignal(this, signal) - } + for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + if (Array.isArray(keyNode[index])) { + throwError(state, 'nested arrays are not supported inside keys'); + } - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; + } } - - this.abort = abort - this.context = context } - onHeaders () { - throw new SocketError('bad connect', null) + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; } - onUpgrade (statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this - removeSignal(this) + keyNode = String(keyNode); - this.callback = null + if (_result === null) { + _result = {}; + } - let headers = rawHeaders - // Indicates is an HTTP2Session - if (headers != null) { - headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); } - - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - socket, - opaque, - context - }) + } else { + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + state.line = startLine || state.line; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); + } + _result[keyNode] = valueNode; + delete overridableKeys[keyNode]; } - onError (err) { - const { callback, opaque } = this + return _result; +} - removeSignal(this) +function readLineBreak(state) { + var ch; - if (callback) { - this.callback = null - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }) - }) + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; } + } else { + throwError(state, 'a line break is expected'); } + + state.line += 1; + state.lineStart = state.position; } -function connect (opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - connect.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data) - }) - }) - } +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); - try { - const connectHandler = new ConnectHandler(opts, callback) - this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler) - } catch (err) { - if (typeof callback !== 'function') { - throw err + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); } - const opaque = opts && opts.opaque - queueMicrotask(() => callback(err, { opaque })) - } -} -module.exports = connect + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + if (is_EOL(ch)) { + readLineBreak(state); -/***/ }), + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; -/***/ 6862: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } -"use strict"; + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + return lineBreaks; +} -const { - Readable, - Duplex, - PassThrough -} = __nccwpck_require__(2203) -const { - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError -} = __nccwpck_require__(8707) -const util = __nccwpck_require__(3440) -const { AsyncResource } = __nccwpck_require__(290) -const { addSignal, removeSignal } = __nccwpck_require__(158) -const assert = __nccwpck_require__(2613) +function testDocumentSeparator(state) { + var _position = state.position, + ch; -const kResume = Symbol('resume') + ch = state.input.charCodeAt(_position); -class PipelineRequest extends Readable { - constructor () { - super({ autoDestroy: true }) + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { - this[kResume] = null - } + _position += 3; - _read () { - const { [kResume]: resume } = this + ch = state.input.charCodeAt(_position); - if (resume) { - this[kResume] = null - resume() + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; } } - _destroy (err, callback) { - this._read() + return false; +} - callback(err) +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); } } -class PipelineResponse extends Readable { - constructor (resume) { - super({ autoDestroy: true }) - this[kResume] = resume - } - _read () { - this[kResume]() - } +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; - _destroy (err, callback) { - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError() - } + ch = state.input.charCodeAt(state.position); - callback(err) + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; } -} -class PipelineHandler extends AsyncResource { - constructor (opts, handler) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); - if (typeof handler !== 'function') { - throw new InvalidArgumentError('invalid handler') + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; } + } - const { signal, method, opaque, onInfo, responseHeaders } = opts - - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method') + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } } - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback') + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; } - super('UNDICI_PIPELINE') + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } - this.opaque = opaque || null - this.responseHeaders = responseHeaders || null - this.handler = handler - this.abort = null - this.context = null - this.onInfo = onInfo || null + ch = state.input.charCodeAt(++state.position); + } - this.req = new PipelineRequest().on('error', util.nop) + captureSegment(state, captureStart, captureEnd, false); - this.ret = new Duplex({ - readableObjectMode: opts.objectMode, - autoDestroy: true, - read: () => { - const { body } = this + if (state.result) { + return true; + } - if (body && body.resume) { - body.resume() - } - }, - write: (chunk, encoding, callback) => { - const { req } = this + state.kind = _kind; + state.result = _result; + return false; +} - if (req.push(chunk, encoding) || req._readableState.destroyed) { - callback() - } else { - req[kResume] = callback - } - }, - destroy: (err, callback) => { - const { body, req, res, ret, abort } = this +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; - if (!err && !ret._readableState.endEmitted) { - err = new RequestAbortedError() - } + ch = state.input.charCodeAt(state.position); - if (abort && err) { - abort() - } + if (ch !== 0x27/* ' */) { + return false; + } - util.destroy(body, err) - util.destroy(req, err) - util.destroy(res, err) + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; - removeSignal(this) + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - callback(err) + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; } - }).on('prefinish', () => { - const { req } = this - // Node < 15 does not call _final in same tick. - req.push(null) - }) + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; - this.res = null + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); - addSignal(this, signal) + } else { + state.position++; + captureEnd = state.position; + } } - onConnect (abort, context) { - const { ret, res } = this + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} - assert(!res, 'pipeline cannot be retried') +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; - if (ret.destroyed) { - throw new RequestAbortedError() - } + ch = state.input.charCodeAt(state.position); - this.abort = abort - this.context = context + if (ch !== 0x22/* " */) { + return false; } - onHeaders (statusCode, rawHeaders, resume) { - const { opaque, handler, context } = this + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; - if (statusCode < 200) { - if (this.onInfo) { - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) - this.onInfo({ statusCode, headers }) - } - return - } + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; - this.res = new PipelineResponse(resume) + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - let body - try { - this.handler = null - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) - body = this.runInAsyncScope(handler, null, { - statusCode, - headers, - opaque, - body: this.res, - context - }) - } catch (err) { - this.res.on('error', util.nop) - throw err - } + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); - if (!body || typeof body.on !== 'function') { - throw new InvalidReturnValueError('expected Readable') - } + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; - body - .on('data', (chunk) => { - const { ret, body } = this + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; - if (!ret.push(chunk) && body.pause) { - body.pause() + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } } - }) - .on('error', (err) => { - const { ret } = this - util.destroy(ret, err) - }) - .on('end', () => { - const { ret } = this + state.result += charFromCodepoint(hexResult); - ret.push(null) - }) - .on('close', () => { - const { ret } = this + state.position++; - if (!ret._readableState.ended) { - util.destroy(ret, new RequestAbortedError()) - } - }) + } else { + throwError(state, 'unknown escape sequence'); + } - this.body = body - } + captureStart = captureEnd = state.position; - onData (chunk) { - const { res } = this - return res.push(chunk) - } + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; - onComplete (trailers) { - const { res } = this - res.push(null) - } + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); - onError (err) { - const { ret } = this - this.handler = null - util.destroy(ret, err) + } else { + state.position++; + captureEnd = state.position; + } } -} -function pipeline (opts, handler) { - try { - const pipelineHandler = new PipelineHandler(opts, handler) - this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler) - return pipelineHandler.ret - } catch (err) { - return new PassThrough().destroy(err) - } + throwError(state, 'unexpected end of the stream within a double quoted scalar'); } -module.exports = pipeline +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = {}, + keyNode, + keyTag, + valueNode, + ch; + ch = state.input.charCodeAt(state.position); -/***/ }), + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } -/***/ 4043: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } -"use strict"; + ch = state.input.charCodeAt(++state.position); + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); -const Readable = __nccwpck_require__(9927) -const { - InvalidArgumentError, - RequestAbortedError -} = __nccwpck_require__(8707) -const util = __nccwpck_require__(3440) -const { getResolveErrorBodyCallback } = __nccwpck_require__(7655) -const { AsyncResource } = __nccwpck_require__(290) -const { addSignal, removeSignal } = __nccwpck_require__(158) + ch = state.input.charCodeAt(state.position); -class RequestHandler extends AsyncResource { - constructor (opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); } - const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; - try { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); - if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { - throw new InvalidArgumentError('invalid highWaterMark') + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); } + } - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method') - } + ch = state.input.charCodeAt(state.position); - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback') - } + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } - super('UNDICI_REQUEST') - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on('error', util.nop), err) - } - throw err + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); + } else { + _result.push(keyNode); } - this.responseHeaders = responseHeaders || null - this.opaque = opaque || null - this.callback = callback - this.res = null - this.abort = null - this.body = body - this.trailers = {} - this.context = null - this.onInfo = onInfo || null - this.throwOnError = throwOnError - this.highWaterMark = highWaterMark + skipSeparationSpace(state, true, nodeIndent); - if (util.isStream(body)) { - body.on('error', (err) => { - this.onError(err) - }) - } + ch = state.input.charCodeAt(state.position); - addSignal(this, signal) + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } } - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() - } + throwError(state, 'unexpected end of the stream within a flow collection'); +} - this.abort = abort - this.context = context +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; } - onHeaders (statusCode, rawHeaders, resume, statusMessage) { - const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this + state.kind = 'scalar'; + state.result = ''; - const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }) + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); } - return - } - - const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers - const contentType = parsedHeaders['content-type'] - const body = new Readable({ resume, abort, contentType, highWaterMark }) - this.callback = null - this.res = body - if (callback !== null) { - if (this.throwOnError && statusCode >= 400) { - this.runInAsyncScope(getResolveErrorBodyCallback, null, - { callback, body, contentType, statusCode, statusMessage, headers } - ) + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; } else { - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body, - context - }) + throwError(state, 'repeat of an indentation width identifier'); } - } - } - onData (chunk) { - const { res } = this - return res.push(chunk) + } else { + break; + } } - onComplete (trailers) { - const { res } = this + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); - removeSignal(this) + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } - util.parseHeaders(trailers, this.trailers) + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; - res.push(null) - } + ch = state.input.charCodeAt(state.position); - onError (err) { - const { res, callback, body, opaque } = this + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } - removeSignal(this) + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } - if (callback) { - // TODO: Does this need queueMicrotask? - this.callback = null - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }) - }) - } - - if (res) { - this.res = null - // Ensure all queued handlers are invoked before destroying res. - queueMicrotask(() => { - util.destroy(res, err) - }) + if (is_EOL(ch)) { + emptyLines++; + continue; } - if (body) { - this.body = null - util.destroy(body, err) - } - } -} + // End of the scalar. + if (state.lineIndent < textIndent) { -function request (opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - request.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data) - }) - }) - } + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } - try { - this.dispatch(opts, new RequestHandler(opts, callback)) - } catch (err) { - if (typeof callback !== 'function') { - throw err + // Break this `while` cycle and go to the funciton's epilogue. + break; } - const opaque = opts && opts.opaque - queueMicrotask(() => callback(err, { opaque })) - } -} -module.exports = request -module.exports.RequestHandler = RequestHandler + // Folded style: use fancy rules to handle line breaks. + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); -/***/ }), + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); -/***/ 3560: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } -"use strict"; + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } -const { finished, PassThrough } = __nccwpck_require__(2203) -const { - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError -} = __nccwpck_require__(8707) -const util = __nccwpck_require__(3440) -const { getResolveErrorBodyCallback } = __nccwpck_require__(7655) -const { AsyncResource } = __nccwpck_require__(290) -const { addSignal, removeSignal } = __nccwpck_require__(158) + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; -class StreamHandler extends AsyncResource { - constructor (opts, factory, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); } - const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts + captureSegment(state, captureStart, state.position, false); + } - try { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + return true; +} - if (typeof factory !== 'function') { - throw new InvalidArgumentError('invalid factory') - } +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') - } + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } - if (method === 'CONNECT') { - throw new InvalidArgumentError('invalid method') - } + ch = state.input.charCodeAt(state.position); - if (onInfo && typeof onInfo !== 'function') { - throw new InvalidArgumentError('invalid onInfo callback') - } + while (ch !== 0) { - super('UNDICI_STREAM') - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on('error', util.nop), err) - } - throw err + if (ch !== 0x2D/* - */) { + break; } - this.responseHeaders = responseHeaders || null - this.opaque = opaque || null - this.factory = factory - this.callback = callback - this.res = null - this.abort = null - this.context = null - this.trailers = null - this.body = body - this.onInfo = onInfo || null - this.throwOnError = throwOnError || false + following = state.input.charCodeAt(state.position + 1); - if (util.isStream(body)) { - body.on('error', (err) => { - this.onError(err) - }) + if (!is_WS_OR_EOL(following)) { + break; } - addSignal(this, signal) - } + detected = true; + state.position++; - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } } - this.abort = abort - this.context = context + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } } - onHeaders (statusCode, rawHeaders, resume, statusMessage) { - const { factory, opaque, context, callback, responseHeaders } = this + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} - const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _pos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = {}, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }) - } - return - } + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } - this.factory = null + ch = state.input.charCodeAt(state.position); - let res + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + _pos = state.position; - if (this.throwOnError && statusCode >= 400) { - const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers - const contentType = parsedHeaders['content-type'] - res = new PassThrough() + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { - this.callback = null - this.runInAsyncScope(getResolveErrorBodyCallback, null, - { callback, body: res, contentType, statusCode, statusMessage, headers } - ) - } else { - if (factory === null) { - return - } + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } - res = this.runInAsyncScope(factory, null, { - statusCode, - headers, - opaque, - context - }) + detected = true; + atExplicitKey = true; + allowCompact = true; - if ( - !res || - typeof res.write !== 'function' || - typeof res.end !== 'function' || - typeof res.on !== 'function' - ) { - throw new InvalidReturnValueError('expected Writable') + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); } - // TODO: Avoid finished. It registers an unnecessary amount of listeners. - finished(res, { readable: false }, (err) => { - const { callback, res, opaque, trailers, abort } = this + state.position += 1; + ch = following; - this.res = null - if (err || !res.readable) { - util.destroy(res, err) - } + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - this.callback = null - this.runInAsyncScope(callback, null, err || null, { opaque, trailers }) + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); - if (err) { - abort() + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); } - }) - } - res.on('drain', resume) + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); - this.res = res + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } - const needDrain = res.writableNeedDrain !== undefined - ? res.writableNeedDrain - : res._writableState && res._writableState.needDrain + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } - return needDrain !== true - } + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; - onData (chunk) { - const { res } = this + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); - return res ? res.write(chunk) : true - } + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } - onComplete (trailers) { - const { res } = this + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); - removeSignal(this) + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } - if (!res) { - return + } else { + break; // Reading is done. Go to the epilogue. } - this.trailers = util.parseHeaders(trailers) - - res.end() - } - - onError (err) { - const { res, callback, opaque, body } = this - - removeSignal(this) + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } - this.factory = null + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos); + keyTag = keyNode = valueNode = null; + } - if (res) { - this.res = null - util.destroy(res, err) - } else if (callback) { - this.callback = null - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }) - }) + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); } - if (body) { - this.body = null - util.destroy(body, err) + if (state.lineIndent > nodeIndent && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; } } -} -function stream (opts, factory, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - stream.call(this, opts, factory, (err, data) => { - return err ? reject(err) : resolve(data) - }) - }) + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); } - try { - this.dispatch(opts, new StreamHandler(opts, factory, callback)) - } catch (err) { - if (typeof callback !== 'function') { - throw err - } - const opaque = opts && opts.opaque - queueMicrotask(() => callback(err, { opaque })) + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; } + + return detected; } -module.exports = stream +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + ch = state.input.charCodeAt(state.position); -/***/ }), + if (ch !== 0x21/* ! */) return false; -/***/ 1882: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } -"use strict"; + ch = state.input.charCodeAt(++state.position); + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); -const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8707) -const { AsyncResource } = __nccwpck_require__(290) -const util = __nccwpck_require__(3440) -const { addSignal, removeSignal } = __nccwpck_require__(158) -const assert = __nccwpck_require__(2613) + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); -class UpgradeHandler extends AsyncResource { - constructor (opts, callback) { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('invalid opts') - } + } else { + tagHandle = '!'; + } - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } + _position = state.position; - const { signal, opaque, responseHeaders } = opts + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); - if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { - throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { - super('UNDICI_UPGRADE') + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); - this.responseHeaders = responseHeaders || null - this.opaque = opaque || null - this.callback = callback - this.abort = null - this.context = null + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } - addSignal(this, signal) - } + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } - onConnect (abort, context) { - if (!this.callback) { - throw new RequestAbortedError() + ch = state.input.charCodeAt(++state.position); } - this.abort = abort - this.context = null + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } } - onHeaders () { - throw new SocketError('bad upgrade', null) + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); } - onUpgrade (statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this + if (isVerbatim) { + state.tag = tagName; - assert.strictEqual(statusCode, 101) + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; - removeSignal(this) + } else if (tagHandle === '!') { + state.tag = '!' + tagName; - this.callback = null - const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) - this.runInAsyncScope(callback, null, null, { - headers, - socket, - opaque, - context - }) + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } - onError (err) { - const { callback, opaque } = this + return true; +} - removeSignal(this) +function readAnchorProperty(state) { + var _position, + ch; - if (callback) { - this.callback = null - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }) - }) - } + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); } -} -function upgrade (opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - upgrade.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data) - }) - }) + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); } - try { - const upgradeHandler = new UpgradeHandler(opts, callback) - this.dispatch({ - ...opts, - method: opts.method || 'GET', - upgrade: opts.protocol || 'Websocket' - }, upgradeHandler) - } catch (err) { - if (typeof callback !== 'function') { - throw err - } - const opaque = opts && opts.opaque - queueMicrotask(() => callback(err, { opaque })) + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); } + + state.anchor = state.input.slice(_position, state.position); + return true; } -module.exports = upgrade +function readAlias(state) { + var _position, alias, + ch; + ch = state.input.charCodeAt(state.position); -/***/ }), + if (ch !== 0x2A/* * */) return false; -/***/ 6615: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + ch = state.input.charCodeAt(++state.position); + _position = state.position; -"use strict"; + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } -module.exports.request = __nccwpck_require__(4043) -module.exports.stream = __nccwpck_require__(3560) -module.exports.pipeline = __nccwpck_require__(6862) -module.exports.upgrade = __nccwpck_require__(1882) -module.exports.connect = __nccwpck_require__(4660) + alias = state.input.slice(_position, state.position); + if (!_hasOwnProperty.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } -/***/ }), + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} -/***/ 9927: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent + atNewLine = false, + hasContent = false, + typeIndex, + typeQuantity, + type, + flowIndent, + blockIndent; -"use strict"; -// Ported from https://github.com/nodejs/undici/pull/907 + if (state.listener !== null) { + state.listener('open', state); + } + state.tag = null; + state.anchor = null; + state.kind = null; + state.result = null; + allowBlockStyles = allowBlockScalars = allowBlockCollections = + CONTEXT_BLOCK_OUT === nodeContext || + CONTEXT_BLOCK_IN === nodeContext; -const assert = __nccwpck_require__(2613) -const { Readable } = __nccwpck_require__(2203) -const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = __nccwpck_require__(8707) -const util = __nccwpck_require__(3440) -const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3440) + if (allowToSeek) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; -let Blob + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } -const kConsume = Symbol('kConsume') -const kReading = Symbol('kReading') -const kBody = Symbol('kBody') -const kAbort = Symbol('abort') -const kContentType = Symbol('kContentType') + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; -const noop = () => {} + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } -module.exports = class BodyReadable extends Readable { - constructor ({ - resume, - abort, - contentType = '', - highWaterMark = 64 * 1024 // Same as nodejs fs streams. - }) { - super({ - autoDestroy: true, - read: resume, - highWaterMark - }) + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } - this._readableState.dataEmitted = false + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } - this[kAbort] = abort - this[kConsume] = null - this[kBody] = null - this[kContentType] = contentType + blockIndent = state.position - state.lineStart; - // Is stream being consumed through Readable API? - // This is an optimization so that we avoid checking - // for 'data' and 'readable' listeners in the hot path - // inside push(). - this[kReading] = false - } + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; - destroy (err) { - if (this.destroyed) { - // Node < 16 - return this - } + } else if (readAlias(state)) { + hasContent = true; - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError() - } + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } - if (err) { - this[kAbort]() - } + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; - return super.destroy(err) - } + if (state.tag === null) { + state.tag = '?'; + } + } - emit (ev, ...args) { - if (ev === 'data') { - // Node < 16.7 - this._readableState.dataEmitted = true - } else if (ev === 'error') { - // Node < 16 - this._readableState.errorEmitted = true + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); } - return super.emit(ev, ...args) } - on (ev, ...args) { - if (ev === 'data' || ev === 'readable') { - this[kReading] = true - } - return super.on(ev, ...args) - } + if (state.tag !== null && state.tag !== '!') { + if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "!<?> [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"'); + } - addListener (ev, ...args) { - return this.on(ev, ...args) - } + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; - off (ev, ...args) { - const ret = super.off(ev, ...args) - if (ev === 'data' || ev === 'readable') { - this[kReading] = ( - this.listenerCount('data') > 0 || - this.listenerCount('readable') > 0 - ) - } - return ret - } + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; - removeListener (ev, ...args) { - return this.off(ev, ...args) - } + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } - push (chunk) { - if (this[kConsume] && chunk !== null && this.readableLength === 0) { - consumePush(this[kConsume], chunk) - return this[kReading] ? super.push(chunk) : true + if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + throwError(state, 'unknown tag !<' + state.tag + '>'); } - return super.push(chunk) - } - - // https://fetch.spec.whatwg.org/#dom-body-text - async text () { - return consume(this, 'text') } - // https://fetch.spec.whatwg.org/#dom-body-json - async json () { - return consume(this, 'json') + if (state.listener !== null) { + state.listener('close', state); } + return state.tag !== null || state.anchor !== null || hasContent; +} - // https://fetch.spec.whatwg.org/#dom-body-blob - async blob () { - return consume(this, 'blob') - } +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; - // https://fetch.spec.whatwg.org/#dom-body-arraybuffer - async arrayBuffer () { - return consume(this, 'arrayBuffer') - } + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; - // https://fetch.spec.whatwg.org/#dom-body-formdata - async formData () { - // TODO: Implement. - throw new NotSupportedError() - } + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); - // https://fetch.spec.whatwg.org/#dom-body-bodyused - get bodyUsed () { - return util.isDisturbed(this) - } + ch = state.input.charCodeAt(state.position); - // https://fetch.spec.whatwg.org/#dom-body-body - get body () { - if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this) - if (this[kConsume]) { - // TODO: Is this the best way to force a lock? - this[kBody].getReader() // Ensure stream is locked. - assert(this[kBody].locked) - } + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; } - return this[kBody] - } - dump (opts) { - let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144 - const signal = opts && opts.signal + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; - if (signal) { - try { - if (typeof signal !== 'object' || !('aborted' in signal)) { - throw new InvalidArgumentError('signal must be an AbortSignal') - } - util.throwIfAborted(signal) - } catch (err) { - return Promise.reject(err) - } + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); } - if (this.closed) { - return Promise.resolve(null) + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); } - return new Promise((resolve, reject) => { - const signalListenerCleanup = signal - ? util.addAbortListener(signal, () => { - this.destroy() - }) - : noop + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } - this - .on('close', function () { - signalListenerCleanup() - if (signal && signal.aborted) { - reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })) - } else { - resolve(null) - } - }) - .on('error', noop) - .on('data', function (chunk) { - limit -= chunk.length - if (limit <= 0) { - this.destroy() - } - }) - .resume() - }) - } -} + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } -// https://streams.spec.whatwg.org/#readablestream-locked -function isLocked (self) { - // Consume is an implicit lock. - return (self[kBody] && self[kBody].locked === true) || self[kConsume] -} + if (is_EOL(ch)) break; -// https://fetch.spec.whatwg.org/#body-unusable -function isUnusable (self) { - return util.isDisturbed(self) || isLocked(self) -} + _position = state.position; -async function consume (stream, type) { - if (isUnusable(stream)) { - throw new TypeError('unusable') - } + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } - assert(!stream[kConsume]) + directiveArgs.push(state.input.slice(_position, state.position)); + } - return new Promise((resolve, reject) => { - stream[kConsume] = { - type, - stream, - resolve, - reject, - length: 0, - body: [] + if (ch !== 0) readLineBreak(state); + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); } + } - stream - .on('error', function (err) { - consumeFinish(this[kConsume], err) - }) - .on('close', function () { - if (this[kConsume].body !== null) { - consumeFinish(this[kConsume], new RequestAbortedError()) - } - }) + skipSeparationSpace(state, true, -1); - process.nextTick(consumeStart, stream[kConsume]) - }) -} + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); -function consumeStart (consume) { - if (consume.body === null) { - return + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); } - const { _readableState: state } = consume.stream + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); - for (const chunk of state.buffer) { - consumePush(consume, chunk) + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); } - if (state.endEmitted) { - consumeEnd(this[kConsume]) - } else { - consume.stream.on('end', function () { - consumeEnd(this[kConsume]) - }) - } + state.documents.push(state.result); - consume.stream.resume() + if (state.position === state.lineStart && testDocumentSeparator(state)) { - while (consume.stream.read() != null) { - // Loop + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; } } -function consumeEnd (consume) { - const { type, body, resolve, stream, length } = consume - try { - if (type === 'text') { - resolve(toUSVString(Buffer.concat(body))) - } else if (type === 'json') { - resolve(JSON.parse(Buffer.concat(body))) - } else if (type === 'arrayBuffer') { - const dst = new Uint8Array(length) +function loadDocuments(input, options) { + input = String(input); + options = options || {}; - let pos = 0 - for (const buf of body) { - dst.set(buf, pos) - pos += buf.byteLength - } + if (input.length !== 0) { - resolve(dst.buffer) - } else if (type === 'blob') { - if (!Blob) { - Blob = (__nccwpck_require__(181).Blob) - } - resolve(new Blob(body, { type: stream[kContentType] })) + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; } - consumeFinish(consume) - } catch (err) { - stream.destroy(err) + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } } -} -function consumePush (consume, chunk) { - consume.length += chunk.length - consume.body.push(chunk) -} + var state = new State(input, options); -function consumeFinish (consume, err) { - if (consume.body === null) { - return + var nullpos = input.indexOf('\0'); + + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); } - if (err) { - consume.reject(err) - } else { - consume.resolve() + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; } - consume.type = null - consume.stream = null - consume.resolve = null - consume.reject = null - consume.length = 0 - consume.body = null + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; } -/***/ }), +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } -/***/ 7655: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + var documents = loadDocuments(input, options); -const assert = __nccwpck_require__(2613) -const { - ResponseStatusCodeError -} = __nccwpck_require__(8707) -const { toUSVString } = __nccwpck_require__(3440) + if (typeof iterator !== 'function') { + return documents; + } -async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { - assert(body) + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} - let chunks = [] - let limit = 0 - for await (const chunk of body) { - chunks.push(chunk) - limit += chunk.length - if (limit > 128 * 1024) { - chunks = null - break - } - } +function load(input, options) { + var documents = loadDocuments(input, options); - if (statusCode === 204 || !contentType || !chunks) { - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) - return + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; } + throw new YAMLException('expected a single document in the stream, but found more'); +} - try { - if (contentType.startsWith('application/json')) { - const payload = JSON.parse(toUSVString(Buffer.concat(chunks))) - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) - return - } - if (contentType.startsWith('text/')) { - const payload = toUSVString(Buffer.concat(chunks)) - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) - return - } - } catch (err) { - // Process in a fallback if error +function safeLoadAll(input, iterator, options) { + if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { + options = iterator; + iterator = null; } - process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) + return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } -module.exports = { getResolveErrorBodyCallback } + +function safeLoad(input, options) { + return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +} + + +module.exports.loadAll = loadAll; +module.exports.load = load; +module.exports.safeLoadAll = safeLoadAll; +module.exports.safeLoad = safeLoad; /***/ }), -/***/ 1093: +/***/ 45622: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { - BalancedPoolMissingUpstreamError, - InvalidArgumentError -} = __nccwpck_require__(8707) -const { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher -} = __nccwpck_require__(8640) -const Pool = __nccwpck_require__(5076) -const { kUrl, kInterceptors } = __nccwpck_require__(6443) -const { parseOrigin } = __nccwpck_require__(3440) -const kFactory = Symbol('factory') -const kOptions = Symbol('options') -const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') -const kCurrentWeight = Symbol('kCurrentWeight') -const kIndex = Symbol('kIndex') -const kWeight = Symbol('kWeight') -const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') -const kErrorPenalty = Symbol('kErrorPenalty') +var common = __nccwpck_require__(24206); -function getGreatestCommonDivisor (a, b) { - if (b === 0) return a - return getGreatestCommonDivisor(b, a % b) -} -function defaultFactory (origin, opts) { - return new Pool(origin, opts) +function Mark(name, buffer, position, line, column) { + this.name = name; + this.buffer = buffer; + this.position = position; + this.line = line; + this.column = column; } -class BalancedPool extends PoolBase { - constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { - super() - - this[kOptions] = opts - this[kIndex] = -1 - this[kCurrentWeight] = 0 - this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 - this[kErrorPenalty] = this[kOptions].errorPenalty || 15 +Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { + var head, start, tail, end, snippet; - if (!Array.isArray(upstreams)) { - upstreams = [upstreams] - } + if (!this.buffer) return null; - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.') - } + indent = indent || 4; + maxLength = maxLength || 75; - this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) - ? opts.interceptors.BalancedPool - : [] - this[kFactory] = factory + head = ''; + start = this.position; - for (const upstream of upstreams) { - this.addUpstream(upstream) + while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { + start -= 1; + if (this.position - start > (maxLength / 2 - 1)) { + head = ' ... '; + start += 5; + break; } - this._updateBalancedPoolStats() } - addUpstream (upstream) { - const upstreamOrigin = parseOrigin(upstream).origin + tail = ''; + end = this.position; - if (this[kClients].find((pool) => ( - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true - ))) { - return this + while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { + end += 1; + if (end - this.position > (maxLength / 2 - 1)) { + tail = ' ... '; + end -= 5; + break; } - const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) - - this[kAddClient](pool) - pool.on('connect', () => { - pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) - }) - - pool.on('connectionError', () => { - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) - this._updateBalancedPoolStats() - }) + } - pool.on('disconnect', (...args) => { - const err = args[2] - if (err && err.code === 'UND_ERR_SOCKET') { - // decrease the weight of the pool. - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) - this._updateBalancedPoolStats() - } - }) + snippet = this.buffer.slice(start, end); - for (const client of this[kClients]) { - client[kWeight] = this[kMaxWeightPerServer] - } + return common.repeat(' ', indent) + head + snippet + tail + '\n' + + common.repeat(' ', indent + this.position - start + head.length) + '^'; +}; - this._updateBalancedPoolStats() - return this - } +Mark.prototype.toString = function toString(compact) { + var snippet, where = ''; - _updateBalancedPoolStats () { - this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0) + if (this.name) { + where += 'in "' + this.name + '" '; } - removeUpstream (upstream) { - const upstreamOrigin = parseOrigin(upstream).origin + where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); - const pool = this[kClients].find((pool) => ( - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true - )) + if (!compact) { + snippet = this.getSnippet(); - if (pool) { - this[kRemoveClient](pool) + if (snippet) { + where += ':\n' + snippet; } - - return this } - get upstreams () { - return this[kClients] - .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) - .map((p) => p[kUrl].origin) - } + return where; +}; - [kGetDispatcher] () { - // We validate that pools is greater than 0, - // otherwise we would have to wait until an upstream - // is added, which might never happen. - if (this[kClients].length === 0) { - throw new BalancedPoolMissingUpstreamError() - } - const dispatcher = this[kClients].find(dispatcher => ( - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true - )) +module.exports = Mark; - if (!dispatcher) { - return - } - const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) +/***/ }), - if (allClientsBusy) { - return - } +/***/ 45868: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - let counter = 0 +"use strict"; - let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) - while (counter++ < this[kClients].length) { - this[kIndex] = (this[kIndex] + 1) % this[kClients].length - const pool = this[kClients][this[kIndex]] +/*eslint-disable max-len*/ - // find pool index with the largest weight - if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { - maxWeightIndex = this[kIndex] - } +var common = __nccwpck_require__(24206); +var YAMLException = __nccwpck_require__(15622); +var Type = __nccwpck_require__(50323); - // decrease the current weight every `this[kClients].length`. - if (this[kIndex] === 0) { - // Set the current weight to the next lower weight. - this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] - if (this[kCurrentWeight] <= 0) { - this[kCurrentWeight] = this[kMaxWeightPerServer] - } - } - if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { - return pool +function compileList(schema, name, result) { + var exclude = []; + + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); + + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); } - } + }); - this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] - this[kIndex] = maxWeightIndex - return this[kClients][maxWeightIndex] - } + result.push(currentType); + }); + + return result.filter(function (type, index) { + return exclude.indexOf(index) === -1; + }); } -module.exports = BalancedPool +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, index, length; -/***/ }), + function collectType(type) { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } -/***/ 479: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} -"use strict"; +function Schema(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; -const { kConstruct } = __nccwpck_require__(296) -const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(3993) -const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3440) -const { kHeadersList } = __nccwpck_require__(6443) -const { webidl } = __nccwpck_require__(4222) -const { Response, cloneResponse } = __nccwpck_require__(8676) -const { Request } = __nccwpck_require__(5194) -const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) -const { fetching } = __nccwpck_require__(2315) -const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(5523) -const assert = __nccwpck_require__(2613) -const { getGlobalDispatcher } = __nccwpck_require__(2581) + this.implicit.forEach(function (type) { + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + }); -/** - * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation - * @typedef {Object} CacheBatchOperation - * @property {'delete' | 'put'} type - * @property {any} request - * @property {any} response - * @property {import('../../types/cache').CacheQueryOptions} options - */ + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); +} -/** - * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list - * @typedef {[any, any][]} requestResponseList - */ -class Cache { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list - * @type {requestResponseList} - */ - #relevantRequestResponseList +Schema.DEFAULT = null; - constructor () { - if (arguments[0] !== kConstruct) { - webidl.illegalConstructor() - } - this.#relevantRequestResponseList = arguments[1] - } +Schema.create = function createSchema() { + var schemas, types; - async match (request, options = {}) { - webidl.brandCheck(this, Cache) - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }) + switch (arguments.length) { + case 1: + schemas = Schema.DEFAULT; + types = arguments[0]; + break; - request = webidl.converters.RequestInfo(request) - options = webidl.converters.CacheQueryOptions(options) + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; - const p = await this.matchAll(request, options) + default: + throw new YAMLException('Wrong number of arguments for Schema.create function'); + } - if (p.length === 0) { - return - } + schemas = common.toArray(schemas); + types = common.toArray(types); - return p[0] + if (!schemas.every(function (schema) { return schema instanceof Schema; })) { + throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); } - async matchAll (request = undefined, options = {}) { - webidl.brandCheck(this, Cache) + if (!types.every(function (type) { return type instanceof Type; })) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } - if (request !== undefined) request = webidl.converters.RequestInfo(request) - options = webidl.converters.CacheQueryOptions(options) + return new Schema({ + include: schemas, + explicit: types + }); +}; - // 1. - let r = null - // 2. - if (request !== undefined) { - if (request instanceof Request) { - // 2.1.1 - r = request[kState] +module.exports = Schema; - // 2.1.2 - if (r.method !== 'GET' && !options.ignoreMethod) { - return [] - } - } else if (typeof request === 'string') { - // 2.2.1 - r = new Request(request)[kState] - } - } - // 5. - // 5.1 - const responses = [] +/***/ }), - // 5.2 - if (request === undefined) { - // 5.2.1 - for (const requestResponse of this.#relevantRequestResponseList) { - responses.push(requestResponse[1]) - } - } else { // 5.3 - // 5.3.1 - const requestResponses = this.#queryCache(r, options) +/***/ 55116: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 5.3.2 - for (const requestResponse of requestResponses) { - responses.push(requestResponse[1]) - } - } +"use strict"; +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. - // 5.4 - // We don't implement CORs so we don't need to loop over the responses, yay! - // 5.5.1 - const responseList = [] - // 5.5.2 - for (const response of responses) { - // 5.5.2.1 - const responseObject = new Response(response.body?.source ?? null) - const body = responseObject[kState].body - responseObject[kState] = response - responseObject[kState].body = body - responseObject[kHeaders][kHeadersList] = response.headersList - responseObject[kHeaders][kGuard] = 'immutable' - responseList.push(responseObject) - } - // 6. - return Object.freeze(responseList) - } +var Schema = __nccwpck_require__(45868); - async add (request) { - webidl.brandCheck(this, Cache) - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }) - request = webidl.converters.RequestInfo(request) +module.exports = new Schema({ + include: [ + __nccwpck_require__(96613) + ] +}); - // 1. - const requests = [request] - // 2. - const responseArrayPromise = this.addAll(requests) +/***/ }), - // 3. - return await responseArrayPromise - } +/***/ 60948: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - async addAll (requests) { - webidl.brandCheck(this, Cache) - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }) +"use strict"; +// JS-YAML's default schema for `load` function. +// It is not described in the YAML specification. +// +// This schema is based on JS-YAML's default safe schema and includes +// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. +// +// Also this schema is used as default base schema at `Schema.create` function. - requests = webidl.converters['sequence<RequestInfo>'](requests) - // 1. - const responsePromises = [] - // 2. - const requestList = [] - // 3. - for (const request of requests) { - if (typeof request === 'string') { - continue - } - // 3.1 - const r = request[kState] +var Schema = __nccwpck_require__(45868); - // 3.2 - if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { - throw webidl.errors.exception({ - header: 'Cache.addAll', - message: 'Expected http/s scheme when method is not GET.' - }) - } - } - // 4. - /** @type {ReturnType<typeof fetching>[]} */ - const fetchControllers = [] +module.exports = Schema.DEFAULT = new Schema({ + include: [ + __nccwpck_require__(76032) + ], + explicit: [ + __nccwpck_require__(49178), + __nccwpck_require__(98953), + __nccwpck_require__(31832) + ] +}); - // 5. - for (const request of requests) { - // 5.1 - const r = new Request(request)[kState] - // 5.2 - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: 'Cache.addAll', - message: 'Expected http/s scheme.' - }) - } +/***/ }), - // 5.4 - r.initiator = 'fetch' - r.destination = 'subresource' +/***/ 76032: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 5.5 - requestList.push(r) +"use strict"; +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) - // 5.6 - const responsePromise = createDeferredPromise() - // 5.7 - fetchControllers.push(fetching({ - request: r, - dispatcher: getGlobalDispatcher(), - processResponse (response) { - // 1. - if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { - responsePromise.reject(webidl.errors.exception({ - header: 'Cache.addAll', - message: 'Received an invalid status code or the request failed.' - })) - } else if (response.headersList.contains('vary')) { // 2. - // 2.1 - const fieldValues = getFieldValues(response.headersList.get('vary')) - // 2.2 - for (const fieldValue of fieldValues) { - // 2.2.1 - if (fieldValue === '*') { - responsePromise.reject(webidl.errors.exception({ - header: 'Cache.addAll', - message: 'invalid vary field value' - })) - for (const controller of fetchControllers) { - controller.abort() - } - return - } - } - } - }, - processResponseEndOfBody (response) { - // 1. - if (response.aborted) { - responsePromise.reject(new DOMException('aborted', 'AbortError')) - return - } +var Schema = __nccwpck_require__(45868); - // 2. - responsePromise.resolve(response) - } - })) - // 5.8 - responsePromises.push(responsePromise.promise) - } +module.exports = new Schema({ + include: [ + __nccwpck_require__(55116) + ], + implicit: [ + __nccwpck_require__(37044), + __nccwpck_require__(70112) + ], + explicit: [ + __nccwpck_require__(95295), + __nccwpck_require__(47395), + __nccwpck_require__(59117), + __nccwpck_require__(17812) + ] +}); - // 6. - const p = Promise.all(responsePromises) - // 7. - const responses = await p +/***/ }), - // 7.1 - const operations = [] +/***/ 86810: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 7.2 - let index = 0 +"use strict"; +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 - // 7.3 - for (const response of responses) { - // 7.3.1 - /** @type {CacheBatchOperation} */ - const operation = { - type: 'put', // 7.3.2 - request: requestList[index], // 7.3.3 - response // 7.3.4 - } - operations.push(operation) // 7.3.5 - index++ // 7.3.6 - } - // 7.5 - const cacheJobPromise = createDeferredPromise() - // 7.6.1 - let errorData = null +var Schema = __nccwpck_require__(45868); - // 7.6.2 - try { - this.#batchCacheOperations(operations) - } catch (e) { - errorData = e - } - // 7.6.3 - queueMicrotask(() => { - // 7.6.3.1 - if (errorData === null) { - cacheJobPromise.resolve(undefined) - } else { - // 7.6.3.2 - cacheJobPromise.reject(errorData) - } - }) +module.exports = new Schema({ + explicit: [ + __nccwpck_require__(94107), + __nccwpck_require__(12863), + __nccwpck_require__(54278) + ] +}); - // 7.7 - return cacheJobPromise.promise - } - async put (request, response) { - webidl.brandCheck(this, Cache) - webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }) +/***/ }), - request = webidl.converters.RequestInfo(request) - response = webidl.converters.Response(response) +/***/ 96613: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. - let innerRequest = null +"use strict"; +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. - // 2. - if (request instanceof Request) { - innerRequest = request[kState] - } else { // 3. - innerRequest = new Request(request)[kState] - } - // 4. - if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Expected an http/s scheme when method is not GET' - }) - } - // 5. - const innerResponse = response[kState] - // 6. - if (innerResponse.status === 206) { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Got 206 status' - }) - } - // 7. - if (innerResponse.headersList.contains('vary')) { - // 7.1. - const fieldValues = getFieldValues(innerResponse.headersList.get('vary')) +var Schema = __nccwpck_require__(45868); - // 7.2. - for (const fieldValue of fieldValues) { - // 7.2.1 - if (fieldValue === '*') { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Got * vary field value' - }) - } - } - } - // 8. - if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { - throw webidl.errors.exception({ - header: 'Cache.put', - message: 'Response body is locked or disturbed' - }) - } +module.exports = new Schema({ + include: [ + __nccwpck_require__(86810) + ], + implicit: [ + __nccwpck_require__(37767), + __nccwpck_require__(23066), + __nccwpck_require__(90053), + __nccwpck_require__(13122) + ] +}); - // 9. - const clonedResponse = cloneResponse(innerResponse) - // 10. - const bodyReadPromise = createDeferredPromise() +/***/ }), - // 11. - if (innerResponse.body != null) { - // 11.1 - const stream = innerResponse.body.stream +/***/ 50323: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 11.2 - const reader = stream.getReader() +"use strict"; - // 11.3 - readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject) - } else { - bodyReadPromise.resolve(undefined) - } - // 12. - /** @type {CacheBatchOperation[]} */ - const operations = [] +var YAMLException = __nccwpck_require__(15622); - // 13. - /** @type {CacheBatchOperation} */ - const operation = { - type: 'put', // 14. - request: innerRequest, // 15. - response: clonedResponse // 16. - } +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'defaultStyle', + 'styleAliases' +]; - // 17. - operations.push(operation) +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; - // 19. - const bytes = await bodyReadPromise.promise +function compileStyleAliases(map) { + var result = {}; - if (clonedResponse.body != null) { - clonedResponse.body.source = bytes - } + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } - // 19.1 - const cacheJobPromise = createDeferredPromise() + return result; +} - // 19.2.1 - let errorData = null +function Type(tag, options) { + options = options || {}; - // 19.2.2 - try { - this.#batchCacheOperations(operations) - } catch (e) { - errorData = e + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } + }); - // 19.2.3 - queueMicrotask(() => { - // 19.2.3.1 - if (errorData === null) { - cacheJobPromise.resolve() - } else { // 19.2.3.2 - cacheJobPromise.reject(errorData) - } - }) + // TODO: Add tag format check. + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); - return cacheJobPromise.promise + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } +} - async delete (request, options = {}) { - webidl.brandCheck(this, Cache) - webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }) +module.exports = Type; - request = webidl.converters.RequestInfo(request) - options = webidl.converters.CacheQueryOptions(options) - /** - * @type {Request} - */ - let r = null +/***/ }), - if (request instanceof Request) { - r = request[kState] +/***/ 95295: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (r.method !== 'GET' && !options.ignoreMethod) { - return false - } - } else { - assert(typeof request === 'string') +"use strict"; - r = new Request(request)[kState] - } - /** @type {CacheBatchOperation[]} */ - const operations = [] +/*eslint-disable no-bitwise*/ - /** @type {CacheBatchOperation} */ - const operation = { - type: 'delete', - request: r, - options - } +var NodeBuffer; - operations.push(operation) +try { + // A trick for browserified version, to not include `Buffer` shim + var _require = require; + NodeBuffer = _require('buffer').Buffer; +} catch (__) {} - const cacheJobPromise = createDeferredPromise() +var Type = __nccwpck_require__(50323); - let errorData = null - let requestResponses - try { - requestResponses = this.#batchCacheOperations(operations) - } catch (e) { - errorData = e - } +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; - queueMicrotask(() => { - if (errorData === null) { - cacheJobPromise.resolve(!!requestResponses?.length) - } else { - cacheJobPromise.reject(errorData) - } - }) - return cacheJobPromise.promise - } +function resolveYamlBinary(data) { + if (data === null) return false; - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys - * @param {any} request - * @param {import('../../types/cache').CacheQueryOptions} options - * @returns {readonly Request[]} - */ - async keys (request = undefined, options = {}) { - webidl.brandCheck(this, Cache) + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; - if (request !== undefined) request = webidl.converters.RequestInfo(request) - options = webidl.converters.CacheQueryOptions(options) + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); - // 1. - let r = null + // Skip CR/LF + if (code > 64) continue; - // 2. - if (request !== undefined) { - // 2.1 - if (request instanceof Request) { - // 2.1.1 - r = request[kState] + // Fail on illegal characters + if (code < 0) return false; - // 2.1.2 - if (r.method !== 'GET' && !options.ignoreMethod) { - return [] - } - } else if (typeof request === 'string') { // 2.2 - r = new Request(request)[kState] - } - } + bitlen += 6; + } - // 4. - const promise = createDeferredPromise() + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} - // 5. - // 5.1 - const requests = [] +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; - // 5.2 - if (request === undefined) { - // 5.2.1 - for (const requestResponse of this.#relevantRequestResponseList) { - // 5.2.1.1 - requests.push(requestResponse[0]) - } - } else { // 5.3 - // 5.3.1 - const requestResponses = this.#queryCache(r, options) + // Collect by 6*4 bits (3 bytes) - // 5.3.2 - for (const requestResponse of requestResponses) { - // 5.3.2.1 - requests.push(requestResponse[0]) - } + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); } - // 5.4 - queueMicrotask(() => { - // 5.4.1 - const requestList = [] + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } - // 5.4.2 - for (const request of requests) { - const requestObject = new Request('https://a') - requestObject[kState] = request - requestObject[kHeaders][kHeadersList] = request.headersList - requestObject[kHeaders][kGuard] = 'immutable' - requestObject[kRealm] = request.client + // Dump tail - // 5.4.2.1 - requestList.push(requestObject) - } + tailbits = (max % 4) * 6; - // 5.4.3 - promise.resolve(Object.freeze(requestList)) - }) + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } - return promise.promise + // Wrap into Buffer for NodeJS and leave Array for browser + if (NodeBuffer) { + // Support node 6.+ Buffer API when available + return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result); } - /** - * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm - * @param {CacheBatchOperation[]} operations - * @returns {requestResponseList} - */ - #batchCacheOperations (operations) { - // 1. - const cache = this.#relevantRequestResponseList + return result; +} - // 2. - const backupCache = [...cache] +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; - // 3. - const addedItems = [] + // Convert every three bytes to 4 ASCII characters. - // 4.1 - const resultList = [] + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } - try { - // 4.2 - for (const operation of operations) { - // 4.2.1 - if (operation.type !== 'delete' && operation.type !== 'put') { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'operation type does not match "delete" or "put"' - }) - } + bits = (bits << 8) + object[idx]; + } - // 4.2.2 - if (operation.type === 'delete' && operation.response != null) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'delete operation should not have an associated response' - }) - } + // Dump tail - // 4.2.3 - if (this.#queryCache(operation.request, operation.options, addedItems).length) { - throw new DOMException('???', 'InvalidStateError') - } + tail = max % 3; - // 4.2.4 - let requestResponses + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } - // 4.2.5 - if (operation.type === 'delete') { - // 4.2.5.1 - requestResponses = this.#queryCache(operation.request, operation.options) + return result; +} - // TODO: the spec is wrong, this is needed to pass WPTs - if (requestResponses.length === 0) { - return [] - } +function isBinary(object) { + return NodeBuffer && NodeBuffer.isBuffer(object); +} - // 4.2.5.2 - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse) - assert(idx !== -1) +module.exports = new Type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); - // 4.2.5.2.1 - cache.splice(idx, 1) - } - } else if (operation.type === 'put') { // 4.2.6 - // 4.2.6.1 - if (operation.response == null) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'put operation should have an associated response' - }) - } - // 4.2.6.2 - const r = operation.request +/***/ }), - // 4.2.6.3 - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'expected http or https scheme' - }) - } +/***/ 23066: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4.2.6.4 - if (r.method !== 'GET') { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'not get method' - }) - } +"use strict"; - // 4.2.6.5 - if (operation.options != null) { - throw webidl.errors.exception({ - header: 'Cache.#batchCacheOperations', - message: 'options must not be defined' - }) - } - // 4.2.6.6 - requestResponses = this.#queryCache(operation.request) +var Type = __nccwpck_require__(50323); - // 4.2.6.7 - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse) - assert(idx !== -1) +function resolveYamlBoolean(data) { + if (data === null) return false; - // 4.2.6.7.1 - cache.splice(idx, 1) - } + var max = data.length; - // 4.2.6.8 - cache.push([operation.request, operation.response]) + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} - // 4.2.6.10 - addedItems.push([operation.request, operation.response]) - } +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} - // 4.2.7 - resultList.push([operation.request, operation.response]) - } +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} - // 4.3 - return resultList - } catch (e) { // 5. - // 5.1 - this.#relevantRequestResponseList.length = 0 +module.exports = new Type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); - // 5.2 - this.#relevantRequestResponseList = backupCache - // 5.3 - throw e - } - } +/***/ }), - /** - * @see https://w3c.github.io/ServiceWorker/#query-cache - * @param {any} requestQuery - * @param {import('../../types/cache').CacheQueryOptions} options - * @param {requestResponseList} targetStorage - * @returns {requestResponseList} - */ - #queryCache (requestQuery, options, targetStorage) { - /** @type {requestResponseList} */ - const resultList = [] +/***/ 13122: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const storage = targetStorage ?? this.#relevantRequestResponseList +"use strict"; - for (const requestResponse of storage) { - const [cachedRequest, cachedResponse] = requestResponse - if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { - resultList.push(requestResponse) - } - } - return resultList - } +var common = __nccwpck_require__(24206); +var Type = __nccwpck_require__(50323); - /** - * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm - * @param {any} requestQuery - * @param {any} request - * @param {any | null} response - * @param {import('../../types/cache').CacheQueryOptions | undefined} options - * @returns {boolean} - */ - #requestMatchesCachedItem (requestQuery, request, response = null, options) { - // if (options?.ignoreMethod === false && request.method === 'GET') { - // return false - // } +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // 20:59 + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); - const queryURL = new URL(requestQuery.url) +function resolveYamlFloat(data) { + if (data === null) return false; - const cachedURL = new URL(request.url) + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } - if (options?.ignoreSearch) { - cachedURL.search = '' + return true; +} - queryURL.search = '' - } +function constructYamlFloat(data) { + var value, sign, base, digits; - if (!urlEquals(queryURL, cachedURL, true)) { - return false - } + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + digits = []; - if ( - response == null || - options?.ignoreVary || - !response.headersList.contains('vary') - ) { - return true - } + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } - const fieldValues = getFieldValues(response.headersList.get('vary')) + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - for (const fieldValue of fieldValues) { - if (fieldValue === '*') { - return false - } + } else if (value === '.nan') { + return NaN; - const requestValue = request.headersList.get(fieldValue) - const queryValue = requestQuery.headersList.get(fieldValue) + } else if (value.indexOf(':') >= 0) { + value.split(':').forEach(function (v) { + digits.unshift(parseFloat(v, 10)); + }); - // If one has the header and the other doesn't, or one has - // a different value than the other, return false - if (requestValue !== queryValue) { - return false - } - } + value = 0.0; + base = 1; + + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + + return sign * value; - return true } + return sign * parseFloat(value, 10); } -Object.defineProperties(Cache.prototype, { - [Symbol.toStringTag]: { - value: 'Cache', - configurable: true - }, - match: kEnumerableProperty, - matchAll: kEnumerableProperty, - add: kEnumerableProperty, - addAll: kEnumerableProperty, - put: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty -}) -const cacheQueryOptionConverters = [ - { - key: 'ignoreSearch', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'ignoreMethod', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'ignoreVary', - converter: webidl.converters.boolean, - defaultValue: false - } -] +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; -webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters) +function representYamlFloat(object, style) { + var res; -webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ - ...cacheQueryOptionConverters, - { - key: 'cacheName', - converter: webidl.converters.DOMString + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; } -]) -webidl.converters.Response = webidl.interfaceConverter(Response) + res = object.toString(10); -webidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter( - webidl.converters.RequestInfo -) + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack -module.exports = { - Cache + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); } +module.exports = new Type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + /***/ }), -/***/ 4738: +/***/ 90053: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { kConstruct } = __nccwpck_require__(296) -const { Cache } = __nccwpck_require__(479) -const { webidl } = __nccwpck_require__(4222) -const { kEnumerableProperty } = __nccwpck_require__(3440) +var common = __nccwpck_require__(24206); +var Type = __nccwpck_require__(50323); -class CacheStorage { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map - * @type {Map<string, import('./cache').requestResponseList} - */ - #caches = new Map() +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} - constructor () { - if (arguments[0] !== kConstruct) { - webidl.illegalConstructor() - } - } +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} - async match (request, options = {}) { - webidl.brandCheck(this, CacheStorage) - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.match' }) +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} - request = webidl.converters.RequestInfo(request) - options = webidl.converters.MultiCacheQueryOptions(options) +function resolveYamlInteger(data) { + if (data === null) return false; - // 1. - if (options.cacheName != null) { - // 1.1.1.1 - if (this.#caches.has(options.cacheName)) { - // 1.1.1.1.1 - const cacheList = this.#caches.get(options.cacheName) - const cache = new Cache(kConstruct, cacheList) + var max = data.length, + index = 0, + hasDigits = false, + ch; - return await cache.match(request, options) - } - } else { // 2. - // 2.2 - for (const cacheList of this.#caches.values()) { - const cache = new Cache(kConstruct, cacheList) + if (!max) return false; - // 2.2.1.2 - const response = await cache.match(request, options) + ch = data[index]; - if (response !== undefined) { - return response - } - } - } + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; } - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-has - * @param {string} cacheName - * @returns {Promise<boolean>} - */ - async has (cacheName) { - webidl.brandCheck(this, CacheStorage) - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }) - - cacheName = webidl.converters.DOMString(cacheName) + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; - // 2.1.1 - // 2.2 - return this.#caches.has(cacheName) - } + // base 2, base 8, base 16 - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open - * @param {string} cacheName - * @returns {Promise<Cache>} - */ - async open (cacheName) { - webidl.brandCheck(this, CacheStorage) - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }) + if (ch === 'b') { + // base 2 + index++; - cacheName = webidl.converters.DOMString(cacheName) + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } - // 2.1 - if (this.#caches.has(cacheName)) { - // await caches.open('v1') !== await caches.open('v1') - // 2.1.1 - const cache = this.#caches.get(cacheName) + if (ch === 'x') { + // base 16 + index++; - // 2.1.1.1 - return new Cache(kConstruct, cache) + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; } - // 2.2 - const cache = [] + // base 8 + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } - // 2.3 - this.#caches.set(cacheName, cache) + // base 10 (except 0) or base 60 - // 2.4 - return new Cache(kConstruct, cache) - } + // value should not start with `_`; + if (ch === '_') return false; - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete - * @param {string} cacheName - * @returns {Promise<boolean>} - */ - async delete (cacheName) { - webidl.brandCheck(this, CacheStorage) - webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }) + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch === ':') break; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } - cacheName = webidl.converters.DOMString(cacheName) + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; - return this.#caches.delete(cacheName) - } + // if !base60 - done; + if (ch !== ':') return true; - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys - * @returns {string[]} - */ - async keys () { - webidl.brandCheck(this, CacheStorage) + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} - // 2.1 - const keys = this.#caches.keys() +function constructYamlInteger(data) { + var value = data, sign = 1, ch, base, digits = []; - // 2.2 - return [...keys] + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); } -} -Object.defineProperties(CacheStorage.prototype, { - [Symbol.toStringTag]: { - value: 'CacheStorage', - configurable: true - }, - match: kEnumerableProperty, - has: kEnumerableProperty, - open: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty -}) + ch = value[0]; -module.exports = { - CacheStorage -} + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } + if (value === '0') return 0; -/***/ }), + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } -/***/ 296: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (value.indexOf(':') !== -1) { + value.split(':').forEach(function (v) { + digits.unshift(parseInt(v, 10)); + }); -"use strict"; + value = 0; + base = 1; + + digits.forEach(function (d) { + value += (d * base); + base *= 60; + }); + return sign * value; -module.exports = { - kConstruct: (__nccwpck_require__(6443).kConstruct) + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); } +module.exports = new Type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } +}); + /***/ }), -/***/ 3993: +/***/ 31832: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const assert = __nccwpck_require__(2613) -const { URLSerializer } = __nccwpck_require__(4322) -const { isValidHeaderName } = __nccwpck_require__(5523) +var esprima; -/** - * @see https://url.spec.whatwg.org/#concept-url-equals - * @param {URL} A - * @param {URL} B - * @param {boolean | undefined} excludeFragment - * @returns {boolean} - */ -function urlEquals (A, B, excludeFragment = false) { - const serializedA = URLSerializer(A, excludeFragment) +// Browserified version does not have esprima +// +// 1. For node.js just require module as deps +// 2. For browser try to require mudule via external AMD system. +// If not found - try to fallback to window.esprima. If not +// found too - then fail to parse. +// +try { + // workaround to exclude package from browserify list. + var _require = require; + esprima = _require('esprima'); +} catch (_) { + /* eslint-disable no-redeclare */ + /* global window */ + if (typeof window !== 'undefined') esprima = window.esprima; +} - const serializedB = URLSerializer(B, excludeFragment) +var Type = __nccwpck_require__(50323); - return serializedA === serializedB +function resolveJavascriptFunction(data) { + if (data === null) return false; + + try { + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }); + + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + (ast.body[0].expression.type !== 'ArrowFunctionExpression' && + ast.body[0].expression.type !== 'FunctionExpression')) { + return false; + } + + return true; + } catch (err) { + return false; + } } -/** - * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 - * @param {string} header - */ -function fieldValues (header) { - assert(header !== null) +function constructJavascriptFunction(data) { + /*jslint evil:true*/ - const values = [] + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }), + params = [], + body; - for (let value of header.split(',')) { - value = value.trim() + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + (ast.body[0].expression.type !== 'ArrowFunctionExpression' && + ast.body[0].expression.type !== 'FunctionExpression')) { + throw new Error('Failed to resolve function'); + } - if (!value.length) { - continue - } else if (!isValidHeaderName(value)) { - continue - } + ast.body[0].expression.params.forEach(function (param) { + params.push(param.name); + }); - values.push(value) + body = ast.body[0].expression.body.range; + + // Esprima's ranges include the first '{' and the last '}' characters on + // function expressions. So cut them out. + if (ast.body[0].expression.body.type === 'BlockStatement') { + /*eslint-disable no-new-func*/ + return new Function(params, source.slice(body[0] + 1, body[1] - 1)); } + // ES6 arrow functions can omit the BlockStatement. In that case, just return + // the body. + /*eslint-disable no-new-func*/ + return new Function(params, 'return ' + source.slice(body[0], body[1])); +} - return values +function representJavascriptFunction(object /*, style*/) { + return object.toString(); } -module.exports = { - urlEquals, - fieldValues +function isFunction(object) { + return Object.prototype.toString.call(object) === '[object Function]'; } +module.exports = new Type('tag:yaml.org,2002:js/function', { + kind: 'scalar', + resolve: resolveJavascriptFunction, + construct: constructJavascriptFunction, + predicate: isFunction, + represent: representJavascriptFunction +}); + /***/ }), -/***/ 6197: +/***/ 98953: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// @ts-check +var Type = __nccwpck_require__(50323); -/* global WebAssembly */ +function resolveJavascriptRegExp(data) { + if (data === null) return false; + if (data.length === 0) return false; -const assert = __nccwpck_require__(2613) -const net = __nccwpck_require__(9278) -const http = __nccwpck_require__(8611) -const { pipeline } = __nccwpck_require__(2203) -const util = __nccwpck_require__(3440) -const timers = __nccwpck_require__(8804) -const Request = __nccwpck_require__(4655) -const DispatcherBase = __nccwpck_require__(1) -const { - RequestContentLengthMismatchError, - ResponseContentLengthMismatchError, - InvalidArgumentError, - RequestAbortedError, - HeadersTimeoutError, - HeadersOverflowError, - SocketError, - InformationalError, - BodyTimeoutError, - HTTPParserError, - ResponseExceededMaxSizeError, - ClientDestroyedError -} = __nccwpck_require__(8707) -const buildConnector = __nccwpck_require__(9136) -const { - kUrl, - kReset, - kServerName, - kClient, - kBusy, - kParser, - kConnect, - kBlocking, - kResuming, - kRunning, - kPending, - kSize, - kWriting, - kQueue, - kConnected, - kConnecting, - kNeedDrain, - kNoRef, - kKeepAliveDefaultTimeout, - kHostHeader, - kPendingIdx, - kRunningIdx, - kError, - kPipelining, - kSocket, - kKeepAliveTimeoutValue, - kMaxHeadersSize, - kKeepAliveMaxTimeout, - kKeepAliveTimeoutThreshold, - kHeadersTimeout, - kBodyTimeout, - kStrictContentLength, - kConnector, - kMaxRedirections, - kMaxRequests, - kCounter, - kClose, - kDestroy, - kDispatch, - kInterceptors, - kLocalAddress, - kMaxResponseSize, - kHTTPConnVersion, - // HTTP2 - kHost, - kHTTP2Session, - kHTTP2SessionState, - kHTTP2BuildRequest, - kHTTP2CopyHeaders, - kHTTP1BuildRequest -} = __nccwpck_require__(6443) + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; -/** @type {import('http2')} */ -let http2 -try { - http2 = __nccwpck_require__(5675) -} catch { - // @ts-ignore - http2 = { constants: {} } + // if regexp starts with '/' it can have modifiers and must be properly closed + // `/foo/gim` - modifiers tail can be maximum 3 chars + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + + if (modifiers.length > 3) return false; + // if expression starts with /, is should be properly terminated + if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; + } + + return true; } -const { - constants: { - HTTP2_HEADER_AUTHORITY, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_CONTENT_LENGTH, - HTTP2_HEADER_EXPECT, - HTTP2_HEADER_STATUS +function constructJavascriptRegExp(data) { + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; + + // `/foo/gim` - tail can be maximum 4 chars + if (regexp[0] === '/') { + if (tail) modifiers = tail[1]; + regexp = regexp.slice(1, regexp.length - modifiers.length - 1); } -} = http2 -// Experimental -let h2ExperimentalWarned = false + return new RegExp(regexp, modifiers); +} -const FastBuffer = Buffer[Symbol.species] +function representJavascriptRegExp(object /*, style*/) { + var result = '/' + object.source + '/'; -const kClosedResolve = Symbol('kClosedResolve') + if (object.global) result += 'g'; + if (object.multiline) result += 'm'; + if (object.ignoreCase) result += 'i'; -const channels = {} + return result; +} -try { - const diagnosticsChannel = __nccwpck_require__(1637) - channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders') - channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect') - channels.connectError = diagnosticsChannel.channel('undici:client:connectError') - channels.connected = diagnosticsChannel.channel('undici:client:connected') -} catch { - channels.sendHeaders = { hasSubscribers: false } - channels.beforeConnect = { hasSubscribers: false } - channels.connectError = { hasSubscribers: false } - channels.connected = { hasSubscribers: false } +function isRegExp(object) { + return Object.prototype.toString.call(object) === '[object RegExp]'; } -/** - * @type {import('../types/client').default} - */ -class Client extends DispatcherBase { - /** - * - * @param {string|URL} url - * @param {import('../types/client').Client.Options} options - */ - constructor (url, { - interceptors, - maxHeaderSize, - headersTimeout, - socketTimeout, - requestTimeout, - connectTimeout, - bodyTimeout, - idleTimeout, - keepAlive, - keepAliveTimeout, - maxKeepAliveTimeout, - keepAliveMaxTimeout, - keepAliveTimeoutThreshold, - socketPath, - pipelining, - tls, - strictContentLength, - maxCachedSessions, - maxRedirections, - connect, - maxRequestsPerClient, - localAddress, - maxResponseSize, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - // h2 - allowH2, - maxConcurrentStreams - } = {}) { - super() +module.exports = new Type('tag:yaml.org,2002:js/regexp', { + kind: 'scalar', + resolve: resolveJavascriptRegExp, + construct: constructJavascriptRegExp, + predicate: isRegExp, + represent: representJavascriptRegExp +}); - if (keepAlive !== undefined) { - throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') - } - if (socketTimeout !== undefined) { - throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') - } +/***/ }), - if (requestTimeout !== undefined) { - throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') - } +/***/ 49178: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (idleTimeout !== undefined) { - throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') - } +"use strict"; - if (maxKeepAliveTimeout !== undefined) { - throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') - } - if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { - throw new InvalidArgumentError('invalid maxHeaderSize') - } +var Type = __nccwpck_require__(50323); - if (socketPath != null && typeof socketPath !== 'string') { - throw new InvalidArgumentError('invalid socketPath') - } +function resolveJavascriptUndefined() { + return true; +} - if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { - throw new InvalidArgumentError('invalid connectTimeout') - } +function constructJavascriptUndefined() { + /*eslint-disable no-undefined*/ + return undefined; +} - if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { - throw new InvalidArgumentError('invalid keepAliveTimeout') - } +function representJavascriptUndefined() { + return ''; +} - if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { - throw new InvalidArgumentError('invalid keepAliveMaxTimeout') - } +function isUndefined(object) { + return typeof object === 'undefined'; +} - if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { - throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') - } +module.exports = new Type('tag:yaml.org,2002:js/undefined', { + kind: 'scalar', + resolve: resolveJavascriptUndefined, + construct: constructJavascriptUndefined, + predicate: isUndefined, + represent: representJavascriptUndefined +}); - if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') - } - if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') - } +/***/ }), - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object') - } +/***/ 54278: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError('maxRedirections must be a positive number') - } +"use strict"; - if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { - throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') - } - if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { - throw new InvalidArgumentError('localAddress must be valid string IP address') - } +var Type = __nccwpck_require__(50323); - if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { - throw new InvalidArgumentError('maxResponseSize must be a positive number') - } +module.exports = new Type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); - if ( - autoSelectFamilyAttemptTimeout != null && - (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) - ) { - throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number') - } - // h2 - if (allowH2 != null && typeof allowH2 !== 'boolean') { - throw new InvalidArgumentError('allowH2 must be a valid boolean value') - } +/***/ }), - if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { - throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0') - } +/***/ 70112: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (typeof connect !== 'function') { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), - ...connect - }) - } +"use strict"; - this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) - ? interceptors.Client - : [createRedirectInterceptor({ maxRedirections })] - this[kUrl] = util.parseOrigin(url) - this[kConnector] = connect - this[kSocket] = null - this[kPipelining] = pipelining != null ? pipelining : 1 - this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize - this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout - this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout - this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold - this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout] - this[kServerName] = null - this[kLocalAddress] = localAddress != null ? localAddress : null - this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming - this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming - this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n` - this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3 - this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3 - this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength - this[kMaxRedirections] = maxRedirections - this[kMaxRequests] = maxRequestsPerClient - this[kClosedResolve] = null - this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1 - this[kHTTPConnVersion] = 'h1' - // HTTP/2 - this[kHTTP2Session] = null - this[kHTTP2SessionState] = !allowH2 - ? null - : { - // streams: null, // Fixed queue of streams - For future support of `push` - openStreams: 0, // Keep track of them to decide wether or not unref the session - maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server - } - this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}` +var Type = __nccwpck_require__(50323); - // kQueue is built up of 3 sections separated by - // the kRunningIdx and kPendingIdx indices. - // | complete | running | pending | - // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length - // kRunningIdx points to the first running element. - // kPendingIdx points to the first pending element. - // This implements a fast queue with an amortized - // time of O(1). +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} - this[kQueue] = [] - this[kRunningIdx] = 0 - this[kPendingIdx] = 0 - } +module.exports = new Type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); - get pipelining () { - return this[kPipelining] - } - set pipelining (value) { - this[kPipelining] = value - resume(this, true) - } +/***/ }), - get [kPending] () { - return this[kQueue].length - this[kPendingIdx] - } +/***/ 37767: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - get [kRunning] () { - return this[kPendingIdx] - this[kRunningIdx] - } +"use strict"; - get [kSize] () { - return this[kQueue].length - this[kRunningIdx] - } - get [kConnected] () { - return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed - } +var Type = __nccwpck_require__(50323); - get [kBusy] () { - const socket = this[kSocket] - return ( - (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || - (this[kSize] >= (this[kPipelining] || 1)) || - this[kPending] > 0 - ) - } +function resolveYamlNull(data) { + if (data === null) return true; - /* istanbul ignore: only used for test */ - [kConnect] (cb) { - connect(this) - this.once('connect', cb) - } + var max = data.length; - [kDispatch] (opts, handler) { - const origin = opts.origin || this[kUrl].origin + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} - const request = this[kHTTPConnVersion] === 'h2' - ? Request[kHTTP2BuildRequest](origin, opts, handler) - : Request[kHTTP1BuildRequest](origin, opts, handler) +function constructYamlNull() { + return null; +} - this[kQueue].push(request) - if (this[kResuming]) { - // Do nothing. - } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { - // Wait a tick in case stream/iterator is ended in the same tick. - this[kResuming] = 1 - process.nextTick(resume, this) - } else { - resume(this, true) - } +function isNull(object) { + return object === null; +} - if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { - this[kNeedDrain] = 2 - } +module.exports = new Type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; } + }, + defaultStyle: 'lowercase' +}); - return this[kNeedDrain] < 2 - } - async [kClose] () { - // TODO: for H2 we need to gracefully flush the remaining enqueued - // request and close each stream. - return new Promise((resolve) => { - if (!this[kSize]) { - resolve(null) - } else { - this[kClosedResolve] = resolve - } - }) - } +/***/ }), - async [kDestroy] (err) { - return new Promise((resolve) => { - const requests = this[kQueue].splice(this[kPendingIdx]) - for (let i = 0; i < requests.length; i++) { - const request = requests[i] - errorRequest(this, request, err) - } +/***/ 47395: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const callback = () => { - if (this[kClosedResolve]) { - // TODO (fix): Should we error here with ClientDestroyedError? - this[kClosedResolve]() - this[kClosedResolve] = null - } - resolve() - } +"use strict"; - if (this[kHTTP2Session] != null) { - util.destroy(this[kHTTP2Session], err) - this[kHTTP2Session] = null - this[kHTTP2SessionState] = null - } - if (!this[kSocket]) { - queueMicrotask(callback) - } else { - util.destroy(this[kSocket].on('close', callback), err) - } +var Type = __nccwpck_require__(50323); - resume(this) - }) - } -} +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; -function onHttp2SessionError (err) { - assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') +function resolveYamlOmap(data) { + if (data === null) return true; - this[kSocket][kError] = err + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; - onError(this[kClient], err) -} + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; -function onHttp2FrameError (type, code, id) { - const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + if (_toString.call(pair) !== '[object Object]') return false; - if (id === 0) { - this[kSocket][kError] = err - onError(this[kClient], err) + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; } + + return true; } -function onHttp2SessionEnd () { - util.destroy(this, new SocketError('other side closed')) - util.destroy(this[kSocket], new SocketError('other side closed')) +function constructYamlOmap(data) { + return data !== null ? data : []; } -function onHTTP2GoAway (code) { - const client = this[kClient] - const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`) - client[kSocket] = null - client[kHTTP2Session] = null +module.exports = new Type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); - if (client.destroyed) { - assert(this[kPending] === 0) - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]) - for (let i = 0; i < requests.length; i++) { - const request = requests[i] - errorRequest(this, request, err) - } - } else if (client[kRunning] > 0) { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]] - client[kQueue][client[kRunningIdx]++] = null +/***/ }), - errorRequest(client, request, err) - } +/***/ 59117: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - client[kPendingIdx] = client[kRunningIdx] +"use strict"; - assert(client[kRunning] === 0) - client.emit('disconnect', - client[kUrl], - [client], - err - ) +var Type = __nccwpck_require__(50323); - resume(client) -} +var _toString = Object.prototype.toString; -const constants = __nccwpck_require__(2824) -const createRedirectInterceptor = __nccwpck_require__(4415) -const EMPTY_BUF = Buffer.alloc(0) +function resolveYamlPairs(data) { + if (data === null) return true; -async function lazyllhttp () { - const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(3870) : undefined + var index, length, pair, keys, result, + object = data; - let mod - try { - mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(3434), 'base64')) - } catch (e) { - /* istanbul ignore next */ + result = new Array(object.length); - // We could check if the error was caused by the simd option not - // being enabled, but the occurring of this other error - // * https://github.com/emscripten-core/emscripten/issues/11495 - // got me to remove that check to avoid breaking Node 12. - mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || __nccwpck_require__(3870), 'base64')) - } + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; - return await WebAssembly.instantiate(mod, { - env: { - /* eslint-disable camelcase */ + if (_toString.call(pair) !== '[object Object]') return false; - wasm_on_url: (p, at, len) => { - /* istanbul ignore next */ - return 0 - }, - wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) - const start = at - currentBufferPtr + currentBufferRef.byteOffset - return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 - }, - wasm_on_message_begin: (p) => { - assert.strictEqual(currentParser.ptr, p) - return currentParser.onMessageBegin() || 0 - }, - wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) - const start = at - currentBufferPtr + currentBufferRef.byteOffset - return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 - }, - wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) - const start = at - currentBufferPtr + currentBufferRef.byteOffset - return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 - }, - wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p) - return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 - }, - wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p) - const start = at - currentBufferPtr + currentBufferRef.byteOffset - return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 - }, - wasm_on_message_complete: (p) => { - assert.strictEqual(currentParser.ptr, p) - return currentParser.onMessageComplete() || 0 - } + keys = Object.keys(pair); - /* eslint-enable camelcase */ - } - }) -} + if (keys.length !== 1) return false; -let llhttpInstance = null -let llhttpPromise = lazyllhttp() -llhttpPromise.catch() + result[index] = [ keys[0], pair[keys[0]] ]; + } -let currentParser = null -let currentBufferRef = null -let currentBufferSize = 0 -let currentBufferPtr = null + return true; +} -const TIMEOUT_HEADERS = 1 -const TIMEOUT_BODY = 2 -const TIMEOUT_IDLE = 3 +function constructYamlPairs(data) { + if (data === null) return []; -class Parser { - constructor (client, socket, { exports }) { - assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0) + var index, length, pair, keys, result, + object = data; - this.llhttp = exports - this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE) - this.client = client - this.socket = socket - this.timeout = null - this.timeoutValue = null - this.timeoutType = null - this.statusCode = null - this.statusText = '' - this.upgrade = false - this.headers = [] - this.headersSize = 0 - this.headersMaxSize = client[kMaxHeadersSize] - this.shouldKeepAlive = false - this.paused = false - this.resume = this.resume.bind(this) + result = new Array(object.length); - this.bytesRead = 0 + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; - this.keepAlive = '' - this.contentLength = '' - this.connection = '' - this.maxResponseSize = client[kMaxResponseSize] - } + keys = Object.keys(pair); - setTimeout (value, type) { - this.timeoutType = type - if (value !== this.timeoutValue) { - timers.clearTimeout(this.timeout) - if (value) { - this.timeout = timers.setTimeout(onParserTimeout, value, this) - // istanbul ignore else: only for jest - if (this.timeout.unref) { - this.timeout.unref() - } - } else { - this.timeout = null - } - this.timeoutValue = value - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh() - } - } + result[index] = [ keys[0], pair[keys[0]] ]; } - resume () { - if (this.socket.destroyed || !this.paused) { - return - } + return result; +} - assert(this.ptr != null) - assert(currentParser == null) +module.exports = new Type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); - this.llhttp.llhttp_resume(this.ptr) - assert(this.timeoutType === TIMEOUT_BODY) - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh() - } - } +/***/ }), - this.paused = false - this.execute(this.socket.read() || EMPTY_BUF) // Flush parser. - this.readMore() - } +/***/ 12863: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - readMore () { - while (!this.paused && this.ptr) { - const chunk = this.socket.read() - if (chunk === null) { - break - } - this.execute(chunk) - } - } +"use strict"; - execute (data) { - assert(this.ptr != null) - assert(currentParser == null) - assert(!this.paused) - const { socket, llhttp } = this +var Type = __nccwpck_require__(50323); - if (data.length > currentBufferSize) { - if (currentBufferPtr) { - llhttp.free(currentBufferPtr) - } - currentBufferSize = Math.ceil(data.length / 4096) * 4096 - currentBufferPtr = llhttp.malloc(currentBufferSize) - } +module.exports = new Type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } +}); - new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data) - // Call `execute` on the wasm parser. - // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, - // and finally the length of bytes to parse. - // The return value is an error code or `constants.ERROR.OK`. - try { - let ret +/***/ }), - try { - currentBufferRef = data - currentParser = this - ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length) - /* eslint-disable-next-line no-useless-catch */ - } catch (err) { - /* istanbul ignore next: difficult to make a test case for */ - throw err - } finally { - currentParser = null - currentBufferRef = null - } +/***/ 17812: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr +"use strict"; - if (ret === constants.ERROR.PAUSED_UPGRADE) { - this.onUpgrade(data.slice(offset)) - } else if (ret === constants.ERROR.PAUSED) { - this.paused = true - socket.unshift(data.slice(offset)) - } else if (ret !== constants.ERROR.OK) { - const ptr = llhttp.llhttp_get_error_reason(this.ptr) - let message = '' - /* istanbul ignore else: difficult to make a test case for */ - if (ptr) { - const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0) - message = - 'Response does not match the HTTP/1.1 protocol (' + - Buffer.from(llhttp.memory.buffer, ptr, len).toString() + - ')' - } - throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) - } - } catch (err) { - util.destroy(socket, err) - } - } - destroy () { - assert(this.ptr != null) - assert(currentParser == null) +var Type = __nccwpck_require__(50323); - this.llhttp.llhttp_free(this.ptr) - this.ptr = null +var _hasOwnProperty = Object.prototype.hasOwnProperty; - timers.clearTimeout(this.timeout) - this.timeout = null - this.timeoutValue = null - this.timeoutType = null +function resolveYamlSet(data) { + if (data === null) return true; - this.paused = false - } + var key, object = data; - onStatus (buf) { - this.statusText = buf.toString() + for (key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } } - onMessageBegin () { - const { socket, client } = this + return true; +} - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1 - } +function constructYamlSet(data) { + return data !== null ? data : {}; +} - const request = client[kQueue][client[kRunningIdx]] - if (!request) { - return -1 - } - } +module.exports = new Type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); - onHeaderField (buf) { - const len = this.headers.length - if ((len & 1) === 0) { - this.headers.push(buf) - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) - } +/***/ }), - this.trackHeader(buf.length) - } +/***/ 94107: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - onHeaderValue (buf) { - let len = this.headers.length +"use strict"; - if ((len & 1) === 1) { - this.headers.push(buf) - len += 1 - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) - } - const key = this.headers[len - 2] - if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { - this.keepAlive += buf.toString() - } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { - this.connection += buf.toString() - } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { - this.contentLength += buf.toString() - } +var Type = __nccwpck_require__(50323); - this.trackHeader(buf.length) - } +module.exports = new Type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); - trackHeader (len) { - this.headersSize += len - if (this.headersSize >= this.headersMaxSize) { - util.destroy(this.socket, new HeadersOverflowError()) - } - } - onUpgrade (head) { - const { upgrade, client, socket, headers, statusCode } = this +/***/ }), - assert(upgrade) +/***/ 37044: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const request = client[kQueue][client[kRunningIdx]] - assert(request) +"use strict"; - assert(!socket.destroyed) - assert(socket === client[kSocket]) - assert(!this.paused) - assert(request.upgrade || request.method === 'CONNECT') - this.statusCode = null - this.statusText = '' - this.shouldKeepAlive = null +var Type = __nccwpck_require__(50323); - assert(this.headers.length % 2 === 0) - this.headers = [] - this.headersSize = 0 +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day - socket.unshift(head) +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute - socket[kParser].destroy() - socket[kParser] = null +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} - socket[kClient] = null - socket[kError] = null - socket - .removeListener('error', onSocketError) - .removeListener('readable', onSocketReadable) - .removeListener('end', onSocketEnd) - .removeListener('close', onSocketClose) +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; - client[kSocket] = null - client[kQueue][client[kRunningIdx]++] = null - client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')) + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); - try { - request.onUpgrade(statusCode, headers, socket) - } catch (err) { - util.destroy(socket, err) - } + if (match === null) throw new Error('Date resolve error'); - resume(client) - } + // match: [1] year [2] month [3] day - onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { - const { client, socket, headers, statusText } = this + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1 - } + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } - const request = client[kQueue][client[kRunningIdx]] + // match: [4] hour [5] minute [6] second [7] fraction - /* istanbul ignore next: difficult to make a test case for */ - if (!request) { - return -1 + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; } + fraction = +fraction; + } - assert(!this.upgrade) - assert(this.statusCode < 200) + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute - if (statusCode === 100) { - util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) - return -1 - } + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } - /* this can only happen if server is misbehaving */ - if (upgrade && !request.upgrade) { - util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) - return -1 - } + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS) + if (delta) date.setTime(date.getTime() - delta); - this.statusCode = statusCode - this.shouldKeepAlive = ( - shouldKeepAlive || - // Override llhttp value which does not allow keepAlive for HEAD. - (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive') - ) + return date; +} - if (this.statusCode >= 200) { - const bodyTimeout = request.bodyTimeout != null - ? request.bodyTimeout - : client[kBodyTimeout] - this.setTimeout(bodyTimeout, TIMEOUT_BODY) - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh() - } - } +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} - if (request.method === 'CONNECT') { - assert(client[kRunning] === 1) - this.upgrade = true - return 2 - } +module.exports = new Type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); - if (upgrade) { - assert(client[kRunning] === 1) - this.upgrade = true - return 2 - } - assert(this.headers.length % 2 === 0) - this.headers = [] - this.headersSize = 0 +/***/ }), - if (this.shouldKeepAlive && client[kPipelining]) { - const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null +/***/ 59376: +/***/ ((module) => { - if (keepAliveTimeout != null) { - const timeout = Math.min( - keepAliveTimeout - client[kKeepAliveTimeoutThreshold], - client[kKeepAliveMaxTimeout] - ) - if (timeout <= 0) { - socket[kReset] = true - } else { - client[kKeepAliveTimeoutValue] = timeout - } - } else { - client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout] - } - } else { - // Stop more requests from being dispatched. - socket[kReset] = true - } +"use strict"; - const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false - if (request.aborted) { - return -1 - } +const object = {}; +const hasOwnProperty = object.hasOwnProperty; +const forOwn = (object, callback) => { + for (const key in object) { + if (hasOwnProperty.call(object, key)) { + callback(key, object[key]); + } + } +}; - if (request.method === 'HEAD') { - return 1 - } +const extend = (destination, source) => { + if (!source) { + return destination; + } + forOwn(source, (key, value) => { + destination[key] = value; + }); + return destination; +}; - if (statusCode < 200) { - return 1 - } +const forEach = (array, callback) => { + const length = array.length; + let index = -1; + while (++index < length) { + callback(array[index]); + } +}; - if (socket[kBlocking]) { - socket[kBlocking] = false - resume(client) - } +const fourHexEscape = (hex) => { + return '\\u' + ('0000' + hex).slice(-4); +} - return pause ? constants.ERROR.PAUSED : 0 - } +const hexadecimal = (code, lowercase) => { + let hexadecimal = code.toString(16); + if (lowercase) return hexadecimal; + return hexadecimal.toUpperCase(); +}; - onBody (buf) { - const { client, socket, statusCode, maxResponseSize } = this +const toString = object.toString; +const isArray = Array.isArray; +const isBuffer = (value) => { + return typeof Buffer === 'function' && Buffer.isBuffer(value); +}; +const isObject = (value) => { + // This is a very simple check, but it’s good enough for what we need. + return toString.call(value) == '[object Object]'; +}; +const isString = (value) => { + return typeof value == 'string' || + toString.call(value) == '[object String]'; +}; +const isNumber = (value) => { + return typeof value == 'number' || + toString.call(value) == '[object Number]'; +}; +const isBigInt = (value) => { + return typeof value == 'bigint'; +}; +const isFunction = (value) => { + return typeof value == 'function'; +}; +const isMap = (value) => { + return toString.call(value) == '[object Map]'; +}; +const isSet = (value) => { + return toString.call(value) == '[object Set]'; +}; - if (socket.destroyed) { - return -1 - } +/*--------------------------------------------------------------------------*/ + +// https://mathiasbynens.be/notes/javascript-escapes#single +const singleEscapes = { + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t' + // `\v` is omitted intentionally, because in IE < 9, '\v' == 'v'. + // '\v': '\\x0B' +}; +const regexSingleEscape = /[\\\b\f\n\r\t]/; + +const regexDigit = /[0-9]/; +const regexWhitespace = /[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/; + +const escapeEverythingRegex = /([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^]/g; +const escapeNonAsciiRegex = /([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^ !#-&\(-\[\]-_a-~]/g; + +const jsesc = (argument, options) => { + const increaseIndentation = () => { + oldIndent = indent; + ++options.indentLevel; + indent = options.indent.repeat(options.indentLevel) + }; + // Handle options + const defaults = { + 'escapeEverything': false, + 'minimal': false, + 'isScriptContext': false, + 'quotes': 'single', + 'wrap': false, + 'es6': false, + 'json': false, + 'compact': true, + 'lowercaseHex': false, + 'numbers': 'decimal', + 'indent': '\t', + 'indentLevel': 0, + '__inline1__': false, + '__inline2__': false + }; + const json = options && options.json; + if (json) { + defaults.quotes = 'double'; + defaults.wrap = true; + } + options = extend(defaults, options); + if ( + options.quotes != 'single' && + options.quotes != 'double' && + options.quotes != 'backtick' + ) { + options.quotes = 'single'; + } + const quote = options.quotes == 'double' ? + '"' : + (options.quotes == 'backtick' ? + '`' : + '\'' + ); + const compact = options.compact; + const lowercaseHex = options.lowercaseHex; + let indent = options.indent.repeat(options.indentLevel); + let oldIndent = ''; + const inline1 = options.__inline1__; + const inline2 = options.__inline2__; + const newLine = compact ? '' : '\n'; + let result; + let isEmpty = true; + const useBinNumbers = options.numbers == 'binary'; + const useOctNumbers = options.numbers == 'octal'; + const useDecNumbers = options.numbers == 'decimal'; + const useHexNumbers = options.numbers == 'hexadecimal'; + + if (json && argument && isFunction(argument.toJSON)) { + argument = argument.toJSON(); + } - const request = client[kQueue][client[kRunningIdx]] - assert(request) + if (!isString(argument)) { + if (isMap(argument)) { + if (argument.size == 0) { + return 'new Map()'; + } + if (!compact) { + options.__inline1__ = true; + options.__inline2__ = false; + } + return 'new Map(' + jsesc(Array.from(argument), options) + ')'; + } + if (isSet(argument)) { + if (argument.size == 0) { + return 'new Set()'; + } + return 'new Set(' + jsesc(Array.from(argument), options) + ')'; + } + if (isBuffer(argument)) { + if (argument.length == 0) { + return 'Buffer.from([])'; + } + return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')'; + } + if (isArray(argument)) { + result = []; + options.wrap = true; + if (inline1) { + options.__inline1__ = false; + options.__inline2__ = true; + } + if (!inline2) { + increaseIndentation(); + } + forEach(argument, (value) => { + isEmpty = false; + if (inline2) { + options.__inline2__ = false; + } + result.push( + (compact || inline2 ? '' : indent) + + jsesc(value, options) + ); + }); + if (isEmpty) { + return '[]'; + } + if (inline2) { + return '[' + result.join(', ') + ']'; + } + return '[' + newLine + result.join(',' + newLine) + newLine + + (compact ? '' : oldIndent) + ']'; + } else if (isNumber(argument) || isBigInt(argument)) { + if (json) { + // Some number values (e.g. `Infinity`) cannot be represented in JSON. + // `BigInt` values less than `-Number.MAX_VALUE` or greater than + // `Number.MAX_VALUE` cannot be represented in JSON so they will become + // `-Infinity` or `Infinity`, respectively, and then become `null` when + // stringified. + return JSON.stringify(Number(argument)); + } - assert.strictEqual(this.timeoutType, TIMEOUT_BODY) - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh() + let result; + if (useDecNumbers) { + result = String(argument); + } else if (useHexNumbers) { + let hexadecimal = argument.toString(16); + if (!lowercaseHex) { + hexadecimal = hexadecimal.toUpperCase(); + } + result = '0x' + hexadecimal; + } else if (useBinNumbers) { + result = '0b' + argument.toString(2); + } else if (useOctNumbers) { + result = '0o' + argument.toString(8); + } + + if (isBigInt(argument)) { + return result + 'n'; } - } + return result; + } else if (isBigInt(argument)) { + if (json) { + // `BigInt` values less than `-Number.MAX_VALUE` or greater than + // `Number.MAX_VALUE` will become `-Infinity` or `Infinity`, + // respectively, and cannot be represented in JSON. + return JSON.stringify(Number(argument)); + } + return argument + 'n'; + } else if (!isObject(argument)) { + if (json) { + // For some values (e.g. `undefined`, `function` objects), + // `JSON.stringify(value)` returns `undefined` (which isn’t valid + // JSON) instead of `'null'`. + return JSON.stringify(argument) || 'null'; + } + return String(argument); + } else { // it’s an object + result = []; + options.wrap = true; + increaseIndentation(); + forOwn(argument, (key, value) => { + isEmpty = false; + result.push( + (compact ? '' : indent) + + jsesc(key, options) + ':' + + (compact ? '' : ' ') + + jsesc(value, options) + ); + }); + if (isEmpty) { + return '{}'; + } + return '{' + newLine + result.join(',' + newLine) + newLine + + (compact ? '' : oldIndent) + '}'; + } + } - assert(statusCode >= 200) + const regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex; + result = argument.replace(regex, (char, pair, lone, quoteChar, index, string) => { + if (pair) { + if (options.minimal) return pair; + const first = pair.charCodeAt(0); + const second = pair.charCodeAt(1); + if (options.es6) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + const codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + const hex = hexadecimal(codePoint, lowercaseHex); + return '\\u{' + hex + '}'; + } + return fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex)); + } - if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { - util.destroy(socket, new ResponseExceededMaxSizeError()) - return -1 - } + if (lone) { + return fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex)); + } - this.bytesRead += buf.length + if ( + char == '\0' && + !json && + !regexDigit.test(string.charAt(index + 1)) + ) { + return '\\0'; + } - if (request.onData(buf) === false) { - return constants.ERROR.PAUSED - } - } + if (quoteChar) { + if (quoteChar == quote || options.escapeEverything) { + return '\\' + quoteChar; + } + return quoteChar; + } - onMessageComplete () { - const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this + if (regexSingleEscape.test(char)) { + // no need for a `hasOwnProperty` check here + return singleEscapes[char]; + } - if (socket.destroyed && (!statusCode || shouldKeepAlive)) { - return -1 - } + if (options.minimal && !regexWhitespace.test(char)) { + return char; + } - if (upgrade) { - return - } + const hex = hexadecimal(char.charCodeAt(0), lowercaseHex); + if (json || hex.length > 2) { + return fourHexEscape(hex); + } - const request = client[kQueue][client[kRunningIdx]] - assert(request) + return '\\x' + ('00' + hex).slice(-2); + }); - assert(statusCode >= 100) + if (quote == '`') { + result = result.replace(/\$\{/g, '\\${'); + } + if (options.isScriptContext) { + // https://mathiasbynens.be/notes/etago + result = result + .replace(/<\/(script|style)/gi, '<\\/$1') + .replace(/<!--/g, json ? '\\u003C!--' : '\\x3C!--'); + } + if (options.wrap) { + result = quote + result + quote; + } + return result; +}; - this.statusCode = null - this.statusText = '' - this.bytesRead = 0 - this.contentLength = '' - this.keepAlive = '' - this.connection = '' +jsesc.version = '3.0.2'; - assert(this.headers.length % 2 === 0) - this.headers = [] - this.headersSize = 0 +module.exports = jsesc; - if (statusCode < 200) { - return - } - /* istanbul ignore next: should be handled by llhttp? */ - if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { - util.destroy(socket, new ResponseContentLengthMismatchError()) - return -1 - } +/***/ }), - request.onComplete(headers) +/***/ 84841: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - client[kQueue][client[kRunningIdx]++] = null +const parse = __nccwpck_require__(55438) +const stringify = __nccwpck_require__(91568) - if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0) - // Response completed before request. - util.destroy(socket, new InformationalError('reset')) - return constants.ERROR.PAUSED - } else if (!shouldKeepAlive) { - util.destroy(socket, new InformationalError('reset')) - return constants.ERROR.PAUSED - } else if (socket[kReset] && client[kRunning] === 0) { - // Destroy socket once all requests have completed. - // The request at the tail of the pipeline is the one - // that requested reset and no further requests should - // have been queued since then. - util.destroy(socket, new InformationalError('reset')) - return constants.ERROR.PAUSED - } else if (client[kPipelining] === 1) { - // We must wait a full event loop cycle to reuse this socket to make sure - // that non-spec compliant servers are not closing the connection even if they - // said they won't. - setImmediate(resume, client) - } else { - resume(client) - } - } +const JSON5 = { + parse, + stringify, } -function onParserTimeout (parser) { - const { socket, timeoutType, client } = parser +module.exports = JSON5 - /* istanbul ignore else */ - if (timeoutType === TIMEOUT_HEADERS) { - if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { - assert(!parser.paused, 'cannot be paused while waiting for headers') - util.destroy(socket, new HeadersTimeoutError()) - } - } else if (timeoutType === TIMEOUT_BODY) { - if (!parser.paused) { - util.destroy(socket, new BodyTimeoutError()) - } - } else if (timeoutType === TIMEOUT_IDLE) { - assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]) - util.destroy(socket, new InformationalError('socket idle timeout')) - } -} -function onSocketReadable () { - const { [kParser]: parser } = this - if (parser) { - parser.readMore() - } -} +/***/ }), -function onSocketError (err) { - const { [kClient]: client, [kParser]: parser } = this +/***/ 55438: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') +const util = __nccwpck_require__(37393) + +let source +let parseState +let stack +let pos +let line +let column +let token +let key +let root + +module.exports = function parse (text, reviver) { + source = String(text) + parseState = 'start' + stack = [] + pos = 0 + line = 1 + column = 0 + token = undefined + key = undefined + root = undefined - if (client[kHTTPConnVersion] !== 'h2') { - // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded - // to the user. - if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so for as a valid response. - parser.onMessageComplete() - return - } - } + do { + token = lex() - this[kError] = err + // This code is unreachable. + // if (!parseStates[parseState]) { + // throw invalidParseState() + // } - onError(this[kClient], err) -} + parseStates[parseState]() + } while (token.type !== 'eof') -function onError (client, err) { - if ( - client[kRunning] === 0 && - err.code !== 'UND_ERR_INFO' && - err.code !== 'UND_ERR_SOCKET' - ) { - // Error is not caused by running request and not a recoverable - // socket error. + if (typeof reviver === 'function') { + return internalize({'': root}, '', reviver) + } - assert(client[kPendingIdx] === client[kRunningIdx]) + return root +} - const requests = client[kQueue].splice(client[kRunningIdx]) - for (let i = 0; i < requests.length; i++) { - const request = requests[i] - errorRequest(client, request, err) +function internalize (holder, name, reviver) { + const value = holder[name] + if (value != null && typeof value === 'object') { + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + const key = String(i) + const replacement = internalize(value, key, reviver) + if (replacement === undefined) { + delete value[key] + } else { + Object.defineProperty(value, key, { + value: replacement, + writable: true, + enumerable: true, + configurable: true, + }) + } + } + } else { + for (const key in value) { + const replacement = internalize(value, key, reviver) + if (replacement === undefined) { + delete value[key] + } else { + Object.defineProperty(value, key, { + value: replacement, + writable: true, + enumerable: true, + configurable: true, + }) + } + } + } } - assert(client[kSize] === 0) - } + + return reviver.call(holder, name, value) } -function onSocketEnd () { - const { [kParser]: parser, [kClient]: client } = this +let lexState +let buffer +let doubleQuote +let sign +let c - if (client[kHTTPConnVersion] !== 'h2') { - if (parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.onMessageComplete() - return +function lex () { + lexState = 'default' + buffer = '' + doubleQuote = false + sign = 1 + + for (;;) { + c = peek() + + // This code is unreachable. + // if (!lexStates[lexState]) { + // throw invalidLexState(lexState) + // } + + const token = lexStates[lexState]() + if (token) { + return token + } } - } +} - util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) +function peek () { + if (source[pos]) { + return String.fromCodePoint(source.codePointAt(pos)) + } } -function onSocketClose () { - const { [kClient]: client, [kParser]: parser } = this +function read () { + const c = peek() - if (client[kHTTPConnVersion] === 'h1' && parser) { - if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.onMessageComplete() + if (c === '\n') { + line++ + column = 0 + } else if (c) { + column += c.length + } else { + column++ } - this[kParser].destroy() - this[kParser] = null - } + if (c) { + pos += c.length + } - const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) + return c +} - client[kSocket] = null +const lexStates = { + default () { + switch (c) { + case '\t': + case '\v': + case '\f': + case ' ': + case '\u00A0': + case '\uFEFF': + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read() + return - if (client.destroyed) { - assert(client[kPending] === 0) + case '/': + read() + lexState = 'comment' + return - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]) - for (let i = 0; i < requests.length; i++) { - const request = requests[i] - errorRequest(client, request, err) - } - } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]] - client[kQueue][client[kRunningIdx]++] = null + case undefined: + read() + return newToken('eof') + } - errorRequest(client, request, err) - } + if (util.isSpaceSeparator(c)) { + read() + return + } - client[kPendingIdx] = client[kRunningIdx] + // This code is unreachable. + // if (!lexStates[parseState]) { + // throw invalidLexState(parseState) + // } - assert(client[kRunning] === 0) + return lexStates[parseState]() + }, - client.emit('disconnect', client[kUrl], [client], err) + comment () { + switch (c) { + case '*': + read() + lexState = 'multiLineComment' + return - resume(client) -} + case '/': + read() + lexState = 'singleLineComment' + return + } -async function connect (client) { - assert(!client[kConnecting]) - assert(!client[kSocket]) + throw invalidChar(read()) + }, - let { host, hostname, protocol, port } = client[kUrl] + multiLineComment () { + switch (c) { + case '*': + read() + lexState = 'multiLineCommentAsterisk' + return - // Resolve ipv6 - if (hostname[0] === '[') { - const idx = hostname.indexOf(']') + case undefined: + throw invalidChar(read()) + } - assert(idx !== -1) - const ip = hostname.substring(1, idx) + read() + }, - assert(net.isIP(ip)) - hostname = ip - } + multiLineCommentAsterisk () { + switch (c) { + case '*': + read() + return - client[kConnecting] = true + case '/': + read() + lexState = 'default' + return - if (channels.beforeConnect.hasSubscribers) { - channels.beforeConnect.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - connector: client[kConnector] - }) - } + case undefined: + throw invalidChar(read()) + } - try { - const socket = await new Promise((resolve, reject) => { - client[kConnector]({ - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, (err, socket) => { - if (err) { - reject(err) - } else { - resolve(socket) + read() + lexState = 'multiLineComment' + }, + + singleLineComment () { + switch (c) { + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read() + lexState = 'default' + return + + case undefined: + read() + return newToken('eof') } - }) - }) - if (client.destroyed) { - util.destroy(socket.on('error', () => {}), new ClientDestroyedError()) - return - } + read() + }, - client[kConnecting] = false + value () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + case 'n': + read() + literal('ull') + return newToken('null', null) + + case 't': + read() + literal('rue') + return newToken('boolean', true) + + case 'f': + read() + literal('alse') + return newToken('boolean', false) + + case '-': + case '+': + if (read() === '-') { + sign = -1 + } - assert(socket) + lexState = 'sign' + return - const isH2 = socket.alpnProtocol === 'h2' - if (isH2) { - if (!h2ExperimentalWarned) { - h2ExperimentalWarned = true - process.emitWarning('H2 support is experimental, expect them to change at any time.', { - code: 'UNDICI-H2' - }) - } + case '.': + buffer = read() + lexState = 'decimalPointLeading' + return - const session = http2.connect(client[kUrl], { - createConnection: () => socket, - peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams - }) + case '0': + buffer = read() + lexState = 'zero' + return - client[kHTTPConnVersion] = 'h2' - session[kClient] = client - session[kSocket] = socket - session.on('error', onHttp2SessionError) - session.on('frameError', onHttp2FrameError) - session.on('end', onHttp2SessionEnd) - session.on('goaway', onHTTP2GoAway) - session.on('close', onSocketClose) - session.unref() + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read() + lexState = 'decimalInteger' + return - client[kHTTP2Session] = session - socket[kHTTP2Session] = session - } else { - if (!llhttpInstance) { - llhttpInstance = await llhttpPromise - llhttpPromise = null - } + case 'I': + read() + literal('nfinity') + return newToken('numeric', Infinity) + + case 'N': + read() + literal('aN') + return newToken('numeric', NaN) + + case '"': + case "'": + doubleQuote = (read() === '"') + buffer = '' + lexState = 'string' + return + } - socket[kNoRef] = false - socket[kWriting] = false - socket[kReset] = false - socket[kBlocking] = false - socket[kParser] = new Parser(client, socket, llhttpInstance) - } + throw invalidChar(read()) + }, - socket[kCounter] = 0 - socket[kMaxRequests] = client[kMaxRequests] - socket[kClient] = client - socket[kError] = null + identifierNameStartEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } - socket - .on('error', onSocketError) - .on('readable', onSocketReadable) - .on('end', onSocketEnd) - .on('close', onSocketClose) + read() + const u = unicodeEscape() + switch (u) { + case '$': + case '_': + break - client[kSocket] = socket + default: + if (!util.isIdStartChar(u)) { + throw invalidIdentifier() + } - if (channels.connected.hasSubscribers) { - channels.connected.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - connector: client[kConnector], - socket - }) - } - client.emit('connect', client[kUrl], [client]) - } catch (err) { - if (client.destroyed) { - return - } + break + } - client[kConnecting] = false + buffer += u + lexState = 'identifierName' + }, - if (channels.connectError.hasSubscribers) { - channels.connectError.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress] - }, - connector: client[kConnector], - error: err - }) - } + identifierName () { + switch (c) { + case '$': + case '_': + case '\u200C': + case '\u200D': + buffer += read() + return - if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { - assert(client[kRunning] === 0) - while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { - const request = client[kQueue][client[kPendingIdx]++] - errorRequest(client, request, err) - } - } else { - onError(client, err) - } + case '\\': + read() + lexState = 'identifierNameEscape' + return + } - client.emit('connectionError', client[kUrl], [client], err) - } + if (util.isIdContinueChar(c)) { + buffer += read() + return + } - resume(client) -} + return newToken('identifier', buffer) + }, -function emitDrain (client) { - client[kNeedDrain] = 0 - client.emit('drain', client[kUrl], [client]) -} + identifierNameEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } -function resume (client, sync) { - if (client[kResuming] === 2) { - return - } + read() + const u = unicodeEscape() + switch (u) { + case '$': + case '_': + case '\u200C': + case '\u200D': + break - client[kResuming] = 2 + default: + if (!util.isIdContinueChar(u)) { + throw invalidIdentifier() + } - _resume(client, sync) - client[kResuming] = 0 + break + } - if (client[kRunningIdx] > 256) { - client[kQueue].splice(0, client[kRunningIdx]) - client[kPendingIdx] -= client[kRunningIdx] - client[kRunningIdx] = 0 - } -} + buffer += u + lexState = 'identifierName' + }, -function _resume (client, sync) { - while (true) { - if (client.destroyed) { - assert(client[kPending] === 0) - return - } + sign () { + switch (c) { + case '.': + buffer = read() + lexState = 'decimalPointLeading' + return - if (client[kClosedResolve] && !client[kSize]) { - client[kClosedResolve]() - client[kClosedResolve] = null - return - } + case '0': + buffer = read() + lexState = 'zero' + return - const socket = client[kSocket] + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read() + lexState = 'decimalInteger' + return - if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { - if (client[kSize] === 0) { - if (!socket[kNoRef] && socket.unref) { - socket.unref() - socket[kNoRef] = true - } - } else if (socket[kNoRef] && socket.ref) { - socket.ref() - socket[kNoRef] = false - } + case 'I': + read() + literal('nfinity') + return newToken('numeric', sign * Infinity) - if (client[kSize] === 0) { - if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { - socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE) - } - } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { - if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { - const request = client[kQueue][client[kRunningIdx]] - const headersTimeout = request.headersTimeout != null - ? request.headersTimeout - : client[kHeadersTimeout] - socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS) + case 'N': + read() + literal('aN') + return newToken('numeric', NaN) } - } - } - if (client[kBusy]) { - client[kNeedDrain] = 2 - } else if (client[kNeedDrain] === 2) { - if (sync) { - client[kNeedDrain] = 1 - process.nextTick(emitDrain, client) - } else { - emitDrain(client) - } - continue - } + throw invalidChar(read()) + }, - if (client[kPending] === 0) { - return - } + zero () { + switch (c) { + case '.': + buffer += read() + lexState = 'decimalPoint' + return - if (client[kRunning] >= (client[kPipelining] || 1)) { - return - } + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return - const request = client[kQueue][client[kPendingIdx]] + case 'x': + case 'X': + buffer += read() + lexState = 'hexadecimal' + return + } - if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { - if (client[kRunning] > 0) { - return - } + return newToken('numeric', sign * 0) + }, - client[kServerName] = request.servername + decimalInteger () { + switch (c) { + case '.': + buffer += read() + lexState = 'decimalPoint' + return - if (socket && socket.servername !== request.servername) { - util.destroy(socket, new InformationalError('servername changed')) - return - } - } + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + } - if (client[kConnecting]) { - return - } + if (util.isDigit(c)) { + buffer += read() + return + } - if (!socket && !client[kHTTP2Session]) { - connect(client) - return - } + return newToken('numeric', sign * Number(buffer)) + }, - if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { - return - } + decimalPointLeading () { + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalFraction' + return + } - if (client[kRunning] > 0 && !request.idempotent) { - // Non-idempotent request cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return - } + throw invalidChar(read()) + }, - if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { - // Don't dispatch an upgrade until all preceding requests have completed. - // A misbehaving server might upgrade the connection before all pipelined - // request has completed. - return - } + decimalPoint () { + switch (c) { + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + } - if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && - (util.isStream(request.body) || util.isAsyncIterable(request.body))) { - // Request with stream or iterator body can error while other requests - // are inflight and indirectly error those as well. - // Ensure this doesn't happen by waiting for inflight - // to complete before dispatching. + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalFraction' + return + } - // Request with stream or iterator body cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return - } + return newToken('numeric', sign * Number(buffer)) + }, - if (!request.aborted && write(client, request)) { - client[kPendingIdx]++ - } else { - client[kQueue].splice(client[kPendingIdx], 1) - } - } -} + decimalFraction () { + switch (c) { + case 'e': + case 'E': + buffer += read() + lexState = 'decimalExponent' + return + } -// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 -function shouldSendContentLength (method) { - return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' -} + if (util.isDigit(c)) { + buffer += read() + return + } -function write (client, request) { - if (client[kHTTPConnVersion] === 'h2') { - writeH2(client, client[kHTTP2Session], request) - return - } + return newToken('numeric', sign * Number(buffer)) + }, - const { body, method, path, host, upgrade, headers, blocking, reset } = request + decimalExponent () { + switch (c) { + case '+': + case '-': + buffer += read() + lexState = 'decimalExponentSign' + return + } - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalExponentInteger' + return + } - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. + throw invalidChar(read()) + }, - const expectsPayload = ( - method === 'PUT' || - method === 'POST' || - method === 'PATCH' - ) + decimalExponentSign () { + if (util.isDigit(c)) { + buffer += read() + lexState = 'decimalExponentInteger' + return + } - if (body && typeof body.read === 'function') { - // Try to read EOF in order to get length. - body.read(0) - } + throw invalidChar(read()) + }, - const bodyLength = util.bodyLength(body) + decimalExponentInteger () { + if (util.isDigit(c)) { + buffer += read() + return + } - let contentLength = bodyLength + return newToken('numeric', sign * Number(buffer)) + }, - if (contentLength === null) { - contentLength = request.contentLength - } + hexadecimal () { + if (util.isHexDigit(c)) { + buffer += read() + lexState = 'hexadecimalInteger' + return + } - if (contentLength === 0 && !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. + throw invalidChar(read()) + }, - contentLength = null - } + hexadecimalInteger () { + if (util.isHexDigit(c)) { + buffer += read() + return + } - // https://github.com/nodejs/undici/issues/2046 - // A user agent may send a Content-Length header with 0 value, this should be allowed. - if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()) - return false - } + return newToken('numeric', sign * Number(buffer)) + }, - process.emitWarning(new RequestContentLengthMismatchError()) - } + string () { + switch (c) { + case '\\': + read() + buffer += escape() + return - const socket = client[kSocket] + case '"': + if (doubleQuote) { + read() + return newToken('string', buffer) + } - try { - request.onConnect((err) => { - if (request.aborted || request.completed) { - return - } + buffer += read() + return - errorRequest(client, request, err || new RequestAbortedError()) + case "'": + if (!doubleQuote) { + read() + return newToken('string', buffer) + } - util.destroy(socket, new InformationalError('aborted')) - }) - } catch (err) { - errorRequest(client, request, err) - } + buffer += read() + return - if (request.aborted) { - return false - } + case '\n': + case '\r': + throw invalidChar(read()) - if (method === 'HEAD') { - // https://github.com/mcollina/undici/issues/258 - // Close after a HEAD request to interop with misbehaving servers - // that may send a body in the response. + case '\u2028': + case '\u2029': + separatorChar(c) + break - socket[kReset] = true - } + case undefined: + throw invalidChar(read()) + } - if (upgrade || method === 'CONNECT') { - // On CONNECT or upgrade, block pipeline from dispatching further - // requests on this connection. + buffer += read() + }, - socket[kReset] = true - } + start () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) - if (reset != null) { - socket[kReset] = reset - } + // This code is unreachable since the default lexState handles eof. + // case undefined: + // return newToken('eof') + } - if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { - socket[kReset] = true - } + lexState = 'value' + }, - if (blocking) { - socket[kBlocking] = true - } + beforePropertyName () { + switch (c) { + case '$': + case '_': + buffer = read() + lexState = 'identifierName' + return - let header = `${method} ${path} HTTP/1.1\r\n` + case '\\': + read() + lexState = 'identifierNameStartEscape' + return - if (typeof host === 'string') { - header += `host: ${host}\r\n` - } else { - header += client[kHostHeader] - } + case '}': + return newToken('punctuator', read()) - if (upgrade) { - header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n` - } else if (client[kPipelining] && !socket[kReset]) { - header += 'connection: keep-alive\r\n' - } else { - header += 'connection: close\r\n' - } + case '"': + case "'": + doubleQuote = (read() === '"') + lexState = 'string' + return + } - if (headers) { - header += headers - } + if (util.isIdStartChar(c)) { + buffer += read() + lexState = 'identifierName' + return + } - if (channels.sendHeaders.hasSubscribers) { - channels.sendHeaders.publish({ request, headers: header, socket }) - } + throw invalidChar(read()) + }, - /* istanbul ignore else: assertion */ - if (!body || bodyLength === 0) { - if (contentLength === 0) { - socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') - } else { - assert(contentLength === null, 'no body must not have content length') - socket.write(`${header}\r\n`, 'latin1') - } - request.onRequestSent() - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, 'buffer body must have content length') + afterPropertyName () { + if (c === ':') { + return newToken('punctuator', read()) + } - socket.cork() - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') - socket.write(body) - socket.uncork() - request.onBodySent(body) - request.onRequestSent() - if (!expectsPayload) { - socket[kReset] = true - } - } else if (util.isBlobLike(body)) { - if (typeof body.stream === 'function') { - writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }) - } else { - writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) - } - } else if (util.isStream(body)) { - writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) - } else if (util.isIterable(body)) { - writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) - } else { - assert(false) - } + throw invalidChar(read()) + }, - return true -} + beforePropertyValue () { + lexState = 'value' + }, -function writeH2 (client, session, request) { - const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request + afterPropertyValue () { + switch (c) { + case ',': + case '}': + return newToken('punctuator', read()) + } - let headers - if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()) - else headers = reqHeaders + throw invalidChar(read()) + }, - if (upgrade) { - errorRequest(client, request, new Error('Upgrade not supported for H2')) - return false - } + beforeArrayValue () { + if (c === ']') { + return newToken('punctuator', read()) + } - try { - // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? - request.onConnect((err) => { - if (request.aborted || request.completed) { - return - } - - errorRequest(client, request, err || new RequestAbortedError()) - }) - } catch (err) { - errorRequest(client, request, err) - } + lexState = 'value' + }, - if (request.aborted) { - return false - } + afterArrayValue () { + switch (c) { + case ',': + case ']': + return newToken('punctuator', read()) + } - /** @type {import('node:http2').ClientHttp2Stream} */ - let stream - const h2State = client[kHTTP2SessionState] + throw invalidChar(read()) + }, - headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost] - headers[HTTP2_HEADER_METHOD] = method + end () { + // This code is unreachable since it's handled by the default lexState. + // if (c === undefined) { + // read() + // return newToken('eof') + // } - if (method === 'CONNECT') { - session.ref() - // we are already connected, streams are pending, first request - // will create a new stream. We trigger a request to create the stream and wait until - // `ready` event is triggered - // We disabled endStream to allow the user to write to the stream - stream = session.request(headers, { endStream: false, signal }) + throw invalidChar(read()) + }, +} - if (stream.id && !stream.pending) { - request.onUpgrade(null, null, stream) - ++h2State.openStreams - } else { - stream.once('ready', () => { - request.onUpgrade(null, null, stream) - ++h2State.openStreams - }) +function newToken (type, value) { + return { + type, + value, + line, + column, } +} - stream.once('close', () => { - h2State.openStreams -= 1 - // TODO(HTTP/2): unref only if current streams count is 0 - if (h2State.openStreams === 0) session.unref() - }) +function literal (s) { + for (const c of s) { + const p = peek() - return true - } + if (p !== c) { + throw invalidChar(read()) + } - // https://tools.ietf.org/html/rfc7540#section-8.3 - // :path and :scheme headers must be omited when sending CONNECT + read() + } +} - headers[HTTP2_HEADER_PATH] = path - headers[HTTP2_HEADER_SCHEME] = 'https' +function escape () { + const c = peek() + switch (c) { + case 'b': + read() + return '\b' - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 + case 'f': + read() + return '\f' - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. + case 'n': + read() + return '\n' - const expectsPayload = ( - method === 'PUT' || - method === 'POST' || - method === 'PATCH' - ) + case 'r': + read() + return '\r' - if (body && typeof body.read === 'function') { - // Try to read EOF in order to get length. - body.read(0) - } + case 't': + read() + return '\t' - let contentLength = util.bodyLength(body) + case 'v': + read() + return '\v' - if (contentLength == null) { - contentLength = request.contentLength - } + case '0': + read() + if (util.isDigit(peek())) { + throw invalidChar(read()) + } - if (contentLength === 0 || !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. + return '\0' - contentLength = null - } + case 'x': + read() + return hexEscape() - // https://github.com/nodejs/undici/issues/2046 - // A user agent may send a Content-Length header with 0 value, this should be allowed. - if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()) - return false - } + case 'u': + read() + return unicodeEscape() - process.emitWarning(new RequestContentLengthMismatchError()) - } + case '\n': + case '\u2028': + case '\u2029': + read() + return '' - if (contentLength != null) { - assert(body, 'no body must not have content length') - headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}` - } + case '\r': + read() + if (peek() === '\n') { + read() + } - session.ref() + return '' - const shouldEndStream = method === 'GET' || method === 'HEAD' - if (expectContinue) { - headers[HTTP2_HEADER_EXPECT] = '100-continue' - stream = session.request(headers, { endStream: shouldEndStream, signal }) + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + throw invalidChar(read()) - stream.once('continue', writeBodyH2) - } else { - stream = session.request(headers, { - endStream: shouldEndStream, - signal - }) - writeBodyH2() - } + case undefined: + throw invalidChar(read()) + } - // Increment counter as we have new several streams open - ++h2State.openStreams + return read() +} - stream.once('response', headers => { - const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers +function hexEscape () { + let buffer = '' + let c = peek() - if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { - stream.pause() + if (!util.isHexDigit(c)) { + throw invalidChar(read()) } - }) - stream.once('end', () => { - request.onComplete([]) - }) + buffer += read() - stream.on('data', (chunk) => { - if (request.onData(chunk) === false) { - stream.pause() + c = peek() + if (!util.isHexDigit(c)) { + throw invalidChar(read()) } - }) - stream.once('close', () => { - h2State.openStreams -= 1 - // TODO(HTTP/2): unref only if current streams count is 0 - if (h2State.openStreams === 0) { - session.unref() - } - }) + buffer += read() - stream.once('error', function (err) { - if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { - h2State.streams -= 1 - util.destroy(stream, err) - } - }) + return String.fromCodePoint(parseInt(buffer, 16)) +} - stream.once('frameError', (type, code) => { - const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) - errorRequest(client, request, err) +function unicodeEscape () { + let buffer = '' + let count = 4 - if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { - h2State.streams -= 1 - util.destroy(stream, err) - } - }) + while (count-- > 0) { + const c = peek() + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } - // stream.on('aborted', () => { - // // TODO(HTTP/2): Support aborted - // }) + buffer += read() + } - // stream.on('timeout', () => { - // // TODO(HTTP/2): Support timeout - // }) + return String.fromCodePoint(parseInt(buffer, 16)) +} - // stream.on('push', headers => { - // // TODO(HTTP/2): Suppor push - // }) +const parseStates = { + start () { + if (token.type === 'eof') { + throw invalidEOF() + } - // stream.on('trailers', headers => { - // // TODO(HTTP/2): Support trailers - // }) + push() + }, - return true + beforePropertyName () { + switch (token.type) { + case 'identifier': + case 'string': + key = token.value + parseState = 'afterPropertyName' + return - function writeBodyH2 () { - /* istanbul ignore else: assertion */ - if (!body) { - request.onRequestSent() - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, 'buffer body must have content length') - stream.cork() - stream.write(body) - stream.uncork() - stream.end() - request.onBodySent(body) - request.onRequestSent() - } else if (util.isBlobLike(body)) { - if (typeof body.stream === 'function') { - writeIterable({ - client, - request, - contentLength, - h2stream: stream, - expectsPayload, - body: body.stream(), - socket: client[kSocket], - header: '' - }) - } else { - writeBlob({ - body, - client, - request, - contentLength, - expectsPayload, - h2stream: stream, - header: '', - socket: client[kSocket] - }) - } - } else if (util.isStream(body)) { - writeStream({ - body, - client, - request, - contentLength, - expectsPayload, - socket: client[kSocket], - h2stream: stream, - header: '' - }) - } else if (util.isIterable(body)) { - writeIterable({ - body, - client, - request, - contentLength, - expectsPayload, - header: '', - h2stream: stream, - socket: client[kSocket] - }) - } else { - assert(false) - } - } -} + case 'punctuator': + // This code is unreachable since it's handled by the lexState. + // if (token.value !== '}') { + // throw invalidToken() + // } -function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') + pop() + return - if (client[kHTTPConnVersion] === 'h2') { - // For HTTP/2, is enough to pipe the stream - const pipe = pipeline( - body, - h2stream, - (err) => { - if (err) { - util.destroy(body, err) - util.destroy(h2stream, err) - } else { - request.onRequestSent() + case 'eof': + throw invalidEOF() } - } - ) - - pipe.on('data', onPipeData) - pipe.once('end', () => { - pipe.removeListener('data', onPipeData) - util.destroy(pipe) - }) - function onPipeData (chunk) { - request.onBodySent(chunk) - } + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, - return - } + afterPropertyName () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator' || token.value !== ':') { + // throw invalidToken() + // } - let finished = false + if (token.type === 'eof') { + throw invalidEOF() + } - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + parseState = 'beforePropertyValue' + }, - const onData = function (chunk) { - if (finished) { - return - } + beforePropertyValue () { + if (token.type === 'eof') { + throw invalidEOF() + } - try { - if (!writer.write(chunk) && this.pause) { - this.pause() - } - } catch (err) { - util.destroy(this, err) - } - } - const onDrain = function () { - if (finished) { - return - } + push() + }, - if (body.resume) { - body.resume() - } - } - const onAbort = function () { - if (finished) { - return - } - const err = new RequestAbortedError() - queueMicrotask(() => onFinished(err)) - } - const onFinished = function (err) { - if (finished) { - return - } + beforeArrayValue () { + if (token.type === 'eof') { + throw invalidEOF() + } - finished = true + if (token.type === 'punctuator' && token.value === ']') { + pop() + return + } - assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)) + push() + }, - socket - .off('drain', onDrain) - .off('error', onFinished) + afterPropertyValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } - body - .removeListener('data', onData) - .removeListener('end', onFinished) - .removeListener('error', onFinished) - .removeListener('close', onAbort) + if (token.type === 'eof') { + throw invalidEOF() + } - if (!err) { - try { - writer.end() - } catch (er) { - err = er - } - } + switch (token.value) { + case ',': + parseState = 'beforePropertyName' + return - writer.destroy(err) + case '}': + pop() + } - if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { - util.destroy(body, err) - } else { - util.destroy(body) - } - } + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, - body - .on('data', onData) - .on('end', onFinished) - .on('error', onFinished) - .on('close', onAbort) + afterArrayValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } - if (body.resume) { - body.resume() - } + if (token.type === 'eof') { + throw invalidEOF() + } - socket - .on('drain', onDrain) - .on('error', onFinished) -} + switch (token.value) { + case ',': + parseState = 'beforeArrayValue' + return -async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength === body.size, 'blob body must have content length') + case ']': + pop() + } - const isH2 = client[kHTTPConnVersion] === 'h2' - try { - if (contentLength != null && contentLength !== body.size) { - throw new RequestContentLengthMismatchError() - } + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, - const buffer = Buffer.from(await body.arrayBuffer()) + end () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'eof') { + // throw invalidToken() + // } + }, +} - if (isH2) { - h2stream.cork() - h2stream.write(buffer) - h2stream.uncork() - } else { - socket.cork() - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') - socket.write(buffer) - socket.uncork() - } +function push () { + let value - request.onBodySent(buffer) - request.onRequestSent() + switch (token.type) { + case 'punctuator': + switch (token.value) { + case '{': + value = {} + break - if (!expectsPayload) { - socket[kReset] = true - } + case '[': + value = [] + break + } - resume(client) - } catch (err) { - util.destroy(isH2 ? h2stream : socket, err) - } -} + break -async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { - assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') + case 'null': + case 'boolean': + case 'numeric': + case 'string': + value = token.value + break - let callback = null - function onDrain () { - if (callback) { - const cb = callback - callback = null - cb() + // This code is unreachable. + // default: + // throw invalidToken() } - } - - const waitForDrain = () => new Promise((resolve, reject) => { - assert(callback === null) - if (socket[kError]) { - reject(socket[kError]) + if (root === undefined) { + root = value } else { - callback = resolve + const parent = stack[stack.length - 1] + if (Array.isArray(parent)) { + parent.push(value) + } else { + Object.defineProperty(parent, key, { + value, + writable: true, + enumerable: true, + configurable: true, + }) + } } - }) - if (client[kHTTPConnVersion] === 'h2') { - h2stream - .on('close', onDrain) - .on('drain', onDrain) + if (value !== null && typeof value === 'object') { + stack.push(value) - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError] + if (Array.isArray(value)) { + parseState = 'beforeArrayValue' + } else { + parseState = 'beforePropertyName' } - - const res = h2stream.write(chunk) - request.onBodySent(chunk) - if (!res) { - await waitForDrain() + } else { + const current = stack[stack.length - 1] + if (current == null) { + parseState = 'end' + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue' + } else { + parseState = 'afterPropertyValue' } - } - } catch (err) { - h2stream.destroy(err) - } finally { - request.onRequestSent() - h2stream.end() - h2stream - .off('close', onDrain) - .off('drain', onDrain) } +} - return - } +function pop () { + stack.pop() - socket - .on('close', onDrain) - .on('drain', onDrain) + const current = stack[stack.length - 1] + if (current == null) { + parseState = 'end' + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue' + } else { + parseState = 'afterPropertyValue' + } +} - const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError] - } +// This code is unreachable. +// function invalidParseState () { +// return new Error(`JSON5: invalid parse state '${parseState}'`) +// } - if (!writer.write(chunk)) { - await waitForDrain() - } +// This code is unreachable. +// function invalidLexState (state) { +// return new Error(`JSON5: invalid lex state '${state}'`) +// } + +function invalidChar (c) { + if (c === undefined) { + return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) } - writer.end() - } catch (err) { - writer.destroy(err) - } finally { - socket - .off('close', onDrain) - .off('drain', onDrain) - } + return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) } -class AsyncWriter { - constructor ({ socket, request, contentLength, client, expectsPayload, header }) { - this.socket = socket - this.request = request - this.contentLength = contentLength - this.client = client - this.bytesWritten = 0 - this.expectsPayload = expectsPayload - this.header = header +function invalidEOF () { + return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +} - socket[kWriting] = true - } +// This code is unreachable. +// function invalidToken () { +// if (token.type === 'eof') { +// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +// } - write (chunk) { - const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this +// const c = String.fromCodePoint(token.value.codePointAt(0)) +// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +// } - if (socket[kError]) { - throw socket[kError] - } +function invalidIdentifier () { + column -= 5 + return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) +} - if (socket.destroyed) { - return false - } +function separatorChar (c) { + console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`) +} - const len = Buffer.byteLength(chunk) - if (!len) { - return true +function formatChar (c) { + const replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', } - // We should defer writing chunks. - if (contentLength !== null && bytesWritten + len > contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError() - } - - process.emitWarning(new RequestContentLengthMismatchError()) + if (replacements[c]) { + return replacements[c] } - socket.cork() + if (c < ' ') { + const hexString = c.charCodeAt(0).toString(16) + return '\\x' + ('00' + hexString).substring(hexString.length) + } - if (bytesWritten === 0) { - if (!expectsPayload) { - socket[kReset] = true - } + return c +} - if (contentLength === null) { - socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1') - } else { - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') - } - } +function syntaxError (message) { + const err = new SyntaxError(message) + err.lineNumber = line + err.columnNumber = column + return err +} - if (contentLength === null) { - socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1') - } - this.bytesWritten += len +/***/ }), - const ret = socket.write(chunk) +/***/ 91568: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - socket.uncork() +const util = __nccwpck_require__(37393) - request.onBodySent(chunk) +module.exports = function stringify (value, replacer, space) { + const stack = [] + let indent = '' + let propertyList + let replacerFunc + let gap = '' + let quote - if (!ret) { - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh() + if ( + replacer != null && + typeof replacer === 'object' && + !Array.isArray(replacer) + ) { + space = replacer.space + quote = replacer.quote + replacer = replacer.replacer + } + + if (typeof replacer === 'function') { + replacerFunc = replacer + } else if (Array.isArray(replacer)) { + propertyList = [] + for (const v of replacer) { + let item + + if (typeof v === 'string') { + item = v + } else if ( + typeof v === 'number' || + v instanceof String || + v instanceof Number + ) { + item = String(v) + } + + if (item !== undefined && propertyList.indexOf(item) < 0) { + propertyList.push(item) + } } - } } - return ret - } + if (space instanceof Number) { + space = Number(space) + } else if (space instanceof String) { + space = String(space) + } - end () { - const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this - request.onRequestSent() + if (typeof space === 'number') { + if (space > 0) { + space = Math.min(10, Math.floor(space)) + gap = ' '.substr(0, space) + } + } else if (typeof space === 'string') { + gap = space.substr(0, 10) + } - socket[kWriting] = false + return serializeProperty('', {'': value}) - if (socket[kError]) { - throw socket[kError] - } + function serializeProperty (key, holder) { + let value = holder[key] + if (value != null) { + if (typeof value.toJSON5 === 'function') { + value = value.toJSON5(key) + } else if (typeof value.toJSON === 'function') { + value = value.toJSON(key) + } + } - if (socket.destroyed) { - return + if (replacerFunc) { + value = replacerFunc.call(holder, key, value) + } + + if (value instanceof Number) { + value = Number(value) + } else if (value instanceof String) { + value = String(value) + } else if (value instanceof Boolean) { + value = value.valueOf() + } + + switch (value) { + case null: return 'null' + case true: return 'true' + case false: return 'false' + } + + if (typeof value === 'string') { + return quoteString(value, false) + } + + if (typeof value === 'number') { + return String(value) + } + + if (typeof value === 'object') { + return Array.isArray(value) ? serializeArray(value) : serializeObject(value) + } + + return undefined } - if (bytesWritten === 0) { - if (expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD send a Content-Length in a request message when - // no Transfer-Encoding is sent and the request method defines a meaning - // for an enclosed payload body. + function quoteString (value) { + const quotes = { + "'": 0.1, + '"': 0.2, + } - socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') - } else { - socket.write(`${header}\r\n`, 'latin1') - } - } else if (contentLength === null) { - socket.write('\r\n0\r\n\r\n', 'latin1') + const replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + } + + let product = '' + + for (let i = 0; i < value.length; i++) { + const c = value[i] + switch (c) { + case "'": + case '"': + quotes[c]++ + product += c + continue + + case '\0': + if (util.isDigit(value[i + 1])) { + product += '\\x00' + continue + } + } + + if (replacements[c]) { + product += replacements[c] + continue + } + + if (c < ' ') { + let hexString = c.charCodeAt(0).toString(16) + product += '\\x' + ('00' + hexString).substring(hexString.length) + continue + } + + product += c + } + + const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b) + + product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]) + + return quoteChar + product + quoteChar } - if (contentLength !== null && bytesWritten !== contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError() - } else { - process.emitWarning(new RequestContentLengthMismatchError()) - } + function serializeObject (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value) + + let stepback = indent + indent = indent + gap + + let keys = propertyList || Object.keys(value) + let partial = [] + for (const key of keys) { + const propertyString = serializeProperty(key, value) + if (propertyString !== undefined) { + let member = serializeKey(key) + ':' + if (gap !== '') { + member += ' ' + } + member += propertyString + partial.push(member) + } + } + + let final + if (partial.length === 0) { + final = '{}' + } else { + let properties + if (gap === '') { + properties = partial.join(',') + final = '{' + properties + '}' + } else { + let separator = ',\n' + indent + properties = partial.join(separator) + final = '{\n' + indent + properties + ',\n' + stepback + '}' + } + } + + stack.pop() + indent = stepback + return final } - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh() - } + function serializeKey (key) { + if (key.length === 0) { + return quoteString(key, true) + } + + const firstChar = String.fromCodePoint(key.codePointAt(0)) + if (!util.isIdStartChar(firstChar)) { + return quoteString(key, true) + } + + for (let i = firstChar.length; i < key.length; i++) { + if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { + return quoteString(key, true) + } + } + + return key } - resume(client) - } + function serializeArray (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } - destroy (err) { - const { socket, client } = this + stack.push(value) - socket[kWriting] = false + let stepback = indent + indent = indent + gap - if (err) { - assert(client[kRunning] <= 1, 'pipeline should only contain this request') - util.destroy(socket, err) + let partial = [] + for (let i = 0; i < value.length; i++) { + const propertyString = serializeProperty(String(i), value) + partial.push((propertyString !== undefined) ? propertyString : 'null') + } + + let final + if (partial.length === 0) { + final = '[]' + } else { + if (gap === '') { + let properties = partial.join(',') + final = '[' + properties + ']' + } else { + let separator = ',\n' + indent + let properties = partial.join(separator) + final = '[\n' + indent + properties + ',\n' + stepback + ']' + } + } + + stack.pop() + indent = stepback + return final } - } } -function errorRequest (client, request, err) { - try { - request.onError(err) - assert(request.aborted) - } catch (err) { - client.emit('error', err) - } -} -module.exports = Client +/***/ }), + +/***/ 57414: +/***/ ((module) => { + +// This is a generated file. Do not edit. +module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/ +module.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/ +module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ /***/ }), -/***/ 3194: +/***/ 37393: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +const unicode = __nccwpck_require__(57414) + +module.exports = { + isSpaceSeparator (c) { + return typeof c === 'string' && unicode.Space_Separator.test(c) + }, + + isIdStartChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c === '$') || (c === '_') || + unicode.ID_Start.test(c) + ) + }, + isIdContinueChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + (c === '$') || (c === '_') || + (c === '\u200C') || (c === '\u200D') || + unicode.ID_Continue.test(c) + ) + }, -/* istanbul ignore file: only for Node 12 */ + isDigit (c) { + return typeof c === 'string' && /[0-9]/.test(c) + }, -const { kConnected, kSize } = __nccwpck_require__(6443) + isHexDigit (c) { + return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) + }, +} -class CompatWeakRef { - constructor (value) { - this.value = value + +/***/ }), + +/***/ 5140: +/***/ ((module) => { + +var toString = Object.prototype.toString; + +module.exports = function kindOf(val) { + if (val === void 0) return 'undefined'; + if (val === null) return 'null'; + + var type = typeof val; + if (type === 'boolean') return 'boolean'; + if (type === 'string') return 'string'; + if (type === 'number') return 'number'; + if (type === 'symbol') return 'symbol'; + if (type === 'function') { + return isGeneratorFn(val) ? 'generatorfunction' : 'function'; } - deref () { - return this.value[kConnected] === 0 && this.value[kSize] === 0 - ? undefined - : this.value + if (isArray(val)) return 'array'; + if (isBuffer(val)) return 'buffer'; + if (isArguments(val)) return 'arguments'; + if (isDate(val)) return 'date'; + if (isError(val)) return 'error'; + if (isRegexp(val)) return 'regexp'; + + switch (ctorName(val)) { + case 'Symbol': return 'symbol'; + case 'Promise': return 'promise'; + + // Set, Map, WeakSet, WeakMap + case 'WeakMap': return 'weakmap'; + case 'WeakSet': return 'weakset'; + case 'Map': return 'map'; + case 'Set': return 'set'; + + // 8-bit typed arrays + case 'Int8Array': return 'int8array'; + case 'Uint8Array': return 'uint8array'; + case 'Uint8ClampedArray': return 'uint8clampedarray'; + + // 16-bit typed arrays + case 'Int16Array': return 'int16array'; + case 'Uint16Array': return 'uint16array'; + + // 32-bit typed arrays + case 'Int32Array': return 'int32array'; + case 'Uint32Array': return 'uint32array'; + case 'Float32Array': return 'float32array'; + case 'Float64Array': return 'float64array'; } -} -class CompatFinalizer { - constructor (finalizer) { - this.finalizer = finalizer + if (isGeneratorObj(val)) { + return 'generator'; } - register (dispatcher, key) { - if (dispatcher.on) { - dispatcher.on('disconnect', () => { - if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { - this.finalizer(key) - } - }) - } + // Non-plain objects + type = toString.call(val); + switch (type) { + case '[object Object]': return 'object'; + // iterators + case '[object Map Iterator]': return 'mapiterator'; + case '[object Set Iterator]': return 'setiterator'; + case '[object String Iterator]': return 'stringiterator'; + case '[object Array Iterator]': return 'arrayiterator'; } + + // other + return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); +}; + +function ctorName(val) { + return typeof val.constructor === 'function' ? val.constructor.name : null; } -module.exports = function () { - // FIXME: remove workaround when the Node bug is fixed - // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 - if (process.env.NODE_V8_COVERAGE) { - return { - WeakRef: CompatWeakRef, - FinalizationRegistry: CompatFinalizer +function isArray(val) { + if (Array.isArray) return Array.isArray(val); + return val instanceof Array; +} + +function isError(val) { + return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'); +} + +function isDate(val) { + if (val instanceof Date) return true; + return typeof val.toDateString === 'function' + && typeof val.getDate === 'function' + && typeof val.setDate === 'function'; +} + +function isRegexp(val) { + if (val instanceof RegExp) return true; + return typeof val.flags === 'string' + && typeof val.ignoreCase === 'boolean' + && typeof val.multiline === 'boolean' + && typeof val.global === 'boolean'; +} + +function isGeneratorFn(name, val) { + return ctorName(name) === 'GeneratorFunction'; +} + +function isGeneratorObj(val) { + return typeof val.throw === 'function' + && typeof val.return === 'function' + && typeof val.next === 'function'; +} + +function isArguments(val) { + try { + if (typeof val.length === 'number' && typeof val.callee === 'function') { + return true; + } + } catch (err) { + if (err.message.indexOf('callee') !== -1) { + return true; } } - return { - WeakRef: global.WeakRef || CompatWeakRef, - FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + return false; +} + +/** + * If you need to support Safari 5-7 (8-10 yr-old browser), + * take a look at https://github.com/feross/is-buffer + */ + +function isBuffer(val) { + if (val.constructor && typeof val.constructor.isBuffer === 'function') { + return val.constructor.isBuffer(val); } + return false; } /***/ }), -/***/ 9237: -/***/ ((module) => { +/***/ 71628: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +const fs = __nccwpck_require__(35744) +const path = __nccwpck_require__(16928) -// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size -const maxAttributeValueSize = 1024 - -// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size -const maxNameValuePairSize = 4096 - -module.exports = { - maxAttributeValueSize, - maxNameValuePairSize +function klawSync (dir, opts, ls) { + if (!ls) { + ls = [] + dir = path.resolve(dir) + opts = opts || {} + opts.fs = opts.fs || fs + if (opts.depthLimit > -1) opts.rootDepth = dir.split(path.sep).length + 1 + } + const paths = opts.fs.readdirSync(dir).map(p => dir + path.sep + p) + for (var i = 0; i < paths.length; i += 1) { + const pi = paths[i] + const st = opts.fs.lstatSync(pi) + const item = {path: pi, stats: st} + const isUnderDepthLimit = (!opts.rootDepth || pi.split(path.sep).length - opts.rootDepth < opts.depthLimit) + const filterResult = opts.filter ? opts.filter(item) : true + const isDir = st.isDirectory() + const shouldAdd = filterResult && (isDir ? !opts.nodir : !opts.nofile) + const shouldTraverse = isDir && isUnderDepthLimit && (opts.traverseAll || filterResult) + if (shouldAdd) ls.push(item) + if (shouldTraverse) ls = klawSync(pi, opts, ls) + } + return ls } +module.exports = klawSync + /***/ }), -/***/ 3168: +/***/ 47033: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var getNative = __nccwpck_require__(68573), + root = __nccwpck_require__(6748); +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); -const { parseSetCookie } = __nccwpck_require__(8915) -const { stringify } = __nccwpck_require__(3834) -const { webidl } = __nccwpck_require__(4222) -const { Headers } = __nccwpck_require__(6349) +module.exports = DataView; -/** - * @typedef {Object} Cookie - * @property {string} name - * @property {string} value - * @property {Date|number|undefined} expires - * @property {number|undefined} maxAge - * @property {string|undefined} domain - * @property {string|undefined} path - * @property {boolean|undefined} secure - * @property {boolean|undefined} httpOnly - * @property {'Strict'|'Lax'|'None'} sameSite - * @property {string[]} unparsed - */ + +/***/ }), + +/***/ 66320: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var hashClear = __nccwpck_require__(48051), + hashDelete = __nccwpck_require__(15431), + hashGet = __nccwpck_require__(26934), + hashHas = __nccwpck_require__(64306), + hashSet = __nccwpck_require__(17226); /** - * @param {Headers} headers - * @returns {Record<string, string>} + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ -function getCookies (headers) { - webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }) +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - webidl.brandCheck(headers, Headers, { strict: false }) + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - const cookie = headers.get('cookie') - const out = {} +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; - if (!cookie) { - return out - } +module.exports = Hash; - for (const piece of cookie.split(';')) { - const [name, ...value] = piece.split('=') - out[name.trim()] = value.join('=') - } +/***/ }), - return out -} +/***/ 68884: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var listCacheClear = __nccwpck_require__(99791), + listCacheDelete = __nccwpck_require__(24555), + listCacheGet = __nccwpck_require__(86634), + listCacheHas = __nccwpck_require__(8430), + listCacheSet = __nccwpck_require__(36918); /** - * @param {Headers} headers - * @param {string} name - * @param {{ path?: string, domain?: string }|undefined} attributes - * @returns {void} + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ -function deleteCookie (headers, name, attributes) { - webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }) +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; - webidl.brandCheck(headers, Headers, { strict: false }) + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - name = webidl.converters.DOMString(name) - attributes = webidl.converters.DeleteCookieAttributes(attributes) +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; - // Matches behavior of - // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 - setCookie(headers, { - name, - value: '', - expires: new Date(0), - ...attributes - }) -} +module.exports = ListCache; -/** - * @param {Headers} headers - * @returns {Cookie[]} - */ -function getSetCookies (headers) { - webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }) - webidl.brandCheck(headers, Headers, { strict: false }) +/***/ }), - const cookies = headers.getSetCookie() +/***/ 98272: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (!cookies) { - return [] - } +var getNative = __nccwpck_require__(68573), + root = __nccwpck_require__(6748); - return cookies.map((pair) => parseSetCookie(pair)) -} +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); -/** - * @param {Headers} headers - * @param {Cookie} cookie - * @returns {void} - */ -function setCookie (headers, cookie) { - webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }) +module.exports = Map; - webidl.brandCheck(headers, Headers, { strict: false }) - cookie = webidl.converters.Cookie(cookie) +/***/ }), - const str = stringify(cookie) +/***/ 79660: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (str) { - headers.append('Set-Cookie', stringify(cookie)) +var mapCacheClear = __nccwpck_require__(88487), + mapCacheDelete = __nccwpck_require__(36275), + mapCacheGet = __nccwpck_require__(30130), + mapCacheHas = __nccwpck_require__(69254), + mapCacheSet = __nccwpck_require__(59806); + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); } } -webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'path', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'domain', - defaultValue: null - } -]) +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; -webidl.converters.Cookie = webidl.dictionaryConverter([ - { - converter: webidl.converters.DOMString, - key: 'name' - }, - { - converter: webidl.converters.DOMString, - key: 'value' - }, - { - converter: webidl.nullableConverter((value) => { - if (typeof value === 'number') { - return webidl.converters['unsigned long long'](value) - } +module.exports = MapCache; - return new Date(value) - }), - key: 'expires', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters['long long']), - key: 'maxAge', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'domain', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: 'path', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: 'secure', - defaultValue: null - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: 'httpOnly', - defaultValue: null - }, - { - converter: webidl.converters.USVString, - key: 'sameSite', - allowedValues: ['Strict', 'Lax', 'None'] - }, - { - converter: webidl.sequenceConverter(webidl.converters.DOMString), - key: 'unparsed', - defaultValue: [] - } -]) -module.exports = { - getCookies, - deleteCookie, - getSetCookies, - setCookie -} +/***/ }), + +/***/ 4455: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getNative = __nccwpck_require__(68573), + root = __nccwpck_require__(6748); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; /***/ }), -/***/ 8915: +/***/ 84986: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var getNative = __nccwpck_require__(68573), + root = __nccwpck_require__(6748); +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); -const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(9237) -const { isCTLExcludingHtab } = __nccwpck_require__(3834) -const { collectASequenceOfCodePointsFast } = __nccwpck_require__(4322) -const assert = __nccwpck_require__(2613) +module.exports = Set; + + +/***/ }), + +/***/ 23706: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var MapCache = __nccwpck_require__(79660), + setCacheAdd = __nccwpck_require__(44671), + setCacheHas = __nccwpck_require__(71884); /** - * @description Parses the field-value attributes of a set-cookie header string. - * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 - * @param {string} header - * @returns if the header is invalid, null will be returned + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. */ -function parseSetCookie (header) { - // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F - // character (CTL characters excluding HTAB): Abort these steps and - // ignore the set-cookie-string entirely. - if (isCTLExcludingHtab(header)) { - return null - } - - let nameValuePair = '' - let unparsedAttributes = '' - let name = '' - let value = '' +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; - // 2. If the set-cookie-string contains a %x3B (";") character: - if (header.includes(';')) { - // 1. The name-value-pair string consists of the characters up to, - // but not including, the first %x3B (";"), and the unparsed- - // attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question). - const position = { position: 0 } + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} - nameValuePair = collectASequenceOfCodePointsFast(';', header, position) - unparsedAttributes = header.slice(position.position) - } else { - // Otherwise: +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; - // 1. The name-value-pair string consists of all the characters - // contained in the set-cookie-string, and the unparsed- - // attributes is the empty string. - nameValuePair = header - } +module.exports = SetCache; - // 3. If the name-value-pair string lacks a %x3D ("=") character, then - // the name string is empty, and the value string is the value of - // name-value-pair. - if (!nameValuePair.includes('=')) { - value = nameValuePair - } else { - // Otherwise, the name string consists of the characters up to, but - // not including, the first %x3D ("=") character, and the (possibly - // empty) value string consists of the characters after the first - // %x3D ("=") character. - const position = { position: 0 } - name = collectASequenceOfCodePointsFast( - '=', - nameValuePair, - position - ) - value = nameValuePair.slice(position.position + 1) - } - // 4. Remove any leading or trailing WSP characters from the name - // string and the value string. - name = name.trim() - value = value.trim() +/***/ }), - // 5. If the sum of the lengths of the name string and the value string - // is more than 4096 octets, abort these steps and ignore the set- - // cookie-string entirely. - if (name.length + value.length > maxNameValuePairSize) { - return null - } +/***/ 73262: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 6. The cookie-name is the name string, and the cookie-value is the - // value string. - return { - name, value, ...parseUnparsedAttributes(unparsedAttributes) - } -} +var ListCache = __nccwpck_require__(68884), + stackClear = __nccwpck_require__(91509), + stackDelete = __nccwpck_require__(837), + stackGet = __nccwpck_require__(46572), + stackHas = __nccwpck_require__(66216), + stackSet = __nccwpck_require__(51976); /** - * Parses the remaining attributes of a set-cookie header - * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 - * @param {string} unparsedAttributes - * @param {[Object.<string, unknown>]={}} cookieAttributeList + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ -function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) { - // 1. If the unparsed-attributes string is empty, skip the rest of - // these steps. - if (unparsedAttributes.length === 0) { - return cookieAttributeList - } +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} - // 2. Discard the first character of the unparsed-attributes (which - // will be a %x3B (";") character). - assert(unparsedAttributes[0] === ';') - unparsedAttributes = unparsedAttributes.slice(1) +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; - let cookieAv = '' +module.exports = Stack; - // 3. If the remaining unparsed-attributes contains a %x3B (";") - // character: - if (unparsedAttributes.includes(';')) { - // 1. Consume the characters of the unparsed-attributes up to, but - // not including, the first %x3B (";") character. - cookieAv = collectASequenceOfCodePointsFast( - ';', - unparsedAttributes, - { position: 0 } - ) - unparsedAttributes = unparsedAttributes.slice(cookieAv.length) - } else { - // Otherwise: - // 1. Consume the remainder of the unparsed-attributes. - cookieAv = unparsedAttributes - unparsedAttributes = '' - } +/***/ }), - // Let the cookie-av string be the characters consumed in this step. +/***/ 38584: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - let attributeName = '' - let attributeValue = '' +var root = __nccwpck_require__(6748); - // 4. If the cookie-av string contains a %x3D ("=") character: - if (cookieAv.includes('=')) { - // 1. The (possibly empty) attribute-name string consists of the - // characters up to, but not including, the first %x3D ("=") - // character, and the (possibly empty) attribute-value string - // consists of the characters after the first %x3D ("=") - // character. - const position = { position: 0 } +/** Built-in value references. */ +var Symbol = root.Symbol; - attributeName = collectASequenceOfCodePointsFast( - '=', - cookieAv, - position - ) - attributeValue = cookieAv.slice(position.position + 1) - } else { - // Otherwise: +module.exports = Symbol; - // 1. The attribute-name string consists of the entire cookie-av - // string, and the attribute-value string is empty. - attributeName = cookieAv - } - // 5. Remove any leading or trailing WSP characters from the attribute- - // name string and the attribute-value string. - attributeName = attributeName.trim() - attributeValue = attributeValue.trim() +/***/ }), - // 6. If the attribute-value is longer than 1024 octets, ignore the - // cookie-av string and return to Step 1 of this algorithm. - if (attributeValue.length > maxAttributeValueSize) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) - } +/***/ 59525: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 7. Process the attribute-name and attribute-value according to the - // requirements in the following subsections. (Notice that - // attributes with unrecognized attribute-names are ignored.) - const attributeNameLowercase = attributeName.toLowerCase() +var root = __nccwpck_require__(6748); - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 - // If the attribute-name case-insensitively matches the string - // "Expires", the user agent MUST process the cookie-av as follows. - if (attributeNameLowercase === 'expires') { - // 1. Let the expiry-time be the result of parsing the attribute-value - // as cookie-date (see Section 5.1.1). - const expiryTime = new Date(attributeValue) +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; - // 2. If the attribute-value failed to parse as a cookie date, ignore - // the cookie-av. +module.exports = Uint8Array; - cookieAttributeList.expires = expiryTime - } else if (attributeNameLowercase === 'max-age') { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 - // If the attribute-name case-insensitively matches the string "Max- - // Age", the user agent MUST process the cookie-av as follows. - // 1. If the first character of the attribute-value is not a DIGIT or a - // "-" character, ignore the cookie-av. - const charCode = attributeValue.charCodeAt(0) +/***/ }), - if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) - } +/***/ 97364: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. If the remainder of attribute-value contains a non-DIGIT - // character, ignore the cookie-av. - if (!/^\d+$/.test(attributeValue)) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) - } +var getNative = __nccwpck_require__(68573), + root = __nccwpck_require__(6748); - // 3. Let delta-seconds be the attribute-value converted to an integer. - const deltaSeconds = Number(attributeValue) +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); - // 4. Let cookie-age-limit be the maximum age of the cookie (which - // SHOULD be 400 days or less, see Section 4.1.2.2). +module.exports = WeakMap; - // 5. Set delta-seconds to the smaller of its present value and cookie- - // age-limit. - // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) - // 6. If delta-seconds is less than or equal to zero (0), let expiry- - // time be the earliest representable date and time. Otherwise, let - // the expiry-time be the current date and time plus delta-seconds - // seconds. - // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds +/***/ }), - // 7. Append an attribute to the cookie-attribute-list with an - // attribute-name of Max-Age and an attribute-value of expiry-time. - cookieAttributeList.maxAge = deltaSeconds - } else if (attributeNameLowercase === 'domain') { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 - // If the attribute-name case-insensitively matches the string "Domain", - // the user agent MUST process the cookie-av as follows. +/***/ 59678: +/***/ ((module) => { - // 1. Let cookie-domain be the attribute-value. - let cookieDomain = attributeValue +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} - // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be - // cookie-domain without its leading %x2E ("."). - if (cookieDomain[0] === '.') { - cookieDomain = cookieDomain.slice(1) - } +module.exports = apply; - // 3. Convert the cookie-domain to lower case. - cookieDomain = cookieDomain.toLowerCase() - // 4. Append an attribute to the cookie-attribute-list with an - // attribute-name of Domain and an attribute-value of cookie-domain. - cookieAttributeList.domain = cookieDomain - } else if (attributeNameLowercase === 'path') { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 - // If the attribute-name case-insensitively matches the string "Path", - // the user agent MUST process the cookie-av as follows. +/***/ }), - // 1. If the attribute-value is empty or if the first character of the - // attribute-value is not %x2F ("/"): - let cookiePath = '' - if (attributeValue.length === 0 || attributeValue[0] !== '/') { - // 1. Let cookie-path be the default-path. - cookiePath = '/' - } else { - // Otherwise: +/***/ 19362: +/***/ ((module) => { - // 1. Let cookie-path be the attribute-value. - cookiePath = attributeValue - } +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; - // 2. Append an attribute to the cookie-attribute-list with an - // attribute-name of Path and an attribute-value of cookie-path. - cookieAttributeList.path = cookiePath - } else if (attributeNameLowercase === 'secure') { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 - // If the attribute-name case-insensitively matches the string "Secure", - // the user agent MUST append an attribute to the cookie-attribute-list - // with an attribute-name of Secure and an empty attribute-value. + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} - cookieAttributeList.secure = true - } else if (attributeNameLowercase === 'httponly') { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 - // If the attribute-name case-insensitively matches the string - // "HttpOnly", the user agent MUST append an attribute to the cookie- - // attribute-list with an attribute-name of HttpOnly and an empty - // attribute-value. +module.exports = arrayEach; - cookieAttributeList.httpOnly = true - } else if (attributeNameLowercase === 'samesite') { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 - // If the attribute-name case-insensitively matches the string - // "SameSite", the user agent MUST process the cookie-av as follows: - // 1. Let enforcement be "Default". - let enforcement = 'Default' +/***/ }), - const attributeValueLowercase = attributeValue.toLowerCase() - // 2. If cookie-av's attribute-value is a case-insensitive match for - // "None", set enforcement to "None". - if (attributeValueLowercase.includes('none')) { - enforcement = 'None' - } +/***/ 78573: +/***/ ((module) => { - // 3. If cookie-av's attribute-value is a case-insensitive match for - // "Strict", set enforcement to "Strict". - if (attributeValueLowercase.includes('strict')) { - enforcement = 'Strict' - } +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; - // 4. If cookie-av's attribute-value is a case-insensitive match for - // "Lax", set enforcement to "Lax". - if (attributeValueLowercase.includes('lax')) { - enforcement = 'Lax' + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; } - - // 5. Append an attribute to the cookie-attribute-list with an - // attribute-name of "SameSite" and an attribute-value of - // enforcement. - cookieAttributeList.sameSite = enforcement - } else { - cookieAttributeList.unparsed ??= [] - - cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`) } - - // 8. Return to Step 1 of this algorithm. - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + return result; } -module.exports = { - parseSetCookie, - parseUnparsedAttributes -} +module.exports = arrayFilter; /***/ }), -/***/ 3834: -/***/ ((module) => { - -"use strict"; +/***/ 62000: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var baseTimes = __nccwpck_require__(21299), + isArguments = __nccwpck_require__(60541), + isArray = __nccwpck_require__(77192), + isBuffer = __nccwpck_require__(43739), + isIndex = __nccwpck_require__(37446), + isTypedArray = __nccwpck_require__(35000); -/** - * @param {string} value - * @returns {boolean} - */ -function isCTLExcludingHtab (value) { - if (value.length === 0) { - return false - } +/** Used for built-in method references. */ +var objectProto = Object.prototype; - for (const char of value) { - const code = char.charCodeAt(0) +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - if ( - (code >= 0x00 || code <= 0x08) || - (code >= 0x0A || code <= 0x1F) || - code === 0x7F - ) { - return false +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); } } + return result; } +module.exports = arrayLikeKeys; + + +/***/ }), + +/***/ 56649: +/***/ ((module) => { + /** - CHAR = <any US-ASCII character (octets 0 - 127)> - token = 1*<any CHAR except CTLs or separators> - separators = "(" | ")" | "<" | ">" | "@" - | "," | ";" | ":" | "\" | <"> - | "/" | "[" | "]" | "?" | "=" - | "{" | "}" | SP | HT - * @param {string} name + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. */ -function validateCookieName (name) { - for (const char of name) { - const code = char.charCodeAt(0) +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); - if ( - (code <= 0x20 || code > 0x7F) || - char === '(' || - char === ')' || - char === '>' || - char === '<' || - char === '@' || - char === ',' || - char === ';' || - char === ':' || - char === '\\' || - char === '"' || - char === '/' || - char === '[' || - char === ']' || - char === '?' || - char === '=' || - char === '{' || - char === '}' - ) { - throw new Error('Invalid cookie name') - } + while (++index < length) { + result[index] = iteratee(array[index], index, array); } + return result; } +module.exports = arrayMap; + + +/***/ }), + +/***/ 50827: +/***/ ((module) => { + /** - cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) - cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E - ; US-ASCII characters excluding CTLs, - ; whitespace DQUOTE, comma, semicolon, - ; and backslash - * @param {string} value + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. */ -function validateCookieValue (value) { - for (const char of value) { - const code = char.charCodeAt(0) +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; - if ( - code < 0x21 || // exclude CTLs (0-31) - code === 0x22 || - code === 0x2C || - code === 0x3B || - code === 0x5C || - code > 0x7E // non-ascii - ) { - throw new Error('Invalid header value') - } + while (++index < length) { + array[offset + index] = values[index]; } + return array; } -/** - * path-value = <any CHAR except CTLs or ";"> - * @param {string} path - */ -function validateCookiePath (path) { - for (const char of path) { - const code = char.charCodeAt(0) +module.exports = arrayPush; - if (code < 0x21 || char === ';') { - throw new Error('Invalid cookie path') + +/***/ }), + +/***/ 90935: +/***/ ((module) => { + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; } } + return false; } +module.exports = arraySome; + + +/***/ }), + +/***/ 99128: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseAssignValue = __nccwpck_require__(63579), + eq = __nccwpck_require__(75199); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + /** - * I have no idea why these values aren't allowed to be honest, - * but Deno tests these. - Khafra - * @param {string} domain + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. */ -function validateCookieDomain (domain) { - if ( - domain.startsWith('-') || - domain.endsWith('.') || - domain.endsWith('-') - ) { - throw new Error('Invalid cookie domain') +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); } } -/** - * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 - * @param {number|Date} date - IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT - ; fixed length/zone/capitalization subset of the format - ; see Section 3.3 of [RFC5322] +module.exports = assignValue; - day-name = %x4D.6F.6E ; "Mon", case-sensitive - / %x54.75.65 ; "Tue", case-sensitive - / %x57.65.64 ; "Wed", case-sensitive - / %x54.68.75 ; "Thu", case-sensitive - / %x46.72.69 ; "Fri", case-sensitive - / %x53.61.74 ; "Sat", case-sensitive - / %x53.75.6E ; "Sun", case-sensitive - date1 = day SP month SP year - ; e.g., 02 Jun 1982 - day = 2DIGIT - month = %x4A.61.6E ; "Jan", case-sensitive - / %x46.65.62 ; "Feb", case-sensitive - / %x4D.61.72 ; "Mar", case-sensitive - / %x41.70.72 ; "Apr", case-sensitive - / %x4D.61.79 ; "May", case-sensitive - / %x4A.75.6E ; "Jun", case-sensitive - / %x4A.75.6C ; "Jul", case-sensitive - / %x41.75.67 ; "Aug", case-sensitive - / %x53.65.70 ; "Sep", case-sensitive - / %x4F.63.74 ; "Oct", case-sensitive - / %x4E.6F.76 ; "Nov", case-sensitive - / %x44.65.63 ; "Dec", case-sensitive - year = 4DIGIT +/***/ }), - GMT = %x47.4D.54 ; "GMT", case-sensitive +/***/ 74024: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - time-of-day = hour ":" minute ":" second - ; 00:00:00 - 23:59:60 (leap second) +var eq = __nccwpck_require__(75199); - hour = 2DIGIT - minute = 2DIGIT - second = 2DIGIT +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. */ -function toIMFDate (date) { - if (typeof date === 'number') { - date = new Date(date) +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } } + return -1; +} - const days = [ - 'Sun', 'Mon', 'Tue', 'Wed', - 'Thu', 'Fri', 'Sat' - ] +module.exports = assocIndexOf; - const months = [ - 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' - ] - const dayName = days[date.getUTCDay()] - const day = date.getUTCDate().toString().padStart(2, '0') - const month = months[date.getUTCMonth()] - const year = date.getUTCFullYear() - const hour = date.getUTCHours().toString().padStart(2, '0') - const minute = date.getUTCMinutes().toString().padStart(2, '0') - const second = date.getUTCSeconds().toString().padStart(2, '0') +/***/ }), - return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT` -} +/***/ 31684: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var copyObject = __nccwpck_require__(69330), + keys = __nccwpck_require__(26741); /** - max-age-av = "Max-Age=" non-zero-digit *DIGIT - ; In practice, both expires-av and max-age-av - ; are limited to dates representable by the - ; user agent. - * @param {number} maxAge + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. */ -function validateCookieMaxAge (maxAge) { - if (maxAge < 0) { - throw new Error('Invalid cookie max-age') - } +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); } -/** - * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 - * @param {import('./index').Cookie} cookie - */ -function stringify (cookie) { - if (cookie.name.length === 0) { - return null - } +module.exports = baseAssign; - validateCookieName(cookie.name) - validateCookieValue(cookie.value) - const out = [`${cookie.name}=${cookie.value}`] +/***/ }), - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 - if (cookie.name.startsWith('__Secure-')) { - cookie.secure = true - } +/***/ 30731: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (cookie.name.startsWith('__Host-')) { - cookie.secure = true - cookie.domain = null - cookie.path = '/' - } +var copyObject = __nccwpck_require__(69330), + keysIn = __nccwpck_require__(19430); - if (cookie.secure) { - out.push('Secure') - } +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} - if (cookie.httpOnly) { - out.push('HttpOnly') - } +module.exports = baseAssignIn; - if (typeof cookie.maxAge === 'number') { - validateCookieMaxAge(cookie.maxAge) - out.push(`Max-Age=${cookie.maxAge}`) - } - if (cookie.domain) { - validateCookieDomain(cookie.domain) - out.push(`Domain=${cookie.domain}`) - } +/***/ }), - if (cookie.path) { - validateCookiePath(cookie.path) - out.push(`Path=${cookie.path}`) - } +/***/ 63579: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { - out.push(`Expires=${toIMFDate(cookie.expires)}`) - } +var defineProperty = __nccwpck_require__(83106); - if (cookie.sameSite) { - out.push(`SameSite=${cookie.sameSite}`) +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; } +} - for (const part of cookie.unparsed) { - if (!part.includes('=')) { - throw new Error('Invalid unparsed') +module.exports = baseAssignValue; + + +/***/ }), + +/***/ 62504: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stack = __nccwpck_require__(73262), + arrayEach = __nccwpck_require__(19362), + assignValue = __nccwpck_require__(99128), + baseAssign = __nccwpck_require__(31684), + baseAssignIn = __nccwpck_require__(30731), + cloneBuffer = __nccwpck_require__(165), + copyArray = __nccwpck_require__(77560), + copySymbols = __nccwpck_require__(97472), + copySymbolsIn = __nccwpck_require__(61935), + getAllKeys = __nccwpck_require__(78479), + getAllKeysIn = __nccwpck_require__(17172), + getTag = __nccwpck_require__(44512), + initCloneArray = __nccwpck_require__(43688), + initCloneByTag = __nccwpck_require__(75906), + initCloneObject = __nccwpck_require__(20866), + isArray = __nccwpck_require__(77192), + isBuffer = __nccwpck_require__(43739), + isMap = __nccwpck_require__(85995), + isObject = __nccwpck_require__(96482), + isSet = __nccwpck_require__(27077), + keys = __nccwpck_require__(26741), + keysIn = __nccwpck_require__(19430); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; - const [key, ...value] = part.split('=') + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); - out.push(`${key.trim()}=${value.join('=')}`) + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); } - return out.join('; ') -} + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); -module.exports = { - isCTLExcludingHtab, - validateCookieName, - validateCookiePath, - validateCookieValue, - toIMFDate, - stringify + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; } +module.exports = baseClone; + /***/ }), -/***/ 9136: +/***/ 33733: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var isObject = __nccwpck_require__(96482); +/** Built-in value references. */ +var objectCreate = Object.create; -const net = __nccwpck_require__(9278) -const assert = __nccwpck_require__(2613) -const util = __nccwpck_require__(3440) -const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8707) +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); -let tls // include tls conditionally since it is not always available +module.exports = baseCreate; -// TODO: session re-use does not wait for the first -// connection to resolve the session and might therefore -// resolve the same servername multiple times even when -// re-use is enabled. -let SessionCache -// FIXME: remove workaround when the Node bug is fixed -// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 -if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { - SessionCache = class WeakSessionCache { - constructor (maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions - this._sessionCache = new Map() - this._sessionRegistry = new global.FinalizationRegistry((key) => { - if (this._sessionCache.size < this._maxCachedSessions) { - return - } +/***/ }), - const ref = this._sessionCache.get(key) - if (ref !== undefined && ref.deref() === undefined) { - this._sessionCache.delete(key) - } - }) - } +/***/ 11616: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - get (sessionKey) { - const ref = this._sessionCache.get(sessionKey) - return ref ? ref.deref() : null - } +var baseForOwn = __nccwpck_require__(16484), + createBaseEach = __nccwpck_require__(40728); - set (sessionKey, session) { - if (this._maxCachedSessions === 0) { - return - } +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); - this._sessionCache.set(sessionKey, new WeakRef(session)) - this._sessionRegistry.register(session, sessionKey) - } - } -} else { - SessionCache = class SimpleSessionCache { - constructor (maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions - this._sessionCache = new Map() - } +module.exports = baseEach; - get (sessionKey) { - return this._sessionCache.get(sessionKey) - } - set (sessionKey, session) { - if (this._maxCachedSessions === 0) { - return - } +/***/ }), - if (this._sessionCache.size >= this._maxCachedSessions) { - // remove the oldest session - const { value: oldestKey } = this._sessionCache.keys().next() - this._sessionCache.delete(oldestKey) - } +/***/ 63183: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this._sessionCache.set(sessionKey, session) +var arrayPush = __nccwpck_require__(50827), + isFlattenable = __nccwpck_require__(45088); + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; } } + return result; } -function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { - if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { - throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') - } +module.exports = baseFlatten; - const options = { path: socketPath, ...opts } - const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions) - timeout = timeout == null ? 10e3 : timeout - allowH2 = allowH2 != null ? allowH2 : false - return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { - let socket - if (protocol === 'https:') { - if (!tls) { - tls = __nccwpck_require__(4756) - } - servername = servername || options.servername || util.getServerName(host) || null - const sessionKey = servername || hostname - const session = sessionCache.get(sessionKey) || null +/***/ }), - assert(sessionKey) +/***/ 26798: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - socket = tls.connect({ - highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... - ...options, - servername, - session, - localAddress, - // TODO(HTTP/2): Add support for h2c - ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], - socket: httpSocket, // upgrade socket connection - port: port || 443, - host: hostname - }) +var createBaseFor = __nccwpck_require__(13142); - socket - .on('session', function (session) { - // TODO (fix): Can a session become invalid once established? Don't think so? - sessionCache.set(sessionKey, session) - }) - } else { - assert(!httpSocket, 'httpSocket can only be sent on TLS update') - socket = net.connect({ - highWaterMark: 64 * 1024, // Same as nodejs fs streams. - ...options, - localAddress, - port: port || 80, - host: hostname - }) - } +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); - // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket - if (options.keepAlive == null || options.keepAlive) { - const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay - socket.setKeepAlive(true, keepAliveInitialDelay) - } +module.exports = baseFor; - const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout) - socket - .setNoDelay(true) - .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { - cancelTimeout() +/***/ }), - if (callback) { - const cb = callback - callback = null - cb(null, this) - } - }) - .on('error', function (err) { - cancelTimeout() +/***/ 16484: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (callback) { - const cb = callback - callback = null - cb(err) - } - }) +var baseFor = __nccwpck_require__(26798), + keys = __nccwpck_require__(26741); - return socket - } +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); } -function setupTimeout (onConnectTimeout, timeout) { - if (!timeout) { - return () => {} - } +module.exports = baseForOwn; - let s1 = null - let s2 = null - const timeoutId = setTimeout(() => { - // setImmediate is added to make sure that we priotorise socket error events over timeouts - s1 = setImmediate(() => { - if (process.platform === 'win32') { - // Windows needs an extra setImmediate probably due to implementation differences in the socket logic - s2 = setImmediate(() => onConnectTimeout()) - } else { - onConnectTimeout() - } - }) - }, timeout) - return () => { - clearTimeout(timeoutId) - clearImmediate(s1) - clearImmediate(s2) + +/***/ }), + +/***/ 40877: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var castPath = __nccwpck_require__(77336), + toKey = __nccwpck_require__(95086); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; } + return (index && index == length) ? object : undefined; } -function onConnectTimeout (socket) { - util.destroy(socket, new ConnectTimeoutError()) +module.exports = baseGet; + + +/***/ }), + +/***/ 24586: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayPush = __nccwpck_require__(50827), + isArray = __nccwpck_require__(77192); + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); } -module.exports = buildConnector +module.exports = baseGetAllKeys; /***/ }), -/***/ 735: -/***/ ((module) => { - -"use strict"; +/***/ 29117: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var Symbol = __nccwpck_require__(38584), + getRawTag = __nccwpck_require__(95292), + objectToString = __nccwpck_require__(71723); -/** @type {Record<string, string | undefined>} */ -const headerNameLowerCasedRecord = {} +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; -// https://developer.mozilla.org/docs/Web/HTTP/Headers -const wellknownHeaderNames = [ - 'Accept', - 'Accept-Encoding', - 'Accept-Language', - 'Accept-Ranges', - 'Access-Control-Allow-Credentials', - 'Access-Control-Allow-Headers', - 'Access-Control-Allow-Methods', - 'Access-Control-Allow-Origin', - 'Access-Control-Expose-Headers', - 'Access-Control-Max-Age', - 'Access-Control-Request-Headers', - 'Access-Control-Request-Method', - 'Age', - 'Allow', - 'Alt-Svc', - 'Alt-Used', - 'Authorization', - 'Cache-Control', - 'Clear-Site-Data', - 'Connection', - 'Content-Disposition', - 'Content-Encoding', - 'Content-Language', - 'Content-Length', - 'Content-Location', - 'Content-Range', - 'Content-Security-Policy', - 'Content-Security-Policy-Report-Only', - 'Content-Type', - 'Cookie', - 'Cross-Origin-Embedder-Policy', - 'Cross-Origin-Opener-Policy', - 'Cross-Origin-Resource-Policy', - 'Date', - 'Device-Memory', - 'Downlink', - 'ECT', - 'ETag', - 'Expect', - 'Expect-CT', - 'Expires', - 'Forwarded', - 'From', - 'Host', - 'If-Match', - 'If-Modified-Since', - 'If-None-Match', - 'If-Range', - 'If-Unmodified-Since', - 'Keep-Alive', - 'Last-Modified', - 'Link', - 'Location', - 'Max-Forwards', - 'Origin', - 'Permissions-Policy', - 'Pragma', - 'Proxy-Authenticate', - 'Proxy-Authorization', - 'RTT', - 'Range', - 'Referer', - 'Referrer-Policy', - 'Refresh', - 'Retry-After', - 'Sec-WebSocket-Accept', - 'Sec-WebSocket-Extensions', - 'Sec-WebSocket-Key', - 'Sec-WebSocket-Protocol', - 'Sec-WebSocket-Version', - 'Server', - 'Server-Timing', - 'Service-Worker-Allowed', - 'Service-Worker-Navigation-Preload', - 'Set-Cookie', - 'SourceMap', - 'Strict-Transport-Security', - 'Supports-Loading-Mode', - 'TE', - 'Timing-Allow-Origin', - 'Trailer', - 'Transfer-Encoding', - 'Upgrade', - 'Upgrade-Insecure-Requests', - 'User-Agent', - 'Vary', - 'Via', - 'WWW-Authenticate', - 'X-Content-Type-Options', - 'X-DNS-Prefetch-Control', - 'X-Frame-Options', - 'X-Permitted-Cross-Domain-Policies', - 'X-Powered-By', - 'X-Requested-With', - 'X-XSS-Protection' -] +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; -for (let i = 0; i < wellknownHeaderNames.length; ++i) { - const key = wellknownHeaderNames[i] - const lowerCasedKey = key.toLowerCase() - headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = - lowerCasedKey +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); } -// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. -Object.setPrototypeOf(headerNameLowerCasedRecord, null) +module.exports = baseGetTag; -module.exports = { - wellknownHeaderNames, - headerNameLowerCasedRecord + +/***/ }), + +/***/ 6186: +/***/ ((module) => { + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); } +module.exports = baseHasIn; + /***/ }), -/***/ 8707: -/***/ ((module) => { +/***/ 93605: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var baseGetTag = __nccwpck_require__(29117), + isObjectLike = __nccwpck_require__(51645); +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; -class UndiciError extends Error { - constructor (message) { - super(message) - this.name = 'UndiciError' - this.code = 'UND_ERR' - } +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; } -class ConnectTimeoutError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, ConnectTimeoutError) - this.name = 'ConnectTimeoutError' - this.message = message || 'Connect Timeout Error' - this.code = 'UND_ERR_CONNECT_TIMEOUT' - } -} +module.exports = baseIsArguments; -class HeadersTimeoutError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, HeadersTimeoutError) - this.name = 'HeadersTimeoutError' - this.message = message || 'Headers Timeout Error' - this.code = 'UND_ERR_HEADERS_TIMEOUT' - } -} -class HeadersOverflowError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, HeadersOverflowError) - this.name = 'HeadersOverflowError' - this.message = message || 'Headers Overflow Error' - this.code = 'UND_ERR_HEADERS_OVERFLOW' - } -} +/***/ }), -class BodyTimeoutError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, BodyTimeoutError) - this.name = 'BodyTimeoutError' - this.message = message || 'Body Timeout Error' - this.code = 'UND_ERR_BODY_TIMEOUT' - } -} +/***/ 95777: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -class ResponseStatusCodeError extends UndiciError { - constructor (message, statusCode, headers, body) { - super(message) - Error.captureStackTrace(this, ResponseStatusCodeError) - this.name = 'ResponseStatusCodeError' - this.message = message || 'Response Status Code Error' - this.code = 'UND_ERR_RESPONSE_STATUS_CODE' - this.body = body - this.status = statusCode - this.statusCode = statusCode - this.headers = headers +var baseIsEqualDeep = __nccwpck_require__(19275), + isObjectLike = __nccwpck_require__(51645); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); } -class InvalidArgumentError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, InvalidArgumentError) - this.name = 'InvalidArgumentError' - this.message = message || 'Invalid Argument Error' - this.code = 'UND_ERR_INVALID_ARG' +module.exports = baseIsEqual; + + +/***/ }), + +/***/ 19275: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stack = __nccwpck_require__(73262), + equalArrays = __nccwpck_require__(5248), + equalByTag = __nccwpck_require__(9895), + equalObjects = __nccwpck_require__(52500), + getTag = __nccwpck_require__(44512), + isArray = __nccwpck_require__(77192), + isBuffer = __nccwpck_require__(43739), + isTypedArray = __nccwpck_require__(35000); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; } -} + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); -class InvalidReturnValueError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, InvalidReturnValueError) - this.name = 'InvalidReturnValueError' - this.message = message || 'Invalid Return Value Error' - this.code = 'UND_ERR_INVALID_RETURN_VALUE' + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } -class RequestAbortedError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, RequestAbortedError) - this.name = 'AbortError' - this.message = message || 'Request aborted' - this.code = 'UND_ERR_ABORTED' - } -} +module.exports = baseIsEqualDeep; -class InformationalError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, InformationalError) - this.name = 'InformationalError' - this.message = message || 'Request information' - this.code = 'UND_ERR_INFO' - } -} -class RequestContentLengthMismatchError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, RequestContentLengthMismatchError) - this.name = 'RequestContentLengthMismatchError' - this.message = message || 'Request body length does not match content-length header' - this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' - } -} +/***/ }), -class ResponseContentLengthMismatchError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, ResponseContentLengthMismatchError) - this.name = 'ResponseContentLengthMismatchError' - this.message = message || 'Response body length does not match content-length header' - this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH' - } -} +/***/ 66051: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -class ClientDestroyedError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, ClientDestroyedError) - this.name = 'ClientDestroyedError' - this.message = message || 'The client is destroyed' - this.code = 'UND_ERR_DESTROYED' - } -} +var getTag = __nccwpck_require__(44512), + isObjectLike = __nccwpck_require__(51645); -class ClientClosedError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, ClientClosedError) - this.name = 'ClientClosedError' - this.message = message || 'The client is closed' - this.code = 'UND_ERR_CLOSED' - } -} +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; -class SocketError extends UndiciError { - constructor (message, socket) { - super(message) - Error.captureStackTrace(this, SocketError) - this.name = 'SocketError' - this.message = message || 'Socket error' - this.code = 'UND_ERR_SOCKET' - this.socket = socket - } +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; } -class NotSupportedError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, NotSupportedError) - this.name = 'NotSupportedError' - this.message = message || 'Not supported error' - this.code = 'UND_ERR_NOT_SUPPORTED' - } -} +module.exports = baseIsMap; -class BalancedPoolMissingUpstreamError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, NotSupportedError) - this.name = 'MissingUpstreamError' - this.message = message || 'No upstream has been added to the BalancedPool' - this.code = 'UND_ERR_BPL_MISSING_UPSTREAM' - } -} -class HTTPParserError extends Error { - constructor (message, code, data) { - super(message) - Error.captureStackTrace(this, HTTPParserError) - this.name = 'HTTPParserError' - this.code = code ? `HPE_${code}` : undefined - this.data = data ? data.toString() : undefined - } -} +/***/ }), -class ResponseExceededMaxSizeError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, ResponseExceededMaxSizeError) - this.name = 'ResponseExceededMaxSizeError' - this.message = message || 'Response content exceeded max size' - this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE' +/***/ 67792: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Stack = __nccwpck_require__(73262), + baseIsEqual = __nccwpck_require__(95777); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } } -} + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; -class RequestRetryError extends UndiciError { - constructor (message, code, { headers, data }) { - super(message) - Error.captureStackTrace(this, RequestRetryError) - this.name = 'RequestRetryError' - this.message = message || 'Request retry error' - this.code = 'UND_ERR_REQ_RETRY' - this.statusCode = code - this.data = data - this.headers = headers + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } } + return true; } -module.exports = { - HTTPParserError, - UndiciError, - HeadersTimeoutError, - HeadersOverflowError, - BodyTimeoutError, - RequestContentLengthMismatchError, - ConnectTimeoutError, - ResponseStatusCodeError, - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError, - ClientDestroyedError, - ClientClosedError, - InformationalError, - SocketError, - NotSupportedError, - ResponseContentLengthMismatchError, - BalancedPoolMissingUpstreamError, - ResponseExceededMaxSizeError, - RequestRetryError -} +module.exports = baseIsMatch; /***/ }), -/***/ 4655: +/***/ 92334: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; - - -const { - InvalidArgumentError, - NotSupportedError -} = __nccwpck_require__(8707) -const assert = __nccwpck_require__(2613) -const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(6443) -const util = __nccwpck_require__(3440) - -// tokenRegExp and headerCharRegex have been lifted from -// https://github.com/nodejs/node/blob/main/lib/_http_common.js +var isFunction = __nccwpck_require__(34329), + isMasked = __nccwpck_require__(46613), + isObject = __nccwpck_require__(96482), + toSource = __nccwpck_require__(57192); /** - * Verifies that the given val is a valid HTTP token - * per the rules defined in RFC 7230 - * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ -const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -/** - * Matches if val contains an invalid field-vchar - * field-value = *( field-content / obs-fold ) - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - */ -const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -// Verifies that a given path is valid does not contain control chars \x00 to \x20 -const invalidPathRegex = /[^\u0021-\u00ff]/ +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; -const kHandler = Symbol('handler') +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; -const channels = {} +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -let extractBody +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); -try { - const diagnosticsChannel = __nccwpck_require__(1637) - channels.create = diagnosticsChannel.channel('undici:request:create') - channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent') - channels.headers = diagnosticsChannel.channel('undici:request:headers') - channels.trailers = diagnosticsChannel.channel('undici:request:trailers') - channels.error = diagnosticsChannel.channel('undici:request:error') -} catch { - channels.create = { hasSubscribers: false } - channels.bodySent = { hasSubscribers: false } - channels.headers = { hasSubscribers: false } - channels.trailers = { hasSubscribers: false } - channels.error = { hasSubscribers: false } +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); } -class Request { - constructor (origin, { - path, - method, - body, - headers, - query, - idempotent, - blocking, - upgrade, - headersTimeout, - bodyTimeout, - reset, - throwOnError, - expectContinue - }, handler) { - if (typeof path !== 'string') { - throw new InvalidArgumentError('path must be a string') - } else if ( - path[0] !== '/' && - !(path.startsWith('http://') || path.startsWith('https://')) && - method !== 'CONNECT' - ) { - throw new InvalidArgumentError('path must be an absolute URL or start with a slash') - } else if (invalidPathRegex.exec(path) !== null) { - throw new InvalidArgumentError('invalid request path') - } - - if (typeof method !== 'string') { - throw new InvalidArgumentError('method must be a string') - } else if (tokenRegExp.exec(method) === null) { - throw new InvalidArgumentError('invalid request method') - } - - if (upgrade && typeof upgrade !== 'string') { - throw new InvalidArgumentError('upgrade must be a string') - } - - if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError('invalid headersTimeout') - } +module.exports = baseIsNative; - if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError('invalid bodyTimeout') - } - if (reset != null && typeof reset !== 'boolean') { - throw new InvalidArgumentError('invalid reset') - } +/***/ }), - if (expectContinue != null && typeof expectContinue !== 'boolean') { - throw new InvalidArgumentError('invalid expectContinue') - } +/***/ 85901: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.headersTimeout = headersTimeout +var getTag = __nccwpck_require__(44512), + isObjectLike = __nccwpck_require__(51645); - this.bodyTimeout = bodyTimeout +/** `Object#toString` result references. */ +var setTag = '[object Set]'; - this.throwOnError = throwOnError === true +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} - this.method = method +module.exports = baseIsSet; - this.abort = null - if (body == null) { - this.body = null - } else if (util.isStream(body)) { - this.body = body +/***/ }), - const rState = this.body._readableState - if (!rState || !rState.autoDestroy) { - this.endHandler = function autoDestroy () { - util.destroy(this) - } - this.body.on('end', this.endHandler) - } +/***/ 16880: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.errorHandler = err => { - if (this.abort) { - this.abort(err) - } else { - this.error = err - } - } - this.body.on('error', this.errorHandler) - } else if (util.isBuffer(body)) { - this.body = body.byteLength ? body : null - } else if (ArrayBuffer.isView(body)) { - this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null - } else if (body instanceof ArrayBuffer) { - this.body = body.byteLength ? Buffer.from(body) : null - } else if (typeof body === 'string') { - this.body = body.length ? Buffer.from(body) : null - } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { - this.body = body - } else { - throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') - } +var baseGetTag = __nccwpck_require__(29117), + isLength = __nccwpck_require__(56657), + isObjectLike = __nccwpck_require__(51645); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} - this.completed = false +module.exports = baseIsTypedArray; - this.aborted = false - this.upgrade = upgrade || null +/***/ }), - this.path = query ? util.buildURL(path, query) : path +/***/ 47988: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.origin = origin +var baseMatches = __nccwpck_require__(21244), + baseMatchesProperty = __nccwpck_require__(66481), + identity = __nccwpck_require__(46851), + isArray = __nccwpck_require__(77192), + property = __nccwpck_require__(11024); - this.idempotent = idempotent == null - ? method === 'HEAD' || method === 'GET' - : idempotent +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} - this.blocking = blocking == null ? false : blocking +module.exports = baseIteratee; - this.reset = reset == null ? null : reset - this.host = null +/***/ }), - this.contentLength = null +/***/ 31517: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.contentType = null +var isPrototype = __nccwpck_require__(55944), + nativeKeys = __nccwpck_require__(63787); - this.headers = '' +/** Used for built-in method references. */ +var objectProto = Object.prototype; - // Only for H2 - this.expectContinue = expectContinue != null ? expectContinue : false +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError('headers array must be even') - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]) - } - } else if (headers && typeof headers === 'object') { - const keys = Object.keys(headers) - for (let i = 0; i < keys.length; i++) { - const key = keys[i] - processHeader(this, key, headers[key]) - } - } else if (headers != null) { - throw new InvalidArgumentError('headers must be an object or an array') +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); } + } + return result; +} - if (util.isFormDataLike(this.body)) { - if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { - throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') - } +module.exports = baseKeys; - if (!extractBody) { - extractBody = (__nccwpck_require__(8923).extractBody) - } - const [bodyStream, contentType] = extractBody(body) - if (this.contentType == null) { - this.contentType = contentType - this.headers += `content-type: ${contentType}\r\n` - } - this.body = bodyStream.stream - this.contentLength = bodyStream.length - } else if (util.isBlobLike(body) && this.contentType == null && body.type) { - this.contentType = body.type - this.headers += `content-type: ${body.type}\r\n` - } +/***/ }), - util.validateHandler(handler, method, upgrade) +/***/ 82094: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.servername = util.getServerName(this.host) +var isObject = __nccwpck_require__(96482), + isPrototype = __nccwpck_require__(55944), + nativeKeysIn = __nccwpck_require__(94008); - this[kHandler] = handler +/** Used for built-in method references. */ +var objectProto = Object.prototype; - if (channels.create.hasSubscribers) { - channels.create.publish({ request: this }) - } +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); } + var isProto = isPrototype(object), + result = []; - onBodySent (chunk) { - if (this[kHandler].onBodySent) { - try { - return this[kHandler].onBodySent(chunk) - } catch (err) { - this.abort(err) - } + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); } } + return result; +} - onRequestSent () { - if (channels.bodySent.hasSubscribers) { - channels.bodySent.publish({ request: this }) - } +module.exports = baseKeysIn; - if (this[kHandler].onRequestSent) { - try { - return this[kHandler].onRequestSent() - } catch (err) { - this.abort(err) - } - } - } - onConnect (abort) { - assert(!this.aborted) - assert(!this.completed) +/***/ }), - if (this.error) { - abort(this.error) - } else { - this.abort = abort - return this[kHandler].onConnect(abort) - } - } +/***/ 44503: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - onHeaders (statusCode, headers, resume, statusText) { - assert(!this.aborted) - assert(!this.completed) +var baseEach = __nccwpck_require__(11616), + isArrayLike = __nccwpck_require__(75119); - if (channels.headers.hasSubscribers) { - channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }) - } +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; - try { - return this[kHandler].onHeaders(statusCode, headers, resume, statusText) - } catch (err) { - this.abort(err) - } - } + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} - onData (chunk) { - assert(!this.aborted) - assert(!this.completed) +module.exports = baseMap; - try { - return this[kHandler].onData(chunk) - } catch (err) { - this.abort(err) - return false - } - } - onUpgrade (statusCode, headers, socket) { - assert(!this.aborted) - assert(!this.completed) +/***/ }), - return this[kHandler].onUpgrade(statusCode, headers, socket) +/***/ 21244: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseIsMatch = __nccwpck_require__(67792), + getMatchData = __nccwpck_require__(69081), + matchesStrictComparable = __nccwpck_require__(78218); + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} - onComplete (trailers) { - this.onFinally() +module.exports = baseMatches; - assert(!this.aborted) - this.completed = true - if (channels.trailers.hasSubscribers) { - channels.trailers.publish({ request: this, trailers }) - } +/***/ }), - try { - return this[kHandler].onComplete(trailers) - } catch (err) { - // TODO (fix): This might be a bad idea? - this.onError(err) - } - } +/***/ 66481: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - onError (error) { - this.onFinally() +var baseIsEqual = __nccwpck_require__(95777), + get = __nccwpck_require__(40181), + hasIn = __nccwpck_require__(66306), + isKey = __nccwpck_require__(20897), + isStrictComparable = __nccwpck_require__(12757), + matchesStrictComparable = __nccwpck_require__(78218), + toKey = __nccwpck_require__(95086); - if (channels.error.hasSubscribers) { - channels.error.publish({ request: this, error }) - } +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; - if (this.aborted) { - return - } - this.aborted = true +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} - return this[kHandler].onError(error) - } +module.exports = baseMatchesProperty; - onFinally () { - if (this.errorHandler) { - this.body.off('error', this.errorHandler) - this.errorHandler = null - } - if (this.endHandler) { - this.body.off('end', this.endHandler) - this.endHandler = null - } - } +/***/ }), - // TODO: adjust to support H2 - addHeader (key, value) { - processHeader(this, key, value) - return this - } +/***/ 89196: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - static [kHTTP1BuildRequest] (origin, opts, handler) { - // TODO: Migrate header parsing here, to make Requests - // HTTP agnostic - return new Request(origin, opts, handler) +var arrayMap = __nccwpck_require__(56649), + baseGet = __nccwpck_require__(40877), + baseIteratee = __nccwpck_require__(47988), + baseMap = __nccwpck_require__(44503), + baseSortBy = __nccwpck_require__(22388), + baseUnary = __nccwpck_require__(55506), + compareMultiple = __nccwpck_require__(37073), + identity = __nccwpck_require__(46851), + isArray = __nccwpck_require__(77192); + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; } - static [kHTTP2BuildRequest] (origin, opts, handler) { - const headers = opts.headers - opts = { ...opts, headers: null } + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); - const request = new Request(origin, opts, handler) + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); - request.headers = {} + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); +} - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError('headers array must be even') - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(request, headers[i], headers[i + 1], true) - } - } else if (headers && typeof headers === 'object') { - const keys = Object.keys(headers) - for (let i = 0; i < keys.length; i++) { - const key = keys[i] - processHeader(request, key, headers[key], true) - } - } else if (headers != null) { - throw new InvalidArgumentError('headers must be an object or an array') - } - - return request - } +module.exports = baseOrderBy; - static [kHTTP2CopyHeaders] (raw) { - const rawHeaders = raw.split('\r\n') - const headers = {} - - for (const header of rawHeaders) { - const [key, value] = header.split(': ') - if (value == null || value.length === 0) continue +/***/ }), - if (headers[key]) headers[key] += `,${value}` - else headers[key] = value - } +/***/ 66136: +/***/ ((module) => { - return headers - } +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; } -function processHeaderValue (key, val, skipAppend) { - if (val && typeof val === 'object') { - throw new InvalidArgumentError(`invalid ${key} header`) - } +module.exports = baseProperty; - val = val != null ? `${val}` : '' - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`) - } +/***/ }), - return skipAppend ? val : `${key}: ${val}\r\n` -} +/***/ 32310: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function processHeader (request, key, val, skipAppend = false) { - if (val && (typeof val === 'object' && !Array.isArray(val))) { - throw new InvalidArgumentError(`invalid ${key} header`) - } else if (val === undefined) { - return - } +var baseGet = __nccwpck_require__(40877); - if ( - request.host === null && - key.length === 4 && - key.toLowerCase() === 'host' - ) { - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`) - } - // Consumed by Client - request.host = val - } else if ( - request.contentLength === null && - key.length === 14 && - key.toLowerCase() === 'content-length' - ) { - request.contentLength = parseInt(val, 10) - if (!Number.isFinite(request.contentLength)) { - throw new InvalidArgumentError('invalid content-length header') - } - } else if ( - request.contentType === null && - key.length === 12 && - key.toLowerCase() === 'content-type' - ) { - request.contentType = val - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) - else request.headers += processHeaderValue(key, val) - } else if ( - key.length === 17 && - key.toLowerCase() === 'transfer-encoding' - ) { - throw new InvalidArgumentError('invalid transfer-encoding header') - } else if ( - key.length === 10 && - key.toLowerCase() === 'connection' - ) { - const value = typeof val === 'string' ? val.toLowerCase() : null - if (value !== 'close' && value !== 'keep-alive') { - throw new InvalidArgumentError('invalid connection header') - } else if (value === 'close') { - request.reset = true - } - } else if ( - key.length === 10 && - key.toLowerCase() === 'keep-alive' - ) { - throw new InvalidArgumentError('invalid keep-alive header') - } else if ( - key.length === 7 && - key.toLowerCase() === 'upgrade' - ) { - throw new InvalidArgumentError('invalid upgrade header') - } else if ( - key.length === 6 && - key.toLowerCase() === 'expect' - ) { - throw new NotSupportedError('expect header not supported') - } else if (tokenRegExp.exec(key) === null) { - throw new InvalidArgumentError('invalid header key') - } else { - if (Array.isArray(val)) { - for (let i = 0; i < val.length; i++) { - if (skipAppend) { - if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}` - else request.headers[key] = processHeaderValue(key, val[i], skipAppend) - } else { - request.headers += processHeaderValue(key, val[i]) - } - } - } else { - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) - else request.headers += processHeaderValue(key, val) - } - } +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; } -module.exports = Request +module.exports = basePropertyDeep; /***/ }), -/***/ 6443: -/***/ ((module) => { +/***/ 22035: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = { - kClose: Symbol('close'), - kDestroy: Symbol('destroy'), - kDispatch: Symbol('dispatch'), - kUrl: Symbol('url'), - kWriting: Symbol('writing'), - kResuming: Symbol('resuming'), - kQueue: Symbol('queue'), - kConnect: Symbol('connect'), - kConnecting: Symbol('connecting'), - kHeadersList: Symbol('headers list'), - kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), - kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), - kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), - kKeepAliveTimeoutValue: Symbol('keep alive timeout'), - kKeepAlive: Symbol('keep alive'), - kHeadersTimeout: Symbol('headers timeout'), - kBodyTimeout: Symbol('body timeout'), - kServerName: Symbol('server name'), - kLocalAddress: Symbol('local address'), - kHost: Symbol('host'), - kNoRef: Symbol('no ref'), - kBodyUsed: Symbol('used'), - kRunning: Symbol('running'), - kBlocking: Symbol('blocking'), - kPending: Symbol('pending'), - kSize: Symbol('size'), - kBusy: Symbol('busy'), - kQueued: Symbol('queued'), - kFree: Symbol('free'), - kConnected: Symbol('connected'), - kClosed: Symbol('closed'), - kNeedDrain: Symbol('need drain'), - kReset: Symbol('reset'), - kDestroyed: Symbol.for('nodejs.stream.destroyed'), - kMaxHeadersSize: Symbol('max headers size'), - kRunningIdx: Symbol('running index'), - kPendingIdx: Symbol('pending index'), - kError: Symbol('error'), - kClients: Symbol('clients'), - kClient: Symbol('client'), - kParser: Symbol('parser'), - kOnDestroyed: Symbol('destroy callbacks'), - kPipelining: Symbol('pipelining'), - kSocket: Symbol('socket'), - kHostHeader: Symbol('host header'), - kConnector: Symbol('connector'), - kStrictContentLength: Symbol('strict content length'), - kMaxRedirections: Symbol('maxRedirections'), - kMaxRequests: Symbol('maxRequestsPerClient'), - kProxy: Symbol('proxy agent options'), - kCounter: Symbol('socket request counter'), - kInterceptors: Symbol('dispatch interceptors'), - kMaxResponseSize: Symbol('max response size'), - kHTTP2Session: Symbol('http2Session'), - kHTTP2SessionState: Symbol('http2Session state'), - kHTTP2BuildRequest: Symbol('http2 build request'), - kHTTP1BuildRequest: Symbol('http1 build request'), - kHTTP2CopyHeaders: Symbol('http2 copy headers'), - kHTTPConnVersion: Symbol('http connection version'), - kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), - kConstruct: Symbol('constructable') +var identity = __nccwpck_require__(46851), + overRest = __nccwpck_require__(20168), + setToString = __nccwpck_require__(59402); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); } +module.exports = baseRest; + /***/ }), -/***/ 3440: +/***/ 64953: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var constant = __nccwpck_require__(85089), + defineProperty = __nccwpck_require__(83106), + identity = __nccwpck_require__(46851); +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; -const assert = __nccwpck_require__(2613) -const { kDestroyed, kBodyUsed } = __nccwpck_require__(6443) -const { IncomingMessage } = __nccwpck_require__(8611) -const stream = __nccwpck_require__(2203) -const net = __nccwpck_require__(9278) -const { InvalidArgumentError } = __nccwpck_require__(8707) -const { Blob } = __nccwpck_require__(181) -const nodeUtil = __nccwpck_require__(9023) -const { stringify } = __nccwpck_require__(3480) -const { headerNameLowerCasedRecord } = __nccwpck_require__(735) +module.exports = baseSetToString; -const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) -function nop () {} +/***/ }), -function isStream (obj) { - return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function' -} +/***/ 22388: +/***/ ((module) => { -// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) -function isBlobLike (object) { - return (Blob && object instanceof Blob) || ( - object && - typeof object === 'object' && - (typeof object.stream === 'function' || - typeof object.arrayBuffer === 'function') && - /^(Blob|File)$/.test(object[Symbol.toStringTag]) - ) -} +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; -function buildURL (url, queryParams) { - if (url.includes('?') || url.includes('#')) { - throw new Error('Query params cannot be passed when url already contains "?" or "#".') + array.sort(comparer); + while (length--) { + array[length] = array[length].value; } + return array; +} - const stringified = stringify(queryParams) +module.exports = baseSortBy; - if (stringified) { - url += '?' + stringified - } - return url -} +/***/ }), -function parseURL (url) { - if (typeof url === 'string') { - url = new URL(url) +/***/ 21299: +/***/ ((module) => { - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') - } +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - return url + while (++index < n) { + result[index] = iteratee(index); } + return result; +} - if (!url || typeof url !== 'object') { - throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.') - } +module.exports = baseTimes; - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') - } - if (!(url instanceof URL)) { - if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { - throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.') - } +/***/ }), - if (url.path != null && typeof url.path !== 'string') { - throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.') - } +/***/ 17625: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (url.pathname != null && typeof url.pathname !== 'string') { - throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.') - } +var Symbol = __nccwpck_require__(38584), + arrayMap = __nccwpck_require__(56649), + isArray = __nccwpck_require__(77192), + isSymbol = __nccwpck_require__(70661); - if (url.hostname != null && typeof url.hostname !== 'string') { - throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.') - } +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; - if (url.origin != null && typeof url.origin !== 'string') { - throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.') - } +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; - const port = url.port != null - ? url.port - : (url.protocol === 'https:' ? 443 : 80) - let origin = url.origin != null - ? url.origin - : `${url.protocol}//${url.hostname}:${port}` - let path = url.path != null - ? url.path - : `${url.pathname || ''}${url.search || ''}` +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - if (origin.endsWith('/')) { - origin = origin.substring(0, origin.length - 1) - } +module.exports = baseToString; - if (path && !path.startsWith('/')) { - path = `/${path}` - } - // new URL(path, origin) is unsafe when `path` contains an absolute URL - // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: - // If first parameter is a relative URL, second param is required, and will be used as the base URL. - // If first parameter is an absolute URL, a given second param will be ignored. - url = new URL(origin + path) - } - return url +/***/ }), + +/***/ 55506: +/***/ ((module) => { + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; } -function parseOrigin (url) { - url = parseURL(url) +module.exports = baseUnary; - if (url.pathname !== '/' || url.search || url.hash) { - throw new InvalidArgumentError('invalid url') - } - return url +/***/ }), + +/***/ 64486: +/***/ ((module) => { + +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); } -function getHostname (host) { - if (host[0] === '[') { - const idx = host.indexOf(']') +module.exports = cacheHas; - assert(idx !== -1) - return host.substring(1, idx) - } - const idx = host.indexOf(':') - if (idx === -1) return host +/***/ }), - return host.substring(0, idx) -} +/***/ 77336: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// IP addresses are not valid server names per RFC6066 -// > Currently, the only server names supported are DNS hostnames -function getServerName (host) { - if (!host) { - return null +var isArray = __nccwpck_require__(77192), + isKey = __nccwpck_require__(20897), + stringToPath = __nccwpck_require__(72187), + toString = __nccwpck_require__(87233); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} - assert.strictEqual(typeof host, 'string') +module.exports = castPath; - const servername = getHostname(host) - if (net.isIP(servername)) { - return '' - } - return servername -} +/***/ }), -function deepClone (obj) { - return JSON.parse(JSON.stringify(obj)) -} +/***/ 71336: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function isAsyncIterable (obj) { - return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') -} +var Uint8Array = __nccwpck_require__(59525); -function isIterable (obj) { - return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; } -function bodyLength (body) { - if (body == null) { - return 0 - } else if (isStream(body)) { - const state = body._readableState - return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) - ? state.length - : null - } else if (isBlobLike(body)) { - return body.size != null ? body.size : null - } else if (isBuffer(body)) { - return body.byteLength - } +module.exports = cloneArrayBuffer; - return null -} -function isDestroyed (stream) { - return !stream || !!(stream.destroyed || stream[kDestroyed]) -} +/***/ }), -function isReadableAborted (stream) { - const state = stream && stream._readableState - return isDestroyed(stream) && state && !state.endEmitted -} +/***/ 165: +/***/ ((module, exports, __nccwpck_require__) => { -function destroy (stream, err) { - if (stream == null || !isStream(stream) || isDestroyed(stream)) { - return - } +/* module decorator */ module = __nccwpck_require__.nmd(module); +var root = __nccwpck_require__(6748); - if (typeof stream.destroy === 'function') { - if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { - // See: https://github.com/nodejs/node/pull/38505/files - stream.socket = null - } +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; - stream.destroy(err) - } else if (err) { - process.nextTick((stream, err) => { - stream.emit('error', err) - }, stream, err) - } +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; - if (stream.destroyed !== true) { - stream[kDestroyed] = true +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); } -} + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); -const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/ -function parseKeepAliveTimeout (val) { - const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR) - return m ? parseInt(m[1], 10) * 1000 : null + buffer.copy(result); + return result; } +module.exports = cloneBuffer; + + +/***/ }), + +/***/ 20114: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var cloneArrayBuffer = __nccwpck_require__(71336); + /** - * Retrieves a header name and returns its lowercase value. - * @param {string | Buffer} value Header name - * @returns {string} + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. */ -function headerNameToString (value) { - return headerNameLowerCasedRecord[value] || value.toLowerCase() +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); } -function parseHeaders (headers, obj = {}) { - // For H2 support - if (!Array.isArray(headers)) return headers +module.exports = cloneDataView; - for (let i = 0; i < headers.length; i += 2) { - const key = headers[i].toString().toLowerCase() - let val = obj[key] - if (!val) { - if (Array.isArray(headers[i + 1])) { - obj[key] = headers[i + 1].map(x => x.toString('utf8')) - } else { - obj[key] = headers[i + 1].toString('utf8') - } - } else { - if (!Array.isArray(val)) { - val = [val] - obj[key] = val - } - val.push(headers[i + 1].toString('utf8')) - } - } +/***/ }), - // See https://github.com/nodejs/node/pull/46528 - if ('content-length' in obj && 'content-disposition' in obj) { - obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1') - } +/***/ 14798: +/***/ ((module) => { - return obj +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; } -function parseRawHeaders (headers) { - const ret = [] - let hasContentLength = false - let contentDispositionIdx = -1 +module.exports = cloneRegExp; - for (let n = 0; n < headers.length; n += 2) { - const key = headers[n + 0].toString() - const val = headers[n + 1].toString('utf8') - if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { - ret.push(key, val) - hasContentLength = true - } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { - contentDispositionIdx = ret.push(key, val) - 1 - } else { - ret.push(key, val) - } - } +/***/ }), - // See https://github.com/nodejs/node/pull/46528 - if (hasContentLength && contentDispositionIdx !== -1) { - ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1') - } +/***/ 10539: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return ret -} +var Symbol = __nccwpck_require__(38584); -function isBuffer (buffer) { - // See, https://github.com/mcollina/undici/pull/319 - return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; } -function validateHandler (handler, method, upgrade) { - if (!handler || typeof handler !== 'object') { - throw new InvalidArgumentError('handler must be an object') - } +module.exports = cloneSymbol; - if (typeof handler.onConnect !== 'function') { - throw new InvalidArgumentError('invalid onConnect method') - } - if (typeof handler.onError !== 'function') { - throw new InvalidArgumentError('invalid onError method') - } +/***/ }), - if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { - throw new InvalidArgumentError('invalid onBodySent method') - } +/***/ 60946: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (upgrade || method === 'CONNECT') { - if (typeof handler.onUpgrade !== 'function') { - throw new InvalidArgumentError('invalid onUpgrade method') - } - } else { - if (typeof handler.onHeaders !== 'function') { - throw new InvalidArgumentError('invalid onHeaders method') - } +var cloneArrayBuffer = __nccwpck_require__(71336); - if (typeof handler.onData !== 'function') { - throw new InvalidArgumentError('invalid onData method') - } - - if (typeof handler.onComplete !== 'function') { - throw new InvalidArgumentError('invalid onComplete method') - } - } +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } -// A body is disturbed if it has been read from and it cannot -// be re-used without losing state or data. -function isDisturbed (body) { - return !!(body && ( - stream.isDisturbed - ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? - : body[kBodyUsed] || - body.readableDidRead || - (body._readableState && body._readableState.dataEmitted) || - isReadableAborted(body) - )) -} +module.exports = cloneTypedArray; -function isErrored (body) { - return !!(body && ( - stream.isErrored - ? stream.isErrored(body) - : /state: 'errored'/.test(nodeUtil.inspect(body) - ))) -} -function isReadable (body) { - return !!(body && ( - stream.isReadable - ? stream.isReadable(body) - : /state: 'readable'/.test(nodeUtil.inspect(body) - ))) -} +/***/ }), -function getSocketInfo (socket) { - return { - localAddress: socket.localAddress, - localPort: socket.localPort, - remoteAddress: socket.remoteAddress, - remotePort: socket.remotePort, - remoteFamily: socket.remoteFamily, - timeout: socket.timeout, - bytesWritten: socket.bytesWritten, - bytesRead: socket.bytesRead - } -} +/***/ 63427: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -async function * convertIterableToBuffer (iterable) { - for await (const chunk of iterable) { - yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) +var isSymbol = __nccwpck_require__(70661); + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } } + return 0; } -let ReadableStream -function ReadableStreamFrom (iterable) { - if (!ReadableStream) { - ReadableStream = (__nccwpck_require__(3774).ReadableStream) - } +module.exports = compareAscending; - if (ReadableStream.from) { - return ReadableStream.from(convertIterableToBuffer(iterable)) - } - let iterator - return new ReadableStream( - { - async start () { - iterator = iterable[Symbol.asyncIterator]() - }, - async pull (controller) { - const { done, value } = await iterator.next() - if (done) { - queueMicrotask(() => { - controller.close() - }) - } else { - const buf = Buffer.isBuffer(value) ? value : Buffer.from(value) - controller.enqueue(new Uint8Array(buf)) - } - return controller.desiredSize > 0 - }, - async cancel (reason) { - await iterator.return() - } - }, - 0 - ) -} +/***/ }), -// The chunk should be a FormData instance and contains -// all the required methods. -function isFormDataLike (object) { - return ( - object && - typeof object === 'object' && - typeof object.append === 'function' && - typeof object.delete === 'function' && - typeof object.get === 'function' && - typeof object.getAll === 'function' && - typeof object.has === 'function' && - typeof object.set === 'function' && - object[Symbol.toStringTag] === 'FormData' - ) -} +/***/ 37073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function throwIfAborted (signal) { - if (!signal) { return } - if (typeof signal.throwIfAborted === 'function') { - signal.throwIfAborted() - } else { - if (signal.aborted) { - // DOMException not available < v17.0.0 - const err = new Error('The operation was aborted') - err.name = 'AbortError' - throw err +var compareAscending = __nccwpck_require__(63427); + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); } } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; } -function addAbortListener (signal, listener) { - if ('addEventListener' in signal) { - signal.addEventListener('abort', listener, { once: true }) - return () => signal.removeEventListener('abort', listener) +module.exports = compareMultiple; + + +/***/ }), + +/***/ 77560: +/***/ ((module) => { + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; } - signal.addListener('abort', listener) - return () => signal.removeListener('abort', listener) + return array; } -const hasToWellFormed = !!String.prototype.toWellFormed +module.exports = copyArray; + + +/***/ }), + +/***/ 69330: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var assignValue = __nccwpck_require__(99128), + baseAssignValue = __nccwpck_require__(63579); /** - * @param {string} val + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. */ -function toUSVString (val) { - if (hasToWellFormed) { - return `${val}`.toWellFormed() - } else if (nodeUtil.toUSVString) { - return nodeUtil.toUSVString(val) - } +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); - return `${val}` -} + var index = -1, + length = props.length; -// Parsed accordingly to RFC 9110 -// https://www.rfc-editor.org/rfc/rfc9110#field.content-range -function parseRangeHeader (range) { - if (range == null || range === '') return { start: 0, end: null, size: null } + while (++index < length) { + var key = props[index]; - const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null - return m - ? { - start: parseInt(m[1]), - end: m[2] ? parseInt(m[2]) : null, - size: m[3] ? parseInt(m[3]) : null - } - : null + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; } -const kEnumerableProperty = Object.create(null) -kEnumerableProperty.enumerable = true +module.exports = copyObject; -module.exports = { - kEnumerableProperty, - nop, - isDisturbed, - isErrored, - isReadable, - toUSVString, - isReadableAborted, - isBlobLike, - parseOrigin, - parseURL, - getServerName, - isStream, - isIterable, - isAsyncIterable, - isDestroyed, - headerNameToString, - parseRawHeaders, - parseHeaders, - parseKeepAliveTimeout, - destroy, - bodyLength, - deepClone, - ReadableStreamFrom, - isBuffer, - validateHandler, - getSocketInfo, - isFormDataLike, - buildURL, - throwIfAborted, - addAbortListener, - parseRangeHeader, - nodeMajor, - nodeMinor, - nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), - safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] + +/***/ }), + +/***/ 97472: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var copyObject = __nccwpck_require__(69330), + getSymbols = __nccwpck_require__(65889); + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); } +module.exports = copySymbols; + /***/ }), -/***/ 1: +/***/ 61935: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var copyObject = __nccwpck_require__(69330), + getSymbolsIn = __nccwpck_require__(99882); +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} -const Dispatcher = __nccwpck_require__(992) -const { - ClientDestroyedError, - ClientClosedError, - InvalidArgumentError -} = __nccwpck_require__(8707) -const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(6443) +module.exports = copySymbolsIn; -const kDestroyed = Symbol('destroyed') -const kClosed = Symbol('closed') -const kOnDestroyed = Symbol('onDestroyed') -const kOnClosed = Symbol('onClosed') -const kInterceptedDispatch = Symbol('Intercepted Dispatch') -class DispatcherBase extends Dispatcher { - constructor () { - super() +/***/ }), - this[kDestroyed] = false - this[kOnDestroyed] = null - this[kClosed] = false - this[kOnClosed] = [] - } +/***/ 60252: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - get destroyed () { - return this[kDestroyed] - } +var root = __nccwpck_require__(6748); - get closed () { - return this[kClosed] - } +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; - get interceptors () { - return this[kInterceptors] - } +module.exports = coreJsData; - set interceptors (newInterceptors) { - if (newInterceptors) { - for (let i = newInterceptors.length - 1; i >= 0; i--) { - const interceptor = this[kInterceptors][i] - if (typeof interceptor !== 'function') { - throw new InvalidArgumentError('interceptor must be an function') - } - } - } - this[kInterceptors] = newInterceptors - } +/***/ }), - close (callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.close((err, data) => { - return err ? reject(err) : resolve(data) - }) - }) - } +/***/ 40728: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } +var isArrayLike = __nccwpck_require__(75119); - if (this[kDestroyed]) { - queueMicrotask(() => callback(new ClientDestroyedError(), null)) - return +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); - if (this[kClosed]) { - if (this[kOnClosed]) { - this[kOnClosed].push(callback) - } else { - queueMicrotask(() => callback(null, null)) + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; } - return } + return collection; + }; +} - this[kClosed] = true - this[kOnClosed].push(callback) +module.exports = createBaseEach; - const onClosed = () => { - const callbacks = this[kOnClosed] - this[kOnClosed] = null - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null) + +/***/ }), + +/***/ 13142: +/***/ ((module) => { + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; } } + return object; + }; +} - // Should not error. - this[kClose]() - .then(() => this.destroy()) - .then(() => { - queueMicrotask(onClosed) - }) - } +module.exports = createBaseFor; - destroy (err, callback) { - if (typeof err === 'function') { - callback = err - err = null - } - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.destroy(err, (err, data) => { - return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) - }) - }) - } +/***/ }), - if (typeof callback !== 'function') { - throw new InvalidArgumentError('invalid callback') - } +/***/ 83106: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (this[kDestroyed]) { - if (this[kOnDestroyed]) { - this[kOnDestroyed].push(callback) - } else { - queueMicrotask(() => callback(null, null)) - } - return - } +var getNative = __nccwpck_require__(68573); - if (!err) { - err = new ClientDestroyedError() - } +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); - this[kDestroyed] = true - this[kOnDestroyed] = this[kOnDestroyed] || [] - this[kOnDestroyed].push(callback) +module.exports = defineProperty; - const onDestroyed = () => { - const callbacks = this[kOnDestroyed] - this[kOnDestroyed] = null - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null) - } - } - // Should not error. - this[kDestroy](err).then(() => { - queueMicrotask(onDestroyed) - }) +/***/ }), + +/***/ 5248: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var SetCache = __nccwpck_require__(23706), + arraySome = __nccwpck_require__(90935), + cacheHas = __nccwpck_require__(64486); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - [kInterceptedDispatch] (opts, handler) { - if (!this[kInterceptors] || this[kInterceptors].length === 0) { - this[kInterceptedDispatch] = this[kDispatch] - return this[kDispatch](opts, handler) - } + stack.set(array, other); + stack.set(other, array); - let dispatch = this[kDispatch].bind(this) - for (let i = this[kInterceptors].length - 1; i >= 0; i--) { - dispatch = this[kInterceptors][i](dispatch) + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; } - this[kInterceptedDispatch] = dispatch - return dispatch(opts, handler) } + stack['delete'](array); + stack['delete'](other); + return result; +} - dispatch (opts, handler) { - if (!handler || typeof handler !== 'object') { - throw new InvalidArgumentError('handler must be an object') - } +module.exports = equalArrays; - try { - if (!opts || typeof opts !== 'object') { - throw new InvalidArgumentError('opts must be an object.') - } - if (this[kDestroyed] || this[kOnDestroyed]) { - throw new ClientDestroyedError() +/***/ }), + +/***/ 9895: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(38584), + Uint8Array = __nccwpck_require__(59525), + eq = __nccwpck_require__(75199), + equalArrays = __nccwpck_require__(5248), + mapToArray = __nccwpck_require__(43428), + setToArray = __nccwpck_require__(11894); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; } + object = object.buffer; + other = other.buffer; - if (this[kClosed]) { - throw new ClientClosedError() + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; } + return true; - return this[kInterceptedDispatch](opts, handler) - } catch (err) { - if (typeof handler.onError !== 'function') { - throw new InvalidArgumentError('invalid onError method') + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; } + bitmask |= COMPARE_UNORDERED_FLAG; - handler.onError(err) + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; - return false - } + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } } + return false; } -module.exports = DispatcherBase +module.exports = equalByTag; /***/ }), -/***/ 992: +/***/ 52500: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var getAllKeys = __nccwpck_require__(78479); +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; -const EventEmitter = __nccwpck_require__(4434) +/** Used for built-in method references. */ +var objectProto = Object.prototype; -class Dispatcher extends EventEmitter { - dispatch () { - throw new Error('not implemented') - } +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - close () { - throw new Error('not implemented') +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; - destroy () { - throw new Error('not implemented') + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } } + stack['delete'](object); + stack['delete'](other); + return result; } -module.exports = Dispatcher +module.exports = equalObjects; /***/ }), -/***/ 8923: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 78997: +/***/ ((module) => { -"use strict"; +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; +module.exports = freeGlobal; -const Busboy = __nccwpck_require__(9581) -const util = __nccwpck_require__(3440) -const { - ReadableStreamFrom, - isBlobLike, - isReadableStreamLike, - readableStreamClose, - createDeferredPromise, - fullyReadBody -} = __nccwpck_require__(5523) -const { FormData } = __nccwpck_require__(3073) -const { kState } = __nccwpck_require__(9710) -const { webidl } = __nccwpck_require__(4222) -const { DOMException, structuredClone } = __nccwpck_require__(7326) -const { Blob, File: NativeFile } = __nccwpck_require__(181) -const { kBodyUsed } = __nccwpck_require__(6443) -const assert = __nccwpck_require__(2613) -const { isErrored } = __nccwpck_require__(3440) -const { isUint8Array, isArrayBuffer } = __nccwpck_require__(8253) -const { File: UndiciFile } = __nccwpck_require__(3041) -const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) -let random -try { - const crypto = __nccwpck_require__(7598) - random = (max) => crypto.randomInt(0, max) -} catch { - random = (max) => Math.floor(Math.random(max)) +/***/ }), + +/***/ 78479: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseGetAllKeys = __nccwpck_require__(24586), + getSymbols = __nccwpck_require__(65889), + keys = __nccwpck_require__(26741); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); } -let ReadableStream = globalThis.ReadableStream +module.exports = getAllKeys; -/** @type {globalThis['File']} */ -const File = NativeFile ?? UndiciFile -const textEncoder = new TextEncoder() -const textDecoder = new TextDecoder() -// https://fetch.spec.whatwg.org/#concept-bodyinit-extract -function extractBody (object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = (__nccwpck_require__(3774).ReadableStream) - } +/***/ }), - // 1. Let stream be null. - let stream = null +/***/ 17172: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. If object is a ReadableStream object, then set stream to object. - if (object instanceof ReadableStream) { - stream = object - } else if (isBlobLike(object)) { - // 3. Otherwise, if object is a Blob object, set stream to the - // result of running object’s get stream. - stream = object.stream() - } else { - // 4. Otherwise, set stream to a new ReadableStream object, and set - // up stream. - stream = new ReadableStream({ - async pull (controller) { - controller.enqueue( - typeof source === 'string' ? textEncoder.encode(source) : source - ) - queueMicrotask(() => readableStreamClose(controller)) - }, - start () {}, - type: undefined - }) - } +var baseGetAllKeys = __nccwpck_require__(24586), + getSymbolsIn = __nccwpck_require__(99882), + keysIn = __nccwpck_require__(19430); - // 5. Assert: stream is a ReadableStream object. - assert(isReadableStreamLike(stream)) - - // 6. Let action be null. - let action = null +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} - // 7. Let source be null. - let source = null +module.exports = getAllKeysIn; - // 8. Let length be null. - let length = null - // 9. Let type be null. - let type = null +/***/ }), - // 10. Switch on object: - if (typeof object === 'string') { - // Set source to the UTF-8 encoding of object. - // Note: setting source to a Uint8Array here breaks some mocking assumptions. - source = object +/***/ 1194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Set type to `text/plain;charset=UTF-8`. - type = 'text/plain;charset=UTF-8' - } else if (object instanceof URLSearchParams) { - // URLSearchParams +var isKeyable = __nccwpck_require__(93245); - // spec says to run application/x-www-form-urlencoded on body.list - // this is implemented in Node.js as apart of an URLSearchParams instance toString method - // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 - // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} - // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. - source = object.toString() +module.exports = getMapData; - // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. - type = 'application/x-www-form-urlencoded;charset=UTF-8' - } else if (isArrayBuffer(object)) { - // BufferSource/ArrayBuffer - // Set source to a copy of the bytes held by object. - source = new Uint8Array(object.slice()) - } else if (ArrayBuffer.isView(object)) { - // BufferSource/ArrayBufferView +/***/ }), - // Set source to a copy of the bytes held by object. - source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)) - } else if (util.isFormDataLike(object)) { - const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}` - const prefix = `--${boundary}\r\nContent-Disposition: form-data` +/***/ 69081: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */ - const escape = (str) => - str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22') - const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n') +var isStrictComparable = __nccwpck_require__(12757), + keys = __nccwpck_require__(26741); - // Set action to this step: run the multipart/form-data - // encoding algorithm, with object’s entry list and UTF-8. - // - This ensures that the body is immutable and can't be changed afterwords - // - That the content-length is calculated in advance. - // - And that all parts are pre-encoded and ready to be sent. +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; - const blobParts = [] - const rn = new Uint8Array([13, 10]) // '\r\n' - length = 0 - let hasUnknownSizeValue = false + while (length--) { + var key = result[length], + value = object[key]; - for (const [name, value] of object) { - if (typeof value === 'string') { - const chunk = textEncoder.encode(prefix + - `; name="${escape(normalizeLinefeeds(name))}"` + - `\r\n\r\n${normalizeLinefeeds(value)}\r\n`) - blobParts.push(chunk) - length += chunk.byteLength - } else { - const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + - (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' + - `Content-Type: ${ - value.type || 'application/octet-stream' - }\r\n\r\n`) - blobParts.push(chunk, value, rn) - if (typeof value.size === 'number') { - length += chunk.byteLength + value.size + rn.byteLength - } else { - hasUnknownSizeValue = true - } - } - } + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} - const chunk = textEncoder.encode(`--${boundary}--`) - blobParts.push(chunk) - length += chunk.byteLength - if (hasUnknownSizeValue) { - length = null - } +module.exports = getMatchData; - // Set source to object. - source = object - action = async function * () { - for (const part of blobParts) { - if (part.stream) { - yield * part.stream() - } else { - yield part - } - } - } +/***/ }), - // Set type to `multipart/form-data; boundary=`, - // followed by the multipart/form-data boundary string generated - // by the multipart/form-data encoding algorithm. - type = 'multipart/form-data; boundary=' + boundary - } else if (isBlobLike(object)) { - // Blob +/***/ 68573: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Set source to object. - source = object +var baseIsNative = __nccwpck_require__(92334), + getValue = __nccwpck_require__(8293); - // Set length to object’s size. - length = object.size +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} - // If object’s type attribute is not the empty byte sequence, set - // type to its value. - if (object.type) { - type = object.type - } - } else if (typeof object[Symbol.asyncIterator] === 'function') { - // If keepalive is true, then throw a TypeError. - if (keepalive) { - throw new TypeError('keepalive') - } +module.exports = getNative; - // If object is disturbed or locked, then throw a TypeError. - if (util.isDisturbed(object) || object.locked) { - throw new TypeError( - 'Response body object should not be disturbed or locked' - ) - } - stream = - object instanceof ReadableStream ? object : ReadableStreamFrom(object) - } +/***/ }), - // 11. If source is a byte sequence, then set action to a - // step that returns source and length to source’s length. - if (typeof source === 'string' || util.isBuffer(source)) { - length = Buffer.byteLength(source) - } +/***/ 86194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 12. If action is non-null, then run these steps in in parallel: - if (action != null) { - // Run action. - let iterator - stream = new ReadableStream({ - async start () { - iterator = action(object)[Symbol.asyncIterator]() - }, - async pull (controller) { - const { value, done } = await iterator.next() - if (done) { - // When running action is done, close stream. - queueMicrotask(() => { - controller.close() - }) - } else { - // Whenever one or more bytes are available and stream is not errored, - // enqueue a Uint8Array wrapping an ArrayBuffer containing the available - // bytes into stream. - if (!isErrored(stream)) { - controller.enqueue(new Uint8Array(value)) - } - } - return controller.desiredSize > 0 - }, - async cancel (reason) { - await iterator.return() - }, - type: undefined - }) - } +var overArg = __nccwpck_require__(61128); - // 13. Let body be a body whose stream is stream, source is source, - // and length is length. - const body = { stream, source, length } +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); - // 14. Return (body, type). - return [body, type] -} +module.exports = getPrototype; -// https://fetch.spec.whatwg.org/#bodyinit-safely-extract -function safelyExtractBody (object, keepalive = false) { - if (!ReadableStream) { - // istanbul ignore next - ReadableStream = (__nccwpck_require__(3774).ReadableStream) - } - // To safely extract a body and a `Content-Type` value from - // a byte sequence or BodyInit object object, run these steps: +/***/ }), - // 1. If object is a ReadableStream object, then: - if (object instanceof ReadableStream) { - // Assert: object is neither disturbed nor locked. - // istanbul ignore next - assert(!util.isDisturbed(object), 'The body has already been consumed.') - // istanbul ignore next - assert(!object.locked, 'The stream is locked.') - } +/***/ 95292: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. Return the results of extracting object. - return extractBody(object, keepalive) -} +var Symbol = __nccwpck_require__(38584); -function cloneBody (body) { - // To clone a body body, run these steps: +/** Used for built-in method references. */ +var objectProto = Object.prototype; - // https://fetch.spec.whatwg.org/#concept-body-clone +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - // 1. Let « out1, out2 » be the result of teeing body’s stream. - const [out1, out2] = body.stream.tee() - const out2Clone = structuredClone(out2, { transfer: [out2] }) - // This, for whatever reasons, unrefs out2Clone which allows - // the process to exit by itself. - const [, finalClone] = out2Clone.tee() +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - // 2. Set body’s stream to out1. - body.stream = out1 +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - // 3. Return a body whose stream is out2 and other members are copied from body. - return { - stream: finalClone, - length: body.length, - source: body.source - } -} +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; -async function * consumeBody (body) { - if (body) { - if (isUint8Array(body)) { - yield body + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; } else { - const stream = body.stream - - if (util.isDisturbed(stream)) { - throw new TypeError('The body has already been consumed.') - } - - if (stream.locked) { - throw new TypeError('The stream is locked.') - } - - // Compat. - stream[kBodyUsed] = true - - yield * stream + delete value[symToStringTag]; } } + return result; } -function throwIfAborted (state) { - if (state.aborted) { - throw new DOMException('The operation was aborted.', 'AbortError') - } -} - -function bodyMixinMethods (instance) { - const methods = { - blob () { - // The blob() method steps are to return the result of - // running consume body with this and the following step - // given a byte sequence bytes: return a Blob whose - // contents are bytes and whose type attribute is this’s - // MIME type. - return specConsumeBody(this, (bytes) => { - let mimeType = bodyMimeType(this) - - if (mimeType === 'failure') { - mimeType = '' - } else if (mimeType) { - mimeType = serializeAMimeType(mimeType) - } +module.exports = getRawTag; - // Return a Blob whose contents are bytes and type attribute - // is mimeType. - return new Blob([bytes], { type: mimeType }) - }, instance) - }, - arrayBuffer () { - // The arrayBuffer() method steps are to return the result - // of running consume body with this and the following step - // given a byte sequence bytes: return a new ArrayBuffer - // whose contents are bytes. - return specConsumeBody(this, (bytes) => { - return new Uint8Array(bytes).buffer - }, instance) - }, +/***/ }), - text () { - // The text() method steps are to return the result of running - // consume body with this and UTF-8 decode. - return specConsumeBody(this, utf8DecodeBytes, instance) - }, +/***/ 65889: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - json () { - // The json() method steps are to return the result of running - // consume body with this and parse JSON from bytes. - return specConsumeBody(this, parseJSONFromBytes, instance) - }, +var arrayFilter = __nccwpck_require__(78573), + stubArray = __nccwpck_require__(43400); - async formData () { - webidl.brandCheck(this, instance) +/** Used for built-in method references. */ +var objectProto = Object.prototype; - throwIfAborted(this[kState]) +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; - const contentType = this.headers.get('Content-Type') +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; - // If mimeType’s essence is "multipart/form-data", then: - if (/multipart\/form-data/.test(contentType)) { - const headers = {} - for (const [key, value] of this.headers) headers[key.toLowerCase()] = value +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; - const responseFormData = new FormData() +module.exports = getSymbols; - let busboy - try { - busboy = new Busboy({ - headers, - preservePath: true - }) - } catch (err) { - throw new DOMException(`${err}`, 'AbortError') - } +/***/ }), - busboy.on('field', (name, value) => { - responseFormData.append(name, value) - }) - busboy.on('file', (name, value, filename, encoding, mimeType) => { - const chunks = [] +/***/ 99882: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { - let base64chunk = '' +var arrayPush = __nccwpck_require__(50827), + getPrototype = __nccwpck_require__(86194), + getSymbols = __nccwpck_require__(65889), + stubArray = __nccwpck_require__(43400); - value.on('data', (chunk) => { - base64chunk += chunk.toString().replace(/[\r\n]/gm, '') +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; - const end = base64chunk.length - base64chunk.length % 4 - chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')) +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; - base64chunk = base64chunk.slice(end) - }) - value.on('end', () => { - chunks.push(Buffer.from(base64chunk, 'base64')) - responseFormData.append(name, new File(chunks, filename, { type: mimeType })) - }) - } else { - value.on('data', (chunk) => { - chunks.push(chunk) - }) - value.on('end', () => { - responseFormData.append(name, new File(chunks, filename, { type: mimeType })) - }) - } - }) +module.exports = getSymbolsIn; - const busboyResolve = new Promise((resolve, reject) => { - busboy.on('finish', resolve) - busboy.on('error', (err) => reject(new TypeError(err))) - }) - if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk) - busboy.end() - await busboyResolve +/***/ }), - return responseFormData - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: +/***/ 44512: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. Let entries be the result of parsing bytes. - let entries - try { - let text = '' - // application/x-www-form-urlencoded parser will keep the BOM. - // https://url.spec.whatwg.org/#concept-urlencoded-parser - // Note that streaming decoder is stateful and cannot be reused - const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }) +var DataView = __nccwpck_require__(47033), + Map = __nccwpck_require__(98272), + Promise = __nccwpck_require__(4455), + Set = __nccwpck_require__(84986), + WeakMap = __nccwpck_require__(97364), + baseGetTag = __nccwpck_require__(29117), + toSource = __nccwpck_require__(57192); - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError('Expected Uint8Array chunk') - } - text += streamingDecoder.decode(chunk, { stream: true }) - } - text += streamingDecoder.decode() - entries = new URLSearchParams(text) - } catch (err) { - // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. - // 2. If entries is failure, then throw a TypeError. - throw Object.assign(new TypeError(), { cause: err }) - } +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; - // 3. Return a new FormData object whose entries are entries. - const formData = new FormData() - for (const [name, value] of entries) { - formData.append(name, value) - } - return formData - } else { - // Wait a tick before checking if the request has been aborted. - // Otherwise, a TypeError can be thrown when an AbortError should. - await Promise.resolve() +var dataViewTag = '[object DataView]'; - throwIfAborted(this[kState]) +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); - // Otherwise, throw a TypeError. - throw webidl.errors.exception({ - header: `${instance.name}.formData`, - message: 'Could not parse content as FormData.' - }) +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; } } - } - - return methods + return result; + }; } -function mixinBody (prototype) { - Object.assign(prototype.prototype, bodyMixinMethods(prototype)) -} +module.exports = getTag; + + +/***/ }), + +/***/ 8293: +/***/ ((module) => { /** - * @see https://fetch.spec.whatwg.org/#concept-body-consume-body - * @param {Response|Request} object - * @param {(value: unknown) => unknown} convertBytesToJSValue - * @param {Response|Request} instance + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. */ -async function specConsumeBody (object, convertBytesToJSValue, instance) { - webidl.brandCheck(object, instance) +function getValue(object, key) { + return object == null ? undefined : object[key]; +} - throwIfAborted(object[kState]) +module.exports = getValue; - // 1. If object is unusable, then return a promise rejected - // with a TypeError. - if (bodyUnusable(object[kState].body)) { - throw new TypeError('Body is unusable') - } - // 2. Let promise be a new promise. - const promise = createDeferredPromise() +/***/ }), - // 3. Let errorSteps given error be to reject promise with error. - const errorSteps = (error) => promise.reject(error) +/***/ 48253: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4. Let successSteps given a byte sequence data be to resolve - // promise with the result of running convertBytesToJSValue - // with data. If that threw an exception, then run errorSteps - // with that exception. - const successSteps = (data) => { - try { - promise.resolve(convertBytesToJSValue(data)) - } catch (e) { - errorSteps(e) +var castPath = __nccwpck_require__(77336), + isArguments = __nccwpck_require__(60541), + isArray = __nccwpck_require__(77192), + isIndex = __nccwpck_require__(37446), + isLength = __nccwpck_require__(56657), + toKey = __nccwpck_require__(95086); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; } + object = object[key]; } - - // 5. If object’s body is null, then run successSteps with an - // empty byte sequence. - if (object[kState].body == null) { - successSteps(new Uint8Array()) - return promise.promise + if (result || ++index != length) { + return result; } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} - // 6. Otherwise, fully read object’s body given successSteps, - // errorSteps, and object’s relevant global object. - await fullyReadBody(object[kState].body, successSteps, errorSteps) +module.exports = hasPath; - // 7. Return promise. - return promise.promise -} -// https://fetch.spec.whatwg.org/#body-unusable -function bodyUnusable (body) { - // An object including the Body interface mixin is - // said to be unusable if its body is non-null and - // its body’s stream is disturbed or locked. - return body != null && (body.stream.locked || util.isDisturbed(body.stream)) -} +/***/ }), + +/***/ 48051: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var nativeCreate = __nccwpck_require__(71563); /** - * @see https://encoding.spec.whatwg.org/#utf-8-decode - * @param {Buffer} buffer + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash */ -function utf8DecodeBytes (buffer) { - if (buffer.length === 0) { - return '' - } +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} - // 1. Let buffer be the result of peeking three bytes from - // ioQueue, converted to a byte sequence. +module.exports = hashClear; - // 2. If buffer is 0xEF 0xBB 0xBF, then read three - // bytes from ioQueue. (Do nothing with those bytes.) - if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { - buffer = buffer.subarray(3) - } - // 3. Process a queue with an instance of UTF-8’s - // decoder, ioQueue, output, and "replacement". - const output = textDecoder.decode(buffer) +/***/ }), - // 4. Return output. - return output -} +/***/ 15431: +/***/ ((module) => { /** - * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value - * @param {Uint8Array} bytes - */ -function parseJSONFromBytes (bytes) { - return JSON.parse(utf8DecodeBytes(bytes)) + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; } +module.exports = hashDelete; + + +/***/ }), + +/***/ 26934: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var nativeCreate = __nccwpck_require__(71563); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + /** - * @see https://fetch.spec.whatwg.org/#concept-body-mime-type - * @param {import('./response').Response|import('./request').Request} object + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ -function bodyMimeType (object) { - const { headersList } = object[kState] - const contentType = headersList.get('content-type') - - if (contentType === null) { - return 'failure' +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; } - - return parseMIMEType(contentType) + return hasOwnProperty.call(data, key) ? data[key] : undefined; } -module.exports = { - extractBody, - safelyExtractBody, - cloneBody, - mixinBody -} +module.exports = hashGet; /***/ }), -/***/ 7326: +/***/ 64306: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var nativeCreate = __nccwpck_require__(71563); +/** Used for built-in method references. */ +var objectProto = Object.prototype; -const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(8167) +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -const corsSafeListedMethods = ['GET', 'HEAD', 'POST'] -const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} -const nullBodyStatus = [101, 204, 205, 304] +module.exports = hashHas; -const redirectStatus = [301, 302, 303, 307, 308] -const redirectStatusSet = new Set(redirectStatus) -// https://fetch.spec.whatwg.org/#block-bad-port -const badPorts = [ - '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', - '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', - '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', - '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', - '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', - '10080' -] +/***/ }), -const badPortsSet = new Set(badPorts) +/***/ 17226: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies -const referrerPolicy = [ - '', - 'no-referrer', - 'no-referrer-when-downgrade', - 'same-origin', - 'origin', - 'strict-origin', - 'origin-when-cross-origin', - 'strict-origin-when-cross-origin', - 'unsafe-url' -] -const referrerPolicySet = new Set(referrerPolicy) +var nativeCreate = __nccwpck_require__(71563); -const requestRedirect = ['follow', 'manual', 'error'] +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; -const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE'] -const safeMethodsSet = new Set(safeMethods) +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} -const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors'] +module.exports = hashSet; -const requestCredentials = ['omit', 'same-origin', 'include'] -const requestCache = [ - 'default', - 'no-store', - 'reload', - 'no-cache', - 'force-cache', - 'only-if-cached' -] +/***/ }), -// https://fetch.spec.whatwg.org/#request-body-header-name -const requestBodyHeader = [ - 'content-encoding', - 'content-language', - 'content-location', - 'content-type', - // See https://github.com/nodejs/undici/issues/2021 - // 'Content-Length' is a forbidden header name, which is typically - // removed in the Headers implementation. However, undici doesn't - // filter out headers, so we add it here. - 'content-length' -] +/***/ 43688: +/***/ ((module) => { -// https://fetch.spec.whatwg.org/#enumdef-requestduplex -const requestDuplex = [ - 'half' -] +/** Used for built-in method references. */ +var objectProto = Object.prototype; -// http://fetch.spec.whatwg.org/#forbidden-method -const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK'] -const forbiddenMethodsSet = new Set(forbiddenMethods) +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -const subresource = [ - 'audio', - 'audioworklet', - 'font', - 'image', - 'manifest', - 'paintworklet', - 'script', - 'style', - 'track', - 'video', - 'xslt', - '' -] -const subresourceSet = new Set(subresource) +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); -/** @type {globalThis['DOMException']} */ -const DOMException = globalThis.DOMException ?? (() => { - // DOMException was only made a global in Node v17.0.0, - // but fetch supports >= v16.8. - try { - atob('~') - } catch (err) { - return Object.getPrototypeOf(err).constructor + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; } -})() + return result; +} -let channel +module.exports = initCloneArray; -/** @type {globalThis['structuredClone']} */ -const structuredClone = - globalThis.structuredClone ?? - // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js - // structuredClone was added in v17.0.0, but fetch supports v16.8 - function structuredClone (value, options = undefined) { - if (arguments.length === 0) { - throw new TypeError('missing argument') - } - if (!channel) { - channel = new MessageChannel() - } - channel.port1.unref() - channel.port2.unref() - channel.port1.postMessage(value, options?.transfer) - return receiveMessageOnPort(channel.port2).message - } +/***/ }), -module.exports = { - DOMException, - structuredClone, - subresource, - forbiddenMethods, - requestBodyHeader, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - redirectStatus, - corsSafeListedMethods, - nullBodyStatus, - safeMethods, - badPorts, - requestDuplex, - subresourceSet, - badPortsSet, - redirectStatusSet, - corsSafeListedMethodsSet, - safeMethodsSet, - forbiddenMethodsSet, - referrerPolicySet +/***/ 75906: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var cloneArrayBuffer = __nccwpck_require__(71336), + cloneDataView = __nccwpck_require__(20114), + cloneRegExp = __nccwpck_require__(14798), + cloneSymbol = __nccwpck_require__(10539), + cloneTypedArray = __nccwpck_require__(60946); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } } +module.exports = initCloneByTag; + /***/ }), -/***/ 4322: +/***/ 20866: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const assert = __nccwpck_require__(2613) -const { atob } = __nccwpck_require__(181) -const { isomorphicDecode } = __nccwpck_require__(5523) - -const encoder = new TextEncoder() +var baseCreate = __nccwpck_require__(33733), + getPrototype = __nccwpck_require__(86194), + isPrototype = __nccwpck_require__(55944); /** - * @see https://mimesniff.spec.whatwg.org/#http-token-code-point + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. */ -const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/ -const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; + + +/***/ }), + +/***/ 45088: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var Symbol = __nccwpck_require__(38584), + isArguments = __nccwpck_require__(60541), + isArray = __nccwpck_require__(77192); + +/** Built-in value references. */ +var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + /** - * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. */ -const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} -// https://fetch.spec.whatwg.org/#data-url-processor -/** @param {URL} dataURL */ -function dataURLProcessor (dataURL) { - // 1. Assert: dataURL’s scheme is "data". - assert(dataURL.protocol === 'data:') +module.exports = isFlattenable; - // 2. Let input be the result of running the URL - // serializer on dataURL with exclude fragment - // set to true. - let input = URLSerializer(dataURL, true) - // 3. Remove the leading "data:" string from input. - input = input.slice(5) +/***/ }), - // 4. Let position point at the start of input. - const position = { position: 0 } +/***/ 37446: +/***/ ((module) => { - // 5. Let mimeType be the result of collecting a - // sequence of code points that are not equal - // to U+002C (,), given position. - let mimeType = collectASequenceOfCodePointsFast( - ',', - input, - position - ) +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; - // 6. Strip leading and trailing ASCII whitespace - // from mimeType. - // Undici implementation note: we need to store the - // length because if the mimetype has spaces removed, - // the wrong amount will be sliced from the input in - // step #9 - const mimeTypeLength = mimeType.length - mimeType = removeASCIIWhitespace(mimeType, true, true) +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; - // 7. If position is past the end of input, then - // return failure - if (position.position >= input.length) { - return 'failure' - } +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; - // 8. Advance position by 1. - position.position++ + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} - // 9. Let encodedBody be the remainder of input. - const encodedBody = input.slice(mimeTypeLength + 1) +module.exports = isIndex; - // 10. Let body be the percent-decoding of encodedBody. - let body = stringPercentDecode(encodedBody) - // 11. If mimeType ends with U+003B (;), followed by - // zero or more U+0020 SPACE, followed by an ASCII - // case-insensitive match for "base64", then: - if (/;(\u0020){0,}base64$/i.test(mimeType)) { - // 1. Let stringBody be the isomorphic decode of body. - const stringBody = isomorphicDecode(body) +/***/ }), - // 2. Set body to the forgiving-base64 decode of - // stringBody. - body = forgivingBase64(stringBody) +/***/ 3349: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 3. If body is failure, then return failure. - if (body === 'failure') { - return 'failure' - } +var eq = __nccwpck_require__(75199), + isArrayLike = __nccwpck_require__(75119), + isIndex = __nccwpck_require__(37446), + isObject = __nccwpck_require__(96482); - // 4. Remove the last 6 code points from mimeType. - mimeType = mimeType.slice(0, -6) +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} - // 5. Remove trailing U+0020 SPACE code points from mimeType, - // if any. - mimeType = mimeType.replace(/(\u0020)+$/, '') +module.exports = isIterateeCall; - // 6. Remove the last U+003B (;) code point from mimeType. - mimeType = mimeType.slice(0, -1) - } - // 12. If mimeType starts with U+003B (;), then prepend - // "text/plain" to mimeType. - if (mimeType.startsWith(';')) { - mimeType = 'text/plain' + mimeType - } +/***/ }), - // 13. Let mimeTypeRecord be the result of parsing - // mimeType. - let mimeTypeRecord = parseMIMEType(mimeType) +/***/ 20897: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 14. If mimeTypeRecord is failure, then set - // mimeTypeRecord to text/plain;charset=US-ASCII. - if (mimeTypeRecord === 'failure') { - mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII') - } +var isArray = __nccwpck_require__(77192), + isSymbol = __nccwpck_require__(70661); - // 15. Return a new data: URL struct whose MIME - // type is mimeTypeRecord and body is body. - // https://fetch.spec.whatwg.org/#data-url-struct - return { mimeType: mimeTypeRecord, body } -} +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; -// https://url.spec.whatwg.org/#concept-url-serializer /** - * @param {URL} url - * @param {boolean} excludeFragment + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ -function URLSerializer (url, excludeFragment = false) { - if (!excludeFragment) { - return url.href +function isKey(value, object) { + if (isArray(value)) { + return false; } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} - const href = url.href - const hashLength = url.hash.length +module.exports = isKey; - return hashLength === 0 ? href : href.substring(0, href.length - hashLength) -} -// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/***/ }), + +/***/ 93245: +/***/ ((module) => { + /** - * @param {(char: string) => boolean} condition - * @param {string} input - * @param {{ position: number }} position + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. */ -function collectASequenceOfCodePoints (condition, input, position) { - // 1. Let result be the empty string. - let result = '' +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} - // 2. While position doesn’t point past the end of input and the - // code point at position within input meets the condition condition: - while (position.position < input.length && condition(input[position.position])) { - // 1. Append that code point to the end of result. - result += input[position.position] +module.exports = isKeyable; - // 2. Advance position by 1. - position.position++ - } - // 3. Return result. - return result -} +/***/ }), + +/***/ 46613: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var coreJsData = __nccwpck_require__(60252); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); /** - * A faster collectASequenceOfCodePoints that only works when comparing a single character. - * @param {string} char - * @param {string} input - * @param {{ position: number }} position + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ -function collectASequenceOfCodePointsFast (char, input, position) { - const idx = input.indexOf(char, position.position) - const start = position.position +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - if (idx === -1) { - position.position = input.length - return input.slice(start) - } +module.exports = isMasked; - position.position = idx - return input.slice(start, position.position) -} -// https://url.spec.whatwg.org/#string-percent-decode -/** @param {string} input */ -function stringPercentDecode (input) { - // 1. Let bytes be the UTF-8 encoding of input. - const bytes = encoder.encode(input) +/***/ }), - // 2. Return the percent-decoding of bytes. - return percentDecode(bytes) +/***/ 55944: +/***/ ((module) => { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; } -// https://url.spec.whatwg.org/#percent-decode -/** @param {Uint8Array} input */ -function percentDecode (input) { - // 1. Let output be an empty byte sequence. - /** @type {number[]} */ - const output = [] +module.exports = isPrototype; - // 2. For each byte byte in input: - for (let i = 0; i < input.length; i++) { - const byte = input[i] - // 1. If byte is not 0x25 (%), then append byte to output. - if (byte !== 0x25) { - output.push(byte) +/***/ }), - // 2. Otherwise, if byte is 0x25 (%) and the next two bytes - // after byte in input are not in the ranges - // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), - // and 0x61 (a) to 0x66 (f), all inclusive, append byte - // to output. - } else if ( - byte === 0x25 && - !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) - ) { - output.push(0x25) +/***/ 12757: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 3. Otherwise: - } else { - // 1. Let bytePoint be the two bytes after byte in input, - // decoded, and then interpreted as hexadecimal number. - const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]) - const bytePoint = Number.parseInt(nextTwoBytes, 16) +var isObject = __nccwpck_require__(96482); - // 2. Append a byte whose value is bytePoint to output. - output.push(bytePoint) +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} - // 3. Skip the next two bytes in input. - i += 2 - } - } +module.exports = isStrictComparable; - // 3. Return output. - return Uint8Array.from(output) + +/***/ }), + +/***/ 99791: +/***/ ((module) => { + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; } -// https://mimesniff.spec.whatwg.org/#parse-a-mime-type -/** @param {string} input */ -function parseMIMEType (input) { - // 1. Remove any leading and trailing HTTP whitespace - // from input. - input = removeHTTPWhitespace(input, true, true) +module.exports = listCacheClear; - // 2. Let position be a position variable for input, - // initially pointing at the start of input. - const position = { position: 0 } - // 3. Let type be the result of collecting a sequence - // of code points that are not U+002F (/) from - // input, given position. - const type = collectASequenceOfCodePointsFast( - '/', - input, - position - ) +/***/ }), - // 4. If type is the empty string or does not solely - // contain HTTP token code points, then return failure. - // https://mimesniff.spec.whatwg.org/#http-token-code-point - if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { - return 'failure' - } +/***/ 24555: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 5. If position is past the end of input, then return - // failure - if (position.position > input.length) { - return 'failure' - } +var assocIndexOf = __nccwpck_require__(74024); - // 6. Advance position by 1. (This skips past U+002F (/).) - position.position++ +/** Used for built-in method references. */ +var arrayProto = Array.prototype; - // 7. Let subtype be the result of collecting a sequence of - // code points that are not U+003B (;) from input, given - // position. - let subtype = collectASequenceOfCodePointsFast( - ';', - input, - position - ) +/** Built-in value references. */ +var splice = arrayProto.splice; - // 8. Remove any trailing HTTP whitespace from subtype. - subtype = removeHTTPWhitespace(subtype, false, true) +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - // 9. If subtype is the empty string or does not solely - // contain HTTP token code points, then return failure. - if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { - return 'failure' + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); } + --this.size; + return true; +} - const typeLowercase = type.toLowerCase() - const subtypeLowercase = subtype.toLowerCase() +module.exports = listCacheDelete; - // 10. Let mimeType be a new MIME type record whose type - // is type, in ASCII lowercase, and subtype is subtype, - // in ASCII lowercase. - // https://mimesniff.spec.whatwg.org/#mime-type - const mimeType = { - type: typeLowercase, - subtype: subtypeLowercase, - /** @type {Map<string, string>} */ - parameters: new Map(), - // https://mimesniff.spec.whatwg.org/#mime-type-essence - essence: `${typeLowercase}/${subtypeLowercase}` - } - // 11. While position is not past the end of input: - while (position.position < input.length) { - // 1. Advance position by 1. (This skips past U+003B (;).) - position.position++ +/***/ }), - // 2. Collect a sequence of code points that are HTTP - // whitespace from input given position. - collectASequenceOfCodePoints( - // https://fetch.spec.whatwg.org/#http-whitespace - char => HTTP_WHITESPACE_REGEX.test(char), - input, - position - ) +/***/ 86634: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 3. Let parameterName be the result of collecting a - // sequence of code points that are not U+003B (;) - // or U+003D (=) from input, given position. - let parameterName = collectASequenceOfCodePoints( - (char) => char !== ';' && char !== '=', - input, - position - ) +var assocIndexOf = __nccwpck_require__(74024); - // 4. Set parameterName to parameterName, in ASCII - // lowercase. - parameterName = parameterName.toLowerCase() +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - // 5. If position is not past the end of input, then: - if (position.position < input.length) { - // 1. If the code point at position within input is - // U+003B (;), then continue. - if (input[position.position] === ';') { - continue - } + return index < 0 ? undefined : data[index][1]; +} - // 2. Advance position by 1. (This skips past U+003D (=).) - position.position++ - } +module.exports = listCacheGet; - // 6. If position is past the end of input, then break. - if (position.position > input.length) { - break - } - // 7. Let parameterValue be null. - let parameterValue = null +/***/ }), - // 8. If the code point at position within input is - // U+0022 ("), then: - if (input[position.position] === '"') { - // 1. Set parameterValue to the result of collecting - // an HTTP quoted string from input, given position - // and the extract-value flag. - parameterValue = collectAnHTTPQuotedString(input, position, true) +/***/ 8430: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. Collect a sequence of code points that are not - // U+003B (;) from input, given position. - collectASequenceOfCodePointsFast( - ';', - input, - position - ) +var assocIndexOf = __nccwpck_require__(74024); - // 9. Otherwise: - } else { - // 1. Set parameterValue to the result of collecting - // a sequence of code points that are not U+003B (;) - // from input, given position. - parameterValue = collectASequenceOfCodePointsFast( - ';', - input, - position - ) +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} - // 2. Remove any trailing HTTP whitespace from parameterValue. - parameterValue = removeHTTPWhitespace(parameterValue, false, true) +module.exports = listCacheHas; - // 3. If parameterValue is the empty string, then continue. - if (parameterValue.length === 0) { - continue - } - } - // 10. If all of the following are true - // - parameterName is not the empty string - // - parameterName solely contains HTTP token code points - // - parameterValue solely contains HTTP quoted-string token code points - // - mimeType’s parameters[parameterName] does not exist - // then set mimeType’s parameters[parameterName] to parameterValue. - if ( - parameterName.length !== 0 && - HTTP_TOKEN_CODEPOINTS.test(parameterName) && - (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && - !mimeType.parameters.has(parameterName) - ) { - mimeType.parameters.set(parameterName, parameterValue) - } - } +/***/ }), - // 12. Return mimeType. - return mimeType -} +/***/ 36918: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// https://infra.spec.whatwg.org/#forgiving-base64-decode -/** @param {string} data */ -function forgivingBase64 (data) { - // 1. Remove all ASCII whitespace from data. - data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '') // eslint-disable-line +var assocIndexOf = __nccwpck_require__(74024); - // 2. If data’s code point length divides by 4 leaving - // no remainder, then: - if (data.length % 4 === 0) { - // 1. If data ends with one or two U+003D (=) code points, - // then remove them from data. - data = data.replace(/=?=$/, '') +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; } + return this; +} - // 3. If data’s code point length divides by 4 leaving - // a remainder of 1, then return failure. - if (data.length % 4 === 1) { - return 'failure' - } +module.exports = listCacheSet; - // 4. If data contains a code point that is not one of - // U+002B (+) - // U+002F (/) - // ASCII alphanumeric - // then return failure. - if (/[^+/0-9A-Za-z]/.test(data)) { - return 'failure' - } - const binary = atob(data) - const bytes = new Uint8Array(binary.length) +/***/ }), - for (let byte = 0; byte < binary.length; byte++) { - bytes[byte] = binary.charCodeAt(byte) - } +/***/ 88487: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return bytes -} +var Hash = __nccwpck_require__(66320), + ListCache = __nccwpck_require__(68884), + Map = __nccwpck_require__(98272); -// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string -// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string /** - * @param {string} input - * @param {{ position: number }} position - * @param {boolean?} extractValue - */ -function collectAnHTTPQuotedString (input, position, extractValue) { - // 1. Let positionStart be position. - const positionStart = position.position - - // 2. Let value be the empty string. - let value = '' - - // 3. Assert: the code point at position within input - // is U+0022 ("). - assert(input[position.position] === '"') - - // 4. Advance position by 1. - position.position++ + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} - // 5. While true: - while (true) { - // 1. Append the result of collecting a sequence of code points - // that are not U+0022 (") or U+005C (\) from input, given - // position, to value. - value += collectASequenceOfCodePoints( - (char) => char !== '"' && char !== '\\', - input, - position - ) +module.exports = mapCacheClear; - // 2. If position is past the end of input, then break. - if (position.position >= input.length) { - break - } - // 3. Let quoteOrBackslash be the code point at position within - // input. - const quoteOrBackslash = input[position.position] +/***/ }), - // 4. Advance position by 1. - position.position++ +/***/ 36275: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 5. If quoteOrBackslash is U+005C (\), then: - if (quoteOrBackslash === '\\') { - // 1. If position is past the end of input, then append - // U+005C (\) to value and break. - if (position.position >= input.length) { - value += '\\' - break - } +var getMapData = __nccwpck_require__(1194); - // 2. Append the code point at position within input to value. - value += input[position.position] +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} - // 3. Advance position by 1. - position.position++ +module.exports = mapCacheDelete; - // 6. Otherwise: - } else { - // 1. Assert: quoteOrBackslash is U+0022 ("). - assert(quoteOrBackslash === '"') - // 2. Break. - break - } - } +/***/ }), - // 6. If the extract-value flag is set, then return value. - if (extractValue) { - return value - } +/***/ 30130: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 7. Return the code points from positionStart to position, - // inclusive, within input. - return input.slice(positionStart, position.position) -} +var getMapData = __nccwpck_require__(1194); /** - * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ -function serializeAMimeType (mimeType) { - assert(mimeType !== 'failure') - const { parameters, essence } = mimeType +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} - // 1. Let serialization be the concatenation of mimeType’s - // type, U+002F (/), and mimeType’s subtype. - let serialization = essence +module.exports = mapCacheGet; - // 2. For each name → value of mimeType’s parameters: - for (let [name, value] of parameters.entries()) { - // 1. Append U+003B (;) to serialization. - serialization += ';' - // 2. Append name to serialization. - serialization += name +/***/ }), - // 3. Append U+003D (=) to serialization. - serialization += '=' +/***/ 69254: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4. If value does not solely contain HTTP token code - // points or value is the empty string, then: - if (!HTTP_TOKEN_CODEPOINTS.test(value)) { - // 1. Precede each occurence of U+0022 (") or - // U+005C (\) in value with U+005C (\). - value = value.replace(/(\\|")/g, '\\$1') +var getMapData = __nccwpck_require__(1194); - // 2. Prepend U+0022 (") to value. - value = '"' + value +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} - // 3. Append U+0022 (") to value. - value += '"' - } +module.exports = mapCacheHas; - // 5. Append value to serialization. - serialization += value - } - // 3. Return serialization. - return serialization -} +/***/ }), + +/***/ 59806: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var getMapData = __nccwpck_require__(1194); /** - * @see https://fetch.spec.whatwg.org/#http-whitespace - * @param {string} char + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. */ -function isHTTPWhiteSpace (char) { - return char === '\r' || char === '\n' || char === '\t' || char === ' ' +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; } -/** - * @see https://fetch.spec.whatwg.org/#http-whitespace - * @param {string} str - */ -function removeHTTPWhitespace (str, leading = true, trailing = true) { - let lead = 0 - let trail = str.length - 1 +module.exports = mapCacheSet; - if (leading) { - for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); - } - if (trailing) { - for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); - } +/***/ }), - return str.slice(lead, trail + 1) -} +/***/ 43428: +/***/ ((module) => { /** - * @see https://infra.spec.whatwg.org/#ascii-whitespace - * @param {string} char + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. */ -function isASCIIWhitespace (char) { - return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' ' +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; } -/** - * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace - */ -function removeASCIIWhitespace (str, leading = true, trailing = true) { - let lead = 0 - let trail = str.length - 1 +module.exports = mapToArray; - if (leading) { - for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); - } - if (trailing) { - for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); - } +/***/ }), - return str.slice(lead, trail + 1) -} +/***/ 78218: +/***/ ((module) => { -module.exports = { - dataURLProcessor, - URLSerializer, - collectASequenceOfCodePoints, - collectASequenceOfCodePointsFast, - stringPercentDecode, - parseMIMEType, - collectAnHTTPQuotedString, - serializeAMimeType +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; } +module.exports = matchesStrictComparable; + /***/ }), -/***/ 3041: +/***/ 41471: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var memoize = __nccwpck_require__(24769); +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; -const { Blob, File: NativeFile } = __nccwpck_require__(181) -const { types } = __nccwpck_require__(9023) -const { kState } = __nccwpck_require__(9710) -const { isBlobLike } = __nccwpck_require__(5523) -const { webidl } = __nccwpck_require__(4222) -const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) -const { kEnumerableProperty } = __nccwpck_require__(3440) -const encoder = new TextEncoder() +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); -class File extends Blob { - constructor (fileBits, fileName, options = {}) { - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }) + var cache = result.cache; + return result; +} - fileBits = webidl.converters['sequence<BlobPart>'](fileBits) - fileName = webidl.converters.USVString(fileName) - options = webidl.converters.FilePropertyBag(options) +module.exports = memoizeCapped; - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - // Note: Blob handles this for us - // 2. Let n be the fileName argument to the constructor. - const n = fileName +/***/ }), - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: +/***/ 71563: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // 2. Convert every character in t to ASCII lowercase. - let t = options.type - let d +var getNative = __nccwpck_require__(68573); - // eslint-disable-next-line no-labels - substep: { - if (t) { - t = parseMIMEType(t) +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); - if (t === 'failure') { - t = '' - // eslint-disable-next-line no-labels - break substep - } +module.exports = nativeCreate; - t = serializeAMimeType(t).toLowerCase() - } - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - d = options.lastModified - } +/***/ }), - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. +/***/ 63787: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - super(processBlobParts(fileBits, options), { type: t }) - this[kState] = { - name: n, - lastModified: d, - type: t - } - } +var overArg = __nccwpck_require__(61128); - get name () { - webidl.brandCheck(this, File) +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); - return this[kState].name - } +module.exports = nativeKeys; - get lastModified () { - webidl.brandCheck(this, File) - return this[kState].lastModified - } +/***/ }), - get type () { - webidl.brandCheck(this, File) +/***/ 94008: +/***/ ((module) => { - return this[kState].type +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } } + return result; } -class FileLike { - constructor (blobLike, fileName, options = {}) { - // TODO: argument idl type check +module.exports = nativeKeysIn; - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. +/***/ }), - // 2. Let n be the fileName argument to the constructor. - const n = fileName +/***/ 88724: +/***/ ((module, exports, __nccwpck_require__) => { - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: +/* module decorator */ module = __nccwpck_require__.nmd(module); +var freeGlobal = __nccwpck_require__(78997); - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // TODO - const t = options.type +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; - // 2. Convert every character in t to ASCII lowercase. - // TODO +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - const d = options.lastModified ?? Date.now() +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; - this[kState] = { - blobLike, - name: n, - type: t, - lastModified: d +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; } - } - stream (...args) { - webidl.brandCheck(this, FileLike) + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); - return this[kState].blobLike.stream(...args) - } +module.exports = nodeUtil; - arrayBuffer (...args) { - webidl.brandCheck(this, FileLike) - return this[kState].blobLike.arrayBuffer(...args) - } +/***/ }), - slice (...args) { - webidl.brandCheck(this, FileLike) +/***/ 71723: +/***/ ((module) => { - return this[kState].blobLike.slice(...args) - } +/** Used for built-in method references. */ +var objectProto = Object.prototype; - text (...args) { - webidl.brandCheck(this, FileLike) +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; - return this[kState].blobLike.text(...args) - } +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} - get size () { - webidl.brandCheck(this, FileLike) +module.exports = objectToString; - return this[kState].blobLike.size - } - get type () { - webidl.brandCheck(this, FileLike) +/***/ }), - return this[kState].blobLike.type - } +/***/ 61128: +/***/ ((module) => { - get name () { - webidl.brandCheck(this, FileLike) +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} - return this[kState].name - } +module.exports = overArg; - get lastModified () { - webidl.brandCheck(this, FileLike) - return this[kState].lastModified - } +/***/ }), - get [Symbol.toStringTag] () { - return 'File' - } -} +/***/ 20168: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -Object.defineProperties(File.prototype, { - [Symbol.toStringTag]: { - value: 'File', - configurable: true - }, - name: kEnumerableProperty, - lastModified: kEnumerableProperty -}) +var apply = __nccwpck_require__(59678); -webidl.converters.Blob = webidl.interfaceConverter(Blob) +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; -webidl.converters.BlobPart = function (V, opts) { - if (webidl.util.Type(V) === 'Object') { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }) +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} - if ( - ArrayBuffer.isView(V) || - types.isAnyArrayBuffer(V) - ) { - return webidl.converters.BufferSource(V, opts) - } - } +module.exports = overRest; - return webidl.converters.USVString(V, opts) -} -webidl.converters['sequence<BlobPart>'] = webidl.sequenceConverter( - webidl.converters.BlobPart -) +/***/ }), -// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag -webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ - { - key: 'lastModified', - converter: webidl.converters['long long'], - get defaultValue () { - return Date.now() - } - }, - { - key: 'type', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'endings', - converter: (value) => { - value = webidl.converters.DOMString(value) - value = value.toLowerCase() +/***/ 6748: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (value !== 'native') { - value = 'transparent' - } +var freeGlobal = __nccwpck_require__(78997); - return value - }, - defaultValue: 'transparent' - } -]) +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + + +/***/ }), + +/***/ 44671: +/***/ ((module) => { + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; /** - * @see https://www.w3.org/TR/FileAPI/#process-blob-parts - * @param {(NodeJS.TypedArray|Blob|string)[]} parts - * @param {{ type: string, endings: string }} options + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. */ -function processBlobParts (parts, options) { - // 1. Let bytes be an empty sequence of bytes. - /** @type {NodeJS.TypedArray[]} */ - const bytes = [] +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} - // 2. For each element in parts: - for (const element of parts) { - // 1. If element is a USVString, run the following substeps: - if (typeof element === 'string') { - // 1. Let s be element. - let s = element +module.exports = setCacheAdd; - // 2. If the endings member of options is "native", set s - // to the result of converting line endings to native - // of element. - if (options.endings === 'native') { - s = convertLineEndingsNative(s) - } - // 3. Append the result of UTF-8 encoding s to bytes. - bytes.push(encoder.encode(s)) - } else if ( - types.isAnyArrayBuffer(element) || - types.isTypedArray(element) - ) { - // 2. If element is a BufferSource, get a copy of the - // bytes held by the buffer source, and append those - // bytes to bytes. - if (!element.buffer) { // ArrayBuffer - bytes.push(new Uint8Array(element)) - } else { - bytes.push( - new Uint8Array(element.buffer, element.byteOffset, element.byteLength) - ) - } - } else if (isBlobLike(element)) { - // 3. If element is a Blob, append the bytes it represents - // to bytes. - bytes.push(element) - } - } +/***/ }), - // 3. Return bytes. - return bytes -} +/***/ 71884: +/***/ ((module) => { /** - * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native - * @param {string} s + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. */ -function convertLineEndingsNative (s) { - // 1. Let native line ending be be the code point U+000A LF. - let nativeLineEnding = '\n' +function setCacheHas(value) { + return this.__data__.has(value); +} - // 2. If the underlying platform’s conventions are to - // represent newlines as a carriage return and line feed - // sequence, set native line ending to the code point - // U+000D CR followed by the code point U+000A LF. - if (process.platform === 'win32') { - nativeLineEnding = '\r\n' - } +module.exports = setCacheHas; - return s.replace(/\r?\n/g, nativeLineEnding) -} -// If this function is moved to ./util.js, some tools (such as -// rollup) will warn about circular dependencies. See: -// https://github.com/nodejs/undici/issues/1629 -function isFileLike (object) { - return ( - (NativeFile && object instanceof NativeFile) || - object instanceof File || ( - object && - (typeof object.stream === 'function' || - typeof object.arrayBuffer === 'function') && - object[Symbol.toStringTag] === 'File' - ) - ) +/***/ }), + +/***/ 11894: +/***/ ((module) => { + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; } -module.exports = { File, FileLike, isFileLike } +module.exports = setToArray; /***/ }), -/***/ 3073: +/***/ 59402: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var baseSetToString = __nccwpck_require__(64953), + shortOut = __nccwpck_require__(83286); +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); -const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(5523) -const { kState } = __nccwpck_require__(9710) -const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(3041) -const { webidl } = __nccwpck_require__(4222) -const { Blob, File: NativeFile } = __nccwpck_require__(181) +module.exports = setToString; -/** @type {globalThis['File']} */ -const File = NativeFile ?? UndiciFile -// https://xhr.spec.whatwg.org/#formdata -class FormData { - constructor (form) { - if (form !== undefined) { - throw webidl.errors.conversionFailed({ - prefix: 'FormData constructor', - argument: 'Argument 1', - types: ['undefined'] - }) - } +/***/ }), - this[kState] = [] - } +/***/ 83286: +/***/ ((module) => { - append (name, value, filename = undefined) { - webidl.brandCheck(this, FormData) +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; - webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }) +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" - ) +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; } + return func.apply(undefined, arguments); + }; +} - // 1. Let value be value if given; otherwise blobValue. +module.exports = shortOut; - name = webidl.converters.USVString(name) - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value) - filename = arguments.length === 3 - ? webidl.converters.USVString(filename) - : undefined - // 2. Let entry be the result of creating an entry with - // name, value, and filename if given. - const entry = makeEntry(name, value, filename) +/***/ }), - // 3. Append entry to this’s entry list. - this[kState].push(entry) - } +/***/ 91509: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - delete (name) { - webidl.brandCheck(this, FormData) +var ListCache = __nccwpck_require__(68884); - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }) +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} - name = webidl.converters.USVString(name) +module.exports = stackClear; - // The delete(name) method steps are to remove all entries whose name - // is name from this’s entry list. - this[kState] = this[kState].filter(entry => entry.name !== name) - } - get (name) { - webidl.brandCheck(this, FormData) +/***/ }), - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }) +/***/ 837: +/***/ ((module) => { - name = webidl.converters.USVString(name) +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); - // 1. If there is no entry whose name is name in this’s entry list, - // then return null. - const idx = this[kState].findIndex((entry) => entry.name === name) - if (idx === -1) { - return null - } + this.size = data.size; + return result; +} - // 2. Return the value of the first entry whose name is name from - // this’s entry list. - return this[kState][idx].value - } +module.exports = stackDelete; - getAll (name) { - webidl.brandCheck(this, FormData) - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }) +/***/ }), - name = webidl.converters.USVString(name) +/***/ 46572: +/***/ ((module) => { - // 1. If there is no entry whose name is name in this’s entry list, - // then return the empty list. - // 2. Return the values of all entries whose name is name, in order, - // from this’s entry list. - return this[kState] - .filter((entry) => entry.name === name) - .map((entry) => entry.value) - } +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} - has (name) { - webidl.brandCheck(this, FormData) +module.exports = stackGet; - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }) - name = webidl.converters.USVString(name) +/***/ }), - // The has(name) method steps are to return true if there is an entry - // whose name is name in this’s entry list; otherwise false. - return this[kState].findIndex((entry) => entry.name === name) !== -1 - } +/***/ 66216: +/***/ ((module) => { - set (name, value, filename = undefined) { - webidl.brandCheck(this, FormData) +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} - webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }) +module.exports = stackHas; - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" - ) - } - // The set(name, value) and set(name, blobValue, filename) method steps - // are: +/***/ }), - // 1. Let value be value if given; otherwise blobValue. +/***/ 51976: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - name = webidl.converters.USVString(name) - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value) - filename = arguments.length === 3 - ? toUSVString(filename) - : undefined +var ListCache = __nccwpck_require__(68884), + Map = __nccwpck_require__(98272), + MapCache = __nccwpck_require__(79660); - // 2. Let entry be the result of creating an entry with name, value, and - // filename if given. - const entry = makeEntry(name, value, filename) +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - // 3. If there are entries in this’s entry list whose name is name, then - // replace the first such entry with entry and remove the others. - const idx = this[kState].findIndex((entry) => entry.name === name) - if (idx !== -1) { - this[kState] = [ - ...this[kState].slice(0, idx), - entry, - ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) - ] - } else { - // 4. Otherwise, append entry to this’s entry list. - this[kState].push(entry) +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; } + data = this.__data__ = new MapCache(pairs); } + data.set(key, value); + this.size = data.size; + return this; +} - entries () { - webidl.brandCheck(this, FormData) +module.exports = stackSet; - return makeIterator( - () => this[kState].map(pair => [pair.name, pair.value]), - 'FormData', - 'key+value' - ) - } - keys () { - webidl.brandCheck(this, FormData) +/***/ }), - return makeIterator( - () => this[kState].map(pair => [pair.name, pair.value]), - 'FormData', - 'key' - ) - } +/***/ 72187: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - values () { - webidl.brandCheck(this, FormData) +var memoizeCapped = __nccwpck_require__(41471); - return makeIterator( - () => this[kState].map(pair => [pair.name, pair.value]), - 'FormData', - 'value' - ) +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); - /** - * @param {(value: string, key: string, self: FormData) => void} callbackFn - * @param {unknown} thisArg - */ - forEach (callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, FormData) +module.exports = stringToPath; - webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }) - if (typeof callbackFn !== 'function') { - throw new TypeError( - "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." - ) - } +/***/ }), - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]) - } - } -} +/***/ 95086: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -FormData.prototype[Symbol.iterator] = FormData.prototype.entries +var isSymbol = __nccwpck_require__(70661); -Object.defineProperties(FormData.prototype, { - [Symbol.toStringTag]: { - value: 'FormData', - configurable: true - } -}) +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; /** - * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry - * @param {string} name - * @param {string|Blob} value - * @param {?string} filename - * @returns + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. */ -function makeEntry (name, value, filename) { - // 1. Set name to the result of converting name into a scalar value string. - // "To convert a string into a scalar value string, replace any surrogates - // with U+FFFD." - // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end - name = Buffer.from(name).toString('utf8') +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - // 2. If value is a string, then set value to the result of converting - // value into a scalar value string. - if (typeof value === 'string') { - value = Buffer.from(value).toString('utf8') - } else { - // 3. Otherwise: +module.exports = toKey; - // 1. If value is not a File object, then set value to a new File object, - // representing the same bytes, whose name attribute value is "blob" - if (!isFileLike(value)) { - value = value instanceof Blob - ? new File([value], 'blob', { type: value.type }) - : new FileLike(value, 'blob', { type: value.type }) - } - // 2. If filename is given, then set value to a new File object, - // representing the same bytes, whose name attribute is filename. - if (filename !== undefined) { - /** @type {FilePropertyBag} */ - const options = { - type: value.type, - lastModified: value.lastModified - } +/***/ }), - value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile - ? new File([value], filename, options) - : new FileLike(value, filename, options) - } - } +/***/ 57192: +/***/ ((module) => { - // 4. Return an entry whose name is name and whose value is value. - return { name, value } +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; } -module.exports = { FormData } +module.exports = toSource; /***/ }), -/***/ 5628: -/***/ ((module) => { - -"use strict"; +/***/ 80542: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var baseClone = __nccwpck_require__(62504); -// In case of breaking changes, increase the version -// number to avoid conflicts. -const globalOrigin = Symbol.for('undici.globalOrigin.1') +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; -function getGlobalOrigin () { - return globalThis[globalOrigin] +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); } -function setGlobalOrigin (newOrigin) { - if (newOrigin === undefined) { - Object.defineProperty(globalThis, globalOrigin, { - value: undefined, - writable: true, - enumerable: false, - configurable: false - }) +module.exports = cloneDeep; - return - } - const parsedURL = new URL(newOrigin) +/***/ }), - if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { - throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`) - } +/***/ 85089: +/***/ ((module) => { - Object.defineProperty(globalThis, globalOrigin, { - value: parsedURL, - writable: true, - enumerable: false, - configurable: false - }) +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; } -module.exports = { - getGlobalOrigin, - setGlobalOrigin -} +module.exports = constant; /***/ }), -/***/ 6349: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 75199: +/***/ ((module) => { -"use strict"; -// https://github.com/Ethan-Arrowood/undici-fetch +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} +module.exports = eq; -const { kHeadersList, kConstruct } = __nccwpck_require__(6443) -const { kGuard } = __nccwpck_require__(9710) -const { kEnumerableProperty } = __nccwpck_require__(3440) -const { - makeIterator, - isValidHeaderName, - isValidHeaderValue -} = __nccwpck_require__(5523) -const util = __nccwpck_require__(9023) -const { webidl } = __nccwpck_require__(4222) -const assert = __nccwpck_require__(2613) +/***/ }), -const kHeadersMap = Symbol('headers map') -const kHeadersSortedMap = Symbol('headers map sorted') +/***/ 66195: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var toString = __nccwpck_require__(87233); /** - * @param {number} code + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). */ -function isHTTPWhiteSpaceCharCode (code) { - return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020 -} +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); /** - * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize - * @param {string} potentialValue + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' */ -function headerValueNormalize (potentialValue) { - // To normalize a byte sequence potentialValue, remove - // any leading and trailing HTTP whitespace bytes from - // potentialValue. - let i = 0; let j = potentialValue.length +function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; +} - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i +module.exports = escapeRegExp; - return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j) -} -function fill (headers, object) { - // To fill a Headers object headers with a given object object, run these steps: +/***/ }), - // 1. If object is a sequence, then for each header in object: - // Note: webidl conversion to array has already been done. - if (Array.isArray(object)) { - for (let i = 0; i < object.length; ++i) { - const header = object[i] - // 1. If header does not contain exactly two items, then throw a TypeError. - if (header.length !== 2) { - throw webidl.errors.exception({ - header: 'Headers constructor', - message: `expected name/value pair to be length 2, found ${header.length}.` - }) - } +/***/ 40181: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. Append (header’s first item, header’s second item) to headers. - appendHeader(headers, header[0], header[1]) - } - } else if (typeof object === 'object' && object !== null) { - // Note: null should throw +var baseGet = __nccwpck_require__(40877); - // 2. Otherwise, object is a record, then for each key → value in object, - // append (key, value) to headers - const keys = Object.keys(object) - for (let i = 0; i < keys.length; ++i) { - appendHeader(headers, keys[i], object[keys[i]]) - } - } else { - throw webidl.errors.conversionFailed({ - prefix: 'Headers constructor', - argument: 'Argument 1', - types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>'] - }) - } +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; } +module.exports = get; + + +/***/ }), + +/***/ 66306: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseHasIn = __nccwpck_require__(6186), + hasPath = __nccwpck_require__(48253); + /** - * @see https://fetch.spec.whatwg.org/#concept-headers-append + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false */ -function appendHeader (headers, name, value) { - // 1. Normalize value. - value = headerValueNormalize(value) +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.append', - value: name, - type: 'header name' - }) - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.append', - value, - type: 'header value' - }) - } +module.exports = hasIn; - // 3. If headers’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if headers’s guard is "request" and name is a - // forbidden header name, return. - // Note: undici does not implement forbidden header names - if (headers[kGuard] === 'immutable') { - throw new TypeError('immutable') - } else if (headers[kGuard] === 'request-no-cors') { - // 5. Otherwise, if headers’s guard is "request-no-cors": - // TODO - } - // 6. Otherwise, if headers’s guard is "response" and name is a - // forbidden response-header name, return. +/***/ }), - // 7. Append (name, value) to headers’s header list. - return headers[kHeadersList].append(name, value) +/***/ 46851: +/***/ ((module) => { - // 8. If headers’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from headers +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; } -class HeadersList { - /** @type {[string, string][]|null} */ - cookies = null +module.exports = identity; - constructor (init) { - if (init instanceof HeadersList) { - this[kHeadersMap] = new Map(init[kHeadersMap]) - this[kHeadersSortedMap] = init[kHeadersSortedMap] - this.cookies = init.cookies === null ? null : [...init.cookies] - } else { - this[kHeadersMap] = new Map(init) - this[kHeadersSortedMap] = null - } - } - // https://fetch.spec.whatwg.org/#header-list-contains - contains (name) { - // A header list list contains a header name name if list - // contains a header whose name is a byte-case-insensitive - // match for name. - name = name.toLowerCase() +/***/ }), - return this[kHeadersMap].has(name) - } +/***/ 60541: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - clear () { - this[kHeadersMap].clear() - this[kHeadersSortedMap] = null - this.cookies = null - } +var baseIsArguments = __nccwpck_require__(93605), + isObjectLike = __nccwpck_require__(51645); - // https://fetch.spec.whatwg.org/#concept-header-list-append - append (name, value) { - this[kHeadersSortedMap] = null +/** Used for built-in method references. */ +var objectProto = Object.prototype; - // 1. If list contains name, then set name to the first such - // header’s name. - const lowercaseName = name.toLowerCase() - const exists = this[kHeadersMap].get(lowercaseName) +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - // 2. Append (name, value) to list. - if (exists) { - const delimiter = lowercaseName === 'cookie' ? '; ' : ', ' - this[kHeadersMap].set(lowercaseName, { - name: exists.name, - value: `${exists.value}${delimiter}${value}` - }) - } else { - this[kHeadersMap].set(lowercaseName, { name, value }) - } +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; - if (lowercaseName === 'set-cookie') { - this.cookies ??= [] - this.cookies.push(value) - } - } +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; - // https://fetch.spec.whatwg.org/#concept-header-list-set - set (name, value) { - this[kHeadersSortedMap] = null - const lowercaseName = name.toLowerCase() +module.exports = isArguments; - if (lowercaseName === 'set-cookie') { - this.cookies = [value] - } - // 1. If list contains name, then set the value of - // the first such header to value and remove the - // others. - // 2. Otherwise, append header (name, value) to list. - this[kHeadersMap].set(lowercaseName, { name, value }) - } +/***/ }), - // https://fetch.spec.whatwg.org/#concept-header-list-delete - delete (name) { - this[kHeadersSortedMap] = null +/***/ 77192: +/***/ ((module) => { - name = name.toLowerCase() +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; - if (name === 'set-cookie') { - this.cookies = null - } +module.exports = isArray; - this[kHeadersMap].delete(name) - } - // https://fetch.spec.whatwg.org/#concept-header-list-get - get (name) { - const value = this[kHeadersMap].get(name.toLowerCase()) +/***/ }), - // 1. If list does not contain name, then return null. - // 2. Return the values of all headers in list whose name - // is a byte-case-insensitive match for name, - // separated from each other by 0x2C 0x20, in order. - return value === undefined ? null : value.value - } +/***/ 75119: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - * [Symbol.iterator] () { - // use the lowercased name - for (const [name, { value }] of this[kHeadersMap]) { - yield [name, value] - } - } +var isFunction = __nccwpck_require__(34329), + isLength = __nccwpck_require__(56657); - get entries () { - const headers = {} +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} - if (this[kHeadersMap].size) { - for (const { name, value } of this[kHeadersMap].values()) { - headers[name] = value - } - } +module.exports = isArrayLike; - return headers - } -} -// https://fetch.spec.whatwg.org/#headers-class -class Headers { - constructor (init = undefined) { - if (init === kConstruct) { - return - } - this[kHeadersList] = new HeadersList() +/***/ }), - // The new Headers(init) constructor steps are: +/***/ 43739: +/***/ ((module, exports, __nccwpck_require__) => { - // 1. Set this’s guard to "none". - this[kGuard] = 'none' +/* module decorator */ module = __nccwpck_require__.nmd(module); +var root = __nccwpck_require__(6748), + stubFalse = __nccwpck_require__(92074); - // 2. If init is given, then fill this with init. - if (init !== undefined) { - init = webidl.converters.HeadersInit(init) - fill(this, init) - } - } +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; - // https://fetch.spec.whatwg.org/#dom-headers-append - append (name, value) { - webidl.brandCheck(this, Headers) +/** Detect free variable `module`. */ +var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module; - webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }) +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; - name = webidl.converters.ByteString(name) - value = webidl.converters.ByteString(value) +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; - return appendHeader(this, name, value) - } +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - // https://fetch.spec.whatwg.org/#dom-headers-delete - delete (name) { - webidl.brandCheck(this, Headers) +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }) +module.exports = isBuffer; - name = webidl.converters.ByteString(name) - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.delete', - value: name, - type: 'header name' - }) - } +/***/ }), - // 2. If this’s guard is "immutable", then throw a TypeError. - // 3. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 4. Otherwise, if this’s guard is "request-no-cors", name - // is not a no-CORS-safelisted request-header name, and - // name is not a privileged no-CORS request-header name, - // return. - // 5. Otherwise, if this’s guard is "response" and name is - // a forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable') - } else if (this[kGuard] === 'request-no-cors') { - // TODO - } +/***/ 34329: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 6. If this’s header list does not contain name, then - // return. - if (!this[kHeadersList].contains(name)) { - return - } +var baseGetTag = __nccwpck_require__(29117), + isObject = __nccwpck_require__(96482); - // 7. Delete name from this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this. - this[kHeadersList].delete(name) +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} - // https://fetch.spec.whatwg.org/#dom-headers-get - get (name) { - webidl.brandCheck(this, Headers) +module.exports = isFunction; - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }) - name = webidl.converters.ByteString(name) +/***/ }), - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.get', - value: name, - type: 'header name' - }) - } +/***/ 56657: +/***/ ((module) => { - // 2. Return the result of getting name from this’s header - // list. - return this[kHeadersList].get(name) - } +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; - // https://fetch.spec.whatwg.org/#dom-headers-has - has (name) { - webidl.brandCheck(this, Headers) +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }) +module.exports = isLength; - name = webidl.converters.ByteString(name) - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.has', - value: name, - type: 'header name' - }) - } +/***/ }), - // 2. Return true if this’s header list contains name; - // otherwise false. - return this[kHeadersList].contains(name) - } +/***/ 85995: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // https://fetch.spec.whatwg.org/#dom-headers-set - set (name, value) { - webidl.brandCheck(this, Headers) +var baseIsMap = __nccwpck_require__(66051), + baseUnary = __nccwpck_require__(55506), + nodeUtil = __nccwpck_require__(88724); - webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }) +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; - name = webidl.converters.ByteString(name) - value = webidl.converters.ByteString(value) +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - // 1. Normalize value. - value = headerValueNormalize(value) +module.exports = isMap; - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.set', - value: name, - type: 'header name' - }) - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: 'Headers.set', - value, - type: 'header value' - }) - } - // 3. If this’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 5. Otherwise, if this’s guard is "request-no-cors" and - // name/value is not a no-CORS-safelisted request-header, - // return. - // 6. Otherwise, if this’s guard is "response" and name is a - // forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === 'immutable') { - throw new TypeError('immutable') - } else if (this[kGuard] === 'request-no-cors') { - // TODO - } +/***/ }), - // 7. Set (name, value) in this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this - this[kHeadersList].set(name, value) - } +/***/ 96482: +/***/ ((module) => { - // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie - getSetCookie () { - webidl.brandCheck(this, Headers) +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} - // 1. If this’s header list does not contain `Set-Cookie`, then return « ». - // 2. Return the values of all headers in this’s header list whose name is - // a byte-case-insensitive match for `Set-Cookie`, in order. +module.exports = isObject; - const list = this[kHeadersList].cookies - if (list) { - return [...list] - } +/***/ }), - return [] - } +/***/ 51645: +/***/ ((module) => { - // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine - get [kHeadersSortedMap] () { - if (this[kHeadersList][kHeadersSortedMap]) { - return this[kHeadersList][kHeadersSortedMap] - } +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} - // 1. Let headers be an empty list of headers with the key being the name - // and value the value. - const headers = [] +module.exports = isObjectLike; - // 2. Let names be the result of convert header names to a sorted-lowercase - // set with all the names of the headers in list. - const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1) - const cookies = this[kHeadersList].cookies - // 3. For each name of names: - for (let i = 0; i < names.length; ++i) { - const [name, value] = names[i] - // 1. If name is `set-cookie`, then: - if (name === 'set-cookie') { - // 1. Let values be a list of all values of headers in list whose name - // is a byte-case-insensitive match for name, in order. +/***/ }), - // 2. For each value of values: - // 1. Append (name, value) to headers. - for (let j = 0; j < cookies.length; ++j) { - headers.push([name, cookies[j]]) - } - } else { - // 2. Otherwise: +/***/ 27077: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. Let value be the result of getting name from list. +var baseIsSet = __nccwpck_require__(85901), + baseUnary = __nccwpck_require__(55506), + nodeUtil = __nccwpck_require__(88724); - // 2. Assert: value is non-null. - assert(value !== null) +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; - // 3. Append (name, value) to headers. - headers.push([name, value]) - } - } +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - this[kHeadersList][kHeadersSortedMap] = headers +module.exports = isSet; - // 4. Return headers. - return headers - } - keys () { - webidl.brandCheck(this, Headers) +/***/ }), - if (this[kGuard] === 'immutable') { - const value = this[kHeadersSortedMap] - return makeIterator(() => value, 'Headers', - 'key') - } +/***/ 70661: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return makeIterator( - () => [...this[kHeadersSortedMap].values()], - 'Headers', - 'key' - ) - } +var baseGetTag = __nccwpck_require__(29117), + isObjectLike = __nccwpck_require__(51645); - values () { - webidl.brandCheck(this, Headers) +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; - if (this[kGuard] === 'immutable') { - const value = this[kHeadersSortedMap] - return makeIterator(() => value, 'Headers', - 'value') - } +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} - return makeIterator( - () => [...this[kHeadersSortedMap].values()], - 'Headers', - 'value' - ) - } +module.exports = isSymbol; - entries () { - webidl.brandCheck(this, Headers) - if (this[kGuard] === 'immutable') { - const value = this[kHeadersSortedMap] - return makeIterator(() => value, 'Headers', - 'key+value') - } +/***/ }), - return makeIterator( - () => [...this[kHeadersSortedMap].values()], - 'Headers', - 'key+value' - ) - } +/***/ 35000: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * @param {(value: string, key: string, self: Headers) => void} callbackFn - * @param {unknown} thisArg - */ - forEach (callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, Headers) +var baseIsTypedArray = __nccwpck_require__(16880), + baseUnary = __nccwpck_require__(55506), + nodeUtil = __nccwpck_require__(88724); - webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }) +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - if (typeof callbackFn !== 'function') { - throw new TypeError( - "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." - ) - } +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]) - } - } +module.exports = isTypedArray; - [Symbol.for('nodejs.util.inspect.custom')] () { - webidl.brandCheck(this, Headers) - return this[kHeadersList] - } +/***/ }), + +/***/ 26741: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayLikeKeys = __nccwpck_require__(62000), + baseKeys = __nccwpck_require__(31517), + isArrayLike = __nccwpck_require__(75119); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } -Headers.prototype[Symbol.iterator] = Headers.prototype.entries +module.exports = keys; -Object.defineProperties(Headers.prototype, { - append: kEnumerableProperty, - delete: kEnumerableProperty, - get: kEnumerableProperty, - has: kEnumerableProperty, - set: kEnumerableProperty, - getSetCookie: kEnumerableProperty, - keys: kEnumerableProperty, - values: kEnumerableProperty, - entries: kEnumerableProperty, - forEach: kEnumerableProperty, - [Symbol.iterator]: { enumerable: false }, - [Symbol.toStringTag]: { - value: 'Headers', - configurable: true - }, - [util.inspect.custom]: { - enumerable: false + +/***/ }), + +/***/ 19430: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var arrayLikeKeys = __nccwpck_require__(62000), + baseKeysIn = __nccwpck_require__(82094), + isArrayLike = __nccwpck_require__(75119); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; + + +/***/ }), + +/***/ 24769: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var MapCache = __nccwpck_require__(79660); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); } -}) + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; -webidl.converters.HeadersInit = function (V) { - if (webidl.util.Type(V) === 'Object') { - if (V[Symbol.iterator]) { - return webidl.converters['sequence<sequence<ByteString>>'](V) + if (cache.has(key)) { + return cache.get(key); } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} - return webidl.converters['record<ByteString, ByteString>'](V) +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; + + +/***/ }), + +/***/ 11024: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseProperty = __nccwpck_require__(66136), + basePropertyDeep = __nccwpck_require__(32310), + isKey = __nccwpck_require__(20897), + toKey = __nccwpck_require__(95086); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; + + +/***/ }), + +/***/ 94604: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var baseFlatten = __nccwpck_require__(63183), + baseOrderBy = __nccwpck_require__(89196), + baseRest = __nccwpck_require__(22035), + isIterateeCall = __nccwpck_require__(3349); + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ +var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); +}); - throw webidl.errors.conversionFailed({ - prefix: 'Headers constructor', - argument: 'Argument 1', - types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>'] - }) +module.exports = sortBy; + + +/***/ }), + +/***/ 43400: +/***/ ((module) => { + +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; } -module.exports = { - fill, - Headers, - HeadersList +module.exports = stubArray; + + +/***/ }), + +/***/ 92074: +/***/ ((module) => { + +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; } +module.exports = stubFalse; + /***/ }), -/***/ 2315: +/***/ 87233: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; -// https://github.com/Ethan-Arrowood/undici-fetch +var baseToString = __nccwpck_require__(17625); +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} +module.exports = toString; -const { - Response, - makeNetworkError, - makeAppropriateNetworkError, - filterResponse, - makeResponse -} = __nccwpck_require__(8676) -const { Headers } = __nccwpck_require__(6349) -const { Request, makeRequest } = __nccwpck_require__(5194) -const zlib = __nccwpck_require__(3106) -const { - bytesMatch, - makePolicyContainer, - clonePolicyContainer, - requestBadPort, - TAOCheck, - appendRequestOriginHeader, - responseLocationURL, - requestCurrentURL, - setRequestReferrerPolicyOnRedirect, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - createOpaqueTimingInfo, - appendFetchMetadata, - corsCheck, - crossOriginResourcePolicyCheck, - determineRequestsReferrer, - coarsenedSharedCurrentTime, - createDeferredPromise, - isBlobLike, - sameOrigin, - isCancelled, - isAborted, - isErrorLike, - fullyReadBody, - readableStreamClose, - isomorphicEncode, - urlIsLocal, - urlIsHttpHttpsScheme, - urlHasHttpsScheme -} = __nccwpck_require__(5523) -const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) -const assert = __nccwpck_require__(2613) -const { safelyExtractBody } = __nccwpck_require__(8923) -const { - redirectStatusSet, - nullBodyStatus, - safeMethodsSet, - requestBodyHeader, - subresourceSet, - DOMException -} = __nccwpck_require__(7326) -const { kHeadersList } = __nccwpck_require__(6443) -const EE = __nccwpck_require__(4434) -const { Readable, pipeline } = __nccwpck_require__(2203) -const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = __nccwpck_require__(3440) -const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(4322) -const { TransformStream } = __nccwpck_require__(3774) -const { getGlobalDispatcher } = __nccwpck_require__(2581) -const { webidl } = __nccwpck_require__(4222) -const { STATUS_CODES } = __nccwpck_require__(8611) -const GET_OR_HEAD = ['GET', 'HEAD'] -/** @type {import('buffer').resolveObjectURL} */ -let resolveObjectURL -let ReadableStream = globalThis.ReadableStream +/***/ }), -class Fetch extends EE { - constructor (dispatcher) { - super() +/***/ 86863: +/***/ ((module) => { - this.dispatcher = dispatcher - this.connection = null - this.dump = false - this.state = 'ongoing' - // 2 terminated listeners get added per request, - // but only 1 gets removed. If there are 20 redirects, - // 21 listeners will be added. - // See https://github.com/nodejs/undici/issues/1711 - // TODO (fix): Find and fix root cause for leaked listener. - this.setMaxListeners(21) - } +"use strict"; - terminate (reason) { - if (this.state !== 'ongoing') { - return - } - this.state = 'terminated' - this.connection?.destroy(reason) - this.emit('terminated', reason) - } +module.exports = longestStreak - // https://fetch.spec.whatwg.org/#fetch-controller-abort - abort (error) { - if (this.state !== 'ongoing') { - return - } +// Get the count of the longest repeating streak of `character` in `value`. +function longestStreak(value, character) { + var count = 0 + var maximum = 0 + var expected + var index - // 1. Set controller’s state to "aborted". - this.state = 'aborted' + if (typeof character !== 'string' || character.length !== 1) { + throw new Error('Expected character') + } - // 2. Let fallbackError be an "AbortError" DOMException. - // 3. Set error to fallbackError if it is not given. - if (!error) { - error = new DOMException('The operation was aborted.', 'AbortError') - } + value = String(value) + index = value.indexOf(character) + expected = index - // 4. Let serializedError be StructuredSerialize(error). - // If that threw an exception, catch it, and let - // serializedError be StructuredSerialize(fallbackError). + while (index !== -1) { + count++ - // 5. Set controller’s serialized abort reason to serializedError. - this.serializedAbortReason = error + if (index === expected) { + if (count > maximum) { + maximum = count + } + } else { + count = 1 + } - this.connection?.destroy(error) - this.emit('terminated', error) + expected = index + 1 + index = value.indexOf(character, expected) } + + return maximum } -// https://fetch.spec.whatwg.org/#fetch-method -function fetch (input, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }) - // 1. Let p be a new promise. - const p = createDeferredPromise() +/***/ }), - // 2. Let requestObject be the result of invoking the initial value of - // Request as constructor with input and init as arguments. If this throws - // an exception, reject p with it and return p. - let requestObject +/***/ 80872: +/***/ ((module) => { - try { - requestObject = new Request(input, init) - } catch (e) { - p.reject(e) - return p.promise - } +"use strict"; - // 3. Let request be requestObject’s request. - const request = requestObject[kState] - // 4. If requestObject’s signal’s aborted flag is set, then: - if (requestObject.signal.aborted) { - // 1. Abort the fetch() call with p, request, null, and - // requestObject’s signal’s abort reason. - abortFetch(p, request, null, requestObject.signal.reason) +module.exports = escapes + +var defaults = [ + '\\', + '`', + '*', + '{', + '}', + '[', + ']', + '(', + ')', + '#', + '+', + '-', + '.', + '!', + '_', + '>' +] - // 2. Return p. - return p.promise - } +var gfm = defaults.concat(['~', '|']) + +var commonmark = gfm.concat([ + '\n', + '"', + '$', + '%', + '&', + "'", + ',', + '/', + ':', + ';', + '<', + '=', + '?', + '@', + '^' +]) - // 5. Let globalObject be request’s client’s global object. - const globalObject = request.client.globalObject +escapes.default = defaults +escapes.gfm = gfm +escapes.commonmark = commonmark - // 6. If globalObject is a ServiceWorkerGlobalScope object, then set - // request’s service-workers mode to "none". - if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { - request.serviceWorkers = 'none' +// Get markdown escapes. +function escapes(options) { + var settings = options || {} + + if (settings.commonmark) { + return commonmark } - // 7. Let responseObject be null. - let responseObject = null + return settings.gfm ? gfm : defaults +} - // 8. Let relevantRealm be this’s relevant Realm. - const relevantRealm = null - // 9. Let locallyAborted be false. - let locallyAborted = false +/***/ }), - // 10. Let controller be null. - let controller = null +/***/ 56558: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 11. Add the following abort steps to requestObject’s signal: - addAbortListener( - requestObject.signal, - () => { - // 1. Set locallyAborted to true. - locallyAborted = true +"use strict"; - // 2. Assert: controller is non-null. - assert(controller != null) - // 3. Abort controller with requestObject’s signal’s abort reason. - controller.abort(requestObject.signal.reason) +var visit = __nccwpck_require__(21916) - // 4. Abort the fetch() call with p, request, responseObject, - // and requestObject’s signal’s abort reason. - abortFetch(p, request, responseObject, requestObject.signal.reason) - } - ) +module.exports = compact - // 12. Let handleFetchDone given response response be to finalize and - // report timing with response, globalObject, and "fetch". - const handleFetchDone = (response) => - finalizeAndReportTiming(response, 'fetch') +// Make an mdast tree compact by merging adjacent text nodes. +function compact(tree, commonmark) { + visit(tree, visitor) - // 13. Set controller to the result of calling fetch given request, - // with processResponseEndOfBody set to handleFetchDone, and processResponse - // given response being these substeps: + return tree - const processResponse = (response) => { - // 1. If locallyAborted is true, terminate these substeps. - if (locallyAborted) { - return Promise.resolve() - } + function visitor(child, index, parent) { + var siblings = parent ? parent.children : [] + var prev = index && siblings[index - 1] - // 2. If response’s aborted flag is set, then: - if (response.aborted) { - // 1. Let deserializedError be the result of deserialize a serialized - // abort reason given controller’s serialized abort reason and - // relevantRealm. + if ( + prev && + child.type === prev.type && + mergeable(prev, commonmark) && + mergeable(child, commonmark) + ) { + if (child.value) { + prev.value += child.value + } - // 2. Abort the fetch() call with p, request, responseObject, and - // deserializedError. + if (child.children) { + prev.children = prev.children.concat(child.children) + } - abortFetch(p, request, responseObject, controller.serializedAbortReason) - return Promise.resolve() + siblings.splice(index, 1) + + if (prev.position && child.position) { + prev.position.end = child.position.end + } + + return index } + } +} - // 3. If response is a network error, then reject p with a TypeError - // and terminate these substeps. - if (response.type === 'error') { - p.reject( - Object.assign(new TypeError('fetch failed'), { cause: response.error }) - ) - return Promise.resolve() +function mergeable(node, commonmark) { + var start + var end + + if (node.type === 'text') { + if (!node.position) { + return true } - // 4. Set responseObject to the result of creating a Response object, - // given response, "immutable", and relevantRealm. - responseObject = new Response() - responseObject[kState] = response - responseObject[kRealm] = relevantRealm - responseObject[kHeaders][kHeadersList] = response.headersList - responseObject[kHeaders][kGuard] = 'immutable' - responseObject[kHeaders][kRealm] = relevantRealm + start = node.position.start + end = node.position.end - // 5. Resolve p with responseObject. - p.resolve(responseObject) + // Only merge nodes which occupy the same size as their `value`. + return ( + start.line !== end.line || end.column - start.column === node.value.length + ) } - controller = fetching({ - request, - processResponseEndOfBody: handleFetchDone, - processResponse, - dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici - }) - - // 14. Return p. - return p.promise + return commonmark && node.type === 'blockquote' } -// https://fetch.spec.whatwg.org/#finalize-and-report-timing -function finalizeAndReportTiming (response, initiatorType = 'other') { - // 1. If response is an aborted network error, then return. - if (response.type === 'error' && response.aborted) { - return - } - // 2. If response’s URL list is null or empty, then return. - if (!response.urlList?.length) { - return - } +/***/ }), - // 3. Let originalURL be response’s URL list[0]. - const originalURL = response.urlList[0] +/***/ 43478: +/***/ ((module) => { - // 4. Let timingInfo be response’s timing info. - let timingInfo = response.timingInfo +"use strict"; - // 5. Let cacheState be response’s cache state. - let cacheState = response.cacheState - // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. - if (!urlIsHttpHttpsScheme(originalURL)) { - return +module.exports = convert + +function convert(test) { + if (test == null) { + return ok } - // 7. If timingInfo is null, then return. - if (timingInfo === null) { - return + if (typeof test === 'string') { + return typeFactory(test) } - // 8. If response’s timing allow passed flag is not set, then: - if (!response.timingAllowPassed) { - // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. - timingInfo = createOpaqueTimingInfo({ - startTime: timingInfo.startTime - }) + if (typeof test === 'object') { + return 'length' in test ? anyFactory(test) : allFactory(test) + } - // 2. Set cacheState to the empty string. - cacheState = '' + if (typeof test === 'function') { + return test } - // 9. Set timingInfo’s end time to the coarsened shared current time - // given global’s relevant settings object’s cross-origin isolated - // capability. - // TODO: given global’s relevant settings object’s cross-origin isolated - // capability? - timingInfo.endTime = coarsenedSharedCurrentTime() + throw new Error('Expected function, string, or object as test') +} - // 10. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo +// Utility assert each property in `test` is represented in `node`, and each +// values are strictly equal. +function allFactory(test) { + return all - // 11. Mark resource timing for timingInfo, originalURL, initiatorType, - // global, and cacheState. - markResourceTiming( - timingInfo, - originalURL, - initiatorType, - globalThis, - cacheState - ) -} + function all(node) { + var key -// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing -function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { - if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { - performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState) + for (key in test) { + if (node[key] !== test[key]) return false + } + + return true } } -// https://fetch.spec.whatwg.org/#abort-fetch -function abortFetch (p, request, responseObject, error) { - // Note: AbortSignal.reason was added in node v17.2.0 - // which would give us an undefined error to reject with. - // Remove this once node v16 is no longer supported. - if (!error) { - error = new DOMException('The operation was aborted.', 'AbortError') +function anyFactory(tests) { + var checks = [] + var index = -1 + + while (++index < tests.length) { + checks[index] = convert(tests[index]) } - // 1. Reject promise with error. - p.reject(error) + return any - // 2. If request’s body is not null and is readable, then cancel request’s - // body with error. - if (request.body != null && isReadable(request.body?.stream)) { - request.body.stream.cancel(error).catch((err) => { - if (err.code === 'ERR_INVALID_STATE') { - // Node bug? - return + function any() { + var index = -1 + + while (++index < checks.length) { + if (checks[index].apply(this, arguments)) { + return true } - throw err - }) - } + } - // 3. If responseObject is null, then return. - if (responseObject == null) { - return + return false } +} - // 4. Let response be responseObject’s response. - const response = responseObject[kState] +// Utility to convert a string into a function which checks a given node’s type +// for said string. +function typeFactory(test) { + return type - // 5. If response’s body is not null and is readable, then error response’s - // body with error. - if (response.body != null && isReadable(response.body?.stream)) { - response.body.stream.cancel(error).catch((err) => { - if (err.code === 'ERR_INVALID_STATE') { - // Node bug? - return - } - throw err - }) + function type(node) { + return Boolean(node && node.type === test) } } -// https://fetch.spec.whatwg.org/#fetching -function fetching ({ - request, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseEndOfBody, - processResponseConsumeBody, - useParallelQueue = false, - dispatcher // undici -}) { - // 1. Let taskDestination be null. - let taskDestination = null +// Utility to return true. +function ok() { + return true +} - // 2. Let crossOriginIsolatedCapability be false. - let crossOriginIsolatedCapability = false - // 3. If request’s client is non-null, then: - if (request.client != null) { - // 1. Set taskDestination to request’s client’s global object. - taskDestination = request.client.globalObject +/***/ }), - // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin - // isolated capability. - crossOriginIsolatedCapability = - request.client.crossOriginIsolatedCapability - } +/***/ 25511: +/***/ ((module) => { - // 4. If useParallelQueue is true, then set taskDestination to the result of - // starting a new parallel queue. - // TODO +module.exports = color +function color(d) { + return '\u001B[33m' + d + '\u001B[39m' +} - // 5. Let timingInfo be a new fetch timing info whose start time and - // post-redirect start time are the coarsened shared current time given - // crossOriginIsolatedCapability. - const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability) - const timingInfo = createOpaqueTimingInfo({ - startTime: currenTime - }) - // 6. Let fetchParams be a new fetch params whose - // request is request, - // timing info is timingInfo, - // process request body chunk length is processRequestBodyChunkLength, - // process request end-of-body is processRequestEndOfBody, - // process response is processResponse, - // process response consume body is processResponseConsumeBody, - // process response end-of-body is processResponseEndOfBody, - // task destination is taskDestination, - // and cross-origin isolated capability is crossOriginIsolatedCapability. - const fetchParams = { - controller: new Fetch(dispatcher), - request, - timingInfo, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseConsumeBody, - processResponseEndOfBody, - taskDestination, - crossOriginIsolatedCapability - } +/***/ }), - // 7. If request’s body is a byte sequence, then set request’s body to - // request’s body as a body. - // NOTE: Since fetching is only called from fetch, body should already be - // extracted. - assert(!request.body || request.body.stream) +/***/ 63024: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 8. If request’s window is "client", then set request’s window to request’s - // client, if request’s client’s global object is a Window object; otherwise - // "no-window". - if (request.window === 'client') { - // TODO: What if request.client is null? - request.window = - request.client?.globalObject?.constructor?.name === 'Window' - ? request.client - : 'no-window' - } +"use strict"; - // 9. If request’s origin is "client", then set request’s origin to request’s - // client’s origin. - if (request.origin === 'client') { - // TODO: What if request.client is null? - request.origin = request.client?.origin - } - // 10. If all of the following conditions are true: - // TODO +module.exports = visitParents - // 11. If request’s policy container is "client", then: - if (request.policyContainer === 'client') { - // 1. If request’s client is non-null, then set request’s policy - // container to a clone of request’s client’s policy container. [HTML] - if (request.client != null) { - request.policyContainer = clonePolicyContainer( - request.client.policyContainer - ) - } else { - // 2. Otherwise, set request’s policy container to a new policy - // container. - request.policyContainer = makePolicyContainer() - } - } +var convert = __nccwpck_require__(43478) +var color = __nccwpck_require__(25511) - // 12. If request’s header list does not contain `Accept`, then: - if (!request.headersList.contains('accept')) { - // 1. Let value be `*/*`. - const value = '*/*' +var CONTINUE = true +var SKIP = 'skip' +var EXIT = false - // 2. A user agent should set value to the first matching statement, if - // any, switching on request’s destination: - // "document" - // "frame" - // "iframe" - // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` - // "image" - // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` - // "style" - // `text/css,*/*;q=0.1` - // TODO +visitParents.CONTINUE = CONTINUE +visitParents.SKIP = SKIP +visitParents.EXIT = EXIT - // 3. Append `Accept`/value to request’s header list. - request.headersList.append('accept', value) - } +function visitParents(tree, test, visitor, reverse) { + var step + var is - // 13. If request’s header list does not contain `Accept-Language`, then - // user agents should append `Accept-Language`/an appropriate value to - // request’s header list. - if (!request.headersList.contains('accept-language')) { - request.headersList.append('accept-language', '*') + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + visitor = test + test = null } - // 14. If request’s priority is null, then use request’s initiator and - // destination appropriately in setting request’s priority to a - // user-agent-defined object. - if (request.priority === null) { - // TODO - } + is = convert(test) + step = reverse ? -1 : 1 - // 15. If request is a subresource request, then: - if (subresourceSet.has(request.destination)) { - // TODO - } + factory(tree, null, [])() - // 16. Run main fetch given fetchParams. - mainFetch(fetchParams) - .catch(err => { - fetchParams.controller.terminate(err) - }) + function factory(node, index, parents) { + var value = typeof node === 'object' && node !== null ? node : {} + var name - // 17. Return fetchParam's controller - return fetchParams.controller -} + if (typeof value.type === 'string') { + name = + typeof value.tagName === 'string' + ? value.tagName + : typeof value.name === 'string' + ? value.name + : undefined -// https://fetch.spec.whatwg.org/#concept-main-fetch -async function mainFetch (fetchParams, recursive = false) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request + visit.displayName = + 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')' + } - // 2. Let response be null. - let response = null + return visit - // 3. If request’s local-URLs-only flag is set and request’s current URL is - // not local, then set response to a network error. - if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { - response = makeNetworkError('local URLs only') - } + function visit() { + var grandparents = parents.concat(node) + var result = [] + var subresult + var offset - // 4. Run report Content Security Policy violations for request. - // TODO + if (!test || is(node, index, parents[parents.length - 1] || null)) { + result = toResult(visitor(node, parents)) - // 5. Upgrade request to a potentially trustworthy URL, if appropriate. - tryUpgradeRequestToAPotentiallyTrustworthyURL(request) + if (result[0] === EXIT) { + return result + } + } - // 6. If should request be blocked due to a bad port, should fetching request - // be blocked as mixed content, or should request be blocked by Content - // Security Policy returns blocked, then set response to a network error. - if (requestBadPort(request) === 'blocked') { - response = makeNetworkError('bad port') + if (node.children && result[0] !== SKIP) { + offset = (reverse ? node.children.length : -1) + step + + while (offset > -1 && offset < node.children.length) { + subresult = factory(node.children[offset], offset, grandparents)() + + if (subresult[0] === EXIT) { + return subresult + } + + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step + } + } + + return result + } } - // TODO: should fetching request be blocked as mixed content? - // TODO: should request be blocked by Content Security Policy? +} - // 7. If request’s referrer policy is the empty string, then set request’s - // referrer policy to request’s policy container’s referrer policy. - if (request.referrerPolicy === '') { - request.referrerPolicy = request.policyContainer.referrerPolicy +function toResult(value) { + if (value !== null && typeof value === 'object' && 'length' in value) { + return value } - // 8. If request’s referrer is not "no-referrer", then set request’s - // referrer to the result of invoking determine request’s referrer. - if (request.referrer !== 'no-referrer') { - request.referrer = determineRequestsReferrer(request) + if (typeof value === 'number') { + return [CONTINUE, value] } - // 9. Set request’s current URL’s scheme to "https" if all of the following - // conditions are true: - // - request’s current URL’s scheme is "http" - // - request’s current URL’s host is a domain - // - Matching request’s current URL’s host per Known HSTS Host Domain Name - // Matching results in either a superdomain match with an asserted - // includeSubDomains directive or a congruent match (with or without an - // asserted includeSubDomains directive). [HSTS] - // TODO + return [value] +} - // 10. If recursive is false, then run the remaining steps in parallel. - // TODO - // 11. If response is null, then set response to the result of running - // the steps corresponding to the first matching statement: - if (response === null) { - response = await (async () => { - const currentURL = requestCurrentURL(request) +/***/ }), - if ( - // - request’s current URL’s origin is same origin with request’s origin, - // and request’s response tainting is "basic" - (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || - // request’s current URL’s scheme is "data" - (currentURL.protocol === 'data:') || - // - request’s mode is "navigate" or "websocket" - (request.mode === 'navigate' || request.mode === 'websocket') - ) { - // 1. Set request’s response tainting to "basic". - request.responseTainting = 'basic' +/***/ 21916: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams) - } +"use strict"; - // request’s mode is "same-origin" - if (request.mode === 'same-origin') { - // 1. Return a network error. - return makeNetworkError('request mode cannot be "same-origin"') - } - // request’s mode is "no-cors" - if (request.mode === 'no-cors') { - // 1. If request’s redirect mode is not "follow", then return a network - // error. - if (request.redirect !== 'follow') { - return makeNetworkError( - 'redirect mode cannot be "follow" for "no-cors" request' - ) - } +module.exports = visit - // 2. Set request’s response tainting to "opaque". - request.responseTainting = 'opaque' +var visitParents = __nccwpck_require__(63024) - // 3. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams) - } +var CONTINUE = visitParents.CONTINUE +var SKIP = visitParents.SKIP +var EXIT = visitParents.EXIT - // request’s current URL’s scheme is not an HTTP(S) scheme - if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { - // Return a network error. - return makeNetworkError('URL scheme must be a HTTP(S) scheme') - } +visit.CONTINUE = CONTINUE +visit.SKIP = SKIP +visit.EXIT = EXIT - // - request’s use-CORS-preflight flag is set - // - request’s unsafe-request flag is set and either request’s method is - // not a CORS-safelisted method or CORS-unsafe request-header names with - // request’s header list is not empty - // 1. Set request’s response tainting to "cors". - // 2. Let corsWithPreflightResponse be the result of running HTTP fetch - // given fetchParams and true. - // 3. If corsWithPreflightResponse is a network error, then clear cache - // entries using request. - // 4. Return corsWithPreflightResponse. - // TODO +function visit(tree, test, visitor, reverse) { + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + visitor = test + test = null + } - // Otherwise - // 1. Set request’s response tainting to "cors". - request.responseTainting = 'cors' + visitParents(tree, test, overload, reverse) - // 2. Return the result of running HTTP fetch given fetchParams. - return await httpFetch(fetchParams) - })() + function overload(node, parents) { + var parent = parents[parents.length - 1] + var index = parent ? parent.children.indexOf(node) : null + return visitor(node, index, parent) } +} - // 12. If recursive is true, then return response. - if (recursive) { - return response - } - // 13. If response is not a network error and response is not a filtered - // response, then: - if (response.status !== 0 && !response.internalResponse) { - // If request’s response tainting is "cors", then: - if (request.responseTainting === 'cors') { - // 1. Let headerNames be the result of extracting header list values - // given `Access-Control-Expose-Headers` and response’s header list. - // TODO - // 2. If request’s credentials mode is not "include" and headerNames - // contains `*`, then set response’s CORS-exposed header-name list to - // all unique header names in response’s header list. - // TODO - // 3. Otherwise, if headerNames is not null or failure, then set - // response’s CORS-exposed header-name list to headerNames. - // TODO - } +/***/ }), - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (request.responseTainting === 'basic') { - response = filterResponse(response, 'basic') - } else if (request.responseTainting === 'cors') { - response = filterResponse(response, 'cors') - } else if (request.responseTainting === 'opaque') { - response = filterResponse(response, 'opaque') - } else { - assert(false) - } - } +/***/ 70744: +/***/ ((module) => { - // 14. Let internalResponse be response, if response is a network error, - // and response’s internal response otherwise. - let internalResponse = - response.status === 0 ? response : response.internalResponse +/** + * Helpers. + */ - // 15. If internalResponse’s URL list is empty, then set it to a clone of - // request’s URL list. - if (internalResponse.urlList.length === 0) { - internalResponse.urlList.push(...request.urlList) - } +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; - // 16. If request’s timing allow failed flag is unset, then set - // internalResponse’s timing allow passed flag. - if (!request.timingAllowFailed) { - response.timingAllowPassed = true - } +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ - // 17. If response is not a network error and any of the following returns - // blocked - // - should internalResponse to request be blocked as mixed content - // - should internalResponse to request be blocked by Content Security Policy - // - should internalResponse to request be blocked due to its MIME type - // - should internalResponse to request be blocked due to nosniff - // TODO +module.exports = function (val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; - // 18. If response’s type is "opaque", internalResponse’s status is 206, - // internalResponse’s range-requested flag is set, and request’s header - // list does not contain `Range`, then set response and internalResponse - // to a network error. - if ( - response.type === 'opaque' && - internalResponse.status === 206 && - internalResponse.rangeRequested && - !request.headers.contains('range') - ) { - response = internalResponse = makeNetworkError() - } +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ - // 19. If response is not a network error and either request’s method is - // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, - // set internalResponse’s body to null and disregard any enqueuing toward - // it (if any). - if ( - response.status !== 0 && - (request.method === 'HEAD' || - request.method === 'CONNECT' || - nullBodyStatus.includes(internalResponse.status)) - ) { - internalResponse.body = null - fetchParams.controller.dump = true +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; } +} - // 20. If request’s integrity metadata is not the empty string, then: - if (request.integrity) { - // 1. Let processBodyError be this step: run fetch finale given fetchParams - // and a network error. - const processBodyError = (reason) => - fetchFinale(fetchParams, makeNetworkError(reason)) +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ - // 2. If request’s response tainting is "opaque", or response’s body is null, - // then run processBodyError and abort these steps. - if (request.responseTainting === 'opaque' || response.body == null) { - processBodyError(response.error) - return - } +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} - // 3. Let processBody given bytes be these steps: - const processBody = (bytes) => { - // 1. If bytes do not match request’s integrity metadata, - // then run processBodyError and abort these steps. [SRI] - if (!bytesMatch(bytes, request.integrity)) { - processBodyError('integrity mismatch') - return - } +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ - // 2. Set response’s body to bytes as a body. - response.body = safelyExtractBody(bytes)[0] +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} - // 3. Run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response) - } +/** + * Pluralization helper. + */ - // 4. Fully read response’s body given processBody and processBodyError. - await fullyReadBody(response.body, processBody, processBodyError) - } else { - // 21. Otherwise, run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response) - } +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); } -// https://fetch.spec.whatwg.org/#concept-scheme-fetch -// given a fetch params fetchParams -function schemeFetch (fetchParams) { - // Note: since the connection is destroyed on redirect, which sets fetchParams to a - // cancelled state, we do not want this condition to trigger *unless* there have been - // no redirects. See https://github.com/nodejs/undici/issues/1776 - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { - return Promise.resolve(makeAppropriateNetworkError(fetchParams)) - } - // 2. Let request be fetchParams’s request. - const { request } = fetchParams +/***/ }), - const { protocol: scheme } = requestCurrentURL(request) +/***/ 37879: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 3. Switch on request’s current URL’s scheme and run the associated steps: - switch (scheme) { - case 'about:': { - // If request’s current URL’s path is the string "blank", then return a new response - // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », - // and body is the empty byte sequence as a body. +"use strict"; - // Otherwise, return a network error. - return Promise.resolve(makeNetworkError('about scheme is not supported')) - } - case 'blob:': { - if (!resolveObjectURL) { - resolveObjectURL = (__nccwpck_require__(181).resolveObjectURL) - } - // 1. Let blobURLEntry be request’s current URL’s blob URL entry. - const blobURLEntry = requestCurrentURL(request) +var characterEntities = __nccwpck_require__(37839) - // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 - // Buffer.resolveObjectURL does not ignore URL queries. - if (blobURLEntry.search.length !== 0) { - return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')) - } +module.exports = decodeEntity - const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()) +var own = {}.hasOwnProperty - // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s - // object is not a Blob object, then return a network error. - if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { - return Promise.resolve(makeNetworkError('invalid method')) - } +function decodeEntity(characters) { + return own.call(characterEntities, characters) + ? characterEntities[characters] + : false +} - // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. - const bodyWithType = safelyExtractBody(blobURLEntryObject) - // 4. Let body be bodyWithType’s body. - const body = bodyWithType[0] +/***/ }), - // 5. Let length be body’s length, serialized and isomorphic encoded. - const length = isomorphicEncode(`${body.length}`) +/***/ 75165: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. - const type = bodyWithType[1] ?? '' +"use strict"; - // 7. Return a new response whose status message is `OK`, header list is - // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. - const response = makeResponse({ - statusText: 'OK', - headersList: [ - ['content-length', { name: 'Content-Length', value: length }], - ['content-type', { name: 'Content-Type', value: type }] - ] - }) - response.body = body +var legacy = __nccwpck_require__(82719) +var invalid = __nccwpck_require__(21257) +var decimal = __nccwpck_require__(96734) +var hexadecimal = __nccwpck_require__(84794) +var alphanumerical = __nccwpck_require__(51685) +var decodeEntity = __nccwpck_require__(37879) + +module.exports = parseEntities + +var own = {}.hasOwnProperty +var fromCharCode = String.fromCharCode +var noop = Function.prototype + +// Default settings. +var defaults = { + warning: null, + reference: null, + text: null, + warningContext: null, + referenceContext: null, + textContext: null, + position: {}, + additional: null, + attribute: false, + nonTerminated: true +} + +// Characters. +var tab = 9 // '\t' +var lineFeed = 10 // '\n' +var formFeed = 12 // '\f' +var space = 32 // ' ' +var ampersand = 38 // '&' +var semicolon = 59 // ';' +var lessThan = 60 // '<' +var equalsTo = 61 // '=' +var numberSign = 35 // '#' +var uppercaseX = 88 // 'X' +var lowercaseX = 120 // 'x' +var replacementCharacter = 65533 // '�' + +// Reference types. +var name = 'named' +var hexa = 'hexadecimal' +var deci = 'decimal' + +// Map of bases. +var bases = {} + +bases[hexa] = 16 +bases[deci] = 10 + +// Map of types to tests. +// Each type of character reference accepts different characters. +// This test is used to detect whether a reference has ended (as the semicolon +// is not strictly needed). +var tests = {} + +tests[name] = alphanumerical +tests[deci] = decimal +tests[hexa] = hexadecimal + +// Warning types. +var namedNotTerminated = 1 +var numericNotTerminated = 2 +var namedEmpty = 3 +var numericEmpty = 4 +var namedUnknown = 5 +var numericDisallowed = 6 +var numericProhibited = 7 - return Promise.resolve(response) - } - case 'data:': { - // 1. Let dataURLStruct be the result of running the - // data: URL processor on request’s current URL. - const currentURL = requestCurrentURL(request) - const dataURLStruct = dataURLProcessor(currentURL) +// Warning messages. +var messages = {} + +messages[namedNotTerminated] = + 'Named character references must be terminated by a semicolon' +messages[numericNotTerminated] = + 'Numeric character references must be terminated by a semicolon' +messages[namedEmpty] = 'Named character references cannot be empty' +messages[numericEmpty] = 'Numeric character references cannot be empty' +messages[namedUnknown] = 'Named character references must be known' +messages[numericDisallowed] = + 'Numeric character references cannot be disallowed' +messages[numericProhibited] = + 'Numeric character references cannot be outside the permissible Unicode range' - // 2. If dataURLStruct is failure, then return a - // network error. - if (dataURLStruct === 'failure') { - return Promise.resolve(makeNetworkError('failed to fetch the data URL')) - } +// Wrap to ensure clean parameters are given to `parse`. +function parseEntities(value, options) { + var settings = {} + var option + var key - // 3. Let mimeType be dataURLStruct’s MIME type, serialized. - const mimeType = serializeAMimeType(dataURLStruct.mimeType) + if (!options) { + options = {} + } - // 4. Return a response whose status message is `OK`, - // header list is « (`Content-Type`, mimeType) », - // and body is dataURLStruct’s body as a body. - return Promise.resolve(makeResponse({ - statusText: 'OK', - headersList: [ - ['content-type', { name: 'Content-Type', value: mimeType }] - ], - body: safelyExtractBody(dataURLStruct.body)[0] - })) - } - case 'file:': { - // For now, unfortunate as it is, file URLs are left as an exercise for the reader. - // When in doubt, return a network error. - return Promise.resolve(makeNetworkError('not implemented... yet...')) - } - case 'http:': - case 'https:': { - // Return the result of running HTTP fetch given fetchParams. + for (key in defaults) { + option = options[key] + settings[key] = + option === null || option === undefined ? defaults[key] : option + } - return httpFetch(fetchParams) - .catch((err) => makeNetworkError(err)) - } - default: { - return Promise.resolve(makeNetworkError('unknown scheme')) - } + if (settings.position.indent || settings.position.start) { + settings.indent = settings.position.indent || [] + settings.position = settings.position.start } -} -// https://fetch.spec.whatwg.org/#finalize-response -function finalizeResponse (fetchParams, response) { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true + return parse(value, settings) +} - // 2, If fetchParams’s process response done is not null, then queue a fetch - // task to run fetchParams’s process response done given response, with - // fetchParams’s task destination. - if (fetchParams.processResponseDone != null) { - queueMicrotask(() => fetchParams.processResponseDone(response)) +// Parse entities. +// eslint-disable-next-line complexity +function parse(value, settings) { + var additional = settings.additional + var nonTerminated = settings.nonTerminated + var handleText = settings.text + var handleReference = settings.reference + var handleWarning = settings.warning + var textContext = settings.textContext + var referenceContext = settings.referenceContext + var warningContext = settings.warningContext + var pos = settings.position + var indent = settings.indent || [] + var length = value.length + var index = 0 + var lines = -1 + var column = pos.column || 1 + var line = pos.line || 1 + var queue = '' + var result = [] + var entityCharacters + var namedEntity + var terminated + var characters + var character + var reference + var following + var warning + var reason + var output + var entity + var begin + var start + var type + var test + var prev + var next + var diff + var end + + if (typeof additional === 'string') { + additional = additional.charCodeAt(0) } -} -// https://fetch.spec.whatwg.org/#fetch-finale -function fetchFinale (fetchParams, response) { - // 1. If response is a network error, then: - if (response.type === 'error') { - // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». - response.urlList = [fetchParams.request.urlList[0]] + // Cache the current point. + prev = now() - // 2. Set response’s timing info to the result of creating an opaque timing - // info for fetchParams’s timing info. - response.timingInfo = createOpaqueTimingInfo({ - startTime: fetchParams.timingInfo.startTime - }) - } + // Wrap `handleWarning`. + warning = handleWarning ? parseError : noop - // 2. Let processResponseEndOfBody be the following steps: - const processResponseEndOfBody = () => { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true + // Ensure the algorithm walks over the first character and the end + // (inclusive). + index-- + length++ - // If fetchParams’s process response end-of-body is not null, - // then queue a fetch task to run fetchParams’s process response - // end-of-body given response with fetchParams’s task destination. - if (fetchParams.processResponseEndOfBody != null) { - queueMicrotask(() => fetchParams.processResponseEndOfBody(response)) + while (++index < length) { + // If the previous character was a newline. + if (character === lineFeed) { + column = indent[lines] || 1 } - } - - // 3. If fetchParams’s process response is non-null, then queue a fetch task - // to run fetchParams’s process response given response, with fetchParams’s - // task destination. - if (fetchParams.processResponse != null) { - queueMicrotask(() => fetchParams.processResponse(response)) - } - // 4. If response’s body is null, then run processResponseEndOfBody. - if (response.body == null) { - processResponseEndOfBody() - } else { - // 5. Otherwise: + character = value.charCodeAt(index) - // 1. Let transformStream be a new a TransformStream. + if (character === ampersand) { + following = value.charCodeAt(index + 1) - // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, - // enqueues chunk in transformStream. - const identityTransformAlgorithm = (chunk, controller) => { - controller.enqueue(chunk) - } + // The behaviour depends on the identity of the next character. + if ( + following === tab || + following === lineFeed || + following === formFeed || + following === space || + following === ampersand || + following === lessThan || + following !== following || + (additional && following === additional) + ) { + // Not a character reference. + // No characters are consumed, and nothing is returned. + // This is not an error, either. + queue += fromCharCode(character) + column++ - // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm - // and flushAlgorithm set to processResponseEndOfBody. - const transformStream = new TransformStream({ - start () {}, - transform: identityTransformAlgorithm, - flush: processResponseEndOfBody - }, { - size () { - return 1 + continue } - }, { - size () { - return 1 + + start = index + 1 + begin = start + end = start + + if (following === numberSign) { + // Numerical entity. + end = ++begin + + // The behaviour further depends on the next character. + following = value.charCodeAt(end) + + if (following === uppercaseX || following === lowercaseX) { + // ASCII hex digits. + type = hexa + end = ++begin + } else { + // ASCII digits. + type = deci + } + } else { + // Named entity. + type = name } - }) - // 4. Set response’s body to the result of piping response’s body through transformStream. - response.body = { stream: response.body.stream.pipeThrough(transformStream) } - } + entityCharacters = '' + entity = '' + characters = '' + test = tests[type] + end-- - // 6. If fetchParams’s process response consume body is non-null, then: - if (fetchParams.processResponseConsumeBody != null) { - // 1. Let processBody given nullOrBytes be this step: run fetchParams’s - // process response consume body given response and nullOrBytes. - const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes) + while (++end < length) { + following = value.charCodeAt(end) - // 2. Let processBodyError be this step: run fetchParams’s process - // response consume body given response and failure. - const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure) + if (!test(following)) { + break + } - // 3. If response’s body is null, then queue a fetch task to run processBody - // given null, with fetchParams’s task destination. - if (response.body == null) { - queueMicrotask(() => processBody(null)) - } else { - // 4. Otherwise, fully read response’s body given processBody, processBodyError, - // and fetchParams’s task destination. - return fullyReadBody(response.body, processBody, processBodyError) - } - return Promise.resolve() - } -} + characters += fromCharCode(following) -// https://fetch.spec.whatwg.org/#http-fetch -async function httpFetch (fetchParams) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request + // Check if we can match a legacy named reference. + // If so, we cache that as the last viable named reference. + // This ensures we do not need to walk backwards later. + if (type === name && own.call(legacy, characters)) { + entityCharacters = characters + entity = legacy[characters] + } + } - // 2. Let response be null. - let response = null + terminated = value.charCodeAt(end) === semicolon - // 3. Let actualResponse be null. - let actualResponse = null + if (terminated) { + end++ - // 4. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo + namedEntity = type === name ? decodeEntity(characters) : false - // 5. If request’s service-workers mode is "all", then: - if (request.serviceWorkers === 'all') { - // TODO - } + if (namedEntity) { + entityCharacters = characters + entity = namedEntity + } + } - // 6. If response is null, then: - if (response === null) { - // 1. If makeCORSPreflight is true and one of these conditions is true: - // TODO + diff = 1 + end - start - // 2. If request’s redirect mode is "follow", then set request’s - // service-workers mode to "none". - if (request.redirect === 'follow') { - request.serviceWorkers = 'none' - } + if (!terminated && !nonTerminated) { + // Empty. + } else if (!characters) { + // An empty (possible) entity is valid, unless it’s numeric (thus an + // ampersand followed by an octothorp). + if (type !== name) { + warning(numericEmpty, diff) + } + } else if (type === name) { + // An ampersand followed by anything unknown, and not terminated, is + // invalid. + if (terminated && !entity) { + warning(namedUnknown, 1) + } else { + // If theres something after an entity name which is not known, cap + // the reference. + if (entityCharacters !== characters) { + end = begin + entityCharacters.length + diff = 1 + end - begin + terminated = false + } - // 3. Set response and actualResponse to the result of running - // HTTP-network-or-cache fetch given fetchParams. - actualResponse = response = await httpNetworkOrCacheFetch(fetchParams) + // If the reference is not terminated, warn. + if (!terminated) { + reason = entityCharacters ? namedNotTerminated : namedEmpty - // 4. If request’s response tainting is "cors" and a CORS check - // for request and response returns failure, then return a network error. - if ( - request.responseTainting === 'cors' && - corsCheck(request, response) === 'failure' - ) { - return makeNetworkError('cors failure') - } + if (settings.attribute) { + following = value.charCodeAt(end) - // 5. If the TAO check for request and response returns failure, then set - // request’s timing allow failed flag. - if (TAOCheck(request, response) === 'failure') { - request.timingAllowFailed = true - } - } + if (following === equalsTo) { + warning(reason, diff) + entity = null + } else if (alphanumerical(following)) { + entity = null + } else { + warning(reason, diff) + } + } else { + warning(reason, diff) + } + } + } - // 7. If either request’s response tainting or response’s type - // is "opaque", and the cross-origin resource policy check with - // request’s origin, request’s client, request’s destination, - // and actualResponse returns blocked, then return a network error. - if ( - (request.responseTainting === 'opaque' || response.type === 'opaque') && - crossOriginResourcePolicyCheck( - request.origin, - request.client, - request.destination, - actualResponse - ) === 'blocked' - ) { - return makeNetworkError('blocked') - } + reference = entity + } else { + if (!terminated) { + // All non-terminated numeric entities are not rendered, and trigger a + // warning. + warning(numericNotTerminated, diff) + } - // 8. If actualResponse’s status is a redirect status, then: - if (redirectStatusSet.has(actualResponse.status)) { - // 1. If actualResponse’s status is not 303, request’s body is not null, - // and the connection uses HTTP/2, then user agents may, and are even - // encouraged to, transmit an RST_STREAM frame. - // See, https://github.com/whatwg/fetch/issues/1288 - if (request.redirect !== 'manual') { - fetchParams.controller.connection.destroy() - } + // When terminated and number, parse as either hexadecimal or decimal. + reference = parseInt(characters, bases[type]) + + // Trigger a warning when the parsed number is prohibited, and replace + // with replacement character. + if (prohibited(reference)) { + warning(numericProhibited, diff) + reference = fromCharCode(replacementCharacter) + } else if (reference in invalid) { + // Trigger a warning when the parsed number is disallowed, and replace + // by an alternative. + warning(numericDisallowed, diff) + reference = invalid[reference] + } else { + // Parse the number. + output = '' - // 2. Switch on request’s redirect mode: - if (request.redirect === 'error') { - // Set response to a network error. - response = makeNetworkError('unexpected redirect') - } else if (request.redirect === 'manual') { - // Set response to an opaque-redirect filtered response whose internal - // response is actualResponse. - // NOTE(spec): On the web this would return an `opaqueredirect` response, - // but that doesn't make sense server side. - // See https://github.com/nodejs/undici/issues/1193. - response = actualResponse - } else if (request.redirect === 'follow') { - // Set response to the result of running HTTP-redirect fetch given - // fetchParams and response. - response = await httpRedirectFetch(fetchParams, response) - } else { - assert(false) - } - } + // Trigger a warning when the parsed number should not be used. + if (disallowed(reference)) { + warning(numericDisallowed, diff) + } - // 9. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo + // Stringify the number. + if (reference > 0xffff) { + reference -= 0x10000 + output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800) + reference = 0xdc00 | (reference & 0x3ff) + } - // 10. Return response. - return response -} + reference = output + fromCharCode(reference) + } + } -// https://fetch.spec.whatwg.org/#http-redirect-fetch -function httpRedirectFetch (fetchParams, response) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request + // Found it! + // First eat the queued characters as normal text, then eat an entity. + if (reference) { + flush() - // 2. Let actualResponse be response, if response is not a filtered response, - // and response’s internal response otherwise. - const actualResponse = response.internalResponse - ? response.internalResponse - : response + prev = now() + index = end - 1 + column += end - start + 1 + result.push(reference) + next = now() + next.offset++ - // 3. Let locationURL be actualResponse’s location URL given request’s current - // URL’s fragment. - let locationURL + if (handleReference) { + handleReference.call( + referenceContext, + reference, + {start: prev, end: next}, + value.slice(start - 1, end) + ) + } - try { - locationURL = responseLocationURL( - actualResponse, - requestCurrentURL(request).hash - ) + prev = next + } else { + // If we could not find a reference, queue the checked characters (as + // normal characters), and move the pointer to their end. + // This is possible because we can be certain neither newlines nor + // ampersands are included. + characters = value.slice(start - 1, end) + queue += characters + column += characters.length + index = end - 1 + } + } else { + // Handle anything other than an ampersand, including newlines and EOF. + if ( + character === 10 // Line feed + ) { + line++ + lines++ + column = 0 + } - // 4. If locationURL is null, then return response. - if (locationURL == null) { - return response + if (character === character) { + queue += fromCharCode(character) + column++ + } else { + flush() + } } - } catch (err) { - // 5. If locationURL is failure, then return a network error. - return Promise.resolve(makeNetworkError(err)) } - // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network - // error. - if (!urlIsHttpHttpsScheme(locationURL)) { - return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')) - } + // Return the reduced nodes. + return result.join('') - // 7. If request’s redirect count is 20, then return a network error. - if (request.redirectCount === 20) { - return Promise.resolve(makeNetworkError('redirect count exceeded')) + // Get current position. + function now() { + return { + line: line, + column: column, + offset: index + (pos.offset || 0) + } } - // 8. Increase request’s redirect count by 1. - request.redirectCount += 1 + // “Throw” a parse-error: a warning. + function parseError(code, offset) { + var position = now() - // 9. If request’s mode is "cors", locationURL includes credentials, and - // request’s origin is not same origin with locationURL’s origin, then return - // a network error. - if ( - request.mode === 'cors' && - (locationURL.username || locationURL.password) && - !sameOrigin(request, locationURL) - ) { - return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')) - } + position.column += offset + position.offset += offset - // 10. If request’s response tainting is "cors" and locationURL includes - // credentials, then return a network error. - if ( - request.responseTainting === 'cors' && - (locationURL.username || locationURL.password) - ) { - return Promise.resolve(makeNetworkError( - 'URL cannot contain credentials for request mode "cors"' - )) + handleWarning.call(warningContext, messages[code], position, code) } - // 11. If actualResponse’s status is not 303, request’s body is non-null, - // and request’s body’s source is null, then return a network error. - if ( - actualResponse.status !== 303 && - request.body != null && - request.body.source == null - ) { - return Promise.resolve(makeNetworkError()) - } + // Flush `queue` (normal text). + // Macro invoked before each entity and at the end of `value`. + // Does nothing when `queue` is empty. + function flush() { + if (queue) { + result.push(queue) - // 12. If one of the following is true - // - actualResponse’s status is 301 or 302 and request’s method is `POST` - // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` - if ( - ([301, 302].includes(actualResponse.status) && request.method === 'POST') || - (actualResponse.status === 303 && - !GET_OR_HEAD.includes(request.method)) - ) { - // then: - // 1. Set request’s method to `GET` and request’s body to null. - request.method = 'GET' - request.body = null + if (handleText) { + handleText.call(textContext, queue, {start: prev, end: now()}) + } - // 2. For each headerName of request-body-header name, delete headerName from - // request’s header list. - for (const headerName of requestBodyHeader) { - request.headersList.delete(headerName) + queue = '' } } +} - // 13. If request’s current URL’s origin is not same origin with locationURL’s - // origin, then for each headerName of CORS non-wildcard request-header name, - // delete headerName from request’s header list. - if (!sameOrigin(requestCurrentURL(request), locationURL)) { - // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name - request.headersList.delete('authorization') +// Check if `character` is outside the permissible unicode range. +function prohibited(code) { + return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff +} - // https://fetch.spec.whatwg.org/#authentication-entries - request.headersList.delete('proxy-authorization', true) +// Check if `character` is disallowed. +function disallowed(code) { + return ( + (code >= 0x0001 && code <= 0x0008) || + code === 0x000b || + (code >= 0x000d && code <= 0x001f) || + (code >= 0x007f && code <= 0x009f) || + (code >= 0xfdd0 && code <= 0xfdef) || + (code & 0xffff) === 0xffff || + (code & 0xffff) === 0xfffe + ) +} - // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. - request.headersList.delete('cookie') - request.headersList.delete('host') - } - // 14. If request’s body is non-null, then set request’s body to the first return - // value of safely extracting request’s body’s source. - if (request.body != null) { - assert(request.body.source != null) - request.body = safelyExtractBody(request.body.source)[0] - } +/***/ }), - // 15. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo +/***/ 33269: +/***/ ((module) => { - // 16. Set timingInfo’s redirect end time and post-redirect start time to the - // coarsened shared current time given fetchParams’s cross-origin isolated - // capability. - timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = - coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) +"use strict"; - // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s - // redirect start time to timingInfo’s start time. - if (timingInfo.redirectStartTime === 0) { - timingInfo.redirectStartTime = timingInfo.startTime - } - // 18. Append locationURL to request’s URL list. - request.urlList.push(locationURL) +var isWindows = process.platform === 'win32'; - // 19. Invoke set request’s referrer policy on redirect on request and - // actualResponse. - setRequestReferrerPolicyOnRedirect(request, actualResponse) +// Regex to split a windows path into into [dir, root, basename, name, ext] +var splitWindowsRe = + /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; - // 20. Return the result of running main fetch given fetchParams and true. - return mainFetch(fetchParams, true) +var win32 = {}; + +function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); } -// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch -async function httpNetworkOrCacheFetch ( - fetchParams, - isAuthenticationFetch = false, - isNewConnectionFetch = false -) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; +}; - // 2. Let httpFetchParams be null. - let httpFetchParams = null - // 3. Let httpRequest be null. - let httpRequest = null - // 4. Let response be null. - let response = null +// Split a filename into [dir, root, basename, name, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; +var posix = {}; - // 5. Let storedResponse be null. - // TODO: cache - // 6. Let httpCache be null. - const httpCache = null +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} - // 7. Let the revalidatingFlag be unset. - const revalidatingFlag = false - // 8. Run these steps, but abort when the ongoing fetch is terminated: +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3], + }; +}; - // 1. If request’s window is "no-window" and request’s redirect mode is - // "error", then set httpFetchParams to fetchParams and httpRequest to - // request. - if (request.window === 'no-window' && request.redirect === 'error') { - httpFetchParams = fetchParams - httpRequest = request - } else { - // Otherwise: - // 1. Set httpRequest to a clone of request. - httpRequest = makeRequest(request) +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; - // 2. Set httpFetchParams to a copy of fetchParams. - httpFetchParams = { ...fetchParams } +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; - // 3. Set httpFetchParams’s request to httpRequest. - httpFetchParams.request = httpRequest - } - // 3. Let includeCredentials be true if one of - const includeCredentials = - request.credentials === 'include' || - (request.credentials === 'same-origin' && - request.responseTainting === 'basic') +/***/ }), - // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s - // body is non-null; otherwise null. - const contentLength = httpRequest.body ? httpRequest.body.length : null +/***/ 57336: +/***/ ((module) => { - // 5. Let contentLengthHeaderValue be null. - let contentLengthHeaderValue = null +let p = process || {}, argv = p.argv || [], env = p.env || {} +let isColorSupported = + !(!!env.NO_COLOR || argv.includes("--no-color")) && + (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || ((p.stdout || {}).isTTY && env.TERM !== "dumb") || !!env.CI) - // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or - // `PUT`, then set contentLengthHeaderValue to `0`. - if ( - httpRequest.body == null && - ['POST', 'PUT'].includes(httpRequest.method) - ) { - contentLengthHeaderValue = '0' - } +let formatter = (open, close, replace = open) => + input => { + let string = "" + input, index = string.indexOf(close, open.length) + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close + } - // 7. If contentLength is non-null, then set contentLengthHeaderValue to - // contentLength, serialized and isomorphic encoded. - if (contentLength != null) { - contentLengthHeaderValue = isomorphicEncode(`${contentLength}`) - } +let replaceClose = (string, close, replace, index) => { + let result = "", cursor = 0 + do { + result += string.substring(cursor, index) + replace + cursor = index + close.length + index = string.indexOf(close, cursor) + } while (~index) + return result + string.substring(cursor) +} + +let createColors = (enabled = isColorSupported) => { + let f = enabled ? formatter : () => String + return { + isColorSupported: enabled, + reset: f("\x1b[0m", "\x1b[0m"), + bold: f("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m"), + dim: f("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m"), + italic: f("\x1b[3m", "\x1b[23m"), + underline: f("\x1b[4m", "\x1b[24m"), + inverse: f("\x1b[7m", "\x1b[27m"), + hidden: f("\x1b[8m", "\x1b[28m"), + strikethrough: f("\x1b[9m", "\x1b[29m"), + + black: f("\x1b[30m", "\x1b[39m"), + red: f("\x1b[31m", "\x1b[39m"), + green: f("\x1b[32m", "\x1b[39m"), + yellow: f("\x1b[33m", "\x1b[39m"), + blue: f("\x1b[34m", "\x1b[39m"), + magenta: f("\x1b[35m", "\x1b[39m"), + cyan: f("\x1b[36m", "\x1b[39m"), + white: f("\x1b[37m", "\x1b[39m"), + gray: f("\x1b[90m", "\x1b[39m"), + + bgBlack: f("\x1b[40m", "\x1b[49m"), + bgRed: f("\x1b[41m", "\x1b[49m"), + bgGreen: f("\x1b[42m", "\x1b[49m"), + bgYellow: f("\x1b[43m", "\x1b[49m"), + bgBlue: f("\x1b[44m", "\x1b[49m"), + bgMagenta: f("\x1b[45m", "\x1b[49m"), + bgCyan: f("\x1b[46m", "\x1b[49m"), + bgWhite: f("\x1b[47m", "\x1b[49m"), + + blackBright: f("\x1b[90m", "\x1b[39m"), + redBright: f("\x1b[91m", "\x1b[39m"), + greenBright: f("\x1b[92m", "\x1b[39m"), + yellowBright: f("\x1b[93m", "\x1b[39m"), + blueBright: f("\x1b[94m", "\x1b[39m"), + magentaBright: f("\x1b[95m", "\x1b[39m"), + cyanBright: f("\x1b[96m", "\x1b[39m"), + whiteBright: f("\x1b[97m", "\x1b[39m"), + + bgBlackBright: f("\x1b[100m", "\x1b[49m"), + bgRedBright: f("\x1b[101m", "\x1b[49m"), + bgGreenBright: f("\x1b[102m", "\x1b[49m"), + bgYellowBright: f("\x1b[103m", "\x1b[49m"), + bgBlueBright: f("\x1b[104m", "\x1b[49m"), + bgMagentaBright: f("\x1b[105m", "\x1b[49m"), + bgCyanBright: f("\x1b[106m", "\x1b[49m"), + bgWhiteBright: f("\x1b[107m", "\x1b[49m"), + } +} - // 8. If contentLengthHeaderValue is non-null, then append - // `Content-Length`/contentLengthHeaderValue to httpRequest’s header - // list. - if (contentLengthHeaderValue != null) { - httpRequest.headersList.append('content-length', contentLengthHeaderValue) - } +module.exports = createColors() +module.exports.createColors = createColors - // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, - // contentLengthHeaderValue) to httpRequest’s header list. - // 10. If contentLength is non-null and httpRequest’s keepalive is true, - // then: - if (contentLength != null && httpRequest.keepalive) { - // NOTE: keepalive is a noop outside of browser context. - } +/***/ }), - // 11. If httpRequest’s referrer is a URL, then append - // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, - // to httpRequest’s header list. - if (httpRequest.referrer instanceof URL) { - httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)) - } +/***/ 79719: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 12. Append a request `Origin` header for httpRequest. - appendRequestOriginHeader(httpRequest) +// Source copied and then modified from +// https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/tokenize/html-block.js +// +// MIT License https://github.com/remarkjs/remark/blob/master/license + +const {openCloseTag} = __nccwpck_require__(59982) + +module.exports = blockHtml + +const tab = '\t' +const space = ' ' +const lineFeed = '\n' +const lessThan = '<' + +const rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i +const rawCloseExpression = /<\/(script|pre|style)>/i +const commentOpenExpression = /^<!--/ +const commentCloseExpression = /-->/ +const instructionOpenExpression = /^<\?/ +const instructionCloseExpression = /\?>/ +const directiveOpenExpression = /^<![A-Za-z]/ +const directiveCloseExpression = />/ +const cdataOpenExpression = /^<!\[CDATA\[/ +const cdataCloseExpression = /\]\]>/ +const elementCloseExpression = /^$/ +const otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$') +const fragmentOpenExpression = /^<>/ + +function blockHtml(eat, value, silent) { + const blocks = '[a-z\\.]*(\\.){0,1}[a-z][a-z0-9\\.]*' + const elementOpenExpression = new RegExp( + '^</?(' + blocks + ')(?=(\\s|/?>|$))', + 'i' + ) - // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] - appendFetchMetadata(httpRequest) + const length = value.length + let index = 0 + let next + let line + let offset + let character + let count + let sequence + let subvalue + + const sequences = [ + [rawOpenExpression, rawCloseExpression, true], + [commentOpenExpression, commentCloseExpression, true], + [instructionOpenExpression, instructionCloseExpression, true], + [directiveOpenExpression, directiveCloseExpression, true], + [cdataOpenExpression, cdataCloseExpression, true], + [elementOpenExpression, elementCloseExpression, true], + [fragmentOpenExpression, elementCloseExpression, true], + [otherElementOpenExpression, elementCloseExpression, false] + ] - // 14. If httpRequest’s header list does not contain `User-Agent`, then - // user agents should append `User-Agent`/default `User-Agent` value to - // httpRequest’s header list. - if (!httpRequest.headersList.contains('user-agent')) { - httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node') - } + // Eat initial spacing. + while (index < length) { + character = value.charAt(index) - // 15. If httpRequest’s cache mode is "default" and httpRequest’s header - // list contains `If-Modified-Since`, `If-None-Match`, - // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set - // httpRequest’s cache mode to "no-store". - if ( - httpRequest.cache === 'default' && - (httpRequest.headersList.contains('if-modified-since') || - httpRequest.headersList.contains('if-none-match') || - httpRequest.headersList.contains('if-unmodified-since') || - httpRequest.headersList.contains('if-match') || - httpRequest.headersList.contains('if-range')) - ) { - httpRequest.cache = 'no-store' + if (character !== tab && character !== space) { + break + } + + index++ } - // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent - // no-cache cache-control header modification flag is unset, and - // httpRequest’s header list does not contain `Cache-Control`, then append - // `Cache-Control`/`max-age=0` to httpRequest’s header list. - if ( - httpRequest.cache === 'no-cache' && - !httpRequest.preventNoCacheCacheControlHeaderModification && - !httpRequest.headersList.contains('cache-control') - ) { - httpRequest.headersList.append('cache-control', 'max-age=0') + if (value.charAt(index) !== lessThan) { + return } - // 17. If httpRequest’s cache mode is "no-store" or "reload", then: - if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { - // 1. If httpRequest’s header list does not contain `Pragma`, then append - // `Pragma`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.contains('pragma')) { - httpRequest.headersList.append('pragma', 'no-cache') - } + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index, next) + offset = -1 + count = sequences.length - // 2. If httpRequest’s header list does not contain `Cache-Control`, - // then append `Cache-Control`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.contains('cache-control')) { - httpRequest.headersList.append('cache-control', 'no-cache') + while (++offset < count) { + if (sequences[offset][0].test(line)) { + sequence = sequences[offset] + break } } - // 18. If httpRequest’s header list contains `Range`, then append - // `Accept-Encoding`/`identity` to httpRequest’s header list. - if (httpRequest.headersList.contains('range')) { - httpRequest.headersList.append('accept-encoding', 'identity') + if (!sequence) { + return } - // 19. Modify httpRequest’s header list per HTTP. Do not append a given - // header if httpRequest’s header list contains that header’s name. - // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 - if (!httpRequest.headersList.contains('accept-encoding')) { - if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { - httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate') - } else { - httpRequest.headersList.append('accept-encoding', 'gzip, deflate') - } + if (silent) { + return sequence[2] } - httpRequest.headersList.delete('host') + index = next - // 20. If includeCredentials is true, then: - if (includeCredentials) { - // 1. If the user agent is not configured to block cookies for httpRequest - // (see section 7 of [COOKIES]), then: - // TODO: credentials - // 2. If httpRequest’s header list does not contain `Authorization`, then: - // TODO: credentials - } + if (!sequence[1].test(line)) { + while (index < length) { + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index + 1, next) - // 21. If there’s a proxy-authentication entry, use it as appropriate. - // TODO: proxy-authentication + if (sequence[1].test(line)) { + if (line) { + index = next + } - // 22. Set httpCache to the result of determining the HTTP cache - // partition, given httpRequest. - // TODO: cache + break + } - // 23. If httpCache is null, then set httpRequest’s cache mode to - // "no-store". - if (httpCache == null) { - httpRequest.cache = 'no-store' + index = next + } } - // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", - // then: - if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { - // TODO: cache - } + subvalue = value.slice(0, index) - // 9. If aborted, then return the appropriate network error for fetchParams. - // TODO + return eat(subvalue)({type: 'html', value: subvalue}) +} - // 10. If response is null, then: - if (response == null) { - // 1. If httpRequest’s cache mode is "only-if-cached", then return a - // network error. - if (httpRequest.mode === 'only-if-cached') { - return makeNetworkError('only if cached') - } - // 2. Let forwardResponse be the result of running HTTP-network fetch - // given httpFetchParams, includeCredentials, and isNewConnectionFetch. - const forwardResponse = await httpNetworkFetch( - httpFetchParams, - includeCredentials, - isNewConnectionFetch - ) +/***/ }), - // 3. If httpRequest’s method is unsafe and forwardResponse’s status is - // in the range 200 to 399, inclusive, invalidate appropriate stored - // responses in httpCache, as per the "Invalidation" chapter of HTTP - // Caching, and set storedResponse to null. [HTTP-CACHING] - if ( - !safeMethodsSet.has(httpRequest.method) && - forwardResponse.status >= 200 && - forwardResponse.status <= 399 - ) { - // TODO: cache - } +/***/ 66226: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, - // then: - if (revalidatingFlag && forwardResponse.status === 304) { - // TODO: cache - } +const {transformSync} = __nccwpck_require__(85414) +const declare = (__nccwpck_require__(25683).declare) - // 5. If response is null, then: - if (response == null) { - // 1. Set response to forwardResponse. - response = forwardResponse +const syntaxJsxPlugin = __nccwpck_require__(47358) +const proposalObjectRestSpreadPlugin = __nccwpck_require__(16186) - // 2. Store httpRequest and forwardResponse in httpCache, as per the - // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] - // TODO: cache - } - } +class BabelPluginExtractImportsAndExports { + constructor() { + const nodes = [] + this.state = {nodes} - // 11. Set response’s URL list to a clone of httpRequest’s URL list. - response.urlList = [...httpRequest.urlList] + this.plugin = declare(api => { + api.assertVersion(7) - // 12. If httpRequest’s header list contains `Range`, then set response’s - // range-requested flag. - if (httpRequest.headersList.contains('range')) { - response.rangeRequested = true + return { + visitor: { + ExportDefaultDeclaration(path) { + const {start} = path.node + nodes.push({type: 'export', start, default: true}) + }, + ExportNamedDeclaration(path) { + const {start} = path.node + nodes.push({type: 'export', start}) + }, + ExportAllDeclaration(path) { + const {start} = path.node + nodes.push({type: 'export', start}) + }, + ImportDeclaration(path) { + const {start} = path.node + + // Imports that are used in exports can end up as + // ImportDeclarations with no start/end metadata, + // these can be ignored + if (start === undefined) { + return + } + + nodes.push({type: 'import', start}) + } + } + } + }) } +} - // 13. Set response’s request-includes-credentials to includeCredentials. - response.requestIncludesCredentials = includeCredentials +const partitionString = (str, indices) => + indices.map((val, i) => { + return str.slice(val, indices[i + 1]) + }) - // 14. If response’s status is 401, httpRequest’s response tainting is not - // "cors", includeCredentials is true, and request’s window is an environment - // settings object, then: - // TODO +module.exports = (value, vfile) => { + const instance = new BabelPluginExtractImportsAndExports() - // 15. If response’s status is 407, then: - if (response.status === 407) { - // 1. If request’s window is "no-window", then return a network error. - if (request.window === 'no-window') { - return makeNetworkError() - } + transformSync(value, { + plugins: [syntaxJsxPlugin, proposalObjectRestSpreadPlugin, instance.plugin], + filename: vfile.path, + configFile: false, + babelrc: false + }) - // 2. ??? + const sortedNodes = instance.state.nodes.sort((a, b) => a.start - b.start) + const nodeStarts = sortedNodes.map(n => n.start) + const values = partitionString(value, nodeStarts) - // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams) - } + const allNodes = sortedNodes.map(({start: _, ...node}, i) => { + const value = values[i] + return {...node, value} + }) - // 4. Prompt the end user as appropriate in request’s window and store - // the result as a proxy-authentication entry. [HTTP-AUTH] - // TODO: Invoke some kind of callback? + // Group adjacent nodes of the same type so that they can be combined + // into a single node later, this also ensures that order is preserved + let currType = allNodes[0].type + const groupedNodes = allNodes.reduce( + (acc, curr) => { + // Default export nodes shouldn't be grouped with other exports + // because they're handled specially by MDX + if (curr.default) { + currType = 'default' + return [...acc, [curr]] + } - // 5. Set response to the result of running HTTP-network-or-cache fetch given - // fetchParams. - // TODO - return makeNetworkError('proxy authentication required') - } + if (curr.type === currType) { + const lastNodes = acc.pop() + return [...acc, [...lastNodes, curr]] + } - // 16. If all of the following are true - if ( - // response’s status is 421 - response.status === 421 && - // isNewConnectionFetch is false - !isNewConnectionFetch && - // request’s body is null, or request’s body is non-null and request’s body’s source is non-null - (request.body == null || request.body.source != null) - ) { - // then: + currType = curr.type + return [...acc, [curr]] + }, + [[]] + ) - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams) - } + // Combine adjacent nodes into a single node + return groupedNodes + .filter(a => a.length) + .reduce((acc, curr) => { + const node = curr.reduce((acc, curr) => ({ + ...acc, + value: acc.value + curr.value + })) - // 2. Set response to the result of running HTTP-network-or-cache - // fetch given fetchParams, isAuthenticationFetch, and true. + return [...acc, node] + }, []) +} - // TODO (spec): The spec doesn't specify this but we need to cancel - // the active response before we can start a new one. - // https://github.com/whatwg/fetch/issues/1293 - fetchParams.controller.connection.destroy() - response = await httpNetworkOrCacheFetch( - fetchParams, - isAuthenticationFetch, - true - ) - } +/***/ }), - // 17. If isAuthenticationFetch is true, then create an authentication entry - if (isAuthenticationFetch) { - // TODO - } +/***/ 47926: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 18. Return response. - return response -} +const isAlphabetical = __nccwpck_require__(59201) +const {isImportOrExport, EMPTY_NEWLINE} = __nccwpck_require__(73654) +const extractImportsAndExports = __nccwpck_require__(66226) +const block = __nccwpck_require__(79719) +const {tag} = __nccwpck_require__(59982) -// https://fetch.spec.whatwg.org/#http-network-fetch -async function httpNetworkFetch ( - fetchParams, - includeCredentials = false, - forceNewConnection = false -) { - assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed) +const LESS_THAN = '<' +const GREATER_THAN = '>' +const SLASH = '/' +const EXCLAMATION = '!' - fetchParams.controller.connection = { - abort: null, - destroyed: false, - destroy (err) { - if (!this.destroyed) { - this.destroyed = true - this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) - } - } - } +module.exports = mdx - // 1. Let request be fetchParams’s request. - const request = fetchParams.request +mdx.default = mdx - // 2. Let response be null. - let response = null +tokenizeEsSyntax.locator = tokenizeEsSyntaxLocator - // 3. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo +function mdx(_options) { + const parser = this.Parser + const compiler = this.Compiler - // 4. Let httpCache be the result of determining the HTTP cache partition, - // given request. - // TODO: cache - const httpCache = null + if (parser && parser.prototype && parser.prototype.blockTokenizers) { + attachParser(parser) + } - // 5. If httpCache is null, then set request’s cache mode to "no-store". - if (httpCache == null) { - request.cache = 'no-store' + if (compiler && compiler.prototype && compiler.prototype.visitors) { + attachCompiler(compiler) } +} - // 6. Let networkPartitionKey be the result of determining the network - // partition key given request. - // TODO +function attachParser(parser) { + const blocks = parser.prototype.blockTokenizers + const inlines = parser.prototype.inlineTokenizers + const methods = parser.prototype.blockMethods - // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise - // "no". - const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars + blocks.esSyntax = tokenizeEsSyntax + blocks.html = wrap(block) + inlines.html = wrap(inlines.html, inlineJsx) - // 8. Switch on request’s mode: - if (request.mode === 'websocket') { - // Let connection be the result of obtaining a WebSocket connection, - // given request’s current URL. - // TODO - } else { - // Let connection be the result of obtaining a connection, given - // networkPartitionKey, request’s current URL’s origin, - // includeCredentials, and forceNewConnection. - // TODO - } + tokenizeEsSyntax.notInBlock = true - // 9. Run these steps, but abort when the ongoing fetch is terminated: + methods.splice(methods.indexOf('paragraph'), 0, 'esSyntax') - // 1. If connection is failure, then return a network error. + function wrap(original, customTokenizer) { + const tokenizer = customTokenizer || tokenizeJsx + tokenizer.locator = original.locator - // 2. Set timingInfo’s final connection timing info to the result of - // calling clamp and coarsen connection timing info with connection’s - // timing info, timingInfo’s post-redirect start time, and fetchParams’s - // cross-origin isolated capability. + return tokenizer - // 3. If connection is not an HTTP/2 connection, request’s body is non-null, - // and request’s body’s source is null, then append (`Transfer-Encoding`, - // `chunked`) to request’s header list. + function tokenizeJsx() { + const node = original.apply(this, arguments) - // 4. Set timingInfo’s final network-request start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated - // capability. + if (node) { + node.type = 'jsx' + } - // 5. Set response to the result of making an HTTP request over connection - // using request with the following caveats: + return node + } + } - // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] - // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + function inlineJsx(eat, value) { + if (value.charAt(0) !== LESS_THAN) { + return + } - // - If request’s body is non-null, and request’s body’s source is null, - // then the user agent may have a buffer of up to 64 kibibytes and store - // a part of request’s body in that buffer. If the user agent reads from - // request’s body beyond that buffer’s size and the user agent needs to - // resend request, then instead return a network error. + const nextChar = value.charAt(1) + if ( + nextChar !== GREATER_THAN && + nextChar !== SLASH && + nextChar !== EXCLAMATION && + !isAlphabetical(nextChar) + ) { + return + } - // - Set timingInfo’s final network-response start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated capability, - // immediately after the user agent’s HTTP parser receives the first byte - // of the response (e.g., frame header bytes for HTTP/2 or response status - // line for HTTP/1.x). + const subvalueMatches = value.match(tag) + if (!subvalueMatches) { + return + } - // - Wait until all the headers are transmitted. + const subvalue = subvalueMatches[0] + return eat(subvalue)({type: 'jsx', value: subvalue}) + } +} - // - Any responses whose status is in the range 100 to 199, inclusive, - // and is not 101, are to be ignored, except for the purposes of setting - // timingInfo’s final network-response start time above. +function attachCompiler(compiler) { + const proto = compiler.prototype - // - If request’s header list contains `Transfer-Encoding`/`chunked` and - // response is transferred via HTTP/1.0 or older, then return a network - // error. + proto.visitors = Object.assign({}, proto.visitors, { + import: stringifyEsSyntax, + export: stringifyEsSyntax, + jsx: stringifyEsSyntax + }) +} - // - If the HTTP request results in a TLS client certificate dialog, then: +function stringifyEsSyntax(node) { + return node.value.trim() +} - // 1. If request’s window is an environment settings object, make the - // dialog available in request’s window. +function tokenizeEsSyntax(eat, value) { + const index = value.indexOf(EMPTY_NEWLINE) + const subvalue = index !== -1 ? value.slice(0, index) : value - // 2. Otherwise, return a network error. + if (isImportOrExport(subvalue)) { + const nodes = extractImportsAndExports(subvalue, this.file) + nodes.map(node => eat(node.value)(node)) + } +} - // To transmit request’s body body, run these steps: - let requestBody = null - // 1. If body is null and fetchParams’s process request end-of-body is - // non-null, then queue a fetch task given fetchParams’s process request - // end-of-body and fetchParams’s task destination. - if (request.body == null && fetchParams.processRequestEndOfBody) { - queueMicrotask(() => fetchParams.processRequestEndOfBody()) - } else if (request.body != null) { - // 2. Otherwise, if body is non-null: +function tokenizeEsSyntaxLocator(value, _fromIndex) { + return isImportOrExport(value) ? -1 : 1 +} - // 1. Let processBodyChunk given bytes be these steps: - const processBodyChunk = async function * (bytes) { - // 1. If the ongoing fetch is terminated, then abort these steps. - if (isCancelled(fetchParams)) { - return - } - // 2. Run this step in parallel: transmit bytes. - yield bytes +/***/ }), - // 3. If fetchParams’s process request body is non-null, then run - // fetchParams’s process request body given bytes’s length. - fetchParams.processRequestBodyChunkLength?.(bytes.byteLength) - } +/***/ 59982: +/***/ ((__unused_webpack_module, exports) => { - // 2. Let processEndOfBody be these steps: - const processEndOfBody = () => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return - } +// Source copied and then modified from +// https://github.com/remarkjs/remark/blob/master/packages/remark-parse/lib/util/html.js +// +// MIT License https://github.com/remarkjs/remark/blob/master/license + +// https://github.com/DmitrySoshnikov/babel-plugin-transform-modern-regexp#dotall-s-flag +// Firefox and other browsers don't support the dotAll ("s") flag, but it can be polyfilled via this: +const dotAllPolyfill = '[\0-\uFFFF]' + +const attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' +const unquoted = '[^"\'=<>`\\u0000-\\u0020]+' +const singleQuoted = "'[^']*'" +const doubleQuoted = '"[^"]*"' +const jsProps = '{.*}'.replace('.', dotAllPolyfill) +const attributeValue = + '(?:' + + unquoted + + '|' + + singleQuoted + + '|' + + doubleQuoted + + '|' + + jsProps + + ')' +const attribute = + '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' +const openTag = '<[A-Za-z]*[A-Za-z0-9\\.\\-]*' + attribute + '*\\s*\\/?>' +const closeTag = '<\\/[A-Za-z][A-Za-z0-9\\.\\-]*\\s*>' +const comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->' +const processing = '<[?].*?[?]>'.replace('.', dotAllPolyfill) +const declaration = '<![A-Za-z]+\\s+[^>]*>' +const cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' + +exports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')') + +exports.tag = new RegExp( + '^(?:' + + openTag + + '|' + + closeTag + + '|' + + comment + + '|' + + processing + + '|' + + declaration + + '|' + + cdata + + ')' +) - // 2. If fetchParams’s process request end-of-body is non-null, - // then run fetchParams’s process request end-of-body. - if (fetchParams.processRequestEndOfBody) { - fetchParams.processRequestEndOfBody() - } - } - // 3. Let processBodyError given e be these steps: - const processBodyError = (e) => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return - } +/***/ }), - // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. - if (e.name === 'AbortError') { - fetchParams.controller.abort() - } else { - fetchParams.controller.terminate(e) - } - } +/***/ 24982: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, - // processBodyError, and fetchParams’s task destination. - requestBody = (async function * () { - try { - for await (const bytes of request.body.stream) { - yield * processBodyChunk(bytes) - } - processEndOfBody() - } catch (err) { - processBodyError(err) - } - })() - } +"use strict"; - try { - // socket is only provided for websockets - const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }) - if (socket) { - response = makeResponse({ status, statusText, headersList, socket }) - } else { - const iterator = body[Symbol.asyncIterator]() - fetchParams.controller.next = () => iterator.next() +var unherit = __nccwpck_require__(25351) +var xtend = __nccwpck_require__(80869) +var Parser = __nccwpck_require__(39651) - response = makeResponse({ status, statusText, headersList }) - } - } catch (err) { - // 10. If aborted, then: - if (err.name === 'AbortError') { - // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. - fetchParams.controller.connection.destroy() +module.exports = parse +parse.Parser = Parser - // 2. Return the appropriate network error for fetchParams. - return makeAppropriateNetworkError(fetchParams, err) - } +function parse(options) { + var settings = this.data('settings') + var Local = unherit(Parser) - return makeNetworkError(err) - } + Local.prototype.options = xtend(Local.prototype.options, settings, options) - // 11. Let pullAlgorithm be an action that resumes the ongoing fetch - // if it is suspended. - const pullAlgorithm = () => { - fetchParams.controller.resume() - } + this.Parser = Local +} - // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s - // controller with reason, given reason. - const cancelAlgorithm = (reason) => { - fetchParams.controller.abort(reason) - } - // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by - // the user agent. - // TODO +/***/ }), - // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object - // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. - // TODO +/***/ 42029: +/***/ ((module) => { - // 15. Let stream be a new ReadableStream. - // 16. Set up stream with pullAlgorithm set to pullAlgorithm, - // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to - // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. - if (!ReadableStream) { - ReadableStream = (__nccwpck_require__(3774).ReadableStream) - } +"use strict"; - const stream = new ReadableStream( - { - async start (controller) { - fetchParams.controller.controller = controller - }, - async pull (controller) { - await pullAlgorithm(controller) - }, - async cancel (reason) { - await cancelAlgorithm(reason) - } - }, - { - highWaterMark: 0, - size () { - return 1 - } - } - ) - - // 17. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. Set response’s body to a new body whose stream is stream. - response.body = { stream } - // 2. If response is not a network error and request’s cache mode is - // not "no-store", then update response in httpCache for request. - // TODO +module.exports = [ + 'address', + 'article', + 'aside', + 'base', + 'basefont', + 'blockquote', + 'body', + 'caption', + 'center', + 'col', + 'colgroup', + 'dd', + 'details', + 'dialog', + 'dir', + 'div', + 'dl', + 'dt', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'frame', + 'frameset', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hgroup', + 'hr', + 'html', + 'iframe', + 'legend', + 'li', + 'link', + 'main', + 'menu', + 'menuitem', + 'meta', + 'nav', + 'noframes', + 'ol', + 'optgroup', + 'option', + 'p', + 'param', + 'pre', + 'section', + 'source', + 'title', + 'summary', + 'table', + 'tbody', + 'td', + 'tfoot', + 'th', + 'thead', + 'title', + 'tr', + 'track', + 'ul' +] - // 3. If includeCredentials is true and the user agent is not configured - // to block cookies for request (see section 7 of [COOKIES]), then run the - // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on - // the value of each header whose name is a byte-case-insensitive match for - // `Set-Cookie` in response’s header list, if any, and request’s current URL. - // TODO - // 18. If aborted, then: - // TODO +/***/ }), - // 19. Run these steps in parallel: +/***/ 18934: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. Run these steps, but abort when fetchParams is canceled: - fetchParams.controller.on('terminated', onAborted) - fetchParams.controller.resume = async () => { - // 1. While true - while (true) { - // 1-3. See onData... +"use strict"; - // 4. Set bytes to the result of handling content codings given - // codings and bytes. - let bytes - let isFailure - try { - const { done, value } = await fetchParams.controller.next() - if (isAborted(fetchParams)) { - break - } +var xtend = __nccwpck_require__(80869) +var entities = __nccwpck_require__(75165) - bytes = done ? undefined : value - } catch (err) { - if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { - // zlib doesn't like empty streams. - bytes = undefined - } else { - bytes = err +module.exports = factory - // err may be propagated from the result of calling readablestream.cancel, - // which might not be an error. https://github.com/nodejs/undici/issues/2009 - isFailure = true - } - } +// Factory to create an entity decoder. +function factory(ctx) { + decoder.raw = decodeRaw - if (bytes === undefined) { - // 2. Otherwise, if the bytes transmission for response’s message - // body is done normally and stream is readable, then close - // stream, finalize response for fetchParams and response, and - // abort these in-parallel steps. - readableStreamClose(fetchParams.controller.controller) + return decoder - finalizeResponse(fetchParams, response) + // Normalize `position` to add an `indent`. + function normalize(position) { + var offsets = ctx.offset + var line = position.line + var result = [] - return + while (++line) { + if (!(line in offsets)) { + break } - // 5. Increase timingInfo’s decoded body size by bytes’s length. - timingInfo.decodedBodySize += bytes?.byteLength ?? 0 + result.push((offsets[line] || 0) + 1) + } - // 6. If bytes is failure, then terminate fetchParams’s controller. - if (isFailure) { - fetchParams.controller.terminate(bytes) - return - } + return {start: position, indent: result} + } - // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes - // into stream. - fetchParams.controller.controller.enqueue(new Uint8Array(bytes)) + // Decode `value` (at `position`) into text-nodes. + function decoder(value, position, handler) { + entities(value, { + position: normalize(position), + warning: handleWarning, + text: handler, + reference: handler, + textContext: ctx, + referenceContext: ctx + }) + } - // 8. If stream is errored, then terminate the ongoing fetch. - if (isErrored(stream)) { - fetchParams.controller.terminate() - return - } + // Decode `value` (at `position`) into a string. + function decodeRaw(value, position, options) { + return entities( + value, + xtend(options, {position: normalize(position), warning: handleWarning}) + ) + } - // 9. If stream doesn’t need more data ask the user agent to suspend - // the ongoing fetch. - if (!fetchParams.controller.controller.desiredSize) { - return - } + // Handle a warning. + // See <https://github.com/wooorm/parse-entities> for the warnings. + function handleWarning(reason, position, code) { + if (code !== 3) { + ctx.file.message(reason, position) } } +} - // 2. If aborted, then: - function onAborted (reason) { - // 2. If fetchParams is aborted, then: - if (isAborted(fetchParams)) { - // 1. Set response’s aborted flag. - response.aborted = true - // 2. If stream is readable, then error stream with the result of - // deserialize a serialized abort reason given fetchParams’s - // controller’s serialized abort reason and an - // implementation-defined realm. - if (isReadable(stream)) { - fetchParams.controller.controller.error( - fetchParams.controller.serializedAbortReason - ) - } - } else { - // 3. Otherwise, if stream is readable, error stream with a TypeError. - if (isReadable(stream)) { - fetchParams.controller.controller.error(new TypeError('terminated', { - cause: isErrorLike(reason) ? reason : undefined - })) - } +/***/ }), + +/***/ 96206: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = { + position: true, + gfm: true, + commonmark: false, + pedantic: false, + blocks: __nccwpck_require__(42029) +} + + +/***/ }), + +/***/ 91702: +/***/ ((module) => { + +"use strict"; + + +module.exports = locate + +function locate(value, fromIndex) { + var index = value.indexOf('\n', fromIndex) + + while (index > fromIndex) { + if (value.charAt(index - 1) !== ' ') { + break } - // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. - // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. - fetchParams.controller.connection.destroy() + index-- } - // 20. Return response. - return response + return index +} - async function dispatch ({ body }) { - const url = requestCurrentURL(request) - /** @type {import('../..').Agent} */ - const agent = fetchParams.controller.dispatcher - return new Promise((resolve, reject) => agent.dispatch( - { - path: url.pathname + url.search, - origin: url.origin, - method: request.method, - body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body, - headers: request.headersList.entries, - maxRedirections: 0, - upgrade: request.mode === 'websocket' ? 'websocket' : undefined - }, - { - body: null, - abort: null, +/***/ }), - onConnect (abort) { - // TODO (fix): Do we need connection here? - const { connection } = fetchParams.controller +/***/ 99740: +/***/ ((module) => { - if (connection.destroyed) { - abort(new DOMException('The operation was aborted.', 'AbortError')) - } else { - fetchParams.controller.on('terminated', abort) - this.abort = connection.abort = abort - } - }, +"use strict"; - onHeaders (status, headersList, resume, statusText) { - if (status < 200) { - return - } - let codings = [] - let location = '' +module.exports = locate - const headers = new Headers() +function locate(value, fromIndex) { + return value.indexOf('`', fromIndex) +} - // For H2, the headers are a plain JS object - // We distinguish between them and iterate accordingly - if (Array.isArray(headersList)) { - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString('latin1') - const val = headersList[n + 1].toString('latin1') - if (key.toLowerCase() === 'content-encoding') { - // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 - // "All content-coding values are case-insensitive..." - codings = val.toLowerCase().split(',').map((x) => x.trim()) - } else if (key.toLowerCase() === 'location') { - location = val - } - headers[kHeadersList].append(key, val) - } - } else { - const keys = Object.keys(headersList) - for (const key of keys) { - const val = headersList[key] - if (key.toLowerCase() === 'content-encoding') { - // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 - // "All content-coding values are case-insensitive..." - codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse() - } else if (key.toLowerCase() === 'location') { - location = val - } +/***/ }), - headers[kHeadersList].append(key, val) - } - } +/***/ 49250: +/***/ ((module) => { - this.body = new Readable({ read: resume }) +"use strict"; - const decoders = [] - const willFollow = request.redirect === 'follow' && - location && - redirectStatusSet.has(status) +module.exports = locate - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding - if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { - for (const coding of codings) { - // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 - if (coding === 'x-gzip' || coding === 'gzip') { - decoders.push(zlib.createGunzip({ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH - })) - } else if (coding === 'deflate') { - decoders.push(zlib.createInflate()) - } else if (coding === 'br') { - decoders.push(zlib.createBrotliDecompress()) - } else { - decoders.length = 0 - break - } - } - } +function locate(value, fromIndex) { + return value.indexOf('~~', fromIndex) +} - resolve({ - status, - statusText, - headersList: headers[kHeadersList], - body: decoders.length - ? pipeline(this.body, ...decoders, () => { }) - : this.body.on('error', () => {}) - }) - return true - }, +/***/ }), - onData (chunk) { - if (fetchParams.controller.dump) { - return - } +/***/ 22637: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. If one or more bytes have been transmitted from response’s - // message body, then: +"use strict"; - // 1. Let bytes be the transmitted bytes. - const bytes = chunk - // 2. Let codings be the result of extracting header list values - // given `Content-Encoding` and response’s header list. - // See pullAlgorithm. +var decimal = __nccwpck_require__(96734) +var alphabetical = __nccwpck_require__(59201) - // 3. Increase timingInfo’s encoded body size by bytes’s length. - timingInfo.encodedBodySize += bytes.byteLength +var plusSign = 43 // '+' +var dash = 45 // '-' +var dot = 46 // '.' +var underscore = 95 // '_' - // 4. See pullAlgorithm... +module.exports = locate - return this.body.push(bytes) - }, +// See: <https://github.github.com/gfm/#extended-email-autolink> +function locate(value, fromIndex) { + var self = this + var at + var position - onComplete () { - if (this.abort) { - fetchParams.controller.off('terminated', this.abort) - } + if (!this.options.gfm) { + return -1 + } - fetchParams.controller.ended = true + at = value.indexOf('@', fromIndex) - this.body.push(null) - }, + if (at === -1) { + return -1 + } - onError (error) { - if (this.abort) { - fetchParams.controller.off('terminated', this.abort) - } + position = at - this.body?.destroy(error) + if (position === fromIndex || !isGfmAtext(value.charCodeAt(position - 1))) { + return locate.call(self, value, at + 1) + } - fetchParams.controller.terminate(error) + while (position > fromIndex && isGfmAtext(value.charCodeAt(position - 1))) { + position-- + } - reject(error) - }, + return position +} - onUpgrade (status, headersList, socket) { - if (status !== 101) { - return - } +function isGfmAtext(code) { + return ( + decimal(code) || + alphabetical(code) || + code === plusSign || + code === dash || + code === dot || + code === underscore + ) +} - const headers = new Headers() - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString('latin1') - const val = headersList[n + 1].toString('latin1') +/***/ }), - headers[kHeadersList].append(key, val) - } +/***/ 85227: +/***/ ((module) => { - resolve({ - status, - statusText: STATUS_CODES[status], - headersList: headers[kHeadersList], - socket - }) +"use strict"; - return true - } - } - )) + +module.exports = locate + +function locate(value, fromIndex) { + var asterisk = value.indexOf('*', fromIndex) + var underscore = value.indexOf('_', fromIndex) + + if (underscore === -1) { + return asterisk } -} -module.exports = { - fetch, - Fetch, - fetching, - finalizeAndReportTiming + if (asterisk === -1) { + return underscore + } + + return underscore < asterisk ? underscore : asterisk } /***/ }), -/***/ 5194: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 84330: +/***/ ((module) => { "use strict"; -/* globals AbortController */ +module.exports = locate -const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(8923) -const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(6349) -const { FinalizationRegistry } = __nccwpck_require__(3194)() -const util = __nccwpck_require__(3440) -const { - isValidHTTPToken, - sameOrigin, - normalizeMethod, - makePolicyContainer, - normalizeMethodRecord -} = __nccwpck_require__(5523) -const { - forbiddenMethodsSet, - corsSafeListedMethodsSet, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - requestDuplex -} = __nccwpck_require__(7326) -const { kEnumerableProperty } = util -const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(9710) -const { webidl } = __nccwpck_require__(4222) -const { getGlobalOrigin } = __nccwpck_require__(5628) -const { URLSerializer } = __nccwpck_require__(4322) -const { kHeadersList, kConstruct } = __nccwpck_require__(6443) -const assert = __nccwpck_require__(2613) -const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(4434) +function locate(value, fromIndex) { + return value.indexOf('\\', fromIndex) +} -let TransformStream = globalThis.TransformStream -const kAbortController = Symbol('abortController') +/***/ }), -const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { - signal.removeEventListener('abort', abort) -}) +/***/ 8241: +/***/ ((module) => { -// https://fetch.spec.whatwg.org/#request-class -class Request { - // https://fetch.spec.whatwg.org/#dom-request - constructor (input, init = {}) { - if (input === kConstruct) { - return - } +"use strict"; - webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }) - input = webidl.converters.RequestInfo(input) - init = webidl.converters.RequestInit(init) +module.exports = locate - // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object - this[kRealm] = { - settingsObject: { - baseUrl: getGlobalOrigin(), - get origin () { - return this.baseUrl?.origin - }, - policyContainer: makePolicyContainer() - } - } +function locate(value, fromIndex) { + var link = value.indexOf('[', fromIndex) + var image = value.indexOf('![', fromIndex) - // 1. Let request be null. - let request = null + if (image === -1) { + return link + } - // 2. Let fallbackMode be null. - let fallbackMode = null + // Link can never be `-1` if an image is found, so we don’t need to check + // for that :) + return link < image ? link : image +} - // 3. Let baseURL be this’s relevant settings object’s API base URL. - const baseUrl = this[kRealm].settingsObject.baseUrl - // 4. Let signal be null. - let signal = null +/***/ }), - // 5. If input is a string, then: - if (typeof input === 'string') { - // 1. Let parsedURL be the result of parsing input with baseURL. - // 2. If parsedURL is failure, then throw a TypeError. - let parsedURL - try { - parsedURL = new URL(input, baseUrl) - } catch (err) { - throw new TypeError('Failed to parse URL from ' + input, { cause: err }) - } +/***/ 21322: +/***/ ((module) => { - // 3. If parsedURL includes credentials, then throw a TypeError. - if (parsedURL.username || parsedURL.password) { - throw new TypeError( - 'Request cannot be constructed from a URL that includes credentials: ' + - input - ) - } +"use strict"; - // 4. Set request to a new request whose URL is parsedURL. - request = makeRequest({ urlList: [parsedURL] }) - // 5. Set fallbackMode to "cors". - fallbackMode = 'cors' - } else { - // 6. Otherwise: +module.exports = locate - // 7. Assert: input is a Request object. - assert(input instanceof Request) +function locate(value, fromIndex) { + var asterisk = value.indexOf('**', fromIndex) + var underscore = value.indexOf('__', fromIndex) - // 8. Set request to input’s request. - request = input[kState] + if (underscore === -1) { + return asterisk + } - // 9. Set signal to input’s signal. - signal = input[kSignal] - } + if (asterisk === -1) { + return underscore + } - // 7. Let origin be this’s relevant settings object’s origin. - const origin = this[kRealm].settingsObject.origin + return underscore < asterisk ? underscore : asterisk +} - // 8. Let window be "client". - let window = 'client' - // 9. If request’s window is an environment settings object and its origin - // is same origin with origin, then set window to request’s window. - if ( - request.window?.constructor?.name === 'EnvironmentSettingsObject' && - sameOrigin(request.window, origin) - ) { - window = request.window - } +/***/ }), - // 10. If init["window"] exists and is non-null, then throw a TypeError. - if (init.window != null) { - throw new TypeError(`'window' option '${window}' must be null`) - } +/***/ 4225: +/***/ ((module) => { - // 11. If init["window"] exists, then set window to "no-window". - if ('window' in init) { - window = 'no-window' - } +"use strict"; - // 12. Set request to a new request with the following properties: - request = makeRequest({ - // URL request’s URL. - // undici implementation note: this is set as the first item in request's urlList in makeRequest - // method request’s method. - method: request.method, - // header list A copy of request’s header list. - // undici implementation note: headersList is cloned in makeRequest - headersList: request.headersList, - // unsafe-request flag Set. - unsafeRequest: request.unsafeRequest, - // client This’s relevant settings object. - client: this[kRealm].settingsObject, - // window window. - window, - // priority request’s priority. - priority: request.priority, - // origin request’s origin. The propagation of the origin is only significant for navigation requests - // being handled by a service worker. In this scenario a request can have an origin that is different - // from the current client. - origin: request.origin, - // referrer request’s referrer. - referrer: request.referrer, - // referrer policy request’s referrer policy. - referrerPolicy: request.referrerPolicy, - // mode request’s mode. - mode: request.mode, - // credentials mode request’s credentials mode. - credentials: request.credentials, - // cache mode request’s cache mode. - cache: request.cache, - // redirect mode request’s redirect mode. - redirect: request.redirect, - // integrity metadata request’s integrity metadata. - integrity: request.integrity, - // keepalive request’s keepalive. - keepalive: request.keepalive, - // reload-navigation flag request’s reload-navigation flag. - reloadNavigation: request.reloadNavigation, - // history-navigation flag request’s history-navigation flag. - historyNavigation: request.historyNavigation, - // URL list A clone of request’s URL list. - urlList: [...request.urlList] - }) - const initHasKey = Object.keys(init).length !== 0 +module.exports = locate - // 13. If init is not empty, then: - if (initHasKey) { - // 1. If request’s mode is "navigate", then set it to "same-origin". - if (request.mode === 'navigate') { - request.mode = 'same-origin' - } +function locate(value, fromIndex) { + return value.indexOf('<', fromIndex) +} - // 2. Unset request’s reload-navigation flag. - request.reloadNavigation = false - // 3. Unset request’s history-navigation flag. - request.historyNavigation = false +/***/ }), - // 4. Set request’s origin to "client". - request.origin = 'client' +/***/ 82644: +/***/ ((module) => { - // 5. Set request’s referrer to "client" - request.referrer = 'client' +"use strict"; - // 6. Set request’s referrer policy to the empty string. - request.referrerPolicy = '' - // 7. Set request’s URL to request’s current URL. - request.url = request.urlList[request.urlList.length - 1] +module.exports = locate - // 8. Set request’s URL list to « request’s URL ». - request.urlList = [request.url] - } +var values = ['www.', 'http://', 'https://'] - // 14. If init["referrer"] exists, then: - if (init.referrer !== undefined) { - // 1. Let referrer be init["referrer"]. - const referrer = init.referrer +function locate(value, fromIndex) { + var min = -1 + var index + var length + var position - // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". - if (referrer === '') { - request.referrer = 'no-referrer' - } else { - // 1. Let parsedReferrer be the result of parsing referrer with - // baseURL. - // 2. If parsedReferrer is failure, then throw a TypeError. - let parsedReferrer - try { - parsedReferrer = new URL(referrer, baseUrl) - } catch (err) { - throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) - } + if (!this.options.gfm) { + return min + } - // 3. If one of the following is true - // - parsedReferrer’s scheme is "about" and path is the string "client" - // - parsedReferrer’s origin is not same origin with origin - // then set request’s referrer to "client". - if ( - (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || - (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) - ) { - request.referrer = 'client' - } else { - // 4. Otherwise, set request’s referrer to parsedReferrer. - request.referrer = parsedReferrer - } - } - } + length = values.length + index = -1 - // 15. If init["referrerPolicy"] exists, then set request’s referrer policy - // to it. - if (init.referrerPolicy !== undefined) { - request.referrerPolicy = init.referrerPolicy - } + while (++index < length) { + position = value.indexOf(values[index], fromIndex) - // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. - let mode - if (init.mode !== undefined) { - mode = init.mode - } else { - mode = fallbackMode + if (position !== -1 && (min === -1 || position < min)) { + min = position } + } - // 17. If mode is "navigate", then throw a TypeError. - if (mode === 'navigate') { - throw webidl.errors.exception({ - header: 'Request constructor', - message: 'invalid request mode navigate.' - }) - } + return min +} - // 18. If mode is non-null, set request’s mode to mode. - if (mode != null) { - request.mode = mode - } - // 19. If init["credentials"] exists, then set request’s credentials mode - // to it. - if (init.credentials !== undefined) { - request.credentials = init.credentials - } +/***/ }), - // 18. If init["cache"] exists, then set request’s cache mode to it. - if (init.cache !== undefined) { - request.cache = init.cache - } +/***/ 3385: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 21. If request’s cache mode is "only-if-cached" and request’s mode is - // not "same-origin", then throw a TypeError. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - throw new TypeError( - "'only-if-cached' can be set only with 'same-origin' mode" - ) - } +"use strict"; - // 22. If init["redirect"] exists, then set request’s redirect mode to it. - if (init.redirect !== undefined) { - request.redirect = init.redirect - } - // 23. If init["integrity"] exists, then set request’s integrity metadata to it. - if (init.integrity != null) { - request.integrity = String(init.integrity) - } +var xtend = __nccwpck_require__(80869) +var removePosition = __nccwpck_require__(10617) - // 24. If init["keepalive"] exists, then set request’s keepalive to it. - if (init.keepalive !== undefined) { - request.keepalive = Boolean(init.keepalive) - } +module.exports = parse - // 25. If init["method"] exists, then: - if (init.method !== undefined) { - // 1. Let method be init["method"]. - let method = init.method +var lineFeed = '\n' +var lineBreaksExpression = /\r\n|\r/g - // 2. If method is not a method or method is a forbidden method, then - // throw a TypeError. - if (!isValidHTTPToken(method)) { - throw new TypeError(`'${method}' is not a valid HTTP method.`) - } +// Parse the bound file. +function parse() { + var self = this + var value = String(self.file) + var start = {line: 1, column: 1, offset: 0} + var content = xtend(start) + var node - if (forbiddenMethodsSet.has(method.toUpperCase())) { - throw new TypeError(`'${method}' HTTP method is unsupported.`) - } + // Clean non-unix newlines: `\r\n` and `\r` are all changed to `\n`. + // This should not affect positional information. + value = value.replace(lineBreaksExpression, lineFeed) - // 3. Normalize method. - method = normalizeMethodRecord[method] ?? normalizeMethod(method) + // BOM. + if (value.charCodeAt(0) === 0xfeff) { + value = value.slice(1) - // 4. Set request’s method to method. - request.method = method - } + content.column++ + content.offset++ + } - // 26. If init["signal"] exists, then set signal to it. - if (init.signal !== undefined) { - signal = init.signal - } + node = { + type: 'root', + children: self.tokenizeBlock(value, content), + position: {start: start, end: self.eof || xtend(start)} + } - // 27. Set this’s request to request. - this[kState] = request + if (!self.options.position) { + removePosition(node, true) + } - // 28. Set this’s signal to a new AbortSignal object with this’s relevant - // Realm. - // TODO: could this be simplified with AbortSignal.any - // (https://dom.spec.whatwg.org/#dom-abortsignal-any) - const ac = new AbortController() - this[kSignal] = ac.signal - this[kSignal][kRealm] = this[kRealm] + return node +} - // 29. If signal is not null, then make this’s signal follow signal. - if (signal != null) { - if ( - !signal || - typeof signal.aborted !== 'boolean' || - typeof signal.addEventListener !== 'function' - ) { - throw new TypeError( - "Failed to construct 'Request': member signal is not of type AbortSignal." - ) - } - if (signal.aborted) { - ac.abort(signal.reason) - } else { - // Keep a strong ref to ac while request object - // is alive. This is needed to prevent AbortController - // from being prematurely garbage collected. - // See, https://github.com/nodejs/undici/issues/1926. - this[kAbortController] = ac +/***/ }), - const acRef = new WeakRef(ac) - const abort = function () { - const ac = acRef.deref() - if (ac !== undefined) { - ac.abort(this.reason) - } - } +/***/ 39651: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Third-party AbortControllers may not work with these. - // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. - try { - // If the max amount of listeners is equal to the default, increase it - // This is only available in node >= v19.9.0 - if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { - setMaxListeners(100, signal) - } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { - setMaxListeners(100, signal) - } - } catch {} +"use strict"; - util.addAbortListener(signal, abort) - requestFinalizer.register(ac, { signal, abort }) - } - } - // 30. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is request’s header list and guard is - // "request". - this[kHeaders] = new Headers(kConstruct) - this[kHeaders][kHeadersList] = request.headersList - this[kHeaders][kGuard] = 'request' - this[kHeaders][kRealm] = this[kRealm] +var xtend = __nccwpck_require__(80869) +var toggle = __nccwpck_require__(33600) +var vfileLocation = __nccwpck_require__(34808) +var unescape = __nccwpck_require__(57468) +var decode = __nccwpck_require__(18934) +var tokenizer = __nccwpck_require__(31975) - // 31. If this’s request’s mode is "no-cors", then: - if (mode === 'no-cors') { - // 1. If this’s request’s method is not a CORS-safelisted method, - // then throw a TypeError. - if (!corsSafeListedMethodsSet.has(request.method)) { - throw new TypeError( - `'${request.method} is unsupported in no-cors mode.` - ) - } +module.exports = Parser - // 2. Set this’s headers’s guard to "request-no-cors". - this[kHeaders][kGuard] = 'request-no-cors' - } +function Parser(doc, file) { + this.file = file + this.offset = {} + this.options = xtend(this.options) + this.setOptions({}) - // 32. If init is not empty, then: - if (initHasKey) { - /** @type {HeadersList} */ - const headersList = this[kHeaders][kHeadersList] - // 1. Let headers be a copy of this’s headers and its associated header - // list. - // 2. If init["headers"] exists, then set headers to init["headers"]. - const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList) + this.inList = false + this.inBlock = false + this.inLink = false + this.atStart = true - // 3. Empty this’s headers’s header list. - headersList.clear() + this.toOffset = vfileLocation(file).toOffset + this.unescape = unescape(this, 'escape') + this.decode = decode(this) +} - // 4. If headers is a Headers object, then for each header in its header - // list, append header’s name/header’s value to this’s headers. - if (headers instanceof HeadersList) { - for (const [key, val] of headers) { - headersList.append(key, val) - } - // Note: Copy the `set-cookie` meta-data. - headersList.cookies = headers.cookies - } else { - // 5. Otherwise, fill this’s headers with headers. - fillHeaders(this[kHeaders], headers) - } - } +var proto = Parser.prototype - // 33. Let inputBody be input’s request’s body if input is a Request - // object; otherwise null. - const inputBody = input instanceof Request ? input[kState].body : null +// Expose core. +proto.setOptions = __nccwpck_require__(3701) +proto.parse = __nccwpck_require__(3385) - // 34. If either init["body"] exists and is non-null or inputBody is - // non-null, and request’s method is `GET` or `HEAD`, then throw a - // TypeError. - if ( - (init.body != null || inputBody != null) && - (request.method === 'GET' || request.method === 'HEAD') - ) { - throw new TypeError('Request with GET/HEAD method cannot have body.') - } +// Expose `defaults`. +proto.options = __nccwpck_require__(96206) - // 35. Let initBody be null. - let initBody = null +// Enter and exit helpers. +proto.exitStart = toggle('atStart', true) +proto.enterList = toggle('inList', false) +proto.enterLink = toggle('inLink', false) +proto.enterBlock = toggle('inBlock', false) - // 36. If init["body"] exists and is non-null, then: - if (init.body != null) { - // 1. Let Content-Type be null. - // 2. Set initBody and Content-Type to the result of extracting - // init["body"], with keepalive set to request’s keepalive. - const [extractedBody, contentType] = extractBody( - init.body, - request.keepalive - ) - initBody = extractedBody +// Nodes that can interupt a paragraph: +// +// ```markdown +// A paragraph, followed by a thematic break. +// ___ +// ``` +// +// In the above example, the thematic break “interupts” the paragraph. +proto.interruptParagraph = [ + ['thematicBreak'], + ['list'], + ['atxHeading'], + ['fencedCode'], + ['blockquote'], + ['html'], + ['setextHeading', {commonmark: false}], + ['definition', {commonmark: false}] +] - // 3, If Content-Type is non-null and this’s headers’s header list does - // not contain `Content-Type`, then append `Content-Type`/Content-Type to - // this’s headers. - if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { - this[kHeaders].append('content-type', contentType) - } - } +// Nodes that can interupt a list: +// +// ```markdown +// - One +// ___ +// ``` +// +// In the above example, the thematic break “interupts” the list. +proto.interruptList = [ + ['atxHeading', {pedantic: false}], + ['fencedCode', {pedantic: false}], + ['thematicBreak', {pedantic: false}], + ['definition', {commonmark: false}] +] - // 37. Let inputOrInitBody be initBody if it is non-null; otherwise - // inputBody. - const inputOrInitBody = initBody ?? inputBody +// Nodes that can interupt a blockquote: +// +// ```markdown +// > A paragraph. +// ___ +// ``` +// +// In the above example, the thematic break “interupts” the blockquote. +proto.interruptBlockquote = [ + ['indentedCode', {commonmark: true}], + ['fencedCode', {commonmark: true}], + ['atxHeading', {commonmark: true}], + ['setextHeading', {commonmark: true}], + ['thematicBreak', {commonmark: true}], + ['html', {commonmark: true}], + ['list', {commonmark: true}], + ['definition', {commonmark: false}] +] - // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is - // null, then: - if (inputOrInitBody != null && inputOrInitBody.source == null) { - // 1. If initBody is non-null and init["duplex"] does not exist, - // then throw a TypeError. - if (initBody != null && init.duplex == null) { - throw new TypeError('RequestInit: duplex option is required when sending a body.') - } +// Handlers. +proto.blockTokenizers = { + blankLine: __nccwpck_require__(93391), + indentedCode: __nccwpck_require__(44969), + fencedCode: __nccwpck_require__(48365), + blockquote: __nccwpck_require__(69539), + atxHeading: __nccwpck_require__(50542), + thematicBreak: __nccwpck_require__(4757), + list: __nccwpck_require__(30460), + setextHeading: __nccwpck_require__(87106), + html: __nccwpck_require__(68725), + definition: __nccwpck_require__(56901), + table: __nccwpck_require__(80930), + paragraph: __nccwpck_require__(3272) +} + +proto.inlineTokenizers = { + escape: __nccwpck_require__(31943), + autoLink: __nccwpck_require__(45396), + url: __nccwpck_require__(91063), + email: __nccwpck_require__(58038), + html: __nccwpck_require__(29923), + link: __nccwpck_require__(22144), + reference: __nccwpck_require__(94419), + strong: __nccwpck_require__(79359), + emphasis: __nccwpck_require__(15698), + deletion: __nccwpck_require__(21483), + code: __nccwpck_require__(97671), + break: __nccwpck_require__(94845), + text: __nccwpck_require__(10631) +} + +// Expose precedence. +proto.blockMethods = keys(proto.blockTokenizers) +proto.inlineMethods = keys(proto.inlineTokenizers) + +// Tokenizers. +proto.tokenizeBlock = tokenizer('block') +proto.tokenizeInline = tokenizer('inline') +proto.tokenizeFactory = tokenizer + +// Get all keys in `value`. +function keys(value) { + var result = [] + var key + + for (key in value) { + result.push(key) + } - // 2. If this’s request’s mode is neither "same-origin" nor "cors", - // then throw a TypeError. - if (request.mode !== 'same-origin' && request.mode !== 'cors') { - throw new TypeError( - 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' - ) - } + return result +} - // 3. Set this’s request’s use-CORS-preflight flag. - request.useCORSPreflightFlag = true - } - // 39. Let finalBody be inputOrInitBody. - let finalBody = inputOrInitBody +/***/ }), - // 40. If initBody is null and inputBody is non-null, then: - if (initBody == null && inputBody != null) { - // 1. If input is unusable, then throw a TypeError. - if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { - throw new TypeError( - 'Cannot construct a Request with a Request object that has already been used.' - ) - } +/***/ 3701: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. Set finalBody to the result of creating a proxy for inputBody. - if (!TransformStream) { - TransformStream = (__nccwpck_require__(3774).TransformStream) - } +"use strict"; - // https://streams.spec.whatwg.org/#readablestream-create-a-proxy - const identityTransform = new TransformStream() - inputBody.stream.pipeThrough(identityTransform) - finalBody = { - source: inputBody.source, - length: inputBody.length, - stream: identityTransform.readable - } - } - // 41. Set this’s request’s body to finalBody. - this[kState].body = finalBody - } +var xtend = __nccwpck_require__(80869) +var escapes = __nccwpck_require__(80872) +var defaults = __nccwpck_require__(96206) - // Returns request’s HTTP method, which is "GET" by default. - get method () { - webidl.brandCheck(this, Request) +module.exports = setOptions - // The method getter steps are to return this’s request’s method. - return this[kState].method +function setOptions(options) { + var self = this + var current = self.options + var key + var value + + if (options == null) { + options = {} + } else if (typeof options === 'object') { + options = xtend(options) + } else { + throw new Error('Invalid value `' + options + '` for setting `options`') } - // Returns the URL of request as a string. - get url () { - webidl.brandCheck(this, Request) + for (key in defaults) { + value = options[key] - // The url getter steps are to return this’s request’s URL, serialized. - return URLSerializer(this[kState].url) - } + if (value == null) { + value = current[key] + } - // Returns a Headers object consisting of the headers associated with request. - // Note that headers added in the network layer by the user agent will not - // be accounted for in this object, e.g., the "Host" header. - get headers () { - webidl.brandCheck(this, Request) + if ( + (key !== 'blocks' && typeof value !== 'boolean') || + (key === 'blocks' && typeof value !== 'object') + ) { + throw new Error( + 'Invalid value `' + value + '` for setting `options.' + key + '`' + ) + } - // The headers getter steps are to return this’s headers. - return this[kHeaders] + options[key] = value } - // Returns the kind of resource requested by request, e.g., "document" - // or "script". - get destination () { - webidl.brandCheck(this, Request) + self.options = options + self.escape = escapes(options) - // The destination getter are to return this’s request’s destination. - return this[kState].destination - } + return self +} - // Returns the referrer of request. Its value can be a same-origin URL if - // explicitly set in init, the empty string to indicate no referrer, and - // "about:client" when defaulting to the global’s default. This is used - // during fetching to determine the value of the `Referer` header of the - // request being made. - get referrer () { - webidl.brandCheck(this, Request) - // 1. If this’s request’s referrer is "no-referrer", then return the - // empty string. - if (this[kState].referrer === 'no-referrer') { - return '' - } +/***/ }), - // 2. If this’s request’s referrer is "client", then return - // "about:client". - if (this[kState].referrer === 'client') { - return 'about:client' - } +/***/ 45396: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Return this’s request’s referrer, serialized. - return this[kState].referrer.toString() - } +"use strict"; - // Returns the referrer policy associated with request. - // This is used during fetching to compute the value of the request’s - // referrer. - get referrerPolicy () { - webidl.brandCheck(this, Request) - // The referrerPolicy getter steps are to return this’s request’s referrer policy. - return this[kState].referrerPolicy +var whitespace = __nccwpck_require__(96472) +var decode = __nccwpck_require__(75165) +var locate = __nccwpck_require__(4225) + +module.exports = autoLink +autoLink.locator = locate +autoLink.notInLink = true + +var lessThan = '<' +var greaterThan = '>' +var atSign = '@' +var slash = '/' +var mailto = 'mailto:' +var mailtoLength = mailto.length + +function autoLink(eat, value, silent) { + var self = this + var subvalue = '' + var length = value.length + var index = 0 + var queue = '' + var hasAtCharacter = false + var link = '' + var character + var now + var content + var tokenizers + var exit + + if (value.charAt(0) !== lessThan) { + return } - // Returns the mode associated with request, which is a string indicating - // whether the request will use CORS, or will be restricted to same-origin - // URLs. - get mode () { - webidl.brandCheck(this, Request) + index++ + subvalue = lessThan - // The mode getter steps are to return this’s request’s mode. - return this[kState].mode + while (index < length) { + character = value.charAt(index) + + if ( + whitespace(character) || + character === greaterThan || + character === atSign || + (character === ':' && value.charAt(index + 1) === slash) + ) { + break + } + + queue += character + index++ } - // Returns the credentials mode associated with request, - // which is a string indicating whether credentials will be sent with the - // request always, never, or only when sent to a same-origin URL. - get credentials () { - // The credentials getter steps are to return this’s request’s credentials mode. - return this[kState].credentials + if (!queue) { + return } - // Returns the cache mode associated with request, - // which is a string indicating how the request will - // interact with the browser’s cache when fetching. - get cache () { - webidl.brandCheck(this, Request) + link += queue + queue = '' - // The cache getter steps are to return this’s request’s cache mode. - return this[kState].cache - } + character = value.charAt(index) + link += character + index++ - // Returns the redirect mode associated with request, - // which is a string indicating how redirects for the - // request will be handled during fetching. A request - // will follow redirects by default. - get redirect () { - webidl.brandCheck(this, Request) + if (character === atSign) { + hasAtCharacter = true + } else { + if (character !== ':' || value.charAt(index + 1) !== slash) { + return + } - // The redirect getter steps are to return this’s request’s redirect mode. - return this[kState].redirect + link += slash + index++ } - // Returns request’s subresource integrity metadata, which is a - // cryptographic hash of the resource being fetched. Its value - // consists of multiple hashes separated by whitespace. [SRI] - get integrity () { - webidl.brandCheck(this, Request) + while (index < length) { + character = value.charAt(index) - // The integrity getter steps are to return this’s request’s integrity - // metadata. - return this[kState].integrity + if (whitespace(character) || character === greaterThan) { + break + } + + queue += character + index++ } - // Returns a boolean indicating whether or not request can outlive the - // global in which it was created. - get keepalive () { - webidl.brandCheck(this, Request) + character = value.charAt(index) - // The keepalive getter steps are to return this’s request’s keepalive. - return this[kState].keepalive + if (!queue || character !== greaterThan) { + return } - // Returns a boolean indicating whether or not request is for a reload - // navigation. - get isReloadNavigation () { - webidl.brandCheck(this, Request) - - // The isReloadNavigation getter steps are to return true if this’s - // request’s reload-navigation flag is set; otherwise false. - return this[kState].reloadNavigation + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true } - // Returns a boolean indicating whether or not request is for a history - // navigation (a.k.a. back-foward navigation). - get isHistoryNavigation () { - webidl.brandCheck(this, Request) + link += queue + content = link + subvalue += link + character + now = eat.now() + now.column++ + now.offset++ - // The isHistoryNavigation getter steps are to return true if this’s request’s - // history-navigation flag is set; otherwise false. - return this[kState].historyNavigation + if (hasAtCharacter) { + if (link.slice(0, mailtoLength).toLowerCase() === mailto) { + content = content.slice(mailtoLength) + now.column += mailtoLength + now.offset += mailtoLength + } else { + link = mailto + link + } } - // Returns the signal associated with request, which is an AbortSignal - // object indicating whether or not request has been aborted, and its - // abort event handler. - get signal () { - webidl.brandCheck(this, Request) + // Temporarily remove all tokenizers except text in autolinks. + tokenizers = self.inlineTokenizers + self.inlineTokenizers = {text: tokenizers.text} - // The signal getter steps are to return this’s signal. - return this[kSignal] - } + exit = self.enterLink() - get body () { - webidl.brandCheck(this, Request) + content = self.tokenizeInline(content, now) - return this[kState].body ? this[kState].body.stream : null - } + self.inlineTokenizers = tokenizers + exit() - get bodyUsed () { - webidl.brandCheck(this, Request) + return eat(subvalue)({ + type: 'link', + title: null, + url: decode(link, {nonTerminated: false}), + children: content + }) +} - return !!this[kState].body && util.isDisturbed(this[kState].body.stream) - } - get duplex () { - webidl.brandCheck(this, Request) +/***/ }), - return 'half' - } +/***/ 93391: +/***/ ((module) => { - // Returns a clone of request. - clone () { - webidl.brandCheck(this, Request) +"use strict"; - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || this.body?.locked) { - throw new TypeError('unusable') - } - // 2. Let clonedRequest be the result of cloning this’s request. - const clonedRequest = cloneRequest(this[kState]) +// A line containing no characters, or a line containing only spaces (U+0020) or +// tabs (U+0009), is called a blank line. +// See <https://spec.commonmark.org/0.29/#blank-line>. +var reBlankLine = /^[ \t]*(\n|$)/ - // 3. Let clonedRequestObject be the result of creating a Request object, - // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. - const clonedRequestObject = new Request(kConstruct) - clonedRequestObject[kState] = clonedRequest - clonedRequestObject[kRealm] = this[kRealm] - clonedRequestObject[kHeaders] = new Headers(kConstruct) - clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList - clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard] - clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm] +// Note that though blank lines play a special role in lists to determine +// whether the list is tight or loose +// (<https://spec.commonmark.org/0.29/#blank-lines>), it’s done by the list +// tokenizer and this blank line tokenizer does not have to be responsible for +// that. +// Therefore, configs such as `blankLine.notInList` do not have to be set here. +module.exports = blankLine - // 4. Make clonedRequestObject’s signal follow this’s signal. - const ac = new AbortController() - if (this.signal.aborted) { - ac.abort(this.signal.reason) - } else { - util.addAbortListener( - this.signal, - () => { - ac.abort(this.signal.reason) - } - ) +function blankLine(eat, value, silent) { + var match + var subvalue = '' + var index = 0 + var length = value.length + + while (index < length) { + match = reBlankLine.exec(value.slice(index)) + + if (match == null) { + break } - clonedRequestObject[kSignal] = ac.signal - // 4. Return clonedRequestObject. - return clonedRequestObject + index += match[0].length + subvalue += match[0] } -} -mixinBody(Request) + if (subvalue === '') { + return + } -function makeRequest (init) { - // https://fetch.spec.whatwg.org/#requests - const request = { - method: 'GET', - localURLsOnly: false, - unsafeRequest: false, - body: null, - client: null, - reservedClient: null, - replacesClientId: '', - window: 'client', - keepalive: false, - serviceWorkers: 'all', - initiator: '', - destination: '', - priority: null, - origin: 'client', - policyContainer: 'client', - referrer: 'client', - referrerPolicy: '', - mode: 'no-cors', - useCORSPreflightFlag: false, - credentials: 'same-origin', - useCredentials: false, - cache: 'default', - redirect: 'follow', - integrity: '', - cryptoGraphicsNonceMetadata: '', - parserMetadata: '', - reloadNavigation: false, - historyNavigation: false, - userActivation: false, - taintedOrigin: false, - redirectCount: 0, - responseTainting: 'basic', - preventNoCacheCacheControlHeaderModification: false, - done: false, - timingAllowFailed: false, - ...init, - headersList: init.headersList - ? new HeadersList(init.headersList) - : new HeadersList() + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true } - request.url = request.urlList[0] - return request + + eat(subvalue) } -// https://fetch.spec.whatwg.org/#concept-request-clone -function cloneRequest (request) { - // To clone a request request, run these steps: - // 1. Let newRequest be a copy of request, except for its body. - const newRequest = makeRequest({ ...request, body: null }) +/***/ }), - // 2. If request’s body is non-null, set newRequest’s body to the - // result of cloning request’s body. - if (request.body != null) { - newRequest.body = cloneBody(request.body) - } +/***/ 69539: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 3. Return newRequest. - return newRequest -} +"use strict"; -Object.defineProperties(Request.prototype, { - method: kEnumerableProperty, - url: kEnumerableProperty, - headers: kEnumerableProperty, - redirect: kEnumerableProperty, - clone: kEnumerableProperty, - signal: kEnumerableProperty, - duplex: kEnumerableProperty, - destination: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - isHistoryNavigation: kEnumerableProperty, - isReloadNavigation: kEnumerableProperty, - keepalive: kEnumerableProperty, - integrity: kEnumerableProperty, - cache: kEnumerableProperty, - credentials: kEnumerableProperty, - attribute: kEnumerableProperty, - referrerPolicy: kEnumerableProperty, - referrer: kEnumerableProperty, - mode: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'Request', - configurable: true - } -}) -webidl.converters.Request = webidl.interfaceConverter( - Request -) +var trim = __nccwpck_require__(15464) +var interrupt = __nccwpck_require__(93808) + +module.exports = blockquote + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var greaterThan = '>' + +function blockquote(eat, value, silent) { + var self = this + var offsets = self.offset + var tokenizers = self.blockTokenizers + var interruptors = self.interruptBlockquote + var now = eat.now() + var currentLine = now.line + var length = value.length + var values = [] + var contents = [] + var indents = [] + var add + var index = 0 + var character + var rest + var nextIndex + var content + var line + var startIndex + var prefixed + var exit + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } -// https://fetch.spec.whatwg.org/#requestinfo -webidl.converters.RequestInfo = function (V) { - if (typeof V === 'string') { - return webidl.converters.USVString(V) + index++ } - if (V instanceof Request) { - return webidl.converters.Request(V) + if (value.charAt(index) !== greaterThan) { + return } - return webidl.converters.USVString(V) -} - -webidl.converters.AbortSignal = webidl.interfaceConverter( - AbortSignal -) - -// https://fetch.spec.whatwg.org/#requestinit -webidl.converters.RequestInit = webidl.dictionaryConverter([ - { - key: 'method', - converter: webidl.converters.ByteString - }, - { - key: 'headers', - converter: webidl.converters.HeadersInit - }, - { - key: 'body', - converter: webidl.nullableConverter( - webidl.converters.BodyInit - ) - }, - { - key: 'referrer', - converter: webidl.converters.USVString - }, - { - key: 'referrerPolicy', - converter: webidl.converters.DOMString, - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy - allowedValues: referrerPolicy - }, - { - key: 'mode', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#concept-request-mode - allowedValues: requestMode - }, - { - key: 'credentials', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcredentials - allowedValues: requestCredentials - }, - { - key: 'cache', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcache - allowedValues: requestCache - }, - { - key: 'redirect', - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestredirect - allowedValues: requestRedirect - }, - { - key: 'integrity', - converter: webidl.converters.DOMString - }, - { - key: 'keepalive', - converter: webidl.converters.boolean - }, - { - key: 'signal', - converter: webidl.nullableConverter( - (signal) => webidl.converters.AbortSignal( - signal, - { strict: false } - ) - ) - }, - { - key: 'window', - converter: webidl.converters.any - }, - { - key: 'duplex', - converter: webidl.converters.DOMString, - allowedValues: requestDuplex + if (silent) { + return true } -]) -module.exports = { Request, makeRequest } + index = 0 + while (index < length) { + nextIndex = value.indexOf(lineFeed, index) + startIndex = index + prefixed = false -/***/ }), + if (nextIndex === -1) { + nextIndex = length + } -/***/ 8676: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + while (index < length) { + character = value.charAt(index) -"use strict"; + if (character !== space && character !== tab) { + break + } + index++ + } -const { Headers, HeadersList, fill } = __nccwpck_require__(6349) -const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(8923) -const util = __nccwpck_require__(3440) -const { kEnumerableProperty } = util -const { - isValidReasonPhrase, - isCancelled, - isAborted, - isBlobLike, - serializeJavascriptValueToJSONString, - isErrorLike, - isomorphicEncode -} = __nccwpck_require__(5523) -const { - redirectStatusSet, - nullBodyStatus, - DOMException -} = __nccwpck_require__(7326) -const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) -const { webidl } = __nccwpck_require__(4222) -const { FormData } = __nccwpck_require__(3073) -const { getGlobalOrigin } = __nccwpck_require__(5628) -const { URLSerializer } = __nccwpck_require__(4322) -const { kHeadersList, kConstruct } = __nccwpck_require__(6443) -const assert = __nccwpck_require__(2613) -const { types } = __nccwpck_require__(9023) - -const ReadableStream = globalThis.ReadableStream || (__nccwpck_require__(3774).ReadableStream) -const textEncoder = new TextEncoder('utf-8') + if (value.charAt(index) === greaterThan) { + index++ + prefixed = true -// https://fetch.spec.whatwg.org/#response-class -class Response { - // Creates network error Response. - static error () { - // TODO - const relevantRealm = { settingsObject: {} } + if (value.charAt(index) === space) { + index++ + } + } else { + index = startIndex + } - // The static error() method steps are to return the result of creating a - // Response object, given a new network error, "immutable", and this’s - // relevant Realm. - const responseObject = new Response() - responseObject[kState] = makeNetworkError() - responseObject[kRealm] = relevantRealm - responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList - responseObject[kHeaders][kGuard] = 'immutable' - responseObject[kHeaders][kRealm] = relevantRealm - return responseObject - } + content = value.slice(index, nextIndex) - // https://fetch.spec.whatwg.org/#dom-response-json - static json (data, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }) + if (!prefixed && !trim(content)) { + index = startIndex + break + } - if (init !== null) { - init = webidl.converters.ResponseInit(init) + if (!prefixed) { + rest = value.slice(index) + + // Check if the following code contains a possible block. + if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) { + break + } } - // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. - const bytes = textEncoder.encode( - serializeJavascriptValueToJSONString(data) - ) + line = startIndex === index ? content : value.slice(startIndex, nextIndex) - // 2. Let body be the result of extracting bytes. - const body = extractBody(bytes) + indents.push(index - startIndex) + values.push(line) + contents.push(content) - // 3. Let responseObject be the result of creating a Response object, given a new response, - // "response", and this’s relevant Realm. - const relevantRealm = { settingsObject: {} } - const responseObject = new Response() - responseObject[kRealm] = relevantRealm - responseObject[kHeaders][kGuard] = 'response' - responseObject[kHeaders][kRealm] = relevantRealm + index = nextIndex + 1 + } - // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). - initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) + index = -1 + length = indents.length + add = eat(values.join(lineFeed)) - // 5. Return responseObject. - return responseObject + while (++index < length) { + offsets[currentLine] = (offsets[currentLine] || 0) + indents[index] + currentLine++ } - // Creates a redirect Response that redirects to url with status status. - static redirect (url, status = 302) { - const relevantRealm = { settingsObject: {} } + exit = self.enterBlock() + contents = self.tokenizeBlock(contents.join(lineFeed), now) + exit() - webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }) + return add({type: 'blockquote', children: contents}) +} - url = webidl.converters.USVString(url) - status = webidl.converters['unsigned short'](status) - // 1. Let parsedURL be the result of parsing url with current settings - // object’s API base URL. - // 2. If parsedURL is failure, then throw a TypeError. - // TODO: base-URL? - let parsedURL - try { - parsedURL = new URL(url, getGlobalOrigin()) - } catch (err) { - throw Object.assign(new TypeError('Failed to parse URL from ' + url), { - cause: err - }) - } +/***/ }), - // 3. If status is not a redirect status, then throw a RangeError. - if (!redirectStatusSet.has(status)) { - throw new RangeError('Invalid status code ' + status) - } +/***/ 94845: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4. Let responseObject be the result of creating a Response object, - // given a new response, "immutable", and this’s relevant Realm. - const responseObject = new Response() - responseObject[kRealm] = relevantRealm - responseObject[kHeaders][kGuard] = 'immutable' - responseObject[kHeaders][kRealm] = relevantRealm +"use strict"; - // 5. Set responseObject’s response’s status to status. - responseObject[kState].status = status - // 6. Let value be parsedURL, serialized and isomorphic encoded. - const value = isomorphicEncode(URLSerializer(parsedURL)) +var locate = __nccwpck_require__(91702) - // 7. Append `Location`/value to responseObject’s response’s header list. - responseObject[kState].headersList.append('location', value) +module.exports = hardBreak +hardBreak.locator = locate - // 8. Return responseObject. - return responseObject - } +var space = ' ' +var lineFeed = '\n' +var minBreakLength = 2 - // https://fetch.spec.whatwg.org/#dom-response - constructor (body = null, init = {}) { - if (body !== null) { - body = webidl.converters.BodyInit(body) - } +function hardBreak(eat, value, silent) { + var length = value.length + var index = -1 + var queue = '' + var character - init = webidl.converters.ResponseInit(init) + while (++index < length) { + character = value.charAt(index) - // TODO - this[kRealm] = { settingsObject: {} } + if (character === lineFeed) { + if (index < minBreakLength) { + return + } - // 1. Set this’s response to a new response. - this[kState] = makeResponse({}) + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } - // 2. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is this’s response’s header list and guard - // is "response". - this[kHeaders] = new Headers(kConstruct) - this[kHeaders][kGuard] = 'response' - this[kHeaders][kHeadersList] = this[kState].headersList - this[kHeaders][kRealm] = this[kRealm] + queue += character - // 3. Let bodyWithType be null. - let bodyWithType = null + return eat(queue)({type: 'break'}) + } - // 4. If body is non-null, then set bodyWithType to the result of extracting body. - if (body != null) { - const [extractedBody, type] = extractBody(body) - bodyWithType = { body: extractedBody, type } + if (character !== space) { + return } - // 5. Perform initialize a response given this, init, and bodyWithType. - initializeResponse(this, init, bodyWithType) + queue += character } +} - // Returns response’s type, e.g., "cors". - get type () { - webidl.brandCheck(this, Response) - // The type getter steps are to return this’s response’s type. - return this[kState].type - } +/***/ }), - // Returns response’s URL, if it has one; otherwise the empty string. - get url () { - webidl.brandCheck(this, Response) +/***/ 48365: +/***/ ((module) => { - const urlList = this[kState].urlList +"use strict"; - // The url getter steps are to return the empty string if this’s - // response’s URL is null; otherwise this’s response’s URL, - // serialized with exclude fragment set to true. - const url = urlList[urlList.length - 1] ?? null - if (url === null) { - return '' +module.exports = fencedCode + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var tilde = '~' +var graveAccent = '`' + +var minFenceCount = 3 +var tabSize = 4 + +function fencedCode(eat, value, silent) { + var self = this + var gfm = self.options.gfm + var length = value.length + 1 + var index = 0 + var subvalue = '' + var fenceCount + var marker + var character + var flag + var lang + var meta + var queue + var content + var exdentedContent + var closing + var exdentedClosing + var indent + var now + + if (!gfm) { + return + } + + // Eat initial spacing. + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break } - return URLSerializer(url, true) + subvalue += character + index++ } - // Returns whether response was obtained through a redirect. - get redirected () { - webidl.brandCheck(this, Response) + indent = index - // The redirected getter steps are to return true if this’s response’s URL - // list has more than one item; otherwise false. - return this[kState].urlList.length > 1 + // Eat the fence. + character = value.charAt(index) + + if (character !== tilde && character !== graveAccent) { + return } - // Returns response’s status. - get status () { - webidl.brandCheck(this, Response) + index++ + marker = character + fenceCount = 1 + subvalue += character - // The status getter steps are to return this’s response’s status. - return this[kState].status - } + while (index < length) { + character = value.charAt(index) - // Returns whether response’s status is an ok status. - get ok () { - webidl.brandCheck(this, Response) + if (character !== marker) { + break + } - // The ok getter steps are to return true if this’s response’s status is an - // ok status; otherwise false. - return this[kState].status >= 200 && this[kState].status <= 299 + subvalue += character + fenceCount++ + index++ } - // Returns response’s status message. - get statusText () { - webidl.brandCheck(this, Response) + if (fenceCount < minFenceCount) { + return + } - // The statusText getter steps are to return this’s response’s status - // message. - return this[kState].statusText + // Eat spacing before flag. + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + subvalue += character + index++ } - // Returns response’s headers as Headers. - get headers () { - webidl.brandCheck(this, Response) + // Eat flag. + flag = '' + queue = '' - // The headers getter steps are to return this’s headers. - return this[kHeaders] + while (index < length) { + character = value.charAt(index) + + if ( + character === lineFeed || + (marker === graveAccent && character === marker) + ) { + break + } + + if (character === space || character === tab) { + queue += character + } else { + flag += queue + character + queue = '' + } + + index++ } - get body () { - webidl.brandCheck(this, Response) + character = value.charAt(index) - return this[kState].body ? this[kState].body.stream : null + if (character && character !== lineFeed) { + return } - get bodyUsed () { - webidl.brandCheck(this, Response) + if (silent) { + return true + } - return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + now = eat.now() + now.column += subvalue.length + now.offset += subvalue.length + + subvalue += flag + flag = self.decode.raw(self.unescape(flag), now) + + if (queue) { + subvalue += queue } - // Returns a clone of response. - clone () { - webidl.brandCheck(this, Response) + queue = '' + closing = '' + exdentedClosing = '' + content = '' + exdentedContent = '' + var skip = true - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || (this.body && this.body.locked)) { - throw webidl.errors.exception({ - header: 'Response.clone', - message: 'Body has already been consumed.' - }) + // Eat content. + while (index < length) { + character = value.charAt(index) + content += closing + exdentedContent += exdentedClosing + closing = '' + exdentedClosing = '' + + if (character !== lineFeed) { + content += character + exdentedClosing += character + index++ + continue } - // 2. Let clonedResponse be the result of cloning this’s response. - const clonedResponse = cloneResponse(this[kState]) + // The first line feed is ignored. Others aren’t. + if (skip) { + subvalue += character + skip = false + } else { + closing += character + exdentedClosing += character + } - // 3. Return the result of creating a Response object, given - // clonedResponse, this’s headers’s guard, and this’s relevant Realm. - const clonedResponseObject = new Response() - clonedResponseObject[kState] = clonedResponse - clonedResponseObject[kRealm] = this[kRealm] - clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList - clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard] - clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm] + queue = '' + index++ - return clonedResponseObject - } -} + while (index < length) { + character = value.charAt(index) -mixinBody(Response) + if (character !== space) { + break + } -Object.defineProperties(Response.prototype, { - type: kEnumerableProperty, - url: kEnumerableProperty, - status: kEnumerableProperty, - ok: kEnumerableProperty, - redirected: kEnumerableProperty, - statusText: kEnumerableProperty, - headers: kEnumerableProperty, - clone: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'Response', - configurable: true - } -}) + queue += character + index++ + } -Object.defineProperties(Response, { - json: kEnumerableProperty, - redirect: kEnumerableProperty, - error: kEnumerableProperty -}) + closing += queue + exdentedClosing += queue.slice(indent) -// https://fetch.spec.whatwg.org/#concept-response-clone -function cloneResponse (response) { - // To clone a response response, run these steps: + if (queue.length >= tabSize) { + continue + } - // 1. If response is a filtered response, then return a new identical - // filtered response whose internal response is a clone of response’s - // internal response. - if (response.internalResponse) { - return filterResponse( - cloneResponse(response.internalResponse), - response.type - ) - } + queue = '' - // 2. Let newResponse be a copy of response, except for its body. - const newResponse = makeResponse({ ...response, body: null }) + while (index < length) { + character = value.charAt(index) - // 3. If response’s body is non-null, then set newResponse’s body to the - // result of cloning response’s body. - if (response.body != null) { - newResponse.body = cloneBody(response.body) + if (character !== marker) { + break + } + + queue += character + index++ + } + + closing += queue + exdentedClosing += queue + + if (queue.length < fenceCount) { + continue + } + + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } + + closing += character + exdentedClosing += character + index++ + } + + if (!character || character === lineFeed) { + break + } } - // 4. Return newResponse. - return newResponse -} + subvalue += content + closing -function makeResponse (init) { - return { - aborted: false, - rangeRequested: false, - timingAllowPassed: false, - requestIncludesCredentials: false, - type: 'default', - status: 200, - timingInfo: null, - cacheState: '', - statusText: '', - ...init, - headersList: init.headersList - ? new HeadersList(init.headersList) - : new HeadersList(), - urlList: init.urlList ? [...init.urlList] : [] + // Get lang and meta from the flag. + index = -1 + length = flag.length + + while (++index < length) { + character = flag.charAt(index) + + if (character === space || character === tab) { + if (!lang) { + lang = flag.slice(0, index) + } + } else if (lang) { + meta = flag.slice(index) + break + } } -} -function makeNetworkError (reason) { - const isError = isErrorLike(reason) - return makeResponse({ - type: 'error', - status: 0, - error: isError - ? reason - : new Error(reason ? String(reason) : reason), - aborted: reason && reason.name === 'AbortError' + return eat(subvalue)({ + type: 'code', + lang: lang || flag || null, + meta: meta || null, + value: exdentedContent }) } -function makeFilteredResponse (response, state) { - state = { - internalResponse: response, - ...state + +/***/ }), + +/***/ 44969: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(40471) +var trim = __nccwpck_require__(75937) + +module.exports = indentedCode + +var lineFeed = '\n' +var tab = '\t' +var space = ' ' + +var tabSize = 4 +var codeIndent = repeat(space, tabSize) + +function indentedCode(eat, value, silent) { + var index = -1 + var length = value.length + var subvalue = '' + var content = '' + var subvalueQueue = '' + var contentQueue = '' + var character + var blankQueue + var indent + + while (++index < length) { + character = value.charAt(index) + + if (indent) { + indent = false + + subvalue += subvalueQueue + content += contentQueue + subvalueQueue = '' + contentQueue = '' + + if (character === lineFeed) { + subvalueQueue = character + contentQueue = character + } else { + subvalue += character + content += character + + while (++index < length) { + character = value.charAt(index) + + if (!character || character === lineFeed) { + contentQueue = character + subvalueQueue = character + break + } + + subvalue += character + content += character + } + } + } else if ( + character === space && + value.charAt(index + 1) === character && + value.charAt(index + 2) === character && + value.charAt(index + 3) === character + ) { + subvalueQueue += codeIndent + index += 3 + indent = true + } else if (character === tab) { + subvalueQueue += character + indent = true + } else { + blankQueue = '' + + while (character === tab || character === space) { + blankQueue += character + character = value.charAt(++index) + } + + if (character !== lineFeed) { + break + } + + subvalueQueue += blankQueue + character + contentQueue += character + } } - return new Proxy(response, { - get (target, p) { - return p in state ? state[p] : target[p] - }, - set (target, p, value) { - assert(!(p in state)) - target[p] = value + if (content) { + if (silent) { return true } - }) + + return eat(subvalue)({ + type: 'code', + lang: null, + meta: null, + value: trim(content) + }) + } } -// https://fetch.spec.whatwg.org/#concept-filtered-response -function filterResponse (response, type) { - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (type === 'basic') { - // A basic filtered response is a filtered response whose type is "basic" - // and header list excludes any headers in internal response’s header list - // whose name is a forbidden response-header name. - // Note: undici does not implement forbidden response-header names - return makeFilteredResponse(response, { - type: 'basic', - headersList: response.headersList - }) - } else if (type === 'cors') { - // A CORS filtered response is a filtered response whose type is "cors" - // and header list excludes any headers in internal response’s header - // list whose name is not a CORS-safelisted response-header name, given - // internal response’s CORS-exposed header-name list. +/***/ }), - // Note: undici does not implement CORS-safelisted response-header names - return makeFilteredResponse(response, { - type: 'cors', - headersList: response.headersList - }) - } else if (type === 'opaque') { - // An opaque filtered response is a filtered response whose type is - // "opaque", URL list is the empty list, status is 0, status message - // is the empty byte sequence, header list is empty, and body is null. +/***/ 97671: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return makeFilteredResponse(response, { - type: 'opaque', - urlList: Object.freeze([]), - status: 0, - statusText: '', - body: null - }) - } else if (type === 'opaqueredirect') { - // An opaque-redirect filtered response is a filtered response whose type - // is "opaqueredirect", status is 0, status message is the empty byte - // sequence, header list is empty, and body is null. +"use strict"; - return makeFilteredResponse(response, { - type: 'opaqueredirect', - status: 0, - statusText: '', - headersList: [], - body: null - }) - } else { - assert(false) - } -} -// https://fetch.spec.whatwg.org/#appropriate-network-error -function makeAppropriateNetworkError (fetchParams, err = null) { - // 1. Assert: fetchParams is canceled. - assert(isCancelled(fetchParams)) +var locate = __nccwpck_require__(99740) - // 2. Return an aborted network error if fetchParams is aborted; - // otherwise return a network error. - return isAborted(fetchParams) - ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) - : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })) -} +module.exports = inlineCode +inlineCode.locator = locate -// https://whatpr.org/fetch/1392.html#initialize-a-response -function initializeResponse (response, init, body) { - // 1. If init["status"] is not in the range 200 to 599, inclusive, then - // throw a RangeError. - if (init.status !== null && (init.status < 200 || init.status > 599)) { - throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') - } +var lineFeed = 10 // '\n' +var space = 32 // ' ' +var graveAccent = 96 // '`' - // 2. If init["statusText"] does not match the reason-phrase token production, - // then throw a TypeError. - if ('statusText' in init && init.statusText != null) { - // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: - // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError('Invalid statusText') +function inlineCode(eat, value, silent) { + var length = value.length + var index = 0 + var openingFenceEnd + var closingFenceStart + var closingFenceEnd + var code + var next + var found + + while (index < length) { + if (value.charCodeAt(index) !== graveAccent) { + break } + + index++ } - // 3. Set response’s response’s status to init["status"]. - if ('status' in init && init.status != null) { - response[kState].status = init.status + if (index === 0 || index === length) { + return } - // 4. Set response’s response’s status message to init["statusText"]. - if ('statusText' in init && init.statusText != null) { - response[kState].statusText = init.statusText + openingFenceEnd = index + next = value.charCodeAt(index) + + while (index < length) { + code = next + next = value.charCodeAt(index + 1) + + if (code === graveAccent) { + if (closingFenceStart === undefined) { + closingFenceStart = index + } + + closingFenceEnd = index + 1 + + if ( + next !== graveAccent && + closingFenceEnd - closingFenceStart === openingFenceEnd + ) { + found = true + break + } + } else if (closingFenceStart !== undefined) { + closingFenceStart = undefined + closingFenceEnd = undefined + } + + index++ } - // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. - if ('headers' in init && init.headers != null) { - fill(response[kHeaders], init.headers) + if (!found) { + return } - // 6. If body was given, then: - if (body) { - // 1. If response's status is a null body status, then throw a TypeError. - if (nullBodyStatus.includes(response.status)) { - throw webidl.errors.exception({ - header: 'Response constructor', - message: 'Invalid response status code ' + response.status - }) - } + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } - // 2. Set response's body to body's body. - response[kState].body = body.body + // Remove the initial and final space (or line feed), iff they exist and there + // are non-space characters in the content. + index = openingFenceEnd + length = closingFenceStart + code = value.charCodeAt(index) + next = value.charCodeAt(length - 1) + found = false - // 3. If body's type is non-null and response's header list does not contain - // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. - if (body.type != null && !response[kState].headersList.contains('Content-Type')) { - response[kState].headersList.append('content-type', body.type) + if ( + length - index > 2 && + (code === space || code === lineFeed) && + (next === space || next === lineFeed) + ) { + index++ + length-- + + while (index < length) { + code = value.charCodeAt(index) + + if (code !== space && code !== lineFeed) { + found = true + break + } + + index++ + } + + if (found === true) { + openingFenceEnd++ + closingFenceStart-- } } + + return eat(value.slice(0, closingFenceEnd))({ + type: 'inlineCode', + value: value.slice(openingFenceEnd, closingFenceStart) + }) } -webidl.converters.ReadableStream = webidl.interfaceConverter( - ReadableStream -) -webidl.converters.FormData = webidl.interfaceConverter( - FormData -) +/***/ }), -webidl.converters.URLSearchParams = webidl.interfaceConverter( - URLSearchParams -) +/***/ 56901: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit -webidl.converters.XMLHttpRequestBodyInit = function (V) { - if (typeof V === 'string') { - return webidl.converters.USVString(V) - } +"use strict"; - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }) - } - if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { - return webidl.converters.BufferSource(V) - } +var whitespace = __nccwpck_require__(96472) +var normalize = __nccwpck_require__(99880) + +module.exports = definition + +var quotationMark = '"' +var apostrophe = "'" +var backslash = '\\' +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var leftParenthesis = '(' +var rightParenthesis = ')' +var colon = ':' +var lessThan = '<' +var greaterThan = '>' + +function definition(eat, value, silent) { + var self = this + var commonmark = self.options.commonmark + var index = 0 + var length = value.length + var subvalue = '' + var beforeURL + var beforeTitle + var queue + var character + var test + var identifier + var url + var title + + while (index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + break + } - if (util.isFormDataLike(V)) { - return webidl.converters.FormData(V, { strict: false }) + subvalue += character + index++ } - if (V instanceof URLSearchParams) { - return webidl.converters.URLSearchParams(V) + character = value.charAt(index) + + if (character !== leftSquareBracket) { + return } - return webidl.converters.DOMString(V) -} + index++ + subvalue += character + queue = '' -// https://fetch.spec.whatwg.org/#bodyinit -webidl.converters.BodyInit = function (V) { - if (V instanceof ReadableStream) { - return webidl.converters.ReadableStream(V) + while (index < length) { + character = value.charAt(index) + + if (character === rightSquareBracket) { + break + } else if (character === backslash) { + queue += character + index++ + character = value.charAt(index) + } + + queue += character + index++ } - // Note: the spec doesn't include async iterables, - // this is an undici extension. - if (V?.[Symbol.asyncIterator]) { - return V + if ( + !queue || + value.charAt(index) !== rightSquareBracket || + value.charAt(index + 1) !== colon + ) { + return } - return webidl.converters.XMLHttpRequestBodyInit(V) -} + identifier = queue + subvalue += queue + rightSquareBracket + colon + index = subvalue.length + queue = '' -webidl.converters.ResponseInit = webidl.dictionaryConverter([ - { - key: 'status', - converter: webidl.converters['unsigned short'], - defaultValue: 200 - }, - { - key: 'statusText', - converter: webidl.converters.ByteString, - defaultValue: '' - }, - { - key: 'headers', - converter: webidl.converters.HeadersInit + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space && character !== lineFeed) { + break + } + + subvalue += character + index++ } -]) -module.exports = { - makeNetworkError, - makeResponse, - makeAppropriateNetworkError, - filterResponse, - Response, - cloneResponse -} + character = value.charAt(index) + queue = '' + beforeURL = subvalue + if (character === lessThan) { + index++ -/***/ }), + while (index < length) { + character = value.charAt(index) -/***/ 9710: -/***/ ((module) => { + if (!isEnclosedURLCharacter(character)) { + break + } -"use strict"; + queue += character + index++ + } + character = value.charAt(index) -module.exports = { - kUrl: Symbol('url'), - kHeaders: Symbol('headers'), - kSignal: Symbol('signal'), - kState: Symbol('state'), - kGuard: Symbol('guard'), - kRealm: Symbol('realm') -} + if (character === isEnclosedURLCharacter.delimiter) { + subvalue += lessThan + queue + character + index++ + } else { + if (commonmark) { + return + } + index -= queue.length + 1 + queue = '' + } + } -/***/ }), + if (!queue) { + while (index < length) { + character = value.charAt(index) -/***/ 5523: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!isUnclosedURLCharacter(character)) { + break + } -"use strict"; + queue += character + index++ + } + subvalue += queue + } -const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = __nccwpck_require__(7326) -const { getGlobalOrigin } = __nccwpck_require__(5628) -const { performance } = __nccwpck_require__(2987) -const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3440) -const assert = __nccwpck_require__(2613) -const { isUint8Array } = __nccwpck_require__(8253) + if (!queue) { + return + } -let supportedHashes = [] + url = queue + queue = '' -// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable -/** @type {import('crypto')|undefined} */ -let crypto + while (index < length) { + character = value.charAt(index) -try { - crypto = __nccwpck_require__(6982) - const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] - supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) -/* c8 ignore next 3 */ -} catch { -} + if (character !== tab && character !== space && character !== lineFeed) { + break + } -function responseURL (response) { - // https://fetch.spec.whatwg.org/#responses - // A response has an associated URL. It is a pointer to the last URL - // in response’s URL list and null if response’s URL list is empty. - const urlList = response.urlList - const length = urlList.length - return length === 0 ? null : urlList[length - 1].toString() -} + queue += character + index++ + } -// https://fetch.spec.whatwg.org/#concept-response-location-url -function responseLocationURL (response, requestFragment) { - // 1. If response’s status is not a redirect status, then return null. - if (!redirectStatusSet.has(response.status)) { - return null + character = value.charAt(index) + test = null + + if (character === quotationMark) { + test = quotationMark + } else if (character === apostrophe) { + test = apostrophe + } else if (character === leftParenthesis) { + test = rightParenthesis } - // 2. Let location be the result of extracting header list values given - // `Location` and response’s header list. - let location = response.headersList.get('location') + if (!test) { + queue = '' + index = subvalue.length + } else if (queue) { + subvalue += queue + character + index = subvalue.length + queue = '' - // 3. If location is a header value, then set location to the result of - // parsing location with response’s URL. - if (location !== null && isValidHeaderValue(location)) { - location = new URL(location, responseURL(response)) + while (index < length) { + character = value.charAt(index) + + if (character === test) { + break + } + + if (character === lineFeed) { + index++ + character = value.charAt(index) + + if (character === lineFeed || character === test) { + return + } + + queue += lineFeed + } + + queue += character + index++ + } + + character = value.charAt(index) + + if (character !== test) { + return + } + + beforeTitle = subvalue + subvalue += queue + character + index++ + title = queue + queue = '' + } else { + return } - // 4. If location is a URL whose fragment is null, then set location’s - // fragment to requestFragment. - if (location && !location.hash) { - location.hash = requestFragment + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + subvalue += character + index++ } - // 5. Return location. - return location -} + character = value.charAt(index) -/** @returns {URL} */ -function requestCurrentURL (request) { - return request.urlList[request.urlList.length - 1] -} + if (!character || character === lineFeed) { + if (silent) { + return true + } -function requestBadPort (request) { - // 1. Let url be request’s current URL. - const url = requestCurrentURL(request) + beforeURL = eat(beforeURL).test().end + url = self.decode.raw(self.unescape(url), beforeURL, {nonTerminated: false}) - // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, - // then return blocked. - if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { - return 'blocked' + if (title) { + beforeTitle = eat(beforeTitle).test().end + title = self.decode.raw(self.unescape(title), beforeTitle) + } + + return eat(subvalue)({ + type: 'definition', + identifier: normalize(identifier), + label: identifier, + title: title || null, + url: url + }) } +} - // 3. Return allowed. - return 'allowed' +// Check if `character` can be inside an enclosed URI. +function isEnclosedURLCharacter(character) { + return ( + character !== greaterThan && + character !== leftSquareBracket && + character !== rightSquareBracket + ) } -function isErrorLike (object) { - return object instanceof Error || ( - object?.constructor?.name === 'Error' || - object?.constructor?.name === 'DOMException' +isEnclosedURLCharacter.delimiter = greaterThan + +// Check if `character` can be inside an unclosed URI. +function isUnclosedURLCharacter(character) { + return ( + character !== leftSquareBracket && + character !== rightSquareBracket && + !whitespace(character) ) } -// Check whether |statusText| is a ByteString and -// matches the Reason-Phrase token production. -// RFC 2616: https://tools.ietf.org/html/rfc2616 -// RFC 7230: https://tools.ietf.org/html/rfc7230 -// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" -// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 -function isValidReasonPhrase (statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i) + +/***/ }), + +/***/ 21483: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(96472) +var locate = __nccwpck_require__(49250) + +module.exports = strikethrough +strikethrough.locator = locate + +var tilde = '~' +var fence = '~~' + +function strikethrough(eat, value, silent) { + var self = this + var character = '' + var previous = '' + var preceding = '' + var subvalue = '' + var index + var length + var now + + if ( + !self.options.gfm || + value.charAt(0) !== tilde || + value.charAt(1) !== tilde || + whitespace(value.charAt(2)) + ) { + return + } + + index = 1 + length = value.length + now = eat.now() + now.column += 2 + now.offset += 2 + + while (++index < length) { + character = value.charAt(index) + if ( - !( - ( - c === 0x09 || // HTAB - (c >= 0x20 && c <= 0x7e) || // SP / VCHAR - (c >= 0x80 && c <= 0xff) - ) // obs-text - ) + character === tilde && + previous === tilde && + (!preceding || !whitespace(preceding)) ) { - return false + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + return eat(fence + subvalue + fence)({ + type: 'delete', + children: self.tokenizeInline(subvalue, now) + }) } + + subvalue += previous + preceding = previous + previous = character } - return true } -/** - * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 - * @param {number} c - */ -function isTokenCharCode (c) { - switch (c) { - case 0x22: - case 0x28: - case 0x29: - case 0x2c: - case 0x2f: - case 0x3a: - case 0x3b: - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: - case 0x40: - case 0x5b: - case 0x5c: - case 0x5d: - case 0x7b: - case 0x7d: - // DQUOTE and "(),/:;<=>?@[\]{}" - return false - default: - // VCHAR %x21-7E - return c >= 0x21 && c <= 0x7e - } -} -/** - * @param {string} characters - */ -function isValidHTTPToken (characters) { - if (characters.length === 0) { - return false - } - for (let i = 0; i < characters.length; ++i) { - if (!isTokenCharCode(characters.charCodeAt(i))) { - return false - } +/***/ }), + +/***/ 58038: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var decode = __nccwpck_require__(75165) +var decimal = __nccwpck_require__(96734) +var alphabetical = __nccwpck_require__(59201) +var locate = __nccwpck_require__(22637) + +module.exports = email +email.locator = locate +email.notInLink = true + +var plusSign = 43 // '+' +var dash = 45 // '-' +var dot = 46 // '.' +var atSign = 64 // '@' +var underscore = 95 // '_' + +function email(eat, value, silent) { + var self = this + var gfm = self.options.gfm + var tokenizers = self.inlineTokenizers + var index = 0 + var length = value.length + var firstDot = -1 + var code + var content + var children + var exit + + if (!gfm) { + return } - return true -} -/** - * @see https://fetch.spec.whatwg.org/#header-name - * @param {string} potentialValue - */ -function isValidHeaderName (potentialValue) { - return isValidHTTPToken(potentialValue) -} + code = value.charCodeAt(index) -/** - * @see https://fetch.spec.whatwg.org/#header-value - * @param {string} potentialValue - */ -function isValidHeaderValue (potentialValue) { - // - Has no leading or trailing HTTP tab or space bytes. - // - Contains no 0x00 (NUL) or HTTP newline bytes. - if ( - potentialValue.startsWith('\t') || - potentialValue.startsWith(' ') || - potentialValue.endsWith('\t') || - potentialValue.endsWith(' ') + while ( + decimal(code) || + alphabetical(code) || + code === plusSign || + code === dash || + code === dot || + code === underscore ) { - return false + code = value.charCodeAt(++index) } - if ( - potentialValue.includes('\0') || - potentialValue.includes('\r') || - potentialValue.includes('\n') - ) { - return false + if (index === 0) { + return } - return true -} + if (code !== atSign) { + return + } -// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect -function setRequestReferrerPolicyOnRedirect (request, actualResponse) { - // Given a request request and a response actualResponse, this algorithm - // updates request’s referrer policy according to the Referrer-Policy - // header (if any) in actualResponse. + index++ - // 1. Let policy be the result of executing § 8.1 Parse a referrer policy - // from a Referrer-Policy header on actualResponse. + while (index < length) { + code = value.charCodeAt(index) - // 8.1 Parse a referrer policy from a Referrer-Policy header - // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. - const { headersList } = actualResponse - // 2. Let policy be the empty string. - // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. - // 4. Return policy. - const policyHeader = (headersList.get('referrer-policy') ?? '').split(',') + if ( + decimal(code) || + alphabetical(code) || + code === dash || + code === dot || + code === underscore + ) { + index++ - // Note: As the referrer-policy can contain multiple policies - // separated by comma, we need to loop through all of them - // and pick the first valid one. - // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy - let policy = '' - if (policyHeader.length > 0) { - // The right-most policy takes precedence. - // The left-most policy is the fallback. - for (let i = policyHeader.length; i !== 0; i--) { - const token = policyHeader[i - 1].trim() - if (referrerPolicyTokens.has(token)) { - policy = token - break + if (firstDot === -1 && code === dot) { + firstDot = index } + + continue } + + break } - // 2. If policy is not the empty string, then set request’s referrer policy to policy. - if (policy !== '') { - request.referrerPolicy = policy + if ( + firstDot === -1 || + firstDot === index || + code === dash || + code === underscore + ) { + return } -} -// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check -function crossOriginResourcePolicyCheck () { - // TODO - return 'allowed' -} + if (code === dot) { + index-- + } -// https://fetch.spec.whatwg.org/#concept-cors-check -function corsCheck () { - // TODO - return 'success' -} + content = value.slice(0, index) -// https://fetch.spec.whatwg.org/#concept-tao-check -function TAOCheck () { - // TODO - return 'success' -} + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } -function appendFetchMetadata (httpRequest) { - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header - // TODO + exit = self.enterLink() - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + // Temporarily remove all tokenizers except text in url. + self.inlineTokenizers = {text: tokenizers.text} + children = self.tokenizeInline(content, eat.now()) + self.inlineTokenizers = tokenizers - // 1. Assert: r’s url is a potentially trustworthy URL. - // TODO + exit() - // 2. Let header be a Structured Header whose value is a token. - let header = null + return eat(content)({ + type: 'link', + title: null, + url: 'mailto:' + decode(content, {nonTerminated: false}), + children: children + }) +} - // 3. Set header’s value to r’s mode. - header = httpRequest.mode - // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. - httpRequest.headersList.set('sec-fetch-mode', header) +/***/ }), - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header - // TODO +/***/ 15698: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header - // TODO -} +"use strict"; -// https://fetch.spec.whatwg.org/#append-a-request-origin-header -function appendRequestOriginHeader (request) { - // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. - let serializedOrigin = request.origin - // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. - if (request.responseTainting === 'cors' || request.mode === 'websocket') { - if (serializedOrigin) { - request.headersList.append('origin', serializedOrigin) - } +var trim = __nccwpck_require__(15464) +var word = __nccwpck_require__(70009) +var whitespace = __nccwpck_require__(96472) +var locate = __nccwpck_require__(85227) - // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: - } else if (request.method !== 'GET' && request.method !== 'HEAD') { - // 1. Switch on request’s referrer policy: - switch (request.referrerPolicy) { - case 'no-referrer': - // Set serializedOrigin to `null`. - serializedOrigin = null - break - case 'no-referrer-when-downgrade': - case 'strict-origin': - case 'strict-origin-when-cross-origin': - // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. - if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { - serializedOrigin = null - } - break - case 'same-origin': - // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. - if (!sameOrigin(request, requestCurrentURL(request))) { - serializedOrigin = null - } - break - default: - // Do nothing. - } +module.exports = emphasis +emphasis.locator = locate - if (serializedOrigin) { - // 2. Append (`Origin`, serializedOrigin) to request’s header list. - request.headersList.append('origin', serializedOrigin) - } - } -} +var asterisk = '*' +var underscore = '_' +var backslash = '\\' -function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { - // TODO - return performance.now() -} +function emphasis(eat, value, silent) { + var self = this + var index = 0 + var character = value.charAt(index) + var now + var pedantic + var marker + var queue + var subvalue + var length + var previous -// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info -function createOpaqueTimingInfo (timingInfo) { - return { - startTime: timingInfo.startTime ?? 0, - redirectStartTime: 0, - redirectEndTime: 0, - postRedirectStartTime: timingInfo.startTime ?? 0, - finalServiceWorkerStartTime: 0, - finalNetworkResponseStartTime: 0, - finalNetworkRequestStartTime: 0, - endTime: 0, - encodedBodySize: 0, - decodedBodySize: 0, - finalConnectionTimingInfo: null + if (character !== asterisk && character !== underscore) { + return } -} -// https://html.spec.whatwg.org/multipage/origin.html#policy-container -function makePolicyContainer () { - // Note: the fetch spec doesn't make use of embedder policy or CSP list - return { - referrerPolicy: 'strict-origin-when-cross-origin' - } -} + pedantic = self.options.pedantic + subvalue = character + marker = character + length = value.length + index++ + queue = '' + character = '' -// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container -function clonePolicyContainer (policyContainer) { - return { - referrerPolicy: policyContainer.referrerPolicy + if (pedantic && whitespace(value.charAt(index))) { + return } -} -// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer -function determineRequestsReferrer (request) { - // 1. Let policy be request's referrer policy. - const policy = request.referrerPolicy + while (index < length) { + previous = character + character = value.charAt(index) - // Note: policy cannot (shouldn't) be null or an empty string. - assert(policy) + if (character === marker && (!pedantic || !whitespace(previous))) { + character = value.charAt(++index) - // 2. Let environment be request’s client. + if (character !== marker) { + if (!trim(queue) || previous === marker) { + return + } - let referrerSource = null + if (!pedantic && marker === underscore && word(character)) { + queue += marker + continue + } - // 3. Switch on request’s referrer: - if (request.referrer === 'client') { - // Note: node isn't a browser and doesn't implement document/iframes, - // so we bypass this step and replace it with our own. + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } - const globalOrigin = getGlobalOrigin() + now = eat.now() + now.column++ + now.offset++ - if (!globalOrigin || globalOrigin.origin === 'null') { - return 'no-referrer' + return eat(subvalue + queue + marker)({ + type: 'emphasis', + children: self.tokenizeInline(queue, now) + }) + } + + queue += marker } - // note: we need to clone it as it's mutated - referrerSource = new URL(globalOrigin) - } else if (request.referrer instanceof URL) { - // Let referrerSource be request’s referrer. - referrerSource = request.referrer + if (!pedantic && character === backslash) { + queue += character + character = value.charAt(++index) + } + + queue += character + index++ } +} - // 4. Let request’s referrerURL be the result of stripping referrerSource for - // use as a referrer. - let referrerURL = stripURLForReferrer(referrerSource) - // 5. Let referrerOrigin be the result of stripping referrerSource for use as - // a referrer, with the origin-only flag set to true. - const referrerOrigin = stripURLForReferrer(referrerSource, true) +/***/ }), - // 6. If the result of serializing referrerURL is a string whose length is - // greater than 4096, set referrerURL to referrerOrigin. - if (referrerURL.toString().length > 4096) { - referrerURL = referrerOrigin - } +/***/ 31943: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const areSameOrigin = sameOrigin(request, referrerURL) - const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && - !isURLPotentiallyTrustworthy(request.url) +"use strict"; - // 8. Execute the switch statements corresponding to the value of policy: - switch (policy) { - case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true) - case 'unsafe-url': return referrerURL - case 'same-origin': - return areSameOrigin ? referrerOrigin : 'no-referrer' - case 'origin-when-cross-origin': - return areSameOrigin ? referrerURL : referrerOrigin - case 'strict-origin-when-cross-origin': { - const currentURL = requestCurrentURL(request) - // 1. If the origin of referrerURL and the origin of request’s current - // URL are the same, then return referrerURL. - if (sameOrigin(referrerURL, currentURL)) { - return referrerURL +var locate = __nccwpck_require__(84330) + +module.exports = escape +escape.locator = locate + +var lineFeed = '\n' +var backslash = '\\' + +function escape(eat, value, silent) { + var self = this + var character + var node + + if (value.charAt(0) === backslash) { + character = value.charAt(1) + + if (self.escape.indexOf(character) !== -1) { + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true } - // 2. If referrerURL is a potentially trustworthy URL and request’s - // current URL is not a potentially trustworthy URL, then return no - // referrer. - if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { - return 'no-referrer' + if (character === lineFeed) { + node = {type: 'break'} + } else { + node = {type: 'text', value: character} } - // 3. Return referrerOrigin. - return referrerOrigin + return eat(backslash + character)(node) } - case 'strict-origin': // eslint-disable-line - /** - * 1. If referrerURL is a potentially trustworthy URL and - * request’s current URL is not a potentially trustworthy URL, - * then return no referrer. - * 2. Return referrerOrigin - */ - case 'no-referrer-when-downgrade': // eslint-disable-line - /** - * 1. If referrerURL is a potentially trustworthy URL and - * request’s current URL is not a potentially trustworthy URL, - * then return no referrer. - * 2. Return referrerOrigin - */ - - default: // eslint-disable-line - return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin } } -/** - * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url - * @param {URL} url - * @param {boolean|undefined} originOnly - */ -function stripURLForReferrer (url, originOnly) { - // 1. Assert: url is a URL. - assert(url instanceof URL) - - // 2. If url’s scheme is a local scheme, then return no referrer. - if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { - return 'no-referrer' - } - // 3. Set url’s username to the empty string. - url.username = '' +/***/ }), - // 4. Set url’s password to the empty string. - url.password = '' +/***/ 50542: +/***/ ((module) => { - // 5. Set url’s fragment to null. - url.hash = '' +"use strict"; - // 6. If the origin-only flag is true, then: - if (originOnly) { - // 1. Set url’s path to « the empty string ». - url.pathname = '' - // 2. Set url’s query to null. - url.search = '' - } +module.exports = atxHeading - // 7. Return url. - return url -} +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var numberSign = '#' -function isURLPotentiallyTrustworthy (url) { - if (!(url instanceof URL)) { - return false - } +var maxFenceCount = 6 - // If child of about, return true - if (url.href === 'about:blank' || url.href === 'about:srcdoc') { - return true - } +function atxHeading(eat, value, silent) { + var self = this + var pedantic = self.options.pedantic + var length = value.length + 1 + var index = -1 + var now = eat.now() + var subvalue = '' + var content = '' + var character + var queue + var depth - // If scheme is data, return true - if (url.protocol === 'data:') return true + // Eat initial spacing. + while (++index < length) { + character = value.charAt(index) - // If file, return true - if (url.protocol === 'file:') return true + if (character !== space && character !== tab) { + index-- + break + } - return isOriginPotentiallyTrustworthy(url.origin) + subvalue += character + } - function isOriginPotentiallyTrustworthy (origin) { - // If origin is explicitly null, return false - if (origin == null || origin === 'null') return false + // Eat hashes. + depth = 0 - const originAsURL = new URL(origin) + while (++index <= length) { + character = value.charAt(index) - // If secure, return true - if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { - return true + if (character !== numberSign) { + index-- + break } - // If localhost or variants, return true - if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || - (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) || - (originAsURL.hostname.endsWith('.localhost'))) { - return true - } + subvalue += character + depth++ + } - // If any other, return false - return false + if (depth > maxFenceCount) { + return } -} -/** - * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist - * @param {Uint8Array} bytes - * @param {string} metadataList - */ -function bytesMatch (bytes, metadataList) { - // If node is not built with OpenSSL support, we cannot check - // a request's integrity, so allow it by default (the spec will - // allow requests if an invalid hash is given, as precedence). - /* istanbul ignore if: only if node is built with --without-ssl */ - if (crypto === undefined) { - return true + if (!depth || (!pedantic && value.charAt(index + 1) === numberSign)) { + return } - // 1. Let parsedMetadata be the result of parsing metadataList. - const parsedMetadata = parseMetadata(metadataList) + length = value.length + 1 - // 2. If parsedMetadata is no metadata, return true. - if (parsedMetadata === 'no metadata') { - return true + // Eat intermediate white-space. + queue = '' + + while (++index < length) { + character = value.charAt(index) + + if (character !== space && character !== tab) { + index-- + break + } + + queue += character } - // 3. If response is not eligible for integrity validation, return false. - // TODO + // Exit when not in pedantic mode without spacing. + if (!pedantic && queue.length === 0 && character && character !== lineFeed) { + return + } - // 4. If parsedMetadata is the empty set, return true. - if (parsedMetadata.length === 0) { + if (silent) { return true } - // 5. Let metadata be the result of getting the strongest - // metadata from parsedMetadata. - const strongest = getStrongestMetadata(parsedMetadata) - const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) + // Eat content. + subvalue += queue + queue = '' + content = '' - // 6. For each item in metadata: - for (const item of metadata) { - // 1. Let algorithm be the alg component of item. - const algorithm = item.algo + while (++index < length) { + character = value.charAt(index) - // 2. Let expectedValue be the val component of item. - const expectedValue = item.hash + if (!character || character === lineFeed) { + break + } - // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e - // "be liberal with padding". This is annoying, and it's not even in the spec. + if (character !== space && character !== tab && character !== numberSign) { + content += queue + character + queue = '' + continue + } - // 3. Let actualValue be the result of applying algorithm to bytes. - let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') + while (character === space || character === tab) { + queue += character + character = value.charAt(++index) + } - if (actualValue[actualValue.length - 1] === '=') { - if (actualValue[actualValue.length - 2] === '=') { - actualValue = actualValue.slice(0, -2) - } else { - actualValue = actualValue.slice(0, -1) - } + // `#` without a queue is part of the content. + if (!pedantic && content && !queue && character === numberSign) { + content += character + continue } - // 4. If actualValue is a case-sensitive match for expectedValue, - // return true. - if (compareBase64Mixed(actualValue, expectedValue)) { - return true + while (character === numberSign) { + queue += character + character = value.charAt(++index) + } + + while (character === space || character === tab) { + queue += character + character = value.charAt(++index) } + + index-- } - // 7. Return false. - return false + now.column += subvalue.length + now.offset += subvalue.length + subvalue += content + queue + + return eat(subvalue)({ + type: 'heading', + depth: depth, + children: self.tokenizeInline(content, now) + }) } -// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options -// https://www.w3.org/TR/CSP2/#source-list-syntax -// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 -const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i -/** - * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata - * @param {string} metadata - */ -function parseMetadata (metadata) { - // 1. Let result be the empty set. - /** @type {{ algo: string, hash: string }[]} */ - const result = [] +/***/ }), - // 2. Let empty be equal to true. - let empty = true +/***/ 87106: +/***/ ((module) => { - // 3. For each token returned by splitting metadata on spaces: - for (const token of metadata.split(' ')) { - // 1. Set empty to false. - empty = false +"use strict"; - // 2. Parse token as a hash-with-options. - const parsedToken = parseHashWithOptions.exec(token) - // 3. If token does not parse, continue to the next token. - if ( - parsedToken === null || - parsedToken.groups === undefined || - parsedToken.groups.algo === undefined - ) { - // Note: Chromium blocks the request at this point, but Firefox - // gives a warning that an invalid integrity was given. The - // correct behavior is to ignore these, and subsequently not - // check the integrity of the resource. - continue - } +module.exports = setextHeading - // 4. Let algorithm be the hash-algo component of token. - const algorithm = parsedToken.groups.algo.toLowerCase() +var lineFeed = '\n' +var tab = '\t' +var space = ' ' +var equalsTo = '=' +var dash = '-' - // 5. If algorithm is a hash function recognized by the user - // agent, add the parsed token to result. - if (supportedHashes.includes(algorithm)) { - result.push(parsedToken.groups) +var maxIndent = 3 + +var equalsToDepth = 1 +var dashDepth = 2 + +function setextHeading(eat, value, silent) { + var self = this + var now = eat.now() + var length = value.length + var index = -1 + var subvalue = '' + var content + var queue + var character + var marker + var depth + + // Eat initial indentation. + while (++index < length) { + character = value.charAt(index) + + if (character !== space || index >= maxIndent) { + index-- + break } - } - // 4. Return no metadata if empty is true, otherwise return result. - if (empty === true) { - return 'no metadata' + subvalue += character } - return result -} + // Eat content. + content = '' + queue = '' -/** - * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList - */ -function getStrongestMetadata (metadataList) { - // Let algorithm be the algo component of the first item in metadataList. - // Can be sha256 - let algorithm = metadataList[0].algo - // If the algorithm is sha512, then it is the strongest - // and we can return immediately - if (algorithm[3] === '5') { - return algorithm - } + while (++index < length) { + character = value.charAt(index) - for (let i = 1; i < metadataList.length; ++i) { - const metadata = metadataList[i] - // If the algorithm is sha512, then it is the strongest - // and we can break the loop immediately - if (metadata.algo[3] === '5') { - algorithm = 'sha512' + if (character === lineFeed) { + index-- break - // If the algorithm is sha384, then a potential sha256 or sha384 is ignored - } else if (algorithm[3] === '3') { - continue - // algorithm is sha256, check if algorithm is sha384 and if so, set it as - // the strongest - } else if (metadata.algo[3] === '3') { - algorithm = 'sha384' } - } - return algorithm -} - -function filterMetadataListByAlgorithm (metadataList, algorithm) { - if (metadataList.length === 1) { - return metadataList - } - let pos = 0 - for (let i = 0; i < metadataList.length; ++i) { - if (metadataList[i].algo === algorithm) { - metadataList[pos++] = metadataList[i] + if (character === space || character === tab) { + queue += character + } else { + content += queue + character + queue = '' } } - metadataList.length = pos + now.column += subvalue.length + now.offset += subvalue.length + subvalue += content + queue - return metadataList -} + // Ensure the content is followed by a newline and a valid marker. + character = value.charAt(++index) + marker = value.charAt(++index) -/** - * Compares two base64 strings, allowing for base64url - * in the second string. - * -* @param {string} actualValue always base64 - * @param {string} expectedValue base64 or base64url - * @returns {boolean} - */ -function compareBase64Mixed (actualValue, expectedValue) { - if (actualValue.length !== expectedValue.length) { - return false - } - for (let i = 0; i < actualValue.length; ++i) { - if (actualValue[i] !== expectedValue[i]) { - if ( - (actualValue[i] === '+' && expectedValue[i] === '-') || - (actualValue[i] === '/' && expectedValue[i] === '_') - ) { - continue - } - return false - } + if (character !== lineFeed || (marker !== equalsTo && marker !== dash)) { + return } - return true -} + subvalue += character -// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request -function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { - // TODO -} + // Eat Setext-line. + queue = marker + depth = marker === equalsTo ? equalsToDepth : dashDepth -/** - * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} - * @param {URL} A - * @param {URL} B - */ -function sameOrigin (A, B) { - // 1. If A and B are the same opaque origin, then return true. - if (A.origin === B.origin && A.origin === 'null') { - return true + while (++index < length) { + character = value.charAt(index) + + if (character !== marker) { + if (character !== lineFeed) { + return + } + + index-- + break + } + + queue += character } - // 2. If A and B are both tuple origins and their schemes, - // hosts, and port are identical, then return true. - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + if (silent) { return true } - // 3. Return false. - return false + return eat(subvalue + queue)({ + type: 'heading', + depth: depth, + children: self.tokenizeInline(content, now) + }) } -function createDeferredPromise () { - let res - let rej - const promise = new Promise((resolve, reject) => { - res = resolve - rej = reject - }) - return { promise, resolve: res, reject: rej } -} +/***/ }), -function isAborted (fetchParams) { - return fetchParams.controller.state === 'aborted' -} +/***/ 68725: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function isCancelled (fetchParams) { - return fetchParams.controller.state === 'aborted' || - fetchParams.controller.state === 'terminated' -} +"use strict"; -const normalizeMethodRecord = { - delete: 'DELETE', - DELETE: 'DELETE', - get: 'GET', - GET: 'GET', - head: 'HEAD', - HEAD: 'HEAD', - options: 'OPTIONS', - OPTIONS: 'OPTIONS', - post: 'POST', - POST: 'POST', - put: 'PUT', - PUT: 'PUT' -} -// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. -Object.setPrototypeOf(normalizeMethodRecord, null) +var openCloseTag = (__nccwpck_require__(76774)/* .openCloseTag */ .X) + +module.exports = blockHtml + +var tab = '\t' +var space = ' ' +var lineFeed = '\n' +var lessThan = '<' + +var rawOpenExpression = /^<(script|pre|style)(?=(\s|>|$))/i +var rawCloseExpression = /<\/(script|pre|style)>/i +var commentOpenExpression = /^<!--/ +var commentCloseExpression = /-->/ +var instructionOpenExpression = /^<\?/ +var instructionCloseExpression = /\?>/ +var directiveOpenExpression = /^<![A-Za-z]/ +var directiveCloseExpression = />/ +var cdataOpenExpression = /^<!\[CDATA\[/ +var cdataCloseExpression = /]]>/ +var elementCloseExpression = /^$/ +var otherElementOpenExpression = new RegExp(openCloseTag.source + '\\s*$') + +function blockHtml(eat, value, silent) { + var self = this + var blocks = self.options.blocks.join('|') + var elementOpenExpression = new RegExp( + '^</?(' + blocks + ')(?=(\\s|/?>|$))', + 'i' + ) + var length = value.length + var index = 0 + var next + var line + var offset + var character + var count + var sequence + var subvalue + + var sequences = [ + [rawOpenExpression, rawCloseExpression, true], + [commentOpenExpression, commentCloseExpression, true], + [instructionOpenExpression, instructionCloseExpression, true], + [directiveOpenExpression, directiveCloseExpression, true], + [cdataOpenExpression, cdataCloseExpression, true], + [elementOpenExpression, elementCloseExpression, true], + [otherElementOpenExpression, elementCloseExpression, false] + ] -/** - * @see https://fetch.spec.whatwg.org/#concept-method-normalize - * @param {string} method - */ -function normalizeMethod (method) { - return normalizeMethodRecord[method.toLowerCase()] ?? method -} + // Eat initial spacing. + while (index < length) { + character = value.charAt(index) -// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string -function serializeJavascriptValueToJSONString (value) { - // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). - const result = JSON.stringify(value) + if (character !== tab && character !== space) { + break + } - // 2. If result is undefined, then throw a TypeError. - if (result === undefined) { - throw new TypeError('Value is not JSON serializable') + index++ } - // 3. Assert: result is a string. - assert(typeof result === 'string') + if (value.charAt(index) !== lessThan) { + return + } - // 4. Return result. - return result -} + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index, next) + offset = -1 + count = sequences.length -// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object -const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + while (++offset < count) { + if (sequences[offset][0].test(line)) { + sequence = sequences[offset] + break + } + } -/** - * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object - * @param {() => unknown[]} iterator - * @param {string} name name of the instance - * @param {'key'|'value'|'key+value'} kind - */ -function makeIterator (iterator, name, kind) { - const object = { - index: 0, - kind, - target: iterator + if (!sequence) { + return } - const i = { - next () { - // 1. Let interface be the interface for which the iterator prototype object exists. + if (silent) { + return sequence[2] + } - // 2. Let thisValue be the this value. + index = next - // 3. Let object be ? ToObject(thisValue). + if (!sequence[1].test(line)) { + while (index < length) { + next = value.indexOf(lineFeed, index + 1) + next = next === -1 ? length : next + line = value.slice(index + 1, next) - // 4. If object is a platform object, then perform a security - // check, passing: + if (sequence[1].test(line)) { + if (line) { + index = next + } - // 5. If object is not a default iterator object for interface, - // then throw a TypeError. - if (Object.getPrototypeOf(this) !== i) { - throw new TypeError( - `'next' called on an object that does not implement interface ${name} Iterator.` - ) + break } - // 6. Let index be object’s index. - // 7. Let kind be object’s kind. - // 8. Let values be object’s target's value pairs to iterate over. - const { index, kind, target } = object - const values = target() + index = next + } + } - // 9. Let len be the length of values. - const len = values.length + subvalue = value.slice(0, index) - // 10. If index is greater than or equal to len, then return - // CreateIterResultObject(undefined, true). - if (index >= len) { - return { value: undefined, done: true } - } + return eat(subvalue)({type: 'html', value: subvalue}) +} - // 11. Let pair be the entry in values at index index. - const pair = values[index] - // 12. Set object’s index to index + 1. - object.index = index + 1 +/***/ }), - // 13. Return the iterator result for pair and kind. - return iteratorResult(pair, kind) - }, - // The class string of an iterator prototype object for a given interface is the - // result of concatenating the identifier of the interface and the string " Iterator". - [Symbol.toStringTag]: `${name} Iterator` - } +/***/ 29923: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. - Object.setPrototypeOf(i, esIteratorPrototype) - // esIteratorPrototype needs to be the prototype of i - // which is the prototype of an empty object. Yes, it's confusing. - return Object.setPrototypeOf({}, i) -} +"use strict"; -// https://webidl.spec.whatwg.org/#iterator-result -function iteratorResult (pair, kind) { - let result - // 1. Let result be a value determined by the value of kind: - switch (kind) { - case 'key': { - // 1. Let idlKey be pair’s key. - // 2. Let key be the result of converting idlKey to an - // ECMAScript value. - // 3. result is key. - result = pair[0] - break - } - case 'value': { - // 1. Let idlValue be pair’s value. - // 2. Let value be the result of converting idlValue to - // an ECMAScript value. - // 3. result is value. - result = pair[1] - break - } - case 'key+value': { - // 1. Let idlKey be pair’s key. - // 2. Let idlValue be pair’s value. - // 3. Let key be the result of converting idlKey to an - // ECMAScript value. - // 4. Let value be the result of converting idlValue to - // an ECMAScript value. - // 5. Let array be ! ArrayCreate(2). - // 6. Call ! CreateDataProperty(array, "0", key). - // 7. Call ! CreateDataProperty(array, "1", value). - // 8. result is array. - result = pair - break - } - } +var alphabetical = __nccwpck_require__(59201) +var locate = __nccwpck_require__(4225) +var tag = (__nccwpck_require__(76774)/* .tag */ .T) - // 2. Return CreateIterResultObject(result, false). - return { value: result, done: false } -} +module.exports = inlineHTML +inlineHTML.locator = locate -/** - * @see https://fetch.spec.whatwg.org/#body-fully-read - */ -async function fullyReadBody (body, processBody, processBodyError) { - // 1. If taskDestination is null, then set taskDestination to - // the result of starting a new parallel queue. +var lessThan = '<' +var questionMark = '?' +var exclamationMark = '!' +var slash = '/' - // 2. Let successSteps given a byte sequence bytes be to queue a - // fetch task to run processBody given bytes, with taskDestination. - const successSteps = processBody +var htmlLinkOpenExpression = /^<a /i +var htmlLinkCloseExpression = /^<\/a>/i - // 3. Let errorSteps be to queue a fetch task to run processBodyError, - // with taskDestination. - const errorSteps = processBodyError +function inlineHTML(eat, value, silent) { + var self = this + var length = value.length + var character + var subvalue - // 4. Let reader be the result of getting a reader for body’s stream. - // If that threw an exception, then run errorSteps with that - // exception and return. - let reader + if (value.charAt(0) !== lessThan || length < 3) { + return + } - try { - reader = body.stream.getReader() - } catch (e) { - errorSteps(e) + character = value.charAt(1) + + if ( + !alphabetical(character) && + character !== questionMark && + character !== exclamationMark && + character !== slash + ) { return } - // 5. Read all bytes from reader, given successSteps and errorSteps. - try { - const result = await readAllBytes(reader) - successSteps(result) - } catch (e) { - errorSteps(e) + subvalue = value.match(tag) + + if (!subvalue) { + return } -} -/** @type {ReadableStream} */ -let ReadableStream = globalThis.ReadableStream + /* istanbul ignore if - not used yet. */ + if (silent) { + return true + } -function isReadableStreamLike (stream) { - if (!ReadableStream) { - ReadableStream = (__nccwpck_require__(3774).ReadableStream) + subvalue = subvalue[0] + + if (!self.inLink && htmlLinkOpenExpression.test(subvalue)) { + self.inLink = true + } else if (self.inLink && htmlLinkCloseExpression.test(subvalue)) { + self.inLink = false } - return stream instanceof ReadableStream || ( - stream[Symbol.toStringTag] === 'ReadableStream' && - typeof stream.tee === 'function' - ) + return eat(subvalue)({type: 'html', value: subvalue}) } -const MAXIMUM_ARGUMENT_LENGTH = 65535 -/** - * @see https://infra.spec.whatwg.org/#isomorphic-decode - * @param {number[]|Uint8Array} input - */ -function isomorphicDecode (input) { - // 1. To isomorphic decode a byte sequence input, return a string whose code point - // length is equal to input’s length and whose code points have the same values - // as the values of input’s bytes, in the same order. +/***/ }), - if (input.length < MAXIMUM_ARGUMENT_LENGTH) { - return String.fromCharCode(...input) - } +/***/ 22144: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return input.reduce((previous, current) => previous + String.fromCharCode(current), '') -} +"use strict"; -/** - * @param {ReadableStreamController<Uint8Array>} controller - */ -function readableStreamClose (controller) { - try { - controller.close() - } catch (err) { - // TODO: add comment explaining why this error occurs. - if (!err.message.includes('Controller is already closed')) { - throw err - } + +var whitespace = __nccwpck_require__(96472) +var locate = __nccwpck_require__(8241) + +module.exports = link +link.locator = locate + +var lineFeed = '\n' +var exclamationMark = '!' +var quotationMark = '"' +var apostrophe = "'" +var leftParenthesis = '(' +var rightParenthesis = ')' +var lessThan = '<' +var greaterThan = '>' +var leftSquareBracket = '[' +var backslash = '\\' +var rightSquareBracket = ']' +var graveAccent = '`' + +function link(eat, value, silent) { + var self = this + var subvalue = '' + var index = 0 + var character = value.charAt(0) + var pedantic = self.options.pedantic + var commonmark = self.options.commonmark + var gfm = self.options.gfm + var closed + var count + var opening + var beforeURL + var beforeTitle + var subqueue + var hasMarker + var isImage + var content + var marker + var length + var title + var depth + var queue + var url + var now + var exit + var node + + // Detect whether this is an image. + if (character === exclamationMark) { + isImage = true + subvalue = character + character = value.charAt(++index) + } + + // Eat the opening. + if (character !== leftSquareBracket) { + return } -} -/** - * @see https://infra.spec.whatwg.org/#isomorphic-encode - * @param {string} input - */ -function isomorphicEncode (input) { - // 1. Assert: input contains no code points greater than U+00FF. - for (let i = 0; i < input.length; i++) { - assert(input.charCodeAt(i) <= 0xFF) + // Exit when this is a link and we’re already inside a link. + if (!isImage && self.inLink) { + return } - // 2. Return a byte sequence whose length is equal to input’s code - // point length and whose bytes have the same values as the - // values of input’s code points, in the same order - return input -} + subvalue += character + queue = '' + index++ -/** - * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes - * @see https://streams.spec.whatwg.org/#read-loop - * @param {ReadableStreamDefaultReader} reader - */ -async function readAllBytes (reader) { - const bytes = [] - let byteLength = 0 + // Eat the content. + length = value.length + now = eat.now() + depth = 0 - while (true) { - const { done, value: chunk } = await reader.read() + now.column += index + now.offset += index - if (done) { - // 1. Call successSteps with bytes. - return Buffer.concat(bytes, byteLength) - } + while (index < length) { + character = value.charAt(index) + subqueue = character - // 1. If chunk is not a Uint8Array object, call failureSteps - // with a TypeError and abort these steps. - if (!isUint8Array(chunk)) { - throw new TypeError('Received non-Uint8Array chunk') + if (character === graveAccent) { + // Inline-code in link content. + count = 1 + + while (value.charAt(index + 1) === graveAccent) { + subqueue += character + index++ + count++ + } + + if (!opening) { + opening = count + } else if (count >= opening) { + opening = 0 + } + } else if (character === backslash) { + // Allow brackets to be escaped. + index++ + subqueue += value.charAt(index) + } else if ((!opening || gfm) && character === leftSquareBracket) { + // In GFM mode, brackets in code still count. In all other modes, + // they don’t. + depth++ + } else if ((!opening || gfm) && character === rightSquareBracket) { + if (depth) { + depth-- + } else { + if (value.charAt(index + 1) !== leftParenthesis) { + return + } + + subqueue += leftParenthesis + closed = true + index++ + + break + } } - // 2. Append the bytes represented by chunk to bytes. - bytes.push(chunk) - byteLength += chunk.length + queue += subqueue + subqueue = '' + index++ + } - // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + // Eat the content closing. + if (!closed) { + return } -} -/** - * @see https://fetch.spec.whatwg.org/#is-local - * @param {URL} url - */ -function urlIsLocal (url) { - assert('protocol' in url) // ensure it's a url object + content = queue + subvalue += queue + subqueue + index++ - const protocol = url.protocol + // Eat white-space. + while (index < length) { + character = value.charAt(index) - return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:' -} + if (!whitespace(character)) { + break + } -/** - * @param {string|URL} url - */ -function urlHasHttpsScheme (url) { - if (typeof url === 'string') { - return url.startsWith('https:') + subvalue += character + index++ } - return url.protocol === 'https:' -} + // Eat the URL. + character = value.charAt(index) + queue = '' + beforeURL = subvalue -/** - * @see https://fetch.spec.whatwg.org/#http-scheme - * @param {URL} url - */ -function urlIsHttpHttpsScheme (url) { - assert('protocol' in url) // ensure it's a url object + if (character === lessThan) { + index++ + beforeURL += lessThan - const protocol = url.protocol + while (index < length) { + character = value.charAt(index) - return protocol === 'http:' || protocol === 'https:' -} + if (character === greaterThan) { + break + } -/** - * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. - */ -const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)) + if (commonmark && character === lineFeed) { + return + } -module.exports = { - isAborted, - isCancelled, - createDeferredPromise, - ReadableStreamFrom, - toUSVString, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - coarsenedSharedCurrentTime, - determineRequestsReferrer, - makePolicyContainer, - clonePolicyContainer, - appendFetchMetadata, - appendRequestOriginHeader, - TAOCheck, - corsCheck, - crossOriginResourcePolicyCheck, - createOpaqueTimingInfo, - setRequestReferrerPolicyOnRedirect, - isValidHTTPToken, - requestBadPort, - requestCurrentURL, - responseURL, - responseLocationURL, - isBlobLike, - isURLPotentiallyTrustworthy, - isValidReasonPhrase, - sameOrigin, - normalizeMethod, - serializeJavascriptValueToJSONString, - makeIterator, - isValidHeaderName, - isValidHeaderValue, - hasOwn, - isErrorLike, - fullyReadBody, - bytesMatch, - isReadableStreamLike, - readableStreamClose, - isomorphicEncode, - isomorphicDecode, - urlIsLocal, - urlHasHttpsScheme, - urlIsHttpHttpsScheme, - readAllBytes, - normalizeMethodRecord, - parseMetadata -} + queue += character + index++ + } + if (value.charAt(index) !== greaterThan) { + return + } -/***/ }), + subvalue += lessThan + queue + greaterThan + url = queue + index++ + } else { + character = null + subqueue = '' -/***/ 4222: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + while (index < length) { + character = value.charAt(index) -"use strict"; + if ( + subqueue && + (character === quotationMark || + character === apostrophe || + (commonmark && character === leftParenthesis)) + ) { + break + } + if (whitespace(character)) { + if (!pedantic) { + break + } -const { types } = __nccwpck_require__(9023) -const { hasOwn, toUSVString } = __nccwpck_require__(5523) + subqueue += character + } else { + if (character === leftParenthesis) { + depth++ + } else if (character === rightParenthesis) { + if (depth === 0) { + break + } -/** @type {import('../../types/webidl').Webidl} */ -const webidl = {} -webidl.converters = {} -webidl.util = {} -webidl.errors = {} + depth-- + } -webidl.errors.exception = function (message) { - return new TypeError(`${message.header}: ${message.message}`) -} + queue += subqueue + subqueue = '' -webidl.errors.conversionFailed = function (context) { - const plural = context.types.length === 1 ? '' : ' one of' - const message = - `${context.argument} could not be converted to` + - `${plural}: ${context.types.join(', ')}.` + if (character === backslash) { + queue += backslash + character = value.charAt(++index) + } - return webidl.errors.exception({ - header: context.prefix, - message - }) -} + queue += character + } -webidl.errors.invalidArgument = function (context) { - return webidl.errors.exception({ - header: context.prefix, - message: `"${context.value}" is an invalid ${context.type}.` - }) -} + index++ + } -// https://webidl.spec.whatwg.org/#implements -webidl.brandCheck = function (V, I, opts = undefined) { - if (opts?.strict !== false && !(V instanceof I)) { - throw new TypeError('Illegal invocation') - } else { - return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag] + subvalue += queue + url = queue + index = subvalue.length } -} -webidl.argumentLengthCheck = function ({ length }, min, ctx) { - if (length < min) { - throw webidl.errors.exception({ - message: `${min} argument${min !== 1 ? 's' : ''} required, ` + - `but${length ? ' only' : ''} ${length} found.`, - ...ctx - }) + // Eat white-space. + queue = '' + + while (index < length) { + character = value.charAt(index) + + if (!whitespace(character)) { + break + } + + queue += character + index++ } -} -webidl.illegalConstructor = function () { - throw webidl.errors.exception({ - header: 'TypeError', - message: 'Illegal constructor' - }) -} + character = value.charAt(index) + subvalue += queue -// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values -webidl.util.Type = function (V) { - switch (typeof V) { - case 'undefined': return 'Undefined' - case 'boolean': return 'Boolean' - case 'string': return 'String' - case 'symbol': return 'Symbol' - case 'number': return 'Number' - case 'bigint': return 'BigInt' - case 'function': - case 'object': { - if (V === null) { - return 'Null' + // Eat the title. + if ( + queue && + (character === quotationMark || + character === apostrophe || + (commonmark && character === leftParenthesis)) + ) { + index++ + subvalue += character + queue = '' + marker = character === leftParenthesis ? rightParenthesis : character + beforeTitle = subvalue + + // In commonmark-mode, things are pretty easy: the marker cannot occur + // inside the title. Non-commonmark does, however, support nested + // delimiters. + if (commonmark) { + while (index < length) { + character = value.charAt(index) + + if (character === marker) { + break + } + + if (character === backslash) { + queue += backslash + character = value.charAt(++index) + } + + index++ + queue += character } - return 'Object' - } - } -} + character = value.charAt(index) -// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint -webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { - let upperBound - let lowerBound + if (character !== marker) { + return + } - // 1. If bitLength is 64, then: - if (bitLength === 64) { - // 1. Let upperBound be 2^53 − 1. - upperBound = Math.pow(2, 53) - 1 + title = queue + subvalue += queue + character + index++ - // 2. If signedness is "unsigned", then let lowerBound be 0. - if (signedness === 'unsigned') { - lowerBound = 0 + while (index < length) { + character = value.charAt(index) + + if (!whitespace(character)) { + break + } + + subvalue += character + index++ + } } else { - // 3. Otherwise let lowerBound be −2^53 + 1. - lowerBound = Math.pow(-2, 53) + 1 - } - } else if (signedness === 'unsigned') { - // 2. Otherwise, if signedness is "unsigned", then: + subqueue = '' - // 1. Let lowerBound be 0. - lowerBound = 0 + while (index < length) { + character = value.charAt(index) - // 2. Let upperBound be 2^bitLength − 1. - upperBound = Math.pow(2, bitLength) - 1 - } else { - // 3. Otherwise: + if (character === marker) { + if (hasMarker) { + queue += marker + subqueue + subqueue = '' + } - // 1. Let lowerBound be -2^bitLength − 1. - lowerBound = Math.pow(-2, bitLength) - 1 + hasMarker = true + } else if (!hasMarker) { + queue += character + } else if (character === rightParenthesis) { + subvalue += queue + marker + subqueue + title = queue + break + } else if (whitespace(character)) { + subqueue += character + } else { + queue += marker + subqueue + character + subqueue = '' + hasMarker = false + } - // 2. Let upperBound be 2^bitLength − 1 − 1. - upperBound = Math.pow(2, bitLength - 1) - 1 + index++ + } + } } - // 4. Let x be ? ToNumber(V). - let x = Number(V) + if (value.charAt(index) !== rightParenthesis) { + return + } - // 5. If x is −0, then set x to +0. - if (x === 0) { - x = 0 + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true } - // 6. If the conversion is to an IDL type associated - // with the [EnforceRange] extended attribute, then: - if (opts.enforceRange === true) { - // 1. If x is NaN, +∞, or −∞, then throw a TypeError. - if ( - Number.isNaN(x) || - x === Number.POSITIVE_INFINITY || - x === Number.NEGATIVE_INFINITY - ) { - throw webidl.errors.exception({ - header: 'Integer conversion', - message: `Could not convert ${V} to an integer.` - }) - } + subvalue += rightParenthesis - // 2. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x) + url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, { + nonTerminated: false + }) - // 3. If x < lowerBound or x > upperBound, then - // throw a TypeError. - if (x < lowerBound || x > upperBound) { - throw webidl.errors.exception({ - header: 'Integer conversion', - message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` - }) - } + if (title) { + beforeTitle = eat(beforeTitle).test().end + title = self.decode.raw(self.unescape(title), beforeTitle) + } - // 4. Return x. - return x + node = { + type: isImage ? 'image' : 'link', + title: title || null, + url: url } - // 7. If x is not NaN and the conversion is to an IDL - // type associated with the [Clamp] extended - // attribute, then: - if (!Number.isNaN(x) && opts.clamp === true) { - // 1. Set x to min(max(x, lowerBound), upperBound). - x = Math.min(Math.max(x, lowerBound), upperBound) + if (isImage) { + node.alt = self.decode.raw(self.unescape(content), now) || null + } else { + exit = self.enterLink() + node.children = self.tokenizeInline(content, now) + exit() + } - // 2. Round x to the nearest integer, choosing the - // even integer if it lies halfway between two, - // and choosing +0 rather than −0. - if (Math.floor(x) % 2 === 0) { - x = Math.floor(x) - } else { - x = Math.ceil(x) - } + return eat(subvalue)(node) +} - // 3. Return x. - return x - } - // 8. If x is NaN, +0, +∞, or −∞, then return +0. - if ( - Number.isNaN(x) || - (x === 0 && Object.is(0, x)) || - x === Number.POSITIVE_INFINITY || - x === Number.NEGATIVE_INFINITY - ) { - return 0 - } +/***/ }), - // 9. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x) +/***/ 30460: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 10. Set x to x modulo 2^bitLength. - x = x % Math.pow(2, bitLength) +"use strict"; - // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, - // then return x − 2^bitLength. - if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { - return x - Math.pow(2, bitLength) + +var trim = __nccwpck_require__(15464) +var repeat = __nccwpck_require__(40471) +var decimal = __nccwpck_require__(96734) +var getIndent = __nccwpck_require__(19245) +var removeIndent = __nccwpck_require__(39729) +var interrupt = __nccwpck_require__(93808) + +module.exports = list + +var asterisk = '*' +var underscore = '_' +var plusSign = '+' +var dash = '-' +var dot = '.' +var space = ' ' +var lineFeed = '\n' +var tab = '\t' +var rightParenthesis = ')' +var lowercaseX = 'x' + +var tabSize = 4 +var looseListItemExpression = /\n\n(?!\s*$)/ +var taskItemExpression = /^\[([ X\tx])][ \t]/ +var bulletExpression = /^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/ +var pedanticBulletExpression = /^([ \t]*)([*+-]|\d+[.)])([ \t]+)/ +var initialIndentExpression = /^( {1,4}|\t)?/gm + +function list(eat, value, silent) { + var self = this + var commonmark = self.options.commonmark + var pedantic = self.options.pedantic + var tokenizers = self.blockTokenizers + var interuptors = self.interruptList + var index = 0 + var length = value.length + var start = null + var size + var queue + var ordered + var character + var marker + var nextIndex + var startIndex + var prefixed + var currentMarker + var content + var line + var previousEmpty + var empty + var items + var allLines + var emptyLines + var item + var enterTop + var exitBlockquote + var spread = false + var node + var now + var end + var indented + + while (index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break + } + + index++ } - // 12. Otherwise, return x. - return x -} + character = value.charAt(index) -// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart -webidl.util.IntegerPart = function (n) { - // 1. Let r be floor(abs(n)). - const r = Math.floor(Math.abs(n)) + if (character === asterisk || character === plusSign || character === dash) { + marker = character + ordered = false + } else { + ordered = true + queue = '' - // 2. If n < 0, then return -1 × r. - if (n < 0) { - return -1 * r - } + while (index < length) { + character = value.charAt(index) - // 3. Otherwise, return r. - return r -} + if (!decimal(character)) { + break + } -// https://webidl.spec.whatwg.org/#es-sequence -webidl.sequenceConverter = function (converter) { - return (V) => { - // 1. If Type(V) is not Object, throw a TypeError. - if (webidl.util.Type(V) !== 'Object') { - throw webidl.errors.exception({ - header: 'Sequence', - message: `Value of type ${webidl.util.Type(V)} is not an Object.` - }) + queue += character + index++ } - // 2. Let method be ? GetMethod(V, @@iterator). - /** @type {Generator} */ - const method = V?.[Symbol.iterator]?.() - const seq = [] + character = value.charAt(index) - // 3. If method is undefined, throw a TypeError. if ( - method === undefined || - typeof method.next !== 'function' + !queue || + !(character === dot || (commonmark && character === rightParenthesis)) ) { - throw webidl.errors.exception({ - header: 'Sequence', - message: 'Object is not an iterator.' - }) + return } - // https://webidl.spec.whatwg.org/#create-sequence-from-iterable - while (true) { - const { done, value } = method.next() + /* Slightly abusing `silent` mode, whose goal is to make interrupting + * paragraphs work. + * Well, that’s exactly what we want to do here: don’t interrupt: + * 2. here, because the “list” doesn’t start with `1`. */ + if (silent && queue !== '1') { + return + } - if (done) { - break - } + start = parseInt(queue, 10) + marker = character + } - seq.push(converter(value)) - } + character = value.charAt(++index) - return seq + if ( + character !== space && + character !== tab && + (pedantic || (character !== lineFeed && character !== '')) + ) { + return } -} -// https://webidl.spec.whatwg.org/#es-to-record -webidl.recordConverter = function (keyConverter, valueConverter) { - return (O) => { - // 1. If Type(O) is not Object, throw a TypeError. - if (webidl.util.Type(O) !== 'Object') { - throw webidl.errors.exception({ - header: 'Record', - message: `Value of type ${webidl.util.Type(O)} is not an Object.` - }) - } + if (silent) { + return true + } - // 2. Let result be a new empty instance of record<K, V>. - const result = {} + index = 0 + items = [] + allLines = [] + emptyLines = [] - if (!types.isProxy(O)) { - // Object.keys only returns enumerable properties - const keys = Object.keys(O) + while (index < length) { + nextIndex = value.indexOf(lineFeed, index) + startIndex = index + prefixed = false + indented = false - for (const key of keys) { - // 1. Let typedKey be key converted to an IDL value of type K. - const typedKey = keyConverter(key) + if (nextIndex === -1) { + nextIndex = length + } - // 2. Let value be ? Get(O, key). - // 3. Let typedValue be value converted to an IDL value of type V. - const typedValue = valueConverter(O[key]) + size = 0 - // 4. Set result[typedKey] to typedValue. - result[typedKey] = typedValue + while (index < length) { + character = value.charAt(index) + + if (character === tab) { + size += tabSize - (size % tabSize) + } else if (character === space) { + size++ + } else { + break } - // 5. Return result. - return result + index++ } - // 3. Let keys be ? O.[[OwnPropertyKeys]](). - const keys = Reflect.ownKeys(O) + if (item && size >= item.indent) { + indented = true + } - // 4. For each key of keys. - for (const key of keys) { - // 1. Let desc be ? O.[[GetOwnProperty]](key). - const desc = Reflect.getOwnPropertyDescriptor(O, key) + character = value.charAt(index) + currentMarker = null - // 2. If desc is not undefined and desc.[[Enumerable]] is true: - if (desc?.enumerable) { - // 1. Let typedKey be key converted to an IDL value of type K. - const typedKey = keyConverter(key) + if (!indented) { + if ( + character === asterisk || + character === plusSign || + character === dash + ) { + currentMarker = character + index++ + size++ + } else { + queue = '' - // 2. Let value be ? Get(O, key). - // 3. Let typedValue be value converted to an IDL value of type V. - const typedValue = valueConverter(O[key]) + while (index < length) { + character = value.charAt(index) - // 4. Set result[typedKey] to typedValue. - result[typedKey] = typedValue + if (!decimal(character)) { + break + } + + queue += character + index++ + } + + character = value.charAt(index) + index++ + + if ( + queue && + (character === dot || (commonmark && character === rightParenthesis)) + ) { + currentMarker = character + size += queue.length + 1 + } } - } - // 5. Return result. - return result - } -} + if (currentMarker) { + character = value.charAt(index) -webidl.interfaceConverter = function (i) { - return (V, opts = {}) => { - if (opts.strict !== false && !(V instanceof i)) { - throw webidl.errors.exception({ - header: i.name, - message: `Expected ${V} to be an instance of ${i.name}.` - }) + if (character === tab) { + size += tabSize - (size % tabSize) + index++ + } else if (character === space) { + end = index + tabSize + + while (index < end) { + if (value.charAt(index) !== space) { + break + } + + index++ + size++ + } + + if (index === end && value.charAt(index) === space) { + index -= tabSize - 1 + size -= tabSize - 1 + } + } else if (character !== lineFeed && character !== '') { + currentMarker = null + } + } } - return V - } -} + if (currentMarker) { + if (!pedantic && marker !== currentMarker) { + break + } -webidl.dictionaryConverter = function (converters) { - return (dictionary) => { - const type = webidl.util.Type(dictionary) - const dict = {} + prefixed = true + } else { + if (!commonmark && !indented && value.charAt(startIndex) === space) { + indented = true + } else if (commonmark && item) { + indented = size >= item.indent || size > tabSize + } - if (type === 'Null' || type === 'Undefined') { - return dict - } else if (type !== 'Object') { - throw webidl.errors.exception({ - header: 'Dictionary', - message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` - }) + prefixed = false + index = startIndex } - for (const options of converters) { - const { key, defaultValue, required, converter } = options + line = value.slice(startIndex, nextIndex) + content = startIndex === index ? line : value.slice(index, nextIndex) - if (required === true) { - if (!hasOwn(dictionary, key)) { - throw webidl.errors.exception({ - header: 'Dictionary', - message: `Missing required key "${key}".` - }) - } + if ( + currentMarker === asterisk || + currentMarker === underscore || + currentMarker === dash + ) { + if (tokenizers.thematicBreak.call(self, eat, line, true)) { + break } + } - let value = dictionary[key] - const hasDefault = hasOwn(options, 'defaultValue') + previousEmpty = empty + empty = !prefixed && !trim(content).length - // Only use defaultValue if value is undefined and - // a defaultValue options was provided. - if (hasDefault && value !== null) { - value = value ?? defaultValue + if (indented && item) { + item.value = item.value.concat(emptyLines, line) + allLines = allLines.concat(emptyLines, line) + emptyLines = [] + } else if (prefixed) { + if (emptyLines.length !== 0) { + spread = true + item.value.push('') + item.trail = emptyLines.concat() } - // A key can be optional and have no default value. - // When this happens, do not perform a conversion, - // and do not assign the key a value. - if (required || hasDefault || value !== undefined) { - value = converter(value) + item = { + value: [line], + indent: size, + trail: [] + } - if ( - options.allowedValues && - !options.allowedValues.includes(value) - ) { - throw webidl.errors.exception({ - header: 'Dictionary', - message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` - }) - } + items.push(item) + allLines = allLines.concat(emptyLines, line) + emptyLines = [] + } else if (empty) { + if (previousEmpty && !commonmark) { + break + } - dict[key] = value + emptyLines.push(line) + } else { + if (previousEmpty) { + break } - } - return dict - } -} + if (interrupt(interuptors, tokenizers, self, [eat, line, true])) { + break + } -webidl.nullableConverter = function (converter) { - return (V) => { - if (V === null) { - return V + item.value = item.value.concat(emptyLines, line) + allLines = allLines.concat(emptyLines, line) + emptyLines = [] } - return converter(V) + index = nextIndex + 1 } -} -// https://webidl.spec.whatwg.org/#es-DOMString -webidl.converters.DOMString = function (V, opts = {}) { - // 1. If V is null and the conversion is to an IDL type - // associated with the [LegacyNullToEmptyString] - // extended attribute, then return the DOMString value - // that represents the empty string. - if (V === null && opts.legacyNullToEmptyString) { - return '' - } + node = eat(allLines.join(lineFeed)).reset({ + type: 'list', + ordered: ordered, + start: start, + spread: spread, + children: [] + }) - // 2. Let x be ? ToString(V). - if (typeof V === 'symbol') { - throw new TypeError('Could not convert argument of type symbol to string.') + enterTop = self.enterList() + exitBlockquote = self.enterBlock() + index = -1 + length = items.length + + while (++index < length) { + item = items[index].value.join(lineFeed) + now = eat.now() + + eat(item)(listItem(self, item, now), node) + + item = items[index].trail.join(lineFeed) + + if (index !== length - 1) { + item += lineFeed + } + + eat(item) } - // 3. Return the IDL DOMString value that represents the - // same sequence of code units as the one the - // ECMAScript String value x represents. - return String(V) + enterTop() + exitBlockquote() + + return node } -// https://webidl.spec.whatwg.org/#es-ByteString -webidl.converters.ByteString = function (V) { - // 1. Let x be ? ToString(V). - // Note: DOMString converter perform ? ToString(V) - const x = webidl.converters.DOMString(V) +function listItem(ctx, value, position) { + var offsets = ctx.offset + var fn = ctx.options.pedantic ? pedanticListItem : normalListItem + var checked = null + var task + var indent - // 2. If the value of any element of x is greater than - // 255, then throw a TypeError. - for (let index = 0; index < x.length; index++) { - if (x.charCodeAt(index) > 255) { - throw new TypeError( - 'Cannot convert argument to a ByteString because the character at ' + - `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` - ) + value = fn.apply(null, arguments) + + if (ctx.options.gfm) { + task = value.match(taskItemExpression) + + if (task) { + indent = task[0].length + checked = task[1].toLowerCase() === lowercaseX + offsets[position.line] += indent + value = value.slice(indent) } } - // 3. Return an IDL ByteString value whose length is the - // length of x, and where the value of each element is - // the value of the corresponding element of x. - return x + return { + type: 'listItem', + spread: looseListItemExpression.test(value), + checked: checked, + children: ctx.tokenizeBlock(value, position) + } } -// https://webidl.spec.whatwg.org/#es-USVString -webidl.converters.USVString = toUSVString +// Create a list-item using overly simple mechanics. +function pedanticListItem(ctx, value, position) { + var offsets = ctx.offset + var line = position.line -// https://webidl.spec.whatwg.org/#es-boolean -webidl.converters.boolean = function (V) { - // 1. Let x be the result of computing ToBoolean(V). - const x = Boolean(V) + // Remove the list-item’s bullet. + value = value.replace(pedanticBulletExpression, replacer) - // 2. Return the IDL boolean value that is the one that represents - // the same truth value as the ECMAScript Boolean value x. - return x -} + // The initial line was also matched by the below, so we reset the `line`. + line = position.line -// https://webidl.spec.whatwg.org/#es-any -webidl.converters.any = function (V) { - return V -} + return value.replace(initialIndentExpression, replacer) -// https://webidl.spec.whatwg.org/#es-long-long -webidl.converters['long long'] = function (V) { - // 1. Let x be ? ConvertToInt(V, 64, "signed"). - const x = webidl.util.ConvertToInt(V, 64, 'signed') + // A simple replacer which removed all matches, and adds their length to + // `offset`. + function replacer($0) { + offsets[line] = (offsets[line] || 0) + $0.length + line++ - // 2. Return the IDL long long value that represents - // the same numeric value as x. - return x + return '' + } } -// https://webidl.spec.whatwg.org/#es-unsigned-long-long -webidl.converters['unsigned long long'] = function (V) { - // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). - const x = webidl.util.ConvertToInt(V, 64, 'unsigned') +// Create a list-item using sane mechanics. +function normalListItem(ctx, value, position) { + var offsets = ctx.offset + var line = position.line + var max + var bullet + var rest + var lines + var trimmedLines + var index + var length - // 2. Return the IDL unsigned long long value that - // represents the same numeric value as x. - return x -} + // Remove the list-item’s bullet. + value = value.replace(bulletExpression, replacer) -// https://webidl.spec.whatwg.org/#es-unsigned-long -webidl.converters['unsigned long'] = function (V) { - // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). - const x = webidl.util.ConvertToInt(V, 32, 'unsigned') + lines = value.split(lineFeed) - // 2. Return the IDL unsigned long value that - // represents the same numeric value as x. - return x -} + trimmedLines = removeIndent(value, getIndent(max).indent).split(lineFeed) -// https://webidl.spec.whatwg.org/#es-unsigned-short -webidl.converters['unsigned short'] = function (V, opts) { - // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). - const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts) + // We replaced the initial bullet with something else above, which was used + // to trick `removeIndentation` into removing some more characters when + // possible. However, that could result in the initial line to be stripped + // more than it should be. + trimmedLines[0] = rest - // 2. Return the IDL unsigned short value that represents - // the same numeric value as x. - return x -} + offsets[line] = (offsets[line] || 0) + bullet.length + line++ -// https://webidl.spec.whatwg.org/#idl-ArrayBuffer -webidl.converters.ArrayBuffer = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have an - // [[ArrayBufferData]] internal slot, then throw a - // TypeError. - // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances - // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances - if ( - webidl.util.Type(V) !== 'Object' || - !types.isAnyArrayBuffer(V) - ) { - throw webidl.errors.conversionFailed({ - prefix: `${V}`, - argument: `${V}`, - types: ['ArrayBuffer'] - }) - } + index = 0 + length = lines.length - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V) is true, then throw a - // TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { - throw webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }) + while (++index < length) { + offsets[line] = + (offsets[line] || 0) + lines[index].length - trimmedLines[index].length + line++ } - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V) is true, then throw a - // TypeError. - // Note: resizable ArrayBuffers are currently a proposal. + return trimmedLines.join(lineFeed) - // 4. Return the IDL ArrayBuffer value that is a - // reference to the same object as V. - return V + /* eslint-disable-next-line max-params */ + function replacer($0, $1, $2, $3, $4) { + bullet = $1 + $2 + $3 + rest = $4 + + // Make sure that the first nine numbered list items can indent with an + // extra space. That is, when the bullet did not receive an extra final + // space. + if (Number($2) < 10 && bullet.length % 2 === 1) { + $2 = space + $2 + } + + max = $1 + repeat(space, $2.length) + $3 + + return max + rest + } } -webidl.converters.TypedArray = function (V, T, opts = {}) { - // 1. Let T be the IDL type V is being converted to. - // 2. If Type(V) is not Object, or V does not have a - // [[TypedArrayName]] internal slot with a value - // equal to T’s name, then throw a TypeError. - if ( - webidl.util.Type(V) !== 'Object' || - !types.isTypedArray(V) || - V.constructor.name !== T.name - ) { - throw webidl.errors.conversionFailed({ - prefix: `${T.name}`, - argument: `${V}`, - types: [T.name] - }) - } +/***/ }), - // 3. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }) - } +/***/ 3272: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 4. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable array buffers are currently a proposal +"use strict"; - // 5. Return the IDL value of type T that is a reference - // to the same object as V. - return V -} -webidl.converters.DataView = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have a - // [[DataView]] internal slot, then throw a TypeError. - if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { - throw webidl.errors.exception({ - header: 'DataView', - message: 'Object is not a DataView.' - }) - } +var trim = __nccwpck_require__(15464) +var trimTrailingLines = __nccwpck_require__(75937) +var interrupt = __nccwpck_require__(93808) + +module.exports = paragraph + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' + +var tabSize = 4 + +// Tokenise paragraph. +function paragraph(eat, value, silent) { + var self = this + var settings = self.options + var commonmark = settings.commonmark + var tokenizers = self.blockTokenizers + var interruptors = self.interruptParagraph + var index = value.indexOf(lineFeed) + var length = value.length + var position + var subvalue + var character + var size + var now + + while (index < length) { + // Eat everything if there’s no following newline. + if (index === -1) { + index = length + break + } - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, - // then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: 'ArrayBuffer', - message: 'SharedArrayBuffer is not allowed.' - }) - } + // Stop if the next character is NEWLINE. + if (value.charAt(index + 1) === lineFeed) { + break + } - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable ArrayBuffers are currently a proposal + // In commonmark-mode, following indented lines are part of the paragraph. + if (commonmark) { + size = 0 + position = index + 1 - // 4. Return the IDL DataView value that is a reference - // to the same object as V. - return V -} + while (position < length) { + character = value.charAt(position) -// https://webidl.spec.whatwg.org/#BufferSource -webidl.converters.BufferSource = function (V, opts = {}) { - if (types.isAnyArrayBuffer(V)) { - return webidl.converters.ArrayBuffer(V, opts) - } + if (character === tab) { + size = tabSize + break + } else if (character === space) { + size++ + } else { + break + } - if (types.isTypedArray(V)) { - return webidl.converters.TypedArray(V, V.constructor) - } + position++ + } - if (types.isDataView(V)) { - return webidl.converters.DataView(V, opts) - } + if (size >= tabSize && character !== lineFeed) { + index = value.indexOf(lineFeed, index + 1) + continue + } + } - throw new TypeError(`Could not convert ${V} to a BufferSource.`) -} + subvalue = value.slice(index + 1) -webidl.converters['sequence<ByteString>'] = webidl.sequenceConverter( - webidl.converters.ByteString -) + // Check if the following code contains a possible block. + if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) { + break + } -webidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter( - webidl.converters['sequence<ByteString>'] -) + position = index + index = value.indexOf(lineFeed, index + 1) -webidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter( - webidl.converters.ByteString, - webidl.converters.ByteString -) + if (index !== -1 && trim(value.slice(position, index)) === '') { + index = position + break + } + } -module.exports = { - webidl + subvalue = value.slice(0, index) + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + now = eat.now() + subvalue = trimTrailingLines(subvalue) + + return eat(subvalue)({ + type: 'paragraph', + children: self.tokenizeInline(subvalue, now) + }) } /***/ }), -/***/ 396: -/***/ ((module) => { +/***/ 94419: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -/** - * @see https://encoding.spec.whatwg.org/#concept-encoding-get - * @param {string|undefined} label - */ -function getEncoding (label) { - if (!label) { - return 'failure' - } - - // 1. Remove any leading and trailing ASCII whitespace from label. - // 2. If label is an ASCII case-insensitive match for any of the - // labels listed in the table below, then return the - // corresponding encoding; otherwise return failure. - switch (label.trim().toLowerCase()) { - case 'unicode-1-1-utf-8': - case 'unicode11utf8': - case 'unicode20utf8': - case 'utf-8': - case 'utf8': - case 'x-unicode20utf8': - return 'UTF-8' - case '866': - case 'cp866': - case 'csibm866': - case 'ibm866': - return 'IBM866' - case 'csisolatin2': - case 'iso-8859-2': - case 'iso-ir-101': - case 'iso8859-2': - case 'iso88592': - case 'iso_8859-2': - case 'iso_8859-2:1987': - case 'l2': - case 'latin2': - return 'ISO-8859-2' - case 'csisolatin3': - case 'iso-8859-3': - case 'iso-ir-109': - case 'iso8859-3': - case 'iso88593': - case 'iso_8859-3': - case 'iso_8859-3:1988': - case 'l3': - case 'latin3': - return 'ISO-8859-3' - case 'csisolatin4': - case 'iso-8859-4': - case 'iso-ir-110': - case 'iso8859-4': - case 'iso88594': - case 'iso_8859-4': - case 'iso_8859-4:1988': - case 'l4': - case 'latin4': - return 'ISO-8859-4' - case 'csisolatincyrillic': - case 'cyrillic': - case 'iso-8859-5': - case 'iso-ir-144': - case 'iso8859-5': - case 'iso88595': - case 'iso_8859-5': - case 'iso_8859-5:1988': - return 'ISO-8859-5' - case 'arabic': - case 'asmo-708': - case 'csiso88596e': - case 'csiso88596i': - case 'csisolatinarabic': - case 'ecma-114': - case 'iso-8859-6': - case 'iso-8859-6-e': - case 'iso-8859-6-i': - case 'iso-ir-127': - case 'iso8859-6': - case 'iso88596': - case 'iso_8859-6': - case 'iso_8859-6:1987': - return 'ISO-8859-6' - case 'csisolatingreek': - case 'ecma-118': - case 'elot_928': - case 'greek': - case 'greek8': - case 'iso-8859-7': - case 'iso-ir-126': - case 'iso8859-7': - case 'iso88597': - case 'iso_8859-7': - case 'iso_8859-7:1987': - case 'sun_eu_greek': - return 'ISO-8859-7' - case 'csiso88598e': - case 'csisolatinhebrew': - case 'hebrew': - case 'iso-8859-8': - case 'iso-8859-8-e': - case 'iso-ir-138': - case 'iso8859-8': - case 'iso88598': - case 'iso_8859-8': - case 'iso_8859-8:1988': - case 'visual': - return 'ISO-8859-8' - case 'csiso88598i': - case 'iso-8859-8-i': - case 'logical': - return 'ISO-8859-8-I' - case 'csisolatin6': - case 'iso-8859-10': - case 'iso-ir-157': - case 'iso8859-10': - case 'iso885910': - case 'l6': - case 'latin6': - return 'ISO-8859-10' - case 'iso-8859-13': - case 'iso8859-13': - case 'iso885913': - return 'ISO-8859-13' - case 'iso-8859-14': - case 'iso8859-14': - case 'iso885914': - return 'ISO-8859-14' - case 'csisolatin9': - case 'iso-8859-15': - case 'iso8859-15': - case 'iso885915': - case 'iso_8859-15': - case 'l9': - return 'ISO-8859-15' - case 'iso-8859-16': - return 'ISO-8859-16' - case 'cskoi8r': - case 'koi': - case 'koi8': - case 'koi8-r': - case 'koi8_r': - return 'KOI8-R' - case 'koi8-ru': - case 'koi8-u': - return 'KOI8-U' - case 'csmacintosh': - case 'mac': - case 'macintosh': - case 'x-mac-roman': - return 'macintosh' - case 'iso-8859-11': - case 'iso8859-11': - case 'iso885911': - case 'tis-620': - case 'windows-874': - return 'windows-874' - case 'cp1250': - case 'windows-1250': - case 'x-cp1250': - return 'windows-1250' - case 'cp1251': - case 'windows-1251': - case 'x-cp1251': - return 'windows-1251' - case 'ansi_x3.4-1968': - case 'ascii': - case 'cp1252': - case 'cp819': - case 'csisolatin1': - case 'ibm819': - case 'iso-8859-1': - case 'iso-ir-100': - case 'iso8859-1': - case 'iso88591': - case 'iso_8859-1': - case 'iso_8859-1:1987': - case 'l1': - case 'latin1': - case 'us-ascii': - case 'windows-1252': - case 'x-cp1252': - return 'windows-1252' - case 'cp1253': - case 'windows-1253': - case 'x-cp1253': - return 'windows-1253' - case 'cp1254': - case 'csisolatin5': - case 'iso-8859-9': - case 'iso-ir-148': - case 'iso8859-9': - case 'iso88599': - case 'iso_8859-9': - case 'iso_8859-9:1989': - case 'l5': - case 'latin5': - case 'windows-1254': - case 'x-cp1254': - return 'windows-1254' - case 'cp1255': - case 'windows-1255': - case 'x-cp1255': - return 'windows-1255' - case 'cp1256': - case 'windows-1256': - case 'x-cp1256': - return 'windows-1256' - case 'cp1257': - case 'windows-1257': - case 'x-cp1257': - return 'windows-1257' - case 'cp1258': - case 'windows-1258': - case 'x-cp1258': - return 'windows-1258' - case 'x-mac-cyrillic': - case 'x-mac-ukrainian': - return 'x-mac-cyrillic' - case 'chinese': - case 'csgb2312': - case 'csiso58gb231280': - case 'gb2312': - case 'gb_2312': - case 'gb_2312-80': - case 'gbk': - case 'iso-ir-58': - case 'x-gbk': - return 'GBK' - case 'gb18030': - return 'gb18030' - case 'big5': - case 'big5-hkscs': - case 'cn-big5': - case 'csbig5': - case 'x-x-big5': - return 'Big5' - case 'cseucpkdfmtjapanese': - case 'euc-jp': - case 'x-euc-jp': - return 'EUC-JP' - case 'csiso2022jp': - case 'iso-2022-jp': - return 'ISO-2022-JP' - case 'csshiftjis': - case 'ms932': - case 'ms_kanji': - case 'shift-jis': - case 'shift_jis': - case 'sjis': - case 'windows-31j': - case 'x-sjis': - return 'Shift_JIS' - case 'cseuckr': - case 'csksc56011987': - case 'euc-kr': - case 'iso-ir-149': - case 'korean': - case 'ks_c_5601-1987': - case 'ks_c_5601-1989': - case 'ksc5601': - case 'ksc_5601': - case 'windows-949': - return 'EUC-KR' - case 'csiso2022kr': - case 'hz-gb-2312': - case 'iso-2022-cn': - case 'iso-2022-cn-ext': - case 'iso-2022-kr': - case 'replacement': - return 'replacement' - case 'unicodefffe': - case 'utf-16be': - return 'UTF-16BE' - case 'csunicode': - case 'iso-10646-ucs-2': - case 'ucs-2': - case 'unicode': - case 'unicodefeff': - case 'utf-16': - case 'utf-16le': - return 'UTF-16LE' - case 'x-user-defined': - return 'x-user-defined' - default: return 'failure' +var whitespace = __nccwpck_require__(96472) +var locate = __nccwpck_require__(8241) +var normalize = __nccwpck_require__(99880) + +module.exports = reference +reference.locator = locate + +var link = 'link' +var image = 'image' +var shortcut = 'shortcut' +var collapsed = 'collapsed' +var full = 'full' +var exclamationMark = '!' +var leftSquareBracket = '[' +var backslash = '\\' +var rightSquareBracket = ']' + +function reference(eat, value, silent) { + var self = this + var commonmark = self.options.commonmark + var character = value.charAt(0) + var index = 0 + var length = value.length + var subvalue = '' + var intro = '' + var type = link + var referenceType = shortcut + var content + var identifier + var now + var node + var exit + var queue + var bracketed + var depth + + // Check whether we’re eating an image. + if (character === exclamationMark) { + type = image + intro = character + character = value.charAt(++index) + } + + if (character !== leftSquareBracket) { + return } -} -module.exports = { - getEncoding -} + index++ + intro += character + queue = '' + // Eat the text. + depth = 0 -/***/ }), + while (index < length) { + character = value.charAt(index) -/***/ 2160: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (character === leftSquareBracket) { + bracketed = true + depth++ + } else if (character === rightSquareBracket) { + if (!depth) { + break + } -"use strict"; + depth-- + } + if (character === backslash) { + queue += backslash + character = value.charAt(++index) + } -const { - staticPropertyDescriptors, - readOperation, - fireAProgressEvent -} = __nccwpck_require__(165) -const { - kState, - kError, - kResult, - kEvents, - kAborted -} = __nccwpck_require__(6812) -const { webidl } = __nccwpck_require__(4222) -const { kEnumerableProperty } = __nccwpck_require__(3440) + queue += character + index++ + } -class FileReader extends EventTarget { - constructor () { - super() + subvalue = queue + content = queue + character = value.charAt(index) - this[kState] = 'empty' - this[kResult] = null - this[kError] = null - this[kEvents] = { - loadend: null, - error: null, - abort: null, - load: null, - progress: null, - loadstart: null - } + if (character !== rightSquareBracket) { + return } - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer - * @param {import('buffer').Blob} blob - */ - readAsArrayBuffer (blob) { - webidl.brandCheck(this, FileReader) + index++ + subvalue += character + queue = '' - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }) + if (!commonmark) { + // The original markdown syntax definition explicitly allows for whitespace + // between the link text and link label; commonmark departs from this, in + // part to improve support for shortcut reference links + while (index < length) { + character = value.charAt(index) - blob = webidl.converters.Blob(blob, { strict: false }) + if (!whitespace(character)) { + break + } - // The readAsArrayBuffer(blob) method, when invoked, - // must initiate a read operation for blob with ArrayBuffer. - readOperation(this, blob, 'ArrayBuffer') + queue += character + index++ + } } - /** - * @see https://w3c.github.io/FileAPI/#readAsBinaryString - * @param {import('buffer').Blob} blob - */ - readAsBinaryString (blob) { - webidl.brandCheck(this, FileReader) + character = value.charAt(index) - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }) + if (character === leftSquareBracket) { + identifier = '' + queue += character + index++ - blob = webidl.converters.Blob(blob, { strict: false }) + while (index < length) { + character = value.charAt(index) - // The readAsBinaryString(blob) method, when invoked, - // must initiate a read operation for blob with BinaryString. - readOperation(this, blob, 'BinaryString') - } + if (character === leftSquareBracket || character === rightSquareBracket) { + break + } - /** - * @see https://w3c.github.io/FileAPI/#readAsDataText - * @param {import('buffer').Blob} blob - * @param {string?} encoding - */ - readAsText (blob, encoding = undefined) { - webidl.brandCheck(this, FileReader) + if (character === backslash) { + identifier += backslash + character = value.charAt(++index) + } - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }) + identifier += character + index++ + } - blob = webidl.converters.Blob(blob, { strict: false }) + character = value.charAt(index) - if (encoding !== undefined) { - encoding = webidl.converters.DOMString(encoding) + if (character === rightSquareBracket) { + referenceType = identifier ? full : collapsed + queue += identifier + character + index++ + } else { + identifier = '' } - // The readAsText(blob, encoding) method, when invoked, - // must initiate a read operation for blob with Text and encoding. - readOperation(this, blob, 'Text', encoding) + subvalue += queue + queue = '' + } else { + if (!content) { + return + } + + identifier = content } - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL - * @param {import('buffer').Blob} blob - */ - readAsDataURL (blob) { - webidl.brandCheck(this, FileReader) + // Brackets cannot be inside the identifier. + if (referenceType !== full && bracketed) { + return + } - webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }) + subvalue = intro + subvalue - blob = webidl.converters.Blob(blob, { strict: false }) + if (type === link && self.inLink) { + return null + } - // The readAsDataURL(blob) method, when invoked, must - // initiate a read operation for blob with DataURL. - readOperation(this, blob, 'DataURL') + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true } - /** - * @see https://w3c.github.io/FileAPI/#dfn-abort - */ - abort () { - // 1. If this's state is "empty" or if this's state is - // "done" set this's result to null and terminate - // this algorithm. - if (this[kState] === 'empty' || this[kState] === 'done') { - this[kResult] = null - return - } + now = eat.now() + now.column += intro.length + now.offset += intro.length + identifier = referenceType === full ? identifier : content - // 2. If this's state is "loading" set this's state to - // "done" and set this's result to null. - if (this[kState] === 'loading') { - this[kState] = 'done' - this[kResult] = null - } + node = { + type: type + 'Reference', + identifier: normalize(identifier), + label: identifier, + referenceType: referenceType + } - // 3. If there are any tasks from this on the file reading - // task source in an affiliated task queue, then remove - // those tasks from that task queue. - this[kAborted] = true + if (type === link) { + exit = self.enterLink() + node.children = self.tokenizeInline(content, now) + exit() + } else { + node.alt = self.decode.raw(self.unescape(content), now) || null + } - // 4. Terminate the algorithm for the read method being processed. - // TODO + return eat(subvalue)(node) +} - // 5. Fire a progress event called abort at this. - fireAProgressEvent('abort', this) - // 6. If this's state is not "loading", fire a progress - // event called loadend at this. - if (this[kState] !== 'loading') { - fireAProgressEvent('loadend', this) - } - } +/***/ }), - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate - */ - get readyState () { - webidl.brandCheck(this, FileReader) +/***/ 79359: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - switch (this[kState]) { - case 'empty': return this.EMPTY - case 'loading': return this.LOADING - case 'done': return this.DONE - } - } +"use strict"; - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-result - */ - get result () { - webidl.brandCheck(this, FileReader) - // The result attribute’s getter, when invoked, must return - // this's result. - return this[kResult] - } +var trim = __nccwpck_require__(15464) +var whitespace = __nccwpck_require__(96472) +var locate = __nccwpck_require__(21322) - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-error - */ - get error () { - webidl.brandCheck(this, FileReader) +module.exports = strong +strong.locator = locate - // The error attribute’s getter, when invoked, must return - // this's error. - return this[kError] +var backslash = '\\' +var asterisk = '*' +var underscore = '_' + +function strong(eat, value, silent) { + var self = this + var index = 0 + var character = value.charAt(index) + var now + var pedantic + var marker + var queue + var subvalue + var length + var previous + + if ( + (character !== asterisk && character !== underscore) || + value.charAt(++index) !== character + ) { + return } - get onloadend () { - webidl.brandCheck(this, FileReader) + pedantic = self.options.pedantic + marker = character + subvalue = marker + marker + length = value.length + index++ + queue = '' + character = '' - return this[kEvents].loadend + if (pedantic && whitespace(value.charAt(index))) { + return } - set onloadend (fn) { - webidl.brandCheck(this, FileReader) + while (index < length) { + previous = character + character = value.charAt(index) - if (this[kEvents].loadend) { - this.removeEventListener('loadend', this[kEvents].loadend) + if ( + character === marker && + value.charAt(index + 1) === marker && + (!pedantic || !whitespace(previous)) + ) { + character = value.charAt(index + 2) + + if (character !== marker) { + if (!trim(queue)) { + return + } + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } + + now = eat.now() + now.column += 2 + now.offset += 2 + + return eat(subvalue + queue + subvalue)({ + type: 'strong', + children: self.tokenizeInline(queue, now) + }) + } } - if (typeof fn === 'function') { - this[kEvents].loadend = fn - this.addEventListener('loadend', fn) - } else { - this[kEvents].loadend = null + if (!pedantic && character === backslash) { + queue += character + character = value.charAt(++index) } + + queue += character + index++ } +} - get onerror () { - webidl.brandCheck(this, FileReader) - return this[kEvents].error +/***/ }), + +/***/ 80930: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var whitespace = __nccwpck_require__(96472) + +module.exports = table + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' +var dash = '-' +var colon = ':' +var backslash = '\\' +var verticalBar = '|' + +var minColumns = 1 +var minRows = 2 + +var left = 'left' +var center = 'center' +var right = 'right' + +function table(eat, value, silent) { + var self = this + var index + var alignments + var alignment + var subvalue + var row + var length + var lines + var queue + var character + var hasDash + var align + var cell + var preamble + var now + var position + var lineCount + var line + var rows + var table + var lineIndex + var pipeIndex + var first + + // Exit when not in gfm-mode. + if (!self.options.gfm) { + return } - set onerror (fn) { - webidl.brandCheck(this, FileReader) + // Get the rows. + // Detecting tables soon is hard, so there are some checks for performance + // here, such as the minimum number of rows, and allowed characters in the + // alignment row. + index = 0 + lineCount = 0 + length = value.length + 1 + lines = [] - if (this[kEvents].error) { - this.removeEventListener('error', this[kEvents].error) + while (index < length) { + lineIndex = value.indexOf(lineFeed, index) + pipeIndex = value.indexOf(verticalBar, index + 1) + + if (lineIndex === -1) { + lineIndex = value.length } - if (typeof fn === 'function') { - this[kEvents].error = fn - this.addEventListener('error', fn) - } else { - this[kEvents].error = null + if (pipeIndex === -1 || pipeIndex > lineIndex) { + if (lineCount < minRows) { + return + } + + break } + + lines.push(value.slice(index, lineIndex)) + lineCount++ + index = lineIndex + 1 } - get onloadstart () { - webidl.brandCheck(this, FileReader) + // Parse the alignment row. + subvalue = lines.join(lineFeed) + alignments = lines.splice(1, 1)[0] || [] + index = 0 + length = alignments.length + lineCount-- + alignment = false + align = [] - return this[kEvents].loadstart - } + while (index < length) { + character = alignments.charAt(index) - set onloadstart (fn) { - webidl.brandCheck(this, FileReader) + if (character === verticalBar) { + hasDash = null - if (this[kEvents].loadstart) { - this.removeEventListener('loadstart', this[kEvents].loadstart) + if (alignment === false) { + if (first === false) { + return + } + } else { + align.push(alignment) + alignment = false + } + + first = false + } else if (character === dash) { + hasDash = true + alignment = alignment || null + } else if (character === colon) { + if (alignment === left) { + alignment = center + } else if (hasDash && alignment === null) { + alignment = right + } else { + alignment = left + } + } else if (!whitespace(character)) { + return } - if (typeof fn === 'function') { - this[kEvents].loadstart = fn - this.addEventListener('loadstart', fn) - } else { - this[kEvents].loadstart = null - } + index++ } - get onprogress () { - webidl.brandCheck(this, FileReader) + if (alignment !== false) { + align.push(alignment) + } - return this[kEvents].progress + // Exit when without enough columns. + if (align.length < minColumns) { + return } - set onprogress (fn) { - webidl.brandCheck(this, FileReader) + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } - if (this[kEvents].progress) { - this.removeEventListener('progress', this[kEvents].progress) - } + // Parse the rows. + position = -1 + rows = [] - if (typeof fn === 'function') { - this[kEvents].progress = fn - this.addEventListener('progress', fn) - } else { - this[kEvents].progress = null + table = eat(subvalue).reset({type: 'table', align: align, children: rows}) + + while (++position < lineCount) { + line = lines[position] + row = {type: 'tableRow', children: []} + + // Eat a newline character when this is not the first row. + if (position) { + eat(lineFeed) } - } - get onload () { - webidl.brandCheck(this, FileReader) + // Eat the row. + eat(line).reset(row, table) - return this[kEvents].load - } + length = line.length + 1 + index = 0 + queue = '' + cell = '' + preamble = true - set onload (fn) { - webidl.brandCheck(this, FileReader) + while (index < length) { + character = line.charAt(index) - if (this[kEvents].load) { - this.removeEventListener('load', this[kEvents].load) + if (character === tab || character === space) { + if (cell) { + queue += character + } else { + eat(character) + } + + index++ + continue + } + + if (character === '' || character === verticalBar) { + if (preamble) { + eat(character) + } else { + if ((cell || character) && !preamble) { + subvalue = cell + + if (queue.length > 1) { + if (character) { + subvalue += queue.slice(0, -1) + queue = queue.charAt(queue.length - 1) + } else { + subvalue += queue + queue = '' + } + } + + now = eat.now() + + eat(subvalue)( + {type: 'tableCell', children: self.tokenizeInline(cell, now)}, + row + ) + } + + eat(queue + character) + + queue = '' + cell = '' + } + } else { + if (queue) { + cell += queue + queue = '' + } + + cell += character + + if (character === backslash && index !== length - 2) { + cell += line.charAt(index + 1) + index++ + } + } + + preamble = false + index++ } - if (typeof fn === 'function') { - this[kEvents].load = fn - this.addEventListener('load', fn) - } else { - this[kEvents].load = null + // Eat the alignment row. + if (!position) { + eat(lineFeed + alignments) } } - get onabort () { - webidl.brandCheck(this, FileReader) + return table +} - return this[kEvents].abort + +/***/ }), + +/***/ 10631: +/***/ ((module) => { + +"use strict"; + + +module.exports = text + +function text(eat, value, silent) { + var self = this + var methods + var tokenizers + var index + var length + var subvalue + var position + var tokenizer + var name + var min + var now + + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true } - set onabort (fn) { - webidl.brandCheck(this, FileReader) + methods = self.inlineMethods + length = methods.length + tokenizers = self.inlineTokenizers + index = -1 + min = value.length - if (this[kEvents].abort) { - this.removeEventListener('abort', this[kEvents].abort) + while (++index < length) { + name = methods[index] + + if (name === 'text' || !tokenizers[name]) { + continue } - if (typeof fn === 'function') { - this[kEvents].abort = fn - this.addEventListener('abort', fn) - } else { - this[kEvents].abort = null + tokenizer = tokenizers[name].locator + + if (!tokenizer) { + eat.file.fail('Missing locator: `' + name + '`') } - } -} -// https://w3c.github.io/FileAPI/#dom-filereader-empty -FileReader.EMPTY = FileReader.prototype.EMPTY = 0 -// https://w3c.github.io/FileAPI/#dom-filereader-loading -FileReader.LOADING = FileReader.prototype.LOADING = 1 -// https://w3c.github.io/FileAPI/#dom-filereader-done -FileReader.DONE = FileReader.prototype.DONE = 2 + position = tokenizer.call(self, value, 1) -Object.defineProperties(FileReader.prototype, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors, - readAsArrayBuffer: kEnumerableProperty, - readAsBinaryString: kEnumerableProperty, - readAsText: kEnumerableProperty, - readAsDataURL: kEnumerableProperty, - abort: kEnumerableProperty, - readyState: kEnumerableProperty, - result: kEnumerableProperty, - error: kEnumerableProperty, - onloadstart: kEnumerableProperty, - onprogress: kEnumerableProperty, - onload: kEnumerableProperty, - onabort: kEnumerableProperty, - onerror: kEnumerableProperty, - onloadend: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'FileReader', - writable: false, - enumerable: false, - configurable: true + if (position !== -1 && position < min) { + min = position + } } -}) -Object.defineProperties(FileReader, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors -}) + subvalue = value.slice(0, min) + now = eat.now() -module.exports = { - FileReader + self.decode(subvalue, now, handler) + + function handler(content, position, source) { + eat(source || content)({type: 'text', value: content}) + } } /***/ }), -/***/ 5976: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 4757: +/***/ ((module) => { "use strict"; -const { webidl } = __nccwpck_require__(4222) +module.exports = thematicBreak -const kState = Symbol('ProgressEvent state') +var tab = '\t' +var lineFeed = '\n' +var space = ' ' +var asterisk = '*' +var dash = '-' +var underscore = '_' -/** - * @see https://xhr.spec.whatwg.org/#progressevent - */ -class ProgressEvent extends Event { - constructor (type, eventInitDict = {}) { - type = webidl.converters.DOMString(type) - eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}) +var maxCount = 3 - super(type, eventInitDict) +function thematicBreak(eat, value, silent) { + var index = -1 + var length = value.length + 1 + var subvalue = '' + var character + var marker + var markerCount + var queue - this[kState] = { - lengthComputable: eventInitDict.lengthComputable, - loaded: eventInitDict.loaded, - total: eventInitDict.total + while (++index < length) { + character = value.charAt(index) + + if (character !== tab && character !== space) { + break } - } - get lengthComputable () { - webidl.brandCheck(this, ProgressEvent) + subvalue += character + } - return this[kState].lengthComputable + if ( + character !== asterisk && + character !== dash && + character !== underscore + ) { + return } - get loaded () { - webidl.brandCheck(this, ProgressEvent) + marker = character + subvalue += character + markerCount = 1 + queue = '' - return this[kState].loaded - } + while (++index < length) { + character = value.charAt(index) - get total () { - webidl.brandCheck(this, ProgressEvent) + if (character === marker) { + markerCount++ + subvalue += queue + marker + queue = '' + } else if (character === space) { + queue += character + } else if ( + markerCount >= maxCount && + (!character || character === lineFeed) + ) { + subvalue += queue - return this[kState].total - } -} + if (silent) { + return true + } -webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ - { - key: 'lengthComputable', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'loaded', - converter: webidl.converters['unsigned long long'], - defaultValue: 0 - }, - { - key: 'total', - converter: webidl.converters['unsigned long long'], - defaultValue: 0 - }, - { - key: 'bubbles', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'cancelable', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'composed', - converter: webidl.converters.boolean, - defaultValue: false + return eat(subvalue)({type: 'thematicBreak'}) + } else { + return + } } -]) - -module.exports = { - ProgressEvent } /***/ }), -/***/ 6812: -/***/ ((module) => { +/***/ 91063: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -module.exports = { - kState: Symbol('FileReader state'), - kResult: Symbol('FileReader result'), - kError: Symbol('FileReader error'), - kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), - kEvents: Symbol('FileReader events'), - kAborted: Symbol('FileReader aborted') -} +var ccount = __nccwpck_require__(83076) +var decode = __nccwpck_require__(75165) +var decimal = __nccwpck_require__(96734) +var alphabetical = __nccwpck_require__(59201) +var whitespace = __nccwpck_require__(96472) +var locate = __nccwpck_require__(82644) + +module.exports = url +url.locator = locate +url.notInLink = true + +var exclamationMark = 33 // '!' +var ampersand = 38 // '&' +var rightParenthesis = 41 // ')' +var asterisk = 42 // '*' +var comma = 44 // ',' +var dash = 45 // '-' +var dot = 46 // '.' +var colon = 58 // ':' +var semicolon = 59 // ';' +var questionMark = 63 // '?' +var lessThan = 60 // '<' +var underscore = 95 // '_' +var tilde = 126 // '~' + +var leftParenthesisCharacter = '(' +var rightParenthesisCharacter = ')' + +function url(eat, value, silent) { + var self = this + var gfm = self.options.gfm + var tokenizers = self.inlineTokenizers + var length = value.length + var previousDot = -1 + var protocolless = false + var dots + var lastTwoPartsStart + var start + var index + var pathStart + var path + var code + var end + var leftCount + var rightCount + var content + var children + var url + var exit + + if (!gfm) { + return + } + // `WWW.` doesn’t work. + if (value.slice(0, 4) === 'www.') { + protocolless = true + index = 4 + } else if (value.slice(0, 7).toLowerCase() === 'http://') { + index = 7 + } else if (value.slice(0, 8).toLowerCase() === 'https://') { + index = 8 + } else { + return + } -/***/ }), + // Act as if the starting boundary is a dot. + previousDot = index - 1 -/***/ 165: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Parse a valid domain. + start = index + dots = [] -"use strict"; + while (index < length) { + code = value.charCodeAt(index) + if (code === dot) { + // Dots may not appear after each other. + if (previousDot === index - 1) { + break + } -const { - kState, - kError, - kResult, - kAborted, - kLastProgressEventFired -} = __nccwpck_require__(6812) -const { ProgressEvent } = __nccwpck_require__(5976) -const { getEncoding } = __nccwpck_require__(396) -const { DOMException } = __nccwpck_require__(7326) -const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(4322) -const { types } = __nccwpck_require__(9023) -const { StringDecoder } = __nccwpck_require__(3193) -const { btoa } = __nccwpck_require__(181) + dots.push(index) + previousDot = index + index++ + continue + } -/** @type {PropertyDescriptor} */ -const staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false -} + if ( + decimal(code) || + alphabetical(code) || + code === dash || + code === underscore + ) { + index++ + continue + } -/** - * @see https://w3c.github.io/FileAPI/#readOperation - * @param {import('./filereader').FileReader} fr - * @param {import('buffer').Blob} blob - * @param {string} type - * @param {string?} encodingName - */ -function readOperation (fr, blob, type, encodingName) { - // 1. If fr’s state is "loading", throw an InvalidStateError - // DOMException. - if (fr[kState] === 'loading') { - throw new DOMException('Invalid state', 'InvalidStateError') + break } - // 2. Set fr’s state to "loading". - fr[kState] = 'loading' + // Ignore a final dot: + if (code === dot) { + dots.pop() + index-- + } - // 3. Set fr’s result to null. - fr[kResult] = null + // If there are not dots, exit. + if (dots[0] === undefined) { + return + } - // 4. Set fr’s error to null. - fr[kError] = null + // If there is an underscore in the last two domain parts, exit: + // `www.example.c_m` and `www.ex_ample.com` are not OK, but + // `www.sub_domain.example.com` is. + lastTwoPartsStart = dots.length < 2 ? start : dots[dots.length - 2] + 1 - // 5. Let stream be the result of calling get stream on blob. - /** @type {import('stream/web').ReadableStream} */ - const stream = blob.stream() + if (value.slice(lastTwoPartsStart, index).indexOf('_') !== -1) { + return + } - // 6. Let reader be the result of getting a reader from stream. - const reader = stream.getReader() + /* istanbul ignore if - never used (yet) */ + if (silent) { + return true + } - // 7. Let bytes be an empty byte sequence. - /** @type {Uint8Array[]} */ - const bytes = [] + end = index + pathStart = index - // 8. Let chunkPromise be the result of reading a chunk from - // stream with reader. - let chunkPromise = reader.read() + // Parse a path. + while (index < length) { + code = value.charCodeAt(index) - // 9. Let isFirstChunk be true. - let isFirstChunk = true + if (whitespace(code) || code === lessThan) { + break + } - // 10. In parallel, while true: - // Note: "In parallel" just means non-blocking - // Note 2: readOperation itself cannot be async as double - // reading the body would then reject the promise, instead - // of throwing an error. - ;(async () => { - while (!fr[kAborted]) { - // 1. Wait for chunkPromise to be fulfilled or rejected. - try { - const { done, value } = await chunkPromise + index++ - // 2. If chunkPromise is fulfilled, and isFirstChunk is - // true, queue a task to fire a progress event called - // loadstart at fr. - if (isFirstChunk && !fr[kAborted]) { - queueMicrotask(() => { - fireAProgressEvent('loadstart', fr) - }) - } + if ( + code === exclamationMark || + code === asterisk || + code === comma || + code === dot || + code === colon || + code === questionMark || + code === underscore || + code === tilde + ) { + // Empty + } else { + end = index + } + } - // 3. Set isFirstChunk to false. - isFirstChunk = false + index = end - // 4. If chunkPromise is fulfilled with an object whose - // done property is false and whose value property is - // a Uint8Array object, run these steps: - if (!done && types.isUint8Array(value)) { - // 1. Let bs be the byte sequence represented by the - // Uint8Array object. + // If the path ends in a closing paren, and the count of closing parens is + // higher than the opening count, then remove the supefluous closing parens. + if (value.charCodeAt(index - 1) === rightParenthesis) { + path = value.slice(pathStart, index) + leftCount = ccount(path, leftParenthesisCharacter) + rightCount = ccount(path, rightParenthesisCharacter) - // 2. Append bs to bytes. - bytes.push(value) + while (rightCount > leftCount) { + index = pathStart + path.lastIndexOf(rightParenthesisCharacter) + path = value.slice(pathStart, index) + rightCount-- + } + } - // 3. If roughly 50ms have passed since these steps - // were last invoked, queue a task to fire a - // progress event called progress at fr. - if ( - ( - fr[kLastProgressEventFired] === undefined || - Date.now() - fr[kLastProgressEventFired] >= 50 - ) && - !fr[kAborted] - ) { - fr[kLastProgressEventFired] = Date.now() - queueMicrotask(() => { - fireAProgressEvent('progress', fr) - }) - } + if (value.charCodeAt(index - 1) === semicolon) { + // GitHub doesn’t document this, but final semicolons aren’t paret of the + // URL either. + index-- - // 4. Set chunkPromise to the result of reading a - // chunk from stream with reader. - chunkPromise = reader.read() - } else if (done) { - // 5. Otherwise, if chunkPromise is fulfilled with an - // object whose done property is true, queue a task - // to run the following steps and abort this algorithm: - queueMicrotask(() => { - // 1. Set fr’s state to "done". - fr[kState] = 'done' + // // If the path ends in what looks like an entity, it’s not part of the path. + if (alphabetical(value.charCodeAt(index - 1))) { + end = index - 2 - // 2. Let result be the result of package data given - // bytes, type, blob’s type, and encodingName. - try { - const result = packageData(bytes, type, blob.type, encodingName) + while (alphabetical(value.charCodeAt(end))) { + end-- + } - // 4. Else: + if (value.charCodeAt(end) === ampersand) { + index = end + } + } + } - if (fr[kAborted]) { - return - } + content = value.slice(0, index) + url = decode(content, {nonTerminated: false}) - // 1. Set fr’s result to result. - fr[kResult] = result + if (protocolless) { + url = 'http://' + url + } - // 2. Fire a progress event called load at the fr. - fireAProgressEvent('load', fr) - } catch (error) { - // 3. If package data threw an exception error: + exit = self.enterLink() - // 1. Set fr’s error to error. - fr[kError] = error + // Temporarily remove all tokenizers except text in url. + self.inlineTokenizers = {text: tokenizers.text} + children = self.tokenizeInline(content, eat.now()) + self.inlineTokenizers = tokenizers - // 2. Fire a progress event called error at fr. - fireAProgressEvent('error', fr) - } + exit() - // 5. If fr’s state is not "loading", fire a progress - // event called loadend at the fr. - if (fr[kState] !== 'loading') { - fireAProgressEvent('loadend', fr) - } - }) + return eat(content)({type: 'link', title: null, url: url, children: children}) +} - break - } - } catch (error) { - if (fr[kAborted]) { - return - } - // 6. Otherwise, if chunkPromise is rejected with an - // error error, queue a task to run the following - // steps and abort this algorithm: - queueMicrotask(() => { - // 1. Set fr’s state to "done". - fr[kState] = 'done' +/***/ }), - // 2. Set fr’s error to error. - fr[kError] = error +/***/ 31975: +/***/ ((module) => { - // 3. Fire a progress event called error at fr. - fireAProgressEvent('error', fr) +"use strict"; - // 4. If fr’s state is not "loading", fire a progress - // event called loadend at fr. - if (fr[kState] !== 'loading') { - fireAProgressEvent('loadend', fr) - } - }) - break - } +module.exports = factory + +// Construct a tokenizer. This creates both `tokenizeInline` and `tokenizeBlock`. +function factory(type) { + return tokenize + + // Tokenizer for a bound `type`. + function tokenize(value, location) { + var self = this + var offset = self.offset + var tokens = [] + var methods = self[type + 'Methods'] + var tokenizers = self[type + 'Tokenizers'] + var line = location.line + var column = location.column + var index + var length + var method + var name + var matched + var valueLength + + // Trim white space only lines. + if (!value) { + return tokens } - })() -} -/** - * @see https://w3c.github.io/FileAPI/#fire-a-progress-event - * @see https://dom.spec.whatwg.org/#concept-event-fire - * @param {string} e The name of the event - * @param {import('./filereader').FileReader} reader - */ -function fireAProgressEvent (e, reader) { - // The progress event e does not bubble. e.bubbles must be false - // The progress event e is NOT cancelable. e.cancelable must be false - const event = new ProgressEvent(e, { - bubbles: false, - cancelable: false - }) + // Expose on `eat`. + eat.now = now + eat.file = self.file - reader.dispatchEvent(event) -} + // Sync initial offset. + updatePosition('') -/** - * @see https://w3c.github.io/FileAPI/#blob-package-data - * @param {Uint8Array[]} bytes - * @param {string} type - * @param {string?} mimeType - * @param {string?} encodingName - */ -function packageData (bytes, type, mimeType, encodingName) { - // 1. A Blob has an associated package data algorithm, given - // bytes, a type, a optional mimeType, and a optional - // encodingName, which switches on type and runs the - // associated steps: + // Iterate over `value`, and iterate over all tokenizers. When one eats + // something, re-iterate with the remaining value. If no tokenizer eats, + // something failed (should not happen) and an exception is thrown. + while (value) { + index = -1 + length = methods.length + matched = false - switch (type) { - case 'DataURL': { - // 1. Return bytes as a DataURL [RFC2397] subject to - // the considerations below: - // * Use mimeType as part of the Data URL if it is - // available in keeping with the Data URL - // specification [RFC2397]. - // * If mimeType is not available return a Data URL - // without a media-type. [RFC2397]. + while (++index < length) { + name = methods[index] + method = tokenizers[name] - // https://datatracker.ietf.org/doc/html/rfc2397#section-3 - // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data - // mediatype := [ type "/" subtype ] *( ";" parameter ) - // data := *urlchar - // parameter := attribute "=" value - let dataURL = 'data:' + // Previously, we had constructs such as footnotes and YAML that used + // these properties. + // Those are now external (plus there are userland extensions), that may + // still use them. + if ( + method && + /* istanbul ignore next */ (!method.onlyAtStart || self.atStart) && + /* istanbul ignore next */ (!method.notInList || !self.inList) && + /* istanbul ignore next */ (!method.notInBlock || !self.inBlock) && + (!method.notInLink || !self.inLink) + ) { + valueLength = value.length - const parsed = parseMIMEType(mimeType || 'application/octet-stream') + method.apply(self, [eat, value]) - if (parsed !== 'failure') { - dataURL += serializeAMimeType(parsed) + matched = valueLength !== value.length + + if (matched) { + break + } + } } - dataURL += ';base64,' + /* istanbul ignore if */ + if (!matched) { + self.file.fail(new Error('Infinite loop'), eat.now()) + } + } - const decoder = new StringDecoder('latin1') + self.eof = now() - for (const chunk of bytes) { - dataURL += btoa(decoder.write(chunk)) + return tokens + + // Update line, column, and offset based on `value`. + function updatePosition(subvalue) { + var lastIndex = -1 + var index = subvalue.indexOf('\n') + + while (index !== -1) { + line++ + lastIndex = index + index = subvalue.indexOf('\n', index + 1) } - dataURL += btoa(decoder.end()) + if (lastIndex === -1) { + column += subvalue.length + } else { + column = subvalue.length - lastIndex + } - return dataURL + if (line in offset) { + if (lastIndex !== -1) { + column += offset[line] + } else if (column <= offset[line]) { + column = offset[line] + 1 + } + } } - case 'Text': { - // 1. Let encoding be failure - let encoding = 'failure' - // 2. If the encodingName is present, set encoding to the - // result of getting an encoding from encodingName. - if (encodingName) { - encoding = getEncoding(encodingName) - } + // Get offset. Called before the first character is eaten to retrieve the + // range’s offsets. + function getOffset() { + var indentation = [] + var pos = line + 1 - // 3. If encoding is failure, and mimeType is present: - if (encoding === 'failure' && mimeType) { - // 1. Let type be the result of parse a MIME type - // given mimeType. - const type = parseMIMEType(mimeType) + // Done. Called when the last character is eaten to retrieve the range’s + // offsets. + return function () { + var last = line + 1 - // 2. If type is not failure, set encoding to the result - // of getting an encoding from type’s parameters["charset"]. - if (type !== 'failure') { - encoding = getEncoding(type.parameters.get('charset')) + while (pos < last) { + indentation.push((offset[pos] || 0) + 1) + + pos++ } - } - // 4. If encoding is failure, then set encoding to UTF-8. - if (encoding === 'failure') { - encoding = 'UTF-8' + return indentation } + } - // 5. Decode bytes using fallback encoding encoding, and - // return the result. - return decode(bytes, encoding) + // Get the current position. + function now() { + var pos = {line: line, column: column} + + pos.offset = self.toOffset(pos) + + return pos } - case 'ArrayBuffer': { - // Return a new ArrayBuffer whose contents are bytes. - const sequence = combineByteSequences(bytes) - return sequence.buffer + // Store position information for a node. + function Position(start) { + this.start = start + this.end = now() } - case 'BinaryString': { - // Return bytes as a binary string, in which every byte - // is represented by a code unit of equal value [0..255]. - let binaryString = '' - const decoder = new StringDecoder('latin1') + // Throw when a value is incorrectly eaten. This shouldn’t happen but will + // throw on new, incorrect rules. + function validateEat(subvalue) { + /* istanbul ignore if */ + if (value.slice(0, subvalue.length) !== subvalue) { + // Capture stack-trace. + self.file.fail( + new Error( + 'Incorrectly eaten value: please report this warning on https://git.io/vg5Ft' + ), + now() + ) + } + } - for (const chunk of bytes) { - binaryString += decoder.write(chunk) + // Mark position and patch `node.position`. + function position() { + var before = now() + + return update + + // Add the position to a node. + function update(node, indent) { + var previous = node.position + var start = previous ? previous.start : before + var combined = [] + var n = previous && previous.end.line + var l = before.line + + node.position = new Position(start) + + // If there was already a `position`, this node was merged. Fixing + // `start` wasn’t hard, but the indent is different. Especially + // because some information, the indent between `n` and `l` wasn’t + // tracked. Luckily, that space is (should be?) empty, so we can + // safely check for it now. + if (previous && indent && previous.indent) { + combined = previous.indent + + if (n < l) { + while (++n < l) { + combined.push((offset[n] || 0) + 1) + } + + combined.push(before.column) + } + + indent = combined.concat(indent) + } + + node.position.indent = indent || [] + + return node + } + } + + // Add `node` to `parent`s children or to `tokens`. Performs merges where + // possible. + function add(node, parent) { + var children = parent ? parent.children : tokens + var previous = children[children.length - 1] + var fn + + if ( + previous && + node.type === previous.type && + (node.type === 'text' || node.type === 'blockquote') && + mergeable(previous) && + mergeable(node) + ) { + fn = node.type === 'text' ? mergeText : mergeBlockquote + node = fn.call(self, previous, node) } - binaryString += decoder.end() + if (node !== previous) { + children.push(node) + } - return binaryString + if (self.atStart && tokens.length !== 0) { + self.exitStart() + } + + return node } - } -} -/** - * @see https://encoding.spec.whatwg.org/#decode - * @param {Uint8Array[]} ioQueue - * @param {string} encoding - */ -function decode (ioQueue, encoding) { - const bytes = combineByteSequences(ioQueue) + // Remove `subvalue` from `value`. `subvalue` must be at the start of + // `value`. + function eat(subvalue) { + var indent = getOffset() + var pos = position() + var current = now() - // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. - const BOMEncoding = BOMSniffing(bytes) + validateEat(subvalue) - let slice = 0 + apply.reset = reset + reset.test = test + apply.test = test - // 2. If BOMEncoding is non-null: - if (BOMEncoding !== null) { - // 1. Set encoding to BOMEncoding. - encoding = BOMEncoding + value = value.slice(subvalue.length) - // 2. Read three bytes from ioQueue, if BOMEncoding is - // UTF-8; otherwise read two bytes. - // (Do nothing with those bytes.) - slice = BOMEncoding === 'UTF-8' ? 3 : 2 - } + updatePosition(subvalue) - // 3. Process a queue with an instance of encoding’s - // decoder, ioQueue, output, and "replacement". + indent = indent() - // 4. Return output. + return apply - const sliced = bytes.slice(slice) - return new TextDecoder(encoding).decode(sliced) + // Add the given arguments, add `position` to the returned node, and + // return the node. + function apply(node, parent) { + return pos(add(pos(node), parent), indent) + } + + // Functions just like apply, but resets the content: the line and + // column are reversed, and the eaten value is re-added. This is + // useful for nodes with a single type of content, such as lists and + // tables. See `apply` above for what parameters are expected. + function reset() { + var node = apply.apply(null, arguments) + + line = current.line + column = current.column + value = subvalue + value + + return node + } + + // Test the position, after eating, and reverse to a not-eaten state. + function test() { + var result = pos({}) + + line = current.line + column = current.column + value = subvalue + value + + return result.position + } + } + } } -/** - * @see https://encoding.spec.whatwg.org/#bom-sniff - * @param {Uint8Array} ioQueue - */ -function BOMSniffing (ioQueue) { - // 1. Let BOM be the result of peeking 3 bytes from ioQueue, - // converted to a byte sequence. - const [a, b, c] = ioQueue +// Check whether a node is mergeable with adjacent nodes. +function mergeable(node) { + var start + var end - // 2. For each of the rows in the table below, starting with - // the first one and going down, if BOM starts with the - // bytes given in the first column, then return the - // encoding given in the cell in the second column of that - // row. Otherwise, return null. - if (a === 0xEF && b === 0xBB && c === 0xBF) { - return 'UTF-8' - } else if (a === 0xFE && b === 0xFF) { - return 'UTF-16BE' - } else if (a === 0xFF && b === 0xFE) { - return 'UTF-16LE' + if (node.type !== 'text' || !node.position) { + return true } - return null -} + start = node.position.start + end = node.position.end -/** - * @param {Uint8Array[]} sequences - */ -function combineByteSequences (sequences) { - const size = sequences.reduce((a, b) => { - return a + b.byteLength - }, 0) + // Only merge nodes which occupy the same size as their `value`. + return ( + start.line !== end.line || end.column - start.column === node.value.length + ) +} - let offset = 0 +// Merge two text nodes: `node` into `prev`. +function mergeText(previous, node) { + previous.value += node.value - return sequences.reduce((a, b) => { - a.set(b, offset) - offset += b.byteLength - return a - }, new Uint8Array(size)) + return previous } -module.exports = { - staticPropertyDescriptors, - readOperation, - fireAProgressEvent +// Merge two blockquotes: `node` into `prev`, unless in CommonMark or gfm modes. +function mergeBlockquote(previous, node) { + if (this.options.commonmark || this.options.gfm) { + return node + } + + previous.children = previous.children.concat(node.children) + + return previous } /***/ }), -/***/ 2581: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 57468: +/***/ ((module) => { "use strict"; -// We include a version number for the Dispatcher API. In case of breaking changes, -// this version number must be increased to avoid conflicts. -const globalDispatcher = Symbol.for('undici.globalDispatcher.1') -const { InvalidArgumentError } = __nccwpck_require__(8707) -const Agent = __nccwpck_require__(9965) +module.exports = factory -if (getGlobalDispatcher() === undefined) { - setGlobalDispatcher(new Agent()) -} +var backslash = '\\' -function setGlobalDispatcher (agent) { - if (!agent || typeof agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument agent must implement Agent') - } - Object.defineProperty(globalThis, globalDispatcher, { - value: agent, - writable: true, - enumerable: false, - configurable: false - }) -} +// Factory to de-escape a value, based on a list at `key` in `ctx`. +function factory(ctx, key) { + return unescape -function getGlobalDispatcher () { - return globalThis[globalDispatcher] -} + // De-escape a string using the expression at `key` in `ctx`. + function unescape(value) { + var previous = 0 + var index = value.indexOf(backslash) + var escape = ctx[key] + var queue = [] + var character -module.exports = { - setGlobalDispatcher, - getGlobalDispatcher + while (index !== -1) { + queue.push(value.slice(previous, index)) + previous = index + 1 + character = value.charAt(previous) + + // If the following character is not a valid escape, add the slash. + if (!character || escape.indexOf(character) === -1) { + queue.push(backslash) + } + + index = value.indexOf(backslash, previous + 1) + } + + queue.push(value.slice(previous)) + + return queue.join('') + } } /***/ }), -/***/ 8840: +/***/ 19245: /***/ ((module) => { "use strict"; -module.exports = class DecoratorHandler { - constructor (handler) { - this.handler = handler - } +module.exports = indentation - onConnect (...args) { - return this.handler.onConnect(...args) - } +var tab = '\t' +var space = ' ' - onError (...args) { - return this.handler.onError(...args) - } +var spaceSize = 1 +var tabSize = 4 - onUpgrade (...args) { - return this.handler.onUpgrade(...args) - } +// Gets indentation information for a line. +function indentation(value) { + var index = 0 + var indent = 0 + var character = value.charAt(index) + var stops = {} + var size + var lastIndent = 0 - onHeaders (...args) { - return this.handler.onHeaders(...args) - } + while (character === tab || character === space) { + size = character === tab ? tabSize : spaceSize - onData (...args) { - return this.handler.onData(...args) - } + indent += size - onComplete (...args) { - return this.handler.onComplete(...args) - } + if (size > 1) { + indent = Math.floor(indent / size) * size + } - onBodySent (...args) { - return this.handler.onBodySent(...args) + while (lastIndent < indent) { + stops[++lastIndent] = index + } + + character = value.charAt(++index) } + + return {indent: indent, stops: stops} } /***/ }), -/***/ 8299: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 76774: +/***/ ((__unused_webpack_module, exports) => { "use strict"; -const util = __nccwpck_require__(3440) -const { kBodyUsed } = __nccwpck_require__(6443) -const assert = __nccwpck_require__(2613) -const { InvalidArgumentError } = __nccwpck_require__(8707) -const EE = __nccwpck_require__(4434) +var attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*' +var unquoted = '[^"\'=<>`\\u0000-\\u0020]+' +var singleQuoted = "'[^']*'" +var doubleQuoted = '"[^"]*"' +var attributeValue = + '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')' +var attribute = + '(?:\\s+' + attributeName + '(?:\\s*=\\s*' + attributeValue + ')?)' +var openTag = '<[A-Za-z][A-Za-z0-9\\-]*' + attribute + '*\\s*\\/?>' +var closeTag = '<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>' +var comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->' +var processing = '<[?].*?[?]>' +var declaration = '<![A-Za-z]+\\s+[^>]*>' +var cdata = '<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' + +exports.X = new RegExp('^(?:' + openTag + '|' + closeTag + ')') + +exports.T = new RegExp( + '^(?:' + + openTag + + '|' + + closeTag + + '|' + + comment + + '|' + + processing + + '|' + + declaration + + '|' + + cdata + + ')' +) -const redirectableStatusCodes = [300, 301, 302, 303, 307, 308] -const kBody = Symbol('body') +/***/ }), -class BodyAsyncIterable { - constructor (body) { - this[kBody] = body - this[kBodyUsed] = false - } +/***/ 93808: +/***/ ((module) => { - async * [Symbol.asyncIterator] () { - assert(!this[kBodyUsed], 'disturbed') - this[kBodyUsed] = true - yield * this[kBody] - } -} +"use strict"; -class RedirectHandler { - constructor (dispatch, maxRedirections, opts, handler) { - if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { - throw new InvalidArgumentError('maxRedirections must be a positive number') - } - util.validateHandler(handler, opts.method, opts.upgrade) +module.exports = interrupt - this.dispatch = dispatch - this.location = null - this.abort = null - this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy - this.maxRedirections = maxRedirections - this.handler = handler - this.history = [] +function interrupt(interruptors, tokenizers, ctx, parameters) { + var length = interruptors.length + var index = -1 + var interruptor + var config - if (util.isStream(this.opts.body)) { - // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp - // so that it can be dispatched again? - // TODO (fix): Do we need 100-expect support to provide a way to do this properly? - if (util.bodyLength(this.opts.body) === 0) { - this.opts.body - .on('data', function () { - assert(false) - }) - } + while (++index < length) { + interruptor = interruptors[index] + config = interruptor[1] || {} - if (typeof this.opts.body.readableDidRead !== 'boolean') { - this.opts.body[kBodyUsed] = false - EE.prototype.on.call(this.opts.body, 'data', function () { - this[kBodyUsed] = true - }) - } - } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { - // TODO (fix): We can't access ReadableStream internal state - // to determine whether or not it has been disturbed. This is just - // a workaround. - this.opts.body = new BodyAsyncIterable(this.opts.body) - } else if ( - this.opts.body && - typeof this.opts.body !== 'string' && - !ArrayBuffer.isView(this.opts.body) && - util.isIterable(this.opts.body) + if ( + config.pedantic !== undefined && + config.pedantic !== ctx.options.pedantic ) { - // TODO: Should we allow re-using iterable if !this.opts.idempotent - // or through some other flag? - this.opts.body = new BodyAsyncIterable(this.opts.body) + continue } - } - onConnect (abort) { - this.abort = abort - this.handler.onConnect(abort, { history: this.history }) - } + if ( + config.commonmark !== undefined && + config.commonmark !== ctx.options.commonmark + ) { + continue + } - onUpgrade (statusCode, headers, socket) { - this.handler.onUpgrade(statusCode, headers, socket) + if (tokenizers[interruptor[0]].apply(ctx, parameters)) { + return true + } } - onError (error) { - this.handler.onError(error) - } + return false +} - onHeaders (statusCode, headers, resume, statusText) { - this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) - ? null - : parseLocation(statusCode, headers) - if (this.opts.origin) { - this.history.push(new URL(this.opts.path, this.opts.origin)) - } +/***/ }), - if (!this.location) { - return this.handler.onHeaders(statusCode, headers, resume, statusText) - } +/***/ 99880: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) - const path = search ? `${pathname}${search}` : pathname +"use strict"; - // Remove headers referring to the original URL. - // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. - // https://tools.ietf.org/html/rfc7231#section-6.4 - this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin) - this.opts.path = path - this.opts.origin = origin - this.opts.maxRedirections = 0 - this.opts.query = null - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - // In case of HTTP 303, always replace method to be either HEAD or GET - if (statusCode === 303 && this.opts.method !== 'HEAD') { - this.opts.method = 'GET' - this.opts.body = null - } - } +var collapseWhiteSpace = __nccwpck_require__(37352) - onData (chunk) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 +module.exports = normalize - TLDR: undici always ignores 3xx response bodies. +// Normalize an identifier. Collapses multiple white space characters into a +// single space, and removes casing. +function normalize(value) { + return collapseWhiteSpace(value).toLowerCase() +} - Redirection is used to serve the requested resource from another URL, so it is assumes that - no body is generated (and thus can be ignored). Even though generating a body is not prohibited. - For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually - (which means it's optional and not mandated) contain just an hyperlink to the value of - the Location response header, so the body can be ignored safely. +/***/ }), - For status 300, which is "Multiple Choices", the spec mentions both generating a Location - response header AND a response body with the other possible location to follow. - Since the spec explicitily chooses not to specify a format for such body and leave it to - servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. - */ - } else { - return this.handler.onData(chunk) - } - } +/***/ 39729: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - onComplete (trailers) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 +"use strict"; - TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections - and neither are useful if present. - See comment on onData method above for more detailed informations. - */ +var trim = __nccwpck_require__(15464) +var repeat = __nccwpck_require__(40471) +var getIndent = __nccwpck_require__(19245) - this.location = null - this.abort = null +module.exports = indentation - this.dispatch(this.opts, this) - } else { - this.handler.onComplete(trailers) - } - } +var lineFeed = '\n' +var space = ' ' +var exclamationMark = '!' - onBodySent (chunk) { - if (this.handler.onBodySent) { - this.handler.onBodySent(chunk) +// Remove the minimum indent from every line in `value`. Supports both tab, +// spaced, and mixed indentation (as well as possible). +function indentation(value, maximum) { + var values = value.split(lineFeed) + var position = values.length + 1 + var minIndent = Infinity + var matrix = [] + var index + var indentation + var stops + + values.unshift(repeat(space, maximum) + exclamationMark) + + while (position--) { + indentation = getIndent(values[position]) + + matrix[position] = indentation.stops + + if (trim(values[position]).length === 0) { + continue } - } -} -function parseLocation (statusCode, headers) { - if (redirectableStatusCodes.indexOf(statusCode) === -1) { - return null - } + if (indentation.indent) { + if (indentation.indent > 0 && indentation.indent < minIndent) { + minIndent = indentation.indent + } + } else { + minIndent = Infinity - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toString().toLowerCase() === 'location') { - return headers[i + 1] + break } } -} -// https://tools.ietf.org/html/rfc7231#section-6.4.4 -function shouldRemoveHeader (header, removeContent, unknownOrigin) { - if (header.length === 4) { - return util.headerNameToString(header) === 'host' - } - if (removeContent && util.headerNameToString(header).startsWith('content-')) { - return true - } - if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { - const name = util.headerNameToString(header) - return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' - } - return false -} + if (minIndent !== Infinity) { + position = values.length -// https://tools.ietf.org/html/rfc7231#section-6.4 -function cleanRequestHeaders (headers, removeContent, unknownOrigin) { - const ret = [] - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]) - } - } - } else if (headers && typeof headers === 'object') { - for (const key of Object.keys(headers)) { - if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { - ret.push(key, headers[key]) + while (position--) { + stops = matrix[position] + index = minIndent + + while (index && !(index in stops)) { + index-- } + + values[position] = values[position].slice(stops[index] + 1) } - } else { - assert(headers == null, 'headers must be an object or an array') } - return ret -} -module.exports = RedirectHandler + values.shift() + + return values.join(lineFeed) +} /***/ }), -/***/ 3573: +/***/ 32780: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const assert = __nccwpck_require__(2613) +"use strict"; -const { kRetryHandlerDefaultRetry } = __nccwpck_require__(6443) -const { RequestRetryError } = __nccwpck_require__(8707) -const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3440) -function calculateRetryAfterHeader (retryAfter) { - const current = Date.now() - const diff = new Date(retryAfter).getTime() - current +var unherit = __nccwpck_require__(25351) +var xtend = __nccwpck_require__(80869) +var Compiler = __nccwpck_require__(68275) - return diff +module.exports = stringify +stringify.Compiler = Compiler + +function stringify(options) { + var Local = unherit(Compiler) + Local.prototype.options = xtend( + Local.prototype.options, + this.data('settings'), + options + ) + this.Compiler = Local } -class RetryHandler { - constructor (opts, handlers) { - const { retryOptions, ...dispatchOpts } = opts - const { - // Retry scoped - retry: retryFn, - maxRetries, - maxTimeout, - minTimeout, - timeoutFactor, - // Response scoped - methods, - errorCodes, - retryAfter, - statusCodes - } = retryOptions ?? {} - this.dispatch = handlers.dispatch - this.handler = handlers.handler - this.opts = dispatchOpts - this.abort = null - this.aborted = false - this.retryOpts = { - retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], - retryAfter: retryAfter ?? true, - maxTimeout: maxTimeout ?? 30 * 1000, // 30s, - timeout: minTimeout ?? 500, // .5s - timeoutFactor: timeoutFactor ?? 2, - maxRetries: maxRetries ?? 5, - // What errors we should retry - methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], - // Indicates which errors to retry - statusCodes: statusCodes ?? [500, 502, 503, 504, 429], - // List of errors to retry - errorCodes: errorCodes ?? [ - 'ECONNRESET', - 'ECONNREFUSED', - 'ENOTFOUND', - 'ENETDOWN', - 'ENETUNREACH', - 'EHOSTDOWN', - 'EHOSTUNREACH', - 'EPIPE' - ] +/***/ }), + +/***/ 68275: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(80869) +var toggle = __nccwpck_require__(33600) + +module.exports = Compiler + +// Construct a new compiler. +function Compiler(tree, file) { + this.inLink = false + this.inTable = false + this.tree = tree + this.file = file + this.options = xtend(this.options) + this.setOptions({}) +} + +var proto = Compiler.prototype + +// Enter and exit helpers. */ +proto.enterLink = toggle('inLink', false) +proto.enterTable = toggle('inTable', false) +proto.enterLinkReference = __nccwpck_require__(15912) + +// Configuration. +proto.options = __nccwpck_require__(58236) +proto.setOptions = __nccwpck_require__(14179) + +proto.compile = __nccwpck_require__(68882) +proto.visit = __nccwpck_require__(14327) +proto.all = __nccwpck_require__(57524) +proto.block = __nccwpck_require__(65590) +proto.visitOrderedItems = __nccwpck_require__(60859) +proto.visitUnorderedItems = __nccwpck_require__(41250) + +// Expose visitors. +proto.visitors = { + root: __nccwpck_require__(55900), + text: __nccwpck_require__(49739), + heading: __nccwpck_require__(71124), + paragraph: __nccwpck_require__(71940), + blockquote: __nccwpck_require__(1647), + list: __nccwpck_require__(71656), + listItem: __nccwpck_require__(43138), + inlineCode: __nccwpck_require__(67163), + code: __nccwpck_require__(47149), + html: __nccwpck_require__(37209), + thematicBreak: __nccwpck_require__(73345), + strong: __nccwpck_require__(86747), + emphasis: __nccwpck_require__(61822), + break: __nccwpck_require__(83129), + delete: __nccwpck_require__(50455), + link: __nccwpck_require__(10892), + linkReference: __nccwpck_require__(15536), + imageReference: __nccwpck_require__(24147), + definition: __nccwpck_require__(16921), + image: __nccwpck_require__(63423), + table: __nccwpck_require__(17518), + tableCell: __nccwpck_require__(40955) +} + + +/***/ }), + +/***/ 58236: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + gfm: true, + commonmark: false, + pedantic: false, + entities: 'false', + setext: false, + closeAtx: false, + tableCellPadding: true, + tablePipeAlign: true, + stringLength: stringLength, + incrementListMarker: true, + tightDefinitions: false, + fences: false, + fence: '`', + bullet: '-', + listItemIndent: 'tab', + rule: '*', + ruleSpaces: true, + ruleRepetition: 3, + strong: '*', + emphasis: '_' +} + +function stringLength(value) { + return value.length +} + + +/***/ }), + +/***/ 25193: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var decimal = __nccwpck_require__(96734) +var alphanumeric = __nccwpck_require__(99624) +var whitespace = __nccwpck_require__(96472) +var escapes = __nccwpck_require__(80872) +var prefix = __nccwpck_require__(12140) + +module.exports = factory + +var tab = '\t' +var lineFeed = '\n' +var space = ' ' +var numberSign = '#' +var ampersand = '&' +var leftParenthesis = '(' +var rightParenthesis = ')' +var asterisk = '*' +var plusSign = '+' +var dash = '-' +var dot = '.' +var colon = ':' +var lessThan = '<' +var greaterThan = '>' +var leftSquareBracket = '[' +var backslash = '\\' +var rightSquareBracket = ']' +var underscore = '_' +var graveAccent = '`' +var verticalBar = '|' +var tilde = '~' +var exclamationMark = '!' + +var entities = { + '<': '&lt;', + ':': '&#x3A;', + '&': '&amp;', + '|': '&#x7C;', + '~': '&#x7E;' +} + +var shortcut = 'shortcut' +var mailto = 'mailto' +var https = 'https' +var http = 'http' + +var blankExpression = /\n\s*$/ + +// Factory to escape characters. +function factory(options) { + return escape + + // Escape punctuation characters in a node’s value. + function escape(value, node, parent) { + var self = this + var gfm = options.gfm + var commonmark = options.commonmark + var pedantic = options.pedantic + var markers = commonmark ? [dot, rightParenthesis] : [dot] + var siblings = parent && parent.children + var index = siblings && siblings.indexOf(node) + var previous = siblings && siblings[index - 1] + var next = siblings && siblings[index + 1] + var length = value.length + var escapable = escapes(options) + var position = -1 + var queue = [] + var escaped = queue + var afterNewLine + var character + var wordCharBefore + var wordCharAfter + var offset + var replace + + if (previous) { + afterNewLine = text(previous) && blankExpression.test(previous.value) + } else { + afterNewLine = + !parent || parent.type === 'root' || parent.type === 'paragraph' + } + + while (++position < length) { + character = value.charAt(position) + replace = false + + if (character === '\n') { + afterNewLine = true + } else if ( + character === backslash || + character === graveAccent || + character === asterisk || + character === leftSquareBracket || + character === lessThan || + (character === ampersand && prefix(value.slice(position)) > 0) || + (character === rightSquareBracket && self.inLink) || + (gfm && character === tilde && value.charAt(position + 1) === tilde) || + (gfm && + character === verticalBar && + (self.inTable || alignment(value, position))) || + (character === underscore && + // Delegate leading/trailing underscores to the multinode version below. + position > 0 && + position < length - 1 && + (pedantic || + !alphanumeric(value.charAt(position - 1)) || + !alphanumeric(value.charAt(position + 1)))) || + (gfm && !self.inLink && character === colon && protocol(queue.join(''))) + ) { + replace = true + } else if (afterNewLine) { + if ( + character === greaterThan || + character === numberSign || + character === asterisk || + character === dash || + character === plusSign + ) { + replace = true + } else if (decimal(character)) { + offset = position + 1 + + while (offset < length) { + if (!decimal(value.charAt(offset))) { + break + } + + offset++ + } + + if (markers.indexOf(value.charAt(offset)) !== -1) { + next = value.charAt(offset + 1) + + if (!next || next === space || next === tab || next === lineFeed) { + queue.push(value.slice(position, offset)) + position = offset + character = value.charAt(position) + replace = true + } + } + } + } + + if (afterNewLine && !whitespace(character)) { + afterNewLine = false + } + + queue.push(replace ? one(character) : character) } - this.retryCount = 0 - this.start = 0 - this.end = null - this.etag = null - this.resume = null + // Multi-node versions. + if (siblings && text(node)) { + // Check for an opening parentheses after a link-reference (which can be + // joined by white-space). + if (previous && previous.referenceType === shortcut) { + position = -1 + length = escaped.length - // Handle possible onConnect duplication - this.handler.onConnect(reason => { - this.aborted = true - if (this.abort) { - this.abort(reason) + while (++position < length) { + character = escaped[position] + + if (character === space || character === tab) { + continue + } + + if (character === leftParenthesis || character === colon) { + escaped[position] = one(character) + } + + break + } + + // If the current node is all spaces / tabs, preceded by a shortcut, + // and followed by a text starting with `(`, escape it. + if ( + text(next) && + position === length && + next.value.charAt(0) === leftParenthesis + ) { + escaped.push(backslash) + } + } + + // Ensure non-auto-links are not seen as links. This pattern needs to + // check the preceding nodes too. + if ( + gfm && + !self.inLink && + text(previous) && + value.charAt(0) === colon && + protocol(previous.value.slice(-6)) + ) { + escaped[0] = one(colon) + } + + // Escape ampersand if it would otherwise start an entity. + if ( + text(next) && + value.charAt(length - 1) === ampersand && + prefix(ampersand + next.value) !== 0 + ) { + escaped[escaped.length - 1] = one(ampersand) + } + + // Escape exclamation marks immediately followed by links. + if ( + next && + next.type === 'link' && + value.charAt(length - 1) === exclamationMark + ) { + escaped[escaped.length - 1] = one(exclamationMark) + } + + // Escape double tildes in GFM. + if ( + gfm && + text(next) && + value.charAt(length - 1) === tilde && + next.value.charAt(0) === tilde + ) { + escaped.splice(-1, 0, backslash) + } + + // Escape underscores, but not mid-word (unless in pedantic mode). + wordCharBefore = text(previous) && alphanumeric(previous.value.slice(-1)) + wordCharAfter = text(next) && alphanumeric(next.value.charAt(0)) + + if (length === 1) { + if ( + value === underscore && + (pedantic || !wordCharBefore || !wordCharAfter) + ) { + escaped.unshift(backslash) + } } else { - this.reason = reason + if ( + value.charAt(0) === underscore && + (pedantic || !wordCharBefore || !alphanumeric(value.charAt(1))) + ) { + escaped.unshift(backslash) + } + + if ( + value.charAt(length - 1) === underscore && + (pedantic || + !wordCharAfter || + !alphanumeric(value.charAt(length - 2))) + ) { + escaped.splice(-1, 0, backslash) + } } - }) - } + } - onRequestSent () { - if (this.handler.onRequestSent) { - this.handler.onRequestSent() + return escaped.join('') + + function one(character) { + return escapable.indexOf(character) === -1 + ? entities[character] + : backslash + character } } +} - onUpgrade (statusCode, headers, socket) { - if (this.handler.onUpgrade) { - this.handler.onUpgrade(statusCode, headers, socket) +// Check if `index` in `value` is inside an alignment row. +function alignment(value, index) { + var start = value.lastIndexOf(lineFeed, index) + var end = value.indexOf(lineFeed, index) + var char + + end = end === -1 ? value.length : end + + while (++start < end) { + char = value.charAt(start) + + if ( + char !== colon && + char !== dash && + char !== space && + char !== verticalBar + ) { + return false } } - onConnect (abort) { - if (this.aborted) { - abort(this.reason) - } else { - this.abort = abort + return true +} + +// Check if `node` is a text node. +function text(node) { + return node && node.type === 'text' +} + +// Check if `value` ends in a protocol. +function protocol(value) { + var tail = value.slice(-6).toLowerCase() + return tail === mailto || tail.slice(-5) === https || tail.slice(-4) === http +} + + +/***/ }), + +/***/ 57524: +/***/ ((module) => { + +"use strict"; + + +module.exports = all + +// Visit all children of `parent`. +function all(parent) { + var self = this + var children = parent.children + var length = children.length + var results = [] + var index = -1 + + while (++index < length) { + results[index] = self.visit(children[index], parent) + } + + return results +} + + +/***/ }), + +/***/ 65590: +/***/ ((module) => { + +"use strict"; + + +module.exports = block + +var lineFeed = '\n' + +var blank = lineFeed + lineFeed +var triple = blank + lineFeed +var comment = blank + '<!---->' + blank + +// Stringify a block node with block children (e.g., `root` or `blockquote`). +// Knows about code following a list, or adjacent lists with similar bullets, +// and places an extra line feed between them. +function block(node) { + var self = this + var options = self.options + var fences = options.fences + var gap = options.commonmark ? comment : triple + var definitionGap = options.tightDefinitions ? lineFeed : blank + var values = [] + var children = node.children + var length = children.length + var index = -1 + var previous + var child + + while (++index < length) { + previous = child + child = children[index] + + if (previous) { + // A list preceding another list that are equally ordered, or a + // list preceding an indented code block, need a gap between them, + // so as not to see them as one list, or content of the list, + // respectively. + // + // In commonmark, only something that breaks both up can do that, + // so we opt for an empty, invisible comment. In other flavours, + // two blank lines are fine. + if ( + previous.type === 'list' && + ((child.type === 'list' && previous.ordered === child.ordered) || + (child.type === 'code' && !child.lang && !fences)) + ) { + values.push(gap) + } else if ( + previous.type === 'definition' && + child.type === 'definition' + ) { + values.push(definitionGap) + } else { + values.push(blank) + } } + + values.push(self.visit(child, node)) } - onBodySent (chunk) { - if (this.handler.onBodySent) return this.handler.onBodySent(chunk) + return values.join('') +} + + +/***/ }), + +/***/ 68882: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var compact = __nccwpck_require__(56558) + +module.exports = compile + +// Stringify the given tree. +function compile() { + return this.visit(compact(this.tree, this.options.commonmark)) +} + + +/***/ }), + +/***/ 14327: +/***/ ((module) => { + +"use strict"; + + +module.exports = one + +function one(node, parent) { + var self = this + var visitors = self.visitors + + // Fail on unknown nodes. + if (typeof visitors[node.type] !== 'function') { + self.file.fail( + new Error( + 'Missing compiler for node of type `' + node.type + '`: `' + node + '`' + ), + node + ) } - static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) { - const { statusCode, code, headers } = err - const { method, retryOptions } = opts - const { - maxRetries, - timeout, - maxTimeout, - timeoutFactor, - statusCodes, - errorCodes, - methods - } = retryOptions - let { counter, currentTimeout } = state + return visitors[node.type].call(self, node, parent) +} - currentTimeout = - currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout - // Any code that is not a Undici's originated and allowed to retry - if ( - code && - code !== 'UND_ERR_REQ_RETRY' && - code !== 'UND_ERR_SOCKET' && - !errorCodes.includes(code) - ) { - cb(err) - return - } +/***/ }), - // If a set of method are provided and the current method is not in the list - if (Array.isArray(methods) && !methods.includes(method)) { - cb(err) - return - } +/***/ 60859: +/***/ ((module) => { - // If a set of status code are provided and the current status code is not in the list - if ( - statusCode != null && - Array.isArray(statusCodes) && - !statusCodes.includes(statusCode) - ) { - cb(err) - return - } +"use strict"; - // If we reached the max number of retries - if (counter > maxRetries) { - cb(err) - return - } - let retryAfterHeader = headers != null && headers['retry-after'] - if (retryAfterHeader) { - retryAfterHeader = Number(retryAfterHeader) - retryAfterHeader = isNaN(retryAfterHeader) - ? calculateRetryAfterHeader(retryAfterHeader) - : retryAfterHeader * 1e3 // Retry-After is in seconds - } +module.exports = orderedItems - const retryTimeout = - retryAfterHeader > 0 - ? Math.min(retryAfterHeader, maxTimeout) - : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout) +var lineFeed = '\n' +var dot = '.' - state.currentTimeout = retryTimeout +var blank = lineFeed + lineFeed - setTimeout(() => cb(null), retryTimeout) +// Visit ordered list items. +// +// Starts the list with +// `node.start` and increments each following list item +// bullet by one: +// +// 2. foo +// 3. bar +// +// In `incrementListMarker: false` mode, does not increment +// each marker and stays on `node.start`: +// +// 1. foo +// 1. bar +function orderedItems(node) { + var self = this + var fn = self.visitors.listItem + var increment = self.options.incrementListMarker + var values = [] + var start = node.start + var children = node.children + var length = children.length + var index = -1 + var bullet + + start = start == null ? 1 : start + + while (++index < length) { + bullet = (increment ? start + index : start) + dot + values[index] = fn.call(self, children[index], node, index, bullet) } - onHeaders (statusCode, rawHeaders, resume, statusMessage) { - const headers = parseHeaders(rawHeaders) + return values.join(node.spread ? blank : lineFeed) +} - this.retryCount += 1 - if (statusCode >= 300) { - this.abort( - new RequestRetryError('Request failed', statusCode, { - headers, - count: this.retryCount - }) - ) - return false - } +/***/ }), - // Checkpoint for resume from where we left it - if (this.resume != null) { - this.resume = null +/***/ 41250: +/***/ ((module) => { - if (statusCode !== 206) { - return true - } +"use strict"; - const contentRange = parseRangeHeader(headers['content-range']) - // If no content range - if (!contentRange) { - this.abort( - new RequestRetryError('Content-Range mismatch', statusCode, { - headers, - count: this.retryCount - }) - ) - return false - } - // Let's start with a weak etag check - if (this.etag != null && this.etag !== headers.etag) { - this.abort( - new RequestRetryError('ETag mismatch', statusCode, { - headers, - count: this.retryCount - }) - ) - return false - } +module.exports = unorderedItems - const { start, size, end = size } = contentRange +var lineFeed = '\n' - assert(this.start === start, 'content-range mismatch') - assert(this.end == null || this.end === end, 'content-range mismatch') +var blank = lineFeed + lineFeed - this.resume = resume - return true - } +// Visit unordered list items. Uses `options.bullet` as each item’s bullet. +function unorderedItems(node) { + var self = this + var bullet = self.options.bullet + var fn = self.visitors.listItem + var children = node.children + var length = children.length + var index = -1 + var values = [] - if (this.end == null) { - if (statusCode === 206) { - // First time we receive 206 - const range = parseRangeHeader(headers['content-range']) + while (++index < length) { + values[index] = fn.call(self, children[index], node, index, bullet) + } - if (range == null) { - return this.handler.onHeaders( - statusCode, - rawHeaders, - resume, - statusMessage - ) - } + return values.join(node.spread ? blank : lineFeed) +} - const { start, size, end = size } = range - assert( - start != null && Number.isFinite(start) && this.start !== start, - 'content-range mismatch' - ) - assert(Number.isFinite(start)) - assert( - end != null && Number.isFinite(end) && this.end !== end, - 'invalid content-length' - ) +/***/ }), - this.start = start - this.end = end - } +/***/ 14179: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // We make our best to checkpoint the body for further range headers - if (this.end == null) { - const contentLength = headers['content-length'] - this.end = contentLength != null ? Number(contentLength) : null - } +"use strict"; - assert(Number.isFinite(this.start)) - assert( - this.end == null || Number.isFinite(this.end), - 'invalid content-length' - ) - this.resume = resume - this.etag = headers.etag != null ? headers.etag : null +var xtend = __nccwpck_require__(80869) +var encode = __nccwpck_require__(55655) +var defaults = __nccwpck_require__(58236) +var escapeFactory = __nccwpck_require__(25193) +var identity = __nccwpck_require__(73983) + +module.exports = setOptions + +// Map of applicable enums. +var maps = { + entities: {true: true, false: true, numbers: true, escape: true}, + bullet: {'*': true, '-': true, '+': true}, + rule: {'-': true, _: true, '*': true}, + listItemIndent: {tab: true, mixed: true, 1: true}, + emphasis: {_: true, '*': true}, + strong: {_: true, '*': true}, + fence: {'`': true, '~': true} +} + +// Expose `validate`. +var validate = { + boolean: validateBoolean, + string: validateString, + number: validateNumber, + function: validateFunction +} + +// Set options. Does not overwrite previously set options. +function setOptions(options) { + var self = this + var current = self.options + var ruleRepetition + var key + + if (options == null) { + options = {} + } else if (typeof options === 'object') { + options = xtend(options) + } else { + throw new Error('Invalid value `' + options + '` for setting `options`') + } - return this.handler.onHeaders( - statusCode, - rawHeaders, - resume, - statusMessage - ) - } + for (key in defaults) { + validate[typeof defaults[key]](options, key, current[key], maps[key]) + } - const err = new RequestRetryError('Request failed', statusCode, { - headers, - count: this.retryCount - }) + ruleRepetition = options.ruleRepetition - this.abort(err) + if (ruleRepetition && ruleRepetition < 3) { + raise(ruleRepetition, 'options.ruleRepetition') + } - return false + self.encode = encodeFactory(String(options.entities)) + self.escape = escapeFactory(options) + + self.options = options + + return self +} + +// Validate a value to be boolean. Defaults to `def`. Raises an exception with +// `context[name]` when not a boolean. +function validateBoolean(context, name, def) { + var value = context[name] + + if (value == null) { + value = def } - onData (chunk) { - this.start += chunk.length + if (typeof value !== 'boolean') { + raise(value, 'options.' + name) + } - return this.handler.onData(chunk) + context[name] = value +} + +// Validate a value to be boolean. Defaults to `def`. Raises an exception with +// `context[name]` when not a boolean. +function validateNumber(context, name, def) { + var value = context[name] + + if (value == null) { + value = def } - onComplete (rawTrailers) { - this.retryCount = 0 - return this.handler.onComplete(rawTrailers) + if (isNaN(value)) { + raise(value, 'options.' + name) } - onError (err) { - if (this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err) - } + context[name] = value +} - this.retryOpts.retry( - err, - { - state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, - opts: { retryOptions: this.retryOpts, ...this.opts } - }, - onRetry.bind(this) - ) +// Validate a value to be in `map`. Defaults to `def`. Raises an exception +// with `context[name]` when not in `map`. +function validateString(context, name, def, map) { + var value = context[name] - function onRetry (err) { - if (err != null || this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err) - } + if (value == null) { + value = def + } - if (this.start !== 0) { - this.opts = { - ...this.opts, - headers: { - ...this.opts.headers, - range: `bytes=${this.start}-${this.end ?? ''}` - } - } - } + value = String(value) - try { - this.dispatch(this.opts, this) - } catch (err) { - this.handler.onError(err) - } - } + if (!(value in map)) { + raise(value, 'options.' + name) } + + context[name] = value } -module.exports = RetryHandler +// Validate a value to be function. Defaults to `def`. Raises an exception +// with `context[name]` when not a function. +function validateFunction(context, name, def) { + var value = context[name] + + if (value == null) { + value = def + } + + if (typeof value !== 'function') { + raise(value, 'options.' + name) + } + + context[name] = value +} + +// Factory to encode HTML entities. Creates a no-operation function when +// `type` is `'false'`, a function which encodes using named references when +// `type` is `'true'`, and a function which encodes using numbered references +// when `type` is `'numbers'`. +function encodeFactory(type) { + var options = {} + + if (type === 'false') { + return identity + } + + if (type === 'true') { + options.useNamedReferences = true + } + + if (type === 'escape') { + options.escapeOnly = true + options.useNamedReferences = true + } + + return wrapped + + // Encode HTML entities using the bound options. + function wrapped(value) { + return encode(value, options) + } +} + +// Throw an exception with in its `message` `value` and `name`. +function raise(value, name) { + throw new Error('Invalid value `' + value + '` for setting `' + name + '`') +} /***/ }), -/***/ 4415: +/***/ 65118: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const RedirectHandler = __nccwpck_require__(8299) +var entityPrefixLength = __nccwpck_require__(12140) -function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) { - return (dispatch) => { - return function Intercept (opts, handler) { - const { maxRedirections = defaultMaxRedirections } = opts +module.exports = copy - if (!maxRedirections) { - return dispatch(opts, handler) +var ampersand = '&' + +var punctuationExppresion = /[-!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~_]/ + +// For shortcut and collapsed reference links, the contents is also an +// identifier, so we need to restore the original encoding and escaping +// that were present in the source string. +// +// This function takes the unescaped & unencoded value from shortcut’s +// child nodes and the identifier and encodes the former according to +// the latter. +function copy(value, identifier) { + var length = value.length + var count = identifier.length + var result = [] + var position = 0 + var index = 0 + var start + + while (index < length) { + // Take next non-punctuation characters from `value`. + start = index + + while (index < length && !punctuationExppresion.test(value.charAt(index))) { + index += 1 + } + + result.push(value.slice(start, index)) + + // Advance `position` to the next punctuation character. + while ( + position < count && + !punctuationExppresion.test(identifier.charAt(position)) + ) { + position += 1 + } + + // Take next punctuation characters from `identifier`. + start = position + + while ( + position < count && + punctuationExppresion.test(identifier.charAt(position)) + ) { + if (identifier.charAt(position) === ampersand) { + position += entityPrefixLength(identifier.slice(position)) } - const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler) - opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. - return dispatch(opts, redirectHandler) + position += 1 + } + + result.push(identifier.slice(start, position)) + + // Advance `index` to the next non-punctuation character. + while (index < length && punctuationExppresion.test(value.charAt(index))) { + index += 1 } } -} -module.exports = createRedirectInterceptor + return result.join('') +} /***/ }), -/***/ 2824: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 2679: +/***/ ((module) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; -const utils_1 = __nccwpck_require__(172); -// C headers -var ERROR; -(function (ERROR) { - ERROR[ERROR["OK"] = 0] = "OK"; - ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; - ERROR[ERROR["STRICT"] = 2] = "STRICT"; - ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; - ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; - ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; - ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; - ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; - ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; - ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; - ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; - ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; - ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; - ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; - ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; - ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; - ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; - ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; - ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; - ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; - ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; - ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; - ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; - ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; - ERROR[ERROR["USER"] = 24] = "USER"; -})(ERROR = exports.ERROR || (exports.ERROR = {})); -var TYPE; -(function (TYPE) { - TYPE[TYPE["BOTH"] = 0] = "BOTH"; - TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; - TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; -})(TYPE = exports.TYPE || (exports.TYPE = {})); -var FLAGS; -(function (FLAGS) { - FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; - FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; - FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; - FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; - FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; - FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; - FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; - FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; - // 1 << 8 is unused - FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; -})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); -var LENIENT_FLAGS; -(function (LENIENT_FLAGS) { - LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; - LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; - LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; -})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); -var METHODS; -(function (METHODS) { - METHODS[METHODS["DELETE"] = 0] = "DELETE"; - METHODS[METHODS["GET"] = 1] = "GET"; - METHODS[METHODS["HEAD"] = 2] = "HEAD"; - METHODS[METHODS["POST"] = 3] = "POST"; - METHODS[METHODS["PUT"] = 4] = "PUT"; - /* pathological */ - METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; - METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; - METHODS[METHODS["TRACE"] = 7] = "TRACE"; - /* WebDAV */ - METHODS[METHODS["COPY"] = 8] = "COPY"; - METHODS[METHODS["LOCK"] = 9] = "LOCK"; - METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; - METHODS[METHODS["MOVE"] = 11] = "MOVE"; - METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; - METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; - METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; - METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; - METHODS[METHODS["BIND"] = 16] = "BIND"; - METHODS[METHODS["REBIND"] = 17] = "REBIND"; - METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; - METHODS[METHODS["ACL"] = 19] = "ACL"; - /* subversion */ - METHODS[METHODS["REPORT"] = 20] = "REPORT"; - METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; - METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; - METHODS[METHODS["MERGE"] = 23] = "MERGE"; - /* upnp */ - METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; - METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; - METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; - METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; - /* RFC-5789 */ - METHODS[METHODS["PATCH"] = 28] = "PATCH"; - METHODS[METHODS["PURGE"] = 29] = "PURGE"; - /* CalDAV */ - METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; - /* RFC-2068, section 19.6.1.2 */ - METHODS[METHODS["LINK"] = 31] = "LINK"; - METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; - /* icecast */ - METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; - /* RFC-7540, section 11.6 */ - METHODS[METHODS["PRI"] = 34] = "PRI"; - /* RFC-2326 RTSP */ - METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; - METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; - METHODS[METHODS["SETUP"] = 37] = "SETUP"; - METHODS[METHODS["PLAY"] = 38] = "PLAY"; - METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; - METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; - METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; - METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; - METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; - METHODS[METHODS["RECORD"] = 44] = "RECORD"; - /* RAOP */ - METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; -})(METHODS = exports.METHODS || (exports.METHODS = {})); -exports.METHODS_HTTP = [ - METHODS.DELETE, - METHODS.GET, - METHODS.HEAD, - METHODS.POST, - METHODS.PUT, - METHODS.CONNECT, - METHODS.OPTIONS, - METHODS.TRACE, - METHODS.COPY, - METHODS.LOCK, - METHODS.MKCOL, - METHODS.MOVE, - METHODS.PROPFIND, - METHODS.PROPPATCH, - METHODS.SEARCH, - METHODS.UNLOCK, - METHODS.BIND, - METHODS.REBIND, - METHODS.UNBIND, - METHODS.ACL, - METHODS.REPORT, - METHODS.MKACTIVITY, - METHODS.CHECKOUT, - METHODS.MERGE, - METHODS['M-SEARCH'], - METHODS.NOTIFY, - METHODS.SUBSCRIBE, - METHODS.UNSUBSCRIBE, - METHODS.PATCH, - METHODS.PURGE, - METHODS.MKCALENDAR, - METHODS.LINK, - METHODS.UNLINK, - METHODS.PRI, - // TODO(indutny): should we allow it with HTTP? - METHODS.SOURCE, -]; -exports.METHODS_ICE = [ - METHODS.SOURCE, -]; -exports.METHODS_RTSP = [ - METHODS.OPTIONS, - METHODS.DESCRIBE, - METHODS.ANNOUNCE, - METHODS.SETUP, - METHODS.PLAY, - METHODS.PAUSE, - METHODS.TEARDOWN, - METHODS.GET_PARAMETER, - METHODS.SET_PARAMETER, - METHODS.REDIRECT, - METHODS.RECORD, - METHODS.FLUSH, - // For AirPlay - METHODS.GET, - METHODS.POST, -]; -exports.METHOD_MAP = utils_1.enumToMap(METHODS); -exports.H_METHOD_MAP = {}; -Object.keys(exports.METHOD_MAP).forEach((key) => { - if (/^H/.test(key)) { - exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; - } -}); -var FINISH; -(function (FINISH) { - FINISH[FINISH["SAFE"] = 0] = "SAFE"; - FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; - FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; -})(FINISH = exports.FINISH || (exports.FINISH = {})); -exports.ALPHA = []; -for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { - // Upper case - exports.ALPHA.push(String.fromCharCode(i)); - // Lower case - exports.ALPHA.push(String.fromCharCode(i + 0x20)); -} -exports.NUM_MAP = { - 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, - 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, -}; -exports.HEX_MAP = { - 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, - 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, - A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, - a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, -}; -exports.NUM = [ - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', -]; -exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); -exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; -exports.USERINFO_CHARS = exports.ALPHANUM - .concat(exports.MARK) - .concat(['%', ';', ':', '&', '=', '+', '$', ',']); -// TODO(indutny): use RFC -exports.STRICT_URL_CHAR = [ - '!', '"', '$', '%', '&', '\'', - '(', ')', '*', '+', ',', '-', '.', '/', - ':', ';', '<', '=', '>', - '@', '[', '\\', ']', '^', '_', - '`', - '{', '|', '}', '~', -].concat(exports.ALPHANUM); -exports.URL_CHAR = exports.STRICT_URL_CHAR - .concat(['\t', '\f']); -// All characters with 0x80 bit set to 1 -for (let i = 0x80; i <= 0xff; i++) { - exports.URL_CHAR.push(i); -} -exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); -/* Tokens as defined by rfc 2616. Also lowercases them. - * token = 1*<any CHAR except CTLs or separators> - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - */ -exports.STRICT_TOKEN = [ - '!', '#', '$', '%', '&', '\'', - '*', '+', '-', '.', - '^', '_', '`', - '|', '~', -].concat(exports.ALPHANUM); -exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); -/* - * Verify that a char is a valid visible (printable) US-ASCII - * character or %x80-FF - */ -exports.HEADER_CHARS = ['\t']; -for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports.HEADER_CHARS.push(i); - } -} -// ',' = \x44 -exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); -exports.MAJOR = exports.NUM_MAP; -exports.MINOR = exports.MAJOR; -var HEADER_STATE; -(function (HEADER_STATE) { - HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; - HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; - HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; - HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; - HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; - HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; - HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; - HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; - HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; -})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); -exports.SPECIAL_HEADERS = { - 'connection': HEADER_STATE.CONNECTION, - 'content-length': HEADER_STATE.CONTENT_LENGTH, - 'proxy-connection': HEADER_STATE.CONNECTION, - 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, - 'upgrade': HEADER_STATE.UPGRADE, -}; -//# sourceMappingURL=constants.js.map -/***/ }), +module.exports = enclose -/***/ 3870: -/***/ ((module) => { +var quotationMark = '"' +var apostrophe = "'" -module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=' +// There is currently no way to support nested delimiters across Markdown.pl, +// CommonMark, and GitHub (RedCarpet). The following code supports Markdown.pl +// and GitHub. +// CommonMark is not supported when mixing double- and single quotes inside a +// title. +function enclose(title) { + var delimiter = + title.indexOf(quotationMark) === -1 ? quotationMark : apostrophe + return delimiter + title + delimiter +} /***/ }), -/***/ 3434: -/***/ ((module) => { +/***/ 83287: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==' +"use strict"; -/***/ }), +var count = __nccwpck_require__(83076) -/***/ 172: -/***/ ((__unused_webpack_module, exports) => { +module.exports = enclose -"use strict"; +var leftParenthesis = '(' +var rightParenthesis = ')' +var lessThan = '<' +var greaterThan = '>' -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.enumToMap = void 0; -function enumToMap(obj) { - const res = {}; - Object.keys(obj).forEach((key) => { - const value = obj[key]; - if (typeof value === 'number') { - res[key] = value; - } - }); - return res; +var expression = /\s/ + +// Wrap `url` in angle brackets when needed, or when +// forced. +// In links, images, and definitions, the URL part needs +// to be enclosed when it: +// +// - has a length of `0` +// - contains white-space +// - has more or less opening than closing parentheses +function enclose(uri, always) { + if ( + always || + uri.length === 0 || + expression.test(uri) || + count(uri, leftParenthesis) !== count(uri, rightParenthesis) + ) { + return lessThan + uri + greaterThan + } + + return uri } -exports.enumToMap = enumToMap; -//# sourceMappingURL=utils.js.map + /***/ }), -/***/ 7501: +/***/ 15912: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { kClients } = __nccwpck_require__(6443) -const Agent = __nccwpck_require__(9965) -const { - kAgent, - kMockAgentSet, - kMockAgentGet, - kDispatches, - kIsMockActive, - kNetConnect, - kGetNetConnect, - kOptions, - kFactory -} = __nccwpck_require__(1117) -const MockClient = __nccwpck_require__(7365) -const MockPool = __nccwpck_require__(4004) -const { matchValue, buildMockOptions } = __nccwpck_require__(3397) -const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8707) -const Dispatcher = __nccwpck_require__(992) -const Pluralizer = __nccwpck_require__(1529) -const PendingInterceptorsFormatter = __nccwpck_require__(6142) +var identity = __nccwpck_require__(73983) -class FakeWeakRef { - constructor (value) { - this.value = value +module.exports = enter + +// Shortcut and collapsed link references need no escaping and encoding during +// the processing of child nodes (it must be implied from identifier). +// +// This toggler turns encoding and escaping off for shortcut and collapsed +// references. +// +// Implies `enterLink`. +function enter(compiler, node) { + var encode = compiler.encode + var escape = compiler.escape + var exitLink = compiler.enterLink() + + if (node.referenceType !== 'shortcut' && node.referenceType !== 'collapsed') { + return exitLink } - deref () { - return this.value + compiler.escape = identity + compiler.encode = identity + + return exit + + function exit() { + compiler.encode = encode + compiler.escape = escape + exitLink() } } -class MockAgent extends Dispatcher { - constructor (opts) { - super(opts) - this[kNetConnect] = true - this[kIsMockActive] = true +/***/ }), - // Instantiate Agent and encapsulate - if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) { - throw new InvalidArgumentError('Argument opts.agent must implement Agent') - } - const agent = opts && opts.agent ? opts.agent : new Agent(opts) - this[kAgent] = agent +/***/ 12140: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this[kClients] = agent[kClients] - this[kOptions] = buildMockOptions(opts) - } +"use strict"; - get (origin) { - let dispatcher = this[kMockAgentGet](origin) - if (!dispatcher) { - dispatcher = this[kFactory](origin) - this[kMockAgentSet](origin, dispatcher) - } - return dispatcher - } +var decode = __nccwpck_require__(75165) - dispatch (opts, handler) { - // Call MockAgent.get to perform additional setup before dispatching as normal - this.get(opts.origin) - return this[kAgent].dispatch(opts, handler) - } +module.exports = length - async close () { - await this[kAgent].close() - this[kClients].clear() - } +var ampersand = '&' - deactivate () { - this[kIsMockActive] = false - } +// Returns the length of HTML entity that is a prefix of the given string +// (excluding the ampersand), 0 if it does not start with an entity. +function length(value) { + var prefix - activate () { - this[kIsMockActive] = true + /* istanbul ignore if - Currently also tested for at implemention, but we + * keep it here because that’s proper. */ + if (value.charAt(0) !== ampersand) { + return 0 } - enableNetConnect (matcher) { - if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { - if (Array.isArray(this[kNetConnect])) { - this[kNetConnect].push(matcher) - } else { - this[kNetConnect] = [matcher] - } - } else if (typeof matcher === 'undefined') { - this[kNetConnect] = true - } else { - throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') - } - } + prefix = value.split(ampersand, 2).join(ampersand) - disableNetConnect () { - this[kNetConnect] = false - } + return prefix.length - decode(prefix).length +} - // This is required to bypass issues caused by using global symbols - see: - // https://github.com/nodejs/undici/issues/1447 - get isMockActive () { - return this[kIsMockActive] - } - [kMockAgentSet] (origin, dispatcher) { - this[kClients].set(origin, new FakeWeakRef(dispatcher)) - } +/***/ }), - [kFactory] (origin) { - const mockOptions = Object.assign({ agent: this }, this[kOptions]) - return this[kOptions] && this[kOptions].connections === 1 - ? new MockClient(origin, mockOptions) - : new MockPool(origin, mockOptions) - } +/***/ 73983: +/***/ ((module) => { - [kMockAgentGet] (origin) { - // First check if we can immediately find it - const ref = this[kClients].get(origin) - if (ref) { - return ref.deref() - } +"use strict"; - // If the origin is not a string create a dummy parent pool and return to user - if (typeof origin !== 'string') { - const dispatcher = this[kFactory]('http://localhost:9999') - this[kMockAgentSet](origin, dispatcher) - return dispatcher - } - // If we match, create a pool and assign the same dispatches - for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { - const nonExplicitDispatcher = nonExplicitRef.deref() - if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { - const dispatcher = this[kFactory](origin) - this[kMockAgentSet](origin, dispatcher) - dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] - return dispatcher - } - } - } +module.exports = identity - [kGetNetConnect] () { - return this[kNetConnect] - } +function identity(value) { + return value +} - pendingInterceptors () { - const mockAgentClients = this[kClients] - return Array.from(mockAgentClients.entries()) - .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) - .filter(({ pending }) => pending) - } +/***/ }), - assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { - const pending = this.pendingInterceptors() +/***/ 37815: +/***/ ((module) => { - if (pending.length === 0) { - return - } +"use strict"; - const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) - throw new UndiciError(` -${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: +module.exports = label -${pendingInterceptorsFormatter.format(pending)} -`.trim()) +var leftSquareBracket = '[' +var rightSquareBracket = ']' + +var shortcut = 'shortcut' +var collapsed = 'collapsed' + +// Stringify a reference label. +// Because link references are easily, mistakingly, created (for example, +// `[foo]`), reference nodes have an extra property depicting how it looked in +// the original document, so stringification can cause minimal changes. +function label(node) { + var type = node.referenceType + + if (type === shortcut) { + return '' } -} -module.exports = MockAgent + return ( + leftSquareBracket + + (type === collapsed ? '' : node.label || node.identifier) + + rightSquareBracket + ) +} /***/ }), -/***/ 7365: +/***/ 21128: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { promisify } = __nccwpck_require__(9023) -const Client = __nccwpck_require__(6197) -const { buildMockDispatch } = __nccwpck_require__(3397) -const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected -} = __nccwpck_require__(1117) -const { MockInterceptor } = __nccwpck_require__(1511) -const Symbols = __nccwpck_require__(6443) -const { InvalidArgumentError } = __nccwpck_require__(8707) - -/** - * MockClient provides an API that extends the Client to influence the mockDispatches. - */ -class MockClient extends Client { - constructor (origin, opts) { - super(origin, opts) +var repeat = __nccwpck_require__(40471) - if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent') - } +module.exports = pad - this[kMockAgent] = opts.agent - this[kOrigin] = origin - this[kDispatches] = [] - this[kConnected] = 1 - this[kOriginalDispatch] = this.dispatch - this[kOriginalClose] = this.close.bind(this) +var lineFeed = '\n' +var space = ' ' - this.dispatch = buildMockDispatch.call(this) - this.close = this[kClose] - } +var tabSize = 4 - get [Symbols.kConnected] () { - return this[kConnected] - } +// Pad `value` with `level * tabSize` spaces. Respects lines. Ignores empty +// lines. +function pad(value, level) { + var values = value.split(lineFeed) + var index = values.length + var padding = repeat(space, level * tabSize) - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept (opts) { - return new MockInterceptor(opts, this[kDispatches]) + while (index--) { + if (values[index].length !== 0) { + values[index] = padding + values[index] + } } - async [kClose] () { - await promisify(this[kOriginalClose])() - this[kConnected] = 0 - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) - } + return values.join(lineFeed) } -module.exports = MockClient - /***/ }), -/***/ 2429: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 1647: +/***/ ((module) => { "use strict"; -const { UndiciError } = __nccwpck_require__(8707) +module.exports = blockquote -class MockNotMatchedError extends UndiciError { - constructor (message) { - super(message) - Error.captureStackTrace(this, MockNotMatchedError) - this.name = 'MockNotMatchedError' - this.message = message || 'The request does not match any registered mock dispatches' - this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED' +var lineFeed = '\n' +var space = ' ' +var greaterThan = '>' + +function blockquote(node) { + var values = this.block(node).split(lineFeed) + var result = [] + var length = values.length + var index = -1 + var value + + while (++index < length) { + value = values[index] + result[index] = (value ? space : '') + value } + + return greaterThan + result.join(lineFeed + greaterThan) } -module.exports = { - MockNotMatchedError + +/***/ }), + +/***/ 83129: +/***/ ((module) => { + +"use strict"; + + +module.exports = lineBreak + +var backslash = '\\' +var lineFeed = '\n' +var space = ' ' + +var commonmark = backslash + lineFeed +var normal = space + space + lineFeed + +function lineBreak() { + return this.options.commonmark ? commonmark : normal } /***/ }), -/***/ 1511: +/***/ 47149: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(3397) -const { - kDispatches, - kDispatchKey, - kDefaultHeaders, - kDefaultTrailers, - kContentLength, - kMockDispatch -} = __nccwpck_require__(1117) -const { InvalidArgumentError } = __nccwpck_require__(8707) -const { buildURL } = __nccwpck_require__(3440) +var streak = __nccwpck_require__(86863) +var repeat = __nccwpck_require__(40471) +var pad = __nccwpck_require__(21128) -/** - * Defines the scope API for an interceptor reply - */ -class MockScope { - constructor (mockDispatch) { - this[kMockDispatch] = mockDispatch - } +module.exports = code - /** - * Delay a reply by a set amount in ms. - */ - delay (waitInMs) { - if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { - throw new InvalidArgumentError('waitInMs must be a valid integer > 0') +var lineFeed = '\n' +var space = ' ' +var tilde = '~' +var graveAccent = '`' + +// Stringify code. +// Creates indented code when: +// +// - No language tag exists +// - Not in `fences: true` mode +// - A non-empty value exists +// +// Otherwise, GFM fenced code is created: +// +// ````markdown +// ```js +// foo(); +// ``` +// ```` +// +// When in ``fence: `~` `` mode, uses tildes as fences: +// +// ```markdown +// ~~~js +// foo(); +// ~~~ +// ``` +// +// Knows about internal fences: +// +// `````markdown +// ````markdown +// ```javascript +// foo(); +// ``` +// ```` +// ````` +function code(node, parent) { + var self = this + var value = node.value + var options = self.options + var marker = options.fence + var info = node.lang || '' + var fence + + if (info && node.meta) { + info += space + node.meta + } + + info = self.encode(self.escape(info, node)) + + // Without (needed) fences. + if ( + !info && + !options.fences && + value && + value.charAt(0) !== lineFeed && + value.charAt(value.length - 1) !== lineFeed + ) { + // Throw when pedantic, in a list item which isn’t compiled using a tab. + if ( + parent && + parent.type === 'listItem' && + options.listItemIndent !== 'tab' && + options.pedantic + ) { + self.file.fail( + 'Cannot indent code properly. See https://git.io/fxKR8', + node.position + ) } - this[kMockDispatch].delay = waitInMs - return this + return pad(value, 1) } - /** - * For a defined reply, never mark as consumed. - */ - persist () { - this[kMockDispatch].persist = true - return this + // Backticks in the info string don’t work with backtick fenced code. + // Backticks (and tildes) are fine in tilde fenced code. + if (marker === graveAccent && info.indexOf(graveAccent) !== -1) { + marker = tilde } - /** - * Allow one to define a reply for a set amount of matching requests. - */ - times (repeatTimes) { - if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { - throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') - } + fence = repeat(marker, Math.max(streak(value, marker) + 1, 3)) - this[kMockDispatch].times = repeatTimes - return this - } + return fence + info + lineFeed + value + lineFeed + fence } -/** - * Defines an interceptor for a Mock - */ -class MockInterceptor { - constructor (opts, mockDispatches) { - if (typeof opts !== 'object') { - throw new InvalidArgumentError('opts must be an object') - } - if (typeof opts.path === 'undefined') { - throw new InvalidArgumentError('opts.path must be defined') - } - if (typeof opts.method === 'undefined') { - opts.method = 'GET' - } - // See https://github.com/nodejs/undici/issues/1245 - // As per RFC 3986, clients are not supposed to send URI - // fragments to servers when they retrieve a document, - if (typeof opts.path === 'string') { - if (opts.query) { - opts.path = buildURL(opts.path, opts.query) - } else { - // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 - const parsedURL = new URL(opts.path, 'data://') - opts.path = parsedURL.pathname + parsedURL.search - } - } - if (typeof opts.method === 'string') { - opts.method = opts.method.toUpperCase() - } - this[kDispatchKey] = buildKey(opts) - this[kDispatches] = mockDispatches - this[kDefaultHeaders] = {} - this[kDefaultTrailers] = {} - this[kContentLength] = false - } +/***/ }), - createMockScopeDispatchData (statusCode, data, responseOptions = {}) { - const responseData = getResponseData(data) - const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {} - const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers } - const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers } +/***/ 16921: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return { statusCode, data, headers, trailers } - } +"use strict"; - validateReplyParameters (statusCode, data, responseOptions) { - if (typeof statusCode === 'undefined') { - throw new InvalidArgumentError('statusCode must be defined') - } - if (typeof data === 'undefined') { - throw new InvalidArgumentError('data must be defined') - } - if (typeof responseOptions !== 'object') { - throw new InvalidArgumentError('responseOptions must be an object') - } + +var uri = __nccwpck_require__(83287) +var title = __nccwpck_require__(2679) + +module.exports = definition + +var space = ' ' +var colon = ':' +var leftSquareBracket = '[' +var rightSquareBracket = ']' + +// Stringify an URL definition. +// +// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see +// `encloseTitle()`). +// +// ```markdown +// [foo]: <foo at bar dot com> 'An "example" e-mail' +// ``` +function definition(node) { + var content = uri(node.url) + + if (node.title) { + content += space + title(node.title) } - /** - * Mock an undici request with a defined reply. - */ - reply (replyData) { - // Values of reply aren't available right now as they - // can only be available when the reply callback is invoked. - if (typeof replyData === 'function') { - // We'll first wrap the provided callback in another function, - // this function will properly resolve the data from the callback - // when invoked. - const wrappedDefaultsCallback = (opts) => { - // Our reply options callback contains the parameter for statusCode, data and options. - const resolvedData = replyData(opts) + return ( + leftSquareBracket + + (node.label || node.identifier) + + rightSquareBracket + + colon + + space + + content + ) +} - // Check if it is in the right format - if (typeof resolvedData !== 'object') { - throw new InvalidArgumentError('reply options callback must return an object') - } - const { statusCode, data = '', responseOptions = {} } = resolvedData - this.validateReplyParameters(statusCode, data, responseOptions) - // Since the values can be obtained immediately we return them - // from this higher order function that will be resolved later. - return { - ...this.createMockScopeDispatchData(statusCode, data, responseOptions) - } - } +/***/ }), - // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback) - return new MockScope(newMockDispatch) - } +/***/ 50455: +/***/ ((module) => { - // We can have either one or three parameters, if we get here, - // we should have 1-3 parameters. So we spread the arguments of - // this function to obtain the parameters, since replyData will always - // just be the statusCode. - const [statusCode, data = '', responseOptions = {}] = [...arguments] - this.validateReplyParameters(statusCode, data, responseOptions) +"use strict"; - // Send in-already provided data like usual - const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions) - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData) - return new MockScope(newMockDispatch) - } - /** - * Mock an undici request with a defined error. - */ - replyWithError (error) { - if (typeof error === 'undefined') { - throw new InvalidArgumentError('error must be defined') - } +module.exports = strikethrough - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }) - return new MockScope(newMockDispatch) - } +var tilde = '~' - /** - * Set default reply headers on the interceptor for subsequent replies - */ - defaultReplyHeaders (headers) { - if (typeof headers === 'undefined') { - throw new InvalidArgumentError('headers must be defined') - } +var fence = tilde + tilde - this[kDefaultHeaders] = headers - return this - } +function strikethrough(node) { + return fence + this.all(node).join('') + fence +} - /** - * Set default reply trailers on the interceptor for subsequent replies - */ - defaultReplyTrailers (trailers) { - if (typeof trailers === 'undefined') { - throw new InvalidArgumentError('trailers must be defined') - } - this[kDefaultTrailers] = trailers - return this - } +/***/ }), - /** - * Set reply content length header for replies on the interceptor - */ - replyContentLength () { - this[kContentLength] = true - return this +/***/ 61822: +/***/ ((module) => { + +"use strict"; + + +module.exports = emphasis + +var underscore = '_' +var asterisk = '*' + +// Stringify an `emphasis`. +// +// The marker used is configurable through `emphasis`, which defaults to an +// underscore (`'_'`) but also accepts an asterisk (`'*'`): +// +// ```markdown +// *foo* +// ``` +// +// In `pedantic` mode, text which itself contains an underscore will cause the +// marker to default to an asterisk instead: +// +// ```markdown +// *foo_bar* +// ``` +function emphasis(node) { + var marker = this.options.emphasis + var content = this.all(node).join('') + + // When in pedantic mode, prevent using underscore as the marker when there + // are underscores in the content. + if ( + this.options.pedantic && + marker === underscore && + content.indexOf(marker) !== -1 + ) { + marker = asterisk } -} -module.exports.MockInterceptor = MockInterceptor -module.exports.MockScope = MockScope + return marker + content + marker +} /***/ }), -/***/ 4004: +/***/ 71124: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { promisify } = __nccwpck_require__(9023) -const Pool = __nccwpck_require__(5076) -const { buildMockDispatch } = __nccwpck_require__(3397) -const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected -} = __nccwpck_require__(1117) -const { MockInterceptor } = __nccwpck_require__(1511) -const Symbols = __nccwpck_require__(6443) -const { InvalidArgumentError } = __nccwpck_require__(8707) - -/** - * MockPool provides an API that extends the Pool to influence the mockDispatches. - */ -class MockPool extends Pool { - constructor (origin, opts) { - super(origin, opts) - - if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { - throw new InvalidArgumentError('Argument opts.agent must implement Agent') - } +var repeat = __nccwpck_require__(40471) - this[kMockAgent] = opts.agent - this[kOrigin] = origin - this[kDispatches] = [] - this[kConnected] = 1 - this[kOriginalDispatch] = this.dispatch - this[kOriginalClose] = this.close.bind(this) +module.exports = heading - this.dispatch = buildMockDispatch.call(this) - this.close = this[kClose] - } +var lineFeed = '\n' +var space = ' ' +var numberSign = '#' +var dash = '-' +var equalsTo = '=' - get [Symbols.kConnected] () { - return this[kConnected] +// Stringify a heading. +// +// In `setext: true` mode and when `depth` is smaller than three, creates a +// setext header: +// +// ```markdown +// Foo +// === +// ``` +// +// Otherwise, an ATX header is generated: +// +// ```markdown +// ### Foo +// ``` +// +// In `closeAtx: true` mode, the header is closed with hashes: +// +// ```markdown +// ### Foo ### +// ``` +function heading(node) { + var self = this + var depth = node.depth + var setext = self.options.setext + var closeAtx = self.options.closeAtx + var content = self.all(node).join('') + var prefix + + if (setext && depth < 3) { + return ( + content + lineFeed + repeat(depth === 1 ? equalsTo : dash, content.length) + ) } - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept (opts) { - return new MockInterceptor(opts, this[kDispatches]) - } + prefix = repeat(numberSign, node.depth) - async [kClose] () { - await promisify(this[kOriginalClose])() - this[kConnected] = 0 - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) - } + return prefix + space + content + (closeAtx ? space + prefix : '') } -module.exports = MockPool - /***/ }), -/***/ 1117: +/***/ 37209: /***/ ((module) => { "use strict"; -module.exports = { - kAgent: Symbol('agent'), - kOptions: Symbol('options'), - kFactory: Symbol('factory'), - kDispatches: Symbol('dispatches'), - kDispatchKey: Symbol('dispatch key'), - kDefaultHeaders: Symbol('default headers'), - kDefaultTrailers: Symbol('default trailers'), - kContentLength: Symbol('content length'), - kMockAgent: Symbol('mock agent'), - kMockAgentSet: Symbol('mock agent set'), - kMockAgentGet: Symbol('mock agent get'), - kMockDispatch: Symbol('mock dispatch'), - kClose: Symbol('close'), - kOriginalClose: Symbol('original agent close'), - kOrigin: Symbol('origin'), - kIsMockActive: Symbol('is mock active'), - kNetConnect: Symbol('net connect'), - kGetNetConnect: Symbol('get net connect'), - kConnected: Symbol('connected') +module.exports = html + +function html(node) { + return node.value } /***/ }), -/***/ 3397: +/***/ 24147: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { MockNotMatchedError } = __nccwpck_require__(2429) -const { - kDispatches, - kMockAgent, - kOriginalDispatch, - kOrigin, - kGetNetConnect -} = __nccwpck_require__(1117) -const { buildURL, nop } = __nccwpck_require__(3440) -const { STATUS_CODES } = __nccwpck_require__(8611) -const { - types: { - isPromise - } -} = __nccwpck_require__(9023) +var label = __nccwpck_require__(37815) -function matchValue (match, value) { - if (typeof match === 'string') { - return match === value - } - if (match instanceof RegExp) { - return match.test(value) - } - if (typeof match === 'function') { - return match(value) === true - } - return false -} +module.exports = imageReference -function lowerCaseEntries (headers) { - return Object.fromEntries( - Object.entries(headers).map(([headerName, headerValue]) => { - return [headerName.toLocaleLowerCase(), headerValue] - }) +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var exclamationMark = '!' + +function imageReference(node) { + return ( + exclamationMark + + leftSquareBracket + + (this.encode(node.alt, node) || '') + + rightSquareBracket + + label(node) ) } -/** - * @param {import('../../index').Headers|string[]|Record<string, string>} headers - * @param {string} key - */ -function getHeaderByName (headers, key) { - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { - return headers[i + 1] - } - } - - return undefined - } else if (typeof headers.get === 'function') { - return headers.get(key) - } else { - return lowerCaseEntries(headers)[key.toLocaleLowerCase()] - } -} -/** @param {string[]} headers */ -function buildHeadersFromArray (headers) { // fetch HeadersList - const clone = headers.slice() - const entries = [] - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]) - } - return Object.fromEntries(entries) -} +/***/ }), -function matchHeaders (mockDispatch, headers) { - if (typeof mockDispatch.headers === 'function') { - if (Array.isArray(headers)) { // fetch HeadersList - headers = buildHeadersFromArray(headers) - } - return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) - } - if (typeof mockDispatch.headers === 'undefined') { - return true - } - if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { - return false - } +/***/ 63423: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { - const headerValue = getHeaderByName(headers, matchHeaderName) +"use strict"; - if (!matchValue(matchHeaderValue, headerValue)) { - return false - } - } - return true -} -function safeUrl (path) { - if (typeof path !== 'string') { - return path - } +var uri = __nccwpck_require__(83287) +var title = __nccwpck_require__(2679) - const pathSegments = path.split('?') +module.exports = image - if (pathSegments.length !== 2) { - return path - } +var space = ' ' +var leftParenthesis = '(' +var rightParenthesis = ')' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var exclamationMark = '!' - const qp = new URLSearchParams(pathSegments.pop()) - qp.sort() - return [...pathSegments, qp.toString()].join('?') -} +// Stringify an image. +// +// Is smart about enclosing `url` (see `encloseURI()`) and `title` (see +// `encloseTitle()`). +// +// ```markdown +// ![foo](</fav icon.png> 'My "favourite" icon') +// ``` +// +// Supports named entities in `url`, `alt`, and `title` when in +// `settings.encode` mode. +function image(node) { + var self = this + var content = uri(self.encode(node.url || '', node)) + var exit = self.enterLink() + var alt = self.encode(self.escape(node.alt || '', node)) -function matchKey (mockDispatch, { path, method, body, headers }) { - const pathMatch = matchValue(mockDispatch.path, path) - const methodMatch = matchValue(mockDispatch.method, method) - const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true - const headersMatch = matchHeaders(mockDispatch, headers) - return pathMatch && methodMatch && bodyMatch && headersMatch -} + exit() -function getResponseData (data) { - if (Buffer.isBuffer(data)) { - return data - } else if (typeof data === 'object') { - return JSON.stringify(data) - } else { - return data.toString() + if (node.title) { + content += space + title(self.encode(node.title, node)) } + + return ( + exclamationMark + + leftSquareBracket + + alt + + rightSquareBracket + + leftParenthesis + + content + + rightParenthesis + ) } -function getMockDispatch (mockDispatches, key) { - const basePath = key.query ? buildURL(key.path, key.query) : key.path - const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath - // Match path - let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)) - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) - } +/***/ }), - // Match method - matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)) - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`) - } +/***/ 67163: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Match body - matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true) - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`) - } +"use strict"; - // Match headers - matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)) - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`) - } - return matchedMockDispatches[0] -} +var streak = __nccwpck_require__(86863) +var repeat = __nccwpck_require__(40471) -function addMockDispatch (mockDispatches, key, data) { - const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } - const replyData = typeof data === 'function' ? { callback: data } : { ...data } - const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } - mockDispatches.push(newMockDispatch) - return newMockDispatch -} +module.exports = inlineCode -function deleteMockDispatch (mockDispatches, key) { - const index = mockDispatches.findIndex(dispatch => { - if (!dispatch.consumed) { - return false +var graveAccentChar = '`' +var lineFeed = 10 // '\n' +var space = 32 // ' ' +var graveAccent = 96 // '`' + +// Stringify inline code. +// +// Knows about internal ticks (`\``), and ensures one more tick is used to +// enclose the inline code: +// +// ````markdown +// ```foo ``bar`` baz``` +// ```` +// +// Even knows about inital and final ticks: +// +// ``markdown +// `` `foo `` +// `` foo` `` +// ``` +function inlineCode(node) { + var value = node.value + var ticks = repeat(graveAccentChar, streak(value, graveAccentChar) + 1) + var start = ticks + var end = ticks + var head = value.charCodeAt(0) + var tail = value.charCodeAt(value.length - 1) + var wrap = false + var index + var length + + if (head === graveAccent || tail === graveAccent) { + wrap = true + } else if (value.length > 2 && ws(head) && ws(tail)) { + index = 1 + length = value.length - 1 + + while (++index < length) { + if (!ws(value.charCodeAt(index))) { + wrap = true + break + } } - return matchKey(dispatch, key) - }) - if (index !== -1) { - mockDispatches.splice(index, 1) } -} -function buildKey (opts) { - const { path, method, body, headers, query } = opts - return { - path, - method, - body, - headers, - query + if (wrap) { + start += ' ' + end = ' ' + end } -} -function generateKeyValues (data) { - return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ - ...keyValuePairs, - Buffer.from(`${key}`), - Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) - ], []) + return start + value + end } -/** - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status - * @param {number} statusCode - */ -function getStatusText (statusCode) { - return STATUS_CODES[statusCode] || 'unknown' +function ws(code) { + return code === lineFeed || code === space } -async function getResponse (body) { - const buffers = [] - for await (const data of body) { - buffers.push(data) - } - return Buffer.concat(buffers).toString('utf8') -} -/** - * Mock dispatch function used to simulate undici dispatches - */ -function mockDispatch (opts, handler) { - // Get mock dispatch from built key - const key = buildKey(opts) - const mockDispatch = getMockDispatch(this[kDispatches], key) +/***/ }), - mockDispatch.timesInvoked++ +/***/ 15536: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Here's where we resolve a callback if a callback is present for the dispatch data. - if (mockDispatch.data.callback) { - mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } - } +"use strict"; - // Parse mockDispatch data - const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch - const { timesInvoked, times } = mockDispatch - // If it's used up and not persistent, mark as consumed - mockDispatch.consumed = !persist && timesInvoked >= times - mockDispatch.pending = timesInvoked < times +var copy = __nccwpck_require__(65118) +var label = __nccwpck_require__(37815) - // If specified, trigger dispatch error - if (error !== null) { - deleteMockDispatch(this[kDispatches], key) - handler.onError(error) - return true - } +module.exports = linkReference - // Handle the request with a delay if necessary - if (typeof delay === 'number' && delay > 0) { - setTimeout(() => { - handleReply(this[kDispatches]) - }, delay) - } else { - handleReply(this[kDispatches]) - } +var leftSquareBracket = '[' +var rightSquareBracket = ']' - function handleReply (mockDispatches, _data = data) { - // fetch's HeadersList is a 1D string array - const optsHeaders = Array.isArray(opts.headers) - ? buildHeadersFromArray(opts.headers) - : opts.headers - const body = typeof _data === 'function' - ? _data({ ...opts, headers: optsHeaders }) - : _data +var shortcut = 'shortcut' +var collapsed = 'collapsed' - // util.types.isPromise is likely needed for jest. - if (isPromise(body)) { - // If handleReply is asynchronous, throwing an error - // in the callback will reject the promise, rather than - // synchronously throw the error, which breaks some tests. - // Rather, we wait for the callback to resolve if it is a - // promise, and then re-run handleReply with the new body. - body.then((newData) => handleReply(mockDispatches, newData)) - return - } +function linkReference(node) { + var self = this + var type = node.referenceType + var exit = self.enterLinkReference(self, node) + var value = self.all(node).join('') - const responseData = getResponseData(body) - const responseHeaders = generateKeyValues(headers) - const responseTrailers = generateKeyValues(trailers) + exit() - handler.abort = nop - handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)) - handler.onData(Buffer.from(responseData)) - handler.onComplete(responseTrailers) - deleteMockDispatch(mockDispatches, key) + if (type === shortcut || type === collapsed) { + value = copy(value, node.label || node.identifier) } - function resume () {} - - return true + return leftSquareBracket + value + rightSquareBracket + label(node) } -function buildMockDispatch () { - const agent = this[kMockAgent] - const origin = this[kOrigin] - const originalDispatch = this[kOriginalDispatch] - return function dispatch (opts, handler) { - if (agent.isMockActive) { - try { - mockDispatch.call(this, opts, handler) - } catch (error) { - if (error instanceof MockNotMatchedError) { - const netConnect = agent[kGetNetConnect]() - if (netConnect === false) { - throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) - } - if (checkNetConnect(netConnect, origin)) { - originalDispatch.call(this, opts, handler) - } else { - throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) - } - } else { - throw error - } - } - } else { - originalDispatch.call(this, opts, handler) - } - } -} +/***/ }), -function checkNetConnect (netConnect, origin) { - const url = new URL(origin) - if (netConnect === true) { - return true - } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { - return true +/***/ 10892: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var uri = __nccwpck_require__(83287) +var title = __nccwpck_require__(2679) + +module.exports = link + +var space = ' ' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var leftParenthesis = '(' +var rightParenthesis = ')' + +// Expression for a protocol: +// See <https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Generic_syntax>. +var protocol = /^[a-z][a-z+.-]+:\/?/i + +// Stringify a link. +// +// When no title exists, the compiled `children` equal `url`, and `url` starts +// with a protocol, an auto link is created: +// +// ```markdown +// <http://example.com> +// ``` +// +// Otherwise, is smart about enclosing `url` (see `encloseURI()`) and `title` +// (see `encloseTitle()`). +// ``` +// +// ```markdown +// [foo](<foo at bar dot com> 'An "example" e-mail') +// ``` +// +// Supports named entities in the `url` and `title` when in `settings.encode` +// mode. +function link(node) { + var self = this + var content = self.encode(node.url || '', node) + var exit = self.enterLink() + var escaped = self.encode(self.escape(node.url || '', node)) + var value = self.all(node).join('') + + exit() + + if (node.title == null && protocol.test(content) && escaped === value) { + // Backslash escapes do not work in autolinks, so we do not escape. + return uri(self.encode(node.url), true) } - return false -} -function buildMockOptions (opts) { - if (opts) { - const { agent, ...mockOptions } = opts - return mockOptions + content = uri(content) + + if (node.title) { + content += space + title(self.encode(self.escape(node.title, node), node)) } -} -module.exports = { - getResponseData, - getMockDispatch, - addMockDispatch, - deleteMockDispatch, - buildKey, - generateKeyValues, - matchValue, - getResponse, - getStatusText, - mockDispatch, - buildMockDispatch, - checkNetConnect, - buildMockOptions, - getHeaderByName + return ( + leftSquareBracket + + value + + rightSquareBracket + + leftParenthesis + + content + + rightParenthesis + ) } /***/ }), -/***/ 6142: +/***/ 43138: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { Transform } = __nccwpck_require__(2203) -const { Console } = __nccwpck_require__(4236) +var repeat = __nccwpck_require__(40471) +var pad = __nccwpck_require__(21128) -/** - * Gets the output of `console.table(…)` as a string. - */ -module.exports = class PendingInterceptorsFormatter { - constructor ({ disableColors } = {}) { - this.transform = new Transform({ - transform (chunk, _enc, cb) { - cb(null, chunk) - } - }) +module.exports = listItem - this.logger = new Console({ - stdout: this.transform, - inspectOptions: { - colors: !disableColors && !process.env.CI - } - }) - } +var lineFeed = '\n' +var space = ' ' +var leftSquareBracket = '[' +var rightSquareBracket = ']' +var lowercaseX = 'x' - format (pendingInterceptors) { - const withPrettyHeaders = pendingInterceptors.map( - ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ - Method: method, - Origin: origin, - Path: path, - 'Status code': statusCode, - Persistent: persist ? '✅' : '❌', - Invocations: timesInvoked, - Remaining: persist ? Infinity : times - timesInvoked - })) +var ceil = Math.ceil +var blank = lineFeed + lineFeed - this.logger.table(withPrettyHeaders) - return this.transform.read().toString() +var tabSize = 4 + +// Stringify a list item. +// +// Prefixes the content with a checked checkbox when `checked: true`: +// +// ```markdown +// [x] foo +// ``` +// +// Prefixes the content with an unchecked checkbox when `checked: false`: +// +// ```markdown +// [ ] foo +// ``` +function listItem(node, parent, position, bullet) { + var self = this + var style = self.options.listItemIndent + var marker = bullet || self.options.bullet + var spread = node.spread == null ? true : node.spread + var checked = node.checked + var children = node.children + var length = children.length + var values = [] + var index = -1 + var value + var indent + var spacing + + while (++index < length) { + values[index] = self.visit(children[index], node) + } + + value = values.join(spread ? blank : lineFeed) + + if (typeof checked === 'boolean') { + // Note: I’d like to be able to only add the space between the check and + // the value, but unfortunately github does not support empty list-items + // with a checkbox :( + value = + leftSquareBracket + + (checked ? lowercaseX : space) + + rightSquareBracket + + space + + value + } + + if (style === '1' || (style === 'mixed' && value.indexOf(lineFeed) === -1)) { + indent = marker.length + 1 + spacing = space + } else { + indent = ceil((marker.length + 1) / tabSize) * tabSize + spacing = repeat(space, indent - marker.length) } + + return value + ? marker + spacing + pad(value, indent / tabSize).slice(indent) + : marker } /***/ }), -/***/ 1529: +/***/ 71656: /***/ ((module) => { "use strict"; -const singulars = { - pronoun: 'it', - is: 'is', - was: 'was', - this: 'this' +module.exports = list + +function list(node) { + var fn = node.ordered ? this.visitOrderedItems : this.visitUnorderedItems + return fn.call(this, node) } -const plurals = { - pronoun: 'they', - is: 'are', - was: 'were', - this: 'these' + +/***/ }), + +/***/ 71940: +/***/ ((module) => { + +"use strict"; + + +module.exports = paragraph + +function paragraph(node) { + return this.all(node).join('') } -module.exports = class Pluralizer { - constructor (singular, plural) { - this.singular = singular - this.plural = plural - } - pluralize (count) { - const one = count === 1 - const keys = one ? singulars : plurals - const noun = one ? this.singular : this.plural - return { ...keys, count, noun } +/***/ }), + +/***/ 55900: +/***/ ((module) => { + +"use strict"; + + +module.exports = root + +var lineFeed = '\n' + +// Stringify a root. +// Adds a final newline to ensure valid POSIX files. */ +function root(node) { + var doc = this.block(node) + + if (doc.charAt(doc.length - 1) !== lineFeed) { + doc += lineFeed } + + return doc +} + + +/***/ }), + +/***/ 86747: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var repeat = __nccwpck_require__(40471) + +module.exports = strong + +// Stringify a `strong`. +// +// The marker used is configurable by `strong`, which defaults to an asterisk +// (`'*'`) but also accepts an underscore (`'_'`): +// +// ```markdown +// __foo__ +// ``` +function strong(node) { + var marker = repeat(this.options.strong, 2) + return marker + this.all(node).join('') + marker } /***/ }), -/***/ 4869: +/***/ 40955: /***/ ((module) => { "use strict"; -/* eslint-disable */ +module.exports = tableCell -// Extracted from node/lib/internal/fixed_queue.js +var lineFeed = /\r?\n/g -// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. -const kSize = 2048; -const kMask = kSize - 1; +function tableCell(node) { + return this.all(node).join('').replace(lineFeed, ' ') +} -// The FixedQueue is implemented as a singly-linked list of fixed-size -// circular buffers. It looks something like this: -// -// head tail -// | | -// v v -// +-----------+ <-----\ +-----------+ <------\ +-----------+ -// | [null] | \----- | next | \------- | next | -// +-----------+ +-----------+ +-----------+ -// | item | <-- bottom | item | <-- bottom | [empty] | -// | item | | item | | [empty] | -// | item | | item | | [empty] | -// | item | | item | | [empty] | -// | item | | item | bottom --> | item | -// | item | | item | | item | -// | ... | | ... | | ... | -// | item | | item | | item | -// | item | | item | | item | -// | [empty] | <-- top | item | | item | -// | [empty] | | item | | item | -// | [empty] | | [empty] | <-- top top --> | [empty] | -// +-----------+ +-----------+ +-----------+ + +/***/ }), + +/***/ 17518: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var markdownTable = __nccwpck_require__(56144) + +module.exports = table + +// Stringify table. // -// Or, if there is only one circular buffer, it looks something -// like either of these: +// Creates a fenced table. +// The table has aligned delimiters by default, but not in +// `tablePipeAlign: false`: // -// head tail head tail -// | | | | -// v v v v -// +-----------+ +-----------+ -// | [null] | | [null] | -// +-----------+ +-----------+ -// | [empty] | | item | -// | [empty] | | item | -// | item | <-- bottom top --> | [empty] | -// | item | | [empty] | -// | [empty] | <-- top bottom --> | item | -// | [empty] | | item | -// +-----------+ +-----------+ +// ```markdown +// | Header 1 | Header 2 | +// | :-: | - | +// | Alpha | Bravo | +// ``` // -// Adding a value means moving `top` forward by one, removing means -// moving `bottom` forward by one. After reaching the end, the queue -// wraps around. +// The table is spaced by default, but not in `tableCellPadding: false`: // -// When `top === bottom` the current queue is empty and when -// `top + 1 === bottom` it's full. This wastes a single space of storage -// but allows much quicker checks. +// ```markdown +// |Foo|Bar| +// |:-:|---| +// |Baz|Qux| +// ``` +function table(node) { + var self = this + var options = self.options + var padding = options.tableCellPadding + var alignDelimiters = options.tablePipeAlign + var stringLength = options.stringLength + var rows = node.children + var index = rows.length + var exit = self.enterTable() + var result = [] -class FixedCircularBuffer { - constructor() { - this.bottom = 0; - this.top = 0; - this.list = new Array(kSize); - this.next = null; + while (index--) { + result[index] = self.all(rows[index]) } - isEmpty() { - return this.top === this.bottom; - } + exit() - isFull() { - return ((this.top + 1) & kMask) === this.bottom; - } + return markdownTable(result, { + align: node.align, + alignDelimiters: alignDelimiters, + padding: padding, + stringLength: stringLength + }) +} - push(data) { - this.list[this.top] = data; - this.top = (this.top + 1) & kMask; - } - shift() { - const nextItem = this.list[this.bottom]; - if (nextItem === undefined) - return null; - this.list[this.bottom] = undefined; - this.bottom = (this.bottom + 1) & kMask; - return nextItem; - } -} +/***/ }), -module.exports = class FixedQueue { - constructor() { - this.head = this.tail = new FixedCircularBuffer(); - } +/***/ 49739: +/***/ ((module) => { - isEmpty() { - return this.head.isEmpty(); - } +"use strict"; - push(data) { - if (this.head.isFull()) { - // Head is full: Creates a new queue, sets the old queue's `.next` to it, - // and sets it as the new main queue. - this.head = this.head.next = new FixedCircularBuffer(); - } - this.head.push(data); - } - shift() { - const tail = this.tail; - const next = tail.shift(); - if (tail.isEmpty() && tail.next !== null) { - // If there is another queue, it forms the new tail. - this.tail = tail.next; - } - return next; - } -}; +module.exports = text + +// Stringify text. +// Supports named entities in `settings.encode: true` mode: +// +// ```markdown +// AT&amp;T +// ``` +// +// Supports numbered entities in `settings.encode: numbers` mode: +// +// ```markdown +// AT&#x26;T +// ``` +function text(node, parent) { + return this.encode(this.escape(node.value, node, parent), node) +} /***/ }), -/***/ 8640: +/***/ 73345: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const DispatcherBase = __nccwpck_require__(1) -const FixedQueue = __nccwpck_require__(4869) -const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(6443) -const PoolStats = __nccwpck_require__(4622) +var repeat = __nccwpck_require__(40471) -const kClients = Symbol('clients') -const kNeedDrain = Symbol('needDrain') -const kQueue = Symbol('queue') -const kClosedResolve = Symbol('closed resolve') -const kOnDrain = Symbol('onDrain') -const kOnConnect = Symbol('onConnect') -const kOnDisconnect = Symbol('onDisconnect') -const kOnConnectionError = Symbol('onConnectionError') -const kGetDispatcher = Symbol('get dispatcher') -const kAddClient = Symbol('add client') -const kRemoveClient = Symbol('remove client') -const kStats = Symbol('stats') +module.exports = thematic -class PoolBase extends DispatcherBase { - constructor () { - super() +var space = ' ' - this[kQueue] = new FixedQueue() - this[kClients] = [] - this[kQueued] = 0 +// Stringify a `thematic-break`. +// The character used is configurable through `rule`: (`'_'`): +// +// ```markdown +// ___ +// ``` +// +// The number of repititions is defined through `ruleRepetition` (`6`): +// +// ```markdown +// ****** +// ``` +// +// Whether spaces delimit each character, is configured through `ruleSpaces` +// (`true`): +// ```markdown +// * * * +// ``` +function thematic() { + var options = this.options + var rule = repeat(options.rule, options.ruleRepetition) + return options.ruleSpaces ? rule.split('').join(space) : rule +} - const pool = this - this[kOnDrain] = function onDrain (origin, targets) { - const queue = pool[kQueue] +/***/ }), - let needDrain = false +/***/ 56144: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - while (!needDrain) { - const item = queue.shift() - if (!item) { - break - } - pool[kQueued]-- - needDrain = !this.dispatch(item.opts, item.handler) - } +"use strict"; - this[kNeedDrain] = needDrain - if (!this[kNeedDrain] && pool[kNeedDrain]) { - pool[kNeedDrain] = false - pool.emit('drain', origin, [pool, ...targets]) +var repeat = __nccwpck_require__(40471) + +module.exports = markdownTable + +var trailingWhitespace = / +$/ + +// Characters. +var space = ' ' +var lineFeed = '\n' +var dash = '-' +var colon = ':' +var verticalBar = '|' + +var x = 0 +var C = 67 +var L = 76 +var R = 82 +var c = 99 +var l = 108 +var r = 114 + +// Create a table from a matrix of strings. +function markdownTable(table, options) { + var settings = options || {} + var padding = settings.padding !== false + var start = settings.delimiterStart !== false + var end = settings.delimiterEnd !== false + var align = (settings.align || []).concat() + var alignDelimiters = settings.alignDelimiters !== false + var alignments = [] + var stringLength = settings.stringLength || defaultStringLength + var rowIndex = -1 + var rowLength = table.length + var cellMatrix = [] + var sizeMatrix = [] + var row = [] + var sizes = [] + var longestCellByColumn = [] + var mostCellsPerRow = 0 + var cells + var columnIndex + var columnLength + var largest + var size + var cell + var lines + var line + var before + var after + var code + + // This is a superfluous loop if we don’t align delimiters, but otherwise we’d + // do superfluous work when aligning, so optimize for aligning. + while (++rowIndex < rowLength) { + cells = table[rowIndex] + columnIndex = -1 + columnLength = cells.length + row = [] + sizes = [] + + if (columnLength > mostCellsPerRow) { + mostCellsPerRow = columnLength + } + + while (++columnIndex < columnLength) { + cell = serialize(cells[columnIndex]) + + if (alignDelimiters === true) { + size = stringLength(cell) + sizes[columnIndex] = size + + largest = longestCellByColumn[columnIndex] + + if (largest === undefined || size > largest) { + longestCellByColumn[columnIndex] = size + } } - if (pool[kClosedResolve] && queue.isEmpty()) { - Promise - .all(pool[kClients].map(c => c.close())) - .then(pool[kClosedResolve]) - } + row.push(cell) } - this[kOnConnect] = (origin, targets) => { - pool.emit('connect', origin, [pool, ...targets]) - } + cellMatrix[rowIndex] = row + sizeMatrix[rowIndex] = sizes + } - this[kOnDisconnect] = (origin, targets, err) => { - pool.emit('disconnect', origin, [pool, ...targets], err) - } + // Figure out which alignments to use. + columnIndex = -1 + columnLength = mostCellsPerRow - this[kOnConnectionError] = (origin, targets, err) => { - pool.emit('connectionError', origin, [pool, ...targets], err) + if (typeof align === 'object' && 'length' in align) { + while (++columnIndex < columnLength) { + alignments[columnIndex] = toAlignment(align[columnIndex]) } + } else { + code = toAlignment(align) - this[kStats] = new PoolStats(this) - } - - get [kBusy] () { - return this[kNeedDrain] - } - - get [kConnected] () { - return this[kClients].filter(client => client[kConnected]).length + while (++columnIndex < columnLength) { + alignments[columnIndex] = code + } } - get [kFree] () { - return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length - } + // Inject the alignment row. + columnIndex = -1 + columnLength = mostCellsPerRow + row = [] + sizes = [] - get [kPending] () { - let ret = this[kQueued] - for (const { [kPending]: pending } of this[kClients]) { - ret += pending - } - return ret - } + while (++columnIndex < columnLength) { + code = alignments[columnIndex] + before = '' + after = '' - get [kRunning] () { - let ret = 0 - for (const { [kRunning]: running } of this[kClients]) { - ret += running + if (code === l) { + before = colon + } else if (code === r) { + after = colon + } else if (code === c) { + before = colon + after = colon } - return ret - } - get [kSize] () { - let ret = this[kQueued] - for (const { [kSize]: size } of this[kClients]) { - ret += size - } - return ret - } + // There *must* be at least one hyphen-minus in each alignment cell. + size = alignDelimiters + ? Math.max( + 1, + longestCellByColumn[columnIndex] - before.length - after.length + ) + : 1 - get stats () { - return this[kStats] - } + cell = before + repeat(dash, size) + after - async [kClose] () { - if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map(c => c.close())) - } else { - return new Promise((resolve) => { - this[kClosedResolve] = resolve - }) - } - } + if (alignDelimiters === true) { + size = before.length + size + after.length - async [kDestroy] (err) { - while (true) { - const item = this[kQueue].shift() - if (!item) { - break + if (size > longestCellByColumn[columnIndex]) { + longestCellByColumn[columnIndex] = size } - item.handler.onError(err) + + sizes[columnIndex] = size } - return Promise.all(this[kClients].map(c => c.destroy(err))) + row[columnIndex] = cell } - [kDispatch] (opts, handler) { - const dispatcher = this[kGetDispatcher]() + // Inject the alignment row. + cellMatrix.splice(1, 0, row) + sizeMatrix.splice(1, 0, sizes) - if (!dispatcher) { - this[kNeedDrain] = true - this[kQueue].push({ opts, handler }) - this[kQueued]++ - } else if (!dispatcher.dispatch(opts, handler)) { - dispatcher[kNeedDrain] = true - this[kNeedDrain] = !this[kGetDispatcher]() - } + rowIndex = -1 + rowLength = cellMatrix.length + lines = [] - return !this[kNeedDrain] - } + while (++rowIndex < rowLength) { + row = cellMatrix[rowIndex] + sizes = sizeMatrix[rowIndex] + columnIndex = -1 + columnLength = mostCellsPerRow + line = [] - [kAddClient] (client) { - client - .on('drain', this[kOnDrain]) - .on('connect', this[kOnConnect]) - .on('disconnect', this[kOnDisconnect]) - .on('connectionError', this[kOnConnectionError]) + while (++columnIndex < columnLength) { + cell = row[columnIndex] || '' + before = '' + after = '' - this[kClients].push(client) + if (alignDelimiters === true) { + size = longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0) + code = alignments[columnIndex] - if (this[kNeedDrain]) { - process.nextTick(() => { - if (this[kNeedDrain]) { - this[kOnDrain](client[kUrl], [this, client]) + if (code === r) { + before = repeat(space, size) + } else if (code === c) { + if (size % 2 === 0) { + before = repeat(space, size / 2) + after = before + } else { + before = repeat(space, size / 2 + 0.5) + after = repeat(space, size / 2 - 0.5) + } + } else { + after = repeat(space, size) } - }) - } + } - return this - } + if (start === true && columnIndex === 0) { + line.push(verticalBar) + } - [kRemoveClient] (client) { - client.close(() => { - const idx = this[kClients].indexOf(client) - if (idx !== -1) { - this[kClients].splice(idx, 1) + if ( + padding === true && + // Don’t add the opening space if we’re not aligning and the cell is + // empty: there will be a closing space. + !(alignDelimiters === false && cell === '') && + (start === true || columnIndex !== 0) + ) { + line.push(space) } - }) - this[kNeedDrain] = this[kClients].some(dispatcher => ( - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true - )) - } -} + if (alignDelimiters === true) { + line.push(before) + } -module.exports = { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher -} + line.push(cell) + if (alignDelimiters === true) { + line.push(after) + } -/***/ }), + if (padding === true) { + line.push(space) + } -/***/ 4622: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (end === true || columnIndex !== columnLength - 1) { + line.push(verticalBar) + } + } -const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(6443) -const kPool = Symbol('pool') + line = line.join('') -class PoolStats { - constructor (pool) { - this[kPool] = pool - } + if (end === false) { + line = line.replace(trailingWhitespace, '') + } - get connected () { - return this[kPool][kConnected] + lines.push(line) } - get free () { - return this[kPool][kFree] - } + return lines.join(lineFeed) +} - get pending () { - return this[kPool][kPending] - } +function serialize(value) { + return value === null || value === undefined ? '' : String(value) +} - get queued () { - return this[kPool][kQueued] - } +function defaultStringLength(value) { + return value.length +} - get running () { - return this[kPool][kRunning] - } +function toAlignment(value) { + var code = typeof value === 'string' ? value.charCodeAt(0) : x - get size () { - return this[kPool][kSize] - } + return code === L || code === l + ? l + : code === R || code === r + ? r + : code === C || code === c + ? c + : x } -module.exports = PoolStats - /***/ }), -/***/ 5076: +/***/ 11112: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kGetDispatcher -} = __nccwpck_require__(8640) -const Client = __nccwpck_require__(6197) -const { - InvalidArgumentError -} = __nccwpck_require__(8707) -const util = __nccwpck_require__(3440) -const { kUrl, kInterceptors } = __nccwpck_require__(6443) -const buildConnector = __nccwpck_require__(9136) - -const kOptions = Symbol('options') -const kConnections = Symbol('connections') -const kFactory = Symbol('factory') +var unified = __nccwpck_require__(23578) +var parse = __nccwpck_require__(24982) +var stringify = __nccwpck_require__(32780) -function defaultFactory (origin, opts) { - return new Client(origin, opts) -} +module.exports = unified().use(parse).use(stringify).freeze() -class Pool extends PoolBase { - constructor (origin, { - connections, - factory = defaultFactory, - connect, - connectTimeout, - tls, - maxCachedSessions, - socketPath, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - allowH2, - ...options - } = {}) { - super() - if (connections != null && (!Number.isFinite(connections) || connections < 0)) { - throw new InvalidArgumentError('invalid connections') - } +/***/ }), - if (typeof factory !== 'function') { - throw new InvalidArgumentError('factory must be a function.') - } +/***/ 33708: +/***/ ((module) => { - if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { - throw new InvalidArgumentError('connect must be a function or an object') - } +"use strict"; - if (typeof connect !== 'function') { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), - ...connect - }) - } - this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) - ? options.interceptors.Pool - : [] - this[kConnections] = connections || null - this[kUrl] = util.parseOrigin(origin) - this[kOptions] = { ...util.deepClone(options), connect, allowH2 } - this[kOptions].interceptors = options.interceptors - ? { ...options.interceptors } - : undefined - this[kFactory] = factory +module.exports = bail - this.on('connectionError', (origin, targets, error) => { - // If a connection error occurs, we remove the client from the pool, - // and emit a connectionError event. They will not be re-used. - // Fixes https://github.com/nodejs/undici/issues/3895 - for (const target of targets) { - // Do not use kRemoveClient here, as it will close the client, - // but the client cannot be closed in this state. - const idx = this[kClients].indexOf(target) - if (idx !== -1) { - this[kClients].splice(idx, 1) - } - } - }) +function bail(err) { + if (err) { + throw err } +} - [kGetDispatcher] () { - let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain]) - if (dispatcher) { - return dispatcher - } +/***/ }), - if (!this[kConnections] || this[kClients].length < this[kConnections]) { - dispatcher = this[kFactory](this[kUrl], this[kOptions]) - this[kAddClient](dispatcher) - } +/***/ 79857: +/***/ ((module) => { - return dispatcher - } -} +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ -module.exports = Pool +module.exports = function isBuffer (obj) { + return obj != null && obj.constructor != null && + typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} /***/ }), -/***/ 2720: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 14805: +/***/ ((module) => { "use strict"; -const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(6443) -const { URL } = __nccwpck_require__(7016) -const Agent = __nccwpck_require__(9965) -const Pool = __nccwpck_require__(5076) -const DispatcherBase = __nccwpck_require__(1) -const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8707) -const buildConnector = __nccwpck_require__(9136) +module.exports = value => { + if (Object.prototype.toString.call(value) !== '[object Object]') { + return false; + } -const kAgent = Symbol('proxy agent') -const kClient = Symbol('proxy client') -const kProxyHeaders = Symbol('proxy headers') -const kRequestTls = Symbol('request tls settings') -const kProxyTls = Symbol('proxy tls settings') -const kConnectEndpoint = Symbol('connect endpoint function') + const prototype = Object.getPrototypeOf(value); + return prototype === null || prototype === Object.prototype; +}; -function defaultProtocolPort (protocol) { - return protocol === 'https:' ? 443 : 80 -} -function buildProxyOptions (opts) { - if (typeof opts === 'string') { - opts = { uri: opts } - } +/***/ }), - if (!opts || !opts.uri) { - throw new InvalidArgumentError('Proxy opts.uri is mandatory') - } +/***/ 39693: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return { - uri: opts.uri, - protocol: opts.protocol || 'https' - } -} +"use strict"; -function defaultFactory (origin, opts) { - return new Pool(origin, opts) -} -class ProxyAgent extends DispatcherBase { - constructor (opts) { - super(opts) - this[kProxy] = buildProxyOptions(opts) - this[kAgent] = new Agent(opts) - this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) - ? opts.interceptors.ProxyAgent - : [] +var wrap = __nccwpck_require__(96285) - if (typeof opts === 'string') { - opts = { uri: opts } - } +module.exports = trough - if (!opts || !opts.uri) { - throw new InvalidArgumentError('Proxy opts.uri is mandatory') - } +trough.wrap = wrap - const { clientFactory = defaultFactory } = opts +var slice = [].slice - if (typeof clientFactory !== 'function') { - throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') - } +// Create new middleware. +function trough() { + var fns = [] + var middleware = {} - this[kRequestTls] = opts.requestTls - this[kProxyTls] = opts.proxyTls - this[kProxyHeaders] = opts.headers || {} + middleware.run = run + middleware.use = use - const resolvedUrl = new URL(opts.uri) - const { origin, port, host, username, password } = resolvedUrl + return middleware - if (opts.auth && opts.token) { - throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token') - } else if (opts.auth) { - /* @deprecated in favour of opts.token */ - this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` - } else if (opts.token) { - this[kProxyHeaders]['proxy-authorization'] = opts.token - } else if (username && password) { - this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` + // Run `fns`. Last argument must be a completion handler. + function run() { + var index = -1 + var input = slice.call(arguments, 0, -1) + var done = arguments[arguments.length - 1] + + if (typeof done !== 'function') { + throw new Error('Expected function as last argument, not ' + done) } - const connect = buildConnector({ ...opts.proxyTls }) - this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) - this[kClient] = clientFactory(resolvedUrl, { connect }) - this[kAgent] = new Agent({ - ...opts, - connect: async (opts, callback) => { - let requestedHost = opts.host - if (!opts.port) { - requestedHost += `:${defaultProtocolPort(opts.protocol)}` - } - try { - const { socket, statusCode } = await this[kClient].connect({ - origin, - port, - path: requestedHost, - signal: opts.signal, - headers: { - ...this[kProxyHeaders], - host - } - }) - if (statusCode !== 200) { - socket.on('error', () => {}).destroy() - callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)) - } - if (opts.protocol !== 'https:') { - callback(null, socket) - return - } - let servername - if (this[kRequestTls]) { - servername = this[kRequestTls].servername - } else { - servername = opts.servername - } - this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) - } catch (err) { - callback(err) - } + next.apply(null, [null].concat(input)) + + // Run the next `fn`, if any. + function next(err) { + var fn = fns[++index] + var params = slice.call(arguments, 0) + var values = params.slice(1) + var length = input.length + var pos = -1 + + if (err) { + done(err) + return } - }) - } - dispatch (opts, handler) { - const { host } = new URL(opts.origin) - const headers = buildHeaders(opts.headers) - throwIfProxyAuthIsSent(headers) - return this[kAgent].dispatch( - { - ...opts, - headers: { - ...headers, - host + // Copy non-nully input into values. + while (++pos < length) { + if (values[pos] === null || values[pos] === undefined) { + values[pos] = input[pos] } - }, - handler - ) - } + } - async [kClose] () { - await this[kAgent].close() - await this[kClient].close() - } + input = values - async [kDestroy] () { - await this[kAgent].destroy() - await this[kClient].destroy() + // Next or done. + if (fn) { + wrap(fn, next).apply(null, input) + } else { + done.apply(null, [null].concat(input)) + } + } } -} - -/** - * @param {string[] | Record<string, string>} headers - * @returns {Record<string, string>} - */ -function buildHeaders (headers) { - // When using undici.fetch, the headers list is stored - // as an array. - if (Array.isArray(headers)) { - /** @type {Record<string, string>} */ - const headersPair = {} - for (let i = 0; i < headers.length; i += 2) { - headersPair[headers[i]] = headers[i + 1] + // Add `fn` to the list. + function use(fn) { + if (typeof fn !== 'function') { + throw new Error('Expected `fn` to be a function, not ' + fn) } - return headersPair - } - - return headers -} + fns.push(fn) -/** - * @param {Record<string, string>} headers - * - * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers - * Nevertheless, it was changed and to avoid a security vulnerability by end users - * this check was created. - * It should be removed in the next major version for performance reasons - */ -function throwIfProxyAuthIsSent (headers) { - const existProxyAuth = headers && Object.keys(headers) - .find((key) => key.toLowerCase() === 'proxy-authorization') - if (existProxyAuth) { - throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') + return middleware } } -module.exports = ProxyAgent - /***/ }), -/***/ 8804: +/***/ 96285: /***/ ((module) => { "use strict"; -let fastNow = Date.now() -let fastNowTimeout +var slice = [].slice -const fastTimers = [] +module.exports = wrap -function onTimeout () { - fastNow = Date.now() +// Wrap `fn`. +// Can be sync or async; return a promise, receive a completion handler, return +// new values and errors. +function wrap(fn, callback) { + var invoked - let len = fastTimers.length - let idx = 0 - while (idx < len) { - const timer = fastTimers[idx] + return wrapped - if (timer.state === 0) { - timer.state = fastNow + timer.delay - } else if (timer.state > 0 && fastNow >= timer.state) { - timer.state = -1 - timer.callback(timer.opaque) + function wrapped() { + var params = slice.call(arguments, 0) + var callback = fn.length > params.length + var result + + if (callback) { + params.push(done) } - if (timer.state === -1) { - timer.state = -2 - if (idx !== len - 1) { - fastTimers[idx] = fastTimers.pop() + try { + result = fn.apply(null, params) + } catch (error) { + // Well, this is quite the pickle. + // `fn` received a callback and invoked it (thus continuing the pipeline), + // but later also threw an error. + // We’re not about to restart the pipeline again, so the only thing left + // to do is to throw the thing instead. + if (callback && invoked) { + throw error + } + + return done(error) + } + + if (!callback) { + if (result && typeof result.then === 'function') { + result.then(then, done) + } else if (result instanceof Error) { + done(result) } else { - fastTimers.pop() + then(result) } - len -= 1 - } else { - idx += 1 } } - if (fastTimers.length > 0) { - refreshTimeout() - } -} + // Invoke `next`, only once. + function done() { + if (!invoked) { + invoked = true -function refreshTimeout () { - if (fastNowTimeout && fastNowTimeout.refresh) { - fastNowTimeout.refresh() - } else { - clearTimeout(fastNowTimeout) - fastNowTimeout = setTimeout(onTimeout, 1e3) - if (fastNowTimeout.unref) { - fastNowTimeout.unref() + callback.apply(null, arguments) } } + + // Invoke `done` with one value. + // Tracks if an error is passed, too. + function then(value) { + done(null, value) + } } -class Timeout { - constructor (callback, delay, opaque) { - this.callback = callback - this.delay = delay - this.opaque = opaque - // -2 not in timer list - // -1 in timer list but inactive - // 0 in timer list waiting for time - // > 0 in timer list waiting for time to expire - this.state = -2 +/***/ }), - this.refresh() - } +/***/ 23578: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - refresh () { - if (this.state === -2) { - fastTimers.push(this) - if (!fastNowTimeout || fastTimers.length === 1) { - refreshTimeout() - } - } +"use strict"; - this.state = 0 - } - clear () { - this.state = -1 - } +var bail = __nccwpck_require__(33708) +var buffer = __nccwpck_require__(79857) +var extend = __nccwpck_require__(23860) +var plain = __nccwpck_require__(14805) +var trough = __nccwpck_require__(39693) +var vfile = __nccwpck_require__(61952) + +// Expose a frozen processor. +module.exports = unified().freeze() + +var slice = [].slice +var own = {}.hasOwnProperty + +// Process pipeline. +var pipeline = trough() + .use(pipelineParse) + .use(pipelineRun) + .use(pipelineStringify) + +function pipelineParse(p, ctx) { + ctx.tree = p.parse(ctx.file) } -module.exports = { - setTimeout (callback, delay, opaque) { - return delay < 1e3 - ? setTimeout(callback, delay, opaque) - : new Timeout(callback, delay, opaque) - }, - clearTimeout (timeout) { - if (timeout instanceof Timeout) { - timeout.clear() +function pipelineRun(p, ctx, next) { + p.run(ctx.tree, ctx.file, done) + + function done(error, tree, file) { + if (error) { + next(error) } else { - clearTimeout(timeout) + ctx.tree = tree + ctx.file = file + next() } } } +function pipelineStringify(p, ctx) { + var result = p.stringify(ctx.tree, ctx.file) -/***/ }), - -/***/ 8550: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (result === undefined || result === null) { + // Empty. + } else if (typeof result === 'string' || buffer(result)) { + if ('value' in ctx.file) { + ctx.file.value = result + } -"use strict"; + ctx.file.contents = result + } else { + ctx.file.result = result + } +} +// Function to create the first processor. +function unified() { + var attachers = [] + var transformers = trough() + var namespace = {} + var freezeIndex = -1 + var frozen -const diagnosticsChannel = __nccwpck_require__(1637) -const { uid, states } = __nccwpck_require__(5913) -const { - kReadyState, - kSentClose, - kByteParser, - kReceivedClose -} = __nccwpck_require__(2933) -const { fireEvent, failWebsocketConnection } = __nccwpck_require__(3574) -const { CloseEvent } = __nccwpck_require__(6255) -const { makeRequest } = __nccwpck_require__(5194) -const { fetching } = __nccwpck_require__(2315) -const { Headers } = __nccwpck_require__(6349) -const { getGlobalDispatcher } = __nccwpck_require__(2581) -const { kHeadersList } = __nccwpck_require__(6443) + // Data management. + processor.data = data -const channels = {} -channels.open = diagnosticsChannel.channel('undici:websocket:open') -channels.close = diagnosticsChannel.channel('undici:websocket:close') -channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error') + // Lock. + processor.freeze = freeze -/** @type {import('crypto')} */ -let crypto -try { - crypto = __nccwpck_require__(6982) -} catch { + // Plugins. + processor.attachers = attachers + processor.use = use -} + // API. + processor.parse = parse + processor.stringify = stringify + processor.run = run + processor.runSync = runSync + processor.process = process + processor.processSync = processSync -/** - * @see https://websockets.spec.whatwg.org/#concept-websocket-establish - * @param {URL} url - * @param {string|string[]} protocols - * @param {import('./websocket').WebSocket} ws - * @param {(response: any) => void} onEstablish - * @param {Partial<import('../../types/websocket').WebSocketInit>} options - */ -function establishWebSocketConnection (url, protocols, ws, onEstablish, options) { - // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s - // scheme is "ws", and to "https" otherwise. - const requestURL = url + // Expose. + return processor - requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:' + // Create a new processor based on the processor in the current scope. + function processor() { + var destination = unified() + var index = -1 - // 2. Let request be a new request, whose URL is requestURL, client is client, - // service-workers mode is "none", referrer is "no-referrer", mode is - // "websocket", credentials mode is "include", cache mode is "no-store" , - // and redirect mode is "error". - const request = makeRequest({ - urlList: [requestURL], - serviceWorkers: 'none', - referrer: 'no-referrer', - mode: 'websocket', - credentials: 'include', - cache: 'no-store', - redirect: 'error' - }) + while (++index < attachers.length) { + destination.use.apply(null, attachers[index]) + } - // Note: undici extension, allow setting custom headers. - if (options.headers) { - const headersList = new Headers(options.headers)[kHeadersList] + destination.data(extend(true, {}, namespace)) - request.headersList = headersList + return destination } - // 3. Append (`Upgrade`, `websocket`) to request’s header list. - // 4. Append (`Connection`, `Upgrade`) to request’s header list. - // Note: both of these are handled by undici currently. - // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 - - // 5. Let keyValue be a nonce consisting of a randomly selected - // 16-byte value that has been forgiving-base64-encoded and - // isomorphic encoded. - const keyValue = crypto.randomBytes(16).toString('base64') + // Freeze: used to signal a processor that has finished configuration. + // + // For example, take unified itself: it’s frozen. + // Plugins should not be added to it. + // Rather, it should be extended, by invoking it, before modifying it. + // + // In essence, always invoke this when exporting a processor. + function freeze() { + var values + var transformer - // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s - // header list. - request.headersList.append('sec-websocket-key', keyValue) + if (frozen) { + return processor + } - // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s - // header list. - request.headersList.append('sec-websocket-version', '13') + while (++freezeIndex < attachers.length) { + values = attachers[freezeIndex] - // 8. For each protocol in protocols, combine - // (`Sec-WebSocket-Protocol`, protocol) in request’s header - // list. - for (const protocol of protocols) { - request.headersList.append('sec-websocket-protocol', protocol) - } + if (values[1] === false) { + continue + } - // 9. Let permessageDeflate be a user-agent defined - // "permessage-deflate" extension header value. - // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 - // TODO: enable once permessage-deflate is supported - const permessageDeflate = '' // 'permessage-deflate; 15' + if (values[1] === true) { + values[1] = undefined + } - // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to - // request’s header list. - // request.headersList.append('sec-websocket-extensions', permessageDeflate) + transformer = values[0].apply(processor, values.slice(1)) - // 11. Fetch request with useParallelQueue set to true, and - // processResponse given response being these steps: - const controller = fetching({ - request, - useParallelQueue: true, - dispatcher: options.dispatcher ?? getGlobalDispatcher(), - processResponse (response) { - // 1. If response is a network error or its status is not 101, - // fail the WebSocket connection. - if (response.type === 'error' || response.status !== 101) { - failWebsocketConnection(ws, 'Received network error or non-101 status code.') - return + if (typeof transformer === 'function') { + transformers.use(transformer) } + } - // 2. If protocols is not the empty list and extracting header - // list values given `Sec-WebSocket-Protocol` and response’s - // header list results in null, failure, or the empty byte - // sequence, then fail the WebSocket connection. - if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { - failWebsocketConnection(ws, 'Server did not respond with sent protocols.') - return - } + frozen = true + freezeIndex = Infinity - // 3. Follow the requirements stated step 2 to step 6, inclusive, - // of the last set of steps in section 4.1 of The WebSocket - // Protocol to validate response. This either results in fail - // the WebSocket connection or the WebSocket connection is - // established. + return processor + } - // 2. If the response lacks an |Upgrade| header field or the |Upgrade| - // header field contains a value that is not an ASCII case- - // insensitive match for the value "websocket", the client MUST - // _Fail the WebSocket Connection_. - if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { - failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".') - return + // Data management. + // Getter / setter for processor-specific informtion. + function data(key, value) { + if (typeof key === 'string') { + // Set `key`. + if (arguments.length === 2) { + assertUnfrozen('data', frozen) + namespace[key] = value + return processor } - // 3. If the response lacks a |Connection| header field or the - // |Connection| header field doesn't contain a token that is an - // ASCII case-insensitive match for the value "Upgrade", the client - // MUST _Fail the WebSocket Connection_. - if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { - failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".') - return + // Get `key`. + return (own.call(namespace, key) && namespace[key]) || null + } + + // Set space. + if (key) { + assertUnfrozen('data', frozen) + namespace = key + return processor + } + + // Get space. + return namespace + } + + // Plugin management. + // + // Pass it: + // * an attacher and options, + // * a preset, + // * a list of presets, attachers, and arguments (list of attachers and + // options). + function use(value) { + var settings + + assertUnfrozen('use', frozen) + + if (value === null || value === undefined) { + // Empty. + } else if (typeof value === 'function') { + addPlugin.apply(null, arguments) + } else if (typeof value === 'object') { + if ('length' in value) { + addList(value) + } else { + addPreset(value) } + } else { + throw new Error('Expected usable value, not `' + value + '`') + } - // 4. If the response lacks a |Sec-WebSocket-Accept| header field or - // the |Sec-WebSocket-Accept| contains a value other than the - // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- - // Key| (as a string, not base64-decoded) with the string "258EAFA5- - // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and - // trailing whitespace, the client MUST _Fail the WebSocket - // Connection_. - const secWSAccept = response.headersList.get('Sec-WebSocket-Accept') - const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64') - if (secWSAccept !== digest) { - failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.') - return + if (settings) { + namespace.settings = extend(namespace.settings || {}, settings) + } + + return processor + + function addPreset(result) { + addList(result.plugins) + + if (result.settings) { + settings = extend(settings || {}, result.settings) } + } - // 5. If the response includes a |Sec-WebSocket-Extensions| header - // field and this header field indicates the use of an extension - // that was not present in the client's handshake (the server has - // indicated an extension not requested by the client), the client - // MUST _Fail the WebSocket Connection_. (The parsing of this - // header field to determine which extensions are requested is - // discussed in Section 9.1.) - const secExtension = response.headersList.get('Sec-WebSocket-Extensions') + function add(value) { + if (typeof value === 'function') { + addPlugin(value) + } else if (typeof value === 'object') { + if ('length' in value) { + addPlugin.apply(null, value) + } else { + addPreset(value) + } + } else { + throw new Error('Expected usable value, not `' + value + '`') + } + } - if (secExtension !== null && secExtension !== permessageDeflate) { - failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.') - return + function addList(plugins) { + var index = -1 + + if (plugins === null || plugins === undefined) { + // Empty. + } else if (typeof plugins === 'object' && 'length' in plugins) { + while (++index < plugins.length) { + add(plugins[index]) + } + } else { + throw new Error('Expected a list of plugins, not `' + plugins + '`') } + } - // 6. If the response includes a |Sec-WebSocket-Protocol| header field - // and this header field indicates the use of a subprotocol that was - // not present in the client's handshake (the server has indicated a - // subprotocol not requested by the client), the client MUST _Fail - // the WebSocket Connection_. - const secProtocol = response.headersList.get('Sec-WebSocket-Protocol') + function addPlugin(plugin, value) { + var entry = find(plugin) - if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { - failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.') - return + if (entry) { + if (plain(entry[1]) && plain(value)) { + value = extend(true, entry[1], value) + } + + entry[1] = value + } else { + attachers.push(slice.call(arguments)) } + } + } - response.socket.on('data', onSocketData) - response.socket.on('close', onSocketClose) - response.socket.on('error', onSocketError) + function find(plugin) { + var index = -1 - if (channels.open.hasSubscribers) { - channels.open.publish({ - address: response.socket.address(), - protocol: secProtocol, - extensions: secExtension - }) + while (++index < attachers.length) { + if (attachers[index][0] === plugin) { + return attachers[index] } + } + } - onEstablish(response) + // Parse a file (in string or vfile representation) into a unist node using + // the `Parser` on the processor. + function parse(doc) { + var file = vfile(doc) + var Parser + + freeze() + Parser = processor.Parser + assertParser('parse', Parser) + + if (newable(Parser, 'parse')) { + return new Parser(String(file), file).parse() } - }) - return controller -} + return Parser(String(file), file) // eslint-disable-line new-cap + } -/** - * @param {Buffer} chunk - */ -function onSocketData (chunk) { - if (!this.ws[kByteParser].write(chunk)) { - this.pause() + // Run transforms on a unist node representation of a file (in string or + // vfile representation), async. + function run(node, file, cb) { + assertNode(node) + freeze() + + if (!cb && typeof file === 'function') { + cb = file + file = null + } + + if (!cb) { + return new Promise(executor) + } + + executor(null, cb) + + function executor(resolve, reject) { + transformers.run(node, vfile(file), done) + + function done(error, tree, file) { + tree = tree || node + if (error) { + reject(error) + } else if (resolve) { + resolve(tree) + } else { + cb(null, tree, file) + } + } + } } -} -/** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 - */ -function onSocketClose () { - const { ws } = this + // Run transforms on a unist node representation of a file (in string or + // vfile representation), sync. + function runSync(node, file) { + var result + var complete - // If the TCP connection was closed after the - // WebSocket closing handshake was completed, the WebSocket connection - // is said to have been closed _cleanly_. - const wasClean = ws[kSentClose] && ws[kReceivedClose] + run(node, file, done) - let code = 1005 - let reason = '' + assertDone('runSync', 'run', complete) - const result = ws[kByteParser].closingInfo + return result - if (result) { - code = result.code ?? 1005 - reason = result.reason - } else if (!ws[kSentClose]) { - // If _The WebSocket - // Connection is Closed_ and no Close control frame was received by the - // endpoint (such as could occur if the underlying transport connection - // is lost), _The WebSocket Connection Close Code_ is considered to be - // 1006. - code = 1006 + function done(error, tree) { + complete = true + result = tree + bail(error) + } } - // 1. Change the ready state to CLOSED (3). - ws[kReadyState] = states.CLOSED + // Stringify a unist node representation of a file (in string or vfile + // representation) into a string using the `Compiler` on the processor. + function stringify(node, doc) { + var file = vfile(doc) + var Compiler - // 2. If the user agent was required to fail the WebSocket - // connection, or if the WebSocket connection was closed - // after being flagged as full, fire an event named error - // at the WebSocket object. - // TODO + freeze() + Compiler = processor.Compiler + assertCompiler('stringify', Compiler) + assertNode(node) - // 3. Fire an event named close at the WebSocket object, - // using CloseEvent, with the wasClean attribute - // initialized to true if the connection closed cleanly - // and false otherwise, the code attribute initialized to - // the WebSocket connection close code, and the reason - // attribute initialized to the result of applying UTF-8 - // decode without BOM to the WebSocket connection close - // reason. - fireEvent('close', ws, CloseEvent, { - wasClean, code, reason - }) + if (newable(Compiler, 'compile')) { + return new Compiler(node, file).compile() + } - if (channels.close.hasSubscribers) { - channels.close.publish({ - websocket: ws, - code, - reason - }) + return Compiler(node, file) // eslint-disable-line new-cap + } + + // Parse a file (in string or vfile representation) into a unist node using + // the `Parser` on the processor, then run transforms on that node, and + // compile the resulting node using the `Compiler` on the processor, and + // store that result on the vfile. + function process(doc, cb) { + freeze() + assertParser('process', processor.Parser) + assertCompiler('process', processor.Compiler) + + if (!cb) { + return new Promise(executor) + } + + executor(null, cb) + + function executor(resolve, reject) { + var file = vfile(doc) + + pipeline.run(processor, {file: file}, done) + + function done(error) { + if (error) { + reject(error) + } else if (resolve) { + resolve(file) + } else { + cb(null, file) + } + } + } + } + + // Process the given document (in string or vfile representation), sync. + function processSync(doc) { + var file + var complete + + freeze() + assertParser('processSync', processor.Parser) + assertCompiler('processSync', processor.Compiler) + file = vfile(doc) + + process(file, done) + + assertDone('processSync', 'process', complete) + + return file + + function done(error) { + complete = true + bail(error) + } } } -function onSocketError (error) { - const { ws } = this +// Check if `value` is a constructor. +function newable(value, name) { + return ( + typeof value === 'function' && + value.prototype && + // A function with keys in its prototype is probably a constructor. + // Classes’ prototype methods are not enumerable, so we check if some value + // exists in the prototype. + (keys(value.prototype) || name in value.prototype) + ) +} - ws[kReadyState] = states.CLOSING +// Check if `value` is an object with keys. +function keys(value) { + var key + for (key in value) { + return true + } - if (channels.socketError.hasSubscribers) { - channels.socketError.publish(error) + return false +} + +// Assert a parser is available. +function assertParser(name, Parser) { + if (typeof Parser !== 'function') { + throw new Error('Cannot `' + name + '` without `Parser`') } +} - this.destroy() +// Assert a compiler is available. +function assertCompiler(name, Compiler) { + if (typeof Compiler !== 'function') { + throw new Error('Cannot `' + name + '` without `Compiler`') + } } -module.exports = { - establishWebSocketConnection +// Assert the processor is not frozen. +function assertUnfrozen(name, frozen) { + if (frozen) { + throw new Error( + 'Cannot invoke `' + + name + + '` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.' + ) + } +} + +// Assert `node` is a unist node. +function assertNode(node) { + if (!node || typeof node.type !== 'string') { + throw new Error('Expected node, got `' + node + '`') + } +} + +// Assert that `complete` is `true`. +function assertDone(name, asyncName, complete) { + if (!complete) { + throw new Error( + '`' + name + '` finished async. Use `' + asyncName + '` instead' + ) + } } /***/ }), -/***/ 5913: +/***/ 11340: /***/ ((module) => { "use strict"; -// This is a Globally Unique Identifier unique used -// to validate that the endpoint accepts websocket -// connections. -// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 -const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' +var own = {}.hasOwnProperty -/** @type {PropertyDescriptor} */ -const staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false -} +module.exports = stringify -const states = { - CONNECTING: 0, - OPEN: 1, - CLOSING: 2, - CLOSED: 3 -} +function stringify(value) { + // Nothing. + if (!value || typeof value !== 'object') { + return '' + } -const opcodes = { - CONTINUATION: 0x0, - TEXT: 0x1, - BINARY: 0x2, - CLOSE: 0x8, - PING: 0x9, - PONG: 0xA + // Node. + if (own.call(value, 'position') || own.call(value, 'type')) { + return position(value.position) + } + + // Position. + if (own.call(value, 'start') || own.call(value, 'end')) { + return position(value) + } + + // Point. + if (own.call(value, 'line') || own.call(value, 'column')) { + return point(value) + } + + // ? + return '' } -const maxUnsigned16Bit = 2 ** 16 - 1 // 65535 +function point(point) { + if (!point || typeof point !== 'object') { + point = {} + } -const parserStates = { - INFO: 0, - PAYLOADLENGTH_16: 2, - PAYLOADLENGTH_64: 3, - READ_DATA: 4 + return index(point.line) + ':' + index(point.column) } -const emptyBuffer = Buffer.allocUnsafe(0) +function position(pos) { + if (!pos || typeof pos !== 'object') { + pos = {} + } -module.exports = { - uid, - staticPropertyDescriptors, - states, - opcodes, - maxUnsigned16Bit, - parserStates, - emptyBuffer + return point(pos.start) + '-' + point(pos.end) +} + +function index(value) { + return value && typeof value === 'number' ? value : 1 } /***/ }), -/***/ 6255: +/***/ 63594: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { webidl } = __nccwpck_require__(4222) -const { kEnumerableProperty } = __nccwpck_require__(3440) -const { MessagePort } = __nccwpck_require__(8167) +var stringify = __nccwpck_require__(11340) -/** - * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent - */ -class MessageEvent extends Event { - #eventInit +module.exports = VMessage - constructor (type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }) +// Inherit from `Error#`. +function VMessagePrototype() {} +VMessagePrototype.prototype = Error.prototype +VMessage.prototype = new VMessagePrototype() - type = webidl.converters.DOMString(type) - eventInitDict = webidl.converters.MessageEventInit(eventInitDict) +// Message properties. +var proto = VMessage.prototype - super(type, eventInitDict) +proto.file = '' +proto.name = '' +proto.reason = '' +proto.message = '' +proto.stack = '' +proto.fatal = null +proto.column = null +proto.line = null - this.#eventInit = eventInitDict +// Construct a new VMessage. +// +// Note: We cannot invoke `Error` on the created context, as that adds readonly +// `line` and `column` attributes on Safari 9, thus throwing and failing the +// data. +function VMessage(reason, position, origin) { + var parts + var range + var location + + if (typeof position === 'string') { + origin = position + position = null } - get data () { - webidl.brandCheck(this, MessageEvent) + parts = parseOrigin(origin) + range = stringify(position) || '1:1' - return this.#eventInit.data + location = { + start: {line: null, column: null}, + end: {line: null, column: null} } - get origin () { - webidl.brandCheck(this, MessageEvent) - - return this.#eventInit.origin + // Node. + if (position && position.position) { + position = position.position } - get lastEventId () { - webidl.brandCheck(this, MessageEvent) + if (position) { + // Position. + if (position.start) { + location = position + position = position.start + } else { + // Point. + location.start = position + } + } - return this.#eventInit.lastEventId + if (reason.stack) { + this.stack = reason.stack + reason = reason.message } - get source () { - webidl.brandCheck(this, MessageEvent) + this.message = reason + this.name = range + this.reason = reason + this.line = position ? position.line : null + this.column = position ? position.column : null + this.location = location + this.source = parts[0] + this.ruleId = parts[1] +} - return this.#eventInit.source - } +function parseOrigin(origin) { + var result = [null, null] + var index - get ports () { - webidl.brandCheck(this, MessageEvent) + if (typeof origin === 'string') { + index = origin.indexOf(':') - if (!Object.isFrozen(this.#eventInit.ports)) { - Object.freeze(this.#eventInit.ports) + if (index === -1) { + result[1] = origin + } else { + result[0] = origin.slice(0, index) + result[1] = origin.slice(index + 1) } - - return this.#eventInit.ports } - initMessageEvent ( - type, - bubbles = false, - cancelable = false, - data = null, - origin = '', - lastEventId = '', - source = null, - ports = [] - ) { - webidl.brandCheck(this, MessageEvent) + return result +} - webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }) - return new MessageEvent(type, { - bubbles, cancelable, data, origin, lastEventId, source, ports - }) - } -} +/***/ }), -/** - * @see https://websockets.spec.whatwg.org/#the-closeevent-interface - */ -class CloseEvent extends Event { - #eventInit +/***/ 61952: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - constructor (type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }) +"use strict"; - type = webidl.converters.DOMString(type) - eventInitDict = webidl.converters.CloseEventInit(eventInitDict) - super(type, eventInitDict) +module.exports = __nccwpck_require__(13484) - this.#eventInit = eventInitDict - } - get wasClean () { - webidl.brandCheck(this, CloseEvent) +/***/ }), - return this.#eventInit.wasClean - } +/***/ 51669: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - get code () { - webidl.brandCheck(this, CloseEvent) +"use strict"; - return this.#eventInit.code - } - get reason () { - webidl.brandCheck(this, CloseEvent) +var p = __nccwpck_require__(2715) +var proc = __nccwpck_require__(43584) +var buffer = __nccwpck_require__(79857) - return this.#eventInit.reason - } -} +module.exports = VFile -// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface -class ErrorEvent extends Event { - #eventInit +var own = {}.hasOwnProperty - constructor (type, eventInitDict) { - webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }) +// Order of setting (least specific to most), we need this because otherwise +// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a +// stem can be set. +var order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'] - super(type, eventInitDict) +VFile.prototype.toString = toString - type = webidl.converters.DOMString(type) - eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}) +// Access full path (`~/index.min.js`). +Object.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath}) - this.#eventInit = eventInitDict - } +// Access parent path (`~`). +Object.defineProperty(VFile.prototype, 'dirname', { + get: getDirname, + set: setDirname +}) - get message () { - webidl.brandCheck(this, ErrorEvent) +// Access basename (`index.min.js`). +Object.defineProperty(VFile.prototype, 'basename', { + get: getBasename, + set: setBasename +}) - return this.#eventInit.message - } +// Access extname (`.js`). +Object.defineProperty(VFile.prototype, 'extname', { + get: getExtname, + set: setExtname +}) - get filename () { - webidl.brandCheck(this, ErrorEvent) +// Access stem (`index.min`). +Object.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem}) - return this.#eventInit.filename - } +// Construct a new file. +function VFile(options) { + var prop + var index - get lineno () { - webidl.brandCheck(this, ErrorEvent) + if (!options) { + options = {} + } else if (typeof options === 'string' || buffer(options)) { + options = {contents: options} + } else if ('message' in options && 'messages' in options) { + return options + } - return this.#eventInit.lineno + if (!(this instanceof VFile)) { + return new VFile(options) } - get colno () { - webidl.brandCheck(this, ErrorEvent) + this.data = {} + this.messages = [] + this.history = [] + this.cwd = proc.cwd() - return this.#eventInit.colno + // Set path related properties in the correct order. + index = -1 + + while (++index < order.length) { + prop = order[index] + + if (own.call(options, prop)) { + this[prop] = options[prop] + } } - get error () { - webidl.brandCheck(this, ErrorEvent) + // Set non-path related properties. + for (prop in options) { + if (order.indexOf(prop) < 0) { + this[prop] = options[prop] + } + } +} - return this.#eventInit.error +function getPath() { + return this.history[this.history.length - 1] +} + +function setPath(path) { + assertNonEmpty(path, 'path') + + if (this.path !== path) { + this.history.push(path) } } -Object.defineProperties(MessageEvent.prototype, { - [Symbol.toStringTag]: { - value: 'MessageEvent', - configurable: true - }, - data: kEnumerableProperty, - origin: kEnumerableProperty, - lastEventId: kEnumerableProperty, - source: kEnumerableProperty, - ports: kEnumerableProperty, - initMessageEvent: kEnumerableProperty -}) +function getDirname() { + return typeof this.path === 'string' ? p.dirname(this.path) : undefined +} -Object.defineProperties(CloseEvent.prototype, { - [Symbol.toStringTag]: { - value: 'CloseEvent', - configurable: true - }, - reason: kEnumerableProperty, - code: kEnumerableProperty, - wasClean: kEnumerableProperty -}) +function setDirname(dirname) { + assertPath(this.path, 'dirname') + this.path = p.join(dirname || '', this.basename) +} -Object.defineProperties(ErrorEvent.prototype, { - [Symbol.toStringTag]: { - value: 'ErrorEvent', - configurable: true - }, - message: kEnumerableProperty, - filename: kEnumerableProperty, - lineno: kEnumerableProperty, - colno: kEnumerableProperty, - error: kEnumerableProperty -}) +function getBasename() { + return typeof this.path === 'string' ? p.basename(this.path) : undefined +} -webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort) +function setBasename(basename) { + assertNonEmpty(basename, 'basename') + assertPart(basename, 'basename') + this.path = p.join(this.dirname || '', basename) +} -webidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter( - webidl.converters.MessagePort -) +function getExtname() { + return typeof this.path === 'string' ? p.extname(this.path) : undefined +} -const eventInit = [ - { - key: 'bubbles', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'cancelable', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'composed', - converter: webidl.converters.boolean, - defaultValue: false - } -] +function setExtname(extname) { + assertPart(extname, 'extname') + assertPath(this.path, 'extname') -webidl.converters.MessageEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: 'data', - converter: webidl.converters.any, - defaultValue: null - }, - { - key: 'origin', - converter: webidl.converters.USVString, - defaultValue: '' - }, - { - key: 'lastEventId', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'source', - // Node doesn't implement WindowProxy or ServiceWorker, so the only - // valid value for source is a MessagePort. - converter: webidl.nullableConverter(webidl.converters.MessagePort), - defaultValue: null - }, - { - key: 'ports', - converter: webidl.converters['sequence<MessagePort>'], - get defaultValue () { - return [] + if (extname) { + if (extname.charCodeAt(0) !== 46 /* `.` */) { + throw new Error('`extname` must start with `.`') + } + + if (extname.indexOf('.', 1) > -1) { + throw new Error('`extname` cannot contain multiple dots') } } -]) -webidl.converters.CloseEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: 'wasClean', - converter: webidl.converters.boolean, - defaultValue: false - }, - { - key: 'code', - converter: webidl.converters['unsigned short'], - defaultValue: 0 - }, - { - key: 'reason', - converter: webidl.converters.USVString, - defaultValue: '' + this.path = p.join(this.dirname, this.stem + (extname || '')) +} + +function getStem() { + return typeof this.path === 'string' + ? p.basename(this.path, this.extname) + : undefined +} + +function setStem(stem) { + assertNonEmpty(stem, 'stem') + assertPart(stem, 'stem') + this.path = p.join(this.dirname || '', stem + (this.extname || '')) +} + +// Get the value of the file. +function toString(encoding) { + return (this.contents || '').toString(encoding) +} + +// Assert that `part` is not a path (i.e., does not contain `p.sep`). +function assertPart(part, name) { + if (part && part.indexOf(p.sep) > -1) { + throw new Error( + '`' + name + '` cannot be a path: did not expect `' + p.sep + '`' + ) } -]) +} -webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: 'message', - converter: webidl.converters.DOMString, - defaultValue: '' - }, - { - key: 'filename', - converter: webidl.converters.USVString, - defaultValue: '' - }, - { - key: 'lineno', - converter: webidl.converters['unsigned long'], - defaultValue: 0 - }, - { - key: 'colno', - converter: webidl.converters['unsigned long'], - defaultValue: 0 - }, - { - key: 'error', - converter: webidl.converters.any +// Assert that `part` is not empty. +function assertNonEmpty(part, name) { + if (!part) { + throw new Error('`' + name + '` cannot be empty') } -]) +} -module.exports = { - MessageEvent, - CloseEvent, - ErrorEvent +// Assert `path` exists. +function assertPath(path, name) { + if (!path) { + throw new Error('Setting `' + name + '` requires `path` to be set too') + } } /***/ }), -/***/ 1237: +/***/ 13484: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { maxUnsigned16Bit } = __nccwpck_require__(5913) - -/** @type {import('crypto')} */ -let crypto -try { - crypto = __nccwpck_require__(6982) -} catch { - -} +var VMessage = __nccwpck_require__(63594) +var VFile = __nccwpck_require__(51669) -class WebsocketFrameSend { - /** - * @param {Buffer|undefined} data - */ - constructor (data) { - this.frameData = data - this.maskKey = crypto.randomBytes(4) - } +module.exports = VFile - createFrame (opcode) { - const bodyLength = this.frameData?.byteLength ?? 0 +VFile.prototype.message = message +VFile.prototype.info = info +VFile.prototype.fail = fail - /** @type {number} */ - let payloadLength = bodyLength // 0-125 - let offset = 6 +// Create a message with `reason` at `position`. +// When an error is passed in as `reason`, copies the stack. +function message(reason, position, origin) { + var message = new VMessage(reason, position, origin) - if (bodyLength > maxUnsigned16Bit) { - offset += 8 // payload length is next 8 bytes - payloadLength = 127 - } else if (bodyLength > 125) { - offset += 2 // payload length is next 2 bytes - payloadLength = 126 - } + if (this.path) { + message.name = this.path + ':' + message.name + message.file = this.path + } - const buffer = Buffer.allocUnsafe(bodyLength + offset) + message.fatal = false - // Clear first 2 bytes, everything else is overwritten - buffer[0] = buffer[1] = 0 - buffer[0] |= 0x80 // FIN - buffer[0] = (buffer[0] & 0xF0) + opcode // opcode + this.messages.push(message) - /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */ - buffer[offset - 4] = this.maskKey[0] - buffer[offset - 3] = this.maskKey[1] - buffer[offset - 2] = this.maskKey[2] - buffer[offset - 1] = this.maskKey[3] + return message +} - buffer[1] = payloadLength +// Fail: creates a vmessage, associates it with the file, and throws it. +function fail() { + var message = this.message.apply(this, arguments) - if (payloadLength === 126) { - buffer.writeUInt16BE(bodyLength, 2) - } else if (payloadLength === 127) { - // Clear extended payload length - buffer[2] = buffer[3] = 0 - buffer.writeUIntBE(bodyLength, 4, 6) - } + message.fatal = true - buffer[1] |= 0x80 // MASK + throw message +} - // mask body - for (let i = 0; i < bodyLength; i++) { - buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4] - } +// Info: creates a vmessage, associates it with the file, and marks the fatality +// as null. +function info() { + var message = this.message.apply(this, arguments) - return buffer - } -} + message.fatal = null -module.exports = { - WebsocketFrameSend + return message } /***/ }), -/***/ 3171: +/***/ 2715: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { Writable } = __nccwpck_require__(2203) -const diagnosticsChannel = __nccwpck_require__(1637) -const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(5913) -const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(2933) -const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = __nccwpck_require__(3574) -const { WebsocketFrameSend } = __nccwpck_require__(1237) - -// This code was influenced by ws released under the MIT license. -// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com> -// Copyright (c) 2013 Arnout Kazemier and contributors -// Copyright (c) 2016 Luigi Pinca and contributors +module.exports = __nccwpck_require__(16928) -const channels = {} -channels.ping = diagnosticsChannel.channel('undici:websocket:ping') -channels.pong = diagnosticsChannel.channel('undici:websocket:pong') -class ByteParser extends Writable { - #buffers = [] - #byteOffset = 0 +/***/ }), - #state = parserStates.INFO +/***/ 43584: +/***/ ((module) => { - #info = {} - #fragments = [] +"use strict"; - constructor (ws) { - super() - this.ws = ws - } +module.exports = process - /** - * @param {Buffer} chunk - * @param {() => void} callback - */ - _write (chunk, _, callback) { - this.#buffers.push(chunk) - this.#byteOffset += chunk.length - this.run(callback) - } +/***/ }), - /** - * Runs whenever a new chunk is received. - * Callback is called whenever there are no more chunks buffering, - * or not enough bytes are buffered to parse. - */ - run (callback) { - while (true) { - if (this.#state === parserStates.INFO) { - // If there aren't enough bytes to parse the payload length, etc. - if (this.#byteOffset < 2) { - return callback() - } +/***/ 40471: +/***/ ((module) => { - const buffer = this.consume(2) +"use strict"; +/*! + * repeat-string <https://github.com/jonschlinkert/repeat-string> + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ - this.#info.fin = (buffer[0] & 0x80) !== 0 - this.#info.opcode = buffer[0] & 0x0F - // If we receive a fragmented message, we use the type of the first - // frame to parse the full message as binary/text, when it's terminated - this.#info.originalOpcode ??= this.#info.opcode - this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION +/** + * Results cache + */ - if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { - // Only text and binary frames can be fragmented - failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.') - return - } +var res = ''; +var cache; - const payloadLength = buffer[1] & 0x7F +/** + * Expose `repeat` + */ - if (payloadLength <= 125) { - this.#info.payloadLength = payloadLength - this.#state = parserStates.READ_DATA - } else if (payloadLength === 126) { - this.#state = parserStates.PAYLOADLENGTH_16 - } else if (payloadLength === 127) { - this.#state = parserStates.PAYLOADLENGTH_64 - } +module.exports = repeat; - if (this.#info.fragmented && payloadLength > 125) { - // A fragmented frame can't be fragmented itself - failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.') - return - } else if ( - (this.#info.opcode === opcodes.PING || - this.#info.opcode === opcodes.PONG || - this.#info.opcode === opcodes.CLOSE) && - payloadLength > 125 - ) { - // Control frames can have a payload length of 125 bytes MAX - failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.') - return - } else if (this.#info.opcode === opcodes.CLOSE) { - if (payloadLength === 1) { - failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.') - return - } +/** + * Repeat the given `string` the specified `number` + * of times. + * + * **Example:** + * + * ```js + * var repeat = require('repeat-string'); + * repeat('A', 5); + * //=> AAAAA + * ``` + * + * @param {String} `string` The string to repeat + * @param {Number} `number` The number of times to repeat the string + * @return {String} Repeated string + * @api public + */ - const body = this.consume(payloadLength) +function repeat(str, num) { + if (typeof str !== 'string') { + throw new TypeError('expected a string'); + } - this.#info.closeInfo = this.parseCloseBody(false, body) + // cover common, quick use cases + if (num === 1) return str; + if (num === 2) return str + str; - if (!this.ws[kSentClose]) { - // If an endpoint receives a Close frame and did not previously send a - // Close frame, the endpoint MUST send a Close frame in response. (When - // sending a Close frame in response, the endpoint typically echos the - // status code it received.) - const body = Buffer.allocUnsafe(2) - body.writeUInt16BE(this.#info.closeInfo.code, 0) - const closeFrame = new WebsocketFrameSend(body) + var max = str.length * num; + if (cache !== str || typeof cache === 'undefined') { + cache = str; + res = ''; + } else if (res.length >= max) { + return res.substr(0, max); + } - this.ws[kResponse].socket.write( - closeFrame.createFrame(opcodes.CLOSE), - (err) => { - if (!err) { - this.ws[kSentClose] = true - } - } - ) - } + while (max > res.length && num > 1) { + if (num & 1) { + res += str; + } - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - this.ws[kReadyState] = states.CLOSING - this.ws[kReceivedClose] = true + num >>= 1; + str += str; + } - this.end() + res += str; + res = res.substr(0, max); + return res; +} - return - } else if (this.#info.opcode === opcodes.PING) { - // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in - // response, unless it already received a Close frame. - // A Pong frame sent in response to a Ping frame must have identical - // "Application data" - const body = this.consume(payloadLength) +/***/ }), - if (!this.ws[kReceivedClose]) { - const frame = new WebsocketFrameSend(body) +/***/ 92312: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)) +var async = __nccwpck_require__(56912); +async.core = __nccwpck_require__(12333); +async.isCore = __nccwpck_require__(54040); +async.sync = __nccwpck_require__(70225); - if (channels.ping.hasSubscribers) { - channels.ping.publish({ - payload: body - }) - } - } +module.exports = async; - this.#state = parserStates.INFO - if (this.#byteOffset > 0) { - continue - } else { - callback() - return - } - } else if (this.#info.opcode === opcodes.PONG) { - // A Pong frame MAY be sent unsolicited. This serves as a - // unidirectional heartbeat. A response to an unsolicited Pong frame is - // not expected. +/***/ }), - const body = this.consume(payloadLength) +/***/ 56912: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (channels.pong.hasSubscribers) { - channels.pong.publish({ - payload: body - }) - } +var fs = __nccwpck_require__(79896); +var getHomedir = __nccwpck_require__(22282); +var path = __nccwpck_require__(16928); +var caller = __nccwpck_require__(87481); +var nodeModulesPaths = __nccwpck_require__(9411); +var normalizeOptions = __nccwpck_require__(29496); +var isCore = __nccwpck_require__(65223); + +var realpathFS = process.platform !== 'win32' && fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; + +var homedir = getHomedir(); +var defaultPaths = function () { + return [ + path.join(homedir, '.node_modules'), + path.join(homedir, '.node_libraries') + ]; +}; - if (this.#byteOffset > 0) { - continue - } else { - callback() - return - } - } - } else if (this.#state === parserStates.PAYLOADLENGTH_16) { - if (this.#byteOffset < 2) { - return callback() +var defaultIsFile = function isFile(file, cb) { + fs.stat(file, function (err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; - const buffer = this.consume(2) - - this.#info.payloadLength = buffer.readUInt16BE(0) - this.#state = parserStates.READ_DATA - } else if (this.#state === parserStates.PAYLOADLENGTH_64) { - if (this.#byteOffset < 8) { - return callback() +var defaultIsDir = function isDirectory(dir, cb) { + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; - const buffer = this.consume(8) - const upper = buffer.readUInt32BE(0) +var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function (realpathErr, realPath) { + if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); + else cb(null, realpathErr ? x : realPath); + }); +}; - // 2^31 is the maxinimum bytes an arraybuffer can contain - // on 32-bit systems. Although, on 64-bit systems, this is - // 2^53-1 bytes. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length - // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 - // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e - if (upper > 2 ** 31 - 1) { - failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.') - return +var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { + if (opts && opts.preserveSymlinks === false) { + realpath(x, cb); + } else { + cb(null, x); + } +}; + +var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) { + readFile(pkgfile, function (readFileErr, body) { + if (readFileErr) cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } } + }); +}; - const lower = buffer.readUInt32BE(4) +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; - this.#info.payloadLength = (upper << 8) + lower - this.#state = parserStates.READ_DATA - } else if (this.#state === parserStates.READ_DATA) { - if (this.#byteOffset < this.#info.payloadLength) { - // If there is still more data in this chunk that needs to be read - return callback() - } else if (this.#byteOffset >= this.#info.payloadLength) { - // If the server sent multiple frames in a single chunk +module.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options; + if (typeof options === 'function') { + cb = opts; + opts = {}; + } + if (typeof x !== 'string') { + var err = new TypeError('Path must be a string.'); + return process.nextTick(function () { + cb(err); + }); + } - const body = this.consume(this.#info.payloadLength) + opts = normalizeOptions(x, opts); - this.#fragments.push(body) + var isFile = opts.isFile || defaultIsFile; + var isDirectory = opts.isDirectory || defaultIsDir; + var readFile = opts.readFile || fs.readFile; + var realpath = opts.realpath || defaultRealpath; + var readPackage = opts.readPackage || defaultReadPackage; + if (opts.readFile && opts.readPackage) { + var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.'); + return process.nextTick(function () { + cb(conflictErr); + }); + } + var packageIterator = opts.packageIterator; - // If the frame is unfragmented, or a fragmented frame was terminated, - // a message was received - if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { - const fullMessage = Buffer.concat(this.#fragments) + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; - websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage) + opts.paths = opts.paths || defaultPaths(); - this.#info = {} - this.#fragments.length = 0 - } + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = path.resolve(basedir); - this.#state = parserStates.INFO + maybeRealpath( + realpath, + absoluteStart, + opts, + function (err, realStart) { + if (err) cb(err); + else init(realStart); } - } + ); - if (this.#byteOffset > 0) { - continue - } else { - callback() - break - } + var res; + function init(basedir) { + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + res = path.resolve(basedir, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + if ((/\/$/).test(x) && res === basedir) { + loadAsDirectory(res, opts.package, onfile); + } else loadAsFile(res, opts.package, onfile); + } else if (includeCoreModules && isCore(x)) { + return cb(null, x); + } else loadNodeModules(x, basedir, function (err, n, pkg) { + if (err) cb(err); + else if (n) { + return maybeRealpath(realpath, n, opts, function (err, realN) { + if (err) { + cb(err); + } else { + cb(null, realN, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); } - } - /** - * Take n bytes from the buffered Buffers - * @param {number} n - * @returns {Buffer|null} - */ - consume (n) { - if (n > this.#byteOffset) { - return null - } else if (n === 0) { - return emptyBuffer + function onfile(err, m, pkg) { + if (err) cb(err); + else if (m) cb(null, m, pkg); + else loadAsDirectory(res, function (err, d, pkg) { + if (err) cb(err); + else if (d) { + maybeRealpath(realpath, d, opts, function (err, realD) { + if (err) { + cb(err); + } else { + cb(null, realD, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); } - if (this.#buffers[0].length === n) { - this.#byteOffset -= this.#buffers[0].length - return this.#buffers.shift() + function loadAsFile(x, thePackage, callback) { + var loadAsFilePackage = thePackage; + var cb = callback; + if (typeof loadAsFilePackage === 'function') { + cb = loadAsFilePackage; + loadAsFilePackage = undefined; + } + + var exts = [''].concat(extensions); + load(exts, x, loadAsFilePackage); + + function load(exts, x, loadPackage) { + if (exts.length === 0) return cb(null, undefined, loadPackage); + var file = x + exts[0]; + + var pkg = loadPackage; + if (pkg) onpkg(null, pkg); + else loadpkg(path.dirname(file), onpkg); + + function onpkg(err, pkg_, dir) { + pkg = pkg_; + if (err) return cb(err); + if (dir && pkg && opts.pathFilter) { + var rfile = path.relative(dir, file); + var rel = rfile.slice(0, rfile.length - exts[0].length); + var r = opts.pathFilter(pkg, x, rel); + if (r) return load( + [''].concat(extensions.slice()), + path.resolve(dir, r), + pkg + ); + } + isFile(file, onex); + } + function onex(err, ex) { + if (err) return cb(err); + if (ex) return cb(null, file, pkg); + load(exts.slice(1), x, pkg); + } + } } - const buffer = Buffer.allocUnsafe(n) - let offset = 0 + function loadpkg(dir, cb) { + if (dir === '' || dir === '/') return cb(null); + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return cb(null); + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); - while (offset !== n) { - const next = this.#buffers[0] - const { length } = next + maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return loadpkg(path.dirname(dir), cb); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + // on err, ex is false + if (!ex) return loadpkg(path.dirname(dir), cb); - if (length + offset === n) { - buffer.set(this.#buffers.shift(), offset) - break - } else if (length + offset > n) { - buffer.set(next.subarray(0, n - offset), offset) - this.#buffers[0] = next.subarray(n - offset) - break - } else { - buffer.set(this.#buffers.shift(), offset) - offset += next.length - } + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) cb(err); + + var pkg = pkgParam; + + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + cb(null, pkg, dir); + }); + }); + }); } - this.#byteOffset -= n + function loadAsDirectory(x, loadAsDirectoryPackage, callback) { + var cb = callback; + var fpkg = loadAsDirectoryPackage; + if (typeof fpkg === 'function') { + cb = fpkg; + fpkg = opts.package; + } - return buffer - } + maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return cb(unwrapErr); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + if (err) return cb(err); + if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); - parseCloseBody (onlyCode, data) { - // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 - /** @type {number|undefined} */ - let code + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) return cb(err); - if (data.length >= 2) { - // _The WebSocket Connection Close Code_ is - // defined as the status code (Section 7.4) contained in the first Close - // control frame received by the application - code = data.readUInt16BE(0) - } + var pkg = pkgParam; - if (onlyCode) { - if (!isValidStatusCode(code)) { - return null - } + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } - return { code } + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + return cb(mainError); + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); + + var dir = path.resolve(x, pkg.main); + loadAsDirectory(dir, pkg, function (err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + loadAsFile(path.join(x, 'index'), pkg, cb); + }); + }); + return; + } + + loadAsFile(path.join(x, '/index'), pkg, cb); + }); + }); + }); } - // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 - /** @type {Buffer} */ - let reason = data.subarray(2) + function processDirs(cb, dirs) { + if (dirs.length === 0) return cb(null, undefined); + var dir = dirs[0]; - // Remove BOM - if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { - reason = reason.subarray(3) - } + isDirectory(path.dirname(dir), isdir); - if (code !== undefined && !isValidStatusCode(code)) { - return null - } + function isdir(err, isdir) { + if (err) return cb(err); + if (!isdir) return processDirs(cb, dirs.slice(1)); + loadAsFile(dir, opts.package, onfile); + } - try { - // TODO: optimize this - reason = new TextDecoder('utf-8', { fatal: true }).decode(reason) - } catch { - return null - } - - return { code, reason } - } - - get closingInfo () { - return this.#info.closeInfo - } -} + function onfile(err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + loadAsDirectory(dir, opts.package, ondir); + } -module.exports = { - ByteParser -} + function ondir(err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + processDirs(cb, dirs.slice(1)); + } + } + function loadNodeModules(x, start, cb) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + processDirs( + cb, + packageIterator ? packageIterator(x, start, thunk, opts) : thunk() + ); + } +}; /***/ }), -/***/ 2933: +/***/ 87481: /***/ ((module) => { -"use strict"; - - -module.exports = { - kWebSocketURL: Symbol('url'), - kReadyState: Symbol('ready state'), - kController: Symbol('controller'), - kResponse: Symbol('response'), - kBinaryType: Symbol('binary type'), - kSentClose: Symbol('sent close'), - kReceivedClose: Symbol('received close'), - kByteParser: Symbol('byte parser') -} +module.exports = function () { + // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi + var origPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function (_, stack) { return stack; }; + var stack = (new Error()).stack; + Error.prepareStackTrace = origPrepareStackTrace; + return stack[2].getFileName(); +}; /***/ }), -/***/ 3574: +/***/ 12333: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = __nccwpck_require__(2933) -const { states, opcodes } = __nccwpck_require__(5913) -const { MessageEvent, ErrorEvent } = __nccwpck_require__(6255) - -/* globals Blob */ +var isCoreModule = __nccwpck_require__(65223); +var data = __nccwpck_require__(62035); -/** - * @param {import('./websocket').WebSocket} ws - */ -function isEstablished (ws) { - // If the server's response is validated as provided for above, it is - // said that _The WebSocket Connection is Established_ and that the - // WebSocket Connection is in the OPEN state. - return ws[kReadyState] === states.OPEN +var core = {}; +for (var mod in data) { // eslint-disable-line no-restricted-syntax + if (Object.prototype.hasOwnProperty.call(data, mod)) { + core[mod] = isCoreModule(mod); + } } +module.exports = core; -/** - * @param {import('./websocket').WebSocket} ws - */ -function isClosing (ws) { - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - return ws[kReadyState] === states.CLOSING -} -/** - * @param {import('./websocket').WebSocket} ws - */ -function isClosed (ws) { - return ws[kReadyState] === states.CLOSED -} +/***/ }), -/** - * @see https://dom.spec.whatwg.org/#concept-event-fire - * @param {string} e - * @param {EventTarget} target - * @param {EventInit | undefined} eventInitDict - */ -function fireEvent (e, target, eventConstructor = Event, eventInitDict) { - // 1. If eventConstructor is not given, then let eventConstructor be Event. +/***/ 22282: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 2. Let event be the result of creating an event given eventConstructor, - // in the relevant realm of target. - // 3. Initialize event’s type attribute to e. - const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap +"use strict"; - // 4. Initialize any other IDL attributes of event as described in the - // invocation of this algorithm. - // 5. Return the result of dispatching event at target, with legacy target - // override flag set if set. - target.dispatchEvent(event) -} +var os = __nccwpck_require__(70857); -/** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - * @param {import('./websocket').WebSocket} ws - * @param {number} type Opcode - * @param {Buffer} data application data - */ -function websocketMessageReceived (ws, type, data) { - // 1. If ready state is not OPEN (1), then return. - if (ws[kReadyState] !== states.OPEN) { - return - } +// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js - // 2. Let dataForEvent be determined by switching on type and binary type: - let dataForEvent +module.exports = os.homedir || function homedir() { + var home = process.env.HOME; + var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; - if (type === opcodes.TEXT) { - // -> type indicates that the data is Text - // a new DOMString containing data - try { - dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data) - } catch { - failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.') - return - } - } else if (type === opcodes.BINARY) { - if (ws[kBinaryType] === 'blob') { - // -> type indicates that the data is Binary and binary type is "blob" - // a new Blob object, created in the relevant Realm of the WebSocket - // object, that represents data as its raw data - dataForEvent = new Blob([data]) - } else { - // -> type indicates that the data is Binary and binary type is "arraybuffer" - // a new ArrayBuffer object, created in the relevant Realm of the - // WebSocket object, whose contents are data - dataForEvent = new Uint8Array(data).buffer + if (process.platform === 'win32') { + return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null; } - } - - // 3. Fire an event named message at the WebSocket object, using MessageEvent, - // with the origin attribute initialized to the serialization of the WebSocket - // object’s url's origin, and the data attribute initialized to dataForEvent. - fireEvent('message', ws, MessageEvent, { - origin: ws[kWebSocketURL].origin, - data: dataForEvent - }) -} - -/** - * @see https://datatracker.ietf.org/doc/html/rfc6455 - * @see https://datatracker.ietf.org/doc/html/rfc2616 - * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 - * @param {string} protocol - */ -function isValidSubprotocol (protocol) { - // If present, this value indicates one - // or more comma-separated subprotocol the client wishes to speak, - // ordered by preference. The elements that comprise this value - // MUST be non-empty strings with characters in the range U+0021 to - // U+007E not including separator characters as defined in - // [RFC2616] and MUST all be unique strings. - if (protocol.length === 0) { - return false - } - for (const char of protocol) { - const code = char.charCodeAt(0) - - if ( - code < 0x21 || - code > 0x7E || - char === '(' || - char === ')' || - char === '<' || - char === '>' || - char === '@' || - char === ',' || - char === ';' || - char === ':' || - char === '\\' || - char === '"' || - char === '/' || - char === '[' || - char === ']' || - char === '?' || - char === '=' || - char === '{' || - char === '}' || - code === 32 || // SP - code === 9 // HT - ) { - return false + if (process.platform === 'darwin') { + return home || (user ? '/Users/' + user : null); } - } - return true -} - -/** - * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 - * @param {number} code - */ -function isValidStatusCode (code) { - if (code >= 1000 && code < 1015) { - return ( - code !== 1004 && // reserved - code !== 1005 && // "MUST NOT be set as a status code" - code !== 1006 // "MUST NOT be set as a status code" - ) - } + if (process.platform === 'linux') { + return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens + } - return code >= 3000 && code <= 4999 -} + return home || null; +}; -/** - * @param {import('./websocket').WebSocket} ws - * @param {string|undefined} reason - */ -function failWebsocketConnection (ws, reason) { - const { [kController]: controller, [kResponse]: response } = ws - controller.abort() +/***/ }), - if (response?.socket && !response.socket.destroyed) { - response.socket.destroy() - } +/***/ 54040: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (reason) { - fireEvent('error', ws, ErrorEvent, { - error: new Error(reason) - }) - } -} +var isCoreModule = __nccwpck_require__(65223); -module.exports = { - isEstablished, - isClosing, - isClosed, - fireEvent, - isValidSubprotocol, - isValidStatusCode, - failWebsocketConnection, - websocketMessageReceived -} +module.exports = function isCore(x) { + return isCoreModule(x); +}; /***/ }), -/***/ 5171: +/***/ 9411: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +var path = __nccwpck_require__(16928); +var parse = path.parse || __nccwpck_require__(33269); // eslint-disable-line global-require +var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { + var prefix = '/'; + if ((/^([A-Za-z]:)/).test(absoluteStart)) { + prefix = ''; + } else if ((/^\\\\/).test(absoluteStart)) { + prefix = '\\\\'; + } -const { webidl } = __nccwpck_require__(4222) -const { DOMException } = __nccwpck_require__(7326) -const { URLSerializer } = __nccwpck_require__(4322) -const { getGlobalOrigin } = __nccwpck_require__(5628) -const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(5913) -const { - kWebSocketURL, - kReadyState, - kController, - kBinaryType, - kResponse, - kSentClose, - kByteParser -} = __nccwpck_require__(2933) -const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = __nccwpck_require__(3574) -const { establishWebSocketConnection } = __nccwpck_require__(8550) -const { WebsocketFrameSend } = __nccwpck_require__(1237) -const { ByteParser } = __nccwpck_require__(3171) -const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3440) -const { getGlobalDispatcher } = __nccwpck_require__(2581) -const { types } = __nccwpck_require__(9023) + var paths = [absoluteStart]; + var parsed = parse(absoluteStart); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } -let experimentalWarned = false + return paths.reduce(function (dirs, aPath) { + return dirs.concat(modules.map(function (moduleDir) { + return path.resolve(prefix, aPath, moduleDir); + })); + }, []); +}; -// https://websockets.spec.whatwg.org/#interface-definition -class WebSocket extends EventTarget { - #events = { - open: null, - error: null, - close: null, - message: null - } +module.exports = function nodeModulesPaths(start, opts, request) { + var modules = opts && opts.moduleDirectory + ? [].concat(opts.moduleDirectory) + : ['node_modules']; - #bufferedAmount = 0 - #protocol = '' - #extensions = '' + if (opts && typeof opts.paths === 'function') { + return opts.paths( + request, + start, + function () { return getNodeModulesDirs(start, modules); }, + opts + ); + } - /** - * @param {string} url - * @param {string|string[]} protocols - */ - constructor (url, protocols = []) { - super() + var dirs = getNodeModulesDirs(start, modules); + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; +}; - webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }) - if (!experimentalWarned) { - experimentalWarned = true - process.emitWarning('WebSockets are experimental, expect them to change at any time.', { - code: 'UNDICI-WS' - }) - } +/***/ }), - const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols) +/***/ 29496: +/***/ ((module) => { - url = webidl.converters.USVString(url) - protocols = options.protocols +module.exports = function (x, opts) { + /** + * This file is purposefully a passthrough. It's expected that third-party + * environments will override it at runtime in order to inject special logic + * into `resolve` (by manipulating the options). One such example is the PnP + * code path in Yarn. + */ - // 1. Let baseURL be this's relevant settings object's API base URL. - const baseURL = getGlobalOrigin() + return opts || {}; +}; - // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. - let urlRecord +/***/ }), + +/***/ 70225: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var isCore = __nccwpck_require__(65223); +var fs = __nccwpck_require__(79896); +var path = __nccwpck_require__(16928); +var getHomedir = __nccwpck_require__(22282); +var caller = __nccwpck_require__(87481); +var nodeModulesPaths = __nccwpck_require__(9411); +var normalizeOptions = __nccwpck_require__(29496); + +var realpathFS = process.platform !== 'win32' && fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + +var homedir = getHomedir(); +var defaultPaths = function () { + return [ + path.join(homedir, '.node_modules'), + path.join(homedir, '.node_libraries') + ]; +}; + +var defaultIsFile = function isFile(file) { try { - urlRecord = new URL(url, baseURL) + var stat = fs.statSync(file, { throwIfNoEntry: false }); } catch (e) { - // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. - throw new DOMException(e, 'SyntaxError') + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; } + return !!stat && (stat.isFile() || stat.isFIFO()); +}; - // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". - if (urlRecord.protocol === 'http:') { - urlRecord.protocol = 'ws:' - } else if (urlRecord.protocol === 'https:') { - // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". - urlRecord.protocol = 'wss:' +var defaultIsDir = function isDirectory(dir) { + try { + var stat = fs.statSync(dir, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; } + return !!stat && stat.isDirectory(); +}; - // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. - if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { - throw new DOMException( - `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, - 'SyntaxError' - ) +var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== 'ENOENT') { + throw realpathErr; + } } + return x; +}; - // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" - // DOMException. - if (urlRecord.hash || urlRecord.href.endsWith('#')) { - throw new DOMException('Got fragment', 'SyntaxError') +var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { + if (opts && opts.preserveSymlinks === false) { + return realpathSync(x); } + return x; +}; - // 8. If protocols is a string, set protocols to a sequence consisting - // of just that string. - if (typeof protocols === 'string') { - protocols = [protocols] - } +var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) {} +}; - // 9. If any of the values in protocols occur more than once or otherwise - // fail to match the requirements for elements that comprise the value - // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket - // protocol, then throw a "SyntaxError" DOMException. - if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { - throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); } + return dirs; +}; - if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { - throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') +module.exports = function resolveSync(x, options) { + if (typeof x !== 'string') { + throw new TypeError('Path must be a string.'); } + var opts = normalizeOptions(x, options); - // 10. Set this's url to urlRecord. - this[kWebSocketURL] = new URL(urlRecord.href) + var isFile = opts.isFile || defaultIsFile; + var readFileSync = opts.readFileSync || fs.readFileSync; + var isDirectory = opts.isDirectory || defaultIsDir; + var realpathSync = opts.realpathSync || defaultRealpathSync; + var readPackageSync = opts.readPackageSync || defaultReadPackageSync; + if (opts.readFileSync && opts.readPackageSync) { + throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.'); + } + var packageIterator = opts.packageIterator; - // 11. Let client be this's relevant settings object. + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; - // 12. Run this step in parallel: + opts.paths = opts.paths || defaultPaths(); - // 1. Establish a WebSocket connection given urlRecord, protocols, - // and client. - this[kController] = establishWebSocketConnection( - urlRecord, - protocols, - this, - (response) => this.#onConnectionEstablished(response), - options - ) + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); - // Each WebSocket object has an associated ready state, which is a - // number representing the state of the connection. Initially it must - // be CONNECTING (0). - this[kReadyState] = WebSocket.CONNECTING + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + var res = path.resolve(absoluteStart, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + var m = loadAsFileSync(res) || loadAsDirectorySync(res); + if (m) return maybeRealpathSync(realpathSync, m, opts); + } else if (includeCoreModules && isCore(x)) { + return x; + } else { + var n = loadNodeModulesSync(x, absoluteStart); + if (n) return maybeRealpathSync(realpathSync, n, opts); + } - // The extensions attribute must initially return the empty string. + var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + err.code = 'MODULE_NOT_FOUND'; + throw err; - // The protocol attribute must initially return the empty string. + function loadAsFileSync(x) { + var pkg = loadpkg(path.dirname(x)); - // Each WebSocket object has an associated binary type, which is a - // BinaryType. Initially it must be "blob". - this[kBinaryType] = 'blob' - } + if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { + var rfile = path.relative(pkg.dir, x); + var r = opts.pathFilter(pkg.pkg, x, rfile); + if (r) { + x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign + } + } - /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-close - * @param {number|undefined} code - * @param {string|undefined} reason - */ - close (code = undefined, reason = undefined) { - webidl.brandCheck(this, WebSocket) + if (isFile(x)) { + return x; + } - if (code !== undefined) { - code = webidl.converters['unsigned short'](code, { clamp: true }) + for (var i = 0; i < extensions.length; i++) { + var file = x + extensions[i]; + if (isFile(file)) { + return file; + } + } } - if (reason !== undefined) { - reason = webidl.converters.USVString(reason) - } + function loadpkg(dir) { + if (dir === '' || dir === '/') return; + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return; + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; - // 1. If code is present, but is neither an integer equal to 1000 nor an - // integer in the range 3000 to 4999, inclusive, throw an - // "InvalidAccessError" DOMException. - if (code !== undefined) { - if (code !== 1000 && (code < 3000 || code > 4999)) { - throw new DOMException('invalid code', 'InvalidAccessError') - } - } + var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json'); - let reasonByteLength = 0 + if (!isFile(pkgfile)) { + return loadpkg(path.dirname(dir)); + } - // 2. If reason is present, then run these substeps: - if (reason !== undefined) { - // 1. Let reasonBytes be the result of encoding reason. - // 2. If reasonBytes is longer than 123 bytes, then throw a - // "SyntaxError" DOMException. - reasonByteLength = Buffer.byteLength(reason) + var pkg = readPackageSync(readFileSync, pkgfile); - if (reasonByteLength > 123) { - throw new DOMException( - `Reason must be less than 123 bytes; received ${reasonByteLength}`, - 'SyntaxError' - ) - } + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment + } + + return { pkg: pkg, dir: dir }; } - // 3. Run the first matching steps from the following list: - if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { - // If this's ready state is CLOSING (2) or CLOSED (3) - // Do nothing. - } else if (!isEstablished(this)) { - // If the WebSocket connection is not yet established - // Fail the WebSocket connection and set this's ready state - // to CLOSING (2). - failWebsocketConnection(this, 'Connection was closed before it was established.') - this[kReadyState] = WebSocket.CLOSING - } else if (!isClosing(this)) { - // If the WebSocket closing handshake has not yet been started - // Start the WebSocket closing handshake and set this's ready - // state to CLOSING (2). - // - If neither code nor reason is present, the WebSocket Close - // message must not have a body. - // - If code is present, then the status code to use in the - // WebSocket Close message must be the integer given by code. - // - If reason is also present, then reasonBytes must be - // provided in the Close message after the status code. + function loadAsDirectorySync(x) { + var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json'); + if (isFile(pkgfile)) { + try { + var pkg = readPackageSync(readFileSync, pkgfile); + } catch (e) {} - const frame = new WebsocketFrameSend() + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment + } - // If neither code nor reason is present, the WebSocket Close - // message must not have a body. + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + throw mainError; + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + try { + var m = loadAsFileSync(path.resolve(x, pkg.main)); + if (m) return m; + var n = loadAsDirectorySync(path.resolve(x, pkg.main)); + if (n) return n; + } catch (e) {} + } + } - // If code is present, then the status code to use in the - // WebSocket Close message must be the integer given by code. - if (code !== undefined && reason === undefined) { - frame.frameData = Buffer.allocUnsafe(2) - frame.frameData.writeUInt16BE(code, 0) - } else if (code !== undefined && reason !== undefined) { - // If reason is also present, then reasonBytes must be - // provided in the Close message after the status code. - frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength) - frame.frameData.writeUInt16BE(code, 0) - // the body MAY contain UTF-8-encoded data with value /reason/ - frame.frameData.write(reason, 2, 'utf-8') - } else { - frame.frameData = emptyBuffer - } + return loadAsFileSync(path.join(x, '/index')); + } - /** @type {import('stream').Duplex} */ - const socket = this[kResponse].socket + function loadNodeModulesSync(x, start) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); - socket.write(frame.createFrame(opcodes.CLOSE), (err) => { - if (!err) { - this[kSentClose] = true + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + if (isDirectory(path.dirname(dir))) { + var m = loadAsFileSync(dir); + if (m) return m; + var n = loadAsDirectorySync(dir); + if (n) return n; + } } - }) - - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - this[kReadyState] = states.CLOSING - } else { - // Otherwise - // Set this's ready state to CLOSING (2). - this[kReadyState] = WebSocket.CLOSING } - } +}; - /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-send - * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data - */ - send (data) { - webidl.brandCheck(this, WebSocket) - webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }) +/***/ }), - data = webidl.converters.WebSocketSendData(data) +/***/ 89495: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // 1. If this's ready state is CONNECTING, then throw an - // "InvalidStateError" DOMException. - if (this[kReadyState] === WebSocket.CONNECTING) { - throw new DOMException('Sent before connected.', 'InvalidStateError') - } +"use strict"; - // 2. Run the appropriate set of steps from the following list: - // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 - // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 - if (!isEstablished(this) || isClosing(this)) { - return - } +var typeOf = __nccwpck_require__(5140); +var extend = __nccwpck_require__(48905); - /** @type {import('stream').Duplex} */ - const socket = this[kResponse].socket +/** + * Parse sections in `input` with the given `options`. + * + * ```js + * var sections = require('{%= name %}'); + * var result = sections(input, options); + * // { content: 'Content before sections', sections: [] } + * ``` + * @param {String|Buffer|Object} `input` If input is an object, it's `content` property must be a string or buffer. + * @param {Object} options + * @return {Object} Returns an object with a `content` string and an array of `sections` objects. + * @api public + */ - // If data is a string - if (typeof data === 'string') { - // If the WebSocket connection is established and the WebSocket - // closing handshake has not yet started, then the user agent - // must send a WebSocket Message comprised of the data argument - // using a text frame opcode; if the data cannot be sent, e.g. - // because it would need to be buffered but the buffer is full, - // the user agent must flag the WebSocket as full and then close - // the WebSocket connection. Any invocation of this method with a - // string argument that does not throw an exception must increase - // the bufferedAmount attribute by the number of bytes needed to - // express the argument as UTF-8. +module.exports = function(input, options) { + if (typeof options === 'function') { + options = { parse: options }; + } - const value = Buffer.from(data) - const frame = new WebsocketFrameSend(value) - const buffer = frame.createFrame(opcodes.TEXT) + var file = toObject(input); + var defaults = {section_delimiter: '---', parse: identity}; + var opts = extend({}, defaults, options); + var delim = opts.section_delimiter; + var lines = file.content.split(/\r?\n/); + var sections = null; + var section = createSection(); + var content = []; + var stack = []; - this.#bufferedAmount += value.byteLength - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength - }) - } else if (types.isArrayBuffer(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need - // to be buffered but the buffer is full, the user agent must flag - // the WebSocket as full and then close the WebSocket connection. - // The data to be sent is the data stored in the buffer described - // by the ArrayBuffer object. Any invocation of this method with an - // ArrayBuffer argument that does not throw an exception must - // increase the bufferedAmount attribute by the length of the - // ArrayBuffer in bytes. + function initSections(val) { + file.content = val; + sections = []; + content = []; + } - const value = Buffer.from(data) - const frame = new WebsocketFrameSend(value) - const buffer = frame.createFrame(opcodes.BINARY) + function closeSection(val) { + if (stack.length) { + section.key = getKey(stack[0], delim); + section.content = val; + opts.parse(section, sections); + sections.push(section); + section = createSection(); + content = []; + stack = []; + } + } - this.#bufferedAmount += value.byteLength - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength - }) - } else if (ArrayBuffer.isView(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need to - // be buffered but the buffer is full, the user agent must flag the - // WebSocket as full and then close the WebSocket connection. The - // data to be sent is the data stored in the section of the buffer - // described by the ArrayBuffer object that data references. Any - // invocation of this method with this kind of argument that does - // not throw an exception must increase the bufferedAmount attribute - // by the length of data’s buffer in bytes. + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + var len = stack.length; + var ln = line.trim(); - const ab = Buffer.from(data, data.byteOffset, data.byteLength) + if (isDelimiter(ln, delim)) { + if (ln.length === 3 && i !== 0) { + if (len === 0 || len === 2) { + content.push(line); + continue; + } + stack.push(ln); + section.data = content.join('\n'); + content = []; + continue; + } - const frame = new WebsocketFrameSend(ab) - const buffer = frame.createFrame(opcodes.BINARY) + if (sections === null) { + initSections(content.join('\n')); + } - this.#bufferedAmount += ab.byteLength - socket.write(buffer, () => { - this.#bufferedAmount -= ab.byteLength - }) - } else if (isBlobLike(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need to - // be buffered but the buffer is full, the user agent must flag the - // WebSocket as full and then close the WebSocket connection. The data - // to be sent is the raw data represented by the Blob object. Any - // invocation of this method with a Blob argument that does not throw - // an exception must increase the bufferedAmount attribute by the size - // of the Blob object’s raw data, in bytes. + if (len === 2) { + closeSection(content.join('\n')); + } - const frame = new WebsocketFrameSend() + stack.push(ln); + continue; + } - data.arrayBuffer().then((ab) => { - const value = Buffer.from(ab) - frame.frameData = value - const buffer = frame.createFrame(opcodes.BINARY) + content.push(line); + } - this.#bufferedAmount += value.byteLength - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength - }) - }) - } + if (sections === null) { + initSections(content.join('\n')); + } else { + closeSection(content.join('\n')); } - get readyState () { - webidl.brandCheck(this, WebSocket) + file.sections = sections; + return file; +}; - // The readyState getter steps are to return this's ready state. - return this[kReadyState] +function isDelimiter(line, delim) { + if (line.slice(0, delim.length) !== delim) { + return false; + } + if (line.charAt(delim.length + 1) === delim.slice(-1)) { + return false; } + return true; +} - get bufferedAmount () { - webidl.brandCheck(this, WebSocket) +function toObject(input) { + if (typeOf(input) !== 'object') { + input = { content: input }; + } - return this.#bufferedAmount + if (typeof input.content !== 'string' && !isBuffer(input.content)) { + throw new TypeError('expected a buffer or string'); } - get url () { - webidl.brandCheck(this, WebSocket) + input.content = input.content.toString(); + input.sections = []; + return input; +} - // The url getter steps are to return this's url, serialized. - return URLSerializer(this[kWebSocketURL]) - } +function getKey(val, delim) { + return val ? val.slice(delim.length).trim() : ''; +} - get extensions () { - webidl.brandCheck(this, WebSocket) +function createSection() { + return { key: '', data: '', content: '' }; +} - return this.#extensions +function identity(val) { + return val; +} + +function isBuffer(val) { + if (val && val.constructor && typeof val.constructor.isBuffer === 'function') { + return val.constructor.isBuffer(val); } + return false; +} - get protocol () { - webidl.brandCheck(this, WebSocket) - return this.#protocol - } +/***/ }), - get onopen () { - webidl.brandCheck(this, WebSocket) +/***/ 39318: +/***/ ((module, exports) => { - return this.#events.open +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) } +} else { + debug = function () {} +} - set onopen (fn) { - webidl.brandCheck(this, WebSocket) +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' - if (this.#events.open) { - this.removeEventListener('open', this.#events.open) - } +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 - if (typeof fn === 'function') { - this.#events.open = fn - this.addEventListener('open', fn) - } else { - this.#events.open = null - } - } +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 - get onerror () { - webidl.brandCheck(this, WebSocket) +var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 - return this.#events.error - } +// The actual regexps go on exports.re +var re = exports.re = [] +var safeRe = exports.safeRe = [] +var src = exports.src = [] +var R = 0 - set onerror (fn) { - webidl.brandCheck(this, WebSocket) +var LETTERDASHNUMBER = '[a-zA-Z0-9-]' - if (this.#events.error) { - this.removeEventListener('error', this.#events.error) - } +// Replace some greedy regex tokens to prevent regex dos issues. These regex are +// used internally via the safeRe object since all inputs in this library get +// normalized first to trim and collapse all extra whitespace. The original +// regexes are exported for userland consumption and lower level usage. A +// future breaking change could export the safer regex only with a note that +// all input should have extra whitespace removed. +var safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], +] - if (typeof fn === 'function') { - this.#events.error = fn - this.addEventListener('error', fn) - } else { - this.#events.error = null - } +function makeSafeRe (value) { + for (var i = 0; i < safeRegexReplacements.length; i++) { + var token = safeRegexReplacements[i][0] + var max = safeRegexReplacements[i][1] + value = value + .split(token + '*').join(token + '{0,' + max + '}') + .split(token + '+').join(token + '{1,' + max + '}') } + return value +} - get onclose () { - webidl.brandCheck(this, WebSocket) +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. - return this.#events.close - } +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. - set onclose (fn) { - webidl.brandCheck(this, WebSocket) +var NUMERICIDENTIFIER = R++ +src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' +var NUMERICIDENTIFIERLOOSE = R++ +src[NUMERICIDENTIFIERLOOSE] = '\\d+' - if (this.#events.close) { - this.removeEventListener('close', this.#events.close) - } +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. - if (typeof fn === 'function') { - this.#events.close = fn - this.addEventListener('close', fn) - } else { - this.#events.close = null - } +var NONNUMERICIDENTIFIER = R++ +src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +var MAINVERSION = R++ +src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')' + +var MAINVERSIONLOOSE = R++ +src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +var PRERELEASEIDENTIFIER = R++ +src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +var PRERELEASEIDENTIFIERLOOSE = R++ +src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +var PRERELEASE = R++ +src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))' + +var PRERELEASELOOSE = R++ +src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +var BUILDIDENTIFIER = R++ +src[BUILDIDENTIFIER] = LETTERDASHNUMBER + '+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +var BUILD = R++ +src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +var FULL = R++ +var FULLPLAIN = 'v?' + src[MAINVERSION] + + src[PRERELEASE] + '?' + + src[BUILD] + '?' + +src[FULL] = '^' + FULLPLAIN + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + + src[PRERELEASELOOSE] + '?' + + src[BUILD] + '?' + +var LOOSE = R++ +src[LOOSE] = '^' + LOOSEPLAIN + '$' + +var GTLT = R++ +src[GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +var XRANGEIDENTIFIERLOOSE = R++ +src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +var XRANGEIDENTIFIER = R++ +src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*' + +var XRANGEPLAIN = R++ +src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGEPLAINLOOSE = R++ +src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGE = R++ +src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' +var XRANGELOOSE = R++ +src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +var COERCE = R++ +src[COERCE] = '(?:^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +var LONETILDE = R++ +src[LONETILDE] = '(?:~>?)' + +var TILDETRIM = R++ +src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' +re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') +safeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), 'g') +var tildeTrimReplace = '$1~' + +var TILDE = R++ +src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' +var TILDELOOSE = R++ +src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +var LONECARET = R++ +src[LONECARET] = '(?:\\^)' + +var CARETTRIM = R++ +src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' +re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') +safeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), 'g') +var caretTrimReplace = '$1^' + +var CARET = R++ +src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' +var CARETLOOSE = R++ +src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +var COMPARATORLOOSE = R++ +src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$' +var COMPARATOR = R++ +src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +var COMPARATORTRIM = R++ +src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') +safeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +var HYPHENRANGE = R++ +src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAIN] + ')' + + '\\s*$' + +var HYPHENRANGELOOSE = R++ +src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +var STAR = R++ +src[STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + + // Replace all greedy whitespace to prevent regex dos issues. These regex are + // used internally via the safeRe object since all inputs in this library get + // normalized first to trim and collapse all extra whitespace. The original + // regexes are exported for userland consumption and lower level usage. A + // future breaking change could export the safer regex only with a note that + // all input should have extra whitespace removed. + safeRe[i] = new RegExp(makeSafeRe(src[i])) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null } - get onmessage () { - webidl.brandCheck(this, WebSocket) + if (version.length > MAX_LENGTH) { + return null + } - return this.#events.message + var r = options.loose ? safeRe[LOOSE] : safeRe[FULL] + if (!r.test(version)) { + return null } - set onmessage (fn) { - webidl.brandCheck(this, WebSocket) + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} - if (this.#events.message) { - this.removeEventListener('message', this.#events.message) - } +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} - if (typeof fn === 'function') { - this.#events.message = fn - this.addEventListener('message', fn) +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version } else { - this.#events.message = null + version = version.version } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) } - get binaryType () { - webidl.brandCheck(this, WebSocket) + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } - return this[kBinaryType] + if (!(this instanceof SemVer)) { + return new SemVer(version, options) } - set binaryType (type) { - webidl.brandCheck(this, WebSocket) + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose - if (type !== 'blob' && type !== 'arraybuffer') { - this[kBinaryType] = 'blob' - } else { - this[kBinaryType] = type - } - } + var m = version.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL]) - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - */ - #onConnectionEstablished (response) { - // processResponse is called when the "response’s header list has been received and initialized." - // once this happens, the connection is open - this[kResponse] = response + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } - const parser = new ByteParser(this) - parser.on('drain', function onParserDrain () { - this.ws[kResponse].socket.resume() - }) + this.raw = version - response.socket.ws = this - this[kByteParser] = parser + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] - // 1. Change the ready state to OPEN (1). - this[kReadyState] = states.OPEN + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } - // 2. Change the extensions attribute’s value to the extensions in use, if - // it is not the null value. - // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 - const extensions = response.headersList.get('sec-websocket-extensions') + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } - if (extensions !== null) { - this.#extensions = extensions - } + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } - // 3. Change the protocol attribute’s value to the subprotocol in use, if - // it is not the null value. - // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 - const protocol = response.headersList.get('sec-websocket-protocol') + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } - if (protocol !== null) { - this.#protocol = protocol - } + this.build = m[5] ? m[5].split('.') : [] + this.format() +} - // 4. Fire an event named open at the WebSocket object. - fireEvent('open', this) +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') } + return this.version } -// https://websockets.spec.whatwg.org/#dom-websocket-connecting -WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING -// https://websockets.spec.whatwg.org/#dom-websocket-open -WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN -// https://websockets.spec.whatwg.org/#dom-websocket-closing -WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING -// https://websockets.spec.whatwg.org/#dom-websocket-closed -WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED +SemVer.prototype.toString = function () { + return this.version +} -Object.defineProperties(WebSocket.prototype, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors, - url: kEnumerableProperty, - readyState: kEnumerableProperty, - bufferedAmount: kEnumerableProperty, - onopen: kEnumerableProperty, - onerror: kEnumerableProperty, - onclose: kEnumerableProperty, - close: kEnumerableProperty, - onmessage: kEnumerableProperty, - binaryType: kEnumerableProperty, - send: kEnumerableProperty, - extensions: kEnumerableProperty, - protocol: kEnumerableProperty, - [Symbol.toStringTag]: { - value: 'WebSocket', - writable: false, - enumerable: false, - configurable: true +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) } -}) - -Object.defineProperties(WebSocket, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors -}) -webidl.converters['sequence<DOMString>'] = webidl.sequenceConverter( - webidl.converters.DOMString -) + return this.compareMain(other) || this.comparePre(other) +} -webidl.converters['DOMString or sequence<DOMString>'] = function (V) { - if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { - return webidl.converters['sequence<DOMString>'](V) +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) } - return webidl.converters.DOMString(V) + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) } -// This implements the propsal made in https://github.com/whatwg/websockets/issues/42 -webidl.converters.WebSocketInit = webidl.dictionaryConverter([ - { - key: 'protocols', - converter: webidl.converters['DOMString or sequence<DOMString>'], - get defaultValue () { - return [] - } - }, - { - key: 'dispatcher', - converter: (V) => V, - get defaultValue () { - return getGlobalDispatcher() - } - }, - { - key: 'headers', - converter: webidl.nullableConverter(webidl.converters.HeadersInit) +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) } -]) -webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) { - if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { - return webidl.converters.WebSocketInit(V) + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 } - return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) } + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) } -webidl.converters.WebSocketSendData = function (V) { - if (webidl.util.Type(V) === 'Object') { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }) - } +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V) - } + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) } + this.format() + this.raw = this.version + return this +} - return webidl.converters.USVString(V) +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } } -module.exports = { - WebSocket +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } } +exports.compareIdentifiers = compareIdentifiers -/***/ }), +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) -/***/ 2613: -/***/ ((module) => { + if (anum && bnum) { + a = +a + b = +b + } -"use strict"; -module.exports = require("assert"); + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} -/***/ }), +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} -/***/ 290: -/***/ ((module) => { +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} -"use strict"; -module.exports = require("async_hooks"); +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} -/***/ }), +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} -/***/ 181: -/***/ ((module) => { +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} -"use strict"; -module.exports = require("buffer"); +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} -/***/ }), +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} -/***/ 5317: -/***/ ((module) => { +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compare(a, b, loose) + }) +} -"use strict"; -module.exports = require("child_process"); +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.rcompare(a, b, loose) + }) +} -/***/ }), +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} -/***/ 4236: -/***/ ((module) => { +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} -"use strict"; -module.exports = require("console"); +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} -/***/ }), +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} -/***/ 9140: -/***/ ((module) => { +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} -"use strict"; -module.exports = require("constants"); +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} -/***/ }), +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b -/***/ 6982: -/***/ ((module) => { + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b -"use strict"; -module.exports = require("crypto"); + case '': + case '=': + case '==': + return eq(a, b, loose) -/***/ }), + case '!=': + return neq(a, b, loose) -/***/ 1637: -/***/ ((module) => { + case '>': + return gt(a, b, loose) -"use strict"; -module.exports = require("diagnostics_channel"); + case '>=': + return gte(a, b, loose) -/***/ }), + case '<': + return lt(a, b, loose) -/***/ 4434: -/***/ ((module) => { + case '<=': + return lte(a, b, loose) -"use strict"; -module.exports = require("events"); + default: + throw new TypeError('Invalid operator: ' + op) + } +} -/***/ }), +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } -/***/ 9896: -/***/ ((module) => { + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } -"use strict"; -module.exports = require("fs"); + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } -/***/ }), + comp = comp.trim().split(/\s+/).join(' ') + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) -/***/ 8611: -/***/ ((module) => { + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } -"use strict"; -module.exports = require("http"); + debug('comp', this) +} -/***/ }), +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR] + var m = comp.match(r) -/***/ 5675: -/***/ ((module) => { + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } -"use strict"; -module.exports = require("http2"); + this.operator = m[1] + if (this.operator === '=') { + this.operator = '' + } -/***/ }), + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} -/***/ 5692: -/***/ ((module) => { +Comparator.prototype.toString = function () { + return this.value +} -"use strict"; -module.exports = require("https"); +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) -/***/ }), + if (this.semver === ANY) { + return true + } -/***/ 9278: -/***/ ((module) => { + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } -"use strict"; -module.exports = require("net"); + return cmp(version, this.operator, this.semver, this.options) +} -/***/ }), +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } -/***/ 7598: -/***/ ((module) => { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } -"use strict"; -module.exports = require("node:crypto"); + var rangeTmp -/***/ }), + if (this.operator === '') { + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } -/***/ 8474: -/***/ ((module) => { + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) -"use strict"; -module.exports = require("node:events"); + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} -/***/ }), +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } -/***/ 7075: -/***/ ((module) => { + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } -"use strict"; -module.exports = require("node:stream"); + if (range instanceof Comparator) { + return new Range(range.value, options) + } -/***/ }), + if (!(this instanceof Range)) { + return new Range(range, options) + } -/***/ 7975: -/***/ ((module) => { + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease -"use strict"; -module.exports = require("node:util"); + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range + .trim() + .split(/\s+/) + .join(' ') -/***/ }), + // First, split based on boolean or || + this.set = this.raw.split('||').map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) -/***/ 857: -/***/ ((module) => { + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + this.raw) + } -"use strict"; -module.exports = require("os"); + this.format() +} -/***/ }), +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} -/***/ 6928: -/***/ ((module) => { +Range.prototype.toString = function () { + return this.range +} -"use strict"; -module.exports = require("path"); +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, safeRe[COMPARATORTRIM]) -/***/ }), + // `~ 1.2.3` => `~1.2.3` + range = range.replace(safeRe[TILDETRIM], tildeTrimReplace) -/***/ 2987: -/***/ ((module) => { + // `^ 1.2.3` => `^1.2.3` + range = range.replace(safeRe[CARETTRIM], caretTrimReplace) -"use strict"; -module.exports = require("perf_hooks"); + // At this point, the range is completely trimmed and + // ready to be split into comparators. + var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) -/***/ }), + return set +} -/***/ 3480: -/***/ ((module) => { +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } -"use strict"; -module.exports = require("querystring"); + return this.set.some(function (thisComparators) { + return thisComparators.every(function (thisComparator) { + return range.set.some(function (rangeComparators) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + }) + }) +} -/***/ }), +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} -/***/ 2203: -/***/ ((module) => { +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } -"use strict"; -module.exports = require("stream"); + debug('tilde return', ret) + return ret + }) +} -/***/ }), +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } -/***/ 3774: -/***/ ((module) => { + debug('caret return', ret) + return ret + }) +} -"use strict"; -module.exports = require("stream/web"); +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} -/***/ }), +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp -/***/ 3193: -/***/ ((module) => { + if (gtlt === '=' && anyX) { + gtlt = '' + } -"use strict"; -module.exports = require("string_decoder"); + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } -/***/ }), + ret = gtlt + M + '.' + m + '.' + p + } else if (xm) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (xp) { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } -/***/ 3557: -/***/ ((module) => { + debug('xRange return', ret) -"use strict"; -module.exports = require("timers"); + return ret + }) +} -/***/ }), +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(safeRe[STAR], '') +} + +// This function is passed to string.replace(safeRe[HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } -/***/ 4756: -/***/ ((module) => { + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } -"use strict"; -module.exports = require("tls"); + return (from + ' ' + to).trim() +} -/***/ }), +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } -/***/ 7016: -/***/ ((module) => { + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } -"use strict"; -module.exports = require("url"); + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} -/***/ }), +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } -/***/ 9023: -/***/ ((module) => { + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } -"use strict"; -module.exports = require("util"); + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } -/***/ }), + // Version has a -pre, but it's not one of the ones we like. + return false + } -/***/ 8253: -/***/ ((module) => { + return true +} -"use strict"; -module.exports = require("util/types"); +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} -/***/ }), +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} -/***/ 8167: -/***/ ((module) => { +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} -"use strict"; -module.exports = require("worker_threads"); +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) -/***/ }), + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } -/***/ 3106: -/***/ ((module) => { + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } -"use strict"; -module.exports = require("zlib"); + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] -/***/ }), + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } -/***/ 7182: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (minver && range.test(minver)) { + return minver + } -"use strict"; + return null +} +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} -const WritableStream = (__nccwpck_require__(7075).Writable) -const inherits = (__nccwpck_require__(7975).inherits) +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} -const StreamSearch = __nccwpck_require__(4136) +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} -const PartStream = __nccwpck_require__(612) -const HeaderParser = __nccwpck_require__(2271) +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) -const DASH = 45 -const B_ONEDASH = Buffer.from('-') -const B_CRLF = Buffer.from('\r\n') -const EMPTY_FN = function () {} + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } -function Dicer (cfg) { - if (!(this instanceof Dicer)) { return new Dicer(cfg) } - WritableStream.call(this, cfg) + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } - if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') } + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. - if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined } + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] - this._headerFirst = cfg.headerFirst + var high = null + var low = null - this._dashes = 0 - this._parts = 0 - this._finished = false - this._realFinish = false - this._isPreamble = true - this._justMatched = false - this._firstWrite = true - this._inHeader = true - this._part = undefined - this._cb = undefined - this._ignoreData = false - this._partOpts = { highWaterMark: cfg.partHwm } - this._pause = false + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) - const self = this - this._hparser = new HeaderParser(cfg) - this._hparser.on('header', function (header) { - self._inHeader = false - self._part.emit('header', header) - }) -} -inherits(Dicer, WritableStream) + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } -Dicer.prototype.emit = function (ev) { - if (ev === 'finish' && !this._realFinish) { - if (!this._finished) { - const self = this - process.nextTick(function () { - self.emit('error', new Error('Unexpected end of multipart data')) - if (self._part && !self._ignoreData) { - const type = (self._isPreamble ? 'Preamble' : 'Part') - self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')) - self._part.push(null) - process.nextTick(function () { - self._realFinish = true - self.emit('finish') - self._realFinish = false - }) - return - } - self._realFinish = true - self.emit('finish') - self._realFinish = false - }) + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false } - } else { WritableStream.prototype.emit.apply(this, arguments) } + } + return true } -Dicer.prototype._write = function (data, encoding, cb) { - // ignore unexpected data (e.g. extra trailer data after finished) - if (!this._hparser && !this._bparser) { return cb() } +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} - if (this._headerFirst && this._isPreamble) { - if (!this._part) { - this._part = new PartStream(this._partOpts) - if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() } - } - const r = this._hparser.push(data) - if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() } +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version) { + if (version instanceof SemVer) { + return version } - // allows for "easier" testing - if (this._firstWrite) { - this._bparser.push(B_CRLF) - this._firstWrite = false + if (typeof version !== 'string') { + return null } - this._bparser.push(data) + var match = version.match(safeRe[COERCE]) - if (this._pause) { this._cb = cb } else { cb() } -} + if (match == null) { + return null + } -Dicer.prototype.reset = function () { - this._part = undefined - this._bparser = undefined - this._hparser = undefined + return parse(match[1] + + '.' + (match[2] || '0') + + '.' + (match[3] || '0')) } -Dicer.prototype.setBoundary = function (boundary) { - const self = this - this._bparser = new StreamSearch('\r\n--' + boundary) - this._bparser.on('info', function (isMatch, data, start, end) { - self._oninfo(isMatch, data, start, end) - }) + +/***/ }), + +/***/ 76934: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __nccwpck_require__(62492); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); } -Dicer.prototype._ignore = function () { - if (this._part && !this._ignoreData) { - this._ignoreData = true - this._part.on('error', EMPTY_FN) - // we must perform some kind of read on the stream even though we are - // ignoring the data, otherwise node's Readable stream will not emit 'end' - // after pushing null to the stream - this._part.resume() +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); } -} + return set; +}; -Dicer.prototype._oninfo = function (isMatch, data, start, end) { - let buf; const self = this; let i = 0; let r; let shouldWriteMore = true +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; - if (!this._part && this._justMatched && data) { - while (this._dashes < 2 && (start + i) < end) { - if (data[start + i] === DASH) { - ++i - ++this._dashes - } else { - if (this._dashes) { buf = B_ONEDASH } - this._dashes = 0 - break - } - } - if (this._dashes === 2) { - if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) } - this.reset() - this._finished = true - // no more parts will be added - if (self._parts === 0) { - self._realFinish = true - self.emit('finish') - self._realFinish = false - } - } - if (this._dashes) { return } - } - if (this._justMatched) { this._justMatched = false } - if (!this._part) { - this._part = new PartStream(this._partOpts) - this._part._read = function (n) { - self._unpause() - } - if (this._isPreamble && this.listenerCount('preamble') !== 0) { - this.emit('preamble', this._part) - } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { - this.emit('part', this._part) +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); } else { - this._ignore() + this._set[sStr] = idx; } - if (!this._isPreamble) { this._inHeader = true } } - if (data && start < end && !this._ignoreData) { - if (this._isPreamble || !this._inHeader) { - if (buf) { shouldWriteMore = this._part.push(buf) } - shouldWriteMore = this._part.push(data.slice(start, end)) - if (!shouldWriteMore) { this._pause = true } - } else if (!this._isPreamble && this._inHeader) { - if (buf) { this._hparser.push(buf) } - r = this._hparser.push(data.slice(start, end)) - if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) } - } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); } - if (isMatch) { - this._hparser.reset() - if (this._isPreamble) { this._isPreamble = false } else { - if (start !== end) { - ++this._parts - this._part.on('end', function () { - if (--self._parts === 0) { - if (self._finished) { - self._realFinish = true - self.emit('finish') - self._realFinish = false - } else { - self._unpause() - } - } - }) - } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; } - this._part.push(null) - this._part = undefined - this._ignoreData = false - this._justMatched = true - this._dashes = 0 } -} -Dicer.prototype._unpause = function () { - if (!this._pause) { return } + throw new Error('"' + aStr + '" is not in the set.'); +}; - this._pause = false - if (this._cb) { - const cb = this._cb - this._cb = undefined - cb() +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; } -} - -module.exports = Dicer + throw new Error('No element indexed by ' + aIdx); +}; +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; -/***/ }), +exports.C = ArraySet; -/***/ 2271: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -"use strict"; +/***/ }), +/***/ 27935: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -const EventEmitter = (__nccwpck_require__(8474).EventEmitter) -const inherits = (__nccwpck_require__(7975).inherits) -const getLimit = __nccwpck_require__(2393) +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = __nccwpck_require__(691); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 -const StreamSearch = __nccwpck_require__(4136) +var VLQ_BASE_SHIFT = 5; -const B_DCRLF = Buffer.from('\r\n\r\n') -const RE_CRLF = /\r\n/g -const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; -function HeaderParser (cfg) { - EventEmitter.call(this) +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; - cfg = cfg || {} - const self = this - this.nread = 0 - this.maxed = false - this.npairs = 0 - this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000) - this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024) - this.buffer = '' - this.header = {} - this.finished = false - this.ss = new StreamSearch(B_DCRLF) - this.ss.on('info', function (isMatch, data, start, end) { - if (data && !self.maxed) { - if (self.nread + end - start >= self.maxHeaderSize) { - end = self.maxHeaderSize - self.nread + start - self.nread = self.maxHeaderSize - self.maxed = true - } else { self.nread += (end - start) } +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; - self.buffer += data.toString('binary', start, end) - } - if (isMatch) { self._finish() } - }) +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; } -inherits(HeaderParser, EventEmitter) -HeaderParser.prototype.push = function (data) { - const r = this.ss.push(data) - if (this.finished) { return r } +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; } -HeaderParser.prototype.reset = function () { - this.finished = false - this.buffer = '' - this.header = {} - this.ss.reset() -} +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; -HeaderParser.prototype._finish = function () { - if (this.buffer) { this._parseHeader() } - this.ss.matches = this.ss.maxMatches - const header = this.header - this.header = {} - this.buffer = '' - this.finished = true - this.nread = this.npairs = 0 - this.maxed = false - this.emit('header', header) -} + var vlq = toVLQSigned(aValue); -HeaderParser.prototype._parseHeader = function () { - if (this.npairs === this.maxHeaderPairs) { return } + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); - const lines = this.buffer.split(RE_CRLF) - const len = lines.length - let m, h + return encoded; +}; - for (var i = 0; i < len; ++i) { // eslint-disable-line no-var - if (lines[i].length === 0) { continue } - if (lines[i][0] === '\t' || lines[i][0] === ' ') { - // folded header content - // RFC2822 says to just remove the CRLF and not the whitespace following - // it, so we follow the RFC and include the leading whitespace ... - if (h) { - this.header[h][this.header[h].length - 1] += lines[i] - continue - } +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); } - const posColon = lines[i].indexOf(':') - if ( - posColon === -1 || - posColon === 0 - ) { - return + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); } - m = RE_HDR.exec(lines[i]) - h = m[1].toLowerCase() - this.header[h] = this.header[h] || [] - this.header[h].push((m[2] || '')) - if (++this.npairs === this.maxHeaderPairs) { break } - } -} -module.exports = HeaderParser + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; -/***/ }), -/***/ 612: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ }), -"use strict"; +/***/ 691: +/***/ ((__unused_webpack_module, exports) => { +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ -const inherits = (__nccwpck_require__(7975).inherits) -const ReadableStream = (__nccwpck_require__(7075).Readable) +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); -function PartStream (opts) { - ReadableStream.call(this, opts) -} -inherits(PartStream, ReadableStream) +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; -PartStream.prototype._read = function (n) {} +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' -module.exports = PartStream + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + var zero = 48; // '0' + var nine = 57; // '9' -/***/ }), + var plus = 43; // '+' + var slash = 47; // '/' -/***/ 4136: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + var littleOffset = 26; + var numberOffset = 52; -"use strict"; + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } -/** - * Copyright Brian White. All rights reserved. - * - * @see https://github.com/mscdex/streamsearch - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation - * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool - */ -const EventEmitter = (__nccwpck_require__(8474).EventEmitter) -const inherits = (__nccwpck_require__(7975).inherits) + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } -function SBMH (needle) { - if (typeof needle === 'string') { - needle = Buffer.from(needle) + // 62: + + if (charCode == plus) { + return 62; } - if (!Buffer.isBuffer(needle)) { - throw new TypeError('The needle has to be a String or a Buffer.') + // 63: / + if (charCode == slash) { + return 63; } - const needleLength = needle.length + // Invalid base64 digit. + return -1; +}; - if (needleLength === 0) { - throw new Error('The needle cannot be an empty String/Buffer.') - } - if (needleLength > 256) { - throw new Error('The needle cannot have a length bigger than 256.') - } +/***/ }), - this.maxMatches = Infinity - this.matches = 0 +/***/ 72326: +/***/ ((__unused_webpack_module, exports) => { - this._occ = new Array(256) - .fill(needleLength) // Initialize occurrence table. - this._lookbehind_size = 0 - this._needle = needle - this._bufpos = 0 +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - this._lookbehind = Buffer.alloc(needleLength) +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; - // Populate occurrence table with analysis of the needle, - // ignoring last letter. - for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var - this._occ[needle[i]] = needleLength - 1 - i +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } } -} -inherits(SBMH, EventEmitter) + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } -SBMH.prototype.reset = function () { - this._lookbehind_size = 0 - this.matches = 0 - this._bufpos = 0 + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } } -SBMH.prototype.push = function (chunk, pos) { - if (!Buffer.isBuffer(chunk)) { - chunk = Buffer.from(chunk, 'binary') +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; } - const chlen = chunk.length - this._bufpos = pos || 0 - let r - while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) } - return r -} -SBMH.prototype._sbmh_feed = function (data) { - const len = data.length - const needle = this._needle - const needleLength = needle.length - const lastNeedleChar = needle[needleLength - 1] + return index; +}; - // Positive: points to a position in `data` - // pos == 3 points to data[3] - // Negative: points to a position in the lookbehind buffer - // pos == -2 points to lookbehind[lookbehind_size - 2] - let pos = -this._lookbehind_size - let ch - if (pos < 0) { - // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool - // search with character lookup code that considers both the - // lookbehind buffer and the current round's haystack data. - // - // Loop until - // there is a match. - // or until - // we've moved past the position that requires the - // lookbehind buffer. In this case we switch to the - // optimized loop. - // or until - // the character to look at lies outside the haystack. - while (pos < 0 && pos <= len - needleLength) { - ch = this._sbmh_lookup_char(data, pos + needleLength - 1) +/***/ }), - if ( - ch === lastNeedleChar && - this._sbmh_memcmp(data, pos, needleLength - 1) - ) { - this._lookbehind_size = 0 - ++this.matches - this.emit('info', true) +/***/ 12861: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - return (this._bufpos = pos + needleLength) - } - pos += this._occ[ch] - } +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - // No match. +var util = __nccwpck_require__(62492); - if (pos < 0) { - // There's too few data for Boyer-Moore-Horspool to run, - // so let's use a different algorithm to skip as much as - // we can. - // Forward pos until - // the trailing part of lookbehind + data - // looks like the beginning of the needle - // or until - // pos == 0 - while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos } - } +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} - if (pos >= 0) { - // Discard lookbehind buffer. - this.emit('info', false, this._lookbehind, 0, this._lookbehind_size) - this._lookbehind_size = 0 - } else { - // Cut off part of the lookbehind buffer that has - // been processed and append the entire haystack - // into it. - const bytesToCutOff = this._lookbehind_size + pos - if (bytesToCutOff > 0) { - // The cut off data is guaranteed not to contain the needle. - this.emit('info', false, this._lookbehind, 0, bytesToCutOff) - } +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} - this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, - this._lookbehind_size - bytesToCutOff) - this._lookbehind_size -= bytesToCutOff +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; - data.copy(this._lookbehind, this._lookbehind_size) - this._lookbehind_size += len +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; - this._bufpos = len - return len - } +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; } + return this._array; +}; - pos += (pos >= 0) * this._bufpos +exports.P = MappingList; - // Lookbehind buffer is now empty. We only need to check if the - // needle is in the haystack. - if (data.indexOf(needle, pos) !== -1) { - pos = data.indexOf(needle, pos) - ++this.matches - if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) } - return (this._bufpos = pos + needleLength) - } else { - pos = len - needleLength - } +/***/ }), - // There was no match. If there's trailing haystack data that we cannot - // match yet using the Boyer-Moore-Horspool algorithm (because the trailing - // data is less than the needle size) then match using a modified - // algorithm that starts matching from the beginning instead of the end. - // Whatever trailing data is left after running this algorithm is added to - // the lookbehind buffer. - while ( - pos < len && - ( - data[pos] !== needle[0] || - ( - (Buffer.compare( - data.subarray(pos, pos + len - pos), - needle.subarray(0, len - pos) - ) !== 0) - ) - ) - ) { - ++pos - } - if (pos < len) { - data.copy(this._lookbehind, 0, pos, pos + (len - pos)) - this._lookbehind_size = len - pos - } +/***/ 9598: +/***/ ((__unused_webpack_module, exports) => { - // Everything until pos is guaranteed not to contain needle data. - if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) } +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ - this._bufpos = len - return len +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; } -SBMH.prototype._sbmh_lookup_char = function (data, pos) { - return (pos < 0) - ? this._lookbehind[this._lookbehind_size + pos] - : data[pos] +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); } -SBMH.prototype._sbmh_memcmp = function (data, pos, len) { - for (var i = 0; i < len; ++i) { // eslint-disable-line no-var - if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false } +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); } - return true } -module.exports = SBMH +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ +exports.g = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); +}; /***/ }), -/***/ 9581: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 79907: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; +var __webpack_unused_export__; +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +var util = __nccwpck_require__(62492); +var binarySearch = __nccwpck_require__(72326); +var ArraySet = (__nccwpck_require__(76934)/* .ArraySet */ .C); +var base64VLQ = __nccwpck_require__(27935); +var quickSort = (__nccwpck_require__(9598)/* .quickSort */ .g); -const WritableStream = (__nccwpck_require__(7075).Writable) -const { inherits } = __nccwpck_require__(7975) -const Dicer = __nccwpck_require__(7182) +function SourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } -const MultipartParser = __nccwpck_require__(1192) -const UrlencodedParser = __nccwpck_require__(855) -const parseParams = __nccwpck_require__(8929) + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap) + : new BasicSourceMapConsumer(sourceMap); +} -function Busboy (opts) { - if (!(this instanceof Busboy)) { return new Busboy(opts) } +SourceMapConsumer.fromSourceMap = function(aSourceMap) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap); +} - if (typeof opts !== 'object') { - throw new TypeError('Busboy expected an options-Object.') - } - if (typeof opts.headers !== 'object') { - throw new TypeError('Busboy expected an options-Object with headers-attribute.') - } - if (typeof opts.headers['content-type'] !== 'string') { - throw new TypeError('Missing Content-Type-header.') - } +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; - const { - headers, - ...streamOptions - } = opts +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. - this.opts = { - autoDestroy: false, - ...streamOptions - } - WritableStream.call(this, this.opts) +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } - this._done = false - this._parser = this.getParserByHeaders(headers) - this._finished = false -} -inherits(Busboy, WritableStream) + return this.__generatedMappings; + } +}); -Busboy.prototype.emit = function (ev) { - if (ev === 'finish') { - if (!this._done) { - this._parser?.end() - return - } else if (this._finished) { - return +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); } - this._finished = true + + return this.__originalMappings; } - WritableStream.prototype.emit.apply(this, arguments) -} +}); -Busboy.prototype.getParserByHeaders = function (headers) { - const parsed = parseParams(headers['content-type']) +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; - const cfg = { - defCharset: this.opts.defCharset, - fileHwm: this.opts.fileHwm, - headers, - highWaterMark: this.opts.highWaterMark, - isPartAFile: this.opts.isPartAFile, - limits: this.opts.limits, - parsedConType: parsed, - preservePath: this.opts.preservePath - } +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; - if (MultipartParser.detect.test(parsed[0])) { - return new MultipartParser(this, cfg) - } - if (UrlencodedParser.detect.test(parsed[0])) { - return new UrlencodedParser(this, cfg) - } - throw new Error('Unsupported Content-Type.') -} +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; -Busboy.prototype._write = function (chunk, encoding, cb) { - this._parser.write(chunk, cb) -} +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; -module.exports = Busboy -module.exports["default"] = Busboy -module.exports.Busboy = Busboy +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } -module.exports.Dicer = Dicer + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + if (source != null && sourceRoot != null) { + source = util.join(sourceRoot, source); + } + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: Optional. the column number in the original source. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; -/***/ }), + if (this.sourceRoot != null) { + needle.source = util.relative(this.sourceRoot, needle.source); + } + if (!this._sources.has(needle.source)) { + return []; + } + needle.source = this._sources.indexOf(needle.source); + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); -/***/ 1192: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); -"use strict"; + mapping = this._originalMappings[++index]; + } + } + } + return mappings; + }; -// TODO: -// * support 1 nested multipart level -// (see second multipart example here: -// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) -// * support limits.fieldNameSize -// -- this will require modifications to utils.parseParams +exports.SourceMapConsumer = SourceMapConsumer; -const { Readable } = __nccwpck_require__(7075) -const { inherits } = __nccwpck_require__(7975) +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The only parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); -const Dicer = __nccwpck_require__(7182) + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); -const parseParams = __nccwpck_require__(8929) -const decodeText = __nccwpck_require__(2747) -const basename = __nccwpck_require__(692) -const getLimit = __nccwpck_require__(2393) + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this.file = file; +} -const RE_BOUNDARY = /^boundary$/i -const RE_FIELD = /^form-data$/i -const RE_CHARSET = /^charset$/i -const RE_FILENAME = /^filename$/i -const RE_NAME = /^name$/i +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; -Multipart.detect = /^multipart\/form-data/i -function Multipart (boy, cfg) { - let i - let len - const self = this - let boundary - const limits = cfg.limits - const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)) - const parsedConType = cfg.parsedConType || [] - const defCharset = cfg.defCharset || 'utf8' - const preservePath = cfg.preservePath - const fileOpts = { highWaterMark: cfg.fileHwm } +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } - for (i = 0, len = parsedConType.length; i < len; ++i) { - if (Array.isArray(parsedConType[i]) && - RE_BOUNDARY.test(parsedConType[i][0])) { - boundary = parsedConType[i][1] - break - } - } + destOriginalMappings.push(destMapping); + } - function checkFinished () { - if (nends === 0 && finished && !boy._done) { - finished = false - self.end() + destGeneratedMappings.push(destMapping); } - } - if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') } + quickSort(smc.__originalMappings, util.compareByOriginalPositions); - const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) - const fileSizeLimit = getLimit(limits, 'fileSize', Infinity) - const filesLimit = getLimit(limits, 'files', Infinity) - const fieldsLimit = getLimit(limits, 'fields', Infinity) - const partsLimit = getLimit(limits, 'parts', Infinity) - const headerPairsLimit = getLimit(limits, 'headerPairs', 2000) - const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024) + return smc; + }; - let nfiles = 0 - let nfields = 0 - let nends = 0 - let curFile - let curField - let finished = false +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; - this._needDrain = false - this._pause = false - this._cb = undefined - this._nparts = 0 - this._boy = boy - - const parserCfg = { - boundary, - maxHeaderPairs: headerPairsLimit, - maxHeaderSize: headerSizeLimit, - partHwm: fileOpts.highWaterMark, - highWaterMark: cfg.highWaterMark +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._sources.toArray().map(function (s) { + return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; + }, this); } +}); - this.parser = new Dicer(parserCfg) - this.parser.on('drain', function () { - self._needDrain = false - if (self._cb && !self._pause) { - const cb = self._cb - self._cb = undefined - cb() - } - }).on('part', function onPart (part) { - if (++self._nparts > partsLimit) { - self.parser.removeListener('part', onPart) - self.parser.on('part', skipPart) - boy.hitPartsLimit = true - boy.emit('partsLimit') - return skipPart(part) - } +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); - // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let - // us emit 'end' early since we know the part has ended if we are already - // seeing the next part - if (curField) { - const field = curField - field.emit('end') - field.removeAllListeners('end') - } + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } - part.on('header', function (header) { - let contype - let fieldname - let parsed - let charset - let encoding - let filename - let nsize = 0 + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } - if (header['content-type']) { - parsed = parseParams(header['content-type'][0]) - if (parsed[0]) { - contype = parsed[0].toLowerCase() - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_CHARSET.test(parsed[i][0])) { - charset = parsed[i][1].toLowerCase() - break - } + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); } - } - } - if (contype === undefined) { contype = 'text/plain' } - if (charset === undefined) { charset = defCharset } + cachedSegments[str] = segment; + } - if (header['content-disposition']) { - parsed = parseParams(header['content-disposition'][0]) - if (!RE_FIELD.test(parsed[0])) { return skipPart(part) } - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_NAME.test(parsed[i][0])) { - fieldname = parsed[i][1] - } else if (RE_FILENAME.test(parsed[i][0])) { - filename = parsed[i][1] - if (!preservePath) { filename = basename(filename) } + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; } } - } else { return skipPart(part) } - if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' } + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } - let onData, - onEnd + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; - if (isPartAFile(fieldname, contype, filename)) { - // file/binary field - if (nfiles === filesLimit) { - if (!boy.hitFilesLimit) { - boy.hitFilesLimit = true - boy.emit('filesLimit') - } - return skipPart(part) - } + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; - ++nfiles +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. - if (boy.listenerCount('file') === 0) { - self.parser._ignore() - return - } + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } - ++nends - const file = new FileStream(fileOpts) - curFile = file - file.on('end', function () { - --nends - self._pause = false - checkFinished() - if (self._cb && !self._needDrain) { - const cb = self._cb - self._cb = undefined - cb() - } - }) - file._read = function (n) { - if (!self._pause) { return } - self._pause = false - if (self._cb && !self._needDrain) { - const cb = self._cb - self._cb = undefined - cb() - } - } - boy.emit('file', fieldname, file, filename, encoding, contype) + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; - onData = function (data) { - if ((nsize += data.length) > fileSizeLimit) { - const extralen = fileSizeLimit - nsize + data.length - if (extralen > 0) { file.push(data.slice(0, extralen)) } - file.truncated = true - file.bytesRead = fileSizeLimit - part.removeAllListeners('data') - file.emit('limit') - return - } else if (!file.push(data)) { self._pause = true } +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; - file.bytesRead = nsize - } + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; - onEnd = function () { - curFile = undefined - file.push(null) - } - } else { - // non-file field - if (nfields === fieldsLimit) { - if (!boy.hitFieldsLimit) { - boy.hitFieldsLimit = true - boy.emit('fieldsLimit') - } - return skipPart(part) + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; } + } - ++nfields - ++nends - let buffer = '' - let truncated = false - curField = part + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; - onData = function (data) { - if ((nsize += data.length) > fieldSizeLimit) { - const extralen = (fieldSizeLimit - (nsize - data.length)) - buffer += data.toString('binary', 0, extralen) - truncated = true - part.removeAllListeners('data') - } else { buffer += data.toString('binary') } - } +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; - onEnd = function () { - curField = undefined - if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) } - boy.emit('field', fieldname, buffer, false, truncated, encoding, contype) - --nends - checkFinished() + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + if (this.sourceRoot != null) { + source = util.join(this.sourceRoot, source); + } } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; } + } - /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become - broken. Streams2/streams3 is a huge black box of confusion, but - somehow overriding the sync state seems to fix things again (and still - seems to work for previous node versions). - */ - part._readableState.sync = false + return { + source: null, + line: null, + column: null, + name: null + }; + }; - part.on('data', onData) - part.on('end', onEnd) - }).on('error', function (err) { - if (curFile) { curFile.emit('error', err) } - }) - }).on('error', function (err) { - boy.emit('error', err) - }).on('finish', function () { - finished = true - checkFinished() - }) -} +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; -Multipart.prototype.write = function (chunk, cb) { - const r = this.parser.write(chunk) - if (r && !this._pause) { - cb() - } else { - this._needDrain = !r - this._cb = cb - } -} +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } -Multipart.prototype.end = function () { - const self = this + if (this.sourceRoot != null) { + aSource = util.relative(this.sourceRoot, aSource); + } - if (self.parser.writable) { - self.parser.end() - } else if (!self._boy._done) { - process.nextTick(function () { - self._boy._done = true - self._boy.emit('finish') - }) - } -} + if (this._sources.has(aSource)) { + return this.sourcesContent[this._sources.indexOf(aSource)]; + } -function skipPart (part) { - part.resume() -} + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } -function FileStream (opts) { - Readable.call(this, opts) + if ((!url.path || url.path == "/") + && this._sources.has("/" + aSource)) { + return this.sourcesContent[this._sources.indexOf("/" + aSource)]; + } + } - this.bytesRead = 0 + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; - this.truncated = false -} +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + if (this.sourceRoot != null) { + source = util.relative(this.sourceRoot, source); + } + if (!this._sources.has(source)) { + return { + line: null, + column: null, + lastColumn: null + }; + } + source = this._sources.indexOf(source); -inherits(FileStream, Readable) + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; -FileStream.prototype._read = function (n) {} + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); -module.exports = Multipart + if (index >= 0) { + var mapping = this._originalMappings[index]; + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } -/***/ }), + return { + line: null, + column: null, + lastColumn: null + }; + }; -/***/ 855: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +__webpack_unused_export__ = BasicSourceMapConsumer; -"use strict"; +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The only parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); -const Decoder = __nccwpck_require__(1496) -const decodeText = __nccwpck_require__(2747) -const getLimit = __nccwpck_require__(2393) + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } -const RE_CHARSET = /^charset$/i + this._sources = new ArraySet(); + this._names = new ArraySet(); -UrlEncoded.detect = /^application\/x-www-form-urlencoded/i -function UrlEncoded (boy, cfg) { - const limits = cfg.limits - const parsedConType = cfg.parsedConType - this.boy = boy + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); - this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) - this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100) - this.fieldsLimit = getLimit(limits, 'fields', Infinity) + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; - let charset - for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var - if (Array.isArray(parsedConType[i]) && - RE_CHARSET.test(parsedConType[i][0])) { - charset = parsedConType[i][1].toLowerCase() - break + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map')) } - } + }); +} - if (charset === undefined) { charset = cfg.defCharset || 'utf8' } +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - this.decoder = new Decoder() - this.charset = charset - this._fields = 0 - this._state = 'key' - this._checkingBytes = true - this._bytesKey = 0 - this._bytesVal = 0 - this._key = '' - this._val = '' - this._keyTrunc = false - this._valTrunc = false - this._hitLimit = false -} +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; -UrlEncoded.prototype.write = function (data, cb) { - if (this._fields === this.fieldsLimit) { - if (!this.boy.hitFieldsLimit) { - this.boy.hitFieldsLimit = true - this.boy.emit('fieldsLimit') +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } } - return cb() + return sources; } +}); - let idxeq; let idxamp; let i; let p = 0; const len = data.length +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; - while (p < len) { - if (this._state === 'key') { - idxeq = idxamp = undefined - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { ++p } - if (data[i] === 0x3D/* = */) { - idxeq = i - break - } else if (data[i] === 0x26/* & */) { - idxamp = i - break + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; } - if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { - this._hitLimit = true - break - } else if (this._checkingBytes) { ++this._bytesKey } - } - if (idxeq !== undefined) { - // key with assignment - if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) } - this._state = 'val' + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; - this._hitLimit = false - this._checkingBytes = true - this._val = '' - this._bytesVal = 0 - this._valTrunc = false - this.decoder.reset() + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } - p = idxeq + 1 - } else if (idxamp !== undefined) { - // key with no assignment - ++this._fields - let key; const keyTrunc = this._keyTrunc - if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key } + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; - this._hitLimit = false - this._checkingBytes = true - this._key = '' - this._bytesKey = 0 - this._keyTrunc = false - this.decoder.reset() +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; - if (key.length) { - this.boy.emit('field', decodeText(key, 'binary', this.charset), - '', - keyTrunc, - false) - } +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; - p = idxamp + 1 - if (this._fields === this.fieldsLimit) { return cb() } - } else if (this._hitLimit) { - // we may not have hit the actual limit if there are encoded bytes... - if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) } - p = i - if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { - // yep, we actually did hit the limit - this._checkingBytes = false - this._keyTrunc = true - } - } else { - if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) } - p = len + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; } - } else { - idxamp = undefined - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { ++p } - if (data[i] === 0x26/* & */) { - idxamp = i - break - } - if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { - this._hitLimit = true - break - } else if (this._checkingBytes) { ++this._bytesVal } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { + continue; } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } - if (idxamp !== undefined) { - ++this._fields - if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) } - this.boy.emit('field', decodeText(this._key, 'binary', this.charset), - decodeText(this._val, 'binary', this.charset), - this._keyTrunc, - this._valTrunc) - this._state = 'key' + return { + line: null, + column: null + }; + }; - this._hitLimit = false - this._checkingBytes = true - this._key = '' - this._bytesKey = 0 - this._keyTrunc = false - this.decoder.reset() +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; - p = idxamp + 1 - if (this._fields === this.fieldsLimit) { return cb() } - } else if (this._hitLimit) { - // we may not have hit the actual limit if there are encoded bytes... - if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) } - p = i - if ((this._val === '' && this.fieldSizeLimit === 0) || - (this._bytesVal = this._val.length) === this.fieldSizeLimit) { - // yep, we actually did hit the limit - this._checkingBytes = false - this._valTrunc = true + var source = section.consumer._sources.at(mapping.source); + if (section.consumer.sourceRoot !== null) { + source = util.join(section.consumer.sourceRoot, source); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); } - } else { - if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) } - p = len } } - } - cb() -} - -UrlEncoded.prototype.end = function () { - if (this.boy._done) { return } - if (this._state === 'key' && this._key.length > 0) { - this.boy.emit('field', decodeText(this._key, 'binary', this.charset), - '', - this._keyTrunc, - false) - } else if (this._state === 'val') { - this.boy.emit('field', decodeText(this._key, 'binary', this.charset), - decodeText(this._val, 'binary', this.charset), - this._keyTrunc, - this._valTrunc) - } - this.boy._done = true - this.boy.emit('finish') -} + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; -module.exports = UrlEncoded +__webpack_unused_export__ = IndexedSourceMapConsumer; /***/ }), -/***/ 1496: -/***/ ((module) => { +/***/ 62574: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +var base64VLQ = __nccwpck_require__(27935); +var util = __nccwpck_require__(62492); +var ArraySet = (__nccwpck_require__(76934)/* .ArraySet */ .C); +var MappingList = (__nccwpck_require__(12861)/* .MappingList */ .P); -const RE_PLUS = /\+/g +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} -const HEX = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -] +SourceMapGenerator.prototype._version = 3; -function Decoder () { - this.buffer = undefined -} -Decoder.prototype.write = function (str) { - // Replace '+' with ' ' before decoding - str = str.replace(RE_PLUS, ' ') - let res = '' - let i = 0; let p = 0; const len = str.length - for (; i < len; ++i) { - if (this.buffer !== undefined) { - if (!HEX[str.charCodeAt(i)]) { - res += '%' + this.buffer - this.buffer = undefined - --i // retry character - } else { - this.buffer += str[i] - ++p - if (this.buffer.length === 2) { - res += String.fromCharCode(parseInt(this.buffer, 16)) - this.buffer = undefined +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; } } - } else if (str[i] === '%') { - if (i > p) { - res += str.substring(p, i) - p = i + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); } - this.buffer = '' - ++p + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); } - } - if (p < len && this.buffer === undefined) { res += str.substring(p) } - return res -} -Decoder.prototype.reset = function () { - this.buffer = undefined -} -module.exports = Decoder + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } -/***/ }), + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; -/***/ 692: -/***/ ((module) => { +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } -"use strict"; + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } -module.exports = function basename (path) { - if (typeof path !== 'string') { return '' } - for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var - switch (path.charCodeAt(i)) { - case 0x2F: // '/' - case 0x5C: // '\' - path = path.slice(i + 1) - return (path === '..' || path === '.' ? '' : path) + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); } - } - return (path === '..' || path === '.' ? '' : path) -} + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; /***/ }), -/***/ 2747: -/***/ (function(module) { +/***/ 49706: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -"use strict"; +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +var SourceMapGenerator = (__nccwpck_require__(62574).SourceMapGenerator); +var util = __nccwpck_require__(62492); -// Node has always utf-8 -const utf8Decoder = new TextDecoder('utf-8') -const textDecoders = new Map([ - ['utf-8', utf8Decoder], - ['utf8', utf8Decoder] -]) +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; -function getDecoder (charset) { - let lc - while (true) { - switch (charset) { - case 'utf-8': - case 'utf8': - return decoders.utf8 - case 'latin1': - case 'ascii': // TODO: Make these a separate, strict decoder? - case 'us-ascii': - case 'iso-8859-1': - case 'iso8859-1': - case 'iso88591': - case 'iso_8859-1': - case 'windows-1252': - case 'iso_8859-1:1987': - case 'cp1252': - case 'x-cp1252': - return decoders.latin1 - case 'utf16le': - case 'utf-16le': - case 'ucs2': - case 'ucs-2': - return decoders.utf16le - case 'base64': - return decoders.base64 - default: - if (lc === undefined) { - lc = true - charset = charset.toLowerCase() - continue +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex]; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; } - return decoders.other.bind(charset) + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex]; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); } -} + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; -const decoders = { - utf8: (data, sourceEncoding) => { - if (data.length === 0) { - return '' +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding) + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); } - return data.utf8Slice(0, data.length) - }, + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; - latin1: (data, sourceEncoding) => { - if (data.length === 0) { - return '' +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); } - if (typeof data === 'string') { - return data + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } } - return data.latin1Slice(0, data.length) - }, - utf16le: (data, sourceEncoding) => { - if (data.length === 0) { - return '' + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding) + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } } - return data.ucs2Slice(0, data.length) - }, + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); - base64: (data, sourceEncoding) => { - if (data.length === 0) { - return '' + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; + + +/***/ }), + +/***/ 62492: +/***/ ((__unused_webpack_module, exports) => { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding) + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +} +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; } - return data.base64Slice(0, data.length) - }, + return urlGenerate(aPathUrl); + } - other: (data, sourceEncoding) => { - if (data.length === 0) { - return '' + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; } - if (typeof data === 'string') { - data = Buffer.from(data, sourceEncoding) + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; } - if (textDecoders.has(this.toString())) { - try { - return textDecoders.get(this).decode(data) - } catch {} + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; } - return typeof data === 'string' - ? data - : data.toString() } + + return true; } -function decodeText (text, sourceEncoding, destEncoding) { - if (text) { - return getDecoder(destEncoding)(text, sourceEncoding) +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; } - return text + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; } +exports.compareByOriginalPositions = compareByOriginalPositions; -module.exports = decodeText +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } -/***/ }), + cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } -/***/ 2393: -/***/ ((module) => { + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } -"use strict"; + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + return mappingA.name - mappingB.name; +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; -module.exports = function getLimit (limits, name, defaultLimit) { - if ( - !limits || - limits[name] === undefined || - limits[name] === null - ) { return defaultLimit } +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } - if ( - typeof limits[name] !== 'number' || - isNaN(limits[name]) - ) { throw new TypeError('Limit ' + name + ' is not a valid number') } + if (aStr1 > aStr2) { + return 1; + } - return limits[name] + return -1; } +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } -/***/ }), + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } -/***/ 8929: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } -"use strict"; -/* eslint-disable object-property-newline */ + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } -const decodeText = __nccwpck_require__(2747) + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; -const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g -const EncodedLookup = { - '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04', - '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09', - '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c', - '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e', - '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12', - '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17', - '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b', - '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d', - '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20', - '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25', - '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a', - '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c', - '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f', - '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33', - '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38', - '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b', - '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e', - '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41', - '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46', - '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a', - '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d', - '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f', - '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54', - '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59', - '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c', - '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e', - '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62', - '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67', - '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b', - '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d', - '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70', - '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75', - '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a', - '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c', - '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f', - '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83', - '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88', - '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b', - '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e', - '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91', - '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96', - '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a', - '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d', - '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f', - '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2', - '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4', - '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7', - '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9', - '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab', - '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac', - '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad', - '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae', - '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0', - '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2', - '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5', - '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7', - '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba', - '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb', - '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc', - '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd', - '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf', - '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0', - '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3', - '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5', - '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8', - '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca', - '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb', - '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc', - '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce', - '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf', - '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1', - '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3', - '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6', - '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8', - '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda', - '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb', - '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd', - '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde', - '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf', - '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1', - '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4', - '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6', - '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9', - '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea', - '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec', - '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed', - '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee', - '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef', - '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2', - '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4', - '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7', - '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9', - '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb', - '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc', - '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd', - '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe', - '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff' -} +/***/ }), -function encodedReplacer (match) { - return EncodedLookup[match] -} +/***/ 62618: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -const STATE_KEY = 0 -const STATE_VALUE = 1 -const STATE_CHARSET = 2 -const STATE_LANG = 3 +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = __nccwpck_require__(62574).SourceMapGenerator; +exports.SourceMapConsumer = __nccwpck_require__(79907).SourceMapConsumer; +exports.SourceNode = __nccwpck_require__(49706).SourceNode; -function parseParams (str) { - const res = [] - let state = STATE_KEY - let charset = '' - let inquote = false - let escaping = false - let p = 0 - let tmp = '' - const len = str.length - for (var i = 0; i < len; ++i) { // eslint-disable-line no-var - const char = str[i] - if (char === '\\' && inquote) { - if (escaping) { escaping = false } else { - escaping = true - continue - } - } else if (char === '"') { - if (!escaping) { - if (inquote) { - inquote = false - state = STATE_KEY - } else { inquote = true } - continue - } else { escaping = false } - } else { - if (escaping && inquote) { tmp += '\\' } - escaping = false - if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { - if (state === STATE_CHARSET) { - state = STATE_LANG - charset = tmp.substring(1) - } else { state = STATE_VALUE } - tmp = '' - continue - } else if (state === STATE_KEY && - (char === '*' || char === '=') && - res.length) { - state = char === '*' - ? STATE_CHARSET - : STATE_VALUE - res[p] = [tmp, undefined] - tmp = '' - continue - } else if (!inquote && char === ';') { - state = STATE_KEY - if (charset) { - if (tmp.length) { - tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), - 'binary', - charset) - } - charset = '' - } else if (tmp.length) { - tmp = decodeText(tmp, 'binary', 'utf8') - } - if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp } - tmp = '' - ++p - continue - } else if (!inquote && (char === ' ' || char === '\t')) { continue } - } - tmp += char - } - if (charset && tmp.length) { - tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), - 'binary', - charset) - } else if (tmp) { - tmp = decodeText(tmp, 'binary', 'utf8') - } +/***/ }), - if (res[p] === undefined) { - if (tmp) { res[p] = tmp } - } else { res[p][1] = tmp } +/***/ 33600: +/***/ ((module) => { - return res +"use strict"; + + +module.exports = factory + +// Construct a state `toggler`: a function which inverses `property` in context +// based on its current value. +// The by `toggler` returned function restores that value. +function factory(key, state, ctx) { + return enter + + function enter() { + var context = ctx || this + var current = context[key] + + context[key] = !state + + return exit + + function exit() { + context[key] = current + } + } } -module.exports = parseParams +/***/ }), -/***/ }) +/***/ 55655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __nccwpck_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ var threw = true; -/******/ try { -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); -/******/ threw = false; -/******/ } finally { -/******/ if(threw) delete __webpack_module_cache__[moduleId]; -/******/ } -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __nccwpck_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __nccwpck_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __nccwpck_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __nccwpck_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat */ -/******/ -/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be in strict mode. -(() => { "use strict"; -// NAMESPACE OBJECT: ./node_modules/micromark/lib/constructs.js -var constructs_namespaceObject = {}; -__nccwpck_require__.r(constructs_namespaceObject); -__nccwpck_require__.d(constructs_namespaceObject, { - attentionMarkers: () => (attentionMarkers), - contentInitial: () => (contentInitial), - disable: () => (disable), - document: () => (constructs_document), - flow: () => (constructs_flow), - flowInitial: () => (flowInitial), - insideSpan: () => (insideSpan), - string: () => (constructs_string), - text: () => (constructs_text) -}); - -// EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js -var lib_core = __nccwpck_require__(7484); -// EXTERNAL MODULE: external "fs" -var external_fs_ = __nccwpck_require__(9896); -// EXTERNAL MODULE: external "path" -var external_path_ = __nccwpck_require__(6928); -// EXTERNAL MODULE: ./node_modules/klaw-sync/klaw-sync.js -var klaw_sync = __nccwpck_require__(1628); -var klaw_sync_default = /*#__PURE__*/__nccwpck_require__.n(klaw_sync); -// EXTERNAL MODULE: ./node_modules/gray-matter/index.js -var gray_matter = __nccwpck_require__(9599); -var gray_matter_default = /*#__PURE__*/__nccwpck_require__.n(gray_matter); -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-string/lib/index.js -/** - * @typedef {import('mdast').Nodes} Nodes - * - * @typedef Options - * Configuration (optional). - * @property {boolean | null | undefined} [includeImageAlt=true] - * Whether to use `alt` for `image`s (default: `true`). - * @property {boolean | null | undefined} [includeHtml=true] - * Whether to use `value` of HTML (default: `true`). - */ -/** @type {Options} */ -const emptyOptions = {} +module.exports = __nccwpck_require__(22167) -/** - * Get the text content of a node or list of nodes. - * - * Prefers the node’s plain-text fields, otherwise serializes its children, - * and if the given value is an array, serialize the nodes in it. - * - * @param {unknown} [value] - * Thing to serialize, typically `Node`. - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {string} - * Serialized `value`. - */ -function lib_toString(value, options) { - const settings = options || emptyOptions - const includeImageAlt = - typeof settings.includeImageAlt === 'boolean' - ? settings.includeImageAlt - : true - const includeHtml = - typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true - return one(value, includeImageAlt, includeHtml) -} +/***/ }), -/** - * One node or several nodes. - * - * @param {unknown} value - * Thing to serialize. - * @param {boolean} includeImageAlt - * Include image `alt`s. - * @param {boolean} includeHtml - * Include HTML. - * @returns {string} - * Serialized node. - */ -function one(value, includeImageAlt, includeHtml) { - if (node(value)) { - if ('value' in value) { - return value.type === 'html' && !includeHtml ? '' : value.value - } +/***/ 41050: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - if (includeImageAlt && 'alt' in value && value.alt) { - return value.alt - } +var entities = __nccwpck_require__(33757) - if ('children' in value) { - return lib_all(value.children, includeImageAlt, includeHtml) - } - } +var characters = {} +var name - if (Array.isArray(value)) { - return lib_all(value, includeImageAlt, includeHtml) - } +module.exports = characters - return '' +for (name in entities) { + characters[entities[name]] = name } -/** - * Serialize a list of nodes. - * - * @param {Array<unknown>} values - * Thing to serialize. - * @param {boolean} includeImageAlt - * Include image `alt`s. - * @param {boolean} includeHtml - * Include HTML. - * @returns {string} - * Serialized nodes. - */ -function lib_all(values, includeImageAlt, includeHtml) { - /** @type {Array<string>} */ - const result = [] - let index = -1 - while (++index < values.length) { - result[index] = one(values[index], includeImageAlt, includeHtml) - } +/***/ }), - return result.join('') -} +/***/ 41165: +/***/ ((module) => { -/** - * Check if `value` looks like a node. - * - * @param {unknown} value - * Thing. - * @returns {value is Nodes} - * Whether `value` is a node. - */ -function node(value) { - return Boolean(value && typeof value === 'object') -} +module.exports = String.fromCharCode -;// CONCATENATED MODULE: ./node_modules/micromark-util-chunked/index.js -/** - * Like `Array#splice`, but smarter for giant arrays. - * - * `Array#splice` takes all items to be inserted as individual argument which - * causes a stack overflow in V8 when trying to insert 100k items for instance. - * - * Otherwise, this does not return the removed items, and takes `items` as an - * array instead of rest parameters. - * - * @template {unknown} T - * Item type. - * @param {Array<T>} list - * List to operate on. - * @param {number} start - * Index to remove/insert at (can be negative). - * @param {number} remove - * Number of items to remove. - * @param {Array<T>} items - * Items to inject into `list`. - * @returns {undefined} - * Nothing. - */ -function splice(list, start, remove, items) { - const end = list.length; - let chunkStart = 0; - /** @type {Array<unknown>} */ - let parameters; - - // Make start between zero and `end` (included). - if (start < 0) { - start = -start > end ? 0 : end + start; - } else { - start = start > end ? end : start; - } - remove = remove > 0 ? remove : 0; - // No need to chunk the items if there’s only a couple (10k) items. - if (items.length < 10000) { - parameters = Array.from(items); - parameters.unshift(start, remove); - // @ts-expect-error Hush, it’s fine. - list.splice(...parameters); - } else { - // Delete `remove` items starting from `start` - if (remove) list.splice(start, remove); +/***/ }), - // Insert the items in chunks to not cause stack overflows. - while (chunkStart < items.length) { - parameters = items.slice(chunkStart, chunkStart + 10000); - parameters.unshift(start, 0); - // @ts-expect-error Hush, it’s fine. - list.splice(...parameters); - chunkStart += 10000; - start += 10000; - } - } -} +/***/ 12935: +/***/ ((module) => { -/** - * Append `items` (an array) at the end of `list` (another array). - * When `list` was empty, returns `items` instead. - * - * This prevents a potentially expensive operation when `list` is empty, - * and adds items in batches to prevent V8 from hanging. - * - * @template {unknown} T - * Item type. - * @param {Array<T>} list - * List to operate on. - * @param {Array<T>} items - * Items to add to `list`. - * @returns {Array<T>} - * Either `list` or `items`. - */ -function push(list, items) { - if (list.length > 0) { - splice(list, list.length, 0, items); - return list; - } - return items; -} -;// CONCATENATED MODULE: ./node_modules/micromark-util-subtokenize/lib/splice-buffer.js -/** - * Some of the internal operations of micromark do lots of editing - * operations on very large arrays. This runs into problems with two - * properties of most circa-2020 JavaScript interpreters: - * - * - Array-length modifications at the high end of an array (push/pop) are - * expected to be common and are implemented in (amortized) time - * proportional to the number of elements added or removed, whereas - * other operations (shift/unshift and splice) are much less efficient. - * - Function arguments are passed on the stack, so adding tens of thousands - * of elements to an array with `arr.push(...newElements)` will frequently - * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>) - * - * SpliceBuffers are an implementation of gap buffers, which are a - * generalization of the "queue made of two stacks" idea. The splice buffer - * maintains a cursor, and moving the cursor has cost proportional to the - * distance the cursor moves, but inserting, deleting, or splicing in - * new information at the cursor is as efficient as the push/pop operation. - * This allows for an efficient sequence of splices (or pushes, pops, shifts, - * or unshifts) as long such edits happen at the same part of the array or - * generally sweep through the array from the beginning to the end. - * - * The interface for splice buffers also supports large numbers of inputs by - * passing a single array argument rather passing multiple arguments on the - * function call stack. - * - * @template T - * Item type. - */ -class SpliceBuffer { - /** - * @param {ReadonlyArray<T> | null | undefined} [initial] - * Initial items (optional). - * @returns - * Splice buffer. - */ - constructor(initial) { - /** @type {Array<T>} */ - this.left = initial ? [...initial] : []; - /** @type {Array<T>} */ - this.right = []; - } +module.exports = {}.hasOwnProperty - /** - * Array access; - * does not move the cursor. - * - * @param {number} index - * Index. - * @return {T} - * Item. - */ - get(index) { - if (index < 0 || index >= this.left.length + this.right.length) { - throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`'); - } - if (index < this.left.length) return this.left[index]; - return this.right[this.right.length - index + this.left.length - 1]; - } - /** - * The length of the splice buffer, one greater than the largest index in the - * array. - */ - get length() { - return this.left.length + this.right.length; - } +/***/ }), - /** - * Remove and return `list[0]`; - * moves the cursor to `0`. - * - * @returns {T | undefined} - * Item, optional. - */ - shift() { - this.setCursor(0); - return this.right.pop(); - } +/***/ 70896: +/***/ ((module) => { - /** - * Slice the buffer to get an array; - * does not move the cursor. - * - * @param {number} start - * Start. - * @param {number | null | undefined} [end] - * End (optional). - * @returns {Array<T>} - * Array of items. - */ - slice(start, end) { - /** @type {number} */ - const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end; - if (stop < this.left.length) { - return this.left.slice(start, stop); - } - if (start > this.left.length) { - return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse(); - } - return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse()); - } +"use strict"; - /** - * Mimics the behavior of Array.prototype.splice() except for the change of - * interface necessary to avoid segfaults when patching in very large arrays. - * - * This operation moves cursor is moved to `start` and results in the cursor - * placed after any inserted items. - * - * @param {number} start - * Start; - * zero-based index at which to start changing the array; - * negative numbers count backwards from the end of the array and values - * that are out-of bounds are clamped to the appropriate end of the array. - * @param {number | null | undefined} [deleteCount=0] - * Delete count (default: `0`); - * maximum number of elements to delete, starting from start. - * @param {Array<T> | null | undefined} [items=[]] - * Items to include in place of the deleted items (default: `[]`). - * @return {Array<T>} - * Any removed items. - */ - splice(start, deleteCount, items) { - /** @type {number} */ - const count = deleteCount || 0; - this.setCursor(Math.trunc(start)); - const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY); - if (items) chunkedPush(this.left, items); - return removed.reverse(); - } - /** - * Remove and return the highest-numbered item in the array, so - * `list[list.length - 1]`; - * Moves the cursor to `length`. - * - * @returns {T | undefined} - * Item, optional. - */ - pop() { - this.setCursor(Number.POSITIVE_INFINITY); - return this.left.pop(); - } +module.exports = encode - /** - * Inserts a single item to the high-numbered side of the array; - * moves the cursor to `length`. - * - * @param {T} item - * Item. - * @returns {undefined} - * Nothing. - */ - push(item) { - this.setCursor(Number.POSITIVE_INFINITY); - this.left.push(item); - } +// Encode special characters in `value`. +function encode(value, options) { + value = value.replace( + options.subset ? charactersToExpression(options.subset) : /["&'<>`]/g, + basic + ) - /** - * Inserts many items to the high-numbered side of the array. - * Moves the cursor to `length`. - * - * @param {Array<T>} items - * Items. - * @returns {undefined} - * Nothing. - */ - pushMany(items) { - this.setCursor(Number.POSITIVE_INFINITY); - chunkedPush(this.left, items); + if (options.subset || options.escapeOnly) { + return value } - /** - * Inserts a single item to the low-numbered side of the array; - * Moves the cursor to `0`. - * - * @param {T} item - * Item. - * @returns {undefined} - * Nothing. - */ - unshift(item) { - this.setCursor(0); - this.right.push(item); - } + return ( + value + // Surrogate pairs. + .replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, surrogate) + // BMP control characters (C0 except for LF, CR, SP; DEL; and some more + // non-ASCII ones). + .replace( + // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape + /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g, + basic + ) + ) - /** - * Inserts many items to the low-numbered side of the array; - * moves the cursor to `0`. - * - * @param {Array<T>} items - * Items. - * @returns {undefined} - * Nothing. - */ - unshiftMany(items) { - this.setCursor(0); - chunkedPush(this.right, items.reverse()); + function surrogate(pair, index, all) { + return options.format( + (pair.charCodeAt(0) - 0xd800) * 0x400 + + pair.charCodeAt(1) - + 0xdc00 + + 0x10000, + all.charCodeAt(index + 2), + options + ) } - /** - * Move the cursor to a specific position in the array. Requires - * time proportional to the distance moved. - * - * If `n < 0`, the cursor will end up at the beginning. - * If `n > length`, the cursor will end up at the end. - * - * @param {number} n - * Position. - * @return {undefined} - * Nothing. - */ - setCursor(n) { - if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return; - if (n < this.left.length) { - // Move cursor to the this.left - const removed = this.left.splice(n, Number.POSITIVE_INFINITY); - chunkedPush(this.right, removed.reverse()); - } else { - // Move cursor to the this.right - const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY); - chunkedPush(this.left, removed.reverse()); - } + function basic(character, index, all) { + return options.format( + character.charCodeAt(0), + all.charCodeAt(index + 1), + options + ) } } -/** - * Avoid stack overflow by pushing items onto the stack in segments - * - * @template T - * Item type. - * @param {Array<T>} list - * List to inject into. - * @param {ReadonlyArray<T>} right - * Items to inject. - * @return {undefined} - * Nothing. - */ -function chunkedPush(list, right) { - /** @type {number} */ - let chunkStart = 0; - if (right.length < 10000) { - list.push(...right); - } else { - while (chunkStart < right.length) { - list.push(...right.slice(chunkStart, chunkStart + 10000)); - chunkStart += 10000; - } +function charactersToExpression(subset) { + var groups = [] + var index = -1 + + while (++index < subset.length) { + groups.push(subset[index].replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')) } -} -;// CONCATENATED MODULE: ./node_modules/micromark-util-subtokenize/index.js -/** - * @import {Chunk, Event, Token} from 'micromark-util-types' - */ + return new RegExp('(?:' + groups.join('|') + ')', 'g') +} +/***/ }), -// Hidden API exposed for testing. +/***/ 7057: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -/** - * Tokenize subcontent. - * - * @param {Array<Event>} eventsArray - * List of events. - * @returns {boolean} - * Whether subtokens were found. - */ -// eslint-disable-next-line complexity -function subtokenize(eventsArray) { - /** @type {Record<string, number>} */ - const jumps = {}; - let index = -1; - /** @type {Event} */ - let event; - /** @type {number | undefined} */ - let lineIndex; - /** @type {number} */ - let otherIndex; - /** @type {Event} */ - let otherEvent; - /** @type {Array<Event>} */ - let parameters; - /** @type {Array<Event>} */ - let subevents; - /** @type {boolean | undefined} */ - let more; - const events = new SpliceBuffer(eventsArray); - while (++index < events.length) { - while (index in jumps) { - index = jumps[index]; - } - event = events.get(index); - - // Add a hook for the GFM tasklist extension, which needs to know if text - // is in the first content of a list item. - if (index && event[1].type === "chunkFlow" && events.get(index - 1)[1].type === "listItemPrefix") { - subevents = event[1]._tokenizer.events; - otherIndex = 0; - if (otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank") { - otherIndex += 2; - } - if (otherIndex < subevents.length && subevents[otherIndex][1].type === "content") { - while (++otherIndex < subevents.length) { - if (subevents[otherIndex][1].type === "content") { - break; - } - if (subevents[otherIndex][1].type === "chunkText") { - subevents[otherIndex][1]._isInFirstContentOfListItem = true; - otherIndex++; - } - } - } - } - // Enter. - if (event[0] === 'enter') { - if (event[1].contentType) { - Object.assign(jumps, subcontent(events, index)); - index = jumps[index]; - more = true; - } - } - // Exit. - else if (event[1]._container) { - otherIndex = index; - lineIndex = undefined; - while (otherIndex--) { - otherEvent = events.get(otherIndex); - if (otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank") { - if (otherEvent[0] === 'enter') { - if (lineIndex) { - events.get(lineIndex)[1].type = "lineEndingBlank"; - } - otherEvent[1].type = "lineEnding"; - lineIndex = otherIndex; - } - } else if (otherEvent[1].type === "linePrefix" || otherEvent[1].type === "listItemIndent") { - // Move past. - } else { - break; - } - } - if (lineIndex) { - // Fix position. - event[1].end = { - ...events.get(lineIndex)[1].start - }; +var xtend = __nccwpck_require__(80869) +var core = __nccwpck_require__(70896) +var smart = __nccwpck_require__(58549) - // Switch container exit w/ line endings. - parameters = events.slice(lineIndex, index); - parameters.unshift(event); - events.splice(lineIndex, index - lineIndex + 1, parameters); - } - } - } +module.exports = encode - // The changes to the `events` buffer must be copied back into the eventsArray - splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0)); - return !more; +// Encode special characters in `value`. +function encode(value, options) { + // Note: Switch to `Object.assign` next major. + return core(value, xtend(options, {format: smart})) } -/** - * Tokenize embedded tokens. - * - * @param {SpliceBuffer<Event>} events - * Events. - * @param {number} eventIndex - * Index. - * @returns {Record<string, number>} - * Gaps. - */ -function subcontent(events, eventIndex) { - const token = events.get(eventIndex)[1]; - const context = events.get(eventIndex)[2]; - let startPosition = eventIndex - 1; - /** @type {Array<number>} */ - const startPositions = []; - let tokenizer = token._tokenizer; - if (!tokenizer) { - tokenizer = context.parser[token.contentType](token.start); - if (token._contentTypeTextTrailing) { - tokenizer._contentTypeTextTrailing = true; - } - } - const childEvents = tokenizer.events; - /** @type {Array<[number, number]>} */ - const jumps = []; - /** @type {Record<string, number>} */ - const gaps = {}; - /** @type {Array<Chunk>} */ - let stream; - /** @type {Token | undefined} */ - let previous; - let index = -1; - /** @type {Token | undefined} */ - let current = token; - let adjust = 0; - let start = 0; - const breaks = [start]; - - // Loop forward through the linked tokens to pass them in order to the - // subtokenizer. - while (current) { - // Find the position of the event for this token. - while (events.get(++startPosition)[1] !== current) { - // Empty. - } - startPositions.push(startPosition); - if (!current._tokenizer) { - stream = context.sliceStream(current); - if (!current.next) { - stream.push(null); - } - if (previous) { - tokenizer.defineSkip(current.start); - } - if (current._isInFirstContentOfListItem) { - tokenizer._gfmTasklistFirstContentOfListItem = true; - } - tokenizer.write(stream); - if (current._isInFirstContentOfListItem) { - tokenizer._gfmTasklistFirstContentOfListItem = undefined; - } - } - // Unravel the next token. - previous = current; - current = current.next; - } +/***/ }), - // Now, loop back through all events (and linked tokens), to figure out which - // parts belong where. - current = token; - while (++index < childEvents.length) { - if ( - // Find a void token that includes a break. - childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) { - start = index + 1; - breaks.push(start); - // Help GC. - current._tokenizer = undefined; - current.previous = undefined; - current = current.next; - } - } - - // Help GC. - tokenizer.events = []; - - // If there’s one more token (which is the cases for lines that end in an - // EOF), that’s perfect: the last point we found starts it. - // If there isn’t then make sure any remaining content is added to it. - if (current) { - // Help GC. - current._tokenizer = undefined; - current.previous = undefined; - } else { - breaks.pop(); - } +/***/ 94316: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Now splice the events from the subtokenizer into the current events, - // moving back to front so that splice indices aren’t affected. - index = breaks.length; - while (index--) { - const slice = childEvents.slice(breaks[index], breaks[index + 1]); - const start = startPositions.pop(); - jumps.push([start, start + slice.length - 1]); - events.splice(start, 2, slice); - } - jumps.reverse(); - index = -1; - while (++index < jumps.length) { - gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]; - adjust += jumps[index][1] - jumps[index][0] - 1; - } - return gaps; -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/postprocess.js -/** - * @import {Event} from 'micromark-util-types' - */ +"use strict"; +var core = __nccwpck_require__(70896) +var smart = __nccwpck_require__(58549) -/** - * @param {Array<Event>} events - * Events. - * @returns {Array<Event>} - * Events. - */ -function postprocess(events) { - while (!subtokenize(events)) { - // Empty - } - return events; +module.exports = escape + +// Shortcut to escape special characters in HTML. +function escape(value) { + return core(value, { + escapeOnly: true, + useNamedReferences: true, + format: smart + }) } -;// CONCATENATED MODULE: ./node_modules/micromark-util-combine-extensions/index.js -/** - * @import { - * Extension, - * Handles, - * HtmlExtension, - * NormalizedExtension - * } from 'micromark-util-types' - */ +/***/ }), -const micromark_util_combine_extensions_hasOwnProperty = {}.hasOwnProperty +/***/ 22167: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Combine multiple syntax extensions into one. - * - * @param {ReadonlyArray<Extension>} extensions - * List of syntax extensions. - * @returns {NormalizedExtension} - * A single combined extension. - */ -function combineExtensions(extensions) { - /** @type {NormalizedExtension} */ - const all = {} - let index = -1 +"use strict"; - while (++index < extensions.length) { - syntaxExtension(all, extensions[index]) - } - return all -} +var encode = __nccwpck_require__(7057) +var escape = __nccwpck_require__(94316) -/** - * Merge `extension` into `all`. - * - * @param {NormalizedExtension} all - * Extension to merge into. - * @param {Extension} extension - * Extension to merge. - * @returns {undefined} - * Nothing. - */ -function syntaxExtension(all, extension) { - /** @type {keyof Extension} */ - let hook - - for (hook in extension) { - const maybe = micromark_util_combine_extensions_hasOwnProperty.call(all, hook) ? all[hook] : undefined - /** @type {Record<string, unknown>} */ - const left = maybe || (all[hook] = {}) - /** @type {Record<string, unknown> | undefined} */ - const right = extension[hook] - /** @type {string} */ - let code +module.exports = encode +encode.escape = escape - if (right) { - for (code in right) { - if (!micromark_util_combine_extensions_hasOwnProperty.call(left, code)) left[code] = [] - const value = right[code] - constructs( - // @ts-expect-error Looks like a list. - left[code], - Array.isArray(value) ? value : value ? [value] : [] - ) - } - } - } -} -/** - * Merge `list` into `existing` (both lists of constructs). - * Mutates `existing`. - * - * @param {Array<unknown>} existing - * List of constructs to merge into. - * @param {Array<unknown>} list - * List of constructs to merge. - * @returns {undefined} - * Nothing. - */ -function constructs(existing, list) { - let index = -1 - /** @type {Array<unknown>} */ - const before = [] +/***/ }), - while (++index < list.length) { - // @ts-expect-error Looks like an object. - ;(list[index].add === 'after' ? existing : before).push(list[index]) - } +/***/ 58549: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - splice(existing, 0, 0, before) -} +module.exports = formatPretty -/** - * Combine multiple HTML extensions into one. - * - * @param {ReadonlyArray<HtmlExtension>} htmlExtensions - * List of HTML extensions. - * @returns {HtmlExtension} - * Single combined HTML extension. - */ -function combineHtmlExtensions(htmlExtensions) { - /** @type {HtmlExtension} */ - const handlers = {} - let index = -1 +var toHexadecimal = __nccwpck_require__(63849) +var toDecimal = __nccwpck_require__(98653) +var toNamed = __nccwpck_require__(89339) - while (++index < htmlExtensions.length) { - htmlExtension(handlers, htmlExtensions[index]) - } +// Encode `character` according to `options`. +function formatPretty(code, next, options) { + var named + var numeric + var decimal - return handlers -} + if (options.useNamedReferences || options.useShortestReferences) { + named = toNamed( + code, + next, + options.omitOptionalSemicolons, + options.attribute + ) + } -/** - * Merge `extension` into `all`. - * - * @param {HtmlExtension} all - * Extension to merge into. - * @param {HtmlExtension} extension - * Extension to merge. - * @returns {undefined} - * Nothing. - */ -function htmlExtension(all, extension) { - /** @type {keyof HtmlExtension} */ - let hook + if (options.useShortestReferences || !named) { + numeric = toHexadecimal(code, next, options.omitOptionalSemicolons) - for (hook in extension) { - const maybe = micromark_util_combine_extensions_hasOwnProperty.call(all, hook) ? all[hook] : undefined - const left = maybe || (all[hook] = {}) - const right = extension[hook] - /** @type {keyof Handles} */ - let type + // Use the shortest numeric reference when requested. + // A simple algorithm would use decimal for all code points under 100, as + // those are shorter than hexadecimal: + // + // * `&#99;` vs `&#x63;` (decimal shorter) + // * `&#100;` vs `&#x64;` (equal) + // + // However, because we take `next` into consideration when `omit` is used, + // And it would be possible that decimals are shorter on bigger values as + // well if `next` is hexadecimal but not decimal, we instead compare both. + if (options.useShortestReferences) { + decimal = toDecimal(code, next, options.omitOptionalSemicolons) - if (right) { - for (type in right) { - // @ts-expect-error assume document vs regular handler are managed correctly. - left[type] = right[type] + if (decimal.length < numeric.length) { + numeric = decimal } } } + + return named && + (!options.useShortestReferences || named.length < numeric.length) + ? named + : numeric } -;// CONCATENATED MODULE: ./node_modules/micromark-util-character/index.js -/** - * @import {Code} from 'micromark-util-types' - */ -/** - * Check whether the character code represents an ASCII alpha (`a` through `z`, - * case insensitive). - * - * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha. - * - * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`) - * to U+005A (`Z`). - * - * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`) - * to U+007A (`z`). - * - * @param code - * Code. - * @returns {boolean} - * Whether it matches. - */ -const asciiAlpha = regexCheck(/[A-Za-z]/); +/***/ }), -/** - * Check whether the character code represents an ASCII alphanumeric (`a` - * through `z`, case insensitive, or `0` through `9`). - * - * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha - * (see `asciiAlpha`). - * - * @param code - * Code. - * @returns {boolean} - * Whether it matches. - */ -const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/); +/***/ 98653: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Check whether the character code represents an ASCII atext. - * - * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in - * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`), - * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F - * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E - * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE - * (`{`) to U+007E TILDE (`~`). - * - * See: - * **\[RFC5322]**: - * [Internet Message Format](https://tools.ietf.org/html/rfc5322). - * P. Resnick. - * IETF. - * - * @param code - * Code. - * @returns {boolean} - * Whether it matches. - */ -const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/); +module.exports = toDecimalReference -/** - * Check whether a character code is an ASCII control character. - * - * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL) - * to U+001F (US), or U+007F (DEL). - * - * @param {Code} code - * Code. - * @returns {boolean} - * Whether it matches. - */ -function asciiControl(code) { - return ( - // Special whitespace codes (which have negative values), C0 and Control - // character DEL - code !== null && (code < 32 || code === 127) - ); +var fromCharCode = __nccwpck_require__(41165) + +// Transform `code` into a decimal character reference. +function toDecimalReference(code, next, omit) { + var value = '&#' + String(code) + return omit && next && !/\d/.test(fromCharCode(next)) ? value : value + ';' } -/** - * Check whether the character code represents an ASCII digit (`0` through `9`). - * - * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to - * U+0039 (`9`). - * - * @param code - * Code. - * @returns {boolean} - * Whether it matches. - */ -const asciiDigit = regexCheck(/\d/); -/** - * Check whether the character code represents an ASCII hex digit (`a` through - * `f`, case insensitive, or `0` through `9`). - * - * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex - * digit, or an ASCII lower hex digit. - * - * An **ASCII upper hex digit** is a character in the inclusive range U+0041 - * (`A`) to U+0046 (`F`). - * - * An **ASCII lower hex digit** is a character in the inclusive range U+0061 - * (`a`) to U+0066 (`f`). - * - * @param code - * Code. - * @returns {boolean} - * Whether it matches. - */ -const asciiHexDigit = regexCheck(/[\dA-Fa-f]/); +/***/ }), -/** - * Check whether the character code represents ASCII punctuation. - * - * An **ASCII punctuation** is a character in the inclusive ranges U+0021 - * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT - * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT - * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`). - * - * @param code - * Code. - * @returns {boolean} - * Whether it matches. - */ -const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/); +/***/ 63849: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Check whether a character code is a markdown line ending. - * - * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN - * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR). - * - * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE - * RETURN (CR) are replaced by these virtual characters depending on whether - * they occurred together. - * - * @param {Code} code - * Code. - * @returns {boolean} - * Whether it matches. - */ -function markdownLineEnding(code) { - return code !== null && code < -2; -} +module.exports = toHexReference -/** - * Check whether a character code is a markdown line ending (see - * `markdownLineEnding`) or markdown space (see `markdownSpace`). - * - * @param {Code} code - * Code. - * @returns {boolean} - * Whether it matches. - */ -function markdownLineEndingOrSpace(code) { - return code !== null && (code < 0 || code === 32); -} +var fromCharCode = __nccwpck_require__(41165) -/** - * Check whether a character code is a markdown space. - * - * A **markdown space** is the concrete character U+0020 SPACE (SP) and the - * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT). - * - * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is - * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL - * SPACE (VS) characters, depending on the column at which the tab occurred. - * - * @param {Code} code - * Code. - * @returns {boolean} - * Whether it matches. - */ -function markdownSpace(code) { - return code === -2 || code === -1 || code === 32; +// Transform `code` into a hexadecimal character reference. +function toHexReference(code, next, omit) { + var value = '&#x' + code.toString(16).toUpperCase() + return omit && next && !/[\dA-Fa-f]/.test(fromCharCode(next)) + ? value + : value + ';' } -// Size note: removing ASCII from the regex and using `asciiPunctuation` here -// In fact adds to the bundle size. -/** - * Check whether the character code represents Unicode punctuation. - * - * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation, - * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf` - * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po` - * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII - * punctuation (see `asciiPunctuation`). - * - * See: - * **\[UNICODE]**: - * [The Unicode Standard](https://www.unicode.org/versions/). - * Unicode Consortium. - * - * @param code - * Code. - * @returns - * Whether it matches. - */ -const unicodePunctuation = regexCheck(/\p{P}|\p{S}/u); - -/** - * Check whether the character code represents Unicode whitespace. - * - * Note that this does handle micromark specific markdown whitespace characters. - * See `markdownLineEndingOrSpace` to check that. - * - * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator, - * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF), - * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\[UNICODE]**). - * - * See: - * **\[UNICODE]**: - * [The Unicode Standard](https://www.unicode.org/versions/). - * Unicode Consortium. - * - * @param code - * Code. - * @returns - * Whether it matches. - */ -const unicodeWhitespace = regexCheck(/\s/); -/** - * Create a code check from a regex. - * - * @param {RegExp} regex - * Expression. - * @returns {(code: Code) => boolean} - * Check. - */ -function regexCheck(regex) { - return check; +/***/ }), - /** - * Check whether a code matches the bound regex. - * - * @param {Code} code - * Character code. - * @returns {boolean} - * Whether the character code matches the bound regex. - */ - function check(code) { - return code !== null && code > -1 && regex.test(String.fromCharCode(code)); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-factory-space/index.js -/** - * @import {Effects, State, TokenType} from 'micromark-util-types' - */ +/***/ 89339: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = toNamed +var legacy = __nccwpck_require__(82719) +var characters = __nccwpck_require__(41050) +var fromCharCode = __nccwpck_require__(41165) +var own = __nccwpck_require__(12935) +var dangerous = __nccwpck_require__(50408) -// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`. +// Transform `code` into a named character reference. +function toNamed(code, next, omit, attribute) { + var character = fromCharCode(code) + var name + var value -/** - * Parse spaces and tabs. - * - * There is no `nok` parameter: - * - * * spaces in markdown are often optional, in which case this factory can be - * used and `ok` will be switched to whether spaces were found or not - * * one line ending or space can be detected with `markdownSpace(code)` right - * before using `factorySpace` - * - * ###### Examples - * - * Where `␉` represents a tab (plus how much it expands) and `␠` represents a - * single space. - * - * ```markdown - * ␉ - * ␠␠␠␠ - * ␉␠ - * ``` - * - * @param {Effects} effects - * Context. - * @param {State} ok - * State switched to when successful. - * @param {TokenType} type - * Type (`' \t'`). - * @param {number | undefined} [max=Infinity] - * Max (exclusive). - * @returns {State} - * Start state. - */ -function factorySpace(effects, ok, type, max) { - const limit = max ? max - 1 : Number.POSITIVE_INFINITY; - let size = 0; - return start; + if (own.call(characters, character)) { + name = characters[character] + value = '&' + name - /** @type {State} */ - function start(code) { - if (markdownSpace(code)) { - effects.enter(type); - return prefix(code); + if ( + omit && + own.call(legacy, name) && + dangerous.indexOf(name) === -1 && + (!attribute || + (next && next !== 61 /* `=` */ && /[^\da-z]/i.test(fromCharCode(next)))) + ) { + return value } - return ok(code); - } - /** @type {State} */ - function prefix(code) { - if (markdownSpace(code) && size++ < limit) { - effects.consume(code); - return prefix; - } - effects.exit(type); - return ok(code); + return value + ';' } + + return '' } -;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/content.js -/** - * @import { - * InitialConstruct, - * Initializer, - * State, - * TokenizeContext, - * Token - * } from 'micromark-util-types' - */ +/***/ }), -/** @type {InitialConstruct} */ -const content = { - tokenize: initializeContent -}; +/***/ 91389: +/***/ ((module) => { -/** - * @this {TokenizeContext} - * Context. - * @type {Initializer} - * Content. +"use strict"; +/*! + * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string> + * + * Copyright (c) 2015, 2017, Jon Schlinkert. + * Released under the MIT License. */ -function initializeContent(effects) { - const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial); - /** @type {Token} */ - let previous; - return contentStart; - - /** @type {State} */ - function afterContentStartConstruct(code) { - if (code === null) { - effects.consume(code); - return; - } - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return factorySpace(effects, contentStart, "linePrefix"); - } - /** @type {State} */ - function paragraphInitial(code) { - effects.enter("paragraph"); - return lineStart(code); - } - - /** @type {State} */ - function lineStart(code) { - const token = effects.enter("chunkText", { - contentType: "text", - previous - }); - if (previous) { - previous.next = token; - } - previous = token; - return data(code); - } - /** @type {State} */ - function data(code) { - if (code === null) { - effects.exit("chunkText"); - effects.exit("paragraph"); - effects.consume(code); - return; - } - if (markdownLineEnding(code)) { - effects.consume(code); - effects.exit("chunkText"); - return lineStart; - } - // Data. - effects.consume(code); - return data; +module.exports = function(str) { + if (typeof str === 'string' && str.charAt(0) === '\ufeff') { + return str.slice(1); } -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/document.js -/** - * @import { - * Construct, - * ContainerState, - * InitialConstruct, - * Initializer, - * Point, - * State, - * TokenizeContext, - * Tokenizer, - * Token - * } from 'micromark-util-types' - */ + return str; +}; -/** - * @typedef {[Construct, ContainerState]} StackItem - * Construct and its state. - */ +/***/ }), +/***/ 21450: +/***/ ((module) => { +"use strict"; -/** @type {InitialConstruct} */ -const document_document = { - tokenize: initializeDocument -}; +var argv = process.argv; -/** @type {Construct} */ -const containerConstruct = { - tokenize: tokenizeContainer +var terminator = argv.indexOf('--'); +var hasFlag = function (flag) { + flag = '--' + flag; + var pos = argv.indexOf(flag); + return pos !== -1 && (terminator !== -1 ? pos < terminator : true); }; -/** - * @this {TokenizeContext} - * Self. - * @type {Initializer} - * Initializer. - */ -function initializeDocument(effects) { - const self = this; - /** @type {Array<StackItem>} */ - const stack = []; - let continued = 0; - /** @type {TokenizeContext | undefined} */ - let childFlow; - /** @type {Token | undefined} */ - let childToken; - /** @type {number} */ - let lineStartOffset; - return start; - - /** @type {State} */ - function start(code) { - // First we iterate through the open blocks, starting with the root - // document, and descending through last children down to the last open - // block. - // Each block imposes a condition that the line must satisfy if the block is - // to remain open. - // For example, a block quote requires a `>` character. - // A paragraph requires a non-blank line. - // In this phase we may match all or just some of the open blocks. - // But we cannot close unmatched blocks yet, because we may have a lazy - // continuation line. - if (continued < stack.length) { - const item = stack[continued]; - self.containerState = item[1]; - return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code); - } - - // Done. - return checkNewContainers(code); - } - - /** @type {State} */ - function documentContinue(code) { - continued++; - - // Note: this field is called `_closeFlow` but it also closes containers. - // Perhaps a good idea to rename it but it’s already used in the wild by - // extensions. - if (self.containerState._closeFlow) { - self.containerState._closeFlow = undefined; - if (childFlow) { - closeFlow(); - } - - // Note: this algorithm for moving events around is similar to the - // algorithm when dealing with lazy lines in `writeToChild`. - const indexBeforeExits = self.events.length; - let indexBeforeFlow = indexBeforeExits; - /** @type {Point | undefined} */ - let point; - - // Find the flow chunk. - while (indexBeforeFlow--) { - if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === "chunkFlow") { - point = self.events[indexBeforeFlow][1].end; - break; - } - } - exitContainers(continued); +module.exports = (function () { + if ('FORCE_COLOR' in process.env) { + return true; + } - // Fix positions. - let index = indexBeforeExits; - while (index < self.events.length) { - self.events[index][1].end = { - ...point - }; - index++; - } + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + return false; + } - // Inject the exits earlier (they’re still also at the end). - splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits)); + if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + return true; + } - // Discard the duplicate exits. - self.events.length = index; - return checkNewContainers(code); - } - return start(code); - } + if (process.stdout && !process.stdout.isTTY) { + return false; + } - /** @type {State} */ - function checkNewContainers(code) { - // Next, after consuming the continuation markers for existing blocks, we - // look for new block starts (e.g. `>` for a block quote). - // If we encounter a new block start, we close any blocks unmatched in - // step 1 before creating the new block as a child of the last matched - // block. - if (continued === stack.length) { - // No need to `check` whether there’s a container, of `exitContainers` - // would be moot. - // We can instead immediately `attempt` to parse one. - if (!childFlow) { - return documentContinued(code); - } + if (process.platform === 'win32') { + return true; + } - // If we have concrete content, such as block HTML or fenced code, - // we can’t have containers “pierce” into them, so we can immediately - // start. - if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) { - return flowStart(code); - } + if ('COLORTERM' in process.env) { + return true; + } - // If we do have flow, it could still be a blank line, - // but we’d be interrupting it w/ a new container if there’s a current - // construct. - // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer - // needed in micromark-extension-gfm-table@1.0.6). - self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack); - } + if (process.env.TERM === 'dumb') { + return false; + } - // Check if there is a new container. - self.containerState = {}; - return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code); - } + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } - /** @type {State} */ - function thereIsANewContainer(code) { - if (childFlow) closeFlow(); - exitContainers(continued); - return documentContinued(code); - } + return false; +})(); - /** @type {State} */ - function thereIsNoNewContainer(code) { - self.parser.lazy[self.now().line] = continued !== stack.length; - lineStartOffset = self.now().offset; - return flowStart(code); - } - /** @type {State} */ - function documentContinued(code) { - // Try new containers. - self.containerState = {}; - return effects.attempt(containerConstruct, containerContinue, flowStart)(code); - } +/***/ }), - /** @type {State} */ - function containerContinue(code) { - continued++; - stack.push([self.currentConstruct, self.containerState]); - // Try another. - return documentContinued(code); - } +/***/ 75937: +/***/ ((module) => { - /** @type {State} */ - function flowStart(code) { - if (code === null) { - if (childFlow) closeFlow(); - exitContainers(0); - effects.consume(code); - return; - } - childFlow = childFlow || self.parser.flow(self.now()); - effects.enter("chunkFlow", { - _tokenizer: childFlow, - contentType: "flow", - previous: childToken - }); - return flowContinue(code); - } +"use strict"; - /** @type {State} */ - function flowContinue(code) { - if (code === null) { - writeToChild(effects.exit("chunkFlow"), true); - exitContainers(0); - effects.consume(code); - return; - } - if (markdownLineEnding(code)) { - effects.consume(code); - writeToChild(effects.exit("chunkFlow")); - // Get ready for the next line. - continued = 0; - self.interrupt = undefined; - return start; - } - effects.consume(code); - return flowContinue; - } - /** - * @param {Token} token - * Token. - * @param {boolean | undefined} [endOfFile] - * Whether the token is at the end of the file (default: `false`). - * @returns {undefined} - * Nothing. - */ - function writeToChild(token, endOfFile) { - const stream = self.sliceStream(token); - if (endOfFile) stream.push(null); - token.previous = childToken; - if (childToken) childToken.next = token; - childToken = token; - childFlow.defineSkip(token.start); - childFlow.write(stream); - - // Alright, so we just added a lazy line: - // - // ```markdown - // > a - // b. - // - // Or: - // - // > ~~~c - // d - // - // Or: - // - // > | e | - // f - // ``` - // - // The construct in the second example (fenced code) does not accept lazy - // lines, so it marked itself as done at the end of its first line, and - // then the content construct parses `d`. - // Most constructs in markdown match on the first line: if the first line - // forms a construct, a non-lazy line can’t “unmake” it. - // - // The construct in the third example is potentially a GFM table, and - // those are *weird*. - // It *could* be a table, from the first line, if the following line - // matches a condition. - // In this case, that second line is lazy, which “unmakes” the first line - // and turns the whole into one content block. - // - // We’ve now parsed the non-lazy and the lazy line, and can figure out - // whether the lazy line started a new flow block. - // If it did, we exit the current containers between the two flow blocks. - if (self.parser.lazy[token.start.line]) { - let index = childFlow.events.length; - while (index--) { - if ( - // The token starts before the line ending… - childFlow.events[index][1].start.offset < lineStartOffset && ( - // …and either is not ended yet… - !childFlow.events[index][1].end || - // …or ends after it. - childFlow.events[index][1].end.offset > lineStartOffset)) { - // Exit: there’s still something open, which means it’s a lazy line - // part of something. - return; - } - } +module.exports = trimTrailingLines - // Note: this algorithm for moving events around is similar to the - // algorithm when closing flow in `documentContinue`. - const indexBeforeExits = self.events.length; - let indexBeforeFlow = indexBeforeExits; - /** @type {boolean | undefined} */ - let seen; - /** @type {Point | undefined} */ - let point; +// Remove final newline characters from `value`. +function trimTrailingLines(value) { + return String(value).replace(/\n+$/, '') +} - // Find the previous chunk (the one before the lazy line). - while (indexBeforeFlow--) { - if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === "chunkFlow") { - if (seen) { - point = self.events[indexBeforeFlow][1].end; - break; - } - seen = true; - } - } - exitContainers(continued); - // Fix positions. - index = indexBeforeExits; - while (index < self.events.length) { - self.events[index][1].end = { - ...point - }; - index++; - } +/***/ }), - // Inject the exits earlier (they’re still also at the end). - splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits)); +/***/ 15464: +/***/ ((module, exports) => { - // Discard the duplicate exits. - self.events.length = index; - } - } - /** - * @param {number} size - * Size. - * @returns {undefined} - * Nothing. - */ - function exitContainers(size) { - let index = stack.length; +exports = module.exports = trim; - // Exit open containers. - while (index-- > size) { - const entry = stack[index]; - self.containerState = entry[1]; - entry[0].exit.call(self, effects); - } - stack.length = size; - } - function closeFlow() { - childFlow.write([null]); - childToken = undefined; - childFlow = undefined; - self.containerState._closeFlow = undefined; - } +function trim(str){ + return str.replace(/^\s*|\s*$/g, ''); } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - * Tokenizer. - */ -function tokenizeContainer(effects, ok, nok) { - // Always populated by defaults. +exports.left = function(str){ + return str.replace(/^\s*/, ''); +}; - return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), "linePrefix", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4); -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/blank-line.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ +exports.right = function(str){ + return str.replace(/\s*$/, ''); +}; +/***/ }), -/** @type {Construct} */ -const blankLine = { - partial: true, - tokenize: tokenizeBlankLine -}; +/***/ 20770: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeBlankLine(effects, ok, nok) { - return start; +module.exports = __nccwpck_require__(20218); - /** - * Start of blank line. - * - * > 👉 **Note**: `␠` represents a space character. - * - * ```markdown - * > | ␠␠␊ - * ^ - * > | ␊ - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - return markdownSpace(code) ? factorySpace(effects, after, "linePrefix")(code) : after(code); - } - /** - * At eof/eol, after optional whitespace. - * - * > 👉 **Note**: `␠` represents a space character. - * - * ```markdown - * > | ␠␠␊ - * ^ - * > | ␊ - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - return code === null || markdownLineEnding(code) ? ok(code) : nok(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/content.js -/** - * @import { - * Construct, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer, - * Token - * } from 'micromark-util-types' - */ +/***/ }), +/***/ 20218: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -/** - * No name because it must not be turned off. - * @type {Construct} - */ -const content_content = { - resolve: resolveContent, - tokenize: tokenizeContent -}; +var net = __nccwpck_require__(69278); +var tls = __nccwpck_require__(64756); +var http = __nccwpck_require__(58611); +var https = __nccwpck_require__(65692); +var events = __nccwpck_require__(24434); +var assert = __nccwpck_require__(42613); +var util = __nccwpck_require__(39023); -/** @type {Construct} */ -const continuationConstruct = { - partial: true, - tokenize: tokenizeContinuation -}; -/** - * Content is transparent: it’s parsed right now. That way, definitions are also - * parsed right now: before text in paragraphs (specifically, media) are parsed. - * - * @type {Resolver} - */ -function resolveContent(events) { - subtokenize(events); - return events; -} +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeContent(effects, ok) { - /** @type {Token | undefined} */ - let previous; - return chunkStart; - /** - * Before a content chunk. - * - * ```markdown - * > | abc - * ^ - * ``` - * - * @type {State} - */ - function chunkStart(code) { - effects.enter("content"); - previous = effects.enter("chunkContent", { - contentType: "content" - }); - return chunkInside(code); - } +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} - /** - * In a content chunk. - * - * ```markdown - * > | abc - * ^^^ - * ``` - * - * @type {State} - */ - function chunkInside(code) { - if (code === null) { - return contentEnd(code); - } +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} - // To do: in `markdown-rs`, each line is parsed on its own, and everything - // is stitched together resolving. - if (markdownLineEnding(code)) { - return effects.check(continuationConstruct, contentContinue, contentEnd)(code); - } +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} - // Data. - effects.consume(code); - return chunkInside; - } +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} - /** - * - * - * @type {State} - */ - function contentEnd(code) { - effects.exit("chunkContent"); - effects.exit("content"); - return ok(code); - } - /** - * - * - * @type {State} - */ - function contentContinue(code) { - effects.consume(code); - effects.exit("chunkContent"); - previous.next = effects.enter("chunkContent", { - contentType: "content", - previous - }); - previous = previous.next; - return chunkInside; - } +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); } +util.inherits(TunnelingAgent, events.EventEmitter); -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeContinuation(effects, ok, nok) { - const self = this; - return startLookahead; +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - /** - * - * - * @type {State} - */ - function startLookahead(code) { - effects.exit("chunkContent"); - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return factorySpace(effects, prefixed, "linePrefix"); + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; } - /** - * - * - * @type {State} - */ - function prefixed(code) { - if (code === null || markdownLineEnding(code)) { - return nok(code); + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); } + }); +}; - // Always populated by defaults. +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); - const tail = self.events[self.events.length - 1]; - if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4) { - return ok(code); + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port } - return effects.interrupt(self.parser.constructs.flow, nok, ok)(code); + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); } -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/flow.js -/** - * @import { - * InitialConstruct, - * Initializer, - * State, - * TokenizeContext - * } from 'micromark-util-types' - */ + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } -/** @type {InitialConstruct} */ -const flow = { - tokenize: initializeFlow -}; + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); -/** - * @this {TokenizeContext} - * Self. - * @type {Initializer} - * Initializer. - */ -function initializeFlow(effects) { - const self = this; - const initial = effects.attempt( - // Try to parse a blank line. - blankLine, atBlankEnding, - // Try to parse initial flow (essentially, only code). - effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content_content, afterConstruct)), "linePrefix"))); - return initial; - - /** @type {State} */ - function atBlankEnding(code) { - if (code === null) { - effects.consume(code); + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); return; } - effects.enter("lineEndingBlank"); - effects.consume(code); - effects.exit("lineEndingBlank"); - self.currentConstruct = undefined; - return initial; - } - - /** @type {State} */ - function afterConstruct(code) { - if (code === null) { - effects.consume(code); + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); return; } - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - self.currentConstruct = undefined; - return initial; + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); } -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/initialize/text.js -/** - * @import { - * Code, - * InitialConstruct, - * Initializer, - * Resolver, - * State, - * TokenizeContext - * } from 'micromark-util-types' - */ - -const resolver = { - resolveAll: createResolver() -}; -const string = initializeFactory('string'); -const text_text = initializeFactory('text'); -/** - * @param {'string' | 'text'} field - * Field. - * @returns {InitialConstruct} - * Construct. - */ -function initializeFactory(field) { - return { - resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined), - tokenize: initializeText - }; + function onError(cause) { + connectReq.removeAllListeners(); - /** - * @this {TokenizeContext} - * Context. - * @type {Initializer} - */ - function initializeText(effects) { - const self = this; - const constructs = this.parser.constructs[field]; - const text = effects.attempt(constructs, start, notText); - return start; + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; - /** @type {State} */ - function start(code) { - return atBreak(code) ? text(code) : notText(code); - } +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); - /** @type {State} */ - function notText(code) { - if (code === null) { - effects.consume(code); - return; - } - effects.enter("data"); - effects.consume(code); - return data; - } + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; - /** @type {State} */ - function data(code) { - if (atBreak(code)) { - effects.exit("data"); - return text(code); - } +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); - // Data. - effects.consume(code); - return data; - } + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} - /** - * @param {Code} code - * Code. - * @returns {boolean} - * Whether the code is a break. - */ - function atBreak(code) { - if (code === null) { - return true; - } - const list = constructs[code]; - let index = -1; - if (list) { - // Always populated by defaults. - while (++index < list.length) { - const item = list[index]; - if (!item.previous || item.previous.call(self, self.previous)) { - return true; - } - } - } - return false; - } +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; } + return host; // for v0.11 or later } -/** - * @param {Resolver | undefined} [extraResolver] - * Resolver. - * @returns {Resolver} - * Resolver. - */ -function createResolver(extraResolver) { - return resolveAllText; - - /** @type {Resolver} */ - function resolveAllText(events, context) { - let index = -1; - /** @type {number | undefined} */ - let enter; - - // A rather boring computation (to merge adjacent `data` events) which - // improves mm performance by 29%. - while (++index <= events.length) { - if (enter === undefined) { - if (events[index] && events[index][1].type === "data") { - enter = index; - index++; - } - } else if (!events[index] || events[index][1].type !== "data") { - // Don’t do anything if there is one data token. - if (index !== enter + 2) { - events[enter][1].end = events[index - 1][1].end; - events.splice(enter + 2, index - enter - 2); - index = enter + 2; +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; } - enter = undefined; } } - return extraResolver ? extraResolver(events, context) : events; } + return target; } -/** - * A rather ugly set of instructions which again looks at chunks in the input - * stream. - * The reason to do this here is that it is *much* faster to parse in reverse. - * And that we can’t hook into `null` to split the line suffix before an EOF. - * To do: figure out if we can make this into a clean utility, or even in core. - * As it will be useful for GFMs literal autolink extension (and maybe even - * tables?) - * - * @type {Resolver} - */ -function resolveAllLineSuffixes(events, context) { - let eventIndex = 0; // Skip first. - - while (++eventIndex <= events.length) { - if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") { - const data = events[eventIndex - 1][1]; - const chunks = context.sliceStream(data); - let index = chunks.length; - let bufferIndex = -1; - let size = 0; - /** @type {boolean | undefined} */ - let tabs; - while (index--) { - const chunk = chunks[index]; - if (typeof chunk === 'string') { - bufferIndex = chunk.length; - while (chunk.charCodeAt(bufferIndex - 1) === 32) { - size++; - bufferIndex--; - } - if (bufferIndex) break; - bufferIndex = -1; - } - // Number - else if (chunk === -2) { - tabs = true; - size++; - } else if (chunk === -1) { - // Empty - } else { - // Replacement character, exit. - index++; - break; - } - } - // Allow final trailing whitespace. - if (context._contentTypeTextTrailing && eventIndex === events.length) { - size = 0; - } - if (size) { - const token = { - type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing", - start: { - _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex, - _index: data.start._index + index, - line: data.end.line, - column: data.end.column - size, - offset: data.end.offset - size - }, - end: { - ...data.end - } - }; - data.end = { - ...token.start - }; - if (data.start.offset === data.end.offset) { - Object.assign(data, token); - } else { - events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]); - eventIndex += 2; - } - } - eventIndex++; +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); } + console.error.apply(console, args); } - return events; +} else { + debug = function() {}; } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/thematic-break.js -/** - * @import { - * Code, - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ - +exports.debug = debug; // for test -/** @type {Construct} */ -const thematicBreak = { - name: 'thematicBreak', - tokenize: tokenizeThematicBreak -}; +/***/ }), -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeThematicBreak(effects, ok, nok) { - let size = 0; - /** @type {NonNullable<Code>} */ - let marker; - return start; +/***/ 46752: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * Start of thematic break. - * - * ```markdown - * > | *** - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("thematicBreak"); - // To do: parse indent like `markdown-rs`. - return before(code); - } +"use strict"; - /** - * After optional whitespace, at marker. - * - * ```markdown - * > | *** - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - marker = code; - return atBreak(code); - } - /** - * After something, before something else. - * - * ```markdown - * > | *** - * ^ - * ``` - * - * @type {State} - */ - function atBreak(code) { - if (code === marker) { - effects.enter("thematicBreakSequence"); - return sequence(code); - } - if (size >= 3 && (code === null || markdownLineEnding(code))) { - effects.exit("thematicBreak"); - return ok(code); - } - return nok(code); - } +const Client = __nccwpck_require__(86197) +const Dispatcher = __nccwpck_require__(28611) +const errors = __nccwpck_require__(68707) +const Pool = __nccwpck_require__(35076) +const BalancedPool = __nccwpck_require__(81093) +const Agent = __nccwpck_require__(59965) +const util = __nccwpck_require__(3440) +const { InvalidArgumentError } = errors +const api = __nccwpck_require__(56615) +const buildConnector = __nccwpck_require__(59136) +const MockClient = __nccwpck_require__(47365) +const MockAgent = __nccwpck_require__(47501) +const MockPool = __nccwpck_require__(94004) +const mockErrors = __nccwpck_require__(52429) +const ProxyAgent = __nccwpck_require__(22720) +const RetryHandler = __nccwpck_require__(53573) +const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(32581) +const DecoratorHandler = __nccwpck_require__(78840) +const RedirectHandler = __nccwpck_require__(48299) +const createRedirectInterceptor = __nccwpck_require__(64415) - /** - * In sequence. - * - * ```markdown - * > | *** - * ^ - * ``` - * - * @type {State} - */ - function sequence(code) { - if (code === marker) { - effects.consume(code); - size++; - return sequence; - } - effects.exit("thematicBreakSequence"); - return markdownSpace(code) ? factorySpace(effects, atBreak, "whitespace")(code) : atBreak(code); - } +let hasCrypto +try { + __nccwpck_require__(76982) + hasCrypto = true +} catch { + hasCrypto = false } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/list.js -/** - * @import { - * Code, - * Construct, - * Exiter, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ - - +Object.assign(Dispatcher.prototype, api) +module.exports.Dispatcher = Dispatcher +module.exports.Client = Client +module.exports.Pool = Pool +module.exports.BalancedPool = BalancedPool +module.exports.Agent = Agent +module.exports.ProxyAgent = ProxyAgent +module.exports.RetryHandler = RetryHandler +module.exports.DecoratorHandler = DecoratorHandler +module.exports.RedirectHandler = RedirectHandler +module.exports.createRedirectInterceptor = createRedirectInterceptor -/** @type {Construct} */ -const list = { - continuation: { - tokenize: tokenizeListContinuation - }, - exit: tokenizeListEnd, - name: 'list', - tokenize: tokenizeListStart -}; +module.exports.buildConnector = buildConnector +module.exports.errors = errors -/** @type {Construct} */ -const listItemPrefixWhitespaceConstruct = { - partial: true, - tokenize: tokenizeListItemPrefixWhitespace -}; +function makeDispatcher (fn) { + return (url, opts, handler) => { + if (typeof opts === 'function') { + handler = opts + opts = null + } -/** @type {Construct} */ -const indentConstruct = { - partial: true, - tokenize: tokenizeIndent -}; + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url') + } -// To do: `markdown-rs` parses list items on their own and later stitches them -// together. + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeListStart(effects, ok, nok) { - const self = this; - const tail = self.events[self.events.length - 1]; - let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; - let size = 0; - return start; - - /** @type {State} */ - function start(code) { - const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? "listUnordered" : "listOrdered"); - if (kind === "listUnordered" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) { - if (!self.containerState.type) { - self.containerState.type = kind; - effects.enter(kind, { - _container: true - }); + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path') } - if (kind === "listUnordered") { - effects.enter("listItemPrefix"); - return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code); + + let path = opts.path + if (!opts.path.startsWith('/')) { + path = `/${path}` } - if (!self.interrupt || code === 49) { - effects.enter("listItemPrefix"); - effects.enter("listItemValue"); - return inside(code); + + url = new URL(util.parseOrigin(url).origin + path) + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {} } - } - return nok(code); - } - /** @type {State} */ - function inside(code) { - if (asciiDigit(code) && ++size < 10) { - effects.consume(code); - return inside; - } - if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) { - effects.exit("listItemValue"); - return atMarker(code); + url = util.parseURL(url) } - return nok(code); - } - /** - * @type {State} - **/ - function atMarker(code) { - effects.enter("listItemMarker"); - effects.consume(code); - effects.exit("listItemMarker"); - self.containerState.marker = self.containerState.marker || code; - return effects.check(blankLine, - // Can’t be empty when interrupting. - self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix)); - } - - /** @type {State} */ - function onBlank(code) { - self.containerState.initialBlankLine = true; - initialSize++; - return endOfPrefix(code); - } + const { agent, dispatcher = getGlobalDispatcher() } = opts - /** @type {State} */ - function otherPrefix(code) { - if (markdownSpace(code)) { - effects.enter("listItemPrefixWhitespace"); - effects.consume(code); - effects.exit("listItemPrefixWhitespace"); - return endOfPrefix; + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') } - return nok(code); - } - /** @type {State} */ - function endOfPrefix(code) { - self.containerState.size = initialSize + self.sliceSerialize(effects.exit("listItemPrefix"), true).length; - return ok(code); + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, handler) } } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeListContinuation(effects, ok, nok) { - const self = this; - self.containerState._closeFlow = undefined; - return effects.check(blankLine, onBlank, notBlank); +module.exports.setGlobalDispatcher = setGlobalDispatcher +module.exports.getGlobalDispatcher = getGlobalDispatcher - /** @type {State} */ - function onBlank(code) { - self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine; +if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { + let fetchImpl = null + module.exports.fetch = async function fetch (resource) { + if (!fetchImpl) { + fetchImpl = (__nccwpck_require__(12315).fetch) + } - // We have a blank line. - // Still, try to consume at most the items size. - return factorySpace(effects, ok, "listItemIndent", self.containerState.size + 1)(code); - } + try { + return await fetchImpl(...arguments) + } catch (err) { + if (typeof err === 'object') { + Error.captureStackTrace(err, this) + } - /** @type {State} */ - function notBlank(code) { - if (self.containerState.furtherBlankLines || !markdownSpace(code)) { - self.containerState.furtherBlankLines = undefined; - self.containerState.initialBlankLine = undefined; - return notInCurrentItem(code); + throw err } - self.containerState.furtherBlankLines = undefined; - self.containerState.initialBlankLine = undefined; - return effects.attempt(indentConstruct, ok, notInCurrentItem)(code); } + module.exports.Headers = __nccwpck_require__(26349).Headers + module.exports.Response = __nccwpck_require__(48676).Response + module.exports.Request = __nccwpck_require__(25194).Request + module.exports.FormData = __nccwpck_require__(43073).FormData + module.exports.File = __nccwpck_require__(63041).File + module.exports.FileReader = __nccwpck_require__(82160).FileReader - /** @type {State} */ - function notInCurrentItem(code) { - // While we do continue, we signal that the flow should be closed. - self.containerState._closeFlow = true; - // As we’re closing flow, we’re no longer interrupting. - self.interrupt = undefined; - // Always populated by defaults. - - return factorySpace(effects, effects.attempt(list, ok, nok), "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code); - } -} + const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(75628) -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeIndent(effects, ok, nok) { - const self = this; - return factorySpace(effects, afterPrefix, "listItemIndent", self.containerState.size + 1); + module.exports.setGlobalOrigin = setGlobalOrigin + module.exports.getGlobalOrigin = getGlobalOrigin - /** @type {State} */ - function afterPrefix(code) { - const tail = self.events[self.events.length - 1]; - return tail && tail[1].type === "listItemIndent" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code); - } -} + const { CacheStorage } = __nccwpck_require__(44738) + const { kConstruct } = __nccwpck_require__(80296) -/** - * @this {TokenizeContext} - * Context. - * @type {Exiter} - */ -function tokenizeListEnd(effects) { - effects.exit(this.containerState.type); + // Cache & CacheStorage are tightly coupled with fetch. Even if it may run + // in an older version of Node, it doesn't have any use without fetch. + module.exports.caches = new CacheStorage(kConstruct) } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeListItemPrefixWhitespace(effects, ok, nok) { - const self = this; +if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(53168) - // Always populated by defaults. + module.exports.deleteCookie = deleteCookie + module.exports.getCookies = getCookies + module.exports.getSetCookies = getSetCookies + module.exports.setCookie = setCookie - return factorySpace(effects, afterPrefix, "listItemPrefixWhitespace", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1); + const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(94322) - /** @type {State} */ - function afterPrefix(code) { - const tail = self.events[self.events.length - 1]; - return !markdownSpace(code) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok(code) : nok(code); - } + module.exports.parseMIMEType = parseMIMEType + module.exports.serializeAMimeType = serializeAMimeType } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/block-quote.js -/** - * @import { - * Construct, - * Exiter, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ - +if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = __nccwpck_require__(55171) -/** @type {Construct} */ -const blockQuote = { - continuation: { - tokenize: tokenizeBlockQuoteContinuation - }, - exit, - name: 'blockQuote', - tokenize: tokenizeBlockQuoteStart -}; - -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeBlockQuoteStart(effects, ok, nok) { - const self = this; - return start; + module.exports.WebSocket = WebSocket +} - /** - * Start of block quote. - * - * ```markdown - * > | > a - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - if (code === 62) { - const state = self.containerState; - if (!state.open) { - effects.enter("blockQuote", { - _container: true - }); - state.open = true; - } - effects.enter("blockQuotePrefix"); - effects.enter("blockQuoteMarker"); - effects.consume(code); - effects.exit("blockQuoteMarker"); - return after; - } - return nok(code); - } +module.exports.request = makeDispatcher(api.request) +module.exports.stream = makeDispatcher(api.stream) +module.exports.pipeline = makeDispatcher(api.pipeline) +module.exports.connect = makeDispatcher(api.connect) +module.exports.upgrade = makeDispatcher(api.upgrade) - /** - * After `>`, before optional whitespace. - * - * ```markdown - * > | > a - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - if (markdownSpace(code)) { - effects.enter("blockQuotePrefixWhitespace"); - effects.consume(code); - effects.exit("blockQuotePrefixWhitespace"); - effects.exit("blockQuotePrefix"); - return ok; - } - effects.exit("blockQuotePrefix"); - return ok(code); - } -} +module.exports.MockClient = MockClient +module.exports.MockPool = MockPool +module.exports.MockAgent = MockAgent +module.exports.mockErrors = mockErrors -/** - * Start of block quote continuation. - * - * ```markdown - * | > a - * > | > b - * ^ - * ``` - * - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeBlockQuoteContinuation(effects, ok, nok) { - const self = this; - return contStart; - /** - * Start of block quote continuation. - * - * Also used to parse the first block quote opening. - * - * ```markdown - * | > a - * > | > b - * ^ - * ``` - * - * @type {State} - */ - function contStart(code) { - if (markdownSpace(code)) { - // Always populated by defaults. +/***/ }), - return factorySpace(effects, contBefore, "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code); - } - return contBefore(code); - } +/***/ 59965: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * At `>`, after optional whitespace. - * - * Also used to parse the first block quote opening. - * - * ```markdown - * | > a - * > | > b - * ^ - * ``` - * - * @type {State} - */ - function contBefore(code) { - return effects.attempt(blockQuote, ok, nok)(code); - } -} +"use strict"; -/** @type {Exiter} */ -function exit(effects) { - effects.exit("blockQuote"); -} -;// CONCATENATED MODULE: ./node_modules/micromark-factory-destination/index.js -/** - * @import {Effects, State, TokenType} from 'micromark-util-types' - */ +const { InvalidArgumentError } = __nccwpck_require__(68707) +const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = __nccwpck_require__(36443) +const DispatcherBase = __nccwpck_require__(50001) +const Pool = __nccwpck_require__(35076) +const Client = __nccwpck_require__(86197) +const util = __nccwpck_require__(3440) +const createRedirectInterceptor = __nccwpck_require__(64415) +const { WeakRef, FinalizationRegistry } = __nccwpck_require__(13194)() -/** - * Parse destinations. - * - * ###### Examples - * - * ```markdown - * <a> - * <a\>b> - * <a b> - * <a)> - * a - * a\)b - * a(b)c - * a(b) - * ``` - * - * @param {Effects} effects - * Context. - * @param {State} ok - * State switched to when successful. - * @param {State} nok - * State switched to when unsuccessful. - * @param {TokenType} type - * Type for whole (`<a>` or `b`). - * @param {TokenType} literalType - * Type when enclosed (`<a>`). - * @param {TokenType} literalMarkerType - * Type for enclosing (`<` and `>`). - * @param {TokenType} rawType - * Type when not enclosed (`b`). - * @param {TokenType} stringType - * Type for the value (`a` or `b`). - * @param {number | undefined} [max=Infinity] - * Depth of nested parens (inclusive). - * @returns {State} - * Start state. - */ -function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) { - const limit = max || Number.POSITIVE_INFINITY; - let balance = 0; - return start; +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kMaxRedirections = Symbol('maxRedirections') +const kOnDrain = Symbol('onDrain') +const kFactory = Symbol('factory') +const kFinalizer = Symbol('finalizer') +const kOptions = Symbol('options') - /** - * Start of destination. - * - * ```markdown - * > | <aa> - * ^ - * > | aa - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - if (code === 60) { - effects.enter(type); - effects.enter(literalType); - effects.enter(literalMarkerType); - effects.consume(code); - effects.exit(literalMarkerType); - return enclosedBefore; - } - - // ASCII control, space, closing paren. - if (code === null || code === 32 || code === 41 || asciiControl(code)) { - return nok(code); - } - effects.enter(type); - effects.enter(rawType); - effects.enter(stringType); - effects.enter("chunkString", { - contentType: "string" - }); - return raw(code); - } +function defaultFactory (origin, opts) { + return opts && opts.connections === 1 + ? new Client(origin, opts) + : new Pool(origin, opts) +} - /** - * After `<`, at an enclosed destination. - * - * ```markdown - * > | <aa> - * ^ - * ``` - * - * @type {State} - */ - function enclosedBefore(code) { - if (code === 62) { - effects.enter(literalMarkerType); - effects.consume(code); - effects.exit(literalMarkerType); - effects.exit(literalType); - effects.exit(type); - return ok; - } - effects.enter(stringType); - effects.enter("chunkString", { - contentType: "string" - }); - return enclosed(code); - } +class Agent extends DispatcherBase { + constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super() - /** - * In enclosed destination. - * - * ```markdown - * > | <aa> - * ^ - * ``` - * - * @type {State} - */ - function enclosed(code) { - if (code === 62) { - effects.exit("chunkString"); - effects.exit(stringType); - return enclosedBefore(code); - } - if (code === null || code === 60 || markdownLineEnding(code)) { - return nok(code); + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') } - effects.consume(code); - return code === 92 ? enclosedEscape : enclosed; - } - /** - * After `\`, at a special character. - * - * ```markdown - * > | <a\*a> - * ^ - * ``` - * - * @type {State} - */ - function enclosedEscape(code) { - if (code === 60 || code === 62 || code === 92) { - effects.consume(code); - return enclosed; + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') } - return enclosed(code); - } - /** - * In raw destination. - * - * ```markdown - * > | aa - * ^ - * ``` - * - * @type {State} - */ - function raw(code) { - if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) { - effects.exit("chunkString"); - effects.exit(stringType); - effects.exit(rawType); - effects.exit(type); - return ok(code); - } - if (balance < limit && code === 40) { - effects.consume(code); - balance++; - return raw; - } - if (code === 41) { - effects.consume(code); - balance--; - return raw; + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number') } - // ASCII control (but *not* `\0`) and space and `(`. - // Note: in `markdown-rs`, `\0` exists in codes, in `micromark-js` it - // doesn’t. - if (code === null || code === 32 || code === 40 || asciiControl(code)) { - return nok(code); + if (connect && typeof connect !== 'function') { + connect = { ...connect } } - effects.consume(code); - return code === 92 ? rawEscape : raw; - } - /** - * After `\`, at special character. - * - * ```markdown - * > | a\*a - * ^ - * ``` - * - * @type {State} - */ - function rawEscape(code) { - if (code === 40 || code === 41 || code === 92) { - effects.consume(code); - return raw; - } - return raw(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-factory-label/index.js -/** - * @import { - * Effects, - * State, - * TokenizeContext, - * TokenType - * } from 'micromark-util-types' - */ + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })] + this[kOptions] = { ...util.deepClone(options), connect } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kMaxRedirections] = maxRedirections + this[kFactory] = factory + this[kClients] = new Map() + this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => { + const ref = this[kClients].get(key) + if (ref !== undefined && ref.deref() === undefined) { + this[kClients].delete(key) + } + }) -/** - * Parse labels. - * - * > 👉 **Note**: labels in markdown are capped at 999 characters in the string. - * - * ###### Examples - * - * ```markdown - * [a] - * [a - * b] - * [a\]b] - * ``` - * - * @this {TokenizeContext} - * Tokenize context. - * @param {Effects} effects - * Context. - * @param {State} ok - * State switched to when successful. - * @param {State} nok - * State switched to when unsuccessful. - * @param {TokenType} type - * Type of the whole label (`[a]`). - * @param {TokenType} markerType - * Type for the markers (`[` and `]`). - * @param {TokenType} stringType - * Type for the identifier (`a`). - * @returns {State} - * Start state. - */ -function factoryLabel(effects, ok, nok, type, markerType, stringType) { - const self = this; - let size = 0; - /** @type {boolean} */ - let seen; - return start; + const agent = this - /** - * Start of label. - * - * ```markdown - * > | [a] - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter(type); - effects.enter(markerType); - effects.consume(code); - effects.exit(markerType); - effects.enter(stringType); - return atBreak; - } + this[kOnDrain] = (origin, targets) => { + agent.emit('drain', origin, [agent, ...targets]) + } - /** - * In label, at something, before something else. - * - * ```markdown - * > | [a] - * ^ - * ``` - * - * @type {State} - */ - function atBreak(code) { - if (size > 999 || code === null || code === 91 || code === 93 && !seen || - // To do: remove in the future once we’ve switched from - // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`, - // which doesn’t need this. - // Hidden footnotes hook. - /* c8 ignore next 3 */ - code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) { - return nok(code); - } - if (code === 93) { - effects.exit(stringType); - effects.enter(markerType); - effects.consume(code); - effects.exit(markerType); - effects.exit(type); - return ok; - } - - // To do: indent? Link chunks and EOLs together? - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return atBreak; - } - effects.enter("chunkString", { - contentType: "string" - }); - return labelInside(code); - } + this[kOnConnect] = (origin, targets) => { + agent.emit('connect', origin, [agent, ...targets]) + } - /** - * In label, in text. - * - * ```markdown - * > | [a] - * ^ - * ``` - * - * @type {State} - */ - function labelInside(code) { - if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) { - effects.exit("chunkString"); - return atBreak(code); + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit('disconnect', origin, [agent, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit('connectionError', origin, [agent, ...targets], err) } - effects.consume(code); - if (!seen) seen = !markdownSpace(code); - return code === 92 ? labelEscape : labelInside; } - /** - * After `\`, at a special character. - * - * ```markdown - * > | [a\*a] - * ^ - * ``` - * - * @type {State} - */ - function labelEscape(code) { - if (code === 91 || code === 92 || code === 93) { - effects.consume(code); - size++; - return labelInside; + get [kRunning] () { + let ret = 0 + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore next: gc is undeterministic */ + if (client) { + ret += client[kRunning] + } } - return labelInside(code); + return ret } -} -;// CONCATENATED MODULE: ./node_modules/micromark-factory-title/index.js -/** - * @import { - * Code, - * Effects, - * State, - * TokenType - * } from 'micromark-util-types' - */ + [kDispatch] (opts, handler) { + let key + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin) + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') + } + const ref = this[kClients].get(key) -/** - * Parse titles. - * - * ###### Examples - * - * ```markdown - * "a" - * 'b' - * (c) - * "a - * b" - * 'a - * b' - * (a\)b) - * ``` - * - * @param {Effects} effects - * Context. - * @param {State} ok - * State switched to when successful. - * @param {State} nok - * State switched to when unsuccessful. - * @param {TokenType} type - * Type of the whole title (`"a"`, `'b'`, `(c)`). - * @param {TokenType} markerType - * Type for the markers (`"`, `'`, `(`, and `)`). - * @param {TokenType} stringType - * Type for the value (`a`). - * @returns {State} - * Start state. - */ -function factoryTitle(effects, ok, nok, type, markerType, stringType) { - /** @type {NonNullable<Code>} */ - let marker; - return start; + let dispatcher = ref ? ref.deref() : null + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) - /** - * Start of title. - * - * ```markdown - * > | "a" - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - if (code === 34 || code === 39 || code === 40) { - effects.enter(type); - effects.enter(markerType); - effects.consume(code); - effects.exit(markerType); - marker = code === 40 ? 41 : code; - return begin; + this[kClients].set(key, new WeakRef(dispatcher)) + this[kFinalizer].register(dispatcher, key) } - return nok(code); - } - /** - * After opening marker. - * - * This is also used at the closing marker. - * - * ```markdown - * > | "a" - * ^ - * ``` - * - * @type {State} - */ - function begin(code) { - if (code === marker) { - effects.enter(markerType); - effects.consume(code); - effects.exit(markerType); - effects.exit(type); - return ok; - } - effects.enter(stringType); - return atBreak(code); + return dispatcher.dispatch(opts, handler) } - /** - * At something, before something else. - * - * ```markdown - * > | "a" - * ^ - * ``` - * - * @type {State} - */ - function atBreak(code) { - if (code === marker) { - effects.exit(stringType); - return begin(marker); - } - if (code === null) { - return nok(code); + async [kClose] () { + const closePromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + closePromises.push(client.close()) + } } - // Note: blank lines can’t exist in content. - if (markdownLineEnding(code)) { - // To do: use `space_or_tab_eol_with_options`, connect. - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return factorySpace(effects, atBreak, "linePrefix"); - } - effects.enter("chunkString", { - contentType: "string" - }); - return inside(code); + await Promise.all(closePromises) } - /** - * - * - * @type {State} - */ - function inside(code) { - if (code === marker || code === null || markdownLineEnding(code)) { - effects.exit("chunkString"); - return atBreak(code); + async [kDestroy] (err) { + const destroyPromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + destroyPromises.push(client.destroy(err)) + } } - effects.consume(code); - return code === 92 ? escape : inside; - } - /** - * After `\`, at a special character. - * - * ```markdown - * > | "a\*b" - * ^ - * ``` - * - * @type {State} - */ - function escape(code) { - if (code === marker || code === 92) { - effects.consume(code); - return inside; - } - return inside(code); + await Promise.all(destroyPromises) } } -;// CONCATENATED MODULE: ./node_modules/micromark-factory-whitespace/index.js -/** - * @import {Effects, State} from 'micromark-util-types' - */ +module.exports = Agent -/** - * Parse spaces and tabs. - * - * There is no `nok` parameter: - * - * * line endings or spaces in markdown are often optional, in which case this - * factory can be used and `ok` will be switched to whether spaces were found - * or not - * * one line ending or space can be detected with - * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace` - * - * @param {Effects} effects - * Context. - * @param {State} ok - * State switched to when successful. - * @returns {State} - * Start state. - */ -function factoryWhitespace(effects, ok) { - /** @type {boolean} */ - let seen; - return start; +/***/ }), - /** @type {State} */ - function start(code) { - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - seen = true; - return start; - } - if (markdownSpace(code)) { - return factorySpace(effects, start, seen ? "linePrefix" : "lineSuffix")(code); - } - return ok(code); +/***/ 80158: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { addAbortListener } = __nccwpck_require__(3440) +const { RequestAbortedError } = __nccwpck_require__(68707) + +const kListener = Symbol('kListener') +const kSignal = Symbol('kSignal') + +function abort (self) { + if (self.abort) { + self.abort() + } else { + self.onError(new RequestAbortedError()) } } -;// CONCATENATED MODULE: ./node_modules/micromark-util-normalize-identifier/index.js -/** - * Normalize an identifier (as found in references, definitions). - * - * Collapses markdown whitespace, trim, and then lower- and uppercase. - * - * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their - * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different - * uppercase character (U+0398 (`Θ`)). - * So, to get a canonical form, we perform both lower- and uppercase. - * - * Using uppercase last makes sure keys will never interact with default - * prototypal values (such as `constructor`): nothing in the prototype of - * `Object` is uppercase. - * - * @param {string} value - * Identifier to normalize. - * @returns {string} - * Normalized identifier. - */ -function normalizeIdentifier(value) { - return value - // Collapse markdown whitespace. - .replace(/[\t\n\r ]+/g, " ") - // Trim. - .replace(/^ | $/g, '') - // Some characters are considered “uppercase”, but if their lowercase - // counterpart is uppercased will result in a different uppercase - // character. - // Hence, to get that form, we perform both lower- and uppercase. - // Upper case makes sure keys will not interact with default prototypal - // methods: no method is uppercase. - .toLowerCase().toUpperCase(); -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/definition.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ +function addSignal (self, signal) { + self[kSignal] = null + self[kListener] = null + if (!signal) { + return + } + if (signal.aborted) { + abort(self) + return + } + self[kSignal] = signal + self[kListener] = () => { + abort(self) + } + addAbortListener(self[kSignal], self[kListener]) +} +function removeSignal (self) { + if (!self[kSignal]) { + return + } + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]) + } else { + self[kSignal].removeListener('abort', self[kListener]) + } -/** @type {Construct} */ -const definition = { - name: 'definition', - tokenize: tokenizeDefinition -}; + self[kSignal] = null + self[kListener] = null +} -/** @type {Construct} */ -const titleBefore = { - partial: true, - tokenize: tokenizeTitleBefore -}; +module.exports = { + addSignal, + removeSignal +} -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeDefinition(effects, ok, nok) { - const self = this; - /** @type {string} */ - let identifier; - return start; - /** - * At start of a definition. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // Do not interrupt paragraphs (but do follow definitions). - // To do: do `interrupt` the way `markdown-rs` does. - // To do: parse whitespace the way `markdown-rs` does. - effects.enter("definition"); - return before(code); - } +/***/ }), - /** - * After optional whitespace, at `[`. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - // To do: parse whitespace the way `markdown-rs` does. +/***/ 34660: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return factoryLabel.call(self, effects, labelAfter, - // Note: we don’t need to reset the way `markdown-rs` does. - nok, "definitionLabel", "definitionLabelMarker", "definitionLabelString")(code); - } +"use strict"; - /** - * After label. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function labelAfter(code) { - identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)); - if (code === 58) { - effects.enter("definitionMarker"); - effects.consume(code); - effects.exit("definitionMarker"); - return markerAfter; + +const { AsyncResource } = __nccwpck_require__(90290) +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(68707) +const util = __nccwpck_require__(3440) +const { addSignal, removeSignal } = __nccwpck_require__(80158) + +class ConnectHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') } - return nok(code); - } - /** - * After marker. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function markerAfter(code) { - // Note: whitespace is optional. - return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code); - } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } - /** - * Before destination. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function destinationBefore(code) { - return factoryDestination(effects, destinationAfter, - // Note: we don’t need to reset the way `markdown-rs` does. - nok, "definitionDestination", "definitionDestinationLiteral", "definitionDestinationLiteralMarker", "definitionDestinationRaw", "definitionDestinationString")(code); + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_CONNECT') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.callback = callback + this.abort = null + + addSignal(this, signal) } - /** - * After destination. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function destinationAfter(code) { - return effects.attempt(titleBefore, after, after)(code); + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context } - /** - * After definition. - * - * ```markdown - * > | [a]: b - * ^ - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - return markdownSpace(code) ? factorySpace(effects, afterWhitespace, "whitespace")(code) : afterWhitespace(code); + onHeaders () { + throw new SocketError('bad connect', null) } - /** - * After definition, after optional whitespace. - * - * ```markdown - * > | [a]: b - * ^ - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function afterWhitespace(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("definition"); + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + removeSignal(this) - // Note: we don’t care about uniqueness. - // It’s likely that that doesn’t happen very frequently. - // It is more likely that it wastes precious time. - self.parser.defined.push(identifier); + this.callback = null - // To do: `markdown-rs` interrupt. - // // You’d be interrupting. - // tokenizer.interrupt = true - return ok(code); + let headers = rawHeaders + // Indicates is an HTTP2Session + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) } - return nok(code); + + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }) } -} -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeTitleBefore(effects, ok, nok) { - return titleBefore; + onError (err) { + const { callback, opaque } = this - /** - * After destination, at whitespace. - * - * ```markdown - * > | [a]: b - * ^ - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function titleBefore(code) { - return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code); - } + removeSignal(this) - /** - * At title. - * - * ```markdown - * | [a]: b - * > | "c" - * ^ - * ``` - * - * @type {State} - */ - function beforeMarker(code) { - return factoryTitle(effects, titleAfter, nok, "definitionTitle", "definitionTitleMarker", "definitionTitleString")(code); + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } } +} - /** - * After title. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function titleAfter(code) { - return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, "whitespace")(code) : titleAfterOptionalWhitespace(code); +function connect (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) } - /** - * After title, after optional whitespace. - * - * ```markdown - * > | [a]: b "c" - * ^ - * ``` - * - * @type {State} - */ - function titleAfterOptionalWhitespace(code) { - return code === null || markdownLineEnding(code) ? ok(code) : nok(code); + try { + const connectHandler = new ConnectHandler(opts, callback) + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) } } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-indented.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ +module.exports = connect -/** @type {Construct} */ -const codeIndented = { - name: 'codeIndented', - tokenize: tokenizeCodeIndented -}; +/***/ }), -/** @type {Construct} */ -const furtherStart = { - partial: true, - tokenize: tokenizeFurtherStart -}; +/***/ 76862: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeCodeIndented(effects, ok, nok) { - const self = this; - return start; +"use strict"; - /** - * Start of code (indented). - * - * > **Parsing note**: it is not needed to check if this first line is a - * > filled line (that it has a non-whitespace character), because blank lines - * > are parsed already, so we never run into that. - * - * ```markdown - * > | aaa - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // To do: manually check if interrupting like `markdown-rs`. - effects.enter("codeIndented"); - // To do: use an improved `space_or_tab` function like `markdown-rs`, - // so that we can drop the next state. - return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code); - } +const { + Readable, + Duplex, + PassThrough +} = __nccwpck_require__(2203) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(68707) +const util = __nccwpck_require__(3440) +const { AsyncResource } = __nccwpck_require__(90290) +const { addSignal, removeSignal } = __nccwpck_require__(80158) +const assert = __nccwpck_require__(42613) - /** - * At start, after 1 or 4 spaces. - * - * ```markdown - * > | aaa - * ^ - * ``` - * - * @type {State} - */ - function afterPrefix(code) { - const tail = self.events[self.events.length - 1]; - return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code); - } +const kResume = Symbol('resume') - /** - * At a break. - * - * ```markdown - * > | aaa - * ^ ^ - * ``` - * - * @type {State} - */ - function atBreak(code) { - if (code === null) { - return after(code); - } - if (markdownLineEnding(code)) { - return effects.attempt(furtherStart, atBreak, after)(code); - } - effects.enter("codeFlowValue"); - return inside(code); +class PipelineRequest extends Readable { + constructor () { + super({ autoDestroy: true }) + + this[kResume] = null } - /** - * In code content. - * - * ```markdown - * > | aaa - * ^^^^ - * ``` - * - * @type {State} - */ - function inside(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("codeFlowValue"); - return atBreak(code); + _read () { + const { [kResume]: resume } = this + + if (resume) { + this[kResume] = null + resume() } - effects.consume(code); - return inside; } - /** @type {State} */ - function after(code) { - effects.exit("codeIndented"); - // To do: allow interrupting like `markdown-rs`. - // Feel free to interrupt. - // tokenizer.interrupt = false - return ok(code); + _destroy (err, callback) { + this._read() + + callback(err) } } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeFurtherStart(effects, ok, nok) { - const self = this; - return furtherStart; +class PipelineResponse extends Readable { + constructor (resume) { + super({ autoDestroy: true }) + this[kResume] = resume + } - /** - * At eol, trying to parse another indent. - * - * ```markdown - * > | aaa - * ^ - * | bbb - * ``` - * - * @type {State} - */ - function furtherStart(code) { - // To do: improve `lazy` / `pierce` handling. - // If this is a lazy line, it can’t be code. - if (self.parser.lazy[self.now().line]) { - return nok(code); - } - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return furtherStart; - } - - // To do: the code here in `micromark-js` is a bit different from - // `markdown-rs` because there it can attempt spaces. - // We can’t yet. - // - // To do: use an improved `space_or_tab` function like `markdown-rs`, - // so that we can drop the next state. - return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code); + _read () { + this[kResume]() } - /** - * At start, after 1 or 4 spaces. - * - * ```markdown - * > | aaa - * ^ - * ``` - * - * @type {State} - */ - function afterPrefix(code) { - const tail = self.events[self.events.length - 1]; - return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code); + _destroy (err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + callback(err) } } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/heading-atx.js -/** - * @import { - * Construct, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer, - * Token - * } from 'micromark-util-types' - */ +class PipelineHandler extends AsyncResource { + constructor (opts, handler) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler') + } + const { signal, method, opaque, onInfo, responseHeaders } = opts -/** @type {Construct} */ -const headingAtx = { - name: 'headingAtx', - resolve: resolveHeadingAtx, - tokenize: tokenizeHeadingAtx -}; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } -/** @type {Resolver} */ -function resolveHeadingAtx(events, context) { - let contentEnd = events.length - 2; - let contentStart = 3; - /** @type {Token} */ - let content; - /** @type {Token} */ - let text; + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } - // Prefix whitespace, part of the opening. - if (events[contentStart][1].type === "whitespace") { - contentStart += 2; - } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } - // Suffix whitespace, part of the closing. - if (contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace") { - contentEnd -= 2; - } - if (events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace")) { - contentEnd -= contentStart + 1 === contentEnd ? 2 : 4; - } - if (contentEnd > contentStart) { - content = { - type: "atxHeadingText", - start: events[contentStart][1].start, - end: events[contentEnd][1].end - }; - text = { - type: "chunkText", - start: events[contentStart][1].start, - end: events[contentEnd][1].end, - contentType: "text" - }; - splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]); - } - return events; -} + super('UNDICI_PIPELINE') -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeHeadingAtx(effects, ok, nok) { - let size = 0; - return start; + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.handler = handler + this.abort = null + this.context = null + this.onInfo = onInfo || null - /** - * Start of a heading (atx). - * - * ```markdown - * > | ## aa - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // To do: parse indent like `markdown-rs`. - effects.enter("atxHeading"); - return before(code); - } + this.req = new PipelineRequest().on('error', util.nop) - /** - * After optional whitespace, at `#`. - * - * ```markdown - * > | ## aa - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - effects.enter("atxHeadingSequence"); - return sequenceOpen(code); - } + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this - /** - * In opening sequence. - * - * ```markdown - * > | ## aa - * ^ - * ``` - * - * @type {State} - */ - function sequenceOpen(code) { - if (code === 35 && size++ < 6) { - effects.consume(code); - return sequenceOpen; - } + if (body && body.resume) { + body.resume() + } + }, + write: (chunk, encoding, callback) => { + const { req } = this - // Always at least one `#`. - if (code === null || markdownLineEndingOrSpace(code)) { - effects.exit("atxHeadingSequence"); - return atBreak(code); - } - return nok(code); - } + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback() + } else { + req[kResume] = callback + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this - /** - * After something, before something else. - * - * ```markdown - * > | ## aa - * ^ - * ``` - * - * @type {State} - */ - function atBreak(code) { - if (code === 35) { - effects.enter("atxHeadingSequence"); - return sequenceFurther(code); - } - if (code === null || markdownLineEnding(code)) { - effects.exit("atxHeading"); - // To do: interrupt like `markdown-rs`. - // // Feel free to interrupt. - // tokenizer.interrupt = false - return ok(code); - } - if (markdownSpace(code)) { - return factorySpace(effects, atBreak, "whitespace")(code); - } + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError() + } - // To do: generate `data` tokens, add the `text` token later. - // Needs edit map, see: `markdown.rs`. - effects.enter("atxHeadingText"); - return data(code); - } + if (abort && err) { + abort() + } - /** - * In further sequence (after whitespace). - * - * Could be normal “visible” hashes in the heading or a final sequence. - * - * ```markdown - * > | ## aa ## - * ^ - * ``` - * - * @type {State} - */ - function sequenceFurther(code) { - if (code === 35) { - effects.consume(code); - return sequenceFurther; - } - effects.exit("atxHeadingSequence"); - return atBreak(code); - } + util.destroy(body, err) + util.destroy(req, err) + util.destroy(res, err) - /** - * In text. - * - * ```markdown - * > | ## aa - * ^ - * ``` - * - * @type {State} - */ - function data(code) { - if (code === null || code === 35 || markdownLineEndingOrSpace(code)) { - effects.exit("atxHeadingText"); - return atBreak(code); - } - effects.consume(code); - return data; + removeSignal(this) + + callback(err) + } + }).on('prefinish', () => { + const { req } = this + + // Node < 15 does not call _final in same tick. + req.push(null) + }) + + this.res = null + + addSignal(this, signal) } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/setext-underline.js -/** - * @import { - * Code, - * Construct, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + onConnect (abort, context) { + const { ret, res } = this + + assert(!res, 'pipeline cannot be retried') + if (ret.destroyed) { + throw new RequestAbortedError() + } -/** @type {Construct} */ -const setextUnderline = { - name: 'setextUnderline', - resolveTo: resolveToSetextUnderline, - tokenize: tokenizeSetextUnderline -}; + this.abort = abort + this.context = context + } -/** @type {Resolver} */ -function resolveToSetextUnderline(events, context) { - // To do: resolve like `markdown-rs`. - let index = events.length; - /** @type {number | undefined} */ - let content; - /** @type {number | undefined} */ - let text; - /** @type {number | undefined} */ - let definition; - - // Find the opening of the content. - // It’ll always exist: we don’t tokenize if it isn’t there. - while (index--) { - if (events[index][0] === 'enter') { - if (events[index][1].type === "content") { - content = index; - break; - } - if (events[index][1].type === "paragraph") { - text = index; + onHeaders (statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this + + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.onInfo({ statusCode, headers }) } + return } - // Exit - else { - if (events[index][1].type === "content") { - // Remove the content end (if needed we’ll add it later) - events.splice(index, 1); - } - if (!definition && events[index][1].type === "definition") { - definition = index; - } + + this.res = new PipelineResponse(resume) + + let body + try { + this.handler = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }) + } catch (err) { + this.res.on('error', util.nop) + throw err } - } - const heading = { - type: "setextHeading", - start: { - ...events[content][1].start - }, - end: { - ...events[events.length - 1][1].end + + if (!body || typeof body.on !== 'function') { + throw new InvalidReturnValueError('expected Readable') } - }; - // Change the paragraph to setext heading text. - events[text][1].type = "setextHeadingText"; + body + .on('data', (chunk) => { + const { ret, body } = this - // If we have definitions in the content, we’ll keep on having content, - // but we need move it. - if (definition) { - events.splice(text, 0, ['enter', heading, context]); - events.splice(definition + 1, 0, ['exit', events[content][1], context]); - events[content][1].end = { - ...events[definition][1].end - }; - } else { - events[content][1] = heading; - } + if (!ret.push(chunk) && body.pause) { + body.pause() + } + }) + .on('error', (err) => { + const { ret } = this - // Add the heading exit at the end. - events.push(['exit', heading, context]); - return events; -} + util.destroy(ret, err) + }) + .on('end', () => { + const { ret } = this -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeSetextUnderline(effects, ok, nok) { - const self = this; - /** @type {NonNullable<Code>} */ - let marker; - return start; + ret.push(null) + }) + .on('close', () => { + const { ret } = this - /** - * At start of heading (setext) underline. - * - * ```markdown - * | aa - * > | == - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - let index = self.events.length; - /** @type {boolean | undefined} */ - let paragraph; - // Find an opening. - while (index--) { - // Skip enter/exit of line ending, line prefix, and content. - // We can now either have a definition or a paragraph. - if (self.events[index][1].type !== "lineEnding" && self.events[index][1].type !== "linePrefix" && self.events[index][1].type !== "content") { - paragraph = self.events[index][1].type === "paragraph"; - break; - } - } + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()) + } + }) - // To do: handle lazy/pierce like `markdown-rs`. - // To do: parse indent like `markdown-rs`. - if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) { - effects.enter("setextHeadingLine"); - marker = code; - return before(code); - } - return nok(code); + this.body = body } - /** - * After optional whitespace, at `-` or `=`. - * - * ```markdown - * | aa - * > | == - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - effects.enter("setextHeadingLineSequence"); - return inside(code); + onData (chunk) { + const { res } = this + return res.push(chunk) } - /** - * In sequence. - * - * ```markdown - * | aa - * > | == - * ^ - * ``` - * - * @type {State} - */ - function inside(code) { - if (code === marker) { - effects.consume(code); - return inside; - } - effects.exit("setextHeadingLineSequence"); - return markdownSpace(code) ? factorySpace(effects, after, "lineSuffix")(code) : after(code); + onComplete (trailers) { + const { res } = this + res.push(null) } - /** - * After sequence, after optional whitespace. - * - * ```markdown - * | aa - * > | == - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("setextHeadingLine"); - return ok(code); - } - return nok(code); + onError (err) { + const { ret } = this + this.handler = null + util.destroy(ret, err) } } -;// CONCATENATED MODULE: ./node_modules/micromark-util-html-tag-name/index.js -/** - * List of lowercase HTML “block” tag names. - * - * The list, when parsing HTML (flow), results in more relaxed rules (condition - * 6). - * Because they are known blocks, the HTML-like syntax doesn’t have to be - * strictly parsed. - * For tag names not in this list, a more strict algorithm (condition 7) is used - * to detect whether the HTML-like syntax is seen as HTML (flow) or not. - * - * This is copied from: - * <https://spec.commonmark.org/0.30/#html-blocks>. - * - * > 👉 **Note**: `search` was added in `CommonMark@0.31`. - */ -const htmlBlockNames = [ - 'address', - 'article', - 'aside', - 'base', - 'basefont', - 'blockquote', - 'body', - 'caption', - 'center', - 'col', - 'colgroup', - 'dd', - 'details', - 'dialog', - 'dir', - 'div', - 'dl', - 'dt', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'frame', - 'frameset', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'head', - 'header', - 'hr', - 'html', - 'iframe', - 'legend', - 'li', - 'link', - 'main', - 'menu', - 'menuitem', - 'nav', - 'noframes', - 'ol', - 'optgroup', - 'option', - 'p', - 'param', - 'search', - 'section', - 'summary', - 'table', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'title', - 'tr', - 'track', - 'ul' -] -/** - * List of lowercase HTML “raw” tag names. - * - * The list, when parsing HTML (flow), results in HTML that can include lines - * without exiting, until a closing tag also in this list is found (condition - * 1). - * - * This module is copied from: - * <https://spec.commonmark.org/0.30/#html-blocks>. - * - * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`. - */ -const htmlRawNames = ['pre', 'script', 'style', 'textarea'] +function pipeline (opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler) + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler) + return pipelineHandler.ret + } catch (err) { + return new PassThrough().destroy(err) + } +} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/html-flow.js -/** - * @import { - * Code, - * Construct, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ +module.exports = pipeline +/***/ }), +/***/ 14043: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -/** @type {Construct} */ -const htmlFlow = { - concrete: true, - name: 'htmlFlow', - resolveTo: resolveToHtmlFlow, - tokenize: tokenizeHtmlFlow -}; -/** @type {Construct} */ -const blankLineBefore = { - partial: true, - tokenize: tokenizeBlankLineBefore -}; -const nonLazyContinuationStart = { - partial: true, - tokenize: tokenizeNonLazyContinuationStart -}; +const Readable = __nccwpck_require__(49927) +const { + InvalidArgumentError, + RequestAbortedError +} = __nccwpck_require__(68707) +const util = __nccwpck_require__(3440) +const { getResolveErrorBodyCallback } = __nccwpck_require__(87655) +const { AsyncResource } = __nccwpck_require__(90290) +const { addSignal, removeSignal } = __nccwpck_require__(80158) -/** @type {Resolver} */ -function resolveToHtmlFlow(events) { - let index = events.length; - while (index--) { - if (events[index][0] === 'enter' && events[index][1].type === "htmlFlow") { - break; +class RequestHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') } - } - if (index > 1 && events[index - 2][1].type === "linePrefix") { - // Add the prefix start to the HTML token. - events[index][1].start = events[index - 2][1].start; - // Add the prefix start to the HTML line token. - events[index + 1][1].start = events[index - 2][1].start; - // Remove the line prefix. - events.splice(index - 2, 2); - } - return events; -} -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeHtmlFlow(effects, ok, nok) { - const self = this; - /** @type {number} */ - let marker; - /** @type {boolean} */ - let closingTag; - /** @type {string} */ - let buffer; - /** @type {number} */ - let index; - /** @type {Code} */ - let markerB; - return start; + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts - /** - * Start of HTML (flow). - * - * ```markdown - * > | <x /> - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // To do: parse indent like `markdown-rs`. - return before(code); - } + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } - /** - * At `<`, after optional whitespace. - * - * ```markdown - * > | <x /> - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - effects.enter("htmlFlow"); - effects.enter("htmlFlowData"); - effects.consume(code); - return open; - } + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark') + } - /** - * After `<`, at tag name or other stuff. - * - * ```markdown - * > | <x /> - * ^ - * > | <!doctype> - * ^ - * > | <!--xxx--> - * ^ - * ``` - * - * @type {State} - */ - function open(code) { - if (code === 33) { - effects.consume(code); - return declarationOpen; - } - if (code === 47) { - effects.consume(code); - closingTag = true; - return tagCloseStart; - } - if (code === 63) { - effects.consume(code); - marker = 3; - // To do: - // tokenizer.concrete = true - // To do: use `markdown-rs` style interrupt. - // While we’re in an instruction instead of a declaration, we’re on a `?` - // right now, so we do need to search for `>`, similar to declarations. - return self.interrupt ? ok : continuationDeclarationInside; - } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } - // ASCII alphabetical. - if (asciiAlpha(code)) { - // Always the case. - effects.consume(code); - buffer = String.fromCharCode(code); - return tagName; - } - return nok(code); - } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } - /** - * After `<!`, at declaration, comment, or CDATA. - * - * ```markdown - * > | <!doctype> - * ^ - * > | <!--xxx--> - * ^ - * > | <![CDATA[>&<]]> - * ^ - * ``` - * - * @type {State} - */ - function declarationOpen(code) { - if (code === 45) { - effects.consume(code); - marker = 2; - return commentOpenInside; - } - if (code === 91) { - effects.consume(code); - marker = 5; - index = 0; - return cdataOpenInside; - } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } - // ASCII alphabetical. - if (asciiAlpha(code)) { - effects.consume(code); - marker = 4; - // // Do not form containers. - // tokenizer.concrete = true - return self.interrupt ? ok : continuationDeclarationInside; + super('UNDICI_REQUEST') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err } - return nok(code); - } - /** - * After `<!-`, inside a comment, at another `-`. - * - * ```markdown - * > | <!--xxx--> - * ^ - * ``` - * - * @type {State} - */ - function commentOpenInside(code) { - if (code === 45) { - effects.consume(code); - // // Do not form containers. - // tokenizer.concrete = true - return self.interrupt ? ok : continuationDeclarationInside; - } - return nok(code); - } + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.res = null + this.abort = null + this.body = body + this.trailers = {} + this.context = null + this.onInfo = onInfo || null + this.throwOnError = throwOnError + this.highWaterMark = highWaterMark - /** - * After `<![`, inside CDATA, expecting `CDATA[`. - * - * ```markdown - * > | <![CDATA[>&<]]> - * ^^^^^^ - * ``` - * - * @type {State} - */ - function cdataOpenInside(code) { - const value = "CDATA["; - if (code === value.charCodeAt(index++)) { - effects.consume(code); - if (index === value.length) { - // // Do not form containers. - // tokenizer.concrete = true - return self.interrupt ? ok : continuation; - } - return cdataOpenInside; + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) } - return nok(code); + + addSignal(this, signal) } - /** - * After `</`, in closing tag, at tag name. - * - * ```markdown - * > | </x> - * ^ - * ``` - * - * @type {State} - */ - function tagCloseStart(code) { - if (asciiAlpha(code)) { - // Always the case. - effects.consume(code); - buffer = String.fromCharCode(code); - return tagName; + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() } - return nok(code); + + this.abort = abort + this.context = context } - /** - * In tag name. - * - * ```markdown - * > | <ab> - * ^^ - * > | </ab> - * ^^ - * ``` - * - * @type {State} - */ - function tagName(code) { - if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { - const slash = code === 47; - const name = buffer.toLowerCase(); - if (!slash && !closingTag && htmlRawNames.includes(name)) { - marker = 1; - // // Do not form containers. - // tokenizer.concrete = true - return self.interrupt ? ok(code) : continuation(code); - } - if (htmlBlockNames.includes(buffer.toLowerCase())) { - marker = 6; - if (slash) { - effects.consume(code); - return basicSelfClosing; - } + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) - // // Do not form containers. - // tokenizer.concrete = true - return self.interrupt ? ok(code) : continuation(code); + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) } - marker = 7; - // Do not support complete HTML when interrupting. - return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code); + return } - // ASCII alphanumerical and `-`. - if (code === 45 || asciiAlphanumeric(code)) { - effects.consume(code); - buffer += String.fromCharCode(code); - return tagName; - } - return nok(code); - } + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + const body = new Readable({ resume, abort, contentType, highWaterMark }) - /** - * After closing slash of a basic tag name. - * - * ```markdown - * > | <div/> - * ^ - * ``` - * - * @type {State} - */ - function basicSelfClosing(code) { - if (code === 62) { - effects.consume(code); - // // Do not form containers. - // tokenizer.concrete = true - return self.interrupt ? ok : continuation; + this.callback = null + this.res = body + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body, contentType, statusCode, statusMessage, headers } + ) + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }) + } } - return nok(code); } - /** - * After closing slash of a complete tag name. - * - * ```markdown - * > | <x/> - * ^ - * ``` - * - * @type {State} - */ - function completeClosingTagAfter(code) { - if (markdownSpace(code)) { - effects.consume(code); - return completeClosingTagAfter; - } - return completeEnd(code); + onData (chunk) { + const { res } = this + return res.push(chunk) } - /** - * At an attribute name. - * - * At first, this state is used after a complete tag name, after whitespace, - * where it expects optional attributes or the end of the tag. - * It is also reused after attributes, when expecting more optional - * attributes. - * - * ```markdown - * > | <a /> - * ^ - * > | <a :b> - * ^ - * > | <a _b> - * ^ - * > | <a b> - * ^ - * > | <a > - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeNameBefore(code) { - if (code === 47) { - effects.consume(code); - return completeEnd; - } + onComplete (trailers) { + const { res } = this - // ASCII alphanumerical and `:` and `_`. - if (code === 58 || code === 95 || asciiAlpha(code)) { - effects.consume(code); - return completeAttributeName; - } - if (markdownSpace(code)) { - effects.consume(code); - return completeAttributeNameBefore; - } - return completeEnd(code); - } + removeSignal(this) - /** - * In attribute name. - * - * ```markdown - * > | <a :b> - * ^ - * > | <a _b> - * ^ - * > | <a b> - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeName(code) { - // ASCII alphanumerical and `-`, `.`, `:`, and `_`. - if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) { - effects.consume(code); - return completeAttributeName; - } - return completeAttributeNameAfter(code); - } + util.parseHeaders(trailers, this.trailers) - /** - * After attribute name, at an optional initializer, the end of the tag, or - * whitespace. - * - * ```markdown - * > | <a b> - * ^ - * > | <a b=c> - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeNameAfter(code) { - if (code === 61) { - effects.consume(code); - return completeAttributeValueBefore; - } - if (markdownSpace(code)) { - effects.consume(code); - return completeAttributeNameAfter; - } - return completeAttributeNameBefore(code); + res.push(null) } - /** - * Before unquoted, double quoted, or single quoted attribute value, allowing - * whitespace. - * - * ```markdown - * > | <a b=c> - * ^ - * > | <a b="c"> - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeValueBefore(code) { - if (code === null || code === 60 || code === 61 || code === 62 || code === 96) { - return nok(code); - } - if (code === 34 || code === 39) { - effects.consume(code); - markerB = code; - return completeAttributeValueQuoted; - } - if (markdownSpace(code)) { - effects.consume(code); - return completeAttributeValueBefore; - } - return completeAttributeValueUnquoted(code); - } + onError (err) { + const { res, callback, body, opaque } = this - /** - * In double or single quoted attribute value. - * - * ```markdown - * > | <a b="c"> - * ^ - * > | <a b='c'> - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeValueQuoted(code) { - if (code === markerB) { - effects.consume(code); - markerB = null; - return completeAttributeValueQuotedAfter; - } - if (code === null || markdownLineEnding(code)) { - return nok(code); - } - effects.consume(code); - return completeAttributeValueQuoted; - } + removeSignal(this) - /** - * In unquoted attribute value. - * - * ```markdown - * > | <a b=c> - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeValueUnquoted(code) { - if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) { - return completeAttributeNameAfter(code); + if (callback) { + // TODO: Does this need queueMicrotask? + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) } - effects.consume(code); - return completeAttributeValueUnquoted; - } - /** - * After double or single quoted attribute value, before whitespace or the - * end of the tag. - * - * ```markdown - * > | <a b="c"> - * ^ - * ``` - * - * @type {State} - */ - function completeAttributeValueQuotedAfter(code) { - if (code === 47 || code === 62 || markdownSpace(code)) { - return completeAttributeNameBefore(code); + if (res) { + this.res = null + // Ensure all queued handlers are invoked before destroying res. + queueMicrotask(() => { + util.destroy(res, err) + }) } - return nok(code); - } - /** - * In certain circumstances of a complete tag where only an `>` is allowed. - * - * ```markdown - * > | <a b="c"> - * ^ - * ``` - * - * @type {State} - */ - function completeEnd(code) { - if (code === 62) { - effects.consume(code); - return completeAfter; + if (body) { + this.body = null + util.destroy(body, err) } - return nok(code); } +} - /** - * After `>` in a complete tag. - * - * ```markdown - * > | <x> - * ^ - * ``` - * - * @type {State} - */ - function completeAfter(code) { - if (code === null || markdownLineEnding(code)) { - // // Do not form containers. - // tokenizer.concrete = true - return continuation(code); - } - if (markdownSpace(code)) { - effects.consume(code); - return completeAfter; - } - return nok(code); +function request (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + request.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) } - /** - * In continuation of any HTML kind. - * - * ```markdown - * > | <!--xxx--> - * ^ - * ``` - * - * @type {State} - */ - function continuation(code) { - if (code === 45 && marker === 2) { - effects.consume(code); - return continuationCommentInside; - } - if (code === 60 && marker === 1) { - effects.consume(code); - return continuationRawTagOpen; - } - if (code === 62 && marker === 4) { - effects.consume(code); - return continuationClose; - } - if (code === 63 && marker === 3) { - effects.consume(code); - return continuationDeclarationInside; - } - if (code === 93 && marker === 5) { - effects.consume(code); - return continuationCdataInside; - } - if (markdownLineEnding(code) && (marker === 6 || marker === 7)) { - effects.exit("htmlFlowData"); - return effects.check(blankLineBefore, continuationAfter, continuationStart)(code); - } - if (code === null || markdownLineEnding(code)) { - effects.exit("htmlFlowData"); - return continuationStart(code); + try { + this.dispatch(opts, new RequestHandler(opts, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err } - effects.consume(code); - return continuation; + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) } +} - /** - * In continuation, at eol. - * - * ```markdown - * > | <x> - * ^ - * | asd - * ``` - * - * @type {State} - */ - function continuationStart(code) { - return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code); - } +module.exports = request +module.exports.RequestHandler = RequestHandler - /** - * In continuation, at eol, before non-lazy content. - * - * ```markdown - * > | <x> - * ^ - * | asd - * ``` - * - * @type {State} - */ - function continuationStartNonLazy(code) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return continuationBefore; - } - /** - * In continuation, before non-lazy content. - * - * ```markdown - * | <x> - * > | asd - * ^ - * ``` - * - * @type {State} - */ - function continuationBefore(code) { - if (code === null || markdownLineEnding(code)) { - return continuationStart(code); - } - effects.enter("htmlFlowData"); - return continuation(code); - } +/***/ }), - /** - * In comment continuation, after one `-`, expecting another. - * - * ```markdown - * > | <!--xxx--> - * ^ - * ``` - * - * @type {State} - */ - function continuationCommentInside(code) { - if (code === 45) { - effects.consume(code); - return continuationDeclarationInside; - } - return continuation(code); - } +/***/ 3560: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * In raw continuation, after `<`, at `/`. - * - * ```markdown - * > | <script>console.log(1)</script> - * ^ - * ``` - * - * @type {State} - */ - function continuationRawTagOpen(code) { - if (code === 47) { - effects.consume(code); - buffer = ''; - return continuationRawEndTag; +"use strict"; + + +const { finished, PassThrough } = __nccwpck_require__(2203) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(68707) +const util = __nccwpck_require__(3440) +const { getResolveErrorBodyCallback } = __nccwpck_require__(87655) +const { AsyncResource } = __nccwpck_require__(90290) +const { addSignal, removeSignal } = __nccwpck_require__(80158) + +class StreamHandler extends AsyncResource { + constructor (opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') } - return continuation(code); - } - /** - * In raw continuation, after `</`, in a raw tag name. - * - * ```markdown - * > | <script>console.log(1)</script> - * ^^^^^^ - * ``` - * - * @type {State} - */ - function continuationRawEndTag(code) { - if (code === 62) { - const name = buffer.toLowerCase(); - if (htmlRawNames.includes(name)) { - effects.consume(code); - return continuationClose; + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') } - return continuation(code); - } - if (asciiAlpha(code) && buffer.length < 8) { - // Always the case. - effects.consume(code); - buffer += String.fromCharCode(code); - return continuationRawEndTag; - } - return continuation(code); - } - /** - * In cdata continuation, after `]`, expecting `]>`. - * - * ```markdown - * > | <![CDATA[>&<]]> - * ^ - * ``` - * - * @type {State} - */ - function continuationCdataInside(code) { - if (code === 93) { - effects.consume(code); - return continuationDeclarationInside; - } - return continuation(code); - } + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory') + } - /** - * In declaration or instruction continuation, at `>`. - * - * ```markdown - * > | <!--> - * ^ - * > | <?> - * ^ - * > | <!q> - * ^ - * > | <!--ab--> - * ^ - * > | <![CDATA[>&<]]> - * ^ - * ``` - * - * @type {State} - */ - function continuationDeclarationInside(code) { - if (code === 62) { - effects.consume(code); - return continuationClose; - } + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } - // More dashes. - if (code === 45 && marker === 2) { - effects.consume(code); - return continuationDeclarationInside; - } - return continuation(code); - } + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } - /** - * In closed continuation: everything we get until the eol/eof is part of it. - * - * ```markdown - * > | <!doctype> - * ^ - * ``` - * - * @type {State} - */ - function continuationClose(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("htmlFlowData"); - return continuationAfter(code); - } - effects.consume(code); - return continuationClose; - } + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } - /** - * Done. - * - * ```markdown - * > | <!doctype> - * ^ - * ``` - * - * @type {State} - */ - function continuationAfter(code) { - effects.exit("htmlFlow"); - // // Feel free to interrupt. - // tokenizer.interrupt = false - // // No longer concrete. - // tokenizer.concrete = false - return ok(code); - } -} + super('UNDICI_STREAM') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeNonLazyContinuationStart(effects, ok, nok) { - const self = this; - return start; + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.factory = factory + this.callback = callback + this.res = null + this.abort = null + this.context = null + this.trailers = null + this.body = body + this.onInfo = onInfo || null + this.throwOnError = throwOnError || false - /** - * At eol, before continuation. - * - * ```markdown - * > | * ```js - * ^ - * | b - * ``` - * - * @type {State} - */ - function start(code) { - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return after; + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) } - return nok(code); - } - /** - * A continuation. - * - * ```markdown - * | * ```js - * > | b - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - return self.parser.lazy[self.now().line] ? nok(code) : ok(code); + addSignal(this, signal) } -} -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeBlankLineBefore(effects, ok, nok) { - return start; + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } - /** - * Before eol, expecting blank line. - * - * ```markdown - * > | <div> - * ^ - * | - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return effects.attempt(blankLine, ok, nok); + this.abort = abort + this.context = context } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-fenced.js -/** - * @import { - * Code, - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) -/** @type {Construct} */ -const nonLazyContinuation = { - partial: true, - tokenize: tokenizeNonLazyContinuation -}; + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } -/** @type {Construct} */ -const codeFenced = { - concrete: true, - name: 'codeFenced', - tokenize: tokenizeCodeFenced -}; + this.factory = null -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeCodeFenced(effects, ok, nok) { - const self = this; - /** @type {Construct} */ - const closeStart = { - partial: true, - tokenize: tokenizeCloseStart - }; - let initialPrefix = 0; - let sizeOpen = 0; - /** @type {NonNullable<Code>} */ - let marker; - return start; + let res - /** - * Start of code. - * - * ```markdown - * > | ~~~js - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function start(code) { - // To do: parse whitespace like `markdown-rs`. - return beforeSequenceOpen(code); - } + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + res = new PassThrough() - /** - * In opening fence, after prefix, at sequence. - * - * ```markdown - * > | ~~~js - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function beforeSequenceOpen(code) { - const tail = self.events[self.events.length - 1]; - initialPrefix = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0; - marker = code; - effects.enter("codeFenced"); - effects.enter("codeFencedFence"); - effects.enter("codeFencedFenceSequence"); - return sequenceOpen(code); - } + this.callback = null + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ) + } else { + if (factory === null) { + return + } - /** - * In opening fence sequence. - * - * ```markdown - * > | ~~~js - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function sequenceOpen(code) { - if (code === marker) { - sizeOpen++; - effects.consume(code); - return sequenceOpen; - } - if (sizeOpen < 3) { - return nok(code); - } - effects.exit("codeFencedFenceSequence"); - return markdownSpace(code) ? factorySpace(effects, infoBefore, "whitespace")(code) : infoBefore(code); - } + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }) - /** - * In opening fence, after the sequence (and optional whitespace), before info. - * - * ```markdown - * > | ~~~js - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function infoBefore(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("codeFencedFence"); - return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); - } - effects.enter("codeFencedFenceInfo"); - effects.enter("chunkString", { - contentType: "string" - }); - return info(code); - } + if ( + !res || + typeof res.write !== 'function' || + typeof res.end !== 'function' || + typeof res.on !== 'function' + ) { + throw new InvalidReturnValueError('expected Writable') + } - /** - * In info. - * - * ```markdown - * > | ~~~js - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function info(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("chunkString"); - effects.exit("codeFencedFenceInfo"); - return infoBefore(code); - } - if (markdownSpace(code)) { - effects.exit("chunkString"); - effects.exit("codeFencedFenceInfo"); - return factorySpace(effects, metaBefore, "whitespace")(code); - } - if (code === 96 && code === marker) { - return nok(code); - } - effects.consume(code); - return info; - } + // TODO: Avoid finished. It registers an unnecessary amount of listeners. + finished(res, { readable: false }, (err) => { + const { callback, res, opaque, trailers, abort } = this - /** - * In opening fence, after info and whitespace, before meta. - * - * ```markdown - * > | ~~~js eval - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function metaBefore(code) { - if (code === null || markdownLineEnding(code)) { - return infoBefore(code); - } - effects.enter("codeFencedFenceMeta"); - effects.enter("chunkString", { - contentType: "string" - }); - return meta(code); - } + this.res = null + if (err || !res.readable) { + util.destroy(res, err) + } - /** - * In meta. - * - * ```markdown - * > | ~~~js eval - * ^ - * | alert(1) - * | ~~~ - * ``` - * - * @type {State} - */ - function meta(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("chunkString"); - effects.exit("codeFencedFenceMeta"); - return infoBefore(code); - } - if (code === 96 && code === marker) { - return nok(code); + this.callback = null + this.runInAsyncScope(callback, null, err || null, { opaque, trailers }) + + if (err) { + abort() + } + }) } - effects.consume(code); - return meta; - } - /** - * At eol/eof in code, before a non-lazy closing fence or content. - * - * ```markdown - * > | ~~~js - * ^ - * > | alert(1) - * ^ - * | ~~~ - * ``` - * - * @type {State} - */ - function atNonLazyBreak(code) { - return effects.attempt(closeStart, after, contentBefore)(code); - } + res.on('drain', resume) - /** - * Before code content, not a closing fence, at eol. - * - * ```markdown - * | ~~~js - * > | alert(1) - * ^ - * | ~~~ - * ``` - * - * @type {State} - */ - function contentBefore(code) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return contentStart; - } + this.res = res - /** - * Before code content, not a closing fence. - * - * ```markdown - * | ~~~js - * > | alert(1) - * ^ - * | ~~~ - * ``` - * - * @type {State} - */ - function contentStart(code) { - return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, "linePrefix", initialPrefix + 1)(code) : beforeContentChunk(code); - } + const needDrain = res.writableNeedDrain !== undefined + ? res.writableNeedDrain + : res._writableState && res._writableState.needDrain - /** - * Before code content, after optional prefix. - * - * ```markdown - * | ~~~js - * > | alert(1) - * ^ - * | ~~~ - * ``` - * - * @type {State} - */ - function beforeContentChunk(code) { - if (code === null || markdownLineEnding(code)) { - return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code); - } - effects.enter("codeFlowValue"); - return contentChunk(code); + return needDrain !== true } - /** - * In code content. - * - * ```markdown - * | ~~~js - * > | alert(1) - * ^^^^^^^^ - * | ~~~ - * ``` - * - * @type {State} - */ - function contentChunk(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("codeFlowValue"); - return beforeContentChunk(code); - } - effects.consume(code); - return contentChunk; - } + onData (chunk) { + const { res } = this - /** - * After code. - * - * ```markdown - * | ~~~js - * | alert(1) - * > | ~~~ - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - effects.exit("codeFenced"); - return ok(code); + return res ? res.write(chunk) : true } - /** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ - function tokenizeCloseStart(effects, ok, nok) { - let size = 0; - return startBefore; + onComplete (trailers) { + const { res } = this - /** - * - * - * @type {State} - */ - function startBefore(code) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return start; + removeSignal(this) + + if (!res) { + return } - /** - * Before closing fence, at optional whitespace. - * - * ```markdown - * | ~~~js - * | alert(1) - * > | ~~~ - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // Always populated by defaults. + this.trailers = util.parseHeaders(trailers) - // To do: `enter` here or in next state? - effects.enter("codeFencedFence"); - return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code); - } + res.end() + } - /** - * In closing fence, after optional whitespace, at sequence. - * - * ```markdown - * | ~~~js - * | alert(1) - * > | ~~~ - * ^ - * ``` - * - * @type {State} - */ - function beforeSequenceClose(code) { - if (code === marker) { - effects.enter("codeFencedFenceSequence"); - return sequenceClose(code); - } - return nok(code); - } + onError (err) { + const { res, callback, opaque, body } = this - /** - * In closing fence sequence. - * - * ```markdown - * | ~~~js - * | alert(1) - * > | ~~~ - * ^ - * ``` - * - * @type {State} - */ - function sequenceClose(code) { - if (code === marker) { - size++; - effects.consume(code); - return sequenceClose; - } - if (size >= sizeOpen) { - effects.exit("codeFencedFenceSequence"); - return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, "whitespace")(code) : sequenceCloseAfter(code); - } - return nok(code); + removeSignal(this) + + this.factory = null + + if (res) { + this.res = null + util.destroy(res, err) + } else if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) } - /** - * After closing fence sequence, after optional whitespace. - * - * ```markdown - * | ~~~js - * | alert(1) - * > | ~~~ - * ^ - * ``` - * - * @type {State} - */ - function sequenceCloseAfter(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit("codeFencedFence"); - return ok(code); - } - return nok(code); + if (body) { + this.body = null + util.destroy(body, err) } } } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeNonLazyContinuation(effects, ok, nok) { - const self = this; - return start; - - /** - * - * - * @type {State} - */ - function start(code) { - if (code === null) { - return nok(code); - } - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return lineStart; +function stream (opts, factory, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) } - /** - * - * - * @type {State} - */ - function lineStart(code) { - return self.parser.lazy[self.now().line] ? nok(code) : ok(code); + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) } } -;// CONCATENATED MODULE: ./node_modules/character-entities/index.js -/** - * Map of named character references. - * - * @type {Record<string, string>} - */ -const characterEntities = { - AElig: 'Æ', - AMP: '&', - Aacute: 'Á', - Abreve: 'Ă', - Acirc: 'Â', - Acy: 'А', - Afr: '𝔄', - Agrave: 'À', - Alpha: 'Α', - Amacr: 'Ā', - And: '⩓', - Aogon: 'Ą', - Aopf: '𝔸', - ApplyFunction: '⁡', - Aring: 'Å', - Ascr: '𝒜', - Assign: '≔', - Atilde: 'Ã', - Auml: 'Ä', - Backslash: '∖', - Barv: '⫧', - Barwed: '⌆', - Bcy: 'Б', - Because: '∵', - Bernoullis: 'ℬ', - Beta: 'Β', - Bfr: '𝔅', - Bopf: '𝔹', - Breve: '˘', - Bscr: 'ℬ', - Bumpeq: '≎', - CHcy: 'Ч', - COPY: '©', - Cacute: 'Ć', - Cap: '⋒', - CapitalDifferentialD: 'ⅅ', - Cayleys: 'ℭ', - Ccaron: 'Č', - Ccedil: 'Ç', - Ccirc: 'Ĉ', - Cconint: '∰', - Cdot: 'Ċ', - Cedilla: '¸', - CenterDot: '·', - Cfr: 'ℭ', - Chi: 'Χ', - CircleDot: '⊙', - CircleMinus: '⊖', - CirclePlus: '⊕', - CircleTimes: '⊗', - ClockwiseContourIntegral: '∲', - CloseCurlyDoubleQuote: '”', - CloseCurlyQuote: '’', - Colon: '∷', - Colone: '⩴', - Congruent: '≡', - Conint: '∯', - ContourIntegral: '∮', - Copf: 'ℂ', - Coproduct: '∐', - CounterClockwiseContourIntegral: '∳', - Cross: '⨯', - Cscr: '𝒞', - Cup: '⋓', - CupCap: '≍', - DD: 'ⅅ', - DDotrahd: '⤑', - DJcy: 'Ђ', - DScy: 'Ѕ', - DZcy: 'Џ', - Dagger: '‡', - Darr: '↡', - Dashv: '⫤', - Dcaron: 'Ď', - Dcy: 'Д', - Del: '∇', - Delta: 'Δ', - Dfr: '𝔇', - DiacriticalAcute: '´', - DiacriticalDot: '˙', - DiacriticalDoubleAcute: '˝', - DiacriticalGrave: '`', - DiacriticalTilde: '˜', - Diamond: '⋄', - DifferentialD: 'ⅆ', - Dopf: '𝔻', - Dot: '¨', - DotDot: '⃜', - DotEqual: '≐', - DoubleContourIntegral: '∯', - DoubleDot: '¨', - DoubleDownArrow: '⇓', - DoubleLeftArrow: '⇐', - DoubleLeftRightArrow: '⇔', - DoubleLeftTee: '⫤', - DoubleLongLeftArrow: '⟸', - DoubleLongLeftRightArrow: '⟺', - DoubleLongRightArrow: '⟹', - DoubleRightArrow: '⇒', - DoubleRightTee: '⊨', - DoubleUpArrow: '⇑', - DoubleUpDownArrow: '⇕', - DoubleVerticalBar: '∥', - DownArrow: '↓', - DownArrowBar: '⤓', - DownArrowUpArrow: '⇵', - DownBreve: '̑', - DownLeftRightVector: '⥐', - DownLeftTeeVector: '⥞', - DownLeftVector: '↽', - DownLeftVectorBar: '⥖', - DownRightTeeVector: '⥟', - DownRightVector: '⇁', - DownRightVectorBar: '⥗', - DownTee: '⊤', - DownTeeArrow: '↧', - Downarrow: '⇓', - Dscr: '𝒟', - Dstrok: 'Đ', - ENG: 'Ŋ', - ETH: 'Ð', - Eacute: 'É', - Ecaron: 'Ě', - Ecirc: 'Ê', - Ecy: 'Э', - Edot: 'Ė', - Efr: '𝔈', - Egrave: 'È', - Element: '∈', - Emacr: 'Ē', - EmptySmallSquare: '◻', - EmptyVerySmallSquare: '▫', - Eogon: 'Ę', - Eopf: '𝔼', - Epsilon: 'Ε', - Equal: '⩵', - EqualTilde: '≂', - Equilibrium: '⇌', - Escr: 'ℰ', - Esim: '⩳', - Eta: 'Η', - Euml: 'Ë', - Exists: '∃', - ExponentialE: 'ⅇ', - Fcy: 'Ф', - Ffr: '𝔉', - FilledSmallSquare: '◼', - FilledVerySmallSquare: '▪', - Fopf: '𝔽', - ForAll: '∀', - Fouriertrf: 'ℱ', - Fscr: 'ℱ', - GJcy: 'Ѓ', - GT: '>', - Gamma: 'Γ', - Gammad: 'Ϝ', - Gbreve: 'Ğ', - Gcedil: 'Ģ', - Gcirc: 'Ĝ', - Gcy: 'Г', - Gdot: 'Ġ', - Gfr: '𝔊', - Gg: '⋙', - Gopf: '𝔾', - GreaterEqual: '≥', - GreaterEqualLess: '⋛', - GreaterFullEqual: '≧', - GreaterGreater: '⪢', - GreaterLess: '≷', - GreaterSlantEqual: '⩾', - GreaterTilde: '≳', - Gscr: '𝒢', - Gt: '≫', - HARDcy: 'Ъ', - Hacek: 'ˇ', - Hat: '^', - Hcirc: 'Ĥ', - Hfr: 'ℌ', - HilbertSpace: 'ℋ', - Hopf: 'ℍ', - HorizontalLine: '─', - Hscr: 'ℋ', - Hstrok: 'Ħ', - HumpDownHump: '≎', - HumpEqual: '≏', - IEcy: 'Е', - IJlig: 'IJ', - IOcy: 'Ё', - Iacute: 'Í', - Icirc: 'Î', - Icy: 'И', - Idot: 'İ', - Ifr: 'ℑ', - Igrave: 'Ì', - Im: 'ℑ', - Imacr: 'Ī', - ImaginaryI: 'ⅈ', - Implies: '⇒', - Int: '∬', - Integral: '∫', - Intersection: '⋂', - InvisibleComma: '⁣', - InvisibleTimes: '⁢', - Iogon: 'Į', - Iopf: '𝕀', - Iota: 'Ι', - Iscr: 'ℐ', - Itilde: 'Ĩ', - Iukcy: 'І', - Iuml: 'Ï', - Jcirc: 'Ĵ', - Jcy: 'Й', - Jfr: '𝔍', - Jopf: '𝕁', - Jscr: '𝒥', - Jsercy: 'Ј', - Jukcy: 'Є', - KHcy: 'Х', - KJcy: 'Ќ', - Kappa: 'Κ', - Kcedil: 'Ķ', - Kcy: 'К', - Kfr: '𝔎', - Kopf: '𝕂', - Kscr: '𝒦', - LJcy: 'Љ', - LT: '<', - Lacute: 'Ĺ', - Lambda: 'Λ', - Lang: '⟪', - Laplacetrf: 'ℒ', - Larr: '↞', - Lcaron: 'Ľ', - Lcedil: 'Ļ', - Lcy: 'Л', - LeftAngleBracket: '⟨', - LeftArrow: '←', - LeftArrowBar: '⇤', - LeftArrowRightArrow: '⇆', - LeftCeiling: '⌈', - LeftDoubleBracket: '⟦', - LeftDownTeeVector: '⥡', - LeftDownVector: '⇃', - LeftDownVectorBar: '⥙', - LeftFloor: '⌊', - LeftRightArrow: '↔', - LeftRightVector: '⥎', - LeftTee: '⊣', - LeftTeeArrow: '↤', - LeftTeeVector: '⥚', - LeftTriangle: '⊲', - LeftTriangleBar: '⧏', - LeftTriangleEqual: '⊴', - LeftUpDownVector: '⥑', - LeftUpTeeVector: '⥠', - LeftUpVector: '↿', - LeftUpVectorBar: '⥘', - LeftVector: '↼', - LeftVectorBar: '⥒', - Leftarrow: '⇐', - Leftrightarrow: '⇔', - LessEqualGreater: '⋚', - LessFullEqual: '≦', - LessGreater: '≶', - LessLess: '⪡', - LessSlantEqual: '⩽', - LessTilde: '≲', - Lfr: '𝔏', - Ll: '⋘', - Lleftarrow: '⇚', - Lmidot: 'Ŀ', - LongLeftArrow: '⟵', - LongLeftRightArrow: '⟷', - LongRightArrow: '⟶', - Longleftarrow: '⟸', - Longleftrightarrow: '⟺', - Longrightarrow: '⟹', - Lopf: '𝕃', - LowerLeftArrow: '↙', - LowerRightArrow: '↘', - Lscr: 'ℒ', - Lsh: '↰', - Lstrok: 'Ł', - Lt: '≪', - Map: '⤅', - Mcy: 'М', - MediumSpace: ' ', - Mellintrf: 'ℳ', - Mfr: '𝔐', - MinusPlus: '∓', - Mopf: '𝕄', - Mscr: 'ℳ', - Mu: 'Μ', - NJcy: 'Њ', - Nacute: 'Ń', - Ncaron: 'Ň', - Ncedil: 'Ņ', - Ncy: 'Н', - NegativeMediumSpace: '​', - NegativeThickSpace: '​', - NegativeThinSpace: '​', - NegativeVeryThinSpace: '​', - NestedGreaterGreater: '≫', - NestedLessLess: '≪', - NewLine: '\n', - Nfr: '𝔑', - NoBreak: '⁠', - NonBreakingSpace: ' ', - Nopf: 'ℕ', - Not: '⫬', - NotCongruent: '≢', - NotCupCap: '≭', - NotDoubleVerticalBar: '∦', - NotElement: '∉', - NotEqual: '≠', - NotEqualTilde: '≂̸', - NotExists: '∄', - NotGreater: '≯', - NotGreaterEqual: '≱', - NotGreaterFullEqual: '≧̸', - NotGreaterGreater: '≫̸', - NotGreaterLess: '≹', - NotGreaterSlantEqual: '⩾̸', - NotGreaterTilde: '≵', - NotHumpDownHump: '≎̸', - NotHumpEqual: '≏̸', - NotLeftTriangle: '⋪', - NotLeftTriangleBar: '⧏̸', - NotLeftTriangleEqual: '⋬', - NotLess: '≮', - NotLessEqual: '≰', - NotLessGreater: '≸', - NotLessLess: '≪̸', - NotLessSlantEqual: '⩽̸', - NotLessTilde: '≴', - NotNestedGreaterGreater: '⪢̸', - NotNestedLessLess: '⪡̸', - NotPrecedes: '⊀', - NotPrecedesEqual: '⪯̸', - NotPrecedesSlantEqual: '⋠', - NotReverseElement: '∌', - NotRightTriangle: '⋫', - NotRightTriangleBar: '⧐̸', - NotRightTriangleEqual: '⋭', - NotSquareSubset: '⊏̸', - NotSquareSubsetEqual: '⋢', - NotSquareSuperset: '⊐̸', - NotSquareSupersetEqual: '⋣', - NotSubset: '⊂⃒', - NotSubsetEqual: '⊈', - NotSucceeds: '⊁', - NotSucceedsEqual: '⪰̸', - NotSucceedsSlantEqual: '⋡', - NotSucceedsTilde: '≿̸', - NotSuperset: '⊃⃒', - NotSupersetEqual: '⊉', - NotTilde: '≁', - NotTildeEqual: '≄', - NotTildeFullEqual: '≇', - NotTildeTilde: '≉', - NotVerticalBar: '∤', - Nscr: '𝒩', - Ntilde: 'Ñ', - Nu: 'Ν', - OElig: 'Œ', - Oacute: 'Ó', - Ocirc: 'Ô', - Ocy: 'О', - Odblac: 'Ő', - Ofr: '𝔒', - Ograve: 'Ò', - Omacr: 'Ō', - Omega: 'Ω', - Omicron: 'Ο', - Oopf: '𝕆', - OpenCurlyDoubleQuote: '“', - OpenCurlyQuote: '‘', - Or: '⩔', - Oscr: '𝒪', - Oslash: 'Ø', - Otilde: 'Õ', - Otimes: '⨷', - Ouml: 'Ö', - OverBar: '‾', - OverBrace: '⏞', - OverBracket: '⎴', - OverParenthesis: '⏜', - PartialD: '∂', - Pcy: 'П', - Pfr: '𝔓', - Phi: 'Φ', - Pi: 'Π', - PlusMinus: '±', - Poincareplane: 'ℌ', - Popf: 'ℙ', - Pr: '⪻', - Precedes: '≺', - PrecedesEqual: '⪯', - PrecedesSlantEqual: '≼', - PrecedesTilde: '≾', - Prime: '″', - Product: '∏', - Proportion: '∷', - Proportional: '∝', - Pscr: '𝒫', - Psi: 'Ψ', - QUOT: '"', - Qfr: '𝔔', - Qopf: 'ℚ', - Qscr: '𝒬', - RBarr: '⤐', - REG: '®', - Racute: 'Ŕ', - Rang: '⟫', - Rarr: '↠', - Rarrtl: '⤖', - Rcaron: 'Ř', - Rcedil: 'Ŗ', - Rcy: 'Р', - Re: 'ℜ', - ReverseElement: '∋', - ReverseEquilibrium: '⇋', - ReverseUpEquilibrium: '⥯', - Rfr: 'ℜ', - Rho: 'Ρ', - RightAngleBracket: '⟩', - RightArrow: '→', - RightArrowBar: '⇥', - RightArrowLeftArrow: '⇄', - RightCeiling: '⌉', - RightDoubleBracket: '⟧', - RightDownTeeVector: '⥝', - RightDownVector: '⇂', - RightDownVectorBar: '⥕', - RightFloor: '⌋', - RightTee: '⊢', - RightTeeArrow: '↦', - RightTeeVector: '⥛', - RightTriangle: '⊳', - RightTriangleBar: '⧐', - RightTriangleEqual: '⊵', - RightUpDownVector: '⥏', - RightUpTeeVector: '⥜', - RightUpVector: '↾', - RightUpVectorBar: '⥔', - RightVector: '⇀', - RightVectorBar: '⥓', - Rightarrow: '⇒', - Ropf: 'ℝ', - RoundImplies: '⥰', - Rrightarrow: '⇛', - Rscr: 'ℛ', - Rsh: '↱', - RuleDelayed: '⧴', - SHCHcy: 'Щ', - SHcy: 'Ш', - SOFTcy: 'Ь', - Sacute: 'Ś', - Sc: '⪼', - Scaron: 'Š', - Scedil: 'Ş', - Scirc: 'Ŝ', - Scy: 'С', - Sfr: '𝔖', - ShortDownArrow: '↓', - ShortLeftArrow: '←', - ShortRightArrow: '→', - ShortUpArrow: '↑', - Sigma: 'Σ', - SmallCircle: '∘', - Sopf: '𝕊', - Sqrt: '√', - Square: '□', - SquareIntersection: '⊓', - SquareSubset: '⊏', - SquareSubsetEqual: '⊑', - SquareSuperset: '⊐', - SquareSupersetEqual: '⊒', - SquareUnion: '⊔', - Sscr: '𝒮', - Star: '⋆', - Sub: '⋐', - Subset: '⋐', - SubsetEqual: '⊆', - Succeeds: '≻', - SucceedsEqual: '⪰', - SucceedsSlantEqual: '≽', - SucceedsTilde: '≿', - SuchThat: '∋', - Sum: '∑', - Sup: '⋑', - Superset: '⊃', - SupersetEqual: '⊇', - Supset: '⋑', - THORN: 'Þ', - TRADE: '™', - TSHcy: 'Ћ', - TScy: 'Ц', - Tab: '\t', - Tau: 'Τ', - Tcaron: 'Ť', - Tcedil: 'Ţ', - Tcy: 'Т', - Tfr: '𝔗', - Therefore: '∴', - Theta: 'Θ', - ThickSpace: '  ', - ThinSpace: ' ', - Tilde: '∼', - TildeEqual: '≃', - TildeFullEqual: '≅', - TildeTilde: '≈', - Topf: '𝕋', - TripleDot: '⃛', - Tscr: '𝒯', - Tstrok: 'Ŧ', - Uacute: 'Ú', - Uarr: '↟', - Uarrocir: '⥉', - Ubrcy: 'Ў', - Ubreve: 'Ŭ', - Ucirc: 'Û', - Ucy: 'У', - Udblac: 'Ű', - Ufr: '𝔘', - Ugrave: 'Ù', - Umacr: 'Ū', - UnderBar: '_', - UnderBrace: '⏟', - UnderBracket: '⎵', - UnderParenthesis: '⏝', - Union: '⋃', - UnionPlus: '⊎', - Uogon: 'Ų', - Uopf: '𝕌', - UpArrow: '↑', - UpArrowBar: '⤒', - UpArrowDownArrow: '⇅', - UpDownArrow: '↕', - UpEquilibrium: '⥮', - UpTee: '⊥', - UpTeeArrow: '↥', - Uparrow: '⇑', - Updownarrow: '⇕', - UpperLeftArrow: '↖', - UpperRightArrow: '↗', - Upsi: 'ϒ', - Upsilon: 'Υ', - Uring: 'Ů', - Uscr: '𝒰', - Utilde: 'Ũ', - Uuml: 'Ü', - VDash: '⊫', - Vbar: '⫫', - Vcy: 'В', - Vdash: '⊩', - Vdashl: '⫦', - Vee: '⋁', - Verbar: '‖', - Vert: '‖', - VerticalBar: '∣', - VerticalLine: '|', - VerticalSeparator: '❘', - VerticalTilde: '≀', - VeryThinSpace: ' ', - Vfr: '𝔙', - Vopf: '𝕍', - Vscr: '𝒱', - Vvdash: '⊪', - Wcirc: 'Ŵ', - Wedge: '⋀', - Wfr: '𝔚', - Wopf: '𝕎', - Wscr: '𝒲', - Xfr: '𝔛', - Xi: 'Ξ', - Xopf: '𝕏', - Xscr: '𝒳', - YAcy: 'Я', - YIcy: 'Ї', - YUcy: 'Ю', - Yacute: 'Ý', - Ycirc: 'Ŷ', - Ycy: 'Ы', - Yfr: '𝔜', - Yopf: '𝕐', - Yscr: '𝒴', - Yuml: 'Ÿ', - ZHcy: 'Ж', - Zacute: 'Ź', - Zcaron: 'Ž', - Zcy: 'З', - Zdot: 'Ż', - ZeroWidthSpace: '​', - Zeta: 'Ζ', - Zfr: 'ℨ', - Zopf: 'ℤ', - Zscr: '𝒵', - aacute: 'á', - abreve: 'ă', - ac: '∾', - acE: '∾̳', - acd: '∿', - acirc: 'â', - acute: '´', - acy: 'а', - aelig: 'æ', - af: '⁡', - afr: '𝔞', - agrave: 'à', - alefsym: 'ℵ', - aleph: 'ℵ', - alpha: 'α', - amacr: 'ā', - amalg: '⨿', - amp: '&', - and: '∧', - andand: '⩕', - andd: '⩜', - andslope: '⩘', - andv: '⩚', - ang: '∠', - ange: '⦤', - angle: '∠', - angmsd: '∡', - angmsdaa: '⦨', - angmsdab: '⦩', - angmsdac: '⦪', - angmsdad: '⦫', - angmsdae: '⦬', - angmsdaf: '⦭', - angmsdag: '⦮', - angmsdah: '⦯', - angrt: '∟', - angrtvb: '⊾', - angrtvbd: '⦝', - angsph: '∢', - angst: 'Å', - angzarr: '⍼', - aogon: 'ą', - aopf: '𝕒', - ap: '≈', - apE: '⩰', - apacir: '⩯', - ape: '≊', - apid: '≋', - apos: "'", - approx: '≈', - approxeq: '≊', - aring: 'å', - ascr: '𝒶', - ast: '*', - asymp: '≈', - asympeq: '≍', - atilde: 'ã', - auml: 'ä', - awconint: '∳', - awint: '⨑', - bNot: '⫭', - backcong: '≌', - backepsilon: '϶', - backprime: '‵', - backsim: '∽', - backsimeq: '⋍', - barvee: '⊽', - barwed: '⌅', - barwedge: '⌅', - bbrk: '⎵', - bbrktbrk: '⎶', - bcong: '≌', - bcy: 'б', - bdquo: '„', - becaus: '∵', - because: '∵', - bemptyv: '⦰', - bepsi: '϶', - bernou: 'ℬ', - beta: 'β', - beth: 'ℶ', - between: '≬', - bfr: '𝔟', - bigcap: '⋂', - bigcirc: '◯', - bigcup: '⋃', - bigodot: '⨀', - bigoplus: '⨁', - bigotimes: '⨂', - bigsqcup: '⨆', - bigstar: '★', - bigtriangledown: '▽', - bigtriangleup: '△', - biguplus: '⨄', - bigvee: '⋁', - bigwedge: '⋀', - bkarow: '⤍', - blacklozenge: '⧫', - blacksquare: '▪', - blacktriangle: '▴', - blacktriangledown: '▾', - blacktriangleleft: '◂', - blacktriangleright: '▸', - blank: '␣', - blk12: '▒', - blk14: '░', - blk34: '▓', - block: '█', - bne: '=⃥', - bnequiv: '≡⃥', - bnot: '⌐', - bopf: '𝕓', - bot: '⊥', - bottom: '⊥', - bowtie: '⋈', - boxDL: '╗', - boxDR: '╔', - boxDl: '╖', - boxDr: '╓', - boxH: '═', - boxHD: '╦', - boxHU: '╩', - boxHd: '╤', - boxHu: '╧', - boxUL: '╝', - boxUR: '╚', - boxUl: '╜', - boxUr: '╙', - boxV: '║', - boxVH: '╬', - boxVL: '╣', - boxVR: '╠', - boxVh: '╫', - boxVl: '╢', - boxVr: '╟', - boxbox: '⧉', - boxdL: '╕', - boxdR: '╒', - boxdl: '┐', - boxdr: '┌', - boxh: '─', - boxhD: '╥', - boxhU: '╨', - boxhd: '┬', - boxhu: '┴', - boxminus: '⊟', - boxplus: '⊞', - boxtimes: '⊠', - boxuL: '╛', - boxuR: '╘', - boxul: '┘', - boxur: '└', - boxv: '│', - boxvH: '╪', - boxvL: '╡', - boxvR: '╞', - boxvh: '┼', - boxvl: '┤', - boxvr: '├', - bprime: '‵', - breve: '˘', - brvbar: '¦', - bscr: '𝒷', - bsemi: '⁏', - bsim: '∽', - bsime: '⋍', - bsol: '\\', - bsolb: '⧅', - bsolhsub: '⟈', - bull: '•', - bullet: '•', - bump: '≎', - bumpE: '⪮', - bumpe: '≏', - bumpeq: '≏', - cacute: 'ć', - cap: '∩', - capand: '⩄', - capbrcup: '⩉', - capcap: '⩋', - capcup: '⩇', - capdot: '⩀', - caps: '∩︀', - caret: '⁁', - caron: 'ˇ', - ccaps: '⩍', - ccaron: 'č', - ccedil: 'ç', - ccirc: 'ĉ', - ccups: '⩌', - ccupssm: '⩐', - cdot: 'ċ', - cedil: '¸', - cemptyv: '⦲', - cent: '¢', - centerdot: '·', - cfr: '𝔠', - chcy: 'ч', - check: '✓', - checkmark: '✓', - chi: 'χ', - cir: '○', - cirE: '⧃', - circ: 'ˆ', - circeq: '≗', - circlearrowleft: '↺', - circlearrowright: '↻', - circledR: '®', - circledS: 'Ⓢ', - circledast: '⊛', - circledcirc: '⊚', - circleddash: '⊝', - cire: '≗', - cirfnint: '⨐', - cirmid: '⫯', - cirscir: '⧂', - clubs: '♣', - clubsuit: '♣', - colon: ':', - colone: '≔', - coloneq: '≔', - comma: ',', - commat: '@', - comp: '∁', - compfn: '∘', - complement: '∁', - complexes: 'ℂ', - cong: '≅', - congdot: '⩭', - conint: '∮', - copf: '𝕔', - coprod: '∐', - copy: '©', - copysr: '℗', - crarr: '↵', - cross: '✗', - cscr: '𝒸', - csub: '⫏', - csube: '⫑', - csup: '⫐', - csupe: '⫒', - ctdot: '⋯', - cudarrl: '⤸', - cudarrr: '⤵', - cuepr: '⋞', - cuesc: '⋟', - cularr: '↶', - cularrp: '⤽', - cup: '∪', - cupbrcap: '⩈', - cupcap: '⩆', - cupcup: '⩊', - cupdot: '⊍', - cupor: '⩅', - cups: '∪︀', - curarr: '↷', - curarrm: '⤼', - curlyeqprec: '⋞', - curlyeqsucc: '⋟', - curlyvee: '⋎', - curlywedge: '⋏', - curren: '¤', - curvearrowleft: '↶', - curvearrowright: '↷', - cuvee: '⋎', - cuwed: '⋏', - cwconint: '∲', - cwint: '∱', - cylcty: '⌭', - dArr: '⇓', - dHar: '⥥', - dagger: '†', - daleth: 'ℸ', - darr: '↓', - dash: '‐', - dashv: '⊣', - dbkarow: '⤏', - dblac: '˝', - dcaron: 'ď', - dcy: 'д', - dd: 'ⅆ', - ddagger: '‡', - ddarr: '⇊', - ddotseq: '⩷', - deg: '°', - delta: 'δ', - demptyv: '⦱', - dfisht: '⥿', - dfr: '𝔡', - dharl: '⇃', - dharr: '⇂', - diam: '⋄', - diamond: '⋄', - diamondsuit: '♦', - diams: '♦', - die: '¨', - digamma: 'ϝ', - disin: '⋲', - div: '÷', - divide: '÷', - divideontimes: '⋇', - divonx: '⋇', - djcy: 'ђ', - dlcorn: '⌞', - dlcrop: '⌍', - dollar: '$', - dopf: '𝕕', - dot: '˙', - doteq: '≐', - doteqdot: '≑', - dotminus: '∸', - dotplus: '∔', - dotsquare: '⊡', - doublebarwedge: '⌆', - downarrow: '↓', - downdownarrows: '⇊', - downharpoonleft: '⇃', - downharpoonright: '⇂', - drbkarow: '⤐', - drcorn: '⌟', - drcrop: '⌌', - dscr: '𝒹', - dscy: 'ѕ', - dsol: '⧶', - dstrok: 'đ', - dtdot: '⋱', - dtri: '▿', - dtrif: '▾', - duarr: '⇵', - duhar: '⥯', - dwangle: '⦦', - dzcy: 'џ', - dzigrarr: '⟿', - eDDot: '⩷', - eDot: '≑', - eacute: 'é', - easter: '⩮', - ecaron: 'ě', - ecir: '≖', - ecirc: 'ê', - ecolon: '≕', - ecy: 'э', - edot: 'ė', - ee: 'ⅇ', - efDot: '≒', - efr: '𝔢', - eg: '⪚', - egrave: 'è', - egs: '⪖', - egsdot: '⪘', - el: '⪙', - elinters: '⏧', - ell: 'ℓ', - els: '⪕', - elsdot: '⪗', - emacr: 'ē', - empty: '∅', - emptyset: '∅', - emptyv: '∅', - emsp13: ' ', - emsp14: ' ', - emsp: ' ', - eng: 'ŋ', - ensp: ' ', - eogon: 'ę', - eopf: '𝕖', - epar: '⋕', - eparsl: '⧣', - eplus: '⩱', - epsi: 'ε', - epsilon: 'ε', - epsiv: 'ϵ', - eqcirc: '≖', - eqcolon: '≕', - eqsim: '≂', - eqslantgtr: '⪖', - eqslantless: '⪕', - equals: '=', - equest: '≟', - equiv: '≡', - equivDD: '⩸', - eqvparsl: '⧥', - erDot: '≓', - erarr: '⥱', - escr: 'ℯ', - esdot: '≐', - esim: '≂', - eta: 'η', - eth: 'ð', - euml: 'ë', - euro: '€', - excl: '!', - exist: '∃', - expectation: 'ℰ', - exponentiale: 'ⅇ', - fallingdotseq: '≒', - fcy: 'ф', - female: '♀', - ffilig: 'ffi', - fflig: 'ff', - ffllig: 'ffl', - ffr: '𝔣', - filig: 'fi', - fjlig: 'fj', - flat: '♭', - fllig: 'fl', - fltns: '▱', - fnof: 'ƒ', - fopf: '𝕗', - forall: '∀', - fork: '⋔', - forkv: '⫙', - fpartint: '⨍', - frac12: '½', - frac13: '⅓', - frac14: '¼', - frac15: '⅕', - frac16: '⅙', - frac18: '⅛', - frac23: '⅔', - frac25: '⅖', - frac34: '¾', - frac35: '⅗', - frac38: '⅜', - frac45: '⅘', - frac56: '⅚', - frac58: '⅝', - frac78: '⅞', - frasl: '⁄', - frown: '⌢', - fscr: '𝒻', - gE: '≧', - gEl: '⪌', - gacute: 'ǵ', - gamma: 'γ', - gammad: 'ϝ', - gap: '⪆', - gbreve: 'ğ', - gcirc: 'ĝ', - gcy: 'г', - gdot: 'ġ', - ge: '≥', - gel: '⋛', - geq: '≥', - geqq: '≧', - geqslant: '⩾', - ges: '⩾', - gescc: '⪩', - gesdot: '⪀', - gesdoto: '⪂', - gesdotol: '⪄', - gesl: '⋛︀', - gesles: '⪔', - gfr: '𝔤', - gg: '≫', - ggg: '⋙', - gimel: 'ℷ', - gjcy: 'ѓ', - gl: '≷', - glE: '⪒', - gla: '⪥', - glj: '⪤', - gnE: '≩', - gnap: '⪊', - gnapprox: '⪊', - gne: '⪈', - gneq: '⪈', - gneqq: '≩', - gnsim: '⋧', - gopf: '𝕘', - grave: '`', - gscr: 'ℊ', - gsim: '≳', - gsime: '⪎', - gsiml: '⪐', - gt: '>', - gtcc: '⪧', - gtcir: '⩺', - gtdot: '⋗', - gtlPar: '⦕', - gtquest: '⩼', - gtrapprox: '⪆', - gtrarr: '⥸', - gtrdot: '⋗', - gtreqless: '⋛', - gtreqqless: '⪌', - gtrless: '≷', - gtrsim: '≳', - gvertneqq: '≩︀', - gvnE: '≩︀', - hArr: '⇔', - hairsp: ' ', - half: '½', - hamilt: 'ℋ', - hardcy: 'ъ', - harr: '↔', - harrcir: '⥈', - harrw: '↭', - hbar: 'ℏ', - hcirc: 'ĥ', - hearts: '♥', - heartsuit: '♥', - hellip: '…', - hercon: '⊹', - hfr: '𝔥', - hksearow: '⤥', - hkswarow: '⤦', - hoarr: '⇿', - homtht: '∻', - hookleftarrow: '↩', - hookrightarrow: '↪', - hopf: '𝕙', - horbar: '―', - hscr: '𝒽', - hslash: 'ℏ', - hstrok: 'ħ', - hybull: '⁃', - hyphen: '‐', - iacute: 'í', - ic: '⁣', - icirc: 'î', - icy: 'и', - iecy: 'е', - iexcl: '¡', - iff: '⇔', - ifr: '𝔦', - igrave: 'ì', - ii: 'ⅈ', - iiiint: '⨌', - iiint: '∭', - iinfin: '⧜', - iiota: '℩', - ijlig: 'ij', - imacr: 'ī', - image: 'ℑ', - imagline: 'ℐ', - imagpart: 'ℑ', - imath: 'ı', - imof: '⊷', - imped: 'Ƶ', - in: '∈', - incare: '℅', - infin: '∞', - infintie: '⧝', - inodot: 'ı', - int: '∫', - intcal: '⊺', - integers: 'ℤ', - intercal: '⊺', - intlarhk: '⨗', - intprod: '⨼', - iocy: 'ё', - iogon: 'į', - iopf: '𝕚', - iota: 'ι', - iprod: '⨼', - iquest: '¿', - iscr: '𝒾', - isin: '∈', - isinE: '⋹', - isindot: '⋵', - isins: '⋴', - isinsv: '⋳', - isinv: '∈', - it: '⁢', - itilde: 'ĩ', - iukcy: 'і', - iuml: 'ï', - jcirc: 'ĵ', - jcy: 'й', - jfr: '𝔧', - jmath: 'ȷ', - jopf: '𝕛', - jscr: '𝒿', - jsercy: 'ј', - jukcy: 'є', - kappa: 'κ', - kappav: 'ϰ', - kcedil: 'ķ', - kcy: 'к', - kfr: '𝔨', - kgreen: 'ĸ', - khcy: 'х', - kjcy: 'ќ', - kopf: '𝕜', - kscr: '𝓀', - lAarr: '⇚', - lArr: '⇐', - lAtail: '⤛', - lBarr: '⤎', - lE: '≦', - lEg: '⪋', - lHar: '⥢', - lacute: 'ĺ', - laemptyv: '⦴', - lagran: 'ℒ', - lambda: 'λ', - lang: '⟨', - langd: '⦑', - langle: '⟨', - lap: '⪅', - laquo: '«', - larr: '←', - larrb: '⇤', - larrbfs: '⤟', - larrfs: '⤝', - larrhk: '↩', - larrlp: '↫', - larrpl: '⤹', - larrsim: '⥳', - larrtl: '↢', - lat: '⪫', - latail: '⤙', - late: '⪭', - lates: '⪭︀', - lbarr: '⤌', - lbbrk: '❲', - lbrace: '{', - lbrack: '[', - lbrke: '⦋', - lbrksld: '⦏', - lbrkslu: '⦍', - lcaron: 'ľ', - lcedil: 'ļ', - lceil: '⌈', - lcub: '{', - lcy: 'л', - ldca: '⤶', - ldquo: '“', - ldquor: '„', - ldrdhar: '⥧', - ldrushar: '⥋', - ldsh: '↲', - le: '≤', - leftarrow: '←', - leftarrowtail: '↢', - leftharpoondown: '↽', - leftharpoonup: '↼', - leftleftarrows: '⇇', - leftrightarrow: '↔', - leftrightarrows: '⇆', - leftrightharpoons: '⇋', - leftrightsquigarrow: '↭', - leftthreetimes: '⋋', - leg: '⋚', - leq: '≤', - leqq: '≦', - leqslant: '⩽', - les: '⩽', - lescc: '⪨', - lesdot: '⩿', - lesdoto: '⪁', - lesdotor: '⪃', - lesg: '⋚︀', - lesges: '⪓', - lessapprox: '⪅', - lessdot: '⋖', - lesseqgtr: '⋚', - lesseqqgtr: '⪋', - lessgtr: '≶', - lesssim: '≲', - lfisht: '⥼', - lfloor: '⌊', - lfr: '𝔩', - lg: '≶', - lgE: '⪑', - lhard: '↽', - lharu: '↼', - lharul: '⥪', - lhblk: '▄', - ljcy: 'љ', - ll: '≪', - llarr: '⇇', - llcorner: '⌞', - llhard: '⥫', - lltri: '◺', - lmidot: 'ŀ', - lmoust: '⎰', - lmoustache: '⎰', - lnE: '≨', - lnap: '⪉', - lnapprox: '⪉', - lne: '⪇', - lneq: '⪇', - lneqq: '≨', - lnsim: '⋦', - loang: '⟬', - loarr: '⇽', - lobrk: '⟦', - longleftarrow: '⟵', - longleftrightarrow: '⟷', - longmapsto: '⟼', - longrightarrow: '⟶', - looparrowleft: '↫', - looparrowright: '↬', - lopar: '⦅', - lopf: '𝕝', - loplus: '⨭', - lotimes: '⨴', - lowast: '∗', - lowbar: '_', - loz: '◊', - lozenge: '◊', - lozf: '⧫', - lpar: '(', - lparlt: '⦓', - lrarr: '⇆', - lrcorner: '⌟', - lrhar: '⇋', - lrhard: '⥭', - lrm: '‎', - lrtri: '⊿', - lsaquo: '‹', - lscr: '𝓁', - lsh: '↰', - lsim: '≲', - lsime: '⪍', - lsimg: '⪏', - lsqb: '[', - lsquo: '‘', - lsquor: '‚', - lstrok: 'ł', - lt: '<', - ltcc: '⪦', - ltcir: '⩹', - ltdot: '⋖', - lthree: '⋋', - ltimes: '⋉', - ltlarr: '⥶', - ltquest: '⩻', - ltrPar: '⦖', - ltri: '◃', - ltrie: '⊴', - ltrif: '◂', - lurdshar: '⥊', - luruhar: '⥦', - lvertneqq: '≨︀', - lvnE: '≨︀', - mDDot: '∺', - macr: '¯', - male: '♂', - malt: '✠', - maltese: '✠', - map: '↦', - mapsto: '↦', - mapstodown: '↧', - mapstoleft: '↤', - mapstoup: '↥', - marker: '▮', - mcomma: '⨩', - mcy: 'м', - mdash: '—', - measuredangle: '∡', - mfr: '𝔪', - mho: '℧', - micro: 'µ', - mid: '∣', - midast: '*', - midcir: '⫰', - middot: '·', - minus: '−', - minusb: '⊟', - minusd: '∸', - minusdu: '⨪', - mlcp: '⫛', - mldr: '…', - mnplus: '∓', - models: '⊧', - mopf: '𝕞', - mp: '∓', - mscr: '𝓂', - mstpos: '∾', - mu: 'μ', - multimap: '⊸', - mumap: '⊸', - nGg: '⋙̸', - nGt: '≫⃒', - nGtv: '≫̸', - nLeftarrow: '⇍', - nLeftrightarrow: '⇎', - nLl: '⋘̸', - nLt: '≪⃒', - nLtv: '≪̸', - nRightarrow: '⇏', - nVDash: '⊯', - nVdash: '⊮', - nabla: '∇', - nacute: 'ń', - nang: '∠⃒', - nap: '≉', - napE: '⩰̸', - napid: '≋̸', - napos: 'ʼn', - napprox: '≉', - natur: '♮', - natural: '♮', - naturals: 'ℕ', - nbsp: ' ', - nbump: '≎̸', - nbumpe: '≏̸', - ncap: '⩃', - ncaron: 'ň', - ncedil: 'ņ', - ncong: '≇', - ncongdot: '⩭̸', - ncup: '⩂', - ncy: 'н', - ndash: '–', - ne: '≠', - neArr: '⇗', - nearhk: '⤤', - nearr: '↗', - nearrow: '↗', - nedot: '≐̸', - nequiv: '≢', - nesear: '⤨', - nesim: '≂̸', - nexist: '∄', - nexists: '∄', - nfr: '𝔫', - ngE: '≧̸', - nge: '≱', - ngeq: '≱', - ngeqq: '≧̸', - ngeqslant: '⩾̸', - nges: '⩾̸', - ngsim: '≵', - ngt: '≯', - ngtr: '≯', - nhArr: '⇎', - nharr: '↮', - nhpar: '⫲', - ni: '∋', - nis: '⋼', - nisd: '⋺', - niv: '∋', - njcy: 'њ', - nlArr: '⇍', - nlE: '≦̸', - nlarr: '↚', - nldr: '‥', - nle: '≰', - nleftarrow: '↚', - nleftrightarrow: '↮', - nleq: '≰', - nleqq: '≦̸', - nleqslant: '⩽̸', - nles: '⩽̸', - nless: '≮', - nlsim: '≴', - nlt: '≮', - nltri: '⋪', - nltrie: '⋬', - nmid: '∤', - nopf: '𝕟', - not: '¬', - notin: '∉', - notinE: '⋹̸', - notindot: '⋵̸', - notinva: '∉', - notinvb: '⋷', - notinvc: '⋶', - notni: '∌', - notniva: '∌', - notnivb: '⋾', - notnivc: '⋽', - npar: '∦', - nparallel: '∦', - nparsl: '⫽⃥', - npart: '∂̸', - npolint: '⨔', - npr: '⊀', - nprcue: '⋠', - npre: '⪯̸', - nprec: '⊀', - npreceq: '⪯̸', - nrArr: '⇏', - nrarr: '↛', - nrarrc: '⤳̸', - nrarrw: '↝̸', - nrightarrow: '↛', - nrtri: '⋫', - nrtrie: '⋭', - nsc: '⊁', - nsccue: '⋡', - nsce: '⪰̸', - nscr: '𝓃', - nshortmid: '∤', - nshortparallel: '∦', - nsim: '≁', - nsime: '≄', - nsimeq: '≄', - nsmid: '∤', - nspar: '∦', - nsqsube: '⋢', - nsqsupe: '⋣', - nsub: '⊄', - nsubE: '⫅̸', - nsube: '⊈', - nsubset: '⊂⃒', - nsubseteq: '⊈', - nsubseteqq: '⫅̸', - nsucc: '⊁', - nsucceq: '⪰̸', - nsup: '⊅', - nsupE: '⫆̸', - nsupe: '⊉', - nsupset: '⊃⃒', - nsupseteq: '⊉', - nsupseteqq: '⫆̸', - ntgl: '≹', - ntilde: 'ñ', - ntlg: '≸', - ntriangleleft: '⋪', - ntrianglelefteq: '⋬', - ntriangleright: '⋫', - ntrianglerighteq: '⋭', - nu: 'ν', - num: '#', - numero: '№', - numsp: ' ', - nvDash: '⊭', - nvHarr: '⤄', - nvap: '≍⃒', - nvdash: '⊬', - nvge: '≥⃒', - nvgt: '>⃒', - nvinfin: '⧞', - nvlArr: '⤂', - nvle: '≤⃒', - nvlt: '<⃒', - nvltrie: '⊴⃒', - nvrArr: '⤃', - nvrtrie: '⊵⃒', - nvsim: '∼⃒', - nwArr: '⇖', - nwarhk: '⤣', - nwarr: '↖', - nwarrow: '↖', - nwnear: '⤧', - oS: 'Ⓢ', - oacute: 'ó', - oast: '⊛', - ocir: '⊚', - ocirc: 'ô', - ocy: 'о', - odash: '⊝', - odblac: 'ő', - odiv: '⨸', - odot: '⊙', - odsold: '⦼', - oelig: 'œ', - ofcir: '⦿', - ofr: '𝔬', - ogon: '˛', - ograve: 'ò', - ogt: '⧁', - ohbar: '⦵', - ohm: 'Ω', - oint: '∮', - olarr: '↺', - olcir: '⦾', - olcross: '⦻', - oline: '‾', - olt: '⧀', - omacr: 'ō', - omega: 'ω', - omicron: 'ο', - omid: '⦶', - ominus: '⊖', - oopf: '𝕠', - opar: '⦷', - operp: '⦹', - oplus: '⊕', - or: '∨', - orarr: '↻', - ord: '⩝', - order: 'ℴ', - orderof: 'ℴ', - ordf: 'ª', - ordm: 'º', - origof: '⊶', - oror: '⩖', - orslope: '⩗', - orv: '⩛', - oscr: 'ℴ', - oslash: 'ø', - osol: '⊘', - otilde: 'õ', - otimes: '⊗', - otimesas: '⨶', - ouml: 'ö', - ovbar: '⌽', - par: '∥', - para: '¶', - parallel: '∥', - parsim: '⫳', - parsl: '⫽', - part: '∂', - pcy: 'п', - percnt: '%', - period: '.', - permil: '‰', - perp: '⊥', - pertenk: '‱', - pfr: '𝔭', - phi: 'φ', - phiv: 'ϕ', - phmmat: 'ℳ', - phone: '☎', - pi: 'π', - pitchfork: '⋔', - piv: 'ϖ', - planck: 'ℏ', - planckh: 'ℎ', - plankv: 'ℏ', - plus: '+', - plusacir: '⨣', - plusb: '⊞', - pluscir: '⨢', - plusdo: '∔', - plusdu: '⨥', - pluse: '⩲', - plusmn: '±', - plussim: '⨦', - plustwo: '⨧', - pm: '±', - pointint: '⨕', - popf: '𝕡', - pound: '£', - pr: '≺', - prE: '⪳', - prap: '⪷', - prcue: '≼', - pre: '⪯', - prec: '≺', - precapprox: '⪷', - preccurlyeq: '≼', - preceq: '⪯', - precnapprox: '⪹', - precneqq: '⪵', - precnsim: '⋨', - precsim: '≾', - prime: '′', - primes: 'ℙ', - prnE: '⪵', - prnap: '⪹', - prnsim: '⋨', - prod: '∏', - profalar: '⌮', - profline: '⌒', - profsurf: '⌓', - prop: '∝', - propto: '∝', - prsim: '≾', - prurel: '⊰', - pscr: '𝓅', - psi: 'ψ', - puncsp: ' ', - qfr: '𝔮', - qint: '⨌', - qopf: '𝕢', - qprime: '⁗', - qscr: '𝓆', - quaternions: 'ℍ', - quatint: '⨖', - quest: '?', - questeq: '≟', - quot: '"', - rAarr: '⇛', - rArr: '⇒', - rAtail: '⤜', - rBarr: '⤏', - rHar: '⥤', - race: '∽̱', - racute: 'ŕ', - radic: '√', - raemptyv: '⦳', - rang: '⟩', - rangd: '⦒', - range: '⦥', - rangle: '⟩', - raquo: '»', - rarr: '→', - rarrap: '⥵', - rarrb: '⇥', - rarrbfs: '⤠', - rarrc: '⤳', - rarrfs: '⤞', - rarrhk: '↪', - rarrlp: '↬', - rarrpl: '⥅', - rarrsim: '⥴', - rarrtl: '↣', - rarrw: '↝', - ratail: '⤚', - ratio: '∶', - rationals: 'ℚ', - rbarr: '⤍', - rbbrk: '❳', - rbrace: '}', - rbrack: ']', - rbrke: '⦌', - rbrksld: '⦎', - rbrkslu: '⦐', - rcaron: 'ř', - rcedil: 'ŗ', - rceil: '⌉', - rcub: '}', - rcy: 'р', - rdca: '⤷', - rdldhar: '⥩', - rdquo: '”', - rdquor: '”', - rdsh: '↳', - real: 'ℜ', - realine: 'ℛ', - realpart: 'ℜ', - reals: 'ℝ', - rect: '▭', - reg: '®', - rfisht: '⥽', - rfloor: '⌋', - rfr: '𝔯', - rhard: '⇁', - rharu: '⇀', - rharul: '⥬', - rho: 'ρ', - rhov: 'ϱ', - rightarrow: '→', - rightarrowtail: '↣', - rightharpoondown: '⇁', - rightharpoonup: '⇀', - rightleftarrows: '⇄', - rightleftharpoons: '⇌', - rightrightarrows: '⇉', - rightsquigarrow: '↝', - rightthreetimes: '⋌', - ring: '˚', - risingdotseq: '≓', - rlarr: '⇄', - rlhar: '⇌', - rlm: '‏', - rmoust: '⎱', - rmoustache: '⎱', - rnmid: '⫮', - roang: '⟭', - roarr: '⇾', - robrk: '⟧', - ropar: '⦆', - ropf: '𝕣', - roplus: '⨮', - rotimes: '⨵', - rpar: ')', - rpargt: '⦔', - rppolint: '⨒', - rrarr: '⇉', - rsaquo: '›', - rscr: '𝓇', - rsh: '↱', - rsqb: ']', - rsquo: '’', - rsquor: '’', - rthree: '⋌', - rtimes: '⋊', - rtri: '▹', - rtrie: '⊵', - rtrif: '▸', - rtriltri: '⧎', - ruluhar: '⥨', - rx: '℞', - sacute: 'ś', - sbquo: '‚', - sc: '≻', - scE: '⪴', - scap: '⪸', - scaron: 'š', - sccue: '≽', - sce: '⪰', - scedil: 'ş', - scirc: 'ŝ', - scnE: '⪶', - scnap: '⪺', - scnsim: '⋩', - scpolint: '⨓', - scsim: '≿', - scy: 'с', - sdot: '⋅', - sdotb: '⊡', - sdote: '⩦', - seArr: '⇘', - searhk: '⤥', - searr: '↘', - searrow: '↘', - sect: '§', - semi: ';', - seswar: '⤩', - setminus: '∖', - setmn: '∖', - sext: '✶', - sfr: '𝔰', - sfrown: '⌢', - sharp: '♯', - shchcy: 'щ', - shcy: 'ш', - shortmid: '∣', - shortparallel: '∥', - shy: '­', - sigma: 'σ', - sigmaf: 'ς', - sigmav: 'ς', - sim: '∼', - simdot: '⩪', - sime: '≃', - simeq: '≃', - simg: '⪞', - simgE: '⪠', - siml: '⪝', - simlE: '⪟', - simne: '≆', - simplus: '⨤', - simrarr: '⥲', - slarr: '←', - smallsetminus: '∖', - smashp: '⨳', - smeparsl: '⧤', - smid: '∣', - smile: '⌣', - smt: '⪪', - smte: '⪬', - smtes: '⪬︀', - softcy: 'ь', - sol: '/', - solb: '⧄', - solbar: '⌿', - sopf: '𝕤', - spades: '♠', - spadesuit: '♠', - spar: '∥', - sqcap: '⊓', - sqcaps: '⊓︀', - sqcup: '⊔', - sqcups: '⊔︀', - sqsub: '⊏', - sqsube: '⊑', - sqsubset: '⊏', - sqsubseteq: '⊑', - sqsup: '⊐', - sqsupe: '⊒', - sqsupset: '⊐', - sqsupseteq: '⊒', - squ: '□', - square: '□', - squarf: '▪', - squf: '▪', - srarr: '→', - sscr: '𝓈', - ssetmn: '∖', - ssmile: '⌣', - sstarf: '⋆', - star: '☆', - starf: '★', - straightepsilon: 'ϵ', - straightphi: 'ϕ', - strns: '¯', - sub: '⊂', - subE: '⫅', - subdot: '⪽', - sube: '⊆', - subedot: '⫃', - submult: '⫁', - subnE: '⫋', - subne: '⊊', - subplus: '⪿', - subrarr: '⥹', - subset: '⊂', - subseteq: '⊆', - subseteqq: '⫅', - subsetneq: '⊊', - subsetneqq: '⫋', - subsim: '⫇', - subsub: '⫕', - subsup: '⫓', - succ: '≻', - succapprox: '⪸', - succcurlyeq: '≽', - succeq: '⪰', - succnapprox: '⪺', - succneqq: '⪶', - succnsim: '⋩', - succsim: '≿', - sum: '∑', - sung: '♪', - sup1: '¹', - sup2: '²', - sup3: '³', - sup: '⊃', - supE: '⫆', - supdot: '⪾', - supdsub: '⫘', - supe: '⊇', - supedot: '⫄', - suphsol: '⟉', - suphsub: '⫗', - suplarr: '⥻', - supmult: '⫂', - supnE: '⫌', - supne: '⊋', - supplus: '⫀', - supset: '⊃', - supseteq: '⊇', - supseteqq: '⫆', - supsetneq: '⊋', - supsetneqq: '⫌', - supsim: '⫈', - supsub: '⫔', - supsup: '⫖', - swArr: '⇙', - swarhk: '⤦', - swarr: '↙', - swarrow: '↙', - swnwar: '⤪', - szlig: 'ß', - target: '⌖', - tau: 'τ', - tbrk: '⎴', - tcaron: 'ť', - tcedil: 'ţ', - tcy: 'т', - tdot: '⃛', - telrec: '⌕', - tfr: '𝔱', - there4: '∴', - therefore: '∴', - theta: 'θ', - thetasym: 'ϑ', - thetav: 'ϑ', - thickapprox: '≈', - thicksim: '∼', - thinsp: ' ', - thkap: '≈', - thksim: '∼', - thorn: 'þ', - tilde: '˜', - times: '×', - timesb: '⊠', - timesbar: '⨱', - timesd: '⨰', - tint: '∭', - toea: '⤨', - top: '⊤', - topbot: '⌶', - topcir: '⫱', - topf: '𝕥', - topfork: '⫚', - tosa: '⤩', - tprime: '‴', - trade: '™', - triangle: '▵', - triangledown: '▿', - triangleleft: '◃', - trianglelefteq: '⊴', - triangleq: '≜', - triangleright: '▹', - trianglerighteq: '⊵', - tridot: '◬', - trie: '≜', - triminus: '⨺', - triplus: '⨹', - trisb: '⧍', - tritime: '⨻', - trpezium: '⏢', - tscr: '𝓉', - tscy: 'ц', - tshcy: 'ћ', - tstrok: 'ŧ', - twixt: '≬', - twoheadleftarrow: '↞', - twoheadrightarrow: '↠', - uArr: '⇑', - uHar: '⥣', - uacute: 'ú', - uarr: '↑', - ubrcy: 'ў', - ubreve: 'ŭ', - ucirc: 'û', - ucy: 'у', - udarr: '⇅', - udblac: 'ű', - udhar: '⥮', - ufisht: '⥾', - ufr: '𝔲', - ugrave: 'ù', - uharl: '↿', - uharr: '↾', - uhblk: '▀', - ulcorn: '⌜', - ulcorner: '⌜', - ulcrop: '⌏', - ultri: '◸', - umacr: 'ū', - uml: '¨', - uogon: 'ų', - uopf: '𝕦', - uparrow: '↑', - updownarrow: '↕', - upharpoonleft: '↿', - upharpoonright: '↾', - uplus: '⊎', - upsi: 'υ', - upsih: 'ϒ', - upsilon: 'υ', - upuparrows: '⇈', - urcorn: '⌝', - urcorner: '⌝', - urcrop: '⌎', - uring: 'ů', - urtri: '◹', - uscr: '𝓊', - utdot: '⋰', - utilde: 'ũ', - utri: '▵', - utrif: '▴', - uuarr: '⇈', - uuml: 'ü', - uwangle: '⦧', - vArr: '⇕', - vBar: '⫨', - vBarv: '⫩', - vDash: '⊨', - vangrt: '⦜', - varepsilon: 'ϵ', - varkappa: 'ϰ', - varnothing: '∅', - varphi: 'ϕ', - varpi: 'ϖ', - varpropto: '∝', - varr: '↕', - varrho: 'ϱ', - varsigma: 'ς', - varsubsetneq: '⊊︀', - varsubsetneqq: '⫋︀', - varsupsetneq: '⊋︀', - varsupsetneqq: '⫌︀', - vartheta: 'ϑ', - vartriangleleft: '⊲', - vartriangleright: '⊳', - vcy: 'в', - vdash: '⊢', - vee: '∨', - veebar: '⊻', - veeeq: '≚', - vellip: '⋮', - verbar: '|', - vert: '|', - vfr: '𝔳', - vltri: '⊲', - vnsub: '⊂⃒', - vnsup: '⊃⃒', - vopf: '𝕧', - vprop: '∝', - vrtri: '⊳', - vscr: '𝓋', - vsubnE: '⫋︀', - vsubne: '⊊︀', - vsupnE: '⫌︀', - vsupne: '⊋︀', - vzigzag: '⦚', - wcirc: 'ŵ', - wedbar: '⩟', - wedge: '∧', - wedgeq: '≙', - weierp: '℘', - wfr: '𝔴', - wopf: '𝕨', - wp: '℘', - wr: '≀', - wreath: '≀', - wscr: '𝓌', - xcap: '⋂', - xcirc: '◯', - xcup: '⋃', - xdtri: '▽', - xfr: '𝔵', - xhArr: '⟺', - xharr: '⟷', - xi: 'ξ', - xlArr: '⟸', - xlarr: '⟵', - xmap: '⟼', - xnis: '⋻', - xodot: '⨀', - xopf: '𝕩', - xoplus: '⨁', - xotime: '⨂', - xrArr: '⟹', - xrarr: '⟶', - xscr: '𝓍', - xsqcup: '⨆', - xuplus: '⨄', - xutri: '△', - xvee: '⋁', - xwedge: '⋀', - yacute: 'ý', - yacy: 'я', - ycirc: 'ŷ', - ycy: 'ы', - yen: '¥', - yfr: '𝔶', - yicy: 'ї', - yopf: '𝕪', - yscr: '𝓎', - yucy: 'ю', - yuml: 'ÿ', - zacute: 'ź', - zcaron: 'ž', - zcy: 'з', - zdot: 'ż', - zeetrf: 'ℨ', - zeta: 'ζ', - zfr: '𝔷', - zhcy: 'ж', - zigrarr: '⇝', - zopf: '𝕫', - zscr: '𝓏', - zwj: '‍', - zwnj: '‌' -} - -;// CONCATENATED MODULE: ./node_modules/decode-named-character-reference/index.js - - -// To do: next major: use `Object.hasOwn`. -const own = {}.hasOwnProperty -/** - * Decode a single character reference (without the `&` or `;`). - * You probably only need this when you’re building parsers yourself that follow - * different rules compared to HTML. - * This is optimized to be tiny in browsers. - * - * @param {string} value - * `notin` (named), `#123` (deci), `#x123` (hexa). - * @returns {string|false} - * Decoded reference. - */ -function decodeNamedCharacterReference(value) { - return own.call(characterEntities, value) ? characterEntities[value] : false -} +module.exports = stream -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/character-reference.js -/** - * @import { - * Code, - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ +/***/ }), +/***/ 61882: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** @type {Construct} */ -const characterReference = { - name: 'characterReference', - tokenize: tokenizeCharacterReference -}; +"use strict"; -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeCharacterReference(effects, ok, nok) { - const self = this; - let size = 0; - /** @type {number} */ - let max; - /** @type {(code: Code) => boolean} */ - let test; - return start; - /** - * Start of character reference. - * - * ```markdown - * > | a&amp;b - * ^ - * > | a&#123;b - * ^ - * > | a&#x9;b - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("characterReference"); - effects.enter("characterReferenceMarker"); - effects.consume(code); - effects.exit("characterReferenceMarker"); - return open; - } +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(68707) +const { AsyncResource } = __nccwpck_require__(90290) +const util = __nccwpck_require__(3440) +const { addSignal, removeSignal } = __nccwpck_require__(80158) +const assert = __nccwpck_require__(42613) - /** - * After `&`, at `#` for numeric references or alphanumeric for named - * references. - * - * ```markdown - * > | a&amp;b - * ^ - * > | a&#123;b - * ^ - * > | a&#x9;b - * ^ - * ``` - * - * @type {State} - */ - function open(code) { - if (code === 35) { - effects.enter("characterReferenceMarkerNumeric"); - effects.consume(code); - effects.exit("characterReferenceMarkerNumeric"); - return numeric; +class UpgradeHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') } - effects.enter("characterReferenceValue"); - max = 31; - test = asciiAlphanumeric; - return value(code); - } - /** - * After `#`, at `x` for hexadecimals or digit for decimals. - * - * ```markdown - * > | a&#123;b - * ^ - * > | a&#x9;b - * ^ - * ``` - * - * @type {State} - */ - function numeric(code) { - if (code === 88 || code === 120) { - effects.enter("characterReferenceMarkerHexadecimal"); - effects.consume(code); - effects.exit("characterReferenceMarkerHexadecimal"); - effects.enter("characterReferenceValue"); - max = 6; - test = asciiHexDigit; - return value; - } - effects.enter("characterReferenceValue"); - max = 7; - test = asciiDigit; - return value(code); - } + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } - /** - * After markers (`&#x`, `&#`, or `&`), in value, before `;`. - * - * The character reference kind defines what and how many characters are - * allowed. - * - * ```markdown - * > | a&amp;b - * ^^^ - * > | a&#123;b - * ^^^ - * > | a&#x9;b - * ^ - * ``` - * - * @type {State} - */ - function value(code) { - if (code === 59 && size) { - const token = effects.exit("characterReferenceValue"); - if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) { - return nok(code); - } + const { signal, opaque, responseHeaders } = opts - // To do: `markdown-rs` uses a different name: - // `CharacterReferenceMarkerSemi`. - effects.enter("characterReferenceMarker"); - effects.consume(code); - effects.exit("characterReferenceMarker"); - effects.exit("characterReference"); - return ok; - } - if (test(code) && size++ < max) { - effects.consume(code); - return value; + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') } - return nok(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/character-escape.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ - -/** @type {Construct} */ -const characterEscape = { - name: 'characterEscape', - tokenize: tokenizeCharacterEscape -}; + super('UNDICI_UPGRADE') -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeCharacterEscape(effects, ok, nok) { - return start; + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.abort = null + this.context = null - /** - * Start of character escape. - * - * ```markdown - * > | a\*b - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("characterEscape"); - effects.enter("escapeMarker"); - effects.consume(code); - effects.exit("escapeMarker"); - return inside; + addSignal(this, signal) } - /** - * After `\`, at punctuation. - * - * ```markdown - * > | a\*b - * ^ - * ``` - * - * @type {State} - */ - function inside(code) { - // ASCII punctuation. - if (asciiPunctuation(code)) { - effects.enter("characterEscapeValue"); - effects.consume(code); - effects.exit("characterEscapeValue"); - effects.exit("characterEscape"); - return ok; + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() } - return nok(code); + + this.abort = abort + this.context = null } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/line-ending.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + onHeaders () { + throw new SocketError('bad upgrade', null) + } + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this -/** @type {Construct} */ -const lineEnding = { - name: 'lineEnding', - tokenize: tokenizeLineEnding -}; + assert.strictEqual(statusCode, 101) -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeLineEnding(effects, ok) { - return start; + removeSignal(this) - /** @type {State} */ - function start(code) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return factorySpace(effects, ok, "linePrefix"); + this.callback = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }) } -} -;// CONCATENATED MODULE: ./node_modules/micromark-util-resolve-all/index.js -/** - * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types' - */ -/** - * Call all `resolveAll`s. - * - * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs - * List of constructs, optionally with `resolveAll`s. - * @param {Array<Event>} events - * List of events. - * @param {TokenizeContext} context - * Context used by `tokenize`. - * @returns {Array<Event>} - * Changed events. - */ -function resolveAll(constructs, events, context) { - /** @type {Array<Resolver>} */ - const called = [] - let index = -1 + onError (err) { + const { callback, opaque } = this - while (++index < constructs.length) { - const resolve = constructs[index].resolveAll + removeSignal(this) - if (resolve && !called.includes(resolve)) { - events = resolve(events, context) - called.push(resolve) + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) } } - - return events } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-end.js -/** - * @import { - * Construct, - * Event, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer, - * Token - * } from 'micromark-util-types' - */ +function upgrade (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + try { + const upgradeHandler = new UpgradeHandler(opts, callback) + this.dispatch({ + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, upgradeHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} +module.exports = upgrade +/***/ }), +/***/ 56615: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; +module.exports.request = __nccwpck_require__(14043) +module.exports.stream = __nccwpck_require__(3560) +module.exports.pipeline = __nccwpck_require__(76862) +module.exports.upgrade = __nccwpck_require__(61882) +module.exports.connect = __nccwpck_require__(34660) -/** @type {Construct} */ -const labelEnd = { - name: 'labelEnd', - resolveAll: resolveAllLabelEnd, - resolveTo: resolveToLabelEnd, - tokenize: tokenizeLabelEnd -}; -/** @type {Construct} */ -const resourceConstruct = { - tokenize: tokenizeResource -}; -/** @type {Construct} */ -const referenceFullConstruct = { - tokenize: tokenizeReferenceFull -}; -/** @type {Construct} */ -const referenceCollapsedConstruct = { - tokenize: tokenizeReferenceCollapsed -}; +/***/ }), -/** @type {Resolver} */ -function resolveAllLabelEnd(events) { - let index = -1; - /** @type {Array<Event>} */ - const newEvents = []; - while (++index < events.length) { - const token = events[index][1]; - newEvents.push(events[index]); - if (token.type === "labelImage" || token.type === "labelLink" || token.type === "labelEnd") { - // Remove the marker. - const offset = token.type === "labelImage" ? 4 : 2; - token.type = "data"; - index += offset; - } - } - - // If the events are equal, we don't have to copy newEvents to events - if (events.length !== newEvents.length) { - splice(events, 0, events.length, newEvents); - } - return events; -} - -/** @type {Resolver} */ -function resolveToLabelEnd(events, context) { - let index = events.length; - let offset = 0; - /** @type {Token} */ - let token; - /** @type {number | undefined} */ - let open; - /** @type {number | undefined} */ - let close; - /** @type {Array<Event>} */ - let media; - - // Find an opening. - while (index--) { - token = events[index][1]; - if (open) { - // If we see another link, or inactive link label, we’ve been here before. - if (token.type === "link" || token.type === "labelLink" && token._inactive) { - break; - } +/***/ 49927: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Mark other link openings as inactive, as we can’t have links in - // links. - if (events[index][0] === 'enter' && token.type === "labelLink") { - token._inactive = true; - } - } else if (close) { - if (events[index][0] === 'enter' && (token.type === "labelImage" || token.type === "labelLink") && !token._balanced) { - open = index; - if (token.type !== "labelLink") { - offset = 2; - break; - } - } - } else if (token.type === "labelEnd") { - close = index; - } - } - const group = { - type: events[open][1].type === "labelLink" ? "link" : "image", - start: { - ...events[open][1].start - }, - end: { - ...events[events.length - 1][1].end - } - }; - const label = { - type: "label", - start: { - ...events[open][1].start - }, - end: { - ...events[close][1].end - } - }; - const text = { - type: "labelText", - start: { - ...events[open + offset + 2][1].end - }, - end: { - ...events[close - 2][1].start - } - }; - media = [['enter', group, context], ['enter', label, context]]; +"use strict"; +// Ported from https://github.com/nodejs/undici/pull/907 - // Opening marker. - media = push(media, events.slice(open + 1, open + offset + 3)); - // Text open. - media = push(media, [['enter', text, context]]); - // Always populated by defaults. +const assert = __nccwpck_require__(42613) +const { Readable } = __nccwpck_require__(2203) +const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = __nccwpck_require__(68707) +const util = __nccwpck_require__(3440) +const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3440) - // Between. - media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context)); +let Blob - // Text close, marker close, label close. - media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]); +const kConsume = Symbol('kConsume') +const kReading = Symbol('kReading') +const kBody = Symbol('kBody') +const kAbort = Symbol('abort') +const kContentType = Symbol('kContentType') - // Reference, resource, or so. - media = push(media, events.slice(close + 1)); +const noop = () => {} - // Media close. - media = push(media, [['exit', group, context]]); - splice(events, open, events.length, media); - return events; -} +module.exports = class BodyReadable extends Readable { + constructor ({ + resume, + abort, + contentType = '', + highWaterMark = 64 * 1024 // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }) -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeLabelEnd(effects, ok, nok) { - const self = this; - let index = self.events.length; - /** @type {Token} */ - let labelStart; - /** @type {boolean} */ - let defined; - - // Find an opening. - while (index--) { - if ((self.events[index][1].type === "labelImage" || self.events[index][1].type === "labelLink") && !self.events[index][1]._balanced) { - labelStart = self.events[index][1]; - break; - } - } - return start; + this._readableState.dataEmitted = false - /** - * Start of label end. - * - * ```markdown - * > | [a](b) c - * ^ - * > | [a][b] c - * ^ - * > | [a][] b - * ^ - * > | [a] b - * ``` - * - * @type {State} - */ - function start(code) { - // If there is not an okay opening. - if (!labelStart) { - return nok(code); - } + this[kAbort] = abort + this[kConsume] = null + this[kBody] = null + this[kContentType] = contentType - // If the corresponding label (link) start is marked as inactive, - // it means we’d be wrapping a link, like this: - // - // ```markdown - // > | a [b [c](d) e](f) g. - // ^ - // ``` - // - // We can’t have that, so it’s just balanced brackets. - if (labelStart._inactive) { - return labelEndNok(code); - } - defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({ - start: labelStart.end, - end: self.now() - }))); - effects.enter("labelEnd"); - effects.enter("labelMarker"); - effects.consume(code); - effects.exit("labelMarker"); - effects.exit("labelEnd"); - return after; + // Is stream being consumed through Readable API? + // This is an optimization so that we avoid checking + // for 'data' and 'readable' listeners in the hot path + // inside push(). + this[kReading] = false } - /** - * After `]`. - * - * ```markdown - * > | [a](b) c - * ^ - * > | [a][b] c - * ^ - * > | [a][] b - * ^ - * > | [a] b - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - // Note: `markdown-rs` also parses GFM footnotes here, which for us is in - // an extension. + destroy (err) { + if (this.destroyed) { + // Node < 16 + return this + } - // Resource (`[asd](fgh)`)? - if (code === 40) { - return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code); + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() } - // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference? - if (code === 91) { - return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code); + if (err) { + this[kAbort]() } - // Shortcut (`[asd]`) reference? - return defined ? labelEndOk(code) : labelEndNok(code); + return super.destroy(err) } - /** - * After `]`, at `[`, but not at a full reference. - * - * > 👉 **Note**: we only get here if the label is defined. - * - * ```markdown - * > | [a][] b - * ^ - * > | [a] b - * ^ - * ``` - * - * @type {State} - */ - function referenceNotFull(code) { - return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code); + emit (ev, ...args) { + if (ev === 'data') { + // Node < 16.7 + this._readableState.dataEmitted = true + } else if (ev === 'error') { + // Node < 16 + this._readableState.errorEmitted = true + } + return super.emit(ev, ...args) } - /** - * Done, we found something. - * - * ```markdown - * > | [a](b) c - * ^ - * > | [a][b] c - * ^ - * > | [a][] b - * ^ - * > | [a] b - * ^ - * ``` - * - * @type {State} - */ - function labelEndOk(code) { - // Note: `markdown-rs` does a bunch of stuff here. - return ok(code); + on (ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true + } + return super.on(ev, ...args) } - /** - * Done, it’s nothing. - * - * There was an okay opening, but we didn’t match anything. - * - * ```markdown - * > | [a](b c - * ^ - * > | [a][b c - * ^ - * > | [a] b - * ^ - * ``` - * - * @type {State} - */ - function labelEndNok(code) { - labelStart._balanced = true; - return nok(code); + addListener (ev, ...args) { + return this.on(ev, ...args) } -} - -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeResource(effects, ok, nok) { - return resourceStart; - /** - * At a resource. - * - * ```markdown - * > | [a](b) c - * ^ - * ``` - * - * @type {State} - */ - function resourceStart(code) { - effects.enter("resource"); - effects.enter("resourceMarker"); - effects.consume(code); - effects.exit("resourceMarker"); - return resourceBefore; + off (ev, ...args) { + const ret = super.off(ev, ...args) + if (ev === 'data' || ev === 'readable') { + this[kReading] = ( + this.listenerCount('data') > 0 || + this.listenerCount('readable') > 0 + ) + } + return ret } - /** - * In resource, after `(`, at optional whitespace. - * - * ```markdown - * > | [a](b) c - * ^ - * ``` - * - * @type {State} - */ - function resourceBefore(code) { - return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code); + removeListener (ev, ...args) { + return this.off(ev, ...args) } - /** - * In resource, after optional whitespace, at `)` or a destination. - * - * ```markdown - * > | [a](b) c - * ^ - * ``` - * - * @type {State} - */ - function resourceOpen(code) { - if (code === 41) { - return resourceEnd(code); + push (chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk) + return this[kReading] ? super.push(chunk) : true } - return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, "resourceDestination", "resourceDestinationLiteral", "resourceDestinationLiteralMarker", "resourceDestinationRaw", "resourceDestinationString", 32)(code); + return super.push(chunk) } - /** - * In resource, after destination, at optional whitespace. - * - * ```markdown - * > | [a](b) c - * ^ - * ``` - * - * @type {State} - */ - function resourceDestinationAfter(code) { - return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code); + // https://fetch.spec.whatwg.org/#dom-body-text + async text () { + return consume(this, 'text') } - /** - * At invalid destination. - * - * ```markdown - * > | [a](<<) b - * ^ - * ``` - * - * @type {State} - */ - function resourceDestinationMissing(code) { - return nok(code); + // https://fetch.spec.whatwg.org/#dom-body-json + async json () { + return consume(this, 'json') } - /** - * In resource, after destination and whitespace, at `(` or title. - * - * ```markdown - * > | [a](b ) c - * ^ - * ``` - * - * @type {State} - */ - function resourceBetween(code) { - if (code === 34 || code === 39 || code === 40) { - return factoryTitle(effects, resourceTitleAfter, nok, "resourceTitle", "resourceTitleMarker", "resourceTitleString")(code); - } - return resourceEnd(code); + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob () { + return consume(this, 'blob') } - /** - * In resource, after title, at optional whitespace. - * - * ```markdown - * > | [a](b "c") d - * ^ - * ``` - * - * @type {State} - */ - function resourceTitleAfter(code) { - return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code); + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer () { + return consume(this, 'arrayBuffer') } - /** - * In resource, at `)`. - * - * ```markdown - * > | [a](b) d - * ^ - * ``` - * - * @type {State} - */ - function resourceEnd(code) { - if (code === 41) { - effects.enter("resourceMarker"); - effects.consume(code); - effects.exit("resourceMarker"); - effects.exit("resource"); - return ok; - } - return nok(code); + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData () { + // TODO: Implement. + throw new NotSupportedError() } -} - -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeReferenceFull(effects, ok, nok) { - const self = this; - return referenceFull; - /** - * In a reference (full), at the `[`. - * - * ```markdown - * > | [a][b] d - * ^ - * ``` - * - * @type {State} - */ - function referenceFull(code) { - return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, "reference", "referenceMarker", "referenceString")(code); + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed () { + return util.isDisturbed(this) } - /** - * In a reference (full), after `]`. - * - * ```markdown - * > | [a][b] d - * ^ - * ``` - * - * @type {State} - */ - function referenceFullAfter(code) { - return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code); + // https://fetch.spec.whatwg.org/#dom-body-body + get body () { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this) + if (this[kConsume]) { + // TODO: Is this the best way to force a lock? + this[kBody].getReader() // Ensure stream is locked. + assert(this[kBody].locked) + } + } + return this[kBody] } - /** - * In reference (full) that was missing. - * - * ```markdown - * > | [a][b d - * ^ - * ``` - * - * @type {State} - */ - function referenceFullMissing(code) { - return nok(code); + dump (opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144 + const signal = opts && opts.signal + + if (signal) { + try { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new InvalidArgumentError('signal must be an AbortSignal') + } + util.throwIfAborted(signal) + } catch (err) { + return Promise.reject(err) + } + } + + if (this.closed) { + return Promise.resolve(null) + } + + return new Promise((resolve, reject) => { + const signalListenerCleanup = signal + ? util.addAbortListener(signal, () => { + this.destroy() + }) + : noop + + this + .on('close', function () { + signalListenerCleanup() + if (signal && signal.aborted) { + reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })) + } else { + resolve(null) + } + }) + .on('error', noop) + .on('data', function (chunk) { + limit -= chunk.length + if (limit <= 0) { + this.destroy() + } + }) + .resume() + }) } } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeReferenceCollapsed(effects, ok, nok) { - return referenceCollapsedStart; +// https://streams.spec.whatwg.org/#readablestream-locked +function isLocked (self) { + // Consume is an implicit lock. + return (self[kBody] && self[kBody].locked === true) || self[kConsume] +} - /** - * In reference (collapsed), at `[`. - * - * > 👉 **Note**: we only get here if the label is defined. - * - * ```markdown - * > | [a][] d - * ^ - * ``` - * - * @type {State} - */ - function referenceCollapsedStart(code) { - // We only attempt a collapsed label if there’s a `[`. +// https://fetch.spec.whatwg.org/#body-unusable +function isUnusable (self) { + return util.isDisturbed(self) || isLocked(self) +} - effects.enter("reference"); - effects.enter("referenceMarker"); - effects.consume(code); - effects.exit("referenceMarker"); - return referenceCollapsedOpen; +async function consume (stream, type) { + if (isUnusable(stream)) { + throw new TypeError('unusable') } - /** - * In reference (collapsed), at `]`. - * - * > 👉 **Note**: we only get here if the label is defined. - * - * ```markdown - * > | [a][] d - * ^ - * ``` - * - * @type {State} - */ - function referenceCollapsedOpen(code) { - if (code === 93) { - effects.enter("referenceMarker"); - effects.consume(code); - effects.exit("referenceMarker"); - effects.exit("reference"); - return ok; + assert(!stream[kConsume]) + + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] } - return nok(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-start-image.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err) + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()) + } + }) + process.nextTick(consumeStart, stream[kConsume]) + }) +} -/** @type {Construct} */ -const labelStartImage = { - name: 'labelStartImage', - resolveAll: labelEnd.resolveAll, - tokenize: tokenizeLabelStartImage -}; +function consumeStart (consume) { + if (consume.body === null) { + return + } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeLabelStartImage(effects, ok, nok) { - const self = this; - return start; + const { _readableState: state } = consume.stream - /** - * Start of label (image) start. - * - * ```markdown - * > | a ![b] c - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("labelImage"); - effects.enter("labelImageMarker"); - effects.consume(code); - effects.exit("labelImageMarker"); - return open; + for (const chunk of state.buffer) { + consumePush(consume, chunk) } - /** - * After `!`, at `[`. - * - * ```markdown - * > | a ![b] c - * ^ - * ``` - * - * @type {State} - */ - function open(code) { - if (code === 91) { - effects.enter("labelMarker"); - effects.consume(code); - effects.exit("labelMarker"); - effects.exit("labelImage"); - return after; - } - return nok(code); + if (state.endEmitted) { + consumeEnd(this[kConsume]) + } else { + consume.stream.on('end', function () { + consumeEnd(this[kConsume]) + }) } - /** - * After `![`. - * - * ```markdown - * > | a ![b] c - * ^ - * ``` - * - * This is needed in because, when GFM footnotes are enabled, images never - * form when started with a `^`. - * Instead, links form: - * - * ```markdown - * ![^a](b) - * - * ![^a][b] - * - * [b]: c - * ``` - * - * ```html - * <p>!<a href=\"b\">^a</a></p> - * <p>!<a href=\"c\">^a</a></p> - * ``` - * - * @type {State} - */ - function after(code) { - // To do: use a new field to do this, this is still needed for - // `micromark-extension-gfm-footnote`, but the `label-start-link` - // behavior isn’t. - // Hidden footnotes hook. - /* c8 ignore next 3 */ - return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code); + consume.stream.resume() + + while (consume.stream.read() != null) { + // Loop } } -;// CONCATENATED MODULE: ./node_modules/micromark-util-classify-character/index.js -/** - * @import {Code} from 'micromark-util-types' - */ +function consumeEnd (consume) { + const { type, body, resolve, stream, length } = consume -/** - * Classify whether a code represents whitespace, punctuation, or something - * else. - * - * Used for attention (emphasis, strong), whose sequences can open or close - * based on the class of surrounding characters. - * - * > 👉 **Note**: eof (`null`) is seen as whitespace. - * - * @param {Code} code - * Code. - * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined} - * Group. - */ -function classifyCharacter(code) { - if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { - return 1; - } - if (unicodePunctuation(code)) { - return 2; + try { + if (type === 'text') { + resolve(toUSVString(Buffer.concat(body))) + } else if (type === 'json') { + resolve(JSON.parse(Buffer.concat(body))) + } else if (type === 'arrayBuffer') { + const dst = new Uint8Array(length) + + let pos = 0 + for (const buf of body) { + dst.set(buf, pos) + pos += buf.byteLength + } + + resolve(dst.buffer) + } else if (type === 'blob') { + if (!Blob) { + Blob = (__nccwpck_require__(20181).Blob) + } + resolve(new Blob(body, { type: stream[kContentType] })) + } + + consumeFinish(consume) + } catch (err) { + stream.destroy(err) } } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/attention.js -/** - * @import { - * Code, - * Construct, - * Event, - * Point, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer, - * Token - * } from 'micromark-util-types' - */ - +function consumePush (consume, chunk) { + consume.length += chunk.length + consume.body.push(chunk) +} +function consumeFinish (consume, err) { + if (consume.body === null) { + return + } -/** @type {Construct} */ -const attention = { - name: 'attention', - resolveAll: resolveAllAttention, - tokenize: tokenizeAttention -}; + if (err) { + consume.reject(err) + } else { + consume.resolve() + } -/** - * Take all events and resolve attention to emphasis or strong. - * - * @type {Resolver} - */ -// eslint-disable-next-line complexity -function resolveAllAttention(events, context) { - let index = -1; - /** @type {number} */ - let open; - /** @type {Token} */ - let group; - /** @type {Token} */ - let text; - /** @type {Token} */ - let openingSequence; - /** @type {Token} */ - let closingSequence; - /** @type {number} */ - let use; - /** @type {Array<Event>} */ - let nextEvents; - /** @type {number} */ - let offset; - - // Walk through all events. - // - // Note: performance of this is fine on an mb of normal markdown, but it’s - // a bottleneck for malicious stuff. - while (++index < events.length) { - // Find a token that can close. - if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) { - open = index; - - // Now walk back to find an opener. - while (open--) { - // Find a token that can open the closer. - if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open && - // If the markers are the same: - context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) { - // If the opening can close or the closing can open, - // and the close size *is not* a multiple of three, - // but the sum of the opening and closing size *is* multiple of three, - // then don’t match. - if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) { - continue; - } + consume.type = null + consume.stream = null + consume.resolve = null + consume.reject = null + consume.length = 0 + consume.body = null +} - // Number of markers to use from the sequence. - use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1; - const start = { - ...events[open][1].end - }; - const end = { - ...events[index][1].start - }; - movePoint(start, -use); - movePoint(end, use); - openingSequence = { - type: use > 1 ? "strongSequence" : "emphasisSequence", - start, - end: { - ...events[open][1].end - } - }; - closingSequence = { - type: use > 1 ? "strongSequence" : "emphasisSequence", - start: { - ...events[index][1].start - }, - end - }; - text = { - type: use > 1 ? "strongText" : "emphasisText", - start: { - ...events[open][1].end - }, - end: { - ...events[index][1].start - } - }; - group = { - type: use > 1 ? "strong" : "emphasis", - start: { - ...openingSequence.start - }, - end: { - ...closingSequence.end - } - }; - events[open][1].end = { - ...openingSequence.start - }; - events[index][1].start = { - ...closingSequence.end - }; - nextEvents = []; - // If there are more markers in the opening, add them before. - if (events[open][1].end.offset - events[open][1].start.offset) { - nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]); - } +/***/ }), - // Opening. - nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]); +/***/ 87655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // Always populated by defaults. +const assert = __nccwpck_require__(42613) +const { + ResponseStatusCodeError +} = __nccwpck_require__(68707) +const { toUSVString } = __nccwpck_require__(3440) - // Between. - nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context)); +async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body) - // Closing. - nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]); + let chunks = [] + let limit = 0 - // If there are more markers in the closing, add them after. - if (events[index][1].end.offset - events[index][1].start.offset) { - offset = 2; - nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]); - } else { - offset = 0; - } - splice(events, open - 1, index - open + 3, nextEvents); - index = open + nextEvents.length - offset - 2; - break; - } - } + for await (const chunk of body) { + chunks.push(chunk) + limit += chunk.length + if (limit > 128 * 1024) { + chunks = null + break } } - // Remove remaining sequences. - index = -1; - while (++index < events.length) { - if (events[index][1].type === 'attentionSequence') { - events[index][1].type = 'data'; + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) + return + } + + try { + if (contentType.startsWith('application/json')) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + + if (contentType.startsWith('text/')) { + const payload = toUSVString(Buffer.concat(chunks)) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return } + } catch (err) { + // Process in a fallback if error } - return events; + + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeAttention(effects, ok) { - const attentionMarkers = this.parser.constructs.attentionMarkers.null; - const previous = this.previous; - const before = classifyCharacter(previous); +module.exports = { getResolveErrorBodyCallback } - /** @type {NonNullable<Code>} */ - let marker; - return start; - /** - * Before a sequence. - * - * ```markdown - * > | ** - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - marker = code; - effects.enter('attentionSequence'); - return inside(code); - } +/***/ }), - /** - * In a sequence. - * - * ```markdown - * > | ** - * ^^ - * ``` - * - * @type {State} - */ - function inside(code) { - if (code === marker) { - effects.consume(code); - return inside; - } - const token = effects.exit('attentionSequence'); +/***/ 81093: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // To do: next major: move this to resolver, just like `markdown-rs`. - const after = classifyCharacter(code); +"use strict"; - // Always populated by defaults. - const open = !after || after === 2 && before || attentionMarkers.includes(code); - const close = !before || before === 2 && after || attentionMarkers.includes(previous); - token._open = Boolean(marker === 42 ? open : open && (before || !close)); - token._close = Boolean(marker === 42 ? close : close && (after || !open)); - return ok(code); - } -} +const { + BalancedPoolMissingUpstreamError, + InvalidArgumentError +} = __nccwpck_require__(68707) +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} = __nccwpck_require__(58640) +const Pool = __nccwpck_require__(35076) +const { kUrl, kInterceptors } = __nccwpck_require__(36443) +const { parseOrigin } = __nccwpck_require__(3440) +const kFactory = Symbol('factory') -/** - * Move a point a bit. - * - * Note: `move` only works inside lines! It’s not possible to move past other - * chunks (replacement characters, tabs, or line endings). - * - * @param {Point} point - * Point. - * @param {number} offset - * Amount to move. - * @returns {undefined} - * Nothing. - */ -function movePoint(point, offset) { - point.column += offset; - point.offset += offset; - point._bufferIndex += offset; +const kOptions = Symbol('options') +const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') +const kCurrentWeight = Symbol('kCurrentWeight') +const kIndex = Symbol('kIndex') +const kWeight = Symbol('kWeight') +const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') +const kErrorPenalty = Symbol('kErrorPenalty') + +function getGreatestCommonDivisor (a, b) { + if (b === 0) return a + return getGreatestCommonDivisor(b, a % b) } -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/autolink.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} -/** @type {Construct} */ -const autolink = { - name: 'autolink', - tokenize: tokenizeAutolink -}; +class BalancedPool extends PoolBase { + constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super() -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeAutolink(effects, ok, nok) { - let size = 0; - return start; + this[kOptions] = opts + this[kIndex] = -1 + this[kCurrentWeight] = 0 - /** - * Start of an autolink. - * - * ```markdown - * > | a<https://example.com>b - * ^ - * > | a<user@example.com>b - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("autolink"); - effects.enter("autolinkMarker"); - effects.consume(code); - effects.exit("autolinkMarker"); - effects.enter("autolinkProtocol"); - return open; - } + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 + this[kErrorPenalty] = this[kOptions].errorPenalty || 15 - /** - * After `<`, at protocol or atext. - * - * ```markdown - * > | a<https://example.com>b - * ^ - * > | a<user@example.com>b - * ^ - * ``` - * - * @type {State} - */ - function open(code) { - if (asciiAlpha(code)) { - effects.consume(code); - return schemeOrEmailAtext; - } - if (code === 64) { - return nok(code); + if (!Array.isArray(upstreams)) { + upstreams = [upstreams] } - return emailAtext(code); - } - /** - * At second byte of protocol or atext. - * - * ```markdown - * > | a<https://example.com>b - * ^ - * > | a<user@example.com>b - * ^ - * ``` - * - * @type {State} - */ - function schemeOrEmailAtext(code) { - // ASCII alphanumeric and `+`, `-`, and `.`. - if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) { - // Count the previous alphabetical from `open` too. - size = 1; - return schemeInsideOrEmailAtext(code); + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') } - return emailAtext(code); - } - /** - * In ambiguous protocol or atext. - * - * ```markdown - * > | a<https://example.com>b - * ^ - * > | a<user@example.com>b - * ^ - * ``` - * - * @type {State} - */ - function schemeInsideOrEmailAtext(code) { - if (code === 58) { - effects.consume(code); - size = 0; - return urlInside; - } + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) + ? opts.interceptors.BalancedPool + : [] + this[kFactory] = factory - // ASCII alphanumeric and `+`, `-`, and `.`. - if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) { - effects.consume(code); - return schemeInsideOrEmailAtext; + for (const upstream of upstreams) { + this.addUpstream(upstream) } - size = 0; - return emailAtext(code); + this._updateBalancedPoolStats() } - /** - * After protocol, in URL. - * - * ```markdown - * > | a<https://example.com>b - * ^ - * ``` - * - * @type {State} - */ - function urlInside(code) { - if (code === 62) { - effects.exit("autolinkProtocol"); - effects.enter("autolinkMarker"); - effects.consume(code); - effects.exit("autolinkMarker"); - effects.exit("autolink"); - return ok; - } + addUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin - // ASCII control, space, or `<`. - if (code === null || code === 32 || code === 60 || asciiControl(code)) { - return nok(code); + if (this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + ))) { + return this } - effects.consume(code); - return urlInside; - } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) - /** - * In email atext. - * - * ```markdown - * > | a<user.name@example.com>b - * ^ - * ``` - * - * @type {State} - */ - function emailAtext(code) { - if (code === 64) { - effects.consume(code); - return emailAtSignOrDot; - } - if (asciiAtext(code)) { - effects.consume(code); - return emailAtext; - } - return nok(code); - } + this[kAddClient](pool) + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) + }) - /** - * In label, after at-sign or dot. - * - * ```markdown - * > | a<user.name@example.com>b - * ^ ^ - * ``` - * - * @type {State} - */ - function emailAtSignOrDot(code) { - return asciiAlphanumeric(code) ? emailLabel(code) : nok(code); - } + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + }) - /** - * In label, where `.` and `>` are allowed. - * - * ```markdown - * > | a<user.name@example.com>b - * ^ - * ``` - * - * @type {State} - */ - function emailLabel(code) { - if (code === 46) { - effects.consume(code); - size = 0; - return emailAtSignOrDot; - } - if (code === 62) { - // Exit, then change the token type. - effects.exit("autolinkProtocol").type = "autolinkEmail"; - effects.enter("autolinkMarker"); - effects.consume(code); - effects.exit("autolinkMarker"); - effects.exit("autolink"); - return ok; + pool.on('disconnect', (...args) => { + const err = args[2] + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + } + }) + + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer] } - return emailValue(code); + + this._updateBalancedPoolStats() + + return this } - /** - * In label, where `.` and `>` are *not* allowed. - * - * Though, this is also used in `emailLabel` to parse other values. - * - * ```markdown - * > | a<user.name@ex-ample.com>b - * ^ - * ``` - * - * @type {State} - */ - function emailValue(code) { - // ASCII alphanumeric or `-`. - if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) { - const next = code === 45 ? emailValue : emailLabel; - effects.consume(code); - return next; - } - return nok(code); + _updateBalancedPoolStats () { + this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0) } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/html-text.js -/** - * @import { - * Code, - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + removeUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + const pool = this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + )) -/** @type {Construct} */ -const htmlText = { - name: 'htmlText', - tokenize: tokenizeHtmlText -}; + if (pool) { + this[kRemoveClient](pool) + } -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeHtmlText(effects, ok, nok) { - const self = this; - /** @type {NonNullable<Code> | undefined} */ - let marker; - /** @type {number} */ - let index; - /** @type {State} */ - let returnState; - return start; + return this + } - /** - * Start of HTML (text). - * - * ```markdown - * > | a <b> c - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("htmlText"); - effects.enter("htmlTextData"); - effects.consume(code); - return open; + get upstreams () { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map((p) => p[kUrl].origin) } - /** - * After `<`, at tag name or other stuff. - * - * ```markdown - * > | a <b> c - * ^ - * > | a <!doctype> c - * ^ - * > | a <!--b--> c - * ^ - * ``` - * - * @type {State} - */ - function open(code) { - if (code === 33) { - effects.consume(code); - return declarationOpen; - } - if (code === 47) { - effects.consume(code); - return tagCloseStart; - } - if (code === 63) { - effects.consume(code); - return instruction; + [kGetDispatcher] () { + // We validate that pools is greater than 0, + // otherwise we would have to wait until an upstream + // is added, which might never happen. + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError() } - // ASCII alphabetical. - if (asciiAlpha(code)) { - effects.consume(code); - return tagOpen; + const dispatcher = this[kClients].find(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + + if (!dispatcher) { + return } - return nok(code); - } - /** - * After `<!`, at declaration, comment, or CDATA. - * - * ```markdown - * > | a <!doctype> c - * ^ - * > | a <!--b--> c - * ^ - * > | a <![CDATA[>&<]]> c - * ^ - * ``` - * - * @type {State} - */ - function declarationOpen(code) { - if (code === 45) { - effects.consume(code); - return commentOpenInside; - } - if (code === 91) { - effects.consume(code); - index = 0; - return cdataOpenInside; - } - if (asciiAlpha(code)) { - effects.consume(code); - return declaration; - } - return nok(code); - } + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) - /** - * In a comment, after `<!-`, at another `-`. - * - * ```markdown - * > | a <!--b--> c - * ^ - * ``` - * - * @type {State} - */ - function commentOpenInside(code) { - if (code === 45) { - effects.consume(code); - return commentEnd; + if (allClientsBusy) { + return } - return nok(code); - } - /** - * In comment. - * - * ```markdown - * > | a <!--b--> c - * ^ - * ``` - * - * @type {State} - */ - function comment(code) { - if (code === null) { - return nok(code); - } - if (code === 45) { - effects.consume(code); - return commentClose; - } - if (markdownLineEnding(code)) { - returnState = comment; - return lineEndingBefore(code); - } - effects.consume(code); - return comment; - } + let counter = 0 - /** - * In comment, after `-`. - * - * ```markdown - * > | a <!--b--> c - * ^ - * ``` - * - * @type {State} - */ - function commentClose(code) { - if (code === 45) { - effects.consume(code); - return commentEnd; - } - return comment(code); - } + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) - /** - * In comment, after `--`. - * - * ```markdown - * > | a <!--b--> c - * ^ - * ``` - * - * @type {State} - */ - function commentEnd(code) { - return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code); - } + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length + const pool = this[kClients][this[kIndex]] - /** - * After `<![`, in CDATA, expecting `CDATA[`. - * - * ```markdown - * > | a <![CDATA[>&<]]> b - * ^^^^^^ - * ``` - * - * @type {State} - */ - function cdataOpenInside(code) { - const value = "CDATA["; - if (code === value.charCodeAt(index++)) { - effects.consume(code); - return index === value.length ? cdata : cdataOpenInside; - } - return nok(code); - } + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex] + } - /** - * In CDATA. - * - * ```markdown - * > | a <![CDATA[>&<]]> b - * ^^^ - * ``` - * - * @type {State} - */ - function cdata(code) { - if (code === null) { - return nok(code); - } - if (code === 93) { - effects.consume(code); - return cdataClose; - } - if (markdownLineEnding(code)) { - returnState = cdata; - return lineEndingBefore(code); - } - effects.consume(code); - return cdata; - } + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] - /** - * In CDATA, after `]`, at another `]`. - * - * ```markdown - * > | a <![CDATA[>&<]]> b - * ^ - * ``` - * - * @type {State} - */ - function cdataClose(code) { - if (code === 93) { - effects.consume(code); - return cdataEnd; + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer] + } + } + if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { + return pool + } } - return cdata(code); - } - /** - * In CDATA, after `]]`, at `>`. - * - * ```markdown - * > | a <![CDATA[>&<]]> b - * ^ - * ``` - * - * @type {State} - */ - function cdataEnd(code) { - if (code === 62) { - return end(code); - } - if (code === 93) { - effects.consume(code); - return cdataEnd; - } - return cdata(code); + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] + this[kIndex] = maxWeightIndex + return this[kClients][maxWeightIndex] } +} - /** - * In declaration. - * - * ```markdown - * > | a <!b> c - * ^ - * ``` - * - * @type {State} - */ - function declaration(code) { - if (code === null || code === 62) { - return end(code); - } - if (markdownLineEnding(code)) { - returnState = declaration; - return lineEndingBefore(code); - } - effects.consume(code); - return declaration; - } +module.exports = BalancedPool - /** - * In instruction. - * - * ```markdown - * > | a <?b?> c - * ^ - * ``` - * - * @type {State} - */ - function instruction(code) { - if (code === null) { - return nok(code); - } - if (code === 63) { - effects.consume(code); - return instructionClose; - } - if (markdownLineEnding(code)) { - returnState = instruction; - return lineEndingBefore(code); - } - effects.consume(code); - return instruction; - } - /** - * In instruction, after `?`, at `>`. - * - * ```markdown - * > | a <?b?> c - * ^ - * ``` - * - * @type {State} - */ - function instructionClose(code) { - return code === 62 ? end(code) : instruction(code); - } +/***/ }), - /** - * After `</`, in closing tag, at tag name. - * - * ```markdown - * > | a </b> c - * ^ - * ``` - * - * @type {State} - */ - function tagCloseStart(code) { - // ASCII alphabetical. - if (asciiAlpha(code)) { - effects.consume(code); - return tagClose; - } - return nok(code); - } +/***/ 50479: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * After `</x`, in a tag name. - * - * ```markdown - * > | a </b> c - * ^ - * ``` - * - * @type {State} - */ - function tagClose(code) { - // ASCII alphanumerical and `-`. - if (code === 45 || asciiAlphanumeric(code)) { - effects.consume(code); - return tagClose; - } - return tagCloseBetween(code); - } +"use strict"; - /** - * In closing tag, after tag name. - * - * ```markdown - * > | a </b> c - * ^ - * ``` - * - * @type {State} - */ - function tagCloseBetween(code) { - if (markdownLineEnding(code)) { - returnState = tagCloseBetween; - return lineEndingBefore(code); - } - if (markdownSpace(code)) { - effects.consume(code); - return tagCloseBetween; - } - return end(code); - } - /** - * After `<x`, in opening tag name. - * - * ```markdown - * > | a <b> c - * ^ - * ``` - * - * @type {State} - */ - function tagOpen(code) { - // ASCII alphanumerical and `-`. - if (code === 45 || asciiAlphanumeric(code)) { - effects.consume(code); - return tagOpen; - } - if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { - return tagOpenBetween(code); - } - return nok(code); - } +const { kConstruct } = __nccwpck_require__(80296) +const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(23993) +const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3440) +const { kHeadersList } = __nccwpck_require__(36443) +const { webidl } = __nccwpck_require__(74222) +const { Response, cloneResponse } = __nccwpck_require__(48676) +const { Request } = __nccwpck_require__(25194) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(89710) +const { fetching } = __nccwpck_require__(12315) +const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(15523) +const assert = __nccwpck_require__(42613) +const { getGlobalDispatcher } = __nccwpck_require__(32581) - /** - * In opening tag, after tag name. - * - * ```markdown - * > | a <b> c - * ^ - * ``` - * - * @type {State} - */ - function tagOpenBetween(code) { - if (code === 47) { - effects.consume(code); - return end; - } +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation + * @typedef {Object} CacheBatchOperation + * @property {'delete' | 'put'} type + * @property {any} request + * @property {any} response + * @property {import('../../types/cache').CacheQueryOptions} options + */ - // ASCII alphabetical and `:` and `_`. - if (code === 58 || code === 95 || asciiAlpha(code)) { - effects.consume(code); - return tagOpenAttributeName; - } - if (markdownLineEnding(code)) { - returnState = tagOpenBetween; - return lineEndingBefore(code); - } - if (markdownSpace(code)) { - effects.consume(code); - return tagOpenBetween; - } - return end(code); - } +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list + * @typedef {[any, any][]} requestResponseList + */ +class Cache { /** - * In attribute name. - * - * ```markdown - * > | a <b c> d - * ^ - * ``` - * - * @type {State} + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} */ - function tagOpenAttributeName(code) { - // ASCII alphabetical and `-`, `.`, `:`, and `_`. - if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) { - effects.consume(code); - return tagOpenAttributeName; - } - return tagOpenAttributeNameAfter(code); - } + #relevantRequestResponseList - /** - * After attribute name, before initializer, the end of the tag, or - * whitespace. - * - * ```markdown - * > | a <b c> d - * ^ - * ``` - * - * @type {State} - */ - function tagOpenAttributeNameAfter(code) { - if (code === 61) { - effects.consume(code); - return tagOpenAttributeValueBefore; - } - if (markdownLineEnding(code)) { - returnState = tagOpenAttributeNameAfter; - return lineEndingBefore(code); - } - if (markdownSpace(code)) { - effects.consume(code); - return tagOpenAttributeNameAfter; + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() } - return tagOpenBetween(code); - } - /** - * Before unquoted, double quoted, or single quoted attribute value, allowing - * whitespace. - * - * ```markdown - * > | a <b c=d> e - * ^ - * ``` - * - * @type {State} - */ - function tagOpenAttributeValueBefore(code) { - if (code === null || code === 60 || code === 61 || code === 62 || code === 96) { - return nok(code); - } - if (code === 34 || code === 39) { - effects.consume(code); - marker = code; - return tagOpenAttributeValueQuoted; - } - if (markdownLineEnding(code)) { - returnState = tagOpenAttributeValueBefore; - return lineEndingBefore(code); - } - if (markdownSpace(code)) { - effects.consume(code); - return tagOpenAttributeValueBefore; - } - effects.consume(code); - return tagOpenAttributeValueUnquoted; + this.#relevantRequestResponseList = arguments[1] } - /** - * In double or single quoted attribute value. - * - * ```markdown - * > | a <b c="d"> e - * ^ - * ``` - * - * @type {State} - */ - function tagOpenAttributeValueQuoted(code) { - if (code === marker) { - effects.consume(code); - marker = undefined; - return tagOpenAttributeValueQuotedAfter; - } - if (code === null) { - return nok(code); - } - if (markdownLineEnding(code)) { - returnState = tagOpenAttributeValueQuoted; - return lineEndingBefore(code); - } - effects.consume(code); - return tagOpenAttributeValueQuoted; - } + async match (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }) - /** - * In unquoted attribute value. - * - * ```markdown - * > | a <b c=d> e - * ^ - * ``` - * - * @type {State} - */ - function tagOpenAttributeValueUnquoted(code) { - if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) { - return nok(code); - } - if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { - return tagOpenBetween(code); - } - effects.consume(code); - return tagOpenAttributeValueUnquoted; - } + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) - /** - * After double or single quoted attribute value, before whitespace or the end - * of the tag. - * - * ```markdown - * > | a <b c="d"> e - * ^ - * ``` - * - * @type {State} - */ - function tagOpenAttributeValueQuotedAfter(code) { - if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) { - return tagOpenBetween(code); - } - return nok(code); - } + const p = await this.matchAll(request, options) - /** - * In certain circumstances of a tag where only an `>` is allowed. - * - * ```markdown - * > | a <b c="d"> e - * ^ - * ``` - * - * @type {State} - */ - function end(code) { - if (code === 62) { - effects.consume(code); - effects.exit("htmlTextData"); - effects.exit("htmlText"); - return ok; + if (p.length === 0) { + return } - return nok(code); - } - /** - * At eol. - * - * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about - * > empty tokens. - * - * ```markdown - * > | a <!--a - * ^ - * | b--> - * ``` - * - * @type {State} - */ - function lineEndingBefore(code) { - effects.exit("htmlTextData"); - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return lineEndingAfter; + return p[0] } - /** - * After eol, at optional whitespace. - * - * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about - * > empty tokens. - * - * ```markdown - * | a <!--a - * > | b--> - * ^ - * ``` - * - * @type {State} - */ - function lineEndingAfter(code) { - // Always populated by defaults. + async matchAll (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) - return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, "linePrefix", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code); - } + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) - /** - * After eol, after optional whitespace. - * - * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about - * > empty tokens. - * - * ```markdown - * | a <!--a - * > | b--> - * ^ - * ``` - * - * @type {State} - */ - function lineEndingAfterPrefix(code) { - effects.enter("htmlTextData"); - return returnState(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/label-start-link.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + // 1. + let r = null + // 2. + if (request !== undefined) { + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { + // 2.2.1 + r = new Request(request)[kState] + } + } -/** @type {Construct} */ -const labelStartLink = { - name: 'labelStartLink', - resolveAll: labelEnd.resolveAll, - tokenize: tokenizeLabelStartLink -}; + // 5. + // 5.1 + const responses = [] -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeLabelStartLink(effects, ok, nok) { - const self = this; - return start; + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) - /** - * Start of label (link) start. - * - * ```markdown - * > | a [b] c - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("labelLink"); - effects.enter("labelMarker"); - effects.consume(code); - effects.exit("labelMarker"); - effects.exit("labelLink"); - return after; - } + // 5.3.2 + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]) + } + } - /** @type {State} */ - function after(code) { - // To do: this isn’t needed in `micromark-extension-gfm-footnote`, - // remove. - // Hidden footnotes hook. - /* c8 ignore next 3 */ - return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/hard-break-escape.js -/** - * @import { - * Construct, - * State, - * TokenizeContext, - * Tokenizer - * } from 'micromark-util-types' - */ + // 5.4 + // We don't implement CORs so we don't need to loop over the responses, yay! + // 5.5.1 + const responseList = [] -/** @type {Construct} */ -const hardBreakEscape = { - name: 'hardBreakEscape', - tokenize: tokenizeHardBreakEscape -}; + // 5.5.2 + for (const response of responses) { + // 5.5.2.1 + const responseObject = new Response(response.body?.source ?? null) + const body = responseObject[kState].body + responseObject[kState] = response + responseObject[kState].body = body + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeHardBreakEscape(effects, ok, nok) { - return start; + responseList.push(responseObject) + } - /** - * Start of a hard break (escape). - * - * ```markdown - * > | a\ - * ^ - * | b - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("hardBreakEscape"); - effects.consume(code); - return after; + // 6. + return Object.freeze(responseList) } - /** - * After `\`, at eol. - * - * ```markdown - * > | a\ - * ^ - * | b - * ``` - * - * @type {State} - */ - function after(code) { - if (markdownLineEnding(code)) { - effects.exit("hardBreakEscape"); - return ok(code); - } - return nok(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-core-commonmark/lib/code-text.js -/** - * @import { - * Construct, - * Previous, - * Resolver, - * State, - * TokenizeContext, - * Tokenizer, - * Token - * } from 'micromark-util-types' - */ + async add (request) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }) + request = webidl.converters.RequestInfo(request) -/** @type {Construct} */ -const codeText = { - name: 'codeText', - previous, - resolve: resolveCodeText, - tokenize: tokenizeCodeText -}; + // 1. + const requests = [request] -// To do: next major: don’t resolve, like `markdown-rs`. -/** @type {Resolver} */ -function resolveCodeText(events) { - let tailExitIndex = events.length - 4; - let headEnterIndex = 3; - /** @type {number} */ - let index; - /** @type {number | undefined} */ - let enter; - - // If we start and end with an EOL or a space. - if ((events[headEnterIndex][1].type === "lineEnding" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === "lineEnding" || events[tailExitIndex][1].type === 'space')) { - index = headEnterIndex; - - // And we have data. - while (++index < tailExitIndex) { - if (events[index][1].type === "codeTextData") { - // Then we have padding. - events[headEnterIndex][1].type = "codeTextPadding"; - events[tailExitIndex][1].type = "codeTextPadding"; - headEnterIndex += 2; - tailExitIndex -= 2; - break; - } - } - } + // 2. + const responseArrayPromise = this.addAll(requests) - // Merge adjacent spaces and data. - index = headEnterIndex - 1; - tailExitIndex++; - while (++index <= tailExitIndex) { - if (enter === undefined) { - if (index !== tailExitIndex && events[index][1].type !== "lineEnding") { - enter = index; - } - } else if (index === tailExitIndex || events[index][1].type === "lineEnding") { - events[enter][1].type = "codeTextData"; - if (index !== enter + 2) { - events[enter][1].end = events[index - 1][1].end; - events.splice(enter + 2, index - enter - 2); - tailExitIndex -= index - enter - 2; - index = enter + 2; - } - enter = undefined; - } + // 3. + return await responseArrayPromise } - return events; -} -/** - * @this {TokenizeContext} - * Context. - * @type {Previous} - */ -function previous(code) { - // If there is a previous code, there will always be a tail. - return code !== 96 || this.events[this.events.length - 1][1].type === "characterEscape"; -} + async addAll (requests) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }) -/** - * @this {TokenizeContext} - * Context. - * @type {Tokenizer} - */ -function tokenizeCodeText(effects, ok, nok) { - const self = this; - let sizeOpen = 0; - /** @type {number} */ - let size; - /** @type {Token} */ - let token; - return start; + requests = webidl.converters['sequence<RequestInfo>'](requests) - /** - * Start of code (text). - * - * ```markdown - * > | `a` - * ^ - * > | \`a` - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter("codeText"); - effects.enter("codeTextSequence"); - return sequenceOpen(code); - } + // 1. + const responsePromises = [] - /** - * In opening sequence. - * - * ```markdown - * > | `a` - * ^ - * ``` - * - * @type {State} - */ - function sequenceOpen(code) { - if (code === 96) { - effects.consume(code); - sizeOpen++; - return sequenceOpen; - } - effects.exit("codeTextSequence"); - return between(code); - } + // 2. + const requestList = [] - /** - * Between something and something else. - * - * ```markdown - * > | `a` - * ^^ - * ``` - * - * @type {State} - */ - function between(code) { - // EOF. - if (code === null) { - return nok(code); - } + // 3. + for (const request of requests) { + if (typeof request === 'string') { + continue + } - // To do: next major: don’t do spaces in resolve, but when compiling, - // like `markdown-rs`. - // Tabs don’t work, and virtual spaces don’t make sense. - if (code === 32) { - effects.enter('space'); - effects.consume(code); - effects.exit('space'); - return between; - } + // 3.1 + const r = request[kState] - // Closing fence? Could also be data. - if (code === 96) { - token = effects.enter("codeTextSequence"); - size = 0; - return sequenceClose(code); - } - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return between; + // 3.2 + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme when method is not GET.' + }) + } } - // Data. - effects.enter("codeTextData"); - return data(code); - } + // 4. + /** @type {ReturnType<typeof fetching>[]} */ + const fetchControllers = [] - /** - * In data. - * - * ```markdown - * > | `a` - * ^ - * ``` - * - * @type {State} - */ - function data(code) { - if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) { - effects.exit("codeTextData"); - return between(code); - } - effects.consume(code); - return data; - } + // 5. + for (const request of requests) { + // 5.1 + const r = new Request(request)[kState] - /** - * In closing sequence. - * - * ```markdown - * > | `a` - * ^ - * ``` - * - * @type {State} - */ - function sequenceClose(code) { - // More. - if (code === 96) { - effects.consume(code); - size++; - return sequenceClose; - } + // 5.2 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme.' + }) + } - // Done! - if (size === sizeOpen) { - effects.exit("codeTextSequence"); - effects.exit("codeText"); - return ok(code); - } + // 5.4 + r.initiator = 'fetch' + r.destination = 'subresource' - // More or less accents: mark as data. - token.type = "codeTextData"; - return data(code); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/constructs.js -/** - * @import {Extension} from 'micromark-util-types' - */ + // 5.5 + requestList.push(r) + // 5.6 + const responsePromise = createDeferredPromise() + // 5.7 + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse (response) { + // 1. + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + })) + } else if (response.headersList.contains('vary')) { // 2. + // 2.1 + const fieldValues = getFieldValues(response.headersList.get('vary')) + // 2.2 + for (const fieldValue of fieldValues) { + // 2.2.1 + if (fieldValue === '*') { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + })) -/** @satisfies {Extension['document']} */ -const constructs_document = { - [42]: list, - [43]: list, - [45]: list, - [48]: list, - [49]: list, - [50]: list, - [51]: list, - [52]: list, - [53]: list, - [54]: list, - [55]: list, - [56]: list, - [57]: list, - [62]: blockQuote -}; + for (const controller of fetchControllers) { + controller.abort() + } -/** @satisfies {Extension['contentInitial']} */ -const contentInitial = { - [91]: definition -}; + return + } + } + } + }, + processResponseEndOfBody (response) { + // 1. + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')) + return + } -/** @satisfies {Extension['flowInitial']} */ -const flowInitial = { - [-2]: codeIndented, - [-1]: codeIndented, - [32]: codeIndented -}; + // 2. + responsePromise.resolve(response) + } + })) -/** @satisfies {Extension['flow']} */ -const constructs_flow = { - [35]: headingAtx, - [42]: thematicBreak, - [45]: [setextUnderline, thematicBreak], - [60]: htmlFlow, - [61]: setextUnderline, - [95]: thematicBreak, - [96]: codeFenced, - [126]: codeFenced -}; + // 5.8 + responsePromises.push(responsePromise.promise) + } -/** @satisfies {Extension['string']} */ -const constructs_string = { - [38]: characterReference, - [92]: characterEscape -}; + // 6. + const p = Promise.all(responsePromises) -/** @satisfies {Extension['text']} */ -const constructs_text = { - [-5]: lineEnding, - [-4]: lineEnding, - [-3]: lineEnding, - [33]: labelStartImage, - [38]: characterReference, - [42]: attention, - [60]: [autolink, htmlText], - [91]: labelStartLink, - [92]: [hardBreakEscape, characterEscape], - [93]: labelEnd, - [95]: attention, - [96]: codeText -}; + // 7. + const responses = await p -/** @satisfies {Extension['insideSpan']} */ -const insideSpan = { - null: [attention, resolver] -}; + // 7.1 + const operations = [] -/** @satisfies {Extension['attentionMarkers']} */ -const attentionMarkers = { - null: [42, 95] -}; + // 7.2 + let index = 0 -/** @satisfies {Extension['disable']} */ -const disable = { - null: [] -}; -;// CONCATENATED MODULE: ./node_modules/micromark/lib/create-tokenizer.js -/** - * @import { - * Chunk, - * Code, - * ConstructRecord, - * Construct, - * Effects, - * InitialConstruct, - * ParseContext, - * Point, - * State, - * TokenizeContext, - * Token - * } from 'micromark-util-types' - */ + // 7.3 + for (const response of responses) { + // 7.3.1 + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 7.3.2 + request: requestList[index], // 7.3.3 + response // 7.3.4 + } -/** - * @callback Restore - * Restore the state. - * @returns {undefined} - * Nothing. - * - * @typedef Info - * Info. - * @property {Restore} restore - * Restore. - * @property {number} from - * From. - * - * @callback ReturnHandle - * Handle a successful run. - * @param {Construct} construct - * Construct. - * @param {Info} info - * Info. - * @returns {undefined} - * Nothing. - */ + operations.push(operation) // 7.3.5 + index++ // 7.3.6 + } + // 7.5 + const cacheJobPromise = createDeferredPromise() + // 7.6.1 + let errorData = null -/** - * Create a tokenizer. - * Tokenizers deal with one type of data (e.g., containers, flow, text). - * The parser is the object dealing with it all. - * `initialize` works like other constructs, except that only its `tokenize` - * function is used, in which case it doesn’t receive an `ok` or `nok`. - * `from` can be given to set the point before the first character, although - * when further lines are indented, they must be set with `defineSkip`. - * - * @param {ParseContext} parser - * Parser. - * @param {InitialConstruct} initialize - * Construct. - * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from] - * Point (optional). - * @returns {TokenizeContext} - * Context. - */ -function createTokenizer(parser, initialize, from) { - /** @type {Point} */ - let point = { - _bufferIndex: -1, - _index: 0, - line: from && from.line || 1, - column: from && from.column || 1, - offset: from && from.offset || 0 - }; - /** @type {Record<string, number>} */ - const columnStart = {}; - /** @type {Array<Construct>} */ - const resolveAllConstructs = []; - /** @type {Array<Chunk>} */ - let chunks = []; - /** @type {Array<Token>} */ - let stack = []; - /** @type {boolean | undefined} */ - let consumed = true; + // 7.6.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } - /** - * Tools used for tokenizing. - * - * @type {Effects} - */ - const effects = { - attempt: constructFactory(onsuccessfulconstruct), - check: constructFactory(onsuccessfulcheck), - consume, - enter, - exit, - interrupt: constructFactory(onsuccessfulcheck, { - interrupt: true + // 7.6.3 + queueMicrotask(() => { + // 7.6.3.1 + if (errorData === null) { + cacheJobPromise.resolve(undefined) + } else { + // 7.6.3.2 + cacheJobPromise.reject(errorData) + } }) - }; - - /** - * State and tools for resolving and serializing. - * - * @type {TokenizeContext} - */ - const context = { - code: null, - containerState: {}, - defineSkip, - events: [], - now, - parser, - previous: null, - sliceSerialize, - sliceStream, - write - }; - - /** - * The state function. - * - * @type {State | undefined} - */ - let state = initialize.tokenize.call(context, effects); - /** - * Track which character we expect to be consumed, to catch bugs. - * - * @type {Code} - */ - let expectedCode; - if (initialize.resolveAll) { - resolveAllConstructs.push(initialize); + // 7.7 + return cacheJobPromise.promise } - return context; - - /** @type {TokenizeContext['write']} */ - function write(slice) { - chunks = push(chunks, slice); - main(); - // Exit if we’re not done, resolve might change stuff. - if (chunks[chunks.length - 1] !== null) { - return []; - } - addResult(initialize, 0); - - // Otherwise, resolve, and exit. - context.events = resolveAll(resolveAllConstructs, context.events, context); - return context.events; - } + async put (request, response) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }) - // - // Tools. - // + request = webidl.converters.RequestInfo(request) + response = webidl.converters.Response(response) - /** @type {TokenizeContext['sliceSerialize']} */ - function sliceSerialize(token, expandTabs) { - return serializeChunks(sliceStream(token), expandTabs); - } + // 1. + let innerRequest = null - /** @type {TokenizeContext['sliceStream']} */ - function sliceStream(token) { - return sliceChunks(chunks, token); - } + // 2. + if (request instanceof Request) { + innerRequest = request[kState] + } else { // 3. + innerRequest = new Request(request)[kState] + } - /** @type {TokenizeContext['now']} */ - function now() { - // This is a hot path, so we clone manually instead of `Object.assign({}, point)` - const { - _bufferIndex, - _index, - line, - column, - offset - } = point; - return { - _bufferIndex, - _index, - line, - column, - offset - }; - } + // 4. + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Expected an http/s scheme when method is not GET' + }) + } - /** @type {TokenizeContext['defineSkip']} */ - function defineSkip(value) { - columnStart[value.line] = value.column; - accountForPotentialSkip(); - } + // 5. + const innerResponse = response[kState] - // - // State management. - // + // 6. + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got 206 status' + }) + } - /** - * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by - * `consume`). - * Here is where we walk through the chunks, which either include strings of - * several characters, or numerical character codes. - * The reason to do this in a loop instead of a call is so the stack can - * drain. - * - * @returns {undefined} - * Nothing. - */ - function main() { - /** @type {number} */ - let chunkIndex; - while (point._index < chunks.length) { - const chunk = chunks[point._index]; + // 7. + if (innerResponse.headersList.contains('vary')) { + // 7.1. + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')) - // If we’re in a buffer chunk, loop through it. - if (typeof chunk === 'string') { - chunkIndex = point._index; - if (point._bufferIndex < 0) { - point._bufferIndex = 0; - } - while (point._index === chunkIndex && point._bufferIndex < chunk.length) { - go(chunk.charCodeAt(point._bufferIndex)); + // 7.2. + for (const fieldValue of fieldValues) { + // 7.2.1 + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got * vary field value' + }) } - } else { - go(chunk); } } - } - - /** - * Deal with one code. - * - * @param {Code} code - * Code. - * @returns {undefined} - * Nothing. - */ - function go(code) { - consumed = undefined; - expectedCode = code; - state = state(code); - } - - /** @type {Effects['consume']} */ - function consume(code) { - if (markdownLineEnding(code)) { - point.line++; - point.column = 1; - point.offset += code === -3 ? 2 : 1; - accountForPotentialSkip(); - } else if (code !== -1) { - point.column++; - point.offset++; - } - - // Not in a string chunk. - if (point._bufferIndex < 0) { - point._index++; - } else { - point._bufferIndex++; - // At end of string chunk. - if (point._bufferIndex === - // Points w/ non-negative `_bufferIndex` reference - // strings. - /** @type {string} */ - chunks[point._index].length) { - point._bufferIndex = -1; - point._index++; - } + // 8. + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Response body is locked or disturbed' + }) } - // Expose the previous character. - context.previous = code; + // 9. + const clonedResponse = cloneResponse(innerResponse) - // Mark as consumed. - consumed = true; - } + // 10. + const bodyReadPromise = createDeferredPromise() - /** @type {Effects['enter']} */ - function enter(type, fields) { - /** @type {Token} */ - // @ts-expect-error Patch instead of assign required fields to help GC. - const token = fields || {}; - token.type = type; - token.start = now(); - context.events.push(['enter', token, context]); - stack.push(token); - return token; - } + // 11. + if (innerResponse.body != null) { + // 11.1 + const stream = innerResponse.body.stream - /** @type {Effects['exit']} */ - function exit(type) { - const token = stack.pop(); - token.end = now(); - context.events.push(['exit', token, context]); - return token; - } + // 11.2 + const reader = stream.getReader() - /** - * Use results. - * - * @type {ReturnHandle} - */ - function onsuccessfulconstruct(construct, info) { - addResult(construct, info.from); - } + // 11.3 + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject) + } else { + bodyReadPromise.resolve(undefined) + } - /** - * Discard results. - * - * @type {ReturnHandle} - */ - function onsuccessfulcheck(_, info) { - info.restore(); - } + // 12. + /** @type {CacheBatchOperation[]} */ + const operations = [] - /** - * Factory to attempt/check/interrupt. - * - * @param {ReturnHandle} onreturn - * Callback. - * @param {{interrupt?: boolean | undefined} | undefined} [fields] - * Fields. - */ - function constructFactory(onreturn, fields) { - return hook; + // 13. + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 14. + request: innerRequest, // 15. + response: clonedResponse // 16. + } - /** - * Handle either an object mapping codes to constructs, a list of - * constructs, or a single construct. - * - * @param {Array<Construct> | ConstructRecord | Construct} constructs - * Constructs. - * @param {State} returnState - * State. - * @param {State | undefined} [bogusState] - * State. - * @returns {State} - * State. - */ - function hook(constructs, returnState, bogusState) { - /** @type {ReadonlyArray<Construct>} */ - let listOfConstructs; - /** @type {number} */ - let constructIndex; - /** @type {Construct} */ - let currentConstruct; - /** @type {Info} */ - let info; - return Array.isArray(constructs) ? /* c8 ignore next 1 */ - handleListOfConstructs(constructs) : 'tokenize' in constructs ? - // Looks like a construct. - handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs); + // 17. + operations.push(operation) - /** - * Handle a list of construct. - * - * @param {ConstructRecord} map - * Constructs. - * @returns {State} - * State. - */ - function handleMapOfConstructs(map) { - return start; - - /** @type {State} */ - function start(code) { - const left = code !== null && map[code]; - const all = code !== null && map.null; - const list = [ - // To do: add more extension tests. - /* c8 ignore next 2 */ - ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])]; - return handleListOfConstructs(list)(code); - } - } + // 19. + const bytes = await bodyReadPromise.promise - /** - * Handle a list of construct. - * - * @param {ReadonlyArray<Construct>} list - * Constructs. - * @returns {State} - * State. - */ - function handleListOfConstructs(list) { - listOfConstructs = list; - constructIndex = 0; - if (list.length === 0) { - return bogusState; - } - return handleConstruct(list[constructIndex]); - } + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes + } - /** - * Handle a single construct. - * - * @param {Construct} construct - * Construct. - * @returns {State} - * State. - */ - function handleConstruct(construct) { - return start; - - /** @type {State} */ - function start(code) { - // To do: not needed to store if there is no bogus state, probably? - // Currently doesn’t work because `inspect` in document does a check - // w/o a bogus, which doesn’t make sense. But it does seem to help perf - // by not storing. - info = store(); - currentConstruct = construct; - if (!construct.partial) { - context.currentConstruct = construct; - } + // 19.1 + const cacheJobPromise = createDeferredPromise() - // Always populated by defaults. + // 19.2.1 + let errorData = null - if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) { - return nok(code); - } - return construct.tokenize.call( - // If we do have fields, create an object w/ `context` as its - // prototype. - // This allows a “live binding”, which is needed for `interrupt`. - fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code); - } - } + // 19.2.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } - /** @type {State} */ - function ok(code) { - consumed = true; - onreturn(currentConstruct, info); - return returnState; + // 19.2.3 + queueMicrotask(() => { + // 19.2.3.1 + if (errorData === null) { + cacheJobPromise.resolve() + } else { // 19.2.3.2 + cacheJobPromise.reject(errorData) } + }) - /** @type {State} */ - function nok(code) { - consumed = true; - info.restore(); - if (++constructIndex < listOfConstructs.length) { - return handleConstruct(listOfConstructs[constructIndex]); - } - return bogusState; - } - } + return cacheJobPromise.promise } - /** - * @param {Construct} construct - * Construct. - * @param {number} from - * From. - * @returns {undefined} - * Nothing. - */ - function addResult(construct, from) { - if (construct.resolveAll && !resolveAllConstructs.includes(construct)) { - resolveAllConstructs.push(construct); - } - if (construct.resolve) { - splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context)); - } - if (construct.resolveTo) { - context.events = construct.resolveTo(context.events, context); - } - } + async delete (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }) - /** - * Store state. - * - * @returns {Info} - * Info. - */ - function store() { - const startPoint = now(); - const startPrevious = context.previous; - const startCurrentConstruct = context.currentConstruct; - const startEventsIndex = context.events.length; - const startStack = Array.from(stack); - return { - from: startEventsIndex, - restore - }; + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) /** - * Restore state. - * - * @returns {undefined} - * Nothing. + * @type {Request} */ - function restore() { - point = startPoint; - context.previous = startPrevious; - context.currentConstruct = startCurrentConstruct; - context.events.length = startEventsIndex; - stack = startStack; - accountForPotentialSkip(); - } - } + let r = null - /** - * Move the current point a bit forward in the line when it’s on a column - * skip. - * - * @returns {undefined} - * Nothing. - */ - function accountForPotentialSkip() { - if (point.line in columnStart && point.column < 2) { - point.column = columnStart[point.line]; - point.offset += columnStart[point.line] - 1; - } - } -} + if (request instanceof Request) { + r = request[kState] -/** - * Get the chunks from a slice of chunks in the range of a token. - * - * @param {ReadonlyArray<Chunk>} chunks - * Chunks. - * @param {Pick<Token, 'end' | 'start'>} token - * Token. - * @returns {Array<Chunk>} - * Chunks. - */ -function sliceChunks(chunks, token) { - const startIndex = token.start._index; - const startBufferIndex = token.start._bufferIndex; - const endIndex = token.end._index; - const endBufferIndex = token.end._bufferIndex; - /** @type {Array<Chunk>} */ - let view; - if (startIndex === endIndex) { - // @ts-expect-error `_bufferIndex` is used on string chunks. - view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]; - } else { - view = chunks.slice(startIndex, endIndex); - if (startBufferIndex > -1) { - const head = view[0]; - if (typeof head === 'string') { - view[0] = head.slice(startBufferIndex); - /* c8 ignore next 4 -- used to be used, no longer */ - } else { - view.shift(); + if (r.method !== 'GET' && !options.ignoreMethod) { + return false } - } - if (endBufferIndex > 0) { - // @ts-expect-error `_bufferIndex` is used on string chunks. - view.push(chunks[endIndex].slice(0, endBufferIndex)); - } - } - return view; -} + } else { + assert(typeof request === 'string') -/** - * Get the string value of a slice of chunks. - * - * @param {ReadonlyArray<Chunk>} chunks - * Chunks. - * @param {boolean | undefined} [expandTabs=false] - * Whether to expand tabs (default: `false`). - * @returns {string} - * Result. - */ -function serializeChunks(chunks, expandTabs) { - let index = -1; - /** @type {Array<string>} */ - const result = []; - /** @type {boolean | undefined} */ - let atTab; - while (++index < chunks.length) { - const chunk = chunks[index]; - /** @type {string} */ - let value; - if (typeof chunk === 'string') { - value = chunk; - } else switch (chunk) { - case -5: - { - value = "\r"; - break; - } - case -4: - { - value = "\n"; - break; - } - case -3: - { - value = "\r" + "\n"; - break; - } - case -2: - { - value = expandTabs ? " " : "\t"; - break; - } - case -1: - { - if (!expandTabs && atTab) continue; - value = " "; - break; - } - default: - { - // Currently only replacement character. - value = String.fromCharCode(chunk); - } + r = new Request(request)[kState] } - atTab = chunk === -2; - result.push(value); - } - return result.join(''); -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/parse.js -/** - * @import { - * Create, - * FullNormalizedExtension, - * InitialConstruct, - * ParseContext, - * ParseOptions - * } from 'micromark-util-types' - */ - + /** @type {CacheBatchOperation[]} */ + const operations = [] + /** @type {CacheBatchOperation} */ + const operation = { + type: 'delete', + request: r, + options + } + operations.push(operation) + const cacheJobPromise = createDeferredPromise() + let errorData = null + let requestResponses + try { + requestResponses = this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length) + } else { + cacheJobPromise.reject(errorData) + } + }) -/** - * @param {ParseOptions | null | undefined} [options] - * Configuration (optional). - * @returns {ParseContext} - * Parser. - */ -function parse(options) { - const settings = options || {}; - const constructs = /** @type {FullNormalizedExtension} */ - combineExtensions([constructs_namespaceObject, ...(settings.extensions || [])]); - - /** @type {ParseContext} */ - const parser = { - constructs, - content: create(content), - defined: [], - document: create(document_document), - flow: create(flow), - lazy: {}, - string: create(string), - text: create(text_text) - }; - return parser; + return cacheJobPromise.promise + } /** - * @param {InitialConstruct} initial - * Construct to start with. - * @returns {Create} - * Create a tokenizer. + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} */ - function create(initial) { - return creator; - /** @type {Create} */ - function creator(from) { - return createTokenizer(parser, initial, from); - } - } -} -;// CONCATENATED MODULE: ./node_modules/micromark/lib/preprocess.js -/** - * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types' - */ + async keys (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) -/** - * @callback Preprocessor - * Preprocess a value. - * @param {Value} value - * Value. - * @param {Encoding | null | undefined} [encoding] - * Encoding when `value` is a typed array (optional). - * @param {boolean | null | undefined} [end=false] - * Whether this is the last chunk (default: `false`). - * @returns {Array<Chunk>} - * Chunks. - */ + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + // 1. + let r = null -const search = /[\0\t\n\r]/g; + // 2. + if (request !== undefined) { + // 2.1 + if (request instanceof Request) { + // 2.1.1 + r = request[kState] -/** - * @returns {Preprocessor} - * Preprocess a value. - */ -function preprocess() { - let column = 1; - let buffer = ''; - /** @type {boolean | undefined} */ - let start = true; - /** @type {boolean | undefined} */ - let atCarriageReturn; - return preprocessor; - - /** @type {Preprocessor} */ - // eslint-disable-next-line complexity - function preprocessor(value, encoding, end) { - /** @type {Array<Chunk>} */ - const chunks = []; - /** @type {RegExpMatchArray | null} */ - let match; - /** @type {number} */ - let next; - /** @type {number} */ - let startPosition; - /** @type {number} */ - let endPosition; - /** @type {Code} */ - let code; - value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value)); - startPosition = 0; - buffer = ''; - if (start) { - // To do: `markdown-rs` actually parses BOMs (byte order mark). - if (value.charCodeAt(0) === 65279) { - startPosition++; - } - start = undefined; - } - while (startPosition < value.length) { - search.lastIndex = startPosition; - match = search.exec(value); - endPosition = match && match.index !== undefined ? match.index : value.length; - code = value.charCodeAt(endPosition); - if (!match) { - buffer = value.slice(startPosition); - break; - } - if (code === 10 && startPosition === endPosition && atCarriageReturn) { - chunks.push(-3); - atCarriageReturn = undefined; - } else { - if (atCarriageReturn) { - chunks.push(-5); - atCarriageReturn = undefined; - } - if (startPosition < endPosition) { - chunks.push(value.slice(startPosition, endPosition)); - column += endPosition - startPosition; - } - switch (code) { - case 0: - { - chunks.push(65533); - column++; - break; - } - case 9: - { - next = Math.ceil(column / 4) * 4; - chunks.push(-2); - while (column++ < next) chunks.push(-1); - break; - } - case 10: - { - chunks.push(-4); - column = 1; - break; - } - default: - { - atCarriageReturn = true; - column = 1; - } + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] } + } else if (typeof request === 'string') { // 2.2 + r = new Request(request)[kState] } - startPosition = endPosition + 1; } - if (end) { - if (atCarriageReturn) chunks.push(-5); - if (buffer) chunks.push(buffer); - chunks.push(null); - } - return chunks; - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-util-decode-numeric-character-reference/index.js -/** - * Turn the number (in string form as either hexa- or plain decimal) coming from - * a numeric character reference into a character. - * - * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes - * non-characters and control characters safe. - * - * @param {string} value - * Value to decode. - * @param {number} base - * Numeric base. - * @returns {string} - * Character. - */ -function decodeNumericCharacterReference(value, base) { - const code = Number.parseInt(value, base); - if ( - // C0 except for HT, LF, FF, CR, space. - code < 9 || code === 11 || code > 13 && code < 32 || - // Control character (DEL) of C0, and C1 controls. - code > 126 && code < 160 || - // Lone high surrogates and low surrogates. - code > 55_295 && code < 57_344 || - // Noncharacters. - code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */ - (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */ - // Out of range - code > 1_114_111) { - return "\uFFFD"; - } - return String.fromCodePoint(code); -} -;// CONCATENATED MODULE: ./node_modules/micromark-util-decode-string/index.js + // 4. + const promise = createDeferredPromise() -const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi; - -/** - * Decode markdown strings (which occur in places such as fenced code info - * strings, destinations, labels, and titles). - * - * The “string” content type allows character escapes and -references. - * This decodes those. - * - * @param {string} value - * Value to decode. - * @returns {string} - * Decoded value. - */ -function decodeString(value) { - return value.replace(characterEscapeOrReference, decode); -} + // 5. + // 5.1 + const requests = [] -/** - * @param {string} $0 - * Match. - * @param {string} $1 - * Character escape. - * @param {string} $2 - * Character reference. - * @returns {string} - * Decoded value - */ -function decode($0, $1, $2) { - if ($1) { - // Escape. - return $1; - } + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + // 5.2.1.1 + requests.push(requestResponse[0]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) - // Reference. - const head = $2.charCodeAt(0); - if (head === 35) { - const head = $2.charCodeAt(1); - const hex = head === 120 || head === 88; - return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10); - } - return decodeNamedCharacterReference($2) || $0; -} -;// CONCATENATED MODULE: ./node_modules/unist-util-stringify-position/lib/index.js -/** - * @typedef {import('unist').Node} Node - * @typedef {import('unist').Point} Point - * @typedef {import('unist').Position} Position - */ + // 5.3.2 + for (const requestResponse of requestResponses) { + // 5.3.2.1 + requests.push(requestResponse[0]) + } + } -/** - * @typedef NodeLike - * @property {string} type - * @property {PositionLike | null | undefined} [position] - * - * @typedef PointLike - * @property {number | null | undefined} [line] - * @property {number | null | undefined} [column] - * @property {number | null | undefined} [offset] - * - * @typedef PositionLike - * @property {PointLike | null | undefined} [start] - * @property {PointLike | null | undefined} [end] - */ + // 5.4 + queueMicrotask(() => { + // 5.4.1 + const requestList = [] -/** - * Serialize the positional info of a point, position (start and end points), - * or node. - * - * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value] - * Node, position, or point. - * @returns {string} - * Pretty printed positional info of a node (`string`). - * - * In the format of a range `ls:cs-le:ce` (when given `node` or `position`) - * or a point `l:c` (when given `point`), where `l` stands for line, `c` for - * column, `s` for `start`, and `e` for end. - * An empty string (`''`) is returned if the given value is neither `node`, - * `position`, nor `point`. - */ -function stringifyPosition(value) { - // Nothing. - if (!value || typeof value !== 'object') { - return '' - } + // 5.4.2 + for (const request of requests) { + const requestObject = new Request('https://a') + requestObject[kState] = request + requestObject[kHeaders][kHeadersList] = request.headersList + requestObject[kHeaders][kGuard] = 'immutable' + requestObject[kRealm] = request.client - // Node. - if ('position' in value || 'type' in value) { - return position(value.position) - } + // 5.4.2.1 + requestList.push(requestObject) + } - // Position. - if ('start' in value || 'end' in value) { - return position(value) - } + // 5.4.3 + promise.resolve(Object.freeze(requestList)) + }) - // Point. - if ('line' in value || 'column' in value) { - return point(value) + return promise.promise } - // ? - return '' -} - -/** - * @param {Point | PointLike | null | undefined} point - * @returns {string} - */ -function point(point) { - return index(point && point.line) + ':' + index(point && point.column) -} - -/** - * @param {Position | PositionLike | null | undefined} pos - * @returns {string} - */ -function position(pos) { - return point(pos && pos.start) + '-' + point(pos && pos.end) -} + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations (operations) { + // 1. + const cache = this.#relevantRequestResponseList -/** - * @param {number | null | undefined} value - * @returns {number} - */ -function index(value) { - return value && typeof value === 'number' ? value : 1 -} + // 2. + const backupCache = [...cache] -;// CONCATENATED MODULE: ./node_modules/mdast-util-from-markdown/lib/index.js -/** - * @import { - * Break, - * Blockquote, - * Code, - * Definition, - * Emphasis, - * Heading, - * Html, - * Image, - * InlineCode, - * Link, - * ListItem, - * List, - * Nodes, - * Paragraph, - * PhrasingContent, - * ReferenceType, - * Root, - * Strong, - * Text, - * ThematicBreak - * } from 'mdast' - * @import { - * Encoding, - * Event, - * Token, - * Value - * } from 'micromark-util-types' - * @import {Point} from 'unist' - * @import { - * CompileContext, - * CompileData, - * Config, - * Extension, - * Handle, - * OnEnterError, - * Options - * } from './types.js' - */ + // 3. + const addedItems = [] + // 4.1 + const resultList = [] + try { + // 4.2 + for (const operation of operations) { + // 4.2.1 + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }) + } + // 4.2.2 + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }) + } + // 4.2.3 + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError') + } + // 4.2.4 + let requestResponses + // 4.2.5 + if (operation.type === 'delete') { + // 4.2.5.1 + requestResponses = this.#queryCache(operation.request, operation.options) + // TODO: the spec is wrong, this is needed to pass WPTs + if (requestResponses.length === 0) { + return [] + } -const lib_own = {}.hasOwnProperty; - -/** - * Turn markdown into a syntax tree. - * - * @overload - * @param {Value} value - * @param {Encoding | null | undefined} [encoding] - * @param {Options | null | undefined} [options] - * @returns {Root} - * - * @overload - * @param {Value} value - * @param {Options | null | undefined} [options] - * @returns {Root} - * - * @param {Value} value - * Markdown to parse. - * @param {Encoding | Options | null | undefined} [encoding] - * Character encoding for when `value` is `Buffer`. - * @param {Options | null | undefined} [options] - * Configuration. - * @returns {Root} - * mdast tree. - */ -function fromMarkdown(value, encoding, options) { - if (typeof encoding !== 'string') { - options = encoding; - encoding = undefined; - } - return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true)))); -} - -/** - * Note this compiler only understand complete buffering, not streaming. - * - * @param {Options | null | undefined} [options] - */ -function compiler(options) { - /** @type {Config} */ - const config = { - transforms: [], - canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'], - enter: { - autolink: opener(link), - autolinkProtocol: onenterdata, - autolinkEmail: onenterdata, - atxHeading: opener(heading), - blockQuote: opener(blockQuote), - characterEscape: onenterdata, - characterReference: onenterdata, - codeFenced: opener(codeFlow), - codeFencedFenceInfo: buffer, - codeFencedFenceMeta: buffer, - codeIndented: opener(codeFlow, buffer), - codeText: opener(codeText, buffer), - codeTextData: onenterdata, - data: onenterdata, - codeFlowValue: onenterdata, - definition: opener(definition), - definitionDestinationString: buffer, - definitionLabelString: buffer, - definitionTitleString: buffer, - emphasis: opener(emphasis), - hardBreakEscape: opener(hardBreak), - hardBreakTrailing: opener(hardBreak), - htmlFlow: opener(html, buffer), - htmlFlowData: onenterdata, - htmlText: opener(html, buffer), - htmlTextData: onenterdata, - image: opener(image), - label: buffer, - link: opener(link), - listItem: opener(listItem), - listItemValue: onenterlistitemvalue, - listOrdered: opener(list, onenterlistordered), - listUnordered: opener(list), - paragraph: opener(paragraph), - reference: onenterreference, - referenceString: buffer, - resourceDestinationString: buffer, - resourceTitleString: buffer, - setextHeading: opener(heading), - strong: opener(strong), - thematicBreak: opener(thematicBreak) - }, - exit: { - atxHeading: closer(), - atxHeadingSequence: onexitatxheadingsequence, - autolink: closer(), - autolinkEmail: onexitautolinkemail, - autolinkProtocol: onexitautolinkprotocol, - blockQuote: closer(), - characterEscapeValue: onexitdata, - characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, - characterReferenceMarkerNumeric: onexitcharacterreferencemarker, - characterReferenceValue: onexitcharacterreferencevalue, - characterReference: onexitcharacterreference, - codeFenced: closer(onexitcodefenced), - codeFencedFence: onexitcodefencedfence, - codeFencedFenceInfo: onexitcodefencedfenceinfo, - codeFencedFenceMeta: onexitcodefencedfencemeta, - codeFlowValue: onexitdata, - codeIndented: closer(onexitcodeindented), - codeText: closer(onexitcodetext), - codeTextData: onexitdata, - data: onexitdata, - definition: closer(), - definitionDestinationString: onexitdefinitiondestinationstring, - definitionLabelString: onexitdefinitionlabelstring, - definitionTitleString: onexitdefinitiontitlestring, - emphasis: closer(), - hardBreakEscape: closer(onexithardbreak), - hardBreakTrailing: closer(onexithardbreak), - htmlFlow: closer(onexithtmlflow), - htmlFlowData: onexitdata, - htmlText: closer(onexithtmltext), - htmlTextData: onexitdata, - image: closer(onexitimage), - label: onexitlabel, - labelText: onexitlabeltext, - lineEnding: onexitlineending, - link: closer(onexitlink), - listItem: closer(), - listOrdered: closer(), - listUnordered: closer(), - paragraph: closer(), - referenceString: onexitreferencestring, - resourceDestinationString: onexitresourcedestinationstring, - resourceTitleString: onexitresourcetitlestring, - resource: onexitresource, - setextHeading: closer(onexitsetextheading), - setextHeadingLineSequence: onexitsetextheadinglinesequence, - setextHeadingText: onexitsetextheadingtext, - strong: closer(), - thematicBreak: closer() - } - }; - configure(config, (options || {}).mdastExtensions || []); - - /** @type {CompileData} */ - const data = {}; - return compile; - - /** - * Turn micromark events into an mdast tree. - * - * @param {Array<Event>} events - * Events. - * @returns {Root} - * mdast tree. - */ - function compile(events) { - /** @type {Root} */ - let tree = { - type: 'root', - children: [] - }; - /** @type {Omit<CompileContext, 'sliceSerialize'>} */ - const context = { - stack: [tree], - tokenStack: [], - config, - enter, - exit, - buffer, - resume, - data - }; - /** @type {Array<number>} */ - const listStack = []; - let index = -1; - while (++index < events.length) { - // We preprocess lists to add `listItem` tokens, and to infer whether - // items the list itself are spread out. - if (events[index][1].type === "listOrdered" || events[index][1].type === "listUnordered") { - if (events[index][0] === 'enter') { - listStack.push(index); - } else { - const tail = listStack.pop(); - index = prepareList(events, tail, index); - } - } - } - index = -1; - while (++index < events.length) { - const handler = config[events[index][0]]; - if (lib_own.call(handler, events[index][1].type)) { - handler[events[index][1].type].call(Object.assign({ - sliceSerialize: events[index][2].sliceSerialize - }, context), events[index][1]); - } - } - - // Handle tokens still being open. - if (context.tokenStack.length > 0) { - const tail = context.tokenStack[context.tokenStack.length - 1]; - const handler = tail[1] || defaultOnError; - handler.call(context, undefined, tail[0]); - } - - // Figure out `root` position. - tree.position = { - start: lib_point(events.length > 0 ? events[0][1].start : { - line: 1, - column: 1, - offset: 0 - }), - end: lib_point(events.length > 0 ? events[events.length - 2][1].end : { - line: 1, - column: 1, - offset: 0 - }) - }; - - // Call transforms. - index = -1; - while (++index < config.transforms.length) { - tree = config.transforms[index](tree) || tree; - } - return tree; - } + // 4.2.5.2 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) - /** - * @param {Array<Event>} events - * @param {number} start - * @param {number} length - * @returns {number} - */ - function prepareList(events, start, length) { - let index = start - 1; - let containerBalance = -1; - let listSpread = false; - /** @type {Token | undefined} */ - let listItem; - /** @type {number | undefined} */ - let lineIndex; - /** @type {number | undefined} */ - let firstBlankLineIndex; - /** @type {boolean | undefined} */ - let atMarker; - while (++index <= length) { - const event = events[index]; - switch (event[1].type) { - case "listUnordered": - case "listOrdered": - case "blockQuote": - { - if (event[0] === 'enter') { - containerBalance++; - } else { - containerBalance--; - } - atMarker = undefined; - break; + // 4.2.5.2.1 + cache.splice(idx, 1) } - case "lineEndingBlank": - { - if (event[0] === 'enter') { - if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) { - firstBlankLineIndex = index; - } - atMarker = undefined; - } - break; + } else if (operation.type === 'put') { // 4.2.6 + // 4.2.6.1 + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }) } - case "linePrefix": - case "listItemValue": - case "listItemMarker": - case "listItemPrefix": - case "listItemPrefixWhitespace": - { - // Empty. - break; - } - default: - { - atMarker = undefined; - } - } - if (!containerBalance && event[0] === 'enter' && event[1].type === "listItemPrefix" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === "listUnordered" || event[1].type === "listOrdered")) { - if (listItem) { - let tailIndex = index; - lineIndex = undefined; - while (tailIndex--) { - const tailEvent = events[tailIndex]; - if (tailEvent[1].type === "lineEnding" || tailEvent[1].type === "lineEndingBlank") { - if (tailEvent[0] === 'exit') continue; - if (lineIndex) { - events[lineIndex][1].type = "lineEndingBlank"; - listSpread = true; - } - tailEvent[1].type = "lineEnding"; - lineIndex = tailIndex; - } else if (tailEvent[1].type === "linePrefix" || tailEvent[1].type === "blockQuotePrefix" || tailEvent[1].type === "blockQuotePrefixWhitespace" || tailEvent[1].type === "blockQuoteMarker" || tailEvent[1].type === "listItemIndent") { - // Empty - } else { - break; - } - } - if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) { - listItem._spread = true; + // 4.2.6.2 + const r = operation.request + + // 4.2.6.3 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }) } - // Fix position. - listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end); - events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]); - index++; - length++; - } - - // Create a new list item. - if (event[1].type === "listItemPrefix") { - /** @type {Token} */ - const item = { - type: 'listItem', - _spread: false, - start: Object.assign({}, event[1].start), - // @ts-expect-error: we’ll add `end` in a second. - end: undefined - }; - listItem = item; - events.splice(index, 0, ['enter', item, event[2]]); - index++; - length++; - firstBlankLineIndex = undefined; - atMarker = true; - } - } - } - events[start][1]._spread = listSpread; - return length; - } + // 4.2.6.4 + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }) + } - /** - * Create an opener handle. - * - * @param {(token: Token) => Nodes} create - * Create a node. - * @param {Handle | undefined} [and] - * Optional function to also run. - * @returns {Handle} - * Handle. - */ - function opener(create, and) { - return open; + // 4.2.6.5 + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }) + } - /** - * @this {CompileContext} - * @param {Token} token - * @returns {undefined} - */ - function open(token) { - enter.call(this, create(token), token); - if (and) and.call(this, token); - } - } + // 4.2.6.6 + requestResponses = this.#queryCache(operation.request) - /** - * @type {CompileContext['buffer']} - */ - function buffer() { - this.stack.push({ - type: 'fragment', - children: [] - }); - } + // 4.2.6.7 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) - /** - * @type {CompileContext['enter']} - */ - function enter(node, token, errorHandler) { - const parent = this.stack[this.stack.length - 1]; - /** @type {Array<Nodes>} */ - const siblings = parent.children; - siblings.push(node); - this.stack.push(node); - this.tokenStack.push([token, errorHandler || undefined]); - node.position = { - start: lib_point(token.start), - // @ts-expect-error: `end` will be patched later. - end: undefined - }; - } + // 4.2.6.7.1 + cache.splice(idx, 1) + } - /** - * Create a closer handle. - * - * @param {Handle | undefined} [and] - * Optional function to also run. - * @returns {Handle} - * Handle. - */ - function closer(and) { - return close; + // 4.2.6.8 + cache.push([operation.request, operation.response]) - /** - * @this {CompileContext} - * @param {Token} token - * @returns {undefined} - */ - function close(token) { - if (and) and.call(this, token); - exit.call(this, token); - } - } + // 4.2.6.10 + addedItems.push([operation.request, operation.response]) + } - /** - * @type {CompileContext['exit']} - */ - function exit(token, onExitError) { - const node = this.stack.pop(); - const open = this.tokenStack.pop(); - if (!open) { - throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({ - start: token.start, - end: token.end - }) + '): it’s not open'); - } else if (open[0].type !== token.type) { - if (onExitError) { - onExitError.call(this, token, open[0]); - } else { - const handler = open[1] || defaultOnError; - handler.call(this, token, open[0]); + // 4.2.7 + resultList.push([operation.request, operation.response]) } - } - node.position.end = lib_point(token.end); - } - - /** - * @type {CompileContext['resume']} - */ - function resume() { - return lib_toString(this.stack.pop()); - } - // - // Handlers. - // + // 4.3 + return resultList + } catch (e) { // 5. + // 5.1 + this.#relevantRequestResponseList.length = 0 - /** - * @this {CompileContext} - * @type {Handle} - */ - function onenterlistordered() { - this.data.expectingFirstListItemValue = true; - } + // 5.2 + this.#relevantRequestResponseList = backupCache - /** - * @this {CompileContext} - * @type {Handle} - */ - function onenterlistitemvalue(token) { - if (this.data.expectingFirstListItemValue) { - const ancestor = this.stack[this.stack.length - 2]; - ancestor.start = Number.parseInt(this.sliceSerialize(token), 10); - this.data.expectingFirstListItemValue = undefined; + // 5.3 + throw e } } /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} */ - function onexitcodefencedfenceinfo() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.lang = data; - } + #queryCache (requestQuery, options, targetStorage) { + /** @type {requestResponseList} */ + const resultList = [] - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitcodefencedfencemeta() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.meta = data; - } + const storage = targetStorage ?? this.#relevantRequestResponseList - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitcodefencedfence() { - // Exit if this is the closing fence. - if (this.data.flowCodeInside) return; - this.buffer(); - this.data.flowCodeInside = true; - } + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse) + } + } - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitcodefenced() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.value = data.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ''); - this.data.flowCodeInside = undefined; + return resultList } /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} */ - function onexitcodeindented() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.value = data.replace(/(\r?\n|\r)$/g, ''); - } + #requestMatchesCachedItem (requestQuery, request, response = null, options) { + // if (options?.ignoreMethod === false && request.method === 'GET') { + // return false + // } - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitdefinitionlabelstring(token) { - const label = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.label = label; - node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase(); - } + const queryURL = new URL(requestQuery.url) - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitdefinitiontitlestring() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.title = data; - } + const cachedURL = new URL(request.url) - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitdefinitiondestinationstring() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.url = data; - } + if (options?.ignoreSearch) { + cachedURL.search = '' - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitatxheadingsequence(token) { - const node = this.stack[this.stack.length - 1]; - if (!node.depth) { - const depth = this.sliceSerialize(token).length; - node.depth = depth; + queryURL.search = '' } - } - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitsetextheadingtext() { - this.data.setextHeadingSlurpLineEnding = true; - } + if (!urlEquals(queryURL, cachedURL, true)) { + return false + } - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitsetextheadinglinesequence(token) { - const node = this.stack[this.stack.length - 1]; - node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2; - } + if ( + response == null || + options?.ignoreVary || + !response.headersList.contains('vary') + ) { + return true + } - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitsetextheading() { - this.data.setextHeadingSlurpLineEnding = undefined; - } + const fieldValues = getFieldValues(response.headersList.get('vary')) - /** - * @this {CompileContext} - * @type {Handle} - */ + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false + } - function onenterdata(token) { - const node = this.stack[this.stack.length - 1]; - /** @type {Array<Nodes>} */ - const siblings = node.children; - let tail = siblings[siblings.length - 1]; - if (!tail || tail.type !== 'text') { - // Add a new text node. - tail = text(); - tail.position = { - start: lib_point(token.start), - // @ts-expect-error: we’ll add `end` later. - end: undefined - }; - siblings.push(tail); + const requestValue = request.headersList.get(fieldValue) + const queryValue = requestQuery.headersList.get(fieldValue) + + // If one has the header and the other doesn't, or one has + // a different value than the other, return false + if (requestValue !== queryValue) { + return false + } } - this.stack.push(tail); + + return true } +} - /** - * @this {CompileContext} - * @type {Handle} - */ +Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) - function onexitdata(token) { - const tail = this.stack.pop(); - tail.value += this.sliceSerialize(token); - tail.position.end = lib_point(token.end); +const cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: false } +] - /** - * @this {CompileContext} - * @type {Handle} - */ +webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters) - function onexitlineending(token) { - const context = this.stack[this.stack.length - 1]; - // If we’re at a hard break, include the line ending in there. - if (this.data.atHardBreak) { - const tail = context.children[context.children.length - 1]; - tail.position.end = lib_point(token.end); - this.data.atHardBreak = undefined; - return; - } - if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) { - onenterdata.call(this, token); - onexitdata.call(this, token); - } +webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString } +]) - /** - * @this {CompileContext} - * @type {Handle} - */ +webidl.converters.Response = webidl.interfaceConverter(Response) - function onexithardbreak() { - this.data.atHardBreak = true; - } +webidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter( + webidl.converters.RequestInfo +) - /** - * @this {CompileContext} - * @type {Handle} - */ +module.exports = { + Cache +} - function onexithtmlflow() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.value = data; - } - /** - * @this {CompileContext} - * @type {Handle} - */ +/***/ }), - function onexithtmltext() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.value = data; - } +/***/ 44738: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * @this {CompileContext} - * @type {Handle} - */ +"use strict"; - function onexitcodetext() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.value = data; - } +const { kConstruct } = __nccwpck_require__(80296) +const { Cache } = __nccwpck_require__(50479) +const { webidl } = __nccwpck_require__(74222) +const { kEnumerableProperty } = __nccwpck_require__(3440) + +class CacheStorage { /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map<string, import('./cache').requestResponseList} */ + #caches = new Map() - function onexitlink() { - const node = this.stack[this.stack.length - 1]; - // Note: there are also `identifier` and `label` fields on this link node! - // These are used / cleaned here. - - // To do: clean. - if (this.data.inReference) { - /** @type {ReferenceType} */ - const referenceType = this.data.referenceType || 'shortcut'; - node.type += 'Reference'; - // @ts-expect-error: mutate. - node.referenceType = referenceType; - // @ts-expect-error: mutate. - delete node.url; - delete node.title; - } else { - // @ts-expect-error: mutate. - delete node.identifier; - // @ts-expect-error: mutate. - delete node.label; + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() } - this.data.referenceType = undefined; } - /** - * @this {CompileContext} - * @type {Handle} - */ + async match (request, options = {}) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.match' }) - function onexitimage() { - const node = this.stack[this.stack.length - 1]; - // Note: there are also `identifier` and `label` fields on this link node! - // These are used / cleaned here. - - // To do: clean. - if (this.data.inReference) { - /** @type {ReferenceType} */ - const referenceType = this.data.referenceType || 'shortcut'; - node.type += 'Reference'; - // @ts-expect-error: mutate. - node.referenceType = referenceType; - // @ts-expect-error: mutate. - delete node.url; - delete node.title; - } else { - // @ts-expect-error: mutate. - delete node.identifier; - // @ts-expect-error: mutate. - delete node.label; - } - this.data.referenceType = undefined; - } + request = webidl.converters.RequestInfo(request) + options = webidl.converters.MultiCacheQueryOptions(options) - /** - * @this {CompileContext} - * @type {Handle} - */ + // 1. + if (options.cacheName != null) { + // 1.1.1.1 + if (this.#caches.has(options.cacheName)) { + // 1.1.1.1.1 + const cacheList = this.#caches.get(options.cacheName) + const cache = new Cache(kConstruct, cacheList) - function onexitlabeltext(token) { - const string = this.sliceSerialize(token); - const ancestor = this.stack[this.stack.length - 2]; - // @ts-expect-error: stash this on the node, as it might become a reference - // later. - ancestor.label = decodeString(string); - // @ts-expect-error: same as above. - ancestor.identifier = normalizeIdentifier(string).toLowerCase(); - } + return await cache.match(request, options) + } + } else { // 2. + // 2.2 + for (const cacheList of this.#caches.values()) { + const cache = new Cache(kConstruct, cacheList) - /** - * @this {CompileContext} - * @type {Handle} - */ + // 2.2.1.2 + const response = await cache.match(request, options) - function onexitlabel() { - const fragment = this.stack[this.stack.length - 1]; - const value = this.resume(); - const node = this.stack[this.stack.length - 1]; - // Assume a reference. - this.data.inReference = true; - if (node.type === 'link') { - /** @type {Array<PhrasingContent>} */ - const children = fragment.children; - node.children = children; - } else { - node.alt = value; + if (response !== undefined) { + return response + } + } } } /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#cache-storage-has + * @param {string} cacheName + * @returns {Promise<boolean>} */ + async has (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }) - function onexitresourcedestinationstring() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.url = data; - } - - /** - * @this {CompileContext} - * @type {Handle} - */ + cacheName = webidl.converters.DOMString(cacheName) - function onexitresourcetitlestring() { - const data = this.resume(); - const node = this.stack[this.stack.length - 1]; - node.title = data; + // 2.1.1 + // 2.2 + return this.#caches.has(cacheName) } /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise<Cache>} */ + async open (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }) - function onexitresource() { - this.data.inReference = undefined; - } + cacheName = webidl.converters.DOMString(cacheName) - /** - * @this {CompileContext} - * @type {Handle} - */ + // 2.1 + if (this.#caches.has(cacheName)) { + // await caches.open('v1') !== await caches.open('v1') - function onenterreference() { - this.data.referenceType = 'collapsed'; - } + // 2.1.1 + const cache = this.#caches.get(cacheName) - /** - * @this {CompileContext} - * @type {Handle} - */ + // 2.1.1.1 + return new Cache(kConstruct, cache) + } - function onexitreferencestring(token) { - const label = this.resume(); - const node = this.stack[this.stack.length - 1]; - // @ts-expect-error: stash this on the node, as it might become a reference - // later. - node.label = label; - // @ts-expect-error: same as above. - node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase(); - this.data.referenceType = 'full'; - } + // 2.2 + const cache = [] - /** - * @this {CompileContext} - * @type {Handle} - */ + // 2.3 + this.#caches.set(cacheName, cache) - function onexitcharacterreferencemarker(token) { - this.data.characterReferenceType = token.type; + // 2.4 + return new Cache(kConstruct, cache) } /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise<boolean>} */ - function onexitcharacterreferencevalue(token) { - const data = this.sliceSerialize(token); - const type = this.data.characterReferenceType; - /** @type {string} */ - let value; - if (type) { - value = decodeNumericCharacterReference(data, type === "characterReferenceMarkerNumeric" ? 10 : 16); - this.data.characterReferenceType = undefined; - } else { - const result = decodeNamedCharacterReference(data); - value = result; - } - const tail = this.stack[this.stack.length - 1]; - tail.value += value; - } + async delete (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }) - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitcharacterreference(token) { - const tail = this.stack.pop(); - tail.position.end = lib_point(token.end); - } + cacheName = webidl.converters.DOMString(cacheName) - /** - * @this {CompileContext} - * @type {Handle} - */ - function onexitautolinkprotocol(token) { - onexitdata.call(this, token); - const node = this.stack[this.stack.length - 1]; - node.url = this.sliceSerialize(token); + return this.#caches.delete(cacheName) } /** - * @this {CompileContext} - * @type {Handle} + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} */ - function onexitautolinkemail(token) { - onexitdata.call(this, token); - const node = this.stack[this.stack.length - 1]; - node.url = 'mailto:' + this.sliceSerialize(token); - } + async keys () { + webidl.brandCheck(this, CacheStorage) - // - // Creaters. - // + // 2.1 + const keys = this.#caches.keys() - /** @returns {Blockquote} */ - function blockQuote() { - return { - type: 'blockquote', - children: [] - }; + // 2.2 + return [...keys] } +} - /** @returns {Code} */ - function codeFlow() { - return { - type: 'code', - lang: null, - meta: null, - value: '' - }; - } +Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) - /** @returns {InlineCode} */ - function codeText() { - return { - type: 'inlineCode', - value: '' - }; - } +module.exports = { + CacheStorage +} - /** @returns {Definition} */ - function definition() { - return { - type: 'definition', - identifier: '', - label: null, - title: null, - url: '' - }; - } - /** @returns {Emphasis} */ - function emphasis() { - return { - type: 'emphasis', - children: [] - }; - } +/***/ }), - /** @returns {Heading} */ - function heading() { - return { - type: 'heading', - // @ts-expect-error `depth` will be set later. - depth: 0, - children: [] - }; - } +/***/ 80296: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** @returns {Break} */ - function hardBreak() { - return { - type: 'break' - }; - } +"use strict"; - /** @returns {Html} */ - function html() { - return { - type: 'html', - value: '' - }; - } - /** @returns {Image} */ - function image() { - return { - type: 'image', - title: null, - url: '', - alt: null - }; - } +module.exports = { + kConstruct: (__nccwpck_require__(36443).kConstruct) +} - /** @returns {Link} */ - function link() { - return { - type: 'link', - title: null, - url: '', - children: [] - }; - } - /** - * @param {Token} token - * @returns {List} - */ - function list(token) { - return { - type: 'list', - ordered: token.type === 'listOrdered', - start: null, - spread: token._spread, - children: [] - }; - } +/***/ }), - /** - * @param {Token} token - * @returns {ListItem} - */ - function listItem(token) { - return { - type: 'listItem', - spread: token._spread, - checked: null, - children: [] - }; - } +/***/ 23993: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** @returns {Paragraph} */ - function paragraph() { - return { - type: 'paragraph', - children: [] - }; - } +"use strict"; - /** @returns {Strong} */ - function strong() { - return { - type: 'strong', - children: [] - }; - } - /** @returns {Text} */ - function text() { - return { - type: 'text', - value: '' - }; - } - - /** @returns {ThematicBreak} */ - function thematicBreak() { - return { - type: 'thematicBreak' - }; - } -} - -/** - * Copy a point-like value. - * - * @param {Point} d - * Point-like value. - * @returns {Point} - * unist point. - */ -function lib_point(d) { - return { - line: d.line, - column: d.column, - offset: d.offset - }; -} +const assert = __nccwpck_require__(42613) +const { URLSerializer } = __nccwpck_require__(94322) +const { isValidHeaderName } = __nccwpck_require__(15523) /** - * @param {Config} combined - * @param {Array<Array<Extension> | Extension>} extensions - * @returns {undefined} + * @see https://url.spec.whatwg.org/#concept-url-equals + * @param {URL} A + * @param {URL} B + * @param {boolean | undefined} excludeFragment + * @returns {boolean} */ -function configure(combined, extensions) { - let index = -1; - while (++index < extensions.length) { - const value = extensions[index]; - if (Array.isArray(value)) { - configure(combined, value); - } else { - extension(combined, value); - } - } -} +function urlEquals (A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment) -/** - * @param {Config} combined - * @param {Extension} extension - * @returns {undefined} - */ -function extension(combined, extension) { - /** @type {keyof Extension} */ - let key; - for (key in extension) { - if (lib_own.call(extension, key)) { - switch (key) { - case 'canContainEols': - { - const right = extension[key]; - if (right) { - combined[key].push(...right); - } - break; - } - case 'transforms': - { - const right = extension[key]; - if (right) { - combined[key].push(...right); - } - break; - } - case 'enter': - case 'exit': - { - const right = extension[key]; - if (right) { - Object.assign(combined[key], right); - } - break; - } - // No default - } - } - } -} + const serializedB = URLSerializer(B, excludeFragment) -/** @type {OnEnterError} */ -function defaultOnError(left, right) { - if (left) { - throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({ - start: left.start, - end: left.end - }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({ - start: right.start, - end: right.end - }) + ') is open'); - } else { - throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({ - start: right.start, - end: right.end - }) + ') is still open'); - } + return serializedA === serializedB } -;// CONCATENATED MODULE: ./node_modules/remark-parse/lib/index.js -/** - * @typedef {import('mdast').Root} Root - * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions - * @typedef {import('unified').Parser<Root>} Parser - * @typedef {import('unified').Processor<Root>} Processor - */ /** - * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options + * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 + * @param {string} header */ +function fieldValues (header) { + assert(header !== null) + const values = [] + for (let value of header.split(',')) { + value = value.trim() -/** - * Aadd support for parsing from markdown. - * - * @param {Readonly<Options> | null | undefined} [options] - * Configuration (optional). - * @returns {undefined} - * Nothing. - */ -function remarkParse(options) { - /** @type {Processor} */ - // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly. - const self = this - - self.parser = parser + if (!value.length) { + continue + } else if (!isValidHeaderName(value)) { + continue + } - /** - * @type {Parser} - */ - function parser(doc) { - return fromMarkdown(doc, { - ...self.data('settings'), - ...options, - // Note: these options are not in the readme. - // The goal is for them to be set by plugins on `data` instead of being - // passed by users. - extensions: self.data('micromarkExtensions') || [], - mdastExtensions: self.data('fromMarkdownExtensions') || [] - }) + values.push(value) } -} -;// CONCATENATED MODULE: ./node_modules/zwitch/index.js -/** - * @callback Handler - * Handle a value, with a certain ID field set to a certain value. - * The ID field is passed to `zwitch`, and it’s value is this function’s - * place on the `handlers` record. - * @param {...any} parameters - * Arbitrary parameters passed to the zwitch. - * The first will be an object with a certain ID field set to a certain value. - * @returns {any} - * Anything! - */ + return values +} -/** - * @callback UnknownHandler - * Handle values that do have a certain ID field, but it’s set to a value - * that is not listed in the `handlers` record. - * @param {unknown} value - * An object with a certain ID field set to an unknown value. - * @param {...any} rest - * Arbitrary parameters passed to the zwitch. - * @returns {any} - * Anything! - */ +module.exports = { + urlEquals, + fieldValues +} -/** - * @callback InvalidHandler - * Handle values that do not have a certain ID field. - * @param {unknown} value - * Any unknown value. - * @param {...any} rest - * Arbitrary parameters passed to the zwitch. - * @returns {void|null|undefined|never} - * This should crash or return nothing. - */ -/** - * @template {InvalidHandler} [Invalid=InvalidHandler] - * @template {UnknownHandler} [Unknown=UnknownHandler] - * @template {Record<string, Handler>} [Handlers=Record<string, Handler>] - * @typedef Options - * Configuration (required). - * @property {Invalid} [invalid] - * Handler to use for invalid values. - * @property {Unknown} [unknown] - * Handler to use for unknown values. - * @property {Handlers} [handlers] - * Handlers to use. - */ +/***/ }), -const zwitch_own = {}.hasOwnProperty +/***/ 86197: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Handle values based on a field. - * - * @template {InvalidHandler} [Invalid=InvalidHandler] - * @template {UnknownHandler} [Unknown=UnknownHandler] - * @template {Record<string, Handler>} [Handlers=Record<string, Handler>] - * @param {string} key - * Field to switch on. - * @param {Options<Invalid, Unknown, Handlers>} [options] - * Configuration (required). - * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}} - */ -function zwitch(key, options) { - const settings = options || {} +"use strict"; +// @ts-check - /** - * Handle one value. - * - * Based on the bound `key`, a respective handler will be called. - * If `value` is not an object, or doesn’t have a `key` property, the special - * “invalid” handler will be called. - * If `value` has an unknown `key`, the special “unknown” handler will be - * called. - * - * All arguments, and the context object, are passed through to the handler, - * and it’s result is returned. - * - * @this {unknown} - * Any context object. - * @param {unknown} [value] - * Any value. - * @param {...unknown} parameters - * Arbitrary parameters passed to the zwitch. - * @property {Handler} invalid - * Handle for values that do not have a certain ID field. - * @property {Handler} unknown - * Handle values that do have a certain ID field, but it’s set to a value - * that is not listed in the `handlers` record. - * @property {Handlers} handlers - * Record of handlers. - * @returns {unknown} - * Anything. - */ - function one(value, ...parameters) { - /** @type {Handler|undefined} */ - let fn = one.invalid - const handlers = one.handlers - if (value && zwitch_own.call(value, key)) { - // @ts-expect-error Indexable. - const id = String(value[key]) - // @ts-expect-error Indexable. - fn = zwitch_own.call(handlers, id) ? handlers[id] : one.unknown - } - if (fn) { - return fn.call(this, value, ...parameters) - } - } +/* global WebAssembly */ - one.handlers = settings.handlers || {} - one.invalid = settings.invalid - one.unknown = settings.unknown +const assert = __nccwpck_require__(42613) +const net = __nccwpck_require__(69278) +const http = __nccwpck_require__(58611) +const { pipeline } = __nccwpck_require__(2203) +const util = __nccwpck_require__(3440) +const timers = __nccwpck_require__(28804) +const Request = __nccwpck_require__(44655) +const DispatcherBase = __nccwpck_require__(50001) +const { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError +} = __nccwpck_require__(68707) +const buildConnector = __nccwpck_require__(59136) +const { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest +} = __nccwpck_require__(36443) - // @ts-expect-error: matches! - return one +/** @type {import('http2')} */ +let http2 +try { + http2 = __nccwpck_require__(85675) +} catch { + // @ts-ignore + http2 = { constants: {} } } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/configure.js -/** - * @import {Options, State} from './types.js' - */ - -const configure_own = {}.hasOwnProperty - -/** - * @param {State} base - * @param {Options} extension - * @returns {State} - */ -function configure_configure(base, extension) { - let index = -1 - /** @type {keyof Options} */ - let key - - // First do subextensions. - if (extension.extensions) { - while (++index < extension.extensions.length) { - configure_configure(base, extension.extensions[index]) - } +const { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS } +} = http2 - for (key in extension) { - if (configure_own.call(extension, key)) { - switch (key) { - case 'extensions': { - // Empty. - break - } - - /* c8 ignore next 4 */ - case 'unsafe': { - configure_list(base[key], extension[key]) - break - } - - case 'join': { - configure_list(base[key], extension[key]) - break - } +// Experimental +let h2ExperimentalWarned = false - case 'handlers': { - map(base[key], extension[key]) - break - } +const FastBuffer = Buffer[Symbol.species] - default: { - // @ts-expect-error: matches. - base.options[key] = extension[key] - } - } - } - } +const kClosedResolve = Symbol('kClosedResolve') - return base -} +const channels = {} -/** - * @template T - * @param {Array<T>} left - * @param {Array<T> | null | undefined} right - */ -function configure_list(left, right) { - if (right) { - left.push(...right) - } +try { + const diagnosticsChannel = __nccwpck_require__(31637) + channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders') + channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect') + channels.connectError = diagnosticsChannel.channel('undici:client:connectError') + channels.connected = diagnosticsChannel.channel('undici:client:connected') +} catch { + channels.sendHeaders = { hasSubscribers: false } + channels.beforeConnect = { hasSubscribers: false } + channels.connectError = { hasSubscribers: false } + channels.connected = { hasSubscribers: false } } /** - * @template T - * @param {Record<string, T>} left - * @param {Record<string, T> | null | undefined} right + * @type {import('../types/client').default} */ -function map(left, right) { - if (right) { - Object.assign(left, right) - } -} +class Client extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor (url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super() -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/blockquote.js -/** - * @import {Blockquote, Parents} from 'mdast' - * @import {Info, Map, State} from 'mdast-util-to-markdown' - */ + if (keepAlive !== undefined) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') + } -/** - * @param {Blockquote} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function blockquote(node, _, state, info) { - const exit = state.enter('blockquote') - const tracker = state.createTracker(info) - tracker.move('> ') - tracker.shift(2) - const value = state.indentLines( - state.containerFlow(node, tracker.current()), - blockquote_map - ) - exit() - return value -} + if (socketTimeout !== undefined) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') + } -/** @type {Map} */ -function blockquote_map(line, _, blank) { - return '>' + (blank ? '' : ' ') + line -} + if (requestTimeout !== undefined) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js -/** - * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown' - */ + if (idleTimeout !== undefined) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') + } -/** - * @param {Array<ConstructName>} stack - * @param {Unsafe} pattern - * @returns {boolean} - */ -function patternInScope(stack, pattern) { - return ( - listInScope(stack, pattern.inConstruct, true) && - !listInScope(stack, pattern.notInConstruct, false) - ) -} + if (maxKeepAliveTimeout !== undefined) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') + } -/** - * @param {Array<ConstructName>} stack - * @param {Unsafe['inConstruct']} list - * @param {boolean} none - * @returns {boolean} - */ -function listInScope(stack, list, none) { - if (typeof list === 'string') { - list = [list] - } + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize') + } - if (!list || list.length === 0) { - return none - } + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath') + } - let index = -1 + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout') + } - while (++index < list.length) { - if (stack.includes(list[index])) { - return true + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout') } - } - return false -} + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout') + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/break.js -/** - * @import {Break, Parents} from 'mdast' - * @import {Info, State} from 'mdast-util-to-markdown' - */ + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') + } + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') + } + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') + } -/** - * @param {Break} _ - * @param {Parents | undefined} _1 - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function hardBreak(_, _1, state, info) { - let index = -1 + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } - while (++index < state.unsafe.length) { - // If we can’t put eols in this construct (setext headings, tables), use a - // space instead. - if ( - state.unsafe[index].character === '\n' && - patternInScope(state.stack, state.unsafe[index]) - ) { - return /[ \t]/.test(info.before) ? '' : ' ' + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') } - } - return '\\\n' -} + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') + } -;// CONCATENATED MODULE: ./node_modules/longest-streak/index.js -/** - * Get the count of the longest repeating streak of `substring` in `value`. - * - * @param {string} value - * Content to search in. - * @param {string} substring - * Substring to look for, typically one character. - * @returns {number} - * Count of most frequent adjacent `substring`s in `value`. - */ -function longestStreak(value, substring) { - const source = String(value) - let index = source.indexOf(substring) - let expected = index - let count = 0 - let max = 0 + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address') + } - if (typeof substring !== 'string') { - throw new TypeError('Expected substring') - } + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number') + } - while (index !== -1) { - if (index === expected) { - if (++count > max) { - max = count - } - } else { - count = 1 + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number') } - expected = index + substring.length - index = source.indexOf(substring, expected) - } + // h2 + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value') + } - return max -} + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0') + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js -/** - * @import {State} from 'mdast-util-to-markdown' - * @import {Code} from 'mdast' - */ + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } -/** - * @param {Code} node - * @param {State} state - * @returns {boolean} - */ -function formatCodeAsIndented(node, state) { - return Boolean( - state.options.fences === false && - node.value && - // If there’s no info… - !node.lang && - // And there’s a non-whitespace character… - /[^ \r\n]/.test(node.value) && - // And the value doesn’t start or end in a blank… - !/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(node.value) - ) -} + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) + ? interceptors.Client + : [createRedirectInterceptor({ maxRedirections })] + this[kUrl] = util.parseOrigin(url) + this[kConnector] = connect + this[kSocket] = null + this[kPipelining] = pipelining != null ? pipelining : 1 + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout] + this[kServerName] = null + this[kLocalAddress] = localAddress != null ? localAddress : null + this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n` + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3 + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3 + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength + this[kMaxRedirections] = maxRedirections + this[kMaxRequests] = maxRequestsPerClient + this[kClosedResolve] = null + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1 + this[kHTTPConnVersion] = 'h1' -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-fence.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + // HTTP/2 + this[kHTTP2Session] = null + this[kHTTP2SessionState] = !allowH2 + ? null + : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server + } + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}` -/** - * @param {State} state - * @returns {Exclude<Options['fence'], null | undefined>} - */ -function checkFence(state) { - const marker = state.options.fence || '`' + // kQueue is built up of 3 sections separated by + // the kRunningIdx and kPendingIdx indices. + // | complete | running | pending | + // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length + // kRunningIdx points to the first running element. + // kPendingIdx points to the first pending element. + // This implements a fast queue with an amortized + // time of O(1). - if (marker !== '`' && marker !== '~') { - throw new Error( - 'Cannot serialize code with `' + - marker + - '` for `options.fence`, expected `` ` `` or `~`' - ) + this[kQueue] = [] + this[kRunningIdx] = 0 + this[kPendingIdx] = 0 } - return marker -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/code.js -/** - * @import {Info, Map, State} from 'mdast-util-to-markdown' - * @import {Code, Parents} from 'mdast' - */ - + get pipelining () { + return this[kPipelining] + } + set pipelining (value) { + this[kPipelining] = value + resume(this, true) + } + get [kPending] () { + return this[kQueue].length - this[kPendingIdx] + } + get [kRunning] () { + return this[kPendingIdx] - this[kRunningIdx] + } -/** - * @param {Code} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function code(node, _, state, info) { - const marker = checkFence(state) - const raw = node.value || '' - const suffix = marker === '`' ? 'GraveAccent' : 'Tilde' - - if (formatCodeAsIndented(node, state)) { - const exit = state.enter('codeIndented') - const value = state.indentLines(raw, code_map) - exit() - return value + get [kSize] () { + return this[kQueue].length - this[kRunningIdx] } - const tracker = state.createTracker(info) - const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3)) - const exit = state.enter('codeFenced') - let value = tracker.move(sequence) + get [kConnected] () { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed + } - if (node.lang) { - const subexit = state.enter(`codeFencedLang${suffix}`) - value += tracker.move( - state.safe(node.lang, { - before: value, - after: ' ', - encode: ['`'], - ...tracker.current() - }) - ) - subexit() - } - - if (node.lang && node.meta) { - const subexit = state.enter(`codeFencedMeta${suffix}`) - value += tracker.move(' ') - value += tracker.move( - state.safe(node.meta, { - before: value, - after: '\n', - encode: ['`'], - ...tracker.current() - }) + get [kBusy] () { + const socket = this[kSocket] + return ( + (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || + (this[kSize] >= (this[kPipelining] || 1)) || + this[kPending] > 0 ) - subexit() } - value += tracker.move('\n') - - if (raw) { - value += tracker.move(raw + '\n') + /* istanbul ignore: only used for test */ + [kConnect] (cb) { + connect(this) + this.once('connect', cb) } - value += tracker.move(sequence) - exit() - return value -} - -/** @type {Map} */ -function code_map(line, _, blank) { - return (blank ? '' : ' ') + line -} + [kDispatch] (opts, handler) { + const origin = opts.origin || this[kUrl].origin -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-quote.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + const request = this[kHTTPConnVersion] === 'h2' + ? Request[kHTTP2BuildRequest](origin, opts, handler) + : Request[kHTTP1BuildRequest](origin, opts, handler) -/** - * @param {State} state - * @returns {Exclude<Options['quote'], null | undefined>} - */ -function checkQuote(state) { - const marker = state.options.quote || '"' + this[kQueue].push(request) + if (this[kResuming]) { + // Do nothing. + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + // Wait a tick in case stream/iterator is ended in the same tick. + this[kResuming] = 1 + process.nextTick(resume, this) + } else { + resume(this, true) + } - if (marker !== '"' && marker !== "'") { - throw new Error( - 'Cannot serialize title with `' + - marker + - '` for `options.quote`, expected `"`, or `\'`' - ) - } + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2 + } - return marker -} + return this[kNeedDrain] < 2 + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/definition.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Definition, Parents} from 'mdast' - */ + async [kClose] () { + // TODO: for H2 we need to gracefully flush the remaining enqueued + // request and close each stream. + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null) + } else { + this[kClosedResolve] = resolve + } + }) + } + async [kDestroy] (err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + const callback = () => { + if (this[kClosedResolve]) { + // TODO (fix): Should we error here with ClientDestroyedError? + this[kClosedResolve]() + this[kClosedResolve] = null + } + resolve() + } -/** - * @param {Definition} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function definition_definition(node, _, state, info) { - const quote = checkQuote(state) - const suffix = quote === '"' ? 'Quote' : 'Apostrophe' - const exit = state.enter('definition') - let subexit = state.enter('label') - const tracker = state.createTracker(info) - let value = tracker.move('[') - value += tracker.move( - state.safe(state.associationId(node), { - before: value, - after: ']', - ...tracker.current() - }) - ) - value += tracker.move(']: ') + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err) + this[kHTTP2Session] = null + this[kHTTP2SessionState] = null + } - subexit() + if (!this[kSocket]) { + queueMicrotask(callback) + } else { + util.destroy(this[kSocket].on('close', callback), err) + } - if ( - // If there’s no url, or… - !node.url || - // If there are control characters or whitespace. - /[\0- \u007F]/.test(node.url) - ) { - subexit = state.enter('destinationLiteral') - value += tracker.move('<') - value += tracker.move( - state.safe(node.url, {before: value, after: '>', ...tracker.current()}) - ) - value += tracker.move('>') - } else { - // No whitespace, raw is prettier. - subexit = state.enter('destinationRaw') - value += tracker.move( - state.safe(node.url, { - before: value, - after: node.title ? ' ' : '\n', - ...tracker.current() - }) - ) + resume(this) + }) } +} - subexit() - - if (node.title) { - subexit = state.enter(`title${suffix}`) - value += tracker.move(' ' + quote) - value += tracker.move( - state.safe(node.title, { - before: value, - after: quote, - ...tracker.current() - }) - ) - value += tracker.move(quote) - subexit() - } +function onHttp2SessionError (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') - exit() + this[kSocket][kError] = err - return value + onError(this[kClient], err) } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ - -/** - * @param {State} state - * @returns {Exclude<Options['emphasis'], null | undefined>} - */ -function checkEmphasis(state) { - const marker = state.options.emphasis || '*' +function onHttp2FrameError (type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) - if (marker !== '*' && marker !== '_') { - throw new Error( - 'Cannot serialize emphasis with `' + - marker + - '` for `options.emphasis`, expected `*`, or `_`' - ) + if (id === 0) { + this[kSocket][kError] = err + onError(this[kClient], err) } - - return marker } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js -/** - * Encode a code point as a character reference. - * - * @param {number} code - * Code point to encode. - * @returns {string} - * Encoded character reference. - */ -function encodeCharacterReference(code) { - return '&#x' + code.toString(16).toUpperCase() + ';' +function onHttp2SessionEnd () { + util.destroy(this, new SocketError('other side closed')) + util.destroy(this[kSocket], new SocketError('other side closed')) } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/encode-info.js -/** - * @import {EncodeSides} from '../types.js' - */ - +function onHTTP2GoAway (code) { + const client = this[kClient] + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`) + client[kSocket] = null + client[kHTTP2Session] = null + if (client.destroyed) { + assert(this[kPending] === 0) -/** - * Check whether to encode (as a character reference) the characters - * surrounding an attention run. - * - * Which characters are around an attention run influence whether it works or - * not. - * - * See <https://github.com/orgs/syntax-tree/discussions/60> for more info. - * See this markdown in a particular renderer to see what works: - * - * ```markdown - * | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) | - * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ | - * | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z | - * | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. | - * | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z | - * | 4 (nothing outside) | *x* | *.* | * * | ** | - * ``` - * - * @param {number} outside - * Code point on the outer side of the run. - * @param {number} inside - * Code point on the inner side of the run. - * @param {'*' | '_'} marker - * Marker of the run. - * Underscores are handled more strictly (they form less often) than - * asterisks. - * @returns {EncodeSides} - * Whether to encode characters. - */ -// Important: punctuation must never be encoded. -// Punctuation is solely used by markdown constructs. -// And by encoding itself. -// Encoding them will break constructs or double encode things. -function encodeInfo(outside, inside, marker) { - const outsideKind = classifyCharacter(outside) - const insideKind = classifyCharacter(inside) - - // Letter outside: - if (outsideKind === undefined) { - return insideKind === undefined - ? // Letter inside: - // we have to encode *both* letters for `_` as it is looser. - // it already forms for `*` (and GFMs `~`). - marker === '_' - ? {inside: true, outside: true} - : {inside: false, outside: false} - : insideKind === 1 - ? // Whitespace inside: encode both (letter, whitespace). - {inside: true, outside: true} - : // Punctuation inside: encode outer (letter) - {inside: false, outside: true} - } - - // Whitespace outside: - if (outsideKind === 1) { - return insideKind === undefined - ? // Letter inside: already forms. - {inside: false, outside: false} - : insideKind === 1 - ? // Whitespace inside: encode both (whitespace). - {inside: true, outside: true} - : // Punctuation inside: already forms. - {inside: false, outside: false} - } - - // Punctuation outside: - return insideKind === undefined - ? // Letter inside: already forms. - {inside: false, outside: false} - : insideKind === 1 - ? // Whitespace inside: encode inner (whitespace). - {inside: true, outside: false} - : // Punctuation inside: already forms. - {inside: false, outside: false} -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/emphasis.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Emphasis, Parents} from 'mdast' - */ + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + } else if (client[kRunning] > 0) { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + errorRequest(client, request, err) + } + client[kPendingIdx] = client[kRunningIdx] + assert(client[kRunning] === 0) + client.emit('disconnect', + client[kUrl], + [client], + err + ) -emphasis.peek = emphasisPeek + resume(client) +} -/** - * @param {Emphasis} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function emphasis(node, _, state, info) { - const marker = checkEmphasis(state) - const exit = state.enter('emphasis') - const tracker = state.createTracker(info) - const before = tracker.move(marker) - - let between = tracker.move( - state.containerPhrasing(node, { - after: marker, - before, - ...tracker.current() - }) - ) - const betweenHead = between.charCodeAt(0) - const open = encodeInfo( - info.before.charCodeAt(info.before.length - 1), - betweenHead, - marker - ) +const constants = __nccwpck_require__(52824) +const createRedirectInterceptor = __nccwpck_require__(64415) +const EMPTY_BUF = Buffer.alloc(0) - if (open.inside) { - between = encodeCharacterReference(betweenHead) + between.slice(1) - } +async function lazyllhttp () { + const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(63870) : undefined - const betweenTail = between.charCodeAt(between.length - 1) - const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker) + let mod + try { + mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(53434), 'base64')) + } catch (e) { + /* istanbul ignore next */ - if (close.inside) { - between = between.slice(0, -1) + encodeCharacterReference(betweenTail) + // We could check if the error was caused by the simd option not + // being enabled, but the occurring of this other error + // * https://github.com/emscripten-core/emscripten/issues/11495 + // got me to remove that check to avoid breaking Node 12. + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || __nccwpck_require__(63870), 'base64')) } - const after = tracker.move(marker) + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ - exit() + wasm_on_url: (p, at, len) => { + /* istanbul ignore next */ + return 0 + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageBegin() || 0 + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageComplete() || 0 + } - state.attentionEncodeSurroundingInfo = { - after: close.outside, - before: open.outside - } - return before + between + after + /* eslint-enable camelcase */ + } + }) } -/** - * @param {Emphasis} _ - * @param {Parents | undefined} _1 - * @param {State} state - * @returns {string} - */ -function emphasisPeek(_, _1, state) { - return state.options.emphasis || '*' -} +let llhttpInstance = null +let llhttpPromise = lazyllhttp() +llhttpPromise.catch() -;// CONCATENATED MODULE: ./node_modules/unist-util-is/lib/index.js -/** - * @typedef {import('unist').Node} Node - * @typedef {import('unist').Parent} Parent - */ +let currentParser = null +let currentBufferRef = null +let currentBufferSize = 0 +let currentBufferPtr = null -/** - * @template Fn - * @template Fallback - * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate - */ +const TIMEOUT_HEADERS = 1 +const TIMEOUT_BODY = 2 +const TIMEOUT_IDLE = 3 -/** - * @callback Check - * Check that an arbitrary value is a node. - * @param {unknown} this - * The given context. - * @param {unknown} [node] - * Anything (typically a node). - * @param {number | null | undefined} [index] - * The node’s position in its parent. - * @param {Parent | null | undefined} [parent] - * The node’s parent. - * @returns {boolean} - * Whether this is a node and passes a test. - * - * @typedef {Record<string, unknown> | Node} Props - * Object to check for equivalence. - * - * Note: `Node` is included as it is common but is not indexable. - * - * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test - * Check for an arbitrary node. - * - * @callback TestFunction - * Check if a node passes a test. - * @param {unknown} this - * The given context. - * @param {Node} node - * A node. - * @param {number | undefined} [index] - * The node’s position in its parent. - * @param {Parent | undefined} [parent] - * The node’s parent. - * @returns {boolean | undefined | void} - * Whether this node passes the test. - * - * Note: `void` is included until TS sees no return as `undefined`. - */ +class Parser { + constructor (client, socket, { exports }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0) -/** - * Check if `node` is a `Node` and whether it passes the given test. - * - * @param {unknown} node - * Thing to check, typically `Node`. - * @param {Test} test - * A check for a specific node. - * @param {number | null | undefined} index - * The node’s position in its parent. - * @param {Parent | null | undefined} parent - * The node’s parent. - * @param {unknown} context - * Context object (`this`) to pass to `test` functions. - * @returns {boolean} - * Whether `node` is a node and passes a test. - */ -const is = - // Note: overloads in JSDoc can’t yet use different `@template`s. - /** - * @type {( - * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & - * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & - * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) & - * ((node?: null | undefined) => false) & - * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & - * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean) - * )} - */ - ( - /** - * @param {unknown} [node] - * @param {Test} [test] - * @param {number | null | undefined} [index] - * @param {Parent | null | undefined} [parent] - * @param {unknown} [context] - * @returns {boolean} - */ - // eslint-disable-next-line max-params - function (node, test, index, parent, context) { - const check = convert(test) + this.llhttp = exports + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE) + this.client = client + this.socket = socket + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + this.statusCode = null + this.statusText = '' + this.upgrade = false + this.headers = [] + this.headersSize = 0 + this.headersMaxSize = client[kMaxHeadersSize] + this.shouldKeepAlive = false + this.paused = false + this.resume = this.resume.bind(this) - if ( - index !== undefined && - index !== null && - (typeof index !== 'number' || - index < 0 || - index === Number.POSITIVE_INFINITY) - ) { - throw new Error('Expected positive finite index') - } + this.bytesRead = 0 - if ( - parent !== undefined && - parent !== null && - (!is(parent) || !parent.children) - ) { - throw new Error('Expected parent node') - } + this.keepAlive = '' + this.contentLength = '' + this.connection = '' + this.maxResponseSize = client[kMaxResponseSize] + } - if ( - (parent === undefined || parent === null) !== - (index === undefined || index === null) - ) { - throw new Error('Expected both parent and index') + setTimeout (value, type) { + this.timeoutType = type + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout) + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this) + // istanbul ignore else: only for jest + if (this.timeout.unref) { + this.timeout.unref() + } + } else { + this.timeout = null + } + this.timeoutValue = value + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() } - - return looksLikeANode(node) - ? check.call(context, node, index, parent) - : false } - ) + } -/** - * Generate an assertion from a test. - * - * Useful if you’re going to test many nodes, for example when creating a - * utility where something else passes a compatible test. - * - * The created function is a bit faster because it expects valid input only: - * a `node`, `index`, and `parent`. - * - * @param {Test} test - * * when nullish, checks if `node` is a `Node`. - * * when `string`, works like passing `(node) => node.type === test`. - * * when `function` checks if function passed the node is true. - * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values. - * * when `array`, checks if any one of the subtests pass. - * @returns {Check} - * An assertion. - */ -const convert = - // Note: overloads in JSDoc can’t yet use different `@template`s. - /** - * @type {( - * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & - * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & - * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) & - * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & - * ((test?: Test) => Check) - * )} - */ - ( - /** - * @param {Test} [test] - * @returns {Check} - */ - function (test) { - if (test === null || test === undefined) { - return ok - } + resume () { + if (this.socket.destroyed || !this.paused) { + return + } - if (typeof test === 'function') { - return castFactory(test) - } + assert(this.ptr != null) + assert(currentParser == null) - if (typeof test === 'object') { - return Array.isArray(test) ? anyFactory(test) : propsFactory(test) - } + this.llhttp.llhttp_resume(this.ptr) - if (typeof test === 'string') { - return typeFactory(test) + assert(this.timeoutType === TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() } - - throw new Error('Expected function, string, or object as test') } - ) - -/** - * @param {Array<Props | TestFunction | string>} tests - * @returns {Check} - */ -function anyFactory(tests) { - /** @type {Array<Check>} */ - const checks = [] - let index = -1 - while (++index < tests.length) { - checks[index] = convert(tests[index]) + this.paused = false + this.execute(this.socket.read() || EMPTY_BUF) // Flush parser. + this.readMore() } - return castFactory(any) - - /** - * @this {unknown} - * @type {TestFunction} - */ - function any(...parameters) { - let index = -1 - - while (++index < checks.length) { - if (checks[index].apply(this, parameters)) return true + readMore () { + while (!this.paused && this.ptr) { + const chunk = this.socket.read() + if (chunk === null) { + break + } + this.execute(chunk) } - - return false } -} - -/** - * Turn an object into a test for a node with a certain fields. - * - * @param {Props} check - * @returns {Check} - */ -function propsFactory(check) { - const checkAsRecord = /** @type {Record<string, unknown>} */ (check) - - return castFactory(all) - /** - * @param {Node} node - * @returns {boolean} - */ - function all(node) { - const nodeAsRecord = /** @type {Record<string, unknown>} */ ( - /** @type {unknown} */ (node) - ) + execute (data) { + assert(this.ptr != null) + assert(currentParser == null) + assert(!this.paused) - /** @type {string} */ - let key + const { socket, llhttp } = this - for (key in check) { - if (nodeAsRecord[key] !== checkAsRecord[key]) return false + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr) + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096 + currentBufferPtr = llhttp.malloc(currentBufferSize) } - return true - } -} + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data) -/** - * Turn a string into a test for a node with a certain type. - * - * @param {string} check - * @returns {Check} - */ -function typeFactory(check) { - return castFactory(type) + // Call `execute` on the wasm parser. + // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, + // and finally the length of bytes to parse. + // The return value is an error code or `constants.ERROR.OK`. + try { + let ret - /** - * @param {Node} node - */ - function type(node) { - return node && node.type === check - } -} + try { + currentBufferRef = data + currentParser = this + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length) + /* eslint-disable-next-line no-useless-catch */ + } catch (err) { + /* istanbul ignore next: difficult to make a test case for */ + throw err + } finally { + currentParser = null + currentBufferRef = null + } -/** - * Turn a custom test into a test for a node that passes that test. - * - * @param {TestFunction} testFunction - * @returns {Check} - */ -function castFactory(testFunction) { - return check + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr - /** - * @this {unknown} - * @type {Check} - */ - function check(value, index, parent) { - return Boolean( - looksLikeANode(value) && - testFunction.call( - this, - value, - typeof index === 'number' ? index : undefined, - parent || undefined - ) - ) + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)) + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true + socket.unshift(data.slice(offset)) + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr) + let message = '' + /* istanbul ignore else: difficult to make a test case for */ + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0) + message = + 'Response does not match the HTTP/1.1 protocol (' + + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + + ')' + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) + } + } catch (err) { + util.destroy(socket, err) + } } -} -function ok() { - return true -} + destroy () { + assert(this.ptr != null) + assert(currentParser == null) -/** - * @param {unknown} value - * @returns {value is Node} - */ -function looksLikeANode(value) { - return value !== null && typeof value === 'object' && 'type' in value -} + this.llhttp.llhttp_free(this.ptr) + this.ptr = null -;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/color.node.js -/** - * @param {string} d - * @returns {string} - */ -function color(d) { - return '\u001B[33m' + d + '\u001B[39m' -} + timers.clearTimeout(this.timeout) + this.timeout = null + this.timeoutValue = null + this.timeoutType = null -;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/index.js -/** - * @typedef {import('unist').Node} UnistNode - * @typedef {import('unist').Parent} UnistParent - */ + this.paused = false + } -/** - * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test - * Test from `unist-util-is`. - * - * Note: we have remove and add `undefined`, because otherwise when generating - * automatic `.d.ts` files, TS tries to flatten paths from a local perspective, - * which doesn’t work when publishing on npm. - */ + onStatus (buf) { + this.statusText = buf.toString() + } -/** - * @typedef {( - * Fn extends (value: any) => value is infer Thing - * ? Thing - * : Fallback - * )} Predicate - * Get the value of a type guard `Fn`. - * @template Fn - * Value; typically function that is a type guard (such as `(x): x is Y`). - * @template Fallback - * Value to yield if `Fn` is not a type guard. - */ + onMessageBegin () { + const { socket, client } = this -/** - * @typedef {( - * Check extends null | undefined // No test. - * ? Value - * : Value extends {type: Check} // String (type) test. - * ? Value - * : Value extends Check // Partial test. - * ? Value - * : Check extends Function // Function test. - * ? Predicate<Check, Value> extends Value - * ? Predicate<Check, Value> - * : never - * : never // Some other test? - * )} MatchesOne - * Check whether a node matches a primitive check in the type system. - * @template Value - * Value; typically unist `Node`. - * @template Check - * Value; typically `unist-util-is`-compatible test, but not arrays. - */ + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } -/** - * @typedef {( - * Check extends Array<any> - * ? MatchesOne<Value, Check[keyof Check]> - * : MatchesOne<Value, Check> - * )} Matches - * Check whether a node matches a check in the type system. - * @template Value - * Value; typically unist `Node`. - * @template Check - * Value; typically `unist-util-is`-compatible test. - */ + const request = client[kQueue][client[kRunningIdx]] + if (!request) { + return -1 + } + } -/** - * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint - * Number; capped reasonably. - */ + onHeaderField (buf) { + const len = this.headers.length -/** - * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment - * Increment a number in the type system. - * @template {Uint} [I=0] - * Index. - */ + if ((len & 1) === 0) { + this.headers.push(buf) + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } -/** - * @typedef {( - * Node extends UnistParent - * ? Node extends {children: Array<infer Children>} - * ? Child extends Children ? Node : never - * : never - * : never - * )} InternalParent - * Collect nodes that can be parents of `Child`. - * @template {UnistNode} Node - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - */ + this.trackHeader(buf.length) + } -/** - * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent - * Collect nodes in `Tree` that can be parents of `Child`. - * @template {UnistNode} Tree - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - */ + onHeaderValue (buf) { + let len = this.headers.length -/** - * @typedef {( - * Depth extends Max - * ? never - * : - * | InternalParent<Node, Child> - * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>> - * )} InternalAncestor - * Collect nodes in `Tree` that can be ancestors of `Child`. - * @template {UnistNode} Node - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - * @template {Uint} [Max=10] - * Max; searches up to this depth. - * @template {Uint} [Depth=0] - * Current depth. - */ + if ((len & 1) === 1) { + this.headers.push(buf) + len += 1 + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } -/** - * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor - * Collect nodes in `Tree` that can be ancestors of `Child`. - * @template {UnistNode} Tree - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - */ + const key = this.headers[len - 2] + if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { + this.keepAlive += buf.toString() + } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { + this.connection += buf.toString() + } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + this.contentLength += buf.toString() + } -/** - * @typedef {( - * Tree extends UnistParent - * ? Depth extends Max - * ? Tree - * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>> - * : Tree - * )} InclusiveDescendant - * Collect all (inclusive) descendants of `Tree`. - * - * > 👉 **Note**: for performance reasons, this seems to be the fastest way to - * > recurse without actually running into an infinite loop, which the - * > previous version did. - * > - * > Practically, a max of `2` is typically enough assuming a `Root` is - * > passed, but it doesn’t improve performance. - * > It gets higher with `List > ListItem > Table > TableRow > TableCell`. - * > Using up to `10` doesn’t hurt or help either. - * @template {UnistNode} Tree - * Tree type. - * @template {Uint} [Max=10] - * Max; searches up to this depth. - * @template {Uint} [Depth=0] - * Current depth. - */ + this.trackHeader(buf.length) + } -/** - * @typedef {'skip' | boolean} Action - * Union of the action types. - * - * @typedef {number} Index - * Move to the sibling at `index` next (after node itself is completely - * traversed). - * - * Useful if mutating the tree, such as removing the node the visitor is - * currently on, or any of its previous siblings. - * Results less than 0 or greater than or equal to `children.length` stop - * traversing the parent. - * - * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple - * List with one or two values, the first an action, the second an index. - * - * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult - * Any value that can be returned from a visitor. - */ + trackHeader (len) { + this.headersSize += len + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()) + } + } -/** - * @callback Visitor - * Handle a node (matching `test`, if given). - * - * Visitors are free to transform `node`. - * They can also transform the parent of node (the last of `ancestors`). - * - * Replacing `node` itself, if `SKIP` is not returned, still causes its - * descendants to be walked (which is a bug). - * - * When adding or removing previous siblings of `node` (or next siblings, in - * case of reverse), the `Visitor` should return a new `Index` to specify the - * sibling to traverse after `node` is traversed. - * Adding or removing next siblings of `node` (or previous siblings, in case - * of reverse) is handled as expected without needing to return a new `Index`. - * - * Removing the children property of an ancestor still results in them being - * traversed. - * @param {Visited} node - * Found node. - * @param {Array<VisitedParents>} ancestors - * Ancestors of `node`. - * @returns {VisitorResult} - * What to do next. - * - * An `Index` is treated as a tuple of `[CONTINUE, Index]`. - * An `Action` is treated as a tuple of `[Action]`. - * - * Passing a tuple back only makes sense if the `Action` is `SKIP`. - * When the `Action` is `EXIT`, that action can be returned. - * When the `Action` is `CONTINUE`, `Index` can be returned. - * @template {UnistNode} [Visited=UnistNode] - * Visited node type. - * @template {UnistParent} [VisitedParents=UnistParent] - * Ancestor type. - */ + onUpgrade (head) { + const { upgrade, client, socket, headers, statusCode } = this -/** - * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor - * Build a typed `Visitor` function from a tree and a test. - * - * It will infer which values are passed as `node` and which as `parents`. - * @template {UnistNode} [Tree=UnistNode] - * Tree type. - * @template {Test} [Check=Test] - * Test type. - */ + assert(upgrade) + const request = client[kQueue][client[kRunningIdx]] + assert(request) + assert(!socket.destroyed) + assert(socket === client[kSocket]) + assert(!this.paused) + assert(request.upgrade || request.method === 'CONNECT') + this.statusCode = null + this.statusText = '' + this.shouldKeepAlive = null -/** @type {Readonly<ActionTuple>} */ -const empty = [] + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 -/** - * Continue traversing as normal. - */ -const CONTINUE = true + socket.unshift(head) -/** - * Stop traversing immediately. - */ -const EXIT = false + socket[kParser].destroy() + socket[kParser] = null -/** - * Do not traverse this node’s children. - */ -const SKIP = 'skip' + socket[kClient] = null + socket[kError] = null + socket + .removeListener('error', onSocketError) + .removeListener('readable', onSocketReadable) + .removeListener('end', onSocketEnd) + .removeListener('close', onSocketClose) -/** - * Visit nodes, with ancestral information. - * - * This algorithm performs *depth-first* *tree traversal* in *preorder* - * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**). - * - * You can choose for which nodes `visitor` is called by passing a `test`. - * For complex tests, you should test yourself in `visitor`, as it will be - * faster and will have improved type information. - * - * Walking the tree is an intensive task. - * Make use of the return values of the visitor when possible. - * Instead of walking a tree multiple times, walk it once, use `unist-util-is` - * to check if a node matches, and then perform different operations. - * - * You can change the tree. - * See `Visitor` for more info. - * - * @overload - * @param {Tree} tree - * @param {Check} check - * @param {BuildVisitor<Tree, Check>} visitor - * @param {boolean | null | undefined} [reverse] - * @returns {undefined} - * - * @overload - * @param {Tree} tree - * @param {BuildVisitor<Tree>} visitor - * @param {boolean | null | undefined} [reverse] - * @returns {undefined} - * - * @param {UnistNode} tree - * Tree to traverse. - * @param {Visitor | Test} test - * `unist-util-is`-compatible test - * @param {Visitor | boolean | null | undefined} [visitor] - * Handle each node. - * @param {boolean | null | undefined} [reverse] - * Traverse in reverse preorder (NRL) instead of the default preorder (NLR). - * @returns {undefined} - * Nothing. - * - * @template {UnistNode} Tree - * Node type. - * @template {Test} Check - * `unist-util-is`-compatible test. - */ -function visitParents(tree, test, visitor, reverse) { - /** @type {Test} */ - let check + client[kSocket] = null + client[kQueue][client[kRunningIdx]++] = null + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')) - if (typeof test === 'function' && typeof visitor !== 'function') { - reverse = visitor - // @ts-expect-error no visitor given, so `visitor` is test. - visitor = test - } else { - // @ts-expect-error visitor given, so `test` isn’t a visitor. - check = test + try { + request.onUpgrade(statusCode, headers, socket) + } catch (err) { + util.destroy(socket, err) + } + + resume(client) } - const is = convert(check) - const step = reverse ? -1 : 1 + onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this - factory(tree, undefined, [])() + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } - /** - * @param {UnistNode} node - * @param {number | undefined} index - * @param {Array<UnistParent>} parents - */ - function factory(node, index, parents) { - const value = /** @type {Record<string, unknown>} */ ( - node && typeof node === 'object' ? node : {} - ) + const request = client[kQueue][client[kRunningIdx]] - if (typeof value.type === 'string') { - const name = - // `hast` - typeof value.tagName === 'string' - ? value.tagName - : // `xast` - typeof value.name === 'string' - ? value.name - : undefined + /* istanbul ignore next: difficult to make a test case for */ + if (!request) { + return -1 + } - Object.defineProperty(visit, 'name', { - value: - 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')' - }) + assert(!this.upgrade) + assert(this.statusCode < 200) + + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 } - return visit + /* this can only happen if server is misbehaving */ + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) + return -1 + } - function visit() { - /** @type {Readonly<ActionTuple>} */ - let result = empty - /** @type {Readonly<ActionTuple>} */ - let subresult - /** @type {number} */ - let offset - /** @type {Array<UnistParent>} */ - let grandparents + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS) - if (!test || is(node, index, parents[parents.length - 1] || undefined)) { - // @ts-expect-error: `visitor` is now a visitor. - result = toResult(visitor(node, parents)) + this.statusCode = statusCode + this.shouldKeepAlive = ( + shouldKeepAlive || + // Override llhttp value which does not allow keepAlive for HEAD. + (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive') + ) - if (result[0] === EXIT) { - return result - } + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null + ? request.bodyTimeout + : client[kBodyTimeout] + this.setTimeout(bodyTimeout, TIMEOUT_BODY) + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() } + } - if ('children' in node && node.children) { - const nodeAsParent = /** @type {UnistParent} */ (node) - - if (nodeAsParent.children && result[0] !== SKIP) { - offset = (reverse ? nodeAsParent.children.length : -1) + step - grandparents = parents.concat(nodeAsParent) + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } - while (offset > -1 && offset < nodeAsParent.children.length) { - const child = nodeAsParent.children[offset] + if (upgrade) { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } - subresult = factory(child, offset, grandparents)() + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 - if (subresult[0] === EXIT) { - return subresult - } + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null - offset = - typeof subresult[1] === 'number' ? subresult[1] : offset + step - } + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ) + if (timeout <= 0) { + socket[kReset] = true + } else { + client[kKeepAliveTimeoutValue] = timeout } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout] } - - return result + } else { + // Stop more requests from being dispatched. + socket[kReset] = true } - } -} - -/** - * Turn a return value into a clean result. - * - * @param {VisitorResult} value - * Valid return values from visitors. - * @returns {Readonly<ActionTuple>} - * Clean result. - */ -function toResult(value) { - if (Array.isArray(value)) { - return value - } - if (typeof value === 'number') { - return [CONTINUE, value] - } + const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false - return value === null || value === undefined ? empty : [value] -} + if (request.aborted) { + return -1 + } -;// CONCATENATED MODULE: ./node_modules/unist-util-visit/lib/index.js -/** - * @typedef {import('unist').Node} UnistNode - * @typedef {import('unist').Parent} UnistParent - * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult - */ + if (request.method === 'HEAD') { + return 1 + } -/** - * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test - * Test from `unist-util-is`. - * - * Note: we have remove and add `undefined`, because otherwise when generating - * automatic `.d.ts` files, TS tries to flatten paths from a local perspective, - * which doesn’t work when publishing on npm. - */ + if (statusCode < 200) { + return 1 + } -// To do: use types from `unist-util-visit-parents` when it’s released. + if (socket[kBlocking]) { + socket[kBlocking] = false + resume(client) + } -/** - * @typedef {( - * Fn extends (value: any) => value is infer Thing - * ? Thing - * : Fallback - * )} Predicate - * Get the value of a type guard `Fn`. - * @template Fn - * Value; typically function that is a type guard (such as `(x): x is Y`). - * @template Fallback - * Value to yield if `Fn` is not a type guard. - */ + return pause ? constants.ERROR.PAUSED : 0 + } -/** - * @typedef {( - * Check extends null | undefined // No test. - * ? Value - * : Value extends {type: Check} // String (type) test. - * ? Value - * : Value extends Check // Partial test. - * ? Value - * : Check extends Function // Function test. - * ? Predicate<Check, Value> extends Value - * ? Predicate<Check, Value> - * : never - * : never // Some other test? - * )} MatchesOne - * Check whether a node matches a primitive check in the type system. - * @template Value - * Value; typically unist `Node`. - * @template Check - * Value; typically `unist-util-is`-compatible test, but not arrays. - */ + onBody (buf) { + const { client, socket, statusCode, maxResponseSize } = this -/** - * @typedef {( - * Check extends Array<any> - * ? MatchesOne<Value, Check[keyof Check]> - * : MatchesOne<Value, Check> - * )} Matches - * Check whether a node matches a check in the type system. - * @template Value - * Value; typically unist `Node`. - * @template Check - * Value; typically `unist-util-is`-compatible test. - */ + if (socket.destroyed) { + return -1 + } -/** - * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint - * Number; capped reasonably. - */ + const request = client[kQueue][client[kRunningIdx]] + assert(request) -/** - * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment - * Increment a number in the type system. - * @template {Uint} [I=0] - * Index. - */ + assert.strictEqual(this.timeoutType, TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } -/** - * @typedef {( - * Node extends UnistParent - * ? Node extends {children: Array<infer Children>} - * ? Child extends Children ? Node : never - * : never - * : never - * )} InternalParent - * Collect nodes that can be parents of `Child`. - * @template {UnistNode} Node - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - */ + assert(statusCode >= 200) -/** - * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent - * Collect nodes in `Tree` that can be parents of `Child`. - * @template {UnistNode} Tree - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - */ + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()) + return -1 + } -/** - * @typedef {( - * Depth extends Max - * ? never - * : - * | InternalParent<Node, Child> - * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>> - * )} InternalAncestor - * Collect nodes in `Tree` that can be ancestors of `Child`. - * @template {UnistNode} Node - * All node types in a tree. - * @template {UnistNode} Child - * Node to search for. - * @template {Uint} [Max=10] - * Max; searches up to this depth. - * @template {Uint} [Depth=0] - * Current depth. - */ + this.bytesRead += buf.length -/** - * @typedef {( - * Tree extends UnistParent - * ? Depth extends Max - * ? Tree - * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>> - * : Tree - * )} InclusiveDescendant - * Collect all (inclusive) descendants of `Tree`. - * - * > 👉 **Note**: for performance reasons, this seems to be the fastest way to - * > recurse without actually running into an infinite loop, which the - * > previous version did. - * > - * > Practically, a max of `2` is typically enough assuming a `Root` is - * > passed, but it doesn’t improve performance. - * > It gets higher with `List > ListItem > Table > TableRow > TableCell`. - * > Using up to `10` doesn’t hurt or help either. - * @template {UnistNode} Tree - * Tree type. - * @template {Uint} [Max=10] - * Max; searches up to this depth. - * @template {Uint} [Depth=0] - * Current depth. - */ + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED + } + } -/** - * @callback Visitor - * Handle a node (matching `test`, if given). - * - * Visitors are free to transform `node`. - * They can also transform `parent`. - * - * Replacing `node` itself, if `SKIP` is not returned, still causes its - * descendants to be walked (which is a bug). - * - * When adding or removing previous siblings of `node` (or next siblings, in - * case of reverse), the `Visitor` should return a new `Index` to specify the - * sibling to traverse after `node` is traversed. - * Adding or removing next siblings of `node` (or previous siblings, in case - * of reverse) is handled as expected without needing to return a new `Index`. - * - * Removing the children property of `parent` still results in them being - * traversed. - * @param {Visited} node - * Found node. - * @param {Visited extends UnistNode ? number | undefined : never} index - * Index of `node` in `parent`. - * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent - * Parent of `node`. - * @returns {VisitorResult} - * What to do next. - * - * An `Index` is treated as a tuple of `[CONTINUE, Index]`. - * An `Action` is treated as a tuple of `[Action]`. - * - * Passing a tuple back only makes sense if the `Action` is `SKIP`. - * When the `Action` is `EXIT`, that action can be returned. - * When the `Action` is `CONTINUE`, `Index` can be returned. - * @template {UnistNode} [Visited=UnistNode] - * Visited node type. - * @template {UnistParent} [Ancestor=UnistParent] - * Ancestor type. - */ + onMessageComplete () { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this -/** - * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch - * Build a typed `Visitor` function from a node and all possible parents. - * - * It will infer which values are passed as `node` and which as `parent`. - * @template {UnistNode} Visited - * Node type. - * @template {UnistParent} Ancestor - * Parent type. - */ + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1 + } -/** - * @typedef {( - * BuildVisitorFromMatch< - * Matches<Descendant, Check>, - * Extract<Descendant, UnistParent> - * > - * )} BuildVisitorFromDescendants - * Build a typed `Visitor` function from a list of descendants and a test. - * - * It will infer which values are passed as `node` and which as `parent`. - * @template {UnistNode} Descendant - * Node type. - * @template {Test} Check - * Test type. - */ + if (upgrade) { + return + } -/** - * @typedef {( - * BuildVisitorFromDescendants< - * InclusiveDescendant<Tree>, - * Check - * > - * )} BuildVisitor - * Build a typed `Visitor` function from a tree and a test. - * - * It will infer which values are passed as `node` and which as `parent`. - * @template {UnistNode} [Tree=UnistNode] - * Node type. - * @template {Test} [Check=Test] - * Test type. - */ + const request = client[kQueue][client[kRunningIdx]] + assert(request) + assert(statusCode >= 100) + this.statusCode = null + this.statusText = '' + this.bytesRead = 0 + this.contentLength = '' + this.keepAlive = '' + this.connection = '' + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + if (statusCode < 200) { + return + } -/** - * Visit nodes. - * - * This algorithm performs *depth-first* *tree traversal* in *preorder* - * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**). - * - * You can choose for which nodes `visitor` is called by passing a `test`. - * For complex tests, you should test yourself in `visitor`, as it will be - * faster and will have improved type information. - * - * Walking the tree is an intensive task. - * Make use of the return values of the visitor when possible. - * Instead of walking a tree multiple times, walk it once, use `unist-util-is` - * to check if a node matches, and then perform different operations. - * - * You can change the tree. - * See `Visitor` for more info. - * - * @overload - * @param {Tree} tree - * @param {Check} check - * @param {BuildVisitor<Tree, Check>} visitor - * @param {boolean | null | undefined} [reverse] - * @returns {undefined} - * - * @overload - * @param {Tree} tree - * @param {BuildVisitor<Tree>} visitor - * @param {boolean | null | undefined} [reverse] - * @returns {undefined} - * - * @param {UnistNode} tree - * Tree to traverse. - * @param {Visitor | Test} testOrVisitor - * `unist-util-is`-compatible test (optional, omit to pass a visitor). - * @param {Visitor | boolean | null | undefined} [visitorOrReverse] - * Handle each node (when test is omitted, pass `reverse`). - * @param {boolean | null | undefined} [maybeReverse=false] - * Traverse in reverse preorder (NRL) instead of the default preorder (NLR). - * @returns {undefined} - * Nothing. - * - * @template {UnistNode} Tree - * Node type. - * @template {Test} Check - * `unist-util-is`-compatible test. - */ -function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) { - /** @type {boolean | null | undefined} */ - let reverse - /** @type {Test} */ - let test - /** @type {Visitor} */ - let visitor + /* istanbul ignore next: should be handled by llhttp? */ + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()) + return -1 + } - if ( - typeof testOrVisitor === 'function' && - typeof visitorOrReverse !== 'function' - ) { - test = undefined - visitor = testOrVisitor - reverse = visitorOrReverse - } else { - // @ts-expect-error: assume the overload with test was given. - test = testOrVisitor - // @ts-expect-error: assume the overload with test was given. - visitor = visitorOrReverse - reverse = maybeReverse - } + request.onComplete(headers) - visitParents(tree, test, overload, reverse) + client[kQueue][client[kRunningIdx]++] = null - /** - * @param {UnistNode} node - * @param {Array<UnistParent>} parents - */ - function overload(node, parents) { - const parent = parents[parents.length - 1] - const index = parent ? parent.children.indexOf(node) : undefined - return visitor(node, index, parent) + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0) + // Response completed before request. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (socket[kReset] && client[kRunning] === 0) { + // Destroy socket once all requests have completed. + // The request at the tail of the pipeline is the one + // that requested reset and no further requests should + // have been queued since then. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(resume, client) + } else { + resume(client) + } } } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js -/** - * @import {State} from 'mdast-util-to-markdown' - * @import {Heading} from 'mdast' - */ +function onParserTimeout (parser) { + const { socket, timeoutType, client } = parser + /* istanbul ignore else */ + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, 'cannot be paused while waiting for headers') + util.destroy(socket, new HeadersTimeoutError()) + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()) + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]) + util.destroy(socket, new InformationalError('socket idle timeout')) + } +} +function onSocketReadable () { + const { [kParser]: parser } = this + if (parser) { + parser.readMore() + } +} +function onSocketError (err) { + const { [kClient]: client, [kParser]: parser } = this -/** - * @param {Heading} node - * @param {State} state - * @returns {boolean} - */ -function formatHeadingAsSetext(node, state) { - let literalWithBreak = false + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') - // Look for literals with a line break. - // Note that this also - visit(node, function (node) { - if ( - ('value' in node && /\r?\n|\r/.test(node.value)) || - node.type === 'break' - ) { - literalWithBreak = true - return EXIT + if (client[kHTTPConnVersion] !== 'h2') { + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded + // to the user. + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so for as a valid response. + parser.onMessageComplete() + return } - }) - - return Boolean( - (!node.depth || node.depth < 3) && - lib_toString(node) && - (state.options.setext || literalWithBreak) - ) -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/heading.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Heading, Parents} from 'mdast' - */ - - - - -/** - * @param {Heading} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function heading(node, _, state, info) { - const rank = Math.max(Math.min(6, node.depth || 1), 1) - const tracker = state.createTracker(info) - - if (formatHeadingAsSetext(node, state)) { - const exit = state.enter('headingSetext') - const subexit = state.enter('phrasing') - const value = state.containerPhrasing(node, { - ...tracker.current(), - before: '\n', - after: '\n' - }) - subexit() - exit() - - return ( - value + - '\n' + - (rank === 1 ? '=' : '-').repeat( - // The whole size… - value.length - - // Minus the position of the character after the last EOL (or - // 0 if there is none)… - (Math.max(value.lastIndexOf('\r'), value.lastIndexOf('\n')) + 1) - ) - ) } - const sequence = '#'.repeat(rank) - const exit = state.enter('headingAtx') - const subexit = state.enter('phrasing') - - // Note: for proper tracking, we should reset the output positions when there - // is no content returned, because then the space is not output. - // Practically, in that case, there is no content, so it doesn’t matter that - // we’ve tracked one too many characters. - tracker.move(sequence + ' ') + this[kError] = err - let value = state.containerPhrasing(node, { - before: '# ', - after: '\n', - ...tracker.current() - }) + onError(this[kClient], err) +} - if (/^[\t ]/.test(value)) { - // To do: what effect has the character reference on tracking? - value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1) - } +function onError (client, err) { + if ( + client[kRunning] === 0 && + err.code !== 'UND_ERR_INFO' && + err.code !== 'UND_ERR_SOCKET' + ) { + // Error is not caused by running request and not a recoverable + // socket error. - value = value ? sequence + ' ' + value : sequence + assert(client[kPendingIdx] === client[kRunningIdx]) - if (state.options.closeAtx) { - value += ' ' + sequence + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + assert(client[kSize] === 0) } - - subexit() - exit() - - return value } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/html.js -/** - * @import {Html} from 'mdast' - */ +function onSocketEnd () { + const { [kParser]: parser, [kClient]: client } = this -html.peek = htmlPeek + if (client[kHTTPConnVersion] !== 'h2') { + if (parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + return + } + } -/** - * @param {Html} node - * @returns {string} - */ -function html(node) { - return node.value || '' + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) } -/** - * @returns {string} - */ -function htmlPeek() { - return '<' -} +function onSocketClose () { + const { [kClient]: client, [kParser]: parser } = this -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/image.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Image, Parents} from 'mdast' - */ + if (client[kHTTPConnVersion] === 'h1' && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + } + this[kParser].destroy() + this[kParser] = null + } + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) -image_image.peek = imagePeek + client[kSocket] = null -/** - * @param {Image} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function image_image(node, _, state, info) { - const quote = checkQuote(state) - const suffix = quote === '"' ? 'Quote' : 'Apostrophe' - const exit = state.enter('image') - let subexit = state.enter('label') - const tracker = state.createTracker(info) - let value = tracker.move('![') - value += tracker.move( - state.safe(node.alt, {before: value, after: ']', ...tracker.current()}) - ) - value += tracker.move('](') + if (client.destroyed) { + assert(client[kPending] === 0) - subexit() + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null - if ( - // If there’s no url but there is a title… - (!node.url && node.title) || - // If there are control characters or whitespace. - /[\0- \u007F]/.test(node.url) - ) { - subexit = state.enter('destinationLiteral') - value += tracker.move('<') - value += tracker.move( - state.safe(node.url, {before: value, after: '>', ...tracker.current()}) - ) - value += tracker.move('>') - } else { - // No whitespace, raw is prettier. - subexit = state.enter('destinationRaw') - value += tracker.move( - state.safe(node.url, { - before: value, - after: node.title ? ' ' : ')', - ...tracker.current() - }) - ) + errorRequest(client, request, err) } - subexit() + client[kPendingIdx] = client[kRunningIdx] - if (node.title) { - subexit = state.enter(`title${suffix}`) - value += tracker.move(' ' + quote) - value += tracker.move( - state.safe(node.title, { - before: value, - after: quote, - ...tracker.current() - }) - ) - value += tracker.move(quote) - subexit() - } + assert(client[kRunning] === 0) - value += tracker.move(')') - exit() + client.emit('disconnect', client[kUrl], [client], err) - return value + resume(client) } -/** - * @returns {string} - */ -function imagePeek() { - return '!' -} +async function connect (client) { + assert(!client[kConnecting]) + assert(!client[kSocket]) -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/image-reference.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {ImageReference, Parents} from 'mdast' - */ + let { host, hostname, protocol, port } = client[kUrl] -imageReference.peek = imageReferencePeek + // Resolve ipv6 + if (hostname[0] === '[') { + const idx = hostname.indexOf(']') -/** - * @param {ImageReference} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function imageReference(node, _, state, info) { - const type = node.referenceType - const exit = state.enter('imageReference') - let subexit = state.enter('label') - const tracker = state.createTracker(info) - let value = tracker.move('![') - const alt = state.safe(node.alt, { - before: value, - after: ']', - ...tracker.current() - }) - value += tracker.move(alt + '][') - - subexit() - // Hide the fact that we’re in phrasing, because escapes don’t work. - const stack = state.stack - state.stack = [] - subexit = state.enter('reference') - // Note: for proper tracking, we should reset the output positions when we end - // up making a `shortcut` reference, because then there is no brace output. - // Practically, in that case, there is no content, so it doesn’t matter that - // we’ve tracked one too many characters. - const reference = state.safe(state.associationId(node), { - before: value, - after: ']', - ...tracker.current() - }) - subexit() - state.stack = stack - exit() + assert(idx !== -1) + const ip = hostname.substring(1, idx) - if (type === 'full' || !alt || alt !== reference) { - value += tracker.move(reference + ']') - } else if (type === 'shortcut') { - // Remove the unwanted `[`. - value = value.slice(0, -1) - } else { - value += tracker.move(']') + assert(net.isIP(ip)) + hostname = ip } - return value -} - -/** - * @returns {string} - */ -function imageReferencePeek() { - return '!' -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js -/** - * @import {State} from 'mdast-util-to-markdown' - * @import {InlineCode, Parents} from 'mdast' - */ - -inlineCode.peek = inlineCodePeek - -/** - * @param {InlineCode} node - * @param {Parents | undefined} _ - * @param {State} state - * @returns {string} - */ -function inlineCode(node, _, state) { - let value = node.value || '' - let sequence = '`' - let index = -1 + client[kConnecting] = true - // If there is a single grave accent on its own in the code, use a fence of - // two. - // If there are two in a row, use one. - while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) { - sequence += '`' + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }) } - // If this is not just spaces or eols (tabs don’t count), and either the - // first or last character are a space, eol, or tick, then pad with spaces. - if ( - /[^ \r\n]/.test(value) && - ((/^[ \r\n]/.test(value) && /[ \r\n]$/.test(value)) || /^`|`$/.test(value)) - ) { - value = ' ' + value + ' ' - } - - // We have a potential problem: certain characters after eols could result in - // blocks being seen. - // For example, if someone injected the string `'\n# b'`, then that would - // result in an ATX heading. - // We can’t escape characters in `inlineCode`, but because eols are - // transformed to spaces when going from markdown to HTML anyway, we can swap - // them out. - while (++index < state.unsafe.length) { - const pattern = state.unsafe[index] - const expression = state.compilePattern(pattern) - /** @type {RegExpExecArray | null} */ - let match - - // Only look for `atBreak`s. - // Btw: note that `atBreak` patterns will always start the regex at LF or - // CR. - if (!pattern.atBreak) continue - - while ((match = expression.exec(value))) { - let position = match.index - - // Support CRLF (patterns only look for one of the characters). - if ( - value.charCodeAt(position) === 10 /* `\n` */ && - value.charCodeAt(position - 1) === 13 /* `\r` */ - ) { - position-- - } + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket) => { + if (err) { + reject(err) + } else { + resolve(socket) + } + }) + }) - value = value.slice(0, position) + ' ' + value.slice(match.index + 1) + if (client.destroyed) { + util.destroy(socket.on('error', () => {}), new ClientDestroyedError()) + return } - } - - return sequence + value + sequence -} -/** - * @returns {string} - */ -function inlineCodePeek() { - return '`' -} + client[kConnecting] = false -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js -/** - * @import {State} from 'mdast-util-to-markdown' - * @import {Link} from 'mdast' - */ + assert(socket) + const isH2 = socket.alpnProtocol === 'h2' + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }) + } + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }) -/** - * @param {Link} node - * @param {State} state - * @returns {boolean} - */ -function formatLinkAsAutolink(node, state) { - const raw = lib_toString(node) - - return Boolean( - !state.options.resourceLink && - // If there’s a url… - node.url && - // And there’s a no title… - !node.title && - // And the content of `node` is a single text node… - node.children && - node.children.length === 1 && - node.children[0].type === 'text' && - // And if the url is the same as the content… - (raw === node.url || 'mailto:' + raw === node.url) && - // And that starts w/ a protocol… - /^[a-z][a-z+.-]+:/i.test(node.url) && - // And that doesn’t contain ASCII control codes (character escapes and - // references don’t work), space, or angle brackets… - !/[\0- <>\u007F]/.test(node.url) - ) -} + client[kHTTPConnVersion] = 'h2' + session[kClient] = client + session[kSocket] = socket + session.on('error', onHttp2SessionError) + session.on('frameError', onHttp2FrameError) + session.on('end', onHttp2SessionEnd) + session.on('goaway', onHTTP2GoAway) + session.on('close', onSocketClose) + session.unref() -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/link.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Link, Parents} from 'mdast' - * @import {Exit} from '../types.js' - */ + client[kHTTP2Session] = session + socket[kHTTP2Session] = session + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise + llhttpPromise = null + } + socket[kNoRef] = false + socket[kWriting] = false + socket[kReset] = false + socket[kBlocking] = false + socket[kParser] = new Parser(client, socket, llhttpInstance) + } + socket[kCounter] = 0 + socket[kMaxRequests] = client[kMaxRequests] + socket[kClient] = client + socket[kError] = null + socket + .on('error', onSocketError) + .on('readable', onSocketReadable) + .on('end', onSocketEnd) + .on('close', onSocketClose) -link_link.peek = linkPeek + client[kSocket] = socket -/** - * @param {Link} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function link_link(node, _, state, info) { - const quote = checkQuote(state) - const suffix = quote === '"' ? 'Quote' : 'Apostrophe' - const tracker = state.createTracker(info) - /** @type {Exit} */ - let exit - /** @type {Exit} */ - let subexit - - if (formatLinkAsAutolink(node, state)) { - // Hide the fact that we’re in phrasing, because escapes don’t work. - const stack = state.stack - state.stack = [] - exit = state.enter('autolink') - let value = tracker.move('<') - value += tracker.move( - state.containerPhrasing(node, { - before: value, - after: '>', - ...tracker.current() + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket }) - ) - value += tracker.move('>') - exit() - state.stack = stack - return value - } + } + client.emit('connect', client[kUrl], [client]) + } catch (err) { + if (client.destroyed) { + return + } - exit = state.enter('link') - subexit = state.enter('label') - let value = tracker.move('[') - value += tracker.move( - state.containerPhrasing(node, { - before: value, - after: '](', - ...tracker.current() - }) - ) - value += tracker.move('](') - subexit() + client[kConnecting] = false - if ( - // If there’s no url but there is a title… - (!node.url && node.title) || - // If there are control characters or whitespace. - /[\0- \u007F]/.test(node.url) - ) { - subexit = state.enter('destinationLiteral') - value += tracker.move('<') - value += tracker.move( - state.safe(node.url, {before: value, after: '>', ...tracker.current()}) - ) - value += tracker.move('>') - } else { - // No whitespace, raw is prettier. - subexit = state.enter('destinationRaw') - value += tracker.move( - state.safe(node.url, { - before: value, - after: node.title ? ' ' : ')', - ...tracker.current() + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err }) - ) - } + } - subexit() + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0) + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++] + errorRequest(client, request, err) + } + } else { + onError(client, err) + } - if (node.title) { - subexit = state.enter(`title${suffix}`) - value += tracker.move(' ' + quote) - value += tracker.move( - state.safe(node.title, { - before: value, - after: quote, - ...tracker.current() - }) - ) - value += tracker.move(quote) - subexit() + client.emit('connectionError', client[kUrl], [client], err) } - value += tracker.move(')') - - exit() - return value + resume(client) } -/** - * @param {Link} node - * @param {Parents | undefined} _ - * @param {State} state - * @returns {string} - */ -function linkPeek(node, _, state) { - return formatLinkAsAutolink(node, state) ? '<' : '[' +function emitDrain (client) { + client[kNeedDrain] = 0 + client.emit('drain', client[kUrl], [client]) } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/link-reference.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {LinkReference, Parents} from 'mdast' - */ +function resume (client, sync) { + if (client[kResuming] === 2) { + return + } -linkReference.peek = linkReferencePeek + client[kResuming] = 2 -/** - * @param {LinkReference} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function linkReference(node, _, state, info) { - const type = node.referenceType - const exit = state.enter('linkReference') - let subexit = state.enter('label') - const tracker = state.createTracker(info) - let value = tracker.move('[') - const text = state.containerPhrasing(node, { - before: value, - after: ']', - ...tracker.current() - }) - value += tracker.move(text + '][') - - subexit() - // Hide the fact that we’re in phrasing, because escapes don’t work. - const stack = state.stack - state.stack = [] - subexit = state.enter('reference') - // Note: for proper tracking, we should reset the output positions when we end - // up making a `shortcut` reference, because then there is no brace output. - // Practically, in that case, there is no content, so it doesn’t matter that - // we’ve tracked one too many characters. - const reference = state.safe(state.associationId(node), { - before: value, - after: ']', - ...tracker.current() - }) - subexit() - state.stack = stack - exit() + _resume(client, sync) + client[kResuming] = 0 - if (type === 'full' || !text || text !== reference) { - value += tracker.move(reference + ']') - } else if (type === 'shortcut') { - // Remove the unwanted `[`. - value = value.slice(0, -1) - } else { - value += tracker.move(']') + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]) + client[kPendingIdx] -= client[kRunningIdx] + client[kRunningIdx] = 0 } - - return value } -/** - * @returns {string} - */ -function linkReferencePeek() { - return '[' -} +function _resume (client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0) + return + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve]() + client[kClosedResolve] = null + return + } -/** - * @param {State} state - * @returns {Exclude<Options['bullet'], null | undefined>} - */ -function checkBullet(state) { - const marker = state.options.bullet || '*' + const socket = client[kSocket] - if (marker !== '*' && marker !== '+' && marker !== '-') { - throw new Error( - 'Cannot serialize items with `' + - marker + - '` for `options.bullet`, expected `*`, `+`, or `-`' - ) - } + if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref() + socket[kNoRef] = true + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref() + socket[kNoRef] = false + } - return marker -} + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE) + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request = client[kQueue][client[kRunningIdx]] + const headersTimeout = request.headersTimeout != null + ? request.headersTimeout + : client[kHeadersTimeout] + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS) + } + } + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + if (client[kBusy]) { + client[kNeedDrain] = 2 + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1 + process.nextTick(emitDrain, client) + } else { + emitDrain(client) + } + continue + } + if (client[kPending] === 0) { + return + } + if (client[kRunning] >= (client[kPipelining] || 1)) { + return + } -/** - * @param {State} state - * @returns {Exclude<Options['bullet'], null | undefined>} - */ -function checkBulletOther(state) { - const bullet = checkBullet(state) - const bulletOther = state.options.bulletOther + const request = client[kQueue][client[kPendingIdx]] - if (!bulletOther) { - return bullet === '*' ? '-' : '*' - } + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return + } - if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') { - throw new Error( - 'Cannot serialize items with `' + - bulletOther + - '` for `options.bulletOther`, expected `*`, `+`, or `-`' - ) - } + client[kServerName] = request.servername - if (bulletOther === bullet) { - throw new Error( - 'Expected `bullet` (`' + - bullet + - '`) and `bulletOther` (`' + - bulletOther + - '`) to be different' - ) - } + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError('servername changed')) + return + } + } - return bulletOther -} + if (client[kConnecting]) { + return + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + if (!socket && !client[kHTTP2Session]) { + connect(client) + return + } -/** - * @param {State} state - * @returns {Exclude<Options['bulletOrdered'], null | undefined>} - */ -function checkBulletOrdered(state) { - const marker = state.options.bulletOrdered || '.' + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return + } - if (marker !== '.' && marker !== ')') { - throw new Error( - 'Cannot serialize items with `' + - marker + - '` for `options.bulletOrdered`, expected `.` or `)`' - ) - } + if (client[kRunning] > 0 && !request.idempotent) { + // Non-idempotent request cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } - return marker -} + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + // Don't dispatch an upgrade until all preceding requests have completed. + // A misbehaving server might upgrade the connection before all pipelined + // request has completed. + return + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-rule.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && + (util.isStream(request.body) || util.isAsyncIterable(request.body))) { + // Request with stream or iterator body can error while other requests + // are inflight and indirectly error those as well. + // Ensure this doesn't happen by waiting for inflight + // to complete before dispatching. -/** - * @param {State} state - * @returns {Exclude<Options['rule'], null | undefined>} - */ -function checkRule(state) { - const marker = state.options.rule || '*' + // Request with stream or iterator body cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } - if (marker !== '*' && marker !== '-' && marker !== '_') { - throw new Error( - 'Cannot serialize rules with `' + - marker + - '` for `options.rule`, expected `*`, `-`, or `_`' - ) + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++ + } else { + client[kQueue].splice(client[kPendingIdx], 1) + } } - - return marker } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/list.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {List, Parents} from 'mdast' - */ - +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength (method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' +} +function write (client, request) { + if (client[kHTTPConnVersion] === 'h2') { + writeH2(client, client[kHTTP2Session], request) + return + } + const { body, method, path, host, upgrade, headers, blocking, reset } = request + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. -/** - * @param {List} node - * @param {Parents | undefined} parent - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function list_list(node, parent, state, info) { - const exit = state.enter('list') - const bulletCurrent = state.bulletCurrent - /** @type {string} */ - let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state) - /** @type {string} */ - const bulletOther = node.ordered - ? bullet === '.' - ? ')' - : '.' - : checkBulletOther(state) - let useDifferentMarker = - parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false - - if (!node.ordered) { - const firstListItem = node.children ? node.children[0] : undefined - - // If there’s an empty first list item directly in two list items, - // we have to use a different bullet: - // - // ```markdown - // * - * - // ``` - // - // …because otherwise it would become one big thematic break. - if ( - // Bullet could be used as a thematic break marker: - (bullet === '*' || bullet === '-') && - // Empty first list item: - firstListItem && - (!firstListItem.children || !firstListItem.children[0]) && - // Directly in two other list items: - state.stack[state.stack.length - 1] === 'list' && - state.stack[state.stack.length - 2] === 'listItem' && - state.stack[state.stack.length - 3] === 'list' && - state.stack[state.stack.length - 4] === 'listItem' && - // That are each the first child. - state.indexStack[state.indexStack.length - 1] === 0 && - state.indexStack[state.indexStack.length - 2] === 0 && - state.indexStack[state.indexStack.length - 3] === 0 - ) { - useDifferentMarker = true - } - - // If there’s a thematic break at the start of the first list item, - // we have to use a different bullet: - // - // ```markdown - // * --- - // ``` - // - // …because otherwise it would become one big thematic break. - if (checkRule(state) === bullet && firstListItem) { - let index = -1 - - while (++index < node.children.length) { - const item = node.children[index] + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) - if ( - item && - item.type === 'listItem' && - item.children && - item.children[0] && - item.children[0].type === 'thematicBreak' - ) { - useDifferentMarker = true - break - } - } - } + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) } - if (useDifferentMarker) { - bullet = bulletOther - } + const bodyLength = util.bodyLength(body) - state.bulletCurrent = bullet - const value = state.containerFlow(node, info) - state.bulletLastUsed = bullet - state.bulletCurrent = bulletCurrent - exit() - return value -} + let contentLength = bodyLength -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + if (contentLength === null) { + contentLength = request.contentLength + } -/** - * @param {State} state - * @returns {Exclude<Options['listItemIndent'], null | undefined>} - */ -function checkListItemIndent(state) { - const style = state.options.listItemIndent || 'one' + if (contentLength === 0 && !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. - if (style !== 'tab' && style !== 'one' && style !== 'mixed') { - throw new Error( - 'Cannot serialize items with `' + - style + - '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`' - ) + contentLength = null } - return style -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/list-item.js -/** - * @import {Info, Map, State} from 'mdast-util-to-markdown' - * @import {ListItem, Parents} from 'mdast' - */ + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + process.emitWarning(new RequestContentLengthMismatchError()) + } + const socket = client[kSocket] + try { + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } -/** - * @param {ListItem} node - * @param {Parents | undefined} parent - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function listItem(node, parent, state, info) { - const listItemIndent = checkListItemIndent(state) - let bullet = state.bulletCurrent || checkBullet(state) + errorRequest(client, request, err || new RequestAbortedError()) - // Add the marker value for ordered lists. - if (parent && parent.type === 'list' && parent.ordered) { - bullet = - (typeof parent.start === 'number' && parent.start > -1 - ? parent.start - : 1) + - (state.options.incrementListMarker === false - ? 0 - : parent.children.indexOf(node)) + - bullet + util.destroy(socket, new InformationalError('aborted')) + }) + } catch (err) { + errorRequest(client, request, err) } - let size = bullet.length + 1 - - if ( - listItemIndent === 'tab' || - (listItemIndent === 'mixed' && - ((parent && parent.type === 'list' && parent.spread) || node.spread)) - ) { - size = Math.ceil(size / 4) * 4 + if (request.aborted) { + return false } - const tracker = state.createTracker(info) - tracker.move(bullet + ' '.repeat(size - bullet.length)) - tracker.shift(size) - const exit = state.enter('listItem') - const value = state.indentLines( - state.containerFlow(node, tracker.current()), - map - ) - exit() + if (method === 'HEAD') { + // https://github.com/mcollina/undici/issues/258 + // Close after a HEAD request to interop with misbehaving servers + // that may send a body in the response. - return value + socket[kReset] = true + } - /** @type {Map} */ - function map(line, index, blank) { - if (index) { - return (blank ? '' : ' '.repeat(size)) + line - } + if (upgrade || method === 'CONNECT') { + // On CONNECT or upgrade, block pipeline from dispatching further + // requests on this connection. - return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line + socket[kReset] = true } -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/paragraph.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Paragraph, Parents} from 'mdast' - */ -/** - * @param {Paragraph} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function paragraph(node, _, state, info) { - const exit = state.enter('paragraph') - const subexit = state.enter('phrasing') - const value = state.containerPhrasing(node, info) - subexit() - exit() - return value -} + if (reset != null) { + socket[kReset] = reset + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-phrasing/lib/index.js -/** - * @typedef {import('mdast').Html} Html - * @typedef {import('mdast').PhrasingContent} PhrasingContent - */ + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true + } + if (blocking) { + socket[kBlocking] = true + } + let header = `${method} ${path} HTTP/1.1\r\n` -/** - * Check if the given value is *phrasing content*. - * - * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow. - * - * @param node - * Thing to check, typically `Node`. - * @returns - * Whether `value` is phrasing content. - */ + if (typeof host === 'string') { + header += `host: ${host}\r\n` + } else { + header += client[kHostHeader] + } -const phrasing = - /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */ - ( - convert([ - 'break', - 'delete', - 'emphasis', - // To do: next major: removed since footnotes were added to GFM. - 'footnote', - 'footnoteReference', - 'image', - 'imageReference', - 'inlineCode', - // Enabled by `mdast-util-math`: - 'inlineMath', - 'link', - 'linkReference', - // Enabled by `mdast-util-mdx`: - 'mdxJsxTextElement', - // Enabled by `mdast-util-mdx`: - 'mdxTextExpression', - 'strong', - 'text', - // Enabled by `mdast-util-directive`: - 'textDirective' - ]) - ) + if (upgrade) { + header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n` + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n' + } else { + header += 'connection: close\r\n' + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/root.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Parents, Root} from 'mdast' - */ + if (headers) { + header += headers + } + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }) + } + /* istanbul ignore else: assertion */ + if (!body || bodyLength === 0) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + assert(contentLength === null, 'no body must not have content length') + socket.write(`${header}\r\n`, 'latin1') + } + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') -/** - * @param {Root} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function root(node, _, state, info) { - // Note: `html` nodes are ambiguous. - const hasPhrasing = node.children.some(function (d) { - return phrasing(d) - }) + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(body) + socket.uncork() + request.onBodySent(body) + request.onRequestSent() + if (!expectsPayload) { + socket[kReset] = true + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }) + } else { + writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) + } + } else if (util.isStream(body)) { + writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) + } else if (util.isIterable(body)) { + writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) + } else { + assert(false) + } - const container = hasPhrasing ? state.containerPhrasing : state.containerFlow - return container.call(state, node, info) + return true } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-strong.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ +function writeH2 (client, session, request) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request -/** - * @param {State} state - * @returns {Exclude<Options['strong'], null | undefined>} - */ -function checkStrong(state) { - const marker = state.options.strong || '*' + let headers + if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()) + else headers = reqHeaders - if (marker !== '*' && marker !== '_') { - throw new Error( - 'Cannot serialize strong with `' + - marker + - '` for `options.strong`, expected `*`, or `_`' - ) + if (upgrade) { + errorRequest(client, request, new Error('Upgrade not supported for H2')) + return false } - return marker -} + try { + // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/strong.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Parents, Strong} from 'mdast' - */ + errorRequest(client, request, err || new RequestAbortedError()) + }) + } catch (err) { + errorRequest(client, request, err) + } + if (request.aborted) { + return false + } + /** @type {import('node:http2').ClientHttp2Stream} */ + let stream + const h2State = client[kHTTP2SessionState] + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost] + headers[HTTP2_HEADER_METHOD] = method + if (method === 'CONNECT') { + session.ref() + // we are already connected, streams are pending, first request + // will create a new stream. We trigger a request to create the stream and wait until + // `ready` event is triggered + // We disabled endStream to allow the user to write to the stream + stream = session.request(headers, { endStream: false, signal }) -strong.peek = strongPeek + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + } else { + stream.once('ready', () => { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + }) + } -/** - * @param {Strong} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function strong(node, _, state, info) { - const marker = checkStrong(state) - const exit = state.enter('strong') - const tracker = state.createTracker(info) - const before = tracker.move(marker + marker) - - let between = tracker.move( - state.containerPhrasing(node, { - after: marker, - before, - ...tracker.current() + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) session.unref() }) - ) - const betweenHead = between.charCodeAt(0) - const open = encodeInfo( - info.before.charCodeAt(info.before.length - 1), - betweenHead, - marker - ) - - if (open.inside) { - between = encodeCharacterReference(betweenHead) + between.slice(1) - } - const betweenTail = between.charCodeAt(between.length - 1) - const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker) - - if (close.inside) { - between = between.slice(0, -1) + encodeCharacterReference(betweenTail) + return true } - const after = tracker.move(marker + marker) - - exit() + // https://tools.ietf.org/html/rfc7540#section-8.3 + // :path and :scheme headers must be omited when sending CONNECT - state.attentionEncodeSurroundingInfo = { - after: close.outside, - before: open.outside - } - return before + between + after -} + headers[HTTP2_HEADER_PATH] = path + headers[HTTP2_HEADER_SCHEME] = 'https' -/** - * @param {Strong} _ - * @param {Parents | undefined} _1 - * @param {State} state - * @returns {string} - */ -function strongPeek(_, _1, state) { - return state.options.strong || '*' -} + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/text.js -/** - * @import {Info, State} from 'mdast-util-to-markdown' - * @import {Parents, Text} from 'mdast' - */ + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. -/** - * @param {Text} node - * @param {Parents | undefined} _ - * @param {State} state - * @param {Info} info - * @returns {string} - */ -function handle_text_text(node, _, state, info) { - return state.safe(node.value, info) -} + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js -/** - * @import {Options, State} from 'mdast-util-to-markdown' - */ + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } -/** - * @param {State} state - * @returns {Exclude<Options['ruleRepetition'], null | undefined>} - */ -function checkRuleRepetition(state) { - const repetition = state.options.ruleRepetition || 3 + let contentLength = util.bodyLength(body) - if (repetition < 3) { - throw new Error( - 'Cannot serialize rules with repetition `' + - repetition + - '` for `options.ruleRepetition`, expected `3` or more' - ) + if (contentLength == null) { + contentLength = request.contentLength } - return repetition -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js -/** - * @import {State} from 'mdast-util-to-markdown' - * @import {Parents, ThematicBreak} from 'mdast' - */ + if (contentLength === 0 || !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + contentLength = null + } + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + process.emitWarning(new RequestContentLengthMismatchError()) + } -/** - * @param {ThematicBreak} _ - * @param {Parents | undefined} _1 - * @param {State} state - * @returns {string} - */ -function thematic_break_thematicBreak(_, _1, state) { - const value = ( - checkRule(state) + (state.options.ruleSpaces ? ' ' : '') - ).repeat(checkRuleRepetition(state)) + if (contentLength != null) { + assert(body, 'no body must not have content length') + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}` + } - return state.options.ruleSpaces ? value.slice(0, -1) : value -} + session.ref() -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/handle/index.js + const shouldEndStream = method === 'GET' || method === 'HEAD' + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue' + stream = session.request(headers, { endStream: shouldEndStream, signal }) + stream.once('continue', writeBodyH2) + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }) + writeBodyH2() + } + // Increment counter as we have new several streams open + ++h2State.openStreams + stream.once('response', headers => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers + if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { + stream.pause() + } + }) + stream.once('end', () => { + request.onComplete([]) + }) + stream.on('data', (chunk) => { + if (request.onData(chunk) === false) { + stream.pause() + } + }) + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) { + session.unref() + } + }) + stream.once('error', function (err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) + stream.once('frameError', (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + errorRequest(client, request, err) + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) + // stream.on('aborted', () => { + // // TODO(HTTP/2): Support aborted + // }) + // stream.on('timeout', () => { + // // TODO(HTTP/2): Support timeout + // }) + // stream.on('push', headers => { + // // TODO(HTTP/2): Suppor push + // }) + // stream.on('trailers', headers => { + // // TODO(HTTP/2): Support trailers + // }) + return true + function writeBodyH2 () { + /* istanbul ignore else: assertion */ + if (!body) { + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + stream.cork() + stream.write(body) + stream.uncork() + stream.end() + request.onBodySent(body) + request.onRequestSent() + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ + client, + request, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: '' + }) + } else { + writeBlob({ + body, + client, + request, + contentLength, + expectsPayload, + h2stream: stream, + header: '', + socket: client[kSocket] + }) + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: '' + }) + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request, + contentLength, + expectsPayload, + header: '', + h2stream: stream, + socket: client[kSocket] + }) + } else { + assert(false) + } + } +} +function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') + if (client[kHTTPConnVersion] === 'h2') { + // For HTTP/2, is enough to pipe the stream + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err) + util.destroy(h2stream, err) + } else { + request.onRequestSent() + } + } + ) + pipe.on('data', onPipeData) + pipe.once('end', () => { + pipe.removeListener('data', onPipeData) + util.destroy(pipe) + }) -/** - * Default (CommonMark) handlers. - */ -const handle = { - blockquote: blockquote, - break: hardBreak, - code: code, - definition: definition_definition, - emphasis: emphasis, - hardBreak: hardBreak, - heading: heading, - html: html, - image: image_image, - imageReference: imageReference, - inlineCode: inlineCode, - link: link_link, - linkReference: linkReference, - list: list_list, - listItem: listItem, - paragraph: paragraph, - root: root, - strong: strong, - text: handle_text_text, - thematicBreak: thematic_break_thematicBreak -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/join.js -/** - * @import {Join} from 'mdast-util-to-markdown' - */ + function onPipeData (chunk) { + request.onBodySent(chunk) + } + return + } + let finished = false + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) -/** @type {Array<Join>} */ -const join = [joinDefaults] + const onData = function (chunk) { + if (finished) { + return + } -/** @type {Join} */ -function joinDefaults(left, right, parent, state) { - // Indented code after list or another indented code. - if ( - right.type === 'code' && - formatCodeAsIndented(right, state) && - (left.type === 'list' || - (left.type === right.type && formatCodeAsIndented(left, state))) - ) { - return false + try { + if (!writer.write(chunk) && this.pause) { + this.pause() + } + } catch (err) { + util.destroy(this, err) + } } - - // Join children of a list or an item. - // In which case, `parent` has a `spread` field. - if ('spread' in parent && typeof parent.spread === 'boolean') { - if ( - left.type === 'paragraph' && - // Two paragraphs. - (left.type === right.type || - right.type === 'definition' || - // Paragraph followed by a setext heading. - (right.type === 'heading' && formatHeadingAsSetext(right, state))) - ) { + const onDrain = function () { + if (finished) { return } - return parent.spread ? 1 : 0 + if (body.resume) { + body.resume() + } } -} + const onAbort = function () { + if (finished) { + return + } + const err = new RequestAbortedError() + queueMicrotask(() => onFinished(err)) + } + const onFinished = function (err) { + if (finished) { + return + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/unsafe.js -/** - * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown' - */ + finished = true -/** - * List of constructs that occur in phrasing (paragraphs, headings), but cannot - * contain things like attention (emphasis, strong), images, or links. - * So they sort of cancel each other out. - * Note: could use a better name. - * - * @type {Array<ConstructName>} - */ -const fullPhrasingSpans = [ - 'autolink', - 'destinationLiteral', - 'destinationRaw', - 'reference', - 'titleQuote', - 'titleApostrophe' -] + assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)) -/** @type {Array<Unsafe>} */ -const unsafe = [ - {character: '\t', after: '[\\r\\n]', inConstruct: 'phrasing'}, - {character: '\t', before: '[\\r\\n]', inConstruct: 'phrasing'}, - { - character: '\t', - inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde'] - }, - { - character: '\r', - inConstruct: [ - 'codeFencedLangGraveAccent', - 'codeFencedLangTilde', - 'codeFencedMetaGraveAccent', - 'codeFencedMetaTilde', - 'destinationLiteral', - 'headingAtx' - ] - }, - { - character: '\n', - inConstruct: [ - 'codeFencedLangGraveAccent', - 'codeFencedLangTilde', - 'codeFencedMetaGraveAccent', - 'codeFencedMetaTilde', - 'destinationLiteral', - 'headingAtx' - ] - }, - {character: ' ', after: '[\\r\\n]', inConstruct: 'phrasing'}, - {character: ' ', before: '[\\r\\n]', inConstruct: 'phrasing'}, - { - character: ' ', - inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde'] - }, - // An exclamation mark can start an image, if it is followed by a link or - // a link reference. - { - character: '!', - after: '\\[', - inConstruct: 'phrasing', - notInConstruct: fullPhrasingSpans - }, - // A quote can break out of a title. - {character: '"', inConstruct: 'titleQuote'}, - // A number sign could start an ATX heading if it starts a line. - {atBreak: true, character: '#'}, - {character: '#', inConstruct: 'headingAtx', after: '(?:[\r\n]|$)'}, - // Dollar sign and percentage are not used in markdown. - // An ampersand could start a character reference. - {character: '&', after: '[#A-Za-z]', inConstruct: 'phrasing'}, - // An apostrophe can break out of a title. - {character: "'", inConstruct: 'titleApostrophe'}, - // A left paren could break out of a destination raw. - {character: '(', inConstruct: 'destinationRaw'}, - // A left paren followed by `]` could make something into a link or image. - { - before: '\\]', - character: '(', - inConstruct: 'phrasing', - notInConstruct: fullPhrasingSpans - }, - // A right paren could start a list item or break out of a destination - // raw. - {atBreak: true, before: '\\d+', character: ')'}, - {character: ')', inConstruct: 'destinationRaw'}, - // An asterisk can start thematic breaks, list items, emphasis, strong. - {atBreak: true, character: '*', after: '(?:[ \t\r\n*])'}, - {character: '*', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, - // A plus sign could start a list item. - {atBreak: true, character: '+', after: '(?:[ \t\r\n])'}, - // A dash can start thematic breaks, list items, and setext heading - // underlines. - {atBreak: true, character: '-', after: '(?:[ \t\r\n-])'}, - // A dot could start a list item. - {atBreak: true, before: '\\d+', character: '.', after: '(?:[ \t\r\n]|$)'}, - // Slash, colon, and semicolon are not used in markdown for constructs. - // A less than can start html (flow or text) or an autolink. - // HTML could start with an exclamation mark (declaration, cdata, comment), - // slash (closing tag), question mark (instruction), or a letter (tag). - // An autolink also starts with a letter. - // Finally, it could break out of a destination literal. - {atBreak: true, character: '<', after: '[!/?A-Za-z]'}, - { - character: '<', - after: '[!/?A-Za-z]', - inConstruct: 'phrasing', - notInConstruct: fullPhrasingSpans - }, - {character: '<', inConstruct: 'destinationLiteral'}, - // An equals to can start setext heading underlines. - {atBreak: true, character: '='}, - // A greater than can start block quotes and it can break out of a - // destination literal. - {atBreak: true, character: '>'}, - {character: '>', inConstruct: 'destinationLiteral'}, - // Question mark and at sign are not used in markdown for constructs. - // A left bracket can start definitions, references, labels, - {atBreak: true, character: '['}, - {character: '[', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, - {character: '[', inConstruct: ['label', 'reference']}, - // A backslash can start an escape (when followed by punctuation) or a - // hard break (when followed by an eol). - // Note: typical escapes are handled in `safe`! - {character: '\\', after: '[\\r\\n]', inConstruct: 'phrasing'}, - // A right bracket can exit labels. - {character: ']', inConstruct: ['label', 'reference']}, - // Caret is not used in markdown for constructs. - // An underscore can start emphasis, strong, or a thematic break. - {atBreak: true, character: '_'}, - {character: '_', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, - // A grave accent can start code (fenced or text), or it can break out of - // a grave accent code fence. - {atBreak: true, character: '`'}, - { - character: '`', - inConstruct: ['codeFencedLangGraveAccent', 'codeFencedMetaGraveAccent'] - }, - {character: '`', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans}, - // Left brace, vertical bar, right brace are not used in markdown for - // constructs. - // A tilde can start code (fenced). - {atBreak: true, character: '~'} -] + socket + .off('drain', onDrain) + .off('error', onFinished) -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/association.js -/** - * @import {AssociationId} from '../types.js' - */ + body + .removeListener('data', onData) + .removeListener('end', onFinished) + .removeListener('error', onFinished) + .removeListener('close', onAbort) + if (!err) { + try { + writer.end() + } catch (er) { + err = er + } + } + writer.destroy(err) -/** - * Get an identifier from an association to match it to others. - * - * Associations are nodes that match to something else through an ID: - * <https://github.com/syntax-tree/mdast#association>. - * - * The `label` of an association is the string value: character escapes and - * references work, and casing is intact. - * The `identifier` is used to match one association to another: - * controversially, character escapes and references don’t work in this - * matching: `&copy;` does not match `©`, and `\+` does not match `+`. - * - * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\nb` - * matches `a b`. - * So, we do prefer the label when figuring out how we’re going to serialize: - * it has whitespace, casing, and we can ignore most useless character - * escapes and all character references. - * - * @type {AssociationId} - */ -function association(node) { - if (node.label || !node.identifier) { - return node.label || '' + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body, err) + } else { + util.destroy(body) + } } - return decodeString(node.identifier) -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js -/** - * @import {CompilePattern} from '../types.js' - */ + body + .on('data', onData) + .on('end', onFinished) + .on('error', onFinished) + .on('close', onAbort) -/** - * @type {CompilePattern} - */ -function compilePattern(pattern) { - if (!pattern._compiled) { - const before = - (pattern.atBreak ? '[\\r\\n][\\t ]*' : '') + - (pattern.before ? '(?:' + pattern.before + ')' : '') - - pattern._compiled = new RegExp( - (before ? '(' + before + ')' : '') + - (/[|\\{}()[\]^$+*?.-]/.test(pattern.character) ? '\\' : '') + - pattern.character + - (pattern.after ? '(?:' + pattern.after + ')' : ''), - 'g' - ) + if (body.resume) { + body.resume() } - return pattern._compiled + socket + .on('drain', onDrain) + .on('error', onFinished) } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js -/** - * @import {Handle, Info, State} from 'mdast-util-to-markdown' - * @import {PhrasingParents} from '../types.js' - */ - - - -/** - * Serialize the children of a parent that contains phrasing children. - * - * These children will be joined flush together. - * - * @param {PhrasingParents} parent - * Parent of flow nodes. - * @param {State} state - * Info passed around about the current state. - * @param {Info} info - * Info on where we are in the document we are generating. - * @returns {string} - * Serialized children, joined together. - */ -function containerPhrasing(parent, state, info) { - const indexStack = state.indexStack - const children = parent.children || [] - /** @type {Array<string>} */ - const results = [] - let index = -1 - let before = info.before - /** @type {string | undefined} */ - let encodeAfter - - indexStack.push(-1) - let tracker = state.createTracker(info) - - while (++index < children.length) { - const child = children[index] - /** @type {string} */ - let after - - indexStack[indexStack.length - 1] = index - - if (index + 1 < children.length) { - /** @type {Handle} */ - // @ts-expect-error: hush, it’s actually a `zwitch`. - let handle = state.handle.handlers[children[index + 1].type] - /** @type {Handle} */ - // @ts-expect-error: hush, it’s actually a `zwitch`. - if (handle && handle.peek) handle = handle.peek - after = handle - ? handle(children[index + 1], parent, state, { - before: '', - after: '', - ...tracker.current() - }).charAt(0) - : '' - } else { - after = info.after - } - - // In some cases, html (text) can be found in phrasing right after an eol. - // When we’d serialize that, in most cases that would be seen as html - // (flow). - // As we can’t escape or so to prevent it from happening, we take a somewhat - // reasonable approach: replace that eol with a space. - // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15> - if ( - results.length > 0 && - (before === '\r' || before === '\n') && - child.type === 'html' - ) { - results[results.length - 1] = results[results.length - 1].replace( - /(\r?\n|\r)$/, - ' ' - ) - before = ' ' +async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, 'blob body must have content length') - // To do: does this work to reset tracker? - tracker = state.createTracker(info) - tracker.move(results.join('')) + const isH2 = client[kHTTPConnVersion] === 'h2' + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError() } - let value = state.handle(child, parent, state, { - ...tracker.current(), - after, - before - }) + const buffer = Buffer.from(await body.arrayBuffer()) - // If we had to encode the first character after the previous node and it’s - // still the same character, - // encode it. - if (encodeAfter && encodeAfter === value.slice(0, 1)) { - value = - encodeCharacterReference(encodeAfter.charCodeAt(0)) + value.slice(1) + if (isH2) { + h2stream.cork() + h2stream.write(buffer) + h2stream.uncork() + } else { + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(buffer) + socket.uncork() } - const encodingInfo = state.attentionEncodeSurroundingInfo - state.attentionEncodeSurroundingInfo = undefined - encodeAfter = undefined - - // If we have to encode the first character before the current node and - // it’s still the same character, - // encode it. - if (encodingInfo) { - if ( - results.length > 0 && - encodingInfo.before && - before === results[results.length - 1].slice(-1) - ) { - results[results.length - 1] = - results[results.length - 1].slice(0, -1) + - encodeCharacterReference(before.charCodeAt(0)) - } + request.onBodySent(buffer) + request.onRequestSent() - if (encodingInfo.after) encodeAfter = after + if (!expectsPayload) { + socket[kReset] = true } - tracker.move(value) - results.push(value) - before = value.slice(-1) + resume(client) + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err) } - - indexStack.pop() - - return results.join('') } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/container-flow.js -/** - * @import {State} from 'mdast-util-to-markdown' - * @import {FlowChildren, FlowParents, TrackFields} from '../types.js' - */ +async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') -/** - * @param {FlowParents} parent - * Parent of flow nodes. - * @param {State} state - * Info passed around about the current state. - * @param {TrackFields} info - * Info on where we are in the document we are generating. - * @returns {string} - * Serialized children, joined by (blank) lines. - */ -function containerFlow(parent, state, info) { - const indexStack = state.indexStack - const children = parent.children || [] - const tracker = state.createTracker(info) - /** @type {Array<string>} */ - const results = [] - let index = -1 + let callback = null + function onDrain () { + if (callback) { + const cb = callback + callback = null + cb() + } + } - indexStack.push(-1) + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null) - while (++index < children.length) { - const child = children[index] + if (socket[kError]) { + reject(socket[kError]) + } else { + callback = resolve + } + }) - indexStack[indexStack.length - 1] = index + if (client[kHTTPConnVersion] === 'h2') { + h2stream + .on('close', onDrain) + .on('drain', onDrain) - results.push( - tracker.move( - state.handle(child, parent, state, { - before: '\n', - after: '\n', - ...tracker.current() - }) - ) - ) + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } - if (child.type !== 'list') { - state.bulletLastUsed = undefined + const res = h2stream.write(chunk) + request.onBodySent(chunk) + if (!res) { + await waitForDrain() + } + } + } catch (err) { + h2stream.destroy(err) + } finally { + request.onRequestSent() + h2stream.end() + h2stream + .off('close', onDrain) + .off('drain', onDrain) } - if (index < children.length - 1) { - results.push( - tracker.move(between(child, children[index + 1], parent, state)) - ) - } + return } - indexStack.pop() - - return results.join('') -} - -/** - * @param {FlowChildren} left - * @param {FlowChildren} right - * @param {FlowParents} parent - * @param {State} state - * @returns {string} - */ -function between(left, right, parent, state) { - let index = state.join.length - - while (index--) { - const result = state.join[index](left, right, parent, state) + socket + .on('close', onDrain) + .on('drain', onDrain) - if (result === true || result === 1) { - break - } + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } - if (typeof result === 'number') { - return '\n'.repeat(1 + result) + if (!writer.write(chunk)) { + await waitForDrain() + } } - if (result === false) { - return '\n\n<!---->\n\n' - } + writer.end() + } catch (err) { + writer.destroy(err) + } finally { + socket + .off('close', onDrain) + .off('drain', onDrain) } - - return '\n\n' } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js -/** - * @import {IndentLines} from '../types.js' - */ - -const eol = /\r?\n|\r/g +class AsyncWriter { + constructor ({ socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket + this.request = request + this.contentLength = contentLength + this.client = client + this.bytesWritten = 0 + this.expectsPayload = expectsPayload + this.header = header -/** - * @type {IndentLines} - */ -function indentLines(value, map) { - /** @type {Array<string>} */ - const result = [] - let start = 0 - let line = 0 - /** @type {RegExpExecArray | null} */ - let match - - while ((match = eol.exec(value))) { - one(value.slice(start, match.index)) - result.push(match[0]) - start = match.index + match[0].length - line++ + socket[kWriting] = true } - one(value.slice(start)) + write (chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this - return result.join('') + if (socket[kError]) { + throw socket[kError] + } - /** - * @param {string} value - */ - function one(value) { - result.push(map(value, line, !value)) - } -} + if (socket.destroyed) { + return false + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/safe.js -/** - * @import {SafeConfig, State} from 'mdast-util-to-markdown' - */ + const len = Buffer.byteLength(chunk) + if (!len) { + return true + } + // We should defer writing chunks. + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } + process.emitWarning(new RequestContentLengthMismatchError()) + } + socket.cork() -/** - * Make a string safe for embedding in markdown constructs. - * - * In markdown, almost all punctuation characters can, in certain cases, - * result in something. - * Whether they do is highly subjective to where they happen and in what - * they happen. - * - * To solve this, `mdast-util-to-markdown` tracks: - * - * * Characters before and after something; - * * What “constructs” we are in. - * - * This information is then used by this function to escape or encode - * special characters. - * - * @param {State} state - * Info passed around about the current state. - * @param {string | null | undefined} input - * Raw value to make safe. - * @param {SafeConfig} config - * Configuration. - * @returns {string} - * Serialized markdown safe for embedding. - */ -function safe(state, input, config) { - const value = (config.before || '') + (input || '') + (config.after || '') - /** @type {Array<number>} */ - const positions = [] - /** @type {Array<string>} */ - const result = [] - /** @type {Record<number, {before: boolean, after: boolean}>} */ - const infos = {} - let index = -1 + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true + } - while (++index < state.unsafe.length) { - const pattern = state.unsafe[index] + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1') + } else { + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + } + } - if (!patternInScope(state.stack, pattern)) { - continue + if (contentLength === null) { + socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1') } - const expression = state.compilePattern(pattern) - /** @type {RegExpExecArray | null} */ - let match + this.bytesWritten += len + + const ret = socket.write(chunk) - while ((match = expression.exec(value))) { - const before = 'before' in pattern || Boolean(pattern.atBreak) - const after = 'after' in pattern - const position = match.index + (before ? match[1].length : 0) + socket.uncork() - if (positions.includes(position)) { - if (infos[position].before && !before) { - infos[position].before = false - } + request.onBodySent(chunk) - if (infos[position].after && !after) { - infos[position].after = false + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() } - } else { - positions.push(position) - infos[position] = {before, after} } } - } - positions.sort(numerical) + return ret + } - let start = config.before ? config.before.length : 0 - const end = value.length - (config.after ? config.after.length : 0) - index = -1 + end () { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this + request.onRequestSent() - while (++index < positions.length) { - const position = positions[index] + socket[kWriting] = false - // Character before or after matched: - if (position < start || position >= end) { - continue + if (socket[kError]) { + throw socket[kError] } - // If this character is supposed to be escaped because it has a condition on - // the next character, and the next character is definitly being escaped, - // then skip this escape. - if ( - (position + 1 < end && - positions[index + 1] === position + 1 && - infos[position].after && - !infos[position + 1].before && - !infos[position + 1].after) || - (positions[index - 1] === position - 1 && - infos[position].before && - !infos[position - 1].before && - !infos[position - 1].after) - ) { - continue + if (socket.destroyed) { + return } - if (start !== position) { - // If we have to use a character reference, an ampersand would be more - // correct, but as backslashes only care about punctuation, either will - // do the trick - result.push(escapeBackslashes(value.slice(start, position), '\\')) + if (bytesWritten === 0) { + if (expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD send a Content-Length in a request message when + // no Transfer-Encoding is sent and the request method defines a meaning + // for an enclosed payload body. + + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + socket.write(`${header}\r\n`, 'latin1') + } + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1') } - start = position + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } else { + process.emitWarning(new RequestContentLengthMismatchError()) + } + } - if ( - /[!-/:-@[-`{-~]/.test(value.charAt(position)) && - (!config.encode || !config.encode.includes(value.charAt(position))) - ) { - // Character escape. - result.push('\\') - } else { - // Character reference. - result.push(encodeCharacterReference(value.charCodeAt(position))) - start++ + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } } + + resume(client) } - result.push(escapeBackslashes(value.slice(start, end), config.after)) + destroy (err) { + const { socket, client } = this + + socket[kWriting] = false - return result.join('') + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request') + util.destroy(socket, err) + } + } } -/** - * @param {number} a - * @param {number} b - * @returns {number} - */ -function numerical(a, b) { - return a - b +function errorRequest (client, request, err) { + try { + request.onError(err) + assert(request.aborted) + } catch (err) { + client.emit('error', err) + } } -/** - * @param {string} value - * @param {string} after - * @returns {string} - */ -function escapeBackslashes(value, after) { - const expression = /\\(?=[!-/:-@[-`{-~])/g - /** @type {Array<number>} */ - const positions = [] - /** @type {Array<string>} */ - const results = [] - const whole = value + after - let index = -1 - let start = 0 - /** @type {RegExpExecArray | null} */ - let match +module.exports = Client - while ((match = expression.exec(whole))) { - positions.push(match.index) - } - while (++index < positions.length) { - if (start !== positions[index]) { - results.push(value.slice(start, positions[index])) - } +/***/ }), - results.push('\\') - start = positions[index] - } +/***/ 13194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - results.push(value.slice(start)) +"use strict"; - return results.join('') -} -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/util/track.js -/** - * @import {CreateTracker, TrackCurrent, TrackMove, TrackShift} from '../types.js' - */ +/* istanbul ignore file: only for Node 12 */ -/** - * Track positional info in the output. - * - * @type {CreateTracker} - */ -function track(config) { - // Defaults are used to prevent crashes when older utilities somehow activate - // this code. - /* c8 ignore next 5 */ - const options = config || {} - const now = options.now || {} - let lineShift = options.lineShift || 0 - let line = now.line || 1 - let column = now.column || 1 - - return {move, current, shift} +const { kConnected, kSize } = __nccwpck_require__(36443) - /** - * Get the current tracked info. - * - * @type {TrackCurrent} - */ - function current() { - return {now: {line, column}, lineShift} +class CompatWeakRef { + constructor (value) { + this.value = value } - /** - * Define an increased line shift (the typical indent for lines). - * - * @type {TrackShift} - */ - function shift(value) { - lineShift += value + deref () { + return this.value[kConnected] === 0 && this.value[kSize] === 0 + ? undefined + : this.value } +} - /** - * Move past some generated markdown. - * - * @type {TrackMove} - */ - function move(input) { - // eslint-disable-next-line unicorn/prefer-default-parameters - const value = input || '' - const chunks = value.split(/\r?\n|\r/g) - const tail = chunks[chunks.length - 1] - line += chunks.length - 1 - column = - chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift - return value +class CompatFinalizer { + constructor (finalizer) { + this.finalizer = finalizer + } + + register (dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key) + } + }) + } + } +} + +module.exports = function () { + // FIXME: remove workaround when the Node bug is fixed + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + } + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer } } -;// CONCATENATED MODULE: ./node_modules/mdast-util-to-markdown/lib/index.js -/** - * @import {Info, Join, Options, SafeConfig, State} from 'mdast-util-to-markdown' - * @import {Nodes} from 'mdast' - * @import {Enter, FlowParents, PhrasingParents, TrackFields} from './types.js' - */ +/***/ }), +/***/ 19237: +/***/ ((module) => { +"use strict"; +// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size +const maxAttributeValueSize = 1024 +// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size +const maxNameValuePairSize = 4096 +module.exports = { + maxAttributeValueSize, + maxNameValuePairSize +} +/***/ }), +/***/ 53168: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; +const { parseSetCookie } = __nccwpck_require__(8915) +const { stringify } = __nccwpck_require__(3834) +const { webidl } = __nccwpck_require__(74222) +const { Headers } = __nccwpck_require__(26349) /** - * Turn an mdast syntax tree into markdown. - * - * @param {Nodes} tree - * Tree to serialize. - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {string} - * Serialized markdown representing `tree`. + * @typedef {Object} Cookie + * @property {string} name + * @property {string} value + * @property {Date|number|undefined} expires + * @property {number|undefined} maxAge + * @property {string|undefined} domain + * @property {string|undefined} path + * @property {boolean|undefined} secure + * @property {boolean|undefined} httpOnly + * @property {'Strict'|'Lax'|'None'} sameSite + * @property {string[]} unparsed */ -function toMarkdown(tree, options) { - const settings = options || {} - /** @type {State} */ - const state = { - associationId: association, - containerPhrasing: containerPhrasingBound, - containerFlow: containerFlowBound, - createTracker: track, - compilePattern: compilePattern, - enter, - // @ts-expect-error: GFM / frontmatter are typed in `mdast` but not defined - // here. - handlers: {...handle}, - // @ts-expect-error: add `handle` in a second. - handle: undefined, - indentLines: indentLines, - indexStack: [], - join: [...join], - options: {}, - safe: safeBound, - stack: [], - unsafe: [...unsafe] - } - - configure_configure(state, settings) - - if (state.options.tightDefinitions) { - state.join.push(joinDefinition) - } - - state.handle = zwitch('type', { - invalid, - unknown, - handlers: state.handlers - }) - let result = state.handle(tree, undefined, state, { - before: '\n', - after: '\n', - now: {line: 1, column: 1}, - lineShift: 0 - }) +/** + * @param {Headers} headers + * @returns {Record<string, string>} + */ +function getCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }) - if ( - result && - result.charCodeAt(result.length - 1) !== 10 && - result.charCodeAt(result.length - 1) !== 13 - ) { - result += '\n' - } + webidl.brandCheck(headers, Headers, { strict: false }) - return result + const cookie = headers.get('cookie') + const out = {} - /** @type {Enter} */ - function enter(name) { - state.stack.push(name) - return exit + if (!cookie) { + return out + } - /** - * @returns {undefined} - */ - function exit() { - state.stack.pop() - } + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('=') + + out[name.trim()] = value.join('=') } + + return out } /** - * @param {unknown} value - * @returns {never} + * @param {Headers} headers + * @param {string} name + * @param {{ path?: string, domain?: string }|undefined} attributes + * @returns {void} */ -function invalid(value) { - throw new Error('Cannot handle value `' + value + '`, expected node') +function deleteCookie (headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + name = webidl.converters.DOMString(name) + attributes = webidl.converters.DeleteCookieAttributes(attributes) + + // Matches behavior of + // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 + setCookie(headers, { + name, + value: '', + expires: new Date(0), + ...attributes + }) } /** - * @param {unknown} value - * @returns {never} + * @param {Headers} headers + * @returns {Cookie[]} */ -function unknown(value) { - // Always a node. - const node = /** @type {Nodes} */ (value) - throw new Error('Cannot handle unknown node `' + node.type + '`') -} +function getSetCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }) -/** @type {Join} */ -function joinDefinition(left, right) { - // No blank line between adjacent definitions. - if (left.type === 'definition' && left.type === right.type) { - return 0 + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookies = headers.getSetCookie() + + if (!cookies) { + return [] } + + return cookies.map((pair) => parseSetCookie(pair)) } /** - * Serialize the children of a parent that contains phrasing children. - * - * These children will be joined flush together. - * - * @this {State} - * Info passed around about the current state. - * @param {PhrasingParents} parent - * Parent of flow nodes. - * @param {Info} info - * Info on where we are in the document we are generating. - * @returns {string} - * Serialized children, joined together. - */ -function containerPhrasingBound(parent, info) { - return containerPhrasing(parent, this, info) -} - -/** - * Serialize the children of a parent that contains flow children. - * - * These children will typically be joined by blank lines. - * What they are joined by exactly is defined by `Join` functions. - * - * @this {State} - * Info passed around about the current state. - * @param {FlowParents} parent - * Parent of flow nodes. - * @param {TrackFields} info - * Info on where we are in the document we are generating. - * @returns {string} - * Serialized children, joined by (blank) lines. - */ -function containerFlowBound(parent, info) { - return containerFlow(parent, this, info) -} - -/** - * Make a string safe for embedding in markdown constructs. - * - * In markdown, almost all punctuation characters can, in certain cases, - * result in something. - * Whether they do is highly subjective to where they happen and in what - * they happen. - * - * To solve this, `mdast-util-to-markdown` tracks: - * - * * Characters before and after something; - * * What “constructs” we are in. - * - * This information is then used by this function to escape or encode - * special characters. - * - * @this {State} - * Info passed around about the current state. - * @param {string | null | undefined} value - * Raw value to make safe. - * @param {SafeConfig} config - * Configuration. - * @returns {string} - * Serialized markdown safe for embedding. - */ -function safeBound(value, config) { - return safe(this, value, config) -} - -;// CONCATENATED MODULE: ./node_modules/remark-stringify/lib/index.js -/** - * @typedef {import('mdast').Root} Root - * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownOptions - * @typedef {import('unified').Compiler<Root, string>} Compiler - * @typedef {import('unified').Processor<undefined, undefined, undefined, Root, string>} Processor - */ - -/** - * @typedef {Omit<ToMarkdownOptions, 'extensions'>} Options + * @param {Headers} headers + * @param {Cookie} cookie + * @returns {void} */ +function setCookie (headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }) + webidl.brandCheck(headers, Headers, { strict: false }) + cookie = webidl.converters.Cookie(cookie) -/** - * Add support for serializing to markdown. - * - * @param {Readonly<Options> | null | undefined} [options] - * Configuration (optional). - * @returns {undefined} - * Nothing. - */ -function remarkStringify(options) { - /** @type {Processor} */ - // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly. - const self = this - - self.compiler = compiler + const str = stringify(cookie) - /** - * @type {Compiler} - */ - function compiler(tree) { - return toMarkdown(tree, { - ...self.data('settings'), - ...options, - // Note: this option is not in the readme. - // The goal is for it to be set by plugins on `data` instead of being - // passed by users. - extensions: self.data('toMarkdownExtensions') || [] - }) + if (str) { + headers.append('Set-Cookie', stringify(cookie)) } } -;// CONCATENATED MODULE: ./node_modules/bail/index.js -/** - * Throw a given error. - * - * @param {Error|null|undefined} [error] - * Maybe error. - * @returns {asserts error is null|undefined} - */ -function bail(error) { - if (error) { - throw error +webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null } -} +]) -// EXTERNAL MODULE: ./node_modules/extend/index.js -var extend = __nccwpck_require__(3860); -;// CONCATENATED MODULE: ./node_modules/devlop/lib/default.js -function deprecate(fn) { - return fn -} +webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value) + } -function equal() {} + return new Date(value) + }), + key: 'expires', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: [] + } +]) -function default_ok() {} +module.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie +} -function unreachable() {} -;// CONCATENATED MODULE: ./node_modules/is-plain-obj/index.js -function isPlainObject(value) { - if (typeof value !== 'object' || value === null) { - return false; - } +/***/ }), - const prototype = Object.getPrototypeOf(value); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); -} +/***/ 8915: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -;// CONCATENATED MODULE: ./node_modules/trough/lib/index.js -// To do: remove `void`s -// To do: remove `null` from output of our APIs, allow it as user APIs. +"use strict"; -/** - * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback - * Callback. - * - * @typedef {(...input: Array<any>) => any} Middleware - * Ware. - * - * @typedef Pipeline - * Pipeline. - * @property {Run} run - * Run the pipeline. - * @property {Use} use - * Add middleware. - * - * @typedef {(...input: Array<any>) => void} Run - * Call all middleware. - * - * Calls `done` on completion with either an error or the output of the - * last middleware. - * - * > 👉 **Note**: as the length of input defines whether async functions get a - * > `next` function, - * > it’s recommended to keep `input` at one value normally. - * - * @typedef {(fn: Middleware) => Pipeline} Use - * Add middleware. - */ +const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(19237) +const { isCTLExcludingHtab } = __nccwpck_require__(3834) +const { collectASequenceOfCodePointsFast } = __nccwpck_require__(94322) +const assert = __nccwpck_require__(42613) /** - * Create new middleware. - * - * @returns {Pipeline} - * Pipeline. + * @description Parses the field-value attributes of a set-cookie header string. + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} header + * @returns if the header is invalid, null will be returned */ -function trough() { - /** @type {Array<Middleware>} */ - const fns = [] - /** @type {Pipeline} */ - const pipeline = {run, use} - - return pipeline - - /** @type {Run} */ - function run(...values) { - let middlewareIndex = -1 - /** @type {Callback} */ - const callback = values.pop() +function parseSetCookie (header) { + // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F + // character (CTL characters excluding HTAB): Abort these steps and + // ignore the set-cookie-string entirely. + if (isCTLExcludingHtab(header)) { + return null + } - if (typeof callback !== 'function') { - throw new TypeError('Expected function as last argument, not ' + callback) - } + let nameValuePair = '' + let unparsedAttributes = '' + let name = '' + let value = '' - next(null, ...values) + // 2. If the set-cookie-string contains a %x3B (";") character: + if (header.includes(';')) { + // 1. The name-value-pair string consists of the characters up to, + // but not including, the first %x3B (";"), and the unparsed- + // attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question). + const position = { position: 0 } - /** - * Run the next `fn`, or we’re done. - * - * @param {Error | null | undefined} error - * @param {Array<any>} output - */ - function next(error, ...output) { - const fn = fns[++middlewareIndex] - let index = -1 + nameValuePair = collectASequenceOfCodePointsFast(';', header, position) + unparsedAttributes = header.slice(position.position) + } else { + // Otherwise: - if (error) { - callback(error) - return - } + // 1. The name-value-pair string consists of all the characters + // contained in the set-cookie-string, and the unparsed- + // attributes is the empty string. + nameValuePair = header + } - // Copy non-nullish input into values. - while (++index < values.length) { - if (output[index] === null || output[index] === undefined) { - output[index] = values[index] - } - } + // 3. If the name-value-pair string lacks a %x3D ("=") character, then + // the name string is empty, and the value string is the value of + // name-value-pair. + if (!nameValuePair.includes('=')) { + value = nameValuePair + } else { + // Otherwise, the name string consists of the characters up to, but + // not including, the first %x3D ("=") character, and the (possibly + // empty) value string consists of the characters after the first + // %x3D ("=") character. + const position = { position: 0 } + name = collectASequenceOfCodePointsFast( + '=', + nameValuePair, + position + ) + value = nameValuePair.slice(position.position + 1) + } - // Save the newly created `output` for the next call. - values = output + // 4. Remove any leading or trailing WSP characters from the name + // string and the value string. + name = name.trim() + value = value.trim() - // Next or done. - if (fn) { - wrap(fn, next)(...output) - } else { - callback(null, ...output) - } - } + // 5. If the sum of the lengths of the name string and the value string + // is more than 4096 octets, abort these steps and ignore the set- + // cookie-string entirely. + if (name.length + value.length > maxNameValuePairSize) { + return null } - /** @type {Use} */ - function use(middelware) { - if (typeof middelware !== 'function') { - throw new TypeError( - 'Expected `middelware` to be a function, not ' + middelware - ) - } - - fns.push(middelware) - return pipeline + // 6. The cookie-name is the name string, and the cookie-value is the + // value string. + return { + name, value, ...parseUnparsedAttributes(unparsedAttributes) } } /** - * Wrap `middleware` into a uniform interface. - * - * You can pass all input to the resulting function. - * `callback` is then called with the output of `middleware`. - * - * If `middleware` accepts more arguments than the later given in input, - * an extra `done` function is passed to it after that input, - * which must be called by `middleware`. - * - * The first value in `input` is the main input value. - * All other input values are the rest input values. - * The values given to `callback` are the input values, - * merged with every non-nullish output value. - * - * * if `middleware` throws an error, - * returns a promise that is rejected, - * or calls the given `done` function with an error, - * `callback` is called with that error - * * if `middleware` returns a value or returns a promise that is resolved, - * that value is the main output value - * * if `middleware` calls `done`, - * all non-nullish values except for the first one (the error) overwrite the - * output values - * - * @param {Middleware} middleware - * Function to wrap. - * @param {Callback} callback - * Callback called with the output of `middleware`. - * @returns {Run} - * Wrapped middleware. + * Parses the remaining attributes of a set-cookie header + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} unparsedAttributes + * @param {[Object.<string, unknown>]={}} cookieAttributeList */ -function wrap(middleware, callback) { - /** @type {boolean} */ - let called +function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) { + // 1. If the unparsed-attributes string is empty, skip the rest of + // these steps. + if (unparsedAttributes.length === 0) { + return cookieAttributeList + } - return wrapped + // 2. Discard the first character of the unparsed-attributes (which + // will be a %x3B (";") character). + assert(unparsedAttributes[0] === ';') + unparsedAttributes = unparsedAttributes.slice(1) - /** - * Call `middleware`. - * @this {any} - * @param {Array<any>} parameters - * @returns {void} - */ - function wrapped(...parameters) { - const fnExpectsCallback = middleware.length > parameters.length - /** @type {any} */ - let result + let cookieAv = '' - if (fnExpectsCallback) { - parameters.push(done) - } + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + if (unparsedAttributes.includes(';')) { + // 1. Consume the characters of the unparsed-attributes up to, but + // not including, the first %x3B (";") character. + cookieAv = collectASequenceOfCodePointsFast( + ';', + unparsedAttributes, + { position: 0 } + ) + unparsedAttributes = unparsedAttributes.slice(cookieAv.length) + } else { + // Otherwise: - try { - result = middleware.apply(this, parameters) - } catch (error) { - const exception = /** @type {Error} */ (error) + // 1. Consume the remainder of the unparsed-attributes. + cookieAv = unparsedAttributes + unparsedAttributes = '' + } - // Well, this is quite the pickle. - // `middleware` received a callback and called it synchronously, but that - // threw an error. - // The only thing left to do is to throw the thing instead. - if (fnExpectsCallback && called) { - throw exception - } + // Let the cookie-av string be the characters consumed in this step. - return done(exception) - } + let attributeName = '' + let attributeValue = '' - if (!fnExpectsCallback) { - if (result && result.then && typeof result.then === 'function') { - result.then(then, done) - } else if (result instanceof Error) { - done(result) - } else { - then(result) - } - } - } + // 4. If the cookie-av string contains a %x3D ("=") character: + if (cookieAv.includes('=')) { + // 1. The (possibly empty) attribute-name string consists of the + // characters up to, but not including, the first %x3D ("=") + // character, and the (possibly empty) attribute-value string + // consists of the characters after the first %x3D ("=") + // character. + const position = { position: 0 } - /** - * Call `callback`, only once. - * - * @type {Callback} - */ - function done(error, ...output) { - if (!called) { - called = true - callback(error, ...output) - } - } + attributeName = collectASequenceOfCodePointsFast( + '=', + cookieAv, + position + ) + attributeValue = cookieAv.slice(position.position + 1) + } else { + // Otherwise: - /** - * Call `done` with one value. - * - * @param {any} [value] - */ - function then(value) { - done(null, value) + // 1. The attribute-name string consists of the entire cookie-av + // string, and the attribute-value string is empty. + attributeName = cookieAv } -} -;// CONCATENATED MODULE: ./node_modules/vfile-message/lib/index.js -/** - * @typedef {import('unist').Node} Node - * @typedef {import('unist').Point} Point - * @typedef {import('unist').Position} Position - */ + // 5. Remove any leading or trailing WSP characters from the attribute- + // name string and the attribute-value string. + attributeName = attributeName.trim() + attributeValue = attributeValue.trim() -/** - * @typedef {object & {type: string, position?: Position | undefined}} NodeLike - * - * @typedef Options - * Configuration. - * @property {Array<Node> | null | undefined} [ancestors] - * Stack of (inclusive) ancestor nodes surrounding the message (optional). - * @property {Error | null | undefined} [cause] - * Original error cause of the message (optional). - * @property {Point | Position | null | undefined} [place] - * Place of message (optional). - * @property {string | null | undefined} [ruleId] - * Category of message (optional, example: `'my-rule'`). - * @property {string | null | undefined} [source] - * Namespace of who sent the message (optional, example: `'my-package'`). - */ + // 6. If the attribute-value is longer than 1024 octets, ignore the + // cookie-av string and return to Step 1 of this algorithm. + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + // 7. Process the attribute-name and attribute-value according to the + // requirements in the following subsections. (Notice that + // attributes with unrecognized attribute-names are ignored.) + const attributeNameLowercase = attributeName.toLowerCase() + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 + // If the attribute-name case-insensitively matches the string + // "Expires", the user agent MUST process the cookie-av as follows. + if (attributeNameLowercase === 'expires') { + // 1. Let the expiry-time be the result of parsing the attribute-value + // as cookie-date (see Section 5.1.1). + const expiryTime = new Date(attributeValue) -/** - * Message. - */ -class VFileMessage extends Error { - /** - * Create a message for `reason`. - * - * > 🪦 **Note**: also has obsolete signatures. - * - * @overload - * @param {string} reason - * @param {Options | null | undefined} [options] - * @returns - * - * @overload - * @param {string} reason - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns - * - * @overload - * @param {string} reason - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns - * - * @overload - * @param {string} reason - * @param {string | null | undefined} [origin] - * @returns - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns - * - * @overload - * @param {Error | VFileMessage} cause - * @param {string | null | undefined} [origin] - * @returns - * - * @param {Error | VFileMessage | string} causeOrReason - * Reason for message, should use markdown. - * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace] - * Configuration (optional). - * @param {string | null | undefined} [origin] - * Place in code where the message originates (example: - * `'my-package:my-rule'` or `'my-rule'`). - * @returns - * Instance of `VFileMessage`. - */ - // eslint-disable-next-line complexity - constructor(causeOrReason, optionsOrParentOrPlace, origin) { - super() + // 2. If the attribute-value failed to parse as a cookie date, ignore + // the cookie-av. - if (typeof optionsOrParentOrPlace === 'string') { - origin = optionsOrParentOrPlace - optionsOrParentOrPlace = undefined - } + cookieAttributeList.expires = expiryTime + } else if (attributeNameLowercase === 'max-age') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 + // If the attribute-name case-insensitively matches the string "Max- + // Age", the user agent MUST process the cookie-av as follows. - /** @type {string} */ - let reason = '' - /** @type {Options} */ - let options = {} - let legacyCause = false + // 1. If the first character of the attribute-value is not a DIGIT or a + // "-" character, ignore the cookie-av. + const charCode = attributeValue.charCodeAt(0) - if (optionsOrParentOrPlace) { - // Point. - if ( - 'line' in optionsOrParentOrPlace && - 'column' in optionsOrParentOrPlace - ) { - options = {place: optionsOrParentOrPlace} - } - // Position. - else if ( - 'start' in optionsOrParentOrPlace && - 'end' in optionsOrParentOrPlace - ) { - options = {place: optionsOrParentOrPlace} - } - // Node. - else if ('type' in optionsOrParentOrPlace) { - options = { - ancestors: [optionsOrParentOrPlace], - place: optionsOrParentOrPlace.position - } - } - // Options. - else { - options = {...optionsOrParentOrPlace} - } + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) } - if (typeof causeOrReason === 'string') { - reason = causeOrReason - } - // Error. - else if (!options.cause && causeOrReason) { - legacyCause = true - reason = causeOrReason.message - options.cause = causeOrReason + // 2. If the remainder of attribute-value contains a non-DIGIT + // character, ignore the cookie-av. + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) } - if (!options.ruleId && !options.source && typeof origin === 'string') { - const index = origin.indexOf(':') + // 3. Let delta-seconds be the attribute-value converted to an integer. + const deltaSeconds = Number(attributeValue) - if (index === -1) { - options.ruleId = origin - } else { - options.source = origin.slice(0, index) - options.ruleId = origin.slice(index + 1) - } - } + // 4. Let cookie-age-limit be the maximum age of the cookie (which + // SHOULD be 400 days or less, see Section 4.1.2.2). - if (!options.place && options.ancestors && options.ancestors) { - const parent = options.ancestors[options.ancestors.length - 1] + // 5. Set delta-seconds to the smaller of its present value and cookie- + // age-limit. + // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) - if (parent) { - options.place = parent.position - } - } + // 6. If delta-seconds is less than or equal to zero (0), let expiry- + // time be the earliest representable date and time. Otherwise, let + // the expiry-time be the current date and time plus delta-seconds + // seconds. + // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds - const start = - options.place && 'start' in options.place - ? options.place.start - : options.place + // 7. Append an attribute to the cookie-attribute-list with an + // attribute-name of Max-Age and an attribute-value of expiry-time. + cookieAttributeList.maxAge = deltaSeconds + } else if (attributeNameLowercase === 'domain') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 + // If the attribute-name case-insensitively matches the string "Domain", + // the user agent MUST process the cookie-av as follows. - /* eslint-disable no-unused-expressions */ - /** - * Stack of ancestor nodes surrounding the message. - * - * @type {Array<Node> | undefined} - */ - this.ancestors = options.ancestors || undefined + // 1. Let cookie-domain be the attribute-value. + let cookieDomain = attributeValue - /** - * Original error cause of the message. - * - * @type {Error | undefined} - */ - this.cause = options.cause || undefined + // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be + // cookie-domain without its leading %x2E ("."). + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1) + } - /** - * Starting column of message. - * - * @type {number | undefined} - */ - this.column = start ? start.column : undefined + // 3. Convert the cookie-domain to lower case. + cookieDomain = cookieDomain.toLowerCase() - /** - * State of problem. - * - * * `true` — error, file not usable - * * `false` — warning, change may be needed - * * `undefined` — change likely not needed - * - * @type {boolean | null | undefined} - */ - this.fatal = undefined + // 4. Append an attribute to the cookie-attribute-list with an + // attribute-name of Domain and an attribute-value of cookie-domain. + cookieAttributeList.domain = cookieDomain + } else if (attributeNameLowercase === 'path') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 + // If the attribute-name case-insensitively matches the string "Path", + // the user agent MUST process the cookie-av as follows. - /** - * Path of a file (used throughout the `VFile` ecosystem). - * - * @type {string | undefined} - */ - this.file + // 1. If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + let cookiePath = '' + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + // 1. Let cookie-path be the default-path. + cookiePath = '/' + } else { + // Otherwise: - // Field from `Error`. - /** - * Reason for message. - * - * @type {string} - */ - this.message = reason + // 1. Let cookie-path be the attribute-value. + cookiePath = attributeValue + } - /** - * Starting line of error. - * - * @type {number | undefined} - */ - this.line = start ? start.line : undefined + // 2. Append an attribute to the cookie-attribute-list with an + // attribute-name of Path and an attribute-value of cookie-path. + cookieAttributeList.path = cookiePath + } else if (attributeNameLowercase === 'secure') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 + // If the attribute-name case-insensitively matches the string "Secure", + // the user agent MUST append an attribute to the cookie-attribute-list + // with an attribute-name of Secure and an empty attribute-value. - // Field from `Error`. - /** - * Serialized positional info of message. - * - * On normal errors, this would be something like `ParseError`, buit in - * `VFile` messages we use this space to show where an error happened. - */ - this.name = stringifyPosition(options.place) || '1:1' + cookieAttributeList.secure = true + } else if (attributeNameLowercase === 'httponly') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 + // If the attribute-name case-insensitively matches the string + // "HttpOnly", the user agent MUST append an attribute to the cookie- + // attribute-list with an attribute-name of HttpOnly and an empty + // attribute-value. - /** - * Place of message. - * - * @type {Point | Position | undefined} - */ - this.place = options.place || undefined + cookieAttributeList.httpOnly = true + } else if (attributeNameLowercase === 'samesite') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 + // If the attribute-name case-insensitively matches the string + // "SameSite", the user agent MUST process the cookie-av as follows: - /** - * Reason for message, should use markdown. - * - * @type {string} - */ - this.reason = this.message + // 1. Let enforcement be "Default". + let enforcement = 'Default' - /** - * Category of message (example: `'my-rule'`). - * - * @type {string | undefined} - */ - this.ruleId = options.ruleId || undefined + const attributeValueLowercase = attributeValue.toLowerCase() + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "None", set enforcement to "None". + if (attributeValueLowercase.includes('none')) { + enforcement = 'None' + } - /** - * Namespace of message (example: `'my-package'`). - * - * @type {string | undefined} - */ - this.source = options.source || undefined + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", set enforcement to "Strict". + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict' + } - // Field from `Error`. - /** - * Stack of message. - * - * This is used by normal errors to show where something happened in - * programming code, irrelevant for `VFile` messages, - * - * @type {string} - */ - this.stack = - legacyCause && options.cause && typeof options.cause.stack === 'string' - ? options.cause.stack - : '' + // 4. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", set enforcement to "Lax". + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax' + } - // The following fields are “well known”. - // Not standard. - // Feel free to add other non-standard fields to your messages. + // 5. Append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of + // enforcement. + cookieAttributeList.sameSite = enforcement + } else { + cookieAttributeList.unparsed ??= [] - /** - * Specify the source value that’s being reported, which is deemed - * incorrect. - * - * @type {string | undefined} - */ - this.actual + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`) + } - /** - * Suggest acceptable values that can be used instead of `actual`. - * - * @type {Array<string> | undefined} - */ - this.expected + // 8. Return to Step 1 of this algorithm. + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) +} + +module.exports = { + parseSetCookie, + parseUnparsedAttributes +} + + +/***/ }), + +/***/ 3834: +/***/ ((module) => { + +"use strict"; - /** - * Long form description of the message (you should use markdown). - * - * @type {string | undefined} - */ - this.note - /** - * Link to docs for the message. - * - * > 👉 **Note**: this must be an absolute URL that can be passed as `x` - * > to `new URL(x)`. - * - * @type {string | undefined} - */ - this.url - /* eslint-enable no-unused-expressions */ - } -} - -VFileMessage.prototype.file = '' -VFileMessage.prototype.name = '' -VFileMessage.prototype.reason = '' -VFileMessage.prototype.message = '' -VFileMessage.prototype.stack = '' -VFileMessage.prototype.column = undefined -VFileMessage.prototype.line = undefined -VFileMessage.prototype.ancestors = undefined -VFileMessage.prototype.cause = undefined -VFileMessage.prototype.fatal = undefined -VFileMessage.prototype.place = undefined -VFileMessage.prototype.ruleId = undefined -VFileMessage.prototype.source = undefined - -;// CONCATENATED MODULE: external "node:path" -const external_node_path_namespaceObject = require("node:path"); -;// CONCATENATED MODULE: external "node:process" -const external_node_process_namespaceObject = require("node:process"); -;// CONCATENATED MODULE: ./node_modules/vfile/lib/minurl.shared.js /** - * Checks if a value has the shape of a WHATWG URL object. - * - * Using a symbol or instanceof would not be able to recognize URL objects - * coming from other implementations (e.g. in Electron), so instead we are - * checking some well known properties for a lack of a better test. - * - * We use `href` and `protocol` as they are the only properties that are - * easy to retrieve and calculate due to the lazy nature of the getters. - * - * We check for auth attribute to distinguish legacy url instance with - * WHATWG URL instance. - * - * @param {unknown} fileUrlOrPath - * File path or URL. - * @returns {fileUrlOrPath is URL} - * Whether it’s a URL. + * @param {string} value + * @returns {boolean} */ -// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720> -function isUrl(fileUrlOrPath) { - return Boolean( - fileUrlOrPath !== null && - typeof fileUrlOrPath === 'object' && - 'href' in fileUrlOrPath && - fileUrlOrPath.href && - 'protocol' in fileUrlOrPath && - fileUrlOrPath.protocol && - // @ts-expect-error: indexing is fine. - fileUrlOrPath.auth === undefined - ) +function isCTLExcludingHtab (value) { + if (value.length === 0) { + return false + } + + for (const char of value) { + const code = char.charCodeAt(0) + + if ( + (code >= 0x00 || code <= 0x08) || + (code >= 0x0A || code <= 0x1F) || + code === 0x7F + ) { + return false + } + } } -;// CONCATENATED MODULE: external "node:url" -const external_node_url_namespaceObject = require("node:url"); -;// CONCATENATED MODULE: ./node_modules/vfile/lib/index.js /** - * @import {Node, Point, Position} from 'unist' - * @import {Options as MessageOptions} from 'vfile-message' - * @import {Compatible, Data, Map, Options, Value} from 'vfile' + CHAR = <any US-ASCII character (octets 0 - 127)> + token = 1*<any CHAR except CTLs or separators> + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + * @param {string} name */ +function validateCookieName (name) { + for (const char of name) { + const code = char.charCodeAt(0) + + if ( + (code <= 0x20 || code > 0x7F) || + char === '(' || + char === ')' || + char === '>' || + char === '<' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' + ) { + throw new Error('Invalid cookie name') + } + } +} /** - * @typedef {object & {type: string, position?: Position | undefined}} NodeLike + cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + ; US-ASCII characters excluding CTLs, + ; whitespace DQUOTE, comma, semicolon, + ; and backslash + * @param {string} value */ +function validateCookieValue (value) { + for (const char of value) { + const code = char.charCodeAt(0) + if ( + code < 0x21 || // exclude CTLs (0-31) + code === 0x22 || + code === 0x2C || + code === 0x3B || + code === 0x5C || + code > 0x7E // non-ascii + ) { + throw new Error('Invalid header value') + } + } +} +/** + * path-value = <any CHAR except CTLs or ";"> + * @param {string} path + */ +function validateCookiePath (path) { + for (const char of path) { + const code = char.charCodeAt(0) - - + if (code < 0x21 || char === ';') { + throw new Error('Invalid cookie path') + } + } +} /** - * Order of setting (least specific to most), we need this because otherwise - * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a - * stem can be set. + * I have no idea why these values aren't allowed to be honest, + * but Deno tests these. - Khafra + * @param {string} domain */ -const order = /** @type {const} */ ([ - 'history', - 'path', - 'basename', - 'stem', - 'extname', - 'dirname' -]) - -class VFile { - /** - * Create a new virtual file. - * - * `options` is treated as: - * - * * `string` or `Uint8Array` — `{value: options}` - * * `URL` — `{path: options}` - * * `VFile` — shallow copies its data over to the new file - * * `object` — all fields are shallow copied over to the new file - * - * Path related fields are set in the following order (least specific to - * most specific): `history`, `path`, `basename`, `stem`, `extname`, - * `dirname`. - * - * You cannot set `dirname` or `extname` without setting either `history`, - * `path`, `basename`, or `stem` too. - * - * @param {Compatible | null | undefined} [value] - * File value. - * @returns - * New instance. - */ - constructor(value) { - /** @type {Options | VFile} */ - let options +function validateCookieDomain (domain) { + if ( + domain.startsWith('-') || + domain.endsWith('.') || + domain.endsWith('-') + ) { + throw new Error('Invalid cookie domain') + } +} - if (!value) { - options = {} - } else if (isUrl(value)) { - options = {path: value} - } else if (typeof value === 'string' || isUint8Array(value)) { - options = {value} - } else { - options = value - } +/** + * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 + * @param {number|Date} date + IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT + ; fixed length/zone/capitalization subset of the format + ; see Section 3.3 of [RFC5322] - /* eslint-disable no-unused-expressions */ + day-name = %x4D.6F.6E ; "Mon", case-sensitive + / %x54.75.65 ; "Tue", case-sensitive + / %x57.65.64 ; "Wed", case-sensitive + / %x54.68.75 ; "Thu", case-sensitive + / %x46.72.69 ; "Fri", case-sensitive + / %x53.61.74 ; "Sat", case-sensitive + / %x53.75.6E ; "Sun", case-sensitive + date1 = day SP month SP year + ; e.g., 02 Jun 1982 - /** - * Base of `path` (default: `process.cwd()` or `'/'` in browsers). - * - * @type {string} - */ - // Prevent calling `cwd` (which could be expensive) if it’s not needed; - // the empty string will be overridden in the next block. - this.cwd = 'cwd' in options ? '' : external_node_process_namespaceObject.cwd() + day = 2DIGIT + month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + year = 4DIGIT - /** - * Place to store custom info (default: `{}`). - * - * It’s OK to store custom data directly on the file but moving it to - * `data` is recommended. - * - * @type {Data} - */ - this.data = {} + GMT = %x47.4D.54 ; "GMT", case-sensitive - /** - * List of file paths the file moved between. - * - * The first is the original path and the last is the current path. - * - * @type {Array<string>} - */ - this.history = [] + time-of-day = hour ":" minute ":" second + ; 00:00:00 - 23:59:60 (leap second) - /** - * List of messages associated with the file. - * - * @type {Array<VFileMessage>} - */ - this.messages = [] + hour = 2DIGIT + minute = 2DIGIT + second = 2DIGIT + */ +function toIMFDate (date) { + if (typeof date === 'number') { + date = new Date(date) + } - /** - * Raw value. - * - * @type {Value} - */ - this.value + const days = [ + 'Sun', 'Mon', 'Tue', 'Wed', + 'Thu', 'Fri', 'Sat' + ] - // The below are non-standard, they are “well-known”. - // As in, used in several tools. - /** - * Source map. - * - * This type is equivalent to the `RawSourceMap` type from the `source-map` - * module. - * - * @type {Map | null | undefined} - */ - this.map + const months = [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' + ] - /** - * Custom, non-string, compiled, representation. - * - * This is used by unified to store non-string results. - * One example is when turning markdown into React nodes. - * - * @type {unknown} - */ - this.result + const dayName = days[date.getUTCDay()] + const day = date.getUTCDate().toString().padStart(2, '0') + const month = months[date.getUTCMonth()] + const year = date.getUTCFullYear() + const hour = date.getUTCHours().toString().padStart(2, '0') + const minute = date.getUTCMinutes().toString().padStart(2, '0') + const second = date.getUTCSeconds().toString().padStart(2, '0') - /** - * Whether a file was saved to disk. - * - * This is used by vfile reporters. - * - * @type {boolean} - */ - this.stored - /* eslint-enable no-unused-expressions */ + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT` +} - // Set path related properties in the correct order. - let index = -1 +/** + max-age-av = "Max-Age=" non-zero-digit *DIGIT + ; In practice, both expires-av and max-age-av + ; are limited to dates representable by the + ; user agent. + * @param {number} maxAge + */ +function validateCookieMaxAge (maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age') + } +} - while (++index < order.length) { - const field = order[index] +/** + * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 + * @param {import('./index').Cookie} cookie + */ +function stringify (cookie) { + if (cookie.name.length === 0) { + return null + } - // Note: we specifically use `in` instead of `hasOwnProperty` to accept - // `vfile`s too. - if ( - field in options && - options[field] !== undefined && - options[field] !== null - ) { - // @ts-expect-error: TS doesn’t understand basic reality. - this[field] = field === 'history' ? [...options[field]] : options[field] - } - } + validateCookieName(cookie.name) + validateCookieValue(cookie.value) - /** @type {string} */ - let field + const out = [`${cookie.name}=${cookie.value}`] - // Set non-path related properties. - for (field in options) { - // @ts-expect-error: fine to set other things. - if (!order.includes(field)) { - // @ts-expect-error: fine to set other things. - this[field] = options[field] - } - } + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true } - /** - * Get the basename (including extname) (example: `'index.min.js'`). - * - * @returns {string | undefined} - * Basename. - */ - get basename() { - return typeof this.path === 'string' - ? external_node_path_namespaceObject.basename(this.path) - : undefined + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true + cookie.domain = null + cookie.path = '/' } - /** - * Set basename (including extname) (`'index.min.js'`). - * - * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` - * on windows). - * Cannot be nullified (use `file.path = file.dirname` instead). - * - * @param {string} basename - * Basename. - * @returns {undefined} - * Nothing. - */ - set basename(basename) { - assertNonEmpty(basename, 'basename') - assertPart(basename, 'basename') - this.path = external_node_path_namespaceObject.join(this.dirname || '', basename) + if (cookie.secure) { + out.push('Secure') } - /** - * Get the parent path (example: `'~'`). - * - * @returns {string | undefined} - * Dirname. - */ - get dirname() { - return typeof this.path === 'string' - ? external_node_path_namespaceObject.dirname(this.path) - : undefined + if (cookie.httpOnly) { + out.push('HttpOnly') } - /** - * Set the parent path (example: `'~'`). - * - * Cannot be set if there’s no `path` yet. - * - * @param {string | undefined} dirname - * Dirname. - * @returns {undefined} - * Nothing. - */ - set dirname(dirname) { - assertPath(this.basename, 'dirname') - this.path = external_node_path_namespaceObject.join(dirname || '', this.basename) + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge) + out.push(`Max-Age=${cookie.maxAge}`) } - /** - * Get the extname (including dot) (example: `'.js'`). - * - * @returns {string | undefined} - * Extname. - */ - get extname() { - return typeof this.path === 'string' - ? external_node_path_namespaceObject.extname(this.path) - : undefined + if (cookie.domain) { + validateCookieDomain(cookie.domain) + out.push(`Domain=${cookie.domain}`) } - /** - * Set the extname (including dot) (example: `'.js'`). - * - * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` - * on windows). - * Cannot be set if there’s no `path` yet. - * - * @param {string | undefined} extname - * Extname. - * @returns {undefined} - * Nothing. - */ - set extname(extname) { - assertPart(extname, 'extname') - assertPath(this.dirname, 'extname') - - if (extname) { - if (extname.codePointAt(0) !== 46 /* `.` */) { - throw new Error('`extname` must start with `.`') - } - - if (extname.includes('.', 1)) { - throw new Error('`extname` cannot contain multiple dots') - } - } + if (cookie.path) { + validateCookiePath(cookie.path) + out.push(`Path=${cookie.path}`) + } - this.path = external_node_path_namespaceObject.join(this.dirname, this.stem + (extname || '')) + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`) } - /** - * Get the full path (example: `'~/index.min.js'`). - * - * @returns {string} - * Path. - */ - get path() { - return this.history[this.history.length - 1] + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`) } - /** - * Set the full path (example: `'~/index.min.js'`). - * - * Cannot be nullified. - * You can set a file URL (a `URL` object with a `file:` protocol) which will - * be turned into a path with `url.fileURLToPath`. - * - * @param {URL | string} path - * Path. - * @returns {undefined} - * Nothing. - */ - set path(path) { - if (isUrl(path)) { - path = (0,external_node_url_namespaceObject.fileURLToPath)(path) + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed') } - assertNonEmpty(path, 'path') + const [key, ...value] = part.split('=') - if (this.path !== path) { - this.history.push(path) - } + out.push(`${key.trim()}=${value.join('=')}`) } - /** - * Get the stem (basename w/o extname) (example: `'index.min'`). - * - * @returns {string | undefined} - * Stem. - */ - get stem() { - return typeof this.path === 'string' - ? external_node_path_namespaceObject.basename(this.path, this.extname) - : undefined - } + return out.join('; ') +} - /** - * Set the stem (basename w/o extname) (example: `'index.min'`). - * - * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'` - * on windows). - * Cannot be nullified (use `file.path = file.dirname` instead). - * - * @param {string} stem - * Stem. - * @returns {undefined} - * Nothing. - */ - set stem(stem) { - assertNonEmpty(stem, 'stem') - assertPart(stem, 'stem') - this.path = external_node_path_namespaceObject.join(this.dirname || '', stem + (this.extname || '')) - } +module.exports = { + isCTLExcludingHtab, + validateCookieName, + validateCookiePath, + validateCookieValue, + toIMFDate, + stringify +} - // Normal prototypal methods. - /** - * Create a fatal message for `reason` associated with the file. - * - * The `fatal` field of the message is set to `true` (error; file not usable) - * and the `file` field is set to the current file path. - * The message is added to the `messages` field on `file`. - * - * > 🪦 **Note**: also has obsolete signatures. - * - * @overload - * @param {string} reason - * @param {MessageOptions | null | undefined} [options] - * @returns {never} - * - * @overload - * @param {string} reason - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns {never} - * - * @overload - * @param {string} reason - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns {never} - * - * @overload - * @param {string} reason - * @param {string | null | undefined} [origin] - * @returns {never} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns {never} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns {never} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {string | null | undefined} [origin] - * @returns {never} - * - * @param {Error | VFileMessage | string} causeOrReason - * Reason for message, should use markdown. - * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] - * Configuration (optional). - * @param {string | null | undefined} [origin] - * Place in code where the message originates (example: - * `'my-package:my-rule'` or `'my-rule'`). - * @returns {never} - * Never. - * @throws {VFileMessage} - * Message. - */ - fail(causeOrReason, optionsOrParentOrPlace, origin) { - // @ts-expect-error: the overloads are fine. - const message = this.message(causeOrReason, optionsOrParentOrPlace, origin) - message.fatal = true +/***/ }), - throw message - } +/***/ 59136: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - /** - * Create an info message for `reason` associated with the file. - * - * The `fatal` field of the message is set to `undefined` (info; change - * likely not needed) and the `file` field is set to the current file path. - * The message is added to the `messages` field on `file`. - * - * > 🪦 **Note**: also has obsolete signatures. - * - * @overload - * @param {string} reason - * @param {MessageOptions | null | undefined} [options] - * @returns {VFileMessage} - * - * @overload - * @param {string} reason - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {string} reason - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {string} reason - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @param {Error | VFileMessage | string} causeOrReason - * Reason for message, should use markdown. - * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] - * Configuration (optional). - * @param {string | null | undefined} [origin] - * Place in code where the message originates (example: - * `'my-package:my-rule'` or `'my-rule'`). - * @returns {VFileMessage} - * Message. - */ - info(causeOrReason, optionsOrParentOrPlace, origin) { - // @ts-expect-error: the overloads are fine. - const message = this.message(causeOrReason, optionsOrParentOrPlace, origin) +"use strict"; - message.fatal = undefined - return message - } +const net = __nccwpck_require__(69278) +const assert = __nccwpck_require__(42613) +const util = __nccwpck_require__(3440) +const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(68707) - /** - * Create a message for `reason` associated with the file. - * - * The `fatal` field of the message is set to `false` (warning; change may be - * needed) and the `file` field is set to the current file path. - * The message is added to the `messages` field on `file`. - * - * > 🪦 **Note**: also has obsolete signatures. - * - * @overload - * @param {string} reason - * @param {MessageOptions | null | undefined} [options] - * @returns {VFileMessage} - * - * @overload - * @param {string} reason - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {string} reason - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {string} reason - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Node | NodeLike | null | undefined} parent - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {Point | Position | null | undefined} place - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @overload - * @param {Error | VFileMessage} cause - * @param {string | null | undefined} [origin] - * @returns {VFileMessage} - * - * @param {Error | VFileMessage | string} causeOrReason - * Reason for message, should use markdown. - * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace] - * Configuration (optional). - * @param {string | null | undefined} [origin] - * Place in code where the message originates (example: - * `'my-package:my-rule'` or `'my-rule'`). - * @returns {VFileMessage} - * Message. - */ - message(causeOrReason, optionsOrParentOrPlace, origin) { - const message = new VFileMessage( - // @ts-expect-error: the overloads are fine. - causeOrReason, - optionsOrParentOrPlace, - origin - ) +let tls // include tls conditionally since it is not always available + +// TODO: session re-use does not wait for the first +// connection to resolve the session and might therefore +// resolve the same servername multiple times even when +// re-use is enabled. + +let SessionCache +// FIXME: remove workaround when the Node bug is fixed +// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 +if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return + } - if (this.path) { - message.name = this.path + ':' + message.name - message.file = this.path + const ref = this._sessionCache.get(key) + if (ref !== undefined && ref.deref() === undefined) { + this._sessionCache.delete(key) + } + }) } - message.fatal = false + get (sessionKey) { + const ref = this._sessionCache.get(sessionKey) + return ref ? ref.deref() : null + } - this.messages.push(message) + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } - return message + this._sessionCache.set(sessionKey, new WeakRef(session)) + this._sessionRegistry.register(session, sessionKey) + } } - - /** - * Serialize the file. - * - * > **Note**: which encodings are supported depends on the engine. - * > For info on Node.js, see: - * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>. - * - * @param {string | null | undefined} [encoding='utf8'] - * Character encoding to understand `value` as when it’s a `Uint8Array` - * (default: `'utf-8'`). - * @returns {string} - * Serialized file. - */ - toString(encoding) { - if (this.value === undefined) { - return '' +} else { + SessionCache = class SimpleSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() } - if (typeof this.value === 'string') { - return this.value + get (sessionKey) { + return this._sessionCache.get(sessionKey) } - const decoder = new TextDecoder(encoding || undefined) - return decoder.decode(this.value) - } -} + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } -/** - * Assert that `part` is not a path (as in, does not contain `path.sep`). - * - * @param {string | null | undefined} part - * File path part. - * @param {string} name - * Part name. - * @returns {undefined} - * Nothing. - */ -function assertPart(part, name) { - if (part && part.includes(external_node_path_namespaceObject.sep)) { - throw new Error( - '`' + name + '` cannot be a path: did not expect `' + external_node_path_namespaceObject.sep + '`' - ) - } -} + if (this._sessionCache.size >= this._maxCachedSessions) { + // remove the oldest session + const { value: oldestKey } = this._sessionCache.keys().next() + this._sessionCache.delete(oldestKey) + } -/** - * Assert that `part` is not empty. - * - * @param {string | undefined} part - * Thing. - * @param {string} name - * Part name. - * @returns {asserts part is string} - * Nothing. - */ -function assertNonEmpty(part, name) { - if (!part) { - throw new Error('`' + name + '` cannot be empty') + this._sessionCache.set(sessionKey, session) + } } } -/** - * Assert `path` exists. - * - * @param {string | undefined} path - * Path. - * @param {string} name - * Dependency name. - * @returns {asserts path is string} - * Nothing. - */ -function assertPath(path, name) { - if (!path) { - throw new Error('Setting `' + name + '` requires `path` to be set too') +function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') } -} -/** - * Assert `value` is an `Uint8Array`. - * - * @param {unknown} value - * thing. - * @returns {value is Uint8Array} - * Whether `value` is an `Uint8Array`. - */ -function isUint8Array(value) { - return Boolean( - value && - typeof value === 'object' && - 'byteLength' in value && - 'byteOffset' in value - ) -} + const options = { path: socketPath, ...opts } + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions) + timeout = timeout == null ? 10e3 : timeout + allowH2 = allowH2 != null ? allowH2 : false + return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket + if (protocol === 'https:') { + if (!tls) { + tls = __nccwpck_require__(64756) + } + servername = servername || options.servername || util.getServerName(host) || null -;// CONCATENATED MODULE: ./node_modules/unified/lib/callable-instance.js -const CallableInstance = - /** - * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result} - */ - ( - /** @type {unknown} */ - ( - /** - * @this {Function} - * @param {string | symbol} property - * @returns {(...parameters: Array<unknown>) => unknown} - */ - function (property) { - const self = this - const constr = self.constructor - const proto = /** @type {Record<string | symbol, Function>} */ ( - // Prototypes do exist. - // type-coverage:ignore-next-line - constr.prototype - ) - const value = proto[property] - /** @type {(...parameters: Array<unknown>) => unknown} */ - const apply = function () { - return value.apply(apply, arguments) - } - - Object.setPrototypeOf(apply, proto) - - // Not needed for us in `unified`: we only call this on the `copy` - // function, - // and we don't need to add its fields (`length`, `name`) - // over. - // See also: GH-246. - // const names = Object.getOwnPropertyNames(value) - // - // for (const p of names) { - // const descriptor = Object.getOwnPropertyDescriptor(value, p) - // if (descriptor) Object.defineProperty(apply, p, descriptor) - // } + const sessionKey = servername || hostname + const session = sessionCache.get(sessionKey) || null - return apply - } - ) - ) + assert(sessionKey) -;// CONCATENATED MODULE: ./node_modules/unified/lib/index.js -/** - * @typedef {import('trough').Pipeline} Pipeline - * - * @typedef {import('unist').Node} Node - * - * @typedef {import('vfile').Compatible} Compatible - * @typedef {import('vfile').Value} Value - * - * @typedef {import('../index.js').CompileResultMap} CompileResultMap - * @typedef {import('../index.js').Data} Data - * @typedef {import('../index.js').Settings} Settings - */ + socket = tls.connect({ + highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, // upgrade socket connection + port: port || 443, + host: hostname + }) -/** - * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults - * Acceptable results from compilers. - * - * To register custom results, add them to - * {@linkcode CompileResultMap}. - */ + socket + .on('session', function (session) { + // TODO (fix): Can a session become invalid once established? Don't think so? + sessionCache.set(sessionKey, session) + }) + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update') + socket = net.connect({ + highWaterMark: 64 * 1024, // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }) + } -/** - * @template {Node} [Tree=Node] - * The node that the compiler receives (default: `Node`). - * @template {CompileResults} [Result=CompileResults] - * The thing that the compiler yields (default: `CompileResults`). - * @callback Compiler - * A **compiler** handles the compiling of a syntax tree to something else - * (in most cases, text) (TypeScript type). - * - * It is used in the stringify phase and called with a {@linkcode Node} - * and {@linkcode VFile} representation of the document to compile. - * It should return the textual representation of the given tree (typically - * `string`). - * - * > **Note**: unified typically compiles by serializing: most compilers - * > return `string` (or `Uint8Array`). - * > Some compilers, such as the one configured with - * > [`rehype-react`][rehype-react], return other values (in this case, a - * > React tree). - * > If you’re using a compiler that doesn’t serialize, expect different - * > result values. - * > - * > To register custom results in TypeScript, add them to - * > {@linkcode CompileResultMap}. - * - * [rehype-react]: https://github.com/rehypejs/rehype-react - * @param {Tree} tree - * Tree to compile. - * @param {VFile} file - * File associated with `tree`. - * @returns {Result} - * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or - * something else (for `file.result`). - */ + // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay + socket.setKeepAlive(true, keepAliveInitialDelay) + } -/** - * @template {Node} [Tree=Node] - * The node that the parser yields (default: `Node`) - * @callback Parser - * A **parser** handles the parsing of text to a syntax tree. - * - * It is used in the parse phase and is called with a `string` and - * {@linkcode VFile} of the document to parse. - * It must return the syntax tree representation of the given file - * ({@linkcode Node}). - * @param {string} document - * Document to parse. - * @param {VFile} file - * File associated with `document`. - * @returns {Tree} - * Node representing the given file. - */ + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout) -/** - * @typedef {( - * Plugin<Array<any>, any, any> | - * PluginTuple<Array<any>, any, any> | - * Preset - * )} Pluggable - * Union of the different ways to add plugins and settings. - */ + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + cancelTimeout() -/** - * @typedef {Array<Pluggable>} PluggableList - * List of plugins and presets. - */ + if (callback) { + const cb = callback + callback = null + cb(null, this) + } + }) + .on('error', function (err) { + cancelTimeout() -// Note: we can’t use `callback` yet as it messes up `this`: -// <https://github.com/microsoft/TypeScript/issues/55197>. -/** - * @template {Array<unknown>} [PluginParameters=[]] - * Arguments passed to the plugin (default: `[]`, the empty tuple). - * @template {Node | string | undefined} [Input=Node] - * Value that is expected as input (default: `Node`). - * - * * If the plugin returns a {@linkcode Transformer}, this - * should be the node it expects. - * * If the plugin sets a {@linkcode Parser}, this should be - * `string`. - * * If the plugin sets a {@linkcode Compiler}, this should be the - * node it expects. - * @template [Output=Input] - * Value that is yielded as output (default: `Input`). - * - * * If the plugin returns a {@linkcode Transformer}, this - * should be the node that that yields. - * * If the plugin sets a {@linkcode Parser}, this should be the - * node that it yields. - * * If the plugin sets a {@linkcode Compiler}, this should be - * result it yields. - * @typedef {( - * (this: Processor, ...parameters: PluginParameters) => - * Input extends string ? // Parser. - * Output extends Node | undefined ? undefined | void : never : - * Output extends CompileResults ? // Compiler. - * Input extends Node | undefined ? undefined | void : never : - * Transformer< - * Input extends Node ? Input : Node, - * Output extends Node ? Output : Node - * > | undefined | void - * )} Plugin - * Single plugin. - * - * Plugins configure the processors they are applied on in the following - * ways: - * - * * they change the processor, such as the parser, the compiler, or by - * configuring data - * * they specify how to handle trees and files - * - * In practice, they are functions that can receive options and configure the - * processor (`this`). - * - * > **Note**: plugins are called when the processor is *frozen*, not when - * > they are applied. - */ + if (callback) { + const cb = callback + callback = null + cb(err) + } + }) -/** - * Tuple of a plugin and its configuration. - * - * The first item is a plugin, the rest are its parameters. - * - * @template {Array<unknown>} [TupleParameters=[]] - * Arguments passed to the plugin (default: `[]`, the empty tuple). - * @template {Node | string | undefined} [Input=undefined] - * Value that is expected as input (optional). - * - * * If the plugin returns a {@linkcode Transformer}, this - * should be the node it expects. - * * If the plugin sets a {@linkcode Parser}, this should be - * `string`. - * * If the plugin sets a {@linkcode Compiler}, this should be the - * node it expects. - * @template [Output=undefined] (optional). - * Value that is yielded as output. - * - * * If the plugin returns a {@linkcode Transformer}, this - * should be the node that that yields. - * * If the plugin sets a {@linkcode Parser}, this should be the - * node that it yields. - * * If the plugin sets a {@linkcode Compiler}, this should be - * result it yields. - * @typedef {( - * [ - * plugin: Plugin<TupleParameters, Input, Output>, - * ...parameters: TupleParameters - * ] - * )} PluginTuple - */ + return socket + } +} -/** - * @typedef Preset - * Sharable configuration. - * - * They can contain plugins and settings. - * @property {PluggableList | undefined} [plugins] - * List of plugins and presets (optional). - * @property {Settings | undefined} [settings] - * Shared settings for parsers and compilers (optional). - */ +function setupTimeout (onConnectTimeout, timeout) { + if (!timeout) { + return () => {} + } -/** - * @template {VFile} [File=VFile] - * The file that the callback receives (default: `VFile`). - * @callback ProcessCallback - * Callback called when the process is done. - * - * Called with either an error or a result. - * @param {Error | undefined} [error] - * Fatal error (optional). - * @param {File | undefined} [file] - * Processed file (optional). - * @returns {undefined} - * Nothing. - */ + let s1 = null + let s2 = null + const timeoutId = setTimeout(() => { + // setImmediate is added to make sure that we priotorise socket error events over timeouts + s1 = setImmediate(() => { + if (process.platform === 'win32') { + // Windows needs an extra setImmediate probably due to implementation differences in the socket logic + s2 = setImmediate(() => onConnectTimeout()) + } else { + onConnectTimeout() + } + }) + }, timeout) + return () => { + clearTimeout(timeoutId) + clearImmediate(s1) + clearImmediate(s2) + } +} -/** - * @template {Node} [Tree=Node] - * The tree that the callback receives (default: `Node`). - * @callback RunCallback - * Callback called when transformers are done. - * - * Called with either an error or results. - * @param {Error | undefined} [error] - * Fatal error (optional). - * @param {Tree | undefined} [tree] - * Transformed tree (optional). - * @param {VFile | undefined} [file] - * File (optional). - * @returns {undefined} - * Nothing. - */ +function onConnectTimeout (socket) { + util.destroy(socket, new ConnectTimeoutError()) +} -/** - * @template {Node} [Output=Node] - * Node type that the transformer yields (default: `Node`). - * @callback TransformCallback - * Callback passed to transforms. - * - * If the signature of a `transformer` accepts a third argument, the - * transformer may perform asynchronous operations, and must call it. - * @param {Error | undefined} [error] - * Fatal error to stop the process (optional). - * @param {Output | undefined} [tree] - * New, changed, tree (optional). - * @param {VFile | undefined} [file] - * New, changed, file (optional). - * @returns {undefined} - * Nothing. - */ +module.exports = buildConnector -/** - * @template {Node} [Input=Node] - * Node type that the transformer expects (default: `Node`). - * @template {Node} [Output=Input] - * Node type that the transformer yields (default: `Input`). - * @callback Transformer - * Transformers handle syntax trees and files. - * - * They are functions that are called each time a syntax tree and file are - * passed through the run phase. - * When an error occurs in them (either because it’s thrown, returned, - * rejected, or passed to `next`), the process stops. - * - * The run phase is handled by [`trough`][trough], see its documentation for - * the exact semantics of these functions. - * - * > **Note**: you should likely ignore `next`: don’t accept it. - * > it supports callback-style async work. - * > But promises are likely easier to reason about. - * - * [trough]: https://github.com/wooorm/trough#function-fninput-next - * @param {Input} tree - * Tree to handle. - * @param {VFile} file - * File to handle. - * @param {TransformCallback<Output>} next - * Callback. - * @returns {( - * Promise<Output | undefined | void> | - * Promise<never> | // For some reason this is needed separately. - * Output | - * Error | - * undefined | - * void - * )} - * If you accept `next`, nothing. - * Otherwise: - * - * * `Error` — fatal error to stop the process - * * `Promise<undefined>` or `undefined` — the next transformer keeps using - * same tree - * * `Promise<Node>` or `Node` — new, changed, tree - */ -/** - * @template {Node | undefined} ParseTree - * Output of `parse`. - * @template {Node | undefined} HeadTree - * Input for `run`. - * @template {Node | undefined} TailTree - * Output for `run`. - * @template {Node | undefined} CompileTree - * Input of `stringify`. - * @template {CompileResults | undefined} CompileResult - * Output of `stringify`. - * @template {Node | string | undefined} Input - * Input of plugin. - * @template Output - * Output of plugin (optional). - * @typedef {( - * Input extends string - * ? Output extends Node | undefined - * ? // Parser. - * Processor< - * Output extends undefined ? ParseTree : Output, - * HeadTree, - * TailTree, - * CompileTree, - * CompileResult - * > - * : // Unknown. - * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> - * : Output extends CompileResults - * ? Input extends Node | undefined - * ? // Compiler. - * Processor< - * ParseTree, - * HeadTree, - * TailTree, - * Input extends undefined ? CompileTree : Input, - * Output extends undefined ? CompileResult : Output - * > - * : // Unknown. - * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> - * : Input extends Node | undefined - * ? Output extends Node | undefined - * ? // Transform. - * Processor< - * ParseTree, - * HeadTree extends undefined ? Input : HeadTree, - * Output extends undefined ? TailTree : Output, - * CompileTree, - * CompileResult - * > - * : // Unknown. - * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> - * : // Unknown. - * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult> - * )} UsePlugin - * Create a processor based on the input/output of a {@link Plugin plugin}. - */ +/***/ }), -/** - * @template {CompileResults | undefined} Result - * Node type that the transformer yields. - * @typedef {( - * Result extends Value | undefined ? - * VFile : - * VFile & {result: Result} - * )} VFileWithOutput - * Type to generate a {@linkcode VFile} corresponding to a compiler result. - * - * If a result that is not acceptable on a `VFile` is used, that will - * be stored on the `result` field of {@linkcode VFile}. - */ +/***/ 10735: +/***/ ((module) => { +"use strict"; +/** @type {Record<string, string | undefined>} */ +const headerNameLowerCasedRecord = {} +// https://developer.mozilla.org/docs/Web/HTTP/Headers +const wellknownHeaderNames = [ + 'Accept', + 'Accept-Encoding', + 'Accept-Language', + 'Accept-Ranges', + 'Access-Control-Allow-Credentials', + 'Access-Control-Allow-Headers', + 'Access-Control-Allow-Methods', + 'Access-Control-Allow-Origin', + 'Access-Control-Expose-Headers', + 'Access-Control-Max-Age', + 'Access-Control-Request-Headers', + 'Access-Control-Request-Method', + 'Age', + 'Allow', + 'Alt-Svc', + 'Alt-Used', + 'Authorization', + 'Cache-Control', + 'Clear-Site-Data', + 'Connection', + 'Content-Disposition', + 'Content-Encoding', + 'Content-Language', + 'Content-Length', + 'Content-Location', + 'Content-Range', + 'Content-Security-Policy', + 'Content-Security-Policy-Report-Only', + 'Content-Type', + 'Cookie', + 'Cross-Origin-Embedder-Policy', + 'Cross-Origin-Opener-Policy', + 'Cross-Origin-Resource-Policy', + 'Date', + 'Device-Memory', + 'Downlink', + 'ECT', + 'ETag', + 'Expect', + 'Expect-CT', + 'Expires', + 'Forwarded', + 'From', + 'Host', + 'If-Match', + 'If-Modified-Since', + 'If-None-Match', + 'If-Range', + 'If-Unmodified-Since', + 'Keep-Alive', + 'Last-Modified', + 'Link', + 'Location', + 'Max-Forwards', + 'Origin', + 'Permissions-Policy', + 'Pragma', + 'Proxy-Authenticate', + 'Proxy-Authorization', + 'RTT', + 'Range', + 'Referer', + 'Referrer-Policy', + 'Refresh', + 'Retry-After', + 'Sec-WebSocket-Accept', + 'Sec-WebSocket-Extensions', + 'Sec-WebSocket-Key', + 'Sec-WebSocket-Protocol', + 'Sec-WebSocket-Version', + 'Server', + 'Server-Timing', + 'Service-Worker-Allowed', + 'Service-Worker-Navigation-Preload', + 'Set-Cookie', + 'SourceMap', + 'Strict-Transport-Security', + 'Supports-Loading-Mode', + 'TE', + 'Timing-Allow-Origin', + 'Trailer', + 'Transfer-Encoding', + 'Upgrade', + 'Upgrade-Insecure-Requests', + 'User-Agent', + 'Vary', + 'Via', + 'WWW-Authenticate', + 'X-Content-Type-Options', + 'X-DNS-Prefetch-Control', + 'X-Frame-Options', + 'X-Permitted-Cross-Domain-Policies', + 'X-Powered-By', + 'X-Requested-With', + 'X-XSS-Protection' +] +for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i] + const lowerCasedKey = key.toLowerCase() + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = + lowerCasedKey +} +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(headerNameLowerCasedRecord, null) +module.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord +} -// To do: next major: drop `Compiler`, `Parser`: prefer lowercase. +/***/ }), -// To do: we could start yielding `never` in TS when a parser is missing and -// `parse` is called. -// Currently, we allow directly setting `processor.parser`, which is untyped. +/***/ 68707: +/***/ ((module) => { -const unified_lib_own = {}.hasOwnProperty +"use strict"; -/** - * @template {Node | undefined} [ParseTree=undefined] - * Output of `parse` (optional). - * @template {Node | undefined} [HeadTree=undefined] - * Input for `run` (optional). - * @template {Node | undefined} [TailTree=undefined] - * Output for `run` (optional). - * @template {Node | undefined} [CompileTree=undefined] - * Input of `stringify` (optional). - * @template {CompileResults | undefined} [CompileResult=undefined] - * Output of `stringify` (optional). - * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>} - */ -class Processor extends CallableInstance { - /** - * Create a processor. - */ - constructor() { - // If `Processor()` is called (w/o new), `copy` is called instead. - super('copy') - /** - * Compiler to use (deprecated). - * - * @deprecated - * Use `compiler` instead. - * @type {( - * Compiler< - * CompileTree extends undefined ? Node : CompileTree, - * CompileResult extends undefined ? CompileResults : CompileResult - * > | - * undefined - * )} - */ - this.Compiler = undefined +class UndiciError extends Error { + constructor (message) { + super(message) + this.name = 'UndiciError' + this.code = 'UND_ERR' + } +} - /** - * Parser to use (deprecated). - * - * @deprecated - * Use `parser` instead. - * @type {( - * Parser<ParseTree extends undefined ? Node : ParseTree> | - * undefined - * )} - */ - this.Parser = undefined +class ConnectTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ConnectTimeoutError) + this.name = 'ConnectTimeoutError' + this.message = message || 'Connect Timeout Error' + this.code = 'UND_ERR_CONNECT_TIMEOUT' + } +} - // Note: the following fields are considered private. - // However, they are needed for tests, and TSC generates an untyped - // `private freezeIndex` field for, which trips `type-coverage` up. - // Instead, we use `@deprecated` to visualize that they shouldn’t be used. - /** - * Internal list of configured plugins. - * - * @deprecated - * This is a private internal property and should not be used. - * @type {Array<PluginTuple<Array<unknown>>>} - */ - this.attachers = [] +class HeadersTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersTimeoutError) + this.name = 'HeadersTimeoutError' + this.message = message || 'Headers Timeout Error' + this.code = 'UND_ERR_HEADERS_TIMEOUT' + } +} - /** - * Compiler to use. - * - * @type {( - * Compiler< - * CompileTree extends undefined ? Node : CompileTree, - * CompileResult extends undefined ? CompileResults : CompileResult - * > | - * undefined - * )} - */ - this.compiler = undefined +class HeadersOverflowError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersOverflowError) + this.name = 'HeadersOverflowError' + this.message = message || 'Headers Overflow Error' + this.code = 'UND_ERR_HEADERS_OVERFLOW' + } +} - /** - * Internal state to track where we are while freezing. - * - * @deprecated - * This is a private internal property and should not be used. - * @type {number} - */ - this.freezeIndex = -1 +class BodyTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, BodyTimeoutError) + this.name = 'BodyTimeoutError' + this.message = message || 'Body Timeout Error' + this.code = 'UND_ERR_BODY_TIMEOUT' + } +} - /** - * Internal state to track whether we’re frozen. - * - * @deprecated - * This is a private internal property and should not be used. - * @type {boolean | undefined} - */ - this.frozen = undefined +class ResponseStatusCodeError extends UndiciError { + constructor (message, statusCode, headers, body) { + super(message) + Error.captureStackTrace(this, ResponseStatusCodeError) + this.name = 'ResponseStatusCodeError' + this.message = message || 'Response Status Code Error' + this.code = 'UND_ERR_RESPONSE_STATUS_CODE' + this.body = body + this.status = statusCode + this.statusCode = statusCode + this.headers = headers + } +} - /** - * Internal state. - * - * @deprecated - * This is a private internal property and should not be used. - * @type {Data} - */ - this.namespace = {} +class InvalidArgumentError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidArgumentError) + this.name = 'InvalidArgumentError' + this.message = message || 'Invalid Argument Error' + this.code = 'UND_ERR_INVALID_ARG' + } +} - /** - * Parser to use. - * - * @type {( - * Parser<ParseTree extends undefined ? Node : ParseTree> | - * undefined - * )} - */ - this.parser = undefined +class InvalidReturnValueError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidReturnValueError) + this.name = 'InvalidReturnValueError' + this.message = message || 'Invalid Return Value Error' + this.code = 'UND_ERR_INVALID_RETURN_VALUE' + } +} - /** - * Internal list of configured transformers. - * - * @deprecated - * This is a private internal property and should not be used. - * @type {Pipeline} - */ - this.transformers = trough() +class RequestAbortedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestAbortedError) + this.name = 'AbortError' + this.message = message || 'Request aborted' + this.code = 'UND_ERR_ABORTED' } +} - /** - * Copy a processor. - * - * @deprecated - * This is a private internal method and should not be used. - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * New *unfrozen* processor ({@linkcode Processor}) that is - * configured to work the same as its ancestor. - * When the descendant processor is configured in the future it does not - * affect the ancestral processor. - */ - copy() { - // Cast as the type parameters will be the same after attaching. - const destination = - /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ ( - new Processor() - ) - let index = -1 +class InformationalError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InformationalError) + this.name = 'InformationalError' + this.message = message || 'Request information' + this.code = 'UND_ERR_INFO' + } +} - while (++index < this.attachers.length) { - const attacher = this.attachers[index] - destination.use(...attacher) - } +class RequestContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestContentLengthMismatchError) + this.name = 'RequestContentLengthMismatchError' + this.message = message || 'Request body length does not match content-length header' + this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' + } +} - destination.data(extend(true, {}, this.namespace)) +class ResponseContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseContentLengthMismatchError) + this.name = 'ResponseContentLengthMismatchError' + this.message = message || 'Response body length does not match content-length header' + this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH' + } +} - return destination +class ClientDestroyedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientDestroyedError) + this.name = 'ClientDestroyedError' + this.message = message || 'The client is destroyed' + this.code = 'UND_ERR_DESTROYED' } +} - /** - * Configure the processor with info available to all plugins. - * Information is stored in an object. - * - * Typically, options can be given to a specific plugin, but sometimes it - * makes sense to have information shared with several plugins. - * For example, a list of HTML elements that are self-closing, which is - * needed during all phases. - * - * > **Note**: setting information cannot occur on *frozen* processors. - * > Call the processor first to create a new unfrozen processor. - * - * > **Note**: to register custom data in TypeScript, augment the - * > {@linkcode Data} interface. - * - * @example - * This example show how to get and set info: - * - * ```js - * import {unified} from 'unified' - * - * const processor = unified().data('alpha', 'bravo') - * - * processor.data('alpha') // => 'bravo' - * - * processor.data() // => {alpha: 'bravo'} - * - * processor.data({charlie: 'delta'}) - * - * processor.data() // => {charlie: 'delta'} - * ``` - * - * @template {keyof Data} Key - * - * @overload - * @returns {Data} - * - * @overload - * @param {Data} dataset - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * - * @overload - * @param {Key} key - * @returns {Data[Key]} - * - * @overload - * @param {Key} key - * @param {Data[Key]} value - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * - * @param {Data | Key} [key] - * Key to get or set, or entire dataset to set, or nothing to get the - * entire dataset (optional). - * @param {Data[Key]} [value] - * Value to set (optional). - * @returns {unknown} - * The current processor when setting, the value at `key` when getting, or - * the entire dataset when getting without key. - */ - data(key, value) { - if (typeof key === 'string') { - // Set `key`. - if (arguments.length === 2) { - assertUnfrozen('data', this.frozen) - this.namespace[key] = value - return this - } +class ClientClosedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientClosedError) + this.name = 'ClientClosedError' + this.message = message || 'The client is closed' + this.code = 'UND_ERR_CLOSED' + } +} - // Get `key`. - return (unified_lib_own.call(this.namespace, key) && this.namespace[key]) || undefined - } +class SocketError extends UndiciError { + constructor (message, socket) { + super(message) + Error.captureStackTrace(this, SocketError) + this.name = 'SocketError' + this.message = message || 'Socket error' + this.code = 'UND_ERR_SOCKET' + this.socket = socket + } +} - // Set space. - if (key) { - assertUnfrozen('data', this.frozen) - this.namespace = key - return this - } +class NotSupportedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'NotSupportedError' + this.message = message || 'Not supported error' + this.code = 'UND_ERR_NOT_SUPPORTED' + } +} - // Get space. - return this.namespace +class BalancedPoolMissingUpstreamError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'MissingUpstreamError' + this.message = message || 'No upstream has been added to the BalancedPool' + this.code = 'UND_ERR_BPL_MISSING_UPSTREAM' } +} - /** - * Freeze a processor. - * - * Frozen processors are meant to be extended and not to be configured - * directly. - * - * When a processor is frozen it cannot be unfrozen. - * New processors working the same way can be created by calling the - * processor. - * - * It’s possible to freeze processors explicitly by calling `.freeze()`. - * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`, - * `.stringify()`, `.process()`, or `.processSync()` are called. - * - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * The current processor. - */ - freeze() { - if (this.frozen) { - return this - } +class HTTPParserError extends Error { + constructor (message, code, data) { + super(message) + Error.captureStackTrace(this, HTTPParserError) + this.name = 'HTTPParserError' + this.code = code ? `HPE_${code}` : undefined + this.data = data ? data.toString() : undefined + } +} - // Cast so that we can type plugins easier. - // Plugins are supposed to be usable on different processors, not just on - // this exact processor. - const self = /** @type {Processor} */ (/** @type {unknown} */ (this)) +class ResponseExceededMaxSizeError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseExceededMaxSizeError) + this.name = 'ResponseExceededMaxSizeError' + this.message = message || 'Response content exceeded max size' + this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE' + } +} - while (++this.freezeIndex < this.attachers.length) { - const [attacher, ...options] = this.attachers[this.freezeIndex] +class RequestRetryError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message) + Error.captureStackTrace(this, RequestRetryError) + this.name = 'RequestRetryError' + this.message = message || 'Request retry error' + this.code = 'UND_ERR_REQ_RETRY' + this.statusCode = code + this.data = data + this.headers = headers + } +} - if (options[0] === false) { - continue - } +module.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError +} - if (options[0] === true) { - options[0] = undefined - } - const transformer = attacher.call(self, ...options) +/***/ }), - if (typeof transformer === 'function') { - this.transformers.use(transformer) - } - } +/***/ 44655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - this.frozen = true - this.freezeIndex = Number.POSITIVE_INFINITY +"use strict"; - return this - } - /** - * Parse text to a syntax tree. - * - * > **Note**: `parse` freezes the processor if not already *frozen*. - * - * > **Note**: `parse` performs the parse phase, not the run phase or other - * > phases. - * - * @param {Compatible | undefined} [file] - * file to parse (optional); typically `string` or `VFile`; any value - * accepted as `x` in `new VFile(x)`. - * @returns {ParseTree extends undefined ? Node : ParseTree} - * Syntax tree representing `file`. - */ - parse(file) { - this.freeze() - const realFile = vfile(file) - const parser = this.parser || this.Parser - assertParser('parse', parser) - return parser(String(realFile), realFile) - } +const { + InvalidArgumentError, + NotSupportedError +} = __nccwpck_require__(68707) +const assert = __nccwpck_require__(42613) +const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(36443) +const util = __nccwpck_require__(3440) - /** - * Process the given file as configured on the processor. - * - * > **Note**: `process` freezes the processor if not already *frozen*. - * - * > **Note**: `process` performs the parse, run, and stringify phases. - * - * @overload - * @param {Compatible | undefined} file - * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done - * @returns {undefined} - * - * @overload - * @param {Compatible | undefined} [file] - * @returns {Promise<VFileWithOutput<CompileResult>>} - * - * @param {Compatible | undefined} [file] - * File (optional); typically `string` or `VFile`]; any value accepted as - * `x` in `new VFile(x)`. - * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done] - * Callback (optional). - * @returns {Promise<VFile> | undefined} - * Nothing if `done` is given. - * Otherwise a promise, rejected with a fatal error or resolved with the - * processed file. - * - * The parsed, transformed, and compiled value is available at - * `file.value` (see note). - * - * > **Note**: unified typically compiles by serializing: most - * > compilers return `string` (or `Uint8Array`). - * > Some compilers, such as the one configured with - * > [`rehype-react`][rehype-react], return other values (in this case, a - * > React tree). - * > If you’re using a compiler that doesn’t serialize, expect different - * > result values. - * > - * > To register custom results in TypeScript, add them to - * > {@linkcode CompileResultMap}. - * - * [rehype-react]: https://github.com/rehypejs/rehype-react - */ - process(file, done) { - const self = this +// tokenRegExp and headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js - this.freeze() - assertParser('process', this.parser || this.Parser) - assertCompiler('process', this.compiler || this.Compiler) +/** + * Verifies that the given val is a valid HTTP token + * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + */ +const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/ - return done ? executor(undefined, done) : new Promise(executor) +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ - // Note: `void`s needed for TS. - /** - * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve - * @param {(error: Error | undefined) => undefined | void} reject - * @returns {undefined} - */ - function executor(resolve, reject) { - const realFile = vfile(file) - // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the - // input of the first transform). - const parseTree = - /** @type {HeadTree extends undefined ? Node : HeadTree} */ ( - /** @type {unknown} */ (self.parse(realFile)) - ) +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +const invalidPathRegex = /[^\u0021-\u00ff]/ - self.run(parseTree, realFile, function (error, tree, file) { - if (error || !tree || !file) { - return realDone(error) - } +const kHandler = Symbol('handler') - // Assume `TailTree` (the output of the last transform) matches - // `CompileTree` (the input of the compiler). - const compileTree = - /** @type {CompileTree extends undefined ? Node : CompileTree} */ ( - /** @type {unknown} */ (tree) - ) +const channels = {} - const compileResult = self.stringify(compileTree, file) +let extractBody - if (looksLikeAValue(compileResult)) { - file.value = compileResult - } else { - file.result = compileResult - } +try { + const diagnosticsChannel = __nccwpck_require__(31637) + channels.create = diagnosticsChannel.channel('undici:request:create') + channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent') + channels.headers = diagnosticsChannel.channel('undici:request:headers') + channels.trailers = diagnosticsChannel.channel('undici:request:trailers') + channels.error = diagnosticsChannel.channel('undici:request:error') +} catch { + channels.create = { hasSubscribers: false } + channels.bodySent = { hasSubscribers: false } + channels.headers = { hasSubscribers: false } + channels.trailers = { hasSubscribers: false } + channels.error = { hasSubscribers: false } +} - realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file)) - }) +class Request { + constructor (origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string') + } else if ( + path[0] !== '/' && + !(path.startsWith('http://') || path.startsWith('https://')) && + method !== 'CONNECT' + ) { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash') + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path') + } - /** - * @param {Error | undefined} error - * @param {VFileWithOutput<CompileResult> | undefined} [file] - * @returns {undefined} - */ - function realDone(error, file) { - if (error || !file) { - reject(error) - } else if (resolve) { - resolve(file) - } else { - default_ok(done, '`done` is defined if `resolve` is not') - done(undefined, file) - } - } + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string') + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method') } - } - /** - * Process the given file as configured on the processor. - * - * An error is thrown if asynchronous transforms are configured. - * - * > **Note**: `processSync` freezes the processor if not already *frozen*. - * - * > **Note**: `processSync` performs the parse, run, and stringify phases. - * - * @param {Compatible | undefined} [file] - * File (optional); typically `string` or `VFile`; any value accepted as - * `x` in `new VFile(x)`. - * @returns {VFileWithOutput<CompileResult>} - * The processed file. - * - * The parsed, transformed, and compiled value is available at - * `file.value` (see note). - * - * > **Note**: unified typically compiles by serializing: most - * > compilers return `string` (or `Uint8Array`). - * > Some compilers, such as the one configured with - * > [`rehype-react`][rehype-react], return other values (in this case, a - * > React tree). - * > If you’re using a compiler that doesn’t serialize, expect different - * > result values. - * > - * > To register custom results in TypeScript, add them to - * > {@linkcode CompileResultMap}. - * - * [rehype-react]: https://github.com/rehypejs/rehype-react - */ - processSync(file) { - /** @type {boolean} */ - let complete = false - /** @type {VFileWithOutput<CompileResult> | undefined} */ - let result + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string') + } - this.freeze() - assertParser('processSync', this.parser || this.Parser) - assertCompiler('processSync', this.compiler || this.Compiler) + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout') + } - this.process(file, realDone) - assertDone('processSync', 'process', complete) - default_ok(result, 'we either bailed on an error or have a tree') + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout') + } - return result + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset') + } - /** - * @type {ProcessCallback<VFileWithOutput<CompileResult>>} - */ - function realDone(error, file) { - complete = true - bail(error) - result = file + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue') } - } - /** - * Run *transformers* on a syntax tree. - * - * > **Note**: `run` freezes the processor if not already *frozen*. - * - * > **Note**: `run` performs the run phase, not other phases. - * - * @overload - * @param {HeadTree extends undefined ? Node : HeadTree} tree - * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done - * @returns {undefined} - * - * @overload - * @param {HeadTree extends undefined ? Node : HeadTree} tree - * @param {Compatible | undefined} file - * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done - * @returns {undefined} - * - * @overload - * @param {HeadTree extends undefined ? Node : HeadTree} tree - * @param {Compatible | undefined} [file] - * @returns {Promise<TailTree extends undefined ? Node : TailTree>} - * - * @param {HeadTree extends undefined ? Node : HeadTree} tree - * Tree to transform and inspect. - * @param {( - * RunCallback<TailTree extends undefined ? Node : TailTree> | - * Compatible - * )} [file] - * File associated with `node` (optional); any value accepted as `x` in - * `new VFile(x)`. - * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done] - * Callback (optional). - * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined} - * Nothing if `done` is given. - * Otherwise, a promise rejected with a fatal error or resolved with the - * transformed tree. - */ - run(tree, file, done) { - assertNode(tree) - this.freeze() + this.headersTimeout = headersTimeout - const transformers = this.transformers + this.bodyTimeout = bodyTimeout - if (!done && typeof file === 'function') { - done = file - file = undefined - } + this.throwOnError = throwOnError === true - return done ? executor(undefined, done) : new Promise(executor) + this.method = method - // Note: `void`s needed for TS. - /** - * @param {( - * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) | - * undefined - * )} resolve - * @param {(error: Error) => undefined | void} reject - * @returns {undefined} - */ - function executor(resolve, reject) { - default_ok( - typeof file !== 'function', - '`file` can’t be a `done` anymore, we checked' - ) - const realFile = vfile(file) - transformers.run(tree, realFile, realDone) + this.abort = null - /** - * @param {Error | undefined} error - * @param {Node} outputTree - * @param {VFile} file - * @returns {undefined} - */ - function realDone(error, outputTree, file) { - const resultingTree = - /** @type {TailTree extends undefined ? Node : TailTree} */ ( - outputTree || tree - ) + if (body == null) { + this.body = null + } else if (util.isStream(body)) { + this.body = body - if (error) { - reject(error) - } else if (resolve) { - resolve(resultingTree) + const rState = this.body._readableState + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy () { + util.destroy(this) + } + this.body.on('end', this.endHandler) + } + + this.errorHandler = err => { + if (this.abort) { + this.abort(err) } else { - default_ok(done, '`done` is defined if `resolve` is not') - done(undefined, resultingTree, file) + this.error = err } } + this.body.on('error', this.errorHandler) + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null + } else if (typeof body === 'string') { + this.body = body.length ? Buffer.from(body) : null + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') } - } - /** - * Run *transformers* on a syntax tree. - * - * An error is thrown if asynchronous transforms are configured. - * - * > **Note**: `runSync` freezes the processor if not already *frozen*. - * - * > **Note**: `runSync` performs the run phase, not other phases. - * - * @param {HeadTree extends undefined ? Node : HeadTree} tree - * Tree to transform and inspect. - * @param {Compatible | undefined} [file] - * File associated with `node` (optional); any value accepted as `x` in - * `new VFile(x)`. - * @returns {TailTree extends undefined ? Node : TailTree} - * Transformed tree. - */ - runSync(tree, file) { - /** @type {boolean} */ - let complete = false - /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */ - let result + this.completed = false - this.run(tree, file, realDone) + this.aborted = false - assertDone('runSync', 'run', complete) - default_ok(result, 'we either bailed on an error or have a tree') - return result + this.upgrade = upgrade || null - /** - * @type {RunCallback<TailTree extends undefined ? Node : TailTree>} - */ - function realDone(error, tree) { - bail(error) - result = tree - complete = true - } - } + this.path = query ? util.buildURL(path, query) : path - /** - * Compile a syntax tree. - * - * > **Note**: `stringify` freezes the processor if not already *frozen*. - * - * > **Note**: `stringify` performs the stringify phase, not the run phase - * > or other phases. - * - * @param {CompileTree extends undefined ? Node : CompileTree} tree - * Tree to compile. - * @param {Compatible | undefined} [file] - * File associated with `node` (optional); any value accepted as `x` in - * `new VFile(x)`. - * @returns {CompileResult extends undefined ? Value : CompileResult} - * Textual representation of the tree (see note). - * - * > **Note**: unified typically compiles by serializing: most compilers - * > return `string` (or `Uint8Array`). - * > Some compilers, such as the one configured with - * > [`rehype-react`][rehype-react], return other values (in this case, a - * > React tree). - * > If you’re using a compiler that doesn’t serialize, expect different - * > result values. - * > - * > To register custom results in TypeScript, add them to - * > {@linkcode CompileResultMap}. - * - * [rehype-react]: https://github.com/rehypejs/rehype-react - */ - stringify(tree, file) { - this.freeze() - const realFile = vfile(file) - const compiler = this.compiler || this.Compiler - assertCompiler('stringify', compiler) - assertNode(tree) + this.origin = origin - return compiler(tree, realFile) - } + this.idempotent = idempotent == null + ? method === 'HEAD' || method === 'GET' + : idempotent - /** - * Configure the processor to use a plugin, a list of usable values, or a - * preset. - * - * If the processor is already using a plugin, the previous plugin - * configuration is changed based on the options that are passed in. - * In other words, the plugin is not added a second time. - * - * > **Note**: `use` cannot be called on *frozen* processors. - * > Call the processor first to create a new unfrozen processor. - * - * @example - * There are many ways to pass plugins to `.use()`. - * This example gives an overview: - * - * ```js - * import {unified} from 'unified' - * - * unified() - * // Plugin with options: - * .use(pluginA, {x: true, y: true}) - * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`): - * .use(pluginA, {y: false, z: true}) - * // Plugins: - * .use([pluginB, pluginC]) - * // Two plugins, the second with options: - * .use([pluginD, [pluginE, {}]]) - * // Preset with plugins and settings: - * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}}) - * // Settings only: - * .use({settings: {position: false}}) - * ``` - * - * @template {Array<unknown>} [Parameters=[]] - * @template {Node | string | undefined} [Input=undefined] - * @template [Output=Input] - * - * @overload - * @param {Preset | null | undefined} [preset] - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * - * @overload - * @param {PluggableList} list - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * - * @overload - * @param {Plugin<Parameters, Input, Output>} plugin - * @param {...(Parameters | [boolean])} parameters - * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>} - * - * @param {PluggableList | Plugin | Preset | null | undefined} value - * Usable value. - * @param {...unknown} parameters - * Parameters, when a plugin is given as a usable value. - * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} - * Current processor. - */ - use(value, ...parameters) { - const attachers = this.attachers - const namespace = this.namespace + this.blocking = blocking == null ? false : blocking - assertUnfrozen('use', this.frozen) + this.reset = reset == null ? null : reset - if (value === null || value === undefined) { - // Empty. - } else if (typeof value === 'function') { - addPlugin(value, parameters) - } else if (typeof value === 'object') { - if (Array.isArray(value)) { - addList(value) - } else { - addPreset(value) - } - } else { - throw new TypeError('Expected usable value, not `' + value + '`') - } + this.host = null - return this + this.contentLength = null - /** - * @param {Pluggable} value - * @returns {undefined} - */ - function add(value) { - if (typeof value === 'function') { - addPlugin(value, []) - } else if (typeof value === 'object') { - if (Array.isArray(value)) { - const [plugin, ...parameters] = - /** @type {PluginTuple<Array<unknown>>} */ (value) - addPlugin(plugin, parameters) - } else { - addPreset(value) - } - } else { - throw new TypeError('Expected usable value, not `' + value + '`') + this.contentType = null + + this.headers = '' + + // Only for H2 + this.expectContinue = expectContinue != null ? expectContinue : false + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(this, key, headers[key]) } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') } - /** - * @param {Preset} result - * @returns {undefined} - */ - function addPreset(result) { - if (!('plugins' in result) && !('settings' in result)) { - throw new Error( - 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither' - ) + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') } - addList(result.plugins) + if (!extractBody) { + extractBody = (__nccwpck_require__(8923).extractBody) + } - if (result.settings) { - namespace.settings = extend(true, namespace.settings, result.settings) + const [bodyStream, contentType] = extractBody(body) + if (this.contentType == null) { + this.contentType = contentType + this.headers += `content-type: ${contentType}\r\n` } + this.body = bodyStream.stream + this.contentLength = bodyStream.length + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type + this.headers += `content-type: ${body.type}\r\n` } - /** - * @param {PluggableList | null | undefined} plugins - * @returns {undefined} - */ - function addList(plugins) { - let index = -1 + util.validateHandler(handler, method, upgrade) - if (plugins === null || plugins === undefined) { - // Empty. - } else if (Array.isArray(plugins)) { - while (++index < plugins.length) { - const thing = plugins[index] - add(thing) - } - } else { - throw new TypeError('Expected a list of plugins, not `' + plugins + '`') - } - } + this.servername = util.getServerName(this.host) - /** - * @param {Plugin} plugin - * @param {Array<unknown>} parameters - * @returns {undefined} - */ - function addPlugin(plugin, parameters) { - let index = -1 - let entryIndex = -1 + this[kHandler] = handler - while (++index < attachers.length) { - if (attachers[index][0] === plugin) { - entryIndex = index - break - } - } + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }) + } + } - if (entryIndex === -1) { - attachers.push([plugin, ...parameters]) + onBodySent (chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk) + } catch (err) { + this.abort(err) } - // Only set if there was at least a `primary` value, otherwise we’d change - // `arguments.length`. - else if (parameters.length > 0) { - let [primary, ...rest] = parameters - const currentPrimary = attachers[entryIndex][1] - if (isPlainObject(currentPrimary) && isPlainObject(primary)) { - primary = extend(true, currentPrimary, primary) - } + } + } + + onRequestSent () { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }) + } - attachers[entryIndex] = [plugin, primary, ...rest] + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent() + } catch (err) { + this.abort(err) } } } -} -// Note: this returns a *callable* instance. -// That’s why it’s documented as a function. -/** - * Create a new processor. - * - * @example - * This example shows how a new processor can be created (from `remark`) and linked - * to **stdin**(4) and **stdout**(4). - * - * ```js - * import process from 'node:process' - * import concatStream from 'concat-stream' - * import {remark} from 'remark' - * - * process.stdin.pipe( - * concatStream(function (buf) { - * process.stdout.write(String(remark().processSync(buf))) - * }) - * ) - * ``` - * - * @returns - * New *unfrozen* processor (`processor`). - * - * This processor is configured to work the same as its ancestor. - * When the descendant processor is configured in the future it does not - * affect the ancestral processor. - */ -const unified = new Processor().freeze() + onConnect (abort) { + assert(!this.aborted) + assert(!this.completed) -/** - * Assert a parser is available. - * - * @param {string} name - * @param {unknown} value - * @returns {asserts value is Parser} - */ -function assertParser(name, value) { - if (typeof value !== 'function') { - throw new TypeError('Cannot `' + name + '` without `parser`') + if (this.error) { + abort(this.error) + } else { + this.abort = abort + return this[kHandler].onConnect(abort) + } } -} -/** - * Assert a compiler is available. - * - * @param {string} name - * @param {unknown} value - * @returns {asserts value is Compiler} - */ -function assertCompiler(name, value) { - if (typeof value !== 'function') { - throw new TypeError('Cannot `' + name + '` without `compiler`') - } -} + onHeaders (statusCode, headers, resume, statusText) { + assert(!this.aborted) + assert(!this.completed) -/** - * Assert the processor is not frozen. - * - * @param {string} name - * @param {unknown} frozen - * @returns {asserts frozen is false} - */ -function assertUnfrozen(name, frozen) { - if (frozen) { - throw new Error( - 'Cannot call `' + - name + - '` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.' - ) - } -} + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }) + } -/** - * Assert `node` is a unist node. - * - * @param {unknown} node - * @returns {asserts node is Node} - */ -function assertNode(node) { - // `isPlainObj` unfortunately uses `any` instead of `unknown`. - // type-coverage:ignore-next-line - if (!isPlainObject(node) || typeof node.type !== 'string') { - throw new TypeError('Expected node, got `' + node + '`') - // Fine. + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText) + } catch (err) { + this.abort(err) + } } -} -/** - * Assert that `complete` is `true`. - * - * @param {string} name - * @param {string} asyncName - * @param {unknown} complete - * @returns {asserts complete is true} - */ -function assertDone(name, asyncName, complete) { - if (!complete) { - throw new Error( - '`' + name + '` finished async. Use `' + asyncName + '` instead' - ) + onData (chunk) { + assert(!this.aborted) + assert(!this.completed) + + try { + return this[kHandler].onData(chunk) + } catch (err) { + this.abort(err) + return false + } } -} -/** - * @param {Compatible | undefined} [value] - * @returns {VFile} - */ -function vfile(value) { - return looksLikeAVFile(value) ? value : new VFile(value) -} + onUpgrade (statusCode, headers, socket) { + assert(!this.aborted) + assert(!this.completed) -/** - * @param {Compatible | undefined} [value] - * @returns {value is VFile} - */ -function looksLikeAVFile(value) { - return Boolean( - value && - typeof value === 'object' && - 'message' in value && - 'messages' in value - ) -} + return this[kHandler].onUpgrade(statusCode, headers, socket) + } -/** - * @param {unknown} [value] - * @returns {value is Value} - */ -function looksLikeAValue(value) { - return typeof value === 'string' || lib_isUint8Array(value) -} + onComplete (trailers) { + this.onFinally() -/** - * Assert `value` is an `Uint8Array`. - * - * @param {unknown} value - * thing. - * @returns {value is Uint8Array} - * Whether `value` is an `Uint8Array`. - */ -function lib_isUint8Array(value) { - return Boolean( - value && - typeof value === 'object' && - 'byteLength' in value && - 'byteOffset' in value - ) -} + assert(!this.aborted) -;// CONCATENATED MODULE: ./node_modules/remark/index.js -// Note: types exposed from `index.d.ts` + this.completed = true + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }) + } + + try { + return this[kHandler].onComplete(trailers) + } catch (err) { + // TODO (fix): This might be a bad idea? + this.onError(err) + } + } + onError (error) { + this.onFinally() + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }) + } + if (this.aborted) { + return + } + this.aborted = true -/** - * Create a new unified processor that already uses `remark-parse` and - * `remark-stringify`. - */ -const remark = unified().use(remarkParse).use(remarkStringify).freeze() + return this[kHandler].onError(error) + } -;// CONCATENATED MODULE: ./node_modules/mdast-util-mdx-expression/lib/index.js -/** - * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle} from 'mdast-util-from-markdown' - * @import {MdxFlowExpression, MdxTextExpression} from 'mdast-util-mdx-expression' - * @import {Handle as ToMarkdownHandle, Options as ToMarkdownExtension, State} from 'mdast-util-to-markdown' - * @import {Parents} from 'mdast' - */ + onFinally () { + if (this.errorHandler) { + this.body.off('error', this.errorHandler) + this.errorHandler = null + } + if (this.endHandler) { + this.body.off('end', this.endHandler) + this.endHandler = null + } + } + // TODO: adjust to support H2 + addHeader (key, value) { + processHeader(this, key, value) + return this + } -/** - * Create an extension for `mdast-util-from-markdown` to enable MDX expressions - * in markdown. - * - * When using the micromark syntax extension with `addResult`, nodes will have - * a `data.estree` field set to an ESTree `Program` node. - * - * @returns {FromMarkdownExtension} - * Extension for `mdast-util-from-markdown` to enable MDX expressions. - */ -function mdxExpressionFromMarkdown() { - return { - enter: { - mdxFlowExpression: enterMdxFlowExpression, - mdxTextExpression: enterMdxTextExpression - }, - exit: { - mdxFlowExpression: exitMdxExpression, - mdxFlowExpressionChunk: exitMdxExpressionData, - mdxTextExpression: exitMdxExpression, - mdxTextExpressionChunk: exitMdxExpressionData + static [kHTTP1BuildRequest] (origin, opts, handler) { + // TODO: Migrate header parsing here, to make Requests + // HTTP agnostic + return new Request(origin, opts, handler) + } + + static [kHTTP2BuildRequest] (origin, opts, handler) { + const headers = opts.headers + opts = { ...opts, headers: null } + + const request = new Request(origin, opts, handler) + + request.headers = {} + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request, headers[i], headers[i + 1], true) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(request, key, headers[key], true) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } + + return request + } + + static [kHTTP2CopyHeaders] (raw) { + const rawHeaders = raw.split('\r\n') + const headers = {} + + for (const header of rawHeaders) { + const [key, value] = header.split(': ') + + if (value == null || value.length === 0) continue + + if (headers[key]) headers[key] += `,${value}` + else headers[key] = value } + + return headers } } -/** - * Create an extension for `mdast-util-to-markdown` to enable MDX expressions - * in markdown. - * - * @returns {ToMarkdownExtension} - * Extension for `mdast-util-to-markdown` to enable MDX expressions. - */ -function mdxExpressionToMarkdown() { - return { - handlers: { - mdxFlowExpression: handleMdxExpression, - mdxTextExpression: handleMdxExpression - }, - unsafe: [ - {character: '{', inConstruct: ['phrasing']}, - {atBreak: true, character: '{'} - ] +function processHeaderValue (key, val, skipAppend) { + if (val && typeof val === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`) + } + + val = val != null ? `${val}` : '' + + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) } + + return skipAppend ? val : `${key}: ${val}\r\n` } -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function enterMdxFlowExpression(token) { - this.enter({type: 'mdxFlowExpression', value: ''}, token) - this.buffer() +function processHeader (request, key, val, skipAppend = false) { + if (val && (typeof val === 'object' && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`) + } else if (val === undefined) { + return + } + + if ( + request.host === null && + key.length === 4 && + key.toLowerCase() === 'host' + ) { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + // Consumed by Client + request.host = val + } else if ( + request.contentLength === null && + key.length === 14 && + key.toLowerCase() === 'content-length' + ) { + request.contentLength = parseInt(val, 10) + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header') + } + } else if ( + request.contentType === null && + key.length === 12 && + key.toLowerCase() === 'content-type' + ) { + request.contentType = val + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } else if ( + key.length === 17 && + key.toLowerCase() === 'transfer-encoding' + ) { + throw new InvalidArgumentError('invalid transfer-encoding header') + } else if ( + key.length === 10 && + key.toLowerCase() === 'connection' + ) { + const value = typeof val === 'string' ? val.toLowerCase() : null + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header') + } else if (value === 'close') { + request.reset = true + } + } else if ( + key.length === 10 && + key.toLowerCase() === 'keep-alive' + ) { + throw new InvalidArgumentError('invalid keep-alive header') + } else if ( + key.length === 7 && + key.toLowerCase() === 'upgrade' + ) { + throw new InvalidArgumentError('invalid upgrade header') + } else if ( + key.length === 6 && + key.toLowerCase() === 'expect' + ) { + throw new NotSupportedError('expect header not supported') + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key') + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}` + else request.headers[key] = processHeaderValue(key, val[i], skipAppend) + } else { + request.headers += processHeaderValue(key, val[i]) + } + } + } else { + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } + } } -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function enterMdxTextExpression(token) { - this.enter({type: 'mdxTextExpression', value: ''}, token) - this.buffer() +module.exports = Request + + +/***/ }), + +/***/ 36443: +/***/ ((module) => { + +module.exports = { + kClose: Symbol('close'), + kDestroy: Symbol('destroy'), + kDispatch: Symbol('dispatch'), + kUrl: Symbol('url'), + kWriting: Symbol('writing'), + kResuming: Symbol('resuming'), + kQueue: Symbol('queue'), + kConnect: Symbol('connect'), + kConnecting: Symbol('connecting'), + kHeadersList: Symbol('headers list'), + kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: Symbol('keep alive timeout'), + kKeepAlive: Symbol('keep alive'), + kHeadersTimeout: Symbol('headers timeout'), + kBodyTimeout: Symbol('body timeout'), + kServerName: Symbol('server name'), + kLocalAddress: Symbol('local address'), + kHost: Symbol('host'), + kNoRef: Symbol('no ref'), + kBodyUsed: Symbol('used'), + kRunning: Symbol('running'), + kBlocking: Symbol('blocking'), + kPending: Symbol('pending'), + kSize: Symbol('size'), + kBusy: Symbol('busy'), + kQueued: Symbol('queued'), + kFree: Symbol('free'), + kConnected: Symbol('connected'), + kClosed: Symbol('closed'), + kNeedDrain: Symbol('need drain'), + kReset: Symbol('reset'), + kDestroyed: Symbol.for('nodejs.stream.destroyed'), + kMaxHeadersSize: Symbol('max headers size'), + kRunningIdx: Symbol('running index'), + kPendingIdx: Symbol('pending index'), + kError: Symbol('error'), + kClients: Symbol('clients'), + kClient: Symbol('client'), + kParser: Symbol('parser'), + kOnDestroyed: Symbol('destroy callbacks'), + kPipelining: Symbol('pipelining'), + kSocket: Symbol('socket'), + kHostHeader: Symbol('host header'), + kConnector: Symbol('connector'), + kStrictContentLength: Symbol('strict content length'), + kMaxRedirections: Symbol('maxRedirections'), + kMaxRequests: Symbol('maxRequestsPerClient'), + kProxy: Symbol('proxy agent options'), + kCounter: Symbol('socket request counter'), + kInterceptors: Symbol('dispatch interceptors'), + kMaxResponseSize: Symbol('max response size'), + kHTTP2Session: Symbol('http2Session'), + kHTTP2SessionState: Symbol('http2Session state'), + kHTTP2BuildRequest: Symbol('http2 build request'), + kHTTP1BuildRequest: Symbol('http1 build request'), + kHTTP2CopyHeaders: Symbol('http2 copy headers'), + kHTTPConnVersion: Symbol('http connection version'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable') } -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function exitMdxExpression(token) { - const value = this.resume() - const estree = token.estree - const node = this.stack[this.stack.length - 1] - default_ok(node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') - this.exit(token) - node.value = value - if (estree) { - node.data = {estree} +/***/ }), + +/***/ 3440: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(42613) +const { kDestroyed, kBodyUsed } = __nccwpck_require__(36443) +const { IncomingMessage } = __nccwpck_require__(58611) +const stream = __nccwpck_require__(2203) +const net = __nccwpck_require__(69278) +const { InvalidArgumentError } = __nccwpck_require__(68707) +const { Blob } = __nccwpck_require__(20181) +const nodeUtil = __nccwpck_require__(39023) +const { stringify } = __nccwpck_require__(83480) +const { headerNameLowerCasedRecord } = __nccwpck_require__(10735) + +const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) + +function nop () {} + +function isStream (obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function' +} + +// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) +function isBlobLike (object) { + return (Blob && object instanceof Blob) || ( + object && + typeof object === 'object' && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + /^(Blob|File)$/.test(object[Symbol.toStringTag]) + ) +} + +function buildURL (url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".') + } + + const stringified = stringify(queryParams) + + if (stringified) { + url += '?' + stringified } + + return url } -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function exitMdxExpressionData(token) { - this.config.enter.data.call(this, token) - this.config.exit.data.call(this, token) +function parseURL (url) { + if (typeof url === 'string') { + url = new URL(url) + + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + return url + } + + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.') + } + + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.') + } + + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.') + } + + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.') + } + + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.') + } + + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.') + } + + const port = url.port != null + ? url.port + : (url.protocol === 'https:' ? 443 : 80) + let origin = url.origin != null + ? url.origin + : `${url.protocol}//${url.hostname}:${port}` + let path = url.path != null + ? url.path + : `${url.pathname || ''}${url.search || ''}` + + if (origin.endsWith('/')) { + origin = origin.substring(0, origin.length - 1) + } + + if (path && !path.startsWith('/')) { + path = `/${path}` + } + // new URL(path, origin) is unsafe when `path` contains an absolute URL + // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: + // If first parameter is a relative URL, second param is required, and will be used as the base URL. + // If first parameter is an absolute URL, a given second param will be ignored. + url = new URL(origin + path) + } + + return url +} + +function parseOrigin (url) { + url = parseURL(url) + + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url') + } + + return url +} + +function getHostname (host) { + if (host[0] === '[') { + const idx = host.indexOf(']') + + assert(idx !== -1) + return host.substring(1, idx) + } + + const idx = host.indexOf(':') + if (idx === -1) return host + + return host.substring(0, idx) +} + +// IP addresses are not valid server names per RFC6066 +// > Currently, the only server names supported are DNS hostnames +function getServerName (host) { + if (!host) { + return null + } + + assert.strictEqual(typeof host, 'string') + + const servername = getHostname(host) + if (net.isIP(servername)) { + return '' + } + + return servername +} + +function deepClone (obj) { + return JSON.parse(JSON.stringify(obj)) +} + +function isAsyncIterable (obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') +} + +function isIterable (obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) +} + +function bodyLength (body) { + if (body == null) { + return 0 + } else if (isStream(body)) { + const state = body._readableState + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) + ? state.length + : null + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null + } else if (isBuffer(body)) { + return body.byteLength + } + + return null +} + +function isDestroyed (stream) { + return !stream || !!(stream.destroyed || stream[kDestroyed]) +} + +function isReadableAborted (stream) { + const state = stream && stream._readableState + return isDestroyed(stream) && state && !state.endEmitted +} + +function destroy (stream, err) { + if (stream == null || !isStream(stream) || isDestroyed(stream)) { + return + } + + if (typeof stream.destroy === 'function') { + if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { + // See: https://github.com/nodejs/node/pull/38505/files + stream.socket = null + } + + stream.destroy(err) + } else if (err) { + process.nextTick((stream, err) => { + stream.emit('error', err) + }, stream, err) + } + + if (stream.destroyed !== true) { + stream[kDestroyed] = true + } +} + +const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/ +function parseKeepAliveTimeout (val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR) + return m ? parseInt(m[1], 10) * 1000 : null } /** - * @type {ToMarkdownHandle} - * @param {MdxFlowExpression | MdxTextExpression} node - * Node. - * @param {Parents | undefined} parent - * Parent, if any. - * @param {State} state - * Info passed around about the current state. + * Retrieves a header name and returns its lowercase value. + * @param {string | Buffer} value Header name * @returns {string} - * Serialized markdown. */ -function handleMdxExpression(node, parent, state) { - const value = node.value || '' - const result = state.indentLines(value, function (line, index, blank) { - // Tab-size to eat has to be the same as what we serialize as. - // While in some places in markdown that’s 4, in JS it’s more common as 2. - // Which is what’s also in `mdast-util-mdx-jsx`: - // <https://github.com/syntax-tree/mdast-util-mdx-jsx/blob/40b951b/lib/index.js#L52> - return (index === 0 || blank ? '' : ' ') + line +function headerNameToString (value) { + return headerNameLowerCasedRecord[value] || value.toLowerCase() +} + +function parseHeaders (headers, obj = {}) { + // For H2 support + if (!Array.isArray(headers)) return headers + + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase() + let val = obj[key] + + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1].map(x => x.toString('utf8')) + } else { + obj[key] = headers[i + 1].toString('utf8') + } + } else { + if (!Array.isArray(val)) { + val = [val] + obj[key] = val + } + val.push(headers[i + 1].toString('utf8')) + } + } + + // See https://github.com/nodejs/node/pull/46528 + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1') + } + + return obj +} + +function parseRawHeaders (headers) { + const ret = [] + let hasContentLength = false + let contentDispositionIdx = -1 + + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString() + const val = headers[n + 1].toString('utf8') + + if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + ret.push(key, val) + hasContentLength = true + } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = ret.push(key, val) - 1 + } else { + ret.push(key, val) + } + } + + // See https://github.com/nodejs/node/pull/46528 + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1') + } + + return ret +} + +function isBuffer (buffer) { + // See, https://github.com/mcollina/undici/pull/319 + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) +} + +function validateHandler (handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method') + } + + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { + throw new InvalidArgumentError('invalid onBodySent method') + } + + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method') + } + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method') + } + + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method') + } + + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method') + } + } +} + +// A body is disturbed if it has been read from and it cannot +// be re-used without losing state or data. +function isDisturbed (body) { + return !!(body && ( + stream.isDisturbed + ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? + : body[kBodyUsed] || + body.readableDidRead || + (body._readableState && body._readableState.dataEmitted) || + isReadableAborted(body) + )) +} + +function isErrored (body) { + return !!(body && ( + stream.isErrored + ? stream.isErrored(body) + : /state: 'errored'/.test(nodeUtil.inspect(body) + ))) +} + +function isReadable (body) { + return !!(body && ( + stream.isReadable + ? stream.isReadable(body) + : /state: 'readable'/.test(nodeUtil.inspect(body) + ))) +} + +function getSocketInfo (socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + } +} + +async function * convertIterableToBuffer (iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) + } +} + +let ReadableStream +function ReadableStreamFrom (iterable) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(63774).ReadableStream) + } + + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)) + } + + let iterator + return new ReadableStream( + { + async start () { + iterator = iterable[Symbol.asyncIterator]() + }, + async pull (controller) { + const { done, value } = await iterator.next() + if (done) { + queueMicrotask(() => { + controller.close() + }) + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value) + controller.enqueue(new Uint8Array(buf)) + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + } + }, + 0 + ) +} + +// The chunk should be a FormData instance and contains +// all the required methods. +function isFormDataLike (object) { + return ( + object && + typeof object === 'object' && + typeof object.append === 'function' && + typeof object.delete === 'function' && + typeof object.get === 'function' && + typeof object.getAll === 'function' && + typeof object.has === 'function' && + typeof object.set === 'function' && + object[Symbol.toStringTag] === 'FormData' + ) +} + +function throwIfAborted (signal) { + if (!signal) { return } + if (typeof signal.throwIfAborted === 'function') { + signal.throwIfAborted() + } else { + if (signal.aborted) { + // DOMException not available < v17.0.0 + const err = new Error('The operation was aborted') + err.name = 'AbortError' + throw err + } + } +} + +function addAbortListener (signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { once: true }) + return () => signal.removeEventListener('abort', listener) + } + signal.addListener('abort', listener) + return () => signal.removeListener('abort', listener) +} + +const hasToWellFormed = !!String.prototype.toWellFormed + +/** + * @param {string} val + */ +function toUSVString (val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed() + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val) + } + + return `${val}` +} + +// Parsed accordingly to RFC 9110 +// https://www.rfc-editor.org/rfc/rfc9110#field.content-range +function parseRangeHeader (range) { + if (range == null || range === '') return { start: 0, end: null, size: null } + + const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } + : null +} + +const kEnumerableProperty = Object.create(null) +kEnumerableProperty.enumerable = true + +module.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + headerNameToString, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + parseRangeHeader, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +} + + +/***/ }), + +/***/ 50001: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Dispatcher = __nccwpck_require__(28611) +const { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError +} = __nccwpck_require__(68707) +const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(36443) + +const kDestroyed = Symbol('destroyed') +const kClosed = Symbol('closed') +const kOnDestroyed = Symbol('onDestroyed') +const kOnClosed = Symbol('onClosed') +const kInterceptedDispatch = Symbol('Intercepted Dispatch') + +class DispatcherBase extends Dispatcher { + constructor () { + super() + + this[kDestroyed] = false + this[kOnDestroyed] = null + this[kClosed] = false + this[kOnClosed] = [] + } + + get destroyed () { + return this[kDestroyed] + } + + get closed () { + return this[kClosed] + } + + get interceptors () { + return this[kInterceptors] + } + + set interceptors (newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i] + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function') + } + } + } + + this[kInterceptors] = newInterceptors + } + + close (callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)) + return + } + + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + this[kClosed] = true + this[kOnClosed].push(callback) + + const onClosed = () => { + const callbacks = this[kOnClosed] + this[kOnClosed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed) + }) + } + + destroy (err, callback) { + if (typeof err === 'function') { + callback = err + err = null + } + + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.destroy(err, (err, data) => { + return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + if (!err) { + err = new ClientDestroyedError() + } + + this[kDestroyed] = true + this[kOnDestroyed] = this[kOnDestroyed] || [] + this[kOnDestroyed].push(callback) + + const onDestroyed = () => { + const callbacks = this[kOnDestroyed] + this[kOnDestroyed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed) + }) + } + + [kInterceptedDispatch] (opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch] + return this[kDispatch](opts, handler) + } + + let dispatch = this[kDispatch].bind(this) + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch) + } + this[kInterceptedDispatch] = dispatch + return dispatch(opts, handler) + } + + dispatch (opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.') + } + + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError() + } + + if (this[kClosed]) { + throw new ClientClosedError() + } + + return this[kInterceptedDispatch](opts, handler) + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + handler.onError(err) + + return false + } + } +} + +module.exports = DispatcherBase + + +/***/ }), + +/***/ 28611: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const EventEmitter = __nccwpck_require__(24434) + +class Dispatcher extends EventEmitter { + dispatch () { + throw new Error('not implemented') + } + + close () { + throw new Error('not implemented') + } + + destroy () { + throw new Error('not implemented') + } +} + +module.exports = Dispatcher + + +/***/ }), + +/***/ 8923: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Busboy = __nccwpck_require__(89581) +const util = __nccwpck_require__(3440) +const { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody +} = __nccwpck_require__(15523) +const { FormData } = __nccwpck_require__(43073) +const { kState } = __nccwpck_require__(89710) +const { webidl } = __nccwpck_require__(74222) +const { DOMException, structuredClone } = __nccwpck_require__(87326) +const { Blob, File: NativeFile } = __nccwpck_require__(20181) +const { kBodyUsed } = __nccwpck_require__(36443) +const assert = __nccwpck_require__(42613) +const { isErrored } = __nccwpck_require__(3440) +const { isUint8Array, isArrayBuffer } = __nccwpck_require__(98253) +const { File: UndiciFile } = __nccwpck_require__(63041) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(94322) + +let random +try { + const crypto = __nccwpck_require__(77598) + random = (max) => crypto.randomInt(0, max) +} catch { + random = (max) => Math.floor(Math.random(max)) +} + +let ReadableStream = globalThis.ReadableStream + +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile +const textEncoder = new TextEncoder() +const textDecoder = new TextDecoder() + +// https://fetch.spec.whatwg.org/#concept-bodyinit-extract +function extractBody (object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(63774).ReadableStream) + } + + // 1. Let stream be null. + let stream = null + + // 2. If object is a ReadableStream object, then set stream to object. + if (object instanceof ReadableStream) { + stream = object + } else if (isBlobLike(object)) { + // 3. Otherwise, if object is a Blob object, set stream to the + // result of running object’s get stream. + stream = object.stream() + } else { + // 4. Otherwise, set stream to a new ReadableStream object, and set + // up stream. + stream = new ReadableStream({ + async pull (controller) { + controller.enqueue( + typeof source === 'string' ? textEncoder.encode(source) : source + ) + queueMicrotask(() => readableStreamClose(controller)) + }, + start () {}, + type: undefined + }) + } + + // 5. Assert: stream is a ReadableStream object. + assert(isReadableStreamLike(stream)) + + // 6. Let action be null. + let action = null + + // 7. Let source be null. + let source = null + + // 8. Let length be null. + let length = null + + // 9. Let type be null. + let type = null + + // 10. Switch on object: + if (typeof object === 'string') { + // Set source to the UTF-8 encoding of object. + // Note: setting source to a Uint8Array here breaks some mocking assumptions. + source = object + + // Set type to `text/plain;charset=UTF-8`. + type = 'text/plain;charset=UTF-8' + } else if (object instanceof URLSearchParams) { + // URLSearchParams + + // spec says to run application/x-www-form-urlencoded on body.list + // this is implemented in Node.js as apart of an URLSearchParams instance toString method + // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 + // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 + + // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. + source = object.toString() + + // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. + type = 'application/x-www-form-urlencoded;charset=UTF-8' + } else if (isArrayBuffer(object)) { + // BufferSource/ArrayBuffer + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.slice()) + } else if (ArrayBuffer.isView(object)) { + // BufferSource/ArrayBufferView + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)) + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}` + const prefix = `--${boundary}\r\nContent-Disposition: form-data` + + /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */ + const escape = (str) => + str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22') + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n') + + // Set action to this step: run the multipart/form-data + // encoding algorithm, with object’s entry list and UTF-8. + // - This ensures that the body is immutable and can't be changed afterwords + // - That the content-length is calculated in advance. + // - And that all parts are pre-encoded and ready to be sent. + + const blobParts = [] + const rn = new Uint8Array([13, 10]) // '\r\n' + length = 0 + let hasUnknownSizeValue = false + + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk = textEncoder.encode(prefix + + `; name="${escape(normalizeLinefeeds(name))}"` + + `\r\n\r\n${normalizeLinefeeds(value)}\r\n`) + blobParts.push(chunk) + length += chunk.byteLength + } else { + const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' + + `Content-Type: ${ + value.type || 'application/octet-stream' + }\r\n\r\n`) + blobParts.push(chunk, value, rn) + if (typeof value.size === 'number') { + length += chunk.byteLength + value.size + rn.byteLength + } else { + hasUnknownSizeValue = true + } + } + } + + const chunk = textEncoder.encode(`--${boundary}--`) + blobParts.push(chunk) + length += chunk.byteLength + if (hasUnknownSizeValue) { + length = null + } + + // Set source to object. + source = object + + action = async function * () { + for (const part of blobParts) { + if (part.stream) { + yield * part.stream() + } else { + yield part + } + } + } + + // Set type to `multipart/form-data; boundary=`, + // followed by the multipart/form-data boundary string generated + // by the multipart/form-data encoding algorithm. + type = 'multipart/form-data; boundary=' + boundary + } else if (isBlobLike(object)) { + // Blob + + // Set source to object. + source = object + + // Set length to object’s size. + length = object.size + + // If object’s type attribute is not the empty byte sequence, set + // type to its value. + if (object.type) { + type = object.type + } + } else if (typeof object[Symbol.asyncIterator] === 'function') { + // If keepalive is true, then throw a TypeError. + if (keepalive) { + throw new TypeError('keepalive') + } + + // If object is disturbed or locked, then throw a TypeError. + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + 'Response body object should not be disturbed or locked' + ) + } + + stream = + object instanceof ReadableStream ? object : ReadableStreamFrom(object) + } + + // 11. If source is a byte sequence, then set action to a + // step that returns source and length to source’s length. + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source) + } + + // 12. If action is non-null, then run these steps in in parallel: + if (action != null) { + // Run action. + let iterator + stream = new ReadableStream({ + async start () { + iterator = action(object)[Symbol.asyncIterator]() + }, + async pull (controller) { + const { value, done } = await iterator.next() + if (done) { + // When running action is done, close stream. + queueMicrotask(() => { + controller.close() + }) + } else { + // Whenever one or more bytes are available and stream is not errored, + // enqueue a Uint8Array wrapping an ArrayBuffer containing the available + // bytes into stream. + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)) + } + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + }, + type: undefined + }) + } + + // 13. Let body be a body whose stream is stream, source is source, + // and length is length. + const body = { stream, source, length } + + // 14. Return (body, type). + return [body, type] +} + +// https://fetch.spec.whatwg.org/#bodyinit-safely-extract +function safelyExtractBody (object, keepalive = false) { + if (!ReadableStream) { + // istanbul ignore next + ReadableStream = (__nccwpck_require__(63774).ReadableStream) + } + + // To safely extract a body and a `Content-Type` value from + // a byte sequence or BodyInit object object, run these steps: + + // 1. If object is a ReadableStream object, then: + if (object instanceof ReadableStream) { + // Assert: object is neither disturbed nor locked. + // istanbul ignore next + assert(!util.isDisturbed(object), 'The body has already been consumed.') + // istanbul ignore next + assert(!object.locked, 'The stream is locked.') + } + + // 2. Return the results of extracting object. + return extractBody(object, keepalive) +} + +function cloneBody (body) { + // To clone a body body, run these steps: + + // https://fetch.spec.whatwg.org/#concept-body-clone + + // 1. Let « out1, out2 » be the result of teeing body’s stream. + const [out1, out2] = body.stream.tee() + const out2Clone = structuredClone(out2, { transfer: [out2] }) + // This, for whatever reasons, unrefs out2Clone which allows + // the process to exit by itself. + const [, finalClone] = out2Clone.tee() + + // 2. Set body’s stream to out1. + body.stream = out1 + + // 3. Return a body whose stream is out2 and other members are copied from body. + return { + stream: finalClone, + length: body.length, + source: body.source + } +} + +async function * consumeBody (body) { + if (body) { + if (isUint8Array(body)) { + yield body + } else { + const stream = body.stream + + if (util.isDisturbed(stream)) { + throw new TypeError('The body has already been consumed.') + } + + if (stream.locked) { + throw new TypeError('The stream is locked.') + } + + // Compat. + stream[kBodyUsed] = true + + yield * stream + } + } +} + +function throwIfAborted (state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError') + } +} + +function bodyMixinMethods (instance) { + const methods = { + blob () { + // The blob() method steps are to return the result of + // running consume body with this and the following step + // given a byte sequence bytes: return a Blob whose + // contents are bytes and whose type attribute is this’s + // MIME type. + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this) + + if (mimeType === 'failure') { + mimeType = '' + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType) + } + + // Return a Blob whose contents are bytes and type attribute + // is mimeType. + return new Blob([bytes], { type: mimeType }) + }, instance) + }, + + arrayBuffer () { + // The arrayBuffer() method steps are to return the result + // of running consume body with this and the following step + // given a byte sequence bytes: return a new ArrayBuffer + // whose contents are bytes. + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer + }, instance) + }, + + text () { + // The text() method steps are to return the result of running + // consume body with this and UTF-8 decode. + return specConsumeBody(this, utf8DecodeBytes, instance) + }, + + json () { + // The json() method steps are to return the result of running + // consume body with this and parse JSON from bytes. + return specConsumeBody(this, parseJSONFromBytes, instance) + }, + + async formData () { + webidl.brandCheck(this, instance) + + throwIfAborted(this[kState]) + + const contentType = this.headers.get('Content-Type') + + // If mimeType’s essence is "multipart/form-data", then: + if (/multipart\/form-data/.test(contentType)) { + const headers = {} + for (const [key, value] of this.headers) headers[key.toLowerCase()] = value + + const responseFormData = new FormData() + + let busboy + + try { + busboy = new Busboy({ + headers, + preservePath: true + }) + } catch (err) { + throw new DOMException(`${err}`, 'AbortError') + } + + busboy.on('field', (name, value) => { + responseFormData.append(name, value) + }) + busboy.on('file', (name, value, filename, encoding, mimeType) => { + const chunks = [] + + if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { + let base64chunk = '' + + value.on('data', (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, '') + + const end = base64chunk.length - base64chunk.length % 4 + chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')) + + base64chunk = base64chunk.slice(end) + }) + value.on('end', () => { + chunks.push(Buffer.from(base64chunk, 'base64')) + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } else { + value.on('data', (chunk) => { + chunks.push(chunk) + }) + value.on('end', () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } + }) + + const busboyResolve = new Promise((resolve, reject) => { + busboy.on('finish', resolve) + busboy.on('error', (err) => reject(new TypeError(err))) + }) + + if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk) + busboy.end() + await busboyResolve + + return responseFormData + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: + + // 1. Let entries be the result of parsing bytes. + let entries + try { + let text = '' + // application/x-www-form-urlencoded parser will keep the BOM. + // https://url.spec.whatwg.org/#concept-urlencoded-parser + // Note that streaming decoder is stateful and cannot be reused + const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }) + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') + } + text += streamingDecoder.decode(chunk, { stream: true }) + } + text += streamingDecoder.decode() + entries = new URLSearchParams(text) + } catch (err) { + // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. + // 2. If entries is failure, then throw a TypeError. + throw Object.assign(new TypeError(), { cause: err }) + } + + // 3. Return a new FormData object whose entries are entries. + const formData = new FormData() + for (const [name, value] of entries) { + formData.append(name, value) + } + return formData + } else { + // Wait a tick before checking if the request has been aborted. + // Otherwise, a TypeError can be thrown when an AbortError should. + await Promise.resolve() + + throwIfAborted(this[kState]) + + // Otherwise, throw a TypeError. + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: 'Could not parse content as FormData.' + }) + } + } + } + + return methods +} + +function mixinBody (prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-consume-body + * @param {Response|Request} object + * @param {(value: unknown) => unknown} convertBytesToJSValue + * @param {Response|Request} instance + */ +async function specConsumeBody (object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance) + + throwIfAborted(object[kState]) + + // 1. If object is unusable, then return a promise rejected + // with a TypeError. + if (bodyUnusable(object[kState].body)) { + throw new TypeError('Body is unusable') + } + + // 2. Let promise be a new promise. + const promise = createDeferredPromise() + + // 3. Let errorSteps given error be to reject promise with error. + const errorSteps = (error) => promise.reject(error) + + // 4. Let successSteps given a byte sequence data be to resolve + // promise with the result of running convertBytesToJSValue + // with data. If that threw an exception, then run errorSteps + // with that exception. + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)) + } catch (e) { + errorSteps(e) + } + } + + // 5. If object’s body is null, then run successSteps with an + // empty byte sequence. + if (object[kState].body == null) { + successSteps(new Uint8Array()) + return promise.promise + } + + // 6. Otherwise, fully read object’s body given successSteps, + // errorSteps, and object’s relevant global object. + await fullyReadBody(object[kState].body, successSteps, errorSteps) + + // 7. Return promise. + return promise.promise +} + +// https://fetch.spec.whatwg.org/#body-unusable +function bodyUnusable (body) { + // An object including the Body interface mixin is + // said to be unusable if its body is non-null and + // its body’s stream is disturbed or locked. + return body != null && (body.stream.locked || util.isDisturbed(body.stream)) +} + +/** + * @see https://encoding.spec.whatwg.org/#utf-8-decode + * @param {Buffer} buffer + */ +function utf8DecodeBytes (buffer) { + if (buffer.length === 0) { + return '' + } + + // 1. Let buffer be the result of peeking three bytes from + // ioQueue, converted to a byte sequence. + + // 2. If buffer is 0xEF 0xBB 0xBF, then read three + // bytes from ioQueue. (Do nothing with those bytes.) + if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + buffer = buffer.subarray(3) + } + + // 3. Process a queue with an instance of UTF-8’s + // decoder, ioQueue, output, and "replacement". + const output = textDecoder.decode(buffer) + + // 4. Return output. + return output +} + +/** + * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value + * @param {Uint8Array} bytes + */ +function parseJSONFromBytes (bytes) { + return JSON.parse(utf8DecodeBytes(bytes)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-mime-type + * @param {import('./response').Response|import('./request').Request} object + */ +function bodyMimeType (object) { + const { headersList } = object[kState] + const contentType = headersList.get('content-type') + + if (contentType === null) { + return 'failure' + } + + return parseMIMEType(contentType) +} + +module.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody +} + + +/***/ }), + +/***/ 87326: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(28167) + +const corsSafeListedMethods = ['GET', 'HEAD', 'POST'] +const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) + +const nullBodyStatus = [101, 204, 205, 304] + +const redirectStatus = [301, 302, 303, 307, 308] +const redirectStatusSet = new Set(redirectStatus) + +// https://fetch.spec.whatwg.org/#block-bad-port +const badPorts = [ + '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', + '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', + '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', + '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', + '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', + '10080' +] + +const badPortsSet = new Set(badPorts) + +// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies +const referrerPolicy = [ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' +] +const referrerPolicySet = new Set(referrerPolicy) + +const requestRedirect = ['follow', 'manual', 'error'] + +const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +const safeMethodsSet = new Set(safeMethods) + +const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors'] + +const requestCredentials = ['omit', 'same-origin', 'include'] + +const requestCache = [ + 'default', + 'no-store', + 'reload', + 'no-cache', + 'force-cache', + 'only-if-cached' +] + +// https://fetch.spec.whatwg.org/#request-body-header-name +const requestBodyHeader = [ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' +] + +// https://fetch.spec.whatwg.org/#enumdef-requestduplex +const requestDuplex = [ + 'half' +] + +// http://fetch.spec.whatwg.org/#forbidden-method +const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK'] +const forbiddenMethodsSet = new Set(forbiddenMethods) + +const subresource = [ + 'audio', + 'audioworklet', + 'font', + 'image', + 'manifest', + 'paintworklet', + 'script', + 'style', + 'track', + 'video', + 'xslt', + '' +] +const subresourceSet = new Set(subresource) + +/** @type {globalThis['DOMException']} */ +const DOMException = globalThis.DOMException ?? (() => { + // DOMException was only made a global in Node v17.0.0, + // but fetch supports >= v16.8. + try { + atob('~') + } catch (err) { + return Object.getPrototypeOf(err).constructor + } +})() + +let channel + +/** @type {globalThis['structuredClone']} */ +const structuredClone = + globalThis.structuredClone ?? + // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone (value, options = undefined) { + if (arguments.length === 0) { + throw new TypeError('missing argument') + } + + if (!channel) { + channel = new MessageChannel() + } + channel.port1.unref() + channel.port2.unref() + channel.port1.postMessage(value, options?.transfer) + return receiveMessageOnPort(channel.port2).message + } + +module.exports = { + DOMException, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet +} + + +/***/ }), + +/***/ 94322: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(42613) +const { atob } = __nccwpck_require__(20181) +const { isomorphicDecode } = __nccwpck_require__(15523) + +const encoder = new TextEncoder() + +/** + * @see https://mimesniff.spec.whatwg.org/#http-token-code-point + */ +const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/ +const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line +/** + * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + */ +const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line + +// https://fetch.spec.whatwg.org/#data-url-processor +/** @param {URL} dataURL */ +function dataURLProcessor (dataURL) { + // 1. Assert: dataURL’s scheme is "data". + assert(dataURL.protocol === 'data:') + + // 2. Let input be the result of running the URL + // serializer on dataURL with exclude fragment + // set to true. + let input = URLSerializer(dataURL, true) + + // 3. Remove the leading "data:" string from input. + input = input.slice(5) + + // 4. Let position point at the start of input. + const position = { position: 0 } + + // 5. Let mimeType be the result of collecting a + // sequence of code points that are not equal + // to U+002C (,), given position. + let mimeType = collectASequenceOfCodePointsFast( + ',', + input, + position + ) + + // 6. Strip leading and trailing ASCII whitespace + // from mimeType. + // Undici implementation note: we need to store the + // length because if the mimetype has spaces removed, + // the wrong amount will be sliced from the input in + // step #9 + const mimeTypeLength = mimeType.length + mimeType = removeASCIIWhitespace(mimeType, true, true) + + // 7. If position is past the end of input, then + // return failure + if (position.position >= input.length) { + return 'failure' + } + + // 8. Advance position by 1. + position.position++ + + // 9. Let encodedBody be the remainder of input. + const encodedBody = input.slice(mimeTypeLength + 1) + + // 10. Let body be the percent-decoding of encodedBody. + let body = stringPercentDecode(encodedBody) + + // 11. If mimeType ends with U+003B (;), followed by + // zero or more U+0020 SPACE, followed by an ASCII + // case-insensitive match for "base64", then: + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + // 1. Let stringBody be the isomorphic decode of body. + const stringBody = isomorphicDecode(body) + + // 2. Set body to the forgiving-base64 decode of + // stringBody. + body = forgivingBase64(stringBody) + + // 3. If body is failure, then return failure. + if (body === 'failure') { + return 'failure' + } + + // 4. Remove the last 6 code points from mimeType. + mimeType = mimeType.slice(0, -6) + + // 5. Remove trailing U+0020 SPACE code points from mimeType, + // if any. + mimeType = mimeType.replace(/(\u0020)+$/, '') + + // 6. Remove the last U+003B (;) code point from mimeType. + mimeType = mimeType.slice(0, -1) + } + + // 12. If mimeType starts with U+003B (;), then prepend + // "text/plain" to mimeType. + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType + } + + // 13. Let mimeTypeRecord be the result of parsing + // mimeType. + let mimeTypeRecord = parseMIMEType(mimeType) + + // 14. If mimeTypeRecord is failure, then set + // mimeTypeRecord to text/plain;charset=US-ASCII. + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII') + } + + // 15. Return a new data: URL struct whose MIME + // type is mimeTypeRecord and body is body. + // https://fetch.spec.whatwg.org/#data-url-struct + return { mimeType: mimeTypeRecord, body } +} + +// https://url.spec.whatwg.org/#concept-url-serializer +/** + * @param {URL} url + * @param {boolean} excludeFragment + */ +function URLSerializer (url, excludeFragment = false) { + if (!excludeFragment) { + return url.href + } + + const href = url.href + const hashLength = url.hash.length + + return hashLength === 0 ? href : href.substring(0, href.length - hashLength) +} + +// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/** + * @param {(char: string) => boolean} condition + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePoints (condition, input, position) { + // 1. Let result be the empty string. + let result = '' + + // 2. While position doesn’t point past the end of input and the + // code point at position within input meets the condition condition: + while (position.position < input.length && condition(input[position.position])) { + // 1. Append that code point to the end of result. + result += input[position.position] + + // 2. Advance position by 1. + position.position++ + } + + // 3. Return result. + return result +} + +/** + * A faster collectASequenceOfCodePoints that only works when comparing a single character. + * @param {string} char + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePointsFast (char, input, position) { + const idx = input.indexOf(char, position.position) + const start = position.position + + if (idx === -1) { + position.position = input.length + return input.slice(start) + } + + position.position = idx + return input.slice(start, position.position) +} + +// https://url.spec.whatwg.org/#string-percent-decode +/** @param {string} input */ +function stringPercentDecode (input) { + // 1. Let bytes be the UTF-8 encoding of input. + const bytes = encoder.encode(input) + + // 2. Return the percent-decoding of bytes. + return percentDecode(bytes) +} + +// https://url.spec.whatwg.org/#percent-decode +/** @param {Uint8Array} input */ +function percentDecode (input) { + // 1. Let output be an empty byte sequence. + /** @type {number[]} */ + const output = [] + + // 2. For each byte byte in input: + for (let i = 0; i < input.length; i++) { + const byte = input[i] + + // 1. If byte is not 0x25 (%), then append byte to output. + if (byte !== 0x25) { + output.push(byte) + + // 2. Otherwise, if byte is 0x25 (%) and the next two bytes + // after byte in input are not in the ranges + // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), + // and 0x61 (a) to 0x66 (f), all inclusive, append byte + // to output. + } else if ( + byte === 0x25 && + !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) + ) { + output.push(0x25) + + // 3. Otherwise: + } else { + // 1. Let bytePoint be the two bytes after byte in input, + // decoded, and then interpreted as hexadecimal number. + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]) + const bytePoint = Number.parseInt(nextTwoBytes, 16) + + // 2. Append a byte whose value is bytePoint to output. + output.push(bytePoint) + + // 3. Skip the next two bytes in input. + i += 2 + } + } + + // 3. Return output. + return Uint8Array.from(output) +} + +// https://mimesniff.spec.whatwg.org/#parse-a-mime-type +/** @param {string} input */ +function parseMIMEType (input) { + // 1. Remove any leading and trailing HTTP whitespace + // from input. + input = removeHTTPWhitespace(input, true, true) + + // 2. Let position be a position variable for input, + // initially pointing at the start of input. + const position = { position: 0 } + + // 3. Let type be the result of collecting a sequence + // of code points that are not U+002F (/) from + // input, given position. + const type = collectASequenceOfCodePointsFast( + '/', + input, + position + ) + + // 4. If type is the empty string or does not solely + // contain HTTP token code points, then return failure. + // https://mimesniff.spec.whatwg.org/#http-token-code-point + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure' + } + + // 5. If position is past the end of input, then return + // failure + if (position.position > input.length) { + return 'failure' + } + + // 6. Advance position by 1. (This skips past U+002F (/).) + position.position++ + + // 7. Let subtype be the result of collecting a sequence of + // code points that are not U+003B (;) from input, given + // position. + let subtype = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 8. Remove any trailing HTTP whitespace from subtype. + subtype = removeHTTPWhitespace(subtype, false, true) + + // 9. If subtype is the empty string or does not solely + // contain HTTP token code points, then return failure. + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure' + } + + const typeLowercase = type.toLowerCase() + const subtypeLowercase = subtype.toLowerCase() + + // 10. Let mimeType be a new MIME type record whose type + // is type, in ASCII lowercase, and subtype is subtype, + // in ASCII lowercase. + // https://mimesniff.spec.whatwg.org/#mime-type + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map<string, string>} */ + parameters: new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + } + + // 11. While position is not past the end of input: + while (position.position < input.length) { + // 1. Advance position by 1. (This skips past U+003B (;).) + position.position++ + + // 2. Collect a sequence of code points that are HTTP + // whitespace from input given position. + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + char => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ) + + // 3. Let parameterName be the result of collecting a + // sequence of code points that are not U+003B (;) + // or U+003D (=) from input, given position. + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ';' && char !== '=', + input, + position + ) + + // 4. Set parameterName to parameterName, in ASCII + // lowercase. + parameterName = parameterName.toLowerCase() + + // 5. If position is not past the end of input, then: + if (position.position < input.length) { + // 1. If the code point at position within input is + // U+003B (;), then continue. + if (input[position.position] === ';') { + continue + } + + // 2. Advance position by 1. (This skips past U+003D (=).) + position.position++ + } + + // 6. If position is past the end of input, then break. + if (position.position > input.length) { + break + } + + // 7. Let parameterValue be null. + let parameterValue = null + + // 8. If the code point at position within input is + // U+0022 ("), then: + if (input[position.position] === '"') { + // 1. Set parameterValue to the result of collecting + // an HTTP quoted string from input, given position + // and the extract-value flag. + parameterValue = collectAnHTTPQuotedString(input, position, true) + + // 2. Collect a sequence of code points that are not + // U+003B (;) from input, given position. + collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 9. Otherwise: + } else { + // 1. Set parameterValue to the result of collecting + // a sequence of code points that are not U+003B (;) + // from input, given position. + parameterValue = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 2. Remove any trailing HTTP whitespace from parameterValue. + parameterValue = removeHTTPWhitespace(parameterValue, false, true) + + // 3. If parameterValue is the empty string, then continue. + if (parameterValue.length === 0) { + continue + } + } + + // 10. If all of the following are true + // - parameterName is not the empty string + // - parameterName solely contains HTTP token code points + // - parameterValue solely contains HTTP quoted-string token code points + // - mimeType’s parameters[parameterName] does not exist + // then set mimeType’s parameters[parameterName] to parameterValue. + if ( + parameterName.length !== 0 && + HTTP_TOKEN_CODEPOINTS.test(parameterName) && + (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && + !mimeType.parameters.has(parameterName) + ) { + mimeType.parameters.set(parameterName, parameterValue) + } + } + + // 12. Return mimeType. + return mimeType +} + +// https://infra.spec.whatwg.org/#forgiving-base64-decode +/** @param {string} data */ +function forgivingBase64 (data) { + // 1. Remove all ASCII whitespace from data. + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '') // eslint-disable-line + + // 2. If data’s code point length divides by 4 leaving + // no remainder, then: + if (data.length % 4 === 0) { + // 1. If data ends with one or two U+003D (=) code points, + // then remove them from data. + data = data.replace(/=?=$/, '') + } + + // 3. If data’s code point length divides by 4 leaving + // a remainder of 1, then return failure. + if (data.length % 4 === 1) { + return 'failure' + } + + // 4. If data contains a code point that is not one of + // U+002B (+) + // U+002F (/) + // ASCII alphanumeric + // then return failure. + if (/[^+/0-9A-Za-z]/.test(data)) { + return 'failure' + } + + const binary = atob(data) + const bytes = new Uint8Array(binary.length) + + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte) + } + + return bytes +} + +// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string +// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string +/** + * @param {string} input + * @param {{ position: number }} position + * @param {boolean?} extractValue + */ +function collectAnHTTPQuotedString (input, position, extractValue) { + // 1. Let positionStart be position. + const positionStart = position.position + + // 2. Let value be the empty string. + let value = '' + + // 3. Assert: the code point at position within input + // is U+0022 ("). + assert(input[position.position] === '"') + + // 4. Advance position by 1. + position.position++ + + // 5. While true: + while (true) { + // 1. Append the result of collecting a sequence of code points + // that are not U+0022 (") or U+005C (\) from input, given + // position, to value. + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== '\\', + input, + position + ) + + // 2. If position is past the end of input, then break. + if (position.position >= input.length) { + break + } + + // 3. Let quoteOrBackslash be the code point at position within + // input. + const quoteOrBackslash = input[position.position] + + // 4. Advance position by 1. + position.position++ + + // 5. If quoteOrBackslash is U+005C (\), then: + if (quoteOrBackslash === '\\') { + // 1. If position is past the end of input, then append + // U+005C (\) to value and break. + if (position.position >= input.length) { + value += '\\' + break + } + + // 2. Append the code point at position within input to value. + value += input[position.position] + + // 3. Advance position by 1. + position.position++ + + // 6. Otherwise: + } else { + // 1. Assert: quoteOrBackslash is U+0022 ("). + assert(quoteOrBackslash === '"') + + // 2. Break. + break + } + } + + // 6. If the extract-value flag is set, then return value. + if (extractValue) { + return value + } + + // 7. Return the code points from positionStart to position, + // inclusive, within input. + return input.slice(positionStart, position.position) +} + +/** + * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + */ +function serializeAMimeType (mimeType) { + assert(mimeType !== 'failure') + const { parameters, essence } = mimeType + + // 1. Let serialization be the concatenation of mimeType’s + // type, U+002F (/), and mimeType’s subtype. + let serialization = essence + + // 2. For each name → value of mimeType’s parameters: + for (let [name, value] of parameters.entries()) { + // 1. Append U+003B (;) to serialization. + serialization += ';' + + // 2. Append name to serialization. + serialization += name + + // 3. Append U+003D (=) to serialization. + serialization += '=' + + // 4. If value does not solely contain HTTP token code + // points or value is the empty string, then: + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + // 1. Precede each occurence of U+0022 (") or + // U+005C (\) in value with U+005C (\). + value = value.replace(/(\\|")/g, '\\$1') + + // 2. Prepend U+0022 (") to value. + value = '"' + value + + // 3. Append U+0022 (") to value. + value += '"' + } + + // 5. Append value to serialization. + serialization += value + } + + // 3. Return serialization. + return serialization +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} char + */ +function isHTTPWhiteSpace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === ' ' +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} str + */ +function removeHTTPWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); + } + + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); + } + + return str.slice(lead, trail + 1) +} + +/** + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * @param {string} char + */ +function isASCIIWhitespace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' ' +} + +/** + * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace + */ +function removeASCIIWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); + } + + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); + } + + return str.slice(lead, trail + 1) +} + +module.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType +} + + +/***/ }), + +/***/ 63041: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Blob, File: NativeFile } = __nccwpck_require__(20181) +const { types } = __nccwpck_require__(39023) +const { kState } = __nccwpck_require__(89710) +const { isBlobLike } = __nccwpck_require__(15523) +const { webidl } = __nccwpck_require__(74222) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(94322) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const encoder = new TextEncoder() + +class File extends Blob { + constructor (fileBits, fileName, options = {}) { + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }) + + fileBits = webidl.converters['sequence<BlobPart>'](fileBits) + fileName = webidl.converters.USVString(fileName) + options = webidl.converters.FilePropertyBag(options) + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + // Note: Blob handles this for us + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // 2. Convert every character in t to ASCII lowercase. + let t = options.type + let d + + // eslint-disable-next-line no-labels + substep: { + if (t) { + t = parseMIMEType(t) + + if (t === 'failure') { + t = '' + // eslint-disable-next-line no-labels + break substep + } + + t = serializeAMimeType(t).toLowerCase() + } + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + d = options.lastModified + } + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + super(processBlobParts(fileBits, options), { type: t }) + this[kState] = { + name: n, + lastModified: d, + type: t + } + } + + get name () { + webidl.brandCheck(this, File) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, File) + + return this[kState].lastModified + } + + get type () { + webidl.brandCheck(this, File) + + return this[kState].type + } +} + +class FileLike { + constructor (blobLike, fileName, options = {}) { + // TODO: argument idl type check + + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // TODO + const t = options.type + + // 2. Convert every character in t to ASCII lowercase. + // TODO + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + const d = options.lastModified ?? Date.now() + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + } + } + + stream (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.stream(...args) + } + + arrayBuffer (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.arrayBuffer(...args) + } + + slice (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.slice(...args) + } + + text (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.text(...args) + } + + get size () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.size + } + + get type () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.type + } + + get name () { + webidl.brandCheck(this, FileLike) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, FileLike) + + return this[kState].lastModified + } + + get [Symbol.toStringTag] () { + return 'File' + } +} + +Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: 'File', + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty +}) + +webidl.converters.Blob = webidl.interfaceConverter(Blob) + +webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if ( + ArrayBuffer.isView(V) || + types.isAnyArrayBuffer(V) + ) { + return webidl.converters.BufferSource(V, opts) + } + } + + return webidl.converters.USVString(V, opts) +} + +webidl.converters['sequence<BlobPart>'] = webidl.sequenceConverter( + webidl.converters.BlobPart +) + +// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag +webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue () { + return Date.now() + } + }, + { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'endings', + converter: (value) => { + value = webidl.converters.DOMString(value) + value = value.toLowerCase() + + if (value !== 'native') { + value = 'transparent' + } + + return value + }, + defaultValue: 'transparent' + } +]) + +/** + * @see https://www.w3.org/TR/FileAPI/#process-blob-parts + * @param {(NodeJS.TypedArray|Blob|string)[]} parts + * @param {{ type: string, endings: string }} options + */ +function processBlobParts (parts, options) { + // 1. Let bytes be an empty sequence of bytes. + /** @type {NodeJS.TypedArray[]} */ + const bytes = [] + + // 2. For each element in parts: + for (const element of parts) { + // 1. If element is a USVString, run the following substeps: + if (typeof element === 'string') { + // 1. Let s be element. + let s = element + + // 2. If the endings member of options is "native", set s + // to the result of converting line endings to native + // of element. + if (options.endings === 'native') { + s = convertLineEndingsNative(s) + } + + // 3. Append the result of UTF-8 encoding s to bytes. + bytes.push(encoder.encode(s)) + } else if ( + types.isAnyArrayBuffer(element) || + types.isTypedArray(element) + ) { + // 2. If element is a BufferSource, get a copy of the + // bytes held by the buffer source, and append those + // bytes to bytes. + if (!element.buffer) { // ArrayBuffer + bytes.push(new Uint8Array(element)) + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ) + } + } else if (isBlobLike(element)) { + // 3. If element is a Blob, append the bytes it represents + // to bytes. + bytes.push(element) + } + } + + // 3. Return bytes. + return bytes +} + +/** + * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native + * @param {string} s + */ +function convertLineEndingsNative (s) { + // 1. Let native line ending be be the code point U+000A LF. + let nativeLineEnding = '\n' + + // 2. If the underlying platform’s conventions are to + // represent newlines as a carriage return and line feed + // sequence, set native line ending to the code point + // U+000D CR followed by the code point U+000A LF. + if (process.platform === 'win32') { + nativeLineEnding = '\r\n' + } + + return s.replace(/\r?\n/g, nativeLineEnding) +} + +// If this function is moved to ./util.js, some tools (such as +// rollup) will warn about circular dependencies. See: +// https://github.com/nodejs/undici/issues/1629 +function isFileLike (object) { + return ( + (NativeFile && object instanceof NativeFile) || + object instanceof File || ( + object && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File' + ) + ) +} + +module.exports = { File, FileLike, isFileLike } + + +/***/ }), + +/***/ 43073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(15523) +const { kState } = __nccwpck_require__(89710) +const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(63041) +const { webidl } = __nccwpck_require__(74222) +const { Blob, File: NativeFile } = __nccwpck_require__(20181) + +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile + +// https://xhr.spec.whatwg.org/#formdata +class FormData { + constructor (form) { + if (form !== undefined) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }) + } + + this[kState] = [] + } + + append (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? webidl.converters.USVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with + // name, value, and filename if given. + const entry = makeEntry(name, value, filename) + + // 3. Append entry to this’s entry list. + this[kState].push(entry) + } + + delete (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }) + + name = webidl.converters.USVString(name) + + // The delete(name) method steps are to remove all entries whose name + // is name from this’s entry list. + this[kState] = this[kState].filter(entry => entry.name !== name) + } + + get (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }) + + name = webidl.converters.USVString(name) + + // 1. If there is no entry whose name is name in this’s entry list, + // then return null. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx === -1) { + return null + } + + // 2. Return the value of the first entry whose name is name from + // this’s entry list. + return this[kState][idx].value + } + + getAll (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }) + + name = webidl.converters.USVString(name) + + // 1. If there is no entry whose name is name in this’s entry list, + // then return the empty list. + // 2. Return the values of all entries whose name is name, in order, + // from this’s entry list. + return this[kState] + .filter((entry) => entry.name === name) + .map((entry) => entry.value) + } + + has (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }) + + name = webidl.converters.USVString(name) + + // The has(name) method steps are to return true if there is an entry + // whose name is name in this’s entry list; otherwise false. + return this[kState].findIndex((entry) => entry.name === name) !== -1 + } + + set (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // The set(name, value) and set(name, blobValue, filename) method steps + // are: + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? toUSVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with name, value, and + // filename if given. + const entry = makeEntry(name, value, filename) + + // 3. If there are entries in this’s entry list whose name is name, then + // replace the first such entry with entry and remove the others. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) + ] + } else { + // 4. Otherwise, append entry to this’s entry list. + this[kState].push(entry) + } + } + + entries () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key+value' + ) + } + + keys () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key' + ) + } + + values () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'value' + ) + } + + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }) + + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } +} + +FormData.prototype[Symbol.iterator] = FormData.prototype.entries + +Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true + } +}) + +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ +function makeEntry (name, value, filename) { + // 1. Set name to the result of converting name into a scalar value string. + // "To convert a string into a scalar value string, replace any surrogates + // with U+FFFD." + // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end + name = Buffer.from(name).toString('utf8') + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8') + } else { + // 3. Otherwise: + + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }) + } + + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + /** @type {FilePropertyBag} */ + const options = { + type: value.type, + lastModified: value.lastModified + } + + value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile + ? new File([value], filename, options) + : new FileLike(value, filename, options) + } + } + + // 4. Return an entry whose name is name and whose value is value. + return { name, value } +} + +module.exports = { FormData } + + +/***/ }), + +/***/ 75628: +/***/ ((module) => { + +"use strict"; + + +// In case of breaking changes, increase the version +// number to avoid conflicts. +const globalOrigin = Symbol.for('undici.globalOrigin.1') + +function getGlobalOrigin () { + return globalThis[globalOrigin] +} + +function setGlobalOrigin (newOrigin) { + if (newOrigin === undefined) { + Object.defineProperty(globalThis, globalOrigin, { + value: undefined, + writable: true, + enumerable: false, + configurable: false + }) + + return + } + + const parsedURL = new URL(newOrigin) + + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`) + } + + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }) +} + +module.exports = { + getGlobalOrigin, + setGlobalOrigin +} + + +/***/ }), + +/***/ 26349: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +const { kHeadersList, kConstruct } = __nccwpck_require__(36443) +const { kGuard } = __nccwpck_require__(89710) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const { + makeIterator, + isValidHeaderName, + isValidHeaderValue +} = __nccwpck_require__(15523) +const util = __nccwpck_require__(39023) +const { webidl } = __nccwpck_require__(74222) +const assert = __nccwpck_require__(42613) + +const kHeadersMap = Symbol('headers map') +const kHeadersSortedMap = Symbol('headers map sorted') + +/** + * @param {number} code + */ +function isHTTPWhiteSpaceCharCode (code) { + return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020 +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize (potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + let i = 0; let j = potentialValue.length + + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i + + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j) +} + +function fill (headers, object) { + // To fill a Headers object headers with a given object object, run these steps: + + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i] + // 1. If header does not contain exactly two items, then throw a TypeError. + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }) + } + + // 2. Append (header’s first item, header’s second item) to headers. + appendHeader(headers, header[0], header[1]) + } + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw + + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + const keys = Object.keys(object) + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]) + } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>'] + }) + } +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-headers-append + */ +function appendHeader (headers, name, value) { + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }) + } + + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // Note: undici does not implement forbidden header names + if (headers[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (headers[kGuard] === 'request-no-cors') { + // 5. Otherwise, if headers’s guard is "request-no-cors": + // TODO + } + + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. + + // 7. Append (name, value) to headers’s header list. + return headers[kHeadersList].append(name, value) + + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers +} + +class HeadersList { + /** @type {[string, string][]|null} */ + cookies = null + + constructor (init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]) + this[kHeadersSortedMap] = init[kHeadersSortedMap] + this.cookies = init.cookies === null ? null : [...init.cookies] + } else { + this[kHeadersMap] = new Map(init) + this[kHeadersSortedMap] = null + } + } + + // https://fetch.spec.whatwg.org/#header-list-contains + contains (name) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + name = name.toLowerCase() + + return this[kHeadersMap].has(name) + } + + clear () { + this[kHeadersMap].clear() + this[kHeadersSortedMap] = null + this.cookies = null + } + + // https://fetch.spec.whatwg.org/#concept-header-list-append + append (name, value) { + this[kHeadersSortedMap] = null + + // 1. If list contains name, then set name to the first such + // header’s name. + const lowercaseName = name.toLowerCase() + const exists = this[kHeadersMap].get(lowercaseName) + + // 2. Append (name, value) to list. + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', ' + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }) + } else { + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + if (lowercaseName === 'set-cookie') { + this.cookies ??= [] + this.cookies.push(value) + } + } + + // https://fetch.spec.whatwg.org/#concept-header-list-set + set (name, value) { + this[kHeadersSortedMap] = null + const lowercaseName = name.toLowerCase() + + if (lowercaseName === 'set-cookie') { + this.cookies = [value] + } + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete (name) { + this[kHeadersSortedMap] = null + + name = name.toLowerCase() + + if (name === 'set-cookie') { + this.cookies = null + } + + this[kHeadersMap].delete(name) + } + + // https://fetch.spec.whatwg.org/#concept-header-list-get + get (name) { + const value = this[kHeadersMap].get(name.toLowerCase()) + + // 1. If list does not contain name, then return null. + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return value === undefined ? null : value.value + } + + * [Symbol.iterator] () { + // use the lowercased name + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value] + } + } + + get entries () { + const headers = {} + + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value + } + } + + return headers + } +} + +// https://fetch.spec.whatwg.org/#headers-class +class Headers { + constructor (init = undefined) { + if (init === kConstruct) { + return + } + this[kHeadersList] = new HeadersList() + + // The new Headers(init) constructor steps are: + + // 1. Set this’s guard to "none". + this[kGuard] = 'none' + + // 2. If init is given, then fill this with init. + if (init !== undefined) { + init = webidl.converters.HeadersInit(init) + fill(this, init) + } + } + + // https://fetch.spec.whatwg.org/#dom-headers-append + append (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }) + + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + return appendHeader(this, name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }) + } + + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this[kHeadersList].contains(name)) { + return + } + + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + this[kHeadersList].delete(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-get + get (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }) + } + + // 2. Return the result of getting name from this’s header + // list. + return this[kHeadersList].get(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-has + has (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }) + } + + // 2. Return true if this’s header list contains name; + // otherwise false. + return this[kHeadersList].contains(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-set + set (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }) + + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value, + type: 'header value' + }) + } + + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + this[kHeadersList].set(name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie () { + webidl.brandCheck(this, Headers) + + // 1. If this’s header list does not contain `Set-Cookie`, then return « ». + // 2. Return the values of all headers in this’s header list whose name is + // a byte-case-insensitive match for `Set-Cookie`, in order. + + const list = this[kHeadersList].cookies + + if (list) { + return [...list] + } + + return [] + } + + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap] () { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap] + } + + // 1. Let headers be an empty list of headers with the key being the name + // and value the value. + const headers = [] + + // 2. Let names be the result of convert header names to a sorted-lowercase + // set with all the names of the headers in list. + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1) + const cookies = this[kHeadersList].cookies + + // 3. For each name of names: + for (let i = 0; i < names.length; ++i) { + const [name, value] = names[i] + // 1. If name is `set-cookie`, then: + if (name === 'set-cookie') { + // 1. Let values be a list of all values of headers in list whose name + // is a byte-case-insensitive match for name, in order. + + // 2. For each value of values: + // 1. Append (name, value) to headers. + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]) + } + } else { + // 2. Otherwise: + + // 1. Let value be the result of getting name from list. + + // 2. Assert: value is non-null. + assert(value !== null) + + // 3. Append (name, value) to headers. + headers.push([name, value]) + } + } + + this[kHeadersList][kHeadersSortedMap] = headers + + // 4. Return headers. + return headers + } + + keys () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key' + ) + } + + values () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'value') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'value' + ) + } + + entries () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key+value') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key+value' + ) + } + + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }) + + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } + + [Symbol.for('nodejs.util.inspect.custom')] () { + webidl.brandCheck(this, Headers) + + return this[kHeadersList] + } +} + +Headers.prototype[Symbol.iterator] = Headers.prototype.entries + +Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + }, + [util.inspect.custom]: { + enumerable: false + } +}) + +webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence<sequence<ByteString>>'](V) + } + + return webidl.converters['record<ByteString, ByteString>'](V) + } + + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>'] + }) +} + +module.exports = { + fill, + Headers, + HeadersList +} + + +/***/ }), + +/***/ 12315: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +const { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse +} = __nccwpck_require__(48676) +const { Headers } = __nccwpck_require__(26349) +const { Request, makeRequest } = __nccwpck_require__(25194) +const zlib = __nccwpck_require__(43106) +const { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme +} = __nccwpck_require__(15523) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(89710) +const assert = __nccwpck_require__(42613) +const { safelyExtractBody } = __nccwpck_require__(8923) +const { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException +} = __nccwpck_require__(87326) +const { kHeadersList } = __nccwpck_require__(36443) +const EE = __nccwpck_require__(24434) +const { Readable, pipeline } = __nccwpck_require__(2203) +const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = __nccwpck_require__(3440) +const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(94322) +const { TransformStream } = __nccwpck_require__(63774) +const { getGlobalDispatcher } = __nccwpck_require__(32581) +const { webidl } = __nccwpck_require__(74222) +const { STATUS_CODES } = __nccwpck_require__(58611) +const GET_OR_HEAD = ['GET', 'HEAD'] + +/** @type {import('buffer').resolveObjectURL} */ +let resolveObjectURL +let ReadableStream = globalThis.ReadableStream + +class Fetch extends EE { + constructor (dispatcher) { + super() + + this.dispatcher = dispatcher + this.connection = null + this.dump = false + this.state = 'ongoing' + // 2 terminated listeners get added per request, + // but only 1 gets removed. If there are 20 redirects, + // 21 listeners will be added. + // See https://github.com/nodejs/undici/issues/1711 + // TODO (fix): Find and fix root cause for leaked listener. + this.setMaxListeners(21) + } + + terminate (reason) { + if (this.state !== 'ongoing') { + return + } + + this.state = 'terminated' + this.connection?.destroy(reason) + this.emit('terminated', reason) + } + + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort (error) { + if (this.state !== 'ongoing') { + return + } + + // 1. Set controller’s state to "aborted". + this.state = 'aborted' + + // 2. Let fallbackError be an "AbortError" DOMException. + // 3. Set error to fallbackError if it is not given. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 4. Let serializedError be StructuredSerialize(error). + // If that threw an exception, catch it, and let + // serializedError be StructuredSerialize(fallbackError). + + // 5. Set controller’s serialized abort reason to serializedError. + this.serializedAbortReason = error + + this.connection?.destroy(error) + this.emit('terminated', error) + } +} + +// https://fetch.spec.whatwg.org/#fetch-method +function fetch (input, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }) + + // 1. Let p be a new promise. + const p = createDeferredPromise() + + // 2. Let requestObject be the result of invoking the initial value of + // Request as constructor with input and init as arguments. If this throws + // an exception, reject p with it and return p. + let requestObject + + try { + requestObject = new Request(input, init) + } catch (e) { + p.reject(e) + return p.promise + } + + // 3. Let request be requestObject’s request. + const request = requestObject[kState] + + // 4. If requestObject’s signal’s aborted flag is set, then: + if (requestObject.signal.aborted) { + // 1. Abort the fetch() call with p, request, null, and + // requestObject’s signal’s abort reason. + abortFetch(p, request, null, requestObject.signal.reason) + + // 2. Return p. + return p.promise + } + + // 5. Let globalObject be request’s client’s global object. + const globalObject = request.client.globalObject + + // 6. If globalObject is a ServiceWorkerGlobalScope object, then set + // request’s service-workers mode to "none". + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none' + } + + // 7. Let responseObject be null. + let responseObject = null + + // 8. Let relevantRealm be this’s relevant Realm. + const relevantRealm = null + + // 9. Let locallyAborted be false. + let locallyAborted = false + + // 10. Let controller be null. + let controller = null + + // 11. Add the following abort steps to requestObject’s signal: + addAbortListener( + requestObject.signal, + () => { + // 1. Set locallyAborted to true. + locallyAborted = true + + // 2. Assert: controller is non-null. + assert(controller != null) + + // 3. Abort controller with requestObject’s signal’s abort reason. + controller.abort(requestObject.signal.reason) + + // 4. Abort the fetch() call with p, request, responseObject, + // and requestObject’s signal’s abort reason. + abortFetch(p, request, responseObject, requestObject.signal.reason) + } + ) + + // 12. Let handleFetchDone given response response be to finalize and + // report timing with response, globalObject, and "fetch". + const handleFetchDone = (response) => + finalizeAndReportTiming(response, 'fetch') + + // 13. Set controller to the result of calling fetch given request, + // with processResponseEndOfBody set to handleFetchDone, and processResponse + // given response being these substeps: + + const processResponse = (response) => { + // 1. If locallyAborted is true, terminate these substeps. + if (locallyAborted) { + return Promise.resolve() + } + + // 2. If response’s aborted flag is set, then: + if (response.aborted) { + // 1. Let deserializedError be the result of deserialize a serialized + // abort reason given controller’s serialized abort reason and + // relevantRealm. + + // 2. Abort the fetch() call with p, request, responseObject, and + // deserializedError. + + abortFetch(p, request, responseObject, controller.serializedAbortReason) + return Promise.resolve() + } + + // 3. If response is a network error, then reject p with a TypeError + // and terminate these substeps. + if (response.type === 'error') { + p.reject( + Object.assign(new TypeError('fetch failed'), { cause: response.error }) + ) + return Promise.resolve() + } + + // 4. Set responseObject to the result of creating a Response object, + // given response, "immutable", and relevantRealm. + responseObject = new Response() + responseObject[kState] = response + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + + // 5. Resolve p with responseObject. + p.resolve(responseObject) + } + + controller = fetching({ + request, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici + }) + + // 14. Return p. + return p.promise +} + +// https://fetch.spec.whatwg.org/#finalize-and-report-timing +function finalizeAndReportTiming (response, initiatorType = 'other') { + // 1. If response is an aborted network error, then return. + if (response.type === 'error' && response.aborted) { + return + } + + // 2. If response’s URL list is null or empty, then return. + if (!response.urlList?.length) { + return + } + + // 3. Let originalURL be response’s URL list[0]. + const originalURL = response.urlList[0] + + // 4. Let timingInfo be response’s timing info. + let timingInfo = response.timingInfo + + // 5. Let cacheState be response’s cache state. + let cacheState = response.cacheState + + // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. + if (!urlIsHttpHttpsScheme(originalURL)) { + return + } + + // 7. If timingInfo is null, then return. + if (timingInfo === null) { + return + } + + // 8. If response’s timing allow passed flag is not set, then: + if (!response.timingAllowPassed) { + // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }) + + // 2. Set cacheState to the empty string. + cacheState = '' + } + + // 9. Set timingInfo’s end time to the coarsened shared current time + // given global’s relevant settings object’s cross-origin isolated + // capability. + // TODO: given global’s relevant settings object’s cross-origin isolated + // capability? + timingInfo.endTime = coarsenedSharedCurrentTime() + + // 10. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 11. Mark resource timing for timingInfo, originalURL, initiatorType, + // global, and cacheState. + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ) +} + +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { + if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState) + } +} + +// https://fetch.spec.whatwg.org/#abort-fetch +function abortFetch (p, request, responseObject, error) { + // Note: AbortSignal.reason was added in node v17.2.0 + // which would give us an undefined error to reject with. + // Remove this once node v16 is no longer supported. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 1. Reject promise with error. + p.reject(error) + + // 2. If request’s body is not null and is readable, then cancel request’s + // body with error. + if (request.body != null && isReadable(request.body?.stream)) { + request.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } + + // 3. If responseObject is null, then return. + if (responseObject == null) { + return + } + + // 4. Let response be responseObject’s response. + const response = responseObject[kState] + + // 5. If response’s body is not null and is readable, then error response’s + // body with error. + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } +} + +// https://fetch.spec.whatwg.org/#fetching +function fetching ({ + request, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher // undici +}) { + // 1. Let taskDestination be null. + let taskDestination = null + + // 2. Let crossOriginIsolatedCapability be false. + let crossOriginIsolatedCapability = false + + // 3. If request’s client is non-null, then: + if (request.client != null) { + // 1. Set taskDestination to request’s client’s global object. + taskDestination = request.client.globalObject + + // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin + // isolated capability. + crossOriginIsolatedCapability = + request.client.crossOriginIsolatedCapability + } + + // 4. If useParallelQueue is true, then set taskDestination to the result of + // starting a new parallel queue. + // TODO + + // 5. Let timingInfo be a new fetch timing info whose start time and + // post-redirect start time are the coarsened shared current time given + // crossOriginIsolatedCapability. + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability) + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }) + + // 6. Let fetchParams be a new fetch params whose + // request is request, + // timing info is timingInfo, + // process request body chunk length is processRequestBodyChunkLength, + // process request end-of-body is processRequestEndOfBody, + // process response is processResponse, + // process response consume body is processResponseConsumeBody, + // process response end-of-body is processResponseEndOfBody, + // task destination is taskDestination, + // and cross-origin isolated capability is crossOriginIsolatedCapability. + const fetchParams = { + controller: new Fetch(dispatcher), + request, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + } + + // 7. If request’s body is a byte sequence, then set request’s body to + // request’s body as a body. + // NOTE: Since fetching is only called from fetch, body should already be + // extracted. + assert(!request.body || request.body.stream) + + // 8. If request’s window is "client", then set request’s window to request’s + // client, if request’s client’s global object is a Window object; otherwise + // "no-window". + if (request.window === 'client') { + // TODO: What if request.client is null? + request.window = + request.client?.globalObject?.constructor?.name === 'Window' + ? request.client + : 'no-window' + } + + // 9. If request’s origin is "client", then set request’s origin to request’s + // client’s origin. + if (request.origin === 'client') { + // TODO: What if request.client is null? + request.origin = request.client?.origin + } + + // 10. If all of the following conditions are true: + // TODO + + // 11. If request’s policy container is "client", then: + if (request.policyContainer === 'client') { + // 1. If request’s client is non-null, then set request’s policy + // container to a clone of request’s client’s policy container. [HTML] + if (request.client != null) { + request.policyContainer = clonePolicyContainer( + request.client.policyContainer + ) + } else { + // 2. Otherwise, set request’s policy container to a new policy + // container. + request.policyContainer = makePolicyContainer() + } + } + + // 12. If request’s header list does not contain `Accept`, then: + if (!request.headersList.contains('accept')) { + // 1. Let value be `*/*`. + const value = '*/*' + + // 2. A user agent should set value to the first matching statement, if + // any, switching on request’s destination: + // "document" + // "frame" + // "iframe" + // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` + // "image" + // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` + // "style" + // `text/css,*/*;q=0.1` + // TODO + + // 3. Append `Accept`/value to request’s header list. + request.headersList.append('accept', value) + } + + // 13. If request’s header list does not contain `Accept-Language`, then + // user agents should append `Accept-Language`/an appropriate value to + // request’s header list. + if (!request.headersList.contains('accept-language')) { + request.headersList.append('accept-language', '*') + } + + // 14. If request’s priority is null, then use request’s initiator and + // destination appropriately in setting request’s priority to a + // user-agent-defined object. + if (request.priority === null) { + // TODO + } + + // 15. If request is a subresource request, then: + if (subresourceSet.has(request.destination)) { + // TODO + } + + // 16. Run main fetch given fetchParams. + mainFetch(fetchParams) + .catch(err => { + fetchParams.controller.terminate(err) + }) + + // 17. Return fetchParam's controller + return fetchParams.controller +} + +// https://fetch.spec.whatwg.org/#concept-main-fetch +async function mainFetch (fetchParams, recursive = false) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. If request’s local-URLs-only flag is set and request’s current URL is + // not local, then set response to a network error. + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only') + } + + // 4. Run report Content Security Policy violations for request. + // TODO + + // 5. Upgrade request to a potentially trustworthy URL, if appropriate. + tryUpgradeRequestToAPotentiallyTrustworthyURL(request) + + // 6. If should request be blocked due to a bad port, should fetching request + // be blocked as mixed content, or should request be blocked by Content + // Security Policy returns blocked, then set response to a network error. + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port') + } + // TODO: should fetching request be blocked as mixed content? + // TODO: should request be blocked by Content Security Policy? + + // 7. If request’s referrer policy is the empty string, then set request’s + // referrer policy to request’s policy container’s referrer policy. + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy + } + + // 8. If request’s referrer is not "no-referrer", then set request’s + // referrer to the result of invoking determine request’s referrer. + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request) + } + + // 9. Set request’s current URL’s scheme to "https" if all of the following + // conditions are true: + // - request’s current URL’s scheme is "http" + // - request’s current URL’s host is a domain + // - Matching request’s current URL’s host per Known HSTS Host Domain Name + // Matching results in either a superdomain match with an asserted + // includeSubDomains directive or a congruent match (with or without an + // asserted includeSubDomains directive). [HSTS] + // TODO + + // 10. If recursive is false, then run the remaining steps in parallel. + // TODO + + // 11. If response is null, then set response to the result of running + // the steps corresponding to the first matching statement: + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request) + + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || + // request’s current URL’s scheme is "data" + (currentURL.protocol === 'data:') || + // - request’s mode is "navigate" or "websocket" + (request.mode === 'navigate' || request.mode === 'websocket') + ) { + // 1. Set request’s response tainting to "basic". + request.responseTainting = 'basic' + + // 2. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s mode is "same-origin" + if (request.mode === 'same-origin') { + // 1. Return a network error. + return makeNetworkError('request mode cannot be "same-origin"') + } + + // request’s mode is "no-cors" + if (request.mode === 'no-cors') { + // 1. If request’s redirect mode is not "follow", then return a network + // error. + if (request.redirect !== 'follow') { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ) + } + + // 2. Set request’s response tainting to "opaque". + request.responseTainting = 'opaque' + + // 3. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s current URL’s scheme is not an HTTP(S) scheme + if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { + // Return a network error. + return makeNetworkError('URL scheme must be a HTTP(S) scheme') + } + + // - request’s use-CORS-preflight flag is set + // - request’s unsafe-request flag is set and either request’s method is + // not a CORS-safelisted method or CORS-unsafe request-header names with + // request’s header list is not empty + // 1. Set request’s response tainting to "cors". + // 2. Let corsWithPreflightResponse be the result of running HTTP fetch + // given fetchParams and true. + // 3. If corsWithPreflightResponse is a network error, then clear cache + // entries using request. + // 4. Return corsWithPreflightResponse. + // TODO + + // Otherwise + // 1. Set request’s response tainting to "cors". + request.responseTainting = 'cors' + + // 2. Return the result of running HTTP fetch given fetchParams. + return await httpFetch(fetchParams) + })() + } + + // 12. If recursive is true, then return response. + if (recursive) { + return response + } + + // 13. If response is not a network error and response is not a filtered + // response, then: + if (response.status !== 0 && !response.internalResponse) { + // If request’s response tainting is "cors", then: + if (request.responseTainting === 'cors') { + // 1. Let headerNames be the result of extracting header list values + // given `Access-Control-Expose-Headers` and response’s header list. + // TODO + // 2. If request’s credentials mode is not "include" and headerNames + // contains `*`, then set response’s CORS-exposed header-name list to + // all unique header names in response’s header list. + // TODO + // 3. Otherwise, if headerNames is not null or failure, then set + // response’s CORS-exposed header-name list to headerNames. + // TODO + } + + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic') + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors') + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque') + } else { + assert(false) + } + } + + // 14. Let internalResponse be response, if response is a network error, + // and response’s internal response otherwise. + let internalResponse = + response.status === 0 ? response : response.internalResponse + + // 15. If internalResponse’s URL list is empty, then set it to a clone of + // request’s URL list. + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request.urlList) + } + + // 16. If request’s timing allow failed flag is unset, then set + // internalResponse’s timing allow passed flag. + if (!request.timingAllowFailed) { + response.timingAllowPassed = true + } + + // 17. If response is not a network error and any of the following returns + // blocked + // - should internalResponse to request be blocked as mixed content + // - should internalResponse to request be blocked by Content Security Policy + // - should internalResponse to request be blocked due to its MIME type + // - should internalResponse to request be blocked due to nosniff + // TODO + + // 18. If response’s type is "opaque", internalResponse’s status is 206, + // internalResponse’s range-requested flag is set, and request’s header + // list does not contain `Range`, then set response and internalResponse + // to a network error. + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request.headers.contains('range') + ) { + response = internalResponse = makeNetworkError() + } + + // 19. If response is not a network error and either request’s method is + // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, + // set internalResponse’s body to null and disregard any enqueuing toward + // it (if any). + if ( + response.status !== 0 && + (request.method === 'HEAD' || + request.method === 'CONNECT' || + nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null + fetchParams.controller.dump = true + } + + // 20. If request’s integrity metadata is not the empty string, then: + if (request.integrity) { + // 1. Let processBodyError be this step: run fetch finale given fetchParams + // and a network error. + const processBodyError = (reason) => + fetchFinale(fetchParams, makeNetworkError(reason)) + + // 2. If request’s response tainting is "opaque", or response’s body is null, + // then run processBodyError and abort these steps. + if (request.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error) + return + } + + // 3. Let processBody given bytes be these steps: + const processBody = (bytes) => { + // 1. If bytes do not match request’s integrity metadata, + // then run processBodyError and abort these steps. [SRI] + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch') + return + } + + // 2. Set response’s body to bytes as a body. + response.body = safelyExtractBody(bytes)[0] + + // 3. Run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } + + // 4. Fully read response’s body given processBody and processBodyError. + await fullyReadBody(response.body, processBody, processBodyError) + } else { + // 21. Otherwise, run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } +} + +// https://fetch.spec.whatwg.org/#concept-scheme-fetch +// given a fetch params fetchParams +function schemeFetch (fetchParams) { + // Note: since the connection is destroyed on redirect, which sets fetchParams to a + // cancelled state, we do not want this condition to trigger *unless* there have been + // no redirects. See https://github.com/nodejs/undici/issues/1776 + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)) + } + + // 2. Let request be fetchParams’s request. + const { request } = fetchParams + + const { protocol: scheme } = requestCurrentURL(request) + + // 3. Switch on request’s current URL’s scheme and run the associated steps: + switch (scheme) { + case 'about:': { + // If request’s current URL’s path is the string "blank", then return a new response + // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », + // and body is the empty byte sequence as a body. + + // Otherwise, return a network error. + return Promise.resolve(makeNetworkError('about scheme is not supported')) + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = (__nccwpck_require__(20181).resolveObjectURL) + } + + // 1. Let blobURLEntry be request’s current URL’s blob URL entry. + const blobURLEntry = requestCurrentURL(request) + + // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 + // Buffer.resolveObjectURL does not ignore URL queries. + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')) + } + + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()) + + // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s + // object is not a Blob object, then return a network error. + if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError('invalid method')) + } + + // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. + const bodyWithType = safelyExtractBody(blobURLEntryObject) + + // 4. Let body be bodyWithType’s body. + const body = bodyWithType[0] + + // 5. Let length be body’s length, serialized and isomorphic encoded. + const length = isomorphicEncode(`${body.length}`) + + // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. + const type = bodyWithType[1] ?? '' + + // 7. Return a new response whose status message is `OK`, header list is + // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. + const response = makeResponse({ + statusText: 'OK', + headersList: [ + ['content-length', { name: 'Content-Length', value: length }], + ['content-type', { name: 'Content-Type', value: type }] + ] + }) + + response.body = body + + return Promise.resolve(response) + } + case 'data:': { + // 1. Let dataURLStruct be the result of running the + // data: URL processor on request’s current URL. + const currentURL = requestCurrentURL(request) + const dataURLStruct = dataURLProcessor(currentURL) + + // 2. If dataURLStruct is failure, then return a + // network error. + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')) + } + + // 3. Let mimeType be dataURLStruct’s MIME type, serialized. + const mimeType = serializeAMimeType(dataURLStruct.mimeType) + + // 4. Return a response whose status message is `OK`, + // header list is « (`Content-Type`, mimeType) », + // and body is dataURLStruct’s body as a body. + return Promise.resolve(makeResponse({ + statusText: 'OK', + headersList: [ + ['content-type', { name: 'Content-Type', value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })) + } + case 'file:': { + // For now, unfortunate as it is, file URLs are left as an exercise for the reader. + // When in doubt, return a network error. + return Promise.resolve(makeNetworkError('not implemented... yet...')) + } + case 'http:': + case 'https:': { + // Return the result of running HTTP fetch given fetchParams. + + return httpFetch(fetchParams) + .catch((err) => makeNetworkError(err)) + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')) + } + } +} + +// https://fetch.spec.whatwg.org/#finalize-response +function finalizeResponse (fetchParams, response) { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // 2, If fetchParams’s process response done is not null, then queue a fetch + // task to run fetchParams’s process response done given response, with + // fetchParams’s task destination. + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)) + } +} + +// https://fetch.spec.whatwg.org/#fetch-finale +function fetchFinale (fetchParams, response) { + // 1. If response is a network error, then: + if (response.type === 'error') { + // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». + response.urlList = [fetchParams.request.urlList[0]] + + // 2. Set response’s timing info to the result of creating an opaque timing + // info for fetchParams’s timing info. + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }) + } + + // 2. Let processResponseEndOfBody be the following steps: + const processResponseEndOfBody = () => { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // If fetchParams’s process response end-of-body is not null, + // then queue a fetch task to run fetchParams’s process response + // end-of-body given response with fetchParams’s task destination. + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)) + } + } + + // 3. If fetchParams’s process response is non-null, then queue a fetch task + // to run fetchParams’s process response given response, with fetchParams’s + // task destination. + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)) + } + + // 4. If response’s body is null, then run processResponseEndOfBody. + if (response.body == null) { + processResponseEndOfBody() + } else { + // 5. Otherwise: + + // 1. Let transformStream be a new a TransformStream. + + // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, + // enqueues chunk in transformStream. + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk) + } + + // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm + // and flushAlgorithm set to processResponseEndOfBody. + const transformStream = new TransformStream({ + start () {}, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size () { + return 1 + } + }, { + size () { + return 1 + } + }) + + // 4. Set response’s body to the result of piping response’s body through transformStream. + response.body = { stream: response.body.stream.pipeThrough(transformStream) } + } + + // 6. If fetchParams’s process response consume body is non-null, then: + if (fetchParams.processResponseConsumeBody != null) { + // 1. Let processBody given nullOrBytes be this step: run fetchParams’s + // process response consume body given response and nullOrBytes. + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes) + + // 2. Let processBodyError be this step: run fetchParams’s process + // response consume body given response and failure. + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure) + + // 3. If response’s body is null, then queue a fetch task to run processBody + // given null, with fetchParams’s task destination. + if (response.body == null) { + queueMicrotask(() => processBody(null)) + } else { + // 4. Otherwise, fully read response’s body given processBody, processBodyError, + // and fetchParams’s task destination. + return fullyReadBody(response.body, processBody, processBodyError) + } + return Promise.resolve() + } +} + +// https://fetch.spec.whatwg.org/#http-fetch +async function httpFetch (fetchParams) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let actualResponse be null. + let actualResponse = null + + // 4. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 5. If request’s service-workers mode is "all", then: + if (request.serviceWorkers === 'all') { + // TODO + } + + // 6. If response is null, then: + if (response === null) { + // 1. If makeCORSPreflight is true and one of these conditions is true: + // TODO + + // 2. If request’s redirect mode is "follow", then set request’s + // service-workers mode to "none". + if (request.redirect === 'follow') { + request.serviceWorkers = 'none' + } + + // 3. Set response and actualResponse to the result of running + // HTTP-network-or-cache fetch given fetchParams. + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams) + + // 4. If request’s response tainting is "cors" and a CORS check + // for request and response returns failure, then return a network error. + if ( + request.responseTainting === 'cors' && + corsCheck(request, response) === 'failure' + ) { + return makeNetworkError('cors failure') + } + + // 5. If the TAO check for request and response returns failure, then set + // request’s timing allow failed flag. + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true + } + } + + // 7. If either request’s response tainting or response’s type + // is "opaque", and the cross-origin resource policy check with + // request’s origin, request’s client, request’s destination, + // and actualResponse returns blocked, then return a network error. + if ( + (request.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck( + request.origin, + request.client, + request.destination, + actualResponse + ) === 'blocked' + ) { + return makeNetworkError('blocked') + } + + // 8. If actualResponse’s status is a redirect status, then: + if (redirectStatusSet.has(actualResponse.status)) { + // 1. If actualResponse’s status is not 303, request’s body is not null, + // and the connection uses HTTP/2, then user agents may, and are even + // encouraged to, transmit an RST_STREAM frame. + // See, https://github.com/whatwg/fetch/issues/1288 + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy() + } + + // 2. Switch on request’s redirect mode: + if (request.redirect === 'error') { + // Set response to a network error. + response = makeNetworkError('unexpected redirect') + } else if (request.redirect === 'manual') { + // Set response to an opaque-redirect filtered response whose internal + // response is actualResponse. + // NOTE(spec): On the web this would return an `opaqueredirect` response, + // but that doesn't make sense server side. + // See https://github.com/nodejs/undici/issues/1193. + response = actualResponse + } else if (request.redirect === 'follow') { + // Set response to the result of running HTTP-redirect fetch given + // fetchParams and response. + response = await httpRedirectFetch(fetchParams, response) + } else { + assert(false) + } + } + + // 9. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 10. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-redirect-fetch +function httpRedirectFetch (fetchParams, response) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let actualResponse be response, if response is not a filtered response, + // and response’s internal response otherwise. + const actualResponse = response.internalResponse + ? response.internalResponse + : response + + // 3. Let locationURL be actualResponse’s location URL given request’s current + // URL’s fragment. + let locationURL + + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request).hash + ) + + // 4. If locationURL is null, then return response. + if (locationURL == null) { + return response + } + } catch (err) { + // 5. If locationURL is failure, then return a network error. + return Promise.resolve(makeNetworkError(err)) + } + + // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network + // error. + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')) + } + + // 7. If request’s redirect count is 20, then return a network error. + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')) + } + + // 8. Increase request’s redirect count by 1. + request.redirectCount += 1 + + // 9. If request’s mode is "cors", locationURL includes credentials, and + // request’s origin is not same origin with locationURL’s origin, then return + // a network error. + if ( + request.mode === 'cors' && + (locationURL.username || locationURL.password) && + !sameOrigin(request, locationURL) + ) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')) + } + + // 10. If request’s response tainting is "cors" and locationURL includes + // credentials, then return a network error. + if ( + request.responseTainting === 'cors' && + (locationURL.username || locationURL.password) + ) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )) + } + + // 11. If actualResponse’s status is not 303, request’s body is non-null, + // and request’s body’s source is null, then return a network error. + if ( + actualResponse.status !== 303 && + request.body != null && + request.body.source == null + ) { + return Promise.resolve(makeNetworkError()) + } + + // 12. If one of the following is true + // - actualResponse’s status is 301 or 302 and request’s method is `POST` + // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` + if ( + ([301, 302].includes(actualResponse.status) && request.method === 'POST') || + (actualResponse.status === 303 && + !GET_OR_HEAD.includes(request.method)) + ) { + // then: + // 1. Set request’s method to `GET` and request’s body to null. + request.method = 'GET' + request.body = null + + // 2. For each headerName of request-body-header name, delete headerName from + // request’s header list. + for (const headerName of requestBodyHeader) { + request.headersList.delete(headerName) + } + } + + // 13. If request’s current URL’s origin is not same origin with locationURL’s + // origin, then for each headerName of CORS non-wildcard request-header name, + // delete headerName from request’s header list. + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name + request.headersList.delete('authorization') + + // https://fetch.spec.whatwg.org/#authentication-entries + request.headersList.delete('proxy-authorization', true) + + // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. + request.headersList.delete('cookie') + request.headersList.delete('host') + } + + // 14. If request’s body is non-null, then set request’s body to the first return + // value of safely extracting request’s body’s source. + if (request.body != null) { + assert(request.body.source != null) + request.body = safelyExtractBody(request.body.source)[0] + } + + // 15. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 16. Set timingInfo’s redirect end time and post-redirect start time to the + // coarsened shared current time given fetchParams’s cross-origin isolated + // capability. + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = + coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + + // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s + // redirect start time to timingInfo’s start time. + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime + } + + // 18. Append locationURL to request’s URL list. + request.urlList.push(locationURL) + + // 19. Invoke set request’s referrer policy on redirect on request and + // actualResponse. + setRequestReferrerPolicyOnRedirect(request, actualResponse) + + // 20. Return the result of running main fetch given fetchParams and true. + return mainFetch(fetchParams, true) +} + +// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch +async function httpNetworkOrCacheFetch ( + fetchParams, + isAuthenticationFetch = false, + isNewConnectionFetch = false +) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let httpFetchParams be null. + let httpFetchParams = null + + // 3. Let httpRequest be null. + let httpRequest = null + + // 4. Let response be null. + let response = null + + // 5. Let storedResponse be null. + // TODO: cache + + // 6. Let httpCache be null. + const httpCache = null + + // 7. Let the revalidatingFlag be unset. + const revalidatingFlag = false + + // 8. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If request’s window is "no-window" and request’s redirect mode is + // "error", then set httpFetchParams to fetchParams and httpRequest to + // request. + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams + httpRequest = request + } else { + // Otherwise: + + // 1. Set httpRequest to a clone of request. + httpRequest = makeRequest(request) + + // 2. Set httpFetchParams to a copy of fetchParams. + httpFetchParams = { ...fetchParams } + + // 3. Set httpFetchParams’s request to httpRequest. + httpFetchParams.request = httpRequest + } + + // 3. Let includeCredentials be true if one of + const includeCredentials = + request.credentials === 'include' || + (request.credentials === 'same-origin' && + request.responseTainting === 'basic') + + // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s + // body is non-null; otherwise null. + const contentLength = httpRequest.body ? httpRequest.body.length : null + + // 5. Let contentLengthHeaderValue be null. + let contentLengthHeaderValue = null + + // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or + // `PUT`, then set contentLengthHeaderValue to `0`. + if ( + httpRequest.body == null && + ['POST', 'PUT'].includes(httpRequest.method) + ) { + contentLengthHeaderValue = '0' + } + + // 7. If contentLength is non-null, then set contentLengthHeaderValue to + // contentLength, serialized and isomorphic encoded. + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`) + } + + // 8. If contentLengthHeaderValue is non-null, then append + // `Content-Length`/contentLengthHeaderValue to httpRequest’s header + // list. + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue) + } + + // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, + // contentLengthHeaderValue) to httpRequest’s header list. + + // 10. If contentLength is non-null and httpRequest’s keepalive is true, + // then: + if (contentLength != null && httpRequest.keepalive) { + // NOTE: keepalive is a noop outside of browser context. + } + + // 11. If httpRequest’s referrer is a URL, then append + // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, + // to httpRequest’s header list. + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)) + } + + // 12. Append a request `Origin` header for httpRequest. + appendRequestOriginHeader(httpRequest) + + // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] + appendFetchMetadata(httpRequest) + + // 14. If httpRequest’s header list does not contain `User-Agent`, then + // user agents should append `User-Agent`/default `User-Agent` value to + // httpRequest’s header list. + if (!httpRequest.headersList.contains('user-agent')) { + httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node') + } + + // 15. If httpRequest’s cache mode is "default" and httpRequest’s header + // list contains `If-Modified-Since`, `If-None-Match`, + // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set + // httpRequest’s cache mode to "no-store". + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since') || + httpRequest.headersList.contains('if-none-match') || + httpRequest.headersList.contains('if-unmodified-since') || + httpRequest.headersList.contains('if-match') || + httpRequest.headersList.contains('if-range')) + ) { + httpRequest.cache = 'no-store' + } + + // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent + // no-cache cache-control header modification flag is unset, and + // httpRequest’s header list does not contain `Cache-Control`, then append + // `Cache-Control`/`max-age=0` to httpRequest’s header list. + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control') + ) { + httpRequest.headersList.append('cache-control', 'max-age=0') + } + + // 17. If httpRequest’s cache mode is "no-store" or "reload", then: + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + // 1. If httpRequest’s header list does not contain `Pragma`, then append + // `Pragma`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('pragma')) { + httpRequest.headersList.append('pragma', 'no-cache') + } + + // 2. If httpRequest’s header list does not contain `Cache-Control`, + // then append `Cache-Control`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'no-cache') + } + } + + // 18. If httpRequest’s header list contains `Range`, then append + // `Accept-Encoding`/`identity` to httpRequest’s header list. + if (httpRequest.headersList.contains('range')) { + httpRequest.headersList.append('accept-encoding', 'identity') + } + + // 19. Modify httpRequest’s header list per HTTP. Do not append a given + // header if httpRequest’s header list contains that header’s name. + // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 + if (!httpRequest.headersList.contains('accept-encoding')) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate') + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate') + } + } + + httpRequest.headersList.delete('host') + + // 20. If includeCredentials is true, then: + if (includeCredentials) { + // 1. If the user agent is not configured to block cookies for httpRequest + // (see section 7 of [COOKIES]), then: + // TODO: credentials + // 2. If httpRequest’s header list does not contain `Authorization`, then: + // TODO: credentials + } + + // 21. If there’s a proxy-authentication entry, use it as appropriate. + // TODO: proxy-authentication + + // 22. Set httpCache to the result of determining the HTTP cache + // partition, given httpRequest. + // TODO: cache + + // 23. If httpCache is null, then set httpRequest’s cache mode to + // "no-store". + if (httpCache == null) { + httpRequest.cache = 'no-store' + } + + // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", + // then: + if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + // TODO: cache + } + + // 9. If aborted, then return the appropriate network error for fetchParams. + // TODO + + // 10. If response is null, then: + if (response == null) { + // 1. If httpRequest’s cache mode is "only-if-cached", then return a + // network error. + if (httpRequest.mode === 'only-if-cached') { + return makeNetworkError('only if cached') + } + + // 2. Let forwardResponse be the result of running HTTP-network fetch + // given httpFetchParams, includeCredentials, and isNewConnectionFetch. + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ) + + // 3. If httpRequest’s method is unsafe and forwardResponse’s status is + // in the range 200 to 399, inclusive, invalidate appropriate stored + // responses in httpCache, as per the "Invalidation" chapter of HTTP + // Caching, and set storedResponse to null. [HTTP-CACHING] + if ( + !safeMethodsSet.has(httpRequest.method) && + forwardResponse.status >= 200 && + forwardResponse.status <= 399 + ) { + // TODO: cache + } + + // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, + // then: + if (revalidatingFlag && forwardResponse.status === 304) { + // TODO: cache + } + + // 5. If response is null, then: + if (response == null) { + // 1. Set response to forwardResponse. + response = forwardResponse + + // 2. Store httpRequest and forwardResponse in httpCache, as per the + // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] + // TODO: cache + } + } + + // 11. Set response’s URL list to a clone of httpRequest’s URL list. + response.urlList = [...httpRequest.urlList] + + // 12. If httpRequest’s header list contains `Range`, then set response’s + // range-requested flag. + if (httpRequest.headersList.contains('range')) { + response.rangeRequested = true + } + + // 13. Set response’s request-includes-credentials to includeCredentials. + response.requestIncludesCredentials = includeCredentials + + // 14. If response’s status is 401, httpRequest’s response tainting is not + // "cors", includeCredentials is true, and request’s window is an environment + // settings object, then: + // TODO + + // 15. If response’s status is 407, then: + if (response.status === 407) { + // 1. If request’s window is "no-window", then return a network error. + if (request.window === 'no-window') { + return makeNetworkError() + } + + // 2. ??? + + // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 4. Prompt the end user as appropriate in request’s window and store + // the result as a proxy-authentication entry. [HTTP-AUTH] + // TODO: Invoke some kind of callback? + + // 5. Set response to the result of running HTTP-network-or-cache fetch given + // fetchParams. + // TODO + return makeNetworkError('proxy authentication required') + } + + // 16. If all of the following are true + if ( + // response’s status is 421 + response.status === 421 && + // isNewConnectionFetch is false + !isNewConnectionFetch && + // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request.body == null || request.body.source != null) + ) { + // then: + + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 2. Set response to the result of running HTTP-network-or-cache + // fetch given fetchParams, isAuthenticationFetch, and true. + + // TODO (spec): The spec doesn't specify this but we need to cancel + // the active response before we can start a new one. + // https://github.com/whatwg/fetch/issues/1293 + fetchParams.controller.connection.destroy() + + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ) + } + + // 17. If isAuthenticationFetch is true, then create an authentication entry + if (isAuthenticationFetch) { + // TODO + } + + // 18. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-network-fetch +async function httpNetworkFetch ( + fetchParams, + includeCredentials = false, + forceNewConnection = false +) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed) + + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy (err) { + if (!this.destroyed) { + this.destroyed = true + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) + } + } + } + + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 4. Let httpCache be the result of determining the HTTP cache partition, + // given request. + // TODO: cache + const httpCache = null + + // 5. If httpCache is null, then set request’s cache mode to "no-store". + if (httpCache == null) { + request.cache = 'no-store' + } + + // 6. Let networkPartitionKey be the result of determining the network + // partition key given request. + // TODO + + // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise + // "no". + const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars + + // 8. Switch on request’s mode: + if (request.mode === 'websocket') { + // Let connection be the result of obtaining a WebSocket connection, + // given request’s current URL. + // TODO + } else { + // Let connection be the result of obtaining a connection, given + // networkPartitionKey, request’s current URL’s origin, + // includeCredentials, and forceNewConnection. + // TODO + } + + // 9. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If connection is failure, then return a network error. + + // 2. Set timingInfo’s final connection timing info to the result of + // calling clamp and coarsen connection timing info with connection’s + // timing info, timingInfo’s post-redirect start time, and fetchParams’s + // cross-origin isolated capability. + + // 3. If connection is not an HTTP/2 connection, request’s body is non-null, + // and request’s body’s source is null, then append (`Transfer-Encoding`, + // `chunked`) to request’s header list. + + // 4. Set timingInfo’s final network-request start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated + // capability. + + // 5. Set response to the result of making an HTTP request over connection + // using request with the following caveats: + + // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] + // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + + // - If request’s body is non-null, and request’s body’s source is null, + // then the user agent may have a buffer of up to 64 kibibytes and store + // a part of request’s body in that buffer. If the user agent reads from + // request’s body beyond that buffer’s size and the user agent needs to + // resend request, then instead return a network error. + + // - Set timingInfo’s final network-response start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated capability, + // immediately after the user agent’s HTTP parser receives the first byte + // of the response (e.g., frame header bytes for HTTP/2 or response status + // line for HTTP/1.x). + + // - Wait until all the headers are transmitted. + + // - Any responses whose status is in the range 100 to 199, inclusive, + // and is not 101, are to be ignored, except for the purposes of setting + // timingInfo’s final network-response start time above. + + // - If request’s header list contains `Transfer-Encoding`/`chunked` and + // response is transferred via HTTP/1.0 or older, then return a network + // error. + + // - If the HTTP request results in a TLS client certificate dialog, then: + + // 1. If request’s window is an environment settings object, make the + // dialog available in request’s window. + + // 2. Otherwise, return a network error. + + // To transmit request’s body body, run these steps: + let requestBody = null + // 1. If body is null and fetchParams’s process request end-of-body is + // non-null, then queue a fetch task given fetchParams’s process request + // end-of-body and fetchParams’s task destination. + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()) + } else if (request.body != null) { + // 2. Otherwise, if body is non-null: + + // 1. Let processBodyChunk given bytes be these steps: + const processBodyChunk = async function * (bytes) { + // 1. If the ongoing fetch is terminated, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. Run this step in parallel: transmit bytes. + yield bytes + + // 3. If fetchParams’s process request body is non-null, then run + // fetchParams’s process request body given bytes’s length. + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength) + } + + // 2. Let processEndOfBody be these steps: + const processEndOfBody = () => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If fetchParams’s process request end-of-body is non-null, + // then run fetchParams’s process request end-of-body. + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody() + } + } + + // 3. Let processBodyError given e be these steps: + const processBodyError = (e) => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. + if (e.name === 'AbortError') { + fetchParams.controller.abort() + } else { + fetchParams.controller.terminate(e) + } + } + + // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, + // processBodyError, and fetchParams’s task destination. + requestBody = (async function * () { + try { + for await (const bytes of request.body.stream) { + yield * processBodyChunk(bytes) + } + processEndOfBody() + } catch (err) { + processBodyError(err) + } + })() + } + + try { + // socket is only provided for websockets + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }) + + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }) + } else { + const iterator = body[Symbol.asyncIterator]() + fetchParams.controller.next = () => iterator.next() + + response = makeResponse({ status, statusText, headersList }) + } + } catch (err) { + // 10. If aborted, then: + if (err.name === 'AbortError') { + // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. + fetchParams.controller.connection.destroy() + + // 2. Return the appropriate network error for fetchParams. + return makeAppropriateNetworkError(fetchParams, err) + } + + return makeNetworkError(err) + } + + // 11. Let pullAlgorithm be an action that resumes the ongoing fetch + // if it is suspended. + const pullAlgorithm = () => { + fetchParams.controller.resume() + } + + // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s + // controller with reason, given reason. + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason) + } + + // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by + // the user agent. + // TODO + + // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object + // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. + // TODO + + // 15. Let stream be a new ReadableStream. + // 16. Set up stream with pullAlgorithm set to pullAlgorithm, + // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to + // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(63774).ReadableStream) + } + + const stream = new ReadableStream( + { + async start (controller) { + fetchParams.controller.controller = controller + }, + async pull (controller) { + await pullAlgorithm(controller) + }, + async cancel (reason) { + await cancelAlgorithm(reason) + } + }, + { + highWaterMark: 0, + size () { + return 1 + } + } + ) + + // 17. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. Set response’s body to a new body whose stream is stream. + response.body = { stream } + + // 2. If response is not a network error and request’s cache mode is + // not "no-store", then update response in httpCache for request. + // TODO + + // 3. If includeCredentials is true and the user agent is not configured + // to block cookies for request (see section 7 of [COOKIES]), then run the + // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on + // the value of each header whose name is a byte-case-insensitive match for + // `Set-Cookie` in response’s header list, if any, and request’s current URL. + // TODO + + // 18. If aborted, then: + // TODO + + // 19. Run these steps in parallel: + + // 1. Run these steps, but abort when fetchParams is canceled: + fetchParams.controller.on('terminated', onAborted) + fetchParams.controller.resume = async () => { + // 1. While true + while (true) { + // 1-3. See onData... + + // 4. Set bytes to the result of handling content codings given + // codings and bytes. + let bytes + let isFailure + try { + const { done, value } = await fetchParams.controller.next() + + if (isAborted(fetchParams)) { + break + } + + bytes = done ? undefined : value + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + // zlib doesn't like empty streams. + bytes = undefined + } else { + bytes = err + + // err may be propagated from the result of calling readablestream.cancel, + // which might not be an error. https://github.com/nodejs/undici/issues/2009 + isFailure = true + } + } + + if (bytes === undefined) { + // 2. Otherwise, if the bytes transmission for response’s message + // body is done normally and stream is readable, then close + // stream, finalize response for fetchParams and response, and + // abort these in-parallel steps. + readableStreamClose(fetchParams.controller.controller) + + finalizeResponse(fetchParams, response) + + return + } + + // 5. Increase timingInfo’s decoded body size by bytes’s length. + timingInfo.decodedBodySize += bytes?.byteLength ?? 0 + + // 6. If bytes is failure, then terminate fetchParams’s controller. + if (isFailure) { + fetchParams.controller.terminate(bytes) + return + } + + // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes + // into stream. + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)) + + // 8. If stream is errored, then terminate the ongoing fetch. + if (isErrored(stream)) { + fetchParams.controller.terminate() + return + } + + // 9. If stream doesn’t need more data ask the user agent to suspend + // the ongoing fetch. + if (!fetchParams.controller.controller.desiredSize) { + return + } + } + } + + // 2. If aborted, then: + function onAborted (reason) { + // 2. If fetchParams is aborted, then: + if (isAborted(fetchParams)) { + // 1. Set response’s aborted flag. + response.aborted = true + + // 2. If stream is readable, then error stream with the result of + // deserialize a serialized abort reason given fetchParams’s + // controller’s serialized abort reason and an + // implementation-defined realm. + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ) + } + } else { + // 3. Otherwise, if stream is readable, error stream with a TypeError. + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : undefined + })) + } + } + + // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. + // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. + fetchParams.controller.connection.destroy() + } + + // 20. Return response. + return response + + async function dispatch ({ body }) { + const url = requestCurrentURL(request) + /** @type {import('../..').Agent} */ + const agent = fetchParams.controller.dispatcher + + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : undefined + }, + { + body: null, + abort: null, + + onConnect (abort) { + // TODO (fix): Do we need connection here? + const { connection } = fetchParams.controller + + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')) + } else { + fetchParams.controller.on('terminated', abort) + this.abort = connection.abort = abort + } + }, + + onHeaders (status, headersList, resume, statusText) { + if (status < 200) { + return + } + + let codings = [] + let location = '' + + const headers = new Headers() + + // For H2, the headers are a plain JS object + // We distinguish between them and iterate accordingly + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()) + } else if (key.toLowerCase() === 'location') { + location = val + } + + headers[kHeadersList].append(key, val) + } + } else { + const keys = Object.keys(headersList) + for (const key of keys) { + const val = headersList[key] + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse() + } else if (key.toLowerCase() === 'location') { + location = val + } + + headers[kHeadersList].append(key, val) + } + } + + this.body = new Readable({ read: resume }) + + const decoders = [] + + const willFollow = request.redirect === 'follow' && + location && + redirectStatusSet.has(status) + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })) + } else if (coding === 'deflate') { + decoders.push(zlib.createInflate()) + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()) + } else { + decoders.length = 0 + break + } + } + } + + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length + ? pipeline(this.body, ...decoders, () => { }) + : this.body.on('error', () => {}) + }) + + return true + }, + + onData (chunk) { + if (fetchParams.controller.dump) { + return + } + + // 1. If one or more bytes have been transmitted from response’s + // message body, then: + + // 1. Let bytes be the transmitted bytes. + const bytes = chunk + + // 2. Let codings be the result of extracting header list values + // given `Content-Encoding` and response’s header list. + // See pullAlgorithm. + + // 3. Increase timingInfo’s encoded body size by bytes’s length. + timingInfo.encodedBodySize += bytes.byteLength + + // 4. See pullAlgorithm... + + return this.body.push(bytes) + }, + + onComplete () { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + fetchParams.controller.ended = true + + this.body.push(null) + }, + + onError (error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + this.body?.destroy(error) + + fetchParams.controller.terminate(error) + + reject(error) + }, + + onUpgrade (status, headersList, socket) { + if (status !== 101) { + return + } + + const headers = new Headers() + + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + + headers[kHeadersList].append(key, val) + } + + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }) + + return true + } + } + )) + } +} + +module.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming +} + + +/***/ }), + +/***/ 25194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* globals AbortController */ + + + +const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(8923) +const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(26349) +const { FinalizationRegistry } = __nccwpck_require__(13194)() +const util = __nccwpck_require__(3440) +const { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer, + normalizeMethodRecord +} = __nccwpck_require__(15523) +const { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex +} = __nccwpck_require__(87326) +const { kEnumerableProperty } = util +const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(89710) +const { webidl } = __nccwpck_require__(74222) +const { getGlobalOrigin } = __nccwpck_require__(75628) +const { URLSerializer } = __nccwpck_require__(94322) +const { kHeadersList, kConstruct } = __nccwpck_require__(36443) +const assert = __nccwpck_require__(42613) +const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(24434) + +let TransformStream = globalThis.TransformStream + +const kAbortController = Symbol('abortController') + +const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort) +}) + +// https://fetch.spec.whatwg.org/#request-class +class Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor (input, init = {}) { + if (input === kConstruct) { + return + } + + webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }) + + input = webidl.converters.RequestInfo(input) + init = webidl.converters.RequestInit(init) + + // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin () { + return this.baseUrl?.origin + }, + policyContainer: makePolicyContainer() + } + } + + // 1. Let request be null. + let request = null + + // 2. Let fallbackMode be null. + let fallbackMode = null + + // 3. Let baseURL be this’s relevant settings object’s API base URL. + const baseUrl = this[kRealm].settingsObject.baseUrl + + // 4. Let signal be null. + let signal = null + + // 5. If input is a string, then: + if (typeof input === 'string') { + // 1. Let parsedURL be the result of parsing input with baseURL. + // 2. If parsedURL is failure, then throw a TypeError. + let parsedURL + try { + parsedURL = new URL(input, baseUrl) + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }) + } + + // 3. If parsedURL includes credentials, then throw a TypeError. + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + 'Request cannot be constructed from a URL that includes credentials: ' + + input + ) + } + + // 4. Set request to a new request whose URL is parsedURL. + request = makeRequest({ urlList: [parsedURL] }) + + // 5. Set fallbackMode to "cors". + fallbackMode = 'cors' + } else { + // 6. Otherwise: + + // 7. Assert: input is a Request object. + assert(input instanceof Request) + + // 8. Set request to input’s request. + request = input[kState] + + // 9. Set signal to input’s signal. + signal = input[kSignal] + } + + // 7. Let origin be this’s relevant settings object’s origin. + const origin = this[kRealm].settingsObject.origin + + // 8. Let window be "client". + let window = 'client' + + // 9. If request’s window is an environment settings object and its origin + // is same origin with origin, then set window to request’s window. + if ( + request.window?.constructor?.name === 'EnvironmentSettingsObject' && + sameOrigin(request.window, origin) + ) { + window = request.window + } + + // 10. If init["window"] exists and is non-null, then throw a TypeError. + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`) + } + + // 11. If init["window"] exists, then set window to "no-window". + if ('window' in init) { + window = 'no-window' + } + + // 12. Set request to a new request with the following properties: + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request.urlList] + }) + + const initHasKey = Object.keys(init).length !== 0 + + // 13. If init is not empty, then: + if (initHasKey) { + // 1. If request’s mode is "navigate", then set it to "same-origin". + if (request.mode === 'navigate') { + request.mode = 'same-origin' + } + + // 2. Unset request’s reload-navigation flag. + request.reloadNavigation = false + + // 3. Unset request’s history-navigation flag. + request.historyNavigation = false + + // 4. Set request’s origin to "client". + request.origin = 'client' + + // 5. Set request’s referrer to "client" + request.referrer = 'client' + + // 6. Set request’s referrer policy to the empty string. + request.referrerPolicy = '' + + // 7. Set request’s URL to request’s current URL. + request.url = request.urlList[request.urlList.length - 1] + + // 8. Set request’s URL list to « request’s URL ». + request.urlList = [request.url] + } + + // 14. If init["referrer"] exists, then: + if (init.referrer !== undefined) { + // 1. Let referrer be init["referrer"]. + const referrer = init.referrer + + // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". + if (referrer === '') { + request.referrer = 'no-referrer' + } else { + // 1. Let parsedReferrer be the result of parsing referrer with + // baseURL. + // 2. If parsedReferrer is failure, then throw a TypeError. + let parsedReferrer + try { + parsedReferrer = new URL(referrer, baseUrl) + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) + } + + // 3. If one of the following is true + // - parsedReferrer’s scheme is "about" and path is the string "client" + // - parsedReferrer’s origin is not same origin with origin + // then set request’s referrer to "client". + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) + ) { + request.referrer = 'client' + } else { + // 4. Otherwise, set request’s referrer to parsedReferrer. + request.referrer = parsedReferrer + } + } + } + + // 15. If init["referrerPolicy"] exists, then set request’s referrer policy + // to it. + if (init.referrerPolicy !== undefined) { + request.referrerPolicy = init.referrerPolicy + } + + // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. + let mode + if (init.mode !== undefined) { + mode = init.mode + } else { + mode = fallbackMode + } + + // 17. If mode is "navigate", then throw a TypeError. + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }) + } + + // 18. If mode is non-null, set request’s mode to mode. + if (mode != null) { + request.mode = mode + } + + // 19. If init["credentials"] exists, then set request’s credentials mode + // to it. + if (init.credentials !== undefined) { + request.credentials = init.credentials + } + + // 18. If init["cache"] exists, then set request’s cache mode to it. + if (init.cache !== undefined) { + request.cache = init.cache + } + + // 21. If request’s cache mode is "only-if-cached" and request’s mode is + // not "same-origin", then throw a TypeError. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ) + } + + // 22. If init["redirect"] exists, then set request’s redirect mode to it. + if (init.redirect !== undefined) { + request.redirect = init.redirect + } + + // 23. If init["integrity"] exists, then set request’s integrity metadata to it. + if (init.integrity != null) { + request.integrity = String(init.integrity) + } + + // 24. If init["keepalive"] exists, then set request’s keepalive to it. + if (init.keepalive !== undefined) { + request.keepalive = Boolean(init.keepalive) + } + + // 25. If init["method"] exists, then: + if (init.method !== undefined) { + // 1. Let method be init["method"]. + let method = init.method + + // 2. If method is not a method or method is a forbidden method, then + // throw a TypeError. + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`) + } + + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw new TypeError(`'${method}' HTTP method is unsupported.`) + } + + // 3. Normalize method. + method = normalizeMethodRecord[method] ?? normalizeMethod(method) + + // 4. Set request’s method to method. + request.method = method + } + + // 26. If init["signal"] exists, then set signal to it. + if (init.signal !== undefined) { + signal = init.signal + } + + // 27. Set this’s request to request. + this[kState] = request + + // 28. Set this’s signal to a new AbortSignal object with this’s relevant + // Realm. + // TODO: could this be simplified with AbortSignal.any + // (https://dom.spec.whatwg.org/#dom-abortsignal-any) + const ac = new AbortController() + this[kSignal] = ac.signal + this[kSignal][kRealm] = this[kRealm] + + // 29. If signal is not null, then make this’s signal follow signal. + if (signal != null) { + if ( + !signal || + typeof signal.aborted !== 'boolean' || + typeof signal.addEventListener !== 'function' + ) { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ) + } + + if (signal.aborted) { + ac.abort(signal.reason) + } else { + // Keep a strong ref to ac while request object + // is alive. This is needed to prevent AbortController + // from being prematurely garbage collected. + // See, https://github.com/nodejs/undici/issues/1926. + this[kAbortController] = ac + + const acRef = new WeakRef(ac) + const abort = function () { + const ac = acRef.deref() + if (ac !== undefined) { + ac.abort(this.reason) + } + } + + // Third-party AbortControllers may not work with these. + // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. + try { + // If the max amount of listeners is equal to the default, increase it + // This is only available in node >= v19.9.0 + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal) + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(100, signal) + } + } catch {} + + util.addAbortListener(signal, abort) + requestFinalizer.register(ac, { signal, abort }) + } + } + + // 30. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is request’s header list and guard is + // "request". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kHeadersList] = request.headersList + this[kHeaders][kGuard] = 'request' + this[kHeaders][kRealm] = this[kRealm] + + // 31. If this’s request’s mode is "no-cors", then: + if (mode === 'no-cors') { + // 1. If this’s request’s method is not a CORS-safelisted method, + // then throw a TypeError. + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError( + `'${request.method} is unsupported in no-cors mode.` + ) + } + + // 2. Set this’s headers’s guard to "request-no-cors". + this[kHeaders][kGuard] = 'request-no-cors' + } + + // 32. If init is not empty, then: + if (initHasKey) { + /** @type {HeadersList} */ + const headersList = this[kHeaders][kHeadersList] + // 1. Let headers be a copy of this’s headers and its associated header + // list. + // 2. If init["headers"] exists, then set headers to init["headers"]. + const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList) + + // 3. Empty this’s headers’s header list. + headersList.clear() + + // 4. If headers is a Headers object, then for each header in its header + // list, append header’s name/header’s value to this’s headers. + if (headers instanceof HeadersList) { + for (const [key, val] of headers) { + headersList.append(key, val) + } + // Note: Copy the `set-cookie` meta-data. + headersList.cookies = headers.cookies + } else { + // 5. Otherwise, fill this’s headers with headers. + fillHeaders(this[kHeaders], headers) + } + } + + // 33. Let inputBody be input’s request’s body if input is a Request + // object; otherwise null. + const inputBody = input instanceof Request ? input[kState].body : null + + // 34. If either init["body"] exists and is non-null or inputBody is + // non-null, and request’s method is `GET` or `HEAD`, then throw a + // TypeError. + if ( + (init.body != null || inputBody != null) && + (request.method === 'GET' || request.method === 'HEAD') + ) { + throw new TypeError('Request with GET/HEAD method cannot have body.') + } + + // 35. Let initBody be null. + let initBody = null + + // 36. If init["body"] exists and is non-null, then: + if (init.body != null) { + // 1. Let Content-Type be null. + // 2. Set initBody and Content-Type to the result of extracting + // init["body"], with keepalive set to request’s keepalive. + const [extractedBody, contentType] = extractBody( + init.body, + request.keepalive + ) + initBody = extractedBody + + // 3, If Content-Type is non-null and this’s headers’s header list does + // not contain `Content-Type`, then append `Content-Type`/Content-Type to + // this’s headers. + if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { + this[kHeaders].append('content-type', contentType) + } + } + + // 37. Let inputOrInitBody be initBody if it is non-null; otherwise + // inputBody. + const inputOrInitBody = initBody ?? inputBody + + // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is + // null, then: + if (inputOrInitBody != null && inputOrInitBody.source == null) { + // 1. If initBody is non-null and init["duplex"] does not exist, + // then throw a TypeError. + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.') + } + + // 2. If this’s request’s mode is neither "same-origin" nor "cors", + // then throw a TypeError. + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ) + } + + // 3. Set this’s request’s use-CORS-preflight flag. + request.useCORSPreflightFlag = true + } + + // 39. Let finalBody be inputOrInitBody. + let finalBody = inputOrInitBody + + // 40. If initBody is null and inputBody is non-null, then: + if (initBody == null && inputBody != null) { + // 1. If input is unusable, then throw a TypeError. + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + 'Cannot construct a Request with a Request object that has already been used.' + ) + } + + // 2. Set finalBody to the result of creating a proxy for inputBody. + if (!TransformStream) { + TransformStream = (__nccwpck_require__(63774).TransformStream) + } + + // https://streams.spec.whatwg.org/#readablestream-create-a-proxy + const identityTransform = new TransformStream() + inputBody.stream.pipeThrough(identityTransform) + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + } + } + + // 41. Set this’s request’s body to finalBody. + this[kState].body = finalBody + } + + // Returns request’s HTTP method, which is "GET" by default. + get method () { + webidl.brandCheck(this, Request) + + // The method getter steps are to return this’s request’s method. + return this[kState].method + } + + // Returns the URL of request as a string. + get url () { + webidl.brandCheck(this, Request) + + // The url getter steps are to return this’s request’s URL, serialized. + return URLSerializer(this[kState].url) + } + + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers () { + webidl.brandCheck(this, Request) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination () { + webidl.brandCheck(this, Request) + + // The destination getter are to return this’s request’s destination. + return this[kState].destination + } + + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer () { + webidl.brandCheck(this, Request) + + // 1. If this’s request’s referrer is "no-referrer", then return the + // empty string. + if (this[kState].referrer === 'no-referrer') { + return '' + } + + // 2. If this’s request’s referrer is "client", then return + // "about:client". + if (this[kState].referrer === 'client') { + return 'about:client' + } + + // Return this’s request’s referrer, serialized. + return this[kState].referrer.toString() + } + + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy () { + webidl.brandCheck(this, Request) + + // The referrerPolicy getter steps are to return this’s request’s referrer policy. + return this[kState].referrerPolicy + } + + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode () { + webidl.brandCheck(this, Request) + + // The mode getter steps are to return this’s request’s mode. + return this[kState].mode + } + + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials () { + // The credentials getter steps are to return this’s request’s credentials mode. + return this[kState].credentials + } + + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache () { + webidl.brandCheck(this, Request) + + // The cache getter steps are to return this’s request’s cache mode. + return this[kState].cache + } + + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect () { + webidl.brandCheck(this, Request) + + // The redirect getter steps are to return this’s request’s redirect mode. + return this[kState].redirect + } + + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity () { + webidl.brandCheck(this, Request) + + // The integrity getter steps are to return this’s request’s integrity + // metadata. + return this[kState].integrity + } + + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive () { + webidl.brandCheck(this, Request) + + // The keepalive getter steps are to return this’s request’s keepalive. + return this[kState].keepalive + } + + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation () { + webidl.brandCheck(this, Request) + + // The isReloadNavigation getter steps are to return true if this’s + // request’s reload-navigation flag is set; otherwise false. + return this[kState].reloadNavigation + } + + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation () { + webidl.brandCheck(this, Request) + + // The isHistoryNavigation getter steps are to return true if this’s request’s + // history-navigation flag is set; otherwise false. + return this[kState].historyNavigation + } + + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal () { + webidl.brandCheck(this, Request) + + // The signal getter steps are to return this’s signal. + return this[kSignal] + } + + get body () { + webidl.brandCheck(this, Request) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Request) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + get duplex () { + webidl.brandCheck(this, Request) + + return 'half' + } + + // Returns a clone of request. + clone () { + webidl.brandCheck(this, Request) + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || this.body?.locked) { + throw new TypeError('unusable') + } + + // 2. Let clonedRequest be the result of cloning this’s request. + const clonedRequest = cloneRequest(this[kState]) + + // 3. Let clonedRequestObject be the result of creating a Request object, + // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. + const clonedRequestObject = new Request(kConstruct) + clonedRequestObject[kState] = clonedRequest + clonedRequestObject[kRealm] = this[kRealm] + clonedRequestObject[kHeaders] = new Headers(kConstruct) + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm] + + // 4. Make clonedRequestObject’s signal follow this’s signal. + const ac = new AbortController() + if (this.signal.aborted) { + ac.abort(this.signal.reason) + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason) + } + ) + } + clonedRequestObject[kSignal] = ac.signal + + // 4. Return clonedRequestObject. + return clonedRequestObject + } +} + +mixinBody(Request) + +function makeRequest (init) { + // https://fetch.spec.whatwg.org/#requests + const request = { + method: 'GET', + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: '', + window: 'client', + keepalive: false, + serviceWorkers: 'all', + initiator: '', + destination: '', + priority: null, + origin: 'client', + policyContainer: 'client', + referrer: 'client', + referrerPolicy: '', + mode: 'no-cors', + useCORSPreflightFlag: false, + credentials: 'same-origin', + useCredentials: false, + cache: 'default', + redirect: 'follow', + integrity: '', + cryptoGraphicsNonceMetadata: '', + parserMetadata: '', + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: 'basic', + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList() + } + request.url = request.urlList[0] + return request +} + +// https://fetch.spec.whatwg.org/#concept-request-clone +function cloneRequest (request) { + // To clone a request request, run these steps: + + // 1. Let newRequest be a copy of request, except for its body. + const newRequest = makeRequest({ ...request, body: null }) + + // 2. If request’s body is non-null, set newRequest’s body to the + // result of cloning request’s body. + if (request.body != null) { + newRequest.body = cloneBody(request.body) + } + + // 3. Return newRequest. + return newRequest +} + +Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true + } +}) + +webidl.converters.Request = webidl.interfaceConverter( + Request +) + +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (V instanceof Request) { + return webidl.converters.Request(V) + } + + return webidl.converters.USVString(V) +} + +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) + +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } +]) + +module.exports = { Request, makeRequest } + + +/***/ }), + +/***/ 48676: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Headers, HeadersList, fill } = __nccwpck_require__(26349) +const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(8923) +const util = __nccwpck_require__(3440) +const { kEnumerableProperty } = util +const { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode +} = __nccwpck_require__(15523) +const { + redirectStatusSet, + nullBodyStatus, + DOMException +} = __nccwpck_require__(87326) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(89710) +const { webidl } = __nccwpck_require__(74222) +const { FormData } = __nccwpck_require__(43073) +const { getGlobalOrigin } = __nccwpck_require__(75628) +const { URLSerializer } = __nccwpck_require__(94322) +const { kHeadersList, kConstruct } = __nccwpck_require__(36443) +const assert = __nccwpck_require__(42613) +const { types } = __nccwpck_require__(39023) + +const ReadableStream = globalThis.ReadableStream || (__nccwpck_require__(63774).ReadableStream) +const textEncoder = new TextEncoder('utf-8') + +// https://fetch.spec.whatwg.org/#response-class +class Response { + // Creates network error Response. + static error () { + // TODO + const relevantRealm = { settingsObject: {} } + + // The static error() method steps are to return the result of creating a + // Response object, given a new network error, "immutable", and this’s + // relevant Realm. + const responseObject = new Response() + responseObject[kState] = makeNetworkError() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response-json + static json (data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }) + + if (init !== null) { + init = webidl.converters.ResponseInit(init) + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ) + + // 2. Let body be the result of extracting bytes. + const body = extractBody(bytes) + + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + const relevantRealm = { settingsObject: {} } + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'response' + responseObject[kHeaders][kRealm] = relevantRealm + + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) + + // 5. Return responseObject. + return responseObject + } + + // Creates a redirect Response that redirects to url with status status. + static redirect (url, status = 302) { + const relevantRealm = { settingsObject: {} } + + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }) + + url = webidl.converters.USVString(url) + status = webidl.converters['unsigned short'](status) + + // 1. Let parsedURL be the result of parsing url with current settings + // object’s API base URL. + // 2. If parsedURL is failure, then throw a TypeError. + // TODO: base-URL? + let parsedURL + try { + parsedURL = new URL(url, getGlobalOrigin()) + } catch (err) { + throw Object.assign(new TypeError('Failed to parse URL from ' + url), { + cause: err + }) + } + + // 3. If status is not a redirect status, then throw a RangeError. + if (!redirectStatusSet.has(status)) { + throw new RangeError('Invalid status code ' + status) + } + + // 4. Let responseObject be the result of creating a Response object, + // given a new response, "immutable", and this’s relevant Realm. + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + + // 5. Set responseObject’s response’s status to status. + responseObject[kState].status = status + + // 6. Let value be parsedURL, serialized and isomorphic encoded. + const value = isomorphicEncode(URLSerializer(parsedURL)) + + // 7. Append `Location`/value to responseObject’s response’s header list. + responseObject[kState].headersList.append('location', value) + + // 8. Return responseObject. + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response + constructor (body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body) + } + + init = webidl.converters.ResponseInit(init) + + // TODO + this[kRealm] = { settingsObject: {} } + + // 1. Set this’s response to a new response. + this[kState] = makeResponse({}) + + // 2. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is this’s response’s header list and guard + // is "response". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kGuard] = 'response' + this[kHeaders][kHeadersList] = this[kState].headersList + this[kHeaders][kRealm] = this[kRealm] + + // 3. Let bodyWithType be null. + let bodyWithType = null + + // 4. If body is non-null, then set bodyWithType to the result of extracting body. + if (body != null) { + const [extractedBody, type] = extractBody(body) + bodyWithType = { body: extractedBody, type } + } + + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType) + } + + // Returns response’s type, e.g., "cors". + get type () { + webidl.brandCheck(this, Response) + + // The type getter steps are to return this’s response’s type. + return this[kState].type + } + + // Returns response’s URL, if it has one; otherwise the empty string. + get url () { + webidl.brandCheck(this, Response) + + const urlList = this[kState].urlList + + // The url getter steps are to return the empty string if this’s + // response’s URL is null; otherwise this’s response’s URL, + // serialized with exclude fragment set to true. + const url = urlList[urlList.length - 1] ?? null + + if (url === null) { + return '' + } + + return URLSerializer(url, true) + } + + // Returns whether response was obtained through a redirect. + get redirected () { + webidl.brandCheck(this, Response) + + // The redirected getter steps are to return true if this’s response’s URL + // list has more than one item; otherwise false. + return this[kState].urlList.length > 1 + } + + // Returns response’s status. + get status () { + webidl.brandCheck(this, Response) + + // The status getter steps are to return this’s response’s status. + return this[kState].status + } + + // Returns whether response’s status is an ok status. + get ok () { + webidl.brandCheck(this, Response) + + // The ok getter steps are to return true if this’s response’s status is an + // ok status; otherwise false. + return this[kState].status >= 200 && this[kState].status <= 299 + } + + // Returns response’s status message. + get statusText () { + webidl.brandCheck(this, Response) + + // The statusText getter steps are to return this’s response’s status + // message. + return this[kState].statusText + } + + // Returns response’s headers as Headers. + get headers () { + webidl.brandCheck(this, Response) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + get body () { + webidl.brandCheck(this, Response) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Response) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + // Returns a clone of response. + clone () { + webidl.brandCheck(this, Response) + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || (this.body && this.body.locked)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }) + } + + // 2. Let clonedResponse be the result of cloning this’s response. + const clonedResponse = cloneResponse(this[kState]) + + // 3. Return the result of creating a Response object, given + // clonedResponse, this’s headers’s guard, and this’s relevant Realm. + const clonedResponseObject = new Response() + clonedResponseObject[kState] = clonedResponse + clonedResponseObject[kRealm] = this[kRealm] + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm] + + return clonedResponseObject + } +} + +mixinBody(Response) + +Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } +}) + +Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty +}) + +// https://fetch.spec.whatwg.org/#concept-response-clone +function cloneResponse (response) { + // To clone a response response, run these steps: + + // 1. If response is a filtered response, then return a new identical + // filtered response whose internal response is a clone of response’s + // internal response. + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ) + } + + // 2. Let newResponse be a copy of response, except for its body. + const newResponse = makeResponse({ ...response, body: null }) + + // 3. If response’s body is non-null, then set newResponse’s body to the + // result of cloning response’s body. + if (response.body != null) { + newResponse.body = cloneBody(response.body) + } + + // 4. Return newResponse. + return newResponse +} + +function makeResponse (init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + } +} + +function makeNetworkError (reason) { + const isError = isErrorLike(reason) + return makeResponse({ + type: 'error', + status: 0, + error: isError + ? reason + : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }) +} + +function makeFilteredResponse (response, state) { + state = { + internalResponse: response, + ...state + } + + return new Proxy(response, { + get (target, p) { + return p in state ? state[p] : target[p] + }, + set (target, p, value) { + assert(!(p in state)) + target[p] = value + return true + } + }) +} + +// https://fetch.spec.whatwg.org/#concept-filtered-response +function filterResponse (response, type) { + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (type === 'basic') { + // A basic filtered response is a filtered response whose type is "basic" + // and header list excludes any headers in internal response’s header list + // whose name is a forbidden response-header name. + + // Note: undici does not implement forbidden response-header names + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }) + } else if (type === 'cors') { + // A CORS filtered response is a filtered response whose type is "cors" + // and header list excludes any headers in internal response’s header + // list whose name is not a CORS-safelisted response-header name, given + // internal response’s CORS-exposed header-name list. + + // Note: undici does not implement CORS-safelisted response-header names + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }) + } else if (type === 'opaque') { + // An opaque filtered response is a filtered response whose type is + // "opaque", URL list is the empty list, status is 0, status message + // is the empty byte sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }) + } else if (type === 'opaqueredirect') { + // An opaque-redirect filtered response is a filtered response whose type + // is "opaqueredirect", status is 0, status message is the empty byte + // sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }) + } else { + assert(false) + } +} + +// https://fetch.spec.whatwg.org/#appropriate-network-error +function makeAppropriateNetworkError (fetchParams, err = null) { + // 1. Assert: fetchParams is canceled. + assert(isCancelled(fetchParams)) + + // 2. Return an aborted network error if fetchParams is aborted; + // otherwise return a network error. + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })) +} + +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse (response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') + } + + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText') + } + } + + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status + } + + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText + } + + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers) + } + + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code ' + response.status + }) + } + + // 2. Set response's body to body's body. + response[kState].body = body.body + + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.contains('Content-Type')) { + response[kState].headersList.append('content-type', body.type) + } + } +} + +webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream +) + +webidl.converters.FormData = webidl.interfaceConverter( + FormData +) + +webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams +) + +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V) + } + + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }) + } + + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V) + } + + return webidl.converters.DOMString(V) +} + +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V) + } + + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V?.[Symbol.asyncIterator]) { + return V + } + + return webidl.converters.XMLHttpRequestBodyInit(V) +} + +webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + } +]) + +module.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse +} + + +/***/ }), + +/***/ 89710: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kGuard: Symbol('guard'), + kRealm: Symbol('realm') +} + + +/***/ }), + +/***/ 15523: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = __nccwpck_require__(87326) +const { getGlobalOrigin } = __nccwpck_require__(75628) +const { performance } = __nccwpck_require__(82987) +const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3440) +const assert = __nccwpck_require__(42613) +const { isUint8Array } = __nccwpck_require__(98253) + +let supportedHashes = [] + +// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable +/** @type {import('crypto')|undefined} */ +let crypto + +try { + crypto = __nccwpck_require__(76982) + const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] + supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) +/* c8 ignore next 3 */ +} catch { +} + +function responseURL (response) { + // https://fetch.spec.whatwg.org/#responses + // A response has an associated URL. It is a pointer to the last URL + // in response’s URL list and null if response’s URL list is empty. + const urlList = response.urlList + const length = urlList.length + return length === 0 ? null : urlList[length - 1].toString() +} + +// https://fetch.spec.whatwg.org/#concept-response-location-url +function responseLocationURL (response, requestFragment) { + // 1. If response’s status is not a redirect status, then return null. + if (!redirectStatusSet.has(response.status)) { + return null + } + + // 2. Let location be the result of extracting header list values given + // `Location` and response’s header list. + let location = response.headersList.get('location') + + // 3. If location is a header value, then set location to the result of + // parsing location with response’s URL. + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)) + } + + // 4. If location is a URL whose fragment is null, then set location’s + // fragment to requestFragment. + if (location && !location.hash) { + location.hash = requestFragment + } + + // 5. Return location. + return location +} + +/** @returns {URL} */ +function requestCurrentURL (request) { + return request.urlList[request.urlList.length - 1] +} + +function requestBadPort (request) { + // 1. Let url be request’s current URL. + const url = requestCurrentURL(request) + + // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, + // then return blocked. + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked' + } + + // 3. Return allowed. + return 'allowed' +} + +function isErrorLike (object) { + return object instanceof Error || ( + object?.constructor?.name === 'Error' || + object?.constructor?.name === 'DOMException' + ) +} + +// Check whether |statusText| is a ByteString and +// matches the Reason-Phrase token production. +// RFC 2616: https://tools.ietf.org/html/rfc2616 +// RFC 7230: https://tools.ietf.org/html/rfc7230 +// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" +// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 +function isValidReasonPhrase (statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i) + if ( + !( + ( + c === 0x09 || // HTAB + (c >= 0x20 && c <= 0x7e) || // SP / VCHAR + (c >= 0x80 && c <= 0xff) + ) // obs-text + ) + ) { + return false + } + } + return true +} + +/** + * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 + * @param {number} c + */ +function isTokenCharCode (c) { + switch (c) { + case 0x22: + case 0x28: + case 0x29: + case 0x2c: + case 0x2f: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x40: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x7b: + case 0x7d: + // DQUOTE and "(),/:;<=>?@[\]{}" + return false + default: + // VCHAR %x21-7E + return c >= 0x21 && c <= 0x7e + } +} + +/** + * @param {string} characters + */ +function isValidHTTPToken (characters) { + if (characters.length === 0) { + return false + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false + } + } + return true +} + +/** + * @see https://fetch.spec.whatwg.org/#header-name + * @param {string} potentialValue + */ +function isValidHeaderName (potentialValue) { + return isValidHTTPToken(potentialValue) +} + +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue (potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + if ( + potentialValue.startsWith('\t') || + potentialValue.startsWith(' ') || + potentialValue.endsWith('\t') || + potentialValue.endsWith(' ') + ) { + return false + } + + if ( + potentialValue.includes('\0') || + potentialValue.includes('\r') || + potentialValue.includes('\n') + ) { + return false + } + + return true +} + +// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect +function setRequestReferrerPolicyOnRedirect (request, actualResponse) { + // Given a request request and a response actualResponse, this algorithm + // updates request’s referrer policy according to the Referrer-Policy + // header (if any) in actualResponse. + + // 1. Let policy be the result of executing § 8.1 Parse a referrer policy + // from a Referrer-Policy header on actualResponse. + + // 8.1 Parse a referrer policy from a Referrer-Policy header + // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. + const { headersList } = actualResponse + // 2. Let policy be the empty string. + // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. + // 4. Return policy. + const policyHeader = (headersList.get('referrer-policy') ?? '').split(',') + + // Note: As the referrer-policy can contain multiple policies + // separated by comma, we need to loop through all of them + // and pick the first valid one. + // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy + let policy = '' + if (policyHeader.length > 0) { + // The right-most policy takes precedence. + // The left-most policy is the fallback. + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim() + if (referrerPolicyTokens.has(token)) { + policy = token + break + } + } + } + + // 2. If policy is not the empty string, then set request’s referrer policy to policy. + if (policy !== '') { + request.referrerPolicy = policy + } +} + +// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check +function crossOriginResourcePolicyCheck () { + // TODO + return 'allowed' +} + +// https://fetch.spec.whatwg.org/#concept-cors-check +function corsCheck () { + // TODO + return 'success' +} + +// https://fetch.spec.whatwg.org/#concept-tao-check +function TAOCheck () { + // TODO + return 'success' +} + +function appendFetchMetadata (httpRequest) { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + + // 1. Assert: r’s url is a potentially trustworthy URL. + // TODO + + // 2. Let header be a Structured Header whose value is a token. + let header = null + + // 3. Set header’s value to r’s mode. + header = httpRequest.mode + + // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. + httpRequest.headersList.set('sec-fetch-mode', header) + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header + // TODO +} + +// https://fetch.spec.whatwg.org/#append-a-request-origin-header +function appendRequestOriginHeader (request) { + // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. + let serializedOrigin = request.origin + + // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin) + } + + // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + // 1. Switch on request’s referrer policy: + switch (request.referrerPolicy) { + case 'no-referrer': + // Set serializedOrigin to `null`. + serializedOrigin = null + break + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null + } + break + case 'same-origin': + // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null + } + break + default: + // Do nothing. + } + + if (serializedOrigin) { + // 2. Append (`Origin`, serializedOrigin) to request’s header list. + request.headersList.append('origin', serializedOrigin) + } + } +} + +function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { + // TODO + return performance.now() +} + +// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info +function createOpaqueTimingInfo (timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#policy-container +function makePolicyContainer () { + // Note: the fetch spec doesn't make use of embedder policy or CSP list + return { + referrerPolicy: 'strict-origin-when-cross-origin' + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container +function clonePolicyContainer (policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + } +} + +// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer +function determineRequestsReferrer (request) { + // 1. Let policy be request's referrer policy. + const policy = request.referrerPolicy + + // Note: policy cannot (shouldn't) be null or an empty string. + assert(policy) + + // 2. Let environment be request’s client. + + let referrerSource = null + + // 3. Switch on request’s referrer: + if (request.referrer === 'client') { + // Note: node isn't a browser and doesn't implement document/iframes, + // so we bypass this step and replace it with our own. + + const globalOrigin = getGlobalOrigin() + + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer' + } + + // note: we need to clone it as it's mutated + referrerSource = new URL(globalOrigin) + } else if (request.referrer instanceof URL) { + // Let referrerSource be request’s referrer. + referrerSource = request.referrer + } + + // 4. Let request’s referrerURL be the result of stripping referrerSource for + // use as a referrer. + let referrerURL = stripURLForReferrer(referrerSource) + + // 5. Let referrerOrigin be the result of stripping referrerSource for use as + // a referrer, with the origin-only flag set to true. + const referrerOrigin = stripURLForReferrer(referrerSource, true) + + // 6. If the result of serializing referrerURL is a string whose length is + // greater than 4096, set referrerURL to referrerOrigin. + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin + } + + const areSameOrigin = sameOrigin(request, referrerURL) + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && + !isURLPotentiallyTrustworthy(request.url) + + // 8. Execute the switch statements corresponding to the value of policy: + switch (policy) { + case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true) + case 'unsafe-url': return referrerURL + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer' + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request) + + // 1. If the origin of referrerURL and the origin of request’s current + // URL are the same, then return referrerURL. + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL + } + + // 2. If referrerURL is a potentially trustworthy URL and request’s + // current URL is not a potentially trustworthy URL, then return no + // referrer. + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer' + } + + // 3. Return referrerOrigin. + return referrerOrigin + } + case 'strict-origin': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + case 'no-referrer-when-downgrade': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + + default: // eslint-disable-line + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin + } +} + +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url + * @param {URL} url + * @param {boolean|undefined} originOnly + */ +function stripURLForReferrer (url, originOnly) { + // 1. Assert: url is a URL. + assert(url instanceof URL) + + // 2. If url’s scheme is a local scheme, then return no referrer. + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer' + } + + // 3. Set url’s username to the empty string. + url.username = '' + + // 4. Set url’s password to the empty string. + url.password = '' + + // 5. Set url’s fragment to null. + url.hash = '' + + // 6. If the origin-only flag is true, then: + if (originOnly) { + // 1. Set url’s path to « the empty string ». + url.pathname = '' + + // 2. Set url’s query to null. + url.search = '' + } + + // 7. Return url. + return url +} + +function isURLPotentiallyTrustworthy (url) { + if (!(url instanceof URL)) { + return false + } + + // If child of about, return true + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true + } + + // If scheme is data, return true + if (url.protocol === 'data:') return true + + // If file, return true + if (url.protocol === 'file:') return true + + return isOriginPotentiallyTrustworthy(url.origin) + + function isOriginPotentiallyTrustworthy (origin) { + // If origin is explicitly null, return false + if (origin == null || origin === 'null') return false + + const originAsURL = new URL(origin) + + // If secure, return true + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true + } + + // If localhost or variants, return true + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) || + (originAsURL.hostname.endsWith('.localhost'))) { + return true + } + + // If any other, return false + return false + } +} + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist + * @param {Uint8Array} bytes + * @param {string} metadataList + */ +function bytesMatch (bytes, metadataList) { + // If node is not built with OpenSSL support, we cannot check + // a request's integrity, so allow it by default (the spec will + // allow requests if an invalid hash is given, as precedence). + /* istanbul ignore if: only if node is built with --without-ssl */ + if (crypto === undefined) { + return true + } + + // 1. Let parsedMetadata be the result of parsing metadataList. + const parsedMetadata = parseMetadata(metadataList) + + // 2. If parsedMetadata is no metadata, return true. + if (parsedMetadata === 'no metadata') { + return true + } + + // 3. If response is not eligible for integrity validation, return false. + // TODO + + // 4. If parsedMetadata is the empty set, return true. + if (parsedMetadata.length === 0) { + return true + } + + // 5. Let metadata be the result of getting the strongest + // metadata from parsedMetadata. + const strongest = getStrongestMetadata(parsedMetadata) + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) + + // 6. For each item in metadata: + for (const item of metadata) { + // 1. Let algorithm be the alg component of item. + const algorithm = item.algo + + // 2. Let expectedValue be the val component of item. + const expectedValue = item.hash + + // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e + // "be liberal with padding". This is annoying, and it's not even in the spec. + + // 3. Let actualValue be the result of applying algorithm to bytes. + let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') + + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2) + } else { + actualValue = actualValue.slice(0, -1) + } + } + + // 4. If actualValue is a case-sensitive match for expectedValue, + // return true. + if (compareBase64Mixed(actualValue, expectedValue)) { + return true + } + } + + // 7. Return false. + return false +} + +// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options +// https://www.w3.org/TR/CSP2/#source-list-syntax +// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 +const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + * @param {string} metadata + */ +function parseMetadata (metadata) { + // 1. Let result be the empty set. + /** @type {{ algo: string, hash: string }[]} */ + const result = [] + + // 2. Let empty be equal to true. + let empty = true + + // 3. For each token returned by splitting metadata on spaces: + for (const token of metadata.split(' ')) { + // 1. Set empty to false. + empty = false + + // 2. Parse token as a hash-with-options. + const parsedToken = parseHashWithOptions.exec(token) + + // 3. If token does not parse, continue to the next token. + if ( + parsedToken === null || + parsedToken.groups === undefined || + parsedToken.groups.algo === undefined + ) { + // Note: Chromium blocks the request at this point, but Firefox + // gives a warning that an invalid integrity was given. The + // correct behavior is to ignore these, and subsequently not + // check the integrity of the resource. + continue + } + + // 4. Let algorithm be the hash-algo component of token. + const algorithm = parsedToken.groups.algo.toLowerCase() + + // 5. If algorithm is a hash function recognized by the user + // agent, add the parsed token to result. + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups) + } + } + + // 4. Return no metadata if empty is true, otherwise return result. + if (empty === true) { + return 'no metadata' + } + + return result +} + +/** + * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList + */ +function getStrongestMetadata (metadataList) { + // Let algorithm be the algo component of the first item in metadataList. + // Can be sha256 + let algorithm = metadataList[0].algo + // If the algorithm is sha512, then it is the strongest + // and we can return immediately + if (algorithm[3] === '5') { + return algorithm + } + + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i] + // If the algorithm is sha512, then it is the strongest + // and we can break the loop immediately + if (metadata.algo[3] === '5') { + algorithm = 'sha512' + break + // If the algorithm is sha384, then a potential sha256 or sha384 is ignored + } else if (algorithm[3] === '3') { + continue + // algorithm is sha256, check if algorithm is sha384 and if so, set it as + // the strongest + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384' + } + } + return algorithm +} + +function filterMetadataListByAlgorithm (metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList + } + + let pos = 0 + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i] + } + } + + metadataList.length = pos + + return metadataList +} + +/** + * Compares two base64 strings, allowing for base64url + * in the second string. + * +* @param {string} actualValue always base64 + * @param {string} expectedValue base64 or base64url + * @returns {boolean} + */ +function compareBase64Mixed (actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false + } + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if ( + (actualValue[i] === '+' && expectedValue[i] === '-') || + (actualValue[i] === '/' && expectedValue[i] === '_') + ) { + continue + } + return false + } + } + + return true +} + +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request +function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { + // TODO +} + +/** + * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} + * @param {URL} A + * @param {URL} B + */ +function sameOrigin (A, B) { + // 1. If A and B are the same opaque origin, then return true. + if (A.origin === B.origin && A.origin === 'null') { + return true + } + + // 2. If A and B are both tuple origins and their schemes, + // hosts, and port are identical, then return true. + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true + } + + // 3. Return false. + return false +} + +function createDeferredPromise () { + let res + let rej + const promise = new Promise((resolve, reject) => { + res = resolve + rej = reject + }) + + return { promise, resolve: res, reject: rej } +} + +function isAborted (fetchParams) { + return fetchParams.controller.state === 'aborted' +} + +function isCancelled (fetchParams) { + return fetchParams.controller.state === 'aborted' || + fetchParams.controller.state === 'terminated' +} + +const normalizeMethodRecord = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(normalizeMethodRecord, null) + +/** + * @see https://fetch.spec.whatwg.org/#concept-method-normalize + * @param {string} method + */ +function normalizeMethod (method) { + return normalizeMethodRecord[method.toLowerCase()] ?? method +} + +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString (value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + const result = JSON.stringify(value) + + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable') + } + + // 3. Assert: result is a string. + assert(typeof result === 'string') + + // 4. Return result. + return result +} + +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {() => unknown[]} iterator + * @param {string} name name of the instance + * @param {'key'|'value'|'key+value'} kind + */ +function makeIterator (iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + } + + const i = { + next () { + // 1. Let interface be the interface for which the iterator prototype object exists. + + // 2. Let thisValue be the this value. + + // 3. Let object be ? ToObject(thisValue). + + // 4. If object is a platform object, then perform a security + // check, passing: + + // 5. If object is not a default iterator object for interface, + // then throw a TypeError. + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ) + } + + // 6. Let index be object’s index. + // 7. Let kind be object’s kind. + // 8. Let values be object’s target's value pairs to iterate over. + const { index, kind, target } = object + const values = target() + + // 9. Let len be the length of values. + const len = values.length + + // 10. If index is greater than or equal to len, then return + // CreateIterResultObject(undefined, true). + if (index >= len) { + return { value: undefined, done: true } + } + + // 11. Let pair be the entry in values at index index. + const pair = values[index] + + // 12. Set object’s index to index + 1. + object.index = index + 1 + + // 13. Return the iterator result for pair and kind. + return iteratorResult(pair, kind) + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + } + + // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. + Object.setPrototypeOf(i, esIteratorPrototype) + // esIteratorPrototype needs to be the prototype of i + // which is the prototype of an empty object. Yes, it's confusing. + return Object.setPrototypeOf({}, i) +} + +// https://webidl.spec.whatwg.org/#iterator-result +function iteratorResult (pair, kind) { + let result + + // 1. Let result be a value determined by the value of kind: + switch (kind) { + case 'key': { + // 1. Let idlKey be pair’s key. + // 2. Let key be the result of converting idlKey to an + // ECMAScript value. + // 3. result is key. + result = pair[0] + break + } + case 'value': { + // 1. Let idlValue be pair’s value. + // 2. Let value be the result of converting idlValue to + // an ECMAScript value. + // 3. result is value. + result = pair[1] + break + } + case 'key+value': { + // 1. Let idlKey be pair’s key. + // 2. Let idlValue be pair’s value. + // 3. Let key be the result of converting idlKey to an + // ECMAScript value. + // 4. Let value be the result of converting idlValue to + // an ECMAScript value. + // 5. Let array be ! ArrayCreate(2). + // 6. Call ! CreateDataProperty(array, "0", key). + // 7. Call ! CreateDataProperty(array, "1", value). + // 8. result is array. + result = pair + break + } + } + + // 2. Return CreateIterResultObject(result, false). + return { value: result, done: false } +} + +/** + * @see https://fetch.spec.whatwg.org/#body-fully-read + */ +async function fullyReadBody (body, processBody, processBodyError) { + // 1. If taskDestination is null, then set taskDestination to + // the result of starting a new parallel queue. + + // 2. Let successSteps given a byte sequence bytes be to queue a + // fetch task to run processBody given bytes, with taskDestination. + const successSteps = processBody + + // 3. Let errorSteps be to queue a fetch task to run processBodyError, + // with taskDestination. + const errorSteps = processBodyError + + // 4. Let reader be the result of getting a reader for body’s stream. + // If that threw an exception, then run errorSteps with that + // exception and return. + let reader + + try { + reader = body.stream.getReader() + } catch (e) { + errorSteps(e) + return + } + + // 5. Read all bytes from reader, given successSteps and errorSteps. + try { + const result = await readAllBytes(reader) + successSteps(result) + } catch (e) { + errorSteps(e) + } +} + +/** @type {ReadableStream} */ +let ReadableStream = globalThis.ReadableStream + +function isReadableStreamLike (stream) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(63774).ReadableStream) + } + + return stream instanceof ReadableStream || ( + stream[Symbol.toStringTag] === 'ReadableStream' && + typeof stream.tee === 'function' + ) +} + +const MAXIMUM_ARGUMENT_LENGTH = 65535 + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-decode + * @param {number[]|Uint8Array} input + */ +function isomorphicDecode (input) { + // 1. To isomorphic decode a byte sequence input, return a string whose code point + // length is equal to input’s length and whose code points have the same values + // as the values of input’s bytes, in the same order. + + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input) + } + + return input.reduce((previous, current) => previous + String.fromCharCode(current), '') +} + +/** + * @param {ReadableStreamController<Uint8Array>} controller + */ +function readableStreamClose (controller) { + try { + controller.close() + } catch (err) { + // TODO: add comment explaining why this error occurs. + if (!err.message.includes('Controller is already closed')) { + throw err + } + } +} + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-encode + * @param {string} input + */ +function isomorphicEncode (input) { + // 1. Assert: input contains no code points greater than U+00FF. + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 0xFF) + } + + // 2. Return a byte sequence whose length is equal to input’s code + // point length and whose bytes have the same values as the + // values of input’s code points, in the same order + return input +} + +/** + * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes + * @see https://streams.spec.whatwg.org/#read-loop + * @param {ReadableStreamDefaultReader} reader + */ +async function readAllBytes (reader) { + const bytes = [] + let byteLength = 0 + + while (true) { + const { done, value: chunk } = await reader.read() + + if (done) { + // 1. Call successSteps with bytes. + return Buffer.concat(bytes, byteLength) + } + + // 1. If chunk is not a Uint8Array object, call failureSteps + // with a TypeError and abort these steps. + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk') + } + + // 2. Append the bytes represented by chunk to bytes. + bytes.push(chunk) + byteLength += chunk.length + + // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + } +} + +/** + * @see https://fetch.spec.whatwg.org/#is-local + * @param {URL} url + */ +function urlIsLocal (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:' +} + +/** + * @param {string|URL} url + */ +function urlHasHttpsScheme (url) { + if (typeof url === 'string') { + return url.startsWith('https:') + } + + return url.protocol === 'https:' +} + +/** + * @see https://fetch.spec.whatwg.org/#http-scheme + * @param {URL} url + */ +function urlIsHttpHttpsScheme (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'http:' || protocol === 'https:' +} + +/** + * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. + */ +const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)) + +module.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + normalizeMethodRecord, + parseMetadata +} + + +/***/ }), + +/***/ 74222: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { types } = __nccwpck_require__(39023) +const { hasOwn, toUSVString } = __nccwpck_require__(15523) + +/** @type {import('../../types/webidl').Webidl} */ +const webidl = {} +webidl.converters = {} +webidl.util = {} +webidl.errors = {} + +webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`) +} + +webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of' + const message = + `${context.argument} could not be converted to` + + `${plural}: ${context.types.join(', ')}.` + + return webidl.errors.exception({ + header: context.prefix, + message + }) +} + +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }) +} + +// https://webidl.spec.whatwg.org/#implements +webidl.brandCheck = function (V, I, opts = undefined) { + if (opts?.strict !== false && !(V instanceof I)) { + throw new TypeError('Illegal invocation') + } else { + return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag] + } +} + +webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, ` + + `but${length ? ' only' : ''} ${length} found.`, + ...ctx + }) + } +} + +webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }) +} + +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': return 'Undefined' + case 'boolean': return 'Boolean' + case 'string': return 'String' + case 'symbol': return 'Symbol' + case 'number': return 'Number' + case 'bigint': return 'BigInt' + case 'function': + case 'object': { + if (V === null) { + return 'Null' + } + + return 'Object' + } + } +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { + let upperBound + let lowerBound + + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1 + + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0 + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1 + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: + + // 1. Let lowerBound be 0. + lowerBound = 0 + + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1 + } else { + // 3. Otherwise: + + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1 + + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1 + } + + // 4. Let x be ? ToNumber(V). + let x = Number(V) + + // 5. If x is −0, then set x to +0. + if (x === 0) { + x = 0 + } + + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if ( + Number.isNaN(x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${V} to an integer.` + }) + } + + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }) + } + + // 4. Return x. + return x + } + + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound) + + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x) + } else { + x = Math.ceil(x) + } + + // 3. Return x. + return x + } + + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if ( + Number.isNaN(x) || + (x === 0 && Object.is(0, x)) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0 + } + + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength) + + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength) + } + + // 12. Otherwise, return x. + return x +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + const r = Math.floor(Math.abs(n)) + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r + } + + // 3. Otherwise, return r. + return r +} + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return (V) => { + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: 'Sequence', + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }) + } + + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + const method = V?.[Symbol.iterator]?.() + const seq = [] + + // 3. If method is undefined, throw a TypeError. + if ( + method === undefined || + typeof method.next !== 'function' + ) { + throw webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }) + } + + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + const { done, value } = method.next() + + if (done) { + break + } + + seq.push(converter(value)) + } + + return seq + } +} + +// https://webidl.spec.whatwg.org/#es-to-record +webidl.recordConverter = function (keyConverter, valueConverter) { + return (O) => { + // 1. If Type(O) is not Object, throw a TypeError. + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: 'Record', + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }) + } + + // 2. Let result be a new empty instance of record<K, V>. + const result = {} + + if (!types.isProxy(O)) { + // Object.keys only returns enumerable properties + const keys = Object.keys(O) + + for (const key of keys) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + + // 5. Return result. + return result + } + + // 3. Let keys be ? O.[[OwnPropertyKeys]](). + const keys = Reflect.ownKeys(O) + + // 4. For each key of keys. + for (const key of keys) { + // 1. Let desc be ? O.[[GetOwnProperty]](key). + const desc = Reflect.getOwnPropertyDescriptor(O, key) + + // 2. If desc is not undefined and desc.[[Enumerable]] is true: + if (desc?.enumerable) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + } + + // 5. Return result. + return result + } +} + +webidl.interfaceConverter = function (i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }) + } + + return V + } +} + +webidl.dictionaryConverter = function (converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary) + const dict = {} + + if (type === 'Null' || type === 'Undefined') { + return dict + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }) + } + + for (const options of converters) { + const { key, defaultValue, required, converter } = options + + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Missing required key "${key}".` + }) + } + } + + let value = dictionary[key] + const hasDefault = hasOwn(options, 'defaultValue') + + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + value = value ?? defaultValue + } + + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value) + + if ( + options.allowedValues && + !options.allowedValues.includes(value) + ) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }) + } + + dict[key] = value + } + } + + return dict + } +} + +webidl.nullableConverter = function (converter) { + return (V) => { + if (V === null) { + return V + } + + return converter(V) + } +} + +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V, opts = {}) { + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts.legacyNullToEmptyString) { + return '' + } + + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.') + } + + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V) +} + +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + const x = webidl.converters.DOMString(V) + + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + 'Cannot convert argument to a ByteString because the character at ' + + `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + ) + } + } + + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x +} + +// https://webidl.spec.whatwg.org/#es-USVString +webidl.converters.USVString = toUSVString + +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters.boolean = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + const x = Boolean(V) + + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x +} + +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V +} + +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + const x = webidl.util.ConvertToInt(V, 64, 'signed') + + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long-long +webidl.converters['unsigned long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). + const x = webidl.util.ConvertToInt(V, 64, 'unsigned') + + // 2. Return the IDL unsigned long long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long +webidl.converters['unsigned long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). + const x = webidl.util.ConvertToInt(V, 32, 'unsigned') + + // 2. Return the IDL unsigned long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V, opts) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts) + + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if ( + webidl.util.Type(V) !== 'Object' || + !types.isAnyArrayBuffer(V) + ) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ['ArrayBuffer'] + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + // Note: resizable ArrayBuffers are currently a proposal. + + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V +} + +webidl.converters.TypedArray = function (V, T, opts = {}) { + // 1. Let T be the IDL type V is being converted to. + + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if ( + webidl.util.Type(V) !== 'Object' || + !types.isTypedArray(V) || + V.constructor.name !== T.name + ) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable array buffers are currently a proposal + + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V +} + +webidl.converters.DataView = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable ArrayBuffers are currently a proposal + + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V +} + +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts) + } + + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor) + } + + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts) + } + + throw new TypeError(`Could not convert ${V} to a BufferSource.`) +} + +webidl.converters['sequence<ByteString>'] = webidl.sequenceConverter( + webidl.converters.ByteString +) + +webidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter( + webidl.converters['sequence<ByteString>'] +) + +webidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString +) + +module.exports = { + webidl +} + + +/***/ }), + +/***/ 40396: +/***/ ((module) => { + +"use strict"; + + +/** + * @see https://encoding.spec.whatwg.org/#concept-encoding-get + * @param {string|undefined} label + */ +function getEncoding (label) { + if (!label) { + return 'failure' + } + + // 1. Remove any leading and trailing ASCII whitespace from label. + // 2. If label is an ASCII case-insensitive match for any of the + // labels listed in the table below, then return the + // corresponding encoding; otherwise return failure. + switch (label.trim().toLowerCase()) { + case 'unicode-1-1-utf-8': + case 'unicode11utf8': + case 'unicode20utf8': + case 'utf-8': + case 'utf8': + case 'x-unicode20utf8': + return 'UTF-8' + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866' + case 'csisolatin2': + case 'iso-8859-2': + case 'iso-ir-101': + case 'iso8859-2': + case 'iso88592': + case 'iso_8859-2': + case 'iso_8859-2:1987': + case 'l2': + case 'latin2': + return 'ISO-8859-2' + case 'csisolatin3': + case 'iso-8859-3': + case 'iso-ir-109': + case 'iso8859-3': + case 'iso88593': + case 'iso_8859-3': + case 'iso_8859-3:1988': + case 'l3': + case 'latin3': + return 'ISO-8859-3' + case 'csisolatin4': + case 'iso-8859-4': + case 'iso-ir-110': + case 'iso8859-4': + case 'iso88594': + case 'iso_8859-4': + case 'iso_8859-4:1988': + case 'l4': + case 'latin4': + return 'ISO-8859-4' + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso-8859-5': + case 'iso-ir-144': + case 'iso8859-5': + case 'iso88595': + case 'iso_8859-5': + case 'iso_8859-5:1988': + return 'ISO-8859-5' + case 'arabic': + case 'asmo-708': + case 'csiso88596e': + case 'csiso88596i': + case 'csisolatinarabic': + case 'ecma-114': + case 'iso-8859-6': + case 'iso-8859-6-e': + case 'iso-8859-6-i': + case 'iso-ir-127': + case 'iso8859-6': + case 'iso88596': + case 'iso_8859-6': + case 'iso_8859-6:1987': + return 'ISO-8859-6' + case 'csisolatingreek': + case 'ecma-118': + case 'elot_928': + case 'greek': + case 'greek8': + case 'iso-8859-7': + case 'iso-ir-126': + case 'iso8859-7': + case 'iso88597': + case 'iso_8859-7': + case 'iso_8859-7:1987': + case 'sun_eu_greek': + return 'ISO-8859-7' + case 'csiso88598e': + case 'csisolatinhebrew': + case 'hebrew': + case 'iso-8859-8': + case 'iso-8859-8-e': + case 'iso-ir-138': + case 'iso8859-8': + case 'iso88598': + case 'iso_8859-8': + case 'iso_8859-8:1988': + case 'visual': + return 'ISO-8859-8' + case 'csiso88598i': + case 'iso-8859-8-i': + case 'logical': + return 'ISO-8859-8-I' + case 'csisolatin6': + case 'iso-8859-10': + case 'iso-ir-157': + case 'iso8859-10': + case 'iso885910': + case 'l6': + case 'latin6': + return 'ISO-8859-10' + case 'iso-8859-13': + case 'iso8859-13': + case 'iso885913': + return 'ISO-8859-13' + case 'iso-8859-14': + case 'iso8859-14': + case 'iso885914': + return 'ISO-8859-14' + case 'csisolatin9': + case 'iso-8859-15': + case 'iso8859-15': + case 'iso885915': + case 'iso_8859-15': + case 'l9': + return 'ISO-8859-15' + case 'iso-8859-16': + return 'ISO-8859-16' + case 'cskoi8r': + case 'koi': + case 'koi8': + case 'koi8-r': + case 'koi8_r': + return 'KOI8-R' + case 'koi8-ru': + case 'koi8-u': + return 'KOI8-U' + case 'csmacintosh': + case 'mac': + case 'macintosh': + case 'x-mac-roman': + return 'macintosh' + case 'iso-8859-11': + case 'iso8859-11': + case 'iso885911': + case 'tis-620': + case 'windows-874': + return 'windows-874' + case 'cp1250': + case 'windows-1250': + case 'x-cp1250': + return 'windows-1250' + case 'cp1251': + case 'windows-1251': + case 'x-cp1251': + return 'windows-1251' + case 'ansi_x3.4-1968': + case 'ascii': + case 'cp1252': + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso-8859-1': + case 'iso-ir-100': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'iso_8859-1:1987': + case 'l1': + case 'latin1': + case 'us-ascii': + case 'windows-1252': + case 'x-cp1252': + return 'windows-1252' + case 'cp1253': + case 'windows-1253': + case 'x-cp1253': + return 'windows-1253' + case 'cp1254': + case 'csisolatin5': + case 'iso-8859-9': + case 'iso-ir-148': + case 'iso8859-9': + case 'iso88599': + case 'iso_8859-9': + case 'iso_8859-9:1989': + case 'l5': + case 'latin5': + case 'windows-1254': + case 'x-cp1254': + return 'windows-1254' + case 'cp1255': + case 'windows-1255': + case 'x-cp1255': + return 'windows-1255' + case 'cp1256': + case 'windows-1256': + case 'x-cp1256': + return 'windows-1256' + case 'cp1257': + case 'windows-1257': + case 'x-cp1257': + return 'windows-1257' + case 'cp1258': + case 'windows-1258': + case 'x-cp1258': + return 'windows-1258' + case 'x-mac-cyrillic': + case 'x-mac-ukrainian': + return 'x-mac-cyrillic' + case 'chinese': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb_2312': + case 'gb_2312-80': + case 'gbk': + case 'iso-ir-58': + case 'x-gbk': + return 'GBK' + case 'gb18030': + return 'gb18030' + case 'big5': + case 'big5-hkscs': + case 'cn-big5': + case 'csbig5': + case 'x-x-big5': + return 'Big5' + case 'cseucpkdfmtjapanese': + case 'euc-jp': + case 'x-euc-jp': + return 'EUC-JP' + case 'csiso2022jp': + case 'iso-2022-jp': + return 'ISO-2022-JP' + case 'csshiftjis': + case 'ms932': + case 'ms_kanji': + case 'shift-jis': + case 'shift_jis': + case 'sjis': + case 'windows-31j': + case 'x-sjis': + return 'Shift_JIS' + case 'cseuckr': + case 'csksc56011987': + case 'euc-kr': + case 'iso-ir-149': + case 'korean': + case 'ks_c_5601-1987': + case 'ks_c_5601-1989': + case 'ksc5601': + case 'ksc_5601': + case 'windows-949': + return 'EUC-KR' + case 'csiso2022kr': + case 'hz-gb-2312': + case 'iso-2022-cn': + case 'iso-2022-cn-ext': + case 'iso-2022-kr': + case 'replacement': + return 'replacement' + case 'unicodefffe': + case 'utf-16be': + return 'UTF-16BE' + case 'csunicode': + case 'iso-10646-ucs-2': + case 'ucs-2': + case 'unicode': + case 'unicodefeff': + case 'utf-16': + case 'utf-16le': + return 'UTF-16LE' + case 'x-user-defined': + return 'x-user-defined' + default: return 'failure' + } +} + +module.exports = { + getEncoding +} + + +/***/ }), + +/***/ 82160: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} = __nccwpck_require__(10165) +const { + kState, + kError, + kResult, + kEvents, + kAborted +} = __nccwpck_require__(86812) +const { webidl } = __nccwpck_require__(74222) +const { kEnumerableProperty } = __nccwpck_require__(3440) + +class FileReader extends EventTarget { + constructor () { + super() + + this[kState] = 'empty' + this[kResult] = null + this[kError] = null + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsArrayBuffer(blob) method, when invoked, + // must initiate a read operation for blob with ArrayBuffer. + readOperation(this, blob, 'ArrayBuffer') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsBinaryString(blob) method, when invoked, + // must initiate a read operation for blob with BinaryString. + readOperation(this, blob, 'BinaryString') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText (blob, encoding = undefined) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + if (encoding !== undefined) { + encoding = webidl.converters.DOMString(encoding) + } + + // The readAsText(blob, encoding) method, when invoked, + // must initiate a read operation for blob with Text and encoding. + readOperation(this, blob, 'Text', encoding) + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsDataURL(blob) method, when invoked, must + // initiate a read operation for blob with DataURL. + readOperation(this, blob, 'DataURL') + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort () { + // 1. If this's state is "empty" or if this's state is + // "done" set this's result to null and terminate + // this algorithm. + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null + return + } + + // 2. If this's state is "loading" set this's state to + // "done" and set this's result to null. + if (this[kState] === 'loading') { + this[kState] = 'done' + this[kResult] = null + } + + // 3. If there are any tasks from this on the file reading + // task source in an affiliated task queue, then remove + // those tasks from that task queue. + this[kAborted] = true + + // 4. Terminate the algorithm for the read method being processed. + // TODO + + // 5. Fire a progress event called abort at this. + fireAProgressEvent('abort', this) + + // 6. If this's state is not "loading", fire a progress + // event called loadend at this. + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this) + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState () { + webidl.brandCheck(this, FileReader) + + switch (this[kState]) { + case 'empty': return this.EMPTY + case 'loading': return this.LOADING + case 'done': return this.DONE + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result () { + webidl.brandCheck(this, FileReader) + + // The result attribute’s getter, when invoked, must return + // this's result. + return this[kResult] + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error () { + webidl.brandCheck(this, FileReader) + + // The error attribute’s getter, when invoked, must return + // this's error. + return this[kError] + } + + get onloadend () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadend + } + + set onloadend (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend) + } + + if (typeof fn === 'function') { + this[kEvents].loadend = fn + this.addEventListener('loadend', fn) + } else { + this[kEvents].loadend = null + } + } + + get onerror () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].error + } + + set onerror (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error) + } + + if (typeof fn === 'function') { + this[kEvents].error = fn + this.addEventListener('error', fn) + } else { + this[kEvents].error = null + } + } + + get onloadstart () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadstart + } + + set onloadstart (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart) + } + + if (typeof fn === 'function') { + this[kEvents].loadstart = fn + this.addEventListener('loadstart', fn) + } else { + this[kEvents].loadstart = null + } + } + + get onprogress () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].progress + } + + set onprogress (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress) + } + + if (typeof fn === 'function') { + this[kEvents].progress = fn + this.addEventListener('progress', fn) + } else { + this[kEvents].progress = null + } + } + + get onload () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].load + } + + set onload (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load) + } + + if (typeof fn === 'function') { + this[kEvents].load = fn + this.addEventListener('load', fn) + } else { + this[kEvents].load = null + } + } + + get onabort () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].abort + } + + set onabort (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort) + } + + if (typeof fn === 'function') { + this[kEvents].abort = fn + this.addEventListener('abort', fn) + } else { + this[kEvents].abort = null + } + } +} + +// https://w3c.github.io/FileAPI/#dom-filereader-empty +FileReader.EMPTY = FileReader.prototype.EMPTY = 0 +// https://w3c.github.io/FileAPI/#dom-filereader-loading +FileReader.LOADING = FileReader.prototype.LOADING = 1 +// https://w3c.github.io/FileAPI/#dom-filereader-done +FileReader.DONE = FileReader.prototype.DONE = 2 + +Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors +}) + +module.exports = { + FileReader +} + + +/***/ }), + +/***/ 15976: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(74222) + +const kState = Symbol('ProgressEvent state') + +/** + * @see https://xhr.spec.whatwg.org/#progressevent + */ +class ProgressEvent extends Event { + constructor (type, eventInitDict = {}) { + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}) + + super(type, eventInitDict) + + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + } + } + + get lengthComputable () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].lengthComputable + } + + get loaded () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].loaded + } + + get total () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].total + } +} + +webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } +]) + +module.exports = { + ProgressEvent +} + + +/***/ }), + +/***/ 86812: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kState: Symbol('FileReader state'), + kResult: Symbol('FileReader result'), + kError: Symbol('FileReader error'), + kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), + kEvents: Symbol('FileReader events'), + kAborted: Symbol('FileReader aborted') +} + + +/***/ }), + +/***/ 10165: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired +} = __nccwpck_require__(86812) +const { ProgressEvent } = __nccwpck_require__(15976) +const { getEncoding } = __nccwpck_require__(40396) +const { DOMException } = __nccwpck_require__(87326) +const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(94322) +const { types } = __nccwpck_require__(39023) +const { StringDecoder } = __nccwpck_require__(13193) +const { btoa } = __nccwpck_require__(20181) + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +/** + * @see https://w3c.github.io/FileAPI/#readOperation + * @param {import('./filereader').FileReader} fr + * @param {import('buffer').Blob} blob + * @param {string} type + * @param {string?} encodingName + */ +function readOperation (fr, blob, type, encodingName) { + // 1. If fr’s state is "loading", throw an InvalidStateError + // DOMException. + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError') + } + + // 2. Set fr’s state to "loading". + fr[kState] = 'loading' + + // 3. Set fr’s result to null. + fr[kResult] = null + + // 4. Set fr’s error to null. + fr[kError] = null + + // 5. Let stream be the result of calling get stream on blob. + /** @type {import('stream/web').ReadableStream} */ + const stream = blob.stream() + + // 6. Let reader be the result of getting a reader from stream. + const reader = stream.getReader() + + // 7. Let bytes be an empty byte sequence. + /** @type {Uint8Array[]} */ + const bytes = [] + + // 8. Let chunkPromise be the result of reading a chunk from + // stream with reader. + let chunkPromise = reader.read() + + // 9. Let isFirstChunk be true. + let isFirstChunk = true + + // 10. In parallel, while true: + // Note: "In parallel" just means non-blocking + // Note 2: readOperation itself cannot be async as double + // reading the body would then reject the promise, instead + // of throwing an error. + ;(async () => { + while (!fr[kAborted]) { + // 1. Wait for chunkPromise to be fulfilled or rejected. + try { + const { done, value } = await chunkPromise + + // 2. If chunkPromise is fulfilled, and isFirstChunk is + // true, queue a task to fire a progress event called + // loadstart at fr. + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr) + }) + } + + // 3. Set isFirstChunk to false. + isFirstChunk = false + + // 4. If chunkPromise is fulfilled with an object whose + // done property is false and whose value property is + // a Uint8Array object, run these steps: + if (!done && types.isUint8Array(value)) { + // 1. Let bs be the byte sequence represented by the + // Uint8Array object. + + // 2. Append bs to bytes. + bytes.push(value) + + // 3. If roughly 50ms have passed since these steps + // were last invoked, queue a task to fire a + // progress event called progress at fr. + if ( + ( + fr[kLastProgressEventFired] === undefined || + Date.now() - fr[kLastProgressEventFired] >= 50 + ) && + !fr[kAborted] + ) { + fr[kLastProgressEventFired] = Date.now() + queueMicrotask(() => { + fireAProgressEvent('progress', fr) + }) + } + + // 4. Set chunkPromise to the result of reading a + // chunk from stream with reader. + chunkPromise = reader.read() + } else if (done) { + // 5. Otherwise, if chunkPromise is fulfilled with an + // object whose done property is true, queue a task + // to run the following steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Let result be the result of package data given + // bytes, type, blob’s type, and encodingName. + try { + const result = packageData(bytes, type, blob.type, encodingName) + + // 4. Else: + + if (fr[kAborted]) { + return + } + + // 1. Set fr’s result to result. + fr[kResult] = result + + // 2. Fire a progress event called load at the fr. + fireAProgressEvent('load', fr) + } catch (error) { + // 3. If package data threw an exception error: + + // 1. Set fr’s error to error. + fr[kError] = error + + // 2. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + } + + // 5. If fr’s state is not "loading", fire a progress + // event called loadend at the fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } catch (error) { + if (fr[kAborted]) { + return + } + + // 6. Otherwise, if chunkPromise is rejected with an + // error error, queue a task to run the following + // steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Set fr’s error to error. + fr[kError] = error + + // 3. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + + // 4. If fr’s state is not "loading", fire a progress + // event called loadend at fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } + })() +} + +/** + * @see https://w3c.github.io/FileAPI/#fire-a-progress-event + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e The name of the event + * @param {import('./filereader').FileReader} reader + */ +function fireAProgressEvent (e, reader) { + // The progress event e does not bubble. e.bubbles must be false + // The progress event e is NOT cancelable. e.cancelable must be false + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }) + + reader.dispatchEvent(event) +} + +/** + * @see https://w3c.github.io/FileAPI/#blob-package-data + * @param {Uint8Array[]} bytes + * @param {string} type + * @param {string?} mimeType + * @param {string?} encodingName + */ +function packageData (bytes, type, mimeType, encodingName) { + // 1. A Blob has an associated package data algorithm, given + // bytes, a type, a optional mimeType, and a optional + // encodingName, which switches on type and runs the + // associated steps: + + switch (type) { + case 'DataURL': { + // 1. Return bytes as a DataURL [RFC2397] subject to + // the considerations below: + // * Use mimeType as part of the Data URL if it is + // available in keeping with the Data URL + // specification [RFC2397]. + // * If mimeType is not available return a Data URL + // without a media-type. [RFC2397]. + + // https://datatracker.ietf.org/doc/html/rfc2397#section-3 + // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data + // mediatype := [ type "/" subtype ] *( ";" parameter ) + // data := *urlchar + // parameter := attribute "=" value + let dataURL = 'data:' + + const parsed = parseMIMEType(mimeType || 'application/octet-stream') + + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed) + } + + dataURL += ';base64,' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)) + } + + dataURL += btoa(decoder.end()) + + return dataURL + } + case 'Text': { + // 1. Let encoding be failure + let encoding = 'failure' + + // 2. If the encodingName is present, set encoding to the + // result of getting an encoding from encodingName. + if (encodingName) { + encoding = getEncoding(encodingName) + } + + // 3. If encoding is failure, and mimeType is present: + if (encoding === 'failure' && mimeType) { + // 1. Let type be the result of parse a MIME type + // given mimeType. + const type = parseMIMEType(mimeType) + + // 2. If type is not failure, set encoding to the result + // of getting an encoding from type’s parameters["charset"]. + if (type !== 'failure') { + encoding = getEncoding(type.parameters.get('charset')) + } + } + + // 4. If encoding is failure, then set encoding to UTF-8. + if (encoding === 'failure') { + encoding = 'UTF-8' + } + + // 5. Decode bytes using fallback encoding encoding, and + // return the result. + return decode(bytes, encoding) + } + case 'ArrayBuffer': { + // Return a new ArrayBuffer whose contents are bytes. + const sequence = combineByteSequences(bytes) + + return sequence.buffer + } + case 'BinaryString': { + // Return bytes as a binary string, in which every byte + // is represented by a code unit of equal value [0..255]. + let binaryString = '' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + binaryString += decoder.write(chunk) + } + + binaryString += decoder.end() + + return binaryString + } + } +} + +/** + * @see https://encoding.spec.whatwg.org/#decode + * @param {Uint8Array[]} ioQueue + * @param {string} encoding + */ +function decode (ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue) + + // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. + const BOMEncoding = BOMSniffing(bytes) + + let slice = 0 + + // 2. If BOMEncoding is non-null: + if (BOMEncoding !== null) { + // 1. Set encoding to BOMEncoding. + encoding = BOMEncoding + + // 2. Read three bytes from ioQueue, if BOMEncoding is + // UTF-8; otherwise read two bytes. + // (Do nothing with those bytes.) + slice = BOMEncoding === 'UTF-8' ? 3 : 2 + } + + // 3. Process a queue with an instance of encoding’s + // decoder, ioQueue, output, and "replacement". + + // 4. Return output. + + const sliced = bytes.slice(slice) + return new TextDecoder(encoding).decode(sliced) +} + +/** + * @see https://encoding.spec.whatwg.org/#bom-sniff + * @param {Uint8Array} ioQueue + */ +function BOMSniffing (ioQueue) { + // 1. Let BOM be the result of peeking 3 bytes from ioQueue, + // converted to a byte sequence. + const [a, b, c] = ioQueue + + // 2. For each of the rows in the table below, starting with + // the first one and going down, if BOM starts with the + // bytes given in the first column, then return the + // encoding given in the cell in the second column of that + // row. Otherwise, return null. + if (a === 0xEF && b === 0xBB && c === 0xBF) { + return 'UTF-8' + } else if (a === 0xFE && b === 0xFF) { + return 'UTF-16BE' + } else if (a === 0xFF && b === 0xFE) { + return 'UTF-16LE' + } + + return null +} + +/** + * @param {Uint8Array[]} sequences + */ +function combineByteSequences (sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength + }, 0) + + let offset = 0 + + return sequences.reduce((a, b) => { + a.set(b, offset) + offset += b.byteLength + return a + }, new Uint8Array(size)) +} + +module.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} + + +/***/ }), + +/***/ 32581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +const globalDispatcher = Symbol.for('undici.globalDispatcher.1') +const { InvalidArgumentError } = __nccwpck_require__(68707) +const Agent = __nccwpck_require__(59965) + +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()) +} + +function setGlobalDispatcher (agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent') + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }) +} + +function getGlobalDispatcher () { + return globalThis[globalDispatcher] +} + +module.exports = { + setGlobalDispatcher, + getGlobalDispatcher +} + + +/***/ }), + +/***/ 78840: +/***/ ((module) => { + +"use strict"; + + +module.exports = class DecoratorHandler { + constructor (handler) { + this.handler = handler + } + + onConnect (...args) { + return this.handler.onConnect(...args) + } + + onError (...args) { + return this.handler.onError(...args) + } + + onUpgrade (...args) { + return this.handler.onUpgrade(...args) + } + + onHeaders (...args) { + return this.handler.onHeaders(...args) + } + + onData (...args) { + return this.handler.onData(...args) + } + + onComplete (...args) { + return this.handler.onComplete(...args) + } + + onBodySent (...args) { + return this.handler.onBodySent(...args) + } +} + + +/***/ }), + +/***/ 48299: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const util = __nccwpck_require__(3440) +const { kBodyUsed } = __nccwpck_require__(36443) +const assert = __nccwpck_require__(42613) +const { InvalidArgumentError } = __nccwpck_require__(68707) +const EE = __nccwpck_require__(24434) + +const redirectableStatusCodes = [300, 301, 302, 303, 307, 308] + +const kBody = Symbol('body') + +class BodyAsyncIterable { + constructor (body) { + this[kBody] = body + this[kBodyUsed] = false + } + + async * [Symbol.asyncIterator] () { + assert(!this[kBodyUsed], 'disturbed') + this[kBodyUsed] = true + yield * this[kBody] + } +} + +class RedirectHandler { + constructor (dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + util.validateHandler(handler, opts.method, opts.upgrade) + + this.dispatch = dispatch + this.location = null + this.abort = null + this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy + this.maxRedirections = maxRedirections + this.handler = handler + this.history = [] + + if (util.isStream(this.opts.body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body + .on('data', function () { + assert(false) + }) + } + + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = true + }) + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + this.opts.body = new BodyAsyncIterable(this.opts.body) + } else if ( + this.opts.body && + typeof this.opts.body !== 'string' && + !ArrayBuffer.isView(this.opts.body) && + util.isIterable(this.opts.body) + ) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + this.opts.body = new BodyAsyncIterable(this.opts.body) + } + } + + onConnect (abort) { + this.abort = abort + this.handler.onConnect(abort, { history: this.history }) + } + + onUpgrade (statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket) + } + + onError (error) { + this.handler.onError(error) + } + + onHeaders (statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers) + + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)) + } + + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText) + } + + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) + const path = search ? `${pathname}${search}` : pathname + + // Remove headers referring to the original URL. + // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. + // https://tools.ietf.org/html/rfc7231#section-6.4 + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin) + this.opts.path = path + this.opts.origin = origin + this.opts.maxRedirections = 0 + this.opts.query = null + + // https://tools.ietf.org/html/rfc7231#section-6.4.4 + // In case of HTTP 303, always replace method to be either HEAD or GET + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET' + this.opts.body = null + } + } + + onData (chunk) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response bodies. + + Redirection is used to serve the requested resource from another URL, so it is assumes that + no body is generated (and thus can be ignored). Even though generating a body is not prohibited. + + For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually + (which means it's optional and not mandated) contain just an hyperlink to the value of + the Location response header, so the body can be ignored safely. + + For status 300, which is "Multiple Choices", the spec mentions both generating a Location + response header AND a response body with the other possible location to follow. + Since the spec explicitily chooses not to specify a format for such body and leave it to + servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. + */ + } else { + return this.handler.onData(chunk) + } + } + + onComplete (trailers) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections + and neither are useful if present. + + See comment on onData method above for more detailed informations. + */ + + this.location = null + this.abort = null + + this.dispatch(this.opts, this) + } else { + this.handler.onComplete(trailers) + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk) + } + } +} + +function parseLocation (statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null + } + + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === 'location') { + return headers[i + 1] + } + } +} + +// https://tools.ietf.org/html/rfc7231#section-6.4.4 +function shouldRemoveHeader (header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host' + } + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header) + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' + } + return false +} + +// https://tools.ietf.org/html/rfc7231#section-6.4 +function cleanRequestHeaders (headers, removeContent, unknownOrigin) { + const ret = [] + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]) + } + } + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]) + } + } + } else { + assert(headers == null, 'headers must be an object or an array') + } + return ret +} + +module.exports = RedirectHandler + + +/***/ }), + +/***/ 53573: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(42613) + +const { kRetryHandlerDefaultRetry } = __nccwpck_require__(36443) +const { RequestRetryError } = __nccwpck_require__(68707) +const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3440) + +function calculateRetryAfterHeader (retryAfter) { + const current = Date.now() + const diff = new Date(retryAfter).getTime() - current + + return diff +} + +class RetryHandler { + constructor (opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {} + + this.dispatch = handlers.dispatch + this.handler = handlers.handler + this.opts = dispatchOpts + this.abort = null + this.aborted = false + this.retryOpts = { + retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1000, // 30s, + timeout: minTimeout ?? 500, // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE' + ] + } + + this.retryCount = 0 + this.start = 0 + this.end = null + this.etag = null + this.resume = null + + // Handle possible onConnect duplication + this.handler.onConnect(reason => { + this.aborted = true + if (this.abort) { + this.abort(reason) + } else { + this.reason = reason + } + }) + } + + onRequestSent () { + if (this.handler.onRequestSent) { + this.handler.onRequestSent() + } + } + + onUpgrade (statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket) + } + } + + onConnect (abort) { + if (this.aborted) { + abort(this.reason) + } else { + this.abort = abort + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk) + } + + static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) { + const { statusCode, code, headers } = err + const { method, retryOptions } = opts + const { + maxRetries, + timeout, + maxTimeout, + timeoutFactor, + statusCodes, + errorCodes, + methods + } = retryOptions + let { counter, currentTimeout } = state + + currentTimeout = + currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout + + // Any code that is not a Undici's originated and allowed to retry + if ( + code && + code !== 'UND_ERR_REQ_RETRY' && + code !== 'UND_ERR_SOCKET' && + !errorCodes.includes(code) + ) { + cb(err) + return + } + + // If a set of method are provided and the current method is not in the list + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err) + return + } + + // If a set of status code are provided and the current status code is not in the list + if ( + statusCode != null && + Array.isArray(statusCodes) && + !statusCodes.includes(statusCode) + ) { + cb(err) + return + } + + // If we reached the max number of retries + if (counter > maxRetries) { + cb(err) + return + } + + let retryAfterHeader = headers != null && headers['retry-after'] + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader) + retryAfterHeader = isNaN(retryAfterHeader) + ? calculateRetryAfterHeader(retryAfterHeader) + : retryAfterHeader * 1e3 // Retry-After is in seconds + } + + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout) + + state.currentTimeout = retryTimeout + + setTimeout(() => cb(null), retryTimeout) + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders) + + this.retryCount += 1 + + if (statusCode >= 300) { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + // Checkpoint for resume from where we left it + if (this.resume != null) { + this.resume = null + + if (statusCode !== 206) { + return true + } + + const contentRange = parseRangeHeader(headers['content-range']) + // If no content range + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + // Let's start with a weak etag check + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + const { start, size, end = size } = contentRange + + assert(this.start === start, 'content-range mismatch') + assert(this.end == null || this.end === end, 'content-range mismatch') + + this.resume = resume + return true + } + + if (this.end == null) { + if (statusCode === 206) { + // First time we receive 206 + const range = parseRangeHeader(headers['content-range']) + + if (range == null) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const { start, size, end = size } = range + + assert( + start != null && Number.isFinite(start) && this.start !== start, + 'content-range mismatch' + ) + assert(Number.isFinite(start)) + assert( + end != null && Number.isFinite(end) && this.end !== end, + 'invalid content-length' + ) + + this.start = start + this.end = end + } + + // We make our best to checkpoint the body for further range headers + if (this.end == null) { + const contentLength = headers['content-length'] + this.end = contentLength != null ? Number(contentLength) : null + } + + assert(Number.isFinite(this.start)) + assert( + this.end == null || Number.isFinite(this.end), + 'invalid content-length' + ) + + this.resume = resume + this.etag = headers.etag != null ? headers.etag : null + + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const err = new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + + this.abort(err) + + return false + } + + onData (chunk) { + this.start += chunk.length + + return this.handler.onData(chunk) + } + + onComplete (rawTrailers) { + this.retryCount = 0 + return this.handler.onComplete(rawTrailers) + } + + onError (err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ) + + function onRetry (err) { + if (err != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + if (this.start !== 0) { + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + range: `bytes=${this.start}-${this.end ?? ''}` + } + } + } + + try { + this.dispatch(this.opts, this) + } catch (err) { + this.handler.onError(err) + } + } + } +} + +module.exports = RetryHandler + + +/***/ }), + +/***/ 64415: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const RedirectHandler = __nccwpck_require__(48299) + +function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept (opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler) + opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler) + } + } +} + +module.exports = createRedirectInterceptor + + +/***/ }), + +/***/ 52824: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; +const utils_1 = __nccwpck_require__(50172); +// C headers +var ERROR; +(function (ERROR) { + ERROR[ERROR["OK"] = 0] = "OK"; + ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; + ERROR[ERROR["STRICT"] = 2] = "STRICT"; + ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; + ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR[ERROR["USER"] = 24] = "USER"; +})(ERROR = exports.ERROR || (exports.ERROR = {})); +var TYPE; +(function (TYPE) { + TYPE[TYPE["BOTH"] = 0] = "BOTH"; + TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; + TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; +})(TYPE = exports.TYPE || (exports.TYPE = {})); +var FLAGS; +(function (FLAGS) { + FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; + FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; + FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; + // 1 << 8 is unused + FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; +})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); +var LENIENT_FLAGS; +(function (LENIENT_FLAGS) { + LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; +})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); +var METHODS; +(function (METHODS) { + METHODS[METHODS["DELETE"] = 0] = "DELETE"; + METHODS[METHODS["GET"] = 1] = "GET"; + METHODS[METHODS["HEAD"] = 2] = "HEAD"; + METHODS[METHODS["POST"] = 3] = "POST"; + METHODS[METHODS["PUT"] = 4] = "PUT"; + /* pathological */ + METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; + METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; + METHODS[METHODS["TRACE"] = 7] = "TRACE"; + /* WebDAV */ + METHODS[METHODS["COPY"] = 8] = "COPY"; + METHODS[METHODS["LOCK"] = 9] = "LOCK"; + METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; + METHODS[METHODS["MOVE"] = 11] = "MOVE"; + METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; + METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; + METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; + METHODS[METHODS["BIND"] = 16] = "BIND"; + METHODS[METHODS["REBIND"] = 17] = "REBIND"; + METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; + METHODS[METHODS["ACL"] = 19] = "ACL"; + /* subversion */ + METHODS[METHODS["REPORT"] = 20] = "REPORT"; + METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS[METHODS["MERGE"] = 23] = "MERGE"; + /* upnp */ + METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; + METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + /* RFC-5789 */ + METHODS[METHODS["PATCH"] = 28] = "PATCH"; + METHODS[METHODS["PURGE"] = 29] = "PURGE"; + /* CalDAV */ + METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; + /* RFC-2068, section 19.6.1.2 */ + METHODS[METHODS["LINK"] = 31] = "LINK"; + METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; + /* icecast */ + METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; + /* RFC-7540, section 11.6 */ + METHODS[METHODS["PRI"] = 34] = "PRI"; + /* RFC-2326 RTSP */ + METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS[METHODS["SETUP"] = 37] = "SETUP"; + METHODS[METHODS["PLAY"] = 38] = "PLAY"; + METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; + METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; + METHODS[METHODS["RECORD"] = 44] = "RECORD"; + /* RAOP */ + METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; +})(METHODS = exports.METHODS || (exports.METHODS = {})); +exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE, +]; +exports.METHODS_ICE = [ + METHODS.SOURCE, +]; +exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST, +]; +exports.METHOD_MAP = utils_1.enumToMap(METHODS); +exports.H_METHOD_MAP = {}; +Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } +}); +var FINISH; +(function (FINISH) { + FINISH[FINISH["SAFE"] = 0] = "SAFE"; + FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; +})(FINISH = exports.FINISH || (exports.FINISH = {})); +exports.ALPHA = []; +for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + // Upper case + exports.ALPHA.push(String.fromCharCode(i)); + // Lower case + exports.ALPHA.push(String.fromCharCode(i + 0x20)); +} +exports.NUM_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, +}; +exports.HEX_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, + A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, + a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, +}; +exports.NUM = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', +]; +exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); +exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; +exports.USERINFO_CHARS = exports.ALPHANUM + .concat(exports.MARK) + .concat(['%', ';', ':', '&', '=', '+', '$', ',']); +// TODO(indutny): use RFC +exports.STRICT_URL_CHAR = [ + '!', '"', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + ':', ';', '<', '=', '>', + '@', '[', '\\', ']', '^', '_', + '`', + '{', '|', '}', '~', +].concat(exports.ALPHANUM); +exports.URL_CHAR = exports.STRICT_URL_CHAR + .concat(['\t', '\f']); +// All characters with 0x80 bit set to 1 +for (let i = 0x80; i <= 0xff; i++) { + exports.URL_CHAR.push(i); +} +exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1*<any CHAR except CTLs or separators> + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +exports.STRICT_TOKEN = [ + '!', '#', '$', '%', '&', '\'', + '*', '+', '-', '.', + '^', '_', '`', + '|', '~', +].concat(exports.ALPHANUM); +exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); +/* + * Verify that a char is a valid visible (printable) US-ASCII + * character or %x80-FF + */ +exports.HEADER_CHARS = ['\t']; +for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } +} +// ',' = \x44 +exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); +exports.MAJOR = exports.NUM_MAP; +exports.MINOR = exports.MAJOR; +var HEADER_STATE; +(function (HEADER_STATE) { + HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; +})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); +exports.SPECIAL_HEADERS = { + 'connection': HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + 'upgrade': HEADER_STATE.UPGRADE, +}; +//# sourceMappingURL=constants.js.map + +/***/ }), + +/***/ 63870: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=' + + +/***/ }), + +/***/ 53434: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==' + + +/***/ }), + +/***/ 50172: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.enumToMap = void 0; +function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; +} +exports.enumToMap = enumToMap; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 47501: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kClients } = __nccwpck_require__(36443) +const Agent = __nccwpck_require__(59965) +const { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory +} = __nccwpck_require__(91117) +const MockClient = __nccwpck_require__(47365) +const MockPool = __nccwpck_require__(94004) +const { matchValue, buildMockOptions } = __nccwpck_require__(53397) +const { InvalidArgumentError, UndiciError } = __nccwpck_require__(68707) +const Dispatcher = __nccwpck_require__(28611) +const Pluralizer = __nccwpck_require__(91529) +const PendingInterceptorsFormatter = __nccwpck_require__(56142) + +class FakeWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value + } +} + +class MockAgent extends Dispatcher { + constructor (opts) { + super(opts) + + this[kNetConnect] = true + this[kIsMockActive] = true + + // Instantiate Agent and encapsulate + if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts) + this[kAgent] = agent + + this[kClients] = agent[kClients] + this[kOptions] = buildMockOptions(opts) + } + + get (origin) { + let dispatcher = this[kMockAgentGet](origin) + + if (!dispatcher) { + dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + } + return dispatcher + } + + dispatch (opts, handler) { + // Call MockAgent.get to perform additional setup before dispatching as normal + this.get(opts.origin) + return this[kAgent].dispatch(opts, handler) + } + + async close () { + await this[kAgent].close() + this[kClients].clear() + } + + deactivate () { + this[kIsMockActive] = false + } + + activate () { + this[kIsMockActive] = true + } + + enableNetConnect (matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher) + } else { + this[kNetConnect] = [matcher] + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') + } + } + + disableNetConnect () { + this[kNetConnect] = false + } + + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive () { + return this[kIsMockActive] + } + + [kMockAgentSet] (origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)) + } + + [kFactory] (origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]) + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions) + } + + [kMockAgentGet] (origin) { + // First check if we can immediately find it + const ref = this[kClients].get(origin) + if (ref) { + return ref.deref() + } + + // If the origin is not a string create a dummy parent pool and return to user + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999') + this[kMockAgentSet](origin, dispatcher) + return dispatcher + } + + // If we match, create a pool and assign the same dispatches + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref() + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] + return dispatcher + } + } + } + + [kGetNetConnect] () { + return this[kNetConnect] + } + + pendingInterceptors () { + const mockAgentClients = this[kClients] + + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending) + } + + assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors() + + if (pending.length === 0) { + return + } + + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) + + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()) + } +} + +module.exports = MockAgent + + +/***/ }), + +/***/ 47365: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { promisify } = __nccwpck_require__(39023) +const Client = __nccwpck_require__(86197) +const { buildMockDispatch } = __nccwpck_require__(53397) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(91117) +const { MockInterceptor } = __nccwpck_require__(31511) +const Symbols = __nccwpck_require__(36443) +const { InvalidArgumentError } = __nccwpck_require__(68707) + +/** + * MockClient provides an API that extends the Client to influence the mockDispatches. + */ +class MockClient extends Client { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockClient + + +/***/ }), + +/***/ 52429: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { UndiciError } = __nccwpck_require__(68707) + +class MockNotMatchedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, MockNotMatchedError) + this.name = 'MockNotMatchedError' + this.message = message || 'The request does not match any registered mock dispatches' + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED' + } +} + +module.exports = { + MockNotMatchedError +} + + +/***/ }), + +/***/ 31511: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(53397) +const { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch +} = __nccwpck_require__(91117) +const { InvalidArgumentError } = __nccwpck_require__(68707) +const { buildURL } = __nccwpck_require__(3440) + +/** + * Defines the scope API for an interceptor reply + */ +class MockScope { + constructor (mockDispatch) { + this[kMockDispatch] = mockDispatch + } + + /** + * Delay a reply by a set amount in ms. + */ + delay (waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0') + } + + this[kMockDispatch].delay = waitInMs + return this + } + + /** + * For a defined reply, never mark as consumed. + */ + persist () { + this[kMockDispatch].persist = true + return this + } + + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times (repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') + } + + this[kMockDispatch].times = repeatTimes + return this + } +} + +/** + * Defines an interceptor for a Mock + */ +class MockInterceptor { + constructor (opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object') + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined') + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET' + } + // See https://github.com/nodejs/undici/issues/1245 + // As per RFC 3986, clients are not supposed to send URI + // fragments to servers when they retrieve a document, + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query) + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 + const parsedURL = new URL(opts.path, 'data://') + opts.path = parsedURL.pathname + parsedURL.search + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase() + } + + this[kDispatchKey] = buildKey(opts) + this[kDispatches] = mockDispatches + this[kDefaultHeaders] = {} + this[kDefaultTrailers] = {} + this[kContentLength] = false + } + + createMockScopeDispatchData (statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data) + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {} + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers } + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers } + + return { statusCode, data, headers, trailers } + } + + validateReplyParameters (statusCode, data, responseOptions) { + if (typeof statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined') + } + if (typeof data === 'undefined') { + throw new InvalidArgumentError('data must be defined') + } + if (typeof responseOptions !== 'object') { + throw new InvalidArgumentError('responseOptions must be an object') + } + } + + /** + * Mock an undici request with a defined reply. + */ + reply (replyData) { + // Values of reply aren't available right now as they + // can only be available when the reply callback is invoked. + if (typeof replyData === 'function') { + // We'll first wrap the provided callback in another function, + // this function will properly resolve the data from the callback + // when invoked. + const wrappedDefaultsCallback = (opts) => { + // Our reply options callback contains the parameter for statusCode, data and options. + const resolvedData = replyData(opts) + + // Check if it is in the right format + if (typeof resolvedData !== 'object') { + throw new InvalidArgumentError('reply options callback must return an object') + } + + const { statusCode, data = '', responseOptions = {} } = resolvedData + this.validateReplyParameters(statusCode, data, responseOptions) + // Since the values can be obtained immediately we return them + // from this higher order function that will be resolved later. + return { + ...this.createMockScopeDispatchData(statusCode, data, responseOptions) + } + } + + // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback) + return new MockScope(newMockDispatch) + } + + // We can have either one or three parameters, if we get here, + // we should have 1-3 parameters. So we spread the arguments of + // this function to obtain the parameters, since replyData will always + // just be the statusCode. + const [statusCode, data = '', responseOptions = {}] = [...arguments] + this.validateReplyParameters(statusCode, data, responseOptions) + + // Send in-already provided data like usual + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions) + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData) + return new MockScope(newMockDispatch) + } + + /** + * Mock an undici request with a defined error. + */ + replyWithError (error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined') + } + + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }) + return new MockScope(newMockDispatch) + } + + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders (headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined') + } + + this[kDefaultHeaders] = headers + return this + } + + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers (trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined') + } + + this[kDefaultTrailers] = trailers + return this + } + + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength () { + this[kContentLength] = true + return this + } +} + +module.exports.MockInterceptor = MockInterceptor +module.exports.MockScope = MockScope + + +/***/ }), + +/***/ 94004: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { promisify } = __nccwpck_require__(39023) +const Pool = __nccwpck_require__(35076) +const { buildMockDispatch } = __nccwpck_require__(53397) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(91117) +const { MockInterceptor } = __nccwpck_require__(31511) +const Symbols = __nccwpck_require__(36443) +const { InvalidArgumentError } = __nccwpck_require__(68707) + +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +class MockPool extends Pool { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockPool + + +/***/ }), + +/***/ 91117: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kAgent: Symbol('agent'), + kOptions: Symbol('options'), + kFactory: Symbol('factory'), + kDispatches: Symbol('dispatches'), + kDispatchKey: Symbol('dispatch key'), + kDefaultHeaders: Symbol('default headers'), + kDefaultTrailers: Symbol('default trailers'), + kContentLength: Symbol('content length'), + kMockAgent: Symbol('mock agent'), + kMockAgentSet: Symbol('mock agent set'), + kMockAgentGet: Symbol('mock agent get'), + kMockDispatch: Symbol('mock dispatch'), + kClose: Symbol('close'), + kOriginalClose: Symbol('original agent close'), + kOrigin: Symbol('origin'), + kIsMockActive: Symbol('is mock active'), + kNetConnect: Symbol('net connect'), + kGetNetConnect: Symbol('get net connect'), + kConnected: Symbol('connected') +} + + +/***/ }), + +/***/ 53397: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { MockNotMatchedError } = __nccwpck_require__(52429) +const { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect +} = __nccwpck_require__(91117) +const { buildURL, nop } = __nccwpck_require__(3440) +const { STATUS_CODES } = __nccwpck_require__(58611) +const { + types: { + isPromise + } +} = __nccwpck_require__(39023) + +function matchValue (match, value) { + if (typeof match === 'string') { + return match === value + } + if (match instanceof RegExp) { + return match.test(value) + } + if (typeof match === 'function') { + return match(value) === true + } + return false +} + +function lowerCaseEntries (headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue] + }) + ) +} + +/** + * @param {import('../../index').Headers|string[]|Record<string, string>} headers + * @param {string} key + */ +function getHeaderByName (headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1] + } + } + + return undefined + } else if (typeof headers.get === 'function') { + return headers.get(key) + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()] + } +} + +/** @param {string[]} headers */ +function buildHeadersFromArray (headers) { // fetch HeadersList + const clone = headers.slice() + const entries = [] + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]) + } + return Object.fromEntries(entries) +} + +function matchHeaders (mockDispatch, headers) { + if (typeof mockDispatch.headers === 'function') { + if (Array.isArray(headers)) { // fetch HeadersList + headers = buildHeadersFromArray(headers) + } + return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) + } + if (typeof mockDispatch.headers === 'undefined') { + return true + } + if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { + return false + } + + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName) + + if (!matchValue(matchHeaderValue, headerValue)) { + return false + } + } + return true +} + +function safeUrl (path) { + if (typeof path !== 'string') { + return path + } + + const pathSegments = path.split('?') + + if (pathSegments.length !== 2) { + return path + } + + const qp = new URLSearchParams(pathSegments.pop()) + qp.sort() + return [...pathSegments, qp.toString()].join('?') +} + +function matchKey (mockDispatch, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch.path, path) + const methodMatch = matchValue(mockDispatch.method, method) + const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true + const headersMatch = matchHeaders(mockDispatch, headers) + return pathMatch && methodMatch && bodyMatch && headersMatch +} + +function getResponseData (data) { + if (Buffer.isBuffer(data)) { + return data + } else if (typeof data === 'object') { + return JSON.stringify(data) + } else { + return data.toString() + } +} + +function getMockDispatch (mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath + + // Match path + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) + } + + // Match method + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`) + } + + // Match body + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`) + } + + // Match headers + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`) + } + + return matchedMockDispatches[0] +} + +function addMockDispatch (mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } + const replyData = typeof data === 'function' ? { callback: data } : { ...data } + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } + mockDispatches.push(newMockDispatch) + return newMockDispatch +} + +function deleteMockDispatch (mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false + } + return matchKey(dispatch, key) + }) + if (index !== -1) { + mockDispatches.splice(index, 1) + } +} + +function buildKey (opts) { + const { path, method, body, headers, query } = opts + return { + path, + method, + body, + headers, + query + } +} + +function generateKeyValues (data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []) +} + +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText (statusCode) { + return STATUS_CODES[statusCode] || 'unknown' +} + +async function getResponse (body) { + const buffers = [] + for await (const data of body) { + buffers.push(data) + } + return Buffer.concat(buffers).toString('utf8') +} + +/** + * Mock dispatch function used to simulate undici dispatches + */ +function mockDispatch (opts, handler) { + // Get mock dispatch from built key + const key = buildKey(opts) + const mockDispatch = getMockDispatch(this[kDispatches], key) + + mockDispatch.timesInvoked++ + + // Here's where we resolve a callback if a callback is present for the dispatch data. + if (mockDispatch.data.callback) { + mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } + } + + // Parse mockDispatch data + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch + const { timesInvoked, times } = mockDispatch + + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times + mockDispatch.pending = timesInvoked < times + + // If specified, trigger dispatch error + if (error !== null) { + deleteMockDispatch(this[kDispatches], key) + handler.onError(error) + return true + } + + // Handle the request with a delay if necessary + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]) + }, delay) + } else { + handleReply(this[kDispatches]) + } + + function handleReply (mockDispatches, _data = data) { + // fetch's HeadersList is a 1D string array + const optsHeaders = Array.isArray(opts.headers) + ? buildHeadersFromArray(opts.headers) + : opts.headers + const body = typeof _data === 'function' + ? _data({ ...opts, headers: optsHeaders }) + : _data + + // util.types.isPromise is likely needed for jest. + if (isPromise(body)) { + // If handleReply is asynchronous, throwing an error + // in the callback will reject the promise, rather than + // synchronously throw the error, which breaks some tests. + // Rather, we wait for the callback to resolve if it is a + // promise, and then re-run handleReply with the new body. + body.then((newData) => handleReply(mockDispatches, newData)) + return + } + + const responseData = getResponseData(body) + const responseHeaders = generateKeyValues(headers) + const responseTrailers = generateKeyValues(trailers) + + handler.abort = nop + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)) + handler.onData(Buffer.from(responseData)) + handler.onComplete(responseTrailers) + deleteMockDispatch(mockDispatches, key) + } + + function resume () {} + + return true +} + +function buildMockDispatch () { + const agent = this[kMockAgent] + const origin = this[kOrigin] + const originalDispatch = this[kOriginalDispatch] + + return function dispatch (opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler) + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect]() + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler) + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) + } + } else { + throw error + } + } + } else { + originalDispatch.call(this, opts, handler) + } + } +} + +function checkNetConnect (netConnect, origin) { + const url = new URL(origin) + if (netConnect === true) { + return true + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true + } + return false +} + +function buildMockOptions (opts) { + if (opts) { + const { agent, ...mockOptions } = opts + return mockOptions + } +} + +module.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName +} + + +/***/ }), + +/***/ 56142: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Transform } = __nccwpck_require__(2203) +const { Console } = __nccwpck_require__(64236) + +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = class PendingInterceptorsFormatter { + constructor ({ disableColors } = {}) { + this.transform = new Transform({ + transform (chunk, _enc, cb) { + cb(null, chunk) + } + }) + + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }) + } + + format (pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '✅' : '❌', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + })) + + this.logger.table(withPrettyHeaders) + return this.transform.read().toString() + } +} + + +/***/ }), + +/***/ 91529: +/***/ ((module) => { + +"use strict"; + + +const singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' +} + +const plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' +} + +module.exports = class Pluralizer { + constructor (singular, plural) { + this.singular = singular + this.plural = plural + } + + pluralize (count) { + const one = count === 1 + const keys = one ? singulars : plurals + const noun = one ? this.singular : this.plural + return { ...keys, count, noun } + } +} + + +/***/ }), + +/***/ 34869: +/***/ ((module) => { + +"use strict"; +/* eslint-disable */ + + + +// Extracted from node/lib/internal/fixed_queue.js + +// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. +const kSize = 2048; +const kMask = kSize - 1; + +// The FixedQueue is implemented as a singly-linked list of fixed-size +// circular buffers. It looks something like this: +// +// head tail +// | | +// v v +// +-----------+ <-----\ +-----------+ <------\ +-----------+ +// | [null] | \----- | next | \------- | next | +// +-----------+ +-----------+ +-----------+ +// | item | <-- bottom | item | <-- bottom | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | bottom --> | item | +// | item | | item | | item | +// | ... | | ... | | ... | +// | item | | item | | item | +// | item | | item | | item | +// | [empty] | <-- top | item | | item | +// | [empty] | | item | | item | +// | [empty] | | [empty] | <-- top top --> | [empty] | +// +-----------+ +-----------+ +-----------+ +// +// Or, if there is only one circular buffer, it looks something +// like either of these: +// +// head tail head tail +// | | | | +// v v v v +// +-----------+ +-----------+ +// | [null] | | [null] | +// +-----------+ +-----------+ +// | [empty] | | item | +// | [empty] | | item | +// | item | <-- bottom top --> | [empty] | +// | item | | [empty] | +// | [empty] | <-- top bottom --> | item | +// | [empty] | | item | +// +-----------+ +-----------+ +// +// Adding a value means moving `top` forward by one, removing means +// moving `bottom` forward by one. After reaching the end, the queue +// wraps around. +// +// When `top === bottom` the current queue is empty and when +// `top + 1 === bottom` it's full. This wastes a single space of storage +// but allows much quicker checks. + +class FixedCircularBuffer { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + + isEmpty() { + return this.top === this.bottom; + } + + isFull() { + return ((this.top + 1) & kMask) === this.bottom; + } + + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } + + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === undefined) + return null; + this.list[this.bottom] = undefined; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; + } +} + +module.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + + isEmpty() { + return this.head.isEmpty(); + } + + push(data) { + if (this.head.isFull()) { + // Head is full: Creates a new queue, sets the old queue's `.next` to it, + // and sets it as the new main queue. + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + // If there is another queue, it forms the new tail. + this.tail = tail.next; + } + return next; + } +}; + + +/***/ }), + +/***/ 58640: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const DispatcherBase = __nccwpck_require__(50001) +const FixedQueue = __nccwpck_require__(34869) +const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(36443) +const PoolStats = __nccwpck_require__(24622) + +const kClients = Symbol('clients') +const kNeedDrain = Symbol('needDrain') +const kQueue = Symbol('queue') +const kClosedResolve = Symbol('closed resolve') +const kOnDrain = Symbol('onDrain') +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kGetDispatcher = Symbol('get dispatcher') +const kAddClient = Symbol('add client') +const kRemoveClient = Symbol('remove client') +const kStats = Symbol('stats') + +class PoolBase extends DispatcherBase { + constructor () { + super() + + this[kQueue] = new FixedQueue() + this[kClients] = [] + this[kQueued] = 0 + + const pool = this + + this[kOnDrain] = function onDrain (origin, targets) { + const queue = pool[kQueue] + + let needDrain = false + + while (!needDrain) { + const item = queue.shift() + if (!item) { + break + } + pool[kQueued]-- + needDrain = !this.dispatch(item.opts, item.handler) + } + + this[kNeedDrain] = needDrain + + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false + pool.emit('drain', origin, [pool, ...targets]) + } + + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise + .all(pool[kClients].map(c => c.close())) + .then(pool[kClosedResolve]) + } + } + + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err) + } + + this[kStats] = new PoolStats(this) + } + + get [kBusy] () { + return this[kNeedDrain] + } + + get [kConnected] () { + return this[kClients].filter(client => client[kConnected]).length + } + + get [kFree] () { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length + } + + get [kPending] () { + let ret = this[kQueued] + for (const { [kPending]: pending } of this[kClients]) { + ret += pending + } + return ret + } + + get [kRunning] () { + let ret = 0 + for (const { [kRunning]: running } of this[kClients]) { + ret += running + } + return ret + } + + get [kSize] () { + let ret = this[kQueued] + for (const { [kSize]: size } of this[kClients]) { + ret += size + } + return ret + } + + get stats () { + return this[kStats] + } + + async [kClose] () { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map(c => c.close())) + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve + }) + } + } + + async [kDestroy] (err) { + while (true) { + const item = this[kQueue].shift() + if (!item) { + break + } + item.handler.onError(err) + } + + return Promise.all(this[kClients].map(c => c.destroy(err))) + } + + [kDispatch] (opts, handler) { + const dispatcher = this[kGetDispatcher]() + + if (!dispatcher) { + this[kNeedDrain] = true + this[kQueue].push({ opts, handler }) + this[kQueued]++ + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true + this[kNeedDrain] = !this[kGetDispatcher]() + } + + return !this[kNeedDrain] + } + + [kAddClient] (client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + this[kClients].push(client) + + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]) + } + }) + } + + return this + } + + [kRemoveClient] (client) { + client.close(() => { + const idx = this[kClients].indexOf(client) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + }) + + this[kNeedDrain] = this[kClients].some(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + } +} + +module.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} + + +/***/ }), + +/***/ 24622: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(36443) +const kPool = Symbol('pool') + +class PoolStats { + constructor (pool) { + this[kPool] = pool + } + + get connected () { + return this[kPool][kConnected] + } + + get free () { + return this[kPool][kFree] + } + + get pending () { + return this[kPool][kPending] + } + + get queued () { + return this[kPool][kQueued] + } + + get running () { + return this[kPool][kRunning] + } + + get size () { + return this[kPool][kSize] + } +} + +module.exports = PoolStats + + +/***/ }), + +/***/ 35076: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher +} = __nccwpck_require__(58640) +const Client = __nccwpck_require__(86197) +const { + InvalidArgumentError +} = __nccwpck_require__(68707) +const util = __nccwpck_require__(3440) +const { kUrl, kInterceptors } = __nccwpck_require__(36443) +const buildConnector = __nccwpck_require__(59136) + +const kOptions = Symbol('options') +const kConnections = Symbol('connections') +const kFactory = Symbol('factory') + +function defaultFactory (origin, opts) { + return new Client(origin, opts) +} + +class Pool extends PoolBase { + constructor (origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super() + + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) + ? options.interceptors.Pool + : [] + this[kConnections] = connections || null + this[kUrl] = util.parseOrigin(origin) + this[kOptions] = { ...util.deepClone(options), connect, allowH2 } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kFactory] = factory + + this.on('connectionError', (origin, targets, error) => { + // If a connection error occurs, we remove the client from the pool, + // and emit a connectionError event. They will not be re-used. + // Fixes https://github.com/nodejs/undici/issues/3895 + for (const target of targets) { + // Do not use kRemoveClient here, as it will close the client, + // but the client cannot be closed in this state. + const idx = this[kClients].indexOf(target) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + } + }) + } + + [kGetDispatcher] () { + let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain]) + + if (dispatcher) { + return dispatcher + } + + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]) + this[kAddClient](dispatcher) + } + + return dispatcher + } +} + +module.exports = Pool + + +/***/ }), + +/***/ 22720: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(36443) +const { URL } = __nccwpck_require__(87016) +const Agent = __nccwpck_require__(59965) +const Pool = __nccwpck_require__(35076) +const DispatcherBase = __nccwpck_require__(50001) +const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(68707) +const buildConnector = __nccwpck_require__(59136) + +const kAgent = Symbol('proxy agent') +const kClient = Symbol('proxy client') +const kProxyHeaders = Symbol('proxy headers') +const kRequestTls = Symbol('request tls settings') +const kProxyTls = Symbol('proxy tls settings') +const kConnectEndpoint = Symbol('connect endpoint function') + +function defaultProtocolPort (protocol) { + return protocol === 'https:' ? 443 : 80 +} + +function buildProxyOptions (opts) { + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + return { + uri: opts.uri, + protocol: opts.protocol || 'https' + } +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class ProxyAgent extends DispatcherBase { + constructor (opts) { + super(opts) + this[kProxy] = buildProxyOptions(opts) + this[kAgent] = new Agent(opts) + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) + ? opts.interceptors.ProxyAgent + : [] + + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + const { clientFactory = defaultFactory } = opts + + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') + } + + this[kRequestTls] = opts.requestTls + this[kProxyTls] = opts.proxyTls + this[kProxyHeaders] = opts.headers || {} + + const resolvedUrl = new URL(opts.uri) + const { origin, port, host, username, password } = resolvedUrl + + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token') + } else if (opts.auth) { + /* @deprecated in favour of opts.token */ + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` + } + + const connect = buildConnector({ ...opts.proxyTls }) + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) + this[kClient] = clientFactory(resolvedUrl, { connect }) + this[kAgent] = new Agent({ + ...opts, + connect: async (opts, callback) => { + let requestedHost = opts.host + if (!opts.port) { + requestedHost += `:${defaultProtocolPort(opts.protocol)}` + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts.signal, + headers: { + ...this[kProxyHeaders], + host + } + }) + if (statusCode !== 200) { + socket.on('error', () => {}).destroy() + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)) + } + if (opts.protocol !== 'https:') { + callback(null, socket) + return + } + let servername + if (this[kRequestTls]) { + servername = this[kRequestTls].servername + } else { + servername = opts.servername + } + this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) + } catch (err) { + callback(err) + } + } + }) + } + + dispatch (opts, handler) { + const { host } = new URL(opts.origin) + const headers = buildHeaders(opts.headers) + throwIfProxyAuthIsSent(headers) + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ) + } + + async [kClose] () { + await this[kAgent].close() + await this[kClient].close() + } + + async [kDestroy] () { + await this[kAgent].destroy() + await this[kClient].destroy() + } +} + +/** + * @param {string[] | Record<string, string>} headers + * @returns {Record<string, string>} + */ +function buildHeaders (headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record<string, string>} */ + const headersPair = {} + + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1] + } + + return headersPair + } + + return headers +} + +/** + * @param {Record<string, string>} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent (headers) { + const existProxyAuth = headers && Object.keys(headers) + .find((key) => key.toLowerCase() === 'proxy-authorization') + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') + } +} + +module.exports = ProxyAgent + + +/***/ }), + +/***/ 28804: +/***/ ((module) => { + +"use strict"; + + +let fastNow = Date.now() +let fastNowTimeout + +const fastTimers = [] + +function onTimeout () { + fastNow = Date.now() + + let len = fastTimers.length + let idx = 0 + while (idx < len) { + const timer = fastTimers[idx] + + if (timer.state === 0) { + timer.state = fastNow + timer.delay + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1 + timer.callback(timer.opaque) + } + + if (timer.state === -1) { + timer.state = -2 + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop() + } else { + fastTimers.pop() + } + len -= 1 + } else { + idx += 1 + } + } + + if (fastTimers.length > 0) { + refreshTimeout() + } +} + +function refreshTimeout () { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh() + } else { + clearTimeout(fastNowTimeout) + fastNowTimeout = setTimeout(onTimeout, 1e3) + if (fastNowTimeout.unref) { + fastNowTimeout.unref() + } + } +} + +class Timeout { + constructor (callback, delay, opaque) { + this.callback = callback + this.delay = delay + this.opaque = opaque + + // -2 not in timer list + // -1 in timer list but inactive + // 0 in timer list waiting for time + // > 0 in timer list waiting for time to expire + this.state = -2 + + this.refresh() + } + + refresh () { + if (this.state === -2) { + fastTimers.push(this) + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout() + } + } + + this.state = 0 + } + + clear () { + this.state = -1 + } +} + +module.exports = { + setTimeout (callback, delay, opaque) { + return delay < 1e3 + ? setTimeout(callback, delay, opaque) + : new Timeout(callback, delay, opaque) + }, + clearTimeout (timeout) { + if (timeout instanceof Timeout) { + timeout.clear() + } else { + clearTimeout(timeout) + } + } +} + + +/***/ }), + +/***/ 68550: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const diagnosticsChannel = __nccwpck_require__(31637) +const { uid, states } = __nccwpck_require__(45913) +const { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose +} = __nccwpck_require__(62933) +const { fireEvent, failWebsocketConnection } = __nccwpck_require__(3574) +const { CloseEvent } = __nccwpck_require__(46255) +const { makeRequest } = __nccwpck_require__(25194) +const { fetching } = __nccwpck_require__(12315) +const { Headers } = __nccwpck_require__(26349) +const { getGlobalDispatcher } = __nccwpck_require__(32581) +const { kHeadersList } = __nccwpck_require__(36443) + +const channels = {} +channels.open = diagnosticsChannel.channel('undici:websocket:open') +channels.close = diagnosticsChannel.channel('undici:websocket:close') +channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error') + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(76982) +} catch { + +} + +/** + * @see https://websockets.spec.whatwg.org/#concept-websocket-establish + * @param {URL} url + * @param {string|string[]} protocols + * @param {import('./websocket').WebSocket} ws + * @param {(response: any) => void} onEstablish + * @param {Partial<import('../../types/websocket').WebSocketInit>} options + */ +function establishWebSocketConnection (url, protocols, ws, onEstablish, options) { + // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s + // scheme is "ws", and to "https" otherwise. + const requestURL = url + + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:' + + // 2. Let request be a new request, whose URL is requestURL, client is client, + // service-workers mode is "none", referrer is "no-referrer", mode is + // "websocket", credentials mode is "include", cache mode is "no-store" , + // and redirect mode is "error". + const request = makeRequest({ + urlList: [requestURL], + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }) + + // Note: undici extension, allow setting custom headers. + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList] + + request.headersList = headersList + } + + // 3. Append (`Upgrade`, `websocket`) to request’s header list. + // 4. Append (`Connection`, `Upgrade`) to request’s header list. + // Note: both of these are handled by undici currently. + // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 + + // 5. Let keyValue be a nonce consisting of a randomly selected + // 16-byte value that has been forgiving-base64-encoded and + // isomorphic encoded. + const keyValue = crypto.randomBytes(16).toString('base64') + + // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s + // header list. + request.headersList.append('sec-websocket-key', keyValue) + + // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s + // header list. + request.headersList.append('sec-websocket-version', '13') + + // 8. For each protocol in protocols, combine + // (`Sec-WebSocket-Protocol`, protocol) in request’s header + // list. + for (const protocol of protocols) { + request.headersList.append('sec-websocket-protocol', protocol) + } + + // 9. Let permessageDeflate be a user-agent defined + // "permessage-deflate" extension header value. + // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 + // TODO: enable once permessage-deflate is supported + const permessageDeflate = '' // 'permessage-deflate; 15' + + // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to + // request’s header list. + // request.headersList.append('sec-websocket-extensions', permessageDeflate) + + // 11. Fetch request with useParallelQueue set to true, and + // processResponse given response being these steps: + const controller = fetching({ + request, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse (response) { + // 1. If response is a network error or its status is not 101, + // fail the WebSocket connection. + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.') + return + } + + // 2. If protocols is not the empty list and extracting header + // list values given `Sec-WebSocket-Protocol` and response’s + // header list results in null, failure, or the empty byte + // sequence, then fail the WebSocket connection. + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.') + return + } + + // 3. Follow the requirements stated step 2 to step 6, inclusive, + // of the last set of steps in section 4.1 of The WebSocket + // Protocol to validate response. This either results in fail + // the WebSocket connection or the WebSocket connection is + // established. + + // 2. If the response lacks an |Upgrade| header field or the |Upgrade| + // header field contains a value that is not an ASCII case- + // insensitive match for the value "websocket", the client MUST + // _Fail the WebSocket Connection_. + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".') + return + } + + // 3. If the response lacks a |Connection| header field or the + // |Connection| header field doesn't contain a token that is an + // ASCII case-insensitive match for the value "Upgrade", the client + // MUST _Fail the WebSocket Connection_. + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".') + return + } + + // 4. If the response lacks a |Sec-WebSocket-Accept| header field or + // the |Sec-WebSocket-Accept| contains a value other than the + // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- + // Key| (as a string, not base64-decoded) with the string "258EAFA5- + // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and + // trailing whitespace, the client MUST _Fail the WebSocket + // Connection_. + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept') + const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64') + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.') + return + } + + // 5. If the response includes a |Sec-WebSocket-Extensions| header + // field and this header field indicates the use of an extension + // that was not present in the client's handshake (the server has + // indicated an extension not requested by the client), the client + // MUST _Fail the WebSocket Connection_. (The parsing of this + // header field to determine which extensions are requested is + // discussed in Section 9.1.) + const secExtension = response.headersList.get('Sec-WebSocket-Extensions') + + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.') + return + } + + // 6. If the response includes a |Sec-WebSocket-Protocol| header field + // and this header field indicates the use of a subprotocol that was + // not present in the client's handshake (the server has indicated a + // subprotocol not requested by the client), the client MUST _Fail + // the WebSocket Connection_. + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol') + + if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.') + return + } + + response.socket.on('data', onSocketData) + response.socket.on('close', onSocketClose) + response.socket.on('error', onSocketError) + + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }) + } + + onEstablish(response) + } + }) + + return controller +} + +/** + * @param {Buffer} chunk + */ +function onSocketData (chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause() + } +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ +function onSocketClose () { + const { ws } = this + + // If the TCP connection was closed after the + // WebSocket closing handshake was completed, the WebSocket connection + // is said to have been closed _cleanly_. + const wasClean = ws[kSentClose] && ws[kReceivedClose] + + let code = 1005 + let reason = '' + + const result = ws[kByteParser].closingInfo + + if (result) { + code = result.code ?? 1005 + reason = result.reason + } else if (!ws[kSentClose]) { + // If _The WebSocket + // Connection is Closed_ and no Close control frame was received by the + // endpoint (such as could occur if the underlying transport connection + // is lost), _The WebSocket Connection Close Code_ is considered to be + // 1006. + code = 1006 + } + + // 1. Change the ready state to CLOSED (3). + ws[kReadyState] = states.CLOSED + + // 2. If the user agent was required to fail the WebSocket + // connection, or if the WebSocket connection was closed + // after being flagged as full, fire an event named error + // at the WebSocket object. + // TODO + + // 3. Fire an event named close at the WebSocket object, + // using CloseEvent, with the wasClean attribute + // initialized to true if the connection closed cleanly + // and false otherwise, the code attribute initialized to + // the WebSocket connection close code, and the reason + // attribute initialized to the result of applying UTF-8 + // decode without BOM to the WebSocket connection close + // reason. + fireEvent('close', ws, CloseEvent, { + wasClean, code, reason + }) + + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }) + } +} + +function onSocketError (error) { + const { ws } = this + + ws[kReadyState] = states.CLOSING + + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error) + } + + this.destroy() +} + +module.exports = { + establishWebSocketConnection +} + + +/***/ }), + +/***/ 45913: +/***/ ((module) => { + +"use strict"; + + +// This is a Globally Unique Identifier unique used +// to validate that the endpoint accepts websocket +// connections. +// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 +const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +const states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 +} + +const opcodes = { + CONTINUATION: 0x0, + TEXT: 0x1, + BINARY: 0x2, + CLOSE: 0x8, + PING: 0x9, + PONG: 0xA +} + +const maxUnsigned16Bit = 2 ** 16 - 1 // 65535 + +const parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 +} + +const emptyBuffer = Buffer.allocUnsafe(0) + +module.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer +} + + +/***/ }), + +/***/ 46255: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(74222) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const { MessagePort } = __nccwpck_require__(28167) + +/** + * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent + */ +class MessageEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.MessageEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + } + + get data () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.data + } + + get origin () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.origin + } + + get lastEventId () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.lastEventId + } + + get source () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.source + } + + get ports () { + webidl.brandCheck(this, MessageEvent) + + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports) + } + + return this.#eventInit.ports + } + + initMessageEvent ( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, MessageEvent) + + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }) + + return new MessageEvent(type, { + bubbles, cancelable, data, origin, lastEventId, source, ports + }) + } +} + +/** + * @see https://websockets.spec.whatwg.org/#the-closeevent-interface + */ +class CloseEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.CloseEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + } + + get wasClean () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.wasClean + } + + get code () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.code + } + + get reason () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.reason + } +} + +// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface +class ErrorEvent extends Event { + #eventInit + + constructor (type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }) + + super(type, eventInitDict) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}) + + this.#eventInit = eventInitDict + } + + get message () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.message + } + + get filename () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.filename + } + + get lineno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.lineno + } + + get colno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.colno + } + + get error () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.error + } +} + +Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty +}) + +Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty +}) + +Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty +}) + +webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort) + +webidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter( + webidl.converters.MessagePort +) + +const eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } +] + +webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: 'ports', + converter: webidl.converters['sequence<MessagePort>'], + get defaultValue () { + return [] + } + } +]) + +webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: '' + } +]) + +webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'error', + converter: webidl.converters.any + } +]) + +module.exports = { + MessageEvent, + CloseEvent, + ErrorEvent +} + + +/***/ }), + +/***/ 31237: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { maxUnsigned16Bit } = __nccwpck_require__(45913) + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(76982) +} catch { + +} + +class WebsocketFrameSend { + /** + * @param {Buffer|undefined} data + */ + constructor (data) { + this.frameData = data + this.maskKey = crypto.randomBytes(4) + } + + createFrame (opcode) { + const bodyLength = this.frameData?.byteLength ?? 0 + + /** @type {number} */ + let payloadLength = bodyLength // 0-125 + let offset = 6 + + if (bodyLength > maxUnsigned16Bit) { + offset += 8 // payload length is next 8 bytes + payloadLength = 127 + } else if (bodyLength > 125) { + offset += 2 // payload length is next 2 bytes + payloadLength = 126 + } + + const buffer = Buffer.allocUnsafe(bodyLength + offset) + + // Clear first 2 bytes, everything else is overwritten + buffer[0] = buffer[1] = 0 + buffer[0] |= 0x80 // FIN + buffer[0] = (buffer[0] & 0xF0) + opcode // opcode + + /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */ + buffer[offset - 4] = this.maskKey[0] + buffer[offset - 3] = this.maskKey[1] + buffer[offset - 2] = this.maskKey[2] + buffer[offset - 1] = this.maskKey[3] + + buffer[1] = payloadLength + + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2) + } else if (payloadLength === 127) { + // Clear extended payload length + buffer[2] = buffer[3] = 0 + buffer.writeUIntBE(bodyLength, 4, 6) + } + + buffer[1] |= 0x80 // MASK + + // mask body + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4] + } + + return buffer + } +} + +module.exports = { + WebsocketFrameSend +} + + +/***/ }), + +/***/ 43171: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Writable } = __nccwpck_require__(2203) +const diagnosticsChannel = __nccwpck_require__(31637) +const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(45913) +const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(62933) +const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = __nccwpck_require__(3574) +const { WebsocketFrameSend } = __nccwpck_require__(31237) + +// This code was influenced by ws released under the MIT license. +// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com> +// Copyright (c) 2013 Arnout Kazemier and contributors +// Copyright (c) 2016 Luigi Pinca and contributors + +const channels = {} +channels.ping = diagnosticsChannel.channel('undici:websocket:ping') +channels.pong = diagnosticsChannel.channel('undici:websocket:pong') + +class ByteParser extends Writable { + #buffers = [] + #byteOffset = 0 + + #state = parserStates.INFO + + #info = {} + #fragments = [] + + constructor (ws) { + super() + + this.ws = ws + } + + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write (chunk, _, callback) { + this.#buffers.push(chunk) + this.#byteOffset += chunk.length + + this.run(callback) + } + + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run (callback) { + while (true) { + if (this.#state === parserStates.INFO) { + // If there aren't enough bytes to parse the payload length, etc. + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.fin = (buffer[0] & 0x80) !== 0 + this.#info.opcode = buffer[0] & 0x0F + + // If we receive a fragmented message, we use the type of the first + // frame to parse the full message as binary/text, when it's terminated + this.#info.originalOpcode ??= this.#info.opcode + + this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION + + if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { + // Only text and binary frames can be fragmented + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.') + return + } + + const payloadLength = buffer[1] & 0x7F + + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength + this.#state = parserStates.READ_DATA + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16 + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64 + } + + if (this.#info.fragmented && payloadLength > 125) { + // A fragmented frame can't be fragmented itself + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.') + return + } else if ( + (this.#info.opcode === opcodes.PING || + this.#info.opcode === opcodes.PONG || + this.#info.opcode === opcodes.CLOSE) && + payloadLength > 125 + ) { + // Control frames can have a payload length of 125 bytes MAX + failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.') + return + } else if (this.#info.opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.') + return + } + + const body = this.consume(payloadLength) + + this.#info.closeInfo = this.parseCloseBody(false, body) + + if (!this.ws[kSentClose]) { + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) + const body = Buffer.allocUnsafe(2) + body.writeUInt16BE(this.#info.closeInfo.code, 0) + const closeFrame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true + } + } + ) + } + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this.ws[kReadyState] = states.CLOSING + this.ws[kReceivedClose] = true + + this.end() + + return + } else if (this.#info.opcode === opcodes.PING) { + // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in + // response, unless it already received a Close frame. + // A Pong frame sent in response to a Ping frame must have identical + // "Application data" + + const body = this.consume(payloadLength) + + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)) + + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }) + } + } + + this.#state = parserStates.INFO + + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } + } else if (this.#info.opcode === opcodes.PONG) { + // A Pong frame MAY be sent unsolicited. This serves as a + // unidirectional heartbeat. A response to an unsolicited Pong frame is + // not expected. + + const body = this.consume(payloadLength) + + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }) + } + + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } + } + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.payloadLength = buffer.readUInt16BE(0) + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback() + } + + const buffer = this.consume(8) + const upper = buffer.readUInt32BE(0) + + // 2^31 is the maxinimum bytes an arraybuffer can contain + // on 32-bit systems. Although, on 64-bit systems, this is + // 2^53-1 bytes. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.') + return + } + + const lower = buffer.readUInt32BE(4) + + this.#info.payloadLength = (upper << 8) + lower + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + // If there is still more data in this chunk that needs to be read + return callback() + } else if (this.#byteOffset >= this.#info.payloadLength) { + // If the server sent multiple frames in a single chunk + + const body = this.consume(this.#info.payloadLength) + + this.#fragments.push(body) + + // If the frame is unfragmented, or a fragmented frame was terminated, + // a message was received + if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { + const fullMessage = Buffer.concat(this.#fragments) + + websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage) + + this.#info = {} + this.#fragments.length = 0 + } + + this.#state = parserStates.INFO + } + } + + if (this.#byteOffset > 0) { + continue + } else { + callback() + break + } + } + } + + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume (n) { + if (n > this.#byteOffset) { + return null + } else if (n === 0) { + return emptyBuffer + } + + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length + return this.#buffers.shift() + } + + const buffer = Buffer.allocUnsafe(n) + let offset = 0 + + while (offset !== n) { + const next = this.#buffers[0] + const { length } = next + + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset) + break + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset) + this.#buffers[0] = next.subarray(n - offset) + break + } else { + buffer.set(this.#buffers.shift(), offset) + offset += next.length + } + } + + this.#byteOffset -= n + + return buffer + } + + parseCloseBody (onlyCode, data) { + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 + /** @type {number|undefined} */ + let code + + if (data.length >= 2) { + // _The WebSocket Connection Close Code_ is + // defined as the status code (Section 7.4) contained in the first Close + // control frame received by the application + code = data.readUInt16BE(0) + } + + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null + } + + return { code } + } + + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 + /** @type {Buffer} */ + let reason = data.subarray(2) + + // Remove BOM + if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { + reason = reason.subarray(3) + } + + if (code !== undefined && !isValidStatusCode(code)) { + return null + } + + try { + // TODO: optimize this + reason = new TextDecoder('utf-8', { fatal: true }).decode(reason) + } catch { + return null + } + + return { code, reason } + } + + get closingInfo () { + return this.#info.closeInfo + } +} + +module.exports = { + ByteParser +} + + +/***/ }), + +/***/ 62933: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kWebSocketURL: Symbol('url'), + kReadyState: Symbol('ready state'), + kController: Symbol('controller'), + kResponse: Symbol('response'), + kBinaryType: Symbol('binary type'), + kSentClose: Symbol('sent close'), + kReceivedClose: Symbol('received close'), + kByteParser: Symbol('byte parser') +} + + +/***/ }), + +/***/ 3574: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = __nccwpck_require__(62933) +const { states, opcodes } = __nccwpck_require__(45913) +const { MessageEvent, ErrorEvent } = __nccwpck_require__(46255) + +/* globals Blob */ + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isEstablished (ws) { + // If the server's response is validated as provided for above, it is + // said that _The WebSocket Connection is Established_ and that the + // WebSocket Connection is in the OPEN state. + return ws[kReadyState] === states.OPEN +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosing (ws) { + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + return ws[kReadyState] === states.CLOSING +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosed (ws) { + return ws[kReadyState] === states.CLOSED +} + +/** + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e + * @param {EventTarget} target + * @param {EventInit | undefined} eventInitDict + */ +function fireEvent (e, target, eventConstructor = Event, eventInitDict) { + // 1. If eventConstructor is not given, then let eventConstructor be Event. + + // 2. Let event be the result of creating an event given eventConstructor, + // in the relevant realm of target. + // 3. Initialize event’s type attribute to e. + const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap + + // 4. Initialize any other IDL attributes of event as described in the + // invocation of this algorithm. + + // 5. Return the result of dispatching event at target, with legacy target + // override flag set if set. + target.dispatchEvent(event) +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @param {import('./websocket').WebSocket} ws + * @param {number} type Opcode + * @param {Buffer} data application data + */ +function websocketMessageReceived (ws, type, data) { + // 1. If ready state is not OPEN (1), then return. + if (ws[kReadyState] !== states.OPEN) { + return + } + + // 2. Let dataForEvent be determined by switching on type and binary type: + let dataForEvent + + if (type === opcodes.TEXT) { + // -> type indicates that the data is Text + // a new DOMString containing data + try { + dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data) + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.') + return + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + // -> type indicates that the data is Binary and binary type is "blob" + // a new Blob object, created in the relevant Realm of the WebSocket + // object, that represents data as its raw data + dataForEvent = new Blob([data]) + } else { + // -> type indicates that the data is Binary and binary type is "arraybuffer" + // a new ArrayBuffer object, created in the relevant Realm of the + // WebSocket object, whose contents are data + dataForEvent = new Uint8Array(data).buffer + } + } + + // 3. Fire an event named message at the WebSocket object, using MessageEvent, + // with the origin attribute initialized to the serialization of the WebSocket + // object’s url's origin, and the data attribute initialized to dataForEvent. + fireEvent('message', ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }) +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455 + * @see https://datatracker.ietf.org/doc/html/rfc2616 + * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 + * @param {string} protocol + */ +function isValidSubprotocol (protocol) { + // If present, this value indicates one + // or more comma-separated subprotocol the client wishes to speak, + // ordered by preference. The elements that comprise this value + // MUST be non-empty strings with characters in the range U+0021 to + // U+007E not including separator characters as defined in + // [RFC2616] and MUST all be unique strings. + if (protocol.length === 0) { + return false + } + + for (const char of protocol) { + const code = char.charCodeAt(0) + + if ( + code < 0x21 || + code > 0x7E || + char === '(' || + char === ')' || + char === '<' || + char === '>' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' || + code === 32 || // SP + code === 9 // HT + ) { + return false + } + } + + return true +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 + * @param {number} code + */ +function isValidStatusCode (code) { + if (code >= 1000 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 // "MUST NOT be set as a status code" + ) + } + + return code >= 3000 && code <= 4999 +} + +/** + * @param {import('./websocket').WebSocket} ws + * @param {string|undefined} reason + */ +function failWebsocketConnection (ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws + + controller.abort() + + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy() + } + + if (reason) { + fireEvent('error', ws, ErrorEvent, { + error: new Error(reason) + }) + } +} + +module.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived +} + + +/***/ }), + +/***/ 55171: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(74222) +const { DOMException } = __nccwpck_require__(87326) +const { URLSerializer } = __nccwpck_require__(94322) +const { getGlobalOrigin } = __nccwpck_require__(75628) +const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(45913) +const { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser +} = __nccwpck_require__(62933) +const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = __nccwpck_require__(3574) +const { establishWebSocketConnection } = __nccwpck_require__(68550) +const { WebsocketFrameSend } = __nccwpck_require__(31237) +const { ByteParser } = __nccwpck_require__(43171) +const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3440) +const { getGlobalDispatcher } = __nccwpck_require__(32581) +const { types } = __nccwpck_require__(39023) + +let experimentalWarned = false + +// https://websockets.spec.whatwg.org/#interface-definition +class WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + } + + #bufferedAmount = 0 + #protocol = '' + #extensions = '' + + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor (url, protocols = []) { + super() + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }) + + if (!experimentalWarned) { + experimentalWarned = true + process.emitWarning('WebSockets are experimental, expect them to change at any time.', { + code: 'UNDICI-WS' + }) + } + + const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols) + + url = webidl.converters.USVString(url) + protocols = options.protocols + + // 1. Let baseURL be this's relevant settings object's API base URL. + const baseURL = getGlobalOrigin() + + // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. + let urlRecord + + try { + urlRecord = new URL(url, baseURL) + } catch (e) { + // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError') + } + + // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:' + } else if (urlRecord.protocol === 'https:') { + // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". + urlRecord.protocol = 'wss:' + } + + // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + 'SyntaxError' + ) + } + + // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" + // DOMException. + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError') + } + + // 8. If protocols is a string, set protocols to a sequence consisting + // of just that string. + if (typeof protocols === 'string') { + protocols = [protocols] + } + + // 9. If any of the values in protocols occur more than once or otherwise + // fail to match the requirements for elements that comprise the value + // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket + // protocol, then throw a "SyntaxError" DOMException. + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + // 10. Set this's url to urlRecord. + this[kWebSocketURL] = new URL(urlRecord.href) + + // 11. Let client be this's relevant settings object. + + // 12. Run this step in parallel: + + // 1. Establish a WebSocket connection given urlRecord, protocols, + // and client. + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => this.#onConnectionEstablished(response), + options + ) + + // Each WebSocket object has an associated ready state, which is a + // number representing the state of the connection. Initially it must + // be CONNECTING (0). + this[kReadyState] = WebSocket.CONNECTING + + // The extensions attribute must initially return the empty string. + + // The protocol attribute must initially return the empty string. + + // Each WebSocket object has an associated binary type, which is a + // BinaryType. Initially it must be "blob". + this[kBinaryType] = 'blob' + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close (code = undefined, reason = undefined) { + webidl.brandCheck(this, WebSocket) + + if (code !== undefined) { + code = webidl.converters['unsigned short'](code, { clamp: true }) + } + + if (reason !== undefined) { + reason = webidl.converters.USVString(reason) + } + + // 1. If code is present, but is neither an integer equal to 1000 nor an + // integer in the range 3000 to 4999, inclusive, throw an + // "InvalidAccessError" DOMException. + if (code !== undefined) { + if (code !== 1000 && (code < 3000 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError') + } + } + + let reasonByteLength = 0 + + // 2. If reason is present, then run these substeps: + if (reason !== undefined) { + // 1. Let reasonBytes be the result of encoding reason. + // 2. If reasonBytes is longer than 123 bytes, then throw a + // "SyntaxError" DOMException. + reasonByteLength = Buffer.byteLength(reason) + + if (reasonByteLength > 123) { + throw new DOMException( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + 'SyntaxError' + ) + } + } + + // 3. Run the first matching steps from the following list: + if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { + // If this's ready state is CLOSING (2) or CLOSED (3) + // Do nothing. + } else if (!isEstablished(this)) { + // If the WebSocket connection is not yet established + // Fail the WebSocket connection and set this's ready state + // to CLOSING (2). + failWebsocketConnection(this, 'Connection was closed before it was established.') + this[kReadyState] = WebSocket.CLOSING + } else if (!isClosing(this)) { + // If the WebSocket closing handshake has not yet been started + // Start the WebSocket closing handshake and set this's ready + // state to CLOSING (2). + // - If neither code nor reason is present, the WebSocket Close + // message must not have a body. + // - If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + // - If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + + const frame = new WebsocketFrameSend() + + // If neither code nor reason is present, the WebSocket Close + // message must not have a body. + + // If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + if (code !== undefined && reason === undefined) { + frame.frameData = Buffer.allocUnsafe(2) + frame.frameData.writeUInt16BE(code, 0) + } else if (code !== undefined && reason !== undefined) { + // If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength) + frame.frameData.writeUInt16BE(code, 0) + // the body MAY contain UTF-8-encoded data with value /reason/ + frame.frameData.write(reason, 2, 'utf-8') + } else { + frame.frameData = emptyBuffer + } + + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true + } + }) + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this[kReadyState] = states.CLOSING + } else { + // Otherwise + // Set this's ready state to CLOSING (2). + this[kReadyState] = WebSocket.CLOSING + } + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send (data) { + webidl.brandCheck(this, WebSocket) + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }) + + data = webidl.converters.WebSocketSendData(data) + + // 1. If this's ready state is CONNECTING, then throw an + // "InvalidStateError" DOMException. + if (this[kReadyState] === WebSocket.CONNECTING) { + throw new DOMException('Sent before connected.', 'InvalidStateError') + } + + // 2. Run the appropriate set of steps from the following list: + // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 + // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 + + if (!isEstablished(this) || isClosing(this)) { + return + } + + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + // If data is a string + if (typeof data === 'string') { + // If the WebSocket connection is established and the WebSocket + // closing handshake has not yet started, then the user agent + // must send a WebSocket Message comprised of the data argument + // using a text frame opcode; if the data cannot be sent, e.g. + // because it would need to be buffered but the buffer is full, + // the user agent must flag the WebSocket as full and then close + // the WebSocket connection. Any invocation of this method with a + // string argument that does not throw an exception must increase + // the bufferedAmount attribute by the number of bytes needed to + // express the argument as UTF-8. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.TEXT) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (types.isArrayBuffer(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need + // to be buffered but the buffer is full, the user agent must flag + // the WebSocket as full and then close the WebSocket connection. + // The data to be sent is the data stored in the buffer described + // by the ArrayBuffer object. Any invocation of this method with an + // ArrayBuffer argument that does not throw an exception must + // increase the bufferedAmount attribute by the length of the + // ArrayBuffer in bytes. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (ArrayBuffer.isView(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The + // data to be sent is the data stored in the section of the buffer + // described by the ArrayBuffer object that data references. Any + // invocation of this method with this kind of argument that does + // not throw an exception must increase the bufferedAmount attribute + // by the length of data’s buffer in bytes. + + const ab = Buffer.from(data, data.byteOffset, data.byteLength) + + const frame = new WebsocketFrameSend(ab) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += ab.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= ab.byteLength + }) + } else if (isBlobLike(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The data + // to be sent is the raw data represented by the Blob object. Any + // invocation of this method with a Blob argument that does not throw + // an exception must increase the bufferedAmount attribute by the size + // of the Blob object’s raw data, in bytes. + + const frame = new WebsocketFrameSend() + + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab) + frame.frameData = value + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + }) + } + } + + get readyState () { + webidl.brandCheck(this, WebSocket) + + // The readyState getter steps are to return this's ready state. + return this[kReadyState] + } + + get bufferedAmount () { + webidl.brandCheck(this, WebSocket) + + return this.#bufferedAmount + } + + get url () { + webidl.brandCheck(this, WebSocket) + + // The url getter steps are to return this's url, serialized. + return URLSerializer(this[kWebSocketURL]) + } + + get extensions () { + webidl.brandCheck(this, WebSocket) + + return this.#extensions + } + + get protocol () { + webidl.brandCheck(this, WebSocket) + + return this.#protocol + } + + get onopen () { + webidl.brandCheck(this, WebSocket) + + return this.#events.open + } + + set onopen (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.open) { + this.removeEventListener('open', this.#events.open) + } + + if (typeof fn === 'function') { + this.#events.open = fn + this.addEventListener('open', fn) + } else { + this.#events.open = null + } + } + + get onerror () { + webidl.brandCheck(this, WebSocket) + + return this.#events.error + } + + set onerror (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.error) { + this.removeEventListener('error', this.#events.error) + } + + if (typeof fn === 'function') { + this.#events.error = fn + this.addEventListener('error', fn) + } else { + this.#events.error = null + } + } + + get onclose () { + webidl.brandCheck(this, WebSocket) + + return this.#events.close + } + + set onclose (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.close) { + this.removeEventListener('close', this.#events.close) + } + + if (typeof fn === 'function') { + this.#events.close = fn + this.addEventListener('close', fn) + } else { + this.#events.close = null + } + } + + get onmessage () { + webidl.brandCheck(this, WebSocket) + + return this.#events.message + } + + set onmessage (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.message) { + this.removeEventListener('message', this.#events.message) + } + + if (typeof fn === 'function') { + this.#events.message = fn + this.addEventListener('message', fn) + } else { + this.#events.message = null + } + } + + get binaryType () { + webidl.brandCheck(this, WebSocket) + + return this[kBinaryType] + } + + set binaryType (type) { + webidl.brandCheck(this, WebSocket) + + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob' + } else { + this[kBinaryType] = type + } + } + + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished (response) { + // processResponse is called when the "response’s header list has been received and initialized." + // once this happens, the connection is open + this[kResponse] = response + + const parser = new ByteParser(this) + parser.on('drain', function onParserDrain () { + this.ws[kResponse].socket.resume() + }) + + response.socket.ws = this + this[kByteParser] = parser + + // 1. Change the ready state to OPEN (1). + this[kReadyState] = states.OPEN + + // 2. Change the extensions attribute’s value to the extensions in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 + const extensions = response.headersList.get('sec-websocket-extensions') + + if (extensions !== null) { + this.#extensions = extensions + } + + // 3. Change the protocol attribute’s value to the subprotocol in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 + const protocol = response.headersList.get('sec-websocket-protocol') + + if (protocol !== null) { + this.#protocol = protocol + } + + // 4. Fire an event named open at the WebSocket object. + fireEvent('open', this) + } +} + +// https://websockets.spec.whatwg.org/#dom-websocket-connecting +WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING +// https://websockets.spec.whatwg.org/#dom-websocket-open +WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN +// https://websockets.spec.whatwg.org/#dom-websocket-closing +WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING +// https://websockets.spec.whatwg.org/#dom-websocket-closed +WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED + +Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors +}) + +webidl.converters['sequence<DOMString>'] = webidl.sequenceConverter( + webidl.converters.DOMString +) + +webidl.converters['DOMString or sequence<DOMString>'] = function (V) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence<DOMString>'](V) + } + + return webidl.converters.DOMString(V) +} + +// This implements the propsal made in https://github.com/whatwg/websockets/issues/42 +webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.converters['DOMString or sequence<DOMString>'], + get defaultValue () { + return [] + } + }, + { + key: 'dispatcher', + converter: (V) => V, + get defaultValue () { + return getGlobalDispatcher() + } + }, + { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } +]) + +webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V) + } + + return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) } +} + +webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V) + } + } + + return webidl.converters.USVString(V) +} + +module.exports = { + WebSocket +} + + +/***/ }), + +/***/ 25351: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var xtend = __nccwpck_require__(80869) +var inherits = __nccwpck_require__(39598) + +module.exports = unherit + +// Create a custom constructor which can be modified without affecting the +// original class. +function unherit(Super) { + var result + var key + var value + + inherits(Of, Super) + inherits(From, Of) + + // Clone values. + result = Of.prototype + + for (key in result) { + value = result[key] + + if (value && typeof value === 'object') { + result[key] = 'concat' in value ? value.concat() : xtend(value) + } + } + + return Of + + // Constructor accepting a single argument, which itself is an `arguments` + // object. + function From(parameters) { + return Super.apply(this, parameters) + } + + // Constructor accepting variadic arguments. + function Of() { + if (!(this instanceof Of)) { + return new From(arguments) + } + + return Super.apply(this, arguments) + } +} + + +/***/ }), + +/***/ 10617: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var visit = __nccwpck_require__(53267) + +module.exports = removePosition + +function removePosition(node, force) { + visit(node, force ? hard : soft) + return node +} + +function hard(node) { + delete node.position +} + +function soft(node) { + node.position = undefined +} + + +/***/ }), + +/***/ 65475: +/***/ ((module) => { + +"use strict"; + + +module.exports = convert + +function convert(test) { + if (test == null) { + return ok + } + + if (typeof test === 'string') { + return typeFactory(test) + } + + if (typeof test === 'object') { + return 'length' in test ? anyFactory(test) : allFactory(test) + } + + if (typeof test === 'function') { + return test + } + + throw new Error('Expected function, string, or object as test') +} + +// Utility assert each property in `test` is represented in `node`, and each +// values are strictly equal. +function allFactory(test) { + return all + + function all(node) { + var key + + for (key in test) { + if (node[key] !== test[key]) return false + } + + return true + } +} + +function anyFactory(tests) { + var checks = [] + var index = -1 + + while (++index < tests.length) { + checks[index] = convert(tests[index]) + } + + return any + + function any() { + var index = -1 + + while (++index < checks.length) { + if (checks[index].apply(this, arguments)) { + return true + } + } + + return false + } +} + +// Utility to convert a string into a function which checks a given node’s type +// for said string. +function typeFactory(test) { + return type + + function type(node) { + return Boolean(node && node.type === test) + } +} + +// Utility to return true. +function ok() { + return true +} + + +/***/ }), + +/***/ 8692: +/***/ ((module) => { + +module.exports = color +function color(d) { + return '\u001B[33m' + d + '\u001B[39m' +} + + +/***/ }), + +/***/ 56035: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = visitParents + +var convert = __nccwpck_require__(65475) +var color = __nccwpck_require__(8692) + +var CONTINUE = true +var SKIP = 'skip' +var EXIT = false + +visitParents.CONTINUE = CONTINUE +visitParents.SKIP = SKIP +visitParents.EXIT = EXIT + +function visitParents(tree, test, visitor, reverse) { + var step + var is + + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + visitor = test + test = null + } + + is = convert(test) + step = reverse ? -1 : 1 + + factory(tree, null, [])() + + function factory(node, index, parents) { + var value = typeof node === 'object' && node !== null ? node : {} + var name + + if (typeof value.type === 'string') { + name = + typeof value.tagName === 'string' + ? value.tagName + : typeof value.name === 'string' + ? value.name + : undefined + + visit.displayName = + 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')' + } + + return visit + + function visit() { + var grandparents = parents.concat(node) + var result = [] + var subresult + var offset + + if (!test || is(node, index, parents[parents.length - 1] || null)) { + result = toResult(visitor(node, parents)) + + if (result[0] === EXIT) { + return result + } + } + + if (node.children && result[0] !== SKIP) { + offset = (reverse ? node.children.length : -1) + step + + while (offset > -1 && offset < node.children.length) { + subresult = factory(node.children[offset], offset, grandparents)() + + if (subresult[0] === EXIT) { + return subresult + } + + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step + } + } + + return result + } + } +} + +function toResult(value) { + if (value !== null && typeof value === 'object' && 'length' in value) { + return value + } + + if (typeof value === 'number') { + return [CONTINUE, value] + } + + return [value] +} + + +/***/ }), + +/***/ 53267: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = visit + +var visitParents = __nccwpck_require__(56035) + +var CONTINUE = visitParents.CONTINUE +var SKIP = visitParents.SKIP +var EXIT = visitParents.EXIT + +visit.CONTINUE = CONTINUE +visit.SKIP = SKIP +visit.EXIT = EXIT + +function visit(tree, test, visitor, reverse) { + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + visitor = test + test = null + } + + visitParents(tree, test, overload, reverse) + + function overload(node, parents) { + var parent = parents[parents.length - 1] + var index = parent ? parent.children.indexOf(node) : null + return visitor(node, index, parent) + } +} + + +/***/ }), + +/***/ 34808: +/***/ ((module) => { + +"use strict"; + + +module.exports = factory + +function factory(file) { + var value = String(file) + var indices = [] + var search = /\r?\n|\r/g + + while (search.exec(value)) { + indices.push(search.lastIndex) + } + + indices.push(value.length + 1) + + return { + toPoint: offsetToPoint, + toPosition: offsetToPoint, + toOffset: pointToOffset + } + + // Get the line and column-based `point` for `offset` in the bound indices. + function offsetToPoint(offset) { + var index = -1 + + if (offset > -1 && offset < indices[indices.length - 1]) { + while (++index < indices.length) { + if (indices[index] > offset) { + return { + line: index + 1, + column: offset - (indices[index - 1] || 0) + 1, + offset: offset + } + } + } + } + + return {} + } + + // Get the `offset` for a line and column-based `point` in the bound + // indices. + function pointToOffset(point) { + var line = point && point.line + var column = point && point.column + var offset + + if (!isNaN(line) && !isNaN(column) && line - 1 in indices) { + offset = (indices[line - 2] || 0) + column - 1 || 0 + } + + return offset > -1 && offset < indices[indices.length - 1] ? offset : -1 + } +} + + +/***/ }), + +/***/ 80869: +/***/ ((module) => { + +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} + + +/***/ }), + +/***/ 42613: +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ 90290: +/***/ ((module) => { + +"use strict"; +module.exports = require("async_hooks"); + +/***/ }), + +/***/ 20181: +/***/ ((module) => { + +"use strict"; +module.exports = require("buffer"); + +/***/ }), + +/***/ 35317: +/***/ ((module) => { + +"use strict"; +module.exports = require("child_process"); + +/***/ }), + +/***/ 64236: +/***/ ((module) => { + +"use strict"; +module.exports = require("console"); + +/***/ }), + +/***/ 49140: +/***/ ((module) => { + +"use strict"; +module.exports = require("constants"); + +/***/ }), + +/***/ 76982: +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto"); + +/***/ }), + +/***/ 31637: +/***/ ((module) => { + +"use strict"; +module.exports = require("diagnostics_channel"); + +/***/ }), + +/***/ 24434: +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ 79896: +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ 58611: +/***/ ((module) => { + +"use strict"; +module.exports = require("http"); + +/***/ }), + +/***/ 85675: +/***/ ((module) => { + +"use strict"; +module.exports = require("http2"); + +/***/ }), + +/***/ 65692: +/***/ ((module) => { + +"use strict"; +module.exports = require("https"); + +/***/ }), + +/***/ 69278: +/***/ ((module) => { + +"use strict"; +module.exports = require("net"); + +/***/ }), + +/***/ 77598: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:crypto"); + +/***/ }), + +/***/ 78474: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:events"); + +/***/ }), + +/***/ 57075: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:stream"); + +/***/ }), + +/***/ 57975: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:util"); + +/***/ }), + +/***/ 70857: +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ 16928: +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ 82987: +/***/ ((module) => { + +"use strict"; +module.exports = require("perf_hooks"); + +/***/ }), + +/***/ 83480: +/***/ ((module) => { + +"use strict"; +module.exports = require("querystring"); + +/***/ }), + +/***/ 2203: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 63774: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream/web"); + +/***/ }), + +/***/ 13193: +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ 53557: +/***/ ((module) => { + +"use strict"; +module.exports = require("timers"); + +/***/ }), + +/***/ 64756: +/***/ ((module) => { + +"use strict"; +module.exports = require("tls"); + +/***/ }), + +/***/ 52018: +/***/ ((module) => { + +"use strict"; +module.exports = require("tty"); + +/***/ }), + +/***/ 87016: +/***/ ((module) => { + +"use strict"; +module.exports = require("url"); + +/***/ }), + +/***/ 39023: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 98253: +/***/ ((module) => { + +"use strict"; +module.exports = require("util/types"); + +/***/ }), + +/***/ 28167: +/***/ ((module) => { + +"use strict"; +module.exports = require("worker_threads"); + +/***/ }), + +/***/ 43106: +/***/ ((module) => { + +"use strict"; +module.exports = require("zlib"); + +/***/ }), + +/***/ 90147: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +var picocolors = __nccwpck_require__(57336); +var jsTokens = __nccwpck_require__(85756); +var helperValidatorIdentifier = __nccwpck_require__(76599); + +function isColorSupported() { + return (typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? false : picocolors.isColorSupported + ); +} +const compose = (f, g) => v => f(g(v)); +function buildDefs(colors) { + return { + keyword: colors.cyan, + capitalized: colors.yellow, + jsxIdentifier: colors.yellow, + punctuator: colors.yellow, + number: colors.magenta, + string: colors.green, + regex: colors.magenta, + comment: colors.gray, + invalid: compose(compose(colors.white, colors.bgRed), colors.bold), + gutter: colors.gray, + marker: compose(colors.red, colors.bold), + message: compose(colors.red, colors.bold), + reset: colors.reset + }; +} +const defsOn = buildDefs(picocolors.createColors(true)); +const defsOff = buildDefs(picocolors.createColors(false)); +function getDefs(enabled) { + return enabled ? defsOn : defsOff; +} + +const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); +const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/; +const BRACKET = /^[()[\]{}]$/; +let tokenize; +{ + const JSX_TAG = /^[a-z][\w-]*$/i; + const getTokenType = function (token, offset, text) { + if (token.type === "name") { + if (helperValidatorIdentifier.isKeyword(token.value) || helperValidatorIdentifier.isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) { + return "keyword"; + } + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) { + return "jsxIdentifier"; + } + if (token.value[0] !== token.value[0].toLowerCase()) { + return "capitalized"; + } + } + if (token.type === "punctuator" && BRACKET.test(token.value)) { + return "bracket"; + } + if (token.type === "invalid" && (token.value === "@" || token.value === "#")) { + return "punctuator"; + } + return token.type; + }; + tokenize = function* (text) { + let match; + while (match = jsTokens.default.exec(text)) { + const token = jsTokens.matchToToken(match); + yield { + type: getTokenType(token, match.index, text), + value: token.value + }; + } + }; +} +function highlight(text) { + if (text === "") return ""; + const defs = getDefs(true); + let highlighted = ""; + for (const { + type, + value + } of tokenize(text)) { + if (type in defs) { + highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join("\n"); + } else { + highlighted += value; + } + } + return highlighted; +} + +let deprecationWarningShown = false; +const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +function getMarkerLines(loc, source, opts) { + const startLoc = Object.assign({ + column: 0, + line: -1 + }, loc.start); + const endLoc = Object.assign({}, startLoc, loc.end); + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line; + const startColumn = startLoc.column; + const endLine = endLoc.line; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + if (startLine === -1) { + start = 0; + } + if (endLine === -1) { + end = source.length; + } + const lineDiff = endLine - startLine; + const markerLines = {}; + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + return { + start, + end, + markerLines + }; +} +function codeFrameColumns(rawLines, loc, opts = {}) { + const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode; + const defs = getDefs(shouldHighlight); + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end).length; + const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines; + let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + if (hasMarker) { + let markerLine = ""; + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join(""); + if (lastMarkerLine && opts.message) { + markerLine += " " + defs.message(opts.message); + } + } + return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`; + } + if (shouldHighlight) { + return defs.reset(frame); + } else { + return frame; + } +} +function index (rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + if (process.emitWarning) { + process.emitWarning(message, "DeprecationWarning"); + } else { + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + } + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); +} + +exports.codeFrameColumns = codeFrameColumns; +exports["default"] = index; +exports.highlight = highlight; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 11669: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +class Buffer { + constructor(map, indentChar) { + this._map = null; + this._buf = ""; + this._str = ""; + this._appendCount = 0; + this._last = 0; + this._queue = []; + this._queueCursor = 0; + this._canMarkIdName = true; + this._indentChar = ""; + this._fastIndentations = []; + this._position = { + line: 1, + column: 0 + }; + this._sourcePosition = { + identifierName: undefined, + identifierNamePos: undefined, + line: undefined, + column: undefined, + filename: undefined + }; + this._map = map; + this._indentChar = indentChar; + for (let i = 0; i < 64; i++) { + this._fastIndentations.push(indentChar.repeat(i)); + } + this._allocQueue(); + } + _allocQueue() { + const queue = this._queue; + for (let i = 0; i < 16; i++) { + queue.push({ + char: 0, + repeat: 1, + line: undefined, + column: undefined, + identifierName: undefined, + identifierNamePos: undefined, + filename: "" + }); + } + } + _pushQueue(char, repeat, line, column, filename) { + const cursor = this._queueCursor; + if (cursor === this._queue.length) { + this._allocQueue(); + } + const item = this._queue[cursor]; + item.char = char; + item.repeat = repeat; + item.line = line; + item.column = column; + item.filename = filename; + this._queueCursor++; + } + _popQueue() { + if (this._queueCursor === 0) { + throw new Error("Cannot pop from empty queue"); + } + return this._queue[--this._queueCursor]; + } + get() { + this._flush(); + const map = this._map; + const result = { + code: (this._buf + this._str).trimRight(), + decodedMap: map == null ? void 0 : map.getDecoded(), + get __mergedMap() { + return this.map; + }, + get map() { + const resultMap = map ? map.get() : null; + result.map = resultMap; + return resultMap; + }, + set map(value) { + Object.defineProperty(result, "map", { + value, + writable: true + }); + }, + get rawMappings() { + const mappings = map == null ? void 0 : map.getRawMappings(); + result.rawMappings = mappings; + return mappings; + }, + set rawMappings(value) { + Object.defineProperty(result, "rawMappings", { + value, + writable: true + }); + } + }; + return result; + } + append(str, maybeNewline) { + this._flush(); + this._append(str, this._sourcePosition, maybeNewline); + } + appendChar(char) { + this._flush(); + this._appendChar(char, 1, this._sourcePosition); + } + queue(char) { + if (char === 10) { + while (this._queueCursor !== 0) { + const char = this._queue[this._queueCursor - 1].char; + if (char !== 32 && char !== 9) { + break; + } + this._queueCursor--; + } + } + const sourcePosition = this._sourcePosition; + this._pushQueue(char, 1, sourcePosition.line, sourcePosition.column, sourcePosition.filename); + } + queueIndentation(repeat) { + if (repeat === 0) return; + this._pushQueue(-1, repeat, undefined, undefined, undefined); + } + _flush() { + const queueCursor = this._queueCursor; + const queue = this._queue; + for (let i = 0; i < queueCursor; i++) { + const item = queue[i]; + this._appendChar(item.char, item.repeat, item); + } + this._queueCursor = 0; + } + _appendChar(char, repeat, sourcePos) { + this._last = char; + if (char === -1) { + const fastIndentation = this._fastIndentations[repeat]; + if (fastIndentation !== undefined) { + this._str += fastIndentation; + } else { + this._str += repeat > 1 ? this._indentChar.repeat(repeat) : this._indentChar; + } + } else { + this._str += repeat > 1 ? String.fromCharCode(char).repeat(repeat) : String.fromCharCode(char); + } + if (char !== 10) { + this._mark(sourcePos.line, sourcePos.column, sourcePos.identifierName, sourcePos.identifierNamePos, sourcePos.filename); + this._position.column += repeat; + } else { + this._position.line++; + this._position.column = 0; + } + if (this._canMarkIdName) { + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + } + _append(str, sourcePos, maybeNewline) { + const len = str.length; + const position = this._position; + this._last = str.charCodeAt(len - 1); + if (++this._appendCount > 4096) { + +this._str; + this._buf += this._str; + this._str = str; + this._appendCount = 0; + } else { + this._str += str; + } + if (!maybeNewline && !this._map) { + position.column += len; + return; + } + const { + column, + identifierName, + identifierNamePos, + filename + } = sourcePos; + let line = sourcePos.line; + if ((identifierName != null || identifierNamePos != null) && this._canMarkIdName) { + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + let i = str.indexOf("\n"); + let last = 0; + if (i !== 0) { + this._mark(line, column, identifierName, identifierNamePos, filename); + } + while (i !== -1) { + position.line++; + position.column = 0; + last = i + 1; + if (last < len && line !== undefined) { + this._mark(++line, 0, null, null, filename); + } + i = str.indexOf("\n", last); + } + position.column += len - last; + } + _mark(line, column, identifierName, identifierNamePos, filename) { + var _this$_map; + (_this$_map = this._map) == null || _this$_map.mark(this._position, line, column, identifierName, identifierNamePos, filename); + } + removeTrailingNewline() { + const queueCursor = this._queueCursor; + if (queueCursor !== 0 && this._queue[queueCursor - 1].char === 10) { + this._queueCursor--; + } + } + removeLastSemicolon() { + const queueCursor = this._queueCursor; + if (queueCursor !== 0 && this._queue[queueCursor - 1].char === 59) { + this._queueCursor--; + } + } + getLastChar() { + const queueCursor = this._queueCursor; + return queueCursor !== 0 ? this._queue[queueCursor - 1].char : this._last; + } + getNewlineCount() { + const queueCursor = this._queueCursor; + let count = 0; + if (queueCursor === 0) return this._last === 10 ? 1 : 0; + for (let i = queueCursor - 1; i >= 0; i--) { + if (this._queue[i].char !== 10) { + break; + } + count++; + } + return count === queueCursor && this._last === 10 ? count + 1 : count; + } + endsWithCharAndNewline() { + const queue = this._queue; + const queueCursor = this._queueCursor; + if (queueCursor !== 0) { + const lastCp = queue[queueCursor - 1].char; + if (lastCp !== 10) return; + if (queueCursor > 1) { + return queue[queueCursor - 2].char; + } else { + return this._last; + } + } + } + hasContent() { + return this._queueCursor !== 0 || !!this._last; + } + exactSource(loc, cb) { + if (!this._map) { + cb(); + return; + } + this.source("start", loc); + const identifierName = loc.identifierName; + const sourcePos = this._sourcePosition; + if (identifierName) { + this._canMarkIdName = false; + sourcePos.identifierName = identifierName; + } + cb(); + if (identifierName) { + this._canMarkIdName = true; + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + this.source("end", loc); + } + source(prop, loc) { + if (!this._map) return; + this._normalizePosition(prop, loc, 0); + } + sourceWithOffset(prop, loc, columnOffset) { + if (!this._map) return; + this._normalizePosition(prop, loc, columnOffset); + } + _normalizePosition(prop, loc, columnOffset) { + const pos = loc[prop]; + const target = this._sourcePosition; + if (pos) { + target.line = pos.line; + target.column = Math.max(pos.column + columnOffset, 0); + target.filename = loc.filename; + } + } + getCurrentColumn() { + const queue = this._queue; + const queueCursor = this._queueCursor; + let lastIndex = -1; + let len = 0; + for (let i = 0; i < queueCursor; i++) { + const item = queue[i]; + if (item.char === 10) { + lastIndex = len; + } + len += item.repeat; + } + return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex; + } + getCurrentLine() { + let count = 0; + const queue = this._queue; + for (let i = 0; i < this._queueCursor; i++) { + if (queue[i].char === 10) { + count++; + } + } + return this._position.line + count; + } +} +exports["default"] = Buffer; + +//# sourceMappingURL=buffer.js.map + + +/***/ }), + +/***/ 82933: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BlockStatement = BlockStatement; +exports.Directive = Directive; +exports.DirectiveLiteral = DirectiveLiteral; +exports.File = File; +exports.InterpreterDirective = InterpreterDirective; +exports.Placeholder = Placeholder; +exports.Program = Program; +function File(node) { + if (node.program) { + this.print(node.program.interpreter); + } + this.print(node.program); +} +function Program(node) { + var _node$directives; + this.noIndentInnerCommentsHere(); + this.printInnerComments(); + const directivesLen = (_node$directives = node.directives) == null ? void 0 : _node$directives.length; + if (directivesLen) { + var _node$directives$trai; + const newline = node.body.length ? 2 : 1; + this.printSequence(node.directives, undefined, newline); + if (!((_node$directives$trai = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai.length)) { + this.newline(newline); + } + } + this.printSequence(node.body); +} +function BlockStatement(node) { + var _node$directives2; + this.tokenChar(123); + const exit = this.enterDelimited(); + const directivesLen = (_node$directives2 = node.directives) == null ? void 0 : _node$directives2.length; + if (directivesLen) { + var _node$directives$trai2; + const newline = node.body.length ? 2 : 1; + this.printSequence(node.directives, true, newline); + if (!((_node$directives$trai2 = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai2.length)) { + this.newline(newline); + } + } + this.printSequence(node.body, true); + exit(); + this.rightBrace(node); +} +function Directive(node) { + this.print(node.value); + this.semicolon(); +} +const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/; +const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/; +function DirectiveLiteral(node) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw !== undefined) { + this.token(raw); + return; + } + const { + value + } = node; + if (!unescapedDoubleQuoteRE.test(value)) { + this.token(`"${value}"`); + } else if (!unescapedSingleQuoteRE.test(value)) { + this.token(`'${value}'`); + } else { + throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes."); + } +} +function InterpreterDirective(node) { + this.token(`#!${node.value}`); + this.newline(1, true); +} +function Placeholder(node) { + this.token("%%"); + this.print(node.name); + this.token("%%"); + if (node.expectedNode === "Statement") { + this.semicolon(); + } +} + +//# sourceMappingURL=base.js.map + + +/***/ }), + +/***/ 70926: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ClassAccessorProperty = ClassAccessorProperty; +exports.ClassBody = ClassBody; +exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration; +exports.ClassMethod = ClassMethod; +exports.ClassPrivateMethod = ClassPrivateMethod; +exports.ClassPrivateProperty = ClassPrivateProperty; +exports.ClassProperty = ClassProperty; +exports.StaticBlock = StaticBlock; +exports._classMethodHead = _classMethodHead; +var _t = __nccwpck_require__(16535); +const { + isExportDefaultDeclaration, + isExportNamedDeclaration +} = _t; +function ClassDeclaration(node, parent) { + const inExport = isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent); + if (!inExport || !this._shouldPrintDecoratorsBeforeExport(parent)) { + this.printJoin(node.decorators); + } + if (node.declare) { + this.word("declare"); + this.space(); + } + if (node.abstract) { + this.word("abstract"); + this.space(); + } + this.word("class"); + if (node.id) { + this.space(); + this.print(node.id); + } + this.print(node.typeParameters); + if (node.superClass) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.superClass); + this.print(node.superTypeParameters); + } + if (node.implements) { + this.space(); + this.word("implements"); + this.space(); + this.printList(node.implements); + } + this.space(); + this.print(node.body); +} +function ClassBody(node) { + this.tokenChar(123); + if (node.body.length === 0) { + this.tokenChar(125); + } else { + this.newline(); + const separator = classBodyEmptySemicolonsPrinter(this, node); + separator == null || separator(-1); + const exit = this.enterDelimited(); + this.printJoin(node.body, true, true, separator, true); + exit(); + if (!this.endsWith(10)) this.newline(); + this.rightBrace(node); + } +} +function classBodyEmptySemicolonsPrinter(printer, node) { + if (!printer.tokenMap || node.start == null || node.end == null) { + return null; + } + const indexes = printer.tokenMap.getIndexes(node); + if (!indexes) return null; + let k = 1; + let occurrenceCount = 0; + let nextLocIndex = 0; + const advanceNextLocIndex = () => { + while (nextLocIndex < node.body.length && node.body[nextLocIndex].start == null) { + nextLocIndex++; + } + }; + advanceNextLocIndex(); + return i => { + if (nextLocIndex <= i) { + nextLocIndex = i + 1; + advanceNextLocIndex(); + } + const end = nextLocIndex === node.body.length ? node.end : node.body[nextLocIndex].start; + let tok; + while (k < indexes.length && printer.tokenMap.matchesOriginal(tok = printer._tokens[indexes[k]], ";") && tok.start < end) { + printer.token(";", undefined, occurrenceCount++); + k++; + } + }; +} +function ClassProperty(node) { + this.printJoin(node.decorators); + if (!node.static && !this.format.preserveFormat) { + var _node$key$loc; + const endLine = (_node$key$loc = node.key.loc) == null || (_node$key$loc = _node$key$loc.end) == null ? void 0 : _node$key$loc.line; + if (endLine) this.catchUp(endLine); + } + this.tsPrintClassMemberModifiers(node); + if (node.computed) { + this.tokenChar(91); + this.print(node.key); + this.tokenChar(93); + } else { + this._variance(node); + this.print(node.key); + } + if (node.optional) { + this.tokenChar(63); + } + if (node.definite) { + this.tokenChar(33); + } + this.print(node.typeAnnotation); + if (node.value) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.value); + } + this.semicolon(); +} +function ClassAccessorProperty(node) { + var _node$key$loc2; + this.printJoin(node.decorators); + const endLine = (_node$key$loc2 = node.key.loc) == null || (_node$key$loc2 = _node$key$loc2.end) == null ? void 0 : _node$key$loc2.line; + if (endLine) this.catchUp(endLine); + this.tsPrintClassMemberModifiers(node); + this.word("accessor", true); + this.space(); + if (node.computed) { + this.tokenChar(91); + this.print(node.key); + this.tokenChar(93); + } else { + this._variance(node); + this.print(node.key); + } + if (node.optional) { + this.tokenChar(63); + } + if (node.definite) { + this.tokenChar(33); + } + this.print(node.typeAnnotation); + if (node.value) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.value); + } + this.semicolon(); +} +function ClassPrivateProperty(node) { + this.printJoin(node.decorators); + this.tsPrintClassMemberModifiers(node); + this.print(node.key); + if (node.optional) { + this.tokenChar(63); + } + if (node.definite) { + this.tokenChar(33); + } + this.print(node.typeAnnotation); + if (node.value) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.value); + } + this.semicolon(); +} +function ClassMethod(node) { + this._classMethodHead(node); + this.space(); + this.print(node.body); +} +function ClassPrivateMethod(node) { + this._classMethodHead(node); + this.space(); + this.print(node.body); +} +function _classMethodHead(node) { + this.printJoin(node.decorators); + if (!this.format.preserveFormat) { + var _node$key$loc3; + const endLine = (_node$key$loc3 = node.key.loc) == null || (_node$key$loc3 = _node$key$loc3.end) == null ? void 0 : _node$key$loc3.line; + if (endLine) this.catchUp(endLine); + } + this.tsPrintClassMemberModifiers(node); + this._methodHead(node); +} +function StaticBlock(node) { + this.word("static"); + this.space(); + this.tokenChar(123); + if (node.body.length === 0) { + this.tokenChar(125); + } else { + this.newline(); + this.printSequence(node.body, true); + this.rightBrace(node); + } +} + +//# sourceMappingURL=classes.js.map + + +/***/ }), + +/***/ 60617: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addDeprecatedGenerators = addDeprecatedGenerators; +function addDeprecatedGenerators(PrinterClass) { + { + const deprecatedBabel7Generators = { + Noop() {}, + TSExpressionWithTypeArguments(node) { + this.print(node.expression); + this.print(node.typeParameters); + }, + DecimalLiteral(node) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw !== undefined) { + this.word(raw); + return; + } + this.word(node.value + "m"); + } + }; + Object.assign(PrinterClass.prototype, deprecatedBabel7Generators); + } +} + +//# sourceMappingURL=deprecated.js.map + + +/***/ }), + +/***/ 33361: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; +exports.AssignmentPattern = AssignmentPattern; +exports.AwaitExpression = AwaitExpression; +exports.BindExpression = BindExpression; +exports.CallExpression = CallExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.Decorator = Decorator; +exports.DoExpression = DoExpression; +exports.EmptyStatement = EmptyStatement; +exports.ExpressionStatement = ExpressionStatement; +exports.Import = Import; +exports.MemberExpression = MemberExpression; +exports.MetaProperty = MetaProperty; +exports.ModuleExpression = ModuleExpression; +exports.NewExpression = NewExpression; +exports.OptionalCallExpression = OptionalCallExpression; +exports.OptionalMemberExpression = OptionalMemberExpression; +exports.ParenthesizedExpression = ParenthesizedExpression; +exports.PrivateName = PrivateName; +exports.SequenceExpression = SequenceExpression; +exports.Super = Super; +exports.ThisExpression = ThisExpression; +exports.UnaryExpression = UnaryExpression; +exports.UpdateExpression = UpdateExpression; +exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier; +exports.YieldExpression = YieldExpression; +exports._shouldPrintDecoratorsBeforeExport = _shouldPrintDecoratorsBeforeExport; +var _t = __nccwpck_require__(16535); +var _index = __nccwpck_require__(95460); +const { + isCallExpression, + isLiteral, + isMemberExpression, + isNewExpression, + isPattern +} = _t; +function UnaryExpression(node) { + const { + operator + } = node; + if (operator === "void" || operator === "delete" || operator === "typeof" || operator === "throw") { + this.word(operator); + this.space(); + } else { + this.token(operator); + } + this.print(node.argument); +} +function DoExpression(node) { + if (node.async) { + this.word("async", true); + this.space(); + } + this.word("do"); + this.space(); + this.print(node.body); +} +function ParenthesizedExpression(node) { + this.tokenChar(40); + const exit = this.enterDelimited(); + this.print(node.expression); + exit(); + this.rightParens(node); +} +function UpdateExpression(node) { + if (node.prefix) { + this.token(node.operator); + this.print(node.argument); + } else { + this.print(node.argument, true); + this.token(node.operator); + } +} +function ConditionalExpression(node) { + this.print(node.test); + this.space(); + this.tokenChar(63); + this.space(); + this.print(node.consequent); + this.space(); + this.tokenChar(58); + this.space(); + this.print(node.alternate); +} +function NewExpression(node, parent) { + this.word("new"); + this.space(); + this.print(node.callee); + if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression(parent, { + callee: node + }) && !isMemberExpression(parent) && !isNewExpression(parent)) { + return; + } + this.print(node.typeArguments); + { + this.print(node.typeParameters); + } + if (node.optional) { + this.token("?."); + } + if (node.arguments.length === 0 && this.tokenMap && !this.tokenMap.endMatches(node, ")")) { + return; + } + this.tokenChar(40); + const exit = this.enterDelimited(); + this.printList(node.arguments, this.shouldPrintTrailingComma(")")); + exit(); + this.rightParens(node); +} +function SequenceExpression(node) { + this.printList(node.expressions); +} +function ThisExpression() { + this.word("this"); +} +function Super() { + this.word("super"); +} +function _shouldPrintDecoratorsBeforeExport(node) { + if (typeof this.format.decoratorsBeforeExport === "boolean") { + return this.format.decoratorsBeforeExport; + } + return typeof node.start === "number" && node.start === node.declaration.start; +} +function Decorator(node) { + this.tokenChar(64); + this.print(node.expression); + this.newline(); +} +function OptionalMemberExpression(node) { + let { + computed + } = node; + const { + optional, + property + } = node; + this.print(node.object); + if (!computed && isMemberExpression(property)) { + throw new TypeError("Got a MemberExpression for MemberExpression property"); + } + if (isLiteral(property) && typeof property.value === "number") { + computed = true; + } + if (optional) { + this.token("?."); + } + if (computed) { + this.tokenChar(91); + this.print(property); + this.tokenChar(93); + } else { + if (!optional) { + this.tokenChar(46); + } + this.print(property); + } +} +function OptionalCallExpression(node) { + this.print(node.callee); + { + this.print(node.typeParameters); + } + if (node.optional) { + this.token("?."); + } + this.print(node.typeArguments); + this.tokenChar(40); + const exit = this.enterDelimited(); + this.printList(node.arguments); + exit(); + this.rightParens(node); +} +function CallExpression(node) { + this.print(node.callee); + this.print(node.typeArguments); + { + this.print(node.typeParameters); + } + this.tokenChar(40); + const exit = this.enterDelimited(); + this.printList(node.arguments, this.shouldPrintTrailingComma(")")); + exit(); + this.rightParens(node); +} +function Import() { + this.word("import"); +} +function AwaitExpression(node) { + this.word("await"); + if (node.argument) { + this.space(); + this.printTerminatorless(node.argument); + } +} +function YieldExpression(node) { + this.word("yield", true); + if (node.delegate) { + this.tokenChar(42); + if (node.argument) { + this.space(); + this.print(node.argument); + } + } else { + if (node.argument) { + this.space(); + this.printTerminatorless(node.argument); + } + } +} +function EmptyStatement() { + this.semicolon(true); +} +function ExpressionStatement(node) { + this.tokenContext |= _index.TokenContext.expressionStatement; + this.print(node.expression); + this.semicolon(); +} +function AssignmentPattern(node) { + this.print(node.left); + if (node.left.type === "Identifier" || isPattern(node.left)) { + if (node.left.optional) this.tokenChar(63); + this.print(node.left.typeAnnotation); + } + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.right); +} +function AssignmentExpression(node) { + this.print(node.left); + this.space(); + if (node.operator === "in" || node.operator === "instanceof") { + this.word(node.operator); + } else { + this.token(node.operator); + this._endsWithDiv = node.operator === "/"; + } + this.space(); + this.print(node.right); +} +function BindExpression(node) { + this.print(node.object); + this.token("::"); + this.print(node.callee); +} +function MemberExpression(node) { + this.print(node.object); + if (!node.computed && isMemberExpression(node.property)) { + throw new TypeError("Got a MemberExpression for MemberExpression property"); + } + let computed = node.computed; + if (isLiteral(node.property) && typeof node.property.value === "number") { + computed = true; + } + if (computed) { + const exit = this.enterDelimited(); + this.tokenChar(91); + this.print(node.property); + this.tokenChar(93); + exit(); + } else { + this.tokenChar(46); + this.print(node.property); + } +} +function MetaProperty(node) { + this.print(node.meta); + this.tokenChar(46); + this.print(node.property); +} +function PrivateName(node) { + this.tokenChar(35); + this.print(node.id); +} +function V8IntrinsicIdentifier(node) { + this.tokenChar(37); + this.word(node.name); +} +function ModuleExpression(node) { + this.word("module", true); + this.space(); + this.tokenChar(123); + this.indent(); + const { + body + } = node; + if (body.body.length || body.directives.length) { + this.newline(); + } + this.print(body); + this.dedent(); + this.rightBrace(node); +} + +//# sourceMappingURL=expressions.js.map + + +/***/ }), + +/***/ 88408: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnyTypeAnnotation = AnyTypeAnnotation; +exports.ArrayTypeAnnotation = ArrayTypeAnnotation; +exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; +exports.BooleanTypeAnnotation = BooleanTypeAnnotation; +exports.DeclareClass = DeclareClass; +exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration; +exports.DeclareExportDeclaration = DeclareExportDeclaration; +exports.DeclareFunction = DeclareFunction; +exports.DeclareInterface = DeclareInterface; +exports.DeclareModule = DeclareModule; +exports.DeclareModuleExports = DeclareModuleExports; +exports.DeclareOpaqueType = DeclareOpaqueType; +exports.DeclareTypeAlias = DeclareTypeAlias; +exports.DeclareVariable = DeclareVariable; +exports.DeclaredPredicate = DeclaredPredicate; +exports.EmptyTypeAnnotation = EmptyTypeAnnotation; +exports.EnumBooleanBody = EnumBooleanBody; +exports.EnumBooleanMember = EnumBooleanMember; +exports.EnumDeclaration = EnumDeclaration; +exports.EnumDefaultedMember = EnumDefaultedMember; +exports.EnumNumberBody = EnumNumberBody; +exports.EnumNumberMember = EnumNumberMember; +exports.EnumStringBody = EnumStringBody; +exports.EnumStringMember = EnumStringMember; +exports.EnumSymbolBody = EnumSymbolBody; +exports.ExistsTypeAnnotation = ExistsTypeAnnotation; +exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.FunctionTypeParam = FunctionTypeParam; +exports.IndexedAccessType = IndexedAccessType; +exports.InferredPredicate = InferredPredicate; +exports.InterfaceDeclaration = InterfaceDeclaration; +exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends; +exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation; +exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; +exports.MixedTypeAnnotation = MixedTypeAnnotation; +exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; +exports.NullableTypeAnnotation = NullableTypeAnnotation; +Object.defineProperty(exports, "NumberLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _types2.NumericLiteral; + } +})); +exports.NumberTypeAnnotation = NumberTypeAnnotation; +exports.ObjectTypeAnnotation = ObjectTypeAnnotation; +exports.ObjectTypeCallProperty = ObjectTypeCallProperty; +exports.ObjectTypeIndexer = ObjectTypeIndexer; +exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot; +exports.ObjectTypeProperty = ObjectTypeProperty; +exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; +exports.OpaqueType = OpaqueType; +exports.OptionalIndexedAccessType = OptionalIndexedAccessType; +exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; +Object.defineProperty(exports, "StringLiteralTypeAnnotation", ({ + enumerable: true, + get: function () { + return _types2.StringLiteral; + } +})); +exports.StringTypeAnnotation = StringTypeAnnotation; +exports.SymbolTypeAnnotation = SymbolTypeAnnotation; +exports.ThisTypeAnnotation = ThisTypeAnnotation; +exports.TupleTypeAnnotation = TupleTypeAnnotation; +exports.TypeAlias = TypeAlias; +exports.TypeAnnotation = TypeAnnotation; +exports.TypeCastExpression = TypeCastExpression; +exports.TypeParameter = TypeParameter; +exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation; +exports.TypeofTypeAnnotation = TypeofTypeAnnotation; +exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.Variance = Variance; +exports.VoidTypeAnnotation = VoidTypeAnnotation; +exports._interfaceish = _interfaceish; +exports._variance = _variance; +var _t = __nccwpck_require__(16535); +var _modules = __nccwpck_require__(24119); +var _index = __nccwpck_require__(95460); +var _types2 = __nccwpck_require__(26659); +const { + isDeclareExportDeclaration, + isStatement +} = _t; +function AnyTypeAnnotation() { + this.word("any"); +} +function ArrayTypeAnnotation(node) { + this.print(node.elementType, true); + this.tokenChar(91); + this.tokenChar(93); +} +function BooleanTypeAnnotation() { + this.word("boolean"); +} +function BooleanLiteralTypeAnnotation(node) { + this.word(node.value ? "true" : "false"); +} +function NullLiteralTypeAnnotation() { + this.word("null"); +} +function DeclareClass(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + this.word("class"); + this.space(); + this._interfaceish(node); +} +function DeclareFunction(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + this.word("function"); + this.space(); + this.print(node.id); + this.print(node.id.typeAnnotation.typeAnnotation); + if (node.predicate) { + this.space(); + this.print(node.predicate); + } + this.semicolon(); +} +function InferredPredicate() { + this.tokenChar(37); + this.word("checks"); +} +function DeclaredPredicate(node) { + this.tokenChar(37); + this.word("checks"); + this.tokenChar(40); + this.print(node.value); + this.tokenChar(41); +} +function DeclareInterface(node) { + this.word("declare"); + this.space(); + this.InterfaceDeclaration(node); +} +function DeclareModule(node) { + this.word("declare"); + this.space(); + this.word("module"); + this.space(); + this.print(node.id); + this.space(); + this.print(node.body); +} +function DeclareModuleExports(node) { + this.word("declare"); + this.space(); + this.word("module"); + this.tokenChar(46); + this.word("exports"); + this.print(node.typeAnnotation); +} +function DeclareTypeAlias(node) { + this.word("declare"); + this.space(); + this.TypeAlias(node); +} +function DeclareOpaqueType(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + this.OpaqueType(node); +} +function DeclareVariable(node, parent) { + if (!isDeclareExportDeclaration(parent)) { + this.word("declare"); + this.space(); + } + this.word("var"); + this.space(); + this.print(node.id); + this.print(node.id.typeAnnotation); + this.semicolon(); +} +function DeclareExportDeclaration(node) { + this.word("declare"); + this.space(); + this.word("export"); + this.space(); + if (node.default) { + this.word("default"); + this.space(); + } + FlowExportDeclaration.call(this, node); +} +function DeclareExportAllDeclaration(node) { + this.word("declare"); + this.space(); + _modules.ExportAllDeclaration.call(this, node); +} +function EnumDeclaration(node) { + const { + id, + body + } = node; + this.word("enum"); + this.space(); + this.print(id); + this.print(body); +} +function enumExplicitType(context, name, hasExplicitType) { + if (hasExplicitType) { + context.space(); + context.word("of"); + context.space(); + context.word(name); + } + context.space(); +} +function enumBody(context, node) { + const { + members + } = node; + context.token("{"); + context.indent(); + context.newline(); + for (const member of members) { + context.print(member); + context.newline(); + } + if (node.hasUnknownMembers) { + context.token("..."); + context.newline(); + } + context.dedent(); + context.token("}"); +} +function EnumBooleanBody(node) { + const { + explicitType + } = node; + enumExplicitType(this, "boolean", explicitType); + enumBody(this, node); +} +function EnumNumberBody(node) { + const { + explicitType + } = node; + enumExplicitType(this, "number", explicitType); + enumBody(this, node); +} +function EnumStringBody(node) { + const { + explicitType + } = node; + enumExplicitType(this, "string", explicitType); + enumBody(this, node); +} +function EnumSymbolBody(node) { + enumExplicitType(this, "symbol", true); + enumBody(this, node); +} +function EnumDefaultedMember(node) { + const { + id + } = node; + this.print(id); + this.tokenChar(44); +} +function enumInitializedMember(context, node) { + context.print(node.id); + context.space(); + context.token("="); + context.space(); + context.print(node.init); + context.token(","); +} +function EnumBooleanMember(node) { + enumInitializedMember(this, node); +} +function EnumNumberMember(node) { + enumInitializedMember(this, node); +} +function EnumStringMember(node) { + enumInitializedMember(this, node); +} +function FlowExportDeclaration(node) { + if (node.declaration) { + const declar = node.declaration; + this.print(declar); + if (!isStatement(declar)) this.semicolon(); + } else { + this.tokenChar(123); + if (node.specifiers.length) { + this.space(); + this.printList(node.specifiers); + this.space(); + } + this.tokenChar(125); + if (node.source) { + this.space(); + this.word("from"); + this.space(); + this.print(node.source); + } + this.semicolon(); + } +} +function ExistsTypeAnnotation() { + this.tokenChar(42); +} +function FunctionTypeAnnotation(node, parent) { + this.print(node.typeParameters); + this.tokenChar(40); + if (node.this) { + this.word("this"); + this.tokenChar(58); + this.space(); + this.print(node.this.typeAnnotation); + if (node.params.length || node.rest) { + this.tokenChar(44); + this.space(); + } + } + this.printList(node.params); + if (node.rest) { + if (node.params.length) { + this.tokenChar(44); + this.space(); + } + this.token("..."); + this.print(node.rest); + } + this.tokenChar(41); + const type = parent == null ? void 0 : parent.type; + if (type != null && (type === "ObjectTypeCallProperty" || type === "ObjectTypeInternalSlot" || type === "DeclareFunction" || type === "ObjectTypeProperty" && parent.method)) { + this.tokenChar(58); + } else { + this.space(); + this.token("=>"); + } + this.space(); + this.print(node.returnType); +} +function FunctionTypeParam(node) { + this.print(node.name); + if (node.optional) this.tokenChar(63); + if (node.name) { + this.tokenChar(58); + this.space(); + } + this.print(node.typeAnnotation); +} +function InterfaceExtends(node) { + this.print(node.id); + this.print(node.typeParameters, true); +} +function _interfaceish(node) { + var _node$extends; + this.print(node.id); + this.print(node.typeParameters); + if ((_node$extends = node.extends) != null && _node$extends.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(node.extends); + } + if (node.type === "DeclareClass") { + var _node$mixins, _node$implements; + if ((_node$mixins = node.mixins) != null && _node$mixins.length) { + this.space(); + this.word("mixins"); + this.space(); + this.printList(node.mixins); + } + if ((_node$implements = node.implements) != null && _node$implements.length) { + this.space(); + this.word("implements"); + this.space(); + this.printList(node.implements); + } + } + this.space(); + this.print(node.body); +} +function _variance(node) { + var _node$variance; + const kind = (_node$variance = node.variance) == null ? void 0 : _node$variance.kind; + if (kind != null) { + if (kind === "plus") { + this.tokenChar(43); + } else if (kind === "minus") { + this.tokenChar(45); + } + } +} +function InterfaceDeclaration(node) { + this.word("interface"); + this.space(); + this._interfaceish(node); +} +function andSeparator(occurrenceCount) { + this.space(); + this.token("&", false, occurrenceCount); + this.space(); +} +function InterfaceTypeAnnotation(node) { + var _node$extends2; + this.word("interface"); + if ((_node$extends2 = node.extends) != null && _node$extends2.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(node.extends); + } + this.space(); + this.print(node.body); +} +function IntersectionTypeAnnotation(node) { + this.printJoin(node.types, undefined, undefined, andSeparator); +} +function MixedTypeAnnotation() { + this.word("mixed"); +} +function EmptyTypeAnnotation() { + this.word("empty"); +} +function NullableTypeAnnotation(node) { + this.tokenChar(63); + this.print(node.typeAnnotation); +} +function NumberTypeAnnotation() { + this.word("number"); +} +function StringTypeAnnotation() { + this.word("string"); +} +function ThisTypeAnnotation() { + this.word("this"); +} +function TupleTypeAnnotation(node) { + this.tokenChar(91); + this.printList(node.types); + this.tokenChar(93); +} +function TypeofTypeAnnotation(node) { + this.word("typeof"); + this.space(); + this.print(node.argument); +} +function TypeAlias(node) { + this.word("type"); + this.space(); + this.print(node.id); + this.print(node.typeParameters); + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.right); + this.semicolon(); +} +function TypeAnnotation(node, parent) { + this.tokenChar(58); + this.space(); + if (parent.type === "ArrowFunctionExpression") { + this.tokenContext |= _index.TokenContext.arrowFlowReturnType; + } else if (node.optional) { + this.tokenChar(63); + } + this.print(node.typeAnnotation); +} +function TypeParameterInstantiation(node) { + this.tokenChar(60); + this.printList(node.params); + this.tokenChar(62); +} +function TypeParameter(node) { + this._variance(node); + this.word(node.name); + if (node.bound) { + this.print(node.bound); + } + if (node.default) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.default); + } +} +function OpaqueType(node) { + this.word("opaque"); + this.space(); + this.word("type"); + this.space(); + this.print(node.id); + this.print(node.typeParameters); + if (node.supertype) { + this.tokenChar(58); + this.space(); + this.print(node.supertype); + } + if (node.impltype) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.impltype); + } + this.semicolon(); +} +function ObjectTypeAnnotation(node) { + if (node.exact) { + this.token("{|"); + } else { + this.tokenChar(123); + } + const props = [...node.properties, ...(node.callProperties || []), ...(node.indexers || []), ...(node.internalSlots || [])]; + if (props.length) { + this.newline(); + this.space(); + this.printJoin(props, true, true, undefined, undefined, function addNewlines(leading) { + if (leading && !props[0]) return 1; + }, () => { + if (props.length !== 1 || node.inexact) { + this.tokenChar(44); + this.space(); + } + }); + this.space(); + } + if (node.inexact) { + this.indent(); + this.token("..."); + if (props.length) { + this.newline(); + } + this.dedent(); + } + if (node.exact) { + this.token("|}"); + } else { + this.tokenChar(125); + } +} +function ObjectTypeInternalSlot(node) { + if (node.static) { + this.word("static"); + this.space(); + } + this.tokenChar(91); + this.tokenChar(91); + this.print(node.id); + this.tokenChar(93); + this.tokenChar(93); + if (node.optional) this.tokenChar(63); + if (!node.method) { + this.tokenChar(58); + this.space(); + } + this.print(node.value); +} +function ObjectTypeCallProperty(node) { + if (node.static) { + this.word("static"); + this.space(); + } + this.print(node.value); +} +function ObjectTypeIndexer(node) { + if (node.static) { + this.word("static"); + this.space(); + } + this._variance(node); + this.tokenChar(91); + if (node.id) { + this.print(node.id); + this.tokenChar(58); + this.space(); + } + this.print(node.key); + this.tokenChar(93); + this.tokenChar(58); + this.space(); + this.print(node.value); +} +function ObjectTypeProperty(node) { + if (node.proto) { + this.word("proto"); + this.space(); + } + if (node.static) { + this.word("static"); + this.space(); + } + if (node.kind === "get" || node.kind === "set") { + this.word(node.kind); + this.space(); + } + this._variance(node); + this.print(node.key); + if (node.optional) this.tokenChar(63); + if (!node.method) { + this.tokenChar(58); + this.space(); + } + this.print(node.value); +} +function ObjectTypeSpreadProperty(node) { + this.token("..."); + this.print(node.argument); +} +function QualifiedTypeIdentifier(node) { + this.print(node.qualification); + this.tokenChar(46); + this.print(node.id); +} +function SymbolTypeAnnotation() { + this.word("symbol"); +} +function orSeparator(occurrenceCount) { + this.space(); + this.token("|", false, occurrenceCount); + this.space(); +} +function UnionTypeAnnotation(node) { + this.printJoin(node.types, undefined, undefined, orSeparator); +} +function TypeCastExpression(node) { + this.tokenChar(40); + this.print(node.expression); + this.print(node.typeAnnotation); + this.tokenChar(41); +} +function Variance(node) { + if (node.kind === "plus") { + this.tokenChar(43); + } else { + this.tokenChar(45); + } +} +function VoidTypeAnnotation() { + this.word("void"); +} +function IndexedAccessType(node) { + this.print(node.objectType, true); + this.tokenChar(91); + this.print(node.indexType); + this.tokenChar(93); +} +function OptionalIndexedAccessType(node) { + this.print(node.objectType); + if (node.optional) { + this.token("?."); + } + this.tokenChar(91); + this.print(node.indexType); + this.tokenChar(93); +} + +//# sourceMappingURL=flow.js.map + + +/***/ }), + +/***/ 39662: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _templateLiterals = __nccwpck_require__(97571); +Object.keys(_templateLiterals).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _templateLiterals[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _templateLiterals[key]; + } + }); +}); +var _expressions = __nccwpck_require__(33361); +Object.keys(_expressions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _expressions[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _expressions[key]; + } + }); +}); +var _statements = __nccwpck_require__(40102); +Object.keys(_statements).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _statements[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _statements[key]; + } + }); +}); +var _classes = __nccwpck_require__(70926); +Object.keys(_classes).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _classes[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _classes[key]; + } + }); +}); +var _methods = __nccwpck_require__(31748); +Object.keys(_methods).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _methods[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _methods[key]; + } + }); +}); +var _modules = __nccwpck_require__(24119); +Object.keys(_modules).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _modules[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _modules[key]; + } + }); +}); +var _types = __nccwpck_require__(26659); +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _types[key]; + } + }); +}); +var _flow = __nccwpck_require__(88408); +Object.keys(_flow).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _flow[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _flow[key]; + } + }); +}); +var _base = __nccwpck_require__(82933); +Object.keys(_base).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _base[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _base[key]; + } + }); +}); +var _jsx = __nccwpck_require__(27099); +Object.keys(_jsx).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _jsx[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _jsx[key]; + } + }); +}); +var _typescript = __nccwpck_require__(16975); +Object.keys(_typescript).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _typescript[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _typescript[key]; + } + }); +}); + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 27099: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JSXAttribute = JSXAttribute; +exports.JSXClosingElement = JSXClosingElement; +exports.JSXClosingFragment = JSXClosingFragment; +exports.JSXElement = JSXElement; +exports.JSXEmptyExpression = JSXEmptyExpression; +exports.JSXExpressionContainer = JSXExpressionContainer; +exports.JSXFragment = JSXFragment; +exports.JSXIdentifier = JSXIdentifier; +exports.JSXMemberExpression = JSXMemberExpression; +exports.JSXNamespacedName = JSXNamespacedName; +exports.JSXOpeningElement = JSXOpeningElement; +exports.JSXOpeningFragment = JSXOpeningFragment; +exports.JSXSpreadAttribute = JSXSpreadAttribute; +exports.JSXSpreadChild = JSXSpreadChild; +exports.JSXText = JSXText; +function JSXAttribute(node) { + this.print(node.name); + if (node.value) { + this.tokenChar(61); + this.print(node.value); + } +} +function JSXIdentifier(node) { + this.word(node.name); +} +function JSXNamespacedName(node) { + this.print(node.namespace); + this.tokenChar(58); + this.print(node.name); +} +function JSXMemberExpression(node) { + this.print(node.object); + this.tokenChar(46); + this.print(node.property); +} +function JSXSpreadAttribute(node) { + this.tokenChar(123); + this.token("..."); + this.print(node.argument); + this.rightBrace(node); +} +function JSXExpressionContainer(node) { + this.tokenChar(123); + this.print(node.expression); + this.rightBrace(node); +} +function JSXSpreadChild(node) { + this.tokenChar(123); + this.token("..."); + this.print(node.expression); + this.rightBrace(node); +} +function JSXText(node) { + const raw = this.getPossibleRaw(node); + if (raw !== undefined) { + this.token(raw, true); + } else { + this.token(node.value, true); + } +} +function JSXElement(node) { + const open = node.openingElement; + this.print(open); + if (open.selfClosing) return; + this.indent(); + for (const child of node.children) { + this.print(child); + } + this.dedent(); + this.print(node.closingElement); +} +function spaceSeparator() { + this.space(); +} +function JSXOpeningElement(node) { + this.tokenChar(60); + this.print(node.name); + { + if (node.typeArguments) { + this.print(node.typeArguments); + } + this.print(node.typeParameters); + } + if (node.attributes.length > 0) { + this.space(); + this.printJoin(node.attributes, undefined, undefined, spaceSeparator); + } + if (node.selfClosing) { + this.space(); + this.tokenChar(47); + } + this.tokenChar(62); +} +function JSXClosingElement(node) { + this.tokenChar(60); + this.tokenChar(47); + this.print(node.name); + this.tokenChar(62); +} +function JSXEmptyExpression() { + this.printInnerComments(); +} +function JSXFragment(node) { + this.print(node.openingFragment); + this.indent(); + for (const child of node.children) { + this.print(child); + } + this.dedent(); + this.print(node.closingFragment); +} +function JSXOpeningFragment() { + this.tokenChar(60); + this.tokenChar(62); +} +function JSXClosingFragment() { + this.token("</"); + this.tokenChar(62); +} + +//# sourceMappingURL=jsx.js.map + + +/***/ }), + +/***/ 31748: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ArrowFunctionExpression = ArrowFunctionExpression; +exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression; +exports._functionHead = _functionHead; +exports._methodHead = _methodHead; +exports._param = _param; +exports._parameters = _parameters; +exports._params = _params; +exports._predicate = _predicate; +exports._shouldPrintArrowParamsParens = _shouldPrintArrowParamsParens; +var _t = __nccwpck_require__(16535); +var _index = __nccwpck_require__(95460); +const { + isIdentifier +} = _t; +function _params(node, idNode, parentNode) { + this.print(node.typeParameters); + const nameInfo = _getFuncIdName.call(this, idNode, parentNode); + if (nameInfo) { + this.sourceIdentifierName(nameInfo.name, nameInfo.pos); + } + this.tokenChar(40); + this._parameters(node.params, ")"); + const noLineTerminator = node.type === "ArrowFunctionExpression"; + this.print(node.returnType, noLineTerminator); + this._noLineTerminator = noLineTerminator; +} +function _parameters(parameters, endToken) { + const exit = this.enterDelimited(); + const trailingComma = this.shouldPrintTrailingComma(endToken); + const paramLength = parameters.length; + for (let i = 0; i < paramLength; i++) { + this._param(parameters[i]); + if (trailingComma || i < paramLength - 1) { + this.token(",", null, i); + this.space(); + } + } + this.token(endToken); + exit(); +} +function _param(parameter) { + this.printJoin(parameter.decorators); + this.print(parameter); + if (parameter.optional) { + this.tokenChar(63); + } + this.print(parameter.typeAnnotation); +} +function _methodHead(node) { + const kind = node.kind; + const key = node.key; + if (kind === "get" || kind === "set") { + this.word(kind); + this.space(); + } + if (node.async) { + this.word("async", true); + this.space(); + } + if (kind === "method" || kind === "init") { + if (node.generator) { + this.tokenChar(42); + } + } + if (node.computed) { + this.tokenChar(91); + this.print(key); + this.tokenChar(93); + } else { + this.print(key); + } + if (node.optional) { + this.tokenChar(63); + } + this._params(node, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key, undefined); +} +function _predicate(node, noLineTerminatorAfter) { + if (node.predicate) { + if (!node.returnType) { + this.tokenChar(58); + } + this.space(); + this.print(node.predicate, noLineTerminatorAfter); + } +} +function _functionHead(node, parent) { + if (node.async) { + this.word("async"); + if (!this.format.preserveFormat) { + this._endsWithInnerRaw = false; + } + this.space(); + } + this.word("function"); + if (node.generator) { + if (!this.format.preserveFormat) { + this._endsWithInnerRaw = false; + } + this.tokenChar(42); + } + this.space(); + if (node.id) { + this.print(node.id); + } + this._params(node, node.id, parent); + if (node.type !== "TSDeclareFunction") { + this._predicate(node); + } +} +function FunctionExpression(node, parent) { + this._functionHead(node, parent); + this.space(); + this.print(node.body); +} +function ArrowFunctionExpression(node, parent) { + if (node.async) { + this.word("async", true); + this.space(); + } + if (this._shouldPrintArrowParamsParens(node)) { + this._params(node, undefined, parent); + } else { + this.print(node.params[0], true); + } + this._predicate(node, true); + this.space(); + this.printInnerComments(); + this.token("=>"); + this.space(); + this.tokenContext |= _index.TokenContext.arrowBody; + this.print(node.body); +} +function _shouldPrintArrowParamsParens(node) { + var _firstParam$leadingCo, _firstParam$trailingC; + if (node.params.length !== 1) return true; + if (node.typeParameters || node.returnType || node.predicate) { + return true; + } + const firstParam = node.params[0]; + if (!isIdentifier(firstParam) || firstParam.typeAnnotation || firstParam.optional || (_firstParam$leadingCo = firstParam.leadingComments) != null && _firstParam$leadingCo.length || (_firstParam$trailingC = firstParam.trailingComments) != null && _firstParam$trailingC.length) { + return true; + } + if (this.tokenMap) { + if (node.loc == null) return true; + if (this.tokenMap.findMatching(node, "(") !== null) return true; + const arrowToken = this.tokenMap.findMatching(node, "=>"); + if ((arrowToken == null ? void 0 : arrowToken.loc) == null) return true; + return arrowToken.loc.start.line !== node.loc.start.line; + } + if (this.format.retainLines) return true; + return false; +} +function _getFuncIdName(idNode, parent) { + let id = idNode; + if (!id && parent) { + const parentType = parent.type; + if (parentType === "VariableDeclarator") { + id = parent.id; + } else if (parentType === "AssignmentExpression" || parentType === "AssignmentPattern") { + id = parent.left; + } else if (parentType === "ObjectProperty" || parentType === "ClassProperty") { + if (!parent.computed || parent.key.type === "StringLiteral") { + id = parent.key; + } + } else if (parentType === "ClassPrivateProperty" || parentType === "ClassAccessorProperty") { + id = parent.key; + } + } + if (!id) return; + let nameInfo; + if (id.type === "Identifier") { + var _id$loc, _id$loc2; + nameInfo = { + pos: (_id$loc = id.loc) == null ? void 0 : _id$loc.start, + name: ((_id$loc2 = id.loc) == null ? void 0 : _id$loc2.identifierName) || id.name + }; + } else if (id.type === "PrivateName") { + var _id$loc3; + nameInfo = { + pos: (_id$loc3 = id.loc) == null ? void 0 : _id$loc3.start, + name: "#" + id.id.name + }; + } else if (id.type === "StringLiteral") { + var _id$loc4; + nameInfo = { + pos: (_id$loc4 = id.loc) == null ? void 0 : _id$loc4.start, + name: id.value + }; + } + return nameInfo; +} + +//# sourceMappingURL=methods.js.map + + +/***/ }), + +/***/ 24119: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ExportAllDeclaration = ExportAllDeclaration; +exports.ExportDefaultDeclaration = ExportDefaultDeclaration; +exports.ExportDefaultSpecifier = ExportDefaultSpecifier; +exports.ExportNamedDeclaration = ExportNamedDeclaration; +exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier; +exports.ExportSpecifier = ExportSpecifier; +exports.ImportAttribute = ImportAttribute; +exports.ImportDeclaration = ImportDeclaration; +exports.ImportDefaultSpecifier = ImportDefaultSpecifier; +exports.ImportExpression = ImportExpression; +exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier; +exports.ImportSpecifier = ImportSpecifier; +exports._printAttributes = _printAttributes; +var _t = __nccwpck_require__(16535); +var _index = __nccwpck_require__(95460); +const { + isClassDeclaration, + isExportDefaultSpecifier, + isExportNamespaceSpecifier, + isImportDefaultSpecifier, + isImportNamespaceSpecifier, + isStatement +} = _t; +function ImportSpecifier(node) { + if (node.importKind === "type" || node.importKind === "typeof") { + this.word(node.importKind); + this.space(); + } + this.print(node.imported); + if (node.local && node.local.name !== node.imported.name) { + this.space(); + this.word("as"); + this.space(); + this.print(node.local); + } +} +function ImportDefaultSpecifier(node) { + this.print(node.local); +} +function ExportDefaultSpecifier(node) { + this.print(node.exported); +} +function ExportSpecifier(node) { + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + this.print(node.local); + if (node.exported && node.local.name !== node.exported.name) { + this.space(); + this.word("as"); + this.space(); + this.print(node.exported); + } +} +function ExportNamespaceSpecifier(node) { + this.tokenChar(42); + this.space(); + this.word("as"); + this.space(); + this.print(node.exported); +} +let warningShown = false; +function _printAttributes(node, hasPreviousBrace) { + var _node$extra; + const { + importAttributesKeyword + } = this.format; + const { + attributes, + assertions + } = node; + if (attributes && !importAttributesKeyword && node.extra && (node.extra.deprecatedAssertSyntax || node.extra.deprecatedWithLegacySyntax) && !warningShown) { + warningShown = true; + console.warn(`\ +You are using import attributes, without specifying the desired output syntax. +Please specify the "importAttributesKeyword" generator option, whose value can be one of: + - "with" : \`import { a } from "b" with { type: "json" };\` + - "assert" : \`import { a } from "b" assert { type: "json" };\` + - "with-legacy" : \`import { a } from "b" with type: "json";\` +`); + } + const useAssertKeyword = importAttributesKeyword === "assert" || !importAttributesKeyword && assertions; + this.word(useAssertKeyword ? "assert" : "with"); + this.space(); + if (!useAssertKeyword && (importAttributesKeyword === "with-legacy" || !importAttributesKeyword && (_node$extra = node.extra) != null && _node$extra.deprecatedWithLegacySyntax)) { + this.printList(attributes || assertions); + return; + } + const occurrenceCount = hasPreviousBrace ? 1 : 0; + this.token("{", null, occurrenceCount); + this.space(); + this.printList(attributes || assertions, this.shouldPrintTrailingComma("}")); + this.space(); + this.token("}", null, occurrenceCount); +} +function ExportAllDeclaration(node) { + var _node$attributes, _node$assertions; + this.word("export"); + this.space(); + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + this.tokenChar(42); + this.space(); + this.word("from"); + this.space(); + if ((_node$attributes = node.attributes) != null && _node$attributes.length || (_node$assertions = node.assertions) != null && _node$assertions.length) { + this.print(node.source, true); + this.space(); + this._printAttributes(node, false); + } else { + this.print(node.source); + } + this.semicolon(); +} +function maybePrintDecoratorsBeforeExport(printer, node) { + if (isClassDeclaration(node.declaration) && printer._shouldPrintDecoratorsBeforeExport(node)) { + printer.printJoin(node.declaration.decorators); + } +} +function ExportNamedDeclaration(node) { + maybePrintDecoratorsBeforeExport(this, node); + this.word("export"); + this.space(); + if (node.declaration) { + const declar = node.declaration; + this.print(declar); + if (!isStatement(declar)) this.semicolon(); + } else { + if (node.exportKind === "type") { + this.word("type"); + this.space(); + } + const specifiers = node.specifiers.slice(0); + let hasSpecial = false; + for (;;) { + const first = specifiers[0]; + if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) { + hasSpecial = true; + this.print(specifiers.shift()); + if (specifiers.length) { + this.tokenChar(44); + this.space(); + } + } else { + break; + } + } + let hasBrace = false; + if (specifiers.length || !specifiers.length && !hasSpecial) { + hasBrace = true; + this.tokenChar(123); + if (specifiers.length) { + this.space(); + this.printList(specifiers, this.shouldPrintTrailingComma("}")); + this.space(); + } + this.tokenChar(125); + } + if (node.source) { + var _node$attributes2, _node$assertions2; + this.space(); + this.word("from"); + this.space(); + if ((_node$attributes2 = node.attributes) != null && _node$attributes2.length || (_node$assertions2 = node.assertions) != null && _node$assertions2.length) { + this.print(node.source, true); + this.space(); + this._printAttributes(node, hasBrace); + } else { + this.print(node.source); + } + } + this.semicolon(); + } +} +function ExportDefaultDeclaration(node) { + maybePrintDecoratorsBeforeExport(this, node); + this.word("export"); + this.noIndentInnerCommentsHere(); + this.space(); + this.word("default"); + this.space(); + this.tokenContext |= _index.TokenContext.exportDefault; + const declar = node.declaration; + this.print(declar); + if (!isStatement(declar)) this.semicolon(); +} +function ImportDeclaration(node) { + var _node$attributes3, _node$assertions3; + this.word("import"); + this.space(); + const isTypeKind = node.importKind === "type" || node.importKind === "typeof"; + if (isTypeKind) { + this.noIndentInnerCommentsHere(); + this.word(node.importKind); + this.space(); + } else if (node.module) { + this.noIndentInnerCommentsHere(); + this.word("module"); + this.space(); + } else if (node.phase) { + this.noIndentInnerCommentsHere(); + this.word(node.phase); + this.space(); + } + const specifiers = node.specifiers.slice(0); + const hasSpecifiers = !!specifiers.length; + while (hasSpecifiers) { + const first = specifiers[0]; + if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) { + this.print(specifiers.shift()); + if (specifiers.length) { + this.tokenChar(44); + this.space(); + } + } else { + break; + } + } + let hasBrace = false; + if (specifiers.length) { + hasBrace = true; + this.tokenChar(123); + this.space(); + this.printList(specifiers, this.shouldPrintTrailingComma("}")); + this.space(); + this.tokenChar(125); + } else if (isTypeKind && !hasSpecifiers) { + hasBrace = true; + this.tokenChar(123); + this.tokenChar(125); + } + if (hasSpecifiers || isTypeKind) { + this.space(); + this.word("from"); + this.space(); + } + if ((_node$attributes3 = node.attributes) != null && _node$attributes3.length || (_node$assertions3 = node.assertions) != null && _node$assertions3.length) { + this.print(node.source, true); + this.space(); + this._printAttributes(node, hasBrace); + } else { + this.print(node.source); + } + this.semicolon(); +} +function ImportAttribute(node) { + this.print(node.key); + this.tokenChar(58); + this.space(); + this.print(node.value); +} +function ImportNamespaceSpecifier(node) { + this.tokenChar(42); + this.space(); + this.word("as"); + this.space(); + this.print(node.local); +} +function ImportExpression(node) { + this.word("import"); + if (node.phase) { + this.tokenChar(46); + this.word(node.phase); + } + this.tokenChar(40); + this.print(node.source); + if (node.options != null) { + this.tokenChar(44); + this.space(); + this.print(node.options); + } + this.tokenChar(41); +} + +//# sourceMappingURL=modules.js.map + + +/***/ }), + +/***/ 40102: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BreakStatement = BreakStatement; +exports.CatchClause = CatchClause; +exports.ContinueStatement = ContinueStatement; +exports.DebuggerStatement = DebuggerStatement; +exports.DoWhileStatement = DoWhileStatement; +exports.ForOfStatement = exports.ForInStatement = void 0; +exports.ForStatement = ForStatement; +exports.IfStatement = IfStatement; +exports.LabeledStatement = LabeledStatement; +exports.ReturnStatement = ReturnStatement; +exports.SwitchCase = SwitchCase; +exports.SwitchStatement = SwitchStatement; +exports.ThrowStatement = ThrowStatement; +exports.TryStatement = TryStatement; +exports.VariableDeclaration = VariableDeclaration; +exports.VariableDeclarator = VariableDeclarator; +exports.WhileStatement = WhileStatement; +exports.WithStatement = WithStatement; +var _t = __nccwpck_require__(16535); +var _index = __nccwpck_require__(95460); +const { + isFor, + isForStatement, + isIfStatement, + isStatement +} = _t; +function WithStatement(node) { + this.word("with"); + this.space(); + this.tokenChar(40); + this.print(node.object); + this.tokenChar(41); + this.printBlock(node); +} +function IfStatement(node) { + this.word("if"); + this.space(); + this.tokenChar(40); + this.print(node.test); + this.tokenChar(41); + this.space(); + const needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent)); + if (needsBlock) { + this.tokenChar(123); + this.newline(); + this.indent(); + } + this.printAndIndentOnComments(node.consequent); + if (needsBlock) { + this.dedent(); + this.newline(); + this.tokenChar(125); + } + if (node.alternate) { + if (this.endsWith(125)) this.space(); + this.word("else"); + this.space(); + this.printAndIndentOnComments(node.alternate); + } +} +function getLastStatement(statement) { + const { + body + } = statement; + if (isStatement(body) === false) { + return statement; + } + return getLastStatement(body); +} +function ForStatement(node) { + this.word("for"); + this.space(); + this.tokenChar(40); + { + const exit = this.enterForStatementInit(); + this.tokenContext |= _index.TokenContext.forHead; + this.print(node.init); + exit(); + } + this.tokenChar(59); + if (node.test) { + this.space(); + this.print(node.test); + } + this.token(";", false, 1); + if (node.update) { + this.space(); + this.print(node.update); + } + this.tokenChar(41); + this.printBlock(node); +} +function WhileStatement(node) { + this.word("while"); + this.space(); + this.tokenChar(40); + this.print(node.test); + this.tokenChar(41); + this.printBlock(node); +} +function ForXStatement(node) { + this.word("for"); + this.space(); + const isForOf = node.type === "ForOfStatement"; + if (isForOf && node.await) { + this.word("await"); + this.space(); + } + this.noIndentInnerCommentsHere(); + this.tokenChar(40); + { + const exit = isForOf ? null : this.enterForStatementInit(); + this.tokenContext |= isForOf ? _index.TokenContext.forOfHead : _index.TokenContext.forInHead; + this.print(node.left); + exit == null || exit(); + } + this.space(); + this.word(isForOf ? "of" : "in"); + this.space(); + this.print(node.right); + this.tokenChar(41); + this.printBlock(node); +} +const ForInStatement = exports.ForInStatement = ForXStatement; +const ForOfStatement = exports.ForOfStatement = ForXStatement; +function DoWhileStatement(node) { + this.word("do"); + this.space(); + this.print(node.body); + this.space(); + this.word("while"); + this.space(); + this.tokenChar(40); + this.print(node.test); + this.tokenChar(41); + this.semicolon(); +} +function printStatementAfterKeyword(printer, node) { + if (node) { + printer.space(); + printer.printTerminatorless(node); + } + printer.semicolon(); +} +function BreakStatement(node) { + this.word("break"); + printStatementAfterKeyword(this, node.label); +} +function ContinueStatement(node) { + this.word("continue"); + printStatementAfterKeyword(this, node.label); +} +function ReturnStatement(node) { + this.word("return"); + printStatementAfterKeyword(this, node.argument); +} +function ThrowStatement(node) { + this.word("throw"); + printStatementAfterKeyword(this, node.argument); +} +function LabeledStatement(node) { + this.print(node.label); + this.tokenChar(58); + this.space(); + this.print(node.body); +} +function TryStatement(node) { + this.word("try"); + this.space(); + this.print(node.block); + this.space(); + if (node.handlers) { + this.print(node.handlers[0]); + } else { + this.print(node.handler); + } + if (node.finalizer) { + this.space(); + this.word("finally"); + this.space(); + this.print(node.finalizer); + } +} +function CatchClause(node) { + this.word("catch"); + this.space(); + if (node.param) { + this.tokenChar(40); + this.print(node.param); + this.print(node.param.typeAnnotation); + this.tokenChar(41); + this.space(); + } + this.print(node.body); +} +function SwitchStatement(node) { + this.word("switch"); + this.space(); + this.tokenChar(40); + this.print(node.discriminant); + this.tokenChar(41); + this.space(); + this.tokenChar(123); + this.printSequence(node.cases, true, undefined, function addNewlines(leading, cas) { + if (!leading && node.cases[node.cases.length - 1] === cas) return -1; + }); + this.rightBrace(node); +} +function SwitchCase(node) { + if (node.test) { + this.word("case"); + this.space(); + this.print(node.test); + this.tokenChar(58); + } else { + this.word("default"); + this.tokenChar(58); + } + if (node.consequent.length) { + this.newline(); + this.printSequence(node.consequent, true); + } +} +function DebuggerStatement() { + this.word("debugger"); + this.semicolon(); +} +function VariableDeclaration(node, parent) { + if (node.declare) { + this.word("declare"); + this.space(); + } + const { + kind + } = node; + if (kind === "await using") { + this.word("await"); + this.space(); + this.word("using", true); + } else { + this.word(kind, kind === "using"); + } + this.space(); + let hasInits = false; + if (!isFor(parent)) { + for (const declar of node.declarations) { + if (declar.init) { + hasInits = true; + } + } + } + this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? function (occurrenceCount) { + this.token(",", false, occurrenceCount); + this.newline(); + } : undefined); + if (isFor(parent)) { + if (isForStatement(parent)) { + if (parent.init === node) return; + } else { + if (parent.left === node) return; + } + } + this.semicolon(); +} +function VariableDeclarator(node) { + this.print(node.id); + if (node.definite) this.tokenChar(33); + this.print(node.id.typeAnnotation); + if (node.init) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.init); + } +} + +//# sourceMappingURL=statements.js.map + + +/***/ }), + +/***/ 97571: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TaggedTemplateExpression = TaggedTemplateExpression; +exports.TemplateElement = TemplateElement; +exports.TemplateLiteral = TemplateLiteral; +exports._printTemplate = _printTemplate; +function TaggedTemplateExpression(node) { + this.print(node.tag); + { + this.print(node.typeParameters); + } + this.print(node.quasi); +} +function TemplateElement() { + throw new Error("TemplateElement printing is handled in TemplateLiteral"); +} +function _printTemplate(node, substitutions) { + const quasis = node.quasis; + let partRaw = "`"; + for (let i = 0; i < quasis.length - 1; i++) { + partRaw += quasis[i].value.raw; + this.token(partRaw + "${", true); + this.print(substitutions[i]); + partRaw = "}"; + if (this.tokenMap) { + const token = this.tokenMap.findMatching(node, "}", i); + if (token) this._catchUpTo(token.loc.start); + } + } + partRaw += quasis[quasis.length - 1].value.raw; + this.token(partRaw + "`", true); +} +function TemplateLiteral(node) { + this._printTemplate(node, node.expressions); +} + +//# sourceMappingURL=template-literals.js.map + + +/***/ }), + +/***/ 26659: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ArgumentPlaceholder = ArgumentPlaceholder; +exports.ArrayPattern = exports.ArrayExpression = ArrayExpression; +exports.BigIntLiteral = BigIntLiteral; +exports.BooleanLiteral = BooleanLiteral; +exports.Identifier = Identifier; +exports.NullLiteral = NullLiteral; +exports.NumericLiteral = NumericLiteral; +exports.ObjectPattern = exports.ObjectExpression = ObjectExpression; +exports.ObjectMethod = ObjectMethod; +exports.ObjectProperty = ObjectProperty; +exports.PipelineBareFunction = PipelineBareFunction; +exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference; +exports.PipelineTopicExpression = PipelineTopicExpression; +exports.RecordExpression = RecordExpression; +exports.RegExpLiteral = RegExpLiteral; +exports.SpreadElement = exports.RestElement = RestElement; +exports.StringLiteral = StringLiteral; +exports.TopicReference = TopicReference; +exports.TupleExpression = TupleExpression; +exports._getRawIdentifier = _getRawIdentifier; +var _t = __nccwpck_require__(16535); +var _jsesc = __nccwpck_require__(59376); +const { + isAssignmentPattern, + isIdentifier +} = _t; +let lastRawIdentNode = null; +let lastRawIdentResult = ""; +function _getRawIdentifier(node) { + if (node === lastRawIdentNode) return lastRawIdentResult; + lastRawIdentNode = node; + const { + name + } = node; + const token = this.tokenMap.find(node, tok => tok.value === name); + if (token) { + lastRawIdentResult = this._originalCode.slice(token.start, token.end); + return lastRawIdentResult; + } + return lastRawIdentResult = node.name; +} +function Identifier(node) { + var _node$loc; + this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name); + this.word(this.tokenMap ? this._getRawIdentifier(node) : node.name); +} +function ArgumentPlaceholder() { + this.tokenChar(63); +} +function RestElement(node) { + this.token("..."); + this.print(node.argument); +} +function ObjectExpression(node) { + const props = node.properties; + this.tokenChar(123); + if (props.length) { + const exit = this.enterDelimited(); + this.space(); + this.printList(props, this.shouldPrintTrailingComma("}"), true, true); + this.space(); + exit(); + } + this.sourceWithOffset("end", node.loc, -1); + this.tokenChar(125); +} +function ObjectMethod(node) { + this.printJoin(node.decorators); + this._methodHead(node); + this.space(); + this.print(node.body); +} +function ObjectProperty(node) { + this.printJoin(node.decorators); + if (node.computed) { + this.tokenChar(91); + this.print(node.key); + this.tokenChar(93); + } else { + if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) { + this.print(node.value); + return; + } + this.print(node.key); + if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) { + return; + } + } + this.tokenChar(58); + this.space(); + this.print(node.value); +} +function ArrayExpression(node) { + const elems = node.elements; + const len = elems.length; + this.tokenChar(91); + const exit = this.enterDelimited(); + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + if (elem) { + if (i > 0) this.space(); + this.print(elem); + if (i < len - 1 || this.shouldPrintTrailingComma("]")) { + this.token(",", false, i); + } + } else { + this.token(",", false, i); + } + } + exit(); + this.tokenChar(93); +} +function RecordExpression(node) { + const props = node.properties; + let startToken; + let endToken; + { + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "{|"; + endToken = "|}"; + } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) { + throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); + } else { + startToken = "#{"; + endToken = "}"; + } + } + this.token(startToken); + if (props.length) { + this.space(); + this.printList(props, this.shouldPrintTrailingComma(endToken), true, true); + this.space(); + } + this.token(endToken); +} +function TupleExpression(node) { + const elems = node.elements; + const len = elems.length; + let startToken; + let endToken; + { + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "[|"; + endToken = "|]"; + } else if (this.format.recordAndTupleSyntaxType === "hash") { + startToken = "#["; + endToken = "]"; + } else { + throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); + } + } + this.token(startToken); + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + if (elem) { + if (i > 0) this.space(); + this.print(elem); + if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) { + this.token(",", false, i); + } + } + } + this.token(endToken); +} +function RegExpLiteral(node) { + this.word(`/${node.pattern}/${node.flags}`); +} +function BooleanLiteral(node) { + this.word(node.value ? "true" : "false"); +} +function NullLiteral() { + this.word("null"); +} +function NumericLiteral(node) { + const raw = this.getPossibleRaw(node); + const opts = this.format.jsescOption; + const value = node.value; + const str = value + ""; + if (opts.numbers) { + this.number(_jsesc(value, opts), value); + } else if (raw == null) { + this.number(str, value); + } else if (this.format.minified) { + this.number(raw.length < str.length ? raw : str, value); + } else { + this.number(raw, value); + } +} +function StringLiteral(node) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw !== undefined) { + this.token(raw); + return; + } + const val = _jsesc(node.value, this.format.jsescOption); + this.token(val); +} +function BigIntLiteral(node) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw !== undefined) { + this.word(raw); + return; + } + this.word(node.value + "n"); +} +const validTopicTokenSet = new Set(["^^", "@@", "^", "%", "#"]); +function TopicReference() { + const { + topicToken + } = this.format; + if (validTopicTokenSet.has(topicToken)) { + this.token(topicToken); + } else { + const givenTopicTokenJSON = JSON.stringify(topicToken); + const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v)); + throw new Error(`The "topicToken" generator option must be one of ` + `${validTopics.join(", ")} (${givenTopicTokenJSON} received instead).`); + } +} +function PipelineTopicExpression(node) { + this.print(node.expression); +} +function PipelineBareFunction(node) { + this.print(node.callee); +} +function PipelinePrimaryTopicReference() { + this.tokenChar(35); +} + +//# sourceMappingURL=types.js.map + + +/***/ }), + +/***/ 16975: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TSAnyKeyword = TSAnyKeyword; +exports.TSArrayType = TSArrayType; +exports.TSSatisfiesExpression = exports.TSAsExpression = TSTypeExpression; +exports.TSBigIntKeyword = TSBigIntKeyword; +exports.TSBooleanKeyword = TSBooleanKeyword; +exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; +exports.TSInterfaceHeritage = exports.TSClassImplements = TSClassImplements; +exports.TSConditionalType = TSConditionalType; +exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration; +exports.TSConstructorType = TSConstructorType; +exports.TSDeclareFunction = TSDeclareFunction; +exports.TSDeclareMethod = TSDeclareMethod; +exports.TSEnumBody = TSEnumBody; +exports.TSEnumDeclaration = TSEnumDeclaration; +exports.TSEnumMember = TSEnumMember; +exports.TSExportAssignment = TSExportAssignment; +exports.TSExternalModuleReference = TSExternalModuleReference; +exports.TSFunctionType = TSFunctionType; +exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration; +exports.TSImportType = TSImportType; +exports.TSIndexSignature = TSIndexSignature; +exports.TSIndexedAccessType = TSIndexedAccessType; +exports.TSInferType = TSInferType; +exports.TSInstantiationExpression = TSInstantiationExpression; +exports.TSInterfaceBody = TSInterfaceBody; +exports.TSInterfaceDeclaration = TSInterfaceDeclaration; +exports.TSIntersectionType = TSIntersectionType; +exports.TSIntrinsicKeyword = TSIntrinsicKeyword; +exports.TSLiteralType = TSLiteralType; +exports.TSMappedType = TSMappedType; +exports.TSMethodSignature = TSMethodSignature; +exports.TSModuleBlock = TSModuleBlock; +exports.TSModuleDeclaration = TSModuleDeclaration; +exports.TSNamedTupleMember = TSNamedTupleMember; +exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration; +exports.TSNeverKeyword = TSNeverKeyword; +exports.TSNonNullExpression = TSNonNullExpression; +exports.TSNullKeyword = TSNullKeyword; +exports.TSNumberKeyword = TSNumberKeyword; +exports.TSObjectKeyword = TSObjectKeyword; +exports.TSOptionalType = TSOptionalType; +exports.TSParameterProperty = TSParameterProperty; +exports.TSParenthesizedType = TSParenthesizedType; +exports.TSPropertySignature = TSPropertySignature; +exports.TSQualifiedName = TSQualifiedName; +exports.TSRestType = TSRestType; +exports.TSStringKeyword = TSStringKeyword; +exports.TSSymbolKeyword = TSSymbolKeyword; +exports.TSTemplateLiteralType = TSTemplateLiteralType; +exports.TSThisType = TSThisType; +exports.TSTupleType = TSTupleType; +exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration; +exports.TSTypeAnnotation = TSTypeAnnotation; +exports.TSTypeAssertion = TSTypeAssertion; +exports.TSTypeLiteral = TSTypeLiteral; +exports.TSTypeOperator = TSTypeOperator; +exports.TSTypeParameter = TSTypeParameter; +exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation; +exports.TSTypePredicate = TSTypePredicate; +exports.TSTypeQuery = TSTypeQuery; +exports.TSTypeReference = TSTypeReference; +exports.TSUndefinedKeyword = TSUndefinedKeyword; +exports.TSUnionType = TSUnionType; +exports.TSUnknownKeyword = TSUnknownKeyword; +exports.TSVoidKeyword = TSVoidKeyword; +exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers; +exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; +exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; +exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; +function TSTypeAnnotation(node, parent) { + this.token((parent.type === "TSFunctionType" || parent.type === "TSConstructorType") && parent.typeAnnotation === node ? "=>" : ":"); + this.space(); + if (node.optional) this.tokenChar(63); + this.print(node.typeAnnotation); +} +function TSTypeParameterInstantiation(node, parent) { + this.tokenChar(60); + let printTrailingSeparator = parent.type === "ArrowFunctionExpression" && node.params.length === 1; + if (this.tokenMap && node.start != null && node.end != null) { + printTrailingSeparator && (printTrailingSeparator = !!this.tokenMap.find(node, t => this.tokenMap.matchesOriginal(t, ","))); + printTrailingSeparator || (printTrailingSeparator = this.shouldPrintTrailingComma(">")); + } + this.printList(node.params, printTrailingSeparator); + this.tokenChar(62); +} +function TSTypeParameter(node) { + if (node.const) { + this.word("const"); + this.space(); + } + if (node.in) { + this.word("in"); + this.space(); + } + if (node.out) { + this.word("out"); + this.space(); + } + this.word(node.name); + if (node.constraint) { + this.space(); + this.word("extends"); + this.space(); + this.print(node.constraint); + } + if (node.default) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.default); + } +} +function TSParameterProperty(node) { + if (node.accessibility) { + this.word(node.accessibility); + this.space(); + } + if (node.readonly) { + this.word("readonly"); + this.space(); + } + this._param(node.parameter); +} +function TSDeclareFunction(node, parent) { + if (node.declare) { + this.word("declare"); + this.space(); + } + this._functionHead(node, parent); + this.semicolon(); +} +function TSDeclareMethod(node) { + this._classMethodHead(node); + this.semicolon(); +} +function TSQualifiedName(node) { + this.print(node.left); + this.tokenChar(46); + this.print(node.right); +} +function TSCallSignatureDeclaration(node) { + this.tsPrintSignatureDeclarationBase(node); + maybePrintTrailingCommaOrSemicolon(this, node); +} +function maybePrintTrailingCommaOrSemicolon(printer, node) { + if (!printer.tokenMap || !node.start || !node.end) { + printer.semicolon(); + return; + } + if (printer.tokenMap.endMatches(node, ",")) { + printer.token(","); + } else if (printer.tokenMap.endMatches(node, ";")) { + printer.semicolon(); + } +} +function TSConstructSignatureDeclaration(node) { + this.word("new"); + this.space(); + this.tsPrintSignatureDeclarationBase(node); + maybePrintTrailingCommaOrSemicolon(this, node); +} +function TSPropertySignature(node) { + const { + readonly + } = node; + if (readonly) { + this.word("readonly"); + this.space(); + } + this.tsPrintPropertyOrMethodName(node); + this.print(node.typeAnnotation); + maybePrintTrailingCommaOrSemicolon(this, node); +} +function tsPrintPropertyOrMethodName(node) { + if (node.computed) { + this.tokenChar(91); + } + this.print(node.key); + if (node.computed) { + this.tokenChar(93); + } + if (node.optional) { + this.tokenChar(63); + } +} +function TSMethodSignature(node) { + const { + kind + } = node; + if (kind === "set" || kind === "get") { + this.word(kind); + this.space(); + } + this.tsPrintPropertyOrMethodName(node); + this.tsPrintSignatureDeclarationBase(node); + maybePrintTrailingCommaOrSemicolon(this, node); +} +function TSIndexSignature(node) { + const { + readonly, + static: isStatic + } = node; + if (isStatic) { + this.word("static"); + this.space(); + } + if (readonly) { + this.word("readonly"); + this.space(); + } + this.tokenChar(91); + this._parameters(node.parameters, "]"); + this.print(node.typeAnnotation); + maybePrintTrailingCommaOrSemicolon(this, node); +} +function TSAnyKeyword() { + this.word("any"); +} +function TSBigIntKeyword() { + this.word("bigint"); +} +function TSUnknownKeyword() { + this.word("unknown"); +} +function TSNumberKeyword() { + this.word("number"); +} +function TSObjectKeyword() { + this.word("object"); +} +function TSBooleanKeyword() { + this.word("boolean"); +} +function TSStringKeyword() { + this.word("string"); +} +function TSSymbolKeyword() { + this.word("symbol"); +} +function TSVoidKeyword() { + this.word("void"); +} +function TSUndefinedKeyword() { + this.word("undefined"); +} +function TSNullKeyword() { + this.word("null"); +} +function TSNeverKeyword() { + this.word("never"); +} +function TSIntrinsicKeyword() { + this.word("intrinsic"); +} +function TSThisType() { + this.word("this"); +} +function TSFunctionType(node) { + this.tsPrintFunctionOrConstructorType(node); +} +function TSConstructorType(node) { + if (node.abstract) { + this.word("abstract"); + this.space(); + } + this.word("new"); + this.space(); + this.tsPrintFunctionOrConstructorType(node); +} +function tsPrintFunctionOrConstructorType(node) { + const { + typeParameters + } = node; + const parameters = node.parameters; + this.print(typeParameters); + this.tokenChar(40); + this._parameters(parameters, ")"); + this.space(); + const returnType = node.typeAnnotation; + this.print(returnType); +} +function TSTypeReference(node) { + const typeArguments = node.typeParameters; + this.print(node.typeName, !!typeArguments); + this.print(typeArguments); +} +function TSTypePredicate(node) { + if (node.asserts) { + this.word("asserts"); + this.space(); + } + this.print(node.parameterName); + if (node.typeAnnotation) { + this.space(); + this.word("is"); + this.space(); + this.print(node.typeAnnotation.typeAnnotation); + } +} +function TSTypeQuery(node) { + this.word("typeof"); + this.space(); + this.print(node.exprName); + const typeArguments = node.typeParameters; + if (typeArguments) { + this.print(typeArguments); + } +} +function TSTypeLiteral(node) { + printBraced(this, node, () => this.printJoin(node.members, true, true)); +} +function TSArrayType(node) { + this.print(node.elementType, true); + this.tokenChar(91); + this.tokenChar(93); +} +function TSTupleType(node) { + this.tokenChar(91); + this.printList(node.elementTypes, this.shouldPrintTrailingComma("]")); + this.tokenChar(93); +} +function TSOptionalType(node) { + this.print(node.typeAnnotation); + this.tokenChar(63); +} +function TSRestType(node) { + this.token("..."); + this.print(node.typeAnnotation); +} +function TSNamedTupleMember(node) { + this.print(node.label); + if (node.optional) this.tokenChar(63); + this.tokenChar(58); + this.space(); + this.print(node.elementType); +} +function TSUnionType(node) { + tsPrintUnionOrIntersectionType(this, node, "|"); +} +function TSIntersectionType(node) { + tsPrintUnionOrIntersectionType(this, node, "&"); +} +function tsPrintUnionOrIntersectionType(printer, node, sep) { + var _printer$tokenMap; + let hasLeadingToken = 0; + if ((_printer$tokenMap = printer.tokenMap) != null && _printer$tokenMap.startMatches(node, sep)) { + hasLeadingToken = 1; + printer.token(sep); + } + printer.printJoin(node.types, undefined, undefined, function (i) { + this.space(); + this.token(sep, null, i + hasLeadingToken); + this.space(); + }); +} +function TSConditionalType(node) { + this.print(node.checkType); + this.space(); + this.word("extends"); + this.space(); + this.print(node.extendsType); + this.space(); + this.tokenChar(63); + this.space(); + this.print(node.trueType); + this.space(); + this.tokenChar(58); + this.space(); + this.print(node.falseType); +} +function TSInferType(node) { + this.word("infer"); + this.print(node.typeParameter); +} +function TSParenthesizedType(node) { + this.tokenChar(40); + this.print(node.typeAnnotation); + this.tokenChar(41); +} +function TSTypeOperator(node) { + this.word(node.operator); + this.space(); + this.print(node.typeAnnotation); +} +function TSIndexedAccessType(node) { + this.print(node.objectType, true); + this.tokenChar(91); + this.print(node.indexType); + this.tokenChar(93); +} +function TSMappedType(node) { + const { + nameType, + optional, + readonly, + typeAnnotation + } = node; + this.tokenChar(123); + const exit = this.enterDelimited(); + this.space(); + if (readonly) { + tokenIfPlusMinus(this, readonly); + this.word("readonly"); + this.space(); + } + this.tokenChar(91); + { + this.word(node.typeParameter.name); + } + this.space(); + this.word("in"); + this.space(); + { + this.print(node.typeParameter.constraint); + } + if (nameType) { + this.space(); + this.word("as"); + this.space(); + this.print(nameType); + } + this.tokenChar(93); + if (optional) { + tokenIfPlusMinus(this, optional); + this.tokenChar(63); + } + if (typeAnnotation) { + this.tokenChar(58); + this.space(); + this.print(typeAnnotation); + } + this.space(); + exit(); + this.tokenChar(125); +} +function tokenIfPlusMinus(self, tok) { + if (tok !== true) { + self.token(tok); + } +} +function TSTemplateLiteralType(node) { + this._printTemplate(node, node.types); +} +function TSLiteralType(node) { + this.print(node.literal); +} +function TSClassImplements(node) { + this.print(node.expression); + this.print(node.typeArguments); +} +function TSInterfaceDeclaration(node) { + const { + declare, + id, + typeParameters, + extends: extendz, + body + } = node; + if (declare) { + this.word("declare"); + this.space(); + } + this.word("interface"); + this.space(); + this.print(id); + this.print(typeParameters); + if (extendz != null && extendz.length) { + this.space(); + this.word("extends"); + this.space(); + this.printList(extendz); + } + this.space(); + this.print(body); +} +function TSInterfaceBody(node) { + printBraced(this, node, () => this.printJoin(node.body, true, true)); +} +function TSTypeAliasDeclaration(node) { + const { + declare, + id, + typeParameters, + typeAnnotation + } = node; + if (declare) { + this.word("declare"); + this.space(); + } + this.word("type"); + this.space(); + this.print(id); + this.print(typeParameters); + this.space(); + this.tokenChar(61); + this.space(); + this.print(typeAnnotation); + this.semicolon(); +} +function TSTypeExpression(node) { + const { + type, + expression, + typeAnnotation + } = node; + this.print(expression, true); + this.space(); + this.word(type === "TSAsExpression" ? "as" : "satisfies"); + this.space(); + this.print(typeAnnotation); +} +function TSTypeAssertion(node) { + const { + typeAnnotation, + expression + } = node; + this.tokenChar(60); + this.print(typeAnnotation); + this.tokenChar(62); + this.space(); + this.print(expression); +} +function TSInstantiationExpression(node) { + this.print(node.expression); + { + this.print(node.typeParameters); + } +} +function TSEnumDeclaration(node) { + const { + declare, + const: isConst, + id + } = node; + if (declare) { + this.word("declare"); + this.space(); + } + if (isConst) { + this.word("const"); + this.space(); + } + this.word("enum"); + this.space(); + this.print(id); + this.space(); + { + TSEnumBody.call(this, node); + } +} +function TSEnumBody(node) { + printBraced(this, node, () => { + var _this$shouldPrintTrai; + return this.printList(node.members, (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true, true, true); + }); +} +function TSEnumMember(node) { + const { + id, + initializer + } = node; + this.print(id); + if (initializer) { + this.space(); + this.tokenChar(61); + this.space(); + this.print(initializer); + } +} +function TSModuleDeclaration(node) { + const { + declare, + id, + kind + } = node; + if (declare) { + this.word("declare"); + this.space(); + } + { + if (!node.global) { + this.word(kind != null ? kind : id.type === "Identifier" ? "namespace" : "module"); + this.space(); + } + this.print(id); + if (!node.body) { + this.semicolon(); + return; + } + let body = node.body; + while (body.type === "TSModuleDeclaration") { + this.tokenChar(46); + this.print(body.id); + body = body.body; + } + this.space(); + this.print(body); + } +} +function TSModuleBlock(node) { + printBraced(this, node, () => this.printSequence(node.body, true)); +} +function TSImportType(node) { + const { + argument, + qualifier, + options + } = node; + this.word("import"); + this.tokenChar(40); + this.print(argument); + if (options) { + this.tokenChar(44); + this.print(options); + } + this.tokenChar(41); + if (qualifier) { + this.tokenChar(46); + this.print(qualifier); + } + const typeArguments = node.typeParameters; + if (typeArguments) { + this.print(typeArguments); + } +} +function TSImportEqualsDeclaration(node) { + const { + id, + moduleReference + } = node; + if (node.isExport) { + this.word("export"); + this.space(); + } + this.word("import"); + this.space(); + this.print(id); + this.space(); + this.tokenChar(61); + this.space(); + this.print(moduleReference); + this.semicolon(); +} +function TSExternalModuleReference(node) { + this.token("require("); + this.print(node.expression); + this.tokenChar(41); +} +function TSNonNullExpression(node) { + this.print(node.expression); + this.tokenChar(33); +} +function TSExportAssignment(node) { + this.word("export"); + this.space(); + this.tokenChar(61); + this.space(); + this.print(node.expression); + this.semicolon(); +} +function TSNamespaceExportDeclaration(node) { + this.word("export"); + this.space(); + this.word("as"); + this.space(); + this.word("namespace"); + this.space(); + this.print(node.id); + this.semicolon(); +} +function tsPrintSignatureDeclarationBase(node) { + const { + typeParameters + } = node; + const parameters = node.parameters; + this.print(typeParameters); + this.tokenChar(40); + this._parameters(parameters, ")"); + const returnType = node.typeAnnotation; + this.print(returnType); +} +function tsPrintClassMemberModifiers(node) { + const isPrivateField = node.type === "ClassPrivateProperty"; + const isPublicField = node.type === "ClassAccessorProperty" || node.type === "ClassProperty"; + printModifiersList(this, node, [isPublicField && node.declare && "declare", !isPrivateField && node.accessibility]); + if (node.static) { + this.word("static"); + this.space(); + } + printModifiersList(this, node, [!isPrivateField && node.abstract && "abstract", !isPrivateField && node.override && "override", (isPublicField || isPrivateField) && node.readonly && "readonly"]); +} +function printBraced(printer, node, cb) { + printer.token("{"); + const exit = printer.enterDelimited(); + cb(); + exit(); + printer.rightBrace(node); +} +function printModifiersList(printer, node, modifiers) { + var _printer$tokenMap2; + const modifiersSet = new Set(); + for (const modifier of modifiers) { + if (modifier) modifiersSet.add(modifier); + } + (_printer$tokenMap2 = printer.tokenMap) == null || _printer$tokenMap2.find(node, tok => { + if (modifiersSet.has(tok.value)) { + printer.token(tok.value); + printer.space(); + modifiersSet.delete(tok.value); + return modifiersSet.size === 0; + } + }); + for (const modifier of modifiersSet) { + printer.word(modifier); + printer.space(); + } +} + +//# sourceMappingURL=typescript.js.map + + +/***/ }), + +/***/ 12123: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +exports.generate = generate; +var _sourceMap = __nccwpck_require__(18201); +var _printer = __nccwpck_require__(81163); +function normalizeOptions(code, opts, ast) { + if (opts.experimental_preserveFormat) { + if (typeof code !== "string") { + throw new Error("`experimental_preserveFormat` requires the original `code` to be passed to @babel/generator as a string"); + } + if (!opts.retainLines) { + throw new Error("`experimental_preserveFormat` requires `retainLines` to be set to `true`"); + } + if (opts.compact && opts.compact !== "auto") { + throw new Error("`experimental_preserveFormat` is not compatible with the `compact` option"); + } + if (opts.minified) { + throw new Error("`experimental_preserveFormat` is not compatible with the `minified` option"); + } + if (opts.jsescOption) { + throw new Error("`experimental_preserveFormat` is not compatible with the `jsescOption` option"); + } + if (!Array.isArray(ast.tokens)) { + throw new Error("`experimental_preserveFormat` requires the AST to have attatched the token of the input code. Make sure to enable the `tokens: true` parser option."); + } + } + const format = { + auxiliaryCommentBefore: opts.auxiliaryCommentBefore, + auxiliaryCommentAfter: opts.auxiliaryCommentAfter, + shouldPrintComment: opts.shouldPrintComment, + preserveFormat: opts.experimental_preserveFormat, + retainLines: opts.retainLines, + retainFunctionParens: opts.retainFunctionParens, + comments: opts.comments == null || opts.comments, + compact: opts.compact, + minified: opts.minified, + concise: opts.concise, + indent: { + adjustMultilineComment: true, + style: " " + }, + jsescOption: Object.assign({ + quotes: "double", + wrap: true, + minimal: false + }, opts.jsescOption), + topicToken: opts.topicToken, + importAttributesKeyword: opts.importAttributesKeyword + }; + { + var _opts$recordAndTupleS; + format.decoratorsBeforeExport = opts.decoratorsBeforeExport; + format.jsescOption.json = opts.jsonCompatibleStrings; + format.recordAndTupleSyntaxType = (_opts$recordAndTupleS = opts.recordAndTupleSyntaxType) != null ? _opts$recordAndTupleS : "hash"; + } + if (format.minified) { + format.compact = true; + format.shouldPrintComment = format.shouldPrintComment || (() => format.comments); + } else { + format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.includes("@license") || value.includes("@preserve")); + } + if (format.compact === "auto") { + format.compact = typeof code === "string" && code.length > 500000; + if (format.compact) { + console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`); + } + } + if (format.compact || format.preserveFormat) { + format.indent.adjustMultilineComment = false; + } + const { + auxiliaryCommentBefore, + auxiliaryCommentAfter, + shouldPrintComment + } = format; + if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) { + format.auxiliaryCommentBefore = undefined; + } + if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) { + format.auxiliaryCommentAfter = undefined; + } + return format; +} +{ + exports.CodeGenerator = class CodeGenerator { + constructor(ast, opts = {}, code) { + this._ast = void 0; + this._format = void 0; + this._map = void 0; + this._ast = ast; + this._format = normalizeOptions(code, opts, ast); + this._map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; + } + generate() { + const printer = new _printer.default(this._format, this._map); + return printer.generate(this._ast); + } + }; +} +function generate(ast, opts = {}, code) { + const format = normalizeOptions(code, opts, ast); + const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null; + const printer = new _printer.default(format, map, ast.tokens, typeof code === "string" ? code : null); + return printer.generate(ast); +} +var _default = exports["default"] = generate; + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 95460: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TokenContext = void 0; +exports.isLastChild = isLastChild; +exports.needsParens = needsParens; +exports.needsWhitespace = needsWhitespace; +exports.needsWhitespaceAfter = needsWhitespaceAfter; +exports.needsWhitespaceBefore = needsWhitespaceBefore; +var whitespace = __nccwpck_require__(77971); +var parens = __nccwpck_require__(19504); +var _t = __nccwpck_require__(16535); +const { + FLIPPED_ALIAS_KEYS, + VISITOR_KEYS, + isCallExpression, + isDecorator, + isExpressionStatement, + isMemberExpression, + isNewExpression, + isParenthesizedExpression +} = _t; +const TokenContext = exports.TokenContext = { + expressionStatement: 1, + arrowBody: 2, + exportDefault: 4, + forHead: 8, + forInHead: 16, + forOfHead: 32, + arrowFlowReturnType: 64 +}; +function expandAliases(obj) { + const map = new Map(); + function add(type, func) { + const fn = map.get(type); + map.set(type, fn ? function (node, parent, stack, inForInit, getRawIdentifier) { + var _fn; + return (_fn = fn(node, parent, stack, inForInit, getRawIdentifier)) != null ? _fn : func(node, parent, stack, inForInit, getRawIdentifier); + } : func); + } + for (const type of Object.keys(obj)) { + const aliases = FLIPPED_ALIAS_KEYS[type]; + if (aliases) { + for (const alias of aliases) { + add(alias, obj[type]); + } + } else { + add(type, obj[type]); + } + } + return map; +} +const expandedParens = expandAliases(parens); +const expandedWhitespaceNodes = expandAliases(whitespace.nodes); +function isOrHasCallExpression(node) { + if (isCallExpression(node)) { + return true; + } + return isMemberExpression(node) && isOrHasCallExpression(node.object); +} +function needsWhitespace(node, parent, type) { + var _expandedWhitespaceNo; + if (!node) return false; + if (isExpressionStatement(node)) { + node = node.expression; + } + const flag = (_expandedWhitespaceNo = expandedWhitespaceNodes.get(node.type)) == null ? void 0 : _expandedWhitespaceNo(node, parent); + if (typeof flag === "number") { + return (flag & type) !== 0; + } + return false; +} +function needsWhitespaceBefore(node, parent) { + return needsWhitespace(node, parent, 1); +} +function needsWhitespaceAfter(node, parent) { + return needsWhitespace(node, parent, 2); +} +function needsParens(node, parent, tokenContext, inForInit, getRawIdentifier) { + var _expandedParens$get; + if (!parent) return false; + if (isNewExpression(parent) && parent.callee === node) { + if (isOrHasCallExpression(node)) return true; + } + if (isDecorator(parent)) { + return !isDecoratorMemberExpression(node) && !(isCallExpression(node) && isDecoratorMemberExpression(node.callee)) && !isParenthesizedExpression(node); + } + return (_expandedParens$get = expandedParens.get(node.type)) == null ? void 0 : _expandedParens$get(node, parent, tokenContext, inForInit, getRawIdentifier); +} +function isDecoratorMemberExpression(node) { + switch (node.type) { + case "Identifier": + return true; + case "MemberExpression": + return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object); + default: + return false; + } +} +function isLastChild(parent, child) { + const visitorKeys = VISITOR_KEYS[parent.type]; + for (let i = visitorKeys.length - 1; i >= 0; i--) { + const val = parent[visitorKeys[i]]; + if (val === child) { + return true; + } else if (Array.isArray(val)) { + let j = val.length - 1; + while (j >= 0 && val[j] === null) j--; + return j >= 0 && val[j] === child; + } else if (val) { + return false; + } + } + return false; +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 19504: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AssignmentExpression = AssignmentExpression; +exports.Binary = Binary; +exports.BinaryExpression = BinaryExpression; +exports.ClassExpression = ClassExpression; +exports.ArrowFunctionExpression = exports.ConditionalExpression = ConditionalExpression; +exports.DoExpression = DoExpression; +exports.FunctionExpression = FunctionExpression; +exports.FunctionTypeAnnotation = FunctionTypeAnnotation; +exports.Identifier = Identifier; +exports.LogicalExpression = LogicalExpression; +exports.NullableTypeAnnotation = NullableTypeAnnotation; +exports.ObjectExpression = ObjectExpression; +exports.OptionalIndexedAccessType = OptionalIndexedAccessType; +exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression; +exports.SequenceExpression = SequenceExpression; +exports.TSSatisfiesExpression = exports.TSAsExpression = TSAsExpression; +exports.TSConditionalType = TSConditionalType; +exports.TSConstructorType = exports.TSFunctionType = TSFunctionType; +exports.TSInferType = TSInferType; +exports.TSInstantiationExpression = TSInstantiationExpression; +exports.TSIntersectionType = TSIntersectionType; +exports.UnaryLike = exports.TSTypeAssertion = UnaryLike; +exports.TSTypeOperator = TSTypeOperator; +exports.TSUnionType = TSUnionType; +exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; +exports.UpdateExpression = UpdateExpression; +exports.AwaitExpression = exports.YieldExpression = YieldExpression; +var _t = __nccwpck_require__(16535); +var _index = __nccwpck_require__(95460); +const { + isArrayTypeAnnotation, + isBinaryExpression, + isCallExpression, + isForOfStatement, + isIndexedAccessType, + isMemberExpression, + isObjectPattern, + isOptionalMemberExpression, + isYieldExpression, + isStatement +} = _t; +const PRECEDENCE = new Map([["||", 0], ["??", 0], ["|>", 0], ["&&", 1], ["|", 2], ["^", 3], ["&", 4], ["==", 5], ["===", 5], ["!=", 5], ["!==", 5], ["<", 6], [">", 6], ["<=", 6], [">=", 6], ["in", 6], ["instanceof", 6], [">>", 7], ["<<", 7], [">>>", 7], ["+", 8], ["-", 8], ["*", 9], ["/", 9], ["%", 9], ["**", 10]]); +function getBinaryPrecedence(node, nodeType) { + if (nodeType === "BinaryExpression" || nodeType === "LogicalExpression") { + return PRECEDENCE.get(node.operator); + } + if (nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression") { + return PRECEDENCE.get("in"); + } +} +function isTSTypeExpression(nodeType) { + return nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression" || nodeType === "TSTypeAssertion"; +} +const isClassExtendsClause = (node, parent) => { + const parentType = parent.type; + return (parentType === "ClassDeclaration" || parentType === "ClassExpression") && parent.superClass === node; +}; +const hasPostfixPart = (node, parent) => { + const parentType = parent.type; + return (parentType === "MemberExpression" || parentType === "OptionalMemberExpression") && parent.object === node || (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression") && parent.callee === node || parentType === "TaggedTemplateExpression" && parent.tag === node || parentType === "TSNonNullExpression"; +}; +function NullableTypeAnnotation(node, parent) { + return isArrayTypeAnnotation(parent); +} +function FunctionTypeAnnotation(node, parent, tokenContext) { + const parentType = parent.type; + return (parentType === "UnionTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "ArrayTypeAnnotation" || Boolean(tokenContext & _index.TokenContext.arrowFlowReturnType) + ); +} +function UpdateExpression(node, parent) { + return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent); +} +function needsParenBeforeExpressionBrace(tokenContext) { + return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.arrowBody)); +} +function ObjectExpression(node, parent, tokenContext) { + return needsParenBeforeExpressionBrace(tokenContext); +} +function DoExpression(node, parent, tokenContext) { + return !node.async && Boolean(tokenContext & _index.TokenContext.expressionStatement); +} +function Binary(node, parent) { + const parentType = parent.type; + if (node.type === "BinaryExpression" && node.operator === "**" && parentType === "BinaryExpression" && parent.operator === "**") { + return parent.left === node; + } + if (isClassExtendsClause(node, parent)) { + return true; + } + if (hasPostfixPart(node, parent) || parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "AwaitExpression") { + return true; + } + const parentPos = getBinaryPrecedence(parent, parentType); + if (parentPos != null) { + const nodePos = getBinaryPrecedence(node, node.type); + if (parentPos === nodePos && parentType === "BinaryExpression" && parent.right === node || parentPos > nodePos) { + return true; + } + } + return undefined; +} +function UnionTypeAnnotation(node, parent) { + const parentType = parent.type; + return parentType === "ArrayTypeAnnotation" || parentType === "NullableTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "UnionTypeAnnotation"; +} +function OptionalIndexedAccessType(node, parent) { + return isIndexedAccessType(parent) && parent.objectType === node; +} +function TSAsExpression(node, parent) { + if ((parent.type === "AssignmentExpression" || parent.type === "AssignmentPattern") && parent.left === node) { + return true; + } + if (parent.type === "BinaryExpression" && (parent.operator === "|" || parent.operator === "&") && node === parent.left) { + return true; + } + return Binary(node, parent); +} +function TSConditionalType(node, parent) { + const parentType = parent.type; + if (parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType" || parentType === "TSTypeOperator" || parentType === "TSTypeParameter") { + return true; + } + if ((parentType === "TSIntersectionType" || parentType === "TSUnionType") && parent.types[0] === node) { + return true; + } + if (parentType === "TSConditionalType" && (parent.checkType === node || parent.extendsType === node)) { + return true; + } + return false; +} +function TSUnionType(node, parent) { + const parentType = parent.type; + return parentType === "TSIntersectionType" || parentType === "TSTypeOperator" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +} +function TSIntersectionType(node, parent) { + const parentType = parent.type; + return parentType === "TSTypeOperator" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +} +function TSInferType(node, parent) { + const parentType = parent.type; + if (parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType") { + return true; + } + if (node.typeParameter.constraint) { + if ((parentType === "TSIntersectionType" || parentType === "TSUnionType") && parent.types[0] === node) { + return true; + } + } + return false; +} +function TSTypeOperator(node, parent) { + const parentType = parent.type; + return parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +} +function TSInstantiationExpression(node, parent) { + const parentType = parent.type; + return (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression" || parentType === "TSInstantiationExpression") && !!parent.typeParameters; +} +function TSFunctionType(node, parent) { + const parentType = parent.type; + return parentType === "TSIntersectionType" || parentType === "TSUnionType" || parentType === "TSTypeOperator" || parentType === "TSOptionalType" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSConditionalType" && (parent.checkType === node || parent.extendsType === node); +} +function BinaryExpression(node, parent, tokenContext, inForStatementInit) { + return node.operator === "in" && inForStatementInit; +} +function SequenceExpression(node, parent) { + const parentType = parent.type; + if (parentType === "SequenceExpression" || parentType === "ParenthesizedExpression" || parentType === "MemberExpression" && parent.property === node || parentType === "OptionalMemberExpression" && parent.property === node || parentType === "TemplateLiteral") { + return false; + } + if (parentType === "ClassDeclaration") { + return true; + } + if (parentType === "ForOfStatement") { + return parent.right === node; + } + if (parentType === "ExportDefaultDeclaration") { + return true; + } + return !isStatement(parent); +} +function YieldExpression(node, parent) { + const parentType = parent.type; + return parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "UnaryExpression" || parentType === "SpreadElement" || hasPostfixPart(node, parent) || parentType === "AwaitExpression" && isYieldExpression(node) || parentType === "ConditionalExpression" && node === parent.test || isClassExtendsClause(node, parent) || isTSTypeExpression(parentType); +} +function ClassExpression(node, parent, tokenContext) { + return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)); +} +function UnaryLike(node, parent) { + return hasPostfixPart(node, parent) || isBinaryExpression(parent) && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent); +} +function FunctionExpression(node, parent, tokenContext) { + return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)); +} +function ConditionalExpression(node, parent) { + const parentType = parent.type; + if (parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "ConditionalExpression" && parent.test === node || parentType === "AwaitExpression" || isTSTypeExpression(parentType)) { + return true; + } + return UnaryLike(node, parent); +} +function OptionalMemberExpression(node, parent) { + return isCallExpression(parent) && parent.callee === node || isMemberExpression(parent) && parent.object === node; +} +function AssignmentExpression(node, parent, tokenContext) { + if (needsParenBeforeExpressionBrace(tokenContext) && isObjectPattern(node.left)) { + return true; + } else { + return ConditionalExpression(node, parent); + } +} +function LogicalExpression(node, parent) { + const parentType = parent.type; + if (isTSTypeExpression(parentType)) return true; + if (parentType !== "LogicalExpression") return false; + switch (node.operator) { + case "||": + return parent.operator === "??" || parent.operator === "&&"; + case "&&": + return parent.operator === "??"; + case "??": + return parent.operator !== "??"; + } +} +function Identifier(node, parent, tokenContext, _inForInit, getRawIdentifier) { + var _node$extra; + const parentType = parent.type; + if ((_node$extra = node.extra) != null && _node$extra.parenthesized && parentType === "AssignmentExpression" && parent.left === node) { + const rightType = parent.right.type; + if ((rightType === "FunctionExpression" || rightType === "ClassExpression") && parent.right.id == null) { + return true; + } + } + if (getRawIdentifier && getRawIdentifier(node) !== node.name) { + return false; + } + if (node.name === "let") { + const isFollowedByBracket = isMemberExpression(parent, { + object: node, + computed: true + }) || isOptionalMemberExpression(parent, { + object: node, + computed: true, + optional: false + }); + if (isFollowedByBracket && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forHead | _index.TokenContext.forInHead)) { + return true; + } + return Boolean(tokenContext & _index.TokenContext.forOfHead); + } + return node.name === "async" && isForOfStatement(parent, { + left: node, + await: false + }); +} + +//# sourceMappingURL=parentheses.js.map + + +/***/ }), + +/***/ 77971: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.nodes = void 0; +var _t = __nccwpck_require__(16535); +const { + FLIPPED_ALIAS_KEYS, + isArrayExpression, + isAssignmentExpression, + isBinary, + isBlockStatement, + isCallExpression, + isFunction, + isIdentifier, + isLiteral, + isMemberExpression, + isObjectExpression, + isOptionalCallExpression, + isOptionalMemberExpression, + isStringLiteral +} = _t; +function crawlInternal(node, state) { + if (!node) return state; + if (isMemberExpression(node) || isOptionalMemberExpression(node)) { + crawlInternal(node.object, state); + if (node.computed) crawlInternal(node.property, state); + } else if (isBinary(node) || isAssignmentExpression(node)) { + crawlInternal(node.left, state); + crawlInternal(node.right, state); + } else if (isCallExpression(node) || isOptionalCallExpression(node)) { + state.hasCall = true; + crawlInternal(node.callee, state); + } else if (isFunction(node)) { + state.hasFunction = true; + } else if (isIdentifier(node)) { + state.hasHelper = state.hasHelper || node.callee && isHelper(node.callee); + } + return state; +} +function crawl(node) { + return crawlInternal(node, { + hasCall: false, + hasFunction: false, + hasHelper: false + }); +} +function isHelper(node) { + if (!node) return false; + if (isMemberExpression(node)) { + return isHelper(node.object) || isHelper(node.property); + } else if (isIdentifier(node)) { + return node.name === "require" || node.name.charCodeAt(0) === 95; + } else if (isCallExpression(node)) { + return isHelper(node.callee); + } else if (isBinary(node) || isAssignmentExpression(node)) { + return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); + } else { + return false; + } +} +function isType(node) { + return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node); +} +const nodes = exports.nodes = { + AssignmentExpression(node) { + const state = crawl(node.right); + if (state.hasCall && state.hasHelper || state.hasFunction) { + return state.hasFunction ? 1 | 2 : 2; + } + }, + SwitchCase(node, parent) { + return (!!node.consequent.length || parent.cases[0] === node ? 1 : 0) | (!node.consequent.length && parent.cases[parent.cases.length - 1] === node ? 2 : 0); + }, + LogicalExpression(node) { + if (isFunction(node.left) || isFunction(node.right)) { + return 2; + } + }, + Literal(node) { + if (isStringLiteral(node) && node.value === "use strict") { + return 2; + } + }, + CallExpression(node) { + if (isFunction(node.callee) || isHelper(node)) { + return 1 | 2; + } + }, + OptionalCallExpression(node) { + if (isFunction(node.callee)) { + return 1 | 2; + } + }, + VariableDeclaration(node) { + for (let i = 0; i < node.declarations.length; i++) { + const declar = node.declarations[i]; + let enabled = isHelper(declar.id) && !isType(declar.init); + if (!enabled && declar.init) { + const state = crawl(declar.init); + enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; + } + if (enabled) { + return 1 | 2; + } + } + }, + IfStatement(node) { + if (isBlockStatement(node.consequent)) { + return 1 | 2; + } + } +}; +nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { + if (parent.properties[0] === node) { + return 1; + } +}; +nodes.ObjectTypeCallProperty = function (node, parent) { + var _parent$properties; + if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) { + return 1; + } +}; +nodes.ObjectTypeIndexer = function (node, parent) { + var _parent$properties2, _parent$callPropertie; + if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) { + return 1; + } +}; +nodes.ObjectTypeInternalSlot = function (node, parent) { + var _parent$properties3, _parent$callPropertie2, _parent$indexers; + if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) { + return 1; + } +}; +[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { + [type].concat(FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { + const ret = amounts ? 1 | 2 : 0; + nodes[type] = () => ret; + }); +}); + +//# sourceMappingURL=whitespace.js.map + + +/***/ }), + +/***/ 81163: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _buffer = __nccwpck_require__(11669); +var n = __nccwpck_require__(95460); +var _t = __nccwpck_require__(16535); +var _tokenMap = __nccwpck_require__(93849); +var generatorFunctions = __nccwpck_require__(39662); +var _deprecated = __nccwpck_require__(60617); +const { + isExpression, + isFunction, + isStatement, + isClassBody, + isTSInterfaceBody, + isTSEnumMember +} = _t; +const SCIENTIFIC_NOTATION = /e/i; +const ZERO_DECIMAL_INTEGER = /\.0+$/; +const HAS_NEWLINE = /[\n\r\u2028\u2029]/; +const HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\n\r\u2028\u2029]|\*\//; +function commentIsNewline(c) { + return c.type === "CommentLine" || HAS_NEWLINE.test(c.value); +} +const { + needsParens +} = n; +class Printer { + constructor(format, map, tokens, originalCode) { + this.inForStatementInit = false; + this.tokenContext = 0; + this._tokens = null; + this._originalCode = null; + this._currentNode = null; + this._indent = 0; + this._indentRepeat = 0; + this._insideAux = false; + this._noLineTerminator = false; + this._noLineTerminatorAfterNode = null; + this._printAuxAfterOnNextUserNode = false; + this._printedComments = new Set(); + this._endsWithInteger = false; + this._endsWithWord = false; + this._endsWithDiv = false; + this._lastCommentLine = 0; + this._endsWithInnerRaw = false; + this._indentInnerComments = true; + this.tokenMap = null; + this._boundGetRawIdentifier = this._getRawIdentifier.bind(this); + this._printSemicolonBeforeNextNode = -1; + this._printSemicolonBeforeNextToken = -1; + this.format = format; + this._tokens = tokens; + this._originalCode = originalCode; + this._indentRepeat = format.indent.style.length; + this._inputMap = map == null ? void 0 : map._inputMap; + this._buf = new _buffer.default(map, format.indent.style[0]); + } + enterForStatementInit() { + if (this.inForStatementInit) return () => {}; + this.inForStatementInit = true; + return () => { + this.inForStatementInit = false; + }; + } + enterDelimited() { + const oldInForStatementInit = this.inForStatementInit; + const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; + if (oldInForStatementInit === false && oldNoLineTerminatorAfterNode === null) { + return () => {}; + } + this.inForStatementInit = false; + this._noLineTerminatorAfterNode = null; + return () => { + this.inForStatementInit = oldInForStatementInit; + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; + }; + } + generate(ast) { + if (this.format.preserveFormat) { + this.tokenMap = new _tokenMap.TokenMap(ast, this._tokens, this._originalCode); + } + this.print(ast); + this._maybeAddAuxComment(); + return this._buf.get(); + } + indent() { + const { + format + } = this; + if (format.preserveFormat || format.compact || format.concise) { + return; + } + this._indent++; + } + dedent() { + const { + format + } = this; + if (format.preserveFormat || format.compact || format.concise) { + return; + } + this._indent--; + } + semicolon(force = false) { + this._maybeAddAuxComment(); + if (force) { + this._appendChar(59); + this._noLineTerminator = false; + return; + } + if (this.tokenMap) { + const node = this._currentNode; + if (node.start != null && node.end != null) { + if (!this.tokenMap.endMatches(node, ";")) { + this._printSemicolonBeforeNextNode = this._buf.getCurrentLine(); + return; + } + const indexes = this.tokenMap.getIndexes(this._currentNode); + this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start); + } + } + this._queue(59); + this._noLineTerminator = false; + } + rightBrace(node) { + if (this.format.minified) { + this._buf.removeLastSemicolon(); + } + this.sourceWithOffset("end", node.loc, -1); + this.tokenChar(125); + } + rightParens(node) { + this.sourceWithOffset("end", node.loc, -1); + this.tokenChar(41); + } + space(force = false) { + const { + format + } = this; + if (format.compact || format.preserveFormat) return; + if (force) { + this._space(); + } else if (this._buf.hasContent()) { + const lastCp = this.getLastChar(); + if (lastCp !== 32 && lastCp !== 10) { + this._space(); + } + } + } + word(str, noLineTerminatorAfter = false) { + this.tokenContext = 0; + this._maybePrintInnerComments(str); + this._maybeAddAuxComment(); + if (this.tokenMap) this._catchUpToCurrentToken(str); + if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) { + this._space(); + } + this._append(str, false); + this._endsWithWord = true; + this._noLineTerminator = noLineTerminatorAfter; + } + number(str, number) { + function isNonDecimalLiteral(str) { + if (str.length > 2 && str.charCodeAt(0) === 48) { + const secondChar = str.charCodeAt(1); + return secondChar === 98 || secondChar === 111 || secondChar === 120; + } + return false; + } + this.word(str); + this._endsWithInteger = Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46; + } + token(str, maybeNewline = false, occurrenceCount = 0) { + this.tokenContext = 0; + this._maybePrintInnerComments(str, occurrenceCount); + this._maybeAddAuxComment(); + if (this.tokenMap) this._catchUpToCurrentToken(str, occurrenceCount); + const lastChar = this.getLastChar(); + const strFirst = str.charCodeAt(0); + if (lastChar === 33 && (str === "--" || strFirst === 61) || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) { + this._space(); + } + this._append(str, maybeNewline); + this._noLineTerminator = false; + } + tokenChar(char) { + this.tokenContext = 0; + const str = String.fromCharCode(char); + this._maybePrintInnerComments(str); + this._maybeAddAuxComment(); + if (this.tokenMap) this._catchUpToCurrentToken(str); + const lastChar = this.getLastChar(); + if (char === 43 && lastChar === 43 || char === 45 && lastChar === 45 || char === 46 && this._endsWithInteger) { + this._space(); + } + this._appendChar(char); + this._noLineTerminator = false; + } + newline(i = 1, force) { + if (i <= 0) return; + if (!force) { + if (this.format.retainLines || this.format.compact) return; + if (this.format.concise) { + this.space(); + return; + } + } + if (i > 2) i = 2; + i -= this._buf.getNewlineCount(); + for (let j = 0; j < i; j++) { + this._newline(); + } + return; + } + endsWith(char) { + return this.getLastChar() === char; + } + getLastChar() { + return this._buf.getLastChar(); + } + endsWithCharAndNewline() { + return this._buf.endsWithCharAndNewline(); + } + removeTrailingNewline() { + this._buf.removeTrailingNewline(); + } + exactSource(loc, cb) { + if (!loc) { + cb(); + return; + } + this._catchUp("start", loc); + this._buf.exactSource(loc, cb); + } + source(prop, loc) { + if (!loc) return; + this._catchUp(prop, loc); + this._buf.source(prop, loc); + } + sourceWithOffset(prop, loc, columnOffset) { + if (!loc || this.format.preserveFormat) return; + this._catchUp(prop, loc); + this._buf.sourceWithOffset(prop, loc, columnOffset); + } + sourceIdentifierName(identifierName, pos) { + if (!this._buf._canMarkIdName) return; + const sourcePosition = this._buf._sourcePosition; + sourcePosition.identifierNamePos = pos; + sourcePosition.identifierName = identifierName; + } + _space() { + this._queue(32); + } + _newline() { + this._queue(10); + } + _catchUpToCurrentToken(str, occurrenceCount = 0) { + const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount); + if (token) this._catchUpTo(token.loc.start); + if (this._printSemicolonBeforeNextToken !== -1 && this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()) { + this._buf.appendChar(59); + this._endsWithWord = false; + this._endsWithInteger = false; + this._endsWithDiv = false; + } + this._printSemicolonBeforeNextToken = -1; + this._printSemicolonBeforeNextNode = -1; + } + _append(str, maybeNewline) { + this._maybeIndent(str.charCodeAt(0)); + this._buf.append(str, maybeNewline); + this._endsWithWord = false; + this._endsWithInteger = false; + this._endsWithDiv = false; + } + _appendChar(char) { + this._maybeIndent(char); + this._buf.appendChar(char); + this._endsWithWord = false; + this._endsWithInteger = false; + this._endsWithDiv = false; + } + _queue(char) { + this._maybeIndent(char); + this._buf.queue(char); + this._endsWithWord = false; + this._endsWithInteger = false; + } + _maybeIndent(firstChar) { + if (this._indent && firstChar !== 10 && this.endsWith(10)) { + this._buf.queueIndentation(this._getIndent()); + } + } + _shouldIndent(firstChar) { + if (this._indent && firstChar !== 10 && this.endsWith(10)) { + return true; + } + } + catchUp(line) { + if (!this.format.retainLines) return; + const count = line - this._buf.getCurrentLine(); + for (let i = 0; i < count; i++) { + this._newline(); + } + } + _catchUp(prop, loc) { + const { + format + } = this; + if (!format.preserveFormat) { + if (format.retainLines && loc != null && loc[prop]) { + this.catchUp(loc[prop].line); + } + return; + } + const pos = loc == null ? void 0 : loc[prop]; + if (pos != null) this._catchUpTo(pos); + } + _catchUpTo({ + line, + column, + index + }) { + const count = line - this._buf.getCurrentLine(); + if (count > 0 && this._noLineTerminator) { + return; + } + for (let i = 0; i < count; i++) { + this._newline(); + } + const spacesCount = count > 0 ? column : column - this._buf.getCurrentColumn(); + if (spacesCount > 0) { + const spaces = this._originalCode ? this._originalCode.slice(index - spacesCount, index).replace(/[^\t\x0B\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]/gu, " ") : " ".repeat(spacesCount); + this._append(spaces, false); + } + } + _getIndent() { + return this._indentRepeat * this._indent; + } + printTerminatorless(node) { + this._noLineTerminator = true; + this.print(node); + } + print(node, noLineTerminatorAfter, trailingCommentsLineOffset) { + var _node$extra, _node$leadingComments, _node$leadingComments2; + if (!node) return; + this._endsWithInnerRaw = false; + const nodeType = node.type; + const format = this.format; + const oldConcise = format.concise; + if (node._compact) { + format.concise = true; + } + const printMethod = this[nodeType]; + if (printMethod === undefined) { + throw new ReferenceError(`unknown node of type ${JSON.stringify(nodeType)} with constructor ${JSON.stringify(node.constructor.name)}`); + } + const parent = this._currentNode; + this._currentNode = node; + if (this.tokenMap) { + this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode; + } + const oldInAux = this._insideAux; + this._insideAux = node.loc == null; + this._maybeAddAuxComment(this._insideAux && !oldInAux); + const parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized; + let shouldPrintParens = parenthesized && format.preserveFormat || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, this.inForStatementInit, format.preserveFormat ? this._boundGetRawIdentifier : undefined); + if (!shouldPrintParens && parenthesized && (_node$leadingComments = node.leadingComments) != null && _node$leadingComments.length && node.leadingComments[0].type === "CommentBlock") { + const parentType = parent == null ? void 0 : parent.type; + switch (parentType) { + case "ExpressionStatement": + case "VariableDeclarator": + case "AssignmentExpression": + case "ReturnStatement": + break; + case "CallExpression": + case "OptionalCallExpression": + case "NewExpression": + if (parent.callee !== node) break; + default: + shouldPrintParens = true; + } + } + let indentParenthesized = false; + if (!shouldPrintParens && this._noLineTerminator && ((_node$leadingComments2 = node.leadingComments) != null && _node$leadingComments2.some(commentIsNewline) || this.format.retainLines && node.loc && node.loc.start.line > this._buf.getCurrentLine())) { + shouldPrintParens = true; + indentParenthesized = true; + } + let oldNoLineTerminatorAfterNode; + let oldInForStatementInitWasTrue; + if (!shouldPrintParens) { + noLineTerminatorAfter || (noLineTerminatorAfter = parent && this._noLineTerminatorAfterNode === parent && n.isLastChild(parent, node)); + if (noLineTerminatorAfter) { + var _node$trailingComment; + if ((_node$trailingComment = node.trailingComments) != null && _node$trailingComment.some(commentIsNewline)) { + if (isExpression(node)) shouldPrintParens = true; + } else { + oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; + this._noLineTerminatorAfterNode = node; + } + } + } + if (shouldPrintParens) { + this.tokenChar(40); + if (indentParenthesized) this.indent(); + this._endsWithInnerRaw = false; + if (this.inForStatementInit) { + oldInForStatementInitWasTrue = true; + this.inForStatementInit = false; + } + oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; + this._noLineTerminatorAfterNode = null; + } + this._lastCommentLine = 0; + this._printLeadingComments(node, parent); + const loc = nodeType === "Program" || nodeType === "File" ? null : node.loc; + this.exactSource(loc, printMethod.bind(this, node, parent)); + if (shouldPrintParens) { + this._printTrailingComments(node, parent); + if (indentParenthesized) { + this.dedent(); + this.newline(); + } + this.tokenChar(41); + this._noLineTerminator = noLineTerminatorAfter; + if (oldInForStatementInitWasTrue) this.inForStatementInit = true; + } else if (noLineTerminatorAfter && !this._noLineTerminator) { + this._noLineTerminator = true; + this._printTrailingComments(node, parent); + } else { + this._printTrailingComments(node, parent, trailingCommentsLineOffset); + } + this._currentNode = parent; + format.concise = oldConcise; + this._insideAux = oldInAux; + if (oldNoLineTerminatorAfterNode !== undefined) { + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; + } + this._endsWithInnerRaw = false; + } + _maybeAddAuxComment(enteredPositionlessNode) { + if (enteredPositionlessNode) this._printAuxBeforeComment(); + if (!this._insideAux) this._printAuxAfterComment(); + } + _printAuxBeforeComment() { + if (this._printAuxAfterOnNextUserNode) return; + this._printAuxAfterOnNextUserNode = true; + const comment = this.format.auxiliaryCommentBefore; + if (comment) { + this._printComment({ + type: "CommentBlock", + value: comment + }, 0); + } + } + _printAuxAfterComment() { + if (!this._printAuxAfterOnNextUserNode) return; + this._printAuxAfterOnNextUserNode = false; + const comment = this.format.auxiliaryCommentAfter; + if (comment) { + this._printComment({ + type: "CommentBlock", + value: comment + }, 0); + } + } + getPossibleRaw(node) { + const extra = node.extra; + if ((extra == null ? void 0 : extra.raw) != null && extra.rawValue != null && node.value === extra.rawValue) { + return extra.raw; + } + } + printJoin(nodes, statement, indent, separator, printTrailingSeparator, addNewlines, iterator, trailingCommentsLineOffset) { + if (!(nodes != null && nodes.length)) return; + if (indent == null && this.format.retainLines) { + var _nodes$0$loc; + const startLine = (_nodes$0$loc = nodes[0].loc) == null ? void 0 : _nodes$0$loc.start.line; + if (startLine != null && startLine !== this._buf.getCurrentLine()) { + indent = true; + } + } + if (indent) this.indent(); + const newlineOpts = { + addNewlines: addNewlines, + nextNodeStartLine: 0 + }; + const boundSeparator = separator == null ? void 0 : separator.bind(this); + const len = nodes.length; + for (let i = 0; i < len; i++) { + const node = nodes[i]; + if (!node) continue; + if (statement) this._printNewline(i === 0, newlineOpts); + this.print(node, undefined, trailingCommentsLineOffset || 0); + iterator == null || iterator(node, i); + if (boundSeparator != null) { + if (i < len - 1) boundSeparator(i, false);else if (printTrailingSeparator) boundSeparator(i, true); + } + if (statement) { + var _node$trailingComment2; + if (!((_node$trailingComment2 = node.trailingComments) != null && _node$trailingComment2.length)) { + this._lastCommentLine = 0; + } + if (i + 1 === len) { + this.newline(1); + } else { + var _nextNode$loc; + const nextNode = nodes[i + 1]; + newlineOpts.nextNodeStartLine = ((_nextNode$loc = nextNode.loc) == null ? void 0 : _nextNode$loc.start.line) || 0; + this._printNewline(true, newlineOpts); + } + } + } + if (indent) this.dedent(); + } + printAndIndentOnComments(node) { + const indent = node.leadingComments && node.leadingComments.length > 0; + if (indent) this.indent(); + this.print(node); + if (indent) this.dedent(); + } + printBlock(parent) { + const node = parent.body; + if (node.type !== "EmptyStatement") { + this.space(); + } + this.print(node); + } + _printTrailingComments(node, parent, lineOffset) { + const { + innerComments, + trailingComments + } = node; + if (innerComments != null && innerComments.length) { + this._printComments(2, innerComments, node, parent, lineOffset); + } + if (trailingComments != null && trailingComments.length) { + this._printComments(2, trailingComments, node, parent, lineOffset); + } + } + _printLeadingComments(node, parent) { + const comments = node.leadingComments; + if (!(comments != null && comments.length)) return; + this._printComments(0, comments, node, parent); + } + _maybePrintInnerComments(nextTokenStr, nextTokenOccurrenceCount) { + if (this._endsWithInnerRaw) { + var _this$tokenMap; + this.printInnerComments((_this$tokenMap = this.tokenMap) == null ? void 0 : _this$tokenMap.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount)); + } + this._endsWithInnerRaw = true; + this._indentInnerComments = true; + } + printInnerComments(nextToken) { + const node = this._currentNode; + const comments = node.innerComments; + if (!(comments != null && comments.length)) return; + const hasSpace = this.endsWith(32); + const indent = this._indentInnerComments; + const printedCommentsCount = this._printedComments.size; + if (indent) this.indent(); + this._printComments(1, comments, node, undefined, undefined, nextToken); + if (hasSpace && printedCommentsCount !== this._printedComments.size) { + this.space(); + } + if (indent) this.dedent(); + } + noIndentInnerCommentsHere() { + this._indentInnerComments = false; + } + printSequence(nodes, indent, trailingCommentsLineOffset, addNewlines) { + this.printJoin(nodes, true, indent != null ? indent : false, undefined, undefined, addNewlines, undefined, trailingCommentsLineOffset); + } + printList(items, printTrailingSeparator, statement, indent, separator, iterator) { + this.printJoin(items, statement, indent, separator != null ? separator : commaSeparator, printTrailingSeparator, undefined, iterator); + } + shouldPrintTrailingComma(listEnd) { + if (!this.tokenMap) return null; + const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, listEnd)); + if (listEndIndex <= 0) return null; + return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], ","); + } + _printNewline(newLine, opts) { + const format = this.format; + if (format.retainLines || format.compact) return; + if (format.concise) { + this.space(); + return; + } + if (!newLine) { + return; + } + const startLine = opts.nextNodeStartLine; + const lastCommentLine = this._lastCommentLine; + if (startLine > 0 && lastCommentLine > 0) { + const offset = startLine - lastCommentLine; + if (offset >= 0) { + this.newline(offset || 1); + return; + } + } + if (this._buf.hasContent()) { + this.newline(1); + } + } + _shouldPrintComment(comment, nextToken) { + if (comment.ignore) return 0; + if (this._printedComments.has(comment)) return 0; + if (this._noLineTerminator && HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)) { + return 2; + } + if (nextToken && this.tokenMap) { + const commentTok = this.tokenMap.find(this._currentNode, token => token.value === comment.value); + if (commentTok && commentTok.start > nextToken.start) { + return 2; + } + } + this._printedComments.add(comment); + if (!this.format.shouldPrintComment(comment.value)) { + return 0; + } + return 1; + } + _printComment(comment, skipNewLines) { + const noLineTerminator = this._noLineTerminator; + const isBlockComment = comment.type === "CommentBlock"; + const printNewLines = isBlockComment && skipNewLines !== 1 && !this._noLineTerminator; + if (printNewLines && this._buf.hasContent() && skipNewLines !== 2) { + this.newline(1); + } + const lastCharCode = this.getLastChar(); + if (lastCharCode !== 91 && lastCharCode !== 123 && lastCharCode !== 40) { + this.space(); + } + let val; + if (isBlockComment) { + val = `/*${comment.value}*/`; + if (this.format.indent.adjustMultilineComment) { + var _comment$loc; + const offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column; + if (offset) { + const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); + val = val.replace(newlineRegex, "\n"); + } + if (this.format.concise) { + val = val.replace(/\n(?!$)/g, `\n`); + } else { + let indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn(); + if (this._shouldIndent(47) || this.format.retainLines) { + indentSize += this._getIndent(); + } + val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`); + } + } + } else if (!noLineTerminator) { + val = `//${comment.value}`; + } else { + val = `/*${comment.value}*/`; + } + if (this._endsWithDiv) this._space(); + if (this.tokenMap) { + const { + _printSemicolonBeforeNextToken, + _printSemicolonBeforeNextNode + } = this; + this._printSemicolonBeforeNextToken = -1; + this._printSemicolonBeforeNextNode = -1; + this.source("start", comment.loc); + this._append(val, isBlockComment); + this._printSemicolonBeforeNextNode = _printSemicolonBeforeNextNode; + this._printSemicolonBeforeNextToken = _printSemicolonBeforeNextToken; + } else { + this.source("start", comment.loc); + this._append(val, isBlockComment); + } + if (!isBlockComment && !noLineTerminator) { + this.newline(1, true); + } + if (printNewLines && skipNewLines !== 3) { + this.newline(1); + } + } + _printComments(type, comments, node, parent, lineOffset = 0, nextToken) { + const nodeLoc = node.loc; + const len = comments.length; + let hasLoc = !!nodeLoc; + const nodeStartLine = hasLoc ? nodeLoc.start.line : 0; + const nodeEndLine = hasLoc ? nodeLoc.end.line : 0; + let lastLine = 0; + let leadingCommentNewline = 0; + const maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this); + for (let i = 0; i < len; i++) { + const comment = comments[i]; + const shouldPrint = this._shouldPrintComment(comment, nextToken); + if (shouldPrint === 2) { + hasLoc = false; + break; + } + if (hasLoc && comment.loc && shouldPrint === 1) { + const commentStartLine = comment.loc.start.line; + const commentEndLine = comment.loc.end.line; + if (type === 0) { + let offset = 0; + if (i === 0) { + if (this._buf.hasContent() && (comment.type === "CommentLine" || commentStartLine !== commentEndLine)) { + offset = leadingCommentNewline = 1; + } + } else { + offset = commentStartLine - lastLine; + } + lastLine = commentEndLine; + maybeNewline(offset); + this._printComment(comment, 1); + if (i + 1 === len) { + maybeNewline(Math.max(nodeStartLine - lastLine, leadingCommentNewline)); + lastLine = nodeStartLine; + } + } else if (type === 1) { + const offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine); + lastLine = commentEndLine; + maybeNewline(offset); + this._printComment(comment, 1); + if (i + 1 === len) { + maybeNewline(Math.min(1, nodeEndLine - lastLine)); + lastLine = nodeEndLine; + } + } else { + const offset = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine); + lastLine = commentEndLine; + maybeNewline(offset); + this._printComment(comment, 1); + } + } else { + hasLoc = false; + if (shouldPrint !== 1) { + continue; + } + if (len === 1) { + const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value); + const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumMember(node); + if (type === 0) { + this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent, { + body: node + }) ? 1 : 0); + } else if (shouldSkipNewline && type === 2) { + this._printComment(comment, 1); + } else { + this._printComment(comment, 0); + } + } else if (type === 1 && !(node.type === "ObjectExpression" && node.properties.length > 1) && node.type !== "ClassBody" && node.type !== "TSInterfaceBody") { + this._printComment(comment, i === 0 ? 2 : i === len - 1 ? 3 : 0); + } else { + this._printComment(comment, 0); + } + } + } + if (type === 2 && hasLoc && lastLine) { + this._lastCommentLine = lastLine; + } + } +} +Object.assign(Printer.prototype, generatorFunctions); +{ + (0, _deprecated.addDeprecatedGenerators)(Printer); +} +var _default = exports["default"] = Printer; +function commaSeparator(occurrenceCount, last) { + this.token(",", false, occurrenceCount); + if (!last) this.space(); +} + +//# sourceMappingURL=printer.js.map + + +/***/ }), + +/***/ 18201: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _genMapping = __nccwpck_require__(36153); +var _traceMapping = __nccwpck_require__(99535); +class SourceMap { + constructor(opts, code) { + var _opts$sourceFileName; + this._map = void 0; + this._rawMappings = void 0; + this._sourceFileName = void 0; + this._lastGenLine = 0; + this._lastSourceLine = 0; + this._lastSourceColumn = 0; + this._inputMap = void 0; + const map = this._map = new _genMapping.GenMapping({ + sourceRoot: opts.sourceRoot + }); + this._sourceFileName = (_opts$sourceFileName = opts.sourceFileName) == null ? void 0 : _opts$sourceFileName.replace(/\\/g, "/"); + this._rawMappings = undefined; + if (opts.inputSourceMap) { + this._inputMap = new _traceMapping.TraceMap(opts.inputSourceMap); + const resolvedSources = this._inputMap.resolvedSources; + if (resolvedSources.length) { + for (let i = 0; i < resolvedSources.length; i++) { + var _this$_inputMap$sourc; + (0, _genMapping.setSourceContent)(map, resolvedSources[i], (_this$_inputMap$sourc = this._inputMap.sourcesContent) == null ? void 0 : _this$_inputMap$sourc[i]); + } + } + } + if (typeof code === "string" && !opts.inputSourceMap) { + (0, _genMapping.setSourceContent)(map, this._sourceFileName, code); + } else if (typeof code === "object") { + for (const sourceFileName of Object.keys(code)) { + (0, _genMapping.setSourceContent)(map, sourceFileName.replace(/\\/g, "/"), code[sourceFileName]); + } + } + } + get() { + return (0, _genMapping.toEncodedMap)(this._map); + } + getDecoded() { + return (0, _genMapping.toDecodedMap)(this._map); + } + getRawMappings() { + return this._rawMappings || (this._rawMappings = (0, _genMapping.allMappings)(this._map)); + } + mark(generated, line, column, identifierName, identifierNamePos, filename) { + var _originalMapping; + this._rawMappings = undefined; + let originalMapping; + if (line != null) { + if (this._inputMap) { + originalMapping = (0, _traceMapping.originalPositionFor)(this._inputMap, { + line, + column + }); + if (!originalMapping.name && identifierNamePos) { + const originalIdentifierMapping = (0, _traceMapping.originalPositionFor)(this._inputMap, identifierNamePos); + if (originalIdentifierMapping.name) { + identifierName = originalIdentifierMapping.name; + } + } + } else { + originalMapping = { + source: (filename == null ? void 0 : filename.replace(/\\/g, "/")) || this._sourceFileName, + line: line, + column: column + }; + } + } + (0, _genMapping.maybeAddMapping)(this._map, { + name: identifierName, + generated, + source: (_originalMapping = originalMapping) == null ? void 0 : _originalMapping.source, + original: originalMapping + }); + } +} +exports["default"] = SourceMap; + +//# sourceMappingURL=source-map.js.map + + +/***/ }), + +/***/ 93849: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TokenMap = void 0; +var _t = __nccwpck_require__(16535); +const { + traverseFast, + VISITOR_KEYS +} = _t; +class TokenMap { + constructor(ast, tokens, source) { + this._tokens = void 0; + this._source = void 0; + this._nodesToTokenIndexes = new Map(); + this._nodesOccurrencesCountCache = new Map(); + this._tokensCache = new Map(); + this._tokens = tokens; + this._source = source; + traverseFast(ast, node => { + const indexes = this._getTokensIndexesOfNode(node); + if (indexes.length > 0) this._nodesToTokenIndexes.set(node, indexes); + }); + this._tokensCache = null; + } + has(node) { + return this._nodesToTokenIndexes.has(node); + } + getIndexes(node) { + return this._nodesToTokenIndexes.get(node); + } + find(node, condition) { + const indexes = this._nodesToTokenIndexes.get(node); + if (indexes) { + for (let k = 0; k < indexes.length; k++) { + const index = indexes[k]; + const tok = this._tokens[index]; + if (condition(tok, index)) return tok; + } + } + return null; + } + findLastIndex(node, condition) { + const indexes = this._nodesToTokenIndexes.get(node); + if (indexes) { + for (let k = indexes.length - 1; k >= 0; k--) { + const index = indexes[k]; + const tok = this._tokens[index]; + if (condition(tok, index)) return index; + } + } + return -1; + } + findMatching(node, test, occurrenceCount = 0) { + const indexes = this._nodesToTokenIndexes.get(node); + if (indexes) { + let i = 0; + const count = occurrenceCount; + if (count > 1) { + const cache = this._nodesOccurrencesCountCache.get(node); + if (cache && cache.test === test && cache.count < count) { + i = cache.i + 1; + occurrenceCount -= cache.count + 1; + } + } + for (; i < indexes.length; i++) { + const tok = this._tokens[indexes[i]]; + if (this.matchesOriginal(tok, test)) { + if (occurrenceCount === 0) { + if (count > 0) { + this._nodesOccurrencesCountCache.set(node, { + test, + count, + i + }); + } + return tok; + } + occurrenceCount--; + } + } + } + return null; + } + matchesOriginal(token, test) { + if (token.end - token.start !== test.length) return false; + if (token.value != null) return token.value === test; + return this._source.startsWith(test, token.start); + } + startMatches(node, test) { + const indexes = this._nodesToTokenIndexes.get(node); + if (!indexes) return false; + const tok = this._tokens[indexes[0]]; + if (tok.start !== node.start) return false; + return this.matchesOriginal(tok, test); + } + endMatches(node, test) { + const indexes = this._nodesToTokenIndexes.get(node); + if (!indexes) return false; + const tok = this._tokens[indexes[indexes.length - 1]]; + if (tok.end !== node.end) return false; + return this.matchesOriginal(tok, test); + } + _getTokensIndexesOfNode(node) { + if (node.start == null || node.end == null) return []; + const { + first, + last + } = this._findTokensOfNode(node, 0, this._tokens.length - 1); + let low = first; + const children = childrenIterator(node); + if ((node.type === "ExportNamedDeclaration" || node.type === "ExportDefaultDeclaration") && node.declaration && node.declaration.type === "ClassDeclaration") { + children.next(); + } + const indexes = []; + for (const child of children) { + if (child == null) continue; + if (child.start == null || child.end == null) continue; + const childTok = this._findTokensOfNode(child, low, last); + const high = childTok.first; + for (let k = low; k < high; k++) indexes.push(k); + low = childTok.last + 1; + } + for (let k = low; k <= last; k++) indexes.push(k); + return indexes; + } + _findTokensOfNode(node, low, high) { + const cached = this._tokensCache.get(node); + if (cached) return cached; + const first = this._findFirstTokenOfNode(node.start, low, high); + const last = this._findLastTokenOfNode(node.end, first, high); + this._tokensCache.set(node, { + first, + last + }); + return { + first, + last + }; + } + _findFirstTokenOfNode(start, low, high) { + while (low <= high) { + const mid = high + low >> 1; + if (start < this._tokens[mid].start) { + high = mid - 1; + } else if (start > this._tokens[mid].start) { + low = mid + 1; + } else { + return mid; + } + } + return low; + } + _findLastTokenOfNode(end, low, high) { + while (low <= high) { + const mid = high + low >> 1; + if (end < this._tokens[mid].end) { + high = mid - 1; + } else if (end > this._tokens[mid].end) { + low = mid + 1; + } else { + return mid; + } + } + return high; + } +} +exports.TokenMap = TokenMap; +function* childrenIterator(node) { + if (node.type === "TemplateLiteral") { + yield node.quasis[0]; + for (let i = 1; i < node.quasis.length; i++) { + yield node.expressions[i - 1]; + yield node.quasis[i]; + } + return; + } + const keys = VISITOR_KEYS[node.type]; + for (const key of keys) { + const child = node[key]; + if (!child) continue; + if (Array.isArray(child)) { + yield* child; + } else { + yield child; + } + } +} + +//# sourceMappingURL=token-map.js.map + + +/***/ }), + +/***/ 91235: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _assert = __nccwpck_require__(42613); +var _t = __nccwpck_require__(16535); +const { + callExpression, + cloneNode, + expressionStatement, + identifier, + importDeclaration, + importDefaultSpecifier, + importNamespaceSpecifier, + importSpecifier, + memberExpression, + stringLiteral, + variableDeclaration, + variableDeclarator +} = _t; +class ImportBuilder { + constructor(importedSource, scope, hub) { + this._statements = []; + this._resultName = null; + this._importedSource = void 0; + this._scope = scope; + this._hub = hub; + this._importedSource = importedSource; + } + done() { + return { + statements: this._statements, + resultName: this._resultName + }; + } + import() { + this._statements.push(importDeclaration([], stringLiteral(this._importedSource))); + return this; + } + require() { + this._statements.push(expressionStatement(callExpression(identifier("require"), [stringLiteral(this._importedSource)]))); + return this; + } + namespace(name = "namespace") { + const local = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; + _assert(statement.type === "ImportDeclaration"); + _assert(statement.specifiers.length === 0); + statement.specifiers = [importNamespaceSpecifier(local)]; + this._resultName = cloneNode(local); + return this; + } + default(name) { + const id = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; + _assert(statement.type === "ImportDeclaration"); + _assert(statement.specifiers.length === 0); + statement.specifiers = [importDefaultSpecifier(id)]; + this._resultName = cloneNode(id); + return this; + } + named(name, importName) { + if (importName === "default") return this.default(name); + const id = this._scope.generateUidIdentifier(name); + const statement = this._statements[this._statements.length - 1]; + _assert(statement.type === "ImportDeclaration"); + _assert(statement.specifiers.length === 0); + statement.specifiers = [importSpecifier(id, identifier(importName))]; + this._resultName = cloneNode(id); + return this; + } + var(name) { + const id = this._scope.generateUidIdentifier(name); + let statement = this._statements[this._statements.length - 1]; + if (statement.type !== "ExpressionStatement") { + _assert(this._resultName); + statement = expressionStatement(this._resultName); + this._statements.push(statement); + } + this._statements[this._statements.length - 1] = variableDeclaration("var", [variableDeclarator(id, statement.expression)]); + this._resultName = cloneNode(id); + return this; + } + defaultInterop() { + return this._interop(this._hub.addHelper("interopRequireDefault")); + } + wildcardInterop() { + return this._interop(this._hub.addHelper("interopRequireWildcard")); + } + _interop(callee) { + const statement = this._statements[this._statements.length - 1]; + if (statement.type === "ExpressionStatement") { + statement.expression = callExpression(callee, [statement.expression]); + } else if (statement.type === "VariableDeclaration") { + _assert(statement.declarations.length === 1); + statement.declarations[0].init = callExpression(callee, [statement.declarations[0].init]); + } else { + _assert.fail("Unexpected type."); + } + return this; + } + prop(name) { + const statement = this._statements[this._statements.length - 1]; + if (statement.type === "ExpressionStatement") { + statement.expression = memberExpression(statement.expression, identifier(name)); + } else if (statement.type === "VariableDeclaration") { + _assert(statement.declarations.length === 1); + statement.declarations[0].init = memberExpression(statement.declarations[0].init, identifier(name)); + } else { + _assert.fail("Unexpected type:" + statement.type); + } + return this; + } + read(name) { + this._resultName = memberExpression(this._resultName, identifier(name)); + } +} +exports["default"] = ImportBuilder; + +//# sourceMappingURL=import-builder.js.map + + +/***/ }), + +/***/ 56358: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _assert = __nccwpck_require__(42613); +var _t = __nccwpck_require__(16535); +var _importBuilder = __nccwpck_require__(91235); +var _isModule = __nccwpck_require__(97585); +const { + identifier, + importSpecifier, + numericLiteral, + sequenceExpression, + isImportDeclaration +} = _t; +class ImportInjector { + constructor(path, importedSource, opts) { + this._defaultOpts = { + importedSource: null, + importedType: "commonjs", + importedInterop: "babel", + importingInterop: "babel", + ensureLiveReference: false, + ensureNoContext: false, + importPosition: "before" + }; + const programPath = path.find(p => p.isProgram()); + this._programPath = programPath; + this._programScope = programPath.scope; + this._hub = programPath.hub; + this._defaultOpts = this._applyDefaults(importedSource, opts, true); + } + addDefault(importedSourceIn, opts) { + return this.addNamed("default", importedSourceIn, opts); + } + addNamed(importName, importedSourceIn, opts) { + _assert(typeof importName === "string"); + return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName); + } + addNamespace(importedSourceIn, opts) { + return this._generateImport(this._applyDefaults(importedSourceIn, opts), null); + } + addSideEffect(importedSourceIn, opts) { + return this._generateImport(this._applyDefaults(importedSourceIn, opts), void 0); + } + _applyDefaults(importedSource, opts, isInit = false) { + let newOpts; + if (typeof importedSource === "string") { + newOpts = Object.assign({}, this._defaultOpts, { + importedSource + }, opts); + } else { + _assert(!opts, "Unexpected secondary arguments."); + newOpts = Object.assign({}, this._defaultOpts, importedSource); + } + if (!isInit && opts) { + if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint; + if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist; + } + return newOpts; + } + _generateImport(opts, importName) { + const isDefault = importName === "default"; + const isNamed = !!importName && !isDefault; + const isNamespace = importName === null; + const { + importedSource, + importedType, + importedInterop, + importingInterop, + ensureLiveReference, + ensureNoContext, + nameHint, + importPosition, + blockHoist + } = opts; + let name = nameHint || importName; + const isMod = (0, _isModule.default)(this._programPath); + const isModuleForNode = isMod && importingInterop === "node"; + const isModuleForBabel = isMod && importingInterop === "babel"; + if (importPosition === "after" && !isMod) { + throw new Error(`"importPosition": "after" is only supported in modules`); + } + const builder = new _importBuilder.default(importedSource, this._programScope, this._hub); + if (importedType === "es6") { + if (!isModuleForNode && !isModuleForBabel) { + throw new Error("Cannot import an ES6 module from CommonJS"); + } + builder.import(); + if (isNamespace) { + builder.namespace(nameHint || importedSource); + } else if (isDefault || isNamed) { + builder.named(name, importName); + } + } else if (importedType !== "commonjs") { + throw new Error(`Unexpected interopType "${importedType}"`); + } else if (importedInterop === "babel") { + if (isModuleForNode) { + name = name !== "default" ? name : importedSource; + const es6Default = `${importedSource}$es6Default`; + builder.import(); + if (isNamespace) { + builder.default(es6Default).var(name || importedSource).wildcardInterop(); + } else if (isDefault) { + if (ensureLiveReference) { + builder.default(es6Default).var(name || importedSource).defaultInterop().read("default"); + } else { + builder.default(es6Default).var(name).defaultInterop().prop(importName); + } + } else if (isNamed) { + builder.default(es6Default).read(importName); + } + } else if (isModuleForBabel) { + builder.import(); + if (isNamespace) { + builder.namespace(name || importedSource); + } else if (isDefault || isNamed) { + builder.named(name, importName); + } + } else { + builder.require(); + if (isNamespace) { + builder.var(name || importedSource).wildcardInterop(); + } else if ((isDefault || isNamed) && ensureLiveReference) { + if (isDefault) { + name = name !== "default" ? name : importedSource; + builder.var(name).read(importName); + builder.defaultInterop(); + } else { + builder.var(importedSource).read(importName); + } + } else if (isDefault) { + builder.var(name).defaultInterop().prop(importName); + } else if (isNamed) { + builder.var(name).prop(importName); + } + } + } else if (importedInterop === "compiled") { + if (isModuleForNode) { + builder.import(); + if (isNamespace) { + builder.default(name || importedSource); + } else if (isDefault || isNamed) { + builder.default(importedSource).read(name); + } + } else if (isModuleForBabel) { + builder.import(); + if (isNamespace) { + builder.namespace(name || importedSource); + } else if (isDefault || isNamed) { + builder.named(name, importName); + } + } else { + builder.require(); + if (isNamespace) { + builder.var(name || importedSource); + } else if (isDefault || isNamed) { + if (ensureLiveReference) { + builder.var(importedSource).read(name); + } else { + builder.prop(importName).var(name); + } + } + } + } else if (importedInterop === "uncompiled") { + if (isDefault && ensureLiveReference) { + throw new Error("No live reference for commonjs default"); + } + if (isModuleForNode) { + builder.import(); + if (isNamespace) { + builder.default(name || importedSource); + } else if (isDefault) { + builder.default(name); + } else if (isNamed) { + builder.default(importedSource).read(name); + } + } else if (isModuleForBabel) { + builder.import(); + if (isNamespace) { + builder.default(name || importedSource); + } else if (isDefault) { + builder.default(name); + } else if (isNamed) { + builder.named(name, importName); + } + } else { + builder.require(); + if (isNamespace) { + builder.var(name || importedSource); + } else if (isDefault) { + builder.var(name); + } else if (isNamed) { + if (ensureLiveReference) { + builder.var(importedSource).read(name); + } else { + builder.var(name).prop(importName); + } + } + } + } else { + throw new Error(`Unknown importedInterop "${importedInterop}".`); + } + const { + statements, + resultName + } = builder.done(); + this._insertStatements(statements, importPosition, blockHoist); + if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") { + return sequenceExpression([numericLiteral(0), resultName]); + } + return resultName; + } + _insertStatements(statements, importPosition = "before", blockHoist = 3) { + if (importPosition === "after") { + if (this._insertStatementsAfter(statements)) return; + } else { + if (this._insertStatementsBefore(statements, blockHoist)) return; + } + this._programPath.unshiftContainer("body", statements); + } + _insertStatementsBefore(statements, blockHoist) { + if (statements.length === 1 && isImportDeclaration(statements[0]) && isValueImport(statements[0])) { + const firstImportDecl = this._programPath.get("body").find(p => { + return p.isImportDeclaration() && isValueImport(p.node); + }); + if ((firstImportDecl == null ? void 0 : firstImportDecl.node.source.value) === statements[0].source.value && maybeAppendImportSpecifiers(firstImportDecl.node, statements[0])) { + return true; + } + } + statements.forEach(node => { + node._blockHoist = blockHoist; + }); + const targetPath = this._programPath.get("body").find(p => { + const val = p.node._blockHoist; + return Number.isFinite(val) && val < 4; + }); + if (targetPath) { + targetPath.insertBefore(statements); + return true; + } + return false; + } + _insertStatementsAfter(statements) { + const statementsSet = new Set(statements); + const importDeclarations = new Map(); + for (const statement of statements) { + if (isImportDeclaration(statement) && isValueImport(statement)) { + const source = statement.source.value; + if (!importDeclarations.has(source)) importDeclarations.set(source, []); + importDeclarations.get(source).push(statement); + } + } + let lastImportPath = null; + for (const bodyStmt of this._programPath.get("body")) { + if (bodyStmt.isImportDeclaration() && isValueImport(bodyStmt.node)) { + lastImportPath = bodyStmt; + const source = bodyStmt.node.source.value; + const newImports = importDeclarations.get(source); + if (!newImports) continue; + for (const decl of newImports) { + if (!statementsSet.has(decl)) continue; + if (maybeAppendImportSpecifiers(bodyStmt.node, decl)) { + statementsSet.delete(decl); + } + } + } + } + if (statementsSet.size === 0) return true; + if (lastImportPath) lastImportPath.insertAfter(Array.from(statementsSet)); + return !!lastImportPath; + } +} +exports["default"] = ImportInjector; +function isValueImport(node) { + return node.importKind !== "type" && node.importKind !== "typeof"; +} +function hasNamespaceImport(node) { + return node.specifiers.length === 1 && node.specifiers[0].type === "ImportNamespaceSpecifier" || node.specifiers.length === 2 && node.specifiers[1].type === "ImportNamespaceSpecifier"; +} +function hasDefaultImport(node) { + return node.specifiers.length > 0 && node.specifiers[0].type === "ImportDefaultSpecifier"; +} +function maybeAppendImportSpecifiers(target, source) { + if (!target.specifiers.length) { + target.specifiers = source.specifiers; + return true; + } + if (!source.specifiers.length) return true; + if (hasNamespaceImport(target) || hasNamespaceImport(source)) return false; + if (hasDefaultImport(source)) { + if (hasDefaultImport(target)) { + source.specifiers[0] = importSpecifier(source.specifiers[0].local, identifier("default")); + } else { + target.specifiers.unshift(source.specifiers.shift()); + } + } + target.specifiers.push(...source.specifiers); + return true; +} + +//# sourceMappingURL=import-injector.js.map + + +/***/ }), + +/***/ 10678: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "ImportInjector", ({ + enumerable: true, + get: function () { + return _importInjector.default; + } +})); +exports.addDefault = addDefault; +exports.addNamed = addNamed; +exports.addNamespace = addNamespace; +exports.addSideEffect = addSideEffect; +Object.defineProperty(exports, "isModule", ({ + enumerable: true, + get: function () { + return _isModule.default; + } +})); +var _importInjector = __nccwpck_require__(56358); +var _isModule = __nccwpck_require__(97585); +function addDefault(path, importedSource, opts) { + return new _importInjector.default(path).addDefault(importedSource, opts); +} +function addNamed(path, name, importedSource, opts) { + return new _importInjector.default(path).addNamed(name, importedSource, opts); +} +function addNamespace(path, importedSource, opts) { + return new _importInjector.default(path).addNamespace(importedSource, opts); +} +function addSideEffect(path, importedSource, opts) { + return new _importInjector.default(path).addSideEffect(importedSource, opts); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 97585: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isModule; +function isModule(path) { + return path.node.sourceType === "module"; +} + +//# sourceMappingURL=is-module.js.map + + +/***/ }), + +/***/ 92840: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.buildDynamicImport = buildDynamicImport; +var _core = __nccwpck_require__(85414); +{ + exports.getDynamicImportSource = function getDynamicImportSource(node) { + const [source] = node.arguments; + return _core.types.isStringLiteral(source) || _core.types.isTemplateLiteral(source) ? source : _core.template.expression.ast`\`\${${source}}\``; + }; +} +function buildDynamicImport(node, deferToThen, wrapWithPromise, builder) { + const specifier = _core.types.isCallExpression(node) ? node.arguments[0] : node.source; + if (_core.types.isStringLiteral(specifier) || _core.types.isTemplateLiteral(specifier) && specifier.quasis.length === 0) { + if (deferToThen) { + return _core.template.expression.ast` + Promise.resolve().then(() => ${builder(specifier)}) + `; + } else return builder(specifier); + } + const specifierToString = _core.types.isTemplateLiteral(specifier) ? _core.types.identifier("specifier") : _core.types.templateLiteral([_core.types.templateElement({ + raw: "" + }), _core.types.templateElement({ + raw: "" + })], [_core.types.identifier("specifier")]); + if (deferToThen) { + return _core.template.expression.ast` + (specifier => + new Promise(r => r(${specifierToString})) + .then(s => ${builder(_core.types.identifier("s"))}) + )(${specifier}) + `; + } else if (wrapWithPromise) { + return _core.template.expression.ast` + (specifier => + new Promise(r => r(${builder(specifierToString)})) + )(${specifier}) + `; + } else { + return _core.template.expression.ast` + (specifier => ${builder(specifierToString)})(${specifier}) + `; + } +} + +//# sourceMappingURL=dynamic-import.js.map + + +/***/ }), + +/***/ 94036: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getModuleName; +{ + const originalGetModuleName = getModuleName; + exports["default"] = getModuleName = function getModuleName(rootOpts, pluginOpts) { + var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo; + return originalGetModuleName(rootOpts, { + moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId, + moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds, + getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId, + moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot + }); + }; +} +function getModuleName(rootOpts, pluginOpts) { + const { + filename, + filenameRelative = filename, + sourceRoot = pluginOpts.moduleRoot + } = rootOpts; + const { + moduleId, + moduleIds = !!moduleId, + getModuleId, + moduleRoot = sourceRoot + } = pluginOpts; + if (!moduleIds) return null; + if (moduleId != null && !getModuleId) { + return moduleId; + } + let moduleName = moduleRoot != null ? moduleRoot + "/" : ""; + if (filenameRelative) { + const sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : ""; + moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.\w*$/, ""); + } + moduleName = moduleName.replace(/\\/g, "/"); + if (getModuleId) { + return getModuleId(moduleName) || moduleName; + } else { + return moduleName; + } +} + +//# sourceMappingURL=get-module-name.js.map + + +/***/ }), + +/***/ 3665: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "buildDynamicImport", ({ + enumerable: true, + get: function () { + return _dynamicImport.buildDynamicImport; + } +})); +exports.buildNamespaceInitStatements = buildNamespaceInitStatements; +exports.ensureStatementsHoisted = ensureStatementsHoisted; +Object.defineProperty(exports, "getModuleName", ({ + enumerable: true, + get: function () { + return _getModuleName.default; + } +})); +Object.defineProperty(exports, "hasExports", ({ + enumerable: true, + get: function () { + return _normalizeAndLoadMetadata.hasExports; + } +})); +Object.defineProperty(exports, "isModule", ({ + enumerable: true, + get: function () { + return _helperModuleImports.isModule; + } +})); +Object.defineProperty(exports, "isSideEffectImport", ({ + enumerable: true, + get: function () { + return _normalizeAndLoadMetadata.isSideEffectImport; + } +})); +exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader; +Object.defineProperty(exports, "rewriteThis", ({ + enumerable: true, + get: function () { + return _rewriteThis.default; + } +})); +exports.wrapInterop = wrapInterop; +var _assert = __nccwpck_require__(42613); +var _core = __nccwpck_require__(85414); +var _helperModuleImports = __nccwpck_require__(10678); +var _rewriteThis = __nccwpck_require__(92338); +var _rewriteLiveReferences = __nccwpck_require__(78775); +var _normalizeAndLoadMetadata = __nccwpck_require__(64193); +var Lazy = __nccwpck_require__(80247); +var _dynamicImport = __nccwpck_require__(92840); +var _getModuleName = __nccwpck_require__(94036); +{ + exports.getDynamicImportSource = __nccwpck_require__(92840).getDynamicImportSource; +} +function rewriteModuleStatementsAndPrepareHeader(path, { + exportName, + strict, + allowTopLevelThis, + strictMode, + noInterop, + importInterop = noInterop ? "none" : "babel", + lazy, + getWrapperPayload = Lazy.toGetWrapperPayload(lazy != null ? lazy : false), + wrapReference = Lazy.wrapReference, + esNamespaceOnly, + filename, + constantReexports = arguments[1].loose, + enumerableModuleMeta = arguments[1].loose, + noIncompleteNsImportDetection +}) { + (0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop); + _assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script"); + path.node.sourceType = "script"; + const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, { + importInterop, + initializeReexports: constantReexports, + getWrapperPayload, + esNamespaceOnly, + filename + }); + if (!allowTopLevelThis) { + (0, _rewriteThis.default)(path); + } + (0, _rewriteLiveReferences.default)(path, meta, wrapReference); + if (strictMode !== false) { + const hasStrict = path.node.directives.some(directive => { + return directive.value.value === "use strict"; + }); + if (!hasStrict) { + path.unshiftContainer("directives", _core.types.directive(_core.types.directiveLiteral("use strict"))); + } + } + const headers = []; + if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) { + headers.push(buildESModuleHeader(meta, enumerableModuleMeta)); + } + const nameList = buildExportNameListDeclaration(path, meta); + if (nameList) { + meta.exportNameListName = nameList.name; + headers.push(nameList.statement); + } + headers.push(...buildExportInitializationStatements(path, meta, wrapReference, constantReexports, noIncompleteNsImportDetection)); + return { + meta, + headers + }; +} +function ensureStatementsHoisted(statements) { + statements.forEach(header => { + header._blockHoist = 3; + }); +} +function wrapInterop(programPath, expr, type) { + if (type === "none") { + return null; + } + if (type === "node-namespace") { + return _core.types.callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, _core.types.booleanLiteral(true)]); + } else if (type === "node-default") { + return null; + } + let helper; + if (type === "default") { + helper = "interopRequireDefault"; + } else if (type === "namespace") { + helper = "interopRequireWildcard"; + } else { + throw new Error(`Unknown interop: ${type}`); + } + return _core.types.callExpression(programPath.hub.addHelper(helper), [expr]); +} +function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false, wrapReference = Lazy.wrapReference) { + var _wrapReference; + const statements = []; + const srcNamespaceId = _core.types.identifier(sourceMetadata.name); + for (const localName of sourceMetadata.importsNamespace) { + if (localName === sourceMetadata.name) continue; + statements.push(_core.template.statement`var NAME = SOURCE;`({ + NAME: localName, + SOURCE: _core.types.cloneNode(srcNamespaceId) + })); + } + const srcNamespace = (_wrapReference = wrapReference(srcNamespaceId, sourceMetadata.wrap)) != null ? _wrapReference : srcNamespaceId; + if (constantReexports) { + statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true, wrapReference)); + } + for (const exportName of sourceMetadata.reexportNamespace) { + statements.push((!_core.types.isIdentifier(srcNamespace) ? _core.template.statement` + Object.defineProperty(EXPORTS, "NAME", { + enumerable: true, + get: function() { + return NAMESPACE; + } + }); + ` : _core.template.statement`EXPORTS.NAME = NAMESPACE;`)({ + EXPORTS: metadata.exportName, + NAME: exportName, + NAMESPACE: _core.types.cloneNode(srcNamespace) + })); + } + if (sourceMetadata.reexportAll) { + const statement = buildNamespaceReexport(metadata, _core.types.cloneNode(srcNamespace), constantReexports); + statement.loc = sourceMetadata.reexportAll.loc; + statements.push(statement); + } + return statements; +} +const ReexportTemplate = { + constant: ({ + exports, + exportName, + namespaceImport + }) => _core.template.statement.ast` + ${exports}.${exportName} = ${namespaceImport}; + `, + constantComputed: ({ + exports, + exportName, + namespaceImport + }) => _core.template.statement.ast` + ${exports}["${exportName}"] = ${namespaceImport}; + `, + spec: ({ + exports, + exportName, + namespaceImport + }) => _core.template.statement.ast` + Object.defineProperty(${exports}, "${exportName}", { + enumerable: true, + get: function() { + return ${namespaceImport}; + }, + }); + ` +}; +function buildReexportsFromMeta(meta, metadata, constantReexports, wrapReference) { + var _wrapReference2; + let namespace = _core.types.identifier(metadata.name); + namespace = (_wrapReference2 = wrapReference(namespace, metadata.wrap)) != null ? _wrapReference2 : namespace; + const { + stringSpecifiers + } = meta; + return Array.from(metadata.reexports, ([exportName, importName]) => { + let namespaceImport = _core.types.cloneNode(namespace); + if (importName === "default" && metadata.interop === "node-default") {} else if (stringSpecifiers.has(importName)) { + namespaceImport = _core.types.memberExpression(namespaceImport, _core.types.stringLiteral(importName), true); + } else { + namespaceImport = _core.types.memberExpression(namespaceImport, _core.types.identifier(importName)); + } + const astNodes = { + exports: meta.exportName, + exportName, + namespaceImport + }; + if (constantReexports || _core.types.isIdentifier(namespaceImport)) { + if (stringSpecifiers.has(exportName)) { + return ReexportTemplate.constantComputed(astNodes); + } else { + return ReexportTemplate.constant(astNodes); + } + } else { + return ReexportTemplate.spec(astNodes); + } + }); +} +function buildESModuleHeader(metadata, enumerableModuleMeta = false) { + return (enumerableModuleMeta ? _core.template.statement` + EXPORTS.__esModule = true; + ` : _core.template.statement` + Object.defineProperty(EXPORTS, "__esModule", { + value: true, + }); + `)({ + EXPORTS: metadata.exportName + }); +} +function buildNamespaceReexport(metadata, namespace, constantReexports) { + return (constantReexports ? _core.template.statement` + Object.keys(NAMESPACE).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + VERIFY_NAME_LIST; + if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return; + + EXPORTS[key] = NAMESPACE[key]; + }); + ` : _core.template.statement` + Object.keys(NAMESPACE).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + VERIFY_NAME_LIST; + if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return; + + Object.defineProperty(EXPORTS, key, { + enumerable: true, + get: function() { + return NAMESPACE[key]; + }, + }); + }); + `)({ + NAMESPACE: namespace, + EXPORTS: metadata.exportName, + VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _core.template)` + if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return; + `({ + EXPORTS_LIST: metadata.exportNameListName + }) : null + }); +} +function buildExportNameListDeclaration(programPath, metadata) { + const exportedVars = Object.create(null); + for (const data of metadata.local.values()) { + for (const name of data.names) { + exportedVars[name] = true; + } + } + let hasReexport = false; + for (const data of metadata.source.values()) { + for (const exportName of data.reexports.keys()) { + exportedVars[exportName] = true; + } + for (const exportName of data.reexportNamespace) { + exportedVars[exportName] = true; + } + hasReexport = hasReexport || !!data.reexportAll; + } + if (!hasReexport || Object.keys(exportedVars).length === 0) return null; + const name = programPath.scope.generateUidIdentifier("exportNames"); + delete exportedVars.default; + return { + name: name.name, + statement: _core.types.variableDeclaration("var", [_core.types.variableDeclarator(name, _core.types.valueToNode(exportedVars))]) + }; +} +function buildExportInitializationStatements(programPath, metadata, wrapReference, constantReexports = false, noIncompleteNsImportDetection = false) { + const initStatements = []; + for (const [localName, data] of metadata.local) { + if (data.kind === "import") {} else if (data.kind === "hoisted") { + initStatements.push([data.names[0], buildInitStatement(metadata, data.names, _core.types.identifier(localName))]); + } else if (!noIncompleteNsImportDetection) { + for (const exportName of data.names) { + initStatements.push([exportName, null]); + } + } + } + for (const data of metadata.source.values()) { + if (!constantReexports) { + const reexportsStatements = buildReexportsFromMeta(metadata, data, false, wrapReference); + const reexports = [...data.reexports.keys()]; + for (let i = 0; i < reexportsStatements.length; i++) { + initStatements.push([reexports[i], reexportsStatements[i]]); + } + } + if (!noIncompleteNsImportDetection) { + for (const exportName of data.reexportNamespace) { + initStatements.push([exportName, null]); + } + } + } + initStatements.sort(([a], [b]) => { + if (a < b) return -1; + if (b < a) return 1; + return 0; + }); + const results = []; + if (noIncompleteNsImportDetection) { + for (const [, initStatement] of initStatements) { + results.push(initStatement); + } + } else { + const chunkSize = 100; + for (let i = 0; i < initStatements.length; i += chunkSize) { + let uninitializedExportNames = []; + for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) { + const [exportName, initStatement] = initStatements[i + j]; + if (initStatement !== null) { + if (uninitializedExportNames.length > 0) { + results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode())); + uninitializedExportNames = []; + } + results.push(initStatement); + } else { + uninitializedExportNames.push(exportName); + } + } + if (uninitializedExportNames.length > 0) { + results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode())); + } + } + } + return results; +} +const InitTemplate = { + computed: ({ + exports, + name, + value + }) => _core.template.expression.ast`${exports}["${name}"] = ${value}`, + default: ({ + exports, + name, + value + }) => _core.template.expression.ast`${exports}.${name} = ${value}`, + define: ({ + exports, + name, + value + }) => _core.template.expression.ast` + Object.defineProperty(${exports}, "${name}", { + enumerable: true, + value: void 0, + writable: true + })["${name}"] = ${value}` +}; +function buildInitStatement(metadata, exportNames, initExpr) { + const { + stringSpecifiers, + exportName: exports + } = metadata; + return _core.types.expressionStatement(exportNames.reduce((value, name) => { + const params = { + exports, + name, + value + }; + if (name === "__proto__") { + return InitTemplate.define(params); + } + if (stringSpecifiers.has(name)) { + return InitTemplate.computed(params); + } + return InitTemplate.default(params); + }, initExpr)); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 80247: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.toGetWrapperPayload = toGetWrapperPayload; +exports.wrapReference = wrapReference; +var _core = __nccwpck_require__(85414); +var _normalizeAndLoadMetadata = __nccwpck_require__(64193); +function toGetWrapperPayload(lazy) { + return (source, metadata) => { + if (lazy === false) return null; + if ((0, _normalizeAndLoadMetadata.isSideEffectImport)(metadata) || metadata.reexportAll) return null; + if (lazy === true) { + return source.includes(".") ? null : "lazy"; + } + if (Array.isArray(lazy)) { + return !lazy.includes(source) ? null : "lazy"; + } + if (typeof lazy === "function") { + return lazy(source) ? "lazy" : null; + } + throw new Error(`.lazy must be a boolean, string array, or function`); + }; +} +function wrapReference(ref, payload) { + if (payload === "lazy") return _core.types.callExpression(ref, []); + return null; +} + +//# sourceMappingURL=lazy-modules.js.map + + +/***/ }), + +/***/ 64193: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = normalizeModuleAndLoadMetadata; +exports.hasExports = hasExports; +exports.isSideEffectImport = isSideEffectImport; +exports.validateImportInteropOption = validateImportInteropOption; +var _path = __nccwpck_require__(16928); +var _helperValidatorIdentifier = __nccwpck_require__(76599); +function hasExports(metadata) { + return metadata.hasExports; +} +function isSideEffectImport(source) { + return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll; +} +function validateImportInteropOption(importInterop) { + if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") { + throw new Error(`.importInterop must be one of "none", "babel", "node", or a function returning one of those values (received ${importInterop}).`); + } + return importInterop; +} +function resolveImportInterop(importInterop, source, filename) { + if (typeof importInterop === "function") { + return validateImportInteropOption(importInterop(source, filename)); + } + return importInterop; +} +function normalizeModuleAndLoadMetadata(programPath, exportName, { + importInterop, + initializeReexports = false, + getWrapperPayload, + esNamespaceOnly = false, + filename +}) { + if (!exportName) { + exportName = programPath.scope.generateUidIdentifier("exports").name; + } + const stringSpecifiers = new Set(); + nameAnonymousExports(programPath); + const { + local, + sources, + hasExports + } = getModuleMetadata(programPath, { + initializeReexports, + getWrapperPayload + }, stringSpecifiers); + removeImportExportDeclarations(programPath); + for (const [source, metadata] of sources) { + const { + importsNamespace, + imports + } = metadata; + if (importsNamespace.size > 0 && imports.size === 0) { + const [nameOfnamespace] = importsNamespace; + metadata.name = nameOfnamespace; + } + const resolvedInterop = resolveImportInterop(importInterop, source, filename); + if (resolvedInterop === "none") { + metadata.interop = "none"; + } else if (resolvedInterop === "node" && metadata.interop === "namespace") { + metadata.interop = "node-namespace"; + } else if (resolvedInterop === "node" && metadata.interop === "default") { + metadata.interop = "node-default"; + } else if (esNamespaceOnly && metadata.interop === "namespace") { + metadata.interop = "default"; + } + } + return { + exportName, + exportNameListName: null, + hasExports, + local, + source: sources, + stringSpecifiers + }; +} +function getExportSpecifierName(path, stringSpecifiers) { + if (path.isIdentifier()) { + return path.node.name; + } else if (path.isStringLiteral()) { + const stringValue = path.node.value; + if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) { + stringSpecifiers.add(stringValue); + } + return stringValue; + } else { + throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`); + } +} +function assertExportSpecifier(path) { + if (path.isExportSpecifier()) { + return; + } else if (path.isExportNamespaceSpecifier()) { + throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-transform-export-namespace-from`."); + } else { + throw path.buildCodeFrameError("Unexpected export specifier type"); + } +} +function getModuleMetadata(programPath, { + getWrapperPayload, + initializeReexports +}, stringSpecifiers) { + const localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers); + const importNodes = new Map(); + const sourceData = new Map(); + const getData = (sourceNode, node) => { + const source = sourceNode.value; + let data = sourceData.get(source); + if (!data) { + data = { + name: programPath.scope.generateUidIdentifier((0, _path.basename)(source, (0, _path.extname)(source))).name, + interop: "none", + loc: null, + imports: new Map(), + importsNamespace: new Set(), + reexports: new Map(), + reexportNamespace: new Set(), + reexportAll: null, + wrap: null, + get lazy() { + return this.wrap === "lazy"; + }, + referenced: false + }; + sourceData.set(source, data); + importNodes.set(source, [node]); + } else { + importNodes.get(source).push(node); + } + return data; + }; + let hasExports = false; + programPath.get("body").forEach(child => { + if (child.isImportDeclaration()) { + const data = getData(child.node.source, child.node); + if (!data.loc) data.loc = child.node.loc; + child.get("specifiers").forEach(spec => { + if (spec.isImportDefaultSpecifier()) { + const localName = spec.get("local").node.name; + data.imports.set(localName, "default"); + const reexport = localData.get(localName); + if (reexport) { + localData.delete(localName); + reexport.names.forEach(name => { + data.reexports.set(name, "default"); + }); + data.referenced = true; + } + } else if (spec.isImportNamespaceSpecifier()) { + const localName = spec.get("local").node.name; + data.importsNamespace.add(localName); + const reexport = localData.get(localName); + if (reexport) { + localData.delete(localName); + reexport.names.forEach(name => { + data.reexportNamespace.add(name); + }); + data.referenced = true; + } + } else if (spec.isImportSpecifier()) { + const importName = getExportSpecifierName(spec.get("imported"), stringSpecifiers); + const localName = spec.get("local").node.name; + data.imports.set(localName, importName); + const reexport = localData.get(localName); + if (reexport) { + localData.delete(localName); + reexport.names.forEach(name => { + data.reexports.set(name, importName); + }); + data.referenced = true; + } + } + }); + } else if (child.isExportAllDeclaration()) { + hasExports = true; + const data = getData(child.node.source, child.node); + if (!data.loc) data.loc = child.node.loc; + data.reexportAll = { + loc: child.node.loc + }; + data.referenced = true; + } else if (child.isExportNamedDeclaration() && child.node.source) { + hasExports = true; + const data = getData(child.node.source, child.node); + if (!data.loc) data.loc = child.node.loc; + child.get("specifiers").forEach(spec => { + assertExportSpecifier(spec); + const importName = getExportSpecifierName(spec.get("local"), stringSpecifiers); + const exportName = getExportSpecifierName(spec.get("exported"), stringSpecifiers); + data.reexports.set(exportName, importName); + data.referenced = true; + if (exportName === "__esModule") { + throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".'); + } + }); + } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) { + hasExports = true; + } + }); + for (const metadata of sourceData.values()) { + let needsDefault = false; + let needsNamed = false; + if (metadata.importsNamespace.size > 0) { + needsDefault = true; + needsNamed = true; + } + if (metadata.reexportAll) { + needsNamed = true; + } + for (const importName of metadata.imports.values()) { + if (importName === "default") needsDefault = true;else needsNamed = true; + } + for (const importName of metadata.reexports.values()) { + if (importName === "default") needsDefault = true;else needsNamed = true; + } + if (needsDefault && needsNamed) { + metadata.interop = "namespace"; + } else if (needsDefault) { + metadata.interop = "default"; + } + } + if (getWrapperPayload) { + for (const [source, metadata] of sourceData) { + metadata.wrap = getWrapperPayload(source, metadata, importNodes.get(source)); + } + } + return { + hasExports, + local: localData, + sources: sourceData + }; +} +function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) { + const bindingKindLookup = new Map(); + programPath.get("body").forEach(child => { + let kind; + if (child.isImportDeclaration()) { + kind = "import"; + } else { + if (child.isExportDefaultDeclaration()) { + child = child.get("declaration"); + } + if (child.isExportNamedDeclaration()) { + if (child.node.declaration) { + child = child.get("declaration"); + } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) { + child.get("specifiers").forEach(spec => { + assertExportSpecifier(spec); + bindingKindLookup.set(spec.get("local").node.name, "block"); + }); + return; + } + } + if (child.isFunctionDeclaration()) { + kind = "hoisted"; + } else if (child.isClassDeclaration()) { + kind = "block"; + } else if (child.isVariableDeclaration({ + kind: "var" + })) { + kind = "var"; + } else if (child.isVariableDeclaration()) { + kind = "block"; + } else { + return; + } + } + Object.keys(child.getOuterBindingIdentifiers()).forEach(name => { + bindingKindLookup.set(name, kind); + }); + }); + const localMetadata = new Map(); + const getLocalMetadata = idPath => { + const localName = idPath.node.name; + let metadata = localMetadata.get(localName); + if (!metadata) { + const kind = bindingKindLookup.get(localName); + if (kind === undefined) { + throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`); + } + metadata = { + names: [], + kind + }; + localMetadata.set(localName, metadata); + } + return metadata; + }; + programPath.get("body").forEach(child => { + if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) { + if (child.node.declaration) { + const declaration = child.get("declaration"); + const ids = declaration.getOuterBindingIdentifierPaths(); + Object.keys(ids).forEach(name => { + if (name === "__esModule") { + throw declaration.buildCodeFrameError('Illegal export "__esModule".'); + } + getLocalMetadata(ids[name]).names.push(name); + }); + } else { + child.get("specifiers").forEach(spec => { + const local = spec.get("local"); + const exported = spec.get("exported"); + const localMetadata = getLocalMetadata(local); + const exportName = getExportSpecifierName(exported, stringSpecifiers); + if (exportName === "__esModule") { + throw exported.buildCodeFrameError('Illegal export "__esModule".'); + } + localMetadata.names.push(exportName); + }); + } + } else if (child.isExportDefaultDeclaration()) { + const declaration = child.get("declaration"); + if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { + getLocalMetadata(declaration.get("id")).names.push("default"); + } else { + throw declaration.buildCodeFrameError("Unexpected default expression export."); + } + } + }); + return localMetadata; +} +function nameAnonymousExports(programPath) { + programPath.get("body").forEach(child => { + if (!child.isExportDefaultDeclaration()) return; + { + var _child$splitExportDec; + (_child$splitExportDec = child.splitExportDeclaration) != null ? _child$splitExportDec : child.splitExportDeclaration = (__nccwpck_require__(50148).NodePath).prototype.splitExportDeclaration; + } + child.splitExportDeclaration(); + }); +} +function removeImportExportDeclarations(programPath) { + programPath.get("body").forEach(child => { + if (child.isImportDeclaration()) { + child.remove(); + } else if (child.isExportNamedDeclaration()) { + if (child.node.declaration) { + child.node.declaration._blockHoist = child.node._blockHoist; + child.replaceWith(child.node.declaration); + } else { + child.remove(); + } + } else if (child.isExportDefaultDeclaration()) { + const declaration = child.get("declaration"); + if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) { + declaration._blockHoist = child.node._blockHoist; + child.replaceWith(declaration); + } else { + throw declaration.buildCodeFrameError("Unexpected default expression export."); + } + } else if (child.isExportAllDeclaration()) { + child.remove(); + } + }); +} + +//# sourceMappingURL=normalize-and-load-metadata.js.map + + +/***/ }), + +/***/ 78775: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rewriteLiveReferences; +var _core = __nccwpck_require__(85414); +function isInType(path) { + do { + switch (path.parent.type) { + case "TSTypeAnnotation": + case "TSTypeAliasDeclaration": + case "TSTypeReference": + case "TypeAnnotation": + case "TypeAlias": + return true; + case "ExportSpecifier": + return path.parentPath.parent.exportKind === "type"; + default: + if (path.parentPath.isStatement() || path.parentPath.isExpression()) { + return false; + } + } + } while (path = path.parentPath); +} +function rewriteLiveReferences(programPath, metadata, wrapReference) { + const imported = new Map(); + const exported = new Map(); + const requeueInParent = path => { + programPath.requeue(path); + }; + for (const [source, data] of metadata.source) { + for (const [localName, importName] of data.imports) { + imported.set(localName, [source, importName, null]); + } + for (const localName of data.importsNamespace) { + imported.set(localName, [source, null, localName]); + } + } + for (const [local, data] of metadata.local) { + let exportMeta = exported.get(local); + if (!exportMeta) { + exportMeta = []; + exported.set(local, exportMeta); + } + exportMeta.push(...data.names); + } + const rewriteBindingInitVisitorState = { + metadata, + requeueInParent, + scope: programPath.scope, + exported + }; + programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState); + const rewriteReferencesVisitorState = { + seen: new WeakSet(), + metadata, + requeueInParent, + scope: programPath.scope, + imported, + exported, + buildImportReference([source, importName, localName], identNode) { + const meta = metadata.source.get(source); + meta.referenced = true; + if (localName) { + if (meta.wrap) { + var _wrapReference; + identNode = (_wrapReference = wrapReference(identNode, meta.wrap)) != null ? _wrapReference : identNode; + } + return identNode; + } + let namespace = _core.types.identifier(meta.name); + if (meta.wrap) { + var _wrapReference2; + namespace = (_wrapReference2 = wrapReference(namespace, meta.wrap)) != null ? _wrapReference2 : namespace; + } + if (importName === "default" && meta.interop === "node-default") { + return namespace; + } + const computed = metadata.stringSpecifiers.has(importName); + return _core.types.memberExpression(namespace, computed ? _core.types.stringLiteral(importName) : _core.types.identifier(importName), computed); + } + }; + programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState); +} +const rewriteBindingInitVisitor = { + Scope(path) { + path.skip(); + }, + ClassDeclaration(path) { + const { + requeueInParent, + exported, + metadata + } = this; + const { + id + } = path.node; + if (!id) throw new Error("Expected class to have a name"); + const localName = id.name; + const exportNames = exported.get(localName) || []; + if (exportNames.length > 0) { + const statement = _core.types.expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, _core.types.identifier(localName), path.scope)); + statement._blockHoist = path.node._blockHoist; + requeueInParent(path.insertAfter(statement)[0]); + } + }, + VariableDeclaration(path) { + const { + requeueInParent, + exported, + metadata + } = this; + const isVar = path.node.kind === "var"; + for (const decl of path.get("declarations")) { + const { + id + } = decl.node; + let { + init + } = decl.node; + if (_core.types.isIdentifier(id) && exported.has(id.name) && !_core.types.isArrowFunctionExpression(init) && (!_core.types.isFunctionExpression(init) || init.id) && (!_core.types.isClassExpression(init) || init.id)) { + if (!init) { + if (isVar) { + continue; + } else { + init = path.scope.buildUndefinedNode(); + } + } + decl.node.init = buildBindingExportAssignmentExpression(metadata, exported.get(id.name), init, path.scope); + requeueInParent(decl.get("init")); + } else { + for (const localName of Object.keys(decl.getOuterBindingIdentifiers())) { + if (exported.has(localName)) { + const statement = _core.types.expressionStatement(buildBindingExportAssignmentExpression(metadata, exported.get(localName), _core.types.identifier(localName), path.scope)); + statement._blockHoist = path.node._blockHoist; + requeueInParent(path.insertAfter(statement)[0]); + } + } + } + } + } +}; +const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr, scope) => { + const exportsObjectName = metadata.exportName; + for (let currentScope = scope; currentScope != null; currentScope = currentScope.parent) { + if (currentScope.hasOwnBinding(exportsObjectName)) { + currentScope.rename(exportsObjectName); + } + } + return (exportNames || []).reduce((expr, exportName) => { + const { + stringSpecifiers + } = metadata; + const computed = stringSpecifiers.has(exportName); + return _core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.identifier(exportsObjectName), computed ? _core.types.stringLiteral(exportName) : _core.types.identifier(exportName), computed), expr); + }, localExpr); +}; +const buildImportThrow = localName => { + return _core.template.expression.ast` + (function() { + throw new Error('"' + '${localName}' + '" is read-only.'); + })() + `; +}; +const rewriteReferencesVisitor = { + ReferencedIdentifier(path) { + const { + seen, + buildImportReference, + scope, + imported, + requeueInParent + } = this; + if (seen.has(path.node)) return; + seen.add(path.node); + const localName = path.node.name; + const importData = imported.get(localName); + if (importData) { + if (isInType(path)) { + throw path.buildCodeFrameError(`Cannot transform the imported binding "${localName}" since it's also used in a type annotation. ` + `Please strip type annotations using @babel/preset-typescript or @babel/preset-flow.`); + } + const localBinding = path.scope.getBinding(localName); + const rootBinding = scope.getBinding(localName); + if (rootBinding !== localBinding) return; + const ref = buildImportReference(importData, path.node); + ref.loc = path.node.loc; + if ((path.parentPath.isCallExpression({ + callee: path.node + }) || path.parentPath.isOptionalCallExpression({ + callee: path.node + }) || path.parentPath.isTaggedTemplateExpression({ + tag: path.node + })) && _core.types.isMemberExpression(ref)) { + path.replaceWith(_core.types.sequenceExpression([_core.types.numericLiteral(0), ref])); + } else if (path.isJSXIdentifier() && _core.types.isMemberExpression(ref)) { + const { + object, + property + } = ref; + path.replaceWith(_core.types.jsxMemberExpression(_core.types.jsxIdentifier(object.name), _core.types.jsxIdentifier(property.name))); + } else { + path.replaceWith(ref); + } + requeueInParent(path); + path.skip(); + } + }, + UpdateExpression(path) { + const { + scope, + seen, + imported, + exported, + requeueInParent, + buildImportReference + } = this; + if (seen.has(path.node)) return; + seen.add(path.node); + const arg = path.get("argument"); + if (arg.isMemberExpression()) return; + const update = path.node; + if (arg.isIdentifier()) { + const localName = arg.node.name; + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { + return; + } + const exportedNames = exported.get(localName); + const importData = imported.get(localName); + if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) { + if (importData) { + path.replaceWith(_core.types.assignmentExpression(update.operator[0] + "=", buildImportReference(importData, arg.node), buildImportThrow(localName))); + } else if (update.prefix) { + path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, _core.types.cloneNode(update), path.scope)); + } else { + const ref = scope.generateDeclaredUidIdentifier(localName); + path.replaceWith(_core.types.sequenceExpression([_core.types.assignmentExpression("=", _core.types.cloneNode(ref), _core.types.cloneNode(update)), buildBindingExportAssignmentExpression(this.metadata, exportedNames, _core.types.identifier(localName), path.scope), _core.types.cloneNode(ref)])); + } + } + } + requeueInParent(path); + path.skip(); + }, + AssignmentExpression: { + exit(path) { + const { + scope, + seen, + imported, + exported, + requeueInParent, + buildImportReference + } = this; + if (seen.has(path.node)) return; + seen.add(path.node); + const left = path.get("left"); + if (left.isMemberExpression()) return; + if (left.isIdentifier()) { + const localName = left.node.name; + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { + return; + } + const exportedNames = exported.get(localName); + const importData = imported.get(localName); + if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) { + const assignment = path.node; + if (importData) { + assignment.left = buildImportReference(importData, left.node); + assignment.right = _core.types.sequenceExpression([assignment.right, buildImportThrow(localName)]); + } + const { + operator + } = assignment; + let newExpr; + if (operator === "=") { + newExpr = assignment; + } else if (operator === "&&=" || operator === "||=" || operator === "??=") { + newExpr = _core.types.assignmentExpression("=", assignment.left, _core.types.logicalExpression(operator.slice(0, -1), _core.types.cloneNode(assignment.left), assignment.right)); + } else { + newExpr = _core.types.assignmentExpression("=", assignment.left, _core.types.binaryExpression(operator.slice(0, -1), _core.types.cloneNode(assignment.left), assignment.right)); + } + path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, newExpr, path.scope)); + requeueInParent(path); + path.skip(); + } + } else { + const ids = left.getOuterBindingIdentifiers(); + const programScopeIds = Object.keys(ids).filter(localName => scope.getBinding(localName) === path.scope.getBinding(localName)); + const id = programScopeIds.find(localName => imported.has(localName)); + if (id) { + path.node.right = _core.types.sequenceExpression([path.node.right, buildImportThrow(id)]); + } + const items = []; + programScopeIds.forEach(localName => { + const exportedNames = exported.get(localName) || []; + if (exportedNames.length > 0) { + items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, _core.types.identifier(localName), path.scope)); + } + }); + if (items.length > 0) { + let node = _core.types.sequenceExpression(items); + if (path.parentPath.isExpressionStatement()) { + node = _core.types.expressionStatement(node); + node._blockHoist = path.parentPath.node._blockHoist; + } + const statement = path.insertAfter(node)[0]; + requeueInParent(statement); + } + } + } + }, + ForXStatement(path) { + const { + scope, + node + } = path; + const { + left + } = node; + const { + exported, + imported, + scope: programScope + } = this; + if (!_core.types.isVariableDeclaration(left)) { + let didTransformExport = false, + importConstViolationName; + const loopBodyScope = path.get("body").scope; + for (const name of Object.keys(_core.types.getOuterBindingIdentifiers(left))) { + if (programScope.getBinding(name) === scope.getBinding(name)) { + if (exported.has(name)) { + didTransformExport = true; + if (loopBodyScope.hasOwnBinding(name)) { + loopBodyScope.rename(name); + } + } + if (imported.has(name) && !importConstViolationName) { + importConstViolationName = name; + } + } + } + if (!didTransformExport && !importConstViolationName) { + return; + } + path.ensureBlock(); + const bodyPath = path.get("body"); + const newLoopId = scope.generateUidIdentifierBasedOnNode(left); + path.get("left").replaceWith(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(newLoopId))])); + scope.registerDeclaration(path.get("left")); + if (didTransformExport) { + bodyPath.unshiftContainer("body", _core.types.expressionStatement(_core.types.assignmentExpression("=", left, newLoopId))); + } + if (importConstViolationName) { + bodyPath.unshiftContainer("body", _core.types.expressionStatement(buildImportThrow(importConstViolationName))); + } + } + } +}; + +//# sourceMappingURL=rewrite-live-references.js.map + + +/***/ }), + +/***/ 92338: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rewriteThis; +var _core = __nccwpck_require__(85414); +var _traverse = __nccwpck_require__(50148); +let rewriteThisVisitor; +function rewriteThis(programPath) { + if (!rewriteThisVisitor) { + rewriteThisVisitor = _traverse.visitors.environmentVisitor({ + ThisExpression(path) { + path.replaceWith(_core.types.unaryExpression("void", _core.types.numericLiteral(0), true)); + } + }); + rewriteThisVisitor.noScope = true; + } + (0, _traverse.default)(programPath.node, rewriteThisVisitor); +} + +//# sourceMappingURL=rewrite-this.js.map + + +/***/ }), + +/***/ 73728: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.readCodePoint = readCodePoint; +exports.readInt = readInt; +exports.readStringContents = readStringContents; +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 92924: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isIdentifierChar = isIdentifierChar; +exports.isIdentifierName = isIdentifierName; +exports.isIdentifierStart = isIdentifierStart; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +function isIdentifierName(name) { + let isFirst = true; + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + if (isFirst) { + isFirst = false; + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + return !isFirst; +} + +//# sourceMappingURL=identifier.js.map + + +/***/ }), + +/***/ 76599: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "isIdentifierChar", ({ + enumerable: true, + get: function () { + return _identifier.isIdentifierChar; + } +})); +Object.defineProperty(exports, "isIdentifierName", ({ + enumerable: true, + get: function () { + return _identifier.isIdentifierName; + } +})); +Object.defineProperty(exports, "isIdentifierStart", ({ + enumerable: true, + get: function () { + return _identifier.isIdentifierStart; + } +})); +Object.defineProperty(exports, "isKeyword", ({ + enumerable: true, + get: function () { + return _keyword.isKeyword; + } +})); +Object.defineProperty(exports, "isReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isReservedWord; + } +})); +Object.defineProperty(exports, "isStrictBindOnlyReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isStrictBindOnlyReservedWord; + } +})); +Object.defineProperty(exports, "isStrictBindReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isStrictBindReservedWord; + } +})); +Object.defineProperty(exports, "isStrictReservedWord", ({ + enumerable: true, + get: function () { + return _keyword.isStrictReservedWord; + } +})); +var _identifier = __nccwpck_require__(92924); +var _keyword = __nccwpck_require__(49884); + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 49884: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isKeyword = isKeyword; +exports.isReservedWord = isReservedWord; +exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; +exports.isStrictBindReservedWord = isStrictBindReservedWord; +exports.isStrictReservedWord = isStrictReservedWord; +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} + +//# sourceMappingURL=keyword.js.map + + +/***/ }), + +/***/ 21214: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _template = __nccwpck_require__(19648); +function helper(minVersion, source, metadata) { + return Object.freeze({ + minVersion, + ast: () => _template.default.program.ast(source, { + preserveComments: true + }), + metadata + }); +} +const helpers = exports["default"] = { + __proto__: null, + OverloadYield: helper("7.18.14", "function _OverloadYield(e,d){this.v=e,this.k=d}", { + globals: [], + locals: { + _OverloadYield: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_OverloadYield", + dependencies: {} + }), + applyDecoratedDescriptor: helper("7.0.0-beta.0", 'function _applyDecoratedDescriptor(i,e,r,n,l){var a={};return Object.keys(n).forEach((function(i){a[i]=n[i]})),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=r.slice().reverse().reduce((function(r,n){return n(i,e,r)||r}),a),l&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(l):void 0,a.initializer=void 0),void 0===a.initializer?(Object.defineProperty(i,e,a),null):a}', { + globals: ["Object"], + locals: { + _applyDecoratedDescriptor: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_applyDecoratedDescriptor", + dependencies: {} + }), + applyDecs2311: helper("7.24.0", 'function applyDecs2311(e,t,n,r,o,i){var a,c,u,s,f,l,p,d=Symbol.metadata||Symbol.for("Symbol.metadata"),m=Object.defineProperty,h=Object.create,y=[h(null),h(null)],v=t.length;function g(t,n,r){return function(o,i){n&&(i=o,o=e);for(var a=0;a<t.length;a++)i=t[a].apply(o,r?[i]:[]);return r?i:o}}function b(e,t,n,r){if("function"!=typeof e&&(r||void 0!==e))throw new TypeError(t+" must "+(n||"be")+" a function"+(r?"":" or undefined"));return e}function applyDec(e,t,n,r,o,i,u,s,f,l,p){function d(e){if(!p(e))throw new TypeError("Attempted to access private element on non-instance")}var h=[].concat(t[0]),v=t[3],w=!u,D=1===o,S=3===o,j=4===o,E=2===o;function I(t,n,r){return function(o,i){return n&&(i=o,o=e),r&&r(o),P[t].call(o,i)}}if(!w){var P={},k=[],F=S?"get":j||D?"set":"value";if(f?(l||D?P={get:setFunctionName((function(){return v(this)}),r,"get"),set:function(e){t[4](this,e)}}:P[F]=v,l||setFunctionName(P[F],r,E?"":F)):l||(P=Object.getOwnPropertyDescriptor(e,r)),!l&&!f){if((c=y[+s][r])&&7!=(c^o))throw Error("Decorating two elements with the same name ("+P[F].name+") is not supported yet");y[+s][r]=o<3?1:o}}for(var N=e,O=h.length-1;O>=0;O-=n?2:1){var T=b(h[O],"A decorator","be",!0),z=n?h[O-1]:void 0,A={},H={kind:["field","accessor","method","getter","setter","class"][o],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw new TypeError("attempted to call addInitializer after decoration was finished");b(t,"An initializer","be",!0),i.push(t)}.bind(null,A)};if(w)c=T.call(z,N,H),A.v=1,b(c,"class decorators","return")&&(N=c);else if(H.static=s,H.private=f,c=H.access={has:f?p.bind():function(e){return r in e}},j||(c.get=f?E?function(e){return d(e),P.value}:I("get",0,d):function(e){return e[r]}),E||S||(c.set=f?I("set",0,d):function(e,t){e[r]=t}),N=T.call(z,D?{get:P.get,set:P.set}:P[F],H),A.v=1,D){if("object"==typeof N&&N)(c=b(N.get,"accessor.get"))&&(P.get=c),(c=b(N.set,"accessor.set"))&&(P.set=c),(c=b(N.init,"accessor.init"))&&k.unshift(c);else if(void 0!==N)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else b(N,(l?"field":"method")+" decorators","return")&&(l?k.unshift(N):P[F]=N)}return o<2&&u.push(g(k,s,1),g(i,s,0)),l||w||(f?D?u.splice(-1,0,I("get",s),I("set",s)):u.push(E?P[F]:b.call.bind(P[F])):m(e,r,P)),N}function w(e){return m(e,d,{configurable:!0,enumerable:!0,value:a})}return void 0!==i&&(a=i[d]),a=h(null==a?null:a),f=[],l=function(e){e&&f.push(g(e))},p=function(t,r){for(var i=0;i<n.length;i++){var a=n[i],c=a[1],l=7&c;if((8&c)==t&&!l==r){var p=a[2],d=!!a[3],m=16&c;applyDec(t?e:e.prototype,a,m,d?"#"+p:toPropertyKey(p),l,l<2?[]:t?s=s||[]:u=u||[],f,!!t,d,r,t&&d?function(t){return checkInRHS(t)===e}:o)}}},p(8,0),p(0,0),p(8,1),p(0,1),l(u),l(s),c=f,v||w(e),{e:c,get c(){var n=[];return v&&[w(e=applyDec(e,[t],r,e.name,5,n)),g(n,1)]}}}', { + globals: ["Symbol", "Object", "TypeError", "Error"], + locals: { + applyDecs2311: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "applyDecs2311", + dependencies: { + checkInRHS: ["body.0.body.body.5.argument.expressions.4.right.body.body.0.body.body.1.consequent.body.1.expression.arguments.10.consequent.body.body.0.argument.left.callee"], + setFunctionName: ["body.0.body.body.3.body.body.3.consequent.body.1.test.expressions.0.consequent.expressions.0.consequent.right.properties.0.value.callee", "body.0.body.body.3.body.body.3.consequent.body.1.test.expressions.0.consequent.expressions.1.right.callee"], + toPropertyKey: ["body.0.body.body.5.argument.expressions.4.right.body.body.0.body.body.1.consequent.body.1.expression.arguments.3.alternate.callee"] + } + }), + arrayLikeToArray: helper("7.9.0", "function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}", { + globals: ["Array"], + locals: { + _arrayLikeToArray: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_arrayLikeToArray", + dependencies: {} + }), + arrayWithHoles: helper("7.0.0-beta.0", "function _arrayWithHoles(r){if(Array.isArray(r))return r}", { + globals: ["Array"], + locals: { + _arrayWithHoles: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_arrayWithHoles", + dependencies: {} + }), + arrayWithoutHoles: helper("7.0.0-beta.0", "function _arrayWithoutHoles(r){if(Array.isArray(r))return arrayLikeToArray(r)}", { + globals: ["Array"], + locals: { + _arrayWithoutHoles: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_arrayWithoutHoles", + dependencies: { + arrayLikeToArray: ["body.0.body.body.0.consequent.argument.callee"] + } + }), + assertClassBrand: helper("7.24.0", 'function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}', { + globals: ["TypeError"], + locals: { + _assertClassBrand: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_assertClassBrand", + dependencies: {} + }), + assertThisInitialized: helper("7.0.0-beta.0", "function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}", { + globals: ["ReferenceError"], + locals: { + _assertThisInitialized: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_assertThisInitialized", + dependencies: {} + }), + asyncGeneratorDelegate: helper("7.0.0-beta.0", 'function _asyncGeneratorDelegate(t){var e={},n=!1;function pump(e,r){return n=!0,r=new Promise((function(n){n(t[e](r))})),{done:!1,value:new OverloadYield(r,1)}}return e["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},e.next=function(t){return n?(n=!1,t):pump("next",t)},"function"==typeof t.throw&&(e.throw=function(t){if(n)throw n=!1,t;return pump("throw",t)}),"function"==typeof t.return&&(e.return=function(t){return n?(n=!1,t):pump("return",t)}),e}', { + globals: ["Promise", "Symbol"], + locals: { + _asyncGeneratorDelegate: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_asyncGeneratorDelegate", + dependencies: { + OverloadYield: ["body.0.body.body.1.body.body.0.argument.expressions.2.properties.1.value.callee"] + } + }), + asyncIterator: helper("7.15.9", 'function _asyncIterator(r){var n,t,o,e=2;for("undefined"!=typeof Symbol&&(t=Symbol.asyncIterator,o=Symbol.iterator);e--;){if(t&&null!=(n=r[t]))return n.call(r);if(o&&null!=(n=r[o]))return new AsyncFromSyncIterator(n.call(r));t="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")}function AsyncFromSyncIterator(r){function AsyncFromSyncIteratorContinuation(r){if(Object(r)!==r)return Promise.reject(new TypeError(r+" is not an object."));var n=r.done;return Promise.resolve(r.value).then((function(r){return{value:r,done:n}}))}return AsyncFromSyncIterator=function(r){this.s=r,this.n=r.next},AsyncFromSyncIterator.prototype={s:null,n:null,next:function(){return AsyncFromSyncIteratorContinuation(this.n.apply(this.s,arguments))},return:function(r){var n=this.s.return;return void 0===n?Promise.resolve({value:r,done:!0}):AsyncFromSyncIteratorContinuation(n.apply(this.s,arguments))},throw:function(r){var n=this.s.return;return void 0===n?Promise.reject(r):AsyncFromSyncIteratorContinuation(n.apply(this.s,arguments))}},new AsyncFromSyncIterator(r)}', { + globals: ["Symbol", "TypeError", "Object", "Promise"], + locals: { + _asyncIterator: ["body.0.id"], + AsyncFromSyncIterator: ["body.1.id", "body.0.body.body.1.body.body.1.consequent.argument.callee", "body.1.body.body.1.argument.expressions.1.left.object", "body.1.body.body.1.argument.expressions.2.callee", "body.1.body.body.1.argument.expressions.0.left"] + }, + exportBindingAssignments: [], + exportName: "_asyncIterator", + dependencies: {} + }), + asyncToGenerator: helper("7.0.0-beta.0", 'function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)}))}}', { + globals: ["Promise"], + locals: { + asyncGeneratorStep: ["body.0.id", "body.1.body.body.0.argument.body.body.1.argument.arguments.0.body.body.1.body.body.0.expression.callee", "body.1.body.body.0.argument.body.body.1.argument.arguments.0.body.body.2.body.body.0.expression.callee"], + _asyncToGenerator: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_asyncToGenerator", + dependencies: {} + }), + awaitAsyncGenerator: helper("7.0.0-beta.0", "function _awaitAsyncGenerator(e){return new OverloadYield(e,0)}", { + globals: [], + locals: { + _awaitAsyncGenerator: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_awaitAsyncGenerator", + dependencies: { + OverloadYield: ["body.0.body.body.0.argument.callee"] + } + }), + callSuper: helper("7.23.8", "function _callSuper(t,o,e){return o=getPrototypeOf(o),possibleConstructorReturn(t,isNativeReflectConstruct()?Reflect.construct(o,e||[],getPrototypeOf(t).constructor):o.apply(t,e))}", { + globals: ["Reflect"], + locals: { + _callSuper: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_callSuper", + dependencies: { + getPrototypeOf: ["body.0.body.body.0.argument.expressions.0.right.callee", "body.0.body.body.0.argument.expressions.1.arguments.1.consequent.arguments.2.object.callee"], + isNativeReflectConstruct: ["body.0.body.body.0.argument.expressions.1.arguments.1.test.callee"], + possibleConstructorReturn: ["body.0.body.body.0.argument.expressions.1.callee"] + } + }), + checkInRHS: helper("7.20.5", 'function _checkInRHS(e){if(Object(e)!==e)throw TypeError("right-hand side of \'in\' should be an object, got "+(null!==e?typeof e:"null"));return e}', { + globals: ["Object", "TypeError"], + locals: { + _checkInRHS: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_checkInRHS", + dependencies: {} + }), + checkPrivateRedeclaration: helper("7.14.1", 'function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}', { + globals: ["TypeError"], + locals: { + _checkPrivateRedeclaration: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_checkPrivateRedeclaration", + dependencies: {} + }), + classCallCheck: helper("7.0.0-beta.0", 'function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}', { + globals: ["TypeError"], + locals: { + _classCallCheck: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classCallCheck", + dependencies: {} + }), + classNameTDZError: helper("7.0.0-beta.0", "function _classNameTDZError(e){throw new ReferenceError('Class \"'+e+'\" cannot be referenced in computed property keys.')}", { + globals: ["ReferenceError"], + locals: { + _classNameTDZError: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classNameTDZError", + dependencies: {} + }), + classPrivateFieldGet2: helper("7.24.0", "function _classPrivateFieldGet2(s,a){return s.get(assertClassBrand(s,a))}", { + globals: [], + locals: { + _classPrivateFieldGet2: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldGet2", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.arguments.0.callee"] + } + }), + classPrivateFieldInitSpec: helper("7.14.1", "function _classPrivateFieldInitSpec(e,t,a){checkPrivateRedeclaration(e,t),t.set(e,a)}", { + globals: [], + locals: { + _classPrivateFieldInitSpec: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldInitSpec", + dependencies: { + checkPrivateRedeclaration: ["body.0.body.body.0.expression.expressions.0.callee"] + } + }), + classPrivateFieldLooseBase: helper("7.0.0-beta.0", 'function _classPrivateFieldBase(e,t){if(!{}.hasOwnProperty.call(e,t))throw new TypeError("attempted to use private field on non-instance");return e}', { + globals: ["TypeError"], + locals: { + _classPrivateFieldBase: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldBase", + dependencies: {} + }), + classPrivateFieldLooseKey: helper("7.0.0-beta.0", 'var id=0;function _classPrivateFieldKey(e){return"__private_"+id+++"_"+e}', { + globals: [], + locals: { + id: ["body.0.declarations.0.id", "body.1.body.body.0.argument.left.left.right.argument", "body.1.body.body.0.argument.left.left.right.argument"], + _classPrivateFieldKey: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldKey", + dependencies: {} + }), + classPrivateFieldSet2: helper("7.24.0", "function _classPrivateFieldSet2(s,a,r){return s.set(assertClassBrand(s,a),r),r}", { + globals: [], + locals: { + _classPrivateFieldSet2: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldSet2", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.arguments.0.callee"] + } + }), + classPrivateGetter: helper("7.24.0", "function _classPrivateGetter(s,r,a){return a(assertClassBrand(s,r))}", { + globals: [], + locals: { + _classPrivateGetter: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateGetter", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.arguments.0.callee"] + } + }), + classPrivateMethodInitSpec: helper("7.14.1", "function _classPrivateMethodInitSpec(e,a){checkPrivateRedeclaration(e,a),a.add(e)}", { + globals: [], + locals: { + _classPrivateMethodInitSpec: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateMethodInitSpec", + dependencies: { + checkPrivateRedeclaration: ["body.0.body.body.0.expression.expressions.0.callee"] + } + }), + classPrivateSetter: helper("7.24.0", "function _classPrivateSetter(s,r,a,t){return r(assertClassBrand(s,a),t),t}", { + globals: [], + locals: { + _classPrivateSetter: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateSetter", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.arguments.0.callee"] + } + }), + classStaticPrivateMethodGet: helper("7.3.2", "function _classStaticPrivateMethodGet(s,a,t){return assertClassBrand(a,s),t}", { + globals: [], + locals: { + _classStaticPrivateMethodGet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classStaticPrivateMethodGet", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"] + } + }), + construct: helper("7.0.0-beta.0", "function _construct(t,e,r){if(isNativeReflectConstruct())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,e);var p=new(t.bind.apply(t,o));return r&&setPrototypeOf(p,r.prototype),p}", { + globals: ["Reflect"], + locals: { + _construct: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_construct", + dependencies: { + isNativeReflectConstruct: ["body.0.body.body.0.test.callee"], + setPrototypeOf: ["body.0.body.body.4.argument.expressions.0.right.callee"] + } + }), + createClass: helper("7.0.0-beta.0", 'function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}', { + globals: ["Object"], + locals: { + _defineProperties: ["body.0.id", "body.1.body.body.0.argument.expressions.0.right.callee", "body.1.body.body.0.argument.expressions.1.right.callee"], + _createClass: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_createClass", + dependencies: { + toPropertyKey: ["body.0.body.body.0.body.body.1.expression.expressions.3.arguments.1.callee"] + } + }), + createForOfIteratorHelper: helper("7.9.0", 'function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function(){};return{s:F,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){u=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}', { + globals: ["Symbol", "Array", "TypeError"], + locals: { + _createForOfIteratorHelper: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_createForOfIteratorHelper", + dependencies: { + unsupportedIterableToArray: ["body.0.body.body.1.consequent.body.0.test.left.right.right.callee"] + } + }), + createForOfIteratorHelperLoose: helper("7.9.0", 'function _createForOfIteratorHelperLoose(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}', { + globals: ["Symbol", "Array", "TypeError"], + locals: { + _createForOfIteratorHelperLoose: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_createForOfIteratorHelperLoose", + dependencies: { + unsupportedIterableToArray: ["body.0.body.body.2.test.left.right.right.callee"] + } + }), + createSuper: helper("7.9.0", "function _createSuper(t){var r=isNativeReflectConstruct();return function(){var e,o=getPrototypeOf(t);if(r){var s=getPrototypeOf(this).constructor;e=Reflect.construct(o,arguments,s)}else e=o.apply(this,arguments);return possibleConstructorReturn(this,e)}}", { + globals: ["Reflect"], + locals: { + _createSuper: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_createSuper", + dependencies: { + getPrototypeOf: ["body.0.body.body.1.argument.body.body.0.declarations.1.init.callee", "body.0.body.body.1.argument.body.body.1.consequent.body.0.declarations.0.init.object.callee"], + isNativeReflectConstruct: ["body.0.body.body.0.declarations.0.init.callee"], + possibleConstructorReturn: ["body.0.body.body.1.argument.body.body.2.argument.callee"] + } + }), + decorate: helper("7.1.5", 'function _decorate(e,r,t,i){var o=_getDecoratorsApi();if(i)for(var n=0;n<i.length;n++)o=i[n](o);var s=r((function(e){o.initializeInstanceElements(e,a.elements)}),t),a=o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)),e);return o.initializeClassElements(s.F,a.elements),o.runClassFinishers(s.F,a.finishers)}function _getDecoratorsApi(){_getDecoratorsApi=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,r){["method","field"].forEach((function(t){r.forEach((function(r){r.kind===t&&"own"===r.placement&&this.defineClassElement(e,r)}),this)}),this)},initializeClassElements:function(e,r){var t=e.prototype;["method","field"].forEach((function(i){r.forEach((function(r){var o=r.placement;if(r.kind===i&&("static"===o||"prototype"===o)){var n="static"===o?e:t;this.defineClassElement(n,r)}}),this)}),this)},defineClassElement:function(e,r){var t=r.descriptor;if("field"===r.kind){var i=r.initializer;t={enumerable:t.enumerable,writable:t.writable,configurable:t.configurable,value:void 0===i?void 0:i.call(e)}}Object.defineProperty(e,r.key,t)},decorateClass:function(e,r){var t=[],i=[],o={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,o)}),this),e.forEach((function(e){if(!_hasDecorators(e))return t.push(e);var r=this.decorateElement(e,o);t.push(r.element),t.push.apply(t,r.extras),i.push.apply(i,r.finishers)}),this),!r)return{elements:t,finishers:i};var n=this.decorateConstructor(t,r);return i.push.apply(i,n.finishers),n.finishers=i,n},addElementPlacement:function(e,r,t){var i=r[e.placement];if(!t&&-1!==i.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");i.push(e.key)},decorateElement:function(e,r){for(var t=[],i=[],o=e.decorators,n=o.length-1;n>=0;n--){var s=r[e.placement];s.splice(s.indexOf(e.key),1);var a=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,o[n])(a)||a);e=l.element,this.addElementPlacement(e,r),l.finisher&&i.push(l.finisher);var c=l.extras;if(c){for(var p=0;p<c.length;p++)this.addElementPlacement(c[p],r);t.push.apply(t,c)}}return{element:e,finishers:i,extras:t}},decorateConstructor:function(e,r){for(var t=[],i=r.length-1;i>=0;i--){var o=this.fromClassDescriptor(e),n=this.toClassDescriptor((0,r[i])(o)||o);if(void 0!==n.finisher&&t.push(n.finisher),void 0!==n.elements){e=n.elements;for(var s=0;s<e.length-1;s++)for(var a=s+1;a<e.length;a++)if(e[s].key===e[a].key&&e[s].placement===e[a].placement)throw new TypeError("Duplicated element ("+e[s].key+")")}}return{elements:e,finishers:t}},fromElementDescriptor:function(e){var r={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(r,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(r.initializer=e.initializer),r},toElementDescriptors:function(e){if(void 0!==e)return toArray(e).map((function(e){var r=this.toElementDescriptor(e);return this.disallowProperty(e,"finisher","An element descriptor"),this.disallowProperty(e,"extras","An element descriptor"),r}),this)},toElementDescriptor:function(e){var r=e.kind+"";if("method"!==r&&"field"!==r)throw new TypeError(\'An element descriptor\\\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "\'+r+\'"\');var t=toPropertyKey(e.key),i=e.placement+"";if("static"!==i&&"prototype"!==i&&"own"!==i)throw new TypeError(\'An element descriptor\\\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "\'+i+\'"\');var o=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var n={kind:r,key:t,placement:i,descriptor:Object.assign({},o)};return"field"!==r?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(o,"get","The property descriptor of a field descriptor"),this.disallowProperty(o,"set","The property descriptor of a field descriptor"),this.disallowProperty(o,"value","The property descriptor of a field descriptor"),n.initializer=e.initializer),n},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:_optionalCallableProperty(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var r={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(r,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),r},toClassDescriptor:function(e){var r=e.kind+"";if("class"!==r)throw new TypeError(\'A class descriptor\\\'s .kind property must be "class", but a decorator created a class descriptor with .kind "\'+r+\'"\');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var t=_optionalCallableProperty(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:t}},runClassFinishers:function(e,r){for(var t=0;t<r.length;t++){var i=(0,r[t])(e);if(void 0!==i){if("function"!=typeof i)throw new TypeError("Finishers must return a constructor.");e=i}}return e},disallowProperty:function(e,r,t){if(void 0!==e[r])throw new TypeError(t+" can\'t have a ."+r+" property.")}};return e}function _createElementDescriptor(e){var r,t=toPropertyKey(e.key);"method"===e.kind?r={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?r={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?r={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(r={configurable:!0,writable:!0,enumerable:!0});var i={kind:"field"===e.kind?"field":"method",key:t,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:r};return e.decorators&&(i.decorators=e.decorators),"field"===e.kind&&(i.initializer=e.value),i}function _coalesceGetterSetter(e,r){void 0!==e.descriptor.get?r.descriptor.get=e.descriptor.get:r.descriptor.set=e.descriptor.set}function _coalesceClassElements(e){for(var r=[],isSameElement=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},t=0;t<e.length;t++){var i,o=e[t];if("method"===o.kind&&(i=r.find(isSameElement)))if(_isDataDescriptor(o.descriptor)||_isDataDescriptor(i.descriptor)){if(_hasDecorators(o)||_hasDecorators(i))throw new ReferenceError("Duplicated methods ("+o.key+") can\'t be decorated.");i.descriptor=o.descriptor}else{if(_hasDecorators(o)){if(_hasDecorators(i))throw new ReferenceError("Decorators can\'t be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}_coalesceGetterSetter(o,i)}else r.push(o)}return r}function _hasDecorators(e){return e.decorators&&e.decorators.length}function _isDataDescriptor(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function _optionalCallableProperty(e,r){var t=e[r];if(void 0!==t&&"function"!=typeof t)throw new TypeError("Expected \'"+r+"\' to be a function");return t}', { + globals: ["Object", "TypeError", "Symbol", "ReferenceError"], + locals: { + _decorate: ["body.0.id"], + _getDecoratorsApi: ["body.1.id", "body.0.body.body.0.declarations.0.init.callee", "body.1.body.body.0.expression.left"], + _createElementDescriptor: ["body.2.id", "body.0.body.body.2.declarations.1.init.arguments.0.arguments.0.arguments.0"], + _coalesceGetterSetter: ["body.3.id", "body.4.body.body.0.body.body.1.consequent.alternate.body.1.expression.callee"], + _coalesceClassElements: ["body.4.id", "body.0.body.body.2.declarations.1.init.arguments.0.callee"], + _hasDecorators: ["body.5.id", "body.1.body.body.1.declarations.0.init.properties.4.value.body.body.1.test.expressions.1.arguments.0.body.body.0.test.argument.callee", "body.4.body.body.0.body.body.1.consequent.consequent.body.0.test.left.callee", "body.4.body.body.0.body.body.1.consequent.consequent.body.0.test.right.callee", "body.4.body.body.0.body.body.1.consequent.alternate.body.0.test.callee", "body.4.body.body.0.body.body.1.consequent.alternate.body.0.consequent.body.0.test.callee"], + _isDataDescriptor: ["body.6.id", "body.4.body.body.0.body.body.1.consequent.test.left.callee", "body.4.body.body.0.body.body.1.consequent.test.right.callee"], + _optionalCallableProperty: ["body.7.id", "body.1.body.body.1.declarations.0.init.properties.11.value.body.body.0.argument.properties.1.value.callee", "body.1.body.body.1.declarations.0.init.properties.13.value.body.body.3.declarations.0.init.callee"] + }, + exportBindingAssignments: [], + exportName: "_decorate", + dependencies: { + toArray: ["body.1.body.body.1.declarations.0.init.properties.9.value.body.body.0.consequent.argument.callee.object.callee"], + toPropertyKey: ["body.1.body.body.1.declarations.0.init.properties.10.value.body.body.2.declarations.0.init.callee", "body.2.body.body.0.declarations.1.init.callee"] + } + }), + defaults: helper("7.0.0-beta.0", "function _defaults(e,r){for(var t=Object.getOwnPropertyNames(r),o=0;o<t.length;o++){var n=t[o],a=Object.getOwnPropertyDescriptor(r,n);a&&a.configurable&&void 0===e[n]&&Object.defineProperty(e,n,a)}return e}", { + globals: ["Object"], + locals: { + _defaults: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_defaults", + dependencies: {} + }), + defineAccessor: helper("7.20.7", "function _defineAccessor(e,r,n,t){var c={configurable:!0,enumerable:!0};return c[e]=t,Object.defineProperty(r,n,c)}", { + globals: ["Object"], + locals: { + _defineAccessor: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_defineAccessor", + dependencies: {} + }), + defineProperty: helper("7.0.0-beta.0", "function _defineProperty(e,r,t){return(r=toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}", { + globals: ["Object"], + locals: { + _defineProperty: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_defineProperty", + dependencies: { + toPropertyKey: ["body.0.body.body.0.argument.expressions.0.test.left.right.callee"] + } + }), + extends: helper("7.0.0-beta.0", "function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}", { + globals: ["Object"], + locals: { + _extends: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee.object", "body.0.body.body.0.argument.expressions.0.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"], + exportName: "_extends", + dependencies: {} + }), + get: helper("7.0.0-beta.0", 'function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value}},_get.apply(null,arguments)}', { + globals: ["Reflect", "Object"], + locals: { + _get: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee.object", "body.0.body.body.0.argument.expressions.0.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"], + exportName: "_get", + dependencies: { + superPropBase: ["body.0.body.body.0.argument.expressions.0.right.alternate.body.body.0.declarations.0.init.callee"] + } + }), + getPrototypeOf: helper("7.0.0-beta.0", "function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}", { + globals: ["Object"], + locals: { + _getPrototypeOf: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.0.body.body.0.argument.expressions.0.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"], + exportName: "_getPrototypeOf", + dependencies: {} + }), + identity: helper("7.17.0", "function _identity(t){return t}", { + globals: [], + locals: { + _identity: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_identity", + dependencies: {} + }), + importDeferProxy: helper("7.23.0", "function _importDeferProxy(e){var t=null,constValue=function(e){return function(){return e}},proxy=function(r){return function(n,o,f){return null===t&&(t=e()),r(t,o,f)}};return new Proxy({},{defineProperty:constValue(!1),deleteProperty:constValue(!1),get:proxy(Reflect.get),getOwnPropertyDescriptor:proxy(Reflect.getOwnPropertyDescriptor),getPrototypeOf:constValue(null),isExtensible:constValue(!1),has:proxy(Reflect.has),ownKeys:proxy(Reflect.ownKeys),preventExtensions:constValue(!0),set:constValue(!1),setPrototypeOf:constValue(!1)})}", { + globals: ["Proxy", "Reflect"], + locals: { + _importDeferProxy: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_importDeferProxy", + dependencies: {} + }), + inherits: helper("7.0.0-beta.0", 'function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&setPrototypeOf(t,e)}', { + globals: ["TypeError", "Object"], + locals: { + _inherits: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_inherits", + dependencies: { + setPrototypeOf: ["body.0.body.body.1.expression.expressions.2.right.callee"] + } + }), + inheritsLoose: helper("7.0.0-beta.0", "function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,setPrototypeOf(t,o)}", { + globals: ["Object"], + locals: { + _inheritsLoose: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_inheritsLoose", + dependencies: { + setPrototypeOf: ["body.0.body.body.0.expression.expressions.2.callee"] + } + }), + initializerDefineProperty: helper("7.0.0-beta.0", "function _initializerDefineProperty(e,i,r,l){r&&Object.defineProperty(e,i,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(l):void 0})}", { + globals: ["Object"], + locals: { + _initializerDefineProperty: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_initializerDefineProperty", + dependencies: {} + }), + initializerWarningHelper: helper("7.0.0-beta.0", 'function _initializerWarningHelper(r,e){throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.")}', { + globals: ["Error"], + locals: { + _initializerWarningHelper: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_initializerWarningHelper", + dependencies: {} + }), + instanceof: helper("7.0.0-beta.0", 'function _instanceof(n,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](n):n instanceof e}', { + globals: ["Symbol"], + locals: { + _instanceof: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_instanceof", + dependencies: {} + }), + interopRequireDefault: helper("7.0.0-beta.0", "function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}", { + globals: [], + locals: { + _interopRequireDefault: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_interopRequireDefault", + dependencies: {} + }), + interopRequireWildcard: helper("7.14.0", 'function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?o(f,t,i):f[t]=e[t]);return f})(e,t)}', { + globals: ["WeakMap", "Object"], + locals: { + _interopRequireWildcard: ["body.0.id", "body.0.body.body.1.argument.callee.left"] + }, + exportBindingAssignments: ["body.0.body.body.1.argument.callee"], + exportName: "_interopRequireWildcard", + dependencies: {} + }), + isNativeFunction: helper("7.0.0-beta.0", 'function _isNativeFunction(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(n){return"function"==typeof t}}', { + globals: ["Function"], + locals: { + _isNativeFunction: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_isNativeFunction", + dependencies: {} + }), + isNativeReflectConstruct: helper("7.9.0", "function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_isNativeReflectConstruct=function(){return!!t})()}", { + globals: ["Boolean", "Reflect"], + locals: { + _isNativeReflectConstruct: ["body.0.id", "body.0.body.body.1.argument.callee.left"] + }, + exportBindingAssignments: ["body.0.body.body.1.argument.callee"], + exportName: "_isNativeReflectConstruct", + dependencies: {} + }), + iterableToArray: helper("7.0.0-beta.0", 'function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}', { + globals: ["Symbol", "Array"], + locals: { + _iterableToArray: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_iterableToArray", + dependencies: {} + }), + iterableToArrayLimit: helper("7.0.0-beta.0", 'function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}', { + globals: ["Symbol", "Object"], + locals: { + _iterableToArrayLimit: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_iterableToArrayLimit", + dependencies: {} + }), + jsx: helper("7.0.0-beta.0", 'var REACT_ELEMENT_TYPE;function _createRawReactElement(e,r,E,l){REACT_ELEMENT_TYPE||(REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103);var o=e&&e.defaultProps,n=arguments.length-3;if(r||0===n||(r={children:void 0}),1===n)r.children=l;else if(n>1){for(var t=Array(n),f=0;f<n;f++)t[f]=arguments[f+3];r.children=t}if(r&&o)for(var i in o)void 0===r[i]&&(r[i]=o[i]);else r||(r=o||{});return{$$typeof:REACT_ELEMENT_TYPE,type:e,key:void 0===E?null:""+E,ref:null,props:r,_owner:null}}', { + globals: ["Symbol", "Array"], + locals: { + REACT_ELEMENT_TYPE: ["body.0.declarations.0.id", "body.1.body.body.0.expression.left", "body.1.body.body.4.argument.properties.0.value", "body.1.body.body.0.expression.right.left"], + _createRawReactElement: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_createRawReactElement", + dependencies: {} + }), + maybeArrayLike: helper("7.9.0", 'function _maybeArrayLike(r,a,e){if(a&&!Array.isArray(a)&&"number"==typeof a.length){var y=a.length;return arrayLikeToArray(a,void 0!==e&&e<y?e:y)}return r(a,e)}', { + globals: ["Array"], + locals: { + _maybeArrayLike: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_maybeArrayLike", + dependencies: { + arrayLikeToArray: ["body.0.body.body.0.consequent.body.1.argument.callee"] + } + }), + newArrowCheck: helper("7.0.0-beta.0", 'function _newArrowCheck(n,r){if(n!==r)throw new TypeError("Cannot instantiate an arrow function")}', { + globals: ["TypeError"], + locals: { + _newArrowCheck: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_newArrowCheck", + dependencies: {} + }), + nonIterableRest: helper("7.0.0-beta.0", 'function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}', { + globals: ["TypeError"], + locals: { + _nonIterableRest: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_nonIterableRest", + dependencies: {} + }), + nonIterableSpread: helper("7.0.0-beta.0", 'function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}', { + globals: ["TypeError"], + locals: { + _nonIterableSpread: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_nonIterableSpread", + dependencies: {} + }), + nullishReceiverError: helper("7.22.6", 'function _nullishReceiverError(r){throw new TypeError("Cannot set property of null or undefined.")}', { + globals: ["TypeError"], + locals: { + _nullishReceiverError: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_nullishReceiverError", + dependencies: {} + }), + objectDestructuringEmpty: helper("7.0.0-beta.0", 'function _objectDestructuringEmpty(t){if(null==t)throw new TypeError("Cannot destructure "+t)}', { + globals: ["TypeError"], + locals: { + _objectDestructuringEmpty: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_objectDestructuringEmpty", + dependencies: {} + }), + objectSpread2: helper("7.5.0", "function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread2(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}", { + globals: ["Object"], + locals: { + ownKeys: ["body.0.id", "body.1.body.body.0.body.body.1.expression.consequent.callee.object.callee", "body.1.body.body.0.body.body.1.expression.alternate.alternate.callee.object.callee"], + _objectSpread2: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_objectSpread2", + dependencies: { + defineProperty: ["body.1.body.body.0.body.body.1.expression.consequent.arguments.0.body.body.0.expression.callee"] + } + }), + objectWithoutProperties: helper("7.0.0-beta.0", "function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],-1===t.indexOf(o)&&{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}", { + globals: ["Object"], + locals: { + _objectWithoutProperties: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_objectWithoutProperties", + dependencies: { + objectWithoutPropertiesLoose: ["body.0.body.body.1.declarations.2.init.callee"] + } + }), + objectWithoutPropertiesLoose: helper("7.0.0-beta.0", "function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}", { + globals: [], + locals: { + _objectWithoutPropertiesLoose: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_objectWithoutPropertiesLoose", + dependencies: {} + }), + possibleConstructorReturn: helper("7.0.0-beta.0", 'function _possibleConstructorReturn(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return assertThisInitialized(t)}', { + globals: ["TypeError"], + locals: { + _possibleConstructorReturn: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_possibleConstructorReturn", + dependencies: { + assertThisInitialized: ["body.0.body.body.2.argument.callee"] + } + }), + readOnlyError: helper("7.0.0-beta.0", "function _readOnlyError(r){throw new TypeError('\"'+r+'\" is read-only')}", { + globals: ["TypeError"], + locals: { + _readOnlyError: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_readOnlyError", + dependencies: {} + }), + regeneratorRuntime: helper("7.18.0", 'function _regeneratorRuntime(){"use strict";\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */_regeneratorRuntime=function(){return r};var t,r={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,r,e,n){return Object.defineProperty(t,r,{value:e,enumerable:!n,configurable:!n,writable:!n})}try{c({},"")}catch(t){c=function(t,r,e){return t[r]=e}}function h(r,e,n,o){var i=e&&e.prototype instanceof Generator?e:Generator,a=Object.create(i.prototype);return c(a,"_invoke",function(r,e,n){var o=1;return function(i,a){if(3===o)throw Error("Generator is already running");if(4===o){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=d(u,n);if(c){if(c===f)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(1===o)throw o=4,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=3;var h=s(r,e,n);if("normal"===h.type){if(o=n.done?4:2,h.arg===f)continue;return{value:h.arg,done:n.done}}"throw"===h.type&&(o=4,n.method="throw",n.arg=h.arg)}}}(r,n,new Context(o||[])),!0),a}function s(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=h;var f={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var l={};c(l,i,(function(){return this}));var p=Object.getPrototypeOf,y=p&&p(p(x([])));y&&y!==e&&n.call(y,i)&&(l=y);var v=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(l);function g(t){["next","throw","return"].forEach((function(r){c(t,r,(function(t){return this._invoke(r,t)}))}))}function AsyncIterator(t,r){function e(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var h=c.arg,f=h.value;return f&&"object"==typeof f&&n.call(f,"__await")?r.resolve(f.__await).then((function(t){e("next",t,a,u)}),(function(t){e("throw",t,a,u)})):r.resolve(f).then((function(t){h.value=t,a(h)}),(function(t){return e("throw",t,a,u)}))}u(c.arg)}var o;c(this,"_invoke",(function(t,n){function i(){return new r((function(r,o){e(t,n,r,o)}))}return o=o?o.then(i,i):i()}),!0)}function d(r,e){var n=e.method,o=r.i[n];if(o===t)return e.delegate=null,"throw"===n&&r.i.return&&(e.method="return",e.arg=t,d(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var i=s(o,r.i,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,f;var a=i.arg;return a?a.done?(e[r.r]=a.value,e.next=r.n,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,f):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function w(t){this.tryEntries.push(t)}function m(r){var e=r[4]||{};e.type="normal",e.arg=t,r[4]=e}function Context(t){this.tryEntries=[[-1]],t.forEach(w,this),this.reset(!0)}function x(r){if(null!=r){var e=r[i];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,a=function e(){for(;++o<r.length;)if(n.call(r,o))return e.value=r[o],e.done=!1,e;return e.value=t,e.done=!0,e};return a.next=a}}throw new TypeError(typeof r+" is not iterable")}return GeneratorFunction.prototype=GeneratorFunctionPrototype,c(v,"constructor",GeneratorFunctionPrototype),c(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName=c(GeneratorFunctionPrototype,u,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===GeneratorFunction||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,c(t,u,"GeneratorFunction")),t.prototype=Object.create(v),t},r.awrap=function(t){return{__await:t}},g(AsyncIterator.prototype),c(AsyncIterator.prototype,a,(function(){return this})),r.AsyncIterator=AsyncIterator,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(h(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(v),c(v,u,"Generator"),c(v,i,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.unshift(n);return function t(){for(;e.length;)if((n=e.pop())in r)return t.value=n,t.done=!1,t;return t.done=!0,t}},r.values=x,Context.prototype={constructor:Context,reset:function(r){if(this.prev=this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(m),!r)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(t){a.type="throw",a.arg=r,e.next=t}for(var o=e.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i[4],u=this.prev,c=i[1],h=i[2];if(-1===i[0])return n("end"),!1;if(!c&&!h)throw Error("try statement without catch or finally");if(null!=i[0]&&i[0]<=u){if(u<c)return this.method="next",this.arg=t,n(c),!0;if(u<h)return n(h),!1}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n[0]>-1&&n[0]<=this.prev&&this.prev<n[2]){var o=n;break}}o&&("break"===t||"continue"===t)&&o[0]<=r&&r<=o[2]&&(o=null);var i=o?o[4]:{};return i.type=t,i.arg=r,o?(this.method="next",this.next=o[2],f):this.complete(i)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),f},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[2]===t)return this.complete(e[4],e[3]),m(e),f}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e[0]===t){var n=e[4];if("throw"===n.type){var o=n.arg;m(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={i:x(r),r:e,n:n},"next"===this.method&&(this.arg=t),f}},r}', { + globals: ["Object", "Symbol", "Error", "TypeError", "isNaN", "Promise"], + locals: { + _regeneratorRuntime: ["body.0.id", "body.0.body.body.0.expression.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.expression"], + exportName: "_regeneratorRuntime", + dependencies: {} + }), + set: helper("7.0.0-beta.0", 'function set(e,r,t,o){return set="undefined"!=typeof Reflect&&Reflect.set?Reflect.set:function(e,r,t,o){var f,i=superPropBase(e,r);if(i){if((f=Object.getOwnPropertyDescriptor(i,r)).set)return f.set.call(o,t),!0;if(!f.writable)return!1}if(f=Object.getOwnPropertyDescriptor(o,r)){if(!f.writable)return!1;f.value=t,Object.defineProperty(o,r,f)}else defineProperty(o,r,t);return!0},set(e,r,t,o)}function _set(e,r,t,o,f){if(!set(e,r,t,o||e)&&f)throw new TypeError("failed to set property");return t}', { + globals: ["Reflect", "Object", "TypeError"], + locals: { + set: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.1.body.body.0.test.left.argument.callee", "body.0.body.body.0.argument.expressions.0.left"], + _set: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_set", + dependencies: { + superPropBase: ["body.0.body.body.0.argument.expressions.0.right.alternate.body.body.0.declarations.1.init.callee"], + defineProperty: ["body.0.body.body.0.argument.expressions.0.right.alternate.body.body.2.alternate.expression.callee"] + } + }), + setFunctionName: helper("7.23.6", 'function setFunctionName(e,t,n){"symbol"==typeof t&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch(e){}return e}', { + globals: ["Object"], + locals: { + setFunctionName: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "setFunctionName", + dependencies: {} + }), + setPrototypeOf: helper("7.0.0-beta.0", "function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}", { + globals: ["Object"], + locals: { + _setPrototypeOf: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.0.body.body.0.argument.expressions.0.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"], + exportName: "_setPrototypeOf", + dependencies: {} + }), + skipFirstGeneratorNext: helper("7.0.0-beta.0", "function _skipFirstGeneratorNext(t){return function(){var r=t.apply(this,arguments);return r.next(),r}}", { + globals: [], + locals: { + _skipFirstGeneratorNext: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_skipFirstGeneratorNext", + dependencies: {} + }), + slicedToArray: helper("7.0.0-beta.0", "function _slicedToArray(r,e){return arrayWithHoles(r)||iterableToArrayLimit(r,e)||unsupportedIterableToArray(r,e)||nonIterableRest()}", { + globals: [], + locals: { + _slicedToArray: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_slicedToArray", + dependencies: { + arrayWithHoles: ["body.0.body.body.0.argument.left.left.left.callee"], + iterableToArrayLimit: ["body.0.body.body.0.argument.left.left.right.callee"], + unsupportedIterableToArray: ["body.0.body.body.0.argument.left.right.callee"], + nonIterableRest: ["body.0.body.body.0.argument.right.callee"] + } + }), + superPropBase: helper("7.0.0-beta.0", "function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=getPrototypeOf(t)););return t}", { + globals: [], + locals: { + _superPropBase: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_superPropBase", + dependencies: { + getPrototypeOf: ["body.0.body.body.0.test.right.right.right.callee"] + } + }), + superPropGet: helper("7.25.0", 'function _superPropGet(t,o,e,r){var p=get(getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t)}:p}', { + globals: [], + locals: { + _superPropGet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_superPropGet", + dependencies: { + get: ["body.0.body.body.0.declarations.0.init.callee"], + getPrototypeOf: ["body.0.body.body.0.declarations.0.init.arguments.0.callee"] + } + }), + superPropSet: helper("7.25.0", "function _superPropSet(t,e,o,r,p,f){return set(getPrototypeOf(f?t.prototype:t),e,o,r,p)}", { + globals: [], + locals: { + _superPropSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_superPropSet", + dependencies: { + set: ["body.0.body.body.0.argument.callee"], + getPrototypeOf: ["body.0.body.body.0.argument.arguments.0.callee"] + } + }), + taggedTemplateLiteral: helper("7.0.0-beta.0", "function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}", { + globals: ["Object"], + locals: { + _taggedTemplateLiteral: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_taggedTemplateLiteral", + dependencies: {} + }), + taggedTemplateLiteralLoose: helper("7.0.0-beta.0", "function _taggedTemplateLiteralLoose(e,t){return t||(t=e.slice(0)),e.raw=t,e}", { + globals: [], + locals: { + _taggedTemplateLiteralLoose: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_taggedTemplateLiteralLoose", + dependencies: {} + }), + tdz: helper("7.5.5", 'function _tdzError(e){throw new ReferenceError(e+" is not defined - temporal dead zone")}', { + globals: ["ReferenceError"], + locals: { + _tdzError: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_tdzError", + dependencies: {} + }), + temporalRef: helper("7.0.0-beta.0", "function _temporalRef(r,e){return r===undef?err(e):r}", { + globals: [], + locals: { + _temporalRef: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_temporalRef", + dependencies: { + temporalUndefined: ["body.0.body.body.0.argument.test.right"], + tdz: ["body.0.body.body.0.argument.consequent.callee"] + } + }), + temporalUndefined: helper("7.0.0-beta.0", "function _temporalUndefined(){}", { + globals: [], + locals: { + _temporalUndefined: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_temporalUndefined", + dependencies: {} + }), + toArray: helper("7.0.0-beta.0", "function _toArray(r){return arrayWithHoles(r)||iterableToArray(r)||unsupportedIterableToArray(r)||nonIterableRest()}", { + globals: [], + locals: { + _toArray: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_toArray", + dependencies: { + arrayWithHoles: ["body.0.body.body.0.argument.left.left.left.callee"], + iterableToArray: ["body.0.body.body.0.argument.left.left.right.callee"], + unsupportedIterableToArray: ["body.0.body.body.0.argument.left.right.callee"], + nonIterableRest: ["body.0.body.body.0.argument.right.callee"] + } + }), + toConsumableArray: helper("7.0.0-beta.0", "function _toConsumableArray(r){return arrayWithoutHoles(r)||iterableToArray(r)||unsupportedIterableToArray(r)||nonIterableSpread()}", { + globals: [], + locals: { + _toConsumableArray: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_toConsumableArray", + dependencies: { + arrayWithoutHoles: ["body.0.body.body.0.argument.left.left.left.callee"], + iterableToArray: ["body.0.body.body.0.argument.left.left.right.callee"], + unsupportedIterableToArray: ["body.0.body.body.0.argument.left.right.callee"], + nonIterableSpread: ["body.0.body.body.0.argument.right.callee"] + } + }), + toPrimitive: helper("7.1.5", 'function toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}', { + globals: ["Symbol", "TypeError", "String", "Number"], + locals: { + toPrimitive: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "toPrimitive", + dependencies: {} + }), + toPropertyKey: helper("7.1.5", 'function toPropertyKey(t){var i=toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}', { + globals: [], + locals: { + toPropertyKey: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "toPropertyKey", + dependencies: { + toPrimitive: ["body.0.body.body.0.declarations.0.init.callee"] + } + }), + toSetter: helper("7.24.0", 'function _toSetter(t,e,n){e||(e=[]);var r=e.length++;return Object.defineProperty({},"_",{set:function(o){e[r]=o,t.apply(n,e)}})}', { + globals: ["Object"], + locals: { + _toSetter: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_toSetter", + dependencies: {} + }), + tsRewriteRelativeImportExtensions: helper("7.27.0", 'function tsRewriteRelativeImportExtensions(t,e){return"string"==typeof t&&/^\\.\\.?\\//.test(t)?t.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+)?)\\.([cm]?)ts$/i,(function(t,s,r,n,o){return s?e?".jsx":".js":!r||n&&o?r+n+"."+o.toLowerCase()+"js":t})):t}', { + globals: [], + locals: { + tsRewriteRelativeImportExtensions: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "tsRewriteRelativeImportExtensions", + dependencies: {} + }), + typeof: helper("7.0.0-beta.0", 'function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}', { + globals: ["Symbol"], + locals: { + _typeof: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.0.body.body.0.argument.expressions.0.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"], + exportName: "_typeof", + dependencies: {} + }), + unsupportedIterableToArray: helper("7.9.0", 'function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?arrayLikeToArray(r,a):void 0}}', { + globals: ["Array"], + locals: { + _unsupportedIterableToArray: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_unsupportedIterableToArray", + dependencies: { + arrayLikeToArray: ["body.0.body.body.0.consequent.body.0.consequent.argument.callee", "body.0.body.body.0.consequent.body.2.argument.expressions.1.alternate.consequent.callee"] + } + }), + usingCtx: helper("7.23.9", 'function _usingCtx(){var r="function"==typeof SuppressedError?SuppressedError:function(r,e){var n=Error();return n.name="SuppressedError",n.error=r,n.suppressed=e,n},e={},n=[];function using(r,e){if(null!=e){if(Object(e)!==e)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(r)var o=e[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===o&&(o=e[Symbol.dispose||Symbol.for("Symbol.dispose")],r))var t=o;if("function"!=typeof o)throw new TypeError("Object is not disposable.");t&&(o=function(){try{t.call(e)}catch(r){return Promise.reject(r)}}),n.push({v:e,d:o,a:r})}else r&&n.push({d:e,a:r});return e}return{e:e,u:using.bind(null,!1),a:using.bind(null,!0),d:function(){var o,t=this.e,s=0;function next(){for(;o=n.pop();)try{if(!o.a&&1===s)return s=0,n.push(o),Promise.resolve().then(next);if(o.d){var r=o.d.call(o.v);if(o.a)return s|=2,Promise.resolve(r).then(next,err)}else s|=1}catch(r){return err(r)}if(1===s)return t!==e?Promise.reject(t):Promise.resolve();if(t!==e)throw t}function err(n){return t=t!==e?new r(n,t):n,next()}return next()}}}', { + globals: ["SuppressedError", "Error", "Object", "TypeError", "Symbol", "Promise"], + locals: { + _usingCtx: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_usingCtx", + dependencies: {} + }), + wrapAsyncGenerator: helper("7.0.0-beta.0", 'function _wrapAsyncGenerator(e){return function(){return new AsyncGenerator(e.apply(this,arguments))}}function AsyncGenerator(e){var r,t;function resume(r,t){try{var n=e[r](t),o=n.value,u=o instanceof OverloadYield;Promise.resolve(u?o.v:o).then((function(t){if(u){var i="return"===r?"return":"next";if(!o.k||t.done)return resume(i,t);t=e[i](t).value}settle(n.done?"return":"normal",t)}),(function(e){resume("throw",e)}))}catch(e){settle("throw",e)}}function settle(e,n){switch(e){case"return":r.resolve({value:n,done:!0});break;case"throw":r.reject(n);break;default:r.resolve({value:n,done:!1})}(r=r.next)?resume(r.key,r.arg):t=null}this._invoke=function(e,n){return new Promise((function(o,u){var i={key:e,arg:n,resolve:o,reject:u,next:null};t?t=t.next=i:(r=t=i,resume(e,n))}))},"function"!=typeof e.return&&(this.return=void 0)}AsyncGenerator.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},AsyncGenerator.prototype.next=function(e){return this._invoke("next",e)},AsyncGenerator.prototype.throw=function(e){return this._invoke("throw",e)},AsyncGenerator.prototype.return=function(e){return this._invoke("return",e)};', { + globals: ["Promise", "Symbol"], + locals: { + _wrapAsyncGenerator: ["body.0.id"], + AsyncGenerator: ["body.1.id", "body.0.body.body.0.argument.body.body.0.argument.callee", "body.2.expression.expressions.0.left.object.object", "body.2.expression.expressions.1.left.object.object", "body.2.expression.expressions.2.left.object.object", "body.2.expression.expressions.3.left.object.object"] + }, + exportBindingAssignments: [], + exportName: "_wrapAsyncGenerator", + dependencies: { + OverloadYield: ["body.1.body.body.1.body.body.0.block.body.0.declarations.2.init.right"] + } + }), + wrapNativeSuper: helper("7.0.0-beta.0", 'function _wrapNativeSuper(t){var r="function"==typeof Map?new Map:void 0;return _wrapNativeSuper=function(t){if(null===t||!isNativeFunction(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,Wrapper)}function Wrapper(){return construct(t,arguments,getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(t.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),setPrototypeOf(Wrapper,t)},_wrapNativeSuper(t)}', { + globals: ["Map", "TypeError", "Object"], + locals: { + _wrapNativeSuper: ["body.0.id", "body.0.body.body.1.argument.expressions.1.callee", "body.0.body.body.1.argument.expressions.0.left"] + }, + exportBindingAssignments: ["body.0.body.body.1.argument.expressions.0"], + exportName: "_wrapNativeSuper", + dependencies: { + getPrototypeOf: ["body.0.body.body.1.argument.expressions.0.right.body.body.3.body.body.0.argument.arguments.2.object.callee"], + setPrototypeOf: ["body.0.body.body.1.argument.expressions.0.right.body.body.4.argument.expressions.1.callee"], + isNativeFunction: ["body.0.body.body.1.argument.expressions.0.right.body.body.0.test.right.argument.callee"], + construct: ["body.0.body.body.1.argument.expressions.0.right.body.body.3.body.body.0.argument.callee"] + } + }), + wrapRegExp: helper("7.19.0", 'function _wrapRegExp(){_wrapRegExp=function(e,r){return new BabelRegExp(e,void 0,r)};var e=RegExp.prototype,r=new WeakMap;function BabelRegExp(e,t,p){var o=RegExp(e,t);return r.set(o,p||r.get(e)),setPrototypeOf(o,BabelRegExp.prototype)}function buildGroups(e,t){var p=r.get(t);return Object.keys(p).reduce((function(r,t){var o=p[t];if("number"==typeof o)r[t]=e[o];else{for(var i=0;void 0===e[o[i]]&&i+1<o.length;)i++;r[t]=e[o[i]]}return r}),Object.create(null))}return inherits(BabelRegExp,RegExp),BabelRegExp.prototype.exec=function(r){var t=e.exec.call(this,r);if(t){t.groups=buildGroups(t,this);var p=t.indices;p&&(p.groups=buildGroups(p,this))}return t},BabelRegExp.prototype[Symbol.replace]=function(t,p){if("string"==typeof p){var o=r.get(this);return e[Symbol.replace].call(this,t,p.replace(/\\$<([^>]+)(>|$)/g,(function(e,r,t){if(""===t)return e;var p=o[r];return Array.isArray(p)?"$"+p.join("$"):"number"==typeof p?"$"+p:""})))}if("function"==typeof p){var i=this;return e[Symbol.replace].call(this,t,(function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(buildGroups(e,i)),p.apply(this,e)}))}return e[Symbol.replace].call(this,t,p)},_wrapRegExp.apply(this,arguments)}', { + globals: ["RegExp", "WeakMap", "Object", "Symbol", "Array"], + locals: { + _wrapRegExp: ["body.0.id", "body.0.body.body.4.argument.expressions.3.callee.object", "body.0.body.body.0.expression.left"] + }, + exportBindingAssignments: ["body.0.body.body.0.expression"], + exportName: "_wrapRegExp", + dependencies: { + setPrototypeOf: ["body.0.body.body.2.body.body.1.argument.expressions.1.callee"], + inherits: ["body.0.body.body.4.argument.expressions.0.callee"] + } + }), + writeOnlyError: helper("7.12.13", "function _writeOnlyError(r){throw new TypeError('\"'+r+'\" is write-only')}", { + globals: ["TypeError"], + locals: { + _writeOnlyError: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_writeOnlyError", + dependencies: {} + }) +}; +{ + Object.assign(helpers, { + AwaitValue: helper("7.0.0-beta.0", "function _AwaitValue(t){this.wrapped=t}", { + globals: [], + locals: { + _AwaitValue: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_AwaitValue", + dependencies: {} + }), + applyDecs: helper("7.17.8", 'function old_createMetadataMethodsForProperty(e,t,a,r){return{getMetadata:function(o){old_assertNotFinished(r,"getMetadata"),old_assertMetadataKey(o);var i=e[o];if(void 0!==i)if(1===t){var n=i.public;if(void 0!==n)return n[a]}else if(2===t){var l=i.private;if(void 0!==l)return l.get(a)}else if(Object.hasOwnProperty.call(i,"constructor"))return i.constructor},setMetadata:function(o,i){old_assertNotFinished(r,"setMetadata"),old_assertMetadataKey(o);var n=e[o];if(void 0===n&&(n=e[o]={}),1===t){var l=n.public;void 0===l&&(l=n.public={}),l[a]=i}else if(2===t){var s=n.priv;void 0===s&&(s=n.private=new Map),s.set(a,i)}else n.constructor=i}}}function old_convertMetadataMapToFinal(e,t){var a=e[Symbol.metadata||Symbol.for("Symbol.metadata")],r=Object.getOwnPropertySymbols(t);if(0!==r.length){for(var o=0;o<r.length;o++){var i=r[o],n=t[i],l=a?a[i]:null,s=n.public,c=l?l.public:null;s&&c&&Object.setPrototypeOf(s,c);var d=n.private;if(d){var u=Array.from(d.values()),f=l?l.private:null;f&&(u=u.concat(f)),n.private=u}l&&Object.setPrototypeOf(n,l)}a&&Object.setPrototypeOf(t,a),e[Symbol.metadata||Symbol.for("Symbol.metadata")]=t}}function old_createAddInitializerMethod(e,t){return function(a){old_assertNotFinished(t,"addInitializer"),old_assertCallable(a,"An initializer"),e.push(a)}}function old_memberDec(e,t,a,r,o,i,n,l,s){var c;switch(i){case 1:c="accessor";break;case 2:c="method";break;case 3:c="getter";break;case 4:c="setter";break;default:c="field"}var d,u,f={kind:c,name:l?"#"+t:toPropertyKey(t),isStatic:n,isPrivate:l},p={v:!1};if(0!==i&&(f.addInitializer=old_createAddInitializerMethod(o,p)),l){d=2,u=Symbol(t);var v={};0===i?(v.get=a.get,v.set=a.set):2===i?v.get=function(){return a.value}:(1!==i&&3!==i||(v.get=function(){return a.get.call(this)}),1!==i&&4!==i||(v.set=function(e){a.set.call(this,e)})),f.access=v}else d=1,u=t;try{return e(s,Object.assign(f,old_createMetadataMethodsForProperty(r,d,u,p)))}finally{p.v=!0}}function old_assertNotFinished(e,t){if(e.v)throw Error("attempted to call "+t+" after decoration was finished")}function old_assertMetadataKey(e){if("symbol"!=typeof e)throw new TypeError("Metadata keys must be symbols, received: "+e)}function old_assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function old_assertValidReturnValue(e,t){var a=typeof t;if(1===e){if("object"!==a||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&old_assertCallable(t.get,"accessor.get"),void 0!==t.set&&old_assertCallable(t.set,"accessor.set"),void 0!==t.init&&old_assertCallable(t.init,"accessor.init"),void 0!==t.initializer&&old_assertCallable(t.initializer,"accessor.initializer")}else if("function"!==a)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function old_getInit(e){var t;return null==(t=e.init)&&(t=e.initializer)&&void 0!==console&&console.warn(".initializer has been renamed to .init as of March 2022"),t}function old_applyMemberDec(e,t,a,r,o,i,n,l,s){var c,d,u,f,p,v,y,h=a[0];if(n?(0===o||1===o?(c={get:a[3],set:a[4]},u="get"):3===o?(c={get:a[3]},u="get"):4===o?(c={set:a[3]},u="set"):c={value:a[3]},0!==o&&(1===o&&setFunctionName(a[4],"#"+r,"set"),setFunctionName(a[3],"#"+r,u))):0!==o&&(c=Object.getOwnPropertyDescriptor(t,r)),1===o?f={get:c.get,set:c.set}:2===o?f=c.value:3===o?f=c.get:4===o&&(f=c.set),"function"==typeof h)void 0!==(p=old_memberDec(h,r,c,l,s,o,i,n,f))&&(old_assertValidReturnValue(o,p),0===o?d=p:1===o?(d=old_getInit(p),v=p.get||f.get,y=p.set||f.set,f={get:v,set:y}):f=p);else for(var m=h.length-1;m>=0;m--){var b;void 0!==(p=old_memberDec(h[m],r,c,l,s,o,i,n,f))&&(old_assertValidReturnValue(o,p),0===o?b=p:1===o?(b=old_getInit(p),v=p.get||f.get,y=p.set||f.set,f={get:v,set:y}):f=p,void 0!==b&&(void 0===d?d=b:"function"==typeof d?d=[d,b]:d.push(b)))}if(0===o||1===o){if(void 0===d)d=function(e,t){return t};else if("function"!=typeof d){var g=d;d=function(e,t){for(var a=t,r=0;r<g.length;r++)a=g[r].call(e,a);return a}}else{var _=d;d=function(e,t){return _.call(e,t)}}e.push(d)}0!==o&&(1===o?(c.get=f.get,c.set=f.set):2===o?c.value=f:3===o?c.get=f:4===o&&(c.set=f),n?1===o?(e.push((function(e,t){return f.get.call(e,t)})),e.push((function(e,t){return f.set.call(e,t)}))):2===o?e.push(f):e.push((function(e,t){return f.call(e,t)})):Object.defineProperty(t,r,c))}function old_applyMemberDecs(e,t,a,r,o){for(var i,n,l=new Map,s=new Map,c=0;c<o.length;c++){var d=o[c];if(Array.isArray(d)){var u,f,p,v=d[1],y=d[2],h=d.length>3,m=v>=5;if(m?(u=t,f=r,0!=(v-=5)&&(p=n=n||[])):(u=t.prototype,f=a,0!==v&&(p=i=i||[])),0!==v&&!h){var b=m?s:l,g=b.get(y)||0;if(!0===g||3===g&&4!==v||4===g&&3!==v)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+y);!g&&v>2?b.set(y,v):b.set(y,!0)}old_applyMemberDec(e,u,d,y,v,m,h,f,p)}}old_pushInitializers(e,i),old_pushInitializers(e,n)}function old_pushInitializers(e,t){t&&e.push((function(e){for(var a=0;a<t.length;a++)t[a].call(e);return e}))}function old_applyClassDecs(e,t,a,r){if(r.length>0){for(var o=[],i=t,n=t.name,l=r.length-1;l>=0;l--){var s={v:!1};try{var c=Object.assign({kind:"class",name:n,addInitializer:old_createAddInitializerMethod(o,s)},old_createMetadataMethodsForProperty(a,0,n,s)),d=r[l](i,c)}finally{s.v=!0}void 0!==d&&(old_assertValidReturnValue(10,d),i=d)}e.push(i,(function(){for(var e=0;e<o.length;e++)o[e].call(i)}))}}function applyDecs(e,t,a){var r=[],o={},i={};return old_applyMemberDecs(r,e,i,o,t),old_convertMetadataMapToFinal(e.prototype,i),old_applyClassDecs(r,e,o,a),old_convertMetadataMapToFinal(e,o),r}', { + globals: ["Object", "Map", "Symbol", "Array", "Error", "TypeError", "console"], + locals: { + old_createMetadataMethodsForProperty: ["body.0.id", "body.3.body.body.4.block.body.0.argument.arguments.1.arguments.1.callee", "body.12.body.body.0.consequent.body.0.body.body.1.block.body.0.declarations.0.init.arguments.1.callee"], + old_convertMetadataMapToFinal: ["body.1.id", "body.13.body.body.1.argument.expressions.1.callee", "body.13.body.body.1.argument.expressions.3.callee"], + old_createAddInitializerMethod: ["body.2.id", "body.3.body.body.3.test.expressions.0.right.right.callee", "body.12.body.body.0.consequent.body.0.body.body.1.block.body.0.declarations.0.init.arguments.0.properties.2.value.callee"], + old_memberDec: ["body.3.id", "body.9.body.body.1.consequent.expression.left.right.right.callee", "body.9.body.body.1.alternate.body.body.1.expression.left.right.right.callee"], + old_assertNotFinished: ["body.4.id", "body.0.body.body.0.argument.properties.0.value.body.body.0.expression.expressions.0.callee", "body.0.body.body.0.argument.properties.1.value.body.body.0.expression.expressions.0.callee", "body.2.body.body.0.argument.body.body.0.expression.expressions.0.callee"], + old_assertMetadataKey: ["body.5.id", "body.0.body.body.0.argument.properties.0.value.body.body.0.expression.expressions.1.callee", "body.0.body.body.0.argument.properties.1.value.body.body.0.expression.expressions.1.callee"], + old_assertCallable: ["body.6.id", "body.2.body.body.0.argument.body.body.0.expression.expressions.1.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.0.right.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.1.right.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.2.right.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.3.right.callee"], + old_assertValidReturnValue: ["body.7.id", "body.9.body.body.1.consequent.expression.right.expressions.0.callee", "body.9.body.body.1.alternate.body.body.1.expression.right.expressions.0.callee", "body.12.body.body.0.consequent.body.0.body.body.2.expression.right.expressions.0.callee"], + old_getInit: ["body.8.id", "body.9.body.body.1.consequent.expression.right.expressions.1.alternate.consequent.expressions.0.right.callee", "body.9.body.body.1.alternate.body.body.1.expression.right.expressions.1.alternate.consequent.expressions.0.right.callee"], + old_applyMemberDec: ["body.9.id", "body.10.body.body.0.body.body.1.consequent.body.2.expression.callee"], + old_applyMemberDecs: ["body.10.id", "body.13.body.body.1.argument.expressions.0.callee"], + old_pushInitializers: ["body.11.id", "body.10.body.body.1.expression.expressions.0.callee", "body.10.body.body.1.expression.expressions.1.callee"], + old_applyClassDecs: ["body.12.id", "body.13.body.body.1.argument.expressions.2.callee"], + applyDecs: ["body.13.id"] + }, + exportBindingAssignments: [], + exportName: "applyDecs", + dependencies: { + setFunctionName: ["body.9.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee", "body.9.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee"], + toPropertyKey: ["body.3.body.body.2.declarations.2.init.properties.1.value.alternate.callee"] + } + }), + applyDecs2203: helper("7.19.0", 'function applyDecs2203Factory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),assertCallable(r,"An initializer"),e.push(r)}}function memberDec(e,t,r,a,n,i,s,o){var c;switch(n){case 1:c="accessor";break;case 2:c="method";break;case 3:c="getter";break;case 4:c="setter";break;default:c="field"}var l,u,f={kind:c,name:s?"#"+t:t,static:i,private:s},p={v:!1};0!==n&&(f.addInitializer=createAddInitializerMethod(a,p)),0===n?s?(l=r.get,u=r.set):(l=function(){return this[t]},u=function(e){this[t]=e}):2===n?l=function(){return r.value}:(1!==n&&3!==n||(l=function(){return r.get.call(this)}),1!==n&&4!==n||(u=function(e){r.set.call(this,e)})),f.access=l&&u?{get:l,set:u}:l?{get:l}:{set:u};try{return e(o,f)}finally{p.v=!0}}function assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&assertCallable(t.get,"accessor.get"),void 0!==t.set&&assertCallable(t.set,"accessor.set"),void 0!==t.init&&assertCallable(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function applyMemberDec(e,t,r,a,n,i,s,o){var c,l,u,f,p,d,h=r[0];if(s?c=0===n||1===n?{get:r[3],set:r[4]}:3===n?{get:r[3]}:4===n?{set:r[3]}:{value:r[3]}:0!==n&&(c=Object.getOwnPropertyDescriptor(t,a)),1===n?u={get:c.get,set:c.set}:2===n?u=c.value:3===n?u=c.get:4===n&&(u=c.set),"function"==typeof h)void 0!==(f=memberDec(h,a,c,o,n,i,s,u))&&(assertValidReturnValue(n,f),0===n?l=f:1===n?(l=f.init,p=f.get||u.get,d=f.set||u.set,u={get:p,set:d}):u=f);else for(var v=h.length-1;v>=0;v--){var g;void 0!==(f=memberDec(h[v],a,c,o,n,i,s,u))&&(assertValidReturnValue(n,f),0===n?g=f:1===n?(g=f.init,p=f.get||u.get,d=f.set||u.set,u={get:p,set:d}):u=f,void 0!==g&&(void 0===l?l=g:"function"==typeof l?l=[l,g]:l.push(g)))}if(0===n||1===n){if(void 0===l)l=function(e,t){return t};else if("function"!=typeof l){var y=l;l=function(e,t){for(var r=t,a=0;a<y.length;a++)r=y[a].call(e,r);return r}}else{var m=l;l=function(e,t){return m.call(e,t)}}e.push(l)}0!==n&&(1===n?(c.get=u.get,c.set=u.set):2===n?c.value=u:3===n?c.get=u:4===n&&(c.set=u),s?1===n?(e.push((function(e,t){return u.get.call(e,t)})),e.push((function(e,t){return u.set.call(e,t)}))):2===n?e.push(u):e.push((function(e,t){return u.call(e,t)})):Object.defineProperty(t,a,c))}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r){var a=[];return function(e,t,r){for(var a,n,i=new Map,s=new Map,o=0;o<r.length;o++){var c=r[o];if(Array.isArray(c)){var l,u,f=c[1],p=c[2],d=c.length>3,h=f>=5;if(h?(l=t,0!=(f-=5)&&(u=n=n||[])):(l=t.prototype,0!==f&&(u=a=a||[])),0!==f&&!d){var v=h?s:i,g=v.get(p)||0;if(!0===g||3===g&&4!==f||4===g&&3!==f)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+p);!g&&f>2?v.set(p,f):v.set(p,!0)}applyMemberDec(e,l,c,p,f,h,d,u)}}pushInitializers(e,a),pushInitializers(e,n)}(a,e,t),function(e,t,r){if(r.length>0){for(var a=[],n=t,i=t.name,s=r.length-1;s>=0;s--){var o={v:!1};try{var c=r[s](n,{kind:"class",name:i,addInitializer:createAddInitializerMethod(a,o)})}finally{o.v=!0}void 0!==c&&(assertValidReturnValue(10,c),n=c)}e.push(n,(function(){for(var e=0;e<a.length;e++)a[e].call(n)}))}}(a,e,r),a}}var applyDecs2203Impl;function applyDecs2203(e,t,r){return(applyDecs2203Impl=applyDecs2203Impl||applyDecs2203Factory())(e,t,r)}', { + globals: ["Error", "TypeError", "Object", "Map", "Array"], + locals: { + applyDecs2203Factory: ["body.0.id", "body.2.body.body.0.argument.callee.right.right.callee"], + applyDecs2203Impl: ["body.1.declarations.0.id", "body.2.body.body.0.argument.callee.right.left", "body.2.body.body.0.argument.callee.left"], + applyDecs2203: ["body.2.id"] + }, + exportBindingAssignments: [], + exportName: "applyDecs2203", + dependencies: {} + }), + applyDecs2203R: helper("7.20.0", 'function applyDecs2203RFactory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),assertCallable(r,"An initializer"),e.push(r)}}function memberDec(e,t,r,n,a,i,o,s){var c;switch(a){case 1:c="accessor";break;case 2:c="method";break;case 3:c="getter";break;case 4:c="setter";break;default:c="field"}var l,u,f={kind:c,name:o?"#"+t:toPropertyKey(t),static:i,private:o},p={v:!1};0!==a&&(f.addInitializer=createAddInitializerMethod(n,p)),0===a?o?(l=r.get,u=r.set):(l=function(){return this[t]},u=function(e){this[t]=e}):2===a?l=function(){return r.value}:(1!==a&&3!==a||(l=function(){return r.get.call(this)}),1!==a&&4!==a||(u=function(e){r.set.call(this,e)})),f.access=l&&u?{get:l,set:u}:l?{get:l}:{set:u};try{return e(s,f)}finally{p.v=!0}}function assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&assertCallable(t.get,"accessor.get"),void 0!==t.set&&assertCallable(t.set,"accessor.set"),void 0!==t.init&&assertCallable(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function applyMemberDec(e,t,r,n,a,i,o,s){var c,l,u,f,p,d,h,v=r[0];if(o?(0===a||1===a?(c={get:r[3],set:r[4]},u="get"):3===a?(c={get:r[3]},u="get"):4===a?(c={set:r[3]},u="set"):c={value:r[3]},0!==a&&(1===a&&setFunctionName(r[4],"#"+n,"set"),setFunctionName(r[3],"#"+n,u))):0!==a&&(c=Object.getOwnPropertyDescriptor(t,n)),1===a?f={get:c.get,set:c.set}:2===a?f=c.value:3===a?f=c.get:4===a&&(f=c.set),"function"==typeof v)void 0!==(p=memberDec(v,n,c,s,a,i,o,f))&&(assertValidReturnValue(a,p),0===a?l=p:1===a?(l=p.init,d=p.get||f.get,h=p.set||f.set,f={get:d,set:h}):f=p);else for(var g=v.length-1;g>=0;g--){var y;void 0!==(p=memberDec(v[g],n,c,s,a,i,o,f))&&(assertValidReturnValue(a,p),0===a?y=p:1===a?(y=p.init,d=p.get||f.get,h=p.set||f.set,f={get:d,set:h}):f=p,void 0!==y&&(void 0===l?l=y:"function"==typeof l?l=[l,y]:l.push(y)))}if(0===a||1===a){if(void 0===l)l=function(e,t){return t};else if("function"!=typeof l){var m=l;l=function(e,t){for(var r=t,n=0;n<m.length;n++)r=m[n].call(e,r);return r}}else{var b=l;l=function(e,t){return b.call(e,t)}}e.push(l)}0!==a&&(1===a?(c.get=f.get,c.set=f.set):2===a?c.value=f:3===a?c.get=f:4===a&&(c.set=f),o?1===a?(e.push((function(e,t){return f.get.call(e,t)})),e.push((function(e,t){return f.set.call(e,t)}))):2===a?e.push(f):e.push((function(e,t){return f.call(e,t)})):Object.defineProperty(t,n,c))}function applyMemberDecs(e,t){for(var r,n,a=[],i=new Map,o=new Map,s=0;s<t.length;s++){var c=t[s];if(Array.isArray(c)){var l,u,f=c[1],p=c[2],d=c.length>3,h=f>=5;if(h?(l=e,0!=(f-=5)&&(u=n=n||[])):(l=e.prototype,0!==f&&(u=r=r||[])),0!==f&&!d){var v=h?o:i,g=v.get(p)||0;if(!0===g||3===g&&4!==f||4===g&&3!==f)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+p);!g&&f>2?v.set(p,f):v.set(p,!0)}applyMemberDec(a,l,c,p,f,h,d,u)}}return pushInitializers(a,r),pushInitializers(a,n),a}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r){return{e:applyMemberDecs(e,t),get c(){return function(e,t){if(t.length>0){for(var r=[],n=e,a=e.name,i=t.length-1;i>=0;i--){var o={v:!1};try{var s=t[i](n,{kind:"class",name:a,addInitializer:createAddInitializerMethod(r,o)})}finally{o.v=!0}void 0!==s&&(assertValidReturnValue(10,s),n=s)}return[n,function(){for(var e=0;e<r.length;e++)r[e].call(n)}]}}(e,r)}}}}function applyDecs2203R(e,t,r){return(applyDecs2203R=applyDecs2203RFactory())(e,t,r)}', { + globals: ["Error", "TypeError", "Object", "Map", "Array"], + locals: { + applyDecs2203RFactory: ["body.0.id", "body.1.body.body.0.argument.callee.right.callee"], + applyDecs2203R: ["body.1.id", "body.1.body.body.0.argument.callee.left"] + }, + exportBindingAssignments: ["body.1.body.body.0.argument.callee"], + exportName: "applyDecs2203R", + dependencies: { + setFunctionName: ["body.0.body.body.4.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee", "body.0.body.body.4.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee"], + toPropertyKey: ["body.0.body.body.1.body.body.2.declarations.2.init.properties.1.value.alternate.callee"] + } + }), + applyDecs2301: helper("7.21.0", 'function applyDecs2301Factory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),assertCallable(r,"An initializer"),e.push(r)}}function assertInstanceIfPrivate(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function memberDec(e,t,r,n,a,i,s,o,c){var u;switch(a){case 1:u="accessor";break;case 2:u="method";break;case 3:u="getter";break;case 4:u="setter";break;default:u="field"}var l,f,p={kind:u,name:s?"#"+t:toPropertyKey(t),static:i,private:s},d={v:!1};if(0!==a&&(p.addInitializer=createAddInitializerMethod(n,d)),s||0!==a&&2!==a)if(2===a)l=function(e){return assertInstanceIfPrivate(c,e),r.value};else{var h=0===a||1===a;(h||3===a)&&(l=s?function(e){return assertInstanceIfPrivate(c,e),r.get.call(e)}:function(e){return r.get.call(e)}),(h||4===a)&&(f=s?function(e,t){assertInstanceIfPrivate(c,e),r.set.call(e,t)}:function(e,t){r.set.call(e,t)})}else l=function(e){return e[t]},0===a&&(f=function(e,r){e[t]=r});var v=s?c.bind():function(e){return t in e};p.access=l&&f?{get:l,set:f,has:v}:l?{get:l,has:v}:{set:f,has:v};try{return e(o,p)}finally{d.v=!0}}function assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&assertCallable(t.get,"accessor.get"),void 0!==t.set&&assertCallable(t.set,"accessor.set"),void 0!==t.init&&assertCallable(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function curryThis2(e){return function(t){e(this,t)}}function applyMemberDec(e,t,r,n,a,i,s,o,c){var u,l,f,p,d,h,v,y,g=r[0];if(s?(0===a||1===a?(u={get:(d=r[3],function(){return d(this)}),set:curryThis2(r[4])},f="get"):3===a?(u={get:r[3]},f="get"):4===a?(u={set:r[3]},f="set"):u={value:r[3]},0!==a&&(1===a&&setFunctionName(u.set,"#"+n,"set"),setFunctionName(u[f||"value"],"#"+n,f))):0!==a&&(u=Object.getOwnPropertyDescriptor(t,n)),1===a?p={get:u.get,set:u.set}:2===a?p=u.value:3===a?p=u.get:4===a&&(p=u.set),"function"==typeof g)void 0!==(h=memberDec(g,n,u,o,a,i,s,p,c))&&(assertValidReturnValue(a,h),0===a?l=h:1===a?(l=h.init,v=h.get||p.get,y=h.set||p.set,p={get:v,set:y}):p=h);else for(var m=g.length-1;m>=0;m--){var b;void 0!==(h=memberDec(g[m],n,u,o,a,i,s,p,c))&&(assertValidReturnValue(a,h),0===a?b=h:1===a?(b=h.init,v=h.get||p.get,y=h.set||p.set,p={get:v,set:y}):p=h,void 0!==b&&(void 0===l?l=b:"function"==typeof l?l=[l,b]:l.push(b)))}if(0===a||1===a){if(void 0===l)l=function(e,t){return t};else if("function"!=typeof l){var I=l;l=function(e,t){for(var r=t,n=0;n<I.length;n++)r=I[n].call(e,r);return r}}else{var w=l;l=function(e,t){return w.call(e,t)}}e.push(l)}0!==a&&(1===a?(u.get=p.get,u.set=p.set):2===a?u.value=p:3===a?u.get=p:4===a&&(u.set=p),s?1===a?(e.push((function(e,t){return p.get.call(e,t)})),e.push((function(e,t){return p.set.call(e,t)}))):2===a?e.push(p):e.push((function(e,t){return p.call(e,t)})):Object.defineProperty(t,n,u))}function applyMemberDecs(e,t,r){for(var n,a,i,s=[],o=new Map,c=new Map,u=0;u<t.length;u++){var l=t[u];if(Array.isArray(l)){var f,p,d=l[1],h=l[2],v=l.length>3,y=d>=5,g=r;if(y?(f=e,0!=(d-=5)&&(p=a=a||[]),v&&!i&&(i=function(t){return checkInRHS(t)===e}),g=i):(f=e.prototype,0!==d&&(p=n=n||[])),0!==d&&!v){var m=y?c:o,b=m.get(h)||0;if(!0===b||3===b&&4!==d||4===b&&3!==d)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+h);!b&&d>2?m.set(h,d):m.set(h,!0)}applyMemberDec(s,f,l,h,d,y,v,p,g)}}return pushInitializers(s,n),pushInitializers(s,a),s}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r,n){return{e:applyMemberDecs(e,t,n),get c(){return function(e,t){if(t.length>0){for(var r=[],n=e,a=e.name,i=t.length-1;i>=0;i--){var s={v:!1};try{var o=t[i](n,{kind:"class",name:a,addInitializer:createAddInitializerMethod(r,s)})}finally{s.v=!0}void 0!==o&&(assertValidReturnValue(10,o),n=o)}return[n,function(){for(var e=0;e<r.length;e++)r[e].call(n)}]}}(e,r)}}}}function applyDecs2301(e,t,r,n){return(applyDecs2301=applyDecs2301Factory())(e,t,r,n)}', { + globals: ["Error", "TypeError", "Object", "Map", "Array"], + locals: { + applyDecs2301Factory: ["body.0.id", "body.1.body.body.0.argument.callee.right.callee"], + applyDecs2301: ["body.1.id", "body.1.body.body.0.argument.callee.left"] + }, + exportBindingAssignments: ["body.1.body.body.0.argument.callee"], + exportName: "applyDecs2301", + dependencies: { + checkInRHS: ["body.0.body.body.7.body.body.0.body.body.1.consequent.body.1.test.expressions.0.consequent.expressions.2.right.right.body.body.0.argument.left.callee"], + setFunctionName: ["body.0.body.body.6.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee", "body.0.body.body.6.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee"], + toPropertyKey: ["body.0.body.body.2.body.body.2.declarations.2.init.properties.1.value.alternate.callee"] + } + }), + applyDecs2305: helper("7.21.0", 'function applyDecs2305(e,t,r,n,o,a){function i(e,t,r){return function(n,o){return r&&r(n),e[t].call(n,o)}}function c(e,t){for(var r=0;r<e.length;r++)e[r].call(t);return t}function s(e,t,r,n){if("function"!=typeof e&&(n||void 0!==e))throw new TypeError(t+" must "+(r||"be")+" a function"+(n?"":" or undefined"));return e}function applyDec(e,t,r,n,o,a,c,u,l,f,p,d,h){function m(e){if(!h(e))throw new TypeError("Attempted to access private element on non-instance")}var y,v=t[0],g=t[3],b=!u;if(!b){r||Array.isArray(v)||(v=[v]);var w={},S=[],A=3===o?"get":4===o||d?"set":"value";f?(p||d?w={get:setFunctionName((function(){return g(this)}),n,"get"),set:function(e){t[4](this,e)}}:w[A]=g,p||setFunctionName(w[A],n,2===o?"":A)):p||(w=Object.getOwnPropertyDescriptor(e,n))}for(var P=e,j=v.length-1;j>=0;j-=r?2:1){var D=v[j],E=r?v[j-1]:void 0,I={},O={kind:["field","accessor","method","getter","setter","class"][o],name:n,metadata:a,addInitializer:function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished");s(t,"An initializer","be",!0),c.push(t)}.bind(null,I)};try{if(b)(y=s(D.call(E,P,O),"class decorators","return"))&&(P=y);else{var k,F;O.static=l,O.private=f,f?2===o?k=function(e){return m(e),w.value}:(o<4&&(k=i(w,"get",m)),3!==o&&(F=i(w,"set",m))):(k=function(e){return e[n]},(o<2||4===o)&&(F=function(e,t){e[n]=t}));var N=O.access={has:f?h.bind():function(e){return n in e}};if(k&&(N.get=k),F&&(N.set=F),P=D.call(E,d?{get:w.get,set:w.set}:w[A],O),d){if("object"==typeof P&&P)(y=s(P.get,"accessor.get"))&&(w.get=y),(y=s(P.set,"accessor.set"))&&(w.set=y),(y=s(P.init,"accessor.init"))&&S.push(y);else if(void 0!==P)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0")}else s(P,(p?"field":"method")+" decorators","return")&&(p?S.push(P):w[A]=P)}}finally{I.v=!0}}return(p||d)&&u.push((function(e,t){for(var r=S.length-1;r>=0;r--)t=S[r].call(e,t);return t})),p||b||(f?d?u.push(i(w,"get"),i(w,"set")):u.push(2===o?w[A]:i.call.bind(w[A])):Object.defineProperty(e,n,w)),P}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for("Symbol.metadata"),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var l=a[Symbol.metadata||Symbol.for("Symbol.metadata")];var f=Object.create(null==l?null:l),p=function(e,t,r,n){var o,a,i=[],s=function(t){return checkInRHS(t)===e},u=new Map;function l(e){e&&i.push(c.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var d=p[1],h=p[2],m=p.length>3,y=16&d,v=!!(8&d),g=0==(d&=7),b=h+"/"+v;if(!g&&!m){var w=u.get(b);if(!0===w||3===w&&4!==d||4===w&&3!==d)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+h);u.set(b,!(d>2)||d)}applyDec(v?e:e.prototype,p,y,m?"#"+h:toPropertyKey(h),d,n,v?a=a||[]:o=o||[],i,v,m,g,1===d,v&&m?s:r)}}return l(o),l(a),i}(e,t,o,f);return r.length||u(e,f),{e:p,get c(){var t=[];return r.length&&[u(applyDec(e,[r],n,e.name,5,f,t),f),c.bind(null,t,e)]}}}', { + globals: ["TypeError", "Array", "Object", "Error", "Symbol", "Map"], + locals: { + applyDecs2305: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "applyDecs2305", + dependencies: { + checkInRHS: ["body.0.body.body.6.declarations.1.init.callee.body.body.0.declarations.3.init.body.body.0.argument.left.callee"], + setFunctionName: ["body.0.body.body.3.body.body.2.consequent.body.2.expression.consequent.expressions.0.consequent.right.properties.0.value.callee", "body.0.body.body.3.body.body.2.consequent.body.2.expression.consequent.expressions.1.right.callee"], + toPropertyKey: ["body.0.body.body.6.declarations.1.init.callee.body.body.2.body.body.1.consequent.body.2.expression.arguments.3.alternate.callee"] + } + }), + classApplyDescriptorDestructureSet: helper("7.13.10", 'function _classApplyDescriptorDestructureSet(e,t){if(t.set)return"__destrObj"in t||(t.__destrObj={set value(r){t.set.call(e,r)}}),t.__destrObj;if(!t.writable)throw new TypeError("attempted to set read only private field");return t}', { + globals: ["TypeError"], + locals: { + _classApplyDescriptorDestructureSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classApplyDescriptorDestructureSet", + dependencies: {} + }), + classApplyDescriptorGet: helper("7.13.10", "function _classApplyDescriptorGet(e,t){return t.get?t.get.call(e):t.value}", { + globals: [], + locals: { + _classApplyDescriptorGet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classApplyDescriptorGet", + dependencies: {} + }), + classApplyDescriptorSet: helper("7.13.10", 'function _classApplyDescriptorSet(e,t,l){if(t.set)t.set.call(e,l);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=l}}', { + globals: ["TypeError"], + locals: { + _classApplyDescriptorSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classApplyDescriptorSet", + dependencies: {} + }), + classCheckPrivateStaticAccess: helper("7.13.10", "function _classCheckPrivateStaticAccess(s,a,r){return assertClassBrand(a,s,r)}", { + globals: [], + locals: { + _classCheckPrivateStaticAccess: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classCheckPrivateStaticAccess", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.callee"] + } + }), + classCheckPrivateStaticFieldDescriptor: helper("7.13.10", 'function _classCheckPrivateStaticFieldDescriptor(t,e){if(void 0===t)throw new TypeError("attempted to "+e+" private static field before its declaration")}', { + globals: ["TypeError"], + locals: { + _classCheckPrivateStaticFieldDescriptor: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classCheckPrivateStaticFieldDescriptor", + dependencies: {} + }), + classExtractFieldDescriptor: helper("7.13.10", "function _classExtractFieldDescriptor(e,t){return classPrivateFieldGet2(t,e)}", { + globals: [], + locals: { + _classExtractFieldDescriptor: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classExtractFieldDescriptor", + dependencies: { + classPrivateFieldGet2: ["body.0.body.body.0.argument.callee"] + } + }), + classPrivateFieldDestructureSet: helper("7.4.4", "function _classPrivateFieldDestructureSet(e,t){var r=classPrivateFieldGet2(t,e);return classApplyDescriptorDestructureSet(e,r)}", { + globals: [], + locals: { + _classPrivateFieldDestructureSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldDestructureSet", + dependencies: { + classApplyDescriptorDestructureSet: ["body.0.body.body.1.argument.callee"], + classPrivateFieldGet2: ["body.0.body.body.0.declarations.0.init.callee"] + } + }), + classPrivateFieldGet: helper("7.0.0-beta.0", "function _classPrivateFieldGet(e,t){var r=classPrivateFieldGet2(t,e);return classApplyDescriptorGet(e,r)}", { + globals: [], + locals: { + _classPrivateFieldGet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldGet", + dependencies: { + classApplyDescriptorGet: ["body.0.body.body.1.argument.callee"], + classPrivateFieldGet2: ["body.0.body.body.0.declarations.0.init.callee"] + } + }), + classPrivateFieldSet: helper("7.0.0-beta.0", "function _classPrivateFieldSet(e,t,r){var s=classPrivateFieldGet2(t,e);return classApplyDescriptorSet(e,s,r),r}", { + globals: [], + locals: { + _classPrivateFieldSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateFieldSet", + dependencies: { + classApplyDescriptorSet: ["body.0.body.body.1.argument.expressions.0.callee"], + classPrivateFieldGet2: ["body.0.body.body.0.declarations.0.init.callee"] + } + }), + classPrivateMethodGet: helper("7.1.6", "function _classPrivateMethodGet(s,a,r){return assertClassBrand(a,s),r}", { + globals: [], + locals: { + _classPrivateMethodGet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateMethodGet", + dependencies: { + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"] + } + }), + classPrivateMethodSet: helper("7.1.6", 'function _classPrivateMethodSet(){throw new TypeError("attempted to reassign private method")}', { + globals: ["TypeError"], + locals: { + _classPrivateMethodSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classPrivateMethodSet", + dependencies: {} + }), + classStaticPrivateFieldDestructureSet: helper("7.13.10", 'function _classStaticPrivateFieldDestructureSet(t,r,s){return assertClassBrand(r,t),classCheckPrivateStaticFieldDescriptor(s,"set"),classApplyDescriptorDestructureSet(t,s)}', { + globals: [], + locals: { + _classStaticPrivateFieldDestructureSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classStaticPrivateFieldDestructureSet", + dependencies: { + classApplyDescriptorDestructureSet: ["body.0.body.body.0.argument.expressions.2.callee"], + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"], + classCheckPrivateStaticFieldDescriptor: ["body.0.body.body.0.argument.expressions.1.callee"] + } + }), + classStaticPrivateFieldSpecGet: helper("7.0.2", 'function _classStaticPrivateFieldSpecGet(t,s,r){return assertClassBrand(s,t),classCheckPrivateStaticFieldDescriptor(r,"get"),classApplyDescriptorGet(t,r)}', { + globals: [], + locals: { + _classStaticPrivateFieldSpecGet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classStaticPrivateFieldSpecGet", + dependencies: { + classApplyDescriptorGet: ["body.0.body.body.0.argument.expressions.2.callee"], + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"], + classCheckPrivateStaticFieldDescriptor: ["body.0.body.body.0.argument.expressions.1.callee"] + } + }), + classStaticPrivateFieldSpecSet: helper("7.0.2", 'function _classStaticPrivateFieldSpecSet(s,t,r,e){return assertClassBrand(t,s),classCheckPrivateStaticFieldDescriptor(r,"set"),classApplyDescriptorSet(s,r,e),e}', { + globals: [], + locals: { + _classStaticPrivateFieldSpecSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classStaticPrivateFieldSpecSet", + dependencies: { + classApplyDescriptorSet: ["body.0.body.body.0.argument.expressions.2.callee"], + assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"], + classCheckPrivateStaticFieldDescriptor: ["body.0.body.body.0.argument.expressions.1.callee"] + } + }), + classStaticPrivateMethodSet: helper("7.3.2", 'function _classStaticPrivateMethodSet(){throw new TypeError("attempted to set read only static private field")}', { + globals: ["TypeError"], + locals: { + _classStaticPrivateMethodSet: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_classStaticPrivateMethodSet", + dependencies: {} + }), + defineEnumerableProperties: helper("7.0.0-beta.0", 'function _defineEnumerableProperties(e,r){for(var t in r){var n=r[t];n.configurable=n.enumerable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,t,n)}if(Object.getOwnPropertySymbols)for(var a=Object.getOwnPropertySymbols(r),b=0;b<a.length;b++){var i=a[b];(n=r[i]).configurable=n.enumerable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i,n)}return e}', { + globals: ["Object"], + locals: { + _defineEnumerableProperties: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_defineEnumerableProperties", + dependencies: {} + }), + dispose: helper("7.22.0", 'function dispose_SuppressedError(r,e){return"undefined"!=typeof SuppressedError?dispose_SuppressedError=SuppressedError:(dispose_SuppressedError=function(r,e){this.suppressed=e,this.error=r,this.stack=Error().stack},dispose_SuppressedError.prototype=Object.create(Error.prototype,{constructor:{value:dispose_SuppressedError,writable:!0,configurable:!0}})),new dispose_SuppressedError(r,e)}function _dispose(r,e,s){function next(){for(;r.length>0;)try{var o=r.pop(),p=o.d.call(o.v);if(o.a)return Promise.resolve(p).then(next,err)}catch(r){return err(r)}if(s)throw e}function err(r){return e=s?new dispose_SuppressedError(e,r):r,s=!0,next()}return next()}', { + globals: ["SuppressedError", "Error", "Object", "Promise"], + locals: { + dispose_SuppressedError: ["body.0.id", "body.0.body.body.0.argument.expressions.0.alternate.expressions.1.left.object", "body.0.body.body.0.argument.expressions.0.alternate.expressions.1.right.arguments.1.properties.0.value.properties.0.value", "body.0.body.body.0.argument.expressions.1.callee", "body.1.body.body.1.body.body.0.argument.expressions.0.right.consequent.callee", "body.0.body.body.0.argument.expressions.0.consequent.left", "body.0.body.body.0.argument.expressions.0.alternate.expressions.0.left"], + _dispose: ["body.1.id"] + }, + exportBindingAssignments: [], + exportName: "_dispose", + dependencies: {} + }), + objectSpread: helper("7.0.0-beta.0", 'function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?Object(arguments[r]):{},o=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&o.push.apply(o,Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.forEach((function(r){defineProperty(e,r,t[r])}))}return e}', { + globals: ["Object"], + locals: { + _objectSpread: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_objectSpread", + dependencies: { + defineProperty: ["body.0.body.body.0.body.body.1.expression.expressions.1.arguments.0.body.body.0.expression.callee"] + } + }), + using: helper("7.22.0", 'function _using(o,n,e){if(null==n)return n;if(Object(n)!==n)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(e)var r=n[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(null==r&&(r=n[Symbol.dispose||Symbol.for("Symbol.dispose")]),"function"!=typeof r)throw new TypeError("Property [Symbol.dispose] is not a function.");return o.push({v:n,d:r,a:e}),n}', { + globals: ["Object", "TypeError", "Symbol"], + locals: { + _using: ["body.0.id"] + }, + exportBindingAssignments: [], + exportName: "_using", + dependencies: {} + }) + }); +} + +//# sourceMappingURL=helpers-generated.js.map + + +/***/ }), + +/***/ 71475: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +exports.get = get; +exports.getDependencies = getDependencies; +exports.list = void 0; +exports.minVersion = minVersion; +var _t = __nccwpck_require__(16535); +var _helpersGenerated = __nccwpck_require__(21214); +const { + cloneNode, + identifier +} = _t; +function deep(obj, path, value) { + try { + const parts = path.split("."); + let last = parts.shift(); + while (parts.length > 0) { + obj = obj[last]; + last = parts.shift(); + } + if (arguments.length > 2) { + obj[last] = value; + } else { + return obj[last]; + } + } catch (e) { + e.message += ` (when accessing ${path})`; + throw e; + } +} +function permuteHelperAST(ast, metadata, bindingName, localBindings, getDependency, adjustAst) { + const { + locals, + dependencies, + exportBindingAssignments, + exportName + } = metadata; + const bindings = new Set(localBindings || []); + if (bindingName) bindings.add(bindingName); + for (const [name, paths] of (Object.entries || (o => Object.keys(o).map(k => [k, o[k]])))(locals)) { + let newName = name; + if (bindingName && name === exportName) { + newName = bindingName; + } else { + while (bindings.has(newName)) newName = "_" + newName; + } + if (newName !== name) { + for (const path of paths) { + deep(ast, path, identifier(newName)); + } + } + } + for (const [name, paths] of (Object.entries || (o => Object.keys(o).map(k => [k, o[k]])))(dependencies)) { + const ref = typeof getDependency === "function" && getDependency(name) || identifier(name); + for (const path of paths) { + deep(ast, path, cloneNode(ref)); + } + } + adjustAst == null || adjustAst(ast, exportName, map => { + exportBindingAssignments.forEach(p => deep(ast, p, map(deep(ast, p)))); + }); +} +const helperData = Object.create(null); +function loadHelper(name) { + if (!helperData[name]) { + const helper = _helpersGenerated.default[name]; + if (!helper) { + throw Object.assign(new ReferenceError(`Unknown helper ${name}`), { + code: "BABEL_HELPER_UNKNOWN", + helper: name + }); + } + helperData[name] = { + minVersion: helper.minVersion, + build(getDependency, bindingName, localBindings, adjustAst) { + const ast = helper.ast(); + permuteHelperAST(ast, helper.metadata, bindingName, localBindings, getDependency, adjustAst); + return { + nodes: ast.body, + globals: helper.metadata.globals + }; + }, + getDependencies() { + return Object.keys(helper.metadata.dependencies); + } + }; + } + return helperData[name]; +} +function get(name, getDependency, bindingName, localBindings, adjustAst) { + { + if (typeof bindingName === "object") { + const id = bindingName; + if ((id == null ? void 0 : id.type) === "Identifier") { + bindingName = id.name; + } else { + bindingName = undefined; + } + } + } + return loadHelper(name).build(getDependency, bindingName, localBindings, adjustAst); +} +function minVersion(name) { + return loadHelper(name).minVersion; +} +function getDependencies(name) { + return loadHelper(name).getDependencies(); +} +{ + exports.ensure = name => { + loadHelper(name); + }; +} +const list = exports.list = Object.keys(_helpersGenerated.default).map(name => name.replace(/^_/, "")); +var _default = exports["default"] = get; + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 5429: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; + } + return t; +} +class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } +} +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } +} +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); +} +const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; +var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } +}; +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; +const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type]; +var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + DynamicImportPhaseRequiresImportExpressions: ({ + phase + }) => `'import.${phase}(...)' can only be parsed when using the 'createImportExpressions' option.`, + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArity: `\`import()\` requires exactly one or two arguments.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationExport: "Using declaration cannot be exported.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}; +var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." +}; +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = Object.assign({ + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.` +}, { + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' +}); +const _excluded = ["message"]; +function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); +} +function toParseErrorConstructor({ + toMessage, + code, + reasonCode, + syntaxPlugin +}) { + const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins"; + { + const oldReasonCodes = { + AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter", + AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference", + SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter", + SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter", + SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType" + }; + if (oldReasonCodes[reasonCode]) { + reasonCode = oldReasonCodes[reasonCode]; + } + } + return function constructor(loc, details) { + const error = new SyntaxError(); + error.code = code; + error.reasonCode = reasonCode; + error.loc = loc; + error.pos = loc.index; + error.syntaxPlugin = syntaxPlugin; + if (hasMissingPlugin) { + error.missingPlugin = details.missingPlugin; + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details)); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref, + rest = _objectWithoutPropertiesLoose(_ref, _excluded); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; +} +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); +function createDefaultOptions() { + return { + sourceType: "script", + sourceFilename: undefined, + startIndex: 0, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + allowYieldOutsideFunction: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true + }; +} +function getOptions(opts) { + const options = createDefaultOptions(); + if (opts == null) { + return options; + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + for (const key of Object.keys(options)) { + if (opts[key] != null) options[key] = opts[key]; + } + if (options.startLine === 1) { + if (opts.startIndex == null && options.startColumn > 0) { + options.startIndex = options.startColumn; + } else if (opts.startColumn == null && options.startIndex > 0) { + options.startColumn = options.startIndex; + } + } else if (opts.startColumn == null || opts.startIndex == null) { + if (opts.startIndex != null) { + throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`."); + } + } + return options; +} +const { + defineProperty +} = Object; +const toUnenumerable = (object, key) => { + if (object) { + defineProperty(object, key, { + enumerable: false, + value: object[key] + }); + } +}; +function toESTreeLocation(node) { + toUnenumerable(node.loc.start, "index"); + toUnenumerable(node.loc.end, "index"); + return node; +} +var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.optionFlags & 256) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (_) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + estreeParseChainExpression(node, endLoc) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNodeAt(chain, "ChainExpression", endLoc); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + this.castNodeTo(expression, "Literal"); + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = this.castNodeTo(directive, "ExpressionStatement"); + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + fillOptionalPropertiesForTSESLint(node) {} + cloneEstreeStringLiteral(node) { + const { + start, + end, + loc, + range, + raw, + value + } = node; + const cloned = Object.create(node.constructor.prototype); + cloned.type = "Literal"; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.raw = raw; + cloned.value = value; + return cloned; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + parsePrivateName() { + const node = super.parsePrivateName(); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + node = node; + delete node.id; + node.name = name; + return this.castNodeTo(node, "PrivateIdentifier"); + } + isPrivateName(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + delete funcNode.kind; + const { + typeParameters + } = node; + if (typeParameters) { + delete node.typeParameters; + funcNode.typeParameters = typeParameters; + this.resetStartLocationFromNode(funcNode, typeParameters); + } + const valueNode = this.castNodeTo(funcNode, "FunctionExpression"); + node.value = valueNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + if (type === "ObjectMethod") { + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + return this.finishNode(node, "Property"); + } else { + return this.finishNode(node, "MethodDefinition"); + } + } + nameIsConstructor(key) { + if (key.type === "Literal") return key.value === "constructor"; + return super.nameIsConstructor(key); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + { + this.castNodeTo(propertyNode, "PropertyDefinition"); + } + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + { + this.castNodeTo(propertyNode, "PropertyDefinition"); + } + propertyNode.computed = false; + return propertyNode; + } + parseClassAccessorProperty(node) { + const accessorPropertyNode = super.parseClassAccessorProperty(node); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return accessorPropertyNode; + } + } + if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) { + delete accessorPropertyNode.abstract; + this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty"); + } else { + this.castNodeTo(accessorPropertyNode, "AccessorProperty"); + } + return accessorPropertyNode; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + this.castNodeTo(node, "Property"); + } + return node; + } + finishObjectProperty(node) { + node.kind = "init"; + return this.finishNode(node, "Property"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) { + this.raise(Errors.PatternHasAccessor, prop.key); + } else if (prop.type === "Property" && prop.method) { + this.raise(Errors.PatternHasMethod, prop.key); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + var _ref, _ref2; + this.castNodeTo(node, "ImportExpression"); + node.source = node.arguments[0]; + node.options = (_ref = node.arguments[1]) != null ? _ref : null; + node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; + delete node.arguments; + delete node.callee; + } else if (node.type === "OptionalCallExpression") { + this.castNodeTo(node, "CallExpression"); + } else { + node.optional = false; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + this.castNodeTo(node, "ExportAllDeclaration"); + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + stopParseSubscript(base, state) { + const node = super.stopParseSubscript(base, state); + if (state.optionalChainMember) { + return this.estreeParseChainExpression(node, base.loc.end); + } + return node; + } + parseMember(base, startLoc, state, computed, optional) { + const node = super.parseMember(base, startLoc, state, computed, optional); + if (node.type === "OptionalMemberExpression") { + this.castNodeTo(node, "MemberExpression"); + } else { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set"); + } + castNodeTo(node, type) { + const result = super.castNodeTo(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + this.fillOptionalPropertiesForTSESLint(cloned); + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Literal") { + return this.cloneEstreeStringLiteral(node); + } + return super.cloneStringLiteral(node); + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + finishNode(node, type) { + const result = super.finishNode(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } +}; +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } +} +const types = { + brace: new TokContext("{"), + j_oTag: new TokContext("<tag"), + j_cTag: new TokContext("</tag"), + j_expr: new TokContext("<tag>...</tag>", true) +}; +{ + types.template = new TokContext("`", true); +} +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + { + this.updateContext = null; + } + } +} +const keywords$1 = new Map(); +function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; +} +function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); +} +let tokenTypeCounter = -1; +const tokenTypes = []; +const tokenLabels = []; +const tokenBinops = []; +const tokenBeforeExprs = []; +const tokenStartsExprs = []; +const tokenPrefixes = []; +function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; +} +function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; +} +const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("</>/<=/>=", 7), + gt: createBinop("</>/<=/>=", 7), + relational: createBinop("</>/<=/>=", 7), + bitShift: createBinop("<</>>/>>>", 8), + bitShiftL: createBinop("<</>>/>>>", 8), + bitShiftR: createBinop("<</>>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + placeholder: createToken("%%", { + startsExpr: true + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr: true + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr: true + }), + jsxTagEnd: createToken("jsxTagEnd") +}; +function tokenIsIdentifier(token) { + return token >= 93 && token <= 133; +} +function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; +} +function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 133; +} +function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 137; +} +function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; +} +function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; +} +function tokenIsAssignment(token) { + return token >= 29 && token <= 33; +} +function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; +} +function tokenIsLoop(token) { + return token >= 90 && token <= 92; +} +function tokenIsKeyword(token) { + return token >= 58 && token <= 92; +} +function tokenIsOperator(token) { + return token >= 39 && token <= 59; +} +function tokenIsPostfix(token) { + return token === 34; +} +function tokenIsPrefix(token) { + return tokenPrefixes[token]; +} +function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; +} +function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; +} +function tokenLabelName(token) { + return tokenLabels[token]; +} +function tokenOperatorPrecedence(token) { + return tokenBinops[token]; +} +function tokenIsRightAssociative(token) { + return token === 57; +} +function tokenIsTemplate(token) { + return token >= 24 && token <= 25; +} +function getExportedToken(token) { + return tokenTypes[token]; +} +{ + tokenTypes[8].updateContext = context => { + context.pop(); + }; + tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { + context.push(types.brace); + }; + tokenTypes[22].updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } + }; + tokenTypes[143].updateContext = context => { + context.push(types.j_expr, types.j_oTag); + }; +} +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} +function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} +class Scope { + constructor(flags) { + this.flags = 0; + this.names = new Map(); + this.firstLexicalName = ""; + this.flags = flags; + } +} +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (387 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + let type = scope.names.get(name) || 0; + if (bindingType & 16) { + type = type | 4; + } else { + if (!scope.firstLexicalName) { + scope.firstLexicalName = name; + } + type = type | 2; + } + scope.names.set(name, type); + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.names.set(name, (scope.names.get(name) || 0) | 1); + this.maybeExportDefined(scope, name); + if (scope.flags & 387) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.names.has(name); + } + const type = scope.names.get(name); + if (bindingType & 16) { + return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0; + } + return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0; + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.names.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 387) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (387 | 64) && !(flags & 4)) { + return flags; + } + } + } +} +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } +} +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048 && !scope.declareFunctions.has(name)) { + const type = scope.names.get(name); + return (type & 4) > 0 || (type & 2) > 0; + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } +} +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}); +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; +function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; +} +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + finishToken(type, val) { + if (type !== 134 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + this.unexpected(); + } + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(134)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + let bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc); + } + super.parseImport(bodyNode); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + body.push(bodyNode); + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, { + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.default = false; + delete node.exportKind; + return this.castNodeTo(node, "DeclareExportDeclaration"); + } else { + return this.castNodeTo(node, "DeclareExportAllDeclaration"); + } + } + } + this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + this.castNodeTo(finished, "DeclareTypeAlias"); + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + this.castNodeTo(finished, "DeclareOpaqueType"); + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, { + reservedType: word + }); + } + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifier(liberal); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + flowParseTypeParameterInstantiationInExpression() { + if (this.reScan_lt() !== 47) return; + return this.flowParseTypeParameterInstantiation(); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + this.state.inType = true; + node.params = []; + this.flowInTopLevelContext(() => { + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + }); + this.state.inType = oldInType; + if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + if (this.reScan_lt() !== 47) return; + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, variance); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, variance); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, property); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, node); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, node); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + { + const node = this.startNode(); + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 10: + { + const node = this.startNode(); + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 134: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(136)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc); + } + this.unexpected(); + return; + case 135: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 136: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + if (this.match(14)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + return ident; + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(2 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = newNode; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return newNode; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, startLoc); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, member.value); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, this.state.curPosition(), { + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation); + } + } + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (canBePattern && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression(); + } + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, param); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, param); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseFunctionParamType(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, param); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, param); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, param); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, param); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = this.cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = this.cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start))); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(11); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(11); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(11); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition()); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, { + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext); + } + flowEnumErrorNumberMemberNotInitialized(loc, details) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, details) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 135: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 134: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, id, { + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, id, { + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, { + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, { + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, { + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + jsxParseOpeningElementAfterName(node) { + if (this.shouldParseTypes()) { + if (this.match(47) || this.match(51)) { + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + } + } + return super.jsxParseOpeningElementAfterName(node); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } +}; +const entities = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; +const lineBreak = /\r\n|[\r\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } +} +function hasNewLine(input, start, end) { + for (let i = start; i < end; i++) { + if (isNewLine(input.charCodeAt(i))) { + return true; + } + } + return false; +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } +} +const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?" +}); +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); +} +var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(143); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(142, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(134, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(141, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(141)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, node); + } + return node; + case 143: + case 134: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(144)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(144); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(144); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 143: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 142: + children.push(this.parseLiteral(this.state.value, "JSXText")); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, closingElement); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(143)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(143); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(144); + return; + } + if ((code === 34 || code === 39) && context === types.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(143); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 143) { + context.splice(-2, 2, types.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 143) { + context.push(types.j_oTag); + } else if (type === 144) { + const out = context[context.length - 1]; + if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; + } else { + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } +}; +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.tsNames = new Map(); + } +} +class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags === 256) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags === 256) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + let type = scope.tsNames.get(name) || 0; + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.tsNames.set(name, type | 16); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + type = type | 1; + } + if (bindingType & 256) { + type = type | 2; + } + if (bindingType & 512) { + type = type | 4; + } + if (bindingType & 128) { + type = type | 8; + } + if (type) scope.tsNames.set(name, type); + } + isRedeclaredInScope(scope, name, bindingType) { + const type = scope.tsNames.get(name); + if ((type & 2) > 0) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = (type & 4) > 0; + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && (type & 8) > 0) { + if (scope.names.get(name) & 2) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && (type & 1) > 0) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + const type = scope.tsNames.get(name); + if ((type & 1) > 0 || (type & 16) > 0) { + return; + } + } + super.checkLocalExport(id); + } +} +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); +} +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + sourceToOffsetPos(sourcePos) { + return sourcePos + this.startIndex; + } + offsetToSourcePos(offsetPos) { + return offsetPos - this.startIndex; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } +} +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } +} +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } +} +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + const { + commentsLen + } = this.state; + if (this.comments.length !== commentsLen) { + this.comments.length = commentsLen; + } + this.comments.push(comment); + this.state.commentsLen++; + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const { + containingNode: node, + start: commentStart + } = commentWS; + if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + case "TSEnumDeclaration": + { + adjustInnerComments(node, node.members, commentWS); + } + break; + case "TSEnumBody": + adjustInnerComments(node, node.members, commentWS); + break; + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + resetPreviousIdentifierLeadingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + if (commentStack[length - 1].trailingNode === node) { + commentStack[length - 1].trailingNode = null; + } else if (length >= 2 && commentStack[length - 2].trailingNode === node) { + commentStack[length - 2].trailingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } +} +class State { + constructor() { + this.flags = 1024; + this.startIndex = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.labels = []; + this.commentsLen = 0; + this.commentStack = []; + this.pos = 0; + this.type = 140; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.context = [types.brace]; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + get strict() { + return (this.flags & 1) > 0; + } + set strict(v) { + if (v) this.flags |= 1;else this.flags &= -2; + } + init({ + strictMode, + sourceType, + startIndex, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.startIndex = startIndex; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex); + } + get maybeInArrowParameters() { + return (this.flags & 2) > 0; + } + set maybeInArrowParameters(v) { + if (v) this.flags |= 2;else this.flags &= -3; + } + get inType() { + return (this.flags & 4) > 0; + } + set inType(v) { + if (v) this.flags |= 4;else this.flags &= -5; + } + get noAnonFunctionType() { + return (this.flags & 8) > 0; + } + set noAnonFunctionType(v) { + if (v) this.flags |= 8;else this.flags &= -9; + } + get hasFlowComment() { + return (this.flags & 16) > 0; + } + set hasFlowComment(v) { + if (v) this.flags |= 16;else this.flags &= -17; + } + get isAmbientContext() { + return (this.flags & 32) > 0; + } + set isAmbientContext(v) { + if (v) this.flags |= 32;else this.flags &= -33; + } + get inAbstractClass() { + return (this.flags & 64) > 0; + } + set inAbstractClass(v) { + if (v) this.flags |= 64;else this.flags &= -65; + } + get inDisallowConditionalTypesContext() { + return (this.flags & 128) > 0; + } + set inDisallowConditionalTypesContext(v) { + if (v) this.flags |= 128;else this.flags &= -129; + } + get soloAwait() { + return (this.flags & 256) > 0; + } + set soloAwait(v) { + if (v) this.flags |= 256;else this.flags &= -257; + } + get inFSharpPipelineDirectBody() { + return (this.flags & 512) > 0; + } + set inFSharpPipelineDirectBody(v) { + if (v) this.flags |= 512;else this.flags &= -513; + } + get canStartJSXElement() { + return (this.flags & 1024) > 0; + } + set canStartJSXElement(v) { + if (v) this.flags |= 1024;else this.flags &= -1025; + } + get containsEsc() { + return (this.flags & 2048) > 0; + } + set containsEsc(v) { + if (v) this.flags |= 2048;else this.flags &= -2049; + } + get hasTopLevelAwait() { + return (this.flags & 4096) > 0; + } + set hasTopLevelAwait(v) { + if (v) this.flags |= 4096;else this.flags &= -4097; + } + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex); + } + clone() { + const state = new State(); + state.flags = this.flags; + state.startIndex = this.startIndex; + state.curLine = this.curLine; + state.lineStart = this.lineStart; + state.startLoc = this.startLoc; + state.endLoc = this.endLoc; + state.errors = this.errors.slice(); + state.potentialArrowAt = this.potentialArrowAt; + state.noArrowAt = this.noArrowAt.slice(); + state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice(); + state.topicContext = this.topicContext; + state.labels = this.labels.slice(); + state.commentsLen = this.commentsLen; + state.commentStack = this.commentStack.slice(); + state.pos = this.pos; + state.type = this.type; + state.value = this.value; + state.start = this.start; + state.end = this.end; + state.lastTokEndLoc = this.lastTokEndLoc; + state.lastTokStartLoc = this.lastTokStartLoc; + state.context = this.context.slice(); + state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos; + state.strictErrors = this.strictErrors; + state.tokensLength = this.tokensLength; + return state; + } +} +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} +function buildPosition(pos, lineStart, curLine) { + return new Position(curLine, pos - lineStart, pos); +} +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); +class Token { + constructor(state) { + const startIndex = state.startIndex || 0; + this.type = state.type; + this.value = state.value; + this.start = startIndex + state.start; + this.end = startIndex + state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } +} +class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!(this.optionFlags & 2048)) return false; + this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), { + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine)); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine)); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine)); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.comments = []; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.optionFlags & 256) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.lookaheadCharCodeSince(this.state.pos); + } + lookaheadCharCodeSince(pos) { + return this.input.charCodeAt(this.nextTokenStartSince(pos)); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at)); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(140); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end + commentEnd.length), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = this.optionFlags & 4096 ? [] : null; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if ((comments == null ? void 0 : comments.length) > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: this.sourceToOffsetPos(spaceStart), + end: this.sourceToOffsetPos(end), + comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition()); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(139, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(139, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), { + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, nextPos()); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, nextPos()); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(138, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), { + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, startLoc); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(136, str); + return; + } + this.finishToken(135, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, this.state.curPosition()); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos)); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, startLoc); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, startLoc); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, startLoc); + } + ++this.state.pos; + var isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(136, str); + return; + } + if (isDecimal) { + this.finishToken(137, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(135, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(134, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos)); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, at) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, at); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, this.state.curPosition()); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, escStart); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, { + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError(loc, details); + if (!(this.optionFlags & 2048)) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError(loc, details); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, at, details); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, { + expected: type ? tokenLabelName(type) : null + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, { + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, { + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, buildPosition(pos, lineStart, curLine)); + }; + } +} +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } +} +class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, loc, { + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } +} +class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } +} +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, at) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } +} +class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, node) { + const origin = node.loc.start; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, node) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = node.loc.start; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError(at) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, loc); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } +} +function newParameterDeclarationScope() { + return new ExpressionScope(3); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); +} +function newExpressionScope() { + return new ExpressionScope(); +} +class UtilParser extends Tokenizer { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + let { + extra + } = node; + if (extra == null) { + extra = {}; + node.extra = extra; + } + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + const nameEnd = nameStart + name.length; + if (this.input.slice(nameStart, nameEnd) === name) { + const nextCh = this.input.charCodeAt(nameEnd); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, this.state.startLoc); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(140) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start); + } + hasFollowingLineBreak() { + return hasNewLine(this.input, this.state.end, this.nextTokenStart()); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc); + } + expect(type, loc) { + if (!this.eat(type)) { + this.unexpected(loc, type); + } + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, doubleProtoLoc); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule) { + paramFlags |= 2; + } + if (this.optionFlags & 32) { + paramFlags |= 1; + } + this.scope.enter(1); + this.prodParam.enter(paramFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } +} +class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + } +} +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } +} +const NodePrototype = Node.prototype; +{ + NodePrototype.__clone = function () { + const newNode = new Node(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; + }; +} +class NodeUtils extends UtilParser { + startNode() { + const loc = this.state.startLoc; + return new Node(this, loc.index, loc); + } + startNodeAt(loc) { + return new Node(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + if (this.optionFlags & 4096) { + this.processComment(node); + } + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.optionFlags & 128) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } + castNodeTo(node, type) { + node.type = type; + return node; + } + cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.name = name; + if (node.extra) cloned.extra = node.extra; + return cloned; + } + cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.value = node.value; + return cloned; + } +} +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node); + } else if (parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break; + case "ObjectExpression": + this.castNodeTo(node, "ObjectPattern"); + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + this.castNodeTo(node, "ArrayPattern"); + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, node.left.loc.end); + } + this.castNodeTo(node, "AssignmentPattern"); + delete node.operator; + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key); + } else if (prop.type === "SpreadElement") { + this.castNodeTo(prop, "RestElement"); + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, prop); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + this.toAssignableListItem(exprList, i, isLHS); + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, elt); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, trailingCommaLoc); + } + } + } + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "SpreadElement") { + this.castNodeTo(node, "RestElement"); + const arg = node.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(node, isLHS); + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + node.argument = this.parseBindingAtom(); + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + let rest = this.parseRestBinding(); + if (this.hasPlugin("flow") || flags & 2) { + rest = this.parseFunctionParamType(rest); + } + elts.push(rest); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (flags & 2) { + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + elts.push(this.parseBindingElement(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + prop.argument = this.parseIdentifier(); + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(this.startNode()); + } + const prop = this.startNode(); + if (type === 139) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseBindingElement(flags, decorators) { + const left = this.parseMaybeDefault(); + if (this.hasPlugin("flow") || flags & 2) { + this.parseFunctionParamType(left); + } + if (decorators.length) { + left.decorators = decorators; + this.resetStartLocationFromNode(left, decorators[0]); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + return elt; + } + parseFunctionParamType(param) { + return param; + } + parseMaybeDefault(startLoc, left) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + left = left != null ? left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + switch (type) { + case "AssignmentPattern": + return "left"; + case "RestElement": + return "argument"; + case "ObjectProperty": + return "value"; + case "ParenthesizedExpression": + return "expression"; + case "ArrayPattern": + return "elements"; + case "ObjectPattern": + return "properties"; + } + return false; + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, expression, { + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, expression); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, expression); + } else { + checkClashes.add(name); + } + } + return; + } + const validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, expression, { + ancestor + }); + return; + } + let key, isParenthesizedExpression; + if (typeof validity === "string") { + key = validity; + isParenthesizedExpression = type === "ParenthesizedExpression"; + } else { + [key, isParenthesizedExpression] = validity; + } + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + const val = expression[key]; + if (Array.isArray(val)) { + for (const child of val) { + if (child) { + this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression); + } + } + } else if (val) { + this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression); + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, at, { + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, at, { + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, at); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, node); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc); + return true; + } +} +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; +} +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} +const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidHeritageClauseType: ({ + token + }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`, + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.` +}); +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } +} +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} +var typescript = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName(); + } + tsNextTokenOnSameLineAndCanFollowModifier() { + this.next(); + if (this.hasPrecedingLineBreak()) { + return false; + } + return this.tsTokenCanFollowModifier(); + } + tsNextTokenCanFollowModifier() { + if (this.match(106)) { + this.next(); + return this.tsTokenCanFollowModifier(); + } + return this.tsNextTokenOnSameLineAndCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.includes(modifier)) { + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, loc, { + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, loc, { + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, startLoc, { + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStartLoc.index; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(134)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc); + { + node.argument = super.parseExprAtom(); + } + } else { + { + node.argument = this.parseStringLiteral(this.state.value); + } + } + if (this.eat(12)) { + node.options = this.tsParseImportTypeOptions(); + } else { + node.options = null; + } + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(1 | 2); + } + if (this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSImportType"); + } + tsParseImportTypeOptions() { + const node = this.startNode(); + this.expect(5); + const withProperty = this.startNode(); + if (this.isContextual(76)) { + withProperty.method = false; + withProperty.key = this.parseIdentifier(true); + withProperty.computed = false; + withProperty.shorthand = false; + } else { + this.unexpected(null, 76); + } + this.expect(14); + withProperty.value = this.tsParseImportTypeWithPropertyValue(); + node.properties = [this.finishObjectProperty(withProperty)]; + this.expect(8); + return this.finishNode(node, "ObjectExpression"); + } + tsParseImportTypeWithPropertyValue() { + const node = this.startNode(); + const properties = []; + this.expect(5); + while (!this.match(8)) { + const type = this.state.type; + if (tokenIsIdentifier(type) || type === 134) { + properties.push(super.parsePropertyDefinition(null)); + } else { + this.unexpected(); + } + this.eat(12); + } + node.properties = properties; + this.next(); + return this.finishNode(node, "ObjectExpression"); + } + tsParseEntityName(flags) { + let entity; + if (flags & 1 && this.match(78)) { + if (flags & 2) { + entity = this.parseIdentifier(true); + } else { + const node = this.startNode(); + this.next(); + entity = this.finishNode(node, "ThisExpression"); + } + } else { + entity = this.parseIdentifier(!!(flags & 1)); + } + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(!!(flags & 1)); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(1); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + { + node.exprName = this.tsParseEntityName(1 | 2); + } + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, node); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, { + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, node); + } + const method = node; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition()); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, this.state.curPosition()); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, this.state.curPosition()); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition()); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition()); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = node; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + if (!this.match(10) && !this.match(47)) { + this.unexpected(null, 10); + } + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + { + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsExpectThenParseType(58); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + } + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const restStartLoc = this.state.startLoc; + const rest = this.eat(21); + const { + startLoc + } = this.state; + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc); + } + } else { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, type); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAt(startLoc); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(restStartLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 135: + case 136: + case 134: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 134: + case 135: + case 136: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 135 && nextToken.type !== 136) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + this.unexpected(); + } + tsParseArrayTypeOrHigher() { + const { + startLoc + } = this.state; + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAt(startLoc); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAt(startLoc); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, node); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, { + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.lookahead().type === 77; + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + { + const node = this.startNode(); + node.expression = this.tsParseEntityName(1 | 2); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + } + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, { + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, this.state.startLoc); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookahead().type !== 16) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + { + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + } + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseEnumBody() { + const node = this.startNode(); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumBody"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(256); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.kind = "global"; + { + node.global = true; + } + node.id = this.parseIdentifier(); + } else if (this.match(134)) { + node.kind = "module"; + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(256); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + { + node.isExport = isExport || false; + } + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, moduleReference); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(134)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(nany) { + if (this.isLineTerminator()) { + return; + } + let startType = this.state.type; + let kind; + if (this.isContextual(100)) { + startType = 74; + kind = "let"; + } + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + nany.declare = true; + return super.parseFunctionStatement(nany, false, false); + case 80: + nany.declare = true; + return this.parseClass(nany, true, false); + case 126: + return this.tsParseEnumDeclaration(nany, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(nany); + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + nany.declare = true; + return this.parseVarStatement(nany, kind || this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(nany, { + const: true, + declare: true + }); + case 129: + { + const result = this.tsParseInterfaceDeclaration(nany, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(nany, this.state.value, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true, null); + } + tsParseExpressionStatement(node, expr, decorators) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + if (declaration) { + declaration.declare = true; + } + return declaration; + } + case "global": + if (this.match(5)) { + this.scope.enter(256); + this.prodParam.enter(0); + const mod = node; + mod.kind = "global"; + { + node.global = true; + } + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + this.scope.exit(); + this.prodParam.exit(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + break; + default: + return this.tsParseDeclaration(node, expr.name, false, decorators); + } + } + tsParseDeclaration(node, value, next, decorators) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case "module": + if (this.tsCheckLineTerminator(next)) { + if (this.match(134)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + node.kind = "module"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case "namespace": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + node.kind = "namespace"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case "type": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInTopLevelContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, node); + } else if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseBindingElement(flags, decorators) { + const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, startLoc); + } + const left = this.parseMaybeDefault(); + if (flags & 2) { + this.parseFunctionParamType(left); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, pp); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, param); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, node); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + { + result.typeParameters = typeArguments; + } + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(11); + this.tsCheckForInvalidTypeCasts(node.arguments); + { + node.typeParameters = typeArguments; + } + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + { + node.typeParameters = typeArguments; + } + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression") { + if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc); + } + if (!this.match(16) && !this.match(18)) { + result.expression = super.stopParseSubscript(base, state); + } + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + { + node.typeParameters = callee.typeParameters; + } + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, this.state.startLoc, { + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(134)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + const nodeImportEquals = node; + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false); + } else { + nodeImportEquals.importKind = "value"; + } + const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + { + return declaration; + } + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.lookahead().type === 80; + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind !== "const" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + if (this.isContextual(126)) { + return this.tsParseEnumDeclaration(this.startNode()); + } + if (this.isContextual(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition()); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, member); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, member, { + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, member); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, member); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, member); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp); + } + } + parseExpressionStatement(node, expr, decorators) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined; + return decl || super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, { + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, node); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, node, { + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, node); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, method, { + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && node.value.body == null) { + return; + } + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra2; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, node); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseFunctionParamType(param) { + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, node); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + switch (type) { + case "TSTypeCastExpression": + return true; + case "TSParameterProperty": + return "parameter"; + case "TSNonNullExpression": + return "expression"; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true]; + default: + return super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr, startLoc); + { + call.typeParameters = typeArguments; + } + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr, startLoc); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "TSTypeCastExpression") { + exprList[index] = this.typeCastToParameter(node); + } + super.toAssignableListItem(exprList, index, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) { + { + node.typeParameters = typeArguments; + } + } + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const { + isAmbientContext: oldIsAmbientContext, + strict: oldStrict + } = this.state; + this.state.isAmbientContext = true; + this.state.strict = false; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + this.state.strict = oldStrict; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, node); + return this.tsParseInterfaceDeclaration(node); + } + } else { + this.unexpected(null, 80); + } + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract || method.type === "TSAbstractMethodDefinition") { + const hasEstreePlugin = this.hasPlugin("estree"); + const methodFn = hasEstreePlugin ? method.value : method; + if (methodFn.body) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, method, { + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } + fillOptionalPropertiesForTSESLint(node) { + var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$declare7, _node$global, _node$const2, _node$in, _node$out; + switch (node.type) { + case "ExpressionStatement": + (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined; + return; + case "RestElement": + node.value = undefined; + case "Identifier": + case "ArrayPattern": + case "AssignmentPattern": + case "ObjectPattern": + (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = []; + (_node$optional = node.optional) != null ? _node$optional : node.optional = false; + (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined; + return; + case "TSParameterProperty": + (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined; + (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = []; + (_node$override = node.override) != null ? _node$override : node.override = false; + (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false; + (_node$static = node.static) != null ? _node$static : node.static = false; + return; + case "TSEmptyBodyFunctionExpression": + node.body = null; + case "TSDeclareFunction": + case "FunctionDeclaration": + case "FunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + (_node$declare = node.declare) != null ? _node$declare : node.declare = false; + (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined; + (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined; + return; + case "Property": + (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false; + return; + case "TSMethodSignature": + case "TSPropertySignature": + (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false; + case "TSIndexSignature": + (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined; + (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false; + (_node$static2 = node.static) != null ? _node$static2 : node.static = false; + return; + case "TSAbstractPropertyDefinition": + case "PropertyDefinition": + case "TSAbstractAccessorProperty": + case "AccessorProperty": + (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false; + (_node$definite = node.definite) != null ? _node$definite : node.definite = false; + (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false; + (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined; + case "TSAbstractMethodDefinition": + case "MethodDefinition": + (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined; + (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = []; + (_node$override2 = node.override) != null ? _node$override2 : node.override = false; + (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false; + return; + case "ClassExpression": + (_node$id = node.id) != null ? _node$id : node.id = null; + case "ClassDeclaration": + (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false; + (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false; + (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = []; + (_node$implements = node.implements) != null ? _node$implements : node.implements = []; + (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined; + (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined; + return; + case "TSTypeAliasDeclaration": + case "VariableDeclaration": + (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false; + return; + case "VariableDeclarator": + (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false; + return; + case "TSEnumDeclaration": + (_node$const = node.const) != null ? _node$const : node.const = false; + (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false; + return; + case "TSEnumMember": + (_node$computed = node.computed) != null ? _node$computed : node.computed = false; + return; + case "TSImportType": + (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null; + (_node$options = node.options) != null ? _node$options : node.options = null; + return; + case "TSInterfaceDeclaration": + (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false; + (_node$extends = node.extends) != null ? _node$extends : node.extends = []; + return; + case "TSModuleDeclaration": + (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false; + (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global"; + return; + case "TSTypeParameter": + (_node$const2 = node.const) != null ? _node$const2 : node.const = false; + (_node$in = node.in) != null ? _node$in : node.in = false; + (_node$out = node.out) != null ? _node$out : node.out = false; + return; + } + } +}; +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; +} +function isNumber(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; +} +function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber(argument, estree)) { + return true; + } + } + return false; +} +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." +}); +var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(133)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(133); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + let placeholder = node; + if (!placeholder.expectedNode || !placeholder.type) { + placeholder = this.finishNode(placeholder, "Placeholder"); + } + placeholder.expectedNode = expectedNode; + return placeholder; + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(133, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + if (cloned.type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Placeholder") { + return this.cloneIdentifier(node); + } + return super.cloneStringLiteral(node); + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const nextToken = this.lookahead(); + if (nextToken.type === 133) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + const stmtPlaceholder = node; + stmtPlaceholder.name = expr.name; + return this.finishPlaceholder(stmtPlaceholder, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(133) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + const node2 = node; + if (!this.isContextual(98) && !this.match(12)) { + node2.specifiers = []; + node2.source = null; + node2.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node2, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node2, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) { + this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc); + } + } +}; +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + this.castNodeTo(identifier, "V8IntrinsicIdentifier"); + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } +}; +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; +function validatePlugins(pluginsMap) { + if (pluginsMap.has("decorators")) { + if (pluginsMap.has("decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport; + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized; + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (pluginsMap.has("flow") && pluginsMap.has("typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (pluginsMap.has("pipelineOperator")) { + var _pluginsMap$get2; + const proposal = pluginsMap.get("pipelineOperator").proposal; + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + if (proposal === "hack") { + if (pluginsMap.has("placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = pluginsMap.get("pipelineOperator").topicToken; + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + { + var _pluginsMap$get; + if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + if (pluginsMap.has("moduleAttributes")) { + { + if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) { + throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version; + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + } + if (pluginsMap.has("importAssertions")) { + if (pluginsMap.has("deprecatedImportAssert")) { + throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins."); + } + } + if (!pluginsMap.has("deprecatedImportAssert") && pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) { + { + pluginsMap.set("deprecatedImportAssert", {}); + } + } + if (pluginsMap.has("recordAndTuple")) { + { + const syntaxType = pluginsMap.get("recordAndTuple").syntaxType; + if (syntaxType != null) { + const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; + if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + } + } + } + if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, sawProto, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return sawProto; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, key); + return true; + } + if (sawProto) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, key); + } + } + return true; + } + return sawProto; + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + const expr = this.parseExpression(); + if (!this.match(140)) { + this.unexpected(); + } + this.finalizeRemainingComments(); + expr.comments = this.comments; + expr.errors = this.state.errors; + if (this.optionFlags & 256) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors) { + refExpressionErrors.optionalParametersLoc = this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + const isYield = this.isContextual(108); + if (isYield) { + if (this.prodParam.hasYield) { + this.next(); + let left = this.parseYield(startLoc); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, this.finishNode(node, "AssignmentExpression")); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (isYield) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc); + return this.parseYield(startLoc); + } + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, left, { + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, startLoc, { + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, startLoc); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.recordAwaitIfAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, node); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, node); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression")); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression")); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, noCalls, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, this.state.startLoc); + if (this.lookaheadCharCode() === 40) { + return this.stopParseSubscript(base, state); + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + return this.stopParseSubscript(base, state); + } + } + } + stopParseSubscript(base, state) { + state.stop = true; + return base; + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(139)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, startLoc); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, noCalls, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(11); + } else { + node.arguments = this.parseCallExpressionArguments(11, base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, startLoc); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt; + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, node); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, arg); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(close, allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaProperty(node); + } + if (this.match(10)) { + if (this.optionFlags & 512) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 135: + return this.parseNumericLiteral(this.state.value); + case 136: + return this.parseBigIntLiteral(this.state.value); + case 134: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 0: + { + return this.parseArrayLike(3, true, false, refExpressionErrors); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, callee); + } + } + case 139: + { + this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, { + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + this.unexpected(); + break; + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + } else { + this.unexpected(); + } + break; + } + default: + { + if (type === 137) { + return this.parseDecimalLiteral(this.state.value); + } else if (type === 2 || type === 1) { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); + } else if (type === 6 || type === 7) { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + } + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } else { + this.unexpected(); + } + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + if (pipeProposal === "hack") { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PipeTopicUnbound, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "TopicReference"); + } else { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PrimaryTopicNotAllowed, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); + } + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, { + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition()); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper && !(this.optionFlags & 16)) { + this.raise(Errors.SuperNotAllowed, node); + } else if (!this.scope.allowSuper && !(this.optionFlags & 16)) { + this.raise(Errors.UnexpectedSuper, node); + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, node); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, node.property, { + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaProperty(node) { + const id = this.createIdentifier(this.startNodeAtNode(node), "import"); + this.next(); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, id); + } + this.sawUnambiguousESM = true; + } else if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + if (!(this.optionFlags & 512)) { + throw this.raise(Errors.DynamicImportPhaseRequiresImportExpressions, this.state.startLoc, { + phase: this.state.value + }); + } + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } + return this.parseMetaProperty(node, id, "meta"); + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + return this.parseLiteral(value, "BigIntLiteral"); + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.startNode(); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.pattern = value.pattern; + node.flags = value.flags; + this.next(); + return this.finishNode(node, "RegExpLiteral"); + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!(this.optionFlags & 1024)) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.inNonArrowFunction && !this.scope.inClass && !(this.optionFlags & 4)) { + this.raise(Errors.UnexpectedNewTarget, metaProp); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) { + this.raise(Errors.ImportCallNotNewExpression, callee); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1)); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + let curElt = this.parseTemplateElement(isTagged); + const quasis = [curElt]; + const substitutions = []; + while (!curElt.tail) { + substitutions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + node.expressions = substitutions; + node.quasis = quasis; + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let sawProto = false; + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, prop); + } + { + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const { + key + } = prop; + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), { + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, method); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors); + return this.finishObjectProperty(prop); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else { + prop.value = this.cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishObjectProperty(prop); + } + } + finishObjectProperty(node) { + return this.finishNode(node, "ObjectProperty"); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 135: + key = this.parseNumericLiteral(value); + break; + case 134: + key = this.parseStringLiteral(value); + break; + case 136: + key = this.parseBigIntLiteral(value); + break; + case 139: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + key = this.parsePrivateName(); + break; + } + default: + if (type === 137) { + key = this.parseDecimalLiteral(value); + break; + } + this.unexpected(); + } + } + prop.key = key; + if (type !== 139) { + prop.computed = false; + } + } + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(2 | 16 | (inClassScope ? 64 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(2 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, this.state.curPosition(), { + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, startLoc, { + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, startLoc, { + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, startLoc); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, startLoc); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc); + return; + } + this.expressionScope.recordAsyncArrowParametersError(startLoc); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, startLoc); + return; + } + } + } + recordAwaitIfAllowed() { + const isAwaitAllowed = this.prodParam.hasAwait || this.optionFlags & 1 && !this.scope.inFunction; + if (isAwaitAllowed && !this.scope.inFunction) { + this.state.hasTopLevelAwait = true; + } + return isAwaitAllowed; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, node); + } + if (!this.scope.inFunction && !(this.optionFlags & 1)) { + if (this.isAmbiguousPrefixOrIdentifier()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousPrefixOrIdentifier() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 140: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + node.options = null; + if (this.eat(12)) { + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + if (this.eat(12) && !this.match(11)) { + do { + this.parseMaybeAssignAllowIn(); + } while (this.eat(12) && !this.match(11)); + this.raise(Errors.ImportCallArity, node); + } + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, startLoc); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parsePropertyNamePrefixOperator(prop) {} +} +const loopLabel = { + kind: 1 + }, + switchLabel = { + kind: 2 + }; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; +function babel7CompatTokens(tokens, input, startIndex) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + { + if (type === 139) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start - startIndex) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + } + token.type = getExportedToken(type); + } + } + return tokens; +} +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program); + file.comments = this.comments; + if (this.optionFlags & 256) { + file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end = 140, sourceType = this.options.sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule) { + if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, at, { + localName + }); + } + } + this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait); + } + let finishedProgram; + if (end === 140) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = this.castNodeTo(stmt, "Directive"); + const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral"); + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end)); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directive.value = directiveLiteral; + delete stmt.expression; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifierOrBrace() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next); + } + allowsForUsing() { + const { + type, + containsEsc, + end + } = this.lookahead(); + if (type === 102 && !containsEsc) { + const nextCharAfterOf = this.lookaheadCharCodeSince(end); + if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) { + return false; + } + } + if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) { + this.expectPlugin("explicitResourceManagement"); + return true; + } + return false; + } + startsAwaitUsing() { + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + this.expectPlugin("explicitResourceManagement"); + return true; + } + } + return false; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const startType = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (startType) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (!this.state.containsEsc && this.startsAwaitUsing()) { + if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, node); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, node); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) { + break; + } + this.expectPlugin("explicitResourceManagement"); + if (!this.scope.inModule && this.scope.inTopLevel) { + this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!(this.optionFlags & 8) && !topLevel) { + this.raise(Errors.UnexpectedImportExport, this.state.startLoc); + } + this.next(); + let result; + if (startType === 83) { + result = this.parseImport(node); + } else { + result = this.parseExport(node, decorators); + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!(this.optionFlags & 8) && !this.inModule) { + this.raise(Errors.ImportOutsideModule, node); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + var _classNode$decorators; + if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, this.state.startLoc); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(139)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(11); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === 1)) { + break; + } + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, node, { + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isContextual(96) && this.recordAwaitIfAllowed()) { + awaitAt = this.state.startLoc; + this.next(); + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isContextual(96) && this.startsAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isContextual(107) && this.allowsForUsing(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, init); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, init); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, init); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + type + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn && !(this.optionFlags & 2)) { + this.raise(Errors.IllegalReturn, this.state.startLoc); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(0); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + type: "CatchClause" + }, 9); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, node); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, this.state.startLoc); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, expr, { + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.sourceToOffsetPos(this.state.start); + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.sourceToOffsetPos(this.state.start) + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, init, { + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, init, { + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind: "destructuring" + }); + } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + if (kind === "using" || kind === "await using") { + if (id.type === "ArrayPattern" || id.type === "ObjectPattern") { + this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start); + } + } + this.checkLVal(id, { + type: "VariableDeclarator" + }, kind === "var" ? 5 : 8201); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(2); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + nameIsConstructor(key) { + return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor"; + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && this.nameIsConstructor(method.key); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, member); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, this.state.startLoc); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(139); + this.parseClassElementName(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type); + const key = this.parseClassElementName(member); + const maybeContextualKw = isContextual ? key.name : null; + const isPrivate = this.isPrivateName(key); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, key); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, key); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (maybeContextualKw === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = maybeContextualKw; + const isPrivate = this.match(139); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(139); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 134) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, this.state.startLoc); + } + if (type === 139) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + this.parsePropertyName(member); + return member.key; + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(64 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, member); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(64 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, this.state.startLoc); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, true); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.checkExport(node2, true, true); + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + var _ref, _ref$specifiers; + (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + const node2 = node; + if (!node2.specifiers) node2.specifiers = []; + const isTypeExport = node2.exportKind === "type"; + node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node2.source = null; + if (this.hasPlugin("importAssertions")) { + node2.assertions = []; + } else { + node2.attributes = []; + } + node2.declaration = null; + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } else { + node.attributes = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet()) { + throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const { + type: nextType + } = this.lookahead(); + if (tokenIsIdentifier(nextType) && nextType !== 98 || nextType === 5) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return true; + } + } + if (this.isContextual(107)) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + if (this.isContextual(96) && this.startsAwaitUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, declaration); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, specifier, { + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + const decl = node.declaration; + if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") { + const { + id + } = decl; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (decl.type === "VariableDeclaration") { + for (const declaration of decl.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, node); + } else { + this.raise(Errors.DuplicateExport, node, { + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(134); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = this.cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = this.cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(134)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = loneSurrogate.exec(result.value); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, { + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.parseIdentifier(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.resetPreviousIdentifierLeadingComments(phaseIdentifier); + this.applyImportPhase(node, isExport, phaseIdentifier.name, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return phaseIdentifier; + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(134)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(134)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + type + }, bindingType); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, { + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(134)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, node.key); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, { + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + { + var useWith = false; + } + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + this.addExtra(node, "deprecatedWithLegacySyntax", true); + } else { + attributes = this.parseImportAttributes(); + } + { + useWith = true; + } + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) { + this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); + } + if (!this.hasPlugin("importAssertions")) { + this.addExtra(node, "deprecatedAssertSyntax", true); + } + this.next(); + attributes = this.parseImportAttributes(); + } else { + attributes = []; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, this.state.startLoc); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(134); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = this.cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } +} +class Parser extends StatementParser { + constructor(options, input, pluginsMap) { + options = getOptions(options); + super(options, input); + this.options = options; + this.initializeScopes(); + this.plugins = pluginsMap; + this.filename = options.sourceFilename; + this.startIndex = options.startIndex; + let optionFlags = 0; + if (options.allowAwaitOutsideFunction) { + optionFlags |= 1; + } + if (options.allowReturnOutsideFunction) { + optionFlags |= 2; + } + if (options.allowImportExportEverywhere) { + optionFlags |= 8; + } + if (options.allowSuperOutsideMethod) { + optionFlags |= 16; + } + if (options.allowUndeclaredExports) { + optionFlags |= 64; + } + if (options.allowNewTargetOutsideFunction) { + optionFlags |= 4; + } + if (options.allowYieldOutsideFunction) { + optionFlags |= 32; + } + if (options.ranges) { + optionFlags |= 128; + } + if (options.tokens) { + optionFlags |= 256; + } + if (options.createImportExpressions) { + optionFlags |= 512; + } + if (options.createParenthesizedExpressions) { + optionFlags |= 1024; + } + if (options.errorRecovery) { + optionFlags |= 2048; + } + if (options.attachComment) { + optionFlags |= 4096; + } + if (options.annexB) { + optionFlags |= 8192; + } + this.optionFlags = optionFlags; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + this.parseTopLevel(file, program); + file.errors = this.state.errors; + file.comments.length = this.state.commentsLen; + return file; + } +} +function parse(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); +} +function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; +} +const tokTypes = generateExportedTokenTypes(tt); +function getParser(options, input) { + let cls = Parser; + const pluginsMap = new Map(); + if (options != null && options.plugins) { + for (const plugin of options.plugins) { + let name, opts; + if (typeof plugin === "string") { + name = plugin; + } else { + [name, opts] = plugin; + } + if (!pluginsMap.has(name)) { + pluginsMap.set(name, opts || {}); + } + } + validatePlugins(pluginsMap); + cls = getParserClass(pluginsMap); + } + return new cls(options, input, pluginsMap); +} +const parserClassCache = new Map(); +function getParserClass(pluginsMap) { + const pluginList = []; + for (const name of mixinPluginNames) { + if (pluginsMap.has(name)) { + pluginList.push(name); + } + } + const key = pluginList.join("|"); + let cls = parserClassCache.get(key); + if (!cls) { + cls = Parser; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache.set(key, cls); + } + return cls; +} +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = tokTypes; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 32519: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "convertFunctionParams", ({ + enumerable: true, + get: function () { + return _params.default; + } +})); +exports["default"] = void 0; +var _helperPluginUtils = __nccwpck_require__(30484); +var _params = __nccwpck_require__(61893); +var _rest = __nccwpck_require__(36061); +var _default = exports["default"] = (0, _helperPluginUtils.declare)((api, options) => { + var _api$assumption, _api$assumption2; + api.assertVersion(7); + const ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : options.loose; + const noNewArrows = (_api$assumption2 = api.assumption("noNewArrows")) != null ? _api$assumption2 : true; + return { + name: "transform-parameters", + visitor: { + Function(path) { + if (path.isArrowFunctionExpression() && path.get("params").some(param => param.isRestElement() || param.isAssignmentPattern())) { + path.arrowFunctionToExpression({ + allowInsertArrowWithRest: false, + noNewArrows + }); + if (!path.isFunctionExpression()) return; + } + const convertedRest = (0, _rest.default)(path); + const convertedParams = (0, _params.default)(path, ignoreFunctionLength); + if (convertedRest || convertedParams) { + path.scope.crawl(); + } + } + } + }; +}); + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 61893: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = convertFunctionParams; +var _core = __nccwpck_require__(85414); +var _shadowUtils = __nccwpck_require__(92399); +const buildDefaultParam = _core.template.statement(` + let VARIABLE_NAME = + arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ? + arguments[ARGUMENT_KEY] + : + DEFAULT_VALUE; +`); +const buildLooseDefaultParam = _core.template.statement(` + if (ASSIGNMENT_IDENTIFIER === UNDEFINED) { + ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE; + } +`); +const buildLooseDestructuredDefaultParam = _core.template.statement(` + let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ; +`); +const buildSafeArgumentsAccess = _core.template.statement(` + let $0 = arguments.length > $1 ? arguments[$1] : undefined; +`); +function convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement) { + const params = path.get("params"); + const isSimpleParameterList = params.every(param => param.isIdentifier()); + if (isSimpleParameterList) return false; + const { + node, + scope + } = path; + const body = []; + const shadowedParams = new Set(); + for (const param of params) { + (0, _shadowUtils.collectShadowedParamsNames)(param, scope, shadowedParams); + } + const state = { + needsOuterBinding: false, + scope + }; + if (shadowedParams.size === 0) { + for (const param of params) { + if (!param.isIdentifier()) param.traverse(_shadowUtils.iifeVisitor, state); + if (state.needsOuterBinding) break; + } + } + let firstOptionalIndex = null; + for (let i = 0; i < params.length; i++) { + const param = params[i]; + if (shouldTransformParam && !shouldTransformParam(i)) { + continue; + } + const transformedRestNodes = []; + if (replaceRestElement) { + replaceRestElement(path, param, transformedRestNodes); + } + const paramIsAssignmentPattern = param.isAssignmentPattern(); + if (paramIsAssignmentPattern && (ignoreFunctionLength || _core.types.isMethod(node, { + kind: "set" + }))) { + const left = param.get("left"); + const right = param.get("right"); + const undefinedNode = scope.buildUndefinedNode(); + if (left.isIdentifier()) { + body.push(buildLooseDefaultParam({ + ASSIGNMENT_IDENTIFIER: _core.types.cloneNode(left.node), + DEFAULT_VALUE: right.node, + UNDEFINED: undefinedNode + })); + param.replaceWith(left.node); + } else if (left.isObjectPattern() || left.isArrayPattern()) { + const paramName = scope.generateUidIdentifier(); + body.push(buildLooseDestructuredDefaultParam({ + ASSIGNMENT_IDENTIFIER: left.node, + DEFAULT_VALUE: right.node, + PARAMETER_NAME: _core.types.cloneNode(paramName), + UNDEFINED: undefinedNode + })); + param.replaceWith(paramName); + } + } else if (paramIsAssignmentPattern) { + if (firstOptionalIndex === null) firstOptionalIndex = i; + const left = param.get("left"); + const right = param.get("right"); + const defNode = buildDefaultParam({ + VARIABLE_NAME: left.node, + DEFAULT_VALUE: right.node, + ARGUMENT_KEY: _core.types.numericLiteral(i) + }); + body.push(defNode); + } else if (firstOptionalIndex !== null) { + const defNode = buildSafeArgumentsAccess([param.node, _core.types.numericLiteral(i)]); + body.push(defNode); + } else if (param.isObjectPattern() || param.isArrayPattern()) { + const uid = path.scope.generateUidIdentifier("ref"); + uid.typeAnnotation = param.node.typeAnnotation; + const defNode = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(param.node, uid)]); + body.push(defNode); + param.replaceWith(_core.types.cloneNode(uid)); + } + if (transformedRestNodes) { + for (const transformedNode of transformedRestNodes) { + body.push(transformedNode); + } + } + } + if (firstOptionalIndex !== null) { + node.params = node.params.slice(0, firstOptionalIndex); + } + path.ensureBlock(); + const path2 = path; + const { + async, + generator + } = node; + if (generator || state.needsOuterBinding || shadowedParams.size > 0) { + body.push((0, _shadowUtils.buildScopeIIFE)(shadowedParams, path2.node.body)); + path.set("body", _core.types.blockStatement(body)); + const bodyPath = path2.get("body.body"); + const arrowPath = bodyPath[bodyPath.length - 1].get("argument.callee"); + arrowPath.arrowFunctionToExpression(); + arrowPath.node.generator = generator; + arrowPath.node.async = async; + node.generator = false; + node.async = false; + if (async) { + path2.node.body = _core.template.statement.ast`{ + try { + ${path2.node.body.body} + } catch (e) { + return Promise.reject(e); + } + }`; + } + } else { + path2.get("body").unshiftContainer("body", body); + } + return true; +} + +//# sourceMappingURL=params.js.map + + +/***/ }), + +/***/ 36061: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = convertFunctionRest; +var _core = __nccwpck_require__(85414); +var _shadowUtils = __nccwpck_require__(92399); +const buildRest = _core.template.statement(` + for (var LEN = ARGUMENTS.length, + ARRAY = new Array(ARRAY_LEN), + KEY = START; + KEY < LEN; + KEY++) { + ARRAY[ARRAY_KEY] = ARGUMENTS[KEY]; + } +`); +const restIndex = _core.template.expression(` + (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX] +`); +const restIndexImpure = _core.template.expression(` + REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF] +`); +const restLength = _core.template.expression(` + ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET +`); +function referencesRest(path, state) { + if (path.node.name === state.name) { + return path.scope.bindingIdentifierEquals(state.name, state.outerBinding); + } + return false; +} +const memberExpressionOptimisationVisitor = { + Scope(path, state) { + if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) { + path.skip(); + } + }, + Flow(path) { + if (path.isTypeCastExpression()) return; + path.skip(); + }, + Function(path, state) { + const oldNoOptimise = state.noOptimise; + state.noOptimise = true; + path.traverse(memberExpressionOptimisationVisitor, state); + state.noOptimise = oldNoOptimise; + path.skip(); + }, + ReferencedIdentifier(path, state) { + const { + node + } = path; + if (node.name === "arguments") { + state.deopted = true; + } + if (!referencesRest(path, state)) return; + if (state.noOptimise) { + state.deopted = true; + } else { + const { + parentPath + } = path; + if (parentPath.listKey === "params" && parentPath.key < state.offset) { + return; + } + if (parentPath.isMemberExpression({ + object: node + })) { + const grandparentPath = parentPath.parentPath; + const argsOptEligible = !state.deopted && !(grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left || grandparentPath.isLVal() || grandparentPath.isForXStatement() || grandparentPath.isUpdateExpression() || grandparentPath.isUnaryExpression({ + operator: "delete" + }) || (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee); + if (argsOptEligible) { + if (parentPath.node.computed) { + if (parentPath.get("property").isBaseType("number")) { + state.candidates.push({ + cause: "indexGetter", + path + }); + return; + } + } else if (parentPath.node.property.name === "length") { + state.candidates.push({ + cause: "lengthGetter", + path + }); + return; + } + } + } + if (state.offset === 0 && parentPath.isSpreadElement()) { + const call = parentPath.parentPath; + if (call.isCallExpression() && call.node.arguments.length === 1) { + state.candidates.push({ + cause: "argSpread", + path + }); + return; + } + } + state.references.push(path); + } + }, + BindingIdentifier(path, state) { + if (referencesRest(path, state)) { + state.deopted = true; + } + } +}; +function getParamsCount(node) { + let count = node.params.length; + if (count > 0 && _core.types.isIdentifier(node.params[0], { + name: "this" + })) { + count -= 1; + } + return count; +} +function hasRest(node) { + const length = node.params.length; + return length > 0 && _core.types.isRestElement(node.params[length - 1]); +} +function optimiseIndexGetter(path, argsId, offset) { + const offsetLiteral = _core.types.numericLiteral(offset); + let index; + const parent = path.parent; + if (_core.types.isNumericLiteral(parent.property)) { + index = _core.types.numericLiteral(parent.property.value + offset); + } else if (offset === 0) { + index = parent.property; + } else { + index = _core.types.binaryExpression("+", parent.property, _core.types.cloneNode(offsetLiteral)); + } + const { + scope, + parentPath + } = path; + if (!scope.isPure(index)) { + const temp = scope.generateUidIdentifierBasedOnNode(index); + scope.push({ + id: temp, + kind: "var" + }); + parentPath.replaceWith(restIndexImpure({ + ARGUMENTS: argsId, + OFFSET: offsetLiteral, + INDEX: index, + REF: _core.types.cloneNode(temp) + })); + } else { + parentPath.replaceWith(restIndex({ + ARGUMENTS: argsId, + OFFSET: offsetLiteral, + INDEX: index + })); + const replacedParentPath = parentPath; + const offsetTestPath = replacedParentPath.get("test"); + const valRes = offsetTestPath.get("left").evaluate(); + if (valRes.confident) { + if (valRes.value === true) { + replacedParentPath.replaceWith(scope.buildUndefinedNode()); + } else { + offsetTestPath.replaceWith(offsetTestPath.get("right")); + } + } + } +} +function optimiseLengthGetter(path, argsId, offset) { + if (offset) { + path.parentPath.replaceWith(restLength({ + ARGUMENTS: argsId, + OFFSET: _core.types.numericLiteral(offset) + })); + } else { + path.replaceWith(argsId); + } +} +function convertFunctionRest(path) { + const { + node, + scope + } = path; + if (!hasRest(node)) return false; + const restPath = path.get(`params.${node.params.length - 1}.argument`); + if (!restPath.isIdentifier()) { + const shadowedParams = new Set(); + (0, _shadowUtils.collectShadowedParamsNames)(restPath, path.scope, shadowedParams); + let needsIIFE = shadowedParams.size > 0; + if (!needsIIFE) { + const state = { + needsOuterBinding: false, + scope + }; + restPath.traverse(_shadowUtils.iifeVisitor, state); + needsIIFE = state.needsOuterBinding; + } + if (needsIIFE) { + path.ensureBlock(); + path.set("body", _core.types.blockStatement([(0, _shadowUtils.buildScopeIIFE)(shadowedParams, path.node.body)])); + } + } + let rest = restPath.node; + node.params.pop(); + if (_core.types.isPattern(rest)) { + const pattern = rest; + rest = scope.generateUidIdentifier("ref"); + const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(pattern, rest)]); + path.ensureBlock(); + node.body.body.unshift(declar); + } else if (rest.name === "arguments") { + scope.rename(rest.name); + } + const argsId = _core.types.identifier("arguments"); + const paramsCount = getParamsCount(node); + const state = { + references: [], + offset: paramsCount, + argumentsNode: argsId, + outerBinding: scope.getBindingIdentifier(rest.name), + candidates: [], + name: rest.name, + deopted: false + }; + path.traverse(memberExpressionOptimisationVisitor, state); + if (!state.deopted && !state.references.length) { + for (const { + path, + cause + } of state.candidates) { + const clonedArgsId = _core.types.cloneNode(argsId); + switch (cause) { + case "indexGetter": + optimiseIndexGetter(path, clonedArgsId, state.offset); + break; + case "lengthGetter": + optimiseLengthGetter(path, clonedArgsId, state.offset); + break; + default: + path.replaceWith(clonedArgsId); + } + } + return true; + } + state.references.push(...state.candidates.map(({ + path + }) => path)); + const start = _core.types.numericLiteral(paramsCount); + const key = scope.generateUidIdentifier("key"); + const len = scope.generateUidIdentifier("len"); + let arrKey, arrLen; + if (paramsCount) { + arrKey = _core.types.binaryExpression("-", _core.types.cloneNode(key), _core.types.cloneNode(start)); + arrLen = _core.types.conditionalExpression(_core.types.binaryExpression(">", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.binaryExpression("-", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.numericLiteral(0)); + } else { + arrKey = _core.types.identifier(key.name); + arrLen = _core.types.identifier(len.name); + } + const loop = buildRest({ + ARGUMENTS: argsId, + ARRAY_KEY: arrKey, + ARRAY_LEN: arrLen, + START: start, + ARRAY: rest, + KEY: key, + LEN: len + }); + if (state.deopted) { + node.body.body.unshift(loop); + } else { + let target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent(); + target.findParent(path => { + if (path.isLoop()) { + target = path; + } else { + return path.isFunction(); + } + }); + target.insertBefore(loop); + } + return true; +} + +//# sourceMappingURL=rest.js.map + + +/***/ }), + +/***/ 92399: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.buildScopeIIFE = buildScopeIIFE; +exports.collectShadowedParamsNames = collectShadowedParamsNames; +exports.iifeVisitor = void 0; +var _core = __nccwpck_require__(85414); +const iifeVisitor = exports.iifeVisitor = { + "ReferencedIdentifier|BindingIdentifier"(path, state) { + const { + scope, + node + } = path; + const { + name + } = node; + if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) { + state.needsOuterBinding = true; + path.stop(); + } + }, + "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": path => path.skip() +}; +function collectShadowedParamsNames(param, functionScope, shadowedParams) { + for (const name of Object.keys(param.getBindingIdentifiers())) { + var _functionScope$bindin; + const constantViolations = (_functionScope$bindin = functionScope.bindings[name]) == null ? void 0 : _functionScope$bindin.constantViolations; + if (constantViolations) { + for (const redeclarator of constantViolations) { + const node = redeclarator.node; + switch (node.type) { + case "VariableDeclarator": + { + if (node.init === null) { + const declaration = redeclarator.parentPath; + if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) { + redeclarator.remove(); + break; + } + } + shadowedParams.add(name); + break; + } + case "FunctionDeclaration": + shadowedParams.add(name); + break; + } + } + } + } +} +function buildScopeIIFE(shadowedParams, body) { + const args = []; + const params = []; + for (const name of shadowedParams) { + args.push(_core.types.identifier(name)); + params.push(_core.types.identifier(name)); + } + return _core.types.returnStatement(_core.types.callExpression(_core.types.arrowFunctionExpression(params, body), args)); +} + +//# sourceMappingURL=shadow-utils.js.map + + +/***/ }), + +/***/ 30484: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.declare = declare; +exports.declarePreset = void 0; +const apiPolyfills = { + assertVersion: api => range => { + throwVersionError(range, api.version); + } +}; +{ + Object.assign(apiPolyfills, { + targets: () => () => { + return {}; + }, + assumption: () => () => { + return undefined; + }, + addExternalDependency: () => () => {} + }); +} +function declare(builder) { + return (api, options, dirname) => { + let clonedApi; + for (const name of Object.keys(apiPolyfills)) { + if (api[name]) continue; + clonedApi != null ? clonedApi : clonedApi = copyApiObject(api); + clonedApi[name] = apiPolyfills[name](clonedApi); + } + return builder(clonedApi != null ? clonedApi : api, options || {}, dirname); + }; +} +const declarePreset = exports.declarePreset = declare; +function copyApiObject(api) { + let proto = null; + if (typeof api.version === "string" && /^7\./.test(api.version)) { + proto = Object.getPrototypeOf(api); + if (proto && (!hasOwnProperty.call(proto, "version") || !hasOwnProperty.call(proto, "transform") || !hasOwnProperty.call(proto, "template") || !hasOwnProperty.call(proto, "types"))) { + proto = null; + } + } + return Object.assign({}, proto, api); +} +function throwVersionError(range, version) { + if (typeof range === "number") { + if (!Number.isInteger(range)) { + throw new Error("Expected string or integer value."); + } + range = `^${range}.0.0-0`; + } + if (typeof range !== "string") { + throw new Error("Expected string or integer value."); + } + const limit = Error.stackTraceLimit; + if (typeof limit === "number" && limit < 25) { + Error.stackTraceLimit = 25; + } + let err; + if (version.slice(0, 2) === "7.") { + err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`); + } else { + err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`); + } + if (typeof limit === "number") { + Error.stackTraceLimit = limit; + } + throw Object.assign(err, { + code: "BABEL_VERSION_UNSUPPORTED", + version, + range + }); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 66631: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createTemplateBuilder; +var _options = __nccwpck_require__(97886); +var _string = __nccwpck_require__(1231); +var _literal = __nccwpck_require__(98083); +const NO_PLACEHOLDER = (0, _options.validate)({ + placeholderPattern: false +}); +function createTemplateBuilder(formatter, defaultOpts) { + const templateFnCache = new WeakMap(); + const templateAstCache = new WeakMap(); + const cachedOpts = defaultOpts || (0, _options.validate)(null); + return Object.assign((tpl, ...args) => { + if (typeof tpl === "string") { + if (args.length > 1) throw new Error("Unexpected extra params."); + return extendedTrace((0, _string.default)(formatter, tpl, (0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])))); + } else if (Array.isArray(tpl)) { + let builder = templateFnCache.get(tpl); + if (!builder) { + builder = (0, _literal.default)(formatter, tpl, cachedOpts); + templateFnCache.set(tpl, builder); + } + return extendedTrace(builder(args)); + } else if (typeof tpl === "object" && tpl) { + if (args.length > 0) throw new Error("Unexpected extra params."); + return createTemplateBuilder(formatter, (0, _options.merge)(cachedOpts, (0, _options.validate)(tpl))); + } + throw new Error(`Unexpected template param ${typeof tpl}`); + }, { + ast: (tpl, ...args) => { + if (typeof tpl === "string") { + if (args.length > 1) throw new Error("Unexpected extra params."); + return (0, _string.default)(formatter, tpl, (0, _options.merge)((0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])), NO_PLACEHOLDER))(); + } else if (Array.isArray(tpl)) { + let builder = templateAstCache.get(tpl); + if (!builder) { + builder = (0, _literal.default)(formatter, tpl, (0, _options.merge)(cachedOpts, NO_PLACEHOLDER)); + templateAstCache.set(tpl, builder); + } + return builder(args)(); + } + throw new Error(`Unexpected template param ${typeof tpl}`); + } + }); +} +function extendedTrace(fn) { + let rootStack = ""; + try { + throw new Error(); + } catch (error) { + if (error.stack) { + rootStack = error.stack.split("\n").slice(3).join("\n"); + } + } + return arg => { + try { + return fn(arg); + } catch (err) { + err.stack += `\n =============\n${rootStack}`; + throw err; + } + }; +} + +//# sourceMappingURL=builder.js.map + + +/***/ }), + +/***/ 53637: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.statements = exports.statement = exports.smart = exports.program = exports.expression = void 0; +var _t = __nccwpck_require__(16535); +const { + assertExpressionStatement +} = _t; +function makeStatementFormatter(fn) { + return { + code: str => `/* @babel/template */;\n${str}`, + validate: () => {}, + unwrap: ast => { + return fn(ast.program.body.slice(1)); + } + }; +} +const smart = exports.smart = makeStatementFormatter(body => { + if (body.length > 1) { + return body; + } else { + return body[0]; + } +}); +const statements = exports.statements = makeStatementFormatter(body => body); +const statement = exports.statement = makeStatementFormatter(body => { + if (body.length === 0) { + throw new Error("Found nothing to return."); + } + if (body.length > 1) { + throw new Error("Found multiple statements but wanted one"); + } + return body[0]; +}); +const expression = exports.expression = { + code: str => `(\n${str}\n)`, + validate: ast => { + if (ast.program.body.length > 1) { + throw new Error("Found multiple statements but wanted one"); + } + if (expression.unwrap(ast).start === 0) { + throw new Error("Parse result included parens."); + } + }, + unwrap: ({ + program + }) => { + const [stmt] = program.body; + assertExpressionStatement(stmt); + return stmt.expression; + } +}; +const program = exports.program = { + code: str => str, + validate: () => {}, + unwrap: ast => ast.program +}; + +//# sourceMappingURL=formatters.js.map + + +/***/ }), + +/***/ 19648: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.statements = exports.statement = exports.smart = exports.program = exports.expression = exports["default"] = void 0; +var formatters = __nccwpck_require__(53637); +var _builder = __nccwpck_require__(66631); +const smart = exports.smart = (0, _builder.default)(formatters.smart); +const statement = exports.statement = (0, _builder.default)(formatters.statement); +const statements = exports.statements = (0, _builder.default)(formatters.statements); +const expression = exports.expression = (0, _builder.default)(formatters.expression); +const program = exports.program = (0, _builder.default)(formatters.program); +var _default = exports["default"] = Object.assign(smart.bind(undefined), { + smart, + statement, + statements, + expression, + program, + ast: smart.ast +}); + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 98083: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = literalTemplate; +var _options = __nccwpck_require__(97886); +var _parse = __nccwpck_require__(73539); +var _populate = __nccwpck_require__(18624); +function literalTemplate(formatter, tpl, opts) { + const { + metadata, + names + } = buildLiteralData(formatter, tpl, opts); + return arg => { + const defaultReplacements = {}; + arg.forEach((replacement, i) => { + defaultReplacements[names[i]] = replacement; + }); + return arg => { + const replacements = (0, _options.normalizeReplacements)(arg); + if (replacements) { + Object.keys(replacements).forEach(key => { + if (hasOwnProperty.call(defaultReplacements, key)) { + throw new Error("Unexpected replacement overlap."); + } + }); + } + return formatter.unwrap((0, _populate.default)(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements)); + }; + }; +} +function buildLiteralData(formatter, tpl, opts) { + let prefix = "BABEL_TPL$"; + const raw = tpl.join(""); + do { + prefix = "$$" + prefix; + } while (raw.includes(prefix)); + const { + names, + code + } = buildTemplateCode(tpl, prefix); + const metadata = (0, _parse.default)(formatter, formatter.code(code), { + parser: opts.parser, + placeholderWhitelist: new Set(names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])), + placeholderPattern: opts.placeholderPattern, + preserveComments: opts.preserveComments, + syntacticPlaceholders: opts.syntacticPlaceholders + }); + return { + metadata, + names + }; +} +function buildTemplateCode(tpl, prefix) { + const names = []; + let code = tpl[0]; + for (let i = 1; i < tpl.length; i++) { + const value = `${prefix}${i - 1}`; + names.push(value); + code += value + tpl[i]; + } + return { + names, + code + }; +} + +//# sourceMappingURL=literal.js.map + + +/***/ }), + +/***/ 97886: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.merge = merge; +exports.normalizeReplacements = normalizeReplacements; +exports.validate = validate; +const _excluded = ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"]; +function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } +function merge(a, b) { + const { + placeholderWhitelist = a.placeholderWhitelist, + placeholderPattern = a.placeholderPattern, + preserveComments = a.preserveComments, + syntacticPlaceholders = a.syntacticPlaceholders + } = b; + return { + parser: Object.assign({}, a.parser, b.parser), + placeholderWhitelist, + placeholderPattern, + preserveComments, + syntacticPlaceholders + }; +} +function validate(opts) { + if (opts != null && typeof opts !== "object") { + throw new Error("Unknown template options."); + } + const _ref = opts || {}, + { + placeholderWhitelist, + placeholderPattern, + preserveComments, + syntacticPlaceholders + } = _ref, + parser = _objectWithoutPropertiesLoose(_ref, _excluded); + if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) { + throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined"); + } + if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) { + throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined"); + } + if (preserveComments != null && typeof preserveComments !== "boolean") { + throw new Error("'.preserveComments' must be a boolean, null, or undefined"); + } + if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") { + throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined"); + } + if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) { + throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'"); + } + return { + parser, + placeholderWhitelist: placeholderWhitelist || undefined, + placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern, + preserveComments: preserveComments == null ? undefined : preserveComments, + syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders + }; +} +function normalizeReplacements(replacements) { + if (Array.isArray(replacements)) { + return replacements.reduce((acc, replacement, i) => { + acc["$" + i] = replacement; + return acc; + }, {}); + } else if (typeof replacements === "object" || replacements == null) { + return replacements || undefined; + } + throw new Error("Template replacements must be an array, object, null, or undefined"); +} + +//# sourceMappingURL=options.js.map + + +/***/ }), + +/***/ 73539: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = parseAndBuildMetadata; +var _t = __nccwpck_require__(16535); +var _parser = __nccwpck_require__(5429); +var _codeFrame = __nccwpck_require__(90147); +const { + isCallExpression, + isExpressionStatement, + isFunction, + isIdentifier, + isJSXIdentifier, + isNewExpression, + isPlaceholder, + isStatement, + isStringLiteral, + removePropertiesDeep, + traverse +} = _t; +const PATTERN = /^[_$A-Z0-9]+$/; +function parseAndBuildMetadata(formatter, code, opts) { + const { + placeholderWhitelist, + placeholderPattern, + preserveComments, + syntacticPlaceholders + } = opts; + const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders); + removePropertiesDeep(ast, { + preserveComments + }); + formatter.validate(ast); + const state = { + syntactic: { + placeholders: [], + placeholderNames: new Set() + }, + legacy: { + placeholders: [], + placeholderNames: new Set() + }, + placeholderWhitelist, + placeholderPattern, + syntacticPlaceholders + }; + traverse(ast, placeholderVisitorHandler, state); + return Object.assign({ + ast + }, state.syntactic.placeholders.length ? state.syntactic : state.legacy); +} +function placeholderVisitorHandler(node, ancestors, state) { + var _state$placeholderWhi; + let name; + let hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0; + if (isPlaceholder(node)) { + if (state.syntacticPlaceholders === false) { + throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false."); + } + name = node.name.name; + hasSyntacticPlaceholders = true; + } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) { + return; + } else if (isIdentifier(node) || isJSXIdentifier(node)) { + name = node.name; + } else if (isStringLiteral(node)) { + name = node.value; + } else { + return; + } + if (hasSyntacticPlaceholders && (state.placeholderPattern != null || state.placeholderWhitelist != null)) { + throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'"); + } + if (!hasSyntacticPlaceholders && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) { + return; + } + ancestors = ancestors.slice(); + const { + node: parent, + key + } = ancestors[ancestors.length - 1]; + let type; + if (isStringLiteral(node) || isPlaceholder(node, { + expectedNode: "StringLiteral" + })) { + type = "string"; + } else if (isNewExpression(parent) && key === "arguments" || isCallExpression(parent) && key === "arguments" || isFunction(parent) && key === "params") { + type = "param"; + } else if (isExpressionStatement(parent) && !isPlaceholder(node)) { + type = "statement"; + ancestors = ancestors.slice(0, -1); + } else if (isStatement(node) && isPlaceholder(node)) { + type = "statement"; + } else { + type = "other"; + } + const { + placeholders, + placeholderNames + } = !hasSyntacticPlaceholders ? state.legacy : state.syntactic; + placeholders.push({ + name, + type, + resolve: ast => resolveAncestors(ast, ancestors), + isDuplicate: placeholderNames.has(name) + }); + placeholderNames.add(name); +} +function resolveAncestors(ast, ancestors) { + let parent = ast; + for (let i = 0; i < ancestors.length - 1; i++) { + const { + key, + index + } = ancestors[i]; + if (index === undefined) { + parent = parent[key]; + } else { + parent = parent[key][index]; + } + } + const { + key, + index + } = ancestors[ancestors.length - 1]; + return { + parent, + key, + index + }; +} +function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) { + const plugins = (parserOpts.plugins || []).slice(); + if (syntacticPlaceholders !== false) { + plugins.push("placeholders"); + } + parserOpts = Object.assign({ + allowAwaitOutsideFunction: true, + allowReturnOutsideFunction: true, + allowNewTargetOutsideFunction: true, + allowSuperOutsideMethod: true, + allowYieldOutsideFunction: true, + sourceType: "module" + }, parserOpts, { + plugins + }); + try { + return (0, _parser.parse)(code, parserOpts); + } catch (err) { + const loc = err.loc; + if (loc) { + err.message += "\n" + (0, _codeFrame.codeFrameColumns)(code, { + start: loc + }); + err.code = "BABEL_TEMPLATE_PARSE_ERROR"; + } + throw err; + } +} + +//# sourceMappingURL=parse.js.map + + +/***/ }), + +/***/ 18624: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = populatePlaceholders; +var _t = __nccwpck_require__(16535); +const { + blockStatement, + cloneNode, + emptyStatement, + expressionStatement, + identifier, + isStatement, + isStringLiteral, + stringLiteral, + validate +} = _t; +function populatePlaceholders(metadata, replacements) { + const ast = cloneNode(metadata.ast); + if (replacements) { + metadata.placeholders.forEach(placeholder => { + if (!hasOwnProperty.call(replacements, placeholder.name)) { + const placeholderName = placeholder.name; + throw new Error(`Error: No substitution given for "${placeholderName}". If this is not meant to be a + placeholder you may want to consider passing one of the following options to @babel/template: + - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])} + - { placeholderPattern: /^${placeholderName}$/ }`); + } + }); + Object.keys(replacements).forEach(key => { + if (!metadata.placeholderNames.has(key)) { + throw new Error(`Unknown substitution "${key}" given`); + } + }); + } + metadata.placeholders.slice().reverse().forEach(placeholder => { + try { + var _ref; + applyReplacement(placeholder, ast, (_ref = replacements && replacements[placeholder.name]) != null ? _ref : null); + } catch (e) { + e.message = `@babel/template placeholder "${placeholder.name}": ${e.message}`; + throw e; + } + }); + return ast; +} +function applyReplacement(placeholder, ast, replacement) { + if (placeholder.isDuplicate) { + if (Array.isArray(replacement)) { + replacement = replacement.map(node => cloneNode(node)); + } else if (typeof replacement === "object") { + replacement = cloneNode(replacement); + } + } + const { + parent, + key, + index + } = placeholder.resolve(ast); + if (placeholder.type === "string") { + if (typeof replacement === "string") { + replacement = stringLiteral(replacement); + } + if (!replacement || !isStringLiteral(replacement)) { + throw new Error("Expected string substitution"); + } + } else if (placeholder.type === "statement") { + if (index === undefined) { + if (!replacement) { + replacement = emptyStatement(); + } else if (Array.isArray(replacement)) { + replacement = blockStatement(replacement); + } else if (typeof replacement === "string") { + replacement = expressionStatement(identifier(replacement)); + } else if (!isStatement(replacement)) { + replacement = expressionStatement(replacement); + } + } else { + if (replacement && !Array.isArray(replacement)) { + if (typeof replacement === "string") { + replacement = identifier(replacement); + } + if (!isStatement(replacement)) { + replacement = expressionStatement(replacement); + } + } + } + } else if (placeholder.type === "param") { + if (typeof replacement === "string") { + replacement = identifier(replacement); + } + if (index === undefined) throw new Error("Assertion failure."); + } else { + if (typeof replacement === "string") { + replacement = identifier(replacement); + } + if (Array.isArray(replacement)) { + throw new Error("Cannot replace single expression with an array."); + } + } + function set(parent, key, value) { + const node = parent[key]; + parent[key] = value; + if (node.type === "Identifier" || node.type === "Placeholder") { + if (node.typeAnnotation) { + value.typeAnnotation = node.typeAnnotation; + } + if (node.optional) { + value.optional = node.optional; + } + if (node.decorators) { + value.decorators = node.decorators; + } + } + } + if (index === undefined) { + validate(parent, key, replacement); + set(parent, key, replacement); + } else { + const items = parent[key].slice(); + if (placeholder.type === "statement" || placeholder.type === "param") { + if (replacement == null) { + items.splice(index, 1); + } else if (Array.isArray(replacement)) { + items.splice(index, 1, ...replacement); + } else { + set(items, index, replacement); + } + } else { + set(items, index, replacement); + } + validate(parent, key, items); + parent[key] = items; + } +} + +//# sourceMappingURL=populate.js.map + + +/***/ }), + +/***/ 1231: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = stringTemplate; +var _options = __nccwpck_require__(97886); +var _parse = __nccwpck_require__(73539); +var _populate = __nccwpck_require__(18624); +function stringTemplate(formatter, code, opts) { + code = formatter.code(code); + let metadata; + return arg => { + const replacements = (0, _options.normalizeReplacements)(arg); + if (!metadata) metadata = (0, _parse.default)(formatter, code, opts); + return formatter.unwrap((0, _populate.default)(metadata, replacements)); + }; +} + +//# sourceMappingURL=string.js.map + + +/***/ }), + +/***/ 6730: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.clear = clear; +exports.clearPath = clearPath; +exports.clearScope = clearScope; +exports.getCachedPaths = getCachedPaths; +exports.getOrCreateCachedPaths = getOrCreateCachedPaths; +exports.scope = exports.path = void 0; +let pathsCache = exports.path = new WeakMap(); +let scope = exports.scope = new WeakMap(); +function clear() { + clearPath(); + clearScope(); +} +function clearPath() { + exports.path = pathsCache = new WeakMap(); +} +function clearScope() { + exports.scope = scope = new WeakMap(); +} +function getCachedPaths(path) { + const { + parent, + parentPath + } = path; + return pathsCache.get(parent); +} +function getOrCreateCachedPaths(node, parentPath) { + ; + let paths = pathsCache.get(node); + if (!paths) pathsCache.set(node, paths = new Map()); + return paths; +} + +//# sourceMappingURL=cache.js.map + + +/***/ }), + +/***/ 49767: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _index = __nccwpck_require__(91806); +var _t = __nccwpck_require__(16535); +var _context = __nccwpck_require__(74105); +const { + VISITOR_KEYS +} = _t; +class TraversalContext { + constructor(scope, opts, state, parentPath) { + this.queue = null; + this.priorityQueue = null; + this.parentPath = parentPath; + this.scope = scope; + this.state = state; + this.opts = opts; + } + shouldVisit(node) { + const opts = this.opts; + if (opts.enter || opts.exit) return true; + if (opts[node.type]) return true; + const keys = VISITOR_KEYS[node.type]; + if (!(keys != null && keys.length)) return false; + for (const key of keys) { + if (node[key]) { + return true; + } + } + return false; + } + create(node, container, key, listKey) { + return _index.default.get({ + parentPath: this.parentPath, + parent: node, + container, + key: key, + listKey + }); + } + maybeQueue(path, notPriority) { + if (this.queue) { + if (notPriority) { + this.queue.push(path); + } else { + this.priorityQueue.push(path); + } + } + } + visitMultiple(container, parent, listKey) { + if (container.length === 0) return false; + const queue = []; + for (let key = 0; key < container.length; key++) { + const node = container[key]; + if (node && this.shouldVisit(node)) { + queue.push(this.create(parent, container, key, listKey)); + } + } + return this.visitQueue(queue); + } + visitSingle(node, key) { + if (this.shouldVisit(node[key])) { + return this.visitQueue([this.create(node, node, key)]); + } else { + return false; + } + } + visitQueue(queue) { + this.queue = queue; + this.priorityQueue = []; + const visited = new WeakSet(); + let stop = false; + let visitIndex = 0; + for (; visitIndex < queue.length;) { + const path = queue[visitIndex]; + visitIndex++; + _context.resync.call(path); + if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== this) { + _context.pushContext.call(path, this); + } + if (path.key === null) continue; + const { + node + } = path; + if (visited.has(node)) continue; + if (node) visited.add(node); + if (path.visit()) { + stop = true; + break; + } + if (this.priorityQueue.length) { + stop = this.visitQueue(this.priorityQueue); + this.priorityQueue = []; + this.queue = queue; + if (stop) break; + } + } + for (let i = 0; i < visitIndex; i++) { + _context.popContext.call(queue[i]); + } + this.queue = null; + return stop; + } + visit(node, key) { + const nodes = node[key]; + if (!nodes) return false; + if (Array.isArray(nodes)) { + return this.visitMultiple(nodes, node, key); + } else { + return this.visitSingle(node, key); + } + } +} +exports["default"] = TraversalContext; + +//# sourceMappingURL=context.js.map + + +/***/ }), + +/***/ 18327: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +class Hub { + getCode() {} + getScope() {} + addHelper() { + throw new Error("Helpers are not supported by the default hub."); + } + buildError(node, msg, Error = TypeError) { + return new Error(msg); + } +} +exports["default"] = Hub; + +//# sourceMappingURL=hub.js.map + + +/***/ }), + +/***/ 50148: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "Hub", ({ + enumerable: true, + get: function () { + return _hub.default; + } +})); +Object.defineProperty(exports, "NodePath", ({ + enumerable: true, + get: function () { + return _index.default; + } +})); +Object.defineProperty(exports, "Scope", ({ + enumerable: true, + get: function () { + return _index2.default; + } +})); +exports.visitors = exports["default"] = void 0; +__nccwpck_require__(74105); +var visitors = __nccwpck_require__(38133); +exports.visitors = visitors; +var _t = __nccwpck_require__(16535); +var cache = __nccwpck_require__(6730); +var _traverseNode = __nccwpck_require__(95469); +var _index = __nccwpck_require__(91806); +var _index2 = __nccwpck_require__(18171); +var _hub = __nccwpck_require__(18327); +const { + VISITOR_KEYS, + removeProperties, + traverseFast +} = _t; +function traverse(parent, opts = {}, scope, state, parentPath, visitSelf) { + if (!parent) return; + if (!opts.noScope && !scope) { + if (parent.type !== "Program" && parent.type !== "File") { + throw new Error("You must pass a scope and parentPath unless traversing a Program/File. " + `Instead of that you tried to traverse a ${parent.type} node without ` + "passing scope and parentPath."); + } + } + if (!parentPath && visitSelf) { + throw new Error("visitSelf can only be used when providing a NodePath."); + } + if (!VISITOR_KEYS[parent.type]) { + return; + } + visitors.explode(opts); + (0, _traverseNode.traverseNode)(parent, opts, scope, state, parentPath, null, visitSelf); +} +var _default = exports["default"] = traverse; +traverse.visitors = visitors; +traverse.verify = visitors.verify; +traverse.explode = visitors.explode; +traverse.cheap = function (node, enter) { + traverseFast(node, enter); + return; +}; +traverse.node = function (node, opts, scope, state, path, skipKeys) { + (0, _traverseNode.traverseNode)(node, opts, scope, state, path, skipKeys); +}; +traverse.clearNode = function (node, opts) { + removeProperties(node, opts); +}; +traverse.removeProperties = function (tree, opts) { + traverseFast(tree, traverse.clearNode, opts); + return tree; +}; +traverse.hasType = function (tree, type, denylistTypes) { + if (denylistTypes != null && denylistTypes.includes(tree.type)) return false; + if (tree.type === type) return true; + return traverseFast(tree, function (node) { + if (denylistTypes != null && denylistTypes.includes(node.type)) { + return traverseFast.skip; + } + if (node.type === type) { + return traverseFast.stop; + } + }); +}; +traverse.cache = cache; + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 63405: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.find = find; +exports.findParent = findParent; +exports.getAncestry = getAncestry; +exports.getDeepestCommonAncestorFrom = getDeepestCommonAncestorFrom; +exports.getEarliestCommonAncestorFrom = getEarliestCommonAncestorFrom; +exports.getFunctionParent = getFunctionParent; +exports.getStatementParent = getStatementParent; +exports.inType = inType; +exports.isAncestor = isAncestor; +exports.isDescendant = isDescendant; +var _t = __nccwpck_require__(16535); +const { + VISITOR_KEYS +} = _t; +function findParent(callback) { + let path = this; + while (path = path.parentPath) { + if (callback(path)) return path; + } + return null; +} +function find(callback) { + let path = this; + do { + if (callback(path)) return path; + } while (path = path.parentPath); + return null; +} +function getFunctionParent() { + return this.findParent(p => p.isFunction()); +} +function getStatementParent() { + let path = this; + do { + if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) { + break; + } else { + path = path.parentPath; + } + } while (path); + if (path && (path.isProgram() || path.isFile())) { + throw new Error("File/Program node, we can't possibly find a statement parent to this"); + } + return path; +} +function getEarliestCommonAncestorFrom(paths) { + return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) { + let earliest; + const keys = VISITOR_KEYS[deepest.type]; + for (const ancestry of ancestries) { + const path = ancestry[i + 1]; + if (!earliest) { + earliest = path; + continue; + } + if (path.listKey && earliest.listKey === path.listKey) { + if (path.key < earliest.key) { + earliest = path; + continue; + } + } + const earliestKeyIndex = keys.indexOf(earliest.parentKey); + const currentKeyIndex = keys.indexOf(path.parentKey); + if (earliestKeyIndex > currentKeyIndex) { + earliest = path; + } + } + return earliest; + }); +} +function getDeepestCommonAncestorFrom(paths, filter) { + if (!paths.length) { + return this; + } + if (paths.length === 1) { + return paths[0]; + } + let minDepth = Infinity; + let lastCommonIndex, lastCommon; + const ancestries = paths.map(path => { + const ancestry = []; + do { + ancestry.unshift(path); + } while ((path = path.parentPath) && path !== this); + if (ancestry.length < minDepth) { + minDepth = ancestry.length; + } + return ancestry; + }); + const first = ancestries[0]; + depthLoop: for (let i = 0; i < minDepth; i++) { + const shouldMatch = first[i]; + for (const ancestry of ancestries) { + if (ancestry[i] !== shouldMatch) { + break depthLoop; + } + } + lastCommonIndex = i; + lastCommon = shouldMatch; + } + if (lastCommon) { + if (filter) { + return filter(lastCommon, lastCommonIndex, ancestries); + } else { + return lastCommon; + } + } else { + throw new Error("Couldn't find intersection"); + } +} +function getAncestry() { + let path = this; + const paths = []; + do { + paths.push(path); + } while (path = path.parentPath); + return paths; +} +function isAncestor(maybeDescendant) { + return maybeDescendant.isDescendant(this); +} +function isDescendant(maybeAncestor) { + return !!this.findParent(parent => parent === maybeAncestor); +} +function inType(...candidateTypes) { + let path = this; + while (path) { + if (candidateTypes.includes(path.node.type)) return true; + path = path.parentPath; + } + return false; +} + +//# sourceMappingURL=ancestry.js.map + + +/***/ }), + +/***/ 17794: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addComment = addComment; +exports.addComments = addComments; +exports.shareCommentsWithSiblings = shareCommentsWithSiblings; +var _t = __nccwpck_require__(16535); +const { + addComment: _addComment, + addComments: _addComments +} = _t; +function shareCommentsWithSiblings() { + if (typeof this.key === "string") return; + const node = this.node; + if (!node) return; + const trailing = node.trailingComments; + const leading = node.leadingComments; + if (!trailing && !leading) return; + const prev = this.getSibling(this.key - 1); + const next = this.getSibling(this.key + 1); + const hasPrev = Boolean(prev.node); + const hasNext = Boolean(next.node); + if (hasPrev) { + if (leading) { + prev.addComments("trailing", removeIfExisting(leading, prev.node.trailingComments)); + } + if (trailing && !hasNext) prev.addComments("trailing", trailing); + } + if (hasNext) { + if (trailing) { + next.addComments("leading", removeIfExisting(trailing, next.node.leadingComments)); + } + if (leading && !hasPrev) next.addComments("leading", leading); + } +} +function removeIfExisting(list, toRemove) { + if (!(toRemove != null && toRemove.length)) return list; + const set = new Set(toRemove); + return list.filter(el => { + return !set.has(el); + }); +} +function addComment(type, content, line) { + _addComment(this.node, type, content, line); +} +function addComments(type, comments) { + _addComments(this.node, type, comments); +} + +//# sourceMappingURL=comments.js.map + + +/***/ }), + +/***/ 74105: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._call = _call; +exports._getQueueContexts = _getQueueContexts; +exports._resyncKey = _resyncKey; +exports._resyncList = _resyncList; +exports._resyncParent = _resyncParent; +exports._resyncRemoved = _resyncRemoved; +exports.call = call; +exports.isDenylisted = isDenylisted; +exports.popContext = popContext; +exports.pushContext = pushContext; +exports.requeue = requeue; +exports.requeueComputedKeyAndDecorators = requeueComputedKeyAndDecorators; +exports.resync = resync; +exports.setContext = setContext; +exports.setKey = setKey; +exports.setScope = setScope; +exports.setup = setup; +exports.skip = skip; +exports.skipKey = skipKey; +exports.stop = stop; +exports.visit = visit; +var _traverseNode = __nccwpck_require__(95469); +var _index = __nccwpck_require__(91806); +var _removal = __nccwpck_require__(23562); +var t = __nccwpck_require__(16535); +function call(key) { + const opts = this.opts; + this.debug(key); + if (this.node) { + if (_call.call(this, opts[key])) return true; + } + if (this.node) { + var _opts$this$node$type; + return _call.call(this, (_opts$this$node$type = opts[this.node.type]) == null ? void 0 : _opts$this$node$type[key]); + } + return false; +} +function _call(fns) { + if (!fns) return false; + for (const fn of fns) { + if (!fn) continue; + const node = this.node; + if (!node) return true; + const ret = fn.call(this.state, this, this.state); + if (ret && typeof ret === "object" && typeof ret.then === "function") { + throw new Error(`You appear to be using a plugin with an async traversal visitor, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`); + } + if (ret) { + throw new Error(`Unexpected return value from visitor method ${fn}`); + } + if (this.node !== node) return true; + if (this._traverseFlags > 0) return true; + } + return false; +} +function isDenylisted() { + var _this$opts$denylist; + const denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist; + return denylist == null ? void 0 : denylist.includes(this.node.type); +} +{ + exports.isBlacklisted = isDenylisted; +} +function restoreContext(path, context) { + if (path.context !== context) { + path.context = context; + path.state = context.state; + path.opts = context.opts; + } +} +function visit() { + var _this$opts$shouldSkip, _this$opts; + if (!this.node) { + return false; + } + if (this.isDenylisted()) { + return false; + } + if ((_this$opts$shouldSkip = (_this$opts = this.opts).shouldSkip) != null && _this$opts$shouldSkip.call(_this$opts, this)) { + return false; + } + const currentContext = this.context; + if (this.shouldSkip || call.call(this, "enter")) { + this.debug("Skip..."); + return this.shouldStop; + } + restoreContext(this, currentContext); + this.debug("Recursing into..."); + this.shouldStop = (0, _traverseNode.traverseNode)(this.node, this.opts, this.scope, this.state, this, this.skipKeys); + restoreContext(this, currentContext); + call.call(this, "exit"); + return this.shouldStop; +} +function skip() { + this.shouldSkip = true; +} +function skipKey(key) { + if (this.skipKeys == null) { + this.skipKeys = {}; + } + this.skipKeys[key] = true; +} +function stop() { + this._traverseFlags |= _index.SHOULD_SKIP | _index.SHOULD_STOP; +} +function setScope() { + var _this$opts2, _this$scope; + if ((_this$opts2 = this.opts) != null && _this$opts2.noScope) return; + let path = this.parentPath; + if ((this.key === "key" || this.listKey === "decorators") && path.isMethod() || this.key === "discriminant" && path.isSwitchStatement()) { + path = path.parentPath; + } + let target; + while (path && !target) { + var _path$opts; + if ((_path$opts = path.opts) != null && _path$opts.noScope) return; + target = path.scope; + path = path.parentPath; + } + this.scope = this.getScope(target); + (_this$scope = this.scope) == null || _this$scope.init(); +} +function setContext(context) { + if (this.skipKeys != null) { + this.skipKeys = {}; + } + this._traverseFlags = 0; + if (context) { + this.context = context; + this.state = context.state; + this.opts = context.opts; + } + setScope.call(this); + return this; +} +function resync() { + if (this.removed) return; + _resyncParent.call(this); + _resyncList.call(this); + _resyncKey.call(this); +} +function _resyncParent() { + if (this.parentPath) { + this.parent = this.parentPath.node; + } +} +function _resyncKey() { + if (!this.container) return; + if (this.node === this.container[this.key]) { + return; + } + if (Array.isArray(this.container)) { + for (let i = 0; i < this.container.length; i++) { + if (this.container[i] === this.node) { + setKey.call(this, i); + return; + } + } + } else { + for (const key of Object.keys(this.container)) { + if (this.container[key] === this.node) { + setKey.call(this, key); + return; + } + } + } + this.key = null; +} +function _resyncList() { + if (!this.parent || !this.inList) return; + const newContainer = this.parent[this.listKey]; + if (this.container === newContainer) return; + this.container = newContainer || null; +} +function _resyncRemoved() { + if (this.key == null || !this.container || this.container[this.key] !== this.node) { + _removal._markRemoved.call(this); + } +} +function popContext() { + this.contexts.pop(); + if (this.contexts.length > 0) { + this.setContext(this.contexts[this.contexts.length - 1]); + } else { + this.setContext(undefined); + } +} +function pushContext(context) { + this.contexts.push(context); + this.setContext(context); +} +function setup(parentPath, container, listKey, key) { + this.listKey = listKey; + this.container = container; + this.parentPath = parentPath || this.parentPath; + setKey.call(this, key); +} +function setKey(key) { + var _this$node; + this.key = key; + this.node = this.container[this.key]; + this.type = (_this$node = this.node) == null ? void 0 : _this$node.type; +} +function requeue(pathToQueue = this) { + if (pathToQueue.removed) return; + ; + const contexts = this.contexts; + for (const context of contexts) { + context.maybeQueue(pathToQueue); + } +} +function requeueComputedKeyAndDecorators() { + const { + context, + node + } = this; + if (!t.isPrivate(node) && node.computed) { + context.maybeQueue(this.get("key")); + } + if (node.decorators) { + for (const decorator of this.get("decorators")) { + context.maybeQueue(decorator); + } + } +} +function _getQueueContexts() { + let path = this; + let contexts = this.contexts; + while (!contexts.length) { + path = path.parentPath; + if (!path) break; + contexts = path.contexts; + } + return contexts; +} + +//# sourceMappingURL=context.js.map + + +/***/ }), + +/***/ 26900: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.arrowFunctionToExpression = arrowFunctionToExpression; +exports.ensureBlock = ensureBlock; +exports.ensureFunctionName = ensureFunctionName; +exports.splitExportDeclaration = splitExportDeclaration; +exports.toComputedKey = toComputedKey; +exports.unwrapFunctionEnvironment = unwrapFunctionEnvironment; +var _t = __nccwpck_require__(16535); +var _template = __nccwpck_require__(19648); +var _visitors = __nccwpck_require__(38133); +var _context = __nccwpck_require__(74105); +const { + arrowFunctionExpression, + assignmentExpression, + binaryExpression, + blockStatement, + callExpression, + conditionalExpression, + expressionStatement, + identifier, + isIdentifier, + jsxIdentifier, + logicalExpression, + LOGICAL_OPERATORS, + memberExpression, + metaProperty, + numericLiteral, + objectExpression, + restElement, + returnStatement, + sequenceExpression, + spreadElement, + stringLiteral, + super: _super, + thisExpression, + toExpression, + unaryExpression, + toBindingIdentifierName, + isFunction, + isAssignmentPattern, + isRestElement, + getFunctionName, + cloneNode, + variableDeclaration, + variableDeclarator, + exportNamedDeclaration, + exportSpecifier, + inherits +} = _t; +function toComputedKey() { + let key; + if (this.isMemberExpression()) { + key = this.node.property; + } else if (this.isProperty() || this.isMethod()) { + key = this.node.key; + } else { + throw new ReferenceError("todo"); + } + if (!this.node.computed) { + if (isIdentifier(key)) key = stringLiteral(key.name); + } + return key; +} +function ensureBlock() { + const body = this.get("body"); + const bodyNode = body.node; + if (Array.isArray(body)) { + throw new Error("Can't convert array path to a block statement"); + } + if (!bodyNode) { + throw new Error("Can't convert node without a body"); + } + if (body.isBlockStatement()) { + return bodyNode; + } + const statements = []; + let stringPath = "body"; + let key; + let listKey; + if (body.isStatement()) { + listKey = "body"; + key = 0; + statements.push(body.node); + } else { + stringPath += ".body.0"; + if (this.isFunction()) { + key = "argument"; + statements.push(returnStatement(body.node)); + } else { + key = "expression"; + statements.push(expressionStatement(body.node)); + } + } + this.node.body = blockStatement(statements); + const parentPath = this.get(stringPath); + _context.setup.call(body, parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key); + return this.node; +} +{ + exports.arrowFunctionToShadowed = function () { + if (!this.isArrowFunctionExpression()) return; + this.arrowFunctionToExpression(); + }; +} +function unwrapFunctionEnvironment() { + if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) { + throw this.buildCodeFrameError("Can only unwrap the environment of a function."); + } + hoistFunctionEnvironment(this); +} +function setType(path, type) { + path.node.type = type; +} +function arrowFunctionToExpression({ + allowInsertArrow = true, + allowInsertArrowWithRest = allowInsertArrow, + noNewArrows = !(_arguments$ => (_arguments$ = arguments[0]) == null ? void 0 : _arguments$.specCompliant)() +} = {}) { + if (!this.isArrowFunctionExpression()) { + throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression."); + } + let self = this; + if (!noNewArrows) { + var _self$ensureFunctionN; + self = (_self$ensureFunctionN = self.ensureFunctionName(false)) != null ? _self$ensureFunctionN : self; + } + const { + thisBinding, + fnPath: fn + } = hoistFunctionEnvironment(self, noNewArrows, allowInsertArrow, allowInsertArrowWithRest); + fn.ensureBlock(); + setType(fn, "FunctionExpression"); + if (!noNewArrows) { + const checkBinding = thisBinding ? null : fn.scope.generateUidIdentifier("arrowCheckId"); + if (checkBinding) { + fn.parentPath.scope.push({ + id: checkBinding, + init: objectExpression([]) + }); + } + fn.get("body").unshiftContainer("body", expressionStatement(callExpression(this.hub.addHelper("newArrowCheck"), [thisExpression(), checkBinding ? identifier(checkBinding.name) : identifier(thisBinding)]))); + fn.replaceWith(callExpression(memberExpression(fn.node, identifier("bind")), [checkBinding ? identifier(checkBinding.name) : thisExpression()])); + return fn.get("callee.object"); + } + return fn; +} +const getSuperCallsVisitor = (0, _visitors.environmentVisitor)({ + CallExpression(child, { + allSuperCalls + }) { + if (!child.get("callee").isSuper()) return; + allSuperCalls.push(child); + } +}); +function hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = true, allowInsertArrowWithRest = true) { + let arrowParent; + let thisEnvFn = fnPath.findParent(p => { + if (p.isArrowFunctionExpression()) { + arrowParent != null ? arrowParent : arrowParent = p; + return false; + } + return p.isFunction() || p.isProgram() || p.isClassProperty({ + static: false + }) || p.isClassPrivateProperty({ + static: false + }); + }); + const inConstructor = thisEnvFn.isClassMethod({ + kind: "constructor" + }); + if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) { + if (arrowParent) { + thisEnvFn = arrowParent; + } else if (allowInsertArrow) { + fnPath.replaceWith(callExpression(arrowFunctionExpression([], toExpression(fnPath.node)), [])); + thisEnvFn = fnPath.get("callee"); + fnPath = thisEnvFn.get("body"); + } else { + throw fnPath.buildCodeFrameError("Unable to transform arrow inside class property"); + } + } + const { + thisPaths, + argumentsPaths, + newTargetPaths, + superProps, + superCalls + } = getScopeInformation(fnPath); + if (inConstructor && superCalls.length > 0) { + if (!allowInsertArrow) { + throw superCalls[0].buildCodeFrameError("When using '@babel/plugin-transform-arrow-functions', " + "it's not possible to compile `super()` in an arrow function without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration."); + } + if (!allowInsertArrowWithRest) { + throw superCalls[0].buildCodeFrameError("When using '@babel/plugin-transform-parameters', " + "it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration."); + } + const allSuperCalls = []; + thisEnvFn.traverse(getSuperCallsVisitor, { + allSuperCalls + }); + const superBinding = getSuperBinding(thisEnvFn); + allSuperCalls.forEach(superCall => { + const callee = identifier(superBinding); + callee.loc = superCall.node.callee.loc; + superCall.get("callee").replaceWith(callee); + }); + } + if (argumentsPaths.length > 0) { + const argumentsBinding = getBinding(thisEnvFn, "arguments", () => { + const args = () => identifier("arguments"); + if (thisEnvFn.scope.path.isProgram()) { + return conditionalExpression(binaryExpression("===", unaryExpression("typeof", args()), stringLiteral("undefined")), thisEnvFn.scope.buildUndefinedNode(), args()); + } else { + return args(); + } + }); + argumentsPaths.forEach(argumentsChild => { + const argsRef = identifier(argumentsBinding); + argsRef.loc = argumentsChild.node.loc; + argumentsChild.replaceWith(argsRef); + }); + } + if (newTargetPaths.length > 0) { + const newTargetBinding = getBinding(thisEnvFn, "newtarget", () => metaProperty(identifier("new"), identifier("target"))); + newTargetPaths.forEach(targetChild => { + const targetRef = identifier(newTargetBinding); + targetRef.loc = targetChild.node.loc; + targetChild.replaceWith(targetRef); + }); + } + if (superProps.length > 0) { + if (!allowInsertArrow) { + throw superProps[0].buildCodeFrameError("When using '@babel/plugin-transform-arrow-functions', " + "it's not possible to compile `super.prop` in an arrow function without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration."); + } + const flatSuperProps = superProps.reduce((acc, superProp) => acc.concat(standardizeSuperProperty(superProp)), []); + flatSuperProps.forEach(superProp => { + const key = superProp.node.computed ? "" : superProp.get("property").node.name; + const superParentPath = superProp.parentPath; + const isAssignment = superParentPath.isAssignmentExpression({ + left: superProp.node + }); + const isCall = superParentPath.isCallExpression({ + callee: superProp.node + }); + const isTaggedTemplate = superParentPath.isTaggedTemplateExpression({ + tag: superProp.node + }); + const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key); + const args = []; + if (superProp.node.computed) { + args.push(superProp.get("property").node); + } + if (isAssignment) { + const value = superParentPath.node.right; + args.push(value); + } + const call = callExpression(identifier(superBinding), args); + if (isCall) { + superParentPath.unshiftContainer("arguments", thisExpression()); + superProp.replaceWith(memberExpression(call, identifier("call"))); + thisPaths.push(superParentPath.get("arguments.0")); + } else if (isAssignment) { + superParentPath.replaceWith(call); + } else if (isTaggedTemplate) { + superProp.replaceWith(callExpression(memberExpression(call, identifier("bind"), false), [thisExpression()])); + thisPaths.push(superProp.get("arguments.0")); + } else { + superProp.replaceWith(call); + } + }); + } + let thisBinding; + if (thisPaths.length > 0 || !noNewArrows) { + thisBinding = getThisBinding(thisEnvFn, inConstructor); + if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) { + thisPaths.forEach(thisChild => { + const thisRef = thisChild.isJSX() ? jsxIdentifier(thisBinding) : identifier(thisBinding); + thisRef.loc = thisChild.node.loc; + thisChild.replaceWith(thisRef); + }); + if (!noNewArrows) thisBinding = null; + } + } + return { + thisBinding, + fnPath + }; +} +function isLogicalOp(op) { + return LOGICAL_OPERATORS.includes(op); +} +function standardizeSuperProperty(superProp) { + if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== "=") { + const assignmentPath = superProp.parentPath; + const op = assignmentPath.node.operator.slice(0, -1); + const value = assignmentPath.node.right; + const isLogicalAssignment = isLogicalOp(op); + if (superProp.node.computed) { + const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp"); + const object = superProp.node.object; + const property = superProp.node.property; + assignmentPath.get("left").replaceWith(memberExpression(object, assignmentExpression("=", tmp, property), true)); + assignmentPath.get("right").replaceWith(rightExpression(isLogicalAssignment ? "=" : op, memberExpression(object, identifier(tmp.name), true), value)); + } else { + const object = superProp.node.object; + const property = superProp.node.property; + assignmentPath.get("left").replaceWith(memberExpression(object, property)); + assignmentPath.get("right").replaceWith(rightExpression(isLogicalAssignment ? "=" : op, memberExpression(object, identifier(property.name)), value)); + } + if (isLogicalAssignment) { + assignmentPath.replaceWith(logicalExpression(op, assignmentPath.node.left, assignmentPath.node.right)); + } else { + assignmentPath.node.operator = "="; + } + return [assignmentPath.get("left"), assignmentPath.get("right").get("left")]; + } else if (superProp.parentPath.isUpdateExpression()) { + const updateExpr = superProp.parentPath; + const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp"); + const computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier("prop") : null; + const parts = [assignmentExpression("=", tmp, memberExpression(superProp.node.object, computedKey ? assignmentExpression("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), assignmentExpression("=", memberExpression(superProp.node.object, computedKey ? identifier(computedKey.name) : superProp.node.property, superProp.node.computed), binaryExpression(superProp.parentPath.node.operator[0], identifier(tmp.name), numericLiteral(1)))]; + if (!superProp.parentPath.node.prefix) { + parts.push(identifier(tmp.name)); + } + updateExpr.replaceWith(sequenceExpression(parts)); + const left = updateExpr.get("expressions.0.right"); + const right = updateExpr.get("expressions.1.left"); + return [left, right]; + } + return [superProp]; + function rightExpression(op, left, right) { + if (op === "=") { + return assignmentExpression("=", left, right); + } else { + return binaryExpression(op, left, right); + } + } +} +function hasSuperClass(thisEnvFn) { + return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass; +} +const assignSuperThisVisitor = (0, _visitors.environmentVisitor)({ + CallExpression(child, { + supers, + thisBinding + }) { + if (!child.get("callee").isSuper()) return; + if (supers.has(child.node)) return; + supers.add(child.node); + child.replaceWithMultiple([child.node, assignmentExpression("=", identifier(thisBinding), identifier("this"))]); + } +}); +function getThisBinding(thisEnvFn, inConstructor) { + return getBinding(thisEnvFn, "this", thisBinding => { + if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression(); + thisEnvFn.traverse(assignSuperThisVisitor, { + supers: new WeakSet(), + thisBinding + }); + }); +} +function getSuperBinding(thisEnvFn) { + return getBinding(thisEnvFn, "supercall", () => { + const argsBinding = thisEnvFn.scope.generateUidIdentifier("args"); + return arrowFunctionExpression([restElement(argsBinding)], callExpression(_super(), [spreadElement(identifier(argsBinding.name))])); + }); +} +function getSuperPropBinding(thisEnvFn, isAssignment, propName) { + const op = isAssignment ? "set" : "get"; + return getBinding(thisEnvFn, `superprop_${op}:${propName || ""}`, () => { + const argsList = []; + let fnBody; + if (propName) { + fnBody = memberExpression(_super(), identifier(propName)); + } else { + const method = thisEnvFn.scope.generateUidIdentifier("prop"); + argsList.unshift(method); + fnBody = memberExpression(_super(), identifier(method.name), true); + } + if (isAssignment) { + const valueIdent = thisEnvFn.scope.generateUidIdentifier("value"); + argsList.push(valueIdent); + fnBody = assignmentExpression("=", fnBody, identifier(valueIdent.name)); + } + return arrowFunctionExpression(argsList, fnBody); + }); +} +function getBinding(thisEnvFn, key, init) { + const cacheKey = "binding:" + key; + let data = thisEnvFn.getData(cacheKey); + if (!data) { + const id = thisEnvFn.scope.generateUidIdentifier(key); + data = id.name; + thisEnvFn.setData(cacheKey, data); + thisEnvFn.scope.push({ + id: id, + init: init(data) + }); + } + return data; +} +const getScopeInformationVisitor = (0, _visitors.environmentVisitor)({ + ThisExpression(child, { + thisPaths + }) { + thisPaths.push(child); + }, + JSXIdentifier(child, { + thisPaths + }) { + if (child.node.name !== "this") return; + if (!child.parentPath.isJSXMemberExpression({ + object: child.node + }) && !child.parentPath.isJSXOpeningElement({ + name: child.node + })) { + return; + } + thisPaths.push(child); + }, + CallExpression(child, { + superCalls + }) { + if (child.get("callee").isSuper()) superCalls.push(child); + }, + MemberExpression(child, { + superProps + }) { + if (child.get("object").isSuper()) superProps.push(child); + }, + Identifier(child, { + argumentsPaths + }) { + if (!child.isReferencedIdentifier({ + name: "arguments" + })) return; + let curr = child.scope; + do { + if (curr.hasOwnBinding("arguments")) { + curr.rename("arguments"); + return; + } + if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) { + break; + } + } while (curr = curr.parent); + argumentsPaths.push(child); + }, + MetaProperty(child, { + newTargetPaths + }) { + if (!child.get("meta").isIdentifier({ + name: "new" + })) return; + if (!child.get("property").isIdentifier({ + name: "target" + })) return; + newTargetPaths.push(child); + } +}); +function getScopeInformation(fnPath) { + const thisPaths = []; + const argumentsPaths = []; + const newTargetPaths = []; + const superProps = []; + const superCalls = []; + fnPath.traverse(getScopeInformationVisitor, { + thisPaths, + argumentsPaths, + newTargetPaths, + superProps, + superCalls + }); + return { + thisPaths, + argumentsPaths, + newTargetPaths, + superProps, + superCalls + }; +} +function splitExportDeclaration() { + if (!this.isExportDeclaration() || this.isExportAllDeclaration()) { + throw new Error("Only default and named export declarations can be split."); + } + if (this.isExportNamedDeclaration() && this.get("specifiers").length > 0) { + throw new Error("It doesn't make sense to split exported specifiers."); + } + const declaration = this.get("declaration"); + if (this.isExportDefaultDeclaration()) { + const standaloneDeclaration = declaration.isFunctionDeclaration() || declaration.isClassDeclaration(); + const exportExpr = declaration.isFunctionExpression() || declaration.isClassExpression(); + const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope; + let id = declaration.node.id; + let needBindingRegistration = false; + if (!id) { + needBindingRegistration = true; + id = scope.generateUidIdentifier("default"); + if (standaloneDeclaration || exportExpr) { + declaration.node.id = cloneNode(id); + } + } else if (exportExpr && scope.hasBinding(id.name)) { + needBindingRegistration = true; + id = scope.generateUidIdentifier(id.name); + } + const updatedDeclaration = standaloneDeclaration ? declaration.node : variableDeclaration("var", [variableDeclarator(cloneNode(id), declaration.node)]); + const updatedExportDeclaration = exportNamedDeclaration(null, [exportSpecifier(cloneNode(id), identifier("default"))]); + this.insertAfter(updatedExportDeclaration); + this.replaceWith(updatedDeclaration); + if (needBindingRegistration) { + scope.registerDeclaration(this); + } + return this; + } else if (this.get("specifiers").length > 0) { + throw new Error("It doesn't make sense to split exported specifiers."); + } + const bindingIdentifiers = declaration.getOuterBindingIdentifiers(); + const specifiers = Object.keys(bindingIdentifiers).map(name => { + return exportSpecifier(identifier(name), identifier(name)); + }); + const aliasDeclar = exportNamedDeclaration(null, specifiers); + this.insertAfter(aliasDeclar); + this.replaceWith(declaration.node); + return this; +} +const refersOuterBindingVisitor = { + "ReferencedIdentifier|BindingIdentifier"(path, state) { + if (path.node.name !== state.name) return; + state.needsRename = true; + path.stop(); + }, + Scope(path, state) { + if (path.scope.hasOwnBinding(state.name)) { + path.skip(); + } + } +}; +function ensureFunctionName(supportUnicodeId) { + if (this.node.id) return this; + const res = getFunctionName(this.node, this.parent); + if (res == null) return this; + let { + name + } = res; + if (!supportUnicodeId && /[\uD800-\uDFFF]/.test(name)) { + return null; + } + if (name.startsWith("get ") || name.startsWith("set ")) { + return null; + } + name = toBindingIdentifierName(name.replace(/[/ ]/g, "_")); + const id = identifier(name); + inherits(id, res.originalNode); + const state = { + needsRename: false, + name + }; + const { + scope + } = this; + const binding = scope.getOwnBinding(name); + if (binding) { + if (binding.kind === "param") { + state.needsRename = true; + } else {} + } else if (scope.parent.hasBinding(name) || scope.hasGlobal(name)) { + this.traverse(refersOuterBindingVisitor, state); + } + if (!state.needsRename) { + this.node.id = id; + scope.getProgramParent().references[id.name] = true; + return this; + } + if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) { + scope.rename(id.name); + this.node.id = id; + scope.getProgramParent().references[id.name] = true; + return this; + } + if (!isFunction(this.node)) return null; + const key = scope.generateUidIdentifier(id.name); + const params = []; + for (let i = 0, len = getFunctionArity(this.node); i < len; i++) { + params.push(scope.generateUidIdentifier("x")); + } + const call = _template.default.expression.ast` + (function (${key}) { + function ${id}(${params}) { + return ${cloneNode(key)}.apply(this, arguments); + } + + ${cloneNode(id)}.toString = function () { + return ${cloneNode(key)}.toString(); + } + + return ${cloneNode(id)}; + })(${toExpression(this.node)}) + `; + return this.replaceWith(call)[0].get("arguments.0"); +} +function getFunctionArity(node) { + const count = node.params.findIndex(param => isAssignmentPattern(param) || isRestElement(param)); + return count === -1 ? node.params.length : count; +} + +//# sourceMappingURL=conversion.js.map + + +/***/ }), + +/***/ 20398: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.evaluate = evaluate; +exports.evaluateTruthy = evaluateTruthy; +const VALID_OBJECT_CALLEES = ["Number", "String", "Math"]; +const VALID_IDENTIFIER_CALLEES = ["isFinite", "isNaN", "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", null, null]; +const INVALID_METHODS = ["random"]; +function isValidObjectCallee(val) { + return VALID_OBJECT_CALLEES.includes(val); +} +function isValidIdentifierCallee(val) { + return VALID_IDENTIFIER_CALLEES.includes(val); +} +function isInvalidMethod(val) { + return INVALID_METHODS.includes(val); +} +function evaluateTruthy() { + const res = this.evaluate(); + if (res.confident) return !!res.value; +} +function deopt(path, state) { + if (!state.confident) return; + state.deoptPath = path; + state.confident = false; +} +const Globals = new Map([["undefined", undefined], ["Infinity", Infinity], ["NaN", NaN]]); +function evaluateCached(path, state) { + const { + node + } = path; + const { + seen + } = state; + if (seen.has(node)) { + const existing = seen.get(node); + if (existing.resolved) { + return existing.value; + } else { + deopt(path, state); + return; + } + } else { + const item = { + resolved: false + }; + seen.set(node, item); + const val = _evaluate(path, state); + if (state.confident) { + item.resolved = true; + item.value = val; + } + return val; + } +} +function _evaluate(path, state) { + if (!state.confident) return; + if (path.isSequenceExpression()) { + const exprs = path.get("expressions"); + return evaluateCached(exprs[exprs.length - 1], state); + } + if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) { + return path.node.value; + } + if (path.isNullLiteral()) { + return null; + } + if (path.isTemplateLiteral()) { + return evaluateQuasis(path, path.node.quasis, state); + } + if (path.isTaggedTemplateExpression() && path.get("tag").isMemberExpression()) { + const object = path.get("tag.object"); + const { + node: { + name + } + } = object; + const property = path.get("tag.property"); + if (object.isIdentifier() && name === "String" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === "raw") { + return evaluateQuasis(path, path.node.quasi.quasis, state, true); + } + } + if (path.isConditionalExpression()) { + const testResult = evaluateCached(path.get("test"), state); + if (!state.confident) return; + if (testResult) { + return evaluateCached(path.get("consequent"), state); + } else { + return evaluateCached(path.get("alternate"), state); + } + } + if (path.isExpressionWrapper()) { + return evaluateCached(path.get("expression"), state); + } + if (path.isMemberExpression() && !path.parentPath.isCallExpression({ + callee: path.node + })) { + const property = path.get("property"); + const object = path.get("object"); + if (object.isLiteral()) { + const value = object.node.value; + const type = typeof value; + let key = null; + if (path.node.computed) { + key = evaluateCached(property, state); + if (!state.confident) return; + } else if (property.isIdentifier()) { + key = property.node.name; + } + if ((type === "number" || type === "string") && key != null && (typeof key === "number" || typeof key === "string")) { + return value[key]; + } + } + } + if (path.isReferencedIdentifier()) { + const binding = path.scope.getBinding(path.node.name); + if (binding) { + if (binding.constantViolations.length > 0 || path.node.start < binding.path.node.end) { + deopt(binding.path, state); + return; + } + const bindingPathScope = binding.path.scope; + if (binding.kind === "var" && bindingPathScope !== binding.scope) { + let hasUnsafeBlock = !bindingPathScope.path.parentPath.isBlockStatement(); + for (let scope = bindingPathScope.parent; scope; scope = scope.parent) { + var _scope$path$parentPat; + if (scope === path.scope) { + if (hasUnsafeBlock) { + deopt(binding.path, state); + return; + } + break; + } + if ((_scope$path$parentPat = scope.path.parentPath) != null && _scope$path$parentPat.isBlockStatement()) { + hasUnsafeBlock = true; + } + } + } + if (binding.hasValue) { + return binding.value; + } + } + const name = path.node.name; + if (Globals.has(name)) { + if (!binding) { + return Globals.get(name); + } + deopt(binding.path, state); + return; + } + const resolved = path.resolve(); + if (resolved === path) { + deopt(path, state); + return; + } + const value = evaluateCached(resolved, state); + if (typeof value === "object" && value !== null && binding.references > 1) { + deopt(resolved, state); + return; + } + return value; + } + if (path.isUnaryExpression({ + prefix: true + })) { + if (path.node.operator === "void") { + return undefined; + } + const argument = path.get("argument"); + if (path.node.operator === "typeof" && (argument.isFunction() || argument.isClass())) { + return "function"; + } + const arg = evaluateCached(argument, state); + if (!state.confident) return; + switch (path.node.operator) { + case "!": + return !arg; + case "+": + return +arg; + case "-": + return -arg; + case "~": + return ~arg; + case "typeof": + return typeof arg; + } + } + if (path.isArrayExpression()) { + const arr = []; + const elems = path.get("elements"); + for (const elem of elems) { + const elemValue = elem.evaluate(); + if (elemValue.confident) { + arr.push(elemValue.value); + } else { + deopt(elemValue.deopt, state); + return; + } + } + return arr; + } + if (path.isObjectExpression()) { + const obj = {}; + const props = path.get("properties"); + for (const prop of props) { + if (prop.isObjectMethod() || prop.isSpreadElement()) { + deopt(prop, state); + return; + } + const keyPath = prop.get("key"); + let key; + if (prop.node.computed) { + key = keyPath.evaluate(); + if (!key.confident) { + deopt(key.deopt, state); + return; + } + key = key.value; + } else if (keyPath.isIdentifier()) { + key = keyPath.node.name; + } else { + key = keyPath.node.value; + } + const valuePath = prop.get("value"); + let value = valuePath.evaluate(); + if (!value.confident) { + deopt(value.deopt, state); + return; + } + value = value.value; + obj[key] = value; + } + return obj; + } + if (path.isLogicalExpression()) { + const wasConfident = state.confident; + const left = evaluateCached(path.get("left"), state); + const leftConfident = state.confident; + state.confident = wasConfident; + const right = evaluateCached(path.get("right"), state); + const rightConfident = state.confident; + switch (path.node.operator) { + case "||": + state.confident = leftConfident && (!!left || rightConfident); + if (!state.confident) return; + return left || right; + case "&&": + state.confident = leftConfident && (!left || rightConfident); + if (!state.confident) return; + return left && right; + case "??": + state.confident = leftConfident && (left != null || rightConfident); + if (!state.confident) return; + return left != null ? left : right; + } + } + if (path.isBinaryExpression()) { + const left = evaluateCached(path.get("left"), state); + if (!state.confident) return; + const right = evaluateCached(path.get("right"), state); + if (!state.confident) return; + switch (path.node.operator) { + case "-": + return left - right; + case "+": + return left + right; + case "/": + return left / right; + case "*": + return left * right; + case "%": + return left % right; + case "**": + return Math.pow(left, right); + case "<": + return left < right; + case ">": + return left > right; + case "<=": + return left <= right; + case ">=": + return left >= right; + case "==": + return left == right; + case "!=": + return left != right; + case "===": + return left === right; + case "!==": + return left !== right; + case "|": + return left | right; + case "&": + return left & right; + case "^": + return left ^ right; + case "<<": + return left << right; + case ">>": + return left >> right; + case ">>>": + return left >>> right; + } + } + if (path.isCallExpression()) { + const callee = path.get("callee"); + let context; + let func; + if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && (isValidObjectCallee(callee.node.name) || isValidIdentifierCallee(callee.node.name))) { + func = global[callee.node.name]; + } + if (callee.isMemberExpression()) { + const object = callee.get("object"); + const property = callee.get("property"); + if (object.isIdentifier() && property.isIdentifier() && isValidObjectCallee(object.node.name) && !isInvalidMethod(property.node.name)) { + context = global[object.node.name]; + const key = property.node.name; + if (hasOwnProperty.call(context, key)) { + func = context[key]; + } + } + if (object.isLiteral() && property.isIdentifier()) { + const type = typeof object.node.value; + if (type === "string" || type === "number") { + context = object.node.value; + func = context[property.node.name]; + } + } + } + if (func) { + const args = path.get("arguments").map(arg => evaluateCached(arg, state)); + if (!state.confident) return; + return func.apply(context, args); + } + } + deopt(path, state); +} +function evaluateQuasis(path, quasis, state, raw = false) { + let str = ""; + let i = 0; + const exprs = path.isTemplateLiteral() ? path.get("expressions") : path.get("quasi.expressions"); + for (const elem of quasis) { + if (!state.confident) break; + str += raw ? elem.value.raw : elem.value.cooked; + const expr = exprs[i++]; + if (expr) str += String(evaluateCached(expr, state)); + } + if (!state.confident) return; + return str; +} +function evaluate() { + const state = { + confident: true, + deoptPath: null, + seen: new Map() + }; + let value = evaluateCached(this, state); + if (!state.confident) value = undefined; + return { + confident: state.confident, + deopt: state.deoptPath, + value: value + }; +} + +//# sourceMappingURL=evaluation.js.map + + +/***/ }), + +/***/ 47588: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._getKey = _getKey; +exports._getPattern = _getPattern; +exports.get = get; +exports.getAllNextSiblings = getAllNextSiblings; +exports.getAllPrevSiblings = getAllPrevSiblings; +exports.getAssignmentIdentifiers = getAssignmentIdentifiers; +exports.getBindingIdentifierPaths = getBindingIdentifierPaths; +exports.getBindingIdentifiers = getBindingIdentifiers; +exports.getCompletionRecords = getCompletionRecords; +exports.getNextSibling = getNextSibling; +exports.getOpposite = getOpposite; +exports.getOuterBindingIdentifierPaths = getOuterBindingIdentifierPaths; +exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers; +exports.getPrevSibling = getPrevSibling; +exports.getSibling = getSibling; +var _index = __nccwpck_require__(91806); +var _t = __nccwpck_require__(16535); +const { + getAssignmentIdentifiers: _getAssignmentIdentifiers, + getBindingIdentifiers: _getBindingIdentifiers, + getOuterBindingIdentifiers: _getOuterBindingIdentifiers, + numericLiteral, + unaryExpression +} = _t; +const NORMAL_COMPLETION = 0; +const BREAK_COMPLETION = 1; +function NormalCompletion(path) { + return { + type: NORMAL_COMPLETION, + path + }; +} +function BreakCompletion(path) { + return { + type: BREAK_COMPLETION, + path + }; +} +function getOpposite() { + if (this.key === "left") { + return this.getSibling("right"); + } else if (this.key === "right") { + return this.getSibling("left"); + } + return null; +} +function addCompletionRecords(path, records, context) { + if (path) { + records.push(..._getCompletionRecords(path, context)); + } + return records; +} +function completionRecordForSwitch(cases, records, context) { + let lastNormalCompletions = []; + for (let i = 0; i < cases.length; i++) { + const casePath = cases[i]; + const caseCompletions = _getCompletionRecords(casePath, context); + const normalCompletions = []; + const breakCompletions = []; + for (const c of caseCompletions) { + if (c.type === NORMAL_COMPLETION) { + normalCompletions.push(c); + } + if (c.type === BREAK_COMPLETION) { + breakCompletions.push(c); + } + } + if (normalCompletions.length) { + lastNormalCompletions = normalCompletions; + } + records.push(...breakCompletions); + } + records.push(...lastNormalCompletions); + return records; +} +function normalCompletionToBreak(completions) { + completions.forEach(c => { + c.type = BREAK_COMPLETION; + }); +} +function replaceBreakStatementInBreakCompletion(completions, reachable) { + completions.forEach(c => { + if (c.path.isBreakStatement({ + label: null + })) { + if (reachable) { + c.path.replaceWith(unaryExpression("void", numericLiteral(0))); + } else { + c.path.remove(); + } + } + }); +} +function getStatementListCompletion(paths, context) { + const completions = []; + if (context.canHaveBreak) { + let lastNormalCompletions = []; + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + const newContext = Object.assign({}, context, { + inCaseClause: false + }); + if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) { + newContext.shouldPopulateBreak = true; + } else { + newContext.shouldPopulateBreak = false; + } + const statementCompletions = _getCompletionRecords(path, newContext); + if (statementCompletions.length > 0 && statementCompletions.every(c => c.type === BREAK_COMPLETION)) { + if (lastNormalCompletions.length > 0 && statementCompletions.every(c => c.path.isBreakStatement({ + label: null + }))) { + normalCompletionToBreak(lastNormalCompletions); + completions.push(...lastNormalCompletions); + if (lastNormalCompletions.some(c => c.path.isDeclaration())) { + completions.push(...statementCompletions); + if (!context.shouldPreserveBreak) { + replaceBreakStatementInBreakCompletion(statementCompletions, true); + } + } + if (!context.shouldPreserveBreak) { + replaceBreakStatementInBreakCompletion(statementCompletions, false); + } + } else { + completions.push(...statementCompletions); + if (!context.shouldPopulateBreak && !context.shouldPreserveBreak) { + replaceBreakStatementInBreakCompletion(statementCompletions, true); + } + } + break; + } + if (i === paths.length - 1) { + completions.push(...statementCompletions); + } else { + lastNormalCompletions = []; + for (let i = 0; i < statementCompletions.length; i++) { + const c = statementCompletions[i]; + if (c.type === BREAK_COMPLETION) { + completions.push(c); + } + if (c.type === NORMAL_COMPLETION) { + lastNormalCompletions.push(c); + } + } + } + } + } else if (paths.length) { + for (let i = paths.length - 1; i >= 0; i--) { + const pathCompletions = _getCompletionRecords(paths[i], context); + if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration() && !pathCompletions[0].path.isEmptyStatement()) { + completions.push(...pathCompletions); + break; + } + } + } + return completions; +} +function _getCompletionRecords(path, context) { + let records = []; + if (path.isIfStatement()) { + records = addCompletionRecords(path.get("consequent"), records, context); + records = addCompletionRecords(path.get("alternate"), records, context); + } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) { + return addCompletionRecords(path.get("body"), records, context); + } else if (path.isProgram() || path.isBlockStatement()) { + return getStatementListCompletion(path.get("body"), context); + } else if (path.isFunction()) { + return _getCompletionRecords(path.get("body"), context); + } else if (path.isTryStatement()) { + records = addCompletionRecords(path.get("block"), records, context); + records = addCompletionRecords(path.get("handler"), records, context); + } else if (path.isCatchClause()) { + return addCompletionRecords(path.get("body"), records, context); + } else if (path.isSwitchStatement()) { + return completionRecordForSwitch(path.get("cases"), records, context); + } else if (path.isSwitchCase()) { + return getStatementListCompletion(path.get("consequent"), { + canHaveBreak: true, + shouldPopulateBreak: false, + inCaseClause: true, + shouldPreserveBreak: context.shouldPreserveBreak + }); + } else if (path.isBreakStatement()) { + records.push(BreakCompletion(path)); + } else { + records.push(NormalCompletion(path)); + } + return records; +} +function getCompletionRecords(shouldPreserveBreak = false) { + const records = _getCompletionRecords(this, { + canHaveBreak: false, + shouldPopulateBreak: false, + inCaseClause: false, + shouldPreserveBreak + }); + return records.map(r => r.path); +} +function getSibling(key) { + return _index.default.get({ + parentPath: this.parentPath, + parent: this.parent, + container: this.container, + listKey: this.listKey, + key: key + }).setContext(this.context); +} +function getPrevSibling() { + return this.getSibling(this.key - 1); +} +function getNextSibling() { + return this.getSibling(this.key + 1); +} +function getAllNextSiblings() { + let _key = this.key; + let sibling = this.getSibling(++_key); + const siblings = []; + while (sibling.node) { + siblings.push(sibling); + sibling = this.getSibling(++_key); + } + return siblings; +} +function getAllPrevSiblings() { + let _key = this.key; + let sibling = this.getSibling(--_key); + const siblings = []; + while (sibling.node) { + siblings.push(sibling); + sibling = this.getSibling(--_key); + } + return siblings; +} +function get(key, context = true) { + if (context === true) context = this.context; + const parts = key.split("."); + if (parts.length === 1) { + return _getKey.call(this, key, context); + } else { + return _getPattern.call(this, parts, context); + } +} +function _getKey(key, context) { + const node = this.node; + const container = node[key]; + if (Array.isArray(container)) { + return container.map((_, i) => { + return _index.default.get({ + listKey: key, + parentPath: this, + parent: node, + container: container, + key: i + }).setContext(context); + }); + } else { + return _index.default.get({ + parentPath: this, + parent: node, + container: node, + key: key + }).setContext(context); + } +} +function _getPattern(parts, context) { + let path = this; + for (const part of parts) { + if (part === ".") { + path = path.parentPath; + } else { + if (Array.isArray(path)) { + path = path[part]; + } else { + path = path.get(part, context); + } + } + } + return path; +} +function getAssignmentIdentifiers() { + return _getAssignmentIdentifiers(this.node); +} +function getBindingIdentifiers(duplicates) { + return _getBindingIdentifiers(this.node, duplicates); +} +function getOuterBindingIdentifiers(duplicates) { + return _getOuterBindingIdentifiers(this.node, duplicates); +} +function getBindingIdentifierPaths(duplicates = false, outerOnly = false) { + const path = this; + const search = [path]; + const ids = Object.create(null); + while (search.length) { + const id = search.shift(); + if (!id) continue; + if (!id.node) continue; + const keys = _getBindingIdentifiers.keys[id.node.type]; + if (id.isIdentifier()) { + if (duplicates) { + const _ids = ids[id.node.name] = ids[id.node.name] || []; + _ids.push(id); + } else { + ids[id.node.name] = id; + } + continue; + } + if (id.isExportDeclaration()) { + const declaration = id.get("declaration"); + if (declaration.isDeclaration()) { + search.push(declaration); + } + continue; + } + if (outerOnly) { + if (id.isFunctionDeclaration()) { + search.push(id.get("id")); + continue; + } + if (id.isFunctionExpression()) { + continue; + } + } + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const child = id.get(key); + if (Array.isArray(child)) { + search.push(...child); + } else if (child.node) { + search.push(child); + } + } + } + } + return ids; +} +function getOuterBindingIdentifierPaths(duplicates = false) { + return this.getBindingIdentifierPaths(duplicates, true); +} + +//# sourceMappingURL=family.js.map + + +/***/ }), + +/***/ 91806: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = exports.SHOULD_STOP = exports.SHOULD_SKIP = exports.REMOVED = void 0; +var virtualTypes = __nccwpck_require__(74425); +var _debug = __nccwpck_require__(2830); +var _index = __nccwpck_require__(50148); +var _index2 = __nccwpck_require__(18171); +var _t = __nccwpck_require__(16535); +var t = _t; +var cache = __nccwpck_require__(6730); +var _generator = __nccwpck_require__(12123); +var NodePath_ancestry = __nccwpck_require__(63405); +var NodePath_inference = __nccwpck_require__(98882); +var NodePath_replacement = __nccwpck_require__(76178); +var NodePath_evaluation = __nccwpck_require__(20398); +var NodePath_conversion = __nccwpck_require__(26900); +var NodePath_introspection = __nccwpck_require__(7009); +var _context = __nccwpck_require__(74105); +var NodePath_context = _context; +var NodePath_removal = __nccwpck_require__(23562); +var NodePath_modification = __nccwpck_require__(20184); +var NodePath_family = __nccwpck_require__(47588); +var NodePath_comments = __nccwpck_require__(17794); +var NodePath_virtual_types_validator = __nccwpck_require__(66582); +const { + validate +} = _t; +const debug = _debug("babel"); +const REMOVED = exports.REMOVED = 1 << 0; +const SHOULD_STOP = exports.SHOULD_STOP = 1 << 1; +const SHOULD_SKIP = exports.SHOULD_SKIP = 1 << 2; +const NodePath_Final = exports["default"] = class NodePath { + constructor(hub, parent) { + this.contexts = []; + this.state = null; + this.opts = null; + this._traverseFlags = 0; + this.skipKeys = null; + this.parentPath = null; + this.container = null; + this.listKey = null; + this.key = null; + this.node = null; + this.type = null; + this._store = null; + this.parent = parent; + this.hub = hub; + this.data = null; + this.context = null; + this.scope = null; + } + get removed() { + return (this._traverseFlags & 1) > 0; + } + set removed(v) { + if (v) this._traverseFlags |= 1;else this._traverseFlags &= -2; + } + get shouldStop() { + return (this._traverseFlags & 2) > 0; + } + set shouldStop(v) { + if (v) this._traverseFlags |= 2;else this._traverseFlags &= -3; + } + get shouldSkip() { + return (this._traverseFlags & 4) > 0; + } + set shouldSkip(v) { + if (v) this._traverseFlags |= 4;else this._traverseFlags &= -5; + } + static get({ + hub, + parentPath, + parent, + container, + listKey, + key + }) { + if (!hub && parentPath) { + hub = parentPath.hub; + } + if (!parent) { + throw new Error("To get a node path the parent needs to exist"); + } + const targetNode = container[key]; + const paths = cache.getOrCreateCachedPaths(parent, parentPath); + let path = paths.get(targetNode); + if (!path) { + path = new NodePath(hub, parent); + if (targetNode) paths.set(targetNode, path); + } + _context.setup.call(path, parentPath, container, listKey, key); + return path; + } + getScope(scope) { + return this.isScope() ? new _index2.default(this) : scope; + } + setData(key, val) { + if (this.data == null) { + this.data = Object.create(null); + } + return this.data[key] = val; + } + getData(key, def) { + if (this.data == null) { + this.data = Object.create(null); + } + let val = this.data[key]; + if (val === undefined && def !== undefined) val = this.data[key] = def; + return val; + } + hasNode() { + return this.node != null; + } + buildCodeFrameError(msg, Error = SyntaxError) { + return this.hub.buildError(this.node, msg, Error); + } + traverse(visitor, state) { + (0, _index.default)(this.node, visitor, this.scope, state, this); + } + set(key, node) { + validate(this.node, key, node); + this.node[key] = node; + } + getPathLocation() { + const parts = []; + let path = this; + do { + let key = path.key; + if (path.inList) key = `${path.listKey}[${key}]`; + parts.unshift(key); + } while (path = path.parentPath); + return parts.join("."); + } + debug(message) { + if (!debug.enabled) return; + debug(`${this.getPathLocation()} ${this.type}: ${message}`); + } + toString() { + return (0, _generator.default)(this.node).code; + } + get inList() { + return !!this.listKey; + } + set inList(inList) { + if (!inList) { + this.listKey = null; + } + } + get parentKey() { + return this.listKey || this.key; + } +}; +const methods = { + findParent: NodePath_ancestry.findParent, + find: NodePath_ancestry.find, + getFunctionParent: NodePath_ancestry.getFunctionParent, + getStatementParent: NodePath_ancestry.getStatementParent, + getEarliestCommonAncestorFrom: NodePath_ancestry.getEarliestCommonAncestorFrom, + getDeepestCommonAncestorFrom: NodePath_ancestry.getDeepestCommonAncestorFrom, + getAncestry: NodePath_ancestry.getAncestry, + isAncestor: NodePath_ancestry.isAncestor, + isDescendant: NodePath_ancestry.isDescendant, + inType: NodePath_ancestry.inType, + getTypeAnnotation: NodePath_inference.getTypeAnnotation, + isBaseType: NodePath_inference.isBaseType, + couldBeBaseType: NodePath_inference.couldBeBaseType, + baseTypeStrictlyMatches: NodePath_inference.baseTypeStrictlyMatches, + isGenericType: NodePath_inference.isGenericType, + replaceWithMultiple: NodePath_replacement.replaceWithMultiple, + replaceWithSourceString: NodePath_replacement.replaceWithSourceString, + replaceWith: NodePath_replacement.replaceWith, + replaceExpressionWithStatements: NodePath_replacement.replaceExpressionWithStatements, + replaceInline: NodePath_replacement.replaceInline, + evaluateTruthy: NodePath_evaluation.evaluateTruthy, + evaluate: NodePath_evaluation.evaluate, + toComputedKey: NodePath_conversion.toComputedKey, + ensureBlock: NodePath_conversion.ensureBlock, + unwrapFunctionEnvironment: NodePath_conversion.unwrapFunctionEnvironment, + arrowFunctionToExpression: NodePath_conversion.arrowFunctionToExpression, + splitExportDeclaration: NodePath_conversion.splitExportDeclaration, + ensureFunctionName: NodePath_conversion.ensureFunctionName, + matchesPattern: NodePath_introspection.matchesPattern, + isStatic: NodePath_introspection.isStatic, + isNodeType: NodePath_introspection.isNodeType, + canHaveVariableDeclarationOrExpression: NodePath_introspection.canHaveVariableDeclarationOrExpression, + canSwapBetweenExpressionAndStatement: NodePath_introspection.canSwapBetweenExpressionAndStatement, + isCompletionRecord: NodePath_introspection.isCompletionRecord, + isStatementOrBlock: NodePath_introspection.isStatementOrBlock, + referencesImport: NodePath_introspection.referencesImport, + getSource: NodePath_introspection.getSource, + willIMaybeExecuteBefore: NodePath_introspection.willIMaybeExecuteBefore, + _guessExecutionStatusRelativeTo: NodePath_introspection._guessExecutionStatusRelativeTo, + resolve: NodePath_introspection.resolve, + isConstantExpression: NodePath_introspection.isConstantExpression, + isInStrictMode: NodePath_introspection.isInStrictMode, + isDenylisted: NodePath_context.isDenylisted, + visit: NodePath_context.visit, + skip: NodePath_context.skip, + skipKey: NodePath_context.skipKey, + stop: NodePath_context.stop, + setContext: NodePath_context.setContext, + requeue: NodePath_context.requeue, + requeueComputedKeyAndDecorators: NodePath_context.requeueComputedKeyAndDecorators, + remove: NodePath_removal.remove, + insertBefore: NodePath_modification.insertBefore, + insertAfter: NodePath_modification.insertAfter, + unshiftContainer: NodePath_modification.unshiftContainer, + pushContainer: NodePath_modification.pushContainer, + getOpposite: NodePath_family.getOpposite, + getCompletionRecords: NodePath_family.getCompletionRecords, + getSibling: NodePath_family.getSibling, + getPrevSibling: NodePath_family.getPrevSibling, + getNextSibling: NodePath_family.getNextSibling, + getAllNextSiblings: NodePath_family.getAllNextSiblings, + getAllPrevSiblings: NodePath_family.getAllPrevSiblings, + get: NodePath_family.get, + getAssignmentIdentifiers: NodePath_family.getAssignmentIdentifiers, + getBindingIdentifiers: NodePath_family.getBindingIdentifiers, + getOuterBindingIdentifiers: NodePath_family.getOuterBindingIdentifiers, + getBindingIdentifierPaths: NodePath_family.getBindingIdentifierPaths, + getOuterBindingIdentifierPaths: NodePath_family.getOuterBindingIdentifierPaths, + shareCommentsWithSiblings: NodePath_comments.shareCommentsWithSiblings, + addComment: NodePath_comments.addComment, + addComments: NodePath_comments.addComments +}; +Object.assign(NodePath_Final.prototype, methods); +{ + NodePath_Final.prototype.arrowFunctionToShadowed = NodePath_conversion[String("arrowFunctionToShadowed")]; + Object.assign(NodePath_Final.prototype, { + has: NodePath_introspection[String("has")], + is: NodePath_introspection[String("is")], + isnt: NodePath_introspection[String("isnt")], + equals: NodePath_introspection[String("equals")], + hoist: NodePath_modification[String("hoist")], + updateSiblingKeys: NodePath_modification.updateSiblingKeys, + call: NodePath_context.call, + isBlacklisted: NodePath_context[String("isBlacklisted")], + setScope: NodePath_context.setScope, + resync: NodePath_context.resync, + popContext: NodePath_context.popContext, + pushContext: NodePath_context.pushContext, + setup: NodePath_context.setup, + setKey: NodePath_context.setKey + }); +} +{ + NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions = NodePath_introspection._guessExecutionStatusRelativeTo; + NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions = NodePath_introspection._guessExecutionStatusRelativeTo; + Object.assign(NodePath_Final.prototype, { + _getTypeAnnotation: NodePath_inference._getTypeAnnotation, + _replaceWith: NodePath_replacement._replaceWith, + _resolve: NodePath_introspection._resolve, + _call: NodePath_context._call, + _resyncParent: NodePath_context._resyncParent, + _resyncKey: NodePath_context._resyncKey, + _resyncList: NodePath_context._resyncList, + _resyncRemoved: NodePath_context._resyncRemoved, + _getQueueContexts: NodePath_context._getQueueContexts, + _removeFromScope: NodePath_removal._removeFromScope, + _callRemovalHooks: NodePath_removal._callRemovalHooks, + _remove: NodePath_removal._remove, + _markRemoved: NodePath_removal._markRemoved, + _assertUnremoved: NodePath_removal._assertUnremoved, + _containerInsert: NodePath_modification._containerInsert, + _containerInsertBefore: NodePath_modification._containerInsertBefore, + _containerInsertAfter: NodePath_modification._containerInsertAfter, + _verifyNodeList: NodePath_modification._verifyNodeList, + _getKey: NodePath_family._getKey, + _getPattern: NodePath_family._getPattern + }); +} +for (const type of t.TYPES) { + const typeKey = `is${type}`; + const fn = t[typeKey]; + NodePath_Final.prototype[typeKey] = function (opts) { + return fn(this.node, opts); + }; + NodePath_Final.prototype[`assert${type}`] = function (opts) { + if (!fn(this.node, opts)) { + throw new TypeError(`Expected node path of type ${type}`); + } + }; +} +Object.assign(NodePath_Final.prototype, NodePath_virtual_types_validator); +for (const type of Object.keys(virtualTypes)) { + if (type[0] === "_") continue; + if (!t.TYPES.includes(type)) t.TYPES.push(type); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 98882: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._getTypeAnnotation = _getTypeAnnotation; +exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches; +exports.couldBeBaseType = couldBeBaseType; +exports.getTypeAnnotation = getTypeAnnotation; +exports.isBaseType = isBaseType; +exports.isGenericType = isGenericType; +var inferers = __nccwpck_require__(87116); +var _t = __nccwpck_require__(16535); +const { + anyTypeAnnotation, + isAnyTypeAnnotation, + isArrayTypeAnnotation, + isBooleanTypeAnnotation, + isEmptyTypeAnnotation, + isFlowBaseAnnotation, + isGenericTypeAnnotation, + isIdentifier, + isMixedTypeAnnotation, + isNumberTypeAnnotation, + isStringTypeAnnotation, + isTSArrayType, + isTSTypeAnnotation, + isTSTypeReference, + isTupleTypeAnnotation, + isTypeAnnotation, + isUnionTypeAnnotation, + isVoidTypeAnnotation, + stringTypeAnnotation, + voidTypeAnnotation +} = _t; +function getTypeAnnotation() { + let type = this.getData("typeAnnotation"); + if (type != null) { + return type; + } + type = _getTypeAnnotation.call(this) || anyTypeAnnotation(); + if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) { + type = type.typeAnnotation; + } + this.setData("typeAnnotation", type); + return type; +} +const typeAnnotationInferringNodes = new WeakSet(); +function _getTypeAnnotation() { + const node = this.node; + if (!node) { + if (this.key === "init" && this.parentPath.isVariableDeclarator()) { + const declar = this.parentPath.parentPath; + const declarParent = declar.parentPath; + if (declar.key === "left" && declarParent.isForInStatement()) { + return stringTypeAnnotation(); + } + if (declar.key === "left" && declarParent.isForOfStatement()) { + return anyTypeAnnotation(); + } + return voidTypeAnnotation(); + } else { + return; + } + } + if (node.typeAnnotation) { + return node.typeAnnotation; + } + if (typeAnnotationInferringNodes.has(node)) { + return; + } + typeAnnotationInferringNodes.add(node); + try { + var _inferer; + let inferer = inferers[node.type]; + if (inferer) { + return inferer.call(this, node); + } + inferer = inferers[this.parentPath.type]; + if ((_inferer = inferer) != null && _inferer.validParent) { + return this.parentPath.getTypeAnnotation(); + } + } finally { + typeAnnotationInferringNodes.delete(node); + } +} +function isBaseType(baseName, soft) { + return _isBaseType(baseName, this.getTypeAnnotation(), soft); +} +function _isBaseType(baseName, type, soft) { + if (baseName === "string") { + return isStringTypeAnnotation(type); + } else if (baseName === "number") { + return isNumberTypeAnnotation(type); + } else if (baseName === "boolean") { + return isBooleanTypeAnnotation(type); + } else if (baseName === "any") { + return isAnyTypeAnnotation(type); + } else if (baseName === "mixed") { + return isMixedTypeAnnotation(type); + } else if (baseName === "empty") { + return isEmptyTypeAnnotation(type); + } else if (baseName === "void") { + return isVoidTypeAnnotation(type); + } else { + if (soft) { + return false; + } else { + throw new Error(`Unknown base type ${baseName}`); + } + } +} +function couldBeBaseType(name) { + const type = this.getTypeAnnotation(); + if (isAnyTypeAnnotation(type)) return true; + if (isUnionTypeAnnotation(type)) { + for (const type2 of type.types) { + if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) { + return true; + } + } + return false; + } else { + return _isBaseType(name, type, true); + } +} +function baseTypeStrictlyMatches(rightArg) { + const left = this.getTypeAnnotation(); + const right = rightArg.getTypeAnnotation(); + if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) { + return right.type === left.type; + } + return false; +} +function isGenericType(genericName) { + const type = this.getTypeAnnotation(); + if (genericName === "Array") { + if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) { + return true; + } + } + return isGenericTypeAnnotation(type) && isIdentifier(type.id, { + name: genericName + }) || isTSTypeReference(type) && isIdentifier(type.typeName, { + name: genericName + }); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 77081: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +var _t = __nccwpck_require__(16535); +var _util = __nccwpck_require__(97964); +const { + BOOLEAN_NUMBER_BINARY_OPERATORS, + createTypeAnnotationBasedOnTypeof, + numberTypeAnnotation, + voidTypeAnnotation +} = _t; +function _default(node) { + if (!this.isReferenced()) return; + const binding = this.scope.getBinding(node.name); + if (binding) { + if (binding.identifier.typeAnnotation) { + return binding.identifier.typeAnnotation; + } else { + return getTypeAnnotationBindingConstantViolations(binding, this, node.name); + } + } + if (node.name === "undefined") { + return voidTypeAnnotation(); + } else if (node.name === "NaN" || node.name === "Infinity") { + return numberTypeAnnotation(); + } else if (node.name === "arguments") {} +} +function getTypeAnnotationBindingConstantViolations(binding, path, name) { + const types = []; + const functionConstantViolations = []; + let constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations); + const testType = getConditionalAnnotation(binding, path, name); + if (testType) { + const testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement); + constantViolations = constantViolations.filter(path => !testConstantViolations.includes(path)); + types.push(testType.typeAnnotation); + } + if (constantViolations.length) { + constantViolations.push(...functionConstantViolations); + for (const violation of constantViolations) { + types.push(violation.getTypeAnnotation()); + } + } + if (!types.length) { + return; + } + return (0, _util.createUnionType)(types); +} +function getConstantViolationsBefore(binding, path, functions) { + const violations = binding.constantViolations.slice(); + violations.unshift(binding.path); + return violations.filter(violation => { + violation = violation.resolve(); + const status = violation._guessExecutionStatusRelativeTo(path); + if (functions && status === "unknown") functions.push(violation); + return status === "before"; + }); +} +function inferAnnotationFromBinaryExpression(name, path) { + const operator = path.node.operator; + const right = path.get("right").resolve(); + const left = path.get("left").resolve(); + let target; + if (left.isIdentifier({ + name + })) { + target = right; + } else if (right.isIdentifier({ + name + })) { + target = left; + } + if (target) { + if (operator === "===") { + return target.getTypeAnnotation(); + } + if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) { + return numberTypeAnnotation(); + } + return; + } + if (operator !== "===" && operator !== "==") return; + let typeofPath; + let typePath; + if (left.isUnaryExpression({ + operator: "typeof" + })) { + typeofPath = left; + typePath = right; + } else if (right.isUnaryExpression({ + operator: "typeof" + })) { + typeofPath = right; + typePath = left; + } + if (!typeofPath) return; + if (!typeofPath.get("argument").isIdentifier({ + name + })) return; + typePath = typePath.resolve(); + if (!typePath.isLiteral()) return; + const typeValue = typePath.node.value; + if (typeof typeValue !== "string") return; + return createTypeAnnotationBasedOnTypeof(typeValue); +} +function getParentConditionalPath(binding, path, name) { + let parentPath; + while (parentPath = path.parentPath) { + if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) { + if (path.key === "test") { + return; + } + return parentPath; + } + if (parentPath.isFunction()) { + if (parentPath.parentPath.scope.getBinding(name) !== binding) return; + } + path = parentPath; + } +} +function getConditionalAnnotation(binding, path, name) { + const ifStatement = getParentConditionalPath(binding, path, name); + if (!ifStatement) return; + const test = ifStatement.get("test"); + const paths = [test]; + const types = []; + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + if (path.isLogicalExpression()) { + if (path.node.operator === "&&") { + paths.push(path.get("left")); + paths.push(path.get("right")); + } + } else if (path.isBinaryExpression()) { + const type = inferAnnotationFromBinaryExpression(name, path); + if (type) types.push(type); + } + } + if (types.length) { + return { + typeAnnotation: (0, _util.createUnionType)(types), + ifStatement + }; + } + return getConditionalAnnotation(binding, ifStatement, name); +} + +//# sourceMappingURL=inferer-reference.js.map + + +/***/ }), + +/***/ 87116: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ArrayExpression = ArrayExpression; +exports.AssignmentExpression = AssignmentExpression; +exports.BinaryExpression = BinaryExpression; +exports.BooleanLiteral = BooleanLiteral; +exports.CallExpression = CallExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.ClassDeclaration = exports.ClassExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = exports.FunctionExpression = Func; +Object.defineProperty(exports, "Identifier", ({ + enumerable: true, + get: function () { + return _infererReference.default; + } +})); +exports.LogicalExpression = LogicalExpression; +exports.NewExpression = NewExpression; +exports.NullLiteral = NullLiteral; +exports.NumericLiteral = NumericLiteral; +exports.ObjectExpression = ObjectExpression; +exports.ParenthesizedExpression = ParenthesizedExpression; +exports.RegExpLiteral = RegExpLiteral; +exports.RestElement = RestElement; +exports.SequenceExpression = SequenceExpression; +exports.StringLiteral = StringLiteral; +exports.TSAsExpression = TSAsExpression; +exports.TSNonNullExpression = TSNonNullExpression; +exports.TaggedTemplateExpression = TaggedTemplateExpression; +exports.TemplateLiteral = TemplateLiteral; +exports.TypeCastExpression = TypeCastExpression; +exports.UnaryExpression = UnaryExpression; +exports.UpdateExpression = UpdateExpression; +exports.VariableDeclarator = VariableDeclarator; +var _t = __nccwpck_require__(16535); +var _infererReference = __nccwpck_require__(77081); +var _util = __nccwpck_require__(97964); +const { + BOOLEAN_BINARY_OPERATORS, + BOOLEAN_UNARY_OPERATORS, + NUMBER_BINARY_OPERATORS, + NUMBER_UNARY_OPERATORS, + STRING_UNARY_OPERATORS, + anyTypeAnnotation, + arrayTypeAnnotation, + booleanTypeAnnotation, + buildMatchMemberExpression, + genericTypeAnnotation, + identifier, + nullLiteralTypeAnnotation, + numberTypeAnnotation, + stringTypeAnnotation, + tupleTypeAnnotation, + unionTypeAnnotation, + voidTypeAnnotation, + isIdentifier +} = _t; +function VariableDeclarator() { + if (!this.get("id").isIdentifier()) return; + return this.get("init").getTypeAnnotation(); +} +function TypeCastExpression(node) { + return node.typeAnnotation; +} +TypeCastExpression.validParent = true; +function TSAsExpression(node) { + return node.typeAnnotation; +} +TSAsExpression.validParent = true; +function TSNonNullExpression() { + return this.get("expression").getTypeAnnotation(); +} +function NewExpression(node) { + if (node.callee.type === "Identifier") { + return genericTypeAnnotation(node.callee); + } +} +function TemplateLiteral() { + return stringTypeAnnotation(); +} +function UnaryExpression(node) { + const operator = node.operator; + if (operator === "void") { + return voidTypeAnnotation(); + } else if (NUMBER_UNARY_OPERATORS.includes(operator)) { + return numberTypeAnnotation(); + } else if (STRING_UNARY_OPERATORS.includes(operator)) { + return stringTypeAnnotation(); + } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) { + return booleanTypeAnnotation(); + } +} +function BinaryExpression(node) { + const operator = node.operator; + if (NUMBER_BINARY_OPERATORS.includes(operator)) { + return numberTypeAnnotation(); + } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) { + return booleanTypeAnnotation(); + } else if (operator === "+") { + const right = this.get("right"); + const left = this.get("left"); + if (left.isBaseType("number") && right.isBaseType("number")) { + return numberTypeAnnotation(); + } else if (left.isBaseType("string") || right.isBaseType("string")) { + return stringTypeAnnotation(); + } + return unionTypeAnnotation([stringTypeAnnotation(), numberTypeAnnotation()]); + } +} +function LogicalExpression() { + const argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()]; + return (0, _util.createUnionType)(argumentTypes); +} +function ConditionalExpression() { + const argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()]; + return (0, _util.createUnionType)(argumentTypes); +} +function SequenceExpression() { + return this.get("expressions").pop().getTypeAnnotation(); +} +function ParenthesizedExpression() { + return this.get("expression").getTypeAnnotation(); +} +function AssignmentExpression() { + return this.get("right").getTypeAnnotation(); +} +function UpdateExpression(node) { + const operator = node.operator; + if (operator === "++" || operator === "--") { + return numberTypeAnnotation(); + } +} +function StringLiteral() { + return stringTypeAnnotation(); +} +function NumericLiteral() { + return numberTypeAnnotation(); +} +function BooleanLiteral() { + return booleanTypeAnnotation(); +} +function NullLiteral() { + return nullLiteralTypeAnnotation(); +} +function RegExpLiteral() { + return genericTypeAnnotation(identifier("RegExp")); +} +function ObjectExpression() { + return genericTypeAnnotation(identifier("Object")); +} +function ArrayExpression() { + return genericTypeAnnotation(identifier("Array")); +} +function RestElement() { + return ArrayExpression(); +} +RestElement.validParent = true; +function Func() { + return genericTypeAnnotation(identifier("Function")); +} +const isArrayFrom = buildMatchMemberExpression("Array.from"); +const isObjectKeys = buildMatchMemberExpression("Object.keys"); +const isObjectValues = buildMatchMemberExpression("Object.values"); +const isObjectEntries = buildMatchMemberExpression("Object.entries"); +function CallExpression() { + const { + callee + } = this.node; + if (isObjectKeys(callee)) { + return arrayTypeAnnotation(stringTypeAnnotation()); + } else if (isArrayFrom(callee) || isObjectValues(callee) || isIdentifier(callee, { + name: "Array" + })) { + return arrayTypeAnnotation(anyTypeAnnotation()); + } else if (isObjectEntries(callee)) { + return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()])); + } + return resolveCall(this.get("callee")); +} +function TaggedTemplateExpression() { + return resolveCall(this.get("tag")); +} +function resolveCall(callee) { + callee = callee.resolve(); + if (callee.isFunction()) { + const { + node + } = callee; + if (node.async) { + if (node.generator) { + return genericTypeAnnotation(identifier("AsyncIterator")); + } else { + return genericTypeAnnotation(identifier("Promise")); + } + } else { + if (node.generator) { + return genericTypeAnnotation(identifier("Iterator")); + } else if (callee.node.returnType) { + return callee.node.returnType; + } else {} + } + } +} + +//# sourceMappingURL=inferers.js.map + + +/***/ }), + +/***/ 97964: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createUnionType = createUnionType; +var _t = __nccwpck_require__(16535); +const { + createFlowUnionType, + createTSUnionType, + createUnionTypeAnnotation, + isFlowType, + isTSType +} = _t; +function createUnionType(types) { + { + if (types.every(v => isFlowType(v))) { + if (createFlowUnionType) { + return createFlowUnionType(types); + } + return createUnionTypeAnnotation(types); + } else if (types.every(v => isTSType(v))) { + if (createTSUnionType) { + return createTSUnionType(types); + } + } + } +} + +//# sourceMappingURL=util.js.map + + +/***/ }), + +/***/ 7009: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo; +exports._resolve = _resolve; +exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression; +exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement; +exports.getSource = getSource; +exports.isCompletionRecord = isCompletionRecord; +exports.isConstantExpression = isConstantExpression; +exports.isInStrictMode = isInStrictMode; +exports.isNodeType = isNodeType; +exports.isStatementOrBlock = isStatementOrBlock; +exports.isStatic = isStatic; +exports.matchesPattern = matchesPattern; +exports.referencesImport = referencesImport; +exports.resolve = resolve; +exports.willIMaybeExecuteBefore = willIMaybeExecuteBefore; +var _t = __nccwpck_require__(16535); +const { + STATEMENT_OR_BLOCK_KEYS, + VISITOR_KEYS, + isBlockStatement, + isExpression, + isIdentifier, + isLiteral, + isStringLiteral, + isType, + matchesPattern: _matchesPattern +} = _t; +function matchesPattern(pattern, allowPartial) { + return _matchesPattern(this.node, pattern, allowPartial); +} +{ + exports.has = function has(key) { + var _this$node; + const val = (_this$node = this.node) == null ? void 0 : _this$node[key]; + if (val && Array.isArray(val)) { + return !!val.length; + } else { + return !!val; + } + }; +} +function isStatic() { + return this.scope.isStatic(this.node); +} +{ + exports.is = exports.has; + exports.isnt = function isnt(key) { + return !this.has(key); + }; + exports.equals = function equals(key, value) { + return this.node[key] === value; + }; +} +function isNodeType(type) { + return isType(this.type, type); +} +function canHaveVariableDeclarationOrExpression() { + return (this.key === "init" || this.key === "left") && this.parentPath.isFor(); +} +function canSwapBetweenExpressionAndStatement(replacement) { + if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) { + return false; + } + if (this.isExpression()) { + return isBlockStatement(replacement); + } else if (this.isBlockStatement()) { + return isExpression(replacement); + } + return false; +} +function isCompletionRecord(allowInsideFunction) { + let path = this; + let first = true; + do { + const { + type, + container + } = path; + if (!first && (path.isFunction() || type === "StaticBlock")) { + return !!allowInsideFunction; + } + first = false; + if (Array.isArray(container) && path.key !== container.length - 1) { + return false; + } + } while ((path = path.parentPath) && !path.isProgram() && !path.isDoExpression()); + return true; +} +function isStatementOrBlock() { + if (this.parentPath.isLabeledStatement() || isBlockStatement(this.container)) { + return false; + } else { + return STATEMENT_OR_BLOCK_KEYS.includes(this.key); + } +} +function referencesImport(moduleSource, importName) { + if (!this.isReferencedIdentifier()) { + if (this.isJSXMemberExpression() && this.node.property.name === importName || (this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral(this.node.property, { + value: importName + }) : this.node.property.name === importName)) { + const object = this.get("object"); + return object.isReferencedIdentifier() && object.referencesImport(moduleSource, "*"); + } + return false; + } + const binding = this.scope.getBinding(this.node.name); + if (!binding || binding.kind !== "module") return false; + const path = binding.path; + const parent = path.parentPath; + if (!parent.isImportDeclaration()) return false; + if (parent.node.source.value === moduleSource) { + if (!importName) return true; + } else { + return false; + } + if (path.isImportDefaultSpecifier() && importName === "default") { + return true; + } + if (path.isImportNamespaceSpecifier() && importName === "*") { + return true; + } + if (path.isImportSpecifier() && isIdentifier(path.node.imported, { + name: importName + })) { + return true; + } + return false; +} +function getSource() { + const node = this.node; + if (node.end) { + const code = this.hub.getCode(); + if (code) return code.slice(node.start, node.end); + } + return ""; +} +function willIMaybeExecuteBefore(target) { + return this._guessExecutionStatusRelativeTo(target) !== "after"; +} +function getOuterFunction(path) { + return path.isProgram() ? path : (path.parentPath.scope.getFunctionParent() || path.parentPath.scope.getProgramParent()).path; +} +function isExecutionUncertain(type, key) { + switch (type) { + case "LogicalExpression": + return key === "right"; + case "ConditionalExpression": + case "IfStatement": + return key === "consequent" || key === "alternate"; + case "WhileStatement": + case "DoWhileStatement": + case "ForInStatement": + case "ForOfStatement": + return key === "body"; + case "ForStatement": + return key === "body" || key === "update"; + case "SwitchStatement": + return key === "cases"; + case "TryStatement": + return key === "handler"; + case "AssignmentPattern": + return key === "right"; + case "OptionalMemberExpression": + return key === "property"; + case "OptionalCallExpression": + return key === "arguments"; + default: + return false; + } +} +function isExecutionUncertainInList(paths, maxIndex) { + for (let i = 0; i < maxIndex; i++) { + const path = paths[i]; + if (isExecutionUncertain(path.parent.type, path.parentKey)) { + return true; + } + } + return false; +} +const SYMBOL_CHECKING = Symbol(); +function _guessExecutionStatusRelativeTo(target) { + return _guessExecutionStatusRelativeToCached(this, target, new Map()); +} +function _guessExecutionStatusRelativeToCached(base, target, cache) { + const funcParent = { + this: getOuterFunction(base), + target: getOuterFunction(target) + }; + if (funcParent.target.node !== funcParent.this.node) { + return _guessExecutionStatusRelativeToDifferentFunctionsCached(base, funcParent.target, cache); + } + const paths = { + target: target.getAncestry(), + this: base.getAncestry() + }; + if (paths.target.includes(base)) return "after"; + if (paths.this.includes(target)) return "before"; + let commonPath; + const commonIndex = { + target: 0, + this: 0 + }; + while (!commonPath && commonIndex.this < paths.this.length) { + const path = paths.this[commonIndex.this]; + commonIndex.target = paths.target.indexOf(path); + if (commonIndex.target >= 0) { + commonPath = path; + } else { + commonIndex.this++; + } + } + if (!commonPath) { + throw new Error("Internal Babel error - The two compared nodes" + " don't appear to belong to the same program."); + } + if (isExecutionUncertainInList(paths.this, commonIndex.this - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) { + return "unknown"; + } + const divergence = { + this: paths.this[commonIndex.this - 1], + target: paths.target[commonIndex.target - 1] + }; + if (divergence.target.listKey && divergence.this.listKey && divergence.target.container === divergence.this.container) { + return divergence.target.key > divergence.this.key ? "before" : "after"; + } + const keys = VISITOR_KEYS[commonPath.type]; + const keyPosition = { + this: keys.indexOf(divergence.this.parentKey), + target: keys.indexOf(divergence.target.parentKey) + }; + return keyPosition.target > keyPosition.this ? "before" : "after"; +} +function _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache) { + if (!target.isFunctionDeclaration()) { + if (_guessExecutionStatusRelativeToCached(base, target, cache) === "before") { + return "before"; + } + return "unknown"; + } else if (target.parentPath.isExportDeclaration()) { + return "unknown"; + } + const binding = target.scope.getBinding(target.node.id.name); + if (!binding.references) return "before"; + const referencePaths = binding.referencePaths; + let allStatus; + for (const path of referencePaths) { + const childOfFunction = !!path.find(path => path.node === target.node); + if (childOfFunction) continue; + if (path.key !== "callee" || !path.parentPath.isCallExpression()) { + return "unknown"; + } + const status = _guessExecutionStatusRelativeToCached(base, path, cache); + if (allStatus && allStatus !== status) { + return "unknown"; + } else { + allStatus = status; + } + } + return allStatus; +} +function _guessExecutionStatusRelativeToDifferentFunctionsCached(base, target, cache) { + let nodeMap = cache.get(base.node); + let cached; + if (!nodeMap) { + cache.set(base.node, nodeMap = new Map()); + } else if (cached = nodeMap.get(target.node)) { + if (cached === SYMBOL_CHECKING) { + return "unknown"; + } + return cached; + } + nodeMap.set(target.node, SYMBOL_CHECKING); + const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache); + nodeMap.set(target.node, result); + return result; +} +function resolve(dangerous, resolved) { + return _resolve.call(this, dangerous, resolved) || this; +} +function _resolve(dangerous, resolved) { + var _resolved; + if ((_resolved = resolved) != null && _resolved.includes(this)) return; + resolved = resolved || []; + resolved.push(this); + if (this.isVariableDeclarator()) { + if (this.get("id").isIdentifier()) { + return this.get("init").resolve(dangerous, resolved); + } else {} + } else if (this.isReferencedIdentifier()) { + const binding = this.scope.getBinding(this.node.name); + if (!binding) return; + if (!binding.constant) return; + if (binding.kind === "module") return; + if (binding.path !== this) { + const ret = binding.path.resolve(dangerous, resolved); + if (this.find(parent => parent.node === ret.node)) return; + return ret; + } + } else if (this.isTypeCastExpression()) { + return this.get("expression").resolve(dangerous, resolved); + } else if (dangerous && this.isMemberExpression()) { + const targetKey = this.toComputedKey(); + if (!isLiteral(targetKey)) return; + const targetName = targetKey.value; + const target = this.get("object").resolve(dangerous, resolved); + if (target.isObjectExpression()) { + const props = target.get("properties"); + for (const prop of props) { + if (!prop.isProperty()) continue; + const key = prop.get("key"); + let match = prop.isnt("computed") && key.isIdentifier({ + name: targetName + }); + match = match || key.isLiteral({ + value: targetName + }); + if (match) return prop.get("value").resolve(dangerous, resolved); + } + } else if (target.isArrayExpression() && !isNaN(+targetName)) { + const elems = target.get("elements"); + const elem = elems[targetName]; + if (elem) return elem.resolve(dangerous, resolved); + } + } +} +function isConstantExpression() { + if (this.isIdentifier()) { + const binding = this.scope.getBinding(this.node.name); + if (!binding) return false; + return binding.constant; + } + if (this.isLiteral()) { + if (this.isRegExpLiteral()) { + return false; + } + if (this.isTemplateLiteral()) { + return this.get("expressions").every(expression => expression.isConstantExpression()); + } + return true; + } + if (this.isUnaryExpression()) { + if (this.node.operator !== "void") { + return false; + } + return this.get("argument").isConstantExpression(); + } + if (this.isBinaryExpression()) { + const { + operator + } = this.node; + return operator !== "in" && operator !== "instanceof" && this.get("left").isConstantExpression() && this.get("right").isConstantExpression(); + } + if (this.isMemberExpression()) { + return !this.node.computed && this.get("object").isIdentifier({ + name: "Symbol" + }) && !this.scope.hasBinding("Symbol", { + noGlobals: true + }); + } + if (this.isCallExpression()) { + return this.node.arguments.length === 1 && this.get("callee").matchesPattern("Symbol.for") && !this.scope.hasBinding("Symbol", { + noGlobals: true + }) && this.get("arguments")[0].isStringLiteral(); + } + return false; +} +function isInStrictMode() { + const start = this.isProgram() ? this : this.parentPath; + const strictParent = start.find(path => { + if (path.isProgram({ + sourceType: "module" + })) return true; + if (path.isClass()) return true; + if (path.isArrowFunctionExpression() && !path.get("body").isBlockStatement()) { + return false; + } + let body; + if (path.isFunction()) { + body = path.node.body; + } else if (path.isProgram()) { + body = path.node; + } else { + return false; + } + for (const directive of body.directives) { + if (directive.value.value === "use strict") { + return true; + } + } + }); + return !!strictParent; +} + +//# sourceMappingURL=introspection.js.map + + +/***/ }), + +/***/ 95250: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _t = __nccwpck_require__(16535); +var _t2 = _t; +const { + react +} = _t; +const { + cloneNode, + jsxExpressionContainer, + variableDeclaration, + variableDeclarator +} = _t2; +const referenceVisitor = { + ReferencedIdentifier(path, state) { + if (path.isJSXIdentifier() && react.isCompatTag(path.node.name) && !path.parentPath.isJSXMemberExpression()) { + return; + } + if (path.node.name === "this") { + let scope = path.scope; + do { + if (scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) { + break; + } + } while (scope = scope.parent); + if (scope) state.breakOnScopePaths.push(scope.path); + } + const binding = path.scope.getBinding(path.node.name); + if (!binding) return; + for (const violation of binding.constantViolations) { + if (violation.scope !== binding.path.scope) { + state.mutableBinding = true; + path.stop(); + return; + } + } + if (binding !== state.scope.getBinding(path.node.name)) return; + state.bindings[path.node.name] = binding; + } +}; +class PathHoister { + constructor(path, scope) { + this.breakOnScopePaths = void 0; + this.bindings = void 0; + this.mutableBinding = void 0; + this.scopes = void 0; + this.scope = void 0; + this.path = void 0; + this.attachAfter = void 0; + this.breakOnScopePaths = []; + this.bindings = {}; + this.mutableBinding = false; + this.scopes = []; + this.scope = scope; + this.path = path; + this.attachAfter = false; + } + isCompatibleScope(scope) { + for (const key of Object.keys(this.bindings)) { + const binding = this.bindings[key]; + if (!scope.bindingIdentifierEquals(key, binding.identifier)) { + return false; + } + } + return true; + } + getCompatibleScopes() { + let scope = this.path.scope; + do { + if (this.isCompatibleScope(scope)) { + this.scopes.push(scope); + } else { + break; + } + if (this.breakOnScopePaths.includes(scope.path)) { + break; + } + } while (scope = scope.parent); + } + getAttachmentPath() { + let path = this._getAttachmentPath(); + if (!path) return; + let targetScope = path.scope; + if (targetScope.path === path) { + targetScope = path.scope.parent; + } + if (targetScope.path.isProgram() || targetScope.path.isFunction()) { + for (const name of Object.keys(this.bindings)) { + if (!targetScope.hasOwnBinding(name)) continue; + const binding = this.bindings[name]; + if (binding.kind === "param" || binding.path.parentKey === "params") { + continue; + } + const bindingParentPath = this.getAttachmentParentForPath(binding.path); + if (bindingParentPath.key >= path.key) { + this.attachAfter = true; + path = binding.path; + for (const violationPath of binding.constantViolations) { + if (this.getAttachmentParentForPath(violationPath).key > path.key) { + path = violationPath; + } + } + } + } + } + return path; + } + _getAttachmentPath() { + const scopes = this.scopes; + const scope = scopes.pop(); + if (!scope) return; + if (scope.path.isFunction()) { + if (this.hasOwnParamBindings(scope)) { + if (this.scope === scope) return; + const bodies = scope.path.get("body").get("body"); + for (let i = 0; i < bodies.length; i++) { + if (bodies[i].node._blockHoist) continue; + return bodies[i]; + } + } else { + return this.getNextScopeAttachmentParent(); + } + } else if (scope.path.isProgram()) { + return this.getNextScopeAttachmentParent(); + } + } + getNextScopeAttachmentParent() { + const scope = this.scopes.pop(); + if (scope) return this.getAttachmentParentForPath(scope.path); + } + getAttachmentParentForPath(path) { + do { + if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) { + return path; + } + } while (path = path.parentPath); + } + hasOwnParamBindings(scope) { + for (const name of Object.keys(this.bindings)) { + if (!scope.hasOwnBinding(name)) continue; + const binding = this.bindings[name]; + if (binding.kind === "param" && binding.constant) return true; + } + return false; + } + run() { + this.path.traverse(referenceVisitor, this); + if (this.mutableBinding) return; + this.getCompatibleScopes(); + const attachTo = this.getAttachmentPath(); + if (!attachTo) return; + if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return; + let uid = attachTo.scope.generateUidIdentifier("ref"); + const declarator = variableDeclarator(uid, this.path.node); + const insertFn = this.attachAfter ? "insertAfter" : "insertBefore"; + const [attached] = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : variableDeclaration("var", [declarator])]); + const parent = this.path.parentPath; + if (parent.isJSXElement() && this.path.container === parent.node.children) { + uid = jsxExpressionContainer(uid); + } + this.path.replaceWith(cloneNode(uid)); + return attachTo.isVariableDeclarator() ? attached.get("init") : attached.get("declarations.0.init"); + } +} +exports["default"] = PathHoister; + +//# sourceMappingURL=hoister.js.map + + +/***/ }), + +/***/ 60547: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.hooks = void 0; +const hooks = exports.hooks = [function (self, parent) { + const removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement(); + if (removeParent) { + parent.remove(); + return true; + } +}, function (self, parent) { + if (parent.isSequenceExpression() && parent.node.expressions.length === 1) { + parent.replaceWith(parent.node.expressions[0]); + return true; + } +}, function (self, parent) { + if (parent.isBinary()) { + if (self.key === "left") { + parent.replaceWith(parent.node.right); + } else { + parent.replaceWith(parent.node.left); + } + return true; + } +}, function (self, parent) { + if (parent.isIfStatement() && self.key === "consequent" || self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression())) { + self.replaceWith({ + type: "BlockStatement", + body: [] + }); + return true; + } +}]; + +//# sourceMappingURL=removal-hooks.js.map + + +/***/ }), + +/***/ 66582: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isBindingIdentifier = isBindingIdentifier; +exports.isBlockScoped = isBlockScoped; +exports.isExpression = isExpression; +exports.isFlow = isFlow; +exports.isForAwaitStatement = isForAwaitStatement; +exports.isGenerated = isGenerated; +exports.isPure = isPure; +exports.isReferenced = isReferenced; +exports.isReferencedIdentifier = isReferencedIdentifier; +exports.isReferencedMemberExpression = isReferencedMemberExpression; +exports.isRestProperty = isRestProperty; +exports.isScope = isScope; +exports.isSpreadProperty = isSpreadProperty; +exports.isStatement = isStatement; +exports.isUser = isUser; +exports.isVar = isVar; +var _t = __nccwpck_require__(16535); +const { + isBinding, + isBlockScoped: nodeIsBlockScoped, + isExportDeclaration, + isExpression: nodeIsExpression, + isFlow: nodeIsFlow, + isForStatement, + isForXStatement, + isIdentifier, + isImportDeclaration, + isImportSpecifier, + isJSXIdentifier, + isJSXMemberExpression, + isMemberExpression, + isRestElement: nodeIsRestElement, + isReferenced: nodeIsReferenced, + isScope: nodeIsScope, + isStatement: nodeIsStatement, + isVar: nodeIsVar, + isVariableDeclaration, + react, + isForOfStatement +} = _t; +const { + isCompatTag +} = react; +function isReferencedIdentifier(opts) { + const { + node, + parent + } = this; + if (!isIdentifier(node, opts) && !isJSXMemberExpression(parent, opts)) { + if (isJSXIdentifier(node, opts)) { + if (isCompatTag(node.name)) return false; + } else { + return false; + } + } + return nodeIsReferenced(node, parent, this.parentPath.parent); +} +function isReferencedMemberExpression() { + const { + node, + parent + } = this; + return isMemberExpression(node) && nodeIsReferenced(node, parent); +} +function isBindingIdentifier() { + const { + node, + parent + } = this; + const grandparent = this.parentPath.parent; + return isIdentifier(node) && isBinding(node, parent, grandparent); +} +function isStatement() { + const { + node, + parent + } = this; + if (nodeIsStatement(node)) { + if (isVariableDeclaration(node)) { + if (isForXStatement(parent, { + left: node + })) return false; + if (isForStatement(parent, { + init: node + })) return false; + } + return true; + } else { + return false; + } +} +function isExpression() { + if (this.isIdentifier()) { + return this.isReferencedIdentifier(); + } else { + return nodeIsExpression(this.node); + } +} +function isScope() { + return nodeIsScope(this.node, this.parent); +} +function isReferenced() { + return nodeIsReferenced(this.node, this.parent); +} +function isBlockScoped() { + return nodeIsBlockScoped(this.node); +} +function isVar() { + return nodeIsVar(this.node); +} +function isUser() { + return this.node && !!this.node.loc; +} +function isGenerated() { + return !this.isUser(); +} +function isPure(constantsOnly) { + return this.scope.isPure(this.node, constantsOnly); +} +function isFlow() { + const { + node + } = this; + if (nodeIsFlow(node)) { + return true; + } else if (isImportDeclaration(node)) { + return node.importKind === "type" || node.importKind === "typeof"; + } else if (isExportDeclaration(node)) { + return node.exportKind === "type"; + } else if (isImportSpecifier(node)) { + return node.importKind === "type" || node.importKind === "typeof"; + } else { + return false; + } +} +function isRestProperty() { + var _this$parentPath; + return nodeIsRestElement(this.node) && ((_this$parentPath = this.parentPath) == null ? void 0 : _this$parentPath.isObjectPattern()); +} +function isSpreadProperty() { + var _this$parentPath2; + return nodeIsRestElement(this.node) && ((_this$parentPath2 = this.parentPath) == null ? void 0 : _this$parentPath2.isObjectExpression()); +} +function isForAwaitStatement() { + return isForOfStatement(this.node, { + await: true + }); +} +{ + exports.isExistentialTypeParam = function isExistentialTypeParam() { + throw new Error("`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7."); + }; + exports.isNumericLiteralTypeAnnotation = function isNumericLiteralTypeAnnotation() { + throw new Error("`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7."); + }; +} + +//# sourceMappingURL=virtual-types-validator.js.map + + +/***/ }), + +/***/ 74425: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Var = exports.User = exports.Statement = exports.SpreadProperty = exports.Scope = exports.RestProperty = exports.ReferencedMemberExpression = exports.ReferencedIdentifier = exports.Referenced = exports.Pure = exports.NumericLiteralTypeAnnotation = exports.Generated = exports.ForAwaitStatement = exports.Flow = exports.Expression = exports.ExistentialTypeParam = exports.BlockScoped = exports.BindingIdentifier = void 0; +const ReferencedIdentifier = exports.ReferencedIdentifier = ["Identifier", "JSXIdentifier"]; +const ReferencedMemberExpression = exports.ReferencedMemberExpression = ["MemberExpression"]; +const BindingIdentifier = exports.BindingIdentifier = ["Identifier"]; +const Statement = exports.Statement = ["Statement"]; +const Expression = exports.Expression = ["Expression"]; +const Scope = exports.Scope = ["Scopable", "Pattern"]; +const Referenced = exports.Referenced = null; +const BlockScoped = exports.BlockScoped = null; +const Var = exports.Var = ["VariableDeclaration"]; +const User = exports.User = null; +const Generated = exports.Generated = null; +const Pure = exports.Pure = null; +const Flow = exports.Flow = ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"]; +const RestProperty = exports.RestProperty = ["RestElement"]; +const SpreadProperty = exports.SpreadProperty = ["RestElement"]; +const ExistentialTypeParam = exports.ExistentialTypeParam = ["ExistsTypeAnnotation"]; +const NumericLiteralTypeAnnotation = exports.NumericLiteralTypeAnnotation = ["NumberLiteralTypeAnnotation"]; +const ForAwaitStatement = exports.ForAwaitStatement = ["ForOfStatement"]; + +//# sourceMappingURL=virtual-types.js.map + + +/***/ }), + +/***/ 20184: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._containerInsert = _containerInsert; +exports._containerInsertAfter = _containerInsertAfter; +exports._containerInsertBefore = _containerInsertBefore; +exports._verifyNodeList = _verifyNodeList; +exports.insertAfter = insertAfter; +exports.insertBefore = insertBefore; +exports.pushContainer = pushContainer; +exports.unshiftContainer = unshiftContainer; +exports.updateSiblingKeys = updateSiblingKeys; +var _cache = __nccwpck_require__(6730); +var _index = __nccwpck_require__(91806); +var _context = __nccwpck_require__(74105); +var _removal = __nccwpck_require__(23562); +var _t = __nccwpck_require__(16535); +var _hoister = __nccwpck_require__(95250); +const { + arrowFunctionExpression, + assertExpression, + assignmentExpression, + blockStatement, + callExpression, + cloneNode, + expressionStatement, + isAssignmentExpression, + isCallExpression, + isExportNamedDeclaration, + isExpression, + isIdentifier, + isSequenceExpression, + isSuper, + thisExpression +} = _t; +function insertBefore(nodes_) { + _removal._assertUnremoved.call(this); + const nodes = _verifyNodeList.call(this, nodes_); + const { + parentPath, + parent + } = this; + if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) { + return parentPath.insertBefore(nodes); + } else if (this.isNodeType("Expression") && !this.isJSXElement() || parentPath.isForStatement() && this.key === "init") { + if (this.node) nodes.push(this.node); + return this.replaceExpressionWithStatements(nodes); + } else if (Array.isArray(this.container)) { + return _containerInsertBefore.call(this, nodes); + } else if (this.isStatementOrBlock()) { + const node = this.node; + const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null); + this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : [])); + return this.unshiftContainer("body", nodes); + } else { + throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?"); + } +} +function _containerInsert(from, nodes) { + updateSiblingKeys.call(this, from, nodes.length); + const paths = []; + this.container.splice(from, 0, ...nodes); + for (let i = 0; i < nodes.length; i++) { + var _this$context; + const to = from + i; + const path = this.getSibling(to); + paths.push(path); + if ((_this$context = this.context) != null && _this$context.queue) { + _context.pushContext.call(path, this.context); + } + } + const contexts = _context._getQueueContexts.call(this); + for (const path of paths) { + _context.setScope.call(path); + path.debug("Inserted."); + for (const context of contexts) { + context.maybeQueue(path, true); + } + } + return paths; +} +function _containerInsertBefore(nodes) { + return _containerInsert.call(this, this.key, nodes); +} +function _containerInsertAfter(nodes) { + return _containerInsert.call(this, this.key + 1, nodes); +} +const last = arr => arr[arr.length - 1]; +function isHiddenInSequenceExpression(path) { + return isSequenceExpression(path.parent) && (last(path.parent.expressions) !== path.node || isHiddenInSequenceExpression(path.parentPath)); +} +function isAlmostConstantAssignment(node, scope) { + if (!isAssignmentExpression(node) || !isIdentifier(node.left)) { + return false; + } + const blockScope = scope.getBlockParent(); + return blockScope.hasOwnBinding(node.left.name) && blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1; +} +function insertAfter(nodes_) { + _removal._assertUnremoved.call(this); + if (this.isSequenceExpression()) { + return last(this.get("expressions")).insertAfter(nodes_); + } + const nodes = _verifyNodeList.call(this, nodes_); + const { + parentPath, + parent + } = this; + if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) { + return parentPath.insertAfter(nodes.map(node => { + return isExpression(node) ? expressionStatement(node) : node; + })); + } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") { + const self = this; + if (self.node) { + const node = self.node; + let { + scope + } = this; + if (scope.path.isPattern()) { + assertExpression(node); + self.replaceWith(callExpression(arrowFunctionExpression([], node), [])); + self.get("callee.body").insertAfter(nodes); + return [self]; + } + if (isHiddenInSequenceExpression(self)) { + nodes.unshift(node); + } else if (isCallExpression(node) && isSuper(node.callee)) { + nodes.unshift(node); + nodes.push(thisExpression()); + } else if (isAlmostConstantAssignment(node, scope)) { + nodes.unshift(node); + nodes.push(cloneNode(node.left)); + } else if (scope.isPure(node, true)) { + nodes.push(node); + } else { + if (parentPath.isMethod({ + computed: true, + key: node + })) { + scope = scope.parent; + } + const temp = scope.generateDeclaredUidIdentifier(); + nodes.unshift(expressionStatement(assignmentExpression("=", cloneNode(temp), node))); + nodes.push(expressionStatement(cloneNode(temp))); + } + } + return this.replaceExpressionWithStatements(nodes); + } else if (Array.isArray(this.container)) { + return _containerInsertAfter.call(this, nodes); + } else if (this.isStatementOrBlock()) { + const node = this.node; + const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null); + this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : [])); + return this.pushContainer("body", nodes); + } else { + throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?"); + } +} +function updateSiblingKeys(fromIndex, incrementBy) { + if (!this.parent) return; + const paths = (0, _cache.getCachedPaths)(this); + if (!paths) return; + for (const [, path] of paths) { + if (typeof path.key === "number" && path.container === this.container && path.key >= fromIndex) { + path.key += incrementBy; + } + } +} +function _verifyNodeList(nodes) { + if (!nodes) { + return []; + } + if (!Array.isArray(nodes)) { + nodes = [nodes]; + } + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + let msg; + if (!node) { + msg = "has falsy node"; + } else if (typeof node !== "object") { + msg = "contains a non-object node"; + } else if (!node.type) { + msg = "without a type"; + } else if (node instanceof _index.default) { + msg = "has a NodePath when it expected a raw object"; + } + if (msg) { + const type = Array.isArray(node) ? "array" : typeof node; + throw new Error(`Node list ${msg} with the index of ${i} and type of ${type}`); + } + } + return nodes; +} +function unshiftContainer(listKey, nodes) { + _removal._assertUnremoved.call(this); + nodes = _verifyNodeList.call(this, nodes); + const path = _index.default.get({ + parentPath: this, + parent: this.node, + container: this.node[listKey], + listKey, + key: 0 + }).setContext(this.context); + return _containerInsertBefore.call(path, nodes); +} +function pushContainer(listKey, nodes) { + _removal._assertUnremoved.call(this); + const verifiedNodes = _verifyNodeList.call(this, nodes); + const container = this.node[listKey]; + const path = _index.default.get({ + parentPath: this, + parent: this.node, + container: container, + listKey, + key: container.length + }).setContext(this.context); + return path.replaceWithMultiple(verifiedNodes); +} +{ + exports.hoist = function hoist(scope = this.scope) { + const hoister = new _hoister.default(this, scope); + return hoister.run(); + }; +} + +//# sourceMappingURL=modification.js.map + + +/***/ }), + +/***/ 23562: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._assertUnremoved = _assertUnremoved; +exports._callRemovalHooks = _callRemovalHooks; +exports._markRemoved = _markRemoved; +exports._remove = _remove; +exports._removeFromScope = _removeFromScope; +exports.remove = remove; +var _removalHooks = __nccwpck_require__(60547); +var _cache = __nccwpck_require__(6730); +var _replacement = __nccwpck_require__(76178); +var _index = __nccwpck_require__(91806); +var _t = __nccwpck_require__(16535); +var _modification = __nccwpck_require__(20184); +var _context = __nccwpck_require__(74105); +const { + getBindingIdentifiers +} = _t; +function remove() { + var _this$opts; + _assertUnremoved.call(this); + _context.resync.call(this); + if (_callRemovalHooks.call(this)) { + _markRemoved.call(this); + return; + } + if (!((_this$opts = this.opts) != null && _this$opts.noScope)) { + _removeFromScope.call(this); + } + this.shareCommentsWithSiblings(); + _remove.call(this); + _markRemoved.call(this); +} +function _removeFromScope() { + const bindings = getBindingIdentifiers(this.node, false, false, true); + Object.keys(bindings).forEach(name => this.scope.removeBinding(name)); +} +function _callRemovalHooks() { + if (this.parentPath) { + for (const fn of _removalHooks.hooks) { + if (fn(this, this.parentPath)) return true; + } + } +} +function _remove() { + if (Array.isArray(this.container)) { + this.container.splice(this.key, 1); + _modification.updateSiblingKeys.call(this, this.key, -1); + } else { + _replacement._replaceWith.call(this, null); + } +} +function _markRemoved() { + this._traverseFlags |= _index.SHOULD_SKIP | _index.REMOVED; + if (this.parent) { + var _getCachedPaths; + (_getCachedPaths = (0, _cache.getCachedPaths)(this)) == null || _getCachedPaths.delete(this.node); + } + this.node = null; +} +function _assertUnremoved() { + if (this.removed) { + throw this.buildCodeFrameError("NodePath has been removed so is read-only."); + } +} + +//# sourceMappingURL=removal.js.map + + +/***/ }), + +/***/ 76178: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports._replaceWith = _replaceWith; +exports.replaceExpressionWithStatements = replaceExpressionWithStatements; +exports.replaceInline = replaceInline; +exports.replaceWith = replaceWith; +exports.replaceWithMultiple = replaceWithMultiple; +exports.replaceWithSourceString = replaceWithSourceString; +var _codeFrame = __nccwpck_require__(90147); +var _index = __nccwpck_require__(50148); +var _index2 = __nccwpck_require__(91806); +var _cache = __nccwpck_require__(6730); +var _modification = __nccwpck_require__(20184); +var _parser = __nccwpck_require__(5429); +var _t = __nccwpck_require__(16535); +var _context = __nccwpck_require__(74105); +const { + FUNCTION_TYPES, + arrowFunctionExpression, + assignmentExpression, + awaitExpression, + blockStatement, + buildUndefinedNode, + callExpression, + cloneNode, + conditionalExpression, + expressionStatement, + getBindingIdentifiers, + identifier, + inheritLeadingComments, + inheritTrailingComments, + inheritsComments, + isBlockStatement, + isEmptyStatement, + isExpression, + isExpressionStatement, + isIfStatement, + isProgram, + isStatement, + isVariableDeclaration, + removeComments, + returnStatement, + sequenceExpression, + validate, + yieldExpression +} = _t; +function replaceWithMultiple(nodes) { + var _getCachedPaths; + _context.resync.call(this); + nodes = _modification._verifyNodeList.call(this, nodes); + inheritLeadingComments(nodes[0], this.node); + inheritTrailingComments(nodes[nodes.length - 1], this.node); + (_getCachedPaths = (0, _cache.getCachedPaths)(this)) == null || _getCachedPaths.delete(this.node); + this.node = this.container[this.key] = null; + const paths = this.insertAfter(nodes); + if (this.node) { + this.requeue(); + } else { + this.remove(); + } + return paths; +} +function replaceWithSourceString(replacement) { + _context.resync.call(this); + let ast; + try { + replacement = `(${replacement})`; + ast = (0, _parser.parse)(replacement); + } catch (err) { + const loc = err.loc; + if (loc) { + err.message += " - make sure this is an expression.\n" + (0, _codeFrame.codeFrameColumns)(replacement, { + start: { + line: loc.line, + column: loc.column + 1 + } + }); + err.code = "BABEL_REPLACE_SOURCE_ERROR"; + } + throw err; + } + const expressionAST = ast.program.body[0].expression; + _index.default.removeProperties(expressionAST); + return this.replaceWith(expressionAST); +} +function replaceWith(replacementPath) { + _context.resync.call(this); + if (this.removed) { + throw new Error("You can't replace this node, we've already removed it"); + } + let replacement = replacementPath instanceof _index2.default ? replacementPath.node : replacementPath; + if (!replacement) { + throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead"); + } + if (this.node === replacement) { + return [this]; + } + if (this.isProgram() && !isProgram(replacement)) { + throw new Error("You can only replace a Program root node with another Program node"); + } + if (Array.isArray(replacement)) { + throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`"); + } + if (typeof replacement === "string") { + throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`"); + } + let nodePath = ""; + if (this.isNodeType("Statement") && isExpression(replacement)) { + if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) { + replacement = expressionStatement(replacement); + nodePath = "expression"; + } + } + if (this.isNodeType("Expression") && isStatement(replacement)) { + if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) { + return this.replaceExpressionWithStatements([replacement]); + } + } + const oldNode = this.node; + if (oldNode) { + inheritsComments(replacement, oldNode); + removeComments(oldNode); + } + _replaceWith.call(this, replacement); + this.type = replacement.type; + _context.setScope.call(this); + this.requeue(); + return [nodePath ? this.get(nodePath) : this]; +} +function _replaceWith(node) { + var _getCachedPaths2; + if (!this.container) { + throw new ReferenceError("Container is falsy"); + } + if (this.inList) { + validate(this.parent, this.key, [node]); + } else { + validate(this.parent, this.key, node); + } + this.debug(`Replace with ${node == null ? void 0 : node.type}`); + (_getCachedPaths2 = (0, _cache.getCachedPaths)(this)) == null || _getCachedPaths2.set(node, this).delete(this.node); + this.node = this.container[this.key] = node; +} +function replaceExpressionWithStatements(nodes) { + _context.resync.call(this); + const declars = []; + const nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars); + if (nodesAsSingleExpression) { + for (const id of declars) this.scope.push({ + id + }); + return this.replaceWith(nodesAsSingleExpression)[0].get("expressions"); + } + const functionParent = this.getFunctionParent(); + const isParentAsync = functionParent == null ? void 0 : functionParent.node.async; + const isParentGenerator = functionParent == null ? void 0 : functionParent.node.generator; + const container = arrowFunctionExpression([], blockStatement(nodes)); + this.replaceWith(callExpression(container, [])); + const callee = this.get("callee"); + callee.get("body").scope.hoistVariables(id => this.scope.push({ + id + })); + const completionRecords = callee.getCompletionRecords(); + for (const path of completionRecords) { + if (!path.isExpressionStatement()) continue; + const loop = path.findParent(path => path.isLoop()); + if (loop) { + let uid = loop.getData("expressionReplacementReturnUid"); + if (!uid) { + uid = callee.scope.generateDeclaredUidIdentifier("ret"); + callee.get("body").pushContainer("body", returnStatement(cloneNode(uid))); + loop.setData("expressionReplacementReturnUid", uid); + } else { + uid = identifier(uid.name); + } + path.get("expression").replaceWith(assignmentExpression("=", cloneNode(uid), path.node.expression)); + } else { + path.replaceWith(returnStatement(path.node.expression)); + } + } + callee.arrowFunctionToExpression(); + const newCallee = callee; + const needToAwaitFunction = isParentAsync && _index.default.hasType(this.get("callee.body").node, "AwaitExpression", FUNCTION_TYPES); + const needToYieldFunction = isParentGenerator && _index.default.hasType(this.get("callee.body").node, "YieldExpression", FUNCTION_TYPES); + if (needToAwaitFunction) { + newCallee.set("async", true); + if (!needToYieldFunction) { + this.replaceWith(awaitExpression(this.node)); + } + } + if (needToYieldFunction) { + newCallee.set("generator", true); + this.replaceWith(yieldExpression(this.node, true)); + } + return newCallee.get("body.body"); +} +function gatherSequenceExpressions(nodes, declars) { + const exprs = []; + let ensureLastUndefined = true; + for (const node of nodes) { + if (!isEmptyStatement(node)) { + ensureLastUndefined = false; + } + if (isExpression(node)) { + exprs.push(node); + } else if (isExpressionStatement(node)) { + exprs.push(node.expression); + } else if (isVariableDeclaration(node)) { + if (node.kind !== "var") return; + for (const declar of node.declarations) { + const bindings = getBindingIdentifiers(declar); + for (const key of Object.keys(bindings)) { + declars.push(cloneNode(bindings[key])); + } + if (declar.init) { + exprs.push(assignmentExpression("=", declar.id, declar.init)); + } + } + ensureLastUndefined = true; + } else if (isIfStatement(node)) { + const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : buildUndefinedNode(); + const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : buildUndefinedNode(); + if (!consequent || !alternate) return; + exprs.push(conditionalExpression(node.test, consequent, alternate)); + } else if (isBlockStatement(node)) { + const body = gatherSequenceExpressions(node.body, declars); + if (!body) return; + exprs.push(body); + } else if (isEmptyStatement(node)) { + if (nodes.indexOf(node) === 0) { + ensureLastUndefined = true; + } + } else { + return; + } + } + if (ensureLastUndefined) exprs.push(buildUndefinedNode()); + if (exprs.length === 1) { + return exprs[0]; + } else { + return sequenceExpression(exprs); + } +} +function replaceInline(nodes) { + _context.resync.call(this); + if (Array.isArray(nodes)) { + if (Array.isArray(this.container)) { + nodes = _modification._verifyNodeList.call(this, nodes); + const paths = _modification._containerInsertAfter.call(this, nodes); + this.remove(); + return paths; + } else { + return this.replaceWithMultiple(nodes); + } + } else { + return this.replaceWith(nodes); + } +} + +//# sourceMappingURL=replacement.js.map + + +/***/ }), + +/***/ 42058: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +class Binding { + constructor({ + identifier, + scope, + path, + kind + }) { + this.identifier = void 0; + this.scope = void 0; + this.path = void 0; + this.kind = void 0; + this.constantViolations = []; + this.constant = true; + this.referencePaths = []; + this.referenced = false; + this.references = 0; + this.identifier = identifier; + this.scope = scope; + this.path = path; + this.kind = kind; + if ((kind === "var" || kind === "hoisted") && isInitInLoop(path)) { + this.reassign(path); + } + this.clearValue(); + } + deoptValue() { + this.clearValue(); + this.hasDeoptedValue = true; + } + setValue(value) { + if (this.hasDeoptedValue) return; + this.hasValue = true; + this.value = value; + } + clearValue() { + this.hasDeoptedValue = false; + this.hasValue = false; + this.value = null; + } + reassign(path) { + this.constant = false; + if (this.constantViolations.includes(path)) { + return; + } + this.constantViolations.push(path); + } + reference(path) { + if (this.referencePaths.includes(path)) { + return; + } + this.referenced = true; + this.references++; + this.referencePaths.push(path); + } + dereference() { + this.references--; + this.referenced = !!this.references; + } +} +exports["default"] = Binding; +function isInitInLoop(path) { + const isFunctionDeclarationOrHasInit = !path.isVariableDeclarator() || path.node.init; + for (let { + parentPath, + key + } = path; parentPath; { + parentPath, + key + } = parentPath) { + if (parentPath.isFunctionParent()) return false; + if (key === "left" && parentPath.isForXStatement() || isFunctionDeclarationOrHasInit && key === "body" && parentPath.isLoop()) { + return true; + } + } + return false; +} + +//# sourceMappingURL=binding.js.map + + +/***/ }), + +/***/ 18171: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _renamer = __nccwpck_require__(99391); +var _index = __nccwpck_require__(50148); +var _binding = __nccwpck_require__(42058); +var _globals = __nccwpck_require__(21384); +var _t = __nccwpck_require__(16535); +var t = _t; +var _cache = __nccwpck_require__(6730); +const { + assignmentExpression, + callExpression, + cloneNode, + getBindingIdentifiers, + identifier, + isArrayExpression, + isBinary, + isCallExpression, + isClass, + isClassBody, + isClassDeclaration, + isExportAllDeclaration, + isExportDefaultDeclaration, + isExportNamedDeclaration, + isFunctionDeclaration, + isIdentifier, + isImportDeclaration, + isLiteral, + isMemberExpression, + isMethod, + isModuleSpecifier, + isNullLiteral, + isObjectExpression, + isProperty, + isPureish, + isRegExpLiteral, + isSuper, + isTaggedTemplateExpression, + isTemplateLiteral, + isThisExpression, + isUnaryExpression, + isVariableDeclaration, + expressionStatement, + matchesPattern, + memberExpression, + numericLiteral, + toIdentifier, + variableDeclaration, + variableDeclarator, + isRecordExpression, + isTupleExpression, + isObjectProperty, + isTopicReference, + isMetaProperty, + isPrivateName, + isExportDeclaration, + buildUndefinedNode, + sequenceExpression +} = _t; +function gatherNodeParts(node, parts) { + switch (node == null ? void 0 : node.type) { + default: + if (isImportDeclaration(node) || isExportDeclaration(node)) { + var _node$specifiers; + if ((isExportAllDeclaration(node) || isExportNamedDeclaration(node) || isImportDeclaration(node)) && node.source) { + gatherNodeParts(node.source, parts); + } else if ((isExportNamedDeclaration(node) || isImportDeclaration(node)) && (_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const e of node.specifiers) gatherNodeParts(e, parts); + } else if ((isExportDefaultDeclaration(node) || isExportNamedDeclaration(node)) && node.declaration) { + gatherNodeParts(node.declaration, parts); + } + } else if (isModuleSpecifier(node)) { + gatherNodeParts(node.local, parts); + } else if (isLiteral(node) && !isNullLiteral(node) && !isRegExpLiteral(node) && !isTemplateLiteral(node)) { + parts.push(node.value); + } + break; + case "MemberExpression": + case "OptionalMemberExpression": + case "JSXMemberExpression": + gatherNodeParts(node.object, parts); + gatherNodeParts(node.property, parts); + break; + case "Identifier": + case "JSXIdentifier": + parts.push(node.name); + break; + case "CallExpression": + case "OptionalCallExpression": + case "NewExpression": + gatherNodeParts(node.callee, parts); + break; + case "ObjectExpression": + case "ObjectPattern": + for (const e of node.properties) { + gatherNodeParts(e, parts); + } + break; + case "SpreadElement": + case "RestElement": + gatherNodeParts(node.argument, parts); + break; + case "ObjectProperty": + case "ObjectMethod": + case "ClassProperty": + case "ClassMethod": + case "ClassPrivateProperty": + case "ClassPrivateMethod": + gatherNodeParts(node.key, parts); + break; + case "ThisExpression": + parts.push("this"); + break; + case "Super": + parts.push("super"); + break; + case "Import": + parts.push("import"); + break; + case "DoExpression": + parts.push("do"); + break; + case "YieldExpression": + parts.push("yield"); + gatherNodeParts(node.argument, parts); + break; + case "AwaitExpression": + parts.push("await"); + gatherNodeParts(node.argument, parts); + break; + case "AssignmentExpression": + gatherNodeParts(node.left, parts); + break; + case "VariableDeclarator": + gatherNodeParts(node.id, parts); + break; + case "FunctionExpression": + case "FunctionDeclaration": + case "ClassExpression": + case "ClassDeclaration": + gatherNodeParts(node.id, parts); + break; + case "PrivateName": + gatherNodeParts(node.id, parts); + break; + case "ParenthesizedExpression": + gatherNodeParts(node.expression, parts); + break; + case "UnaryExpression": + case "UpdateExpression": + gatherNodeParts(node.argument, parts); + break; + case "MetaProperty": + gatherNodeParts(node.meta, parts); + gatherNodeParts(node.property, parts); + break; + case "JSXElement": + gatherNodeParts(node.openingElement, parts); + break; + case "JSXOpeningElement": + gatherNodeParts(node.name, parts); + break; + case "JSXFragment": + gatherNodeParts(node.openingFragment, parts); + break; + case "JSXOpeningFragment": + parts.push("Fragment"); + break; + case "JSXNamespacedName": + gatherNodeParts(node.namespace, parts); + gatherNodeParts(node.name, parts); + break; + } +} +function resetScope(scope) { + scope.references = Object.create(null); + scope.bindings = Object.create(null); + scope.globals = Object.create(null); + scope.uids = Object.create(null); +} +{ + var NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding"); +} +const collectorVisitor = { + ForStatement(path) { + const declar = path.get("init"); + if (declar.isVar()) { + const { + scope + } = path; + const parentScope = scope.getFunctionParent() || scope.getProgramParent(); + parentScope.registerBinding("var", declar); + } + }, + Declaration(path) { + if (path.isBlockScoped()) return; + if (path.isImportDeclaration()) return; + if (path.isExportDeclaration()) return; + const parent = path.scope.getFunctionParent() || path.scope.getProgramParent(); + parent.registerDeclaration(path); + }, + ImportDeclaration(path) { + const parent = path.scope.getBlockParent(); + parent.registerDeclaration(path); + }, + TSImportEqualsDeclaration(path) { + const parent = path.scope.getBlockParent(); + parent.registerDeclaration(path); + }, + ReferencedIdentifier(path, state) { + if (t.isTSQualifiedName(path.parent) && path.parent.right === path.node) { + return; + } + if (path.parentPath.isTSImportEqualsDeclaration()) return; + state.references.push(path); + }, + ForXStatement(path, state) { + const left = path.get("left"); + if (left.isPattern() || left.isIdentifier()) { + state.constantViolations.push(path); + } else if (left.isVar()) { + const { + scope + } = path; + const parentScope = scope.getFunctionParent() || scope.getProgramParent(); + parentScope.registerBinding("var", left); + } + }, + ExportDeclaration: { + exit(path) { + const { + node, + scope + } = path; + if (isExportAllDeclaration(node)) return; + const declar = node.declaration; + if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) { + const id = declar.id; + if (!id) return; + const binding = scope.getBinding(id.name); + binding == null || binding.reference(path); + } else if (isVariableDeclaration(declar)) { + for (const decl of declar.declarations) { + for (const name of Object.keys(getBindingIdentifiers(decl))) { + const binding = scope.getBinding(name); + binding == null || binding.reference(path); + } + } + } + } + }, + LabeledStatement(path) { + path.scope.getBlockParent().registerDeclaration(path); + }, + AssignmentExpression(path, state) { + state.assignments.push(path); + }, + UpdateExpression(path, state) { + state.constantViolations.push(path); + }, + UnaryExpression(path, state) { + if (path.node.operator === "delete") { + state.constantViolations.push(path); + } + }, + BlockScoped(path) { + let scope = path.scope; + if (scope.path === path) scope = scope.parent; + const parent = scope.getBlockParent(); + parent.registerDeclaration(path); + if (path.isClassDeclaration() && path.node.id) { + const id = path.node.id; + const name = id.name; + path.scope.bindings[name] = path.scope.parent.getBinding(name); + } + }, + CatchClause(path) { + path.scope.registerBinding("let", path); + }, + Function(path) { + const params = path.get("params"); + for (const param of params) { + path.scope.registerBinding("param", param); + } + if (path.isFunctionExpression() && path.node.id && !path.node.id[NOT_LOCAL_BINDING]) { + path.scope.registerBinding("local", path.get("id"), path); + } + }, + ClassExpression(path) { + if (path.node.id && !path.node.id[NOT_LOCAL_BINDING]) { + path.scope.registerBinding("local", path.get("id"), path); + } + }, + TSTypeAnnotation(path) { + path.skip(); + } +}; +let scopeVisitor; +let uid = 0; +class Scope { + constructor(path) { + this.uid = void 0; + this.path = void 0; + this.block = void 0; + this.inited = void 0; + this.labels = void 0; + this.bindings = void 0; + this.references = void 0; + this.globals = void 0; + this.uids = void 0; + this.data = void 0; + this.crawling = void 0; + const { + node + } = path; + const cached = _cache.scope.get(node); + if ((cached == null ? void 0 : cached.path) === path) { + return cached; + } + _cache.scope.set(node, this); + this.uid = uid++; + this.block = node; + this.path = path; + this.labels = new Map(); + this.inited = false; + } + get parent() { + var _parent; + let parent, + path = this.path; + do { + var _path; + const shouldSkip = path.key === "key" || path.listKey === "decorators"; + path = path.parentPath; + if (shouldSkip && path.isMethod()) path = path.parentPath; + if ((_path = path) != null && _path.isScope()) parent = path; + } while (path && !parent); + return (_parent = parent) == null ? void 0 : _parent.scope; + } + generateDeclaredUidIdentifier(name) { + const id = this.generateUidIdentifier(name); + this.push({ + id + }); + return cloneNode(id); + } + generateUidIdentifier(name) { + return identifier(this.generateUid(name)); + } + generateUid(name = "temp") { + name = toIdentifier(name).replace(/^_+/, "").replace(/\d+$/g, ""); + let uid; + let i = 0; + do { + uid = `_${name}`; + if (i >= 11) uid += i - 1;else if (i >= 9) uid += i - 9;else if (i >= 1) uid += i + 1; + i++; + } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid)); + const program = this.getProgramParent(); + program.references[uid] = true; + program.uids[uid] = true; + return uid; + } + generateUidBasedOnNode(node, defaultName) { + const parts = []; + gatherNodeParts(node, parts); + let id = parts.join("$"); + id = id.replace(/^_/, "") || defaultName || "ref"; + return this.generateUid(id.slice(0, 20)); + } + generateUidIdentifierBasedOnNode(node, defaultName) { + return identifier(this.generateUidBasedOnNode(node, defaultName)); + } + isStatic(node) { + if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) { + return true; + } + if (isIdentifier(node)) { + const binding = this.getBinding(node.name); + if (binding) { + return binding.constant; + } else { + return this.hasBinding(node.name); + } + } + return false; + } + maybeGenerateMemoised(node, dontPush) { + if (this.isStatic(node)) { + return null; + } else { + const id = this.generateUidIdentifierBasedOnNode(node); + if (!dontPush) { + this.push({ + id + }); + return cloneNode(id); + } + return id; + } + } + checkBlockScopedCollisions(local, kind, name, id) { + if (kind === "param") return; + if (local.kind === "local") return; + const duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module" || local.kind === "param" && kind === "const"; + if (duplicate) { + throw this.path.hub.buildError(id, `Duplicate declaration "${name}"`, TypeError); + } + } + rename(oldName, newName) { + const binding = this.getBinding(oldName); + if (binding) { + newName || (newName = this.generateUidIdentifier(oldName).name); + const renamer = new _renamer.default(binding, oldName, newName); + { + renamer.rename(arguments[2]); + } + } + } + dump() { + const sep = "-".repeat(60); + console.log(sep); + let scope = this; + do { + console.log("#", scope.block.type); + for (const name of Object.keys(scope.bindings)) { + const binding = scope.bindings[name]; + console.log(" -", name, { + constant: binding.constant, + references: binding.references, + violations: binding.constantViolations.length, + kind: binding.kind + }); + } + } while (scope = scope.parent); + console.log(sep); + } + hasLabel(name) { + return !!this.getLabel(name); + } + getLabel(name) { + return this.labels.get(name); + } + registerLabel(path) { + this.labels.set(path.node.label.name, path); + } + registerDeclaration(path) { + if (path.isLabeledStatement()) { + this.registerLabel(path); + } else if (path.isFunctionDeclaration()) { + this.registerBinding("hoisted", path.get("id"), path); + } else if (path.isVariableDeclaration()) { + const declarations = path.get("declarations"); + const { + kind + } = path.node; + for (const declar of declarations) { + this.registerBinding(kind === "using" || kind === "await using" ? "const" : kind, declar); + } + } else if (path.isClassDeclaration()) { + if (path.node.declare) return; + this.registerBinding("let", path); + } else if (path.isImportDeclaration()) { + const isTypeDeclaration = path.node.importKind === "type" || path.node.importKind === "typeof"; + const specifiers = path.get("specifiers"); + for (const specifier of specifiers) { + const isTypeSpecifier = isTypeDeclaration || specifier.isImportSpecifier() && (specifier.node.importKind === "type" || specifier.node.importKind === "typeof"); + this.registerBinding(isTypeSpecifier ? "unknown" : "module", specifier); + } + } else if (path.isExportDeclaration()) { + const declar = path.get("declaration"); + if (declar.isClassDeclaration() || declar.isFunctionDeclaration() || declar.isVariableDeclaration()) { + this.registerDeclaration(declar); + } + } else { + this.registerBinding("unknown", path); + } + } + buildUndefinedNode() { + return buildUndefinedNode(); + } + registerConstantViolation(path) { + const ids = path.getAssignmentIdentifiers(); + for (const name of Object.keys(ids)) { + var _this$getBinding; + (_this$getBinding = this.getBinding(name)) == null || _this$getBinding.reassign(path); + } + } + registerBinding(kind, path, bindingPath = path) { + if (!kind) throw new ReferenceError("no `kind`"); + if (path.isVariableDeclaration()) { + const declarators = path.get("declarations"); + for (const declar of declarators) { + this.registerBinding(kind, declar); + } + return; + } + const parent = this.getProgramParent(); + const ids = path.getOuterBindingIdentifiers(true); + for (const name of Object.keys(ids)) { + parent.references[name] = true; + for (const id of ids[name]) { + const local = this.getOwnBinding(name); + if (local) { + if (local.identifier === id) continue; + this.checkBlockScopedCollisions(local, kind, name, id); + } + if (local) { + local.reassign(bindingPath); + } else { + this.bindings[name] = new _binding.default({ + identifier: id, + scope: this, + path: bindingPath, + kind: kind + }); + } + } + } + } + addGlobal(node) { + this.globals[node.name] = node; + } + hasUid(name) { + let scope = this; + do { + if (scope.uids[name]) return true; + } while (scope = scope.parent); + return false; + } + hasGlobal(name) { + let scope = this; + do { + if (scope.globals[name]) return true; + } while (scope = scope.parent); + return false; + } + hasReference(name) { + return !!this.getProgramParent().references[name]; + } + isPure(node, constantsOnly) { + if (isIdentifier(node)) { + const binding = this.getBinding(node.name); + if (!binding) return false; + if (constantsOnly) return binding.constant; + return true; + } else if (isThisExpression(node) || isMetaProperty(node) || isTopicReference(node) || isPrivateName(node)) { + return true; + } else if (isClass(node)) { + var _node$decorators; + if (node.superClass && !this.isPure(node.superClass, constantsOnly)) { + return false; + } + if (((_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length) > 0) { + return false; + } + return this.isPure(node.body, constantsOnly); + } else if (isClassBody(node)) { + for (const method of node.body) { + if (!this.isPure(method, constantsOnly)) return false; + } + return true; + } else if (isBinary(node)) { + return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly); + } else if (isArrayExpression(node) || isTupleExpression(node)) { + for (const elem of node.elements) { + if (elem !== null && !this.isPure(elem, constantsOnly)) return false; + } + return true; + } else if (isObjectExpression(node) || isRecordExpression(node)) { + for (const prop of node.properties) { + if (!this.isPure(prop, constantsOnly)) return false; + } + return true; + } else if (isMethod(node)) { + var _node$decorators2; + if (node.computed && !this.isPure(node.key, constantsOnly)) return false; + if (((_node$decorators2 = node.decorators) == null ? void 0 : _node$decorators2.length) > 0) { + return false; + } + return true; + } else if (isProperty(node)) { + var _node$decorators3; + if (node.computed && !this.isPure(node.key, constantsOnly)) return false; + if (((_node$decorators3 = node.decorators) == null ? void 0 : _node$decorators3.length) > 0) { + return false; + } + if (isObjectProperty(node) || node.static) { + if (node.value !== null && !this.isPure(node.value, constantsOnly)) { + return false; + } + } + return true; + } else if (isUnaryExpression(node)) { + return this.isPure(node.argument, constantsOnly); + } else if (isTemplateLiteral(node)) { + for (const expression of node.expressions) { + if (!this.isPure(expression, constantsOnly)) return false; + } + return true; + } else if (isTaggedTemplateExpression(node)) { + return matchesPattern(node.tag, "String.raw") && !this.hasBinding("String", { + noGlobals: true + }) && this.isPure(node.quasi, constantsOnly); + } else if (isMemberExpression(node)) { + return !node.computed && isIdentifier(node.object) && node.object.name === "Symbol" && isIdentifier(node.property) && node.property.name !== "for" && !this.hasBinding("Symbol", { + noGlobals: true + }); + } else if (isCallExpression(node)) { + return matchesPattern(node.callee, "Symbol.for") && !this.hasBinding("Symbol", { + noGlobals: true + }) && node.arguments.length === 1 && t.isStringLiteral(node.arguments[0]); + } else { + return isPureish(node); + } + } + setData(key, val) { + return this.data[key] = val; + } + getData(key) { + let scope = this; + do { + const data = scope.data[key]; + if (data != null) return data; + } while (scope = scope.parent); + } + removeData(key) { + let scope = this; + do { + const data = scope.data[key]; + if (data != null) scope.data[key] = null; + } while (scope = scope.parent); + } + init() { + if (!this.inited) { + this.inited = true; + this.crawl(); + } + } + crawl() { + const path = this.path; + resetScope(this); + this.data = Object.create(null); + let scope = this; + do { + if (scope.crawling) return; + if (scope.path.isProgram()) { + break; + } + } while (scope = scope.parent); + const programParent = scope; + const state = { + references: [], + constantViolations: [], + assignments: [] + }; + this.crawling = true; + scopeVisitor || (scopeVisitor = _index.default.visitors.merge([{ + Scope(path) { + resetScope(path.scope); + } + }, collectorVisitor])); + if (path.type !== "Program") { + for (const visit of scopeVisitor.enter) { + visit.call(state, path, state); + } + const typeVisitors = scopeVisitor[path.type]; + if (typeVisitors) { + for (const visit of typeVisitors.enter) { + visit.call(state, path, state); + } + } + } + path.traverse(scopeVisitor, state); + this.crawling = false; + for (const path of state.assignments) { + const ids = path.getAssignmentIdentifiers(); + for (const name of Object.keys(ids)) { + if (path.scope.getBinding(name)) continue; + programParent.addGlobal(ids[name]); + } + path.scope.registerConstantViolation(path); + } + for (const ref of state.references) { + const binding = ref.scope.getBinding(ref.node.name); + if (binding) { + binding.reference(ref); + } else { + programParent.addGlobal(ref.node); + } + } + for (const path of state.constantViolations) { + path.scope.registerConstantViolation(path); + } + } + push(opts) { + let path = this.path; + if (path.isPattern()) { + path = this.getPatternParent().path; + } else if (!path.isBlockStatement() && !path.isProgram()) { + path = this.getBlockParent().path; + } + if (path.isSwitchStatement()) { + path = (this.getFunctionParent() || this.getProgramParent()).path; + } + const { + init, + unique, + kind = "var", + id + } = opts; + if (!init && !unique && (kind === "var" || kind === "let") && path.isFunction() && !path.node.name && isCallExpression(path.parent, { + callee: path.node + }) && path.parent.arguments.length <= path.node.params.length && isIdentifier(id)) { + path.pushContainer("params", id); + path.scope.registerBinding("param", path.get("params")[path.node.params.length - 1]); + return; + } + if (path.isLoop() || path.isCatchClause() || path.isFunction()) { + path.ensureBlock(); + path = path.get("body"); + } + const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist; + const dataKey = `declaration:${kind}:${blockHoist}`; + let declarPath = !unique && path.getData(dataKey); + if (!declarPath) { + const declar = variableDeclaration(kind, []); + declar._blockHoist = blockHoist; + [declarPath] = path.unshiftContainer("body", [declar]); + if (!unique) path.setData(dataKey, declarPath); + } + const declarator = variableDeclarator(id, init); + const len = declarPath.node.declarations.push(declarator); + path.scope.registerBinding(kind, declarPath.get("declarations")[len - 1]); + } + getProgramParent() { + let scope = this; + do { + if (scope.path.isProgram()) { + return scope; + } + } while (scope = scope.parent); + throw new Error("Couldn't find a Program"); + } + getFunctionParent() { + let scope = this; + do { + if (scope.path.isFunctionParent()) { + return scope; + } + } while (scope = scope.parent); + return null; + } + getBlockParent() { + let scope = this; + do { + if (scope.path.isBlockParent()) { + return scope; + } + } while (scope = scope.parent); + throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."); + } + getPatternParent() { + let scope = this; + do { + if (!scope.path.isPattern()) { + return scope.getBlockParent(); + } + } while (scope = scope.parent.parent); + throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program..."); + } + getAllBindings() { + const ids = Object.create(null); + let scope = this; + do { + for (const key of Object.keys(scope.bindings)) { + if (key in ids === false) { + ids[key] = scope.bindings[key]; + } + } + scope = scope.parent; + } while (scope); + return ids; + } + bindingIdentifierEquals(name, node) { + return this.getBindingIdentifier(name) === node; + } + getBinding(name) { + let scope = this; + let previousPath; + do { + const binding = scope.getOwnBinding(name); + if (binding) { + var _previousPath; + if ((_previousPath = previousPath) != null && _previousPath.isPattern() && binding.kind !== "param" && binding.kind !== "local") {} else { + return binding; + } + } else if (!binding && name === "arguments" && scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) { + break; + } + previousPath = scope.path; + } while (scope = scope.parent); + } + getOwnBinding(name) { + return this.bindings[name]; + } + getBindingIdentifier(name) { + var _this$getBinding2; + return (_this$getBinding2 = this.getBinding(name)) == null ? void 0 : _this$getBinding2.identifier; + } + getOwnBindingIdentifier(name) { + const binding = this.bindings[name]; + return binding == null ? void 0 : binding.identifier; + } + hasOwnBinding(name) { + return !!this.getOwnBinding(name); + } + hasBinding(name, opts) { + if (!name) return false; + let noGlobals; + let noUids; + let upToScope; + if (typeof opts === "object") { + noGlobals = opts.noGlobals; + noUids = opts.noUids; + upToScope = opts.upToScope; + } else if (typeof opts === "boolean") { + noGlobals = opts; + } + let scope = this; + do { + if (upToScope === scope) { + break; + } + if (scope.hasOwnBinding(name)) { + return true; + } + } while (scope = scope.parent); + if (!noUids && this.hasUid(name)) return true; + if (!noGlobals && Scope.globals.includes(name)) return true; + if (!noGlobals && Scope.contextVariables.includes(name)) return true; + return false; + } + parentHasBinding(name, opts) { + var _this$parent; + return (_this$parent = this.parent) == null ? void 0 : _this$parent.hasBinding(name, opts); + } + moveBindingTo(name, scope) { + const info = this.getBinding(name); + if (info) { + info.scope.removeOwnBinding(name); + info.scope = scope; + scope.bindings[name] = info; + } + } + removeOwnBinding(name) { + delete this.bindings[name]; + } + removeBinding(name) { + var _this$getBinding3; + (_this$getBinding3 = this.getBinding(name)) == null || _this$getBinding3.scope.removeOwnBinding(name); + let scope = this; + do { + if (scope.uids[name]) { + scope.uids[name] = false; + } + } while (scope = scope.parent); + } + hoistVariables(emit = id => this.push({ + id + })) { + this.crawl(); + const seen = new Set(); + for (const name of Object.keys(this.bindings)) { + const binding = this.bindings[name]; + if (!binding) continue; + const { + path + } = binding; + if (!path.isVariableDeclarator()) continue; + const { + parent, + parentPath + } = path; + if (parent.kind !== "var" || seen.has(parent)) continue; + seen.add(path.parent); + let firstId; + const init = []; + for (const decl of parent.declarations) { + firstId != null ? firstId : firstId = decl.id; + if (decl.init) { + init.push(assignmentExpression("=", decl.id, decl.init)); + } + const ids = Object.keys(getBindingIdentifiers(decl, false, true, true)); + for (const name of ids) { + emit(identifier(name), decl.init != null); + } + } + if (parentPath.parentPath.isFor({ + left: parent + })) { + parentPath.replaceWith(firstId); + } else if (init.length === 0) { + parentPath.remove(); + } else { + const expr = init.length === 1 ? init[0] : sequenceExpression(init); + if (parentPath.parentPath.isForStatement({ + init: parent + })) { + parentPath.replaceWith(expr); + } else { + parentPath.replaceWith(expressionStatement(expr)); + } + } + } + } +} +exports["default"] = Scope; +Scope.globals = Object.keys(_globals.builtin); +Scope.contextVariables = ["arguments", "undefined", "Infinity", "NaN"]; +{ + Scope.prototype._renameFromMap = function _renameFromMap(map, oldName, newName, value) { + if (map[oldName]) { + map[newName] = value; + map[oldName] = null; + } + }; + Scope.prototype.traverse = function (node, opts, state) { + (0, _index.default)(node, opts, this, state, this.path); + }; + Scope.prototype._generateUid = function _generateUid(name, i) { + let id = name; + if (i > 1) id += i; + return `_${id}`; + }; + Scope.prototype.toArray = function toArray(node, i, arrayLikeIsIterable) { + if (isIdentifier(node)) { + const binding = this.getBinding(node.name); + if (binding != null && binding.constant && binding.path.isGenericType("Array")) { + return node; + } + } + if (isArrayExpression(node)) { + return node; + } + if (isIdentifier(node, { + name: "arguments" + })) { + return callExpression(memberExpression(memberExpression(memberExpression(identifier("Array"), identifier("prototype")), identifier("slice")), identifier("call")), [node]); + } + let helperName; + const args = [node]; + if (i === true) { + helperName = "toConsumableArray"; + } else if (typeof i === "number") { + args.push(numericLiteral(i)); + helperName = "slicedToArray"; + } else { + helperName = "toArray"; + } + if (arrayLikeIsIterable) { + args.unshift(this.path.hub.addHelper(helperName)); + helperName = "maybeArrayLike"; + } + return callExpression(this.path.hub.addHelper(helperName), args); + }; + Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind(...kinds) { + const ids = Object.create(null); + for (const kind of kinds) { + let scope = this; + do { + for (const name of Object.keys(scope.bindings)) { + const binding = scope.bindings[name]; + if (binding.kind === kind) ids[name] = binding; + } + scope = scope.parent; + } while (scope); + } + return ids; + }; + Object.defineProperties(Scope.prototype, { + parentBlock: { + configurable: true, + enumerable: true, + get() { + return this.path.parent; + } + }, + hub: { + configurable: true, + enumerable: true, + get() { + return this.path.hub; + } + } + }); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 99391: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var t = __nccwpck_require__(16535); +var _t = t; +var _traverseNode = __nccwpck_require__(95469); +var _visitors = __nccwpck_require__(38133); +var _context = __nccwpck_require__(74105); +const { + getAssignmentIdentifiers +} = _t; +const renameVisitor = { + ReferencedIdentifier({ + node + }, state) { + if (node.name === state.oldName) { + node.name = state.newName; + } + }, + Scope(path, state) { + if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) { + path.skip(); + if (path.isMethod()) { + if (!path.requeueComputedKeyAndDecorators) { + _context.requeueComputedKeyAndDecorators.call(path); + } else { + path.requeueComputedKeyAndDecorators(); + } + } + } + }, + ObjectProperty({ + node, + scope + }, state) { + const { + name + } = node.key; + if (node.shorthand && (name === state.oldName || name === state.newName) && scope.getBindingIdentifier(name) === state.binding.identifier) { + node.shorthand = false; + { + var _node$extra; + if ((_node$extra = node.extra) != null && _node$extra.shorthand) node.extra.shorthand = false; + } + } + }, + "AssignmentExpression|Declaration|VariableDeclarator"(path, state) { + if (path.isVariableDeclaration()) return; + const ids = path.isAssignmentExpression() ? getAssignmentIdentifiers(path.node) : path.getOuterBindingIdentifiers(); + for (const name in ids) { + if (name === state.oldName) ids[name].name = state.newName; + } + } +}; +class Renamer { + constructor(binding, oldName, newName) { + this.newName = newName; + this.oldName = oldName; + this.binding = binding; + } + maybeConvertFromExportDeclaration(parentDeclar) { + const maybeExportDeclar = parentDeclar.parentPath; + if (!maybeExportDeclar.isExportDeclaration()) { + return; + } + if (maybeExportDeclar.isExportDefaultDeclaration()) { + const { + declaration + } = maybeExportDeclar.node; + if (t.isDeclaration(declaration) && !declaration.id) { + return; + } + } + if (maybeExportDeclar.isExportAllDeclaration()) { + return; + } + maybeExportDeclar.splitExportDeclaration(); + } + maybeConvertFromClassFunctionDeclaration(path) { + return path; + } + maybeConvertFromClassFunctionExpression(path) { + return path; + } + rename() { + const { + binding, + oldName, + newName + } = this; + const { + scope, + path + } = binding; + const parentDeclar = path.find(path => path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression()); + if (parentDeclar) { + const bindingIds = parentDeclar.getOuterBindingIdentifiers(); + if (bindingIds[oldName] === binding.identifier) { + this.maybeConvertFromExportDeclaration(parentDeclar); + } + } + const blockToTraverse = arguments[0] || scope.block; + const skipKeys = { + discriminant: true + }; + if (t.isMethod(blockToTraverse)) { + if (blockToTraverse.computed) { + skipKeys.key = true; + } + if (!t.isObjectMethod(blockToTraverse)) { + skipKeys.decorators = true; + } + } + (0, _traverseNode.traverseNode)(blockToTraverse, (0, _visitors.explode)(renameVisitor), scope, this, scope.path, skipKeys); + if (!arguments[0]) { + scope.removeOwnBinding(oldName); + scope.bindings[newName] = binding; + this.binding.identifier.name = newName; + } + if (parentDeclar) { + this.maybeConvertFromClassFunctionDeclaration(path); + this.maybeConvertFromClassFunctionExpression(path); + } + } +} +exports["default"] = Renamer; + +//# sourceMappingURL=renamer.js.map + + +/***/ }), + +/***/ 95469: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.traverseNode = traverseNode; +var _context = __nccwpck_require__(49767); +var _index = __nccwpck_require__(91806); +var _t = __nccwpck_require__(16535); +var _context2 = __nccwpck_require__(74105); +const { + VISITOR_KEYS +} = _t; +function _visitPaths(ctx, paths) { + ctx.queue = paths; + ctx.priorityQueue = []; + const visited = new Set(); + let stop = false; + let visitIndex = 0; + for (; visitIndex < paths.length;) { + const path = paths[visitIndex]; + visitIndex++; + _context2.resync.call(path); + if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== ctx) { + _context2.pushContext.call(path, ctx); + } + if (path.key === null) continue; + const { + node + } = path; + if (visited.has(node)) continue; + if (node) visited.add(node); + if (_visit(ctx, path)) { + stop = true; + break; + } + if (ctx.priorityQueue.length) { + stop = _visitPaths(ctx, ctx.priorityQueue); + ctx.priorityQueue = []; + ctx.queue = paths; + if (stop) break; + } + } + for (let i = 0; i < visitIndex; i++) { + _context2.popContext.call(paths[i]); + } + ctx.queue = null; + return stop; +} +function _visit(ctx, path) { + var _opts$denylist; + const node = path.node; + if (!node) { + return false; + } + const opts = ctx.opts; + const denylist = (_opts$denylist = opts.denylist) != null ? _opts$denylist : opts.blacklist; + if (denylist != null && denylist.includes(node.type)) { + return false; + } + if (opts.shouldSkip != null && opts.shouldSkip(path)) { + return false; + } + if (path.shouldSkip) return path.shouldStop; + if (_context2._call.call(path, opts.enter)) return path.shouldStop; + if (path.node) { + var _opts$node$type; + if (_context2._call.call(path, (_opts$node$type = opts[node.type]) == null ? void 0 : _opts$node$type.enter)) return path.shouldStop; + } + path.shouldStop = _traverse(path.node, opts, path.scope, ctx.state, path, path.skipKeys); + if (path.node) { + if (_context2._call.call(path, opts.exit)) return true; + } + if (path.node) { + var _opts$node$type2; + _context2._call.call(path, (_opts$node$type2 = opts[node.type]) == null ? void 0 : _opts$node$type2.exit); + } + return path.shouldStop; +} +function _traverse(node, opts, scope, state, path, skipKeys, visitSelf) { + const keys = VISITOR_KEYS[node.type]; + if (!(keys != null && keys.length)) return false; + const ctx = new _context.default(scope, opts, state, path); + if (visitSelf) { + if (skipKeys != null && skipKeys[path.parentKey]) return false; + return _visitPaths(ctx, [path]); + } + for (const key of keys) { + if (skipKeys != null && skipKeys[key]) continue; + const prop = node[key]; + if (!prop) continue; + if (Array.isArray(prop)) { + if (!prop.length) continue; + const paths = []; + for (let i = 0; i < prop.length; i++) { + const childPath = _index.default.get({ + parentPath: path, + parent: node, + container: prop, + key: i, + listKey: key + }); + paths.push(childPath); + } + if (_visitPaths(ctx, paths)) return true; + } else { + if (_visitPaths(ctx, [_index.default.get({ + parentPath: path, + parent: node, + container: node, + key, + listKey: null + })])) { + return true; + } + } + } + return false; +} +function traverseNode(node, opts, scope, state, path, skipKeys, visitSelf) { + ; + const keys = VISITOR_KEYS[node.type]; + if (!keys) return false; + const context = new _context.default(scope, opts, state, path); + if (visitSelf) { + if (skipKeys != null && skipKeys[path.parentKey]) return false; + return context.visitQueue([path]); + } + for (const key of keys) { + if (skipKeys != null && skipKeys[key]) continue; + if (context.visit(node, key)) { + return true; + } + } + return false; +} + +//# sourceMappingURL=traverse-node.js.map + + +/***/ }), + +/***/ 38133: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.environmentVisitor = environmentVisitor; +exports.explode = explode$1; +exports.isExplodedVisitor = isExplodedVisitor; +exports.merge = merge; +exports.verify = verify$1; +var virtualTypes = __nccwpck_require__(74425); +var virtualTypesValidators = __nccwpck_require__(66582); +var _t = __nccwpck_require__(16535); +var _context = __nccwpck_require__(74105); +const { + DEPRECATED_KEYS, + DEPRECATED_ALIASES, + FLIPPED_ALIAS_KEYS, + TYPES, + __internal__deprecationWarning: deprecationWarning +} = _t; +function isVirtualType(type) { + return type in virtualTypes; +} +function isExplodedVisitor(visitor) { + return visitor == null ? void 0 : visitor._exploded; +} +function explode$1(visitor) { + if (isExplodedVisitor(visitor)) return visitor; + visitor._exploded = true; + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + const parts = nodeType.split("|"); + if (parts.length === 1) continue; + const fns = visitor[nodeType]; + delete visitor[nodeType]; + for (const part of parts) { + visitor[part] = fns; + } + } + verify$1(visitor); + delete visitor.__esModule; + ensureEntranceObjects(visitor); + ensureCallbackArrays(visitor); + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + if (!isVirtualType(nodeType)) continue; + const fns = visitor[nodeType]; + for (const type of Object.keys(fns)) { + fns[type] = wrapCheck(nodeType, fns[type]); + } + delete visitor[nodeType]; + const types = virtualTypes[nodeType]; + if (types !== null) { + for (const type of types) { + if (visitor[type]) { + mergePair(visitor[type], fns); + } else { + visitor[type] = fns; + } + } + } else { + mergePair(visitor, fns); + } + } + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + let aliases = FLIPPED_ALIAS_KEYS[nodeType]; + if (nodeType in DEPRECATED_KEYS) { + const deprecatedKey = DEPRECATED_KEYS[nodeType]; + deprecationWarning(nodeType, deprecatedKey, "Visitor "); + aliases = [deprecatedKey]; + } else if (nodeType in DEPRECATED_ALIASES) { + const deprecatedAlias = DEPRECATED_ALIASES[nodeType]; + deprecationWarning(nodeType, deprecatedAlias, "Visitor "); + aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias]; + } + if (!aliases) continue; + const fns = visitor[nodeType]; + delete visitor[nodeType]; + for (const alias of aliases) { + const existing = visitor[alias]; + if (existing) { + mergePair(existing, fns); + } else { + visitor[alias] = Object.assign({}, fns); + } + } + } + for (const nodeType of Object.keys(visitor)) { + if (shouldIgnoreKey(nodeType)) continue; + ensureCallbackArrays(visitor[nodeType]); + } + return visitor; +} +function verify$1(visitor) { + if (visitor._verified) return; + if (typeof visitor === "function") { + throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?"); + } + for (const nodeType of Object.keys(visitor)) { + if (nodeType === "enter" || nodeType === "exit") { + validateVisitorMethods(nodeType, visitor[nodeType]); + } + if (shouldIgnoreKey(nodeType)) continue; + if (!TYPES.includes(nodeType)) { + throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.27.1"}`); + } + const visitors = visitor[nodeType]; + if (typeof visitors === "object") { + for (const visitorKey of Object.keys(visitors)) { + if (visitorKey === "enter" || visitorKey === "exit") { + validateVisitorMethods(`${nodeType}.${visitorKey}`, visitors[visitorKey]); + } else { + throw new Error("You passed `traverse()` a visitor object with the property " + `${nodeType} that has the invalid property ${visitorKey}`); + } + } + } + } + visitor._verified = true; +} +function validateVisitorMethods(path, val) { + const fns = [].concat(val); + for (const fn of fns) { + if (typeof fn !== "function") { + throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`); + } + } +} +function merge(visitors, states = [], wrapper) { + const mergedVisitor = { + _verified: true, + _exploded: true + }; + { + Object.defineProperty(mergedVisitor, "_exploded", { + enumerable: false + }); + Object.defineProperty(mergedVisitor, "_verified", { + enumerable: false + }); + } + for (let i = 0; i < visitors.length; i++) { + const visitor = explode$1(visitors[i]); + const state = states[i]; + let topVisitor = visitor; + if (state || wrapper) { + topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper); + } + mergePair(mergedVisitor, topVisitor); + for (const key of Object.keys(visitor)) { + if (shouldIgnoreKey(key)) continue; + let typeVisitor = visitor[key]; + if (state || wrapper) { + typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper); + } + const nodeVisitor = mergedVisitor[key] || (mergedVisitor[key] = {}); + mergePair(nodeVisitor, typeVisitor); + } + } + return mergedVisitor; +} +function wrapWithStateOrWrapper(oldVisitor, state, wrapper) { + const newVisitor = {}; + for (const phase of ["enter", "exit"]) { + let fns = oldVisitor[phase]; + if (!Array.isArray(fns)) continue; + fns = fns.map(function (fn) { + let newFn = fn; + if (state) { + newFn = function (path) { + fn.call(state, path, state); + }; + } + if (wrapper) { + newFn = wrapper(state == null ? void 0 : state.key, phase, newFn); + } + if (newFn !== fn) { + newFn.toString = () => fn.toString(); + } + return newFn; + }); + newVisitor[phase] = fns; + } + return newVisitor; +} +function ensureEntranceObjects(obj) { + for (const key of Object.keys(obj)) { + if (shouldIgnoreKey(key)) continue; + const fns = obj[key]; + if (typeof fns === "function") { + obj[key] = { + enter: fns + }; + } + } +} +function ensureCallbackArrays(obj) { + if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter]; + if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit]; +} +function wrapCheck(nodeType, fn) { + const fnKey = `is${nodeType}`; + const validator = virtualTypesValidators[fnKey]; + const newFn = function (path) { + if (validator.call(path)) { + return fn.apply(this, arguments); + } + }; + newFn.toString = () => fn.toString(); + return newFn; +} +function shouldIgnoreKey(key) { + if (key[0] === "_") return true; + if (key === "enter" || key === "exit" || key === "shouldSkip") return true; + if (key === "denylist" || key === "noScope" || key === "skipKeys") { + return true; + } + { + if (key === "blacklist") { + return true; + } + } + return false; +} +function mergePair(dest, src) { + for (const phase of ["enter", "exit"]) { + if (!src[phase]) continue; + dest[phase] = [].concat(dest[phase] || [], src[phase]); + } +} +const _environmentVisitor = { + FunctionParent(path) { + if (path.isArrowFunctionExpression()) return; + path.skip(); + if (path.isMethod()) { + if (!path.requeueComputedKeyAndDecorators) { + _context.requeueComputedKeyAndDecorators.call(path); + } else { + path.requeueComputedKeyAndDecorators(); + } + } + }, + Property(path) { + if (path.isObjectProperty()) return; + path.skip(); + if (!path.requeueComputedKeyAndDecorators) { + _context.requeueComputedKeyAndDecorators.call(path); + } else { + path.requeueComputedKeyAndDecorators(); + } + } +}; +function environmentVisitor(visitor) { + return merge([_environmentVisitor, visitor]); +} + +//# sourceMappingURL=visitors.js.map + + +/***/ }), + +/***/ 41737: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = assertNode; +var _isNode = __nccwpck_require__(84503); +function assertNode(node) { + if (!(0, _isNode.default)(node)) { + var _node$type; + const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node); + throw new TypeError(`Not a valid node of type "${type}"`); + } +} + +//# sourceMappingURL=assertNode.js.map + + +/***/ }), + +/***/ 98345: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.assertAccessor = assertAccessor; +exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation; +exports.assertArgumentPlaceholder = assertArgumentPlaceholder; +exports.assertArrayExpression = assertArrayExpression; +exports.assertArrayPattern = assertArrayPattern; +exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation; +exports.assertArrowFunctionExpression = assertArrowFunctionExpression; +exports.assertAssignmentExpression = assertAssignmentExpression; +exports.assertAssignmentPattern = assertAssignmentPattern; +exports.assertAwaitExpression = assertAwaitExpression; +exports.assertBigIntLiteral = assertBigIntLiteral; +exports.assertBinary = assertBinary; +exports.assertBinaryExpression = assertBinaryExpression; +exports.assertBindExpression = assertBindExpression; +exports.assertBlock = assertBlock; +exports.assertBlockParent = assertBlockParent; +exports.assertBlockStatement = assertBlockStatement; +exports.assertBooleanLiteral = assertBooleanLiteral; +exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation; +exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation; +exports.assertBreakStatement = assertBreakStatement; +exports.assertCallExpression = assertCallExpression; +exports.assertCatchClause = assertCatchClause; +exports.assertClass = assertClass; +exports.assertClassAccessorProperty = assertClassAccessorProperty; +exports.assertClassBody = assertClassBody; +exports.assertClassDeclaration = assertClassDeclaration; +exports.assertClassExpression = assertClassExpression; +exports.assertClassImplements = assertClassImplements; +exports.assertClassMethod = assertClassMethod; +exports.assertClassPrivateMethod = assertClassPrivateMethod; +exports.assertClassPrivateProperty = assertClassPrivateProperty; +exports.assertClassProperty = assertClassProperty; +exports.assertCompletionStatement = assertCompletionStatement; +exports.assertConditional = assertConditional; +exports.assertConditionalExpression = assertConditionalExpression; +exports.assertContinueStatement = assertContinueStatement; +exports.assertDebuggerStatement = assertDebuggerStatement; +exports.assertDecimalLiteral = assertDecimalLiteral; +exports.assertDeclaration = assertDeclaration; +exports.assertDeclareClass = assertDeclareClass; +exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration; +exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration; +exports.assertDeclareFunction = assertDeclareFunction; +exports.assertDeclareInterface = assertDeclareInterface; +exports.assertDeclareModule = assertDeclareModule; +exports.assertDeclareModuleExports = assertDeclareModuleExports; +exports.assertDeclareOpaqueType = assertDeclareOpaqueType; +exports.assertDeclareTypeAlias = assertDeclareTypeAlias; +exports.assertDeclareVariable = assertDeclareVariable; +exports.assertDeclaredPredicate = assertDeclaredPredicate; +exports.assertDecorator = assertDecorator; +exports.assertDirective = assertDirective; +exports.assertDirectiveLiteral = assertDirectiveLiteral; +exports.assertDoExpression = assertDoExpression; +exports.assertDoWhileStatement = assertDoWhileStatement; +exports.assertEmptyStatement = assertEmptyStatement; +exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation; +exports.assertEnumBody = assertEnumBody; +exports.assertEnumBooleanBody = assertEnumBooleanBody; +exports.assertEnumBooleanMember = assertEnumBooleanMember; +exports.assertEnumDeclaration = assertEnumDeclaration; +exports.assertEnumDefaultedMember = assertEnumDefaultedMember; +exports.assertEnumMember = assertEnumMember; +exports.assertEnumNumberBody = assertEnumNumberBody; +exports.assertEnumNumberMember = assertEnumNumberMember; +exports.assertEnumStringBody = assertEnumStringBody; +exports.assertEnumStringMember = assertEnumStringMember; +exports.assertEnumSymbolBody = assertEnumSymbolBody; +exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation; +exports.assertExportAllDeclaration = assertExportAllDeclaration; +exports.assertExportDeclaration = assertExportDeclaration; +exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration; +exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier; +exports.assertExportNamedDeclaration = assertExportNamedDeclaration; +exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier; +exports.assertExportSpecifier = assertExportSpecifier; +exports.assertExpression = assertExpression; +exports.assertExpressionStatement = assertExpressionStatement; +exports.assertExpressionWrapper = assertExpressionWrapper; +exports.assertFile = assertFile; +exports.assertFlow = assertFlow; +exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation; +exports.assertFlowDeclaration = assertFlowDeclaration; +exports.assertFlowPredicate = assertFlowPredicate; +exports.assertFlowType = assertFlowType; +exports.assertFor = assertFor; +exports.assertForInStatement = assertForInStatement; +exports.assertForOfStatement = assertForOfStatement; +exports.assertForStatement = assertForStatement; +exports.assertForXStatement = assertForXStatement; +exports.assertFunction = assertFunction; +exports.assertFunctionDeclaration = assertFunctionDeclaration; +exports.assertFunctionExpression = assertFunctionExpression; +exports.assertFunctionParent = assertFunctionParent; +exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation; +exports.assertFunctionTypeParam = assertFunctionTypeParam; +exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation; +exports.assertIdentifier = assertIdentifier; +exports.assertIfStatement = assertIfStatement; +exports.assertImmutable = assertImmutable; +exports.assertImport = assertImport; +exports.assertImportAttribute = assertImportAttribute; +exports.assertImportDeclaration = assertImportDeclaration; +exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier; +exports.assertImportExpression = assertImportExpression; +exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier; +exports.assertImportOrExportDeclaration = assertImportOrExportDeclaration; +exports.assertImportSpecifier = assertImportSpecifier; +exports.assertIndexedAccessType = assertIndexedAccessType; +exports.assertInferredPredicate = assertInferredPredicate; +exports.assertInterfaceDeclaration = assertInterfaceDeclaration; +exports.assertInterfaceExtends = assertInterfaceExtends; +exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation; +exports.assertInterpreterDirective = assertInterpreterDirective; +exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation; +exports.assertJSX = assertJSX; +exports.assertJSXAttribute = assertJSXAttribute; +exports.assertJSXClosingElement = assertJSXClosingElement; +exports.assertJSXClosingFragment = assertJSXClosingFragment; +exports.assertJSXElement = assertJSXElement; +exports.assertJSXEmptyExpression = assertJSXEmptyExpression; +exports.assertJSXExpressionContainer = assertJSXExpressionContainer; +exports.assertJSXFragment = assertJSXFragment; +exports.assertJSXIdentifier = assertJSXIdentifier; +exports.assertJSXMemberExpression = assertJSXMemberExpression; +exports.assertJSXNamespacedName = assertJSXNamespacedName; +exports.assertJSXOpeningElement = assertJSXOpeningElement; +exports.assertJSXOpeningFragment = assertJSXOpeningFragment; +exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute; +exports.assertJSXSpreadChild = assertJSXSpreadChild; +exports.assertJSXText = assertJSXText; +exports.assertLVal = assertLVal; +exports.assertLabeledStatement = assertLabeledStatement; +exports.assertLiteral = assertLiteral; +exports.assertLogicalExpression = assertLogicalExpression; +exports.assertLoop = assertLoop; +exports.assertMemberExpression = assertMemberExpression; +exports.assertMetaProperty = assertMetaProperty; +exports.assertMethod = assertMethod; +exports.assertMiscellaneous = assertMiscellaneous; +exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation; +exports.assertModuleDeclaration = assertModuleDeclaration; +exports.assertModuleExpression = assertModuleExpression; +exports.assertModuleSpecifier = assertModuleSpecifier; +exports.assertNewExpression = assertNewExpression; +exports.assertNoop = assertNoop; +exports.assertNullLiteral = assertNullLiteral; +exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation; +exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation; +exports.assertNumberLiteral = assertNumberLiteral; +exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation; +exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation; +exports.assertNumericLiteral = assertNumericLiteral; +exports.assertObjectExpression = assertObjectExpression; +exports.assertObjectMember = assertObjectMember; +exports.assertObjectMethod = assertObjectMethod; +exports.assertObjectPattern = assertObjectPattern; +exports.assertObjectProperty = assertObjectProperty; +exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation; +exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty; +exports.assertObjectTypeIndexer = assertObjectTypeIndexer; +exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot; +exports.assertObjectTypeProperty = assertObjectTypeProperty; +exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty; +exports.assertOpaqueType = assertOpaqueType; +exports.assertOptionalCallExpression = assertOptionalCallExpression; +exports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType; +exports.assertOptionalMemberExpression = assertOptionalMemberExpression; +exports.assertParenthesizedExpression = assertParenthesizedExpression; +exports.assertPattern = assertPattern; +exports.assertPatternLike = assertPatternLike; +exports.assertPipelineBareFunction = assertPipelineBareFunction; +exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference; +exports.assertPipelineTopicExpression = assertPipelineTopicExpression; +exports.assertPlaceholder = assertPlaceholder; +exports.assertPrivate = assertPrivate; +exports.assertPrivateName = assertPrivateName; +exports.assertProgram = assertProgram; +exports.assertProperty = assertProperty; +exports.assertPureish = assertPureish; +exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier; +exports.assertRecordExpression = assertRecordExpression; +exports.assertRegExpLiteral = assertRegExpLiteral; +exports.assertRegexLiteral = assertRegexLiteral; +exports.assertRestElement = assertRestElement; +exports.assertRestProperty = assertRestProperty; +exports.assertReturnStatement = assertReturnStatement; +exports.assertScopable = assertScopable; +exports.assertSequenceExpression = assertSequenceExpression; +exports.assertSpreadElement = assertSpreadElement; +exports.assertSpreadProperty = assertSpreadProperty; +exports.assertStandardized = assertStandardized; +exports.assertStatement = assertStatement; +exports.assertStaticBlock = assertStaticBlock; +exports.assertStringLiteral = assertStringLiteral; +exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation; +exports.assertStringTypeAnnotation = assertStringTypeAnnotation; +exports.assertSuper = assertSuper; +exports.assertSwitchCase = assertSwitchCase; +exports.assertSwitchStatement = assertSwitchStatement; +exports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation; +exports.assertTSAnyKeyword = assertTSAnyKeyword; +exports.assertTSArrayType = assertTSArrayType; +exports.assertTSAsExpression = assertTSAsExpression; +exports.assertTSBaseType = assertTSBaseType; +exports.assertTSBigIntKeyword = assertTSBigIntKeyword; +exports.assertTSBooleanKeyword = assertTSBooleanKeyword; +exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration; +exports.assertTSConditionalType = assertTSConditionalType; +exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration; +exports.assertTSConstructorType = assertTSConstructorType; +exports.assertTSDeclareFunction = assertTSDeclareFunction; +exports.assertTSDeclareMethod = assertTSDeclareMethod; +exports.assertTSEntityName = assertTSEntityName; +exports.assertTSEnumBody = assertTSEnumBody; +exports.assertTSEnumDeclaration = assertTSEnumDeclaration; +exports.assertTSEnumMember = assertTSEnumMember; +exports.assertTSExportAssignment = assertTSExportAssignment; +exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments; +exports.assertTSExternalModuleReference = assertTSExternalModuleReference; +exports.assertTSFunctionType = assertTSFunctionType; +exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration; +exports.assertTSImportType = assertTSImportType; +exports.assertTSIndexSignature = assertTSIndexSignature; +exports.assertTSIndexedAccessType = assertTSIndexedAccessType; +exports.assertTSInferType = assertTSInferType; +exports.assertTSInstantiationExpression = assertTSInstantiationExpression; +exports.assertTSInterfaceBody = assertTSInterfaceBody; +exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration; +exports.assertTSIntersectionType = assertTSIntersectionType; +exports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword; +exports.assertTSLiteralType = assertTSLiteralType; +exports.assertTSMappedType = assertTSMappedType; +exports.assertTSMethodSignature = assertTSMethodSignature; +exports.assertTSModuleBlock = assertTSModuleBlock; +exports.assertTSModuleDeclaration = assertTSModuleDeclaration; +exports.assertTSNamedTupleMember = assertTSNamedTupleMember; +exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration; +exports.assertTSNeverKeyword = assertTSNeverKeyword; +exports.assertTSNonNullExpression = assertTSNonNullExpression; +exports.assertTSNullKeyword = assertTSNullKeyword; +exports.assertTSNumberKeyword = assertTSNumberKeyword; +exports.assertTSObjectKeyword = assertTSObjectKeyword; +exports.assertTSOptionalType = assertTSOptionalType; +exports.assertTSParameterProperty = assertTSParameterProperty; +exports.assertTSParenthesizedType = assertTSParenthesizedType; +exports.assertTSPropertySignature = assertTSPropertySignature; +exports.assertTSQualifiedName = assertTSQualifiedName; +exports.assertTSRestType = assertTSRestType; +exports.assertTSSatisfiesExpression = assertTSSatisfiesExpression; +exports.assertTSStringKeyword = assertTSStringKeyword; +exports.assertTSSymbolKeyword = assertTSSymbolKeyword; +exports.assertTSTemplateLiteralType = assertTSTemplateLiteralType; +exports.assertTSThisType = assertTSThisType; +exports.assertTSTupleType = assertTSTupleType; +exports.assertTSType = assertTSType; +exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration; +exports.assertTSTypeAnnotation = assertTSTypeAnnotation; +exports.assertTSTypeAssertion = assertTSTypeAssertion; +exports.assertTSTypeElement = assertTSTypeElement; +exports.assertTSTypeLiteral = assertTSTypeLiteral; +exports.assertTSTypeOperator = assertTSTypeOperator; +exports.assertTSTypeParameter = assertTSTypeParameter; +exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration; +exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation; +exports.assertTSTypePredicate = assertTSTypePredicate; +exports.assertTSTypeQuery = assertTSTypeQuery; +exports.assertTSTypeReference = assertTSTypeReference; +exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword; +exports.assertTSUnionType = assertTSUnionType; +exports.assertTSUnknownKeyword = assertTSUnknownKeyword; +exports.assertTSVoidKeyword = assertTSVoidKeyword; +exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression; +exports.assertTemplateElement = assertTemplateElement; +exports.assertTemplateLiteral = assertTemplateLiteral; +exports.assertTerminatorless = assertTerminatorless; +exports.assertThisExpression = assertThisExpression; +exports.assertThisTypeAnnotation = assertThisTypeAnnotation; +exports.assertThrowStatement = assertThrowStatement; +exports.assertTopicReference = assertTopicReference; +exports.assertTryStatement = assertTryStatement; +exports.assertTupleExpression = assertTupleExpression; +exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation; +exports.assertTypeAlias = assertTypeAlias; +exports.assertTypeAnnotation = assertTypeAnnotation; +exports.assertTypeCastExpression = assertTypeCastExpression; +exports.assertTypeParameter = assertTypeParameter; +exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration; +exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation; +exports.assertTypeScript = assertTypeScript; +exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation; +exports.assertUnaryExpression = assertUnaryExpression; +exports.assertUnaryLike = assertUnaryLike; +exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation; +exports.assertUpdateExpression = assertUpdateExpression; +exports.assertUserWhitespacable = assertUserWhitespacable; +exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier; +exports.assertVariableDeclaration = assertVariableDeclaration; +exports.assertVariableDeclarator = assertVariableDeclarator; +exports.assertVariance = assertVariance; +exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation; +exports.assertWhile = assertWhile; +exports.assertWhileStatement = assertWhileStatement; +exports.assertWithStatement = assertWithStatement; +exports.assertYieldExpression = assertYieldExpression; +var _is = __nccwpck_require__(20051); +var _deprecationWarning = __nccwpck_require__(14711); +function assert(type, node, opts) { + if (!(0, _is.default)(type, node, opts)) { + throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, ` + `but instead got "${node.type}".`); + } +} +function assertArrayExpression(node, opts) { + assert("ArrayExpression", node, opts); +} +function assertAssignmentExpression(node, opts) { + assert("AssignmentExpression", node, opts); +} +function assertBinaryExpression(node, opts) { + assert("BinaryExpression", node, opts); +} +function assertInterpreterDirective(node, opts) { + assert("InterpreterDirective", node, opts); +} +function assertDirective(node, opts) { + assert("Directive", node, opts); +} +function assertDirectiveLiteral(node, opts) { + assert("DirectiveLiteral", node, opts); +} +function assertBlockStatement(node, opts) { + assert("BlockStatement", node, opts); +} +function assertBreakStatement(node, opts) { + assert("BreakStatement", node, opts); +} +function assertCallExpression(node, opts) { + assert("CallExpression", node, opts); +} +function assertCatchClause(node, opts) { + assert("CatchClause", node, opts); +} +function assertConditionalExpression(node, opts) { + assert("ConditionalExpression", node, opts); +} +function assertContinueStatement(node, opts) { + assert("ContinueStatement", node, opts); +} +function assertDebuggerStatement(node, opts) { + assert("DebuggerStatement", node, opts); +} +function assertDoWhileStatement(node, opts) { + assert("DoWhileStatement", node, opts); +} +function assertEmptyStatement(node, opts) { + assert("EmptyStatement", node, opts); +} +function assertExpressionStatement(node, opts) { + assert("ExpressionStatement", node, opts); +} +function assertFile(node, opts) { + assert("File", node, opts); +} +function assertForInStatement(node, opts) { + assert("ForInStatement", node, opts); +} +function assertForStatement(node, opts) { + assert("ForStatement", node, opts); +} +function assertFunctionDeclaration(node, opts) { + assert("FunctionDeclaration", node, opts); +} +function assertFunctionExpression(node, opts) { + assert("FunctionExpression", node, opts); +} +function assertIdentifier(node, opts) { + assert("Identifier", node, opts); +} +function assertIfStatement(node, opts) { + assert("IfStatement", node, opts); +} +function assertLabeledStatement(node, opts) { + assert("LabeledStatement", node, opts); +} +function assertStringLiteral(node, opts) { + assert("StringLiteral", node, opts); +} +function assertNumericLiteral(node, opts) { + assert("NumericLiteral", node, opts); +} +function assertNullLiteral(node, opts) { + assert("NullLiteral", node, opts); +} +function assertBooleanLiteral(node, opts) { + assert("BooleanLiteral", node, opts); +} +function assertRegExpLiteral(node, opts) { + assert("RegExpLiteral", node, opts); +} +function assertLogicalExpression(node, opts) { + assert("LogicalExpression", node, opts); +} +function assertMemberExpression(node, opts) { + assert("MemberExpression", node, opts); +} +function assertNewExpression(node, opts) { + assert("NewExpression", node, opts); +} +function assertProgram(node, opts) { + assert("Program", node, opts); +} +function assertObjectExpression(node, opts) { + assert("ObjectExpression", node, opts); +} +function assertObjectMethod(node, opts) { + assert("ObjectMethod", node, opts); +} +function assertObjectProperty(node, opts) { + assert("ObjectProperty", node, opts); +} +function assertRestElement(node, opts) { + assert("RestElement", node, opts); +} +function assertReturnStatement(node, opts) { + assert("ReturnStatement", node, opts); +} +function assertSequenceExpression(node, opts) { + assert("SequenceExpression", node, opts); +} +function assertParenthesizedExpression(node, opts) { + assert("ParenthesizedExpression", node, opts); +} +function assertSwitchCase(node, opts) { + assert("SwitchCase", node, opts); +} +function assertSwitchStatement(node, opts) { + assert("SwitchStatement", node, opts); +} +function assertThisExpression(node, opts) { + assert("ThisExpression", node, opts); +} +function assertThrowStatement(node, opts) { + assert("ThrowStatement", node, opts); +} +function assertTryStatement(node, opts) { + assert("TryStatement", node, opts); +} +function assertUnaryExpression(node, opts) { + assert("UnaryExpression", node, opts); +} +function assertUpdateExpression(node, opts) { + assert("UpdateExpression", node, opts); +} +function assertVariableDeclaration(node, opts) { + assert("VariableDeclaration", node, opts); +} +function assertVariableDeclarator(node, opts) { + assert("VariableDeclarator", node, opts); +} +function assertWhileStatement(node, opts) { + assert("WhileStatement", node, opts); +} +function assertWithStatement(node, opts) { + assert("WithStatement", node, opts); +} +function assertAssignmentPattern(node, opts) { + assert("AssignmentPattern", node, opts); +} +function assertArrayPattern(node, opts) { + assert("ArrayPattern", node, opts); +} +function assertArrowFunctionExpression(node, opts) { + assert("ArrowFunctionExpression", node, opts); +} +function assertClassBody(node, opts) { + assert("ClassBody", node, opts); +} +function assertClassExpression(node, opts) { + assert("ClassExpression", node, opts); +} +function assertClassDeclaration(node, opts) { + assert("ClassDeclaration", node, opts); +} +function assertExportAllDeclaration(node, opts) { + assert("ExportAllDeclaration", node, opts); +} +function assertExportDefaultDeclaration(node, opts) { + assert("ExportDefaultDeclaration", node, opts); +} +function assertExportNamedDeclaration(node, opts) { + assert("ExportNamedDeclaration", node, opts); +} +function assertExportSpecifier(node, opts) { + assert("ExportSpecifier", node, opts); +} +function assertForOfStatement(node, opts) { + assert("ForOfStatement", node, opts); +} +function assertImportDeclaration(node, opts) { + assert("ImportDeclaration", node, opts); +} +function assertImportDefaultSpecifier(node, opts) { + assert("ImportDefaultSpecifier", node, opts); +} +function assertImportNamespaceSpecifier(node, opts) { + assert("ImportNamespaceSpecifier", node, opts); +} +function assertImportSpecifier(node, opts) { + assert("ImportSpecifier", node, opts); +} +function assertImportExpression(node, opts) { + assert("ImportExpression", node, opts); +} +function assertMetaProperty(node, opts) { + assert("MetaProperty", node, opts); +} +function assertClassMethod(node, opts) { + assert("ClassMethod", node, opts); +} +function assertObjectPattern(node, opts) { + assert("ObjectPattern", node, opts); +} +function assertSpreadElement(node, opts) { + assert("SpreadElement", node, opts); +} +function assertSuper(node, opts) { + assert("Super", node, opts); +} +function assertTaggedTemplateExpression(node, opts) { + assert("TaggedTemplateExpression", node, opts); +} +function assertTemplateElement(node, opts) { + assert("TemplateElement", node, opts); +} +function assertTemplateLiteral(node, opts) { + assert("TemplateLiteral", node, opts); +} +function assertYieldExpression(node, opts) { + assert("YieldExpression", node, opts); +} +function assertAwaitExpression(node, opts) { + assert("AwaitExpression", node, opts); +} +function assertImport(node, opts) { + assert("Import", node, opts); +} +function assertBigIntLiteral(node, opts) { + assert("BigIntLiteral", node, opts); +} +function assertExportNamespaceSpecifier(node, opts) { + assert("ExportNamespaceSpecifier", node, opts); +} +function assertOptionalMemberExpression(node, opts) { + assert("OptionalMemberExpression", node, opts); +} +function assertOptionalCallExpression(node, opts) { + assert("OptionalCallExpression", node, opts); +} +function assertClassProperty(node, opts) { + assert("ClassProperty", node, opts); +} +function assertClassAccessorProperty(node, opts) { + assert("ClassAccessorProperty", node, opts); +} +function assertClassPrivateProperty(node, opts) { + assert("ClassPrivateProperty", node, opts); +} +function assertClassPrivateMethod(node, opts) { + assert("ClassPrivateMethod", node, opts); +} +function assertPrivateName(node, opts) { + assert("PrivateName", node, opts); +} +function assertStaticBlock(node, opts) { + assert("StaticBlock", node, opts); +} +function assertImportAttribute(node, opts) { + assert("ImportAttribute", node, opts); +} +function assertAnyTypeAnnotation(node, opts) { + assert("AnyTypeAnnotation", node, opts); +} +function assertArrayTypeAnnotation(node, opts) { + assert("ArrayTypeAnnotation", node, opts); +} +function assertBooleanTypeAnnotation(node, opts) { + assert("BooleanTypeAnnotation", node, opts); +} +function assertBooleanLiteralTypeAnnotation(node, opts) { + assert("BooleanLiteralTypeAnnotation", node, opts); +} +function assertNullLiteralTypeAnnotation(node, opts) { + assert("NullLiteralTypeAnnotation", node, opts); +} +function assertClassImplements(node, opts) { + assert("ClassImplements", node, opts); +} +function assertDeclareClass(node, opts) { + assert("DeclareClass", node, opts); +} +function assertDeclareFunction(node, opts) { + assert("DeclareFunction", node, opts); +} +function assertDeclareInterface(node, opts) { + assert("DeclareInterface", node, opts); +} +function assertDeclareModule(node, opts) { + assert("DeclareModule", node, opts); +} +function assertDeclareModuleExports(node, opts) { + assert("DeclareModuleExports", node, opts); +} +function assertDeclareTypeAlias(node, opts) { + assert("DeclareTypeAlias", node, opts); +} +function assertDeclareOpaqueType(node, opts) { + assert("DeclareOpaqueType", node, opts); +} +function assertDeclareVariable(node, opts) { + assert("DeclareVariable", node, opts); +} +function assertDeclareExportDeclaration(node, opts) { + assert("DeclareExportDeclaration", node, opts); +} +function assertDeclareExportAllDeclaration(node, opts) { + assert("DeclareExportAllDeclaration", node, opts); +} +function assertDeclaredPredicate(node, opts) { + assert("DeclaredPredicate", node, opts); +} +function assertExistsTypeAnnotation(node, opts) { + assert("ExistsTypeAnnotation", node, opts); +} +function assertFunctionTypeAnnotation(node, opts) { + assert("FunctionTypeAnnotation", node, opts); +} +function assertFunctionTypeParam(node, opts) { + assert("FunctionTypeParam", node, opts); +} +function assertGenericTypeAnnotation(node, opts) { + assert("GenericTypeAnnotation", node, opts); +} +function assertInferredPredicate(node, opts) { + assert("InferredPredicate", node, opts); +} +function assertInterfaceExtends(node, opts) { + assert("InterfaceExtends", node, opts); +} +function assertInterfaceDeclaration(node, opts) { + assert("InterfaceDeclaration", node, opts); +} +function assertInterfaceTypeAnnotation(node, opts) { + assert("InterfaceTypeAnnotation", node, opts); +} +function assertIntersectionTypeAnnotation(node, opts) { + assert("IntersectionTypeAnnotation", node, opts); +} +function assertMixedTypeAnnotation(node, opts) { + assert("MixedTypeAnnotation", node, opts); +} +function assertEmptyTypeAnnotation(node, opts) { + assert("EmptyTypeAnnotation", node, opts); +} +function assertNullableTypeAnnotation(node, opts) { + assert("NullableTypeAnnotation", node, opts); +} +function assertNumberLiteralTypeAnnotation(node, opts) { + assert("NumberLiteralTypeAnnotation", node, opts); +} +function assertNumberTypeAnnotation(node, opts) { + assert("NumberTypeAnnotation", node, opts); +} +function assertObjectTypeAnnotation(node, opts) { + assert("ObjectTypeAnnotation", node, opts); +} +function assertObjectTypeInternalSlot(node, opts) { + assert("ObjectTypeInternalSlot", node, opts); +} +function assertObjectTypeCallProperty(node, opts) { + assert("ObjectTypeCallProperty", node, opts); +} +function assertObjectTypeIndexer(node, opts) { + assert("ObjectTypeIndexer", node, opts); +} +function assertObjectTypeProperty(node, opts) { + assert("ObjectTypeProperty", node, opts); +} +function assertObjectTypeSpreadProperty(node, opts) { + assert("ObjectTypeSpreadProperty", node, opts); +} +function assertOpaqueType(node, opts) { + assert("OpaqueType", node, opts); +} +function assertQualifiedTypeIdentifier(node, opts) { + assert("QualifiedTypeIdentifier", node, opts); +} +function assertStringLiteralTypeAnnotation(node, opts) { + assert("StringLiteralTypeAnnotation", node, opts); +} +function assertStringTypeAnnotation(node, opts) { + assert("StringTypeAnnotation", node, opts); +} +function assertSymbolTypeAnnotation(node, opts) { + assert("SymbolTypeAnnotation", node, opts); +} +function assertThisTypeAnnotation(node, opts) { + assert("ThisTypeAnnotation", node, opts); +} +function assertTupleTypeAnnotation(node, opts) { + assert("TupleTypeAnnotation", node, opts); +} +function assertTypeofTypeAnnotation(node, opts) { + assert("TypeofTypeAnnotation", node, opts); +} +function assertTypeAlias(node, opts) { + assert("TypeAlias", node, opts); +} +function assertTypeAnnotation(node, opts) { + assert("TypeAnnotation", node, opts); +} +function assertTypeCastExpression(node, opts) { + assert("TypeCastExpression", node, opts); +} +function assertTypeParameter(node, opts) { + assert("TypeParameter", node, opts); +} +function assertTypeParameterDeclaration(node, opts) { + assert("TypeParameterDeclaration", node, opts); +} +function assertTypeParameterInstantiation(node, opts) { + assert("TypeParameterInstantiation", node, opts); +} +function assertUnionTypeAnnotation(node, opts) { + assert("UnionTypeAnnotation", node, opts); +} +function assertVariance(node, opts) { + assert("Variance", node, opts); +} +function assertVoidTypeAnnotation(node, opts) { + assert("VoidTypeAnnotation", node, opts); +} +function assertEnumDeclaration(node, opts) { + assert("EnumDeclaration", node, opts); +} +function assertEnumBooleanBody(node, opts) { + assert("EnumBooleanBody", node, opts); +} +function assertEnumNumberBody(node, opts) { + assert("EnumNumberBody", node, opts); +} +function assertEnumStringBody(node, opts) { + assert("EnumStringBody", node, opts); +} +function assertEnumSymbolBody(node, opts) { + assert("EnumSymbolBody", node, opts); +} +function assertEnumBooleanMember(node, opts) { + assert("EnumBooleanMember", node, opts); +} +function assertEnumNumberMember(node, opts) { + assert("EnumNumberMember", node, opts); +} +function assertEnumStringMember(node, opts) { + assert("EnumStringMember", node, opts); +} +function assertEnumDefaultedMember(node, opts) { + assert("EnumDefaultedMember", node, opts); +} +function assertIndexedAccessType(node, opts) { + assert("IndexedAccessType", node, opts); +} +function assertOptionalIndexedAccessType(node, opts) { + assert("OptionalIndexedAccessType", node, opts); +} +function assertJSXAttribute(node, opts) { + assert("JSXAttribute", node, opts); +} +function assertJSXClosingElement(node, opts) { + assert("JSXClosingElement", node, opts); +} +function assertJSXElement(node, opts) { + assert("JSXElement", node, opts); +} +function assertJSXEmptyExpression(node, opts) { + assert("JSXEmptyExpression", node, opts); +} +function assertJSXExpressionContainer(node, opts) { + assert("JSXExpressionContainer", node, opts); +} +function assertJSXSpreadChild(node, opts) { + assert("JSXSpreadChild", node, opts); +} +function assertJSXIdentifier(node, opts) { + assert("JSXIdentifier", node, opts); +} +function assertJSXMemberExpression(node, opts) { + assert("JSXMemberExpression", node, opts); +} +function assertJSXNamespacedName(node, opts) { + assert("JSXNamespacedName", node, opts); +} +function assertJSXOpeningElement(node, opts) { + assert("JSXOpeningElement", node, opts); +} +function assertJSXSpreadAttribute(node, opts) { + assert("JSXSpreadAttribute", node, opts); +} +function assertJSXText(node, opts) { + assert("JSXText", node, opts); +} +function assertJSXFragment(node, opts) { + assert("JSXFragment", node, opts); +} +function assertJSXOpeningFragment(node, opts) { + assert("JSXOpeningFragment", node, opts); +} +function assertJSXClosingFragment(node, opts) { + assert("JSXClosingFragment", node, opts); +} +function assertNoop(node, opts) { + assert("Noop", node, opts); +} +function assertPlaceholder(node, opts) { + assert("Placeholder", node, opts); +} +function assertV8IntrinsicIdentifier(node, opts) { + assert("V8IntrinsicIdentifier", node, opts); +} +function assertArgumentPlaceholder(node, opts) { + assert("ArgumentPlaceholder", node, opts); +} +function assertBindExpression(node, opts) { + assert("BindExpression", node, opts); +} +function assertDecorator(node, opts) { + assert("Decorator", node, opts); +} +function assertDoExpression(node, opts) { + assert("DoExpression", node, opts); +} +function assertExportDefaultSpecifier(node, opts) { + assert("ExportDefaultSpecifier", node, opts); +} +function assertRecordExpression(node, opts) { + assert("RecordExpression", node, opts); +} +function assertTupleExpression(node, opts) { + assert("TupleExpression", node, opts); +} +function assertDecimalLiteral(node, opts) { + assert("DecimalLiteral", node, opts); +} +function assertModuleExpression(node, opts) { + assert("ModuleExpression", node, opts); +} +function assertTopicReference(node, opts) { + assert("TopicReference", node, opts); +} +function assertPipelineTopicExpression(node, opts) { + assert("PipelineTopicExpression", node, opts); +} +function assertPipelineBareFunction(node, opts) { + assert("PipelineBareFunction", node, opts); +} +function assertPipelinePrimaryTopicReference(node, opts) { + assert("PipelinePrimaryTopicReference", node, opts); +} +function assertTSParameterProperty(node, opts) { + assert("TSParameterProperty", node, opts); +} +function assertTSDeclareFunction(node, opts) { + assert("TSDeclareFunction", node, opts); +} +function assertTSDeclareMethod(node, opts) { + assert("TSDeclareMethod", node, opts); +} +function assertTSQualifiedName(node, opts) { + assert("TSQualifiedName", node, opts); +} +function assertTSCallSignatureDeclaration(node, opts) { + assert("TSCallSignatureDeclaration", node, opts); +} +function assertTSConstructSignatureDeclaration(node, opts) { + assert("TSConstructSignatureDeclaration", node, opts); +} +function assertTSPropertySignature(node, opts) { + assert("TSPropertySignature", node, opts); +} +function assertTSMethodSignature(node, opts) { + assert("TSMethodSignature", node, opts); +} +function assertTSIndexSignature(node, opts) { + assert("TSIndexSignature", node, opts); +} +function assertTSAnyKeyword(node, opts) { + assert("TSAnyKeyword", node, opts); +} +function assertTSBooleanKeyword(node, opts) { + assert("TSBooleanKeyword", node, opts); +} +function assertTSBigIntKeyword(node, opts) { + assert("TSBigIntKeyword", node, opts); +} +function assertTSIntrinsicKeyword(node, opts) { + assert("TSIntrinsicKeyword", node, opts); +} +function assertTSNeverKeyword(node, opts) { + assert("TSNeverKeyword", node, opts); +} +function assertTSNullKeyword(node, opts) { + assert("TSNullKeyword", node, opts); +} +function assertTSNumberKeyword(node, opts) { + assert("TSNumberKeyword", node, opts); +} +function assertTSObjectKeyword(node, opts) { + assert("TSObjectKeyword", node, opts); +} +function assertTSStringKeyword(node, opts) { + assert("TSStringKeyword", node, opts); +} +function assertTSSymbolKeyword(node, opts) { + assert("TSSymbolKeyword", node, opts); +} +function assertTSUndefinedKeyword(node, opts) { + assert("TSUndefinedKeyword", node, opts); +} +function assertTSUnknownKeyword(node, opts) { + assert("TSUnknownKeyword", node, opts); +} +function assertTSVoidKeyword(node, opts) { + assert("TSVoidKeyword", node, opts); +} +function assertTSThisType(node, opts) { + assert("TSThisType", node, opts); +} +function assertTSFunctionType(node, opts) { + assert("TSFunctionType", node, opts); +} +function assertTSConstructorType(node, opts) { + assert("TSConstructorType", node, opts); +} +function assertTSTypeReference(node, opts) { + assert("TSTypeReference", node, opts); +} +function assertTSTypePredicate(node, opts) { + assert("TSTypePredicate", node, opts); +} +function assertTSTypeQuery(node, opts) { + assert("TSTypeQuery", node, opts); +} +function assertTSTypeLiteral(node, opts) { + assert("TSTypeLiteral", node, opts); +} +function assertTSArrayType(node, opts) { + assert("TSArrayType", node, opts); +} +function assertTSTupleType(node, opts) { + assert("TSTupleType", node, opts); +} +function assertTSOptionalType(node, opts) { + assert("TSOptionalType", node, opts); +} +function assertTSRestType(node, opts) { + assert("TSRestType", node, opts); +} +function assertTSNamedTupleMember(node, opts) { + assert("TSNamedTupleMember", node, opts); +} +function assertTSUnionType(node, opts) { + assert("TSUnionType", node, opts); +} +function assertTSIntersectionType(node, opts) { + assert("TSIntersectionType", node, opts); +} +function assertTSConditionalType(node, opts) { + assert("TSConditionalType", node, opts); +} +function assertTSInferType(node, opts) { + assert("TSInferType", node, opts); +} +function assertTSParenthesizedType(node, opts) { + assert("TSParenthesizedType", node, opts); +} +function assertTSTypeOperator(node, opts) { + assert("TSTypeOperator", node, opts); +} +function assertTSIndexedAccessType(node, opts) { + assert("TSIndexedAccessType", node, opts); +} +function assertTSMappedType(node, opts) { + assert("TSMappedType", node, opts); +} +function assertTSTemplateLiteralType(node, opts) { + assert("TSTemplateLiteralType", node, opts); +} +function assertTSLiteralType(node, opts) { + assert("TSLiteralType", node, opts); +} +function assertTSExpressionWithTypeArguments(node, opts) { + assert("TSExpressionWithTypeArguments", node, opts); +} +function assertTSInterfaceDeclaration(node, opts) { + assert("TSInterfaceDeclaration", node, opts); +} +function assertTSInterfaceBody(node, opts) { + assert("TSInterfaceBody", node, opts); +} +function assertTSTypeAliasDeclaration(node, opts) { + assert("TSTypeAliasDeclaration", node, opts); +} +function assertTSInstantiationExpression(node, opts) { + assert("TSInstantiationExpression", node, opts); +} +function assertTSAsExpression(node, opts) { + assert("TSAsExpression", node, opts); +} +function assertTSSatisfiesExpression(node, opts) { + assert("TSSatisfiesExpression", node, opts); +} +function assertTSTypeAssertion(node, opts) { + assert("TSTypeAssertion", node, opts); +} +function assertTSEnumBody(node, opts) { + assert("TSEnumBody", node, opts); +} +function assertTSEnumDeclaration(node, opts) { + assert("TSEnumDeclaration", node, opts); +} +function assertTSEnumMember(node, opts) { + assert("TSEnumMember", node, opts); +} +function assertTSModuleDeclaration(node, opts) { + assert("TSModuleDeclaration", node, opts); +} +function assertTSModuleBlock(node, opts) { + assert("TSModuleBlock", node, opts); +} +function assertTSImportType(node, opts) { + assert("TSImportType", node, opts); +} +function assertTSImportEqualsDeclaration(node, opts) { + assert("TSImportEqualsDeclaration", node, opts); +} +function assertTSExternalModuleReference(node, opts) { + assert("TSExternalModuleReference", node, opts); +} +function assertTSNonNullExpression(node, opts) { + assert("TSNonNullExpression", node, opts); +} +function assertTSExportAssignment(node, opts) { + assert("TSExportAssignment", node, opts); +} +function assertTSNamespaceExportDeclaration(node, opts) { + assert("TSNamespaceExportDeclaration", node, opts); +} +function assertTSTypeAnnotation(node, opts) { + assert("TSTypeAnnotation", node, opts); +} +function assertTSTypeParameterInstantiation(node, opts) { + assert("TSTypeParameterInstantiation", node, opts); +} +function assertTSTypeParameterDeclaration(node, opts) { + assert("TSTypeParameterDeclaration", node, opts); +} +function assertTSTypeParameter(node, opts) { + assert("TSTypeParameter", node, opts); +} +function assertStandardized(node, opts) { + assert("Standardized", node, opts); +} +function assertExpression(node, opts) { + assert("Expression", node, opts); +} +function assertBinary(node, opts) { + assert("Binary", node, opts); +} +function assertScopable(node, opts) { + assert("Scopable", node, opts); +} +function assertBlockParent(node, opts) { + assert("BlockParent", node, opts); +} +function assertBlock(node, opts) { + assert("Block", node, opts); +} +function assertStatement(node, opts) { + assert("Statement", node, opts); +} +function assertTerminatorless(node, opts) { + assert("Terminatorless", node, opts); +} +function assertCompletionStatement(node, opts) { + assert("CompletionStatement", node, opts); +} +function assertConditional(node, opts) { + assert("Conditional", node, opts); +} +function assertLoop(node, opts) { + assert("Loop", node, opts); +} +function assertWhile(node, opts) { + assert("While", node, opts); +} +function assertExpressionWrapper(node, opts) { + assert("ExpressionWrapper", node, opts); +} +function assertFor(node, opts) { + assert("For", node, opts); +} +function assertForXStatement(node, opts) { + assert("ForXStatement", node, opts); +} +function assertFunction(node, opts) { + assert("Function", node, opts); +} +function assertFunctionParent(node, opts) { + assert("FunctionParent", node, opts); +} +function assertPureish(node, opts) { + assert("Pureish", node, opts); +} +function assertDeclaration(node, opts) { + assert("Declaration", node, opts); +} +function assertPatternLike(node, opts) { + assert("PatternLike", node, opts); +} +function assertLVal(node, opts) { + assert("LVal", node, opts); +} +function assertTSEntityName(node, opts) { + assert("TSEntityName", node, opts); +} +function assertLiteral(node, opts) { + assert("Literal", node, opts); +} +function assertImmutable(node, opts) { + assert("Immutable", node, opts); +} +function assertUserWhitespacable(node, opts) { + assert("UserWhitespacable", node, opts); +} +function assertMethod(node, opts) { + assert("Method", node, opts); +} +function assertObjectMember(node, opts) { + assert("ObjectMember", node, opts); +} +function assertProperty(node, opts) { + assert("Property", node, opts); +} +function assertUnaryLike(node, opts) { + assert("UnaryLike", node, opts); +} +function assertPattern(node, opts) { + assert("Pattern", node, opts); +} +function assertClass(node, opts) { + assert("Class", node, opts); +} +function assertImportOrExportDeclaration(node, opts) { + assert("ImportOrExportDeclaration", node, opts); +} +function assertExportDeclaration(node, opts) { + assert("ExportDeclaration", node, opts); +} +function assertModuleSpecifier(node, opts) { + assert("ModuleSpecifier", node, opts); +} +function assertAccessor(node, opts) { + assert("Accessor", node, opts); +} +function assertPrivate(node, opts) { + assert("Private", node, opts); +} +function assertFlow(node, opts) { + assert("Flow", node, opts); +} +function assertFlowType(node, opts) { + assert("FlowType", node, opts); +} +function assertFlowBaseAnnotation(node, opts) { + assert("FlowBaseAnnotation", node, opts); +} +function assertFlowDeclaration(node, opts) { + assert("FlowDeclaration", node, opts); +} +function assertFlowPredicate(node, opts) { + assert("FlowPredicate", node, opts); +} +function assertEnumBody(node, opts) { + assert("EnumBody", node, opts); +} +function assertEnumMember(node, opts) { + assert("EnumMember", node, opts); +} +function assertJSX(node, opts) { + assert("JSX", node, opts); +} +function assertMiscellaneous(node, opts) { + assert("Miscellaneous", node, opts); +} +function assertTypeScript(node, opts) { + assert("TypeScript", node, opts); +} +function assertTSTypeElement(node, opts) { + assert("TSTypeElement", node, opts); +} +function assertTSType(node, opts) { + assert("TSType", node, opts); +} +function assertTSBaseType(node, opts) { + assert("TSBaseType", node, opts); +} +function assertNumberLiteral(node, opts) { + (0, _deprecationWarning.default)("assertNumberLiteral", "assertNumericLiteral"); + assert("NumberLiteral", node, opts); +} +function assertRegexLiteral(node, opts) { + (0, _deprecationWarning.default)("assertRegexLiteral", "assertRegExpLiteral"); + assert("RegexLiteral", node, opts); +} +function assertRestProperty(node, opts) { + (0, _deprecationWarning.default)("assertRestProperty", "assertRestElement"); + assert("RestProperty", node, opts); +} +function assertSpreadProperty(node, opts) { + (0, _deprecationWarning.default)("assertSpreadProperty", "assertSpreadElement"); + assert("SpreadProperty", node, opts); +} +function assertModuleDeclaration(node, opts) { + (0, _deprecationWarning.default)("assertModuleDeclaration", "assertImportOrExportDeclaration"); + assert("ModuleDeclaration", node, opts); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 58806: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createFlowUnionType; +var _index = __nccwpck_require__(90670); +var _removeTypeDuplicates = __nccwpck_require__(41034); +function createFlowUnionType(types) { + const flattened = (0, _removeTypeDuplicates.default)(types); + if (flattened.length === 1) { + return flattened[0]; + } else { + return (0, _index.unionTypeAnnotation)(flattened); + } +} + +//# sourceMappingURL=createFlowUnionType.js.map + + +/***/ }), + +/***/ 9197: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _index = __nccwpck_require__(90670); +var _default = exports["default"] = createTypeAnnotationBasedOnTypeof; +function createTypeAnnotationBasedOnTypeof(type) { + switch (type) { + case "string": + return (0, _index.stringTypeAnnotation)(); + case "number": + return (0, _index.numberTypeAnnotation)(); + case "undefined": + return (0, _index.voidTypeAnnotation)(); + case "boolean": + return (0, _index.booleanTypeAnnotation)(); + case "function": + return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Function")); + case "object": + return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Object")); + case "symbol": + return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Symbol")); + case "bigint": + return (0, _index.anyTypeAnnotation)(); + } + throw new Error("Invalid typeof value: " + type); +} + +//# sourceMappingURL=createTypeAnnotationBasedOnTypeof.js.map + + +/***/ }), + +/***/ 90670: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _lowercase = __nccwpck_require__(11999); +Object.keys(_lowercase).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _lowercase[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _lowercase[key]; + } + }); +}); +var _uppercase = __nccwpck_require__(1862); +Object.keys(_uppercase).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _uppercase[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _uppercase[key]; + } + }); +}); + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 11999: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.anyTypeAnnotation = anyTypeAnnotation; +exports.argumentPlaceholder = argumentPlaceholder; +exports.arrayExpression = arrayExpression; +exports.arrayPattern = arrayPattern; +exports.arrayTypeAnnotation = arrayTypeAnnotation; +exports.arrowFunctionExpression = arrowFunctionExpression; +exports.assignmentExpression = assignmentExpression; +exports.assignmentPattern = assignmentPattern; +exports.awaitExpression = awaitExpression; +exports.bigIntLiteral = bigIntLiteral; +exports.binaryExpression = binaryExpression; +exports.bindExpression = bindExpression; +exports.blockStatement = blockStatement; +exports.booleanLiteral = booleanLiteral; +exports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation; +exports.booleanTypeAnnotation = booleanTypeAnnotation; +exports.breakStatement = breakStatement; +exports.callExpression = callExpression; +exports.catchClause = catchClause; +exports.classAccessorProperty = classAccessorProperty; +exports.classBody = classBody; +exports.classDeclaration = classDeclaration; +exports.classExpression = classExpression; +exports.classImplements = classImplements; +exports.classMethod = classMethod; +exports.classPrivateMethod = classPrivateMethod; +exports.classPrivateProperty = classPrivateProperty; +exports.classProperty = classProperty; +exports.conditionalExpression = conditionalExpression; +exports.continueStatement = continueStatement; +exports.debuggerStatement = debuggerStatement; +exports.decimalLiteral = decimalLiteral; +exports.declareClass = declareClass; +exports.declareExportAllDeclaration = declareExportAllDeclaration; +exports.declareExportDeclaration = declareExportDeclaration; +exports.declareFunction = declareFunction; +exports.declareInterface = declareInterface; +exports.declareModule = declareModule; +exports.declareModuleExports = declareModuleExports; +exports.declareOpaqueType = declareOpaqueType; +exports.declareTypeAlias = declareTypeAlias; +exports.declareVariable = declareVariable; +exports.declaredPredicate = declaredPredicate; +exports.decorator = decorator; +exports.directive = directive; +exports.directiveLiteral = directiveLiteral; +exports.doExpression = doExpression; +exports.doWhileStatement = doWhileStatement; +exports.emptyStatement = emptyStatement; +exports.emptyTypeAnnotation = emptyTypeAnnotation; +exports.enumBooleanBody = enumBooleanBody; +exports.enumBooleanMember = enumBooleanMember; +exports.enumDeclaration = enumDeclaration; +exports.enumDefaultedMember = enumDefaultedMember; +exports.enumNumberBody = enumNumberBody; +exports.enumNumberMember = enumNumberMember; +exports.enumStringBody = enumStringBody; +exports.enumStringMember = enumStringMember; +exports.enumSymbolBody = enumSymbolBody; +exports.existsTypeAnnotation = existsTypeAnnotation; +exports.exportAllDeclaration = exportAllDeclaration; +exports.exportDefaultDeclaration = exportDefaultDeclaration; +exports.exportDefaultSpecifier = exportDefaultSpecifier; +exports.exportNamedDeclaration = exportNamedDeclaration; +exports.exportNamespaceSpecifier = exportNamespaceSpecifier; +exports.exportSpecifier = exportSpecifier; +exports.expressionStatement = expressionStatement; +exports.file = file; +exports.forInStatement = forInStatement; +exports.forOfStatement = forOfStatement; +exports.forStatement = forStatement; +exports.functionDeclaration = functionDeclaration; +exports.functionExpression = functionExpression; +exports.functionTypeAnnotation = functionTypeAnnotation; +exports.functionTypeParam = functionTypeParam; +exports.genericTypeAnnotation = genericTypeAnnotation; +exports.identifier = identifier; +exports.ifStatement = ifStatement; +exports["import"] = _import; +exports.importAttribute = importAttribute; +exports.importDeclaration = importDeclaration; +exports.importDefaultSpecifier = importDefaultSpecifier; +exports.importExpression = importExpression; +exports.importNamespaceSpecifier = importNamespaceSpecifier; +exports.importSpecifier = importSpecifier; +exports.indexedAccessType = indexedAccessType; +exports.inferredPredicate = inferredPredicate; +exports.interfaceDeclaration = interfaceDeclaration; +exports.interfaceExtends = interfaceExtends; +exports.interfaceTypeAnnotation = interfaceTypeAnnotation; +exports.interpreterDirective = interpreterDirective; +exports.intersectionTypeAnnotation = intersectionTypeAnnotation; +exports.jSXAttribute = exports.jsxAttribute = jsxAttribute; +exports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement; +exports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment; +exports.jSXElement = exports.jsxElement = jsxElement; +exports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression; +exports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer; +exports.jSXFragment = exports.jsxFragment = jsxFragment; +exports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier; +exports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression; +exports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName; +exports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement; +exports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment; +exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute; +exports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild; +exports.jSXText = exports.jsxText = jsxText; +exports.labeledStatement = labeledStatement; +exports.logicalExpression = logicalExpression; +exports.memberExpression = memberExpression; +exports.metaProperty = metaProperty; +exports.mixedTypeAnnotation = mixedTypeAnnotation; +exports.moduleExpression = moduleExpression; +exports.newExpression = newExpression; +exports.noop = noop; +exports.nullLiteral = nullLiteral; +exports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation; +exports.nullableTypeAnnotation = nullableTypeAnnotation; +exports.numberLiteral = NumberLiteral; +exports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation; +exports.numberTypeAnnotation = numberTypeAnnotation; +exports.numericLiteral = numericLiteral; +exports.objectExpression = objectExpression; +exports.objectMethod = objectMethod; +exports.objectPattern = objectPattern; +exports.objectProperty = objectProperty; +exports.objectTypeAnnotation = objectTypeAnnotation; +exports.objectTypeCallProperty = objectTypeCallProperty; +exports.objectTypeIndexer = objectTypeIndexer; +exports.objectTypeInternalSlot = objectTypeInternalSlot; +exports.objectTypeProperty = objectTypeProperty; +exports.objectTypeSpreadProperty = objectTypeSpreadProperty; +exports.opaqueType = opaqueType; +exports.optionalCallExpression = optionalCallExpression; +exports.optionalIndexedAccessType = optionalIndexedAccessType; +exports.optionalMemberExpression = optionalMemberExpression; +exports.parenthesizedExpression = parenthesizedExpression; +exports.pipelineBareFunction = pipelineBareFunction; +exports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference; +exports.pipelineTopicExpression = pipelineTopicExpression; +exports.placeholder = placeholder; +exports.privateName = privateName; +exports.program = program; +exports.qualifiedTypeIdentifier = qualifiedTypeIdentifier; +exports.recordExpression = recordExpression; +exports.regExpLiteral = regExpLiteral; +exports.regexLiteral = RegexLiteral; +exports.restElement = restElement; +exports.restProperty = RestProperty; +exports.returnStatement = returnStatement; +exports.sequenceExpression = sequenceExpression; +exports.spreadElement = spreadElement; +exports.spreadProperty = SpreadProperty; +exports.staticBlock = staticBlock; +exports.stringLiteral = stringLiteral; +exports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation; +exports.stringTypeAnnotation = stringTypeAnnotation; +exports["super"] = _super; +exports.switchCase = switchCase; +exports.switchStatement = switchStatement; +exports.symbolTypeAnnotation = symbolTypeAnnotation; +exports.taggedTemplateExpression = taggedTemplateExpression; +exports.templateElement = templateElement; +exports.templateLiteral = templateLiteral; +exports.thisExpression = thisExpression; +exports.thisTypeAnnotation = thisTypeAnnotation; +exports.throwStatement = throwStatement; +exports.topicReference = topicReference; +exports.tryStatement = tryStatement; +exports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword; +exports.tSArrayType = exports.tsArrayType = tsArrayType; +exports.tSAsExpression = exports.tsAsExpression = tsAsExpression; +exports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword; +exports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword; +exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration; +exports.tSConditionalType = exports.tsConditionalType = tsConditionalType; +exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration; +exports.tSConstructorType = exports.tsConstructorType = tsConstructorType; +exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction; +exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod; +exports.tSEnumBody = exports.tsEnumBody = tsEnumBody; +exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration; +exports.tSEnumMember = exports.tsEnumMember = tsEnumMember; +exports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment; +exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments; +exports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference; +exports.tSFunctionType = exports.tsFunctionType = tsFunctionType; +exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration; +exports.tSImportType = exports.tsImportType = tsImportType; +exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature; +exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType; +exports.tSInferType = exports.tsInferType = tsInferType; +exports.tSInstantiationExpression = exports.tsInstantiationExpression = tsInstantiationExpression; +exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody; +exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration; +exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType; +exports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword; +exports.tSLiteralType = exports.tsLiteralType = tsLiteralType; +exports.tSMappedType = exports.tsMappedType = tsMappedType; +exports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature; +exports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock; +exports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration; +exports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember; +exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration; +exports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword; +exports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression; +exports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword; +exports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword; +exports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword; +exports.tSOptionalType = exports.tsOptionalType = tsOptionalType; +exports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty; +exports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType; +exports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature; +exports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName; +exports.tSRestType = exports.tsRestType = tsRestType; +exports.tSSatisfiesExpression = exports.tsSatisfiesExpression = tsSatisfiesExpression; +exports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword; +exports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword; +exports.tSTemplateLiteralType = exports.tsTemplateLiteralType = tsTemplateLiteralType; +exports.tSThisType = exports.tsThisType = tsThisType; +exports.tSTupleType = exports.tsTupleType = tsTupleType; +exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration; +exports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation; +exports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion; +exports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral; +exports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator; +exports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter; +exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration; +exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation; +exports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate; +exports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery; +exports.tSTypeReference = exports.tsTypeReference = tsTypeReference; +exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword; +exports.tSUnionType = exports.tsUnionType = tsUnionType; +exports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword; +exports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword; +exports.tupleExpression = tupleExpression; +exports.tupleTypeAnnotation = tupleTypeAnnotation; +exports.typeAlias = typeAlias; +exports.typeAnnotation = typeAnnotation; +exports.typeCastExpression = typeCastExpression; +exports.typeParameter = typeParameter; +exports.typeParameterDeclaration = typeParameterDeclaration; +exports.typeParameterInstantiation = typeParameterInstantiation; +exports.typeofTypeAnnotation = typeofTypeAnnotation; +exports.unaryExpression = unaryExpression; +exports.unionTypeAnnotation = unionTypeAnnotation; +exports.updateExpression = updateExpression; +exports.v8IntrinsicIdentifier = v8IntrinsicIdentifier; +exports.variableDeclaration = variableDeclaration; +exports.variableDeclarator = variableDeclarator; +exports.variance = variance; +exports.voidTypeAnnotation = voidTypeAnnotation; +exports.whileStatement = whileStatement; +exports.withStatement = withStatement; +exports.yieldExpression = yieldExpression; +var _validate = __nccwpck_require__(71581); +var _deprecationWarning = __nccwpck_require__(14711); +var utils = __nccwpck_require__(34559); +const { + validateInternal: validate +} = _validate; +const { + NODE_FIELDS +} = utils; +function arrayExpression(elements = []) { + const node = { + type: "ArrayExpression", + elements + }; + const defs = NODE_FIELDS.ArrayExpression; + validate(defs.elements, node, "elements", elements, 1); + return node; +} +function assignmentExpression(operator, left, right) { + const node = { + type: "AssignmentExpression", + operator, + left, + right + }; + const defs = NODE_FIELDS.AssignmentExpression; + validate(defs.operator, node, "operator", operator); + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function binaryExpression(operator, left, right) { + const node = { + type: "BinaryExpression", + operator, + left, + right + }; + const defs = NODE_FIELDS.BinaryExpression; + validate(defs.operator, node, "operator", operator); + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function interpreterDirective(value) { + const node = { + type: "InterpreterDirective", + value + }; + const defs = NODE_FIELDS.InterpreterDirective; + validate(defs.value, node, "value", value); + return node; +} +function directive(value) { + const node = { + type: "Directive", + value + }; + const defs = NODE_FIELDS.Directive; + validate(defs.value, node, "value", value, 1); + return node; +} +function directiveLiteral(value) { + const node = { + type: "DirectiveLiteral", + value + }; + const defs = NODE_FIELDS.DirectiveLiteral; + validate(defs.value, node, "value", value); + return node; +} +function blockStatement(body, directives = []) { + const node = { + type: "BlockStatement", + body, + directives + }; + const defs = NODE_FIELDS.BlockStatement; + validate(defs.body, node, "body", body, 1); + validate(defs.directives, node, "directives", directives, 1); + return node; +} +function breakStatement(label = null) { + const node = { + type: "BreakStatement", + label + }; + const defs = NODE_FIELDS.BreakStatement; + validate(defs.label, node, "label", label, 1); + return node; +} +function callExpression(callee, _arguments) { + const node = { + type: "CallExpression", + callee, + arguments: _arguments + }; + const defs = NODE_FIELDS.CallExpression; + validate(defs.callee, node, "callee", callee, 1); + validate(defs.arguments, node, "arguments", _arguments, 1); + return node; +} +function catchClause(param = null, body) { + const node = { + type: "CatchClause", + param, + body + }; + const defs = NODE_FIELDS.CatchClause; + validate(defs.param, node, "param", param, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function conditionalExpression(test, consequent, alternate) { + const node = { + type: "ConditionalExpression", + test, + consequent, + alternate + }; + const defs = NODE_FIELDS.ConditionalExpression; + validate(defs.test, node, "test", test, 1); + validate(defs.consequent, node, "consequent", consequent, 1); + validate(defs.alternate, node, "alternate", alternate, 1); + return node; +} +function continueStatement(label = null) { + const node = { + type: "ContinueStatement", + label + }; + const defs = NODE_FIELDS.ContinueStatement; + validate(defs.label, node, "label", label, 1); + return node; +} +function debuggerStatement() { + return { + type: "DebuggerStatement" + }; +} +function doWhileStatement(test, body) { + const node = { + type: "DoWhileStatement", + test, + body + }; + const defs = NODE_FIELDS.DoWhileStatement; + validate(defs.test, node, "test", test, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function emptyStatement() { + return { + type: "EmptyStatement" + }; +} +function expressionStatement(expression) { + const node = { + type: "ExpressionStatement", + expression + }; + const defs = NODE_FIELDS.ExpressionStatement; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function file(program, comments = null, tokens = null) { + const node = { + type: "File", + program, + comments, + tokens + }; + const defs = NODE_FIELDS.File; + validate(defs.program, node, "program", program, 1); + validate(defs.comments, node, "comments", comments, 1); + validate(defs.tokens, node, "tokens", tokens); + return node; +} +function forInStatement(left, right, body) { + const node = { + type: "ForInStatement", + left, + right, + body + }; + const defs = NODE_FIELDS.ForInStatement; + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function forStatement(init = null, test = null, update = null, body) { + const node = { + type: "ForStatement", + init, + test, + update, + body + }; + const defs = NODE_FIELDS.ForStatement; + validate(defs.init, node, "init", init, 1); + validate(defs.test, node, "test", test, 1); + validate(defs.update, node, "update", update, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function functionDeclaration(id = null, params, body, generator = false, async = false) { + const node = { + type: "FunctionDeclaration", + id, + params, + body, + generator, + async + }; + const defs = NODE_FIELDS.FunctionDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.generator, node, "generator", generator); + validate(defs.async, node, "async", async); + return node; +} +function functionExpression(id = null, params, body, generator = false, async = false) { + const node = { + type: "FunctionExpression", + id, + params, + body, + generator, + async + }; + const defs = NODE_FIELDS.FunctionExpression; + validate(defs.id, node, "id", id, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.generator, node, "generator", generator); + validate(defs.async, node, "async", async); + return node; +} +function identifier(name) { + const node = { + type: "Identifier", + name + }; + const defs = NODE_FIELDS.Identifier; + validate(defs.name, node, "name", name); + return node; +} +function ifStatement(test, consequent, alternate = null) { + const node = { + type: "IfStatement", + test, + consequent, + alternate + }; + const defs = NODE_FIELDS.IfStatement; + validate(defs.test, node, "test", test, 1); + validate(defs.consequent, node, "consequent", consequent, 1); + validate(defs.alternate, node, "alternate", alternate, 1); + return node; +} +function labeledStatement(label, body) { + const node = { + type: "LabeledStatement", + label, + body + }; + const defs = NODE_FIELDS.LabeledStatement; + validate(defs.label, node, "label", label, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function stringLiteral(value) { + const node = { + type: "StringLiteral", + value + }; + const defs = NODE_FIELDS.StringLiteral; + validate(defs.value, node, "value", value); + return node; +} +function numericLiteral(value) { + const node = { + type: "NumericLiteral", + value + }; + const defs = NODE_FIELDS.NumericLiteral; + validate(defs.value, node, "value", value); + return node; +} +function nullLiteral() { + return { + type: "NullLiteral" + }; +} +function booleanLiteral(value) { + const node = { + type: "BooleanLiteral", + value + }; + const defs = NODE_FIELDS.BooleanLiteral; + validate(defs.value, node, "value", value); + return node; +} +function regExpLiteral(pattern, flags = "") { + const node = { + type: "RegExpLiteral", + pattern, + flags + }; + const defs = NODE_FIELDS.RegExpLiteral; + validate(defs.pattern, node, "pattern", pattern); + validate(defs.flags, node, "flags", flags); + return node; +} +function logicalExpression(operator, left, right) { + const node = { + type: "LogicalExpression", + operator, + left, + right + }; + const defs = NODE_FIELDS.LogicalExpression; + validate(defs.operator, node, "operator", operator); + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function memberExpression(object, property, computed = false, optional = null) { + const node = { + type: "MemberExpression", + object, + property, + computed, + optional + }; + const defs = NODE_FIELDS.MemberExpression; + validate(defs.object, node, "object", object, 1); + validate(defs.property, node, "property", property, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.optional, node, "optional", optional); + return node; +} +function newExpression(callee, _arguments) { + const node = { + type: "NewExpression", + callee, + arguments: _arguments + }; + const defs = NODE_FIELDS.NewExpression; + validate(defs.callee, node, "callee", callee, 1); + validate(defs.arguments, node, "arguments", _arguments, 1); + return node; +} +function program(body, directives = [], sourceType = "script", interpreter = null) { + const node = { + type: "Program", + body, + directives, + sourceType, + interpreter + }; + const defs = NODE_FIELDS.Program; + validate(defs.body, node, "body", body, 1); + validate(defs.directives, node, "directives", directives, 1); + validate(defs.sourceType, node, "sourceType", sourceType); + validate(defs.interpreter, node, "interpreter", interpreter, 1); + return node; +} +function objectExpression(properties) { + const node = { + type: "ObjectExpression", + properties + }; + const defs = NODE_FIELDS.ObjectExpression; + validate(defs.properties, node, "properties", properties, 1); + return node; +} +function objectMethod(kind = "method", key, params, body, computed = false, generator = false, async = false) { + const node = { + type: "ObjectMethod", + kind, + key, + params, + body, + computed, + generator, + async + }; + const defs = NODE_FIELDS.ObjectMethod; + validate(defs.kind, node, "kind", kind); + validate(defs.key, node, "key", key, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.generator, node, "generator", generator); + validate(defs.async, node, "async", async); + return node; +} +function objectProperty(key, value, computed = false, shorthand = false, decorators = null) { + const node = { + type: "ObjectProperty", + key, + value, + computed, + shorthand, + decorators + }; + const defs = NODE_FIELDS.ObjectProperty; + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.shorthand, node, "shorthand", shorthand); + validate(defs.decorators, node, "decorators", decorators, 1); + return node; +} +function restElement(argument) { + const node = { + type: "RestElement", + argument + }; + const defs = NODE_FIELDS.RestElement; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function returnStatement(argument = null) { + const node = { + type: "ReturnStatement", + argument + }; + const defs = NODE_FIELDS.ReturnStatement; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function sequenceExpression(expressions) { + const node = { + type: "SequenceExpression", + expressions + }; + const defs = NODE_FIELDS.SequenceExpression; + validate(defs.expressions, node, "expressions", expressions, 1); + return node; +} +function parenthesizedExpression(expression) { + const node = { + type: "ParenthesizedExpression", + expression + }; + const defs = NODE_FIELDS.ParenthesizedExpression; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function switchCase(test = null, consequent) { + const node = { + type: "SwitchCase", + test, + consequent + }; + const defs = NODE_FIELDS.SwitchCase; + validate(defs.test, node, "test", test, 1); + validate(defs.consequent, node, "consequent", consequent, 1); + return node; +} +function switchStatement(discriminant, cases) { + const node = { + type: "SwitchStatement", + discriminant, + cases + }; + const defs = NODE_FIELDS.SwitchStatement; + validate(defs.discriminant, node, "discriminant", discriminant, 1); + validate(defs.cases, node, "cases", cases, 1); + return node; +} +function thisExpression() { + return { + type: "ThisExpression" + }; +} +function throwStatement(argument) { + const node = { + type: "ThrowStatement", + argument + }; + const defs = NODE_FIELDS.ThrowStatement; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function tryStatement(block, handler = null, finalizer = null) { + const node = { + type: "TryStatement", + block, + handler, + finalizer + }; + const defs = NODE_FIELDS.TryStatement; + validate(defs.block, node, "block", block, 1); + validate(defs.handler, node, "handler", handler, 1); + validate(defs.finalizer, node, "finalizer", finalizer, 1); + return node; +} +function unaryExpression(operator, argument, prefix = true) { + const node = { + type: "UnaryExpression", + operator, + argument, + prefix + }; + const defs = NODE_FIELDS.UnaryExpression; + validate(defs.operator, node, "operator", operator); + validate(defs.argument, node, "argument", argument, 1); + validate(defs.prefix, node, "prefix", prefix); + return node; +} +function updateExpression(operator, argument, prefix = false) { + const node = { + type: "UpdateExpression", + operator, + argument, + prefix + }; + const defs = NODE_FIELDS.UpdateExpression; + validate(defs.operator, node, "operator", operator); + validate(defs.argument, node, "argument", argument, 1); + validate(defs.prefix, node, "prefix", prefix); + return node; +} +function variableDeclaration(kind, declarations) { + const node = { + type: "VariableDeclaration", + kind, + declarations + }; + const defs = NODE_FIELDS.VariableDeclaration; + validate(defs.kind, node, "kind", kind); + validate(defs.declarations, node, "declarations", declarations, 1); + return node; +} +function variableDeclarator(id, init = null) { + const node = { + type: "VariableDeclarator", + id, + init + }; + const defs = NODE_FIELDS.VariableDeclarator; + validate(defs.id, node, "id", id, 1); + validate(defs.init, node, "init", init, 1); + return node; +} +function whileStatement(test, body) { + const node = { + type: "WhileStatement", + test, + body + }; + const defs = NODE_FIELDS.WhileStatement; + validate(defs.test, node, "test", test, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function withStatement(object, body) { + const node = { + type: "WithStatement", + object, + body + }; + const defs = NODE_FIELDS.WithStatement; + validate(defs.object, node, "object", object, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function assignmentPattern(left, right) { + const node = { + type: "AssignmentPattern", + left, + right + }; + const defs = NODE_FIELDS.AssignmentPattern; + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function arrayPattern(elements) { + const node = { + type: "ArrayPattern", + elements + }; + const defs = NODE_FIELDS.ArrayPattern; + validate(defs.elements, node, "elements", elements, 1); + return node; +} +function arrowFunctionExpression(params, body, async = false) { + const node = { + type: "ArrowFunctionExpression", + params, + body, + async, + expression: null + }; + const defs = NODE_FIELDS.ArrowFunctionExpression; + validate(defs.params, node, "params", params, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.async, node, "async", async); + return node; +} +function classBody(body) { + const node = { + type: "ClassBody", + body + }; + const defs = NODE_FIELDS.ClassBody; + validate(defs.body, node, "body", body, 1); + return node; +} +function classExpression(id = null, superClass = null, body, decorators = null) { + const node = { + type: "ClassExpression", + id, + superClass, + body, + decorators + }; + const defs = NODE_FIELDS.ClassExpression; + validate(defs.id, node, "id", id, 1); + validate(defs.superClass, node, "superClass", superClass, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.decorators, node, "decorators", decorators, 1); + return node; +} +function classDeclaration(id = null, superClass = null, body, decorators = null) { + const node = { + type: "ClassDeclaration", + id, + superClass, + body, + decorators + }; + const defs = NODE_FIELDS.ClassDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.superClass, node, "superClass", superClass, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.decorators, node, "decorators", decorators, 1); + return node; +} +function exportAllDeclaration(source) { + const node = { + type: "ExportAllDeclaration", + source + }; + const defs = NODE_FIELDS.ExportAllDeclaration; + validate(defs.source, node, "source", source, 1); + return node; +} +function exportDefaultDeclaration(declaration) { + const node = { + type: "ExportDefaultDeclaration", + declaration + }; + const defs = NODE_FIELDS.ExportDefaultDeclaration; + validate(defs.declaration, node, "declaration", declaration, 1); + return node; +} +function exportNamedDeclaration(declaration = null, specifiers = [], source = null) { + const node = { + type: "ExportNamedDeclaration", + declaration, + specifiers, + source + }; + const defs = NODE_FIELDS.ExportNamedDeclaration; + validate(defs.declaration, node, "declaration", declaration, 1); + validate(defs.specifiers, node, "specifiers", specifiers, 1); + validate(defs.source, node, "source", source, 1); + return node; +} +function exportSpecifier(local, exported) { + const node = { + type: "ExportSpecifier", + local, + exported + }; + const defs = NODE_FIELDS.ExportSpecifier; + validate(defs.local, node, "local", local, 1); + validate(defs.exported, node, "exported", exported, 1); + return node; +} +function forOfStatement(left, right, body, _await = false) { + const node = { + type: "ForOfStatement", + left, + right, + body, + await: _await + }; + const defs = NODE_FIELDS.ForOfStatement; + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.await, node, "await", _await); + return node; +} +function importDeclaration(specifiers, source) { + const node = { + type: "ImportDeclaration", + specifiers, + source + }; + const defs = NODE_FIELDS.ImportDeclaration; + validate(defs.specifiers, node, "specifiers", specifiers, 1); + validate(defs.source, node, "source", source, 1); + return node; +} +function importDefaultSpecifier(local) { + const node = { + type: "ImportDefaultSpecifier", + local + }; + const defs = NODE_FIELDS.ImportDefaultSpecifier; + validate(defs.local, node, "local", local, 1); + return node; +} +function importNamespaceSpecifier(local) { + const node = { + type: "ImportNamespaceSpecifier", + local + }; + const defs = NODE_FIELDS.ImportNamespaceSpecifier; + validate(defs.local, node, "local", local, 1); + return node; +} +function importSpecifier(local, imported) { + const node = { + type: "ImportSpecifier", + local, + imported + }; + const defs = NODE_FIELDS.ImportSpecifier; + validate(defs.local, node, "local", local, 1); + validate(defs.imported, node, "imported", imported, 1); + return node; +} +function importExpression(source, options = null) { + const node = { + type: "ImportExpression", + source, + options + }; + const defs = NODE_FIELDS.ImportExpression; + validate(defs.source, node, "source", source, 1); + validate(defs.options, node, "options", options, 1); + return node; +} +function metaProperty(meta, property) { + const node = { + type: "MetaProperty", + meta, + property + }; + const defs = NODE_FIELDS.MetaProperty; + validate(defs.meta, node, "meta", meta, 1); + validate(defs.property, node, "property", property, 1); + return node; +} +function classMethod(kind = "method", key, params, body, computed = false, _static = false, generator = false, async = false) { + const node = { + type: "ClassMethod", + kind, + key, + params, + body, + computed, + static: _static, + generator, + async + }; + const defs = NODE_FIELDS.ClassMethod; + validate(defs.kind, node, "kind", kind); + validate(defs.key, node, "key", key, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.static, node, "static", _static); + validate(defs.generator, node, "generator", generator); + validate(defs.async, node, "async", async); + return node; +} +function objectPattern(properties) { + const node = { + type: "ObjectPattern", + properties + }; + const defs = NODE_FIELDS.ObjectPattern; + validate(defs.properties, node, "properties", properties, 1); + return node; +} +function spreadElement(argument) { + const node = { + type: "SpreadElement", + argument + }; + const defs = NODE_FIELDS.SpreadElement; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function _super() { + return { + type: "Super" + }; +} +function taggedTemplateExpression(tag, quasi) { + const node = { + type: "TaggedTemplateExpression", + tag, + quasi + }; + const defs = NODE_FIELDS.TaggedTemplateExpression; + validate(defs.tag, node, "tag", tag, 1); + validate(defs.quasi, node, "quasi", quasi, 1); + return node; +} +function templateElement(value, tail = false) { + const node = { + type: "TemplateElement", + value, + tail + }; + const defs = NODE_FIELDS.TemplateElement; + validate(defs.value, node, "value", value); + validate(defs.tail, node, "tail", tail); + return node; +} +function templateLiteral(quasis, expressions) { + const node = { + type: "TemplateLiteral", + quasis, + expressions + }; + const defs = NODE_FIELDS.TemplateLiteral; + validate(defs.quasis, node, "quasis", quasis, 1); + validate(defs.expressions, node, "expressions", expressions, 1); + return node; +} +function yieldExpression(argument = null, delegate = false) { + const node = { + type: "YieldExpression", + argument, + delegate + }; + const defs = NODE_FIELDS.YieldExpression; + validate(defs.argument, node, "argument", argument, 1); + validate(defs.delegate, node, "delegate", delegate); + return node; +} +function awaitExpression(argument) { + const node = { + type: "AwaitExpression", + argument + }; + const defs = NODE_FIELDS.AwaitExpression; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function _import() { + return { + type: "Import" + }; +} +function bigIntLiteral(value) { + const node = { + type: "BigIntLiteral", + value + }; + const defs = NODE_FIELDS.BigIntLiteral; + validate(defs.value, node, "value", value); + return node; +} +function exportNamespaceSpecifier(exported) { + const node = { + type: "ExportNamespaceSpecifier", + exported + }; + const defs = NODE_FIELDS.ExportNamespaceSpecifier; + validate(defs.exported, node, "exported", exported, 1); + return node; +} +function optionalMemberExpression(object, property, computed = false, optional) { + const node = { + type: "OptionalMemberExpression", + object, + property, + computed, + optional + }; + const defs = NODE_FIELDS.OptionalMemberExpression; + validate(defs.object, node, "object", object, 1); + validate(defs.property, node, "property", property, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.optional, node, "optional", optional); + return node; +} +function optionalCallExpression(callee, _arguments, optional) { + const node = { + type: "OptionalCallExpression", + callee, + arguments: _arguments, + optional + }; + const defs = NODE_FIELDS.OptionalCallExpression; + validate(defs.callee, node, "callee", callee, 1); + validate(defs.arguments, node, "arguments", _arguments, 1); + validate(defs.optional, node, "optional", optional); + return node; +} +function classProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) { + const node = { + type: "ClassProperty", + key, + value, + typeAnnotation, + decorators, + computed, + static: _static + }; + const defs = NODE_FIELDS.ClassProperty; + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + validate(defs.decorators, node, "decorators", decorators, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.static, node, "static", _static); + return node; +} +function classAccessorProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) { + const node = { + type: "ClassAccessorProperty", + key, + value, + typeAnnotation, + decorators, + computed, + static: _static + }; + const defs = NODE_FIELDS.ClassAccessorProperty; + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + validate(defs.decorators, node, "decorators", decorators, 1); + validate(defs.computed, node, "computed", computed); + validate(defs.static, node, "static", _static); + return node; +} +function classPrivateProperty(key, value = null, decorators = null, _static = false) { + const node = { + type: "ClassPrivateProperty", + key, + value, + decorators, + static: _static + }; + const defs = NODE_FIELDS.ClassPrivateProperty; + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.decorators, node, "decorators", decorators, 1); + validate(defs.static, node, "static", _static); + return node; +} +function classPrivateMethod(kind = "method", key, params, body, _static = false) { + const node = { + type: "ClassPrivateMethod", + kind, + key, + params, + body, + static: _static + }; + const defs = NODE_FIELDS.ClassPrivateMethod; + validate(defs.kind, node, "kind", kind); + validate(defs.key, node, "key", key, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.static, node, "static", _static); + return node; +} +function privateName(id) { + const node = { + type: "PrivateName", + id + }; + const defs = NODE_FIELDS.PrivateName; + validate(defs.id, node, "id", id, 1); + return node; +} +function staticBlock(body) { + const node = { + type: "StaticBlock", + body + }; + const defs = NODE_FIELDS.StaticBlock; + validate(defs.body, node, "body", body, 1); + return node; +} +function importAttribute(key, value) { + const node = { + type: "ImportAttribute", + key, + value + }; + const defs = NODE_FIELDS.ImportAttribute; + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + return node; +} +function anyTypeAnnotation() { + return { + type: "AnyTypeAnnotation" + }; +} +function arrayTypeAnnotation(elementType) { + const node = { + type: "ArrayTypeAnnotation", + elementType + }; + const defs = NODE_FIELDS.ArrayTypeAnnotation; + validate(defs.elementType, node, "elementType", elementType, 1); + return node; +} +function booleanTypeAnnotation() { + return { + type: "BooleanTypeAnnotation" + }; +} +function booleanLiteralTypeAnnotation(value) { + const node = { + type: "BooleanLiteralTypeAnnotation", + value + }; + const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation; + validate(defs.value, node, "value", value); + return node; +} +function nullLiteralTypeAnnotation() { + return { + type: "NullLiteralTypeAnnotation" + }; +} +function classImplements(id, typeParameters = null) { + const node = { + type: "ClassImplements", + id, + typeParameters + }; + const defs = NODE_FIELDS.ClassImplements; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function declareClass(id, typeParameters = null, _extends = null, body) { + const node = { + type: "DeclareClass", + id, + typeParameters, + extends: _extends, + body + }; + const defs = NODE_FIELDS.DeclareClass; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.extends, node, "extends", _extends, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function declareFunction(id) { + const node = { + type: "DeclareFunction", + id + }; + const defs = NODE_FIELDS.DeclareFunction; + validate(defs.id, node, "id", id, 1); + return node; +} +function declareInterface(id, typeParameters = null, _extends = null, body) { + const node = { + type: "DeclareInterface", + id, + typeParameters, + extends: _extends, + body + }; + const defs = NODE_FIELDS.DeclareInterface; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.extends, node, "extends", _extends, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function declareModule(id, body, kind = null) { + const node = { + type: "DeclareModule", + id, + body, + kind + }; + const defs = NODE_FIELDS.DeclareModule; + validate(defs.id, node, "id", id, 1); + validate(defs.body, node, "body", body, 1); + validate(defs.kind, node, "kind", kind); + return node; +} +function declareModuleExports(typeAnnotation) { + const node = { + type: "DeclareModuleExports", + typeAnnotation + }; + const defs = NODE_FIELDS.DeclareModuleExports; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function declareTypeAlias(id, typeParameters = null, right) { + const node = { + type: "DeclareTypeAlias", + id, + typeParameters, + right + }; + const defs = NODE_FIELDS.DeclareTypeAlias; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function declareOpaqueType(id, typeParameters = null, supertype = null) { + const node = { + type: "DeclareOpaqueType", + id, + typeParameters, + supertype + }; + const defs = NODE_FIELDS.DeclareOpaqueType; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.supertype, node, "supertype", supertype, 1); + return node; +} +function declareVariable(id) { + const node = { + type: "DeclareVariable", + id + }; + const defs = NODE_FIELDS.DeclareVariable; + validate(defs.id, node, "id", id, 1); + return node; +} +function declareExportDeclaration(declaration = null, specifiers = null, source = null, attributes = null) { + const node = { + type: "DeclareExportDeclaration", + declaration, + specifiers, + source, + attributes + }; + const defs = NODE_FIELDS.DeclareExportDeclaration; + validate(defs.declaration, node, "declaration", declaration, 1); + validate(defs.specifiers, node, "specifiers", specifiers, 1); + validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); + return node; +} +function declareExportAllDeclaration(source, attributes = null) { + const node = { + type: "DeclareExportAllDeclaration", + source, + attributes + }; + const defs = NODE_FIELDS.DeclareExportAllDeclaration; + validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); + return node; +} +function declaredPredicate(value) { + const node = { + type: "DeclaredPredicate", + value + }; + const defs = NODE_FIELDS.DeclaredPredicate; + validate(defs.value, node, "value", value, 1); + return node; +} +function existsTypeAnnotation() { + return { + type: "ExistsTypeAnnotation" + }; +} +function functionTypeAnnotation(typeParameters = null, params, rest = null, returnType) { + const node = { + type: "FunctionTypeAnnotation", + typeParameters, + params, + rest, + returnType + }; + const defs = NODE_FIELDS.FunctionTypeAnnotation; + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.rest, node, "rest", rest, 1); + validate(defs.returnType, node, "returnType", returnType, 1); + return node; +} +function functionTypeParam(name = null, typeAnnotation) { + const node = { + type: "FunctionTypeParam", + name, + typeAnnotation + }; + const defs = NODE_FIELDS.FunctionTypeParam; + validate(defs.name, node, "name", name, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function genericTypeAnnotation(id, typeParameters = null) { + const node = { + type: "GenericTypeAnnotation", + id, + typeParameters + }; + const defs = NODE_FIELDS.GenericTypeAnnotation; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function inferredPredicate() { + return { + type: "InferredPredicate" + }; +} +function interfaceExtends(id, typeParameters = null) { + const node = { + type: "InterfaceExtends", + id, + typeParameters + }; + const defs = NODE_FIELDS.InterfaceExtends; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function interfaceDeclaration(id, typeParameters = null, _extends = null, body) { + const node = { + type: "InterfaceDeclaration", + id, + typeParameters, + extends: _extends, + body + }; + const defs = NODE_FIELDS.InterfaceDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.extends, node, "extends", _extends, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function interfaceTypeAnnotation(_extends = null, body) { + const node = { + type: "InterfaceTypeAnnotation", + extends: _extends, + body + }; + const defs = NODE_FIELDS.InterfaceTypeAnnotation; + validate(defs.extends, node, "extends", _extends, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function intersectionTypeAnnotation(types) { + const node = { + type: "IntersectionTypeAnnotation", + types + }; + const defs = NODE_FIELDS.IntersectionTypeAnnotation; + validate(defs.types, node, "types", types, 1); + return node; +} +function mixedTypeAnnotation() { + return { + type: "MixedTypeAnnotation" + }; +} +function emptyTypeAnnotation() { + return { + type: "EmptyTypeAnnotation" + }; +} +function nullableTypeAnnotation(typeAnnotation) { + const node = { + type: "NullableTypeAnnotation", + typeAnnotation + }; + const defs = NODE_FIELDS.NullableTypeAnnotation; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function numberLiteralTypeAnnotation(value) { + const node = { + type: "NumberLiteralTypeAnnotation", + value + }; + const defs = NODE_FIELDS.NumberLiteralTypeAnnotation; + validate(defs.value, node, "value", value); + return node; +} +function numberTypeAnnotation() { + return { + type: "NumberTypeAnnotation" + }; +} +function objectTypeAnnotation(properties, indexers = [], callProperties = [], internalSlots = [], exact = false) { + const node = { + type: "ObjectTypeAnnotation", + properties, + indexers, + callProperties, + internalSlots, + exact + }; + const defs = NODE_FIELDS.ObjectTypeAnnotation; + validate(defs.properties, node, "properties", properties, 1); + validate(defs.indexers, node, "indexers", indexers, 1); + validate(defs.callProperties, node, "callProperties", callProperties, 1); + validate(defs.internalSlots, node, "internalSlots", internalSlots, 1); + validate(defs.exact, node, "exact", exact); + return node; +} +function objectTypeInternalSlot(id, value, optional, _static, method) { + const node = { + type: "ObjectTypeInternalSlot", + id, + value, + optional, + static: _static, + method + }; + const defs = NODE_FIELDS.ObjectTypeInternalSlot; + validate(defs.id, node, "id", id, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.optional, node, "optional", optional); + validate(defs.static, node, "static", _static); + validate(defs.method, node, "method", method); + return node; +} +function objectTypeCallProperty(value) { + const node = { + type: "ObjectTypeCallProperty", + value, + static: null + }; + const defs = NODE_FIELDS.ObjectTypeCallProperty; + validate(defs.value, node, "value", value, 1); + return node; +} +function objectTypeIndexer(id = null, key, value, variance = null) { + const node = { + type: "ObjectTypeIndexer", + id, + key, + value, + variance, + static: null + }; + const defs = NODE_FIELDS.ObjectTypeIndexer; + validate(defs.id, node, "id", id, 1); + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.variance, node, "variance", variance, 1); + return node; +} +function objectTypeProperty(key, value, variance = null) { + const node = { + type: "ObjectTypeProperty", + key, + value, + variance, + kind: null, + method: null, + optional: null, + proto: null, + static: null + }; + const defs = NODE_FIELDS.ObjectTypeProperty; + validate(defs.key, node, "key", key, 1); + validate(defs.value, node, "value", value, 1); + validate(defs.variance, node, "variance", variance, 1); + return node; +} +function objectTypeSpreadProperty(argument) { + const node = { + type: "ObjectTypeSpreadProperty", + argument + }; + const defs = NODE_FIELDS.ObjectTypeSpreadProperty; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function opaqueType(id, typeParameters = null, supertype = null, impltype) { + const node = { + type: "OpaqueType", + id, + typeParameters, + supertype, + impltype + }; + const defs = NODE_FIELDS.OpaqueType; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.supertype, node, "supertype", supertype, 1); + validate(defs.impltype, node, "impltype", impltype, 1); + return node; +} +function qualifiedTypeIdentifier(id, qualification) { + const node = { + type: "QualifiedTypeIdentifier", + id, + qualification + }; + const defs = NODE_FIELDS.QualifiedTypeIdentifier; + validate(defs.id, node, "id", id, 1); + validate(defs.qualification, node, "qualification", qualification, 1); + return node; +} +function stringLiteralTypeAnnotation(value) { + const node = { + type: "StringLiteralTypeAnnotation", + value + }; + const defs = NODE_FIELDS.StringLiteralTypeAnnotation; + validate(defs.value, node, "value", value); + return node; +} +function stringTypeAnnotation() { + return { + type: "StringTypeAnnotation" + }; +} +function symbolTypeAnnotation() { + return { + type: "SymbolTypeAnnotation" + }; +} +function thisTypeAnnotation() { + return { + type: "ThisTypeAnnotation" + }; +} +function tupleTypeAnnotation(types) { + const node = { + type: "TupleTypeAnnotation", + types + }; + const defs = NODE_FIELDS.TupleTypeAnnotation; + validate(defs.types, node, "types", types, 1); + return node; +} +function typeofTypeAnnotation(argument) { + const node = { + type: "TypeofTypeAnnotation", + argument + }; + const defs = NODE_FIELDS.TypeofTypeAnnotation; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function typeAlias(id, typeParameters = null, right) { + const node = { + type: "TypeAlias", + id, + typeParameters, + right + }; + const defs = NODE_FIELDS.TypeAlias; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function typeAnnotation(typeAnnotation) { + const node = { + type: "TypeAnnotation", + typeAnnotation + }; + const defs = NODE_FIELDS.TypeAnnotation; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function typeCastExpression(expression, typeAnnotation) { + const node = { + type: "TypeCastExpression", + expression, + typeAnnotation + }; + const defs = NODE_FIELDS.TypeCastExpression; + validate(defs.expression, node, "expression", expression, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function typeParameter(bound = null, _default = null, variance = null) { + const node = { + type: "TypeParameter", + bound, + default: _default, + variance, + name: null + }; + const defs = NODE_FIELDS.TypeParameter; + validate(defs.bound, node, "bound", bound, 1); + validate(defs.default, node, "default", _default, 1); + validate(defs.variance, node, "variance", variance, 1); + return node; +} +function typeParameterDeclaration(params) { + const node = { + type: "TypeParameterDeclaration", + params + }; + const defs = NODE_FIELDS.TypeParameterDeclaration; + validate(defs.params, node, "params", params, 1); + return node; +} +function typeParameterInstantiation(params) { + const node = { + type: "TypeParameterInstantiation", + params + }; + const defs = NODE_FIELDS.TypeParameterInstantiation; + validate(defs.params, node, "params", params, 1); + return node; +} +function unionTypeAnnotation(types) { + const node = { + type: "UnionTypeAnnotation", + types + }; + const defs = NODE_FIELDS.UnionTypeAnnotation; + validate(defs.types, node, "types", types, 1); + return node; +} +function variance(kind) { + const node = { + type: "Variance", + kind + }; + const defs = NODE_FIELDS.Variance; + validate(defs.kind, node, "kind", kind); + return node; +} +function voidTypeAnnotation() { + return { + type: "VoidTypeAnnotation" + }; +} +function enumDeclaration(id, body) { + const node = { + type: "EnumDeclaration", + id, + body + }; + const defs = NODE_FIELDS.EnumDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function enumBooleanBody(members) { + const node = { + type: "EnumBooleanBody", + members, + explicitType: null, + hasUnknownMembers: null + }; + const defs = NODE_FIELDS.EnumBooleanBody; + validate(defs.members, node, "members", members, 1); + return node; +} +function enumNumberBody(members) { + const node = { + type: "EnumNumberBody", + members, + explicitType: null, + hasUnknownMembers: null + }; + const defs = NODE_FIELDS.EnumNumberBody; + validate(defs.members, node, "members", members, 1); + return node; +} +function enumStringBody(members) { + const node = { + type: "EnumStringBody", + members, + explicitType: null, + hasUnknownMembers: null + }; + const defs = NODE_FIELDS.EnumStringBody; + validate(defs.members, node, "members", members, 1); + return node; +} +function enumSymbolBody(members) { + const node = { + type: "EnumSymbolBody", + members, + hasUnknownMembers: null + }; + const defs = NODE_FIELDS.EnumSymbolBody; + validate(defs.members, node, "members", members, 1); + return node; +} +function enumBooleanMember(id) { + const node = { + type: "EnumBooleanMember", + id, + init: null + }; + const defs = NODE_FIELDS.EnumBooleanMember; + validate(defs.id, node, "id", id, 1); + return node; +} +function enumNumberMember(id, init) { + const node = { + type: "EnumNumberMember", + id, + init + }; + const defs = NODE_FIELDS.EnumNumberMember; + validate(defs.id, node, "id", id, 1); + validate(defs.init, node, "init", init, 1); + return node; +} +function enumStringMember(id, init) { + const node = { + type: "EnumStringMember", + id, + init + }; + const defs = NODE_FIELDS.EnumStringMember; + validate(defs.id, node, "id", id, 1); + validate(defs.init, node, "init", init, 1); + return node; +} +function enumDefaultedMember(id) { + const node = { + type: "EnumDefaultedMember", + id + }; + const defs = NODE_FIELDS.EnumDefaultedMember; + validate(defs.id, node, "id", id, 1); + return node; +} +function indexedAccessType(objectType, indexType) { + const node = { + type: "IndexedAccessType", + objectType, + indexType + }; + const defs = NODE_FIELDS.IndexedAccessType; + validate(defs.objectType, node, "objectType", objectType, 1); + validate(defs.indexType, node, "indexType", indexType, 1); + return node; +} +function optionalIndexedAccessType(objectType, indexType) { + const node = { + type: "OptionalIndexedAccessType", + objectType, + indexType, + optional: null + }; + const defs = NODE_FIELDS.OptionalIndexedAccessType; + validate(defs.objectType, node, "objectType", objectType, 1); + validate(defs.indexType, node, "indexType", indexType, 1); + return node; +} +function jsxAttribute(name, value = null) { + const node = { + type: "JSXAttribute", + name, + value + }; + const defs = NODE_FIELDS.JSXAttribute; + validate(defs.name, node, "name", name, 1); + validate(defs.value, node, "value", value, 1); + return node; +} +function jsxClosingElement(name) { + const node = { + type: "JSXClosingElement", + name + }; + const defs = NODE_FIELDS.JSXClosingElement; + validate(defs.name, node, "name", name, 1); + return node; +} +function jsxElement(openingElement, closingElement = null, children, selfClosing = null) { + const node = { + type: "JSXElement", + openingElement, + closingElement, + children, + selfClosing + }; + const defs = NODE_FIELDS.JSXElement; + validate(defs.openingElement, node, "openingElement", openingElement, 1); + validate(defs.closingElement, node, "closingElement", closingElement, 1); + validate(defs.children, node, "children", children, 1); + validate(defs.selfClosing, node, "selfClosing", selfClosing); + return node; +} +function jsxEmptyExpression() { + return { + type: "JSXEmptyExpression" + }; +} +function jsxExpressionContainer(expression) { + const node = { + type: "JSXExpressionContainer", + expression + }; + const defs = NODE_FIELDS.JSXExpressionContainer; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function jsxSpreadChild(expression) { + const node = { + type: "JSXSpreadChild", + expression + }; + const defs = NODE_FIELDS.JSXSpreadChild; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function jsxIdentifier(name) { + const node = { + type: "JSXIdentifier", + name + }; + const defs = NODE_FIELDS.JSXIdentifier; + validate(defs.name, node, "name", name); + return node; +} +function jsxMemberExpression(object, property) { + const node = { + type: "JSXMemberExpression", + object, + property + }; + const defs = NODE_FIELDS.JSXMemberExpression; + validate(defs.object, node, "object", object, 1); + validate(defs.property, node, "property", property, 1); + return node; +} +function jsxNamespacedName(namespace, name) { + const node = { + type: "JSXNamespacedName", + namespace, + name + }; + const defs = NODE_FIELDS.JSXNamespacedName; + validate(defs.namespace, node, "namespace", namespace, 1); + validate(defs.name, node, "name", name, 1); + return node; +} +function jsxOpeningElement(name, attributes, selfClosing = false) { + const node = { + type: "JSXOpeningElement", + name, + attributes, + selfClosing + }; + const defs = NODE_FIELDS.JSXOpeningElement; + validate(defs.name, node, "name", name, 1); + validate(defs.attributes, node, "attributes", attributes, 1); + validate(defs.selfClosing, node, "selfClosing", selfClosing); + return node; +} +function jsxSpreadAttribute(argument) { + const node = { + type: "JSXSpreadAttribute", + argument + }; + const defs = NODE_FIELDS.JSXSpreadAttribute; + validate(defs.argument, node, "argument", argument, 1); + return node; +} +function jsxText(value) { + const node = { + type: "JSXText", + value + }; + const defs = NODE_FIELDS.JSXText; + validate(defs.value, node, "value", value); + return node; +} +function jsxFragment(openingFragment, closingFragment, children) { + const node = { + type: "JSXFragment", + openingFragment, + closingFragment, + children + }; + const defs = NODE_FIELDS.JSXFragment; + validate(defs.openingFragment, node, "openingFragment", openingFragment, 1); + validate(defs.closingFragment, node, "closingFragment", closingFragment, 1); + validate(defs.children, node, "children", children, 1); + return node; +} +function jsxOpeningFragment() { + return { + type: "JSXOpeningFragment" + }; +} +function jsxClosingFragment() { + return { + type: "JSXClosingFragment" + }; +} +function noop() { + return { + type: "Noop" + }; +} +function placeholder(expectedNode, name) { + const node = { + type: "Placeholder", + expectedNode, + name + }; + const defs = NODE_FIELDS.Placeholder; + validate(defs.expectedNode, node, "expectedNode", expectedNode); + validate(defs.name, node, "name", name, 1); + return node; +} +function v8IntrinsicIdentifier(name) { + const node = { + type: "V8IntrinsicIdentifier", + name + }; + const defs = NODE_FIELDS.V8IntrinsicIdentifier; + validate(defs.name, node, "name", name); + return node; +} +function argumentPlaceholder() { + return { + type: "ArgumentPlaceholder" + }; +} +function bindExpression(object, callee) { + const node = { + type: "BindExpression", + object, + callee + }; + const defs = NODE_FIELDS.BindExpression; + validate(defs.object, node, "object", object, 1); + validate(defs.callee, node, "callee", callee, 1); + return node; +} +function decorator(expression) { + const node = { + type: "Decorator", + expression + }; + const defs = NODE_FIELDS.Decorator; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function doExpression(body, async = false) { + const node = { + type: "DoExpression", + body, + async + }; + const defs = NODE_FIELDS.DoExpression; + validate(defs.body, node, "body", body, 1); + validate(defs.async, node, "async", async); + return node; +} +function exportDefaultSpecifier(exported) { + const node = { + type: "ExportDefaultSpecifier", + exported + }; + const defs = NODE_FIELDS.ExportDefaultSpecifier; + validate(defs.exported, node, "exported", exported, 1); + return node; +} +function recordExpression(properties) { + const node = { + type: "RecordExpression", + properties + }; + const defs = NODE_FIELDS.RecordExpression; + validate(defs.properties, node, "properties", properties, 1); + return node; +} +function tupleExpression(elements = []) { + const node = { + type: "TupleExpression", + elements + }; + const defs = NODE_FIELDS.TupleExpression; + validate(defs.elements, node, "elements", elements, 1); + return node; +} +function decimalLiteral(value) { + const node = { + type: "DecimalLiteral", + value + }; + const defs = NODE_FIELDS.DecimalLiteral; + validate(defs.value, node, "value", value); + return node; +} +function moduleExpression(body) { + const node = { + type: "ModuleExpression", + body + }; + const defs = NODE_FIELDS.ModuleExpression; + validate(defs.body, node, "body", body, 1); + return node; +} +function topicReference() { + return { + type: "TopicReference" + }; +} +function pipelineTopicExpression(expression) { + const node = { + type: "PipelineTopicExpression", + expression + }; + const defs = NODE_FIELDS.PipelineTopicExpression; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function pipelineBareFunction(callee) { + const node = { + type: "PipelineBareFunction", + callee + }; + const defs = NODE_FIELDS.PipelineBareFunction; + validate(defs.callee, node, "callee", callee, 1); + return node; +} +function pipelinePrimaryTopicReference() { + return { + type: "PipelinePrimaryTopicReference" + }; +} +function tsParameterProperty(parameter) { + const node = { + type: "TSParameterProperty", + parameter + }; + const defs = NODE_FIELDS.TSParameterProperty; + validate(defs.parameter, node, "parameter", parameter, 1); + return node; +} +function tsDeclareFunction(id = null, typeParameters = null, params, returnType = null) { + const node = { + type: "TSDeclareFunction", + id, + typeParameters, + params, + returnType + }; + const defs = NODE_FIELDS.TSDeclareFunction; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.returnType, node, "returnType", returnType, 1); + return node; +} +function tsDeclareMethod(decorators = null, key, typeParameters = null, params, returnType = null) { + const node = { + type: "TSDeclareMethod", + decorators, + key, + typeParameters, + params, + returnType + }; + const defs = NODE_FIELDS.TSDeclareMethod; + validate(defs.decorators, node, "decorators", decorators, 1); + validate(defs.key, node, "key", key, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.params, node, "params", params, 1); + validate(defs.returnType, node, "returnType", returnType, 1); + return node; +} +function tsQualifiedName(left, right) { + const node = { + type: "TSQualifiedName", + left, + right + }; + const defs = NODE_FIELDS.TSQualifiedName; + validate(defs.left, node, "left", left, 1); + validate(defs.right, node, "right", right, 1); + return node; +} +function tsCallSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) { + const node = { + type: "TSCallSignatureDeclaration", + typeParameters, + parameters, + typeAnnotation + }; + const defs = NODE_FIELDS.TSCallSignatureDeclaration; + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.parameters, node, "parameters", parameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsConstructSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) { + const node = { + type: "TSConstructSignatureDeclaration", + typeParameters, + parameters, + typeAnnotation + }; + const defs = NODE_FIELDS.TSConstructSignatureDeclaration; + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.parameters, node, "parameters", parameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsPropertySignature(key, typeAnnotation = null) { + const node = { + type: "TSPropertySignature", + key, + typeAnnotation + }; + const defs = NODE_FIELDS.TSPropertySignature; + validate(defs.key, node, "key", key, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsMethodSignature(key, typeParameters = null, parameters, typeAnnotation = null) { + const node = { + type: "TSMethodSignature", + key, + typeParameters, + parameters, + typeAnnotation, + kind: null + }; + const defs = NODE_FIELDS.TSMethodSignature; + validate(defs.key, node, "key", key, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.parameters, node, "parameters", parameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsIndexSignature(parameters, typeAnnotation = null) { + const node = { + type: "TSIndexSignature", + parameters, + typeAnnotation + }; + const defs = NODE_FIELDS.TSIndexSignature; + validate(defs.parameters, node, "parameters", parameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsAnyKeyword() { + return { + type: "TSAnyKeyword" + }; +} +function tsBooleanKeyword() { + return { + type: "TSBooleanKeyword" + }; +} +function tsBigIntKeyword() { + return { + type: "TSBigIntKeyword" + }; +} +function tsIntrinsicKeyword() { + return { + type: "TSIntrinsicKeyword" + }; +} +function tsNeverKeyword() { + return { + type: "TSNeverKeyword" + }; +} +function tsNullKeyword() { + return { + type: "TSNullKeyword" + }; +} +function tsNumberKeyword() { + return { + type: "TSNumberKeyword" + }; +} +function tsObjectKeyword() { + return { + type: "TSObjectKeyword" + }; +} +function tsStringKeyword() { + return { + type: "TSStringKeyword" + }; +} +function tsSymbolKeyword() { + return { + type: "TSSymbolKeyword" + }; +} +function tsUndefinedKeyword() { + return { + type: "TSUndefinedKeyword" + }; +} +function tsUnknownKeyword() { + return { + type: "TSUnknownKeyword" + }; +} +function tsVoidKeyword() { + return { + type: "TSVoidKeyword" + }; +} +function tsThisType() { + return { + type: "TSThisType" + }; +} +function tsFunctionType(typeParameters = null, parameters, typeAnnotation = null) { + const node = { + type: "TSFunctionType", + typeParameters, + parameters, + typeAnnotation + }; + const defs = NODE_FIELDS.TSFunctionType; + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.parameters, node, "parameters", parameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsConstructorType(typeParameters = null, parameters, typeAnnotation = null) { + const node = { + type: "TSConstructorType", + typeParameters, + parameters, + typeAnnotation + }; + const defs = NODE_FIELDS.TSConstructorType; + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.parameters, node, "parameters", parameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsTypeReference(typeName, typeParameters = null) { + const node = { + type: "TSTypeReference", + typeName, + typeParameters + }; + const defs = NODE_FIELDS.TSTypeReference; + validate(defs.typeName, node, "typeName", typeName, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function tsTypePredicate(parameterName, typeAnnotation = null, asserts = null) { + const node = { + type: "TSTypePredicate", + parameterName, + typeAnnotation, + asserts + }; + const defs = NODE_FIELDS.TSTypePredicate; + validate(defs.parameterName, node, "parameterName", parameterName, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + validate(defs.asserts, node, "asserts", asserts); + return node; +} +function tsTypeQuery(exprName, typeParameters = null) { + const node = { + type: "TSTypeQuery", + exprName, + typeParameters + }; + const defs = NODE_FIELDS.TSTypeQuery; + validate(defs.exprName, node, "exprName", exprName, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function tsTypeLiteral(members) { + const node = { + type: "TSTypeLiteral", + members + }; + const defs = NODE_FIELDS.TSTypeLiteral; + validate(defs.members, node, "members", members, 1); + return node; +} +function tsArrayType(elementType) { + const node = { + type: "TSArrayType", + elementType + }; + const defs = NODE_FIELDS.TSArrayType; + validate(defs.elementType, node, "elementType", elementType, 1); + return node; +} +function tsTupleType(elementTypes) { + const node = { + type: "TSTupleType", + elementTypes + }; + const defs = NODE_FIELDS.TSTupleType; + validate(defs.elementTypes, node, "elementTypes", elementTypes, 1); + return node; +} +function tsOptionalType(typeAnnotation) { + const node = { + type: "TSOptionalType", + typeAnnotation + }; + const defs = NODE_FIELDS.TSOptionalType; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsRestType(typeAnnotation) { + const node = { + type: "TSRestType", + typeAnnotation + }; + const defs = NODE_FIELDS.TSRestType; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsNamedTupleMember(label, elementType, optional = false) { + const node = { + type: "TSNamedTupleMember", + label, + elementType, + optional + }; + const defs = NODE_FIELDS.TSNamedTupleMember; + validate(defs.label, node, "label", label, 1); + validate(defs.elementType, node, "elementType", elementType, 1); + validate(defs.optional, node, "optional", optional); + return node; +} +function tsUnionType(types) { + const node = { + type: "TSUnionType", + types + }; + const defs = NODE_FIELDS.TSUnionType; + validate(defs.types, node, "types", types, 1); + return node; +} +function tsIntersectionType(types) { + const node = { + type: "TSIntersectionType", + types + }; + const defs = NODE_FIELDS.TSIntersectionType; + validate(defs.types, node, "types", types, 1); + return node; +} +function tsConditionalType(checkType, extendsType, trueType, falseType) { + const node = { + type: "TSConditionalType", + checkType, + extendsType, + trueType, + falseType + }; + const defs = NODE_FIELDS.TSConditionalType; + validate(defs.checkType, node, "checkType", checkType, 1); + validate(defs.extendsType, node, "extendsType", extendsType, 1); + validate(defs.trueType, node, "trueType", trueType, 1); + validate(defs.falseType, node, "falseType", falseType, 1); + return node; +} +function tsInferType(typeParameter) { + const node = { + type: "TSInferType", + typeParameter + }; + const defs = NODE_FIELDS.TSInferType; + validate(defs.typeParameter, node, "typeParameter", typeParameter, 1); + return node; +} +function tsParenthesizedType(typeAnnotation) { + const node = { + type: "TSParenthesizedType", + typeAnnotation + }; + const defs = NODE_FIELDS.TSParenthesizedType; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsTypeOperator(typeAnnotation) { + const node = { + type: "TSTypeOperator", + typeAnnotation, + operator: null + }; + const defs = NODE_FIELDS.TSTypeOperator; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsIndexedAccessType(objectType, indexType) { + const node = { + type: "TSIndexedAccessType", + objectType, + indexType + }; + const defs = NODE_FIELDS.TSIndexedAccessType; + validate(defs.objectType, node, "objectType", objectType, 1); + validate(defs.indexType, node, "indexType", indexType, 1); + return node; +} +function tsMappedType(typeParameter, typeAnnotation = null, nameType = null) { + const node = { + type: "TSMappedType", + typeParameter, + typeAnnotation, + nameType + }; + const defs = NODE_FIELDS.TSMappedType; + validate(defs.typeParameter, node, "typeParameter", typeParameter, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + validate(defs.nameType, node, "nameType", nameType, 1); + return node; +} +function tsTemplateLiteralType(quasis, types) { + const node = { + type: "TSTemplateLiteralType", + quasis, + types + }; + const defs = NODE_FIELDS.TSTemplateLiteralType; + validate(defs.quasis, node, "quasis", quasis, 1); + validate(defs.types, node, "types", types, 1); + return node; +} +function tsLiteralType(literal) { + const node = { + type: "TSLiteralType", + literal + }; + const defs = NODE_FIELDS.TSLiteralType; + validate(defs.literal, node, "literal", literal, 1); + return node; +} +function tsExpressionWithTypeArguments(expression, typeParameters = null) { + const node = { + type: "TSExpressionWithTypeArguments", + expression, + typeParameters + }; + const defs = NODE_FIELDS.TSExpressionWithTypeArguments; + validate(defs.expression, node, "expression", expression, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function tsInterfaceDeclaration(id, typeParameters = null, _extends = null, body) { + const node = { + type: "TSInterfaceDeclaration", + id, + typeParameters, + extends: _extends, + body + }; + const defs = NODE_FIELDS.TSInterfaceDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.extends, node, "extends", _extends, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function tsInterfaceBody(body) { + const node = { + type: "TSInterfaceBody", + body + }; + const defs = NODE_FIELDS.TSInterfaceBody; + validate(defs.body, node, "body", body, 1); + return node; +} +function tsTypeAliasDeclaration(id, typeParameters = null, typeAnnotation) { + const node = { + type: "TSTypeAliasDeclaration", + id, + typeParameters, + typeAnnotation + }; + const defs = NODE_FIELDS.TSTypeAliasDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsInstantiationExpression(expression, typeParameters = null) { + const node = { + type: "TSInstantiationExpression", + expression, + typeParameters + }; + const defs = NODE_FIELDS.TSInstantiationExpression; + validate(defs.expression, node, "expression", expression, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function tsAsExpression(expression, typeAnnotation) { + const node = { + type: "TSAsExpression", + expression, + typeAnnotation + }; + const defs = NODE_FIELDS.TSAsExpression; + validate(defs.expression, node, "expression", expression, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsSatisfiesExpression(expression, typeAnnotation) { + const node = { + type: "TSSatisfiesExpression", + expression, + typeAnnotation + }; + const defs = NODE_FIELDS.TSSatisfiesExpression; + validate(defs.expression, node, "expression", expression, 1); + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsTypeAssertion(typeAnnotation, expression) { + const node = { + type: "TSTypeAssertion", + typeAnnotation, + expression + }; + const defs = NODE_FIELDS.TSTypeAssertion; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function tsEnumBody(members) { + const node = { + type: "TSEnumBody", + members + }; + const defs = NODE_FIELDS.TSEnumBody; + validate(defs.members, node, "members", members, 1); + return node; +} +function tsEnumDeclaration(id, members) { + const node = { + type: "TSEnumDeclaration", + id, + members + }; + const defs = NODE_FIELDS.TSEnumDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.members, node, "members", members, 1); + return node; +} +function tsEnumMember(id, initializer = null) { + const node = { + type: "TSEnumMember", + id, + initializer + }; + const defs = NODE_FIELDS.TSEnumMember; + validate(defs.id, node, "id", id, 1); + validate(defs.initializer, node, "initializer", initializer, 1); + return node; +} +function tsModuleDeclaration(id, body) { + const node = { + type: "TSModuleDeclaration", + id, + body, + kind: null + }; + const defs = NODE_FIELDS.TSModuleDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.body, node, "body", body, 1); + return node; +} +function tsModuleBlock(body) { + const node = { + type: "TSModuleBlock", + body + }; + const defs = NODE_FIELDS.TSModuleBlock; + validate(defs.body, node, "body", body, 1); + return node; +} +function tsImportType(argument, qualifier = null, typeParameters = null) { + const node = { + type: "TSImportType", + argument, + qualifier, + typeParameters + }; + const defs = NODE_FIELDS.TSImportType; + validate(defs.argument, node, "argument", argument, 1); + validate(defs.qualifier, node, "qualifier", qualifier, 1); + validate(defs.typeParameters, node, "typeParameters", typeParameters, 1); + return node; +} +function tsImportEqualsDeclaration(id, moduleReference) { + const node = { + type: "TSImportEqualsDeclaration", + id, + moduleReference, + isExport: null + }; + const defs = NODE_FIELDS.TSImportEqualsDeclaration; + validate(defs.id, node, "id", id, 1); + validate(defs.moduleReference, node, "moduleReference", moduleReference, 1); + return node; +} +function tsExternalModuleReference(expression) { + const node = { + type: "TSExternalModuleReference", + expression + }; + const defs = NODE_FIELDS.TSExternalModuleReference; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function tsNonNullExpression(expression) { + const node = { + type: "TSNonNullExpression", + expression + }; + const defs = NODE_FIELDS.TSNonNullExpression; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function tsExportAssignment(expression) { + const node = { + type: "TSExportAssignment", + expression + }; + const defs = NODE_FIELDS.TSExportAssignment; + validate(defs.expression, node, "expression", expression, 1); + return node; +} +function tsNamespaceExportDeclaration(id) { + const node = { + type: "TSNamespaceExportDeclaration", + id + }; + const defs = NODE_FIELDS.TSNamespaceExportDeclaration; + validate(defs.id, node, "id", id, 1); + return node; +} +function tsTypeAnnotation(typeAnnotation) { + const node = { + type: "TSTypeAnnotation", + typeAnnotation + }; + const defs = NODE_FIELDS.TSTypeAnnotation; + validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1); + return node; +} +function tsTypeParameterInstantiation(params) { + const node = { + type: "TSTypeParameterInstantiation", + params + }; + const defs = NODE_FIELDS.TSTypeParameterInstantiation; + validate(defs.params, node, "params", params, 1); + return node; +} +function tsTypeParameterDeclaration(params) { + const node = { + type: "TSTypeParameterDeclaration", + params + }; + const defs = NODE_FIELDS.TSTypeParameterDeclaration; + validate(defs.params, node, "params", params, 1); + return node; +} +function tsTypeParameter(constraint = null, _default = null, name) { + const node = { + type: "TSTypeParameter", + constraint, + default: _default, + name + }; + const defs = NODE_FIELDS.TSTypeParameter; + validate(defs.constraint, node, "constraint", constraint, 1); + validate(defs.default, node, "default", _default, 1); + validate(defs.name, node, "name", name); + return node; +} +function NumberLiteral(value) { + (0, _deprecationWarning.default)("NumberLiteral", "NumericLiteral", "The node type "); + return numericLiteral(value); +} +function RegexLiteral(pattern, flags = "") { + (0, _deprecationWarning.default)("RegexLiteral", "RegExpLiteral", "The node type "); + return regExpLiteral(pattern, flags); +} +function RestProperty(argument) { + (0, _deprecationWarning.default)("RestProperty", "RestElement", "The node type "); + return restElement(argument); +} +function SpreadProperty(argument) { + (0, _deprecationWarning.default)("SpreadProperty", "SpreadElement", "The node type "); + return spreadElement(argument); +} + +//# sourceMappingURL=lowercase.js.map + + +/***/ }), + +/***/ 1862: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JSXIdentifier = exports.JSXFragment = exports.JSXExpressionContainer = exports.JSXEmptyExpression = exports.JSXElement = exports.JSXClosingFragment = exports.JSXClosingElement = exports.JSXAttribute = exports.IntersectionTypeAnnotation = exports.InterpreterDirective = exports.InterfaceTypeAnnotation = exports.InterfaceExtends = exports.InterfaceDeclaration = exports.InferredPredicate = exports.IndexedAccessType = exports.ImportSpecifier = exports.ImportNamespaceSpecifier = exports.ImportExpression = exports.ImportDefaultSpecifier = exports.ImportDeclaration = exports.ImportAttribute = exports.Import = exports.IfStatement = exports.Identifier = exports.GenericTypeAnnotation = exports.FunctionTypeParam = exports.FunctionTypeAnnotation = exports.FunctionExpression = exports.FunctionDeclaration = exports.ForStatement = exports.ForOfStatement = exports.ForInStatement = exports.File = exports.ExpressionStatement = exports.ExportSpecifier = exports.ExportNamespaceSpecifier = exports.ExportNamedDeclaration = exports.ExportDefaultSpecifier = exports.ExportDefaultDeclaration = exports.ExportAllDeclaration = exports.ExistsTypeAnnotation = exports.EnumSymbolBody = exports.EnumStringMember = exports.EnumStringBody = exports.EnumNumberMember = exports.EnumNumberBody = exports.EnumDefaultedMember = exports.EnumDeclaration = exports.EnumBooleanMember = exports.EnumBooleanBody = exports.EmptyTypeAnnotation = exports.EmptyStatement = exports.DoWhileStatement = exports.DoExpression = exports.DirectiveLiteral = exports.Directive = exports.Decorator = exports.DeclaredPredicate = exports.DeclareVariable = exports.DeclareTypeAlias = exports.DeclareOpaqueType = exports.DeclareModuleExports = exports.DeclareModule = exports.DeclareInterface = exports.DeclareFunction = exports.DeclareExportDeclaration = exports.DeclareExportAllDeclaration = exports.DeclareClass = exports.DecimalLiteral = exports.DebuggerStatement = exports.ContinueStatement = exports.ConditionalExpression = exports.ClassProperty = exports.ClassPrivateProperty = exports.ClassPrivateMethod = exports.ClassMethod = exports.ClassImplements = exports.ClassExpression = exports.ClassDeclaration = exports.ClassBody = exports.ClassAccessorProperty = exports.CatchClause = exports.CallExpression = exports.BreakStatement = exports.BooleanTypeAnnotation = exports.BooleanLiteralTypeAnnotation = exports.BooleanLiteral = exports.BlockStatement = exports.BindExpression = exports.BinaryExpression = exports.BigIntLiteral = exports.AwaitExpression = exports.AssignmentPattern = exports.AssignmentExpression = exports.ArrowFunctionExpression = exports.ArrayTypeAnnotation = exports.ArrayPattern = exports.ArrayExpression = exports.ArgumentPlaceholder = exports.AnyTypeAnnotation = void 0; +exports.TSNumberKeyword = exports.TSNullKeyword = exports.TSNonNullExpression = exports.TSNeverKeyword = exports.TSNamespaceExportDeclaration = exports.TSNamedTupleMember = exports.TSModuleDeclaration = exports.TSModuleBlock = exports.TSMethodSignature = exports.TSMappedType = exports.TSLiteralType = exports.TSIntrinsicKeyword = exports.TSIntersectionType = exports.TSInterfaceDeclaration = exports.TSInterfaceBody = exports.TSInstantiationExpression = exports.TSInferType = exports.TSIndexedAccessType = exports.TSIndexSignature = exports.TSImportType = exports.TSImportEqualsDeclaration = exports.TSFunctionType = exports.TSExternalModuleReference = exports.TSExpressionWithTypeArguments = exports.TSExportAssignment = exports.TSEnumMember = exports.TSEnumDeclaration = exports.TSEnumBody = exports.TSDeclareMethod = exports.TSDeclareFunction = exports.TSConstructorType = exports.TSConstructSignatureDeclaration = exports.TSConditionalType = exports.TSCallSignatureDeclaration = exports.TSBooleanKeyword = exports.TSBigIntKeyword = exports.TSAsExpression = exports.TSArrayType = exports.TSAnyKeyword = exports.SymbolTypeAnnotation = exports.SwitchStatement = exports.SwitchCase = exports.Super = exports.StringTypeAnnotation = exports.StringLiteralTypeAnnotation = exports.StringLiteral = exports.StaticBlock = exports.SpreadProperty = exports.SpreadElement = exports.SequenceExpression = exports.ReturnStatement = exports.RestProperty = exports.RestElement = exports.RegexLiteral = exports.RegExpLiteral = exports.RecordExpression = exports.QualifiedTypeIdentifier = exports.Program = exports.PrivateName = exports.Placeholder = exports.PipelineTopicExpression = exports.PipelinePrimaryTopicReference = exports.PipelineBareFunction = exports.ParenthesizedExpression = exports.OptionalMemberExpression = exports.OptionalIndexedAccessType = exports.OptionalCallExpression = exports.OpaqueType = exports.ObjectTypeSpreadProperty = exports.ObjectTypeProperty = exports.ObjectTypeInternalSlot = exports.ObjectTypeIndexer = exports.ObjectTypeCallProperty = exports.ObjectTypeAnnotation = exports.ObjectProperty = exports.ObjectPattern = exports.ObjectMethod = exports.ObjectExpression = exports.NumericLiteral = exports.NumberTypeAnnotation = exports.NumberLiteralTypeAnnotation = exports.NumberLiteral = exports.NullableTypeAnnotation = exports.NullLiteralTypeAnnotation = exports.NullLiteral = exports.Noop = exports.NewExpression = exports.ModuleExpression = exports.MixedTypeAnnotation = exports.MetaProperty = exports.MemberExpression = exports.LogicalExpression = exports.LabeledStatement = exports.JSXText = exports.JSXSpreadChild = exports.JSXSpreadAttribute = exports.JSXOpeningFragment = exports.JSXOpeningElement = exports.JSXNamespacedName = exports.JSXMemberExpression = void 0; +exports.YieldExpression = exports.WithStatement = exports.WhileStatement = exports.VoidTypeAnnotation = exports.Variance = exports.VariableDeclarator = exports.VariableDeclaration = exports.V8IntrinsicIdentifier = exports.UpdateExpression = exports.UnionTypeAnnotation = exports.UnaryExpression = exports.TypeofTypeAnnotation = exports.TypeParameterInstantiation = exports.TypeParameterDeclaration = exports.TypeParameter = exports.TypeCastExpression = exports.TypeAnnotation = exports.TypeAlias = exports.TupleTypeAnnotation = exports.TupleExpression = exports.TryStatement = exports.TopicReference = exports.ThrowStatement = exports.ThisTypeAnnotation = exports.ThisExpression = exports.TemplateLiteral = exports.TemplateElement = exports.TaggedTemplateExpression = exports.TSVoidKeyword = exports.TSUnknownKeyword = exports.TSUnionType = exports.TSUndefinedKeyword = exports.TSTypeReference = exports.TSTypeQuery = exports.TSTypePredicate = exports.TSTypeParameterInstantiation = exports.TSTypeParameterDeclaration = exports.TSTypeParameter = exports.TSTypeOperator = exports.TSTypeLiteral = exports.TSTypeAssertion = exports.TSTypeAnnotation = exports.TSTypeAliasDeclaration = exports.TSTupleType = exports.TSThisType = exports.TSTemplateLiteralType = exports.TSSymbolKeyword = exports.TSStringKeyword = exports.TSSatisfiesExpression = exports.TSRestType = exports.TSQualifiedName = exports.TSPropertySignature = exports.TSParenthesizedType = exports.TSParameterProperty = exports.TSOptionalType = exports.TSObjectKeyword = void 0; +var b = __nccwpck_require__(11999); +var _deprecationWarning = __nccwpck_require__(14711); +function alias(lowercase) { + { + return b[lowercase]; + } +} +const ArrayExpression = exports.ArrayExpression = alias("arrayExpression"), + AssignmentExpression = exports.AssignmentExpression = alias("assignmentExpression"), + BinaryExpression = exports.BinaryExpression = alias("binaryExpression"), + InterpreterDirective = exports.InterpreterDirective = alias("interpreterDirective"), + Directive = exports.Directive = alias("directive"), + DirectiveLiteral = exports.DirectiveLiteral = alias("directiveLiteral"), + BlockStatement = exports.BlockStatement = alias("blockStatement"), + BreakStatement = exports.BreakStatement = alias("breakStatement"), + CallExpression = exports.CallExpression = alias("callExpression"), + CatchClause = exports.CatchClause = alias("catchClause"), + ConditionalExpression = exports.ConditionalExpression = alias("conditionalExpression"), + ContinueStatement = exports.ContinueStatement = alias("continueStatement"), + DebuggerStatement = exports.DebuggerStatement = alias("debuggerStatement"), + DoWhileStatement = exports.DoWhileStatement = alias("doWhileStatement"), + EmptyStatement = exports.EmptyStatement = alias("emptyStatement"), + ExpressionStatement = exports.ExpressionStatement = alias("expressionStatement"), + File = exports.File = alias("file"), + ForInStatement = exports.ForInStatement = alias("forInStatement"), + ForStatement = exports.ForStatement = alias("forStatement"), + FunctionDeclaration = exports.FunctionDeclaration = alias("functionDeclaration"), + FunctionExpression = exports.FunctionExpression = alias("functionExpression"), + Identifier = exports.Identifier = alias("identifier"), + IfStatement = exports.IfStatement = alias("ifStatement"), + LabeledStatement = exports.LabeledStatement = alias("labeledStatement"), + StringLiteral = exports.StringLiteral = alias("stringLiteral"), + NumericLiteral = exports.NumericLiteral = alias("numericLiteral"), + NullLiteral = exports.NullLiteral = alias("nullLiteral"), + BooleanLiteral = exports.BooleanLiteral = alias("booleanLiteral"), + RegExpLiteral = exports.RegExpLiteral = alias("regExpLiteral"), + LogicalExpression = exports.LogicalExpression = alias("logicalExpression"), + MemberExpression = exports.MemberExpression = alias("memberExpression"), + NewExpression = exports.NewExpression = alias("newExpression"), + Program = exports.Program = alias("program"), + ObjectExpression = exports.ObjectExpression = alias("objectExpression"), + ObjectMethod = exports.ObjectMethod = alias("objectMethod"), + ObjectProperty = exports.ObjectProperty = alias("objectProperty"), + RestElement = exports.RestElement = alias("restElement"), + ReturnStatement = exports.ReturnStatement = alias("returnStatement"), + SequenceExpression = exports.SequenceExpression = alias("sequenceExpression"), + ParenthesizedExpression = exports.ParenthesizedExpression = alias("parenthesizedExpression"), + SwitchCase = exports.SwitchCase = alias("switchCase"), + SwitchStatement = exports.SwitchStatement = alias("switchStatement"), + ThisExpression = exports.ThisExpression = alias("thisExpression"), + ThrowStatement = exports.ThrowStatement = alias("throwStatement"), + TryStatement = exports.TryStatement = alias("tryStatement"), + UnaryExpression = exports.UnaryExpression = alias("unaryExpression"), + UpdateExpression = exports.UpdateExpression = alias("updateExpression"), + VariableDeclaration = exports.VariableDeclaration = alias("variableDeclaration"), + VariableDeclarator = exports.VariableDeclarator = alias("variableDeclarator"), + WhileStatement = exports.WhileStatement = alias("whileStatement"), + WithStatement = exports.WithStatement = alias("withStatement"), + AssignmentPattern = exports.AssignmentPattern = alias("assignmentPattern"), + ArrayPattern = exports.ArrayPattern = alias("arrayPattern"), + ArrowFunctionExpression = exports.ArrowFunctionExpression = alias("arrowFunctionExpression"), + ClassBody = exports.ClassBody = alias("classBody"), + ClassExpression = exports.ClassExpression = alias("classExpression"), + ClassDeclaration = exports.ClassDeclaration = alias("classDeclaration"), + ExportAllDeclaration = exports.ExportAllDeclaration = alias("exportAllDeclaration"), + ExportDefaultDeclaration = exports.ExportDefaultDeclaration = alias("exportDefaultDeclaration"), + ExportNamedDeclaration = exports.ExportNamedDeclaration = alias("exportNamedDeclaration"), + ExportSpecifier = exports.ExportSpecifier = alias("exportSpecifier"), + ForOfStatement = exports.ForOfStatement = alias("forOfStatement"), + ImportDeclaration = exports.ImportDeclaration = alias("importDeclaration"), + ImportDefaultSpecifier = exports.ImportDefaultSpecifier = alias("importDefaultSpecifier"), + ImportNamespaceSpecifier = exports.ImportNamespaceSpecifier = alias("importNamespaceSpecifier"), + ImportSpecifier = exports.ImportSpecifier = alias("importSpecifier"), + ImportExpression = exports.ImportExpression = alias("importExpression"), + MetaProperty = exports.MetaProperty = alias("metaProperty"), + ClassMethod = exports.ClassMethod = alias("classMethod"), + ObjectPattern = exports.ObjectPattern = alias("objectPattern"), + SpreadElement = exports.SpreadElement = alias("spreadElement"), + Super = exports.Super = alias("super"), + TaggedTemplateExpression = exports.TaggedTemplateExpression = alias("taggedTemplateExpression"), + TemplateElement = exports.TemplateElement = alias("templateElement"), + TemplateLiteral = exports.TemplateLiteral = alias("templateLiteral"), + YieldExpression = exports.YieldExpression = alias("yieldExpression"), + AwaitExpression = exports.AwaitExpression = alias("awaitExpression"), + Import = exports.Import = alias("import"), + BigIntLiteral = exports.BigIntLiteral = alias("bigIntLiteral"), + ExportNamespaceSpecifier = exports.ExportNamespaceSpecifier = alias("exportNamespaceSpecifier"), + OptionalMemberExpression = exports.OptionalMemberExpression = alias("optionalMemberExpression"), + OptionalCallExpression = exports.OptionalCallExpression = alias("optionalCallExpression"), + ClassProperty = exports.ClassProperty = alias("classProperty"), + ClassAccessorProperty = exports.ClassAccessorProperty = alias("classAccessorProperty"), + ClassPrivateProperty = exports.ClassPrivateProperty = alias("classPrivateProperty"), + ClassPrivateMethod = exports.ClassPrivateMethod = alias("classPrivateMethod"), + PrivateName = exports.PrivateName = alias("privateName"), + StaticBlock = exports.StaticBlock = alias("staticBlock"), + ImportAttribute = exports.ImportAttribute = alias("importAttribute"), + AnyTypeAnnotation = exports.AnyTypeAnnotation = alias("anyTypeAnnotation"), + ArrayTypeAnnotation = exports.ArrayTypeAnnotation = alias("arrayTypeAnnotation"), + BooleanTypeAnnotation = exports.BooleanTypeAnnotation = alias("booleanTypeAnnotation"), + BooleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = alias("booleanLiteralTypeAnnotation"), + NullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = alias("nullLiteralTypeAnnotation"), + ClassImplements = exports.ClassImplements = alias("classImplements"), + DeclareClass = exports.DeclareClass = alias("declareClass"), + DeclareFunction = exports.DeclareFunction = alias("declareFunction"), + DeclareInterface = exports.DeclareInterface = alias("declareInterface"), + DeclareModule = exports.DeclareModule = alias("declareModule"), + DeclareModuleExports = exports.DeclareModuleExports = alias("declareModuleExports"), + DeclareTypeAlias = exports.DeclareTypeAlias = alias("declareTypeAlias"), + DeclareOpaqueType = exports.DeclareOpaqueType = alias("declareOpaqueType"), + DeclareVariable = exports.DeclareVariable = alias("declareVariable"), + DeclareExportDeclaration = exports.DeclareExportDeclaration = alias("declareExportDeclaration"), + DeclareExportAllDeclaration = exports.DeclareExportAllDeclaration = alias("declareExportAllDeclaration"), + DeclaredPredicate = exports.DeclaredPredicate = alias("declaredPredicate"), + ExistsTypeAnnotation = exports.ExistsTypeAnnotation = alias("existsTypeAnnotation"), + FunctionTypeAnnotation = exports.FunctionTypeAnnotation = alias("functionTypeAnnotation"), + FunctionTypeParam = exports.FunctionTypeParam = alias("functionTypeParam"), + GenericTypeAnnotation = exports.GenericTypeAnnotation = alias("genericTypeAnnotation"), + InferredPredicate = exports.InferredPredicate = alias("inferredPredicate"), + InterfaceExtends = exports.InterfaceExtends = alias("interfaceExtends"), + InterfaceDeclaration = exports.InterfaceDeclaration = alias("interfaceDeclaration"), + InterfaceTypeAnnotation = exports.InterfaceTypeAnnotation = alias("interfaceTypeAnnotation"), + IntersectionTypeAnnotation = exports.IntersectionTypeAnnotation = alias("intersectionTypeAnnotation"), + MixedTypeAnnotation = exports.MixedTypeAnnotation = alias("mixedTypeAnnotation"), + EmptyTypeAnnotation = exports.EmptyTypeAnnotation = alias("emptyTypeAnnotation"), + NullableTypeAnnotation = exports.NullableTypeAnnotation = alias("nullableTypeAnnotation"), + NumberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = alias("numberLiteralTypeAnnotation"), + NumberTypeAnnotation = exports.NumberTypeAnnotation = alias("numberTypeAnnotation"), + ObjectTypeAnnotation = exports.ObjectTypeAnnotation = alias("objectTypeAnnotation"), + ObjectTypeInternalSlot = exports.ObjectTypeInternalSlot = alias("objectTypeInternalSlot"), + ObjectTypeCallProperty = exports.ObjectTypeCallProperty = alias("objectTypeCallProperty"), + ObjectTypeIndexer = exports.ObjectTypeIndexer = alias("objectTypeIndexer"), + ObjectTypeProperty = exports.ObjectTypeProperty = alias("objectTypeProperty"), + ObjectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = alias("objectTypeSpreadProperty"), + OpaqueType = exports.OpaqueType = alias("opaqueType"), + QualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = alias("qualifiedTypeIdentifier"), + StringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = alias("stringLiteralTypeAnnotation"), + StringTypeAnnotation = exports.StringTypeAnnotation = alias("stringTypeAnnotation"), + SymbolTypeAnnotation = exports.SymbolTypeAnnotation = alias("symbolTypeAnnotation"), + ThisTypeAnnotation = exports.ThisTypeAnnotation = alias("thisTypeAnnotation"), + TupleTypeAnnotation = exports.TupleTypeAnnotation = alias("tupleTypeAnnotation"), + TypeofTypeAnnotation = exports.TypeofTypeAnnotation = alias("typeofTypeAnnotation"), + TypeAlias = exports.TypeAlias = alias("typeAlias"), + TypeAnnotation = exports.TypeAnnotation = alias("typeAnnotation"), + TypeCastExpression = exports.TypeCastExpression = alias("typeCastExpression"), + TypeParameter = exports.TypeParameter = alias("typeParameter"), + TypeParameterDeclaration = exports.TypeParameterDeclaration = alias("typeParameterDeclaration"), + TypeParameterInstantiation = exports.TypeParameterInstantiation = alias("typeParameterInstantiation"), + UnionTypeAnnotation = exports.UnionTypeAnnotation = alias("unionTypeAnnotation"), + Variance = exports.Variance = alias("variance"), + VoidTypeAnnotation = exports.VoidTypeAnnotation = alias("voidTypeAnnotation"), + EnumDeclaration = exports.EnumDeclaration = alias("enumDeclaration"), + EnumBooleanBody = exports.EnumBooleanBody = alias("enumBooleanBody"), + EnumNumberBody = exports.EnumNumberBody = alias("enumNumberBody"), + EnumStringBody = exports.EnumStringBody = alias("enumStringBody"), + EnumSymbolBody = exports.EnumSymbolBody = alias("enumSymbolBody"), + EnumBooleanMember = exports.EnumBooleanMember = alias("enumBooleanMember"), + EnumNumberMember = exports.EnumNumberMember = alias("enumNumberMember"), + EnumStringMember = exports.EnumStringMember = alias("enumStringMember"), + EnumDefaultedMember = exports.EnumDefaultedMember = alias("enumDefaultedMember"), + IndexedAccessType = exports.IndexedAccessType = alias("indexedAccessType"), + OptionalIndexedAccessType = exports.OptionalIndexedAccessType = alias("optionalIndexedAccessType"), + JSXAttribute = exports.JSXAttribute = alias("jsxAttribute"), + JSXClosingElement = exports.JSXClosingElement = alias("jsxClosingElement"), + JSXElement = exports.JSXElement = alias("jsxElement"), + JSXEmptyExpression = exports.JSXEmptyExpression = alias("jsxEmptyExpression"), + JSXExpressionContainer = exports.JSXExpressionContainer = alias("jsxExpressionContainer"), + JSXSpreadChild = exports.JSXSpreadChild = alias("jsxSpreadChild"), + JSXIdentifier = exports.JSXIdentifier = alias("jsxIdentifier"), + JSXMemberExpression = exports.JSXMemberExpression = alias("jsxMemberExpression"), + JSXNamespacedName = exports.JSXNamespacedName = alias("jsxNamespacedName"), + JSXOpeningElement = exports.JSXOpeningElement = alias("jsxOpeningElement"), + JSXSpreadAttribute = exports.JSXSpreadAttribute = alias("jsxSpreadAttribute"), + JSXText = exports.JSXText = alias("jsxText"), + JSXFragment = exports.JSXFragment = alias("jsxFragment"), + JSXOpeningFragment = exports.JSXOpeningFragment = alias("jsxOpeningFragment"), + JSXClosingFragment = exports.JSXClosingFragment = alias("jsxClosingFragment"), + Noop = exports.Noop = alias("noop"), + Placeholder = exports.Placeholder = alias("placeholder"), + V8IntrinsicIdentifier = exports.V8IntrinsicIdentifier = alias("v8IntrinsicIdentifier"), + ArgumentPlaceholder = exports.ArgumentPlaceholder = alias("argumentPlaceholder"), + BindExpression = exports.BindExpression = alias("bindExpression"), + Decorator = exports.Decorator = alias("decorator"), + DoExpression = exports.DoExpression = alias("doExpression"), + ExportDefaultSpecifier = exports.ExportDefaultSpecifier = alias("exportDefaultSpecifier"), + RecordExpression = exports.RecordExpression = alias("recordExpression"), + TupleExpression = exports.TupleExpression = alias("tupleExpression"), + DecimalLiteral = exports.DecimalLiteral = alias("decimalLiteral"), + ModuleExpression = exports.ModuleExpression = alias("moduleExpression"), + TopicReference = exports.TopicReference = alias("topicReference"), + PipelineTopicExpression = exports.PipelineTopicExpression = alias("pipelineTopicExpression"), + PipelineBareFunction = exports.PipelineBareFunction = alias("pipelineBareFunction"), + PipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = alias("pipelinePrimaryTopicReference"), + TSParameterProperty = exports.TSParameterProperty = alias("tsParameterProperty"), + TSDeclareFunction = exports.TSDeclareFunction = alias("tsDeclareFunction"), + TSDeclareMethod = exports.TSDeclareMethod = alias("tsDeclareMethod"), + TSQualifiedName = exports.TSQualifiedName = alias("tsQualifiedName"), + TSCallSignatureDeclaration = exports.TSCallSignatureDeclaration = alias("tsCallSignatureDeclaration"), + TSConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = alias("tsConstructSignatureDeclaration"), + TSPropertySignature = exports.TSPropertySignature = alias("tsPropertySignature"), + TSMethodSignature = exports.TSMethodSignature = alias("tsMethodSignature"), + TSIndexSignature = exports.TSIndexSignature = alias("tsIndexSignature"), + TSAnyKeyword = exports.TSAnyKeyword = alias("tsAnyKeyword"), + TSBooleanKeyword = exports.TSBooleanKeyword = alias("tsBooleanKeyword"), + TSBigIntKeyword = exports.TSBigIntKeyword = alias("tsBigIntKeyword"), + TSIntrinsicKeyword = exports.TSIntrinsicKeyword = alias("tsIntrinsicKeyword"), + TSNeverKeyword = exports.TSNeverKeyword = alias("tsNeverKeyword"), + TSNullKeyword = exports.TSNullKeyword = alias("tsNullKeyword"), + TSNumberKeyword = exports.TSNumberKeyword = alias("tsNumberKeyword"), + TSObjectKeyword = exports.TSObjectKeyword = alias("tsObjectKeyword"), + TSStringKeyword = exports.TSStringKeyword = alias("tsStringKeyword"), + TSSymbolKeyword = exports.TSSymbolKeyword = alias("tsSymbolKeyword"), + TSUndefinedKeyword = exports.TSUndefinedKeyword = alias("tsUndefinedKeyword"), + TSUnknownKeyword = exports.TSUnknownKeyword = alias("tsUnknownKeyword"), + TSVoidKeyword = exports.TSVoidKeyword = alias("tsVoidKeyword"), + TSThisType = exports.TSThisType = alias("tsThisType"), + TSFunctionType = exports.TSFunctionType = alias("tsFunctionType"), + TSConstructorType = exports.TSConstructorType = alias("tsConstructorType"), + TSTypeReference = exports.TSTypeReference = alias("tsTypeReference"), + TSTypePredicate = exports.TSTypePredicate = alias("tsTypePredicate"), + TSTypeQuery = exports.TSTypeQuery = alias("tsTypeQuery"), + TSTypeLiteral = exports.TSTypeLiteral = alias("tsTypeLiteral"), + TSArrayType = exports.TSArrayType = alias("tsArrayType"), + TSTupleType = exports.TSTupleType = alias("tsTupleType"), + TSOptionalType = exports.TSOptionalType = alias("tsOptionalType"), + TSRestType = exports.TSRestType = alias("tsRestType"), + TSNamedTupleMember = exports.TSNamedTupleMember = alias("tsNamedTupleMember"), + TSUnionType = exports.TSUnionType = alias("tsUnionType"), + TSIntersectionType = exports.TSIntersectionType = alias("tsIntersectionType"), + TSConditionalType = exports.TSConditionalType = alias("tsConditionalType"), + TSInferType = exports.TSInferType = alias("tsInferType"), + TSParenthesizedType = exports.TSParenthesizedType = alias("tsParenthesizedType"), + TSTypeOperator = exports.TSTypeOperator = alias("tsTypeOperator"), + TSIndexedAccessType = exports.TSIndexedAccessType = alias("tsIndexedAccessType"), + TSMappedType = exports.TSMappedType = alias("tsMappedType"), + TSTemplateLiteralType = exports.TSTemplateLiteralType = alias("tsTemplateLiteralType"), + TSLiteralType = exports.TSLiteralType = alias("tsLiteralType"), + TSExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = alias("tsExpressionWithTypeArguments"), + TSInterfaceDeclaration = exports.TSInterfaceDeclaration = alias("tsInterfaceDeclaration"), + TSInterfaceBody = exports.TSInterfaceBody = alias("tsInterfaceBody"), + TSTypeAliasDeclaration = exports.TSTypeAliasDeclaration = alias("tsTypeAliasDeclaration"), + TSInstantiationExpression = exports.TSInstantiationExpression = alias("tsInstantiationExpression"), + TSAsExpression = exports.TSAsExpression = alias("tsAsExpression"), + TSSatisfiesExpression = exports.TSSatisfiesExpression = alias("tsSatisfiesExpression"), + TSTypeAssertion = exports.TSTypeAssertion = alias("tsTypeAssertion"), + TSEnumBody = exports.TSEnumBody = alias("tsEnumBody"), + TSEnumDeclaration = exports.TSEnumDeclaration = alias("tsEnumDeclaration"), + TSEnumMember = exports.TSEnumMember = alias("tsEnumMember"), + TSModuleDeclaration = exports.TSModuleDeclaration = alias("tsModuleDeclaration"), + TSModuleBlock = exports.TSModuleBlock = alias("tsModuleBlock"), + TSImportType = exports.TSImportType = alias("tsImportType"), + TSImportEqualsDeclaration = exports.TSImportEqualsDeclaration = alias("tsImportEqualsDeclaration"), + TSExternalModuleReference = exports.TSExternalModuleReference = alias("tsExternalModuleReference"), + TSNonNullExpression = exports.TSNonNullExpression = alias("tsNonNullExpression"), + TSExportAssignment = exports.TSExportAssignment = alias("tsExportAssignment"), + TSNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = alias("tsNamespaceExportDeclaration"), + TSTypeAnnotation = exports.TSTypeAnnotation = alias("tsTypeAnnotation"), + TSTypeParameterInstantiation = exports.TSTypeParameterInstantiation = alias("tsTypeParameterInstantiation"), + TSTypeParameterDeclaration = exports.TSTypeParameterDeclaration = alias("tsTypeParameterDeclaration"), + TSTypeParameter = exports.TSTypeParameter = alias("tsTypeParameter"); +const NumberLiteral = exports.NumberLiteral = b.numberLiteral, + RegexLiteral = exports.RegexLiteral = b.regexLiteral, + RestProperty = exports.RestProperty = b.restProperty, + SpreadProperty = exports.SpreadProperty = b.spreadProperty; + +//# sourceMappingURL=uppercase.js.map + + +/***/ }), + +/***/ 38504: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.buildUndefinedNode = buildUndefinedNode; +var _index = __nccwpck_require__(90670); +function buildUndefinedNode() { + return (0, _index.unaryExpression)("void", (0, _index.numericLiteral)(0), true); +} + +//# sourceMappingURL=productions.js.map + + +/***/ }), + +/***/ 93415: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = buildChildren; +var _index = __nccwpck_require__(40741); +var _cleanJSXElementLiteralChild = __nccwpck_require__(43508); +function buildChildren(node) { + const elements = []; + for (let i = 0; i < node.children.length; i++) { + let child = node.children[i]; + if ((0, _index.isJSXText)(child)) { + (0, _cleanJSXElementLiteralChild.default)(child, elements); + continue; + } + if ((0, _index.isJSXExpressionContainer)(child)) child = child.expression; + if ((0, _index.isJSXEmptyExpression)(child)) continue; + elements.push(child); + } + return elements; +} + +//# sourceMappingURL=buildChildren.js.map + + +/***/ }), + +/***/ 15766: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = createTSUnionType; +var _index = __nccwpck_require__(90670); +var _removeTypeDuplicates = __nccwpck_require__(76123); +var _index2 = __nccwpck_require__(40741); +function createTSUnionType(typeAnnotations) { + const types = typeAnnotations.map(type => { + return (0, _index2.isTSTypeAnnotation)(type) ? type.typeAnnotation : type; + }); + const flattened = (0, _removeTypeDuplicates.default)(types); + if (flattened.length === 1) { + return flattened[0]; + } else { + return (0, _index.tsUnionType)(flattened); + } +} + +//# sourceMappingURL=createTSUnionType.js.map + + +/***/ }), + +/***/ 59260: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = clone; +var _cloneNode = __nccwpck_require__(89260); +function clone(node) { + return (0, _cloneNode.default)(node, false); +} + +//# sourceMappingURL=clone.js.map + + +/***/ }), + +/***/ 45922: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneDeep; +var _cloneNode = __nccwpck_require__(89260); +function cloneDeep(node) { + return (0, _cloneNode.default)(node); +} + +//# sourceMappingURL=cloneDeep.js.map + + +/***/ }), + +/***/ 37992: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneDeepWithoutLoc; +var _cloneNode = __nccwpck_require__(89260); +function cloneDeepWithoutLoc(node) { + return (0, _cloneNode.default)(node, true, true); +} + +//# sourceMappingURL=cloneDeepWithoutLoc.js.map + + +/***/ }), + +/***/ 89260: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneNode; +var _index = __nccwpck_require__(40910); +var _index2 = __nccwpck_require__(40741); +const { + hasOwn +} = { + hasOwn: Function.call.bind(Object.prototype.hasOwnProperty) +}; +function cloneIfNode(obj, deep, withoutLoc, commentsCache) { + if (obj && typeof obj.type === "string") { + return cloneNodeInternal(obj, deep, withoutLoc, commentsCache); + } + return obj; +} +function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) { + if (Array.isArray(obj)) { + return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache)); + } + return cloneIfNode(obj, deep, withoutLoc, commentsCache); +} +function cloneNode(node, deep = true, withoutLoc = false) { + return cloneNodeInternal(node, deep, withoutLoc, new Map()); +} +function cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) { + if (!node) return node; + const { + type + } = node; + const newNode = { + type: node.type + }; + if ((0, _index2.isIdentifier)(node)) { + newNode.name = node.name; + if (hasOwn(node, "optional") && typeof node.optional === "boolean") { + newNode.optional = node.optional; + } + if (hasOwn(node, "typeAnnotation")) { + newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation; + } + if (hasOwn(node, "decorators")) { + newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators; + } + } else if (!hasOwn(_index.NODE_FIELDS, type)) { + throw new Error(`Unknown node type: "${type}"`); + } else { + for (const field of Object.keys(_index.NODE_FIELDS[type])) { + if (hasOwn(node, field)) { + if (deep) { + newNode[field] = (0, _index2.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache); + } else { + newNode[field] = node[field]; + } + } + } + } + if (hasOwn(node, "loc")) { + if (withoutLoc) { + newNode.loc = null; + } else { + newNode.loc = node.loc; + } + } + if (hasOwn(node, "leadingComments")) { + newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache); + } + if (hasOwn(node, "innerComments")) { + newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache); + } + if (hasOwn(node, "trailingComments")) { + newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache); + } + if (hasOwn(node, "extra")) { + newNode.extra = Object.assign({}, node.extra); + } + return newNode; +} +function maybeCloneComments(comments, deep, withoutLoc, commentsCache) { + if (!comments || !deep) { + return comments; + } + return comments.map(comment => { + const cache = commentsCache.get(comment); + if (cache) return cache; + const { + type, + value, + loc + } = comment; + const ret = { + type, + value, + loc + }; + if (withoutLoc) { + ret.loc = null; + } + commentsCache.set(comment, ret); + return ret; + }); +} + +//# sourceMappingURL=cloneNode.js.map + + +/***/ }), + +/***/ 19258: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cloneWithoutLoc; +var _cloneNode = __nccwpck_require__(89260); +function cloneWithoutLoc(node) { + return (0, _cloneNode.default)(node, false, true); +} + +//# sourceMappingURL=cloneWithoutLoc.js.map + + +/***/ }), + +/***/ 70704: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = addComment; +var _addComments = __nccwpck_require__(21071); +function addComment(node, type, content, line) { + return (0, _addComments.default)(node, type, [{ + type: line ? "CommentLine" : "CommentBlock", + value: content + }]); +} + +//# sourceMappingURL=addComment.js.map + + +/***/ }), + +/***/ 21071: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = addComments; +function addComments(node, type, comments) { + if (!comments || !node) return node; + const key = `${type}Comments`; + if (node[key]) { + if (type === "leading") { + node[key] = comments.concat(node[key]); + } else { + node[key].push(...comments); + } + } else { + node[key] = comments; + } + return node; +} + +//# sourceMappingURL=addComments.js.map + + +/***/ }), + +/***/ 40731: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritInnerComments; +var _inherit = __nccwpck_require__(40066); +function inheritInnerComments(child, parent) { + (0, _inherit.default)("innerComments", child, parent); +} + +//# sourceMappingURL=inheritInnerComments.js.map + + +/***/ }), + +/***/ 7725: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritLeadingComments; +var _inherit = __nccwpck_require__(40066); +function inheritLeadingComments(child, parent) { + (0, _inherit.default)("leadingComments", child, parent); +} + +//# sourceMappingURL=inheritLeadingComments.js.map + + +/***/ }), + +/***/ 23491: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritTrailingComments; +var _inherit = __nccwpck_require__(40066); +function inheritTrailingComments(child, parent) { + (0, _inherit.default)("trailingComments", child, parent); +} + +//# sourceMappingURL=inheritTrailingComments.js.map + + +/***/ }), + +/***/ 32078: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inheritsComments; +var _inheritTrailingComments = __nccwpck_require__(23491); +var _inheritLeadingComments = __nccwpck_require__(7725); +var _inheritInnerComments = __nccwpck_require__(40731); +function inheritsComments(child, parent) { + (0, _inheritTrailingComments.default)(child, parent); + (0, _inheritLeadingComments.default)(child, parent); + (0, _inheritInnerComments.default)(child, parent); + return child; +} + +//# sourceMappingURL=inheritsComments.js.map + + +/***/ }), + +/***/ 84066: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeComments; +var _index = __nccwpck_require__(17945); +function removeComments(node) { + _index.COMMENT_KEYS.forEach(key => { + node[key] = null; + }); + return node; +} + +//# sourceMappingURL=removeComments.js.map + + +/***/ }), + +/***/ 12359: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WHILE_TYPES = exports.USERWHITESPACABLE_TYPES = exports.UNARYLIKE_TYPES = exports.TYPESCRIPT_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.TSENTITYNAME_TYPES = exports.TSBASETYPE_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.STANDARDIZED_TYPES = exports.SCOPABLE_TYPES = exports.PUREISH_TYPES = exports.PROPERTY_TYPES = exports.PRIVATE_TYPES = exports.PATTERN_TYPES = exports.PATTERNLIKE_TYPES = exports.OBJECTMEMBER_TYPES = exports.MODULESPECIFIER_TYPES = exports.MODULEDECLARATION_TYPES = exports.MISCELLANEOUS_TYPES = exports.METHOD_TYPES = exports.LVAL_TYPES = exports.LOOP_TYPES = exports.LITERAL_TYPES = exports.JSX_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = exports.IMMUTABLE_TYPES = exports.FUNCTION_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FOR_TYPES = exports.FORXSTATEMENT_TYPES = exports.FLOW_TYPES = exports.FLOWTYPE_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.EXPRESSION_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.DECLARATION_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.CLASS_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.BINARY_TYPES = exports.ACCESSOR_TYPES = void 0; +var _index = __nccwpck_require__(40910); +const STANDARDIZED_TYPES = exports.STANDARDIZED_TYPES = _index.FLIPPED_ALIAS_KEYS["Standardized"]; +const EXPRESSION_TYPES = exports.EXPRESSION_TYPES = _index.FLIPPED_ALIAS_KEYS["Expression"]; +const BINARY_TYPES = exports.BINARY_TYPES = _index.FLIPPED_ALIAS_KEYS["Binary"]; +const SCOPABLE_TYPES = exports.SCOPABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Scopable"]; +const BLOCKPARENT_TYPES = exports.BLOCKPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["BlockParent"]; +const BLOCK_TYPES = exports.BLOCK_TYPES = _index.FLIPPED_ALIAS_KEYS["Block"]; +const STATEMENT_TYPES = exports.STATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["Statement"]; +const TERMINATORLESS_TYPES = exports.TERMINATORLESS_TYPES = _index.FLIPPED_ALIAS_KEYS["Terminatorless"]; +const COMPLETIONSTATEMENT_TYPES = exports.COMPLETIONSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["CompletionStatement"]; +const CONDITIONAL_TYPES = exports.CONDITIONAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Conditional"]; +const LOOP_TYPES = exports.LOOP_TYPES = _index.FLIPPED_ALIAS_KEYS["Loop"]; +const WHILE_TYPES = exports.WHILE_TYPES = _index.FLIPPED_ALIAS_KEYS["While"]; +const EXPRESSIONWRAPPER_TYPES = exports.EXPRESSIONWRAPPER_TYPES = _index.FLIPPED_ALIAS_KEYS["ExpressionWrapper"]; +const FOR_TYPES = exports.FOR_TYPES = _index.FLIPPED_ALIAS_KEYS["For"]; +const FORXSTATEMENT_TYPES = exports.FORXSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["ForXStatement"]; +const FUNCTION_TYPES = exports.FUNCTION_TYPES = _index.FLIPPED_ALIAS_KEYS["Function"]; +const FUNCTIONPARENT_TYPES = exports.FUNCTIONPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParent"]; +const PUREISH_TYPES = exports.PUREISH_TYPES = _index.FLIPPED_ALIAS_KEYS["Pureish"]; +const DECLARATION_TYPES = exports.DECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["Declaration"]; +const PATTERNLIKE_TYPES = exports.PATTERNLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["PatternLike"]; +const LVAL_TYPES = exports.LVAL_TYPES = _index.FLIPPED_ALIAS_KEYS["LVal"]; +const TSENTITYNAME_TYPES = exports.TSENTITYNAME_TYPES = _index.FLIPPED_ALIAS_KEYS["TSEntityName"]; +const LITERAL_TYPES = exports.LITERAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Literal"]; +const IMMUTABLE_TYPES = exports.IMMUTABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Immutable"]; +const USERWHITESPACABLE_TYPES = exports.USERWHITESPACABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["UserWhitespacable"]; +const METHOD_TYPES = exports.METHOD_TYPES = _index.FLIPPED_ALIAS_KEYS["Method"]; +const OBJECTMEMBER_TYPES = exports.OBJECTMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["ObjectMember"]; +const PROPERTY_TYPES = exports.PROPERTY_TYPES = _index.FLIPPED_ALIAS_KEYS["Property"]; +const UNARYLIKE_TYPES = exports.UNARYLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["UnaryLike"]; +const PATTERN_TYPES = exports.PATTERN_TYPES = _index.FLIPPED_ALIAS_KEYS["Pattern"]; +const CLASS_TYPES = exports.CLASS_TYPES = _index.FLIPPED_ALIAS_KEYS["Class"]; +const IMPORTOREXPORTDECLARATION_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ImportOrExportDeclaration"]; +const EXPORTDECLARATION_TYPES = exports.EXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ExportDeclaration"]; +const MODULESPECIFIER_TYPES = exports.MODULESPECIFIER_TYPES = _index.FLIPPED_ALIAS_KEYS["ModuleSpecifier"]; +const ACCESSOR_TYPES = exports.ACCESSOR_TYPES = _index.FLIPPED_ALIAS_KEYS["Accessor"]; +const PRIVATE_TYPES = exports.PRIVATE_TYPES = _index.FLIPPED_ALIAS_KEYS["Private"]; +const FLOW_TYPES = exports.FLOW_TYPES = _index.FLIPPED_ALIAS_KEYS["Flow"]; +const FLOWTYPE_TYPES = exports.FLOWTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowType"]; +const FLOWBASEANNOTATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"]; +const FLOWDECLARATION_TYPES = exports.FLOWDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowDeclaration"]; +const FLOWPREDICATE_TYPES = exports.FLOWPREDICATE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowPredicate"]; +const ENUMBODY_TYPES = exports.ENUMBODY_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumBody"]; +const ENUMMEMBER_TYPES = exports.ENUMMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumMember"]; +const JSX_TYPES = exports.JSX_TYPES = _index.FLIPPED_ALIAS_KEYS["JSX"]; +const MISCELLANEOUS_TYPES = exports.MISCELLANEOUS_TYPES = _index.FLIPPED_ALIAS_KEYS["Miscellaneous"]; +const TYPESCRIPT_TYPES = exports.TYPESCRIPT_TYPES = _index.FLIPPED_ALIAS_KEYS["TypeScript"]; +const TSTYPEELEMENT_TYPES = exports.TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["TSTypeElement"]; +const TSTYPE_TYPES = exports.TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSType"]; +const TSBASETYPE_TYPES = exports.TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSBaseType"]; +const MODULEDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES; + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 17945: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UPDATE_OPERATORS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.STATEMENT_OR_BLOCK_KEYS = exports.NUMBER_UNARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.LOGICAL_OPERATORS = exports.INHERIT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.EQUALITY_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.COMMENT_KEYS = exports.BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.BINARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = void 0; +const STATEMENT_OR_BLOCK_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"]; +const FLATTENABLE_KEYS = exports.FLATTENABLE_KEYS = ["body", "expressions"]; +const FOR_INIT_KEYS = exports.FOR_INIT_KEYS = ["left", "init"]; +const COMMENT_KEYS = exports.COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"]; +const LOGICAL_OPERATORS = exports.LOGICAL_OPERATORS = ["||", "&&", "??"]; +const UPDATE_OPERATORS = exports.UPDATE_OPERATORS = ["++", "--"]; +const BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="]; +const EQUALITY_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="]; +const COMPARISON_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"]; +const BOOLEAN_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS]; +const NUMBER_BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"]; +const BINARY_OPERATORS = exports.BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, "|>"]; +const ASSIGNMENT_OPERATORS = exports.ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")]; +const BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = ["delete", "!"]; +const NUMBER_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = ["+", "-", "~"]; +const STRING_UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = ["typeof"]; +const UNARY_OPERATORS = exports.UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS]; +const INHERIT_KEYS = exports.INHERIT_KEYS = { + optional: ["typeAnnotation", "typeParameters", "returnType"], + force: ["start", "loc", "end"] +}; +{ + exports.BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped"); + exports.NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding"); +} + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 77046: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = ensureBlock; +var _toBlock = __nccwpck_require__(59735); +function ensureBlock(node, key = "body") { + const result = (0, _toBlock.default)(node[key], node); + node[key] = result; + return result; +} + +//# sourceMappingURL=ensureBlock.js.map + + +/***/ }), + +/***/ 77060: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = gatherSequenceExpressions; +var _getBindingIdentifiers = __nccwpck_require__(45300); +var _index = __nccwpck_require__(40741); +var _index2 = __nccwpck_require__(90670); +var _productions = __nccwpck_require__(38504); +var _cloneNode = __nccwpck_require__(89260); +; +function gatherSequenceExpressions(nodes, declars) { + const exprs = []; + let ensureLastUndefined = true; + for (const node of nodes) { + if (!(0, _index.isEmptyStatement)(node)) { + ensureLastUndefined = false; + } + if ((0, _index.isExpression)(node)) { + exprs.push(node); + } else if ((0, _index.isExpressionStatement)(node)) { + exprs.push(node.expression); + } else if ((0, _index.isVariableDeclaration)(node)) { + if (node.kind !== "var") return; + for (const declar of node.declarations) { + const bindings = (0, _getBindingIdentifiers.default)(declar); + for (const key of Object.keys(bindings)) { + declars.push({ + kind: node.kind, + id: (0, _cloneNode.default)(bindings[key]) + }); + } + if (declar.init) { + exprs.push((0, _index2.assignmentExpression)("=", declar.id, declar.init)); + } + } + ensureLastUndefined = true; + } else if ((0, _index.isIfStatement)(node)) { + const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : (0, _productions.buildUndefinedNode)(); + const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : (0, _productions.buildUndefinedNode)(); + if (!consequent || !alternate) return; + exprs.push((0, _index2.conditionalExpression)(node.test, consequent, alternate)); + } else if ((0, _index.isBlockStatement)(node)) { + const body = gatherSequenceExpressions(node.body, declars); + if (!body) return; + exprs.push(body); + } else if ((0, _index.isEmptyStatement)(node)) { + if (nodes.indexOf(node) === 0) { + ensureLastUndefined = true; + } + } else { + return; + } + } + if (ensureLastUndefined) { + exprs.push((0, _productions.buildUndefinedNode)()); + } + if (exprs.length === 1) { + return exprs[0]; + } else { + return (0, _index2.sequenceExpression)(exprs); + } +} + +//# sourceMappingURL=gatherSequenceExpressions.js.map + + +/***/ }), + +/***/ 19687: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toBindingIdentifierName; +var _toIdentifier = __nccwpck_require__(59451); +function toBindingIdentifierName(name) { + name = (0, _toIdentifier.default)(name); + if (name === "eval" || name === "arguments") name = "_" + name; + return name; +} + +//# sourceMappingURL=toBindingIdentifierName.js.map + + +/***/ }), + +/***/ 59735: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toBlock; +var _index = __nccwpck_require__(40741); +var _index2 = __nccwpck_require__(90670); +function toBlock(node, parent) { + if ((0, _index.isBlockStatement)(node)) { + return node; + } + let blockNodes = []; + if ((0, _index.isEmptyStatement)(node)) { + blockNodes = []; + } else { + if (!(0, _index.isStatement)(node)) { + if ((0, _index.isFunction)(parent)) { + node = (0, _index2.returnStatement)(node); + } else { + node = (0, _index2.expressionStatement)(node); + } + } + blockNodes = [node]; + } + return (0, _index2.blockStatement)(blockNodes); +} + +//# sourceMappingURL=toBlock.js.map + + +/***/ }), + +/***/ 49480: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toComputedKey; +var _index = __nccwpck_require__(40741); +var _index2 = __nccwpck_require__(90670); +function toComputedKey(node, key = node.key || node.property) { + if (!node.computed && (0, _index.isIdentifier)(key)) key = (0, _index2.stringLiteral)(key.name); + return key; +} + +//# sourceMappingURL=toComputedKey.js.map + + +/***/ }), + +/***/ 36490: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _index = __nccwpck_require__(40741); +var _default = exports["default"] = toExpression; +function toExpression(node) { + if ((0, _index.isExpressionStatement)(node)) { + node = node.expression; + } + if ((0, _index.isExpression)(node)) { + return node; + } + if ((0, _index.isClass)(node)) { + node.type = "ClassExpression"; + } else if ((0, _index.isFunction)(node)) { + node.type = "FunctionExpression"; + } + if (!(0, _index.isExpression)(node)) { + throw new Error(`cannot turn ${node.type} to an expression`); + } + return node; +} + +//# sourceMappingURL=toExpression.js.map + + +/***/ }), + +/***/ 59451: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toIdentifier; +var _isValidIdentifier = __nccwpck_require__(66030); +var _helperValidatorIdentifier = __nccwpck_require__(76599); +function toIdentifier(input) { + input = input + ""; + let name = ""; + for (const c of input) { + name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : "-"; + } + name = name.replace(/^[-0-9]+/, ""); + name = name.replace(/[-\s]+(.)?/g, function (match, c) { + return c ? c.toUpperCase() : ""; + }); + if (!(0, _isValidIdentifier.default)(name)) { + name = `_${name}`; + } + return name || "_"; +} + +//# sourceMappingURL=toIdentifier.js.map + + +/***/ }), + +/***/ 23381: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toKeyAlias; +var _index = __nccwpck_require__(40741); +var _cloneNode = __nccwpck_require__(89260); +var _removePropertiesDeep = __nccwpck_require__(55902); +function toKeyAlias(node, key = node.key) { + let alias; + if (node.kind === "method") { + return toKeyAlias.increment() + ""; + } else if ((0, _index.isIdentifier)(key)) { + alias = key.name; + } else if ((0, _index.isStringLiteral)(key)) { + alias = JSON.stringify(key.value); + } else { + alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key))); + } + if (node.computed) { + alias = `[${alias}]`; + } + if (node.static) { + alias = `static:${alias}`; + } + return alias; +} +toKeyAlias.uid = 0; +toKeyAlias.increment = function () { + if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) { + return toKeyAlias.uid = 0; + } else { + return toKeyAlias.uid++; + } +}; + +//# sourceMappingURL=toKeyAlias.js.map + + +/***/ }), + +/***/ 403: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = toSequenceExpression; +var _gatherSequenceExpressions = __nccwpck_require__(77060); +; +function toSequenceExpression(nodes, scope) { + if (!(nodes != null && nodes.length)) return; + const declars = []; + const result = (0, _gatherSequenceExpressions.default)(nodes, declars); + if (!result) return; + for (const declar of declars) { + scope.push(declar); + } + return result; +} + +//# sourceMappingURL=toSequenceExpression.js.map + + +/***/ }), + +/***/ 82635: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _index = __nccwpck_require__(40741); +var _index2 = __nccwpck_require__(90670); +var _default = exports["default"] = toStatement; +function toStatement(node, ignore) { + if ((0, _index.isStatement)(node)) { + return node; + } + let mustHaveId = false; + let newType; + if ((0, _index.isClass)(node)) { + mustHaveId = true; + newType = "ClassDeclaration"; + } else if ((0, _index.isFunction)(node)) { + mustHaveId = true; + newType = "FunctionDeclaration"; + } else if ((0, _index.isAssignmentExpression)(node)) { + return (0, _index2.expressionStatement)(node); + } + if (mustHaveId && !node.id) { + newType = false; + } + if (!newType) { + if (ignore) { + return false; + } else { + throw new Error(`cannot turn ${node.type} to a statement`); + } + } + node.type = newType; + return node; +} + +//# sourceMappingURL=toStatement.js.map + + +/***/ }), + +/***/ 20021: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _isValidIdentifier = __nccwpck_require__(66030); +var _index = __nccwpck_require__(90670); +var _default = exports["default"] = valueToNode; +const objectToString = Function.call.bind(Object.prototype.toString); +function isRegExp(value) { + return objectToString(value) === "[object RegExp]"; +} +function isPlainObject(value) { + if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") { + return false; + } + const proto = Object.getPrototypeOf(value); + return proto === null || Object.getPrototypeOf(proto) === null; +} +function valueToNode(value) { + if (value === undefined) { + return (0, _index.identifier)("undefined"); + } + if (value === true || value === false) { + return (0, _index.booleanLiteral)(value); + } + if (value === null) { + return (0, _index.nullLiteral)(); + } + if (typeof value === "string") { + return (0, _index.stringLiteral)(value); + } + if (typeof value === "number") { + let result; + if (Number.isFinite(value)) { + result = (0, _index.numericLiteral)(Math.abs(value)); + } else { + let numerator; + if (Number.isNaN(value)) { + numerator = (0, _index.numericLiteral)(0); + } else { + numerator = (0, _index.numericLiteral)(1); + } + result = (0, _index.binaryExpression)("/", numerator, (0, _index.numericLiteral)(0)); + } + if (value < 0 || Object.is(value, -0)) { + result = (0, _index.unaryExpression)("-", result); + } + return result; + } + if (typeof value === "bigint") { + return (0, _index.bigIntLiteral)(value.toString()); + } + if (isRegExp(value)) { + const pattern = value.source; + const flags = /\/([a-z]*)$/.exec(value.toString())[1]; + return (0, _index.regExpLiteral)(pattern, flags); + } + if (Array.isArray(value)) { + return (0, _index.arrayExpression)(value.map(valueToNode)); + } + if (isPlainObject(value)) { + const props = []; + for (const key of Object.keys(value)) { + let nodeKey, + computed = false; + if ((0, _isValidIdentifier.default)(key)) { + if (key === "__proto__") { + computed = true; + nodeKey = (0, _index.stringLiteral)(key); + } else { + nodeKey = (0, _index.identifier)(key); + } + } else { + nodeKey = (0, _index.stringLiteral)(key); + } + props.push((0, _index.objectProperty)(nodeKey, valueToNode(value[key]), computed)); + } + return (0, _index.objectExpression)(props); + } + throw new Error("don't know how to turn this value into a node"); +} + +//# sourceMappingURL=valueToNode.js.map + + +/***/ }), + +/***/ 62803: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.patternLikeCommon = exports.importAttributes = exports.functionTypeAnnotationCommon = exports.functionDeclarationCommon = exports.functionCommon = exports.classMethodOrPropertyCommon = exports.classMethodOrDeclareMethodCommon = void 0; +var _is = __nccwpck_require__(20051); +var _isValidIdentifier = __nccwpck_require__(66030); +var _helperValidatorIdentifier = __nccwpck_require__(76599); +var _helperStringParser = __nccwpck_require__(73728); +var _index = __nccwpck_require__(17945); +var _utils = __nccwpck_require__(34559); +const defineType = (0, _utils.defineAliasedType)("Standardized"); +defineType("ArrayExpression", { + fields: { + elements: { + validate: (0, _utils.arrayOf)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement")), + default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined + } + }, + visitor: ["elements"], + aliases: ["Expression"] +}); +defineType("AssignmentExpression", { + fields: { + operator: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("string") : Object.assign(function () { + const identifier = (0, _utils.assertOneOf)(..._index.ASSIGNMENT_OPERATORS); + const pattern = (0, _utils.assertOneOf)("="); + return function (node, key, val) { + const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier; + validator(node, key, val); + }; + }(), { + type: "string" + }) + }, + left: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "OptionalMemberExpression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + builder: ["operator", "left", "right"], + visitor: ["left", "right"], + aliases: ["Expression"] +}); +defineType("BinaryExpression", { + builder: ["operator", "left", "right"], + fields: { + operator: { + validate: (0, _utils.assertOneOf)(..._index.BINARY_OPERATORS) + }, + left: { + validate: function () { + const expression = (0, _utils.assertNodeType)("Expression"); + const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName"); + const validator = Object.assign(function (node, key, val) { + const validator = node.operator === "in" ? inOp : expression; + validator(node, key, val); + }, { + oneOfNodeTypes: ["Expression", "PrivateName"] + }); + return validator; + }() + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + visitor: ["left", "right"], + aliases: ["Binary", "Expression"] +}); +defineType("InterpreterDirective", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +defineType("Directive", { + visitor: ["value"], + fields: { + value: { + validate: (0, _utils.assertNodeType)("DirectiveLiteral") + } + } +}); +defineType("DirectiveLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + } +}); +defineType("BlockStatement", { + builder: ["body", "directives"], + visitor: ["directives", "body"], + fields: { + directives: { + validate: (0, _utils.arrayOfType)("Directive"), + default: [] + }, + body: (0, _utils.validateArrayOfType)("Statement") + }, + aliases: ["Scopable", "BlockParent", "Block", "Statement"] +}); +defineType("BreakStatement", { + visitor: ["label"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } + }, + aliases: ["Statement", "Terminatorless", "CompletionStatement"] +}); +defineType("CallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments"], + aliases: ["Expression"], + fields: Object.assign({ + callee: { + validate: (0, _utils.assertNodeType)("Expression", "Super", "V8IntrinsicIdentifier") + }, + arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"), + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + } + }, { + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + }, process.env.BABEL_TYPES_8_BREAKING ? {} : { + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }) +}); +defineType("CatchClause", { + visitor: ["param", "body"], + fields: { + param: { + validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }, + aliases: ["Scopable", "BlockParent"] +}); +defineType("ConditionalExpression", { + visitor: ["test", "consequent", "alternate"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + consequent: { + validate: (0, _utils.assertNodeType)("Expression") + }, + alternate: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression", "Conditional"] +}); +defineType("ContinueStatement", { + visitor: ["label"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } + }, + aliases: ["Statement", "Terminatorless", "CompletionStatement"] +}); +defineType("DebuggerStatement", { + aliases: ["Statement"] +}); +defineType("DoWhileStatement", { + builder: ["test", "body"], + visitor: ["body", "test"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + }, + aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"] +}); +defineType("EmptyStatement", { + aliases: ["Statement"] +}); +defineType("ExpressionStatement", { + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Statement", "ExpressionWrapper"] +}); +defineType("File", { + builder: ["program", "comments", "tokens"], + visitor: ["program"], + fields: { + program: { + validate: (0, _utils.assertNodeType)("Program") + }, + comments: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, { + each: { + oneOfNodeTypes: ["CommentBlock", "CommentLine"] + } + }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")), + optional: true + }, + tokens: { + validate: (0, _utils.assertEach)(Object.assign(() => {}, { + type: "any" + })), + optional: true + } + } +}); +defineType("ForInStatement", { + visitor: ["left", "right", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], + fields: { + left: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +defineType("ForStatement", { + visitor: ["init", "test", "update", "body"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"], + fields: { + init: { + validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"), + optional: true + }, + test: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + update: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +const functionCommon = () => ({ + params: (0, _utils.validateArrayOfType)("Identifier", "Pattern", "RestElement"), + generator: { + default: false + }, + async: { + default: false + } +}); +exports.functionCommon = functionCommon; +const functionTypeAnnotationCommon = () => ({ + returnType: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + } +}); +exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon; +const functionDeclarationCommon = () => Object.assign({}, functionCommon(), { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + } +}); +exports.functionDeclarationCommon = functionDeclarationCommon; +defineType("FunctionDeclaration", { + builder: ["id", "params", "body", "generator", "async"], + visitor: ["id", "typeParameters", "params", "predicate", "returnType", "body"], + fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + }, + predicate: { + validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"), + optional: true + } + }), + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"], + validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () { + const identifier = (0, _utils.assertNodeType)("Identifier"); + return function (parent, key, node) { + if (!(0, _is.default)("ExportDefaultDeclaration", parent)) { + identifier(node, "id", node.id); + } + }; + }() +}); +defineType("FunctionExpression", { + inherits: "FunctionDeclaration", + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], + fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), { + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + }, + predicate: { + validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"), + optional: true + } + }) +}); +const patternLikeCommon = () => ({ + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + } +}); +exports.patternLikeCommon = patternLikeCommon; +defineType("Identifier", { + builder: ["name"], + visitor: ["typeAnnotation", "decorators"], + aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"], + fields: Object.assign({}, patternLikeCommon(), { + name: { + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { + if (!(0, _isValidIdentifier.default)(val, false)) { + throw new TypeError(`"${val}" is not a valid identifier name`); + } + }, { + type: "string" + })) : (0, _utils.assertValueType)("string") + } + }), + validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key, node) { + const match = /\.(\w+)$/.exec(key.toString()); + if (!match) return; + const [, parentKey] = match; + const nonComp = { + computed: false + }; + if (parentKey === "property") { + if ((0, _is.default)("MemberExpression", parent, nonComp)) return; + if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return; + } else if (parentKey === "key") { + if ((0, _is.default)("Property", parent, nonComp)) return; + if ((0, _is.default)("Method", parent, nonComp)) return; + } else if (parentKey === "exported") { + if ((0, _is.default)("ExportSpecifier", parent)) return; + } else if (parentKey === "imported") { + if ((0, _is.default)("ImportSpecifier", parent, { + imported: node + })) return; + } else if (parentKey === "meta") { + if ((0, _is.default)("MetaProperty", parent, { + meta: node + })) return; + } + if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") { + throw new TypeError(`"${node.name}" is not a valid identifier`); + } + } : undefined +}); +defineType("IfStatement", { + visitor: ["test", "consequent", "alternate"], + aliases: ["Statement", "Conditional"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + consequent: { + validate: (0, _utils.assertNodeType)("Statement") + }, + alternate: { + optional: true, + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +defineType("LabeledStatement", { + visitor: ["label", "body"], + aliases: ["Statement"], + fields: { + label: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +defineType("StringLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +defineType("NumericLiteral", { + builder: ["value"], + deprecatedAlias: "NumberLiteral", + fields: { + value: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("number"), Object.assign(function (node, key, val) { + if (1 / val < 0 || !Number.isFinite(val)) { + const error = new Error("NumericLiterals must be non-negative finite numbers. " + `You can use t.valueToNode(${val}) instead.`); + {} + } + }, { + type: "number" + })) + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +defineType("NullLiteral", { + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +defineType("BooleanLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("boolean") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +defineType("RegExpLiteral", { + builder: ["pattern", "flags"], + deprecatedAlias: "RegexLiteral", + aliases: ["Expression", "Pureish", "Literal"], + fields: { + pattern: { + validate: (0, _utils.assertValueType)("string") + }, + flags: { + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) { + const invalid = /[^gimsuy]/.exec(val); + if (invalid) { + throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`); + } + }, { + type: "string" + })) : (0, _utils.assertValueType)("string"), + default: "" + } + } +}); +defineType("LogicalExpression", { + builder: ["operator", "left", "right"], + visitor: ["left", "right"], + aliases: ["Binary", "Expression"], + fields: { + operator: { + validate: (0, _utils.assertOneOf)(..._index.LOGICAL_OPERATORS) + }, + left: { + validate: (0, _utils.assertNodeType)("Expression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("MemberExpression", { + builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])], + visitor: ["object", "property"], + aliases: ["Expression", "LVal"], + fields: Object.assign({ + object: { + validate: (0, _utils.assertNodeType)("Expression", "Super") + }, + property: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName"); + const computed = (0, _utils.assertNodeType)("Expression"); + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"]; + return validator; + }() + }, + computed: { + default: false + } + }, !process.env.BABEL_TYPES_8_BREAKING ? { + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + } : {}) +}); +defineType("NewExpression", { + inherits: "CallExpression" +}); +defineType("Program", { + visitor: ["directives", "body"], + builder: ["body", "directives", "sourceType", "interpreter"], + fields: { + sourceType: { + validate: (0, _utils.assertOneOf)("script", "module"), + default: "script" + }, + interpreter: { + validate: (0, _utils.assertNodeType)("InterpreterDirective"), + default: null, + optional: true + }, + directives: { + validate: (0, _utils.arrayOfType)("Directive"), + default: [] + }, + body: (0, _utils.validateArrayOfType)("Statement") + }, + aliases: ["Scopable", "BlockParent", "Block"] +}); +defineType("ObjectExpression", { + visitor: ["properties"], + aliases: ["Expression"], + fields: { + properties: (0, _utils.validateArrayOfType)("ObjectMethod", "ObjectProperty", "SpreadElement") + } +}); +defineType("ObjectMethod", { + builder: ["kind", "key", "params", "body", "computed", "generator", "async"], + visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"], + fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), { + kind: Object.assign({ + validate: (0, _utils.assertOneOf)("method", "get", "set") + }, !process.env.BABEL_TYPES_8_BREAKING ? { + default: "method" + } : {}), + computed: { + default: false + }, + key: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"]; + return validator; + }() + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }), + aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"] +}); +defineType("ObjectProperty", { + builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])], + fields: { + computed: { + default: false + }, + key: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"); + const computed = (0, _utils.assertNodeType)("Expression"); + const validator = Object.assign(function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }, { + oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"] + }); + return validator; + }() + }, + value: { + validate: (0, _utils.assertNodeType)("Expression", "PatternLike") + }, + shorthand: { + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, shorthand) { + if (!shorthand) return; + if (node.computed) { + throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true"); + } + if (!(0, _is.default)("Identifier", node.key)) { + throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier"); + } + }, { + type: "boolean" + })) : (0, _utils.assertValueType)("boolean"), + default: false + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + } + }, + visitor: ["key", "value", "decorators"], + aliases: ["UserWhitespacable", "Property", "ObjectMember"], + validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () { + const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion"); + const expression = (0, _utils.assertNodeType)("Expression"); + return function (parent, key, node) { + const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression; + validator(node, "value", node.value); + }; + }() +}); +defineType("RestElement", { + visitor: ["argument", "typeAnnotation"], + builder: ["argument"], + aliases: ["LVal", "PatternLike"], + deprecatedAlias: "RestProperty", + fields: Object.assign({}, patternLikeCommon(), { + argument: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") + } + }), + validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key) { + const match = /(\w+)\[(\d+)\]/.exec(key.toString()); + if (!match) throw new Error("Internal Babel error: malformed key."); + const [, listKey, index] = match; + if (parent[listKey].length > +index + 1) { + throw new TypeError(`RestElement must be last element of ${listKey}`); + } + } : undefined +}); +defineType("ReturnStatement", { + visitor: ["argument"], + aliases: ["Statement", "Terminatorless", "CompletionStatement"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + } + } +}); +defineType("SequenceExpression", { + visitor: ["expressions"], + fields: { + expressions: (0, _utils.validateArrayOfType)("Expression") + }, + aliases: ["Expression"] +}); +defineType("ParenthesizedExpression", { + visitor: ["expression"], + aliases: ["Expression", "ExpressionWrapper"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("SwitchCase", { + visitor: ["test", "consequent"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + consequent: (0, _utils.validateArrayOfType)("Statement") + } +}); +defineType("SwitchStatement", { + visitor: ["discriminant", "cases"], + aliases: ["Statement", "BlockParent", "Scopable"], + fields: { + discriminant: { + validate: (0, _utils.assertNodeType)("Expression") + }, + cases: (0, _utils.validateArrayOfType)("SwitchCase") + } +}); +defineType("ThisExpression", { + aliases: ["Expression"] +}); +defineType("ThrowStatement", { + visitor: ["argument"], + aliases: ["Statement", "Terminatorless", "CompletionStatement"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("TryStatement", { + visitor: ["block", "handler", "finalizer"], + aliases: ["Statement"], + fields: { + block: { + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) { + if (!node.handler && !node.finalizer) { + throw new TypeError("TryStatement expects either a handler or finalizer, or both"); + } + }, { + oneOfNodeTypes: ["BlockStatement"] + })) : (0, _utils.assertNodeType)("BlockStatement") + }, + handler: { + optional: true, + validate: (0, _utils.assertNodeType)("CatchClause") + }, + finalizer: { + optional: true, + validate: (0, _utils.assertNodeType)("BlockStatement") + } + } +}); +defineType("UnaryExpression", { + builder: ["operator", "argument", "prefix"], + fields: { + prefix: { + default: true + }, + argument: { + validate: (0, _utils.assertNodeType)("Expression") + }, + operator: { + validate: (0, _utils.assertOneOf)(..._index.UNARY_OPERATORS) + } + }, + visitor: ["argument"], + aliases: ["UnaryLike", "Expression"] +}); +defineType("UpdateExpression", { + builder: ["operator", "argument", "prefix"], + fields: { + prefix: { + default: false + }, + argument: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression") + }, + operator: { + validate: (0, _utils.assertOneOf)(..._index.UPDATE_OPERATORS) + } + }, + visitor: ["argument"], + aliases: ["Expression"] +}); +defineType("VariableDeclaration", { + builder: ["kind", "declarations"], + visitor: ["declarations"], + aliases: ["Statement", "Declaration"], + fields: { + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + kind: { + validate: (0, _utils.assertOneOf)("var", "let", "const", "using", "await using") + }, + declarations: (0, _utils.validateArrayOfType)("VariableDeclarator") + }, + validate: process.env.BABEL_TYPES_8_BREAKING ? (() => { + const withoutInit = (0, _utils.assertNodeType)("Identifier", "Placeholder"); + const constOrLetOrVar = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "Placeholder"); + const usingOrAwaitUsing = withoutInit; + return function (parent, key, node) { + const { + kind, + declarations + } = node; + const parentIsForX = (0, _is.default)("ForXStatement", parent, { + left: node + }); + if (parentIsForX) { + if (declarations.length !== 1) { + throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`); + } + } + for (const decl of declarations) { + if (kind === "const" || kind === "let" || kind === "var") { + if (!parentIsForX && !decl.init) { + withoutInit(decl, "id", decl.id); + } else { + constOrLetOrVar(decl, "id", decl.id); + } + } else { + usingOrAwaitUsing(decl, "id", decl.id); + } + } + }; + })() : undefined +}); +defineType("VariableDeclarator", { + visitor: ["id", "init"], + fields: { + id: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern") + }, + definite: { + optional: true, + validate: (0, _utils.assertValueType)("boolean") + }, + init: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("WhileStatement", { + visitor: ["test", "body"], + aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"], + fields: { + test: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +defineType("WithStatement", { + visitor: ["object", "body"], + aliases: ["Statement"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + } + } +}); +defineType("AssignmentPattern", { + visitor: ["left", "right", "decorators"], + builder: ["left", "right"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, patternLikeCommon(), { + left: { + validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + } + }) +}); +defineType("ArrayPattern", { + visitor: ["elements", "typeAnnotation"], + builder: ["elements"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, patternLikeCommon(), { + elements: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike", "LVal"))) + } + }) +}); +defineType("ArrowFunctionExpression", { + builder: ["params", "body", "async"], + visitor: ["typeParameters", "params", "predicate", "returnType", "body"], + aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], + fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), { + expression: { + validate: (0, _utils.assertValueType)("boolean") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement", "Expression") + }, + predicate: { + validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"), + optional: true + } + }) +}); +defineType("ClassBody", { + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock") + } +}); +defineType("ClassExpression", { + builder: ["id", "superClass", "body", "decorators"], + visitor: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "mixins", "implements", "body"], + aliases: ["Scopable", "Class", "Expression"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("ClassBody") + }, + superClass: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + }, + ["superTypeParameters"]: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + }, + implements: { + validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + }, + mixins: { + validate: (0, _utils.assertNodeType)("InterfaceExtends"), + optional: true + } + } +}); +defineType("ClassDeclaration", { + inherits: "ClassExpression", + aliases: ["Scopable", "Class", "Statement", "Declaration"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), + optional: true + }, + body: { + validate: (0, _utils.assertNodeType)("ClassBody") + }, + superClass: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + }, + ["superTypeParameters"]: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + }, + implements: { + validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + }, + mixins: { + validate: (0, _utils.assertNodeType)("InterfaceExtends"), + optional: true + }, + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + abstract: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }, + validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () { + const identifier = (0, _utils.assertNodeType)("Identifier"); + return function (parent, key, node) { + if (!(0, _is.default)("ExportDefaultDeclaration", parent)) { + identifier(node, "id", node.id); + } + }; + }() +}); +const importAttributes = exports.importAttributes = { + attributes: { + optional: true, + validate: (0, _utils.arrayOfType)("ImportAttribute") + }, + assertions: { + deprecated: true, + optional: true, + validate: (0, _utils.arrayOfType)("ImportAttribute") + } +}; +defineType("ExportAllDeclaration", { + builder: ["source"], + visitor: ["source", "attributes", "assertions"], + aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], + fields: Object.assign({ + source: { + validate: (0, _utils.assertNodeType)("StringLiteral") + }, + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) + }, importAttributes) +}); +defineType("ExportDefaultDeclaration", { + visitor: ["declaration"], + aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], + fields: { + declaration: (0, _utils.validateType)("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression"), + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value")) + } +}); +defineType("ExportNamedDeclaration", { + builder: ["declaration", "specifiers", "source"], + visitor: process.env ? ["declaration", "specifiers", "source", "attributes"] : ["declaration", "specifiers", "source", "attributes", "assertions"], + aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], + fields: Object.assign({ + declaration: { + optional: true, + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) { + if (val && node.specifiers.length) { + throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration"); + } + if (val && node.source) { + throw new TypeError("Cannot export a declaration from a source"); + } + }, { + oneOfNodeTypes: ["Declaration"] + })) : (0, _utils.assertNodeType)("Declaration") + } + }, importAttributes, { + specifiers: { + default: [], + validate: (0, _utils.arrayOf)(function () { + const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"); + const sourceless = (0, _utils.assertNodeType)("ExportSpecifier"); + if (!process.env.BABEL_TYPES_8_BREAKING) return sourced; + return Object.assign(function (node, key, val) { + const validator = node.source ? sourced : sourceless; + validator(node, key, val); + }, { + oneOfNodeTypes: ["ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"] + }); + }()) + }, + source: { + validate: (0, _utils.assertNodeType)("StringLiteral"), + optional: true + }, + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) + }) +}); +defineType("ExportSpecifier", { + visitor: ["local", "exported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + exported: { + validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") + }, + exportKind: { + validate: (0, _utils.assertOneOf)("type", "value"), + optional: true + } + } +}); +defineType("ForOfStatement", { + visitor: ["left", "right", "body"], + builder: ["left", "right", "body", "await"], + aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], + fields: { + left: { + validate: function () { + if (!process.env.BABEL_TYPES_8_BREAKING) { + return (0, _utils.assertNodeType)("VariableDeclaration", "LVal"); + } + const declaration = (0, _utils.assertNodeType)("VariableDeclaration"); + const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression"); + return Object.assign(function (node, key, val) { + if ((0, _is.default)("VariableDeclaration", val)) { + declaration(node, key, val); + } else { + lval(node, key, val); + } + }, { + oneOfNodeTypes: ["VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression"] + }); + }() + }, + right: { + validate: (0, _utils.assertNodeType)("Expression") + }, + body: { + validate: (0, _utils.assertNodeType)("Statement") + }, + await: { + default: false + } + } +}); +defineType("ImportDeclaration", { + builder: ["specifiers", "source"], + visitor: ["specifiers", "source", "attributes", "assertions"], + aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"], + fields: Object.assign({}, importAttributes, { + module: { + optional: true, + validate: (0, _utils.assertValueType)("boolean") + }, + phase: { + default: null, + validate: (0, _utils.assertOneOf)("source", "defer") + }, + specifiers: (0, _utils.validateArrayOfType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"), + source: { + validate: (0, _utils.assertNodeType)("StringLiteral") + }, + importKind: { + validate: (0, _utils.assertOneOf)("type", "typeof", "value"), + optional: true + } + }) +}); +defineType("ImportDefaultSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +defineType("ImportNamespaceSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +defineType("ImportSpecifier", { + visitor: ["imported", "local"], + builder: ["local", "imported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + imported: { + validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") + }, + importKind: { + validate: (0, _utils.assertOneOf)("type", "typeof", "value"), + optional: true + } + } +}); +defineType("ImportExpression", { + visitor: ["source", "options"], + aliases: ["Expression"], + fields: { + phase: { + default: null, + validate: (0, _utils.assertOneOf)("source", "defer") + }, + source: { + validate: (0, _utils.assertNodeType)("Expression") + }, + options: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + } + } +}); +defineType("MetaProperty", { + visitor: ["meta", "property"], + aliases: ["Expression"], + fields: { + meta: { + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) { + let property; + switch (val.name) { + case "function": + property = "sent"; + break; + case "new": + property = "target"; + break; + case "import": + property = "meta"; + break; + } + if (!(0, _is.default)("Identifier", node.property, { + name: property + })) { + throw new TypeError("Unrecognised MetaProperty"); + } + }, { + oneOfNodeTypes: ["Identifier"] + })) : (0, _utils.assertNodeType)("Identifier") + }, + property: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +const classMethodOrPropertyCommon = () => ({ + abstract: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + accessibility: { + validate: (0, _utils.assertOneOf)("public", "private", "protected"), + optional: true + }, + static: { + default: false + }, + override: { + default: false + }, + computed: { + default: false + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + key: { + validate: (0, _utils.chain)(function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression")) + } +}); +exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon; +const classMethodOrDeclareMethodCommon = () => Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), { + params: (0, _utils.validateArrayOfType)("Identifier", "Pattern", "RestElement", "TSParameterProperty"), + kind: { + validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"), + default: "method" + }, + access: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + } +}); +exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon; +defineType("ClassMethod", { + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], + builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"], + visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"], + fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } + }) +}); +defineType("ObjectPattern", { + visitor: ["properties", "typeAnnotation", "decorators"], + builder: ["properties"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: Object.assign({}, patternLikeCommon(), { + properties: (0, _utils.validateArrayOfType)("RestElement", "ObjectProperty") + }) +}); +defineType("SpreadElement", { + visitor: ["argument"], + aliases: ["UnaryLike"], + deprecatedAlias: "SpreadProperty", + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("Super", { + aliases: ["Expression"] +}); +defineType("TaggedTemplateExpression", { + visitor: ["tag", "typeParameters", "quasi"], + builder: ["tag", "quasi"], + aliases: ["Expression"], + fields: { + tag: { + validate: (0, _utils.assertNodeType)("Expression") + }, + quasi: { + validate: (0, _utils.assertNodeType)("TemplateLiteral") + }, + ["typeParameters"]: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), + optional: true + } + } +}); +defineType("TemplateElement", { + builder: ["value", "tail"], + fields: { + value: { + validate: (0, _utils.chain)((0, _utils.assertShape)({ + raw: { + validate: (0, _utils.assertValueType)("string") + }, + cooked: { + validate: (0, _utils.assertValueType)("string"), + optional: true + } + }), function templateElementCookedValidator(node) { + const raw = node.value.raw; + let unterminatedCalled = false; + const error = () => { + throw new Error("Internal @babel/types error."); + }; + const { + str, + firstInvalidLoc + } = (0, _helperStringParser.readStringContents)("template", raw, 0, 0, 0, { + unterminated() { + unterminatedCalled = true; + }, + strictNumericEscape: error, + invalidEscapeSequence: error, + numericSeparatorInEscapeSequence: error, + unexpectedNumericSeparator: error, + invalidDigit: error, + invalidCodePoint: error + }); + if (!unterminatedCalled) throw new Error("Invalid raw"); + node.value.cooked = firstInvalidLoc ? null : str; + }) + }, + tail: { + default: false + } + } +}); +defineType("TemplateLiteral", { + visitor: ["quasis", "expressions"], + aliases: ["Expression", "Literal"], + fields: { + quasis: (0, _utils.validateArrayOfType)("TemplateElement"), + expressions: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) { + if (node.quasis.length !== val.length + 1) { + throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`); + } + }) + } + } +}); +defineType("YieldExpression", { + builder: ["argument", "delegate"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + delegate: { + validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) { + if (val && !node.argument) { + throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument"); + } + }, { + type: "boolean" + })) : (0, _utils.assertValueType)("boolean"), + default: false + }, + argument: { + optional: true, + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("AwaitExpression", { + builder: ["argument"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } + } +}); +defineType("Import", { + aliases: ["Expression"] +}); +defineType("BigIntLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] +}); +defineType("ExportNamespaceSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +defineType("OptionalMemberExpression", { + builder: ["object", "property", "computed", "optional"], + visitor: ["object", "property"], + aliases: ["Expression"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + property: { + validate: function () { + const normal = (0, _utils.assertNodeType)("Identifier"); + const computed = (0, _utils.assertNodeType)("Expression"); + const validator = Object.assign(function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }, { + oneOfNodeTypes: ["Expression", "Identifier"] + }); + return validator; + }() + }, + computed: { + default: false + }, + optional: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)()) + } + } +}); +defineType("OptionalCallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments", "optional"], + aliases: ["Expression"], + fields: Object.assign({ + callee: { + validate: (0, _utils.assertNodeType)("Expression") + }, + arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"), + optional: { + validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)()) + }, + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + } + }, { + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + }) +}); +defineType("ClassProperty", { + visitor: ["decorators", "variance", "key", "typeAnnotation", "value"], + builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], + aliases: ["Property"], + fields: Object.assign({}, classMethodOrPropertyCommon(), { + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + definite: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + variance: { + validate: (0, _utils.assertNodeType)("Variance"), + optional: true + } + }) +}); +defineType("ClassAccessorProperty", { + visitor: ["decorators", "key", "typeAnnotation", "value"], + builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], + aliases: ["Property", "Accessor"], + fields: Object.assign({}, classMethodOrPropertyCommon(), { + key: { + validate: (0, _utils.chain)(function () { + const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName"); + const computed = (0, _utils.assertNodeType)("Expression"); + return function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName")) + }, + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + definite: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + declare: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + variance: { + validate: (0, _utils.assertNodeType)("Variance"), + optional: true + } + }) +}); +defineType("ClassPrivateProperty", { + visitor: ["decorators", "variance", "key", "typeAnnotation", "value"], + builder: ["key", "value", "decorators", "static"], + aliases: ["Property", "Private"], + fields: { + key: { + validate: (0, _utils.assertNodeType)("PrivateName") + }, + value: { + validate: (0, _utils.assertNodeType)("Expression"), + optional: true + }, + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + }, + static: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + optional: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + definite: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + variance: { + validate: (0, _utils.assertNodeType)("Variance"), + optional: true + } + } +}); +defineType("ClassPrivateMethod", { + builder: ["kind", "key", "params", "body", "static"], + visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"], + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"], + fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), { + kind: { + validate: (0, _utils.assertOneOf)("get", "set", "method"), + default: "method" + }, + key: { + validate: (0, _utils.assertNodeType)("PrivateName") + }, + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + } }) - return '{' + result + '}' -} - -;// CONCATENATED MODULE: ./node_modules/ccount/index.js -/** - * Count how often a character (or substring) is used in a string. - * - * @param {string} value - * Value to search in. - * @param {string} character - * Character (or substring) to look for. - * @return {number} - * Number of times `character` occurred in `value`. - */ -function ccount(value, character) { - const source = String(value) - - if (typeof character !== 'string') { - throw new TypeError('Expected character') +}); +defineType("PrivateName", { + visitor: ["id"], + aliases: ["Private"], + fields: { + id: { + validate: (0, _utils.assertNodeType)("Identifier") + } } - - let count = 0 - let index = source.indexOf(character) - - while (index !== -1) { - count++ - index = source.indexOf(character, index + character.length) +}); +defineType("StaticBlock", { + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("Statement") + }, + aliases: ["Scopable", "BlockParent", "FunctionParent"] +}); +defineType("ImportAttribute", { + visitor: ["key", "value"], + fields: { + key: { + validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral") + }, + value: { + validate: (0, _utils.assertNodeType)("StringLiteral") + } } +}); - return count -} - -;// CONCATENATED MODULE: ./node_modules/character-entities-legacy/index.js -/** - * List of legacy HTML named character references that don’t need a trailing semicolon. - * - * @type {Array<string>} - */ -const characterEntitiesLegacy = [ - 'AElig', - 'AMP', - 'Aacute', - 'Acirc', - 'Agrave', - 'Aring', - 'Atilde', - 'Auml', - 'COPY', - 'Ccedil', - 'ETH', - 'Eacute', - 'Ecirc', - 'Egrave', - 'Euml', - 'GT', - 'Iacute', - 'Icirc', - 'Igrave', - 'Iuml', - 'LT', - 'Ntilde', - 'Oacute', - 'Ocirc', - 'Ograve', - 'Oslash', - 'Otilde', - 'Ouml', - 'QUOT', - 'REG', - 'THORN', - 'Uacute', - 'Ucirc', - 'Ugrave', - 'Uuml', - 'Yacute', - 'aacute', - 'acirc', - 'acute', - 'aelig', - 'agrave', - 'amp', - 'aring', - 'atilde', - 'auml', - 'brvbar', - 'ccedil', - 'cedil', - 'cent', - 'copy', - 'curren', - 'deg', - 'divide', - 'eacute', - 'ecirc', - 'egrave', - 'eth', - 'euml', - 'frac12', - 'frac14', - 'frac34', - 'gt', - 'iacute', - 'icirc', - 'iexcl', - 'igrave', - 'iquest', - 'iuml', - 'laquo', - 'lt', - 'macr', - 'micro', - 'middot', - 'nbsp', - 'not', - 'ntilde', - 'oacute', - 'ocirc', - 'ograve', - 'ordf', - 'ordm', - 'oslash', - 'otilde', - 'ouml', - 'para', - 'plusmn', - 'pound', - 'quot', - 'raquo', - 'reg', - 'sect', - 'shy', - 'sup1', - 'sup2', - 'sup3', - 'szlig', - 'thorn', - 'times', - 'uacute', - 'ucirc', - 'ugrave', - 'uml', - 'uuml', - 'yacute', - 'yen', - 'yuml' -] - -;// CONCATENATED MODULE: ./node_modules/character-reference-invalid/index.js -/** - * Map of invalid numeric character references to their replacements, according to HTML. - * - * @type {Record<number, string>} - */ -const characterReferenceInvalid = { - 0: '�', - 128: '€', - 130: '‚', - 131: 'ƒ', - 132: '„', - 133: '…', - 134: '†', - 135: '‡', - 136: 'ˆ', - 137: '‰', - 138: 'Š', - 139: '‹', - 140: 'Œ', - 142: 'Ž', - 145: '‘', - 146: '’', - 147: '“', - 148: '”', - 149: '•', - 150: '–', - 151: '—', - 152: '˜', - 153: '™', - 154: 'š', - 155: '›', - 156: 'œ', - 158: 'ž', - 159: 'Ÿ' -} - -;// CONCATENATED MODULE: ./node_modules/is-decimal/index.js -/** - * Check if the given character code, or the character code at the first - * character, is decimal. - * - * @param {string|number} character - * @returns {boolean} Whether `character` is a decimal - */ -function isDecimal(character) { - const code = - typeof character === 'string' ? character.charCodeAt(0) : character - - return code >= 48 && code <= 57 /* 0-9 */ -} - -;// CONCATENATED MODULE: ./node_modules/is-hexadecimal/index.js -/** - * Check if the given character code, or the character code at the first - * character, is hexadecimal. - * - * @param {string|number} character - * @returns {boolean} Whether `character` is hexadecimal - */ -function isHexadecimal(character) { - const code = - typeof character === 'string' ? character.charCodeAt(0) : character - - return ( - (code >= 97 /* a */ && code <= 102) /* z */ || - (code >= 65 /* A */ && code <= 70) /* Z */ || - (code >= 48 /* A */ && code <= 57) /* Z */ - ) -} - -;// CONCATENATED MODULE: ./node_modules/is-alphabetical/index.js -/** - * Check if the given character code, or the character code at the first - * character, is alphabetical. - * - * @param {string|number} character - * @returns {boolean} Whether `character` is alphabetical. - */ -function isAlphabetical(character) { - const code = - typeof character === 'string' ? character.charCodeAt(0) : character - - return ( - (code >= 97 && code <= 122) /* a-z */ || - (code >= 65 && code <= 90) /* A-Z */ - ) -} - -;// CONCATENATED MODULE: ./node_modules/is-alphanumerical/index.js +//# sourceMappingURL=core.js.map +/***/ }), -/** - * Check if the given character code, or the character code at the first - * character, is alphanumerical. - * - * @param {string|number} character - * @returns {boolean} Whether `character` is alphanumerical. - */ -function isAlphanumerical(character) { - return isAlphabetical(character) || isDecimal(character) -} +/***/ 44856: +/***/ ((__unused_webpack_module, exports) => { -;// CONCATENATED MODULE: ./node_modules/parse-entities/lib/index.js -/** - * @import {Point} from 'unist' - * @import {Options} from '../index.js' - */ +"use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DEPRECATED_ALIASES = void 0; +const DEPRECATED_ALIASES = exports.DEPRECATED_ALIASES = { + ModuleDeclaration: "ImportOrExportDeclaration" +}; +//# sourceMappingURL=deprecated-aliases.js.map +/***/ }), +/***/ 78794: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -// Warning messages. -const messages = [ - '', - /* 1: Non terminated (named) */ - 'Named character references must be terminated by a semicolon', - /* 2: Non terminated (numeric) */ - 'Numeric character references must be terminated by a semicolon', - /* 3: Empty (named) */ - 'Named character references cannot be empty', - /* 4: Empty (numeric) */ - 'Numeric character references cannot be empty', - /* 5: Unknown (named) */ - 'Named character references must be known', - /* 6: Disallowed (numeric) */ - 'Numeric character references cannot be disallowed', - /* 7: Prohibited (numeric) */ - 'Numeric character references cannot be outside the permissible Unicode range' -] -/** - * Parse HTML character references. - * - * @param {string} value - * @param {Readonly<Options> | null | undefined} [options] - */ -function parseEntities(value, options) { - const settings = options || {} - const additional = - typeof settings.additional === 'string' - ? settings.additional.charCodeAt(0) - : settings.additional - /** @type {Array<string>} */ - const result = [] - let index = 0 - let lines = -1 - let queue = '' - /** @type {Point | undefined} */ - let point - /** @type {Array<number>|undefined} */ - let indent - - if (settings.position) { - if ('start' in settings.position || 'indent' in settings.position) { - // @ts-expect-error: points don’t have indent. - indent = settings.position.indent - // @ts-expect-error: points don’t have indent. - point = settings.position.start - } else { - point = settings.position +var _utils = __nccwpck_require__(34559); +(0, _utils.default)("ArgumentPlaceholder", {}); +(0, _utils.default)("BindExpression", { + visitor: ["object", "callee"], + aliases: ["Expression"], + fields: !process.env.BABEL_TYPES_8_BREAKING ? { + object: { + validate: Object.assign(() => {}, { + oneOfNodeTypes: ["Expression"] + }) + }, + callee: { + validate: Object.assign(() => {}, { + oneOfNodeTypes: ["Expression"] + }) + } + } : { + object: { + validate: (0, _utils.assertNodeType)("Expression") + }, + callee: { + validate: (0, _utils.assertNodeType)("Expression") } } - - let line = (point ? point.line : 0) || 1 - let column = (point ? point.column : 0) || 1 - - // Cache the current point. - let previous = now() - /** @type {number|undefined} */ - let character - - // Ensure the algorithm walks over the first character (inclusive). - index-- - - while (++index <= value.length) { - // If the previous character was a newline. - if (character === 10 /* `\n` */) { - column = (indent ? indent[lines] : 0) || 1 +}); +(0, _utils.default)("Decorator", { + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") } - - character = value.charCodeAt(index) - - if (character === 38 /* `&` */) { - const following = value.charCodeAt(index + 1) - - // The behavior depends on the identity of the next character. - if ( - following === 9 /* `\t` */ || - following === 10 /* `\n` */ || - following === 12 /* `\f` */ || - following === 32 /* ` ` */ || - following === 38 /* `&` */ || - following === 60 /* `<` */ || - Number.isNaN(following) || - (additional && following === additional) - ) { - // Not a character reference. - // No characters are consumed, and nothing is returned. - // This is not an error, either. - queue += String.fromCharCode(character) - column++ - continue + } +}); +(0, _utils.default)("DoExpression", { + visitor: ["body"], + builder: ["body", "async"], + aliases: ["Expression"], + fields: { + body: { + validate: (0, _utils.assertNodeType)("BlockStatement") + }, + async: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + } + } +}); +(0, _utils.default)("ExportDefaultSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: (0, _utils.assertNodeType)("Identifier") + } + } +}); +(0, _utils.default)("RecordExpression", { + visitor: ["properties"], + aliases: ["Expression"], + fields: { + properties: (0, _utils.validateArrayOfType)("ObjectProperty", "SpreadElement") + } +}); +(0, _utils.default)("TupleExpression", { + fields: { + elements: { + validate: (0, _utils.arrayOfType)("Expression", "SpreadElement"), + default: [] + } + }, + visitor: ["elements"], + aliases: ["Expression"] +}); +{ + (0, _utils.default)("DecimalLiteral", { + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") } + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"] + }); +} +(0, _utils.default)("ModuleExpression", { + visitor: ["body"], + fields: { + body: { + validate: (0, _utils.assertNodeType)("Program") + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("TopicReference", { + aliases: ["Expression"] +}); +(0, _utils.default)("PipelineTopicExpression", { + builder: ["expression"], + visitor: ["expression"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("PipelineBareFunction", { + builder: ["callee"], + visitor: ["callee"], + fields: { + callee: { + validate: (0, _utils.assertNodeType)("Expression") + } + }, + aliases: ["Expression"] +}); +(0, _utils.default)("PipelinePrimaryTopicReference", { + aliases: ["Expression"] +}); - const start = index + 1 - let begin = start - let end = start - /** @type {string} */ - let type - - if (following === 35 /* `#` */) { - // Numerical reference. - end = ++begin - - // The behavior further depends on the next character. - const following = value.charCodeAt(end) - - if (following === 88 /* `X` */ || following === 120 /* `x` */) { - // ASCII hexadecimal digits. - type = 'hexadecimal' - end = ++begin - } else { - // ASCII decimal digits. - type = 'decimal' - } - } else { - // Named reference. - type = 'named' - } - - let characterReferenceCharacters = '' - let characterReference = '' - let characters = '' - // Each type of character reference accepts different characters. - // This test is used to detect whether a reference has ended (as the semicolon - // is not strictly needed). - const test = - type === 'named' - ? isAlphanumerical - : type === 'decimal' - ? isDecimal - : isHexadecimal - - end-- - - while (++end <= value.length) { - const following = value.charCodeAt(end) - - if (!test(following)) { - break - } - - characters += String.fromCharCode(following) - - // Check if we can match a legacy named reference. - // If so, we cache that as the last viable named reference. - // This ensures we do not need to walk backwards later. - if (type === 'named' && characterEntitiesLegacy.includes(characters)) { - characterReferenceCharacters = characters - // @ts-expect-error: always able to decode. - characterReference = decodeNamedCharacterReference(characters) - } - } +//# sourceMappingURL=experimental.js.map - let terminated = value.charCodeAt(end) === 59 /* `;` */ - if (terminated) { - end++ +/***/ }), - const namedReference = - type === 'named' ? decodeNamedCharacterReference(characters) : false +/***/ 67256: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - if (namedReference) { - characterReferenceCharacters = characters - characterReference = namedReference - } - } +"use strict"; - let diff = 1 + end - start - let reference = '' - if (!terminated && settings.nonTerminated === false) { - // Empty. - } else if (!characters) { - // An empty (possible) reference is valid, unless it’s numeric (thus an - // ampersand followed by an octothorp). - if (type !== 'named') { - warning(4 /* Empty (numeric) */, diff) - } - } else if (type === 'named') { - // An ampersand followed by anything unknown, and not terminated, is - // invalid. - if (terminated && !characterReference) { - warning(5 /* Unknown (named) */, 1) - } else { - // If there’s something after an named reference which is not known, - // cap the reference. - if (characterReferenceCharacters !== characters) { - end = begin + characterReferenceCharacters.length - diff = 1 + end - begin - terminated = false - } +var _core = __nccwpck_require__(62803); +var _utils = __nccwpck_require__(34559); +const defineType = (0, _utils.defineAliasedType)("Flow"); +const defineInterfaceishType = name => { + const isDeclareClass = name === "DeclareClass"; + defineType(name, { + builder: ["id", "typeParameters", "extends", "body"], + visitor: ["id", "typeParameters", "extends", ...(isDeclareClass ? ["mixins", "implements"] : []), "body"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: Object.assign({ + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")) + }, isDeclareClass ? { + mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")) + } : {}, { + body: (0, _utils.validateType)("ObjectTypeAnnotation") + }) + }); +}; +defineType("AnyTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("ArrayTypeAnnotation", { + visitor: ["elementType"], + aliases: ["FlowType"], + fields: { + elementType: (0, _utils.validateType)("FlowType") + } +}); +defineType("BooleanTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("BooleanLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("NullLiteralTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("ClassImplements", { + visitor: ["id", "typeParameters"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineInterfaceishType("DeclareClass"); +defineType("DeclareFunction", { + builder: ["id"], + visitor: ["id", "predicate"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + predicate: (0, _utils.validateOptionalType)("DeclaredPredicate") + } +}); +defineInterfaceishType("DeclareInterface"); +defineType("DeclareModule", { + builder: ["id", "body", "kind"], + visitor: ["id", "body"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier", "StringLiteral"), + body: (0, _utils.validateType)("BlockStatement"), + kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES")) + } +}); +defineType("DeclareModuleExports", { + visitor: ["typeAnnotation"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + typeAnnotation: (0, _utils.validateType)("TypeAnnotation") + } +}); +defineType("DeclareTypeAlias", { + visitor: ["id", "typeParameters", "right"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + right: (0, _utils.validateType)("FlowType") + } +}); +defineType("DeclareOpaqueType", { + visitor: ["id", "typeParameters", "supertype"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + supertype: (0, _utils.validateOptionalType)("FlowType"), + impltype: (0, _utils.validateOptionalType)("FlowType") + } +}); +defineType("DeclareVariable", { + visitor: ["id"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +defineType("DeclareExportDeclaration", { + visitor: ["declaration", "specifiers", "source", "attributes"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: Object.assign({ + declaration: (0, _utils.validateOptionalType)("Flow"), + specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ExportSpecifier", "ExportNamespaceSpecifier")), + source: (0, _utils.validateOptionalType)("StringLiteral"), + default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + }, _core.importAttributes) +}); +defineType("DeclareExportAllDeclaration", { + visitor: ["source", "attributes"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: Object.assign({ + source: (0, _utils.validateType)("StringLiteral"), + exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")) + }, _core.importAttributes) +}); +defineType("DeclaredPredicate", { + visitor: ["value"], + aliases: ["FlowPredicate"], + fields: { + value: (0, _utils.validateType)("Flow") + } +}); +defineType("ExistsTypeAnnotation", { + aliases: ["FlowType"] +}); +defineType("FunctionTypeAnnotation", { + builder: ["typeParameters", "params", "rest", "returnType"], + visitor: ["typeParameters", "this", "params", "rest", "returnType"], + aliases: ["FlowType"], + fields: { + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + params: (0, _utils.validateArrayOfType)("FunctionTypeParam"), + rest: (0, _utils.validateOptionalType)("FunctionTypeParam"), + this: (0, _utils.validateOptionalType)("FunctionTypeParam"), + returnType: (0, _utils.validateType)("FlowType") + } +}); +defineType("FunctionTypeParam", { + visitor: ["name", "typeAnnotation"], + fields: { + name: (0, _utils.validateOptionalType)("Identifier"), + typeAnnotation: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("GenericTypeAnnotation", { + visitor: ["id", "typeParameters"], + aliases: ["FlowType"], + fields: { + id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineType("InferredPredicate", { + aliases: ["FlowPredicate"] +}); +defineType("InterfaceExtends", { + visitor: ["id", "typeParameters"], + fields: { + id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation") + } +}); +defineInterfaceishType("InterfaceDeclaration"); +defineType("InterfaceTypeAnnotation", { + visitor: ["extends", "body"], + aliases: ["FlowType"], + fields: { + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")), + body: (0, _utils.validateType)("ObjectTypeAnnotation") + } +}); +defineType("IntersectionTypeAnnotation", { + visitor: ["types"], + aliases: ["FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +defineType("MixedTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("EmptyTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("NullableTypeAnnotation", { + visitor: ["typeAnnotation"], + aliases: ["FlowType"], + fields: { + typeAnnotation: (0, _utils.validateType)("FlowType") + } +}); +defineType("NumberLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("number")) + } +}); +defineType("NumberTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("ObjectTypeAnnotation", { + visitor: ["properties", "indexers", "callProperties", "internalSlots"], + aliases: ["FlowType"], + builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"], + fields: { + properties: (0, _utils.validate)((0, _utils.arrayOfType)("ObjectTypeProperty", "ObjectTypeSpreadProperty")), + indexers: { + validate: (0, _utils.arrayOfType)("ObjectTypeIndexer"), + optional: true, + default: [] + }, + callProperties: { + validate: (0, _utils.arrayOfType)("ObjectTypeCallProperty"), + optional: true, + default: [] + }, + internalSlots: { + validate: (0, _utils.arrayOfType)("ObjectTypeInternalSlot"), + optional: true, + default: [] + }, + exact: { + validate: (0, _utils.assertValueType)("boolean"), + default: false + }, + inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("ObjectTypeInternalSlot", { + visitor: ["id", "value"], + builder: ["id", "value", "optional", "static", "method"], + aliases: ["UserWhitespacable"], + fields: { + id: (0, _utils.validateType)("Identifier"), + value: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("ObjectTypeCallProperty", { + visitor: ["value"], + aliases: ["UserWhitespacable"], + fields: { + value: (0, _utils.validateType)("FlowType"), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("ObjectTypeIndexer", { + visitor: ["variance", "id", "key", "value"], + builder: ["id", "key", "value", "variance"], + aliases: ["UserWhitespacable"], + fields: { + id: (0, _utils.validateOptionalType)("Identifier"), + key: (0, _utils.validateType)("FlowType"), + value: (0, _utils.validateType)("FlowType"), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +defineType("ObjectTypeProperty", { + visitor: ["key", "value", "variance"], + aliases: ["UserWhitespacable"], + fields: { + key: (0, _utils.validateType)("Identifier", "StringLiteral"), + value: (0, _utils.validateType)("FlowType"), + kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")), + static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + variance: (0, _utils.validateOptionalType)("Variance"), + method: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("ObjectTypeSpreadProperty", { + visitor: ["argument"], + aliases: ["UserWhitespacable"], + fields: { + argument: (0, _utils.validateType)("FlowType") + } +}); +defineType("OpaqueType", { + visitor: ["id", "typeParameters", "supertype", "impltype"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + supertype: (0, _utils.validateOptionalType)("FlowType"), + impltype: (0, _utils.validateType)("FlowType") + } +}); +defineType("QualifiedTypeIdentifier", { + visitor: ["qualification", "id"], + builder: ["id", "qualification"], + fields: { + id: (0, _utils.validateType)("Identifier"), + qualification: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier") + } +}); +defineType("StringLiteralTypeAnnotation", { + builder: ["value"], + aliases: ["FlowType"], + fields: { + value: (0, _utils.validate)((0, _utils.assertValueType)("string")) + } +}); +defineType("StringTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("SymbolTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("ThisTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("TupleTypeAnnotation", { + visitor: ["types"], + aliases: ["FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +defineType("TypeofTypeAnnotation", { + visitor: ["argument"], + aliases: ["FlowType"], + fields: { + argument: (0, _utils.validateType)("FlowType") + } +}); +defineType("TypeAlias", { + visitor: ["id", "typeParameters", "right"], + aliases: ["FlowDeclaration", "Statement", "Declaration"], + fields: { + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"), + right: (0, _utils.validateType)("FlowType") + } +}); +defineType("TypeAnnotation", { + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("FlowType") + } +}); +defineType("TypeCastExpression", { + visitor: ["expression", "typeAnnotation"], + aliases: ["ExpressionWrapper", "Expression"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeAnnotation: (0, _utils.validateType)("TypeAnnotation") + } +}); +defineType("TypeParameter", { + visitor: ["bound", "default", "variance"], + fields: { + name: (0, _utils.validate)((0, _utils.assertValueType)("string")), + bound: (0, _utils.validateOptionalType)("TypeAnnotation"), + default: (0, _utils.validateOptionalType)("FlowType"), + variance: (0, _utils.validateOptionalType)("Variance") + } +}); +defineType("TypeParameterDeclaration", { + visitor: ["params"], + fields: { + params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter")) + } +}); +defineType("TypeParameterInstantiation", { + visitor: ["params"], + fields: { + params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +defineType("UnionTypeAnnotation", { + visitor: ["types"], + aliases: ["FlowType"], + fields: { + types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType")) + } +}); +defineType("Variance", { + builder: ["kind"], + fields: { + kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus")) + } +}); +defineType("VoidTypeAnnotation", { + aliases: ["FlowType", "FlowBaseAnnotation"] +}); +defineType("EnumDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "body"], + fields: { + id: (0, _utils.validateType)("Identifier"), + body: (0, _utils.validateType)("EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody") + } +}); +defineType("EnumBooleanBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + members: (0, _utils.validateArrayOfType)("EnumBooleanMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("EnumNumberBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + members: (0, _utils.validateArrayOfType)("EnumNumberMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("EnumStringBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")), + members: (0, _utils.validateArrayOfType)("EnumStringMember", "EnumDefaultedMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("EnumSymbolBody", { + aliases: ["EnumBody"], + visitor: ["members"], + fields: { + members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"), + hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); +defineType("EnumBooleanMember", { + aliases: ["EnumMember"], + builder: ["id"], + visitor: ["id", "init"], + fields: { + id: (0, _utils.validateType)("Identifier"), + init: (0, _utils.validateType)("BooleanLiteral") + } +}); +defineType("EnumNumberMember", { + aliases: ["EnumMember"], + visitor: ["id", "init"], + fields: { + id: (0, _utils.validateType)("Identifier"), + init: (0, _utils.validateType)("NumericLiteral") + } +}); +defineType("EnumStringMember", { + aliases: ["EnumMember"], + visitor: ["id", "init"], + fields: { + id: (0, _utils.validateType)("Identifier"), + init: (0, _utils.validateType)("StringLiteral") + } +}); +defineType("EnumDefaultedMember", { + aliases: ["EnumMember"], + visitor: ["id"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +defineType("IndexedAccessType", { + visitor: ["objectType", "indexType"], + aliases: ["FlowType"], + fields: { + objectType: (0, _utils.validateType)("FlowType"), + indexType: (0, _utils.validateType)("FlowType") + } +}); +defineType("OptionalIndexedAccessType", { + visitor: ["objectType", "indexType"], + aliases: ["FlowType"], + fields: { + objectType: (0, _utils.validateType)("FlowType"), + indexType: (0, _utils.validateType)("FlowType"), + optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")) + } +}); - // If the reference is not terminated, warn. - if (!terminated) { - const reason = characterReferenceCharacters - ? 1 /* Non terminated (named) */ - : 3 /* Empty (named) */ +//# sourceMappingURL=flow.js.map - if (settings.attribute) { - const following = value.charCodeAt(end) - if (following === 61 /* `=` */) { - warning(reason, diff) - characterReference = '' - } else if (isAlphanumerical(following)) { - characterReference = '' - } else { - warning(reason, diff) - } - } else { - warning(reason, diff) - } - } - } +/***/ }), - reference = characterReference - } else { - if (!terminated) { - // All nonterminated numeric references are not rendered, and emit a - // warning. - warning(2 /* Non terminated (numeric) */, diff) - } +/***/ 40910: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // When terminated and numerical, parse as either hexadecimal or - // decimal. - let referenceCode = Number.parseInt( - characters, - type === 'hexadecimal' ? 16 : 10 - ) +"use strict"; - // Emit a warning when the parsed number is prohibited, and replace with - // replacement character. - if (prohibited(referenceCode)) { - warning(7 /* Prohibited (numeric) */, diff) - reference = String.fromCharCode(65533 /* `�` */) - } else if (referenceCode in characterReferenceInvalid) { - // Emit a warning when the parsed number is disallowed, and replace by - // an alternative. - warning(6 /* Disallowed (numeric) */, diff) - reference = characterReferenceInvalid[referenceCode] - } else { - // Parse the number. - let output = '' - // Emit a warning when the parsed number should not be used. - if (disallowed(referenceCode)) { - warning(6 /* Disallowed (numeric) */, diff) - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "ALIAS_KEYS", ({ + enumerable: true, + get: function () { + return _utils.ALIAS_KEYS; + } +})); +Object.defineProperty(exports, "BUILDER_KEYS", ({ + enumerable: true, + get: function () { + return _utils.BUILDER_KEYS; + } +})); +Object.defineProperty(exports, "DEPRECATED_ALIASES", ({ + enumerable: true, + get: function () { + return _deprecatedAliases.DEPRECATED_ALIASES; + } +})); +Object.defineProperty(exports, "DEPRECATED_KEYS", ({ + enumerable: true, + get: function () { + return _utils.DEPRECATED_KEYS; + } +})); +Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", ({ + enumerable: true, + get: function () { + return _utils.FLIPPED_ALIAS_KEYS; + } +})); +Object.defineProperty(exports, "NODE_FIELDS", ({ + enumerable: true, + get: function () { + return _utils.NODE_FIELDS; + } +})); +Object.defineProperty(exports, "NODE_PARENT_VALIDATIONS", ({ + enumerable: true, + get: function () { + return _utils.NODE_PARENT_VALIDATIONS; + } +})); +Object.defineProperty(exports, "PLACEHOLDERS", ({ + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS; + } +})); +Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", ({ + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS_ALIAS; + } +})); +Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", ({ + enumerable: true, + get: function () { + return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS; + } +})); +exports.TYPES = void 0; +Object.defineProperty(exports, "VISITOR_KEYS", ({ + enumerable: true, + get: function () { + return _utils.VISITOR_KEYS; + } +})); +__nccwpck_require__(62803); +__nccwpck_require__(67256); +__nccwpck_require__(24379); +__nccwpck_require__(34528); +__nccwpck_require__(78794); +__nccwpck_require__(60463); +var _utils = __nccwpck_require__(34559); +var _placeholders = __nccwpck_require__(73182); +var _deprecatedAliases = __nccwpck_require__(44856); +Object.keys(_deprecatedAliases.DEPRECATED_ALIASES).forEach(deprecatedAlias => { + _utils.FLIPPED_ALIAS_KEYS[deprecatedAlias] = _utils.FLIPPED_ALIAS_KEYS[_deprecatedAliases.DEPRECATED_ALIASES[deprecatedAlias]]; +}); +for (const { + types, + set +} of _utils.allExpandedTypes) { + for (const type of types) { + const aliases = _utils.FLIPPED_ALIAS_KEYS[type]; + if (aliases) { + aliases.forEach(set.add, set); + } else { + set.add(type); + } + } +} +const TYPES = exports.TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS)); - // Serialize the number. - if (referenceCode > 0xffff) { - referenceCode -= 0x10000 - output += String.fromCharCode( - (referenceCode >>> (10 & 0x3ff)) | 0xd800 - ) - referenceCode = 0xdc00 | (referenceCode & 0x3ff) - } +//# sourceMappingURL=index.js.map - reference = output + String.fromCharCode(referenceCode) - } - } - // Found it! - // First eat the queued characters as normal text, then eat a reference. - if (reference) { - flush() +/***/ }), - previous = now() - index = end - 1 - column += end - start + 1 - result.push(reference) - const next = now() - next.offset++ +/***/ 24379: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - if (settings.reference) { - settings.reference.call( - settings.referenceContext || undefined, - reference, - {start: previous, end: next}, - value.slice(start - 1, end) - ) - } +"use strict"; - previous = next - } else { - // If we could not find a reference, queue the checked characters (as - // normal characters), and move the pointer to their end. - // This is possible because we can be certain neither newlines nor - // ampersands are included. - characters = value.slice(start - 1, end) - queue += characters - column += characters.length - index = end - 1 - } - } else { - // Handle anything other than an ampersand, including newlines and EOF. - if (character === 10 /* `\n` */) { - line++ - lines++ - column = 0 - } - if (Number.isNaN(character)) { - flush() - } else { - queue += String.fromCharCode(character) - column++ - } +var _utils = __nccwpck_require__(34559); +const defineType = (0, _utils.defineAliasedType)("JSX"); +defineType("JSXAttribute", { + visitor: ["name", "value"], + aliases: ["Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName") + }, + value: { + optional: true, + validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer") } } - - // Return the reduced nodes. - return result.join('') - - // Get current position. - function now() { - return { - line, - column, - offset: index + ((point ? point.offset : 0) || 0) +}); +defineType("JSXClosingElement", { + visitor: ["name"], + aliases: ["Immutable"], + fields: { + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") } } - - /** - * Handle the warning. - * - * @param {1|2|3|4|5|6|7} code - * @param {number} offset - */ - function warning(code, offset) { - /** @type {ReturnType<now>} */ - let position - - if (settings.warning) { - position = now() - position.column += offset - position.offset += offset - - settings.warning.call( - settings.warningContext || undefined, - messages[code], - position, - code - ) +}); +defineType("JSXElement", { + builder: ["openingElement", "closingElement", "children", "selfClosing"], + visitor: ["openingElement", "children", "closingElement"], + aliases: ["Immutable", "Expression"], + fields: Object.assign({ + openingElement: { + validate: (0, _utils.assertNodeType)("JSXOpeningElement") + }, + closingElement: { + optional: true, + validate: (0, _utils.assertNodeType)("JSXClosingElement") + }, + children: (0, _utils.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment") + }, { + selfClosing: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + } + }) +}); +defineType("JSXEmptyExpression", {}); +defineType("JSXExpressionContainer", { + visitor: ["expression"], + aliases: ["Immutable"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression") } } - - /** - * Flush `queue` (normal text). - * Macro invoked before each reference and at the end of `value`. - * Does nothing when `queue` is empty. - */ - function flush() { - if (queue) { - result.push(queue) - - if (settings.text) { - settings.text.call(settings.textContext || undefined, queue, { - start: previous, - end: now() - }) - } - - queue = '' +}); +defineType("JSXSpreadChild", { + visitor: ["expression"], + aliases: ["Immutable"], + fields: { + expression: { + validate: (0, _utils.assertNodeType)("Expression") } } -} - -/** - * Check if `character` is outside the permissible unicode range. - * - * @param {number} code - * @returns {boolean} - */ -function prohibited(code) { - return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff -} - -/** - * Check if `character` is disallowed. - * - * @param {number} code - * @returns {boolean} - */ -function disallowed(code) { - return ( - (code >= 0x0001 && code <= 0x0008) || - code === 0x000b || - (code >= 0x000d && code <= 0x001f) || - (code >= 0x007f && code <= 0x009f) || - (code >= 0xfdd0 && code <= 0xfdef) || - (code & 0xffff) === 0xffff || - (code & 0xffff) === 0xfffe - ) -} - -;// CONCATENATED MODULE: ./node_modules/stringify-entities/lib/core.js -/** - * @typedef CoreOptions - * @property {ReadonlyArray<string>} [subset=[]] - * Whether to only escape the given subset of characters. - * @property {boolean} [escapeOnly=false] - * Whether to only escape possibly dangerous characters. - * Those characters are `"`, `&`, `'`, `<`, `>`, and `` ` ``. - * - * @typedef FormatOptions - * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format - * Format strategy. - * - * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions - */ - -const defaultSubsetRegex = /["&'<>`]/g -const surrogatePairsRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g -const controlCharactersRegex = - // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape - /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g -const regexEscapeRegex = /[|\\{}()[\]^$+*?.]/g - -/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */ -const subsetToRegexCache = new WeakMap() - -/** - * Encode certain characters in `value`. - * - * @param {string} value - * @param {CoreWithFormatOptions} options - * @returns {string} - */ -function core_core(value, options) { - value = value.replace( - options.subset - ? charactersToExpressionCached(options.subset) - : defaultSubsetRegex, - basic - ) - - if (options.subset || options.escapeOnly) { - return value +}); +defineType("JSXIdentifier", { + builder: ["name"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + } } - - return ( - value - // Surrogate pairs. - .replace(surrogatePairsRegex, surrogate) - // BMP control characters (C0 except for LF, CR, SP; DEL; and some more - // non-ASCII ones). - .replace(controlCharactersRegex, basic) - ) - - /** - * @param {string} pair - * @param {number} index - * @param {string} all - */ - function surrogate(pair, index, all) { - return options.format( - (pair.charCodeAt(0) - 0xd800) * 0x400 + - pair.charCodeAt(1) - - 0xdc00 + - 0x10000, - all.charCodeAt(index + 2), - options - ) +}); +defineType("JSXMemberExpression", { + visitor: ["object", "property"], + fields: { + object: { + validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier") + }, + property: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + } + } +}); +defineType("JSXNamespacedName", { + visitor: ["namespace", "name"], + fields: { + namespace: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + }, + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier") + } + } +}); +defineType("JSXOpeningElement", { + builder: ["name", "attributes", "selfClosing"], + visitor: ["name", "typeParameters", "typeArguments", "attributes"], + aliases: ["Immutable"], + fields: Object.assign({ + name: { + validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") + }, + selfClosing: { + default: false + }, + attributes: (0, _utils.validateArrayOfType)("JSXAttribute", "JSXSpreadAttribute"), + typeArguments: { + validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"), + optional: true + } + }, { + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"), + optional: true + } + }) +}); +defineType("JSXSpreadAttribute", { + visitor: ["argument"], + fields: { + argument: { + validate: (0, _utils.assertNodeType)("Expression") + } } - - /** - * @param {string} character - * @param {number} index - * @param {string} all - */ - function basic(character, index, all) { - return options.format( - character.charCodeAt(0), - all.charCodeAt(index + 1), - options - ) +}); +defineType("JSXText", { + aliases: ["Immutable"], + builder: ["value"], + fields: { + value: { + validate: (0, _utils.assertValueType)("string") + } } -} +}); +defineType("JSXFragment", { + builder: ["openingFragment", "closingFragment", "children"], + visitor: ["openingFragment", "children", "closingFragment"], + aliases: ["Immutable", "Expression"], + fields: { + openingFragment: { + validate: (0, _utils.assertNodeType)("JSXOpeningFragment") + }, + closingFragment: { + validate: (0, _utils.assertNodeType)("JSXClosingFragment") + }, + children: (0, _utils.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment") + } +}); +defineType("JSXOpeningFragment", { + aliases: ["Immutable"] +}); +defineType("JSXClosingFragment", { + aliases: ["Immutable"] +}); -/** - * A wrapper function that caches the result of `charactersToExpression` with a WeakMap. - * This can improve performance when tooling calls `charactersToExpression` repeatedly - * with the same subset. - * - * @param {ReadonlyArray<string>} subset - * @returns {RegExp} - */ -function charactersToExpressionCached(subset) { - let cached = subsetToRegexCache.get(subset) +//# sourceMappingURL=jsx.js.map - if (!cached) { - cached = charactersToExpression(subset) - subsetToRegexCache.set(subset, cached) - } - return cached -} +/***/ }), -/** - * @param {ReadonlyArray<string>} subset - * @returns {RegExp} - */ -function charactersToExpression(subset) { - /** @type {Array<string>} */ - const groups = [] - let index = -1 +/***/ 34528: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - while (++index < subset.length) { - groups.push(subset[index].replace(regexEscapeRegex, '\\$&')) - } +"use strict"; - return new RegExp('(?:' + groups.join('|') + ')', 'g') -} -;// CONCATENATED MODULE: ./node_modules/stringify-entities/lib/util/format-basic.js -/** - * The smallest way to encode a character. - * - * @param {number} code - * @returns {string} - */ -function formatBasic(code) { - return '&#x' + code.toString(16).toUpperCase() + ';' +var _utils = __nccwpck_require__(34559); +var _placeholders = __nccwpck_require__(73182); +var _core = __nccwpck_require__(62803); +const defineType = (0, _utils.defineAliasedType)("Miscellaneous"); +{ + defineType("Noop", { + visitor: [] + }); } +defineType("Placeholder", { + visitor: [], + builder: ["expectedNode", "name"], + fields: Object.assign({ + name: { + validate: (0, _utils.assertNodeType)("Identifier") + }, + expectedNode: { + validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS) + } + }, (0, _core.patternLikeCommon)()) +}); +defineType("V8IntrinsicIdentifier", { + builder: ["name"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + } + } +}); -;// CONCATENATED MODULE: ./node_modules/stringify-entities/lib/index.js -/** - * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options - * @typedef {import('./core.js').CoreOptions} LightOptions - */ +//# sourceMappingURL=misc.js.map +/***/ }), +/***/ 73182: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -/** - * Encode special characters in `value`. - * - * @param {string} value - * Value to encode. - * @param {Options} [options] - * Configuration. - * @returns {string} - * Encoded value. - */ -function stringifyEntities(value, options) { - return core(value, Object.assign({format: formatSmart}, options)) -} -/** - * Encode special characters in `value` as hexadecimals. - * - * @param {string} value - * Value to encode. - * @param {LightOptions} [options] - * Configuration. - * @returns {string} - * Encoded value. - */ -function stringifyEntitiesLight(value, options) { - return core_core(value, Object.assign({format: formatBasic}, options)) +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0; +var _utils = __nccwpck_require__(34559); +const PLACEHOLDERS = exports.PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"]; +const PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS_ALIAS = { + Declaration: ["Statement"], + Pattern: ["PatternLike", "LVal"] +}; +for (const type of PLACEHOLDERS) { + const alias = _utils.ALIAS_KEYS[type]; + if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias; } +const PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_FLIPPED_ALIAS = {}; +Object.keys(PLACEHOLDERS_ALIAS).forEach(type => { + PLACEHOLDERS_ALIAS[type].forEach(alias => { + if (!hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) { + PLACEHOLDERS_FLIPPED_ALIAS[alias] = []; + } + PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type); + }); +}); -;// CONCATENATED MODULE: ./node_modules/mdast-util-mdx-jsx/lib/index.js -/** - * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, OnEnterError, OnExitError, Token} from 'mdast-util-from-markdown' - * @import {Handle as ToMarkdownHandle, Options as ToMarkdownExtension, State, Tracker} from 'mdast-util-to-markdown' - * @import {Point} from 'unist' - * @import {MdxJsxAttribute, MdxJsxAttributeValueExpression, MdxJsxExpressionAttribute, MdxJsxFlowElement, MdxJsxTextElement} from '../index.js' - */ +//# sourceMappingURL=placeholders.js.map -/** - * @typedef Tag - * Single tag. - * @property {string | undefined} name - * Name of tag, or `undefined` for fragment. - * - * > 👉 **Note**: `null` is used in the AST for fragments, as it serializes in - * > JSON. - * @property {Array<MdxJsxAttribute | MdxJsxExpressionAttribute>} attributes - * Attributes. - * @property {boolean} close - * Whether the tag is closing (`</x>`). - * @property {boolean} selfClosing - * Whether the tag is self-closing (`<x/>`). - * @property {Token['start']} start - * Start point. - * @property {Token['start']} end - * End point. - * - * @typedef ToMarkdownOptions - * Configuration. - * @property {'"' | "'" | null | undefined} [quote='"'] - * Preferred quote to use around attribute values (default: `'"'`). - * @property {boolean | null | undefined} [quoteSmart=false] - * Use the other quote if that results in less bytes (default: `false`). - * @property {boolean | null | undefined} [tightSelfClosing=false] - * Do not use an extra space when closing self-closing elements: `<img/>` - * instead of `<img />` (default: `false`). - * @property {number | null | undefined} [printWidth=Infinity] - * Try and wrap syntax at this width (default: `Infinity`). - * - * When set to a finite number (say, `80`), the formatter will print - * attributes on separate lines when a tag doesn’t fit on one line. - * The normal behavior is to print attributes with spaces between them - * instead of line endings. - */ + +/***/ }), + +/***/ 60463: +/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +var _utils = __nccwpck_require__(34559); +var _core = __nccwpck_require__(62803); +var _is = __nccwpck_require__(20051); +const defineType = (0, _utils.defineAliasedType)("TypeScript"); +const bool = (0, _utils.assertValueType)("boolean"); +const tSFunctionTypeAnnotationCommon = () => ({ + returnType: { + validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"), + optional: true + }, + typeParameters: { + validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"), + optional: true + } +}); +defineType("TSParameterProperty", { + aliases: ["LVal"], + visitor: ["parameter"], + fields: { + accessibility: { + validate: (0, _utils.assertOneOf)("public", "private", "protected"), + optional: true + }, + readonly: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + parameter: { + validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern") + }, + override: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + decorators: { + validate: (0, _utils.arrayOfType)("Decorator"), + optional: true + } + } +}); +defineType("TSDeclareFunction", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "params", "returnType"], + fields: Object.assign({}, (0, _core.functionDeclarationCommon)(), tSFunctionTypeAnnotationCommon()) +}); +defineType("TSDeclareMethod", { + visitor: ["decorators", "key", "typeParameters", "params", "returnType"], + fields: Object.assign({}, (0, _core.classMethodOrDeclareMethodCommon)(), tSFunctionTypeAnnotationCommon()) +}); +defineType("TSQualifiedName", { + aliases: ["TSEntityName"], + visitor: ["left", "right"], + fields: { + left: (0, _utils.validateType)("TSEntityName"), + right: (0, _utils.validateType)("Identifier") + } +}); +const signatureDeclarationCommon = () => ({ + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + ["parameters"]: (0, _utils.validateArrayOfType)("ArrayPattern", "Identifier", "ObjectPattern", "RestElement"), + ["typeAnnotation"]: (0, _utils.validateOptionalType)("TSTypeAnnotation") +}); +const callConstructSignatureDeclaration = { + aliases: ["TSTypeElement"], + visitor: ["typeParameters", "parameters", "typeAnnotation"], + fields: signatureDeclarationCommon() +}; +defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration); +defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration); +const namedTypeElementCommon = () => ({ + key: (0, _utils.validateType)("Expression"), + computed: { + default: false + }, + optional: (0, _utils.validateOptional)(bool) +}); +defineType("TSPropertySignature", { + aliases: ["TSTypeElement"], + visitor: ["key", "typeAnnotation"], + fields: Object.assign({}, namedTypeElementCommon(), { + readonly: (0, _utils.validateOptional)(bool), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), + kind: { + optional: true, + validate: (0, _utils.assertOneOf)("get", "set") + } + }) +}); +defineType("TSMethodSignature", { + aliases: ["TSTypeElement"], + visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], + fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), { + kind: { + validate: (0, _utils.assertOneOf)("method", "get", "set") + } + }) +}); +defineType("TSIndexSignature", { + aliases: ["TSTypeElement"], + visitor: ["parameters", "typeAnnotation"], + fields: { + readonly: (0, _utils.validateOptional)(bool), + static: (0, _utils.validateOptional)(bool), + parameters: (0, _utils.validateArrayOfType)("Identifier"), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation") + } +}); +const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"]; +for (const type of tsKeywordTypes) { + defineType(type, { + aliases: ["TSType", "TSBaseType"], + visitor: [], + fields: {} + }); +} +defineType("TSThisType", { + aliases: ["TSType", "TSBaseType"], + visitor: [], + fields: {} +}); +const fnOrCtrBase = { + aliases: ["TSType"], + visitor: ["typeParameters", "parameters", "typeAnnotation"] +}; +defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, { + fields: signatureDeclarationCommon() +})); +defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, { + fields: Object.assign({}, signatureDeclarationCommon(), { + abstract: (0, _utils.validateOptional)(bool) + }) +})); +defineType("TSTypeReference", { + aliases: ["TSType"], + visitor: ["typeName", "typeParameters"], + fields: { + typeName: (0, _utils.validateType)("TSEntityName"), + ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +defineType("TSTypePredicate", { + aliases: ["TSType"], + visitor: ["parameterName", "typeAnnotation"], + builder: ["parameterName", "typeAnnotation", "asserts"], + fields: { + parameterName: (0, _utils.validateType)("Identifier", "TSThisType"), + typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"), + asserts: (0, _utils.validateOptional)(bool) + } +}); +defineType("TSTypeQuery", { + aliases: ["TSType"], + visitor: ["exprName", "typeParameters"], + fields: { + exprName: (0, _utils.validateType)("TSEntityName", "TSImportType"), + ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +defineType("TSTypeLiteral", { + aliases: ["TSType"], + visitor: ["members"], + fields: { + members: (0, _utils.validateArrayOfType)("TSTypeElement") + } +}); +defineType("TSArrayType", { + aliases: ["TSType"], + visitor: ["elementType"], + fields: { + elementType: (0, _utils.validateType)("TSType") + } +}); +defineType("TSTupleType", { + aliases: ["TSType"], + visitor: ["elementTypes"], + fields: { + elementTypes: (0, _utils.validateArrayOfType)("TSType", "TSNamedTupleMember") + } +}); +defineType("TSOptionalType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +defineType("TSRestType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +defineType("TSNamedTupleMember", { + visitor: ["label", "elementType"], + builder: ["label", "elementType", "optional"], + fields: { + label: (0, _utils.validateType)("Identifier"), + optional: { + validate: bool, + default: false + }, + elementType: (0, _utils.validateType)("TSType") + } +}); +const unionOrIntersection = { + aliases: ["TSType"], + visitor: ["types"], + fields: { + types: (0, _utils.validateArrayOfType)("TSType") + } +}; +defineType("TSUnionType", unionOrIntersection); +defineType("TSIntersectionType", unionOrIntersection); +defineType("TSConditionalType", { + aliases: ["TSType"], + visitor: ["checkType", "extendsType", "trueType", "falseType"], + fields: { + checkType: (0, _utils.validateType)("TSType"), + extendsType: (0, _utils.validateType)("TSType"), + trueType: (0, _utils.validateType)("TSType"), + falseType: (0, _utils.validateType)("TSType") + } +}); +defineType("TSInferType", { + aliases: ["TSType"], + visitor: ["typeParameter"], + fields: { + typeParameter: (0, _utils.validateType)("TSTypeParameter") + } +}); +defineType("TSParenthesizedType", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +defineType("TSTypeOperator", { + aliases: ["TSType"], + visitor: ["typeAnnotation"], + fields: { + operator: (0, _utils.validate)((0, _utils.assertValueType)("string")), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +defineType("TSIndexedAccessType", { + aliases: ["TSType"], + visitor: ["objectType", "indexType"], + fields: { + objectType: (0, _utils.validateType)("TSType"), + indexType: (0, _utils.validateType)("TSType") + } +}); +defineType("TSMappedType", { + aliases: ["TSType"], + visitor: ["typeParameter", "nameType", "typeAnnotation"], + builder: ["typeParameter", "typeAnnotation", "nameType"], + fields: Object.assign({}, { + typeParameter: (0, _utils.validateType)("TSTypeParameter") + }, { + readonly: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")), + optional: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")), + typeAnnotation: (0, _utils.validateOptionalType)("TSType"), + nameType: (0, _utils.validateOptionalType)("TSType") + }) +}); +defineType("TSTemplateLiteralType", { + aliases: ["TSType", "TSBaseType"], + visitor: ["quasis", "types"], + fields: { + quasis: (0, _utils.validateArrayOfType)("TemplateElement"), + types: { + validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType")), function (node, key, val) { + if (node.quasis.length !== val.length + 1) { + throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of types.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`); + } + }) + } + } +}); +defineType("TSLiteralType", { + aliases: ["TSType", "TSBaseType"], + visitor: ["literal"], + fields: { + literal: { + validate: function () { + const unaryExpression = (0, _utils.assertNodeType)("NumericLiteral", "BigIntLiteral"); + const unaryOperator = (0, _utils.assertOneOf)("-"); + const literal = (0, _utils.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral"); + function validator(parent, key, node) { + if ((0, _is.default)("UnaryExpression", node)) { + unaryOperator(node, "operator", node.operator); + unaryExpression(node, "argument", node.argument); + } else { + literal(parent, key, node); + } + } + validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral", "UnaryExpression"]; + return validator; + }() + } + } +}); +{ + defineType("TSExpressionWithTypeArguments", { + aliases: ["TSType"], + visitor: ["expression", "typeParameters"], + fields: { + expression: (0, _utils.validateType)("TSEntityName"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } + }); +} +defineType("TSInterfaceDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "extends", "body"], + fields: { + declare: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")), + body: (0, _utils.validateType)("TSInterfaceBody") + } +}); +defineType("TSInterfaceBody", { + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("TSTypeElement") + } +}); +defineType("TSTypeAliasDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "typeParameters", "typeAnnotation"], + fields: { + declare: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}); +defineType("TSInstantiationExpression", { + aliases: ["Expression"], + visitor: ["expression", "typeParameters"], + fields: { + expression: (0, _utils.validateType)("Expression"), + ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation") + } +}); +const TSTypeExpression = { + aliases: ["Expression", "LVal", "PatternLike"], + visitor: ["expression", "typeAnnotation"], + fields: { + expression: (0, _utils.validateType)("Expression"), + typeAnnotation: (0, _utils.validateType)("TSType") + } +}; +defineType("TSAsExpression", TSTypeExpression); +defineType("TSSatisfiesExpression", TSTypeExpression); +defineType("TSTypeAssertion", { + aliases: ["Expression", "LVal", "PatternLike"], + visitor: ["typeAnnotation", "expression"], + fields: { + typeAnnotation: (0, _utils.validateType)("TSType"), + expression: (0, _utils.validateType)("Expression") + } +}); +defineType("TSEnumBody", { + visitor: ["members"], + fields: { + members: (0, _utils.validateArrayOfType)("TSEnumMember") + } +}); +{ + defineType("TSEnumDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "members"], + fields: { + declare: (0, _utils.validateOptional)(bool), + const: (0, _utils.validateOptional)(bool), + id: (0, _utils.validateType)("Identifier"), + members: (0, _utils.validateArrayOfType)("TSEnumMember"), + initializer: (0, _utils.validateOptionalType)("Expression"), + body: (0, _utils.validateOptionalType)("TSEnumBody") + } + }); +} +defineType("TSEnumMember", { + visitor: ["id", "initializer"], + fields: { + id: (0, _utils.validateType)("Identifier", "StringLiteral"), + initializer: (0, _utils.validateOptionalType)("Expression") + } +}); +defineType("TSModuleDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "body"], + fields: Object.assign({ + kind: { + validate: (0, _utils.assertOneOf)("global", "module", "namespace") + }, + declare: (0, _utils.validateOptional)(bool) + }, { + global: (0, _utils.validateOptional)(bool) + }, { + id: (0, _utils.validateType)("Identifier", "StringLiteral"), + body: (0, _utils.validateType)("TSModuleBlock", "TSModuleDeclaration") + }) +}); +defineType("TSModuleBlock", { + aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"], + visitor: ["body"], + fields: { + body: (0, _utils.validateArrayOfType)("Statement") + } +}); +defineType("TSImportType", { + aliases: ["TSType"], + builder: ["argument", "qualifier", "typeParameters"], + visitor: ["argument", "options", "qualifier", "typeParameters"], + fields: { + argument: (0, _utils.validateType)("StringLiteral"), + qualifier: (0, _utils.validateOptionalType)("TSEntityName"), + ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation"), + options: { + validate: (0, _utils.assertNodeType)("ObjectExpression"), + optional: true + } + } +}); +defineType("TSImportEqualsDeclaration", { + aliases: ["Statement", "Declaration"], + visitor: ["id", "moduleReference"], + fields: Object.assign({}, { + isExport: (0, _utils.validate)(bool) + }, { + id: (0, _utils.validateType)("Identifier"), + moduleReference: (0, _utils.validateType)("TSEntityName", "TSExternalModuleReference"), + importKind: { + validate: (0, _utils.assertOneOf)("type", "value"), + optional: true + } + }) +}); +defineType("TSExternalModuleReference", { + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("StringLiteral") + } +}); +defineType("TSNonNullExpression", { + aliases: ["Expression", "LVal", "PatternLike"], + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("Expression") + } +}); +defineType("TSExportAssignment", { + aliases: ["Statement"], + visitor: ["expression"], + fields: { + expression: (0, _utils.validateType)("Expression") + } +}); +defineType("TSNamespaceExportDeclaration", { + aliases: ["Statement"], + visitor: ["id"], + fields: { + id: (0, _utils.validateType)("Identifier") + } +}); +defineType("TSTypeAnnotation", { + visitor: ["typeAnnotation"], + fields: { + typeAnnotation: { + validate: (0, _utils.assertNodeType)("TSType") + } + } +}); +defineType("TSTypeParameterInstantiation", { + visitor: ["params"], + fields: { + params: (0, _utils.validateArrayOfType)("TSType") + } +}); +defineType("TSTypeParameterDeclaration", { + visitor: ["params"], + fields: { + params: (0, _utils.validateArrayOfType)("TSTypeParameter") + } +}); +defineType("TSTypeParameter", { + builder: ["constraint", "default", "name"], + visitor: ["constraint", "default"], + fields: { + name: { + validate: (0, _utils.assertValueType)("string") + }, + in: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + out: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + const: { + validate: (0, _utils.assertValueType)("boolean"), + optional: true + }, + constraint: { + validate: (0, _utils.assertNodeType)("TSType"), + optional: true + }, + default: { + validate: (0, _utils.assertNodeType)("TSType"), + optional: true + } + } +}); +//# sourceMappingURL=typescript.js.map +/***/ }), +/***/ 34559: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -const indent = ' ' -/** - * Create an extension for `mdast-util-from-markdown` to enable MDX JSX. - * - * @returns {FromMarkdownExtension} - * Extension for `mdast-util-from-markdown` to enable MDX JSX. - * - * When using the syntax extension with `addResult`, nodes will have a - * `data.estree` field set to an ESTree `Program` node. - */ -function mdxJsxFromMarkdown() { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.allExpandedTypes = exports.VISITOR_KEYS = exports.NODE_PARENT_VALIDATIONS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.ALIAS_KEYS = void 0; +exports.arrayOf = arrayOf; +exports.arrayOfType = arrayOfType; +exports.assertEach = assertEach; +exports.assertNodeOrValueType = assertNodeOrValueType; +exports.assertNodeType = assertNodeType; +exports.assertOneOf = assertOneOf; +exports.assertOptionalChainStart = assertOptionalChainStart; +exports.assertShape = assertShape; +exports.assertValueType = assertValueType; +exports.chain = chain; +exports["default"] = defineType; +exports.defineAliasedType = defineAliasedType; +exports.validate = validate; +exports.validateArrayOfType = validateArrayOfType; +exports.validateOptional = validateOptional; +exports.validateOptionalType = validateOptionalType; +exports.validateType = validateType; +var _is = __nccwpck_require__(20051); +var _validate = __nccwpck_require__(71581); +const VISITOR_KEYS = exports.VISITOR_KEYS = {}; +const ALIAS_KEYS = exports.ALIAS_KEYS = {}; +const FLIPPED_ALIAS_KEYS = exports.FLIPPED_ALIAS_KEYS = {}; +const NODE_FIELDS = exports.NODE_FIELDS = {}; +const BUILDER_KEYS = exports.BUILDER_KEYS = {}; +const DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {}; +const NODE_PARENT_VALIDATIONS = exports.NODE_PARENT_VALIDATIONS = {}; +function getType(val) { + if (Array.isArray(val)) { + return "array"; + } else if (val === null) { + return "null"; + } else { + return typeof val; + } +} +function validate(validate) { return { - canContainEols: ['mdxJsxTextElement'], - enter: { - mdxJsxFlowTag: enterMdxJsxTag, - mdxJsxFlowTagClosingMarker: enterMdxJsxTagClosingMarker, - mdxJsxFlowTagAttribute: enterMdxJsxTagAttribute, - mdxJsxFlowTagExpressionAttribute: enterMdxJsxTagExpressionAttribute, - mdxJsxFlowTagAttributeValueLiteral: buffer, - mdxJsxFlowTagAttributeValueExpression: buffer, - mdxJsxFlowTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker, - - mdxJsxTextTag: enterMdxJsxTag, - mdxJsxTextTagClosingMarker: enterMdxJsxTagClosingMarker, - mdxJsxTextTagAttribute: enterMdxJsxTagAttribute, - mdxJsxTextTagExpressionAttribute: enterMdxJsxTagExpressionAttribute, - mdxJsxTextTagAttributeValueLiteral: buffer, - mdxJsxTextTagAttributeValueExpression: buffer, - mdxJsxTextTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker - }, - exit: { - mdxJsxFlowTagClosingMarker: exitMdxJsxTagClosingMarker, - mdxJsxFlowTagNamePrimary: exitMdxJsxTagNamePrimary, - mdxJsxFlowTagNameMember: exitMdxJsxTagNameMember, - mdxJsxFlowTagNameLocal: exitMdxJsxTagNameLocal, - mdxJsxFlowTagExpressionAttribute: exitMdxJsxTagExpressionAttribute, - mdxJsxFlowTagExpressionAttributeValue: data, - mdxJsxFlowTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary, - mdxJsxFlowTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal, - mdxJsxFlowTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral, - mdxJsxFlowTagAttributeValueLiteralValue: data, - mdxJsxFlowTagAttributeValueExpression: - exitMdxJsxTagAttributeValueExpression, - mdxJsxFlowTagAttributeValueExpressionValue: data, - mdxJsxFlowTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker, - mdxJsxFlowTag: exitMdxJsxTag, - - mdxJsxTextTagClosingMarker: exitMdxJsxTagClosingMarker, - mdxJsxTextTagNamePrimary: exitMdxJsxTagNamePrimary, - mdxJsxTextTagNameMember: exitMdxJsxTagNameMember, - mdxJsxTextTagNameLocal: exitMdxJsxTagNameLocal, - mdxJsxTextTagExpressionAttribute: exitMdxJsxTagExpressionAttribute, - mdxJsxTextTagExpressionAttributeValue: data, - mdxJsxTextTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary, - mdxJsxTextTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal, - mdxJsxTextTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral, - mdxJsxTextTagAttributeValueLiteralValue: data, - mdxJsxTextTagAttributeValueExpression: - exitMdxJsxTagAttributeValueExpression, - mdxJsxTextTagAttributeValueExpressionValue: data, - mdxJsxTextTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker, - mdxJsxTextTag: exitMdxJsxTag + validate + }; +} +function validateType(...typeNames) { + return validate(assertNodeType(...typeNames)); +} +function validateOptional(validate) { + return { + validate, + optional: true + }; +} +function validateOptionalType(...typeNames) { + return { + validate: assertNodeType(...typeNames), + optional: true + }; +} +function arrayOf(elementType) { + return chain(assertValueType("array"), assertEach(elementType)); +} +function arrayOfType(...typeNames) { + return arrayOf(assertNodeType(...typeNames)); +} +function validateArrayOfType(...typeNames) { + return validate(arrayOfType(...typeNames)); +} +function assertEach(callback) { + const childValidator = process.env.BABEL_TYPES_8_BREAKING ? _validate.validateChild : () => {}; + function validator(node, key, val) { + if (!Array.isArray(val)) return; + let i = 0; + const subKey = { + toString() { + return `${key}[${i}]`; + } + }; + for (; i < val.length; i++) { + const v = val[i]; + callback(node, subKey, v); + childValidator(node, subKey, v); } } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function buffer() { - this.buffer() + validator.each = callback; + return validator; +} +function assertOneOf(...values) { + function validate(node, key, val) { + if (!values.includes(val)) { + throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`); + } } - - /** - * Copy a point-like value. - * - * @param {Point} d - * Point-like value. - * @returns {Point} - * unist point. - */ - function point(d) { - return {line: d.line, column: d.column, offset: d.offset} + validate.oneOf = values; + return validate; +} +const allExpandedTypes = exports.allExpandedTypes = []; +function assertNodeType(...types) { + const expandedTypes = new Set(); + allExpandedTypes.push({ + types, + set: expandedTypes + }); + function validate(node, key, val) { + const valType = val == null ? void 0 : val.type; + if (valType != null) { + if (expandedTypes.has(valType)) { + (0, _validate.validateChild)(node, key, val); + return; + } + if (valType === "Placeholder") { + for (const type of types) { + if ((0, _is.default)(type, val)) { + (0, _validate.validateChild)(node, key, val); + return; + } + } + } + } + throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(valType)}`); } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function data(token) { - this.config.enter.data.call(this, token) - this.config.exit.data.call(this, token) + validate.oneOfNodeTypes = types; + return validate; +} +function assertNodeOrValueType(...types) { + function validate(node, key, val) { + const primitiveType = getType(val); + for (const type of types) { + if (primitiveType === type || (0, _is.default)(type, val)) { + (0, _validate.validateChild)(node, key, val); + return; + } + } + throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`); } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function enterMdxJsxTag(token) { - /** @type {Tag} */ - const tag = { - name: undefined, - attributes: [], - close: false, - selfClosing: false, - start: token.start, - end: token.end + validate.oneOfNodeOrValueTypes = types; + return validate; +} +function assertValueType(type) { + function validate(node, key, val) { + if (getType(val) === type) { + return; } - if (!this.data.mdxJsxTagStack) this.data.mdxJsxTagStack = [] - this.data.mdxJsxTag = tag - this.buffer() + throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`); } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function enterMdxJsxTagClosingMarker(token) { - const stack = this.data.mdxJsxTagStack - default_ok(stack, 'expected `mdxJsxTagStack`') - - if (stack.length === 0) { - throw new VFileMessage( - 'Unexpected closing slash `/` in tag, expected an open tag first', - {start: token.start, end: token.end}, - 'mdast-util-mdx-jsx:unexpected-closing-slash' - ) + validate.type = type; + return validate; +} +function assertShape(shape) { + const keys = Object.keys(shape); + function validate(node, key, val) { + const errors = []; + for (const property of keys) { + try { + (0, _validate.validateField)(node, property, val[property], shape[property]); + } catch (error) { + if (error instanceof TypeError) { + errors.push(error.message); + continue; + } + throw error; + } + } + if (errors.length) { + throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`); } } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function enterMdxJsxTagAnyAttribute(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - - if (tag.close) { - throw new VFileMessage( - 'Unexpected attribute in closing tag, expected the end of the tag', - {start: token.start, end: token.end}, - 'mdast-util-mdx-jsx:unexpected-attribute' - ) + validate.shapeOf = shape; + return validate; +} +function assertOptionalChainStart() { + function validate(node) { + var _current; + let current = node; + while (node) { + const { + type + } = current; + if (type === "OptionalCallExpression") { + if (current.optional) return; + current = current.callee; + continue; + } + if (type === "OptionalMemberExpression") { + if (current.optional) return; + current = current.object; + continue; + } + break; } + throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`); } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function enterMdxJsxTagSelfClosingMarker(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - - if (tag.close) { - throw new VFileMessage( - 'Unexpected self-closing slash `/` in closing tag, expected the end of the tag', - {start: token.start, end: token.end}, - 'mdast-util-mdx-jsx:unexpected-self-closing-slash' - ) + return validate; +} +function chain(...fns) { + function validate(...args) { + for (const fn of fns) { + fn(...args); } } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagClosingMarker() { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - tag.close = true + validate.chainOf = fns; + if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) { + throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`); } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagNamePrimary(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - tag.name = this.sliceSerialize(token) + return validate; +} +const validTypeOpts = new Set(["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"]); +const validFieldKeys = new Set(["default", "optional", "deprecated", "validate"]); +const store = {}; +function defineAliasedType(...aliases) { + return (type, opts = {}) => { + let defined = opts.aliases; + if (!defined) { + var _store$opts$inherits$; + if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice(); + defined != null ? defined : defined = []; + opts.aliases = defined; + } + const additional = aliases.filter(a => !defined.includes(a)); + defined.unshift(...additional); + defineType(type, opts); + }; +} +function defineType(type, opts = {}) { + const inherits = opts.inherits && store[opts.inherits] || {}; + let fields = opts.fields; + if (!fields) { + fields = {}; + if (inherits.fields) { + const keys = Object.getOwnPropertyNames(inherits.fields); + for (const key of keys) { + const field = inherits.fields[key]; + const def = field.default; + if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") { + throw new Error("field defaults can only be primitives or empty arrays currently"); + } + fields[key] = { + default: Array.isArray(def) ? [] : def, + optional: field.optional, + deprecated: field.deprecated, + validate: field.validate + }; + } + } } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagNameMember(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - tag.name += '.' + this.sliceSerialize(token) + const visitor = opts.visitor || inherits.visitor || []; + const aliases = opts.aliases || inherits.aliases || []; + const builder = opts.builder || inherits.builder || opts.visitor || []; + for (const k of Object.keys(opts)) { + if (!validTypeOpts.has(k)) { + throw new Error(`Unknown type option "${k}" on ${type}`); + } } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagNameLocal(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - tag.name += ':' + this.sliceSerialize(token) + if (opts.deprecatedAlias) { + DEPRECATED_KEYS[opts.deprecatedAlias] = type; } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function enterMdxJsxTagAttribute(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - enterMdxJsxTagAnyAttribute.call(this, token) - tag.attributes.push({ - type: 'mdxJsxAttribute', - name: '', - value: null, - position: { - start: point(token.start), - // @ts-expect-error: `end` will be patched later. - end: undefined - } - }) + for (const key of visitor.concat(builder)) { + fields[key] = fields[key] || {}; } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function enterMdxJsxTagExpressionAttribute(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - enterMdxJsxTagAnyAttribute.call(this, token) - tag.attributes.push({ - type: 'mdxJsxExpressionAttribute', - value: '', - position: { - start: point(token.start), - // @ts-expect-error: `end` will be patched later. - end: undefined + for (const key of Object.keys(fields)) { + const field = fields[key]; + if (field.default !== undefined && !builder.includes(key)) { + field.optional = true; + } + if (field.default === undefined) { + field.default = null; + } else if (!field.validate && field.default != null) { + field.validate = assertValueType(getType(field.default)); + } + for (const k of Object.keys(field)) { + if (!validFieldKeys.has(k)) { + throw new Error(`Unknown field key "${k}" on ${type}.${key}`); } - }) - this.buffer() - } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagExpressionAttribute(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - const tail = tag.attributes[tag.attributes.length - 1] - default_ok(tail.type === 'mdxJsxExpressionAttribute') - const estree = token.estree - - tail.value = this.resume() - default_ok(tail.position !== undefined) - tail.position.end = point(token.end) - - if (estree) { - tail.data = {estree} } } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagAttributeNamePrimary(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - const node = tag.attributes[tag.attributes.length - 1] - default_ok(node.type === 'mdxJsxAttribute') - node.name = this.sliceSerialize(token) - default_ok(node.position !== undefined) - node.position.end = point(token.end) + VISITOR_KEYS[type] = opts.visitor = visitor; + BUILDER_KEYS[type] = opts.builder = builder; + NODE_FIELDS[type] = opts.fields = fields; + ALIAS_KEYS[type] = opts.aliases = aliases; + aliases.forEach(alias => { + FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || []; + FLIPPED_ALIAS_KEYS[alias].push(type); + }); + if (opts.validate) { + NODE_PARENT_VALIDATIONS[type] = opts.validate; } + store[type] = opts; +} - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagAttributeNameLocal(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - const node = tag.attributes[tag.attributes.length - 1] - default_ok(node.type === 'mdxJsxAttribute') - node.name += ':' + this.sliceSerialize(token) - default_ok(node.position !== undefined) - node.position.end = point(token.end) - } +//# sourceMappingURL=utils.js.map - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagAttributeValueLiteral(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - const node = tag.attributes[tag.attributes.length - 1] - node.value = parseEntities(this.resume(), {nonTerminated: false}) - default_ok(node.position !== undefined) - node.position.end = point(token.end) - } - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagAttributeValueExpression(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - const tail = tag.attributes[tag.attributes.length - 1] - default_ok(tail.type === 'mdxJsxAttribute') - /** @type {MdxJsxAttributeValueExpression} */ - const node = {type: 'mdxJsxAttributeValueExpression', value: this.resume()} - const estree = token.estree +/***/ }), - if (estree) { - node.data = {estree} - } +/***/ 16535: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - tail.value = node - default_ok(tail.position !== undefined) - tail.position.end = point(token.end) - } +"use strict"; - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTagSelfClosingMarker() { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - tag.selfClosing = true +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +var _exportNames = { + react: true, + assertNode: true, + createTypeAnnotationBasedOnTypeof: true, + createUnionTypeAnnotation: true, + createFlowUnionType: true, + createTSUnionType: true, + cloneNode: true, + clone: true, + cloneDeep: true, + cloneDeepWithoutLoc: true, + cloneWithoutLoc: true, + addComment: true, + addComments: true, + inheritInnerComments: true, + inheritLeadingComments: true, + inheritsComments: true, + inheritTrailingComments: true, + removeComments: true, + ensureBlock: true, + toBindingIdentifierName: true, + toBlock: true, + toComputedKey: true, + toExpression: true, + toIdentifier: true, + toKeyAlias: true, + toStatement: true, + valueToNode: true, + appendToMemberExpression: true, + inherits: true, + prependToMemberExpression: true, + removeProperties: true, + removePropertiesDeep: true, + removeTypeDuplicates: true, + getAssignmentIdentifiers: true, + getBindingIdentifiers: true, + getOuterBindingIdentifiers: true, + getFunctionName: true, + traverse: true, + traverseFast: true, + shallowEqual: true, + is: true, + isBinding: true, + isBlockScoped: true, + isImmutable: true, + isLet: true, + isNode: true, + isNodesEquivalent: true, + isPlaceholderType: true, + isReferenced: true, + isScope: true, + isSpecifierDefault: true, + isType: true, + isValidES3Identifier: true, + isValidIdentifier: true, + isVar: true, + matchesPattern: true, + validate: true, + buildMatchMemberExpression: true, + __internal__deprecationWarning: true +}; +Object.defineProperty(exports, "__internal__deprecationWarning", ({ + enumerable: true, + get: function () { + return _deprecationWarning.default; + } +})); +Object.defineProperty(exports, "addComment", ({ + enumerable: true, + get: function () { + return _addComment.default; + } +})); +Object.defineProperty(exports, "addComments", ({ + enumerable: true, + get: function () { + return _addComments.default; + } +})); +Object.defineProperty(exports, "appendToMemberExpression", ({ + enumerable: true, + get: function () { + return _appendToMemberExpression.default; + } +})); +Object.defineProperty(exports, "assertNode", ({ + enumerable: true, + get: function () { + return _assertNode.default; + } +})); +Object.defineProperty(exports, "buildMatchMemberExpression", ({ + enumerable: true, + get: function () { + return _buildMatchMemberExpression.default; + } +})); +Object.defineProperty(exports, "clone", ({ + enumerable: true, + get: function () { + return _clone.default; + } +})); +Object.defineProperty(exports, "cloneDeep", ({ + enumerable: true, + get: function () { + return _cloneDeep.default; + } +})); +Object.defineProperty(exports, "cloneDeepWithoutLoc", ({ + enumerable: true, + get: function () { + return _cloneDeepWithoutLoc.default; + } +})); +Object.defineProperty(exports, "cloneNode", ({ + enumerable: true, + get: function () { + return _cloneNode.default; + } +})); +Object.defineProperty(exports, "cloneWithoutLoc", ({ + enumerable: true, + get: function () { + return _cloneWithoutLoc.default; + } +})); +Object.defineProperty(exports, "createFlowUnionType", ({ + enumerable: true, + get: function () { + return _createFlowUnionType.default; + } +})); +Object.defineProperty(exports, "createTSUnionType", ({ + enumerable: true, + get: function () { + return _createTSUnionType.default; + } +})); +Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", ({ + enumerable: true, + get: function () { + return _createTypeAnnotationBasedOnTypeof.default; + } +})); +Object.defineProperty(exports, "createUnionTypeAnnotation", ({ + enumerable: true, + get: function () { + return _createFlowUnionType.default; + } +})); +Object.defineProperty(exports, "ensureBlock", ({ + enumerable: true, + get: function () { + return _ensureBlock.default; + } +})); +Object.defineProperty(exports, "getAssignmentIdentifiers", ({ + enumerable: true, + get: function () { + return _getAssignmentIdentifiers.default; + } +})); +Object.defineProperty(exports, "getBindingIdentifiers", ({ + enumerable: true, + get: function () { + return _getBindingIdentifiers.default; + } +})); +Object.defineProperty(exports, "getFunctionName", ({ + enumerable: true, + get: function () { + return _getFunctionName.default; + } +})); +Object.defineProperty(exports, "getOuterBindingIdentifiers", ({ + enumerable: true, + get: function () { + return _getOuterBindingIdentifiers.default; + } +})); +Object.defineProperty(exports, "inheritInnerComments", ({ + enumerable: true, + get: function () { + return _inheritInnerComments.default; + } +})); +Object.defineProperty(exports, "inheritLeadingComments", ({ + enumerable: true, + get: function () { + return _inheritLeadingComments.default; + } +})); +Object.defineProperty(exports, "inheritTrailingComments", ({ + enumerable: true, + get: function () { + return _inheritTrailingComments.default; + } +})); +Object.defineProperty(exports, "inherits", ({ + enumerable: true, + get: function () { + return _inherits.default; + } +})); +Object.defineProperty(exports, "inheritsComments", ({ + enumerable: true, + get: function () { + return _inheritsComments.default; + } +})); +Object.defineProperty(exports, "is", ({ + enumerable: true, + get: function () { + return _is.default; + } +})); +Object.defineProperty(exports, "isBinding", ({ + enumerable: true, + get: function () { + return _isBinding.default; + } +})); +Object.defineProperty(exports, "isBlockScoped", ({ + enumerable: true, + get: function () { + return _isBlockScoped.default; + } +})); +Object.defineProperty(exports, "isImmutable", ({ + enumerable: true, + get: function () { + return _isImmutable.default; + } +})); +Object.defineProperty(exports, "isLet", ({ + enumerable: true, + get: function () { + return _isLet.default; + } +})); +Object.defineProperty(exports, "isNode", ({ + enumerable: true, + get: function () { + return _isNode.default; + } +})); +Object.defineProperty(exports, "isNodesEquivalent", ({ + enumerable: true, + get: function () { + return _isNodesEquivalent.default; + } +})); +Object.defineProperty(exports, "isPlaceholderType", ({ + enumerable: true, + get: function () { + return _isPlaceholderType.default; + } +})); +Object.defineProperty(exports, "isReferenced", ({ + enumerable: true, + get: function () { + return _isReferenced.default; + } +})); +Object.defineProperty(exports, "isScope", ({ + enumerable: true, + get: function () { + return _isScope.default; + } +})); +Object.defineProperty(exports, "isSpecifierDefault", ({ + enumerable: true, + get: function () { + return _isSpecifierDefault.default; + } +})); +Object.defineProperty(exports, "isType", ({ + enumerable: true, + get: function () { + return _isType.default; + } +})); +Object.defineProperty(exports, "isValidES3Identifier", ({ + enumerable: true, + get: function () { + return _isValidES3Identifier.default; + } +})); +Object.defineProperty(exports, "isValidIdentifier", ({ + enumerable: true, + get: function () { + return _isValidIdentifier.default; + } +})); +Object.defineProperty(exports, "isVar", ({ + enumerable: true, + get: function () { + return _isVar.default; + } +})); +Object.defineProperty(exports, "matchesPattern", ({ + enumerable: true, + get: function () { + return _matchesPattern.default; + } +})); +Object.defineProperty(exports, "prependToMemberExpression", ({ + enumerable: true, + get: function () { + return _prependToMemberExpression.default; + } +})); +exports.react = void 0; +Object.defineProperty(exports, "removeComments", ({ + enumerable: true, + get: function () { + return _removeComments.default; + } +})); +Object.defineProperty(exports, "removeProperties", ({ + enumerable: true, + get: function () { + return _removeProperties.default; + } +})); +Object.defineProperty(exports, "removePropertiesDeep", ({ + enumerable: true, + get: function () { + return _removePropertiesDeep.default; + } +})); +Object.defineProperty(exports, "removeTypeDuplicates", ({ + enumerable: true, + get: function () { + return _removeTypeDuplicates.default; + } +})); +Object.defineProperty(exports, "shallowEqual", ({ + enumerable: true, + get: function () { + return _shallowEqual.default; + } +})); +Object.defineProperty(exports, "toBindingIdentifierName", ({ + enumerable: true, + get: function () { + return _toBindingIdentifierName.default; + } +})); +Object.defineProperty(exports, "toBlock", ({ + enumerable: true, + get: function () { + return _toBlock.default; + } +})); +Object.defineProperty(exports, "toComputedKey", ({ + enumerable: true, + get: function () { + return _toComputedKey.default; + } +})); +Object.defineProperty(exports, "toExpression", ({ + enumerable: true, + get: function () { + return _toExpression.default; } - - /** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ - function exitMdxJsxTag(token) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - const stack = this.data.mdxJsxTagStack - default_ok(stack, 'expected `mdxJsxTagStack`') - const tail = stack[stack.length - 1] - - if (tag.close && tail.name !== tag.name) { - throw new VFileMessage( - 'Unexpected closing tag `' + - serializeAbbreviatedTag(tag) + - '`, expected corresponding closing tag for `' + - serializeAbbreviatedTag(tail) + - '` (' + - stringifyPosition(tail) + - ')', - {start: token.start, end: token.end}, - 'mdast-util-mdx-jsx:end-tag-mismatch' - ) - } - - // End of a tag, so drop the buffer. - this.resume() - - if (tag.close) { - stack.pop() - } else { - this.enter( - { - type: - token.type === 'mdxJsxTextTag' - ? 'mdxJsxTextElement' - : 'mdxJsxFlowElement', - name: tag.name || null, - attributes: tag.attributes, - children: [] - }, - token, - onErrorRightIsTag - ) - } - - if (tag.selfClosing || tag.close) { - this.exit(token, onErrorLeftIsTag) - } else { - stack.push(tag) - } +})); +Object.defineProperty(exports, "toIdentifier", ({ + enumerable: true, + get: function () { + return _toIdentifier.default; } - - /** - * @this {CompileContext} - * @type {OnEnterError} - */ - function onErrorRightIsTag(closing, open) { - const stack = this.data.mdxJsxTagStack - default_ok(stack, 'expected `mdxJsxTagStack`') - const tag = stack[stack.length - 1] - default_ok(tag, 'expected `mdxJsxTag`') - const place = closing ? ' before the end of `' + closing.type + '`' : '' - const position = closing - ? {start: closing.start, end: closing.end} - : undefined - - throw new VFileMessage( - 'Expected a closing tag for `' + - serializeAbbreviatedTag(tag) + - '` (' + - stringifyPosition({start: open.start, end: open.end}) + - ')' + - place, - position, - 'mdast-util-mdx-jsx:end-tag-mismatch' - ) +})); +Object.defineProperty(exports, "toKeyAlias", ({ + enumerable: true, + get: function () { + return _toKeyAlias.default; } - - /** - * @this {CompileContext} - * @type {OnExitError} - */ - function onErrorLeftIsTag(a, b) { - const tag = this.data.mdxJsxTag - default_ok(tag, 'expected `mdxJsxTag`') - - throw new VFileMessage( - 'Expected the closing tag `' + - serializeAbbreviatedTag(tag) + - '` either after the end of `' + - b.type + - '` (' + - stringifyPosition(b.end) + - ') or another opening tag after the start of `' + - b.type + - '` (' + - stringifyPosition(b.start) + - ')', - {start: a.start, end: a.end}, - 'mdast-util-mdx-jsx:end-tag-mismatch' - ) +})); +Object.defineProperty(exports, "toStatement", ({ + enumerable: true, + get: function () { + return _toStatement.default; } - - /** - * Serialize a tag, excluding attributes. - * `self-closing` is not supported, because we don’t need it yet. - * - * @param {Tag} tag - * @returns {string} - */ - function serializeAbbreviatedTag(tag) { - return '<' + (tag.close ? '/' : '') + (tag.name || '') + '>' +})); +Object.defineProperty(exports, "traverse", ({ + enumerable: true, + get: function () { + return _traverse.default; } -} - -/** - * Create an extension for `mdast-util-to-markdown` to enable MDX JSX. - * - * This extension configures `mdast-util-to-markdown` with - * `options.fences: true` and `options.resourceLink: true` too, do not - * overwrite them! - * - * @param {ToMarkdownOptions | null | undefined} [options] - * Configuration (optional). - * @returns {ToMarkdownExtension} - * Extension for `mdast-util-to-markdown` to enable MDX JSX. - */ -function mdxJsxToMarkdown(options) { - const options_ = options || {} - const quote = options_.quote || '"' - const quoteSmart = options_.quoteSmart || false - const tightSelfClosing = options_.tightSelfClosing || false - const printWidth = options_.printWidth || Number.POSITIVE_INFINITY - const alternative = quote === '"' ? "'" : '"' - - if (quote !== '"' && quote !== "'") { - throw new Error( - 'Cannot serialize attribute values with `' + - quote + - '` for `options.quote`, expected `"`, or `\'`' - ) +})); +Object.defineProperty(exports, "traverseFast", ({ + enumerable: true, + get: function () { + return _traverseFast.default; } - - mdxElement.peek = peekElement - - return { - handlers: { - mdxJsxFlowElement: mdxElement, - mdxJsxTextElement: mdxElement - }, - unsafe: [ - {character: '<', inConstruct: ['phrasing']}, - {atBreak: true, character: '<'} - ], - // Always generate fenced code (never indented code). - fences: true, - // Always generate links with resources (never autolinks). - resourceLink: true +})); +Object.defineProperty(exports, "validate", ({ + enumerable: true, + get: function () { + return _validate.default; } - - /** - * @type {ToMarkdownHandle} - * @param {MdxJsxFlowElement | MdxJsxTextElement} node - */ - // eslint-disable-next-line complexity - function mdxElement(node, _, state, info) { - const flow = node.type === 'mdxJsxFlowElement' - const selfClosing = node.name - ? !node.children || node.children.length === 0 - : false - const depth = inferDepth(state) - const currentIndent = createIndent(depth) - const trackerOneLine = state.createTracker(info) - const trackerMultiLine = state.createTracker(info) - /** @type {Array<string>} */ - const serializedAttributes = [] - const prefix = (flow ? currentIndent : '') + '<' + (node.name || '') - const exit = state.enter(node.type) - - trackerOneLine.move(prefix) - trackerMultiLine.move(prefix) - - // None. - if (node.attributes && node.attributes.length > 0) { - if (!node.name) { - throw new Error('Cannot serialize fragment w/ attributes') - } - - let index = -1 - while (++index < node.attributes.length) { - const attribute = node.attributes[index] - /** @type {string} */ - let result - - if (attribute.type === 'mdxJsxExpressionAttribute') { - result = '{' + (attribute.value || '') + '}' - } else { - if (!attribute.name) { - throw new Error('Cannot serialize attribute w/o name') - } - - const value = attribute.value - const left = attribute.name - /** @type {string} */ - let right = '' - - if (value === null || value === undefined) { - // Empty. - } else if (typeof value === 'object') { - right = '{' + (value.value || '') + '}' - } else { - // If the alternative is less common than `quote`, switch. - const appliedQuote = - quoteSmart && ccount(value, quote) > ccount(value, alternative) - ? alternative - : quote - right = - appliedQuote + - stringifyEntitiesLight(value, {subset: [appliedQuote]}) + - appliedQuote - } - - result = left + (right ? '=' : '') + right - } - - serializedAttributes.push(result) - } +})); +Object.defineProperty(exports, "valueToNode", ({ + enumerable: true, + get: function () { + return _valueToNode.default; + } +})); +var _isReactComponent = __nccwpck_require__(24513); +var _isCompatTag = __nccwpck_require__(20817); +var _buildChildren = __nccwpck_require__(93415); +var _assertNode = __nccwpck_require__(41737); +var _index = __nccwpck_require__(98345); +Object.keys(_index).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _index[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _index[key]; } - - let attributesOnTheirOwnLine = false - const attributesOnOneLine = serializedAttributes.join(' ') - - if ( - // Block: - flow && - // Including a line ending (expressions). - (/\r?\n|\r/.test(attributesOnOneLine) || - // Current position (including `<tag`). - trackerOneLine.current().now.column + - // -1 because columns, +1 for ` ` before attributes. - // Attributes joined by spaces. - attributesOnOneLine.length + - // ` />`. - (selfClosing ? (tightSelfClosing ? 2 : 3) : 1) > - printWidth) - ) { - attributesOnTheirOwnLine = true + }); +}); +var _createTypeAnnotationBasedOnTypeof = __nccwpck_require__(9197); +var _createFlowUnionType = __nccwpck_require__(58806); +var _createTSUnionType = __nccwpck_require__(15766); +var _productions = __nccwpck_require__(38504); +Object.keys(_productions).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _productions[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _productions[key]; } - - let tracker = trackerOneLine - let value = prefix - - if (attributesOnTheirOwnLine) { - tracker = trackerMultiLine - - let index = -1 - - while (++index < serializedAttributes.length) { - // Only indent first line of of attributes, we can’t indent attribute - // values. - serializedAttributes[index] = - currentIndent + indent + serializedAttributes[index] - } - - value += tracker.move( - '\n' + serializedAttributes.join('\n') + '\n' + currentIndent - ) - } else if (attributesOnOneLine) { - value += tracker.move(' ' + attributesOnOneLine) + }); +}); +var _index2 = __nccwpck_require__(90670); +Object.keys(_index2).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _index2[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _index2[key]; } - - if (selfClosing) { - value += tracker.move( - (tightSelfClosing || attributesOnTheirOwnLine ? '' : ' ') + '/' - ) + }); +}); +var _cloneNode = __nccwpck_require__(89260); +var _clone = __nccwpck_require__(59260); +var _cloneDeep = __nccwpck_require__(45922); +var _cloneDeepWithoutLoc = __nccwpck_require__(37992); +var _cloneWithoutLoc = __nccwpck_require__(19258); +var _addComment = __nccwpck_require__(70704); +var _addComments = __nccwpck_require__(21071); +var _inheritInnerComments = __nccwpck_require__(40731); +var _inheritLeadingComments = __nccwpck_require__(7725); +var _inheritsComments = __nccwpck_require__(32078); +var _inheritTrailingComments = __nccwpck_require__(23491); +var _removeComments = __nccwpck_require__(84066); +var _index3 = __nccwpck_require__(12359); +Object.keys(_index3).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _index3[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _index3[key]; } - - value += tracker.move('>') - - if (node.children && node.children.length > 0) { - if (node.type === 'mdxJsxTextElement') { - value += tracker.move( - state.containerPhrasing(node, { - ...tracker.current(), - before: '>', - after: '<' - }) - ) - } else { - tracker.shift(2) - value += tracker.move('\n') - value += tracker.move(lib_containerFlow(node, state, tracker.current())) - value += tracker.move('\n') - } + }); +}); +var _index4 = __nccwpck_require__(17945); +Object.keys(_index4).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _index4[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _index4[key]; } - - if (!selfClosing) { - value += tracker.move( - (flow ? currentIndent : '') + '</' + (node.name || '') + '>' - ) + }); +}); +var _ensureBlock = __nccwpck_require__(77046); +var _toBindingIdentifierName = __nccwpck_require__(19687); +var _toBlock = __nccwpck_require__(59735); +var _toComputedKey = __nccwpck_require__(49480); +var _toExpression = __nccwpck_require__(36490); +var _toIdentifier = __nccwpck_require__(59451); +var _toKeyAlias = __nccwpck_require__(23381); +var _toStatement = __nccwpck_require__(82635); +var _valueToNode = __nccwpck_require__(20021); +var _index5 = __nccwpck_require__(40910); +Object.keys(_index5).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _index5[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _index5[key]; } - - exit() - return value - } -} - -// Modified copy of: -// <https://github.com/syntax-tree/mdast-util-to-markdown/blob/a381cbc/lib/util/container-flow.js>. -// -// To do: add `indent` support to `mdast-util-to-markdown`. -// As indents are only used for JSX, it’s fine for now, but perhaps better -// there. -/** - * @param {MdxJsxFlowElement} parent - * Parent of flow nodes. - * @param {State} state - * Info passed around about the current state. - * @param {ReturnType<Tracker['current']>} info - * Info on where we are in the document we are generating. - * @returns {string} - * Serialized children, joined by (blank) lines. - */ -function lib_containerFlow(parent, state, info) { - const indexStack = state.indexStack - const children = parent.children - const tracker = state.createTracker(info) - const currentIndent = createIndent(inferDepth(state)) - /** @type {Array<string>} */ - const results = [] - let index = -1 - - indexStack.push(-1) - - while (++index < children.length) { - const child = children[index] - - indexStack[indexStack.length - 1] = index - - const childInfo = {before: '\n', after: '\n', ...tracker.current()} - - const result = state.handle(child, parent, state, childInfo) - - const serializedChild = - child.type === 'mdxJsxFlowElement' - ? result - : state.indentLines(result, function (line, _, blank) { - return (blank ? '' : currentIndent) + line - }) - - results.push(tracker.move(serializedChild)) - - if (child.type !== 'list') { - state.bulletLastUsed = undefined + }); +}); +var _appendToMemberExpression = __nccwpck_require__(4948); +var _inherits = __nccwpck_require__(40257); +var _prependToMemberExpression = __nccwpck_require__(78564); +var _removeProperties = __nccwpck_require__(6656); +var _removePropertiesDeep = __nccwpck_require__(55902); +var _removeTypeDuplicates = __nccwpck_require__(41034); +var _getAssignmentIdentifiers = __nccwpck_require__(21228); +var _getBindingIdentifiers = __nccwpck_require__(45300); +var _getOuterBindingIdentifiers = __nccwpck_require__(46815); +var _getFunctionName = __nccwpck_require__(48836); +var _traverse = __nccwpck_require__(6878); +Object.keys(_traverse).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _traverse[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _traverse[key]; } - - if (index < children.length - 1) { - results.push(tracker.move('\n\n')) + }); +}); +var _traverseFast = __nccwpck_require__(47060); +var _shallowEqual = __nccwpck_require__(56085); +var _is = __nccwpck_require__(20051); +var _isBinding = __nccwpck_require__(73998); +var _isBlockScoped = __nccwpck_require__(942); +var _isImmutable = __nccwpck_require__(42343); +var _isLet = __nccwpck_require__(57674); +var _isNode = __nccwpck_require__(84503); +var _isNodesEquivalent = __nccwpck_require__(8338); +var _isPlaceholderType = __nccwpck_require__(49410); +var _isReferenced = __nccwpck_require__(89508); +var _isScope = __nccwpck_require__(33583); +var _isSpecifierDefault = __nccwpck_require__(64394); +var _isType = __nccwpck_require__(53547); +var _isValidES3Identifier = __nccwpck_require__(40267); +var _isValidIdentifier = __nccwpck_require__(66030); +var _isVar = __nccwpck_require__(21566); +var _matchesPattern = __nccwpck_require__(47814); +var _validate = __nccwpck_require__(71581); +var _buildMatchMemberExpression = __nccwpck_require__(77334); +var _index6 = __nccwpck_require__(40741); +Object.keys(_index6).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _index6[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _index6[key]; } - } - - indexStack.pop() - - return results.join('') -} - -/** - * @param {State} state - * @returns {number} - */ -function inferDepth(state) { - let depth = 0 - let index = state.stack.length - - while (--index > -1) { - const name = state.stack[index] - - if (name === 'blockquote' || name === 'listItem') break - if (name === 'mdxJsxFlowElement') depth++ - } - - return depth -} - -/** - * @param {number} depth - * @returns {string} - */ -function createIndent(depth) { - return indent.repeat(depth) -} - -/** - * @type {ToMarkdownHandle} - */ -function peekElement() { - return '<' -} - -;// CONCATENATED MODULE: ./node_modules/mdast-util-mdxjs-esm/lib/index.js -/** - * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext - * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension - * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle - * - * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle - * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension - * - * @typedef {import('../index.js').MdxjsEsm} MdxjsEsm - */ - -// To do: next major: expose functions. - - -/** - * Create an extension for `mdast-util-from-markdown` to enable MDX.js ESM in - * markdown. - * - * When using the micromark syntax extension with `addResult`, nodes will have - * a `data.estree` field set to an ESTree [`Program`][program] node. - * - * @returns {FromMarkdownExtension} - * Extension for `mdast-util-from-markdown` to enable MDX.js ESM. - */ -function mdxjsEsmFromMarkdown() { - return { - enter: {mdxjsEsm: enterMdxjsEsm}, - exit: {mdxjsEsm: exitMdxjsEsm, mdxjsEsmData: exitMdxjsEsmData} - } -} - -/** - * Create an extension for `mdast-util-to-markdown` to enable MDX.js ESM in - * markdown. - * - * @returns {ToMarkdownExtension} - * Extension for `mdast-util-to-markdown` to enable MDX.js ESM. - */ -function mdxjsEsmToMarkdown() { - return {handlers: {mdxjsEsm: handleMdxjsEsm}} + }); +}); +var _deprecationWarning = __nccwpck_require__(14711); +var _toSequenceExpression = __nccwpck_require__(403); +const react = exports.react = { + isReactComponent: _isReactComponent.default, + isCompatTag: _isCompatTag.default, + buildChildren: _buildChildren.default +}; +{ + exports.toSequenceExpression = _toSequenceExpression.default; } - -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function enterMdxjsEsm(token) { - this.enter({type: 'mdxjsEsm', value: ''}, token) - this.buffer() // Capture EOLs +if (process.env.BABEL_TYPES_8_BREAKING) { + console.warn("BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!"); } -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function exitMdxjsEsm(token) { - const value = this.resume() - const node = this.stack[this.stack.length - 1] - default_ok(node.type === 'mdxjsEsm') +//# sourceMappingURL=index.js.map - this.exit(token) - const estree = token.estree +/***/ }), - node.value = value +/***/ 4948: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if (estree) { - node.data = {estree} - } -} +"use strict"; -/** - * @this {CompileContext} - * @type {FromMarkdownHandle} - */ -function exitMdxjsEsmData(token) { - this.config.enter.data.call(this, token) - this.config.exit.data.call(this, token) -} -/** - * @type {ToMarkdownHandle} - * @param {MdxjsEsm} node - */ -function handleMdxjsEsm(node) { - return node.value || '' +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = appendToMemberExpression; +var _index = __nccwpck_require__(90670); +function appendToMemberExpression(member, append, computed = false) { + member.object = (0, _index.memberExpression)(member.object, member.property, member.computed); + member.property = append; + member.computed = !!computed; + return member; } -;// CONCATENATED MODULE: ./node_modules/mdast-util-mdx/lib/index.js -/** - * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension - * @typedef {import('mdast-util-mdx-jsx').ToMarkdownOptions} ToMarkdownOptions - * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension - */ +//# sourceMappingURL=appendToMemberExpression.js.map +/***/ }), +/***/ 41034: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +"use strict"; -/** - * Create an extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX, - * expressions). - * - * @returns {Array<FromMarkdownExtension>} - * Extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX, - * expressions). - * - * When using the syntax extensions with `addResult`, ESM and expression - * nodes will have `data.estree` fields set to ESTree `Program` node. - */ -function mdxFromMarkdown() { - return [ - mdxExpressionFromMarkdown(), - mdxJsxFromMarkdown(), - mdxjsEsmFromMarkdown() - ] -} -/** - * Create an extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX, - * expressions). - * - * @param {ToMarkdownOptions | null | undefined} [options] - * Configuration (optional). - * @returns {ToMarkdownExtension} - * Extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX, - * expressions). - */ -function mdxToMarkdown(options) { - return { - extensions: [ - mdxExpressionToMarkdown(), - mdxJsxToMarkdown(options), - mdxjsEsmToMarkdown() - ] +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeTypeDuplicates; +var _index = __nccwpck_require__(40741); +function getQualifiedName(node) { + return (0, _index.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`; +} +function removeTypeDuplicates(nodesIn) { + const nodes = Array.from(nodesIn); + const generics = new Map(); + const bases = new Map(); + const typeGroups = new Set(); + const types = []; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + if (types.includes(node)) { + continue; + } + if ((0, _index.isAnyTypeAnnotation)(node)) { + return [node]; + } + if ((0, _index.isFlowBaseAnnotation)(node)) { + bases.set(node.type, node); + continue; + } + if ((0, _index.isUnionTypeAnnotation)(node)) { + if (!typeGroups.has(node.types)) { + nodes.push(...node.types); + typeGroups.add(node.types); + } + continue; + } + if ((0, _index.isGenericTypeAnnotation)(node)) { + const name = getQualifiedName(node.id); + if (generics.has(name)) { + let existing = generics.get(name); + if (existing.typeParameters) { + if (node.typeParameters) { + existing.typeParameters.params.push(...node.typeParameters.params); + existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params); + } + } else { + existing = node.typeParameters; + } + } else { + generics.set(name, node); + } + continue; + } + types.push(node); } -} - -;// CONCATENATED MODULE: ./node_modules/acorn/dist/acorn.mjs -// This file was generated. Do not modify manually! -var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; - -// This file was generated. Do not modify manually! -var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; - -// This file was generated. Do not modify manually! -var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; - -// This file was generated. Do not modify manually! -var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; - -// These are a run-length and offset encoded representation of the -// >0xffff code points that are a valid part of identifiers. The -// offset starts at 0x10000, and each pair of numbers represents an -// offset to the next range, and then a size of the range. - -// Reserved word lists for various dialects of the language - -var reservedWords = { - 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", - 5: "class enum extends super const export import", - 6: "enum", - strict: "implements interface let package private protected public static yield", - strictBind: "eval arguments" -}; - -// And the keywords - -var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; - -var keywords$1 = { - 5: ecma5AndLessKeywords, - "5module": ecma5AndLessKeywords + " export import", - 6: ecma5AndLessKeywords + " const class extends export import super" -}; - -var keywordRelationalOperator = /^in(stanceof)?$/; - -// ## Character categories - -var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); - -// This has a complexity linear to the value of the code. The -// assumption is that looking up astral identifier characters is -// rare. -function isInAstralSet(code, set) { - var pos = 0x10000; - for (var i = 0; i < set.length; i += 2) { - pos += set[i]; - if (pos > code) { return false } - pos += set[i + 1]; - if (pos >= code) { return true } + for (const [, baseType] of bases) { + types.push(baseType); } - return false -} - -// Test whether a given character code starts an identifier. - -function isIdentifierStart(code, astral) { - if (code < 65) { return code === 36 } - if (code < 91) { return true } - if (code < 97) { return code === 95 } - if (code < 123) { return true } - if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } - if (astral === false) { return false } - return isInAstralSet(code, astralIdentifierStartCodes) -} - -// Test whether a given character is part of an identifier. - -function isIdentifierChar(code, astral) { - if (code < 48) { return code === 36 } - if (code < 58) { return true } - if (code < 65) { return false } - if (code < 91) { return true } - if (code < 97) { return code === 95 } - if (code < 123) { return true } - if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } - if (astral === false) { return false } - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) -} - -// ## Token types - -// The assignment of fine-grained, information-carrying type objects -// allows the tokenizer to store the information it has about a -// token in a way that is very cheap for the parser to look up. - -// All token type variables start with an underscore, to make them -// easy to recognize. - -// The `beforeExpr` property is used to disambiguate between regular -// expressions and divisions. It is set on all token types that can -// be followed by an expression (thus, a slash after them would be a -// regular expression). -// -// The `startsExpr` property is used to check if the token ends a -// `yield` expression. It is set on all token types that either can -// directly start an expression (like a quotation mark) or can -// continue an expression (like the body of a string). -// -// `isLoop` marks a keyword as starting a loop, which is important -// to know when parsing a label, in order to allow or disallow -// continue jumps to that label. - -var TokenType = function TokenType(label, conf) { - if ( conf === void 0 ) conf = {}; - - this.label = label; - this.keyword = conf.keyword; - this.beforeExpr = !!conf.beforeExpr; - this.startsExpr = !!conf.startsExpr; - this.isLoop = !!conf.isLoop; - this.isAssign = !!conf.isAssign; - this.prefix = !!conf.prefix; - this.postfix = !!conf.postfix; - this.binop = conf.binop || null; - this.updateContext = null; -}; - -function binop(name, prec) { - return new TokenType(name, {beforeExpr: true, binop: prec}) -} -var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; - -// Map keyword names to token types. - -var keywords = {}; - -// Succinct definitions of keyword token types -function kw(name, options) { - if ( options === void 0 ) options = {}; - - options.keyword = name; - return keywords[name] = new TokenType(name, options) -} - -var types$1 = { - num: new TokenType("num", startsExpr), - regexp: new TokenType("regexp", startsExpr), - string: new TokenType("string", startsExpr), - name: new TokenType("name", startsExpr), - privateId: new TokenType("privateId", startsExpr), - eof: new TokenType("eof"), - - // Punctuation token types. - bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), - bracketR: new TokenType("]"), - braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), - braceR: new TokenType("}"), - parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), - parenR: new TokenType(")"), - comma: new TokenType(",", beforeExpr), - semi: new TokenType(";", beforeExpr), - colon: new TokenType(":", beforeExpr), - dot: new TokenType("."), - question: new TokenType("?", beforeExpr), - questionDot: new TokenType("?."), - arrow: new TokenType("=>", beforeExpr), - template: new TokenType("template"), - invalidTemplate: new TokenType("invalidTemplate"), - ellipsis: new TokenType("...", beforeExpr), - backQuote: new TokenType("`", startsExpr), - dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), - - // Operators. These carry several kinds of properties to help the - // parser use them properly (the presence of these properties is - // what categorizes them as operators). - // - // `binop`, when present, specifies that this operator is a binary - // operator, and will refer to its precedence. - // - // `prefix` and `postfix` mark the operator as a prefix or postfix - // unary operator. - // - // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as - // binary operators with a very low precedence, that should result - // in AssignmentExpression nodes. - - eq: new TokenType("=", {beforeExpr: true, isAssign: true}), - assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), - incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), - prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), - logicalOR: binop("||", 1), - logicalAND: binop("&&", 2), - bitwiseOR: binop("|", 3), - bitwiseXOR: binop("^", 4), - bitwiseAND: binop("&", 5), - equality: binop("==/!=/===/!==", 6), - relational: binop("</>/<=/>=", 7), - bitShift: binop("<</>>/>>>", 8), - plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), - modulo: binop("%", 10), - star: binop("*", 10), - slash: binop("/", 10), - starstar: new TokenType("**", {beforeExpr: true}), - coalesce: binop("??", 1), - - // Keyword token types. - _break: kw("break"), - _case: kw("case", beforeExpr), - _catch: kw("catch"), - _continue: kw("continue"), - _debugger: kw("debugger"), - _default: kw("default", beforeExpr), - _do: kw("do", {isLoop: true, beforeExpr: true}), - _else: kw("else", beforeExpr), - _finally: kw("finally"), - _for: kw("for", {isLoop: true}), - _function: kw("function", startsExpr), - _if: kw("if"), - _return: kw("return", beforeExpr), - _switch: kw("switch"), - _throw: kw("throw", beforeExpr), - _try: kw("try"), - _var: kw("var"), - _const: kw("const"), - _while: kw("while", {isLoop: true}), - _with: kw("with"), - _new: kw("new", {beforeExpr: true, startsExpr: true}), - _this: kw("this", startsExpr), - _super: kw("super", startsExpr), - _class: kw("class", startsExpr), - _extends: kw("extends", beforeExpr), - _export: kw("export"), - _import: kw("import", startsExpr), - _null: kw("null", startsExpr), - _true: kw("true", startsExpr), - _false: kw("false", startsExpr), - _in: kw("in", {beforeExpr: true, binop: 7}), - _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), - _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), - _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), - _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) -}; - -// Matches a whole line break (where CRLF is considered a single -// line break). Used to count lines. - -var lineBreak = /\r\n?|\n|\u2028|\u2029/; -var lineBreakG = new RegExp(lineBreak.source, "g"); - -function isNewLine(code) { - return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 -} - -function nextLineBreak(code, from, end) { - if ( end === void 0 ) end = code.length; - - for (var i = from; i < end; i++) { - var next = code.charCodeAt(i); - if (isNewLine(next)) - { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } + for (const [, genericName] of generics) { + types.push(genericName); } - return -1 -} - -var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; - -var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; - -var ref = Object.prototype; -var acorn_hasOwnProperty = ref.hasOwnProperty; -var acorn_toString = ref.toString; - -var hasOwn = Object.hasOwn || (function (obj, propName) { return ( - acorn_hasOwnProperty.call(obj, propName) -); }); - -var isArray = Array.isArray || (function (obj) { return ( - acorn_toString.call(obj) === "[object Array]" -); }); - -var regexpCache = Object.create(null); - -function wordsRegexp(words) { - return regexpCache[words] || (regexpCache[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")) -} - -function codePointToString(code) { - // UTF-16 Decoding - if (code <= 0xFFFF) { return String.fromCharCode(code) } - code -= 0x10000; - return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) + return types; } -var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; - -// These are used when `options.locations` is on, for the -// `startLoc` and `endLoc` properties. - -var Position = function Position(line, col) { - this.line = line; - this.column = col; -}; - -Position.prototype.offset = function offset (n) { - return new Position(this.line, this.column + n) -}; - -var SourceLocation = function SourceLocation(p, start, end) { - this.start = start; - this.end = end; - if (p.sourceFile !== null) { this.source = p.sourceFile; } -}; +//# sourceMappingURL=removeTypeDuplicates.js.map -// The `getLineInfo` function is mostly useful when the -// `locations` option is off (for performance reasons) and you -// want to find the line/column position for a given character -// offset. `input` should be the code string that the offset refers -// into. - -function getLineInfo(input, offset) { - for (var line = 1, cur = 0;;) { - var nextBreak = nextLineBreak(input, cur, offset); - if (nextBreak < 0) { return new Position(line, offset - cur) } - ++line; - cur = nextBreak; - } -} - -// A second argument must be given to configure the parser process. -// These options are recognized (only `ecmaVersion` is required): - -var defaultOptions = { - // `ecmaVersion` indicates the ECMAScript version to parse. Must be - // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 - // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` - // (the latest version the library supports). This influences - // support for strict mode, the set of reserved words, and support - // for new syntax features. - ecmaVersion: null, - // `sourceType` indicates the mode the code should be parsed in. - // Can be either `"script"` or `"module"`. This influences global - // strict mode and parsing of `import` and `export` declarations. - sourceType: "script", - // `onInsertedSemicolon` can be a callback that will be called when - // a semicolon is automatically inserted. It will be passed the - // position of the inserted semicolon as an offset, and if - // `locations` is enabled, it is given the location as a `{line, - // column}` object as second argument. - onInsertedSemicolon: null, - // `onTrailingComma` is similar to `onInsertedSemicolon`, but for - // trailing commas. - onTrailingComma: null, - // By default, reserved words are only enforced if ecmaVersion >= 5. - // Set `allowReserved` to a boolean value to explicitly turn this on - // an off. When this option has the value "never", reserved words - // and keywords can also not be used as property names. - allowReserved: null, - // When enabled, a return at the top level is not considered an - // error. - allowReturnOutsideFunction: false, - // When enabled, import/export statements are not constrained to - // appearing at the top of the program, and an import.meta expression - // in a script isn't considered an error. - allowImportExportEverywhere: false, - // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022. - // When enabled, await identifiers are allowed to appear at the top-level scope, - // but they are still not allowed in non-async functions. - allowAwaitOutsideFunction: null, - // When enabled, super identifiers are not constrained to - // appearing in methods and do not raise an error when they appear elsewhere. - allowSuperOutsideMethod: null, - // When enabled, hashbang directive in the beginning of file is - // allowed and treated as a line comment. Enabled by default when - // `ecmaVersion` >= 2023. - allowHashBang: false, - // By default, the parser will verify that private properties are - // only used in places where they are valid and have been declared. - // Set this to false to turn such checks off. - checkPrivateFields: true, - // When `locations` is on, `loc` properties holding objects with - // `start` and `end` properties in `{line, column}` form (with - // line being 1-based and column 0-based) will be attached to the - // nodes. - locations: false, - // A function can be passed as `onToken` option, which will - // cause Acorn to call that function with object in the same - // format as tokens returned from `tokenizer().getToken()`. Note - // that you are not allowed to call the parser from the - // callback—that will corrupt its internal state. - onToken: null, - // A function can be passed as `onComment` option, which will - // cause Acorn to call that function with `(block, text, start, - // end)` parameters whenever a comment is skipped. `block` is a - // boolean indicating whether this is a block (`/* */`) comment, - // `text` is the content of the comment, and `start` and `end` are - // character offsets that denote the start and end of the comment. - // When the `locations` option is on, two more parameters are - // passed, the full `{line, column}` locations of the start and - // end of the comments. Note that you are not allowed to call the - // parser from the callback—that will corrupt its internal state. - // When this option has an array as value, objects representing the - // comments are pushed to it. - onComment: null, - // Nodes have their start and end characters offsets recorded in - // `start` and `end` properties (directly on the node, rather than - // the `loc` object, which holds line/column data. To also add a - // [semi-standardized][range] `range` property holding a `[start, - // end]` array with the same numbers, set the `ranges` option to - // `true`. - // - // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 - ranges: false, - // It is possible to parse multiple files into a single AST by - // passing the tree produced by parsing the first file as - // `program` option in subsequent parses. This will add the - // toplevel forms of the parsed file to the `Program` (top) node - // of an existing parse tree. - program: null, - // When `locations` is on, you can pass this to record the source - // file in every node's `loc` object. - sourceFile: null, - // This value, if given, is stored in every node, whether - // `locations` is on or off. - directSourceFile: null, - // When enabled, parenthesized expressions are represented by - // (non-standard) ParenthesizedExpression nodes - preserveParens: false -}; -// Interpret and default an options object +/***/ }), -var warnedAboutEcmaVersion = false; +/***/ 40257: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -function getOptions(opts) { - var options = {}; +"use strict"; - for (var opt in defaultOptions) - { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } - if (options.ecmaVersion === "latest") { - options.ecmaVersion = 1e8; - } else if (options.ecmaVersion == null) { - if (!warnedAboutEcmaVersion && typeof console === "object" && console.warn) { - warnedAboutEcmaVersion = true; - console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future."); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inherits; +var _index = __nccwpck_require__(17945); +var _inheritsComments = __nccwpck_require__(32078); +function inherits(child, parent) { + if (!child || !parent) return child; + for (const key of _index.INHERIT_KEYS.optional) { + if (child[key] == null) { + child[key] = parent[key]; } - options.ecmaVersion = 11; - } else if (options.ecmaVersion >= 2015) { - options.ecmaVersion -= 2009; } - - if (options.allowReserved == null) - { options.allowReserved = options.ecmaVersion < 5; } - - if (!opts || opts.allowHashBang == null) - { options.allowHashBang = options.ecmaVersion >= 14; } - - if (isArray(options.onToken)) { - var tokens = options.onToken; - options.onToken = function (token) { return tokens.push(token); }; + for (const key of Object.keys(parent)) { + if (key[0] === "_" && key !== "__clone") { + child[key] = parent[key]; + } } - if (isArray(options.onComment)) - { options.onComment = pushComment(options, options.onComment); } - - return options + for (const key of _index.INHERIT_KEYS.force) { + child[key] = parent[key]; + } + (0, _inheritsComments.default)(child, parent); + return child; } -function pushComment(options, array) { - return function(block, text, start, end, startLoc, endLoc) { - var comment = { - type: block ? "Block" : "Line", - value: text, - start: start, - end: end - }; - if (options.locations) - { comment.loc = new SourceLocation(this, startLoc, endLoc); } - if (options.ranges) - { comment.range = [start, end]; } - array.push(comment); - } -} - -// Each scope gets a bitset that may contain these flags -var - SCOPE_TOP = 1, - SCOPE_FUNCTION = 2, - SCOPE_ASYNC = 4, - SCOPE_GENERATOR = 8, - SCOPE_ARROW = 16, - SCOPE_SIMPLE_CATCH = 32, - SCOPE_SUPER = 64, - SCOPE_DIRECT_SUPER = 128, - SCOPE_CLASS_STATIC_BLOCK = 256, - SCOPE_CLASS_FIELD_INIT = 512, - SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; - -function functionFlags(async, generator) { - return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) -} - -// Used in checkLVal* and declareName to determine the type of a binding -var - BIND_NONE = 0, // Not a binding - BIND_VAR = 1, // Var-style binding - BIND_LEXICAL = 2, // Let- or const-style binding - BIND_FUNCTION = 3, // Function declaration - BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding - BIND_OUTSIDE = 5; // Special case for function names as bound inside the function - -var Parser = function Parser(options, input, startPos) { - this.options = options = getOptions(options); - this.sourceFile = options.sourceFile; - this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); - var reserved = ""; - if (options.allowReserved !== true) { - reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3]; - if (options.sourceType === "module") { reserved += " await"; } - } - this.reservedWords = wordsRegexp(reserved); - var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; - this.reservedWordsStrict = wordsRegexp(reservedStrict); - this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); - this.input = String(input); - - // Used to signal to callers of `readWord1` whether the word - // contained any escape sequences. This is needed because words with - // escape sequences must not be interpreted as keywords. - this.containsEsc = false; - - // Set up token state - - // The current position of the tokenizer in the input. - if (startPos) { - this.pos = startPos; - this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; - this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; - } else { - this.pos = this.lineStart = 0; - this.curLine = 1; - } - - // Properties of the current token: - // Its type - this.type = types$1.eof; - // For tokens that include more information than their type, the value - this.value = null; - // Its start and end offset - this.start = this.end = this.pos; - // And, if locations are used, the {line, column} object - // corresponding to those offsets - this.startLoc = this.endLoc = this.curPosition(); - - // Position information for the previous token - this.lastTokEndLoc = this.lastTokStartLoc = null; - this.lastTokStart = this.lastTokEnd = this.pos; - - // The context stack is used to superficially track syntactic - // context to predict whether a regular expression is allowed in a - // given position. - this.context = this.initialContext(); - this.exprAllowed = true; - - // Figure out if it's a module code. - this.inModule = options.sourceType === "module"; - this.strict = this.inModule || this.strictDirective(this.pos); - - // Used to signify the start of a potential arrow function - this.potentialArrowAt = -1; - this.potentialArrowInForAwait = false; - - // Positions to delayed-check that yield/await does not exist in default parameters. - this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; - // Labels in scope. - this.labels = []; - // Thus-far undefined exports. - this.undefinedExports = Object.create(null); - - // If enabled, skip leading hashbang line. - if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") - { this.skipLineComment(2); } - - // Scope tracking for duplicate variable names (see scope.js) - this.scopeStack = []; - this.enterScope(SCOPE_TOP); - - // For RegExp validation - this.regexpState = null; - - // The stack of private names. - // Each element has two properties: 'declared' and 'used'. - // When it exited from the outermost class definition, all used private names must be declared. - this.privateNameStack = []; -}; - -var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; - -Parser.prototype.parse = function parse () { - var node = this.options.program || this.startNode(); - this.nextToken(); - return this.parseTopLevel(node) -}; - -prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; - -prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; +//# sourceMappingURL=inherits.js.map -prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; -prototypeAccessors.canAwait.get = function () { - for (var i = this.scopeStack.length - 1; i >= 0; i--) { - var ref = this.scopeStack[i]; - var flags = ref.flags; - if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false } - if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 } - } - return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction -}; +/***/ }), -prototypeAccessors.allowSuper.get = function () { - var ref = this.currentThisScope(); - var flags = ref.flags; - return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod -}; +/***/ 78564: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; +"use strict"; -prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; -prototypeAccessors.allowNewDotTarget.get = function () { - for (var i = this.scopeStack.length - 1; i >= 0; i--) { - var ref = this.scopeStack[i]; - var flags = ref.flags; - if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) || - ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = prependToMemberExpression; +var _index = __nccwpck_require__(90670); +var _index2 = __nccwpck_require__(16535); +function prependToMemberExpression(member, prepend) { + if ((0, _index2.isSuper)(member.object)) { + throw new Error("Cannot prepend node to super property access (`super.foo`)."); } - return false -}; - -prototypeAccessors.inClassStaticBlock.get = function () { - return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 -}; - -Parser.extend = function extend () { - var plugins = [], len = arguments.length; - while ( len-- ) plugins[ len ] = arguments[ len ]; - - var cls = this; - for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } - return cls -}; - -Parser.parse = function parse (input, options) { - return new this(options, input).parse() -}; - -Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { - var parser = new this(options, input, pos); - parser.nextToken(); - return parser.parseExpression() -}; + member.object = (0, _index.memberExpression)(prepend, member.object); + return member; +} -Parser.tokenizer = function tokenizer (input, options) { - return new this(options, input) -}; +//# sourceMappingURL=prependToMemberExpression.js.map -Object.defineProperties( Parser.prototype, prototypeAccessors ); -var pp$9 = Parser.prototype; +/***/ }), -// ## Parser utilities +/***/ 6656: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/; -pp$9.strictDirective = function(start) { - if (this.options.ecmaVersion < 5) { return false } - for (;;) { - // Try to find string literal. - skipWhiteSpace.lastIndex = start; - start += skipWhiteSpace.exec(this.input)[0].length; - var match = literal.exec(this.input.slice(start)); - if (!match) { return false } - if ((match[1] || match[2]) === "use strict") { - skipWhiteSpace.lastIndex = start + match[0].length; - var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length; - var next = this.input.charAt(end); - return next === ";" || next === "}" || - (lineBreak.test(spaceAfter[0]) && - !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=")) - } - start += match[0].length; - - // Skip semicolon, if any. - skipWhiteSpace.lastIndex = start; - start += skipWhiteSpace.exec(this.input)[0].length; - if (this.input[start] === ";") - { start++; } - } -}; +"use strict"; -// Predicate that tests whether the next token is of the given -// type, and if yes, consumes it as a side effect. -pp$9.eat = function(type) { - if (this.type === type) { - this.next(); - return true - } else { - return false +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeProperties; +var _index = __nccwpck_require__(17945); +const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"]; +const CLEAR_KEYS_PLUS_COMMENTS = [..._index.COMMENT_KEYS, "comments", ...CLEAR_KEYS]; +function removeProperties(node, opts = {}) { + const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS; + for (const key of map) { + if (node[key] != null) node[key] = undefined; } -}; - -// Tests whether parsed token is a contextual keyword. - -pp$9.isContextual = function(name) { - return this.type === types$1.name && this.value === name && !this.containsEsc -}; - -// Consumes contextual keyword if possible. - -pp$9.eatContextual = function(name) { - if (!this.isContextual(name)) { return false } - this.next(); - return true -}; - -// Asserts that following token is given contextual keyword. - -pp$9.expectContextual = function(name) { - if (!this.eatContextual(name)) { this.unexpected(); } -}; - -// Test whether a semicolon can be inserted at the current position. - -pp$9.canInsertSemicolon = function() { - return this.type === types$1.eof || - this.type === types$1.braceR || - lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) -}; - -pp$9.insertSemicolon = function() { - if (this.canInsertSemicolon()) { - if (this.options.onInsertedSemicolon) - { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } - return true + for (const key of Object.keys(node)) { + if (key[0] === "_" && node[key] != null) node[key] = undefined; } -}; - -// Consume a semicolon, or, failing that, see if we are allowed to -// pretend that there is a semicolon at this position. - -pp$9.semicolon = function() { - if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); } -}; - -pp$9.afterTrailingComma = function(tokType, notNext) { - if (this.type === tokType) { - if (this.options.onTrailingComma) - { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } - if (!notNext) - { this.next(); } - return true + const symbols = Object.getOwnPropertySymbols(node); + for (const sym of symbols) { + node[sym] = null; } -}; - -// Expect a token of a given type. If found, consume it, otherwise, -// raise an unexpected token error. - -pp$9.expect = function(type) { - this.eat(type) || this.unexpected(); -}; +} -// Raise an unexpected token error. +//# sourceMappingURL=removeProperties.js.map -pp$9.unexpected = function(pos) { - this.raise(pos != null ? pos : this.start, "Unexpected token"); -}; -var DestructuringErrors = function DestructuringErrors() { - this.shorthandAssign = - this.trailingComma = - this.parenthesizedAssign = - this.parenthesizedBind = - this.doubleProto = - -1; -}; +/***/ }), -pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { - if (!refDestructuringErrors) { return } - if (refDestructuringErrors.trailingComma > -1) - { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } - var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; - if (parens > -1) { this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern"); } -}; +/***/ 55902: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) { - if (!refDestructuringErrors) { return false } - var shorthandAssign = refDestructuringErrors.shorthandAssign; - var doubleProto = refDestructuringErrors.doubleProto; - if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } - if (shorthandAssign >= 0) - { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } - if (doubleProto >= 0) - { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } -}; +"use strict"; -pp$9.checkYieldAwaitInDefaultParams = function() { - if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) - { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } - if (this.awaitPos) - { this.raise(this.awaitPos, "Await expression cannot be a default value"); } -}; -pp$9.isSimpleAssignTarget = function(expr) { - if (expr.type === "ParenthesizedExpression") - { return this.isSimpleAssignTarget(expr.expression) } - return expr.type === "Identifier" || expr.type === "MemberExpression" -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removePropertiesDeep; +var _traverseFast = __nccwpck_require__(47060); +var _removeProperties = __nccwpck_require__(6656); +function removePropertiesDeep(tree, opts) { + (0, _traverseFast.default)(tree, _removeProperties.default, opts); + return tree; +} -var pp$8 = Parser.prototype; +//# sourceMappingURL=removePropertiesDeep.js.map -// ### Statement parsing -// Parse a program. Initializes the parser, reads any number of -// statements, and wraps them in a Program node. Optionally takes a -// `program` argument. If present, the statements will be appended -// to its body instead of creating a new node. +/***/ }), -pp$8.parseTopLevel = function(node) { - var exports = Object.create(null); - if (!node.body) { node.body = []; } - while (this.type !== types$1.eof) { - var stmt = this.parseStatement(null, true, exports); - node.body.push(stmt); - } - if (this.inModule) - { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) - { - var name = list[i]; - - this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); - } } - this.adaptDirectivePrologue(node.body); - this.next(); - node.sourceType = this.options.sourceType; - return this.finishNode(node, "Program") -}; +/***/ 76123: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; - -pp$8.isLet = function(context) { - if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); - // For ambiguous cases, determine if a LexicalDeclaration (or only a - // Statement) is allowed here. If context is not empty then only a Statement - // is allowed. However, `let [` is an explicit negative lookahead for - // ExpressionStatement, so special-case it first. - if (nextCh === 91 || nextCh === 92) { return true } // '[', '\' - if (context) { return false } - - if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral - if (isIdentifierStart(nextCh, true)) { - var pos = next + 1; - while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; } - if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } - var ident = this.input.slice(next, pos); - if (!keywordRelationalOperator.test(ident)) { return true } - } - return false -}; +"use strict"; -// check 'async [no LineTerminator here] function' -// - 'async /*foo*/ function' is OK. -// - 'async /*\n*/ function' is invalid. -pp$8.isAsyncFunction = function() { - if (this.options.ecmaVersion < 8 || !this.isContextual("async")) - { return false } - - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, after; - return !lineBreak.test(this.input.slice(this.pos, next)) && - this.input.slice(next, next + 8) === "function" && - (next + 8 === this.input.length || - !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00)) -}; -// Parse a single statement. -// -// If expecting a statement and finding a slash operator, parse a -// regular expression literal. This is to handle cases like -// `if (foo) /blah/.exec(foo)`, where looking at the previous token -// does not help. - -pp$8.parseStatement = function(context, topLevel, exports) { - var starttype = this.type, node = this.startNode(), kind; - - if (this.isLet(context)) { - starttype = types$1._var; - kind = "let"; - } - - // Most types of statements are recognized by the keyword they - // start with. Many are trivial to parse, some require a bit of - // complexity. - - switch (starttype) { - case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword) - case types$1._debugger: return this.parseDebuggerStatement(node) - case types$1._do: return this.parseDoStatement(node) - case types$1._for: return this.parseForStatement(node) - case types$1._function: - // Function as sole body of either an if statement or a labeled statement - // works, but not when it is part of a labeled statement that is the sole - // body of an if statement. - if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } - return this.parseFunctionStatement(node, false, !context) - case types$1._class: - if (context) { this.unexpected(); } - return this.parseClass(node, true) - case types$1._if: return this.parseIfStatement(node) - case types$1._return: return this.parseReturnStatement(node) - case types$1._switch: return this.parseSwitchStatement(node) - case types$1._throw: return this.parseThrowStatement(node) - case types$1._try: return this.parseTryStatement(node) - case types$1._const: case types$1._var: - kind = kind || this.value; - if (context && kind !== "var") { this.unexpected(); } - return this.parseVarStatement(node, kind) - case types$1._while: return this.parseWhileStatement(node) - case types$1._with: return this.parseWithStatement(node) - case types$1.braceL: return this.parseBlock(true, node) - case types$1.semi: return this.parseEmptyStatement(node) - case types$1._export: - case types$1._import: - if (this.options.ecmaVersion > 10 && starttype === types$1._import) { - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); - if (nextCh === 40 || nextCh === 46) // '(' or '.' - { return this.parseExpressionStatement(node, this.parseExpression()) } - } - - if (!this.options.allowImportExportEverywhere) { - if (!topLevel) - { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } - if (!this.inModule) - { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } - } - return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports) - - // If the statement does not start with a statement keyword or a - // brace, it's an ExpressionStatement or LabeledStatement. We - // simply start parsing an expression, and afterwards, if the - // next token is a colon and the expression was a simple - // Identifier node, we switch to interpreting it as a label. - default: - if (this.isAsyncFunction()) { - if (context) { this.unexpected(); } - this.next(); - return this.parseFunctionStatement(node, true, !context) +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = removeTypeDuplicates; +var _index = __nccwpck_require__(40741); +function getQualifiedName(node) { + return (0, _index.isIdentifier)(node) ? node.name : (0, _index.isThisExpression)(node) ? "this" : `${node.right.name}.${getQualifiedName(node.left)}`; +} +function removeTypeDuplicates(nodesIn) { + const nodes = Array.from(nodesIn); + const generics = new Map(); + const bases = new Map(); + const typeGroups = new Set(); + const types = []; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + if (types.includes(node)) { + continue; } - - var maybeName = this.value, expr = this.parseExpression(); - if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) - { return this.parseLabeledStatement(node, maybeName, expr, context) } - else { return this.parseExpressionStatement(node, expr) } - } -}; - -pp$8.parseBreakContinueStatement = function(node, keyword) { - var isBreak = keyword === "break"; - this.next(); - if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; } - else if (this.type !== types$1.name) { this.unexpected(); } - else { - node.label = this.parseIdent(); - this.semicolon(); - } - - // Verify that there is an actual destination to break or - // continue to. - var i = 0; - for (; i < this.labels.length; ++i) { - var lab = this.labels[i]; - if (node.label == null || lab.name === node.label.name) { - if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } - if (node.label && isBreak) { break } + if ((0, _index.isTSAnyKeyword)(node)) { + return [node]; } - } - if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } - return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") -}; - -pp$8.parseDebuggerStatement = function(node) { - this.next(); - this.semicolon(); - return this.finishNode(node, "DebuggerStatement") -}; - -pp$8.parseDoStatement = function(node) { - this.next(); - this.labels.push(loopLabel); - node.body = this.parseStatement("do"); - this.labels.pop(); - this.expect(types$1._while); - node.test = this.parseParenExpression(); - if (this.options.ecmaVersion >= 6) - { this.eat(types$1.semi); } - else - { this.semicolon(); } - return this.finishNode(node, "DoWhileStatement") -}; - -// Disambiguating between a `for` and a `for`/`in` or `for`/`of` -// loop is non-trivial. Basically, we have to parse the init `var` -// statement or expression, disallowing the `in` operator (see -// the second parameter to `parseExpression`), and then check -// whether the next token is `in` or `of`. When there is no init -// part (semicolon immediately after the opening parenthesis), it -// is a regular `for` loop. - -pp$8.parseForStatement = function(node) { - this.next(); - var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await")) ? this.lastTokStart : -1; - this.labels.push(loopLabel); - this.enterScope(0); - this.expect(types$1.parenL); - if (this.type === types$1.semi) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, null) - } - var isLet = this.isLet(); - if (this.type === types$1._var || this.type === types$1._const || isLet) { - var init$1 = this.startNode(), kind = isLet ? "let" : this.value; - this.next(); - this.parseVar(init$1, true, kind); - this.finishNode(init$1, "VariableDeclaration"); - if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { - if (this.options.ecmaVersion >= 9) { - if (this.type === types$1._in) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - } else { node.await = awaitAt > -1; } - } - return this.parseForIn(node, init$1) - } - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, init$1) - } - var startsWithLet = this.isContextual("let"), isForOf = false; - var containsEsc = this.containsEsc; - var refDestructuringErrors = new DestructuringErrors; - var initPos = this.start; - var init = awaitAt > -1 - ? this.parseExprSubscripts(refDestructuringErrors, "await") - : this.parseExpression(true, refDestructuringErrors); - if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt) - if (this.type === types$1._in) { this.unexpected(awaitAt); } - node.await = true; - } else if (isForOf && this.options.ecmaVersion >= 8) { - if (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async") { this.unexpected(); } - else if (this.options.ecmaVersion >= 9) { node.await = false; } - } - if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } - this.toAssignable(init, false, refDestructuringErrors); - this.checkLValPattern(init); - return this.parseForIn(node, init) - } else { - this.checkExpressionErrors(refDestructuringErrors, true); - } - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, init) -}; - -pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) { - this.next(); - return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) -}; - -pp$8.parseIfStatement = function(node) { - this.next(); - node.test = this.parseParenExpression(); - // allow function declarations in branches, but only in non-strict mode - node.consequent = this.parseStatement("if"); - node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; - return this.finishNode(node, "IfStatement") -}; - -pp$8.parseReturnStatement = function(node) { - if (!this.inFunction && !this.options.allowReturnOutsideFunction) - { this.raise(this.start, "'return' outside of function"); } - this.next(); - - // In `return` (and `break`/`continue`), the keywords with - // optional arguments, we eagerly look for a semicolon or the - // possibility to insert one. - - if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; } - else { node.argument = this.parseExpression(); this.semicolon(); } - return this.finishNode(node, "ReturnStatement") -}; - -pp$8.parseSwitchStatement = function(node) { - this.next(); - node.discriminant = this.parseParenExpression(); - node.cases = []; - this.expect(types$1.braceL); - this.labels.push(switchLabel); - this.enterScope(0); - - // Statements under must be grouped (by label) in SwitchCase - // nodes. `cur` is used to keep the node that we are currently - // adding statements to. - - var cur; - for (var sawDefault = false; this.type !== types$1.braceR;) { - if (this.type === types$1._case || this.type === types$1._default) { - var isCase = this.type === types$1._case; - if (cur) { this.finishNode(cur, "SwitchCase"); } - node.cases.push(cur = this.startNode()); - cur.consequent = []; - this.next(); - if (isCase) { - cur.test = this.parseExpression(); + if ((0, _index.isTSBaseType)(node)) { + bases.set(node.type, node); + continue; + } + if ((0, _index.isTSUnionType)(node)) { + if (!typeGroups.has(node.types)) { + nodes.push(...node.types); + typeGroups.add(node.types); + } + continue; + } + const typeArgumentsKey = "typeParameters"; + if ((0, _index.isTSTypeReference)(node) && node[typeArgumentsKey]) { + const typeArguments = node[typeArgumentsKey]; + const name = getQualifiedName(node.typeName); + if (generics.has(name)) { + let existing = generics.get(name); + const existingTypeArguments = existing[typeArgumentsKey]; + if (existingTypeArguments) { + existingTypeArguments.params.push(...typeArguments.params); + existingTypeArguments.params = removeTypeDuplicates(existingTypeArguments.params); + } else { + existing = typeArguments; + } } else { - if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } - sawDefault = true; - cur.test = null; + generics.set(name, node); } - this.expect(types$1.colon); - } else { - if (!cur) { this.unexpected(); } - cur.consequent.push(this.parseStatement(null)); + continue; } + types.push(node); } - this.exitScope(); - if (cur) { this.finishNode(cur, "SwitchCase"); } - this.next(); // Closing brace - this.labels.pop(); - return this.finishNode(node, "SwitchStatement") -}; - -pp$8.parseThrowStatement = function(node) { - this.next(); - if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) - { this.raise(this.lastTokEnd, "Illegal newline after throw"); } - node.argument = this.parseExpression(); - this.semicolon(); - return this.finishNode(node, "ThrowStatement") -}; - -// Reused empty array added for node fields that are always empty. - -var empty$1 = []; - -pp$8.parseCatchClauseParam = function() { - var param = this.parseBindingAtom(); - var simple = param.type === "Identifier"; - this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); - this.expect(types$1.parenR); - - return param -}; - -pp$8.parseTryStatement = function(node) { - this.next(); - node.block = this.parseBlock(); - node.handler = null; - if (this.type === types$1._catch) { - var clause = this.startNode(); - this.next(); - if (this.eat(types$1.parenL)) { - clause.param = this.parseCatchClauseParam(); - } else { - if (this.options.ecmaVersion < 10) { this.unexpected(); } - clause.param = null; - this.enterScope(0); - } - clause.body = this.parseBlock(false); - this.exitScope(); - node.handler = this.finishNode(clause, "CatchClause"); - } - node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; - if (!node.handler && !node.finalizer) - { this.raise(node.start, "Missing catch or finally clause"); } - return this.finishNode(node, "TryStatement") -}; - -pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) { - this.next(); - this.parseVar(node, false, kind, allowMissingInitializer); - this.semicolon(); - return this.finishNode(node, "VariableDeclaration") -}; - -pp$8.parseWhileStatement = function(node) { - this.next(); - node.test = this.parseParenExpression(); - this.labels.push(loopLabel); - node.body = this.parseStatement("while"); - this.labels.pop(); - return this.finishNode(node, "WhileStatement") -}; - -pp$8.parseWithStatement = function(node) { - if (this.strict) { this.raise(this.start, "'with' in strict mode"); } - this.next(); - node.object = this.parseParenExpression(); - node.body = this.parseStatement("with"); - return this.finishNode(node, "WithStatement") -}; - -pp$8.parseEmptyStatement = function(node) { - this.next(); - return this.finishNode(node, "EmptyStatement") -}; - -pp$8.parseLabeledStatement = function(node, maybeName, expr, context) { - for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) - { - var label = list[i$1]; - - if (label.name === maybeName) - { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); - } } - var kind = this.type.isLoop ? "loop" : this.type === types$1._switch ? "switch" : null; - for (var i = this.labels.length - 1; i >= 0; i--) { - var label$1 = this.labels[i]; - if (label$1.statementStart === node.start) { - // Update information about previous labels on this node - label$1.statementStart = this.start; - label$1.kind = kind; - } else { break } - } - this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); - node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); - this.labels.pop(); - node.label = expr; - return this.finishNode(node, "LabeledStatement") -}; - -pp$8.parseExpressionStatement = function(node, expr) { - node.expression = expr; - this.semicolon(); - return this.finishNode(node, "ExpressionStatement") -}; + for (const [, baseType] of bases) { + types.push(baseType); + } + for (const [, genericName] of generics) { + types.push(genericName); + } + return types; +} -// Parse a semicolon-enclosed block of statements, handling `"use -// strict"` declarations when `allowStrict` is true (used for -// function bodies). - -pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) { - if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; - if ( node === void 0 ) node = this.startNode(); - - node.body = []; - this.expect(types$1.braceL); - if (createNewLexicalScope) { this.enterScope(0); } - while (this.type !== types$1.braceR) { - var stmt = this.parseStatement(null); - node.body.push(stmt); - } - if (exitStrict) { this.strict = false; } - this.next(); - if (createNewLexicalScope) { this.exitScope(); } - return this.finishNode(node, "BlockStatement") -}; +//# sourceMappingURL=removeTypeDuplicates.js.map -// Parse a regular `for` loop. The disambiguation code in -// `parseStatement` will already have parsed the init statement or -// expression. - -pp$8.parseFor = function(node, init) { - node.init = init; - this.expect(types$1.semi); - node.test = this.type === types$1.semi ? null : this.parseExpression(); - this.expect(types$1.semi); - node.update = this.type === types$1.parenR ? null : this.parseExpression(); - this.expect(types$1.parenR); - node.body = this.parseStatement("for"); - this.exitScope(); - this.labels.pop(); - return this.finishNode(node, "ForStatement") -}; -// Parse a `for`/`in` and `for`/`of` loop, which are almost -// same from parser's perspective. +/***/ }), -pp$8.parseForIn = function(node, init) { - var isForIn = this.type === types$1._in; - this.next(); +/***/ 21228: +/***/ ((__unused_webpack_module, exports) => { - if ( - init.type === "VariableDeclaration" && - init.declarations[0].init != null && - ( - !isForIn || - this.options.ecmaVersion < 8 || - this.strict || - init.kind !== "var" || - init.declarations[0].id.type !== "Identifier" - ) - ) { - this.raise( - init.start, - ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") - ); - } - node.left = init; - node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); - this.expect(types$1.parenR); - node.body = this.parseStatement("for"); - this.exitScope(); - this.labels.pop(); - return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") -}; +"use strict"; -// Parse a list of variable declarations. -pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) { - node.declarations = []; - node.kind = kind; - for (;;) { - var decl = this.startNode(); - this.parseVarId(decl, kind); - if (this.eat(types$1.eq)) { - decl.init = this.parseMaybeAssign(isFor); - } else if (!allowMissingInitializer && kind === "const" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { - this.unexpected(); - } else if (!allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of")))) { - this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); - } else { - decl.init = null; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getAssignmentIdentifiers; +function getAssignmentIdentifiers(node) { + const search = [].concat(node); + const ids = Object.create(null); + while (search.length) { + const id = search.pop(); + if (!id) continue; + switch (id.type) { + case "ArrayPattern": + search.push(...id.elements); + break; + case "AssignmentExpression": + case "AssignmentPattern": + case "ForInStatement": + case "ForOfStatement": + search.push(id.left); + break; + case "ObjectPattern": + search.push(...id.properties); + break; + case "ObjectProperty": + search.push(id.value); + break; + case "RestElement": + case "UpdateExpression": + search.push(id.argument); + break; + case "UnaryExpression": + if (id.operator === "delete") { + search.push(id.argument); + } + break; + case "Identifier": + ids[id.name] = id; + break; + default: + break; } - node.declarations.push(this.finishNode(decl, "VariableDeclarator")); - if (!this.eat(types$1.comma)) { break } } - return node -}; + return ids; +} -pp$8.parseVarId = function(decl, kind) { - decl.id = this.parseBindingAtom(); - this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); -}; +//# sourceMappingURL=getAssignmentIdentifiers.js.map -var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; -// Parse a function declaration or literal (depending on the -// `statement & FUNC_STATEMENT`). +/***/ }), + +/***/ 45300: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; -// Remove `allowExpressionBody` for 7.0.0, as it is only called with false -pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { - this.initFunction(node); - if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { - if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT)) - { this.unexpected(); } - node.generator = this.eat(types$1.star); - } - if (this.options.ecmaVersion >= 8) - { node.async = !!isAsync; } - if (statement & FUNC_STATEMENT) { - node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent(); - if (node.id && !(statement & FUNC_HANGING_STATEMENT)) - // If it is a regular function declaration in sloppy mode, then it is - // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding - // mode depends on properties of the current scope (see - // treatFunctionsAsVar). - { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getBindingIdentifiers; +var _index = __nccwpck_require__(40741); +function getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) { + const search = [].concat(node); + const ids = Object.create(null); + while (search.length) { + const id = search.shift(); + if (!id) continue; + if (newBindingsOnly && ((0, _index.isAssignmentExpression)(id) || (0, _index.isUnaryExpression)(id) || (0, _index.isUpdateExpression)(id))) { + continue; + } + if ((0, _index.isIdentifier)(id)) { + if (duplicates) { + const _ids = ids[id.name] = ids[id.name] || []; + _ids.push(id); + } else { + ids[id.name] = id; + } + continue; + } + if ((0, _index.isExportDeclaration)(id) && !(0, _index.isExportAllDeclaration)(id)) { + if ((0, _index.isDeclaration)(id.declaration)) { + search.push(id.declaration); + } + continue; + } + if (outerOnly) { + if ((0, _index.isFunctionDeclaration)(id)) { + search.push(id.id); + continue; + } + if ((0, _index.isFunctionExpression)(id)) { + continue; + } + } + const keys = getBindingIdentifiers.keys[id.type]; + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const nodes = id[key]; + if (nodes) { + if (Array.isArray(nodes)) { + search.push(...nodes); + } else { + search.push(nodes); + } + } + } + } } + return ids; +} +const keys = { + DeclareClass: ["id"], + DeclareFunction: ["id"], + DeclareModule: ["id"], + DeclareVariable: ["id"], + DeclareInterface: ["id"], + DeclareTypeAlias: ["id"], + DeclareOpaqueType: ["id"], + InterfaceDeclaration: ["id"], + TypeAlias: ["id"], + OpaqueType: ["id"], + CatchClause: ["param"], + LabeledStatement: ["label"], + UnaryExpression: ["argument"], + AssignmentExpression: ["left"], + ImportSpecifier: ["local"], + ImportNamespaceSpecifier: ["local"], + ImportDefaultSpecifier: ["local"], + ImportDeclaration: ["specifiers"], + TSImportEqualsDeclaration: ["id"], + ExportSpecifier: ["exported"], + ExportNamespaceSpecifier: ["exported"], + ExportDefaultSpecifier: ["exported"], + FunctionDeclaration: ["id", "params"], + FunctionExpression: ["id", "params"], + ArrowFunctionExpression: ["params"], + ObjectMethod: ["params"], + ClassMethod: ["params"], + ClassPrivateMethod: ["params"], + ForInStatement: ["left"], + ForOfStatement: ["left"], + ClassDeclaration: ["id"], + ClassExpression: ["id"], + RestElement: ["argument"], + UpdateExpression: ["argument"], + ObjectProperty: ["value"], + AssignmentPattern: ["left"], + ArrayPattern: ["elements"], + ObjectPattern: ["properties"], + VariableDeclaration: ["declarations"], + VariableDeclarator: ["id"] +}; +getBindingIdentifiers.keys = keys; - var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - this.enterScope(functionFlags(node.async, node.generator)); +//# sourceMappingURL=getBindingIdentifiers.js.map - if (!(statement & FUNC_STATEMENT)) - { node.id = this.type === types$1.name ? this.parseIdent() : null; } - this.parseFunctionParams(node); - this.parseFunctionBody(node, allowExpressionBody, false, forInit); +/***/ }), - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") -}; +/***/ 48836: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -pp$8.parseFunctionParams = function(node) { - this.expect(types$1.parenL); - node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); - this.checkYieldAwaitInDefaultParams(); -}; +"use strict"; -// Parse a class declaration or literal (depending on the -// `isStatement` parameter). - -pp$8.parseClass = function(node, isStatement) { - this.next(); - - // ecma-262 14.6 Class Definitions - // A class definition is always strict mode code. - var oldStrict = this.strict; - this.strict = true; - - this.parseClassId(node, isStatement); - this.parseClassSuper(node); - var privateNameMap = this.enterClassBody(); - var classBody = this.startNode(); - var hadConstructor = false; - classBody.body = []; - this.expect(types$1.braceL); - while (this.type !== types$1.braceR) { - var element = this.parseClassElement(node.superClass !== null); - if (element) { - classBody.body.push(element); - if (element.type === "MethodDefinition" && element.kind === "constructor") { - if (hadConstructor) { this.raiseRecoverable(element.start, "Duplicate constructor in the same class"); } - hadConstructor = true; - } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { - this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); - } - } - } - this.strict = oldStrict; - this.next(); - node.body = this.finishNode(classBody, "ClassBody"); - this.exitClassBody(); - return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") -}; -pp$8.parseClassElement = function(constructorAllowsSuper) { - if (this.eat(types$1.semi)) { return null } - - var ecmaVersion = this.options.ecmaVersion; - var node = this.startNode(); - var keyName = ""; - var isGenerator = false; - var isAsync = false; - var kind = "method"; - var isStatic = false; - - if (this.eatContextual("static")) { - // Parse static init block - if (ecmaVersion >= 13 && this.eat(types$1.braceL)) { - this.parseClassStaticBlock(node); - return node - } - if (this.isClassElementNameStart() || this.type === types$1.star) { - isStatic = true; - } else { - keyName = "static"; - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = getFunctionName; +var _index = __nccwpck_require__(40741); +function getNameFromLiteralId(id) { + if ((0, _index.isNullLiteral)(id)) { + return "null"; } - node.static = isStatic; - if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { - if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) { - isAsync = true; - } else { - keyName = "async"; - } + if ((0, _index.isRegExpLiteral)(id)) { + return `/${id.pattern}/${id.flags}`; } - if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) { - isGenerator = true; + if ((0, _index.isTemplateLiteral)(id)) { + return id.quasis.map(quasi => quasi.value.raw).join(""); } - if (!keyName && !isAsync && !isGenerator) { - var lastValue = this.value; - if (this.eatContextual("get") || this.eatContextual("set")) { - if (this.isClassElementNameStart()) { - kind = lastValue; - } else { - keyName = lastValue; - } - } + if (id.value !== undefined) { + return String(id.value); } - - // Parse element name - if (keyName) { - // 'async', 'get', 'set', or 'static' were not a keyword contextually. - // The last token is any of those. Make it the element name. - node.computed = false; - node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc); - node.key.name = keyName; - this.finishNode(node.key, "Identifier"); - } else { - this.parseClassElementName(node); + return null; +} +function getObjectMemberKey(node) { + if (!node.computed || (0, _index.isLiteral)(node.key)) { + return node.key; } - - // Parse element value - if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== "method" || isGenerator || isAsync) { - var isConstructor = !node.static && checkKeyName(node, "constructor"); - var allowsDirectSuper = isConstructor && constructorAllowsSuper; - // Couldn't move this check into the 'parseClassMethod' method for backward compatibility. - if (isConstructor && kind !== "method") { this.raise(node.key.start, "Constructor can't have get/set modifier"); } - node.kind = isConstructor ? "constructor" : kind; - this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper); - } else { - this.parseClassField(node); +} +function getFunctionName(node, parent) { + if ("id" in node && node.id) { + return { + name: node.id.name, + originalNode: node.id + }; } + let prefix = ""; + let id; + if ((0, _index.isObjectProperty)(parent, { + value: node + })) { + id = getObjectMemberKey(parent); + } else if ((0, _index.isObjectMethod)(node) || (0, _index.isClassMethod)(node)) { + id = getObjectMemberKey(node); + if (node.kind === "get") prefix = "get ";else if (node.kind === "set") prefix = "set "; + } else if ((0, _index.isVariableDeclarator)(parent, { + init: node + })) { + id = parent.id; + } else if ((0, _index.isAssignmentExpression)(parent, { + operator: "=", + right: node + })) { + id = parent.left; + } + if (!id) return null; + const name = (0, _index.isLiteral)(id) ? getNameFromLiteralId(id) : (0, _index.isIdentifier)(id) ? id.name : (0, _index.isPrivateName)(id) ? id.id.name : null; + if (name == null) return null; + return { + name: prefix + name, + originalNode: id + }; +} - return node -}; +//# sourceMappingURL=getFunctionName.js.map -pp$8.isClassElementNameStart = function() { - return ( - this.type === types$1.name || - this.type === types$1.privateId || - this.type === types$1.num || - this.type === types$1.string || - this.type === types$1.bracketL || - this.type.keyword - ) -}; -pp$8.parseClassElementName = function(element) { - if (this.type === types$1.privateId) { - if (this.value === "constructor") { - this.raise(this.start, "Classes can't have an element named '#constructor'"); - } - element.computed = false; - element.key = this.parsePrivateIdent(); - } else { - this.parsePropertyName(element); - } -}; +/***/ }), -pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { - // Check key and flags - var key = method.key; - if (method.kind === "constructor") { - if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } - if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } - } else if (method.static && checkKeyName(method, "prototype")) { - this.raise(key.start, "Classes may not have a static property named prototype"); - } +/***/ 46815: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - // Parse value - var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); +"use strict"; - // Check value - if (method.kind === "get" && value.params.length !== 0) - { this.raiseRecoverable(value.start, "getter should have no params"); } - if (method.kind === "set" && value.params.length !== 1) - { this.raiseRecoverable(value.start, "setter should have exactly one param"); } - if (method.kind === "set" && value.params[0].type === "RestElement") - { this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"); } - return this.finishNode(method, "MethodDefinition") -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _getBindingIdentifiers = __nccwpck_require__(45300); +var _default = exports["default"] = getOuterBindingIdentifiers; +function getOuterBindingIdentifiers(node, duplicates) { + return (0, _getBindingIdentifiers.default)(node, duplicates, true); +} -pp$8.parseClassField = function(field) { - if (checkKeyName(field, "constructor")) { - this.raise(field.key.start, "Classes can't have a field named 'constructor'"); - } else if (field.static && checkKeyName(field, "prototype")) { - this.raise(field.key.start, "Classes can't have a static field named 'prototype'"); - } +//# sourceMappingURL=getOuterBindingIdentifiers.js.map - if (this.eat(types$1.eq)) { - // To raise SyntaxError if 'arguments' exists in the initializer. - this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER); - field.value = this.parseMaybeAssign(); - this.exitScope(); - } else { - field.value = null; - } - this.semicolon(); - return this.finishNode(field, "PropertyDefinition") -}; +/***/ }), -pp$8.parseClassStaticBlock = function(node) { - node.body = []; +/***/ 6878: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - var oldLabels = this.labels; - this.labels = []; - this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); - while (this.type !== types$1.braceR) { - var stmt = this.parseStatement(null); - node.body.push(stmt); - } - this.next(); - this.exitScope(); - this.labels = oldLabels; +"use strict"; - return this.finishNode(node, "StaticBlock") -}; -pp$8.parseClassId = function(node, isStatement) { - if (this.type === types$1.name) { - node.id = this.parseIdent(); - if (isStatement) - { this.checkLValSimple(node.id, BIND_LEXICAL, false); } - } else { - if (isStatement === true) - { this.unexpected(); } - node.id = null; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = traverse; +var _index = __nccwpck_require__(40910); +function traverse(node, handlers, state) { + if (typeof handlers === "function") { + handlers = { + enter: handlers + }; } -}; - -pp$8.parseClassSuper = function(node) { - node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null; -}; - -pp$8.enterClassBody = function() { - var element = {declared: Object.create(null), used: []}; - this.privateNameStack.push(element); - return element.declared -}; - -pp$8.exitClassBody = function() { - var ref = this.privateNameStack.pop(); - var declared = ref.declared; - var used = ref.used; - if (!this.options.checkPrivateFields) { return } - var len = this.privateNameStack.length; - var parent = len === 0 ? null : this.privateNameStack[len - 1]; - for (var i = 0; i < used.length; ++i) { - var id = used[i]; - if (!hasOwn(declared, id.name)) { - if (parent) { - parent.used.push(id); - } else { - this.raiseRecoverable(id.start, ("Private field '#" + (id.name) + "' must be declared in an enclosing class")); + const { + enter, + exit + } = handlers; + traverseSimpleImpl(node, enter, exit, state, []); +} +function traverseSimpleImpl(node, enter, exit, state, ancestors) { + const keys = _index.VISITOR_KEYS[node.type]; + if (!keys) return; + if (enter) enter(node, ancestors, state); + for (const key of keys) { + const subNode = node[key]; + if (Array.isArray(subNode)) { + for (let i = 0; i < subNode.length; i++) { + const child = subNode[i]; + if (!child) continue; + ancestors.push({ + node, + key, + index: i + }); + traverseSimpleImpl(child, enter, exit, state, ancestors); + ancestors.pop(); } + } else if (subNode) { + ancestors.push({ + node, + key + }); + traverseSimpleImpl(subNode, enter, exit, state, ancestors); + ancestors.pop(); } } -}; + if (exit) exit(node, ancestors, state); +} -function isPrivateNameConflicted(privateNameMap, element) { - var name = element.key.name; - var curr = privateNameMap[name]; +//# sourceMappingURL=traverse.js.map - var next = "true"; - if (element.type === "MethodDefinition" && (element.kind === "get" || element.kind === "set")) { - next = (element.static ? "s" : "i") + element.kind; - } - // `class { get #a(){}; static set #a(_){} }` is also conflict. - if ( - curr === "iget" && next === "iset" || - curr === "iset" && next === "iget" || - curr === "sget" && next === "sset" || - curr === "sset" && next === "sget" - ) { - privateNameMap[name] = "true"; - return false - } else if (!curr) { - privateNameMap[name] = next; - return false - } else { - return true - } -} +/***/ }), -function checkKeyName(node, name) { - var computed = node.computed; - var key = node.key; - return !computed && ( - key.type === "Identifier" && key.name === name || - key.type === "Literal" && key.value === name - ) -} +/***/ 47060: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// Parses module export declaration. +"use strict"; -pp$8.parseExportAllDeclaration = function(node, exports) { - if (this.options.ecmaVersion >= 11) { - if (this.eatContextual("as")) { - node.exported = this.parseModuleExportName(); - this.checkExport(exports, node.exported, this.lastTokStart); - } else { - node.exported = null; + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = traverseFast; +var _index = __nccwpck_require__(40910); +const _skip = Symbol(); +const _stop = Symbol(); +function traverseFast(node, enter, opts) { + if (!node) return false; + const keys = _index.VISITOR_KEYS[node.type]; + if (!keys) return false; + opts = opts || {}; + const ret = enter(node, opts); + if (ret !== undefined) { + switch (ret) { + case _skip: + return false; + case _stop: + return true; } } - this.expectContextual("from"); - if (this.type !== types$1.string) { this.unexpected(); } - node.source = this.parseExprAtom(); - if (this.options.ecmaVersion >= 16) - { node.attributes = this.parseWithClause(); } - this.semicolon(); - return this.finishNode(node, "ExportAllDeclaration") -}; - -pp$8.parseExport = function(node, exports) { - this.next(); - // export * from '...' - if (this.eat(types$1.star)) { - return this.parseExportAllDeclaration(node, exports) - } - if (this.eat(types$1._default)) { // export default ... - this.checkExport(exports, "default", this.lastTokStart); - node.declaration = this.parseExportDefaultDeclaration(); - return this.finishNode(node, "ExportDefaultDeclaration") - } - // export var|const|let|function|class ... - if (this.shouldParseExportStatement()) { - node.declaration = this.parseExportDeclaration(node); - if (node.declaration.type === "VariableDeclaration") - { this.checkVariableExport(exports, node.declaration.declarations); } - else - { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } - node.specifiers = []; - node.source = null; - if (this.options.ecmaVersion >= 16) - { node.attributes = []; } - } else { // export { x, y as z } [from '...'] - node.declaration = null; - node.specifiers = this.parseExportSpecifiers(exports); - if (this.eatContextual("from")) { - if (this.type !== types$1.string) { this.unexpected(); } - node.source = this.parseExprAtom(); - if (this.options.ecmaVersion >= 16) - { node.attributes = this.parseWithClause(); } - } else { - for (var i = 0, list = node.specifiers; i < list.length; i += 1) { - // check for keywords used as local names - var spec = list[i]; - - this.checkUnreserved(spec.local); - // check if export is defined - this.checkLocalExport(spec.local); - - if (spec.local.type === "Literal") { - this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); - } + for (const key of keys) { + const subNode = node[key]; + if (!subNode) continue; + if (Array.isArray(subNode)) { + for (const node of subNode) { + if (traverseFast(node, enter, opts)) return true; } - - node.source = null; - if (this.options.ecmaVersion >= 16) - { node.attributes = []; } + } else { + if (traverseFast(subNode, enter, opts)) return true; } - this.semicolon(); } - return this.finishNode(node, "ExportNamedDeclaration") -}; + return false; +} +traverseFast.skip = _skip; +traverseFast.stop = _stop; -pp$8.parseExportDeclaration = function(node) { - return this.parseStatement(null) -}; +//# sourceMappingURL=traverseFast.js.map -pp$8.parseExportDefaultDeclaration = function() { - var isAsync; - if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) { - var fNode = this.startNode(); - this.next(); - if (isAsync) { this.next(); } - return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync) - } else if (this.type === types$1._class) { - var cNode = this.startNode(); - return this.parseClass(cNode, "nullableID") - } else { - var declaration = this.parseMaybeAssign(); - this.semicolon(); - return declaration - } -}; -pp$8.checkExport = function(exports, name, pos) { - if (!exports) { return } - if (typeof name !== "string") - { name = name.type === "Identifier" ? name.name : name.value; } - if (hasOwn(exports, name)) - { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } - exports[name] = true; -}; +/***/ }), -pp$8.checkPatternExport = function(exports, pat) { - var type = pat.type; - if (type === "Identifier") - { this.checkExport(exports, pat, pat.start); } - else if (type === "ObjectPattern") - { for (var i = 0, list = pat.properties; i < list.length; i += 1) - { - var prop = list[i]; - - this.checkPatternExport(exports, prop); - } } - else if (type === "ArrayPattern") - { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { - var elt = list$1[i$1]; - - if (elt) { this.checkPatternExport(exports, elt); } - } } - else if (type === "Property") - { this.checkPatternExport(exports, pat.value); } - else if (type === "AssignmentPattern") - { this.checkPatternExport(exports, pat.left); } - else if (type === "RestElement") - { this.checkPatternExport(exports, pat.argument); } -}; +/***/ 14711: +/***/ ((__unused_webpack_module, exports) => { -pp$8.checkVariableExport = function(exports, decls) { - if (!exports) { return } - for (var i = 0, list = decls; i < list.length; i += 1) - { - var decl = list[i]; +"use strict"; - this.checkPatternExport(exports, decl.id); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = deprecationWarning; +const warnings = new Set(); +function deprecationWarning(oldName, newName, prefix = "", cacheKey = oldName) { + if (warnings.has(cacheKey)) return; + warnings.add(cacheKey); + const { + internal, + trace + } = captureShortStackTrace(1, 2); + if (internal) { + return; } -}; + console.warn(`${prefix}\`${oldName}\` has been deprecated, please migrate to \`${newName}\`\n${trace}`); +} +function captureShortStackTrace(skip, length) { + const { + stackTraceLimit, + prepareStackTrace + } = Error; + let stackTrace; + Error.stackTraceLimit = 1 + skip + length; + Error.prepareStackTrace = function (err, stack) { + stackTrace = stack; + }; + new Error().stack; + Error.stackTraceLimit = stackTraceLimit; + Error.prepareStackTrace = prepareStackTrace; + if (!stackTrace) return { + internal: false, + trace: "" + }; + const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length); + return { + internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()), + trace: shortStackTrace.map(frame => ` at ${frame}`).join("\n") + }; +} -pp$8.shouldParseExportStatement = function() { - return this.type.keyword === "var" || - this.type.keyword === "const" || - this.type.keyword === "class" || - this.type.keyword === "function" || - this.isLet() || - this.isAsyncFunction() -}; +//# sourceMappingURL=deprecationWarning.js.map -// Parses a comma-separated list of module exports. -pp$8.parseExportSpecifier = function(exports) { - var node = this.startNode(); - node.local = this.parseModuleExportName(); +/***/ }), - node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; - this.checkExport( - exports, - node.exported, - node.exported.start - ); +/***/ 40066: +/***/ ((__unused_webpack_module, exports) => { - return this.finishNode(node, "ExportSpecifier") -}; +"use strict"; -pp$8.parseExportSpecifiers = function(exports) { - var nodes = [], first = true; - // export { x, y as z } [from '...'] - this.expect(types$1.braceL); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - nodes.push(this.parseExportSpecifier(exports)); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = inherit; +function inherit(key, child, parent) { + if (child && parent) { + child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean))); } - return nodes -}; +} -// Parses import declaration. +//# sourceMappingURL=inherit.js.map -pp$8.parseImport = function(node) { - this.next(); - // import '...' - if (this.type === types$1.string) { - node.specifiers = empty$1; - node.source = this.parseExprAtom(); - } else { - node.specifiers = this.parseImportSpecifiers(); - this.expectContextual("from"); - node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected(); - } - if (this.options.ecmaVersion >= 16) - { node.attributes = this.parseWithClause(); } - this.semicolon(); - return this.finishNode(node, "ImportDeclaration") -}; +/***/ }), -// Parses a comma-separated list of module imports. +/***/ 43508: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -pp$8.parseImportSpecifier = function() { - var node = this.startNode(); - node.imported = this.parseModuleExportName(); +"use strict"; - if (this.eatContextual("as")) { - node.local = this.parseIdent(); - } else { - this.checkUnreserved(node.imported); - node.local = node.imported; - } - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportSpecifier") -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = cleanJSXElementLiteralChild; +var _index = __nccwpck_require__(90670); +var _index2 = __nccwpck_require__(16535); +function cleanJSXElementLiteralChild(child, args) { + const lines = child.value.split(/\r\n|\n|\r/); + let lastNonEmptyLine = 0; + for (let i = 0; i < lines.length; i++) { + if (/[^ \t]/.exec(lines[i])) { + lastNonEmptyLine = i; + } + } + let str = ""; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const isFirstLine = i === 0; + const isLastLine = i === lines.length - 1; + const isLastNonEmptyLine = i === lastNonEmptyLine; + let trimmedLine = line.replace(/\t/g, " "); + if (!isFirstLine) { + trimmedLine = trimmedLine.replace(/^ +/, ""); + } + if (!isLastLine) { + trimmedLine = trimmedLine.replace(/ +$/, ""); + } + if (trimmedLine) { + if (!isLastNonEmptyLine) { + trimmedLine += " "; + } + str += trimmedLine; + } + } + if (str) args.push((0, _index2.inherits)((0, _index.stringLiteral)(str), child)); +} -pp$8.parseImportDefaultSpecifier = function() { - // import defaultObj, { x, y as z } from '...' - var node = this.startNode(); - node.local = this.parseIdent(); - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportDefaultSpecifier") -}; +//# sourceMappingURL=cleanJSXElementLiteralChild.js.map -pp$8.parseImportNamespaceSpecifier = function() { - var node = this.startNode(); - this.next(); - this.expectContextual("as"); - node.local = this.parseIdent(); - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportNamespaceSpecifier") -}; -pp$8.parseImportSpecifiers = function() { - var nodes = [], first = true; - if (this.type === types$1.name) { - nodes.push(this.parseImportDefaultSpecifier()); - if (!this.eat(types$1.comma)) { return nodes } - } - if (this.type === types$1.star) { - nodes.push(this.parseImportNamespaceSpecifier()); - return nodes - } - this.expect(types$1.braceL); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } +/***/ }), - nodes.push(this.parseImportSpecifier()); - } - return nodes -}; +/***/ 56085: +/***/ ((__unused_webpack_module, exports) => { -pp$8.parseWithClause = function() { - var nodes = []; - if (!this.eat(types$1._with)) { - return nodes - } - this.expect(types$1.braceL); - var attributeKeys = {}; - var first = true; - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - var attr = this.parseImportAttribute(); - var keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value; - if (hasOwn(attributeKeys, keyName)) - { this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"); } - attributeKeys[keyName] = true; - nodes.push(attr); - } - return nodes -}; +"use strict"; -pp$8.parseImportAttribute = function() { - var node = this.startNode(); - node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"); - this.expect(types$1.colon); - if (this.type !== types$1.string) { - this.unexpected(); - } - node.value = this.parseExprAtom(); - return this.finishNode(node, "ImportAttribute") -}; -pp$8.parseModuleExportName = function() { - if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { - var stringLiteral = this.parseLiteral(this.value); - if (loneSurrogate.test(stringLiteral.value)) { - this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = shallowEqual; +function shallowEqual(actual, expected) { + const keys = Object.keys(expected); + for (const key of keys) { + if (actual[key] !== expected[key]) { + return false; } - return stringLiteral } - return this.parseIdent(true) -}; + return true; +} -// Set `ExpressionStatement#directive` property for directive prologues. -pp$8.adaptDirectivePrologue = function(statements) { - for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { - statements[i].directive = statements[i].expression.raw.slice(1, -1); - } -}; -pp$8.isDirectiveCandidate = function(statement) { - return ( - this.options.ecmaVersion >= 5 && - statement.type === "ExpressionStatement" && - statement.expression.type === "Literal" && - typeof statement.expression.value === "string" && - // Reject parenthesized strings. - (this.input[statement.start] === "\"" || this.input[statement.start] === "'") - ) -}; +//# sourceMappingURL=shallowEqual.js.map -var pp$7 = Parser.prototype; -// Convert existing expression atom to assignable pattern -// if possible. +/***/ }), -pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) { - if (this.options.ecmaVersion >= 6 && node) { - switch (node.type) { - case "Identifier": - if (this.inAsync && node.name === "await") - { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } - break +/***/ 77334: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - break +"use strict"; - case "ObjectExpression": - node.type = "ObjectPattern"; - if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - for (var i = 0, list = node.properties; i < list.length; i += 1) { - var prop = list[i]; - - this.toAssignable(prop, isBinding); - // Early error: - // AssignmentRestProperty[Yield, Await] : - // `...` DestructuringAssignmentTarget[Yield, Await] - // - // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. - if ( - prop.type === "RestElement" && - (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") - ) { - this.raise(prop.argument.start, "Unexpected token"); - } - } - break - case "Property": - // AssignmentProperty has type === "Property" - if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } - this.toAssignable(node.value, isBinding); - break +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = buildMatchMemberExpression; +var _matchesPattern = __nccwpck_require__(47814); +function buildMatchMemberExpression(match, allowPartial) { + const parts = match.split("."); + return member => (0, _matchesPattern.default)(member, parts, allowPartial); +} - case "ArrayExpression": - node.type = "ArrayPattern"; - if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - this.toAssignableList(node.elements, isBinding); - break +//# sourceMappingURL=buildMatchMemberExpression.js.map - case "SpreadElement": - node.type = "RestElement"; - this.toAssignable(node.argument, isBinding); - if (node.argument.type === "AssignmentPattern") - { this.raise(node.argument.start, "Rest elements cannot have a default value"); } - break - case "AssignmentExpression": - if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isBinding); - break +/***/ }), - case "ParenthesizedExpression": - this.toAssignable(node.expression, isBinding, refDestructuringErrors); - break +/***/ 40741: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - case "ChainExpression": - this.raiseRecoverable(node.start, "Optional chaining cannot appear in left-hand side"); - break +"use strict"; - case "MemberExpression": - if (!isBinding) { break } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isAccessor = isAccessor; +exports.isAnyTypeAnnotation = isAnyTypeAnnotation; +exports.isArgumentPlaceholder = isArgumentPlaceholder; +exports.isArrayExpression = isArrayExpression; +exports.isArrayPattern = isArrayPattern; +exports.isArrayTypeAnnotation = isArrayTypeAnnotation; +exports.isArrowFunctionExpression = isArrowFunctionExpression; +exports.isAssignmentExpression = isAssignmentExpression; +exports.isAssignmentPattern = isAssignmentPattern; +exports.isAwaitExpression = isAwaitExpression; +exports.isBigIntLiteral = isBigIntLiteral; +exports.isBinary = isBinary; +exports.isBinaryExpression = isBinaryExpression; +exports.isBindExpression = isBindExpression; +exports.isBlock = isBlock; +exports.isBlockParent = isBlockParent; +exports.isBlockStatement = isBlockStatement; +exports.isBooleanLiteral = isBooleanLiteral; +exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation; +exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation; +exports.isBreakStatement = isBreakStatement; +exports.isCallExpression = isCallExpression; +exports.isCatchClause = isCatchClause; +exports.isClass = isClass; +exports.isClassAccessorProperty = isClassAccessorProperty; +exports.isClassBody = isClassBody; +exports.isClassDeclaration = isClassDeclaration; +exports.isClassExpression = isClassExpression; +exports.isClassImplements = isClassImplements; +exports.isClassMethod = isClassMethod; +exports.isClassPrivateMethod = isClassPrivateMethod; +exports.isClassPrivateProperty = isClassPrivateProperty; +exports.isClassProperty = isClassProperty; +exports.isCompletionStatement = isCompletionStatement; +exports.isConditional = isConditional; +exports.isConditionalExpression = isConditionalExpression; +exports.isContinueStatement = isContinueStatement; +exports.isDebuggerStatement = isDebuggerStatement; +exports.isDecimalLiteral = isDecimalLiteral; +exports.isDeclaration = isDeclaration; +exports.isDeclareClass = isDeclareClass; +exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration; +exports.isDeclareExportDeclaration = isDeclareExportDeclaration; +exports.isDeclareFunction = isDeclareFunction; +exports.isDeclareInterface = isDeclareInterface; +exports.isDeclareModule = isDeclareModule; +exports.isDeclareModuleExports = isDeclareModuleExports; +exports.isDeclareOpaqueType = isDeclareOpaqueType; +exports.isDeclareTypeAlias = isDeclareTypeAlias; +exports.isDeclareVariable = isDeclareVariable; +exports.isDeclaredPredicate = isDeclaredPredicate; +exports.isDecorator = isDecorator; +exports.isDirective = isDirective; +exports.isDirectiveLiteral = isDirectiveLiteral; +exports.isDoExpression = isDoExpression; +exports.isDoWhileStatement = isDoWhileStatement; +exports.isEmptyStatement = isEmptyStatement; +exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation; +exports.isEnumBody = isEnumBody; +exports.isEnumBooleanBody = isEnumBooleanBody; +exports.isEnumBooleanMember = isEnumBooleanMember; +exports.isEnumDeclaration = isEnumDeclaration; +exports.isEnumDefaultedMember = isEnumDefaultedMember; +exports.isEnumMember = isEnumMember; +exports.isEnumNumberBody = isEnumNumberBody; +exports.isEnumNumberMember = isEnumNumberMember; +exports.isEnumStringBody = isEnumStringBody; +exports.isEnumStringMember = isEnumStringMember; +exports.isEnumSymbolBody = isEnumSymbolBody; +exports.isExistsTypeAnnotation = isExistsTypeAnnotation; +exports.isExportAllDeclaration = isExportAllDeclaration; +exports.isExportDeclaration = isExportDeclaration; +exports.isExportDefaultDeclaration = isExportDefaultDeclaration; +exports.isExportDefaultSpecifier = isExportDefaultSpecifier; +exports.isExportNamedDeclaration = isExportNamedDeclaration; +exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier; +exports.isExportSpecifier = isExportSpecifier; +exports.isExpression = isExpression; +exports.isExpressionStatement = isExpressionStatement; +exports.isExpressionWrapper = isExpressionWrapper; +exports.isFile = isFile; +exports.isFlow = isFlow; +exports.isFlowBaseAnnotation = isFlowBaseAnnotation; +exports.isFlowDeclaration = isFlowDeclaration; +exports.isFlowPredicate = isFlowPredicate; +exports.isFlowType = isFlowType; +exports.isFor = isFor; +exports.isForInStatement = isForInStatement; +exports.isForOfStatement = isForOfStatement; +exports.isForStatement = isForStatement; +exports.isForXStatement = isForXStatement; +exports.isFunction = isFunction; +exports.isFunctionDeclaration = isFunctionDeclaration; +exports.isFunctionExpression = isFunctionExpression; +exports.isFunctionParent = isFunctionParent; +exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation; +exports.isFunctionTypeParam = isFunctionTypeParam; +exports.isGenericTypeAnnotation = isGenericTypeAnnotation; +exports.isIdentifier = isIdentifier; +exports.isIfStatement = isIfStatement; +exports.isImmutable = isImmutable; +exports.isImport = isImport; +exports.isImportAttribute = isImportAttribute; +exports.isImportDeclaration = isImportDeclaration; +exports.isImportDefaultSpecifier = isImportDefaultSpecifier; +exports.isImportExpression = isImportExpression; +exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier; +exports.isImportOrExportDeclaration = isImportOrExportDeclaration; +exports.isImportSpecifier = isImportSpecifier; +exports.isIndexedAccessType = isIndexedAccessType; +exports.isInferredPredicate = isInferredPredicate; +exports.isInterfaceDeclaration = isInterfaceDeclaration; +exports.isInterfaceExtends = isInterfaceExtends; +exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation; +exports.isInterpreterDirective = isInterpreterDirective; +exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation; +exports.isJSX = isJSX; +exports.isJSXAttribute = isJSXAttribute; +exports.isJSXClosingElement = isJSXClosingElement; +exports.isJSXClosingFragment = isJSXClosingFragment; +exports.isJSXElement = isJSXElement; +exports.isJSXEmptyExpression = isJSXEmptyExpression; +exports.isJSXExpressionContainer = isJSXExpressionContainer; +exports.isJSXFragment = isJSXFragment; +exports.isJSXIdentifier = isJSXIdentifier; +exports.isJSXMemberExpression = isJSXMemberExpression; +exports.isJSXNamespacedName = isJSXNamespacedName; +exports.isJSXOpeningElement = isJSXOpeningElement; +exports.isJSXOpeningFragment = isJSXOpeningFragment; +exports.isJSXSpreadAttribute = isJSXSpreadAttribute; +exports.isJSXSpreadChild = isJSXSpreadChild; +exports.isJSXText = isJSXText; +exports.isLVal = isLVal; +exports.isLabeledStatement = isLabeledStatement; +exports.isLiteral = isLiteral; +exports.isLogicalExpression = isLogicalExpression; +exports.isLoop = isLoop; +exports.isMemberExpression = isMemberExpression; +exports.isMetaProperty = isMetaProperty; +exports.isMethod = isMethod; +exports.isMiscellaneous = isMiscellaneous; +exports.isMixedTypeAnnotation = isMixedTypeAnnotation; +exports.isModuleDeclaration = isModuleDeclaration; +exports.isModuleExpression = isModuleExpression; +exports.isModuleSpecifier = isModuleSpecifier; +exports.isNewExpression = isNewExpression; +exports.isNoop = isNoop; +exports.isNullLiteral = isNullLiteral; +exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation; +exports.isNullableTypeAnnotation = isNullableTypeAnnotation; +exports.isNumberLiteral = isNumberLiteral; +exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation; +exports.isNumberTypeAnnotation = isNumberTypeAnnotation; +exports.isNumericLiteral = isNumericLiteral; +exports.isObjectExpression = isObjectExpression; +exports.isObjectMember = isObjectMember; +exports.isObjectMethod = isObjectMethod; +exports.isObjectPattern = isObjectPattern; +exports.isObjectProperty = isObjectProperty; +exports.isObjectTypeAnnotation = isObjectTypeAnnotation; +exports.isObjectTypeCallProperty = isObjectTypeCallProperty; +exports.isObjectTypeIndexer = isObjectTypeIndexer; +exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot; +exports.isObjectTypeProperty = isObjectTypeProperty; +exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty; +exports.isOpaqueType = isOpaqueType; +exports.isOptionalCallExpression = isOptionalCallExpression; +exports.isOptionalIndexedAccessType = isOptionalIndexedAccessType; +exports.isOptionalMemberExpression = isOptionalMemberExpression; +exports.isParenthesizedExpression = isParenthesizedExpression; +exports.isPattern = isPattern; +exports.isPatternLike = isPatternLike; +exports.isPipelineBareFunction = isPipelineBareFunction; +exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference; +exports.isPipelineTopicExpression = isPipelineTopicExpression; +exports.isPlaceholder = isPlaceholder; +exports.isPrivate = isPrivate; +exports.isPrivateName = isPrivateName; +exports.isProgram = isProgram; +exports.isProperty = isProperty; +exports.isPureish = isPureish; +exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier; +exports.isRecordExpression = isRecordExpression; +exports.isRegExpLiteral = isRegExpLiteral; +exports.isRegexLiteral = isRegexLiteral; +exports.isRestElement = isRestElement; +exports.isRestProperty = isRestProperty; +exports.isReturnStatement = isReturnStatement; +exports.isScopable = isScopable; +exports.isSequenceExpression = isSequenceExpression; +exports.isSpreadElement = isSpreadElement; +exports.isSpreadProperty = isSpreadProperty; +exports.isStandardized = isStandardized; +exports.isStatement = isStatement; +exports.isStaticBlock = isStaticBlock; +exports.isStringLiteral = isStringLiteral; +exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation; +exports.isStringTypeAnnotation = isStringTypeAnnotation; +exports.isSuper = isSuper; +exports.isSwitchCase = isSwitchCase; +exports.isSwitchStatement = isSwitchStatement; +exports.isSymbolTypeAnnotation = isSymbolTypeAnnotation; +exports.isTSAnyKeyword = isTSAnyKeyword; +exports.isTSArrayType = isTSArrayType; +exports.isTSAsExpression = isTSAsExpression; +exports.isTSBaseType = isTSBaseType; +exports.isTSBigIntKeyword = isTSBigIntKeyword; +exports.isTSBooleanKeyword = isTSBooleanKeyword; +exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration; +exports.isTSConditionalType = isTSConditionalType; +exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration; +exports.isTSConstructorType = isTSConstructorType; +exports.isTSDeclareFunction = isTSDeclareFunction; +exports.isTSDeclareMethod = isTSDeclareMethod; +exports.isTSEntityName = isTSEntityName; +exports.isTSEnumBody = isTSEnumBody; +exports.isTSEnumDeclaration = isTSEnumDeclaration; +exports.isTSEnumMember = isTSEnumMember; +exports.isTSExportAssignment = isTSExportAssignment; +exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments; +exports.isTSExternalModuleReference = isTSExternalModuleReference; +exports.isTSFunctionType = isTSFunctionType; +exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration; +exports.isTSImportType = isTSImportType; +exports.isTSIndexSignature = isTSIndexSignature; +exports.isTSIndexedAccessType = isTSIndexedAccessType; +exports.isTSInferType = isTSInferType; +exports.isTSInstantiationExpression = isTSInstantiationExpression; +exports.isTSInterfaceBody = isTSInterfaceBody; +exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration; +exports.isTSIntersectionType = isTSIntersectionType; +exports.isTSIntrinsicKeyword = isTSIntrinsicKeyword; +exports.isTSLiteralType = isTSLiteralType; +exports.isTSMappedType = isTSMappedType; +exports.isTSMethodSignature = isTSMethodSignature; +exports.isTSModuleBlock = isTSModuleBlock; +exports.isTSModuleDeclaration = isTSModuleDeclaration; +exports.isTSNamedTupleMember = isTSNamedTupleMember; +exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration; +exports.isTSNeverKeyword = isTSNeverKeyword; +exports.isTSNonNullExpression = isTSNonNullExpression; +exports.isTSNullKeyword = isTSNullKeyword; +exports.isTSNumberKeyword = isTSNumberKeyword; +exports.isTSObjectKeyword = isTSObjectKeyword; +exports.isTSOptionalType = isTSOptionalType; +exports.isTSParameterProperty = isTSParameterProperty; +exports.isTSParenthesizedType = isTSParenthesizedType; +exports.isTSPropertySignature = isTSPropertySignature; +exports.isTSQualifiedName = isTSQualifiedName; +exports.isTSRestType = isTSRestType; +exports.isTSSatisfiesExpression = isTSSatisfiesExpression; +exports.isTSStringKeyword = isTSStringKeyword; +exports.isTSSymbolKeyword = isTSSymbolKeyword; +exports.isTSTemplateLiteralType = isTSTemplateLiteralType; +exports.isTSThisType = isTSThisType; +exports.isTSTupleType = isTSTupleType; +exports.isTSType = isTSType; +exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration; +exports.isTSTypeAnnotation = isTSTypeAnnotation; +exports.isTSTypeAssertion = isTSTypeAssertion; +exports.isTSTypeElement = isTSTypeElement; +exports.isTSTypeLiteral = isTSTypeLiteral; +exports.isTSTypeOperator = isTSTypeOperator; +exports.isTSTypeParameter = isTSTypeParameter; +exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration; +exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation; +exports.isTSTypePredicate = isTSTypePredicate; +exports.isTSTypeQuery = isTSTypeQuery; +exports.isTSTypeReference = isTSTypeReference; +exports.isTSUndefinedKeyword = isTSUndefinedKeyword; +exports.isTSUnionType = isTSUnionType; +exports.isTSUnknownKeyword = isTSUnknownKeyword; +exports.isTSVoidKeyword = isTSVoidKeyword; +exports.isTaggedTemplateExpression = isTaggedTemplateExpression; +exports.isTemplateElement = isTemplateElement; +exports.isTemplateLiteral = isTemplateLiteral; +exports.isTerminatorless = isTerminatorless; +exports.isThisExpression = isThisExpression; +exports.isThisTypeAnnotation = isThisTypeAnnotation; +exports.isThrowStatement = isThrowStatement; +exports.isTopicReference = isTopicReference; +exports.isTryStatement = isTryStatement; +exports.isTupleExpression = isTupleExpression; +exports.isTupleTypeAnnotation = isTupleTypeAnnotation; +exports.isTypeAlias = isTypeAlias; +exports.isTypeAnnotation = isTypeAnnotation; +exports.isTypeCastExpression = isTypeCastExpression; +exports.isTypeParameter = isTypeParameter; +exports.isTypeParameterDeclaration = isTypeParameterDeclaration; +exports.isTypeParameterInstantiation = isTypeParameterInstantiation; +exports.isTypeScript = isTypeScript; +exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation; +exports.isUnaryExpression = isUnaryExpression; +exports.isUnaryLike = isUnaryLike; +exports.isUnionTypeAnnotation = isUnionTypeAnnotation; +exports.isUpdateExpression = isUpdateExpression; +exports.isUserWhitespacable = isUserWhitespacable; +exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier; +exports.isVariableDeclaration = isVariableDeclaration; +exports.isVariableDeclarator = isVariableDeclarator; +exports.isVariance = isVariance; +exports.isVoidTypeAnnotation = isVoidTypeAnnotation; +exports.isWhile = isWhile; +exports.isWhileStatement = isWhileStatement; +exports.isWithStatement = isWithStatement; +exports.isYieldExpression = isYieldExpression; +var _shallowEqual = __nccwpck_require__(56085); +var _deprecationWarning = __nccwpck_require__(14711); +function isArrayExpression(node, opts) { + if (!node) return false; + if (node.type !== "ArrayExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isAssignmentExpression(node, opts) { + if (!node) return false; + if (node.type !== "AssignmentExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBinaryExpression(node, opts) { + if (!node) return false; + if (node.type !== "BinaryExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isInterpreterDirective(node, opts) { + if (!node) return false; + if (node.type !== "InterpreterDirective") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDirective(node, opts) { + if (!node) return false; + if (node.type !== "Directive") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDirectiveLiteral(node, opts) { + if (!node) return false; + if (node.type !== "DirectiveLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBlockStatement(node, opts) { + if (!node) return false; + if (node.type !== "BlockStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBreakStatement(node, opts) { + if (!node) return false; + if (node.type !== "BreakStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isCallExpression(node, opts) { + if (!node) return false; + if (node.type !== "CallExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isCatchClause(node, opts) { + if (!node) return false; + if (node.type !== "CatchClause") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isConditionalExpression(node, opts) { + if (!node) return false; + if (node.type !== "ConditionalExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isContinueStatement(node, opts) { + if (!node) return false; + if (node.type !== "ContinueStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDebuggerStatement(node, opts) { + if (!node) return false; + if (node.type !== "DebuggerStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDoWhileStatement(node, opts) { + if (!node) return false; + if (node.type !== "DoWhileStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEmptyStatement(node, opts) { + if (!node) return false; + if (node.type !== "EmptyStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExpressionStatement(node, opts) { + if (!node) return false; + if (node.type !== "ExpressionStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFile(node, opts) { + if (!node) return false; + if (node.type !== "File") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isForInStatement(node, opts) { + if (!node) return false; + if (node.type !== "ForInStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isForStatement(node, opts) { + if (!node) return false; + if (node.type !== "ForStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFunctionDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "FunctionDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFunctionExpression(node, opts) { + if (!node) return false; + if (node.type !== "FunctionExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isIdentifier(node, opts) { + if (!node) return false; + if (node.type !== "Identifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isIfStatement(node, opts) { + if (!node) return false; + if (node.type !== "IfStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isLabeledStatement(node, opts) { + if (!node) return false; + if (node.type !== "LabeledStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isStringLiteral(node, opts) { + if (!node) return false; + if (node.type !== "StringLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNumericLiteral(node, opts) { + if (!node) return false; + if (node.type !== "NumericLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNullLiteral(node, opts) { + if (!node) return false; + if (node.type !== "NullLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBooleanLiteral(node, opts) { + if (!node) return false; + if (node.type !== "BooleanLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isRegExpLiteral(node, opts) { + if (!node) return false; + if (node.type !== "RegExpLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isLogicalExpression(node, opts) { + if (!node) return false; + if (node.type !== "LogicalExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isMemberExpression(node, opts) { + if (!node) return false; + if (node.type !== "MemberExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNewExpression(node, opts) { + if (!node) return false; + if (node.type !== "NewExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isProgram(node, opts) { + if (!node) return false; + if (node.type !== "Program") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectExpression(node, opts) { + if (!node) return false; + if (node.type !== "ObjectExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectMethod(node, opts) { + if (!node) return false; + if (node.type !== "ObjectMethod") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectProperty(node, opts) { + if (!node) return false; + if (node.type !== "ObjectProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isRestElement(node, opts) { + if (!node) return false; + if (node.type !== "RestElement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isReturnStatement(node, opts) { + if (!node) return false; + if (node.type !== "ReturnStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSequenceExpression(node, opts) { + if (!node) return false; + if (node.type !== "SequenceExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isParenthesizedExpression(node, opts) { + if (!node) return false; + if (node.type !== "ParenthesizedExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSwitchCase(node, opts) { + if (!node) return false; + if (node.type !== "SwitchCase") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSwitchStatement(node, opts) { + if (!node) return false; + if (node.type !== "SwitchStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isThisExpression(node, opts) { + if (!node) return false; + if (node.type !== "ThisExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isThrowStatement(node, opts) { + if (!node) return false; + if (node.type !== "ThrowStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTryStatement(node, opts) { + if (!node) return false; + if (node.type !== "TryStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isUnaryExpression(node, opts) { + if (!node) return false; + if (node.type !== "UnaryExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isUpdateExpression(node, opts) { + if (!node) return false; + if (node.type !== "UpdateExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isVariableDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "VariableDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isVariableDeclarator(node, opts) { + if (!node) return false; + if (node.type !== "VariableDeclarator") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isWhileStatement(node, opts) { + if (!node) return false; + if (node.type !== "WhileStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isWithStatement(node, opts) { + if (!node) return false; + if (node.type !== "WithStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isAssignmentPattern(node, opts) { + if (!node) return false; + if (node.type !== "AssignmentPattern") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isArrayPattern(node, opts) { + if (!node) return false; + if (node.type !== "ArrayPattern") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isArrowFunctionExpression(node, opts) { + if (!node) return false; + if (node.type !== "ArrowFunctionExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassBody(node, opts) { + if (!node) return false; + if (node.type !== "ClassBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassExpression(node, opts) { + if (!node) return false; + if (node.type !== "ClassExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "ClassDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportAllDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "ExportAllDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportDefaultDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "ExportDefaultDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportNamedDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "ExportNamedDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportSpecifier(node, opts) { + if (!node) return false; + if (node.type !== "ExportSpecifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isForOfStatement(node, opts) { + if (!node) return false; + if (node.type !== "ForOfStatement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "ImportDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportDefaultSpecifier(node, opts) { + if (!node) return false; + if (node.type !== "ImportDefaultSpecifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportNamespaceSpecifier(node, opts) { + if (!node) return false; + if (node.type !== "ImportNamespaceSpecifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportSpecifier(node, opts) { + if (!node) return false; + if (node.type !== "ImportSpecifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportExpression(node, opts) { + if (!node) return false; + if (node.type !== "ImportExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isMetaProperty(node, opts) { + if (!node) return false; + if (node.type !== "MetaProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassMethod(node, opts) { + if (!node) return false; + if (node.type !== "ClassMethod") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectPattern(node, opts) { + if (!node) return false; + if (node.type !== "ObjectPattern") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSpreadElement(node, opts) { + if (!node) return false; + if (node.type !== "SpreadElement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSuper(node, opts) { + if (!node) return false; + if (node.type !== "Super") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTaggedTemplateExpression(node, opts) { + if (!node) return false; + if (node.type !== "TaggedTemplateExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTemplateElement(node, opts) { + if (!node) return false; + if (node.type !== "TemplateElement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTemplateLiteral(node, opts) { + if (!node) return false; + if (node.type !== "TemplateLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isYieldExpression(node, opts) { + if (!node) return false; + if (node.type !== "YieldExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isAwaitExpression(node, opts) { + if (!node) return false; + if (node.type !== "AwaitExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImport(node, opts) { + if (!node) return false; + if (node.type !== "Import") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBigIntLiteral(node, opts) { + if (!node) return false; + if (node.type !== "BigIntLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportNamespaceSpecifier(node, opts) { + if (!node) return false; + if (node.type !== "ExportNamespaceSpecifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isOptionalMemberExpression(node, opts) { + if (!node) return false; + if (node.type !== "OptionalMemberExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isOptionalCallExpression(node, opts) { + if (!node) return false; + if (node.type !== "OptionalCallExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassProperty(node, opts) { + if (!node) return false; + if (node.type !== "ClassProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassAccessorProperty(node, opts) { + if (!node) return false; + if (node.type !== "ClassAccessorProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassPrivateProperty(node, opts) { + if (!node) return false; + if (node.type !== "ClassPrivateProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassPrivateMethod(node, opts) { + if (!node) return false; + if (node.type !== "ClassPrivateMethod") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPrivateName(node, opts) { + if (!node) return false; + if (node.type !== "PrivateName") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isStaticBlock(node, opts) { + if (!node) return false; + if (node.type !== "StaticBlock") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportAttribute(node, opts) { + if (!node) return false; + if (node.type !== "ImportAttribute") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isAnyTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "AnyTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isArrayTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "ArrayTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBooleanTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "BooleanTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBooleanLiteralTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "BooleanLiteralTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNullLiteralTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "NullLiteralTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClassImplements(node, opts) { + if (!node) return false; + if (node.type !== "ClassImplements") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareClass(node, opts) { + if (!node) return false; + if (node.type !== "DeclareClass") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareFunction(node, opts) { + if (!node) return false; + if (node.type !== "DeclareFunction") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareInterface(node, opts) { + if (!node) return false; + if (node.type !== "DeclareInterface") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareModule(node, opts) { + if (!node) return false; + if (node.type !== "DeclareModule") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareModuleExports(node, opts) { + if (!node) return false; + if (node.type !== "DeclareModuleExports") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareTypeAlias(node, opts) { + if (!node) return false; + if (node.type !== "DeclareTypeAlias") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareOpaqueType(node, opts) { + if (!node) return false; + if (node.type !== "DeclareOpaqueType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareVariable(node, opts) { + if (!node) return false; + if (node.type !== "DeclareVariable") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareExportDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "DeclareExportDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclareExportAllDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "DeclareExportAllDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclaredPredicate(node, opts) { + if (!node) return false; + if (node.type !== "DeclaredPredicate") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExistsTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "ExistsTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFunctionTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "FunctionTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFunctionTypeParam(node, opts) { + if (!node) return false; + if (node.type !== "FunctionTypeParam") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isGenericTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "GenericTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isInferredPredicate(node, opts) { + if (!node) return false; + if (node.type !== "InferredPredicate") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isInterfaceExtends(node, opts) { + if (!node) return false; + if (node.type !== "InterfaceExtends") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isInterfaceDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "InterfaceDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isInterfaceTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "InterfaceTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isIntersectionTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "IntersectionTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isMixedTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "MixedTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEmptyTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "EmptyTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNullableTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "NullableTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNumberLiteralTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "NumberLiteralTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNumberTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "NumberTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "ObjectTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectTypeInternalSlot(node, opts) { + if (!node) return false; + if (node.type !== "ObjectTypeInternalSlot") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectTypeCallProperty(node, opts) { + if (!node) return false; + if (node.type !== "ObjectTypeCallProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectTypeIndexer(node, opts) { + if (!node) return false; + if (node.type !== "ObjectTypeIndexer") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectTypeProperty(node, opts) { + if (!node) return false; + if (node.type !== "ObjectTypeProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectTypeSpreadProperty(node, opts) { + if (!node) return false; + if (node.type !== "ObjectTypeSpreadProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isOpaqueType(node, opts) { + if (!node) return false; + if (node.type !== "OpaqueType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isQualifiedTypeIdentifier(node, opts) { + if (!node) return false; + if (node.type !== "QualifiedTypeIdentifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isStringLiteralTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "StringLiteralTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isStringTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "StringTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSymbolTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "SymbolTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isThisTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "ThisTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTupleTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "TupleTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeofTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "TypeofTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeAlias(node, opts) { + if (!node) return false; + if (node.type !== "TypeAlias") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "TypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeCastExpression(node, opts) { + if (!node) return false; + if (node.type !== "TypeCastExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeParameter(node, opts) { + if (!node) return false; + if (node.type !== "TypeParameter") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeParameterDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TypeParameterDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeParameterInstantiation(node, opts) { + if (!node) return false; + if (node.type !== "TypeParameterInstantiation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isUnionTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "UnionTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isVariance(node, opts) { + if (!node) return false; + if (node.type !== "Variance") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isVoidTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "VoidTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "EnumDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumBooleanBody(node, opts) { + if (!node) return false; + if (node.type !== "EnumBooleanBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumNumberBody(node, opts) { + if (!node) return false; + if (node.type !== "EnumNumberBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumStringBody(node, opts) { + if (!node) return false; + if (node.type !== "EnumStringBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumSymbolBody(node, opts) { + if (!node) return false; + if (node.type !== "EnumSymbolBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumBooleanMember(node, opts) { + if (!node) return false; + if (node.type !== "EnumBooleanMember") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumNumberMember(node, opts) { + if (!node) return false; + if (node.type !== "EnumNumberMember") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumStringMember(node, opts) { + if (!node) return false; + if (node.type !== "EnumStringMember") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumDefaultedMember(node, opts) { + if (!node) return false; + if (node.type !== "EnumDefaultedMember") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isIndexedAccessType(node, opts) { + if (!node) return false; + if (node.type !== "IndexedAccessType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isOptionalIndexedAccessType(node, opts) { + if (!node) return false; + if (node.type !== "OptionalIndexedAccessType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXAttribute(node, opts) { + if (!node) return false; + if (node.type !== "JSXAttribute") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXClosingElement(node, opts) { + if (!node) return false; + if (node.type !== "JSXClosingElement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXElement(node, opts) { + if (!node) return false; + if (node.type !== "JSXElement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXEmptyExpression(node, opts) { + if (!node) return false; + if (node.type !== "JSXEmptyExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXExpressionContainer(node, opts) { + if (!node) return false; + if (node.type !== "JSXExpressionContainer") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXSpreadChild(node, opts) { + if (!node) return false; + if (node.type !== "JSXSpreadChild") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXIdentifier(node, opts) { + if (!node) return false; + if (node.type !== "JSXIdentifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXMemberExpression(node, opts) { + if (!node) return false; + if (node.type !== "JSXMemberExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXNamespacedName(node, opts) { + if (!node) return false; + if (node.type !== "JSXNamespacedName") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXOpeningElement(node, opts) { + if (!node) return false; + if (node.type !== "JSXOpeningElement") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXSpreadAttribute(node, opts) { + if (!node) return false; + if (node.type !== "JSXSpreadAttribute") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXText(node, opts) { + if (!node) return false; + if (node.type !== "JSXText") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXFragment(node, opts) { + if (!node) return false; + if (node.type !== "JSXFragment") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXOpeningFragment(node, opts) { + if (!node) return false; + if (node.type !== "JSXOpeningFragment") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSXClosingFragment(node, opts) { + if (!node) return false; + if (node.type !== "JSXClosingFragment") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNoop(node, opts) { + if (!node) return false; + if (node.type !== "Noop") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPlaceholder(node, opts) { + if (!node) return false; + if (node.type !== "Placeholder") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isV8IntrinsicIdentifier(node, opts) { + if (!node) return false; + if (node.type !== "V8IntrinsicIdentifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isArgumentPlaceholder(node, opts) { + if (!node) return false; + if (node.type !== "ArgumentPlaceholder") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBindExpression(node, opts) { + if (!node) return false; + if (node.type !== "BindExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDecorator(node, opts) { + if (!node) return false; + if (node.type !== "Decorator") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDoExpression(node, opts) { + if (!node) return false; + if (node.type !== "DoExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportDefaultSpecifier(node, opts) { + if (!node) return false; + if (node.type !== "ExportDefaultSpecifier") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isRecordExpression(node, opts) { + if (!node) return false; + if (node.type !== "RecordExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTupleExpression(node, opts) { + if (!node) return false; + if (node.type !== "TupleExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDecimalLiteral(node, opts) { + if (!node) return false; + if (node.type !== "DecimalLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isModuleExpression(node, opts) { + if (!node) return false; + if (node.type !== "ModuleExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTopicReference(node, opts) { + if (!node) return false; + if (node.type !== "TopicReference") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPipelineTopicExpression(node, opts) { + if (!node) return false; + if (node.type !== "PipelineTopicExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPipelineBareFunction(node, opts) { + if (!node) return false; + if (node.type !== "PipelineBareFunction") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPipelinePrimaryTopicReference(node, opts) { + if (!node) return false; + if (node.type !== "PipelinePrimaryTopicReference") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSParameterProperty(node, opts) { + if (!node) return false; + if (node.type !== "TSParameterProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSDeclareFunction(node, opts) { + if (!node) return false; + if (node.type !== "TSDeclareFunction") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSDeclareMethod(node, opts) { + if (!node) return false; + if (node.type !== "TSDeclareMethod") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSQualifiedName(node, opts) { + if (!node) return false; + if (node.type !== "TSQualifiedName") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSCallSignatureDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSCallSignatureDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSConstructSignatureDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSConstructSignatureDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSPropertySignature(node, opts) { + if (!node) return false; + if (node.type !== "TSPropertySignature") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSMethodSignature(node, opts) { + if (!node) return false; + if (node.type !== "TSMethodSignature") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSIndexSignature(node, opts) { + if (!node) return false; + if (node.type !== "TSIndexSignature") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSAnyKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSAnyKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSBooleanKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSBooleanKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSBigIntKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSBigIntKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSIntrinsicKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSIntrinsicKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSNeverKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSNeverKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSNullKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSNullKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSNumberKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSNumberKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSObjectKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSObjectKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSStringKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSStringKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSSymbolKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSSymbolKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSUndefinedKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSUndefinedKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSUnknownKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSUnknownKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSVoidKeyword(node, opts) { + if (!node) return false; + if (node.type !== "TSVoidKeyword") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSThisType(node, opts) { + if (!node) return false; + if (node.type !== "TSThisType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSFunctionType(node, opts) { + if (!node) return false; + if (node.type !== "TSFunctionType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSConstructorType(node, opts) { + if (!node) return false; + if (node.type !== "TSConstructorType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeReference(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeReference") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypePredicate(node, opts) { + if (!node) return false; + if (node.type !== "TSTypePredicate") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeQuery(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeQuery") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeLiteral(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSArrayType(node, opts) { + if (!node) return false; + if (node.type !== "TSArrayType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTupleType(node, opts) { + if (!node) return false; + if (node.type !== "TSTupleType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSOptionalType(node, opts) { + if (!node) return false; + if (node.type !== "TSOptionalType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSRestType(node, opts) { + if (!node) return false; + if (node.type !== "TSRestType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSNamedTupleMember(node, opts) { + if (!node) return false; + if (node.type !== "TSNamedTupleMember") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSUnionType(node, opts) { + if (!node) return false; + if (node.type !== "TSUnionType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSIntersectionType(node, opts) { + if (!node) return false; + if (node.type !== "TSIntersectionType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSConditionalType(node, opts) { + if (!node) return false; + if (node.type !== "TSConditionalType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSInferType(node, opts) { + if (!node) return false; + if (node.type !== "TSInferType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSParenthesizedType(node, opts) { + if (!node) return false; + if (node.type !== "TSParenthesizedType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeOperator(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeOperator") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSIndexedAccessType(node, opts) { + if (!node) return false; + if (node.type !== "TSIndexedAccessType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSMappedType(node, opts) { + if (!node) return false; + if (node.type !== "TSMappedType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTemplateLiteralType(node, opts) { + if (!node) return false; + if (node.type !== "TSTemplateLiteralType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSLiteralType(node, opts) { + if (!node) return false; + if (node.type !== "TSLiteralType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSExpressionWithTypeArguments(node, opts) { + if (!node) return false; + if (node.type !== "TSExpressionWithTypeArguments") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSInterfaceDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSInterfaceDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSInterfaceBody(node, opts) { + if (!node) return false; + if (node.type !== "TSInterfaceBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeAliasDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeAliasDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSInstantiationExpression(node, opts) { + if (!node) return false; + if (node.type !== "TSInstantiationExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSAsExpression(node, opts) { + if (!node) return false; + if (node.type !== "TSAsExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSSatisfiesExpression(node, opts) { + if (!node) return false; + if (node.type !== "TSSatisfiesExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeAssertion(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeAssertion") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSEnumBody(node, opts) { + if (!node) return false; + if (node.type !== "TSEnumBody") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSEnumDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSEnumDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSEnumMember(node, opts) { + if (!node) return false; + if (node.type !== "TSEnumMember") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSModuleDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSModuleDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSModuleBlock(node, opts) { + if (!node) return false; + if (node.type !== "TSModuleBlock") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSImportType(node, opts) { + if (!node) return false; + if (node.type !== "TSImportType") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSImportEqualsDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSImportEqualsDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSExternalModuleReference(node, opts) { + if (!node) return false; + if (node.type !== "TSExternalModuleReference") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSNonNullExpression(node, opts) { + if (!node) return false; + if (node.type !== "TSNonNullExpression") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSExportAssignment(node, opts) { + if (!node) return false; + if (node.type !== "TSExportAssignment") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSNamespaceExportDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSNamespaceExportDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeAnnotation(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeAnnotation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeParameterInstantiation(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeParameterInstantiation") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeParameterDeclaration(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeParameterDeclaration") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeParameter(node, opts) { + if (!node) return false; + if (node.type !== "TSTypeParameter") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isStandardized(node, opts) { + if (!node) return false; + switch (node.type) { + case "ArrayExpression": + case "AssignmentExpression": + case "BinaryExpression": + case "InterpreterDirective": + case "Directive": + case "DirectiveLiteral": + case "BlockStatement": + case "BreakStatement": + case "CallExpression": + case "CatchClause": + case "ConditionalExpression": + case "ContinueStatement": + case "DebuggerStatement": + case "DoWhileStatement": + case "EmptyStatement": + case "ExpressionStatement": + case "File": + case "ForInStatement": + case "ForStatement": + case "FunctionDeclaration": + case "FunctionExpression": + case "Identifier": + case "IfStatement": + case "LabeledStatement": + case "StringLiteral": + case "NumericLiteral": + case "NullLiteral": + case "BooleanLiteral": + case "RegExpLiteral": + case "LogicalExpression": + case "MemberExpression": + case "NewExpression": + case "Program": + case "ObjectExpression": + case "ObjectMethod": + case "ObjectProperty": + case "RestElement": + case "ReturnStatement": + case "SequenceExpression": + case "ParenthesizedExpression": + case "SwitchCase": + case "SwitchStatement": + case "ThisExpression": + case "ThrowStatement": + case "TryStatement": + case "UnaryExpression": + case "UpdateExpression": + case "VariableDeclaration": + case "VariableDeclarator": + case "WhileStatement": + case "WithStatement": + case "AssignmentPattern": + case "ArrayPattern": + case "ArrowFunctionExpression": + case "ClassBody": + case "ClassExpression": + case "ClassDeclaration": + case "ExportAllDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + case "ExportSpecifier": + case "ForOfStatement": + case "ImportDeclaration": + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + case "ImportExpression": + case "MetaProperty": + case "ClassMethod": + case "ObjectPattern": + case "SpreadElement": + case "Super": + case "TaggedTemplateExpression": + case "TemplateElement": + case "TemplateLiteral": + case "YieldExpression": + case "AwaitExpression": + case "Import": + case "BigIntLiteral": + case "ExportNamespaceSpecifier": + case "OptionalMemberExpression": + case "OptionalCallExpression": + case "ClassProperty": + case "ClassAccessorProperty": + case "ClassPrivateProperty": + case "ClassPrivateMethod": + case "PrivateName": + case "StaticBlock": + case "ImportAttribute": + break; + case "Placeholder": + switch (node.expectedNode) { + case "Identifier": + case "StringLiteral": + case "BlockStatement": + case "ClassBody": + break; + default: + return false; + } + break; default: - this.raise(node.start, "Assigning to rvalue"); - } - } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - return node -}; - -// Convert list of expression atoms to binding list. - -pp$7.toAssignableList = function(exprList, isBinding) { - var end = exprList.length; - for (var i = 0; i < end; i++) { - var elt = exprList[i]; - if (elt) { this.toAssignable(elt, isBinding); } + return false; } - if (end) { - var last = exprList[end - 1]; - if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") - { this.unexpected(last.argument.start); } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExpression(node, opts) { + if (!node) return false; + switch (node.type) { + case "ArrayExpression": + case "AssignmentExpression": + case "BinaryExpression": + case "CallExpression": + case "ConditionalExpression": + case "FunctionExpression": + case "Identifier": + case "StringLiteral": + case "NumericLiteral": + case "NullLiteral": + case "BooleanLiteral": + case "RegExpLiteral": + case "LogicalExpression": + case "MemberExpression": + case "NewExpression": + case "ObjectExpression": + case "SequenceExpression": + case "ParenthesizedExpression": + case "ThisExpression": + case "UnaryExpression": + case "UpdateExpression": + case "ArrowFunctionExpression": + case "ClassExpression": + case "ImportExpression": + case "MetaProperty": + case "Super": + case "TaggedTemplateExpression": + case "TemplateLiteral": + case "YieldExpression": + case "AwaitExpression": + case "Import": + case "BigIntLiteral": + case "OptionalMemberExpression": + case "OptionalCallExpression": + case "TypeCastExpression": + case "JSXElement": + case "JSXFragment": + case "BindExpression": + case "DoExpression": + case "RecordExpression": + case "TupleExpression": + case "DecimalLiteral": + case "ModuleExpression": + case "TopicReference": + case "PipelineTopicExpression": + case "PipelineBareFunction": + case "PipelinePrimaryTopicReference": + case "TSInstantiationExpression": + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + break; + case "Placeholder": + switch (node.expectedNode) { + case "Expression": + case "Identifier": + case "StringLiteral": + break; + default: + return false; + } + break; + default: + return false; } - return exprList -}; - -// Parses spread element. - -pp$7.parseSpread = function(refDestructuringErrors) { - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeAssign(false, refDestructuringErrors); - return this.finishNode(node, "SpreadElement") -}; - -pp$7.parseRestBinding = function() { - var node = this.startNode(); - this.next(); - - // RestElement inside of a function parameter must be an identifier - if (this.options.ecmaVersion === 6 && this.type !== types$1.name) - { this.unexpected(); } - - node.argument = this.parseBindingAtom(); - - return this.finishNode(node, "RestElement") -}; - -// Parses lvalue (assignable) atom. - -pp$7.parseBindingAtom = function() { - if (this.options.ecmaVersion >= 6) { - switch (this.type) { - case types$1.bracketL: - var node = this.startNode(); - this.next(); - node.elements = this.parseBindingList(types$1.bracketR, true, true); - return this.finishNode(node, "ArrayPattern") - - case types$1.braceL: - return this.parseObj(true) - } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBinary(node, opts) { + if (!node) return false; + switch (node.type) { + case "BinaryExpression": + case "LogicalExpression": + break; + default: + return false; } - return this.parseIdent() -}; - -pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) { - var elts = [], first = true; - while (!this.eat(close)) { - if (first) { first = false; } - else { this.expect(types$1.comma); } - if (allowEmpty && this.type === types$1.comma) { - elts.push(null); - } else if (allowTrailingComma && this.afterTrailingComma(close)) { - break - } else if (this.type === types$1.ellipsis) { - var rest = this.parseRestBinding(); - this.parseBindingListItem(rest); - elts.push(rest); - if (this.type === types$1.comma) { this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); } - this.expect(close); - break - } else { - elts.push(this.parseAssignableListItem(allowModifiers)); - } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isScopable(node, opts) { + if (!node) return false; + switch (node.type) { + case "BlockStatement": + case "CatchClause": + case "DoWhileStatement": + case "ForInStatement": + case "ForStatement": + case "FunctionDeclaration": + case "FunctionExpression": + case "Program": + case "ObjectMethod": + case "SwitchStatement": + case "WhileStatement": + case "ArrowFunctionExpression": + case "ClassExpression": + case "ClassDeclaration": + case "ForOfStatement": + case "ClassMethod": + case "ClassPrivateMethod": + case "StaticBlock": + case "TSModuleBlock": + break; + case "Placeholder": + if (node.expectedNode === "BlockStatement") break; + default: + return false; } - return elts -}; - -pp$7.parseAssignableListItem = function(allowModifiers) { - var elem = this.parseMaybeDefault(this.start, this.startLoc); - this.parseBindingListItem(elem); - return elem -}; - -pp$7.parseBindingListItem = function(param) { - return param -}; - -// Parses assignment pattern around given atom if possible. - -pp$7.parseMaybeDefault = function(startPos, startLoc, left) { - left = left || this.parseBindingAtom(); - if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left } - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.right = this.parseMaybeAssign(); - return this.finishNode(node, "AssignmentPattern") -}; - -// The following three functions all verify that a node is an lvalue — -// something that can be bound, or assigned to. In order to do so, they perform -// a variety of checks: -// -// - Check that none of the bound/assigned-to identifiers are reserved words. -// - Record name declarations for bindings in the appropriate scope. -// - Check duplicate argument names, if checkClashes is set. -// -// If a complex binding pattern is encountered (e.g., object and array -// destructuring), the entire pattern is recursively checked. -// -// There are three versions of checkLVal*() appropriate for different -// circumstances: -// -// - checkLValSimple() shall be used if the syntactic construct supports -// nothing other than identifiers and member expressions. Parenthesized -// expressions are also correctly handled. This is generally appropriate for -// constructs for which the spec says -// -// > It is a Syntax Error if AssignmentTargetType of [the production] is not -// > simple. -// -// It is also appropriate for checking if an identifier is valid and not -// defined elsewhere, like import declarations or function/class identifiers. -// -// Examples where this is used include: -// a += …; -// import a from '…'; -// where a is the node to be checked. -// -// - checkLValPattern() shall be used if the syntactic construct supports -// anything checkLValSimple() supports, as well as object and array -// destructuring patterns. This is generally appropriate for constructs for -// which the spec says -// -// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor -// > an ArrayLiteral and AssignmentTargetType of [the production] is not -// > simple. -// -// Examples where this is used include: -// (a = …); -// const a = …; -// try { … } catch (a) { … } -// where a is the node to be checked. -// -// - checkLValInnerPattern() shall be used if the syntactic construct supports -// anything checkLValPattern() supports, as well as default assignment -// patterns, rest elements, and other constructs that may appear within an -// object or array destructuring pattern. -// -// As a special case, function parameters also use checkLValInnerPattern(), -// as they also support defaults and rest constructs. -// -// These functions deliberately support both assignment and binding constructs, -// as the logic for both is exceedingly similar. If the node is the target of -// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it -// should be set to the appropriate BIND_* constant, like BIND_VAR or -// BIND_LEXICAL. -// -// If the function is called with a non-BIND_NONE bindingType, then -// additionally a checkClashes object may be specified to allow checking for -// duplicate argument names. checkClashes is ignored if the provided construct -// is an assignment (i.e., bindingType is BIND_NONE). - -pp$7.checkLValSimple = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; - - var isBind = bindingType !== BIND_NONE; - - switch (expr.type) { - case "Identifier": - if (this.strict && this.reservedWordsStrictBind.test(expr.name)) - { this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } - if (isBind) { - if (bindingType === BIND_LEXICAL && expr.name === "let") - { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } - if (checkClashes) { - if (hasOwn(checkClashes, expr.name)) - { this.raiseRecoverable(expr.start, "Argument name clash"); } - checkClashes[expr.name] = true; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBlockParent(node, opts) { + if (!node) return false; + switch (node.type) { + case "BlockStatement": + case "CatchClause": + case "DoWhileStatement": + case "ForInStatement": + case "ForStatement": + case "FunctionDeclaration": + case "FunctionExpression": + case "Program": + case "ObjectMethod": + case "SwitchStatement": + case "WhileStatement": + case "ArrowFunctionExpression": + case "ForOfStatement": + case "ClassMethod": + case "ClassPrivateMethod": + case "StaticBlock": + case "TSModuleBlock": + break; + case "Placeholder": + if (node.expectedNode === "BlockStatement") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isBlock(node, opts) { + if (!node) return false; + switch (node.type) { + case "BlockStatement": + case "Program": + case "TSModuleBlock": + break; + case "Placeholder": + if (node.expectedNode === "BlockStatement") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isStatement(node, opts) { + if (!node) return false; + switch (node.type) { + case "BlockStatement": + case "BreakStatement": + case "ContinueStatement": + case "DebuggerStatement": + case "DoWhileStatement": + case "EmptyStatement": + case "ExpressionStatement": + case "ForInStatement": + case "ForStatement": + case "FunctionDeclaration": + case "IfStatement": + case "LabeledStatement": + case "ReturnStatement": + case "SwitchStatement": + case "ThrowStatement": + case "TryStatement": + case "VariableDeclaration": + case "WhileStatement": + case "WithStatement": + case "ClassDeclaration": + case "ExportAllDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + case "ForOfStatement": + case "ImportDeclaration": + case "DeclareClass": + case "DeclareFunction": + case "DeclareInterface": + case "DeclareModule": + case "DeclareModuleExports": + case "DeclareTypeAlias": + case "DeclareOpaqueType": + case "DeclareVariable": + case "DeclareExportDeclaration": + case "DeclareExportAllDeclaration": + case "InterfaceDeclaration": + case "OpaqueType": + case "TypeAlias": + case "EnumDeclaration": + case "TSDeclareFunction": + case "TSInterfaceDeclaration": + case "TSTypeAliasDeclaration": + case "TSEnumDeclaration": + case "TSModuleDeclaration": + case "TSImportEqualsDeclaration": + case "TSExportAssignment": + case "TSNamespaceExportDeclaration": + break; + case "Placeholder": + switch (node.expectedNode) { + case "Statement": + case "Declaration": + case "BlockStatement": + break; + default: + return false; } - if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } - } - break - - case "ChainExpression": - this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side"); - break - - case "MemberExpression": - if (isBind) { this.raiseRecoverable(expr.start, "Binding member expression"); } - break - - case "ParenthesizedExpression": - if (isBind) { this.raiseRecoverable(expr.start, "Binding parenthesized expression"); } - return this.checkLValSimple(expr.expression, bindingType, checkClashes) - - default: - this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue"); + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTerminatorless(node, opts) { + if (!node) return false; + switch (node.type) { + case "BreakStatement": + case "ContinueStatement": + case "ReturnStatement": + case "ThrowStatement": + case "YieldExpression": + case "AwaitExpression": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isCompletionStatement(node, opts) { + if (!node) return false; + switch (node.type) { + case "BreakStatement": + case "ContinueStatement": + case "ReturnStatement": + case "ThrowStatement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isConditional(node, opts) { + if (!node) return false; + switch (node.type) { + case "ConditionalExpression": + case "IfStatement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isLoop(node, opts) { + if (!node) return false; + switch (node.type) { + case "DoWhileStatement": + case "ForInStatement": + case "ForStatement": + case "WhileStatement": + case "ForOfStatement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isWhile(node, opts) { + if (!node) return false; + switch (node.type) { + case "DoWhileStatement": + case "WhileStatement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExpressionWrapper(node, opts) { + if (!node) return false; + switch (node.type) { + case "ExpressionStatement": + case "ParenthesizedExpression": + case "TypeCastExpression": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFor(node, opts) { + if (!node) return false; + switch (node.type) { + case "ForInStatement": + case "ForStatement": + case "ForOfStatement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isForXStatement(node, opts) { + if (!node) return false; + switch (node.type) { + case "ForInStatement": + case "ForOfStatement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFunction(node, opts) { + if (!node) return false; + switch (node.type) { + case "FunctionDeclaration": + case "FunctionExpression": + case "ObjectMethod": + case "ArrowFunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFunctionParent(node, opts) { + if (!node) return false; + switch (node.type) { + case "FunctionDeclaration": + case "FunctionExpression": + case "ObjectMethod": + case "ArrowFunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + case "StaticBlock": + case "TSModuleBlock": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPureish(node, opts) { + if (!node) return false; + switch (node.type) { + case "FunctionDeclaration": + case "FunctionExpression": + case "StringLiteral": + case "NumericLiteral": + case "NullLiteral": + case "BooleanLiteral": + case "RegExpLiteral": + case "ArrowFunctionExpression": + case "BigIntLiteral": + case "DecimalLiteral": + break; + case "Placeholder": + if (node.expectedNode === "StringLiteral") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isDeclaration(node, opts) { + if (!node) return false; + switch (node.type) { + case "FunctionDeclaration": + case "VariableDeclaration": + case "ClassDeclaration": + case "ExportAllDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + case "ImportDeclaration": + case "DeclareClass": + case "DeclareFunction": + case "DeclareInterface": + case "DeclareModule": + case "DeclareModuleExports": + case "DeclareTypeAlias": + case "DeclareOpaqueType": + case "DeclareVariable": + case "DeclareExportDeclaration": + case "DeclareExportAllDeclaration": + case "InterfaceDeclaration": + case "OpaqueType": + case "TypeAlias": + case "EnumDeclaration": + case "TSDeclareFunction": + case "TSInterfaceDeclaration": + case "TSTypeAliasDeclaration": + case "TSEnumDeclaration": + case "TSModuleDeclaration": + case "TSImportEqualsDeclaration": + break; + case "Placeholder": + if (node.expectedNode === "Declaration") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPatternLike(node, opts) { + if (!node) return false; + switch (node.type) { + case "Identifier": + case "RestElement": + case "AssignmentPattern": + case "ArrayPattern": + case "ObjectPattern": + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + break; + case "Placeholder": + switch (node.expectedNode) { + case "Pattern": + case "Identifier": + break; + default: + return false; + } + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isLVal(node, opts) { + if (!node) return false; + switch (node.type) { + case "Identifier": + case "MemberExpression": + case "RestElement": + case "AssignmentPattern": + case "ArrayPattern": + case "ObjectPattern": + case "TSParameterProperty": + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + break; + case "Placeholder": + switch (node.expectedNode) { + case "Pattern": + case "Identifier": + break; + default: + return false; + } + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSEntityName(node, opts) { + if (!node) return false; + switch (node.type) { + case "Identifier": + case "TSQualifiedName": + break; + case "Placeholder": + if (node.expectedNode === "Identifier") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isLiteral(node, opts) { + if (!node) return false; + switch (node.type) { + case "StringLiteral": + case "NumericLiteral": + case "NullLiteral": + case "BooleanLiteral": + case "RegExpLiteral": + case "TemplateLiteral": + case "BigIntLiteral": + case "DecimalLiteral": + break; + case "Placeholder": + if (node.expectedNode === "StringLiteral") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImmutable(node, opts) { + if (!node) return false; + switch (node.type) { + case "StringLiteral": + case "NumericLiteral": + case "NullLiteral": + case "BooleanLiteral": + case "BigIntLiteral": + case "JSXAttribute": + case "JSXClosingElement": + case "JSXElement": + case "JSXExpressionContainer": + case "JSXSpreadChild": + case "JSXOpeningElement": + case "JSXText": + case "JSXFragment": + case "JSXOpeningFragment": + case "JSXClosingFragment": + case "DecimalLiteral": + break; + case "Placeholder": + if (node.expectedNode === "StringLiteral") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isUserWhitespacable(node, opts) { + if (!node) return false; + switch (node.type) { + case "ObjectMethod": + case "ObjectProperty": + case "ObjectTypeInternalSlot": + case "ObjectTypeCallProperty": + case "ObjectTypeIndexer": + case "ObjectTypeProperty": + case "ObjectTypeSpreadProperty": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isMethod(node, opts) { + if (!node) return false; + switch (node.type) { + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isObjectMember(node, opts) { + if (!node) return false; + switch (node.type) { + case "ObjectMethod": + case "ObjectProperty": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isProperty(node, opts) { + if (!node) return false; + switch (node.type) { + case "ObjectProperty": + case "ClassProperty": + case "ClassAccessorProperty": + case "ClassPrivateProperty": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isUnaryLike(node, opts) { + if (!node) return false; + switch (node.type) { + case "UnaryExpression": + case "SpreadElement": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPattern(node, opts) { + if (!node) return false; + switch (node.type) { + case "AssignmentPattern": + case "ArrayPattern": + case "ObjectPattern": + break; + case "Placeholder": + if (node.expectedNode === "Pattern") break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isClass(node, opts) { + if (!node) return false; + switch (node.type) { + case "ClassExpression": + case "ClassDeclaration": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isImportOrExportDeclaration(node, opts) { + if (!node) return false; + switch (node.type) { + case "ExportAllDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + case "ImportDeclaration": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isExportDeclaration(node, opts) { + if (!node) return false; + switch (node.type) { + case "ExportAllDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isModuleSpecifier(node, opts) { + if (!node) return false; + switch (node.type) { + case "ExportSpecifier": + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + break; + default: + return false; } -}; - -pp$7.checkLValPattern = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; - - switch (expr.type) { - case "ObjectPattern": - for (var i = 0, list = expr.properties; i < list.length; i += 1) { - var prop = list[i]; - - this.checkLValInnerPattern(prop, bindingType, checkClashes); - } - break - - case "ArrayPattern": - for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { - var elem = list$1[i$1]; - - if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); } - } - break - - default: - this.checkLValSimple(expr, bindingType, checkClashes); + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isAccessor(node, opts) { + if (!node) return false; + switch (node.type) { + case "ClassAccessorProperty": + break; + default: + return false; } -}; - -pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; - - switch (expr.type) { - case "Property": - // AssignmentProperty has type === "Property" - this.checkLValInnerPattern(expr.value, bindingType, checkClashes); - break - - case "AssignmentPattern": - this.checkLValPattern(expr.left, bindingType, checkClashes); - break - - case "RestElement": - this.checkLValPattern(expr.argument, bindingType, checkClashes); - break - - default: - this.checkLValPattern(expr, bindingType, checkClashes); + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isPrivate(node, opts) { + if (!node) return false; + switch (node.type) { + case "ClassPrivateProperty": + case "ClassPrivateMethod": + case "PrivateName": + break; + default: + return false; } -}; - -// The algorithm used to determine whether a regexp can appear at a -// given point in the program is loosely based on sweet.js' approach. -// See https://github.com/mozilla/sweet.js/wiki/design - - -var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; - this.generator = !!generator; -}; - -var types = { - b_stat: new TokContext("{", false), - b_expr: new TokContext("{", true), - b_tmpl: new TokContext("${", false), - p_stat: new TokContext("(", false), - p_expr: new TokContext("(", true), - q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), - f_stat: new TokContext("function", false), - f_expr: new TokContext("function", true), - f_expr_gen: new TokContext("function", true, false, null, true), - f_gen: new TokContext("function", false, false, null, true) -}; - -var pp$6 = Parser.prototype; - -pp$6.initialContext = function() { - return [types.b_stat] -}; - -pp$6.curContext = function() { - return this.context[this.context.length - 1] -}; - -pp$6.braceIsBlock = function(prevType) { - var parent = this.curContext(); - if (parent === types.f_expr || parent === types.f_stat) - { return true } - if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr)) - { return !parent.isExpr } - - // The check for `tt.name && exprAllowed` detects whether we are - // after a `yield` or `of` construct. See the `updateContext` for - // `tt.name`. - if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed) - { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } - if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow) - { return true } - if (prevType === types$1.braceL) - { return parent === types.b_stat } - if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name) - { return false } - return !this.exprAllowed -}; - -pp$6.inGeneratorContext = function() { - for (var i = this.context.length - 1; i >= 1; i--) { - var context = this.context[i]; - if (context.token === "function") - { return context.generator } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFlow(node, opts) { + if (!node) return false; + switch (node.type) { + case "AnyTypeAnnotation": + case "ArrayTypeAnnotation": + case "BooleanTypeAnnotation": + case "BooleanLiteralTypeAnnotation": + case "NullLiteralTypeAnnotation": + case "ClassImplements": + case "DeclareClass": + case "DeclareFunction": + case "DeclareInterface": + case "DeclareModule": + case "DeclareModuleExports": + case "DeclareTypeAlias": + case "DeclareOpaqueType": + case "DeclareVariable": + case "DeclareExportDeclaration": + case "DeclareExportAllDeclaration": + case "DeclaredPredicate": + case "ExistsTypeAnnotation": + case "FunctionTypeAnnotation": + case "FunctionTypeParam": + case "GenericTypeAnnotation": + case "InferredPredicate": + case "InterfaceExtends": + case "InterfaceDeclaration": + case "InterfaceTypeAnnotation": + case "IntersectionTypeAnnotation": + case "MixedTypeAnnotation": + case "EmptyTypeAnnotation": + case "NullableTypeAnnotation": + case "NumberLiteralTypeAnnotation": + case "NumberTypeAnnotation": + case "ObjectTypeAnnotation": + case "ObjectTypeInternalSlot": + case "ObjectTypeCallProperty": + case "ObjectTypeIndexer": + case "ObjectTypeProperty": + case "ObjectTypeSpreadProperty": + case "OpaqueType": + case "QualifiedTypeIdentifier": + case "StringLiteralTypeAnnotation": + case "StringTypeAnnotation": + case "SymbolTypeAnnotation": + case "ThisTypeAnnotation": + case "TupleTypeAnnotation": + case "TypeofTypeAnnotation": + case "TypeAlias": + case "TypeAnnotation": + case "TypeCastExpression": + case "TypeParameter": + case "TypeParameterDeclaration": + case "TypeParameterInstantiation": + case "UnionTypeAnnotation": + case "Variance": + case "VoidTypeAnnotation": + case "EnumDeclaration": + case "EnumBooleanBody": + case "EnumNumberBody": + case "EnumStringBody": + case "EnumSymbolBody": + case "EnumBooleanMember": + case "EnumNumberMember": + case "EnumStringMember": + case "EnumDefaultedMember": + case "IndexedAccessType": + case "OptionalIndexedAccessType": + break; + default: + return false; } - return false -}; - -pp$6.updateContext = function(prevType) { - var update, type = this.type; - if (type.keyword && prevType === types$1.dot) - { this.exprAllowed = false; } - else if (update = type.updateContext) - { update.call(this, prevType); } - else - { this.exprAllowed = type.beforeExpr; } -}; - -// Used to handle edge cases when token context could not be inferred correctly during tokenization phase - -pp$6.overrideContext = function(tokenCtx) { - if (this.curContext() !== tokenCtx) { - this.context[this.context.length - 1] = tokenCtx; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFlowType(node, opts) { + if (!node) return false; + switch (node.type) { + case "AnyTypeAnnotation": + case "ArrayTypeAnnotation": + case "BooleanTypeAnnotation": + case "BooleanLiteralTypeAnnotation": + case "NullLiteralTypeAnnotation": + case "ExistsTypeAnnotation": + case "FunctionTypeAnnotation": + case "GenericTypeAnnotation": + case "InterfaceTypeAnnotation": + case "IntersectionTypeAnnotation": + case "MixedTypeAnnotation": + case "EmptyTypeAnnotation": + case "NullableTypeAnnotation": + case "NumberLiteralTypeAnnotation": + case "NumberTypeAnnotation": + case "ObjectTypeAnnotation": + case "StringLiteralTypeAnnotation": + case "StringTypeAnnotation": + case "SymbolTypeAnnotation": + case "ThisTypeAnnotation": + case "TupleTypeAnnotation": + case "TypeofTypeAnnotation": + case "UnionTypeAnnotation": + case "VoidTypeAnnotation": + case "IndexedAccessType": + case "OptionalIndexedAccessType": + break; + default: + return false; } -}; - -// Token-specific context update code - -types$1.parenR.updateContext = types$1.braceR.updateContext = function() { - if (this.context.length === 1) { - this.exprAllowed = true; - return + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFlowBaseAnnotation(node, opts) { + if (!node) return false; + switch (node.type) { + case "AnyTypeAnnotation": + case "BooleanTypeAnnotation": + case "NullLiteralTypeAnnotation": + case "MixedTypeAnnotation": + case "EmptyTypeAnnotation": + case "NumberTypeAnnotation": + case "StringTypeAnnotation": + case "SymbolTypeAnnotation": + case "ThisTypeAnnotation": + case "VoidTypeAnnotation": + break; + default: + return false; } - var out = this.context.pop(); - if (out === types.b_stat && this.curContext().token === "function") { - out = this.context.pop(); + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFlowDeclaration(node, opts) { + if (!node) return false; + switch (node.type) { + case "DeclareClass": + case "DeclareFunction": + case "DeclareInterface": + case "DeclareModule": + case "DeclareModuleExports": + case "DeclareTypeAlias": + case "DeclareOpaqueType": + case "DeclareVariable": + case "DeclareExportDeclaration": + case "DeclareExportAllDeclaration": + case "InterfaceDeclaration": + case "OpaqueType": + case "TypeAlias": + break; + default: + return false; } - this.exprAllowed = !out.isExpr; -}; - -types$1.braceL.updateContext = function(prevType) { - this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); - this.exprAllowed = true; -}; - -types$1.dollarBraceL.updateContext = function() { - this.context.push(types.b_tmpl); - this.exprAllowed = true; -}; - -types$1.parenL.updateContext = function(prevType) { - var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while; - this.context.push(statementParens ? types.p_stat : types.p_expr); - this.exprAllowed = true; -}; - -types$1.incDec.updateContext = function() { - // tokExprAllowed stays unchanged -}; - -types$1._function.updateContext = types$1._class.updateContext = function(prevType) { - if (prevType.beforeExpr && prevType !== types$1._else && - !(prevType === types$1.semi && this.curContext() !== types.p_stat) && - !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && - !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat)) - { this.context.push(types.f_expr); } - else - { this.context.push(types.f_stat); } - this.exprAllowed = false; -}; - -types$1.colon.updateContext = function() { - if (this.curContext().token === "function") { this.context.pop(); } - this.exprAllowed = true; -}; - -types$1.backQuote.updateContext = function() { - if (this.curContext() === types.q_tmpl) - { this.context.pop(); } - else - { this.context.push(types.q_tmpl); } - this.exprAllowed = false; -}; - -types$1.star.updateContext = function(prevType) { - if (prevType === types$1._function) { - var index = this.context.length - 1; - if (this.context[index] === types.f_expr) - { this.context[index] = types.f_expr_gen; } - else - { this.context[index] = types.f_gen; } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isFlowPredicate(node, opts) { + if (!node) return false; + switch (node.type) { + case "DeclaredPredicate": + case "InferredPredicate": + break; + default: + return false; } - this.exprAllowed = true; -}; - -types$1.name.updateContext = function(prevType) { - var allowed = false; - if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) { - if (this.value === "of" && !this.exprAllowed || - this.value === "yield" && this.inGeneratorContext()) - { allowed = true; } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumBody(node, opts) { + if (!node) return false; + switch (node.type) { + case "EnumBooleanBody": + case "EnumNumberBody": + case "EnumStringBody": + case "EnumSymbolBody": + break; + default: + return false; } - this.exprAllowed = allowed; -}; - -// A recursive descent parser operates by defining functions for all -// syntactic elements, and recursively calling those, each function -// advancing the input stream and returning an AST node. Precedence -// of constructs (for example, the fact that `!x[1]` means `!(x[1])` -// instead of `(!x)[1]` is handled by the fact that the parser -// function that parses unary prefix operators is called first, and -// in turn calls the function that parses `[]` subscripts — that -// way, it'll receive the node for `x[1]` already parsed, and wraps -// *that* in the unary operator node. -// -// Acorn uses an [operator precedence parser][opp] to handle binary -// operator precedence, because it is much more compact than using -// the technique outlined above, which uses different, nesting -// functions to specify precedence, for all of the ten binary -// precedence levels that JavaScript defines. -// -// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser - - -var pp$5 = Parser.prototype; - -// Check if property name clashes with already added. -// Object/class getters and setters are not allowed to clash — -// either with each other or with an init property — and in -// strict mode, init properties are also not allowed to be repeated. - -pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) { - if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") - { return } - if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) - { return } - var key = prop.key; - var name; - switch (key.type) { - case "Identifier": name = key.name; break - case "Literal": name = String(key.value); break - default: return - } - var kind = prop.kind; - if (this.options.ecmaVersion >= 6) { - if (name === "__proto__" && kind === "init") { - if (propHash.proto) { - if (refDestructuringErrors) { - if (refDestructuringErrors.doubleProto < 0) { - refDestructuringErrors.doubleProto = key.start; - } - } else { - this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); - } - } - propHash.proto = true; - } - return + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isEnumMember(node, opts) { + if (!node) return false; + switch (node.type) { + case "EnumBooleanMember": + case "EnumNumberMember": + case "EnumStringMember": + case "EnumDefaultedMember": + break; + default: + return false; } - name = "$" + name; - var other = propHash[name]; - if (other) { - var redefinition; - if (kind === "init") { - redefinition = this.strict && other.init || other.get || other.set; - } else { - redefinition = other.init || other[kind]; - } - if (redefinition) - { this.raiseRecoverable(key.start, "Redefinition of property"); } - } else { - other = propHash[name] = { - init: false, - get: false, - set: false - }; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isJSX(node, opts) { + if (!node) return false; + switch (node.type) { + case "JSXAttribute": + case "JSXClosingElement": + case "JSXElement": + case "JSXEmptyExpression": + case "JSXExpressionContainer": + case "JSXSpreadChild": + case "JSXIdentifier": + case "JSXMemberExpression": + case "JSXNamespacedName": + case "JSXOpeningElement": + case "JSXSpreadAttribute": + case "JSXText": + case "JSXFragment": + case "JSXOpeningFragment": + case "JSXClosingFragment": + break; + default: + return false; } - other[kind] = true; -}; - -// ### Expression parsing - -// These nest, from the most general expression type at the top to -// 'atomic', nondivisible expression types at the bottom. Most of -// the functions will simply let the function(s) below them parse, -// and, *if* the syntactic construct they handle is present, wrap -// the AST node that the inner parser gave them in another node. - -// Parse a full expression. The optional arguments are used to -// forbid the `in` operator (in for loops initalization expressions) -// and provide reference for storing '=' operator inside shorthand -// property assignment in contexts where both object expression -// and object pattern might appear (so it's possible to raise -// delayed syntax error at correct position). - -pp$5.parseExpression = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); - if (this.type === types$1.comma) { - var node = this.startNodeAt(startPos, startLoc); - node.expressions = [expr]; - while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); } - return this.finishNode(node, "SequenceExpression") - } - return expr -}; - -// Parse an assignment expression. This includes applications of -// operators like `+=`. - -pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { - if (this.isContextual("yield")) { - if (this.inGenerator) { return this.parseYield(forInit) } - // The tokenizer will assume an expression is allowed after - // `yield`, but this isn't that kind of yield - else { this.exprAllowed = false; } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isMiscellaneous(node, opts) { + if (!node) return false; + switch (node.type) { + case "Noop": + case "Placeholder": + case "V8IntrinsicIdentifier": + break; + default: + return false; } - - var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1; - if (refDestructuringErrors) { - oldParenAssign = refDestructuringErrors.parenthesizedAssign; - oldTrailingComma = refDestructuringErrors.trailingComma; - oldDoubleProto = refDestructuringErrors.doubleProto; - refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; - } else { - refDestructuringErrors = new DestructuringErrors; - ownDestructuringErrors = true; - } - - var startPos = this.start, startLoc = this.startLoc; - if (this.type === types$1.parenL || this.type === types$1.name) { - this.potentialArrowAt = this.start; - this.potentialArrowInForAwait = forInit === "await"; - } - var left = this.parseMaybeConditional(forInit, refDestructuringErrors); - if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } - if (this.type.isAssign) { - var node = this.startNodeAt(startPos, startLoc); - node.operator = this.value; - if (this.type === types$1.eq) - { left = this.toAssignable(left, false, refDestructuringErrors); } - if (!ownDestructuringErrors) { - refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; - } - if (refDestructuringErrors.shorthandAssign >= left.start) - { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly - if (this.type === types$1.eq) - { this.checkLValPattern(left); } - else - { this.checkLValSimple(left); } - node.left = left; - this.next(); - node.right = this.parseMaybeAssign(forInit); - if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; } - return this.finishNode(node, "AssignmentExpression") - } else { - if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTypeScript(node, opts) { + if (!node) return false; + switch (node.type) { + case "TSParameterProperty": + case "TSDeclareFunction": + case "TSDeclareMethod": + case "TSQualifiedName": + case "TSCallSignatureDeclaration": + case "TSConstructSignatureDeclaration": + case "TSPropertySignature": + case "TSMethodSignature": + case "TSIndexSignature": + case "TSAnyKeyword": + case "TSBooleanKeyword": + case "TSBigIntKeyword": + case "TSIntrinsicKeyword": + case "TSNeverKeyword": + case "TSNullKeyword": + case "TSNumberKeyword": + case "TSObjectKeyword": + case "TSStringKeyword": + case "TSSymbolKeyword": + case "TSUndefinedKeyword": + case "TSUnknownKeyword": + case "TSVoidKeyword": + case "TSThisType": + case "TSFunctionType": + case "TSConstructorType": + case "TSTypeReference": + case "TSTypePredicate": + case "TSTypeQuery": + case "TSTypeLiteral": + case "TSArrayType": + case "TSTupleType": + case "TSOptionalType": + case "TSRestType": + case "TSNamedTupleMember": + case "TSUnionType": + case "TSIntersectionType": + case "TSConditionalType": + case "TSInferType": + case "TSParenthesizedType": + case "TSTypeOperator": + case "TSIndexedAccessType": + case "TSMappedType": + case "TSTemplateLiteralType": + case "TSLiteralType": + case "TSExpressionWithTypeArguments": + case "TSInterfaceDeclaration": + case "TSInterfaceBody": + case "TSTypeAliasDeclaration": + case "TSInstantiationExpression": + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSEnumBody": + case "TSEnumDeclaration": + case "TSEnumMember": + case "TSModuleDeclaration": + case "TSModuleBlock": + case "TSImportType": + case "TSImportEqualsDeclaration": + case "TSExternalModuleReference": + case "TSNonNullExpression": + case "TSExportAssignment": + case "TSNamespaceExportDeclaration": + case "TSTypeAnnotation": + case "TSTypeParameterInstantiation": + case "TSTypeParameterDeclaration": + case "TSTypeParameter": + break; + default: + return false; } - if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } - if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } - return left -}; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSTypeElement(node, opts) { + if (!node) return false; + switch (node.type) { + case "TSCallSignatureDeclaration": + case "TSConstructSignatureDeclaration": + case "TSPropertySignature": + case "TSMethodSignature": + case "TSIndexSignature": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSType(node, opts) { + if (!node) return false; + switch (node.type) { + case "TSAnyKeyword": + case "TSBooleanKeyword": + case "TSBigIntKeyword": + case "TSIntrinsicKeyword": + case "TSNeverKeyword": + case "TSNullKeyword": + case "TSNumberKeyword": + case "TSObjectKeyword": + case "TSStringKeyword": + case "TSSymbolKeyword": + case "TSUndefinedKeyword": + case "TSUnknownKeyword": + case "TSVoidKeyword": + case "TSThisType": + case "TSFunctionType": + case "TSConstructorType": + case "TSTypeReference": + case "TSTypePredicate": + case "TSTypeQuery": + case "TSTypeLiteral": + case "TSArrayType": + case "TSTupleType": + case "TSOptionalType": + case "TSRestType": + case "TSUnionType": + case "TSIntersectionType": + case "TSConditionalType": + case "TSInferType": + case "TSParenthesizedType": + case "TSTypeOperator": + case "TSIndexedAccessType": + case "TSMappedType": + case "TSTemplateLiteralType": + case "TSLiteralType": + case "TSExpressionWithTypeArguments": + case "TSImportType": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isTSBaseType(node, opts) { + if (!node) return false; + switch (node.type) { + case "TSAnyKeyword": + case "TSBooleanKeyword": + case "TSBigIntKeyword": + case "TSIntrinsicKeyword": + case "TSNeverKeyword": + case "TSNullKeyword": + case "TSNumberKeyword": + case "TSObjectKeyword": + case "TSStringKeyword": + case "TSSymbolKeyword": + case "TSUndefinedKeyword": + case "TSUnknownKeyword": + case "TSVoidKeyword": + case "TSThisType": + case "TSTemplateLiteralType": + case "TSLiteralType": + break; + default: + return false; + } + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isNumberLiteral(node, opts) { + (0, _deprecationWarning.default)("isNumberLiteral", "isNumericLiteral"); + if (!node) return false; + if (node.type !== "NumberLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isRegexLiteral(node, opts) { + (0, _deprecationWarning.default)("isRegexLiteral", "isRegExpLiteral"); + if (!node) return false; + if (node.type !== "RegexLiteral") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isRestProperty(node, opts) { + (0, _deprecationWarning.default)("isRestProperty", "isRestElement"); + if (!node) return false; + if (node.type !== "RestProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isSpreadProperty(node, opts) { + (0, _deprecationWarning.default)("isSpreadProperty", "isSpreadElement"); + if (!node) return false; + if (node.type !== "SpreadProperty") return false; + return opts == null || (0, _shallowEqual.default)(node, opts); +} +function isModuleDeclaration(node, opts) { + (0, _deprecationWarning.default)("isModuleDeclaration", "isImportOrExportDeclaration"); + return isImportOrExportDeclaration(node, opts); +} -// Parse a ternary conditional (`?:`) operator. +//# sourceMappingURL=index.js.map -pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprOps(forInit, refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - if (this.eat(types$1.question)) { - var node = this.startNodeAt(startPos, startLoc); - node.test = expr; - node.consequent = this.parseMaybeAssign(); - this.expect(types$1.colon); - node.alternate = this.parseMaybeAssign(forInit); - return this.finishNode(node, "ConditionalExpression") - } - return expr -}; -// Start the precedence parser. +/***/ }), -pp$5.parseExprOps = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) -}; +/***/ 20051: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// Parse binary operators with the operator precedence parsing -// algorithm. `left` is the left-hand side of the operator. -// `minPrec` provides context that allows the function to stop and -// defer further parser to one of its callers when it encounters an -// operator that has a lower precedence than the set it is parsing. - -pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { - var prec = this.type.binop; - if (prec != null && (!forInit || this.type !== types$1._in)) { - if (prec > minPrec) { - var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND; - var coalesce = this.type === types$1.coalesce; - if (coalesce) { - // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. - // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. - prec = types$1.logicalAND.binop; - } - var op = this.value; - this.next(); - var startPos = this.start, startLoc = this.startLoc; - var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); - var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); - if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) { - this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); - } - return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit) - } - } - return left -}; +"use strict"; -pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) { - if (right.type === "PrivateIdentifier") { this.raise(right.start, "Private identifier can only be left side of binary expression"); } - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.operator = op; - node.right = right; - return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") -}; -// Parse unary operators, both prefix and postfix. - -pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { - var startPos = this.start, startLoc = this.startLoc, expr; - if (this.isContextual("await") && this.canAwait) { - expr = this.parseAwait(forInit); - sawUnary = true; - } else if (this.type.prefix) { - var node = this.startNode(), update = this.type === types$1.incDec; - node.operator = this.value; - node.prefix = true; - this.next(); - node.argument = this.parseMaybeUnary(null, true, update, forInit); - this.checkExpressionErrors(refDestructuringErrors, true); - if (update) { this.checkLValSimple(node.argument); } - else if (this.strict && node.operator === "delete" && isLocalVariableAccess(node.argument)) - { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } - else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) - { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } - else { sawUnary = true; } - expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); - } else if (!sawUnary && this.type === types$1.privateId) { - if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); } - expr = this.parsePrivateIdent(); - // only could be private fields in 'in', such as #x in obj - if (this.type !== types$1._in) { this.unexpected(); } - } else { - expr = this.parseExprSubscripts(refDestructuringErrors, forInit); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - while (this.type.postfix && !this.canInsertSemicolon()) { - var node$1 = this.startNodeAt(startPos, startLoc); - node$1.operator = this.value; - node$1.prefix = false; - node$1.argument = expr; - this.checkLValSimple(expr); - this.next(); - expr = this.finishNode(node$1, "UpdateExpression"); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = is; +var _shallowEqual = __nccwpck_require__(56085); +var _isType = __nccwpck_require__(53547); +var _isPlaceholderType = __nccwpck_require__(49410); +var _index = __nccwpck_require__(40910); +function is(type, node, opts) { + if (!node) return false; + const matches = (0, _isType.default)(node.type, type); + if (!matches) { + if (!opts && node.type === "Placeholder" && type in _index.FLIPPED_ALIAS_KEYS) { + return (0, _isPlaceholderType.default)(node.expectedNode, type); } + return false; } - - if (!incDec && this.eat(types$1.starstar)) { - if (sawUnary) - { this.unexpected(this.lastTokStart); } - else - { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } + if (opts === undefined) { + return true; } else { - return expr + return (0, _shallowEqual.default)(node, opts); } -}; - -function isLocalVariableAccess(node) { - return ( - node.type === "Identifier" || - node.type === "ParenthesizedExpression" && isLocalVariableAccess(node.expression) - ) } -function isPrivateFieldAccess(node) { - return ( - node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || - node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) || - node.type === "ParenthesizedExpression" && isPrivateFieldAccess(node.expression) - ) -} +//# sourceMappingURL=is.js.map -// Parse call, dot, and `[]`-subscript expressions. -pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprAtom(refDestructuringErrors, forInit); - if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") - { return expr } - var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); - if (refDestructuringErrors && result.type === "MemberExpression") { - if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } - if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } - if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; } - } - return result -}; +/***/ }), -pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { - var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && - this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && - this.potentialArrowAt === base.start; - var optionalChained = false; +/***/ 73998: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - while (true) { - var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); +"use strict"; - if (element.optional) { optionalChained = true; } - if (element === base || element.type === "ArrowFunctionExpression") { - if (optionalChained) { - var chainNode = this.startNodeAt(startPos, startLoc); - chainNode.expression = element; - element = this.finishNode(chainNode, "ChainExpression"); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isBinding; +var _getBindingIdentifiers = __nccwpck_require__(45300); +function isBinding(node, parent, grandparent) { + if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") { + return false; + } + const keys = _getBindingIdentifiers.default.keys[parent.type]; + if (keys) { + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const val = parent[key]; + if (Array.isArray(val)) { + if (val.includes(node)) return true; + } else { + if (val === node) return true; } - return element } - - base = element; } -}; - -pp$5.shouldParseAsyncArrow = function() { - return !this.canInsertSemicolon() && this.eat(types$1.arrow) -}; + return false; +} -pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) -}; +//# sourceMappingURL=isBinding.js.map -pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { - var optionalSupported = this.options.ecmaVersion >= 11; - var optional = optionalSupported && this.eat(types$1.questionDot); - if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } - var computed = this.eat(types$1.bracketL); - if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) { - var node = this.startNodeAt(startPos, startLoc); - node.object = base; - if (computed) { - node.property = this.parseExpression(); - this.expect(types$1.bracketR); - } else if (this.type === types$1.privateId && base.type !== "Super") { - node.property = this.parsePrivateIdent(); - } else { - node.property = this.parseIdent(this.options.allowReserved !== "never"); - } - node.computed = !!computed; - if (optionalSupported) { - node.optional = optional; - } - base = this.finishNode(node, "MemberExpression"); - } else if (!noCalls && this.eat(types$1.parenL)) { - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); - if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) { - this.checkPatternErrors(refDestructuringErrors, false); - this.checkYieldAwaitInDefaultParams(); - if (this.awaitIdentPos > 0) - { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit) - } - this.checkExpressionErrors(refDestructuringErrors, true); - this.yieldPos = oldYieldPos || this.yieldPos; - this.awaitPos = oldAwaitPos || this.awaitPos; - this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; - var node$1 = this.startNodeAt(startPos, startLoc); - node$1.callee = base; - node$1.arguments = exprList; - if (optionalSupported) { - node$1.optional = optional; - } - base = this.finishNode(node$1, "CallExpression"); - } else if (this.type === types$1.backQuote) { - if (optional || optionalChained) { - this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); - } - var node$2 = this.startNodeAt(startPos, startLoc); - node$2.tag = base; - node$2.quasi = this.parseTemplate({isTagged: true}); - base = this.finishNode(node$2, "TaggedTemplateExpression"); - } - return base -}; +/***/ }), -// Parse an atomic expression — either a single token that is an -// expression, an expression started by a keyword like `function` or -// `new`, or an expression wrapped in punctuation like `()`, `[]`, -// or `{}`. - -pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) { - // If a division operator appears in an expression position, the - // tokenizer got confused, and we force it to read a regexp instead. - if (this.type === types$1.slash) { this.readRegexp(); } - - var node, canBeArrow = this.potentialArrowAt === this.start; - switch (this.type) { - case types$1._super: - if (!this.allowSuper) - { this.raise(this.start, "'super' keyword outside a method"); } - node = this.startNode(); - this.next(); - if (this.type === types$1.parenL && !this.allowDirectSuper) - { this.raise(node.start, "super() call outside constructor of a subclass"); } - // The `super` keyword can appear at below: - // SuperProperty: - // super [ Expression ] - // super . IdentifierName - // SuperCall: - // super ( Arguments ) - if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL) - { this.unexpected(); } - return this.finishNode(node, "Super") - - case types$1._this: - node = this.startNode(); - this.next(); - return this.finishNode(node, "ThisExpression") - - case types$1.name: - var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; - var id = this.parseIdent(false); - if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$1._function)) { - this.overrideContext(types.f_expr); - return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) - } - if (canBeArrow && !this.canInsertSemicolon()) { - if (this.eat(types$1.arrow)) - { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } - if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$1.name && !containsEsc && - (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { - id = this.parseIdent(false); - if (this.canInsertSemicolon() || !this.eat(types$1.arrow)) - { this.unexpected(); } - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) - } - } - return id - - case types$1.regexp: - var value = this.value; - node = this.parseLiteral(value.value); - node.regex = {pattern: value.pattern, flags: value.flags}; - return node +/***/ 942: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - case types$1.num: case types$1.string: - return this.parseLiteral(this.value) +"use strict"; - case types$1._null: case types$1._true: case types$1._false: - node = this.startNode(); - node.value = this.type === types$1._null ? null : this.type === types$1._true; - node.raw = this.type.keyword; - this.next(); - return this.finishNode(node, "Literal") - case types$1.parenL: - var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); - if (refDestructuringErrors) { - if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) - { refDestructuringErrors.parenthesizedAssign = start; } - if (refDestructuringErrors.parenthesizedBind < 0) - { refDestructuringErrors.parenthesizedBind = start; } - } - return expr +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isBlockScoped; +var _index = __nccwpck_require__(40741); +var _isLet = __nccwpck_require__(57674); +function isBlockScoped(node) { + return (0, _index.isFunctionDeclaration)(node) || (0, _index.isClassDeclaration)(node) || (0, _isLet.default)(node); +} - case types$1.bracketL: - node = this.startNode(); - this.next(); - node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors); - return this.finishNode(node, "ArrayExpression") +//# sourceMappingURL=isBlockScoped.js.map - case types$1.braceL: - this.overrideContext(types.b_expr); - return this.parseObj(false, refDestructuringErrors) - case types$1._function: - node = this.startNode(); - this.next(); - return this.parseFunction(node, 0) +/***/ }), - case types$1._class: - return this.parseClass(this.startNode(), false) +/***/ 42343: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - case types$1._new: - return this.parseNew() +"use strict"; - case types$1.backQuote: - return this.parseTemplate() - case types$1._import: - if (this.options.ecmaVersion >= 11) { - return this.parseExprImport(forNew) +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isImmutable; +var _isType = __nccwpck_require__(53547); +var _index = __nccwpck_require__(40741); +function isImmutable(node) { + if ((0, _isType.default)(node.type, "Immutable")) return true; + if ((0, _index.isIdentifier)(node)) { + if (node.name === "undefined") { + return true; } else { - return this.unexpected() + return false; } - - default: - return this.parseExprAtomDefault() - } -}; - -pp$5.parseExprAtomDefault = function() { - this.unexpected(); -}; - -pp$5.parseExprImport = function(forNew) { - var node = this.startNode(); - - // Consume `import` as an identifier for `import.meta`. - // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`. - if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword import"); } - this.next(); - - if (this.type === types$1.parenL && !forNew) { - return this.parseDynamicImport(node) - } else if (this.type === types$1.dot) { - var meta = this.startNodeAt(node.start, node.loc && node.loc.start); - meta.name = "import"; - node.meta = this.finishNode(meta, "Identifier"); - return this.parseImportMeta(node) - } else { - this.unexpected(); } -}; - -pp$5.parseDynamicImport = function(node) { - this.next(); // skip `(` - - // Parse node.source. - node.source = this.parseMaybeAssign(); + return false; +} - if (this.options.ecmaVersion >= 16) { - if (!this.eat(types$1.parenR)) { - this.expect(types$1.comma); - if (!this.afterTrailingComma(types$1.parenR)) { - node.options = this.parseMaybeAssign(); - if (!this.eat(types$1.parenR)) { - this.expect(types$1.comma); - if (!this.afterTrailingComma(types$1.parenR)) { - this.unexpected(); - } - } - } else { - node.options = null; - } - } else { - node.options = null; - } - } else { - // Verify ending. - if (!this.eat(types$1.parenR)) { - var errorPos = this.start; - if (this.eat(types$1.comma) && this.eat(types$1.parenR)) { - this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); - } else { - this.unexpected(errorPos); - } - } - } +//# sourceMappingURL=isImmutable.js.map - return this.finishNode(node, "ImportExpression") -}; -pp$5.parseImportMeta = function(node) { - this.next(); // skip `.` +/***/ }), - var containsEsc = this.containsEsc; - node.property = this.parseIdent(true); +/***/ 57674: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if (node.property.name !== "meta") - { this.raiseRecoverable(node.property.start, "The only valid meta property for import is 'import.meta'"); } - if (containsEsc) - { this.raiseRecoverable(node.start, "'import.meta' must not contain escaped characters"); } - if (this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere) - { this.raiseRecoverable(node.start, "Cannot use 'import.meta' outside a module"); } +"use strict"; - return this.finishNode(node, "MetaProperty") -}; -pp$5.parseLiteral = function(value) { - var node = this.startNode(); - node.value = value; - node.raw = this.input.slice(this.start, this.end); - if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, ""); } - this.next(); - return this.finishNode(node, "Literal") -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isLet; +var _index = __nccwpck_require__(40741); +{ + var BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped"); +} +function isLet(node) { + { + return (0, _index.isVariableDeclaration)(node) && (node.kind !== "var" || node[BLOCK_SCOPED_SYMBOL]); + } +} -pp$5.parseParenExpression = function() { - this.expect(types$1.parenL); - var val = this.parseExpression(); - this.expect(types$1.parenR); - return val -}; +//# sourceMappingURL=isLet.js.map -pp$5.shouldParseArrow = function(exprList) { - return !this.canInsertSemicolon() -}; -pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { - var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; - if (this.options.ecmaVersion >= 6) { - this.next(); +/***/ }), - var innerStartPos = this.start, innerStartLoc = this.startLoc; - var exprList = [], first = true, lastIsComma = false; - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; - this.yieldPos = 0; - this.awaitPos = 0; - // Do not save awaitIdentPos to allow checking awaits nested in parameters - while (this.type !== types$1.parenR) { - first ? first = false : this.expect(types$1.comma); - if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) { - lastIsComma = true; - break - } else if (this.type === types$1.ellipsis) { - spreadStart = this.start; - exprList.push(this.parseParenItem(this.parseRestBinding())); - if (this.type === types$1.comma) { - this.raiseRecoverable( - this.start, - "Comma is not permitted after the rest element" - ); - } - break - } else { - exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); - } - } - var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; - this.expect(types$1.parenR); +/***/ 84503: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) { - this.checkPatternErrors(refDestructuringErrors, false); - this.checkYieldAwaitInDefaultParams(); - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - return this.parseParenArrowList(startPos, startLoc, exprList, forInit) - } +"use strict"; - if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } - if (spreadStart) { this.unexpected(spreadStart); } - this.checkExpressionErrors(refDestructuringErrors, true); - this.yieldPos = oldYieldPos || this.yieldPos; - this.awaitPos = oldAwaitPos || this.awaitPos; - if (exprList.length > 1) { - val = this.startNodeAt(innerStartPos, innerStartLoc); - val.expressions = exprList; - this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); - } else { - val = exprList[0]; - } - } else { - val = this.parseParenExpression(); - } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isNode; +var _index = __nccwpck_require__(40910); +function isNode(node) { + return !!(node && _index.VISITOR_KEYS[node.type]); +} - if (this.options.preserveParens) { - var par = this.startNodeAt(startPos, startLoc); - par.expression = val; - return this.finishNode(par, "ParenthesizedExpression") - } else { - return val - } -}; +//# sourceMappingURL=isNode.js.map -pp$5.parseParenItem = function(item) { - return item -}; -pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit) -}; +/***/ }), -// New's precedence is slightly tricky. It must allow its argument to -// be a `[]` or dot subscript expression, but not a call — at least, -// not without wrapping it in parentheses. Thus, it uses the noCalls -// argument to parseSubscripts to prevent it from consuming the -// argument list. - -var acorn_empty = []; - -pp$5.parseNew = function() { - if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } - var node = this.startNode(); - this.next(); - if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) { - var meta = this.startNodeAt(node.start, node.loc && node.loc.start); - meta.name = "new"; - node.meta = this.finishNode(meta, "Identifier"); - this.next(); - var containsEsc = this.containsEsc; - node.property = this.parseIdent(true); - if (node.property.name !== "target") - { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } - if (containsEsc) - { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } - if (!this.allowNewDotTarget) - { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } - return this.finishNode(node, "MetaProperty") - } - var startPos = this.start, startLoc = this.startLoc; - node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false); - if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); } - else { node.arguments = acorn_empty; } - return this.finishNode(node, "NewExpression") -}; +/***/ 8338: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// Parse template expression. +"use strict"; -pp$5.parseTemplateElement = function(ref) { - var isTagged = ref.isTagged; - var elem = this.startNode(); - if (this.type === types$1.invalidTemplate) { - if (!isTagged) { - this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); - } - elem.value = { - raw: this.value.replace(/\r\n?/g, "\n"), - cooked: null - }; - } else { - elem.value = { - raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), - cooked: this.value - }; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isNodesEquivalent; +var _index = __nccwpck_require__(40910); +function isNodesEquivalent(a, b) { + if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) { + return a === b; } - this.next(); - elem.tail = this.type === types$1.backQuote; - return this.finishNode(elem, "TemplateElement") -}; - -pp$5.parseTemplate = function(ref) { - if ( ref === void 0 ) ref = {}; - var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; - - var node = this.startNode(); - this.next(); - node.expressions = []; - var curElt = this.parseTemplateElement({isTagged: isTagged}); - node.quasis = [curElt]; - while (!curElt.tail) { - if (this.type === types$1.eof) { this.raise(this.pos, "Unterminated template literal"); } - this.expect(types$1.dollarBraceL); - node.expressions.push(this.parseExpression()); - this.expect(types$1.braceR); - node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); - } - this.next(); - return this.finishNode(node, "TemplateLiteral") -}; - -pp$5.isAsyncProp = function(prop) { - return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && - (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) && - !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) -}; - -// Parse an object literal or binding pattern. - -pp$5.parseObj = function(isPattern, refDestructuringErrors) { - var node = this.startNode(), first = true, propHash = {}; - node.properties = []; - this.next(); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - var prop = this.parseProperty(isPattern, refDestructuringErrors); - if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } - node.properties.push(prop); + if (a.type !== b.type) { + return false; } - return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") -}; - -pp$5.parseProperty = function(isPattern, refDestructuringErrors) { - var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; - if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) { - if (isPattern) { - prop.argument = this.parseIdent(false); - if (this.type === types$1.comma) { - this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); - } - return this.finishNode(prop, "RestElement") + const fields = Object.keys(_index.NODE_FIELDS[a.type] || a.type); + const visitorKeys = _index.VISITOR_KEYS[a.type]; + for (const field of fields) { + const val_a = a[field]; + const val_b = b[field]; + if (typeof val_a !== typeof val_b) { + return false; } - // Parse argument. - prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); - // To disallow trailing comma via `this.toAssignable()`. - if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { - refDestructuringErrors.trailingComma = this.start; + if (val_a == null && val_b == null) { + continue; + } else if (val_a == null || val_b == null) { + return false; } - // Finish - return this.finishNode(prop, "SpreadElement") - } - if (this.options.ecmaVersion >= 6) { - prop.method = false; - prop.shorthand = false; - if (isPattern || refDestructuringErrors) { - startPos = this.start; - startLoc = this.startLoc; - } - if (!isPattern) - { isGenerator = this.eat(types$1.star); } - } - var containsEsc = this.containsEsc; - this.parsePropertyName(prop); - if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { - isAsync = true; - isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star); - this.parsePropertyName(prop); - } else { - isAsync = false; - } - this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); - return this.finishNode(prop, "Property") -}; - -pp$5.parseGetterSetter = function(prop) { - var kind = prop.key.name; - this.parsePropertyName(prop); - prop.value = this.parseMethod(false); - prop.kind = kind; - var paramCount = prop.kind === "get" ? 0 : 1; - if (prop.value.params.length !== paramCount) { - var start = prop.value.start; - if (prop.kind === "get") - { this.raiseRecoverable(start, "getter should have no params"); } - else - { this.raiseRecoverable(start, "setter should have exactly one param"); } - } else { - if (prop.kind === "set" && prop.value.params[0].type === "RestElement") - { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } - } -}; - -pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { - if ((isGenerator || isAsync) && this.type === types$1.colon) - { this.unexpected(); } - - if (this.eat(types$1.colon)) { - prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); - prop.kind = "init"; - } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) { - if (isPattern) { this.unexpected(); } - prop.method = true; - prop.value = this.parseMethod(isGenerator, isAsync); - prop.kind = "init"; - } else if (!isPattern && !containsEsc && - this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && - (prop.key.name === "get" || prop.key.name === "set") && - (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) { - if (isGenerator || isAsync) { this.unexpected(); } - this.parseGetterSetter(prop); - } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { - if (isGenerator || isAsync) { this.unexpected(); } - this.checkUnreserved(prop.key); - if (prop.key.name === "await" && !this.awaitIdentPos) - { this.awaitIdentPos = startPos; } - if (isPattern) { - prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); - } else if (this.type === types$1.eq && refDestructuringErrors) { - if (refDestructuringErrors.shorthandAssign < 0) - { refDestructuringErrors.shorthandAssign = this.start; } - prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); - } else { - prop.value = this.copyNode(prop.key); + if (Array.isArray(val_a)) { + if (!Array.isArray(val_b)) { + return false; + } + if (val_a.length !== val_b.length) { + return false; + } + for (let i = 0; i < val_a.length; i++) { + if (!isNodesEquivalent(val_a[i], val_b[i])) { + return false; + } + } + continue; } - prop.kind = "init"; - prop.shorthand = true; - } else { this.unexpected(); } -}; - -pp$5.parsePropertyName = function(prop) { - if (this.options.ecmaVersion >= 6) { - if (this.eat(types$1.bracketL)) { - prop.computed = true; - prop.key = this.parseMaybeAssign(); - this.expect(types$1.bracketR); - return prop.key - } else { - prop.computed = false; + if (typeof val_a === "object" && !(visitorKeys != null && visitorKeys.includes(field))) { + for (const key of Object.keys(val_a)) { + if (val_a[key] !== val_b[key]) { + return false; + } + } + continue; + } + if (!isNodesEquivalent(val_a, val_b)) { + return false; } } - return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") -}; - -// Initialize empty function node. + return true; +} -pp$5.initFunction = function(node) { - node.id = null; - if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } - if (this.options.ecmaVersion >= 8) { node.async = false; } -}; +//# sourceMappingURL=isNodesEquivalent.js.map -// Parse object or class method. -pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { - var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; +/***/ }), - this.initFunction(node); - if (this.options.ecmaVersion >= 6) - { node.generator = isGenerator; } - if (this.options.ecmaVersion >= 8) - { node.async = !!isAsync; } +/***/ 49410: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); +"use strict"; - this.expect(types$1.parenL); - node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); - this.checkYieldAwaitInDefaultParams(); - this.parseFunctionBody(node, false, true, false); - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, "FunctionExpression") -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isPlaceholderType; +var _index = __nccwpck_require__(40910); +function isPlaceholderType(placeholderType, targetType) { + if (placeholderType === targetType) return true; + const aliases = _index.PLACEHOLDERS_ALIAS[placeholderType]; + if (aliases != null && aliases.includes(targetType)) return true; + return false; +} -// Parse arrow function expression with given parameters. +//# sourceMappingURL=isPlaceholderType.js.map -pp$5.parseArrowExpression = function(node, params, isAsync, forInit) { - var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); - this.initFunction(node); - if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } +/***/ }), - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; +/***/ 89508: +/***/ ((__unused_webpack_module, exports) => { - node.params = this.toAssignableList(params, true); - this.parseFunctionBody(node, true, false, forInit); +"use strict"; - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, "ArrowFunctionExpression") -}; -// Parse function body and check parameters. +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isReferenced; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + case "VariableDeclarator": + return parent.init === node; + case "ArrowFunctionExpression": + return parent.body === node; + case "PrivateName": + return false; + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + case "ClassProperty": + case "ClassAccessorProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + case "AssignmentExpression": + return parent.right === node; + case "AssignmentPattern": + return parent.right === node; + case "LabeledStatement": + return false; + case "CatchClause": + return false; + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + case "FunctionDeclaration": + case "FunctionExpression": + return false; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + case "ExportSpecifier": + if (grandparent != null && grandparent.source) { + return false; + } + return parent.local === node; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + case "ImportAttribute": + return false; + case "JSXAttribute": + return false; + case "ObjectPattern": + case "ArrayPattern": + return false; + case "MetaProperty": + return false; + case "ObjectTypeProperty": + return parent.key !== node; + case "TSEnumMember": + return parent.id !== node; + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} -pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { - var isExpression = isArrowFunction && this.type !== types$1.braceL; - var oldStrict = this.strict, useStrict = false; +//# sourceMappingURL=isReferenced.js.map - if (isExpression) { - node.body = this.parseMaybeAssign(forInit); - node.expression = true; - this.checkParams(node, false); - } else { - var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); - if (!oldStrict || nonSimple) { - useStrict = this.strictDirective(this.end); - // If this is a strict mode function, verify that argument names - // are not repeated, and it does not try to bind the words `eval` - // or `arguments`. - if (useStrict && nonSimple) - { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } - } - // Start a new scope with regard to labels and the `inFunction` - // flag (restore them to their old value afterwards). - var oldLabels = this.labels; - this.labels = []; - if (useStrict) { this.strict = true; } - - // Add the params to varDeclaredNames to ensure that an error is thrown - // if a let/const declaration in the function clashes with one of the params. - this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); - // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' - if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); } - node.body = this.parseBlock(false, undefined, useStrict && !oldStrict); - node.expression = false; - this.adaptDirectivePrologue(node.body.body); - this.labels = oldLabels; - } - this.exitScope(); -}; -pp$5.isSimpleParamList = function(params) { - for (var i = 0, list = params; i < list.length; i += 1) - { - var param = list[i]; +/***/ }), - if (param.type !== "Identifier") { return false - } } - return true -}; +/***/ 33583: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// Checks function params for various disallowed patterns such as using "eval" -// or "arguments" and duplicate parameters. +"use strict"; -pp$5.checkParams = function(node, allowDuplicates) { - var nameHash = Object.create(null); - for (var i = 0, list = node.params; i < list.length; i += 1) - { - var param = list[i]; - this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isScope; +var _index = __nccwpck_require__(40741); +function isScope(node, parent) { + if ((0, _index.isBlockStatement)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) { + return false; } -}; - -// Parses a comma-separated list of expressions, and returns them as -// an array. `close` is the token type that ends the list, and -// `allowEmpty` can be turned on to allow subsequent commas with -// nothing in between them to be parsed as `null` (which is needed -// for array literals). - -pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { - var elts = [], first = true; - while (!this.eat(close)) { - if (!first) { - this.expect(types$1.comma); - if (allowTrailingComma && this.afterTrailingComma(close)) { break } - } else { first = false; } - - var elt = (void 0); - if (allowEmpty && this.type === types$1.comma) - { elt = null; } - else if (this.type === types$1.ellipsis) { - elt = this.parseSpread(refDestructuringErrors); - if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0) - { refDestructuringErrors.trailingComma = this.start; } - } else { - elt = this.parseMaybeAssign(false, refDestructuringErrors); - } - elts.push(elt); + if ((0, _index.isPattern)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) { + return true; } - return elts -}; + return (0, _index.isScopable)(node); +} -pp$5.checkUnreserved = function(ref) { - var start = ref.start; - var end = ref.end; - var name = ref.name; - - if (this.inGenerator && name === "yield") - { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } - if (this.inAsync && name === "await") - { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } - if (!(this.currentThisScope().flags & SCOPE_VAR) && name === "arguments") - { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } - if (this.inClassStaticBlock && (name === "arguments" || name === "await")) - { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } - if (this.keywords.test(name)) - { this.raise(start, ("Unexpected keyword '" + name + "'")); } - if (this.options.ecmaVersion < 6 && - this.input.slice(start, end).indexOf("\\") !== -1) { return } - var re = this.strict ? this.reservedWordsStrict : this.reservedWords; - if (re.test(name)) { - if (!this.inAsync && name === "await") - { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } - this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); - } -}; +//# sourceMappingURL=isScope.js.map -// Parse the next token as an identifier. If `liberal` is true (used -// when parsing properties), it will also convert keywords into -// identifiers. -pp$5.parseIdent = function(liberal) { - var node = this.parseIdentNode(); - this.next(!!liberal); - this.finishNode(node, "Identifier"); - if (!liberal) { - this.checkUnreserved(node); - if (node.name === "await" && !this.awaitIdentPos) - { this.awaitIdentPos = node.start; } - } - return node -}; +/***/ }), -pp$5.parseIdentNode = function() { - var node = this.startNode(); - if (this.type === types$1.name) { - node.name = this.value; - } else if (this.type.keyword) { - node.name = this.type.keyword; - - // To fix https://github.com/acornjs/acorn/issues/575 - // `class` and `function` keywords push new context into this.context. - // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. - // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword - if ((node.name === "class" || node.name === "function") && - (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { - this.context.pop(); - } - this.type = types$1.name; - } else { - this.unexpected(); - } - return node -}; +/***/ 64394: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -pp$5.parsePrivateIdent = function() { - var node = this.startNode(); - if (this.type === types$1.privateId) { - node.name = this.value; - } else { - this.unexpected(); - } - this.next(); - this.finishNode(node, "PrivateIdentifier"); +"use strict"; - // For validating existence - if (this.options.checkPrivateFields) { - if (this.privateNameStack.length === 0) { - this.raise(node.start, ("Private field '#" + (node.name) + "' must be declared in an enclosing class")); - } else { - this.privateNameStack[this.privateNameStack.length - 1].used.push(node); - } - } - return node -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isSpecifierDefault; +var _index = __nccwpck_require__(40741); +function isSpecifierDefault(specifier) { + return (0, _index.isImportDefaultSpecifier)(specifier) || (0, _index.isIdentifier)(specifier.imported || specifier.exported, { + name: "default" + }); +} -// Parses yield expression inside generator. +//# sourceMappingURL=isSpecifierDefault.js.map -pp$5.parseYield = function(forInit) { - if (!this.yieldPos) { this.yieldPos = this.start; } - var node = this.startNode(); - this.next(); - if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) { - node.delegate = false; - node.argument = null; - } else { - node.delegate = this.eat(types$1.star); - node.argument = this.parseMaybeAssign(forInit); - } - return this.finishNode(node, "YieldExpression") -}; +/***/ }), -pp$5.parseAwait = function(forInit) { - if (!this.awaitPos) { this.awaitPos = this.start; } +/***/ 53547: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeUnary(null, true, false, forInit); - return this.finishNode(node, "AwaitExpression") -}; +"use strict"; -var pp$4 = Parser.prototype; -// This function is used to raise exceptions on parse errors. It -// takes an offset integer (into the current `input`) to indicate -// the location of the error, attaches the position to the end -// of the error message, and then raises a `SyntaxError` with that -// message. +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isType; +var _index = __nccwpck_require__(40910); +function isType(nodeType, targetType) { + if (nodeType === targetType) return true; + if (nodeType == null) return false; + if (_index.ALIAS_KEYS[targetType]) return false; + const aliases = _index.FLIPPED_ALIAS_KEYS[targetType]; + if (aliases != null && aliases.includes(nodeType)) return true; + return false; +} -pp$4.raise = function(pos, message) { - var loc = getLineInfo(this.input, pos); - message += " (" + loc.line + ":" + loc.column + ")"; - if (this.sourceFile) { - message += " in " + this.sourceFile; - } - var err = new SyntaxError(message); - err.pos = pos; err.loc = loc; err.raisedAt = this.pos; - throw err -}; +//# sourceMappingURL=isType.js.map -pp$4.raiseRecoverable = pp$4.raise; -pp$4.curPosition = function() { - if (this.options.locations) { - return new Position(this.curLine, this.pos - this.lineStart) - } -}; +/***/ }), -var pp$3 = Parser.prototype; +/***/ 40267: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var Scope = function Scope(flags) { - this.flags = flags; - // A list of var-declared names in the current lexical scope - this.var = []; - // A list of lexically-declared names in the current lexical scope - this.lexical = []; - // A list of lexically-declared FunctionDeclaration names in the current lexical scope - this.functions = []; -}; +"use strict"; -// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. -pp$3.enterScope = function(flags) { - this.scopeStack.push(new Scope(flags)); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isValidES3Identifier; +var _isValidIdentifier = __nccwpck_require__(66030); +const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]); +function isValidES3Identifier(name) { + return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name); +} -pp$3.exitScope = function() { - this.scopeStack.pop(); -}; +//# sourceMappingURL=isValidES3Identifier.js.map -// The spec says: -// > At the top level of a function, or script, function declarations are -// > treated like var declarations rather than like lexical declarations. -pp$3.treatFunctionsAsVarInScope = function(scope) { - return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) -}; -pp$3.declareName = function(name, bindingType, pos) { - var redeclared = false; - if (bindingType === BIND_LEXICAL) { - var scope = this.currentScope(); - redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; - scope.lexical.push(name); - if (this.inModule && (scope.flags & SCOPE_TOP)) - { delete this.undefinedExports[name]; } - } else if (bindingType === BIND_SIMPLE_CATCH) { - var scope$1 = this.currentScope(); - scope$1.lexical.push(name); - } else if (bindingType === BIND_FUNCTION) { - var scope$2 = this.currentScope(); - if (this.treatFunctionsAsVar) - { redeclared = scope$2.lexical.indexOf(name) > -1; } - else - { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } - scope$2.functions.push(name); - } else { - for (var i = this.scopeStack.length - 1; i >= 0; --i) { - var scope$3 = this.scopeStack[i]; - if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || - !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { - redeclared = true; - break - } - scope$3.var.push(name); - if (this.inModule && (scope$3.flags & SCOPE_TOP)) - { delete this.undefinedExports[name]; } - if (scope$3.flags & SCOPE_VAR) { break } - } - } - if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } -}; +/***/ }), -pp$3.checkLocalExport = function(id) { - // scope.functions must be empty as Module code is always strict. - if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && - this.scopeStack[0].var.indexOf(id.name) === -1) { - this.undefinedExports[id.name] = id; - } -}; +/***/ 66030: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -pp$3.currentScope = function() { - return this.scopeStack[this.scopeStack.length - 1] -}; +"use strict"; -pp$3.currentVarScope = function() { - for (var i = this.scopeStack.length - 1;; i--) { - var scope = this.scopeStack[i]; - if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope } - } -}; -// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. -pp$3.currentThisScope = function() { - for (var i = this.scopeStack.length - 1;; i--) { - var scope = this.scopeStack[i]; - if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) && - !(scope.flags & SCOPE_ARROW)) { return scope } +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isValidIdentifier; +var _helperValidatorIdentifier = __nccwpck_require__(76599); +function isValidIdentifier(name, reserved = true) { + if (typeof name !== "string") return false; + if (reserved) { + if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) { + return false; + } } -}; + return (0, _helperValidatorIdentifier.isIdentifierName)(name); +} -var Node = function Node(parser, pos, loc) { - this.type = ""; - this.start = pos; - this.end = 0; - if (parser.options.locations) - { this.loc = new SourceLocation(parser, loc); } - if (parser.options.directSourceFile) - { this.sourceFile = parser.options.directSourceFile; } - if (parser.options.ranges) - { this.range = [pos, 0]; } -}; +//# sourceMappingURL=isValidIdentifier.js.map -// Start an AST node, attaching a start offset. -var pp$2 = Parser.prototype; +/***/ }), -pp$2.startNode = function() { - return new Node(this, this.start, this.startLoc) -}; +/***/ 21566: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -pp$2.startNodeAt = function(pos, loc) { - return new Node(this, pos, loc) -}; +"use strict"; -// Finish an AST node, adding `type` and `end` properties. -function finishNodeAt(node, type, pos, loc) { - node.type = type; - node.end = pos; - if (this.options.locations) - { node.loc.end = loc; } - if (this.options.ranges) - { node.range[1] = pos; } - return node +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isVar; +var _index = __nccwpck_require__(40741); +{ + var BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped"); +} +function isVar(node) { + { + return (0, _index.isVariableDeclaration)(node, { + kind: "var" + }) && !node[BLOCK_SCOPED_SYMBOL]; + } } -pp$2.finishNode = function(node, type) { - return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) -}; +//# sourceMappingURL=isVar.js.map -// Finish node at given position -pp$2.finishNodeAt = function(node, type, pos, loc) { - return finishNodeAt.call(this, node, type, pos, loc) -}; +/***/ }), -pp$2.copyNode = function(node) { - var newNode = new Node(this, node.start, this.startLoc); - for (var prop in node) { newNode[prop] = node[prop]; } - return newNode -}; +/***/ 47814: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -// This file was generated by "bin/generate-unicode-script-values.js". Do not modify manually! -var scriptValuesAddedInUnicode = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"; - -// This file contains Unicode properties extracted from the ECMAScript specification. -// The lists are extracted like so: -// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) - -// #table-binary-unicode-properties -var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; -var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; -var ecma11BinaryProperties = ecma10BinaryProperties; -var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; -var ecma13BinaryProperties = ecma12BinaryProperties; -var ecma14BinaryProperties = ecma13BinaryProperties; - -var unicodeBinaryProperties = { - 9: ecma9BinaryProperties, - 10: ecma10BinaryProperties, - 11: ecma11BinaryProperties, - 12: ecma12BinaryProperties, - 13: ecma13BinaryProperties, - 14: ecma14BinaryProperties -}; +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = matchesPattern; +var _index = __nccwpck_require__(40741); +function matchesPattern(member, match, allowPartial) { + if (!(0, _index.isMemberExpression)(member)) return false; + const parts = Array.isArray(match) ? match : match.split("."); + const nodes = []; + let node; + for (node = member; (0, _index.isMemberExpression)(node); node = node.object) { + nodes.push(node.property); + } + nodes.push(node); + if (nodes.length < parts.length) return false; + if (!allowPartial && nodes.length > parts.length) return false; + for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) { + const node = nodes[j]; + let value; + if ((0, _index.isIdentifier)(node)) { + value = node.name; + } else if ((0, _index.isStringLiteral)(node)) { + value = node.value; + } else if ((0, _index.isThisExpression)(node)) { + value = "this"; + } else { + return false; + } + if (parts[i] !== value) return false; + } + return true; +} -// #table-binary-unicode-properties-of-strings -var ecma14BinaryPropertiesOfStrings = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"; +//# sourceMappingURL=matchesPattern.js.map -var unicodeBinaryPropertiesOfStrings = { - 9: "", - 10: "", - 11: "", - 12: "", - 13: "", - 14: ecma14BinaryPropertiesOfStrings -}; -// #table-unicode-general-category-values -var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; - -// #table-unicode-script-values -var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; -var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; -var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; -var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; -var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; -var ecma14ScriptValues = ecma13ScriptValues + " " + scriptValuesAddedInUnicode; - -var unicodeScriptValues = { - 9: ecma9ScriptValues, - 10: ecma10ScriptValues, - 11: ecma11ScriptValues, - 12: ecma12ScriptValues, - 13: ecma13ScriptValues, - 14: ecma14ScriptValues -}; +/***/ }), -var data = {}; -function buildUnicodeData(ecmaVersion) { - var d = data[ecmaVersion] = { - binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), - binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]), - nonBinary: { - General_Category: wordsRegexp(unicodeGeneralCategoryValues), - Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) - } - }; - d.nonBinary.Script_Extensions = d.nonBinary.Script; +/***/ 20817: +/***/ ((__unused_webpack_module, exports) => { - d.nonBinary.gc = d.nonBinary.General_Category; - d.nonBinary.sc = d.nonBinary.Script; - d.nonBinary.scx = d.nonBinary.Script_Extensions; -} +"use strict"; -for (var i = 0, acorn_list = [9, 10, 11, 12, 13, 14]; i < acorn_list.length; i += 1) { - var ecmaVersion = acorn_list[i]; - buildUnicodeData(ecmaVersion); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = isCompatTag; +function isCompatTag(tagName) { + return !!tagName && /^[a-z]/.test(tagName); } -var pp$1 = Parser.prototype; +//# sourceMappingURL=isCompatTag.js.map -// Track disjunction structure to determine whether a duplicate -// capture group name is allowed because it is in a separate branch. -var BranchID = function BranchID(parent, base) { - // Parent disjunction branch - this.parent = parent; - // Identifies this set of sibling branches - this.base = base || this; -}; -BranchID.prototype.separatedFrom = function separatedFrom (alt) { - // A branch is separate from another branch if they or any of - // their parents are siblings in a given disjunction - for (var self = this; self; self = self.parent) { - for (var other = alt; other; other = other.parent) { - if (self.base === other.base && self !== other) { return true } - } - } - return false -}; +/***/ }), -BranchID.prototype.sibling = function sibling () { - return new BranchID(this.parent, this.base) -}; +/***/ 24513: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -var RegExpValidationState = function RegExpValidationState(parser) { - this.parser = parser; - this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); - this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion]; - this.source = ""; - this.flags = ""; - this.start = 0; - this.switchU = false; - this.switchV = false; - this.switchN = false; - this.pos = 0; - this.lastIntValue = 0; - this.lastStringValue = ""; - this.lastAssertionIsQuantifiable = false; - this.numCapturingParens = 0; - this.maxBackReference = 0; - this.groupNames = Object.create(null); - this.backReferenceNames = []; - this.branchID = null; -}; +"use strict"; -RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { - var unicodeSets = flags.indexOf("v") !== -1; - var unicode = flags.indexOf("u") !== -1; - this.start = start | 0; - this.source = pattern + ""; - this.flags = flags; - if (unicodeSets && this.parser.options.ecmaVersion >= 15) { - this.switchU = true; - this.switchV = true; - this.switchN = true; - } else { - this.switchU = unicode && this.parser.options.ecmaVersion >= 6; - this.switchV = false; - this.switchN = unicode && this.parser.options.ecmaVersion >= 9; - } -}; -RegExpValidationState.prototype.raise = function raise (message) { - this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); -}; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _buildMatchMemberExpression = __nccwpck_require__(77334); +const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component"); +var _default = exports["default"] = isReactComponent; -// If u flag is given, this returns the code point at the index (it combines a surrogate pair). -// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). -RegExpValidationState.prototype.at = function at (i, forceU) { - if ( forceU === void 0 ) forceU = false; +//# sourceMappingURL=isReactComponent.js.map - var s = this.source; - var l = s.length; - if (i >= l) { - return -1 - } - var c = s.charCodeAt(i); - if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { - return c - } - var next = s.charCodeAt(i + 1); - return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c -}; -RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) { - if ( forceU === void 0 ) forceU = false; +/***/ }), - var s = this.source; - var l = s.length; - if (i >= l) { - return l - } - var c = s.charCodeAt(i), next; - if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || - (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { - return i + 1 - } - return i + 2 -}; +/***/ 71581: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { -RegExpValidationState.prototype.current = function current (forceU) { - if ( forceU === void 0 ) forceU = false; +"use strict"; - return this.at(this.pos, forceU) -}; -RegExpValidationState.prototype.lookahead = function lookahead (forceU) { - if ( forceU === void 0 ) forceU = false; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = validate; +exports.validateChild = validateChild; +exports.validateField = validateField; +exports.validateInternal = validateInternal; +var _index = __nccwpck_require__(40910); +function validate(node, key, val) { + if (!node) return; + const fields = _index.NODE_FIELDS[node.type]; + if (!fields) return; + const field = fields[key]; + validateField(node, key, val, field); + validateChild(node, key, val); +} +function validateInternal(field, node, key, val, maybeNode) { + if (!(field != null && field.validate)) return; + if (field.optional && val == null) return; + field.validate(node, key, val); + if (maybeNode) { + var _NODE_PARENT_VALIDATI; + const type = val.type; + if (type == null) return; + (_NODE_PARENT_VALIDATI = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI.call(_index.NODE_PARENT_VALIDATIONS, node, key, val); + } +} +function validateField(node, key, val, field) { + if (!(field != null && field.validate)) return; + if (field.optional && val == null) return; + field.validate(node, key, val); +} +function validateChild(node, key, val) { + var _NODE_PARENT_VALIDATI2; + const type = val == null ? void 0 : val.type; + if (type == null) return; + (_NODE_PARENT_VALIDATI2 = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI2.call(_index.NODE_PARENT_VALIDATIONS, node, key, val); +} + +//# sourceMappingURL=validate.js.map - return this.at(this.nextIndex(this.pos, forceU), forceU) -}; -RegExpValidationState.prototype.advance = function advance (forceU) { - if ( forceU === void 0 ) forceU = false; +/***/ }), - this.pos = this.nextIndex(this.pos, forceU); -}; +/***/ 27182: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -RegExpValidationState.prototype.eat = function eat (ch, forceU) { - if ( forceU === void 0 ) forceU = false; +"use strict"; - if (this.current(forceU) === ch) { - this.advance(forceU); - return true - } - return false -}; -RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) { - if ( forceU === void 0 ) forceU = false; +const WritableStream = (__nccwpck_require__(57075).Writable) +const inherits = (__nccwpck_require__(57975).inherits) - var pos = this.pos; - for (var i = 0, list = chs; i < list.length; i += 1) { - var ch = list[i]; +const StreamSearch = __nccwpck_require__(84136) - var current = this.at(pos, forceU); - if (current === -1 || current !== ch) { - return false - } - pos = this.nextIndex(pos, forceU); - } - this.pos = pos; - return true -}; +const PartStream = __nccwpck_require__(50612) +const HeaderParser = __nccwpck_require__(62271) -/** - * Validate the flags part of a given RegExpLiteral. - * - * @param {RegExpValidationState} state The state to validate RegExp. - * @returns {void} - */ -pp$1.validateRegExpFlags = function(state) { - var validFlags = state.validFlags; - var flags = state.flags; +const DASH = 45 +const B_ONEDASH = Buffer.from('-') +const B_CRLF = Buffer.from('\r\n') +const EMPTY_FN = function () {} - var u = false; - var v = false; +function Dicer (cfg) { + if (!(this instanceof Dicer)) { return new Dicer(cfg) } + WritableStream.call(this, cfg) - for (var i = 0; i < flags.length; i++) { - var flag = flags.charAt(i); - if (validFlags.indexOf(flag) === -1) { - this.raise(state.start, "Invalid regular expression flag"); - } - if (flags.indexOf(flag, i + 1) > -1) { - this.raise(state.start, "Duplicate regular expression flag"); - } - if (flag === "u") { u = true; } - if (flag === "v") { v = true; } - } - if (this.options.ecmaVersion >= 15 && u && v) { - this.raise(state.start, "Invalid regular expression flag"); - } -}; + if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') } -function hasProp(obj) { - for (var _ in obj) { return true } - return false -} + if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined } -/** - * Validate the pattern part of a given RegExpLiteral. - * - * @param {RegExpValidationState} state The state to validate RegExp. - * @returns {void} - */ -pp$1.validateRegExpPattern = function(state) { - this.regexp_pattern(state); - - // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of - // parsing contains a |GroupName|, reparse with the goal symbol - // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* - // exception if _P_ did not conform to the grammar, if any elements of _P_ - // were not matched by the parse, or if any Early Error conditions exist. - if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) { - state.switchN = true; - this.regexp_pattern(state); - } -}; + this._headerFirst = cfg.headerFirst -// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern -pp$1.regexp_pattern = function(state) { - state.pos = 0; - state.lastIntValue = 0; - state.lastStringValue = ""; - state.lastAssertionIsQuantifiable = false; - state.numCapturingParens = 0; - state.maxBackReference = 0; - state.groupNames = Object.create(null); - state.backReferenceNames.length = 0; - state.branchID = null; + this._dashes = 0 + this._parts = 0 + this._finished = false + this._realFinish = false + this._isPreamble = true + this._justMatched = false + this._firstWrite = true + this._inHeader = true + this._part = undefined + this._cb = undefined + this._ignoreData = false + this._partOpts = { highWaterMark: cfg.partHwm } + this._pause = false - this.regexp_disjunction(state); + const self = this + this._hparser = new HeaderParser(cfg) + this._hparser.on('header', function (header) { + self._inHeader = false + self._part.emit('header', header) + }) +} +inherits(Dicer, WritableStream) - if (state.pos !== state.source.length) { - // Make the same messages as V8. - if (state.eat(0x29 /* ) */)) { - state.raise("Unmatched ')'"); - } - if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { - state.raise("Lone quantifier brackets"); +Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + const self = this + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')) + if (self._part && !self._ignoreData) { + const type = (self._isPreamble ? 'Preamble' : 'Part') + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')) + self._part.push(null) + process.nextTick(function () { + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + return + } + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) } - } - if (state.maxBackReference > state.numCapturingParens) { - state.raise("Invalid escape"); - } - for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { - var name = list[i]; + } else { WritableStream.prototype.emit.apply(this, arguments) } +} - if (!state.groupNames[name]) { - state.raise("Invalid named capture referenced"); - } - } -}; +Dicer.prototype._write = function (data, encoding, cb) { + // ignore unexpected data (e.g. extra trailer data after finished) + if (!this._hparser && !this._bparser) { return cb() } -// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction -pp$1.regexp_disjunction = function(state) { - var trackDisjunction = this.options.ecmaVersion >= 16; - if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); } - this.regexp_alternative(state); - while (state.eat(0x7C /* | */)) { - if (trackDisjunction) { state.branchID = state.branchID.sibling(); } - this.regexp_alternative(state); + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts) + if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() } + } + const r = this._hparser.push(data) + if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() } } - if (trackDisjunction) { state.branchID = state.branchID.parent; } - // Make the same message as V8. - if (this.regexp_eatQuantifier(state, true)) { - state.raise("Nothing to repeat"); - } - if (state.eat(0x7B /* { */)) { - state.raise("Lone quantifier brackets"); + // allows for "easier" testing + if (this._firstWrite) { + this._bparser.push(B_CRLF) + this._firstWrite = false } -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative -pp$1.regexp_alternative = function(state) { - while (state.pos < state.source.length && this.regexp_eatTerm(state)) {} -}; -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term -pp$1.regexp_eatTerm = function(state) { - if (this.regexp_eatAssertion(state)) { - // Handle `QuantifiableAssertion Quantifier` alternative. - // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion - // is a QuantifiableAssertion. - if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { - // Make the same message as V8. - if (state.switchU) { - state.raise("Invalid quantifier"); - } - } - return true - } + this._bparser.push(data) - if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { - this.regexp_eatQuantifier(state); - return true - } + if (this._pause) { this._cb = cb } else { cb() } +} - return false -}; +Dicer.prototype.reset = function () { + this._part = undefined + this._bparser = undefined + this._hparser = undefined +} -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion -pp$1.regexp_eatAssertion = function(state) { - var start = state.pos; - state.lastAssertionIsQuantifiable = false; +Dicer.prototype.setBoundary = function (boundary) { + const self = this + this._bparser = new StreamSearch('\r\n--' + boundary) + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end) + }) +} - // ^, $ - if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { - return true +Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true + this._part.on('error', EMPTY_FN) + // we must perform some kind of read on the stream even though we are + // ignoring the data, otherwise node's Readable stream will not emit 'end' + // after pushing null to the stream + this._part.resume() } +} - // \b \B - if (state.eat(0x5C /* \ */)) { - if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { - return true - } - state.pos = start; - } +Dicer.prototype._oninfo = function (isMatch, data, start, end) { + let buf; const self = this; let i = 0; let r; let shouldWriteMore = true - // Lookahead / Lookbehind - if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { - var lookbehind = false; - if (this.options.ecmaVersion >= 9) { - lookbehind = state.eat(0x3C /* < */); + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && (start + i) < end) { + if (data[start + i] === DASH) { + ++i + ++this._dashes + } else { + if (this._dashes) { buf = B_ONEDASH } + this._dashes = 0 + break + } } - if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { - this.regexp_disjunction(state); - if (!state.eat(0x29 /* ) */)) { - state.raise("Unterminated group"); + if (this._dashes === 2) { + if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) } + this.reset() + this._finished = true + // no more parts will be added + if (self._parts === 0) { + self._realFinish = true + self.emit('finish') + self._realFinish = false } - state.lastAssertionIsQuantifiable = !lookbehind; - return true } + if (this._dashes) { return } } - - state.pos = start; - return false -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier -pp$1.regexp_eatQuantifier = function(state, noError) { - if ( noError === void 0 ) noError = false; - - if (this.regexp_eatQuantifierPrefix(state, noError)) { - state.eat(0x3F /* ? */); - return true - } - return false -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix -pp$1.regexp_eatQuantifierPrefix = function(state, noError) { - return ( - state.eat(0x2A /* * */) || - state.eat(0x2B /* + */) || - state.eat(0x3F /* ? */) || - this.regexp_eatBracedQuantifier(state, noError) - ) -}; -pp$1.regexp_eatBracedQuantifier = function(state, noError) { - var start = state.pos; - if (state.eat(0x7B /* { */)) { - var min = 0, max = -1; - if (this.regexp_eatDecimalDigits(state)) { - min = state.lastIntValue; - if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { - max = state.lastIntValue; - } - if (state.eat(0x7D /* } */)) { - // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term - if (max !== -1 && max < min && !noError) { - state.raise("numbers out of order in {} quantifier"); - } - return true - } + if (this._justMatched) { this._justMatched = false } + if (!this._part) { + this._part = new PartStream(this._partOpts) + this._part._read = function (n) { + self._unpause() } - if (state.switchU && !noError) { - state.raise("Incomplete quantifier"); + if (this._isPreamble && this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part) + } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { + this.emit('part', this._part) + } else { + this._ignore() } - state.pos = start; + if (!this._isPreamble) { this._inHeader = true } } - return false -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom -pp$1.regexp_eatAtom = function(state) { - return ( - this.regexp_eatPatternCharacters(state) || - state.eat(0x2E /* . */) || - this.regexp_eatReverseSolidusAtomEscape(state) || - this.regexp_eatCharacterClass(state) || - this.regexp_eatUncapturingGroup(state) || - this.regexp_eatCapturingGroup(state) - ) -}; -pp$1.regexp_eatReverseSolidusAtomEscape = function(state) { - var start = state.pos; - if (state.eat(0x5C /* \ */)) { - if (this.regexp_eatAtomEscape(state)) { - return true + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { shouldWriteMore = this._part.push(buf) } + shouldWriteMore = this._part.push(data.slice(start, end)) + if (!shouldWriteMore) { this._pause = true } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { this._hparser.push(buf) } + r = this._hparser.push(data.slice(start, end)) + if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) } } - state.pos = start; } - return false -}; -pp$1.regexp_eatUncapturingGroup = function(state) { - var start = state.pos; - if (state.eat(0x28 /* ( */)) { - if (state.eat(0x3F /* ? */)) { - if (this.options.ecmaVersion >= 16) { - var addModifiers = this.regexp_eatModifiers(state); - var hasHyphen = state.eat(0x2D /* - */); - if (addModifiers || hasHyphen) { - for (var i = 0; i < addModifiers.length; i++) { - var modifier = addModifiers.charAt(i); - if (addModifiers.indexOf(modifier, i + 1) > -1) { - state.raise("Duplicate regular expression modifiers"); - } - } - if (hasHyphen) { - var removeModifiers = this.regexp_eatModifiers(state); - if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) { - state.raise("Invalid regular expression modifiers"); - } - for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) { - var modifier$1 = removeModifiers.charAt(i$1); - if ( - removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || - addModifiers.indexOf(modifier$1) > -1 - ) { - state.raise("Duplicate regular expression modifiers"); - } + if (isMatch) { + this._hparser.reset() + if (this._isPreamble) { this._isPreamble = false } else { + if (start !== end) { + ++this._parts + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } else { + self._unpause() } } - } - } - if (state.eat(0x3A /* : */)) { - this.regexp_disjunction(state); - if (state.eat(0x29 /* ) */)) { - return true - } - state.raise("Unterminated group"); + }) } } - state.pos = start; - } - return false -}; -pp$1.regexp_eatCapturingGroup = function(state) { - if (state.eat(0x28 /* ( */)) { - if (this.options.ecmaVersion >= 9) { - this.regexp_groupSpecifier(state); - } else if (state.current() === 0x3F /* ? */) { - state.raise("Invalid group"); - } - this.regexp_disjunction(state); - if (state.eat(0x29 /* ) */)) { - state.numCapturingParens += 1; - return true - } - state.raise("Unterminated group"); + this._part.push(null) + this._part = undefined + this._ignoreData = false + this._justMatched = true + this._dashes = 0 } - return false -}; -// RegularExpressionModifiers :: -// [empty] -// RegularExpressionModifiers RegularExpressionModifier -pp$1.regexp_eatModifiers = function(state) { - var modifiers = ""; - var ch = 0; - while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) { - modifiers += codePointToString(ch); - state.advance(); - } - return modifiers -}; -// RegularExpressionModifier :: one of -// `i` `m` `s` -function isRegularExpressionModifier(ch) { - return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */ } -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom -pp$1.regexp_eatExtendedAtom = function(state) { - return ( - state.eat(0x2E /* . */) || - this.regexp_eatReverseSolidusAtomEscape(state) || - this.regexp_eatCharacterClass(state) || - this.regexp_eatUncapturingGroup(state) || - this.regexp_eatCapturingGroup(state) || - this.regexp_eatInvalidBracedQuantifier(state) || - this.regexp_eatExtendedPatternCharacter(state) - ) -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier -pp$1.regexp_eatInvalidBracedQuantifier = function(state) { - if (this.regexp_eatBracedQuantifier(state, true)) { - state.raise("Nothing to repeat"); - } - return false -}; +Dicer.prototype._unpause = function () { + if (!this._pause) { return } -// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter -pp$1.regexp_eatSyntaxCharacter = function(state) { - var ch = state.current(); - if (isSyntaxCharacter(ch)) { - state.lastIntValue = ch; - state.advance(); - return true + this._pause = false + if (this._cb) { + const cb = this._cb + this._cb = undefined + cb() } - return false -}; -function isSyntaxCharacter(ch) { - return ( - ch === 0x24 /* $ */ || - ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || - ch === 0x2E /* . */ || - ch === 0x3F /* ? */ || - ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || - ch >= 0x7B /* { */ && ch <= 0x7D /* } */ - ) } -// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter -// But eat eager. -pp$1.regexp_eatPatternCharacters = function(state) { - var start = state.pos; - var ch = 0; - while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { - state.advance(); - } - return state.pos !== start -}; +module.exports = Dicer -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter -pp$1.regexp_eatExtendedPatternCharacter = function(state) { - var ch = state.current(); - if ( - ch !== -1 && - ch !== 0x24 /* $ */ && - !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && - ch !== 0x2E /* . */ && - ch !== 0x3F /* ? */ && - ch !== 0x5B /* [ */ && - ch !== 0x5E /* ^ */ && - ch !== 0x7C /* | */ - ) { - state.advance(); - return true - } - return false -}; -// GroupSpecifier :: -// [empty] -// `?` GroupName -pp$1.regexp_groupSpecifier = function(state) { - if (state.eat(0x3F /* ? */)) { - if (!this.regexp_eatGroupName(state)) { state.raise("Invalid group"); } - var trackDisjunction = this.options.ecmaVersion >= 16; - var known = state.groupNames[state.lastStringValue]; - if (known) { - if (trackDisjunction) { - for (var i = 0, list = known; i < list.length; i += 1) { - var altID = list[i]; - - if (!altID.separatedFrom(state.branchID)) - { state.raise("Duplicate capture group name"); } - } - } else { - state.raise("Duplicate capture group name"); - } - } - if (trackDisjunction) { - (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID); - } else { - state.groupNames[state.lastStringValue] = true; - } - } -}; +/***/ }), -// GroupName :: -// `<` RegExpIdentifierName `>` -// Note: this updates `state.lastStringValue` property with the eaten name. -pp$1.regexp_eatGroupName = function(state) { - state.lastStringValue = ""; - if (state.eat(0x3C /* < */)) { - if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { - return true - } - state.raise("Invalid capture group name"); - } - return false -}; +/***/ 62271: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// RegExpIdentifierName :: -// RegExpIdentifierStart -// RegExpIdentifierName RegExpIdentifierPart -// Note: this updates `state.lastStringValue` property with the eaten name. -pp$1.regexp_eatRegExpIdentifierName = function(state) { - state.lastStringValue = ""; - if (this.regexp_eatRegExpIdentifierStart(state)) { - state.lastStringValue += codePointToString(state.lastIntValue); - while (this.regexp_eatRegExpIdentifierPart(state)) { - state.lastStringValue += codePointToString(state.lastIntValue); - } - return true - } - return false -}; +"use strict"; -// RegExpIdentifierStart :: -// UnicodeIDStart -// `$` -// `_` -// `\` RegExpUnicodeEscapeSequence[+U] -pp$1.regexp_eatRegExpIdentifierStart = function(state) { - var start = state.pos; - var forceU = this.options.ecmaVersion >= 11; - var ch = state.current(forceU); - state.advance(forceU); - - if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { - ch = state.lastIntValue; - } - if (isRegExpIdentifierStart(ch)) { - state.lastIntValue = ch; - return true - } - state.pos = start; - return false -}; -function isRegExpIdentifierStart(ch) { - return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ -} - -// RegExpIdentifierPart :: -// UnicodeIDContinue -// `$` -// `_` -// `\` RegExpUnicodeEscapeSequence[+U] -// <ZWNJ> -// <ZWJ> -pp$1.regexp_eatRegExpIdentifierPart = function(state) { - var start = state.pos; - var forceU = this.options.ecmaVersion >= 11; - var ch = state.current(forceU); - state.advance(forceU); - - if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { - ch = state.lastIntValue; - } - if (isRegExpIdentifierPart(ch)) { - state.lastIntValue = ch; - return true - } +const EventEmitter = (__nccwpck_require__(78474).EventEmitter) +const inherits = (__nccwpck_require__(57975).inherits) +const getLimit = __nccwpck_require__(22393) - state.pos = start; - return false -}; -function isRegExpIdentifierPart(ch) { - return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */ -} +const StreamSearch = __nccwpck_require__(84136) -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape -pp$1.regexp_eatAtomEscape = function(state) { - if ( - this.regexp_eatBackReference(state) || - this.regexp_eatCharacterClassEscape(state) || - this.regexp_eatCharacterEscape(state) || - (state.switchN && this.regexp_eatKGroupName(state)) - ) { - return true - } - if (state.switchU) { - // Make the same message as V8. - if (state.current() === 0x63 /* c */) { - state.raise("Invalid unicode escape"); - } - state.raise("Invalid escape"); - } - return false -}; -pp$1.regexp_eatBackReference = function(state) { - var start = state.pos; - if (this.regexp_eatDecimalEscape(state)) { - var n = state.lastIntValue; - if (state.switchU) { - // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape - if (n > state.maxBackReference) { - state.maxBackReference = n; - } - return true - } - if (n <= state.numCapturingParens) { - return true - } - state.pos = start; - } - return false -}; -pp$1.regexp_eatKGroupName = function(state) { - if (state.eat(0x6B /* k */)) { - if (this.regexp_eatGroupName(state)) { - state.backReferenceNames.push(state.lastStringValue); - return true - } - state.raise("Invalid named reference"); - } - return false -}; +const B_DCRLF = Buffer.from('\r\n\r\n') +const RE_CRLF = /\r\n/g +const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape -pp$1.regexp_eatCharacterEscape = function(state) { - return ( - this.regexp_eatControlEscape(state) || - this.regexp_eatCControlLetter(state) || - this.regexp_eatZero(state) || - this.regexp_eatHexEscapeSequence(state) || - this.regexp_eatRegExpUnicodeEscapeSequence(state, false) || - (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || - this.regexp_eatIdentityEscape(state) - ) -}; -pp$1.regexp_eatCControlLetter = function(state) { - var start = state.pos; - if (state.eat(0x63 /* c */)) { - if (this.regexp_eatControlLetter(state)) { - return true +function HeaderParser (cfg) { + EventEmitter.call(this) + + cfg = cfg || {} + const self = this + this.nread = 0 + this.maxed = false + this.npairs = 0 + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000) + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024) + this.buffer = '' + this.header = {} + this.finished = false + this.ss = new StreamSearch(B_DCRLF) + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start + self.nread = self.maxHeaderSize + self.maxed = true + } else { self.nread += (end - start) } + + self.buffer += data.toString('binary', start, end) } - state.pos = start; - } - return false -}; -pp$1.regexp_eatZero = function(state) { - if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { - state.lastIntValue = 0; - state.advance(); - return true - } - return false -}; + if (isMatch) { self._finish() } + }) +} +inherits(HeaderParser, EventEmitter) -// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape -pp$1.regexp_eatControlEscape = function(state) { - var ch = state.current(); - if (ch === 0x74 /* t */) { - state.lastIntValue = 0x09; /* \t */ - state.advance(); - return true - } - if (ch === 0x6E /* n */) { - state.lastIntValue = 0x0A; /* \n */ - state.advance(); - return true - } - if (ch === 0x76 /* v */) { - state.lastIntValue = 0x0B; /* \v */ - state.advance(); - return true - } - if (ch === 0x66 /* f */) { - state.lastIntValue = 0x0C; /* \f */ - state.advance(); - return true - } - if (ch === 0x72 /* r */) { - state.lastIntValue = 0x0D; /* \r */ - state.advance(); - return true - } - return false -}; +HeaderParser.prototype.push = function (data) { + const r = this.ss.push(data) + if (this.finished) { return r } +} -// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter -pp$1.regexp_eatControlLetter = function(state) { - var ch = state.current(); - if (isControlLetter(ch)) { - state.lastIntValue = ch % 0x20; - state.advance(); - return true - } - return false -}; -function isControlLetter(ch) { - return ( - (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || - (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) - ) +HeaderParser.prototype.reset = function () { + this.finished = false + this.buffer = '' + this.header = {} + this.ss.reset() +} + +HeaderParser.prototype._finish = function () { + if (this.buffer) { this._parseHeader() } + this.ss.matches = this.ss.maxMatches + const header = this.header + this.header = {} + this.buffer = '' + this.finished = true + this.nread = this.npairs = 0 + this.maxed = false + this.emit('header', header) } -// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence -pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) { - if ( forceU === void 0 ) forceU = false; +HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { return } - var start = state.pos; - var switchU = forceU || state.switchU; + const lines = this.buffer.split(RE_CRLF) + const len = lines.length + let m, h - if (state.eat(0x75 /* u */)) { - if (this.regexp_eatFixedHexDigits(state, 4)) { - var lead = state.lastIntValue; - if (switchU && lead >= 0xD800 && lead <= 0xDBFF) { - var leadSurrogateEnd = state.pos; - if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { - var trail = state.lastIntValue; - if (trail >= 0xDC00 && trail <= 0xDFFF) { - state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; - return true - } - } - state.pos = leadSurrogateEnd; - state.lastIntValue = lead; + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (lines[i].length === 0) { continue } + if (lines[i][0] === '\t' || lines[i][0] === ' ') { + // folded header content + // RFC2822 says to just remove the CRLF and not the whitespace following + // it, so we follow the RFC and include the leading whitespace ... + if (h) { + this.header[h][this.header[h].length - 1] += lines[i] + continue } - return true } + + const posColon = lines[i].indexOf(':') if ( - switchU && - state.eat(0x7B /* { */) && - this.regexp_eatHexDigits(state) && - state.eat(0x7D /* } */) && - isValidUnicode(state.lastIntValue) + posColon === -1 || + posColon === 0 ) { - return true - } - if (switchU) { - state.raise("Invalid unicode escape"); + return } - state.pos = start; + m = RE_HDR.exec(lines[i]) + h = m[1].toLowerCase() + this.header[h] = this.header[h] || [] + this.header[h].push((m[2] || '')) + if (++this.npairs === this.maxHeaderPairs) { break } } - - return false -}; -function isValidUnicode(ch) { - return ch >= 0 && ch <= 0x10FFFF } -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape -pp$1.regexp_eatIdentityEscape = function(state) { - if (state.switchU) { - if (this.regexp_eatSyntaxCharacter(state)) { - return true - } - if (state.eat(0x2F /* / */)) { - state.lastIntValue = 0x2F; /* / */ - return true - } - return false - } - - var ch = state.current(); - if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { - state.lastIntValue = ch; - state.advance(); - return true - } - - return false -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape -pp$1.regexp_eatDecimalEscape = function(state) { - state.lastIntValue = 0; - var ch = state.current(); - if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { - do { - state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); - state.advance(); - } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) - return true - } - return false -}; +module.exports = HeaderParser -// Return values used by character set parsing methods, needed to -// forbid negation of sets that can match strings. -var CharSetNone = 0; // Nothing parsed -var CharSetOk = 1; // Construct parsed, cannot contain strings -var CharSetString = 2; // Construct parsed, can contain strings -// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape -pp$1.regexp_eatCharacterClassEscape = function(state) { - var ch = state.current(); +/***/ }), - if (isCharacterClassEscape(ch)) { - state.lastIntValue = -1; - state.advance(); - return CharSetOk - } +/***/ 50612: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - var negate = false; - if ( - state.switchU && - this.options.ecmaVersion >= 9 && - ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */) - ) { - state.lastIntValue = -1; - state.advance(); - var result; - if ( - state.eat(0x7B /* { */) && - (result = this.regexp_eatUnicodePropertyValueExpression(state)) && - state.eat(0x7D /* } */) - ) { - if (negate && result === CharSetString) { state.raise("Invalid property name"); } - return result - } - state.raise("Invalid property name"); - } +"use strict"; - return CharSetNone -}; -function isCharacterClassEscape(ch) { - return ( - ch === 0x64 /* d */ || - ch === 0x44 /* D */ || - ch === 0x73 /* s */ || - ch === 0x53 /* S */ || - ch === 0x77 /* w */ || - ch === 0x57 /* W */ - ) -} +const inherits = (__nccwpck_require__(57975).inherits) +const ReadableStream = (__nccwpck_require__(57075).Readable) -// UnicodePropertyValueExpression :: -// UnicodePropertyName `=` UnicodePropertyValue -// LoneUnicodePropertyNameOrValue -pp$1.regexp_eatUnicodePropertyValueExpression = function(state) { - var start = state.pos; +function PartStream (opts) { + ReadableStream.call(this, opts) +} +inherits(PartStream, ReadableStream) - // UnicodePropertyName `=` UnicodePropertyValue - if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { - var name = state.lastStringValue; - if (this.regexp_eatUnicodePropertyValue(state)) { - var value = state.lastStringValue; - this.regexp_validateUnicodePropertyNameAndValue(state, name, value); - return CharSetOk - } - } - state.pos = start; +PartStream.prototype._read = function (n) {} - // LoneUnicodePropertyNameOrValue - if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { - var nameOrValue = state.lastStringValue; - return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue) - } - return CharSetNone -}; +module.exports = PartStream -pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { - if (!hasOwn(state.unicodeProperties.nonBinary, name)) - { state.raise("Invalid property name"); } - if (!state.unicodeProperties.nonBinary[name].test(value)) - { state.raise("Invalid property value"); } -}; -pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { - if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk } - if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString } - state.raise("Invalid property name"); -}; +/***/ }), -// UnicodePropertyName :: -// UnicodePropertyNameCharacters -pp$1.regexp_eatUnicodePropertyName = function(state) { - var ch = 0; - state.lastStringValue = ""; - while (isUnicodePropertyNameCharacter(ch = state.current())) { - state.lastStringValue += codePointToString(ch); - state.advance(); - } - return state.lastStringValue !== "" -}; +/***/ 84136: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -function isUnicodePropertyNameCharacter(ch) { - return isControlLetter(ch) || ch === 0x5F /* _ */ -} +"use strict"; -// UnicodePropertyValue :: -// UnicodePropertyValueCharacters -pp$1.regexp_eatUnicodePropertyValue = function(state) { - var ch = 0; - state.lastStringValue = ""; - while (isUnicodePropertyValueCharacter(ch = state.current())) { - state.lastStringValue += codePointToString(ch); - state.advance(); - } - return state.lastStringValue !== "" -}; -function isUnicodePropertyValueCharacter(ch) { - return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) -} -// LoneUnicodePropertyNameOrValue :: -// UnicodePropertyValueCharacters -pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { - return this.regexp_eatUnicodePropertyValue(state) -}; +/** + * Copyright Brian White. All rights reserved. + * + * @see https://github.com/mscdex/streamsearch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool + */ +const EventEmitter = (__nccwpck_require__(78474).EventEmitter) +const inherits = (__nccwpck_require__(57975).inherits) -// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass -pp$1.regexp_eatCharacterClass = function(state) { - if (state.eat(0x5B /* [ */)) { - var negate = state.eat(0x5E /* ^ */); - var result = this.regexp_classContents(state); - if (!state.eat(0x5D /* ] */)) - { state.raise("Unterminated character class"); } - if (negate && result === CharSetString) - { state.raise("Negated character class may contain strings"); } - return true +function SBMH (needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle) } - return false -}; - -// https://tc39.es/ecma262/#prod-ClassContents -// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges -pp$1.regexp_classContents = function(state) { - if (state.current() === 0x5D /* ] */) { return CharSetOk } - if (state.switchV) { return this.regexp_classSetExpression(state) } - this.regexp_nonEmptyClassRanges(state); - return CharSetOk -}; -// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges -// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash -pp$1.regexp_nonEmptyClassRanges = function(state) { - while (this.regexp_eatClassAtom(state)) { - var left = state.lastIntValue; - if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { - var right = state.lastIntValue; - if (state.switchU && (left === -1 || right === -1)) { - state.raise("Invalid character class"); - } - if (left !== -1 && right !== -1 && left > right) { - state.raise("Range out of order in character class"); - } - } + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.') } -}; -// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom -// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash -pp$1.regexp_eatClassAtom = function(state) { - var start = state.pos; + const needleLength = needle.length - if (state.eat(0x5C /* \ */)) { - if (this.regexp_eatClassEscape(state)) { - return true - } - if (state.switchU) { - // Make the same message as V8. - var ch$1 = state.current(); - if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { - state.raise("Invalid class escape"); - } - state.raise("Invalid escape"); - } - state.pos = start; + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.') } - var ch = state.current(); - if (ch !== 0x5D /* ] */) { - state.lastIntValue = ch; - state.advance(); - return true + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.') } - return false -}; + this.maxMatches = Infinity + this.matches = 0 -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape -pp$1.regexp_eatClassEscape = function(state) { - var start = state.pos; + this._occ = new Array(256) + .fill(needleLength) // Initialize occurrence table. + this._lookbehind_size = 0 + this._needle = needle + this._bufpos = 0 - if (state.eat(0x62 /* b */)) { - state.lastIntValue = 0x08; /* <BS> */ - return true - } + this._lookbehind = Buffer.alloc(needleLength) - if (state.switchU && state.eat(0x2D /* - */)) { - state.lastIntValue = 0x2D; /* - */ - return true + // Populate occurrence table with analysis of the needle, + // ignoring last letter. + for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var + this._occ[needle[i]] = needleLength - 1 - i } +} +inherits(SBMH, EventEmitter) - if (!state.switchU && state.eat(0x63 /* c */)) { - if (this.regexp_eatClassControlLetter(state)) { - return true - } - state.pos = start; +SBMH.prototype.reset = function () { + this._lookbehind_size = 0 + this.matches = 0 + this._bufpos = 0 +} + +SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary') } + const chlen = chunk.length + this._bufpos = pos || 0 + let r + while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) } + return r +} - return ( - this.regexp_eatCharacterClassEscape(state) || - this.regexp_eatCharacterEscape(state) - ) -}; +SBMH.prototype._sbmh_feed = function (data) { + const len = data.length + const needle = this._needle + const needleLength = needle.length + const lastNeedleChar = needle[needleLength - 1] + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehind_size - 2] + let pos = -this._lookbehind_size + let ch + + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1) -// https://tc39.es/ecma262/#prod-ClassSetExpression -// https://tc39.es/ecma262/#prod-ClassUnion -// https://tc39.es/ecma262/#prod-ClassIntersection -// https://tc39.es/ecma262/#prod-ClassSubtraction -pp$1.regexp_classSetExpression = function(state) { - var result = CharSetOk, subResult; - if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) { - if (subResult === CharSetString) { result = CharSetString; } - // https://tc39.es/ecma262/#prod-ClassIntersection - var start = state.pos; - while (state.eatChars([0x26, 0x26] /* && */)) { if ( - state.current() !== 0x26 /* & */ && - (subResult = this.regexp_eatClassSetOperand(state)) + ch === lastNeedleChar && + this._sbmh_memcmp(data, pos, needleLength - 1) ) { - if (subResult !== CharSetString) { result = CharSetOk; } - continue - } - state.raise("Invalid character in character class"); - } - if (start !== state.pos) { return result } - // https://tc39.es/ecma262/#prod-ClassSubtraction - while (state.eatChars([0x2D, 0x2D] /* -- */)) { - if (this.regexp_eatClassSetOperand(state)) { continue } - state.raise("Invalid character in character class"); - } - if (start !== state.pos) { return result } - } else { - state.raise("Invalid character in character class"); - } - // https://tc39.es/ecma262/#prod-ClassUnion - for (;;) { - if (this.regexp_eatClassSetRange(state)) { continue } - subResult = this.regexp_eatClassSetOperand(state); - if (!subResult) { return result } - if (subResult === CharSetString) { result = CharSetString; } - } -}; + this._lookbehind_size = 0 + ++this.matches + this.emit('info', true) -// https://tc39.es/ecma262/#prod-ClassSetRange -pp$1.regexp_eatClassSetRange = function(state) { - var start = state.pos; - if (this.regexp_eatClassSetCharacter(state)) { - var left = state.lastIntValue; - if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) { - var right = state.lastIntValue; - if (left !== -1 && right !== -1 && left > right) { - state.raise("Range out of order in character class"); + return (this._bufpos = pos + needleLength) } - return true + pos += this._occ[ch] } - state.pos = start; - } - return false -}; -// https://tc39.es/ecma262/#prod-ClassSetOperand -pp$1.regexp_eatClassSetOperand = function(state) { - if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk } - return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state) -}; + // No match. -// https://tc39.es/ecma262/#prod-NestedClass -pp$1.regexp_eatNestedClass = function(state) { - var start = state.pos; - if (state.eat(0x5B /* [ */)) { - var negate = state.eat(0x5E /* ^ */); - var result = this.regexp_classContents(state); - if (state.eat(0x5D /* ] */)) { - if (negate && result === CharSetString) { - state.raise("Negated character class may contain strings"); - } - return result - } - state.pos = start; - } - if (state.eat(0x5C /* \ */)) { - var result$1 = this.regexp_eatCharacterClassEscape(state); - if (result$1) { - return result$1 + if (pos < 0) { + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos } } - state.pos = start; - } - return null -}; -// https://tc39.es/ecma262/#prod-ClassStringDisjunction -pp$1.regexp_eatClassStringDisjunction = function(state) { - var start = state.pos; - if (state.eatChars([0x5C, 0x71] /* \q */)) { - if (state.eat(0x7B /* { */)) { - var result = this.regexp_classStringDisjunctionContents(state); - if (state.eat(0x7D /* } */)) { - return result - } + if (pos >= 0) { + // Discard lookbehind buffer. + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size) + this._lookbehind_size = 0 } else { - // Make the same message as V8. - state.raise("Invalid escape"); - } - state.pos = start; - } - return null -}; + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = this._lookbehind_size + pos + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + this.emit('info', false, this._lookbehind, 0, bytesToCutOff) + } -// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents -pp$1.regexp_classStringDisjunctionContents = function(state) { - var result = this.regexp_classString(state); - while (state.eat(0x7C /* | */)) { - if (this.regexp_classString(state) === CharSetString) { result = CharSetString; } - } - return result -}; + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, + this._lookbehind_size - bytesToCutOff) + this._lookbehind_size -= bytesToCutOff -// https://tc39.es/ecma262/#prod-ClassString -// https://tc39.es/ecma262/#prod-NonEmptyClassString -pp$1.regexp_classString = function(state) { - var count = 0; - while (this.regexp_eatClassSetCharacter(state)) { count++; } - return count === 1 ? CharSetOk : CharSetString -}; + data.copy(this._lookbehind, this._lookbehind_size) + this._lookbehind_size += len -// https://tc39.es/ecma262/#prod-ClassSetCharacter -pp$1.regexp_eatClassSetCharacter = function(state) { - var start = state.pos; - if (state.eat(0x5C /* \ */)) { - if ( - this.regexp_eatCharacterEscape(state) || - this.regexp_eatClassSetReservedPunctuator(state) - ) { - return true - } - if (state.eat(0x62 /* b */)) { - state.lastIntValue = 0x08; /* <BS> */ - return true + this._bufpos = len + return len } - state.pos = start; - return false } - var ch = state.current(); - if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false } - if (isClassSetSyntaxCharacter(ch)) { return false } - state.advance(); - state.lastIntValue = ch; - return true -}; -// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator -function isClassSetReservedDoublePunctuatorCharacter(ch) { - return ( - ch === 0x21 /* ! */ || - ch >= 0x23 /* # */ && ch <= 0x26 /* & */ || - ch >= 0x2A /* * */ && ch <= 0x2C /* , */ || - ch === 0x2E /* . */ || - ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ || - ch === 0x5E /* ^ */ || - ch === 0x60 /* ` */ || - ch === 0x7E /* ~ */ - ) -} + pos += (pos >= 0) * this._bufpos -// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter -function isClassSetSyntaxCharacter(ch) { - return ( - ch === 0x28 /* ( */ || - ch === 0x29 /* ) */ || - ch === 0x2D /* - */ || - ch === 0x2F /* / */ || - ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ || - ch >= 0x7B /* { */ && ch <= 0x7D /* } */ - ) -} + // Lookbehind buffer is now empty. We only need to check if the + // needle is in the haystack. + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos) + ++this.matches + if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) } -// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator -pp$1.regexp_eatClassSetReservedPunctuator = function(state) { - var ch = state.current(); - if (isClassSetReservedPunctuator(ch)) { - state.lastIntValue = ch; - state.advance(); - return true + return (this._bufpos = pos + needleLength) + } else { + pos = len - needleLength } - return false -}; - -// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator -function isClassSetReservedPunctuator(ch) { - return ( - ch === 0x21 /* ! */ || - ch === 0x23 /* # */ || - ch === 0x25 /* % */ || - ch === 0x26 /* & */ || - ch === 0x2C /* , */ || - ch === 0x2D /* - */ || - ch >= 0x3A /* : */ && ch <= 0x3E /* > */ || - ch === 0x40 /* @ */ || - ch === 0x60 /* ` */ || - ch === 0x7E /* ~ */ - ) -} -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter -pp$1.regexp_eatClassControlLetter = function(state) { - var ch = state.current(); - if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { - state.lastIntValue = ch % 0x20; - state.advance(); - return true + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while ( + pos < len && + ( + data[pos] !== needle[0] || + ( + (Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0) + ) + ) + ) { + ++pos } - return false -}; - -// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence -pp$1.regexp_eatHexEscapeSequence = function(state) { - var start = state.pos; - if (state.eat(0x78 /* x */)) { - if (this.regexp_eatFixedHexDigits(state, 2)) { - return true - } - if (state.switchU) { - state.raise("Invalid escape"); - } - state.pos = start; + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)) + this._lookbehind_size = len - pos } - return false -}; -// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits -pp$1.regexp_eatDecimalDigits = function(state) { - var start = state.pos; - var ch = 0; - state.lastIntValue = 0; - while (isDecimalDigit(ch = state.current())) { - state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); - state.advance(); - } - return state.pos !== start -}; -function isDecimalDigit(ch) { - return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ -} + // Everything until pos is guaranteed not to contain needle data. + if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) } -// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits -pp$1.regexp_eatHexDigits = function(state) { - var start = state.pos; - var ch = 0; - state.lastIntValue = 0; - while (isHexDigit(ch = state.current())) { - state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); - state.advance(); - } - return state.pos !== start -}; -function isHexDigit(ch) { - return ( - (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || - (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || - (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) - ) -} -function hexToInt(ch) { - if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { - return 10 + (ch - 0x41 /* A */) - } - if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { - return 10 + (ch - 0x61 /* a */) - } - return ch - 0x30 /* 0 */ + this._bufpos = len + return len } -// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence -// Allows only 0-377(octal) i.e. 0-255(decimal). -pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) { - if (this.regexp_eatOctalDigit(state)) { - var n1 = state.lastIntValue; - if (this.regexp_eatOctalDigit(state)) { - var n2 = state.lastIntValue; - if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { - state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; - } else { - state.lastIntValue = n1 * 8 + n2; - } - } else { - state.lastIntValue = n1; - } - return true - } - return false -}; +SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return (pos < 0) + ? this._lookbehind[this._lookbehind_size + pos] + : data[pos] +} -// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit -pp$1.regexp_eatOctalDigit = function(state) { - var ch = state.current(); - if (isOctalDigit(ch)) { - state.lastIntValue = ch - 0x30; /* 0 */ - state.advance(); - return true - } - state.lastIntValue = 0; - return false -}; -function isOctalDigit(ch) { - return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ -} - -// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits -// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit -// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence -pp$1.regexp_eatFixedHexDigits = function(state, length) { - var start = state.pos; - state.lastIntValue = 0; - for (var i = 0; i < length; ++i) { - var ch = state.current(); - if (!isHexDigit(ch)) { - state.pos = start; - return false - } - state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); - state.advance(); +SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false } } return true -}; - -// Object type used to represent tokens. Note that normally, tokens -// simply exist as properties on the parser object. This is only -// used for the onToken callback and the external tokenizer. - -var Token = function Token(p) { - this.type = p.type; - this.value = p.value; - this.start = p.start; - this.end = p.end; - if (p.options.locations) - { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } - if (p.options.ranges) - { this.range = [p.start, p.end]; } -}; - -// ## Tokenizer - -var pp = Parser.prototype; - -// Move to the next token - -pp.next = function(ignoreEscapeSequenceInKeyword) { - if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) - { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } - if (this.options.onToken) - { this.options.onToken(new Token(this)); } - - this.lastTokEnd = this.end; - this.lastTokStart = this.start; - this.lastTokEndLoc = this.endLoc; - this.lastTokStartLoc = this.startLoc; - this.nextToken(); -}; - -pp.getToken = function() { - this.next(); - return new Token(this) -}; - -// If we're in an ES6 environment, make parsers iterable -if (typeof Symbol !== "undefined") - { pp[Symbol.iterator] = function() { - var this$1$1 = this; - - return { - next: function () { - var token = this$1$1.getToken(); - return { - done: token.type === types$1.eof, - value: token - } - } - } - }; } - -// Toggle strict mode. Re-reads the next number or string to please -// pedantic tests (`"use strict"; 010;` should fail). - -// Read a single token, updating the parser object's token-related -// properties. +} -pp.nextToken = function() { - var curContext = this.curContext(); - if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } +module.exports = SBMH - this.start = this.pos; - if (this.options.locations) { this.startLoc = this.curPosition(); } - if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) } - if (curContext.override) { return curContext.override(this) } - else { this.readToken(this.fullCharCodeAtPos()); } -}; +/***/ }), -pp.readToken = function(code) { - // Identifier or keyword. '\uXXXX' sequences are allowed in - // identifiers, so '\' also dispatches to that. - if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) - { return this.readWord() } +/***/ 89581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - return this.getTokenFromCode(code) -}; +"use strict"; -pp.fullCharCodeAtPos = function() { - var code = this.input.charCodeAt(this.pos); - if (code <= 0xd7ff || code >= 0xdc00) { return code } - var next = this.input.charCodeAt(this.pos + 1); - return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00 -}; -pp.skipBlockComment = function() { - var startLoc = this.options.onComment && this.curPosition(); - var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); - if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } - this.pos = end + 2; - if (this.options.locations) { - for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { - ++this.curLine; - pos = this.lineStart = nextBreak; - } - } - if (this.options.onComment) - { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, - startLoc, this.curPosition()); } -}; +const WritableStream = (__nccwpck_require__(57075).Writable) +const { inherits } = __nccwpck_require__(57975) +const Dicer = __nccwpck_require__(27182) -pp.skipLineComment = function(startSkip) { - var start = this.pos; - var startLoc = this.options.onComment && this.curPosition(); - var ch = this.input.charCodeAt(this.pos += startSkip); - while (this.pos < this.input.length && !isNewLine(ch)) { - ch = this.input.charCodeAt(++this.pos); - } - if (this.options.onComment) - { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, - startLoc, this.curPosition()); } -}; +const MultipartParser = __nccwpck_require__(41192) +const UrlencodedParser = __nccwpck_require__(80855) +const parseParams = __nccwpck_require__(8929) -// Called at the start of the parse and after every token. Skips -// whitespace and comments, and. +function Busboy (opts) { + if (!(this instanceof Busboy)) { return new Busboy(opts) } -pp.skipSpace = function() { - loop: while (this.pos < this.input.length) { - var ch = this.input.charCodeAt(this.pos); - switch (ch) { - case 32: case 160: // ' ' - ++this.pos; - break - case 13: - if (this.input.charCodeAt(this.pos + 1) === 10) { - ++this.pos; - } - case 10: case 8232: case 8233: - ++this.pos; - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - break - case 47: // '/' - switch (this.input.charCodeAt(this.pos + 1)) { - case 42: // '*' - this.skipBlockComment(); - break - case 47: - this.skipLineComment(2); - break - default: - break loop - } - break - default: - if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { - ++this.pos; - } else { - break loop - } - } + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.') } -}; - -// Called at the end of every token. Sets `end`, `val`, and -// maintains `context` and `exprAllowed`, and skips the space after -// the token, so that the next one's `start` will point at the -// right position. - -pp.finishToken = function(type, val) { - this.end = this.pos; - if (this.options.locations) { this.endLoc = this.curPosition(); } - var prevType = this.type; - this.type = type; - this.value = val; - - this.updateContext(prevType); -}; - -// ### Token reading - -// This is the function that is called to fetch the next token. It -// is somewhat obscure, because it works in character codes rather -// than characters, and because operator parsing has been inlined -// into it. -// -// All in the name of speed. -// -pp.readToken_dot = function() { - var next = this.input.charCodeAt(this.pos + 1); - if (next >= 48 && next <= 57) { return this.readNumber(true) } - var next2 = this.input.charCodeAt(this.pos + 2); - if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' - this.pos += 3; - return this.finishToken(types$1.ellipsis) - } else { - ++this.pos; - return this.finishToken(types$1.dot) + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.') } -}; - -pp.readToken_slash = function() { // '/' - var next = this.input.charCodeAt(this.pos + 1); - if (this.exprAllowed) { ++this.pos; return this.readRegexp() } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.slash, 1) -}; - -pp.readToken_mult_modulo_exp = function(code) { // '%*' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - var tokentype = code === 42 ? types$1.star : types$1.modulo; - - // exponentiation operator ** and **= - if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { - ++size; - tokentype = types$1.starstar; - next = this.input.charCodeAt(this.pos + 2); + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.') } - if (next === 61) { return this.finishOp(types$1.assign, size + 1) } - return this.finishOp(tokentype, size) -}; + const { + headers, + ...streamOptions + } = opts -pp.readToken_pipe_amp = function(code) { // '|&' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (this.options.ecmaVersion >= 12) { - var next2 = this.input.charCodeAt(this.pos + 2); - if (next2 === 61) { return this.finishOp(types$1.assign, 3) } - } - return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2) + this.opts = { + autoDestroy: false, + ...streamOptions } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1) -}; + WritableStream.call(this, this.opts) -pp.readToken_caret = function() { // '^' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.bitwiseXOR, 1) -}; + this._done = false + this._parser = this.getParserByHeaders(headers) + this._finished = false +} +inherits(Busboy, WritableStream) -pp.readToken_plus_min = function(code) { // '+-' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && - (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { - // A `-->` line comment - this.skipLineComment(3); - this.skipSpace(); - return this.nextToken() +Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + this._parser?.end() + return + } else if (this._finished) { + return } - return this.finishOp(types$1.incDec, 2) + this._finished = true } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.plusMin, 1) -}; + WritableStream.prototype.emit.apply(this, arguments) +} -pp.readToken_lt_gt = function(code) { // '<>' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; - if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) } - return this.finishOp(types$1.bitShift, size) - } - if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && - this.input.charCodeAt(this.pos + 3) === 45) { - // `<!--`, an XML-style comment that should be interpreted as a line comment - this.skipLineComment(4); - this.skipSpace(); - return this.nextToken() - } - if (next === 61) { size = 2; } - return this.finishOp(types$1.relational, size) -}; +Busboy.prototype.getParserByHeaders = function (headers) { + const parsed = parseParams(headers['content-type']) -pp.readToken_eq_excl = function(code) { // '=!' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) } - if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>' - this.pos += 2; - return this.finishToken(types$1.arrow) + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath } - return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1) -}; -pp.readToken_question = function() { // '?' - var ecmaVersion = this.options.ecmaVersion; - if (ecmaVersion >= 11) { - var next = this.input.charCodeAt(this.pos + 1); - if (next === 46) { - var next2 = this.input.charCodeAt(this.pos + 2); - if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) } - } - if (next === 63) { - if (ecmaVersion >= 12) { - var next2$1 = this.input.charCodeAt(this.pos + 2); - if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) } - } - return this.finishOp(types$1.coalesce, 2) - } + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg) } - return this.finishOp(types$1.question, 1) -}; - -pp.readToken_numberSign = function() { // '#' - var ecmaVersion = this.options.ecmaVersion; - var code = 35; // '#' - if (ecmaVersion >= 13) { - ++this.pos; - code = this.fullCharCodeAtPos(); - if (isIdentifierStart(code, true) || code === 92 /* '\' */) { - return this.finishToken(types$1.privateId, this.readWord1()) - } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg) } + throw new Error('Unsupported Content-Type.') +} - this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); -}; - -pp.getTokenFromCode = function(code) { - switch (code) { - // The interpretation of a dot depends on whether it is followed - // by a digit or another two dots. - case 46: // '.' - return this.readToken_dot() - - // Punctuation tokens. - case 40: ++this.pos; return this.finishToken(types$1.parenL) - case 41: ++this.pos; return this.finishToken(types$1.parenR) - case 59: ++this.pos; return this.finishToken(types$1.semi) - case 44: ++this.pos; return this.finishToken(types$1.comma) - case 91: ++this.pos; return this.finishToken(types$1.bracketL) - case 93: ++this.pos; return this.finishToken(types$1.bracketR) - case 123: ++this.pos; return this.finishToken(types$1.braceL) - case 125: ++this.pos; return this.finishToken(types$1.braceR) - case 58: ++this.pos; return this.finishToken(types$1.colon) +Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb) +} - case 96: // '`' - if (this.options.ecmaVersion < 6) { break } - ++this.pos; - return this.finishToken(types$1.backQuote) +module.exports = Busboy +module.exports["default"] = Busboy +module.exports.Busboy = Busboy - case 48: // '0' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number - if (this.options.ecmaVersion >= 6) { - if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number - if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number - } +module.exports.Dicer = Dicer - // Anything else beginning with a digit is an integer, octal - // number, or float. - case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 - return this.readNumber(false) - // Quotes produce strings. - case 34: case 39: // '"', "'" - return this.readString(code) +/***/ }), - // Operators are parsed inline in tiny state machines. '=' (61) is - // often referred to. `finishOp` simply skips the amount of - // characters it is given as second argument, and returns a token - // of the type given by its first argument. - case 47: // '/' - return this.readToken_slash() +/***/ 41192: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - case 37: case 42: // '%*' - return this.readToken_mult_modulo_exp(code) +"use strict"; - case 124: case 38: // '|&' - return this.readToken_pipe_amp(code) - case 94: // '^' - return this.readToken_caret() +// TODO: +// * support 1 nested multipart level +// (see second multipart example here: +// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) +// * support limits.fieldNameSize +// -- this will require modifications to utils.parseParams - case 43: case 45: // '+-' - return this.readToken_plus_min(code) +const { Readable } = __nccwpck_require__(57075) +const { inherits } = __nccwpck_require__(57975) - case 60: case 62: // '<>' - return this.readToken_lt_gt(code) +const Dicer = __nccwpck_require__(27182) - case 61: case 33: // '=!' - return this.readToken_eq_excl(code) +const parseParams = __nccwpck_require__(8929) +const decodeText = __nccwpck_require__(72747) +const basename = __nccwpck_require__(20692) +const getLimit = __nccwpck_require__(22393) - case 63: // '?' - return this.readToken_question() +const RE_BOUNDARY = /^boundary$/i +const RE_FIELD = /^form-data$/i +const RE_CHARSET = /^charset$/i +const RE_FILENAME = /^filename$/i +const RE_NAME = /^name$/i - case 126: // '~' - return this.finishOp(types$1.prefix, 1) +Multipart.detect = /^multipart\/form-data/i +function Multipart (boy, cfg) { + let i + let len + const self = this + let boundary + const limits = cfg.limits + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)) + const parsedConType = cfg.parsedConType || [] + const defCharset = cfg.defCharset || 'utf8' + const preservePath = cfg.preservePath + const fileOpts = { highWaterMark: cfg.fileHwm } - case 35: // '#' - return this.readToken_numberSign() + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && + RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1] + break + } } - this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'"); -}; - -pp.finishOp = function(type, size) { - var str = this.input.slice(this.pos, this.pos + size); - this.pos += size; - return this.finishToken(type, str) -}; - -pp.readRegexp = function() { - var escaped, inClass, start = this.pos; - for (;;) { - if (this.pos >= this.input.length) { this.raise(start, "Unterminated regular expression"); } - var ch = this.input.charAt(this.pos); - if (lineBreak.test(ch)) { this.raise(start, "Unterminated regular expression"); } - if (!escaped) { - if (ch === "[") { inClass = true; } - else if (ch === "]" && inClass) { inClass = false; } - else if (ch === "/" && !inClass) { break } - escaped = ch === "\\"; - } else { escaped = false; } - ++this.pos; - } - var pattern = this.input.slice(start, this.pos); - ++this.pos; - var flagsStart = this.pos; - var flags = this.readWord1(); - if (this.containsEsc) { this.unexpected(flagsStart); } - - // Validate pattern - var state = this.regexpState || (this.regexpState = new RegExpValidationState(this)); - state.reset(start, pattern, flags); - this.validateRegExpFlags(state); - this.validateRegExpPattern(state); - - // Create Literal#value property value. - var value = null; - try { - value = new RegExp(pattern, flags); - } catch (e) { - // ESTree requires null if it failed to instantiate RegExp object. - // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral + function checkFinished () { + if (nends === 0 && finished && !boy._done) { + finished = false + self.end() + } } - return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value}) -}; - -// Read an integer in the given radix. Return null if zero digits -// were read, the integer value otherwise. When `len` is given, this -// will return `null` unless the integer has exactly `len` digits. - -pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) { - // `len` is used for character escape sequences. In that case, disallow separators. - var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined; - - // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b) - // and isn't fraction part nor exponent part. In that case, if the first digit - // is zero then disallow separators. - var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48; - - var start = this.pos, total = 0, lastCode = 0; - for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) { - var code = this.input.charCodeAt(this.pos), val = (void 0); - - if (allowSeparators && code === 95) { - if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"); } - if (lastCode === 95) { this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"); } - if (i === 0) { this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"); } - lastCode = code; - continue - } + if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') } - if (code >= 97) { val = code - 97 + 10; } // a - else if (code >= 65) { val = code - 65 + 10; } // A - else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9 - else { val = Infinity; } - if (val >= radix) { break } - lastCode = code; - total = total * radix + val; - } + const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + const fileSizeLimit = getLimit(limits, 'fileSize', Infinity) + const filesLimit = getLimit(limits, 'files', Infinity) + const fieldsLimit = getLimit(limits, 'fields', Infinity) + const partsLimit = getLimit(limits, 'parts', Infinity) + const headerPairsLimit = getLimit(limits, 'headerPairs', 2000) + const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024) - if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"); } - if (this.pos === start || len != null && this.pos - start !== len) { return null } + let nfiles = 0 + let nfields = 0 + let nends = 0 + let curFile + let curField + let finished = false - return total -}; + this._needDrain = false + this._pause = false + this._cb = undefined + this._nparts = 0 + this._boy = boy -function stringToNumber(str, isLegacyOctalNumericLiteral) { - if (isLegacyOctalNumericLiteral) { - return parseInt(str, 8) + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark } - // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value. - return parseFloat(str.replace(/_/g, "")) -} - -function stringToBigInt(str) { - if (typeof BigInt !== "function") { - return null - } + this.parser = new Dicer(parserCfg) + this.parser.on('drain', function () { + self._needDrain = false + if (self._cb && !self._pause) { + const cb = self._cb + self._cb = undefined + cb() + } + }).on('part', function onPart (part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart) + self.parser.on('part', skipPart) + boy.hitPartsLimit = true + boy.emit('partsLimit') + return skipPart(part) + } - // `BigInt(value)` throws syntax error if the string contains numeric separators. - return BigInt(str.replace(/_/g, "")) -} + // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let + // us emit 'end' early since we know the part has ended if we are already + // seeing the next part + if (curField) { + const field = curField + field.emit('end') + field.removeAllListeners('end') + } -pp.readRadixNumber = function(radix) { - var start = this.pos; - this.pos += 2; // 0x - var val = this.readInt(radix); - if (val == null) { this.raise(this.start + 2, "Expected number in radix " + radix); } - if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) { - val = stringToBigInt(this.input.slice(start, this.pos)); - ++this.pos; - } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - return this.finishToken(types$1.num, val) -}; + part.on('header', function (header) { + let contype + let fieldname + let parsed + let charset + let encoding + let filename + let nsize = 0 -// Read an integer, octal integer, or floating-point number. - -pp.readNumber = function(startsWithDot) { - var start = this.pos; - if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, "Invalid number"); } - var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48; - if (octal && this.strict) { this.raise(start, "Invalid number"); } - var next = this.input.charCodeAt(this.pos); - if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) { - var val$1 = stringToBigInt(this.input.slice(start, this.pos)); - ++this.pos; - if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - return this.finishToken(types$1.num, val$1) - } - if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; } - if (next === 46 && !octal) { // '.' - ++this.pos; - this.readInt(10); - next = this.input.charCodeAt(this.pos); - } - if ((next === 69 || next === 101) && !octal) { // 'eE' - next = this.input.charCodeAt(++this.pos); - if (next === 43 || next === 45) { ++this.pos; } // '+-' - if (this.readInt(10) === null) { this.raise(start, "Invalid number"); } - } - if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, "Identifier directly after number"); } - - var val = stringToNumber(this.input.slice(start, this.pos), octal); - return this.finishToken(types$1.num, val) -}; + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]) + if (parsed[0]) { + contype = parsed[0].toLowerCase() + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase() + break + } + } + } + } -// Read a string value, interpreting backslash-escapes. + if (contype === undefined) { contype = 'text/plain' } + if (charset === undefined) { charset = defCharset } -pp.readCodePoint = function() { - var ch = this.input.charCodeAt(this.pos), code; + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]) + if (!RE_FIELD.test(parsed[0])) { return skipPart(part) } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1] + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1] + if (!preservePath) { filename = basename(filename) } + } + } + } else { return skipPart(part) } - if (ch === 123) { // '{' - if (this.options.ecmaVersion < 6) { this.unexpected(); } - var codePos = ++this.pos; - code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos); - ++this.pos; - if (code > 0x10FFFF) { this.invalidStringToken(codePos, "Code point out of bounds"); } - } else { - code = this.readHexChar(4); - } - return code -}; + if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' } -pp.readString = function(quote) { - var out = "", chunkStart = ++this.pos; - for (;;) { - if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated string constant"); } - var ch = this.input.charCodeAt(this.pos); - if (ch === quote) { break } - if (ch === 92) { // '\' - out += this.input.slice(chunkStart, this.pos); - out += this.readEscapedChar(false); - chunkStart = this.pos; - } else if (ch === 0x2028 || ch === 0x2029) { - if (this.options.ecmaVersion < 10) { this.raise(this.start, "Unterminated string constant"); } - ++this.pos; - if (this.options.locations) { - this.curLine++; - this.lineStart = this.pos; - } - } else { - if (isNewLine(ch)) { this.raise(this.start, "Unterminated string constant"); } - ++this.pos; - } - } - out += this.input.slice(chunkStart, this.pos++); - return this.finishToken(types$1.string, out) -}; + let onData, + onEnd -// Reads template string tokens. + if (isPartAFile(fieldname, contype, filename)) { + // file/binary field + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true + boy.emit('filesLimit') + } + return skipPart(part) + } -var INVALID_TEMPLATE_ESCAPE_ERROR = {}; + ++nfiles -pp.tryReadTemplateToken = function() { - this.inTemplateElement = true; - try { - this.readTmplToken(); - } catch (err) { - if (err === INVALID_TEMPLATE_ESCAPE_ERROR) { - this.readInvalidTemplateToken(); - } else { - throw err - } - } + if (boy.listenerCount('file') === 0) { + self.parser._ignore() + return + } - this.inTemplateElement = false; -}; + ++nends + const file = new FileStream(fileOpts) + curFile = file + file.on('end', function () { + --nends + self._pause = false + checkFinished() + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + }) + file._read = function (n) { + if (!self._pause) { return } + self._pause = false + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + } + boy.emit('file', fieldname, file, filename, encoding, contype) -pp.invalidStringToken = function(position, message) { - if (this.inTemplateElement && this.options.ecmaVersion >= 9) { - throw INVALID_TEMPLATE_ESCAPE_ERROR - } else { - this.raise(position, message); - } -}; + onData = function (data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length + if (extralen > 0) { file.push(data.slice(0, extralen)) } + file.truncated = true + file.bytesRead = fileSizeLimit + part.removeAllListeners('data') + file.emit('limit') + return + } else if (!file.push(data)) { self._pause = true } -pp.readTmplToken = function() { - var out = "", chunkStart = this.pos; - for (;;) { - if (this.pos >= this.input.length) { this.raise(this.start, "Unterminated template"); } - var ch = this.input.charCodeAt(this.pos); - if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${' - if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) { - if (ch === 36) { - this.pos += 2; - return this.finishToken(types$1.dollarBraceL) - } else { - ++this.pos; - return this.finishToken(types$1.backQuote) + file.bytesRead = nsize } - } - out += this.input.slice(chunkStart, this.pos); - return this.finishToken(types$1.template, out) - } - if (ch === 92) { // '\' - out += this.input.slice(chunkStart, this.pos); - out += this.readEscapedChar(true); - chunkStart = this.pos; - } else if (isNewLine(ch)) { - out += this.input.slice(chunkStart, this.pos); - ++this.pos; - switch (ch) { - case 13: - if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } - case 10: - out += "\n"; - break - default: - out += String.fromCharCode(ch); - break - } - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - chunkStart = this.pos; - } else { - ++this.pos; - } - } -}; - -// Reads a template token to search for the end, without validating any escape sequences -pp.readInvalidTemplateToken = function() { - for (; this.pos < this.input.length; this.pos++) { - switch (this.input[this.pos]) { - case "\\": - ++this.pos; - break - case "$": - if (this.input[this.pos + 1] !== "{") { break } - // fall through - case "`": - return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos)) - - case "\r": - if (this.input[this.pos + 1] === "\n") { ++this.pos; } - // fall through - case "\n": case "\u2028": case "\u2029": - ++this.curLine; - this.lineStart = this.pos + 1; - break - } - } - this.raise(this.start, "Unterminated template"); -}; + onEnd = function () { + curFile = undefined + file.push(null) + } + } else { + // non-file field + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true + boy.emit('fieldsLimit') + } + return skipPart(part) + } -// Used to read escaped characters + ++nfields + ++nends + let buffer = '' + let truncated = false + curField = part -pp.readEscapedChar = function(inTemplate) { - var ch = this.input.charCodeAt(++this.pos); - ++this.pos; - switch (ch) { - case 110: return "\n" // 'n' -> '\n' - case 114: return "\r" // 'r' -> '\r' - case 120: return String.fromCharCode(this.readHexChar(2)) // 'x' - case 117: return codePointToString(this.readCodePoint()) // 'u' - case 116: return "\t" // 't' -> '\t' - case 98: return "\b" // 'b' -> '\b' - case 118: return "\u000b" // 'v' -> '\u000b' - case 102: return "\f" // 'f' -> '\f' - case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\r\n' - case 10: // ' \n' - if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } - return "" - case 56: - case 57: - if (this.strict) { - this.invalidStringToken( - this.pos - 1, - "Invalid escape sequence" - ); - } - if (inTemplate) { - var codePos = this.pos - 1; + onData = function (data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = (fieldSizeLimit - (nsize - data.length)) + buffer += data.toString('binary', 0, extralen) + truncated = true + part.removeAllListeners('data') + } else { buffer += data.toString('binary') } + } - this.invalidStringToken( - codePos, - "Invalid escape sequence in template string" - ); - } - default: - if (ch >= 48 && ch <= 55) { - var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]; - var octal = parseInt(octalStr, 8); - if (octal > 255) { - octalStr = octalStr.slice(0, -1); - octal = parseInt(octalStr, 8); - } - this.pos += octalStr.length - 1; - ch = this.input.charCodeAt(this.pos); - if ((octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate)) { - this.invalidStringToken( - this.pos - 1 - octalStr.length, - inTemplate - ? "Octal literal in template string" - : "Octal literal in strict mode" - ); + onEnd = function () { + curField = undefined + if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype) + --nends + checkFinished() + } } - return String.fromCharCode(octal) - } - if (isNewLine(ch)) { - // Unicode new line characters after \ get removed from output in both - // template literals and strings - if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } - return "" - } - return String.fromCharCode(ch) - } -}; -// Used to read character escape sequences ('\x', '\u', '\U'). + /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become + broken. Streams2/streams3 is a huge black box of confusion, but + somehow overriding the sync state seems to fix things again (and still + seems to work for previous node versions). + */ + part._readableState.sync = false -pp.readHexChar = function(len) { - var codePos = this.pos; - var n = this.readInt(16, len); - if (n === null) { this.invalidStringToken(codePos, "Bad character escape sequence"); } - return n -}; + part.on('data', onData) + part.on('end', onEnd) + }).on('error', function (err) { + if (curFile) { curFile.emit('error', err) } + }) + }).on('error', function (err) { + boy.emit('error', err) + }).on('finish', function () { + finished = true + checkFinished() + }) +} -// Read an identifier, and return it as a string. Sets `this.containsEsc` -// to whether the word contained a '\u' escape. -// -// Incrementally adds only escaped chars, adding other chunks as-is -// as a micro-optimization. - -pp.readWord1 = function() { - this.containsEsc = false; - var word = "", first = true, chunkStart = this.pos; - var astral = this.options.ecmaVersion >= 6; - while (this.pos < this.input.length) { - var ch = this.fullCharCodeAtPos(); - if (isIdentifierChar(ch, astral)) { - this.pos += ch <= 0xffff ? 1 : 2; - } else if (ch === 92) { // "\" - this.containsEsc = true; - word += this.input.slice(chunkStart, this.pos); - var escStart = this.pos; - if (this.input.charCodeAt(++this.pos) !== 117) // "u" - { this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"); } - ++this.pos; - var esc = this.readCodePoint(); - if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) - { this.invalidStringToken(escStart, "Invalid Unicode escape"); } - word += codePointToString(esc); - chunkStart = this.pos; - } else { - break - } - first = false; +Multipart.prototype.write = function (chunk, cb) { + const r = this.parser.write(chunk) + if (r && !this._pause) { + cb() + } else { + this._needDrain = !r + this._cb = cb } - return word + this.input.slice(chunkStart, this.pos) -}; +} -// Read an identifier or keyword token. Will check for reserved -// words when necessary. +Multipart.prototype.end = function () { + const self = this -pp.readWord = function() { - var word = this.readWord1(); - var type = types$1.name; - if (this.keywords.test(word)) { - type = keywords[word]; + if (self.parser.writable) { + self.parser.end() + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true + self._boy.emit('finish') + }) } - return this.finishToken(type, word) -}; +} -// Acorn is a tiny, fast JavaScript parser written in JavaScript. -// -// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and -// various contributors and released under an MIT license. -// -// Git repositories for Acorn are available at -// -// http://marijnhaverbeke.nl/git/acorn -// https://github.com/acornjs/acorn.git -// -// Please use the [github bug tracker][ghbt] to report issues. -// -// [ghbt]: https://github.com/acornjs/acorn/issues -// -// [walk]: util/walk.js - - -var version = "8.14.1"; - -Parser.acorn = { - Parser: Parser, - version: version, - defaultOptions: defaultOptions, - Position: Position, - SourceLocation: SourceLocation, - getLineInfo: getLineInfo, - Node: Node, - TokenType: TokenType, - tokTypes: types$1, - keywordTypes: keywords, - TokContext: TokContext, - tokContexts: types, - isIdentifierChar: isIdentifierChar, - isIdentifierStart: isIdentifierStart, - Token: Token, - isNewLine: isNewLine, - lineBreak: lineBreak, - lineBreakG: lineBreakG, - nonASCIIwhitespace: nonASCIIwhitespace -}; +function skipPart (part) { + part.resume() +} -// The main exported interface (under `self.acorn` when in the -// browser) is a `parse` function that takes a code string and returns -// an abstract syntax tree as specified by the [ESTree spec][estree]. -// -// [estree]: https://github.com/estree/estree +function FileStream (opts) { + Readable.call(this, opts) + + this.bytesRead = 0 -function acorn_parse(input, options) { - return Parser.parse(input, options) + this.truncated = false } -// This function tries to parse a single expression at a given -// offset in a string. Useful for parsing mixed-language formats -// that embed JavaScript expressions. +inherits(FileStream, Readable) -function parseExpressionAt(input, pos, options) { - return Parser.parseExpressionAt(input, pos, options) -} +FileStream.prototype._read = function (n) {} -// Acorn is organized as a tokenizer and a recursive-descent parser. -// The `tokenizer` export provides an interface to the tokenizer. +module.exports = Multipart -function tokenizer(input, options) { - return Parser.tokenizer(input, options) -} +/***/ }), +/***/ 80855: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// EXTERNAL MODULE: ./node_modules/acorn-jsx/index.js -var acorn_jsx = __nccwpck_require__(3637); -;// CONCATENATED MODULE: ./node_modules/estree-util-visit/lib/color.node.js -/** - * @param {string} d - * @returns {string} - */ -function color_node_color(d) { - return '\u001B[33m' + d + '\u001B[39m' -} +"use strict"; -;// CONCATENATED MODULE: ./node_modules/estree-util-visit/lib/index.js -/** - * @typedef {import('estree-jsx').Node} Node - */ -/** - * @typedef {CONTINUE | EXIT | SKIP} Action - * Union of the action types. - * - * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple - * List with one or two values, the first an action, the second an index. - * - * @typedef {number} Index - * Move to the sibling at `index` next (after node itself is completely - * traversed), when moving in an array. - * - * Useful if mutating the tree, such as removing the node the visitor is - * currently on, or any of its previous siblings. - * Results less than 0 or greater than or equal to `children.length` stop - * traversing the parent. - */ +const Decoder = __nccwpck_require__(11496) +const decodeText = __nccwpck_require__(72747) +const getLimit = __nccwpck_require__(22393) -/** - * @callback Visitor - * Handle a node. - * - * Visitors are free to transform `node`. - * They can also transform the parent of node (the last of `ancestors`). - * - * Replacing `node` itself, if `SKIP` is not returned, still causes its - * descendants to be walked (which is a bug). - * - * When adding or removing previous siblings of `node`, the `Visitor` should - * return a new `Index` to specify the sibling to traverse after `node` is - * traversed. - * Adding or removing next siblings of `node` is handled as expected without - * needing to return a new `Index`. - * @param {Node} node - * Found node. - * @param {string | undefined} key - * Field at which `node` lives in its parent (or where a list of nodes lives). - * @param {number | undefined} index - * Index where `node` lives if `parent[key]` is an array. - * @param {Array<Node>} ancestors - * Ancestors of `node`. - * @returns {Action | ActionTuple | Index | null | undefined | void} - * What to do next. - * - * An `Index` is treated as a tuple of `[CONTINUE, Index]`. - * An `Action` is treated as a tuple of `[Action]`. - * - * Passing a tuple back only makes sense if the `Action` is `SKIP`. - * When the `Action` is `EXIT`, that action can be returned. - * When the `Action` is `CONTINUE`, `Index` can be returned. - */ +const RE_CHARSET = /^charset$/i -/** - * @typedef Visitors - * Handle nodes when entering (preorder) and leaving (postorder). - * @property {Visitor | null | undefined} [enter] - * Handle nodes when entering (preorder) (optional). - * @property {Visitor | null | undefined} [leave] - * Handle nodes when leaving (postorder) (optional). - */ +UrlEncoded.detect = /^application\/x-www-form-urlencoded/i +function UrlEncoded (boy, cfg) { + const limits = cfg.limits + const parsedConType = cfg.parsedConType + this.boy = boy + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100) + this.fieldsLimit = getLimit(limits, 'fields', Infinity) + let charset + for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var + if (Array.isArray(parsedConType[i]) && + RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase() + break + } + } -const estree_util_visit_lib_own = {}.hasOwnProperty + if (charset === undefined) { charset = cfg.defCharset || 'utf8' } -/** - * Continue traversing as normal. - */ -const lib_CONTINUE = Symbol('continue') + this.decoder = new Decoder() + this.charset = charset + this._fields = 0 + this._state = 'key' + this._checkingBytes = true + this._bytesKey = 0 + this._bytesVal = 0 + this._key = '' + this._val = '' + this._keyTrunc = false + this._valTrunc = false + this._hitLimit = false +} -/** - * Stop traversing immediately. - */ -const lib_EXIT = Symbol('exit') +UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true + this.boy.emit('fieldsLimit') + } + return cb() + } -/** - * Do not traverse this node’s children. - */ -const lib_SKIP = Symbol('skip') + let idxeq; let idxamp; let i; let p = 0; const len = data.length -/** - * Visit nodes, with ancestral information. - * - * This algorithm performs *depth-first* *tree traversal* in *preorder* - * (**NLR**) and/or *postorder* (**LRN**). - * - * Walking the tree is an intensive task. - * Make use of the return values of the visitor(s) when possible. - * Instead of walking a tree multiple times, walk it once, use `unist-util-is` - * to check if a node matches, and then perform different operations. - * - * @param {Node} tree - * Tree to traverse - * @param {Visitor | Visitors | null | undefined} [visitor] - * Handle each node (optional). - * @returns {undefined} - * Nothing. - */ -function lib_visit(tree, visitor) { - /** @type {Visitor | undefined} */ - let enter - /** @type {Visitor | undefined} */ - let leave + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x3D/* = */) { + idxeq = i + break + } else if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesKey } + } - if (typeof visitor === 'function') { - enter = visitor - } else if (visitor && typeof visitor === 'object') { - if (visitor.enter) enter = visitor.enter - if (visitor.leave) leave = visitor.leave - } + if (idxeq !== undefined) { + // key with assignment + if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) } + this._state = 'val' - build(tree, undefined, undefined, [])() + this._hitLimit = false + this._checkingBytes = true + this._val = '' + this._bytesVal = 0 + this._valTrunc = false + this.decoder.reset() - /** - * @param {Node} node - * @param {string | undefined} key - * @param {number | undefined} index - * @param {Array<Node>} parents - */ - function build(node, key, index, parents) { - if (nodelike(node)) { - visit.displayName = 'node (' + color_node_color(node.type) + ')' - } + p = idxeq + 1 + } else if (idxamp !== undefined) { + // key with no assignment + ++this._fields + let key; const keyTrunc = this._keyTrunc + if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key } - return visit + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() - /** - * @returns {ActionTuple} - */ - function visit() { - /** @type {ActionTuple} */ - const result = enter ? lib_toResult(enter(node, key, index, parents)) : [] + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), + '', + keyTrunc, + false) + } - if (result[0] === lib_EXIT) { - return result + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._keyTrunc = true + } + } else { + if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) } + p = len + } + } else { + idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesVal } } - if (result[0] !== lib_SKIP) { - /** @type {keyof node} */ - let cKey + if (idxamp !== undefined) { + ++this._fields + if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) } + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + this._state = 'key' + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() - for (cKey in node) { - if ( - estree_util_visit_lib_own.call(node, cKey) && - node[cKey] && - typeof node[cKey] === 'object' && - // @ts-expect-error: custom esast extension. - cKey !== 'data' && - // @ts-expect-error: custom esast extension. - cKey !== 'position' - ) { - const grandparents = parents.concat(node) - /** @type {unknown} */ - const value = node[cKey] - - if (Array.isArray(value)) { - const nodes = /** @type {Array<unknown>} */ (value) - let cIndex = 0 - - while (cIndex > -1 && cIndex < nodes.length) { - const subvalue = nodes[cIndex] - - if (nodelike(subvalue)) { - const subresult = build( - subvalue, - cKey, - cIndex, - grandparents - )() - if (subresult[0] === lib_EXIT) return subresult - cIndex = - typeof subresult[1] === 'number' ? subresult[1] : cIndex + 1 - } else { - cIndex++ - } - } - } else if (nodelike(value)) { - const subresult = build(value, cKey, undefined, grandparents)() - if (subresult[0] === lib_EXIT) return subresult - } - } + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._val === '' && this.fieldSizeLimit === 0) || + (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._valTrunc = true } + } else { + if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) } + p = len } - - return leave ? lib_toResult(leave(node, key, index, parents)) : result } } + cb() } -/** - * Turn a return value into a clean result. - * - * @param {Action | ActionTuple | Index | null | undefined | void} value - * Valid return values from visitors. - * @returns {ActionTuple} - * Clean result. - */ -function lib_toResult(value) { - if (Array.isArray(value)) { - return value - } +UrlEncoded.prototype.end = function () { + if (this.boy._done) { return } - if (typeof value === 'number') { - return [lib_CONTINUE, value] + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + '', + this._keyTrunc, + false) + } else if (this._state === 'val') { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) } - - return [value] -} - -/** - * Check if something looks like a node. - * - * @param {unknown} value - * Anything. - * @returns {value is Node} - * Whether `value` looks like a node. - */ -function nodelike(value) { - return Boolean( - value && - typeof value === 'object' && - 'type' in value && - typeof value.type === 'string' && - value.type.length > 0 - ) + this.boy._done = true + this.boy.emit('finish') } -;// CONCATENATED MODULE: ./node_modules/micromark-util-events-to-acorn/lib/index.js -/** - * @import {Comment, Node as AcornNode, Token} from 'acorn' - * @import {Node as EstreeNode, Program} from 'estree' - * @import {Chunk, Event, Point as MicromarkPoint, TokenType} from 'micromark-util-types' - * @import {Point as UnistPoint} from 'unist' - * - * @import {AcornOptions, Options} from 'micromark-util-events-to-acorn' - * @import {AcornError, Collection, Result, Stop} from './types.js' - */ - - +module.exports = UrlEncoded -/** - * Parse a list of micromark events with acorn. - * - * @param {Array<Event>} events - * Events. - * @param {Options} options - * Configuration (required). - * @returns {Result} - * Result. - */ -// eslint-disable-next-line complexity -function eventsToAcorn(events, options) { - const prefix = options.prefix || ''; - const suffix = options.suffix || ''; - const acornOptions = Object.assign({}, options.acornOptions); - /** @type {Array<Comment>} */ - const comments = []; - /** @type {Array<Token>} */ - const tokens = []; - const onComment = acornOptions.onComment; - const onToken = acornOptions.onToken; - let swallow = false; - /** @type {AcornNode | undefined} */ - let estree; - /** @type {AcornError | undefined} */ - let exception; - /** @type {AcornOptions} */ - const acornConfig = Object.assign({}, acornOptions, { - onComment: comments, - preserveParens: true - }); - if (onToken) { - acornConfig.onToken = tokens; - } - const collection = collect(events, options.tokenTypes); - const source = collection.value; - const value = prefix + source + suffix; - const isEmptyExpression = options.expression && lib_empty(source); - if (isEmptyExpression && !options.allowEmpty) { - throw new VFileMessage('Unexpected empty expression', { - place: parseOffsetToUnistPoint(0), - ruleId: 'unexpected-empty-expression', - source: 'micromark-extension-mdx-expression' - }); - } - try { - estree = options.expression && !isEmptyExpression ? options.acorn.parseExpressionAt(value, 0, acornConfig) : options.acorn.parse(value, acornConfig); - } catch (error_) { - const error = /** @type {AcornError} */error_; - const point = parseOffsetToUnistPoint(error.pos); - error.message = String(error.message).replace(/ \(\d+:\d+\)$/, ''); - // Always defined in our unist points that come from micromark. - - error.pos = point.offset; - error.loc = { - line: point.line, - column: point.column - 1 - }; - exception = error; - swallow = error.raisedAt >= prefix.length + source.length || - // Broken comments are raised at their start, not their end. - error.message === 'Unterminated comment'; - } - if (estree && options.expression && !isEmptyExpression) { - if (lib_empty(value.slice(estree.end, value.length - suffix.length))) { - estree = { - type: 'Program', - start: 0, - end: prefix.length + source.length, - // @ts-expect-error: It’s good. - body: [{ - type: 'ExpressionStatement', - expression: estree, - start: 0, - end: prefix.length + source.length - }], - sourceType: 'module', - comments: [] - }; - } else { - const point = parseOffsetToUnistPoint(estree.end); - const error = /** @type {AcornError} */ - new Error('Unexpected content after expression'); - // Always defined in our unist points that come from micromark. - - error.pos = point.offset; - error.loc = { - line: point.line, - column: point.column - 1 - }; - exception = error; - estree = undefined; - } - } - if (estree) { - // @ts-expect-error: acorn *does* allow comments - estree.comments = comments; - - // @ts-expect-error: acorn looks enough like estree. - lib_visit(estree, function (esnode, field, index, parents) { - let context = /** @type {AcornNode | Array<AcornNode>} */ - parents[parents.length - 1]; - /** @type {number | string | undefined} */ - let property = field; - - // Remove non-standard `ParenthesizedExpression`. - // @ts-expect-error: included in acorn. - if (esnode.type === 'ParenthesizedExpression' && context && property) { - /* c8 ignore next 5 */ - if (typeof index === 'number') { - // @ts-expect-error: indexable. - context = context[property]; - property = index; - } - - // @ts-expect-error: indexable. - context[property] = esnode.expression; - } - fixPosition(esnode); - }); +/***/ }), - // Comment positions are fixed by `visit` because they’re in the tree. - if (Array.isArray(onComment)) { - onComment.push(...comments); - } else if (typeof onComment === 'function') { - for (const comment of comments) { - onComment(comment.type === 'Block', comment.value, comment.start, comment.end, comment.loc.start, comment.loc.end); - } - } - for (const token of tokens) { - // Ignore tokens that ends in prefix or start in suffix: - if (token.end <= prefix.length || token.start - prefix.length >= source.length) { - continue; - } - fixPosition(token); - if (Array.isArray(onToken)) { - onToken.push(token); - } else { - // `tokens` are not added if `onToken` is not defined, so it must be a - // function. +/***/ 11496: +/***/ ((module) => { - onToken(token); - } - } - } +"use strict"; - // @ts-expect-error: It’s a program now. - return { - estree, - error: exception, - swallow - }; - /** - * Update the position of a node. - * - * @param {AcornNode | EstreeNode | Token} nodeOrToken - * @returns {undefined} - */ - function fixPosition(nodeOrToken) { - const pointStart = parseOffsetToUnistPoint(nodeOrToken.start); - const pointEnd = parseOffsetToUnistPoint(nodeOrToken.end); - // Always defined in our unist points that come from micromark. - - nodeOrToken.start = pointStart.offset; - nodeOrToken.end = pointEnd.offset; - nodeOrToken.loc = { - start: { - line: pointStart.line, - column: pointStart.column - 1, - // @ts-expect-error: not allowed by acorn types. - offset: pointStart.offset - }, - end: { - line: pointEnd.line, - column: pointEnd.column - 1, - // @ts-expect-error: not allowed by acorn types. - offset: pointEnd.offset - } - }; - nodeOrToken.range = [nodeOrToken.start, nodeOrToken.end]; - } +const RE_PLUS = /\+/g - /** - * Turn an arbitrary offset into the parsed value, into a point in the source - * value. - * - * @param {number} acornOffset - * @returns {UnistPoint} - */ - function parseOffsetToUnistPoint(acornOffset) { - let sourceOffset = acornOffset - prefix.length; - if (sourceOffset < 0) { - sourceOffset = 0; - } else if (sourceOffset > source.length) { - sourceOffset = source.length; - } - let point = relativeToPoint(collection.stops, sourceOffset); - if (!point) { - point = { - line: options.start.line, - column: options.start.column, - offset: options.start.offset - }; - } - return point; - } -} +const HEX = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +] -/** - * @param {string} value - * @returns {boolean} - */ -function lib_empty(value) { - return /^\s*$/.test(value - // Multiline comments. - .replace(/\/\*[\s\S]*?\*\//g, '') - // Line comments. - // EOF instead of EOL is specifically not allowed, because that would - // mean the closing brace is on the commented-out line - .replace(/\/\/[^\r\n]*(\r\n|\n|\r)/g, '')); +function Decoder () { + this.buffer = undefined } - -// Port from <https://github.com/wooorm/markdown-rs/blob/e692ab0/src/util/mdx_collect.rs#L15>. -/** - * @param {Array<Event>} events - * @param {Array<TokenType>} tokenTypes - * @returns {Collection} - */ -function collect(events, tokenTypes) { - /** @type {Collection} */ - const result = { - value: '', - stops: [] - }; - let index = -1; - while (++index < events.length) { - const event = events[index]; - - // Assume void. - if (event[0] === 'enter') { - const type = event[1].type; - if (type === "lineEnding" || tokenTypes.includes(type)) { - const chunks = event[2].sliceStream(event[1]); - - // Drop virtual spaces. - while (chunks.length > 0 && chunks[0] === -1) { - chunks.shift(); +Decoder.prototype.write = function (str) { + // Replace '+' with ' ' before decoding + str = str.replace(RE_PLUS, ' ') + let res = '' + let i = 0; let p = 0; const len = str.length + for (; i < len; ++i) { + if (this.buffer !== undefined) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer + this.buffer = undefined + --i // retry character + } else { + this.buffer += str[i] + ++p + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)) + this.buffer = undefined } - const value = lib_serializeChunks(chunks); - result.stops.push([result.value.length, event[1].start]); - result.value += value; - result.stops.push([result.value.length, event[1].end]); } + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i) + p = i + } + this.buffer = '' + ++p } } - return result; + if (p < len && this.buffer === undefined) { res += str.substring(p) } + return res } - -// Port from <https://github.com/wooorm/markdown-rs/blob/e692ab0/src/util/location.rs#L91>. -/** - * Turn a relative offset into an absolute offset. - * - * @param {Array<Stop>} stops - * @param {number} relative - * @returns {UnistPoint | undefined} - */ -function relativeToPoint(stops, relative) { - let index = 0; - while (index < stops.length && stops[index][0] <= relative) { - index += 1; - } - - // There are no points: that only occurs if there was an empty string. - if (index === 0) { - return undefined; - } - const [stopRelative, stopAbsolute] = stops[index - 1]; - const rest = relative - stopRelative; - return { - line: stopAbsolute.line, - column: stopAbsolute.column + rest, - offset: stopAbsolute.offset + rest - }; +Decoder.prototype.reset = function () { + this.buffer = undefined } -// Copy from <https://github.com/micromark/micromark/blob/ce3593a/packages/micromark/dev/lib/create-tokenizer.js#L595> -// To do: expose that? -/** - * Get the string value of a slice of chunks. - * - * @param {Array<Chunk>} chunks - * @returns {string} - */ -function lib_serializeChunks(chunks) { - let index = -1; - /** @type {Array<string>} */ - const result = []; - /** @type {boolean | undefined} */ - let atTab; - while (++index < chunks.length) { - const chunk = chunks[index]; - /** @type {string} */ - let value; - if (typeof chunk === 'string') { - value = chunk; - } else switch (chunk) { - case -5: - { - value = "\r"; - break; - } - case -4: - { - value = "\n"; - break; - } - case -3: - { - value = "\r" + "\n"; - break; - } - case -2: - { - value = "\t"; - break; - } +module.exports = Decoder - /* c8 ignore next 6 */ - case -1: - { - if (atTab) continue; - value = " "; - break; - } - default: - { - // Currently only replacement character. - // eslint-disable-next-line unicorn/prefer-code-point - value = String.fromCharCode(chunk); - } - } - atTab = chunk === -2; - result.push(value); - } - return result.join(''); -} -;// CONCATENATED MODULE: ./node_modules/unist-util-position-from-estree/lib/index.js -/** - * @typedef {import('unist').Point} UnistPoint - * @typedef {import('unist').Position} UnistPosition - */ -/** - * @typedef {[start: number | null | undefined, end: number | null | undefined]} RangeLike - * - * @typedef PointLike - * @property {number | null | undefined} [line] - * @property {number | null | undefined} [column] - * - * @typedef LocLike - * @property {PointLike | null | undefined} [start] - * @property {PointLike | null | undefined} [end] - * - * @typedef NodeLike - * @property {LocLike | null | undefined} [loc] - * @property {RangeLike | null | undefined} [range] - * @property {number | null | undefined} [start] - * @property {number | null | undefined} [end] - */ +/***/ }), -/** - * Turn an estree `node` into a unist `position`. - * - * @param {NodeLike | null | undefined} [node] - * estree node. - * @returns {UnistPosition | undefined} - * unist position. - */ -function positionFromEstree(node) { - const nodeLike = node || {} - const loc = nodeLike.loc || {} - const range = nodeLike.range || [undefined, undefined] - const start = pointOrUndefined(loc.start, range[0] || nodeLike.start) - const end = pointOrUndefined(loc.end, range[1] || nodeLike.end) +/***/ 20692: +/***/ ((module) => { - if (start && end) { - return {start, end} - } -} +"use strict"; -/** - * @param {unknown} estreePoint - * estree point. - * @param {unknown} estreeOffset - * estree offset. - * @returns {UnistPoint | undefined} - * unist point. - */ -function pointOrUndefined(estreePoint, estreeOffset) { - if (estreePoint && typeof estreePoint === 'object') { - const line = - 'line' in estreePoint ? numberOrUndefined(estreePoint.line) : undefined - const column = - 'column' in estreePoint - ? numberOrUndefined(estreePoint.column) - : undefined - - if (line && column !== undefined) { - return { - line, - column: column + 1, - offset: numberOrUndefined(estreeOffset) - } + +module.exports = function basename (path) { + if (typeof path !== 'string') { return '' } + for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1) + return (path === '..' || path === '.' ? '' : path) } } + return (path === '..' || path === '.' ? '' : path) } -/** - * @param {unknown} value - * @returns {number | undefined} - */ -function numberOrUndefined(value) { - return typeof value === 'number' && value > -1 ? value : undefined -} - -;// CONCATENATED MODULE: ./node_modules/micromark-factory-mdx-expression/index.js -/** - * @import {Program} from 'estree' - * @import {Acorn, AcornOptions} from 'micromark-util-events-to-acorn' - * @import {Effects, Point, State, TokenType, TokenizeContext} from 'micromark-util-types' - */ - -/** - * @typedef MdxSignalOk - * Good result. - * @property {'ok'} type - * Type. - * @property {Program | undefined} estree - * Value. - * - * @typedef MdxSignalNok - * Bad result. - * @property {'nok'} type - * Type. - * @property {VFileMessage} message - * Value. - * - * @typedef {MdxSignalNok | MdxSignalOk} MdxSignal - */ - - - - +/***/ }), +/***/ 72747: +/***/ (function(module) { -// Tab-size to eat has to be the same as what we serialize as. -// While in some places in markdown that’s 4, in JS it’s more common as 2. -// Which is what’s also in `mdast-util-mdx-jsx`: -// <https://github.com/syntax-tree/mdast-util-mdx-jsx/blob/40b951b/lib/index.js#L52> -const indentSize = 2; -const trouble = 'https://github.com/micromark/micromark-extension-mdx-expression/tree/main/packages/micromark-extension-mdx-expression'; -const unexpectedEndOfFileHash = '#unexpected-end-of-file-in-expression-expected-a-corresponding-closing-brace-for-'; -const unexpectedLazyHash = '#unexpected-lazy-line-in-expression-in-container-expected-line-to-be-prefixed'; -const nonSpreadHash = '#unexpected-type-in-code-expected-an-object-spread-spread'; -const spreadExtraHash = '#unexpected-extra-content-in-spread-only-a-single-spread-is-supported'; -const acornHash = '#could-not-parse-expression-with-acorn'; +"use strict"; -/** - * @this {TokenizeContext} - * Context. - * @param {Effects} effects - * Context. - * @param {State} ok - * State switched to when successful - * @param {TokenType} type - * Token type for whole (`{}`). - * @param {TokenType} markerType - * Token type for the markers (`{`, `}`). - * @param {TokenType} chunkType - * Token type for the value (`1`). - * @param {Acorn | null | undefined} [acorn] - * Object with `acorn.parse` and `acorn.parseExpressionAt`. - * @param {AcornOptions | null | undefined} [acornOptions] - * Configuration for acorn. - * @param {boolean | null | undefined} [addResult=false] - * Add `estree` to token (default: `false`). - * @param {boolean | null | undefined} [spread=false] - * Support a spread (`{...a}`) only (default: `false`). - * @param {boolean | null | undefined} [allowEmpty=false] - * Support an empty expression (default: `false`). - * @param {boolean | null | undefined} [allowLazy=false] - * Support lazy continuation of an expression (default: `false`). - * @returns {State} - */ -// eslint-disable-next-line max-params -function factoryMdxExpression(effects, ok, type, markerType, chunkType, acorn, acornOptions, addResult, spread, allowEmpty, allowLazy) { - const self = this; - const eventStart = this.events.length + 3; // Add main and marker token - let size = 0; - /** @type {Point} */ - let pointStart; - /** @type {Error} */ - let lastCrash; - return start; - /** - * Start of an MDX expression. - * - * ```markdown - * > | a {Math.PI} c - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter(type); - effects.enter(markerType); - effects.consume(code); - effects.exit(markerType); - pointStart = self.now(); - return before; - } +// Node has always utf-8 +const utf8Decoder = new TextDecoder('utf-8') +const textDecoders = new Map([ + ['utf-8', utf8Decoder], + ['utf8', utf8Decoder] +]) - /** - * Before data. - * - * ```markdown - * > | a {Math.PI} c - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - if (code === null) { - if (lastCrash) throw lastCrash; - const error = new VFileMessage('Unexpected end of file in expression, expected a corresponding closing brace for `{`', { - place: self.now(), - ruleId: 'unexpected-eof', - source: 'micromark-extension-mdx-expression' - }); - error.url = trouble + unexpectedEndOfFileHash; - throw error; - } - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return eolAfter; - } - if (code === 125 && size === 0) { - /** @type {MdxSignal} */ - const next = acorn ? mdxExpressionParse.call(self, acorn, acornOptions, chunkType, eventStart, pointStart, allowEmpty || false, spread || false) : { - type: 'ok', - estree: undefined - }; - if (next.type === 'ok') { - effects.enter(markerType); - effects.consume(code); - effects.exit(markerType); - const token = effects.exit(type); - if (addResult && next.estree) { - Object.assign(token, { - estree: next.estree - }); +function getDecoder (charset) { + let lc + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8 + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1 + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le + case 'base64': + return decoders.base64 + default: + if (lc === undefined) { + lc = true + charset = charset.toLowerCase() + continue } - return ok; - } - lastCrash = next.message; - effects.enter(chunkType); - effects.consume(code); - return inside; + return decoders.other.bind(charset) } - effects.enter(chunkType); - return inside(code); } +} - /** - * In data. - * - * ```markdown - * > | a {Math.PI} c - * ^ - * ``` - * - * @type {State} - */ - function inside(code) { - if (code === 125 && size === 0 || code === null || markdownLineEnding(code)) { - effects.exit(chunkType); - return before(code); +const decoders = { + utf8: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) } + return data.utf8Slice(0, data.length) + }, - // Don’t count if gnostic. - if (code === 123 && !acorn) { - size += 1; - } else if (code === 125) { - size -= 1; + latin1: (data, sourceEncoding) => { + if (data.length === 0) { + return '' } - effects.consume(code); - return inside; - } + if (typeof data === 'string') { + return data + } + return data.latin1Slice(0, data.length) + }, - /** - * After eol. - * - * ```markdown - * | a {b + - * > | c} d - * ^ - * ``` - * - * @type {State} - */ - function eolAfter(code) { - const now = self.now(); - - // Lazy continuation in a flow expression (or flow tag) is a syntax error. - if (now.line !== pointStart.line && !allowLazy && self.parser.lazy[now.line]) { - const error = new VFileMessage('Unexpected lazy line in expression in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc', { - place: self.now(), - ruleId: 'unexpected-lazy', - source: 'micromark-extension-mdx-expression' - }); - error.url = trouble + unexpectedLazyHash; - throw error; + utf16le: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) } + return data.ucs2Slice(0, data.length) + }, - // Note: `markdown-rs` uses `4`, but we use `2`. - // - // Idea: investigate if we’d need to use more complex stripping. - // Take this example: - // - // ```markdown - // > aaa <b c={` - // > d - // > `} /> eee - // ``` - // - // Currently, the “paragraph” starts at `> | aaa`, so for the next line - // here we split it into `>␠|␠␠|␠␠␠d` (prefix, this indent here, - // expression data). - if (markdownSpace(code)) { - return factorySpace(effects, before, "linePrefix", indentSize + 1)(code); + base64: (data, sourceEncoding) => { + if (data.length === 0) { + return '' } - return before(code); - } -} + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.base64Slice(0, data.length) + }, -/** - * Mix of `markdown-rs`’s `parse_expression` and `MdxExpressionParse` - * functionality, to wrap our `eventsToAcorn`. - * - * In the future, the plan is to realise the rust way, which allows arbitrary - * parsers. - * - * @this {TokenizeContext} - * @param {Acorn} acorn - * @param {AcornOptions | null | undefined} acornOptions - * @param {TokenType} chunkType - * @param {number} eventStart - * @param {Point} pointStart - * @param {boolean} allowEmpty - * @param {boolean} spread - * @returns {MdxSignal} - */ -// eslint-disable-next-line max-params -function mdxExpressionParse(acorn, acornOptions, chunkType, eventStart, pointStart, allowEmpty, spread) { - // Gnostic mode: parse w/ acorn. - const result = eventsToAcorn(this.events.slice(eventStart), { - acorn, - tokenTypes: [chunkType], - acornOptions, - start: pointStart, - expression: true, - allowEmpty, - prefix: spread ? '({' : '', - suffix: spread ? '})' : '' - }); - const estree = result.estree; - - // Get the spread value. - if (spread && estree) { - // Should always be the case as we wrap in `d={}` - - const head = estree.body[0]; - if (head.type !== 'ExpressionStatement' || head.expression.type !== 'ObjectExpression') { - const place = positionFromEstree(head); - const error = new VFileMessage('Unexpected `' + head.type + '` in code: expected an object spread (`{...spread}`)', { - place: place.start, - ruleId: 'non-spread', - source: 'micromark-extension-mdx-expression' - }); - error.url = trouble + nonSpreadHash; - throw error; + other: (data, sourceEncoding) => { + if (data.length === 0) { + return '' } - if (head.expression.properties[1]) { - const place = positionFromEstree(head.expression.properties[1]); - const error = new VFileMessage('Unexpected extra content in spread: only a single spread is supported', { - place: place.start, - ruleId: 'spread-extra', - source: 'micromark-extension-mdx-expression' - }); - error.url = trouble + spreadExtraHash; - throw error; + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) } - if (head.expression.properties[0] && head.expression.properties[0].type !== 'SpreadElement') { - const place = positionFromEstree(head.expression.properties[0]); - const error = new VFileMessage('Unexpected `' + head.expression.properties[0].type + '` in code: only spread elements are supported', { - place: place.start, - ruleId: 'non-spread', - source: 'micromark-extension-mdx-expression' - }); - error.url = trouble + nonSpreadHash; - throw error; + + if (textDecoders.has(this.toString())) { + try { + return textDecoders.get(this).decode(data) + } catch {} } + return typeof data === 'string' + ? data + : data.toString() } - if (result.error) { - const error = new VFileMessage('Could not parse expression with acorn', { - cause: result.error, - place: { - line: result.error.loc.line, - column: result.error.loc.column + 1, - offset: result.error.pos - }, - ruleId: 'acorn', - source: 'micromark-extension-mdx-expression' - }); - error.url = trouble + acornHash; - return { - type: 'nok', - message: error - }; +} + +function decodeText (text, sourceEncoding, destEncoding) { + if (text) { + return getDecoder(destEncoding)(text, sourceEncoding) } - return { - type: 'ok', - estree - }; + return text } -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-expression/lib/syntax.js -/** - * @import {Options} from 'micromark-extension-mdx-expression' - * @import {AcornOptions} from 'micromark-util-events-to-acorn' - * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types' - */ +module.exports = decodeText +/***/ }), -/** - * Create an extension for `micromark` to enable MDX expression syntax. - * - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {Extension} - * Extension for `micromark` that can be passed in `extensions` to enable MDX - * expression syntax. - */ -function mdxExpression(options) { - const options_ = options || {}; - const addResult = options_.addResult; - const acorn = options_.acorn; - // Hidden: `micromark-extension-mdx-jsx` supports expressions in tags, - // and one of them is only “spread” elements. - // It also has expressions that are not allowed to be empty (`<x y={}/>`). - // Instead of duplicating code there, this are two small hidden feature here - // to test that behavior. - const spread = options_.spread; - let allowEmpty = options_.allowEmpty; - /** @type {AcornOptions} */ - let acornOptions; - if (allowEmpty === null || allowEmpty === undefined) { - allowEmpty = true; - } - if (acorn) { - if (!acorn.parseExpressionAt) { - throw new Error('Expected a proper `acorn` instance passed in as `options.acorn`'); - } - acornOptions = Object.assign({ - ecmaVersion: 2024, - sourceType: 'module' - }, options_.acornOptions); - } else if (options_.acornOptions || options_.addResult) { - throw new Error('Expected an `acorn` instance passed in as `options.acorn`'); - } - return { - flow: { - [123]: { - name: 'mdxFlowExpression', - tokenize: tokenizeFlowExpression, - concrete: true - } - }, - text: { - [123]: { - name: 'mdxTextExpression', - tokenize: tokenizeTextExpression - } - } - }; +/***/ 22393: +/***/ ((module) => { - /** - * MDX expression (flow). - * - * ```markdown - * > | {Math.PI} - * ^^^^^^^^^ - * ``` - * - * @this {TokenizeContext} - * @type {Tokenizer} - */ - function tokenizeFlowExpression(effects, ok, nok) { - const self = this; - return start; +"use strict"; - /** - * Start of an MDX expression (flow). - * - * ```markdown - * > | {Math.PI} - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // To do: in `markdown-rs`, constructs need to parse the indent themselves. - // This should also be introduced in `micromark-js`. - return before(code); - } +module.exports = function getLimit (limits, name, defaultLimit) { + if ( + !limits || + limits[name] === undefined || + limits[name] === null + ) { return defaultLimit } + + if ( + typeof limits[name] !== 'number' || + isNaN(limits[name]) + ) { throw new TypeError('Limit ' + name + ' is not a valid number') } + + return limits[name] +} + + +/***/ }), + +/***/ 8929: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* eslint-disable object-property-newline */ + + +const decodeText = __nccwpck_require__(72747) + +const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g + +const EncodedLookup = { + '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04', + '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09', + '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c', + '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e', + '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12', + '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17', + '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b', + '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d', + '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20', + '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25', + '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a', + '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c', + '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f', + '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33', + '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38', + '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b', + '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e', + '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41', + '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46', + '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a', + '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d', + '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f', + '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54', + '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59', + '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c', + '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e', + '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62', + '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67', + '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b', + '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d', + '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70', + '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75', + '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a', + '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c', + '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f', + '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83', + '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88', + '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b', + '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e', + '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91', + '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96', + '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a', + '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d', + '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f', + '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2', + '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4', + '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7', + '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9', + '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab', + '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac', + '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad', + '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae', + '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0', + '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2', + '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5', + '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7', + '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba', + '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb', + '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc', + '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd', + '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf', + '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0', + '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3', + '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5', + '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8', + '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca', + '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb', + '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc', + '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce', + '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf', + '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1', + '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3', + '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6', + '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8', + '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda', + '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb', + '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd', + '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde', + '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf', + '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1', + '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4', + '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6', + '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9', + '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea', + '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec', + '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed', + '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee', + '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef', + '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2', + '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4', + '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7', + '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9', + '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb', + '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc', + '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd', + '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe', + '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff' +} - /** - * After optional whitespace, before expression. - * - * ```markdown - * > | {Math.PI} - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - return factoryMdxExpression.call(self, effects, after, 'mdxFlowExpression', 'mdxFlowExpressionMarker', 'mdxFlowExpressionChunk', acorn, acornOptions, addResult, spread, allowEmpty)(code); - } +function encodedReplacer (match) { + return EncodedLookup[match] +} - /** - * After expression. - * - * ```markdown - * > | {Math.PI} - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - return markdownSpace(code) ? factorySpace(effects, end, "whitespace")(code) : end(code); - } +const STATE_KEY = 0 +const STATE_VALUE = 1 +const STATE_CHARSET = 2 +const STATE_LANG = 3 - /** - * After expression, after optional whitespace. - * - * ```markdown - * > | {Math.PI}␠␊ - * ^ - * ``` - * - * @type {State} - */ - function end(code) { - // We want to allow tags directly after expressions. - // - // This case is useful: - // - // ```mdx - // <a>{b}</a> - // ``` - // - // This case is not (very?) useful: - // - // ```mdx - // {a}<b/> - // ``` - // - // …but it would be tougher than needed to disallow. - // - // To allow that, here we call the flow construct of - // `micromark-extension-mdx-jsx`, and there we call this one. - // - // It would introduce a cyclical interdependency if we test JSX and - // expressions here. - // Because the JSX extension already uses parts of this monorepo, we - // instead test it there. - const lessThanValue = self.parser.constructs.flow[60]; - const constructs = Array.isArray(lessThanValue) ? lessThanValue : /* c8 ignore next 3 -- always a list when normalized. */ - lessThanValue ? [lessThanValue] : []; - const jsxTag = constructs.find(function (d) { - return d.name === 'mdxJsxFlowTag'; - }); +function parseParams (str) { + const res = [] + let state = STATE_KEY + let charset = '' + let inquote = false + let escaping = false + let p = 0 + let tmp = '' + const len = str.length - /* c8 ignore next 3 -- this is tested in `micromark-extension-mdx-jsx` */ - if (code === 60 && jsxTag) { - return effects.attempt(jsxTag, end, nok)(code); + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + const char = str[i] + if (char === '\\' && inquote) { + if (escaping) { escaping = false } else { + escaping = true + continue } - return code === null || markdownLineEnding(code) ? ok(code) : nok(code); + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false + state = STATE_KEY + } else { inquote = true } + continue + } else { escaping = false } + } else { + if (escaping && inquote) { tmp += '\\' } + escaping = false + if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { + if (state === STATE_CHARSET) { + state = STATE_LANG + charset = tmp.substring(1) + } else { state = STATE_VALUE } + tmp = '' + continue + } else if (state === STATE_KEY && + (char === '*' || char === '=') && + res.length) { + state = char === '*' + ? STATE_CHARSET + : STATE_VALUE + res[p] = [tmp, undefined] + tmp = '' + continue + } else if (!inquote && char === ';') { + state = STATE_KEY + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } + charset = '' + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp } + tmp = '' + ++p + continue + } else if (!inquote && (char === ' ' || char === '\t')) { continue } } + tmp += char + } + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8') } - /** - * MDX expression (text). - * - * ```markdown - * > | a {Math.PI} c. - * ^^^^^^^^^ - * ``` - * - * @this {TokenizeContext} - * @type {Tokenizer} - */ - function tokenizeTextExpression(effects, ok) { - const self = this; - return start; + if (res[p] === undefined) { + if (tmp) { res[p] = tmp } + } else { res[p][1] = tmp } - /** - * Start of an MDX expression (text). - * - * ```markdown - * > | a {Math.PI} c. - * ^ - * ``` - * - * - * @type {State} - */ - function start(code) { - return factoryMdxExpression.call(self, effects, ok, 'mdxTextExpression', 'mdxTextExpressionMarker', 'mdxTextExpressionChunk', acorn, acornOptions, addResult, spread, allowEmpty, true)(code); - } - } + return res } -;// CONCATENATED MODULE: ./node_modules/estree-util-is-identifier-name/lib/index.js -/** - * @typedef Options - * Configuration. - * @property {boolean | null | undefined} [jsx=false] - * Support JSX identifiers (default: `false`). - */ -const startRe = /[$_\p{ID_Start}]/u -const contRe = /[$_\u{200C}\u{200D}\p{ID_Continue}]/u -const contReJsx = /[-$_\u{200C}\u{200D}\p{ID_Continue}]/u -const nameRe = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u -const nameReJsx = /^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u +module.exports = parseParams -/** @type {Options} */ -const lib_emptyOptions = {} -/** - * Checks if the given code point can start an identifier. - * - * @param {number | undefined} code - * Code point to check. - * @returns {boolean} - * Whether `code` can start an identifier. - */ -// Note: `undefined` is supported so you can pass the result from `''.codePointAt`. -function lib_start(code) { - return code ? startRe.test(String.fromCodePoint(code)) : false -} +/***/ }), -/** - * Checks if the given code point can continue an identifier. - * - * @param {number | undefined} code - * Code point to check. - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {boolean} - * Whether `code` can continue an identifier. - */ -// Note: `undefined` is supported so you can pass the result from `''.codePointAt`. -function cont(code, options) { - const settings = options || lib_emptyOptions - const re = settings.jsx ? contReJsx : contRe - return code ? re.test(String.fromCodePoint(code)) : false -} +/***/ 29602: +/***/ ((module) => { -/** - * Checks if the given value is a valid identifier name. - * - * @param {string} name - * Identifier to check. - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {boolean} - * Whether `name` can be an identifier. - */ -function lib_name(name, options) { - const settings = options || lib_emptyOptions - const re = settings.jsx ? nameReJsx : nameRe - return re.test(name) -} +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"name":"@babel/core","version":"7.12.9","description":"Babel compiler core.","main":"lib/index.js","author":"Sebastian McKenzie <sebmck@gmail.com>","homepage":"https://babeljs.io/","license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/babel/babel.git","directory":"packages/babel-core"},"keywords":["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core","compiler"],"engines":{"node":">=6.9.0"},"funding":{"type":"opencollective","url":"https://opencollective.com/babel"},"browser":{"./lib/config/files/index.js":"./lib/config/files/index-browser.js","./lib/transform-file.js":"./lib/transform-file-browser.js","./src/config/files/index.js":"./src/config/files/index-browser.js","./src/transform-file.js":"./src/transform-file-browser.js"},"dependencies":{"@babel/code-frame":"^7.10.4","@babel/generator":"^7.12.5","@babel/helper-module-transforms":"^7.12.1","@babel/helpers":"^7.12.5","@babel/parser":"^7.12.7","@babel/template":"^7.12.7","@babel/traverse":"^7.12.9","@babel/types":"^7.12.7","convert-source-map":"^1.7.0","debug":"^4.1.0","gensync":"^1.0.0-beta.1","json5":"^2.1.2","lodash":"^4.17.19","resolve":"^1.3.2","semver":"^5.4.1","source-map":"^0.5.0"},"devDependencies":{"@babel/helper-transform-fixture-test-runner":"7.12.1"}}'); -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/factory-tag.js -/** - * @import {AcornOptions, Acorn} from 'micromark-util-events-to-acorn' - * @import {Code, Effects, State, TokenType, TokenizeContext} from 'micromark-util-types' - */ +/***/ }), +/***/ 33757: +/***/ ((module) => { +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"nbsp":" ","iexcl":"¡","cent":"¢","pound":"£","curren":"¤","yen":"¥","brvbar":"¦","sect":"§","uml":"¨","copy":"©","ordf":"ª","laquo":"«","not":"¬","shy":"­","reg":"®","macr":"¯","deg":"°","plusmn":"±","sup2":"²","sup3":"³","acute":"´","micro":"µ","para":"¶","middot":"·","cedil":"¸","sup1":"¹","ordm":"º","raquo":"»","frac14":"¼","frac12":"½","frac34":"¾","iquest":"¿","Agrave":"À","Aacute":"Á","Acirc":"Â","Atilde":"Ã","Auml":"Ä","Aring":"Å","AElig":"Æ","Ccedil":"Ç","Egrave":"È","Eacute":"É","Ecirc":"Ê","Euml":"Ë","Igrave":"Ì","Iacute":"Í","Icirc":"Î","Iuml":"Ï","ETH":"Ð","Ntilde":"Ñ","Ograve":"Ò","Oacute":"Ó","Ocirc":"Ô","Otilde":"Õ","Ouml":"Ö","times":"×","Oslash":"Ø","Ugrave":"Ù","Uacute":"Ú","Ucirc":"Û","Uuml":"Ü","Yacute":"Ý","THORN":"Þ","szlig":"ß","agrave":"à","aacute":"á","acirc":"â","atilde":"ã","auml":"ä","aring":"å","aelig":"æ","ccedil":"ç","egrave":"è","eacute":"é","ecirc":"ê","euml":"ë","igrave":"ì","iacute":"í","icirc":"î","iuml":"ï","eth":"ð","ntilde":"ñ","ograve":"ò","oacute":"ó","ocirc":"ô","otilde":"õ","ouml":"ö","divide":"÷","oslash":"ø","ugrave":"ù","uacute":"ú","ucirc":"û","uuml":"ü","yacute":"ý","thorn":"þ","yuml":"ÿ","fnof":"ƒ","Alpha":"Α","Beta":"Β","Gamma":"Γ","Delta":"Δ","Epsilon":"Ε","Zeta":"Ζ","Eta":"Η","Theta":"Θ","Iota":"Ι","Kappa":"Κ","Lambda":"Λ","Mu":"Μ","Nu":"Ν","Xi":"Ξ","Omicron":"Ο","Pi":"Π","Rho":"Ρ","Sigma":"Σ","Tau":"Τ","Upsilon":"Υ","Phi":"Φ","Chi":"Χ","Psi":"Ψ","Omega":"Ω","alpha":"α","beta":"β","gamma":"γ","delta":"δ","epsilon":"ε","zeta":"ζ","eta":"η","theta":"θ","iota":"ι","kappa":"κ","lambda":"λ","mu":"μ","nu":"ν","xi":"ξ","omicron":"ο","pi":"π","rho":"ρ","sigmaf":"ς","sigma":"σ","tau":"τ","upsilon":"υ","phi":"φ","chi":"χ","psi":"ψ","omega":"ω","thetasym":"ϑ","upsih":"ϒ","piv":"ϖ","bull":"•","hellip":"…","prime":"′","Prime":"″","oline":"‾","frasl":"⁄","weierp":"℘","image":"ℑ","real":"ℜ","trade":"™","alefsym":"ℵ","larr":"←","uarr":"↑","rarr":"→","darr":"↓","harr":"↔","crarr":"↵","lArr":"⇐","uArr":"⇑","rArr":"⇒","dArr":"⇓","hArr":"⇔","forall":"∀","part":"∂","exist":"∃","empty":"∅","nabla":"∇","isin":"∈","notin":"∉","ni":"∋","prod":"∏","sum":"∑","minus":"−","lowast":"∗","radic":"√","prop":"∝","infin":"∞","ang":"∠","and":"∧","or":"∨","cap":"∩","cup":"∪","int":"∫","there4":"∴","sim":"∼","cong":"≅","asymp":"≈","ne":"≠","equiv":"≡","le":"≤","ge":"≥","sub":"⊂","sup":"⊃","nsub":"⊄","sube":"⊆","supe":"⊇","oplus":"⊕","otimes":"⊗","perp":"⊥","sdot":"⋅","lceil":"⌈","rceil":"⌉","lfloor":"⌊","rfloor":"⌋","lang":"〈","rang":"〉","loz":"◊","spades":"♠","clubs":"♣","hearts":"♥","diams":"♦","quot":"\\"","amp":"&","lt":"<","gt":">","OElig":"Œ","oelig":"œ","Scaron":"Š","scaron":"š","Yuml":"Ÿ","circ":"ˆ","tilde":"˜","ensp":" ","emsp":" ","thinsp":" ","zwnj":"‌","zwj":"‍","lrm":"‎","rlm":"‏","ndash":"–","mdash":"—","lsquo":"‘","rsquo":"’","sbquo":"‚","ldquo":"“","rdquo":"”","bdquo":"„","dagger":"†","Dagger":"‡","permil":"‰","lsaquo":"‹","rsaquo":"›","euro":"€"}'); +/***/ }), +/***/ 82719: +/***/ ((module) => { -const factory_tag_trouble = 'https://github.com/micromark/micromark-extension-mdx-jsx'; +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"AElig":"Æ","AMP":"&","Aacute":"Á","Acirc":"Â","Agrave":"À","Aring":"Å","Atilde":"Ã","Auml":"Ä","COPY":"©","Ccedil":"Ç","ETH":"Ð","Eacute":"É","Ecirc":"Ê","Egrave":"È","Euml":"Ë","GT":">","Iacute":"Í","Icirc":"Î","Igrave":"Ì","Iuml":"Ï","LT":"<","Ntilde":"Ñ","Oacute":"Ó","Ocirc":"Ô","Ograve":"Ò","Oslash":"Ø","Otilde":"Õ","Ouml":"Ö","QUOT":"\\"","REG":"®","THORN":"Þ","Uacute":"Ú","Ucirc":"Û","Ugrave":"Ù","Uuml":"Ü","Yacute":"Ý","aacute":"á","acirc":"â","acute":"´","aelig":"æ","agrave":"à","amp":"&","aring":"å","atilde":"ã","auml":"ä","brvbar":"¦","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","curren":"¤","deg":"°","divide":"÷","eacute":"é","ecirc":"ê","egrave":"è","eth":"ð","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","iacute":"í","icirc":"î","iexcl":"¡","igrave":"ì","iquest":"¿","iuml":"ï","laquo":"«","lt":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","ntilde":"ñ","oacute":"ó","ocirc":"ô","ograve":"ò","ordf":"ª","ordm":"º","oslash":"ø","otilde":"õ","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","raquo":"»","reg":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","thorn":"þ","times":"×","uacute":"ú","ucirc":"û","ugrave":"ù","uml":"¨","uuml":"ü","yacute":"ý","yen":"¥","yuml":"ÿ"}'); -/** - * @this {TokenizeContext} - * @param {Effects} effects - * @param {State} ok - * @param {State} nok - * @param {Acorn | null | undefined} acorn - * @param {AcornOptions | null | undefined} acornOptions - * @param {boolean | null | undefined} addResult - * @param {boolean | undefined} allowLazy - * @param {TokenType} tagType - * @param {TokenType} tagMarkerType - * @param {TokenType} tagClosingMarkerType - * @param {TokenType} tagSelfClosingMarker - * @param {TokenType} tagNameType - * @param {TokenType} tagNamePrimaryType - * @param {TokenType} tagNameMemberMarkerType - * @param {TokenType} tagNameMemberType - * @param {TokenType} tagNamePrefixMarkerType - * @param {TokenType} tagNameLocalType - * @param {TokenType} tagExpressionAttributeType - * @param {TokenType} tagExpressionAttributeMarkerType - * @param {TokenType} tagExpressionAttributeValueType - * @param {TokenType} tagAttributeType - * @param {TokenType} tagAttributeNameType - * @param {TokenType} tagAttributeNamePrimaryType - * @param {TokenType} tagAttributeNamePrefixMarkerType - * @param {TokenType} tagAttributeNameLocalType - * @param {TokenType} tagAttributeInitializerMarkerType - * @param {TokenType} tagAttributeValueLiteralType - * @param {TokenType} tagAttributeValueLiteralMarkerType - * @param {TokenType} tagAttributeValueLiteralValueType - * @param {TokenType} tagAttributeValueExpressionType - * @param {TokenType} tagAttributeValueExpressionMarkerType - * @param {TokenType} tagAttributeValueExpressionValueType - */ -// eslint-disable-next-line max-params -function factoryTag(effects, ok, nok, acorn, acornOptions, addResult, allowLazy, tagType, tagMarkerType, tagClosingMarkerType, tagSelfClosingMarker, tagNameType, tagNamePrimaryType, tagNameMemberMarkerType, tagNameMemberType, tagNamePrefixMarkerType, tagNameLocalType, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, tagAttributeType, tagAttributeNameType, tagAttributeNamePrimaryType, tagAttributeNamePrefixMarkerType, tagAttributeNameLocalType, tagAttributeInitializerMarkerType, tagAttributeValueLiteralType, tagAttributeValueLiteralMarkerType, tagAttributeValueLiteralValueType, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType) { - const self = this; - /** @type {State} */ - let returnState; - /** @type {NonNullable<Code> | undefined} */ - let marker; - return start; +/***/ }), - /** - * Start of MDX: JSX. - * - * ```markdown - * > | a <B /> c - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - effects.enter(tagType); - effects.enter(tagMarkerType); - effects.consume(code); - effects.exit(tagMarkerType); - return startAfter; - } +/***/ 37839: +/***/ ((module) => { - /** - * After `<`. - * - * ```markdown - * > | a <B /> c - * ^ - * ``` - * - * @type {State} - */ - function startAfter(code) { - // Deviate from JSX, which allows arbitrary whitespace. - // See: <https://github.com/micromark/micromark-extension-mdx-jsx/issues/7>. - if (markdownLineEndingOrSpace(code)) { - return nok(code); - } +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"AEli":"Æ","AElig":"Æ","AM":"&","AMP":"&","Aacut":"Á","Aacute":"Á","Abreve":"Ă","Acir":"Â","Acirc":"Â","Acy":"А","Afr":"𝔄","Agrav":"À","Agrave":"À","Alpha":"Α","Amacr":"Ā","And":"⩓","Aogon":"Ą","Aopf":"𝔸","ApplyFunction":"⁡","Arin":"Å","Aring":"Å","Ascr":"𝒜","Assign":"≔","Atild":"Ã","Atilde":"Ã","Aum":"Ä","Auml":"Ä","Backslash":"∖","Barv":"⫧","Barwed":"⌆","Bcy":"Б","Because":"∵","Bernoullis":"ℬ","Beta":"Β","Bfr":"𝔅","Bopf":"𝔹","Breve":"˘","Bscr":"ℬ","Bumpeq":"≎","CHcy":"Ч","COP":"©","COPY":"©","Cacute":"Ć","Cap":"⋒","CapitalDifferentialD":"ⅅ","Cayleys":"ℭ","Ccaron":"Č","Ccedi":"Ç","Ccedil":"Ç","Ccirc":"Ĉ","Cconint":"∰","Cdot":"Ċ","Cedilla":"¸","CenterDot":"·","Cfr":"ℭ","Chi":"Χ","CircleDot":"⊙","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","Colon":"∷","Colone":"⩴","Congruent":"≡","Conint":"∯","ContourIntegral":"∮","Copf":"ℂ","Coproduct":"∐","CounterClockwiseContourIntegral":"∳","Cross":"⨯","Cscr":"𝒞","Cup":"⋓","CupCap":"≍","DD":"ⅅ","DDotrahd":"⤑","DJcy":"Ђ","DScy":"Ѕ","DZcy":"Џ","Dagger":"‡","Darr":"↡","Dashv":"⫤","Dcaron":"Ď","Dcy":"Д","Del":"∇","Delta":"Δ","Dfr":"𝔇","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","Diamond":"⋄","DifferentialD":"ⅆ","Dopf":"𝔻","Dot":"¨","DotDot":"⃜","DotEqual":"≐","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrow":"↓","DownArrowBar":"⤓","DownArrowUpArrow":"⇵","DownBreve":"̑","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVector":"↽","DownLeftVectorBar":"⥖","DownRightTeeVector":"⥟","DownRightVector":"⇁","DownRightVectorBar":"⥗","DownTee":"⊤","DownTeeArrow":"↧","Downarrow":"⇓","Dscr":"𝒟","Dstrok":"Đ","ENG":"Ŋ","ET":"Ð","ETH":"Ð","Eacut":"É","Eacute":"É","Ecaron":"Ě","Ecir":"Ê","Ecirc":"Ê","Ecy":"Э","Edot":"Ė","Efr":"𝔈","Egrav":"È","Egrave":"È","Element":"∈","Emacr":"Ē","EmptySmallSquare":"◻","EmptyVerySmallSquare":"▫","Eogon":"Ę","Eopf":"𝔼","Epsilon":"Ε","Equal":"⩵","EqualTilde":"≂","Equilibrium":"⇌","Escr":"ℰ","Esim":"⩳","Eta":"Η","Eum":"Ë","Euml":"Ë","Exists":"∃","ExponentialE":"ⅇ","Fcy":"Ф","Ffr":"𝔉","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","Fopf":"𝔽","ForAll":"∀","Fouriertrf":"ℱ","Fscr":"ℱ","GJcy":"Ѓ","G":">","GT":">","Gamma":"Γ","Gammad":"Ϝ","Gbreve":"Ğ","Gcedil":"Ģ","Gcirc":"Ĝ","Gcy":"Г","Gdot":"Ġ","Gfr":"𝔊","Gg":"⋙","Gopf":"𝔾","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","Gt":"≫","HARDcy":"Ъ","Hacek":"ˇ","Hat":"^","Hcirc":"Ĥ","Hfr":"ℌ","HilbertSpace":"ℋ","Hopf":"ℍ","HorizontalLine":"─","Hscr":"ℋ","Hstrok":"Ħ","HumpDownHump":"≎","HumpEqual":"≏","IEcy":"Е","IJlig":"IJ","IOcy":"Ё","Iacut":"Í","Iacute":"Í","Icir":"Î","Icirc":"Î","Icy":"И","Idot":"İ","Ifr":"ℑ","Igrav":"Ì","Igrave":"Ì","Im":"ℑ","Imacr":"Ī","ImaginaryI":"ⅈ","Implies":"⇒","Int":"∬","Integral":"∫","Intersection":"⋂","InvisibleComma":"⁣","InvisibleTimes":"⁢","Iogon":"Į","Iopf":"𝕀","Iota":"Ι","Iscr":"ℐ","Itilde":"Ĩ","Iukcy":"І","Ium":"Ï","Iuml":"Ï","Jcirc":"Ĵ","Jcy":"Й","Jfr":"𝔍","Jopf":"𝕁","Jscr":"𝒥","Jsercy":"Ј","Jukcy":"Є","KHcy":"Х","KJcy":"Ќ","Kappa":"Κ","Kcedil":"Ķ","Kcy":"К","Kfr":"𝔎","Kopf":"𝕂","Kscr":"𝒦","LJcy":"Љ","L":"<","LT":"<","Lacute":"Ĺ","Lambda":"Λ","Lang":"⟪","Laplacetrf":"ℒ","Larr":"↞","Lcaron":"Ľ","Lcedil":"Ļ","Lcy":"Л","LeftAngleBracket":"⟨","LeftArrow":"←","LeftArrowBar":"⇤","LeftArrowRightArrow":"⇆","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVector":"⇃","LeftDownVectorBar":"⥙","LeftFloor":"⌊","LeftRightArrow":"↔","LeftRightVector":"⥎","LeftTee":"⊣","LeftTeeArrow":"↤","LeftTeeVector":"⥚","LeftTriangle":"⊲","LeftTriangleBar":"⧏","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVector":"↿","LeftUpVectorBar":"⥘","LeftVector":"↼","LeftVectorBar":"⥒","Leftarrow":"⇐","Leftrightarrow":"⇔","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","LessLess":"⪡","LessSlantEqual":"⩽","LessTilde":"≲","Lfr":"𝔏","Ll":"⋘","Lleftarrow":"⇚","Lmidot":"Ŀ","LongLeftArrow":"⟵","LongLeftRightArrow":"⟷","LongRightArrow":"⟶","Longleftarrow":"⟸","Longleftrightarrow":"⟺","Longrightarrow":"⟹","Lopf":"𝕃","LowerLeftArrow":"↙","LowerRightArrow":"↘","Lscr":"ℒ","Lsh":"↰","Lstrok":"Ł","Lt":"≪","Map":"⤅","Mcy":"М","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","MinusPlus":"∓","Mopf":"𝕄","Mscr":"ℳ","Mu":"Μ","NJcy":"Њ","Nacute":"Ń","Ncaron":"Ň","Ncedil":"Ņ","Ncy":"Н","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","Nfr":"𝔑","NoBreak":"⁠","NonBreakingSpace":" ","Nopf":"ℕ","Not":"⫬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","NotLeftTriangle":"⋪","NotLeftTriangleBar":"⧏̸","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangle":"⋫","NotRightTriangleBar":"⧐̸","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","Nscr":"𝒩","Ntild":"Ñ","Ntilde":"Ñ","Nu":"Ν","OElig":"Œ","Oacut":"Ó","Oacute":"Ó","Ocir":"Ô","Ocirc":"Ô","Ocy":"О","Odblac":"Ő","Ofr":"𝔒","Ograv":"Ò","Ograve":"Ò","Omacr":"Ō","Omega":"Ω","Omicron":"Ο","Oopf":"𝕆","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","Or":"⩔","Oscr":"𝒪","Oslas":"Ø","Oslash":"Ø","Otild":"Õ","Otilde":"Õ","Otimes":"⨷","Oum":"Ö","Ouml":"Ö","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","PartialD":"∂","Pcy":"П","Pfr":"𝔓","Phi":"Φ","Pi":"Π","PlusMinus":"±","Poincareplane":"ℌ","Popf":"ℙ","Pr":"⪻","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","Prime":"″","Product":"∏","Proportion":"∷","Proportional":"∝","Pscr":"𝒫","Psi":"Ψ","QUO":"\\"","QUOT":"\\"","Qfr":"𝔔","Qopf":"ℚ","Qscr":"𝒬","RBarr":"⤐","RE":"®","REG":"®","Racute":"Ŕ","Rang":"⟫","Rarr":"↠","Rarrtl":"⤖","Rcaron":"Ř","Rcedil":"Ŗ","Rcy":"Р","Re":"ℜ","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","Rfr":"ℜ","Rho":"Ρ","RightAngleBracket":"⟩","RightArrow":"→","RightArrowBar":"⇥","RightArrowLeftArrow":"⇄","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVector":"⇂","RightDownVectorBar":"⥕","RightFloor":"⌋","RightTee":"⊢","RightTeeArrow":"↦","RightTeeVector":"⥛","RightTriangle":"⊳","RightTriangleBar":"⧐","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVector":"↾","RightUpVectorBar":"⥔","RightVector":"⇀","RightVectorBar":"⥓","Rightarrow":"⇒","Ropf":"ℝ","RoundImplies":"⥰","Rrightarrow":"⇛","Rscr":"ℛ","Rsh":"↱","RuleDelayed":"⧴","SHCHcy":"Щ","SHcy":"Ш","SOFTcy":"Ь","Sacute":"Ś","Sc":"⪼","Scaron":"Š","Scedil":"Ş","Scirc":"Ŝ","Scy":"С","Sfr":"𝔖","ShortDownArrow":"↓","ShortLeftArrow":"←","ShortRightArrow":"→","ShortUpArrow":"↑","Sigma":"Σ","SmallCircle":"∘","Sopf":"𝕊","Sqrt":"√","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","Sscr":"𝒮","Star":"⋆","Sub":"⋐","Subset":"⋐","SubsetEqual":"⊆","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","SuchThat":"∋","Sum":"∑","Sup":"⋑","Superset":"⊃","SupersetEqual":"⊇","Supset":"⋑","THOR":"Þ","THORN":"Þ","TRADE":"™","TSHcy":"Ћ","TScy":"Ц","Tab":"\\t","Tau":"Τ","Tcaron":"Ť","Tcedil":"Ţ","Tcy":"Т","Tfr":"𝔗","Therefore":"∴","Theta":"Θ","ThickSpace":"  ","ThinSpace":" ","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","Topf":"𝕋","TripleDot":"⃛","Tscr":"𝒯","Tstrok":"Ŧ","Uacut":"Ú","Uacute":"Ú","Uarr":"↟","Uarrocir":"⥉","Ubrcy":"Ў","Ubreve":"Ŭ","Ucir":"Û","Ucirc":"Û","Ucy":"У","Udblac":"Ű","Ufr":"𝔘","Ugrav":"Ù","Ugrave":"Ù","Umacr":"Ū","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","Uopf":"𝕌","UpArrow":"↑","UpArrowBar":"⤒","UpArrowDownArrow":"⇅","UpDownArrow":"↕","UpEquilibrium":"⥮","UpTee":"⊥","UpTeeArrow":"↥","Uparrow":"⇑","Updownarrow":"⇕","UpperLeftArrow":"↖","UpperRightArrow":"↗","Upsi":"ϒ","Upsilon":"Υ","Uring":"Ů","Uscr":"𝒰","Utilde":"Ũ","Uum":"Ü","Uuml":"Ü","VDash":"⊫","Vbar":"⫫","Vcy":"В","Vdash":"⊩","Vdashl":"⫦","Vee":"⋁","Verbar":"‖","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","Vopf":"𝕍","Vscr":"𝒱","Vvdash":"⊪","Wcirc":"Ŵ","Wedge":"⋀","Wfr":"𝔚","Wopf":"𝕎","Wscr":"𝒲","Xfr":"𝔛","Xi":"Ξ","Xopf":"𝕏","Xscr":"𝒳","YAcy":"Я","YIcy":"Ї","YUcy":"Ю","Yacut":"Ý","Yacute":"Ý","Ycirc":"Ŷ","Ycy":"Ы","Yfr":"𝔜","Yopf":"𝕐","Yscr":"𝒴","Yuml":"Ÿ","ZHcy":"Ж","Zacute":"Ź","Zcaron":"Ž","Zcy":"З","Zdot":"Ż","ZeroWidthSpace":"​","Zeta":"Ζ","Zfr":"ℨ","Zopf":"ℤ","Zscr":"𝒵","aacut":"á","aacute":"á","abreve":"ă","ac":"∾","acE":"∾̳","acd":"∿","acir":"â","acirc":"â","acut":"´","acute":"´","acy":"а","aeli":"æ","aelig":"æ","af":"⁡","afr":"𝔞","agrav":"à","agrave":"à","alefsym":"ℵ","aleph":"ℵ","alpha":"α","amacr":"ā","amalg":"⨿","am":"&","amp":"&","and":"∧","andand":"⩕","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsd":"∡","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","aogon":"ą","aopf":"𝕒","ap":"≈","apE":"⩰","apacir":"⩯","ape":"≊","apid":"≋","apos":"\'","approx":"≈","approxeq":"≊","arin":"å","aring":"å","ascr":"𝒶","ast":"*","asymp":"≈","asympeq":"≍","atild":"ã","atilde":"ã","aum":"ä","auml":"ä","awconint":"∳","awint":"⨑","bNot":"⫭","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","barvee":"⊽","barwed":"⌅","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","beta":"β","beth":"ℶ","between":"≬","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bnot":"⌐","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxDL":"╗","boxDR":"╔","boxDl":"╖","boxDr":"╓","boxH":"═","boxHD":"╦","boxHU":"╩","boxHd":"╤","boxHu":"╧","boxUL":"╝","boxUR":"╚","boxUl":"╜","boxUr":"╙","boxV":"║","boxVH":"╬","boxVL":"╣","boxVR":"╠","boxVh":"╫","boxVl":"╢","boxVr":"╟","boxbox":"⧉","boxdL":"╕","boxdR":"╒","boxdl":"┐","boxdr":"┌","boxh":"─","boxhD":"╥","boxhU":"╨","boxhd":"┬","boxhu":"┴","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxuL":"╛","boxuR":"╘","boxul":"┘","boxur":"└","boxv":"│","boxvH":"╪","boxvL":"╡","boxvR":"╞","boxvh":"┼","boxvl":"┤","boxvr":"├","bprime":"‵","breve":"˘","brvba":"¦","brvbar":"¦","bscr":"𝒷","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsol":"\\\\","bsolb":"⧅","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","bumpeq":"≏","cacute":"ć","cap":"∩","capand":"⩄","capbrcup":"⩉","capcap":"⩋","capcup":"⩇","capdot":"⩀","caps":"∩︀","caret":"⁁","caron":"ˇ","ccaps":"⩍","ccaron":"č","ccedi":"ç","ccedil":"ç","ccirc":"ĉ","ccups":"⩌","ccupssm":"⩐","cdot":"ċ","cedi":"¸","cedil":"¸","cemptyv":"⦲","cen":"¢","cent":"¢","centerdot":"·","cfr":"𝔠","chcy":"ч","check":"✓","checkmark":"✓","chi":"χ","cir":"○","cirE":"⧃","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledR":"®","circledS":"Ⓢ","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","clubs":"♣","clubsuit":"♣","colon":":","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","conint":"∮","copf":"𝕔","coprod":"∐","cop":"©","copy":"©","copysr":"℗","crarr":"↵","cross":"✗","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cup":"∪","cupbrcap":"⩈","cupcap":"⩆","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curre":"¤","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dArr":"⇓","dHar":"⥥","dagger":"†","daleth":"ℸ","darr":"↓","dash":"‐","dashv":"⊣","dbkarow":"⤏","dblac":"˝","dcaron":"ď","dcy":"д","dd":"ⅆ","ddagger":"‡","ddarr":"⇊","ddotseq":"⩷","de":"°","deg":"°","delta":"δ","demptyv":"⦱","dfisht":"⥿","dfr":"𝔡","dharl":"⇃","dharr":"⇂","diam":"⋄","diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","digamma":"ϝ","disin":"⋲","div":"÷","divid":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","dopf":"𝕕","dot":"˙","doteq":"≐","doteqdot":"≑","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","downarrow":"↓","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","dscr":"𝒹","dscy":"ѕ","dsol":"⧶","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","dzcy":"џ","dzigrarr":"⟿","eDDot":"⩷","eDot":"≑","eacut":"é","eacute":"é","easter":"⩮","ecaron":"ě","ecir":"ê","ecirc":"ê","ecolon":"≕","ecy":"э","edot":"ė","ee":"ⅇ","efDot":"≒","efr":"𝔢","eg":"⪚","egrav":"è","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","emacr":"ē","empty":"∅","emptyset":"∅","emptyv":"∅","emsp13":" ","emsp14":" ","emsp":" ","eng":"ŋ","ensp":" ","eogon":"ę","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","equals":"=","equest":"≟","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erDot":"≓","erarr":"⥱","escr":"ℯ","esdot":"≐","esim":"≂","eta":"η","et":"ð","eth":"ð","eum":"ë","euml":"ë","euro":"€","excl":"!","exist":"∃","expectation":"ℰ","exponentiale":"ⅇ","fallingdotseq":"≒","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","ffr":"𝔣","filig":"fi","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","fopf":"𝕗","forall":"∀","fork":"⋔","forkv":"⫙","fpartint":"⨍","frac1":"¼","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac3":"¾","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","gE":"≧","gEl":"⪌","gacute":"ǵ","gamma":"γ","gammad":"ϝ","gap":"⪆","gbreve":"ğ","gcirc":"ĝ","gcy":"г","gdot":"ġ","ge":"≥","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","ges":"⩾","gescc":"⪩","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","gfr":"𝔤","gg":"≫","ggg":"⋙","gimel":"ℷ","gjcy":"ѓ","gl":"≷","glE":"⪒","gla":"⪥","glj":"⪤","gnE":"≩","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gneq":"⪈","gneqq":"≩","gnsim":"⋧","gopf":"𝕘","grave":"`","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","g":">","gt":">","gtcc":"⪧","gtcir":"⩺","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","hArr":"⇔","hairsp":" ","half":"½","hamilt":"ℋ","hardcy":"ъ","harr":"↔","harrcir":"⥈","harrw":"↭","hbar":"ℏ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","horbar":"―","hscr":"𝒽","hslash":"ℏ","hstrok":"ħ","hybull":"⁃","hyphen":"‐","iacut":"í","iacute":"í","ic":"⁣","icir":"î","icirc":"î","icy":"и","iecy":"е","iexc":"¡","iexcl":"¡","iff":"⇔","ifr":"𝔦","igrav":"ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","ijlig":"ij","imacr":"ī","image":"ℑ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","imof":"⊷","imped":"Ƶ","in":"∈","incare":"℅","infin":"∞","infintie":"⧝","inodot":"ı","int":"∫","intcal":"⊺","integers":"ℤ","intercal":"⊺","intlarhk":"⨗","intprod":"⨼","iocy":"ё","iogon":"į","iopf":"𝕚","iota":"ι","iprod":"⨼","iques":"¿","iquest":"¿","iscr":"𝒾","isin":"∈","isinE":"⋹","isindot":"⋵","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","itilde":"ĩ","iukcy":"і","ium":"ï","iuml":"ï","jcirc":"ĵ","jcy":"й","jfr":"𝔧","jmath":"ȷ","jopf":"𝕛","jscr":"𝒿","jsercy":"ј","jukcy":"є","kappa":"κ","kappav":"ϰ","kcedil":"ķ","kcy":"к","kfr":"𝔨","kgreen":"ĸ","khcy":"х","kjcy":"ќ","kopf":"𝕜","kscr":"𝓀","lAarr":"⇚","lArr":"⇐","lAtail":"⤛","lBarr":"⤎","lE":"≦","lEg":"⪋","lHar":"⥢","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","lambda":"λ","lang":"⟨","langd":"⦑","langle":"⟨","lap":"⪅","laqu":"«","laquo":"«","larr":"←","larrb":"⇤","larrbfs":"⤟","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","lat":"⪫","latail":"⤙","late":"⪭","lates":"⪭︀","lbarr":"⤌","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","lcaron":"ľ","lcedil":"ļ","lceil":"⌈","lcub":"{","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","leftarrow":"←","leftarrowtail":"↢","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","leftthreetimes":"⋋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","les":"⩽","lescc":"⪨","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","lessgtr":"≶","lesssim":"≲","lfisht":"⥼","lfloor":"⌊","lfr":"𝔩","lg":"≶","lgE":"⪑","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","ljcy":"љ","ll":"≪","llarr":"⇇","llcorner":"⌞","llhard":"⥫","lltri":"◺","lmidot":"ŀ","lmoust":"⎰","lmoustache":"⎰","lnE":"≨","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","longleftrightarrow":"⟷","longmapsto":"⟼","longrightarrow":"⟶","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","lstrok":"ł","l":"<","lt":"<","ltcc":"⪦","ltcir":"⩹","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltrPar":"⦖","ltri":"◃","ltrie":"⊴","ltrif":"◂","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","mDDot":"∺","mac":"¯","macr":"¯","male":"♂","malt":"✠","maltese":"✠","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","mcy":"м","mdash":"—","measuredangle":"∡","mfr":"𝔪","mho":"℧","micr":"µ","micro":"µ","mid":"∣","midast":"*","midcir":"⫰","middo":"·","middot":"·","minus":"−","minusb":"⊟","minusd":"∸","minusdu":"⨪","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","mopf":"𝕞","mp":"∓","mscr":"𝓂","mstpos":"∾","mu":"μ","multimap":"⊸","mumap":"⊸","nGg":"⋙̸","nGt":"≫⃒","nGtv":"≫̸","nLeftarrow":"⇍","nLeftrightarrow":"⇎","nLl":"⋘̸","nLt":"≪⃒","nLtv":"≪̸","nRightarrow":"⇏","nVDash":"⊯","nVdash":"⊮","nabla":"∇","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natur":"♮","natural":"♮","naturals":"ℕ","nbs":" ","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","ncaron":"ň","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","ncy":"н","ndash":"–","ne":"≠","neArr":"⇗","nearhk":"⤤","nearr":"↗","nearrow":"↗","nedot":"≐̸","nequiv":"≢","nesear":"⤨","nesim":"≂̸","nexist":"∄","nexists":"∄","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","ngsim":"≵","ngt":"≯","ngtr":"≯","nhArr":"⇎","nharr":"↮","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","njcy":"њ","nlArr":"⇍","nlE":"≦̸","nlarr":"↚","nldr":"‥","nle":"≰","nleftarrow":"↚","nleftrightarrow":"↮","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nlsim":"≴","nlt":"≮","nltri":"⋪","nltrie":"⋬","nmid":"∤","nopf":"𝕟","no":"¬","not":"¬","notin":"∉","notinE":"⋹̸","notindot":"⋵̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","npar":"∦","nparallel":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","npre":"⪯̸","nprec":"⊀","npreceq":"⪯̸","nrArr":"⇏","nrarr":"↛","nrarrc":"⤳̸","nrarrw":"↝̸","nrightarrow":"↛","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","ntild":"ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","nu":"ν","num":"#","numero":"№","numsp":" ","nvDash":"⊭","nvHarr":"⤄","nvap":"≍⃒","nvdash":"⊬","nvge":"≥⃒","nvgt":">⃒","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwArr":"⇖","nwarhk":"⤣","nwarr":"↖","nwarrow":"↖","nwnear":"⤧","oS":"Ⓢ","oacut":"ó","oacute":"ó","oast":"⊛","ocir":"ô","ocirc":"ô","ocy":"о","odash":"⊝","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","oelig":"œ","ofcir":"⦿","ofr":"𝔬","ogon":"˛","ograv":"ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","omacr":"ō","omega":"ω","omicron":"ο","omid":"⦶","ominus":"⊖","oopf":"𝕠","opar":"⦷","operp":"⦹","oplus":"⊕","or":"∨","orarr":"↻","ord":"º","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oscr":"ℴ","oslas":"ø","oslash":"ø","osol":"⊘","otild":"õ","otilde":"õ","otimes":"⊗","otimesas":"⨶","oum":"ö","ouml":"ö","ovbar":"⌽","par":"¶","para":"¶","parallel":"∥","parsim":"⫳","parsl":"⫽","part":"∂","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","pfr":"𝔭","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plus":"+","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plusdo":"∔","plusdu":"⨥","pluse":"⩲","plusm":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","pointint":"⨕","popf":"𝕡","poun":"£","pound":"£","pr":"≺","prE":"⪳","prap":"⪷","prcue":"≼","pre":"⪯","prec":"≺","precapprox":"⪷","preccurlyeq":"≼","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","precsim":"≾","prime":"′","primes":"ℙ","prnE":"⪵","prnap":"⪹","prnsim":"⋨","prod":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","propto":"∝","prsim":"≾","prurel":"⊰","pscr":"𝓅","psi":"ψ","puncsp":" ","qfr":"𝔮","qint":"⨌","qopf":"𝕢","qprime":"⁗","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quo":"\\"","quot":"\\"","rAarr":"⇛","rArr":"⇒","rAtail":"⤜","rBarr":"⤏","rHar":"⥤","race":"∽̱","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","rangd":"⦒","range":"⦥","rangle":"⟩","raqu":"»","raquo":"»","rarr":"→","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","rarrtl":"↣","rarrw":"↝","ratail":"⤚","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","rcaron":"ř","rcedil":"ŗ","rceil":"⌉","rcub":"}","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","rect":"▭","re":"®","reg":"®","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","rhard":"⇁","rharu":"⇀","rharul":"⥬","rho":"ρ","rhov":"ϱ","rightarrow":"→","rightarrowtail":"↣","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","rightthreetimes":"⋌","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoust":"⎱","rmoustache":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","roplus":"⨮","rotimes":"⨵","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","rsaquo":"›","rscr":"𝓇","rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","ruluhar":"⥨","rx":"℞","sacute":"ś","sbquo":"‚","sc":"≻","scE":"⪴","scap":"⪸","scaron":"š","sccue":"≽","sce":"⪰","scedil":"ş","scirc":"ŝ","scnE":"⪶","scnap":"⪺","scnsim":"⋩","scpolint":"⨓","scsim":"≿","scy":"с","sdot":"⋅","sdotb":"⊡","sdote":"⩦","seArr":"⇘","searhk":"⤥","searr":"↘","searrow":"↘","sec":"§","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","sfr":"𝔰","sfrown":"⌢","sharp":"♯","shchcy":"щ","shcy":"ш","shortmid":"∣","shortparallel":"∥","sh":"­","shy":"­","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","softcy":"ь","sol":"/","solb":"⧄","solbar":"⌿","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","squ":"□","square":"□","squarf":"▪","squf":"▪","srarr":"→","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","subE":"⫅","subdot":"⪽","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","subseteq":"⊆","subseteqq":"⫅","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succ":"≻","succapprox":"⪸","succcurlyeq":"≽","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","sum":"∑","sung":"♪","sup":"⊃","sup1":"¹","sup2":"²","sup3":"³","supE":"⫆","supdot":"⪾","supdsub":"⫘","supe":"⊇","supedot":"⫄","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swArr":"⇙","swarhk":"⤦","swarr":"↙","swarrow":"↙","swnwar":"⤪","szli":"ß","szlig":"ß","target":"⌖","tau":"τ","tbrk":"⎴","tcaron":"ť","tcedil":"ţ","tcy":"т","tdot":"⃛","telrec":"⌕","tfr":"𝔱","there4":"∴","therefore":"∴","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","thinsp":" ","thkap":"≈","thksim":"∼","thor":"þ","thorn":"þ","tilde":"˜","time":"×","times":"×","timesb":"⊠","timesbar":"⨱","timesd":"⨰","tint":"∭","toea":"⤨","top":"⊤","topbot":"⌶","topcir":"⫱","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","tscr":"𝓉","tscy":"ц","tshcy":"ћ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","uArr":"⇑","uHar":"⥣","uacut":"ú","uacute":"ú","uarr":"↑","ubrcy":"ў","ubreve":"ŭ","ucir":"û","ucirc":"û","ucy":"у","udarr":"⇅","udblac":"ű","udhar":"⥮","ufisht":"⥾","ufr":"𝔲","ugrav":"ù","ugrave":"ù","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","umacr":"ū","um":"¨","uml":"¨","uogon":"ų","uopf":"𝕦","uparrow":"↑","updownarrow":"↕","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","upsi":"υ","upsih":"ϒ","upsilon":"υ","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","uring":"ů","urtri":"◹","uscr":"𝓊","utdot":"⋰","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","uum":"ü","uuml":"ü","uwangle":"⦧","vArr":"⇕","vBar":"⫨","vBarv":"⫩","vDash":"⊨","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vcy":"в","vdash":"⊢","vee":"∨","veebar":"⊻","veeeq":"≚","vellip":"⋮","verbar":"|","vert":"|","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","vopf":"𝕧","vprop":"∝","vrtri":"⊳","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","vzigzag":"⦚","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","wedgeq":"≙","weierp":"℘","wfr":"𝔴","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","xfr":"𝔵","xhArr":"⟺","xharr":"⟷","xi":"ξ","xlArr":"⟸","xlarr":"⟵","xmap":"⟼","xnis":"⋻","xodot":"⨀","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrArr":"⟹","xrarr":"⟶","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","yacut":"ý","yacute":"ý","yacy":"я","ycirc":"ŷ","ycy":"ы","ye":"¥","yen":"¥","yfr":"𝔶","yicy":"ї","yopf":"𝕪","yscr":"𝓎","yucy":"ю","yum":"ÿ","yuml":"ÿ","zacute":"ź","zcaron":"ž","zcy":"з","zdot":"ż","zeetrf":"ℨ","zeta":"ζ","zfr":"𝔷","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","zscr":"𝓏","zwj":"‍","zwnj":"‌"}'); - // Any other ES whitespace does not get this treatment. - returnState = nameBefore; - return esWhitespaceStart(code); - } +/***/ }), - /** - * Before name, self slash, or end of tag for fragments. - * - * ```markdown - * > | a <B> c - * ^ - * > | a </B> c - * ^ - * > | a <> b - * ^ - * ``` - * - * @type {State} - */ - function nameBefore(code) { - // Closing tag. - if (code === 47) { - effects.enter(tagClosingMarkerType); - effects.consume(code); - effects.exit(tagClosingMarkerType); - returnState = closingTagNameBefore; - return esWhitespaceStart; - } +/***/ 21257: +/***/ ((module) => { - // Fragment opening tag. - if (code === 62) { - return tagEnd(code); - } +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"0":"�","128":"€","130":"‚","131":"ƒ","132":"„","133":"…","134":"†","135":"‡","136":"ˆ","137":"‰","138":"Š","139":"‹","140":"Œ","142":"Ž","145":"‘","146":"’","147":"“","148":"”","149":"•","150":"–","151":"—","152":"˜","153":"™","154":"š","155":"›","156":"œ","158":"ž","159":"Ÿ"}'); - // Start of a name. - if (code !== null && code >= 0 && lib_start(code)) { - effects.enter(tagNameType); - effects.enter(tagNamePrimaryType); - effects.consume(code); - return primaryName; - } - crash(code, 'before name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 33 ? ' (note: to create a comment in MDX, use `{/* text */}`)' : '')); - } +/***/ }), - /** - * Before name of closing tag or end of closing fragment tag. - * - * ```markdown - * > | a </> b - * ^ - * > | a </B> c - * ^ - * ``` - * - * @type {State} - */ - function closingTagNameBefore(code) { - // Fragment closing tag. - if (code === 62) { - return tagEnd(code); - } +/***/ 14652: +/***/ ((module) => { - // Start of a closing tag name. - if (code !== null && code >= 0 && lib_start(code)) { - effects.enter(tagNameType); - effects.enter(tagNamePrimaryType); - effects.consume(code); - return primaryName; - } - crash(code, 'before name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 42 || code === 47 ? ' (note: JS comments in JSX tags are not supported in MDX)' : '')); - } +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"builtin":{"Array":false,"ArrayBuffer":false,"Atomics":false,"BigInt":false,"BigInt64Array":false,"BigUint64Array":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"globalThis":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"SharedArrayBuffer":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"es5":{"Array":false,"Boolean":false,"constructor":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"propertyIsEnumerable":false,"RangeError":false,"ReferenceError":false,"RegExp":false,"String":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false},"es2015":{"Array":false,"ArrayBuffer":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"es2017":{"Array":false,"ArrayBuffer":false,"Atomics":false,"Boolean":false,"constructor":false,"DataView":false,"Date":false,"decodeURI":false,"decodeURIComponent":false,"encodeURI":false,"encodeURIComponent":false,"Error":false,"escape":false,"eval":false,"EvalError":false,"Float32Array":false,"Float64Array":false,"Function":false,"hasOwnProperty":false,"Infinity":false,"Int16Array":false,"Int32Array":false,"Int8Array":false,"isFinite":false,"isNaN":false,"isPrototypeOf":false,"JSON":false,"Map":false,"Math":false,"NaN":false,"Number":false,"Object":false,"parseFloat":false,"parseInt":false,"Promise":false,"propertyIsEnumerable":false,"Proxy":false,"RangeError":false,"ReferenceError":false,"Reflect":false,"RegExp":false,"Set":false,"SharedArrayBuffer":false,"String":false,"Symbol":false,"SyntaxError":false,"toLocaleString":false,"toString":false,"TypeError":false,"Uint16Array":false,"Uint32Array":false,"Uint8Array":false,"Uint8ClampedArray":false,"undefined":false,"unescape":false,"URIError":false,"valueOf":false,"WeakMap":false,"WeakSet":false},"browser":{"AbortController":false,"AbortSignal":false,"addEventListener":false,"alert":false,"AnalyserNode":false,"Animation":false,"AnimationEffectReadOnly":false,"AnimationEffectTiming":false,"AnimationEffectTimingReadOnly":false,"AnimationEvent":false,"AnimationPlaybackEvent":false,"AnimationTimeline":false,"applicationCache":false,"ApplicationCache":false,"ApplicationCacheErrorEvent":false,"atob":false,"Attr":false,"Audio":false,"AudioBuffer":false,"AudioBufferSourceNode":false,"AudioContext":false,"AudioDestinationNode":false,"AudioListener":false,"AudioNode":false,"AudioParam":false,"AudioProcessingEvent":false,"AudioScheduledSourceNode":false,"AudioWorkletGlobalScope ":false,"AudioWorkletNode":false,"AudioWorkletProcessor":false,"BarProp":false,"BaseAudioContext":false,"BatteryManager":false,"BeforeUnloadEvent":false,"BiquadFilterNode":false,"Blob":false,"BlobEvent":false,"blur":false,"BroadcastChannel":false,"btoa":false,"BudgetService":false,"ByteLengthQueuingStrategy":false,"Cache":false,"caches":false,"CacheStorage":false,"cancelAnimationFrame":false,"cancelIdleCallback":false,"CanvasCaptureMediaStreamTrack":false,"CanvasGradient":false,"CanvasPattern":false,"CanvasRenderingContext2D":false,"ChannelMergerNode":false,"ChannelSplitterNode":false,"CharacterData":false,"clearInterval":false,"clearTimeout":false,"clientInformation":false,"ClipboardEvent":false,"close":false,"closed":false,"CloseEvent":false,"Comment":false,"CompositionEvent":false,"confirm":false,"console":false,"ConstantSourceNode":false,"ConvolverNode":false,"CountQueuingStrategy":false,"createImageBitmap":false,"Credential":false,"CredentialsContainer":false,"crypto":false,"Crypto":false,"CryptoKey":false,"CSS":false,"CSSConditionRule":false,"CSSFontFaceRule":false,"CSSGroupingRule":false,"CSSImportRule":false,"CSSKeyframeRule":false,"CSSKeyframesRule":false,"CSSMediaRule":false,"CSSNamespaceRule":false,"CSSPageRule":false,"CSSRule":false,"CSSRuleList":false,"CSSStyleDeclaration":false,"CSSStyleRule":false,"CSSStyleSheet":false,"CSSSupportsRule":false,"CustomElementRegistry":false,"customElements":false,"CustomEvent":false,"DataTransfer":false,"DataTransferItem":false,"DataTransferItemList":false,"defaultstatus":false,"defaultStatus":false,"DelayNode":false,"DeviceMotionEvent":false,"DeviceOrientationEvent":false,"devicePixelRatio":false,"dispatchEvent":false,"document":false,"Document":false,"DocumentFragment":false,"DocumentType":false,"DOMError":false,"DOMException":false,"DOMImplementation":false,"DOMMatrix":false,"DOMMatrixReadOnly":false,"DOMParser":false,"DOMPoint":false,"DOMPointReadOnly":false,"DOMQuad":false,"DOMRect":false,"DOMRectReadOnly":false,"DOMStringList":false,"DOMStringMap":false,"DOMTokenList":false,"DragEvent":false,"DynamicsCompressorNode":false,"Element":false,"ErrorEvent":false,"event":false,"Event":false,"EventSource":false,"EventTarget":false,"external":false,"fetch":false,"File":false,"FileList":false,"FileReader":false,"find":false,"focus":false,"FocusEvent":false,"FontFace":false,"FontFaceSetLoadEvent":false,"FormData":false,"frameElement":false,"frames":false,"GainNode":false,"Gamepad":false,"GamepadButton":false,"GamepadEvent":false,"getComputedStyle":false,"getSelection":false,"HashChangeEvent":false,"Headers":false,"history":false,"History":false,"HTMLAllCollection":false,"HTMLAnchorElement":false,"HTMLAreaElement":false,"HTMLAudioElement":false,"HTMLBaseElement":false,"HTMLBodyElement":false,"HTMLBRElement":false,"HTMLButtonElement":false,"HTMLCanvasElement":false,"HTMLCollection":false,"HTMLContentElement":false,"HTMLDataElement":false,"HTMLDataListElement":false,"HTMLDetailsElement":false,"HTMLDialogElement":false,"HTMLDirectoryElement":false,"HTMLDivElement":false,"HTMLDListElement":false,"HTMLDocument":false,"HTMLElement":false,"HTMLEmbedElement":false,"HTMLFieldSetElement":false,"HTMLFontElement":false,"HTMLFormControlsCollection":false,"HTMLFormElement":false,"HTMLFrameElement":false,"HTMLFrameSetElement":false,"HTMLHeadElement":false,"HTMLHeadingElement":false,"HTMLHRElement":false,"HTMLHtmlElement":false,"HTMLIFrameElement":false,"HTMLImageElement":false,"HTMLInputElement":false,"HTMLLabelElement":false,"HTMLLegendElement":false,"HTMLLIElement":false,"HTMLLinkElement":false,"HTMLMapElement":false,"HTMLMarqueeElement":false,"HTMLMediaElement":false,"HTMLMenuElement":false,"HTMLMetaElement":false,"HTMLMeterElement":false,"HTMLModElement":false,"HTMLObjectElement":false,"HTMLOListElement":false,"HTMLOptGroupElement":false,"HTMLOptionElement":false,"HTMLOptionsCollection":false,"HTMLOutputElement":false,"HTMLParagraphElement":false,"HTMLParamElement":false,"HTMLPictureElement":false,"HTMLPreElement":false,"HTMLProgressElement":false,"HTMLQuoteElement":false,"HTMLScriptElement":false,"HTMLSelectElement":false,"HTMLShadowElement":false,"HTMLSlotElement":false,"HTMLSourceElement":false,"HTMLSpanElement":false,"HTMLStyleElement":false,"HTMLTableCaptionElement":false,"HTMLTableCellElement":false,"HTMLTableColElement":false,"HTMLTableElement":false,"HTMLTableRowElement":false,"HTMLTableSectionElement":false,"HTMLTemplateElement":false,"HTMLTextAreaElement":false,"HTMLTimeElement":false,"HTMLTitleElement":false,"HTMLTrackElement":false,"HTMLUListElement":false,"HTMLUnknownElement":false,"HTMLVideoElement":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"IdleDeadline":false,"IIRFilterNode":false,"Image":false,"ImageBitmap":false,"ImageBitmapRenderingContext":false,"ImageCapture":false,"ImageData":false,"indexedDB":false,"innerHeight":false,"innerWidth":false,"InputEvent":false,"IntersectionObserver":false,"IntersectionObserverEntry":false,"Intl":false,"isSecureContext":false,"KeyboardEvent":false,"KeyframeEffect":false,"KeyframeEffectReadOnly":false,"length":false,"localStorage":false,"location":true,"Location":false,"locationbar":false,"matchMedia":false,"MediaDeviceInfo":false,"MediaDevices":false,"MediaElementAudioSourceNode":false,"MediaEncryptedEvent":false,"MediaError":false,"MediaKeyMessageEvent":false,"MediaKeySession":false,"MediaKeyStatusMap":false,"MediaKeySystemAccess":false,"MediaList":false,"MediaQueryList":false,"MediaQueryListEvent":false,"MediaRecorder":false,"MediaSettingsRange":false,"MediaSource":false,"MediaStream":false,"MediaStreamAudioDestinationNode":false,"MediaStreamAudioSourceNode":false,"MediaStreamEvent":false,"MediaStreamTrack":false,"MediaStreamTrackEvent":false,"menubar":false,"MessageChannel":false,"MessageEvent":false,"MessagePort":false,"MIDIAccess":false,"MIDIConnectionEvent":false,"MIDIInput":false,"MIDIInputMap":false,"MIDIMessageEvent":false,"MIDIOutput":false,"MIDIOutputMap":false,"MIDIPort":false,"MimeType":false,"MimeTypeArray":false,"MouseEvent":false,"moveBy":false,"moveTo":false,"MutationEvent":false,"MutationObserver":false,"MutationRecord":false,"name":false,"NamedNodeMap":false,"NavigationPreloadManager":false,"navigator":false,"Navigator":false,"NetworkInformation":false,"Node":false,"NodeFilter":false,"NodeIterator":false,"NodeList":false,"Notification":false,"OfflineAudioCompletionEvent":false,"OfflineAudioContext":false,"offscreenBuffering":false,"OffscreenCanvas":true,"onabort":true,"onafterprint":true,"onanimationend":true,"onanimationiteration":true,"onanimationstart":true,"onappinstalled":true,"onauxclick":true,"onbeforeinstallprompt":true,"onbeforeprint":true,"onbeforeunload":true,"onblur":true,"oncancel":true,"oncanplay":true,"oncanplaythrough":true,"onchange":true,"onclick":true,"onclose":true,"oncontextmenu":true,"oncuechange":true,"ondblclick":true,"ondevicemotion":true,"ondeviceorientation":true,"ondeviceorientationabsolute":true,"ondrag":true,"ondragend":true,"ondragenter":true,"ondragleave":true,"ondragover":true,"ondragstart":true,"ondrop":true,"ondurationchange":true,"onemptied":true,"onended":true,"onerror":true,"onfocus":true,"ongotpointercapture":true,"onhashchange":true,"oninput":true,"oninvalid":true,"onkeydown":true,"onkeypress":true,"onkeyup":true,"onlanguagechange":true,"onload":true,"onloadeddata":true,"onloadedmetadata":true,"onloadstart":true,"onlostpointercapture":true,"onmessage":true,"onmessageerror":true,"onmousedown":true,"onmouseenter":true,"onmouseleave":true,"onmousemove":true,"onmouseout":true,"onmouseover":true,"onmouseup":true,"onmousewheel":true,"onoffline":true,"ononline":true,"onpagehide":true,"onpageshow":true,"onpause":true,"onplay":true,"onplaying":true,"onpointercancel":true,"onpointerdown":true,"onpointerenter":true,"onpointerleave":true,"onpointermove":true,"onpointerout":true,"onpointerover":true,"onpointerup":true,"onpopstate":true,"onprogress":true,"onratechange":true,"onrejectionhandled":true,"onreset":true,"onresize":true,"onscroll":true,"onsearch":true,"onseeked":true,"onseeking":true,"onselect":true,"onstalled":true,"onstorage":true,"onsubmit":true,"onsuspend":true,"ontimeupdate":true,"ontoggle":true,"ontransitionend":true,"onunhandledrejection":true,"onunload":true,"onvolumechange":true,"onwaiting":true,"onwheel":true,"open":false,"openDatabase":false,"opener":false,"Option":false,"origin":false,"OscillatorNode":false,"outerHeight":false,"outerWidth":false,"PageTransitionEvent":false,"pageXOffset":false,"pageYOffset":false,"PannerNode":false,"parent":false,"Path2D":false,"PaymentAddress":false,"PaymentRequest":false,"PaymentRequestUpdateEvent":false,"PaymentResponse":false,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceLongTaskTiming":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceNavigationTiming":false,"PerformanceObserver":false,"PerformanceObserverEntryList":false,"PerformancePaintTiming":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"PeriodicWave":false,"Permissions":false,"PermissionStatus":false,"personalbar":false,"PhotoCapabilities":false,"Plugin":false,"PluginArray":false,"PointerEvent":false,"PopStateEvent":false,"postMessage":false,"Presentation":false,"PresentationAvailability":false,"PresentationConnection":false,"PresentationConnectionAvailableEvent":false,"PresentationConnectionCloseEvent":false,"PresentationConnectionList":false,"PresentationReceiver":false,"PresentationRequest":false,"print":false,"ProcessingInstruction":false,"ProgressEvent":false,"PromiseRejectionEvent":false,"prompt":false,"PushManager":false,"PushSubscription":false,"PushSubscriptionOptions":false,"queueMicrotask":false,"RadioNodeList":false,"Range":false,"ReadableStream":false,"registerProcessor":false,"RemotePlayback":false,"removeEventListener":false,"Request":false,"requestAnimationFrame":false,"requestIdleCallback":false,"resizeBy":false,"ResizeObserver":false,"ResizeObserverEntry":false,"resizeTo":false,"Response":false,"RTCCertificate":false,"RTCDataChannel":false,"RTCDataChannelEvent":false,"RTCDtlsTransport":false,"RTCIceCandidate":false,"RTCIceGatherer":false,"RTCIceTransport":false,"RTCPeerConnection":false,"RTCPeerConnectionIceEvent":false,"RTCRtpContributingSource":false,"RTCRtpReceiver":false,"RTCRtpSender":false,"RTCSctpTransport":false,"RTCSessionDescription":false,"RTCStatsReport":false,"RTCTrackEvent":false,"screen":false,"Screen":false,"screenLeft":false,"ScreenOrientation":false,"screenTop":false,"screenX":false,"screenY":false,"ScriptProcessorNode":false,"scroll":false,"scrollbars":false,"scrollBy":false,"scrollTo":false,"scrollX":false,"scrollY":false,"SecurityPolicyViolationEvent":false,"Selection":false,"self":false,"ServiceWorker":false,"ServiceWorkerContainer":false,"ServiceWorkerRegistration":false,"sessionStorage":false,"setInterval":false,"setTimeout":false,"ShadowRoot":false,"SharedWorker":false,"SourceBuffer":false,"SourceBufferList":false,"speechSynthesis":false,"SpeechSynthesisEvent":false,"SpeechSynthesisUtterance":false,"StaticRange":false,"status":false,"statusbar":false,"StereoPannerNode":false,"stop":false,"Storage":false,"StorageEvent":false,"StorageManager":false,"styleMedia":false,"StyleSheet":false,"StyleSheetList":false,"SubtleCrypto":false,"SVGAElement":false,"SVGAngle":false,"SVGAnimatedAngle":false,"SVGAnimatedBoolean":false,"SVGAnimatedEnumeration":false,"SVGAnimatedInteger":false,"SVGAnimatedLength":false,"SVGAnimatedLengthList":false,"SVGAnimatedNumber":false,"SVGAnimatedNumberList":false,"SVGAnimatedPreserveAspectRatio":false,"SVGAnimatedRect":false,"SVGAnimatedString":false,"SVGAnimatedTransformList":false,"SVGAnimateElement":false,"SVGAnimateMotionElement":false,"SVGAnimateTransformElement":false,"SVGAnimationElement":false,"SVGCircleElement":false,"SVGClipPathElement":false,"SVGComponentTransferFunctionElement":false,"SVGDefsElement":false,"SVGDescElement":false,"SVGDiscardElement":false,"SVGElement":false,"SVGEllipseElement":false,"SVGFEBlendElement":false,"SVGFEColorMatrixElement":false,"SVGFEComponentTransferElement":false,"SVGFECompositeElement":false,"SVGFEConvolveMatrixElement":false,"SVGFEDiffuseLightingElement":false,"SVGFEDisplacementMapElement":false,"SVGFEDistantLightElement":false,"SVGFEDropShadowElement":false,"SVGFEFloodElement":false,"SVGFEFuncAElement":false,"SVGFEFuncBElement":false,"SVGFEFuncGElement":false,"SVGFEFuncRElement":false,"SVGFEGaussianBlurElement":false,"SVGFEImageElement":false,"SVGFEMergeElement":false,"SVGFEMergeNodeElement":false,"SVGFEMorphologyElement":false,"SVGFEOffsetElement":false,"SVGFEPointLightElement":false,"SVGFESpecularLightingElement":false,"SVGFESpotLightElement":false,"SVGFETileElement":false,"SVGFETurbulenceElement":false,"SVGFilterElement":false,"SVGForeignObjectElement":false,"SVGGElement":false,"SVGGeometryElement":false,"SVGGradientElement":false,"SVGGraphicsElement":false,"SVGImageElement":false,"SVGLength":false,"SVGLengthList":false,"SVGLinearGradientElement":false,"SVGLineElement":false,"SVGMarkerElement":false,"SVGMaskElement":false,"SVGMatrix":false,"SVGMetadataElement":false,"SVGMPathElement":false,"SVGNumber":false,"SVGNumberList":false,"SVGPathElement":false,"SVGPatternElement":false,"SVGPoint":false,"SVGPointList":false,"SVGPolygonElement":false,"SVGPolylineElement":false,"SVGPreserveAspectRatio":false,"SVGRadialGradientElement":false,"SVGRect":false,"SVGRectElement":false,"SVGScriptElement":false,"SVGSetElement":false,"SVGStopElement":false,"SVGStringList":false,"SVGStyleElement":false,"SVGSVGElement":false,"SVGSwitchElement":false,"SVGSymbolElement":false,"SVGTextContentElement":false,"SVGTextElement":false,"SVGTextPathElement":false,"SVGTextPositioningElement":false,"SVGTitleElement":false,"SVGTransform":false,"SVGTransformList":false,"SVGTSpanElement":false,"SVGUnitTypes":false,"SVGUseElement":false,"SVGViewElement":false,"TaskAttributionTiming":false,"Text":false,"TextDecoder":false,"TextEncoder":false,"TextEvent":false,"TextMetrics":false,"TextTrack":false,"TextTrackCue":false,"TextTrackCueList":false,"TextTrackList":false,"TimeRanges":false,"toolbar":false,"top":false,"Touch":false,"TouchEvent":false,"TouchList":false,"TrackEvent":false,"TransitionEvent":false,"TreeWalker":false,"UIEvent":false,"URL":false,"URLSearchParams":false,"ValidityState":false,"visualViewport":false,"VisualViewport":false,"VTTCue":false,"WaveShaperNode":false,"WebAssembly":false,"WebGL2RenderingContext":false,"WebGLActiveInfo":false,"WebGLBuffer":false,"WebGLContextEvent":false,"WebGLFramebuffer":false,"WebGLProgram":false,"WebGLQuery":false,"WebGLRenderbuffer":false,"WebGLRenderingContext":false,"WebGLSampler":false,"WebGLShader":false,"WebGLShaderPrecisionFormat":false,"WebGLSync":false,"WebGLTexture":false,"WebGLTransformFeedback":false,"WebGLUniformLocation":false,"WebGLVertexArrayObject":false,"WebSocket":false,"WheelEvent":false,"window":false,"Window":false,"Worker":false,"WritableStream":false,"XMLDocument":false,"XMLHttpRequest":false,"XMLHttpRequestEventTarget":false,"XMLHttpRequestUpload":false,"XMLSerializer":false,"XPathEvaluator":false,"XPathExpression":false,"XPathResult":false,"XSLTProcessor":false},"worker":{"addEventListener":false,"applicationCache":false,"atob":false,"Blob":false,"BroadcastChannel":false,"btoa":false,"Cache":false,"caches":false,"clearInterval":false,"clearTimeout":false,"close":true,"console":false,"fetch":false,"FileReaderSync":false,"FormData":false,"Headers":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"ImageData":false,"importScripts":true,"indexedDB":false,"location":false,"MessageChannel":false,"MessagePort":false,"name":false,"navigator":false,"Notification":false,"onclose":true,"onconnect":true,"onerror":true,"onlanguagechange":true,"onmessage":true,"onoffline":true,"ononline":true,"onrejectionhandled":true,"onunhandledrejection":true,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"postMessage":true,"Promise":false,"queueMicrotask":false,"removeEventListener":false,"Request":false,"Response":false,"self":true,"ServiceWorkerRegistration":false,"setInterval":false,"setTimeout":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false,"WebSocket":false,"Worker":false,"WorkerGlobalScope":false,"XMLHttpRequest":false},"node":{"__dirname":false,"__filename":false,"Buffer":false,"clearImmediate":false,"clearInterval":false,"clearTimeout":false,"console":false,"exports":true,"global":false,"Intl":false,"module":false,"process":false,"queueMicrotask":false,"require":false,"setImmediate":false,"setInterval":false,"setTimeout":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false},"commonjs":{"exports":true,"global":false,"module":false,"require":false},"amd":{"define":false,"require":false},"mocha":{"after":false,"afterEach":false,"before":false,"beforeEach":false,"context":false,"describe":false,"it":false,"mocha":false,"run":false,"setup":false,"specify":false,"suite":false,"suiteSetup":false,"suiteTeardown":false,"teardown":false,"test":false,"xcontext":false,"xdescribe":false,"xit":false,"xspecify":false},"jasmine":{"afterAll":false,"afterEach":false,"beforeAll":false,"beforeEach":false,"describe":false,"expect":false,"fail":false,"fdescribe":false,"fit":false,"it":false,"jasmine":false,"pending":false,"runs":false,"spyOn":false,"spyOnProperty":false,"waits":false,"waitsFor":false,"xdescribe":false,"xit":false},"jest":{"afterAll":false,"afterEach":false,"beforeAll":false,"beforeEach":false,"describe":false,"expect":false,"fdescribe":false,"fit":false,"it":false,"jest":false,"pit":false,"require":false,"test":false,"xdescribe":false,"xit":false,"xtest":false},"qunit":{"asyncTest":false,"deepEqual":false,"equal":false,"expect":false,"module":false,"notDeepEqual":false,"notEqual":false,"notOk":false,"notPropEqual":false,"notStrictEqual":false,"ok":false,"propEqual":false,"QUnit":false,"raises":false,"start":false,"stop":false,"strictEqual":false,"test":false,"throws":false},"phantomjs":{"console":true,"exports":true,"phantom":true,"require":true,"WebPage":true},"couch":{"emit":false,"exports":false,"getRow":false,"log":false,"module":false,"provides":false,"require":false,"respond":false,"send":false,"start":false,"sum":false},"rhino":{"defineClass":false,"deserialize":false,"gc":false,"help":false,"importClass":false,"importPackage":false,"java":false,"load":false,"loadClass":false,"Packages":false,"print":false,"quit":false,"readFile":false,"readUrl":false,"runCommand":false,"seal":false,"serialize":false,"spawn":false,"sync":false,"toint32":false,"version":false},"nashorn":{"__DIR__":false,"__FILE__":false,"__LINE__":false,"com":false,"edu":false,"exit":false,"java":false,"Java":false,"javafx":false,"JavaImporter":false,"javax":false,"JSAdapter":false,"load":false,"loadWithNewGlobal":false,"org":false,"Packages":false,"print":false,"quit":false},"wsh":{"ActiveXObject":true,"Enumerator":true,"GetObject":true,"ScriptEngine":true,"ScriptEngineBuildVersion":true,"ScriptEngineMajorVersion":true,"ScriptEngineMinorVersion":true,"VBArray":true,"WScript":true,"WSH":true,"XDomainRequest":true},"jquery":{"$":false,"jQuery":false},"yui":{"YAHOO":false,"YAHOO_config":false,"YUI":false,"YUI_config":false},"shelljs":{"cat":false,"cd":false,"chmod":false,"config":false,"cp":false,"dirs":false,"echo":false,"env":false,"error":false,"exec":false,"exit":false,"find":false,"grep":false,"ln":false,"ls":false,"mkdir":false,"mv":false,"popd":false,"pushd":false,"pwd":false,"rm":false,"sed":false,"set":false,"target":false,"tempdir":false,"test":false,"touch":false,"which":false},"prototypejs":{"$":false,"$$":false,"$A":false,"$break":false,"$continue":false,"$F":false,"$H":false,"$R":false,"$w":false,"Abstract":false,"Ajax":false,"Autocompleter":false,"Builder":false,"Class":false,"Control":false,"Draggable":false,"Draggables":false,"Droppables":false,"Effect":false,"Element":false,"Enumerable":false,"Event":false,"Field":false,"Form":false,"Hash":false,"Insertion":false,"ObjectRange":false,"PeriodicalExecuter":false,"Position":false,"Prototype":false,"Scriptaculous":false,"Selector":false,"Sortable":false,"SortableObserver":false,"Sound":false,"Template":false,"Toggle":false,"Try":false},"meteor":{"_":false,"$":false,"Accounts":false,"AccountsClient":false,"AccountsCommon":false,"AccountsServer":false,"App":false,"Assets":false,"Blaze":false,"check":false,"Cordova":false,"DDP":false,"DDPRateLimiter":false,"DDPServer":false,"Deps":false,"EJSON":false,"Email":false,"HTTP":false,"Log":false,"Match":false,"Meteor":false,"Mongo":false,"MongoInternals":false,"Npm":false,"Package":false,"Plugin":false,"process":false,"Random":false,"ReactiveDict":false,"ReactiveVar":false,"Router":false,"ServiceConfiguration":false,"Session":false,"share":false,"Spacebars":false,"Template":false,"Tinytest":false,"Tracker":false,"UI":false,"Utils":false,"WebApp":false,"WebAppInternals":false},"mongo":{"_isWindows":false,"_rand":false,"BulkWriteResult":false,"cat":false,"cd":false,"connect":false,"db":false,"getHostName":false,"getMemInfo":false,"hostname":false,"ISODate":false,"listFiles":false,"load":false,"ls":false,"md5sumFile":false,"mkdir":false,"Mongo":false,"NumberInt":false,"NumberLong":false,"ObjectId":false,"PlanCache":false,"print":false,"printjson":false,"pwd":false,"quit":false,"removeFile":false,"rs":false,"sh":false,"UUID":false,"version":false,"WriteResult":false},"applescript":{"$":false,"Application":false,"Automation":false,"console":false,"delay":false,"Library":false,"ObjC":false,"ObjectSpecifier":false,"Path":false,"Progress":false,"Ref":false},"serviceworker":{"addEventListener":false,"applicationCache":false,"atob":false,"Blob":false,"BroadcastChannel":false,"btoa":false,"Cache":false,"caches":false,"CacheStorage":false,"clearInterval":false,"clearTimeout":false,"Client":false,"clients":false,"Clients":false,"close":true,"console":false,"ExtendableEvent":false,"ExtendableMessageEvent":false,"fetch":false,"FetchEvent":false,"FileReaderSync":false,"FormData":false,"Headers":false,"IDBCursor":false,"IDBCursorWithValue":false,"IDBDatabase":false,"IDBFactory":false,"IDBIndex":false,"IDBKeyRange":false,"IDBObjectStore":false,"IDBOpenDBRequest":false,"IDBRequest":false,"IDBTransaction":false,"IDBVersionChangeEvent":false,"ImageData":false,"importScripts":false,"indexedDB":false,"location":false,"MessageChannel":false,"MessagePort":false,"name":false,"navigator":false,"Notification":false,"onclose":true,"onconnect":true,"onerror":true,"onfetch":true,"oninstall":true,"onlanguagechange":true,"onmessage":true,"onmessageerror":true,"onnotificationclick":true,"onnotificationclose":true,"onoffline":true,"ononline":true,"onpush":true,"onpushsubscriptionchange":true,"onrejectionhandled":true,"onsync":true,"onunhandledrejection":true,"performance":false,"Performance":false,"PerformanceEntry":false,"PerformanceMark":false,"PerformanceMeasure":false,"PerformanceNavigation":false,"PerformanceResourceTiming":false,"PerformanceTiming":false,"postMessage":true,"Promise":false,"queueMicrotask":false,"registration":false,"removeEventListener":false,"Request":false,"Response":false,"self":false,"ServiceWorker":false,"ServiceWorkerContainer":false,"ServiceWorkerGlobalScope":false,"ServiceWorkerMessageEvent":false,"ServiceWorkerRegistration":false,"setInterval":false,"setTimeout":false,"skipWaiting":false,"TextDecoder":false,"TextEncoder":false,"URL":false,"URLSearchParams":false,"WebSocket":false,"WindowClient":false,"Worker":false,"WorkerGlobalScope":false,"XMLHttpRequest":false},"atomtest":{"advanceClock":false,"fakeClearInterval":false,"fakeClearTimeout":false,"fakeSetInterval":false,"fakeSetTimeout":false,"resetTimeouts":false,"waitsForPromise":false},"embertest":{"andThen":false,"click":false,"currentPath":false,"currentRouteName":false,"currentURL":false,"fillIn":false,"find":false,"findAll":false,"findWithAssert":false,"keyEvent":false,"pauseTest":false,"resumeTest":false,"triggerEvent":false,"visit":false,"wait":false},"protractor":{"$":false,"$$":false,"browser":false,"by":false,"By":false,"DartObject":false,"element":false,"protractor":false},"shared-node-browser":{"clearInterval":false,"clearTimeout":false,"console":false,"setInterval":false,"setTimeout":false,"URL":false,"URLSearchParams":false},"webextensions":{"browser":false,"chrome":false,"opr":false},"greasemonkey":{"cloneInto":false,"createObjectIn":false,"exportFunction":false,"GM":false,"GM_addStyle":false,"GM_deleteValue":false,"GM_getResourceText":false,"GM_getResourceURL":false,"GM_getValue":false,"GM_info":false,"GM_listValues":false,"GM_log":false,"GM_openInTab":false,"GM_registerMenuCommand":false,"GM_setClipboard":false,"GM_setValue":false,"GM_xmlhttpRequest":false,"unsafeWindow":false},"devtools":{"$":false,"$_":false,"$$":false,"$0":false,"$1":false,"$2":false,"$3":false,"$4":false,"$x":false,"chrome":false,"clear":false,"copy":false,"debug":false,"dir":false,"dirxml":false,"getEventListeners":false,"inspect":false,"keys":false,"monitor":false,"monitorEvents":false,"profile":false,"profileEnd":false,"queryObjects":false,"table":false,"undebug":false,"unmonitor":false,"unmonitorEvents":false,"values":false}}'); - /** - * In primary name. - * - * ```markdown - * > | a <Bc> d - * ^ - * ``` - * - * @type {State} - */ - function primaryName(code) { - // Continuation of name: remain. - if (code !== null && code >= 0 && cont(code, { - jsx: true - })) { - effects.consume(code); - return primaryName; - } +/***/ }), - // End of name. - if (code === 46 || code === 47 || code === 58 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { - effects.exit(tagNamePrimaryType); - returnState = primaryNameAfter; - return esWhitespaceStart(code); - } - crash(code, 'in name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag' + (code === 64 ? ' (note: to create a link in MDX, use `[text](url)`)' : '')); - } +/***/ 17324: +/***/ ((module) => { - /** - * After primary name. - * - * ```markdown - * > | a <b.c> d - * ^ - * > | a <b:c> d - * ^ - * ``` - * - * @type {State} - */ - function primaryNameAfter(code) { - // Start of a member name. - if (code === 46) { - effects.enter(tagNameMemberMarkerType); - effects.consume(code); - effects.exit(tagNameMemberMarkerType); - returnState = memberNameBefore; - return esWhitespaceStart; - } +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"assert":true,"node:assert":[">= 14.18 && < 15",">= 16"],"assert/strict":">= 15","node:assert/strict":">= 16","async_hooks":">= 8","node:async_hooks":[">= 14.18 && < 15",">= 16"],"buffer_ieee754":">= 0.5 && < 0.9.7","buffer":true,"node:buffer":[">= 14.18 && < 15",">= 16"],"child_process":true,"node:child_process":[">= 14.18 && < 15",">= 16"],"cluster":">= 0.5","node:cluster":[">= 14.18 && < 15",">= 16"],"console":true,"node:console":[">= 14.18 && < 15",">= 16"],"constants":true,"node:constants":[">= 14.18 && < 15",">= 16"],"crypto":true,"node:crypto":[">= 14.18 && < 15",">= 16"],"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"node:dgram":[">= 14.18 && < 15",">= 16"],"diagnostics_channel":[">= 14.17 && < 15",">= 15.1"],"node:diagnostics_channel":[">= 14.18 && < 15",">= 16"],"dns":true,"node:dns":[">= 14.18 && < 15",">= 16"],"dns/promises":">= 15","node:dns/promises":">= 16","domain":">= 0.7.12","node:domain":[">= 14.18 && < 15",">= 16"],"events":true,"node:events":[">= 14.18 && < 15",">= 16"],"freelist":"< 6","fs":true,"node:fs":[">= 14.18 && < 15",">= 16"],"fs/promises":[">= 10 && < 10.1",">= 14"],"node:fs/promises":[">= 14.18 && < 15",">= 16"],"_http_agent":">= 0.11.1","node:_http_agent":[">= 14.18 && < 15",">= 16"],"_http_client":">= 0.11.1","node:_http_client":[">= 14.18 && < 15",">= 16"],"_http_common":">= 0.11.1","node:_http_common":[">= 14.18 && < 15",">= 16"],"_http_incoming":">= 0.11.1","node:_http_incoming":[">= 14.18 && < 15",">= 16"],"_http_outgoing":">= 0.11.1","node:_http_outgoing":[">= 14.18 && < 15",">= 16"],"_http_server":">= 0.11.1","node:_http_server":[">= 14.18 && < 15",">= 16"],"http":true,"node:http":[">= 14.18 && < 15",">= 16"],"http2":">= 8.8","node:http2":[">= 14.18 && < 15",">= 16"],"https":true,"node:https":[">= 14.18 && < 15",">= 16"],"inspector":">= 8","node:inspector":[">= 14.18 && < 15",">= 16"],"inspector/promises":[">= 19"],"node:inspector/promises":[">= 19"],"_linklist":"< 8","module":true,"node:module":[">= 14.18 && < 15",">= 16"],"net":true,"node:net":[">= 14.18 && < 15",">= 16"],"node-inspect/lib/_inspect":">= 7.6 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6 && < 12","os":true,"node:os":[">= 14.18 && < 15",">= 16"],"path":true,"node:path":[">= 14.18 && < 15",">= 16"],"path/posix":">= 15.3","node:path/posix":">= 16","path/win32":">= 15.3","node:path/win32":">= 16","perf_hooks":">= 8.5","node:perf_hooks":[">= 14.18 && < 15",">= 16"],"process":">= 1","node:process":[">= 14.18 && < 15",">= 16"],"punycode":">= 0.5","node:punycode":[">= 14.18 && < 15",">= 16"],"querystring":true,"node:querystring":[">= 14.18 && < 15",">= 16"],"readline":true,"node:readline":[">= 14.18 && < 15",">= 16"],"readline/promises":">= 17","node:readline/promises":">= 17","repl":true,"node:repl":[">= 14.18 && < 15",">= 16"],"node:sea":[">= 20.12 && < 21",">= 21.7"],"smalloc":">= 0.11.5 && < 3","node:sqlite":[">= 22.13 && < 23",">= 23.4"],"_stream_duplex":">= 0.9.4","node:_stream_duplex":[">= 14.18 && < 15",">= 16"],"_stream_transform":">= 0.9.4","node:_stream_transform":[">= 14.18 && < 15",">= 16"],"_stream_wrap":">= 1.4.1","node:_stream_wrap":[">= 14.18 && < 15",">= 16"],"_stream_passthrough":">= 0.9.4","node:_stream_passthrough":[">= 14.18 && < 15",">= 16"],"_stream_readable":">= 0.9.4","node:_stream_readable":[">= 14.18 && < 15",">= 16"],"_stream_writable":">= 0.9.4","node:_stream_writable":[">= 14.18 && < 15",">= 16"],"stream":true,"node:stream":[">= 14.18 && < 15",">= 16"],"stream/consumers":">= 16.7","node:stream/consumers":">= 16.7","stream/promises":">= 15","node:stream/promises":">= 16","stream/web":">= 16.5","node:stream/web":">= 16.5","string_decoder":true,"node:string_decoder":[">= 14.18 && < 15",">= 16"],"sys":[">= 0.4 && < 0.7",">= 0.8"],"node:sys":[">= 14.18 && < 15",">= 16"],"test/reporters":">= 19.9 && < 20.2","node:test/reporters":[">= 18.17 && < 19",">= 19.9",">= 20"],"test/mock_loader":">= 22.3 && < 22.7","node:test/mock_loader":">= 22.3 && < 22.7","node:test":[">= 16.17 && < 17",">= 18"],"timers":true,"node:timers":[">= 14.18 && < 15",">= 16"],"timers/promises":">= 15","node:timers/promises":">= 16","_tls_common":">= 0.11.13","node:_tls_common":[">= 14.18 && < 15",">= 16"],"_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","node:_tls_wrap":[">= 14.18 && < 15",">= 16"],"tls":true,"node:tls":[">= 14.18 && < 15",">= 16"],"trace_events":">= 10","node:trace_events":[">= 14.18 && < 15",">= 16"],"tty":true,"node:tty":[">= 14.18 && < 15",">= 16"],"url":true,"node:url":[">= 14.18 && < 15",">= 16"],"util":true,"node:util":[">= 14.18 && < 15",">= 16"],"util/types":">= 15.3","node:util/types":">= 16","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/consarray":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/csvparser":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/logreader":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/profile_view":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/splaytree":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8":">= 1","node:v8":[">= 14.18 && < 15",">= 16"],"vm":true,"node:vm":[">= 14.18 && < 15",">= 16"],"wasi":[">= 13.4 && < 13.5",">= 18.17 && < 19",">= 20"],"node:wasi":[">= 18.17 && < 19",">= 20"],"worker_threads":">= 11.7","node:worker_threads":[">= 14.18 && < 15",">= 16"],"zlib":">= 0.5","node:zlib":[">= 14.18 && < 15",">= 16"]}'); - // Start of a local name. - if (code === 58) { - effects.enter(tagNamePrefixMarkerType); - effects.consume(code); - effects.exit(tagNamePrefixMarkerType); - returnState = localNameBefore; - return esWhitespaceStart; - } +/***/ }), - // End of name. - if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { - effects.exit(tagNameType); - return attributeBefore(code); - } - crash(code, 'after name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); - } +/***/ 62035: +/***/ ((module) => { - /** - * Before member name. - * - * ```markdown - * > | a <b.c> d - * ^ - * ``` - * - * @type {State} - */ - function memberNameBefore(code) { - // Start of a member name. - if (code !== null && code >= 0 && lib_start(code)) { - effects.enter(tagNameMemberType); - effects.consume(code); - return memberName; - } - crash(code, 'before member name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); - } +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"assert":true,"node:assert":[">= 14.18 && < 15",">= 16"],"assert/strict":">= 15","node:assert/strict":">= 16","async_hooks":">= 8","node:async_hooks":[">= 14.18 && < 15",">= 16"],"buffer_ieee754":">= 0.5 && < 0.9.7","buffer":true,"node:buffer":[">= 14.18 && < 15",">= 16"],"child_process":true,"node:child_process":[">= 14.18 && < 15",">= 16"],"cluster":">= 0.5","node:cluster":[">= 14.18 && < 15",">= 16"],"console":true,"node:console":[">= 14.18 && < 15",">= 16"],"constants":true,"node:constants":[">= 14.18 && < 15",">= 16"],"crypto":true,"node:crypto":[">= 14.18 && < 15",">= 16"],"_debug_agent":">= 1 && < 8","_debugger":"< 8","dgram":true,"node:dgram":[">= 14.18 && < 15",">= 16"],"diagnostics_channel":[">= 14.17 && < 15",">= 15.1"],"node:diagnostics_channel":[">= 14.18 && < 15",">= 16"],"dns":true,"node:dns":[">= 14.18 && < 15",">= 16"],"dns/promises":">= 15","node:dns/promises":">= 16","domain":">= 0.7.12","node:domain":[">= 14.18 && < 15",">= 16"],"events":true,"node:events":[">= 14.18 && < 15",">= 16"],"freelist":"< 6","fs":true,"node:fs":[">= 14.18 && < 15",">= 16"],"fs/promises":[">= 10 && < 10.1",">= 14"],"node:fs/promises":[">= 14.18 && < 15",">= 16"],"_http_agent":">= 0.11.1","node:_http_agent":[">= 14.18 && < 15",">= 16"],"_http_client":">= 0.11.1","node:_http_client":[">= 14.18 && < 15",">= 16"],"_http_common":">= 0.11.1","node:_http_common":[">= 14.18 && < 15",">= 16"],"_http_incoming":">= 0.11.1","node:_http_incoming":[">= 14.18 && < 15",">= 16"],"_http_outgoing":">= 0.11.1","node:_http_outgoing":[">= 14.18 && < 15",">= 16"],"_http_server":">= 0.11.1","node:_http_server":[">= 14.18 && < 15",">= 16"],"http":true,"node:http":[">= 14.18 && < 15",">= 16"],"http2":">= 8.8","node:http2":[">= 14.18 && < 15",">= 16"],"https":true,"node:https":[">= 14.18 && < 15",">= 16"],"inspector":">= 8","node:inspector":[">= 14.18 && < 15",">= 16"],"inspector/promises":[">= 19"],"node:inspector/promises":[">= 19"],"_linklist":"< 8","module":true,"node:module":[">= 14.18 && < 15",">= 16"],"net":true,"node:net":[">= 14.18 && < 15",">= 16"],"node-inspect/lib/_inspect":">= 7.6 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6 && < 12","os":true,"node:os":[">= 14.18 && < 15",">= 16"],"path":true,"node:path":[">= 14.18 && < 15",">= 16"],"path/posix":">= 15.3","node:path/posix":">= 16","path/win32":">= 15.3","node:path/win32":">= 16","perf_hooks":">= 8.5","node:perf_hooks":[">= 14.18 && < 15",">= 16"],"process":">= 1","node:process":[">= 14.18 && < 15",">= 16"],"punycode":">= 0.5","node:punycode":[">= 14.18 && < 15",">= 16"],"querystring":true,"node:querystring":[">= 14.18 && < 15",">= 16"],"readline":true,"node:readline":[">= 14.18 && < 15",">= 16"],"readline/promises":">= 17","node:readline/promises":">= 17","repl":true,"node:repl":[">= 14.18 && < 15",">= 16"],"node:sea":[">= 20.12 && < 21",">= 21.7"],"smalloc":">= 0.11.5 && < 3","node:sqlite":">= 23.4","_stream_duplex":">= 0.9.4","node:_stream_duplex":[">= 14.18 && < 15",">= 16"],"_stream_transform":">= 0.9.4","node:_stream_transform":[">= 14.18 && < 15",">= 16"],"_stream_wrap":">= 1.4.1","node:_stream_wrap":[">= 14.18 && < 15",">= 16"],"_stream_passthrough":">= 0.9.4","node:_stream_passthrough":[">= 14.18 && < 15",">= 16"],"_stream_readable":">= 0.9.4","node:_stream_readable":[">= 14.18 && < 15",">= 16"],"_stream_writable":">= 0.9.4","node:_stream_writable":[">= 14.18 && < 15",">= 16"],"stream":true,"node:stream":[">= 14.18 && < 15",">= 16"],"stream/consumers":">= 16.7","node:stream/consumers":">= 16.7","stream/promises":">= 15","node:stream/promises":">= 16","stream/web":">= 16.5","node:stream/web":">= 16.5","string_decoder":true,"node:string_decoder":[">= 14.18 && < 15",">= 16"],"sys":[">= 0.4 && < 0.7",">= 0.8"],"node:sys":[">= 14.18 && < 15",">= 16"],"test/reporters":">= 19.9 && < 20.2","node:test/reporters":[">= 18.17 && < 19",">= 19.9",">= 20"],"test/mock_loader":">= 22.3 && < 22.7","node:test/mock_loader":">= 22.3 && < 22.7","node:test":[">= 16.17 && < 17",">= 18"],"timers":true,"node:timers":[">= 14.18 && < 15",">= 16"],"timers/promises":">= 15","node:timers/promises":">= 16","_tls_common":">= 0.11.13","node:_tls_common":[">= 14.18 && < 15",">= 16"],"_tls_legacy":">= 0.11.3 && < 10","_tls_wrap":">= 0.11.3","node:_tls_wrap":[">= 14.18 && < 15",">= 16"],"tls":true,"node:tls":[">= 14.18 && < 15",">= 16"],"trace_events":">= 10","node:trace_events":[">= 14.18 && < 15",">= 16"],"tty":true,"node:tty":[">= 14.18 && < 15",">= 16"],"url":true,"node:url":[">= 14.18 && < 15",">= 16"],"util":true,"node:util":[">= 14.18 && < 15",">= 16"],"util/types":">= 15.3","node:util/types":">= 16","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/consarray":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/csvparser":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/logreader":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/profile_view":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/splaytree":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8":">= 1","node:v8":[">= 14.18 && < 15",">= 16"],"vm":true,"node:vm":[">= 14.18 && < 15",">= 16"],"wasi":[">= 13.4 && < 13.5",">= 18.17 && < 19",">= 20"],"node:wasi":[">= 18.17 && < 19",">= 20"],"worker_threads":">= 11.7","node:worker_threads":[">= 14.18 && < 15",">= 16"],"zlib":">= 0.5","node:zlib":[">= 14.18 && < 15",">= 16"]}'); - /** - * In member name. - * - * ```markdown - * > | a <b.cd> e - * ^ - * ``` - * - * @type {State} - */ - function memberName(code) { - // Continuation of name: remain. - if (code !== null && code >= 0 && cont(code, { - jsx: true - })) { - effects.consume(code); - return memberName; - } +/***/ }), - // End of name. - // Note: no `:` allowed here. - if (code === 46 || code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { - effects.exit(tagNameMemberType); - returnState = memberNameAfter; - return esWhitespaceStart(code); - } - crash(code, 'in member name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag' + (code === 64 ? ' (note: to create a link in MDX, use `[text](url)`)' : '')); - } +/***/ 50408: +/***/ ((module) => { - /** - * After member name. - * - * ```markdown - * > | a <b.c> d - * ^ - * > | a <b.c.d> e - * ^ - * ``` - * - * @type {State} - */ - function memberNameAfter(code) { - // Start another member name. - if (code === 46) { - effects.enter(tagNameMemberMarkerType); - effects.consume(code); - effects.exit(tagNameMemberMarkerType); - returnState = memberNameBefore; - return esWhitespaceStart; - } +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('["cent","copy","divide","gt","lt","not","para","times"]'); - // End of name. - if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { - effects.exit(tagNameType); - return attributeBefore(code); - } - crash(code, 'after member name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); - } +/***/ }) - /** - * Local member name. - * - * ```markdown - * > | a <b:c> d - * ^ - * ``` - * - * @type {State} - */ - function localNameBefore(code) { - // Start of a local name. - if (code !== null && code >= 0 && lib_start(code)) { - effects.enter(tagNameLocalType); - effects.consume(code); - return localName; - } - crash(code, 'before local name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 43 || code !== null && code > 46 && code < 58 /* `/` - `9` */ ? ' (note: to create a link in MDX, use `[text](url)`)' : '')); - } +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __nccwpck_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __nccwpck_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __nccwpck_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/node module decorator */ +/******/ (() => { +/******/ __nccwpck_require__.nmd = (module) => { +/******/ module.paths = []; +/******/ if (!module.children) module.children = []; +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; - /** - * In local name. - * - * ```markdown - * > | a <b:cd> e - * ^ - * ``` - * - * @type {State} - */ - function localName(code) { - // Continuation of name: remain. - if (code !== null && code >= 0 && cont(code, { - jsx: true - })) { - effects.consume(code); - return localName; - } +// EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js +var core = __nccwpck_require__(37484); +// EXTERNAL MODULE: external "fs" +var external_fs_ = __nccwpck_require__(79896); +// EXTERNAL MODULE: external "path" +var external_path_ = __nccwpck_require__(16928); +// EXTERNAL MODULE: ./node_modules/klaw-sync/klaw-sync.js +var klaw_sync = __nccwpck_require__(71628); +var klaw_sync_default = /*#__PURE__*/__nccwpck_require__.n(klaw_sync); +// EXTERNAL MODULE: ./node_modules/gray-matter/index.js +var gray_matter = __nccwpck_require__(19599); +var gray_matter_default = /*#__PURE__*/__nccwpck_require__.n(gray_matter); +// EXTERNAL MODULE: ./node_modules/remark/index.js +var remark = __nccwpck_require__(11112); +var remark_default = /*#__PURE__*/__nccwpck_require__.n(remark); +// EXTERNAL MODULE: ./node_modules/remark-mdx/index.js +var remark_mdx = __nccwpck_require__(47926); +var remark_mdx_default = /*#__PURE__*/__nccwpck_require__.n(remark_mdx); +// EXTERNAL MODULE: external "assert" +var external_assert_ = __nccwpck_require__(42613); +;// CONCATENATED MODULE: ./node_modules/unist-util-is/lib/index.js +/** + * @typedef {import('unist').Node} Node + * @typedef {import('unist').Parent} Parent + */ - // End of local name (note that we don’t expect another colon, or a member). - if (code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { - effects.exit(tagNameLocalType); - returnState = localNameAfter; - return esWhitespaceStart(code); - } - crash(code, 'in local name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag'); - } +/** + * @template Fn + * @template Fallback + * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate + */ - /** - * After local name. - * - * This is like as `primary_name_after`, but we don’t expect colons or - * periods. - * - * ```markdown - * > | a <b.c> d - * ^ - * > | a <b.c.d> e - * ^ - * ``` - * - * @type {State} - */ - function localNameAfter(code) { - // End of name. - if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { - effects.exit(tagNameType); - return attributeBefore(code); - } - crash(code, 'after local name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); - } +/** + * @callback Check + * Check that an arbitrary value is a node. + * @param {unknown} this + * The given context. + * @param {unknown} [node] + * Anything (typically a node). + * @param {number | null | undefined} [index] + * The node’s position in its parent. + * @param {Parent | null | undefined} [parent] + * The node’s parent. + * @returns {boolean} + * Whether this is a node and passes a test. + * + * @typedef {Record<string, unknown> | Node} Props + * Object to check for equivalence. + * + * Note: `Node` is included as it is common but is not indexable. + * + * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test + * Check for an arbitrary node. + * + * @callback TestFunction + * Check if a node passes a test. + * @param {unknown} this + * The given context. + * @param {Node} node + * A node. + * @param {number | undefined} [index] + * The node’s position in its parent. + * @param {Parent | undefined} [parent] + * The node’s parent. + * @returns {boolean | undefined | void} + * Whether this node passes the test. + * + * Note: `void` is included until TS sees no return as `undefined`. + */ +/** + * Check if `node` is a `Node` and whether it passes the given test. + * + * @param {unknown} node + * Thing to check, typically `Node`. + * @param {Test} test + * A check for a specific node. + * @param {number | null | undefined} index + * The node’s position in its parent. + * @param {Parent | null | undefined} parent + * The node’s parent. + * @param {unknown} context + * Context object (`this`) to pass to `test` functions. + * @returns {boolean} + * Whether `node` is a node and passes a test. + */ +const is = + // Note: overloads in JSDoc can’t yet use different `@template`s. /** - * Before attribute. - * - * ```markdown - * > | a <b /> c - * ^ - * > | a <b > c - * ^ - * > | a <b {...c}> d - * ^ - * > | a <b c> d - * ^ - * ``` - * - * @type {State} + * @type {( + * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & + * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & + * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) & + * ((node?: null | undefined) => false) & + * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & + * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean) + * )} */ - function attributeBefore(code) { - // Self-closing. - if (code === 47) { - effects.enter(tagSelfClosingMarker); - effects.consume(code); - effects.exit(tagSelfClosingMarker); - returnState = selfClosing; - return esWhitespaceStart; - } + ( + /** + * @param {unknown} [node] + * @param {Test} [test] + * @param {number | null | undefined} [index] + * @param {Parent | null | undefined} [parent] + * @param {unknown} [context] + * @returns {boolean} + */ + // eslint-disable-next-line max-params + function (node, test, index, parent, context) { + const check = convert(test) - // End of tag. - if (code === 62) { - return tagEnd(code); - } + if ( + index !== undefined && + index !== null && + (typeof index !== 'number' || + index < 0 || + index === Number.POSITIVE_INFINITY) + ) { + throw new Error('Expected positive finite index') + } - // Attribute expression. - if (code === 123) { - return factoryMdxExpression.call(self, effects, attributeExpressionAfter, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, acorn, acornOptions, addResult, true, false, allowLazy)(code); - } + if ( + parent !== undefined && + parent !== null && + (!is(parent) || !parent.children) + ) { + throw new Error('Expected parent node') + } - // Start of an attribute name. - if (code !== null && code >= 0 && lib_start(code)) { - effects.enter(tagAttributeType); - effects.enter(tagAttributeNameType); - effects.enter(tagAttributeNamePrimaryType); - effects.consume(code); - return attributePrimaryName; + if ( + (parent === undefined || parent === null) !== + (index === undefined || index === null) + ) { + throw new Error('Expected both parent and index') + } + + return looksLikeANode(node) + ? check.call(context, node, index, parent) + : false } - crash(code, 'before attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag'); - } + ) +/** + * Generate an assertion from a test. + * + * Useful if you’re going to test many nodes, for example when creating a + * utility where something else passes a compatible test. + * + * The created function is a bit faster because it expects valid input only: + * a `node`, `index`, and `parent`. + * + * @param {Test} test + * * when nullish, checks if `node` is a `Node`. + * * when `string`, works like passing `(node) => node.type === test`. + * * when `function` checks if function passed the node is true. + * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values. + * * when `array`, checks if any one of the subtests pass. + * @returns {Check} + * An assertion. + */ +const convert = + // Note: overloads in JSDoc can’t yet use different `@template`s. /** - * After attribute expression. - * - * ```markdown - * > | a <b {c} d/> e - * ^ - * ``` - * - * @type {State} + * @type {( + * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) & + * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) & + * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) & + * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) & + * ((test?: Test) => Check) + * )} */ - function attributeExpressionAfter(code) { - returnState = attributeBefore; - return esWhitespaceStart(code); - } + ( + /** + * @param {Test} [test] + * @returns {Check} + */ + function (test) { + if (test === null || test === undefined) { + return ok + } - /** - * In primary attribute name. - * - * ```markdown - * > | a <b cd/> e - * ^ - * > | a <b c:d> e - * ^ - * > | a <b c=d> e - * ^ - * ``` - * - * @type {State} - */ - function attributePrimaryName(code) { - // Continuation of name: remain. - if (code !== null && code >= 0 && cont(code, { - jsx: true - })) { - effects.consume(code); - return attributePrimaryName; - } + if (typeof test === 'function') { + return castFactory(test) + } + + if (typeof test === 'object') { + return Array.isArray(test) ? anyFactory(test) : propsFactory(test) + } - // End of attribute name or tag. - if (code === 47 || code === 58 || code === 61 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { - effects.exit(tagAttributeNamePrimaryType); - returnState = attributePrimaryNameAfter; - return esWhitespaceStart(code); - } - crash(code, 'in attribute name', 'an attribute name character such as letters, digits, `$`, or `_`; `=` to initialize a value; whitespace before attributes; or the end of the tag'); - } + if (typeof test === 'string') { + return typeFactory(test) + } - /** - * After primary attribute name. - * - * ```markdown - * > | a <b c/> d - * ^ - * > | a <b c:d> e - * ^ - * > | a <b c=d> e - * ^ - * ``` - * - * @type {State} - */ - function attributePrimaryNameAfter(code) { - // Start of a local name. - if (code === 58) { - effects.enter(tagAttributeNamePrefixMarkerType); - effects.consume(code); - effects.exit(tagAttributeNamePrefixMarkerType); - returnState = attributeLocalNameBefore; - return esWhitespaceStart; + throw new Error('Expected function, string, or object as test') } + ) - // Initializer: start of an attribute value. - if (code === 61) { - effects.exit(tagAttributeNameType); - effects.enter(tagAttributeInitializerMarkerType); - effects.consume(code); - effects.exit(tagAttributeInitializerMarkerType); - returnState = attributeValueBefore; - return esWhitespaceStart; - } +/** + * @param {Array<Props | TestFunction | string>} tests + * @returns {Check} + */ +function anyFactory(tests) { + /** @type {Array<Check>} */ + const checks = [] + let index = -1 - // End of tag / new attribute. - if (code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== null && code >= 0 && lib_start(code)) { - effects.exit(tagAttributeNameType); - effects.exit(tagAttributeType); - returnState = attributeBefore; - return esWhitespaceStart(code); - } - crash(code, 'after attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag'); + while (++index < tests.length) { + checks[index] = convert(tests[index]) } - /** - * Before local attribute name. - * - * ```markdown - * > | a <b c:d/> e - * ^ - * ``` - * - * @type {State} - */ - function attributeLocalNameBefore(code) { - // Start of a local name. - if (code !== null && code >= 0 && lib_start(code)) { - effects.enter(tagAttributeNameLocalType); - effects.consume(code); - return attributeLocalName; - } - crash(code, 'before local attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag'); - } + return castFactory(any) /** - * In local attribute name. - * - * ```markdown - * > | a <b c:de/> f - * ^ - * > | a <b c:d=e/> f - * ^ - * ``` - * - * @type {State} + * @this {unknown} + * @type {TestFunction} */ - function attributeLocalName(code) { - // Continuation of name: remain. - if (code !== null && code >= 0 && cont(code, { - jsx: true - })) { - effects.consume(code); - return attributeLocalName; - } - - // End of local name (note that we don’t expect another colon). - if (code === 47 || code === 61 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) { - effects.exit(tagAttributeNameLocalType); - effects.exit(tagAttributeNameType); - returnState = attributeLocalNameAfter; - return esWhitespaceStart(code); - } - crash(code, 'in local attribute name', 'an attribute name character such as letters, digits, `$`, or `_`; `=` to initialize a value; whitespace before attributes; or the end of the tag'); - } + function any(...parameters) { + let index = -1 - /** - * After local attribute name. - * - * ```markdown - * > | a <b c:d/> f - * ^ - * > | a <b c:d=e/> f - * ^ - * ``` - * - * @type {State} - */ - function attributeLocalNameAfter(code) { - // Start of an attribute value. - if (code === 61) { - effects.enter(tagAttributeInitializerMarkerType); - effects.consume(code); - effects.exit(tagAttributeInitializerMarkerType); - returnState = attributeValueBefore; - return esWhitespaceStart; + while (++index < checks.length) { + if (checks[index].apply(this, parameters)) return true } - // End of name. - if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) { - effects.exit(tagAttributeType); - return attributeBefore(code); - } - crash(code, 'after local attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag'); + return false } +} - /** - * After `=`, before value. - * - * ```markdown - * > | a <b c="d"/> e - * ^ - * > | a <b c={d}/> e - * ^ - * ``` - * - * @type {State} - */ - function attributeValueBefore(code) { - // Start of double- or single quoted value. - if (code === 34 || code === 39) { - effects.enter(tagAttributeValueLiteralType); - effects.enter(tagAttributeValueLiteralMarkerType); - effects.consume(code); - effects.exit(tagAttributeValueLiteralMarkerType); - marker = code; - return attributeValueQuotedStart; - } +/** + * Turn an object into a test for a node with a certain fields. + * + * @param {Props} check + * @returns {Check} + */ +function propsFactory(check) { + const checkAsRecord = /** @type {Record<string, unknown>} */ (check) - // Attribute value expression. - if (code === 123) { - return factoryMdxExpression.call(self, effects, attributeValueExpressionAfter, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType, acorn, acornOptions, addResult, false, false, allowLazy)(code); - } - crash(code, 'before attribute value', 'a character that can start an attribute value, such as `"`, `\'`, or `{`' + (code === 60 ? ' (note: to use an element or fragment as a prop value in MDX, use `{<element />}`)' : '')); - } + return castFactory(all) /** - * After attribute value expression. - * - * ```markdown - * > | a <b c={d} e/> f - * ^ - * ``` - * - * @type {State} + * @param {Node} node + * @returns {boolean} */ - function attributeValueExpressionAfter(code) { - effects.exit(tagAttributeType); - returnState = attributeBefore; - return esWhitespaceStart(code); - } + function all(node) { + const nodeAsRecord = /** @type {Record<string, unknown>} */ ( + /** @type {unknown} */ (node) + ) - /** - * Before quoted literal attribute value. - * - * ```markdown - * > | a <b c="d"/> e - * ^ - * ``` - * - * @type {State} - */ - function attributeValueQuotedStart(code) { - if (code === null) { - crash(code, 'in attribute value', 'a corresponding closing quote `' + String.fromCodePoint(marker) + '`'); - } - if (code === marker) { - effects.enter(tagAttributeValueLiteralMarkerType); - effects.consume(code); - effects.exit(tagAttributeValueLiteralMarkerType); - effects.exit(tagAttributeValueLiteralType); - effects.exit(tagAttributeType); - marker = undefined; - returnState = attributeBefore; - return esWhitespaceStart; - } - if (markdownLineEnding(code)) { - returnState = attributeValueQuotedStart; - return esWhitespaceStart(code); - } - effects.enter(tagAttributeValueLiteralValueType); - return attributeValueQuoted(code); - } + /** @type {string} */ + let key - /** - * In quoted literal attribute value. - * - * ```markdown - * > | a <b c="d"/> e - * ^ - * ``` - * - * @type {State} - */ - function attributeValueQuoted(code) { - if (code === null || code === marker || markdownLineEnding(code)) { - effects.exit(tagAttributeValueLiteralValueType); - return attributeValueQuotedStart(code); + for (key in check) { + if (nodeAsRecord[key] !== checkAsRecord[key]) return false } - effects.consume(code); - return attributeValueQuoted; - } - /** - * After self-closing slash. - * - * ```markdown - * > | a <b/> c - * ^ - * ``` - * - * @type {State} - */ - function selfClosing(code) { - if (code === 62) { - return tagEnd(code); - } - crash(code, 'after self-closing slash', '`>` to end the tag' + (code === 42 || code === 47 ? ' (note: JS comments in JSX tags are not supported in MDX)' : '')); + return true } +} - /** - * At final `>`. - * - * ```markdown - * > | a <b> c - * ^ - * ``` - * - * @type {State} - */ - function tagEnd(code) { - effects.enter(tagMarkerType); - effects.consume(code); - effects.exit(tagMarkerType); - effects.exit(tagType); - return ok; - } +/** + * Turn a string into a test for a node with a certain type. + * + * @param {string} check + * @returns {Check} + */ +function typeFactory(check) { + return castFactory(type) /** - * Before optional ECMAScript whitespace. - * - * ```markdown - * > | a <a b> c - * ^ - * ``` - * - * @type {State} + * @param {Node} node */ - function esWhitespaceStart(code) { - if (markdownLineEnding(code)) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return esWhitespaceEolAfter; - } - if (markdownSpace(code) || unicodeWhitespace(code)) { - effects.enter('esWhitespace'); - return esWhitespaceInside(code); - } - return returnState(code); + function type(node) { + return node && node.type === check } +} - /** - * In ECMAScript whitespace. - * - * ```markdown - * > | a <a b> c - * ^ - * ``` - * - * @type {State} - */ - function esWhitespaceInside(code) { - if (markdownLineEnding(code)) { - effects.exit('esWhitespace'); - return esWhitespaceStart(code); - } - if (markdownSpace(code) || unicodeWhitespace(code)) { - effects.consume(code); - return esWhitespaceInside; - } - effects.exit('esWhitespace'); - return returnState(code); - } +/** + * Turn a custom test into a test for a node that passes that test. + * + * @param {TestFunction} testFunction + * @returns {Check} + */ +function castFactory(testFunction) { + return check /** - * After eol in whitespace. - * - * ```markdown - * > | a <a\nb> c - * ^ - * ``` - * - * @type {State} + * @this {unknown} + * @type {Check} */ - function esWhitespaceEolAfter(code) { - // Lazy continuation in a flow tag is a syntax error. - if (!allowLazy && self.parser.lazy[self.now().line]) { - const error = new VFileMessage('Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc', self.now(), 'micromark-extension-mdx-jsx:unexpected-lazy'); - error.url = factory_tag_trouble + '#unexpected-lazy-line-in-container-expected-line-to-be'; - throw error; - } - return esWhitespaceStart(code); + function check(value, index, parent) { + return Boolean( + looksLikeANode(value) && + testFunction.call( + this, + value, + typeof index === 'number' ? index : undefined, + parent || undefined + ) + ) } +} - /** - * Crash at a nonconforming character. - * - * @param {Code} code - * @param {string} at - * @param {string} expect - */ - function crash(code, at, expect) { - const error = new VFileMessage('Unexpected ' + (code === null ? 'end of file' : 'character `' + (code === 96 ? '` ` `' : String.fromCodePoint(code)) + '` (' + serializeCharCode(code) + ')') + ' ' + at + ', expected ' + expect, self.now(), 'micromark-extension-mdx-jsx:unexpected-' + (code === null ? 'eof' : 'character')); - error.url = factory_tag_trouble + (code === null ? '#unexpected-end-of-file-at-expected-expect' : '#unexpected-character-at-expected-expect'); - throw error; - } +function ok() { + return true +} + +/** + * @param {unknown} value + * @returns {value is Node} + */ +function looksLikeANode(value) { + return value !== null && typeof value === 'object' && 'type' in value } +;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/color.node.js /** - * @param {NonNullable<Code>} code + * @param {string} d * @returns {string} */ -function serializeCharCode(code) { - return 'U+' + code.toString(16).toUpperCase().padStart(4, '0'); +function color(d) { + return '\u001B[33m' + d + '\u001B[39m' } -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/jsx-text.js + +;// CONCATENATED MODULE: ./node_modules/unist-util-visit-parents/lib/index.js +/** + * @typedef {import('unist').Node} UnistNode + * @typedef {import('unist').Parent} UnistParent + */ + +/** + * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test + * Test from `unist-util-is`. + * + * Note: we have remove and add `undefined`, because otherwise when generating + * automatic `.d.ts` files, TS tries to flatten paths from a local perspective, + * which doesn’t work when publishing on npm. + */ + +/** + * @typedef {( + * Fn extends (value: any) => value is infer Thing + * ? Thing + * : Fallback + * )} Predicate + * Get the value of a type guard `Fn`. + * @template Fn + * Value; typically function that is a type guard (such as `(x): x is Y`). + * @template Fallback + * Value to yield if `Fn` is not a type guard. + */ + +/** + * @typedef {( + * Check extends null | undefined // No test. + * ? Value + * : Value extends {type: Check} // String (type) test. + * ? Value + * : Value extends Check // Partial test. + * ? Value + * : Check extends Function // Function test. + * ? Predicate<Check, Value> extends Value + * ? Predicate<Check, Value> + * : never + * : never // Some other test? + * )} MatchesOne + * Check whether a node matches a primitive check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test, but not arrays. + */ + +/** + * @typedef {( + * Check extends Array<any> + * ? MatchesOne<Value, Check[keyof Check]> + * : MatchesOne<Value, Check> + * )} Matches + * Check whether a node matches a check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test. + */ + +/** + * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint + * Number; capped reasonably. + */ + +/** + * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment + * Increment a number in the type system. + * @template {Uint} [I=0] + * Index. + */ + +/** + * @typedef {( + * Node extends UnistParent + * ? Node extends {children: Array<infer Children>} + * ? Child extends Children ? Node : never + * : never + * : never + * )} InternalParent + * Collect nodes that can be parents of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ + /** - * @import {Options} from 'micromark-extension-mdx-jsx' - * @import {Acorn} from 'micromark-util-events-to-acorn' - * @import {Construct, TokenizeContext, Tokenizer} from 'micromark-util-types' + * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent + * Collect nodes in `Tree` that can be parents of `Child`. + * @template {UnistNode} Tree + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. */ +/** + * @typedef {( + * Depth extends Max + * ? never + * : + * | InternalParent<Node, Child> + * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>> + * )} InternalAncestor + * Collect nodes in `Tree` that can be ancestors of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. + */ +/** + * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor + * Collect nodes in `Tree` that can be ancestors of `Child`. + * @template {UnistNode} Tree + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ /** - * Parse JSX (text). + * @typedef {( + * Tree extends UnistParent + * ? Depth extends Max + * ? Tree + * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>> + * : Tree + * )} InclusiveDescendant + * Collect all (inclusive) descendants of `Tree`. * - * @param {Acorn | undefined} acorn - * Acorn parser to use (optional). - * @param {Options} options - * Configuration. - * @returns {Construct} - * Construct. + * > 👉 **Note**: for performance reasons, this seems to be the fastest way to + * > recurse without actually running into an infinite loop, which the + * > previous version did. + * > + * > Practically, a max of `2` is typically enough assuming a `Root` is + * > passed, but it doesn’t improve performance. + * > It gets higher with `List > ListItem > Table > TableRow > TableCell`. + * > Using up to `10` doesn’t hurt or help either. + * @template {UnistNode} Tree + * Tree type. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. */ -function jsxText(acorn, options) { - return { - name: 'mdxJsxTextTag', - tokenize: tokenizeJsxText - }; - /** - * MDX JSX (text). - * - * ```markdown - * > | a <b />. - * ^^^^^ - * ``` - * - * @this {TokenizeContext} - * @type {Tokenizer} - */ - function tokenizeJsxText(effects, ok, nok) { - return factoryTag.call(this, effects, ok, nok, acorn, options.acornOptions, options.addResult, true, 'mdxJsxTextTag', 'mdxJsxTextTagMarker', 'mdxJsxTextTagClosingMarker', 'mdxJsxTextTagSelfClosingMarker', 'mdxJsxTextTagName', 'mdxJsxTextTagNamePrimary', 'mdxJsxTextTagNameMemberMarker', 'mdxJsxTextTagNameMember', 'mdxJsxTextTagNamePrefixMarker', 'mdxJsxTextTagNameLocal', 'mdxJsxTextTagExpressionAttribute', 'mdxJsxTextTagExpressionAttributeMarker', 'mdxJsxTextTagExpressionAttributeValue', 'mdxJsxTextTagAttribute', 'mdxJsxTextTagAttributeName', 'mdxJsxTextTagAttributeNamePrimary', 'mdxJsxTextTagAttributeNamePrefixMarker', 'mdxJsxTextTagAttributeNameLocal', 'mdxJsxTextTagAttributeInitializerMarker', 'mdxJsxTextTagAttributeValueLiteral', 'mdxJsxTextTagAttributeValueLiteralMarker', 'mdxJsxTextTagAttributeValueLiteralValue', 'mdxJsxTextTagAttributeValueExpression', 'mdxJsxTextTagAttributeValueExpressionMarker', 'mdxJsxTextTagAttributeValueExpressionValue'); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/jsx-flow.js /** - * @import {Options} from 'micromark-extension-mdx-jsx' - * @import {Acorn} from 'micromark-util-events-to-acorn' - * @import {Construct, State, TokenizeContext, Tokenizer} from 'micromark-util-types' + * @typedef {'skip' | boolean} Action + * Union of the action types. + * + * @typedef {number} Index + * Move to the sibling at `index` next (after node itself is completely + * traversed). + * + * Useful if mutating the tree, such as removing the node the visitor is + * currently on, or any of its previous siblings. + * Results less than 0 or greater than or equal to `children.length` stop + * traversing the parent. + * + * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple + * List with one or two values, the first an action, the second an index. + * + * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult + * Any value that can be returned from a visitor. + */ + +/** + * @callback Visitor + * Handle a node (matching `test`, if given). + * + * Visitors are free to transform `node`. + * They can also transform the parent of node (the last of `ancestors`). + * + * Replacing `node` itself, if `SKIP` is not returned, still causes its + * descendants to be walked (which is a bug). + * + * When adding or removing previous siblings of `node` (or next siblings, in + * case of reverse), the `Visitor` should return a new `Index` to specify the + * sibling to traverse after `node` is traversed. + * Adding or removing next siblings of `node` (or previous siblings, in case + * of reverse) is handled as expected without needing to return a new `Index`. + * + * Removing the children property of an ancestor still results in them being + * traversed. + * @param {Visited} node + * Found node. + * @param {Array<VisitedParents>} ancestors + * Ancestors of `node`. + * @returns {VisitorResult} + * What to do next. + * + * An `Index` is treated as a tuple of `[CONTINUE, Index]`. + * An `Action` is treated as a tuple of `[Action]`. + * + * Passing a tuple back only makes sense if the `Action` is `SKIP`. + * When the `Action` is `EXIT`, that action can be returned. + * When the `Action` is `CONTINUE`, `Index` can be returned. + * @template {UnistNode} [Visited=UnistNode] + * Visited node type. + * @template {UnistParent} [VisitedParents=UnistParent] + * Ancestor type. + */ + +/** + * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor + * Build a typed `Visitor` function from a tree and a test. + * + * It will infer which values are passed as `node` and which as `parents`. + * @template {UnistNode} [Tree=UnistNode] + * Tree type. + * @template {Test} [Check=Test] + * Test type. + */ + + + + +/** @type {Readonly<ActionTuple>} */ +const empty = [] + +/** + * Continue traversing as normal. + */ +const CONTINUE = true + +/** + * Stop traversing immediately. + */ +const EXIT = false + +/** + * Do not traverse this node’s children. + */ +const SKIP = 'skip' + +/** + * Visit nodes, with ancestral information. + * + * This algorithm performs *depth-first* *tree traversal* in *preorder* + * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**). + * + * You can choose for which nodes `visitor` is called by passing a `test`. + * For complex tests, you should test yourself in `visitor`, as it will be + * faster and will have improved type information. + * + * Walking the tree is an intensive task. + * Make use of the return values of the visitor when possible. + * Instead of walking a tree multiple times, walk it once, use `unist-util-is` + * to check if a node matches, and then perform different operations. + * + * You can change the tree. + * See `Visitor` for more info. + * + * @overload + * @param {Tree} tree + * @param {Check} check + * @param {BuildVisitor<Tree, Check>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @overload + * @param {Tree} tree + * @param {BuildVisitor<Tree>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @param {UnistNode} tree + * Tree to traverse. + * @param {Visitor | Test} test + * `unist-util-is`-compatible test + * @param {Visitor | boolean | null | undefined} [visitor] + * Handle each node. + * @param {boolean | null | undefined} [reverse] + * Traverse in reverse preorder (NRL) instead of the default preorder (NLR). + * @returns {undefined} + * Nothing. + * + * @template {UnistNode} Tree + * Node type. + * @template {Test} Check + * `unist-util-is`-compatible test. */ +function visitParents(tree, test, visitor, reverse) { + /** @type {Test} */ + let check + + if (typeof test === 'function' && typeof visitor !== 'function') { + reverse = visitor + // @ts-expect-error no visitor given, so `visitor` is test. + visitor = test + } else { + // @ts-expect-error visitor given, so `test` isn’t a visitor. + check = test + } + + const is = convert(check) + const step = reverse ? -1 : 1 + + factory(tree, undefined, [])() + + /** + * @param {UnistNode} node + * @param {number | undefined} index + * @param {Array<UnistParent>} parents + */ + function factory(node, index, parents) { + const value = /** @type {Record<string, unknown>} */ ( + node && typeof node === 'object' ? node : {} + ) + + if (typeof value.type === 'string') { + const name = + // `hast` + typeof value.tagName === 'string' + ? value.tagName + : // `xast` + typeof value.name === 'string' + ? value.name + : undefined + Object.defineProperty(visit, 'name', { + value: + 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')' + }) + } + return visit + function visit() { + /** @type {Readonly<ActionTuple>} */ + let result = empty + /** @type {Readonly<ActionTuple>} */ + let subresult + /** @type {number} */ + let offset + /** @type {Array<UnistParent>} */ + let grandparents + if (!test || is(node, index, parents[parents.length - 1] || undefined)) { + // @ts-expect-error: `visitor` is now a visitor. + result = toResult(visitor(node, parents)) -/** - * Parse JSX (flow). - * - * @param {Acorn | undefined} acorn - * Acorn parser to use (optional). - * @param {Options} options - * Configuration. - * @returns {Construct} - * Construct. - */ -function jsxFlow(acorn, options) { - return { - concrete: true, - name: 'mdxJsxFlowTag', - tokenize: tokenizeJsxFlow - }; + if (result[0] === EXIT) { + return result + } + } - /** - * MDX JSX (flow). - * - * ```markdown - * > | <A /> - * ^^^^^ - * ``` - * - * @this {TokenizeContext} - * @type {Tokenizer} - */ - function tokenizeJsxFlow(effects, ok, nok) { - const self = this; - return start; + if ('children' in node && node.children) { + const nodeAsParent = /** @type {UnistParent} */ (node) - /** - * Start of MDX: JSX (flow). - * - * ```markdown - * > | <A /> - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // To do: in `markdown-rs`, constructs need to parse the indent themselves. - // This should also be introduced in `micromark-js`. + if (nodeAsParent.children && result[0] !== SKIP) { + offset = (reverse ? nodeAsParent.children.length : -1) + step + grandparents = parents.concat(nodeAsParent) - return before(code); - } + while (offset > -1 && offset < nodeAsParent.children.length) { + const child = nodeAsParent.children[offset] - /** - * After optional whitespace, before of MDX JSX (flow). - * - * ```markdown - * > | <A /> - * ^ - * ``` - * - * @type {State} - */ - function before(code) { - return factoryTag.call(self, effects, after, nok, acorn, options.acornOptions, options.addResult, false, 'mdxJsxFlowTag', 'mdxJsxFlowTagMarker', 'mdxJsxFlowTagClosingMarker', 'mdxJsxFlowTagSelfClosingMarker', 'mdxJsxFlowTagName', 'mdxJsxFlowTagNamePrimary', 'mdxJsxFlowTagNameMemberMarker', 'mdxJsxFlowTagNameMember', 'mdxJsxFlowTagNamePrefixMarker', 'mdxJsxFlowTagNameLocal', 'mdxJsxFlowTagExpressionAttribute', 'mdxJsxFlowTagExpressionAttributeMarker', 'mdxJsxFlowTagExpressionAttributeValue', 'mdxJsxFlowTagAttribute', 'mdxJsxFlowTagAttributeName', 'mdxJsxFlowTagAttributeNamePrimary', 'mdxJsxFlowTagAttributeNamePrefixMarker', 'mdxJsxFlowTagAttributeNameLocal', 'mdxJsxFlowTagAttributeInitializerMarker', 'mdxJsxFlowTagAttributeValueLiteral', 'mdxJsxFlowTagAttributeValueLiteralMarker', 'mdxJsxFlowTagAttributeValueLiteralValue', 'mdxJsxFlowTagAttributeValueExpression', 'mdxJsxFlowTagAttributeValueExpressionMarker', 'mdxJsxFlowTagAttributeValueExpressionValue')(code); - } + subresult = factory(child, offset, grandparents)() - /** - * After an MDX JSX (flow) tag. - * - * ```markdown - * > | <A> - * ^ - * ``` - * - * @type {State} - */ - function after(code) { - return markdownSpace(code) ? factorySpace(effects, end, "whitespace")(code) : end(code); - } + if (subresult[0] === EXIT) { + return subresult + } - /** - * After an MDX JSX (flow) tag, after optional whitespace. - * - * ```markdown - * > | <A> <B> - * ^ - * ``` - * - * @type {State} - */ - function end(code) { - // We want to allow expressions directly after tags. - // See <https://github.com/micromark/micromark-extension-mdx-expression/blob/d5d92b9/packages/micromark-extension-mdx-expression/dev/lib/syntax.js#L183> - // for more info. - const leftBraceValue = self.parser.constructs.flow[123]; - /* c8 ignore next 5 -- always a list when normalized. */ - const constructs = Array.isArray(leftBraceValue) ? leftBraceValue : leftBraceValue ? [leftBraceValue] : []; - /** @type {Construct | undefined} */ - let expression; - for (const construct of constructs) { - if (construct.name === 'mdxFlowExpression') { - expression = construct; - break; + offset = + typeof subresult[1] === 'number' ? subresult[1] : offset + step + } } } - // Another tag. - return code === 60 ? - // We can’t just say: fine. Lines of blocks have to be parsed until an eol/eof. - start(code) : code === 123 && expression ? effects.attempt(expression, end, nok)(code) : code === null || markdownLineEnding(code) ? ok(code) : nok(code); + return result } } } -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-jsx/lib/syntax.js -/** - * @import {Options} from 'micromark-extension-mdx-jsx' - * @import {AcornOptions} from 'micromark-util-events-to-acorn' - * @import {Extension} from 'micromark-util-types' - */ - - - /** - * Create an extension for `micromark` to enable MDX JSX syntax. + * Turn a return value into a clean result. * - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {Extension} - * Extension for `micromark` that can be passed in `extensions` to enable MDX - * JSX syntax. + * @param {VisitorResult} value + * Valid return values from visitors. + * @returns {Readonly<ActionTuple>} + * Clean result. */ -function mdxJsx(options) { - const settings = options || {}; - const acorn = settings.acorn; - /** @type {AcornOptions | undefined} */ - let acornOptions; - if (acorn) { - if (!acorn.parse || !acorn.parseExpressionAt) { - throw new Error('Expected a proper `acorn` instance passed in as `options.acorn`'); - } - acornOptions = Object.assign({ - ecmaVersion: 2024, - sourceType: 'module' - }, settings.acornOptions, { - locations: true - }); - } else if (settings.acornOptions || settings.addResult) { - throw new Error('Expected an `acorn` instance passed in as `options.acorn`'); +function toResult(value) { + if (Array.isArray(value)) { + return value } - return { - flow: { - [60]: jsxFlow(acorn || undefined, { - acornOptions, - addResult: settings.addResult || undefined - }) - }, - text: { - [60]: jsxText(acorn || undefined, { - acornOptions, - addResult: settings.addResult || undefined - }) - } - }; + + if (typeof value === 'number') { + return [CONTINUE, value] + } + + return value === null || value === undefined ? empty : [value] } -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdx-md/index.js + +;// CONCATENATED MODULE: ./node_modules/unist-util-visit/lib/index.js /** - * @typedef {import('micromark-util-types').Extension} Extension + * @typedef {import('unist').Node} UnistNode + * @typedef {import('unist').Parent} UnistParent + * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult */ /** - * Create an extension for `micromark` to disable some CommonMark syntax (code - * (indented), autolinks, and HTML (flow and text)) for MDX. + * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test + * Test from `unist-util-is`. * - * @returns {Extension} - * Extension for `micromark` that can be passed in `extensions` to disable - * some CommonMark syntax for MDX. + * Note: we have remove and add `undefined`, because otherwise when generating + * automatic `.d.ts` files, TS tries to flatten paths from a local perspective, + * which doesn’t work when publishing on npm. */ -function mdxMd() { - return { - disable: {null: ['autolink', 'codeIndented', 'htmlFlow', 'htmlText']} - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdxjs-esm/lib/syntax.js +// To do: use types from `unist-util-visit-parents` when it’s released. + /** - * @typedef {import('micromark-util-events-to-acorn').Acorn} Acorn - * @typedef {import('micromark-util-events-to-acorn').AcornOptions} AcornOptions - * @typedef {import('micromark-util-types').Extension} Extension - * @typedef {import('micromark-util-types').State} State - * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext - * @typedef {import('micromark-util-types').Tokenizer} Tokenizer + * @typedef {( + * Fn extends (value: any) => value is infer Thing + * ? Thing + * : Fallback + * )} Predicate + * Get the value of a type guard `Fn`. + * @template Fn + * Value; typically function that is a type guard (such as `(x): x is Y`). + * @template Fallback + * Value to yield if `Fn` is not a type guard. */ /** - * @typedef Options - * Configuration (required). - * @property {Acorn} acorn - * Acorn parser to use (required). - * @property {AcornOptions | null | undefined} [acornOptions] - * Configuration for acorn (default: `{ecmaVersion: 2024, locations: true, - * sourceType: 'module'}`); all fields except `locations` can be set. - * @property {boolean | null | undefined} [addResult=false] - * Whether to add `estree` fields to tokens with results from acorn - * (default: `false`). + * @typedef {( + * Check extends null | undefined // No test. + * ? Value + * : Value extends {type: Check} // String (type) test. + * ? Value + * : Value extends Check // Partial test. + * ? Value + * : Check extends Function // Function test. + * ? Predicate<Check, Value> extends Value + * ? Predicate<Check, Value> + * : never + * : never // Some other test? + * )} MatchesOne + * Check whether a node matches a primitive check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test, but not arrays. */ +/** + * @typedef {( + * Check extends Array<any> + * ? MatchesOne<Value, Check[keyof Check]> + * : MatchesOne<Value, Check> + * )} Matches + * Check whether a node matches a check in the type system. + * @template Value + * Value; typically unist `Node`. + * @template Check + * Value; typically `unist-util-is`-compatible test. + */ +/** + * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint + * Number; capped reasonably. + */ +/** + * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment + * Increment a number in the type system. + * @template {Uint} [I=0] + * Index. + */ +/** + * @typedef {( + * Node extends UnistParent + * ? Node extends {children: Array<infer Children>} + * ? Child extends Children ? Node : never + * : never + * : never + * )} InternalParent + * Collect nodes that can be parents of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ +/** + * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent + * Collect nodes in `Tree` that can be parents of `Child`. + * @template {UnistNode} Tree + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + */ -const syntax_blankLineBefore = { - tokenize: tokenizeNextBlank, - partial: true -}; -const syntax_trouble = 'https://github.com/micromark/micromark-extension-mdxjs-esm'; -const allowedAcornTypes = new Set(['ExportAllDeclaration', 'ExportDefaultDeclaration', 'ExportNamedDeclaration', 'ImportDeclaration']); +/** + * @typedef {( + * Depth extends Max + * ? never + * : + * | InternalParent<Node, Child> + * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>> + * )} InternalAncestor + * Collect nodes in `Tree` that can be ancestors of `Child`. + * @template {UnistNode} Node + * All node types in a tree. + * @template {UnistNode} Child + * Node to search for. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. + */ /** - * Create an extension for `micromark` to enable MDX ESM syntax. + * @typedef {( + * Tree extends UnistParent + * ? Depth extends Max + * ? Tree + * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>> + * : Tree + * )} InclusiveDescendant + * Collect all (inclusive) descendants of `Tree`. * - * @param {Options} options - * Configuration (required). - * @returns {Extension} - * Extension for `micromark` that can be passed in `extensions` to enable MDX - * ESM syntax. + * > 👉 **Note**: for performance reasons, this seems to be the fastest way to + * > recurse without actually running into an infinite loop, which the + * > previous version did. + * > + * > Practically, a max of `2` is typically enough assuming a `Root` is + * > passed, but it doesn’t improve performance. + * > It gets higher with `List > ListItem > Table > TableRow > TableCell`. + * > Using up to `10` doesn’t hurt or help either. + * @template {UnistNode} Tree + * Tree type. + * @template {Uint} [Max=10] + * Max; searches up to this depth. + * @template {Uint} [Depth=0] + * Current depth. */ -function mdxjsEsm(options) { - const exportImportConstruct = { - tokenize: tokenizeExportImport, - concrete: true - }; - if (!options || !options.acorn || !options.acorn.parse) { - throw new Error('Expected an `acorn` instance passed in as `options.acorn`'); - } - const acorn = options.acorn; - const acornOptions = Object.assign({ - ecmaVersion: 2024, - sourceType: 'module' - }, options.acornOptions, { - locations: true - }); - return { - flow: { - [101]: exportImportConstruct, - [105]: exportImportConstruct - } - }; - - /** - * @this {TokenizeContext} - * @type {Tokenizer} - */ - function tokenizeExportImport(effects, ok, nok) { - const self = this; - const definedModuleSpecifiers = self.parser.definedModuleSpecifiers || (self.parser.definedModuleSpecifiers = []); - const eventStart = this.events.length + 1; // Add the main `mdxjsEsm` token - let buffer = ''; - return self.interrupt ? nok : start; - - /** - * Start of MDX ESM. - * - * ```markdown - * > | import a from 'b' - * ^ - * ``` - * - * @type {State} - */ - function start(code) { - // Only at the start of a line, not at whitespace or in a container. - if (self.now().column > 1) return nok(code); - effects.enter('mdxjsEsm'); - effects.enter('mdxjsEsmData'); - effects.consume(code); - // eslint-disable-next-line unicorn/prefer-code-point - buffer += String.fromCharCode(code); - return word; - } - - /** - * In keyword. - * - * ```markdown - * > | import a from 'b' - * ^^^^^^ - * ``` - * - * @type {State} - */ - function word(code) { - if (asciiAlpha(code)) { - effects.consume(code); - // @ts-expect-error: definitely a number. - // eslint-disable-next-line unicorn/prefer-code-point - buffer += String.fromCharCode(code); - return word; - } - if ((buffer === 'import' || buffer === 'export') && code === 32) { - effects.consume(code); - return inside; - } - return nok(code); - } - - /** - * In data. - * - * ```markdown - * > | import a from 'b' - * ^ - * ``` - * - * @type {State} - */ - function inside(code) { - if (code === null || markdownLineEnding(code)) { - effects.exit('mdxjsEsmData'); - return lineStart(code); - } - effects.consume(code); - return inside; - } - - /** - * At line ending. - * - * ```markdown - * > | import a from 'b' - * ^ - * | export {a} - * ``` - * - * @type {State} - */ - function lineStart(code) { - if (code === null) { - return atEnd(code); - } - if (markdownLineEnding(code)) { - return effects.check(syntax_blankLineBefore, atEnd, continuationStart)(code); - } - effects.enter('mdxjsEsmData'); - return inside(code); - } - - /** - * At line ending that continues. - * - * ```markdown - * > | import a from 'b' - * ^ - * | export {a} - * ``` - * - * @type {State} - */ - function continuationStart(code) { - effects.enter("lineEnding"); - effects.consume(code); - effects.exit("lineEnding"); - return lineStart; - } - /** - * At end of line (blank or eof). - * - * ```markdown - * > | import a from 'b' - * ^ - * ``` - * - * @type {State} - */ - function atEnd(code) { - const result = eventsToAcorn(self.events.slice(eventStart), { - acorn, - acornOptions, - tokenTypes: ['mdxjsEsmData'], - prefix: definedModuleSpecifiers.length > 0 ? 'var ' + definedModuleSpecifiers.join(',') + '\n' : '' - }); - if (result.error) { - // There’s an error, which could be solved with more content, and there - // is more content. - if (code !== null && result.swallow) { - return continuationStart(code); - } - const error = new VFileMessage('Could not parse import/exports with acorn', { - cause: result.error, - place: { - line: result.error.loc.line, - column: result.error.loc.column + 1, - offset: result.error.pos - }, - ruleId: 'acorn', - source: 'micromark-extension-mdxjs-esm' - }); - error.url = syntax_trouble + '#could-not-parse-importexports-with-acorn'; - throw error; - } - // Remove the `VariableDeclaration`. - if (definedModuleSpecifiers.length > 0) { - const declaration = result.estree.body.shift(); - } - let index = -1; - while (++index < result.estree.body.length) { - const node = result.estree.body[index]; - if (!allowedAcornTypes.has(node.type)) { - const error = new VFileMessage('Unexpected `' + node.type + '` in code: only import/exports are supported', { - place: positionFromEstree(node), - ruleId: 'non-esm', - source: 'micromark-extension-mdxjs-esm' - }); - error.url = syntax_trouble + '#unexpected-type-in-code-only-importexports-are-supported'; - throw error; - } - - // Otherwise, when we’re not interrupting (hacky, because `interrupt` is - // used to parse containers and “sniff” if this is ESM), collect all the - // local values that are imported. - if (node.type === 'ImportDeclaration' && !self.interrupt) { - let index = -1; - while (++index < node.specifiers.length) { - const specifier = node.specifiers[index]; - definedModuleSpecifiers.push(specifier.local.name); - } - } - } - Object.assign(effects.exit('mdxjsEsm'), options.addResult ? { - estree: result.estree - } : undefined); - return ok(code); - } - } -} - -/** @type {Tokenizer} */ -function tokenizeNextBlank(effects, ok, nok) { - return start; - - /** - * @type {State} - */ - function start(code) { - effects.enter("lineEndingBlank"); - effects.consume(code); - effects.exit("lineEndingBlank"); - return effects.attempt(blankLine, ok, nok); - } -} -;// CONCATENATED MODULE: ./node_modules/micromark-extension-mdxjs/index.js /** - * @typedef {import('micromark-extension-mdx-expression').Options} Options - * @typedef {import('micromark-util-types').Extension} Extension + * @callback Visitor + * Handle a node (matching `test`, if given). + * + * Visitors are free to transform `node`. + * They can also transform `parent`. + * + * Replacing `node` itself, if `SKIP` is not returned, still causes its + * descendants to be walked (which is a bug). + * + * When adding or removing previous siblings of `node` (or next siblings, in + * case of reverse), the `Visitor` should return a new `Index` to specify the + * sibling to traverse after `node` is traversed. + * Adding or removing next siblings of `node` (or previous siblings, in case + * of reverse) is handled as expected without needing to return a new `Index`. + * + * Removing the children property of `parent` still results in them being + * traversed. + * @param {Visited} node + * Found node. + * @param {Visited extends UnistNode ? number | undefined : never} index + * Index of `node` in `parent`. + * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent + * Parent of `node`. + * @returns {VisitorResult} + * What to do next. + * + * An `Index` is treated as a tuple of `[CONTINUE, Index]`. + * An `Action` is treated as a tuple of `[Action]`. + * + * Passing a tuple back only makes sense if the `Action` is `SKIP`. + * When the `Action` is `EXIT`, that action can be returned. + * When the `Action` is `CONTINUE`, `Index` can be returned. + * @template {UnistNode} [Visited=UnistNode] + * Visited node type. + * @template {UnistParent} [Ancestor=UnistParent] + * Ancestor type. */ - - - - - - - - /** - * Create an extension for `micromark` to enable MDX syntax. + * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch + * Build a typed `Visitor` function from a node and all possible parents. * - * @param {Options | null | undefined} [options] - * Configuration (optional). - * @returns {Extension} - * Extension for `micromark` that can be passed in `extensions` to enable MDX - * syntax. + * It will infer which values are passed as `node` and which as `parent`. + * @template {UnistNode} Visited + * Node type. + * @template {UnistParent} Ancestor + * Parent type. */ -function mdxjs(options) { - const settings = Object.assign( - { - acorn: Parser.extend(acorn_jsx()), - acornOptions: {ecmaVersion: 2024, sourceType: 'module'}, - addResult: true - }, - options - ) - - return combineExtensions([ - mdxjsEsm(settings), - mdxExpression(settings), - mdxJsx(settings), - mdxMd() - ]) -} -;// CONCATENATED MODULE: ./node_modules/remark-mdx/lib/index.js /** - * @import {ToMarkdownOptions} from 'mdast-util-mdx' - * @import {Options as MicromarkOptions} from 'micromark-extension-mdxjs' - * @import {Processor} from 'unified' + * @typedef {( + * BuildVisitorFromMatch< + * Matches<Descendant, Check>, + * Extract<Descendant, UnistParent> + * > + * )} BuildVisitorFromDescendants + * Build a typed `Visitor` function from a list of descendants and a test. + * + * It will infer which values are passed as `node` and which as `parent`. + * @template {UnistNode} Descendant + * Node type. + * @template {Test} Check + * Test type. */ /** - * @typedef {MicromarkOptions & ToMarkdownOptions} Options - * Configuration. + * @typedef {( + * BuildVisitorFromDescendants< + * InclusiveDescendant<Tree>, + * Check + * > + * )} BuildVisitor + * Build a typed `Visitor` function from a tree and a test. + * + * It will infer which values are passed as `node` and which as `parent`. + * @template {UnistNode} [Tree=UnistNode] + * Node type. + * @template {Test} [Check=Test] + * Test type. */ -/** @type {Readonly<Options>} */ -const remark_mdx_lib_emptyOptions = {} /** - * Add support for MDX (JSX: `<Video id={123} />`, export/imports: `export {x} - * from 'y'`; and expressions: `{1 + 1}`). + * Visit nodes. + * + * This algorithm performs *depth-first* *tree traversal* in *preorder* + * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**). + * + * You can choose for which nodes `visitor` is called by passing a `test`. + * For complex tests, you should test yourself in `visitor`, as it will be + * faster and will have improved type information. + * + * Walking the tree is an intensive task. + * Make use of the return values of the visitor when possible. + * Instead of walking a tree multiple times, walk it once, use `unist-util-is` + * to check if a node matches, and then perform different operations. + * + * You can change the tree. + * See `Visitor` for more info. + * + * @overload + * @param {Tree} tree + * @param {Check} check + * @param {BuildVisitor<Tree, Check>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} + * + * @overload + * @param {Tree} tree + * @param {BuildVisitor<Tree>} visitor + * @param {boolean | null | undefined} [reverse] + * @returns {undefined} * - * @this {Processor} - * Processor. - * @param {Readonly<Options> | null | undefined} [options] - * Configuration (optional). + * @param {UnistNode} tree + * Tree to traverse. + * @param {Visitor | Test} testOrVisitor + * `unist-util-is`-compatible test (optional, omit to pass a visitor). + * @param {Visitor | boolean | null | undefined} [visitorOrReverse] + * Handle each node (when test is omitted, pass `reverse`). + * @param {boolean | null | undefined} [maybeReverse=false] + * Traverse in reverse preorder (NRL) instead of the default preorder (NLR). * @returns {undefined} * Nothing. + * + * @template {UnistNode} Tree + * Node type. + * @template {Test} Check + * `unist-util-is`-compatible test. */ -function remarkMdx(options) { - const self = this - const settings = options || remark_mdx_lib_emptyOptions - const data = self.data() +function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) { + /** @type {boolean | null | undefined} */ + let reverse + /** @type {Test} */ + let test + /** @type {Visitor} */ + let visitor + + if ( + typeof testOrVisitor === 'function' && + typeof visitorOrReverse !== 'function' + ) { + test = undefined + visitor = testOrVisitor + reverse = visitorOrReverse + } else { + // @ts-expect-error: assume the overload with test was given. + test = testOrVisitor + // @ts-expect-error: assume the overload with test was given. + visitor = visitorOrReverse + reverse = maybeReverse + } - const micromarkExtensions = - data.micromarkExtensions || (data.micromarkExtensions = []) - const fromMarkdownExtensions = - data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []) - const toMarkdownExtensions = - data.toMarkdownExtensions || (data.toMarkdownExtensions = []) + visitParents(tree, test, overload, reverse) - micromarkExtensions.push(mdxjs(settings)) - fromMarkdownExtensions.push(mdxFromMarkdown()) - toMarkdownExtensions.push(mdxToMarkdown(settings)) + /** + * @param {UnistNode} node + * @param {Array<UnistParent>} parents + */ + function overload(node, parents) { + const parent = parents[parents.length - 1] + const index = parent ? parent.children.indexOf(node) : undefined + return visitor(node, index, parent) + } } -// EXTERNAL MODULE: external "assert" -var external_assert_ = __nccwpck_require__(2613); ;// CONCATENATED MODULE: ./remark-get-images-plugin.ts +/* eslint-disable */ // @ts-nocheck +// TODO: fix types // stdlib @@ -70405,13 +114218,13 @@ var external_assert_ = __nccwpck_require__(2613); // for creating custom remark plugin // Use 4.1.0; 5+ is ESM -const remarkGetImages = (sourceRepoPublicDir, imageSrcSet) => { +const remarkGetImages = (HCPsourceDir, imageSrcSet) => { const test = (node) => { return is(node, 'image'); }; return function (tree) { visit(tree, test, (node) => { - const src = external_path_.join(sourceRepoPublicDir, node.url); + const src = external_path_.join(HCPsourceDir, node.url); external_assert_.ok(external_fs_.existsSync(src), '[getImagesPlugin] image not found: ' + src); imageSrcSet.add(src); }); @@ -70419,7 +114232,9 @@ const remarkGetImages = (sourceRepoPublicDir, imageSrcSet) => { }; ;// CONCATENATED MODULE: ./remark-transfrom-cloud-docs-links.ts +/* eslint-disable */ // @ts-nocheck +// TODO: fix types // for creating custom remark plugin // Use 4.1.0; 5+ is ESM @@ -70453,7 +114268,6 @@ const remarkTransformCloudDocsLinks = () => { // mdx processing - // plugins @@ -70467,6 +114281,38 @@ const SUB_PATH_MAPPINGS = [ target: 'enterprise', }, ]; +/** + * This is a helper to be passed to `walk` dry up repeated logic + * for ignore certain files. + */ +const filterFunc = (item) => { + // if the item matches a IGNORE_PATTERNS expression, exclude it + if (IGNORE_PATTERNS.some((pattern) => { + return pattern.test(item.path); + })) { + return false; + } + // Check files for `tfc_only` frontmatter property; Ignore them if true + if (item.stats.isFile()) { + const fullContent = external_fs_.readFileSync(item.path, 'utf8'); + const { data } = gray_matter_default()(fullContent); + if (data.tfc_only == true) { + return false; + } + } + return true; +}; +/** + * A helper that accepts a data object and an array of functions that + * receive the object as an arg and transform it. + */ +const transformObject = (data, plugins) => { + let result = data; + plugins.forEach((fn) => { + result = fn(result); + }); + return result; +}; /** * This function will copy 3 things * - MDX files @@ -70478,21 +114324,36 @@ const SUB_PATH_MAPPINGS = [ * This function will also prune the target directory * of any files that are not in the source directory. * - * @param sourceDir An absolute path to a GitHub repository on disk - * @param targetDir An absolute path to a GitHub repository on disk - */ -async function main(sourceDir, targetDir) { - const sourceRepoContentDir = external_path_.join(sourceDir, 'website/docs'); - // this gets prepended to img references like /img/docs/... so that we can resolve the assets on disk - const sourceRepoPublicDir = external_path_.join(sourceDir, 'website'); - const targetRepoContentDir = external_path_.join(targetDir, 'website/docs'); - // this gets prepended to img reference **bases** (aka filename.extension only) - const targetRepoImageDir = external_path_.join(targetDir, 'website/img/docs'); - const targetRepoLastSyncFile = external_path_.join(targetDir, 'website/last-cloud-docs-sync.txt'); + * @param newTFEVersion An absolute path to a GitHub repository on disk + */ +async function main( +// sourceDir: string, +// targetDir: string, +newTFEVersion) { + const newTFEVersionDir = external_path_.join('./content/ptfe-releases', newTFEVersion); + // Create a new folder for the new TFE version + // if (fs.existsSync(targetDir)) { + // throw new Error(`Directory already exists: ${targetDir}`) + // } + // fs.mkdirSync(targetDir, { recursive: true }) + const HCPsourceDir = './test/content/terraform-docs-common'; + // const HCPsourceDir = './content/terraform-docs-common' + const HCPContentDir = external_path_.join(HCPsourceDir, 'docs'); + const newTFEVersionContentDir = external_path_.join(newTFEVersionDir, 'docs'); + const newTFEVersionImageDir = external_path_.join(newTFEVersionDir, 'img/docs'); + // Read version metadata and get the latest version of ptfe-releases + // const versionMetadataPath = path.resolve('app/api/versionMetadata.json') + // const versionMetadata = JSON.parse(fs.readFileSync(versionMetadataPath, 'utf8')) + // const ptfeReleases = versionMetadata['ptfe-releases'] + // if (!ptfeReleases || ptfeReleases.length === 0) { + // throw new Error('No ptfe-releases found in versionMetadata.json') + // } + // const latestPtfeRelease = ptfeReleases[0] + // Actually don't think I need this // traverse source docs and accumulate mdx files for a given set of "subPaths" let items = []; for (const { source: subPath } of SUB_PATH_MAPPINGS) { - const src = external_path_.join(sourceRepoContentDir, subPath); + const src = external_path_.join(HCPContentDir, subPath); const docItems = klaw_sync_default()(src, { nodir: true, filter: filterFunc, @@ -70502,7 +114363,9 @@ async function main(sourceDir, targetDir) { // process each mdx file for (const item of items) { // ignore some files - if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + if (IGNORE_LIST.some((ignore) => { + return item.path.endsWith(ignore); + })) { continue; } // extract mdx content; ignore frontmatter @@ -70512,7 +114375,7 @@ async function main(sourceDir, targetDir) { data = transformObject(data, [ // inject `source` frontmatter property function injectSource(d) { - d.source = external_path_.basename(sourceDir); + d.source = external_path_.basename(HCPsourceDir); return d; }, // replace cloud instances with enterprise @@ -70530,10 +114393,12 @@ async function main(sourceDir, targetDir) { return d; }, ]); - const vfile = await remark() - .use(remarkMdx) - .use(remarkGetImages, sourceRepoPublicDir, imageSrcSet) - .use(remarkTransformCloudDocsLinks) // transforms link + const vfile = await remark_default()() + .use((remark_mdx_default())) + // @ts-expect-error remark is being passed in through the pipeline + .use(remarkGetImages, HCPsourceDir, imageSrcSet) + // @ts-expect-error remark is being passed in through the pipeline + .use(remarkTransformCloudDocsLinks) .process(content); // replace \-> with -> const stringOutput = vfile.toString().replaceAll('\\->', '->'); @@ -70550,133 +114415,46 @@ async function main(sourceDir, targetDir) { // /{target}/enterprise/dir/some-docs.mdx // --------------------------------------------- for (const { source, target } of SUB_PATH_MAPPINGS) { - const src = external_path_.join(sourceRepoContentDir, source); - const dest = external_path_.join(targetRepoContentDir, target); + const src = external_path_.join(HCPContentDir, source); + const dest = external_path_.join(newTFEVersionContentDir, target); const items = klaw_sync_default()(src, { nodir: true, filter: filterFunc, }); for (const item of items) { // ignore some files - if (IGNORE_LIST.some((ignore) => item.path.endsWith(ignore))) { + if (IGNORE_LIST.some((ignore) => { + return item.path.endsWith(ignore); + })) { continue; } const destAbsolutePath = item.path.replace(src, dest); external_fs_.mkdirSync(external_path_.dirname(destAbsolutePath), { recursive: true }); external_fs_.copyFileSync(item.path, destAbsolutePath); // accumulate copied files - const relativePath = external_path_.relative(targetDir, destAbsolutePath); + const relativePath = external_path_.relative(newTFEVersionDir, destAbsolutePath); copiedTargetRepoRelativePaths.push(relativePath); } } // Copy images for (const src of Array.from(imageSrcSet)) { const basename = external_path_.basename(src); - const target = external_path_.join(targetRepoImageDir, basename); - external_fs_.mkdirSync(targetRepoImageDir, { recursive: true }); + const target = external_path_.join(newTFEVersionImageDir, basename); + external_fs_.mkdirSync(newTFEVersionImageDir, { recursive: true }); external_fs_.copyFileSync(src, target); // accumulate copied files - const relativePath = external_path_.relative(targetDir, target); + const relativePath = external_path_.relative(newTFEVersionDir, target); copiedTargetRepoRelativePaths.push(relativePath); } - // Read or Create and Read `last-cloud-docs-sync.txt` - if (!external_fs_.existsSync(targetRepoLastSyncFile)) { - lib_core.info('Creating `${targetRepoLastSyncFile}`'); - external_fs_.writeFileSync(targetRepoLastSyncFile, '', 'utf8'); - } - lib_core.info('Reading `${targetRepoLastSyncFile}`'); - // Any filename that is in this list, that was not just sync'd is considered stale; Prune. - // Then save over `last-cloud-docs-sync.txt` - const lastSync = external_fs_.readFileSync(targetRepoLastSyncFile) - .toString() - .split('\n') - // filter empty strings; This is encountered when creating - // the last-cloud-docs-sync.txt file for the first time. - .filter(Boolean); - // prune files and empty directories - lastSync - .filter((relativePath) => { - return !copiedTargetRepoRelativePaths.includes(relativePath); - }) - .forEach((relativePath) => { - const file = external_path_.join(targetDir, relativePath); - // set force to true to ignore errors; - // This happens when a file is deleted from the source repo. - lib_core.info(`Deleting stale file: ${file}...`); - external_fs_.rmSync(file, { force: true }); - lib_core.info(`Deleted stale file: ${file}`); - recursiveRmEmptyParentDirs(file); - }); - // clear file - lib_core.info('Clearing `${targetRepoLastSyncFile}`'); - external_fs_.truncateSync(targetRepoLastSyncFile, 0); - const stream = external_fs_.createWriteStream(targetRepoLastSyncFile, { flags: 'a' }); - for (const item of copiedTargetRepoRelativePaths) { - stream.write(`${item}\n`); - } - // wait for the stream to end - return new Promise((resolve) => { - stream.end(resolve); - }); } -// This is a helper for pruning empty dirs for tests; -// Git ignores empty dirs entirely but an in-memory filesystem doesn't. -const recursiveRmEmptyParentDirs = (file) => { - lib_core.info(`Deleting empty parent dirs for ${file}...`); - const dir = external_path_.dirname(file); - if (external_fs_.existsSync(dir)) { - const files = external_fs_.readdirSync(dir); - if (files.length === 0) { - // @ts-expect-error force is there but not typed correctly - external_fs_.rmdirSync(dir, { force: true, recursive: true }); - lib_core.info(`Deleted empty parent dirs for ${file}`); - recursiveRmEmptyParentDirs(external_path_.dirname(dir)); - } - } -}; -/** - * This is a helper to be passed to `walk` dry up repeated logic - * for ignore certain files. - */ -const filterFunc = (item) => { - // if the item matches a IGNORE_PATTERNS expression, exclude it - if (IGNORE_PATTERNS.some((pattern) => pattern.test(item.path))) { - return false; - } - // Check files for `tfc_only` frontmatter property; Ignore them if true - if (item.stats.isFile()) { - const fullContent = external_fs_.readFileSync(item.path, 'utf8'); - const { data } = gray_matter_default()(fullContent); - if (data.tfc_only == true) { - return false; - } - } - return true; -}; -/** - * A helper that accepts a data object and an array of functions that - * receive the object as an arg and transform it. - */ -const transformObject = (data, plugins) => { - let result = data; - plugins.forEach((fn) => { - result = fn(result); - }); - return result; -}; ;// CONCATENATED MODULE: ./index.ts async function action() { - // These are absolute paths, like: - // /home/runner/work/mktg-content-workflows/mktg-content-workflows/${source_repo} - const sourceDir = lib_core.getInput('source_dir'); - const targetDir = lib_core.getInput('target_dir'); - // $GITHUB_WORKSPACE: /home/runner/work/mktg-content-workflows/mktg-content-workflows - lib_core.notice(`sourceDir: ${sourceDir}`); - lib_core.notice(`targetDir: ${targetDir}`); - await main(sourceDir, targetDir); + const newTFEVersion = core.getInput('new_TFE_version'); + // const newTFEVersion = 'v000011-1' + await main(newTFEVersion); } action(); diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index fd94811c0b..23be9337ba 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -81,8 +81,7 @@ jobs: name: Checkout repository uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: - # ref: "rn/add-copy-docs-workflow" - ref: "d6a4a8755a2178f72dd42b01a290cc513b34f0b9" + ref: "rn/add-copy-docs-workflow" - # Run our composite action name: Copy files From 4b65042d598d5eb1089b126874e94809562480e0 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:36:27 -0400 Subject: [PATCH 34/47] double check that the checkout is working --- .github/workflows/copy-cloud-docs-for-tfe.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 23be9337ba..6019f100e6 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -83,6 +83,11 @@ jobs: with: ref: "rn/add-copy-docs-workflow" + - name: List files in ./testing + run: | + echo "Listing files in ./testing:" + ls -al ./testing + - # Run our composite action name: Copy files uses: ./.github/actions/copy-cloud-docs-for-tfe From 4b93b645ffec2987e7e8232ad9caac630df38dba Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:37:37 -0400 Subject: [PATCH 35/47] Add the current loc to checkout --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 6019f100e6..9931059e62 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -75,7 +75,7 @@ jobs: with: ref: ${{env.release_branch}} # TODO: remove this after testing - path: "testing" + path: "./testing" - # This repository holds workflow logic name: Checkout repository From 6f4f716fcaf36b28969cc243e554220ee18bd85a Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:39:40 -0400 Subject: [PATCH 36/47] try the path just "testing" --- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 9931059e62..0dd5248d79 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -75,7 +75,7 @@ jobs: with: ref: ${{env.release_branch}} # TODO: remove this after testing - path: "./testing" + path: "testing" - # This repository holds workflow logic name: Checkout repository @@ -86,7 +86,7 @@ jobs: - name: List files in ./testing run: | echo "Listing files in ./testing:" - ls -al ./testing + ls -al testing - # Run our composite action name: Copy files From f5fdcc3e0f1eb6696b8a257d6427858f2e85d61b Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:42:29 -0400 Subject: [PATCH 37/47] include the github workspace --- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 0dd5248d79..c47ffdc732 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -75,7 +75,7 @@ jobs: with: ref: ${{env.release_branch}} # TODO: remove this after testing - path: "testing" + path: "${{GITHUB_WORKSPACE}}/testing" - # This repository holds workflow logic name: Checkout repository @@ -86,7 +86,7 @@ jobs: - name: List files in ./testing run: | echo "Listing files in ./testing:" - ls -al testing + ls -al "${{GITHUB_WORKSPACE}}/testing" - # Run our composite action name: Copy files From 1d0c631a656dd8997c038b9598d90af1bb9b92ad Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:43:47 -0400 Subject: [PATCH 38/47] It's github.workspace --- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index c47ffdc732..29c42e5f0a 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -75,7 +75,7 @@ jobs: with: ref: ${{env.release_branch}} # TODO: remove this after testing - path: "${{GITHUB_WORKSPACE}}/testing" + path: "${{github.workspace}}/testing" - # This repository holds workflow logic name: Checkout repository @@ -86,7 +86,7 @@ jobs: - name: List files in ./testing run: | echo "Listing files in ./testing:" - ls -al "${{GITHUB_WORKSPACE}}/testing" + ls -al "${{github.workspace}}/testing" - # Run our composite action name: Copy files From a64e2f2e9df478ad3918934d8089faa5234c2b69 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:48:38 -0400 Subject: [PATCH 39/47] checkout is deleting previous folder contents --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 29c42e5f0a..7611e3ff93 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -82,10 +82,12 @@ jobs: uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: "rn/add-copy-docs-workflow" + path: "${{github.workspace}}/workflow " - name: List files in ./testing run: | echo "Listing files in ./testing:" + mv "${{github.workspace}}/workflow"/* "${{github.workspace}}/" ls -al "${{github.workspace}}/testing" - # Run our composite action From 1eab0dff20ad79611a6f0c0e8412c6887bcba92f Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:51:27 -0400 Subject: [PATCH 40/47] Double check that the files are being moved over --- .github/workflows/copy-cloud-docs-for-tfe.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 7611e3ff93..565ba2b64e 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -87,8 +87,9 @@ jobs: - name: List files in ./testing run: | echo "Listing files in ./testing:" - mv "${{github.workspace}}/workflow"/* "${{github.workspace}}/" - ls -al "${{github.workspace}}/testing" + mv "${{github.workspace}}/workflow/*" "${{github.workspace}}/" + ls -al "${{github.workspace}}/testing/content/terraform-docs-common" + ls -al "${{github.workspace}}/.github/actions/copy-cloud-docs-for-tfe" - # Run our composite action name: Copy files From 7cda500cab508a4f972dd87a47ce071b6fb32812 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:53:07 -0400 Subject: [PATCH 41/47] fix move command --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 565ba2b64e..24fbefacc5 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -87,7 +87,7 @@ jobs: - name: List files in ./testing run: | echo "Listing files in ./testing:" - mv "${{github.workspace}}/workflow/*" "${{github.workspace}}/" + mv ${{github.workspace}}/workflow/* ${{github.workspace}}/ ls -al "${{github.workspace}}/testing/content/terraform-docs-common" ls -al "${{github.workspace}}/.github/actions/copy-cloud-docs-for-tfe" From 631f3261a579b1cd4646d18b3e84c1c70dbfe1c9 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:55:16 -0400 Subject: [PATCH 42/47] fix a space in path --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 24fbefacc5..4be88180a9 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -82,7 +82,7 @@ jobs: uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: "rn/add-copy-docs-workflow" - path: "${{github.workspace}}/workflow " + path: "${{github.workspace}}/workflow" - name: List files in ./testing run: | From 444c6c91f61b0dbf4e32a62de5f5706e54df7048 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 13:59:01 -0400 Subject: [PATCH 43/47] list files for debugging --- .github/workflows/copy-cloud-docs-for-tfe.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 4be88180a9..6b63847f87 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -88,8 +88,10 @@ jobs: run: | echo "Listing files in ./testing:" mv ${{github.workspace}}/workflow/* ${{github.workspace}}/ - ls -al "${{github.workspace}}/testing/content/terraform-docs-common" - ls -al "${{github.workspace}}/.github/actions/copy-cloud-docs-for-tfe" + echo "Listing files in GHA" + ls -al "${{github.workspace}}/.github/actions" + echo "Listing files in workflow" + ls -al "${{github.workspace}}/workflow" - # Run our composite action name: Copy files From ef17d02c0fb3d76597a1ba67f99bbfee24aa6b50 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 14:00:25 -0400 Subject: [PATCH 44/47] What is in our base dir --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 6b63847f87..6703e59370 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -89,7 +89,7 @@ jobs: echo "Listing files in ./testing:" mv ${{github.workspace}}/workflow/* ${{github.workspace}}/ echo "Listing files in GHA" - ls -al "${{github.workspace}}/.github/actions" + ls -al "${{github.workspace}}/" echo "Listing files in workflow" ls -al "${{github.workspace}}/workflow" From 94742a55929131c1f65ddbd911fd6e08a5ad36b5 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 14:02:49 -0400 Subject: [PATCH 45/47] copy dot files --- .github/workflows/copy-cloud-docs-for-tfe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 6703e59370..2c3e37f361 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -87,7 +87,7 @@ jobs: - name: List files in ./testing run: | echo "Listing files in ./testing:" - mv ${{github.workspace}}/workflow/* ${{github.workspace}}/ + mv ${{github.workspace}}/workflow/.* ${{github.workspace}}/workflow/* ${{github.workspace}}/ echo "Listing files in GHA" ls -al "${{github.workspace}}/" echo "Listing files in workflow" From 30c6d67305e449eb699a95fc1c5021e0aea3e1e1 Mon Sep 17 00:00:00 2001 From: Ruben Nic <ruben.nic@hashicorp.com> Date: Wed, 21 May 2025 14:05:41 -0400 Subject: [PATCH 46/47] correct file path --- .github/actions/copy-cloud-docs-for-tfe/main.ts | 2 +- .github/actions/copy-cloud-docs-for-tfe/out/index.js | 2 +- .github/workflows/copy-cloud-docs-for-tfe.yml | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/actions/copy-cloud-docs-for-tfe/main.ts b/.github/actions/copy-cloud-docs-for-tfe/main.ts index 902e95f705..2f8714d149 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/main.ts +++ b/.github/actions/copy-cloud-docs-for-tfe/main.ts @@ -102,7 +102,7 @@ export async function main( // } // fs.mkdirSync(targetDir, { recursive: true }) - const HCPsourceDir = './test/content/terraform-docs-common' + const HCPsourceDir = './testing/content/terraform-docs-common' // const HCPsourceDir = './content/terraform-docs-common' const HCPContentDir = path.join(HCPsourceDir, 'docs') diff --git a/.github/actions/copy-cloud-docs-for-tfe/out/index.js b/.github/actions/copy-cloud-docs-for-tfe/out/index.js index 44d38ee919..52ec76cc30 100644 --- a/.github/actions/copy-cloud-docs-for-tfe/out/index.js +++ b/.github/actions/copy-cloud-docs-for-tfe/out/index.js @@ -114336,7 +114336,7 @@ newTFEVersion) { // throw new Error(`Directory already exists: ${targetDir}`) // } // fs.mkdirSync(targetDir, { recursive: true }) - const HCPsourceDir = './test/content/terraform-docs-common'; + const HCPsourceDir = './testing/content/terraform-docs-common'; // const HCPsourceDir = './content/terraform-docs-common' const HCPContentDir = external_path_.join(HCPsourceDir, 'docs'); const newTFEVersionContentDir = external_path_.join(newTFEVersionDir, 'docs'); diff --git a/.github/workflows/copy-cloud-docs-for-tfe.yml b/.github/workflows/copy-cloud-docs-for-tfe.yml index 2c3e37f361..590be6fb5b 100644 --- a/.github/workflows/copy-cloud-docs-for-tfe.yml +++ b/.github/workflows/copy-cloud-docs-for-tfe.yml @@ -89,9 +89,7 @@ jobs: echo "Listing files in ./testing:" mv ${{github.workspace}}/workflow/.* ${{github.workspace}}/workflow/* ${{github.workspace}}/ echo "Listing files in GHA" - ls -al "${{github.workspace}}/" - echo "Listing files in workflow" - ls -al "${{github.workspace}}/workflow" + ls -al "${{github.workspace}}/testing/content/terraform-docs-common/docs/cloud-docs" - # Run our composite action name: Copy files From 6c3b5569aa9623fc49112a087a13faf26073c497 Mon Sep 17 00:00:00 2001 From: tfe-release-bot <team-rel-eng@hashicorp.com> Date: Wed, 21 May 2025 18:14:46 +0000 Subject: [PATCH 47/47] Automated Docs PR --- .../docs/enterprise/api-docs/_template.mdx | 222 +++ .../docs/enterprise/api-docs/account.mdx | 278 +++ .../docs/enterprise/api-docs/agent-tokens.mdx | 272 +++ .../docs/enterprise/api-docs/agents.mdx | 637 +++++++ .../docs/enterprise/api-docs/applies.mdx | 201 ++ .../api-docs/assessment-results.mdx | 129 ++ .../docs/enterprise/api-docs/changelog.mdx | 578 ++++++ .../docs/enterprise/api-docs/comments.mdx | 227 +++ .../api-docs/configuration-versions.mdx | 561 ++++++ .../enterprise/api-docs/cost-estimates.mdx | 98 + .../api-docs/github-app-installations.mdx | 127 ++ .../docs/enterprise/api-docs/index.mdx | 396 ++++ .../api-docs/no-code-provisioning.mdx | 924 +++++++++ .../api-docs/notification-configurations.mdx | 1437 ++++++++++++++ .../enterprise/api-docs/oauth-clients.mdx | 603 ++++++ .../docs/enterprise/api-docs/oauth-tokens.mdx | 264 +++ .../api-docs/organization-memberships.mdx | 497 +++++ .../enterprise/api-docs/organization-tags.mdx | 230 +++ .../api-docs/organization-tokens.mdx | 148 ++ .../enterprise/api-docs/organizations.mdx | 987 ++++++++++ .../docs/enterprise/api-docs/plan-exports.mdx | 226 +++ .../docs/enterprise/api-docs/plans.mdx | 203 ++ .../docs/enterprise/api-docs/policies.mdx | 564 ++++++ .../enterprise/api-docs/policy-checks.mdx | 265 +++ .../api-docs/policy-evaluations.mdx | 288 +++ .../enterprise/api-docs/policy-set-params.mdx | 290 +++ .../docs/enterprise/api-docs/policy-sets.mdx | 1298 +++++++++++++ .../api-docs/private-registry/gpg-keys.mdx | 388 ++++ .../manage-module-versions.mdx | 531 ++++++ .../api-docs/private-registry/modules.mdx | 942 +++++++++ .../provider-versions-platforms.mdx | 707 +++++++ .../api-docs/private-registry/providers.mdx | 471 +++++ .../api-docs/private-registry/tests.mdx | 755 ++++++++ .../api-docs/project-team-access.mdx | 523 +++++ .../docs/enterprise/api-docs/projects.mdx | 718 +++++++ .../enterprise/api-docs/reserved-tag-keys.mdx | 271 +++ .../run-tasks/run-task-stages-and-results.mdx | 366 ++++ .../run-tasks/run-tasks-integration.mdx | 298 +++ .../api-docs/run-tasks/run-tasks.mdx | 831 ++++++++ .../docs/enterprise/api-docs/run-triggers.mdx | 349 ++++ .../docs/enterprise/api-docs/run.mdx | 902 +++++++++ .../docs/enterprise/api-docs/ssh-keys.mdx | 320 ++++ .../enterprise/api-docs/stability-policy.mdx | 25 + .../api-docs/state-version-outputs.mdx | 244 +++ .../enterprise/api-docs/state-versions.mdx | 1241 ++++++++++++ .../docs/enterprise/api-docs/team-access.mdx | 433 +++++ .../docs/enterprise/api-docs/team-members.mdx | 249 +++ .../docs/enterprise/api-docs/team-tokens.mdx | 558 ++++++ .../docs/enterprise/api-docs/teams.mdx | 466 +++++ .../docs/enterprise/api-docs/user-tokens.mdx | 286 +++ .../docs/enterprise/api-docs/users.mdx | 102 + .../enterprise/api-docs/variable-sets.mdx | 1018 ++++++++++ .../docs/enterprise/api-docs/variables.mdx | 307 +++ .../docs/enterprise/api-docs/vcs-events.mdx | 132 ++ .../api-docs/workspace-resources.mdx | 126 ++ .../api-docs/workspace-variables.mdx | 298 +++ .../docs/enterprise/api-docs/workspaces.mdx | 1689 +++++++++++++++++ .../architectural-details/data-security.mdx | 75 + .../docs/enterprise/cost-estimation/aws.mdx | 158 ++ .../docs/enterprise/cost-estimation/azure.mdx | 56 + .../docs/enterprise/cost-estimation/gcp.mdx | 42 + .../docs/enterprise/cost-estimation/index.mdx | 58 + .../aws-service-catalog/index.mdx | 27 + .../docs/enterprise/integrations/index.mdx | 26 + .../kubernetes/annotations-and-labels.mdx | 26 + .../integrations/kubernetes/api-reference.mdx | 796 ++++++++ .../integrations/kubernetes/index.mdx | 220 +++ .../kubernetes/ops-v2-migration.mdx | 342 ++++ .../integrations/kubernetes/setup.mdx | 94 + .../integrations/run-tasks/index.mdx | 109 ++ .../service-catalog-terraform/admin-guide.mdx | 56 + .../developer-reference.mdx | 112 ++ .../example-customizations.mdx | 174 ++ .../service-catalog-terraform/index.mdx | 239 +++ .../service-catalog-config.mdx | 255 +++ .../troubleshoot.mdx | 120 ++ .../service-graph/customizations.mdx | 97 + .../service-now/service-graph/index.mdx | 83 + .../service-graph/resource-coverage/aws.mdx | 219 +++ .../service-graph/resource-coverage/azure.mdx | 158 ++ .../service-graph/resource-coverage/gcp.mdx | 159 ++ .../service-graph/resource-coverage/index.mdx | 37 + .../resource-coverage/vsphere.mdx | 84 + .../service-graph/service-graph-setup.mdx | 162 ++ .../docs/enterprise/migrate/index.mdx | 95 + .../enterprise/migrate/tf-migrate/index.mdx | 132 ++ .../tf-migrate/reference/configuration.mdx | 88 + .../migrate/tf-migrate/reference/execute.mdx | 65 + .../migrate/tf-migrate/reference/prepare.mdx | 104 + .../no-code-provisioning/module-design.mdx | 72 + .../no-code-provisioning/provisioning.mdx | 89 + .../define-policies/custom-sentinel.mdx | 260 +++ .../define-policies/index.mdx | 19 + .../define-policies/opa.mdx | 259 +++ .../import-reference/index.mdx | 32 + .../import-reference/tfconfig-v2.mdx | 422 ++++ .../import-reference/tfconfig.mdx | 976 ++++++++++ .../import-reference/tfplan-v2.mdx | 388 ++++ .../import-reference/tfplan.mdx | 604 ++++++ .../import-reference/tfrun.mdx | 320 ++++ .../import-reference/tfstate-v2.mdx | 180 ++ .../import-reference/tfstate.mdx | 550 ++++++ .../enterprise/policy-enforcement/index.mdx | 50 + .../manage-policy-sets/index.mdx | 227 +++ .../manage-policy-sets/opa-vcs.mdx | 48 + .../manage-policy-sets/sentinel-vcs.mdx | 139 ++ .../policy-enforcement/prewritten-library.mdx | 26 + .../prewritten-sentinel.mdx | 133 ++ .../policy-enforcement/test-sentinel.mdx | 277 +++ .../policy-enforcement/view-results/index.mdx | 74 + .../policy-enforcement/view-results/json.mdx | 59 + .../enterprise/projects/best-practices.mdx | 40 + .../docs/enterprise/projects/index.mdx | 51 + .../docs/enterprise/projects/manage.mdx | 124 ++ .../docs/enterprise/registry/add.mdx | 79 + .../docs/enterprise/registry/design.mdx | 64 + .../docs/enterprise/registry/index.mdx | 27 + .../registry/manage-module-versions.mdx | 218 +++ .../enterprise/registry/publish-modules.mdx | 165 ++ .../enterprise/registry/publish-providers.mdx | 266 +++ .../docs/enterprise/registry/test.mdx | 69 + .../docs/enterprise/registry/using.mdx | 149 ++ .../v000011-1/docs/enterprise/run/api.mdx | 197 ++ .../v000011-1/docs/enterprise/run/cli.mdx | 299 +++ .../docs/enterprise/run/install-software.mdx | 111 ++ .../v000011-1/docs/enterprise/run/manage.mdx | 78 + .../docs/enterprise/run/modes-and-options.mdx | 123 ++ .../docs/enterprise/run/remote-operations.mdx | 148 ++ .../docs/enterprise/run/run-environment.mdx | 131 ++ .../v000011-1/docs/enterprise/run/states.mdx | 218 +++ .../v000011-1/docs/enterprise/run/ui.mdx | 140 ++ .../users-teams-organizations/2fa.mdx | 47 + .../users-teams-organizations/api-tokens.mdx | 129 ++ .../organizations/index.mdx | 338 ++++ .../organizations/manage-reserved-tags.mdx | 59 + .../vcs-speculative-plan-management.mdx | 45 + .../organizations/vcs-status-checks.mdx | 49 + .../users-teams-organizations/permissions.mdx | 396 ++++ .../users-teams-organizations/teams/index.mdx | 59 + .../teams/manage.mdx | 109 ++ .../teams/notifications.mdx | 132 ++ .../users-teams-organizations/users.mdx | 215 +++ .../enterprise/vcs/azure-devops-server.mdx | 94 + .../vcs/azure-devops-services-pat.mdx | 116 ++ .../enterprise/vcs/azure-devops-services.mdx | 132 ++ .../docs/enterprise/vcs/bitbucket-cloud.mdx | 127 ++ .../enterprise/vcs/bitbucket-data-center.mdx | 128 ++ .../docs/enterprise/vcs/github-enterprise.mdx | 140 ++ .../v000011-1/docs/enterprise/vcs/github.mdx | 145 ++ .../docs/enterprise/vcs/gitlab-com.mdx | 119 ++ .../docs/enterprise/vcs/gitlab-eece.mdx | 133 ++ .../v000011-1/docs/enterprise/vcs/index.mdx | 137 ++ .../docs/enterprise/vcs/troubleshooting.mdx | 227 +++ .../enterprise/workspaces/best-practices.mdx | 71 + .../docs/enterprise/workspaces/browse.mdx | 72 + .../enterprise/workspaces/configurations.mdx | 73 + .../docs/enterprise/workspaces/create.mdx | 110 ++ .../aws-configuration.mdx | 165 ++ .../azure-configuration.mdx | 177 ++ .../gcp-configuration.mdx | 174 ++ .../hcp-configuration.mdx | 116 ++ .../aws-configuration.mdx | 102 + .../gcp-configuration.mdx | 119 ++ .../hcp-vault-secrets-backed/index.mdx | 38 + .../dynamic-provider-credentials/index.mdx | 59 + .../kubernetes-configuration.mdx | 171 ++ .../manual-generation.mdx | 42 + .../specifying-multiple-configurations.mdx | 94 + .../vault-backed/aws-configuration.mdx | 135 ++ .../vault-backed/azure-configuration.mdx | 152 ++ .../vault-backed/gcp-configuration.mdx | 167 ++ .../vault-backed/index.mdx | 52 + .../vault-configuration.mdx | 225 +++ .../workload-identity-tokens.mdx | 99 + .../docs/enterprise/workspaces/health.mdx | 245 +++ .../docs/enterprise/workspaces/index.mdx | 100 + .../enterprise/workspaces/json-filtering.mdx | 117 ++ .../enterprise/workspaces/settings/access.mdx | 54 + .../workspaces/settings/deletion.mdx | 125 ++ .../enterprise/workspaces/settings/index.mdx | 213 +++ .../workspaces/settings/notifications.mdx | 130 ++ .../workspaces/settings/run-tasks.mdx | 134 ++ .../workspaces/settings/run-triggers.mdx | 51 + .../workspaces/settings/ssh-keys.mdx | 63 + .../enterprise/workspaces/settings/vcs.mdx | 127 ++ .../docs/enterprise/workspaces/state.mdx | 257 +++ .../docs/enterprise/workspaces/tags.mdx | 94 + .../enterprise/workspaces/variables/index.mdx | 237 +++ .../variables/managing-variables.mdx | 248 +++ .../img/docs/ado-required-status-check.png | Bin 0 -> 232272 bytes .../docs/azure-devops-server-public-keys.png | Bin 0 -> 132652 bytes ...evops-services-application-permissions.png | Bin 0 -> 101705 bytes .../azure-devops-services-oauth-policies.png | Bin 0 -> 130401 bytes .../v000011-1/img/docs/download-mocks.png | Bin 0 -> 56945 bytes .../v000011-1/img/docs/json-viewer-intro.png | Bin 0 -> 61869 bytes ...n-vcs-general-aggregated-status-checks.png | Bin 0 -> 122466 bytes ...s-general-non-aggregated-status-checks.png | Bin 0 -> 179599 bytes .../v000011-1/img/docs/runs-confirm.png | Bin 0 -> 305292 bytes .../img/docs/sentinel-json-enter-filter.png | Bin 0 -> 17427 bytes .../img/docs/sentinel-json-quick-filter.png | Bin 0 -> 56943 bytes .../v000011-1/img/docs/sentinel-view-json.png | Bin 0 -> 49721 bytes .../img/docs/service-now-comments.png | Bin 0 -> 288283 bytes .../docs/service-now-service-graph-apikey.png | Bin 0 -> 210155 bytes ...ervice-graph-conditional-class-mapping.png | Bin 0 -> 281274 bytes ...rvice-now-service-graph-deactivate-etl.png | Bin 0 -> 167695 bytes .../docs/service-now-service-graph-design.png | Bin 0 -> 247189 bytes ...ow-service-graph-etl-attribute-mapping.png | Bin 0 -> 741820 bytes ...now-service-graph-etl-condition-update.png | Bin 0 -> 331274 bytes ...service-graph-etl-editing-relationship.png | Bin 0 -> 393932 bytes ...service-graph-etl-setting-relationship.png | Bin 0 -> 368626 bytes .../service-now-service-graph-import-set.png | Bin 0 -> 376904 bytes ...ice-now-service-graph-scheduled-import.png | Bin 0 -> 507242 bytes ...ice-now-service-graph-state-object-url.png | Bin 0 -> 281619 bytes .../docs/service-now-service-graph-tags.png | Bin 0 -> 594043 bytes ...rvice-now-service-graph-team-token-gen.png | Bin 0 -> 307529 bytes .../docs/service-now-service-graph-tfconn.png | Bin 0 -> 282371 bytes ...ice-now-service-graph-webhook-schedule.png | Bin 0 -> 214156 bytes .../service-now-service-graph-webhook-tfc.png | Bin 0 -> 303560 bytes ...ervice-now-service-graph-webhook-token.png | Bin 0 -> 135170 bytes .../v000011-1/img/docs/service-now-store.png | Bin 0 -> 43209 bytes .../img/docs/service-now-updated-config.png | Bin 0 -> 156774 bytes .../img/docs/service-now-vcs-repository.png | Bin 0 -> 181211 bytes ...icenow-catalog-add-variables-to-action.png | Bin 0 -> 215320 bytes ...icenow-catalog-adjust-script-variables.png | Bin 0 -> 236014 bytes .../servicenow-catalog-configure-item.png | Bin 0 -> 93516 bytes .../docs/servicenow-catalog-copied-item.png | Bin 0 -> 146251 bytes .../docs/servicenow-catalog-copy-action.png | Bin 0 -> 84828 bytes .../img/docs/servicenow-catalog-copy-flow.png | Bin 0 -> 115571 bytes .../img/docs/servicenow-catalog-edit-flow.png | Bin 0 -> 106294 bytes ...ervicenow-catalog-fill-new-action-step.png | Bin 0 -> 167001 bytes .../docs/servicenow-catalog-get-variables.png | Bin 0 -> 238140 bytes .../servicenow-catalog-new-varset-form.png | Bin 0 -> 56763 bytes .../docs/servicenow-catalog-new-varset.png | Bin 0 -> 56398 bytes .../docs/servicenow-catalog-open-action.png | Bin 0 -> 114861 bytes .../docs/servicenow-catalog-original-flow.png | Bin 0 -> 63765 bytes .../servicenow-catalog-process-engine.png | Bin 0 -> 36154 bytes ...g-remove-example-variables-from-action.png | Bin 0 -> 222812 bytes ...cenow-catalog-remove-example-variables.png | Bin 0 -> 98146 bytes .../docs/servicenow-catalog-rename-action.png | Bin 0 -> 39580 bytes .../servicenow-catalog-replace-action.png | Bin 0 -> 138206 bytes .../servicenow-catalog-service-portal.png | Bin 0 -> 28681 bytes ...rvicenow-catalog-update-process-engine.png | Bin 0 -> 66390 bytes .../img/docs/servicenow-catalog-variables.png | Bin 0 -> 43305 bytes .../terraform-cloud-run-tasks-diagram.png | Bin 0 -> 73901 bytes .../img/docs/tfc-explorer-health.png | Bin 0 -> 183878 bytes .../img/docs/workspace-net-infra-combined.png | Bin 0 -> 23830 bytes .../img/docs/workspace-net-infra-split.png | Bin 0 -> 24195 bytes testing | 1 + 248 files changed, 47550 insertions(+) create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/_template.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/account.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agent-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agents.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/applies.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/assessment-results.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/changelog.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/comments.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/configuration-versions.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/cost-estimates.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/github-app-installations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/no-code-provisioning.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/notification-configurations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-clients.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-memberships.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tags.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organizations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plan-exports.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plans.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policies.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-checks.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-evaluations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-set-params.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-sets.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/gpg-keys.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/manage-module-versions.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/modules.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/provider-versions-platforms.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/providers.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/tests.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/project-team-access.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/projects.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/reserved-tag-keys.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-task-stages-and-results.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks-integration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-triggers.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/ssh-keys.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/stability-policy.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-version-outputs.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-versions.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-access.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-members.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/teams.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/user-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/users.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variable-sets.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variables.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/vcs-events.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-resources.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-variables.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspaces.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/architectural-details/data-security.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/aws.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/azure.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/gcp.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/aws-service-catalog/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/annotations-and-labels.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/api-reference.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/ops-v2-migration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/setup.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/run-tasks/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/admin-guide.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/developer-reference.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/example-customizations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/troubleshoot.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/customizations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/aws.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/azure.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/gcp.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/vsphere.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/service-graph-setup.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/migrate/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/execute.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/prepare.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/module-design.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/provisioning.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/custom-sentinel.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/opa.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig-v2.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan-v2.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfrun.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate-v2.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/opa-vcs.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/sentinel-vcs.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-library.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-sentinel.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/test-sentinel.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/json.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/projects/best-practices.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/projects/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/projects/manage.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/add.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/design.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/manage-module-versions.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-modules.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-providers.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/test.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/registry/using.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/api.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/cli.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/install-software.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/manage.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/modes-and-options.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/remote-operations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/run-environment.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/states.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/run/ui.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/2fa.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/api-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/manage-reserved-tags.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-status-checks.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/permissions.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/manage.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/notifications.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/users.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-server.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services-pat.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-cloud.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-data-center.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/github-enterprise.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/github.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-com.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-eece.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/vcs/troubleshooting.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/best-practices.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/browse.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/configurations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/create.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/aws-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/azure-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/gcp-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/aws-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/gcp-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/kubernetes-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/manual-generation.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/aws-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/azure-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/gcp-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-configuration.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/health.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/json-filtering.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/access.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/deletion.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/notifications.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-tasks.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-triggers.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/ssh-keys.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/vcs.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/state.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/tags.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/index.mdx create mode 100644 content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/managing-variables.mdx create mode 100644 content/ptfe-releases/v000011-1/img/docs/ado-required-status-check.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/azure-devops-server-public-keys.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/azure-devops-services-application-permissions.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/azure-devops-services-oauth-policies.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/download-mocks.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/json-viewer-intro.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/organization-vcs-general-aggregated-status-checks.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/organization-vcs-general-non-aggregated-status-checks.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/runs-confirm.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/sentinel-json-enter-filter.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/sentinel-json-quick-filter.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/sentinel-view-json.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-comments.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-apikey.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-conditional-class-mapping.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-deactivate-etl.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-design.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-attribute-mapping.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-condition-update.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-editing-relationship.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-setting-relationship.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-import-set.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-scheduled-import.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-state-object-url.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-tags.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-team-token-gen.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-tfconn.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-schedule.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-tfc.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-token.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-store.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-updated-config.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/service-now-vcs-repository.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-add-variables-to-action.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-adjust-script-variables.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-configure-item.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copied-item.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copy-action.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copy-flow.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-edit-flow.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-fill-new-action-step.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-get-variables.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-new-varset-form.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-new-varset.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-open-action.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-original-flow.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-process-engine.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-remove-example-variables-from-action.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-remove-example-variables.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-rename-action.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-replace-action.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-service-portal.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-update-process-engine.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-variables.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/terraform-cloud-run-tasks-diagram.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/tfc-explorer-health.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/workspace-net-infra-combined.png create mode 100644 content/ptfe-releases/v000011-1/img/docs/workspace-net-infra-split.png create mode 160000 testing diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/_template.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/_template.mdx new file mode 100644 index 0000000000..94c74253f0 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/_template.mdx @@ -0,0 +1,222 @@ +--- +page_title: /example-endpoint API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/endpoint-name` to {A meaningful + description of this endpoint}. Aim for 130-160 characters total. +source: terraform-docs-common +--- + +Follow this template to format each API method. There are usually multiple sections like this on a given API endpoint page. + +<!-- Boilerplate link references: This entire list should be included at the top of every API page, so that the tables can use short links freely. This SHOULD be all of the status codes we use in HCP Terraform's API; if we need to add more, update the list on every page. --> + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: http://jsonapi.org/format/#error-objects + +# Example name API reference + +A explanatory sentence about what this thing in HCP Terraform does. + +## Create a Something + +Add at least one sentence of description about what this endpoint does. + +<!-- Header: "Verb a Noun" or "Verb Nouns." --> + +`POST /organizations/:organization_name/somethings` + +<!-- ^ The method and path are styled as a single code span, with global prefix (`/api/v2`) omitted and the method capitalized. --> + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization to create the something in. The organization must already exist in the system, and the user must have permissions to create new somethings. | + +<!-- ^ The list of URL path parameters goes directly below the method and path, without a header of its own. They're simpler than other parameters because they're always strings and they're always mandatory, so this table only has two columns. Prefix URL path parameter names with a colon. + +If further explanation of this method is needed beyond its title, write it here, after the parameter list. --> + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +<!-- ^ Include a note like the above if the endpoint CANNOT be used with a given token type. Most endpoints don't need this. --> + +| Status | Response | Reason | +| ------- | -------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "somethings"`) | Successfully created a team | +| [400][] | [JSON API error object][] | Invalid `include` parameter | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [500][] | [JSON API error object][] | Failure during team creation | + +<!-- ^ Include status codes even if they're plain 200/404. +If a JSON API document is returned, specify the `type`. +If the table includes links, use reference-style links to keep the table size small. The references should be included once per API page, at the very top. + --> + +### Query Parameters + +[These are standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +<!-- ^ Query parameters get their own header and boilerplate. Omit the whole section if this method takes no query parameters; we only use them for certain GET requests. --> + +| Parameter | Description | +| ----------------------- | ------------------------------------------------------------- | +| `filter[workspace][id]` | **Required.** The workspace ID where this action will happen. | + +<!-- ^ This table is flexible. If we somehow end up with a case where there's a long list of parameters, in a mix of optional and required, you could add a "Required?" or "Default" column or something; likewise if there are multiple data types in play. But in the usual minimal case, keep the table minimal and style important information as strong emphasis. + +Do not prefix query parameter names with a question mark. --> + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +<!-- ^ Payload parameters go under this header and boilerplate. --> + +| Key path | Type | Default | Description | +| --------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"somethings"`. | +| `data[].type` | string | | ... <!-- use data[].x when data is an array of objects. --> | +| `data.attributes.category` | string | | Whether this is a blue or red something. Valid values are `"blue"` or `"red"`. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. If true then the something is written once and not visible thereafter. | +| `filter.workspace.name` | string | | The name of the workspace that owns the something. | +| `filter.organization.name` | string | | The name of the organization that owns the workspace. | + +<!-- +- Name the paths to these object properties with dot notation, starting from the + root of the JSON object. So, `data.attributes.category` instead of just + `category`. Since our API format uses deeply nested structures and is finicky + about the details, err on the side of being very explicit about where the user + puts everything. +- Style key paths as code spans. +- Style data types as plain text. +- Style string values as code spans with interior double-quotes, to distinguish +them from unquoted values like booleans and nulls. +- If a limited number of values are valid, list them in the description. +- In the rare case where a parameter is optional but has no default, you can + list something like "(nothing)" as the default and explain in the description. +- List the properties in the simplest order you can... but the concept of + "simple" can be a little complex. ;) As a general guideline: + - The first level of sorting is _importance._ This is open to interpretation, + but at least put the type and name first. + - The second level of sorting is _complexity._ If one of the properties is a + huge object with a bunch of sub-properties, put it last — this lets the + reader clear the simpler properties out of their head before dealing with + it, without having to remember where they were in the list and without + having to remember to pop back out of the "big sub-object" context when + they hit the end of it. + - The third order of sorting is _predictability,_ which basically means that + within a group of properties of equal relative importance and complexity, + you should probably list them alphabetically so it's easier to find a + specific property. +--> + +### Available Related Resources + +<!-- Omit this subheader and section if it's not applicable. --> + +This GET endpoint can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| ------------------ | --------------------------------------------- | +| `organization` | The full organization record. | +| `current_run` | Additional information about the current run. | +| `current_run.plan` | The plan used in the current run. | + +### Sample Payload + +```json +{ + "data": { + "type":"somethings", + "attributes": { + "category":"red", + "sensitive":true + } + }, + "filter": { + "organization": { + "name":"my-organization" + }, + "workspace": { + "name":"my-workspace" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/somethings +``` + +<!-- In curl examples, you can use the `$TOKEN` environment variable. If it's a GET request with query parameters, you can use double-quotes to have curl handle the URL encoding for you. + +Make sure to test a query that's very nearly the same as the example, to avoid errors. --> + +### Sample Response + +```json +{ + "data": { + "id":"som-EavQ1LztoRTQHSNT", + "type":"somethings", + "attributes": { + "sensitive":true, + "category":"red", + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self":"/api/v2/somethings/som-EavQ1LztoRTQHSNT" + } + } +} +``` + +<!-- Make sure to mangle any real IDs this might expose. --> diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/account.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/account.mdx new file mode 100644 index 0000000000..570770ef0d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/account.mdx @@ -0,0 +1,278 @@ +--- +page_title: /account API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/account` endpoint to manage the current + user. Learn how to read and update your account's details and change your + password. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Account API reference + +Account represents the current user interacting with Terraform. It returns the same type of object as the [Users](/terraform/enterprise/api-docs/users) API, but also includes an email address, which is hidden when viewing info about other users. + +For internal reasons, HCP Terraform associates team and organization tokens with a synthetic user account called _service user_. HCP Terraform returns the associated service user for account requests authenticated by a team or organization token. Use the `authenticated-resource` relationship to access the underlying team or organization associated with a token. For user tokens, you can use the user, itself. + +## Get your account details + +`GET /account/details` + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------- | +| [200][] | [JSON API document][] (`type: "users"`) | The request was successful | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/account/details +``` + +### Sample Response + +```json +{ + "data": { + "id": "user-V3R563qtJNcExAkN", + "type": "users", + "attributes": { + "username": "admin", + "is-service-account": false, + "auth-method": "tfc", + "avatar-url": "https://www.gravatar.com/avatar/9babb00091b97b9ce9538c45807fd35f?s=100&d=mm", + "v2-only": false, + "is-site-admin": true, + "is-sso-login": false, + "email": "admin@hashicorp.com", + "unconfirmed-email": null, + "permissions": { + "can-create-organizations": true, + "can-change-email": true, + "can-change-username": true + } + }, + "relationships": { + "authentication-tokens": { + "links": { + "related": "/api/v2/users/user-V3R563qtJNcExAkN/authentication-tokens" + } + }, + "authenticated-resource": { + "data": { + "id": "user-V3R563qtJNcExAkN", + "type": "users" + }, + "links": { + "related": "/api/v2/users/user-V3R563qtJNcExAkN" + } + } + }, + "links": { + "self": "/api/v2/users/user-V3R563qtJNcExAkN" + } + } +} +``` + +## Update your account info + +Your username and email address can be updated with this endpoint. + +`PATCH /account/update` + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "users"`) | Your info was successfully updated | +| [401][] | [JSON API error object][] | Unauthorized | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| -------------------------- | ------ | ------- | --------------------------------------------------------------- | +| `data.type` | string | | Must be `"users"` | +| `data.attributes.username` | string | | New username | +| `data.attributes.email` | string | | New email address (must be confirmed afterwards to take effect) | + +### Sample Payload + +```json +{ + "data": { + "type": "users", + "attributes": { + "email": "admin@example.com", + "username": "admin" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/account/update +``` + +### Sample Response + +```json +{ + "data": { + "id": "user-V3R563qtJNcExAkN", + "type": "users", + "attributes": { + "username": "admin", + "is-service-account": false, + "auth-method": "hcp_username_password", + "avatar-url": "https://www.gravatar.com/avatar/9babb00091b97b9ce9538c45807fd35f?s=100&d=mm", + "v2-only": false, + "is-site-admin": true, + "is-sso-login": false, + "email": "admin@hashicorp.com", + "unconfirmed-email": null, + "permissions": { + "can-create-organizations": true, + "can-change-email": true, + "can-change-username": true + } + }, + "relationships": { + "authentication-tokens": { + "links": { + "related": "/api/v2/users/user-V3R563qtJNcExAkN/authentication-tokens" + } + } + }, + "links": { + "self": "/api/v2/users/user-V3R563qtJNcExAkN" + } + } +} +``` + +## Change your password + +`PATCH /account/password` + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "users"`) | Your password was successfully changed | +| [401][] | [JSON API error object][] | Unauthorized | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| --------------------------------------- | ------ | ------- | ------------------------------------------------------- | +| `data.type` | string | | Must be `"users"` | +| `data.attributes.current_password` | string | | Current password | +| `data.attributes.password` | string | | New password (must be at least 10 characters in length) | +| `data.attributes.password_confirmation` | string | | New password (confirmation) | + +### Sample Payload + +```json +{ + "data": { + "type": "users", + "attributes": { + "current_password": "current password e.g. 2:C)e'G4{D\n06:[d1~y", + "password": "new password e.g. 34rk492+jgLL0@xhfyisj", + "password_confirmation": "new password e.g. 34rk492+jLL0@xhfyisj" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/account/password +``` + +### Sample Response + +```json +{ + "data": { + "id": "user-V3R563qtJNcExAkN", + "type": "users", + "attributes": { + "username": "admin", + "is-service-account": false, + "auth-method": "hcp_github", + "avatar-url": "https://www.gravatar.com/avatar/9babb00091b97b9ce9538c45807fd35f?s=100&d=mm", + "v2-only": false, + "is-site-admin": true, + "is-sso-login": false, + "email": "admin@hashicorp.com", + "unconfirmed-email": null, + "permissions": { + "can-create-organizations": true, + "can-change-email": true, + "can-change-username": true + } + }, + "relationships": { + "authentication-tokens": { + "links": { + "related": "/api/v2/users/user-V3R563qtJNcExAkN/authentication-tokens" + } + } + }, + "links": { + "self": "/api/v2/users/user-V3R563qtJNcExAkN" + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agent-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agent-tokens.mdx new file mode 100644 index 0000000000..e1d27c1395 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agent-tokens.mdx @@ -0,0 +1,272 @@ +--- +page_title: /authentication-tokens API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/authentication-tokens` endpoint to manage + agent tokens. Learn how to read, create, and destroy agent tokens. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Agent token API reference + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/agents.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## List Agent Tokens + +`GET /agent-pools/:agent_pool_id/authentication-tokens` + +| Parameter | Description | +| ---------------- | ------------------------- | +| `:agent_pool_id` | The ID of the Agent Pool. | + +The objects returned by this endpoint only contain metadata, and do not include the secret text of any authentication tokens. A token is only shown upon creation, and cannot be recovered later. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "authentication-tokens"`) | Success | +| [404][] | [JSON API error object][] | Agent Pool not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ---------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 tokens per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd/authentication-tokens +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "at-bonpPzYqv2bGD7vr", + "type": "authentication-tokens", + "attributes": { + "created-at": "2020-08-07T19:38:20.868Z", + "last-used-at": "2020-08-07T19:40:55.139Z", + "description": "asdfsdf", + "token": null + }, + "relationships": { + "created-by": { + "data": { + "id": "user-Nxv6svuhVrTW7eb1", + "type": "users" + } + } + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd/authentication-tokens?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd/authentication-tokens?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd/authentication-tokens?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +## Show an Agent Token + +`GET /authentication-tokens/:id` + +| Parameter | Description | +| --------- | --------------------------------- | +| `:id` | The ID of the Agent Token to show | + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "authentication-tokens"`) | Success | +| [404][] | [JSON API error object][] | Agent Token not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/authentication-tokens/at-bonpPzYqv2bGD7vr +``` + +### Sample Response + +```json +{ + "data": { + "id": "at-bonpPzYqv2bGD7vr", + "type": "authentication-tokens", + "attributes": { + "created-at": "2020-08-07T19:38:20.868Z", + "last-used-at": "2020-08-07T19:40:55.139Z", + "description": "test token", + "token": null + }, + "relationships": { + "created-by": { + "data": { + "id": "user-Nxv6svuhVrTW7eb1", + "type": "users" + } + } + } + } +} +``` + +## Create an Agent Token + +`POST /agent-pools/:agent_pool_id/authentication-tokens` + +| Parameter | Description | +| ---------------- | ------------------------ | +| `:agent_pool_id` | The ID of the Agent Pool | + +This endpoint returns the secret text of the created authentication token. A token is only shown upon creation, and cannot be recovered later. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "authentication-tokens"`) | The request was successful | +| [404][] | [JSON API error object][] | Agent Pool not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [500][] | [JSON API error object][] | Failure during Agent Token creation | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | ------------------------------------ | +| `data.type` | string | | Must be `"authentication-tokens"`. | +| `data.attributes.description` | string | | The description for the Agent Token. | + +### Sample Payload + +```json +{ + "data": { + "type": "authentication-tokens", + "attributes": { + "description":"api" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/agent-pools/apool-xkuMi7x4LsEnBUdY/authentication-tokens +``` + +### Sample Response + +```json +{ + "data": { + "id": "at-2rG2oYU9JEvfaqji", + "type": "authentication-tokens", + "attributes": { + "created-at": "2020-08-10T22:29:21.907Z", + "last-used-at": null, + "description": "api", + "token": "eHub7TsW7fz7LQ.atlasv1.cHGFcvf2VxVfUH4PZ7UNdaGB6SjyKWs5phdZ371zkI2KniZs2qKgrAcazhlsiy02awk" + }, + "relationships": { + "created-by": { + "data": { + "id": "user-Nxv6svuhVrTW7eb1", + "type": "users" + } + } + } + } +} +``` + +## Destroy an Agent Token + +`DELETE /api/v2/authentication-tokens/:id` + +| Parameter | Description | +| --------- | ------------------------------------- | +| `:id` | The ID of the Agent Token to destroy. | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------- | +| [204][] | Empty response | The Agent Token was successfully destroyed | +| [404][] | [JSON API error object][] | Agent Token not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/authentication-tokens/at-6yEmxNAhaoQLH1Da +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agents.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agents.mdx new file mode 100644 index 0000000000..58acfa2aad --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/agents.mdx @@ -0,0 +1,637 @@ +--- +page_title: /agents and /agent-pools API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/agents` endpoint to read and delete + agents. Use the `/agent-pools` endpoint to read, create, update, and delete + agent pools. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Agents and agent pools API reference + +An Agent Pool represents a group of Agents, often related to one another by sharing a common network segment or purpose. +A workspace may be configured to use one of the organization's agent pools to run remote operations with isolated, +private, or on-premises infrastructure. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/agents.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## List Agent Pools + +`GET /organizations/:organization_name/agent-pools` + +| Parameter | Description | +| -------------------- | ----------------------------- | +| `:organization_name` | The name of the organization. | + +This endpoint allows you to list agent pools, their agents, and their tokens for an organization. + +| Status | Response | Reason | +| ------- | --------------------------------------------- | ---------------------- | +| [200][] | [JSON API document][] (`type: "agent-pools"`) | Success | +| [404][] | [JSON API error object][] | Organization not found | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | +| `q` | **Optional.** A search query string. Agent pools are searchable by name. | | +| `sort` | **Optional.** Allows sorting the returned agents pools. Valid values are `"name"` and `"created-at"`. Prepending a hyphen to the sort parameter will reverse the order (e.g. `"-name"`). | | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 agent pools per page. | | +| `filter[allowed_workspaces][name]` | **Optional.** Filters agent pools to those associated with the given workspace. The workspace must have permission to use the agent pool. Refer to [Scoping Agent Pools to Specific Workspaces](/terraform/cloud-docs/agents#scope-an-agent-pool-to-specific-workspaces). | | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/organizations/my-organization/agent-pools +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "apool-yoGUFz5zcRMMz53i", + "type": "agent-pools", + "attributes": { + "name": "example-pool", + "created-at": "2020-08-05T18:10:26.964Z", + "organization-scoped": false, + "agent-count": 3 + }, + "relationships": { + "agents": { + "links": { + "related": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/agents" + } + }, + "authentication-tokens": { + "links": { + "related": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/authentication-tokens" + } + }, + "workspaces": { + "data": [ + { + "id": "ws-9EEkcEQSA3XgWyGe", + "type": "workspaces" + } + ] + }, + "allowed-workspaces": { + "data": [ + { + "id": "ws-x9taqV23mxrGcDrn", + "type": "workspaces" + } + ] + } + }, + "links": { + "self": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/agent-pools?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/agent-pools?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/my-organization/agent-pools?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + }, + "status-counts": { + "total": 1, + "matching": 1 + } + } +} +``` + +## List Agents + +`GET /agent-pools/:agent_pool_id/agents` + +| Parameter | Description | +| ---------------- | --------------------------------- | +| `:agent_pool_id` | The ID of the Agent Pool to list. | + +| Status | Response | Reason | +| ------- | ---------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "agents"`) | Success | +| [404][] | [JSON API error object][] | Agent Pool not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ------------------------- | ---------------------------------------------------------------------------- | +| `filter[last-ping-since]` | **Optional.** Accepts a date in ISO8601 format (ex. `2020-08-11T10:41:23Z`). | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 agents per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/agent-pools/apool-xkuMi7x4LsEnBUdY/agents +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "agent-A726QeosTCpCumAs", + "type": "agents", + "attributes": { + "name": "my-cool-agent", + "status": "idle", + "ip-address": "123.123.123.123", + "last-ping-at": "2020-10-09T18:52:25.246Z" + }, + "links": { + "self": "/api/v2/agents/agent-A726QeosTCpCumAs" + } + }, + { + "id": "agent-4cQzjbr1cnM6Pcxr", + "type": "agents", + "attributes": { + "name": "my-other-cool-agent", + "status": "exited", + "ip-address": "123.123.123.123", + "last-ping-at": "2020-08-12T15:25:09.726Z" + }, + "links": { + "self": "/api/v2/agents/agent-4cQzjbr1cnM6Pcxr" + } + }, + { + "id": "agent-yEJjXQCucpNxtxd2", + "type": "agents", + "attributes": { + "name": null, + "status": "errored", + "ip-address": "123.123.123.123", + "last-ping-at": "2020-08-11T06:22:20.300Z" + }, + "links": { + "self": "/api/v2/agents/agent-yEJjXQCucpNxtxd2" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/agents?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/agents?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/agents?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 3 + } + } +} +``` + +## Show an Agent Pool + +`GET /agent-pools/:id` + +| Parameter | Description | +| --------- | -------------------------------- | +| `:id` | The ID of the Agent Pool to show | + +| Status | Response | Reason | +| ------- | --------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "agent-pools"`) | Success | +| [404][] | [JSON API error object][] | Agent Pool not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd +``` + +### Sample Response + +```json +{ + "data": { + "id": "apool-yoGUFz5zcRMMz53i", + "type": "agent-pools", + "attributes": { + "name": "example-pool", + "created-at": "2020-08-05T18:10:26.964Z", + "organization-scoped": false + }, + "relationships": { + "agents": { + "links": { + "related": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/agents" + } + }, + "authentication-tokens": { + "links": { + "related": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/authentication-tokens" + } + }, + "workspaces": { + "data": [ + { + "id": "ws-9EEkcEQSA3XgWyGe", + "type": "workspaces" + } + ] + }, + "allowed-workspaces": { + "data": [ + { + "id": "ws-x9taqV23mxrGcDrn", + "type": "workspaces" + } + ] + } + }, + "links": { + "self": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i" + } + } +} +``` + +## Show an Agent + +`GET /agents/:id` + +| Parameter | Description | +| --------- | --------------------------- | +| `:id` | The ID of the agent to show | + +| Status | Response | Reason | +| ------- | ---------------------------------------- | ------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "agents"`) | Success | +| [404][] | [JSON API error object][] | Agent not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/agents/agent-73PJNzbZB5idR7AQ +``` + +### Sample Response + +```json +{ + "data": { + "id": "agent-Zz9PTEcUgBtYzht8", + "type": "agents", + "attributes": { + "name": "my-agent", + "status": "busy", + "ip-address": "123.123.123.123", + "last-ping-at": "2020-09-08T18:47:35.361Z" + }, + "links": { + "self": "/api/v2/agents/agent-Zz9PTEcUgBtYzht8" + } + } +} +``` + +This endpoint lists details about an agent along with that agent's status. [Learn more about agents statuses](/terraform/cloud-docs/agents/agent-pools#view-agent-statuses). + +## Delete an Agent + +`DELETE /agents/:id` + +| Parameter | Description | +| --------- | ----------------------------- | +| `:id` | The ID of the agent to delete | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------ | +| [204][] | No Content | Success | +| [412][] | [JSON API error object][] | Agent is not deletable. Agents must have a status of `unknown`, `errored`, or `exited` before being deleted. | +| [404][] | [JSON API error object][] | Agent not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --request DELETE \ + https://app.terraform.io/api/v2/agents/agent-73PJNzbZB5idR7AQ +``` + +## Create an Agent Pool + +`POST /organizations/:organization_name/agent-pools` + +| Parameter | Description | +| -------------------- | ----------------------------- | +| `:organization_name` | The name of the organization. | + +This endpoint allows you to create an Agent Pool for an organization. Only one Agent Pool may exist for an organization. + +| Status | Response | Reason | +| ------- | --------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "agent-pools"`) | Agent Pool successfully created | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------- | ------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"agent-pools"`. | +| `data.attributes.name` | string | | The name of the agent pool, which can only include letters, numbers, `-`, and `_`. This will be used as an identifier and must be unique in the organization. | +| `data.attributes.organization-scoped` | bool | true | The scope of the agent pool. If true, all workspaces in the organization can use the agent pool. | +| `data.relationships.allowed-workspaces.data.type` | string | | Must be `"workspaces"`. | +| `data.relationships.allowed-workspaces.data.id` | string | | The ID of the workspace that has permission to use the agent pool. Refer to [Scoping Agent Pools to Specific Workspaces](/terraform/cloud-docs/agents#scope-an-agent-pool-to-specific-workspaces). | + +### Sample Payload + +```json +{ + "data": { + "type": "agent-pools", + "attributes": { + "name": "my-pool", + "organization-scoped": false + }, + "relationships": { + "allowed-workspaces": { + "data": [ + { + "id": "ws-x9taqV23mxrGcDrn", + "type": "workspaces" + } + ] + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/agent-pools +``` + +### Sample Response + +```json +{ + "data": { + "id": "apool-55jZekR57npjHHYQ", + "type": "agent-pools", + "attributes": { + "name": "my-pool", + "created-at": "2020-10-13T16:32:45.165Z", + "organization-scoped": false, + + }, + "relationships": { + "agents": { + "links": { + "related": "/api/v2/agent-pools/apool-55jZekR57npjHHYQ/agents" + } + }, + "authentication-tokens": { + "links": { + "related": "/api/v2/agent-pools/apool-55jZekR57npjHHYQ/authentication-tokens" + } + }, + "workspaces": { + "data": [] + }, + "allowed-workspaces": { + "data": [ + { + "id": "ws-x9taqV23mxrGcDrn", + "type": "workspaces" + } + ] + } + }, + "links": { + "self": "/api/v2/agent-pools/apool-55jZekR57npjHHYQ" + } + } +} +``` + +## Update an Agent Pool + +`PATCH /agent-pools/:id` + +| Parameter | Description | +| --------- | ---------------------------------- | +| `:id` | The ID of the Agent Pool to update | + +| Status | Response | Reason | +| ------- | --------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "agent-pools"`) | Success | +| [404][] | [JSON API error object][] | Agent Pool not found, or user unauthorized to perform action | +| [422][] | JSON error document | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------- | ------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"agent-pools"`. | +| `data.attributes.name` | string | (previous value) | The name of the agent pool, which can only include letters, numbers, `-`, and `_`. This will be used as an identifier and must be unique in the organization. | +| `data.attributes.organization-scoped` | bool | true | The scope of the agent pool. If true, all workspaces in the organization can use the agent pool. | +| `data.relationships.allowed-workspaces.data.type` | string | | Must be `"workspaces"`. | +| `data.relationships.allowed-workspaces.data.id` | string | | The ID of the workspace that has permission to use the agent pool. Refer to [Scoping Agent Pools to Specific Workspaces](/terraform/cloud-docs/agents#scope-an-agent-pool-to-specific-workspaces). | + +### Sample Payload + +```json +{ + "data": { + "type": "agent-pools", + "attributes": { + "name": "example-pool", + "organization-scoped": false + }, + "relationships": { + "allowed-workspaces": { + "data": [ + { + "id": "ws-x9taqV23mxrGcDrn", + "type": "workspaces" + } + ] + } + } + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd +``` + +### Sample Response + +```json +{ + "data": { + "id": "apool-yoGUFz5zcRMMz53i", + "type": "agent-pools", + "attributes": { + "name": "example-pool", + "created-at": "2020-08-05T18:10:26.964Z" + }, + "relationships": { + "agents": { + "links": { + "related": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/agents" + } + }, + "authentication-tokens": { + "links": { + "related": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i/authentication-tokens" + } + }, + "workspaces": { + "data": [ + { + "id": "ws-9EEkcEQSA3XgWyGe", + "type": "workspaces" + } + ] + }, + "allowed-workspaces": { + "data": [ + { + "id": "ws-x9taqV23mxrGcDrn", + "type": "workspaces" + } + ] + } + }, + "links": { + "self": "/api/v2/agent-pools/apool-yoGUFz5zcRMMz53i" + } + } +} +``` + +## Delete an Agent Pool + +`DELETE /agent-pools/:agent_pool_id` + +| Parameter | Description | +| ---------------- | ------------------------------------- | +| `:agent_pool_id` | The ID of the agent pool ID to delete | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/agent-pools/apool-MCf6kkxu5FyHbqhd +``` + +### Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| ------------- | ------------------------------------------- | +| `workspaces` | The workspaces attached to this agent pool. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/applies.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/applies.mdx new file mode 100644 index 0000000000..a124bf588c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/applies.mdx @@ -0,0 +1,201 @@ +--- +page_title: /applies API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/applies` endpoint to read the results of + a Terraform apply and to recover any failed state uploads after applying. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[307]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Applies API reference + +An apply represents the results of applying a Terraform Run's execution plan. + +## Attributes + +### Apply States + +You'll find the apply state in `data.attributes.status`, as one of the following values. + +| State | Description | +| ------------------------- | ------------------------------------------------------------------------------ | +| `pending` | The initial status of a apply once it has been created. | +| `managed_queued`/`queued` | The apply has been queued, awaiting backend service capacity to run terraform. | +| `running` | The apply is running. | +| `errored` | The apply has errored. This is a final state. | +| `canceled` | The apply has been canceled. This is a final state. | +| `finished` | The apply has completed successfully. This is a final state. | +| `unreachable` | The apply will not run. This is a final state. | + +## Show an apply + +`GET /applies/:id` + +| Parameter | Description | +| --------- | ---------------------------- | +| `id` | The ID of the apply to show. | + +There is no endpoint to list applies. You can find the ID for an apply in the +`relationships.apply` property of a run object. + +| Status | Response | Reason | +| ------- | ----------------------------------------- | ------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "applies"`) | The request was successful | +| [404][] | [JSON API error object][] | Apply not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/applies/apply-47MBvjwzBG8YKc2v +``` + +### Sample Response + +```json +{ + "data": { + "id": "apply-47MBvjwzBG8YKc2v", + "type": "applies", + "attributes": { + "execution-details": { + "mode": "remote", + }, + "status": "finished", + "status-timestamps": { + "queued-at": "2018-10-17T18:58:27+00:00", + "started-at": "2018-10-17T18:58:29+00:00", + "finished-at": "2018-10-17T18:58:37+00:00" + }, + "log-read-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6OFA1eEdlSFVHRSs4YUcwaW83a1dRRDA0U2E3T3FiWk1HM2NyQlNtcS9JS1hHN3dmTXJmaFhEYTlHdTF1ZlgxZ2wzVC9kVTlNcjRPOEJkK050VFI3U3dvS2ZuaUhFSGpVenJVUFYzSFVZQ1VZYno3T3UyYjdDRVRPRE5pbWJDVTIrNllQTENyTndYd1Y0ak1DL1dPVlN1VlNxKzYzbWlIcnJPa2dRRkJZZGtFeTNiaU84YlZ4QWs2QzlLY3VJb3lmWlIrajF4a1hYZTlsWnFYemRkL2pNOG9Zc0ZDakdVMCtURUE3dDNMODRsRnY4cWl1dUN5dUVuUzdnZzFwL3BNeHlwbXNXZWRrUDhXdzhGNnF4c3dqaXlZS29oL3FKakI5dm9uYU5ZKzAybnloREdnQ3J2Rk5WMlBJemZQTg", + "resource-additions": 1, + "resource-changes": 0, + "resource-destructions": 0, + "resource-imports": 0 + }, + "relationships": { + "state-versions": { + "data": [ + { + "id": "sv-TpnsuD3iewwsfeRD", + "type": "state-versions" + }, + { + "id": "sv-Fu1n6a3TgJ1Typq9", + "type": "state-versions" + } + ] + } + }, + "links": { + "self": "/api/v2/applies/apply-47MBvjwzBG8YKc2v" + } + } +} +``` + +_Using HCP Terraform agents_ + +[HCP Terraform agents](/terraform/enterprise/api-docs/agents) allow HCP Terraform to communicate with isolated, private, or on-premises infrastructure. When a workspace is set to use the agent execution mode, the apply response will include additional details about the agent pool and agent used. + +```json +{ + "data": { + "id": "apply-47MBvjwzBG8YKc2v", + "type": "applies", + "attributes": { + "execution-details": { + "agent-id": "agent-S1Y7tcKxXPJDQAvq", + "agent-name": "agent_01", + "agent-pool-id": "apool-Zigq2VGreKq7nwph", + "agent-pool-name": "first-pool", + "mode": "agent", + }, + "status": "finished", + "status-timestamps": { + "queued-at": "2018-10-17T18:58:27+00:00", + "started-at": "2018-10-17T18:58:29+00:00", + "finished-at": "2018-10-17T18:58:37+00:00" + }, + "log-read-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6OFA1eEdlSFVHRSs4YUcwaW83a1dRRDA0U2E3T3FiWk1HM2NyQlNtcS9JS1hHN3dmTXJmaFhEYTlHdTF1ZlgxZ2wzVC9kVTlNcjRPOEJkK050VFI3U3dvS2ZuaUhFSGpVenJVUFYzSFVZQ1VZYno3T3UyYjdDRVRPRE5pbWJDVTIrNllQTENyTndYd1Y0ak1DL1dPVlN1VlNxKzYzbWlIcnJPa2dRRkJZZGtFeTNiaU84YlZ4QWs2QzlLY3VJb3lmWlIrajF4a1hYZTlsWnFYemRkL2pNOG9Zc0ZDakdVMCtURUE3dDNMODRsRnY4cWl1dUN5dUVuUzdnZzFwL3BNeHlwbXNXZWRrUDhXdzhGNnF4c3dqaXlZS29oL3FKakI5dm9uYU5ZKzAybnloREdnQ3J2Rk5WMlBJemZQTg", + "resource-additions": 1, + "resource-changes": 0, + "resource-destructions": 0, + "resource-imports": 0 + }, + "relationships": { + "state-versions": { + "data": [ + { + "id": "sv-TpnsuD3iewwsfeRD", + "type": "state-versions" + }, + { + "id": "sv-Fu1n6a3TgJ1Typq9", + "type": "state-versions" + } + ] + } + }, + "links": { + "self": "/api/v2/applies/apply-47MBvjwzBG8YKc2v" + } + } +} +``` + +## Recover a failed state upload after applying + +`GET /applies/:id/errored-state` + +| Parameter | Description | +| --------- | ----------------------------------------- | +| `id` | The ID of the apply to recover state for. | + +It is possible that during the course of a Run, Terraform may fail to upload a +state file. This can happen for a variety of reasons, but should be an +exceptionally rare occurrence. HCP Terraform agent versions greater than 1.12.0 +include a fallback mechanism which attempts to upload the state directly to +HCP Terraform's backend storage system in these cases. This endpoint then +makes the raw data from these failed uploads available to users who are +authorized to read the state contents. + +| Status | Response | Reason | +| ------- | -------------------------------------------- | ----------------------------------------------------------------------------------- | +| [307][] | HTTP temporary redirect to state storage URL | Errored state available and user is authorized to read it | +| [404][] | [JSON API error object][] | Apply not found, errored state not uploaded, or user unauthorized to perform action | + +When a 307 redirect is returned, the storage URL to the raw state file will be +present in the `Location` header of the response. The URL in the `Location` +header will expire after one minute. It is recommended for the API client to +follow the redirect immediately. Each successful request to the errored-state +endpoint will generate a new, unique storage URL with the same one minute +expiration window. + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/applies/apply-47MBvjwzBG8YKc2v/errored-state +``` + +### Sample Response + + HTTP/1.1 307 Temporary Redirect + Content-Length: 22 + Content-Type: text/plain + Location: https://archivist.terraform.io/v1/object/dmF1bHQ6djE6OFA1eEdlSFVHRSs4YUcwaW83a1dRRDA0U2E3T3FiWk1HM2NyQlNtcS9JS1hHN3dmTXJmaFhEYTlHdTF1ZlgxZ2wzVC9kVTlNcjRPOEJkK050VFI3U3dvS2ZuaUhFSGpVenJVUFYzSFVZQ1VZYno3T3UyYjdDRVRPRE5pbWJDVTIrNllQTENyTndYd1Y0ak1DL1dPVlN1VlNxKzYzbWlIcnJPa2dRRkJZZGtFeTNiaU84YlZ4QWs2QzlLY3VJb3lmWlIrajF4a1hYZTlsWnFYemRkL2pNOG9Zc0ZDakdVMCtURUE3dDNMODRsRnY4cWl1dUN5dUVuUzdnZzFwL3BNeHlwbXNXZWRrUDhXdzhGNnF4c3dqaXlZS29oL3FKakI5dm9uYU5ZKzAybnloREdnQ3J2Rk5WMlBJemZQTg + + 307 Temporary Redirect diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/assessment-results.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/assessment-results.mdx new file mode 100644 index 0000000000..6ce07a2eda --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/assessment-results.mdx @@ -0,0 +1,129 @@ +--- +page_title: /assessment-results API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/assessment-results` endpoint to read a + health assessment's results, including details on continuous validation and + drift detection. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +# Health assessment results API reference + +An Assessment Result is the summary record of an instance of health assessment. HCP Terraform can perform automatic health assessments in a workspace to assess whether its real infrastructure matches the requirements defined in its Terraform configuration. Refer to [Health](/terraform/enterprise/workspaces/health) for more details. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/health-assessments.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Show Assessment Result + +Any user with read access to a workspace can retrieve assessment results for the workspace. + +`GET api/v2/assessment-results/:assessment_result_id` + +| Parameter | Description | +| ----------------------- | ------------------------ | +| `:assessment_result_id` | The assessment result ID | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/assessment-results/asmtres-cHh5777xm +``` + +### Sample Response + +```json +{ + "id": "asmtres-UG5rE9L1373hMYMA", + "type": "assessment-results", + "data": { + "attributes": { + "drifted": true, + "succeeded": true, + "error-msg": null, + "created-at": "2022-07-02T22:29:58+00:00", + }, + "links": { + "self": "/api/v2/assessment-results/asmtres-UG5rE9L1373hMYMA/" + "json-output": "/api/v2/assessment-results/asmtres-UG5rE9L1373hMYMA/json-output" + "json-schema": "/api/v2/assessment-results/asmtres-UG5rE9L1373hMYMA/json-schema" + "log-output": "/api/v2/assessment-results/asmtres-UG5rE9L1373hMYMA/log-output" + } + } +} +``` + +## Retrieve the JSON output from the assessment execution + +The following endpoints retrieve files documenting the plan, schema, and logged runtime associated with the specified assessment result. They provide complete context for an assessment result. The responses do not adhere to JSON API spec. + +You cannot access these endpoints with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access them with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens) that has admin level access to the workspace. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### JSON Plan + +The following endpoint returns the JSON plan output associated with the assessment result. + +`GET api/v2/assessment-results/:assessment_result_id/json-output` + +#### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/assessment-results/asmtres-cHh5777xm/json-output +``` + +### JSON Schema file + +The following endpoint returns the JSON [provider schema](/terraform/cli/commands/providers/schema) associated with the assessment result. + +`GET api/v2/assessment-results/:assessment_result_id/json-schema` + +#### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/assessment-results/asmtres-cHh5777xm/json-schema +``` + +### JSON Log Output + +The following endpoint returns Terraform JSON log output. + +`GET api/v2/assessment-results/assessment_result_id/log-output` + +#### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/assessment-results/asmtres-cHh5777xm/log-output +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/changelog.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/changelog.mdx new file mode 100644 index 0000000000..7cda177f5a --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/changelog.mdx @@ -0,0 +1,578 @@ +--- +page_title: API Changelog for Terraform Enterprise +page_id: api-changelog +description: >- + Use this log of Terraform Enterprise API changes to track new features and + evolving functionality over time. +source: terraform-docs-common +--- + +# API Changelog + +Keep track of changes to the API for HCP Terraform and Terraform Enterprise. + +## 2025-05-1 + +- Add `agent-pool` relationship to the [run task API](/terraform/enterprise/api-docs/run-tasks/run-tasks), which you can use to assign a run task to an agent pool. +- Add `private-run-tasks` to [feature entitlements](/terraform/enterprise/api-docs#feature-entitlements). + <!-- BEGIN: TFC:only name:revoke --> +- You can now revoke, and revert the revocation of, module versions. Learn more about [Managing module versions](/terraform/enterprise/api-docs/private-registry/manage-module-versions). + <!-- END: TFC:only name:revoke --> + +## 2025-03-20 + +- Add API documentation for multiple [team tokens](/terraform/enterprise/api-docs/api-tokens), and update documentation around [legacy team tokens](/terraform/enterprise/api-docs/team-tokens##legacy-team-tokens-api-reference). +- Update existing API documentation for [team tokens](/terraform/enterprise/api-docs/team-tokens) to distinguish multiple team tokens from [legacy team tokens](/terraform/enterprise/api-docs/team-tokens##legacy-team-tokens-api-reference). + +## 2025-3-10 + +- Document unique pagination metadata given in the response of [Organization Runs Index API](/terraform/enterprise/api-docs/run##list-runs-in-an-organization). + +## 2025-03-10 + +- Add new field `current_rum_count` to the [explorer API](/terraform/enterprise/api-docs/explorer) in the `workspaces` view type that lists a workspace's current resources under management. + +## 2024-11-19 + +- Clarify `tag-bindings` and `effective-tag-bindings` on [workspaces](/terraform/enterprise/api-docs/workspaces) and [projects](/terraform/enterprise/api-docs/projects) +- Adds new documentation for `PATCH`ing tag bindings on [projects](/terraform/enterprise/api-docs/projects) and [workspaces](/terraform/enterprise/api-docs/workspaces) + +## 2024-10-15 + +- Add new documentation for the ability to deprecate, and revert the deprecation of, module versions. Learn more about [Managing module versions](/terraform/enterprise/api-docs/private-registry/manage-module-versions). + +## 2024-10-14 + +- Update the [Organizations API](/terraform/enterprise/api-docs/organizations) to support the `speculative-plan-management-enabled` attribute, which controls [automatic cancellation of plan-only runs triggered by outdated commits](/terraform/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management). + +## 2024-10-11 + +- Add documentation for new timeframe filter on List endpoints for [Runs](/terraform/enterprise/api-docs/run) API + +## 2024-09-02 + +- Add warning about the deprecation and future removal of the [Policy Checks](/terraform/enterprise/api-docs/policy-checks) API. + +## 2024-08-16 + +- Fixes Workspace API responses to be consistent and contain all attributes and relationships. + +## 2024-08-14 + +- Add documentation for a new API endpoint that lists an [organization's team tokens](/terraform/enterprise/api-docs/team-tokens). + +## 2024-08-01 + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. +</EnterpriseAlert> + +- Update the [admin settings API](/terraform/enterprise/api-docs/admin/settings##update-general-settings) and [admin organizations API](/terraform/enterprise/api-docs/admin/organizations#update-an-organization) to indicate that the `terraform-build-worker-plan-timeout` and `terraform-build-worker-apply-timeout` attributes are deprecated and will be replaced by `plan-timeout` and `apply-timeout`, respectively. + +<!-- BEGIN: TFC:only name:audit-trail-tokens --> + +## 2024-07-24 + +- Remove beta tags from documentation for audit trail tokens. + <!-- END: TFC:only name:audit-trail-tokens --> + +## 2024-07-15 + +- Update the [Team API](/terraform/enterprise/api-docs/teams) to include `allow-member-token-management`. + +<!-- BEGIN: TFC:only name:audit-trail-tokens --> + +## 2024-07-12 + +- Add beta tags to documentation for audit trail tokens. + <!-- END: TFC:only name:audit-trail-tokens --> + +## 2024-06-25 + +- Add API documentation for new [team token management setting](/terraform/enterprise/users-teams-organizations/api-tokens). +- Update API documentation for the [manage teams permission](/terraform/enterprise/users-teams-organizations/permissions#team-management-permissions). + +## 2024-05-29 + +- Add API documentation for the new [audit trails token](/terraform/enterprise/api-docs/audit-trails-tokens). + +## 2024-05-23 + +- Update the [registry modules API](/terraform/enterprise/api-docs/private-registry/modules#create-a-module-version) for publishing new versions of branch based modules. + +## 2024-05-10 + +- Add API documentation for new [manage agent pools permission](/terraform/enterprise/users-teams-organizations/permissions#manage-agent-pools). + +## 2024-04-25 + +- Project names can now be up to 40 characters. + +## 2024-04-08 + +- Add API documentation for new [team management permissions](/terraform/enterprise/users-teams-organizations/permissions#team-management-permissions). + +## 2024-04-04 + +- Add a `sort` parameter to the [Projects list API](/terraform/enterprise/api-docs/projects#query-parameters) to allow sorting projects by name. +- Add a `description` attribute to the [Projects API](/terraform/enterprise/api-docs/projects). +- Add `project-count` and `workspace-count` attributes to sample [Projects API](/terraform/enterprise/api-docs/projects) responses. + +## 2024-3-27 + +- Add `private-vcs` to [Feature Entitlements](/terraform/enterprise/api-docs#feature-entitlements). + +## 2024-3-26 + +- Add API documentation for searching [variable sets](/terraform/enterprise/api-docs/variable-sets#list-variable-sets) by name. + +## 2024-3-14 + +- Add documentation for creating runs with debugging mode enabled. + +## 2024-3-12 + +- Update OAuth Client API endpoints to create, update, and return projects associated with an oauth client. +- Add API endpoints to [Attach an OAuth Client](/terraform/enterprise/api-docs/oauth-clients#attach-an-oauth-client-to-projects) and [Detach an OAuth Client](/terraform/enterprise/api-docs/oauth-clients#detach-an-oauth-client-from-projects) from a project. +- Add `organization-scoped` attribute to the [OAuth Clients API](/terraform/enterprise/api-docs/oauth-clients). + +## 2024-2-29 + +- Update [run task stages](/terraform/enterprise/api-docs/run-tasks/run-task-stages-and-results) with new multi-stage payload format. +- Update [run tasks](/terraform/enterprise/api-docs/run-tasks/run-tasks) with global run tasks request/response payloads. + +## 2024-2-27 + +- Add `private-policy-agents` to [Feature Entitlements](/terraform/enterprise/api-docs#feature-entitlements). + +## 2024-2-20 + +- Add documentation for configuring organization and workspace data retention policies through the API and on the different [types of data retention policies](/terraform/enterprise/api-docs/data-retention-policies). + <!-- BEGIN: TFC:only name:explorer --> + +## 2024-2-8 + +- Add [Explorer API documentation](/terraform/enterprise/api-docs/explorer) + <!-- END: TFC:only name:explorer --> + +## 2024-1-30 + +- Update the [Audit trails](/terraform/enterprise/api-docs/audit-trails) documentation to expand on the payloads for each event. + +## 2024-1-24 + +- Introduce configurable data retention policies at the site-wide level and extend data retention policies at the organization and workspace levels. +- Added and/or updated data retention policy documentation to the following topics: + - [Admin Settings Documentation](/terraform/enterprise/application-administration/general#data-retention-policies) + - [Admin API Documentation](/terraform/enterprise/api-docs/admin/settings#data-retention-policies) + - [Organization Documentation](/terraform/enterprise/users-teams-organizations/organizations#data-retention-policies) + - [Workspace Documentation](/terraform/enterprise/workspaces/settings/deletion#data-retention-policies) + +## 2024-1-4 + +- Update the [Organizations API](/terraform/enterprise/api-docs/organizations) to support the `aggregated-commit-status-enabled` attribute, which controls whether [Aggregated Status Checks](/terraform/enterprise/users-teams-organizations/organizations/vcs-status-checks) are enabled. + +## 2023-11-17 + +- Added the [`opa-versions` endpoint](/terraform/enterprise/api-docs/admin/opa-versions) to allow administrators to manage available Open Policy Agent (OPA) versions. +- Added the [`sentinel-versions` endpoint](/terraform/enterprise/api-docs/admin/sentinel-versions) to allow administrators to manage available Sentinel versions. +- Add `authenticated-resource` relationship to the [`account` API](/terraform/enterprise/api-docs/account). + +## 2023-11-15 + +- Introduce configurable data retention policies at the [organization](/terraform/enterprise/users-teams-organizations/organizations#data-retention-policies) and [workspace](/terraform/enterprise/workspaces/settings/deletion#data-retention-policies) levels. +- Added data retention policy documentation to the following topics: + - [`state-versions` API documentation](/terraform/enterprise/api-docs/state-versions) + - [`configuration-versions` API documentation](/terraform/enterprise/api-docs/configuration-versions) + - [Organizations documentation](/terraform/enterprise/users-teams-organizations/organizations#destruction-and-deletion) + - [Workspaces documentation](/terraform/enterprise/workspaces/settings/deletion#data-retention-policies) + +## 2023-11-07 + +- Add `auto_destroy_activity_duration` to the [Workspaces API](/terraform/enterprise/api-docs/workspaces), which allows Terraform Cloud to schedule auto-destroy runs [based on workspace inactivity](/terraform/enterprise/workspaces/settings/deletion#automatically-destroy). + +## 2023-10-31 + +- Update the [Workspaces API](/terraform/enterprise/api-docs/workspaces) to support the `auto-apply-run-trigger` attribute, which controls if run trigger runs are auto-applied. + +## 2023-10-30 + +- Add `priority` attribute to the [Variable Sets API](/terraform/enterprise/api-docs/variable-sets). + +## 2023-10-04 + +- Updates to [run task integration API](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) + - Fix invalid JSON in the example payload. + - Clarify the expected JSON:API payload fields. +- Add `policy-tool-version` attribute to [Policy Set Outcomes](/terraform/enterprise/api-docs/policy-evaluations#list-policy-outcomes). + +## 2023-10-03 + +- Update [Policy Sets API](/terraform/enterprise/api-docs/policy-sets) to include `agent-enabled` and `policy-tool-version`. +- Update [Policy Evaluations API](/terraform/enterprise/api-docs/policy-evaluations) to include `policy-tool-version`. + +## 2023-09-29 + +- Add support for [streamlined run task reviews](/terraform/enterprise/integrations/run-tasks), enabling run task integrations to return high fidelity results. + - Update the [Terraform cloud run task API](/terraform/enterprise/api-docs/run-tasks/run-tasks) to enable streamlined run task reviews. + - The [run task integration API](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) now guides integrations through sending rich results. + - Updated the run task payload [JSON Schema](https://github.com/hashicorp/terraform-docs-common/blob/main/website/public/schema/run-tasks/runtask-result.json). + +## 2023-09-25 + +- Add `intermediate` boolean attribute to the [State Versions API](/terraform/enterprise/api-docs/state-versions). + +## 2023-09-19 + +- Add [failed state upload recovery](/terraform/enterprise/api-docs/applies#recover-a-failed-state-upload-after-applying) endpoint. + +## 2023-09-15 + +- Add `auto-destroy-at` attribute to the [Workspaces API](/terraform/enterprise/api-docs/workspaces). +- Update the [Notification Configurations API](/terraform/enterprise/api-docs/notification-configurations) to include [automatic destroy run](/terraform/enterprise/api-docs/notification-configurations#automatic-destroy-runs) details. + +## 2023-09-08 + +- Update the [Organizations API](/terraform/enterprise/api-docs/organizations) to include `default-execution-mode` and `default-agent-pool`. +- Update the [Workspaces API](/terraform/enterprise/api-docs/workspaces) to add a `setting-overwrites` object to allow you to overwrite `default-execution-mode` and `default-agent-pool`. + +## 2023-09-06 + +- Update Policy Sets API endpoints to create, update, and return excluded workspaces associated with a policy set. +- Add API endpoints to [Attach a Policy Set](/terraform/enterprise/api-docs/policy-sets#attach-a-policy-set-to-exclusions) and [Detach a Policy Set](/terraform/enterprise/api-docs/policy-sets#detach-a-policy-set-to-exclusions) from excluded workspaces. + +## 2023-08-21 + +- Add `save-plan` attribute, `planned_and_saved` status, and `save_plan` operation type to [Runs endpoints](/terraform/enterprise/api-docs/run). + +## 2023-08-10 + +- Add `provisional` to `configuration-versions` endpoint. + +## 2023-07-26 + +- Add support for a `custom` option to the `team_project` access level along with various customizable permissions. The `project-access` permissions apply to the project itself, and `workspace-access` permissions apply to all workspaces within the project. For more information, see [Project Team Access](/terraform/enterprise/api-docs/project-team-access). + +## 2023-06-09 + +- Introduce support for [`import` blocks](/terraform/language/import/generating-configuration). + - [Runs](/terraform/enterprise/api-docs/run#create-a-run) have a new `allow-config-generation` option. + - [Plans](/terraform/enterprise/api-docs/plans#show-a-plan) have new `resource-imports` and `generated-configuration` properties. + - [Applies](/terraform/enterprise/api-docs/applies#show-an-apply) have a new `resource-imports` property. +- The workspaces associated with a policy set can now be updated using the [Policy Sets PATCH endpoint](/terraform/enterprise/api-docs/policy-sets#update-a-policy-set) +- Update the [Workspaces](/terraform/enterprise/api-docs/workspaces) API endpoints to include the associated [project](/terraform/enterprise/api-docs/projects). + +## 2023-05-25 + +- Terraform Cloud sets the `configuration_version_download_url`, `configuration_version_id`, and `workspace_working_directory` properties for all stages of the [Run Task Request](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration#request-body). +- Add the new `enforcement-level` property in the request and response of [Policies endpoints](/terraform/enterprise/api-docs/policies). +- Deprecate the old `enforce` property in the request and response of [Policies endpoints](/terraform/enterprise/api-docs/policies). +- Add new properties to limit run tasks and policies for the Terraform Cloud free tier. We updated the [entitlement set](/terraform/enterprise/api-docs/organizations#show-the-entitlement-set), [feature set](/terraform/enterprise/api-docs/feature-sets#sample-response), and [subscription](/terraform/enterprise/api-docs/subscriptions#sample-response) endpoints with the following properties: + - `run-task-limit` + - `run-task-workspace-limit` + - `run-task-mandatory-enforcement-limit` + - `policy-set-limit` + - `policy-limit` + - `policy-mandatory-enforcement-limit` + - `versioned-policy-set-limit` + +## 2023-04-25 + +- Add the `version-id` property to the response for the Create, List, and Update [Workspace Variables endpoints](/terraform/enterprise/api-docs/workspaces-variables). + +## 2023-03-30 + +- Add the `sort` query parameter to the Workspaces API's [list workspaces endpoint](/terraform/enterprise/api-docs/workspaces#list-workspaces). + +## 2023-03-24 + +- Update the [Variable Sets](/terraform/enterprise/api-docs/variable-sets) API endpoints to include assigning variable sets to projects. + +## 2023-03-20 + +- Add a names filter to the [Projects list API](/terraform/enterprise/api-docs/projects#query-parameters) to allow fetching a list of projects by name. + +## 2023-03-13 + +- Update [Project Team Access API](/terraform/enterprise/api-docs/project-team-access) to include additional Project roles. +- Update [Permissions](/terraform/enterprise/users-teams-organizations/permissions) to reflect the decoupling of projects and workspaces in the Organization Permissions UI. + +## 2023-03-08 + +- Introduced the [GitHub App Installation APIs](/terraform/enterprise/api-docs/github-app-installations). +- Updated [Workspaces API](/terraform/enterprise/api-docs/workspaces) to accept `vcs-repo.github-app-installation-id` to connect a workspace to a GitHub App Installation. +- Updated [Registry Module API](/terraform/enterprise/api-docs/private-registry/modules) to accept `vcs-repo.github-app-installation-id` to connect to a GitHub App Installation. +- Updated [Policy Sets API](/terraform/enterprise/api-docs/policy-sets) to accept `vcs-repo.github-app-installation-id` to connect to a GitHub App Installation. + +## 2023-02-16 + +- Add `manage-membership` to the organization access settings of the [Team API](/terraform/enterprise/api-docs/teams). + +## 2023-02-03 + +- Updated the [List Runs API](/terraform/enterprise/api-docs/run#list-runs-in-a-workspace) to note that the filter query parameters accept comma-separated lists. + +## 2023-01-18 + +- Updated the [Team API](/terraform/enterprise/api-docs/teams) to include the `read-workspaces` and `read-projects` permissions which grants teams view access to workspaces and projects. + +## 2023-01-17 + +- Add [Projects API](/terraform/enterprise/api-docs/projects) for creating, updating and deleting projects. +- Add [Project Team Access API](/terraform/enterprise/api-docs/project-team-access) for managing access for teams to individual projects. +- Update [Workspaces API](/terraform/enterprise/api-docs/workspaces) to include examples of creating a workspace in a project and moving a workspace between projects. +- Update [List Teams API](/terraform/enterprise/api-docs/teams#query-parameters) to accept a search parameter `q`, so that teams can be searched by name. + +## 2023-01-12 + +- Added new rollback to previous state endpoint to [State Versions API](/terraform/enterprise/api-docs/state-versions) + +## 2022-12-22 + +- Updated [Safe Delete a workspace](/terraform/enterprise/api-docs/workspaces#safe-delete-a-workspace) to fix HTTP verb as `POST`. + +## 2022-11-18 + +- Update [Policies API](/terraform/enterprise/api-docs/policies) to fix policy enforcement level defaults. Enforcement level is a required field, so no defaults are available. + +## 2022-11-03 + +- Update [Policy Checks](/terraform/enterprise/api-docs/policy-checks) to fix policy set outcome return data type. + +### 2022-10-17 + +- Updated the [Organizations API](/terraform/enterprise/api-docs/organizations) with the `allow-force-delete-workspaces`, which controls whether workspace administrators can delete workspaces with resources under management. +- Updated the [Workspaces API](/terraform/enterprise/api-docs/workspaces) with a safe delete endpoint that guards against deleting workspaces that are managing resources. + +### 2022-10-12 + +- Update [Policy Checks](/terraform/enterprise/api-docs/policy-checks) with result counts and support for filtering policy set outcomes. +- Update [Team Membership API](/terraform/enterprise/api-docs/team-members) to include adding and removing users from teams using organization membership ID. + +<!-- BEGIN: TFC:only name:opa-policies --> + +### 2022-10-06 + +- Updated the [Policies API](/terraform/enterprise/api-docs/policies) with support for Open Policy Agent (OPA) policies. +- Update [Policy Sets](/terraform/enterprise/api-docs/policy-sets) with support for OPA policy sets. +- Updated [Policy Checks](/terraform/enterprise/api-docs/policy-checks) to add support for listing policy evaluations and policy set outcomes. +- Update [Run Tasks Stage](/terraform/enterprise/api-docs/run-tasks/run-task-stages-and-results) to include the new `policy_evaluations` attribute in the output. + <!-- END: TFC:only name:opa-policies --> + +### 2022-09-21 + +- Update [State Versions](/terraform/enterprise/api-docs/state-versions#create) with optional `json-state-outputs` and `json-state` attributes, which are base-64 encoded external JSON representations of the terraform state. The read-only `hosted-json-state-download-url` attribute links to this version of the state file when available. +- Update [State Version Outputs](/terraform/enterprise/api-docs/state-version-outputs) with a `detailed-type` attribute, which refines the output with the precise Terraform type. + +### 2022-07-26 + +- Updated the [Run status list](/terraform/enterprise/api-docs/run#run-states) with `fetching`, `queuing`, `pre_plan_running` and `pre_plan_completed` +- Update [Run Tasks](/terraform/enterprise/api-docs/run-tasks.mdx) to include the new `stages` attribute when attaching or updating workspace tasks. +- Updated [Run Tasks Integration](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) to specify the different request payloads for different stages. + +### 2022-06-23 + +<!-- BEGIN: TFC:only name:health-assessments --> + +- Added the [Assessments](/terraform/enterprise/api-docs/assessments). + +- Updated [Workspace](/terraform/enterprise/api-docs/workspaces#create-a-workspace) and + [Notification Configurations](/terraform/enterprise/api-docs/notification-configurations#notification-triggers) to account for assessments. + <!-- END: TFC:only name:health-assessments --> + +- Added new query parameter(s) to [List Runs endpoint](/terraform/enterprise/api-docs/run#list-runs-in-a-workspace). + +### 2022-06-21 + +- Updated [Admin Organizations](/terraform/enterprise/api-docs/admin/organizations) endpoints with new `workspace-limit` setting. This is available in Terraform Enterprise v202207-1 and later. +- Updated [List Agent Pools](/terraform/enterprise/api-docs/agents#list-agent-pools) to accept a filter parameter `filter[allowed_workspaces][name]` so that agent pools can be filtered by name of an associated workspace. The given workspace must be allowed to use the agent pool. Refer to [Scoping Agent Pools to Specific Workspaces](/terraform/cloud-docs/agents#scope-an-agent-pool-to-specific-workspaces). +- Added new `organization-scoped` attribute and `allowed-workspaces` relationship to the request/response body of the below endpoints. This is available in Terraform Enterprise v202207-1 and later. + - [Show an Agent Pool](/terraform/enterprise/api-docs/agents#show-an-agent-pool) + - [Create an Agent Pool](/terraform/enterprise/api-docs/agents#create-an-agent-pool) + - [Update an Agent Pool](/terraform/enterprise/api-docs/agents#update-an-agent-pool) + +### 2022-06-17 + +- Updated [Creating a Run Task](/terraform/enterprise/workspaces/settings/run-tasks#creating-a-run-task) section to include the new description information for the run task to be configured. +- Update [Run Tasks](/terraform/enterprise/api-docs/run-tasks.mdx) to include the new description attribute. + +### 2022-06-09 + +- Updated [List Agent Pools](/terraform/enterprise/api-docs/agents#list-agent-pools) to accept a search parameter `q`, so that agent pools can be searched by `name`. This is available in Terraform Enterprise v202207-1 and later. +- Fixed [List Workspaces](/terraform/enterprise/api-docs/workspaces#list-workspaces) to add missing `search[tags]` query parameter. +- Updated [List Workspaces](/terraform/enterprise/api-docs/workspaces#list-workspaces) to add new `search[exclude_tags]` query parameter. This is available in Terraform Enterprise v202207-1 and later. + +### 2022-05-11 + +- Updated Run Tasks permission to the following endpoints: + - [Organizations](/terraform/enterprise/api-docs/organizations#list-organizations). + - [Team Access](/terraform/enterprise/api-docs/team-access#list-team-access-to-a-workspace). + - [Teams](/terraform/enterprise/api-docs/teams#list-teams). + +### 2022-05-04 + +- Updated [Feature Sets](/terraform/enterprise/api-docs/feature-sets#list-feature-sets) to add new `run-tasks` attribute. + +### 2022-05-03 + +- Added Run Tasks permission to the following endpoints: + - [Organizations](/terraform/enterprise/api-docs/organizations#list-organizations) + - [Workspaces](/terraform/enterprise/api-docs/workspaces#show-workspace) + +### 2022-04-29 + +- Updated [Run Tasks Integration](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) to specify the allowed `status` attribute values. +- Updated [Organization Memberships](/terraform/enterprise/api-docs/organization-memberships#query-parameters) to add new `filter[email]` query parameter. +- Updated [Teams](/terraform/enterprise/api-docs/teams#query-parameters) to add new `filter[names]` query parameter. + +### 2022-04-04 + +- Added the [Run Tasks Integration](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) endpoint. + +### 2022-03-14 + +- Added the [Download Configuration Files](/terraform/enterprise/api-docs/configuration-versions#download-configuration-files) endpoints. + +### 2022-03-11 + +- Introduced [Archiving Configuration Versions](/terraform/enterprise/workspaces/configurations#archiving-configuration-versions). + - Updated [Configuration Versions](/terraform/enterprise/api-docs/configuration-versions#attributes) to add new `fetching` and `archived` states. + - Updated [Runs](/terraform/enterprise/api-docs/run#attributes) to add new `fetching` state. + - Added the [Archive a Configuration Version](/terraform/enterprise/api-docs/configuration-versions#archive-a-configuration-version) endpoint. + +### 2022-02-25 + +- Updated [Workspace Run Tasks](/terraform/enterprise/api-docs/run-tasks/run-tasks#show-a-run-task) to add new `enabled`attribute. + +### 2022-02-28 + +- Introduced the [Registry Providers](/terraform/enterprise/api-docs/private-registry/providers) endpoints to manage private providers for a private registry. + +### 2021-12-09 + +- Added `variables` field for POST /runs and the run resource, enabling run-specific variable values. + +### 2021-12-03 + +- OAuth API updated to handle `secret` and `rsa_public_key` fields for POST/PUT. + +### 2021-11-17 + +- Added pagination support to the following endpoints: + - [Feature Sets](/terraform/enterprise/api-docs/feature-sets#list-feature-sets) - `GET /feature-sets` + - [Notification Configurations](/terraform/enterprise/api-docs/notification-configurations#list-notification-configurations) - `GET /workspaces/:workspace_id/notification-configurations` + - [Oauth Clients](/terraform/enterprise/api-docs/oauth-clients#list-oauth-clients) - `GET /organizations/:organization_name/oauth-clients` + - [Oauth Tokens](/terraform/enterprise/api-docs/oauth-tokens#list-oauth-tokens) - `GET /oauth-clients/:oauth_client_id/oauth-tokens` + - [Organization Feature Sets](/terraform/enterprise/api-docs/feature-sets#list-feature-sets-for-organization) - `GET /organizations/:organization_name/feature-sets` + - [Organizations](/terraform/enterprise/api-docs/organizations#list-organizations) - `GET /organizations` + - [Policy Checks](/terraform/enterprise/api-docs/policy-checks#list-policy-checks) - `GET /runs/:run_id/policy-checks` + - [Policy Set Parameters](/terraform/enterprise/api-docs/policy-set-params#list-parameters) - `GET /policy-sets/:policy_set_id/parameters` + - [SSH Keys](/terraform/enterprise/api-docs/ssh-keys#list-ssh-keys) - `GET /organizations/:organization_name/ssh-keys` + - [User Tokens](/terraform/enterprise/api-docs/user-tokens#list-user-tokens) - `GET /users/:user_id/authentication-tokens` + +### 2021-11-11 + +- Introduced the [Variable Sets](/terraform/enterprise/api-docs/variable-sets) endpoints for viewing and administering Variable Sets + +### 2021-11-18 + +- Introduced the [Registry Providers](/terraform/enterprise/api-docs/private-registry/providers) endpoint to manage public providers for a + private registry. These endpoints will be available in the following Terraform Enterprise Release: `v202112-1` + +### 2021-09-12 + +- Added [Run Tasks Stages and Results](/terraform/enterprise/api-docs/run-tasks/run-task-stages-and-results) endpoint. + +### 2021-08-18 + +- Introduced the [State Version Outputs](/terraform/enterprise/api-docs/state-versions) endpoint to retrieve the Outputs for a + given State Version + +### 2021-08-11 + +- **BREAKING CHANGE:** Security fix to [Configuration versions](/terraform/enterprise/api-docs/configuration-versions): upload-url attribute for [uploading configuration files](/terraform/enterprise/api-docs/configuration-versions#upload-configuration-files) is now only available on the create response. + +### 2021-07-30 + +- Introduced Workspace Tagging + - Updated [Workspaces](/terraform/enterprise/api-docs/workspaces): + - added `tag-names` attribute. + - added `POST /workspaces/:workspace_id/relationships/tags` + - added `DELETE /workspaces/:workspace_id/relationships/tags` + - Added [Organization Tags](/terraform/enterprise/api-docs/organization-tags). + - Added `tags` attribute to [`tfrun`](/terraform/enterprise/policy-enforcement/sentinel/import/tfrun) + +### 2021-07-19 + +- [Notification configurations](/terraform/enterprise/api-docs/notification-configurations): Gave organization tokens permission to create and manage notification configurations. + +### 2021-07-09 + +- [State versions](/terraform/enterprise/api-docs/state-versions): Fixed the ID format for the workspace relationship of a state version. Previously, the reported ID was unusable due to a bug. +- [Workspaces](/terraform/enterprise/api-docs/workspaces): Added `locked_by` as an includable related resource. +- Added [Run Tasks](/terraform/enterprise/api-docs/run-tasks/run-tasks) API endpoint. + +### 2021-06-8 + +- Updated [Registry Module APIs](/terraform/enterprise/api-docs/private-registry/modules). + - added `registry_name` scoped APIs. + - added `organization_name` scoped APIs. + - added [Module List API](/terraform/enterprise/api-docs/private-registry/modules#list-registry-modules-for-an-organization). + - updated [Module Delete APIs](/terraform/enterprise/api-docs/private-registry/modules#delete-a-module) (see deprecation note below). + - **CLOUD**: added public registry module related APIs. +- **DEPRECATION**: The following [Registry Module APIs](/terraform/enterprise/api-docs/private-registry/modules) have been replaced with newer apis and will be removed in the future. + - The following endpoints to delete modules are replaced with [Module Delete APIs](/terraform/enterprise/api-docs/private-registry/modules#delete-a-module) + - `POST /registry-modules/actions/delete/:organization_name/:name/:provider/:version` replaced with `DELETE /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider/:version` + - `POST /registry-modules/actions/delete/:organization_name/:name/:provider` replaced with `DELETE /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider` + - `POST /registry-modules/actions/delete/:organization_name/:name` replaced with `DELETE /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name` + - `POST /registry-modules` replaced with [`POST /organizations/:organization_name/registry-modules/vcs`](/terraform/enterprise/api-docs/private-registry/modules#publish-a-private-module-from-a-vcs) + - `POST /registry-modules/:organization_name/:name/:provider/versions` replaced with [`POST /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider/versions`](/terraform/enterprise/api-docs/private-registry/modules#create-a-module-version) + - `GET /registry-modules/show/:organization_name/:name/:provider` replaced with [`GET /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider`](/terraform/enterprise/api-docs/private-registry/modules#get-a-module) + +### 2021-05-27 + +- **CLOUD**: [Agents](/terraform/enterprise/api-docs/agents): added [delete endpoint](/terraform/enterprise/api-docs/agents#delete-an-agent). + +### 2021-05-19 + +- [Runs](/terraform/enterprise/api-docs/run): added `refresh`, `refresh-only`, and `replace-addrs` attributes. + +### 2021-04-16 + +- Introduced [Controlled Remote State Access](https://www.hashicorp.com/blog/announcing-controlled-remote-state-access-for-terraform-cloud-and-enterprise). + - [Admin Settings](/terraform/enterprise/api-docs/admin/settings): added `default-remote-state-access` attribute. + - [Workspaces](/terraform/enterprise/api-docs/workspaces): + - added `global-remote-state` attribute. + - added [Remote State Consumers](/terraform/enterprise/api-docs/workspaces#get-remote-state-consumers) relationship. + +### 2021-04-13 + +- [Teams](/terraform/enterprise/api-docs/teams): added `manage-policy-overrides` property to the `organization-access` attribute. + +### 2021-03-23 + +- **ENTERPRISE**: `v202103-1` Introduced [Share Modules Across Organizations with Terraform Enterprise](https://www.hashicorp.com/blog/share-modules-across-organizations-terraform-enterprise). + - [Admin Organizations](/terraform/enterprise/api-docs/admin/organizations): + - added new query parameters to [List all Organizations endpoint](/terraform/enterprise/api-docs/admin/organizations#query-parameters) + - added module-consumers link in `relationships` response + - added [update module consumers endpoint](/terraform/enterprise/api-docs/admin/organizations#update-an-organization-39-s-module-consumers) + - added [list module consumers endpoint](/terraform/enterprise/api-docs/admin/organizations#list-module-consumers-for-an-organization) + - [Organizations](/terraform/enterprise/api-docs/organizations): added [Module Producers](/terraform/enterprise/api-docs/organizations#show-module-producers) + - **DEPRECATION**: [Admin Module Sharing](/terraform/enterprise/api-docs/admin/module-sharing): is replaced with a new JSON::Api compliant [endpoint](/terraform/enterprise/api-docs/admin/organizations#update-an-organization-39-s-module-consumers) + +### 2021-03-18 + +- **CLOUD**: Introduced [New Workspace Overview for Terraform Cloud](https://www.hashicorp.com/blog/new-workspace-overview-for-terraform-cloud). + - [Workspaces](/terraform/enterprise/api-docs/workspaces): + - added `resource-count` and `updated-at` attributes. + - added [performance attributes](/terraform/enterprise/api-docs/workspaces#workspace-performance-attributes) (`apply-duration-average`, `plan-duration-average`, `policy-check-failures`, `run-failures`, `workspaces-kpis-run-count`). + - added `readme` and `outputs` [related resources](/terraform/enterprise/api-docs/workspaces#available-related-resources). + - [Team Access](/terraform/enterprise/api-docs/team-access): updated to support pagination. + +### 2021-03-11 + +- Added [VCS Events](/terraform/enterprise/api-docs/vcs-events), limited to GitLab.com connections. + +### 2021-03-08 + +- [Workspaces](/terraform/enterprise/api-docs/workspaces): added `current_configuration_version` and `current_configuration_version.ingress_attributes` as includable related resources. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/comments.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/comments.mdx new file mode 100644 index 0000000000..2e96414328 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/comments.mdx @@ -0,0 +1,227 @@ +--- +page_title: /comments API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/comments` endpoint to create and read + comments on Terraform runs. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[307]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Comments API reference + +Comments allow users to leave feedback or record decisions about a run. + +## List Comments for a Run + +`GET /runs/:id/comments` + +| Parameter | Description | +| --------- | ------------------ | +| `id` | The ID of the run. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/runs/run-KTuq99JSzgmDSvYj/comments +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "wsc-JdFX3u8o114F4CWf", + "type": "comments", + "attributes": { + "body": "A comment body" + }, + "relationships": { + "run-event": { + "data": { + "id": "re-fo1YXZ8W5bp5GBKM", + "type": "run-events" + }, + "links": { + "related": "/api/v2/run-events/re-fo1YXZ8W5bp5GBKM" + } + } + }, + "links": { + "self": "/api/v2/comments/wsc-JdFX3u8o114F4CWf" + } + }, + { + "id": "wsc-QdhSPFTNoCTpfafp", + "type": "comments", + "attributes": { + "body": "Another comment body" + }, + "relationships": { + "run-event": { + "data": { + "id": "re-fo1YXZ8W5bp5GBKM", + "type": "run-events" + }, + "links": { + "related": "/api/v2/run-events/re-fo1YXZ8W5bp5GBKM" + } + } + }, + "links": { + "self": "/api/v2/comments/wsc-QdhSPFTNoCTpfafp" + } + } + ] +} +``` + +## Show a Comment + +`GET /comments/:id` + +| Parameter | Description | +| --------- | ---------------------- | +| `id` | The ID of the comment. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/comments/wsc-gTFq83JSzjmAvYj +``` + +### Sample Response + +```json +{ + "data": { + "id": "wsc-gTFq83JSzjmAvYj", + "type": "comments", + "attributes": { + "body": "Another comment" + }, + "relationships": { + "run-event": { + "data": { + "id": "re-8RB5ZaFrDanG2hGY", + "type": "run-events" + }, + "links": { + "related": "/api/v2/run-events/re-8RB5ZaFrDanG2hGY" + } + } + }, + "links": { + "self": "/api/v2/comments/wsc-gTFq83JSzjmAvYj" + } + } +} +``` + +## Create Comment + +`POST /runs/:id/comments` + +| Parameter | Description | +| --------- | ------------------ | +| `id` | The ID of the run. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as the request payload. + +| Key Path | Type | Default | Description | +| ---------------------- | ------ | ------- | ------------------------ | +| `data.type` | string | | Must be `"comments"`. | +| `data.attributes.body` | string | | The body of the comment. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "body": "A comment about the run", + }, + "type": "comments" + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/runs/run-KTuq99JSzgmDSvYj/comments +``` + +### Sample Response + +```json +{ + "data": { + "id": "wsc-oRiShushpgLU4JD2", + "type": "comments", + "attributes": { + "body": "A comment about the run" + }, + "relationships": { + "run-event": { + "data": { + "id": "re-E3xsBX11F1fbm2zV", + "type": "run-events" + }, + "links": { + "related": "/api/v2/run-events/re-E3xsBX11F1fbm2zV" + } + } + }, + "links": { + "self": "/api/v2/comments/wsc-oRiShushpgLU4JD2" + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/configuration-versions.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/configuration-versions.mdx new file mode 100644 index 0000000000..8b5f077525 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/configuration-versions.mdx @@ -0,0 +1,561 @@ +--- +page_title: /configuration-versions API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/configuration-versions` endpoint to list, + show, and create a configuration version and its files within a workspace. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[302]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Configuration versions API reference + +-> **Note:** Before working with the runs or configuration versions APIs, read the [API-driven run workflow](/terraform/enterprise/run/api) page, which includes both a full overview of this workflow and a walkthrough of a simple implementation of it. + +A configuration version (`configuration-version`) is a resource used to reference the uploaded configuration files. It is associated with the run to use the uploaded configuration files for performing the plan and apply. + +You need read runs permission to list and view configuration versions for a workspace, and you need queue plans permission to create new configuration versions. Refer to the [permissions](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) documentation for more details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Attributes + +### Configuration Version States + +The configuration version state is found in `data.attributes.status`, and you can reference the following list of possible states. + +A configuration version created through the API or CLI can only be used in runs if it is in an `uploaded` state. A configuration version created through a linked VCS repository may also be used in runs if it is in an `archived` state. + +| State | Description | | +| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | +| `pending` | The initial status of a configuration version after it has been created. Pending configuration versions cannot be used to create new runs. | | +| `fetching` | For configuration versions created from a commit to a connected VCS repository, HCP Terraform is currently fetching the associated files from VCS. | | +| `uploaded` | The configuration version is fully processed and can be used in runs. | | +| `archived` | All immediate runs are complete and HCP Terraform has discarded the files associated with this configuration version. If the configuration version was created through a connected VCS repository, it can still be used in new runs. In those cases, HCP Terraform will re-fetch the files from VCS. | | +| `errored` | HCP Terraform could not process this configuration version, and it cannot be used to create new runs. You can try again by pushing a new commit to your linked VCS repository or creating a new configuration version with the API or CLI. | | +| `backing_data_soft_deleted` | <EnterpriseAlert inline /> Indicates that the configuration version's backing data is marked for garbage collection. If no action is taken, the backing data associated with this configuration version is permanently deleted after a set number of days. You can restore the backing data associated with the configuration version before it is permanently deleted. | | +| `backing_data_permanently_deleted` | <EnterpriseAlert inline /> The configuration version's backing data has been permanently deleted and can no longer be restored. | | + +## List Configuration Versions + +`GET /workspaces/:workspace_id/configuration-versions` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to list configurations from. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 configuration versions per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/workspaces/ws-2Qhk7LHgbMrm3grF/configuration-versions +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "cv-ntv3HbhJqvFzamy7", + "type": "configuration-versions", + "attributes": { + "error": null, + "error-message": null, + "source": "gitlab", + "speculative":false, + "status": "uploaded", + "status-timestamps": {}, + "provisional": false + }, + "relationships": { + "ingress-attributes": { + "data": { + "id": "ia-i4MrTxmQXYxH2nYD", + "type": "ingress-attributes" + }, + "links": { + "related": + "/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/ingress-attributes" + } + } + }, + "links": { + "self": "/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7", + "download": "/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/download" + } + } + ] +} +``` + +## Show a Configuration Version + +`GET /configuration-versions/:configuration-id` + +| Parameter | Description | +| ------------------- | ------------------------------------ | +| `:configuration-id` | The id of the configuration to show. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7 +``` + +### Sample Response + +```json +{ + "data": { + "id": "cv-ntv3HbhJqvFzamy7", + "type": "configuration-versions", + "attributes": { + "error": null, + "error-message": null, + "source": "gitlab", + "speculative":false, + "status": "uploaded", + "status-timestamps": {}, + "provisional": false + }, + "relationships": { + "ingress-attributes": { + "data": { + "id": "ia-i4MrTxmQXYxH2nYD", + "type": "ingress-attributes" + }, + "links": { + "related": + "/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/ingress-attributes" + } + } + }, + "links": { + "self": "/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7", + "download": "/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/download" + } + } +} +``` + +## Show a Configuration Version's Commit Information + +An ingress attributes resource (`ingress-attributes`) is used to reference commit information for configuration versions created in a workspace with a VCS repository. + +`GET /configuration-versions/:configuration-id/ingress-attributes` + +| Parameter | Description | +| ------------------- | ------------------------------------ | +| `:configuration-id` | The id of the configuration to show. | + +Ingress attributes can also be fetched as part of a query to a particular configuration version via `include`: + +`GET /configuration-versions/:configuration-id?include=ingress-attributes` + +| Parameter | Description | +| ------------------- | ------------------------------------ | +| `:configuration-id` | The id of the configuration to show. | + +<!-- Note: /ingress-attributes/:ingress-attributes-id is purposely not documented here, as its +usefulness is questionable given the routes above; IAs are inherently a part of a CV and their +separate resource is a vestige of the original Terraform Enterprise --> + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/configuration-versions/cv-TrHjxIzad9Ae9i8x/ingress-attributes +``` + +### Sample Response + +```json +{ + "data": { + "id": "ia-zqHjxJzaB9Ae6i9t", + "type": "ingress-attributes", + "attributes": { + "branch": "add-cool-stuff", + "clone-url": "https://github.com/hashicorp/foobar.git", + "commit-message": "Adding really cool infrastructure", + "commit-sha": "1e1c1018d1bbc0b8517d072718e0d87c1a0eda95", + "commit-url": "https://github.com/hashicorp/foobar/commit/1e1c1018d1bbc0b8517d072718e0d87c1a0eda95", + "compare-url": "https://github.com/hashicorp/foobar/pull/163", + "identifier": "hashicorp/foobar", + "is-pull-request": true, + "on-default-branch": false, + "pull-request-number": 163, + "pull-request-url": "https://github.com/hashicorp/foobar/pull/163", + "pull-request-title": "Adding really cool infrastructure", + "pull-request-body": "These are changes to add really cool stuff. We should absolutely merge this.", + "tag": null, + "sender-username": "chrisarcand", + "sender-avatar-url": "https://avatars.githubusercontent.com/u/2430490?v=4", + "sender-html-url": "https://github.com/chrisarcand" + }, + "relationships": { + "created-by": { + "data": { + "id": "user-PQk2Z3dfXAax18P6s", + "type": "users" + }, + "links": { + "related": "/api/v2/ingress-attributes/ia-zqHjxJzaB9Ae6i9t/created-by" + } + } + }, + "links": { + "self": "/api/v2/ingress-attributes/ia-zqHjxJzaB9Ae6i9t" + } + } +} +``` + +## Create a Configuration Version + +`POST /workspaces/:workspace_id/configuration-versions` + +| Parameter | Description | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to create the new configuration version in. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------- | ------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.attributes.auto-queue-runs` | boolean | true | When true, runs are queued automatically when the configuration version is uploaded. | +| `data.attributes.speculative` | boolean | false | When true, this configuration version may only be used to create runs which are speculative, that is, can neither be confirmed nor applied. | +| `data.attributes.provisional` | boolean | false | When true, this configuration version does not immediately become the workspace current configuration version. If the associated run is applied, it then becomes the current configuration version unless a newer one exists. | + +### Sample Payload + +```json +{ + "data": { + "type": "configuration-versions", + "attributes": { + "auto-queue-runs": true + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-2Qhk7LHgbMrm3grF/configuration-versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "cv-UYwHEakurukz85nW", + "type": "configuration-versions", + "attributes": { + "auto-queue-runs": true, + "error": null, + "error-message": null, + "source": "tfe-api", + "speculative":false, + "status": "pending", + "status-timestamps": {}, + "upload-url": + "https://archivist.terraform.io/v1/object/9224c6b3-2e14-4cd7-adff-ed484d7294c2", + "provisional": false + }, + "relationships": { + "ingress-attributes": { + "data": null, + "links": { + "related": + "/api/v2/configuration-versions/cv-UYwHEakurukz85nW/ingress-attributes" + } + } + }, + "links": { "self": "/api/v2/configuration-versions/cv-UYwHEakurukz85nW" } + } +} +``` + +### Configuration Files Upload URL + +Once a configuration version is created, use the `upload-url` attribute to [upload configuration files](#upload-configuration-files) associated with that version. The `upload-url` attribute is only provided in the response when creating configuration versions. + +## Upload Configuration Files + +-> **Note**: If `auto-queue-runs` was either not provided or set to `true` during creation of the configuration version, a run using this configuration version will be automatically queued on the workspace. If `auto-queue-runs` was set to `false` explicitly, then it is necessary to [create a run on the workspace](/terraform/enterprise/api-docs/run#create-a-run) manually after the configuration version is uploaded. + +`PUT https://archivist.terraform.io/v1/object/<UNIQUE OBJECT ID>` + +**The URL is provided in the `upload-url` attribute when creating a `configuration-versions` resource. After creation, the URL is hidden on the resource and no longer available.** + +### Sample Request + +**@filename is the name of configuration file you wish to upload.** + +```shell +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @filename \ + https://archivist.terraform.io/v1/object/4c44d964-eba7-4dd5-ad29-1ece7b99e8da +``` + +## Archive a Configuration Version + +`POST /configuration-versions/:configuration_version_id/actions/archive` + +| Parameter | Description | +| -------------------------- | ----------------------------------------------- | +| `configuration_version_id` | The ID of the configuration version to archive. | + +This endpoint notifies HCP Terraform to discard the uploaded `.tar.gz` file associated with this configuration version. This endpoint can only archive configuration versions that were created with the API or CLI, are in an `uploaded` [state](#configuration-version-states), have no runs in progress, and are not the current configuration version for any workspace. Otherwise, calling this endpoint will result in an error. + +HCP Terraform automatically archives configuration versions created through VCS when associated runs are complete and then re-fetches the files for subsequent runs. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| [202][] | none | Successfully initiated the archive process. | +| [409][] | [JSON API error object][] | Configuration version was in a non-archivable state or the configuration version was created with VCS and cannot be archived through the API. | +| [404][] | [JSON API error object][] | Configuration version was not found or user not authorized. | + +### Request Body + +This POST endpoint does not take a request body. + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/actions/archive +``` + +## Download Configuration Files + +`GET /configuration-versions/:configuration_version_id/download` + +| Parameter | Description | +| -------------------------- | ------------------------------------------------ | +| `configuration_version_id` | The ID of the configuration version to download. | + +`GET /runs/:run_id/configuration-version/download` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------- | +| `run_id` | The ID of the run whose configuration version should be downloaded. | + +These endpoints generate a temporary URL to the location of the configuration version in a `.tar.gz` archive, and then redirect to that link. If using a client that can follow redirects, you can use these endpoints to save the `.tar.gz` archive locally without needing to save the temporary URL. These endpoints will return an error if attempting to download a configuration version that is not in an `uploaded` [state](#configuration-version-states). + +| Status | Response | Reason | +| ------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| [302][] | HTTP Redirect | Configuration version found and temporary download URL generated | +| [404][] | [JSON API error object][] | Configuration version not found, or specified configuration version is not uploaded, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --location \ + https://app.terraform.io/api/v2/configuration-versions/cv-C6Py6WQ1cUXQX2x2/download \ + > export.tar.gz +``` + +## Mark a Configuration Version for Garbage Collection + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +`POST /api/v2/configuration-versions/:configuration-id/actions/soft_delete_backing_data` + +| Parameter | Description | +| ------------------- | --------------------------------------------------- | +| `:configuration-id` | The ID of the configuration version to soft delete. | + +This endpoint directs Terraform Enterprise to _soft delete_ the backing files associated with the configuration version. Soft deletion refers to marking the configuration version for garbage collection. Terraform permanently deletes configuration versions marked for soft deletion after a set number of days unless the configuration version is restored. Once a configuration version is soft deleted, any attempts to read the configuration version will fail. Refer to [Configuration Version States](#configuration-version-states) for information about all data states. + +This endpoint can only soft delete configuration versions that meet the following criteria: + +- Were created using the API or CLI, +- are in an [`uploaded` state](#configuration-version-states), +- and are not the current configuration version. + +Otherwise, the endpoint returns an error. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| [200][] | none | Terraform successfully marked the data for garbage collection. | +| [400][] | [JSON API error object][] | Terraform failed to transition the state to `backing_data_soft_deleted`. | +| [404][] | [JSON API error object][] | Terraform did not find the configuration version or the user is not authorized to modify the configuration version state. | + +### Request Body + +This POST endpoint does not take a request body. + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/actions/soft_delete_backing_data + --data {"data": {"attributes": {"delete-older-than-n-days": 23}}} +``` + +## Restore Configuration Versions Marked for Garbage Collection + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +`POST /api/v2/configuration-versions/:configuration-id/actions/restore_backing_data` + +| Parameter | Description | +| ------------------- | ---------------------------------------------------------------------------------------- | +| `:configuration-id` | The ID of the configuration version to restore back to its uploaded state if applicable. | + +This endpoint directs Terraform Enterprise to restore backing files associated with this configuration version. This endpoint can only restore delete configuration versions that meet the following criteria: + +- are not in a [`backing_data_permanently_deleted` state](#configuration-version-states). + +Otherwise, the endpoint returns an error. Terraform restores applicable configuration versions back to their `uploaded` state. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| [200][] | none | Terraform successfully initiated the restore process. | +| [400][] | [JSON API error object][] | Terraform failed to transition the state to `uploaded`. | +| [404][] | [JSON API error object][] | Terraform did not find the configuration version or the user is not authorized to modify the configuration version state. | + +### Request Body + +This POST endpoint does not take a request body. + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/actions/restore_backing_data +``` + +## Permanently Delete a Configuration Version + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +`POST /api/v2/configuration-versions/:configuration-id/actions/permanently_delete_backing_data` + +| Parameter | Description | +| ------------------- | ---------------------------------------------------------- | +| `:configuration-id` | The ID of the configuration version to permanently delete. | + +This endpoint directs Terraform Enterprise to permanently delete backing files associated with this configuration version. This endpoint can only permanently delete configuration versions that meet the following criteria: + +- Were created using the API or CLI, +- are in a [`backing_data_soft_deleted` state](#configuration-version-states), +- and are not the current configuration version. + +Otherwise, the endpoint returns an error. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| [200][] | none | Terraform successfully deleted the data permanently. | +| [400][] | [JSON API error object][] | Terraform failed to transition the state to `backing_data_permanently_deleted`. | +| [404][] | [JSON API error object][] | Terraform did not find the configuration version or the user is not authorized to modify the configuration version state. | + +### Request Body + +This POST endpoint does not take a request body. + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/actions/permanently_delete_backing_data +``` + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| -------------------- | ------------------------------------------------- | +| `ingress_attributes` | The commit information used in the configuration. | +| `run` | The run created by the configuration. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/cost-estimates.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/cost-estimates.mdx new file mode 100644 index 0000000000..a58a2b8481 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/cost-estimates.mdx @@ -0,0 +1,98 @@ +--- +page_title: /cost-estimates API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/cost-estimates` endpoint to read a cost + estimate using its ID. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Cost estimates API reference + +## Show a cost estimate + +-> **Note**: The hash in the `resources` attribute structure represents low-level Cost Estimation details. The keys or structure may change over time. Use the data in this hash at your own risk. + +`GET /cost-estimates/:id` + +| Parameter | Description | +| --------- | ------------------------------------ | +| `id` | The ID of the cost estimate to show. | + +There is no endpoint to list cost estimates. You can find the ID for a cost estimate in the +`relationships.cost-estimate` property of a run object. + +| Status | Response | Reason | +| ------- | ------------------------------------------------ | --------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "cost-estimates"`) | The request was successful | +| [404][] | [JSON API error object][] | Cost estimate not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/cost-estimates/ce-BPvFFrYCqRV6qVBK +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ce-BPvFFrYCqRV6qVBK", + "type": "cost-estimates", + "attributes": { + "error-message": null, + "status": "finished", + "status-timestamps": { + "queued-at": "2017-11-29T20:02:17+00:00", + "finished-at": "2017-11-29T20:02:20+00:00" + }, + "resources": {...}, + "resources-count": 4, + "matched-resources-count": 3, + "unmatched-resources-count": 1, + "prior-monthly-cost": "0.0", + "proposed-monthly-cost": "25.488", + "delta-monthly-cost": "25.488", + }, + "links": { + "self": "/api/v2/cost-estimate/ce-9VYRc9bpfJEsnwum" + } + } + ] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/github-app-installations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/github-app-installations.mdx new file mode 100644 index 0000000000..8573467c08 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/github-app-installations.mdx @@ -0,0 +1,127 @@ +--- +page_title: /github-app/installations API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/github-app/installations` endpoint to + view details about where you have installed the Terraform Enterprise GitHub + App. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# GitHub App installations API reference + +You can create a GitHub App installation using the HCP Terraform UI. Learn how to [create a GitHub App installation](/terraform/enterprise/vcs/github-app). + +~> **Note:** To use this resource in Terraform Enterprise installations, you must configure the GitHub App in the site admin area. + +~> **Note:** You can only use this API if you have already authorized the Terraform Cloud GitHub App. Manage your [GitHub App token](/terraform/enterprise/users-teams-organizations/users#github-app-oauth-token) from **Account Settings** > **Tokens**. + +## List Installations + +This endpoint lists GitHub App installations available to the current user. + +`GET /github-app/installations` + +### Query Parameters + +Queries only return GitHub App Installations that the current user has access to within GitHub. + +| Parameter | Description | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter[name]` | **Optional.** If present, returns a list of available GitHub App installations that match the GitHub organization or login. | +| `filter[installation_id]` | **Optional.** If present, returns a list of available GitHub App installations that match the installation ID within GitHub. (**Not HCP Terraform**) | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/github-app/installations +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ghain-BYrbNeGQ8nAzKouu", + "type": "github-app-installations", + "attributes": { + "name": "octouser", + "installation-id": 54810170, + "icon-url": "https://avatars.githubusercontent.com/u/29916665?v=4", + "installation-type": "User", + "installation-url": "https://github.com/settings/installations/54810170" + } + } + ] +} +``` + +## Show Installation + +`GET /github-app/installation/:gh_app_installation_id` + +| Parameter | Description | +| ------------------------- | ------------------------------ | +| `:gh_app_installation_id` | The Github App Installation ID | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/github-app/installation/ghain-R4xmKTaxnhLFioUq +``` + +### Sample Response + +```json +{ + "data": { + "id": "ghain-R4xmKTaxnhLFioUq", + "type": "github-app-installations", + "attributes": { + "name": "octouser", + "installation-id": 54810170, + "icon-url": "https://avatars.githubusercontent.com/u/29916665?v=4", + "installation-type": "User", + "installation-url": "https://github.com/settings/installations/54810170" + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/index.mdx new file mode 100644 index 0000000000..94b8db2657 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/index.mdx @@ -0,0 +1,396 @@ +--- +page_title: API documentation for Terraform Enterprise +description: >- + Learn about API authentication, response codes, versioning, formatting, rate + limiting, and clients. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# HCP Terraform API documentation + +HCP Terraform provides an API for a subset of its features. If you need assistance or want to submit a feature request, visit the [HashiCorp support center](https://support.hashicorp.com/hc/en-us) and open a ticket. + +-> **Note:** Before planning an API integration, consider whether [the `tfe` Terraform provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meets your needs. It can't create or approve runs in response to arbitrary events, but it's a useful tool for managing your organizations, teams, and workspaces as code. + +HashiCorp provides a [stability policy](/terraform/enterprise/api-docs/stability-policy) for the HCP Terraform API, ensuring backwards compatibility for stable endpoints. The [changelog](/terraform/enterprise/api-docs/changelog) tracks changes to the API for HCP Terraform and Terraform Enterprise. + +## Authentication + +All requests must be authenticated with a bearer token. Use the HTTP header `Authorization` with the value `Bearer <token>`. If the token is absent or invalid, HCP Terraform responds with [HTTP status 401][401] and a [JSON API error object][]. The 401 status code is reserved for problems with the authentication token; forbidden requests with a valid token result in a 404. + +You can use the following types of tokens to authenticate: + +- [User tokens](/terraform/enterprise/users-teams-organizations/users#api-tokens) — each HCP Terraform user can have any number of API tokens, which can make requests on their behalf. +- [Team tokens](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens) — each team can have one API token at a time. This is intended for performing plans and applies via a CI/CD pipeline. +- [Organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens) — each organization can have one API token at a time. This is intended for automating the management of teams, team membership, and workspaces. The organization token cannot perform plans and applies. + <!-- BEGIN: TFC:only --> +- [Audit trails token](/terraform/enterprise/users-teams-organizations/api-tokens#audit-trails-tokens) - each organization can have a single token that can read that organization's audit trails. Use this token type to authenticate integrations pulling audit trail data, for example, using the [HCP Terraform for Splunk](/terraform/enterprise/integrations/splunk) app. + <!-- END: TFC:only --> + +### Blob Storage Authentication + +HCP Terraform relies on a HashiCorp-developed blob storage service for storing statefiles and multiple other pieces of customer data, all of which are documented on our [data security page](/terraform/enterprise/architectural-details/data-security). + +Unlike the HCP Terraform API, this service does not require that a bearer token be submitted with each request. Instead, each URL includes a securely generated secret and is only valid for 25 hours. + +For example, the [state versions api](/terraform/enterprise/api-docs/state-versions) returns a field named `hosted-state-download`, which is a URL of this form: +`https://archivist.terraform.io/v1/object/<secret value>` + +This is a broadly accepted pattern for secure access. It is important to treat these URLs themselves as secrets. They should not be logged, nor shared with untrusted parties. + +## Feature Entitlements + +HCP Terraform is available at multiple pricing tiers (including free), which offer different feature sets. + +Each organization has a set of _entitlements_ that corresponds to its pricing tier. These entitlements determine which HCP Terraform features the organization can use. + +If an organization doesn't have the necessary entitlement to use a given feature, HCP Terraform returns a 404 error for API requests to any endpoints devoted to that feature. + +The [show entitlement set](/terraform/enterprise/api-docs/organizations#show-the-entitlement-set) endpoint can return information about an organization's current entitlements, which is useful if your client needs to change its interface when a given feature isn't available. + +The following entitlements are available: + +- `agents` — Allows isolated, private or on-premises infrastructure to communicate with an organization in HCP Terraform. Affects the [agent pools][], [agents][], and [agent tokens][] endpoints. + <!-- BEGIN: TFC:only name:tfc-audit-log --> +- `audit-logging` — Allows an organization to access [audit trails][]. + <!-- END: TFC:only name:tfc-audit-log --> +- `configuration-designer` — Allows an organization to use the [Configuration Designer][]. +- `cost-estimation` — Allows an organization to access [cost estimation][]. +- `global-run-tasks` — Allows an organization to apply [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) to every workspace. Affects the [run tasks][] endpoints. This feature is currently in beta. +- `module-tests-generation` - Allows an organization to generate tests for private registry modules. This feature is currently in beta. +- `module-deprecations` - Allows an organization to mark a module version from the Private Registry as deprecated. +- `module-revocations` - Allows an organization to mark a deprecated module version from the Private Registry as revoked. +- `operations` — Allows an organization to perform runs within HCP Terraform. Affects the [runs][], [plans][], and [applies][] endpoints. +- `policy-enforcement` — Allows an organization to use [Sentinel][]. Affects the [policies][], [policy sets][], and [policy checks][] endpoints. +- `private-module-registry` — Allows an organization to publish and use modules with the [private module registry][]. Affects the [registry modules][] endpoints. +- `private-policy-agents` - Allows an organization to ensure that HTTP enabled [Sentinel][] and OPA [policies][] can communicate with isolated, private, or on-premises infrastructure. +- `private-run-tasks` - Allows an organization to ensure that [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) can communicate with isolated, private, or on-premises infrastructure. +- `private-vcs` - Allows a self-hosted HCP Terraform agent to [connect to a private VCS provider](/terraform/enterprise/vcs/private) without having to expose that provider to the public internet. +- `run-tasks` — Allows an organization to use [run tasks](/terraform/enterprise/workspaces/settings/run-tasks). Affects the [run tasks][] endpoints. +- `self-serve-billing` — Allows an organization to pay via credit card using the in-app billing UI. +- `sentinel` - **DEPRECATED** Use `policy-enforcement` instead. +- `state-storage` — Allows an organization to store state versions in its workspaces, which enables local Terraform runs with HCP Terraform. Affects the [state versions][] endpoints. +- `sso` — Allows an organization to manage and authenticate users with single sign on. +- `teams` — Allows an organization to manage access to its workspaces with [teams](/terraform/enterprise/users-teams-organizations/teams). Without this entitlement, an organization only has an owners team. Affects the [teams][], [team members][], [team access][], and [team tokens][] endpoints. +- `user-limit` — An integer value representing the maximum number of users allowed for the organization. If blank, there is no limit. +- `vcs-integrations` — Allows an organization to [connect with a VCS provider][vcs integrations] and link VCS repositories to workspaces. Affects the [OAuth Clients][o-clients], and [OAuth Tokens][o-tokens] endpoints, and determines whether the `data.attributes.vcs-repo` property can be set for [workspaces][]. + +[agents]: /terraform/enterprise/api-docs/agents + +[agent pools]: /terraform/enterprise/api-docs/agents + +[agent tokens]: /terraform/enterprise/api-docs/agent-tokens + +[applies]: /terraform/enterprise/api-docs/applies + +<!-- BEGIN: TFC:only name:tfc-audit-log --> + +[audit trails]: /terraform/enterprise/api-docs/audit-trails + +<!-- END: TFC:only name:tfc-audit-log --> + +[Configuration Designer]: /terraform/enterprise/registry/design + +[cost estimation]: /terraform/enterprise/cost-estimation + +[o-clients]: /terraform/enterprise/api-docs/oauth-clients + +[o-tokens]: /terraform/enterprise/api-docs/oauth-tokens + +[plans]: /terraform/enterprise/api-docs/plans + +[policies]: /terraform/enterprise/api-docs/policies + +[policy checks]: /terraform/enterprise/api-docs/policy-checks + +[policy sets]: /terraform/enterprise/api-docs/policy-sets + +[private module registry]: /terraform/enterprise/registry + +[registry modules]: /terraform/enterprise/api-docs/private-registry/modules + +[registry providers]: /terraform/enterprise/api-docs/private-registry/providers + +[runs]: /terraform/enterprise/api-docs/run + +[run tasks]: /terraform/enterprise/api-docs/run-tasks/run-tasks + +[Sentinel]: /terraform/enterprise/policy-enforcement/sentinel + +[single sign on]: /terraform/enterprise/users-teams-organizations/single-sign-on + +[state versions]: /terraform/enterprise/api-docs/state-versions + +[teams]: /terraform/enterprise/api-docs/teams + +[team access]: /terraform/enterprise/api-docs/team-access + +[team members]: /terraform/enterprise/api-docs/team-members + +[team tokens]: /terraform/enterprise/api-docs/team-tokens + +[vcs integrations]: /terraform/enterprise/vcs + +[workspaces]: /terraform/enterprise/api-docs/workspaces + +## Response Codes + +This API returns standard HTTP response codes. + +We return 404 Not Found codes for resources that a user doesn't have access to, as well as for resources that don't exist. This is to avoid telling a potential attacker that a given resource exists. + +## Versioning + +The API documented in these pages is the second version of HCP Terraform's API, and resides under the `/v2` prefix. + +Future APIs will increment this version, leaving the `/v1` API intact, though in the future we might deprecate certain features. In that case, we'll provide ample notice to migrate to the new API. + +## Paths + +All V2 API endpoints use `/api/v2` as a prefix unless otherwise specified. + +For example, if the API endpoint documentation defines the path `/runs` then the full path is `/api/v2/runs`. + +## JSON API Formatting + +The HCP Terraform endpoints use the [JSON API specification](https://jsonapi.org/), which specifies key aspects of the API. Most notably: + +- [HTTP error codes](https://jsonapi.org/examples/#error-objects-error-codes) +- [Error objects](https://jsonapi.org/examples/#error-objects-basics) +- [Document structure][document] +- [HTTP request/response headers](https://jsonapi.org/format/#content-negotiation) + +[document]: https://jsonapi.org/format/#document-structure + +### JSON API Documents + +Since our API endpoints use the JSON API spec, most of them return [JSON API documents][document]. + +Endpoints that use the POST method also require a JSON API document as the request payload. A request object usually looks something like this: + +```json +{ + "data": { + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "category":"terraform", + "hcl":false, + "sensitive":false + }, + "relationships": { + "workspace": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + } + } + } + } +} +``` + +These objects always include a top-level `data` property, which: + +- Must have a `type` property to indicate what type of API object you're interacting with. +- Often has an `attributes` property to specify attributes of the object you're creating or modifying. +- Sometimes has a `relationships` property to specify other objects that are linked to what you're working with. + +In the documentation for each API method, we use dot notation to explain the structure of nested objects in the request. For example, the properties of the request object above are listed as follows: + +| Key path | Type | Default | Description | +| ---------------------------------------- | ------ | ------- | --------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.attributes.key` | string | | The name of the variable. | +| `data.attributes.value` | string | | The value of the variable. | +| `data.attributes.category` | string | | Whether this is a Terraform or environment variable. Valid values are `"terraform"` or `"env"`. | +| `data.attributes.hcl` | bool | `false` | Whether to evaluate the value of the variable as a string of HCL code. Has no effect for environment variables. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. If true then the variable is written once and not visible thereafter. | +| `data.relationships.workspace.data.type` | string | | Must be `"workspaces"`. | +| `data.relationships.workspace.data.id` | string | | The ID of the workspace that owns the variable. | + +We also always include a sample payload object, to show the document structure more visually. + +### Query Parameters + +Although most of our API endpoints use the POST method and receive their parameters as a JSON object in the request payload, some of them use the GET method. These GET endpoints sometimes require URL query parameters, in the standard `...path?key1=value1&key2=value2` format. + +Since these parameters were originally designed as part of a JSON object, they sometimes have characters that must be [percent-encoded](https://en.wikipedia.org/wiki/Percent-encoding) in a query parameter. For example, `[` becomes `%5B` and `]` becomes `%5D`. + +For more about URI structure and query strings, see [the specification (RFC 3986)](https://tools.ietf.org/html/rfc3986) or [the Wikipedia page on URIs](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier). + +### Pagination + +Most of the endpoints that return lists of objects support pagination. A client may pass the following query parameters to control pagination on supported endpoints: + +| Parameter | Description | +| -------------- | --------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 items per page. The maximum page size is 100. | + +Additional data is returned in the `links` and `meta` top level attributes of the response. + +```json +{ + "data": [...], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/hashicorp/workspaces?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/hashicorp/workspaces?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": "https://app.terraform.io/api/v2/organizations/hashicorp/workspaces?page%5Bnumber%5D=2&page%5Bsize%5D=20", + "last": "https://app.terraform.io/api/v2/organizations/hashicorp/workspaces?page%5Bnumber%5D=2&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": 2, + "total-pages": 2, + "total-count": 21 + } + } +} +``` + +### Inclusion of Related Resources + +Some of the API's GET endpoints can return additional information about nested resources by adding an `include` query parameter, whose value is a comma-separated list of resource types. + +The related resource options are listed in each endpoint's documentation where available. + +The related resources will appear in an `included` section of the response. + +Example: + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/teams/team-n8UQ6wfhyym25sMe?include=users +``` + +```json +{ + "data": { + "id": "team-n8UQ6wfhyym25sMe", + "type": "teams", + "attributes": { + "name": "owners", + "users-count": 1 + ... + }, + "relationships": { + "users": { + "data": [ + { + "id": "user-62goNpx1ThQf689e", + "type": "users" + } + ] + } ... + } + ... + }, + "included": [ + { + "id": "user-62goNpx1ThQf689e", + "type": "users", + "attributes": { + "username": "hashibot" + ... + } ... + } + ] +} +``` + +## Rate Limiting + +You can make up to 30 requests per second to most API endpoints as an authenticated or unauthenticated request. If you reach the rate limit then your access will be throttled and an error response will be returned. + +Requests are per user, not per token. As a result, you cannot use multiple tokens to make more than 30 requests per second. + +Unauthenticated requests are associated with the requesting IP address. + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------- | +| [429][] | [JSON API error object][] | Rate limit has been reached. | + +```json +{ + "errors": [ + { + "detail": "You have exceeded the API's rate limit.", + "status": 429, + "title": "Too many requests" + } + ] +} +``` + +### Lower rate limits for some endoints + +To prevent abuse, some endpoints have lower rate limits. The lower limits are unnoticeable under normal use. If you trigger a rate-limited response, you can see that limit in the `x-ratelimit-limit` header. + +The following endpoints have lower rate limits: + +| Method and endpoint | Purpose | Limit | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ----------------------------------- | +| <p>`POST /session/two-factor-send-sms`</p><p>`POST /api/v2/account/actions/two-factor-enable`</p><p>`POST /api/v2/account/actions/two-factor-resend-verification-code`</p> | Send SMS message | 5 requests per minute per user | +| <p>`POST /api/v2/account/actions/two-factor-enable`</p><p>`POST /api/v2/account/actions/two-factor-resend-verification-code`</p> | Send SMS message | 10 requests per hour per user | +| <p>`POST /api/v2/account/actions/two-factor-enable`</p><p>`POST /api/v2/account/actions/two-factor-resend-verification-code`</p> | Send SMS message | 100 requests per day per IP address | +| <p>`POST /session/two-factor`</p><p>`POST /session/two-factor-recovery`</p> | Submit 2FA code | 5 requests per minute per user | +| <p>`POST` and `PATCH /api/v2/account/create`</p><p>`POST` and `PATCH /api/v2/account/update`</p><p>`POST` and `PATCH /api/v2/account/password`</p><p>`POST` and `PATCH /api/v2/account/reconfirm`</p><p>`POST /session`</p> | Send emails | 100 per minute | +| <p>`POST` and `GET /sso/link-new-account`</p><p>`POST` and `GET /sso/link-account`</p><p>`POST` and `GET /sso/link-existing-account`</p><p>`POST /sso/saml/{SAML_CONFIGURATION_EXTERNAL_ID}/acs`</p> | Send emails | 20 per minute | +| <p>`POST /api/v2/notification-configurations/{EXTERNAL_ID}/actions/verify`</p><p>`DELETE /api/v2/oauth-tokens`</p> | Send emails | 10 per minute | +| <p>`POST /account/reconfirm`</p> | Send emails | 40 per hour | +| <p>`POST /auth`</p> | Send emails | 40 per hour per email address | + +## Client libraries and tools + +HashiCorp maintains [go-tfe](https://github.com/hashicorp/go-tfe), a Go client for HCP Terraform's API. + +Additionally, the community of HCP Terraform users and vendors have built client libraries in other languages. These client libraries and tools are not tested nor officially maintained by HashiCorp, but are listed below in order to help users find them easily. + +If you have built a client library and would like to add it to this community list, please [contribute](https://github.com/hashicorp/terraform-website#contributions-welcome) to [this page](https://github.com/hashicorp/terraform-docs-common/blob/main/website/docs/cloud-docs/api-docs/index.mdx#client-libraries-and-tools). + +- [tfh](https://github.com/hashicorp-community/tf-helper): UNIX shell console app +- [tf_api_gateway](https://github.com/PlethoraOfHate/tf_api_gateway): Python API library and console app +- [terrasnek](https://github.com/dahlke/terrasnek): Python API library +- [terraform-enterprise-client](https://github.com/skierkowski/terraform-enterprise-client): Ruby API library and console app +- [pyterprise](https://github.com/JFryy/terraform-enterprise-api-python-client): A simple Python API client library. +- [Tfe.NetClient](https://github.com/everis-technology/Tfe.NetClient): .NET Client Library diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/no-code-provisioning.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/no-code-provisioning.mdx new file mode 100644 index 0000000000..c8c0bfd9f9 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/no-code-provisioning.mdx @@ -0,0 +1,924 @@ +--- +page_title: /no-code-modules API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/no-code-modules` endpoint to designate + and configure no-code modules. You can also use this endpoint to deploy and + upgrade no-code workspaces. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: http://jsonapi.org/format/#error-objects + +# No-code provisioning API reference + +The no-code provisioning API allows you to create, configure, and deploy Terraform modules in the no-code provisioning workflows within HCP Terraform. For more information on no-code modules, refer to [Designing No-Code Ready Modules](/terraform/enterprise/no-code-provisioning/module-design). + +## Enable no-code provisioning for a module + +`POST /organizations/:organization_name/no-code-modules` + +| Parameter | Description | +| -------------------- | --------------------------------------------------- | +| `:organization_name` | The name of the organization the module belongs to. | + +To deploy a module using the no-code provisioning workflow, the module must meet the following requirement: + +1. The module must exist in your organization's private registry. +2. The module must meet the [design requirements](/terraform/enterprise/no-code-provisioning/module-design#requirements) for a no-code module. +3. You must enable no-code provisioning for the module. + +You can send a `POST` request to the `/no-code-modules` endpoint to enable no-code provisioning for a specific module. You can also call this endpoint to set options for the allowed values of a variable for a no-code module in your organization. + +-> **Note**: This endpoint can not be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | --------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "no-code-modules"`) | Successfully enabled a module for no-code provisioning. | +| [404][] | [JSON API error object][] | Not found, or the user is unauthorized to perform this action. | +| [422][] | [JSON API error object][] | Malformed request body (e.g., missing attributes, wrong types, etc.). | +| [500][] | [JSON API error object][] | Internal system failure. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------------------------------------------- | ------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"no-code-modules"`. | +| `data.attributes.version-pin` | string | Latest version of the module | The module version to use in no-code provisioning workflows. | +| `data.attributes.enabled` | boolean | `false` | Set to `true` to enable no-code provisioning workflows. | +| `data.relationships.registry-module.data.id` | string | | The ID of a module in the organization's private registry. | +| `data.relationships.registry-module.data.type` | string | | Must be `"registry-module"`. | +| `data.relationships.variable-options.data[].type` | string | | Must be `"variable-options"`. | +| `data.relationships.variable-options.data[].attributes.variable-name` | string | | The name of a variable within the module. | +| `data.relationships.variable-options.data[].attributes.variable-type` | string | | The data type for the variable. Can be [any type supported by Terraform](/terraform/language/expressions/types#types). | +| `data.relationships.variable-options.data[].attributes.options` | Any\[] | | A list of allowed values for the variable. | + +### Sample Payload + +```json +{ + "data": { + "type": "no-code-modules", + "attributes": { + "version-pin": "1.0.1", + "enabled": true + }, + "relationships": { + "registry-module": { + "data": { + "id": "mod-2aaFrmRPZs2N9epr", + "type": "registry-module" + } + }, + "variable-options": { + "data": [ + { + "type": "variable-options", + "attributes": { + "variable-name": "amis", + "variable-type": "string", + "options": [ + "ami-1", + "ami-2", + "ami-3" + ] + } + }, + { + "type": "variable-options", + "attributes": { + "variable-name": "region", + "variable-type": "string", + "options": [ + "eu-north-1", + "us-east-2", + "us-west-1" + ] + } + } + ] + } + } + } +} + +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/no-code-modules +``` + +### Sample Response + +```json +{ + "data": { + "id": "nocode-9HE91XDNY3faePn2", + "type": "no-code-modules", + "attributes": { + "enabled": true, + "version-pin": "1.0.1" + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "registry-module": { + "data": { + "id": "mod-2aaFrmRPZs2N9epr", + "type": "registry-modules" + }, + "links": { + "related": "/api/v2/registry-modules/mod-2aaFrmRPZs2N9epr" + } + }, + "variable-options": { + "data": [ + { + "id": "ncvaropt-fcHDfnZ1EGdRzFNC", + "type": "variable-options" + }, + { + "id": "ncvaropt-dZMfdh9KBcwFjyv2", + "type": "variable-options" + } + ] + } + }, + "links": { + "self": "/api/v2/no-code-modules/nocode-9HE91XDNY3faePn2" + } + } +} +``` + +## Update no-code provisioning settings + +`PATCH /no-code-modules/:id` + +| Parameter | Description | +| --------- | -------------------------------------------- | +| `:id` | The unique identifier of the no-code module. | + +Send a `PATCH` request to the `/no-code-modules/:id` endpoint to update the settings for the no-code provisioning of a module. You can update the following settings: + +- Enable or disable no-code provisioning. +- Adjust the set of options for allowed variable values. +- Change the module version being provisioned. +- Change the module being provisioned. + +The [API call that enables no-code provisioning for a module](#allow-no-code-provisioning-of-a-module-within-an-organization) returns that module's unique identifier. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | --------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "no-code-modules"`) | Successfully updated a no-code module. | +| [404][] | [JSON API error object][] | Not found, or the user is unauthorized to perform this action. | +| [422][] | [JSON API error object][] | Malformed request body (e.g., missing attributes, wrong types, etc.). | +| [500][] | [JSON API error object][] | Internal system failure. | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------------------------------------------- | ------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"no-code-modules"`. | +| `data.attributes.version-pin` | string | Existing value | The module version to use in no-code provisioning workflows. | +| `data.attributes.enabled` | boolean | Existing value | Set to `true` to enable no-code provisioning workflows, or `false` to disable them. | +| `data.relationships.registry-module.data.id` | string | Existing value | The ID of a module in the organization's Private Registry. | +| `data.relationships.registry-module.data.type` | string | Existing value | Must be `"registry-module"`. | +| `data.relationships.variable-options.data[].id` | string | | The ID of an existing variable-options set. If provided, a new variable-options set replaces the set with this ID. If not provided, this creates a new variable-option set. | +| `data.relationships.variable-options.data[].type` | string | | Must be `"variable-options"`. | +| `data.relationships.variable-options.data[].attributes.variable-name` | string | | The name of a variable within the module. | +| `data.relationships.variable-options.data[].attributes.variable-type` | string | | The data type for the variable. Can be [any type supported by Terraform](/terraform/language/expressions/types#types). | +| `data.relationships.variable-options.data[].attributes.options` | Any\[] | | A list of allowed values for the variable. | + +### Sample Payload + +```json +{ + "data": { + "type": "no-code-modules", + "attributes": { + "enabled": false + }, + "relationships": { + "registry-module": { + "data": { + "id": "mod-zyai9dwH4VPPaVuC", + "type": "registry-module" + } + }, + "variable-options": { + "data": [ + { + "id": "ncvaropt-fcHDfnZ1EGdRzFNC", + "type": "variable-options", + "attributes": { + "variable-name": "Linux AMIs", + "variable-type": "array", + "options": [ + "Xenial Xerus", + "Trusty Tahr" + ] + } + }, + { + "id": "ncvaropt-dZMfdh9KBcwFjyv2", + "type": "variable-options", + "attributes": { + "variable-name": "region", + "variable-type": "array", + "options": [ + "eu-north-1", + "us-east-2", + "us-west-1" + ] + } + } + ] + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/no-code-modules/nocode-9HE91XDNY3faePn2 +``` + +### Sample Response + +```json +{ + "data": { + "id": "nocode-9HE91XDNY3faePn2", + "type": "no-code-modules", + "attributes": { + "enabled": true, + "version-pin": "1.0.1" + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "registry-module": { + "data": { + "id": "mod-2aaFrmRPZs2N9epr", + "type": "registry-modules" + }, + "links": { + "related": "/api/v2/registry-modules/mod-2aaFrmRPZs2N9epr" + } + }, + "variable-options": { + "data": [ + { + "id": "ncvaropt-fcHDfnZ1EGdRzFNC", + "type": "variable-options" + }, + { + "id": "ncvaropt-dZMfdh9KBcwFjyv2", + "type": "variable-options" + } + ] + } + }, + "links": { + "self": "/api/v2/no-code-modules/nocode-9HE91XDNY3faePn2" + } + } +} +``` + +## Read a no-code module's properties + +`GET /no-code-modules/:id` + +| Parameter | Description | +| --------- | -------------------------------------------- | +| `:id` | The unique identifier of the no-code module. | + +Use this API to read the details of an existing no-code module. + +The [API call that enables no-code provisioning for a module](#allow-no-code-provisioning-of-a-module-within-an-organization) returns that module's unique identifier. + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | --------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "no-code-modules"`) | Successfully read the no-code module. | +| [400][] | [JSON API error object][] | Invalid `include` parameter. | +| [404][] | [JSON API error object][] | Not found, or the user is unauthorized to perform this action. | +| [422][] | [JSON API error object][] | Malformed request body (e.g., missing attributes, wrong types, etc.). | +| [500][] | [JSON API error object][] | Internal system failure. | + +### Query Parameters + +This endpoint uses our [standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Use HTML URL encoding syntax, such as `%5B` to represent `[` and `%5D` to represent `]`, if your tooling does not automatically encode URLs. + +Terraform returns related resources when you add the [`include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources) to the request. + +| Parameter | Description | +| --------- | ------------------------------------------------- | +| `include` | List related resource to include in the response. | + +The following resource types are available: + +| Resource Name | Description | +| ------------------ | --------------------------------------------------------- | +| `variable_options` | Module variables with a configured set of allowed values. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/no-code-modules/nocode-9HE91XDNY3faePn2?include=variable_options +``` + +### Sample Response + +```json +{ + "data": { + "id": "nocode-9HE91XDNY3faePn2", + "type": "no-code-modules", + "attributes": { + "enabled": true, + "version-pin": "1.0.1" + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "registry-module": { + "data": { + "id": "mod-2aaFrmRPZs2N9epr", + "type": "registry-modules" + }, + "links": { + "related": "/api/v2/registry-modules/mod-2aaFrmRPZs2N9epr" + } + }, + "variable-options": { + "data": [ + { + "id": "ncvaropt-fcHDfnZ1EGdRzFNC", + "type": "variable-options" + }, + { + "id": "ncvaropt-dZMfdh9KBcwFjyv2", + "type": "variable-options" + } + ] + } + }, + "links": { + "self": "/api/v2/no-code-modules/nocode-9HE91XDNY3faePn2" + } + }, + "included": [ + { + "id": "ncvaropt-fcHDfnZ1EGdRzFNC", + "type": "variable-options", + "attributes": { + "variable-name": "Linux AMIs", + "variable-type": "array", + "options": [ + "Xenial Xerus", + "Trusty Tahr" + ] + }, + "relationships": { + "no-code-allowed-module": { + "data": { + "id": "nocode-9HE91XDNY3faePn2", + "type": "no-code-allowed-modules" + } + } + } + }, + { + "id": "ncvaropt-dZMfdh9KBcwFjyv2", + "type": "variable-options", + "attributes": { + "variable-name": "region", + "variable-type": "array", + "options": [ + "eu-north-1", + "us-east-2", + "us-west-1" + ] + }, + "relationships": { + "no-code-allowed-module": { + "data": { + "id": "nocode-9HE91XDNY3faePn2", + "type": "no-code-allowed-modules" + } + } + } + } + ] +} +``` + +## Create a no-code module workspace + +This endpoint creates a workspace from a no-code module. + +`POST /no-code-modules/:id/workspaces` + +| Parameter | Description | +| --------- | ------------------------------------------ | +| `:id` | The ID of the no-code module to provision. | + +Each HCP Terraform organization has a list of which modules you can use to create workspaces using no-code provisioning. You can use this API to create a workspace by selecting a no-code module to enable a no-code provisioning workflow. + +-> **Note**: This endpoint can not be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | -------------------------------------------- | -------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "workspaces"`) | Successfully created a workspace from a no-code module for no-code provisioning. | +| [404][] | [JSON API error object][] | Not found, or the user is unauthorized to perform this action. | +| [422][] | [JSON API error object][] | Malformed request body (e.g., missing attributes, wrong types, etc.). | +| [500][] | [JSON API error object][] | Internal system failure. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | | +| ------------------------------------------------------- | ------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | +| `data.type` | string | none | Must be `"workspaces"`. | | +| `data.attributes.agent-pool-id` | string | none | Required when `execution-mode` is set to `agent`. The ID of the agent pool belonging to the workspace's organization. This value must not be specified if `execution-mode` is set to `remote`. | | +| `data.attributes.auto_apply` | boolean | `false` | If `true`, Terraform automatically applies changes when a Terraform `plan` is successful. | | +| `data.attributes.description` | string | `""` | A description for the workspace. | | +| `data.attributes.execution-mode` | string | none | Which [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) to use. Valid values are `remote`, and `agent`. When not provided, defaults to `remote`. | | +| `data.attributes.name` | string | none | The name of the workspace. You can only include letters, numbers, `-`, and `_`. Terraform uses this value to identify the workspace and must be unique in the organization. | | +| `data.attributes.source-name` | string | none | A friendly name for the application or client creating this workspace. If set, this will be displayed on the workspace as "Created via `<SOURCE NAME>`". | | +| `data.attributes.source-url` | string | (nothing) | A URL for the application or client creating this workspace. This can be the URL of a related resource in another app, or a link to documentation or other info about the client. | | +| `data.attributes.terraform-version` | string | latest release | Specifies the version of Terraform to use for this workspace. You can specify an exact version or a [version constraint](/terraform/language/expressions/version-constraints) such as `~> 1.0.0`. If you specify a constraint, the workspace always uses the newest release that meets that constraint. If omitted when creating a workspace, this defaults to the latest released version. | | +| `data.relationships.project.data.id` | string | | The ID of the project to create the workspace in. You must have permission to create workspaces in the project, either by organization-level permissions or team admin access to a specific project. | | +| `data.relationships.project.data.type` | string | | Must be `"project"`. | | +| `data.relationships.vars.data[].type` | string | | Must be `"vars"`. | | +| `data.relationships.vars.data[].attributes.key` | string | | The name of the variable. | | +| `data.relationships.vars.data[].attributes.value` | string | `""` | The value of the variable. | | +| `data.relationships.vars.data[].attributes.description` | string | | The description of the variable. | | +| `data.relationships.vars.data[].attributes.category` | string | | Whether this is a Terraform or environment variable. Valid values are `"terraform"` or `"env"`. | | +| `data.relationships.vars.data[].attributes.hcl` | boolean | `false` | Whether to evaluate the value of the variable as a string of HCL code. Has no effect for environment variables. | | +| `data.relationships.vars.data[].attributes.sensitive` | boolean | `false` | Whether the value is sensitive. If `true` then the variable is written once and not visible thereafter. | | + +### Sample Payload + +```json +{ + "data": { + "type": "workspaces", + "attributes": { + "name": "no-code-workspace", + "description": "A workspace to enable the no-code provisioning workflow." + }, + "relationships": { + "project": { + "data": { + "id": "prj-yuEN6sJVra5t6XVy", + "type": "project" + } + }, + "vars": { + "data": [ + { + "type": "vars", + "attributes": { + "key": "region", + "value": "eu-central-1", + "category": "terraform", + "hcl": true, + "sensitive": false, + } + }, + { + "type": "vars", + "attributes": { + "key": "ami", + "value": "ami‑077062", + "category": "terraform", + "hcl": true, + "sensitive": false, + } + } + ] + } + } + } +} + +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/no-code-modules/nocode-WGckovT2RQxupyt1/workspaces +``` + +### Sample Response + +```json +{ + "data": { + "id": "ws-qACTToFUM5BvDKhC", + "type": "workspaces", + "attributes": { + "allow-destroy-plan": true, + "auto-apply": false, + "auto-destroy-at": null, + "auto-destroy-status": null, + "created-at": "2023-09-08T10:36:04.391Z", + "environment": "default", + "locked": false, + "name": "no-code-workspace", + "queue-all-runs": false, + "speculative-enabled": true, + "structured-run-output-enabled": true, + "terraform-version": "1.5.6", + "working-directory": null, + "global-remote-state": true, + "updated-at": "2023-09-08T10:36:04.427Z", + "resource-count": 0, + "apply-duration-average": null, + "plan-duration-average": null, + "policy-check-failures": null, + "run-failures": null, + "workspace-kpis-runs-count": null, + "latest-change-at": "2023-09-08T10:36:04.391Z", + "operations": true, + "execution-mode": "remote", + "vcs-repo": null, + "vcs-repo-identifier": null, + "permissions": { + "can-update": true, + "can-destroy": true, + "can-queue-run": true, + "can-read-variable": true, + "can-update-variable": true, + "can-read-state-versions": true, + "can-read-state-outputs": true, + "can-create-state-versions": true, + "can-queue-apply": true, + "can-lock": true, + "can-unlock": true, + "can-force-unlock": true, + "can-read-settings": true, + "can-manage-tags": true, + "can-manage-run-tasks": true, + "can-force-delete": true, + "can-manage-assessments": true, + "can-manage-ephemeral-workspaces": true, + "can-read-assessment-results": true, + "can-queue-destroy": true + }, + "actions": { + "is-destroyable": true + }, + "description": null, + "file-triggers-enabled": true, + "trigger-prefixes": [], + "trigger-patterns": [], + "assessments-enabled": false, + "last-assessment-result-at": null, + "source": "tfe-module", + "source-name": null, + "source-url": null, + "source-module-id": "private/my-organization/lambda/aws/1.0.9", + "no-code-upgrade-available": false, + "tag-names": [], + "setting-overwrites": { + "execution-mode": false, + "agent-pool": false + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + }, + "current-run": { + "data": null + }, + "latest-run": { + "data": null + }, + "outputs": { + "data": [] + }, + "remote-state-consumers": { + "links": { + "related": "/api/v2/workspaces/ws-qACTToFUM5BvDKhC/relationships/remote-state-consumers" + } + }, + "current-state-version": { + "data": null + }, + "current-configuration-version": { + "data": { + "id": "cv-vizi2p3mnrt3utgA", + "type": "configuration-versions" + }, + "links": { + "related": "/api/v2/configuration-versions/cv-vizi2p3mnrt3utgA" + } + }, + "agent-pool": { + "data": null + }, + "readme": { + "data": null + }, + "project": { + "data": { + "id": "prj-yuEN6sJVra5t6XVy", + "type": "projects" + } + }, + "current-assessment-result": { + "data": null + }, + "no-code-module-version": { + "data": { + "id": "nocodever-vFcQjZLs3ZHTe4TU", + "type": "no-code-module-versions" + } + }, + "vars": { + "data": [] + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/workspaces/no-code-workspace", + "self-html": "/app/my-organization/workspaces/no-code-workspace" + } + } +} +``` + +## Initiate a no-code workspace update + +Upgrading a workspace's no-code provisioning settings is a multi-step process. + +1. Use this API to initiate the update. HCP Terraform starts a new plan, which describes the resources to add, update, or remove from the workspace. +2. Poll the [read workspace upgrade plan status API](#read-workspace-upgrade-plan-status) to wait for HCP Terraform to complete the plan. +3. Use the [confirm and apply a workspace upgrade plan API](#confirm-and-apply-a-workspace-upgrade-plan) to complete the workspace upgrade. + +`POST /no-code-modules/:no_code_module_id/workspaces/:id/upgrade` + +| Parameter | Description | +| -------------------- | ----------------------------- | +| `:no_code_module_id` | The ID of the no-code module. | +| `:id` | The ID of the workspace. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------- | ------- | ------- | --------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"workspaces"`. | +| `data.relationships.vars.data[].type` | string | | Must be `"vars"`. | +| `data.relationships.vars.data[].attributes.key` | string | | The name of the variable. | +| `data.relationships.vars.data[].attributes.value` | string | `""` | The value of the variable. | +| `data.relationships.vars.data[].attributes.description` | string | | The description of the variable. | +| `data.relationships.vars.data[].attributes.category` | string | | Whether this is a Terraform or environment variable. Valid values are `"terraform"` or `"env"`. | +| `data.relationships.vars.data[].attributes.hcl` | boolean | `false` | Whether to evaluate the value of the variable as a string of HCL code. Has no effect for environment variables. | +| `data.relationships.vars.data[].attributes.sensitive` | boolean | `false` | Whether the value is sensitive. If `true` then the variable is written once and not visible thereafter. | + +### Sample Payload + +```json +{ + "data": { + "type": "workspaces", + "relationships": { + "vars": { + "data": [ + { + "type": "vars", + "attributes": { + "key": "region", + "value": "eu-central-1", + "category": "terraform", + "hcl": true, + "sensitive": false, + } + }, + { + "type": "vars", + "attributes": { + "key": "ami", + "value": "ami‑077062", + "category": "terraform", + "hcl": true, + "sensitive": false, + } + } + ] + } + } + } +} + +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/no-code-modules/nocode-WGckovT2RQxupyt1/workspaces/ws-qACTToFUM5BvDKhC/upgrade +``` + +### Sample Response + +```json +{ + "data": { + "id": "run-Cyij8ctBHM1g5xdX", + "type": "workspace-upgrade", + "attributes": { + "status": "planned", + "plan-url": "https://app.terraform.io/app/my-organization/no-code-workspace/runs/run-Cyij8ctBHM1g5xdX" + }, + "relationships": { + "workspace": { + "data": { + "id": "ws-VvKtcfueHNkR6GqP", + "type": "workspaces" + } + } + } + } +} +``` + +## Read workspace upgrade plan status + +This endpoint returns the plan details and status for updating a workspace to new no-code provisioning settings. + +`GET /no-code-modules/:no_code_module_id/workspaces/:workspace_id/upgrade/:id` + +| Parameter | Description | +| -------------------- | ----------------------------- | +| `:no_code_module_id` | The ID of the no-code module. | +| `:workspace_id` | The ID of workspace. | +| `:id` | The ID of update. | + +Returns the details of a no-code workspace update run, including the run's current state, such as `pending`, `fetching`, `planning`, `planned`, or `cost_estimated`. Refer to [Run States and Stages](/terraform/enterprise/run/states) for more information on the states a run can return. + +| Status | Response | Reason | +| ------- | --------------------------------------------------- | ------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "workspace-upgrade"`) | Success | +| [404][] | [JSON API error object][] | Workspace upgrade not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/no-code-modules/nocode-WGckovT2RQxupyt1/workspaces/ws-qACTToFUM5BvDKhC/upgrade/run-Cyij8ctBHM1g5xdX +``` + +### Sample Response + +```json +{ + "data": { + "id": "run-Cyij8ctBHM1g5xdX", + "type": "workspace-upgrade", + "attributes": { + "status": "planned_and_finished", + "plan-url": "https://app.terraform.io/app/my-organization/no-code-workspace/runs/run-Cyij8ctBHM1g5xdX" + }, + "relationships": { + "workspace": { + "data": { + "id": "ws-VvKtcfueHNkR6GqP", + "type": "workspaces" + } + } + } + } +} +``` + +## Confirm and apply a workspace upgrade plan + +Use this endpoint to confirm an update and finalize the update for a workspace to use new no-code provisioning settings. + +`POST /no-code-modules/:no_code_module_id/workspaces/:workspace_id/upgrade/:id` + +| Parameter | Description | +| -------------------- | ----------------------------- | +| `:no_code_module_id` | The ID of the no-code module. | +| `:workspace_id` | The ID of workspace. | +| `:id` | The ID of update. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/no-code-modules/nocode-WGckovT2RQxupyt1/workspaces/ws-qACTToFUM5BvDKhC/upgrade/run-Cyij8ctBHM1g5xdX +``` + +### Sample Response + +```json +{ "Workspace update completed" } +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/notification-configurations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/notification-configurations.mdx new file mode 100644 index 0000000000..2fa78f811f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/notification-configurations.mdx @@ -0,0 +1,1437 @@ +--- +page_title: /notification-configurations API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/notification-configurations` endpoint to + read, create, update, verify, and delete workspace configurations and create + team configurations. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Notification configurations API reference + +HCP Terraform can send notifications for run state transitions and workspace events. You can specify a destination URL, request type, and what events will trigger the notification. Each workspace can have up to 20 notification configurations, and they apply to all runs for that workspace. + +Interacting with notification configurations requires admin access to the relevant workspace. ([More about permissions](/terraform/enterprise/users-teams-organizations/permissions).) + +-> **Note:** [Speculative plans](/terraform/enterprise/run/modes-and-options#plan-only-speculative-plan) and workspaces configured with `Local` [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) do not support notifications. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Notification triggers + +Notifications are sent in response to triggers related to workspace events, and can be defined at workspace and team levels. You can specify workspace events in the `triggers` array attribute. + +### Workspace notification triggers + +The following triggers are available for workspace notifications. + +| Display Name | Value | Description | +| ------------------------ | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Created | `"run:created"` | A run is created and enters the [Pending stage](/terraform/enterprise/run/states#the-pending-stage) | +| Planning | `"run:planning"` | A run acquires the lock and starts to execute. | +| Needs Attention | `"run:needs_attention"` | A plan has changes and Terraform requires user input to continue. This input may include approving the plan or a [policy override](/terraform/enterprise/run/states#the-policy-check-stage). | +| Applying | `"run:applying"` | A run enters the [Apply stage](/terraform/enterprise/run/states#the-apply-stage), where Terraform makes the infrastructure changes described in the plan. | +| Completed | `"run:completed"` | A run completes successfully. | +| Errored | `"run:errored"` | A run terminates early due to error or cancellation. | +| Drifted | `"assessment:drifted"` | HCP Terraform detected configuration drift. This option is only available if you enabled drift detection for the workspace. | +| Checks Failed | `"assessment:check_failure"` | One or more continuous validation checks did not pass. This option is only available if you enabled drift detection for the workspace. | +| Health Assessment Failed | `"assessment:failed"` | A health assessment failed. This option is only available if you enable health assessments for the workspace. | +| Auto Destroy Reminder | `"workspace:auto_destro_reminder"` | An automated workspace destroy run is imminent. | +| Auto Destroy Results | `"workspace:auto_destroy_run_results"` | HCP Terraform attempted an automated workspace destroy run. | + +### Team notification triggers + +The following triggers are available for [team notifications](#team-notification-configuration). + +| Display Name | Value | Description | +| -------------- | ----------------------- | -------------------------------------------------------------------------------------------------- | +| Change Request | `"team:change_request"` | HCP Terraform sent a change request to a workspace that the specified team has explicit access to. | + +## Notification payload + +The notification is an HTTP POST request with a detailed payload. The content depends on the type of notification. + +For Slack and Microsoft Teams notifications, the payload conforms to the respective webhook API and results in a notification message with informational attachments. Refer to [Slack Notification Payloads](/terraform/enterprise/workspaces/settings/notifications#slack) and [Microsoft Teams Notification Payloads](/terraform/enterprise/workspaces/settings/notifications#microsoft-teams) for examples. For generic notifications, the payload varies based on whether the notification contains information about run events or workspace events. + +### Run notification payload + +Run events include detailed information about a specific run, including the time it began and the associated workspace and organization. Generic notifications for run events contain the following information: + +| Name | Type | Description | +| -------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload_version` | number | Always "1". | +| `notification_configuration_id` | string | The ID of the configuration associated with this notification. | +| `run_url` | string | URL used to access the run UI page. | +| `run_id` | string | ID of the run which triggered this notification. | +| `run_message` | string | The reason the run was queued. | +| `run_created_at` | string | Timestamp of the run's creation. | +| `run_created_by` | string | Username of the user who created the run. | +| `workspace_id` | string | ID of the run's workspace. | +| `workspace_name` | string | Human-readable name of the run's workspace. | +| `organization_name` | string | Human-readable name of the run's organization. | +| `notifications` | array | List of events which caused this notification to be sent, with each event represented by an object. At present, this is always one event, but in the future HCP Terraform may roll up several notifications for a run into a single request. | +| `notifications[].message` | string | Human-readable reason for the notification. | +| `notifications[].trigger` | string | Value of the trigger which caused the notification to be sent. | +| `notifications[].run_status` | string | Status of the run at the time of notification. | +| `notifications[].run_updated_at` | string | Timestamp of the run's update. | +| `notifications[].run_updated_by` | string | Username of the user who caused the run to update. | + +#### Sample payload + +```json +{ + "payload_version": 1, + "notification_configuration_id": "nc-AeUQ2zfKZzW9TiGZ", + "run_url": "https://app.terraform.io/app/acme-org/my-workspace/runs/run-FwnENkvDnrpyFC7M", + "run_id": "run-FwnENkvDnrpyFC7M", + "run_message": "Add five new queue workers", + "run_created_at": "2019-01-25T18:34:00.000Z", + "run_created_by": "sample-user", + "workspace_id": "ws-XdeUVMWShTesDMME", + "workspace_name": "my-workspace", + "organization_name": "acme-org", + "notifications": [ + { + "message": "Run Canceled", + "trigger": "run:errored", + "run_status": "canceled", + "run_updated_at": "2019-01-25T18:37:04.000Z", + "run_updated_by": "sample-user" + } + ] +} +``` + +### Change request notification payload + +Change request events contain the following fields in their payloads. + +| Name | Type | Description | +| ------------------------------- | ------ | -------------------------------------------------------------- | +| `payload_version` | number | Always "1". | +| `notification_configuration_id` | string | The ID of the configuration associated with this notification. | +| `change_request_url` | string | URL used to access the change request UI page. | +| `change_request_subject` | string | title of the change request which triggered this notification. | +| `change_request_message` | string | The contents of the change request. | +| `change_request_created_at` | string | Timestamp of the change request's creation. | +| `change_request_created_by` | string | Username of the user who created the change_request. | +| `workspace_id` | string | ID of the run's workspace. | +| `workspace_name` | string | Human-readable name of the run's workspace. | +| `organization_name` | string | Human-readable name of the run's organization. | + +##### `Send a test` payload + +This is a sample payload you can send to test if notifications are working. The payload does not have a `run` or `workspace` context, resulting in null values. + +You can trigger a test notification from the workspace notification settings page. You can read more about verifying a [notification configuration](/terraform/enterprise/workspaces/settings/notifications#enabling-and-verifying-a-configuration). + +```json +{ + "payload_version": 1, + "notification_configuration_id": "nc-jWvVsmp5VxsaCeXm", + "run_url": null, + "run_id": null, + "run_message": null, + "run_created_at": null, + "run_created_by": null, + "workspace_id": null, + "workspace_name": null, + "organization_name": null, + "notifications": [ + { + "message": "Verification of test", + "trigger": "verification", + "run_status": null, + "run_updated_at": null, + "run_updated_by": null, + } + ] +} +``` + +### Workspace notification payload + +Workspace events include detailed information about workspace-level validation events like [health assessments](/terraform/enterprise/workspaces/health) if you enable them for the workspace. Much of the information provides details about the associated [assessment result](/terraform/enterprise/api-docs/assessment-results), which HCP Terraform uses to track instances of continuous validation. + +HCP Terraform returns different types of attributes returned in the payload details, depending on the type of `trigger_scope`. There are two main values for `trigger_scope`: `assessment` and `workspace`, examples of which you can see below. + +#### Health assessments + +Health assessment notifications for workspace events contain the following information: + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/health-assessments.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +| Name | Type | Description | +| ------------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------- | +| `payload_version` | number | Always "2". | +| `notification_configuration_id` | string | The ID of the configuration associated with this notification. | +| `notification_configuration_url` | string | URL to get the notification configuration from the HCP Terraform API. | +| `trigger_scope` | string | Always "assessment" for workspace assessment notifications. | +| `trigger` | string | Value of the trigger that caused the notification to be sent. | +| `message` | string | Human-readable reason for the notification. | +| `details` | object | Object containing details specific to the notification. | +| `details.new_assessment_result` | object | The most recent assessment result. This result triggered the notification. | +| `details.new_assessment_result.id` | string | ID of the assessment result. | +| `details.new_assessment_result.url` | string | URL to get the assessment result from the HCP Terraform API. | +| `details.new_assessment_result.succeeded` | bool | Whether assessment succeeded. | +| `details.new_assessment_result.all_checks_succeeded` | bool | Whether all conditions passed. | +| `details.new_assessment_result.checks_passed` | number | The number of resources, data sources, and outputs passing their conditions. | +| `details.new_assessment_result.checks_failed` | number | The number of resources, data sources, and outputs with one or more failing conditions. | +| `details.new_assessment_result.checks_errored` | number | The number of resources, data sources, and outputs that had a condition error. | +| `details.new_assessment_result.checks_unknown` | number | The number of resources, data sources, and outputs that had conditions left unevaluated. | +| `details.new_assessment_result.drifted` | bool | Whether assessment detected drift. | +| `details.new_assessment_result.resources_drifted` | number | The number of resources whose configuration does not match from the workspace's state file. | +| `details.new_assessment_result.resources_undrifted` | number | The number of real resources whose configuration matches the workspace's state file. | +| `details.new_assessment_result.created_at` | string | Timestamp for when HCP Terraform created the assessment result. | +| `details.prior_assessment_result` | object | The assessment result immediately prior to the one that triggered the notification. | +| `details.prior_assessment_result.id` | string | ID of the assessment result. | +| `details.prior_assessment_result.url` | string | URL to get the assessment result from the HCP Terraform API. | +| `details.prior_assessment_result.succeeded` | bool | Whether assessment succeeded. | +| `details.prior_assessment_result.all_checks_succeeded` | bool | Whether all conditions passed. | +| `details.prior_assessment_result.checks_passed` | number | The number of resources, data sources, and outputs passing their conditions. | +| `details.prior_assessment_result.checks_failed` | number | The number of resources, data sources, and outputs with one or more failing conditions. | +| `details.prior_assessment_result.checks_errored` | number | The number of resources, data sources, and outputs that had a condition error. | +| `details.prior_assessment_result.checks_unknown` | number | The number of resources, data sources, and outputs that had conditions left unevaluated. | +| `details.prior_assessment_result.drifted` | bool | Whether assessment detected drift. | +| `details.prior_assessment_result.resources_drifted` | number | The number of resources whose configuration does not match the workspace's state file. | +| `details.prior_assessment_result.resources_undrifted` | number | The number of resources whose configuration matches the workspace's state file. | +| `details.prior_assessment_result.created_at` | string | Timestamp of the assessment result. | +| `details.workspace_id` | string | ID of the workspace that generated the notification. | +| `details.workspace_name` | string | Human-readable name of the workspace. | +| `details.organization_name` | string | Human-readable name of the organization. | + +##### Sample payload + +Health assessment payloads have information about resource drift and continuous validation checks. + +```json +{ + "payload_version": "2", + "notification_configuration_id": "nc-SZ3V3cLFxK6sqLKn", + "notification_configuration_url": "https://app.terraform.io/api/v2/notification-configurations/nc-SZ3V3cLFxK6sqLKn", + "trigger_scope": "assessment", + "trigger": "assessment:drifted", + "message": "Drift Detected", + "details": { + "new_assessment_result": { + "id": "asmtres-vRVQxpqq64EA9V5a", + "url": "https://app.terraform.io/api/v2/assessment-results/asmtres-vRVQxpqq64EA9V5a", + "succeeded": true, + "drifted": true, + "all_checks_succeeded": true, + "resources_drifted": 4, + "resources_undrifted": 55, + "checks_passed": 33, + "checks_failed": 0, + "checks_errored": 0, + "checks_unknown": 0, + "created_at": "2022-06-09T05:23:10Z" + }, + "prior_assessment_result": { + "id": "asmtres-A6zEbpGArqP74fdL", + "url": "https://app.terraform.io/api/v2/assessment-results/asmtres-A6zEbpGArqP74fdL", + "succeeded": true, + "drifted": true, + "all_checks_succeeded": true, + "resources_drifted": 4, + "resources_undrifted": 55, + "checks_passed": 33, + "checks_failed": 0, + "checks_errored": 0, + "checks_unknown": 0, + "created_at": "2022-06-09T05:22:51Z" + }, + "workspace_id": "ws-XdeUVMWShTesDMME", + "workspace_name": "my-workspace", + "organization_name": "acme-org" + } +} +``` + +#### Automatic destroy runs + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/ephemeral-workspaces.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Automatic destroy run notifications for workspace events contain the following information: + +| Name | Type | Description | +| ---------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------- | +| `payload_version` | string | Always 2. | +| `notification_configuration_id` | string | The ID of the notification's configuration. | +| `notification_configuration_url` | string | The URL to get the notification's configuration from the HCP Terraform API. | +| `trigger_scope` | string | Always "workspace" for ephemeral workspace notifications | +| `trigger` | string | Value of the trigger that caused HCP Terraform to send the notification. | +| `message` | string | Human-readable reason for the notification. | +| `details` | object | Object containing details specific to the notification. | +| `details.auto_destroy_at` | string | Timestamp when HCP Terraform will schedule the next destroy run. Only applies to reminder notifications. | +| `details.run_created_at` | string | Timestamp of when HCP Terraform successfully created a destroy run. Only applies to results notifications. | +| `details.run_status` | string | Status of the scheduled destroy run. Only applies to results notifications. | +| `details.run_external_id` | string | The ID of the scheduled destroy run. Only applies to results notifications. | +| `details.run_create_error_message` | string | Message detailing why the run was unable to be queued. Only applies to results notifications. | +| `details.trigger_type` | string | The type of notification, and the value is either "reminder" or "results". | +| `details.workspace_name` | string | Human-readable name of the workspace. | +| `details.organization_name` | string | Human-readable name of the organization. | + +##### Sample payload + +The shape of data in auto destroy notification payloads may differ depending on the success of the run HCP Terraform created. Refer to the specific examples below. + +###### Reminder + +Reminders that HCP Terraform will trigger a destroy run at some point in the future. + +```json +{ + "payload_version": "2", + "notification_configuration_id": "nc-SZ3V3cLFxK6sqLKn", + "notification_configuration_url": "https://app.terraform.io/api/v2/notification-configurations/nc-SZ3V3cLFxK6sqLKn", + "trigger_scope": "workspace", + "trigger": "workspace:auto_destroy_reminder", + "message": "Auto Destroy Reminder", + "details": { + "auto_destroy_at": "2025-01-01T00:00:00Z", + "run_created_at": null, + "run_status": null, + "run_external_id": null, + "run_create_error_message": null, + "trigger_type": "reminder", + "workspace_name": "learned-english-dog", + "organization_name": "acme-org" + } +} +``` + +###### Results + +The final result of the scheduled auto destroy run includes additional metadata about the run. + +```json +{ + "payload_version": "2", + "notification_configuration_id": "nc-SZ3V3cLFxK6sqLKn", + "notification_configuration_url": "https://app.terraform.io/api/v2/notification-configurations/nc-SZ3V3cLFxK6sqLKn", + "trigger_scope": "workspace", + "trigger": "workspace:auto_destroy_results", + "message": "Auto Destroy Results", + "details": { + "auto_destroy_at": null, + "run_created_at": "2022-06-09T05:22:51Z", + "run_status": "applied", + "run_external_id": "run-vRVQxpqq64EA9V5a", + "run_create_error_message": null, + "trigger_type": "results", + "workspace_name": "learned-english-dog", + "organization_name": "acme-org" + } +} +``` + +###### Failed run creation + +Run-specific values are empty when HCP Terraform was unable to create an auto destroy run. + +```json +{ + "payload_version": "2", + "notification_configuration_id": "nc-SZ3V3cLFxK6sqLKn", + "notification_configuration_url": "https://app.terraform.io/api/v2/notification-configurations/nc-SZ3V3cLFxK6sqLKn", + "trigger_scope": "workspace", + "trigger": "workspace:auto_destroy_results", + "message": "Auto Destroy Results", + "details": { + "auto_destroy_at": null, + "run_created_at": null, + "run_status": null, + "run_external_id": null, + "run_create_error_message": "Configuration version is missing", + "trigger_type": "results", + "workspace_name": "learned-english-dog", + "organization_name": "acme-org" + } +} +``` + +## Notification authenticity + +If a `token` is configured, HCP Terraform provides an HMAC signature on all `"generic"` notification requests, using the `token` as the key. This is sent in the `X-TFE-Notification-Signature` header. The digest algorithm used is SHA-512. Notification target servers should verify the source of the HTTP request by computing the HMAC of the request body using the same shared secret, and dropping any requests with invalid signatures. + +Sample Ruby code for verifying the HMAC: + +```ruby +token = SecureRandom.hex +hmac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha512"), token, @request.body) +fail "Invalid HMAC" if hmac != @request.headers["X-TFE-Notification-Signature"] +``` + +## Notification verification and delivery responses + +When saving a configuration with `enabled` set to `true`, or when using the [verify API][], HCP Terraform sends a verification request to the configured URL. The response to this request is stored and available in the `delivery-responses` array of the `notification-configuration` resource. + +Configurations cannot be enabled if the verification request fails. Success is defined as an HTTP response with status code of `2xx`. +Configurations with `destination_type` `email` can only be verified manually, they do not require an HTTP response. + +The most recent response is stored in the `delivery-responses` array. + +Each delivery response has several fields: + +| Name | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `body` | string | Response body (may be truncated). | +| `code` | string | HTTP status code, e.g. `400`. | +| `headers` | object | All HTTP headers received, represented as an object with keys for each header name (lowercased) and an array of string values (most arrays will be size one). | +| `sent-at` | date | The UTC timestamp when the notification was sent. | +| `successful` | bool | Whether HCP Terraform considers this response to be successful. | +| `url` | string | The URL to which the request was sent. | + +[verify API]: #verify-a-notification-configuration + +## Create a notification configuration + +`POST /workspaces/:workspace_id/notification-configurations` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:workspace_id` | The ID of the workspace to list configurations for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +| Status | Response | Reason | +| ------- | ------------------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "notification-configurations"`) | Successfully created a notification configuration | +| [400][] | [JSON API error object][] | Unable to complete verification request to destination URL | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +If `enabled` is set to `true`, a verification request will be sent before saving the configuration. If this request receives no response or the response is not successful (HTTP 2xx), the configuration will not save. + +| Key path | Type | Default | Description | +| ---------------------------------- | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"notification-configuration"`. | +| `data.attributes.destination-type` | string | | Type of notification payload to send. Valid values are `"generic"`, `"email"`, `"slack"` or `"microsoft-teams"`. | +| `data.attributes.enabled` | bool | `false` | Disabled configurations will not send any notifications. | +| `data.attributes.name` | string | | Human-readable name for the configuration. | +| `data.attributes.token` | string or null | `null` | Optional write-only secure token, which can be used at the receiving server to verify request authenticity. See [Notification Authenticity][notification-authenticity] for more details. | +| `data.attributes.triggers` | array | `[]` | Array of triggers for which this configuration will send notifications. See [Notification Triggers][notification-triggers] for more details and a list of allowed values. | +| `data.attributes.url` | string | | HTTP or HTTPS URL to which notification requests will be made, only for configurations with `"destination_type:"` `"slack"`, `"microsoft-teams"` or `"generic"` | +| `data.relationships.users` | array | | Array of users part of the organization, only for configurations with `"destination_type:"` `"email"` | + +[notification-authenticity]: #notification-authenticity + +[notification-triggers]: #notification-triggers + +### Sample payload for generic notification configurations + +```json +{ + "data": { + "type": "notification-configuration", + "attributes": { + "destination-type": "generic", + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "triggers": [ + "run:applying", + "run:completed", + "run:created", + "run:errored", + "run:needs_attention", + "run:planning" + ] + } + } +} +``` + +### Sample payload for email notification configurations + +```json +{ + "data": { + "type": "notification-configurations", + "attributes": { + "destination-type": "email", + "enabled": true, + "name": "Notify organization users about run", + "triggers": [ + "run:applying", + "run:completed", + "run:created", + "run:errored", + "run:needs_attention", + "run:planning" + ] + }, + "relationships": { + "users": { + "data": [ { "id": "organization-user-id", "type": "users" } ] + } + } + } +} +``` + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-XdeUVMWShTesDMME/notification-configurations +``` + +### Sample response + +```json +{ + "data": { + "id": "nc-AeUQ2zfKZzW9TiGZ", + "type": "notification-configurations", + "attributes": { + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "destination-type": "generic", + "token": null, + "triggers": [ + "run:applying", + "run:completed", + "run:created", + "run:errored", + "run:needs_attention", + "run:planning" + ], + "delivery-responses": [ + { + "url": "https://httpstat.us/200", + "body": "\"200 OK\"", + "code": "200", + "headers": { + "cache-control": [ + "private" + ], + "content-length": [ + "129" + ], + "content-type": [ + "application/json; charset=utf-8" + ], + "content-encoding": [ + "gzip" + ], + "vary": [ + "Accept-Encoding" + ], + "server": [ + "Microsoft-IIS/10.0" + ], + "x-aspnetmvc-version": [ + "5.1" + ], + "access-control-allow-origin": [ + "*" + ], + "x-aspnet-version": [ + "4.0.30319" + ], + "x-powered-by": [ + "ASP.NET" + ], + "set-cookie": [ + "ARRAffinity=77c477e3e649643e5771873e1a13179fb00983bc73c71e196bf25967fd453df9;Path=/;HttpOnly;Domain=httpstat.us" + ], + "date": [ + "Tue, 08 Jan 2019 21:34:37 GMT" + ] + }, + "sent-at": "2019-01-08 21:34:37 UTC", + "successful": "true" + } + ], + "created-at": "2019-01-08T21:32:14.125Z", + "updated-at": "2019-01-08T21:34:37.274Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ" + } + } +} +``` + +## List notification configurations + +Use the following endpoint to list all notification configurations for a workspace. + +`GET /workspaces/:workspace_id/notification-configurations` + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to list configurations from. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. | + +### Query parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 notification configurations per page. | + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/workspaces/ws-XdeUVMWShTesDMME/notification-configurations +``` + +### Sample response + +```json +{ + "data": [ + { + "id": "nc-W6VGEi8A7Cfoaf4K", + "type": "notification-configurations", + "attributes": { + "enabled": false, + "name": "Slack: #devops", + "url": "https://hooks.slack.com/services/T00000000/BC012345/0PWCpQmYyD4bTTRYZ53q4w", + "destination-type": "slack", + "token": null, + "triggers": [ + "run:errored", + "run:needs_attention" + ], + "delivery-responses": [], + "created-at": "2019-01-08T21:34:28.367Z", + "updated-at": "2019-01-08T21:34:28.367Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-W6VGEi8A7Cfoaf4K" + } + }, + { + "id": "nc-AeUQ2zfKZzW9TiGZ", + "type": "notification-configurations", + "attributes": { + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "destination-type": "generic", + "token": null, + "triggers": [ + "run:applying", + "run:completed", + "run:created", + "run:errored", + "run:needs_attention", + "run:planning" + ], + "delivery-responses": [ + { + "url": "https://httpstat.us/200", + "body": "\"200 OK\"", + "code": "200", + "headers": { + "cache-control": [ + "private" + ], + "content-length": [ + "129" + ], + "content-type": [ + "application/json; charset=utf-8" + ], + "content-encoding": [ + "gzip" + ], + "vary": [ + "Accept-Encoding" + ], + "server": [ + "Microsoft-IIS/10.0" + ], + "x-aspnetmvc-version": [ + "5.1" + ], + "access-control-allow-origin": [ + "*" + ], + "x-aspnet-version": [ + "4.0.30319" + ], + "x-powered-by": [ + "ASP.NET" + ], + "set-cookie": [ + "ARRAffinity=77c477e3e649643e5771873e1a13179fb00983bc73c71e196bf25967fd453df9;Path=/;HttpOnly;Domain=httpstat.us" + ], + "date": [ + "Tue, 08 Jan 2019 21:34:37 GMT" + ] + }, + "sent-at": "2019-01-08 21:34:37 UTC", + "successful": "true" + } + ], + "created-at": "2019-01-08T21:32:14.125Z", + "updated-at": "2019-01-08T21:34:37.274Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ" + } + } + ] +} + +``` + +## Show a notification configuration + +`GET /notification-configurations/:notification-configuration-id` + +| Parameter | Description | +| -------------------------------- | ------------------------------------------------- | +| `:notification-configuration-id` | The id of the notification configuration to show. | + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ +``` + +### Sample response + +The `type` and `id` attributes in `relationships.subscribable` may also reference a `"teams"` and team ID, respectively. + +```json +{ + "data": { + "id": "nc-AeUQ2zfKZzW9TiGZ", + "type": "notification-configurations", + "attributes": { + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "destination-type": "generic", + "token": null, + "triggers": [ + "run:applying", + "run:completed", + "run:created", + "run:errored", + "run:needs_attention", + "run:planning" + ], + "delivery-responses": [ + { + "url": "https://httpstat.us/200", + "body": "\"200 OK\"", + "code": "200", + "headers": { + "cache-control": [ + "private" + ], + "content-length": [ + "129" + ], + "content-type": [ + "application/json; charset=utf-8" + ], + "content-encoding": [ + "gzip" + ], + "vary": [ + "Accept-Encoding" + ], + "server": [ + "Microsoft-IIS/10.0" + ], + "x-aspnetmvc-version": [ + "5.1" + ], + "access-control-allow-origin": [ + "*" + ], + "x-aspnet-version": [ + "4.0.30319" + ], + "x-powered-by": [ + "ASP.NET" + ], + "set-cookie": [ + "ARRAffinity=77c477e3e649643e5771873e1a13179fb00983bc73c71e196bf25967fd453df9;Path=/;HttpOnly;Domain=httpstat.us" + ], + "date": [ + "Tue, 08 Jan 2019 21:34:37 GMT" + ] + }, + "sent-at": "2019-01-08 21:34:37 UTC", + "successful": "true" + } + ], + "created-at": "2019-01-08T21:32:14.125Z", + "updated-at": "2019-01-08T21:34:37.274Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ" + } + } +} +``` + +## Update a notification configuration + +`PATCH /notification-configurations/:notification-configuration-id` + +| Parameter | Description | +| -------------------------------- | --------------------------------------------------- | +| `:notification-configuration-id` | The id of the notification configuration to update. | + +If the `enabled` attribute is true, updating the configuration will cause HCP Terraform to send a verification request. If a response is received, it will be stored and returned in the `delivery-responses` attribute. More details in the [Notification Verification and Delivery Responses][] section above. + +[Notification Verification and Delivery Responses]: #notification-verification-and-delivery-responses + +| Status | Response | Reason | +| ------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "notification-configurations"`) | Successfully updated the notification configuration | +| [400][] | [JSON API error object][] | Unable to complete verification request to destination URL | +| [404][] | [JSON API error object][] | Notification configuration not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +If `enabled` is set to `true`, a verification request will be sent before saving the configuration. If this request fails to send, or the response is not successful (HTTP 2xx), the configuration will not save. + +| Key path | Type | Default | Description | +| -------------------------- | ------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | (previous value) | Must be `"notification-configuration"`. | +| `data.attributes.enabled` | bool | (previous value) | Disabled configurations will not send any notifications. | +| `data.attributes.name` | string | (previous value) | User-readable name for the configuration. | +| `data.attributes.token` | string | (previous value) | Optional write-only secure token, which can be used at the receiving server to verify request authenticity. See [Notification Authenticity][notification-authenticity] for more details. | +| `data.attributes.triggers` | array | (previous value) | Array of triggers for sending notifications. See [Notification Triggers][notification-triggers] for more details. | +| `data.attributes.url` | string | (previous value) | HTTP or HTTPS URL to which notification requests will be made, only for configurations with `"destination_type:"` `"slack"`, `"microsoft-teams"` or `"generic"` | +| `data.relationships.users` | array | | Array of users part of the organization, only for configurations with `"destination_type:"` `"email"` | + +[notification-authenticity]: #notification-authenticity + +[notification-triggers]: #notification-triggers + +### Sample payload + +```json +{ + "data": { + "id": "nc-W6VGEi8A7Cfoaf4K", + "type": "notification-configurations", + "attributes": { + "enabled": false, + "name": "Slack: #devops", + "url": "https://hooks.slack.com/services/T00000001/BC012345/0PWCpQmYyD4bTTRYZ53q4w", + "destination-type": "slack", + "token": null, + "triggers": [ + "run:created", + "run:errored", + "run:needs_attention" + ], + } + } +} +``` + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/notification-configurations/nc-W6VGEi8A7Cfoaf4K +``` + +### Sample response + +```json +{ + "data": { + "id": "nc-W6VGEi8A7Cfoaf4K", + "type": "notification-configurations", + "attributes": { + "enabled": false, + "name": "Slack: #devops", + "url": "https://hooks.slack.com/services/T00000001/BC012345/0PWCpQmYyD4bTTRYZ53q4w", + "destination-type": "slack", + "token": null, + "triggers": [ + "run:created", + "run:errored", + "run:needs_attention" + ], + "delivery-responses": [], + "created-at": "2019-01-08T21:34:28.367Z", + "updated-at": "2019-01-08T21:49:02.103Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-W6VGEi8A7Cfoaf4K" + } + }, +} +``` + +## Verify a notification configuration + +`POST /notification-configurations/:notification-configuration-id/actions/verify` + +| Parameter | Description | +| -------------------------------- | --------------------------------------------------- | +| `:notification-configuration-id` | The id of the notification configuration to verify. | + +This will cause HCP Terraform to send a verification request for the specified configuration. If a response is received, it will be stored and returned in the `delivery-responses` attribute. More details in the [Notification Verification and Delivery Responses][] section above. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------------- | ---------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "notification-configurations"`) | Successfully verified the notification configuration | +| [400][] | [JSON API error object][] | Unable to complete verification request to destination URL | + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ/actions/verify +``` + +### Sample response + +```json +{ + "data": { + "id": "nc-AeUQ2zfKZzW9TiGZ", + "type": "notification-configurations", + "attributes": { + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "destination-type": "generic", + "token": null, + "triggers": [ + "run:applying", + "run:completed", + "run:created", + "run:errored", + "run:needs_attention", + "run:planning" + ], + "delivery-responses": [ + { + "url": "https://httpstat.us/200", + "body": "\"200 OK\"", + "code": "200", + "headers": { + "cache-control": [ + "private" + ], + "content-length": [ + "129" + ], + "content-type": [ + "application/json; charset=utf-8" + ], + "content-encoding": [ + "gzip" + ], + "vary": [ + "Accept-Encoding" + ], + "server": [ + "Microsoft-IIS/10.0" + ], + "x-aspnetmvc-version": [ + "5.1" + ], + "access-control-allow-origin": [ + "*" + ], + "x-aspnet-version": [ + "4.0.30319" + ], + "x-powered-by": [ + "ASP.NET" + ], + "set-cookie": [ + "ARRAffinity=77c477e3e649643e5771873e1a13179fb00983bc73c71e196bf25967fd453df9;Path=/;HttpOnly;Domain=httpstat.us" + ], + "date": [ + "Tue, 08 Jan 2019 21:34:37 GMT" + ] + }, + "sent-at": "2019-01-08 21:34:37 UTC", + "successful": "true" + } + ], + "created-at": "2019-01-08T21:32:14.125Z", + "updated-at": "2019-01-08T21:34:37.274Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ" + } + } +} +``` + +## Delete a notification configuration + +This endpoint deletes a notification configuration. + +`DELETE /notification-configurations/:notification-configuration-id` + +| Parameter | Description | +| -------------------------------- | --------------------------------------------------- | +| `:notification-configuration-id` | The id of the notification configuration to delete. | + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------------------------------------------------------- | +| [204][] | None | Successfully deleted the notification configuration | +| [404][] | [JSON API error object][] | Notification configuration not found, or user unauthorized to perform action | + +### Sample request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ +``` + +## Team notification configuration + +Team notifications allow you to configure relevant alerts that notify teams you specify whenever a certain event occurs. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/notifications.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +### Create a team notification configuration + +By default, every team has a default email notification configuration with no users assigned. If a notification configuration has no users assigned, HCP Terraform sends email notifications to all team members. + +Use this endpoint to create a notification configuration to notify a team. + +`POST /teams/:team_id/notification-configurations` + +| Parameter | Description | +| ---------- | ------------------------------------------------- | +| `:team_id` | The ID of the team to create a configuration for. | + +| Status | Response | Reason | +| ------- | ------------------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "notification-configurations"`) | Successfully created a notification configuration | +| [400][] | [JSON API error object][] | Unable to complete verification request to destination URL | +| [404][] | [JSON API error object][] | Team not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +#### Request body + +This `POST` endpoint requires a JSON object with the following properties as a request payload. Properties without a default value are required. + +If `enabled` is set to `true`, HCP Terraform sends a verification request before saving the configuration. If this request does not receive a response or the response is not successful (HTTP 2xx), the configuration will not be saved. + +| Key path | Type | Default | Description | +| ----------------------------------- | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"notification-configuration"`. | +| `data.attributes.destination-type` | string | | Type of notification payload to send. Valid values are `"generic"`, `"email"`, `"slack"` or `"microsoft-teams"`. | +| `data.attributes.enabled` | bool | `false` | Disabled configurations will not send any notifications. | +| `data.attributes.name` | string | | Human-readable name for the configuration. | +| `data.attributes.token` | string or null | `null` | Optional write-only secure token, which can be used at the receiving server to verify request authenticity. See [Notification Authenticity][notification-authenticity] for more details. | +| `data.attributes.triggers` | array | `[]` | Array of triggers for which this configuration will send notifications. See [Notification Triggers][notification-triggers] for more details and a list of allowed values. | +| `data.attributes.url` | string | | HTTP or HTTPS URL to which notification requests will be made, only for configurations with `"destination_type:"` `"slack"`, `"microsoft-teams"` or `"generic"` | +| `data.attributes.email_all_members` | bool | | Email all team members, only for configurations with `"destination_type:" "email"`. | +| `data.relationships.users` | array | | Array of users part of the organization, only for configurations with `"destination_type:"` `"email"` | + +[notification-authenticity]: #notification-authenticity + +[notification-triggers]: #notification-triggers + +#### Sample payload for generic notification configurations + +```json +{ + "data": { + "type": "notification-configuration", + "attributes": { + "destination-type": "generic", + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "triggers": [ + "change_request:created" + ] + } + } +} +``` + +#### Sample payload for email notification configurations + +```json +{ + "data": { + "type": "notification-configurations", + "attributes": { + "destination-type": "email", + "enabled": true, + "name": "Email teams about change requests", + "triggers": [ + "change_request:created" + ] + }, + "relationships": { + "users": { + "data": [ { "id": "organization-user-id", "type": "users" } ] + } + } + } +} +``` + +#### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/team-6p5jTwJQXwqZBncC/notification-configurations +``` + +#### Sample response + +```json +{ + "data": { + "id": "nc-AeUQ2zfKZzW9TiGZ", + "type": "notification-configurations", + "attributes": { + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "destination-type": "generic", + "token": null, + "triggers": [ + "change_request:created" + ], + "delivery-responses": [ + { + "url": "https://httpstat.us/200", + "body": "\"200 OK\"", + "code": "200", + "headers": { + "cache-control": [ + "private" + ], + "content-length": [ + "129" + ], + "content-type": [ + "application/json; charset=utf-8" + ], + "content-encoding": [ + "gzip" + ], + "vary": [ + "Accept-Encoding" + ], + "server": [ + "Microsoft-IIS/10.0" + ], + "x-aspnetmvc-version": [ + "5.1" + ], + "access-control-allow-origin": [ + "*" + ], + "x-aspnet-version": [ + "4.0.30319" + ], + "x-powered-by": [ + "ASP.NET" + ], + "set-cookie": [ + "ARRAffinity=77c477e3e649643e5771873e1a13179fb00983bc73c71e196bf25967fd453df9;Path=/;HttpOnly;Domain=httpstat.us" + ], + "date": [ + "Tue, 08 Jan 2024 21:34:37 GMT" + ] + }, + "sent-at": "2024-01-08 21:34:37 UTC", + "successful": "true" + } + ], + "created-at": "2024-01-08T21:32:14.125Z", + "updated-at": "2024-01-08T21:34:37.274Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "team-6p5jTwJQXwqZBncC", + "type": "teams" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ" + } + } +} +``` + +### List team notification configurations + +Use this endpoint to list notification configurations for a team. + +`GET /teams/:team_id/notification-configurations` + +| Parameter | Description | +| ---------- | ------------------------------------------------ | +| `:team_id` | The ID of the teams to list configurations from. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 notification configurations per page. | + +#### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/teams/team-6p5jTwJQXwqZBncC/notification-configurations +``` + +#### Sample response + +```json +{ + "data": [ + { + "id": "nc-W6VGEi8A7Cfoaf4K", + "type": "notification-configurations", + "attributes": { + "enabled": false, + "name": "Slack: #devops", + "url": "https://hooks.slack.com/services/T00000000/BC012345/0PWCpQmYyD4bTTRYZ53q4w", + "destination-type": "slack", + "token": null, + "triggers": [ + "change_request:created" + ], + "delivery-responses": [], + "created-at": "2019-01-08T21:34:28.367Z", + "updated-at": "2019-01-08T21:34:28.367Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "team-TdeUVMWShTesDMME", + "type": "teams" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-W6VGEi8A7Cfoaf4K" + } + }, + { + "id": "nc-AeUQ2zfKZzW9TiGZ", + "type": "notification-configurations", + "attributes": { + "enabled": true, + "name": "Webhook server test", + "url": "https://httpstat.us/200", + "destination-type": "generic", + "token": null, + "triggers": [ + "change_request:created" + ], + "delivery-responses": [ + { + "url": "https://httpstat.us/200", + "body": "\"200 OK\"", + "code": "200", + "headers": { + "cache-control": [ + "private" + ], + "content-length": [ + "129" + ], + "content-type": [ + "application/json; charset=utf-8" + ], + "content-encoding": [ + "gzip" + ], + "vary": [ + "Accept-Encoding" + ], + "server": [ + "Microsoft-IIS/10.0" + ], + "x-aspnetmvc-version": [ + "5.1" + ], + "access-control-allow-origin": [ + "*" + ], + "x-aspnet-version": [ + "4.0.30319" + ], + "x-powered-by": [ + "ASP.NET" + ], + "set-cookie": [ + "ARRAffinity=77c477e3e649643e5771873e1a13179fb00983bc73c71e196bf25967fd453df9;Path=/;HttpOnly;Domain=httpstat.us" + ], + "date": [ + "Tue, 08 Jan 2019 21:34:37 GMT" + ] + }, + "sent-at": "2019-01-08 21:34:37 UTC", + "successful": "true" + } + ], + "created-at": "2019-01-08T21:32:14.125Z", + "updated-at": "2019-01-08T21:34:37.274Z" + }, + "relationships": { + "subscribable": { + "data": { + "id": "team-XdeUVMWShTesDMME", + "type": "teams" + } + } + }, + "links": { + "self": "/api/v2/notification-configurations/nc-AeUQ2zfKZzW9TiGZ" + } + } + ] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-clients.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-clients.mdx new file mode 100644 index 0000000000..c16d5161c7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-clients.mdx @@ -0,0 +1,603 @@ +--- +page_title: /oauth-clients API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/oauth-clients` endpoint to manage + connections between VCS providers and organizations and projects. Learn how to + read, create, update, and destroy clients. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# OAuth client API reference + +An OAuth client represents the connection between an organization and a VCS provider. By default, you can globally access an OAuth client throughout the organization, or you can have scope access to one or more [projects](/terraform/enterprise/projects/manage). + +## List OAuth Clients + +`GET /organizations/:organization_name/oauth-clients` + +| Parameter | Description | +| -------------------- | ----------------------------- | +| `:organization_name` | The name of the organization. | + +This endpoint allows you to list VCS connections between an organization and a VCS provider (GitHub, Bitbucket, or GitLab) for use when creating or setting up workspaces. + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | ---------------------- | +| [200][] | [JSON API document][] (`type: "oauth-clients"`) | Success | +| [404][] | [JSON API error object][] | Organization not found | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| -------------- | ----------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 oauth clients per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/organizations/my-organization/oauth-clients +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "oc-XKFwG6ggfA9n7t1K", + "type": "oauth-clients", + "attributes": { + "created-at": "2018-04-16T20:42:53.771Z", + "callback-url": "https://app.terraform.io/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a/callback", + "connect-path": "/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a?organization_id=1", + "service-provider": "github", + "service-provider-display-name": "GitHub", + "name": null, + "http-url": "https://github.com", + "api-url": "https://api.github.com", + "key": null, + "rsa-public-key": null, + "organization-scoped": false + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "oauth-tokens": { + "data": [], + "links": { + "related": "/api/v2/oauth-tokens/ot-KaeqH4cy72VPXFQT" + } + }, + "agent-pool": { + "data": { + "id": "apool-VsmjEMcYkShrckpK", + "type": "agent-pools" + }, + "links": { + "related": "/api/v2/agent-pools/apool-VsmjEMcYkShrckpK" + } + } + } + } + ] +} +``` + +## Show an OAuth Client + +`GET /oauth-clients/:id` + +| Parameter | Description | +| --------- | ---------------------------------- | +| `:id` | The ID of the OAuth Client to show | + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "oauth-clients"`) | Success | +| [404][] | [JSON API error object][] | OAuth Client not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/oauth-clients/oc-XKFwG6ggfA9n7t1K +``` + +### Sample Response + +```json +{ + "data": { + "id": "oc-XKFwG6ggfA9n7t1K", + "type": "oauth-clients", + "attributes": { + "created-at": "2018-04-16T20:42:53.771Z", + "callback-url": "https://app.terraform.io/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a/callback", + "connect-path": "/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a?organization_id=1", + "service-provider": "github", + "service-provider-display-name": "GitHub", + "name": null, + "http-url": "https://github.com", + "api-url": "https://api.github.com", + "key": null, + "rsa-public-key": null, + "organization-scoped": false + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "oauth-tokens": { + "data": [], + "links": { + "related": "/api/v2/oauth-tokens/ot-KaeqH4cy72VPXFQT" + } + }, + "agent-pool": { + "data": { + "id": "apool-VsmjEMcYkShrckpK", + "type": "agent-pools" + }, + "links": { + "related": "/api/v2/agent-pools/apool-VsmjEMcYkShrckpK" + } + } + } + } +} +``` + +## Create an OAuth Client + +`POST /organizations/:organization_name/oauth-clients` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization that will be connected to the VCS provider. The organization must already exist in the system, and the user must have permission to manage VCS settings. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +This endpoint allows you to create a VCS connection between an organization and a VCS provider (GitHub or GitLab) for use when creating or setting up workspaces. By using this API endpoint, you can provide a pre-generated OAuth token string instead of going through the process of creating a GitHub or GitLab OAuth Application. + +To learn how to generate one of these token strings for your VCS provider, you can read the following documentation: + +- [GitHub and GitHub Enterprise](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) +- [GitLab, GitLab Community Edition, and GitLab Enterprise Edition](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token) +- [Azure DevOps Server](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops-2019&tabs=preview-page) + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "oauth-clients"`) | OAuth Client successfully created | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------- | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"oauth-clients"`. | +| `data.attributes.service-provider` | string | | The VCS provider being connected with. Valid options are `"github"`, `"github_enterprise"`, `"gitlab_hosted"`, `"gitlab_community_edition"`, `"gitlab_enterprise_edition"`, or `"ado_server"`. | +| `data.attributes.name` | string | `null` | An optional display name for the OAuth Client. If left `null`, the UI will default to the display name of the VCS provider. | +| `data.attributes.key` | string | | The OAuth Client key. It can refer to a Consumer Key, Application Key, or another type of client key for the VCS provider. | +| `data.attributes.http-url` | string | | The homepage of your VCS provider (e.g. `"https://github.com"` or `"https://ghe.example.com"` or `"https://gitlab.com"`). | +| `data.attributes.api-url` | string | | The base URL as per your VCS provider's API documentation (e.g. `"https://api.github.com"`, `"https://ghe.example.com/api/v3"` or `"https://gitlab.com/api/v4"`). | +| `data.attributes.oauth-token-string` | string | | The token string you were given by your VCS provider | +| `data.attributes.private-key` | string | | **Required for Azure DevOps Server. Not used for any other providers.** The text of the SSH private key associated with your Azure DevOps Server account. | +| `data.attributes.secret` | string | | The OAuth client secret. For Bitbucket Data Center, the secret is the text of the SSH private key associated with your Bitbucket Data Center application link. | +| `data.attributes.rsa-public-key` | string | | **Required for Bitbucket Data Center in conjunction with the `secret`. Not used for any other providers.** The text of the SSH public key associated with your Bitbucket Data Center application link. | +| `data.attributes.organization-scoped` | boolean | | Whether or not the OAuth client is scoped to all projects and workspaces in the organization. Defaults to `true`. | +| `data.relationships.projects.data[]` | array\[object] | `[]` | A list of resource identifier objects that defines which projects are associated with the OAuth client. If `data.attributes.organization-scoped` is set to `false`, the OAuth client is only available to this list of projects. Each object in this list must contain a project `id` and use the `"projects"` type. For example, `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`. | +| `data.relationships.agent-pool.data` | object | `{}` | The Agent Pool associated to the VCS connection. This pool will be responsible for forwarding VCS Provider API calls and cloning VCS repositories. | + +### Sample Payload + +```json +{ + "data": { + "type": "oauth-clients", + "attributes": { + "service-provider": "github", + "http-url": "https://github.com", + "api-url": "https://api.github.com", + "oauth-token-string": "4306823352f0009d0ed81f1b654ac17a", + "organization-scoped": false + }, + "relationships": { + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "agent-pool": { + "data": { + "id": "apool-VsmjEMcYkShrckzzz", + "type": "agent-pools" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/oauth-clients +``` + +### Sample Response + +```json +{ + "data": { + "id": "oc-XKFwG6ggfA9n7t1K", + "type": "oauth-clients", + "attributes": { + "created-at": "2018-04-16T20:42:53.771Z", + "callback-url": "https://app.terraform.io/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a/callback", + "connect-path": "/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a?organization_id=1", + "service-provider": "github", + "service-provider-display-name": "GitHub", + "name": null, + "http-url": "https://github.com", + "api-url": "https://api.github.com", + "key": null, + "rsa-public-key": null, + "organization-scoped": false + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "oauth-tokens": { + "data": [], + "links": { + "related": "/api/v2/oauth-tokens/ot-KaeqH4cy72VPXFQT" + } + }, + "agent-pool": { + "data": { + "id": "apool-VsmjEMcYkShrckzzz", + "type": "agent-pools" + } + } + } + } +} +``` + +## Update an OAuth Client + +`PATCH /oauth-clients/:id` + +| Parameter | Description | +| --------- | ------------------------------------- | +| `:id` | The ID of the OAuth Client to update. | + +Use caution when changing attributes with this endpoint; editing an OAuth client that workspaces are currently using can have unexpected effects. + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "oauth-clients"`) | The request was successful | +| [404][] | [JSON API error object][] | OAuth Client not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ------------------------------------- | -------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"oauth-clients"`. | +| `data.attributes.name` | string | (previous value) | An optional display name for the OAuth Client. If set to `null`, the UI will default to the display name of the VCS provider. | +| `data.attributes.key` | string | (previous value) | The OAuth Client key. It can refer to a Consumer Key, Application Key, or another type of client key for the VCS provider. | +| `data.attributes.secret` | string | (previous value) | The OAuth client secret. For Bitbucket Data Center, this secret is the text of the SSH private key associated with your Bitbucket Data Center application link. | +| `data.attributes.rsa-public-key` | string | (previous value) | **Required for Bitbucket Data Center in conjunction with the `secret`. Not used for any other providers.** The text of the SSH public key associated with your Bitbucket Data Center application link. | +| `data.attributes.organization-scoped` | boolean | (previous value) | Whether or not the OAuth client is available to all projects and workspaces in the organization. | +| `data.relationships.projects` | array\[object] | (previous value) | A list of resource identifier objects that defines which projects are associated with the OAuth client. If `data.attributes.organization-scoped` is set to `false`, the OAuth client is only available to this list of projects. Each object in this list must contain a project `id` and use the `"projects"` type. For example, `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`. Sending an empty array clears all project assignments. | +| `data.relationships.agent-pool.data` | object | `{}` | The Agent Pool associated to the VCS connection. This pool will be responsible for forwarding VCS Provider API calls and cloning VCS repositories. | + +### Sample Payload + +```json +{ + "data": { + "id": "oc-XKFwG6ggfA9n7t1K", + "type": "oauth-clients", + "attributes": { + "key": "key", + "secret": "secret", + "organization-scoped": false + }, + "relationships": { + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "agent-pool": { + "data": { + "id": "apool-VsmjEMcYkShrckzzz", + "type": "agent-pools" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/oauth-clients/oc-XKFwG6ggfA9n7t1K +``` + +### Sample Response + +```json +{ + "data": { + "id": "oc-XKFwG6ggfA9n7t1K", + "type": "oauth-clients", + "attributes": { + "created-at": "2018-04-16T20:42:53.771Z", + "callback-url": "https://app.terraform.io/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a/callback", + "connect-path": "/auth/35936d44-842c-4ddd-b4d4-7c741383dc3a?organization_id=1", + "service-provider": "github", + "service-provider-display-name": "GitHub", + "name": null, + "http-url": "https://github.com", + "api-url": "https://api.github.com", + "key": null, + "rsa-public-key": null, + "organization-scoped": false + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "oauth-tokens": { + "data": [], + "links": { + "related": "/api/v2/oauth-tokens/ot-KaeqH4cy72VPXFQT" + } + }, + "agent-pool": { + "data": { + "id": "apool-VsmjEMcYkShrckzzz", + "type": "agent-pools" + } + } + } + } +} +``` + +## Destroy an OAuth Client + +`DELETE /oauth-clients/:id` + +| Parameter | Description | +| --------- | ------------------------------------- | +| `:id` | The ID of the OAuth Client to destroy | + +This endpoint allows you to remove an existing connection between an organization and a VCS provider (GitHub, Bitbucket, or GitLab). + +**Note:** Removing the OAuth Client will unlink workspaces that use this connection from their repositories, and these workspaces will need to be manually linked to another repository. + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------------------------ | +| [204][] | Empty response | The OAuth Client was successfully destroyed | +| [404][] | [JSON API error object][] | Organization or OAuth Client not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/oauth-clients/oc-XKFwG6ggfA9n7t1K +``` + +## Attach to a project + +`POST /oauth-clients/:id/relationships/projects` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the OAuth client to attach to a project. Use the [List OAuth Clients](#list-oauth-clients) endpoint to reference your OAuth client IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------- | +| [204][] | Nothing | The request was successful | +| [404][] | [JSON API error object][] | OAuth Client not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more projects not found, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | `[]` | A list of resource identifier objects that defines which projects to attach the OAuth client to. These objects must contain `id` and `type` properties, and the `type` property must be `projects` (e.g. `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`). | + +### Sample Payload + +```json +{ + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }, + { "id": "prj-2HRvNs49EWPjDqT1", "type": "projects" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/oauth-clients/oc-XKFwG6ggfA9n7t1K/relationships/projects +``` + +## Detach an OAuth Client from projects + +`DELETE /oauth-clients/:id/relationships/projects` + +| Parameter | Description | +| --------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the oauth client you want to detach from the specified projects. Use the "List OAuth Clients" endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------- | +| [204][] | Nothing | The request was successful | +| [404][] | [JSON API error object][] | OAuth Client not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more projects not found, wrong types, etc.) | + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | `[]` | A list of resource identifier objects that defines which projects are associated with the OAuth client. If `data.attributes.organization-scoped` is set to `false`, the OAuth client is only available to this list of projects. Each object in this list must contain a project `id` and use the `"projects"` type. For example, `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`. | + +### Sample Payload + +```json +{ + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }, + { "id": "prj-2HRvNs49EWPjDqT1", "type": "projects" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/oauth-clients/oc-XKFwG6ggfA9n7t1K/relationships/projects +``` + +### Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| -------------- | --------------------------------------- | +| `oauth_tokens` | The OAuth tokens managed by this client | +| `projects` | The projects scoped to this client | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-tokens.mdx new file mode 100644 index 0000000000..83cdaaae1b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/oauth-tokens.mdx @@ -0,0 +1,264 @@ +--- +page_title: /oauth-tokens API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/oauth-tokens` endpoint to manage the + OAuth tokens that connect workspaces to VCS providers. Learn how to read, + update, and destroy tokens. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# OAuth token API reference + +The `oauth-token` object represents a VCS configuration which includes the OAuth connection and the associated OAuth token. This object is used when creating a workspace to identify which VCS connection to use. + +## List OAuth Tokens + +List all the OAuth Tokens for a given OAuth Client + +`GET /oauth-clients/:oauth_client_id/oauth-tokens` + +| Parameter | Description | +| ------------------ | -------------------------- | +| `:oauth_client_id` | The ID of the OAuth Client | + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "oauth-tokens"`) | Success | +| [404][] | [JSON API error object][] | OAuth Client not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| -------------- | ---------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 oauth tokens per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/oauth-clients/oc-GhHqb5rkeK19mLB8/oauth-tokens +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ot-hmAyP66qk2AMVdbJ", + "type": "oauth-tokens", + "attributes": { + "created-at":"2017-11-02T06:37:49.284Z", + "service-provider-user":"skierkowski", + "has-ssh-key": false + }, + "relationships": { + "oauth-client": { + "data": { + "id": "oc-GhHqb5rkeK19mLB8", + "type": "oauth-clients" + }, + "links": { + "related": "/api/v2/oauth-clients/oc-GhHqb5rkeK19mLB8" + } + } + }, + "links": { + "self": "/api/v2/oauth-tokens/ot-hmAyP66qk2AMVdbJ" + } + } + ] +} +``` + +## Show an OAuth Token + +`GET /oauth-tokens/:id` + +| Parameter | Description | +| --------- | --------------------------------- | +| `:id` | The ID of the OAuth token to show | + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "oauth-tokens"`) | Success | +| [404][] | [JSON API error object][] | OAuth Token not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/oauth-tokens/ot-29t7xkUKiNC2XasL +``` + +### Sample Response + +```json +{ + "data": { + "id": "ot-29t7xkUKiNC2XasL", + "type": "oauth-tokens", + "attributes": { + "created-at": "2018-08-29T14:07:22.144Z", + "service-provider-user": "EM26Jj0ikRsIFFh3fE5C", + "has-ssh-key": false + }, + "relationships": { + "oauth-client": { + "data": { + "id": "oc-WMipGbuW8q7xCRmJ", + "type": "oauth-clients" + }, + "links": { + "related": "/api/v2/oauth-clients/oc-WMipGbuW8q7xCRmJ" + } + } + }, + "links": { + "self": "/api/v2/oauth-tokens/ot-29t7xkUKiNC2XasL" + } + } +} +``` + +## Update an OAuth Token + +`PATCH /oauth-tokens/:id` + +| Parameter | Description | +| --------- | ----------------------------------- | +| `:id` | The ID of the OAuth token to update | + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "oauth-tokens"`) | OAuth Token successfully updated | +| [404][] | [JSON API error object][] | OAuth Token not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------- | ------ | ------- | ------------------------- | +| `data.type` | string | | Must be `"oauth-tokens"`. | +| `data.attributes.ssh-key` | string | | **Optional.** The SSH key | + +### Sample Payload + +```json +{ + "data": { + "id": "ot-29t7xkUKiNC2XasL", + "type": "oauth-tokens", + "attributes": { + "ssh-key": "..." + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/oauth-tokens/ot-29t7xkUKiNC2XasL +``` + +### Sample Response + +```json +{ + "data": { + "id": "ot-29t7xkUKiNC2XasL", + "type": "oauth-tokens", + "attributes": { + "created-at": "2018-08-29T14:07:22.144Z", + "service-provider-user": "EM26Jj0ikRsIFFh3fE5C", + "has-ssh-key": false + }, + "relationships": { + "oauth-client": { + "data": { + "id": "oc-WMipGbuW8q7xCRmJ", + "type": "oauth-clients" + }, + "links": { + "related": "/api/v2/oauth-clients/oc-WMipGbuW8q7xCRmJ" + } + } + }, + "links": { + "self": "/api/v2/oauth-tokens/ot-29t7xkUKiNC2XasL" + } + } +} +``` + +## Destroy an OAuth Token + +`DELETE /oauth-tokens/:id` + +| Parameter | Description | +| --------- | ------------------------------------ | +| `:id` | The ID of the OAuth Token to destroy | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------- | +| [204][] | Empty response | The OAuth Token was successfully destroyed | +| [404][] | [JSON API error object][] | OAuth Token not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/oauth-tokens/ot-29t7xkUKiNC2XasL +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-memberships.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-memberships.mdx new file mode 100644 index 0000000000..dec59d2968 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-memberships.mdx @@ -0,0 +1,497 @@ +--- +page_title: /organization-memberships API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/organization-memberships` endpoint to + manage membership in an organization. Invite, list, and remove members from + organizations. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Organization memberships API reference + +Users are added to organizations by inviting them to join. Once accepted, they become members of the organization. The Organization Membership resource represents this membership. + +You can invite users who already have an account, as well as new users. If the user has an existing account with the same email address used to invite them, they can reuse the same login. + +-> **Note:** Once a user is a member of the organization, you can manage their team memberships using [the Team Membership API](/terraform/enterprise/api-docs/team-members). + +## Invite a User to an Organization + +`POST /organizations/:organization_name/organization-memberships` + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the user will be invited to join. The inviting user must have permission to manage organization memberships. | + +-> **Note:** Organization membership management is restricted to members of the owners team, the owners [team API token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens), the [organization API token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens), and users or teams with one of the [Team Management](/terraform/enterprise/users-teams-organizations/permissions#team-management-permissions) permissions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] | Successfully invited the user | +| [400][] | [JSON API error object][] | Unable to invite user due to organization limits | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Unable to invite user due to validation errors | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------- | -------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"organization-memberships"`. | +| `data.attributes.email` | string | | The email address of the user to be invited. | +| `data.relationships.teams.data[]` | array\[object] | | A list of resource identifier objects that defines which teams the invited user will be a member of. These objects must contain `id` and `type` properties, and the `type` property must be `teams` (e.g. `{ "id": "team-GeLZkdnK6xAVjA5H", "type": "teams" }`). Obtain team IDs from the [List Teams](/terraform/enterprise/api-docs/teams#list-teams) endpoint. All users must be added to at least one team. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "email": "test@example.com" + }, + "relationships": { + "teams": { + "data": [ + { + "type": "teams", + "id": "team-GeLZkdnK6xAVjA5H" + } + ] + } + }, + "type": "organization-memberships" + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/organization-memberships +``` + +### Sample Response + +```json +{ + "data": { + "id": "ou-nX7inDHhmC3quYgy", + "type": "organization-memberships", + "attributes": { + "status": "invited" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-GeLZkdnK6xAVjA5H", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-J8oxGmRk5eC2WLfX", + "type": "users" + } + }, + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + }, + "included": [ + { + "id": "user-J8oxGmRk5eC2WLfX", + "type": "users", + "attributes": { + "username": null, + "is-service-account": false, + "auth-method": "hcp_sso", + "avatar-url": "https://www.gravatar.com/avatar/55502f40dc8b7c769880b10874abc9d0?s=100&d=mm", + "two-factor": { + "enabled": false, + "verified": false + }, + "email": "test@example.com", + "permissions": { + "can-create-organizations": true, + "can-change-email": true, + "can-change-username": true, + "can-manage-user-tokens": false + } + }, + "relationships": { + "authentication-tokens": { + "links": { + "related": "/api/v2/users/user-J8oxGmRk5eC2WLfX/authentication-tokens" + } + } + }, + "links": { + "self": "/api/v2/users/user-J8oxGmRk5eC2WLfX" + } + } + ] +} +``` + +## List Memberships for an Organization + +`GET /organizations/:organization_name/organization-memberships` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------- | +| `:organization_name` | The name of the organization to list the memberships of. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `q` | **Optional.** A search query string. Organization memberships are searchable by user name and email. | +| `filter[status]` | **Optional.** If specified, restricts results to those with the matching status value. Valid values are `invited` and `active`. | +| `filter[email]` | **Optional.** If specified, restricts results to those with a matching user email address. If multiple comma separated values are specified, results matching any of the values are returned. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 users per page. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/organization-memberships +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ou-tTJph1AQVK5ZmdND", + "type": "organization-memberships", + "attributes": { + "status": "active" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-yUrEehvfG4pdmSjc", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-vaQqszES9JnuK4eB", + "type": "users" + } + }, + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + }, + { + "id": "ou-D6HPYFt4GzeBt3gB", + "type": "organization-memberships", + "attributes": { + "status": "active" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-yUrEehvfG4pdmSjc", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-oqCgH7NgTn95jTGc", + "type": "users" + } + }, + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + }, + { + "id": "ou-x1E2eBwYwusLDC7h", + "type": "organization-memberships", + "attributes": { + "status": "invited" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-yUrEehvfG4pdmSjc", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-UntUdBTHsVRQMzC8", + "type": "users" + } + }, + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/organization-memberships?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/organization-memberships?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/my-organization/organization-memberships?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "status-counts": { + "total": 3, + "active": 2, + "invited": 1 + }, + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 3 + } + } +} +``` + +## List User's Own Memberships + +`GET /organization-memberships` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organization-memberships +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ou-VgJgfbDVN3APUm2F", + "type": "organization-memberships", + "attributes": { + "status": "invited" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-4QrJKzxB3J5N4cJc", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-vaQqszES9JnuK4eB", + "type": "users" + } + }, + "organization": { + "data": { + "id": "acme-corp", + "type": "organizations" + } + } + } + }, + { + "id": "ou-tTJph1AQVK5ZmdND", + "type": "organization-memberships", + "attributes": { + "status": "active" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-yUrEehvfG4pdmSjc", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-vaQqszES9JnuK4eB", + "type": "users" + } + }, + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + } + ] +} +``` + +## Show a Membership + +`GET /organization-memberships/:organization_membership_id` + +| Parameter | Description | +| ----------------------------- | --------------------------- | +| `:organization_membership_id` | The organization membership | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------------- | ------------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "organization-memberships"`) | The request was successful | +| [404][] | [JSON API error object][] | Organization membership not found, or user unauthorized to perform action | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organization-memberships/ou-kit6GaMo3zPGCzWb +``` + +### Sample Response + +```json +{ + "data": { + "id": "ou-kit6GaMo3zPGCzWb", + "type": "organization-memberships", + "attributes": { + "status": "active" + }, + "relationships": { + "teams": { + "data": [ + { + "id": "team-97LkM7QciNkwb2nh", + "type": "teams" + } + ] + }, + "user": { + "data": { + "id": "user-hn6v2WK1naDpGadd", + "type": "users" + } + }, + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + } + } + } +} +``` + +## Remove User from Organization + +`DELETE /organization-memberships/:organization_membership_id` + +| Parameter | Description | +| ----------------------------- | --------------------------- | +| `:organization_membership_id` | The organization membership | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------------------- | +| [204][] | Empty body | Successfully removed the user from the organization | +| [403][] | [JSON API error object][] | Unable to remove the user: you cannot remove yourself from organizations which you own | +| [404][] | [JSON API error object][] | Organization membership not found, or user unauthorized to perform action | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organization-memberships/ou-tTJph1AQVK5ZmdND +``` + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +- `user` - The user associated with the membership. +- `teams` - Teams the user is a member of. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tags.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tags.mdx new file mode 100644 index 0000000000..bcebf92fbc --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tags.mdx @@ -0,0 +1,230 @@ +--- +page_title: /tags API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's organization `/tags` endpoint to assign, + list, and delete tags for an organization. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Organization tags API reference + +This API returns the list of tags used in workspaces across the organization. Tags can be added to this pool via workspaces. Tags deleted here will be removed from all other workspaces. Tags can be added, applied, removed and deleted in bulk. + +Tags are subject to the following rules: + +- Workspace tags or tags must be one or more characters, have a 255 character limit, and can include letters, numbers, colons, hyphens, and underscores. +- You can create tags for a workspace using the user interface or the API. After you create a tag, you can assign it to other workspaces in the same organization. +- You cannot create tags for a workspace using the CLI. +- You cannot set tags at the project level, so there is no tag inheritance from projects to workspaces. + +## List Tags + +`GET /organizations/:organization_name/tags` + +| Parameter | Description | +| -------------------- | ---------------------------------------------- | +| `:organization_name` | The name of the organization to list tags from | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ------------------------------- | ---------------------------------------------------------------------------------------- | +| `q` | **Optional.** A search query string. Organization tags are searchable by name likeness. | +| `filter[exclude][taggable][id]` | **Optional.** If specified, omits organization's related workspace's tags. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 organization tags per page. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/tags +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "tag-1", + "type": "tags", + "attributes": { + "name": "tag1", + "created-at": "2022-03-09T06:04:39.585Z", + "instance-count": 1 + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + }, + { + "id": "tag-2", + "type": "tags", + "attributes": { + "name": "tag2", + "created-at": "2022-03-09T06:04:39.585Z", + "instance-count": 2 + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + } + ] +} +``` + +## Delete tags + +This endpoint deletes one or more tags from an organization. The organization and tags must already +exist. Tags deleted here will be removed from all other resources. + +`DELETE /organizations/:organization_name/tags` + +| Parameter | Description | +| -------------------- | ------------------------------------------------ | +| `:organization_name` | The name of the organization to delete tags from | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | -------------------------------------------------------------- | +| [204][] | No Content | Successfully removed tags from organization | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +It is important to note that `type` and `id` are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ---------------------------- | +| `data[].type` | string | | Must be `"tags"`. | +| `data[].id` | string | | The id of the tag to remove. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "tags", + "id": "tag-Yfha4YpPievQ8wJw" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/hashicorp/tags +``` + +## Sample Response + +No response body. + +Status code `204`. + +## Add workspaces to a tag + +`POST /tags/:tag_id/relationships/workspaces` + +| Parameter | Description | +| --------- | ---------------------------------------------------- | +| `:tag_id` | The ID of the tag that workspaces should have added. | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ----------------------------------------------------- | +| [204][] | No Content | Successfully added workspaces to tag | +| [404][] | [JSON API error object][] | Tag not found, or user unauthorized to perform action | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ------------------------------- | +| `data[].type` | string | | Must be `"workspaces"`. | +| `data[].id` | string | | The id of the workspace to add. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/tags/tag-2/relationships/workspaces +``` + +### Sample Payload + +```json +{ + "data": [ + { + "type": "workspaces", + "id": "ws-pmKTbUwH2VPiiTC4" + } + ] +} +``` + +### Sample Response + +No response body. + +Status code `204`. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tokens.mdx new file mode 100644 index 0000000000..75894a177c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organization-tokens.mdx @@ -0,0 +1,148 @@ +--- +page_title: /organizations/authentication-token API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/organizations/authentication-token` + endpoint to generate and delete organization-level API tokens. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Organization tokens API reference + +## Generate a new organization token + +`POST /organizations/:organization_name/authentication-token` + +| Parameter | Description | +| -------------------- | ----------------------------------------------------- | +| `:organization_name` | The name of the organization to generate a token for. | + +Generates a new [organization API token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens), replacing any existing token. + +Only members of the owners team, the owners [team API token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens), and the [organization API token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens) can access this endpoint. + +This endpoint returns the secret text of the new authentication token. You can only access this token when you create it and can not recover it later. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------- | +| [201][] | [JSON API document][] (`type: "authentication-tokens"`) | Success | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ---------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"authentication-token"`. | +| `data.attributes.expired-at` | string | `null` | The UTC date and time that the Organization Token will expire, in ISO 8601 format. If omitted or set to `null` the token will never expire. | + +### Sample Payload + +```json +{ + "data": { + "type": "authentication-token", + "attributes": { + "expired-at": "2023-04-06T12:00:00.000Z" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/authentication-token +``` + +### Sample Response + +```json +{ + "data": { + "id": "4111756", + "type": "authentication-tokens", + "attributes": { + "created-at": "2017-11-29T19:11:28.075Z", + "last-used-at": null, + "description": null, + "token": "ZgqYdzuvlv8Iyg.atlasv1.6nV7t1OyFls341jo1xdZTP72fN0uu9VL55ozqzekfmToGFbhoFvvygIRy2mwVAXomOE", + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "created-by": { + "data": { + "id": "user-62goNpx1ThQf689e", + "type": "users" + } + } + } + } +} +``` + +## Delete the organization token + +`DELETE /organizations/:organization/authentication-token` + +| Parameter | Description | +| -------------------- | --------------------------------------------- | +| `:organization_name` | Which organization's token should be deleted. | + +Only members of the owners team, the owners [team API token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens), and the [organization API token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens) can access this endpoint. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------- | +| [204][] | No Content | Success | +| [404][] | [JSON API error object][] | User not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/my-organization/authentication-token +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organizations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organizations.mdx new file mode 100644 index 0000000000..dc7e999e44 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/organizations.mdx @@ -0,0 +1,987 @@ +--- +page_title: /organizations API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/organizations` endpoint to create, + update, and destroy organizations, and read their entitlement sets, module + producers, and data retention policies. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Organizations API reference + +The Organizations API is used to list, show, create, update, and destroy organizations. + +## List Organizations + +`GET /organizations` + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "organizations"`) | The request was successful | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +Currently, this endpoint returns a full, unpaginated list of organizations (without pagination metadata) if both of the pagination query parameters are omitted. To avoid inconsistent behavior, we recommend always supplying pagination parameters when building against this API. + +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `q` | **Optional.** A search query string. Organizations are searchable by name and notification email. This query takes precedence over the attribute specific searches `q[email]` or `q[name]`. | +| `q[email]` | **Optional.** A search query string. This query searches organizations by notification email. If used with `q[name]`, it returns organizations that match both queries. | +| `q[name]` | **Optional.** A search query string. This query searches organizations by name. If used with `q[email]`, it returns organizations that match both queries. | +| `page[number]` | **Optional.** Defaults to the first page, if omitted when `page[size]` is provided. | +| `page[size]` | **Optional.** Defaults to 20 organizations per page, if omitted when `page[number]` is provided. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/organizations\?page\[number\]\=1\&page\[size\]\=20 +``` + +### Sample Response + +**Note:** Only HCP Terraform organizations return the `two-factor-conformant` and `assessments-enforced` properties. + +```json +{ + "data": [ + { + "id": "hashicorp", + "type": "organizations", + "attributes": { + "external-id": "org-Hysjx5eUviuKVCJY", + "created-at": "2021-08-24T23:10:04.675Z", + "email": "hashicorp@example.com", + "session-timeout": null, + "session-remember": null, + "collaborator-auth-policy": "password", + "plan-expired": false, + "plan-expires-at": null, + "plan-is-trial": false, + "plan-is-enterprise": false, + "plan-identifier": "developer", + "cost-estimation-enabled": true, + "send-passing-statuses-for-untriggered-speculative-plans": true, + "aggregated-commit-status-enabled": false, + "speculative-plan-management-enabled": true, + "allow-force-delete-workspaces": true, + "name": "hashicorp", + "permissions": { + "can-update": true, + "can-destroy": true, + "can-access-via-teams": true, + "can-create-module": true, + "can-create-team": true, + "can-create-workspace": true, + "can-manage-users": true, + "can-manage-subscription": true, + "can-manage-sso": true, + "can-update-oauth": true, + "can-update-sentinel": true, + "can-update-ssh-keys": true, + "can-update-api-token": true, + "can-traverse": true, + "can-start-trial": true, + "can-update-agent-pools": true, + "can-manage-tags": true, + "can-manage-varsets": true, + "can-read-varsets": true, + "can-manage-public-providers": true, + "can-create-provider": true, + "can-manage-public-modules": true, + "can-manage-custom-providers": false, + "can-manage-run-tasks": false, + "can-read-run-tasks": false, + "can-create-project": true + }, + "fair-run-queuing-enabled": true, + "saml-enabled": false, + "owners-team-saml-role-id": null, + "two-factor-conformant": false, + "assessments-enforced": false, + "default-execution-mode": "remote" + }, + "relationships": { + "default-agent-pool": { + "data": null + }, + "oauth-tokens": { + "links": { + "related": "/api/v2/organizations/hashicorp/oauth-tokens" + } + }, + "authentication-token": { + "links": { + "related": "/api/v2/organizations/hashicorp/authentication-token" + } + }, + "entitlement-set": { + "data": { + "id": "org-Hysjx5eUviuKVCJY", + "type": "entitlement-sets" + }, + "links": { + "related": "/api/v2/organizations/hashicorp/entitlement-set" + } + }, + "subscription": { + "links": { + "related": "/api/v2/organizations/hashicorp/subscription" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp" + } + }, + { + "id": "hashicorp-two", + "type": "organizations", + "attributes": { + "external-id": "org-iJ5tr4WgB4WpA1hD", + "created-at": "2022-01-04T18:57:16.036Z", + "email": "hashicorp@example.com", + "session-timeout": null, + "session-remember": null, + "collaborator-auth-policy": "password", + "plan-expired": false, + "plan-expires-at": null, + "plan-is-trial": false, + "plan-is-enterprise": false, + "plan-identifier": "free", + "cost-estimation-enabled": false, + "send-passing-statuses-for-untriggered-speculative-plans": false, + "aggregated-commit-status-enabled": true, + "speculative-plan-management-enabled": true, + "allow-force-delete-workspaces": false, + "name": "hashicorp-two", + "permissions": { + "can-update": true, + "can-destroy": true, + "can-access-via-teams": true, + "can-create-module": true, + "can-create-team": false, + "can-create-workspace": true, + "can-manage-users": true, + "can-manage-subscription": true, + "can-manage-sso": false, + "can-update-oauth": true, + "can-update-sentinel": false, + "can-update-ssh-keys": true, + "can-update-api-token": true, + "can-traverse": true, + "can-start-trial": true, + "can-update-agent-pools": false, + "can-manage-tags": true, + "can-manage-varsets": true, + "can-read-varsets": true, + "can-manage-public-providers": true, + "can-create-provider": true, + "can-manage-public-modules": true, + "can-manage-custom-providers": false, + "can-manage-run-tasks": false, + "can-read-run-tasks": false, + "can-create-project": false + }, + "fair-run-queuing-enabled": true, + "saml-enabled": false, + "owners-team-saml-role-id": null, + "two-factor-conformant": false, + "assessments-enforced": false, + "default-execution-mode": "remote" + }, + "relationships": { + "default-agent-pool": { + "data": null + }, + "oauth-tokens": { + "links": { + "related": "/api/v2/organizations/hashicorp-two/oauth-tokens" + } + }, + "authentication-token": { + "links": { + "related": "/api/v2/organizations/hashicorp-two/authentication-token" + } + }, + "entitlement-set": { + "data": { + "id": "org-iJ5tr4WgB4WpA1hD", + "type": "entitlement-sets" + }, + "links": { + "related": "/api/v2/organizations/hashicorp-two/entitlement-set" + } + }, + "subscription": { + "links": { + "related": "/api/v2/organizations/hashicorp-two/subscription" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp-two" + } + } + ], + "links": { + "self": "https://tfe-zone-b0c8608c.ngrok.io/api/v2/organizations?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://tfe-zone-b0c8608c.ngrok.io/api/v2/organizations?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://tfe-zone-b0c8608c.ngrok.io/api/v2/organizations?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} +``` + +## Show an Organization + +`GET /organizations/:organization_name` + +| Parameter | Description | +| -------------------- | ------------------------------------ | +| `:organization_name` | The name of the organization to show | + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "organizations"`) | The request was successful | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/organizations/hashicorp +``` + +### Sample Response + +**Note:** Only HCP Terraform organizations return the `two-factor-conformant` and `assessments-enforced` properties. + +```json +{ + "data": { + "id": "hashicorp", + "type": "organizations", + "attributes": { + "external-id": "org-WV6DfwfxxXvLfvfs", + "created-at": "2020-03-26T22:13:38.456Z", + "email": "user@example.com", + "session-timeout": null, + "session-remember": null, + "collaborator-auth-policy": "password", + "plan-expired": false, + "plan-expires-at": null, + "plan-is-trial": false, + "plan-is-enterprise": false, + "cost-estimation-enabled": false, + "send-passing-statuses-for-untriggered-speculative-plans": false, + "aggregated-commit-status-enabled": true, + "speculative-plan-management-enabled": true, + "allow-force-delete-workspaces": false, + "name": "hashicorp", + "permissions": { + "can-update": true, + "can-destroy": true, + "can-access-via-teams": true, + "can-create-module": true, + "can-create-team": false, + "can-create-workspace": true, + "can-manage-users": true, + "can-manage-subscription": true, + "can-manage-sso": false, + "can-update-oauth": true, + "can-update-sentinel": false, + "can-update-ssh-keys": true, + "can-update-api-token": true, + "can-traverse": true, + "can-start-trial": true, + "can-update-agent-pools": false, + "can-manage-tags": true, + "can-manage-public-modules": true, + "can-manage-public-providers": false, + "can-manage-run-tasks": false, + "can-read-run-tasks": false, + "can-create-provider": false, + "can-create-project": true + }, + "fair-run-queuing-enabled": true, + "saml-enabled": false, + "owners-team-saml-role-id": null, + "two-factor-conformant": false, + "assessments-enforced": false, + "default-execution-mode": "remote" + }, + "relationships": { + "default-agent-pool": { + "data": null + }, + "oauth-tokens": { + "links": { + "related": "/api/v2/organizations/hashicorp/oauth-tokens" + } + }, + "authentication-token": { + "links": { + "related": "/api/v2/organizations/hashicorp/authentication-token" + } + }, + "entitlement-set": { + "data": { + "id": "org-WV6DfwfxxXvLfvfs", + "type": "entitlement-sets" + }, + "links": { + "related": "/api/v2/organizations/hashicorp/entitlement-set" + } + }, + "subscription": { + "links": { + "related": "/api/v2/organizations/hashicorp/subscription" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp" + } + } +} +``` + +## Create an Organization + +`POST /organizations` + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "organizations"`) | The organization was successfully created | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------------------------- | ------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"organizations"` | +| `data.attributes.name` | string | | Name of the organization | +| `data.attributes.email` | string | | Admin email address | +| `data.attributes.session-timeout` | integer | 20160 | Session timeout after inactivity (minutes) | +| `data.attributes.session-remember` | integer | 20160 | Session expiration (minutes) | +| `data.attributes.collaborator-auth-policy` | string | password | Authentication policy (`password` or `two_factor_mandatory`) | +| `data.attributes.cost-estimation-enabled` | boolean | false | Whether or not the cost estimation feature is enabled for all workspaces in the organization. Defaults to false. In Terraform Enterprise, you must also enable cost estimation in [Site Administration](/terraform/enterprise/admin/application/integration#cost-estimation-integration). | +| `data.attributes.send-passing-statuses-for-untriggered-speculative-plans` | boolean | false | Whether or not to send VCS status updates for untriggered speculative plans. This can be useful if large numbers of untriggered workspaces are exhausting request limits for connected version control service providers like GitHub. Defaults to false. In Terraform Enterprise, this setting is always false and cannot be changed but is also available in Site Administration. | +| `data.attributes.aggregated-commit-status-enabled` | boolean | true | Whether or not to aggregate VCS status updates for triggered workspaces. This is useful for monorepo projects with configuration spanning many workspaces. Defaults to `true`. You cannot use this option if `send-passing-statuses-for-untriggered-speculative-plans` is set to `true`. | +| `data.attributes.speculative-plan-management-enabled` | boolean | true | Whether or not to enable [Automatically cancel plan-only runs](/terraform/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management). Defaults to `true`. | +| `data.attributes.owners-team-saml-role-id` | string | (nothing) | **Optional.** **SAML only** The name of the ["owners" team](/terraform/enterprise/saml/team-membership#managing-membership-of-the-owners-team) | +| `data.attributes.assessments-enforced` | boolean | (false) | Whether or not to compel health assessments for all eligible workspaces. When true, health assessments occur on all compatible workspaces, regardless of the value of the workspace setting `assessments-enabled`. When false, health assessments only occur for workspaces that opt in by setting `assessments-enabled: true`. | +| `data.attributes.allow-force-delete-workspaces` | boolean | (false) | Whether workspace administrators can [delete workspaces with resources under management](/terraform/enterprise/users-teams-organizations/organizations#general). If false, only organization owners may delete these workspaces. | +| `data.attributes.default-execution-mode` | boolean | `remote` | Which [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) to use by default. Valid values are `remote`, `local`, and `agent`. | +| `data.attributes.default-agent-pool-id` | string | (previous value) | Required when `default-execution-mode` is set to `agent`. The ID of the agent pool belonging to the organization. Do _not_ specify this value if you set `execution-mode` to `remote` or `local`. | + +### Sample Payload + +```json +{ + "data": { + "type": "organizations", + "attributes": { + "name": "hashicorp", + "email": "user@example.com" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations +``` + +### Sample Response + +**Note:** Only HCP Terraform organizations return the `two-factor-conformant` and `assessments-enforced` properties. + +```json +{ + "data": { + "id": "hashicorp", + "type": "organizations", + "attributes": { + "external-id": "org-Bzyc2JuegvVLAibn", + "created-at": "2021-08-30T18:09:57.561Z", + "email": "user@example.com", + "session-timeout": null, + "session-remember": null, + "collaborator-auth-policy": "password", + "plan-expired": false, + "plan-expires-at": null, + "plan-is-trial": false, + "plan-is-enterprise": false, + "cost-estimation-enabled": false, + "send-passing-statuses-for-untriggered-speculative-plans": false, + "aggregated-commit-status-enabled": true, + "speculative-plan-management-enabled": true, + "allow-force-delete-workspaces": false, + "name": "hashicorp", + "permissions": { + "can-update": true, + "can-destroy": true, + "can-access-via-teams": true, + "can-create-module": true, + "can-create-team": false, + "can-create-workspace": true, + "can-manage-users": true, + "can-manage-subscription": true, + "can-manage-sso": false, + "can-update-oauth": true, + "can-update-sentinel": false, + "can-update-ssh-keys": true, + "can-update-api-token": true, + "can-traverse": true, + "can-start-trial": true, + "can-update-agent-pools": false, + "can-manage-tags": true, + "can-manage-public-modules": true, + "can-manage-public-providers": false, + "can-manage-run-tasks": false, + "can-read-run-tasks": false, + "can-create-provider": false, + "can-create-project": true + }, + "fair-run-queuing-enabled": true, + "saml-enabled": false, + "owners-team-saml-role-id": null, + "two-factor-conformant": false, + "assessments-enforced": false, + "default-execution-mode": "remote" + }, + "relationships": { + "default-agent-pool": { + "data": null + }, + "oauth-tokens": { + "links": { + "related": "/api/v2/organizations/hashicorp/oauth-tokens" + } + }, + "authentication-token": { + "links": { + "related": "/api/v2/organizations/hashicorp/authentication-token" + } + }, + "entitlement-set": { + "data": { + "id": "org-Bzyc2JuegvVLAibn", + "type": "entitlement-sets" + }, + "links": { + "related": "/api/v2/organizations/hashicorp/entitlement-set" + } + }, + "subscription": { + "links": { + "related": "/api/v2/organizations/hashicorp/subscription" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp" + } + }, + "included": [ + { + "id": "org-Bzyc2JuegvVLAibn", + "type": "entitlement-sets", + "attributes": { + "agents": false, + "audit-logging": false, + "configuration-designer": true, + "cost-estimation": false, + "global-run-tasks": false, + "module-tests-generation": false, + "operations": true, + "policy-enforcement": false, + "policy-limit": null, + "policy-mandatory-enforcement-limit": null, + "policy-set-limit": null, + "private-module-registry": true, + "run-task-limit": null, + "run-task-mandatory-enforcement-limit": null, + "run-task-workspace-limit": null, + "run-tasks": false, + "self-serve-billing": true, + "sentinel": false, + "sso": false, + "state-storage": true, + "teams": false, + "usage-reporting": false, + "user-limit": 5, + "vcs-integrations": true, + "versioned-policy-set-limit": null + }, + "links": { + "self": "/api/v2/entitlement-sets/org-Bzyc2JuegvVLAibn" + } + } + ] +} +``` + +## Update an Organization + +`PATCH /organizations/:organization_name` + +| Parameter | Description | +| -------------------- | -------------------------------------- | +| `:organization_name` | The name of the organization to update | + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "organizations"`) | The organization was successfully updated | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ------------------------------------------------------------------------- | ------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"organizations"` | +| `data.attributes.name` | string | | Name of the organization | +| `data.attributes.email` | string | | Admin email address | +| `data.attributes.session-timeout` | integer | 20160 | Session timeout after inactivity (minutes) | +| `data.attributes.session-remember` | integer | 20160 | Session expiration (minutes) | +| `data.attributes.collaborator-auth-policy` | string | password | Authentication policy (`password` or `two_factor_mandatory`) | +| `data.attributes.cost-estimation-enabled` | boolean | false | Whether or not the cost estimation feature is enabled for all workspaces in the organization. Defaults to false. In Terraform Enterprise, you must also enable cost estimation in [Site Administration](/terraform/enterprise/admin/application/integration#cost-estimation-integration). | +| `data.attributes.send-passing-statuses-for-untriggered-speculative-plans` | boolean | false | Whether or not to send VCS status updates for untriggered speculative plans. This can be useful if large numbers of untriggered workspaces are exhausting request limits for connected version control service providers like GitHub. Defaults to false. In Terraform Enterprise, this setting is always false and cannot be changed but is also available in Site Administration. | +| `data.attributes.aggregated-commit-status-enabled` | boolean | true | Whether or not to aggregate VCS status updates for triggered workspaces. This is useful for monorepo projects with configuration spanning many workspaces. Defaults to `true`. You cannot use this option if `send-passing-statuses-for-untriggered-speculative-plans` is set to `true`. | +| `data.attributes.speculative-plan-management-enabled` | boolean | true | Whether or not to enable [Automatically cancel plan-only runs](/terraform/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management). Defaults to `true`. | +| `data.attributes.owners-team-saml-role-id` | string | (nothing) | **Optional.** **SAML only** The name of the ["owners" team](/terraform/enterprise/saml/team-membership#managing-membership-of-the-owners-team) | +| `data.attributes.assessments-enforced` | boolean | false | Whether or not to compel health assessments for all eligible workspaces. When true, health assessments occur on all compatible workspaces, regardless of the value of the workspace setting `assessments-enabled`. When false, health assessments only occur for workspaces that opt in by setting `assessments-enabled: true`. | +| `data.attributes.allow-force-delete-workspaces` | boolean | false | Whether workspace administrators can [delete workspaces with resources under management](/terraform/enterprise/users-teams-organizations/organizations#general). If false, only organization owners may delete these workspaces. | +| `data.attributes.default-execution-mode` | boolean | `remote` | Which [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) to use by default. Valid values are `remote`, `local`, and `agent`. | +| `data.attributes.default-agent-pool-id` | string | (previous value) | Required when `default-execution-mode` is set to `agent`. The ID of the agent pool belonging to the organization. Do _not_ specify this value if you set `execution-mode` to `remote` or `local`. | + +### Sample Payload + +```json +{ + "data": { + "type": "organizations", + "attributes": { + "email": "admin@example.com" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/hashicorp +``` + +### Sample Response + +**Note:** The `two-factor-conformant` and `assessments-enforced` properties are only returned from HCP Terraform organizations. + +```json +{ + "data": { + "id": "hashicorp", + "type": "organizations", + "attributes": { + "external-id": "org-Bzyc2JuegvVLAibn", + "created-at": "2021-08-30T18:09:57.561Z", + "email": "admin@example.com", + "session-timeout": null, + "session-remember": null, + "collaborator-auth-policy": "password", + "plan-expired": false, + "plan-expires-at": null, + "plan-is-trial": false, + "plan-is-enterprise": false, + "cost-estimation-enabled": false, + "send-passing-statuses-for-untriggered-speculative-plans": false, + "aggregated-commit-status-enabled": true, + "speculative-plan-management-enabled": true, + "name": "hashicorp", + "permissions": { + "can-update": true, + "can-destroy": true, + "can-access-via-teams": true, + "can-create-module": true, + "can-create-team": false, + "can-create-workspace": true, + "can-manage-users": true, + "can-manage-subscription": true, + "can-manage-sso": false, + "can-update-oauth": true, + "can-update-sentinel": false, + "can-update-ssh-keys": true, + "can-update-api-token": true, + "can-traverse": true, + "can-start-trial": true, + "can-update-agent-pools": false, + "can-manage-tags": true, + "can-manage-public-modules": true, + "can-manage-public-providers": false, + "can-manage-run-tasks": false, + "can-read-run-tasks": false, + "can-create-provider": false, + "can-create-project": true + }, + "fair-run-queuing-enabled": true, + "saml-enabled": false, + "owners-team-saml-role-id": null, + "two-factor-conformant": false, + "assessments-enforced": false, + "default-execution-mode": "remote" + }, + "relationships": { + "default-agent-pool": { + "data": null + }, + "oauth-tokens": { + "links": { + "related": "/api/v2/organizations/hashicorp/oauth-tokens" + } + }, + "authentication-token": { + "links": { + "related": "/api/v2/organizations/hashicorp/authentication-token" + } + }, + "entitlement-set": { + "data": { + "id": "org-Bzyc2JuegvVLAibn", + "type": "entitlement-sets" + }, + "links": { + "related": "/api/v2/organizations/hashicorp/entitlement-set" + } + }, + "subscription": { + "links": { + "related": "/api/v2/organizations/hashicorp/subscription" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp" + } + } +} +``` + +## Destroy an Organization + +`DELETE /organizations/:organization_name` + +| Parameter | Description | +| -------------------- | --------------------------------------- | +| `:organization_name` | The name of the organization to destroy | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------- | +| [204][] | | The organization was successfully destroyed | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/hashicorp +``` + +### Sample Response + +The response body will be empty if successful. + +## Show the Entitlement Set + +This endpoint shows the [entitlements](/terraform/enterprise/api-docs#feature-entitlements) for an organization. + +`GET /organizations/:organization_name/entitlement-set` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------ | +| `:organization_name` | The name of the organization's entitlement set to view | + +| Status | Response | Reason | +| ------- | -------------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "entitlement-sets"`) | The request was successful | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/entitlement-set +``` + +### Sample Response + +```json +{ + "data": { + "id": "org-Bzyc2JuegvVLAibn", + "type": "entitlement-sets", + "attributes": { + "agents": false, + "audit-logging": false, + "configuration-designer": true, + "cost-estimation": false, + "global-run-tasks": false, + "module-tests-generation": false, + "operations": true, + "policy-enforcement": false, + "policy-limit": 5, + "policy-mandatory-enforcement-limit": null, + "policy-set-limit": 1, + "private-module-registry": true, + "private-policy-agents": false, + "private-run-tasks": true, + "private-vcs": false, + "run-task-limit": 1, + "run-task-mandatory-enforcement-limit": 1, + "run-task-workspace-limit": 10, + "run-tasks": false, + "self-serve-billing": true, + "sentinel": false, + "sso": false, + "state-storage": true, + "teams": false, + "usage-reporting": false, + "user-limit": 5, + "vcs-integrations": true, + "versioned-policy-set-limit": null + }, + "links": { + "self": "/api/v2/entitlement-sets/org-Bzyc2JuegvVLAibn" + } + } +} +``` + +## Show Module Producers + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. +</EnterpriseAlert> + +This endpoint shows organizations that are configured to share modules with an organization through [Module Sharing](/terraform/enterprise/admin/application/module-sharing). + +`GET /organizations/:organization_name/relationships/module-producers` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------- | +| `:organization_name` | The name of the organization's module producers to view | + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "organizations"`) | The request was successful | +| [404][] | [JSON API error object][] | Organization not found or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 module producers per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://tfe.example.com/api/v2/organizations/hashicorp/relationships/module-producers +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "hc-nomad", + "type": "organizations", + "attributes": { + "name": "hc-nomad", + "external-id": "org-ArQSQMAkFQsSUZjB" + }, + "links": { + "self": "/api/v2/organizations/hc-nomad" + } + } + ], + "links": { + "self": "https://tfe.example.com/api/v2/organizations/hashicorp/relationships/module-producers?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://tfe.example.com/api/v2/organizations/hashicorp/relationships/module-producers?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://tfe.example.com/api/v2/organizations/hashicorp/relationships/module-producers?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +## Show data retention policy + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise and is not available in HCP Terraform. +</EnterpriseAlert> + +`GET /organizations/:organization_name/relationships/data-retention-policy` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to show the data retention policy for. | + +This endpoint shows the data retention policy set explicitly on the organization. + +When no data retention policy is set for the organization, the endpoint returns the default policy configured for the Terraform Enterprise installation. Read more about [organization data retention policies](/terraform/enterprise/users-teams-organizations/organizations#data-retention-policies). + +For additional information, refer to [Data Retention Policy Types](/terraform/enterprise/api-docs/data-retention-policies#data-retention-policy-types) in the Terraform Enterprise documentation. + +## Create or update data retention policy + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise and is not available in HCP Terraform. +</EnterpriseAlert> + +`POST /organizations/:organization_name/relationships/data-retention-policy` + +| Parameter | Description | +| -------------------- | --------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to update the data retention policy for. | + +This endpoint creates a data retention policy for an organization or updates the existing policy. + +Read more about [organization data retention policies](/terraform/enterprise/users-teams-organizations/organizations#data-retention-policies). + +Refer to [Data Retention Policy API](/terraform/enterprise/api-docs/data-retention-policies#create-or-update-data-retention-policy) in the Terraform Enterprise documentation for details. + +## Remove data retention policy + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise and is not available in HCP Terraform. +</EnterpriseAlert> + +`DELETE /organizations/:organization_name/relationships/data-retention-policy` + +| Parameter | Description | +| -------------------- | --------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to remove the data retention policy for. | + +This endpoint removes the data retention policy explicitly set on an organization. +When the data retention policy is deleted, the organization inherits the default policy configured for the Terraform Enterprise installation. Refer to [Data Retention Policies](/terraform/enterprise/application-administration/general#data-retention-policies) for additional information. + +Refer to [Data Retention Policies](/terraform/enterprise/users-teams-organizations/organizations#data-retention-policies) for information about configuring data retention policies for an organization. + +Refer to [Data Retention Policy API](/terraform/enterprise/api-docs/data-retention-policies#remove-data-retention-policy) in the Terraform Enterprise documentation for details. + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| ----------------- | ------------------------------------------------------------------------------------------ | +| `entitlement_set` | The entitlement set that determines which HCP Terraform features the organization can use. | + +## Relationships + +The following relationships may be present in various responses. + +| Resource Name | Description | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `module-producers` | Other organizations configured to share modules with the organization. | +| `oauth-tokens` | OAuth tokens associated with VCS configurations for the organization. | +| `authentication-token` | The API token for an organization. | +| `entitlement-set` | The entitlement set that determines which HCP Terraform features the organization can use. | +| `subscription` | The current subscription for an organization. | +| `default-agent-pool` | An organization's default agent pool. Set this value if your `default-execution-mode` is `agent`. | +| `data-retention-policy` | <EnterpriseAlert inline/> Specifies an organization's data retention policy. Refer to [Data Retention Policy APIs](/terraform/enterprise/api-docs/data-retention-policies) in the Terraform Enterprise documentation for more details. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plan-exports.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plan-exports.mdx new file mode 100644 index 0000000000..dabfc4fd47 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plan-exports.mdx @@ -0,0 +1,226 @@ +--- +page_title: /plan-exports API reference for Terraform Enterprise +description: >- + Use the `/plan-exports` endpoint to manage plan exports for a Terraform run. + Create and show plan exports, or download and delete exported plan data. +source: terraform-docs-common +--- + +# Plan exports API reference + +Plan exports allow users to download data exported from the plan of a Run in a Terraform workspace. Currently, the only supported format for exporting plan data is to generate mock data for Sentinel. + +## Create a plan export + +`POST /plan-exports` + +This endpoint exports data from a plan in the specified format. The export process is asynchronous, and the resulting data becomes downloadable when its status is `"finished"`. The data is then available for one hour before expiring. After the hour is up, a new export can be created. + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "plan-exports"`) | Successfully created a plan export | +| [404][] | [JSON API error object][] | Plan not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.), or a plan export of the provided `data-type` is already pending or downloadable for this plan | + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------ | ------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"plan-exports"`. | +| `data.attributes.data-type` | string | | The format for the export. Currently, the only supported format is `"sentinel-mock-bundle-v0"`. | +| `data.relationships.plan.data` | object | | A JSON API relationship object that represents the plan being exported. This object must have a `type` of `plans`, and the `id` of a finished Terraform plan that does not already have a downloadable export of the specified `data-type` (e.g: `{"type": "plans", "id": "plan-8F5JFydVYAmtTjET"}`) | + +### Sample Payload + +```json +{ + "data": { + "type": "plan-exports", + "attributes": { + "data-type": "sentinel-mock-bundle-v0" + }, + "relationships": { + "plan": { + "data": { + "id": "plan-8F5JFydVYAmtTjET", + "type": "plans" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/plan-exports +``` + +### Sample Response + +```json +{ + "data": { + "id": "pe-3yVQZvHzf5j3WRJ1", + "type": "plan-exports", + "attributes": { + "data-type": "sentinel-mock-bundle-v0", + "status": "queued", + "status-timestamps": { + "queued-at": "2019-03-04T22:29:53+00:00", + }, + }, + "relationships": { + "plan": { + "data": { + "id": "plan-8F5JFydVYAmtTjET", + "type": "plans" + } + } + }, + "links": { + "self": "/api/v2/plan-exports/pe-3yVQZvHzf5j3WRJ1", + } + } +} +``` + +## Show a plan export + +`GET /plan-exports/:id` + +| Parameter | Description | +| --------- | ---------------------------------- | +| `id` | The ID of the plan export to show. | + +There is no endpoint to list plan exports. You can find IDs for plan exports in the +`relationships.exports` property of a plan object. + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | ------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "plan-exports"`) | The request was successful | +| [404][] | [JSON API error object][] | Plan export not found, or user unauthorized to perform action | + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/plan-exports/pe-3yVQZvHzf5j3WRJ1 +``` + +### Sample Response + +```json +{ + "data": { + "id": "pe-3yVQZvHzf5j3WRJ1", + "type": "plan-exports", + "attributes": { + "data-type": "sentinel-mock-bundle-v0", + "status": "finished", + "status-timestamps": { + "queued-at": "2019-03-04T22:29:53+00:00", + "finished-at": "2019-03-04T22:29:58+00:00", + "expired-at": "2019-03-04T23:29:58+00:00" + }, + }, + "relationships": { + "plan": { + "data": { + "id": "plan-8F5JFydVYAmtTjET", + "type": "plans" + } + } + }, + "links": { + "self": "/api/v2/plan-exports/pe-3yVQZvHzf5j3WRJ1", + "download": "/api/v2/plan-exports/pe-3yVQZvHzf5j3WRJ1/download" + } + } +} +``` + +## Download exported plan data + +`GET /plan-exports/:id/download` + +This endpoint generates a temporary URL to the location of the exported plan data in a `.tar.gz` archive, and then redirects to that link. If using a client that can follow redirects, you can use this endpoint to save the `.tar.gz` archive locally without needing to save the temporary URL. + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------- | +| [302][] | HTTP Redirect | Plan export found and temporary download URL generated | +| [404][] | [JSON API error object][] | Plan export not found, or user unauthorized to perform action | + +[302]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --location \ + https://app.terraform.io/api/v2/plan-exports/pe-3yVQZvHzf5j3WRJ1/download \ + > export.tar.gz +``` + +## Delete exported plan data + +`DELETE /plan-exports/:id` + +Plan exports expire after being available for one hour, but they can be deleted manually as well. + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------- | +| [204][] | No content | Plan export deleted successfully | +| [404][] | [JSON API error object][] | Plan export not found, or user unauthorized to perform action | + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + -X DELETE \ + https://app.terraform.io/api/v2/plan-exports/pe-3yVQZvHzf5j3WRJ1 +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plans.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plans.mdx new file mode 100644 index 0000000000..aee7e4eaef --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/plans.mdx @@ -0,0 +1,203 @@ +--- +page_title: /plans API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/plans` endpoint to read a Terraform run + plan or generate JSON-formatted execution plans. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[307]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Plans API reference + +A plan represents the execution plan of a Run in a Terraform workspace. + +## Attributes + +### Plan States + +The plan state is found in `data.attributes.status`, and you can reference the following list of possible states. + +| State | Description | +| ------------------------- | ----------------------------------------------------------------------------- | +| `pending` | The initial status of a plan once it has been created. | +| `managed_queued`/`queued` | The plan has been queued, awaiting backend service capacity to run terraform. | +| `running` | The plan is running. | +| `errored` | The plan has errored. This is a final state. | +| `canceled` | The plan has been canceled. This is a final state. | +| `finished` | The plan has completed successfully. This is a final state. | +| `unreachable` | The plan will not run. This is a final state. | + +## Show a plan + +`GET /plans/:id` + +| Parameter | Description | +| --------- | --------------------------- | +| `id` | The ID of the plan to show. | + +There is no endpoint to list plans. You can find the ID for a plan in the +`relationships.plan` property of a run object. + +| Status | Response | Reason | +| ------- | --------------------------------------- | ------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "plans"`) | The request was successful | +| [404][] | [JSON API error object][] | Plan not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/plans/plan-8F5JFydVYAmtTjET +``` + +### Sample Response + +```json +{ + "data": { + "id": "plan-8F5JFydVYAmtTjET", + "type": "plans", + "attributes": { + "execution-details": { + "mode": "remote", + }, + "generated-configuration": false, + "has-changes": true, + "resource-additions": 0, + "resource-changes": 1, + "resource-destructions": 0, + "resource-imports": 0, + "status": "finished", + "status-timestamps": { + "queued-at": "2018-07-02T22:29:53+00:00", + "pending-at": "2018-07-02T22:29:53+00:00", + "started-at": "2018-07-02T22:29:54+00:00", + "finished-at": "2018-07-02T22:29:58+00:00" + }, + "log-read-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6OFA1eEdlSFVHRSs4YUcwaW83a1dRRDA0U2E3T3FiWk1HM2NyQlNtcS9JS1hHN3dmTXJmaFhEYTlHdTF1ZlgxZ2wzVC9kVTlNcjRPOEJkK050VFI3U3dvS2ZuaUhFSGpVenJVUFYzSFVZQ1VZYno3T3UyYjdDRVRPRE5pbWJDVTIrNllQTENyTndYd1Y0ak1DL1dPVlN1VlNxKzYzbWlIcnJPa2dRRkJZZGtFeTNiaU84YlZ4QWs2QzlLY3VJb3lmWlIrajF4a1hYZTlsWnFYemRkL2pNOG9Zc0ZDakdVMCtURUE3dDNMODRsRnY4cWl1dUN5dUVuUzdnZzFwL3BNeHlwbXNXZWRrUDhXdzhGNnF4c3dqaXlZS29oL3FKakI5dm9uYU5ZKzAybnloREdnQ3J2Rk5WMlBJemZQTg" + }, + "relationships": { + "state-versions": { + "data": [] + } + }, + "links": { + "self": "/api/v2/plans/plan-8F5JFydVYAmtTjET", + "json-output": "/api/v2/plans/plan-8F5JFydVYAmtTjET/json-output" + } + } +} +``` + +_Using HCP Terraform agents_ + +[HCP Terraform agents](/terraform/enterprise/api-docs/agents) allow HCP Terraform to communicate with isolated, private, or on-premises infrastructure. When a workspace is set to use the agent execution mode, the plan response will include additional details about the agent pool and agent used. + +```json +{ + "data": { + "id": "plan-8F5JFydVYAmtTjET", + "type": "plans", + "attributes": { + "execution-details": { + "agent-id": "agent-S1Y7tcKxXPJDQAvq", + "agent-name": "agent_01", + "agent-pool-id": "apool-Zigq2VGreKq7nwph", + "agent-pool-name": "first-pool", + "mode": "agent", + }, + "generated-configuration": false, + "has-changes": true, + "resource-additions": 0, + "resource-changes": 1, + "resource-destructions": 0, + "resource-imports": 0, + "status": "finished", + "status-timestamps": { + "queued-at": "2018-07-02T22:29:53+00:00", + "pending-at": "2018-07-02T22:29:53+00:00", + "started-at": "2018-07-02T22:29:54+00:00", + "finished-at": "2018-07-02T22:29:58+00:00" + }, + "log-read-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6OFA1eEdlSFVHRSs4YUcwaW83a1dRRDA0U2E3T3FiWk1HM2NyQlNtcS9JS1hHN3dmTXJmaFhEYTlHdTF1ZlgxZ2wzVC9kVTlNcjRPOEJkK050VFI3U3dvS2ZuaUhFSGpVenJVUFYzSFVZQ1VZYno3T3UyYjdDRVRPRE5pbWJDVTIrNllQTENyTndYd1Y0ak1DL1dPVlN1VlNxKzYzbWlIcnJPa2dRRkJZZGtFeTNiaU84YlZ4QWs2QzlLY3VJb3lmWlIrajF4a1hYZTlsWnFYemRkL2pNOG9Zc0ZDakdVMCtURUE3dDNMODRsRnY4cWl1dUN5dUVuUzdnZzFwL3BNeHlwbXNXZWRrUDhXdzhGNnF4c3dqaXlZS29oL3FKakI5dm9uYU5ZKzAybnloREdnQ3J2Rk5WMlBJemZQTg" + }, + "relationships": { + "state-versions": { + "data": [] + } + }, + "links": { + "self": "/api/v2/plans/plan-8F5JFydVYAmtTjET", + "json-output": "/api/v2/plans/plan-8F5JFydVYAmtTjET/json-output" + } + } +} +``` + +## Retrieve the JSON execution plan + +`GET /plans/:id/json-output` + +`GET /runs/:id/plan/json-output` + +These endpoints generate a temporary authenticated URL to the location of the [JSON formatted execution plan](/terraform/internals/json-format#format-summary). When successful, this endpoint responds with a temporary redirect that should be followed. If using a client that can follow redirects, you can use this endpoint to save the `.json` file locally without needing to save the temporary URL. + +This temporary URL provided by the redirect has a life of **1 minute**, and should not be relied upon beyond the initial request. If you need repeat access, you should use this endpoint to generate a new URL each time. + +-> **Note:** This endpoint is available for plans using Terraform 0.12 and later. For Terraform Enterprise, this endpoint is available from v202005-1, and its stability was improved in v202007-1. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens) that has admin level access to the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------------------------------------------- | +| [204][] | No Content | Plan JSON supported, but plan has not yet completed. | +| [307][] | Temporary Redirect | Plan JSON found and temporary download URL generated | +| [422][] | [JSON API error object][] | Plan does not use a supported version of terraform (&lt; 0.12.X) | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --location \ + https://app.terraform.io/api/v2/plans/plan-8F5JFydVYAmtTjET/json-output | + > json-output.json +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policies.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policies.mdx new file mode 100644 index 0000000000..64118b2364 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policies.mdx @@ -0,0 +1,564 @@ +--- +page_title: /policies API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/policies` endpoint to list, show, create, + upload, update, and delete Sentinel and OPA policies. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Policies API reference + +Policies are rules that HCP Terraform enforces on Terraform runs. You can use policies to validate that the Terraform plan complies with security rules and best practices. HCP Terraform policy enforcement lets you use the policy-as-code frameworks Sentinel and Open Policy Agent (OPA) to apply policy checks to HCP Terraform workspaces. Refer to [Policy Enforcement](/terraform/enterprise/policy-enforcement) for more details. + +[Policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) are collections of policies that you can apply globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces, in your organization. For each run in the selected workspaces, HCP Terraform checks the Terraform plan against the policy set and displays the results in the UI. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +This page documents the API endpoints to create, read, update, and delete policies in an organization. To manage policy sets, use the [Policy Sets API](/terraform/enterprise/api-docs/policy-sets). To manage the policy results, use the [Runs API](/terraform/enterprise/api-docs/run). + +## Create a Policy + +`POST /organizations/:organization_name/policies` + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The organization to create the policy in. The organization must already exist in the system, and the token authenticating the API request must have permission to manage policies. (([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) | + +\[permissions-citation]: #intentionally-unused---keep-for-maintainers) + +This creates a new policy object for the organization, but does not upload the actual policy code. After creation, you must use the [Upload a Policy endpoint (below)](#upload-a-policy) with the new policy's upload path. (This endpoint's response body includes the upload path in its `links.upload` property.) + +| Status | Response | Reason | +| ------- | ------------------------------------------ | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policies"`) | Successfully created a policy | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------------- | -------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"policies"`. | +| `data.attributes.name` | string | | The name of the policy, which can include letters, numbers, `-`, and `_`. You cannot modify this name after creation. | +| `data.attributes.description` | string | `null` | Text describing the policy's purpose. This field supports Markdown and appears in the HCP Terraform UI. | +| `data.attributes.kind` | string | `sentinel` | The policy-as-code framework for the policy. Valid values are `"sentinel"` and `"opa"`. | +| `data.attributes.query` | string | | The OPA query to run. Only valid for OPA policies. | +| `data.attributes.enforcement-level` | string | | The enforcement level of the policy. For Sentinel, valid values are `"hard-mandatory"`, `"soft-mandatory"`, and `"advisory"`. For OPA, Valid values are `"mandatory"`and `"advisory"`. Refer to [Managing Policies](/terraform/enterprise/policy-enforcement/manage-policy-sets) for details. | +| `data.attributes.enforce` | array\[object] | | **DEPRECATED** Use `enforcement-level` instead. An array of enforcement configurations that map policy file paths to their enforcement modes. Policies support a single file, so this array should consist of a single element. For Sentinel, if the path in the enforcement map does not match the Sentinel policy (`<NAME>.sentinel`), then HCP Terraform uses the default `hard-mandatory` enforcement level. For OPA, the default enforcement level is `advisory`. | +| `data.attributes.enforce[].path` | string | | **DEPRECATED** For Sentinel, must be `<NAME>.sentinel`, where `<NAME>` has the same value as `data.attributes.name`. For OPA, must be `<NAME>.rego`. | +| `data.attributes.enforce[].mode` | string | | **DEPRECATED** Use `enforcement-level` instead. The enforcement level of the policy. For Sentinel, valid values are `"hard-mandatory"`, `"soft-mandatory"`, and `"advisory"`. For OPA, Valid values are `"mandatory"`and `"advisory"`. Refer to [Managing Policies](/terraform/enterprise/policy-enforcement/manage-policy-sets) for details. | +| `data.relationships.policy-sets.data[]` | array\[object] | `[]` | A list of resource identifier objects to define which policy sets include the new policy. These objects must contain `id` and `type` properties, and the `type` property must be `policy-sets`. For example,`{ "id": "polset-3yVQZvHzf5j3WRJ1","type": "policy-sets" }`. | + +### Sample Payload (Sentinel) + +```json +{ + "data": { + "attributes": { + "enforcement-level": "hard-mandatory", + "name": "my-example-policy", + "description": "An example policy.", + "kind": "sentinel" + }, + "relationships": { + "policy-sets": { + "data": [ + { "id": "polset-3yVQZvHzf5j3WRJ1", "type": "policy-sets" } + ] + } + }, + "type": "policies" + } +} +``` + +### Sample Payload (OPA) + +-> **Note**: We have deprecated the `enforce` property in requests and responses but continue to provide it for backward compatibility. The below sample uses the deprecated `enforce` property. + +```json +{ + "data": { + "attributes": { + "enforce": [ + { + "path": "my-example-policy.rego", + "mode": "advisory" + } + ], + "name": "my-example-policy", + "description": "An example policy.", + "kind": "opa", + "query": "terraform.main" + }, + "relationships": { + "policy-sets": { + "data": [ + { "id": "polset-3yVQZvHzf5j3WRJ1", "type": "policy-sets" } + ] + } + }, + "type": "policies" + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/policies +``` + +### Sample Response (Sentinel) + +```json +{ + "data": { + "id":"pol-u3S5p2Uwk21keu1s", + "type":"policies", + "attributes": { + "name":"my-example-policy", + "description":"An example policy.", + "enforcement-level":"advisory", + "enforce": [ + { + "path":"my-example-policy.sentinel", + "mode":"advisory" + } + ], + "policy-set-count": 1, + "updated-at": null + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policy-sets": { + "data": [ + { "id": "polset-3yVQZvHzf5j3WRJ1", "type": "policy-sets" } + ] + } + }, + "links": { + "self":"/api/v2/policies/pol-u3S5p2Uwk21keu1s", + "upload":"/api/v2/policies/pol-u3S5p2Uwk21keu1s/upload" + } + } +} +``` + +### Sample Response (OPA) + +```json +{ + "data": { + "id":"pol-u3S5p2Uwk21keu1s", + "type":"policies", + "attributes": { + "name":"my-example-policy", + "description":"An example policy.", + "kind": "opa", + "query": "terraform.main", + "enforcement-level": "advisory", + "enforce": [ + { + "path":"my-example-policy.rego", + "mode":"advisory" + } + ], + "policy-set-count": 1, + "updated-at": null + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policy-sets": { + "data": [ + { "id": "polset-3yVQZvHzf5j3WRJ1", "type": "policy-sets" } + ] + } + }, + "links": { + "self":"/api/v2/policies/pol-u3S5p2Uwk21keu1s", + "upload":"/api/v2/policies/pol-u3S5p2Uwk21keu1s/upload" + } + } +} +``` + +## Show a Policy + +`GET /policies/:policy_id` + +| Parameter | Description | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:policy_id` | The ID of the policy to show. Refer to [List Policies](/terraform/enterprise/api-docs/policies#list-policies) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------------------------ | ------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policies"`) | The request was successful | +| [404][] | [JSON API error object][] | Policy not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl --request GET \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/policies/pol-oXUppaX2ximkqp8w +``` + +### Sample Response + +```json +{ + "data": { + "id": "pol-oXUppaX2ximkqp8w", + "type": "policies", + "attributes": { + "name": "my-example-policy", + "description":"An example policy.", + "kind": "sentinel", + "enforcement-level": "soft-mandatory", + "enforce": [ + { + "path": "my-example-policy.sentinel", + "mode": "soft-mandatory" + } + ], + "policy-set-count": 1, + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policy-sets": { + "data": [ + { "id": "polset-3yVQZvHzf5j3WRJ1", "type": "policy-sets" } + ] + } + }, + "links": { + "self": "/api/v2/policies/pol-oXUppaX2ximkqp8w", + "upload": "/api/v2/policies/pol-oXUppaX2ximkqp8w/upload", + "download": "/api/v2/policies/pol-oXUppaX2ximkqp8w/download" + } + } +} +``` + +## Upload a Policy + +`PUT /policies/:policy_id/upload` + +| Parameter | Description | +| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:policy_id` | The ID of the policy to upload code to. Refer to [List Policies](/terraform/enterprise/api-docs/policies#list-policies) for reference information about finding the policy ID. The ID also appears in the response when you create a policy. | + +This endpoint uploads code to an existing Sentinel or OPA policy. + +-> **Note**: This endpoint does not use JSON-API's conventions for HTTP headers and body serialization. + +-> **Note**: This endpoint limits the size of uploaded policies to 10MB. If a larger payload is uploaded, an HTTP 413 error will be returned, and the policy will not be saved. Consider refactoring policies into multiple smaller, more concise documents if you reach this limit. + +### Request Body + +This PUT endpoint requires the text of a valid Sentinel or OPA policy with a `Content-Type` of `application/octet-stream`. + +- Refer to [Defining Sentinel Policies](/terraform/enterprise/policy-enforcement/sentinel) for details about writing Sentinel code. +- Refer to [Defining OPA Policies](/terraform/enterprise/policy-enforcement/opa) for details about writing OPA code. + +### Sample Payload + +```plain +main = rule { true } +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @payload.file \ + https://app.terraform.io/api/v2/policies/pol-u3S5p2Uwk21keu1s/upload +``` + +## Update a Policy + +`PATCH /policies/:policy_id` + +| Parameter | Description | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:policy_id` | The ID of the policy to update. Refer to [List Policies](/terraform/enterprise/api-docs/policies#list-policies) for reference information about finding IDs. | + +This endpoint can update the enforcement mode of an existing policy. To update the policy code itself, use the upload endpoint. + +| Status | Response | Reason | +| ------- | ------------------------------------------ | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policies"`) | Successfully updated the policy | +| [404][] | [JSON API error object][] | Policy not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------------- | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"policies"`. | +| `data.attributes.description` | string | `null` | Text describing the policy's purpose. This field supports Markdown and appears in the HCP Terraform UI. | +| `data.attributes.query` | string | | The OPA query to run. This is only valid for OPA policies. | +| `data.attributes.enforcement-level` | string | | The enforcement level of the policy. For Sentinel, valid values are `"hard-mandatory"`, `"soft-mandatory"`, and `"advisory"`. For OPA, Valid values are `"mandatory"`and `"advisory"`. Refer to [Managing Policies](/terraform/enterprise/policy-enforcement/manage-policy-sets) for details. | +| `data.attributes.enforce` | array\[object] | | **DEPRECATED** Use `enforcement-level` instead. An array of enforcement configurations that map policy file paths to their enforcement modes. Policies support a single file, so this array should consist of a single element. For Sentinel, if the path in the enforcement map does not match the Sentinel policy (`<NAME>.sentinel`), then HCP Terraform uses the default `hard-mandatory` enforcement level. For OPA, the default enforcement level is `advisory`. | +| `data.attributes.enforce[].path` | string | | **DEPRECATED** For Sentinel, must be `<NAME>.sentinel`, where `<NAME>` has the same value as `data.attributes.name`. For OPA, must be `<NAME>.rego`. | +| `data.attributes.enforce[].mode` | string | | **DEPRECATED** Use `enforcement-level` instead. The enforcement level of the policy. For Sentinel, valid values are `"hard-mandatory"`, `"soft-mandatory"`, and `"advisory"`. For OPA, Valid values are `"mandatory"`and `"advisory"`. Refer to [Managing Policies](/terraform/enterprise/policy-enforcement/manage-policy-sets) for details. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "enforcement-level": "soft-mandatory" + }, + "type":"policies" + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/policies/pol-u3S5p2Uwk21keu1s +``` + +### Sample Response + +```json +{ + "data": { + "id":"pol-u3S5p2Uwk21keu1s", + "type":"policies", + "attributes": { + "name":"my-example-policy", + "description":"An example policy.", + "kind": "sentinel", + "enforcement-level": "soft-mandatory", + "enforce": [ + { + "path":"my-example-policy.sentinel", + "mode":"soft-mandatory" + } + ], + "policy-set-count": 0, + "updated-at":"2017-10-10T20:58:04.621Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + }, + "links": { + "self":"/api/v2/policies/pol-u3S5p2Uwk21keu1s", + "upload":"/api/v2/policies/pol-u3S5p2Uwk21keu1s/upload", + "download":"/api/v2/policies/pol-u3S5p2Uwk21keu1s/download" + } + } +} +``` + +## List Policies + +`GET /organizations/:organization_name/policies` + +| Parameter | Description | +| -------------------- | -------------------------------------- | +| `:organization_name` | The organization to list policies for. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | -------------------------------------------------------------- | +| [200][] | Array of [JSON API document][]s (`type: "policies"`) | Success | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------- | - | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 policies per page. | | +| `search[name]` | **Optional.** Allows searching the organization's policies by name. | | +| `filter[kind]` | **Optional.** If specified, restricts results to those with the matching policy kind value. Valid values are `sentinel` and `opa` | | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-organization/policies +``` + +### Sample Response + +```json +{ + "data": [ + { + "attributes": { + "enforcement-level": "advisory", + "enforce": [ + { + "mode": "advisory", + "path": "my-example-policy.sentinel" + } + ], + "name": "my-example-policy", + "description": "An example policy.", + "policy-set-count": 0, + "updated-at": "2017-10-10T20:52:13.898Z", + "kind": "sentinel" + }, + "id": "pol-u3S5p2Uwk21keu1s", + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + }, + "links": { + "download": "/api/v2/policies/pol-u3S5p2Uwk21keu1s/download", + "self": "/api/v2/policies/pol-u3S5p2Uwk21keu1s", + "upload": "/api/v2/policies/pol-u3S5p2Uwk21keu1s/upload" + }, + "type": "policies" + }, + { + "id":"pol-vM2rBfj7V2Faq8By", + "type":"policies", + "attributes":{ + "name":"policy1", + "description":null, + "enforcement-level": "advisory", + "enforce":[ + { + "path":"policy1.rego", + "mode":"advisory" + } + ], + "policy-set-count":1, + "updated-at":"2022-09-13T04:57:43.516Z", + "kind":"opa", + "query":"data.terraform.rules.policy1.rule" + }, + "relationships":{ + "organization":{ + "data":{ + "id":"hashicorp", + "type":"organizations" + } + }, + "policy-sets":{ + "data":[ + { + "id":"polset-FYu3k5WY5eecwwdt", + "type":"policy-sets" + } + ] + } + }, + "links":{ + "self":"/api/v2/policies/pol-vM2rBfj7V2Faq8By", + "upload":"/api/v2/policies/pol-vM2rBfj7V2Faq8By/upload", + "download":"/api/v2/policies/pol-vM2rBfj7V2Faq8By/download" + } + } + ] +} +``` + +## Delete a Policy + +`DELETE /policies/:policy_id` + +| Parameter | Description | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:policy_id` | The ID of the policy to delete. Refer to [List Policies](/terraform/enterprise/api-docs/policies#list-policies) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------- | +| [204][] | No Content | Successfully deleted the policy | +| [404][] | [JSON API error object][] | Policy not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/policies/pl-u3S5p2Uwk21keu1s +``` + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| ------------- | ------------------------------------------------------ | +| `policy_sets` | Policy sets that any returned policies are members of. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-checks.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-checks.mdx new file mode 100644 index 0000000000..621f40d368 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-checks.mdx @@ -0,0 +1,265 @@ +--- +page_title: /policy-checks API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/policy-checks` endpoint to manage and + override the Sentinel policy checks that HCP Terraform performs during a run. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Policy checks API reference + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Policy checks are the default workflow for Sentinel. Policy checks use the latest version of the Sentinel runtime and have access to cost estimation data. +This set of APIs provides endpoints to get, list, and override policy checks. + +~> **Warning:** Policy checks are deprecated and will be permanently removed in August 2025. We recommend that you start using policy evaluations to avoid disruptions. + +## List Policy Checks + +This endpoint lists the policy checks in a run. + +-> **Note**: The `sentinel` hash in the `result` attribute structure represents low-level Sentinel details generated by the policy engine. The keys or structure may change over time. Use the data in this hash at your own risk. + +`GET /runs/:run_id/policy-checks` + +| Parameter | Description | +| --------- | -------------------------------------------- | +| `run_id` | The ID of the run to list policy checks for. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| -------------- | ----------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 policy checks per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/runs/run-CZcmD7eagjhyXavN/policy-checks +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "polchk-9VYRc9bpfJEsnwum", + "type": "policy-checks", + "attributes": { + "result": { + "result": false, + "passed": 0, + "total-failed": 1, + "hard-failed": 0, + "soft-failed": 1, + "advisory-failed": 0, + "duration-ms": 0, + "sentinel": {...} + }, + "scope": "organization", + "status": "soft_failed", + "status-timestamps": { + "queued-at": "2017-11-29T20:02:17+00:00", + "soft-failed-at": "2017-11-29T20:02:20+00:00" + }, + "actions": { + "is-overridable": true + }, + "permissions": { + "can-override": false + } + }, + "relationships": { + "run": { + "data": { + "id": "run-veDoQbv6xh6TbnJD", + "type": "runs" + } + } + }, + "links": { + "output": "/api/v2/policy-checks/polchk-9VYRc9bpfJEsnwum/output" + } + } + ] +} +``` + +## Show Policy Check + +This endpoint gets information about a specific policy check ID. Policy check IDs can appear in audit logs. + +-> **Note**: The `sentinel` hash in the `result` attribute structure represents low-level Sentinel details generated by the policy engine. The keys or structure may change over time. Use the data in this hash at your own risk. + +`GET /policy-checks/:id` + +| Parameter | Description | +| --------- | ----------------------------------- | +| `id` | The ID of the policy check to show. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/policy-checks/polchk-9VYRc9bpfJEsnwum +``` + +### Sample Response + +```json +{ + "data": { + "id": "polchk-9VYRc9bpfJEsnwum", + "type": "policy-checks", + "attributes": { + "result": { + "result": false, + "passed": 0, + "total-failed": 1, + "hard-failed": 0, + "soft-failed": 1, + "advisory-failed": 0, + "duration-ms": 0, + "sentinel": {...} + }, + "scope": "organization", + "status": "soft_failed", + "status-timestamps": { + "queued-at": "2017-11-29T20:02:17+00:00", + "soft-failed-at": "2017-11-29T20:02:20+00:00" + }, + "actions": { + "is-overridable": true + }, + "permissions": { + "can-override": false + } + }, + "relationships": { + "run": { + "data": { + "id": "run-veDoQbv6xh6TbnJD", + "type": "runs" + } + } + }, + "links": { + "output": "/api/v2/policy-checks/polchk-9VYRc9bpfJEsnwum/output" + } + } +} +``` + +## Override Policy + +This endpoint overrides a soft-mandatory or warning policy. + +-> **Note**: The `sentinel` hash in the `result` attribute structure represents low-level Sentinel details generated by the policy engine. The keys or structure may change over time. Use the data in this hash at your own risk. + +`POST /policy-checks/:id/actions/override` + +| Parameter | Description | +| --------- | --------------------------------------- | +| `id` | The ID of the policy check to override. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/policy-checks/polchk-EasPB4Srx5NAiWAU/actions/override +``` + +### Sample Response + +```json +{ + "data": { + "id": "polchk-EasPB4Srx5NAiWAU", + "type": "policy-checks", + "attributes": { + "result": { + "result": false, + "passed": 0, + "total-failed": 1, + "hard-failed": 0, + "soft-failed": 1, + "advisory-failed": 0, + "duration-ms": 0, + "sentinel": {...} + }, + "scope": "organization", + "status": "overridden", + "status-timestamps": { + "queued-at": "2017-11-29T20:13:37+00:00", + "soft-failed-at": "2017-11-29T20:13:40+00:00", + "overridden-at": "2017-11-29T20:14:11+00:00" + }, + "actions": { + "is-overridable": true + }, + "permissions": { + "can-override": false + } + }, + "links": { + "output": "/api/v2/policy-checks/polchk-EasPB4Srx5NAiWAU/output" + } + } +} +``` + +### Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| --------------- | ------------------------------------- | +| `run` | The run this policy check belongs to. | +| `run.workspace` | The associated workspace of the run. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-evaluations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-evaluations.mdx new file mode 100644 index 0000000000..9733bfbed1 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-evaluations.mdx @@ -0,0 +1,288 @@ +--- +page_title: /policy-evaluations API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/policy-evaluations` endpoint to read + policy outcomes and evaluations from Sentinel and OPA policies that HCP + Terraform performs during a Terraform run. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Policy evaluations API reference + +Policy evaluations are run within the [HCP Terraform agents](/terraform/enterprise/api-docs/agents) in HCP Terraform's infrastructure. Policy evaluations do not have access to cost estimation data. +This set of APIs provides endpoints to list and get policy evaluations and policy outcomes. + +## List Policy Evaluations in the Task Stage + +Each run passes through several stages of action (pending, plan, policy check, apply, and completion), and shows the progress through those stages as [run states](/terraform/enterprise/run/states). +This endpoint allows you to list policy evaluations that are part of the task stage. + +`GET /task-stages/:task_stage_id/policy-evaluations` + +| Parameter | Description | +| ---------------- | ------------------------- | +| `:task_stage_id` | The task stage ID to get. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------- | +| [200][] | [JSON API document][] | Success | +| [404][] | [JSON API error object][] | Task stage not found | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling does not automatically encode URLs. + +| Parameter | Description | +| -------------- | ----------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint returns the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint returns 20 agent pools per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/task-stages/ts-rL5ZsuwfjqfPJcdi/policy-evaluations +``` + +### Sample Response + +```json +{ + "data":[ + { + "id":"poleval-8Jj9Hfoz892D9WMX", + "type":"policy-evaluations", + "attributes":{ + "status":"passed", + "policy-kind":"opa", + "policy-tool-version": "0.44.0", + "result-count": { + "advisory-failed":0, + "errored":0, + "mandatory-failed":0, + "passed":1 + } + "status-timestamps":{ + "passed-at":"2022-09-16T01:40:30+00:00", + "queued-at":"2022-09-16T01:40:04+00:00", + "running-at":"2022-09-16T01:40:08+00:00" + }, + "created-at":"2022-09-16T01:39:07.782Z", + "updated-at":"2022-09-16T01:40:30.010Z" + }, + "relationships":{ + "policy-attachable":{ + "data":{ + "id":"ts-yxskot8Gz5yHa38W", + "type":"task-stages" + } + }, + "policy-set-outcomes":{ + "links":{ + "related":"/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX/policy-set-outcomes" + } + } + }, + "links":{ + "self":"/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX" + } + } + ] +} +``` + +## List Policy Outcomes + +`GET /policy-evaluations/:policy_evaluation_id/policy-set-outcomes` + +| Parameter | Description | +| ----------------------- | ---------------------------------------------------------- | +| `:policy_evaluation_id` | The ID of the policy evaluation the outcome belongs to get | + +This endpoint allows you to list policy set outcomes that are part of the policy evaluation. + +| Status | Response | Reason | +| ------- | ------------------------- | --------------------------- | +| [200][] | [JSON API document][] | Success | +| [404][] | [JSON API error object][] | Policy evaluation not found | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling does not automatically encode URLs. + +| Parameter | Description | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint returns the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint returns 20 policy sets per page. | +| `filter[n][status]` | **Optional.** If omitted, the endpoint returns all policies regardless of status. Must be either "passed", "failed", or "errored". | +| `filter[n][enforcementLevel]` | **Optional.** Only used if paired with a non-errored status filter. Must be either "advisory" or "mandatory." | + +-> **Note**: You can use `filter[n]` to combine combinations of statuses and enforcement levels. Policy outcomes with an errored status do not have an enforcement level. + +### Sample Request + +The following example requests demonstrate how to call the `policy-set-outcomes` endpoint using cuRL. + +#### All Policy Outcomes + +The following example call returns all policy set outcomes. + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX/policy-set-outcomes +``` + +#### Failed and Errored Policy Outcomes + +The following example call filters the response so that it only contains failed outcomes and errors. + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX/policy-set-outcomes?filter[0][status]=errored&filter[1][status]=failed&filter[1][enforcementLevel]=mandatory +``` + +### Sample Response + +The following example response shows that the `policyVCS` policy failed. + +```json +{ + "data":[ + { + "id":"psout-cu8E9a97LBepZZXd", + "type":"policy-set-outcomes", + "attributes":{ + "outcomes":[ + { + "enforcement_level":"advisory", + "query":"data.terraform.main.main", + "status":"failed", + "policy_name":"policyVCS", + "description":"" + } + ], + "error":"", + "overridable":true, + "policy-set-name":"opa-policies-vcs", + "policy-set-description":null, + "result-count":{ + "advisory-failed":1, + "errored":0, + "mandatory-failed":0, + "passed":0 + }, + "policy-tool-version": "0.54.0" + }, + "relationships":{ + "policy-evaluation":{ + "data":{ + "id":"poleval-8Jj9Hfoz892D9WMX", + "type":"policy-evaluations" + } + } + } + } + ], + "links":{ + "self":"/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX/policy-set-outcomes?page%5Bnumber%5D=1\u0026page%5Bsize%5D=20", + "first":"/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX/policy-set-outcomes?page%5Bnumber%5D=1\u0026page%5Bsize%5D=20", + "prev":null, + "next":null, + "last":"/api/v2/policy-evaluations/poleval-8Jj9Hfoz892D9WMX/policy-set-outcomes?page%5Bnumber%5D=1\u0026page%5Bsize%5D=20" + }, + "meta":{ + "pagination":{ + "current-page":1, + "page-size":20, + "prev-page":null, + "next-page":null, + "total-pages":1, + "total-count":1 + } + } +} +``` + +## Show a Policy Outcome + +`GET /policy-set-outcomes/:policy_set_outcome_id` + +| Parameter | Description | +| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `:policy_set_outcome_id` | The ID of the policy outcome to show. Refer to [List the Policy Outcomes](#list-policy-outcomes) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------------- | +| [200][] | [JSON API document][] | The request was successful | +| [404][] | [JSON API error object][] | Policy set outcome not found or user unauthorized to perform action | + +### Sample Request + +The following example request gets the outcomes for the `psout-cu8E9a97LBepZZXd` policy set. + +```shell +curl --request GET \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/policy-set-outcomes/psout-cu8E9a97LBepZZXd +``` + +### Sample Response + +The following example response shows that the `policyVCS` policy failed. + +```json +{ + "data":{ + "id":"psout-cu8E9a97LBepZZXd", + "type":"policy-set-outcomes", + "attributes":{ + "outcomes":[ + { + "enforcement_level":"advisory", + "query":"data.terraform.main.main", + "status":"failed", + "policy_name":"policyVCS", + "description":"" + } + ], + "error":"", + "overridable":true, + "policy-set-name":"opa-policies-vcs", + "policy-set-description":null, + "result-count":{ + "advisory-failed":1, + "errored":0, + "mandatory-failed":0, + "passed":0 + }, + "policy-tool-version": "0.54.0" + }, + "relationships":{ + "policy-evaluation":{ + "data":{ + "id":"poleval-8Jj9Hfoz892D9WMX", + "type":"policy-evaluations" + } + } + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-set-params.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-set-params.mdx new file mode 100644 index 0000000000..4065a72ca9 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-set-params.mdx @@ -0,0 +1,290 @@ +--- +page_title: /parameters API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/parameters` endpoint to manage the + key/value pairs that Sentinel uses for policy checks. Read, create, update, + and delete parameters. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Policy set parameters API references + +[Sentinel parameters](/sentinel/docs/language/parameters) are a list of key/value pairs that HCP Terraform sends to the Sentinel runtime when performing policy checks on workspaces. They can help you avoid hardcoding sensitive parameters into a policy. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Parameters are only available for Sentinel policies. This set of APIs provides endpoints to create, update, list and delete parameters. + +## Create a Parameter + +`POST /policy-sets/:policy_set_id/parameters` + +| Parameter | Description | +| ---------------- | ---------------------------------------------------- | +| `:policy_set_id` | The ID of the policy set to create the parameter in. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"vars"`. | +| `data.attributes.key` | string | | The name of the parameter. | +| `data.attributes.value` | string | `""` | The value of the parameter. | +| `data.attributes.category` | string | | The category of the parameters. Must be `"policy-set"`. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. If true then the parameter is written once and not visible thereafter. | + +### Sample Payload + +```json +{ + "data": { + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "category":"policy-set", + "sensitive":false + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-EavQ1LztoRTQHSNT", + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "sensitive":false, + "category":"policy-set" + }, + "relationships": { + "configurable": { + "data": { + "id":"pol-u3S5p2Uwk21keu1s", + "type":"policy-sets" + }, + "links": { + "related":"/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s" + } + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters/var-EavQ1LztoRTQHSNT" + } + } +} +``` + +## List Parameters + +`GET /policy-sets/:policy_set_id/parameters` + +| Parameter | Description | +| ---------------- | ------------------------------------------------ | +| `:policy_set_id` | The ID of the policy set to list parameters for. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 parameters per page. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ +"https://app.terraform.io/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters" +``` + +### Sample Response + +```json +{ + "data": [ + { + "id":"var-AD4pibb9nxo1468E", + "type":"vars", + "attributes": { + "key":"name", + "value":"hello", + "sensitive":false, + "category":"policy-set", + }, + "relationships": { + "configurable": { + "data": { + "id":"pol-u3S5p2Uwk21keu1s", + "type":"policy-sets" + }, + "links": { + "related":"/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s" + } + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters/var-AD4pibb9nxo1468E" + } + } + ] +} +``` + +## Update Parameters + +`PATCH /policy-sets/:policy_set_id/parameters/:parameter_id` + +| Parameter | Description | +| ---------------- | ------------------------------------------------- | +| `:policy_set_id` | The ID of the policy set that owns the parameter. | +| `:parameter_id` | The ID of the parameter to be updated. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------- | ------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.id` | string | | The ID of the parameter to update. | +| `data.attributes` | object | | New attributes for the parameter. This object can include `key`, `value`, `category` and `sensitive` properties, which are described above under [create a parameter](#create-a-parameter). All of these properties are optional; if omitted, a property will be left unchanged. | + +### Sample Payload + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "attributes": { + "key":"name", + "value":"mars", + "category":"policy-set", + "sensitive": false + }, + "type":"vars" + } +} +``` + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters/var-yRmifb4PJj7cLkMG +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "type":"vars", + "attributes": { + "key":"name", + "value":"mars", + "sensitive":false, + "category":"policy-set", + }, + "relationships": { + "configurable": { + "data": { + "id":"pol-u3S5p2Uwk21keu1s", + "type":"policy-sets" + }, + "links": { + "related":"/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s" + } + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters/var-yRmifb4PJj7cLkMG" + } + } +} +``` + +## Delete Parameters + +`DELETE /policy-sets/:policy_set_id/parameters/:parameter_id` + +| Parameter | Description | +| ---------------- | ------------------------------------------------- | +| `:policy_set_id` | The ID of the policy set that owns the parameter. | +| `:parameter_id` | The ID of the parameter to be deleted. | + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/policy-sets/polset-u3S5p2Uwk21keu1s/parameters/var-yRmifb4PJj7cLkMG +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-sets.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-sets.mdx new file mode 100644 index 0000000000..a0e73b0a9e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/policy-sets.mdx @@ -0,0 +1,1298 @@ +--- +page_title: /policy-sets API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/policy-sets` endpoint to read, create, + delete, update and version Sentinel and OPA policy sets. Also, attach, + exclude, and detach policy sets to workspaces and projects. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Policy sets API reference + +[Policy Enforcement](/terraform/enterprise/policy-enforcement) lets you use the policy-as-code frameworks Sentinel and Open Policy Agent (OPA) to apply policy checks to HCP Terraform workspaces. + +[Policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) are collections of policies that you can apply globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces. For each run in the selected workspaces, HCP Terraform checks the Terraform plan against the policy set. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +This API provides endpoints to create, read, update, and delete policy sets in an HCP Terraform organization. To view and manage individual policies, use the [Policies API](/terraform/enterprise/api-docs/policies). + +Many of these endpoints let you create policy sets from a designated repository in a Version Control System (VCS). For more information about how to configure a policy set VCS repository, refer to [Sentinel Policy Set VCS Repositories](/terraform/enterprise/policy-enforcement/sentinel/vcs) and [OPA Policy Set VCS Repositories](/terraform/enterprise/policy-enforcement/opa/vcs). + +Instead of connecting HCP Terraform to a VCS repository, you can use the the [Policy Set Versions endpoint](#create-a-policy-set-version) to create an entire policy set from a `tar.gz` file. + +Interacting with policy sets requires permission to manage policies. ([More about permissions](/terraform/enterprise/users-teams-organizations/permissions).) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Create a policy set + +`POST /organizations/:organization_name/policy-sets` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The organization to create the policy set in. The organization must already exist in the system, and the token authenticating the API request must have permission to manage policies. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | --------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "policy-sets"`) | Successfully created a policy set | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------------------------------- | -------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"policy-sets"`. | +| `data.attributes.name` | string | | The name of the policy set. Can include letters, numbers, `-`, and `_`. | +| `data.attributes.description` | string | `null` | Text describing the policy set's purpose. This field supports Markdown and appears in the HCP Terraform UI. | +| `data.attributes.global` | boolean | `false` | Whether HCP Terraform should automatically apply this policy set to all of an organization's workspaces. | +| `data.attributes.kind` | string | `sentinel` | The policy-as-code framework associated with the policy. Valid values are `sentinel` and `opa`. | +| `data.attributes.overridable` | boolean | `false` | Whether or not users can override this policy when it fails during a run. Valid for sentinel policies only if `agent-enabled` is set to `true`. | +| `data.attributes.vcs-repo` | object | `null` | VCS repository information. When present, HCP Terraform sources the policies and configuration from the specified VCS repository. This attribute and `policies` relationships are mutually exclusive, and you cannot use them simultaneously. | +| `data.attributes.vcs-repo.branch` | string | `null` | The branch of the VCS repository where HCP Terraform should retrieve the policy set. If empty, HCP Terraform uses the default branch. | +| `data.attributes.vcs-repo.identifier` | string | | The VCS repository identifier in the format `<namespace>/<repo>`. For example, `hashicorp/my-policy-set`. The format for Azure DevOps is `<org>/<project>/_git/<repo>`. | +| `data.attributes.vcs-repo.oauth-token-id` | string | | The OAuth Token ID HCP Terraform should use to connect to the VCS host. This value must not be specified if `github-app-installation-id` is specified. | +| `data.attributes.vcs-repo.github-app-installation-id` | string | | The VCS Connection GitHub App Installation to use. Find this ID on the account settings page. Requires previously authorizing the GitHub App and generating a user-to-server token. Manage the token from **Account Settings** within HCP Terraform. You can not specify this value if `oauth-token-id` is specified. | +| `data.attributes.vcs-repo.ingress-submodules` | boolean | `false` | Whether HCP Terraform should instantiate repository submodules when retrieving the policy set. | +| `data.attributes.policies-path` | string | `null` | The VCS repository subdirectory that contains the policies for this policy set. HCP Terraform ignores files and directories outside of this sub-path and does not update the policy set when those files change. This attribute is only valid when you specify a VCS repository for the policy set. | +| `data.relationships.projects.data[]` | array\[object] | `[]` | A list of resource identifier objects that defines which projects are associated with the policy set. These objects must contain `id` and `type` properties, and the `type` property must be `projects`. For example, `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`. You can only specify this attribute when `data.attributes.global` is `false`. | +| `data.relationships.workspaces.data[]` | array\[object] | `[]` | A list of resource identifier objects that defines which workspaces are associated with the policy set. These objects must contain `id` and `type` properties, and the `type` property must be `workspaces`. For example, `{ "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" }`. Obtain workspace IDs from the [workspace's settings page](/terraform/enterprise/workspaces/settings) or the [Show Workspace endpoint](/terraform/enterprise/api-docs/workspaces#show-workspace). You can only specify this attribute when `data.attributes.global` is `false`. | +| `data.relationships.workspace-exclusions.data[]` | array\[object] | `[]` | A list of resource identifier objects specifying which workspaces HCP Terraform excludes from a policy set's enforcement. These objects must contain `id` and `type` properties, and the `type` property must be `workspaces`. For example, `{ "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" }`. | +| `data.relationships.policies.data[]` | array\[object] | `[]` | A list of resource identifier objects that defines which policies are members of the policy set. These objects must contain `id` and `type` properties, and the `type` property must be `policies`. For example, `{ "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" }`. | +| `data.attributes.agent-enabled` | boolean | `false` | Only valid for `sentinel` policy sets. Whether this policy set should run as a policy evaluation in the HCP Terraform agent. | +| `data.attributes.policy-tool-version` | string | `latest` | The version of the tool that HCP Terraform uses to evaluate policies. You can only set a policy tool version for 'sentinel' policy sets if `agent-enabled` is `true`. | + +### Sample Payload + +```json +{ + "data": { + "type": "policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "global": false, + "kind": "sentinel", + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "policies-path": "/policy-sets/foo", + "vcs-repo": { + "branch": "main", + "identifier": "hashicorp/my-policy-sets", + "ingress-submodules": false, + "oauth-token-id": "ot-7Fr9d83jWsi8u23A" + } + }, + "relationships": { + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + }, + "workspace-exclusions": { + "data": [ + { "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" } + ] + } + } + } +} +``` + +### Sample payload with individual policy relationships + +```json +{ + "data": { + "type": "policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true + }, + "relationships": { + "policies": { + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/policy-sets +``` + +### Sample Response + +```json +{ + "data": { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "workspace-count": 1, + "policies-path": "/policy-sets/foo", + "versioned": true, + "vcs-repo": { + "branch": "main", + "identifier": "hashicorp/my-policy-sets", + "ingress-submodules": false, + "oauth-token-id": "ot-7Fr9d83jWsi8u23A" + }, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + }, + "workspace-exclusions": { + "data": [ + { "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" } + ] + }, + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + } +} +``` + +### Sample response with individual policy relationships + +```json +{ + "data": { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "policy-count": 1, + "workspace-count": 1, + "versioned": false, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policies": { + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + } +} +``` + +## List policy sets + +`GET /organizations/:organization_name/policy-sets` + +| Parameter | Description | +| -------------------- | ----------------------------------------- | +| `:organization_name` | The organization to list policy sets for. | + +| Status | Response | Reason | +| ------- | --------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policy-sets"`) | Request was successful | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `filter[versioned]` | **Optional.** Allows filtering policy sets based on whether they are versioned (VCS-managed or API-managed), or use individual policy relationships. Accepts a boolean true/false value. A `true` value returns versioned sets, and a `false` value returns sets with individual policy relationships. If omitted, all policy sets are returned. | +| `filter[kind]` | **Optional.** If specified, restricts results to those with the matching policy kind value. Valid values are `sentinel` and `opa`. | +| `include` | **Optional.** Enables you to include related resource data. Value must be a comma-separated list containing one or more of `projects`, `workspaces`, `workspace-exclusions`, `policies`, `newest_version`, or `current_version`. See the [relationships section](#relationships) for details. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 policy sets per page. | +| `search[name]` | **Optional.** Allows searching the organization's policy sets by name. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-organization/policy-sets +``` + +### Sample Response + +```json +{ + "data": [ + { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "workspace-count": 1, + "policies-path": "/policy-sets/foo", + "versioned": true, + "vcs-repo": { + "branch": "main", + "identifier": "hashicorp/my-policy-sets", + "ingress-submodules": false, + "oauth-token-id": "ot-7Fr9d83jWsi8u23A" + }, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + }, + "workspace-exclusions": { + "data": [ + { "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" } + ] + }, + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + } + ] +} +``` + +### Sample response with individual policy relationships + +```json +{ + "data": [ + { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "policy-count": 1, + "workspace-count": 1, + "versioned": false, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policies": { + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + }, + ] +} +``` + +## Show a policy set + +`GET /policy-sets/:id` + +| Parameter | Description | +| --------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to show. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | --------------------------------------------- | ----------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policy-sets"`) | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | + +| Parameter | Description | +| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `include` | **Optional.** Enables you to include related resource data. Value must be a comma-separated list containing one or more of `projects`, `workspaces`, `workspace-exclusions`, `policies`, `newest_version`, or `current_version`. See the [relationships section](#relationships) for details. | + +### Sample Request + +```shell +curl --request GET \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1?include=current_version +``` + +### Sample Response + +```json +{ + "data": { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "policy-count": 0, + "workspace-count": 1, + "policies-path": "/policy-sets/foo", + "versioned": true, + "vcs-repo": { + "branch": "main", + "identifier": "hashicorp/my-policy-sets", + "ingress-submodules": false, + "oauth-token-id": "ot-7Fr9d83jWsi8u23A" + }, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "current-version": { + "data": { + "id": "polsetver-m4yhbUBCgyDVpDL4", + "type": "policy-set-versions" + } + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + }, + "workspace-exclusions": { + "data": [ + { "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" } + ] + }, + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + }, + "included": [ + { + "id": "polsetver-m4yhbUBCgyDVpDL4", + "type": "policy-set-versions", + "attributes": { + "source": "github", + "status": "ready", + "status-timestamps": { + "ready-at": "2019-06-21T21:29:48+00:00", + "ingressing-at": "2019-06-21T21:29:47+00:00" + }, + "error": null, + "ingress-attributes": { + "commit-sha": "8766a423cb902887deb0f7da4d9beaed432984bb", + "commit-url": "https://github.com/hashicorp/my-policy-sets/commit/8766a423cb902887deb0f7da4d9beaed432984bb", + "identifier": "hashicorp/my-policy-sets" + }, + "created-at": "2019-06-21T21:29:47.792Z", + "updated-at": "2019-06-21T21:29:48.887Z" + }, + "relationships": { + "policy-set": { + "data": { + "id": "polset-a2mJwtmKygrA11dh", + "type": "policy-sets" + } + } + }, + "links": { + "self": "/api/v2/policy-set-versions/polsetver-E4S7jz8HMjBienLS" + } + } + ] +} +``` + +### Sample response with individual policy relationships + +```json +{ + "data": { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "production", + "description": "This set contains policies that should be checked on all production infrastructure workspaces.", + "kind": "sentinel", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "policy-count": 1, + "workspace-count": 1, + "versioned": false, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z", + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policies": { + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + } +} +``` + +-> **Note:** The `data.relationships.projects` and `data.relationships.workspaces` refer to the projects and workspaces attached to the policy set. HCP Terraform omits these keys for policy sets marked as global, which are implicitly related to all of the organization's workspaces. + +## Update a policy set + +`PATCH /policy-sets/:id` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to update. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | --------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policy-sets"`) | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------------------- | -------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"policy-sets"`. | +| `data.attributes.name` | string | (previous value) | The name of the policy set. Can include letters, numbers, `-`, and `_`. | +| `data.attributes.description` | string | (previous value) | A description of the set's purpose. This field supports markdown and appears in the HCP Terraform UI. | +| `data.attributes.global` | boolean | (previous value) | Whether or not the policies in this set should be checked in all of the organization's workspaces or only in workspaces directly attached to the set. | +| `data.attributes.vcs-repo` | object | (previous value) | VCS repository information. When present, HCP Terraform sources the policies and configuration from the specified VCS repository instead of using definitions from HCP Terraform. Note that this option and `policies` relationships are mutually exclusive and may not be used simultaneously. | +| `data.attributes.vcs-repo.branch` | string | (previous value) | The branch of the VCS repo. When empty, HCP Terraform uses the VCS provider's default branch value. | +| `data.attributes.vcs-repo.identifier` | string | (previous value) | The VCS repository identifier in the the following format: `<namespace>/<repo>`. An example identifier in GitHub is `hashicorp/my-policy-set`. The format for Azure DevOps is `<org>/<project>/_git/<repo>`. | +| `data.attributes.vcs-repo.oauth-token-id` | string | (previous value) | The OAuth token ID to use to connect to the VCS host. | +| `data.attributes.vcs-repo.ingress-submodules` | boolean | (previous value) | Determines whether HCP Terraform instantiates repository submodules during the clone operation. | +| `data.attributes.policies-path` | boolean | (previous value) | The subdirectory of the attached VCS repository that contains the policies for this policy set. HCP Terraform ignores files and directories outside of the sub-path. Changes to the unrelated files do not update the policy set. You can only enable this option when a VCS repository is present. | +| `data.relationships.projects` | array\[object] | (previous value) | An array of references to projects that the policy set should be assigned to. Sending an empty array clears all project assignments. You can only specify this attribute when `data.attributes.global` is `false`. | +| `data.relationships.workspaces` | array\[object] | (previous value) | An array of references to workspaces that the policy set should be assigned to. Sending an empty array clears all workspace assignments. You can only specify this attribute when `data.attributes.global` is `false`. | +| `data.relationships.workspace-exclusions` | array\[object] | (previous value) | An array of references to excluded workspaces that HCP Terraform will not enforce this policy set upon. Sending an empty array clears all exclusions assignments. | +| `data.attributes.agent-enabled` | boolean | `false` | Only valid for `sentinel` policy sets. Whether this policy set should run as a policy evaluation in the HCP Terraform agent. | +| `data.attributes.policy-tool-version` | string | `latest` | The version of the tool that HCP Terraform uses to evaluate policies. You can only set a policy tool version for 'sentinel' policy sets if `agent-enabled` is `true`. | + +### Sample Payload + +```json +{ + "data": { + "type": "policy-sets", + "attributes": { + "name": "workspace-scoped-policy-set", + "description": "Policies added to this policy set will be enforced on specified workspaces", + "global": false, + "agent-enabled": true, + "policy-tool-version": "0.23.0" + }, + "relationships": { + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + }, + "workspace-exclusions": { + "data": [ + { "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" } + ] + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1 +``` + +### Sample Response + +```json +{ + "data": { + "id":"polset-3yVQZvHzf5j3WRJ1", + "type":"policy-sets", + "attributes": { + "name": "workspace-scoped-policy-set", + "description": "Policies added to this policy set will be enforced on specified workspaces", + "global": false, + "kind": "sentinel", + "agent-enabled": true, + "policy-tool-version": "0.23.0", + "overridable": true, + "policy-count": 1, + "workspace-count": 1, + "versioned": false, + "created-at": "2018-09-11T18:21:21.784Z", + "updated-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "organization": { + "data": { "id": "my-organization", "type": "organizations" } + }, + "policies": { + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" } + ] + }, + "projects": { + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" } + ] + }, + "workspaces": { + "data": [ + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] + }, + "workspace-exclusions": { + "data": [ + { "id": "ws-FVVvzCDaykN1oHiw", "type": "workspaces" } + ] + } + }, + "links": { + "self":"/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1" + } + } +} +``` + +## Add policies to the policy set + +`POST /policy-sets/:id/relationships/policies` + +| Parameter | Description | +| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to add policies to. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more policies not found, wrong types, etc.) | + +~> **Note:** This endpoint may only be used when there is no VCS repository associated with the policy set. + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data[]` | array\[object] | | A list of resource identifier objects that defines which policies will be added to the set. These objects must contain `id` and `type` properties, and the `type` property must be `policies` (e.g. `{ "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" }`). | + +### Sample Payload + +```json +{ + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" }, + { "id": "pol-2HRvNs49EWPjDqT1", "type": "policies" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/policies +``` + +## Attach a policy set to projects + +`POST /policy-sets/:id/relationships/projects` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to attach to projects. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +-> **Note:** You can not attach global policy sets to individual projects. + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------- | +| [204][] | Nothing | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more projects not found, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines which projects to attach the policy set to. These objects must contain `id` and `type` properties, and the `type` property must be `projects` (e.g. `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`). | + +### Sample Payload + +```json +{ + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }, + { "id": "prj-2HRvNs49EWPjDqT1", "type": "projects" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/projects +``` + +## Attach a policy set to workspaces + +`POST /policy-sets/:id/relationships/workspaces` + +| Parameter | Description | +| --------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to attach to workspaces. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +-> **Note:** Policy sets marked as global cannot be attached to individual workspaces. + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more workspaces not found, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines the workspaces the policy set will be attached to. These objects must contain `id` and `type` properties, and the `type` property must be `workspaces` (e.g. `{ "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" }`). | + +### Sample Payload + +```json +{ + "data": [ + { "id": "ws-u3S5p2Uwk21keu1s", "type": "workspaces" }, + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/workspaces +``` + +## Exclude a workspace from a policy set + +`POST /policy-sets/:id/relationships/workspace-exclusions` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:id` | The ID of a policy set that you want HCP Terraform to exclude from the workspaces you specify. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more excluded workspaces not found, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines the excluded workspaces the policy set will be attached to. These objects must contain `id` and `type` properties, and the `type` property must be `workspaces` (e.g. `{ "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" }`). | + +### Sample Payload + +```json +{ + "data": [ + { "id": "ws-u3S5p2Uwk21keu1s", "type": "workspaces" }, + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/workspace-exclusions +``` + +## Remove policies from the policy set + +`DELETE /policy-sets/:id/relationships/policies` + +| Parameter | Description | +| --------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to remove policies from. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (wrong types, etc.) | + +~> **Note:** This endpoint may only be used when there is no VCS repository associated with the policy set. + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines which policies will be removed from the set. These objects must contain `id` and `type` properties, and the `type` property must be `policies` (e.g. `{ "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" }`). | + +### Sample Payload + +```json +{ + "data": [ + { "id": "pol-u3S5p2Uwk21keu1s", "type": "policies" }, + { "id": "pol-2HRvNs49EWPjDqT1", "type": "policies" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/policies +``` + +## Detach a policy set from projects + +`DELETE /policy-sets/:id/relationships/projects` + +| Parameter | Description | +| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set you want to detach from the specified projects. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +-> **Note:** You can not attach global policy sets to individual projects. + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------- | +| [204][] | Nothing | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (one or more projects not found, wrong types, etc.) | + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines the projects the policy set will be detached from. These objects must contain `id` and `type` properties, and the `type` property must be `projects`. For example, `{ "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }`. | + +### Sample Payload + +```json +{ + "data": [ + { "id": "prj-AwfuCJTkdai4xj9w", "type": "projects" }, + { "id": "prj-2HRvNs49EWPjDqT1", "type": "projects" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/projects +``` + +## Detach the policy set from workspaces + +`DELETE /policy-sets/:id/relationships/workspaces` + +| Parameter | Description | +| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to detach from workspaces. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +-> **Note:** Policy sets marked as global cannot be detached from individual workspaces. + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (wrong types, etc.) | + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines which workspaces the policy set will be detached from. These objects must contain `id` and `type` properties, and the `type` property must be `workspaces` (e.g. `{ "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" }`). Obtain workspace IDs from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +### Sample Payload + +```json +{ + "data": [ + { "id": "ws-u3S5p2Uwk21keu1s", "type": "workspaces" }, + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/workspaces +``` + +## Reinclude a workspace to a policy set + +`DELETE /policy-sets/:id/relationships/workspace-exclusions` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:id` | The ID of the policy set HCP Terraform should reinclude (enforce) on the specified workspaces. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (wrong types, etc.) | + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | -------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data[]` | array\[object] | | A list of resource identifier objects that defines which workspaces HCP Terraform should reinclude (enforce) this policy set on. These objects must contain `id` and `type` properties, and the `type` property must be `workspaces` (e.g. `{ "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" }`). Obtain workspace IDs from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +### Sample Payload + +```json +{ + "data": [ + { "id": "ws-u3S5p2Uwk21keu1s", "type": "workspaces" }, + { "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" } + ] +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/relationships/workspace-exclusions +``` + +## Delete a policy set + +`DELETE /policy-sets/:id` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the policy set to delete. Refer to [List Policy Sets](#list-policy-sets) for reference information about finding IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------ | +| [204][] | No Content | Successfully deleted the policy set | +| [404][] | [JSON API error object][] | Policy set not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1 +``` + +## Create a policy set version + +For versioned policy sets which have no VCS repository attached, versions of policy code may be uploaded directly to the API by creating a new policy set version and, in a subsequent request, uploading a tarball (tar.gz) of data to it. + +`POST /policy-sets/:id/versions` + +| Parameter | Description | +| --------- | ----------------------------------------------------- | +| `:id` | The ID of the policy set to create a new version for. | + +| Status | Response | Reason | +| ------- | ----------------------------------------------------- | ----------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "policy-set-versions"`) | The request was successful. | +| [404][] | [JSON API error object][] | Policy set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | The policy set does not support uploading versions. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/policy-sets/polset-3yVQZvHzf5j3WRJ1/versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "polsetver-cXciu9nQwmk9Cfrn", + "type": "policy-set-versions", + "attributes": { + "source": "tfe-api", + "status": "pending", + "status-timestamps": {}, + "error": null, + "created-at": "2019-06-28T23:53:15.875Z", + "updated-at": "2019-06-28T23:53:15.875Z" + }, + "relationships": { + "policy-set": { + "data": { + "id": "polset-ws1CZBzm2h5K6ZT5", + "type": "policy-sets" + } + } + }, + "links": { + "self": "/api/v2/policy-set-versions/polsetver-cXciu9nQwmk9Cfrn", + "upload": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6NWJPbHQ4QjV4R1ox..." + } + } +} +``` + +The `upload` link URL in the above response is valid for one hour after creation. Make a `PUT` request to this URL directly, sending the policy set contents in `tar.gz` format as the request body. Once uploaded successfully, you can request the [Show Policy Set](#show-a-policy-set) endpoint again to verify that the status has changed from `pending` to `ready`. + +## Upload policy set versions + +`PUT https://archivist.terraform.io/v1/object/<UNIQUE OBJECT ID>` + +The URL is provided in the `upload` attribute in the `policy-set-versions` resource. + +### Sample Request + +In the example below, `policy-set.tar.gz` is the local filename of the policy set version file to upload. + +```shell +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @policy-set.tar.gz \ + https://archivist.terraform.io/v1/object/dmF1bHQ6djE6NWJPbHQ4QjV4R1ox... +``` + +## Show a policy set version + +`GET /policy-set-versions/:id` + +| Parameter | Description | +| --------- | ----------------------------------------- | +| `:id` | The ID of the policy set version to show. | + +| Status | Response | Reason | +| ------- | ----------------------------------------------------- | ------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "policy-set-versions"`) | The request was successful. | +| [404][] | [JSON API error object][] | Policy set version not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --request GET \ + https://app.terraform.io/api/v2/policy-set-versions/polsetver-cXciu9nQwmk9Cfrn +``` + +### Sample Response + +```json +{ + "data": { + "id": "polsetver-cXciu9nQwmk9Cfrn", + "type": "policy-set-versions", + "attributes": { + "source": "tfe-api", + "status": "pending", + "status-timestamps": {}, + "error": null, + "created-at": "2019-06-28T23:53:15.875Z", + "updated-at": "2019-06-28T23:53:15.875Z" + }, + "relationships": { + "policy-set": { + "data": { + "id": "polset-ws1CZBzm2h5K6ZT5", + "type": "policy-sets" + } + } + }, + "links": { + "self": "/api/v2/policy-set-versions/polsetver-cXciu9nQwmk9Cfrn", + "upload": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6NWJPbHQ4QjV4R1ox..." + } + } +} +``` + +The `upload` link URL in the above response is valid for one hour after the `created_at` timestamp of the policy set version. Make a `PUT` request to this URL directly, sending the policy set contents in `tar.gz` format as the request body. Once uploaded successfully, you can request the [Show Policy Set Version](#show-a-policy-set-version) endpoint again to verify that the status has changed from `pending` to `ready`. + +## Available related resources + +The GET endpoints above can optionally return related resources for policy sets, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `current_version` | The most recent **successful** policy set version. | +| `newest_version` | The most recently created policy set version, regardless of status. Note that this relationship may include an errored and unusable version, and is intended to allow checking for VCS errors. | +| `policies` | Individually managed policies which are associated with the policy set. | +| `projects` | The projects this policy set applies to. | +| `workspaces` | The workspaces this policy set applies to. | +| `workspace-exclusions` | The workspaces excluded from this policy set's enforcement. | + +The following resource types may be included for policy set versions: + +| Resource Name | Description | +| ------------- | ---------------------------------------------------------------- | +| `policy_set` | The policy set associated with the specified policy set version. | + +## Relationships + +The following relationships may be present in various responses for policy sets: + +| Resource Name | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `current-version` | The most recent **successful** policy set version. | +| `newest-version` | The most recently created policy set version, regardless of status. Note that this relationship may include an errored and unusable version, and is intended to allow checking for VCS errors. | +| `organization` | The organization associated with the specified policy set. | +| `policies` | Individually managed policies which are associated with the policy set. | +| `projects` | The projects this policy set applies to. | +| `workspaces` | The workspaces this policy set applies to. | +| `workspace-exclusions` | The workspaces excluded from this policy set's enforcement. | + +The following relationships may be present in various responses for policy set versions: + +| Resource Name | Description | +| ------------- | ---------------------------------------------------------------- | +| `policy-set` | The policy set associated with the specified policy set version. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/gpg-keys.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/gpg-keys.mdx new file mode 100644 index 0000000000..3386ea42c3 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/gpg-keys.mdx @@ -0,0 +1,388 @@ +--- +page_title: /gpg-keys API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/gpg-keys` endpoint to read, add, get, + update, and delete the GPG keys that HCP Terraform uses to sign private + providers. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# GPG keys API reference + +These endpoints are only relevant to private providers. When you [publish a private provider](/terraform/enterprise/registry/publish-providers) to the HCP Terraform private registry, you must upload the public key of the GPG key-pair that you used to sign the release. The HCP Terraform registry supports RSA or DSA formatted GPG keys. Refer to [Preparing and adding a signing key](/terraform/registry/providers/publishing#preparing-and-adding-a-signing-key) for more details. + +You need [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) or [Manage Private Registry](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) permissions to add, update, or delete GPG keys in a private registry. + +## List GPG Keys + +`GET /api/registry/:registry_name/v2/gpg-keys` + +### Parameters + +| Parameter | Description | +| ---------------- | ------------------ | +| `:registry_name` | Must be `private`. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling does not automatically encode URLs. + +| Parameter | Description | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter[namespace]` | **Required.** A comma-separated list of one or more namespaces. The namespaces must be an authorized HCP Terraform or Terraform Enterprise organization name. | +| `page[number]` | **Optional.** If omitted, the endpoint returns the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint returns 20 GPG keys per page. | + +Gets a list of GPG keys belonging to the specified namespaces. + +| Status | Response | Reason | +| ------- | ------------------------------------------ | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "gpg-keys"`) | Successfully fetched GPG keys | +| [400][] | [JSON API error object][] | Error - missing namespaces in request | +| [403][] | [JSON API error object][] | Forbidden - no authorized namespaces specified in request | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + "https://app.terraform.io/api/registry/private/v2/gpg-keys?filter%5Bnamespace%5D=my-organization,my-other-organization" +``` + +### Sample Response + +```json +{ + "data": [ + { + "type": "gpg-keys", + "id": "1", + "attributes": { + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----...", + "created-at": "2022-02-08T19:15:47Z", + "key-id": "C4E5E6C66C79C778", + "namespace": "my-other-organization", + "source": "", + "source-url": null, + "trust-signature": "", + "updated-at": "2022-02-08T19:15:47Z" + }, + "links": { + "self": "/v2/gpg-keys/1" + } + }, + { + "type": "gpg-keys", + "id": "140", + "attributes": { + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----...", + "created-at": "2022-04-28T21:32:11Z", + "key-id": "C4E5E6C66C79C778", + "namespace": "my-organization", + "source": "", + "source-url": null, + "trust-signature": "", + "updated-at": "2022-04-28T21:32:11Z" + }, + "links": { + "self": "/v2/gpg-keys/140" + } + } + ], + "links": { + "first": "/v2/gpg-keys?filter%5Bnamespace%5D=my-organization%2Cmy-other-organization&page%5Bnumber%5D=1&page%5Bsize%5D=15", + "last": "/v2/gpg-keys?filter%5Bnamespace%5D=my-organization%2Cmy-other-organization&page%5Bnumber%5D=1&page%5Bsize%5D=15", + "next": null, + "prev": null + }, + "meta": { + "pagination": { + "page-size": 15, + "current-page": 1, + "next-page": null, + "prev-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} +``` + +## Add a GPG Key + +`POST /api/registry/:registry_name/v2/gpg-keys` + +### Parameters + +| Parameter | Description | +| ---------------- | ------------------ | +| `:registry_name` | Must be `private`. | + +Uploads a GPG Key to a private registry scoped with a namespace. The response will provide a "key-id", which is required to [Create a Provider Version](/terraform/enterprise/api-docs/private-registry/provider-versions-platforms#create-a-provider-version). + +| Status | Response | Reason | +| ------- | ------------------------------------------ | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "gpg-keys"`) | Successfully uploads a GPG key to a private provider | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - not available for public providers | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | -------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"gpg-keys"`. | +| `data.attributes.namespace` | string | | The namespace of the provider. Must be the same as the `organization_name` for the provider. | +| `data.attributes.ascii-armor` | string | | A valid gpg-key string. | + +### Sample Payload + +```json +{ + "data": { + "type": "gpg-keys", + "attributes": { + "namespace": "hashicorp", + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n" + } } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/registry/private/v2/gpg-keys +``` + +### Sample Response + +```json +{ + "data": { + "type": "gpg-keys", + "id": "23", + "attributes": { + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n", + "created-at": "2022-02-11T19:16:59Z", + "key-id": "32966F3FB5AC1129", + "namespace": "hashicorp", + "source": "", + "source-url": null, + "trust-signature": "", + "updated-at": "2022-02-11T19:16:59Z" + }, + "links": { + "self": "/v2/gpg-keys/23" + } + } +} +``` + +## Get GPG Key + +`GET /api/registry/:registry_name/v2/gpg-keys/:namespace/:key_id` + +### Parameters + +| Parameter | Description | +| ---------------- | ---------------------------------------------------- | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider scoped to the GPG key. | +| `:key_id` | The id of the GPG key. | + +Gets the content of a GPG key. + +| Status | Response | Reason | +| ------- | ------------------------------------------ | ---------------------------------------------- | +| [200][] | [JSON API document][] (`type: "gpg-keys"`) | Successfully fetched GPG key | +| [403][] | [JSON API error object][] | Forbidden - not available for public providers | +| [404][] | [JSON API error object][] | GPG key not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/registry/private/v2/gpg-keys/hashicorp/32966F3FB5AC1129 +``` + +### Sample Response + +```json +{ + "data": { + "type": "gpg-keys", + "id": "2", + "attributes": { + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n", + "created-at": "2022-02-24T17:07:25Z", + "key-id": "32966F3FB5AC1129", + "namespace": "hashicorp", + "source": "", + "source-url": null, + "trust-signature": "", + "updated-at": "2022-02-24T17:07:25Z" + }, + "links": { + "self": "/v2/gpg-keys/2" + } + } +} +``` + +## Update a GPG Key + +`PATCH /api/registry/:registry_name/v2/gpg-keys/:namespace/:key_id` + +### Parameters + +| Parameter | Description | +| ---------------- | ---------------------------------------------------- | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider scoped to the GPG key. | +| `:key_id` | The id of the GPG key. | + +Updates the specified GPG key. Only the `namespace` attribute can be updated, and `namespace` has to match an `organization` the user has permission to access. + +| Status | Response | Reason | +| ------- | ------------------------------------------ | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "gpg-keys"`) | Successfully updates a GPG key | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - not available for public providers | +| [404][] | [JSON API error object][] | GPG key not found or user not authorized | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------- | ------ | ------- | -------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"gpg-keys"`. | +| `data.attributes.namespace` | string | | The namespace of the provider. Must be the same as the `organization_name` for the provider. | + +### Sample Payload + +```json +{ + "data": { + "type": "gpg-keys", + "attributes": { + "namespace": "new-namespace", + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/registry/private/v2/gpg-keys/hashicorp/32966F3FB5AC1129 +``` + +### Sample Response + +```json +{ + "data": { + "type": "gpg-keys", + "id": "2", + "attributes": { + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n", + "created-at": "2022-02-24T17:07:25Z", + "key-id": "32966F3FB5AC1129", + "namespace": "new-name", + "source": "", + "source-url": null, + "trust-signature": "", + "updated-at": "2022-02-24T17:12:10Z" + }, + "links": { + "self": "/v2/gpg-keys/2" + } + } +} +``` + +## Delete a GPG Key + +`DELETE /api/registry/:registry_name/v2/gpg-keys/:namespace/:key_id` + +### Parameters + +| Parameter | Description | +| ---------------- | ---------------------------------------------------- | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider scoped to the GPG key. | +| `:key_id` | The id of the GPG key. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------------------------ | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "gpg-keys"`) | Successfully deletes a GPG key | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - not available for public providers | +| [404][] | [JSON API error object][] | GPG key not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/registry/private/v2/gpg-keys/hashicorp/32966F3FB5AC1129 +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/manage-module-versions.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/manage-module-versions.mdx new file mode 100644 index 0000000000..7fe7e2a61b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/manage-module-versions.mdx @@ -0,0 +1,531 @@ +--- +page_title: Manage module versions API reference for Terraform Enterprise +description: >- + Use these module management endpoints to deprecate, revoke, and revert the + status of module versions you published to an organization's private registry. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[503]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Manage module versions API reference + +Use the module version management API endpoints to deprecate, revoke, and revert of status of module versions in your organization’s private registry. + +<>{/* TODO: remove revoke references here */}</> + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include "tfc-package-callouts/manage-module-versions.mdx" + +<!-- END: TFC:only name:pnp-callout --> + +## Overview + +<>{/* TODO: remove revoke references here */}</> + +As part of the module lifecycle, you can deprecate or revoke older module versions as you stop supporting them, signaling to module consumers that they need to upgrade to newer versions. + +When you deprecate a module version, HCP Terraform adds warnings to the module's registry page and to run outputs when anyone uses the deprecated version. After deprecating a module version, you can revert that deprecated status to remove the warnings from that version in the registry and outputs. + +<!-- BEGIN: TFC:only name:revoke --> + +Revoking a module version adds warnings to the module's registry page, warnings in the run outputs of existing users, and blocks new users from using that version. Reverting a module version’s revocation sets the module version back to a deprecated state. + +<!-- END: TFC:only name:revoke --> + +For more details on deprecating or revoking module versions, refer to [Manage module versions](/terraform/enterprise/registry/manage-module-versions). + +## Deprecate a module version + +Use this endpoint to deprecate a module version. + +`PATCH /api/v2/organizations/:organization_name/registry-modules/private/:organization_name/:module_name/:module_provider/:module_version` + +| Parameter | Description | +| :------------------- | :---------------------------------------------------------- | +| `:organization_name` | The name of the organization the module belongs to. | +| `:module_name` | The name of the module whose version you want to deprecate. | +| `:module_provider` | Specifies the Terraform provider that this module uses. | +| `:module_version` | The module version you want to deprecate. | + +This endpoint allows you to deprecate a specific module version. Deprecating a module version adds warnings to the run output of any consumers using this module. + +| Status | Response | Reason | +| :----------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- | +| [200](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200) | [JSON API document](http://terraform/cloud-docs/api-docs#json-api-documents) | Successfully deprecated a module version. | +| [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) | [JSON API error object](http://jsonapi.org/format/#error-objects) | This organization is not authorized to deprecate this module version, or the module version does not exist. | +| [422](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422) | [JSON API error object](http://jsonapi.org/format/#error-objects) | Malformed request body, for example the request is missing attributes or uses the wrong types. | +| [500](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) or [503](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503) | [JSON API error object](http://jsonapi.org/format/#error-objects) | Failure occurred while deprecating a module version. | + +### Sample payload + +```json +{ + "data": { + "type": "module-versions", + "attributes": { + "deprecation": { + "deprecated-status": "Deprecated", + "reason": "Deprecated due to a security vulnerability issue.", + "link": "https://www.hashicorp.com/" + } + } + } +} +``` + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ +https://app.terraform.io/api/v2/organizations/hashicorp/registry-modules/private/hashicorp/lb-http/google/11.0.0 +``` + +### Sample response + +```json +{ + "data": { + "type": "module-versions", + "id": "1", + "relationships": { + "deprecation": { + "data": { + "id": "2", + "type": "deprecations" + } + } + } + }, + "included": [ + { + "type": "deprecations", + "id": "2", + "attributes": { + "link": "https://www.hashicorp.com/", + "reason": "Deprecated due to a security vulnerability issue. Applies will be blocked in 15 days." + } + } + ] +} +``` + +## Revert the deprecation status for a module version + +Use this endpoint to revert the deprecation of a module version. + +`PATCH /api/v2/organizations/:organization_name/registry-modules/private/:organization_name/:module_name/:module_provider/:module_version` + +| Parameter | Description | +| :------------------- | :------------------------------------------------------------ | +| `:organization_name` | The name of the organization the module belongs to. | +| `:module_name` | The name of the module you want to revert the deprecation of. | +| `:module_provider` | Specifies the Terraform provider that this module uses. | +| `:module_version` | The module version you want to revert the deprecation of. | + +Deprecating a module version adds warnings to the run output of any consumers using this module. Reverting the deprecation status removes warnings from the output of consumers and fully reinstates the module version. + +| Status | Response | Reason | +| :--------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| [200](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200) | [JSON API document](http:///terraform/cloud-docs/api-docs#json-api-documents) | Successfully reverted a module version’s deprecation status and reinstated that version. | +| [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) | [JSON API error object](http://jsonapi.org/format/#error-objects) | This organization is not authorized to revert the depreciation of this module version, or the module version does not exist. | +| [422](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422) | [JSON API error object](http://jsonapi.org/format/#error-objects) | Malformed request body, for example the request is missing attributes or uses the wrong types. | +| [500](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) or [503] | [JSON API error object](http://jsonapi.org/format/#error-objects) | Failure occurred while reverting the deprecation of a module version. | + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ +https://app.terraform.io/api/v2/organizations/hashicorp/registry-modules/private/hashicorp/lb-http/google/11.0.0 +``` + +### Sample payload + +```json +{ + "data": { + "type": "module-versions", + "attributes": { + "deprecation": { + "deprecated-status": "Undeprecated" + } + } + } +} +``` + +### Sample response + +```json +{ + "data": { + "type": "module-versions", + "id": "1" + } +} +``` + +## Fetch a module version’s deprecation data + +Send a `GET` request to the `/modules/:github-organization/:module/:provider/versions` endpoint to retrieve data about private registry modules, including the module's deprecation status. Refer to the [private registry module API example](/terraform/enterprise/api-docs/private-registry/modules#sample-registry-request-private-module) for additional information. + +For example, if you want to know the deprecation status of v0.0.1 of the `aws` provider’s `consul` module in your `my-cloud-org` organization, you could perform the following API call: + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/registry/v1/modules/my-cloud-org/consul/aws/0.0.1 +``` + +If the module is deprecated, your response includes a `deprecation` key with the details of that module version’s deprecation. + +```json +{ + "id": "hashicorp/consul/aws/0.0.1", + "owner": "gruntwork-team", + "namespace": "hashicorp", + "name": "consul", + "version": "0.0.1", + "provider": "aws", + "description": "A Terraform Module for how to run Consul on AWS using Terraform and Packer" + // ... // + "deprecation": { + "reason": "This version was deprecated due to a vulnerability issue. Please upgrade to 0.0.2.", + "link": "https://hashicorp.com" + } +} +``` + +To check the deprecation status of all of the `consul` module’s versions, you could perform the following API call: + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/registry/v1/modules/my-cloud-org/consul/aws/versions +``` + +The response includes multiple versions, and each version has a `deprecation` key listing the details of that module’s deprecation. If a module version has not been deprecated, the `deprecation` field returns `null`. + +```json +{ + "modules": [ + { + "source": "hashicorp/consul/aws", + "versions": [ + { + "version": "0.0.1", + // ... // + "deprecation": { + "reason": "security vulnerability", + "link": "www.hashicorp.com" + } + }, + { + "version": "0.0.2", + "submodules": [], + "root": { + "dependencies": [], + "providers": [ + { + "name": "template", + "version": "" + }, + { + "name": "aws", + "version": "" + } + ] + }, + "deprecation": null + } + ] + } + ] +} +``` + +<!-- BEGIN: TFC:only name:revoke --> + +## Revoke a module version + +Use this endpoint to revoke a module version. You must [deprecate a module version](#deprecate-a-module-version) before you can revoke it. + +`PATCH /api/v2/organizations/:organization_name/registry-modules/private/:organization_name/:module_name/:module_provider/:module_version` + +| Parameter | Description | +| :------------------- | :------------------------------------------------------- | +| `:organization_name` | The name of the organization the module belongs to. | +| `:module_name` | The name of the module whose version you want to revoke. | +| `:module_provider` | Specifies the Terraform provider that this module uses. | +| `:module_version` | The module version you want to revoke. | + +This endpoint allows you to revoke a specific module version. Revoking a module version adds warnings to the run output of current consumers of this version and blocks new users from trying to use that version. + +| Status | Response | Reason | +| :----------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | +| [200](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200) | [JSON API document](http://terraform/cloud-docs/api-docs#json-api-documents) | Successfully revoked a module version. | +| [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) | [JSON API error object](http://jsonapi.org/format/#error-objects) | This organization is not authorized to revoke this module version, or the module version does not exist. | +| [422](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422) | [JSON API error object](http://jsonapi.org/format/#error-objects) | Malformed request body, for example the request is missing attributes or uses the wrong types. | +| [500](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) or [503](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503) | [JSON API error object](http://jsonapi.org/format/#error-objects) | Failure occurred while revoking a module version. | + +### Sample Payload + +```json +{ + "data": { + "type": "module-versions", + "attributes": { + "revocation": { + "status": "Revoked", + "message": "Revoked due to a security vulnerability issue.", + "link": "https://www.hashicorp.com/" + } + } + } +} +``` + +### Sample Request + +```shell-session +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ +https://app.terraform.io/api/v2/organizations/hashicorp/registry-modules/private/hashicorp/lb-http/google/11.0.0 +``` + +### Sample Response + +```json +{ + "data": { + "id": "modver-uKQCVs5vAKDmUMyw", + "type": "registry-module-versions", + "attributes": { + "source": "tfe-api", + "status": "ok", + "version": "11.0.0", + "commit-sha": null, + "branch": null, + "created-at": "2024-08-28T20:48:05.206Z", + "updated-at": "2024-08-28T20:48:09.175Z", + "revocation": { + "status": "Revoked", + "message": "Revoked due to a security vulnerability issue.", + "link": "https://www.hashicorp.com/" + } + }, + "relationships": { + "registry-module": { + "data": { + "id": "mod-yDKMcmJYx9oFrGao", + "type": "registry-modules" + } + } + }, + "links": { + "upload": "https://app.terraform.io/_archivist/v1/object/dmF1bHQ6djE6eElWekF3RH" + } + } +} +``` + +## Revert the revocation status for a module version + +Use this endpoint to revert the revocation of a module version. + +`PATCH /api/v2/organizations/:organization_name/registry-modules/private/:organization_name/:module_name/:module_provider/:module_version` + +| Parameter | Description | +| :------------------- | :----------------------------------------------------------- | +| `:organization_name` | The name of the organization the module belongs to. | +| `:module_name` | The name of the module you want to revert the revocation of. | +| `:module_provider` | Specifies the Terraform provider that this module uses. | +| `:module_version` | The module version you want to revert the revocation of. | + +When you revert the revocation of a module version, HCP Terraform sets that version as deprecated, signaling that it is still maintained and supported but not recommended. Deprecated module versions produce warnings in the registry and run outputs, but new users can still use them. + +| Status | Response | Reason | +| :--------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | +| [200](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200) | [JSON API document](http:///terraform/cloud-docs/api-docs#json-api-documents) | Successfully reverted a module version’s revocation status and deprecated that version. | +| [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) | [JSON API error object](http://jsonapi.org/format/#error-objects) | This organization is not authorized to revert the revocation of this module version, or the module version does not exist. | +| [422](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422) | [JSON API error object](http://jsonapi.org/format/#error-objects) | Malformed request body, for example the request is missing attributes or uses the wrong types. | +| [500](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) or [503] | [JSON API error object](http://jsonapi.org/format/#error-objects) | Failure occurred while reverting the revocation of a module version. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ +https://app.terraform.io/api/v2/organizations/hashicorp/registry-modules/private/hashicorp/lb-http/google/11.0.0 +``` + +### Sample payload + +```json +{ + "data": { + "type": "module-versions", + "attributes": { + "revocation": { + "status": "Unrevoked" + } + } + } +} +``` + +### Sample Response + +```json +{ + "data": { + "id": "modver-uKQCVs5vAKDmUMyw", + "type": "registry-module-versions", + "attributes": { + "source": "tfe-api", + "status": "ok", + "version": "11.0.0", + "commit-sha": null, + "branch": null, + "created-at": "2024-08-28T20:48:05.206Z", + "updated-at": "2024-08-28T20:48:09.175Z", + "revocation": { + "status": "Unrevoked", + } + }, + "relationships": { + "registry-module": { + "data": { + "id": "mod-yDKMcmJYx9oFrGao", + "type": "registry-modules" + } + } + }, + "links": { + "upload": "https://app.terraform.io/_archivist/v1/object/dmF1bHQ6djE6eElWekF3RH" + } + } +} +``` + +## Fetch data about a module version’s revocation + +Send a `GET` request to the `/organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider` endpoint to retrieve data about private registry modules, including the module's revocation status. Refer to the [private registry module API example](/terraform/enterprise/api-docs/private-registry/modules#get-a-module) for additional information. + +For example, if you want to know the revocation status of v0.0.1 of the `aws` provider’s `consul` module in your `my-cloud-org` organization, you could perform the following API call: + +```shell-session +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-cloud-org/registry-modules/private/my-cloud-org/consul/aws/version?module_version=1.0.0 +``` + +If the module is revoked, your response includes a `revocation` key with the details of that module version’s revocation. + +```json +{ + "data": { + "id": "modver-3tKAXyRnpGYCxW7d", + "type": "registry-module-versions", + "attributes": { + "source": "github", + "status": "ok", + "version": "1.0.0", + "commit-sha": "ea18e73d8da502870fdcbfc54155046bc0cf2679", + "branch": null, + "created-at": "2024-10-11T19:53:35.082Z", + "updated-at": "2024-10-11T19:53:38.782Z", + "revocation": { + "status": "revoked", + "message": "please upgrade to version 1.0.1", + "link": "https://github.com" + } + }, + "relationships": { + "registry-module": { + "data": { + "id": "mod-u8BFFruSTSz8dN4C", + "type": "registry-modules" + } + } + }, + "links": { + "upload": "https://archivist.terraform.io/v1/object/dmF1bHQ6djQ6V1pZWWwra1" + } + } +} +``` + +To check the revocation status of all of the `consul` module’s versions, you could perform the following API call: + +```shell-session +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-cloud-org/registry-modules/private/my-cloud-org/consul/aws +``` + +The response includes the revoked versions of this module in the `revoked-versions` key. + +```json +{ + "data": { + "id": "mod-u8BFFruSTSz8dN4C", + "type": "registry-modules", + "attributes": { + "name": "module", + "namespace": "my-cloud-org", + // ... // + "revoked-versions": [ + "1.0.0" + ], + // ... // + }, +} +``` + +<!-- END: TFC:only name:revoke --> diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/modules.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/modules.mdx new file mode 100644 index 0000000000..d5df734ece --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/modules.mdx @@ -0,0 +1,942 @@ +--- +page_title: /registry-modules API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/registry-modules` endpoint to read, + publish, update, delete, and add versions to modules in your organization's + private registry. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Registry modules API reference + +-> **Note:** Public Module Curation is only available in HCP Terraform. Where applicable, the `registry_name` parameter must be `private` for Terraform Enterprise. + +## HCP Terraform Registry Implementation + +The HCP Terraform Module Registry implements the [Registry standard API](/terraform/registry/api-docs) for consuming/exposing private modules. Refer to the [Module Registry HTTP API](/terraform/registry/api-docs) to perform the following: + +- Browse available modules +- Search modules by keyword +- List available versions for a specific module +- Download source code for a specific module version +- List latest version of a module for all providers +- Get the latest version for a specific module provider +- Get a specific module +- Download the latest version of a module + +For publicly curated modules, the HCP Terraform Module Registry acts as a proxy to the [Terraform Registry](https://registry.terraform.io) for the following: + +- List available versions for a specific module +- Get a specific module +- Get the latest version for a specific module provider + +The HCP Terraform Module Registry endpoints differs from the Module Registry endpoints in the following ways: + +- The `:namespace` parameter should be replaced with the organization name for private modules. +- The private module registry discovery endpoints have the path prefix provided in the [discovery document](/terraform/registry/api-docs#service-discovery) which is currently `/api/registry/v1`. +- The public module registry discovery endpoints have the path prefix provided in the [discovery document](/terraform/registry/api-docs#service-discovery) which is currently `/api/registry/public/v1`. +- [Authentication](/terraform/enterprise/api-docs#authentication) is handled the same as all other HCP Terraform endpoints. + +### Sample Registry Request (private module) + +List available versions for the `consul` module for the `aws` provider on the module registry published from the Github organization `my-gh-repo-org`: + +```shell +$ curl https://registry.terraform.io/v1/modules/my-gh-repo-org/consul/aws/versions +``` + +The same request for the same module and provider on the HCP Terraform module registry for the `my-cloud-org` organization: + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/registry/v1/modules/my-cloud-org/consul/aws/versions +``` + +### Sample Proxy Request (public module) + +List available versions for the `consul` module for the `aws` provider on the module registry published from the Github organization `my-gh-repo-org`: + +```shell +$ curl https://registry.terraform.io/v1/modules/my-gh-repo-org/consul/aws/versions +``` + +The same request for the same module and provider on the HCP Terraform module registry: + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/registry/public/v1/modules/my-gh-repo-org/consul/aws/versions +``` + +## List Registry Modules for an Organization + +`GET /organizations/:organization_name/registry-modules` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------ | +| `:organization_name` | The name of the organization to list available modules from. | + +Lists the modules that are available to a given organization. This includes the full list of publicly curated and private modules and is filterable. + +| Status | Response | Reason | +| ------- | -------------------------------------------------- | -------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-modules"`) | The request was successful | +| [404][] | [JSON API error object][] | Modules not found or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `q` | **Optional.** A search query string. Modules are searchable by name, namespace, provider fields. | +| `filter[field name]` | **Optional.** If specified, restricts results to those with the matching field name value. Valid values are `registry_name`, `provider`, and `organization_name`. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 registry modules per page. | + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "mod-kwt1cBiX2SdDz38w", + "type": "registry-modules", + "attributes": { + "name": "api-gateway", + "namespace": "my-organization", + "provider": "alicloud", + "status": "setup_complete", + "version-statuses": [ + { + "version": "1.1.0", + "status": "ok" + } + ], + "created-at": "2021-04-07T19:01:18.528Z", + "updated-at": "2021-04-07T19:01:19.863Z", + "registry-name": "private", + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/private/my-organization/api-gateway/alicloud" + } + }, + { + "id": "mod-PopQnMtYDCcd3PRX", + "type": "registry-modules", + "attributes": { + "name": "aurora", + "namespace": "my-organization", + "provider": "aws", + "status": "setup_complete", + "version-statuses": [ + { + "version": "4.1.0", + "status": "ok" + } + ], + "created-at": "2021-04-07T19:04:41.375Z", + "updated-at": "2021-04-07T19:04:42.828Z", + "registry-name": "private", + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/private/my-organization/aurora/aws" + } + }, + ..., + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/registry-modules?page%5Bnumber%5D=1&page%5Bsize%5D=6", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/registry-modules?page%5Bnumber%5D=1&page%5Bsize%5D=6", + "prev": null, + "next": "https://app.terraform.io/api/v2/organizations/my-organization/registry-modules?page%5Bnumber%5D=2&page%5Bsize%5D=6", + "last": "https://app.terraform.io/api/v2/organizations/my-organization/registry-modules?page%5Bnumber%5D=29&page%5Bsize%5D=6" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 6, + "prev-page": null, + "next-page": 2, + "total-pages": 29, + "total-count": 169 + } + } +} +``` + +## Publish a Private Module from a VCS + +~> **Deprecation warning**: the following endpoint `POST /registry-modules` is replaced by the below endpoint and will be removed from future versions of the API! + +`POST /organizations/:organization_name/registry-modules/vcs` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create a module in. The organization must already exist, and the token authenticating the API request must belong to a team or team member with the **Manage modules** permission enabled. | + +Publishes a new registry private module from a VCS repository, with module versions managed automatically by the repository's tags. The publishing process will fetch all tags in the source repository that look like [SemVer](https://semver.org/) versions with optional 'v' prefix. For each version, the tag is cloned and the config parsed to populate module details (input and output variables, readme, submodules, etc.). The [Module Registry Requirements](/terraform/registry/modules/publish#requirements) define additional requirements on naming, standard module structure and tags for releases. + +| Status | Response | Reason | +| ------- | -------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "registry-modules"`) | Successfully published module | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------------------------------- | ------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"registry-modules"`. | +| `data.attributes.vcs-repo.identifier` | string | | The repository from which to ingress the configuration. | +| `data.attributes.vcs-repo.oauth-token-id` | string | | The VCS Connection (OAuth Connection + Token) to use as identified. Get this ID from the [oauth-tokens](/terraform/enterprise/api-docs/oauth-tokens) endpoint. You can not specify this value if `github-app-installation-id` is specified. | +| `data.attributes.vcs-repo.github-app-installation-id` | string | | The VCS Connection GitHub App Installation to use. Find this ID on the account settings page. Requires previously authorizing the GitHub App and generating a user-to-server token. Manage the token from **Account Settings** within HCP Terraform. You can not specify this value if `oauth-token-id` is specified. | +| `data.attributes.vcs-repo.display_identifier` | string | | The display identifier for the repository. For most VCS providers outside of Bitbucket Cloud, this identifier matches the `data.attributes.vcs-repo.identifier` string. | +| `data.attributes.no-code` | boolean | | Allows you to enable or disable the no-code publishing workflow for a module. | +| `data.attributes.vcs-repo.branch` | string | | The repository branch to publish the module from if you are using the branch-based publishing workflow. If omitted, the module will be published using the tag-based publishing workflow. | + +A VCS repository identifier is a reference to a VCS repository in the format `:org/:repo`, where `:org` and `:repo` refer to the organization, or project key for Bitbucket Data Center, and repository in your VCS provider. The format for Azure DevOps is `:org/:project/_git/:repo`. + +The OAuth Token ID identifies the VCS connection, and therefore the organization, that the module will be created in. + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "vcs-repo": { + "identifier":"lafentres/terraform-aws-my-module", + "oauth-token-id":"ot-hmAyP66qk2AMVdbJ", + "display_identifier":"lafentres/terraform-aws-my-module", + "branch": "main" + }, + "no-code": true + }, + "type":"registry-modules" + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/vcs +``` + +### Sample Response + +```json +{ + "data": { + "id": "mod-fZn7uHu99ZCpAKZJ", + "type": "registry-modules", + "attributes": { + "name": "my-module", + "namespace": "my-organization", + "registry-name": "private", + "provider": "aws", + "status": "pending", + "version-statuses": [], + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T19:36:56.288Z", + "vcs-repo": { + "branch": "", + "ingress-submodules": true, + "identifier": "lafentres/terraform-aws-my-module", + "display-identifier": "lafentres/terraform-aws-my-module", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "webhook-url": "https://app.terraform.io/webhooks/vcs/a12b3456..." + }, + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws" + } + } +} +``` + +## Create a Module (with no VCS connection) + +`POST /organizations/:organization_name/registry-modules` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create a module in. The organization must already exist, and the token authenticating the API request must belong to a team or team member with the **Manage modules** permission enabled. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Creates a new registry module without a backing VCS repository. + +#### Private modules + +After creating a module, a version must be created and uploaded in order to be usable. Modules created this way do not automatically update with new versions; instead, you must explicitly create and upload each new version with the [Create a Module Version](#create-a-module-version) endpoint. + +#### Public modules + +When created, the public module record will be available in the organization's registry module list. You cannot create versions for public modules as they are maintained in the public registry. + +| Status | Response | Reason | +| ------- | -------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "registry-modules"`) | Successfully published module | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - public module curation disabled | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"registry-modules"`. | +| `data.attributes.name` | string | | The name of this module. May contain alphanumeric characters, with dashes and underscores allowed in non-leading or trailing positions. Maximum length is 64 characters. | +| `data.attributes.provider` | string | | Specifies the Terraform provider that this module is used for. May contain lowercase alphanumeric characters. Maximum length is 64 characters. | +| `data.attributes.namespace` | string | | The namespace of this module. Cannot be set for private modules. May contain alphanumeric characters, with dashes and underscores allowed in non-leading or trailing positions. Maximum length is 64 characters. | +| `data.attributes.registry-name` | string | | Indicates whether this is a publicly maintained module or private. Must be either `public` or `private`. | +| `data.attributes.no-code` | boolean | | Allows you to enable or disable the no-code publishing workflow for a module. | + +### Sample Payload (private module) + +```json +{ + "data": { + "type": "registry-modules", + "attributes": { + "name": "my-module", + "provider": "aws", + "registry-name": "private", + "no-code": true + } + } +} +``` + +### Sample Payload (public module) + +```json +{ + "data": { + "type": "registry-modules", + "attributes": { + "name": "vpc", + "namespace": "terraform-aws-modules", + "provider": "aws", + "registry-name": "public", + "no-code": true + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules +``` + +### Sample Response (private module) + +```json +{ + "data": { + "id": "mod-fZn7uHu99ZCpAKZJ", + "type": "registry-modules", + "attributes": { + "name": "my-module", + "namespace": "my-organization", + "registry-name": "private", + "provider": "aws", + "status": "pending", + "version-statuses": [], + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T19:36:56.288Z", + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws" + } + } +} +``` + +### Sample Response (public module) + +```json +{ + "data": { + "id": "mod-fZn7uHu99ZCpAKZJ", + "type": "registry-modules", + "attributes": { + "name": "vpc", + "namespace": "terraform-aws-modules", + "registry-name": "public", + "provider": "aws", + "status": "pending", + "version-statuses": [], + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T19:36:56.288Z", + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/public/terraform-aws-modules/vpc/aws" + } + } +} +``` + +## Create a Module Version + +~> **Deprecation warning**: the following endpoint `POST /registry-modules/:organization_name/:name/:provider/versions` is replaced by the below endpoint and will be removed from future versions of the API! + +`POST /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider/versions` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create a module in. The organization must already exist, and the token authenticating the API request must belong to a team or team member with the **Manage modules** permission enabled. | +| `:namespace` | The namespace of the module for which the version is being created. For private modules this is the same as the `:organization_name` parameter | +| `:name` | The name of the module for which the version is being created. | +| `:provider` | The name of the provider for which the version is being created. | +| `:registry-name` | Must be `private`. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Creates a new registry module version. This endpoint only applies to private modules without a VCS repository and VCS-linked branch based modules. VCS-linked tag-based modules automatically create new versions for new tags. After creating the version for a non-VCS backed module, you should upload the module to the link that HCP Terraform returns. + +| Status | Response | Reason | +| ------- | ---------------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "registry-module-versions"`) | Successfully published module version | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - not available for public modules | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ---------------------------- | ------ | ------- | --------------------------------------------------- | +| `data.type` | string | | Must be `"registry-module-versions"`. | +| `data.attributes.version` | string | | A valid semver version string. | +| `data.attributes.commit-sha` | string | | The commit SHA to use to create the module version. | + +### Sample Payload + +```json +{ + "data": { + "type": "registry-module-versions", + "attributes": { + "version": "1.2.3", + "commit-sha": "abcdef12345" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws/versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "modver-qjjF7ArLXJSWU3WU", + "type": "registry-module-versions", + "attributes": { + "source": "tfe-api", + "status": "pending", + "version": "1.2.3", + "created-at": "2018-09-24T20:47:20.931Z", + "updated-at": "2018-09-24T20:47:20.931Z" + }, + "relationships": { + "registry-module": { + "data": { + "id": "1881", + "type": "registry-modules" + } + } + }, + "links": { + "upload": "https://archivist.terraform.io/v1/object/dmF1bHQ6djE6NWJPbHQ4QjV4R1ox..." + } + } +} +``` + +## Add a Module Version (Private Module) + +`PUT https://archivist.terraform.io/v1/object/<UNIQUE OBJECT ID>` + +**The URL is provided in the `upload` links attribute in the `registry-module-versions` resource.** + +### Expected Archive Format + +HCP Terraform expects the module version uploaded to be a gzip tarball with the module in the root (not in a subdirectory). + +Given the following folder structure: + + terraform-null-test + ├── README.md + ├── examples + │   └── default + │   ├── README.md + │   └── main.tf + └── main.tf + +Package the files in an archive format by running `tar zcvf module.tar.gz *` in the module's directory. + + ~$ cd terraform-null-test + terraform-null-test$ tar zcvf module.tar.gz * + a README.md + a examples + a examples/default + a examples/default/main.tf + a examples/default/README.md + a main.tf + +### Sample Request + +```shell +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @module.tar.gz \ + https://archivist.terraform.io/v1/object/dmF1bHQ6djE6NWJPbHQ4QjV4R1ox... +``` + +After the registry module version is successfully parsed, its status will become `"ok"`. + +## Get a Module + +~> **Deprecation warning**: the following endpoint `GET /registry-modules/show/:organization_name/:name/:provider` is replaced by the below endpoint and will be removed from future versions of the API! + +`GET /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider` + +### Parameters + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the module belongs to. | +| `:namespace` | The namespace of the module. For private modules this is the name of the organization that owns the module. | +| `:name` | The module name. | +| `:provider` | The module provider. Must be lowercase alphanumeric. | +| `:registry-name` | Either `public` or `private`. | + +| Status | Response | Reason | +| ------- | -------------------------------------------------- | ------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-modules"`) | The request was successful | +| [403][] | [JSON API error object][] | Forbidden - public module curation disabled | +| [404][] | [JSON API error object][] | Module not found or user unauthorized to perform action | + +### Sample Request (private module) + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws +``` + +### Sample Request (public module) + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/public/terraform-aws-modules/vpc/aws +``` + +### Sample Response (private module) + +```json +{ + "data": { + "id": "mod-fZn7uHu99ZCpAKZJ", + "type": "registry-modules", + "attributes": { + "name": "my-module", + "provider": "aws", + "namespace": "my-organization", + "registry-name": "private", + "status": "setup_complete", + "version-statuses": [ + { + "version": "1.0.0", + "status": "ok" + } + ], + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T20:16:20.538Z", + "vcs-repo": { + "branch": "", + "ingress-submodules": true, + "identifier": "lafentres/terraform-aws-my-module", + "display-identifier": "lafentres/terraform-aws-my-module", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "webhook-url": "https://app.terraform.io/webhooks/vcs/a12b3456..." + }, + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws" + } + } +} +``` + +### Sample Response (public module) + +```json +{ + "data": { + "id": "mod-fZn7uHu99ZCpAKZJ", + "type": "registry-modules", + "attributes": { + "name": "vpc", + "provider": "aws", + "namespace": "terraform-aws-modules", + "registry-name": "public", + "status": "setup_complete", + "version-statuses": [], + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T20:16:20.538Z", + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/public/terraform-aws-modules/vpc/aws" + } + } +} +``` + +## Update a Private Registry Module + +`PATCH /organizations/:organization_name/registry-modules/private/:namespace/:name/:provider/` + +### Parameters + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to update a module from. The organization must already exist, and the token authenticating the API request must belong to the `owners` team or a member of the `owners` team. | +| `:namespace` | The module namespace that the update affects. For private modules this is the name of the organization that owns the module. | +| `:name` | The module name that the update affects. | +| `:provider` | The name of the provider of the module that is being updated. | + +### Request Body + +These PATCH endpoints require a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------- | ------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"registry-modules"`. | +| `data.attributes.vcs-repo.branch` | string | (previous value) | The repository branch that Terraform executes tests and publishes new versions from. This cannot be used with the `data.attributes.vcs-repo.tags` key. | +| `data.attributes.vcs-repo.tags` | boolean | (previous value) | Whether the registry module should be tag-based. This cannot be used with the `data.attributes.vcs-repo.branch` key. | +| `data.attributes.test-config.tests-enabled` | boolean | (previous value) | Allows you to enable or disable tests for the module. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "vcs-repo": { + "branch": "main", + "tags": false + }, + "test-config": { + "tests-enabled": true + } + }, + "type": "registry-modules" + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/private/my-organization/registry-name/registry-provider/ +``` + +### Sample Response + +```json +{ + "data": { + "id": "mod-fZn7uHu99ZCpAKZJ", + "type": "registry-modules", + "attributes": { + "name": "my-module", + "namespace": "my-organization", + "registry-name": "private", + "provider": "aws", + "status": "pending", + "version-statuses": [], + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T19:36:56.288Z", + "vcs-repo": { + "branch": "main", + "ingress-submodules": true, + "identifier": "lafentres/terraform-aws-my-module", + "display-identifier": "lafentres/terraform-aws-my-module", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "webhook-url": "https://app.terraform.io/webhooks/vcs/a12b3456..." + }, + "permissions": { + "can-delete": true, + "can-resync": true, + "can-retry": true + }, + "test-config": { + "id": "tc-tcR6bxV5zE75Zb3B", + "tests-enabled": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws" + } + } +} +``` + +## Delete a Module + +<div className="alert alert-warning" role="alert"> + **Deprecation warning**: the following endpoints: + +- `POST /registry-modules/actions/delete/:organization_name/:name/:provider/:version` +- `POST /registry-modules/actions/delete/:organization_name/:name/:provider` +- `POST /registry-modules/actions/delete/:organization_name/:name` + +are replaced by the below endpoints and will be removed from future versions of the API! + +</div> + +- `DELETE /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider/:version` +- `DELETE /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name/:provider` +- `DELETE /organizations/:organization_name/registry-modules/:registry_name/:namespace/:name` + +### Parameters + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to delete a module from. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The module namespace that the deletion will affect. For private modules this is the name of the organization that owns the module. | +| `:name` | The module name that the deletion will affect. | +| `:provider` | If specified, the provider for the module that the deletion will affect. | +| `:version` | If specified, the version for the module and provider that will be deleted. | +| `:registry_name` | Either `public` or `private` | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +When removing modules, there are three versions of the endpoint, depending on how many parameters are specified. + +- If all parameters (module namespace, name, provider, and version) are specified, the specified version for the given provider of the module is deleted. +- If module namespace, name, and provider are specified, the specified provider for the given module is deleted along with all its versions. +- If only module namespace and name are specified, the entire module is deleted. + +For public modules, only the the endpoint specifying the module namespace and name is valid. The other DELETE endpoints will 404. +For public modules, this only removes the record from the organization's HCP Terraform Registry and does not remove the public module from registry.terraform.io. + +If a version deletion would leave a provider with no versions, the provider will be deleted. If a provider deletion would leave a module with no providers, the module will be deleted. + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------- | +| [204][] | No Content | Success | +| [403][] | [JSON API error object][] | Forbidden - public module curation disabled | +| [404][] | [JSON API error object][] | Module, provider, or version not found or user not authorized | + +### Sample Request (private module) + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/private/my-organization/my-module/aws/2.0.0 +``` + +### Sample Request (public module) + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-modules/public/terraform-aws-modules/vpc/aws +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/provider-versions-platforms.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/provider-versions-platforms.mdx new file mode 100644 index 0000000000..029dda55df --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/provider-versions-platforms.mdx @@ -0,0 +1,707 @@ +--- +page_title: /registry-providers API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/registry-providers` endpoint to read, + create, and delete private providers versions and platforms in your private + registry. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Private provider versions and platforms API reference + +These endpoints are only relevant to private providers. When you [publish a private provider](/terraform/enterprise/registry/publish-providers) to the HCP Terraform private registry, you must also create at least one version and at least one platform for that version before consumers can use the provider in configurations. Unlike the public Terraform Registry, the private registry does not automatically upload new releases. You must manually add new provider versions and the associated release files. + +All members of an organization can view and use both public and private providers, but you need [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) or [Manage Private Registry](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) permissions to add, update, or delete provider versions and platforms in private registry. + +## Create a Provider Version + +`POST /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions` + +The private registry does not automatically update private providers when you release new versions. You must use this endpoint to add each new version. Consumers cannot use new versions until you upload all [required release files](/terraform/enterprise/registry/publish-providers#release-files) and [Create a Provider Platform](#create-a-provider-platform). + +### Parameters + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create a provider in. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider for which the version is being created. For private providers this is the same as the `:organization_name` parameter. | +| `:name` | The name of the provider for which the version is being created. | + +Creates a new registry provider version. This endpoint only applies to private providers. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------------ | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "registry-provider-versions"`) | Success | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - not available for public providers | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"registry-provider-versions"`. | +| `data.attributes.version` | string | | A valid semver version string. | +| `data.attributes.key-id` | string | | A valid gpg-key string. | +| `data.attributes.protocols` | array | | An array of Terraform provider API versions that this version supports. Must be one or all of the following values `["4.0","5.0","6.0"]`. | + +-> **Note:** Only Terraform 0.13 and later support third-party provider registries, and that Terraform version requires provider API version 5.0 or later. So you do not need to list major versions 4.0 or earlier in the `protocols` attribute. + +### Sample Payload + +```json +{ + "data": { + "type": "registry-provider-versions", + "attributes": { + "version": "3.1.1", + "key-id": "32966F3FB5AC1129", + "protocols": ["5.0"] + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions", + "attributes": { + "version": "3.1.1", + "created-at": "2022-02-11T19:16:59.876Z", + "updated-at": "2022-02-11T19:16:59.876Z", + "key-id": "32966F3FB5AC1129", + "protocols": ["5.0"], + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "shasums-uploaded": false, + "shasums-sig-uploaded": false + }, + "relationships": { + "registry-provider": { + "data": { + "id": "prov-cmEmLstBfjNNA9F3", + "type": "registry-providers" + } + }, + "platforms": { + "data": [], + "links": { + "related": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms" + } + } + }, + "links": { + "shasums-upload": "https://archivist.terraform.io/v1/object/dmF1b...", + "shasums-sig-upload": "https://archivist.terraform.io/v1/object/dmF1b..." + } + } +} + +``` + +## Get All Versions for a Single Provider + +`GET /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/` + +### Parameters + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the provider belongs to. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider. Must be the same as the `organization_name` for the provider. | +| `:name` | The provider name. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-providers"`) | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions", + "attributes": { + "version": "3.1.1", + "created-at": "2022-02-11T19:16:59.876Z", + "updated-at": "2022-02-11T19:16:59.876Z", + "key-id": "32966F3FB5AC1129", + "protocols": ["5.0"], + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "shasums-uploaded": true, + "shasums-sig-uploaded": true + }, + "relationships": { + "registry-provider": { + "data": { + "id": "prov-cmEmLstBfjNNA9F3", + "type": "registry-providers" + } + }, + "platforms": { + "data": [ + { + "id": "provpltfrm-GSHhNzptr9s3WoLD", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-A1PHitiM2KkKpVoM", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-BLJWvWyJ2QMs525k", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-qQYosUguetYtXGzJ", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-pjDHFN46y193bS7t", + "type": "registry-provider-platforms" + } + ], + "links": { + "related": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms" + } + } + }, + "links": { + "shasums-download": "https://archivist.terraform.io/v1/object/dmF1b...", + "shasums-sig-download": "https://archivist.terraform.io/v1/object/dmF1b..." + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +**Note:** The `shasums-uploaded` and `shasums-sig-uploaded` properties will be false if those files have not been uploaded to Archivist. In this case, instead of including links to `shasums-download` and `shasums-sig-download`, the response will include upload links (`shasums-upload` and `shasums-sig-upload`). + +## Get a Version + +`GET /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/:version` + +### Parameters + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the provider belongs to. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider. Must be the same as the `organization_name` for the provider. | +| `:name` | The provider name. | +| `:version` | The version of the provider being created to which different platforms can be added. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-providers"`) | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1 +``` + +### Sample Response + +```json +{ + "data": { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions", + "attributes": { + "version": "3.1.1", + "created-at": "2022-02-11T19:16:59.876Z", + "updated-at": "2022-02-11T19:16:59.876Z", + "key-id": "32966F3FB5AC1129", + "protocols": ["5.0"], + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "shasums-uploaded": true, + "shasums-sig-uploaded": true + }, + "relationships": { + "registry-provider": { + "data": { + "id": "prov-cmEmLstBfjNNA9F3", + "type": "registry-providers" + } + }, + "platforms": { + "data": [ + { + "id": "provpltfrm-GSHhNzptr9s3WoLD", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-A1PHitiM2KkKpVoM", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-BLJWvWyJ2QMs525k", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-qQYosUguetYtXGzJ", + "type": "registry-provider-platforms" + }, + { + "id": "provpltfrm-pjDHFN46y193bS7t", + "type": "registry-provider-platforms" + } + ], + "links": { + "related": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms" + } + } + }, + "links": { + "shasums-download": "https://archivist.terraform.io/v1/object/dmF1b...", + "shasums-sig-download": "https://archivist.terraform.io/v1/object/dmF1b..." + } + } +} +``` + +**Note:** `shasums-uploaded` and `shasums-sig-uploaded` will be false if those files haven't been uploaded to Archivist yet. In this case, instead of including links to `shasums-download` and `shasums-sig-download`, the response will include upload links (`shasums-upload` and `shasums-sig-upload`). + +## Delete a Version + +`DELETE /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/:provider_version` + +### Parameters + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to delete a provider version from. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider for which the version is being deleted. For private providers this is the same as the `:organization_name` parameter. | +| `:name` | The name of the provider for which the version is being deleted. | +| `:version` | The version for the provider that will be deleted along with its corresponding platforms. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user not authorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/public/hashicorp/aws/versions/3.1.1 +``` + +## Create a Provider Platform + +`POST /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/:version/platforms` + +Platforms are binaries that allow the provider to run on a particular operating system and architecture combination (e.g., Linux and AMD64). GoReleaser creates binaries automatically when you [create a release on GitHub](/terraform/registry/providers/publishing#creating-a-github-release) or [create a release locally](/terraform/registry/providers/publishing#using-goreleaser-locally). + +You must upload one or more platforms for each version of a private provider. After you create a platform, you must upload the platform binary file to the `provider-binary-upload` URL. + +### Parameters + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create a provider platform in. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider for which the platform is being created. For private providers this is the same as the `:organization_name` parameter. | +| `:name` | The name of the provider for which the platform is being created. | +| `:version` | The provider version of the provider for which the platform is being created. | + +Creates a new registry provider platform. This endpoint only applies to private providers. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "registry-provider-platforms"`) | Success | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - not available for public providers | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------------------------- | ------ | ------- | ---------------------------------------- | +| `data.type` | string | | Must be `"registry-provider-platforms"`. | +| `data.attributes.os` | string | | A valid operating system string. | +| `data.attributes.arch` | string | | A valid architecture string. | +| `data.attributes.shasum` | string | | A valid shasum string. | +| `data.attributes.filename` | string | | A valid filename string. | + +### Sample Payload + +```json +{ + "data": { + "type": "registry-provider-version-platforms", + "attributes": { + "os": "linux", + "arch": "amd64", + "shasum": "8f69533bc8afc227b40d15116358f91505bb638ce5919712fbb38a2dec1bba38", + "filename": "terraform-provider-aws_3.1.1_linux_amd64.zip" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms +``` + +### Sample Response + +```json +{ + "data": { + "id": "provpltfrm-BLJWvWyJ2QMs525k", + "type": "registry-provider-platforms", + "attributes": { + "os": "linux", + "arch": "amd64", + "filename": "terraform-provider-aws_3.1.1_linux_amd64.zip", + "shasum": "8f69533bc8afc227b40d15116358f91505bb638ce5919712fbb38a2dec1bba38", + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "provider-binary-uploaded": false + }, + "relationships": { + "registry-provider-version": { + "data": { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions" + } + } + }, + "links": { + "provider-binary-upload": "https://archivist.terraform.io/v1/object/dmF1b..." + } + } +} + +``` + +## Get All Platforms for a Single Version + +`GET /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/:version/platforms` + +### Parameters + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the provider belongs to. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider. Must be the same as the `organization_name` for the provider. | +| `:name` | The provider name. | +| `:version` | The version of the provider. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-providers"`) | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "provpltfrm-GSHhNzptr9s3WoLD", + "type": "registry-provider-platforms", + "attributes": { + "os": "darwin", + "arch": "amd64", + "filename": "terraform-provider-aws_3.1.1_darwin_amd64.zip", + "shasum": "fd580e71bd76d76913e1925f2641be9330c536464af9a08a5b8994da65a26cbc", + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "provider-binary-uploaded": true + }, + "relationships": { + "registry-provider-version": { + "data": { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions" + } + } + }, + "links": { + "provider-binary-download": "https://archivist.terraform.io/v1/object/dmF1b..." + } + }, + { + "id": "provpltfrm-A1PHitiM2KkKpVoM", + "type": "registry-provider-platforms", + "attributes": { + "os": "darwin", + "arch": "arm64", + "filename": "terraform-provider-aws_3.1.1_darwin_arm64.zip", + "shasum": "de3c351d7f35a3c8c583c0da5c1c4d558b8cea3731a49b15f63de5bbbafc0165", + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "provider-binary-uploaded": true + }, + "relationships": { + "registry-provider-version": { + "data": { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions" + } + } + }, + "links": { + "provider-binary-download": "https://archivist.terraform.io/v1/object/dmF1b..." + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} +``` + +**Note:** The `provider-binary-uploaded` property will be `false` if that file has not been uploaded to Archivist. In this case, instead of including a link to `provider-binary-download`, the response will include an upload link `provider-binary-upload`. + +## Get a Platform + +`GET /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/:version/platforms/:os/:arch` + +### Parameters + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the provider belongs to. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider. Must be the same as the `organization_name` for the provider. | +| `:name` | The provider name. | +| `:version` | The version of the provider. | +| `:os` | The operating system of the provider platform. | +| `:arch` | The architecture of the provider platform. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-providers"`) | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms/linux/amd64 +``` + +### Sample Response + +```json +{ + "data": { + "id": "provpltfrm-BLJWvWyJ2QMs525k", + "type": "registry-provider-platforms", + "attributes": { + "os": "linux", + "arch": "amd64", + "filename": "terraform-provider-aws_3.1.1_linux_amd64.zip", + "shasum": "8f69533bc8afc227b40d15116358f91505bb638ce5919712fbb38a2dec1bba38", + "permissions": { + "can-delete": true, + "can-upload-asset": true + }, + "provider-binary-uploaded": true + }, + "relationships": { + "registry-provider-version": { + "data": { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions" + } + } + }, + "links": { + "provider-binary-download": "https://archivist.terraform.io/v1/object/dmF1b..." + } + } +} +``` + +**Note:** The `provider-binary-uploaded` property will be `false` if that file has not been uploaded to Archivist. In this case, instead of including a link to `provider-binary-download`, the response will include an upload link `provider-binary-upload`. + +## Delete a Platform + +`DELETE /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name/versions/:version/platforms/:os/:arch` + +### Parameters + +| Parameter | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to delete a provider platform from. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:registry_name` | Must be `private`. | +| `:namespace` | The namespace of the provider for which the platform is being deleted. For private providers this is the same as the `:organization_name` parameter. | +| `:name` | The name of the provider for which the platform is being deleted. | +| `:version` | The version for which the platform is being deleted. | +| `:os` | The operating system of the provider platform that is being deleted. | +| `:arch` | The architecture of the provider platform that is being deleted. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user not authorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws/versions/3.1.1/platforms/linux/amd64 +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/providers.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/providers.mdx new file mode 100644 index 0000000000..44719c2f16 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/providers.mdx @@ -0,0 +1,471 @@ +--- +page_title: /registry-providers API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's organization `/registry-providers` endpoint + to list, create, get, and delete providers in your private registry. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Registry providers API reference + +You can add publicly curated providers from the [Terraform Registry](https://registry.terraform.io/) and custom, private providers to your HCP Terraform private registry. The private registry stores a pointer to public providers so that you can view their data from within HCP Terraform. This lets you clearly designate all of the providers that are recommended for the organization and makes them centrally accessible. + +All members of an organization can view and use both public and private providers, but you need [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) or [Manage Private Registry](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) permissions to add, update, or delete them them in private registry. + +## HCP Terraform Registry Implementation + +For publicly curated providers, the HCP Terraform Registry acts as a proxy to the [Terraform Registry](https://registry.terraform.io) for the following: + +- The public registry discovery endpoints have the path prefix provided in the [discovery document](/terraform/registry/api-docs#service-discovery) which is currently `/api/registry/public/v1`. +- [Authentication](/terraform/enterprise/api-docs#authentication) is handled the same as all other HCP Terraform endpoints. + +## List Terraform Registry Providers for an Organization + +`GET /organizations/:organization_name/registry-providers` + +### Parameters + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------- | +| `:organization_name` | The name of the organization to list available providers from. | + +Lists the providers included in the private registry for the specified organization. + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | ---------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-providers"`) | Success | +| [404][] | [JSON API error object][] | Providers not found or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `q` | **Optional.** A search query string. Providers are searchable by both their name and their namespace fields. | +| `filter[field name]` | **Optional.** If specified, restricts results to those with the matching field name value. Valid values are `registry_name`, and `organization_name`. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 registry providers per page. | + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-providers +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "prov-kwt1cBiX2SdDz38w", + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "my-organization", + "created-at": "2021-04-07T19:01:18.528Z", + "updated-at": "2021-04-07T19:01:19.863Z", + "registry-name": "public", + "permissions": { + "can-delete": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-providers/public/my-organization/aws" + } + }, + { + "id": "prov-PopQnMtYDCcd3PRX", + "type": "registry-providers", + "attributes": { + "name": "aurora", + "namespace": "my-organization", + "created-at": "2021-04-07T19:04:41.375Z", + "updated-at": "2021-04-07T19:04:42.828Z", + "registry-name": "public", + "permissions": { + "can-delete": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-providers/public/my-organization/aurora" + } + }, + ..., + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/registry-providers?page%5Bnumber%5D=1&page%5Bsize%5D=6", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/registry-providers?page%5Bnumber%5D=1&page%5Bsize%5D=6", + "prev": null, + "next": "https://app.terraform.io/api/v2/organizations/my-organization/registry-providers?page%5Bnumber%5D=2&page%5Bsize%5D=6", + "last": "https://app.terraform.io/api/v2/organizations/my-organization/registry-providers?page%5Bnumber%5D=29&page%5Bsize%5D=6" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 6, + "prev-page": null, + "next-page": 2, + "total-pages": 29, + "total-count": 169 + } + } +} +``` + +## Create a Provider + +`POST /organizations/:organization_name/registry-providers` + +Use this endpoint to create both public and private providers: + +- **Public providers:** The public provider record will be available in the organization's registry provider list immediately after creation. You cannot create versions for public providers; you must use the versions available on the Terraform Registry. +- **Private providers:** The private provider record will be available in the organization's registry provider list immediately after creation, but you must [create a version and upload release assets](/terraform/enterprise/registry/publish-providers#publishing-a-provider-and-creating-a-version) before consumers can use it. The private registry does not automatically update private providers when you release new versions. You must add each new version with the [Create a Provider Version](/terraform/enterprise/api-docs/private-registry/provider-versions-platforms#create-a-provider-version) endpoint. + +### Parameters + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create a provider in. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "registry-providers"`) | Successfully published provider | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +~> **Important:** For private providers, you must also create a version, a platform, and upload release assets before consumers can use the provider. Refer to [Publishing a Private Provider](/terraform/enterprise/registry/publish-providers) for more details. + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"registry-providers"`. | +| `data.attributes.name` | string | | The name of the provider. | +| `data.attributes.namespace` | string | | The namespace of the provider. For private providers this is the same as the `:organization_name` parameter. | +| `data.attributes.registry-name` | string | | Whether this is a publicly maintained provider or private. Must be either `public` or `private`. | + +### Sample Payload (Private Provider) + +```json +{ + "data": { + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "hashicorp", + "registry-name": "private" + } + } +} +``` + +### Sample Payload (Public Provider) + +```json +{ + "data": { + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "hashicorp", + "registry-name": "public" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-providers +``` + +### Sample Response (Private Provider) + +```json +{ + "data": { + "id": "prov-cmEmLstBfjNNA9F3", + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "hashicorp", + "registry-name": "private", + "created-at": "2022-02-11T19:16:59.533Z", + "updated-at": "2022-02-11T19:16:59.533Z", + "permissions": { + "can-delete": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "versions": { + "data": [], + "links": { + "related": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws" + } + } +} +``` + +### Sample Response (Public Provider) + +```json +{ + "data": { + "id": "prov-fZn7uHu99ZCpAKZJ", + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "hashicorp", + "registry-name": "public", + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T19:36:56.288Z", + "permissions": { + "can-delete": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-providers/public/hashicorp/aws" + } + } +} +``` + +## Get a Provider + +`GET /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name` + +### Parameters + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization the provider belongs to. | +| `:registry_name` | Whether this is a publicly maintained provider or private. Must be either `public` or `private`. | +| `:namespace` | The namespace of the provider. For private providers this is the same as the `:organization_name` parameter. | +| `:name` | The provider name. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "registry-providers"`) | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user unauthorized to perform action | + +### Sample Request (Private Provider) + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws +``` + +### Sample Request (Public Provider) + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-providers/public/hashicorp/aws +``` + +### Sample Response (Private Provider) + +```json +{ + "data": { + "id": "prov-cmEmLstBfjNNA9F3", + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "hashicorp", + "created-at": "2022-02-11T19:16:59.533Z", + "updated-at": "2022-02-11T19:16:59.533Z", + "registry-name": "private", + "permissions": { + "can-delete": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "versions": { + "data": [ + { + "id": "provver-y5KZUsSBRLV9zCtL", + "type": "registry-provider-versions" + } + ], + "links": { + "related": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws" + } + } + }, + "links": { + "self": "/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws" + } + } +} +``` + +### Sample Response (Public Provider) + +```json +{ + "data": { + "id": "prov-fZn7uHu99ZCpAKZJ", + "type": "registry-providers", + "attributes": { + "name": "aws", + "namespace": "hashicorp", + "registry-name": "public", + "created-at": "2020-07-09T19:36:56.288Z", + "updated-at": "2020-07-09T20:16:20.538Z", + "permissions": { + "can-delete": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + }, + "links": { + "self": "/api/v2/organizations/my-organization/registry-providers/public/hashicorp/aws" + } + } +} +``` + +## Delete a Provider + +`DELETE /organizations/:organization_name/registry-providers/:registry_name/:namespace/:name` + +### Parameters + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization to delete a provider from. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:registry_name` | Whether this is a publicly maintained provider or private. Must be either `public` or `private`. | +| `:namespace` | The namespace of the provider that will be deleted. | +| `:name` | The name of the provider that will be deleted. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | Success | +| [403][] | [JSON API error object][] | Forbidden - public provider curation disabled | +| [404][] | [JSON API error object][] | Provider not found or user not authorized to perform action | + +### Sample Request (Private Provider) + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/hashicorp/registry-providers/private/hashicorp/aws +``` + +### Sample Request (Public Provider) + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/my-organization/registry-providers/public/hashicorp/aws +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/tests.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/tests.mdx new file mode 100644 index 0000000000..ea1b7f4b60 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/private-registry/tests.mdx @@ -0,0 +1,755 @@ +--- +page_title: /tests API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/tests` endpoint to list, get, create, and + cancel Terraform test runs. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Tests API reference + +Tests are terraform operations(runs) and are referred to as Test Runs within the HCP Terraform API. + +Performing a test on a new configuration is a multi-step process. + +1. [Create a configuration version on the registry module](#create-a-configuration-version-for-a-test). +2. [Upload configuration files to the configuration version](#upload-configuration-files-for-a-test). +3. [Create a test on the module](#create-a-test-run); HCP Terraform completes this step automatically when you upload a configuration file. + +Alternatively, you can create a test with a pre-existing configuration version, even one from another module. This is useful for promoting known good code from one module to another. + +## Attributes + +The `tests` API endpoint has the following attributes. + +### Test Run States + +The state of the test operation is found in `data.attributes.status`, and you can reference the following list of possible states. + +| State | Description | +| ---------- | ----------------------------------------------------- | +| `pending` | The initial status of a run after creation. | +| `queued` | HCP Terraform has queued the test operation to start. | +| `running` | HCP Terraform is executing the test. | +| `errored` | The test has errored. This is a final state. | +| `canceled` | The test has been canceled. This is a final state. | +| `finished` | The test has completed. This is a final state. | + +### Test run status + +The final test status is found in `data.attributes.test-status`, and you can reference the following list of possible states. + +| Status | Description | +| ------ | ---------------------------- | +| `pass` | The given tests have passed. | +| `fail` | The given tests have failed. | + +### Detailed test status + +The test results can be found via the following attributes + +| Status | Description | | +| ------------------------------- | ------------------------------------------- | - | +| `data.attributes.tests-passed` | The number of tests that have passed. | | +| `data.attributes.tests-failed` | The number of tests that have failed. | | +| `data.attributes.tests-errored` | The number of tests that have errored out. | | +| `data.attributes.tests-skipped` | The number of tests that have been skipped. | | + +### Test Sources + +List tests for a module. You can use the following sources as [tests list](/terraform/enterprise/api-docs/private-registry/tests#list-tests-for-a-module) query parameters. + +| Source | Description | +| --------------------------- | ---------------------------------------------------------------------------------------- | +| `terraform` | Indicates a test was queued from HCP Terraform CLI. | +| `tfe-api` | Indicates a test was queued from HCP Terraform API. | +| `tfe-configuration-version` | Indicates a test was queued from a Configuration Version, triggered from a VCS provider. | + +## Create a Test + +`POST /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/test-runs` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module for which the test is being created. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the test is being created. | +| `:provider` | The name of the provider for which the test is being created. | + +A test run executes tests against a registry module, using a configuration version and the modules’s current environment variables. + +Creating a test run requires permission to access the specified module. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for more information. + +When creating a test run, you may optionally provide a list of variable objects containing key and value attributes. These values apply to that test run specifically and take precedence over variables with the same key that are created within the module. All values must be expressed as an HCL literal in the same syntax you would use when writing Terraform code. + +**Sample Test Variables:** + +```json +"attributes": { + "variables": [ + { "key": "replicas", "value": "2" }, + { "key": "access_key", "value": "\"ABCDE12345\"" } + ] +} +``` + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------------------------------------------------- | -------------------- | ------------- | -------------------------------------------------------------------------------------------------- | +| `data.attributes.verbose` | bool | `false` | Specifies whether Terraform should print the plan or state for each test run block as it executes. | +| `data.attributes.test-directory` | string | `"tests"` | Sets the directory where HCP Terraform executes the tests. | +| `data.attributes.filters` | array\[string] | (empty array) | When specified, HCP Terraform only executes the test files contained within this array. | +| `data.attributes.variables` | array\[{key, value}] | (empty array) | Specifies an optional list of test-specific environment variable values. | +| `data.relationships.configuration-version.data.id` | string | none | Specifies the configuration version that HCP Terraform executes the test against. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "verbose": true, + "filters": ["tests/test.tftest.hcl"], + "test-directory": "tests", + "variables": [ + { "key" : "number", "value": 4} + ] + }, + "type":"test-runs" + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/private/registry-provider/test-runs +``` + +### Sample Response + +```json +{ + "data": { + "id": "trun-KFg8DSiRz4E37mdJ", + "type": "test-runs", + "attributes": { + "status": "queued", + "status-timestamps": { + "queued-at": "2023-10-03T18:27:39+00:00" + }, + "created-at": "2023-10-03T18:27:39.239Z", + "updated-at": "2023-10-03T18:27:39.264Z", + "test-configurable-type": "RegistryModule", + "test-configurable-id": "mod-9rjVHLCUE9QD3k6L", + "variables": [ + { + "key": "number", + "value": "4" + } + ], + "filters": [ + "tests/test.tftest.hcl" + ], + "test-directory": "tests", + "verbose": true, + "test-status": null, + "tests-passed": null, + "tests-failed": null, + "tests-errored": null, + "tests-skipped": null, + "source": "tfe-api", + "message": "Queued manually via the Terraform Enterprise API" + }, + "relationships": { + "configuration-version": { + "data": { + "id": "cv-d3zBGFf5DfWY4GY9", + "type": "configuration-versions" + }, + "links": { + "related": "/api/v2/configuration-versions/cv-d3zBGFf5DfWY4GY9" + } + }, + "created-by": { + "data": { + "id": "user-zsRFs3AGaAHzbEfs", + "type": "users" + }, + "links": { + "related": "/api/v2/users/user-zsRFs3AGaAHzbEfs" + } + } + } + } +} +``` + +## Create a Configuration Version for a Test + +`POST /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/test-runs/configuration-versions` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module for which the configuration version is being created. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the configuration version is being created. | +| `:provider` | The name of the provider for which the configuration version is being created. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/test-runs/configuration-versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "cv-aaady7niJMY1wAvx", + "type": "configuration-versions", + "attributes": { + "auto-queue-runs": true, + "error": null, + "error-message": null, + "source": "tfe-api", + "speculative": false, + "status": "pending", + "status-timestamps": {}, + "changed-files": [], + "provisional": false, + "upload-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djM6eFliQ0l1ZEhNUDRMZmdWeExoYWZ1WnFwaCtYQUFSQjFaWVcySkEyT0tyZTZXQ0hjN3ZYQkFvbkJHWkg2Y0U2MDRHRXFvQVl6cUJqQzJ0VkppVHBXTlJNWmpVc1ZTekg5Q1hMZ0hNaUpNdUhib1hGS1RpT3czRGdRaWtPZFZ3VWpDQ1U0S2dhK2xLTUQ2ZFZDaUZ3SktiNytrMlpoVHd0cXdGVHIway8zRkFmejdzMSt0Rm9TNFBTV3dWYjZUTzJVNE1jaW9UZ2VKVFJNRnUvbjBudUp4U0l6VzFDYkNzVVFsb2VFbC9DRFlCTWFsbXBMNzZLUGQxeTJHb09ZTkxHL1d2K1NtcmlEQXptZTh1Q1BwR1dhbVBXQTRiREdlTkI3Qyt1YTRRamFkRzBWYUg3NE52TGpqT1NKbzFrZ3J3QmxnMGhHT3VaTHNhSmo0eXpv" + }, + "relationships": { + "ingress-attributes": { + "data": null, + "links": { + "related": "/api/v2/configuration-versions/cv-aaady7niJMY1wAvx/ingress-attributes" + } + } + }, + "links": { + "self": "/api/v2/configuration-versions/cv-aaady7niJMY1wAvx" + } + } +} +``` + +## Upload Configuration Files for a Test + +`PUT https://archivist.terraform.io/v1/object/<UNIQUE OBJECT ID>` + +**The URL is provided in the `upload-url` attribute when creating a `configuration-versions` resource. After creation, the URL is hidden on the resource and no longer available.** + +### Sample Request + +**@filename is the name of the configuration file you wish to upload.** + +```shell +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @filename \ + https://archivist.terraform.io/v1/object/4c44d964-eba7-4dd5-ad29-1ece7b99e8da +``` + +## List Tests for a Module + +`GET /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/test-runs/` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module which the tests have executed against. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module which the tests have executed against. | +| `:provider` | The name of the provider which the tests have executed against. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling does not automatically encode URLs. + +| Parameter | Description | Required | +| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `page[number]` | If omitted, the endpoint returns the first page. | Optional | +| `page[size]` | If omitted, the endpoint returns 20 runs per page. | Optional | +| `filter[source]` | **Optional.** A comma-separated list of test sources; the result will only include tests that came from one of these sources. Options are listed in [Test Sources](/terraform/enterprise/api-docs/private-registry/tests#test-sources). | | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/test-runs +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "trun-KFg8DSiRz4E37mdJ", + "type": "test-runs", + "attributes": { + "status": "finished", + "status-timestamps": { + "queued-at": "2023-10-03T18:27:39+00:00", + "started-at": "2023-10-03T18:27:41+00:00", + "finished-at": "2023-10-03T18:27:53+00:00" + }, + "log-read-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djM6eFliQ0l1ZEhNUDRMZmdWeExoYWZ1WnFwaCtYQUFSQjFaWVcySkEyT0tyZTZXQ0hjN3ZYQkFvbkJHWkg2Y0U2MDRHRXFvQVl6cUJqQzJ0VkppVHBXTlJNWmpVc1ZTekg5Q1hMZ0hNaUpNdUhib1hGS1RpT3czRGdRaWtPZFZ3VWpDQ1U0S2dhK2xLTUQ2ZFZDaUZ3SktiNytrMlpoVHd0cXdGVHIway8zRkFmejdzMSt0Rm9TNFBTV3dWYjZUTzJVNE1jaW9UZ2VKVFJNRnUvbjBudUp4U0l6VzFDYkNzVVFsb2VFbC9DRFlCTWFsbXBMNzZLUGQxeTJHb09ZTkxHL1d2K1NtcmlEQXptZTh1Q1BwR1dhbVBXQTRiREdlTkI3Qyt1YTRRamFkRzBWYUg3NE52TGpqT1NKbzFrZ3J3QmxnMGhHT3VaTHNhSmo0eXpv", + "created-at": "2023-10-03T18:27:39.239Z", + "updated-at": "2023-10-03T18:27:53.574Z", + "test-configurable-type": "RegistryModule", + "test-configurable-id": "mod-9rjVHLCUE9QD3k6L", + "variables": [ + { + "key": "number", + "value": "4" + } + ], + "filters": [ + "tests/test.tftest.hcl" + ], + "test-directory": "tests", + "verbose": true, + "test-status": "pass", + "tests-passed": 1, + "tests-failed": 0, + "tests-errored": 0, + "tests-skipped": 0, + "source": "tfe-api", + "message": "Queued manually via the Terraform Enterprise API" + }, + "relationships": { + "configuration-version": { + "data": { + "id": "cv-d3zBGFf5DfWY4GY9", + "type": "configuration-versions" + }, + "links": { + "related": "/api/v2/configuration-versions/cv-d3zBGFf5DfWY4GY9" + } + }, + "created-by": { + "data": { + "id": "user-zsRFs3AGaAHzbEfs", + "type": "users" + }, + "links": { + "related": "/api/v2/users/user-zsRFs3AGaAHzbEfs" + } + } + } + }, + {...} + ] +} +``` + +## Get Test Details + +`GET /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/test-runs/:test_run_id` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module which the test was executed against. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module which the test was executed against. | +| `:provider` | The name of the provider which the test was executed against. | +| `:test_run_id` | The test ID to get. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/test-runs/trun-xFMAHM3FhkFBL6Z7 +``` + +### Sample Response + +```json +{ + "data": { + "id": "trun-KFg8DSiRz4E37mdJ", + "type": "test-runs", + "attributes": { + "status": "finished", + "status-timestamps": { + "queued-at": "2023-10-03T18:27:39+00:00", + "started-at": "2023-10-03T18:27:41+00:00", + "finished-at": "2023-10-03T18:27:53+00:00" + }, + "log-read-url": "https://archivist.terraform.io/v1/object/dmF1bHQ6djM6eFliQ0l1ZEhNUDRMZmdWeExoYWZ1WnFwaCtYQUFSQjFaWVcySkEyT0tyZTZXQ0hjN3ZYQkFvbkJHWkg2Y0U2MDRHRXFvQVl6cUJqQzJ0VkppVHBXTlJNWmpVc1ZTekg5Q1hMZ0hNaUpNdUhib1hGS1RpT3czRGdRaWtPZFZ3VWpDQ1U0S2dhK2xLTUQ2ZFZDaUZ3SktiNytrMlpoVHd0cXdGVHIway8zRkFmejdzMSt0Rm9TNFBTV3dWYjZUTzJVNE1jaW9UZ2VKVFJNRnUvbjBudUp4U0l6VzFDYkNzVVFsb2VFbC9DRFlCTWFsbXBMNzZLUGQxeTJHb09ZTkxHL1d2K1NtcmlEQXptZTh1Q1BwR1dhbVBXQTRiREdlTkI3Qyt1YTRRamFkRzBWYUg3NE52TGpqT1NKbzFrZ3J3QmxnMGhHT3VaTHNhSmo0eXpv", + "created-at": "2023-10-03T18:27:39.239Z", + "updated-at": "2023-10-03T18:27:53.574Z", + "test-configurable-type": "RegistryModule", + "test-configurable-id": "mod-9rjVHLCUE9QD3k6L", + "variables": [ + { + "key": "number", + "value": "4" + } + ], + "filters": [ + "tests/test.tftest.hcl" + ], + "test-directory": "tests", + "verbose": true, + "test-status": "pass", + "tests-passed": 1, + "tests-failed": 0, + "tests-errored": 0, + "tests-skipped": 0, + "source": "tfe-api", + "message": "Queued manually via the Terraform Enterprise API" + }, + "relationships": { + "configuration-version": { + "data": { + "id": "cv-d3zBGFf5DfWY4GY9", + "type": "configuration-versions" + }, + "links": { + "related": "/api/v2/configuration-versions/cv-d3zBGFf5DfWY4GY9" + } + }, + "created-by": { + "data": { + "id": "user-zsRFs3AGaAHzbEfs", + "type": "users" + }, + "links": { + "related": "/api/v2/users/user-zsRFs3AGaAHzbEfs" + } + } + } + } +} +``` + +## Cancel a Test + +`POST /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/test-runs/:test_run_id/cancel` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization to create a test in. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module for which the test is being canceled. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the test is being canceled. | +| `:provider` | The name of the provider for which the test is being canceled. | +| `:test_run_id` | The test ID to cancel. | + +Use the `cancel` action to interrupt a test that is currently running. The action sends an `INT` signal to the running Terraform process, which instructs Terraform to safely end the tests and attempt to teardown any infrastructure that your tests create. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------ | +| [202][] | none | Successfully queued a cancel request. | +| [409][] | [JSON API error object][] | Test was not running; cancel not allowed. | +| [404][] | [JSON API error object][] | Test was not found or user not authorized. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/test-runs/trun-xFMAHM3FhkFBL6Z7/cancel +``` + +## Forcefully cancel a Test + +`POST /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/test-runs/:test_run_id/force-cancel` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the `owners` team or a member of the `owners` team. | +| `:namespace` | The namespace of the module for which the test is being force-canceled. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the test is being force-canceled. | +| `:provider` | The name of the provider for which the test is being force-canceled. | +| `:test_run_id` | The test ID to cancel. | + +The `force-cancel` action ends the test immediately. Once invoked, Terraform places the test into a `canceled` state and terminates the running Terraform process. + +~> **Warning:** This endpoint has potentially dangerous side-effects, including loss of any in-flight state in the running Terraform process. Use this operation with extreme caution. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | -------------------------------------------------------------- | +| [202][] | none | Successfully queued a cancel request. | +| [409][] | [JSON API error object][] | Test was not running, or has not been canceled non-forcefully. | +| [404][] | [JSON API error object][] | Test was not found or user not authorized. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/test-runs/trun-xFMAHM3FhkFBL6Z7/force-cancel +``` + +## Create an Environment Variable for Module Tests + +`POST /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/vars` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization of the module. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module for which the testing environment variable is being created. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the testing environment variable is being created. | +| `:provider` | The name of the provider for which the testing environment variable is being created. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | none | Must be `"vars"`. | +| `data.attributes.key` | string | none | The variable's name. Test variable keys must begin with a letter or underscore and can only contain letters, numbers, and underscores. | +| `data.attributes.value` | string | `""` | The value of the variable. | +| `data.attributes.description` | string | none | The description of the variable. | +| `data.attributes.category` | string | none | This must be `"env"`. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. When set to `true`, Terraform writes the variable once and is not visible thereafter. | + +### Sample Payload + +```json +{ + "data": { + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "description":"some description", + "category":"env", + "sensitive":false + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/vars +``` + +### Sample Response + + { + "data": { + "id": "var-xSCUzCxdqMs2ygcg", + "type": "vars", + "attributes": { + "key": "keykey", + "value": "some_value", + "sensitive": false, + "category": "env", + "hcl": false, + "created-at": "2023-10-03T19:47:05.393Z", + "description": "some description", + "version-id": "699b14ea5d5e5c02f6352fac6bfd0a1424c21d32be14d1d9eb79f5e1f28f663a" + }, + "links": { + "self": "/api/v2/vars/var-xSCUzCxdqMs2ygcg" + } + } + } + +## List Test Variables for a Module + +`GET /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/vars` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the `owners` team or a member of the `owners` team. | +| `:namespace` | The namespace of the module which the test environment variables were created for. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module which the test environment variables were created for. | +| `:provider` | The name of the provider which the test environment variables were created for. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/vars +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "var-xSCUzCxdqMs2ygcg", + "type": "vars", + "attributes": { + "key": "keykey", + "value": "some_value", + "sensitive": false, + "category": "env", + "hcl": false, + "created-at": "2023-10-03T19:47:05.393Z", + "description": "some description", + "version-id": "699b14ea5d5e5c02f6352fac6bfd0a1424c21d32be14d1d9eb79f5e1f28f663a" + }, + "links": { + "self": "/api/v2/vars/var-xSCUzCxdqMs2ygcg" + } + } + ] +} +``` + +## Update Test Variables for a Module + +`PATCH /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/vars/variable_id` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the "owners" team or a member of the "owners" team. | +| `:namespace` | The namespace of the module for which the test environment variable is being updated. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the test environment variable is being updated. | +| `:provider` | The name of the provider for which the test environment variable is being updated. | +| `:variable_id` | The ID of the variable to update. | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.attributes` | object | none | New attributes for the variable. This object can include `key`, `value`, `description`, `category`, and `sensitive` properties. Refer to [Create an Environment Variable for Module Tests](#create-an-environment-variable-for-module-tests) for additional information. All properties are optional. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "key":"name", + "value":"mars", + "description": "new description", + "category":"env", + "sensitive": false + }, + "type":"vars" + } +} +``` + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/vars/var-yRmifb4PJj7cLkMG +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "type":"vars", + "attributes": { + "key":"name", + "value":"mars", + "description":"new description", + "sensitive":false, + "category":"env", + "hcl":false + } + } +} +``` + +## Delete Test Variable for a Module + +`DELETE /organizations/:organization_name/tests/registry-modules/private/:namespace/:name/:provider/vars/variable_id` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization for the module. The organization must already exist, and the token authenticating the API request must belong to the `owners` team or a member of the `owners` team. | +| `:namespace` | The namespace of the module for which the test environment variable is being deleted. For private modules this is the same as the `:organization_name` parameter. | +| `:name` | The name of the module for which the test environment variable is being deleted. | +| `:provider` | The name of the provider for which the test environment variable is being deleted. | +| `:variable_id` | The ID of the variable to delete. | + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/my-organization/tests/registry-modules/private/my-organization/registry-name/registry-provider/vars/var-yRmifb4PJj7cLkMG +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/project-team-access.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/project-team-access.mdx new file mode 100644 index 0000000000..84b479ca00 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/project-team-access.mdx @@ -0,0 +1,523 @@ +--- +page_title: /team-projects API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/team-projects` endpoint to read, add, + update, and remove team access from a project. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Project team access API reference + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/project-permissions.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +The team access APIs are used to associate a team to permissions on a project. A single `team-project` resource contains the relationship between the Team and Project, including the privileges the team has on the project. + +## Resource permissions + +A `team-project` resource represents a team's local permissions on a specific project. Teams can also have organization-level permissions that grant access to projects. HCP Terraform uses the more restrictive access level. For example, a team with the **Manage projects** permission enabled has admin access on all projects, even if their `team-project` on a particular project only grants read access. For more information, refer to [Managing Project Access](/terraform/enterprise/users-teams-organizations/teams/manage#managing-project-access). + +Any member of an organization can view team access relative to their own team memberships, including secret teams of which they are a member. Organization owners and project admins can modify team access or view the full set of secret team accesses. The organization token and the owners team token can act as an owner on these endpoints. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information. + +## Project Team Access Levels + +| Access Level | Description | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `read` | Read project and Read workspace access role on project workspaces | +| `write` | Read project and Write workspace access role on project workspaces | +| `maintain` | Read project and Admin workspace access role on project workspaces | +| `admin` | Admin project, Admin workspace access role on project workspaces, create workspaces within project, move workspaces between projects, manage project team access | +| `custom` | Custom access permissions on project and project's workspaces | + +## List Team Access to a Project + +`GET /team-projects` + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-projects"`) | The request was successful | +| [404][] | [JSON API error object][] | Project not found or user unauthorized to perform action | + +### Query Parameters + +[These are standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). + +| Parameter | Description | +| --------------------- | ----------------------------------------------------- | +| `filter[project][id]` | **Required.** The project ID to list team access for. | +| `page[number]` | **Optional.** | +| `page[size]` | **Optional.** | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + "https://app.terraform.io/api/v2/team-projects?filter%5Bproject%5D%5Bid%5D=prj-ckZoJwdERaWcFHwi" +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "tprj-TLznAnYdcsD2Dcmm", + "type": "team-projects", + "attributes": { + "access": "read", + "project-access": { + "settings": "read", + "teams": "none" + }, + "workspace-access": { + "create": false, + "move": false, + "locking": false, + "delete": false, + "runs": "read", + "variables": "read", + "state-versions": "read", + "sentinel-mocks": "none", + "run-tasks": false + } + }, + "relationships": { + "team": { + "data": { + "id": "team-KpibQGL5GqRAWBwT", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-KpibQGL5GqRAWBwT" + } + }, + "project": { + "data": { + "id": "prj-ckZoJwdERaWcFHwi", + "type": "projects" + }, + "links": { + "related": "/api/v2/projects/prj-ckZoJwdERaWcFHwi" + } + } + }, + "links": { + "self": "/api/v2/team-projects/tprj-TLznAnYdcsD2Dcmm" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/team-projects?filter%5Bproject%5D%5Bid%5D=prj-ckZoJwdERaWcFHwi&page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/team-projects?filter%5Bproject%5D%5Bid%5D=prj-ckZoJwdERaWcFHwi&page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/team-projects?filter%5Bproject%5D%5Bid%5D=prj-ckZoJwdERaWcFHwi&page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +## Show a Team Access relationship + +`GET /team-projects/:id` + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "team-projects"`) | The request was successful | +| [404][] | [JSON API error object][] | Team access not found or user unauthorized to perform action | + +| Parameter | Description | +| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the team/project relationship. Obtain this from the [list team access action](#list-team-access-to-a-project) described above. | + +As mentioned in [Add Team Access to a Project](#add-team-access-to-a-project) and [Update to a Project](#update-team-access-to-a-project), several permission attributes are not editable unless you set `access` to `custom`. If you set `access` to `read`, `plan`, `write`, or `admin`, certain attributes are read-only and reflect the _implicit permissions_ granted to the current access level. + +For example, if you set `access` to `read`, the implicit permission level for project settings and workspace run is "read". Conversely, if you set the access level to `admin`, the implicit permission level for the project settings is "delete", while the workspace runs permission is "apply". + +Several permission attributes are not editable unless `access` is set to `custom`. When access is `read`, `plan`, `write`, or `admin`, these attributes are read-only and reflect the implicit permissions granted to the current access level. + +For example, when access is `read`, the implicit level for the project settings and workspace runs permissions are "read". Conversely, when the access level is `admin`, the implicit level for the project settings is "delete" and the workspace runs permission is "apply". To see all of the implied permissions at different access levels, see [Implied Custom Permission Levels](#implied-custom-permission-levels). + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/team-projects/tprj-s68jV4FWCDwWvQq8 +``` + +### Sample Response + +```json +{ + "data": { + "id": "tprj-TLznAnYdcsD2Dcmm", + "type": "team-projects", + "attributes": { + "access": "read", + "project-access": { + "settings": "read", + "teams": "none" + }, + "workspace-access": { + "create": false, + "move": false, + "locking": false, + "delete": false, + "runs": "read", + "variables": "read", + "state-versions": "read", + "sentinel-mocks": "none", + "run-tasks": false + } + }, + "relationships": { + "team": { + "data": { + "id": "team-KpibQGL5GqRAWBwT", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-KpibQGL5GqRAWBwT" + } + }, + "project": { + "data": { + "id": "prj-ckZoJwdERaWcFHwi", + "type": "projects" + }, + "links": { + "related": "/api/v2/projects/prj-ckZoJwdERaWcFHwi" + } + } + }, + "links": { + "self": "/api/v2/team-projects/tprj-TLznAnYdcsD2Dcmm" + } + } +} +``` + +## Add Team Access to a Project + +`POST /team-projects` + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | ---------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-projects"`) | The request was successful | +| [404][] | [JSON API error object][] | Project or Team not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"team-projects"`. | +| `data.attributes.access` | string | | The type of access to grant. Valid values are `read`, `write`, `maintain`, `admin`, or `custom`. | +| `data.relationships.project.data.type` | string | | Must be `projects`. | +| `data.relationships.project.data.id` | string | | The project ID to which the team is to be added. | +| `data.relationships.team.data.type` | string | | Must be `teams`. | +| `data.relationships.team.data.id` | string | | The ID of the team to add to the project. | +| `data.attributes.project-access.settings` | string | "read" | If `access` is `custom`, the permission to grant for the project's settings. Can only be used when `access` is `custom`. Valid values include `read`, `update`, or `delete`. | +| `data.attributes.project-access.teams` | string | "none" | If `access` is `custom`, the permission to grant for the project's teams. Can only be used when `access` is `custom`. Valid values include `none`, `read`, or `manage`. | +| `data.attributes.workspace-access.runs` | string | "read" | If `access` is `custom`, the permission to grant for the project's workspaces' runs. Can only be used when `access` is `custom`. Valid values include `read`, `plan`, or `apply`. | +| `data.attributes.workspace-access.sentinel-mocks` | string | "none" | If `access` is `custom`, the permission to grant for the project's workspaces' Sentinel mocks. Can only be used when `access` is `custom`. Valid values include `none`, or `read`. | +| `data.attributes.workspace-access.state-versions` | string | "none" | If `access` is `custom`, the permission to grant for the project's workspaces state versions. Can only be used when `access` is `custom`. Valid values include `none`, `read-outputs`, `read`, or `write`. | +| `data.attributes.workspace-access.variables` | string | "none" | If `access` is `custom`, the permission to grant for the project's workspaces' variables. Can only be used when `access` is `custom`. Valid values include `none`, `read`, or `write`. | +| `data.attributes.workspace-access.create` | boolean | false | If `access` is `custom`, this permission allows the team to create workspaces in the project. | +| `data.attributes.workspace-access.locking` | boolean | false | If `access` is `custom`, the permission granting the ability to manually lock or unlock the project's workspaces. Can only be used when `access` is `custom`. | +| `data.attributes.workspace-access.delete` | boolean | false | If `access` is `custom`, the permission granting the ability to delete the project's workspaces. Can only be used when `access` is `custom`. | +| `data.attributes.workspace-access.move` | boolean | false | If `access` is `move`, this permission allows the team to move workspaces into and out of the project. The team must also have permissions to the project(s) receiving the the workspace(s). | +| `data.attributes.workspace-access.run-tasks` | boolean | false | If `access` is `custom`, this permission allows the team to manage run tasks within the project's workspaces. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "access": "read" + }, + "relationships": { + "project": { + "data": { + "type": "projects", + "id": "prj-ckZoJwdERaWcFHwi" + } + }, + "team": { + "data": { + "type": "teams", + "id": "team-xMGyoUhKmTkTzmAy" + } + } + }, + "type": "team-projects" + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/team-projects +``` + +### Sample Response + +```json +{ + "data": { + "id": "tprj-WbG7p5KnT7S7HZqw", + "type": "team-projects", + "attributes": { + "access": "read", + "project-access": { + "settings": "read", + "teams": "none" + }, + "workspace-access": { + "create": false, + "move": false, + "locking": false, + "runs": "read", + "variables": "read", + "state-versions": "read", + "sentinel-mocks": "none", + "run-tasks": false + } + }, + "relationships": { + "team": { + "data": { + "id": "team-xMGyoUhKmTkTzmAy", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-xMGyoUhKmTkTzmAy" + } + }, + "project": { + "data": { + "id": "prj-ckZoJwdERaWcFHwi", + "type": "projects" + }, + "links": { + "related": "/api/v2/projects/prj-ckZoJwdERaWcFHwi" + } + } + }, + "links": { + "self": "/api/v2/team-projects/tprj-WbG7p5KnT7S7HZqw" + } + } +} +``` + +## Update Team Access to a Project + +`PATCH /team-projects/:id` + +| Status | Response | Reason | +| ------- | ----------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-projects"`) | The request was successful | +| [404][] | [JSON API error object][] | Team Access not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +| Parameter | | | Description | +| ------------------------ | ------ | - | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | | | The ID of the team/project relationship. Obtain this from the [list team access action](#list-team-access-to-a-project) described above. | +| `data.attributes.access` | string | | The type of access to grant. Valid values are `read`, `write`, `maintain`, `admin`, or `custom`. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/team-projects/tprj-WbG7p5KnT7S7HZqw +``` + +### Sample Payload + +```json +{ + "data": { + "id": "tprj-WbG7p5KnT7S7HZqw", + "attributes": { + "access": "custom", + "project-access": { + "settings": "delete" + "teams": "manage", + }, + "workspace-access" : { + "runs": "apply", + "sentinel-mocks": "read", + "state-versions": "write", + "variables": "write", + "create": true, + "locking": true, + "delete": true, + "move": true, + "run-tasks": true + } + } + } +} +``` + +### Sample Response + +```json +{ + "data": { + "id": "tprj-WbG7p5KnT7S7HZqw", + "type": "team-projects", + "attributes": { + "access": "custom", + "project-access": { + "settings": "delete" + "teams": "manage", + }, + "workspace-access" : { + "runs": "apply", + "sentinel-mocks": "read", + "state-versions": "write", + "variables": "write", + "create": true, + "locking": true, + "delete": true, + "move": true, + "run-tasks": true + } + }, + "relationships": { + "team": { + "data": { + "id": "team-xMGyoUhKmTkTzmAy", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-xMGyoUhKmTkTzmAy" + } + }, + "project": { + "data": { + "id": "prj-ckZoJwdERaWcFHwi", + "type": "projects" + }, + "links": { + "related": "/api/v2/projects/prj-ckZoJwdERaWcFHwi" + } + } + }, + "links": { + "self": "/api/v2/team-projects/tprj-WbG7p5KnT7S7HZqw" + } + } +} +``` + +## Remove Team Access from a Project + +`DELETE /team-projects/:id` + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------ | +| [204][] | | The Team Access was successfully destroyed | +| [404][] | [JSON API error object][] | Team Access not found or user unauthorized to perform action | + +| Parameter | Description | +| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the team/project relationship. Obtain this from the [list team access action](#list-team-access-to-a-project) described above. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/team-projects/tprj-WbG7p5KnT7S7HZqw +``` + +## Implied Custom Permission Levels + +As mentioned above, when setting team access levels (`read`, `write`, `maintain`, or `admin`), you can individually set the following permissions if you use the `custom` access level. +The below table lists each access level alongside its implicit custom permission level. If you use the `custom` access level and do not specify a certain permission's level, that permission uses the default value listed below. + +| Permissions | `read` | `write` | `maintain` | `admin ` | `custom` default | +| ------------------------------- | ------ | ------- | ---------- | -------- | ---------------- | +| project-access.settings | "read" | "read" | "read" | "delete" | "read" | +| project-access.teams | "none" | "none" | "none" | "manage" | "none" | +| workspace-access.runs | "read" | "apply" | "apply" | "apply" | "read" | +| workspace-access.sentinel-mocks | "none" | "read" | "read" | "read" | "none" | +| workspace-access.state-versions | "read" | "write" | "write" | "write" | "none" | +| workspace-access.variables | "read" | "write" | "write" | "write" | "none" | +| workspace-access.create | false | false | true | true | false | +| workspace-access.locking | false | true | true | true | false | +| workspace-access.delete | false | false | true | true | false | +| workspace-access.move | false | false | false | true | false | +| workspace-access.run-tasks | false | false | true | true | false | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/projects.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/projects.mdx new file mode 100644 index 0000000000..ef2f797665 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/projects.mdx @@ -0,0 +1,718 @@ +--- +page_title: /projects API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/projects` endpoint to list, show, create, + update, and delete an organization's projects. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +[speculative plans]: /terraform/enterprise/run/remote-operations#speculative-plans + +# Projects API reference + +This topic provides reference information about the projects API. + +The scope of the API includes the following endpoints: + +| Method | Path | Action | +| -------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `POST` | `/organizations/:organization_name/projects` | Call this endpoint to [create a project](#create-a-project). | +| `PATCH` | `/projects/:project_id` | Call this endpoint to [update an existing project](#update-a-project). | +| `GET` | `/organizations/:organization_name/projects` | Call this endpoint to [list existing projects](#list-projects). | +| `GET` | `/projects/:project_id` | Call this endpoint to [show project details](#show-project). | +| `DELETE` | `/projects/:project_id` | Call this endpoint to [delete a project](#delete-a-project). | +| `GET` | `/projects/:project_id/tag-bindings` | Call this endpoint to [list project tag bindings](#list-project-tag-bindings). (For projects, this returns the same result set as the `effective-tag-bindings` endpoint.) | +| `GET` | `/projects/:project_id/effective-tag-bindings` | Call this endpoint to [list project effective tag bindings](#list-project-tag-bindings). (For projects, this returns the same result set as the `tag-bindings` endpoint.) | + +## Requirements + +You must be on a team with one of the **Owners** or **Manage projects** permissions settings enabled to create and manage projects. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information. + +You can also provide an organization API token to call project API endpoints. Refer to [Organization API Tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens) for additional information. + +## Create a Project + +`POST /organizations/:organization_name/projects` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create the project in. The organization must already exist in the system, and the user must have permissions to create new projects. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------- | --------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | none | Must be `"projects"`. | +| `data.attributes.name` | string | | The name of the project. The name can contain letters, numbers, spaces, `-`, and `_`, but cannot start or end with spaces. It must be at least three characters long and no more than 40 characters long. | +| `data.attributes.description` | string | none | Optional. The description of the project. It must be no more than 256 characters long. | +| `data.attributes.auto-destroy-activity-duration` | string | none | Specifies the default for how long each workspace in the project should wait before automatically destroying its infrastructure. You can specify a duration up to four digits that is greater than `0` followed by either a `d` for days or `h` hours. For example, to queue destroy runs after fourteen days of inactivity set `auto-destroy-activity-duration: "14d"`. All future workspaces in this project inherit this default value. Refer to [Automatically destroy inactive workspaces](/terraform/enterprise/projects/managing#automatically-destroy-inactive-workspaces) for additional information. | +| `data.relationships.tag-bindings.data` | list of objects | none | Specifies a list of tags to bind to the project. Workspaces inherit the tags bound to their project. | +| `data.relationships.tag-bindings.data.type` | string | none | Must be `tag-bindings` for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.key` | string | none | Specifies the tag key for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.value` | string | none | Specifies the tag value for each object in the list. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "name": "Test Project", + "description": "An example project for documentation.", + }, + "type": "projects", + "relationships": { + "tag-bindings": { + "data": [ + { + "type": "tag-bindings", + "attributes": { + "key": "environment", + "value": "development" + } + }, + ] + } + } + } +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/projects +``` + +### Sample Response + +```json +{ + "data": { + "id": "prj-WsVcWRr7SfxRci1v", + "type": "projects", + "attributes": { + "name": "Test Project", + "description": "An example project for documentation.", + "permissions": { + "can-update": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-WsVcWRr7SfxRci1v/tag-bindings" + } + }, + "effective-tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-WsVcWRr7SfxRci1v/effective-tag-bindings" + } + } + }, + "links": { + "self": "/api/v2/projects/prj-WsVcWRr7SfxRci1v" + } + } +} +``` + +## Update a Project + +Call the following endpoint to update a project: + +`PATCH /projects/:project_id` + +| Parameter | Description | +| ------------- | ------------------------------- | +| `:project_id` | The ID of the project to update | + +### Request Body + +These PATCH endpoints require a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------- | --------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | none | Must be `"projects"`. | +| `data.attributes.name` | string | existing value | A new name for the project. The name can contain letters, numbers, spaces, `-`, and `_`, but cannot start or end with spaces. It must be at least 3 characters long and no more than 40 characters long. | +| `data.attributes.description` | string | existing value | The new description for the project. It must be no more than 256 characters long. | +| `data.attributes.auto-destroy-activity-duration` | string | none | Specifies how long each workspace in the project should wait before automatically destroying its infrastructure by default. You can specify a duration up to four digits that is greater than `0` followed by either a `d` for days or `h` hours. For example, to queue destroy runs after fourteen days of inactivity set `auto-destroy-activity-duration: "14d"`. When you update this value, all workspaces in the project receive the new value unless you previously configured an override. Refer to [Automatically destroy inactive workspaces](/terraform/enterprise/projects/managing#automatically-destroy-inactive-workspaces) for additional information. | +| `data.relationships.tag-bindings.data` | list of objects | none | Specifies a list of tags to bind to the project. Workspaces inherit the tags bound to their project. | +| `data.relationships.tag-bindings.data.type` | string | none | Must be `tag-bindings` for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.key` | string | none | Specifies the tag key for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.value` | string | none | Specifies the tag value for each object in the list. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "name": "Infrastructure Project" + }, + "type": "projects", + "relationships": { + "tag-bindings": { + "data": [ + { + "type": "tag-bindings", + "attributes": { + "key": "environment", + "value": "staging" + } + } + ] + } + } + } +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/projects/prj-WsVcWRr7SfxRci1v +``` + +### Sample Response + +```json +{ + "data": { + "id": "prj-WsVcWRr7SfxRci1v", + "type": "projects", + "attributes": { + "name": "Infrastructure Project", + "description": null, + "workspace-count": 4, + "team-count": 2, + "permissions": { + "can-update": true, + "can-destroy": true, + "can-create-workspace": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-WsVcWRr7SfxRci1v/tag-bindings" + } + }, + "effective-tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-WsVcWRr7SfxRci1v/effective-tag-bindings" + } + } + }, + "links": { + "self": "/api/v2/projects/prj-WsVcWRr7SfxRci1v" + } + } +} +``` + +## List projects + +This endpoint lists projects in the organization. + +`GET /organizations/:organization_name/projects` + +| Parameter | Description | +| -------------------- | ----------------------------------------------------- | +| `:organization_name` | The name of the organization to list the projects of. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 projects per page. | +| `q` | **Optional.** A search query string. This query searches projects by name. This search is case-insensitive. If both `q` and `filter[names]` are specified, `filter[names]` will be used. | +| `filter[names]` | **Optional.** If specified, returns the project with the matching name. This filter is case-insensitive. If multiple comma separated values are specified, projects matching any of the names are returned. | +| `filter[permissions][create-workspace]` | **Optional.** If present, returns a list of projects that the authenticated user can create workspaces in. | +| `filter[permissions][update]` | **Optional.** If present, returns a list of projects that the authenticated user can update. | +| `sort` | **Optional.** Allows sorting the organization's projects by `"name"`. Prepending a hyphen to the sort parameter reverses the order. For example, `"-name"` sorts by name in reverse alphabetical order. If omitted, the default sort order is arbitrary but stable. | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/projects +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "prj-W6k9K23oSXRHGpj3", + "type": "projects", + "attributes": { + "name": "Default Project", + "description": null, + "workspace-count": 2, + "team-count": 1, + "permissions": { + "can-update": true, + "can-destroy": true, + "can-create-workspace": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-W6k9K23oSXRHGpj3/tag-bindings" + } + }, + "effective-tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-W6k9K23oSXRHGpj3/effective-tag-bindings" + } + } + }, + "links": { + "self": "/api/v2/projects/prj-W6k9K23oSXRHGpj3" + } + }, + { + "id": "prj-YoriCxAawTMDLswn", + "type": "projects", + "attributes": { + "name": "Infrastructure Project", + "description": null, + "workspace-count": 4, + "team-count": 2, + "permissions": { + "can-update": true, + "can-destroy": true, + "can-create-workspace": true + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-YoriCxAawTMDLswn/tag-bindings" + } + }, + "effective-tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-YoriCxAawTMDLswn/effective-tag-bindings" + } + } + }, + "links": { + "self": "/api/v2/projects/prj-YoriCxAawTMDLswn" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/projects?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/projects?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/my-organization/projects?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "status-counts": { + "total": 2, + "matching": 2 + }, + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} +``` + +## Show project + +`GET /projects/:project_id` + +| Parameter | Description | +| ------------- | -------------- | +| `:project_id` | The project ID | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/projects/prj-WsVcWRr7SfxRci1v +``` + +### Sample Response + +```json +{ + "data": { + "id": "prj-WsVcWRr7SfxRci1v", + "type": "projects", + "attributes": { + "name": "Infrastructure Project", + "description": null, + "workspace-count": 4, + "team-count": 2, + "permissions": { + "can-update": true, + "can-destroy": true, + "can-create-workspace": true + }, + "auto-destroy-activity-duration": "2d" + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-WsVcWRr7SfxRci1v/tag-bindings" + } + }, + "effective-tag-bindings": { + "links": { + "related": "/api/v2/projects/prj-WsVcWRr7SfxRci1v/effective-tag-bindings" + } + } + }, + "links": { + "self": "/api/v2/projects/prj-WsVcWRr7SfxRci1v" + } + } +} +``` + +## Delete a project + +A project cannot be deleted if it contains <!-- BEGIN: TFC:only -->stacks or <!-- END: TFC:only -->workspaces. + +`DELETE /projects/:project_id` + +| Parameter | Description | +| ------------- | ------------------------------- | +| `:project_id` | The ID of the project to delete | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ----------------------------------------------------------------- | +| [204][] | No Content | Successfully deleted the project | +| [403][] | [JSON API error object][] | Not authorized to perform a force delete on the project | +| [404][] | [JSON API error object][] | Project not found, or user unauthorized to perform project delete | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/projects/prj-WsVcWRr7SfxRci1v +``` + +## List project tag bindings + +Call the following endpoints to list the tags bound to a project. + +- `GET /projects/:project_id/tag-bindings`: Lists the set of tags associated with the project. Tags set on the project are inherited by its workspaces. + +| Parameter | Description | +| ------------- | ---------------------- | +| `:project_id` | The ID of the project. | + +### Sample request + +The following request returns all tags bound to a project with the ID +`prj-WsVcWRr7SfxRci1v`. + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/projects/prj-WsVcWRr7SfxRci1v/tag-bindings +``` + +### Sample response + +```json +{ + "data": [ + { + "type": "tag-bindings", + "attributes": { + "key": "added", + "value": "new", + "created-at": "2024-11-20T00:04:47.948Z" + } + }, + { + "type": "tag-bindings", + "attributes": { + "key": "aww", + "value": "aww", + "created-at": "2024-11-20T00:04:47.948Z" + } + } + ] +} +``` + +## Add or update tag bindings on a project + +Use this endpoint to add key-value tag bindings to an existing resource or to update +existing tag binding values on the resource. You cannot use this endpoint to remove tag bindings from the resource. This endpoint is useful for ensuring that a modification is additive. + +Tag bindings have the following constraints and behaviors: + +- A project can have up to 10 tags. +- All workspaces within the project inherit its tag bindings. +- Keys can have up to 128 characters. +- Keys support all alphanumeric characters and the symbols `_`, `.`, `=`, `+`, `-`, `@`, `:`. +- Values can have up to 256 characters. +- Values support all alphanumeric characters and the symbols `_`, `.`, `=`, `+`, `-`, `@`, `:`. +- You cannot use `hc:` and `hcp:` as key prefixes. + +`PATCH /projects/:project_id/tag-bindings` + +| Parameter | Description | +| ------------- | ------------------------------- | +| `:project_id` | The ID of the project to update | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +It is important to note that for each data item, `type`, as well as `attributes.key` is required. + +| Key path | Type | Default | Description | +| ------------------------- | ------ | ------- | ------------------------------------- | +| `data[].type` | string | | Must be `"tag-bindings"`. | +| `data[].attributes.key` | string | | The key of the tag to add or update. | +| `data[].attributes.value` | string | | The name of the tag to add or update. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "tag-bindings", + "attributes": { + "key": "costcenter", + "value": "123" + } + }, + { + "type": "tag-bindings", + "attributes": { + "key": "bar", + "value": "baz" + } + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/projects/prj-82d2281aa259ba09/tag-bindings +``` + +### Sample Response + +Example status code 200 response after updating tag bindings: + +<CodeBlockConfig hideClipboard> + +```json +{ + "data": [ + { + "id": "tb-e4a5847b2cf06559", + "type": "tag-bindings", + "attributes": { + "key": "costcenter", + "value": "123" + } + }, + { + "id": "tb-97ce954636f93a6c", + "type": "tag-bindings", + "attributes": { + "key": "bar", + "value": "baz" + } + } + ] +} +``` + +</CodeBlockConfig> + +## Move workspaces into a project + +This endpoint allows you to move one or more workspaces into a project. You must have permission to move workspaces on +the destination project as well as any source project(s). If you are not authorized to move any of the workspaces in the +request, or if any workspaces in the request are not found, then no workspaces will be moved. + +`POST /projects/:project_id/relationships/workspaces` + +| Parameter | Description | +| ------------- | --------------------------------- | +| `:project_id` | The ID of the destination project | + +This POST endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ---------------------------------------------------------- | +| `data[].type` | string | | Must be `"workspaces"` | +| `data[].id` | string | | The ids of workspaces to move into the destination project | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | -------------------------------------------------------------------------------------------------------- | +| [204][] | No Content | Successfully moved workspace(s) | +| [403][] | [JSON API error object][] | Workspace(s) not found, or user is not authorized to move all workspaces out of their current project(s) | +| [404][] | [JSON API error object][] | Project not found, or user unauthorized to move workspaces into project | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "workspaces", + "id": "ws-AQEct2XFuH4HBsmS" + } + ] +} + +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/projects/prj-zXm4y2BjeGPgHtkp/relationships/workspaces +``` + +### Sample Error Response + +```json +{ + "errors": [ + { + "status": "403", + "title": "forbidden", + "detail": "Workspace(s) not found, or you are not authorized to move them: ws-AQEct2XFuH4HBmS" + } + ] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/reserved-tag-keys.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/reserved-tag-keys.mdx new file mode 100644 index 0000000000..51655fd031 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/reserved-tag-keys.mdx @@ -0,0 +1,271 @@ +--- +page_title: /reserved-tag-keys API reference for Terraform Enterprise +description: >- + Use the `/reserved-tag-keys` API endpoints to reserve tag keys that have + special meaning for your organization. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +[speculative plans]: /terraform/enterprise/run/remote-operations#speculative-plans + +# Reserved tag keys API reference + +Use the `/reserved-tag-keys` API endpoints to define and manage tag keys that +have special meaning for your organization. Reserving tag keys enable project +and workspace managers to follow a consistent tagging strategy across the +organization. You can also use them to provide project managers with a means of +disabling overrides for inherited tags. + +The following table describes the available endpoints: + +| Method | Path | Description | +| -------- | ----------------------------------------------------- | --------------------------------------------------------------------------------- | +| `GET` | `/organizations/:organization_name/reserved-tag-keys` | [List reserved tag keys](#list-reserved-tag-keys) for the specified organization. | +| `POST` | `/organizations/:organization_name/reserved-tag-keys` | [Add a reserved tag key](#add-a-reserved-tag-key) to the specified organization. | +| `PATCH` | `/reserved-tags/:reserved_tag_key_id` | [Update a reserved tag key](#add-a-reserved-tag-value) with the specified ID. | +| `DELETE` | `/reserved-tags/:reserved_tag_key_id` | [Delete a reserved tag key](#delete-a-reserved-tag-key) with the specified ID. | + +## Path parameters + +The `/reserved-tag-keys/` API endpoints require the following path parameters: + +| Parameter | Description | +| ---------------------- | ---------------------------------------------------------- | +| `:reserved_tag_key_id` | The external ID of the reserved tag key. | +| `:organization_name` | The name of the organization containing the reserved tags. | + +## List reserved tag keys + +`GET /organizations/:organization_name/reserved-tag-keys` + +### Sample payload + +This endpoint does not require a payload. + +### Sample request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/organizations/my-organization/reserved-tag-keys +``` + +### Sample response + +```json +{ + "data": [ + { + "id": "rtk-jjnTseo8NN1jACbk", + "type": "reserved-tag-keys", + "attributes": { + "key": "environment", + "disable-overrides": false, + "created-at": "2024-08-13T23:06:42.523Z", + "updated-at": "2024-08-13T23:06:42.523Z" + } + }, + { + "id": "rtk-F1s7kKUShAQxhA1b", + "type": "reserved-tag-keys", + "attributes": { + "key": "cost-center", + "disable-overrides": false, + "created-at": "2024-08-13T23:06:51.445Z", + "updated-at": "2024-08-13T23:06:51.445Z" + } + }, + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/reserved-tag-keys?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/reserved-tag-keys?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/my-organization/reserved-tag-keys?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} + +``` + +## Create a reserved tag key + +`POST /organizations/:organization_name/reserved-tag-keys` + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------------------------ | ------- | ------- | --------------------------------- | +| `data.type` | string | none | Must be `reserved-tag-keys`. | +| `data.attributes.key` | string | none | The key targeted by this reserved | +| tag key. | | | | +| `data.attributes.disable-overrides` | boolean | none | If `true`, disables | +| overriding inherited tags with the specified key at the workspace level. | | | | + +### Sample payload + +```json +{ + "data": { + "type": "reserved-tag-keys", + "attributes": { + "key": "environment", + "disable-overrides": false + } + } +} +``` + +### Sample request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/organizations/${ORGANIZATION_NAME}/reserved-tag-keys +``` + +### Sample response + +```json +{ + "data": { + "id": "rtk-Tj86UdGahKGDiYXY", + "type": "reserved-tag-keys", + "attributes": { + "key": "environment", + "disable-overrides": false, + "created-at": "2024-09-04T05:02:06.794Z", + "updated-at": "2024-09-04T05:02:06.794Z" + } + } +} +``` + +## Update a reserved tag key + +`PATCH /reserved-tags/:reserved_tag_key_id` + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------------------------ | ------- | ------- | --------------------------------- | +| `data.type` | string | none | Must be `reserved-tag-keys`. | +| `data.attributes.key` | string | none | The key targeted by this reserved | +| tag key. | | | | +| `data.attributes.disable-overrides` | boolean | none | If `true`, disables | +| overriding inherited tags with the specified key at the workspace level. | | | | + +### Sample payload + +```json +{ + "data": { + "id": "rtk-Tj86UdGahKGDiYXY", + "type": "reserved-tag-keys", + "attributes": { + "key": "env", + "disable-overrides": true, + "created-at": "2024-09-04T05:02:06.794Z", + "updated-at": "2024-09-04T05:02:06.794Z" + } + } +} +``` + +### Sample request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + https://app.terraform.io/api/v2/reserved-tags/${RESERVED_TAG_ID} +``` + +### Sample response + +```json +{ + "data": { + "id": "rtk-zMtWLDftAjY3b5pA", + "type": "reserved-tag-keys", + "attributes": { + "key": "env", + "disable-overrides": true, + "created-at": "2024-09-04T05:05:10.449Z", + "updated-at": "2024-09-04T05:05:13.486Z" + } + } +} +``` + +## Delete a reserved tag key + +`DELETE /reserved-tags/:reserved_tag_key_id` + +### Sample payload + +This endpoint does not require a payload. + +### Sample request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/reserved-tags/rtk-zMtWLDftAjY3b5pA +``` + +### Sample response + +This endpoint does not return a response body. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-task-stages-and-results.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-task-stages-and-results.mdx new file mode 100644 index 0000000000..40c8a1f250 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-task-stages-and-results.mdx @@ -0,0 +1,366 @@ +--- +page_title: /task-stages API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/task-stages` endpoint to read run tasks + and their results, and override run task stages. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API documents]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +[run]: /terraform/enterprise/run/states + +# Run task stages and results API reference + +HCP Terraform uses run task stages and run task results to track [run task](/terraform/enterprise/workspaces/settings/run-tasks) execution. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/run-tasks.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +When HCP Terraform creates a [run][], it reads the run tasks associated to the workspace. Each run task in the workspace is configured to begin during a specific [run stage](/terraform/enterprise/run/states). HCP Terraform creates a run task stage object for each run stage that triggers run tasks. You can configure run tasks during the [Pre-Plan Stage](/terraform/enterprise/run/states#the-pre-plan-stage), [Post-Plan Stage](/terraform/enterprise/run/states#the-post-plan-stage), [Pre-Apply Stage](/terraform/enterprise/run/states#the-pre-apply-stage) and [Post-Apply Stage](/terraform/enterprise/run/states#the-post-apply-stage). + +Run task stages then create a run task result for each run task. For example, a workspace has two run tasks called `alpha` and `beta`. For each run, HCP Terraform creates one run task stage called `post-plan`. That run task stage has two run task results: one for the `alpha` run task and one for the `beta` run task. + +This page lists the endpoints to retrieve run task stages and run task results. Refer to the [Run Tasks API](/terraform/enterprise/api-docs/run-tasks/run-tasks) for endpoints to create and manage run tasks within HCP Terraform. Refer to the [Run Tasks Integration API](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) for endpoints to build custom run tasks for the HCP Terraform ecosystem. + +## Attributes + +### Run Task Stage Status + +The run task stage status is found in `data.attributes.status`, and you can reference the following list of possible values. + +| Status | Description | +| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `pending` | The initial status of a run task stage after creation. | +| `running` | The run task stage is executing one or more tasks, which have not yet completed. | +| `passed` | All of the run task results in the stage passed. | +| `failed` | One more results in the run task stage failed. | +| `awaiting_override` | The task stage is waiting for user input. Once a user manually overrides the failed run tasks, the run returns to the `running` state. | +| `errored` | The run task stage has errored. | +| `canceled` | The run task stage has been canceled. | +| `unreachable` | The run task stage could not be executed. | + +### Run Task Result Status + +The run task result status is found in `data.attributes.status`, and you can reference the following list of possible values. + +| Status | Description | +| ------------- | --------------------------------------------------------------------- | +| `pending` | The initial status of a run task result after creation. | +| `running` | The associated run task is begun execution and has not yet completed. | +| `passed` | The associated run task executed and returned a passing result. | +| `failed` | The associated run task executed and returned a failed result. | +| `errored` | The associated run task has errored during execution. | +| `canceled` | The associated run task execution has been canceled. | +| `unreachable` | The associated run task could not be executed. | + +## List the Run Task Stages in a Run + +`GET /runs/:run_id/task-stages` + +| Parameter | Description | +| --------- | ----------------------------------- | +| `run_id` | The run ID to list task stages for. | + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------- | +| [200][] | Array of [JSON API documents][] (`type: "task-stages"`) | Successfully listed task-stages | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 runs per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/runs/run-XdgtChJuuUwLoSmw/task-stages +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ts-rL5ZsuwfjqfPJcdi", + "type": "task-stages", + "attributes": { + "status": "passed", + "stage": "post_plan", + "status-timestamps": { + "passed-at": "2022-06-08T20:32:12+08:00", + "running-at": "2022-06-08T20:32:11+08:00" + }, + "created-at": "2022-06-08T12:31:56.94Z", + "updated-at": "2022-06-08T12:32:12.315Z" + }, + "relationships": { + "run": { + "data": { + "id": "run-XdgtChJuuUwLoSmw", + "type": "runs" + } + }, + "task-results": { + "data": [ + { + "id": "taskrs-EmnmsEDL1jgd1GTP", + "type": "task-results" + } + ] + }, + "policy-evaluations":{ + "data":[ + { + "id":"poleval-iouaha9KLgGWkBRQ", + "type":"policy-evaluations" + } + ] + } + }, + "links": { + "self": "/api/v2/task-stages/ts-rL5ZsuwfjqfPJcdi" + } + } + ] +} +``` + +## Show a Run Task Stage + +`GET /task-stages/:task_stage_id` + +| Parameter | Description | +| ---------------- | ----------------------------- | +| `:task_stage_id` | The run task stage ID to get. | + +This endpoint shows details of a specific task stage. + +| Status | Response | Reason | +| ------- | --------------------------------------------- | ------------------------------------------- | +| [200][] | [JSON API document][] (`type: "task-stages"`) | Success | +| [404][] | [JSON API error object][] | Task stage not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/task-stages/ts-rL5ZsuwfjqfPJcdi +``` + +### Sample Response + +```json +{ + "data": { + "id": "ts-rL5ZsuwfjqfPJcdi", + "type": "task-stages", + "attributes": { + "status": "passed", + "stage": "post_plan", + "status-timestamps": { + "passed-at": "2022-06-08T20:32:12+08:00", + "running-at": "2022-06-08T20:32:11+08:00" + }, + "created-at": "2022-06-08T12:31:56.94Z", + "updated-at": "2022-06-08T12:32:12.315Z" + }, + "relationships": { + "run": { + "data": { + "id": "run-XdgtChJuuUwLoSmw", + "type": "runs" + } + }, + "task-results": { + "data": [ + { + "id": "taskrs-EmnmsEDL1jgd1GTP", + "type": "task-results" + } + ] + }, + "policy-evaluations":{ + "data":[ + { + "id":"poleval-iouaha9KLgGWkBRQ", + "type":"policy-evaluations" + } + ] + } + }, + "links": { + "self": "/api/v2/task-stages/ts-rL5ZsuwfjqfPJcdi" + } + } +} +``` + +## Show a Run Task Result + +`GET /task-results/:task_result_id` + +| Parameter | Description | +| ----------------- | ------------------------------ | +| `:task_result_id` | The run task result ID to get. | + +This endpoint shows the details for a specific run task result. + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | -------------------------------------------- | +| [200][] | [JSON API document][] (`type: "task-results"`) | Success | +| [404][] | [JSON API error object][] | Task result not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/task-results/taskrs-EmnmsEDL1jgd1GZz +``` + +### Sample Response + +```json +{ + "data": { + "id": "taskrs-EmnmsEDL1jgd1GZz", + "type": "task-results", + "attributes": { + "message": "No issues found.\nSeverity threshold is set to low.", + "status": "passed", + "status-timestamps": { + "passed-at": "2022-06-08T20:32:12+08:00", + "running-at": "2022-06-08T20:32:11+08:00" + }, + "url": "https://external.service/project/task-123abc", + "created-at": "2022-06-08T12:31:56.954Z", + "updated-at": "2022-06-08T12:32:12.27Z", + "task-id": "task-b6MaHZmGopHDtqhn", + "task-name": "example-task", + "task-url": "https://external.service/task-123abc", + "stage": "post_plan", + "is-speculative": false, + "workspace-task-id": "wstask-258juqenQeWb3DZz", + "workspace-task-enforcement-level": "mandatory" + }, + "relationships": { + "task-stage": { + "data": { + "id": "ts-rL5ZsuwfjqfPJczZ", + "type": "task-stages" + } + } + }, + "links": { + "self": "/api/v2/task-results/taskrs-EmnmsEDL1jgd1GZz" + } + } +} +``` + +## Available Related Resources + +### Task Stage + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource | Description | +| -------------------- | ---------------------------------------------------------- | +| `run` | Information about the associated run. | +| `run.workspace` | Information about the associated workspace. | +| `task-results` | Information about the results for a task-stage. | +| `policy-evaluations` | Information about the policy evaluations for a task-stage. | + +## Override a Task Stage + +`POST /task-stages/:task_stage_id/actions/override` + +| Parameter | Description | +| ---------------- | ------------------------------------- | +| `:task_stage_id` | The ID of the task stage to override. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/task-stages/ts-rL5ZsuwfjqfPJcdi/actions/override +``` + +### Sample Response + +```json +{ + "data":{ + "id":"ts-F7MumZQcJzVh1ZZk", + "type":"task-stages", + "attributes":{ + "status":"running", + "stage":"post_plan", + "status-timestamps":{ + "running-at":"2022-09-21T06:36:54+00:00", + "awaiting-override-at":"2022-09-21T06:31:50+00:00" + }, + "created-at":"2022-09-21T06:29:44.632Z", + "updated-at":"2022-09-21T06:36:54.952Z", + "permissions":{ + "can-override-policy":true, + "can-override-tasks":false, + "can-override":true + }, + "actions":{ + "is-overridable":false + } + }, + "relationships":{ + "run":{ + "data":{ + "id":"run-K6N4BAz8NfUyR2QB", + "type":"runs" + } + }, + "task-results":{ + "data":[ + + ] + }, + "policy-evaluations":{ + "data":[ + { + "id":"poleval-atNKxwvjYy4Gwk3k", + "type":"policy-evaluations" + } + ] + } + }, + "links":{ + "self":"/api/v2/task-stages/ts-F7MumZQcJzVh1ZZk" + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks-integration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks-integration.mdx new file mode 100644 index 0000000000..eaa3fe1fca --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks-integration.mdx @@ -0,0 +1,298 @@ +--- +page_title: Run tasks integration API for Terraform Enterprise +description: >- + Use Terraform Enterprise API's run task integration API to trigger run tasks + at specific run phases and learn how to read run task responses. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Run tasks integration API + +[Run tasks](/terraform/enterprise/workspaces/settings/run-tasks) allow HCP Terraform to interact with external systems at specific points in the HCP Terraform run lifecycle. +This page lists the API endpoints used to trigger a run task and the expected response from the integration. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/run-tasks.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Refer to [run tasks](/terraform/enterprise/api-docs/run-tasks/run-tasks) for the API endpoints to create and manage run tasks within HCP Terraform. You can also access a complete list of all run tasks in the [Terraform Registry](https://registry.terraform.io/browse/run-tasks). + +## Run Task Request + +When a run reaches the appropriate phase and a run task is triggered, HCP Terraform will send a request to the run task's URL. + +Either HCP Terraform itself, or a self-hosted HCP Terraform agent using [request forwarding](/terraform/cloud-docs/agents/request-forwarding) can make the request to a run task's URL. Your organization [must be entitled to `private-run-tasks`](/terraform/enterprise/api-docs#feature-entitlements) to use request forwarding. +The service receiving the run task request should respond with `200 OK`, or HCP Terraform will retry to trigger the run task. + +`POST :url` + +| Parameter | Description | +| --------- | ------------------------------------------------------- | +| `:url` | The URL configured in the run task to send requests to. | + +| Status | Response | Reason | +| ------- | ---------- | --------------------------------- | +| [200][] | No Content | Successfully submitted a run task | + +### Request Body + +The POST request submits a JSON object with the following properties as a request payload. + +#### Common Properties + +All request payloads contain the following properties. + +| Key path | Type | Values | Description | +| ------------------------------------ | ------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `payload_version` | integer | `1` | Schema version of the payload. Only `1` is supported. | +| `stage` | string | `pre_plan`, `post_plan`, `pre_apply`, `post_apply` | The [run stage](/terraform/enterprise/run/states) when HCP Terraform triggers the run task. | +| `access_token` | string | | Bearer token to use when calling back to HCP Terraform. | +| `capabilities` | object | | A map of the capabilities that the caller supports. | +| `capabilities.outcomes` | bool | | A flag indicating the caller accepts detailed run task outcomes. | +| `configuration_version_download_url` | string | | The URL to [download the configuration version](/terraform/enterprise/api-docs/configuration-versions#download-configuration-files). This is `null` if the configuration version is not available to download. | +| `configuration_version_id` | string | | The ID of the [configuration version](/terraform/enterprise/api-docs/configuration-versions) for the run. | +| `is_speculative` | bool | | Whether the task is part of a [speculative run](/terraform/enterprise/run/remote-operations#speculative-plans). | +| `organization_name` | string | | Name of the organization the task is configured within. | +| `run_app_url` | string | | URL within HCP Terraform to the run. | +| `run_created_at` | string | | When the run was started. | +| `run_created_by` | string | | Who created the run. | +| `run_id` | string | | Id of the run this task is part of. | +| `run_message` | string | | Message that was associated with the run. | +| `task_result_callback_url` | string | | URL that should called back with the result of this task. | +| `task_result_enforcement_level` | string | `mandatory`, `advisory` | Enforcement level for this task. | +| `task_result_id` | string | | ID of task result within HCP Terraform. | +| `vcs_branch` | string | | Repository branch that the workspace executes from. This is `null` if the workspace does not have a VCS repository. | +| `vcs_commit_url` | string | | URL to the commit that triggered this run. This is `null` if the workspace does not a VCS repository. | +| `vcs_pull_request_url` | string | | URL to the Pull Request/Merge Request that triggered this run. This is `null` if the run was not triggered. | +| `vcs_repo_url` | string | | URL to the workspace's VCS repository. This is `null` if the workspace does not have a VCS repository. | +| `workspace_app_url` | string | | URL within HCP Terraform to the workspace. | +| `workspace_id` | string | | Id of the workspace the task is associated with. | +| `workspace_name` | string | | Name of the workspace. | +| `workspace_working_directory` | string | | The working directory specified in the run's [workspace settings](/terraform/enterprise/workspaces/settings#terraform-working-directory). | + +#### Post-Plan, Pre-Apply, and Post-Apply Properties + +Requests with `stage` set to `post_plan`, `pre_apply` or `post_apply` contain the following additional properties. + +| Key path | Type | Values | Description | +| ------------------- | ------ | ------ | --------------------------------------------------------- | +| `plan_json_api_url` | string | | The URL to retrieve the JSON Terraform plan for this run. | + +### Sample Payload + +```json +{ + "payload_version": 1, + "stage": "post_plan", + "access_token": "4QEuyyxug1f2rw.atlasv1.iDyxqhXGVZ0ykes53YdQyHyYtFOrdAWNBxcVUgWvzb64NFHjcquu8gJMEdUwoSLRu4Q", + "capabilities": { + "outcomes": true + }, + "configuration_version_download_url": "https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/download", + "configuration_version_id": "cv-ntv3HbhJqvFzamy7", + "is_speculative": false, + "organization_name": "hashicorp", + "plan_json_api_url": "https://app.terraform.io/api/v2/plans/plan-6AFmRJW1PFJ7qbAh/json-output", + "run_app_url": "https://app.terraform.io/app/hashicorp/my-workspace/runs/run-i3Df5to9ELvibKpQ", + "run_created_at": "2021-09-02T14:47:13.036Z", + "run_created_by": "username", + "run_id": "run-i3Df5to9ELvibKpQ", + "run_message": "Triggered via UI", + "task_result_callback_url": "https://app.terraform.io/api/v2/task-results/5ea8d46c-2ceb-42cd-83f2-82e54697bddd/callback", + "task_result_enforcement_level": "mandatory", + "task_result_id": "taskrs-2nH5dncYoXaMVQmJ", + "vcs_branch": "main", + "vcs_commit_url": "https://github.com/hashicorp/terraform-random/commit/7d8fb2a2d601edebdb7a59ad2088a96673637d22", + "vcs_pull_request_url": null, + "vcs_repo_url": "https://github.com/hashicorp/terraform-random", + "workspace_app_url": "https://app.terraform.io/app/hashicorp/my-workspace", + "workspace_id": "ws-ck4G5bb1Yei5szRh", + "workspace_name": "tfr_github_0", + "workspace_working_directory": "/terraform" +} +``` + +### Request Headers + +The POST request submits the following properties as the request headers. + +| Name | Value | Description | +| ---------------------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Content-Type` | `application/json` | Specifies the type of data in the request body | +| `User-Agent` | `TFC/1.0 (+https://app.terraform.io; TFC)` | Identifies the request is coming from HCP Terraform | +| `X-TFC-Task-Signature` | string | If the run task is configured with an [HMAC Key](/terraform/enterprise/integrations/run-tasks#securing-your-run-task), this header contains the signed SHA512 sum of the request payload using the configured HMAC key. Otherwise, this is an empty string. | + +## Run Task Callback + +While a run task runs, it may send progressive updates to HCP Terraform with a `running` status. Once an integrator determines that Terraform supports detailed run task outcomes, they can send these outcomes by appending to the run task's callback payload. + +Once the external integration fulfills the request, that integration must call back into HCP Terraform with the overall result of either `passed` or `failed`. Terraform expects this callback within 10 minutes, or the request is considered errored. + +You can send outcomes with a status of `running`, `passed`, or `failed`, but it is a good practice only to send outcomes when a run task is `running`. + +`PATCH :callback_url` + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------- | +| `:callback_url` | The `task_result_callback_url` specified in the run task request. Typically `/task-results/:guid/callback`. | + +| Status | Response | Reason | +| ------- | ------------------------- | --------------------------------------------------------------------------------------------------------------- | +| [200][] | No Content | Successfully submitted a run task result | +| [401][] | [JSON API error object][] | Not authorized to perform action | +| [422][] | [JSON API error object][] | Invalid response payload. This could be caused by invalid attributes, or sending a status that is not accepted. | + +### Request Body + +The PATCH request submits a JSON object with the following properties as a request payload. This payload is also described in the [JSON API schema for run task results](https://github.com/hashicorp/terraform-docs-common/blob/main/website/public/schema/run-tasks/runtask-result.json). + +| Key path | Type | Description | +| ----------------------------- | ------ | --------------------------------------------------------------------------------- | +| `data.type` | string | Must be `"task-results"`. | +| `data.attributes.status` | string | The current status of the task. Only `passed`, `failed` or `running` are allowed. | +| `data.attributes.message` | string | (Recommended, but optional) A short message describing the status of the task. | +| `data.attributes.url` | string | (Optional) A URL where users can obtain more information about the task. | +| `relationships.outcomes.data` | array | (Recommended, but optional) A collection of detailed run task outcomes. | + +Status values other than passed, failed, or running return an error. Both the passed and failed statuses represent a final state for a run task. The running status allows one or more partial updates until the task has reached a final state. + +```json +{ + "data": { + "type": "task-results", + "attributes": { + "status": "passed", + "message": "4 passed, 0 skipped, 0 failed", + "url": "https://external.service.dev/terraform-plan-checker/run-i3Df5to9ELvibKpQ" + }, + "relationships": { + "outcomes": { + "data": [...] + } + } + } +} +``` + +#### Outcomes Payload Body + +A run task result may optionally contain one or more detailed outcomes, which improves result visibility and content in the HCP Terraform user interface. The following attributes define the outcome. + +| Key path | Type | Description | +| ------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `outcome-id` | string | A partner supplied identifier for this outcome. | +| `description` | string | A one-line description of the result. | +| `body` | string | (Optional) A detailed message for the result in markdown format. We recommend limiting messages to under 1MB with a maximum allowable limit of 5MB. | +| `url` | string | (Optional) A URL that a user can navigate to for more information about this result. | +| `tags` | object | (Optional) An object containing tag arrays, named by the property key. | +| `tags.key` | string | The two or three word name of the header tag. [Special handling](#severity-and-status-tags) is given to `severity` and `status` keys. | +| `tags.key[].label` | string | The text value of the tag. | +| `tags.key[].level` | enum string | (Optional) The error level for the tag. Defaults to `none`, but accepts `none`, `info`, `warning`, or `error`. For levels other than `none`, labels render with a color and icon for that level. | + +##### Severity and Status Tags + +Run task outcomes with tags named "severity" or "status" are enriched within the outcomes display list in HCP Terraform, enabling an earlier response to issues with severity and status. + +```json +{ + "type": "task-result-outcomes", + "attributes": { + "outcome-id": "PRTNR-CC-TF-127", + "description": "ST-2942: S3 Bucket will not enforce MFA login on delete requests", + "tags": { + "Status": [ + { + "label": "Denied", + "level": "error" + } + ], + "Severity": [ + { + "label": "High", + "level": "error" + }, + { + "label": "Recoverable", + "level": "info" + } + ], + "Cost Centre": [ + { + "label": "IT-OPS" + } + ] + }, + "body": "# Resolution for issue ST-2942\n\n## Impact\n\nFollow instructions in the [AWS S3 docs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html) to manually configure the MFA setting.\n—-- Payload truncated —--", + "url": "https://external.service.dev/result/PRTNR-CC-TF-127" + } +} +``` + +##### Complete Callback Payload Example + +The example below shows a complete payload explaining the data structure of a callback payload, including all the necessary fields. + +```json +{ + "data": { + "type": "task-results", + "attributes": { + "status": "failed", + "message": "0 passed, 0 skipped, 1 failed", + "url": "https://external.service.dev/terraform-plan-checker/run-i3Df5to9ELvibKpQ" + }, + "relationships": { + "outcomes": { + "data": [ + { + "type": "task-result-outcomes", + "attributes": { + "outcome-id": "PRTNR-CC-TF-127", + "description": "ST-2942: S3 Bucket will not enforce MFA login on delete requests", + "tags": { + "Status": [ + { + "label": "Denied", + "level": "error" + } + ], + "Severity": [ + { + "label": "High", + "level": "error" + }, + { + "label": "Recoverable", + "level": "info" + } + ], + "Cost Centre": [ + { + "label": "IT-OPS" + } + ] + }, + "body": "# Resolution for issue ST-2942\n\n## Impact\n\nFollow instructions in the [AWS S3 docs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html) to manually configure the MFA setting.\n—-- Payload truncated —--", + "url": "https://external.service.dev/result/PRTNR-CC-TF-127" + } + } + ] + } + } + } +} +``` + +### Request Headers + +The PATCH request must use the token supplied in the originating request (`access_token`) for [authentication](/terraform/enterprise/api-docs#authentication). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks.mdx new file mode 100644 index 0000000000..c0b0a8fcc7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-tasks/run-tasks.mdx @@ -0,0 +1,831 @@ +--- +page_title: /tasks API reference for Terraform Enterprise +description: >- + Use Terraform Enterprise API's `/tasks` endpoint to read, create, update, and + delete run tasks, and read, update, delete and associate run tasks to + workspaces. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +[JSON API Schema document]: https://github.com/hashicorp/terraform-docs-common/blob/main/website/public/schema/run-tasks/runtask-results.json + +# Run tasks API reference + +[Run tasks](/terraform/enterprise/workspaces/settings/run-tasks) allow HCP Terraform to interact with external systems at specific points in the HCP Terraform run lifecycle. Run tasks are reusable configurations that you can associate to any workspace in an organization. This page lists the API endpoints for run tasks in an organization and explains how to associate run tasks to workspaces. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/run-tasks.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Refer to [run tasks Integration](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) for the API endpoints related triggering run tasks and the expected integration response. + +## Required Permissions + +To interact with run tasks on an organization, you need the [Manage Run Tasks permission](/terraform/enterprise/users-teams-organizations/permissions#manage-run-tasks). To associate or dissociate run tasks in a workspace, you need the [Manage Workspace Run Tasks permission](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) on that particular workspace. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Create a Run Task + +`POST /organizations/:organization_name/tasks` + +| Parameter | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The organization to create a run task in. The organization must already exist in HCP Terraform, and the token authenticating the API request must have [owner permission](/terraform/enterprise/users-teams-organizations/permissions). | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "tasks"`) | Successfully created a run task | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required unless otherwise specified. + +| Key path | Type | Default | Description | +| -------------------------------------------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"tasks"`. | +| `data.attributes.name` | string | | The name of the task. Can include letters, numbers, `-`, and `_`. | +| `data.attributes.url` | string | | URL to send a run task payload. | +| `data.attributes.description` | string | | The description of the run task. Can be up to 300 characters long including spaces, letters, numbers, and special characters. | +| `data.attributes.category` | string | | Must be `"task"`. | +| `data.attributes.hmac-key` | string | | (Optional) HMAC key to verify run task. | +| `data.attributes.enabled` | bool | true | (Optional) Whether the task will be run. | +| `data.attributes.global-configuration.enabled` | bool | false | (Optional) Whether the task will be associated on all workspaces. | +| `data.attributes.global-configuration.stages` | array | | (Optional) An array of strings representing the stages of the run lifecycle when the run task should begin. Must be one or more of `"pre_plan"`, `"post_plan"`, `"pre_apply"`, or `"post_apply"`. | +| `data.attributes.global-configuration.enforcement-level` | string | | (Optional) The enforcement level of the workspace task. Must be `"advisory"` or `"mandatory"`. | +| `data.relationships.agent-pool.data.id` | string | | (Optional) The agent pool that HCP Terraform uses to make requests for the run task. Requires the [`private_run_tasks` feature entitlement](/terraform/enterprise/api-docs#feature-entitlements) and a self-hosted HCP Terraform agent with [request forwarding](/terraform/cloud-docs/agents/request-forwarding). | + +### Sample Payload + +```json +{ + "data": { + "type": "tasks", + "attributes": { + "name": "example", + "url": "http://example.com", + "description": "Simple description", + "hmac_key": "secret", + "enabled": "true", + "category": "task", + "global-configuration": { + "enabled": true, + "stages": ["pre_plan"], + "enforcement-level": "mandatory" + } + }, + "relationships": { + "agent-pool": { + "data": { + "id": "apool-yoGUFz5zcRMMz53i", + "type": "agent-pools" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/tasks +``` + +### Sample Response + +```json +{ + "data": { + "id": "task-7oD7doVTQdAFnMLV", + "type": "tasks", + "attributes": { + "category": "task", + "name": "my-run-task", + "url": "http://example.com", + "description": "Simple description", + "enabled": "true", + "hmac-key": null, + "global-configuration": { + "enabled": true, + "stages": ["pre_plan"], + "enforcement-level": "mandatory" + } + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "tasks": { + "data": [] + }, + "agent-pool": { + "data": { + "id": "apool-yoGUFz5zcRMMz53i", + "type": "agent-pools" + } + } + }, + "links": { + "self": "/api/v2/tasks/task-7oD7doVTQdAFnMLV" + } + } +} +``` + +## List Run Tasks + +`GET /organizations/:organization_name/tasks` + +| Parameter | Description | +| -------------------- | ----------------------------------- | +| `:organization_name` | The organization to list tasks for. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "tasks"`) | Request was successful | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `include` | **Optional.** Allows including related resource data. Value must be a comma-separated list containing one or more of `workspace_tasks` or `workspace_tasks.workspace`. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 run tasks per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-organization/tasks +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "task-7oD7doVTQdAFnMLV", + "type": "tasks", + "attributes": { + "category": "task", + "name": "my-task", + "url": "http://example.com", + "description": "Simple description", + "enabled": "true", + "hmac-key": null, + "global-configuration": { + "enabled": true, + "stages": [ + "pre_plan" + ], + "enforcement-level": "mandatory" + } + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "tasks": { + "data": [] + } + }, + "links": { + "self": "/api/v2/tasks/task-7oD7doVTQdAFnMLV" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/hashicorp/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/hashicorp/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/hashicorp/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +## Show a Run Task + +`GET /tasks/:id` + +| Parameter | Description | +| --------- | --------------------------------------------------------------------------------------------- | +| `:id` | The ID of the task to show. Use the ["List Run Tasks"](#list-run-tasks) endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | --------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "tasks"`) | The request was successful | +| [404][] | [JSON API error object][] | Run task not found or user unauthorized to perform action | + +| Parameter | Description | +| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `include` | **Optional.** Allows including related resource data. Value must be a comma-separated list containing one or more of `workspace_tasks` or `workspace_tasks.workspace`. | + +### Sample Request + +```shell +curl --request GET \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/tasks/task-7oD7doVTQdAFnMLV +``` + +### Sample Response + +```json +{ + "data": { + "id": "task-7oD7doVTQdAFnMLV", + "type": "tasks", + "attributes": { + "category": "task", + "name": "my-task", + "url": "http://example.com", + "description": "Simple description", + "enabled": "true", + "hmac-key": null, + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "tasks": { + "data": [ + { + "id": "task-xjKZw9KaeXda61az", + "type": "tasks" + } + ] + } + }, + "links": { + "self": "/api/v2/tasks/task-7oD7doVTQdAFnMLV" + } + } +} +``` + +## Update a Run Task + +`PATCH /tasks/:id` + +| Parameter | Description | +| --------- | ----------------------------------------------------------------------------------------------- | +| `:id` | The ID of the task to update. Use the ["List Run Tasks"](#list-run-tasks) endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "tasks"`) | The request was successful | +| [404][] | [JSON API error object][] | Run task not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required unless otherwise specified. + +| Key path | Type | Default | Description | +| -------------------------------------------------------- | ------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"tasks"`. | +| `data.attributes.name` | string | (previous value) | The name of the run task. Can include letters, numbers, `-`, and `_`. | +| `data.attributes.url` | string | (previous value) | URL to send a run task payload. | +| `data.attributes.description` | string | | The description of the run task. Can be up to 300 characters long including spaces, letters, numbers, and special characters. | +| `data.attributes.category` | string | (previous value) | Must be `"task"`. | +| `data.attributes.hmac-key` | string | (previous value) | (Optional) HMAC key to verify run task. | +| `data.attributes.enabled` | bool | (previous value) | (Optional) Whether the task will be run. | +| `data.attributes.global-configuration.enabled` | bool | (previous value) | (Optional) Whether the task will be associated on all workspaces. | +| `data.attributes.global-configuration.stages` | array | (previous value) | (Optional) An array of strings representing the stages of the run lifecycle when the run task should begin. Must be one or more of `"pre_plan"`, `"post_plan"`, `"pre_apply"`, or `"post_apply"`. | +| `data.attributes.global-configuration.enforcement-level` | string | (previous value) | (Optional) The enforcement level of the workspace task. Must be `"advisory"` or `"mandatory"`. | + +### Sample Payload + +```json +{ + "data": { + "type": "tasks", + "attributes": { + "name": "new-example", + "url": "http://new-example.com", + "description": "New description", + "hmac_key": "new-secret", + "enabled": "false", + "category": "task", + "global-configuration": { + "enabled": false + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/tasks/task-7oD7doVTQdAFnMLV +``` + +### Sample Response + +```json +{ + "data": { + "id": "task-7oD7doVTQdAFnMLV", + "type": "tasks", + "attributes": { + "category": "task", + "name": "new-example", + "url": "http://new-example.com", + "description": "New description", + "enabled": "false", + "hmac-key": null, + "global-configuration": { + "enabled": false, + "stages": ["pre_plan"], + "enforcement-level": "mandatory" + } + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "tasks": { + "data": [ + { + "id": "wstask-xjKZw9KaeXda61az", + "type": "workspace-tasks" + } + ] + } + }, + "links": { + "self": "/api/v2/tasks/task-7oD7doVTQdAFnMLV" + } + } +} +``` + +## Delete a Run Task + +`DELETE /tasks/:id` + +| Parameter | Description | +| --------- | --------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the run task to delete. Use the ["List Run Tasks"](#list-run-tasks) endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------------------------------------- | +| [204][] | No Content | Successfully deleted the run task | +| [404][] | [JSON API error object][] | Run task not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/tasks/task-7oD7doVTQdAFnMLV +``` + +## Associate a Run Task to a Workspace + +`POST /workspaces/:workspace_id/tasks` + +| Parameter | Description | +| --------------- | ------------------------ | +| `:workspace_id` | The ID of the workspace. | + +This endpoint associates an existing run task to a specific workspace. + +This involves setting the run task enforcement level, which determines whether the run task blocks runs from completing. + +- Advisory run tasks can not block a run from completing. If the task fails, the run will proceed with a warning. + +- Mandatory run tasks block a run from completing. If the task fails (including a timeout or unexpected remote error condition), the run stops with an error. + +You may also configure the run task to begin during specific [run stages](/terraform/enterprise/run/states). Run tasks use the [Post-Plan Stage](/terraform/enterprise/run/states#the-post-plan-stage) by default. + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------------------------------------------------- | +| [204][] | No Content | The request was successful | +| [404][] | [JSON API error object][] | Workspace or run task not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------------- | ------ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"workspace-tasks"`. | +| `data.attributes.enforcement-level` | string | | The enforcement level of the workspace task. Must be `"advisory"` or `"mandatory"`. | +| `data.attributes.stage` | string | `"post_plan"` | **DEPRECATED** Use `stages` instead. The stage in the run lifecycle when the run task should begin. Must be `"pre_plan"`, `"post_plan"`, `"pre_apply"`, or `"post_apply"`. | +| `data.attributes.stages` | array | `["post_plan"]` | An array of strings representing the stages of the run lifecycle when the run task should begin. Must be one or more of `"pre_plan"`, `"post_plan"`, `"pre_apply"`, or `"post_apply"`. | +| `data.relationships.task.data.id` | string | | The ID of the run task. | +| `data.relationships.task.data.type` | string | | Must be `"tasks"`. | + +### Sample Payload + +```json +{ + "data": { + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "advisory", + "stages": ["post_plan"] + }, + "relationships": { + "task": { + "data": { + "id": "task-7oD7doVTQdAFnMLV", + "type": "tasks" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-PphL7ix3yGasYGrq/tasks +``` + +### Sample Response + +```json +{ + "data": { + "id": "wstask-tBXYu8GVAFBpcmPm", + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "advisory", + "stage": "post_plan", + "stages": ["post_plan"] + }, + "relationships": { + "task": { + "data": { + "id": "task-7oD7doVTQdAFnMLV", + "type": "tasks" + } + }, + "workspace": { + "data": { + "id": "ws-PphL7ix3yGasYGrq", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/workspaces/ws-PphL7ix3yGasYGrq/tasks/task-tBXYu8GVAFBpcmPm" + } + } +} +``` + +## List Workspace Run Tasks + +`GET /workspaces/:workspace_id/tasks` + +| Parameter | Description | +| --------------- | -------------------------------- | +| `:workspace_id` | The workspace to list tasks for. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | ----------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "tasks"`) | Request was successful | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 run tasks per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "wstask-tBXYu8GVAFBpcmPm", + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "advisory", + "stage": "post_plan", + "stages": ["post_plan"] + }, + "relationships": { + "task": { + "data": { + "id": "task-hu74ST39g566Q4m5", + "type": "tasks" + } + }, + "workspace": { + "data": { + "id": "ws-kRsDRPtTmtcEme4t", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks/task-tBXYu8GVAFBpcmPm" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +## Show Workspace Run Task + +`GET /workspaces/:workspace_id/tasks/:id` + +| Parameter | Description | +| --------- | --------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the workspace task to show. Use the ["List Workspace Run Tasks"](#list-workspace-run-tasks) endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | ------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "tasks"`) | The request was successful | +| [404][] | [JSON API error object][] | Workspace run task not found or user unauthorized to perform action | + +### Sample Request + +```shell +curl --request GET \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks/wstask-tBXYu8GVAFBpcmPm +``` + +### Sample Response + +```json +{ + "data": { + "id": "wstask-tBXYu8GVAFBpcmPm", + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "advisory", + "stage": "post_plan", + "stages": ["post_plan"] + }, + "relationships": { + "task": { + "data": { + "id": "task-hu74ST39g566Q4m5", + "type": "tasks" + } + }, + "workspace": { + "data": { + "id": "ws-kRsDRPtTmtcEme4t", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks/wstask-tBXYu8GVAFBpcmPm" + } + } +} +``` + +## Update Workspace Run Task + +`PATCH /workspaces/:workspace_id/tasks/:id` + +| Parameter | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the task to update. Use the ["List Workspace Run Tasks"](#list-workspace-run-tasks) endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | ------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "tasks"`) | The request was successful | +| [404][] | [JSON API error object][] | Workspace run task not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------------- | ------ | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | (previous value) | Must be `"workspace-tasks"`. | +| `data.attributes.enforcement-level` | string | (previous value) | The enforcement level of the workspace run task. Must be `"advisory"` or `"mandatory"`. | +| `data.attributes.stage` | string | (previous value) | **DEPRECATED** Use `stages` instead. The stage in the run lifecycle when the run task should begin. Must be `"pre_plan"` or `"post_plan"`. | +| `data.attributes.stages` | array | (previous value) | An array of strings representing the stages of the run lifecycle when the run task should begin. Must be one or more of `"pre_plan"`, `"post_plan"`, `"pre_apply"`, or `"post_apply"`. | + +### Sample Payload + +```json +{ + "data": { + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "mandatory", + "stages": ["post_plan"] + } + } +} +``` + +#### Deprecated Payload + +```json +{ + "data": { + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "mandatory", + "stages": ["post_plan"] + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks/wstask-tBXYu8GVAFBpcmPm +``` + +### Sample Response + +```json +{ + "data": { + "id": "wstask-tBXYu8GVAFBpcmPm", + "type": "workspace-tasks", + "attributes": { + "enforcement-level": "mandatory", + "stage": "post_plan", + "stages": ["post_plan"] + }, + "relationships": { + "task": { + "data": { + "id": "task-hu74ST39g566Q4m5", + "type": "tasks" + } + }, + "workspace": { + "data": { + "id": "ws-kRsDRPtTmtcEme4t", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks/task-tBXYu8GVAFBpcmPm" + } + } +} +``` + +## Delete Workspace Run Task + +`DELETE /workspaces/:workspace_id/tasks/:id` + +| Parameter | Description | +| --------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the Workspace run task to delete. Use the ["List Workspace Run Tasks"](#list-workspace-run-tasks) endpoint to find IDs. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------- | +| [204][] | No Content | Successfully deleted the workspace run task | +| [404][] | [JSON API error object][] | Workspace run task not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/workspaces/ws-kRsDRPtTmtcEme4t/tasks/wstask-tBXYu8GVAFBpcmPm +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-triggers.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-triggers.mdx new file mode 100644 index 0000000000..e557a25a36 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run-triggers.mdx @@ -0,0 +1,349 @@ +--- +page_title: /run-triggers API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/run-triggers` endpoint to read, create, + and delete run triggers. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Run triggers API reference + +## Create a Run Trigger + +`POST /workspaces/:workspace_id/run-triggers` + +| Parameter | Description | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to create the run trigger in. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | ------------------------------------------------------------------------ | +| [201][] | [JSON API document][] (`type: "run-triggers"`) | Successfully created a run trigger | +| [404][] | [JSON API error object][] | Workspace or sourceable not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Permissions + +In order to create a run trigger, the user must have admin access to the specified workspace and permission to read runs for the sourceable workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------ | ------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.relationships.sourceable.data` | object | | A JSON API relationship object that represents the source workspace for the run trigger. This object must have `id` and `type` properties, and the `type` property must be `workspaces` (e.g. `{ "id": "ws-2HRvNs49EWPjDqT1", "type": "workspaces" }`). Obtain workspace IDs from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +### Sample Payload + +```json +{ + "data": { + "relationships": { + "sourceable": { + "data": { + "id": "ws-2HRvNs49EWPjDqT1", + "type": "workspaces" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --request POST \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-XdeUVMWShTesDMME/run-triggers +``` + +### Sample Response + +```json +{ + "data": { + "id": "rt-3yVQZvHzf5j3WRJ1", + "type": "run-triggers", + "attributes": { + "workspace-name": "workspace-1", + "sourceable-name": "workspace-2", + "created-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "workspace": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + }, + "sourceable": { + "data": { + "id": "ws-2HRvNs49EWPjDqT1", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/run-triggers/rt-3yVQZvHzf5j3WRJ1" + } + } +} +``` + +## List Run Triggers + +`GET /workspaces/:workspace_id/run-triggers` + +| Parameter | Description | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to list run triggers for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "run-triggers"`) | Request was successful | +| [400][] | [JSON API error object][] | Required parameter `filter[run-trigger][type]` is missing or has been given an invalid value | +| [404][] | [JSON API error object][] | Workspace not found or user unauthorized to perform action | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter[run-trigger][type]` | **Required** Which type of run triggers to list; valid values are `inbound` or `outbound`. `inbound` run triggers create runs in the specified workspace, and `outbound` run triggers create runs in other workspaces. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 run triggers per page. | + +### Permissions + +In order to list run triggers, the user must have permission to read runs for the specified workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-XdeUVMWShTesDMME/run-triggers?filter%5Brun-trigger%5D%5Btype%5D=inbound +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "rt-WygcwSBuYaQWrM39", + "type": "run-triggers", + "attributes": { + "workspace-name": "workspace-1", + "sourceable-name": "workspace-2", + "created-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "workspace": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + }, + "sourceable": { + "data": { + "id": "ws-2HRvNs49EWPjDqT1", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/run-triggers/rt-WygcwSBuYaQWrM39" + } + }, + { + "id": "rt-8F5JFydVYAmtTjET", + "type": "run-triggers", + "attributes": { + "workspace-name": "workspace-1", + "sourceable-name": "workspace-3", + "created-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "workspace": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + }, + "sourceable": { + "data": { + "id": "ws-BUHBEM97xboT8TVz", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/run-triggers/rt-8F5JFydVYAmtTjET" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/workspaces/ws-xdiJLyGpCugbFDE1/run-triggers?filter%5Brun-trigger%5D%5Btype%5D=inbound&page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/workspaces/ws-xdiJLyGpCugbFDE1/run-triggers?filter%5Brun-trigger%5D%5Btype%5D=inbound&page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/workspaces/ws-xdiJLyGpCugbFDE1/run-triggers?filter%5Brun-trigger%5D%5Btype%5D=inbound&page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} +``` + +## Show a Run Trigger + +`GET /run-triggers/:run_trigger_id` + +| Parameter | Description | +| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:run_trigger_id` | The ID of the run trigger to show. Send a `GET` request to the `run-triggers` endpoint to find IDs. Refer to [List Run Triggers](#list-run-triggers) for details. | + +| Status | Response | Reason | +| ------- | ---------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "run-triggers"`) | The request was successful | +| [404][] | [JSON API error object][] | Run trigger not found or user unauthorized to perform action | + +### Permissions + +In order to show a run trigger, the user must have permission to read runs for either the workspace or sourceable workspace of the specified run trigger. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/run-triggers/rt-3yVQZvHzf5j3WRJ1 +``` + +### Sample Response + +```json +{ + "data": { + "id": "rt-3yVQZvHzf5j3WRJ1", + "type": "run-triggers", + "attributes": { + "workspace-name": "workspace-1", + "sourceable-name": "workspace-2", + "created-at": "2018-09-11T18:21:21.784Z" + }, + "relationships": { + "workspace": { + "data": { + "id": "ws-XdeUVMWShTesDMME", + "type": "workspaces" + } + }, + "sourceable": { + "data": { + "id": "ws-2HRvNs49EWPjDqT1", + "type": "workspaces" + } + } + }, + "links": { + "self": "/api/v2/run-triggers/rt-3yVQZvHzf5j3WRJ1" + } + } +} +``` + +## Delete a Run Trigger + +`DELETE /run-triggers/:run_trigger_id` + +| Parameter | Description | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:run_trigger_id` | The ID of the run trigger to delete. Send a `GET` request to the `run-triggers` endpoint o find IDs. Refer to [List Run Triggers](#list-run-triggers) for details. | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------ | +| [204][] | No Content | Successfully deleted the run trigger | +| [404][] | [JSON API error object][] | Run trigger not found or user unauthorized to perform action | + +### Permissions + +In order to delete a run trigger, the user must have admin access to the specified workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Sample Request + +```shell +curl \ + --request DELETE \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/run-triggers/rt-3yVQZvHzf5j3WRJ1 +``` + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +These includes respect read permissions. If you do not have access to read the related resource, it will not be returned. + +- `workspace` - The full workspace object. +- `sourceable` - The full source workspace object. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run.mdx new file mode 100644 index 0000000000..950e1d8880 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/run.mdx @@ -0,0 +1,902 @@ +--- +page_title: /runs API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/runs` endpoint to read, get, create, + apply, discard, execute, and cancel Terraform runs. You can also list a + workspace's or organization's runs. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Runs API reference + +-> **Note:** Before working with the runs or configuration versions APIs, read the [API-driven run workflow](/terraform/enterprise/run/api) page, which includes both a full overview of this workflow and a walkthrough of a simple implementation of it. + +Performing a run on a new configuration is a multi-step process. + +1. [Create a configuration version on the workspace](/terraform/enterprise/api-docs/configuration-versions#create-a-configuration-version). +2. [Upload configuration files to the configuration version](/terraform/enterprise/api-docs/configuration-versions#upload-configuration-files). +3. [Create a run on the workspace](#create-a-run); this is done automatically when a configuration file is uploaded. +4. [Create and queue an apply on the run](#apply-a-run); if the run can't be auto-applied. + +Alternatively, you can create a run with a pre-existing configuration version, even one from another workspace. This is useful for promoting known good code from one workspace to another. + +## Attributes + +### Run States + +The run state is found in `data.attributes.status`, and you can reference the following list of possible states. + +| State | Description | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `pending` | The initial status of a run after creation. | +| `fetching` | The run is waiting for HCP Terraform to fetch the configuration from VCS. | +| `fetching_completed` | HCP Terraform has fetched the configuration from VCS and the run will continue. | +| `pre_plan_running` | The pre-plan phase of the run is in progress. | +| `pre_plan_completed` | The pre-plan phase of the run has completed. | +| `queuing` | HCP Terraform is queuing the run to start the planning phase. | +| `plan_queued` | HCP Terraform is waiting for its backend services to start the plan. | +| `planning` | The planning phase of a run is in progress. | +| `planned` | The planning phase of a run has completed. | +| `cost_estimating` | The cost estimation phase of a run is in progress. | +| `cost_estimated` | The cost estimation phase of a run has completed. | +| `policy_checking` | The sentinel policy checking phase of a run is in progress. | +| `policy_override` | A sentinel policy has soft failed, and a user can override it to continue the run. | +| `policy_soft_failed` | A sentinel policy has soft failed for a plan-only run. This is a final state. | +| `policy_checked` | The sentinel policy checking phase of a run has completed. | +| `confirmed` | A user has confirmed the plan. | +| `post_plan_running` | The post-plan phase of the run is in progress. | +| `post_plan_completed` | The post-plan phase of the run has completed. | +| `planned_and_finished` | The run is completed. This status only exists for plan-only runs and runs that produce a plan with no changes to apply. This is a final state. | +| `planned_and_saved` | The run has finished its planning, checks, and estimates, and can be confirmed for apply. This status is only used for saved plan runs. | +| `apply_queued` | Once the changes in the plan have been confirmed, the run will transition to `apply_queued`. This status indicates that the run should start as soon as the backend services that run terraform have available capacity. In HCP Terraform, you should seldom see this status, as our aim is to always have capacity. However, in Terraform Enterprise this status will be more common due to the self-hosted nature. | +| `applying` | Terraform is applying the changes specified in the plan. | +| `applied` | Terraform has applied the changes specified in the plan. | +| `discarded` | The run has been discarded. This is a final state. | +| `errored` | The run has errored. This is a final state. | +| `canceled` | The run has been canceled. | +| `force_canceled` | A workspace admin forcefully canceled the run. | + +### Run Operations + +The run operation specifies the Terraform execution mode. You can reference the following list of possible execution modes and use them as query parameters in the [workspace](/terraform/enterprise/api-docs/run#list-runs-in-a-workspace) and [organization](/terraform/enterprise/api-docs/run#list-runs-in-a-organization) runs lists. + +| Operation | Description | +| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `plan_only` | The run does not have an apply phase. This is also called a [_speculative plan_](/terraform/enterprise/run/modes-and-options#plan-only-speculative-plan). | +| `plan_and_apply` | The run includes both plan and apply phases. | +| `save_plan` | The run is a saved plan run. It can include both plan and apply phases, but only becomes the workspace's current run if a user chooses to apply it. | +| `refresh_only` | The run should update Terraform state, but not make changes to resources. | +| `destroy` | The run should destroy all objects, regardless of configuration changes. | +| `empty_apply` | The run should perform an apply with no changes to resources. This is most commonly used to [upgrade terraform state versions](/terraform/enterprise/workspaces/state#upgrading-state). | + +### Run Sources + +You can use the following sources as query parameters in [workspace](/terraform/enterprise/api-docs/run#list-runs-in-a-workspace) and [organization](/terraform/enterprise/api-docs/run#list-runs-in-a-organization) runs lists. + +| Source | Description | +| --------------------------- | --------------------------------------------------------------------------------------- | +| `tfe-ui` | Indicates a run was queued from HCP Terraform UI. | +| `tfe-api` | Indicates a run was queued from HCP Terraform API. | +| `tfe-configuration-version` | Indicates a run was queued from a Configuration Version, triggered from a VCS provider. | + +### Run Status Groups + +The run status group specifies a collection of run states by logical category. + +| Group | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `non_final` | Inclusive of runs that are currently running, require user confirmation, or are queued/pending. | +| `final` | Inclusive of runs that have reached their final and terminal state. | +| `discardable` | Inclusive of runs whose state falls under the following: `planned`, `planned_and_saved`, `cost_estimated`, `policy_checked`, `policy_override`, `post_plan_running`, `post_plan_completed` | + +## Create a Run + +`POST /runs` + +A run performs a plan and apply, using a configuration version and the workspace’s current variables. You can specify a configuration version when creating a run; if you don’t provide one, the run defaults to the workspace’s most recently used version. (A configuration version is “used” when it is created or used for a run in this workspace.) + +Creating a run requires permission to queue plans for the specified workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +When creating a run, you may optionally provide a list of variable objects containing key and value attributes. These values apply to that run specifically and take precedence over variables with the same key applied to the workspace(e.g., variable sets). Refer to [Variable Precedence](/terraform/enterprise/workspaces/variables#precedence) for more information. All values must be expressed as an HCL literal in the same syntax you would use when writing Terraform code. Refer to [Types](/terraform/language/expressions/types#types) in the Terraform documentation for more details. + +Setting `debugging_mode: true` enables debugging mode for the queued run only. This is equivalent to setting the `TF_LOG` environment variable to `TRACE` for this run. See [Debugging Terraform](/terraform/internals/debugging) for more information. + +**Sample Run Variables:** + +```json +"attributes": { + "variables": [ + { "key": "replicas", "value": "2" }, + { "key": "access_key", "value": "\"ABCDE12345\"" } + ] +} +``` + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------------------------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.attributes.allow-empty-apply` | bool | none | Specifies whether Terraform can apply the run even when the plan [contains no changes](/terraform/enterprise/run/modes-and-options#allow-empty-apply). Use this property to [upgrade state](/terraform/enterprise/workspaces/state#upgrading-state) after upgrading a workspace to a new terraform version. | +| `data.attributes.allow-config-generation` | bool | `false` | Specifies whether Terraform can [generate resource configuration](/terraform/language/import/generating-configuration) when planning to import new resources. When set to `false`, Terraform returns an error when `import` blocks do not have a corresponding `resource` block. | +| `data.attributes.auto-apply` | bool | Defaults to the [Auto Apply](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply) workspace setting. | Determines if Terraform automatically applies the configuration on a successful `terraform plan`. | +| `data.attributes.debugging-mode` | bool | `false` | When set to `true`, enables verbose logging for the queued plan. | +| `data.attributes.is-destroy` | bool | `false` | When set to `true`, the plan destroys all provisioned resources. Mutually exclusive with `refresh-only`. | +| `data.attributes.message` | string | `"Queued manually via the Terraform Enterprise API"` | Specifies the message associated with this run. | +| `data.attributes.refresh` | bool | `true` | Specifies whether or not to refresh the state before a plan. | +| `data.attributes.refresh-only` | bool | `false` | When set to `true`, this run refreshes the state without modifying any resources. Mutually exclusive with `is-destroy`. | +| `data.attributes.replace-addrs` | array\[string] | | Specifies an optional list of resource addresses to be passed to the `-replace` flag. | +| `data.attributes.target-addrs` | array\[string] | | Specifies an optional list of resource addresses to be passed to the `-target` flag. | +| `data.attributes.variables` | array\[{key, value}] | (empty array) | Specifies an optional list of run-specific variable values. Refer to [Run-Specific Variables](/terraform/enterprise/workspaces/variables/managing-variables#run-specific-variables) for details. | +| `data.attributes.plan-only` | bool | (from configuration version) | Specifies if this is a [speculative, plan-only](/terraform/enterprise/run/modes-and-options#plan-only-speculative-plan) run that Terraform cannot apply. Often used in conjunction with terraform-version in order to test whether an upgrade would succeed. | +| `data.attributes.save-plan` | bool | `false` | When set to `true`, the run is executed as a `save plan` run. A `save plan` run plans and checks the configuration without becoming the workspace's current run. These run types only becomes the current run if you confirm that you want to apply them when prompted. When creating new [configuration versions](/terraform/enterprise/api-docs/configuration-versions) for saved plan runs, be sure to make them `provisional`. | +| `data.attributes.terraform-version` | string | none | Specifies the Terraform version to use in this run. Only valid for plan-only runs; must be a valid Terraform version available to the organization. | +| `data.relationships.workspace.data.id` | string | none | Specifies the workspace ID to execute the run in. | +| `data.relationships.configuration-version.data.id` | string | none | Specifies the configuration version to use for this run. If the `configuration-version` object is omitted, Terraform uses the workspace's latest configuration version to create the run . | + +| Status | Response | Reason | +| ------- | -------------------------------------- | --------------------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "runs"`) | Successfully created a run | +| [404][] | [JSON API error object][] | Organization or workspace not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "message": "Custom message" + }, + "type":"runs", + "relationships": { + "workspace": { + "data": { + "type": "workspaces", + "id": "ws-LLGHCr4SWy28wyGN" + } + }, + "configuration-version": { + "data": { + "type": "configuration-versions", + "id": "cv-n4XQPBa2QnecZJ4G" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/runs +``` + +### Sample Response + +```json +{ + "data": { + "id": "run-CZcmD7eagjhyX0vN", + "type": "runs", + "attributes": { + "actions": { + "is-cancelable": true, + "is-confirmable": false, + "is-discardable": false, + "is-force-cancelable": false + }, + "canceled-at": null, + "created-at": "2021-05-24T07:38:04.171Z", + "has-changes": false, + "auto-apply": false, + "allow-empty-apply": false, + "allow-config-generation": false, + "is-destroy": false, + "message": "Custom message", + "plan-only": false, + "source": "tfe-api", + "status-timestamps": { + "plan-queueable-at": "2021-05-24T07:38:04+00:00" + }, + "status": "pending", + "trigger-reason": "manual", + "target-addrs": null, + "permissions": { + "can-apply": true, + "can-cancel": true, + "can-comment": true, + "can-discard": true, + "can-force-execute": true, + "can-force-cancel": true, + "can-override-policy-check": true + }, + "refresh": false, + "refresh-only": false, + "replace-addrs": null, + "save-plan": false, + "variables": [] + }, + "relationships": { + "apply": {...}, + "comments": {...}, + "configuration-version": {...}, + "cost-estimate": {...}, + "created-by": {...}, + "input-state-version": {...}, + "plan": {...}, + "run-events": {...}, + "policy-checks": {...}, + "workspace": {...}, + "workspace-run-alerts": {...} + }, + "links": { + "self": "/api/v2/runs/run-CZcmD7eagjhyX0vN" + } + } +} +``` + +## Apply a Run + +`POST /runs/:run_id/actions/apply` + +| Parameter | Description | +| --------- | ------------------- | +| `run_id` | The run ID to apply | + +Applies a run that is paused waiting for confirmation after a plan. This includes runs in the "needs confirmation" and "policy checked" states. This action is only required for runs that can't be auto-applied. Plans can be auto-applied if the auto-apply setting is enabled on the workspace and the plan was queued by a new VCS commit or by a user with permission to apply runs for the workspace. + +-> **Note:** If the run has a soft failed sentinel policy, you will need to [override the policy check](/terraform/enterprise/api-docs/policy-checks#override-policy) before Terraform can apply the run. You can find policy check details in the `relationships` section of the [run details endpoint](#get-run-details) response. + +Applying a run requires permission to apply runs for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +This endpoint queues the request to perform an apply; the apply might not happen immediately. + +Since this endpoint represents an action (not a resource), it does not return any object in the response body. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------------------- | +| [202][] | none | Successfully queued an apply request. | +| [409][] | [JSON API error object][] | Run was not paused for confirmation; apply not allowed. | + +### Request Body + +This POST endpoint allows an optional JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| --------- | ------ | ------- | ---------------------------------- | +| `comment` | string | `null` | An optional comment about the run. | + +### Sample Payload + +This payload is optional, so the `curl` command will work without the `--data @payload.json` option too. + +```json +{ + "comment":"Looks good to me" +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/runs/run-DQGdmrWMX8z9yWQB/actions/apply +``` + +## List Runs in a Workspace + +`GET /workspaces/:workspace_id/runs` + +| Parameter | Description | +| -------------- | ---------------------------------- | +| `workspace_id` | The workspace ID to list runs for. | + +By default, `plan_only` runs will be excluded from the results. To see all runs, use `filter[operation]` with all available operations included as a comma-separated list. +This endpoint has an adjusted rate limit of 30 requests per minute. Note that most endpoints are limited to 30 requests per second. + +| Status | Response | Reason | +| ------- | ------------------------------------------------ | ------------------------ | +| [200][] | Array of [JSON API document][]s (`type: "runs"`) | Successfully listed runs | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | Required | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `page[number]` | If omitted, the endpoint returns the first page. | Optional | +| `page[size]` | If omitted, the endpoint returns 20 runs per page. | Optional | +| `filter[operation]` | A comma-separated list of run operations. The result lists runs that perform one of these operations. For details on options, refer to [Run operations](/terraform/enterprise/api-docs/run#run-operations). | Optional | +| `filter[status]` | A comma-separated list of run statuses. The result lists runs that are in one of the statuses you specify. For details on options, refer to [Run states](/terraform/enterprise/api-docs/run#run-states). | Optional | +| `filter[agent_pool_names]` | A comma-separated list of agent pool names. The result lists runs that use one of the agent pools you specify. | Optional | +| `filter[source]` | A comma-separated list of run sources. The result lists runs that came from one of the sources you specify. Options are listed in [Run Sources](/terraform/enterprise/api-docs/run#run-sources). | Optional | +| `filter[status_group]` | A single status group. The result lists runs whose status falls under this status group. For details on options, refer to [Run status groups](/terraform/enterprise/api-docs/run#run-status-groups). | Optional | +| `filter[timeframe]` | A single year period. The result lists runs that were created within the year you specify. An integer year or the string "year" for the past year are valid values. If omitted, the endpoint returns all runs since the creation of the workspace. | Optional | +| `search[user]` | Searches for runs that match the VCS username you supply. | Optional | +| `search[commit]` | Searches for runs that match the commit sha you specify. | Optional | +| `search[basic]` | Searches for runs that match the VCS username, commit sha, run_id, or run message your specify. HCP Terraform prioritizes `search[commit]` or `search[user]` and ignores `search[basic]` in favor of the higher priority parameters if you include them in your query. | Optional | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-yF7z4gyEQRhaCNG9/runs +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "run-CZcmD7eagjhyX0vN", + "type": "runs", + "attributes": { + "actions": { + "is-cancelable": true, + "is-confirmable": false, + "is-discardable": false, + "is-force-cancelable": false + }, + "canceled-at": null, + "created-at": "2021-05-24T07:38:04.171Z", + "has-changes": false, + "auto-apply": false, + "allow-empty-apply": false, + "allow-config-generation": false, + "is-destroy": false, + "message": "Custom message", + "plan-only": false, + "source": "tfe-api", + "status-timestamps": { + "plan-queueable-at": "2021-05-24T07:38:04+00:00" + }, + "status": "pending", + "trigger-reason": "manual", + "target-addrs": null, + "permissions": { + "can-apply": true, + "can-cancel": true, + "can-comment": true, + "can-discard": true, + "can-force-execute": true, + "can-force-cancel": true, + "can-override-policy-check": true + }, + "refresh": false, + "refresh-only": false, + "replace-addrs": null, + "save-plan": false, + "variables": [] + }, + "relationships": { + "apply": {...}, + "comments": {...}, + "configuration-version": {...}, + "cost-estimate": {...}, + "created-by": {...}, + "input-state-version": {...}, + "plan": {...}, + "run-events": {...}, + "policy-checks": {...}, + "workspace": {...}, + "workspace-run-alerts": {...} + }, + "links": { + "self": "/api/v2/runs/run-bWSq4YeYpfrW4mx7" + } + }, + {...} + ], + "links": { + "first": "https://app.terraform.io/api/v2/workspaces/ws-yF7z4gyEQRhaCNG9/runs?page[number]=1&page[size]=20", + "last": "https://app.terraform.io/api/v2/workspaces/ws-yF7z4gyEQRhaCNG9/runs?page[number]=19206&page[size]=20", + "self": "https://app.terraform.io/api/v2/workspaces/ws-yF7z4gyEQRhaCNG9/runs?page[number]=2&page[size]=20", + "prev": "https://app.terraform.io/api/v2/workspaces/ws-yF7z4gyEQRhaCNG9/runs?page[number]=1&page[size]=20", + "next": "https://app.terraform.io/api/v2/workspaces/ws-yF7z4gyEQRhaCNG9/runs?page[number]=3&page[size]=20" + }, + "meta": { + "pagination": { + "current-page": 2, + "next-page": 3, + "prev-page": 1, + "page-size": 20, + "total-count": 384105, + "total-pages": 19206 + } + } +} +``` + +## List Runs in an Organization + +`GET /organizations/:organization_name/runs` + +| Parameter | Description | +| ------------------- | --------------------------------------- | +| `organization_name` | The organization name to list runs for. | + +This endpoint has an adjusted rate limit of 30 requests per minute. Note that most endpoints are limited to 30 requests per second. + +Note that this endpoint differs from others in the pagination metadata included in the response, such as the exclusion of the typical `total-count` and `total-pages`. See the Sample Response below for more details. + +| Status | Response | Reason | +| ------- | ------------------------------------------------ | ------------------------ | +| [200][] | Array of [JSON API document][]s (`type: "runs"`) | Successfully listed runs | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | Required | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `page[number]` | If omitted, the endpoint returns the first page. | Optional | +| `page[size]` | If omitted, the endpoint returns 20 runs per page. | Optional | +| `filter[operation]` | A comma-separated list of run operations. The result lists runs that perform one of these operations. For details on options, refer to [Run operations](/terraform/enterprise/api-docs/run#run-operations). | Optional | +| `filter[status]` | A comma-separated list of run statuses. The result lists runs that are in one of the statuses you specify. For details on options, refer to [Run states](/terraform/enterprise/api-docs/run#run-states). | Optional | +| `filter[agent_pool_names]` | A comma-separated list of agent pool names. The result lists runs that use one of the agent pools you specify. | Optional | +| `filter[workspace_names]` | A comma-separated list of workspace names. The result lists runs that belong to one of the workspaces your specify. | Optional | +| `filter[source]` | A comma-separated list of run sources. The result lists runs that came from one of the sources you specify. Options are listed in [Run Sources](/terraform/enterprise/api-docs/run#run-sources). | Optional | +| `filter[status_group]` | A single status group. The result lists runs whose status falls under this status group. For details on options, refer to [Run status groups](/terraform/enterprise/api-docs/run#run-status-groups). | Optional | +| `filter[timeframe]` | A single year period. The result lists runs that were created within the year you specify. An integer year or the string "year" for the past year are valid values. If omitted, the endpoint returns runs created in the last year. | Optional | +| `search[user]` | Searches for runs that match the VCS username you supply. | Optional | +| `search[commit]` | Searches for runs that match the commit sha you specify. | Optional | +| `search[basic]` | Searches for runs that match the VCS username, commit sha, run_id, or run message your specify. HCP Terraform prioritizes `search[commit]` or `search[user]` and ignores `search[basic]` in favor of the higher priority parameters if you include them in your query. | Optional | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/hashicorp/runs +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "run-CZcmD7eagjhyX0vN", + "type": "runs", + "attributes": { + "actions": { + "is-cancelable": true, + "is-confirmable": false, + "is-discardable": false, + "is-force-cancelable": false + }, + "canceled-at": null, + "created-at": "2021-05-24T07:38:04.171Z", + "has-changes": false, + "auto-apply": false, + "allow-empty-apply": false, + "allow-config-generation": false, + "is-destroy": false, + "message": "Custom message", + "plan-only": false, + "source": "tfe-api", + "status-timestamps": { + "plan-queueable-at": "2021-05-24T07:38:04+00:00" + }, + "status": "pending", + "trigger-reason": "manual", + "target-addrs": null, + "permissions": { + "can-apply": true, + "can-cancel": true, + "can-comment": true, + "can-discard": true, + "can-force-execute": true, + "can-force-cancel": true, + "can-override-policy-check": true + }, + "refresh": false, + "refresh-only": false, + "replace-addrs": null, + "save-plan": false, + "variables": [] + }, + "relationships": { + "apply": {...}, + "comments": {...}, + "configuration-version": {...}, + "cost-estimate": {...}, + "created-by": {...}, + "input-state-version": {...}, + "plan": {...}, + "run-events": {...}, + "policy-checks": {...}, + "workspace": {...}, + "workspace-run-alerts": {...} + }, + "links": { + "self": "/api/v2/runs/run-bWSq4YeYpfrW4mx7" + } + }, + {...} + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/hashicorp/runs?page[number]=2&page[size]=20", + "prev": "https://app.terraform.io/api/v2/organizations/hashicorp/runs?page[number]=1&page[size]=20", + "next": "https://app.terraform.io/api/v2/organizations/hashicorp/runs?page[number]=3&page[size]=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "next-page": 2, + "prev-page": null, + "page-size": 20 + } + } +} +``` + +## Get run details + +`GET /runs/:run_id` + +| Parameter | Description | +| --------- | ------------------ | +| `:run_id` | The run ID to get. | + +This endpoint is used for showing details of a specific run. + +| Status | Response | Reason | +| ------- | -------------------------------------- | ------------------------------------ | +| [200][] | [JSON API document][] (`type: "runs"`) | Success | +| [404][] | [JSON API error object][] | Run not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/runs/run-bWSq4YeYpfrW4mx7 +``` + +### Sample Response + +```json +{ + "data": { + "id": "run-CZcmD7eagjhyX0vN", + "type": "runs", + "attributes": { + "actions": { + "is-cancelable": true, + "is-confirmable": false, + "is-discardable": false, + "is-force-cancelable": false + }, + "canceled-at": null, + "created-at": "2021-05-24T07:38:04.171Z", + "has-changes": false, + "auto-apply": false, + "allow-empty-apply": false, + "allow-config-generation": false, + "is-destroy": false, + "message": "Custom message", + "plan-only": false, + "source": "tfe-api", + "status-timestamps": { + "plan-queueable-at": "2021-05-24T07:38:04+00:00" + }, + "status": "pending", + "trigger-reason": "manual", + "target-addrs": null, + "permissions": { + "can-apply": true, + "can-cancel": true, + "can-comment": true, + "can-discard": true, + "can-force-execute": true, + "can-force-cancel": true, + "can-override-policy-check": true + }, + "refresh": false, + "refresh-only": false, + "replace-addrs": null, + "save-plan": false, + "variables": [] + }, + "relationships": { + "apply": {...}, + "comments": {...}, + "configuration-version": {...}, + "cost-estimate": {...}, + "created-by": {...}, + "input-state-version": {...}, + "plan": {...}, + "run-events": {...}, + "policy-checks": {...}, + "task-stages": {...}, + "workspace": {...}, + "workspace-run-alerts": {...} + }, + "links": { + "self": "/api/v2/runs/run-bWSq4YeYpfrW4mx7" + } + } +} +``` + +## Discard a Run + +`POST /runs/:run_id/actions/discard` + +| Parameter | Description | +| --------- | --------------------- | +| `run_id` | The run ID to discard | + +The `discard` action can be used to skip any remaining work on runs that are paused waiting for confirmation or priority. This includes runs in the "pending," "needs confirmation," "policy checked," and "policy override" states. + +Discarding a run requires permission to apply runs for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +This endpoint queues the request to perform a discard; the discard might not happen immediately. After discarding, the run is completed and later runs can proceed. + +This endpoint represents an action as opposed to a resource. As such, it does not return any object in the response body. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [202][] | none | Successfully queued a discard request. | +| [409][] | [JSON API error object][] | Run was not paused for confirmation or priority; discard not allowed. | + +### Request Body + +This POST endpoint allows an optional JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| --------- | ------ | ------- | ------------------------------------------------------ | +| `comment` | string | `null` | An optional explanation for why the run was discarded. | + +### Sample Payload + +This payload is optional, so the `curl` command will work without the `--data @payload.json` option too. + +```json +{ + "comment": "This run was discarded" +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/runs/run-DQGdmrWMX8z9yWQB/actions/discard +``` + +## Cancel a Run + +`POST /runs/:run_id/actions/cancel` + +| Parameter | Description | +| --------- | -------------------- | +| `run_id` | The run ID to cancel | + +The `cancel` action can be used to interrupt a run that is currently planning or applying. Performing a cancel is roughly equivalent to hitting ctrl+c during a Terraform plan or apply on the CLI. The running Terraform process is sent an `INT` signal, which instructs Terraform to end its work and wrap up in the safest way possible. + +Canceling a run requires permission to apply runs for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +This endpoint queues the request to perform a cancel; the cancel might not happen immediately. After canceling, the run is completed and later runs can proceed. + +This endpoint represents an action as opposed to a resource. As such, it does not return any object in the response body. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ----------------------------------------------------- | +| [202][] | none | Successfully queued a cancel request. | +| [409][] | [JSON API error object][] | Run was not planning or applying; cancel not allowed. | +| [404][] | [JSON API error object][] | Run was not found or user not authorized. | + +### Request Body + +This POST endpoint allows an optional JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| --------- | ------ | ------- | ----------------------------------------------------- | +| `comment` | string | `null` | An optional explanation for why the run was canceled. | + +### Sample Payload + +This payload is optional, so the `curl` command will work without the `--data @payload.json` option too. + +```json +{ + "comment": "This run was stuck and would never finish." +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/runs/run-DQGdmrWMX8z9yWQB/actions/cancel +``` + +## Forcefully cancel a run + +`POST /runs/:run_id/actions/force-cancel` + +| Parameter | Description | +| --------- | -------------------- | +| `run_id` | The run ID to cancel | + +The `force-cancel` action is like [cancel](#cancel-a-run), but ends the run immediately. Once invoked, the run is placed into a `canceled` state, and the running Terraform process is terminated. The workspace is immediately unlocked, allowing further runs to be queued. The `force-cancel` operation requires admin access to the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +This endpoint enforces a prerequisite that a [non-forceful cancel](#cancel-a-run) is performed first, and a cool-off period has elapsed. To determine if this criteria is met, it is useful to check the `data.attributes.is-force-cancelable` value of the [run details endpoint](#get-run-details). The time at which the force-cancel action will become available can be found using the [run details endpoint](#get-run-details), in the key `data.attributes.force_cancel_available_at`. Note that this key is only present in the payload after the initial cancel has been initiated. + +This endpoint represents an action as opposed to a resource. As such, it does not return any object in the response body. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +~> **Warning:** This endpoint has potentially dangerous side-effects, including loss of any in-flight state in the running Terraform process. Use this operation with extreme caution. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------ | +| [202][] | none | Successfully queued a cancel request. | +| [409][] | [JSON API error object][] | Run was not planning or applying, has not been canceled non-forcefully, or the cool-off period has not yet passed. | +| [404][] | [JSON API error object][] | Run was not found or user not authorized. | + +### Request Body + +This POST endpoint allows an optional JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| --------- | ------ | ------- | ----------------------------------------------------- | +| `comment` | string | `null` | An optional explanation for why the run was canceled. | + +### Sample Payload + +This payload is optional, so the `curl` command will work without the `--data @payload.json` option too. + +```json +{ + "comment": "This run was stuck and would never finish." +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/runs/run-DQGdmrWMX8z9yWQB/actions/force-cancel +``` + +## Forcefully execute a run + +`POST /runs/:run_id/actions/force-execute` + +| Parameter | Description | +| --------- | --------------------- | +| `run_id` | The run ID to execute | + +The force-execute action cancels all prior runs that are not already complete, unlocking the run's workspace and allowing the run to be executed. (It initiates the same actions as the "Run this plan now" button at the top of the view of a pending run.) + +Force-executing a run requires permission to apply runs for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +This endpoint enforces the following prerequisites: + +- The target run is in the "pending" state. +- The workspace is locked by another run. +- The run locking the workspace can be discarded. + +This endpoint represents an action as opposed to a resource. As such, it does not return any object in the response body. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +~> **Note:** While useful at times, force-executing a run circumvents the typical workflow of applying runs using HCP Terraform. It is not intended for regular use. If you find yourself using it frequently, please reach out to HashiCorp Support for help in developing an alternative approach. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------------------------------- | +| [202][] | none | Successfully initiated the force-execution process. | +| [403][] | [JSON API error object][] | Run is not pending, its workspace was not locked, or its workspace association was not found. | +| [409][] | [JSON API error object][] | The run locking the workspace was not in a discardable state. | +| [404][] | [JSON API error object][] | Run was not found or user not authorized. | + +### Request Body + +This POST endpoint does not take a request body. + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/runs/run-DQGdmrWMX8z9yWQB/actions/force-execute +``` + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +- `plan` - Additional information about plans. +- `apply` - Additional information about applies. +- `created_by` - Full user records of the users responsible for creating the runs. +- `cost_estimate` - Additional information about cost estimates. +- `configuration_version` - The configuration record used in the run. +- `configuration_version.ingress_attributes` - The commit information used in the run. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/ssh-keys.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/ssh-keys.mdx new file mode 100644 index 0000000000..70f2e54828 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/ssh-keys.mdx @@ -0,0 +1,320 @@ +--- +page_title: /ssh-keys API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/ssh-keys` endpoint to read, get, create, + update, and delete an organization's SSH keys. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# SSH keys API reference + +The `ssh-key` object represents an SSH key which includes a name and the SSH private key. An organization can have multiple SSH keys available. + +SSH keys can be used in two places: + +- You can assign them to VCS provider integrations, which are available in the API as `oauth-tokens`. Refer to [OAuth Tokens](/terraform/enterprise/api-docs/oauth-tokens) for additional information. Azure DevOps Server and Bitbucket Data Center require an SSH key. Other providers only require an SSH key when your repositories include submodules that are only accessible using an SSH connection instead of your VCS provider's API. +- They can be [assigned to workspaces](/terraform/enterprise/api-docs/workspaces#assign-an-ssh-key-to-a-workspace) and used when Terraform needs to clone modules from a Git server. This is only necessary when your configurations directly reference modules from a Git server; you do not need to do this if you use HCP Terraform's [private module registry](/terraform/enterprise/registry). + +Listing and viewing SSH keys requires either permission to manage VCS settings for the organization, or admin access to at least one workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +~> **Important:** The list and read methods on this API only provide metadata about SSH keys. The actual private key text is write-only, and HCP Terraform never provides it to users via the API or UI. + +## List SSH Keys + +`GET /organizations/:organization_name/ssh-keys` + +| Parameter | Description | +| -------------------- | -------------------------------------------------- | +| `:organization_name` | The name of the organization to list SSH keys for. | + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ---------------------------------------------------- | --------------------------------------------- | +| [200][] | Array of [JSON API document][]s (`type: "ssh-keys"`) | Success | +| [404][] | [JSON API error object][] | Organization not found or user not authorized | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------ | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 ssh keys per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/organizations/my-organization/ssh-keys +``` + +### Sample Response + +```json +{ + "data": [ + { + "attributes": { + "name": "SSH Key" + }, + "id": "sshkey-GxrePWre1Ezug7aM", + "links": { + "self": "/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM" + }, + "type": "ssh-keys" + } + ] +} +``` + +## Get an SSH Key + +`GET /ssh-keys/:ssh_key_id` + +| Parameter | Description | +| ------------- | ---------------------- | +| `:ssh_key_id` | The SSH key ID to get. | + +This endpoint is for looking up the name associated with an SSH key ID. It does not retrieve the key text. + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------------------------ | ---------------------------------------- | +| [200][] | [JSON API document][] (`type: "ssh-keys"`) | Success | +| [404][] | [JSON API error object][] | SSH key not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM +``` + +### Sample Response + +```json +{ + "data": { + "attributes": { + "name": "SSH Key" + }, + "id": "sshkey-GxrePWre1Ezug7aM", + "links": { + "self": "/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM" + }, + "type": "ssh-keys" + } +} +``` + +## Create an SSH Key + +`POST /organizations/:organization_name/ssh-keys` + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create an SSH key in. The organization must already exist, and the token authenticating the API request must have permission to manage VCS settings. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------------------------ | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "ssh-keys"`) | Success | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [404][] | [JSON API error object][] | User not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------- | ------ | ------- | -------------------------------- | +| `data.type` | string | | Must be `"ssh-keys"`. | +| `data.attributes.name` | string | | A name to identify the SSH key. | +| `data.attributes.value` | string | | The text of the SSH private key. | + +### Sample Payload + +```json +{ + "data": { + "type": "ssh-keys", + "attributes": { + "name": "SSH Key", + "value": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAm6+JVgl..." + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/ssh-keys +``` + +### Sample Response + +```json +{ + "data": { + "attributes": { + "name": "SSH Key" + }, + "id": "sshkey-GxrePWre1Ezug7aM", + "links": { + "self": "/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM" + }, + "type": "ssh-keys" + } +} +``` + +## Update an SSH Key + +`PATCH /ssh-keys/:ssh_key_id` + +| Parameter | Description | +| ------------- | ------------------------- | +| `:ssh_key_id` | The SSH key ID to update. | + +This endpoint replaces the name of an existing SSH key. + +Editing SSH keys requires permission to manage VCS settings. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------------------------ | ---------------------------------------- | +| [200][] | [JSON API document][] (`type: "ssh-keys"`) | Success | +| [404][] | [JSON API error object][] | SSH key not found or user not authorized | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ---------------------- | ------ | --------- | --------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"ssh-keys"`. | +| `data.attributes.name` | string | (nothing) | A name to identify the SSH key. If omitted, the existing name is preserved. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "name": "SSH Key for GitHub" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM +``` + +### Sample Response + +```json +{ + "data": { + "attributes": { + "name": "SSH Key for GitHub" + }, + "id": "sshkey-GxrePWre1Ezug7aM", + "links": { + "self": "/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM" + }, + "type": "ssh-keys" + } +} +``` + +## Delete an SSH Key + +`DELETE /ssh-keys/:ssh_key_id` + +| Parameter | Description | +| ------------- | ------------------------- | +| `:ssh_key_id` | The SSH key ID to delete. | + +Deleting SSH keys requires permission to manage VCS settings. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **Note:** This endpoint cannot be accessed with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------- | ---------------------------------------- | +| [204][] | No Content | Success | +| [404][] | [JSON API error object][] | SSH key not found or user not authorized | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/ssh-keys/sshkey-GxrePWre1Ezug7aM +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/stability-policy.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/stability-policy.mdx new file mode 100644 index 0000000000..1b59e2d1f2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/stability-policy.mdx @@ -0,0 +1,25 @@ +--- +page_title: API stability policy for Terraform Enterprise +description: >- + Learn how HashiCorp plans for stability, backward compatibility, and + deprecation for the Terraform Enterprise APIs. +source: terraform-docs-common +--- + +# API stability policy + +The HCP Terraform API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. (Stable endpoints are any endpoints _not_ marked as beta.) If we need to make a change that we consider backwards incompatible, then we will create a new endpoint that serves the same purpose; the old endpoint will be maintained until declared [deprecated](#deprecation-policy). + +The following changes are considered to be backwards compatible: + +- Adding new API endpoints. +- Adding new attributes, links, or relationships to existing API requests and responses. +- Adding new optional query parameters to existing API requests. + +Security vulnerabilities are an exception to this stability policy; we will make backwards incompatible changes to stable endpoints if it is necessary to protect our security or the security of our users. + +Endpoints that are in beta are subject to change without notice. + +## Deprecation Policy + +The deprecation policy provides users the opportunity to continue to consume API endpoints for a period of time after they have been superseded. Deprecation notices for endpoints should be readily available through various channels of communication, including documentation and HTTP responses. An endpoint should be available for at least three (3) months from the date on which it has been declared deprecated. (This time is cited as a minimum; endpoint availability may be longer based on contracted agreements.) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-version-outputs.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-version-outputs.mdx new file mode 100644 index 0000000000..cb5ef168b0 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-version-outputs.mdx @@ -0,0 +1,244 @@ +--- +page_title: /state-version-outputs API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/state-version-outputs` endpoint to read + the outputs from a specified Terraform state version or a workspace's current + outputs. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# State version outputs API reference + +State version outputs are the [output values](/terraform/language/values/outputs) from a Terraform state file. They include +the name and value of the output, as well as a sensitive boolean if the value should be hidden by default in UIs. + +~> **Important:** The state version outputs for a state version (as well as some other information about it) might be **populated asynchronously** by HCP Terraform. These values might not be immediately available after the state version is uploaded. The `resources-processed` property on the associated [state version object](/terraform/enterprise/api-docs/state-versions) indicates whether or not HCP Terraform has finished any necessary asynchronous processing. If you need to use these values, be sure to wait for `resources-processed` to become `true` before assuming that the values are in fact empty. + +## List State Version Outputs + +`GET /state-versions/:state_version_id/outputs` + +Listing state version outputs requires permission to read state outputs for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +| Parameter | Description | +| ------------------- | ------------------------------------ | +| `:state_version_id` | The ID of the desired state version. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Successfully returned a list of outputs for the given state version. | +| [404][] | [JSON API error object][] | State version not found, or user unauthorized to perform action. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 state version outputs per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/state-versions/sv-SDboVZC8TCxXEneJ/outputs +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "wsout-xFAmCR3VkBGepcee", + "type": "state-version-outputs", + "attributes": { + "name": "fruits", + "sensitive": false, + "type": "array", + "value": [ + "apple", + "strawberry", + "blueberry", + "rasberry" + ], + "detailed_type": [ + "tuple", + [ + "string", + "string", + "string", + "string" + ] + ] + }, + "links": { + "self": "/api/v2/state-version-outputs/wsout-xFAmCR3VkBGepcee" + } + }, + { + "id": "wsout-vspuB754AUNkfxwo", + "type": "state-version-outputs", + "attributes": { + "name": "vegetables", + "sensitive": false, + "type": "array", + "value": [ + "carrots", + "potato", + "tomato", + "onions" + ], + "detailed_type": [ + "tuple", + [ + "string", + "string", + "string", + "string" + ] + ] + }, + "links": { + "self": "/api/v2/state-version-outputs/wsout-vspuB754AUNkfxwo" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/state-versions/sv-SVB5wMrDL1XUgJ4G/outputs?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/state-versions/sv-SVB5wMrDL1XUgJ4G/outputs?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/state-versions/sv-SVB5wMrDL1XUgJ4G/outputs?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 2 + } + } +} +``` + +## Show a State Version Output + +`GET /state-version-outputs/:state_version_output_id` + +| Parameter | Description | +| -------------------------- | ------------------------------------------- | +| `:state_version_output_id` | The ID of the desired state version output. | + +State version output IDs must be obtained from a [state version object](/terraform/enterprise/api-docs/state-versions). When requesting a state version, you can optionally add `?include=outputs` to include full details for all of that state version's outputs. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "state-version-outputs"`) | Success. | +| [404][] | [JSON API error object][] | State version output not found or user not authorized. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + https://app.terraform.io/api/v2/state-version-outputs/wsout-J2zM24JPFbfc7bE5 +``` + +### Sample Response + +```json +{ + "data": { + "id": "wsout-J2zM24JPFbfc7bE5", + "type": "state-version-outputs", + "attributes": { + "name": "flavor", + "sensitive": false, + "type": "string", + "value": "Peanut Butter", + "detailed-type": "string" + }, + "links": { + "self": "/api/v2/state-version-outputs/wsout-J2zM24JPFbfc7bE5" + } + } +} +``` + +## Show Current State Version Outputs for a Workspace + +This endpoint allows organization users, who do not have permissions to read state versions, to fetch the latest [output values](/terraform/language/values/outputs) for a workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +-> **Note:** Sensitive values are not revealed and will be returned as `null`. To fetch an output including sensitive values see [Show a State Version Output](/terraform/enterprise/api-docs/state-version-outputs#show-a-state-version-output). + +`GET /workspaces/:workspace_id/current-state-version-outputs` + +| Parameter | Description | +| --------------- | --------------------------------------------- | +| `:workspace_id` | The ID of the workspace to read outputs from. | + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "state-version-outputs"`) | Successfully returned a list of outputs for the given workspace. | +| [404][] | [JSON API error object][] | State version outputs not found or user not authorized. | +| [503][] | [JSON API error object][] | State version outputs are being processed and are not ready. Retry the request. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-G4zM299PFbfc10E5/current-state-version-outputs +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "wsout-J2zM24JPFbfc7bE5", + "type": "state-version-outputs", + "attributes": { + "name": "flavor", + "sensitive": false, + "type": "string", + "value": "Peanut Butter", + "detailed-type": "string" + }, + "links": { + "self": "/api/v2/state-version-outputs/wsout-J2zM24JPFbfc7bE5" + } + }, + { + "id": "wsout-FLzM23Gcd5f37bE5", + "type": "state-version-outputs", + "attributes": { + "name": "recipe", + "sensitive": true, + "type": "string", + "value": "Don Douglas' Peanut Butter Frenzy", + "detailed-type": "string" + }, + "links": { + "self": "/api/v2/state-version-outputs/wsout-FLzM23Gcd5f37bE5" + } + } + ] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-versions.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-versions.mdx new file mode 100644 index 0000000000..9e8873612d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/state-versions.mdx @@ -0,0 +1,1241 @@ +--- +page_title: /state-versions API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/state-versions` endpoint to read, create, + upload, fetch, rollback, delete, and mark state versions for garbage + collection. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# State versions API reference + +## Attributes + +State version API objects represent an instance of Terraform state data, but do not directly contain the stored state. Instead, they contain information about the state, its properties, and its contents, and include one or more URLs from which the state can be downloaded. + +Some of the information returned in a state version API object might be **populated asynchronously** by HCP Terraform. This includes resources, modules, providers, and the [state version outputs](/terraform/enterprise/api-docs/state-version-outputs) associated with the state version. These values might not be immediately available after the state version is uploaded. The `resources-processed` property on the state version object indicates whether or not HCP Terraform has finished any necessary asynchronous processing. If you need to use these values, be sure to wait for `resources-processed` to become `true` before assuming that the values are in fact empty. + +| Attribute | Description | +| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `billable-rum-count` | Count of billable Resources Under Management (RUM). Only present for organization members on HCP Terraform RUM plans with visibility of billable RUM usage. | +| `hosted-json-state-download-url` | A URL from which you can download the state data in a [stable format](/terraform/internals/json-format) appropriate for external integrations to consume. Only available if the state was created by Terraform 1.3+. | +| `hosted-state-download-url` | A URL from which you can download the raw state data, in the format used internally by Terraform. | +| `hosted-json-state-upload-url` | A URL to which you can upload state data in a [stable format](/terraform/internals/json-format) appropriate for external integrations to consume. You can upload JSON state content once per state version. | +| `hosted-state-upload-url` | A URL to which you can upload state data in the format used Terraform uses internally. You can upload state data once per state version. | +| `modules` | Extracted information about the Terraform modules in this state data. Populated asynchronously. | +| `providers` | Extracted information about the Terraform providers used for resources in this state data. Populated asynchronously. | +| `intermediate` | A boolean flag that indicates the state version is a snapshot and not yet set as the current state version for a workspace. The last intermediate state version becomes the current state version when the workspace is unlocked. Not yet supported in Terraform Enterprise. | +| `resources` | Extracted information about the resources in this state data. Populated asynchronously. | +| `resources-processed` | A Boolean flag indicating whether HCP Terraform has finished asynchronously extracting outputs, resources, and other information about this state data. | +| `serial` | The serial number of this state instance, which increases every time Terraform creates new state in the workspace. | +| `state-version` | The version of the internal state format used for this state. Different Terraform versions read and write different format versions, but it only changes infrequently. | +| `status` | Indicates a state version's content upload [status](/terraform/enterprise/api-docs/state-versions#state-version-status). This status can be `pending`, `finalized` or `discarded`. | +| `terraform-version` | The Terraform version that created this state. Populated asynchronously. | +| `vcs-commit-sha` | The SHA of the configuration commit used in the Terraform run that produced this state. Only present if the workspace is connected to a VCS repository. | +| `vcs-commit-url` | A link to the configuration commit used in the Terraform run that produced this state. Only present if the workspace is connected to a VCS repository. | + +### State Version Status + +The state version status is found in `data.attributes.status`, and you can reference the following list of possible statuses. +A state version created through the API or CLI will only be listed in the UI if it is has a `finalized` status. + +| State | Description | +| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `pending` | Indicates that a state version has been created but the state data is not encoded within the request. Pending state versions do not contain state data and do not appear in the UI. You cannot unlock the workspace until the latest state version is finalized. | +| `finalized` | Indicates that the state version has been successfully uploaded to HCP Terraform or that the state version was created with a valid `state` attribute. | +| `discarded` | The state version was discarded because it was superseded by a newer state version before it could be uploaded. | +| `backing_data_soft_deleted` | <EnterpriseAlert inline /> The backing files associated with this state version are marked for garbage collection. Terraform permanently deletes backing files associated with this state version after a set number of days, but you can restore the backing data associated with it before it is permanently deleted. | +| `backing_data_permanently_deleted` | <EnterpriseAlert inline /> The backing files associated with this state version have been permanently deleted and can no longer be restored. | + +## Create a State Version + +> **Hands-on:** Try the [Version Remote State with the HCP Terraform API](/terraform/tutorials/cloud/cloud-state-api) tutorial to download a remote state file and use the Terraform API to create a new state version. + +`POST /workspaces/:workspace_id/state-versions` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to create the new state version in. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +Creates a state version and sets it as the current state version for the given workspace. The workspace must be locked by the user creating a state version. The workspace may be locked [with the API](/terraform/enterprise/api-docs/workspaces#lock-a-workspace) or [with the UI](/terraform/enterprise/workspaces/settings#locking). This is most useful for migrating existing state from Terraform Community edition into a new HCP Terraform workspace. + +Creating state versions requires permission to read and write state versions for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +!> **Warning:** Use caution when uploading state to workspaces that have already performed Terraform runs. Replacing state improperly can result in orphaned or duplicated infrastructure resources. + +-> **Note:** For Free Tier organizations, HCP Terraform always retains at least the last 100 states (across all workspaces) and at least the most recent state for every workspace. Additional states beyond the last 100 are retained for six months, and are then deleted. + +-> **Note:** You cannot access this endpoint with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------- | ----------------------------------------------------------------- | +| [201][] | [JSON API document][] | Successfully created a state version. | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action. | +| [409][] | [JSON API error object][] | Conflict; check the error object for more information. | +| [412][] | [JSON API error object][] | Precondition failed; check the error object for more information. | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.). | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------ | ------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"state-versions"`. | +| `data.attributes.serial` | integer | | The serial of the state version. Must match the serial value extracted from the raw state file. | +| `data.attributes.md5` | string | | An MD5 hash of the raw state version. | +| `data.attributes.state` | string | (nothing) | **Optional** Base64 encoded raw state file. If omitted, you must use the upload method below to complete the state version creation. The workspace may not be unlocked normally until the state version is uploaded. | +| `data.attributes.lineage` | string | (nothing) | **Optional** Lineage of the state version. Should match the lineage extracted from the raw state file. Early versions of terraform did not have the concept of lineage, so this is an optional attribute. | +| `data.attributes.json-state` | string | (nothing) | **Optional** Base64 encoded json state, as expressed by `terraform show -json`. See [JSON Output Format](/terraform/internals/json-format) for more details. | +| `data.attributes.json-state-outputs` | string | (nothing) | **Optional** Base64 encoded output values as represented by `terraform show -json` (the contents of the values/outputs key). If provided, the workspace outputs populate immediately. If omitted, HCP Terraform populates the workspace outputs from the given state after a short time. | +| `data.relationships.run.data.id` | string | (nothing) | **Optional** The ID of the run to associate with the state version. | + +### Sample Payload + +```json +{ + "data": { + "type":"state-versions", + "attributes": { + "serial": 1, + "md5": "d41d8cd98f00b204e9800998ecf8427e", + "lineage": "871d1b4a-e579-fb7c-ffdb-f0c858a647a7", + "state": "...", + "json-state": "...", + "json-state-outputs": "..." + }, + "relationships": { + "run": { + "data": { + "type": "runs", + "id": "run-bWSq4YeYpfrW4mx7" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-6fHMCom98SDXSQUv/state-versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-DmoXecHePnNznaA4", + "type": "state-versions", + "attributes": { + "vcs-commit-sha": null, + "vcs-commit-url": null, + "created-at": "2018-07-12T20:32:01.490Z", + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/f55b739b-ff03-4716-b436-726466b96dc4", + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/4fde7951-93c0-4414-9a40-f3abc4bac490", + "hosted-state-upload-url": null, + "hosted-json-state-upload-url": null, + "status": "finalized", + "intermediate": true, + "serial": 1 + }, + "links": { + "self": "/api/v2/state-versions/sv-DmoXecHePnNznaA4" + } + } +} +``` + +## Upload State and JSON State + + You can upload state version content in the same request when creating a state version. However, we _strongly_ recommend that you upload content separately. + +`PUT https://archivist.terraform.io/v1/object/<UNIQUE OBJECT ID>` + +HCP Terraform returns a `hosted-state-upload-url` or `hosted-json-state-upload-url` returned when you create a `state-version`. Once you upload state content, this URL is hidden on the resource and _no longer available_. + +### Sample Request + +In the below example, `@filename` is the name of Terraform state file you wish to upload. + +```shell +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @filename \ + https://archivist.terraform.io/v1/object/4c44d964-eba7-4dd5-ad29-1ece7b99e8da +``` + +## List State Versions for a Workspace + +`GET /state-versions` + +Listing state versions requires permission to read state versions for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ---------------------------- | -------------------------------------------------------------------------------------- | +| `filter[workspace][name]` | **Required** The name of one workspace to list versions for. | +| `filter[organization][name]` | **Required** The name of the organization that owns the desired workspace. | +| `filter[status]` | **Optional.** Filter state versions by status: `pending`, `finalized`, or `discarded`. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 state versions per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + "https://app.terraform.io/api/v2/state-versions?filter%5Bworkspace%5D%5Bname%5D=my-workspace&filter%5Borganization%5D%5Bname%5D=my-organization" +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "sv-g4rqST72reoHMM5a", + "type": "state-versions", + "attributes": { + "created-at": "2021-06-08T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "finalized", + "intermediate": false, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/abcdef12345", + "vcs-commit-sha": "abcdef12345" + }, + "relationships": { + "run": { + "data": { + "id": "run-YfmFLWpgTv31VZsP", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-V22qbeM92xb5mw9n", + "type": "state-version-outputs" + }, + { + "id": "wsout-ymkuRnrNFeU5wGpV", + "type": "state-version-outputs" + }, + { + "id": "wsout-v82BjkZnFEcscipg", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-g4rqST72reoHMM5a" + } + }, + { + "id": "sv-QYKf6GvNv75ZPTBr", + "type": "state-versions", + "attributes": { + "created-at": "2021-06-01T21:40:25.941Z", + "size": 819, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "finalized", + "intermediate": false, + "modules": { + "root": { + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + } + ], + "resources-processed": true, + "serial": 8, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/12345abcdef", + "vcs-commit-sha": "12345abcdef" + }, + "relationships": { + "run": { + "data": { + "id": "run-cVtxks6R8wsjCZMD", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-MmqMhmht6jFmLRvh", + "type": "state-version-outputs" + }, + { + "id": "wsout-Kuo9TCHg3oDLDQqa", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-QYKf6GvNv75ZPTBr" + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/state-versions?filter%5Borganization%5D%5Bname%5D=hashicorp&filter%5Bworkspace%5D%5Bname%5D=my-workspace&page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/state-versions?filter%5Borganization%5D%5Bname%5D=hashicorp&filter%5Bworkspace%5D%5Bname%5D=my-workspace&page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io.io/api/v2/state-versions?filter%5Borganization%5D%5Bname%5D=hashicorp&filter%5Bworkspace%5D%5Bname%5D=my-workspace&page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 10 + } + } +} +``` + +## Fetch the Current State Version for a Workspace + +`GET /workspaces/:workspace_id/current-state-version` + +| Parameter | Description | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID for the workspace whose current state version you want to fetch. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +Fetches the current state version for the given workspace. This state version +will be the input state when running terraform operations. + +Viewing state versions requires permission to read state versions for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Successfully returned current state version for the given workspace. | +| [404][] | [JSON API error object][] | Workspace not found, workspace does not have a current state version, or user unauthorized to perform action. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-6fHMCom98SDXSQUv/current-state-version +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-g4rqST72reoHMM5a", + "type": "state-versions", + "attributes": { + "billable-rum-count": 0, + "created-at": "2021-06-08T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "finalized", + "intermediate": false, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/abcdef12345", + "vcs-commit-sha": "abcdef12345" + }, + "relationships": { + "run": { + "data": { + "id": "run-YfmFLWpgTv31VZsP", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-V22qbeM92xb5mw9n", + "type": "state-version-outputs" + }, + { + "id": "wsout-ymkuRnrNFeU5wGpV", + "type": "state-version-outputs" + }, + { + "id": "wsout-v82BjkZnFEcscipg", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-g4rqST72reoHMM5a" + } + } +} +``` + +## Show a State Version + +`GET /state-versions/:state_version_id` + +Viewing state versions requires permission to read state versions for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Parameter | Description | +| ------------------- | ------------------------------------ | +| `:state_version_id` | The ID of the desired state version. | + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Successfully returned current state version for the given workspace. | +| [404][] | [JSON API error object][] | Workspace not found, workspace does not have a current state version, or user unauthorized to perform action. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/state-versions/sv-SDboVZC8TCxXEneJ +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-g4rqST72reoHMM5a", + "type": "state-versions", + "attributes": { + "created-at": "2021-06-08T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "finalized", + "intermediate": false, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/abcdef12345", + "vcs-commit-sha": "abcdef12345" + }, + "relationships": { + "run": { + "data": { + "id": "run-YfmFLWpgTv31VZsP", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-V22qbeM92xb5mw9n", + "type": "state-version-outputs" + }, + { + "id": "wsout-ymkuRnrNFeU5wGpV", + "type": "state-version-outputs" + }, + { + "id": "wsout-v82BjkZnFEcscipg", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-g4rqST72reoHMM5a" + } + } +} +``` + +## Rollback to a Previous State Version + +`PATCH /workspaces/:workspace_id/state-versions` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to create the new state version in. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +Creates a state version by duplicating the specified state version and sets it as the current state version for the given workspace. The workspace must be locked by the user creating a state version. The workspace may be locked [with the API](/terraform/enterprise/api-docs/workspaces#lock-a-workspace) or [with the UI](/terraform/enterprise/workspaces/settings#locking). This is most useful for rolling back to a known-good state after an operation such as a Terraform upgrade didn't go as planned. + +Creating state versions requires permission to read and write state versions for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +!> **Warning:** Use caution when rolling back to a previous state. Replacing state improperly can result in orphaned or duplicated infrastructure resources. + +-> **Note:** You cannot access this endpoint with [organization tokens](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + +| Status | Response | Reason | +| ------- | ------------------------- | --------------------------------------------------------------- | +| [201][] | [JSON API document][] | Successfully rolled back. | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action. | +| [409][] | [JSON API error object][] | Conflict; check the error object for more information. | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.). | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| --------------------------------------------------- | ------ | ------- | -------------------------------------------------------------- | +| `data.type` | string | | Must be `"state-versions"`. | +| `data.relationships.rollback-state-version.data.id` | string | | The ID of the state version to use for the rollback operation. | + +### Sample Payload + +```json +{ + "data": { + "type":"state-versions", + "relationships": { + "rollback-state-version": { + "data": { + "type": "state-versions", + "id": "sv-bWfq4Y1YpRKW4mx7" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-6fHMCom98SDXSQUv/state-versions +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-DmoXecHePnNznaA4", + "type": "state-versions", + "attributes": { + "created-at": "2022-11-22T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "1.3.5" + }, + "relationships": { + "rollback-state-version": { + "data": { + "id": "sv-YfmFLgTv31VZsP", + "type": "state-versions" + } + } + }, + "links": { + "self": "/api/v2/state-versions/sv-DmoXecHePnNznaA4" + } + } +} +``` + +## Mark a State Version for Garbage Collection + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +`POST /api/v2/state-versions/:state_version_id/actions/soft_delete_backing_data` + +This endpoint directs Terraform Enterprise to _soft delete_ the backing files associated with this state version. Soft deletion marks the state version for garbage collection. Terraform permanently deletes state versions after a set number of days unless the state version is restored. Once a state version is soft deleted, any attempts to read the state version will fail. Refer to [State Version Status](#state-version-status) for information about all data states. + +This endpoint can only soft delete state versions that are in an [`finalized` state](#state-version-status) and are not the current state version. Otherwise, calling this endpoint results in an error. + +You must have organization owner permissions to soft delete state versions. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information about permissions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Parameter | Description | +| ------------------- | ----------------------------------------------------------- | +| `:state_version_id` | The ID of the state version to mark for garbage collection. | + +| Status | Response | Reason | +| ------- | ------------------------- | --------------------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Terraform successfully marked the data for garbage collection. | +| [400][] | [JSON API error object][] | Terraform failed to transition the state to `backing_data_soft_deleted`. | +| [404][] | [JSON API error object][] | Terraform did not find the state version or the user is not authorized to modify the state version. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/state-versions/sv-ntv3HbhJqvFzamy7/actions/soft_delete_backing_data + --data {"data": {"attributes": {"delete-older-than-n-days": 23}}} +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-g4rqST72reoHMM5a", + "type": "state-versions", + "attributes": { + "created-at": "2021-06-08T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "backing_data_soft_deleted", + "intermediate": false, + "delete-older-than-n-days": 23, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/abcdef12345", + "vcs-commit-sha": "abcdef12345" + }, + "relationships": { + "run": { + "data": { + "id": "run-YfmFLWpgTv31VZsP", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-V22qbeM92xb5mw9n", + "type": "state-version-outputs" + }, + { + "id": "wsout-ymkuRnrNFeU5wGpV", + "type": "state-version-outputs" + }, + { + "id": "wsout-v82BjkZnFEcscipg", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-g4rqST72reoHMM5a" + } + } +} +``` + +## Restore a State Version Marked for Garbage Collection + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +`POST /api/v2/state-versions/:state_version_id/actions/restore_backing_data` + +This endpoint directs Terraform Enterprise to restore backing files associated with this state version. This endpoint can only restore state versions that are not in a [`backing_data_permanently_deleted` state](#state-version-status). Terraform restores applicable state versions back to their `finalized` state. Otherwise, calling this endpoint results in an error. + +You must have organization owner permissions to restore state versions. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information about permissions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Parameter | Description | +| ------------------- | --------------------------------------- | +| `:state_version_id` | The ID of the state version to restore. | + +| Status | Response | Reason | +| ------- | ------------------------- | --------------------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Terraform successfully initiated the restore process. | +| [400][] | [JSON API error object][] | Terraform failed to transition the state to `finalized`. | +| [404][] | [JSON API error object][] | Terraform did not find the state version or the user is not authorized to modify the state version. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/state-versions/sv-ntv3HbhJqvFzamy7/actions/restore_backing_data +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-g4rqST72reoHMM5a", + "type": "state-versions", + "attributes": { + "created-at": "2021-06-08T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "uploaded", + "intermediate": false, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/abcdef12345", + "vcs-commit-sha": "abcdef12345" + }, + "relationships": { + "run": { + "data": { + "id": "run-YfmFLWpgTv31VZsP", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-V22qbeM92xb5mw9n", + "type": "state-version-outputs" + }, + { + "id": "wsout-ymkuRnrNFeU5wGpV", + "type": "state-version-outputs" + }, + { + "id": "wsout-v82BjkZnFEcscipg", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-g4rqST72reoHMM5a" + } + } +} +``` + +## Permanently Delete a State Version + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +`POST /api/v2/state-versions/:state_version_id/actions/permanently_delete_backing_data` + +This endpoint directs Terraform Enterprise to permanently delete backing files associated with this state version. This endpoint can only permanently delete state versions that are in an [`backing_data_soft_deleted` state](#state-version-status) and are not the current state version. Otherwise, calling this endpoint results in an error. + +You must have organization owner permissions to permanently delete state versions. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information about permissions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Parameter | Description | +| ------------------- | -------------------------------------------------- | +| `:state_version_id` | The ID of the state version to permanently delete. | + +| Status | Response | Reason | +| ------- | ------------------------- | -------------------------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Terraform deleted the data permanently. | +| [400][] | [JSON API error object][] | Terraform failed to transition the state to `backing_data_permanently_deleted`. | +| [404][] | [JSON API error object][] | Terraform did not find the state version or the user is not authorized to modify the state version data. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/state-versions/sv-ntv3HbhJqvFzamy7/actions/permanently_delete_backing_data +``` + +### Sample Response + +```json +{ + "data": { + "id": "sv-g4rqST72reoHMM5a", + "type": "state-versions", + "attributes": { + "created-at": "2021-06-08T01:22:03.794Z", + "size": 940, + "hosted-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-state-upload-url": null, + "hosted-json-state-download-url": "https://archivist.terraform.io/v1/object/...", + "hosted-json-state-upload-url": null, + "status": "backing_data_permanently_deleted", + "intermediate": false, + "modules": { + "root": { + "null-resource": 1, + "data.terraform-remote-state": 1 + } + }, + "providers": { + "provider[\"terraform.io/builtin/terraform\"]": { + "data.terraform-remote-state": 1 + }, + "provider[\"registry.terraform.io/hashicorp/null\"]": { + "null-resource": 1 + } + }, + "resources": [ + { + "name": "other_username", + "type": "data.terraform_remote_state", + "count": 1, + "module": "root", + "provider": "provider[\"terraform.io/builtin/terraform\"]" + }, + { + "name": "random", + "type": "null_resource", + "count": 1, + "module": "root", + "provider": "provider[\"registry.terraform.io/hashicorp/null\"]" + } + ], + "resources-processed": true, + "serial": 9, + "state-version": 4, + "terraform-version": "0.15.4", + "vcs-commit-url": "https://gitlab.com/my-organization/terraform-test/-/commit/abcdef12345", + "vcs-commit-sha": "abcdef12345" + }, + "relationships": { + "run": { + "data": { + "id": "run-YfmFLWpgTv31VZsP", + "type": "runs" + } + }, + "created-by": { + "data": { + "id": "user-onZs69ThPZjBK2wo", + "type": "users" + }, + "links": { + "self": "/api/v2/users/user-onZs69ThPZjBK2wo", + "related": "/api/v2/runs/run-YfmFLWpgTv31VZsP/created-by" + } + }, + "workspace": { + "data": { + "id": "ws-noZcaGXsac6aZSJR", + "type": "workspaces" + } + }, + "outputs": { + "data": [ + { + "id": "wsout-V22qbeM92xb5mw9n", + "type": "state-version-outputs" + }, + { + "id": "wsout-ymkuRnrNFeU5wGpV", + "type": "state-version-outputs" + }, + { + "id": "wsout-v82BjkZnFEcscipg", + "type": "state-version-outputs" + } + ] + } + }, + "links": { + "self": "/api/v2/state-versions/sv-g4rqST72reoHMM5a" + } + } +} +``` + +## List State Version Outputs + +The output values from a state version are also available via the API. For details, see the [state version outputs documentation.](/terraform/enterprise/api-docs/state-version-outputs#list-state-version-outputs) + +### Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +- `created_by` - The user that created the state version. For state versions created via a run executed by HCP Terraform, this is an internal user account. +- `run` - The run that created the state version, if applicable. +- `run.created_by` - The user that manually triggered the run, if applicable. +- `run.configuration_version` - The configuration version used in the run. +- `outputs` - The parsed outputs for this state version. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-access.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-access.mdx new file mode 100644 index 0000000000..54ed8a467c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-access.mdx @@ -0,0 +1,433 @@ +--- +page_title: /team-workspaces API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/team-workspaces` endpoint to manage team + access to a workspace. Read, add, update, and remove a team's access to + workspaces. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Team access API reference + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/team-management.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +The team access APIs are used to associate a team to permissions on a workspace. A single `team-workspace` resource contains the relationship between the Team and Workspace, including the privileges the team has on the workspace. + +## Resource permissions + +A `team-workspace` resource represents a team's local permissions on a specific workspace. Teams can also have organization-level permissions that grant access to workspaces. HCP Terraform uses the more restrictive access level. For example, a team with the **Manage workspaces** permission enabled has admin access on all workspaces, even if their `team-workspace` on a particular workspace only grants read access. For more information, refer to [Managing Workspace Access](/terraform/enterprise/users-teams-organizations/teams/manage#managing-workspace-access). + +Any member of an organization can view team access relative to their own team memberships, including secret teams of which they are a member. Organization owners and workspace admins can modify team access or view the full set of secret team accesses. The organization token and the owners team token can act as an owner on these endpoints. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information. + +## List Team Access to a Workspace + +`GET /team-workspaces` + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | ---------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-workspaces"`) | The request was successful | +| [404][] | [JSON API error object][] | Workspace not found or user unauthorized to perform action | + +### Query Parameters + +[These are standard URL query parameters](/terraform/enterprise/api-docs#query-parameters); remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `filter[workspace][id]` | **Required.** The workspace ID to list team access for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | +| `page[number]` | **Optional.** | +| `page[size]` | **Optional.** | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + "https://app.terraform.io/api/v2/team-workspaces?filter%5Bworkspace%5D%5Bid%5D=ws-XGA52YVykdTgryTN" +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "tws-19iugLwoNgtWZbKP", + "type": "team-workspaces", + "attributes": { + "access": "custom", + "runs": "apply", + "variables": "none", + "state-versions": "none", + "sentinel-mocks": "none", + "workspace-locking": false, + "run-tasks": false + }, + "relationships": { + "team": { + "data": { + "id": "team-DBycxkdQrGFf5zEM", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-DBycxkdQrGFf5zEM" + } + }, + "workspace": { + "data": { + "id": "ws-XGA52YVykdTgryTN", + "type": "workspaces" + }, + "links": { + "related": "/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self": "/api/v2/team-workspaces/tws-19iugLwoNgtWZbKP" + } + } + ] +} +``` + +## Show a Team Access relationship + +`GET /team-workspaces/:id` + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "team-workspaces"`) | The request was successful | +| [404][] | [JSON API error object][] | Team access not found or user unauthorized to perform action | + +| Parameter | Description | +| --------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the team/workspace relationship. Obtain this from the [list team access action](#list-team-access-to-a-workspace) described above. | + +-> **Note:** As mentioned in [Add Team Access to a Workspace](#add-team-access-to-a-workspace) and [Update Team Access +to a Workspace](#update-team-access-to-a-workspace), several permission attributes are not editable unless `access` is +set to `custom`. When access is `read`, `plan`, `write`, or `admin`, these attributes are read-only and reflect the +implicit permissions granted to the current access level. + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/team-workspaces/tws-s68jV4FWCDwWvQq8 +``` + +### Sample Response + +```json +{ + "data": { + "id": "tws-s68jV4FWCDwWvQq8", + "type": "team-workspaces", + "attributes": { + "access": "write", + "runs": "apply", + "variables": "write", + "state-versions": "write", + "sentinel-mocks": "read", + "workspace-locking": true, + "run-tasks": false + }, + "relationships": { + "team": { + "data": { + "id": "team-DBycxkdQrGFf5zEM", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-DBycxkdQrGFf5zEM" + } + }, + "workspace": { + "data": { + "id": "ws-XGA52YVykdTgryTN", + "type": "workspaces" + }, + "links": { + "related": "/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self": "/api/v2/team-workspaces/tws-s68jV4FWCDwWvQq8" + } + } +} +``` + +## Add Team Access to a Workspace + +`POST /team-workspaces` + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | ------------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "team-workspaces"`) | The request was successful | +| [404][] | [JSON API error object][] | Workspace or Team not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ---------------------------------------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"team-workspaces"`. | +| `data.attributes.access` | string | | The type of access to grant. Valid values are `read`, `plan`, `write`, `admin`, or `custom`. | +| `data.attributes.runs` | string | "read" | If `access` is `custom`, the permission to grant for the workspace's runs. Can only be used when `access` is `custom`. Valid values include `read`, `plan`, or `apply`. | +| `data.attributes.variables` | string | "none" | If `access` is `custom`, the permission to grant for the workspace's variables. Can only be used when `access` is `custom`. Valid values include `none`, `read`, or `write`. | +| `data.attributes.state-versions` | string | "none" | If `access` is `custom`, the permission to grant for the workspace's state versions. Can only be used when `access` is `custom`. Valid values include `none`, `read-outputs`, `read`, or `write`. | +| `data.attributes.sentinel-mocks` | string | "none" | If `access` is `custom`, the permission to grant for the workspace's Sentinel mocks. Can only be used when `access` is `custom`. Valid values include `none`, or `read`. | +| `data.attributes.workspace-locking` | boolean | false | If `access` is `custom`, the permission granting the ability to manually lock or unlock the workspace. Can only be used when `access` is `custom`. | +| `data.attributes.run-tasks` | boolean | false | If `access` is `custom`, this permission allows the team to manage run tasks within the workspace. | +| `data.relationships.workspace.data.type` | string | | Must be `workspaces`. | +| `data.relationships.workspace.data.id` | string | | The workspace ID to which the team is to be added. | +| `data.relationships.team.data.type` | string | | Must be `teams`. | +| `data.relationships.team.data.id` | string | | The ID of the team to add to the workspace. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "access": "custom", + "runs": "apply", + "variables": "none", + "state-versions": "read-outputs", + "plan-outputs": "none", + "sentinel-mocks": "read", + "workspace-locking": false, + "run-tasks": false + }, + "relationships": { + "workspace": { + "data": { + "type": "workspaces", + "id": "ws-XGA52YVykdTgryTN" + } + }, + "team": { + "data": { + "type": "teams", + "id": "team-DBycxkdQrGFf5zEM" + } + } + }, + "type": "team-workspaces" + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/team-workspaces +``` + +### Sample Response + +```json +{ + "data": { + "id": "tws-sezDAcCYWLnd3xz2", + "type": "team-workspaces", + "attributes": { + "access": "custom", + "runs": "apply", + "variables": "none", + "state-versions": "read-outputs", + "sentinel-mocks": "read", + "workspace-locking": false, + "run-tasks": false + }, + "relationships": { + "team": { + "data": { + "id": "team-DBycxkdQrGFf5zEM", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-DBycxkdQrGFf5zEM" + } + }, + "workspace": { + "data": { + "id": "ws-XGA52YVykdTgryTN", + "type": "workspaces" + }, + "links": { + "related": "/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self": "/api/v2/team-workspaces/tws-sezDAcCYWLnd3xz2" + } + } +} +``` + +## Update Team Access to a Workspace + +`PATCH /team-workspaces/:id` + +| Status | Response | Reason | +| ------- | ------------------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-workspaces"`) | The request was successful | +| [404][] | [JSON API error object][] | Team Access not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | + +| Parameter | | | Description | +| ----------------------------------- | ------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | | | The ID of the team/workspace relationship. Obtain this from the [list team access action](#list-team-access-to-a-workspace) described above. | +| `data.attributes.access` | string | | The type of access to grant. Valid values are `read`, `plan`, `write`, `admin`, or `custom`. | +| `data.attributes.runs` | string | "read" | If `access` is `custom`, the permission to grant for the workspace's runs. Can only be used when `access` is `custom`. | +| `data.attributes.variables` | string | "none" | If `access` is `custom`, the permission to grant for the workspace's variables. Can only be used when `access` is `custom`. | +| `data.attributes.state-versions` | string | "none" | If `access` is `custom`, the permission to grant for the workspace's state versions. Can only be used when `access` is `custom`. | +| `data.attributes.sentinel-mocks` | string | "none" | If `access` is `custom`, the permission to grant for the workspace's Sentinel mocks. Can only be used when `access` is `custom`. | +| `data.attributes.workspace-locking` | boolean | false | If `access` is `custom`, the permission granting the ability to manually lock or unlock the workspace. Can only be used when `access` is `custom`. | +| `data.attributes.run-tasks` | boolean | false | If `access` is `custom`, this permission allows the team to manage run tasks within the workspace. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/team-workspaces/tws-s68jV4FWCDwWvQq8 +``` + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "access": "custom", + "state-versions": "none" + } + } +} +``` + +### Sample Response + +```json +{ + "data": { + "id": "tws-s68jV4FWCDwWvQq8", + "type": "team-workspaces", + "attributes": { + "access": "custom", + "runs": "apply", + "variables": "write", + "state-versions": "none", + "sentinel-mocks": "read", + "workspace-locking": true, + "run-tasks": true + }, + "relationships": { + "team": { + "data": { + "id": "team-DBycxkdQrGFf5zEM", + "type": "teams" + }, + "links": { + "related": "/api/v2/teams/team-DBycxkdQrGFf5zEM" + } + }, + "workspace": { + "data": { + "id": "ws-XGA52YVykdTgryTN", + "type": "workspaces" + }, + "links": { + "related": "/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self": "/api/v2/team-workspaces/tws-s68jV4FWCDwWvQq8" + } + } +} +``` + +## Remove Team Access to a Workspace + +`DELETE /team-workspaces/:id` + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------ | +| [204][] | | The Team Access was successfully destroyed | +| [404][] | [JSON API error object][] | Team Access not found or user unauthorized to perform action | + +| Parameter | Description | +| --------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `:id` | The ID of the team/workspace relationship. Obtain this from the [list team access action](#list-team-access-to-a-workspace) described above. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/team-workspaces/tws-sezDAcCYWLnd3xz2 +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-members.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-members.mdx new file mode 100644 index 0000000000..310dfa6121 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-members.mdx @@ -0,0 +1,249 @@ +--- +page_title: /relationships API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/relationships` endpoints to add and + remove users from teams using an account or organization membership ID. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Team membership API reference + +<!-- BEGIN: TFC:only name:pnp-callout --> + +-> **Note:** Team management is available in HCP Terraform **Standard**, **Plus**, and **Premium** editions. Free organizations can also use this API, but can only manage membership of their owners team. [Learn more about HCP Terraform pricing here](https://www.hashicorp.com/products/terraform/pricing). + +<!-- END: TFC:only name:pnp-callout --> + +The Team Membership API is used to add or remove users from teams. The [Team API](/terraform/enterprise/api-docs/teams) is used to create or destroy teams. + +## Organization Membership + +-> **Note:** To add users to a team, they must first receive and accept the invitation to join the organization by email. This process ensures that you do not accidentally add the wrong person by mistyping a username. Refer to [the Organization Memberships API documentation](/terraform/enterprise/api-docs/organization-memberships) for more information. + +## Add a User to Team (With user ID) + +This method adds multiple users to a team using the user ID. Both users and teams must already exist. + +`POST /teams/:team_id/relationships/users` + +| Parameter | Description | +| ---------- | ------------------- | +| `:team_id` | The ID of the team. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ------------------------------------------------ | +| `data[].type` | string | | Must be `"users"`. | +| `data[].id` | string | | The ID of the user you want to add to this team. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "users", + "id": "myuser1" + }, + { + "type": "users", + "id": "myuser2" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/257525/relationships/users +``` + +## Add a User to Team (With organization membership ID) + +This method adds multiple users to a team using the organization membership ID. Unlike the user ID method, the user only needs an invitation to the organization. + +`POST /teams/:team_id/relationships/organization-memberships` + +| Parameter | Description | +| ---------- | ------------------- | +| `:team_id` | The ID of the team. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | -------------------------------------------------- | +| `data[].type` | string | | Must be `"organization-memberships"`. | +| `data[].id` | string | | The organization membership ID of the user to add. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "organization-memberships", + "id": "ou-nX7inDHhmC3quYgy" + }, + { + "type": "organization-memberships", + "id": "ou-tTJph1AQVK5ZmdND" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/257525/relationships/organization-memberships +``` + +## Delete a User from Team (With user ID) + +This method removes multiple users from a team using the user ID. Both users and teams must already exist. This method only removes a user from this team. It does not delete that user overall. + +`DELETE /teams/:team_id/relationships/users` + +| Parameter | Description | +| ---------- | ------------------- | +| `:team_id` | The ID of the team. | + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | -------------------------------------------- | +| `data[].type` | string | | Must be `"users"`. | +| `data[].id` | string | | The ID of the user to remove from this team. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "users", + "id": "myuser1" + }, + { + "type": "users", + "id": "myuser2" + } + ] +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/257525/relationships/users +``` + +## Delete a User from Team (With organization membership ID) + +This method removes multiple users from a team using the organization membership ID. This method only removes a user from this team. It does not delete that user overall. + +`DELETE /teams/:team_id/relationships/organization-memberships` + +| Parameter | Description | +| ---------- | ------------------- | +| `:team_id` | The ID of the team. | + +### Request Body + +This DELETE endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ----------------------------------------------------- | +| `data[].type` | string | | Must be `"organization-memberships"`. | +| `data[].id` | string | | The organization membership ID of the user to remove. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "organization-memberships", + "id": "ou-nX7inDHhmC3quYgy" + }, + { + "type": "organization-memberships", + "id": "ou-tTJph1AQVK5ZmdND" + } + ] +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/257525/relationships/organization-memberships +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-tokens.mdx new file mode 100644 index 0000000000..9db2a1196a --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/team-tokens.mdx @@ -0,0 +1,558 @@ +--- +page_title: '/teams/:team_id/authentication-tokens API reference for Terraform Enterprise' +description: >- + Use the Terraform Enterprise API's `/teams/:team_id/authentication-tokens` + endpoint to generate, delete, and list a team's API tokens. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Team tokens API reference + +Team API tokens grant access to a team's workspaces. Teams are not limited to a single token, and can have multiple tokens at a time. Team tokens are not associated with a specific user. + +Teams relying on the [**legacy**](/terraform/enterprise/api-docs/team-tokens#legacy-team-tokens-api-reference) team token API (`/teams/:team_id/authentication-token`), can only create a **single**, valid token at a time. Generating a new legacy token when one already exists for the team revokes the existing legacy token, replacing it with a new team token. + +You can create and delete team tokens and list an organization's team tokens. + +## Generate a new team token + +Generates a new team token. + +| Method | Path | +| :----- | :------------------------------------ | +| POST | /teams/:team_id/authentication-tokens | + +This endpoint returns the secret text of the new authentication token. You can only access the secret text when you create it and cannot recover it later. + +### Parameters + +- `:team_id` (`string: <required>`) - specifies the team ID for generating the team token + +### Request body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"authentication-tokens"`. | +| `data.attributes.description` | string | | The description of the team token. Each description **must** be unique within the context of the team. | +| `data.attributes.expired-at` | string | `null` | The UTC date and time that the Team Token will expire, in ISO 8601 format. If omitted or set to `null` the token will never expire. | + +### Sample payload + +```json +{ + "data": { + "type": "authentication-tokens", + "attributes": { + "description": "Team API token for team ABC", + "expired-at": "2023-04-06T12:00:00.000Z" + } + } +} +``` + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/team-BUHBEM97xboT8TVz/authentication-tokens +``` + +### Sample response + +```json +{ + "data": { + "id": "4111797", + "type": "authentication-tokens", + "attributes": { + "created-at": "2017-11-29T19:18:09.976Z", + "last-used-at": null, + "description": "Team API token for team ABC", + "token": "QnbSxjjhVMHJgw.atlasv1.gxZnWIjI5j752DGqdwEUVLOFf0mtyaQ00H9bA1j90qWb254lEkQyOdfqqcq9zZL7Sm0", + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-Y7RyjccPVBKVEdp7", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-62goNpx1ThQf689e", + "type": "users" + } + } + } + } +} + +``` + +## Delete a team token + +| Method | Path | +| :----- | :------------------------------- | +| DELETE | /authentication-tokens/:token_id | + +### Parameters + +- `:token_id` (`string: <required>`) - specifies the token_id from which to delete the token + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/authentication-tokens/at-6yEmxNAhaoQLH1Da +``` + +## List team tokens + +Lists the team tokens for the team. + +`GET /organizations/:organization_id/team-tokens` + +| Parameter | Description | +| ------------------ | -------------------------------------------------------------- | +| `:organization_id` | The ID of the organization whose team tokens you want to list. | + +This endpoint returns object metadata and does not include secret authentication details of tokens. You can only view a token when you create it and cannot recover it later. + +| Status | Response | Reason | +| ------- | --------------------------------------------- | -------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-tokens"`) | The request was successful. | +| [200][] | Empty [JSON API document][] | The specified team has no team tokens. | +| [404][] | [JSON API error object][] | Team not found. | + +### Query parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters) and searching with the `q` parameter. Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint returns the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint returns 20 tokens per page. | +| `q` | **Optional.** A search query string. You can search for a team authentication token using the team name. | +| `sort` | **Optional.** Allows sorting the team tokens by `"created-by"`, `"expired-at"`, and `"last-used-at"`. Prepending a hyphen to the sort parameter reverses the order. If omitted, the default sort order ascending. | + +### Sample response + +```json +{ + "data": [ + { + "id": "at-TLhN8cc6ro6qYDvp", + "type": "authentication-tokens", + "attributes": { + "created-at": "2017-11-29T19:18:09.976Z", + "last-used-at": null, + "description": "Team API token for team ABC", + "token": "QnbSxjjhVMHJgw.atlasv1.gxZnWIjI5j752DGqdwEUVLOFf0mtyaQ00H9bA1j90qWb254lEkQyOdfqqcq9zZL7Sm0", + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-Y7RyjccPVBKVEdp7", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-ccU6h629sszLJBpY", + "type": "users" + } + } + } + }, + { + "id": "at-qfc2wqqJ1T5sCamM", + "type": "authentication-tokens", + "attributes": { + "created-at": "2024-06-19T18:44:44.051Z", + "last-used-at": null, + "description": "Team API token for team XYZ", + "token": null, + "expired-at": "2024-07-19T18:44:43.818Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-58pFiBffTLMxLphR", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-ccU6h629hhzLJBpY", + "type": "users" + } + } + } + }, + ] +} +``` + +## Show a team token + +Use this endpoint to display a particular [team token](/terraform/enterprise/users-teams-organizations/teams#api-tokens). + +`GET /authentication-tokens/:token_id` + +| Parameter | Description | +| ----------- | ------------------------- | +| `:token_id` | The ID of the Team Token. | + +The object returned by this endpoint only contains metadata, and does not include the secret text of the authentication token. A token's secret test is only shown upon creation, and cannot be recovered later. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "authentication-tokens"`) | The request was successful | +| [404][] | [JSON API error object][] | Team Token not found, or unauthorized to view the Team Token | + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/authentication-tokens/at-6yEmxNAhaoQLH1Da +``` + +### Sample response + +```json +{ + "data": { + "id": "at-6yEmxNAhaoQLH1Da", + "type": "authentication-tokens", + "attributes": { + "created-at": "2017-11-29T19:18:09.976Z", + "last-used-at": null, + "description": "Team API token for team ABC", + "token": "QnbSxjjhVMHJgw.atlasv1.gxZnWIjI5j752DGqdwEUVLOFf0mtyaQ00H9bA1j90qWb254lEkQyOdfqqcq9zZL7Sm0", + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-LnREdjodkvZFGdXL", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-MA4GL63FmYRpSFxa", + "type": "users" + } + } + } + } +} +``` + +# Legacy team tokens API reference + +Legacy team API tokens grant access to a team's workspaces. Each team can have a single legacy API token that is not associated with a specific user. +You can create and delete team tokens and list an organization's team tokens. +The [team tokens API](/terraform/enterprise/api-docs/team-tokens) includes the same functionality as legacy team tokens, and allows you to provision multiple tokens with descriptions per team. + +## Generate a new team token + +Generates a new team token and overrides existing token if one exists. + +| Method | Path | +| :----- | :----------------------------------- | +| POST | /teams/:team_id/authentication-token | + +This endpoint returns the secret text of the new authentication token. You can only access the secret when you create it and cannot recover it later. + +### Parameters + +- `:team_id` (`string: <required>`) - specifies the team ID for generating the team token + +### Request body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +| Key path | Type | Default | Description | +| ---------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"authentication-token"`. | +| `data.attributes.expired-at` | string | `null` | The UTC date and time that the Team Token will expire, in ISO 8601 format. If omitted or set to `null` the token will never expire. | + +### Sample payload + +```json +{ + "data": { + "type": "authentication-token", + "attributes": { + "expired-at": "2023-04-06T12:00:00.000Z" + } + } +} +``` + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/team-BUHBEM97xboT8TVz/authentication-token +``` + +### Sample response + +```json +{ + "data": { + "id": "4111797", + "type": "authentication-tokens", + "attributes": { + "created-at": "2017-11-29T19:18:09.976Z", + "last-used-at": null, + "description": null, + "token": "QnbSxjjhVMHJgw.atlasv1.gxZnWIjI5j752DGqdwEUVLOFf0mtyaQ00H9bA1j90qWb254lEkQyOdfqqcq9zZL7Sm0", + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-Y7RyjccPVBKVEdp7", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-62goNpx1ThQf689e", + "type": "users" + } + } + } + } +} +``` + +## Delete the team token + +| Method | Path | +| :----- | :----------------------------------- | +| DELETE | /teams/:team_id/authentication-token | + +### Parameters + +- `:team_id` (`string: <required>`) - specifies the team_id from which to delete the token + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/teams/team-BUHBEM97xboT8TVz/authentication-token +``` + +## List team tokens + +Lists the [team tokens](/terraform/enterprise/users-teams-organizations/teams#api-tokens) in an organization. + +`GET organizations/:organization_name/team-tokens` + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------- | +| `:organization_name` | The name of the organization whose team tokens you want to list. | + +This endpoint returns object metadata and does not include secret authentication details of tokens. You can only view a token when you create it and cannot recover it later. + +By default, this endpoint returns tokens by ascending expiration date. + +| Status | Response | Reason | +| ------- | --------------------------------------------- | ---------------------------------------------- | +| [200][] | [JSON API document][] (`type: "team-tokens"`) | The request was successful. | +| [200][] | Empty [JSON API document][] | The specified organization has no team tokens. | +| [404][] | [JSON API error object][] | Organization not found. | + +### Query parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters) and searching with the `q` parameter. Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint returns the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint returns 20 tokens per page. | +| `q` | **Optional.** A search query string. You can search for a team authentication token using the team name. | +| `sort` | **Optional.** Allows sorting the team tokens by `"team-name"`, `"created-by"`, `"expired-at"`, and `"last-used-at"`. Prepending a hyphen to the sort parameter reverses the order. For example, `"-team-name"` sorts by name in reverse alphabetical order. If omitted, the default sort order ascending. | + +### Sample response + +```json +{ + "data": [ + { + "id": "at-TLhN8cc6ro6qYDvp", + "type": "authentication-tokens", + "attributes": { + "created-at": "2024-06-19T18:28:25.267Z", + "last-used-at": null, + "description": null, + "token": null, + "expired-at": "2024-07-19T18:28:25.030Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-Y7RyjccPVBKVEdp7", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-ccU6h629sszLJBpY", + "type": "users" + } + } + } + }, + { + "id": "at-qfc2wqqJ1T5sCamM", + "type": "authentication-tokens", + "attributes": { + "created-at": "2024-06-19T18:44:44.051Z", + "last-used-at": null, + "description": null, + "token": null, + "expired-at": "2024-07-19T18:44:43.818Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-58pFiBffTLMxLphR", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-ccU6h629hhzLJBpY", + "type": "users" + } + } + } + }, + ] +} +``` + +## Show a team token + +Use this endpoint to display a [team token](/terraform/enterprise/users-teams-organizations/teams#api-tokens) for a particular team. + +`GET /teams/:team_id/authentication-token` + +| Parameter | Description | +| ---------- | ------------------- | +| `:team_id` | The ID of the Team. | + +You can also fetch a team token directly by using the token's ID with the `authentication-tokens/` endpoint. + +`GET /authentication-tokens/:token_id` + +| Parameter | Description | +| ----------- | ------------------------- | +| `:token_id` | The ID of the Team Token. | + +The object returned by this endpoint only contains metadata, and does not include the secret text of the authentication token. A token's secret text is only shown upon creation, and cannot be recovered later. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "authentication-tokens"`) | The request was successful | +| [404][] | [JSON API error object][] | Team Token not found, or unauthorized to view the Team Token | + +### Sample request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/teams/team-6yEmxNAhaoQLH1Da/authentication-token +``` + +### Sample response + +```json +{ + "data": { + "id": "at-6yEmxNAhaoQLH1Da", + "type": "authentication-tokens", + "attributes": { + "created-at": "2023-11-25T22:31:30.624Z", + "last-used-at": "2023-11-26T20:34:59.487Z", + "description": null, + "token": null, + "expired-at": "2024-04-06T12:00:00.000Z" + }, + "relationships": { + "team": { + "data": { + "id": "team-LnREdjodkvZFGdXL", + "type": "teams" + } + }, + "created-by": { + "data": { + "id": "user-MA4GL63FmYRpSFxa", + "type": "users" + } + } + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/teams.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/teams.mdx new file mode 100644 index 0000000000..1f96792b02 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/teams.mdx @@ -0,0 +1,466 @@ +--- +page_title: /teams API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/teams` endpoint to read, create, update, + and delete teams. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Teams API reference + +The Teams API is used to create, edit, and destroy teams as well as manage a team's organization-level permissions. The [Team Membership API](/terraform/enterprise/api-docs/team-members) is used to add or remove users from a team. Use the [Team Access API](/terraform/enterprise/api-docs/team-access) to associate a team with privileges on an individual workspace. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/team-management.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Any member of an organization can view visible teams and any secret teams they are a member of. Only organization owners can modify teams or view the full set of secret teams. The organization token and the owners team token can act as an owner on these endpoints. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Organization Membership + +-> **Note:** Users must be invited to join organizations before they can be added to teams. See [the Organization Memberships API documentation](/terraform/enterprise/api-docs/organization-memberships) for more information. Invited users who have not yet accepted will not appear in Teams API responses. + +## List teams + +`GET organizations/:organization_name/teams` + +| Parameter | Description | +| -------------------- | ------------------------------------------------ | +| `:organization_name` | The name of the organization to list teams from. | + +The response may identify HashiCorp API service accounts, for example `api-team_XXXXXX`, as a members of a team. However, API service accounts do not appear in the UI. As a result, there may be differences between the number of team members reported by the UI and the API. For example, the UI may report `0` members on a team when and the API reports `1`. + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `q` | **Optional.** Allows querying a list of teams by name. This search is case-insensitive. | +| `filter[names]` | **Optional.** If specified, restricts results to a team with a matching name. If multiple comma separated values are specified, teams matching any of the names are returned. | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 teams per page. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/organizations/my-organization/teams +``` + +### Sample Response + +The `sso-team-id` attribute is only returned in Terraform Enterprise 202204-1 and later, or in HCP Terraform. +The `allow-member-token-management` attribute is set to `false` for Terraform Enterprise versions older than 202408-1. + +```json +{ + "data": [ + { + "id": "team-6p5jTwJQXwqZBncC", + "type": "teams", + "attributes": { + "name": "team-creation-test", + "sso-team-id": "cb265c8e41bddf3f9926b2cf3d190f0e1627daa4", + "users-count": 0, + "visibility": "organization", + "allow-member-token-management": true, + "permissions": { + "can-update-membership": true, + "can-destroy": true, + "can-update-organization-access": true, + "can-update-api-token": true, + "can-update-visibility": true + }, + "organization-access": { + "manage-policies": true, + "manage-policy-overrides": false, + "manage-run-tasks": true, + "manage-workspaces": false, + "manage-vcs-settings": false, + "manage-agent-pools": false, + "manage-projects": false, + "read-projects": false, + "read-workspaces": false + } + }, + "relationships": { + "users": { + "data": [] + }, + "authentication-token": { + "meta": {} + } + }, + "links": { + "self": "/api/v2/teams/team-6p5jTwJQXwqZBncC" + } + } + ] +} +``` + +## Create a Team + +`POST /organizations/:organization_name/teams` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization to create the team in. The organization must already exist in the system, and the user must have permissions to create new teams. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "teams"`) | Successfully created a team | +| [400][] | [JSON API error object][] | Invalid `include` parameter | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [500][] | [JSON API error object][] | Failure during team creation | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +-> **Note:** You cannot set `manage-workspaces` to `false` when setting `manage-projects` to `true`, since project permissions cascade down to workspaces. This is also the case for `read-workspaces` and `read-projects`. If `read-projects` is `true`, `read-workspaces` must be `true` as well. + +| Key path | Type | Default | Description | +| ------------------------------------- | ------ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"teams"`. | +| `data.attributes.name` | string | | The name of the team, which can only include letters, numbers, `-`, and `_`. This will be used as an identifier and must be unique in the organization. | +| `data.attributes.sso-team-id` | string | (nothing) | The unique identifier of the team from the SAML `MemberOf` attribute. Only available in Terraform Enterprise 202204-1 and later, or in HCP Terraform. | +| `data.attributes.organization-access` | object | (nothing) | Settings for the team's organization access. This object can include the `manage-policies`, `manage-policy-overrides`, `manage-run-tasks`, `manage-workspaces`, `manage-vcs-settings`, `manage-agent-pools`, `manage-providers`, `manage-modules`, `manage-projects`, `read-projects`, `read-workspaces`, `manage-membership`, `manage-teams`, and `manage-organization-access` properties with boolean values. All properties default to `false`. | +| `data.attributes.visibility` | string | `"secret"` | The team's visibility. Must be `"secret"` or `"organization"` (visible). | + +### Sample Payload + +```json +{ + "data": { + "type": "teams", + "attributes": { + "name": "team-creation-test", + "sso-team-id": "cb265c8e41bddf3f9926b2cf3d190f0e1627daa4", + "organization-access": { + "manage-workspaces": true + } + } + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/teams +``` + +### Sample Response + +The `sso-team-id` attribute is only returned in Terraform Enterprise 202204-1 and later, or in HCP Terraform. + +```json +{ + "data": { + "attributes": { + "name": "team-creation-test", + "sso-team-id": "cb265c8e41bddf3f9926b2cf3d190f0e1627daa4", + "organization-access": { + "manage-policies": false, + "manage-policy-overrides": false, + "manage-run-tasks": false, + "manage-vcs-settings": false, + "manage-agent-pools": false, + "manage-workspaces": true, + "manage-providers": false, + "manage-modules": false, + "manage-projects": false, + "read-projects": false, + "read-workspaces": true, + "manage-membership": false, + "manage-teams": false, + "manage-organization-access": false + }, + "permissions": { + "can-update-membership": true, + "can-destroy": true, + "can-update-organization-access": true, + "can-update-api-token": true, + "can-update-visibility": true + }, + "users-count": 0, + "visibility": "secret", + "allow-member-token-management": true + }, + "id": "team-6p5jTwJQXwqZBncC", + "links": { + "self": "/api/v2/teams/team-6p5jTwJQXwqZBncC" + }, + "relationships": { + "authentication-token": { + "meta": {} + }, + "users": { + "data": [] + } + }, + "type": "teams" + } +} +``` + +## Show Team Information + +`GET /teams/:team_id` + +| Parameter | Description | +| ---------- | ------------------------ | +| `:team_id` | The team ID to be shown. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/teams/team-6p5jTwJQXwqZBncC +``` + +### Sample Response + +The `sso-team-id` attribute is only returned in Terraform Enterprise 202204-1 and later, or in HCP Terraform. + +```json +{ + "data": { + "id": "team-6p5jTwJQXwqZBncC", + "type": "teams", + "attributes": { + "name": "team-creation-test", + "sso-team-id": "cb265c8e41bddf3f9926b2cf3d190f0e1627daa4", + "users-count": 0, + "visibility": "organization", + "allow-member-token-management": true, + "permissions": { + "can-update-membership": true, + "can-destroy": true, + "can-update-organization-access": true, + "can-update-api-token": true, + "can-update-visibility": true + }, + "organization-access": { + "manage-policies": true, + "manage-policy-overrides": false, + "manage-run-tasks": true, + "manage-workspaces": false, + "manage-vcs-settings": false, + "manage-agent-pools": false, + "manage-providers": false, + "manage-modules": false, + "manage-projects": false, + "read-projects": false, + "read-workspaces": false, + "manage-membership": false, + "manage-teams": false, + "manage-organization-access": false + } + }, + "relationships": { + "users": { + "data": [] + }, + "authentication-token": { + "meta": {} + } + }, + "links": { + "self": "/api/v2/teams/team-6p5jTwJQXwqZBncC" + } + } +} +``` + +## Update a Team + +`PATCH /teams/:team_id` + +| Parameter | Description | +| ---------- | -------------------------- | +| `:team_id` | The team ID to be updated. | + +| Status | Response | Reason | +| ------- | --------------------------------------- | -------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "teams"`) | Successfully created a team | +| [400][] | [JSON API error object][] | Invalid `include` parameter | +| [404][] | [JSON API error object][] | Team not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [500][] | [JSON API error object][] | Failure during team creation | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +-> **Note:** You cannot set `manage-workspaces` to `false` when setting `manage-projects` to `true`, since project permissions cascade down to workspaces. This is also the case for `read-workspaces` and `read-projects`. If `read-projects` is `true`, `read-workspaces` must be `true` as well. + +| Key path | Type | Default | Description | +| --------------------------------------------- | ------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"teams"`. | +| `data.attributes.name` | string | (previous value) | The name of the team, which can only include letters, numbers, `-`, and `_`. This will be used as an identifier and must be unique in the organization. | +| `data.attributes.sso-team-id` | string | (previous value) | The unique identifier of the team from the SAML `MemberOf` attribute. Only available in Terraform Enterprise 202204-1 and later, or in HCP Terraform. | +| `data.attributes.organization-access` | object | (previous value) | Settings for the team's organization access. This object can include the `manage-policies`, `manage-policy-overrides`, `manage-run-tasks`, `manage-workspaces`, `manage-vcs-settings`, `manage-agent-pools`, `manage-providers`, `manage-modules`, `manage-projects`, `read-projects`, `read-workspaces`, `manage-membership`, `manage-teams`, and `manage-organization-access` properties with boolean values. All properties default to `false`. | +| `data.attributes.visibility` | string | (previous value) | The team's visibility. Must be `"secret"` or `"organization"` (visible). | +| `data.attributes.allow-team-token-management` | boolean | (previous value) | The ability to enable and disable team token management for a team. Defaults to true. | + +### Sample Payload + +```json +{ + "data": { + "type": "teams", + "attributes": { + "visibility": "organization", + "allow-member-token-management": true, + "organization-access": { + "manage-vcs-settings": true + } + } + } +} +``` + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/teams/team-6p5jTwJQXwqZBncC +``` + +### Sample Response + +The `sso-team-id` attribute is only returned in Terraform Enterprise 202204-1 and later, or in HCP Terraform. + +```json +{ + "data": { + "attributes": { + "name": "team-creation-test", + "sso-team-id": "cb265c8e41bddf3f9926b2cf3d190f0e1627daa4", + "organization-access": { + "manage-policies": false, + "manage-policy-overrides": false, + "manage-run-tasks": true, + "manage-vcs-settings": true, + "manage-agent-pools": false, + "manage-workspaces": true, + "manage-providers": false, + "manage-modules": false, + "manage-projects": false, + "read-projects": false, + "read-workspaces": true, + "manage-membership": false, + "manage-teams": false, + "manage-organization-access": false + }, + "visibility": "organization", + "allow-member-token-management": true, + "permissions": { + "can-update-membership": true, + "can-destroy": true, + "can-update-organization-access": true, + "can-update-api-token": true, + "can-update-visibility": true + }, + "users-count": 0 + }, + "id": "team-6p5jTwJQXwqZBncC", + "links": { + "self": "/api/v2/teams/team-6p5jTwJQXwqZBncC" + }, + "relationships": { + "authentication-token": { + "meta": {} + }, + "users": { + "data": [] + } + }, + "type": "teams" + } +} +``` + +## Delete a Team + +`DELETE /teams/:team_id` + +| Parameter | Description | +| ---------- | -------------------------- | +| `:team_id` | The team ID to be deleted. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/teams/team-6p5jTwJQXwqZBncC +``` + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +- `users` (`string`) - Returns the full user record for every member of a team. +- `organization-memberships` (`string`) - Returns the full organization membership record for every member of a team. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/user-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/user-tokens.mdx new file mode 100644 index 0000000000..a26352ea06 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/user-tokens.mdx @@ -0,0 +1,286 @@ +--- +page_title: /users/authentication-tokens API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/users/authentication-tokens` endpoint to + read, create, and destroy user-specific API tokens. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# User tokens API reference + +## List User Tokens + +`GET /users/:user_id/authentication-tokens` + +| Parameter | Description | +| ---------- | ------------------- | +| `:user_id` | The ID of the User. | + +Use the [Account API](/terraform/enterprise/api-docs/account) to find your own user ID. + +The objects returned by this endpoint only contain metadata, and do not include the secret text of any authentication tokens. A token is only shown upon creation, and cannot be recovered later. + +-> **Note:** You must access this endpoint with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens), and it will only return useful data for that token's user account. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "authentication-tokens"`) | The request was successful | +| [200][] | Empty [JSON API document][] (no type) | User has no authentication tokens, or request was made by someone other than the user | +| [404][] | [JSON API error object][] | User not found | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. If neither pagination query parameters are provided, the endpoint will not be paginated and will return all results. + +| Parameter | Description | +| -------------- | --------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 user tokens per page. | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/users/user-MA4GL63FmYRpSFxa/authentication-tokens +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "at-QmATJea6aWj1xR2t", + "type": "authentication-tokens", + "attributes": { + "created-at": "2018-11-06T22:56:10.203Z", + "last-used-at": null, + "description": null, + "token": null, + "expired-at": null + }, + "relationships": { + "created-by": { + "data": null + } + } + }, + { + "id": "at-6yEmxNAhaoQLH1Da", + "type": "authentication-tokens", + "attributes": { + "created-at": "2018-11-25T22:31:30.624Z", + "last-used-at": "2018-11-26T20:27:54.931Z", + "description": "api", + "token": null, + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "created-by": { + "data": { + "id": "user-MA4GL63FmYRpSFxa", + "type": "users" + } + } + } + } + ] +} +``` + +## Show a User Token + +`GET /authentication-tokens/:id` + +| Parameter | Description | +| --------- | ------------------------- | +| `:id` | The ID of the User Token. | + +The objects returned by this endpoint only contain metadata, and do not include the secret text of any authentication tokens. A token is only shown upon creation, and cannot be recovered later. + +-> **Note:** You must access this endpoint with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens), and it will only return useful data for that token's user account. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | ------------------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "authentication-tokens"`) | The request was successful | +| [404][] | [JSON API error object][] | User Token not found, or unauthorized to view the User Token | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/authentication-tokens/at-6yEmxNAhaoQLH1Da +``` + +### Sample Response + +```json +{ + "data": { + "id": "at-6yEmxNAhaoQLH1Da", + "type": "authentication-tokens", + "attributes": { + "created-at": "2018-11-25T22:31:30.624Z", + "last-used-at": "2018-11-26T20:34:59.487Z", + "description": "api", + "token": null, + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "created-by": { + "data": { + "id": "user-MA4GL63FmYRpSFxa", + "type": "users" + } + } + } + } +} +``` + +## Create a User Token + +`POST /users/:user_id/authentication-tokens` + +| Parameter | Description | +| ---------- | ------------------- | +| `:user_id` | The ID of the User. | + +Use the [Account API](/terraform/enterprise/api-docs/account) to find your own user ID. + +This endpoint returns the secret text of the created authentication token. A token is only shown upon creation, and cannot be recovered later. + +-> **Note:** You must access this endpoint with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens), and it will only create new tokens for that token's user account. + +| Status | Response | Reason | +| ------- | ------------------------------------------------------- | -------------------------------------------------------------- | +| [201][] | [JSON API document][] (`type: "authentication-tokens"`) | The request was successful | +| [404][] | [JSON API error object][] | User not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Malformed request body (missing attributes, wrong types, etc.) | +| [500][] | [JSON API error object][] | Failure during User Token creation | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"authentication-tokens"`. | +| `data.attributes.description` | string | | The description for the User Token. | +| `data.attributes.expired-at` | string | `null` | The UTC date and time that the User Token will expire, in ISO 8601 format. If omitted or set to `null` the token will never expire. | + +### Sample Payload + +```json +{ + "data": { + "type": "authentication-tokens", + "attributes": { + "description":"api", + "expired-at": "2023-04-06T12:00:00.000Z" + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/users/user-MA4GL63FmYRpSFxa/authentication-tokens +``` + +### Sample Response + +```json +{ + "data": { + "id": "at-MKD1X3i4HS3AuD41", + "type": "authentication-tokens", + "attributes": { + "created-at": "2018-11-26T20:48:35.054Z", + "last-used-at": null, + "description": "api", + "token": "6tL24nM38M7XWQ.atlasv1.KmWckRfzeNmUVFNvpvwUEChKaLGznCSD6fPf3VPzqMMVzmSxFU0p2Ibzpo2h5eTGwPU", + "expired-at": "2023-04-06T12:00:00.000Z" + }, + "relationships": { + "created-by": { + "data": { + "id": "user-MA4GL63FmYRpSFxa", + "type": "users" + } + } + } + } +} +``` + +## Destroy a User Token + +`DELETE /authentication-tokens/:id` + +| Parameter | Description | +| --------- | ------------------------------------ | +| `:id` | The ID of the User Token to destroy. | + +-> **Note:** You must access this endpoint with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens), and it will only delete tokens for that token's user account. + +| Status | Response | Reason | +| ------- | ------------------------- | ------------------------------------------------------------ | +| [204][] | Empty response | The User Token was successfully destroyed | +| [404][] | [JSON API error object][] | User Token not found, or user unauthorized to perform action | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/authentication-tokens/at-6yEmxNAhaoQLH1Da +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/users.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/users.mdx new file mode 100644 index 0000000000..4c8625e8c7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/users.mdx @@ -0,0 +1,102 @@ +--- +page_title: /users API reference for Terraform Enterprise +description: Use the Terraform Enterprise API's `/users` endpoint to read a user's details. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Users API reference + +HCP Terraform's user objects do not contain any identifying information about a user, other than their HCP Terraform username and avatar image; they are intended for displaying names and avatars in contexts that refer to a user by ID, like lists of team members or the details of a run. Most of these contexts can already include user objects via an `?include` parameter, so you shouldn't usually need to make a separate call to this endpoint. + +## Show a User + +Shows details for a given user. + +`GET /users/:user_id` + +| Parameter | Description | +| ---------- | --------------------------- | +| `:user_id` | The ID of the desired user. | + +To find the ID that corresponds to a given username, you can request a [team object](/terraform/enterprise/api-docs/teams) for a team that user belongs to, specify `?include=users` in the request, and look for the user's name in the included list of user objects. + +| Status | Response | Reason | +| ------- | --------------------------------------- | ------------------------------------------------ | +| [200][] | [JSON API document][] (`type: "users"`) | The request was successful | +| [401][] | [JSON API error object][] | Unauthorized | +| [404][] | [JSON API error object][] | User not found, or unauthorized to view the user | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/users/user-MA4GL63FmYRpSFxa +``` + +### Sample Response + +```json +{ + "data": { + "id": "user-MA4GL63FmYRpSFxa", + "type": "users", + "attributes": { + "username": "admin", + "is-service-account": false, + "auth-method": "hcp_sso", + "avatar-url": "https://www.gravatar.com/avatar/fa1f0c9364253d351bf1c7f5c534cd40?s=100&d=mm", + "v2-only": true, + "permissions": { + "can-create-organizations": false, + "can-change-email": true, + "can-change-username": true + } + }, + "relationships": { + "authentication-tokens": { + "links": { + "related": "/api/v2/users/user-MA4GL63FmYRpSFxa/authentication-tokens" + } + } + }, + "links": { + "self": "/api/v2/users/user-MA4GL63FmYRpSFxa" + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variable-sets.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variable-sets.mdx new file mode 100644 index 0000000000..8bca544f1a --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variable-sets.mdx @@ -0,0 +1,1018 @@ +--- +page_title: /varsets API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/varsets` endpoint to read, create, + update, and delete variable sets, and apply or remove variable sets from + workspaces and projects. +source: terraform-docs-common +--- + +# Variable sets API reference + +A [variable set](/terraform/enterprise/workspaces/variables#scope) is a resource that allows you to reuse the same variables across multiple workspaces and projects. For example, you could define a variable set of provider credentials and automatically apply it to a selection of workspaces, all workspaces in a project, or all workspaces in an organization. + +Projects and organizations can both own variable sets. The owner of a variable set can determine the precedence of that set. Refer to [**Manage variable sets**](/terraform/enterprise/workspaces/variables/managing-variables#permissions) for more details on variable set permissions. + +To view the variables applied from a variable set on a particular workspace, you must have [**Read** variables permission](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) on that workspace. + +## Create a Variable Set + +`POST organizations/:organization_name/varsets` + +| Parameter | Description | +| -------------------- | --------------------------------------------------------- | +| `:organization_name` | The name of the organization the variable set belongs to. | + +### Request Body + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------- | ------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.attributes.name` | string | | The name of the variable set. | +| `data.attributes.description` | string | `""` | Text displayed in the UI to contextualize the variable set and its purpose. | +| `data.attributes.global` | boolean | `false` | When true, HCP Terraform automatically applies the variable set to all current and future workspaces in the organization. | +| `data.attributes.priority` | boolean | `false` | When true, the variables in the set override any other variable values with a more specific scope, including values set on the command line. | +| `data.relationships.workspaces` | array | `[]` | Array of references to workspaces that the variable set should be assigned to. | +| `data.relationships.projects` | array | `[]` | Array of references to projects that the variable set should be assigned to. | +| `data.relationships.vars` | array | `[]` | Array of complete variable definitions that comprise the variable set. | +| `data.relationships.parent` | object | Organization that the variable set belongs to | The parent that owns this variable set. If the parent is a project, `data.attributes.global` must be `false`. | +| `data.relationships.parent.data.type` | string | `"organizations"` | The resource type of the parent that owns this variable set. Valid values are `organizations` or `projects`. | +| `data.relationships.parent.data.id` | string | Name of organization that the variable set belongs to. | The ID of the parent that owns the variable set. For organizations, use name instead of ID. | + +HCP Terraform does not allow different global variable sets to contain conflicting variables with the same name and type. You will receive a 422 response if you try to create a global variable set that contains conflicting variables. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Successfully added variable set | +| [404][] | [JSON API error object][] | Organization not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": { + "type": "varsets", + "attributes": { + "name": "MyVarset", + "description": "Full of vars and such for mass reuse", + "global": false, + "priority": false, + }, + "relationships": { + "workspaces": { + "data": [ + { + "id": "ws-z6YvbWEYoE168kpq", + "type": "workspaces" + } + ] + }, + "vars": { + "data": [ + { + "type": "vars", + "attributes": { + "key": "c2e4612d993c18e42ef30405ea7d0e9ae", + "value": "8676328808c5bf56ac5c8c0def3b7071", + "category": "terraform" + } + } + ] + }, + "parent": { + "data": { + "id": "prj-kFjgSzcZSr5c3imE", + "type": "projects" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/varsets +``` + +### Sample Response + +```json +{ + "data": { + "id": "varset-kjkN545LH2Sfercv", + "type": "varsets", + "attributes": { + "name": "MyVarset", + "description": "Full of vars and such for mass reuse", + "global": false, + "priority": false, + }, + "relationships": { + "workspaces": { + "data": [ + { + "id": "ws-z6YvbWEYoE168kpq", + "type": "workspaces" + } + ] + }, + "projects": { + "data": [ + { + "id": "prj-kFjgSzcZSr5c3imE", + "type": "projects" + } + ] + }, + "vars": { + "data": [ + { + "id": "var-Nh0doz0hzj9hrm34qq", + "type": "vars", + "attributes": { + "key": "c2e4612d993c18e42ef30405ea7d0e9ae", + "value": "8676328808c5bf56ac5c8c0def3b7071", + "category": "terraform" + } + } + ] + }, + "parent": { + "data": { + "id": "prj-kFjgSzcZSr5c3imE", + "type": "projects" + } + } + } + } +} +``` + +## Update a Variable Set + +`PUT/PATCH varsets/:varset_id` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +HCP Terraform does not allow global variable sets to contain conflicting variables with the same name and type. You will receive a 422 response if you try to create a global variable set that contains conflicting variables. + +HCP Terraform does not allow you to change the parent organization or project of a variable set. Instead, you must delete the variable set and recreate it in the desired organization or project. + +### Request Body + +| Key path | Type | Default | Description | +| ------------------------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.attributes.name` | string | | The name of the variable set. | +| `data.attributes.description` | string | | Text displayed in the UI to contextualize the variable set and its purpose. | +| `data.attributes.global` | boolean | | When true, HCP Terraform automatically applies the variable set to all current and future workspaces in the organization. | +| `data.attributes.priority` | boolean | `false` | When true, the variables in the set override any other variable values set with a more specific scope, including values set on the command line. | +| `data.relationships.workspaces` | array | | **Optional** Array of references to workspaces that the variable set should be assigned to. Sending an empty array clears all workspace assignments. | +| `data.relationships.projects` | array | | **Optional** Array of references to projects that the variable set should be assigned to. Sending an empty array clears all project assignments. | +| `data.relationships.vars` | array | | **Optional** Array of complete variable definitions to add to the variable set. | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ------------------------------------------------------------------------------ | +| [200][] | [JSON API document][] | Successfully updated variable set | +| [404][] | [JSON API error object][] | Organization or variable set not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": { + "type": "varsets", + "attributes": { + "name": "MyVarset", + "description": "Full of vars and such for mass reuse. Now global!", + "global": true, + "priority": true, + }, + "relationships": { + "workspaces": { + "data": [ + { + "id": "ws-FRFwkYoUoGn1e34b", + "type": "workspaces" + } + ] + }, + "projects": { + "data": [ + { + "id": "prj-kFjgSzcZSr5c3imE", + "type": "projects" + } + ] + }, + "vars": { + "data": [ + { + "type": "vars", + "attributes": { + "key": "c2e4612d993c18e42ef30405ea7d0e9ae", + "value": "8676328808c5bf56ac5c8c0def3b7071", + "category": "terraform" + } + } + ] + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv +``` + +### Sample Response + +```json +{ + "data": { + "id": "varset-kjkN545LH2Sfercv", + "type": "varsets", + "attributes": { + "name": "MyVarset", + "description": "Full of vars and such for mass reuse. Now global!", + "global": true, + "priority": true + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "workspaces": { + "data": [ + { + "id": "ws-FRFwkYoUoGn1e34b", + "type": "workspaces" + } + ] + }, + "projects": { + "data": [ + { + "id": "prj-kFjgSzcZSr5c3imE", + "type": "projects" + } + ] + }, + "vars": { + "data": [ + { + "id": "var-Nh0doz0hzj9hrm34qq", + "type": "vars", + "attributes": { + "key": "c2e4612d993c18e42ef30405ea7d0e9ae", + "value": "8676328808c5bf56ac5c8c0def3b7071", + "category": "terraform" + } + } + ] + }, + "parent": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + } + } + } +} +``` + +## Delete a Variable Set + +`DELETE varsets/:varset_id` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv +``` + +On success, this endpoint responds with no content. + +## Show Variable Set + +Fetch details about the specified variable set. + +`GET varsets/:varset_id` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request GET \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv +``` + +### Sample Response + +```json +{ + "data": { + "id": "varset-kjkN545LH2Sfercv", + "type": "varsets", + "attributes": { + "name": "MyVarset", + "description": "Full of vars and such for mass reuse", + "global": false, + "priority": false, + "updated-at": "2023-03-06T21:48:33.588Z", + "var-count": 5, + "workspace-count": 2, + "project-count": 2 + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "vars": { + "data": [ + { + "id": "var-mMqadSCxZtrQJAv8", + "type": "vars" + }, + { + "id": "var-hFxUUKSk35QMsRVH", + "type": "vars" + }, + { + "id": "var-fkd6N48tXRmoaPxH", + "type": "vars" + }, + { + "id": "var-abcbBMBMWcZw3WiV", + "type": "vars" + }, + { + "id": "var-vqvRKK1ZoqQCiMwN", + "type": "vars" + } + ] + }, + "workspaces": { + "data": [ + { + "id": "ws-UohFdKAHUGsQ8Dtf", + "type": "workspaces" + }, + { + "id": "ws-XhGhaaCrsx9ATson", + "type": "workspaces" + } + ] + }, + "projects": { + "data": [ + { + "id": "prj-1JMwvPHFsdpsPhnt", + "type": "projects" + }, + { + "id": "prj-SLDGqbYqELXE1obp", + "type": "projects" + } + ] + }, + "parent": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + } + } + } +} +``` + +## List Variable Sets + +List all variable sets for an organization. + +`GET organizations/:organization_name/varsets` + +| Parameter | Description | +| -------------------- | -------------------------------------------------------- | +| `:organization_name` | The name of the organization the variable sets belong to | + +List all variable sets for a project. This includes global variable sets from the project's organization. + +`GET projects/:project_id/varsets` + +| Parameter | Description | +| ------------- | -------------- | +| `:project_id` | The project ID | + +List all variable sets for a workspace. This includes global variable sets from the workspace's organization and variable sets +attached to the project this workspace is contained within. + +`GET workspaces/:workspace_id/varsets` + +| Parameter | Description | +| --------------- | ---------------- | +| `:workspace_id` | The workspace ID | + +### Query Parameters + +All list endpoints support pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters) and searching with the `q` parameter. Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint returns the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint returns 20 varsets per page. | +| `q` | **Optional.** A search query string. You can search for a variable set using its name. | + +### Sample Response + +```json +{ + "data": [ + { + "id": "varset-kjkN545LH2Sfercv", + "type": "varsets", + "attributes": { + "name": "MyVarset", + "description": "Full of vars and such for mass reuse", + "global": false, + "priority": false, + "updated-at": "2023-03-06T21:48:33.588Z", + "var-count": 5, + "workspace-count": 2, + "project-count": 2 + }, + "relationships": { + "organization": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + }, + "vars": { + "data": [ + { + "id": "var-mMqadSCxZtrQJAv8", + "type": "vars" + }, + { + "id": "var-hFxUUKSk35QMsRVH", + "type": "vars" + }, + { + "id": "var-fkd6N48tXRmoaPxH", + "type": "vars" + }, + { + "id": "var-abcbBMBMWcZw3WiV", + "type": "vars" + }, + { + "id": "var-vqvRKK1ZoqQCiMwN", + "type": "vars" + } + ] + }, + "workspaces": { + "data": [ + { + "id": "ws-UohFdKAHUGsQ8Dtf", + "type": "workspaces" + }, + { + "id": "ws-XhGhaaCrsx9ATson", + "type": "workspaces" + } + ] + }, + "projects": { + "data": [ + { + "id": "prj-1JMwvPHFsdpsPhnt", + "type": "projects" + }, + { + "id": "prj-SLDGqbYqELXE1obp", + "type": "projects" + } + ] + }, + "parent": { + "data": { + "id": "hashicorp", + "type": "organizations" + } + } + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/hashicorp/varsets?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/hashicorp/varsets?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/hashicorp/varsets?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "page-size": 20, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 1 + } + } +} +``` + +### Variable Relationships + +## Add Variable + +`POST varsets/:varset_external_id/relationships/vars` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | --------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.attributes.key` | string | | The name of the variable. | +| `data.attributes.value` | string | `""` | The value of the variable. | +| `data.attributes.description` | string | | The description of the variable. | +| `data.attributes.category` | string | | Whether this is a Terraform or environment variable. Valid values are `"terraform"` or `"env"`. | +| `data.attributes.hcl` | bool | `false` | Whether to evaluate the value of the variable as a string of HCL code. Has no effect for environment variables. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. If true, variable is not visible in the UI. | + +HCP Terraform does not allow different global variable sets to contain conflicting variables with the same name and type. You will receive a 422 response if you try to add a conflicting variable to a global variable set. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Successfully added variable to variable set | +| [404][] | [JSON API error object][] | Variable set not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": { + "type": "vars", + "attributes": { + "key": "g6e45ae7564a17e81ef62fd1c7fa86138", + "value": "61e400d5ccffb3782f215344481e6c82", + "description": "cheeeese", + "sensitive": false, + "category": "terraform", + "hcl": false + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-4q8f7H0NHG733bBH/relationships/vars +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-EavQ1LztoRTQHSNT", + "type": "vars", + "attributes": { + "key": "g6e45ae7564a17e81ef62fd1c7fa86138", + "value": "61e400d5ccffb3782f215344481e6c82", + "description": "cheeeese", + "sensitive": false, + "category": "terraform", + "hcl": false + } + } +} +``` + +## Update a Variable in a Variable Set + +`PATCH varsets/:varset_id/relationships/vars/:var_id` + +| Parameter | Description | +| ------------ | -------------------------------- | +| `:varset_id` | The variable set ID | +| `:var_id` | The ID of the variable to delete | + +HCP Terraform does not allow different global variable sets to contain conflicting variables with the same name and type. You will receive a 422 response if you try to add a conflicting variable to a global variable set. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [200][] | [JSON API document][] | Successfully updated variable for variable set | +| [404][] | [JSON API error object][] | Variable set not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": { + "type": "vars", + "attributes": { + "key": "g6e45ae7564a17e81ef62fd1c7fa86138", + "value": "61e400d5ccffb3782f215344481e6c82", + "description": "new cheeeese", + "sensitive": false, + "category": "terraform", + "hcl": false + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-4q8f7H0NHG733bBH/relationships/vars/var-EavQ1LztoRTQHSNT +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-EavQ1LztoRTQHSNT", + "type": "vars", + "attributes": { + "key": "g6e45ae7564a17e81ef62fd1c7fa86138", + "value": "61e400d5ccffb3782f215344481e6c82", + "description": "new cheeeese", + "sensitive": false, + "category": "terraform", + "hcl": false + } + } +} +``` + +## Delete a Variable in a Variable Set + +`DELETE varsets/:varset_id/relationships/vars/:var_id` + +| Parameter | Description | +| ------------ | -------------------------------- | +| `:varset_id` | The variable set ID | +| `:var_id` | The ID of the variable to delete | + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/varsets/varset-4q8f7H0NHG733bBH/relationships/vars/var-EavQ1LztoRTQHSNT +``` + +On success, this endpoint responds with no content. + +## List Variables in a Variable Set + +`GET varsets/:varset_id/relationships/vars` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +### Sample Response + +```json +{ + "data": [ + { + "id": "var-134r1k34nj5kjn", + "type": "vars", + "attributes": { + "key": "F115037558b045dd82da40b089e5db745", + "value": "1754288480dfd3060e2c37890422905f", + "sensitive": false, + "category": "terraform", + "hcl": false, + "created-at": "2021-10-29T18:54:29.379Z", + "description": "" + }, + "relationships": { + "varset": { + "data": { + "id": "varset-992UMULdeDuebi1x", + "type": "varsets" + }, + "links": { "related": "/api/v2/varsets/1" } + } + }, + "links": { "self": "/api/v2/vars/var-BEPU9NjPVCiCfrXj" } + } + ], + "links": { + "self": "app.terraform.io/app/varsets/varset-992UMULdeDuebi1x/vars", + "first": "app.terraform.io/app/varsets/varset-992UMULdeDuebi1x/vars?page=1", + "prev": null, + "next": null, + "last": "app.terraform.io/app/varsets/varset-992UMULdeDuebi1x/vars?page=1" + } +} +``` + +## Apply Variable Set to Workspaces + +Accepts a list of workspaces to add the variable set to. + +`POST varsets/:varset_id/relationships/workspaces` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | -------------------------------------------------- | +| `data[].type` | string | | Must be `"workspaces"` | +| `data[].id` | string | | The id of the workspace to add the variable set to | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | | Successfully added variable set to the requested workspaces | +| [404][] | [JSON API error object][] | Variable set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "workspaces", + "id": "ws-YwfuBJZkdai4xj9w" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv/relationships/workspaces +``` + +## Remove a Variable Set from Workspaces + +Accepts a list of workspaces to remove the variable set from. + +`DELETE varsets/:varset_id/relationships/workspaces` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ------------------------------------------------------- | +| `data[].type` | string | | Must be `"workspaces"` | +| `data[].id` | string | | The id of the workspace to delete the variable set from | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | | Successfully removed variable set from the requested workspaces | +| [404][] | [JSON API error object][] | Variable set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "workspaces", + "id": "ws-YwfuBJZkdai4xj9w" + }, + { + "type": "workspaces", + "id": "ws-YwfuBJZkdai4xj9w" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv/relationships/workspaces +``` + +## Apply Variable Set to Projects + +Accepts a list of projects to add the variable set to. When you apply a variable set to a project, all the workspaces in that project will have the variable set applied to them. + +`POST varsets/:varset_id/relationships/projects` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ------------------------------------------------ | +| `data[].type` | string | | Must be `"projects"` | +| `data[].id` | string | | The id of the project to add the variable set to | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | | Successfully added variable set to the requested projects | +| [404][] | [JSON API error object][] | Variable set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "projects", + "id": "prj-YwfuBJZkdai4xj9w" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv/relationships/projects +``` + +## Remove a Variable Set from Projects + +Accepts a list of projects to remove the variable set from. + +`DELETE varsets/:varset_id/relationships/projects` + +| Parameter | Description | +| ------------ | ------------------- | +| `:varset_id` | The variable set ID | + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ----------------------------------------------------- | +| `data[].type` | string | | Must be `"projects"` | +| `data[].id` | string | | The id of the project to delete the variable set from | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | | Successfully removed variable set from the requested projects | +| [404][] | [JSON API error object][] | Variable set not found or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "projects", + "id": "prj-YwfuBJZkdai4xj9w" + }, + { + "type": "projects", + "id": "prj-lkjasdfiojwerlkj" + } + ] +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/varsets/varset-kjkN545LH2Sfercv/relationships/projects +``` + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[json api document]: /terraform/enterprise/api-docs#json-api-documents + +[json api error object]: https://jsonapi.org/format/#error-objects + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +| Resource Name | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `vars` | Show each variable in a variable set and all of their attributes including `id`, `key`, `value`, `sensitive`, `category`, `hcl`, `created_at`, and `description`. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variables.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variables.mdx new file mode 100644 index 0000000000..987dca3556 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/variables.mdx @@ -0,0 +1,307 @@ +--- +page_title: /vars API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/vars` endpoint to manage + organization-level variables. Learn how to read, create, update, and delete + variables using the API. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Variables API reference + +~> **Important**: The Variables API is **deprecated** and will be removed in a future release. All existing integrations with this API should transition to the [Workspace Variables API](/terraform/enterprise/api-docs/workspace-variables). + +This set of APIs covers create, update, list and delete operations on variables. + +## Create a Variable + +`POST /vars` + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ---------------------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.attributes.key` | string | | The name of the variable. | +| `data.attributes.value` | string | `""` | The value of the variable. | +| `data.attributes.description` | string | | The description of the variable. | +| `data.attributes.category` | string | | Whether this is a Terraform or environment variable. Valid values are `"terraform"` or `"env"`. | +| `data.attributes.hcl` | bool | `false` | Whether to evaluate the value of the variable as a string of HCL code. Has no effect for environment variables. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. If true then the variable is written once and not visible thereafter. | +| `data.relationships.workspace.data.type` | string | | Must be `"workspaces"`. | +| `data.relationships.workspace.data.id` | string | | The ID of the workspace that owns the variable. Obtain workspace IDs from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +**Deprecation warning**: The custom `filter` properties are replaced by JSON API `relationships` and will be removed from future versions of the API! + +| Key path | Type | Default | Description | +| -------------------------- | ------ | ------- | ----------------------------------------------------- | +| `filter.workspace.name` | string | | The name of the workspace that owns the variable. | +| `filter.organization.name` | string | | The name of the organization that owns the workspace. | + +### Sample Payload + +```json +{ + "data": { + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "description":"some description", + "category":"terraform", + "hcl":false, + "sensitive":false + }, + "relationships": { + "workspace": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + } + } + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/vars +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-EavQ1LztoRTQHSNT", + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "description":"some description", + "sensitive":false, + "category":"terraform", + "hcl":false + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self":"/api/v2/vars/var-EavQ1LztoRTQHSNT" + } + } +} +``` + +## List Variables + +`GET /vars` + +### Query Parameters + +[These are standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ---------------------------- | -------------------------------------------------------------------------- | +| `filter[workspace][name]` | **Required** The name of one workspace to list variables for. | +| `filter[organization][name]` | **Required** The name of the organization that owns the desired workspace. | + +These two parameters are optional but linked; if you include one, you must include both. Without a filter, this method lists variables for all workspaces where you have permission to read variables. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ +"https://app.terraform.io/api/v2/vars?filter%5Borganization%5D%5Bname%5D=my-organization&filter%5Bworkspace%5D%5Bname%5D=my-workspace" +# ?filter[organization][name]=my-organization&filter[workspace][name]=demo01 +``` + +### Sample Response + +```json +{ + "data": [ + { + "id":"var-AD4pibb9nxo1468E", + "type":"vars","attributes": { + "key":"name", + "value":"hello", + "description":"some description", + "sensitive":false, + "category":"terraform", + "hcl":false + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-cZE9LERN3rGPRAmH", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self":"/api/v2/vars/var-AD4pibb9nxo1468E" + } + } + ] +} +``` + +## Update Variables + +`PATCH /vars/:variable_id` + +| Parameter | Description | +| -------------- | ------------------------------------- | +| `:variable_id` | The ID of the variable to be updated. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------- | ------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.id` | string | | The ID of the variable to update. | +| `data.attributes` | object | | New attributes for the variable. This object can include `key`, `value`, `description`, `category`, `hcl`, and `sensitive` properties, which are described above under [create a variable](#create-a-variable). All of these properties are optional; if omitted, a property will be left unchanged. | + +### Sample Payload + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "attributes": { + "key":"name", + "value":"mars", + "description": "new description", + "category":"terraform", + "hcl": false, + "sensitive": false + }, + "type":"vars" + } +} +``` + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/vars/var-yRmifb4PJj7cLkMG +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "type":"vars", + "attributes": { + "key":"name", + "value":"mars", + "description":"new description", + "sensitive":false, + "category":"terraform", + "hcl":false + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/workspace-v2-06/workspaces/workspace-v2-06" + } + } + }, + "links": { + "self":"/api/v2/vars/var-yRmifb4PJj7cLkMG" + } + } +} +``` + +## Delete Variables + +`DELETE /vars/:variable_id` + +| Parameter | Description | +| -------------- | ------------------------------------- | +| `:variable_id` | The ID of the variable to be deleted. | + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/vars/var-yRmifb4PJj7cLkMG +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/vcs-events.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/vcs-events.mdx new file mode 100644 index 0000000000..7c97d1181d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/vcs-events.mdx @@ -0,0 +1,132 @@ +--- +page_title: /vcs-events API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/vcs-events` endpoint to list VCS-related + events within your organization. +source: terraform-docs-common +--- + +# VCS events API reference + +-> **Note**: The VCS Events API is still in beta as support is being added for additional VCS providers. Currently only GitLab.com connections established after December 2020 are supported. + +VCS (version control system) events describe changes within your organization for VCS-related actions. Events are only stored for 10 days. If information about the [OAuth Client](/terraform/enterprise/api-docs/oauth-clients) or [OAuth Token](/terraform/enterprise/api-docs/oauth-tokens) are available at the time of the event, it will be logged with the event. + +## List VCS events + +This endpoint lists VCS events for an organization + +`GET /organizations/:organization_name/vcs-events` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization to list VCS events from. The organization must already exist in the system and the user must have permissions to manage VCS settings. | + +-> **Note:** Viewing VCS events is restricted to the owners team, teams with the "Manage VCS Settings", and the [organization API token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens). ([More about permissions](/terraform/enterprise/users-teams-organizations/permissions).) + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 workspaces per page. | +| `filter[from]` | **Optional.** Must be RFC3339 formatted and in UTC. If omitted, the endpoint will default to 10 days ago. | +| `filter[to]` | **Optional.** Must be RFC3339 formatted and in UTC. If omitted, the endpoint will default to now. | +| `filter[oauth_client_external_ids]` | **Optional.** Format as a comma-separated string. If omitted, the endpoint will return all events. | +| `filter[levels]` | **Optional.** `info` and `error` are the only accepted values. If omitted, the endpoint will return both info and error events. | +| `include` | **Optional.** Allows including related resource data. This endpoint only supports `oauth_client` as a value. Only the `name`, `service-provider`, and `id` will be returned on the OAuth Client object in the `included` block. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/vcs-events?filter%5Bfrom%5D=2021-02-02T14%3A09%3A00Z&filter%5Bto%5D=2021-02-12T14%3A09%3A59Z&filter%5Boauth_client_external_ids%5D=oc-hhTM7WNUUgbXJpkW&filter%5Blevels%5D=info&include=oauth_client +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "ve-DJpbEwZc98ZedHZG", + "type": "vcs-events", + "attributes": { + "created-at": "2021-02-09 20:07:49.686182 +0000 UTC", + "level": "info", + "message": "Loaded 11 repositories", + "organization-id": "org-SBVreZxVessAmCZG" + }, + "relationships": { + "oauth-client": { + "data": { + "id": "oc-LePsVhHXhCM6jWf3", + "type": "oauth-clients" + }, + "links": { + "related": "/api/v2/oauth-clients/oc-LePsVhHXhCM6jWf3" + } + }, + "oauth-token": { + "data": { + "id": "ot-Ma2cs8tzjv3LYZHw", + "type": "oauth-tokens" + }, + "links": { + "related": "/api/v2/oauth-tokens/ot-Ma2cs8tzjv3LYZHw" + } + } + } + } + ], + "included": [ + { + "id": "oc-LePsVhHXhCM6jWf3", + "type": "oauth-clients", + "attributes": { + "name": "working", + "service-provider": "gitlab_hosted" + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + }, + "links": { + "related": "/api/v2/organizations/my-organization" + } + }, + "oauth-tokens": { + "data": [ + { + "id": "ot-Ma2cs8tzjv3LYZHw", + "type": "oauth-tokens" + } + ] + } + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/organizations/my-organization/vcs-events?filter%5Bfrom%5D=2021-02-02T14%3A09%3A00Z\u0026filter%5Blevels%5D=info\u0026filter%5Boauth_client_external_ids%5D=oc-LePsVhHXhCM6jWf3\u0026filter%5Bto%5D=2021-02-12T14%3A09%3A59Z\u0026include=oauth_client\u0026organization_name=my-organization\u0026page%5Bnumber%5D=1\u0026page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/organizations/my-organization/vcs-events?filter%5Bfrom%5D=2021-02-02T14%3A09%3A00Z\u0026filter%5Blevels%5D=info\u0026filter%5Boauth_client_external_ids%5D=oc-LePsVhHXhCM6jWf3\u0026filter%5Bto%5D=2021-02-12T14%3A09%3A59Z\u0026include=oauth_client\u0026organization_name=my-organization\u0026page%5Bnumber%5D=1\u0026page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/organizations/my-organization/vcs-events?filter%5Bfrom%5D=2021-02-02T14%3A09%3A00Z\u0026filter%5Blevels%5D=info\u0026filter%5Boauth_client_external_ids%5D=oc-LePsVhHXhCM6jWf3\u0026filter%5Bto%5D=2021-02-12T14%3A09%3A59Z\u0026include=oauth_client\u0026organization_name=my-organization\u0026page%5Bnumber%5D=1\u0026page%5Bsize%5D=20" + }, + "meta": { + "pagination": { + "current-page": 1, + "prev-page": null, + "next-page": null, + "total-pages": 1, + "total-count": 8 + } + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-resources.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-resources.mdx new file mode 100644 index 0000000000..9f53485fc2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-resources.mdx @@ -0,0 +1,126 @@ +--- +page_title: /workspaces/resources API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/workspaces/resources` endpoint to list + all of a workspace's resources. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Workspace resources API reference + +## List Workspace Resources + +`GET /workspaces/:workspace_id/resources` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:workspace_id` | The ID of the workspace to retrieve resources from. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [show workspace](/terraform/enterprise/api-docs/workspaces#show-workspace) endpoint. | + +| Status | Response | Reason | +| ------- | ------------------------------------------- | ----------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "resources"`) | Request was successful. | +| [404][] | [JSON API error object][] | Workspace not found or user unauthorized to perform action. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | ----------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 workspace resources per page. | + +### Permissions + +To list resources the user must have permission to read resources for the specified workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Sample Request + +```shell +curl \ + --request GET \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-DiTzUDRpjrArAfSS/resources +``` + +### Sample Response + +```json +{ + "data": [ + { + "id": "wsr-KNYb3Jj3JTBgoBFs", + "type": "resources", + "attributes": { + "address": "random_pet.animal", + "name": "animal", + "created-at": "2021-10-27", + "updated-at": "2021-10-27", + "module": "root", + "provider": "hashicorp/random", + "provider-type": "random_pet", + "modified-by-state-version-id": "sv-y4pjfGHkGUBAa9AX", + "name-index": null + } + }, + { + "id": "wsr-kYsf5A3hQ1y9zFWq", + "type": "resources", + "attributes": { + "address": "random_pet.animal2", + "name": "animal2", + "created-at": "2021-10-27", + "updated-at": "2021-10-27", + "module": "root", + "provider": "hashicorp/random", + "provider-type": "random_pet", + "modified-by-state-version-id": "sv-y4pjfGHkGUBAa9AX", + "name-index": null + } + } + ], + "links": { + "self": "https://app.terraform.io/api/v2/workspaces/ws-DiTzUDRpjrArAfSS/resources?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "first": "https://app.terraform.io/api/v2/workspaces/ws-DiTzUDRpjrArAfSS/resources?page%5Bnumber%5D=1&page%5Bsize%5D=20", + "prev": null, + "next": null, + "last": "https://app.terraform.io/api/v2/workspaces/ws-DiTzUDRpjrArAfSS/resources?page%5Bnumber%5D=1&page%5Bsize%5D=20" + }, + ... +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-variables.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-variables.mdx new file mode 100644 index 0000000000..d3a92c657e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspace-variables.mdx @@ -0,0 +1,298 @@ +--- +page_title: /workspaces/vars API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's workspace `/workspaces/vars` endpoint to + manage workspace-specific variables. Read, create, update, and delete + workspace variables. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +# Workspace variables API reference + +This set of APIs covers create, update, list and delete operations on workspace variables. + +Viewing variables requires permission to read variables for their workspace. Creating, updating, and deleting variables requires permission to read and write variables for their workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Create a Variable + +`POST /workspaces/:workspace_id/vars` + +| Parameter | Description | +| --------------- | -------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to create the variable in. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------------------- | ------ | ------- | --------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.attributes.key` | string | | The name of the variable. | +| `data.attributes.value` | string | `""` | The value of the variable. | +| `data.attributes.description` | string | | The description of the variable. | +| `data.attributes.category` | string | | Whether this is a Terraform or environment variable. Valid values are `"terraform"` or `"env"`. | +| `data.attributes.hcl` | bool | `false` | Whether to evaluate the value of the variable as a string of HCL code. Has no effect for environment variables. | +| `data.attributes.sensitive` | bool | `false` | Whether the value is sensitive. If true then the variable is written once and not visible thereafter. | + +**Deprecation warning**: The custom `filter` properties are replaced by JSON API `relationships` and will be removed from future versions of the API! + +| Key path | Type | Default | Description | +| -------------------------- | ------ | ------- | ----------------------------------------------------- | +| `filter.workspace.name` | string | | The name of the workspace that owns the variable. | +| `filter.organization.name` | string | | The name of the organization that owns the workspace. | + +### Sample Payload + +```json +{ + "data": { + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "description":"some description", + "category":"terraform", + "hcl":false, + "sensitive":false + } + } +} +``` + +### Sample Request + +```shell +curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-4j8p6jX1w33MiDC7/vars +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-EavQ1LztoRTQHSNT", + "type":"vars", + "attributes": { + "key":"some_key", + "value":"some_value", + "description":"some description", + "sensitive":false, + "category":"terraform", + "hcl":false, + "version-id":"1aa07d63ea8ff4df941c94ca9ddfd5d2bd04" + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self":"/api/v2/workspaces/ws-4j8p6jX1w33MiDC7/vars/var-EavQ1LztoRTQHSNT" + } + } +} +``` + +## List Variables + +`GET /workspaces/:workspace_id/vars` + +| Parameter | Description | +| --------------- | ---------------------------------------------- | +| `:workspace_id` | The ID of the workspace to list variables for. | + +### Sample Request + +```shell +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ +"https://app.terraform.io/api/v2/workspaces/ws-cZE9LERN3rGPRAmH/vars" +``` + +### Sample Response + +```json +{ + "data": [ + { + "id":"var-AD4pibb9nxo1468E", + "type":"vars","attributes": { + "key":"name", + "value":"hello", + "description":"some description", + "sensitive":false, + "category":"terraform", + "hcl":false, + "version-id":"1aa07d63ea8ff4df941c94ca9ddfd5d2bd04" + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-cZE9LERN3rGPRAmH", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/my-organization/workspaces/my-workspace" + } + } + }, + "links": { + "self":"/api/v2/workspaces/ws-cZE9LERN3rGPRAmH/vars/var-AD4pibb9nxo1468E" + } + } + ] +} +``` + +## Update Variables + +`PATCH /workspaces/:workspace_id/vars/:variable_id` + +| Parameter | Description | +| --------------- | ----------------------------------------------- | +| `:workspace_id` | The ID of the workspace that owns the variable. | +| `:variable_id` | The ID of the variable to be updated. | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ----------------- | ------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"vars"`. | +| `data.id` | string | | The ID of the variable to update. | +| `data.attributes` | object | | New attributes for the variable. This object can include `key`, `value`, `description`, `category`, `hcl`, and `sensitive` properties, which are described above under [create a variable](#create-a-variable). All of these properties are optional; if omitted, a property will be left unchanged. | + +### Sample Payload + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "attributes": { + "key":"name", + "value":"mars", + "description":"some description", + "category":"terraform", + "hcl": false, + "sensitive": false + }, + "type":"vars" + } +} +``` + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-4j8p6jX1w33MiDC7/vars/var-yRmifb4PJj7cLkMG +``` + +### Sample Response + +```json +{ + "data": { + "id":"var-yRmifb4PJj7cLkMG", + "type":"vars", + "attributes": { + "key":"name", + "value":"mars", + "description":"some description", + "sensitive":false, + "category":"terraform", + "hcl":false, + "version-id":"1aa07d63ea8ff4df941c94ca9ddfd5d2bd04" + }, + "relationships": { + "configurable": { + "data": { + "id":"ws-4j8p6jX1w33MiDC7", + "type":"workspaces" + }, + "links": { + "related":"/api/v2/organizations/workspace-v2-06/workspaces/workspace-v2-06" + } + } + }, + "links": { + "self":"/api/v2/workspaces/ws-4j8p6jX1w33MiDC7/vars/var-yRmifb4PJj7cLkMG" + } + } +} +``` + +## Delete Variables + +`DELETE /workspaces/:workspace_id/vars/:variable_id` + +| Parameter | Description | +| --------------- | ----------------------------------------------- | +| `:workspace_id` | The ID of the workspace that owns the variable. | +| `:variable_id` | The ID of the variable to be deleted. | + +### Sample Request + +```bash +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/workspaces/ws-4j8p6jX1w33MiDC7/vars/var-yRmifb4PJj7cLkMG +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspaces.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspaces.mdx new file mode 100644 index 0000000000..b29e7c83d8 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/api-docs/workspaces.mdx @@ -0,0 +1,1689 @@ +--- +page_title: /workspaces API reference for Terraform Enterprise +description: >- + Use the Terraform Enterprise API's `/workspaces` endpoint to read, create, + update, lock, unlock, and delete workspaces and manage SSH keys, tags, and + remote state consumers. +source: terraform-docs-common +--- + +[200]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200 + +[201]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 + +[202]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202 + +[204]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204 + +[400]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400 + +[401]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401 + +[403]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403 + +[404]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 + +[409]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409 + +[412]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412 + +[422]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 + +[429]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 + +[500]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 + +[504]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504 + +[JSON API document]: /terraform/enterprise/api-docs#json-api-documents + +[JSON API error object]: https://jsonapi.org/format/#error-objects + +[speculative plans]: /terraform/enterprise/run/remote-operations#speculative-plans + +# Workspaces API reference + +This topic provides reference information about the workspaces AP. Workspaces represent running infrastructure managed by Terraform. + +## Overview + +The scope of the API includes the following endpoints: + +| Method | Path | Action | +| -------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `POST` | `/organizations/:organization_name/workspaces` | Call this endpoint to [create a workspace](#create-a-workspace). You can apply tags stored as key-value pairs when creating the workspace. | +| `POST` | `/organizations/:organization_name/workspaces/:name/actions/safe-delete` | Call this endpoint to [safely delete a workspace](#safe-delete-a-workspace) by querying the organization and workspace names. | +| `POST` | `/workspaces/:workspace_id/actions/safe-delete` | Call this endpoint [safely delete a workspace](#safe-delete-a-workspace) by querying the workspace ID. | +| `POST` | `/workspaces/:workspace_id/actions/lock` | Call this endpoint to [lock a workspace](#lock-a-workspace). | +| `POST` | `/workspaces/:workspace_id/actions/unlock` | Call this endpoint to [unlock a workspace](#unlock-a-workspace). | +| `POST` | `/workspaces/:workspace_id/actions/force-unlock` | Call this endpoint to [force a workspace to unlock](#force-unlock-a-workspace). | +| `POST` | `/workspaces/:workspace_id/relationships/remote-state-consumers` | Call this endpoint to [add remote state consumers](#get-remote-state-consumers). | +| `POST` | `/workspaces/:workspace_id/relationships/tags` | Call this endpoint to [bind flat string tags to an existing workspace](#add-tags-to-a-workspace). | +| `POST` | `/workspaces/:workspace_id/relationships/data-retention-policy` | Call this endpoint to [show the workspace data retention policy](#show-data-retention-policy). | +| `GET` | `/organizations/:organization_name/workspaces` | Call this endpoint to [list existing workspaces](#list-workspaces). Each project in the response contains a link to `effective-tag-bindings` and `tag-bindings` collections. You can filter the response by tag keys and values using a query string parameter. | +| `GET` | `/organizations/:organization_name/workspaces/:name` | Call this endpoint to [show workspace details](#show-workspace) by querying the organization and workspace names. | +| `GET` | `/workspaces/:workspace_id` | Call this endpoint to [show workspace details](#show-workspace). | +| `GET` | `/workspaces/:workspace_id/relationships/remote-state-consumers` | Call this endpoint to [list remote state consumers](#get-remote-state-consumers). | +| `GET` | `/workspaces/:workspace_id/relationships/tags` | Call this endpoint to [list flat string workspace tags](#get-tags). | +| `GET` | `/workspaces/:workspace_id/tag-bindings` | Call this endpoint to [list workspace key-value tags](#get-tags) bound directly to this workspace. | +| `GET` | `/workspaces/:workspace_id/effective-tag-bindings` | Call this endpoint to [list all workspace key-value tags](#get-tags), including both those bound directly to the workspace as well as those inherited from the parent project. | +| `GET` | `/workspaces/:workspace_id/relationships/data-retention-policy` | Call this endpoint to [show the workspace data retention policy](#show-data-retention-policy). <alert enterprise/> | +| `PATCH` | `/workspaces/:workspace_id/relationships/ssh-key` | Call this endpoint to manage SSH key assignments for workspaces. Refer to [Assign an SSH key to a workspace](#assign-an-ssh-key-to-a-workspace) and [Unassign an SSH key from a workspace](#unassign-an-ssh-key-from-a-workspace) for instructions. | +| `PATCH` | `/workspaces/:workspace_id` | Call this endpoint to [update a workspace](#update-a-workspace). You can apply tags stored as key-value pairs when updating the workspace. | +| `PATCH` | `/organizations/:organization_name/workspaces/:name` | Call this endpoint to [update a workspace](#update-a-workspace) by querying the organization and workspace names. | +| `PATCH` | `/workspaces/:workspace_id/relationships/remote-state-consumers` | Call this endpoint to [replace remote state consumers](#replace-remote-state-consumers). | +| `DELETE` | `/workspaces/:workspace_id/relationships/remote-state-consumers` | Call this endpoint to [delete remote state consumers](#delete-remote-state-consumers). | +| `DELETE` | `/workspaces/:workspace_id/relationships/tags` | Call this endpoint to [delete flat string workspace tags](#remove-tags-from-workspace) from the workspace. | +| `DELETE` | `/workspaces/:workspace_id/relationships/data-retention-policy` | Call this endpoint to [remove a workspace data retention policy](#remove-data-retention-policy). | +| `DELETE` | `/workspaces/:workspace_id` | Call this endpoint to [force delete a workspace](#force-delete-a-workspace), which deletes the workspace without first checking for managed resources. | +| `DELETE` | `/organizations/:organization_name/workspaces/:name` | Call this endpoint to [force delete a workspace](#force-delete-a-workspace), which deletes the workspace without first checking for managed resources, by querying the organization and workspace names. | + +## Requirements + +- You must be a member of a team with the **Read** permission enabled for Terraform runs to view workspaces. +- You must be a member of a team with the **Admin** permissions enabled on the workspace to change settings and force-unlock it. +- You must be a member of a team with the **Lock/unlock** permission enabled to lock and unlock the workspace. +- You must meet one of the following requirements to create a workspace: + - Be the team owner + - Be on a team with the **Manage all workspaces** permission enabled + - Present an [organization API token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens) when calling the API. + +Refer to [Workspace Permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions) for additional information. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Create a Workspace + +Use the following endpoint to create a new workspace: + +`POST /organizations/:organization_name/workspaces` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:organization_name` | The name of the organization to create the workspace in. The organization must already exist in the system, and the user must have permissions to create new workspaces. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +By supplying the necessary attributes under a `vcs-repository` object, you can create a workspace that is configured against a VCS Repository. + +| Key path | Type | Default | Description | +| ------------------------------------------------------- | --------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | none | Must be `"workspaces"`. | +| `data.attributes.name` | string | none | The name of the workspace. Workspace names can only include letters, numbers, `-`, and `_`. The name a unique identifier n the organization. | +| `data.attributes.agent-pool-id` | string | none | Required when `execution-mode` is set to `agent`. The ID of the agent pool belonging to the workspace's organization. This value must not be specified if `execution-mode` is set to `remote` or `local` or if `operations` is set to `true`. | +| `data.attributes.allow-destroy-plan` | boolean | `true` | Whether destroy plans can be queued on the workspace. | +| `data.attributes.assessments-enabled` | boolean | `false` | (previously `drift-detection`) Whether or not HCP Terraform performs health assessments for the workspace. May be overridden by the organization setting `assessments-enforced`. Only available for Plus tier organizations, in workspaces running Terraform version 0.15.4+ and operating in [Remote execution mode](/terraform/enterprise/workspaces/settings#execution-mode). | +| `data.attributes.auto-apply` | boolean | `false` | Whether to automatically apply changes when a Terraform plan is successful in runs initiated by VCS, UI or CLI, [with some exceptions](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply). | +| `data.attributes.auto-apply-run-trigger` | boolean | `false` | Whether to automatically apply changes when a Terraform plan is successful in runs initiated by run triggers. | +| `data.attributes.auto-destroy-at` | string | (nothing) | Timestamp when the next scheduled destroy run will occur, refer to [Scheduled Destroy](/terraform/enterprise/workspaces/settings/deletion#automatically-destroy). | +| `data.attributes.auto-destroy-activity-duration` | string | (nothing) | Value and units for [automatically scheduled destroy runs based on workspace activity](/terraform/enterprise/workspaces/settings/deletion#automatically-destroy). Valid values are greater than 0 and four digits or less. Valid units are `d` and `h`. For example, to queue destroy runs after fourteen days of inactivity set `auto-destroy-activity-duration: "14d"`. | +| `data.attributes.description` | string | (nothing) | A description for the workspace. | +| `data.attributes.execution-mode` | string | (nothing) | Which [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) to use. Valid values are `remote`, `local`, and `agent`. When set to `local`, the workspace will be used for state storage only. This value _must not_ be specified if `operations` is specified, and _must_ be specified if `setting-overwrites.execution-mode` is set to `true`. | +| `data.attributes.file-triggers-enabled` | boolean | `true` | Whether to filter runs based on the changed files in a VCS push. If enabled, it uses either `trigger-prefixes` in conjunction with `working_directory` or `trigger-patterns` to describe the set of changed files that will start a run. If disabled, any push triggers a run. | +| `data.attributes.global-remote-state` | boolean | `false` | Whether the workspace should allow all workspaces in the organization to [access its state data](/terraform/enterprise/workspaces/state) during runs. If `false`, then only specifically approved workspaces can access its state. Manage allowed workspaces using the [Remote State Consumers](/terraform/enterprise/api-docs/workspaces#get-remote-state-consumers) endpoints, documented later on this page. Terraform Enterprise admins can choose the default value for new workspaces if this attribute is omitted. | +| `data.attributes.operations` | boolean | `true` | **DEPRECATED** Use `execution-mode` instead. Whether to use remote execution mode. When set to `false`, the workspace will be used for state storage only. This value must not be specified if `execution-mode` is specified. | +| `data.attributes.queue-all-runs` | boolean | `false` | Whether runs should be queued immediately after workspace creation. When set to false, runs triggered by a VCS change will not be queued until at least one run is manually queued. | +| `data.attributes.source-name` | string | none | A friendly name for the application or client creating this workspace. If set, this will be displayed on the workspace as "Created via `<SOURCE NAME>`". | +| `data.attributes.source-url` | string | none | A URL for the application or client creating this workspace. This can be the URL of a related resource in another app, or a link to documentation or other info about the client. | +| `data.attributes.speculative-enabled` | boolean | `true` | Whether this workspace allows automatic [speculative plans][]. Setting this to `false` prevents HCP Terraform from running plans on pull requests, which can improve security if the VCS repository is public or includes untrusted contributors. It doesn't prevent manual speculative plans via the CLI or the runs API. | +| `data.attributes.terraform-version` | string | latest release | Specifies the version of Terraform to use for this workspace. You can specify an exact version or a [version constraint](/terraform/language/expressions/version-constraints) such as `~> 1.0.0`. If you specify a constraint, the workspace always uses the newest release that meets that constraint. If omitted when creating a workspace, this defaults to the latest released version. | +| `data.attributes.trigger-patterns` | array | `[]` | List of glob patterns that describe the files HCP Terraform monitors for changes. Trigger patterns are always appended to the root directory of the repository. | +| `data.attributes.trigger-prefixes` | array | `[]` | List of trigger prefixes that describe the paths HCP Terraform monitors for changes, in addition to the working directory. Trigger prefixes are always appended to the root directory of the repository. HCP Terraform starts a run when files are changed in any directory path matching the provided set of prefixes. | +| `data.attributes.vcs-repo.branch` | string | repository's default branch | The repository branch that Terraform executes from. If omitted or submitted as an empty string, this defaults to the repository's default branch. | +| `data.attributes.vcs-repo.identifier` | string | none | A reference to your VCS repository in the format :org/:repo where :org and :repo refer to the organization and repository in your VCS provider. The format for Azure DevOps is `:org/:project/_git/:repo`. | +| `data.attributes.vcs-repo.ingress-submodules` | boolean | `false` | Whether submodules should be fetched when cloning the VCS repository. | +| `data.attributes.vcs-repo.oauth-token-id` | string | none | Specifies the VCS OAuth connection and token. Call the [`oauth-tokens`](/terraform/enterprise/api-docs/oauth-tokens) endpoint to retrieve the OAuth ID. | +| `data.attributes.vcs-repo.tags-regex` | string | none | A regular expression used to match Git tags. HCP Terraform triggers a run when this value is present and a VCS event occurs that contains a matching Git tag for the regular expression. | +| `data.attributes.vcs-repo` | object | none | Settings for the workspace's VCS repository. If omitted, the workspace is created without a VCS repo. If included, you must specify at least the `oauth-token-id` and `identifier` keys. | +| `data.attributes.working-directory` | string | (nothing) | A relative path that Terraform will execute within. This defaults to the root of your repository and is typically set to a subdirectory matching the environment when multiple environments exist within the same repository. | +| `data.attributes.setting-overwrites` | object | none | The keys in this object are attributes that have organization-level defaults. Each attribute key stores a boolean value which is `true` by default. To overwrite the default inherited value, set an attribute's value to `false`. For example, to set `execution-mode` as the organization default, set `setting-overwrites.execution-mode` to `false`. | +| `data.relationships` | object | none | Specifies a group of workspace associations. | +| `data.relationships.project.data.id` | string | default project | The ID of the project to create the workspace in. If left blank, Terraform creates the workspace in the organization's default project. You must have permission to create workspaces in the project, either by organization-level permissions or team admin access to a specific project. | +| `data.relationships.tag-bindings.data` | list of objects | none | Specifies a list of tags to attach to the workspace. | +| `data.relationships.tag-bindings.data.type` | string | none | Must be `tag-bindings` for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.key` | string | none | Specifies the tag key for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.value` | string | none | Specifies the tag value for each object in the list. | + +### Sample Payload + +_Without a VCS repository_ + +```json +{ + "data": { + "attributes": { + "name": "workspace-1" + }, + "type": "workspaces" + } +} +``` + +_With Key/Value Tags_ + +```json +{ + "data": { + "attributes": { + "name": "workspace-1" + }, + "type": "workspaces", + "relationships": { + "tag-bindings": { + { + "data": [{ + "type": "tag-bindings", + "attributes": { "key": "env", "value": "test"} + }] + } + } + } + } +} +``` + +_With a VCS repository_ + +```json +{ + "data": { + "attributes": { + "name": "workspace-2", + "terraform_version": "0.11.1", + "working-directory": "", + "vcs-repo": { + "identifier": "example/terraform-test-proj", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "branch": "", + "tags-regex": null + } + }, + "type": "workspaces" + } +} +``` + +_Using Git Tags_ + +HCP Terraform triggers a run when you push a Git tag that matches the regular expression (SemVer): `1.2.3`, `22.33.44`, etc. + +```json +{ + "data": { + "attributes": { + "name": "workspace-3", + "terraform_version": "0.12.1", + "file-triggers-enabled": false, + "working-directory": "/networking", + "vcs-repo": { + "identifier": "example/terraform-test-proj-monorepo", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "branch": "", + "tags-regex": "\d+.\d+.\d+" + } + }, + "type": "workspaces" + } +} +``` + +_For a monorepo using trigger prefixes_ + +A run will be triggered in this workspace when changes are detected in any of the specified directories: `/networking`, `/modules`, or `/vendor`. + +```json +{ + "data": { + "attributes": { + "name": "workspace-3", + "terraform_version": "0.12.1", + "file-triggers-enabled": true, + "trigger-prefixes": ["/modules", "/vendor"], + "working-directory": "/networking", + "vcs-repo": { + "identifier": "example/terraform-test-proj-monorepo", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "branch": "" + }, + "updated-at": "2017-11-29T19:18:09.976Z" + }, + "type": "workspaces" + } +} +``` + +_For a monorepo using trigger patterns_ + +A run will be triggered in this workspace when HCP Terraform detects any of the following changes: + +- A file with the extension `tf` in any directory structure in which the last folder is named `networking` (e.g., `root/networking` and `root/module/networking`) +- Any file changed in the folder `/base`, no subfolders are included +- Any file changed in the folder `/submodule` and all of its subfolders + +```json +{ + "data": { + "attributes": { + "name": "workspace-4", + "terraform_version": "1.2.2", + "file-triggers-enabled": true, + "trigger-patterns": ["/**/networking/*.tf", "/base/*", "/submodule/**/*"], + "vcs-repo": { + "identifier": "example/terraform-test-proj-monorepo", + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ", + "branch": "" + }, + "updated-at": "2022-06-09T19:18:09.976Z" + }, + "type": "workspaces" + } +} +``` + +_Using HCP Terraform agents_ + +[HCP Terraform agents](/terraform/enterprise/api-docs/agents) allow HCP Terraform to communicate with isolated, private, or on-premises infrastructure. + +```json +{ + "data": { + "attributes": { + "name":"workspace-1", + "execution-mode": "agent", + "agent-pool-id": "apool-ZjT6A7mVFm5WHT5a" + } + }, + "type": "workspaces" +} +``` + +_Using an organization default execution mode_ + +```json +{ + "data": { + "attributes": { + "name":"workspace-with-default", + "setting-overwrites": { + "execution-mode": false + } + } + }, + "type": "workspaces" +} + +``` + +_With a project_ + +```json +{ + "data": { + "type": "workspaces", + "attributes": { + "name": "workspace-in-project" + }, + "relationships": { + "project": { + "data": { + "type": "projects", + "id": "prj-jT92VLSFpv8FwKtc" + } + } + } + } +} +``` + +_With key-value tags_ + +```json +{ + "data": { + "type": "workspaces", + "attributes": { + "name": "workspace-in-project" + } + } +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/workspaces +``` + +### Sample Response + +_Without a VCS repository_ + +**Note:** The `assessments-enabled` property is only accepted by or returned from HCP Terraform. + +@include 'api-code-blocks/workspace.mdx' + +_With a VCS repository_ + +@include 'api-code-blocks/workspace-with-vcs.mdx' + +_With a project_ + +```json +{ + "data": { + "id": "ws-HRkJLSYWF97jucqQ", + "type": "workspaces", + "attributes": { + "allow-destroy-plan": true, + "auto-apply": false, + "auto-apply-run-trigger": false, + "auto-destroy-at": null, + "auto-destroy-activity-duration": null, + "created-at": "2022-12-05T20:57:13.829Z", + "environment": "default", + "locked": false, + "locked-reason": "", + "name": "workspace-in-project", + "queue-all-runs": false, + "speculative-enabled": true, + "structured-run-output-enabled": true, + "terraform-version": "1.3.5", + "working-directory": null, + "global-remote-state": true, + "updated-at": "2022-12-05T20:57:13.829Z", + "resource-count": 0, + "apply-duration-average": null, + "plan-duration-average": null, + "policy-check-failures": null, + "run-failures": null, + "workspace-kpis-runs-count": null, + "latest-change-at": "2022-12-05T20:57:13.829Z", + "operations": true, + "execution-mode": "remote", + "vcs-repo": null, + "vcs-repo-identifier": null, + "permissions": { + "can-update": true, + "can-destroy": true, + "can-queue-run": true, + "can-read-variable": true, + "can-update-variable": true, + "can-read-state-versions": true, + "can-read-state-outputs": true, + "can-create-state-versions": true, + "can-queue-apply": true, + "can-lock": true, + "can-unlock": true, + "can-force-unlock": true, + "can-read-settings": true, + "can-manage-tags": true, + "can-manage-run-tasks": false, + "can-force-delete": true, + "can-manage-assessments": true, + "can-read-assessment-results": true, + "can-queue-destroy": true + }, + "actions": { + "is-destroyable": true + }, + "description": null, + "file-triggers-enabled": true, + "trigger-prefixes": [], + "trigger-patterns": [], + "assessments-enabled": false, + "last-assessment-result-at": null, + "source": "tfe-api", + "source-name": null, + "source-url": null, + "tag-names": [], + "setting-overwrites": { + "execution-mode": false, + "agent-pool": false + } + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + }, + "current-run": { + "data": null + }, + "effective-tag-bindings": { + "links": { + "related": "/api/v2/workspaces/ws-HRkJLSYWF97jucqQ/effective-tag-bindings" + } + }, + "latest-run": { + "data": null + }, + "outputs": { + "data": [] + }, + "remote-state-consumers": { + "links": { + "related": "/api/v2/workspaces/ws-HRkJLSYWF97jucqQ/relationships/remote-state-consumers" + } + }, + "current-state-version": { + "data": null + }, + "current-configuration-version": { + "data": null + }, + "agent-pool": { + "data": null + }, + "readme": { + "data": null + }, + "project": { + "data": { + "id": "prj-jT92VLSFpv8FwKtc", + "type": "projects" + } + }, + "current-assessment-result": { + "data": null + }, + "tag-bindings": { + "links": { + "related": "/api/v2/workspaces/ws-HRkJLSYWF97jucqQ/tag-bindings" + } + }, + "vars": { + "data": [] + }, + }, + "links": { + "self": "/api/v2/organizations/my-organization/workspaces/workspace-in-project" + } + } +} +``` + +## Update a Workspace + +Use one of the following endpoint to update a workspace: + +- `PATCH /organizations/:organization_name/workspaces/:name` +- `PATCH /workspaces/:workspace_id` + +| Parameter | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to update | +| `:organization_name` | The name of the organization the workspace belongs to. | +| `:name` | The name of the workspace to update. Workspace names are unique identifiers in the organization and can only include letters, numbers, `-`, and `_`. | + +### Request Body + +These PATCH endpoints require a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------------------------------------------------- | --------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data.type` | string | | Must be `"workspaces"`. | +| `data.attributes.name` | string | (previous value) | A new name for the workspace, which can only include letters, numbers, `-`, and `_`. This will be used as an identifier and must be unique in the organization. **Warning:** Changing a workspace's name changes its URL in the API and UI. | +| `data.attributes.agent-pool-id` | string | (previous value) | Required when `execution-mode` is set to `agent`. The ID of the agent pool belonging to the workspace's organization. This value must not be specified if `execution-mode` is set to `remote` or `local` or if `operations` is set to `true`. | +| `data.attributes.allow-destroy-plan` | boolean | (previous value) | Whether destroy plans can be queued on the workspace. | +| `data.attributes.assessments-enabled` | boolean | `false` | (previously `drift-detection`) Whether or not HCP Terraform performs health assessments for the workspace. May be overridden by the organization setting `assessments-enforced`. Only available for Plus tier organizations, in workspaces running Terraform version 0.15.4+ and operating in [Remote execution mode](/terraform/enterprise/workspaces/settings#execution-mode). | +| `data.attributes.auto-apply` | boolean | (previous value) | Whether to automatically apply changes when a Terraform plan is successful in runs initiated by VCS, UI or CLI, [with some exceptions](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply). | +| `data.attributes.auto-apply-run-trigger` | boolean | (previous value) | Whether to automatically apply changes when a Terraform plan is successful in runs initiated by run triggers. | +| `data.attributes.auto-destroy-at` | string | (previous value) | Timestamp when the next scheduled destroy run will occur, refer to [Scheduled Destroy](/terraform/enterprise/workspaces/settings/deletion#automatically-destroy). | +| `data.attributes.auto-destroy-activity-duration` | string | (previous value) | Value and units for [automatically scheduled destroy runs based on workspace activity](/terraform/enterprise/workspaces/settings/deletion#automatically-destroy). Valid values are greater than 0 and four digits or less. Valid units are `d` and `h`. For example, to queue destroy runs after fourteen days of inactivity set `auto-destroy-activity-duration: "14d"`. | +| `data.attributes.description` | string | (previous value) | A description for the workspace. | +| `data.attributes.execution-mode` | string | (previous value) | Which [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) to use. Valid values are `remote`, `local`, and `agent`. When set to `local`, the workspace will be used for state storage only. This value _must not_ be specified if `operations` is specified, and _must_ be specified if `setting-overwrites.execution-mode` is set to `true`. | +| `data.attributes.file-triggers-enabled` | boolean | (previous value) | Whether to filter runs based on the changed files in a VCS push. If enabled, it uses either `trigger-prefixes` in conjunction with `working_directory` or `trigger-patterns` to describe the set of changed files that will start a run. If disabled, any push will trigger a run. | +| `data.attributes.global-remote-state` | boolean | (previous value) | Whether the workspace should allow all workspaces in the organization to [access its state data](/terraform/enterprise/workspaces/state) during runs. If `false`, then only specifically approved workspaces can access its state. Manage allowed workspaces using the [Remote State Consumers](/terraform/enterprise/api-docs/workspaces#get-remote-state-consumers) endpoints, documented later on this page. | +| `data.attributes.operations` | boolean | (previous value) | **DEPRECATED** Use `execution-mode` instead. Whether to use remote execution mode. When set to `false`, the workspace will be used for state storage only. This value must not be specified if `execution-mode` is specified. | +| `data.attributes.queue-all-runs` | boolean | (previous value) | Whether runs should be queued immediately after workspace creation. When set to false, runs triggered by a VCS change will not be queued until at least one run is manually queued. | +| `data.attributes.speculative-enabled` | boolean | (previous value) | Whether this workspace allows automatic [speculative plans][]. Setting this to `false` prevents HCP Terraform from running plans on pull requests, which can improve security if the VCS repository is public or includes untrusted contributors. It doesn't prevent manual speculative plans via the CLI or the runs API. | +| `data.attributes.terraform-version` | string | (previous value) | The version of Terraform to use for this workspace. This can be either an exact version or a [version constraint](/terraform/language/expressions/version-constraints) (like `~> 1.0.0`); if you specify a constraint, the workspace will always use the newest release that meets that constraint. | +| `data.attributes.trigger-patterns` | array | (previous value) | List of glob patterns that describe the files HCP Terraform monitors for changes. Trigger patterns are always appended to the root directory of the repository. | +| `data.attributes.trigger-prefixes` | array | (previous value) | List of trigger prefixes that describe the paths HCP Terraform monitors for changes, in addition to the working directory. Trigger prefixes are always appended to the root directory of the repository. HCP Terraform will start a run when files are changed in any directory path matching the provided set of prefixes. | +| `data.attributes.vcs-repo.branch` | string | (previous value) | The repository branch that Terraform will execute from. | +| `data.attributes.vcs-repo.identifier` | string | (previous value) | A reference to your VCS repository in the format :org/:repo where :org and :repo refer to the organization and repository in your VCS provider. The format for Azure DevOps is `:org/:project/_git/:repo`. | +| `data.attributes.vcs-repo.ingress-submodules` | boolean | (previous value) | Whether submodules should be fetched when cloning the VCS repository. | +| `data.attributes.vcs-repo.oauth-token-id` | string | | The VCS Connection (OAuth Connection + Token) to use as identified. Get this ID from the [oauth-tokens](/terraform/enterprise/api-docs/oauth-tokens) endpoint. You can not specify this value if `github-app-installation-id` is specified. | +| `data.attributes.vcs-repo.github-app-installation-id` | string | | The VCS Connection GitHub App Installation to use. Find this ID on the account settings page. Requires previously authorizing the GitHub App and generating a user-to-server token. Manage the token from **Account Settings** within HCP Terraform. You can not specify this value if `oauth-token-id` is specified. | +| `data.attributes.vcs-repo.tags-regex` | string | (previous value) | A regular expression used to match Git tags. HCP Terraform triggers a run when this value is present and a VCS event occurs that contains a matching Git tag for the regular expression. | +| `data.attributes.vcs-repo` | object or null | (previous value) | To delete a workspace's existing VCS repo, specify `null` instead of an object. To modify a workspace's existing VCS repo, include whichever of the keys below you wish to modify. To add a new VCS repo to a workspace that didn't previously have one, include at least the `oauth-token-id` and `identifier` keys. | +| `data.attributes.working-directory` | string | (previous value) | A relative path that Terraform will execute within. This defaults to the root of your repository and is typically set to a subdirectory matching the environment when multiple environments exist within the same repository. | +| `data.attributes.setting-overwrites` | object | | The keys in this object are attributes that have organization-level defaults. Each attribute key stores a boolean value which is `true` by default. To overwrite the default inherited value, set an attribute's value to `false`. For example, to set `execution-mode` as the organization default, you set `setting-overwrites.execution-mode = false`. | +| `data.relationships` | object | none | Specifies a group of workspace relationships. | +| `data.relationships.project.data.id` | string | existing value | The ID of the project to move the workspace to. If left blank or unchanged, the workspace will not be moved. You must have admin permissions on both the source project and destination project in order to move a workspace between projects. | +| `data.relationships.tag-bindings.data` | list of objects | none | Specifies a list of tags to attach to the workspace. | +| `data.relationships.tag-bindings.data.type` | string | none | Must be `tag-bindings` for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.key` | string | none | Specifies the tag key for each object in the list. | +| `data.relationships.tag-bindings.data.attributes.value` | string | none | Specifies the tag value for each object in the list. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "name": "workspace-2", + "resource-count": 0, + "terraform_version": "0.11.1", + "working-directory": "", + "vcs-repo": { + "identifier": "example/terraform-test-proj", + "branch": "", + "ingress-submodules": false, + "oauth-token-id": "ot-hmAyP66qk2AMVdbJ" + }, + "updated-at": "2017-11-29T19:18:09.976Z" + }, + "relationships": { + "project": { + "data": { + "type": "projects", + "id": "prj-7HWWPGY3fYxztELU" + } + }, + "tag-bindings": { + "data": [ + { + "type": "tag-bindings", + "attributes": { + "key": "environment", + "value": "development" + } + }, + ] + } + }, + "type": "workspaces" + } +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/organizations/my-organization/workspaces/workspace-2 +``` + +### Sample Response + +@include 'api-code-blocks/workspace-with-vcs.mdx' + +## List workspaces + +This endpoint lists workspaces in the organization. + +`GET /organizations/:organization_name/workspaces` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------- | +| `:organization_name` | The name of the organization to list the workspaces of. | + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 workspaces per page. | +| `search[name]` | **Optional.** If specified, restricts results to workspaces with a name that matches the search string using a fuzzy search. | +| `search[tags]` | **Optional.** If specified, restricts results to workspaces with that tag. If multiple comma separated values are specified, results matching all of the tags are returned. | +| `search[exclude-tags]` | **Optional.** If specified, results exclude workspaces with that tag. If multiple comma separated values are specified, workspaces with tags matching any of the tags are excluded. | +| `search[wildcard-name]` | **Optional.** If specified, restricts results to workspaces with partial matching, using `*` on prefix, suffix, or both. For example, `search[wildcard-name]=*-prod` returns all workspaces ending in `-prod`, `search[wildcard-name]=prod-*` returns all workspaces beginning with `prod-`, and `search[wildcard-name]=*-prod-*` returns all workspaces with substring `-prod-` regardless of prefix and/or suffix. | +| `sort` | **Optional.** Allows sorting the organization's workspaces by a provided value. You can sort by `"name"`, `"current-run.created-at"` (the time of the current run), and `"latest-change-at"` (the creation time of the latest state version or the workspace itself if no state version exists). Prepending a hyphen to the sort parameter reverses the order. For example, `"-name"` sorts by name in reverse alphabetical order. If omitted, the default sort order is arbitrary but stable. | +| `filter[project][id]` | **Optional.** If specified, restricts results to workspaces in the specific project. | +| `filter[current-run][status]` | **Optional.** If specified, restricts results to workspaces that match the status of a current run. | +| `filter[tagged][i][key]` | **Optional.** If specified, restricts results to workspaces that are tagged with the provided key. Use a value of "0" for `i` if you are only using a single filter. For multiple tag filters, use an incrementing integer value for each filter. Multiple tag filters will be combined together with a logical AND when filtering results. | +| `filter[tagged][i][value]` | **Optional.** If specified, restricts results to workspaces that are tagged with the provided value. This is useful when combined with a `key` filter for more specificity. Use a value of "0" for `i` if you are only using a single filter. For multiple tag filters, use an incrementing integer value for each filter. Multiple tag filters will be combined together with a logical AND when filtering results. | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/workspaces +``` + +_With multiple tag filters_ + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/workspaces?filter%5B%tagged5D%5B0%5D%5Bkey%5D=environment&filter%5B%tagged5D%5B0%5D%5Bvalue%5D=development&filter%5B%tagged5D%5B1%5D%5Bkey%5D=meets-compliance +``` + +### Sample Response + +@include 'api-code-blocks/workspaces-list.mdx' + +## Show workspace + +Details on a workspace can be retrieved from two endpoints, which behave identically. + +One refers to a workspace by its ID: + +`GET /workspaces/:workspace_id` + +| Parameter | Description | +| --------------- | ---------------- | +| `:workspace_id` | The workspace ID | + +The other refers to a workspace by its name and organization: + +`GET /organizations/:organization_name/workspaces/:name` + +| Parameter | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the workspace belongs to. | +| `:name` | The name of the workspace to show details for, which can only include letters, numbers, `-`, and `_`. | + +### Workspace performance attributes + +The following attributes are helpful in determining the overall health and performance of your workspace configuration. These metrics refer to the **past 30 runs that have either resulted in an error or successfully applied**. + +| Parameter | Type | Description | +| ------------------------------------------ | ------ | --------------------------------------------------------------------------------------- | +| `data.attributes.apply-duration-average` | number | This is the average time runs spend in the **apply** phase, represented in milliseconds | +| `data.attributes.plan-duration-average` | number | This is the average time runs spend in the **plan** phase, represented in milliseconds | +| `data.attributes.policy-check-failures` | number | Reports the number of run failures resulting from a policy check failure | +| `data.attributes.run-failures` | number | Reports the number of failed runs | +| `data.attributes.workspace-kpis-run-count` | number | Total number of runs taken into account by these metrics | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/my-organization/workspaces/workspace-1 +``` + +### Sample Response + +@include 'api-code-blocks/workspace.mdx' + +## Safe Delete a workspace + +When you delete an HCP Terraform workspace with resources, Terraform can no longer track or manage that infrastructure. During a safe delete, HCP Terraform only deletes the workspace if it is not managing resources. + +You can safe delete a workspace using two endpoints that behave identically. The first endpoint identifies a workspace with the workspace ID, and the other identifies the workspace by its name and organization. + +`POST /workspaces/:workspace_id/actions/safe-delete` + +| Parameter | Description | +| --------------- | ---------------------------------- | +| `:workspace_id` | The ID of the workspace to delete. | + +`POST /organizations/:organization_name/workspaces/:name/actions/safe-delete` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the workspace's organization. | +| `:name` | The name of the workspace to delete, which can only include letters, numbers, `-`, and `_`. | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | No Content | Successfully deleted the workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform workspace delete | +| [409][] | [JSON API error object][] | Workspace is not safe to delete because it is managing resources | + +## Force Delete a workspace + +During a force delete, HCP Terraform removes the specified workspace without checking whether it is managing resources. We recommend using the [safe delete endpoint](#safe-delete-a-workspace) instead, when possible. + +!> **Warning:** Terraform cannot track or manage the workspace's infrastructure after deletion. We recommend [destroying the workspace's infrastructure](/terraform/enterprise/run/modes-and-options#destroy-mode) before you delete it. + +By default, only organization owners can force delete workspaces. Organization owners can also update [organization's settings]\(/terraform/cloud-docs/users-teams organizations/organizations#general) to let workspace admins force delete their own workspaces. + +You can use two endpoints to force delete a workspace, which behave identically. One endpoint identifies the workspace with its workspace ID and the other endpoint identifies the workspace with its name and organization. + +`DELETE /workspaces/:workspace_id` + +| Parameter | Description | +| --------------- | --------------------------------- | +| `:workspace_id` | The ID of the workspace to delete | + +`DELETE /organizations/:organization_name/workspaces/:name` + +| Parameter | Description | +| -------------------- | ------------------------------------------------------------------------------------------- | +| `:organization_name` | The name of the organization the workspace belongs to. | +| `:name` | The name of the workspace to delete, which can only include letters, numbers, `-`, and `_`. | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | No Content | Successfully deleted the workspace | +| [403][] | [JSON API error object][] | Not authorized to perform a force delete on the workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform workspace delete | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + https://app.terraform.io/api/v2/organizations/my-organization/workspaces/workspace-1 +``` + +## Lock a workspace + +This endpoint locks a workspace. + +`POST /workspaces/:workspace_id/actions/lock` + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to lock. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +| Status | Response | Reason(s) | +| ------- | -------------------------------------------- | ----------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "workspaces"`) | Successfully locked the workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [409][] | [JSON API error object][] | Workspace already locked | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------- | ------ | ------- | ------------------------------------- | +| `reason` | string | `""` | The reason for locking the workspace. | + +### Sample Payload + +```json +{ + "reason": "Locking workspace-1" +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-SihZTyXKfNXUWuUa/actions/lock +``` + +### Sample Response + +@include 'api-code-blocks/workspace.mdx' + +## Unlock a workspace + +This endpoint unlocks a workspace. Unlocking a workspace sets the current state version to the latest finalized intermediate state version. If intermediate state versions are available, but HCP Terraform has not yet finalized the latest intermediate state version, the unlock will fail with a 503 response. For this particular error, it's recommended to retry the unlock operation for a short period of time until the platform finalizes the state version. If you must force-unlock a workspace under these conditions, ensure that state was saved successfully by inspecting the latest state version using the [State Version List API](/terraform/enterprise/api-docs/state-versions#list-state-versions-for-a-workspace) + +`POST /workspaces/:workspace_id/actions/unlock` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to unlock. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +| Status | Response | Reason(s) | +| ------- | -------------------------------------------- | ----------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "workspaces"`) | Successfully unlocked the workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [409][] | [JSON API error object][] | Workspace already unlocked, or locked by a different user | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/workspaces/ws-SihZTyXKfNXUWuUa/actions/unlock +``` + +### Sample Response + +@include 'api-code-blocks/workspace.mdx' + +## Force Unlock a workspace + +This endpoint force unlocks a workspace. Only users with admin access are authorized to force unlock a workspace. + +`POST /workspaces/:workspace_id/actions/force-unlock` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to force unlock. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +| Status | Response | Reason(s) | +| ------- | -------------------------------------------- | ----------------------------------------------------------- | +| [200][] | [JSON API document][] (`type: "workspaces"`) | Successfully force unlocked the workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [409][] | [JSON API error object][] | Workspace already unlocked | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + https://app.terraform.io/api/v2/workspaces/ws-SihZTyXKfNXUWuUa/actions/force-unlock +``` + +### Sample Response + +@include 'api-code-blocks/workspace-with-vcs.mdx' + +## Assign an SSH key to a workspace + +This endpoint assigns an SSH key to a workspace. + +`PATCH /workspaces/:workspace_id/relationships/ssh-key` + +| Parameter | Description | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to assign the SSH key to. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------ | +| `data.type` | string | | Must be `"workspaces"`. | +| `data.attributes.id` | string | | The SSH key ID to assign. Obtain this from the [ssh-keys](/terraform/enterprise/api-docs/ssh-keys) endpoint. | + +#### Sample Payload + +```json +{ + "data": { + "attributes": { + "id": "sshkey-GxrePWre1Ezug7aM" + }, + "type": "workspaces" + } +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-SihZTyXKfNXUWuUa/relationships/ssh-key +``` + +### Sample Response + +@include 'api-code-blocks/workspace-with-vcs.mdx' + +## Unassign an SSH key from a workspace + +This endpoint unassigns the currently assigned SSH key from a workspace. + +`PATCH /workspaces/:workspace_id/relationships/ssh-key` + +| Parameter | Description | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to assign the SSH key to. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| -------------------- | ------ | ------- | ----------------------- | +| `data.type` | string | | Must be `"workspaces"`. | +| `data.attributes.id` | string | | Must be `null`. | + +### Sample Payload + +```json +{ + "data": { + "attributes": { + "id": null + }, + "type": "workspaces" + } +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-SihZTyXKfNXUWuUa/relationships/ssh-key +``` + +### Sample Response + +@include 'api-code-blocks/workspace-with-vcs.mdx' + +## Get Remote State Consumers + +`GET /workspaces/:workspace_id/relationships/remote-state-consumers` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to get remote state consumers for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +This endpoint retrieves the list of other workspaces that are allowed to access the given workspace's state during runs. + +- If `global-remote-state` is set to false for the workspace, this will return the list of other workspaces that are specifically authorized to access the workspace's state. +- If `global-remote-state` is set to true, this will return a list of every workspace in the organization except for the subject workspace. + +The list returned by this endpoint is subject to the caller's normal workspace permissions; it will not include workspaces that the provided API token is unable to read. + +### Query Parameters + +This endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 workspaces per page. | + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-SihZTyXKfNXUWuUa/relationships/remote-state-consumers +``` + +### Sample Response + +@include 'api-code-blocks/workspaces-list.mdx' + +## Replace Remote State Consumers + +`PATCH /workspaces/:workspace_id/relationships/remote-state-consumers` + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to replace remote state consumers for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +This endpoint updates the workspace's remote state consumers to be _exactly_ the list of workspaces specified in the payload. It can only be used for workspaces where `global-remote-state` is false. + +This endpoint can only be used by teams with permission to manage workspaces for the entire organization — only those who can _view_ the entire list of consumers can _replace_ the entire list. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) Teams with admin permissions on specific workspaces can still modify remote state consumers for those workspaces, but must use the add (POST) and remove (DELETE) endpoints listed below instead of this PATCH endpoint. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | No Content | Successfully updated remote state consumers | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ----------------------------------------------------------- | +| `data[].type` | string | | Must be `"workspaces"`. | +| `data[].id` | string | | The ID of a workspace to be set as a remote state consumer. | + +### Sample Payload + +```json +{ + "data": [ + { + "id": "ws-7aiqKYf6ejMFdtWS", + "type": "workspaces" + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-UYv6RYM8fVhzeGG5/relationships/remote-state-consumers +``` + +### Response + +No response body. + +Status code `204`. + +## Add Remote State Consumers + +`POST /workspaces/:workspace_id/relationships/remote-state-consumers` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to add remote state consumers for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +This endpoint adds one or more remote state consumers to the workspace. It can only be used for workspaces where `global-remote-state` is false. + +- The workspaces specified as consumers must be readable to the API token that makes the request. +- A workspace cannot be added as a consumer of itself. (A workspace can always read its own state, regardless of access settings.) +- You can safely add a consumer workspace that is already present; it will be ignored, and the rest of the consumers in the request will be processed normally. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | No Content | Successfully updated remote state consumers | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ----------------------------------------------------------- | +| `data[].type` | string | | Must be `"workspaces"`. | +| `data[].id` | string | | The ID of a workspace to be set as a remote state consumer. | + +### Sample Payload + +```json +{ + "data": [ + { + "id": "ws-7aiqKYf6ejMFdtWS", + "type": "workspaces" + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-UYv6RYM8fVhzeGG5/relationships/remote-state-consumers +``` + +### Response + +No response body. + +Status code `204`. + +## Delete Remote State Consumers + +`DELETE /workspaces/:workspace_id/relationships/remote-state-consumers` + +| Parameter | Description | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to remove remote state consumers for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +This endpoint removes one or more remote state consumers from a workspace, according to the contents of the payload. It can only be used for workspaces where `global-remote-state` is false. + +- The workspaces specified as consumers must be readable to the API token that makes the request. +- You can safely remove a consumer workspace that is already absent; it will be ignored, and the rest of the consumers in the request will be processed normally. + +| Status | Response | Reason(s) | +| ------- | ------------------------- | --------------------------------------------------------------------- | +| [204][] | No Content | Successfully updated remote state consumers | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | +| [422][] | [JSON API error object][] | Problem with payload or request; details provided in the error object | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +Properties without a default value are required. + +| Key path | Type | Default | Description | +| ------------- | ------ | ------- | ---------------------------------------------------------------- | +| `data[].type` | string | | Must be `"workspaces"`. | +| `data[].id` | string | | The ID of a workspace to remove from the remote state consumers. | + +### Sample Payload + +```json +{ + "data": [ + { + "id": "ws-7aiqKYf6ejMFdtWS", + "type": "workspaces" + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-UYv6RYM8fVhzeGG5/relationships/remote-state-consumers +``` + +### Response + +No response body. + +Status code `204`. + +## List workspace tags + +Workspace tags are [organization tags](/terraform/enterprise/api-docs/organization-tags) added to a workspace. They are a flat list of keys that can only be applied to workspaces when using the `tags` attribute in the Terraform `cloud` block in Terraform v1.9 and older. To list key-value tags supported in Terraform v1.10 and newer, refer to [List workspace tag bindings](#list-workspace-tag-bindings). + +`GET /workspaces/:workspace_id/relationships/tags`: Paginated list of flat string tags attached to the workspace. + +### Path parameters + +| Parameter | Description | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to fetch tags for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +### Query Parameters + +Only the flat string tags endpoint supports pagination [with standard URL query parameters](/terraform/enterprise/api-docs#query-parameters). Remember to percent-encode `[` as `%5B` and `]` as `%5D` if your tooling doesn't automatically encode URLs. Conversely, all tags are returned when using fetching tag-bindings or effective-tag-bindings endpoints. + +| Parameter | Description | +| -------------- | -------------------------------------------------------------------------- | +| `page[number]` | **Optional.** If omitted, the endpoint will return the first page. | +| `page[size]` | **Optional.** If omitted, the endpoint will return 20 workspaces per page. | + +### Sample Requests + +<CodeBlockConfig hideClipboard heading="List flat string tags attached to the workspace"> + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-db61c9eb5cab5ae2/relationships/tags +``` + +</CodeBlockConfig> + +### Sample Responses + +<CodeBlockConfig hideClipboard heading="List flat string tags attached to the workspace"> + +```json +{ + "data": [ + { + "id": "tag-1", + "type": "tags", + "attributes": { + "name": "tag1", + "created-at": "2022-03-09T06:04:39.585Z", + "instance-count": 1 + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + }, + { + "id": "tag-2", + "type": "tags", + "attributes": { + "name": "tag2", + "created-at": "2022-03-09T06:04:39.585Z", + "instance-count": 2 + }, + "relationships": { + "organization": { + "data": { + "id": "my-organization", + "type": "organizations" + } + } + } + } + ] +} +``` + +</CodeBlockConfig> + +## List workspace tag bindings + +Call the following endpoints to list the tags attached to a workspace: + +- `GET /workspaces/:workspace_id/tag-bindings`: Lists key-value tags directly bound to the workspace. +- `GET /workspaces/:workspace_id/effective-tag-bindings`: Lists all key-value tags bound to the workspace, including those inherited from the parent project. + +### Path parameters + +| Parameter | Description | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to fetch tags for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +### Sample Requests + +<CodeBlockConfig hideClipboard heading="List key-value tags bound directly to the workspace"> + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-db61c9eb5cab5ae2/tag-bindings +``` + +</CodeBlockConfig> + +<CodeBlockConfig hideClipboard heading="List all key-value tags bound to the workspace, including those inherited from the parent project"> + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/workspaces/ws-db61c9eb5cab5ae2/effective-tag-bindings +``` + +</CodeBlockConfig> + +### Sample Responses + +<CodeBlockConfig hideClipboard heading="List key-value tags bound directly to the workspace"> + +```json +{ + "data": [ + { + "id": "tb-232e23631380f79e", + "type": "tag-bindings", + "attributes": { + "key": "costcenter", + "value": "123", + "created-at": "2024-11-19T23:59:24.648Z" + } + } + ], + "links": { + "target": "/api/v2/workspaces/ws-db61c9eb5cab5ae2" + } +} +``` + +</CodeBlockConfig> +<br/> +<CodeBlockConfig hideClipboard heading="List all key-value tags bound to the workspace, including those inherited from the parent project"> + +```json +{ + "data": [ + { + "id": "07cc44202a430fc2", + "type": "effective-tag-bindings", + "attributes": { + "key": "costcenter", + "value": "123" + } + }, + { + "id": "f8b11951f98e11f8", + "type": "effective-tag-bindings", + "attributes": { + "key": "dept", + "value": "r+d" + }, + "relationships": { + "inherited-from": { + "links": { + "related": "/api/v2/projects/prj-af7d174fa1ea7423" + } + } + } + } + ] +} +``` + +</CodeBlockConfig> + +## Add flat string tags to a workspace + +`POST /workspaces/:workspace_id/relationships/tags` + +To add key-value tags to an existing workspace, call the `PATCH /workspaces/:workspace_id` and provide workspace tag bindings in the JSON payload. Refer to [Update a workspace](#update-a-workspace) for additional information. + +You can also bind key-value tags when creating a workspace. Refer to [Create a workspace](#create-a-workspace) for additional information. + +Refer to [Define project tags](/terraform/enterprise/projects/manage#define-project-tags) for information about supported tag values. + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:workspace_id` | The workspace ID to add tags to. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | Successfully added tags to workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +It is important to note that `type`, as well as one of `id` _or_ `attributes.name` is required. + +| Key path | Type | Default | Description | +| ------------------------ | ------ | ------- | --------------------------- | +| `data[].type` | string | | Must be `"tags"`. | +| `data[].id` | string | | The ID of the tag to add. | +| `data[].attributes.name` | string | | The name of the tag to add. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "tags", + "attributes": { + "name": "foo" + } + }, + { + "type": "tags", + "attributes": { + "name": "bar" + } + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/workspace-2/relationships/tags +``` + +### Sample Response + +No response body. + +Status code `204`. + +## Remove tags from workspace + +This endpoint removes one or more tags from a workspace. The workspace must already exist, and tag +element that supplies an `id` attribute must exist. If the `name` attribute is used, and no matching +organization tag is found, no action will occur for that entry. Tags removed from all workspaces will be +removed from the organization-wide list. + +To remove key-value tags to an existing workspace, call the `PATCH /workspaces/:workspace_id` and provide workspace tag bindings in the JSON payload. Refer to [Update a workspace](#update-a-workspace) for additional information. + +`DELETE /workspaces/:workspace_id/relationships/tags` + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to remove tags from. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or the [Show Workspace](#show-workspace) endpoint. | + +| Status | Response | Reason(s) | +| ------- | ------------------------- | ----------------------------------------------------------- | +| [204][] | No Content | Successfully removed tags to workspace | +| [404][] | [JSON API error object][] | Workspace not found, or user unauthorized to perform action | + +### Request Body + +This POST endpoint requires a JSON object with the following properties as a request payload. + +It is important to note that `type`, as well as one of `id` _or_ `attributes.name` is required. + +| Key path | Type | Default | Description | +| ------------------------ | ------ | ------- | ------------------------------ | +| `data[].type` | string | | Must be `"tags"`. | +| `data[].id` | string | | The ID of the tag to remove. | +| `data[].attributes.name` | string | | The name of the tag to remove. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "tags", + "id": "tag-Yfha4YpPievQ8wJw" + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request DELETE \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/workspace-2/relationships/tags +``` + +### Sample Response + +No response body. + +Status code `204`. + +## Add/update tag-bindings on a workspace + +This endpoint adds keys and values or updates values of tag-bindings on an existing resource by key. +It does not remove any keys from the collection. This endpoint is useful when you want to ensure a +modification is additive. + +Tag bindings have special constraints and behaviors: + +- You can apply up to 10 tags per workspace. +- Workspaces can inherit an additional 10 tags from its project. +- Keys can have up to 128 characters. +- Keys can contain all alphanumeric characters and the symbols `_`, `.`, `=`, `+`, `-`, `@`, `:`. +- values can have up to 256 characters. +- Values can contain all alphanumeric characters and the symbols `_`, `.`, `=`, `+`, `-`, `@`, `:`. +- You cannot use `hc:` and `hcp:` as key prefixes. + +`PATCH /workspaces/:workspace_id/tag-bindings` + +| Parameter | Description | +| --------------- | --------------------------------- | +| `:workspace_id` | The ID of the workspace to update | + +### Request Body + +This PATCH endpoint requires a JSON object with the following properties as a request payload. + +It is important to note that for each data item, `type`, as well as `attributes.key` is required. + +| Key path | Type | Default | Description | +| ------------------------- | ------ | ------- | ---------------------------------- | +| `data[].type` | string | | Must be `"tag-bindings"`. | +| `data[].attributes.key` | string | | The key of the tag to add/update. | +| `data[].attributes.value` | string | | The name of the tag to add/update. | + +### Sample Payload + +```json +{ + "data": [ + { + "type": "tag-bindings", + "attributes": { + "key": "costcenter", + "value": "123" + } + }, + { + "type": "tag-bindings", + "attributes": { + "key": "bar", + "value": "baz" + } + } + ] +} +``` + +### Sample Request + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request PATCH \ + --data @payload.json \ + https://app.terraform.io/api/v2/workspaces/ws-82d2281aa259ba09/tag-bindings +``` + +### Sample Response + +Status Code 200 + +<CodeBlockConfig hideClipboard heading="Response body after updating tag-bindings"> + +```json +{ + "data": [ + { + "id": "tb-e4a5847b2cf06559", + "type": "tag-bindings", + "attributes": { + "key": "costcenter", + "value": "123" + } + }, + { + "id": "tb-97ce954636f93a6c", + "type": "tag-bindings", + "attributes": { + "key": "bar", + "value": "baz" + } + } + ] +} +``` + +</CodeBlockConfig> + +## Show data retention policy + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise and is not available in HCP Terraform. +</EnterpriseAlert> + +`GET /workspaces/:workspace_id/relationships/data-retention-policy` + +| Parameter | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The ID of the workspace to show the data retention policy for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or by sending a `GET` request to the [`/workspaces`](#show-workspace) endpoint. | + +This endpoint shows the data retention policy set explicitly on the workspace. +When no data retention policy is set for the workspace, the endpoint returns the default policy configured for the organization. Refer to [Data Retention Policies](/terraform/enterprise/workspaces/settings/deletion#data-retention-policies) for instructions on configuring data retention policies for workspaces. + +Refer to [Data Retention Policy API](/terraform/enterprise/api-docs/data-retention-policies#show-data-retention-policy) in the Terraform Enterprise documentation for details. + +## Create or update data retention policy + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise and is not available in HCP Terraform. +</EnterpriseAlert> + +`POST /workspaces/:workspace_id/relationships/data-retention-policy` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `:workspace_id` | The workspace ID to update the data retention policy for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or by sending a `GET` request to the [`/workspaces`](#show-workspace) endpoint. | + +This endpoint creates a data retention policy for a workspace or updates the existing policy. +Refer to [Data Retention Policies](/terraform/enterprise/workspaces/settings/deletion#data-retention-policies) for additional information. + +Refer to [Data Retention Policy API](/terraform/enterprise/api-docs/data-retention-policies#create-or-update-data-retention-policy) in the Terraform Enterprise documentation for details. + +## Remove data retention policy + +<EnterpriseAlert> +This endpoint is exclusive to Terraform Enterprise and is not available in HCP Terraform. +</EnterpriseAlert> + +`DELETE /workspaces/:workspace_id/relationships/data-retention-policy` + +| Parameter | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `:workspace_id` | The workspace ID to remove the data retenetion policy for. Obtain this from the [workspace settings](/terraform/enterprise/workspaces/settings) or by sending a `GET` request to the [`/workspaces`](#show-workspace) endpoint. | + +This endpoint removes the data retention policy explicitly set on a workspace. +When no data retention policy is set for the workspace, the endpoint returns the default policy configured for the organization. Refer to [Data Retention Policies](/terraform/enterprise/users-teams-organizations/organizations#destruction-and-deletion) for instructions on configuring data retention policies for organizations. + +Read more about [workspace data retention policies](/terraform/enterprise/workspaces/settings/deletion#data-retention-policies). + +Refer to [Data Retention Policy API](/terraform/enterprise/api-docs/data-retention-policies#remove-data-retention-policy) in the Terraform Enterprise documentation for details. + +## Available Related Resources + +The GET endpoints above can optionally return related resources, if requested with [the `include` query parameter](/terraform/enterprise/api-docs#inclusion-of-related-resources). The following resource types are available: + +- `current_configuration_version` - The last configuration this workspace received, excluding plan-only configurations. Terraform uses this configuration for new runs, unless you provide a different one. +- `current_configuration_version.ingress_attributes` - The commit information for the current configuration version. +- `current_run` - Additional information about the current run. +- `current_run.configuration_version` - The configuration used in the current run. +- `current_run.configuration_version.ingress_attributes` - The commit information used in the current run. +- `current_run.plan` - The plan used in the current run. +- `locked_by` - The user, team, or run responsible for locking the workspace, if the workspace is currently locked. +- `organization` - The full organization record. +- `outputs` - The outputs for the most recently applied run. +- `project` - The full project record. +- `readme` - The most recent workspace README.md. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/architectural-details/data-security.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/architectural-details/data-security.mdx new file mode 100644 index 0000000000..ccdd823720 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/architectural-details/data-security.mdx @@ -0,0 +1,75 @@ +--- +page_title: Data security for Terraform Enterprise +description: >- + Learn about the parts of the Terraform Enterprise application that contain + sensitive data and the storage and encryption methods that HCP Terraform uses + to secure them. +source: terraform-docs-common +--- + +# Data security + +HCP Terraform takes the security of the data it manages +seriously. This table lists which parts of the HCP Terraform and Terraform Enterprise app can contain sensitive data, what storage is used, and what encryption is used. + +### HCP Terraform and Terraform Enterprise + +| Object | Storage | Encrypted | +| :----------------------------------- | :----------- | :----------------------- | +| Terraform Configuration (VCS data) | Blob Storage | Vault Transit Encryption | +| Private Registry Modules | Blob Storage | Vault Transit Encryption | +| Sentinel Policies | PostgreSQL | Vault Transit Encryption | +| Terraform/Environment Variables | PostgreSQL | Vault Transit Encryption | +| Terraform/Provider Credentials | PostgreSQL | Vault Transit Encryption | +| Terraform State File | Blob Storage | Vault Transit Encryption | +| Terraform Plan Result | Blob Storage | Vault Transit Encryption | +| Terraform Audit Trails | PostgreSQL | No | +| Organization/Workspace/Team Settings | PostgreSQL | No | + +### HCP Terraform and Terraform Enterprise Secrets + +| Object | Storage | Encrypted | +| :---------------------------- | :--------- | :----------------------- | +| Account Password | PostgreSQL | bcrypt | +| 2FA Recovery Codes | PostgreSQL | Vault Transit Encryption | +| SSH Keys | PostgreSQL | Vault Transit Encryption | +| User/Team/Organization Tokens | PostgreSQL | HMAC SHA512 | +| OAuth Client ID + Secret | PostgreSQL | Vault Transit Encryption | +| OAuth User Tokens | PostgreSQL | Vault Transit Encryption | + +### HCP Terraform Specific + +| Object | Storage | Encrypted | +| :--------------------------- | :-------- | :-------- | +| Cloud Data Backups | Amazon S3 | SSE-S3 | +| Cloud Copy of Backups for DR | Amazon S3 | SSE-S3 | + +Please see HashiCorp Cloud [subprocessors](https://www.hashicorp.com/trust/privacy/subprocessors) for third-parties engaged by HashiCorp to deliver cloud services. + +### Terraform Enterprise Specific + +| Object | Storage | Encrypted | +| :--------------------------- | :--------- | :----------------------- | +| Twilio Account Configuration | PostgreSQL | Vault Transit Encryption | +| SMTP Configuration | PostgreSQL | Vault Transit Encryption | +| SAML Configuration | PostgreSQL | Vault Transit Encryption | +| Vault Unseal Key | PostgreSQL | ChaCha20+Poly1305 | + +## Vault Transit Encryption + +The [Vault Transit Secret Engine](/vault/docs/secrets/transit) +handles encryption for data in-transit and is used when encrypting data from the +application to persistent storage. + +## Blob Storage Encryption + +All objects persisted to blob storage are symmetrically encrypted prior to being +written. Each object is encrypted with a unique encryption key. Objects are +encrypted using 128 bit AES in CTR mode. The key material is processed +through the [Vault transit secret engine](/vault/docs/secrets/transit), +which uses the default transit encryption cipher (AES-GCM with a 256-bit AES key +and a 96-bit nonce), and stored alongside the object. This pattern is called envelope encryption. + +The Vault transit secret engine's +[datakey generation](/vault/api-docs/secret/transit#generate-data-key) creates the encryption key material using bit material from the kernel's cryptographically secure pseudo-random +number generator (CSPRNG) as the `context` value. Blob storage encryption generates a unique key for each object and relies on envelope encryption, so Vault does not rotate the encryption key material for individual objects. The root encryption keys within the envelope encryption scheme are rotated automatically by HCP Terraform every 365 days. These keys are not automatically rotated within TFE. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/aws.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/aws.mdx new file mode 100644 index 0000000000..f777c0c65e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/aws.mdx @@ -0,0 +1,158 @@ +--- +page_title: AWS resources included in cost estimation in Terraform Enterprise +description: Learn which AWS resources Terraform Enterprise includes in cost estimation. +source: terraform-docs-common +--- + +# AWS resources included in cost estimation + +HCP Terraform can estimate monthly costs for many AWS Terraform resources. + +-> **Note:** Terraform Enterprise requires AWS credentials to support cost estimation. These credentials are configured at the instance level, not the organization level. See the [Application Administration docs](/terraform/enterprise/admin/application/integration) for more details. + +## Supported Resources + +Cost estimation supports the following resources. Not all possible values for attributes of each resource are supported, ex. newer instance types or EBS volume types. + +| Resource | Incurs Cost | +| ------------------------------------------- | ----------- | +| `aws_alb` | X | +| `aws_autoscaling_group` | X | +| `aws_cloudhsm_v2_hsm` | X | +| `aws_cloudwatch_dashboard` | X | +| `aws_cloudwatch_metric_alarm` | X | +| `aws_db_instance` | X | +| `aws_dynamodb_table` | X | +| `aws_ebs_volume` | X | +| `aws_elasticache_cluster` | X | +| `aws_elasticsearch_domain` | X | +| `aws_elb` | X | +| `aws_instance` | X | +| `aws_kms_key` | X | +| `aws_lb` | X | +| `aws_rds_cluster_instance` | X | +| `aws_acm_certificate_validation` | | +| `aws_alb_listener` | | +| `aws_alb_listener_rule` | | +| `aws_alb_target_group` | | +| `aws_alb_target_group_attachment` | | +| `aws_api_gateway_api_key` | | +| `aws_api_gateway_deployment` | | +| `aws_api_gateway_integration` | | +| `aws_api_gateway_integration_response` | | +| `aws_api_gateway_method` | | +| `aws_api_gateway_method_response` | | +| `aws_api_gateway_resource` | | +| `aws_api_gateway_usage_plan_key` | | +| `aws_appautoscaling_policy` | | +| `aws_appautoscaling_target` | | +| `aws_autoscaling_lifecycle_hook` | | +| `aws_autoscaling_policy` | | +| `aws_cloudformation_stack` | | +| `aws_cloudfront_distribution` | | +| `aws_cloudfront_origin_access_identity` | | +| `aws_cloudwatch_event_rule` | | +| `aws_cloudwatch_event_target` | | +| `aws_cloudwatch_log_group` | | +| `aws_cloudwatch_log_metric_filter` | | +| `aws_cloudwatch_log_stream` | | +| `aws_cloudwatch_log_subscription_filter` | | +| `aws_codebuild_webhook` | | +| `aws_codedeploy_deployment_group` | | +| `aws_cognito_identity_provider` | | +| `aws_cognito_user_pool` | | +| `aws_cognito_user_pool_client` | | +| `aws_cognito_user_pool_domain` | | +| `aws_config_config_rule` | | +| `aws_customer_gateway` | | +| `aws_db_parameter_group` | | +| `aws_db_subnet_group` | | +| `aws_dynamodb_table_item` | | +| `aws_ecr_lifecycle_policy` | | +| `aws_ecr_repository_policy` | | +| `aws_ecs_cluster` | | +| `aws_ecs_task_definition` | | +| `aws_efs_mount_target` | | +| `aws_eip_association` | | +| `aws_elastic_beanstalk_application` | | +| `aws_elastic_beanstalk_application_version` | | +| `aws_elastic_beanstalk_environment` | | +| `aws_elasticache_parameter_group` | | +| `aws_elasticache_subnet_group` | | +| `aws_flow_log` | | +| `aws_iam_access_key` | | +| `aws_iam_account_alias` | | +| `aws_iam_account_password_policy` | | +| `aws_iam_group` | | +| `aws_iam_group_membership` | | +| `aws_iam_group_policy` | | +| `aws_iam_group_policy_attachment` | | +| `aws_iam_instance_profile` | | +| `aws_iam_policy` | | +| `aws_iam_policy_attachment` | | +| `aws_iam_role` | | +| `aws_iam_role_policy` | | +| `aws_iam_role_policy_attachment` | | +| `aws_iam_saml_provider` | | +| `aws_iam_service_linked_role` | | +| `aws_iam_user` | | +| `aws_iam_user_group_membership` | | +| `aws_iam_user_login_profile` | | +| `aws_iam_user_policy` | | +| `aws_iam_user_policy_attachment` | | +| `aws_iam_user_ssh_key` | | +| `aws_internet_gateway` | | +| `aws_key_pair` | | +| `aws_kms_alias` | | +| `aws_lambda_alias` | | +| `aws_lambda_event_source_mapping` | | +| `aws_lambda_function` | | +| `aws_lambda_layer_version` | | +| `aws_lambda_permission` | | +| `aws_launch_configuration` | | +| `aws_lb_listener` | | +| `aws_lb_listener_rule` | | +| `aws_lb_target_group` | | +| `aws_lb_target_group_attachment` | | +| `aws_network_acl` | | +| `aws_network_acl_rule` | | +| `aws_network_interface` | | +| `aws_placement_group` | | +| `aws_rds_cluster_parameter_group` | | +| `aws_route` | | +| `aws_route53_record` | | +| `aws_route53_zone_association` | | +| `aws_route_table` | | +| `aws_route_table_association` | | +| `aws_s3_bucket` | | +| `aws_s3_bucket_notification` | | +| `aws_s3_bucket_object` | | +| `aws_s3_bucket_policy` | | +| `aws_s3_bucket_public_access_block` | | +| `aws_security_group` | | +| `aws_security_group_rule` | | +| `aws_service_discovery_service` | | +| `aws_sfn_state_machine` | | +| `aws_sns_topic` | | +| `aws_sns_topic_subscription` | | +| `aws_sqs_queue` | | +| `aws_sqs_queue_policy` | | +| `aws_ssm_maintenance_window` | | +| `aws_ssm_maintenance_window_target` | | +| `aws_ssm_maintenance_window_task` | | +| `aws_ssm_parameter` | | +| `aws_subnet` | | +| `aws_volume_attachment` | | +| `aws_vpc` | | +| `aws_vpc_dhcp_options` | | +| `aws_vpc_dhcp_options_association` | | +| `aws_vpc_endpoint` | | +| `aws_vpc_endpoint_route_table_association` | | +| `aws_vpc_endpoint_service` | | +| `aws_vpc_ipv4_cidr_block_association` | | +| `aws_vpc_peering_connection_accepter` | | +| `aws_vpc_peering_connection_options` | | +| `aws_vpn_connection_route` | | +| `aws_waf_ipset` | | +| `aws_waf_rule` | | +| `aws_waf_web_acl` | | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/azure.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/azure.mdx new file mode 100644 index 0000000000..5647698512 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/azure.mdx @@ -0,0 +1,56 @@ +--- +page_title: Azure resources included in cost estimation in Terraform Enterprise +description: Learn which Azure resources Terraform Enterprise includes in cost estimation. +source: terraform-docs-common +--- + +# Azure resources included in cost estimation + +HCP Terraform can estimate monthly costs for many Azure Terraform resources. + +-> **Note:** Terraform Enterprise requires Azure credentials to support cost estimation. These credentials are configured at the instance level, not the organization level. See the [Application Administration docs](/terraform/enterprise/admin/application/integration) for more details. + +## Supported Resources + +Cost estimation supports the following resources. Not all possible values for attributes of each resource are supported, ex. newer VM sizes or managed disk types. + +| Resource | Incurs Cost | +| ------------------------------------------------------ | ----------- | +| `azurerm_app_service_custom_hostname_binding` | X | +| `azurerm_app_service_environment` | X | +| `azurerm_app_service_plan` | X | +| `azurerm_app_service_virtual_network_swift_connection` | X | +| `azurerm_cosmosdb_sql_database` | X | +| `azurerm_databricks_workspace` | X | +| `azurerm_firewall` | X | +| `azurerm_hdinsight_hadoop_cluster` | X | +| `azurerm_hdinsight_hbase_cluster` | X | +| `azurerm_hdinsight_interactive_query_cluster` | X | +| `azurerm_hdinsight_kafka_cluster` | X | +| `azurerm_hdinsight_spark_cluster` | X | +| `azurerm_integration_service_environment` | X | +| `azurerm_linux_virtual_machine` | X | +| `azurerm_linux_virtual_machine_scale_set` | X | +| `azurerm_managed_disk` | X | +| `azurerm_mariadb_server` | X | +| `azurerm_mssql_elasticpool` | X | +| `azurerm_mysql_server` | X | +| `azurerm_postgresql_server` | X | +| `azurerm_sql_database` | X | +| `azurerm_virtual_machine` | X | +| `azurerm_virtual_machine_scale_set` | X | +| `azurerm_windows_virtual_machine` | X | +| `azurerm_windows_virtual_machine_scale_set` | X | +| `azurerm_app_service` | | +| `azurerm_cosmosdb_account` | | +| `azurerm_cosmosdb_sql_container` | | +| `azurerm_cosmosdb_table` | | +| `azurerm_mysql_database` | | +| `azurerm_network_security_group` | | +| `azurerm_postgresql_database` | | +| `azurerm_resource_group` | | +| `azurerm_sql_server` | | +| `azurerm_sql_virtual_network_rule` | | +| `azurerm_subnet` | | +| `azurerm_subnet_route_table_association` | | +| `azurerm_virtual_network` | | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/gcp.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/gcp.mdx new file mode 100644 index 0000000000..e1660de815 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/gcp.mdx @@ -0,0 +1,42 @@ +--- +page_title: GCP resources included in cost estimation in Terraform Enterprise +description: Learn which GCP resources Terraform Enterprise includes in cost estimation. +source: terraform-docs-common +--- + +# GCP resources included in cost estimation + +HCP Terraform can estimate monthly costs for many GCP Terraform resources. + +-> **Note:** Terraform Enterprise requires GCP credentials to support cost estimation. These credentials are configured at the instance level, not the organization level. See the [Application Administration docs](/terraform/enterprise/admin/application/integration) for more details. + +## Supported Resources + +Cost estimation supports the following resources. Not all possible values for attributes of each resource are supported, ex. new or custom machine types. + +| Resource | Incurs Cost | +| --------------------------------------- | ----------- | +| `google_compute_disk` | X | +| `google_compute_instance` | X | +| `google_sql_database_instance` | X | +| `google_billing_account_iam_member` | | +| `google_compute_address` | | +| `google_compute_subnetwork_iam_member` | | +| `google_folder_iam_member` | | +| `google_folder_iam_policy` | | +| `google_kms_crypto_key_iam_member` | | +| `google_kms_key_ring_iam_member` | | +| `google_kms_key_ring_iam_policy` | | +| `google_organization_iam_member` | | +| `google_project` | | +| `google_project_iam_member` | | +| `google_project_iam_policy` | | +| `google_project_service` | | +| `google_pubsub_subscription_iam_member` | | +| `google_pubsub_subscription_iam_policy` | | +| `google_pubsub_topic_iam_member` | | +| `google_service_account` | | +| `google_service_account_iam_member` | | +| `google_service_account_key` | | +| `google_storage_bucket_iam_member` | | +| `google_storage_bucket_iam_policy` | | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/index.mdx new file mode 100644 index 0000000000..d81c7e6c17 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/cost-estimation/index.mdx @@ -0,0 +1,58 @@ +--- +page_title: Cost estimation overview for Terraform Enterprise +description: >- + Terraform Enterprise can estimate the total cost and delta of resources from + your Terraform configuration. Use cost estimation to get hourly and monthly + cost estimates for each resource. +source: terraform-docs-common +--- + +# Cost estimation overview + +> **Hands-on:** Try the [Control Costs with Policies](/terraform/tutorials/cloud-get-started/cost-estimation) tutorial to practice enabling cost estimation and define a policy to check the total monthly delta. + +HCP Terraform provides cost estimates for many resources found in your Terraform configuration. For each resource an hourly and monthly cost is shown, along with the monthly delta. The total cost and delta of all estimable resources is also shown. + +## Enabling Cost Estimation + +HCP Terraform disables cost estimation by default. To enable cost estimation: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise, then navigate to the organization where you want to enable cost estimation. +2. Choose **Settings** from the sidebar, then **Cost Estimation**. +3. Toggle the **Enable cost estimation for all workspaces** setting. +4. Click **Update settings**. + +## Viewing a Cost Estimate + +When enabled, HCP Terraform performs a cost estimate for every run. Estimated costs appear in the run UI as an extra run phase, between the plan and apply. + +The estimate displays a total monthly cost by default; you can expand the estimate to see an itemized list of resource costs, as well as the list of unestimated resources. + +Note that this is just an estimate; some resources don't have cost information available or have unpredictable usage-based pricing. Supported resources are listed in this document's sub-pages. + +## Verifying Costs in Policies + +You can use a Sentinel policy to validate your configuration's cost estimates using the [`tfrun`](/terraform/enterprise/policy-enforcement/import-reference/tfrun) import. The example policy below checks that the new cost delta is no more than $100. A new `t3.nano` instance should be well below that. A `decimal` import is available for more accurate math when working with currency numbers. + +```python +import "tfrun" +import "decimal" + +delta_monthly_cost = decimal.new(tfrun.cost_estimate.delta_monthly_cost) + +if delta_monthly_cost.greater_than(100) { + print("This policy prevents a user from increasing their spending by more than $100 per month in a single run without a warning.") +} + +main = rule { + delta_monthly_cost.less_than(100) +} +``` + +## Supported Resources + +Cost estimation in HCP Terraform supports Terraform resources within three major cloud providers. + +- [AWS](/terraform/enterprise/cost-estimation/aws) +- [GCP](/terraform/enterprise/cost-estimation/gcp) +- [Azure](/terraform/enterprise/cost-estimation/azure) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/aws-service-catalog/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/aws-service-catalog/index.mdx new file mode 100644 index 0000000000..e06a14e929 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/aws-service-catalog/index.mdx @@ -0,0 +1,27 @@ +--- +page_title: Terraform Enterprise for AWS Service Catalog overview +description: >- + Terraform Enterprise for AWS Service Catalog lets you provision infrastructure + with HCP Terraform inside AWS Service Catalog. +source: terraform-docs-common +--- + +# HCP Terraform for AWS Service Catalog overview + +This integration allows administrators to curate a portfolio of pre-approved Terraform configurations on AWS Service Catalog. This enables end users like engineers, database administrators, and data scientists to deploy these Terraform configurations with a single action from the AWS interface. By combining HCP Terraform with AWS Service Catalog, we’re combining a self-service interface that many customers are familiar with, AWS Service Catalog, with the existing workflows and policy guardrails of HCP Terraform. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/aws-service-catalog.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Installation & Configuration + +To start using this integration, you'll need to install the [AWS Service Catalog Engine for Terraform Cloud](https://github.com/hashicorp/aws-service-catalog-engine-for-tfc) provided by HashiCorp on GitHub by following the [setup instructions](https://github.com/hashicorp/aws-service-catalog-engine-for-tfc#getting-started) provided in the README. If you run into any setup troubles along the way, the README also includes [troubleshooting steps](https://github.com/hashicorp/aws-service-catalog-engine-for-tfc#troubleshooting) that should help resolve common issues that you may encounter. + +With the engine installed, the necessary code and infrastructure to integrate the HCP Terraform engine with AWS Service Catalog will automatically be configured. The setup can be completed in just a few minutes, and it only needs to be done once. Once the setup is complete, you can immediately start using AWS Service Catalog to develop and manage AWS Service Catalog products, and make them accessible to your end users across all your accounts. + +## Usage + +You can access this new feature through the AWS Service Catalog console in any AWS regions where AWS Service Catalog is supported and follow the AWS Service Catalog Administrator Guide to [create your first Terraform product](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-product-Terraform.html). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/index.mdx new file mode 100644 index 0000000000..dc8851bfba --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/index.mdx @@ -0,0 +1,26 @@ +--- +page_title: Integrations overview for Terraform Enterprise +description: >- + Use Terraform Enterprise integrations to connect HCP Terraform with + third-party platforms and systems. +source: terraform-docs-common +--- + +# Overview + +The HCP Terraform ecosystem features a variety of integrations to let HCP +Terraform connect with third-party systems and platforms. The following list +contains HashiCorp's official HCP Terraform integrations, which use HCP +Terraform's native APIs: + +- The [HCP Terraform Operator for Kubernetes](/terraform/enterprise/integrations/kubernetes) integration can manage HCP Terraform resources with Kubernetes custom resources. +- The [ServiceNow Service Catalog for Terraform](/terraform/enterprise/integrations/service-now/service-catalog-terraform) lets you provision self-serve infrastructure using ServiceNow. +- The [ServiceNow Service Graph Connector for Terraform](/terraform/enterprise/integrations/service-now/service-graph) integration lets you securely import HCP Terraform resources into your ServiceNow instance. +- The [HCP Terraform for Splunk](/terraform/enterprise/integrations/splunk) integration lets you pull HCP Terraform logs into Splunk. +- The [HCP Terraform for AWS Service Catalog](/terraform/enterprise/integrations/aws-service-catalog) integration lets you create pre-approved Terraform configurations on the AWS Service Catalog. + +If the platform you want to integrate HCP Terraform with does not have an +official integration, you can build a custom run task to integrate with a tool +of your choice. Run tasks can access plan details, display custom messages in +the run pipeline, and prevent runs from applying. Learn more about [Run +tasks](/terraform/enterprise/integrations/run-tasks). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/annotations-and-labels.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/annotations-and-labels.mdx new file mode 100644 index 0000000000..e38bdb08c1 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/annotations-and-labels.mdx @@ -0,0 +1,26 @@ +--- +page_title: Terraform Enterprise Operator for Kubernetes annotations and labels +description: >- + Use annotations and labels with the Terraform Enterprise Operator for + Kubernetes to manage Terraform runs. +source: terraform-docs-common +--- + +# HCP Terraform Operator for Kubernetes annotations and labels + +This topic contains reference information about the annotations and labels the HCP Terraform and Terraform Enterprise operators use for Kubernetes. + +## Annotations + +| Annotation key | Target resources | Possible values | Description | +| -------------------------------------------------- | ---------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace.app.terraform.io/run-new` | Workspace | `"true"` | Set this annotation to `"true"` to trigger a new run. Example: `kubectl annotate workspace <WORKSPACE-NAME> workspace.app.terraform.io/run-new="true"`. | +| `workspace.app.terraform.io/run-type` | Workspace | `plan`, `apply`, `refresh` | Specifies the run type. Changing this annotation does not start a new run. Refer to [Run Modes and Options](/terraform/enterprise/run/modes-and-options) for more information. Defaults to `"plan"`. | +| `workspace.app.terraform.io/run-terraform-version` | Workspace | Any valid Terraform version | Specifies the Terraform version to use. Changing this annotation does not start a new run. Only valid when the annotation `workspace.app.terraform.io/run-type` is set to `plan`. Defaults to the Workspace version. | + +## Labels + +| Label key | Target resources | Possible values | Description | +| -------------------------------------- | ---------------- | ------------------------ | ------------------------------------------------------------------------------------------- | +| `agentpool.app.terraform.io/pool-name` | Pod[Agent] | Any valid AgentPool name | Associate the resource with a specific agent pool by specifying the name of the agent pool. | +| `agentpool.app.terraform.io/pool-id` | Pod[Agent] | Any valid AgentPool ID | Associate the resource with a specific agent pool by specifying the ID of the agent pool. | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/api-reference.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/api-reference.mdx new file mode 100644 index 0000000000..1c1be52818 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/api-reference.mdx @@ -0,0 +1,796 @@ +--- +page_title: Terraform Enterprise Operator for Kubernetes API reference +description: >- + Use the Terraform Enterprise Operator for Kubernetes API to manage HCP + Terraform workspaces, modules, and agent pools. +source: terraform-docs-common +--- + +# HCP Terraform Operator for Kubernetes API reference + +## Packages + +- [app.terraform.io/v1alpha2](#appterraformiov1alpha2) + +## app.terraform.io/v1alpha2 + +Package v1alpha2 contains API Schema definitions for the app v1alpha2 API group. + +### Resource Types + +- [AgentPool](#agentpool) +- [Module](#module) +- [Project](#project) +- [Workspace](#workspace) + +#### AgentDeployment + +_Appears in:_ + +- [AgentPoolSpec](#agentpoolspec) + +| Field | Description | +| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `replicas` _integer_ | | +| `spec` _[PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podspec-v1-core)_ | | +| `annotations` _object (keys:string, values:string)_ | The annotations that the operator will apply to the pod template in the deployment. | +| `labels` _object (keys:string, values:string)_ | The labels that the operator will apply to the pod template in the deployment. | + +#### AgentDeploymentAutoscaling + +AgentDeploymentAutoscaling allows you to configure the operator to scale the deployment for an AgentPool up and down to meet demand. + +_Appears in:_ + +- [AgentPoolSpec](#agentpoolspec) + +| Field | Description | +| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `maxReplicas` _integer_ | MaxReplicas is the maximum number of replicas for the Agent deployment. | +| `minReplicas` _integer_ | MinReplicas is the minimum number of replicas for the Agent deployment. | +| `targetWorkspaces` _[TargetWorkspace](#targetworkspace)_ | TargetWorkspaces is a list of HCP Terraform Workspaces which the agent pool should scale up to meet demand. When this field is omitted the autoscaler will target all workspaces that are associated with the AgentPool. | +| `cooldownPeriodSeconds` _integer_ | CooldownPeriodSeconds is the time to wait between scaling events. Defaults to 300. | +| `cooldownPeriod` _[AgentDeploymentAutoscalingCooldownPeriod](#agentdeploymentautoscalingcooldownperiod)_ | CoolDownPeriod configures the period to wait between scaling up and scaling down | + +#### AgentDeploymentAutoscalingCooldownPeriod + +AgentDeploymentAutoscalingCooldownPeriod configures the period to wait between scaling up and scaling down, + +_Appears in:_ + +- [AgentDeploymentAutoscaling](#agentdeploymentautoscaling) + +| Field | Description | +| ---------------------------- | --------------------------------------------------------- | +| `scaleUpSeconds` _integer_ | ScaleUpSeconds is the time to wait before scaling up. | +| `scaleDownSeconds` _integer_ | ScaleDownSeconds is the time to wait before scaling down. | + +#### AgentDeploymentAutoscalingStatus + +AgentDeploymentAutoscalingStatus + +_Appears in:_ + +- [AgentPoolStatus](#agentpoolstatus) + +| Field | Description | +| -------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| `desiredReplicas` _integer_ | Desired number of agent replicas | +| `lastScalingEvent` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#time-v1-meta)_ | Last time the agent pool was scaled | + +#### AgentPool + +AgentPool manages HCP Terraform Agent Pools, HCP Terraform Agent Tokens and can perform HCP Terraform Agent scaling. + +More information: + +- [Manage agent pools](/terraform/cloud-docs/agents/agent-pools) +- [Agent API tokens](/terraform/enterprise/users-teams-organizations/api-tokens#agent-api-tokens) +- [HCP Terraform agents](/terraform/cloud-docs/agents) + +| Field | Description | +| ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiVersion` _string_ | `app.terraform.io/v1alpha2` | +| `kind` _string_ | `AgentPool` | +| `kind` _string_ | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) | +| `apiVersion` _string_ | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources) | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | +| `spec` _[AgentPoolSpec](#agentpoolspec)_ | | + +#### AgentPoolSpec + +AgentPoolSpec defines the desired state of AgentPool. + +_Appears in:_ + +- [AgentPool](#agentpool) + +| Field | Description | +| ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `name` _string_ | Agent Pool name. [More information](/terraform/cloud-docs/agents/agent-pools). | +| `organization` _string_ | Organization name where the Workspace will be created. [More information](/terraform/enterprise/users-teams-organizations/organizations). | +| `token` _[Token](#token)_ | API Token to be used for API calls. | +| `agentTokens` _[AgentToken](#agenttoken) array_ | List of the agent tokens to generate. | +| `agentDeployment` _[AgentDeployment](#agentdeployment)_ | Agent deployment settings | +| `autoscaling` _[AgentDeploymentAutoscaling](#agentdeploymentautoscaling)_ | Agent deployment settings | + +#### AgentToken + +Agent Token is a secret token that a HCP Terraform Agent is used to connect to the HCP Terraform Agent Pool. In `spec` only the field `Name` is allowed, the rest are used in `status`. + +More information: + +- [HCP Terraform agents](/terraform/cloud-docs/agents) + +_Appears in:_ + +- [AgentPoolSpec](#agentpoolspec) +- [AgentPoolStatus](#agentpoolstatus) + +| Field | Description | +| ---------------------- | ------------------------------------------------ | +| `name` _string_ | Agent Token name. | +| `id` _string_ | Agent Token ID. | +| `createdAt` _integer_ | Timestamp of when the agent token was created. | +| `lastUsedAt` _integer_ | Timestamp of when the agent token was last used. | + +#### ConfigurationVersionStatus + +A configuration version is a resource used to reference the uploaded configuration files. + +More information: + +- [Configuration versions API reference](/terraform/enterprise/api-docs/configuration-versions) +- [The API-driven run workflow](/terraform/enterprise/run/api) + +_Appears in:_ + +- [ModuleStatus](#modulestatus) + +| Field | Description | +| ------------- | ------------------------- | +| `id` _string_ | Configuration Version ID. | + +#### ConsumerWorkspace + +ConsumerWorkspace allows access to the state for specific workspaces within the same organization. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [Remote state access controls](/terraform/enterprise/workspaces/state#remote-state-access-controls) + +_Appears in:_ + +- [RemoteStateSharing](#remotestatesharing) + +| Field | Description | +| --------------- | -------------------------------------------------------------- | +| `id` _string_ | Consumer Workspace ID. Must match pattern: `^ws-[a-zA-Z0-9]+$` | +| `name` _string_ | Consumer Workspace name. | + +#### CustomPermissions + +Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. + +More information: + +- [Custom workspace permissions](/terraform/enterprise/users-teams-organizations/permissions#custom-workspace-permissions) + +_Appears in:_ + +- [TeamAccess](#teamaccess) + +| Field | Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------ | +| `runs` _string_ | Run access. Must be one of the following values: `apply`, `plan`, `read`. Default: `read`. | +| `runTasks` _boolean_ | Manage Workspace Run Tasks. Default: `false`. | +| `sentinel` _string_ | Download Sentinel mocks. Must be one of the following values: `none`, `read`. Default: `none`. | +| `stateVersions` _string_ | State access. Must be one of the following values: `none`, `read`, `read-outputs`, `write`. Default: `none`. | +| `variables` _string_ | Variable access. Must be one of the following values: `none`, `read`, `write`. Default: `none`. | +| `workspaceLocking` _boolean_ | Lock/unlock workspace. Default: `false`. | + +#### CustomProjectPermissions + +Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. + +More information: + +- [Custom project permissions](/terraform/enterprise/users-teams-organizations/permissions#custom-project-permissions) +- [General workspace permissions](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) + +_Appears in:_ + +- [ProjectTeamAccess](#projectteamaccess) + +| Field | Description | +| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `projectAccess` _[ProjectSettingsPermissionType](#projectsettingspermissiontype)_ | Project access. Must be one of the following values: `delete`, `read`, `update`. Default: `read`. | +| `teamManagement` _[ProjectTeamsPermissionType](#projectteamspermissiontype)_ | Team management. Must be one of the following values: `manage`, `none`, `read`. Default: `none`. | +| `createWorkspace` _boolean_ | Allow users to create workspaces in the project. This grants read access to all workspaces in the project. Default: `false`. | +| `deleteWorkspace` _boolean_ | Allows users to delete workspaces in the project. Default: `false`. | +| `moveWorkspace` _boolean_ | Allows users to move workspaces out of the project. A user must have this permission on both the source and destination project to successfully move a workspace from one project to another. Default: `false`. | +| `lockWorkspace` _boolean_ | Allows users to manually lock the workspace to temporarily prevent runs. When a workspace's execution mode is set to "local", users must have this permission to perform local CLI runs using the workspace's state. Default: `false`. | +| `runs` _[WorkspaceRunsPermissionType](#workspacerunspermissiontype)_ | Run access. Must be one of the following values: `apply`, `plan`, `read`. Default: `read`. | +| `runTasks` _boolean_ | Manage Workspace Run Tasks. Default: `false`. | +| `sentinelMocks` _[WorkspaceSentinelMocksPermissionType](#workspacesentinelmockspermissiontype)_ | Download Sentinel mocks. Must be one of the following values: `none`, `read`. Default: `none`. | +| `stateVersions` _[WorkspaceStateVersionsPermissionType](#workspacestateversionspermissiontype)_ | State access. Must be one of the following values: `none`, `read`, `read-outputs`, `write`. Default: `none`. | +| `variables` _[WorkspaceVariablesPermissionType](#workspacevariablespermissiontype)_ | Variable access. Must be one of the following values: `none`, `read`, `write`. Default: `none`. | + +#### DeletionPolicy + +_Underlying type:_ _string_ + +DeletionPolicy defines the strategy the Kubernetes operator uses when you delete a resource, either manually or by a system event. + +You must use one of the following values: + +- `retain`: When you delete the custom resource, the operator does not delete the workspace. +- `soft`: Attempts to delete the associated workspace only if it does not contain any managed resources. +- `destroy`: Executes a destroy operation to remove all resources managed by the associated workspace. Once the destruction of these resources is successful, the operator deletes the workspace, and then deletes the custom resource. +- `force`: Forcefully and immediately deletes the workspace and the custom resource. + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +#### Module + +Module implements API-driven Run Workflows. + +More information: + +- [The API-driven run workflow](/terraform/enterprise/run/api) + +| Field | Description | +| ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiVersion` _string_ | `app.terraform.io/v1alpha2` | +| `kind` _string_ | `Module` | +| `kind` _string_ | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) | +| `apiVersion` _string_ | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources) | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | +| `spec` _[ModuleSpec](#modulespec)_ | | + +#### ModuleOutput + +Module outputs to store in ConfigMap(non-sensitive) or Secret(sensitive). + +_Appears in:_ + +- [ModuleSpec](#modulespec) + +| Field | Description | +| --------------------- | ----------------------------------------------------------------- | +| `name` _string_ | Output name must match with the module output. | +| `sensitive` _boolean_ | Specify whether or not the output is sensitive. Default: `false`. | + +#### ModuleSource + +Module source and version to execute. + +_Appears in:_ + +- [ModuleSpec](#modulespec) + +| Field | Description | +| ------------------ | ------------------------------------------------------------------------------------------- | +| `source` _string_ | Non local Terraform module source. [More information](/terraform/language/modules/sources). | +| `version` _string_ | Terraform module version. | + +#### ModuleSpec + +ModuleSpec defines the desired state of Module. + +_Appears in:_ + +- [Module](#module) + +| Field | Description | +| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization` _string_ | Organization name where the Workspace will be created. [More information](/terraform/enterprise/users-teams-organizations/organizations). | +| `token` _[Token](#token)_ | API Token to be used for API calls. | +| `module` _[ModuleSource](#modulesource)_ | Module source and version to execute. | +| `workspace` _[ModuleWorkspace](#moduleworkspace)_ | Workspace to execute the module. | +| `name` _string_ | Name of the module that will be uploaded and executed. Default: `this`. | +| `variables` _[ModuleVariable](#modulevariable) array_ | Variables to pass to the module, they must exist in the Workspace. | +| `outputs` _[ModuleOutput](#moduleoutput) array_ | Module outputs to store in ConfigMap(non-sensitive) or Secret(sensitive). | +| `destroyOnDeletion` _boolean_ | Specify whether or not to execute a Destroy run when the object is deleted from the Kubernetes. Default: `false`. | +| `restartedAt` _string_ | Allows executing a new Run without changing any Workspace or Module attributes. Example: ``kubectl patch KIND NAME --type=merge --patch '{"spec": \{"restartedAt": "'\`date -u -Iseconds\`'"\}\}'`` | + +#### ModuleVariable + +Variables to pass to the module. + +_Appears in:_ + +- [ModuleSpec](#modulespec) + +| Field | Description | +| --------------- | ------------------------------------------ | +| `name` _string_ | Variable name must exist in the Workspace. | + +#### ModuleWorkspace + +Workspace to execute the module. Only one of the fields `ID` or `Name` is allowed. At least one of the fields `ID` or `Name` is mandatory. + +_Appears in:_ + +- [ModuleSpec](#modulespec) + +| Field | Description | +| --------------- | ------------------------------------------------------------ | +| `id` _string_ | Module Workspace ID. Must match pattern: `^ws-[a-zA-Z0-9]+$` | +| `name` _string_ | Module Workspace Name. | + +#### Notification + +Notifications allow you to send messages to other applications based on run and workspace events. + +More information: + +- [Workspace notifications](/terraform/enterprise/workspaces/settings/notifications) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` _string_ | Notification name. | +| `type` _[NotificationDestinationType](#notificationdestinationtype)_ | The type of the notification. Must be one of the following values: `email`, `generic`, `microsoft-teams`, `slack`. | +| `enabled` _boolean_ | Whether the notification configuration should be enabled or not. Default: `true`. | +| `token` _string_ | The token of the notification. | +| `triggers` _[NotificationTrigger](#notificationtrigger) array_ | The list of run events that will trigger notifications. Trigger represents the different TFC notifications that can be sent as a run's progress transitions between different states. There are two categories of triggers: - Health Events: `assessment:check_failure`, `assessment:drifted`, `assessment:failed`. - Run Events: `run:applying`, `run:completed`, `run:created`, `run:errored`, `run:needs_attention`, `run:planning`. | +| `url` _string_ | The URL of the notification. Must match pattern: `^https?://.*` | +| `emailAddresses` _string array_ | The list of email addresses that will receive notification emails. It is only available for Terraform Enterprise users. It is not available in HCP Terraform. | +| `emailUsers` _string array_ | The list of users belonging to the organization that will receive notification emails. | + +#### NotificationTrigger + +_Underlying type:_ _string_ + +NotificationTrigger represents the different TFC notifications that can be sent as a run's progress transitions between different states. This must be aligned with go-tfe type `NotificationTriggerType`. + +Must be one of the following values: `run:applying`, `assessment:check_failure`, `run:completed`, `run:created`, `assessment:drifted`, `run:errored`, `assessment:failed`, `run:needs_attention`, `run:planning`. + +_Appears in:_ + +- [Notification](#notification) + +#### OutputStatus + +Outputs status. + +_Appears in:_ + +- [ModuleStatus](#modulestatus) + +| Field | Description | +| ---------------- | -------------------------------------------------- | +| `runID` _string_ | Run ID of the latest run that updated the outputs. | + +#### PlanStatus + +_Appears in:_ + +- [WorkspaceStatus](#workspacestatus) + +| Field | Description | +| --------------------------- | ------------------------------------------------------- | +| `id` _string_ | Latest plan-only/speculative plan HCP Terraform run ID. | +| `terraformVersion` _string_ | The version of Terraform to use for this run. | + +#### Project + +Project manages HCP Terraform Projects. + +More information: + +- [Manage projects](/terraform/enterprise/projects/manage) + +| Field | Description | +| ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiVersion` _string_ | `app.terraform.io/v1alpha2` | +| `kind` _string_ | `Project` | +| `kind` _string_ | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) | +| `apiVersion` _string_ | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources) | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | +| `spec` _[ProjectSpec](#projectspec)_ | | + +#### ProjectSpec + +ProjectSpec defines the desired state of Project. + +More information: + +- [Manage projects](/terraform/enterprise/workspaces/organize-workspaces-with-projects) + +_Appears in:_ + +- [Project](#project) + +| Field | Description | +| ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `organization` _string_ | Organization name where the Workspace will be created. [More information](/terraform/enterprise/users-teams-organizations/organizations). | +| `token` _[Token](#token)_ | API Token to be used for API calls. | +| `name` _string_ | Name of the Project. | +| `teamAccess` _[ProjectTeamAccess](#projectteamaccess) array_ | HCP Terraform's access model is team-based. In order to perform an action within a HCP Terraform organization, users must belong to a team that has been granted the appropriate permissions. You can assign project-specific permissions to teams. More information: [Manage projects](/terraform/enterprise/workspaces/organize-workspaces-with-projects#permissions) and [Project permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions). | + +#### ProjectTeamAccess + +HCP Terraform's access model is team-based. In order to perform an action within a HCP Terraform organization, users must belong to a team that has been granted the appropriate permissions. You can assign project-specific permissions to teams. + +More information: + +- [Manage projects](/terraform/enterprise/workspaces/organize-workspaces-with-projects#permissions) +- [Project permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) + +_Appears in:_ + +- [ProjectSpec](#projectspec) + +| Field | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `team` _[Team](#team)_ | Team to grant access. [More information](/terraform/enterprise/users-teams-organizations/teams). | +| `access` _[TeamProjectAccessType](#teamprojectaccesstype)_ | There are two ways to choose which permissions a given team has on a project: fixed permission sets, and custom permissions. Must be one of the following values: `admin`, `custom`, `maintain`, `read`, `write`. More information: [Project permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) and [General project permissions](/terraform/enterprise/users-teams-organizations/permissions#general-project-permissions). | +| `custom` _[CustomProjectPermissions](#customprojectpermissions)_ | Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. [More information](/terraform/enterprise/users-teams-organizations/permissions#custom-project-permissions). | + +#### RemoteStateSharing + +RemoteStateSharing allows remote state access between workspaces. By default, new workspaces in HCP Terraform do not allow other workspaces to access their state. + +More information: + +- [Accessing state from other workspaces](/terraform/enterprise/workspaces/state#accessing-state-from-other-workspaces) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | +| `allWorkspaces` _boolean_ | Allow access to the state for all workspaces within the same organization. Default: `false`. | +| `workspaces` _[ConsumerWorkspace](#consumerworkspace) array_ | Allow access to the state for specific workspaces within the same organization. | + +#### RunStatus + +_Appears in:_ + +- [ModuleStatus](#modulestatus) +- [WorkspaceStatus](#workspacestatus) + +| Field | Description | +| ------------------------------- | ------------------------------------------------------- | +| `id` _string_ | Current(both active and finished) HCP Terraform run ID. | +| `configurationVersion` _string_ | The configuration version of this run. | +| `outputRunID` _string_ | Run ID of the latest run that could update the outputs. | + +#### RunTrigger + +RunTrigger allows you to connect this workspace to one or more source workspaces. These connections allow runs to queue automatically in this workspace on successful apply of runs in any of the source workspaces. + +Only one of the fields `ID` or `Name` is allowed. + +At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [Run triggers](/terraform/enterprise/workspaces/settings/run-triggers) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| --------------- | ------------------------------------------------------------ | +| `id` _string_ | Source Workspace ID. Must match pattern: `^ws-[a-zA-Z0-9]+$` | +| `name` _string_ | Source Workspace Name. | + +#### SSHKey + +SSH key used to clone Terraform modules. + +Only one of the fields `ID` or `Name` is allowed. + +At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [Use SSH Keys for cloning modules](/terraform/enterprise/workspaces/settings/ssh-keys) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| --------------- | ------------------------------------------------------- | +| `id` _string_ | SSH key ID. Must match pattern: `^sshkey-[a-zA-Z0-9]+$` | +| `name` _string_ | SSH key name. | + +#### Tag + +_Underlying type:_ _string_ + +Tags allows you to correlate, organize, and even filter workspaces based on the assigned tags. + +Tags must be one or more characters; can include letters, numbers, colons, hyphens, and underscores; and must begin and end with a letter or number. + +Must match pattern: `^[A-Za-z0-9][A-Za-z0-9:_-]*$` + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +#### TargetWorkspace + +TargetWorkspace is the name or ID of the workspace you want autoscale against. + +_Appears in:_ + +- [AgentDeploymentAutoscaling](#agentdeploymentautoscaling) + +| Field | Description | +| ----------------------- | --------------------------------------------------------------------------------------- | +| `id` _string_ | Workspace ID | +| `name` _string_ | Workspace Name | +| `wildcardName` _string_ | Wildcard Name to match match workspace names using `*` on name suffix, prefix, or both. | + +#### Team + +Teams are groups of HCP Terraform users within an organization. If a user belongs to at least one team in an organization, they are considered a member of that organization. + +Only one of the fields `ID` or `Name` is allowed. + +At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [Teams overview](/terraform/enterprise/users-teams-organizations/teams) + +_Appears in:_ + +- [ProjectTeamAccess](#projectteamaccess) +- [TeamAccess](#teamaccess) + +| Field | Description | +| --------------- | -------------------------------------------------- | +| `id` _string_ | Team ID. Must match pattern: `^team-[a-zA-Z0-9]+$` | +| `name` _string_ | Team name. | + +#### TeamAccess + +HCP Terraform workspaces can only be accessed by users with the correct permissions. You can manage permissions for a workspace on a per-team basis. When a workspace is created, only the owners team and teams with the "manage workspaces" permission can access it, with full admin permissions. These teams' access can't be removed from a workspace. + +More information: + +- [Manage access to workspaces](/terraform/enterprise/workspaces/settings/access) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `team` _[Team](#team)_ | Team to grant access. [More information](/terraform/enterprise/users-teams-organizations/teams). | +| `access` _string_ | There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. Must be one of the following values: `admin`, `custom`, `plan`, `read`, `write`. [More information](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions). | +| `custom` _[CustomPermissions](#custompermissions)_ | Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. [More information](/terraform/enterprise/users-teams-organizations/permissions#custom-workspace-permissions). | + +#### Token + +Token refers to a Kubernetes Secret object within the same namespace as the Workspace object + +_Appears in:_ + +- [AgentPoolSpec](#agentpoolspec) +- [ModuleSpec](#modulespec) +- [ProjectSpec](#projectspec) +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | +| `secretKeyRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#secretkeyselector-v1-core)_ | Selects a key of a secret in the workspace's namespace | + +#### ValueFrom + +ValueFrom source for the variable's value. Cannot be used if value is not empty. + +_Appears in:_ + +- [Variable](#variable) + +| Field | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | +| `configMapKeyRef` _[ConfigMapKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#configmapkeyselector-v1-core)_ | Selects a key of a ConfigMap. | +| `secretKeyRef` _[SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#secretkeyselector-v1-core)_ | Selects a key of a Secret. | + +#### Variable + +Variables let you customize configurations, modify Terraform's behavior, and store information like provider credentials. + +More information: + +- [Workspace variables](/terraform/enterprise/workspaces/variables) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` _string_ | Name of the variable. | +| `description` _string_ | Description of the variable. | +| `hcl` _boolean_ | Parse this field as HashiCorp Configuration Language (HCL). This allows you to interpolate values at runtime. Default: `false`. | +| `sensitive` _boolean_ | Sensitive variables are never shown in the UI or API. They may appear in Terraform logs if your configuration is designed to output them. Default: `false`. | +| `value` _string_ | Value of the variable. | +| `valueFrom` _[ValueFrom](#valuefrom)_ | Source for the variable's value. Cannot be used if value is not empty. | + +#### VariableSetStatus + +_Appears in:_ + +- [WorkspaceStatus](#workspacestatus) + +| Field | Description | +| --------------- | ----------- | +| `id` _string_ | | +| `name` _string_ | | + +#### VariableStatus + +_Appears in:_ + +- [WorkspaceStatus](#workspacestatus) + +| Field | Description | +| -------------------- | --------------------------------------------------- | +| `name` _string_ | Name of the variable. | +| `id` _string_ | ID of the variable. | +| `versionID` _string_ | VersionID is a hash of the variable on the TFC end. | +| `valueID` _string_ | ValueID is a hash of the variable on the CRD end. | +| `category` _string_ | Category of the variable. | + +#### VersionControl + +VersionControl settings for the workspace's VCS repository, enabling the UI/VCS-driven run workflow. Omit this argument to utilize the CLI-driven and API-driven workflows, where runs are not driven by webhooks on your VCS provider. + +More information: + +- [UI and VCS-driven run workflow](/terraform/enterprise/run/ui) +- [Connect to VCS Providers](/terraform/enterprise/vcs) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `oAuthTokenID` _string_ | The VCS Connection (OAuth Connection + Token) to use. Must match pattern: `^ot-[a-zA-Z0-9]+$` | +| `repository` _string_ | A reference to your VCS repository in the format `<organization>/<repository>` where `<organization>` and `<repository>` refer to the organization and repository in your VCS provider. | +| `branch` _string_ | The repository branch that Run will execute from. This defaults to the repository's default branch (e.g. main). | +| `speculativePlans` _boolean_ | Whether this workspace allows automatic speculative plans on PR. Default: `true`. More information: [Speculative plans on pull requests](/terraform/enterprise/run/ui#speculative-plans-on-pull-requests) and [Speculative plans](/terraform/enterprise/run/remote-operations#speculative-plans). | + +#### Workspace + +Workspace manages HCP Terraform Workspaces. + +More information: + +- [Workspaces](/terraform/enterprise/workspaces) + +| Field | Description | +| ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiVersion` _string_ | `app.terraform.io/v1alpha2` | +| `kind` _string_ | `Workspace` | +| `kind` _string_ | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds) | +| `apiVersion` _string_ | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. [More information](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources) | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | +| `spec` _[WorkspaceSpec](#workspacespec)_ | | + +#### WorkspaceAgentPool + +AgentPool allows HCP Terraform to communicate with isolated, private, or on-premises infrastructure. + +Only one of the fields `ID` or `Name` is allowed. + +At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [HCP Terraform agents](/terraform/cloud-docs/agents) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| --------------- | --------------------------------------------------------- | +| `id` _string_ | Agent Pool ID. Must match pattern: `^apool-[a-zA-Z0-9]+$` | +| `name` _string_ | Agent Pool name. | + +#### WorkspaceProject + +Projects let you organize your workspaces into groups. + +Only one of the fields `ID` or `Name` is allowed. + +At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [Organize workspaces with projects](/terraform/tutorials/cloud/projects) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| --------------- | ---------------------------------------------------- | +| `id` _string_ | Project ID. Must match pattern: `^prj-[a-zA-Z0-9]+$` | +| `name` _string_ | Project name. | + +#### WorkspaceRunTask + +Run tasks allow HCP Terraform to interact with external systems at specific points in the HCP Terraform run lifecycle. + +Only one of the fields `ID` or `Name` is allowed. + +At least one of the fields `ID` or `Name` is mandatory. + +More information: + +- [Run tasks](/terraform/enterprise/workspaces/settings/run-tasks) + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` _string_ | Run Task ID. Must match pattern: `^task-[a-zA-Z0-9]+$` | +| `name` _string_ | Run Task Name. | +| `enforcementLevel` _string_ | Run Task Enforcement Level. Can be one of `advisory` or `mandatory`. Default: `advisory`. Must be one of the following values: `advisory`, `mandatory` Default: `advisory`. | +| `stage` _string_ | Run Task Stage. Must be one of the following values: `pre_apply`, `pre_plan`, `post_plan`. Default: `post_plan`. | + +#### WorkspaceSpec + +WorkspaceSpec defines the desired state of Workspace. + +_Appears in:_ + +- [Workspace](#workspace) + +| Field | Description | +| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` _string_ | Workspace name. | +| `organization` _string_ | Organization name where the Workspace will be created. [More information](/terraform/enterprise/users-teams-organizations/organizations). | +| `token` _[Token](#token)_ | API Token to be used for API calls. | +| `applyMethod` _string_ | Define either change will be applied automatically(auto) or require an operator to confirm(manual). Must be one of the following values: `auto`, `manual`. Default: `manual`. [More information](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply). | +| `allowDestroyPlan` _boolean_ | Allows a destroy plan to be created and applied. Default: `true`. [More information](/terraform/enterprise/workspaces/settings#destruction-and-deletion). | +| `description` _string_ | Workspace description. | +| `agentPool` _[WorkspaceAgentPool](#workspaceagentpool)_ | HCP Terraform Agents allow HCP Terraform to communicate with isolated, private, or on-premises infrastructure. [More information](/terraform/cloud-docs/agents). | +| `executionMode` _string_ | Define where the Terraform code will be executed. Must be one of the following values: `agent`, `local`, `remote`. Default: `remote`. [More information](/terraform/enterprise/workspaces/settings#execution-mode). | +| `runTasks` _[WorkspaceRunTask](#workspaceruntask) array_ | Run tasks allow HCP Terraform to interact with external systems at specific points in the HCP Terraform run lifecycle. [More information](/terraform/enterprise/workspaces/settings/run-tasks). | +| `tags` _[Tag](#tag) array_ | Workspace tags are used to help identify and group together workspaces. Tags must be one or more characters; can include letters, numbers, colons, hyphens, and underscores; and must begin and end with a letter or number. | +| `teamAccess` _[TeamAccess](#teamaccess) array_ | HCP Terraform workspaces can only be accessed by users with the correct permissions. You can manage permissions for a workspace on a per-team basis. When a workspace is created, only the owners team and teams with the "manage workspaces" permission can access it, with full admin permissions. These teams' access can't be removed from a workspace. [More information](/terraform/enterprise/workspaces/settings/access). | +| `terraformVersion` _string_ | The version of Terraform to use for this workspace. If not specified, the latest available version will be used. Must match pattern: `^\\d\{1\}\\.\\d\{1,2\}\\.\\d\{1,2\}$` [More information](/terraform/enterprise/workspaces/settings#terraform-version) | +| `workingDirectory` _string_ | The directory where Terraform will execute, specified as a relative path from the root of the configuration directory. [More information](/terraform/enterprise/workspaces/settings#terraform-working-directory) | +| `environmentVariables` _[Variable](#variable) array_ | Terraform Environment variables for all plans and applies in this workspace. Variables defined within a workspace always overwrite variables from variable sets that have the same type and the same key. More information: [Workspace variables](/terraform/enterprise/workspaces/variables) and [Environment variables](/terraform/enterprise/workspaces/variables#environment-variables). | +| `terraformVariables` _[Variable](#variable) array_ | Terraform variables for all plans and applies in this workspace. Variables defined within a workspace always overwrite variables from variable sets that have the same type and the same key. More information: [Workspace variables](/terraform/enterprise/workspaces/variables) and [Terraform variables](/terraform/enterprise/workspaces/variables#terraform-variables). | +| `remoteStateSharing` _[RemoteStateSharing](#remotestatesharing)_ | Remote state access between workspaces. By default, new workspaces in HCP Terraform do not allow other workspaces to access their state. [More information](/terraform/enterprise/workspaces/state#accessing-state-from-other-workspaces). | +| `runTriggers` _[RunTrigger](#runtrigger) array_ | Run triggers allow you to connect this workspace to one or more source workspaces. These connections allow runs to queue automatically in this workspace on successful apply of runs in any of the source workspaces. [More information](/terraform/enterprise/workspaces/settings/run-triggers). | +| `versionControl` _[VersionControl](#versioncontrol)_ | Settings for the workspace's VCS repository, enabling the UI/VCS-driven run workflow. Omit this argument to utilize the CLI-driven and API-driven workflows, where runs are not driven by webhooks on your VCS provider. More information: [UI and VCS-driven run workflow](/terraform/enterprise/run/ui) and [Connect to VCS providers](/terraform/enterprise/vcs) | +| `sshKey` _[SSHKey](#sshkey)_ | SSH key used to clone Terraform modules. [More information](/terraform/enterprise/workspaces/settings/ssh-keys). | +| `notifications` _[Notification](#notification) array_ | Notifications allow you to send messages to other applications based on run and workspace events. [More information](/terraform/enterprise/workspaces/settings/notifications). | +| `project` _[WorkspaceProject](#workspaceproject)_ | Projects let you organize your workspaces into groups. Default: default organization project. [More information](/terraform/tutorials/cloud/projects). | +| `deletionPolicy` _[DeletionPolicy](#deletionpolicy)_ | The Deletion Policy specifies the behavior of the custom resource and its associated workspace when the custom resource is deleted. - `retain`: When you delete the custom resource, the operator does not delete the workspace. - `soft`: Attempts to delete the associated workspace only if it does not contain any managed resources. - `destroy`: Executes a destroy operation to remove all resources managed by the associated workspace. Once the destruction of these resources is successful, the operator deletes the workspace, and then deletes the custom resource. - `force`: Forcefully and immediately deletes the workspace and the custom resource. Default: `retain`. | +| `variableSets` _[WorkspaceVariableSet](#workspacevariableset) array_ | HCP Terraform variable sets let you reuse variables in an efficient and centralized way. [More information](/terraform/tutorials/cloud/cloud-multiple-variable-sets) | + +#### WorkspaceVariableSet + +_Appears in:_ + +- [WorkspaceSpec](#workspacespec) + +| Field | Description | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` _string_ | ID of the variable set. Must match pattern: `varset-[a-zA-Z0-9]+$` [More information](/terraform/tutorials/cloud/cloud-multiple-variable-sets). | +| `name` _string_ | Name of the variable set. [More information](/terraform/tutorials/cloud/cloud-multiple-variable-sets). | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/index.mdx new file mode 100644 index 0000000000..0b3e18a397 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/index.mdx @@ -0,0 +1,220 @@ +--- +page_title: Terraform Enterprise Operator for Kubernetes overview +description: >- + The Terraform Enterprise Operator for Kubernetes allows you to provision + infrastructure directly from the Kubernetes control plane. +source: terraform-docs-common +--- + +# HCP Terraform Operator for Kubernetes overview + +The [HCP Terraform Operator for Kubernetes](https://github.com/hashicorp/hcp-terraform-operator) allows you to manage HCP Terraform resources with Kubernetes custom resources. You can provision infrastructure internal or external to your Kubernetes cluster directly from the Kubernetes control plane. + +The operator's CustomResourceDefinitions (CRD) let you dynamically create HCP Terraform workspaces with Terraform modules, populate workspace variables, and provision infrastructure with Terraform runs. + +## Key benefits + +The HCP Terraform Operator for Kubernetes v2 offers several improvements over v1: + +- **Flexible resource management**: The operator now features multiple custom resources, each with separate controllers for different HCP Terraform resources. This provides additional flexibility and the ability to manage more custom resources concurrently, significantly improving performance for large-scale deployments. + +- **Namespace management**: The `--namespace` option allows you to tailor the operator's watch scope to specific namespaces, which enables more fine-grained resource management. + +- **Configurable synchronization**: The `--sync-period` option allows you to configure the synchronization frequency between custom resources and HCP Terraform, ensuring timely updates and smoother operations. + +## Supported HCP Terraform features + +The HCP Terraform Operator for Kubernetes allows you to create agent pools, deploy modules, and manage workspaces through Kubernetes controllers. These controllers enable you to automate and manage HCP Terraform resources using custom resources in Kubernetes. + +### Agent pools + +Agent pools in HCP Terraform manage the execution environment for Terraform runs. The HCP Terraform Operator for Kubernetes allows you to create and manage agent pools as part of your Kubernetes infrastructure. + +The following example creates a new agent pool with the name `agent-pool-development` and generates an agent token with the name `token-red`. + +```yaml +--- +apiVersion: app.terraform.io/v1alpha2 +kind: AgentPool +metadata: + name: my-agent-pool +spec: + organization: kubernetes-operator + token: + secretKeyRef: + name: tfc-operator + key: token + name: agent-pool-development + agentTokens: + - name: token-red +``` + +The operator stores the `token-red` agent token in a Kubernetes secret named `my-agent-pool-token-red`. + +You can also enable agent autoscaling by providing a `.spec.autoscaling` configuration in your `AgentPool` specification. + +<CodeBlockConfig highlight="17-26"> + +```yaml +--- +apiVersion: app.terraform.io/v1alpha2 +kind: AgentPool +metadata: + name: this +spec: + organization: kubernetes-operator + token: + secretKeyRef: + name: tfc-operator + key: token + name: agent-pool-development + agentTokens: + - name: token-red + agentDeployment: + replicas: 1 + autoscaling: + targetWorkspaces: + - name: us-west-development + - id: ws-NUVHA9feCXzAmPHx + - wildcardName: eu-development-* + minReplicas: 1 + maxReplicas: 3 + cooldownPeriod: + scaleUpSeconds: 30 + scaleDownSeconds: 30 +``` + +</CodeBlockConfig> + +In the above example, the operator ensures that at least one agent pod is continuously running and dynamically scales the number of pods up to a maximum of three based on the workload or resource demand. The operator then monitors resource demands by observing the load of the designated workspaces specified by the `name`, `id`, or `wildcardName` patterns. When the workload decreases, the operator downscales the number of agent pods. + +Refer to the [agent pool API reference](/terraform/enterprise/integrations/kubernetes/api-reference#agentpool) for the complete `AgentPool` specification. + +### Module + +The `Module` controller enforces an [API-driven Run workflow](/terraform/enterprise/run/api) and lets you deploy Terraform modules within workspaces. + +The following example deploys version `1.0.0` of the `hashicorp/module/random` module in the `workspace-name` workspace. + +```yaml +--- +apiVersion: app.terraform.io/v1alpha2 +kind: Module +metadata: + name: my-module +spec: + organization: kubernetes-operator + token: + secretKeyRef: + name: tfc-operator + key: token + module: + source: hashicorp/module/random + version: 1.0.0 + workspace: + name: workspace-name + variables: + - name: string_length + outputs: + - name: random_string +``` + +The operator passes the workspace's `string_length` variable to the module and stores the `random_string` outputs as either a Kubernetes secret or a ConfigMap. If the workspace marks the output as `sensitive`, the operator stores the `random_string` as a Kubernetes secret; otherwise, the operator stores it as a ConfigMap. The variables must be accessible within the workspace as a workspace variable, workspace variable set, or project variable set. + +Refer to the [module API reference](/terraform/enterprise/integrations/kubernetes/api-reference#module) for the complete `Module` specification. + +### Project + +Projects let you organize your workspaces and scope access to workspace resources. The `Project` controller allows you to create, configure, and manage [projects](/terraform/tutorials/cloud/projects) directly from Kubernetes. + +The following example creates a new project named `testing`. + +```yaml +--- +apiVersion: app.terraform.io/v1alpha2 +kind: Project +metadata: + name: testing +spec: + organization: kubernetes-operator + token: + secretKeyRef: + name: tfc-operator + key: token + name: project-demo +``` + +The `Project` controller allows you to manage team access [permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions). + +The following example creates a project named `testing` and grants the `qa` team admin access to the project. + +<CodeBlockConfig highlight="13-16"> + +```yaml +--- +apiVersion: app.terraform.io/v1alpha2 +kind: Project +metadata: + name: testing +spec: + organization: kubernetes-operator + token: + secretKeyRef: + name: tfc-operator + key: token + name: project-demo + teamAccess: + - team: + name: qa + access: admin +``` + +</CodeBlockConfig> + +Refer to the [project API reference](/terraform/enterprise/integrations/kubernetes/api-reference#project) for the complete `Project` specification. + +### Workspace + +HCP Terraform workspaces organize and manage Terraform configurations. The HCP Terraform Operator for Kubernetes allows you to create, configure, and manage workspaces directly from Kubernetes. + +The following example creates a new workspace named `us-west-development`, configured to use Terraform version `1.6.2`. This workspace has two variables, `nodes` and `rds-secret`. The variable `rds-secret` is treated as sensitive, and the operator reads the value for the variable from a Kubernetes secret named `us-west-development-secrets`. + +```yaml +--- +apiVersion: app.terraform.io/v1alpha2 +kind: Workspace +metadata: + name: us-west-development +spec: + organization: kubernetes-operator + token: + secretKeyRef: + name: tfc-operator + key: token + name: us-west-development + description: US West development workspace + terraformVersion: 1.6.2 + applyMethod: auto + agentPool: + name: ap-us-west-development + terraformVariables: + - name: nodes + value: 2 + - name: rds-secret + sensitive: true + valueFrom: + secretKeyRef: + name: us-west-development-secrets + key: rds-secret + runTasks: + - name: rt-us-west-development + stage: pre_plan +``` + +In the above example, the `applyMethod` has the value of `auto`, so HCP Terraform automatically applies any changes to this workspace. The specification also configures the workspace to use the `ap-us-west-development` agent pool and run the `rt-us-west-development` run task at the `pre_plan` stage. + +The operator stores the value of the workspace outputs as Kubernetes secrets or ConfigMaps. If the outputs are marked as `sensitive`, they are stored as Kubernetes secrets, otherwise they are stored as ConfigMaps. + +-> **Note**: The operator rolls back any external modifications made to the workspace to match the state specified in the custom resource definition. + +Refer to the [workspace API reference](/terraform/enterprise/integrations/kubernetes/api-reference#workspace) for the complete `Workspace` specification. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/ops-v2-migration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/ops-v2-migration.mdx new file mode 100644 index 0000000000..49c8bc1272 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/ops-v2-migration.mdx @@ -0,0 +1,342 @@ +--- +page_title: Migrate to Terraform Enterprise Operator for Kubernetes v2 +description: >- + Learn how to upgrade the Terraform Kubernetes Operator from version 1 to + version 2. +source: terraform-docs-common +--- + +# Migrate to HCP Terraform Operator for Kubernetes v2 + +~> **Warning**: Version 1 of the HCP Terraform Operator for Kubernetes is **deprecated** and no longer maintained. If you are installing the operator for the first time, refer to [Set up the HCP Terraform Operator for Kubernetes](/terraform/enterprise/integrations/kubernetes/setup) for guidance. + +To upgrade the HCP Terraform Operator for Kubernetes from version 1 to the HCP Terraform Operator for Kubernetes (version 2), there is a one-time process that you need to complete. This process upgrades the operator to the newest version and migrate your custom resources. + +## Prerequisites + +The migration process requires the following tools to be installed locally: + +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) +- [Helm](https://helm.sh/docs/intro/install/) + +## Prepare for the upgrade + +Configure an environment variable named `RELEASE_NAMESPACE` with the value of the namespace that the Helm chart is installed in. + +```shell-session +$ export RELEASE_NAMESPACE=<NAMESPACE> +``` + +Next, create an environment variable named `RELEASE_NAME` with the value of the name that you gave your installation for the Helm chart. + +```shell-session +$ export RELEASE_NAME=<INSTALLATION_NAME> +``` + +Before you migrate to HCP Terraform Operator for Kubernetes v2, you must first update v1 of the operator to the latest version, including the custom resource definitions. + +```shell-session +$ helm upgrade --namespace ${RELEASE_NAMESPACE} ${RELEASE_NAME} hashicorp/terraform +``` + +Next, backup the workspace resources. + +```shell-session +$ kubectl get workspace --all-namespaces -o yaml > backup_tfc_operator_v1.yaml +``` + +## Manifest schema migration + +Version 2 of the HCP Terraform Operator for Kubernetes renames and moves many existing fields. When you migrate, you must update your specification to match version 2's field names. + +### Workspace controller + +The table below lists the field mapping of the `Workspace` controller between v1 and v2 of the operator. + +| Version 1 | Version 2 | Changes between versions | +| --------------------------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiVersion: app.terraform.io/v1alpha1` | `apiVersion: app.terraform.io/v1alpha2` | The `apiVersion` is now `v1alpha2`. | +| `kind: Workspace` | `kind: Workspace` | None. | +| `metadata` | `metadata` | None. | +| `spec.organization` | `spec.organization` | None. | +| `spec.secretsMountPath` | `spec.token.secretKeyRef` | In v2 the operator keeps the HCP Terraform access token in a Kubernetes Secret. | +| `spec.vcs` | `spec.versionControl` | Renamed the `vcs` field to `versionControl`. | +| `spec.vcs.token_id` | `spec.versionControl.oAuthTokenID` | Renamed the `token_id` field to `oAuthTokenID`. | +| `spec.vcs.repo_identifier` | `spec.versionControl.repository` | Renamed the `repo_identifier` field to `repository`. | +| `spec.vcs.branch` | `spec.versionControl.branch` | None. | +| `spec.vcs.ingress_submodules` | `spec.workingDirectory` | Moved. | +| `spec.variables.[*]` | `spec.environmentVariables.[*]` OR `spec.terraformVariables.[*]` | <a id="workspace-variables"></a>We split variables into two possible places. In v1's CRD, if `spec.variables.environmentVariable` was `true`, migrate those variables to `spec.environmentVariables`. If `false`, migrate those variables to `spec.terraformVariables`. | +| `spec.variables.[*]key` | `spec.environmentVariables.[*]name` OR `spec.terraformVariables.[*]name` | Renamed the `key` field as `name`. [Learn more](#workspace-variables). | +| `spec.variables.[*]value` | `spec.environmentVariables.[*]value` OR `spec.terraformVariables.[*]value` | [Learn more](#workspace-variables). | +| `spec.variables.[*]valueFrom` | `spec.environmentVariables.[*]valueFrom` OR `spec.terraformVariables.[*]valueFrom` | [Learn more](#workspace-variables). | +| `spec.variables.[*]hcl` | `spec.environmentVariables.[*]hcl` OR `spec.terraformVariables.[*]hcl` | [Learn more](#workspace-variables). | +| `spec.variables.sensitive` | `spec.environmentVariables.[*]sensitive` OR `spec.terraformVariables.[*]sensitive` | [Learn more](#workspace-variables). | +| `spec.variables.environmentVariable` | N/A | Removed, variables are split between `spec.environmentVariables` and `spec.terraformVariables`. | +| `spec.runTriggers.[*]` | `spec.runTriggers.[*]` | None. | +| `spec.runTriggers.[*].sourceableName` | `spec.runTriggers.[*].name` | The `sourceableName` field is now `name`. | +| `spec.sshKeyID` | `spec.sshKey.id` | Moved the `sshKeyID` to `spec.sshKey.id`. | +| `spec.outputs` | N/A | Removed. | +| `spec.terraformVersion` | `spec.terraformVersion` | None. | +| `spec.notifications.[*]` | `spec.notifications.[*]` | None. | +| `spec.notifications.[*].type` | `spec.notifications.[*].type` | None. | +| `spec.notifications.[*].enabled` | `spec.notifications.[*].enabled` | None. | +| `spec.notifications.[*].name` | `spec.notifications.[*].name` | None. | +| `spec.notifications.[*].url` | `spec.notifications.[*].url` | None. | +| `spec.notifications.[*].token` | `spec.notifications.[*].token` | None. | +| `spec.notifications.[*].triggers.[*]` | `spec.notifications.[*].triggers.[*]` | None. | +| `spec.notifications.[*].recipients.[*]` | `spec.notifications.[*].emailAddresses.[*]` | Renamed the `recipients` field to `emailAddresses`. | +| `spec.notifications.[*].users.[*]` | `spec.notifications.[*].emailUsers.[*]` | Renamed the `users` field to `emailUsers`. | +| `spec.omitNamespacePrefix` | N/A | Removed. In v1 `spec.omitNamespacePrefix` is a boolean field that affects how the operator generates a workspace name. In v2, you must explicitly set workspace names in `spec.name`. | +| `spec.agentPoolID` | `spec.agentPool.id` | Moved the `agentPoolID` field to `spec.agentPool.id`. | +| `spec.agentPoolName` | `spec.agentPool.name` | Moved the `agentPoolName` field to `spec.agentPool.name`. | +| `spec.module` | N/A | Removed. You now configure modules with a separate `Module` CRD. [Learn more](#module-controller). | + +Below is an example of configuring a variable in v1 of the operator. + +<CodeBlockConfig filename="v1.yaml"> + +```yaml +apiVersion: app.terraform.io/v1alpha1 +kind: Workspace +metadata: + name: migration + spec: + variables: + - key: username + value: "user" + hcl: true + sensitive: false + environmentVariable: false + - key: SECRET_KEY + value: "s3cr3t" + hcl: false + sensitive: false + environmentVariable: true +``` + +</CodeBlockConfig> + +In v2 of the operator, you must configure Terraform variables in `spec.terraformVariables` and environment variables `spec.environmentVariables`. + +<CodeBlockConfig filename="v2.yaml"> + +```yaml +apiVersion: app.terraform.io/v1alpha2 +kind: Workspace +metadata: + name: migration + spec: + terraformVariables: + - name: username + value: "user" + hcl: true + sensitive: false + environmentVariables: + - name: SECRET_KEY + value: "s3cr3t" + hcl: false + sensitive: false +``` + +</CodeBlockConfig> + +### Module controller + +HCP Terraform Operator for Kubernetes v2 configures modules in a new `Module` controller separate from the `Workspace` controller. Below is a template of a custom resource manifest: + +```yaml +apiVersion: app.terraform.io/v1alpha2 +kind: Module +metadata: + name: <NAME> +spec: + organization: <ORG-NAME> + token: + secretKeyRef: + name: <SECRET-NAME> + key: <KEY-NAME> + name: operator +``` + +The table below describes the mapping between the `Workspace` controller from v1 and the `Module` controller in v2 of the operator. + +| Version 1 (Workspace CRD) | Version 2 (Module CRD) | Notes | +| ---------------------------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `spec.module` | N/A | In v2 of the operator a `Module` is a separate controller with its own CRD. | +| N/A | `spec.name: operator` | In v1 of the operator, the name of the generated module is hardcoded to `operator`. In v2, the default name of the generated module is `this`, but you can rename it. | +| `spec.module.source` | `spec.module.source` | This supports all Terraform [module sources](/terraform/language/modules/sources). | +| `spec.module.version` | `spec.module.version` | Refer to [module sources](/terraform/language/modules/sources) for versioning information for each module source. | +| `spec.variables.[*]` | `spec.variables.[*].name` | You should include variable names in the module. This is a reference to variables in the workspace that is executing the module. | +| `spec.outputs.[*].key` | `spec.outputs.[*].name` | You should include output names in the module. This is a reference to the output variables produced by the module. | +| `status.workspaceID` OR `metadata.namespace-metadata.name` | `spec.workspace.id` OR `spec.workspace.name` | The workspace where the module is executed. The workspace must be in the same organization. | + +Below is an example migration of a `Module` between v1 and v2 of the operator: + +<CodeBlockConfig filename="v1.yaml"> + +```yaml +apiVersion: app.terraform.io/v1alpha1 +kind: Workspace +metadata: + name: migration +spec: + module: + source: app.terraform.io/org-name/module-name/provider + version: 0.0.42 + variables: + - key: username + value: "user" + hcl: true + sensitive: false + environmentVariable: false + - key: SECRET_KEY + value: "s3cr3t" + hcl: false + sensitive: false + environmentVariable: true +``` + +</CodeBlockConfig> + +In v2 of the operator, separate controllers manage workspace and modules. + +<CodeBlockConfig filename="workspace-v2.yaml"> + +```yaml +apiVersion: app.terraform.io/v1alpha2 +kind: Workspace +metadata: + name: migration + spec: + terraformVariables: + - name: username + value: "user" + hcl: true + sensitive: false + environmentVariables: + - name: SECRET_KEY + value: "s3cr3t" + hcl: false + sensitive: false +``` + +</CodeBlockConfig> + +<CodeBlockConfig filename="module-v2.yaml"> + +```yaml +apiVersion: app.terraform.io/v1alpha2 +kind: Module +metadata: + name: migration +spec: + name: operator + module: + source: app.terraform.io/org-name/module-name/provider + version: 0.0.42 + workspace: + name: migration +``` + +</CodeBlockConfig> + +## Upgrade the operator + +Download Workspace CRD patch A: + +```shell-session +$ curl -sO https://raw.githubusercontent.com/hashicorp/hcp-terraform-operator/main/docs/migration/crds/workspaces_patch_a.yaml +``` + +View the changes that patch A applies to the workspace CRD. + +```shell-session +$ kubectl diff --filename workspaces_patch_a.yaml +``` + +Patch the workspace CRD with patch A. This patch adds `app.terraform.io/v1alpha2` support, but excludes `.status.runStatus` because it has a different format in `app.terraform.io/v1alpha1` and causes JSON un-marshalling issues. + +!> **Upgrade warning**: Once you apply a patch, Kubernetes converts existing `app.terraform.io/v1alpha1` custom resources to `app.terraform.io/v1alpha2` according to the updated schema, meaning that v1 of the operator can no longer serve custom resources. Before patching, update your existing custom resources to satisfy the v2 schema requirements. [Learn more](#manifest-schema-migration). + +```shell-session +$ kubectl patch crd workspaces.app.terraform.io --patch-file workspaces_patch_a.yaml +``` + +Install the Operator v2 Helm chart with the `helm install` command. Be sure to set the `operator.watchedNamespaces` value to the list of namespaces your Workspace resources are deployed to. If this value is not provided, the operator will watch all namespaces in the Kubernetes cluster. + +```shell-session +$ helm install \ + ${RELEASE_NAME} hashicorp/hcp-terraform-operator \ + --version 2.4.0 \ + --namespace ${RELEASE_NAMESPACE} \ + --set 'operator.watchedNamespaces={white,blue,red}' \ + --set controllers.agentPool.workers=5 \ + --set controllers.module.workers=5 \ + --set controllers.workspace.workers=5 +``` + +Next, create a Kubernetes secret to store the HCP Terraform API token following the [Usage Guide](https://github.com/hashicorp/hcp-terraform-operator/blob/main/docs/usage.md#prerequisites). The API token can be copied from the Kubernetes secret that you created for v1 of the operator. By default, this is named `terraformrc`. Use the `kubectl get secret` command to get the API token. + +```shell-session +$ kubectl --namespace ${RELEASE_NAMESPACE} get secret terraformrc -o json | jq '.data.credentials' | tr -d '"' | base64 -d +``` + +Update existing custom resources [according to the schema migration guidance](#manifest-schema-migration) and apply your changes. + +```shell-session +$ kubectl apply --filename <UPDATED_V2_WORKSPACE_MANIFEST.yaml> +``` + +Download Workspace CRD patch B. + +```shell-session +$ curl -sO https://raw.githubusercontent.com/hashicorp/hcp-terraform-operator/main/docs/migration/crds/workspaces_patch_b.yaml +``` + +View the changes that patch B applies to the workspace CRD. + +```shell-session +$ kubectl diff --filename workspaces_patch_b.yaml +``` + +Patch the workspace CRD with patch B. This patch adds `.status.runStatus` support, which was excluded in patch A. + +```shell-session +$ kubectl patch crd workspaces.app.terraform.io --patch-file workspaces_patch_b.yaml +``` + +The v2 operator will fail to proceed if a custom resource has the v1 finalizer `finalizer.workspace.app.terraform.io`. If you encounter an error, check the logs for more information. + +```shell-session +$ kubectl logs -f <POD_NAME> +``` + +Specifically, look for an error message such as the following. + + ERROR Migration {"workspace": "default/<WORKSPACE_NAME>", "msg": "spec contains old finalizer finalizer.workspace.app.terraform.io"} + +The `finalizer` exists to provide greater control over the migration process. Verify the custom resource, and when you’re ready to migrate it, use the `kubectl patch` command to update the `finalizer` value. + +```shell-session +$ kubectl patch workspace migration --type=merge --patch '{"metadata": {"finalizers": ["workspace.app.terraform.io/finalizer"]}}' +``` + +Review the operator logs once more and verify there are no error messages. + +```shell-session +$ kubectl logs -f <POD_NAME> +``` + +The operator reconciles resources during the next sync period. This interval is set by the `operator.syncPeriod` configuration of the operator and defaults to five minutes. + +If you have any migrated `Module` custom resources, apply them now. + +```shell-session +$ kubectl apply --filename <MIGRATED_V2_MODULE_MANIFEST.yaml> +``` + +In v2 of the operator, the `applyMethod` is set to `manual` by default. In this case, a new run in a managed workspace requires manual approval. Run the following command for each `Workspace` resource to change it to `auto` approval. + +```shell-session +$ kubectl patch workspace <WORKSPACE_NAME> --type=merge --patch '{"spec": {"applyMethod": "auto"}}' +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/setup.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/setup.mdx new file mode 100644 index 0000000000..ece055aa73 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/kubernetes/setup.mdx @@ -0,0 +1,94 @@ +--- +page_title: Set up the Terraform Enterprise Operator for Kubernetes +description: >- + Learn how to install and configure the Terraform Enterprise Operator for + Kubernetes. +source: terraform-docs-common +--- + +# Set up the HCP Terraform Operator for Kubernetes + +The HCP Terraform Operator for Kubernetes' CustomResourceDefinitions (CRD) allow you to dynamically create HCP Terraform workspaces with Terraform modules, populate workspace variables, and provision infrastructure with Terraform runs. + +You can install the operator with the official [HashiCorp Helm chart](https://github.com/hashicorp/hcp-terraform-operator). + +## Prerequisites + +All HCP Terraform users can use the HCP Terraform Operator for Kubernetes. You can use the operator to manage the supported features that your organization's pricing tier enables. + +## Networking requirements + +The HCP Terraform Operator for Kubernetes makes outbound requests over HTTPS (TCP port 443) to the HCP Terraform application APIs. This may require perimeter networking as well as container host networking changes, depending on your environment. Refer to [HCP Terraform IP Ranges](/terraform/enterprise/architectural-details/ip-ranges) for more information about IP ranges. Below, we list the services that run on specific IP ranges. + +| Hostname | Port/Protocol | Directionality | Purpose | +| ------------------ | -------------- | -------------- | --------------------------------------------------------------------------------------------------------------- | +| `app.terraform.io` | tcp/443, HTTPS | Outbound | Dynamically managing HCP Terraform workspaces and returning the output to Kubernetes with the HCP Terraform API | + +For self-managed Terraform Enterprise instances, ensure that the operator can reach your Terraform Enterprise hostname over HTTPS (TCP port 443). + +## Compatibility + +The HCP Terraform Operator for Kubernetes supports the following versions: + +- Helm 3.0.1 and above +- Kubernetes 1.15 and above + +## Install and configure + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to integrate with Kubernetes. + +2. Generate an [organization token](/terraform/enterprise/users-teams-organizations/api-tokens#organization-api-tokens) within HCP Terraform or Terraform Enterprise and save it to a file. These instructions assume you are using a file named `credentials`. + +3. Set the `NAMESPACE` environment variable. This will be the namespace that you will install the Helm chart to. + + export NAMESPACE=tfc-operator-system + +4. Create the namespace. + + kubectl create namespace $NAMESPACE + +5. Create a [Kubernetes Secret](https://kubernetes.io/docs/concepts/configuration/secret/) with the HCP Terraform API credentials. + + kubectl -n $NAMESPACE create secret generic terraformrc --from-file=credentials + +6. Add sensitive variables, such as your cloud provider credentials, to the namespace. + + kubectl -n $NAMESPACE create secret generic workspacesecrets --from-literal=secret_key=abc123 + +7. Add the HashiCorp Helm repository. + + helm repo add hashicorp https://helm.releases.hashicorp.com + +8. Install the [HCP Terraform Operator for Kubernetes with Helm](https://github.com/hashicorp/hcp-terraform-operator). By default, the operator communicates with HCP Terraform at `app.terraform.io`. The following example command installs the Helm chart for HCP Terraform: + + ```shell-session + $ helm install --namespace ${RELEASE_NAMESPACE} hashicorp/hcp-terraform-operator tfc-operator + ``` + + When deploying in self-managed Terraform Enterprise, you must set the `operator.tfeAddress` to the specific hostname of the Terraform Enterprise instance: + + ```shell-session + $ helm install --namespace ${RELEASE_NAMESPACE} hashicorp/hcp-terraform-operator tfc-operator \ + --set operator.tfeAddress="TERRAFORM_ENTERPRISE_HOSTNAME" + ``` + + Alternatively, you can set the `tfeAddress` configuration for Terraform Enterprise in the [value.yaml](https://github.com/hashicorp/hcp-terraform-operator/blob/main/charts/hcp-terraform-operator/values.yaml) file. + + ```yaml + operator: + tfeAddress: <TERRAFORM_ENTERPRISE_HOSTNAME> + ``` + + Run the following command to apply the value.yaml file: + + ```shell-session + $ helm install --namespace ${NAMESPACE} hashicorp/hcp-terraform-operator tfc-operator -f value.yaml + ``` + +9. To create a Terraform workspace, agent pool, or other object, refer to the example YAML manifests in the [operator repository on GitHub](https://github.com/hashicorp/hcp-terraform-operator/tree/main/docs/examples). + +### Upgrade + +When a new version of the HCP Terraform Operator for Kubernetes Helm Chart is available from the HashiCorp Helm repository, you can upgrade with the following command. + + helm upgrade --namespace ${RELEASE_NAMESPACE} hashicorp/hcp-terraform-operator tfc-operator diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/run-tasks/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/run-tasks/index.mdx new file mode 100644 index 0000000000..c64b59a21d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/run-tasks/index.mdx @@ -0,0 +1,109 @@ +--- +page_title: Set up Terraform Enterprise run task integrations +description: >- + Use run tasks to execute tasks in external systems at specific points in the + Terraform Enterprise run lifecycle. +source: terraform-docs-common +--- + +# Set up run task integrations + +In addition to using existing technology partners integrations, HashiCorp HCP Terraform customers can build their own custom run task integrations. Custom integrations have access to plan details in between the plan and apply phase, and can display custom messages within the run pipeline as well as prevent a run from continuing to the apply phase. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/run-tasks.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Prerequisites + +To build a custom integration, you must have a server capable of receiving requests from HCP Terraform and responding with a status update to a supplied callback URL. When creating a run task, you supply an endpoint url to receive the hook. We send a test POST to the supplied URL, and it must respond with a 200 for the run task to be created. + +This feature relies heavily on the proper parsing of [plan JSON output](/terraform/internals/json-format). When sending this output to an external system, be certain that system can properly interpret the information provided. + +## Available Run Tasks + +You can view the most up-to-date list of run tasks in the [Terraform Registry](https://registry.terraform.io/browse/run-tasks). + +## Integration Details + +When a run reaches the appropriate phase and a run task is triggered, the supplied URL will receive details about the run in a payload similar to the one below. The server receiving the run task should respond `200 OK`, or Terraform will retry to trigger the run task. + +Refer to the [Run Task Integration API](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration) for the exact payload specification. + +```json +{ + "payload_version": 1, + "stage": "post_plan", + "access_token": "4QEuyyxug1f2rw.atlasv1.iDyxqhXGVZ0ykes53YdQyHyYtFOrdAWNBxcVUgWvzb64NFHjcquu8gJMEdUwoSLRu4Q", + "capabilities": { + "outcomes": true + }, + "configuration_version_download_url": "https://app.terraform.io/api/v2/configuration-versions/cv-ntv3HbhJqvFzamy7/download", + "configuration_version_id": "cv-ntv3HbhJqvFzamy7", + "is_speculative": false, + "organization_name": "hashicorp", + "plan_json_api_url": "https://app.terraform.io/api/v2/plans/plan-6AFmRJW1PFJ7qbAh/json-output", + "run_app_url": "https://app.terraform.io/app/hashicorp/my-workspace/runs/run-i3Df5to9ELvibKpQ", + "run_created_at": "2021-09-02T14:47:13.036Z", + "run_created_by": "username", + "run_id": "run-i3Df5to9ELvibKpQ", + "run_message": "Triggered via UI", + "task_result_callback_url": "https://app.terraform.io/api/v2/task-results/5ea8d46c-2ceb-42cd-83f2-82e54697bddd/callback", + "task_result_enforcement_level": "mandatory", + "task_result_id": "taskrs-2nH5dncYoXaMVQmJ", + "vcs_branch": "main", + "vcs_commit_url": "https://github.com/hashicorp/terraform-random/commit/7d8fb2a2d601edebdb7a59ad2088a96673637d22", + "vcs_pull_request_url": null, + "vcs_repo_url": "https://github.com/hashicorp/terraform-random", + "workspace_app_url": "https://app.terraform.io/app/hashicorp/my-workspace", + "workspace_id": "ws-ck4G5bb1Yei5szRh", + "workspace_name": "tfr_github_0", + "workspace_working_directory": "/terraform" +} +``` + +Once your server receives this payload, HCP Terraform expects you to callback to the supplied `task_result_callback_url` using the `access_token` as an [Authentication Header](/terraform/enterprise/api-docs#authentication) with a [jsonapi](/terraform/enterprise/api-docs#json-api-formatting) payload of the form: + +```json +{ + "data": { + "type": "task-results", + "attributes": { + "status": "running", + "message": "Hello task", + "url": "https://example.com", + "outcomes": [...] + } + } +} +``` + +HCP Terraform expects this callback within 10 minutes, or the task will be considered to have `errored`. The supplied message attribute will be displayed in HCP Terraform on the run details page. The status can be `running`, `passed` or `failed`. + +Here's what the data flow looks like: + +![Screenshot: a diagram of the user and data flow for an HCP Terraform run task](/img/docs/terraform-cloud-run-tasks-diagram.png) + +Refer to the [run task integration API](/terraform/enterprise/api-docs/run-tasks/run-tasks-integration#structured-results) for the exact payload specifications, and the [run task JSON schema](https://github.com/hashicorp/terraform-docs-common/blob/main/website/public/schema/run-tasks/runtask-result.json) for code generation and payload validation. + +## Securing your Run Task + +When creating your run task, you can supply an HMAC key which HCP Terraform will use to create a signature of the payload in the `X-Tfc-Task-Signature` header when calling your service. + +The signature is a sha512 sum of the webhook body using the provided HMAC key. The generation of the signature depends on your implementation, however an example of how to generate a signature in bash is provided below. + +```bash +$ echo -n $WEBHOOK_BODY | openssl dgst -sha512 -hmac "$HMAC_KEY" +``` + +## HCP Packer Run Task + +> **Hands On:** Try the [Set Up HCP Terraform Run Task for HCP Packer](/packer/tutorials/hcp/setup-hcp-terraform-run-task), [Standard tier run task image validation](/packer/tutorials/hcp/run-tasks-data-source-image-validation), and [Plus tier run task image validation](/packer/tutorials/hcp/run-tasks-resource-image-validation) tutorials to set up and test the HCP Terraform Run Task integration end to end. + +[Packer](https://www.packer.io/) lets you create identical machine images for multiple platforms from a single source template. The [HCP Packer registry](/hcp/docs/packer) lets you track golden images, designate images for test and production environments, and query images to use in Packer and Terraform configurations. + +The HCP Packer validation run task checks the image artifacts within a Terraform configuration. If the configuration references images marked as unusable (revoked), the run task fails and provides an error message containing the number of revoked artifacts and whether HCP Packer has metadata for newer versions. For HCP Packer Plus registries, run tasks also help you identify hardcoded and untracked images that may not meet security and compliance requirements. + +To get started, [create an HCP Packer account](https://cloud.hashicorp.com/products/packer) and follow the instructions in the [HCP Packer Run Task](/hcp/docs/packer/manage-image-use/terraform-cloud-run-tasks) documentation. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/admin-guide.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/admin-guide.mdx new file mode 100644 index 0000000000..735371a432 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/admin-guide.mdx @@ -0,0 +1,56 @@ +--- +page_title: Configure the ServiceNow Service Catalog integration +description: Learn how to configure the ServiceNow Service Catalog integration workers. +source: terraform-docs-common +--- + +# Configure the ServiceNow Service Catalog integration + +ServiceNow administrators have several options with configuring the Terraform +integration. + +If you haven't yet installed the integration, see the [installation +documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform). + +Once the integration has been installed, you can add and customize a service +catalog and VCS repositories using the [service catalog +documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config). + +You can also configure how frequently ServiceNow will poll HCP Terraform using +the documentation below. + +## Configure Polling Workers + +The integration includes 3 ServiceNow Scheduled Flows to poll the HCP Terraform +API using ServiceNow Outbound HTTP REST requests. By default, all flows +schedules are set to 5 minutes. These can be customized inside the ServiceNow +Server Studio: + +1. Select the Worker Poll Run State Flow. +2. Adjust Repeat Intervals +3. Click "Done" +4. Click "Save" +5. Click "Activate" + +### Worker Poll Apply Run + +This worker approves runs for any workspaces that have finished a Terraform plan +and are ready to apply their changes. It also adds a comment on the request item +for those workspaces notifying that a run has been triggered. + +### Worker Poll Destroy Workspace + +This worker looks for any records in the Terraform ServiceNow table that are +marked for deletion with the value `is_destroyable` set to true. It then checks +the status of the workspace to ensure it is ready to be deleted. Once the +destroy run has been completed, this work will send the delete request for the +workspace to Terraform. + +### Worker Poll Run State + +The worker synchronizes ServiceNow with the current run state of Terraform +workspaces by polling the HCP Terraform API. On state changes, the worker adds +a comment to the ServiceNow request item with the updated run state and other +metadata. + +![screenshot: ServiceNow integration comments](/img/docs/service-now-comments.png) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/developer-reference.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/developer-reference.mdx new file mode 100644 index 0000000000..13ae4b2163 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/developer-reference.mdx @@ -0,0 +1,112 @@ +--- +page_title: ServiceNow Service Catalog integration developer reference +description: Learn how developers can customize the ServiceNow Service Catalog integration. +source: terraform-docs-common +--- + +# Terraform ServiceNow Service Catalog Integration Developer Reference + +The Terraform ServiceNow integration can be customized by ServiceNow developers +using the information found in this document. + +## Terraform Variables and ServiceNow Variable Sets + +ServiceNow has the concept of a Variable Set which is a collection of ServiceNow +Variables that can be referenced in a Flow from a Service Catalog item. The +Terraform Integration codebase can create [Terraform Variables and Terraform +Environment Variables](/terraform/enterprise/workspaces/variables) via the API using the +`tf_variable.createVariablesFromSet()` function. + +This function looks for variables following these conventions: + +| ServiceNow Variable Name | HCP Terraform Variable | +| -------------------------------- | ---------------------------------------------------------- | +| `tf_var_VARIABLE_NAME` | Terraform Variable: `VARIABLE_NAME` | +| `tf_env_ENV_NAME` | Environment Variable: `ENV_NAME` | +| `sensitive_tf_var_VARIABLE_NAME` | Sensitive Terraform Variable (Write Only): `VARIABLE_NAME` | +| `sensitive_tf_env_ENV_NAME` | Sensitive Environment Variable (Write Only): `ENV_NAME` | + +This function takes the ServiceNow Variable Set and HCP Terraform workspace +ID. It will loop through the given variable set collection and create any +necessary Terraform variables or environment variables in the workspace. + +## Customizing with ServiceNow "Script Includes" Libraries + +The Terraform/ServiceNow Integration codebase includes [ServiceNow Script +Includes +Classes](https://docs.servicenow.com/csh?topicname=c_ScriptIncludes.html&version=latest) +that are used to interface with HCP Terraform. The codebase also includes +example catalog items and flows that implement the interface to the HCP Terraform API. + +These classes and examples can be used to help create ServiceNow Catalog Items +customized to your specific ServiceNow instance and requirements. + +### Script Include Classes + +The ServiceNow Script Include Classes can be found in the ServiceNow Studio > +Server Development > Script Include. + +| Class Name | Description | +| ---------------------- | -------------------------------------------------------------- | +| `tf_config` | Helper to pull values from the SN Terraform Configs Table | +| `tf_get_workspace` | Client-callable script to retrieve workspace data | +| `tf_http` | ServiceNow HTTP REST wrapper for requests to the Terraform API | +| `tf_no_code_workspace` | Resources for Terraform no-code module API requests | +| `tf_run` | Resources for Terraform run API requests | +| `tf_terraform_record` | Manage ServiceNow Terraform Table Records | +| `tf_test_config` | Client-callable script to test Terraform connectivity | +| `tf_util` | Miscellaneous helper functions | +| `tf_variable` | Resources for Terraform variable API Requests | +| `tf_vcs_record` | Manage ServiceNow Terraform VCS repositories table records | +| `tf_workspace` | Resources for Terraform workspace API requests | + +### Example Service Catalog Flows and Actions + +The ServiceNow Service Catalog for Terraform provides sample catalog items that use **Flows** +and **Workflows** as their primary process engines. **Flows** are a newer solution developed +by ServiceNow and are generally preferred over **Workflows**. To see which engine an item is using, open it +in the edit mode and navigate to the **Process Engine** tab. For example, **Create Workspace** uses a **Workflow**, +whereas **Create Workspace Flow** is built upon a **Flow**. You can access both in the **Studio**. You can also +manage **Flows** in the **Flow Designer**. To manage **Workflows**, navigate to **All > Workflow Editor**. + +You can find the ServiceNow Example Flows for Terraform in the **ServiceNow Studio > Flows** (or **All > Flow Designer**). +Search for items that belong to the **Terraform** application. By default, Flows execute when someone submits an order request +for a catalog item based on a Flow. Admins can customize the Flows and Actions to add approval flows, set approval rules based +on certain conditions, and configure multiple users or roles as approvers for specific catalog items. + +| Flow Name | Description | +| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Create Workspace | Creates a new HCP Terraform workspace from VCS repository. | +| Create Workspace with Vars | Creates a new HCP Terraform workspace from VCS repository and creates any variables provided. | +| Create Run | Creates and queues a new run in the HCP Terraform workspace. | +| Apply Run | Applies a run in the HCP Terraform workspace. | +| Provision Resources | Creates a new HCP Terraform workspace (with auto-apply), creates and queues a run, then applies the run when ready. | +| Provision Resources with Vars | Creates a new HCP Terraform workspace (with auto-apply), creates any variables, creates/queues a run, applies the run when ready. | +| Provision No-Code Workspace and Deploy Resources | Creates a new HCP Terraform workspace based on a no-code module configured in the private registry (with auto-apply), creates any variables, creates and queues a run, then applies the run when ready. | +| Delete Workspace | Creates a destroy run plan. | +| Worker Poll Run State | Polls the HCP Terraform API for the current run state of a workspace. | +| Worker Poll Apply Run | Polls the HCP Terraform API and applies any pending Terraform runs. | +| Worker Poll Destroy Workspace | Queries ServiceNow Terraform Records for resources marked `is_destroyable`, applies the destroy run to destroy resources, and deletes the corresponding Terraform workspace. | +| Update No-Code Workspace and Deploy Resources | Updates an existing no-code workspace to the most recent no-code module version, updates that workspace's attached variable values, and then starts a new Terraform run. | +| Update Workspace | Updates HCP Terraform workspace configurations, such as VCS repository, description, project, execution mode, and agent pool ID (if applicable). | +| Update Workspace with Vars | Allows you to change details about the HCP Terraform workspace configurations and attached variable values. | +| Update Resources | Updates HCP Terraform workspace details and starts a new Terraform run with these new values. | +| Update Resources with Vars | Updates your existing HCP Terraform workspace and its variables, then starts a Terraform run with these updated values. | + +## ServiceNow ACLs + +Access control lists (ACLs) restrict user access to objects and operations based +on permissions granted. This integration includes the following roles that can +be used to manage various components. + +| Access Control Roles | Description | +| :---------------------------------- | --------------------------------------------------------------------------------------------- | +| `x_terraform.config_user` | Can manage the connection from the ServiceNow application to your HCP Terraform organization. | +| `x_terraform.terraform_user` | Can manage all of the Terraform resources created in ServiceNow. | +| `x_terraform.vcs_repositories_user` | Can manage the VCS repositories available for catalog items to be ordered by end-users. | + +For users who only need to order from the Terraform Catalog, we recommend +creating another role with read-only permissions for +`x_terraform_vcs_repositories` to view the available repositories for ordering +infrastructure. Install the Terraform ServiceNow Service Catalog integration by +following [the installation guide](/terraform/enterprise/integrations/service-now/service-catalog-terraform). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/example-customizations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/example-customizations.mdx new file mode 100644 index 0000000000..c14d11a220 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/example-customizations.mdx @@ -0,0 +1,174 @@ +--- +page_title: ServiceNow Service Catalog integration example configurations +description: >- + Learn from example common customizations of the ServiceNow Service Catalog + integration. +source: terraform-docs-common +--- + +# ServiceNow Service Catalog integration example configurations + +This example use case creates a Terraform Catalog Item for requesting resources +with custom variable values passed to the Terraform configuration. + +## Change the scope + +When you make a customization to the app, ensure you switch to the "Terraform" +scope. This guarantees that all items you create are correctly assigned to that +scope. To change the scope in your ServiceNow instance, click the globe icon at +the top right of the screen. For detailed instructions on changing the scope, +refer to the [ServiceNow +documentation](https://developer.servicenow.com/dev.do#!/learn/learning-plans/xanadu/new_to_servicenow/app_store_learnv2_buildneedit_xanadu_application_scope). + +## Make a copy of the existing Catalog Item + +The ServiceNow Service Catalog for Terraform application provides pre-configured [Catalog +Items](/terraform/enterprise/integrations/service-now/service-catalog-terraform/developer-reference#example-service-catalog-flows-and-actions) +for immediate use. We recommend creating a copy of the most recent version of the +Catalog Item to ensure you have access to the latest features and +improvements. Make a copy of the most appropriate Catalog Item for your specific +business requirements by following these steps: + +1. Navigate to **All > Service Catalog > Catalogs > Terraform Catalog**, and review the + Catalog Items based on flows, whose names use the suffix "Flow". + We recommend choosing Flows over Workflows because Flows provide enhanced functionality and performance and are actively developed by ServiceNow. + For more information, refer + to [Catalog Items based on Flows vs. Workflows](/terraform/enterprise/integrations/service-now/service-catalog-terraform/developer-reference#example-service-catalog-flows-and-actions). +2. Open the Catalog Item in editing mode: + 1. Click the Catalog Item to open the request form. + 2. Click **...** in the top right corner. + 3. Select **Configure Item** from the menu. + ![Screenshot: ServiceNow Configure Catalog Item](/img/docs/servicenow-catalog-configure-item.png "Screenshot of the ServiceNow Configure Catalog Item dropdown menu") +3. Click the **Process Engine** tab in the Catalog Item configuration. Take + note of the Flow name associated with the Catalog Item, because you need to + create a copy of this Flow as well. + ![Screenshot: ServiceNow Process Engine](/img/docs/servicenow-catalog-process-engine.png "Screenshot of the ServiceNow Configure Catalog Item – Process Engine tab") +4. Start the copying process: + 1. Click the **Copy** button above the **Related Links** section. + 2. Assign a new name to the copied Catalog Item. + 3. Optionally, modify the description and short description fields. + Right-click the header and select **Save**. + ![Screenshot: ServiceNow Copy Item](/img/docs/servicenow-catalog-copied-item.png "Screenshot of the copied ServiceNow Catalog Item") + +## Adjust the Variable Set + +If a Catalog Item requires users to input variable values, +you must update the variable set with those required variables. +Although some default Catalog Items come with pre-defined example variables, it +is common practice to remove these and replace them with your own custom +variables. + +1. Create a new Variable Set. + 1. On the Catalog Item's configuration page, under the **Related Links** + section, click the **Variable Sets** tab. + 2. Click the **New** button to create a new variable set. Ensure that the + variables in your new set match the variables required by your Terraform + configuration. + ![Screenshot: ServiceNow New Variable Set](/img/docs/servicenow-catalog-new-varset.png "Screenshot of the ServiceNow Catalog Item – new Variable Set") + 3. Select **Single-Row Variable Set** and provide a title and description. + 4. Click **Submit**. Upon submission, you will be redirected back to the Catalog + Item's configuration page. + ![Screenshot: ServiceNow New Variable Set Form](/img/docs/servicenow-catalog-new-varset-form.png "Screenshot of the ServiceNow Catalog Item – new Variable Set") + 5. Click the name of your newly created Variable Set and create your + variables. You must follow the [naming convention for Terraform + variables](/terraform/enterprise/integrations/service-now/service-catalog-terraform/developer-reference#terraform-variables-and-servicenow-variable-sets). + ServiceNow offers various types of variable representation (such as strings, + booleans, and dropdown menus). Refer to the [ServiceNow documentation on + variables](https://docs.servicenow.com/csh?topicname=c_ServiceCatalogVariables.html&version=latest) + and select the types that best suit your use case. You can also set default + values for the variables in the **Default Value** tab, which ServiceNow prefills for the end users. + ![Screenshot: ServiceNow New Variables](/img/docs/servicenow-catalog-variables.png "Screenshot of the ServiceNow Catalog Item – new variables") +2. Attach the newly created Variable Set to your custom Catalog Item and remove + the default Workspace Variables. + 1. Return to the **Variable Sets** tab on the Catalog Item's configuration page + and click the **Edit** button. + 2. Move the "Workspace Variables" Set from the right side to the left side + and click **Save**. Do not remove the + "Workspace Request Create" or the "Workspace Request Update" Sets. + ![Screenshot: ServiceNow Remove Example Variables](/img/docs/servicenow-catalog-remove-example-variables.png "Screenshot of the ServiceNow Catalog Item – new variables") + +## Make a copy of the Flow and Action + +1. Open the ServiceNow Studio by navigating to **All > Studio** and open the + "Terraform" application. Once in the **Terraform** application, navigate to + **Flow Designer > Flows**. + ![Screenshot: ServiceNow Flow Designer Interface](/img/docs/servicenow-catalog-original-flow.png "Screenshot of the ServiceNow Flow Designer – selecting a Flow") + + Another way to access the ServiceNow Studio is to click **All**, select + "Flow Designer", then select **Flows**. You can set the **Application** + filter to "Terraform" to quickly find the desired Flow. +2. Open the Flow referenced in your Catalog Item. Click **...** + in the top right corner of the Flow Designer interface and + select **Copy flow**. Provide a name for the copied Flow and + click **Copy**. + ![Screenshot: ServiceNow Copy Flow Interface](/img/docs/servicenow-catalog-copy-flow.png "Screenshot of the ServiceNow Flow Designer – copying a Flow") +3. Customize your newly copied Flow by clicking **Edit flow**. + ![Screenshot: ServiceNow Edit New Flow Interface](/img/docs/servicenow-catalog-edit-flow.png "Screenshot of the ServiceNow Flow Designer – editing a Flow") + 1. Do not change the **Service Catalog** trigger. + 2. Update the "Get Catalog Variables" action: + 1. Keep the "Requested Item Record" in the **Submitted Request** field. + 2. Select your newly created Catalog Item from the dropdown menu for + **Template Catalog Item**. + 3. Move all of your variables to the **Selected** side in the **Catalog + Variables** section. Remove any previous example variables from the + **Available** side. + ![Screenshot: ServiceNow Get Variables Flow Step](/img/docs/servicenow-catalog-get-variables.png "Screenshot of the ServiceNow Flow Designer – getting Variables step") + 4. Click **Done** to finish configuring this Action. +4. Unfold the second Action in the Flow and click the arrow to open it in + the Action Designer. + ![Screenshot: ServiceNow Open Action Designer](/img/docs/servicenow-catalog-open-action.png "Screenshot of the ServiceNow Action Designer") + 1. Click **...** in the top right corner and select **Copy Action**. + ![Screenshot: ServiceNow Copy Action](/img/docs/servicenow-catalog-copy-action.png "Screenshot of the ServiceNow Copy Action") + Rename it and click **Copy**. + ![Screenshot: ServiceNow Rename Action](/img/docs/servicenow-catalog-rename-action.png "Screenshot of the ServiceNow Rename Action") + 2. In the the Inputs section, remove any previous example variables. + ![Screenshot: ServiceNow Remove Variables From Action](/img/docs/servicenow-catalog-remove-example-variables-from-action.png "Screenshot of the ServiceNow Action Input Variables") + 3. Add your custom variables by clicking the **Create Input** button. Ensure that the variable names match your Catalog Item variables and select the variable type that matches each variable. Click **Save**. + ![Screenshot: ServiceNow Add Variables To Action](/img/docs/servicenow-catalog-add-variables-to-action.png "Screenshot of adding ServiceNow Action Input Variables") + 4. Open the **Script step** within the Action. Remove any example variables + and add your custom variables by clicking **Create Variable** at the + bottom. Enter the name of each variable and drag the corresponding data + pill from the right into the **Value field**. + ![Screenshot: ServiceNow Add Script Step Variables To Action](/img/docs/servicenow-catalog-adjust-script-variables.png "Screenshot of adjusting ServiceNow Action Script Variables") + 5. Click **Save** and then **Publish**. +5. Reopen the Flow and attach the newly created Action to the Flow + after "Get Catalog Variables" step: + 1. Remove the "Create Terraform Workspace with Vars" Action that you copied earlier and replace it with + your newly created Action. + ![Screenshot: ServiceNow Replace Action Step](/img/docs/servicenow-catalog-replace-action.png "Screenshot of replacing ServiceNow Action step") + 2. Connect the new Action to the Flow by dragging and dropping the data pills + from the "Get Catalog Variables" Action to the corresponding inputs of + your new Action. Click **Done** to save this step. + ![Screenshot: ServiceNow Fill Variables for Action](/img/docs/servicenow-catalog-fill-new-action-step.png "Screenshot of filling out ServiceNow Action variables") + 3. Click **Save**. + 4. Click **Activate** to enable the Flow and make it available for use. + +## Set the Flow for your Catalog Item + +1. Navigate back to the Catalog by clicking on **All** and then go to **Service + Catalog > Catalogs > Terraform Catalog**. +2. Locate your custom Catalog Item and click **...** at the top + of the item. From the dropdown menu, select **Configure item**. +3. In the configuration settings, click the **Process Engine** tab. +4. In the **Flow** field, search for the Flow you recently created. Click + the Flow then click the **Update**. + ![Screenshot: ServiceNow Update Process Engine](/img/docs/servicenow-catalog-update-process-engine.png "Screenshot of updating Process Engine for the Catalog Item") + +## Test the Catalog Item + +The new item is now available in the Terraform Service Catalog. To make the +new item accessible to your end users via the Service Portal, follow these +steps: + +1. Navigate to the configuration page of the item you want to make available. +2. Locate the **Catalogs** field on the configuration page and click the lock + icon next to it. +3. In the search bar, type "Service Catalog" and select it from the search + results. Add "Service Catalog" to the list of catalogs associated with the + item. Click the lock icon again to lock the changes. + ![Screenshot: ServiceNow Enable Service Portal](/img/docs/servicenow-catalog-service-portal.png "Screenshot of adding the Catalog Item to the Service Portal") +4. Click the **Update** button at the top of the page. + +After completing these steps, end users will be able to +access the new item through the Service Portal of your ServiceNow instance. You +can access the Service Portal by navigating to **All > Service Portal Home**. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/index.mdx new file mode 100644 index 0000000000..83f0111836 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/index.mdx @@ -0,0 +1,239 @@ +--- +page_title: Set up ServiceNow Service Catalog integration for Terraform Enterprise +description: >- + Learn how to set up the ServiceNow Service Catalog integration for Terraform + Enterprise. +source: terraform-docs-common +--- + +# Set up ServiceNow Service Catalog integration for HCP Terraform + +-> **Integration version:** v2.8.1 + +The Terraform ServiceNow Service Catalog integration enables your end-users to +provision self-serve infrastructure via ServiceNow. By connecting ServiceNow to +HCP Terraform, this integration lets ServiceNow users order Service Items, +create workspaces, and perform Terraform runs using prepared Terraform +configurations hosted in VCS repositories or as [no-code +modules](/terraform/enterprise/no-code-provisioning/module-design) for +self-service provisioning. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/servicenow-catalog.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Summary of the Setup Process + +The integration relies on Terraform ServiceNow Catalog integration software +installed within your ServiceNow instance. Installing and configuring this +integration requires administration in both ServiceNow and HCP Terraform. +Since administrators of these services within your organization are not +necessarily the same person, this documentation refers to a **ServiceNow Admin** +and a **Terraform Admin**. + +First, the Terraform Admin configures your HCP Terraform organization with a +dedicated team for the ServiceNow integration, and obtains a team API token for +that team. The Terraform Admin provides the following to your ServiceNow admin: + +- An Organization name +- A team API token +- The hostname of your HCP Terraform instance +- Any available no-code modules or version control repositories containing Terraform configurations +- Other required variables + token, the hostname of your HCP Terraform instance, and details about no-code + modules or version control repositories containing Terraform configurations and + required variables to the ServiceNow Admin. + +Next, the ServiceNow Admin will install the Terraform ServiceNow Catalog +integration to your ServiceNow instance, and configure it using the team API +token and hostname. + +Finally, the ServiceNow Admin will create a Service Catalog within ServiceNow +for the Terraform integration, and configure it using the version control +repositories or no-code modules, and variable definitions provided by the +Terraform Admin. + +| ServiceNow Admin | Terraform Admin | +| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | Prepare an organization for use with the ServiceNow Catalog. | +| | Create a team that can manage workspaces in that organization. | +| | Create a team API token so the integration can use that team's permissions. | +| | If using VCS repositories, retrieve the OAuth token IDs and repository identifiers that HCP Terraform uses to identify your VCS repositories. If using a no-code flow, [create a no-code ready module](/terraform/enterprise/no-code-provisioning/provisioning) in your organization's private registry. Learn more in [Configure VCS Repositories or No-Code Modules](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config#configure-vcs-repositories-or-no-code-modules). | +| | Provide the API token, OAuth token ID, repository identifiers, variable definitions, and HCP Terraform hostname to the ServiceNow Admin. | +| Install the Terraform integration application from the ServiceNow App Store. | | +| Connect the integration application with HCP Terraform. | | +| Add the Terraform Service Catalog to ServiceNow. | | +| If you are using the VCS flow, configure the VCS repositories in ServiceNow. | | +| Configure variable sets for use with the VCS repositories or no-code modules. | | + +Once these steps are complete, self-serve infrastructure will be available +through the ServiceNow Catalog. HCP Terraform will provision and manage +requested infrastructure and report the status back to ServiceNow. + +## Prerequisites + +To start using Terraform with the ServiceNow Catalog Integration, you must have: + +- An administrator account on a Terraform Enterprise instance or within a + HCP Terraform organization. +- An administrator account on your ServiceNow instance. +- If you are using the VCS flow, one or more [supported version control + systems](/terraform/enterprise/vcs#supported-vcs-providers) (VCSs) with read + access to repositories with Terraform configurations. +- If you are using no-code provisioning, one or more [no-code modules](/terraform/enterprise/no-code-provisioning/provisioning) created in + your organization's private registry. Refer to the [no-code module + configuration](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config#no-code-module-configuration) + for information about using no-code modules with the ServiceNow Service Catalog + for Terraform. + +You can use this integration on the following ServiceNow server versions: + +- Washington DC +- Xanadu +- Yokohama + +It requires the following ServiceNow plugins as dependencies: + +- Flow Designer support for the Service Catalog (`com.glideapp.servicecatalog.flow_designer`) +- ServiceNow IntegrationHub Action Step - Script (`com.glide.hub.action_step.script`) +- ServiceNow IntegrationHub Action Step - REST (`com.glide.hub.action_step.rest`) + +-> **Note:** Dependent plugins are installed on your ServiceNow instance automatically when the app is downloaded from the ServiceNow Store. + +## Configure HCP Terraform + +Before installing the ServiceNow integration, the Terraform Admin will need to +perform the following steps to configure and gather information from HCP +Terraform. + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise. +2. Either [create an + organization](/terraform/enterprise/users-teams-organizations/organizations#creating-organizations) + or choose an existing organization where ServiceNow will create new + workspaces. + **Save the organization name for later.** +3. [Create a team](/terraform/enterprise/users-teams-organizations/teams) for that + organization called "ServiceNow", and ensure that it has [permission to + manage + workspaces](/terraform/enterprise/users-teams-organizations/permissions#manage-all-workspaces). + You do not need to add any users to this team. + [permissions-citation]: #intentionally-unused---keep-for-maintainers +4. On the "ServiceNow" team's settings page, generate a [team API + token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). + **Save the team API token for later.** +5. If you are using the [VCS flow](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config#vcs-configuration): + 1. Ensure your Terraform organization is [connected to a VCS provider](/terraform/enterprise/vcs). Repositories that are connectable to HCP Terraform workspaces can also be used as workspace templates in the ServiceNow integration. + 2. On your organization's VCS provider settings page (**Settings** > **VCS Providers**), find the OAuth Token ID for the VCS provider(s) that you intend to use with the ServiceNow integration. HCP Terraform uses the OAuth token ID to identify and authorize the VCS provider. **Save the OAuth token ID for later.** + 3. Identify the VCS repositories in the VCS provider containing Terraform configurations that the ServiceNow Terraform integration will deploy. Take note of any Terraform or environment variables used by the repositories you select. Save the Terraform and environment variables for later. +6. If using the [no-code flow](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config#no-code-module-configuration), create one or more no-code modules in the private registry of your HCP Terraform. **Save the no-code module names for later.** +7. Provide the following information to the ServiceNow Admin: + - The organization name + - The team API token + - The hostname of your Terraform Enterprise instance, or of HCP Terraform. The hostname of HCP Terraform is `app.terraform.io`. + - The no-code module name(s) or the OAuth token ID(s) of your VCS provider(s), and the repository identifier for each VCS repository containing Terraform configurations that will be used by the integration. + - Any Terraform or environment variables required by the configurations in the + given VCS repositories. + +-> **Note:** Repository identifiers are determined by your VCS provider; they +typically use a format like `<ORGANIZATION>/<REPO_NAME>` or +`<PROJECT_KEY>/<REPO_NAME>`. Azure DevOps repositories use the format +`<ORGANIZATION>/<PROJECT>/_git/<REPO_NAME>`. A GitHub repository hosted at +`https://github.com/exampleorg/examplerepo/` would have the repository +identifier `exampleorg/examplerepo`. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +For instance, if you are configuring this integration for your company, `Example +Corp`, using two GitHub repositories, you would share values like the following +with the ServiceNow Admin. + +```markdown +Terraform Enterprise Organization Name: `ServiceNowExampleOrg` + +Team API Token: `q2uPExampleELkQ.atlasv1.A7jGHmvufExampleTeamAPITokenimVYxwunJk0xD8ObVol054` + +Terraform Enterprise Hostname: `terraform.corp.example` + +OAuth Token ID (GitHub org: example-corp): `ot-DhjEXAMPLELVtFA` + - Repository ID (Developer Environment): `example-corp/developer-repo` + - Environment variables: + - `AWS_ACCESS_KEY_ID=AKIAEXAMPLEKEY` + - `AWS_SECRET_ACCESS_KEY=ZB0ExampleSecretAccessKeyGjUiJh` + - `AWS_DEFAULT_REGION=us-west-2` + - Terraform variables: + - `instance_type=t2.medium` + - Repository ID (Testing Environment): `example-corp/testing-repo` + - Environment variables: + - `AWS_ACCESS_KEY_ID=AKIAEXAMPLEKEY` + - `AWS_SECRET_ACCESS_KEY=ZB0ExampleSecretAccessKeyGjUiJh` + - `AWS_DEFAULT_REGION=us-west-2` + - Terraform variables: + - `instance_type=t2.large` +``` + +## Install the ServiceNow Integration + +Before beginning setup, the ServiceNow Admin must install the Terraform +ServiceNow Catalog integration software. + +This can be added to your ServiceNow instance from the [ServiceNow +Store](https://store.servicenow.com/sn_appstore_store.do). Search for the "Terraform" integration, +published by "HashiCorp Inc". + +![Screenshot: ServiceNow Store Page](/img/docs/service-now-store.png "Screenshot of the ServiceNow Store listing for the Terraform Integration") + +## Connect ServiceNow to HCP Terraform + +-> **ServiceNow Roles:** `admin` or `x_terraform.config_user` + +Once the integration is installed, the ServiceNow Admin can connect your +ServiceNow instance to HCP Terraform. Before you begin, you will need the +information described in the "Configure HCP Terraform" section from your +Terraform Admin. + +Once you have this information, connect ServiceNow to HCP Terraform with +the following steps. + +1. Navigate to your ServiceNow Service Management Screen. +2. Using the left-hand navigation, open the configuration table for the + integration to manage the HCP Terraform connection. + - Terraform > Configs +3. Click on "New" to create a new HCP Terraform connection. + - Set Org Name to the HCP Terraform organization name. + - Click on the "Lock" icon to set Hostname to the hostname of your Terraform + Enterprise instance. If you are using the SaaS version of HCP Terraform, + the hostname is `https://app.terraform.io`. Be sure to include "https&#x3A;//" + before the hostname. + - Set API Team Token to the HCP Terraform team API token. + - (Optional) To use the [MID Server](https://docs.servicenow.com/csh?topicname=mid-server-landing.html&version=latest), + select the checkbox and type the `name` in the `MID Server Name` field. +4. Click "Submit". + +![Screenshot: ServiceNow Terraform Config](/img/docs/service-now-updated-config.png "Screenshot of the ServiceNow Terraform Config New Record page") + +## Create and Populate a Service Catalog + +Now that you have connected ServiceNow to HCP Terraform, you are ready to +create a Service Catalog using the VCS repositories or no-code modules provided +by the Terraform Admin. + +Navigate to the [Service Catalog documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config) to +begin. You can also refer to this documentation whenever you need to add or +update request items. + +### ServiceNow Developer Reference + +ServiceNow developers who wish to customize the Terraform integration can refer +to the [developer documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform/developer-reference). + +### ServiceNow Administrator's Guide. + +Refer to the [ServiceNow Administrator documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform/admin-guide) for +information about configuring the integration. + +### Example Customizations + +Once the ServiceNow integration is installed, you can consult the [example +customizations documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform/example-customizations). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config.mdx new file mode 100644 index 0000000000..ce972ed701 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config.mdx @@ -0,0 +1,255 @@ +--- +page_title: Create and manage ServiceNow Service Catalog items with Terraform Enterprise +description: >- + Create and manage service catalog items to allow end users to provision + infrastructure using ServiceNow and Terraform Enterprise. +source: terraform-docs-common +--- + +# Create and manage ServiceNow Service Catalog items + +When using ServiceNow with the HCP Terraform integration, you will configure +at least one service catalog item. You will also configure one or more version +control system (VCS) repositories or no-code modules containing the Terraform +configurations which will be used to provision that infrastructure. End users +will request infrastructure from the service catalog, and HCP Terraform will +fulfill the request by creating a new workspace, applying the configuration, and +then reporting the results back to ServiceNow. + +## Prerequisites + +Before configuring a service catalog, you must install and configure the +HCP Terraform integration software on your ServiceNow instance. These steps +are covered in the [installation documentation](/terraform/enterprise/integrations/service-now/service-catalog-terraform). + +Additionally, you must have have the following information: + +1. The no-code module name or the OAuth token ID and repository identifier for + each VCS repository that HCP Terraform will use to provision + infrastructure. Your Terraform Admin will provide these to you. Learn more in + [Configure VCS Repositories or No-Code + Modules](/terraform/enterprise/integrations/service-now/service-catalog-terraform/service-catalog-config#configure-vcs-repositories-or-no-code-modules). +2. Any Terraform or environment variables required by the configurations in the + given VCS repositories or no-code modules. + +Once these steps are complete, in order for end users to provision +infrastructure with ServiceNow and HCP Terraform, the ServiceNow Admin will +perform the following steps to make Service Items available to your end users. + +1. Add at least one service catalog for use with Terraform. +2. If you are using the VCS flow, configure at least one one VCS repository in ServiceNow. +3. Create variable sets to define Terraform and environment variables to be used + by HCP Terraform to provision infrastructure. + +## Add the Terraform Service Catalog + +-> **ServiceNow Role:** `admin` + +First, add a Service Catalog for use with the Terraform integration. Depending +on your organization's needs, you might use a single service catalog, or +several. If you already have a Service Catalog to use with Terraform, skip to +the next step. + +1. In ServiceNow, open the Service Catalog > Catalogs view by searching for + "Service Catalog" in the left-hand navigation. + 1. Click the plus sign in the top right. + 2. Select "Catalogs > Terraform Catalog > Title and Image" and choose a + location to add the Service Catalog. + 3. Close the "Sections" dialog box by clicking the "x" in the upper right-hand + corner. + +-> **Note:** In step 1, be sure to choose "Catalogs", not "Catalog" from the +left-hand navigation. + +## Configure VCS Repositories or No-Code Modules + +-> **ServiceNow Roles:** `admin` or `x_terraform.vcs_repositories_user` + +Terraform workspaces created through the ServiceNow Service Catalog for +Terraform can be associated with a VCS +provider repository or be backed by a [no-code +module](/terraform/enterprise/no-code-provisioning/provisioning) in your +organization's private registry. Administrators determine which workspace type +end users can request from the Terraform Catalog. Below are the key +differences between the version control and no-code approaches. + +### VCS configuration + +To make infrastructure available to your users through version control +workspaces, you must add one or more VCS repositories containing Terraform +configurations to the Service Catalog for Terraform. + +1. In ServiceNow, open the "Terraform > VCS Repositories" table by searching for + "Terraform" in the left-hand navigation. +2. Click "New" to add a VCS repository, and fill in the following fields: + - Name: The name for this repository. This name will be visible to end + users, and does not have to be the same as the repository name as defined + by your VCS provider. Ideally it will succinctly describe the + infrastructure that will be provisioned by Terraform from the repository. + - OAuth Token ID: The OAuth token ID that from your HCP Terraform + organization's VCS providers settings. This ID specifies which VCS + provider configured in HCP Terraform hosts the desired repository. + - Identifier: The VCS repository that contains the Terraform configuration + for this workspace template. Repository identifiers are determined by your + VCS provider; they typically use a format like + `<ORGANIZATION>/<REPO_NAME>` or `<PROJECT KEY>/<REPO_NAME>`. Azure DevOps + repositories use the format `<ORGANIZATION>/<PROJECT>/_git/<REPO_NAME>`. + - The remaining fields are optional. + - Branch: The branch within the repository, if different from the default + branch. + - Working Directory: The directory within the repository containing + Terraform configuration. + - Terraform Version: The version of Terraform to use. This will default to + the latest version of Terraform supported by your HCP Terraform + instance. +3. Click "Submit". + +![Screenshot: ServiceNow New VCS Repository](/img/docs/service-now-vcs-repository.png "Screenshot of the ServiceNow Terraform New VCS Repository page") + +After configuring your repositories in ServiceNow, the names of those +repositories will be available in the "VCS Repository" dropdown menu a user +orders new workspaces through the following items in the Terraform Catalog: + +- **Create Workspace** +- **Create Workspace with Variables** +- **Provision Resources** +- **Provision Resources with Variables** + +### No-Code Module Configuration + +In version 2.5.0 and newer, ServiceNow administrators can configure +Catalog Items using [no-code +modules](/terraform/enterprise/no-code-provisioning/provisioning). This release +introduces two new additions to the Terraform Catalog - no-code workspace +create and update Items. Both utilize no-code modules from the private registry +in HCP Terraform to enable end users to request infrastructure without writing +code. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/nocode.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +The following Catalog Items allow you to build and manage workspaces with +no-code modules: + +- **Provision No-Code Workspace and Deploy Resources**: creates a new Terraform + workspace based on a no-code module of your choice, supplies required variable + values, runs and applies Terraform. +- **Update No-Code Workspace and Deploy Resources**: Updates an existing no-code + workspace to the most recent no-code module version, updates that workspace's + attached variable values, and then starts and applies a new Terraform run. + +Administrators can skip configuring VCS repositories in ServiceNow when using +no-code modules. The only input required in the no-code workspace request form +is the name of the no-code module. + +Before utilizing a no-code module, you must publish it to the your organization's +private module registry. With this one-time configuration complete, ServiceNow +Administrators can then call the modules through Catalog requests without +repository management, simplifying the use of infrastructure-as-code. + +> **Hands On:** Try the [Self-service enablement with HCP Terraform and ServiceNow tutorial](/terraform/tutorials/it-saas/servicenow-no-code). + +## Configure a Variable Set + +Most Terraform configurations can be customized with Terraform variables or +environment variables. You can create a Variable Set within ServiceNow to +contain the variables needed for a given configuration. Your Terraform Admin +should provide these to you. + +1. In ServiceNow, open the "Service Catalog > Variable Sets" table by searching for + "variable sets" in the left-hand navigation. +2. Click "New" to add a Variable Set. +3. Select "Single-Row Variable Set". + - Title: User-visible title for the variable set. + - Internal name: The internal name for the variable set. + - Order: The order in which the variable set will be displayed. + - Type: Should be set to "Single Row" + - Application: Should be set to "Terraform" + - Display title: Whether the title is displayed to the end user. + - Layout: How the variables in the set will be displayed on the screen. + - Description: A long description of the variable set. +4. Click "Submit" to create the variable set. +5. Find and click on the title of the new variable set in the Variable Sets + table. +6. At the bottom of the variable set details page, click "New" to add a new + variable. + +- Type: Should be "Single Line Text" for most variables, or "Masked" for + variables containing sensitive values. +- Question: The user-visible question or label for the variable. +- Name: The internal name of the variable. This must be derived from the name of the + Terraform or environment variable. Consult the table below to determine the + proper prefix for each variable name. +- Tooltip: A tooltip to display for the variable. +- Example Text: Example text to show in the variable's input box. + +1. Under the "Default Value" tab, you can set a default value for the variable. +2. Continue to add new variables corresponding to the Terraform and environment + variables the configuration requires. + +When the Terraform integration applies configuration, it will map ServiceNow +variables to Terraform and environment variables using the following convention. +ServiceNow variables that begin with "sensitive\_" will be saved as sensitive +variables within HCP Terraform. + +| ServiceNow Variable Name | HCP Terraform Variable | +| -------------------------------- | ---------------------------------------------------------- | +| `tf_var_VARIABLE_NAME` | Terraform Variable: `VARIABLE_NAME` | +| `tf_env_ENV_NAME` | Environment Variable: `ENV_NAME` | +| `sensitive_tf_var_VARIABLE_NAME` | Sensitive Terraform Variable (Write Only): `VARIABLE_NAME` | +| `sensitive_tf_env_ENV_NAME` | Sensitive Environment Variable (Write Only): `ENV_NAME` | + +## Provision Infrastructure + +Once you configure the Service Catalog for Terraform, ServiceNow users +can request infrastructure to be provisioned by HCP Terraform. + +These requests will be fulfilled by HCP Terraform, which will: + +1. Create a new workspace from the no-code module or the VCS repository provided by ServiceNow. +2. Configure variables for that workspace, also provided by ServiceNow. +3. Plan and apply the change. +4. Report the results, including any outputs from Terraform, to ServiceNow. + +Once this is complete, ServiceNow will reflect that the Request Item has been +provisioned. + +-> **Note:** The integration creates workspaces with +[auto-apply](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply) +enabled. HCP Terraform will queue an apply for these workspaces whenever +changes are merged to the associated VCS repositories. This is known as the +[VCS-driven run workflow](/terraform/enterprise/run/ui). It is important to keep in mind +that all of the ServiceNow workspaces connected to a given repository will be +updated whenever changes are merged to the associated branch in that repository. + +## Execution Mode + +If using v2.2.0 or above, the Service Catalog app allows you to set an [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) for your Terraform workspaces. There are two modes to choose from: + +- The default value is "Remote", which instructs HCP Terraform to perform runs on its disposable virtual machines. +- Selecting "Agent" mode allows you to run Terraform operations on isolated, private, or on-premises infrastructure. This option requires you to create an Agent Pool in your organization beforehand, then provide that Agent Pool's id when you order a new workspace through the Service Catalog. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/agents.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Workspace Name + +Version 2.4.0 of the Service Catalog for Terraform introduces the ability to set custom names for your Terraform workspaces. You can choose a prefix for your workspace name that the Service Catalog app will append the ServiceNow RITM number to. If you do not define a workspace prefix, ServiceNow will use RITM number as the workspace name. + +Workspace names can include letters, numbers, dashes (`-`), and underscores (`_`), and should not exceed 90 characters. +Refer to the [workspace naming recommendations](/terraform/enterprise/workspaces/create#workspace-naming) for best practices. + +## Workspace Tags + +Version 2.8.0 extends support for the key-value pair tags while still also supporting flat string tags version 2.4.0 introduced. Use the "Workspace Tags" field to provide a comma-separated list of key-value pair tags in the format "env: prod, instance: test" that will be parsed and attached to the workspace in HCP Terraform. + +Tags give you an easier way to categorize, filter, and manage workspaces provisioned through the Service Catalog for Terraform. +We recommend that you set naming conventions for tags with your end users to avoid variations such as `ec2`, `aws-ec2`, `aws_ec2`. + +Workspace tags have a 255 character limit and can contain letters, numbers, colons, hyphens, and underscores. Refer to the [workspace tagging rules](/terraform/enterprise/workspaces/create#workspace-tags) for more details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/troubleshoot.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/troubleshoot.mdx new file mode 100644 index 0000000000..b43864651c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-catalog-terraform/troubleshoot.mdx @@ -0,0 +1,120 @@ +--- +page_title: >- + Troubleshoot the ServiceNow Service Catalog Integration for Terraform + Enterprise +description: Troubleshooting tips for ServiceNow Service Catalog Integration. +source: terraform-docs-common +--- + +# Troubleshoot the ServiceNow Service Catalog integration + +This page offers troubleshooting tips for common issues with the ServiceNow Service Catalog Integration for HCP Terraform. +It also provides instructions on how to find and read logs to diagnose and resolve issues. + +## Find logs + +Logs are crucial for diagnosing issues. You can find logs in ServiceNow in the following places: + +### Workflow logs + +To find workflow logs, click on the RITM number on a failed ticket to open the request item. +Scroll down to **Related Links > Workflow Context** and open the **Workflow Log** tab. + +### Flow logs + +To find flow logs, click on the RITM number on a failed ticket to open the request item. +Scroll down to **Related Links > Flow Context > Open Context Record** and open the **Flow engine log entries** tab. + +### Application logs + +To find application logs, navigate to **All > System Log > Application Logs.** +Set the **Application** filter to "Terraform". +Search for logs around the time your issue occurred. Some records include HTTP status codes and detailed error messages. + +### Outbound requests + +ServiceNow logs all outgoing API calls, including calls to HCP Terraform. To view the log of outbound requests, navigate to **All > System Logs > Outbound HTTP Requests.** +To customize the table view, add columns like "URL," "URL Path," and "Application scope." +Logs from the Catalog app are marked with the `x_325709_terraform` scope. + +## Enable email notifications + +To enable email notifications and receive updates on your requested item tickets: + +1. Log in to your ServiceNow instance as an administrator. +2. **Click System Properties > Email Properties**. +3. In the **Outbound Email Configuration** panel, select **Yes** next to the check-box with the email that ServiceNow should send notifications to. + +To ensure you have relevant notifications configured in your instance: + +1. Navigate to **System Notification > Email > Notifications.** +2. Search for "Request Opened" and "Request Item Commented" and ensure they are activated. + +Reach out to ServiceNow customer support if you run into any issues with the global configurations. + +## Common problems + +This section details frequently encountered issues and how they can be resolved. + +### Failure to create a workspace + +If you order the "create a workspace" catalog item and nothing happens in ServiceNow and HCP Terraform does not create a workspace then there are several possible reasons why: + +Ensure your HCP Terraform token, hostname, and organization name is correct. + +1. Make sure to use a **Team API Token**. This can be found in HCP Terraform under "API Tokens". +2. Ensure the team API token has the correct permissions. +3. Double-check your organization name by copying and pasting it from HCP Terraform or Terraform Enterprise. +4. Double-check your host name. +5. Make sure you created your team API token in the same organization you are using +6. Test your configuration. First click **Update** to process any changes then \*\*Test Config to make sure the connection is working. + +Verify your VCS configuration. + +1. The **Identifier** field should not have any spaces. The ServiceNow Service Catalog Integration requires that you format repository names in the `username/repo_name` format. +2. The **Name** can be anything, but it is better to avoid special characters as per naming convention. +3. Double-check the OAuth token ID in your HCP Terraform/Terraform Enterprise settings. To retrieve your OAuth token ID, navigate to your HCP Terraform organization's settings page, then click **Provider** in the left navigation bar under **Version Control**. + +### Failure to successfully order any catalog item + +After placing an order for any catalog item, navigate to the comments section in the newly created RITM ticket. +The latest comment will contain a response from HCP Terraform. + +### Frequency of comments and outputs + +When you place an order in the Terraform Catalog, ServiceNow submits and processes the order, then attaches additional comments to the order to indicate whether HCP Terraform successfully created the workspace. + +By default, ServiceNow polls HCP Terraform every 5 minutes for the latest status of the Terraform run. ServiceNow does not show any comments until the next ping. + +To configure ServiceNow to poll HCP Terraform more frequently: + +1. Navigate to **All > Flow designer**. +2. Set the **Application** filter to **Terraform**. +3. Under the **Name** column click **Worker Poll Run State**. +4. Click on the trigger and adjust the interval to your desired schedule. +5. Click **Done > Save > Activate** to save your changes. + +### Using no-code modules feature + +If ServiceNow fails to deploy a no-code module catalog item, verify the following: + +1. Ensure that your HCP Terraform organization has an [HCP Plus tier](https://www.hashicorp.com/products/terraform/pricing) subscription. +2. Ensure the name you enter for your no-code module in the catalog user form matches the no-code module in HCP Terraform. + +### Updating no-code workspaces + +If the “update no-code workspace” catalog item returns the output message “No update has been made to the workspace”, then you have not upgraded your no-code module in HCP Terraform. + +### Application Scope + +If you are making customizations and you encounter unexpected issues, make sure to change the scope from **Global** to **Terraform** and recreate your customized items in the **Terraform scope**. +For additional instructions on customizations, refer to the [example customizations](/terraform/enterprise/integrations/service-now/service-catalog-terraform/example-customizations) documentation. + +### MID server + +If you are using a MID server in your configuration, check the connectivity by using the **Test Config** button on the configurations page. +Additionally, when ServiceNow provisions a MID server, navigate to **MID Servers > Servers** to check if the status is “up” and “validated”. + +### Configuration + +While the app allows multiple config entries, only one should be present as this can interfere with the functionality of the app. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/customizations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/customizations.mdx new file mode 100644 index 0000000000..9263ecc2a0 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/customizations.mdx @@ -0,0 +1,97 @@ +--- +page_title: Customize the ServiceNow Service Graph Connector for Terraform Enterprise +description: >- + Learn how to edit ETL mappings in the ServiceNow Service Graph Connector for + Terraform Enterprise integration. +source: terraform-docs-common +--- + +# Customize the ServiceNow Service Graph Connector for Terraform + +-> **ServiceNow roles:** `admin` + +-> **ServiceNow plugin requirement:** `IntegrationHub ETL` + +You can update and customize the default ETL mapping rules offered by the Service Graph Connector for Terraform. + +To ensure that your custom rules remain intact during future updates, you can clone the existing ETL record and maintain it separately from the default one. + +This documentation guides you through the process of mapping a resource using an example of an AWS virtual private network (VPC). Although this resource is already covered by the application, the principles discussed apply to any new potential resource mapping. + +Any customizations should be done from the application's scope: **Service Graph Connector for Terraform**. + +## Clone the ETL map + +Navigate to the **IntegrationHub ETL** in the top menu. Check the **SG-Terraform** record and click **Duplicate**. Refer to the [ServiceNow documentation](https://docs.servicenow.com/en-US/bundle/utah-servicenow-platform/page/product/configuration-management/task/duplicate-cmdb-transform-map.html) to create a duplicate of an existing ETL transform map. + +## Build a resource in HCP Terraform + +Create a new workspace in your HCP Terraform organization and create a Terraform resource that you would like to map. It helps to have a Terraform state record of the resource to ensure accurate mapping. + +[Configure a webhook](/terraform/enterprise/integrations/service-now/service-graph/service-graph-setup#configure-terraform-webhook) and initiate a Terraform run. + +## Download Terraform State + +Once the run is successfully completed, open your ServiceNow instance, click on **All** and navigate to **Scheduled Imports**. + +Open the **SG-Terraform Scheduled Process State** record, search for the import set corresponding to the latest webhook request. Click the **Import Set** field to open the import set. Wait for the import set to be successfully processed. + +Since there are no existing ETL rules configured for the new resource, it is ignored during the ETL process. + +Open the **Outbound Http Requests** tab to list the requests sent from your ServiceNow instance to HCP Terraform and get the latest state of the workspace. + +![ServiceNow Service Graph Connector Outbound Http Requests interface](/img/docs/service-now-service-graph-state-object-url.png) + +Open the record that starts with "<http://archivist.terraform.io"> by clicking on the timestamp. Copy the content of the URL field and open it you your browser to download the Terraform state file. + +Locate the resource in the state object. This JSON record will serve as a source for the future mapping. + +## Identify the CI target + +Pick a suitable Configuration Item (CI) target for your resource. For example, the AWS virtual private network (VPC) resource is mapped to Cloud Network (`cmdb_ci_network`) by the Service Graph Connector for Terraform. Refer to the [ServiceNow CMDB documentation](https://docs.servicenow.com/en-US/bundle/utah-servicenow-platform/page/product/configuration-management/reference/cmdb-tables-details.html) for more details on available CI tables. + +## Consult the CI Class Manager + +After selecting an appropriate CI target, it is important to consult the CI Class Manager for guidance on dependent relationships. Many CMDB resources rely on other CI tables. If a related class is not properly mapped, the ETL job will generate errors or warnings and fail to import your resource into the CMDB. + +In the top navigation, click on **All**, search for **CI Class Manager**, and click on **Open Hierarchy**. Search for your target CI Class and check **Dependent Relationships** tab to learn more about dependent mappings required by the resource. + +For example, according to the **CI Class Manager**, **Cloud Network** should be hosted on **Logical Datacenter** and **Cloud Service Account**. + +## Set the mapping rules + +Open the **IntegrationHub ETL** from the top navigation menu and select your cloned ETL map record prepared for customization. Refer to the [ServiceNow documentation](https://docs.servicenow.com/en-US/bundle/utah-servicenow-platform/page/product/configuration-management/concept/create-etl-transform-map.html) for instructions to create an ETL transform map. + +Click on the first **Specify Basic Details** section of the ETL Transform Map Assistant. Select the import set number containing your resource from the **Sample Import Set** dropdown and click **Mark as Complete**. + +Open the **Preview and Prepare Data** section and review the imported rows. Click **Mark as Complete**. + +The third section provides the interface for mapping resource attributes. Click on **Select CMDB Classes to Map Source Data**. Click on **Add Conditional Class** button at the top. Set the rules that will identify your resource in the import set. Use the `type` field value from the Terraform state object to identify your resource (on the ServiceNow side, field name are prefaced with `u_`). Set the target CMDB CI Class name and click **Save**. + +![ServiceNow Service Graph Connector: setting the Conditional Class rules in the ETL mapping](/img/docs/service-now-service-graph-conditional-class-mapping.png) + +To modify the mapping for your new Conditional Class record, select **Edit Mapping**. On the right side of the interface, drag the relevant data pills and drop them into the corresponding CMDB fields on the left side. Refer to the Terraform state record to verify the presence of attributes. For uniqueness, the **Source Native Key** value is typically mapped to the `arn` field when dealing with AWS resources. All resources mapped in the Service Graph Connector for Terraform will have the **Operational status** and **Name** fields populated. + +![ServiceNow Service Graph Connector: mapping resource attributes in the ETL](/img/docs/service-now-service-graph-etl-attribute-mapping.png) + +Once the mapping is completed, click on the left arrow at the top to return to the list of Conditional Classes. Map two more conditional classes in the same manner, according to the rules set in the CI Class Manager: **Logical Datacenter** (**AWS Datacenter** in case of AWS VPC) and **Cloud Service Account**. Since the AWS cloud provider is already covered by the application, these classes are already present. Click **Edit Class** to include your newly mapped resource into the listed conditional rules. Add another **OR** condition to each of them and click **Save**. + +![ServiceNow Service Graph Connector: updating conditions on existing parent records when a new resource is mapped](/img/docs/service-now-service-graph-etl-condition-update.png) + +Click **Mark as Complete** to finalize the **Select CMDB Classes to Map Source Data** section. + +## Set the required relationships + +Click **Add Relationships** to continue to the next section. Click the **Add Conditional Relationship** button at the top of the page. The following configuration tells the ETL that when a record with `aws_vpc` type is found in the import set, it should be hosted on **AWS Datacenter 1**. Click **Save**. + +![ServiceNow Service Graph Connector: setting dependent relationships in the ETL mapping interface](/img/docs/service-now-service-graph-etl-setting-relationship.png) + +A similar dependent relationship needs to be established from **AWS Datacenter** to **Cloud Service Account**. Since the AWS cloud provider is already covered by the application, the relationship record is present in the application. Click **Edit Relationship** and add another **OR** condition containing your new resource to the list. Click **Save**. + +![ServiceNow Service Graph Connector: updating existing dependent relationships in the ETL mapping interface](/img/docs/service-now-service-graph-etl-editing-relationship.png) + +Click **Mark as Complete** to finalize the **Add Relationships** section. + +## Run a test + +There are two ways to test the new resource mapping. You can utilize the **Test and Rollback Integration Results** interface of the ETL Transform Map Assistant. Alternatively, you can initiate a new run in your HCP Terraform workspace that includes the deployment of the resource. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/index.mdx new file mode 100644 index 0000000000..96b511744b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/index.mdx @@ -0,0 +1,83 @@ +--- +page_title: ServiceNow Service Graph Connector for Terraform Enterprise overview +description: >- + Use the ServiceNow Service Graph Connector to enable users to import Terraform + Enterprise-built infrastructure into ServiceNow CMDB. +source: terraform-docs-common +--- + +# ServiceNow Service Graph Connector for Terraform overview + +-> **Integration version:** v1.3.0 + +Use the Service Graph Connector for Terraform to securely import HCP Terraform resources into your ServiceNow instance. The ServiceNow Service Graph for Terraform is a certified scoped application available in the [ServiceNow Store](https://store.servicenow.com/sn_appstore_store.do#!/store/application/0b0600891b52c150c216ebd56e4bcb32). + +The integration is based on the [Service Graph Connector](https://www.servicenow.com/products/service-graph-connectors.html) technology that provides a framework for discovering and mapping relationships between the organization's infrastructure and the ServiceNow Configuration Items (CIs), and then automatically updating the [ServiceNow CMDB (Configuration Management Database)](https://www.servicenow.com/products/servicenow-platform/configuration-management-database.html) with this information. This enables platform teams to gain a comprehensive view of the resources they support. The CMDB is a central repository within the ServiceNow platform, which provides a single source of truth for your infrastructure and offers configurable dashboards for monitoring and reporting. + +## Key benefits + +- **Enhanced visibility**: The Service Graph Connector for Terraform updates the CMDB dashboards with resources deployed in HCP Terraform. +- **Improved efficiency**: By connecting Terraform to the ServiceNow CMDB, platform teams can manage and search Terraform-provisioned resources in the CMDB alongside the rest of the company's infrastructure. +- **Consistent management**: Terraform state file changes get automatically and securely updated in the ServiceNow CMDB, capturing status changes for all technical resources in a timely manner. +- **Extensibility**: ServiceNow admins can customize mappings for additional resource types, potentially working with HashiCorp’s entire Terraform ecosystem made up of thousands of providers. + +## Technical design + +The diagram below shows how the Service Graph Connector for Terraform connects HCP Terraform to your ServiceNow instance. + +![ServiceNow Service Graph Connector for Terraform: design diagram](/img/docs/service-now-service-graph-design.png) + +The Service Graph Connector for Terraform integrates with HCP Terraform to fetch up-to-date information about your deployments. It leverages the Terraform state as the primary data source. The application doesn't make any requests to your cloud provider or require you to share any cloud credentials. + +## Import methods + +The integration offers two methods of importing your Terraform resources into CMDB. You can configure the application to periodically pull all your resources in one batch. Alternatively, you can set up webhooks in your Terraform workspaces, which will notify your ServiceNow instance about new deployments. + +### Scheduled polling + +The Service Graph Connector for Terraform can be scheduled to periodically poll HCP Terraform. Depending on the size of your infrastructure and how frequently the state of your resources needs to be refreshed in CMDB, the polling schedule can be set anywhere from once a week to every second. This option is not recommended for big environments with thousands of Terraform workspaces as the import job will take several hours to complete. + +The scheduled job makes a request to HCP Terraform to obtain all organizations that the HCP Terraform API token provided to the application has access to. It will attempt to import all relevant resources from all workspaces within each of those organizations. The processing time depends of the number of organizations and workspaces in HCP Terraform. Configuring the import job to run frequently is not recommended for big environments. + +To access the scheduler, search for **Service Graph Connector for Terraform** in the top navigation menu and select **SG-Import Schedule**. You can change the polling settings and view all previous import sets pulled into your ServiceNow instance using this method. + +### HCP Terraform Webhook Notifications + +You can configure [webhook notifications](/terraform/enterprise/workspaces/settings/notifications) for all relevant workspaces in HCP Terraform organization. Webhooks offer an event-based approach to importing your resources. The import is triggered as soon as a Terraform run is successfully completed in HCP Terraform. + +Webhook POST requests are sent to an API endpoint exposed by the Service Graph Connector for Terraform in your ServiceNow instance. Each webhook request includes an HMAC token, and the endpoint validates the signature using the secret you provide. Learn more about [HCP Terraform notification authenticity](/terraform/enterprise/workspaces/settings/notifications#notification-authenticity). + +Internally, the application uses a scheduled job as a helper to keep track of the incoming webhook requests. To activate, configure, and view the history of all webhook imports, navigate to **Scheduled Imports** and select **SG-Terraform Scheduled Process State**. By default, the job is set to run every minute. + +-> **Tip:** Both import options may be enabled, or you may choose to configure only the webhooks or the scheduled import. + +The [setup page](/terraform/enterprise/integrations/service-now/service-graph/service-graph-setup) provides configuration details for both import modes. + +## ETL (Extract, Transform, Load) + +After the application successfully imports the resources, they are temporarily stored in a staging database table. The import set records are then transferred to the ETL (Extract, Transform, Load) pipeline. Search for **IntegrationHub ETL** in the top navigation menu to view and edit the default ETL rules of the Service Graph Connector for Terraform. The application's ETL Transform Map is called **SG-Terraform**. + +To deactivate resources that you do not want imported into the CMDB, navigate to the **Select CMDB Classes to Map Source Data** section of the application's ETL record, and toggle the switch on the resource mapping record to deactivate it. + +![screenshot: ServiceNow Service Graph Connector for Terraform resource ETL deactivation button](/img/docs/service-now-service-graph-deactivate-etl.png) + +-> **Tip:** Run an import before you open the ETL map as the interface requires at least one import set stored in the memory to be able to display the rules. + +## Supported resources + +The Service Graph Connector for Terraform supports selected resources from the following cloud providers: + +- AWS +- Microsoft Azure +- Google Cloud +- VMware vSphere + +The [resource mapping](/terraform/enterprise/integrations/service-now/service-graph/resource-coverage) documentation contains tables detailing the mapping of objects and attributes between HCP Terraform and ServiceNow CMDB. + +## Destroyed resources + +After the destroy operation is completed in HCP Terraform and the application's import job is finished in your ServiceNow instance, the **Operational Status** field of all resources in the CMDB removed from the Terraform state during the deletion process will be updated to **Non-Operational**. + +## Get started + +Refer to the [setup page](/terraform/enterprise/integrations/service-now/service-graph/service-graph-setup) for information on how to configure the integration in your ServiceNow instance. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/aws.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/aws.mdx new file mode 100644 index 0000000000..d2ccc40b18 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/aws.mdx @@ -0,0 +1,219 @@ +--- +page_title: ServiceNow Service Graph Connector AWS resource coverage +description: >- + Use the ServiceNow Service Graph integration to import selected resources from + AWS into ServiceNow CMDB. +source: terraform-docs-common +--- + +# ServiceNow Service Graph Connector AWS resource coverage + +This page details the mapping rules for importing AWS resources, provisioned with Terraform, into ServiceNow CMDB. + +## Mapping of Terraform resources to CMDB CI Classes + +| AWS resource | Terraform resource name | ServiceNow CMDB CI Class | ServiceNow CMDB Category Name | +| ------------------------------------------------------------------------------------- | --------------------------- | -------------------------------- | ----------------------------- | +| AWS account | N/A | `cmdb_ci_cloud_service_account` | Cloud Service Account | +| AWS region | N/A | `cmdb_ci_aws_datacenter` | AWS Datacenter | +| EC2 Instance | `aws_instance` | `cmdb_ci_vm_instance` | Virtual Machine Instance | +| S3 Bucket | `aws_s3_bucket` | `cmdb_ci_cloud_object_storage` | Cloud Object Storage | +| ECS Cluster | `aws_ecs_cluster` | `cmdb_ci_cloud_ecs_cluster` | AWS Cloud ECS Cluster | +| EKS Cluster | `aws_eks_cluster` | `cmdb_ci_kubernetes_cluster` | Kubernetes Cluster | +| VPC | `aws_vpc` | `cmdb_ci_network` | Cloud Network | +| Database Instance (_non-Aurora databases: e.g., MySQL, PostgreSQL, SQL Server, etc._) | `aws_db_instance` | `cmdb_ci_cloud_database` | Cloud DataBase | +| RDS Aurora Cluster | `aws_rds_cluster` | `cmdb_ci_cloud_db_cluster` | Cloud DataBase Cluster | +| RDS Aurora Instance | `aws_rds_cluster_instance` | `cmdb_ci_cloud_database` | Cloud DataBase | +| DynamoDB Global Table | `aws_dynamodb_global_table` | `cmdb_ci_dynamodb_global_table` | DynamoDB Global Table | +| DynamoDB Table | `aws_dynamodb_table` | `cmdb_ci_dynamodb_table` | DynamoDB Table | +| Security Group | `aws_security_group` | `cmdb_ci_compute_security_group` | Compute Security Group | +| Lambda | `aws_lambda_function` | `cmdb_ci_cloud_function` | Cloud Function | +| Load Balancer | `aws_lb` | `cmdb_ci_cloud_load_balancer` | Cloud Load Balancer | +| Tags | N/A | `cmdb_key_value` | Key Value | + +## Resource relationships + +| Child CI Class | Relationship type | Parent CI Class | +| ----------------------------------------------------------- | ----------------- | --------------------------------------------------------- | +| AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | Hosted On::Hosts | Cloud Service Account 1 (`cmdb_ci_cloud_service_account`) | +| AWS Datacenter 2 (`cmdb_ci_aws_datacenter`) | Hosted On::Hosts | Cloud Service Account 6 (`cmdb_ci_cloud_service_account`) | +| Virtual Machine Instance 1 (`cmdb_ci_vm_instance`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Virtual Machine Instance 1 (`cmdb_ci_vm_instance`) | Reference | Key Value 1 (`cmdb_key_value`) | +| AWS Cloud ECS Cluster 1 (`cmdb_ci_cloud_ecs_cluster`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| AWS Cloud ECS Cluster 1 (`cmdb_ci_cloud_ecs_cluster`) | Reference | Key Value 2 (`cmdb_key_value`) | +| Cloud Object Storage 1 (`cmdb_ci_cloud_object_storage`) | Hosted On::Hosts | AWS Datacenter 2 (`cmdb_ci_aws_datacenter`) | +| Cloud Object Storage 1 (`cmdb_ci_cloud_object_storage`) | Reference | Key Value 3 (`cmdb_key_value`) | +| Kubernetes Cluster 1 (`cmdb_ci_kubernetes_cluster`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Kubernetes Cluster 1 (`cmdb_ci_kubernetes_cluster`) | Reference | Key Value 4 (`cmdb_key_value`) | +| Cloud Network 1 (`cmdb_ci_network`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Cloud Network 1 (`cmdb_ci_network`) | Reference | Key Value 5 (`cmdb_key_value`) | +| Cloud DataBase 1 (`cmdb_ci_cloud_database` ) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Cloud DataBase 1 (`cmdb_ci_cloud_database` ) | Reference | Key Value 6 (`cmdb_key_value`) | +| Cloud DataBase Cluster 1 (`cmdb_ci_cloud_db_cluster`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Cloud DataBase Cluster 1 (`cmdb_ci_cloud_db_cluster`) | Reference | Key Value 7 (`cmdb_key_value`) | +| DynamoDB Global Table 1 (`cmdb_ci_dynamodb_global_table`) | Hosted On::Hosts | Cloud Service Account 1 (`cmdb_ci_cloud_service_account`) | +| DynamoDB Table 1 (`cmdb_ci_dynamodb_table`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| DynamoDB Table 1 (`cmdb_ci_dynamodb_table`) | Reference | Key Value 8 (`cmdb_key_value`) | +| Compute Security Group 1 (`cmdb_ci_compute_security_group`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Compute Security Group 1 (`cmdb_ci_compute_security_group`) | Reference | Key Value 10 (`cmdb_key_value`) | +| Cloud Function 1 (`cmdb_ci_cloud_function`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Cloud Function 1 (`cmdb_ci_cloud_function`) | Reference | Key Value 11 (`cmdb_key_value`) | +| Cloud Load Balancer 1 (`cmdb_ci_cloud_load_balancer`) | Hosted On::Hosts | AWS Datacenter 1 (`cmdb_ci_aws_datacenter`) | +| Cloud Load Balancer 1 (`cmdb_ci_cloud_load_balancer`) | Reference | Key Value 12 (`cmdb_key_value`) | + +## Field attributes mapping + +### Cloud Service Account (`cmdb_ci_cloud_service_account`) + +| CMDB field | Terraform state field | +| ------------------ | -------------------------------------------- | +| Source Native Key | Resource account number extracted from `arn` | +| Account Id | Resource account number extracted from `arn` | +| Datacenter Type | Resource cloud provider extracted from `arn` | +| Object ID | Resource id extracted from `arn` | +| Name | Resource name extracted from `arn` | +| Operational Status | Defaults to "1" ("Operational") | + +### AWS Datacenter (`cmdb_ci_aws_datacenter`) + +| CMDB field | Terraform state field | +| ------------------ | --------------------------------------------------------------- | +| Source Native Key | Concatenation of region and account number extracted from `arn` | +| Object Id | Region extracted from `arn` | +| Region | Region extracted from `arn` | +| Name | Region extracted from `arn` | +| Operational Status | Defaults to "1" ("Operational") | + +### Virtual Machine Instance (`cmdb_ci_vm_instance`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Placement Group ID | `placement_group` | +| IP Address | `public_ip` | +| Status | `instance_state` | +| VM Instance ID | `id` | +| Name | `id` | +| State | `state` | +| CPU | `cpu_core_count` | +| Operational Status | Defaults to "1" ("Operational") | + +### AWS Cloud ECS Cluster (`cmdb_ci_cloud_ecs_cluster`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Object Storage (`cmdb_ci_cloud_object_storage`) + +| CMDB field | Terraform state field | +| ------------------ | -------------------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Cloud Provider | Resource cloud provider extracted from `arn` | +| Name | `bucket` | +| Operational Status | Defaults to "1" ("Operational") | + +### Kubernetes Cluster (`cmdb_ci_kubernetes_cluster`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| IP Address | `endpoint` | +| Port | Defaults to "6443" | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Network (`cmdb_ci_network`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud DataBase (`cmdb_ci_cloud_database`) + +| CMDB field | Terraform state field | +| --------------------------- | -------------------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Version | `engine_version` | +| Type | `engine` | +| TCP port(s) | `port` | +| Category | `instance_class` | +| Fully qualified domain name | `endpoint` | +| Location | Region extracted from `arn` | +| Name | `name` | +| Vendor | Resource cloud provider extracted from `arn` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud DataBase Cluster (`cmdb_ci_cloud_db_cluster`) + +| CMDB field | Terraform state field | +| --------------------------- | -------------------------------------------- | +| Source Native Key | `arn` | +| Cluster ID | `cluster_resource_id` | +| Name | `name` | +| TCP port(s) | `port` | +| Fully qualified domain name | `endpoint` | +| Vendor | Resource cloud provider extracted from `arn` | +| Operational Status | Defaults to "1" ("Operational") | + +### DynamoDB Table (`cmdb_ci_dynamodb_table`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `arn` | +| Location | Region extracted from `arn` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### DynamoDB Global Table (`cmdb_ci_dynamodb_global_table`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `arn` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Compute Security Group (`cmdb_ci_compute_security_group`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Location | Region extracted from `arn` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Function (`cmdb_ci_cloud_function`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `arn` | +| Language | `runtime` | +| Code Size | `source_code_size` | +| Location | Region extracted from `arn` | +| Name | `function_name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Load Balancer (`cmdb_ci_cloud_load_balancer`) + +| CMDB field | Terraform state field | +| -------------------------- | ------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Canonical Hosted Zone Name | `dns_name` | +| Canonical Hosted Zone ID | `zone_id` | +| Location | Region extracted from `arn` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/azure.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/azure.mdx new file mode 100644 index 0000000000..0a503bec63 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/azure.mdx @@ -0,0 +1,158 @@ +--- +page_title: ServiceNow Service Graph Connector Microsoft Azure resource coverage +description: >- + Use the ServiceNow Service Graph integration to import selected resources from + Microsoft Azure into ServiceNow CMDB. +source: terraform-docs-common +--- + +# ServiceNow Service Graph Connector Microsoft Azure resource coverage + +This page describes how Terraform-provisioned Azure resources are mapped to the classes within the ServiceNow CMDB. + +## Mapping of Terraform resources to CMDB CI Classes + +| Azure resource | Terraform resource name | ServiceNow CMDB CI Class | ServiceNow CMDB Category Name | +| ---------------------- | --------------------------------- | -------------------------------- | ----------------------------- | +| Azure account | N/A | `cmdb_ci_cloud_service_account` | Cloud Service Account | +| Azure region | N/A | `cmdb_ci_azure_datacenter` | Azure Datacenter | +| Resource Group | `azurerm_resource_group` | `cmdb_ci_resource_group` | Resource Group | +| Windows VM | `azurerm_windows_virtual_machine` | `cmdb_ci_vm_instance` | Virtual Machine Instance | +| Linux VM | `azurerm_linux_virtual_machine` | `cmdb_ci_vm_instance` | Virtual Machine Instance | +| AKS Cluster | `azurerm_kubernetes_cluster` | `cmdb_ci_kubernetes_cluster` | Kubernetes Cluster | +| Storage Container | `azurerm_storage_container` | `cmdb_ci_cloud_storage_account` | Cloud Storage Account | +| MariaDB Database | `azurerm_mariadb_server` | `cmdb_ci_cloud_database` | Cloud DataBase | +| MS SQL Database | `azurerm_mssql_server` | `cmdb_ci_cloud_database` | Cloud DataBase | +| MySQL Database | `azurerm_mysql_server` | `cmdb_ci_cloud_database` | Cloud DataBase | +| PostgreSQL Database | `azurerm_postgresql_server` | `cmdb_ci_cloud_database` | Cloud DataBase | +| Network security group | `azurerm_network_security_group` | `cmdb_ci_compute_security_group` | Compute Security Group | +| Linux Function App | `azurerm_linux_function_app` | `cmdb_ci_cloud_function` | Cloud Function | +| Windows Function App | `azurerm_windows_function_app` | `cmdb_ci_cloud_function` | Cloud Function | +| Virtual Network | `azurerm_virtual_network` | `cmdb_ci_network` | Cloud Network | +| Tags | N/A | `cmdb_key_value` | Key Value | + +## Resource relationships + +| Child CI Class | Relationship type | Parent CI Class | +| ----------------------------------------------------------- | ---------------------- | --------------------------------------------------------- | +| Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | Hosted On::Hosts | Cloud Service Account 2 (`cmdb_ci_cloud_service_account`) | +| Azure Datacenter 2 (`cmdb_ci_azure_datacenter`) | Hosted On::Hosts | Cloud Service Account 3 (`cmdb_ci_cloud_service_account`) | +| Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | Contains::Contained by | Resource Group 1 (`cmdb_ci_resource_group`) | +| Cloud Storage Account 1 (`cmdb_ci_cloud_storage_account`) | Hosted On::Hosts | Azure Datacenter 2 (`cmdb_ci_azure_datacenter`) | +| Virtual Machine Instance 2 (`cmdb_ci_vm_instance`) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Virtual Machine Instance 2 (`cmdb_ci_vm_instance`) | Reference | Key Value 14 (`cmdb_key_value`) | +| Virtual Machine Instance 3 (`cmdb_ci_vm_instance`) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Virtual Machine Instance 3 (`cmdb_ci_vm_instance`) | Reference | Key Value 15 (`cmdb_key_value`) | +| Kubernetes Cluster 2 (`cmdb_ci_kubernetes_cluster`) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Kubernetes Cluster 2 (`cmdb_ci_kubernetes_cluster`) | Reference | Key Value 16 (`cmdb_key_value`) | +| Cloud DataBase 2 (`cmdb_ci_cloud_database` ) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Cloud DataBase 2 (`cmdb_ci_cloud_database` ) | Reference | Key Value 9 (`cmdb_key_value`) | +| Compute Security Group 2 (`cmdb_ci_compute_security_group`) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Compute Security Group 2 (`cmdb_ci_compute_security_group`) | Reference | Key Value 17 (`cmdb_key_value`) | +| Cloud Function 2 (`cmdb_ci_cloud_function`) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Cloud Function 2 (`cmdb_ci_cloud_function`) | Reference | Key Value 19 (`cmdb_key_value`) | +| Cloud Network 2 (`cmdb_ci_network`) | Hosted On::Hosts | Azure Datacenter 1 (`cmdb_ci_azure_datacenter`) | +| Cloud Network 2 (`cmdb_ci_network`) | Reference | Key Value 20 (`cmdb_key_value`) | + +## Field attributes mapping + +### Cloud Service Account (`cmdb_ci_cloud_service_account`) + +| CMDB field | Terraform state field | +| ------------------ | ----------------------------------- | +| Source Native Key | Subscription ID extracted from `id` | +| Account Id | Subscription ID extracted from `id` | +| Datacenter Type | Defaults to `azure` | +| Object ID | Subscription ID extracted from `id` | +| Name | Subscription ID extracted from `id` | +| Operational Status | Defaults to "1" ("Operational") | + +### Azure Datacenter (`cmdb_ci_azure_datacenter`) + +| CMDB field | Terraform state field | +| ------------------ | ----------------------------------------------- | +| Source Native Key | Concatenation of `location` and Subscription ID | +| Object Id | `location` | +| Region | `location` | +| Name | `location` | +| Operational Status | Defaults to "1" ("Operational") | + +### Virtual Machine Instance (`cmdb_ci_vm_instance`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Storage Account (`cmdb_ci_cloud_storage_account`) + +| CMDB field | Terraform state field | +| --------------------------- | ------------------------------- | +| Source Native Key | `resource_manager_id` | +| Object Id | `resource_manager_id` | +| Fully qualified domain name | `id` | +| Blob Service | `storage_account_name` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Resource Group (`cmdb_ci_resource_group`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Location | `location` | +| Operational Status | Defaults to "1" ("Operational") | + +### Kubernetes Cluster (`cmdb_ci_kubernetes_cluster`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| IP Address | `fqdn` | +| Port | Defaults to "6443" | +| Name | `name` | +| Location | `location` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud DataBase (`cmdb_ci_cloud_database`) + +| CMDB field | Terraform state field | +| --------------------------- | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Version | `engine_version` | +| Fully qualified domain name | `fqdn` | +| Name | `name` | +| Vendor | Defaults to `azure` | +| Operational Status | Defaults to "1" ("Operational") | + +### Compute Security Group (`cmdb_ci_compute_security_group`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Function (`cmdb_ci_cloud_function`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Network (`cmdb_ci_network`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/gcp.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/gcp.mdx new file mode 100644 index 0000000000..5681430c8b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/gcp.mdx @@ -0,0 +1,159 @@ +--- +page_title: ServiceNow Service Graph Connector Google Cloud resource coverage +description: >- + Use the ServiceNow Service Graph for Terraform Enterprise integration to + import selected resources from Google Cloud into ServiceNow CMDB. +source: terraform-docs-common +--- + +# ServiceNow Service Graph Connector Google Cloud resource coverage + +This page provides details on how Google Cloud resources, set up using Terraform, are corresponded to the classes within the ServiceNow CMDB. + +## Mapping of Terraform resources to CMDB CI Classes + +| Google resource | Terraform resource name | ServiceNow CMDB CI Class | ServiceNow CMDB Category Name | +| ------------------------ | --------------------------------------------------------------------- | -------------------------------- | ----------------------------- | +| Project ID | N/A | `cmdb_ci_cloud_service_account` | Cloud Service Account | +| Region (location) | N/A | `cmdb_ci_google_datacenter` | Google Datacenter | +| Virtual Machine Instance | `google_compute_instance` | `cmdb_ci_vm_instance` | Virtual Machine Instance | +| Kubernetes Cluster | `google_container_cluster` | `cmdb_ci_kubernetes_cluster` | Kubernetes Cluster | +| Google Storage | `google_storage_bucket` | `cmdb_ci_cloud_storage_account` | Cloud Storage Account | +| Google BigQuery | `google_bigquery_table` | `cmdb_ci_cloud_database` | Cloud DataBase | +| Google SQL | `google_sql_database` | `cmdb_ci_cloud_database` | Cloud DataBase | +| Google Compute Firewall | `google_compute_firewall` | `cmdb_ci_compute_security_group` | Compute Security Group | +| Cloud Function | `google_cloudfunctions_function` or `google_cloudfunctions2_function` | `cmdb_ci_cloud_function` | Cloud Function | +| Load Balancer | `google_compute_forwarding_rule` | `cmdb_ci_cloud_load_balancer` | Cloud Load Balancer | +| VPC | `google_compute_network` | `cmdb_ci_network` | Cloud Network | +| Tags | N/A | `cmdb_key_value` | Key Value | + +## Resource relationships + +| Child CI Class | Relationship type | Parent CI Class | +| ----------------------------------------------------------- | ----------------- | --------------------------------------------------------- | +| Google Datacenter 1 (`cmdb_ci_google_datacenter`) | Hosted On::Hosts | Cloud Service Account 4 (`cmdb_ci_cloud_service_account`) | +| Google Datacenter 2 (`cmdb_ci_google_datacenter`) | Hosted On::Hosts | Cloud Service Account 4 (`cmdb_ci_cloud_service_account`) | +| Virtual Machine Instance 4 (`cmdb_ci_vm_instance`) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Virtual Machine Instance 4 (`cmdb_ci_vm_instance`) | Reference | Key Value 13 (`cmdb_key_value`) | +| Cloud Network 3 (`cmdb_ci_network`) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Cloud Network 3 (`cmdb_ci_network`) | Reference | Key Value 18 (`cmdb_key_value`) | +| Compute Security Group 3 (`cmdb_ci_compute_security_group`) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Compute Security Group 3 (`cmdb_ci_compute_security_group`) | Reference | Key Value 21 (`cmdb_key_value`) | +| Kubernetes Cluster 3 (`cmdb_ci_kubernetes_cluster`) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Kubernetes Cluster 3 (`cmdb_ci_kubernetes_cluster`) | Reference | Key Value 22 (`cmdb_key_value`) | +| Cloud DataBase 3 (`cmdb_ci_cloud_database` ) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Cloud DataBase 2 (`cmdb_ci_cloud_database` ) | Reference | Key Value 24 (`cmdb_key_value`) | +| Cloud Function 3 (`cmdb_ci_cloud_function`) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Cloud Function 3 (`cmdb_ci_cloud_function`) | Reference | Key Value 25 (`cmdb_key_value`) | +| Cloud Load Balancer 2 (`cmdb_ci_cloud_load_balancer`) | Hosted On::Hosts | Google Datacenter 1 (`cmdb_ci_google_datacenter`) | +| Cloud Load Balancer 2 (`cmdb_ci_cloud_load_balancer`) | Reference | Key Value 26 (`cmdb_key_value`) | +| Cloud Storage Account 2 (`cmdb_ci_cloud_storage_account`) | Hosted On::Hosts | Google Datacenter 2 (`cmdb_ci_google_datacenter`) | +| Cloud Storage Account 2 (`cmdb_ci_cloud_storage_account`) | Reference | Key Value 23 (`cmdb_key_value`) | + +## Field attributes mapping + +### Cloud Service Account (`cmdb_ci_cloud_service_account`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `project` | +| Account Id | `project` | +| Datacenter Type | Defaults to `google` | +| Object ID | `project` | +| Name | `project` | +| Operational Status | Defaults to "1" ("Operational") | + +### Google Datacenter (`cmdb_ci_google_datacenter`) + +| CMDB field | Terraform state field | +| ------------------ | --------------------------------------------------------- | +| Source Native Key | Concatenation of `project` and region extracted from `id` | +| Object Id | Region extracted from `id` | +| Region | Region extracted from `id` | +| Name | Region extracted from `id` | +| Operational Status | Defaults to "1" ("Operational") | + +### Virtual Machine Instance (`cmdb_ci_vm_instance`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Category | `machine_type` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Network (`cmdb_ci_network`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Compute Security Group (`cmdb_ci_compute_security_group`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Kubernetes Cluster (`cmdb_ci_kubernetes_cluster`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `arn` | +| IP Address | `endpoint` | +| Port | Defaults to "6443" | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Object Storage (`cmdb_ci_cloud_object_storage`) + +| CMDB field | Terraform state field | +| ------------------ | -------------------------------------------- | +| Source Native Key | `arn` | +| Object Id | `id` | +| Cloud Provider | Resource cloud provider extracted from `arn` | +| Name | `bucket` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Storage Account (`cmdb_ci_cloud_storage_account`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Name | `location` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud DataBase (`cmdb_ci_cloud_database`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | Name extracted from `id` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Function (`cmdb_ci_cloud_function`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### Cloud Load Balancer (`cmdb_ci_cloud_load_balancer`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/index.mdx new file mode 100644 index 0000000000..ec81da07cc --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/index.mdx @@ -0,0 +1,37 @@ +--- +page_title: >- + ServiceNow Service Graph Connector for Terraform Enterprise resource coverage + overview +description: >- + The ServiceNow Service Graph for Terraform Enterprise integration imports + selected resources from major cloud providers into ServiceNow CMDB. +source: terraform-docs-common +--- + +# ServiceNow Service Graph Connector for Terraform resource coverage overview + +The tables provided in this section illustrate the mapping of resources from the Terraform state to the ServiceNow CMDB configuration items (CIs) by the Service Graph Connector for Terraform. + +While the default ETL map provided by the application can be utilized without modification, it is also possible to customize it according to the specific requirements of your organization. Check [customizations](/terraform/enterprise/integrations/service-now/service-graph/customizations) for more details. + +The application supports selected resources from major cloud providers. The following pages provide mapping details for each supported provider: + +- [AWS](/terraform/enterprise/integrations/service-now/service-graph/resource-coverage/aws) +- [Azure](/terraform/enterprise/integrations/service-now/service-graph/resource-coverage/azure) +- [GCP](/terraform/enterprise/integrations/service-now/service-graph/resource-coverage/gcp) +- [VMware vSphere](/terraform/enterprise/integrations/service-now/service-graph/resource-coverage/vsphere) + +# Importing Tags + +The Service Graph Connector for Terraform imports the Terraform tags associated with your resource into CMDB. Tags are mapped to the **Key Value** CI Class. +Along with the tags assigned in your Terraform code, the integration also includes `tf_organization` and `tf_workspace` tags. These tags are used to indicate the HCP Terraform organization and workspace where the resource was provisioned. + +The visibility of the **Tags** tab in CMDB varies for different configuration items. By default, not every configuration item has the **Tags** tab enabled. For instance, the **Virtual Machine Instance** class page includes the **Tags** tab, whereas the **AWS Cloud ECS Cluster** page does not. + +The following example illustrates how the **Tags** tab can be enabled for **AWS Cloud ECS Cluster** CI class in CMDB. + +1. Enter `cmdb_ci_cloud_ecs_cluster.list` in the search menu of your ServiceNow instance. +2. Open any record. Right-click on the gray bar at the top, select **Configure** and proceed to **Related Lists**. If you are in a different scope, click **Edit this view**. +3. Transfer **Key Value->Configuration item** from the left column to the right and click **Save**. Tags become available in CMDB for all AWS ECS cluster records. + +![screenshot: ServiceNow Service Graph Connector - enable the Tags tab in CMDB](/img/docs/service-now-service-graph-tags.png) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/vsphere.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/vsphere.mdx new file mode 100644 index 0000000000..9e9f91fe20 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/resource-coverage/vsphere.mdx @@ -0,0 +1,84 @@ +--- +page_title: ServiceNow Service Graph Connector VMware vSphere resource coverage +description: >- + Use the ServiceNow Service Graph integration to import selected resources from + VMware vSphere into ServiceNow CMDB. +source: terraform-docs-common +--- + +# ServiceNow Service Graph Connector VMware vSphere resource coverage + +This page explains the rules of associating VMware vSphere resources, created via Terraform, with the classes in the ServiceNow CMDB. + +## Mapping of Terraform resources to CMDB CI Classes + +| vSphere resource | Terraform resource name | ServiceNow CMDB CI Class | ServiceNow CMDB Category Name | +| ------------------------- | --------------------------- | ------------------------------- | ------------------------------- | +| vCenter server | N/A | `cmdb_ci_cloud_service_account` | Cloud Service Account | +| vSphere Datacenter | `vsphere_datacenter` | `cmdb_ci_vcenter_datacenter` | VMware vCenter Datacenter | +| vSphere Virtual Machine | `vsphere_virtual_machine` | `cmdb_ci_vmware_instance` | VMware Virtual Machine Instance | +| vSphere Datastore Cluster | `vsphere_datastore_cluster` | `cmdb_ci_vcenter_datastore` | VMware vCenter Datastore | +| vSphere Network | `vsphere_network` | `cmdb_ci_vcenter_network` | VMware vCenter Network | +| Tags | N/A | `cmdb_key_value` | Key Value | + +## Resource relationships + +| Child CI Class | Relationship type | Parent CI Class | +| ------------------------------------------------------------- | ----------------- | ---------------------------------------------------------- | +| VMware vCenter Datacenter 1 (`cmdb_ci_vcenter_datacenter`) | Hosted On::Hosts | Cloud Service Account 5 (`cmdb_ci_cloud_service_account`) | +| VMware Virtual Machine Instance 1 (`cmdb_ci_vmware_instance`) | Hosted On::Hosts | VMware vCenter Datacenter 1 (`cmdb_ci_vcenter_datacenter`) | +| VMware Virtual Machine Instance 1 (`cmdb_ci_vmware_instance`) | Reference | Key Value 27 (`cmdb_key_value`) | +| VMware vCenter Network 1 (`cmdb_ci_vcenter_network`) | Hosted On::Hosts | VMware vCenter Datacenter 1 (`cmdb_ci_vcenter_datacenter`) | +| VMware vCenter Network 1 (`cmdb_ci_vcenter_network`) | Reference | Key Value 28 (`cmdb_key_value`) | +| VMware vCenter Datastore 1 (`cmdb_ci_vcenter_datastore`) | Hosted On::Hosts | VMware vCenter Datacenter 1 (`cmdb_ci_vcenter_datacenter`) | +| VMware vCenter Datastore 1 (`cmdb_ci_vcenter_datastore`) | Reference | Key Value 29 (`cmdb_key_value`) | + +## Field attributes mapping + +### Cloud Service Account (`cmdb_ci_cloud_service_account`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | Defaults to "VMware_vCenter" | +| Account Id | Defaults to "VMware_vCenter" | +| Datacenter Type | Defaults to "VMware_vCenter" | +| Object ID | Defaults to "VMware_vCenter" | +| Name | Defaults to "VMware_vCenter" | +| Operational Status | Defaults to "1" ("Operational") | + +### VMware vCenter Datacenter (`cmdb_ci_vcenter_datacenter`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `datacenter_id` | +| Object Id | `datacenter_id` | +| Region | `datacenter_id` | +| Name | `datacenter_id` | +| Operational Status | Defaults to "1" ("Operational") | + +### VMware Virtual Machine Instance (`cmdb_ci_vmware_instance`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### VMware vCenter Network (`cmdb_ci_vcenter_network`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | + +### VMware vCenter Datastore (`cmdb_ci_vcenter_datastore`) + +| CMDB field | Terraform state field | +| ------------------ | ------------------------------- | +| Source Native Key | `id` | +| Object Id | `id` | +| Name | `name` | +| Operational Status | Defaults to "1" ("Operational") | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/service-graph-setup.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/service-graph-setup.mdx new file mode 100644 index 0000000000..c71384b3d3 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/integrations/service-now/service-graph/service-graph-setup.mdx @@ -0,0 +1,162 @@ +--- +page_title: Set up the ServiceNow Service Graph Connector for Terraform Enterprise +description: >- + Learn how to set up the ServiceNow Service Graph Connector for Terraform + Enterprise. +source: terraform-docs-common +--- + +# Set up the ServiceNow Service Graph Connector + +-> **Note:** Follow the [Configure ServiceNow Service Graph Connector for HCP Terraform](/terraform/tutorials/it-saas/servicenow-sgc) tutorial for hands-on instructions on how to import an AWS resource deployed in your HCP Terraform organization to the ServiceNow CMDB by using the Service Graph Connector for Terraform. + +The ServiceNow Service Graph Connector for Terraform is a certified scoped application available in the ServiceNow Store. Search for ”Service Graph Connector for Terraform” published by ”HashiCorp Inc” and click **Install**. + +## Prerequisites + +To start using the Service Graph Connector for Terraform, you must have: + +- An administrator account on a Terraform Enterprise instance or within an HCP Terraform organization. +- An administrator account on your ServiceNow vendor instance. + +The Service Graph Connector for Terraform supports the following ServiceNow server versions: + +- Washington DC +- Xanadu +- Yokohama + +The following ServiceNow plugins are required dependencies: + +- ITOM Discovery License +- Integration Commons for CMDB +- Discovery and Service Mapping Patterns +- ServiceNow IntegrationHub Standard Pack + +Additionally, you can install the IntegrationHub ETL application if you want to modify the default CMDB mappings. + +-> **Note:** Dependent plugins are installed on your ServiceNow instance automatically when the app is downloaded from the ServiceNow Store. Before installing the Service Graph Connector for Terraform, you must activate the ITOM Discovery License plugin in your production instance. + +## Connect ServiceNow to HCP Terraform + +-> **ServiceNow roles:** `admin`, `x_hashi_service_gr.terraform_user` + +Once the integration is installed, you can proceed to the guided setup form where you will enter your Terraform credentials. This step will establish a secure connection between HCP Terraform and your ServiceNow instance. + +### Create and scope Terraform API token + +In order for ServiceNow to connect to HCP Terraform, you must give it an HCP Terraform API token. The permissions of this token determine what resources the Service Graph Connector will import into the CMDB. While you could use a user API token, it could import resources from multiple organizations. By providing a team API token, you can scope permissions to only import resources from specified workspaces within a single organization. + +To create a team API token: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to create a team token. +2. Choose **Settings** from the sidebar, then **Teams**. +3. In **Team API Token** section, click **Create a team token**. + +Save this token in a safe place since HCP Terraform only displays it once. You will use it to configure ServiceNow in the next section. + +![ServiceNow Service Graph Connector Configure Team API token in HCP Terraform](/img/docs/service-now-service-graph-team-token-gen.png) + +### Configure Service Graph Connector for Terraform API token + +In the top navigation of your ServiceNow instance's control panel, click on **All**, search for **Service Graph Connector for Terraform**, and click **SG-Setup**. Next, click **Get Started**. + +Next, in the **Configure the Terraform connection** section, click **Get Started**. + +In the **Configure Terraform authentication credentials** section, click **Configure**. + +If you want to route traffic between your HCP Terraform and the ServiceNow instance through a MID server acting as a proxy, change the **Applies to** dropdown to "Specific MID servers" and select your previously configured MID server name. If you don't use MID servers, leave the default value. + +Set the **API Key** to the HCP Terraform team API token that you created in the previous section and click **Update**. + +![ServiceNow Service Graph Connector API Key Credentials configuration screen. The API key is provided, then saved by clicking the Update button](/img/docs/service-now-service-graph-apikey.png) + +In the **Configure Terraform authentication credentials** section, click **Mark as Complete**. + +### Configure Terraform Webhook Notification token + +To improve security, HCP Terraform includes an HMAC signature on all "generic" webhook notifications using a user-provided **token**. This token is an arbitrary secret string that HCP Terraform uses to sign each webhook notification. ServiceNow uses the same token to verify the request authenticity. Refer to [Notification Authenticity](/terraform/enterprise/api-docs/notification-configurations#notification-authenticity) for more information. + +Create a token and save it in a safe place. This secret token can be any value but should be treated as sensitive. + +In the **Configure Terraform Webhook token** section, click **Configure**. In the **Token** field, enter the secret token that will be shared between the HCP Terraform and your ServiceNow instance and click **Update**. + +![ServiceNow Service Graph Connector Webhook token configuration screen. The Token is provided, then saved by clicking the Update button](/img/docs/service-now-service-graph-webhook-token.png) + +In the **Configure Terraform Webhook token** section, click **Mark as Complete**. + +### Configure Terraform connection + +In the **Configure Terraform connection** section, click **Configure**. + +If you are using Terraform Enterprise, set the **Connection URL** to the URL of your Terraform Enterprise instance. If you are using HCP Terraform, leave the **Connection URL** as the default value of `https://app.terraform.io`. + +![ServiceNow Service Graph Connector HTTP Connection configuration screen. A Terraform Enterprise URL may be provided in the Connection URL field, the saved by clicking the Update button](/img/docs/service-now-service-graph-tfconn.png) + +If you want to use a MID server, check **Use MID server** box, change **MID Selection** dropdown to "Specific MID sever" and select your previously configured and validated MID server. + +Click **Update** to save these settings. In the **Configure Terraform connection** section, click **Mark as Complete**. + +## Import Resources + +Refer to the documentation explaining the difference between the [two modes of import](/terraform/enterprise/integrations/service-now/service-graph#import-methods) offered by the Service Graph Connector for Terraform. Both options may be enabled, or you may choose to enable only the webhook or scheduled import. + +### Configure scheduled import + +In the **Set up scheduled import job** section of the setup form, proceed to **Configure the scheduled jobs** and click **Configure**. + +You can use the **Execute Now** option to run a single import job, which is useful for testing. The import set will be displayed in the table below the scheduled import form, after refreshing the page. Once the import is successfully triggered, click on the **Import Set** field of the record to view the logs associated with the import run, as well as its status. + +Activate the job by checking the **Activate** box. Set the **Repeat Interval** and click **Update**. Note that the import processing time depends of the number of organizations and workspaces in your HCP Terraform. Setting the import job to run frequently is not recommended for big environments. + +![ServiceNow Service Graph Connector scheduled import screen](/img/docs/service-now-service-graph-scheduled-import.png) + +You can also access the scheduler interface by searching for **Service Graph Connector for Terraform** in the top navigation menu and selecting **SG-Import Schedule**. + +### Configure Terraform Webhook + +In the top navigation, click on **All**, search for **Scheduled Imports**, and click on **Scheduled Imports**. + +Select the **SG-Terraform Scheduled Process State** record, then click **To edit the record click here**. + +Click the **Active** checkbox to enable it. Leave the default value for the **Repeat Interval** of 5 seconds. Click **Update**. + +![ServiceNow Service Graph Connector scheduled import screen showing the Active checkbox enabled](/img/docs/service-now-service-graph-webhook-schedule.png) + +Next, create the webhook in HCP Terraform. Select a workspace and click **Settings > Notifications**. Click **Create a Notification**. + +Keep the **Destination** as the default option of **Webhook**. Choose a descriptive name **Name**. + +Set the **Webhook URL** enter `https://<SERVICENOW_HOSTNAME>/api/x_hashi_service_gr/sg_terraform_webhook` and replace `<SERVICENOW_HOSTNAME>` with the hostname of your ServiceNow instance. + +In the **Token** field, enter the same string you provided in **Terraform Webhook token** section the of the Service Graph guided setup form. + +Under **Health Events** choose **No events**. + +Under **Run Events** choose **Only certain events** and enable notifications only on **Completed** runs. Click **Create Notification**. + +![HCP Terraform notification creation screen, showing a webhook pointing to ServiceNow which is only triggered on completed runs](/img/docs/service-now-service-graph-webhook-tfc.png) + +Trigger a run in your workspace. Once the run is successfully completed, a webhook notification request will be sent to your ServiceNow instance. + +### Monitor the import job + +By following these steps, you can track the status of import jobs in ServiceNow and verify the completion of the import process before accessing the imported resources in the CMDB. + +For scheduled imports, navigate back to the **SG-Import Schedule** interface. For webhook imports, go to the **SG-Terraform Scheduled Process State** interface. + +Under the form, you will find a table containing all registered import sets. Locate and select the relevant import set record. + +Click on the **Import Set** field to open it and view its details. The **Outbound Http Requests** tab lists all requests made by your ServiceNow instance to HCP Terraform in order to retrieve the latest Terraform state. + +Monitor the state of the import job. Wait for it to change to **Complete**, indicated by a green mark. +Once the import job is complete, you can access the imported resources in the CMDB. + +![ServiceNow Service Graph Connector: import set with successfully completed status](/img/docs/service-now-service-graph-import-set.png) + +You can also access all import sets, regardless of the import type, by navigating to **All** and selecting **Import Sets** under the **Advanced** category. + +### View resources in ServiceNow CMDB + +In the top navigation of ServiceNow, click on **All** and search for **CMDB Workspace**, and click on **CMDB Workspace**. + +Perform a search by entering a Configuration Item (CI) name in the **Search** field (for example, **Virtual Machine Instance**). CI names supported by the application are listed on the [resource mapping page](/terraform/enterprise/integrations/service-now/service-graph/resource-coverage). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/migrate/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/index.mdx new file mode 100644 index 0000000000..e7d1fdb635 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/index.mdx @@ -0,0 +1,95 @@ +--- +page_title: Migrate Terraform state to Terraform Enterprise or Terraform Enterprise +description: >- + Learn how to migrate existing Terraform state to Terraform Enterprise or + Terraform Enterprise so that you can manage existing infrastructure without + de-provisioning. +source: terraform-docs-common +--- + +# Migrate Terraform state to HCP Terraform or Terraform Enterprise + +This topic describes how to migrate existing Terraform state files to HCP Terraform or Terraform Enterprise without first de-provisioning them. Refer to [State](/terraform/language/state) in the Terraform configuration language reference for additional information about Terraform state. + +## Overview + +Perform the following actions to migrate existing resources to one or more workspaces in HCP Terraform or Terraform Enterprise: + +1. Stop all Terraform operations associated with the state files. +2. Migrate Terraform state files using either the Terraform CLI or the HCP Terraform or Terraform Enterprise API. + +You have three options to migrate your state: + +1. Manually using the Terraform CLI +2. Automatically using `tf-migrate` +3. Manually using the HCP Terraform API + +## Requirements + +- Terraform v1.1 and later is required to configure the `cloud` block. For Terraform v1.0 and older, use the [`remote` backend](/terraform/language/settings/backends/remote) instead. +- Create an account on [HCP Terraform](https://app.terraform.io/) or on a [Terraform Enterprise instance](/terraform/enterprise/users-teams-organizations/users#creating-an-account). +- You must present a token linked to appropriate permissions to use the API. Refer to the following topics for additional information: + - [HCP Terraform API overview](/terraform/enterprise/api-docs) + - [Terraform Enterprise API overview](/terraform/enterprise/api-docs) + +## Stop Terraform operations + +Stop all Terraform operations associated with the state files. This may require locking or deleting CI jobs, restricting access to the state backend, and communicating with other teams. You should also only migrate state files into HCP Terraform or Terraform Enterprise workspaces that have never performed a run. + +## Migrate state using the CLI + +> **Hands-on:** Complete the [Migrate State to HCP Terraform](/terraform/tutorials/state/cloud-migrate) tutorial for additional guidance on how to migrate Terraform state using the CLI. + +1. Add the `cloud` block to your Terraform configuration and specify the following fields: + + 1. `hostname` field: Specify either `app.terraform.io` for HCP Terraform or the hostname of your Terraform Enterprise deployment. + 2. `organization` field: Specify your HCP Terraform or Terraform Enterprise organization. + 3. `workspaces` block: Add a `tags` or `name` field and specify one or more destination workspaces as a list of strings. + + Refer to [The `cloud` Block](/terraform/cli/cloud/settings#the-cloud-block) in the Terraform CLI documentation for additional information. The following example migrates the state associated with the configuration to the `networking` workspace on HCP Terraform: + + ```hcl + terraform { + cloud { + hostname = "app.terraform.io" + organization = "my-org" + workspaces { + tags = ["networking"] + } + } + } + ``` + +2. Run `terraform init`. Terraform creates any workspaces specified in the configuration if they do not already exist in the organization. + +## Migrate state using Terraform migrate + +You can use the Terraform migrate CLI tool to automatically migrate state to HCP Terraform and Terraform Enterprise. The tool does not ship with HCP Terraform. You must download and install the binary for the CLI tool separately. Refer to the [Terraform migrate documentation](/terraform/enterprise/migrate/tf-migrate) for more information. + +## Migrate state using the API + +1. Encode your state files as a base64 string and generate an MD5 hash. The following example generates the string and hash file for a single `terraform.tfstate` file: + + ```shell-session + $ cat terraform.tfstate | base64 + dGVycmFmb3JtLnRmc3RhdGUK + $ md5sum terraform.tfstate + 690a3f8ae079c629494a52c68757d585 terraform.tfstate + ``` +2. If the workspace does not yet exist in your organization, send a `POST` request to the `/organizations/:organization_name/workspaces` endpoint to create it. Otherwise, proceed to the next step. Refer to the following topics for details: + - [Create a workspace](/terraform/enterprise/api-docs/workspaces#create-a-workspace) in the HCP Terraform API reference documentation. + - [Create a workspace](/terraform/enterprise/api-docs/workspaces#create-a-workspace) in the Terraform Enterprise API reference documentation. +3. Send a `POST` request to the `/workspaces/:workspace_id/actions/lock` endpoint to lock the workspace. Refer to the following topics for details: + - [Lock a workspace](/terraform/enterprise/api-docs/workspaces#lock-a-workspace) in the HCP Terraform API reference documentation. + - [Lock a workspace](/terraform/enterprise/api-docs/workspaces#lock-a-workspace) in the Terraform Enterprise API reference documentation. +4. To upload your state files to the workspace, send a `POST` request to the `/workspaces/:workspace_id/state-versions` endpoint. Specify the MD5 string in the `data.attributes.md5` field and encoded state file in the `data.attributes.state` field of the request body. Refer to the following topics for details: + - [Create a state version](/terraform/enterprise/api-docs/state-versions#create-a-state-version) in the HCP Terraform API reference documentation. + - [Create a state version](/terraform/enterprise/api-docs/state-versions#create-a-state-version) in the Terraform Enterprise API reference documentation. +5. Send a `POST` request to the `/workspaces/:workspace_id/actions/unlock` endpoint to unlock the workspace. + +Refer to the following external article for an example of how to create a script in Python to automate multiple state files: +[Migrating A Lot of State with Python and the HCP Terraform (previously Terraform Cloud) API](https://medium.com/hashicorp-engineering/migrating-a-lot-of-state-with-python-and-the-terraform-cloud-api-997ec798cd11). The example uses the [Workspaces API](/terraform/enterprise/api-docs/workspaces#create-a-workspace) to create the necessary workspaces in HCP Terraform and the [State Versions API](/terraform/enterprise/api-docs/state-versions) to migrate the state files to those workspaces. + +## Migrate state using Terraform migrate + +You can use the Terraform migrate CLI tool to automatically migrate state to HCP Terraform and Terraform Enterprise. The tool does not ship with HCP Terraform. You must download and install the binary for the CLI tool separately. Refer to the [Terraform migrate documentation](/terraform/enterprise/migrate/tf-migrate) for more information. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/index.mdx new file mode 100644 index 0000000000..9712d3e465 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/index.mdx @@ -0,0 +1,132 @@ +--- +page_title: Terraform migrate overview +description: Learn how to install and configure the Terraform migrate tf-migrate CLI tool. +source: terraform-docs-common +--- + +# Terraform migrate + +The Terraform migrate `tf-migrate` CLI automatically migrates your Terraform Community Edition state and variables to HCP Terraform or Terraform Enterprise. It also updates your local configuration with the new state storage location and optionally creates a pull request to update your code repository. + +**Hands-on**: Complete the [Migrate to HCP Terraform in bulk](/terraform/tutorials/cloud/bulk-migrate-hcp) tutorial to get started with `tf-migrate`. + +## Overview + +Complete the following steps to install and configure `tf-migrate`: + +1. [Download and install `tf-migrate`](#install). +2. Configure `tf-migrate` to [authenticate](#connect-to-hcp-terraform-or-enterprise-terraform) to HCP Terraform or Terraform Enterprise. +3. Enable logging so that you can troubleshoot potential issues that may occur during the migration process. + +### GitHub and GitLab connection requirements + +The `tf-migrate` tool can optionally open a pull request to update your configuration in GitHub or GitLab. + +If your Terraform files are stored in GitHub, you must configure an API token that meets the following requirements: + +- The token must be a classic token. Refer to the [GitHub documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) for additional information. +- The token must have the `repo` OAuth scope. + +If your Terraform files are stored in GitLab Cloud, you must configure an API token that meets the following requirements: + +- The token must be a personal access token. Refer to the [GitHub documentation](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) for additional information. +- The token must be have `read_repository` and `write_repository` scopes. + +## Install + +<Tabs> + +<Tab heading="Manual installation"> + +HashiCorp distributes `tf-migrate` as a binary package. To install `tf-migrate`, find the [appropriate binary](https://releases.hashicorp.com/tf-migrate/) for your operating system and download it as a zip archive. + +After you download `tf-migrate`, unzip the archive. + +Finally, make sure that the `tf-migrate` binary is available in a directory that is in your system's `PATH`. + +### Verify the installation + +Every build of `tf-migrate` includes a `SHA256SUMS` and a `SHA256SUMS.sig` file to validate your downloaded binary. Refer to the [verify HashiCorp binary downloads tutorial](https://developer.hashicorp.com/well-architected-framework/operational-excellence/verify-hashicorp-binary) for more information. + +</Tab> + +<Tab heading="Homebrew of macOS"> + +[Homebrew](https://brew.sh/) is a free and open-source package management system for macOS. You can install the official [`tf-migrate`](https://github.com/hashicorp/homebrew-tap) formula from the terminal. + +First, install the HashiCorp tap, a repository of all our Homebrew packages. + + $ brew tap hashicorp/tap + +Now, install `tf-migrate` with the `hashicorp/tap/tf-migrate` formula. + + $ brew install hashicorp/tap/tf-migrate + +</Tab> + +</Tabs> + +## Connect to HCP Terraform or Enterprise Terraform + +The `tf-migrate` tool uses your locally configured Terraform CLI API token. If you have not authenticated your local Terraform installation with HCP Terraform, use the `terraform login` command to create an authentication token. + + $ terraform login + + Terraform will request an API token for app.terraform.io using your browser. + + If login is successful, Terraform will store the token in plain text in + the following file for use by subsequent commands: + /Users/redacted/.terraform.d/credentials.tfrc.json + + Do you want to proceed? + Only 'yes' will be accepted to confirm. + + Enter a value: yes + +Terraform opens a browser to the HCP Terraform sign in screen, where you can then enter a token name in the web UI, or leave the default name. Click **Create API token** to generate the authentication token. + +HCP Terraform only displays your token once. Copy this token, then when the Terraform CLI prompts you, paste the user token exactly once into your terminal. Press **Enter** to complete the authentication process. + +`tf-migrate` can optionally create a pull request that updates the state storage location specified in your Terraform configuration. To do this, `tf-migrate` uses the GitHub or GitLab Cloud API, and requires an API token with permissions to modify your Git repository. + +To configure your API token, set the `TF_GIT_PAT_TOKEN` environment variable + + $ export TF_GIT_PAT_TOKEN=<TOKEN> + +## Supported backends + +The `tf-migrate` tool supports migrating state from the following backends to HCP Terraform or Terraform Enterprise: + +- [local](/terraform/language/backend/local) +- [azurerm](/terraform/language/backend/azurerm) +- [consul](/terraform/language/backend/consul) +- [cos](/terraform/language/backend/cos) +- [gcs](/terraform/language/backend/gcs) +- [http](/terraform/language/backend/http) +- [Kubernetes](/terraform/language/backend/kubernetes) +- [oss](/terraform/language/backend/oss) +- [pg](/terraform/language/backend/pg) +- [s3](/terraform/language/backend/s3) + +`tf-migrate` does not support migrating state from an existing `cloud` integration or `remote` backend. + +## Enable logging + +You can enable detailed logging by setting the `TF_MIGRATE_ENABLE_LOG` environment variable to `true`. When you enable this setting, `tf-migrate` writes the logs to the following locations, depending on your operating system: + +| Platform | Location | +| --------------- | --------------------------------------------------------------- | +| macOS and Linux | `/Users/<username>/.tf-migrate/logs/<commandName>/<date>.log` | +| Windows | `C:\Users\<username>\.tf-migrate\logs\<commandName>\<date>.log` | + +You can set the `TF_MIGRATE_LOG_LEVEL` environment variable to one of the following values to change the verbosity of the logs in order of decreasing verbosity: + +- `TRACE` +- `DEBUG` +- `INFO` +- `WARN` +- `ERROR` + +## Additional configuration + +You can create an optional configuration file to modify the `tf-migrate` CLI behavior and specify the path to the configuration file when you run `tf-migrate prepare`. Any command-line flags you provide with these commands override the configuration file. Refer to the [configuration reference](/terraform/enterprise/migrate/tf-migrate/reference/configuration) for additional information. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/configuration.mdx new file mode 100644 index 0000000000..215f5b9a2b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/configuration.mdx @@ -0,0 +1,88 @@ +--- +page_title: Configuration file reference +description: >- + You can configure `tf-migrate` to control how it migrate your state to + Terraform Enterprise or Terraform Enterprise. +source: terraform-docs-common +--- + +# `tf-migrate` configuration file reference + +This topic describes the parameters for configuring the `tf-migrate` CLI. + +## Configuration model + +A `tf-migrate` configuration file supports the following parameters. + +- [`skip-dir`](#skip-dir): list of strings +- [`projects`](#projects): list of objects + - [`dir`](#projects-dir): string + - [`workspaces`](#projects-workspaces): list of objects + - [`name`](#projects-workspaces): string + - [`env-vars`](#projects-workspaces): + - [`terraform-vars`](#projects-workspaces): list of strings + +## Specification + +This section provides details about the fields you can configure in a `tf-migrate` configuration file. + +### `skip-dir` + +Specifies a list of paths to directories you want `tf-migrate` to skip. This parameter is identical to using the [`-skip-dir` command-line flag](/terraform/enterprise/migrate/tf-migrate/reference/prepare#available-options). By default, `tf-migrate` processes all child directories containing Terraform configuration files. + +- Data type: List of strings +- Default: None + +### `projects` + +Specifies a list of project configurations that align with local directories. The `tf-migrate` tool creates one project in HCP Terraform or Terraform Enterprise per configuration. In each project, `tf-migrate` creates one workspace per local workspace. + +- Data type: List of objects +- Default: None + +### `projects.dir` + +Specifies the relative or absolute path to the Terraform configuration to migrate. + +- Data type: String +- Default: None + +### `projects.workspaces` + +Specifies workspace configurations in the project. Terraform creates a workspace in HCP Terraform or Terraform Enterprise for each workspace configuration. The following table describes the attributes you can configure in each item in the list of workspaces: + +| Attribute | Description | Data type | Default | +| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ------- | +| `name` | Specifies the name of the local workspace. | String | None | +| `env-vars` | Specifies a map of environment variables to set during the migration. Each key must start with `TF_VAR`. You must specify `env-vars`, `terraform-vars`, or both. | Object | None | +| `terraform-vars` | Specifies a list of Terraform variables files to use for configuring the workspace. Each file must end with either `.tfvars` or `tfvars.json`. You must specify `terraform-vars`, `env-vars`, or both. The path can be a relative or absolute path. | List of strings | None | + +- Data type: List of objects +- Default: None + +## Example configuration file + +In the following example, Terraform creates one project using data from the `example/project1` directory. The project has a workspace named `staging` and a workspace named `dev`: + +```hcl +skip-dir = ["example/skip/dir1", "example/skip/dir2"] + +projects = [ + { + dir = "example/project1" + workspaces = [ + { + name = "staging" + env-vars = { + "TF_VAR_region": "us-east-2" + } + terraform-vars = ["staging.tfvars"] + }, + { + name = "dev" + terraform-vars = ["dev.tfvars"] + } + ] + } +] +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/execute.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/execute.mdx new file mode 100644 index 0000000000..511175e82a --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/execute.mdx @@ -0,0 +1,65 @@ +--- +page_title: tf-migrate execute reference +description: >- + The `tf-migrate execute` command runs a prepared migration to migrate locally + existing state to Terraform Enterprise or Terraform Enterprise. +source: terraform-docs-common +--- + +# `tf-migrate execute` reference + +The `tf-migrate execute` command directs Terraform to run the `init`, `plan`, and `apply` commands on the configuration generated with the `tf-migrate prepare` command. + +## Usage + + $ tf-migrate execute + +## Description + +The `tf-migrate execute` command creates the project and workspace in HCP Terraform or Terraform Enterprise, migrates the existing state, and updates your configuration to replace the `backend` block with the `cloud` block. If you responded to the prompt in the prepare workflow to create a pull request, `tf-migrate` creates the pull request after it completes the migration. + +When Terraform migrate completes the migration, it displays the number of workspaces migrated, a link to each HCP Terraform workspace, and a link to the GitHub pull request if you configured it to create one. + +## Example + +The `tf-migrate execute` command automatically performs the migration and code updates. + +<CodeBlockConfig hideClipboard> + + $ tf-migrate execute + ✓ Init command ran successfully + ✓ Plan command ran successfully and changes are detected + ✓ Apply command ran successfully + Apply complete! Resources: 7 added, 0 changed, 0 destroyed. + + + Migration Summary + ┌───────────────────────────────┬───────┐ + │ Metric │ Count │ + ├───────────────────────────────┼───────┤ + │ Number of Projects Migrated │ 2 │ + │ Number of Directories Skipped │ 0 │ + │ Number of New Workspaces │ 2 │ + │ Number of Variables Migrated │ 8 │ + └───────────────────────────────┴───────┘ + ┌───────────────────────────────────────────────────────────────────────────────────────────────────┐ + │ Workspace URLs │ + ├───────────────────────────────────────────────────────────────────────────────────────────────────┤ + │ https://app.terraform.io/<ORG>/workspaces/web_default │ + │ https://app.terraform.io/<ORG>/workspaces/api_default │ + └───────────────────────────────────────────────────────────────────────────────────────────────────┘ + ┌────────────────────────────────────────────────────────────────────────┐ + │ Pull Request Link │ + ├────────────────────────────────────────────────────────────────────────┤ + │ https://github.com/<ORG>/learn-terraform-migrate/pull/1 │ + └────────────────────────────────────────────────────────────────────────┘ + +</CodeBlockConfig> + +## Available options + +You can include the following flags when you run the `tf-migrate execute` command: + +| Option | Description | Default | Required | +| ---------- | ------------------------------------------------------------------------------------------------------------------- | ------- | -------- | +| `-dry-run` | If set, Terraform migrate only shows the output from the `terraform plan` step, and does not perform the migration. | None | No | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/prepare.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/prepare.mdx new file mode 100644 index 0000000000..ae735703bf --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/migrate/tf-migrate/reference/prepare.mdx @@ -0,0 +1,104 @@ +--- +page_title: tf-migrate prepare reference +description: >- + The `tf-migrate prepare` command gathers information and creates a plan to + migrate your Terraform Community Edition state. +source: terraform-docs-common +--- + +# `tf-migrate prepare` reference + +The `tf-migrate prepare` command recursively scans the current directory for Terraform state files, then generates new Terraform configuration to migrate the state to HCP Terraform or Terraform Enterprise. + +## Usage + + $ tf-migrate prepare [options] + +## Description + +The `tf-migrate prepare` command prompts you for the following information: + +- The HCP Terraform or Terraform Enterprise organization to migrate your state to. +- If you would like to create a new branch named `hcp-migrate-<BRANCH>` where `<BRANCH>` is the name of the branch you currently have checked out. +- If you would like it to automatically create a pull request with the updated code change when the migration is complete. + +The `tf-migrate prepare` command generates a new Terraform configuration in the `_hcp-migrate-configs` directory to perform the migration. This configuration creates the following resources: + +- One workspace per state file. The `tf-migrate` tool names the workspace following the `<DIRECTORY NAME>-<LOCAL WORKSPACE NAME>` pattern. The `tf-migrate` tool also creates workspace variables from the Terraform configuration's variables. +- One project to store all workspaces. The `tf-migrate` tool uses the directory path to the state file as the project name. For example, if your configuration is stored at `./frontend/networking/terraform.tfstate`, `tf-migrate` names the project "frontend_networking". Because of this, your directory path must be between 3-40 characters and only include letters, numbers, inner spaces, hyphens, and underscores. +- A new local git branch if you responded to the prompt to create a new branch with `yes`. +- A new pull request in the remote git repository if you responded to the prompt to create a pull request with `yes`. + +The `tf-migrate` CLI tool adds the generated configuration to the `.gitignore` file so that the configuration is not committed to source control. + +The `tf-migrate` tool creates the following structure in HCP Terraform or Terraform Enterprise depending on your local configuration: + +| Source | Result | +| :------------------------------------------------------------------------- | :----------------------------------------------------------- | +| Single configuration, single state | Single HCP workspace | +| Single configuration, multiple states for each Community Edition workspace | One HCP workspace per state | +| Multiple configurations, one state per configuration | One HCP workspace per configuration | +| Multiple configurations, multiple states per configuration | One HCP workspace per combination of configuration and state | + +## Example + +The `tf-migrate prepare` command generates the configuration to migrate this state to a single HCP Terraform workspace. + +<CodeBlockConfig hideClipboard> + + $ tf-migrate prepare + ✓ Current working directory: /tmp/learn-terraform-migrate + ✓ Environment readiness checks completed + ✓ Found 3 HCP Terraform organizations + ┌────────────────────────────┐ + │ Available Orgs │ + ├────────────────────────────┤ + │ my-org-1 │ + │ my-org-2 │ + │ my-org-3 │ + └────────────────────────────┘ + Enter the name of the HCP Terraform organization to migrate to: my-org-1 + ✓ You have selected organization my-org-1 for migration + ✓ Found 2 directories with Terraform files + ┌────────────────────────────────┐ + │ Terraform File Directories │ + ├────────────────────────────────┤ + │ web │ + │ api │ + └────────────────────────────────┘ + Create a local branch named hcp-migrate-main from the current branch main: ... ? + + + Only 'yes or no' will be accepted as input. + Type 'yes' to approve the step + Type 'no' to to skip + + + Enter a value: yes + + ✓ Successfully created branch hcp-migrate-main + Do you want to open a pull request from hcp-migrate-main ... ? + + + Only 'yes or no' will be accepted as input. + Type 'yes' to approve the step + Type 'no' to to skip + + + Enter a value: yes + + ✓ Migration config generation completed + ✓ Successfully updated .gitignore + +</CodeBlockConfig> + +## Available options + +You can include the following flags when you run the `tf-migrate prepare` command: + +| Option | Description | Default | Required | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------- | +| `-config` | Specifies the path to an optional configuration file. Refer to [`tf-migrate` configuration file reference](/terraform/enterprise/migrate/tf-migrate/reference/configuration) for more information. | None | No | +| `-hostname` | The hostname of your Terraform Enterprise server. If you do not provide a hostname, `tf-migrate` defaults to HCP Terraform. | `app.terraform.io` | No | +| `-skip-dir` | Specifies a comma-separated list of relative paths to exclude from the migration. | None | No | +| `--parallelism` | Specifies the number of threads `tf-migrate` uses to scan the local directory and prepare the migration. Set this value to `1` to disable parallelism. | The number of logical CPUs in the system. | No | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/module-design.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/module-design.mdx new file mode 100644 index 0000000000..8b62ff5f99 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/module-design.mdx @@ -0,0 +1,72 @@ +--- +page_title: Design no-code ready modules for Terraform Enterprise +description: >- + No-code ready modules let users deploy a module's resources without writing + configuration. Learn how to prepare modules for no-code provisioning. +source: terraform-docs-common +--- + +# Design no-code ready modules + +Terraform [modules](/terraform/language/modules) let you define standardized collections of infrastructure resources that downstream users can more easily deploy. No-code ready modules build on these advantages by letting users deploy a module's resources without writing any Terraform configuration. This practice is called no-code provisioning. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/nocode.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +No-code provisioning enables a self-service workflow that lets users provision approved collections of resources without learning Terraform or infrastructure best practices. You can enable no-code provisioning for any public or private module in your [private registry](/terraform/enterprise/registry). Users can then [provision no-code infrastructure](/terraform/enterprise/no-code-provisioning/provisioning), set the module's input variables, and deploy its resources. + +> **Hands On:** Try the [Create and Use No-Code Ready Modules tutorial](/terraform/tutorials/cloud/no-code-provisioning). + +The same best practices apply to both standard and no-code ready module design. However, no-code modules have additional requirements and considerations. + +## Requirements + +A no-code ready module must meet the following requirements: + +- **Root Module Structure:** The module must follow [standard module structure](/terraform/language/modules/develop/structure) and define its resources in the root directory of the repository. This structure allows the public and private registries to generate documentation, track resource usage, and parse submodules and examples. +- **Provider Configuration:** A no-code ready module must declare the required provider(s) directly in the module. This configuration differs from the recommendations for [modules used in written configuration](/terraform/language/modules/develop/providers#legacy-shared-modules-with-provider-configurations). + +### Provider credentials + +Organization administrators must determine how no-code workspaces access credentials for provider authentication and design modules accordingly. + +When module consumers follow the no-code workflow, HCP Terraform automatically creates a new workspace for the resources and attempts to provision them. New workspaces must be able to access credentials for all providers defined within the module. + +You can grant new no-code workspace provider credentials using one of the following methods: + +- Recommended: Create a [project-scoped variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) that HCP Terraform applies to all existing and future workspaces within a project. This approach allows you to create specific teams for those less familiar with Terraform, then give those teams access to your no-code projects. +- Create a [global variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) that HCP Terraform applies to all existing and future workspaces in the organization. This action automatically grants newly-created workspaces access to the required provider credentials. +- Expose provider credentials as sensitive outputs in another workspace. You must add additional configuration to the module to access these values through [remote state data sources](/terraform/language/state/remote-state-data) and then reference them in provider configuration. This approach provides more control over access to these credentials than placing them in a global variable set. +- Elect to let the first run in new no-code workspaces fail and have module users add credentials directly to the workspace after creation. This approach provides the most control over access to provider credentials, but requires manual intervention. Module users must manually start a new run to provision infrastructure after they configure the credentials. + +## Module Design Recommendations + +Similarly to a [standard module](/terraform/language/modules/develop#when-to-write-a-module), a well-designed no-code ready module composes resources so that they are easy for others to deploy. However, no-code module users are less familiar with Terraform, so we recommend the following best practices for no-code module design. + +### Build For a Specific Use Case + +No-code ready module users are typically less familiar with Terraform and infrastructure management. Reduce the amount of technical decision-making required to deploy the module by scoping it to a single, specific use case. This approach lets users focus on business concerns instead of infrastructure concerns. + +For example, you could build modules that satisfy the following well-scoped use cases: + +- Deploying all resources needed for a three-tier web application +- Deploying a database with constraints on resource allocation and deployment region + +### Updating a Module's Version + +When you enable no-code provisioning for a module, HCP Terraform pins the **No-code Ready** designation to the specific module version of your choice. HCP Terraform deploys that selected module version whenever a user provisions a workspace using that module, ensuring that no-code users always provision the correct version. Pinning the **No-code Ready** designation to a specific module version lets you set variable input options, which are tied to that specific module version. + +By default, a module selects the latest version available. If you pinned a specific module version and a newer one becomes available, you can always update your module's version. + +### Provide Variable Defaults When Possible + +The no-code provisioning workflow prompts users to set values for the module version's input variables before creating the new workspace and deploying resources. We recommend setting reasonable defaults when possible to reduce the effort and expertise needed to deploy the module. Remember that the workspace can also access variable values set through global or project level variable sets in your organization. + +### Define Dropdown Options for Variables without Defaults + +If your module has variables without defaults, you can define options to limit the values a user can input when you enable a module for no-code provisioning. You can define input options using the HCP Terraform UI, the [No-Code Provisioning API](/terraform/enterprise/api-docs/no-code-provisioning), or the [TFE provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/no_code_module). We recommend using the TFE provider if you want to track variable input options through a code approval process, therefore keeping your configuration as code. + +HCP Terraform surfaces any subsequent changes to a variable’s input options when no-code users provision a new module version. If you update the selected module version enabled for no-code provisioning, consider revisiting the variables and adjusting the defined input values accordingly. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/provisioning.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/provisioning.mdx new file mode 100644 index 0000000000..46c36667f2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/no-code-provisioning/provisioning.mdx @@ -0,0 +1,89 @@ +--- +page_title: Provision no-code infrastructure in Terraform Enterprise +description: >- + No-code ready modules let users deploy a module's resources without writing + configuration. Learn how to provision infrastructure from a no-code ready + module. +source: terraform-docs-common +--- + +# Provision no-code infrastructure + +No-code provisioning lets you deploy infrastructure resources in a new HCP Terraform workspace without writing any Terraform configuration. You can create a no-code workspace from any module version labeled **No-code Ready** in your organization's [private registry](/terraform/enterprise/registry). + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/nocode.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +> **Hands On:** Try the [Create and Use No-Code Ready Modules tutorial](/terraform/tutorials/cloud/no-code-provisioning). + +## Permissions + +To use no-code provisioning, you must be a member of a team with [manage all projects permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-all-projects), [manage all workspaces permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-all-workspaces), or [admin permissions for a project](/terraform/enterprise/users-teams-organizations/permissions#project-admins). When using [custom project permissions](/terraform/enterprise/users-teams-organizations/permissions#custom-project-permissions), your team must be able to create workspaces, write variables, and apply runs in a project. + +## Provider Credentials + +Terraform automatically starts a new run to provision no-code infrastructure upon workspace creation. No-code modules contain provider blocks in their configuration, but still require provider credentials for successful deployment. Organization administrators determine how new workspaces should [access provider credentials](/terraform/enterprise/no-code-provisioning/module-design#provider-credentials), which may require specific module design. + +## Creating a Workspace and Deploying Resources + +The no-code provisioning workflow creates a new HCP Terraform workspace to deploy and manage the no-code ready module's resources. HCP Terraform automatically starts a run to provision the module's resources in the new workspace. Depending on the workspace's settings, Terraform either automatically applies the plan or prompts you for approval to provision the infrastructure. + +To launch the no-code workflow: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization with the module you want to provision. + +2. Click **Registry** in the main HCP Terraform navigation to access your organization's private registry. + +3. Click **Modules** to view the list of available modules in the private registry. You can filter for no-code ready modules in your registry. No-code enabled modules have a **No-code Ready** badge next to their names. + +4. Select the no-code ready module to view its details, then click **Provision workspace**. The **Configure module inputs** page appears. + + HCP Terraform scans the module configuration for input variables and prompts for values for any variables without defaults or undefined in an existing global variable set. Terraform requires values for these variables to successfully complete runs in the workspace. HCP Terraform performs type validation for the variable values if the module configuration specifies a type. + +5. (Optional) Set values for the input variables. If your organization has defined options for a variable's values, these options appear in a dropdown menu. You can skip this step and configure the variables later in your workspace. However, HCP Terraform does not prompt you for these values again, and your Terraform runs may fail. + +6. Click **Next: Workspace settings**. + +7. Enter a **Workspace Name**. The name must be unique within the organization and can include letters, numbers, dashes (-), and underscores (\_). Refer to the [workspace naming recommendations](/terraform/enterprise/workspaces/create#workspace-naming) for more guidance. + +8. Choose a **Project** for the workspace. Teams with access to the specified project can view the workspace automatically. Refer to [Organizing Workspaces with Projects](/terraform/enterprise/projects/manage) for more details. If the specified project contains any project-scoped variable sets, HCP Terraform automatically applies those sets to the workspace. + +9. Add an optional **Description** for the workspace. + +10. Select an apply method for the workspace. **Auto apply** automatically applies any successful runs in the workspace, including the initial run on workspace creation. **Manual apply** prompts operators to review and confirm the changes in a run. **Auto apply** is the default option for a no-code workspace. + +11. Click **Create workspace**. HCP Terraform creates a new workspace and starts a run. Depending on the apply method, it automatically applies your infrastructure or prompts you for approval to create the no-code module's resources. + +## Operations in No-Code Workspaces + +No-code workspaces have a limited feature set because you cannot access the resource configuration. However, you can edit workspace variables and settings, including notifications, permissions, and run triggers. You can use run triggers to connect the workspace to one or more source workspaces, start new runs when you change workspace variables, or queue destroy runs. + +### Updating Variables + +To change a variable's options after provisioning, go to the **Variables** section in your workspace to see your workspace's variables listed. To edit a variable: + +1. Click the ellipses next to the variable you want to edit and select **Edit**. +2. Enter your desired value and click **Save variable**. + +Start a new run in your workspace to update your existing infrastructure with your new variable value. + +### Module Version Updates + +When you [update the module version](/terraform/enterprise/no-code-provisioning/module-design#updating-a-module-s-version) designated for no-code provisioning, every workspace provisioned from the module is notified that an updated version is available on the workspace overview page. HCP Terraform does not automatically update workspaces. A workspace admin must respond to the update notification to upgrade the workspace, and HCP Terraform prompts for values for any new input variables. + +To change the version of the module that users can deploy: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to your organization. + +2. Choose **Registry** from the sidebar and navigate to the module in your organization's registry. + +3. Click **Configure Settings**. + +4. Click **Edit version and variable options**. + +5. Choose the desired module version from the **Module version** dropdown. + +6. Click **Save**. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/custom-sentinel.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/custom-sentinel.mdx new file mode 100644 index 0000000000..16334c8807 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/custom-sentinel.mdx @@ -0,0 +1,260 @@ +--- +page_title: Define Sentinel policies in Terraform Enterprise +description: >- + Learn how to use the Sentinel policy language to create policies in Terraform + Enterprise. +source: terraform-docs-common +--- + +# Define Sentinel policies in HCP Terraform + +This topic describes how to create and manage custom policies using Sentinel policy language. For instructions about how to use pre-written Sentinel policies from the registry, refer to [Run pre-written Sentinel policies](/terraform/enterprise/policy-enforcement/prewritten-sentinel). + +## Overview + +To define a policy, create a file and declare an `import` function to include reusable libraries, external data, and other functions. Sentinel policy language includes several types of elements you can import using the `import` function. + +Declare and configure additional Sentinel policy language elements. The details depend on which elements you want to use in your policy. Refer to the [Sentinel documentation](/sentinel/docs) for additional information. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Declare an `import` function + +A policy can include imports that enable a policy to access reusable libraries, external data, and functions. Refer to [imports](/sentinel/docs/concepts/imports) in the Sentinel documentation for more details. + +HCP Terraform provides four imports to define policy rules for the plan, configuration, state, and run associated with a policy check. + +- [tfplan](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) - Access a Terraform plan, which is the file created as a result of the [`terraform plan` command](/terraform/cli/commands/plan). The plan represents the changes that Terraform must make to reach the desired infrastructure state described in the configuration. +- [tfconfig](/terraform/enterprise/policy-enforcement/import-reference/tfconfig-v2) - Access a Terraform configuration. The configuration is the set of `.tf` files that describe the desired infrastructure state. +- [tfstate](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2) - Access the Terraform [state](/terraform/language/state). Terraform uses state to map real-world resources to your configuration. +- [tfrun](/terraform/enterprise/policy-enforcement/import-reference/tfrun) - Access data associated with a [run in HCP Terraform](/terraform/enterprise/run/remote-operations). For example, you could retrieve the run's workspace. + +You can create mocks of these imports to use with the the [Sentinel +CLI](/sentinel/docs/commands) mocking and testing features. Refer to [Mocking Terraform Sentinel Data](/terraform/enterprise/policy-enforcement/test-sentinel) for more details. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +HCP Terraform does not support custom imports. + +<!-- END: TFC:only name:pnp-callout --> + +## Declare additional elements + +The following functions and idioms will be useful as you start writing Sentinel +policies for Terraform. + +### Iterate over modules and find resources + +The most basic Sentinel task for Terraform is to enforce a rule on all resources +of a given type. Before you can do that, you need to get a collection of all the +relevant resources from all modules. The easiest way to do that is to copy and +use a function like the following into your policies. + +The following example uses the `tfplan` import. Refer to our [guides for other examples](https://github.com/hashicorp/terraform-guides/tree/master/governance/second-generation/common-functions) of +functions that iterate over the `tfconfig` and `tfstate` imports. + +```python +import "tfplan" +import "strings" + +# Find all resources of specific type from all modules using the tfplan import +find_resources_from_plan = func(type) { + resources = {} + for tfplan.module_paths as path { + for tfplan.module(path).resources[type] else {} as name, instances { + for instances as index, r { + # Get the address of the resource instance + if length(path) == 0 { + # root module + address = type + "." + name + "[" + string(index) + "]" + } else { + # non-root module + address = "module." + strings.join(path, ".module.") + "." + + type + "." + name + "[" + string(index) + "]" + } + # Add the instance to resources, setting the key to the address + resources[address] = r + } + } + } + return resources +} +``` + +Call the function to get all resources of a desired type by passing the +type as a string in quotation marks: + +```python +aws_instances = find_resources_from_plan("aws_instance") +``` + +This example function does several useful things while finding resources: + +- It checks every module (including the root module) for resources of the + specified type by iterating over the `module_paths` namespace. The top-level + `resources` namespace is more convenient, but it only reveals resources from + the root module. +- It iterates over the named resources and [resource + instances](/terraform/language/expressions/references#resources) + found in each module, starting with `tfplan.module(path).resources[type]` + which is a series of nested maps keyed by resource names and instance counts. +- It uses the Sentinel [`else` + operator](/sentinel/docs/language/spec#else-operator) to + recover from `undefined` values which would occur for modules that don't have + any resources of the specified type. +- It builds a flat `resources` map of all resource instances of the specified + type. Using a flat map simplifies the code used by Sentinel policies to + evaluate rules. +- It computes an `address` variable for each resource instance and uses this as + the key in the `resources` map. This allows writers of Sentinel policies to + print the full [address](/terraform/cli/state/resource-addressing) of each + resource instance that violate a policy, using the same address format used in + plan and apply logs. Doing this tells users who see violation messages exactly + which resources they need to modify in their Terraform code to comply with the + Sentinel policies. +- It sets the value of the `resources` map to the data associated with the + resource instance (`r`). This is the data that Sentinel policies apply rules + against. + +### Validate resource attributes + +Once you have a collection of resources instances of a desired type indexed by +their addresses, you usually want to validate that one or more resource +attributes meets some conditions by iterating over the resource instances. + +While you could use Sentinel's [`all` and `any` +expressions](/sentinel/docs/language/boolexpr#any-all-expressions) +directly inside Sentinel rules, your rules would only report the first violation +because Sentinel uses short-circuit logic. It is therefore usually preferred to +use a [`for` loop](/sentinel/docs/language/loops) outside +of your rules so that you can report all violations that occur. You can do this +inside functions or directly in the policy itself. + +Here is a function that calls the `find_resources_from_plan` function and +validates that the instance types of all EC2 instances being provisioned are in +a given list: + +```python +# Validate that all EC2 instances have instance_type in the allowed_types list +validate_ec2_instance_types = func(allowed_types) { + validated = true + aws_instances = find_resources_from_plan("aws_instance") + for aws_instances as address, r { + # Determine if the attribute is computed + if r.diff["instance_type"].computed else false is true { + print("EC2 instance", address, + "has attribute, instance_type, that is computed.") + } else { + # Validate that each instance has allowed value + if (r.applied.instance_type else "") not in allowed_types { + print("EC2 instance", address, "has instance_type", + r.applied.instance_type, "that is not in the allowed list:", + allowed_types) + validated = false + } + } + } + return validated +} +``` + +The boolean variable `validated` is initially set to `true`, but it is set to +`false` if any resource instance violates the condition requiring that the +`instance_type` attribute be in the `allowed_types` list. Since the function +returns `true` or `false`, it can be called inside Sentinel rules. + +Note that this function prints a warning message for **every** resource instance +that violates the condition. This allows writers of Terraform code to fix all +violations after just one policy check. It also prints warnings when the +attribute being evaluated is +[computed](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#value-computed) and does +not evaluate the condition in this case since the applied value will not be +known. + +While this function allows a rule to validate an attribute against a list, some +rules will only need to validate an attribute against a single value; in those +cases, you could either use a list with a single value or embed that value +inside the function itself, drop the `allowed_types` parameter from the function +definition, and use the `is` operator instead of the `in` operator to compare +the resource attribute against the embedded value. + +### Write Rules + +Having used the standardized `find_resources_from_plan` function and having +written your own function to validate that resources instances of a specific +type satisfy some condition, you can define a list with allowed values and write +a rule that evaluates the value returned by your validation function. + +```python +# Allowed Types +allowed_types = [ + "t2.small", + "t2.medium", + "t2.large", +] + +# Main rule +main = rule { + validate_ec2_instance_types(allowed_types) +} + +``` + +### Validate multiple conditions in a single policy + +If you want a policy to validate multiple conditions against resources of a +specific type, you could define a separate validation function for each +condition or use a single function to evaluate all the conditions. In the latter +case, you would make this function return a list of boolean values, using one +for each condition. You can then use multiple Sentinel rules that evaluate +those boolean values or evaluate all of them in your `main` rule. Here is a +partial example: + +```python +# Function to validate that S3 buckets have private ACL and use KMS encryption +validate_private_acl_and_kms_encryption = func() { + result = { + "private": true, + "encrypted_by_kms": true, + } + s3_buckets = find_resources_from_plan("aws_s3_bucket") + # Iterate over resource instances and check that S3 buckets + # have private ACL and are encrypted by a KMS key + # If an S3 bucket is not private, set result["private"] to false + # If an S3 bucket is not encrypted, set result["encrypted_by_kms"] to false + for s3_buckets as joined_path, resource_map { + #... + } + return result +} + +# Call the validation function +validations = validate_private_acl_and_kms_encryption() + +# ACL rule +is_private = rule { + validations["private"] +} + +# KMS Encryption Rule +is_encrypted_by_kms = rule { + validations["encrypted_by_kms"] +} + +# Main rule +main = rule { + is_private and is_encrypted_by_kms +} +``` + +You can write similar functions and policies to restrict Terraform configurations using the `tfconfig` import and to restrict Terraform state using the `tfstate` import. + +## Next steps + +1. Group your policies into sets and apply them to your workspaces. Refer to [Create policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets#create-policy-sets) for additional information. +2. View results and address Terraform runs that do not comply with your policies. Refer to [View results](/terraform/enterprise/policy-enforcement/view-results) for additional information. +3. You can also view Sentinel policy results in JSON format. Refer to [View Sentinel JSON results](/terraform/enterprise/policy-enforcement/view-results/json) for additional information. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/index.mdx new file mode 100644 index 0000000000..bc5881f611 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/index.mdx @@ -0,0 +1,19 @@ +--- +page_title: Define policies overview +description: >- + You can define policies using HashiCorp Sentinel or Open Policy Agent (OPA). + Learn how to define policies for governing how Terraform provisions + infrastructure. +source: terraform-docs-common +--- + +# Define policies overview + +This topic provides overview information about how to define policies as code. Policies are rules for enforcing how Terraform provisions infrastructure as code for your workspaces and projects. + +## Workflows + +You can use two policy-as-code frameworks to define fine-grained, logic-based policies: Sentinel and Open Policy Agent (OPA). Depending on the settings, policies can act as advisory warnings or firm requirements that prevent Terraform from provisioning infrastructure. + +- **Sentinel:** You define policies with the [Sentinel policy language](/sentinel/docs/concepts/language) and use imports to parse the Terraform plan, state, and configuration. Refer to [Define custom Sentinel policies](/terraform/enterprise/policy-enforcement/define-policies/custom-sentinel) for details. +- **OPA:** You define policies with the [Rego policy language](https://www.openpolicyagent.org/docs/latest/policy-language/). Refer to [Defining OPA Policies](/terraform/enterprise/policy-enforcement/define-policies/opa) for details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/opa.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/opa.mdx new file mode 100644 index 0000000000..92305f8e9f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/define-policies/opa.mdx @@ -0,0 +1,259 @@ +--- +page_title: Define Open Policy Agent policies for Terraform Enterprise +description: >- + Use the Rego policy language to define Open Policy Agent (OPA) policies for + Terraform Enterprise. +source: terraform-docs-common +--- + +# Define Open Policy Agent policies for HCP Terraform + +This topic describes how to create and manage custom policies using the open policy agent (OPA) framework. Refer to the following topics for instructions on using HashiCorp Sentinel policies: + +- [Define custom Sentinel policies](/terraform/enterprise/policy-enforcement/define-policies/custom-sentinel) +- [Copy pre-written Sentinel policies](/terraform/enterprise/define-policies/prewritten-sentinel) + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Overview + +> **Hands-on:** Try the [Detect Infrastructure Drift and Enforce OPA Policies](/terraform/tutorials/cloud/drift-and-opa) tutorial. + +You can write OPA policies using the Rego policy language, which is the native query language for the OPA framework. Refer to the following topics in the [OPA documentation](https://www.openpolicyagent.org/docs/latest/policy-language/) for additional information: + +- [How Do I Write Rego Policies?](https://www.openpolicyagent.org/docs/v0.13.5/how-do-i-write-policies/) +- [Rego Policy Playground](https://play.openpolicyagent.org/) + +## OPA query + +You must write a query to identify a specific policy rule within your Rego code. The query may evaluate code from multiple Rego files. + +The result of each query must return an array, which HCP Terraform uses to determine whether the policy has passed or failed. If the array is empty, HCP Terraform reports that the policy has passed. + +The query is typically a combination of the policy package name and rule name, such as `data.terraform.deny`. + +## OPA input + +HCP Terraform combines the output from the Terraform run and plan into a single JSON file and passes that file to OPA as input. Refer to the [OPA Overview documentation](https://www.openpolicyagent.org/docs/latest/#the-input-document) for more details about how OPA uses JSON input data. + +The run data contains information like workspace details and the organization name. To access the properties from the Terraform plan data in your policies, use `input.plan`. To access properties from the Terraform run, use `input.run`. + +The following example shows sample OPA input data. + +```json +{ +"plan": { + "format_version": "1.1", + "output_changes": { + }, + "planned_values": { + }, + "resource_changes": [ + ], + "terraform_version": "1.2.7" +}, + +"run": { + "organization": { + "name": "hashicorp" + }, + "workspace": { + } +} +} +``` + +Use the [Retrieve JSON Execution Plan endpoint](/terraform/enterprise/api-docs/plans#retrieve-the-json-execution-plan) to retrieve Terraform plan output data for testing. Refer to [Terraform Run Data](#terraform-run-data) for the properties included in Terraform run output data. + +## Example Policies + +The following example policy parses a Terraform plan and checks whether it includes security group updates that allow ingress traffic from all CIDRs (`0.0.0.0/0`). + +The OPA query for this example policy is `data.terraform.policies.public_ingress.deny`. + +```rego +package terraform.policies.public_ingress + +import input.plan as plan + +deny[msg] { + r := plan.resource_changes[_] + r.type == "aws_security_group" + r.change.after.ingress[_].cidr_blocks[_] == "0.0.0.0/0" + msg := sprintf("%v has 0.0.0.0/0 as allowed ingress", [r.address]) +} +``` + +The following example policy ensures that databases are no larger than 128 GB. + +The OPA query for this policy is `data.terraform.policies.fws.database.fws_db_001.rule`. + +```rego +package terraform.policies.fws.database.fws_db_001 + +import future.keywords.in +import input.plan as tfplan + +actions := [ + ["no-op"], + ["create"], + ["update"], +] + +db_size := 128 + +resources := [resource_changes | + resource_changes := tfplan.resource_changes[_] + resource_changes.type == "fakewebservices_database" + resource_changes.mode == "managed" + resource_changes.change.actions in actions +] + +violations := [resource | + resource := resources[_] + not resource.change.after.size == db_size +] + +violators[address] { + address := violations[_].address +} + +rule[msg] { + count(violations) != 0 + msg := sprintf( + "%d %q severity resource violation(s) have been detected.", + [count(violations), rego.metadata.rule().custom.severity] + ) +} +``` + +## Test policies + +You can write tests for your policies by [mocking](https://www.openpolicyagent.org/docs/latest/policy-testing/#data-and-function-mocking) the input data the policies use during Terraform runs. + +The following example policy called `block_auto_apply_runs` checks whether or not an HCP Terraform workspace has been configured to automatically apply a successful Terraform plan. + +```rego +package terraform.tfc.block_auto_apply_runs + +import input.run as run + +deny[msg] { + run.workspace.auto_apply != false + msg := sprintf( + "HCP Terraform workspace %s has been configured to automatically provision Terraform infrastructure. Change the workspace Apply Method settings to 'Manual Apply'", + [run.workspace.name], + ) +} +``` + +The following test validates `block_auto_apply_runs`. The test is written in rego and uses the OPA [test format](https://www.openpolicyagent.org/docs/latest/policy-testing/#test-format) to check that the workspace [apply method](/terraform/enterprise/workspaces/settings#apply-method) is not configured to auto apply. You can run this test with the `opa test` CLI command. Refer to [Policy Testing](https://www.openpolicyagent.org/docs/latest/policy-testing/) in the OPA documentation for more details. + +```rego +package terraform.tfc.block_auto_apply_runs + +import future.keywords + +test_run_workspace_auto_apply if { + deny with input as {"run": {"workspace": {"auto_apply": true}}} +} +``` + +## Terraform run data + +Each [Terraform run](/terraform/docs/glossary#run) outputs data describing the run settings and the associated workspace. + +### Schema + +The following code shows the schema for Terraform run data. + + run + ├── id (string) + ├── created_at (string) + ├── created_by (string) + ├── message (string) + ├── commit_sha (string) + ├── is_destroy (boolean) + ├── refresh (boolean) + ├── refresh_only (boolean) + ├── replace_addrs (array of strings) + ├── speculative (boolean) + ├── target_addrs (array of strings) + └── project + │ ├── id (string) + │ └── name (string) + ├── variables (map of keys) + ├── organization + │ └── name (string) + └── workspace + ├── id (string) + ├── name (string) + ├── created_at (string) + ├── description (string) + ├── execution_mode (string) + ├── auto_apply (bool) + ├── tags (array of strings) + ├── working_directory (string) + └── vcs_repo (map of keys) + +### Properties + +The following sections contain details about each property in Terraform run data. + +#### Run namespace + +The following table contains the attributes for the `run` namespace. + +| Properties Name | Type | Description | +| --------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | String | The ID associated with the current Terraform run | +| `created_at` | String | The time Terraform created the run. The timestamp follows the [standard timestamp format in RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). | +| `created_by` | String | A string that specifies the user name of the HCP Terraform user for the specific run. | +| `message` | String | The message associated with the Terraform run. The default value is "Queued manually via the Terraform Enterprise API". | +| `commit_sha` | String | The checksum hash (SHA) that identifies the commit | +| `is_destroy` | Boolean | Whether the plan is a destroy plan that destroys all provisioned resources | +| `refresh` | Boolean | Whether the state refreshed prior to the plan | +| `refresh_only` | Boolean | Whether the plan is in refresh-only mode. In refresh-only mode, Terraform ignores configuration changes and updates state with any changes made outside of Terraform. | +| `replace_addrs` | An array of strings representing [resource addresses](/terraform/cli/state/resource-addressing) | The targets specified using the [`-replace`](/terraform/cli/commands/plan#replace-address) flag in the CLI or the `replace-addrs` property in the API. Undefined if there are no specified resource targets. | +| `speculative` | Boolean | Whether the plan associated with the run is a [speculative plan](/terraform/enterprise/run/remote-operations#speculative-plans) only | +| `target_addrs` | An array of strings representing [resource addresses](/terraform/cli/state/resource-addressing). | The targets specified using the [`-target`](/terraform/cli/commands/plan#resource-targeting) flag in the CLI or the `target-addrs` property in the API. Undefined if there are no specified resource targets. | +| `variables` | A string-keyed map of values. | Provides the variables configured within the run. Each variable `name` maps to two properties: `category` and `sensitive`. The `category` property is a string indicating the variable type, either "input" or "environment". The `sensitive` property is a boolean, indicating whether the variable is a [sensitive value](/terraform/enterprise/workspaces/variables/managing-variables#sensitive-values). | + +#### Project Namespace + +The following table contains the properties for the `project` namespace. + +| Property Name | Type | Description | +| ------------- | ------ | --------------------------------------------------------------------------------------- | +| `id` | String | The ID associated with the Terraform project | +| `name` | String | The name of the project, which can only include letters, numbers, spaces, `-`, and `_`. | + +#### Organization namespace + +The `organization` namespace has one property called `name`. The `name` property is a string that specifies the name of the HCP Terraform organization for the run. + +#### Workspace namespace + +The following table contains the properties for the `workspace` namespace. + +| Property Name | Type | Description | +| ------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | String | The ID associated with the Terraform workspace | +| `name` | String | The name of the workspace, which can only include letters, numbers, `-`, and `_` | +| `created_at` | String | The time of the workspace's creation. The timestamp follows the [standard timestamp format in RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). | +| `description` | String | The description for the workspace. This value can be `null`. | +| `auto_apply` | Boolean | The workspace's [auto-apply](/terraform/enterprise/workspaces/settings#apply-method) setting | +| `tags` | Array of strings | The list of tag names for the workspace | +| `working_directory` | String | The configured [Terraform working directory](/terraform/enterprise/workspaces/settings#terraform-working-directory) of the workspace. This value can be `null`. | +| `execution_mode` | String | The configured Terraform execution mode of the workspace. The default value is `remote`. | +| `vcs_repo` | A string-keyed map to objects | Data associated with a VCS repository connected to the workspace. The map contains `identifier` (string), ` display_identifier` (string), `branch` (string), and `ingress_submodules` (boolean). Refer to the HCP Terraform [Workspaces API documentation](/terraform/enterprise/api-docs/workspaces) for details about each property. This value can be `null`. | + +## Next steps + +- Group your policies into sets and apply them to your workspaces. Refer to [Create policy sets](/policy-enforcement/manage-policy-sets#create-policy-sets) for additional information. +- View results and address Terraform runs that do not comply with your policies. Refer to [View results](/terraform/enterprise/policy-enforcement/view-results) for additional information. +- You can also view Sentinel policy results in JSON format. Refer to [View Sentinel JSON results](/terraform/enterprise/policy-enforcement/view-results/json) for additional information. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/index.mdx new file mode 100644 index 0000000000..eebf3b47f7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/index.mdx @@ -0,0 +1,32 @@ +--- +page_title: Sentinel import function reference +description: >- + Use the Sentinel import function to configure policy behaviors in custom + Sentinel policies. +source: terraform-docs-common +--- + +# `import` function reference overview + +This topic provides an overview of the Sentinel `import` function, which you can use to import Sentinel libraries into your custom Sentinel policies. Refer to [Define custom Sentinel policies](/terraform/enterprise/policy-enforcement/define-policies/custom-sentinel) for additional information about how to use the `import` function. + +## Functions for Terraform + +You can add Sentinel the `import` function, which enables a policy to access reusable libraries, external data, and other functions. Refer to the [Sentinel imports documentation](/sentinel/docs/language/imports) for more details. + +HCP Terraform provides the following importable libraries to define policy rules for the plan, configuration, state, and run associated with a policy check. + +- [`tfplan`](/terraform/enterprise/policy-enforcement/import-reference/tfplan) : Provides access to a Terraform plan, which is the file created when you run the `terraform plan` command. This library is deprecated. Use `tfplanv/2` instead. +- [`tfplan/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2): Provides access to a Terraform plan, which is the file created when you run the `terraform plan` command. +- [`tfconfig`](/terraform/enterprise/policy-enforcement/import-reference/tfconfig): Provides access to a Terraform configuration. The configuration is the set of `.tf` files that describe the desired infrastructure state. This library is deprecated. Use `tfconfig/v2` instead. +- [`tfconfig/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfconfig-v2): Provides access to a Terraform configuration. The configuration is the set of `.tf` files that describe the desired infrastructure state. +- [`tfstate`](/terraform/enterprise/policy-enforcement/import-reference/tfstate): Provides access to the Terraform state. Terraform uses state to map real-world resources to your configuration. This library is deprecated. Use `tfstate/v2` instead. +- [`tfstate/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2): Provides access to the Terraform state. Terraform uses state to map real-world resources to your configuration. +- [`tfrun`](/terraform/enterprise/policy-enforcement/import-reference/tfrun): Provides access to data associated with a run in HCP Terraform. For example, you could retrieve the run's workspace. + +## Test `import` functions + +You can create mocks of these functions and test them using the Sentinel CLI. Refer to the following topics for additional information: + +- [Test Sentinel policies](/terraform/enterprise/policy-enforcement/test-sentinel) +- [Sentinel CLI documentation](/sentinel/docs/commands) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig-v2.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig-v2.mdx new file mode 100644 index 0000000000..637d596f01 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig-v2.mdx @@ -0,0 +1,422 @@ +--- +page_title: tfconfig/v2 Sentinel import +description: >- + Use the tfconfig/v2 import to give Sentinel access to a Terraform + configuration. +source: terraform-docs-common +--- + +-> **Note:** This is documentation for the next version of the `tfconfig` +Sentinel import, designed specifically for Terraform 0.12. This import requires +Terraform 0.12 or higher, and must currently be loaded by path, using an alias, +example: `import "tfconfig/v2" as tfconfig`. + +# tfconfig/v2 Sentinel import + +The `tfconfig/v2` import provides access to a Terraform configuration. + +The Terraform configuration is the set of `*.tf` files that are used to +describe the desired infrastructure state. Policies using the `tfconfig` +import can access all aspects of the configuration: providers, resources, +data sources, modules, and variables. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Some use cases for `tfconfig` include: + +- **Organizational naming conventions**: requiring that configuration elements + are named in a way that conforms to some organization-wide standard. +- **Required inputs and outputs**: organizations may require a particular set + of input variable names across all workspaces or may require a particular + set of outputs for asset management purposes. +- **Enforcing particular modules**: organizations may provide a number of + "building block" modules and require that each workspace be built only from + combinations of these modules. +- **Enforcing particular providers or resources**: an organization may wish to + require or prevent the use of providers and/or resources so that configuration + authors cannot use alternative approaches to work around policy + restrictions. + +The data in the `tfconfig/v2` import is sourced from the JSON configuration file +that is generated by the [`terraform show -json`](/terraform/cli/commands/show#json-output) command. For more information on +the file format, see the [JSON Output Format](/terraform/internals/json-format) +page. + +## Import Overview + +The `tfconfig/v2` import is structured as a series of _collections_, keyed as a +specific format, such as resource address, module address, or a +specifically-formatted provider key. + + tfconfig/v2 + ├── strip_index() (function) + ├── providers + │ └── (indexed by [module_address:]provider[.alias]) + │ ├── provider_config_key (string) + │ ├── name (string) + │ ├── full_name (string) + │ ├── alias (string) + │ ├── module_address (string) + │ ├── config (block expression representation) + │ └── version_constraint (string) + ├── resources + │ └── (indexed by address) + │ ├── address (string) + │ ├── module_address (string) + │ ├── mode (string) + │ ├── type (string) + │ ├── name (string) + │ ├── provider_config_key (string) + │ ├── provisioners (list) + │ │ └── (ordered provisioners for this resource only) + │ ├── config (block expression representation) + │ ├── count (expression representation) + │ ├── for_each (expression representation) + │ └── depends_on (list of strings) + ├── provisioners + │ └── (indexed by resource_address:index) + │ ├── resource_address (string) + │ ├── type (string) + │ ├── index (string) + │ └── config (block expression representation) + ├── variables + │ └── (indexed by module_address:name) + │ ├── module_address (string) + │ ├── name (string) + │ ├── default (value) + │ └── description (string) + ├── outputs + │ └── (indexed by module_address:name) + │ ├── module_address (string) + │ ├── name (string) + │ ├── sensitive (boolean) + │ ├── value (expression representation) + │ ├── description (string) + │ └── depends_on (list of strings) + └── module_calls + └── (indexed by module_address:name) + ├── module_address (string) + ├── name (string) + ├── source (string) + ├── config (block expression representation) + ├── count (expression representation) + ├── depends_on (expression representation) + ├── for_each (expression representation) + └── version_constraint (string) + +The collections are: + +- [`providers`](#the-providers-collection) - The configuration for all provider + instances across all modules in the configuration. +- [`resources`](#the-resources-collection) - The configuration of all resources + across all modules in the configuration. +- [`variables`](#the-variables-collection) - The configuration of all variable + definitions across all modules in the configuration. +- [`outputs`](#the-outputs-collection) - The configuration of all output + definitions across all modules in the configuration. +- [`module_calls`](#the-module_calls-collection) - The configuration of all module + calls (individual [`module`](/terraform/language/modules) blocks) across + all modules in the configuration. + +These collections are specifically designed to be used with the +[`filter`](/sentinel/docs/language/collection-operations#filter-expression) +quantifier expression in Sentinel, so that one can collect a list of resources +to perform policy checks on without having to write complex module or +configuration traversal. As an example, the following code will return all +`aws_instance` resource types within the configuration, regardless of what +module they are in: + + all_aws_instances = filter tfconfig.resources as _, r { + r.mode is "managed" and + r.type is "aws_instance" + } + +You can add specific attributes to the filter to narrow the search, such as the +module address. The following code would return resources in a module named +`foo` only: + + all_aws_instances = filter tfconfig.resources as _, r { + r.module_address is "module.foo" and + r.mode is "managed" and + r.type is "aws_instance" + } + +### Address Differences Between `tfconfig`, `tfplan`, and `tfstate` + +This import deals with configuration before it is expanded into a +resource graph by Terraform. As such, it is not possible to compute an index as +the import is building its collections and computing addresses for resources and +modules. + +As such, addresses found here may not always match the expanded addresses found +in the [`tfplan/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) and [`tfstate/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2) +imports, specifically when +[`count`](/terraform/language/resources#count-multiple-resource-instances-by-count) +and +[`for_each`](/terraform/language/resources#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings), +are used. + +As an example, consider a resource named `null_resource.foo` with a count of `2` +located in a module named `bar`. While there will possibly be entries in the +other imports for `module.bar.null_resource.foo[0]` and +`module.bar.null_resource.foo[1]`, in `tfconfig/v2`, there will only be a +`module.bar.null_resource.foo`. As mentioned in the start of this section, this +is because configuration actually _defines_ this scaling, whereas _expansion_ +actually happens when the resource graph is built, which happens as a natural +part of the refresh and planning process. + +The `strip_index` helper function, found in this import, can assist in +removing the indexes from addresses found in the `tfplan/v2` and `tfstate/v2` +imports so that data from those imports can be used to reference data in this +one. + +## The `strip_index` Function + +The `strip_index` helper function can be used to remove indexes from addresses +found in [`tfplan/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) and [`tfstate/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2), +by removing the indexes from each resource. + +This can be used to help facilitate cross-import lookups for data between plan, +state, and config. + + import "tfconfig/v2" as tfconfig + import "tfplan/v2" as tfplan + + main = rule { + all filter tfplan.resource_changes as _, rc { + rc.mode is "managed" and + rc.type is "aws_instance" + } as _, rc { + tfconfig.resources[tfconfig.strip_index(rc.address)].config.ami.constant_value is "ami-abcdefgh012345" + } + } + +## Expression Representations + +Most collections in this import will have one of two kinds of _expression +representations_. This is a verbose format for expressing a (parsed) +configuration value independent of the configuration source code, which is not +100% available to a policy check in HCP Terraform. + + (expression representation) + ├── constant_value (value) + └── references (list of strings) + +There are two major parts to an expression representation: + +- Any _strictly constant value_ is expressed as an expression with a + `constant_value` field. +- Any expression that requires some degree of evaluation to generate the final + value - even if that value is known at plan time - is not expressed in + configuration. Instead, any particular references that are made are added to + the `references` field. More details on this field can be found in the + [expression + representation](/terraform/internals/json-format#expression-representation) + section of the JSON output format documentation. + +For example, to determine if an output is based on a particular +resource value, one could do: + + import "tfconfig/v2" as tfconfig + + main = rule { + tfconfig.outputs["instance_id"].value.references is ["aws_instance.foo"] + } + +-> **Note:** The representation does not account for +complex interpolations or other expressions that combine constants with other +expression data. For example, the partially constant data in `"foo${var.bar}"` would be lost. + +### Block Expression Representation + +Expanding on the above, a multi-value expression representation (such as the +kind found in a [`resources`](#the-resources-collection) collection element) is +similar, but the root value is a keyed map of expression representations. This +is repeated until a "scalar" expression value is encountered, ie: a field that +is not a block in the resource's schema. + + (block expression representation) + └── (attribute key) + ├── (child block expression representation) + │ └── (...) + ├── constant_value (value) + └── references (list of strings) + +As an example, one can validate expressions in an +[`aws_instance`](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance) resource using the +following: + + import "tfconfig/v2" as tfconfig + + main = rule { + tfconfig.resources["aws_instance.foo"].config.ami.constant_value is "ami-abcdefgh012345" + } + +Note that _nested blocks_, sometimes known as _sub-resources_, will be nested in +configuration as a list of blocks (reflecting their ultimate nature as a list +of objects). An example would be the `aws_instance` resource's +[`ebs_block_device`](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#ebs-ephemeral-and-root-block-devices) block: + + import "tfconfig/v2" as tfconfig + + main = rule { + tfconfig.resources["aws_instance.foo"].config.ebs_block_device[0].volume_size < 10 + } + +## The `providers` Collection + +The `providers` collection is a collection representing the configurations of +all provider instances across all modules in the configuration. + +This collection is indexed by an opaque key. This is currently +`module_address:provider.alias`, the same value as found in the +`provider_config_key` field. `module_address` and the colon delimiter are +omitted for the root module. + +The `provider_config_key` field is also found in the `resources` collection and +can be used to locate a provider that belongs to a configured resource. + +The fields in this collection are as follows: + +- `provider_config_key` - The opaque configuration key, used as the index key. +- `name` - The name of the provider, ie: `aws`. +- `full_name` - The fully-qualified name of the provider, e.g. `registry.terraform.io/hashicorp/aws`. +- `alias` - The alias of the provider, ie: `east`. Empty for a default provider. +- `module_address` - The address of the module this provider appears in. +- `config` - A [block expression + representation](#block-expression-representation) with provider configuration + values. +- `version_constraint` - The defined version constraint for this provider. + +## The `resources` Collection + +The `resources` collection is a collection representing all of the resources +found in all modules in the configuration. + +This collection is indexed by the resource address. + +The fields in this collection are as follows: + +- `address` - The resource address. This is the index of the collection. +- `module_address` - The module address that this resource was found in. +- `mode` - The resource mode, either `managed` (resources) or `data` (data + sources). +- `type` - The type of resource, ie: `null_resource` in `null_resource.foo`. +- `name` - The name of the resource, ie: `foo` in `null_resource.foo`. +- `provider_config_key` - The opaque configuration key that serves as the index + of the [`providers`](#the-providers-collection) collection. +- `provisioners` - The ordered list of provisioners for this resource. The + syntax of the provisioners matches those found in the + [`provisioners`](#the-provisioners-collection) collection, but is a list + indexed by the order the provisioners show up in the resource. +- `config` - The [block expression + representation](#block-expression-representation) of the configuration values + found in the resource. +- `count` - The [expression data](#expression-representations) for the `count` + value in the resource. +- `for_each` - The [expression data](#expression-representations) for the + `for_each` value in the resource. +- `depends_on` - The contents of the `depends_on` config directive, which + declares explicit dependencies for this resource. + +## The `provisioners` Collection + +The `provisioners` collection is a collection of all of the provisioners found +across all resources in the configuration. + +While normally bound to a resource in an ordered fashion, this collection allows +for the filtering of provisioners within a single expression. + +This collection is indexed with a key following the format +`resource_address:index`, with each field matching their respective field in the +particular element below: + +- `resource_address`: The address of the resource that the provisioner was found + in. This can be found in the [`resources`](#the-resources-collection) + collection. +- `type`: The provisioner type, ie: `local_exec`. +- `index`: The provisioner index as it shows up in the resource provisioner + order. +- `config`: The [block expression + representation](#block-expression-representation) of the configuration values + in the provisioner. + +## The `variables` Collection + +The `variables` collection is a collection of all variables across all modules +in the configuration. + +Note that this tracks variable definitions, not values. See the [`tfplan/v2` +`variables` collection](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#the-variables-collection) for variable +values set within a plan. + +This collection is indexed by the key format `module_address:name`, with each +field matching their respective name below. `module_address` and the colon +delimiter are omitted for the root module. + +- `module_address` - The address of the module the variable was found in. +- `name` - The name of the variable. +- `default` - The defined default value of the variable. +- `description` - The description of the variable. + +## The `outputs` Collection + +The `outputs` collection is a collection of all outputs across all modules in +the configuration. + +Note that this tracks variable definitions, not values. See the [`tfstate/v2` +`outputs` collection](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2#the-outputs-collection) for the final +values of outputs set within a state. The [`tfplan/v2` `output_changes` +collection](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#the-output_changes-collection) also contains a more +complex collection of planned output changes. + +This collection is indexed by the key format `module_address:name`, with each +field matching their respective name below. `module_address` and the colon +delimiter are omitted for the root module. + +- `module_address` - The address of the module the output was found in. +- `name` - The name of the output. +- `sensitive` - Indicates whether or not the output was marked as + [`sensitive`](/terraform/language/values/outputs#sensitive-suppressing-values-in-cli-output). +- `value` - An [expression representation](#expression-representations) for the output. +- `description` - The description of the output. +- `depends_on` - A list of resource names that the output depends on. These are + the hard-defined output dependencies as defined in the + [`depends_on`](/terraform/language/values/outputs#depends_on-explicit-output-dependencies) + field in an output declaration, not the dependencies that get derived from + natural evaluation of the output expression (these can be found in the + `references` field of the expression representation). + +## The `module_calls` Collection + +The `module_calls` collection is a collection of all module declarations at all +levels within the configuration. + +Note that this is the +[`module`](/terraform/language/modules#calling-a-child-module) stanza in +any particular configuration, and not the module itself. Hence, a declaration +for `module.foo` would actually be declared in the root module, which would be +represented by a blank field in `module_address`. + +This collection is indexed by the key format `module_address:name`, with each +field matching their respective name below. `module_address` and the colon +delimiter are omitted for the root module. + +- `module_address` - The address of the module the declaration was found in. +- `name` - The name of the module. +- `source` - The contents of the `source` field. +- `config` - A [block expression + representation](#block-expression-representation) for all parameter values + sent to the module. +- `count` - An [expression representation](#expression-representations) for the + `count` field. +- `depends_on`: An [expression representation](#expression-representations) for the + `depends_on` field. +- `for_each` - An [expression representation](#expression-representations) for + the `for_each` field. +- `version_constraint` - The string value found in the `version` field of the + module declaration. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig.mdx new file mode 100644 index 0000000000..dd83787db5 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfconfig.mdx @@ -0,0 +1,976 @@ +--- +page_title: tfconfig Sentinel import +description: Use tfconfig import to give Sentinel access to a Terraform configuration. +source: terraform-docs-common +--- + +# tfconfig Sentinel import + +~> **Warning:** The `tfconfig` import is now deprecated and will be permanently removed in August 2025. We recommend that you start using the updated [tfconfig/v2](/terraform/enterprise/policy-enforcement/import-reference/tfconfig-v2) import as soon as possible to avoid disruptions. The `tfconfig/v2` import offers improved functionality and is designed to better support your policy enforcement needs. + +The `tfconfig` import provides access to a Terraform configuration. + +The Terraform configuration is the set of `*.tf` files that are used to +describe the desired infrastructure state. Policies using the `tfconfig` +import can access all aspects of the configuration: providers, resources, +data sources, modules, and variables. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Some use cases for `tfconfig` include: + +- **Organizational naming conventions**: requiring that configuration elements + are named in a way that conforms to some organization-wide standard. +- **Required inputs and outputs**: organizations may require a particular set + of input variable names across all workspaces or may require a particular + set of outputs for asset management purposes. +- **Enforcing particular modules**: organizations may provide a number of + "building block" modules and require that each workspace be built only from + combinations of these modules. +- **Enforcing particular providers or resources**: an organization may wish to + require or prevent the use of providers and/or resources so that configuration + authors cannot use alternative approaches to work around policy + restrictions. + +Note with these use cases that this import is concerned with object _names_ +in the configuration. Since this is the configuration and not an invocation +of Terraform, you can't see values for variables, the state, or the diff for +a pending plan. If you want to write policy around expressions used +within configuration blocks, you likely want to use the +[`tfplan`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) import. + +## Namespace Overview + +The following is a tree view of the import namespace. For more detail on a +particular part of the namespace, see below. + +-> **Note:** The root-level alias keys shown here (`data`, `modules`, +`providers`, `resources`, and `variables`) are shortcuts to a [module +namespace](#namespace-module) scoped to the root module. For more details, see +the section on [root namespace aliases](#root-namespace-aliases). + + tfconfig + ├── module() (function) + │ └── (module namespace) + │ ├── data + │ │ └── TYPE.NAME + │ │ ├── config (map of keys) + │ │ ├── references (map of keys) (TF 0.12 and later) + │ │ └── provisioners + │ │ └── NUMBER + │ │ ├── config (map of keys) + │ │ ├── references (map of keys) (TF 0.12 and later) + │ │ └── type (string) + │ ├── modules + │ │ └── NAME + │ │ ├── config (map of keys) + │ │ ├── references (map of keys) (TF 0.12 and later) + │ │ ├── source (string) + │ │ └── version (string) + │ ├──outputs + │ │ └── NAME + │ │ ├── depends_on (list of strings) + │ │ ├── description (string) + │ │ ├── sensitive (boolean) + │ │ ├── references (list of strings) (TF 0.12 and later) + │ │ └── value (value) + │ ├── providers + │ │ └── TYPE + │ │ ├── alias + │ │ │ └── ALIAS + │ │ │ ├── config (map of keys) + │ │ | ├── references (map of keys) (TF 0.12 and later) + │ │ │ └── version (string) + │ │ ├── config (map of keys) + │ │ ├── references (map of keys) (TF 0.12 and later) + │ │ └── version (string) + │ ├── resources + │ │ └── TYPE.NAME + │ │ ├── config (map of keys) + │ │ ├── references (map of keys) (TF 0.12 and later) + │ │ └── provisioners + │ │ └── NUMBER + │ │ ├── config (map of keys) + │ │ ├── references (map of keys) (TF 0.12 and later) + │ │ └── type (string) + │ └── variables + │ └── NAME + │ ├── default (value) + │ └── description (string) + ├── module_paths ([][]string) + │ + ├── data (root module alias) + ├── modules (root module alias) + ├── outputs (root module alias) + ├── providers (root module alias) + ├── resources (root module alias) + └── variables (root module alias) + +### `references` with Terraform 0.12 + +**With Terraform 0.11 or earlier**, if a configuration value is defined as an +expression (and not a static value), the value will be accessible in its raw, +non-interpolated string (just as with a constant value). + +As an example, consider the following resource block: + +```hcl +resource "local_file" "accounts" { + content = "some text" + filename = "${var.subdomain}.${var.domain}/accounts.txt" +} +``` + +In this example, one might want to ensure `domain` and `subdomain` input +variables are used within `filename` in this configuration. With Terraform 0.11 or +earlier, the following policy would evaluate to `true`: + +```python +import "tfconfig" + +# filename_value is the raw, non-interpolated string +filename_value = tfconfig.resources.local_file.accounts.config.filename + +main = rule { + filename_value contains "${var.domain}" and + filename_value contains "${var.subdomain}" +} +``` + +**With Terraform 0.12 or later**, any non-static +values (such as interpolated strings) are not present within the +configuration value and `references` should be used instead: + +```python +import "tfconfig" + +# filename_references is a list of string values containing the references used in the expression +filename_references = tfconfig.resources.local_file.accounts.references.filename + +main = rule { + filename_references contains "var.domain" and + filename_references contains "var.subdomain" +} +``` + +The `references` value is present in any namespace where non-constant +configuration values can be expressed. This is essentially every namespace +which has a `config` value as well as the `outputs` namespace. + +-> **Note:** Remember, this import enforces policy around the literal Terraform +configuration and not the final values as a result of invoking Terraform. If +you want to write policy around the _result_ of expressions used within +configuration blocks (for example, if you wanted to ensure the final value of +`filename` above includes `accounts.txt`), you likely want to use the +[`tfplan`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) import. + +## Namespace: Root + +The root-level namespace consists of the values and functions documented below. + +In addition to this, the root-level `data`, `modules`, `providers`, `resources`, +and `variables` keys all alias to their corresponding namespaces within the +[module namespace](#namespace-module). + +<a id="root-function-module" /> + +### Function: `module()` + + module = func(ADDR) + +- **Return Type:** A [module namespace](#namespace-module). + +The `module()` function in the [root namespace](#namespace-root) returns the +[module namespace](#namespace-module) for a particular module address. + +The address must be a list and is the module address, split on the period (`.`), +excluding the root module. + +Hence, a module with an address of simply `foo` (or `root.foo`) would be +`["foo"]`, and a module within that (so address `foo.bar`) would be read as +`["foo", "bar"]`. + +[`null`][ref-null] is returned if a module address is invalid, or if the module +is not present in the configuration. + +[ref-null]: /sentinel/docs/language/spec#null + +As an example, given the following module block: + +```hcl +module "foo" { + # ... +} +``` + +If the module contained the following content: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { subject.module(["foo"]).resources.null_resource.foo.config.triggers[0].foo is "bar" } +``` + +<a id="root-value-module_paths" /> + +### Value: `module_paths` + +- **Value Type:** List of a list of strings. + +The `module_paths` value within the [root namespace](#namespace-root) is a list +of all of the modules within the Terraform configuration. + +Modules not present in the configuration will not be present here, even if they +are present in the diff or state. + +This data is represented as a list of a list of strings, with the inner list +being the module address, split on the period (`.`). + +The root module is included in this list, represented as an empty inner list. + +As an example, if the following module block was present within a Terraform +configuration: + +```hcl +module "foo" { + # ... +} +``` + +The value of `module_paths` would be: + + [ + [], + ["foo"], + ] + +And the following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.module_paths contains ["foo"] } +``` + +#### Iterating Through Modules + +Iterating through all modules to find particular resources can be useful. This +[example][iterate-over-modules] shows how to use `module_paths` with the +[`module()` function](#function-module-) to find all resources of a +particular type from all modules using the `tfplan` import. By changing `tfplan` +in this function to `tfconfig`, you could make a similar function find all +resources of a specific type in the Terraform configuration. + +[iterate-over-modules]: /terraform/enterprise/policy-enforcement/sentinel#sentinel-imports + +## Namespace: Module + +The **module namespace** can be loaded by calling [`module()`](#root-function-module) +for a particular module. + +It can be used to load the following child namespaces: + +- `data` - Loads the [resource namespace](#namespace-resources-data-sources), + filtered against data sources. +- `modules` - Loads the [module configuration + namespace](#namespace-module-configuration). +- `outputs` - Loads the [output namespace](#namespace-outputs). +- `providers` - Loads the [provider namespace](#namespace-providers). +- `resources` - Loads the [resource + namespace](#namespace-resources-data-sources), filtered against resources. +- `variables` - Loads the [variable namespace](#namespace-variables). + +### Root Namespace Aliases + +The root-level `data`, `modules`, `providers`, `resources`, and `variables` keys +all alias to their corresponding namespaces within the module namespace, loaded +for the root module. They are the equivalent of running `module([]).KEY`. + +<a id="namespace-resources"></a> + +## Namespace: Resources/Data Sources + +The **resource namespace** is a namespace _type_ that applies to both resources +(accessed by using the `resources` namespace key) and data sources (accessed +using the `data` namespace key). + +Accessing an individual resource or data source within each respective namespace +can be accomplished by specifying the type and name, in the syntax +`[resources|data].TYPE.NAME`. + +In addition, each of these namespace levels is a map, allowing you to filter +based on type and name. Some examples of multi-level access are below: + +- To fetch all `aws_instance` resources within the root module, you can specify + `tfconfig.resources.aws_instance`. This would give you a map of resource + namespaces indexed from the names of each resource (`foo`, `bar`, and so + on). +- To fetch all resources within the root module, irrespective of type, use + `tfconfig.resources`. This is indexed by type, as shown above with + `tfconfig.resources.aws_instance`, with names being the next level down. + +As an example, perhaps you wish to deny use of the `local_file` resource +in your configuration. Consider the following resource block: + +```hcl +resource "local_file" "foo" { + content = "foo!" + filename = "${path.module}/foo.bar" +} +``` + +The following policy would fail: + +```python +import "tfconfig" + +main = rule { tfconfig.resources not contains "local_file" } +``` + +Further explanation of the namespace will be in the context of resources. As +mentioned, when operating on data sources, use the same syntax, except with +`data` in place of `resources`. + +<a id="resources-value-config" /> + +### Value: `config` + +- **Value Type:** A string-keyed map of values. + +The `config` value within the [resource +namespace](#namespace-resources-data-sources) is a map of key-value pairs that +directly map to Terraform config keys and values. + +-> **With Terraform 0.11 or earlier**, if the config value is defined as an +expression (and not a static value), the value will be in its raw, +non-interpolated string. **With Terraform 0.12 or later**, any non-static +values (such as interpolated strings) are not present and +[`references`](#resources-value-references) should be used instead. + +As an example, consider the following resource block: + +```hcl +resource "local_file" "accounts" { + content = "some text" + filename = "accounts.txt" +} +``` + +In this example, one might want to access `filename` to validate that the correct +file name is used. Given the above example, the following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { + tfconfig.resources.local_file.accounts.config.filename is "accounts.txt" +} +``` + +<a id="resources-value-references" /> + +### Value: `references` + +- **Value Type:** A string-keyed map of list values containing strings. + +-> **Note:** This value is only present when using Terraform 0.12 or later. + +The `references` value within the [resource namespace](#namespace-resources-data-sources) +contains the identifiers within non-constant expressions found in [`config`](#resources-value-config). +See the [documentation on `references`](#references-with-terraform-0-12) for more information. + +<a id="resources-value-provisioners" /> + +### Value: `provisioners` + +- **Value Type:** List of [provisioner namespaces](#namespace-provisioners). + +The `provisioners` value within the [resource namespace](#namespace-resources) +represents the [provisioners][ref-tf-provisioners] within a specific resource. + +Provisioners are listed in the order they were provided in the configuration +file. + +While the `provisioners` value will be present within data sources, it will +always be an empty map (in Terraform 0.11) or `null` (in Terraform 0.12) since +data sources cannot actually have provisioners. + +The data within a provisioner can be inspected via the returned [provisioner +namespace](#namespace-provisioners). + +[ref-tf-provisioners]: /terraform/language/resources/provisioners/syntax + +## Namespace: Provisioners + +The **provisioner namespace** represents the configuration for a particular +[provisioner][ref-tf-provisioners] within a specific resource. + +<a id="provisioners-value-config" /> + +### Value: `config` + +- **Value Type:** A string-keyed map of values. + +The `config` value within the [provisioner namespace](#namespace-provisioners) +represents the values of the keys within the provisioner. + +-> **With Terraform 0.11 or earlier**, if the config value is defined as an +expression (and not a static value), the value will be in its raw, +non-interpolated string. **With Terraform 0.12 or later**, any non-static +values (such as interpolated strings) are not present and +[`references`](#provisioners-value-references) should be used instead. + +As an example, given the following resource block: + +```hcl +resource "null_resource" "foo" { + # ... + + provisioner "local-exec" { + command = "echo ${self.private_ip} > file.txt" + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { + tfconfig.resources.null_resource.foo.provisioners[0].config.command is "echo ${self.private_ip} > file.txt" +} +``` + +<a id="provisioners-value-references" /> + +### Value: `references` + +- **Value Type:** A string-keyed map of list values containing strings. + +-> **Note:** This value is only present when using Terraform 0.12 or later. + +The `references` value within the [provisioner namespace](#namespace-provisioners) +contains the identifiers within non-constant expressions found in [`config`](#provisioners-value-config). +See the [documentation on `references`](#references-with-terraform-0-12) for more information. + +<a id="provisioners-value-type" /> + +### Value: `type` + +- **Value Type:** String. + +The `type` value within the [provisioner namespace](#namespace-provisioners) +represents the type of the specific provisioner. + +As an example, in the following resource block: + +```hcl +resource "null_resource" "foo" { + # ... + + provisioner "local-exec" { + command = "echo ${self.private_ip} > file.txt" + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.resources.null_resource.foo.provisioners[0].type is "local-exec" } +``` + +## Namespace: Module Configuration + +The **module configuration** namespace displays data on _module configuration_ +as it is given within a `module` block. This means that the namespace concerns +itself with the contents of the declaration block (example: the `source` +parameter and variable assignment keys), not the data within the module +(example: any contained resources or data sources). For the latter, the module +instance would need to be looked up with the [`module()` +function](#root-function-module). + +<a id="modules-value-source" /> + +### Value: `source` + +- **Value Type:** String. + +The `source` value within the [module configuration +namespace](#namespace-module-configuration) represents the module source path as +supplied to the module configuration. + +As an example, given the module declaration block: + +```hcl +module "foo" { + source = "./foo" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.modules.foo.source is "./foo" } +``` + +<a id="modules-value-version" /> + +### Value: `version` + +- **Value Type:** String. + +The `version` value within the [module configuration +namespace](#namespace-module-configuration) represents the [version +constraint][module-version-constraint] for modules that support it, such as +modules within the [Terraform Module Registry][terraform-module-registry] or the +[HCP Terraform private module registry][tfe-private-registry]. + +[module-version-constraint]: /terraform/language/modules#module-versions + +[terraform-module-registry]: https://registry.terraform.io/ + +[tfe-private-registry]: /terraform/enterprise/registry + +As an example, given the module declaration block: + +```hcl +module "foo" { + source = "foo/bar" + version = "~> 1.2" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.modules.foo.version is "~> 1.2" } +``` + +<a id="modules-value-config" /> + +### Value: `config` + +- **Value Type:** A string-keyed map of values. + +-> **With Terraform 0.11 or earlier**, if the config value is defined as an +expression (and not a static value), the value will be in its raw, +non-interpolated string. **With Terraform 0.12 or later**, any non-static +values (such as interpolated strings) are not present and +[`references`](#modules-value-references) should be used instead. + +The `config` value within the [module configuration +namespace](#namespace-module-configuration) represents the values of the keys +within the module configuration. This is every key within a module declaration +block except [`source`](#modules-value-source) and [`version`](#modules-value-version), which +have their own values. + +As an example, given the module declaration block: + +```hcl +module "foo" { + source = "./foo" + + bar = "baz" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.modules.foo.config.bar is "baz" } +``` + +<a id="modules-value-references" /> + +### Value: `references` + +- **Value Type:** A string-keyed map of list values containing strings. + +-> **Note:** This value is only present when using Terraform 0.12 or later. + +The `references` value within the [module configuration namespace](#namespace-module-configuration) +contains the identifiers within non-constant expressions found in [`config`](#modules-value-config). +See the [documentation on `references`](#references-with-terraform-0-12) for more information. + +## Namespace: Outputs + +The **output namespace** represents _declared_ output data within a +configuration. As such, configuration for the [`value`](#outputs-value-value) attribute +will be in its raw form, and not yet interpolated. For fully interpolated output +values, see the [`tfstate` import][ref-tfe-sentinel-tfstate]. + +[ref-tfe-sentinel-tfstate]: /terraform/enterprise/policy-enforcement/import-reference/tfstate-v2 + +This namespace is indexed by output name. + +<a id="outputs-value-depends_on" /> + +### Value: `depends_on` + +- **Value Type:** A list of strings. + +The `depends_on` value within the [output namespace](#namespace-outputs) +represents any _explicit_ dependencies for this output. For more information, +see the [depends_on output setting][ref-depends_on] within the general Terraform +documentation. + +[ref-depends_on]: /terraform/language/values/outputs#depends_on + +As an example, given the following output declaration block: + +```hcl +output "id" { + depends_on = ["null_resource.bar"] + value = "${null_resource.foo.id}" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.outputs.id.depends_on[0] is "null_resource.bar" } +``` + +<a id="outputs-value-description" /> + +### Value: `description` + +- **Value Type:** String. + +The `description` value within the [output namespace](#namespace-outputs) +represents the defined description for this output. + +As an example, given the following output declaration block: + +```hcl +output "id" { + description = "foobar" + value = "${null_resource.foo.id}" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.outputs.id.description is "foobar" } +``` + +<a id="outputs-value-sensitive" /> + +### Value: `sensitive` + +- **Value Type:** Boolean. + +The `sensitive` value within the [output namespace](#namespace-outputs) +represents if this value has been marked as sensitive or not. + +As an example, given the following output declaration block: + +```hcl +output "id" { + sensitive = true + value = "${null_resource.foo.id}" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { subject.outputs.id.sensitive } +``` + +<a id="outputs-value-value" /> + +### Value: `value` + +- **Value Type:** Any primitive type, list or map. + +The `value` value within the [output namespace](#namespace-outputs) represents +the defined value for the output as declared in the configuration. Primitives +will bear the implicit type of their declaration (string, int, float, or bool), +and maps and lists will be represented as such. + +-> **With Terraform 0.11 or earlier**, if the config value is defined as an +expression (and not a static value), the value will be in its raw, +non-interpolated string. **With Terraform 0.12 or later**, any non-static +values (such as interpolated strings) are not present and +[`references`](#outputs-value-references) should be used instead. + +As an example, given the following output declaration block: + +```hcl +output "id" { + value = "${null_resource.foo.id}" +} +``` + +With Terraform 0.11 or earlier the following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.outputs.id.value is "${null_resource.foo.id}" } +``` + +<a id="outputs-value-references" /> + +### Value: `references` + +- **Value Type:**. List of strings. + +-> **Note:** This value is only present when using Terraform 0.12 or later. + +The `references` value within the [output namespace](#namespace-outputs) +contains the names of any referenced identifiers when [`value`](#outputs-value-value) +is a non-constant expression. + +As an example, given the following output declaration block: + +```hcl +output "id" { + value = "${null_resource.foo.id}" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.outputs.id.references contains "null_resource.foo.id" } +``` + +## Namespace: Providers + +The **provider namespace** represents data on the declared providers within a +namespace. + +This namespace is indexed by provider type and _only_ contains data about +providers when actually declared. If you are using a completely implicit +provider configuration, this namespace will be empty. + +This namespace is populated based on the following criteria: + +- The top-level namespace [`config`](#providers-value-config) and + [`version`](#providers-value-version) values are populated with the configuration and + version information from the default provider (the provider declaration that + lacks an alias). +- Any aliased providers are added as namespaces within the + [`alias`](#providers-value-alias) value. +- If a module lacks a default provider configuration, the top-level `config` and + `version` values will be empty. + +<a id="providers-value-alias" /> + +### Value: `alias` + +- **Value Type:** A map of [provider namespaces](#namespace-providers), indexed + by alias. + +The `alias` value within the [provider namespace](#namespace-providers) +represents all declared [non-default provider +instances][ref-tf-provider-instances] for a specific provider type, indexed by +their specific alias. + +[ref-tf-provider-instances]: /terraform/language/providers/configuration#alias-multiple-provider-configurations + +The return type is a provider namespace with the data for the instance in +question loaded. The `alias` key will not be available within this namespace. + +As an example, given the following provider declaration block: + +```hcl +provider "aws" { + alias = "east" + region = "us-east-1" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.providers.aws.alias.east.config.region is "us-east-1" } +``` + +<a id="providers-value-config" /> + +### Value: `config` + +- **Value Type:** A string-keyed map of values. + +-> **With Terraform 0.11 or earlier**, if the config value is defined as an +expression (and not a static value), the value will be in its raw, +non-interpolated string. **With Terraform 0.12 or later**, any non-static +values (such as interpolated strings) are not present and +[`references`](#providers-value-references) should be used instead. + +The `config` value within the [provider namespace](#namespace-providers) +represents the values of the keys within the provider's configuration, with the +exception of the provider version, which is represented by the +[`version`](#providers-value-version) value. [`alias`](#providers-value-alias) is also not included +when the provider is aliased. + +As an example, given the following provider declaration block: + +```hcl +provider "aws" { + region = "us-east-1" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.providers.aws.config.region is "us-east-1" } +``` + +<a id="providers-value-references" /> + +### Value: `references` + +- **Value Type:** A string-keyed map of list values containing strings. + +-> **Note:** This value is only present when using Terraform 0.12 or later. + +The `references` value within the [provider namespace](#namespace-providers) +contains the identifiers within non-constant expressions found in [`config`](#providers-value-config). +See the [documentation on `references`](#references-with-terraform-0-12) for more information. + +<a id="providers-value-version" /> + +### Value: `version` + +- **Value Type:** String. + +The `version` value within the [provider namespace](#namespace-providers) +represents the explicit expected version of the supplied provider. This includes +the pessimistic operator. + +As an example, given the following provider declaration block: + +```hcl +provider "aws" { + version = "~> 1.34" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.providers.aws.version is "~> 1.34" } +``` + +## Namespace: Variables + +The **variable namespace** represents _declared_ variable data within a +configuration. As such, static data can be extracted, such as defaults, but not +dynamic data, such as the current value of a variable within a plan (although +this can be extracted within the [`tfplan` import][ref-tfe-sentinel-tfplan]). + +[ref-tfe-sentinel-tfplan]: /terraform/enterprise/policy-enforcement/import-reference/tfplan-v2 + +This namespace is indexed by variable name. + +<a id="variables-value-default" /> + +### Value: `default` + +- **Value Type:** Any primitive type, list, map, or `null`. + +The `default` value within the [variable namespace](#namespace-variables) +represents the default for the variable as declared in the configuration. + +The actual value will be as configured. Primitives will bear the implicit type +of their declaration (string, int, float, or bool), and maps and lists will be +represented as such. + +If no default is present, the value will be [`null`][ref-sentinel-null] (not to +be confused with [`undefined`][ref-sentinel-undefined]). + +[ref-sentinel-null]: /sentinel/docs/language/spec#null + +[ref-sentinel-undefined]: /sentinel/docs/language/undefined + +As an example, given the following variable blocks: + +```hcl +variable "foo" { + default = "bar" +} + +variable "number" { + default = 42 +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +default_foo = rule { tfconfig.variables.foo.default is "bar" } +default_number = rule { tfconfig.variables.number.default is 42 } + +main = rule { default_foo and default_number } +``` + +<a id="variables-value-description" /> + +### Value: `description` + +- **Value Type:** String. + +The `description` value within the [variable namespace](#namespace-variables) +represents the description of the variable, as provided in configuration. + +As an example, given the following variable block: + +```hcl +variable "foo" { + description = "foobar" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfconfig" + +main = rule { tfconfig.variables.foo.description is "foobar" } +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan-v2.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan-v2.mdx new file mode 100644 index 0000000000..68d18aa3dd --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan-v2.mdx @@ -0,0 +1,388 @@ +--- +page_title: tfplan/v2 Sentinel import +description: Use tfplan/v2 import to give Sentinel access to a Terraform plan. +source: terraform-docs-common +--- + +-> **Note:** This is documentation for the next version of the `tfplan` Sentinel +import, designed specifically for Terraform 0.12. This import requires +Terraform 0.12 or higher, and must currently be loaded by path, using an alias, +example: `import "tfplan/v2" as tfplan`. + +# tfplan/v2 Sentinel import + +The `tfplan/v2` import provides access to a Terraform plan. + +A Terraform plan is the file created as a result of `terraform plan` and is the +input to `terraform apply`. The plan represents the changes that Terraform needs +to make to infrastructure to reach the desired state represented by the +configuration. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +In addition to the diff data available in the plan, there is a "planned state" +that is available through this import, via the +[`planned_values`](#the-planned_values-collection) collection. This collection +presents the Terraform state as how it might look after the plan data is +applied, but is not guaranteed to be the final state. + +The data in the `tfplan/v2` import is sourced from the JSON configuration file +that is generated by the [`terraform show -json`](/terraform/cli/commands/show#json-output) command. For more information on +the file format, see the [JSON Output Format](/terraform/internals/json-format) +page. + +The entirety of the JSON output file is exposed as a Sentinel map via the +[`raw`](#the-raw-collection) collection. This allows direct, low-level access to +the JSON data, but should only be used in complex situations where the +higher-level collections do not serve the purpose. + +## Import Overview + +The `tfplan/v2` import is structured as a series of _collections_, keyed as a +specific format depending on the collection. + + tfplan/v2 + ├── terraform_version (string) + ├── variables + │ └── (indexed by name) + │ ├── name (string) + │ └── value (value) + ├── planned_values + │ ├── outputs (tfstate/v2 outputs representation) + │ └── resources (tfstate/v2 resources representation) + ├── resource_changes + │ └── (indexed by address[:deposed]) + │ ├── address (string) + │ ├── module_address (string) + │ ├── mode (string) + │ ├── type (string) + │ ├── name (string) + │ ├── index (float (number) or string) + │ ├── provider_name (string) + │ ├── deposed (string) + │ └── change (change representation) + ├── resource_drift + │ └── (indexed by address[:deposed]) + │ ├── address (string) + │ ├── module_address (string) + │ ├── mode (string) + │ ├── type (string) + │ ├── name (string) + │ ├── index (float (number) or string) + │ ├── provider_name (string) + │ ├── deposed (string) + │ └── change (change representation) + ├── output_changes + │ └── (indexed by name) + │ ├── name (string) + │ └── change (change representation) + └── raw (map) + +The collections are: + +- [`variables`](#the-variables-collection) - The values of variables that have + been set in the plan itself. This collection only contains variables set in + the root module. +- [`planned_values`](#the-planned_values-collection) - The state representation + of _planned values_, or an estimation of what the state will look like after + the plan is applied. +- [`resource_changes`](#the-resource_changes-and-resource_drift-collections) - The set of change + operations for resources and data sources within this plan. +- [`resource_drift`](#the-resource_changes-and-resource_drift-collections) - A description of the + changes Terraform detected when it compared the most recent state to the prior saved state. +- [`output_changes`](#the-output_changes-collection) - The changes to outputs + within this plan. This collection only contains outputs set in the root + module. +- [`raw`](#the-raw-collection) - Access to the raw plan data as stored by + HCP Terraform. + +These collections are specifically designed to be used with the +[`filter`](/sentinel/docs/language/collection-operations#filter-expression) +quantifier expression in Sentinel, so that one can collect a list of resources +to perform policy checks on without having to write complex discovery code. As +an example, the following code will return all `aws_instance` resource changes, +across all modules in the plan: + + all_aws_instances = filter tfplan.resource_changes as _, rc { + rc.mode is "managed" and + rc.type is "aws_instance" + } + +You can add specific attributes to the filter to narrow the search, such as the +module address, or the operation being performed. The following code would +return resources in a module named `foo` only, and further narrow the search +down to only resources that were being created: + + all_aws_instances = filter tfplan.resource_changes as _, rc { + rc.module_address is "module.foo" and + rc.mode is "managed" and + rc.type is "aws_instance" and + rc.change.actions is ["create"] + } + +### Change Representation + +Certain collections in this import contain a _change representation_, an object +with details about changes to a particular entity, such as a resource (within +the [`resource_changes`](#the-resource_changes-collection) collection), or +output (within the [`output_changes`](#the-output_changes-collection) +collection). + + (change representation) + ├── actions (list) + ├── before (value, or map) + ├── after (value, or map) + └── after_unknown (boolean, or map of booleans) + +This change representation contains the following fields: + +- `actions` - A list of actions being carried out for this change. The order is + important, for example a regular replace operation is denoted by `["delete", + "create"]`, but a + [`create_before_destroy`](/terraform/language/meta-arguments/lifecycle#create_before_destroy) + resource will have an operation order of `["create", "delete"]`. +- `before` - The representation of the resource data object value before the + action. For create-only actions, this is unset. For no-op actions, this value + will be identical with `after`. +- `after` - The representation of the resource data object value after the + action. For delete-only actions, this is unset. For no-op actions, this value + will be identical with `before`. Note that unknown values will not show up in + this field. +- `after_unknown` - A deep object of booleans that denotes any values that are + unknown in a resource. These values were previously referred to as "computed" + values. If the value cannot be found in this map, then its value should be + available within `after`, so long as the operation supports it. + +#### Actions + +As mentioned above, actions show up within the `actions` field of a change +representation and indicate the type of actions being performed as part of the +change, and the order that they are being performed in. + +The current list of actions are as follows: + +- `create` - The action will create the associated entity. Depending on the + order this appears in, the entity may be created alongside a copy of the + entity before replacing it. +- `read` - The action will read the associated entity. In practice, seeing this + change type should be rare, as reads generally happen before a plan is + executed (usually during a refresh). +- `update` - The action will update the associated entity in a way that alters its state + in some way. +- `delete` - The action will remove the associated entity, deleting any + applicable state and associated real resources or infrastructure. +- `no-op` - No action will be performed on the associated entity. + +The `actions` field is a list, as some real-world actions are actually a +composite of more than one primitive action. At this point in time, this +is generally only applicable to resource replacement, in which the following +action orders apply: + +- **Normal replacement:** `["delete", "create"]` - Applies to default lifecycle + configurations. +- **Create-before-destroy:** `["create", "delete"]` - Applies when + [`create_before_destroy`](/terraform/language/meta-arguments/lifecycle#create_before_destroy) + is used in a lifecycle configuration. + +Note that, in most situations, the plan will list all "changes", including no-op +changes. This makes filtering on change type crucial to the accurate selection +of data if you are concerned with the state change of a particular resource. + +To filter on a change type, use exact list comparison. For example, the +following example from the [Import Overview](#import-overview) filters on +exactly the resources being created _only_: + + all_aws_instances = filter tfplan.resource_changes as _, rc { + rc.module_address is "module.foo" and + rc.mode is "managed" and + rc.type is "aws_instance" and + rc.change.actions is ["create"] + } + +#### `before`, `after`, and `after_unknown` + +The exact attribute changes for a particular operation are outlined in the +`before` and `after` attributes. Depending on the entity being operated on, this +will either be a map (as with +[`resource_changes`](#the-resource_changes-collection)) or a singular value (as +with [`output_changes`](#the-output_changes-collection)). + +What you can expect in these fields varies depending on the operation: + +- For fresh create operations, `before` will generally be `null`, and `after` + will contain the data you can expect to see after the change. +- For full delete operations, this will be reversed - `before` will contain + data, and `after` will be `null`. +- Update or replace operations will have data in both fields relevant to their + states before and after the operation. +- No-op operations should have identical data in `before` and `after`. + +For resources, if a field cannot be found in `after`, it generally means one of +two things: + +- The attribute does not exist in the resource schema. Generally, known + attributes that do not have a value will show up as `null` or otherwise empty + in `after`. +- The attribute is _unknown_, that is, it was unable to be determined at plan + time and will only be available after apply-time values have been able to be + calculated. + +In the latter case, there should be a value for the particular attribute in +`after_unknown`, which can be checked to assert that the value is indeed +unknown, versus invalid: + + import "tfplan/v2" as tfplan + + no_unknown_amis = rule { + all filter tfplan.resource_changes as _, rc { + rc.module_address is "module.foo" and + rc.mode is "managed" and + rc.type is "aws_instance" and + rc.change.actions is ["create"] + } as _, rc { + rc.change.after_unknown.ami else false is false + } + } + +For output changes, `after_unknown` will simply be `true` if the value won't be +known until the plan is applied. + +## The `terraform_version` Value + +The top-level `terraform_version` value in this import gives the Terraform +version that made the plan. This can be used to do version validation. + + import "tfplan/v2" as tfplan + import "strings" + + v = strings.split(tfplan.terraform_version, ".") + version_major = int(v[1]) + version_minor = int(v[2]) + + main = rule { + version_major is 12 and version_minor >= 19 + } + +-> **NOTE:** The above example will give errors when working with pre-release +versions (example: `0.12.0beta1`). Future versions of this import will include +helpers to assist with processing versions that will account for these kinds of +exceptions. + +## The `variables` Collection + +The `variables` collection is a collection of the variables set in the root +module when creating the plan. + +This collection is indexed on the name of the variable. + +The valid values are: + +- `name` - The name of the variable, also used as the collection key. +- `value` - The value of the variable assigned during the plan. + +## The `planned_values` Collection + +The `planned_values` collection is a special collection in that it contains two +fields that alias to state collections with the _planned_ state set. This is the +best prediction of what the state will look like after the plan is executed. + +The two fields are: + +- `outputs` - The prediction of what output values will look like after the + state is applied. For more details on the structure of this collection, see + the [`outputs`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2#the-outputs-collection) collection in the + [`tfstate/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2) documentation. +- `resources` - The prediction of what resource values will look like after the + state is applied. For more details on the structure of this collection, see + the [`resources`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2#the-resources-collection) collection in the + [`tfstate/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2) documentation. + +-> **NOTE:** Unknown values are omitted from the `planned_values` state +representations, regardless of whether or not they existed before. Use +[`resource_changes`](#the-resource_changes-collection) if awareness of unknown +data is important. + +## The `resource_changes` and `resource_drift` Collections + +The `resource_changes` and `resource_drift` collections are a set of change operations for resources +and data sources within this plan. + +The `resource_drift` collection provides a description of the changes Terraform detected +when it compared the most recent state to the prior saved state. + +The `resource_changes` collection includes all resources that have been found in the configuration and state, +regardless of whether or not they are changing. + +~> When [resource targeting](/terraform/cli/commands/plan#resource-targeting) is in effect, the `resource_changes` collection will only include the resources specified as targets for the run. This may lead to unexpected outcomes if a policy expects a resource to be present in the plan. To prohibit targeted runs altogether, ensure [`tfrun.target_addrs`](/terraform/enterprise/policy-enforcement/import-reference/tfrun#value-target_addrs) is undefined or empty. + +This collection is indexed on the complete resource address as the key. If +`deposed` is non-empty, it is appended to the end, and may look something like +`aws_instance.foo:deposed-abc123`. + +An element contains the following fields: + +- `address` - The absolute resource address - also the key for the collection's + index, if `deposed` is empty. + +- `module_address` - The module portion of the absolute resource address. + +- `mode` - The resource mode, either `managed` (resources) or `data` (data + sources). + +- `type` - The resource type, example: `aws_instance` for `aws_instance.foo`. + +- `name` - The resource name, example: `foo` for `aws_instance.foo`. + +- `index` - The resource index. Can be either a number or a string. + +- `provider_name` - The name of the provider this resource belongs to. This + allows the provider to be interpreted unambiguously in the unusual situation + where a provider offers a resource type whose name does not start with its own + name, such as the `googlebeta` provider offering `google_compute_instance`. + + -> **Note:** Starting with Terraform 0.13, the `provider_name` field contains the + _full_ source address to the provider in the Terraform Registry. Example: + `registry.terraform.io/hashicorp/null` for the null provider. + +- `deposed` - An identifier used during replacement operations, and can be used + to identify the exact resource being replaced in state. + +- `change` - The data describing the change that will be made to this resource. + For more details, see [Change Representation](#change-representation). + +## The `output_changes` Collection + +The `output_changes` collection is a collection of the change operations for +outputs within this plan. + +Only outputs for the root module are included. + +This collection is indexed by the name of the output. The fields in a collection +value are below: + +- `name` - The name of the output, also the index key. +- `change` - The data describing the change that will be made to this output. + For more details, see [Change Representation](#change-representation). + +## The `raw` Collection + +The `raw` collection exposes the raw, unprocessed plan data, direct from the +data stored by HCP Terraform. + +This is the same data that is produced by [`terraform show -json`](/terraform/cli/commands/show#json-output) on the plan file for the run this +policy check is attached to. + +Use of this data is only recommended in expert situations where the data the +collections present may not exactly serve the needs of the policy. For more +information on the file format, see the [JSON Output +Format](/terraform/internals/json-format) page. + +-> **NOTE:** Although designed to be relatively stable, the actual makeup for +the JSON output format is a Terraform CLI concern and as such not managed by +HCP Terraform. Use at your own risk, follow the [Terraform CLI +project](https://github.com/hashicorp/terraform), and watch the file format +documentation for any changes. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan.mdx new file mode 100644 index 0000000000..12832dd583 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfplan.mdx @@ -0,0 +1,604 @@ +--- +page_title: tfplan Sentinel import reference +description: Use the tfplan import to give Sentinel access to a Terraform plan. +source: terraform-docs-common +--- + +# tfplan Sentinel import reference + +~> **Warning:** The `tfplan` import is now deprecated and will be permanently removed in August 2025. We recommend that you start using the updated [tfplan/v2](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) import as soon as possible to avoid disruptions. The `tfplan/v2` import offers improved functionality and is designed to better support your policy enforcement needs. + +The `tfplan` import provides access to a Terraform plan. A Terraform plan is the +file created as a result of `terraform plan` and is the input to `terraform +apply`. The plan represents the changes that Terraform needs to make to +infrastructure to reach the desired state represented by the configuration. + +In addition to the diff data available in the plan, there is an +[`applied`](#value-applied) state available that merges the plan with the state +to create the planned state after apply. + +Finally, this import also allows you to access the configuration files and the +Terraform state at the time the plan was run. See the section on [accessing a +plan's state and configuration +data](#accessing-a-plan-39-s-state-and-configuration-data) for more information. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Namespace Overview + +The following is a tree view of the import namespace. For more detail on a +particular part of the namespace, see below. + +-> Note that the root-level alias keys shown here (`data`, `path`, and +`resources`) are shortcuts to a [module namespace](#namespace-module) scoped to +the root module. For more details, see the section on [root namespace +aliases](#root-namespace-aliases). + + tfplan + ├── module() (function) + │ └── (module namespace) + │ ├── path ([]string) + │ ├── data + │ │ └── TYPE.NAME[NUMBER] + │ │ ├── applied (map of keys) + │ │ └── diff + │ │ └── KEY + │ │ ├── computed (bool) + │ │ ├── new (string) + │ │ └── old (string) + │ └── resources + │ └── TYPE.NAME[NUMBER] + │ ├── applied (map of keys) + │ ├── destroy (bool) + │ ├── requires_new (bool) + │ └── diff + │ └── KEY + │ ├── computed (bool) + │ ├── new (string) + │ └── old (string) + ├── module_paths ([][]string) + ├── terraform_version (string) + ├── variables (map of keys) + │ + ├── data (root module alias) + ├── path (root module alias) + ├── resources (root module alias) + │ + ├── config (tfconfig namespace alias) + └── state (tfstate import alias) + +## Namespace: Root + +The root-level namespace consists of the values and functions documented below. + +In addition to this, the root-level `data`, `path`, and `resources` keys alias +to their corresponding namespaces or values within the [module +namespace](#namespace-module). + +### Accessing a Plan's State and Configuration Data + +The `config` and `state` keys alias to the [`tfconfig`][import-tfconfig] and +[`tfstate`][import-tfstate] namespaces, respectively, with the data sourced from +the Terraform _plan_ (as opposed to actual configuration and state). + +[import-tfconfig]: /terraform/enterprise/policy-enforcement/import-reference/tfconfig-v2 + +[import-tfstate]: /terraform/enterprise/policy-enforcement/import-reference/tfstate-v2 + +-> Note that these aliases are not represented as maps. While they will appear +empty when viewed as maps, the specific import namespace keys will still be +accessible. + +-> Note that while current versions of HCP Terraform source configuration and +state data from the plan for the Terraform run in question, future versions may +source data accessed through the `tfconfig` and `tfstate` imports (as opposed to +`tfplan.config` and `tfplan.state`) from actual config bundles, or state as +stored by HCP Terraform. When this happens, the distinction here will be useful - +the data in the aliased namespaces will be the config and state data as the +_plan_ sees it, versus the actual "physical" data. + +### Function: `module()` + + module = func(ADDR) + +- **Return Type:** A [module namespace](#namespace-module). + +The `module()` function in the [root namespace](#namespace-root) returns the +[module namespace](#namespace-module) for a particular module address. + +The address must be a list and is the module address, split on the period (`.`), +excluding the root module. + +Hence, a module with an address of simply `foo` (or `root.foo`) would be +`["foo"]`, and a module within that (so address `foo.bar`) would be read as +`["foo", "bar"]`. + +[`null`][ref-null] is returned if a module address is invalid, or if the module +is not present in the diff. + +[ref-null]: /sentinel/docs/language/spec#null + +As an example, given the following module block: + +```hcl +module "foo" { + # ... +} +``` + +If the module contained the following content: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfplan" + +main = rule { tfplan.module(["foo"]).resources.null_resource.foo[0].applied.triggers.foo is "bar" } +``` + +### Value: `module_paths` + +- **Value Type:** List of a list of strings. + +The `module_paths` value within the [root namespace](#namespace-root) is a list +of all of the modules within the Terraform diff for the current plan. + +Modules not present in the diff will not be present here, even if they are +present in the configuration or state. + +This data is represented as a list of a list of strings, with the inner list +being the module address, split on the period (`.`). + +The root module is included in this list, represented as an empty inner list, as +long as there are changes. + +As an example, if the following module block was present within a Terraform +configuration: + +```hcl +module "foo" { + # ... +} +``` + +The value of `module_paths` would be: + + [ + [], + ["foo"], + ] + +And the following policy would evaluate to `true`: + +```python +import "tfplan" + +main = rule { tfplan.module_paths contains ["foo"] } +``` + +-> Note the above example only applies if the module is present in the diff. + +#### Iterating Through Modules + +Iterating through all modules to find particular resources can be useful. This +[example][iterate-over-modules] shows how to use `module_paths` with the +[`module()` function](#function-module-) to find all resources of a +particular type from all modules that have pending changes using the `tfplan` +import. + +[iterate-over-modules]: /terraform/enterprise/policy-enforcement/sentinel#sentinel-imports + +### Value: `terraform_version` + +- **Value Type:** String. + +The `terraform_version` value within the [root namespace](#namespace-root) +represents the version of Terraform used to create the plan. This can be used to +enforce a specific version of Terraform in a policy check. + +As an example, the following policy would evaluate to `true`, as long as the +plan was made with a version of Terraform in the 0.11.x series, excluding any +pre-release versions (example: `-beta1` or `-rc1`): + +```python +import "tfplan" + +main = rule { tfplan.terraform_version matches "^0\\.11\\.\\d+$" } +``` + +### Value: `variables` + +- **Value Type:** A string-keyed map of values. + +The `variables` value within the [root namespace](#namespace-root) represents +all of the variables that were set when creating the plan. This will only +contain variables set for the root module. + +Note that unlike the [`default`][import-tfconfig-variables-default] value in the +[`tfconfig` variables namespace][import-tfconfig-variables], primitive values +here are stringified, and type conversion will need to be performed to perform +comparison for int, float, or boolean values. This only applies to variables +that are primitives themselves and not primitives within maps and lists, which +will be their original types. + +[import-tfconfig-variables-default]: /terraform/enterprise/policy-enforcement/import-reference/tfconfig-v2#value-default + +[import-tfconfig-variables]: /terraform/enterprise/policy-enforcement/import-reference/tfconfig-v2#namespace-variables + +If a default was accepted for the particular variable, the default value will be +populated here. + +As an example, given the following variable blocks: + +```hcl +variable "foo" { + default = "bar" +} + +variable "number" { + default = 42 +} + +variable "map" { + default = { + foo = "bar" + number = 42 + } +} +``` + +The following policy would evaluate to `true`, if no values were entered to +change these variables: + +```python +import "tfplan" + +default_foo = rule { tfplan.variables.foo is "bar" } +default_number = rule { tfplan.variables.number is "42" } +default_map_string = rule { tfplan.variables.map["foo"] is "bar" } +default_map_int = rule { tfplan.variables.map["number"] is 42 } + +main = rule { default_foo and default_number and default_map_string and default_map_int } +``` + +## Namespace: Module + +The **module namespace** can be loaded by calling +[`module()`](#function-module-) for a particular module. + +It can be used to load the following child namespaces, in addition to the values +documented below: + +- `data` - Loads the [resource namespace](#namespace-resources-data-sources), + filtered against data sources. +- `resources` - Loads the [resource + namespace](#namespace-resources-data-sources), filtered against resources. + +### Root Namespace Aliases + +The root-level `data` and `resources` keys both alias to their corresponding +namespaces within the module namespace, loaded for the root module. They are the +equivalent of running `module([]).KEY`. + +### Value: `path` + +- **Value Type:** List of strings. + +The `path` value within the [module namespace](#namespace-module) contains the +path of the module that the namespace represents. This is represented as a list +of strings. + +As an example, if the following module block was present within a Terraform +configuration: + +```hcl +module "foo" { + # ... +} +``` + +The following policy would evaluate to `true` _only_ if the diff had changes for +that module: + +```python +import "tfplan" + +main = rule { tfplan.module(["foo"]).path contains "foo" } +``` + +## Namespace: Resources/Data Sources + +The **resource namespace** is a namespace _type_ that applies to both resources +(accessed by using the `resources` namespace key) and data sources (accessed +using the `data` namespace key). + +Accessing an individual resource or data source within each respective namespace +can be accomplished by specifying the type, name, and resource number (as if the +resource or data source had a `count` value in it) in the syntax +`[resources|data].TYPE.NAME[NUMBER]`. Note that NUMBER is always needed, even if +you did not use `count` in the resource. + +In addition, each of these namespace levels is a map, allowing you to filter +based on type and name. + +-> The (somewhat strange) notation here of `TYPE.NAME[NUMBER]` may imply that +the inner resource index map is actually a list, but it's not - using the square +bracket notation over the dotted notation (`TYPE.NAME.NUMBER`) is required here +as an identifier cannot start with a number. + +Some examples of multi-level access are below: + +- To fetch all `aws_instance.foo` resource instances within the root module, you + can specify `tfplan.resources.aws_instance.foo`. This would then be indexed by + resource count index (`0`, `1`, `2`, and so on). Note that as mentioned above, + these elements must be accessed using square-bracket map notation (so `[0]`, + `[1]`, `[2]`, and so on) instead of dotted notation. +- To fetch all `aws_instance` resources within the root module, you can specify + `tfplan.resources.aws_instance`. This would be indexed from the names of + each resource (`foo`, `bar`, and so on), with each of those maps containing + instances indexed by resource count index as per above. +- To fetch all resources within the root module, irrespective of type, use + `tfplan.resources`. This is indexed by type, as shown above with + `tfplan.resources.aws_instance`, with names being the next level down, and so + on. + +~> When [resource targeting](/terraform/cli/commands/plan#resource-targeting) is in effect, `tfplan.resources` will only include the resources specified as targets for the run. This may lead to unexpected outcomes if a policy expects a resource to be present in the plan. To prohibit targeted runs altogether, ensure [`tfrun.target_addrs`](/terraform/enterprise/policy-enforcement/import-reference/tfrun#value-target_addrs) is undefined or empty. + +Further explanation of the namespace will be in the context of resources. As +mentioned, when operating on data sources, use the same syntax, except with +`data` in place of `resources`. + +### Value: `applied` + +- **Value Type:** A string-keyed map of values. + +The `applied` value within the [resource +namespace](#namespace-resources-data-sources) contains a "predicted" +representation of the resource's state post-apply. It's created by merging the +pending resource's diff on top of the existing data from the resource's state +(if any). The map is a complex representation of these values with data going +as far down as needed to represent any state values such as maps, lists, and +sets. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true` if the resource was in the diff: + +```python +import "tfplan" + +main = rule { tfplan.resources.null_resource.foo[0].applied.triggers.foo is "bar" } +``` + +-> Note that some values will not be available in the `applied` state because +they cannot be known until the plan is actually applied. In Terraform 0.11 or +earlier, these values are represented by a placeholder (the UUID value +`74D93920-ED26-11E3-AC10-0800200C9A66`) and in Terraform 0.12 or later they +are `undefined`. **In either case**, you should instead use the +[`computed`](#value-computed) key within the [diff +namespace](#namespace-resource-diff) to determine that a computed value will +exist. + +-> If a resource is being destroyed, its `applied` value is omitted from the +namespace and trying to fetch it will return undefined. + +### Value: `diff` + +- **Value Type:** A map of [diff namespaces](#namespace-resource-diff). + +The `diff` value within the [resource +namespace](#namespace-resources-data-sources) contains the diff for a particular +resource. Each key within the map links to a [diff +namespace](#namespace-resource-diff) for that particular key. + +Note that unlike the [`applied`](#value-applied) value, this map is not complex; +the map is only 1 level deep with each key possibly representing a diff for a +particular complex value within the resource. + +See the below section for more details on the diff namespace, in addition to +usage examples. + +### Value: `destroy` + +- **Value Type:** Boolean. + +The `destroy` value within the [resource +namespace](#namespace-resources-data-sources) is `true` if a resource is being +destroyed for _any_ reason, including cases where it's being deleted as part of +a resource re-creation, in which case [`requires_new`](#value-requires_new) will +also be set. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true` when `null_resource.foo` is being +destroyed: + +```python +import "tfplan" + +main = rule { tfplan.resources.null_resource.foo[0].destroy } +``` + +### Value: `requires_new` + +- **Value Type:** Boolean. + +The `requires_new` value within the [resource +namespace](#namespace-resources-data-sources) is `true` if the resource is still +present in the configuration, but must be replaced to satisfy its current diff. +Whenever `requires_new` is `true`, [`destroy`](#value-destroy) is also `true`. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true` if one of the `triggers` in +`null_resource.foo` was being changed: + +```python +import "tfplan" + +main = rule { tfplan.resources.null_resource.foo[0].requires_new } +``` + +## Namespace: Resource Diff + +The **diff namespace** is a namespace that represents the diff for a specific +attribute within a resource. For details on reading a particular attribute, +see the [`diff`](#value-diff) value in the [resource +namespace](#namespace-resources-data-sources). + +### Value: `computed` + +- **Value Type:** Boolean. + +The `computed` value within the [diff namespace](#namespace-resource-diff) is +`true` if the resource key in question depends on another value that isn't yet +known. Typically, that means the value it depends on belongs to a resource that +either doesn't exist yet, or is changing state in such a way as to affect the +dependent value so that it can't be known until the apply is complete. + +-> Keep in mind that when using `computed` with complex structures such as maps, +lists, and sets, it's sometimes necessary to test the count attribute for the +structure, versus a key within it, depending on whether or not the diff has +marked the whole structure as computed. This is demonstrated in the example +below. Count keys are `%` for maps, and `#` for lists and sets. If you are +having trouble determining the type of specific field within a resource, contact +the support team. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} + +resource "null_resource" "bar" { + triggers = { + foo_id = "${null_resource.foo.id}" + } +} +``` + +The following policy would evaluate to `true`, if the `id` of +`null_resource.foo` was currently not known, such as when the resource is +pending creation, or is being deleted and re-created: + +```python +import "tfplan" + +main = rule { tfplan.resources.null_resource.bar[0].diff["triggers.%"].computed } +``` + +### Value: `new` + +- **Value Type:** String. + +The `new` value within the [diff namespace](#namespace-resource-diff) contains +the new value of a changing attribute, _if_ the value is known at plan time. + +-> `new` will be an empty string if the attribute's value is currently unknown. +For more details on detecting unknown values, see [`computed`](#value-computed). + +Note that this value is _always_ a string, regardless of the actual type of the +value changing. [Type conversion][ref-sentinel-type-conversion] within policy +may be necessary to achieve the comparison needed. + +[ref-sentinel-type-conversion]: /sentinel/docs/language/values#type-conversion + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true`, if the resource was in the diff +and each of the concerned keys were changing to new values: + +```python +import "tfplan" + +main = rule { tfplan.resources.null_resource.foo[0].diff["triggers.foo"].new is "bar" } +``` + +### Value: `old` + +- **Value Type:** String. + +The `old` value within the [diff namespace](#namespace-resource-diff) contains +the old value of a changing attribute. + +Note that this value is _always_ a string, regardless of the actual type of the +value changing. [Type conversion][ref-sentinel-type-conversion] within policy +may be necessary to achieve the comparison needed. + +If the value did not exist in the previous state, `old` will always be an empty +string. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "baz" + } +} +``` + +If that resource was previously in config as: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfplan" + +main = rule { tfplan.resources.null_resource.foo[0].diff["triggers.foo"].old is "bar" } +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfrun.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfrun.mdx new file mode 100644 index 0000000000..51d03dfd0e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfrun.mdx @@ -0,0 +1,320 @@ +--- +page_title: tfrun Sentinel import reference +description: >- + Use tfrun import to give Sentinel access to data associated with a Terraform + run. +source: terraform-docs-common +--- + +# tfrun Sentinel import reference + +The `tfrun` import provides access to data associated with a [Terraform run][run-glossary]. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +This import currently consists of run attributes, as well as namespaces for the `organization`, `workspace` and `cost-estimate`. Each namespace provides static data regarding the HCP Terraform application that can then be consumed by Sentinel during a policy evaluation. + + tfrun + ├── id (string) + ├── created_at (string) + ├── created_by (string) + ├── message (string) + ├── commit_sha (string) + ├── is_destroy (boolean) + ├── refresh (boolean) + ├── refresh_only (boolean) + ├── replace_addrs (array of strings) + ├── speculative (boolean) + ├── target_addrs (array of strings) + ├── project + │ ├── id (string) + │ └── name (string) + ├── variables (map of keys) + ├── organization + │ └── name (string) + ├── workspace + │ ├── id (string) + │ ├── name (string) + │ ├── created_at (string) + │ ├── description (string) + │ ├── execution_mode (string) + │ ├── auto_apply (bool) + │ ├── tags (array of strings) + | ├── tag_bindings (array of objects) + │ ├── working_directory (string) + │ └── vcs_repo (map of keys) + └── cost_estimate + ├── prior_monthly_cost (string) + ├── proposed_monthly_cost (string) + └── delta_monthly_cost (string) + +-> **Note:** When writing policies using this import, keep in mind that workspace +data is generally editable by users outside of the context of policy +enforcement. For example, consider the case of omitting the enforcement of +policy rules for development workspaces by the workspace name (allowing the +policy to pass if the workspace ends in `-dev`). While this is useful for +extremely granular exceptions, the workspace name could be edited by +workspace admins, effectively bypassing the policy. In this case, where an +extremely strict separation of policy managers vs. workspace practitioners is +required, using [policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) +to only enforce the policy on non-development workspaces is more appropriate. + +[run-glossary]: /terraform/docs/glossary#run + +[workspace-glossary]: /terraform/docs/glossary#workspace + +## Namespace: root + +The **root namespace** contains data associated with the current run. + +### Value: `id` + +- **Value Type:** String. + +Specifies the ID that is associated with the current Terraform run. + +### Value: `created_at` + +- **Value Type:** String. + +The `created_at` value within the [root namespace](#namespace-root) specifies the time that the run was created. The timestamp returned follows the format outlined in [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339). + +Users can use the `time` import to [load](/sentinel/docs/imports/time#time-load-timeish) a run timestamp and create a new timespace from the specified value. See the `time` import [documentation](/sentinel/docs/imports/time#import-time) for available actions that can be performed on timespaces. + +### Value: `created_by` + +- **Value Type:** String. + +The `created_by` value within the [root namespace](#namespace-root) is string that specifies the user name of the HCP Terraform user for the specific run. + +### Value: `message` + +- **Value Type:** String. + +Specifies the message that is associated with the Terraform run. + +The default value is _"Queued manually via the Terraform Enterprise API"_. + +### Value: `commit_sha` + +- **Value Type:** String. + +Specifies the checksum hash (SHA) that identifies the commit. + +### Value: `is_destroy` + +- **Value Type:** Boolean. + +Specifies if the plan is a destroy plan, which will destroy all provisioned resources. + +### Value: `refresh` + +- **Value Type:** Boolean. + +Specifies whether the state was refreshed prior to the plan. + +### Value: `refresh_only` + +- **Value Type:** Boolean. + +Specifies whether the plan is in refresh-only mode, which ignores configuration changes and updates state with any changes made outside of Terraform. + +### Value: `replace_addrs` + +- **Value Type:** An array of strings representing [resource addresses](/terraform/cli/state/resource-addressing). + +Provides the targets specified using the [`-replace`](/terraform/cli/commands/plan#resource-targeting) flag in the CLI or the `replace-addrs` attribute in the API. Will be null if no resource targets are specified. + +### Value: `speculative` + +- **Value Type:** Boolean. + +Specifies whether the plan associated with the run is a [speculative plan](/terraform/enterprise/run/remote-operations#speculative-plans) only. + +### Value: `target_addrs` + +- **Value Type:** An array of strings representing [resource addresses](/terraform/cli/state/resource-addressing). + +Provides the targets specified using the [`-target`](/terraform/cli/commands/plan#resource-targeting) flag in the CLI or the `target-addrs` attribute in the API. Will be null if no resource targets are specified. + +To prohibit targeted runs altogether, make sure the `target_addrs` value is null or empty: + + import "tfrun" + + main = tfrun.target_addrs is null or tfrun.target_addrs is empty + +### Value: `variables` + +- **Value Type:** A string-keyed map of values. + +Provides the names of the variables that are configured within the run and the [sensitivity](/terraform/enterprise/workspaces/variables/managing-variables#sensitive-values) state of the value. + + variables (map of keys) + └── name (string) + └── category (string) + └── sensitive (boolean) + +## Namespace: project + +The **project namespace** contains data associated with the current run's [projects](/terraform/enterprise/api-docs/projects). + +### Value: `id` + +- **Value Type:** String. + +Specifies the ID that is associated with the current project. + +### Value: `name` + +- **Value Type:** String. + +Specifies the name assigned to the HCP Terraform project. + +## Namespace: organization + +The **organization namespace** contains data associated with the current run's HCP Terraform [organization](/terraform/enterprise/users-teams-organizations/organizations). + +### Value: `name` + +- **Value Type:** String. + +Specifies the name assigned to the HCP Terraform organization. + +## Namespace: workspace + +The **workspace namespace** contains data associated with the current run's workspace. + +### Value: `id` + +- **Value Type:** String. + +Specifies the ID that is associated with the Terraform workspace. + +### Value: `name` + +- **Value Type:** String. + +The name of the workspace, which can only include letters, numbers, `-`, and `_`. + +As an example, in a workspace named `app-us-east-dev` the following policy would evaluate to `true`: + + # Enforces production rules on all non-development workspaces + + import "tfrun" + import "strings" + + # (Actual policy logic omitted) + evaluate_production_policy = rule { ... } + + main = rule when strings.has_suffix(tfrun.workspace.name, "-dev") is false { + evaluate_production_policy + } + +### Value: `created_at` + +- **Value Type:** String. + +Specifies the time that the workspace was created. The timestamp returned follows the format outlined in [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339). + +Users can use the `time` import to [load](/sentinel/docs/imports/time#time-load-timeish) a workspace timestamp, and create a new timespace from the specified value. See the `time` import [documentation](/sentinel/docs/imports/time#import-time) for available actions that can be performed on timespaces. + +### Value: `description` + +- **Value Type:** String. + +Contains the description for the workspace. + +This value can be `null`. + +### Value: `auto_apply` + +- **Value Type:** Boolean. + +Contains the workspace's [auto-apply](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply) setting. + +### Value: `tags` + +- **Value Type:** Array of strings. + +Contains the list of tag names for the workspace, as well as the keys from tag bindings. + +### Value: `tag_bindings` + +- **Value Type:** Array of objects. + +Contains the complete list of tag bindings for the workspace, which includes inherited tag bindings, as well as the workspace key-only tags. Each binding has a string `key`, a nullable string `value`, as well as a boolean `inherited` properties. + + tag_bindings (array of objects) + ├── key (string) + ├── value (string or null) + └── inherited (boolean) + +### Value: `working_directory` + +- **Value Type:** String. + +Contains the configured [Terraform working directory](/terraform/enterprise/workspaces/settings#terraform-working-directory) of the workspace. + +This value can be `null`. + +### Value: `execution_mode` + +- **Value Type:** String. + +Contains the configured [Terraform execution mode](/terraform/enterprise/workspaces/settings#execution-mode) of the workspace. + +The default value is `remote`. + +### Value: `vcs_repo` + +- **Value Type:** A string-keyed map of values. + +Contains data associated with a VCS repository connected to the workspace. + +Details regarding each attribute can be found in the documentation for the HCP Terraform [Workspaces API](/terraform/enterprise/api-docs/workspaces). + +This value can be `null`. + + vcs_repo (map of keys) + ├── identifier (string) + ├── display_identifier (string) + ├── branch (string) + └── ingress_submodules (bool) + +## Namespace: cost_estimate + +The **cost_estimation namespace** contains data associated with the current run's cost estimate. + +This namespace is only present if a cost estimate is available. + +-> Cost estimation is disabled for runs using [resource targeting](/terraform/cli/commands/plan#resource-targeting), which may cause unexpected failures. + +-> **Note:** Cost estimates are not available for Terraform 0.11. + +### Value: `prior_monthly_cost` + +- **Value Type:** String. + +Contains the monthly cost estimate at the beginning of a plan. + +This value contains a positive decimal and can be `"0.0"`. + +### Value: `proposed_monthly_cost` + +- **Value Type:** String. + +Contains the monthly cost estimate if the plan were to be applied. + +This value contains a positive decimal and can be `"0.0"`. + +### Value: `delta_monthly_cost` + +- **Value Type:** String. + +Contains the difference between the prior and proposed monthly cost estimates. + +This value may contain a positive or negative decimal and can be `"0.0"`. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate-v2.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate-v2.mdx new file mode 100644 index 0000000000..0de4f5cbd5 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate-v2.mdx @@ -0,0 +1,180 @@ +--- +page_title: tfstate/v2 Sentinel import +description: Use tfstate/v2 import to give Sentinel access to Terraform state. +source: terraform-docs-common +--- + +-> **Note:** This is documentation for the next version of the `tfstate` +Sentinel import, designed specifically for Terraform 0.12. This import requires +Terraform 0.12 or higher, and must currently be loaded by path, using an alias, +example: `import "tfstate/v2" as tfstate`. + +# tfstate/v2 Sentinel import + +The `tfstate/v2` import provides access to a Terraform state. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +The _state_ is the data that Terraform has recorded about a workspace at a +particular point in its lifecycle, usually after an apply. You can read more +general information about how Terraform uses state +[here](/terraform/language/state). + +-> **NOTE:** Since HCP Terraform currently only supports policy checks at plan +time, the usefulness of this import is somewhat limited, as it will usually give +you the state _prior_ to the plan the policy check is currently being run for. +Depending on your needs, you may find the +[`planned_values`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#the-planned_values-collection) collection in +`tfplan/v2` more useful, which will give you a _predicted_ state by applying +plan data to the data found here. The one exception to this rule is _data +sources_, which will always give up to date data here, as long as the data +source could be evaluated at plan time. + +The data in the `tfstate/v2` import is sourced from the JSON configuration file +that is generated by the [`terraform show -json`](/terraform/cli/commands/show#json-output) command. For more information on +the file format, see the [JSON Output Format](/terraform/internals/json-format) +page. + +## Import Overview + +The `tfstate/v2` import is structured as currently two _collections_, keyed in +resource address and output name, respectively. + + (tfstate/v2) + ├── terraform_version (string) + ├── resources + │ └── (indexed by address) + │ ├── address (string) + │ ├── module_address (string) + │ ├── mode (string) + │ ├── type (string) + │ ├── name (string) + │ ├── index (float (number) or string) + │ ├── provider_name (string) + │ ├── values (map) + │ ├── depends_on (list of strings) + │ ├── tainted (boolean) + │ └── deposed_key (string) + └── outputs + └── (indexed by name) + ├── name (string) + ├── sensitive (boolean) + └── value (value) + +The collections are: + +- [`resources`](#the-resources-collection) - The state of all resources across + all modules in the state. +- [`outputs`](#the-outputs-collection) - The state of all outputs from the root module in the state. + +These collections are specifically designed to be used with the +[`filter`](/sentinel/docs/language/collection-operations#filter-expression) +quantifier expression in Sentinel, so that one can collect a list of resources +to perform policy checks on without having to write complex module traversal. As +an example, the following code will return all `aws_instance` resource types +within the state, regardless of what module they are in: + + all_aws_instances = filter tfstate.resources as _, r { + r.mode is "managed" and + r.type is "aws_instance" + } + +You can add specific attributes to the filter to narrow the search, such as the +module address. The following code would return resources in a module named +`foo` only: + + all_aws_instances = filter tfstate.resources as _, r { + r.module_address is "module.foo" and + r.mode is "managed" and + r.type is "aws_instance" + } + +## The `terraform_version` Value + +The top-level `terraform_version` value in this import gives the Terraform +version that recorded the state. This can be used to do version validation. + + import "tfstate/v2" as tfstate + import "strings" + + v = strings.split(tfstate.terraform_version, ".") + version_major = int(v[1]) + version_minor = int(v[2]) + + main = rule { + version_major is 12 and version_minor >= 19 + } + +-> **NOTE:** The above example will give errors when working with pre-release +versions (example: `0.12.0beta1`). Future versions of this import will include +helpers to assist with processing versions that will account for these kinds of +exceptions. + +## The `resources` Collection + +The `resources` collection is a collection representing all of the resources in +the state, across all modules. + +This collection is indexed on the complete resource address as the key. + +An element in the collection has the following values: + +- `address` - The absolute resource address - also the key for the collection's + index. + +- `module_address` - The address portion of the absolute resource address. + +- `mode` - The resource mode, either `managed` (resources) or `data` (data + sources). + +- `type` - The resource type, example: `aws_instance` for `aws_instance.foo`. + +- `name` - The resource name, example: `foo` for `aws_instance.foo`. + +- `index` - The resource index. Can be either a number or a string. + +- `provider_name` - The name of the provider this resource belongs to. This + allows the provider to be interpreted unambiguously in the unusual situation + where a provider offers a resource type whose name does not start with its own + name, such as the `googlebeta` provider offering `google_compute_instance`. + + -> **Note:** Starting with Terraform 0.13, the `provider_name` field contains the + _full_ source address to the provider in the Terraform Registry. Example: + `registry.terraform.io/hashicorp/null` for the null provider. + +- `values` - An object (map) representation of the attribute values of the + resource, whose structure depends on the resource type schema. When accessing + proposed state through the [`planned_values`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#the-planned_values-collection) + collection of the tfplan/v2 import, unknown values will be omitted. + +- `depends_on` - The addresses of the resources that this resource depends on. + +- `tainted` - `true` if the resource has been explicitly marked as + [tainted](/terraform/cli/commands/taint) in the state. + +- `deposed_key` - Set if the resource has been marked deposed and will be + destroyed on the next apply. This matches the deposed field in the + [`resource_changes`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#the-resource_changes-collection) + collection in the [`tfplan/v2`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) import. + +## The `outputs` Collection + +The `outputs` collection is a collection of outputs from the root module of the +state. + +Note that no child modules are included in this output set, and there is no way +to fetch child module output values. This is to encourage the correct flow of +outputs to the recommended root consumption level. + +The collection is indexed on the output name, with the following fields: + +- `name`: The name of the output, also the collection key. +- `sensitive`: Whether or not the value was marked as + [sensitive](/terraform/language/values/outputs#sensitive-suppressing-values-in-cli-output) + in + configuration. +- `value`: The value of the output. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate.mdx new file mode 100644 index 0000000000..42e2590196 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/import-reference/tfstate.mdx @@ -0,0 +1,550 @@ +--- +page_title: tfstate Sentinel import +description: Use the tfstate import to give Sentinel access to Terraform state. +source: terraform-docs-common +--- + +# Import: tfstate + +~> **Warning:** The `tfstate` import is now deprecated and will be permanently removed in August 2025. We recommend that you start using the updated [tfstate/v2](/terraform/enterprise/policy-enforcement/import-reference/tfstate-v2) import as soon as possible to avoid disruptions. The `tfstate/v2` import offers improved functionality and is designed to better support your policy enforcement needs. + +The `tfstate` import provides access to the Terraform state. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +The _state_ is the data that Terraform has recorded about a workspace at a +particular point in its lifecycle, usually after an apply. You can read more +general information about how Terraform uses state [here][ref-tf-state]. + +[ref-tf-state]: /terraform/language/state + +-> **Note:** Since HCP Terraform currently only supports policy checks at plan +time, the usefulness of this import is somewhat limited, as it will usually give +you the state _prior_ to the plan the policy check is currently being run for. +Depending on your needs, you may find the +[`applied`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#value-applied) collection in `tfplan` more useful, +which will give you a _predicted_ state by applying plan data to the data found +here. The one exception to this rule is _data sources_, which will always give +up to date data here, as long as the data source could be evaluated at plan +time. + +## Namespace Overview + +The following is a tree view of the import namespace. For more detail on a +particular part of the namespace, see below. + +-> Note that the root-level alias keys shown here (`data`, `outputs`, `path`, +and `resources`) are shortcuts to a [module namespace](#namespace-module) scoped +to the root module. For more details, see the section on [root namespace +aliases](#root-namespace-aliases). + + tfstate + ├── module() (function) + │ └── (module namespace) + │ ├── path ([]string) + │ ├── data + │ │ └── TYPE.NAME[NUMBER] + │ │ ├── attr (map of keys) + │ │ ├── depends_on ([]string) + │ │ ├── id (string) + │ │ └── tainted (boolean) + │ ├── outputs (root module only in TF 0.12 or later) + │ │ └── NAME + │ │ ├── sensitive (bool) + │ │ ├── type (string) + │ │ └── value (value) + │ └── resources + │ └── TYPE.NAME[NUMBER] + │ ├── attr (map of keys) + │ ├── depends_on ([]string) + │ ├── id (string) + │ └── tainted (boolean) + │ + ├── module_paths ([][]string) + ├── terraform_version (string) + │ + ├── data (root module alias) + ├── outputs (root module alias) + ├── path (root module alias) + └── resources (root module alias) + +## Namespace: Root + +The root-level namespace consists of the values and functions documented below. + +In addition to this, the root-level `data`, `outputs`, `path`, and `resources` +keys alias to their corresponding namespaces or values within the [module +namespace](#namespace-module). + +### Function: `module()` + + module = func(ADDR) + +- **Return Type:** A [module namespace](#namespace-module). + +The `module()` function in the [root namespace](#namespace-root) returns the +[module namespace](#namespace-module) for a particular module address. + +The address must be a list and is the module address, split on the period (`.`), +excluding the root module. + +Hence, a module with an address of simply `foo` (or `root.foo`) would be +`["foo"]`, and a module within that (so address `foo.bar`) would be read as +`["foo", "bar"]`. + +[`null`][ref-null] is returned if a module address is invalid, or if the module +is not present in the state. + +[ref-null]: /sentinel/docs/language/spec#null + +As an example, given the following module block: + +```hcl +module "foo" { + # ... +} +``` + +If the module contained the following content: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true` if the resource was present in +the state: + +```python +import "tfstate" + +main = rule { tfstate.module(["foo"]).resources.null_resource.foo[0].attr.triggers.foo is "bar" } +``` + +### Value: `module_paths` + +- **Value Type:** List of a list of strings. + +The `module_paths` value within the [root namespace](#namespace-root) is a list +of all of the modules within the Terraform state at plan-time. + +Modules not present in the state will not be present here, even if they are +present in the configuration or the diff. + +This data is represented as a list of a list of strings, with the inner list +being the module address, split on the period (`.`). + +The root module is included in this list, represented as an empty inner list, as +long as it is present in state. + +As an example, if the following module block was present within a Terraform +configuration: + +```hcl +module "foo" { + # ... +} +``` + +The value of `module_paths` would be: + + [ + [], + ["foo"], + ] + +And the following policy would evaluate to `true`: + +```python +import "tfstate" + +main = rule { tfstate.module_paths contains ["foo"] } +``` + +-> Note the above example only applies if the module is present in the state. + +#### Iterating Through Modules + +Iterating through all modules to find particular resources can be useful. This +[example][iterate-over-modules] shows how to use `module_paths` with the +[`module()` function](#function-module-) to find all resources of a +particular type from all modules using the `tfplan` import. By changing `tfplan` +in this function to `tfstate`, you could make a similar function find all +resources of a specific type in the current state. + +[iterate-over-modules]: /terraform/enterprise/policy-enforcement/sentinel#sentinel-imports + +### Value: `terraform_version` + +- **Value Type:** String. + +The `terraform_version` value within the [root namespace](#namespace-root) +represents the version of Terraform in use when the state was saved. This can be +used to enforce a specific version of Terraform in a policy check. + +As an example, the following policy would evaluate to `true` as long as the +state was made with a version of Terraform in the 0.11.x series, excluding any +pre-release versions (example: `-beta1` or `-rc1`): + +```python +import "tfstate" + +main = rule { tfstate.terraform_version matches "^0\\.11\\.\\d+$" } +``` + +-> **NOTE:** This value is also available via the [`tfplan`](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) +import, which will be more current when a policy check is run against a plan. +It's recommended you use the value in `tfplan` until HCP Terraform +supports policy checks in other stages of the workspace lifecycle. See the +[`terraform_version`][import-tfplan-terraform-version] reference within the +`tfplan` import for more details. + +[import-tfplan-terraform-version]: /terraform/enterprise/policy-enforcement/import-reference/tfplan-v2#value-terraform_version + +## Namespace: Module + +The **module namespace** can be loaded by calling +[`module()`](#function-module-) for a particular module. + +It can be used to load the following child namespaces, in addition to the values +documented below: + +- `data` - Loads the [resource namespace](#namespace-resources-data-sources), + filtered against data sources. +- `outputs` - Loads the [output namespace](#namespace-outputs), which supply the + outputs present in this module's state. Note that with Terraform 0.12 or + later, this value is only available for the root namespace. +- `resources` - Loads the [resource + namespace](#namespace-resources-data-sources), filtered against resources. + +### Root Namespace Aliases + +The root-level `data`, `outputs`, and `resources` keys both alias to their +corresponding namespaces within the module namespace, loaded for the root +module. They are the equivalent of running `module([]).KEY`. + +### Value: `path` + +- **Value Type:** List of strings. + +The `path` value within the [module namespace](#namespace-module) contains the +path of the module that the namespace represents. This is represented as a list +of strings. + +As an example, if the following module block was present within a Terraform +configuration: + +```hcl +module "foo" { + # ... +} +``` + +The following policy would evaluate to `true`, _only_ if the module was present +in the state: + +```python +import "tfstate" + +main = rule { tfstate.module(["foo"]).path contains "foo" } +``` + +## Namespace: Resources/Data Sources + +The **resource namespace** is a namespace _type_ that applies to both resources +(accessed by using the `resources` namespace key) and data sources (accessed +using the `data` namespace key). + +Accessing an individual resource or data source within each respective namespace +can be accomplished by specifying the type, name, and resource number (as if the +resource or data source had a `count` value in it) in the syntax +`[resources|data].TYPE.NAME[NUMBER]`. Note that NUMBER is always needed, even if +you did not use `count` in the resource. + +In addition, each of these namespace levels is a map, allowing you to filter +based on type and name. + +-> The (somewhat strange) notation here of `TYPE.NAME[NUMBER]` may imply that +the inner resource index map is actually a list, but it's not - using the square +bracket notation over the dotted notation (`TYPE.NAME.NUMBER`) is required here +as an identifier cannot start with number. + +Some examples of multi-level access are below: + +- To fetch all `aws_instance.foo` resource instances within the root module, you + can specify `tfstate.resources.aws_instance.foo`. This would then be indexed + by resource count index (`0`, `1`, `2`, and so on). Note that as mentioned + above, these elements must be accessed using square-bracket map notation (so + `[0]`, `[1]`, `[2]`, and so on) instead of dotted notation. +- To fetch all `aws_instance` resources within the root module, you can specify + `tfstate.resources.aws_instance`. This would be indexed from the names of + each resource (`foo`, `bar`, and so on), with each of those maps containing + instances indexed by resource count index as per above. +- To fetch all resources within the root module, irrespective of type, use + `tfstate.resources`. This is indexed by type, as shown above with + `tfstate.resources.aws_instance`, with names being the next level down, and so + on. + +Further explanation of the namespace will be in the context of resources. As +mentioned, when operating on data sources, use the same syntax, except with +`data` in place of `resources`. + +### Value: `attr` + +- **Value Type:** A string-keyed map of values. + +The `attr` value within the [resource +namespace](#namespace-resources-data-sources) is a direct mapping to the state +of the resource. + +The map is a complex representation of these values with data going as far down +as needed to represent any state values such as maps, lists, and sets. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true` if the resource was in the state: + +```python +import "tfstate" + +main = rule { tfstate.resources.null_resource.foo[0].attr.triggers.foo is "bar" } +``` + +### Value: `depends_on` + +- **Value Type:** A list of strings. + +The `depends_on` value within the [resource +namespace](#namespace-resources-data-sources) contains the dependencies for the +resource. + +This is a list of full resource addresses, relative to the module (example: +`null_resource.foo`). + +As an example, given the following resources: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} + +resource "null_resource" "bar" { + # ... + + depends_on = [ + "null_resource.foo", + ] +} +``` + +The following policy would evaluate to `true` if the resource was in the state: + +```python +import "tfstate" + +main = rule { tfstate.resources.null_resource.bar[0].depends_on contains "null_resource.foo" } +``` + +### Value: `id` + +- **Value Type:** String. + +The `id` value within the [resource +namespace](#namespace-resources-data-sources) contains the id of the resource. + +-> **NOTE:** The example below uses a _data source_ here because the +[`null_data_source`][ref-tf-null-data-source] data source gives a static ID, +which makes documenting the example easier. As previously mentioned, data +sources share the same namespace as resources, but need to be loaded with the +`data` key. For more information, see the +[synopsis](#namespace-resources-data-sources) for the namespace itself. + +[ref-tf-null-data-source]: https://registry.terraform.io/providers/hashicorp/null/latest/docs/data-sources/data_source + +As an example, given the following data source: + +```hcl +data "null_data_source" "foo" { + # ... +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfstate" + +main = rule { tfstate.data.null_data_source.foo[0].id is "static" } +``` + +### Value: `tainted` + +- **Value Type:** Boolean. + +The `tainted` value within the [resource +namespace](#namespace-resources-data-sources) is `true` if the resource is +marked as tainted in Terraform state. + +As an example, given the following resource: + +```hcl +resource "null_resource" "foo" { + triggers = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true`, if the resource was marked as +tainted in the state: + +```python +import "tfstate" + +main = rule { tfstate.resources.null_resource.foo[0].tainted } +``` + +## Namespace: Outputs + +The **output namespace** represents all of the outputs present within a +[module](#namespace-module). Outputs are present in a state if they were saved +during a previous apply, or if they were updated with known values during the +pre-plan refresh. + +**With Terraform 0.11 or earlier** this can be used to fetch both the outputs +of the root module, and the outputs of any module in the state below the root. +This makes it possible to see outputs that have not been threaded to the root +module. + +**With Terraform 0.12 or later** outputs are available in the top-level (root +module) namespace only and not accessible within submodules. + +This namespace is indexed by output name. + +### Value: `sensitive` + +- **Value Type:** Boolean. + +The `sensitive` value within the [output namespace](#namespace-outputs) is +`true` when the output has been [marked as sensitive][ref-tf-sensitive-outputs]. + +[ref-tf-sensitive-outputs]: /terraform/language/values/outputs#sensitive-suppressing-values-in-cli-output + +As an example, given the following output: + +```hcl +output "foo" { + sensitive = true + value = "bar" +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfstate" + +main = rule { tfstate.outputs.foo.sensitive } +``` + +### Value: `type` + +- **Value Type:** String. + +The `type` value within the [output namespace](#namespace-outputs) gives the +output's type. This will be one of `string`, `list`, or `map`. These are +currently the only types available for outputs in Terraform. + +As an example, given the following output: + +```hcl +output "string" { + value = "foo" +} + +output "list" { + value = [ + "foo", + "bar", + ] +} + +output "map" { + value = { + foo = "bar" + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfstate" + +type_string = rule { tfstate.outputs.string.type is "string" } +type_list = rule { tfstate.outputs.list.type is "list" } +type_map = rule { tfstate.outputs.map.type is "map" } + +main = rule { type_string and type_list and type_map } +``` + +### Value: `value` + +- **Value Type:** String, list, or map. + +The `value` value within the [output namespace](#namespace-outputs) is the value +of the output in question. + +Note that the only valid primitive output type in Terraform is currently a +string, which means that any int, float, or boolean value will need to be +converted before it can be used in comparison. This does not apply to primitives +within maps and lists, which will be their original types. + +As an example, given the following output blocks: + +```hcl +output "foo" { + value = "bar" +} + +output "number" { + value = "42" +} + +output "map" { + value = { + foo = "bar" + number = 42 + } +} +``` + +The following policy would evaluate to `true`: + +```python +import "tfstate" + +value_foo = rule { tfstate.outputs.foo.value is "bar" } +value_number = rule { int(tfstate.outputs.number.value) is 42 } +value_map_string = rule { tfstate.outputs.map.value["foo"] is "bar" } +value_map_int = rule { tfstate.outputs.map.value["number"] is 42 } + +main = rule { value_foo and value_number and value_map_string and value_map_int } +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/index.mdx new file mode 100644 index 0000000000..7a53f5ced2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/index.mdx @@ -0,0 +1,50 @@ +--- +page_title: Terraform Enterprise policy enforcement overview +description: >- + Policies are rules for provisioning infrastructure that you can use to + validate Terraform plans. Learn how to use Sentinel and OPA to enforce + policies. +source: terraform-docs-common +--- + +# HCP Terraform policy enforcement overview + +This topic provides overview information about policies in HCP Terraform. Policies are rules for Terraform runs that let you validate that Terraform plans comply with security rules and best practices. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +> **Hands-on:** Try the [Enforce Policy with Sentinel](/terraform/tutorials/policy) and [Detect Infrastructure Drift and Enforce OPA Policies](/terraform/tutorials/cloud/drift-and-opa) tutorials. + +## Introduction + +You can implement policies that check for any number of conditions, such as whether infrastructure configuration adheres to security standards or best practices. For example, you may want to write a policy to check whether Terraform plans to deploy production infrastructure to the correct region. + +You can also use policies to enforce standards for your organization’s workflows. For example, you could write a policy to prevent new infrastructure deployments on Fridays, reducing the risk of production incidents outside of your team’s working hours. + +## Workflow + +The following workflow describes how to create and manage policies manually. + +### Define policy + +You can use either the Sentinel or OPA framework to create custom policies. You can also copy pre-written Sentinel policies created and maintained by HashiCorp. + +### Create and apply policy sets + +Policy sets are collections of policies you can apply globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces in your organization. For each run in the selected workspaces, HCP Terraform checks the Terraform plan against the policy set. + +You can also exclude specific workspaces from global or project-scoped policy sets. HCP Terraform won't enforce a policy set's policies on any runs in an excluded workspace. For example, if you attach a policy set to a project and then exclude one of the project's workspaces from that policy set, HCP Terraform will not enforce the policy set on the excluded workspace. + +You can create policy sets from the [user interface](/terraform/enterprise/policy-enforcement/manage-policy-sets#create-policy-sets), the API, or by connecting HCP Terraform to your version control system. A policy set can only contain policies written in a single policy framework, but you can add Sentinel or OPA policy sets to the same workspace. + +Refer to [Managing Policy Sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) for details. + +### Review policy results + +The HCP Terraform UI displays policy results for each policy set you apply to the workspace. Depending on their [enforcement level](/terraform/enterprise/policy-enforcement/manage-policy-sets#policy-enforcement-levels), failed policies can stop the run. You can override failed policies with the right permissions. + +Refer to [Policy Results](/terraform/enterprise/policy-enforcement/view-results) for details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/index.mdx new file mode 100644 index 0000000000..c64a99593a --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/index.mdx @@ -0,0 +1,227 @@ +--- +page_title: Manage policies and policy sets in Terraform Enterprise +description: >- + Learn how to create and manage policies and policy sets in Terraform + Enterprise. +source: terraform-docs-common +--- + +# Manage policies and policy sets in HCP Terraform + +Policies are rules that HCP Terraform enforces on Terraform runs. You can define policies using either the [Sentinel](/terraform/enterprise/policy-enforcement/sentinel) or [Open Policy Agent (OPA)](/terraform/enterprise/policy-enforcement/opa) policy-as-code frameworks. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Policy sets are collections of policies you can apply globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces in your organization. For each run in the applicable workspaces, HCP Terraform checks the Terraform plan against the policy set. Depending on the [enforcement level](#policy-enforcement-levels), failed policies can stop a run in a workspace. If you do not want to enforce a policy set on a specific workspace, you can exclude the workspace from that set. + +## Permissions + +To view and manage policies and policy sets, you must have [manage policy permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-policies) for your organization. + +## Policy checks versus policy evaluations + +Policy checks and evaluations can access different types of data and enable slightly different workflows. + +### Policy checks + +Only Sentinel policies can run as policy checks. Checks can access cost estimation data but can only use the latest version of Sentinel. + +~> **Warning:** Policy checks are deprecated and will be permanently removed in August 2025. We recommend that you start using policy evaluations to avoid disruptions. + +### Policy evaluations + +OPA policy sets can only run as policy evaluations, and you can enable policy evaluations for Sentinel policy sets by selecting the `Agent` policy set type. + +HCP Terraform runs a workspace's policy evaluation in your self-managed agent pool if you meet the following requirements: + +- You are on the HCP Terraform **Premium** edition. +- You configure the workspace to run Terraform operations in your self-managed agent pool. Refer to [Configure Workspaces to use the Agent](/terraform/cloud-docs/agents/agent-pools#configure-workspaces-to-use-the-agent) for more information. +- You configure at least one agent in the agent pool to accept `policy` jobs. Refer to the [HCP Terraform agent reference](/terraform/cloud-docs/agents/agents#accept) for more information. + +If you do not meet all of the above requirements, then policy evaluations run within HCP Terraform's infrastructure. + +For Sentinel policy sets, using policy evaluations lets you: + +- Enable overrides for soft-mandatory and hard-mandatory policies, letting any user with [Manage Policy Overrides permission](/terraform/enterprise/users-teams-organizations/permissions#manage-policy-overrides) proceed with a run in the event of policy failure. +- Select a specific Sentinel runtime version for the policy set. + +Policy evaluations **cannot** access cost estimation data, so use policy checks if your policies rely on cost estimates. + +~> **Tip:** Sentinel runtime version pinning is supported only for Sentinel 0.23.1 and above, as well as HCP Terraform agent versions 1.13.1 and above + +## Policy enforcement levels + +You can set an enforcement level for each policy that determines what happens when a Terraform plan does not pass the policy rule. Sentinel and OPA policies have different enforcement levels available. + +### Sentinel + +Sentinel provides three policy enforcement levels: + +- **advisory:** Failed policies never interrupt the run. They provide information about policy check failures in the UI. +- **soft mandatory:** Failed policies stop the run, but any user with [Manage Policy Overrides permission](/terraform/enterprise/users-teams-organizations/permissions#manage-policy-overrides) can override these failures and allow the run to complete. +- **hard mandatory:** Failed policies stop the run. Terraform does not apply runs with failed **hard mandatory** policies until a user fixes the issue that caused the failure. + +### OPA + +OPA provides two policy enforcement levels: + +- **advisory** Failed policies never interrupt the run. They provide information about policy failures in the UI. +- **mandatory:** Failed policies stop the run, but any user with [Manage Policy Overrides permission](/terraform/enterprise/users-teams-organizations/permissions#manage-policy-overrides) can override these failures and allow the run to complete. + +## Policy publishing workflows + +You can create policies and policy sets for your HCP Terraform organization in one of three ways: + +- **HCP Terraform web UI:** Add individually-managed policies manually in the HCP Terraform UI, and store your policy code in HCP Terraform. This workflow is ideal for initial experimentation with policy enforcement, but we do not recommend it for organizations with large numbers of policies. +- **Version control:** Connect HCP Terraform to a version control repository containing a policy set. When you push changes to the repository, HCP Terraform automatically uses the updated policy set. +- **Automated:** Push versions of policy sets to HCP Terraform with the [HCP Terraform Policy Sets API](/terraform/enterprise/api-docs/policy-sets#create-a-policy-set-version) or the `tfe` provider [`tfe_policy_set`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/policy_set) resource. This workflow is ideal for automated Continuous Integration and Deployment (CI/CD) pipelines. + +### Manage individual policies in the web UI + +You can add policies directly to HCP Terraform using the web UI. This process requires you to paste completed, valid Sentinel or Rego code into the UI. We recommend validating your policy code before adding it to HCP Terraform. + +#### Add managed policies + +To add an individually managed policy: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to add policies to. +2. Choose **Settings** from the sidebar, then **Policies**. A list of managed policies in HCP Terraform appears. Each policy designates its policy framework (Sentinel or OPA) and associated policy sets. +3. Click **Create a new policy**. +4. Choose the **Policy framework** you want to use. You can only create a policy set from policies written using the same framework. You cannot change the framework type after you create the policy. +5. Complete the following fields to define the policy: + - **Policy Name:** Add a name containing letters, numbers, `-`, and `_`. HCP Terraform displays this name in the UI. The name must be unique within your organization. + - **Description:** Describe the policy’s purpose. The description supports Markdown rendering, and HCP Terraform displays this text in the UI. + - **Enforcement mode:** Choose whether this policy can stop Terraform runs and whether users can override it. Refer to [policy enforcement levels](#policy-enforcement-levels) for more details. + - **(OPA Only) Query:** Write a query to identify a specific policy rule within your rego code. HCP Terraform uses this query to determine the result of the policy. The query is typically a combination of the policy package name and rule name, such as `terraform.deny`. The result of this query must be an array. The policy passes when the array is empty. + - **Policy code**: Paste the code for the policy: either Sentinel code or Rego code for OPA policies. The UI provides syntax highlighting for the policy language. + - **(Optional) Policy sets:** Select one or more existing managed policy sets where you want to add the new policy. You can only select policy sets compatible with the chosen policy set framework. If there are no policy sets available, you can [create a new one](#create-policy-sets). + +The policy is now available in the HCP Terraform UI for you to edit and add to one or more policy sets. + +#### Edit managed policies + +To edit a managed policy: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to edit policies for. +2. Choose **Settings** from the sidebar, then **Policies**. +3. Click the policy you want to edit to go to its details page. +4. Edit the policy's fields and then click **Update policy**. + +#### Delete managed policies + +~> **Warning:** Deleting a policy that applies to an active run causes that run’s policy evaluation stage to error. We recommend warning other members of your organization before you delete widely used policies. + +You can not restore policies after deletion. You must manually re-add them to HCP Terraform. You may want to save the policy code in a separate location before you delete the policy. + +To delete a managed policy: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to delete a policy in. +2. Choose **Settings** from the sidebar, then **Policies**. +3. Click the policy you want to delete to go to its details page. +4. Click **Delete policy** and then click **Yes, delete policy** to confirm. + +The policy no longer appears in HCP Terraform and in any associated policy sets. + +## Manage policy sets + +Policy sets are collections of policies that you can apply globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces. + +To view and manage policy sets, go to the **Policy Sets** section of your organization’s settings. This page contains all of the policy sets available in the organization, including those added through the API. + +The way you set up and configure a new policy set depends on your workflow and where you store policies. + +- For [managed policies](#managed-policies), you use the UI to create a policy set and add managed policies. +- For policy sets in a version control system, you use the UI to create a policy set connected to that repository. HCP Terraform automatically refreshes the policy set when you change relevant files in that repository. Version control policy sets have specific organization and formatting requirements. Refer to [Sentinel VCS Repositories](/terraform/enterprise/policy-enforcement/sentinel/vcs) and [OPA VCS Repositories](/terraform/enterprise/policy-enforcement/opa/vcs) for details. +- For automated workflows like continuous deployment, you can use the UI to create an empty policy set and then use the [Policy Sets API](/terraform/enterprise/api-docs/policy-sets) to add policies. You can also use the API or the [`tfe` provider (Sentinel Only)](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/policy_set) to add an entire, packaged policy set. + +### Create policy sets + +To create a policy set: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to create a policy set in. + +2. Choose **Settings** from the sidebar, then **Policies**. + +3. Click **Connect a new policy set**. + +4. Choose your workflow. + - For managed policies, click **create a policy set with individually managed policies**. HCP Terraform shows a form to create a policy set and add individually managed policies. + - For version control policies, choose a version control provider and then select the repository with your policy set. HCP Terraform shows a form to create a policy set connected to that repository. + - For automated workflows, click **No VCS Connection**. HCP Terraform shows a form to create an empty policy set. You can use the API to add policies to this empty policy set later. + +5. Choose a **Policy framework** for the policies you want to add. A policy set can only contain policies that use the same framework (OPA or Sentinel). You cannot change a policy set's framework type after creation. + +6. Choose a policy set scope: + - **Policies enforced globally:** HCP Terraform automatically enforces this global policy set on all of an organization's existing and future workspaces. + - **Policies enforced on selected projects and workspaces:** Use the text fields to find and select the workspaces and projects to enforce this policy set on. This affects all current and future workspaces for any chosen projects. + +7. **(Optional)** Add **Policy exclusions** for this policy set. Specify any workspaces in the policy set's scope that HCP Terraform will not enforce this policy set on. + +8. **(Sentinel Only)** Choose a policy set type: + - **Standard:** This is the default workflow. A Sentinel policy set uses a [policy check](#policy-checks) in HCP Terraform and lets you access cost estimation data. + - **Agent:** A Sentinel policy set uses a [policy evaluation](#policy-evaluations) in HCP Terraform. This lets you enable policy overrides and enforce a Sentinel runtime version + +9. **(OPA Only)** Select a **Runtime version** for this policy set. + +10. **(OPA Only)** Allow **Overrides**, which enables users with override policy permissions to apply plans that have [mandatory policy](#policy-enforcement-levels) failures. + +11. **(VCS Only)** Optionally specify the **VCS branch** within your VCS repository where HCP Terraform should import new versions of policies. If you do not set this field, HCP Terraform uses your selected VCS repository's default branch. + +12. **(VCS Only)** Specify where your policy set files live using the **Policies path**. This lets you maintain multiple policy sets within a single repository. Use a relative path from your root directory to the directory that contains either the `sentinel.hcl` (Sentinel) or `policies.hcl` (OPA) configuration files. If you do not set this field, HCP Terraform uses the repository's root directory. + +13. **(Managed Policies Only)** Select managed **Policies** to add to the policy set. You can only add policies written with the same policy framework you selected for this set. + +14. Choose a descriptive and unique **Name** for the policy set. You can use any combination of letters, numbers, `-`, and `_`. + +15. Write an optional **Description** that tells other users about the purpose of the policy set and what it contains. + +### Edit policy sets + +To edit a policy set: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to edit a policy set in. +2. Choose **Settings** from the sidebar, then **Policies**. +3. Click the policy set you want to edit to go to its settings page. +4. Adjust the settings and click **Update policy set**. + +### Evaluate a policy runtime upgrade + +You can validate that changing a policy runtime version does not introduce any breaking changes. + +To perform a policy evaluation: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to your organization. +2. Choose **Settings** from the sidebar, then **Policies** in your organization’s settings. +3. Click the policy set you want to upgrade. +4. Click the **Evaluate** tab. +5. Select the **Runtime version** you wish to upgrade to. +6. Select a **Workspace** to test the policy and upgraded version against. +7. Click **Evaluate**. + +HCP Terraform will execute the policy set using the specified version and the latest plan data for the selected workspace. It will display the evaluation results. If the evaluation returns a `Failed` status, inspect the JSON output to determine whether the issue is related to a non-compliant resource or is due to a syntax issue. +If the evaluation results in an error, check that the policy configuration is valid. + +### Delete policy sets + +~> **Warning:** Deleting a policy set that applies to an active run causes that run’s policy evaluation stage to error. We recommend warning other members of your organization before you delete widely used policy sets. + +You can not restore policy sets after deletion. You must manually re-add them to HCP Terraform. + +To delete a policy set: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to delete a policy set in. +2. Choose **Settings** from the sidebar, then **Policies** in your organization’s settings. +3. Click the policy set you want to delete to go to its details page. +4. Click **Delete policy** and then click **Yes, delete policy set** to confirm. + +The policy set no longer appears on the UI and HCP Terraform no longer applies it to any workspaces. For managed policy sets, all of the individual policies are still available in HCP Terraform. You must delete each policy individually to remove it from your organization. + +### (Sentinel only) Sentinel parameters + +[Sentinel parameters](/sentinel/docs/language/parameters) are a list of key/value pairs that HCP Terraform sends to the Sentinel runtime when performing policy checks on workspaces. If the value parses as JSON, HCP Terraform sends it to Sentinel as the corresponding type (string, boolean, integer, map, or list). If the value fails JSON validation, HCP Terraform sends it as a string. + +You can set Sentinel parameters when you [edit a policy set](#edit-policy-sets). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/opa-vcs.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/opa-vcs.mdx new file mode 100644 index 0000000000..adb5027c99 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/opa-vcs.mdx @@ -0,0 +1,48 @@ +--- +page_title: Configure an OPA policy set with a VCS repository +description: Use a VCS repository to configure an OPA policy set in Terraform Enterprise. +source: terraform-docs-common +--- + +# Configure an OPA policy set with a VCS repository + +To enable policy enforcement, you must group OPA policies into policy sets and apply those policy sets globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces. + +> **Hands-on:** Try the [Detect Infrastructure Drift and Enforce OPA Policies](/terraform/tutorials/cloud/drift-and-opa) tutorial. + +One way to create policy sets is by connecting HCP Terraform to a version control repository. When you push changes to the repository, HCP Terraform automatically uses the updated policy set. Refer to [Managing Policy Sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) for more details. + +An OPA policy set repository contains a HashiCorp Configuration Language (HCL) configuration file and policy files. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Configuration File + +The root directory of your policy set repository must contain a configuration file named either `policies.hcl` or `policies.json`. Policy enforcement supports both HCL and the JSON variant of HCL syntax. +The configuration file contains one or more `policy` blocks that define each policy in the policy set. Unlike Sentinel, OPA policies do not need to be in separate files. You use an [OPA query](/terraform/enterprise/policy-enforcement/opa#opa-query) to identify each policy rule. + +The following example uses a query to define a policy named `policy1`. This query may evaluate across multiple files, or a single file. + +```hcl +policy "policy1" { + query = "data.terraform.policy1.deny" +} +``` + +Optionally, you can also provide a `description` and an `enforcement_level` property. If you do not specify an enforcement level, HCP Terraform uses `advisory`, meaning policy failures produce warnings but do not block Terraform runs. Refer to [Policy Enforcement Levels](/terraform/enterprise/policy-enforcement/manage-policy-sets#policy-enforcement-levels) for more details. + +```hcl +policy "policy1" { + query = "data.terraform.policy1.deny" + enforcement_level = "mandatory" + description = "policy1 description" +} +``` + +## Policy Code Files + +All Rego policy files must end with `.rego` and exist in the local GitHub repository for the policy set. You can store them in separate directories from the configuration file. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/sentinel-vcs.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/sentinel-vcs.mdx new file mode 100644 index 0000000000..3bb8a81579 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/manage-policy-sets/sentinel-vcs.mdx @@ -0,0 +1,139 @@ +--- +page_title: Configure a Sentinel policy set with a VCS repository +description: >- + Use a VCS repository to configure a Sentinel policy set in Terraform + Enterprise. +source: terraform-docs-common +--- + +# Configure a Sentinel policy set with a VCS repository + +To enable policy enforcement, you must group Sentinel policies into policy sets. You can then apply those policy sets globally or to specific [projects](/terraform/enterprise/projects/manage) and workspaces. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +One way to create policy sets is by connecting HCP Terraform to a version control repository. When you push changes to the repository, HCP Terraform automatically uses the updated policy set. Refer to [Managing Policy Sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) for more details. + +A Sentinel policy set repository contains a Sentinel configuration file, policy files, and module files. + +## Configuration File + +Your repository must contain a configuration file named `sentinel.hcl` that defines the following features of the policy set: + +- Each policy included in the set. The policy name must match the names of individual [policy code files](#policy-code-files) exactly. HCP Terraform ignores policy files in the repository that are not listed in the configuration file. For each policy, the configuration file must designate the policy’s [enforcement level](/terraform/enterprise/policy-enforcement/manage-policy-sets#policy-enforcement-levels) and [source](#policy-source). +- [Terraform modules](#modules) that policies in the set need to access. + +The following example shows a portion of a `sentinel.hcl` configuration file that defines a policy named `terraform-maintenance-windows`. The policy has a `hard-mandatory` enforcement level, meaning that it can block Terraform runs when it fails and users cannot override it. + +```hcl +policy "terraform-maintenance-windows" { + source = "./terraform-maintenance-windows.sentinel" + enforcement_level = "hard-mandatory" +} +``` + +To configure a module, add a `module` entry to your `sentinel.hcl` file. The following example adds a module called `timezone`. + +```hcl +module "timezone" { + source = "./modules/timezone.sentinel" +} +``` + +The repositories for [policy libraries on the Terraform Registry](https://registry.terraform.io/browse/policies) contain more examples. + +## Policy Code Files + +Define each Sentinel policy in a separate file within your repository. All local policy files must reside in the same directory as the `sentinel.hcl` configuration file and end with the `.sentinel` suffix. + +### Policy Source + +A policy's `source` field can either reference a file within the policy repository, or it can reference a remote source. For example, the configuration could reference a policy from HashiCorp's [foundational policies library](https://github.com/hashicorp/terraform-foundational-policies-library). Sentinel only supports HTTP and HTTPS remote sources. + +To specify a local source, prefix the `source` with a `./`, or `../`. The following example shows how to reference a local source policy called `terraform-maintenance-windows.sentinel`. + +```hcl +policy "terraform-maintenance-windows" { + source = "./terraform-maintenance-windows.sentinel" + enforcement_level = "hard-mandatory" +} +``` + +To specify a remote source, supply the URL as the `source`. The following example references a policy from HashiCorp's foundational policies library. + +```hcl +policy "deny-public-ssh-nsg-rules" { + source = "https://registry.terraform.io/v2/policies/hashicorp/azure-networking-terraform/1.0.2/policy/deny-public-ssh-nsg-rules.sentinel?checksum=sha256:75c95bf1d6eb48153cb31f15c49c237bf7829549beebe20effa07bcdd3f3cb74" + enforcement_level = "advisory" +} +``` + +For GitHub, you must use the URL of the raw policy content. Other URL types cause HCP Terraform to error when checking the policy. For example, do not use `https://github.com/hashicorp/policy-library-azure-networking-terraform/blob/main/policies/deny-public-ssh-nsg-rules/deny-public-ssh-nsg-rules.sentinel`. + +To access the raw URL, open the Sentinel file in your Github repository, right-click **Raw** on the top right of the page, and save the link address. + +### Example Policy + +The following example policy uses the `time` and `tfrun` imports and a custom `timezone` module to do the following tasks: + +1. Load the time when the Terraform run occurred +2. Convert the loaded time with the correct offset using the [Timezone API](https://timezoneapi.io/) +3. Verify that the provisioning operation occurs only on a specific day + +The example policy also uses a [rule expression](/sentinel/docs/language/spec#rule-expressions) with the `when` predicate. If the value of `tfrun.workspace.auto_apply` is false, the rule is not evaluated and returns true. + +Finally, the example uses parameters to facilitate module reuse within Terraform. Refer to the [Sentinel parameter documentation](/sentinel/docs/language/parameters) for details. + +```hcl +import "time" +import "tfrun" +import "timezone" + +param token default "WbNKULOBheqV" +param maintenance_days default ["Friday", "Saturday", "Sunday"] +param timezone_id default "America/Los_Angeles" + +tfrun_created_at = time.load(tfrun.created_at) + +supported_maintenance_day = rule when tfrun.workspace.auto_apply is true { + tfrun_created_at.add(time.hour * timezone.offset(timezone_id, token)).weekday_name in maintenance_days +} + +main = rule { + supported_maintenance_day +} +``` + +To expand the policy, you could use the [time.hour](/sentinel/docs/imports/time#time-hour) function to also restrict provisioning to specific times of day. + +## Modules + +HCP Terraform supports [Sentinel modules](/sentinel/docs/extending/modules). Modules let you write reusable policy code that you can import and use within several policies at once. + +You can store modules locally or retrieve them from a remote HTTP or HTTPS source. + +-> **Note:** We recommend reviewing [Sentinel runtime's modules documentation](/sentinel/docs/extending/modules) to learn how to use modules within Sentinel. However, the configuration examples in the runtime documentation are relevant to the Sentinel CLI and not HCP Terraform. + +The following example module loads the code at `./modules/timezone.sentinel` relative to the policy set working directory. Other modules can access this code with the statement `import "timezone"`. + +```hcl +import "http" +import "json" +import "decimal" + +httpGet = func(id, token){ + uri = "https://timezoneapi.io/api/timezone/?" + id + "&token=" + token + request = http.get(uri) + return json.unmarshal(request.body) +} + +offset = func(id, token) { + tz = httpGet(id, token) + offset = decimal.new(tz.data.datetime.offset_hours).int + return offset +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-library.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-library.mdx new file mode 100644 index 0000000000..fc023061da --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-library.mdx @@ -0,0 +1,26 @@ +--- +page_title: Pre-written policy library +description: >- + HashiCorp authors and maintains a library of pre-written Sentinel policies + that enforce CIS and other compliance standards. Learn about the available + pre-written policies. +source: terraform-docs-common +--- + +# Pre-written policy library reference + +This topic provides reference information about the Sentinel policy libraries that HashiCorp authors and maintains. For instructions on how to run the policy libraries, refer to [Run pre-written Sentinel policies ](/terraform/enterprise/policy-enforcement/prewritten-sentinel). + +## Center for Internet Security (CIS) + +The Center for Internet Security (CIS) is a non-profit organization that publishes standards for configuring secure cloud services. Refer to the [CIS website](https://www.cisecurity.org) for additional information. + +HashiCorp publishes pre-written policies that support the following CIS benchmarks. + +### AWS + +- Amazon Web Services Foundations version 1.2. Refer to the [AWS documentation](https://docs.aws.amazon.com/securityhub/latest/userguide/cis-aws-foundations-benchmark.html#cis1v2-standard) for additional information about this version. +- Amazon Web Services Foundations version 1.4. Refer to the [AWS documentation](https://docs.aws.amazon.com/securityhub/latest/userguide/cis-aws-foundations-benchmark.html#cis1v4-standard) for additional information about this version. +- Amazon Web Services Foundations version 3.0. Refer to the [AWS documentation](https://docs.aws.amazon.com/securityhub/latest/userguide/cis-aws-foundations-benchmark.html#cis3v0-standard) for additional information about this version. + +Refer to the [CIS policy set for AWS GitHub repository](https://github.com/hashicorp/policy-library-CIS-Policy-Set-for-AWS-Terraform) for details about these policies. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-sentinel.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-sentinel.mdx new file mode 100644 index 0000000000..ea73b949a1 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/prewritten-sentinel.mdx @@ -0,0 +1,133 @@ +--- +page_title: Run pre-written Sentinel policies +description: >- + Learn how to download and install pre-written Sentinel policies created and + maintained by HashiCorp. +source: terraform-docs-common +--- + +# Run pre-written Sentinel policies + +This topic describes how to run Sentinel policies created and maintained by HashiCorp. For instructions about how to create your own custom Sentinel policies, refer to [Define custom Sentinel policies](/terraform/enterprise/policy-enforcement/define-policies/custom-sentinel). + +## Overview + +Pre-written Sentinel policy libraries streamline your compliance processes and enhance security across your infrastructure. HashiCorp's ready-to-use policies can help you enforce best practices and security standards across your AWS environment. + +Complete the following steps to implement pre-written Sentinel policies in your workspaces: + +1. Obtain the policies you want to implement. Download policies directly into your repository or create a fork of the HashiCorp repositories. Alternatively, you can add the Terraform module to your configuration, which acquires the policies and connects them to your workspaces in a single step. +2. Connect policies to your workspace. After you download policies or fork policy repositories, you must connect them to your HCP Terraform or Terraform Enterprise workspaces. + +Refer to the [Sentinel documentation](/sentinel/docs) for information about the Sentinel language. + +## Requirements + +You must use one of the following Terraform applications: + +- HCP Terraform +- Terraform Enterprise v202406-1 or newer + +### Permissions + +To create new policy sets and policies, your HCP Terraform or Terraform Enterprise user account must either be a member of the owners team or have the **Manage Policies** organization-level permissions enabled. Refer to the following topics for additional information: + +- [Organization owners](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) +- [Manage policies](/terraform/enterprise/users-teams-organizations/permissions#manage-policies) + +### Version control system + +You must have a GitHub account connected to HCP Terraform or Terraform Enterprise to manually connect policy sets to your workspaces. Refer to [Connecting VCS Providers](/terraform/enterprise/vcs) for instructions. + +## Get policies + +Refer to the [pre-written policy library reference](/terraform/enterprise/policy-enforcement/prewritten-library) for a complete list of available policy sets. You can also [browse the registry](https://registry.terraform.io/search/policies?q=Pre-written) to discover additional policy libraries. + +Use one of the following methods to get pre-written policies: + +- **Download policies from the registry**: Use this method if you want to assemble custom policy sets without customizing policies. +- **Fork the HashiCorp policy GitHub repository**: Use this method if you intend to customize the policies. +- **Add the Terraform module to your configuration**: Use this method to implement specific versions of the policies as-is. This method also connects the policies to workspaces in the Terraform configuration file instead of connecting them as a separate step. + +<Tabs> + +<Tab heading="Download from the registry"> + +Complete the following steps to download policies from the registry and apply them directly to your workspaces. + +1. Browse the policy libraries available in the [Terraform registry](https://registry.terraform.io/search/policies?q=Pre-written). +2. Click on a policy library and click **Choose policies**. +3. Select the policies you want to implement. The registry generates code in the **USAGE INSTRUCTIONS** box. +4. Click **Copy Code Snippet** to copy the code to your clipboard. +5. Create a GitHub repository to store the policies and the policy set configuration file. +6. Create a file called `sentinel.hcl` in the repository. +7. Paste the code from your clipboard into `sentinel.hcl` and commit your changes. +8. Complete the instructions for [connecting the policies to your workspace](#connect-policies-to-your-workspace). + +</Tab> +<Tab heading="Fork libraries"> + +Create a fork of the repository containing the policies you want to implement. Refer to the [GitHub documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) for instructions on how to create a fork. + +The following repositories are available: + +- [policy-library-CIS-Policy-Set-for-AWS-Terraform](https://github.com/hashicorp/policy-library-CIS-Policy-Set-for-AWS-Terraform) + +HashiCorp Sentinel policy libraries include a `sentinel.hcl` file. The file defines an example policy set using the policies included in the library. Modify the file to customize your policy set. Refer to [Sentinel Policy Set VCS Repositories](/terraform/enterprise/policy-enforcement/manage-policy-sets/sentinel-vcs) for additional information. + +After forking the repository, complete the instructions for [connecting the policies to your workspace](#connect-policies-to-your-workspace). + +</Tab> +<Tab heading="Terraform module"> + +This method enables you to connect the policies to workspaces in the Terraform configuration file. As a result, you can skip the instructions described in [Connect policies to your workspaces](#connect-policies-to-your-workspaces). + +1. Go to the [module in the Terraform registry](https://registry.terraform.io/modules/hashicorp/CIS-Policy-Set/AWS/latest) and copy the code generated in the **Provision Instructions** tile. + +2. Add the `module` block to your Terraform configuration and define the following arguments: + + - `source`: Specify the path to the module you downloaded. + - `tfe_organization`: Specify the name of your organization on Terraform Enterprise or HCP Terraform. + - `policy_set_workspace_names`: Specify a list of workspace names that you want to apply the policies to. + + The following example configuration applies invokes the module for `target_workspace_1`: + + ```hcl + module "cis_v1-2-0_policies" { + source = "../prewritten-policy" + name = "cis-1-2-0" + tfe_organization = "<your-tfe-org>" + policy_set_workspace_names = ["target_workspace_1"] + } + ``` + +3. Run `terraform plan` to view the plan. + +4. Run `terraform apply` to apply the changes. After running the command, Terraform will evaluate Sentinel policies for each following run of the workspaces you specified. + +</Tab> +</Tabs> + +## Connect policies to your workspace + +Skip this step if you [added the Terraform module](#add-the-terraform-module-to-your-configuration) to your configuration. When you use the module, the `policy_set_workspace_names` argument instructs Terraform to connect the policies to the HCP Terraform workspaces specified in the configuration. + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization with workspaces you want to connect policies to. +2. Choose **Settings** from the sidebar. +3. Click **Policy Sets** and click **Connect a new policy set**. +4. Click the **Version control provider (VCS)** tile. +5. Enable the **Sentinel** option as the policy framework. +6. Specify a name and description for the set. +7. Configure any additional options for the policy set and click **Next**. +8. Choose the GitHub connection type, then choose the repository you created in [Set up a repository for the policies](#set-up-a-repository-for-the-policies). +9. If the `sentinel.hcl` policy set file is stored in a subfolder, specify the path to the file in the **Policies path** field. The default is the root directory. +10. If you want to apply updated policy sets to the workspace from a specific branch, specify the name in the **VCS branch** field. The default is the default branch configured for the repository. +11. Click **Next** and specify any additional parameters you want to pass to the Sentinel runtime and click **Connect policy set** to finish applying the policies to the workspace. + +Run a plan in the workspace to trigger the connected policies. Refer to [Start a Terraform run](/terraform/enterprise/run/remote-operations#starting-runs) for additional information. + +## Next steps + +- Group your policies into sets and apply them to your workspaces. Refer to [Create policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets#create-policy-sets) for additional information. +- View results and address Terraform runs that do not comply with your policies. Refer to [View results](/terraform/enterprise/policy-enforcement/view-results) for additional information. +- You can also view Sentinel policy results in JSON format. Refer to [View Sentinel JSON results](/terraform/enterprise/policy-enforcement/view-results/json) for additional information. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/test-sentinel.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/test-sentinel.mdx new file mode 100644 index 0000000000..91be1391fe --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/test-sentinel.mdx @@ -0,0 +1,277 @@ +--- +page_title: Generate mock Sentinel data with Terraform Enterprise +description: >- + Learn how to generate mock Sentinel data to test your policies with Terraform + Enterprise. +source: terraform-docs-common +--- + +# Generate mock Sentinel data with Terraform + +We recommend that you test your Sentinel policies extensively before deploying +them within HCP Terraform. An important part of this process is mocking +the data that you wish your policies to operate on. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Due to the highly variable structure of data that can be produced by an +individual Terraform configuration, HCP Terraform provides the ability to +generate mock data from existing configurations. This can be used to create +sample data for a new policy, or data to reproduce issues in an existing one. + +Testing policies is done using the [Sentinel +CLI](/sentinel/docs/commands). More general information on +testing Sentinel policies can be found in the [Testing +section](/sentinel/docs/writing/testing) of the [Sentinel +runtime documentation](https://docs.hashicorp.com/sentinel). + +~> **Be careful!** Mock data generated by HCP Terraform directly exposes any +and all data within the configuration, plan, and state. Terraform attempts to +scrub sensitive data from these mocks, but we do not guarantee 100% accuracy. +Treat this data with care, and avoid generating mocks with live sensitive data +when possible. Access to this information requires [permission to download +Sentinel mocks](/terraform/enterprise/users-teams-organizations/permissions) for the +workspace where the data was generated. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Generating Mock Data Using the UI + +Mock data can be generated using the UI by expanding the plan status section of +the run page, and clicking on the **Download Sentinel mocks** button. + +![sentinel mock generate ui](/img/docs/download-mocks.png) + +For more information on creating a run, see the +[Terraform Runs and Remote Operations](/terraform/enterprise/run/remote-operations) section of the docs. + +If the button is not visible, then the plan is ineligible for mock generation or +the user doesn't have the necessary permissions. See [Mock Data +Availability](#mock-data-availability) for more details. + +## Generating Mock Data Using the API + +Mock data can also be created with the [Plan Export +API](/terraform/enterprise/api-docs/plan-exports). + +Multiple steps are required for mock generation. The export process is +asynchronous, so you must monitor the request to know when the data is generated +and available for download. + +1. Get the plan ID for the run that you want to generate the mock for by + [getting the run details](/terraform/enterprise/api-docs/run#get-run-details). + Look for the `id` of the `plan` object within the `relationships` section of + the return data. +2. [Request a plan + export](/terraform/enterprise/api-docs/plan-exports#create-a-plan-export) using the + discovered plan ID. Supply the Sentinel export type `sentinel-mock-bundle-v0`. +3. Monitor the export request by [viewing the plan + export](/terraform/enterprise/api-docs/plan-exports#show-a-plan-export). When the + status is `finished`, the data is ready for download. +4. Finally, [download the export + data](/terraform/enterprise/api-docs/plan-exports#download-exported-plan-data). + You have up to an hour from the completion of the export request - after + that, the mock data expires and must be re-generated. + +## Using Mock Data + +-> **Note:** The v2 mock files are only available on Terraform 0.12 and higher. + +Mock data is supplied as a bundled tarball, containing the following files: + + mock-tfconfig.sentinel # tfconfig mock data + mock-tfconfig-v2.sentinel # tfconfig/v2 mock data + mock-tfplan.sentinel # tfplan mock data + mock-tfplan-v2.sentinel # tfplan/v2 mock data + mock-tfstate.sentinel # tfstate mock data + mock-tfstate-v2.sentinel # tfstate/v2 mock data + mock-tfrun.sentinel # tfrun mock data + sentinel.hcl # sample configuration file + +The sample `sentinel.hcl` file contains mappings to the mocks so that you +can get started testing with `sentinel apply` right away. For `sentinel test`, +however, we recommend a more detailed layout. + +We recommend placing the files for `sentinel test` in a subdirectory +of the repository holding your policies, so they don't interfere with the +command's automatic policy detection. While the test data is Sentinel code, it's +not a policy and will produce errors if evaluated like one. + + . + ├── foo.sentinel + ├── sentinel.hcl + ├── test + │   └── foo + │   ├── fail.hcl + │   └── pass.hcl + └── testdata + ├── mock-tfconfig.sentinel + ├── mock-tfconfig-v2.sentinel + ├── mock-tfplan.sentinel + ├── mock-tfplan-v2.sentinel + ├── mock-tfstate.sentinel + ├── mock-tfstate-v2.sentinel + └── mock-tfrun.sentinel + +Each configuration that needs access to the mock should reference the mock data +files within the `mock` block in the Sentinel configuration file. + +For `sentinel apply`, this path is relative to the working directory. Assuming +you always run this command from the repository root, the `sentinel.hcl` +configuration file would look like: + +```hcl +mock "tfconfig" { + module { + source = "testdata/mock-tfconfig.sentinel" + } +} + +mock "tfconfig/v1" { + module { + source = "testdata/mock-tfconfig.sentinel" + } +} + +mock "tfconfig/v2" { + module { + source = "testdata/mock-tfconfig-v2.sentinel" + } +} + +mock "tfplan" { + module { + source = "testdata/mock-tfplan.sentinel" + } +} + +mock "tfplan/v1" { + module { + source = "testdata/mock-tfplan.sentinel" + } +} + +mock "tfplan/v2" { + module { + source = "testdata/mock-tfplan-v2.sentinel" + } +} + +mock "tfstate" { + module { + source = "testdata/mock-tfstate.sentinel" + } +} + +mock "tfstate/v1" { + module { + source = "testdata/mock-tfstate.sentinel" + } +} + +mock "tfstate/v2" { + module { + source = "testdata/mock-tfstate-v2.sentinel" + } +} + +mock "tfrun" { + module { + source = "testdata/mock-tfrun.sentinel" + } +} +``` + +For `sentinel test`, the paths are relative to the specific test configuration +file. For example, the contents of `pass.hcl`, asserting that the result of the +`main` rule was `true`, would be: + + mock "tfconfig" { + module { + source = "../../testdata/mock-tfconfig.sentinel" + } + } + + mock "tfconfig/v1" { + module { + source = "../../testdata/mock-tfconfig.sentinel" + } + } + + mock "tfconfig/v2" { + module { + source = "../../testdata/mock-tfconfig-v2.sentinel" + } + } + + mock "tfplan" { + module { + source = "../../testdata/mock-tfplan.sentinel" + } + } + + mock "tfplan/v1" { + module { + source = "../../testdata/mock-tfplan.sentinel" + } + } + + mock "tfplan/v2" { + module { + source = "../../testdata/mock-tfplan-v2.sentinel" + } + } + + mock "tfstate" { + module { + source = "../../testdata/mock-tfstate.sentinel" + } + } + + mock "tfstate/v1" { + module { + source = "../../testdata/mock-tfstate.sentinel" + } + } + + mock "tfstate/v2" { + module { + source = "../../testdata/mock-tfstate-v2.sentinel" + } + } + + mock "tfrun" { + module { + source = "../../testdata/mock-tfrun.sentinel" + } + } + + test { + rules = { + main = true + } + } + +## Mock Data Availability + +The following factors can prevent you from generating mock data: + +- You do not have permission to download Sentinel mocks for the workspace. + ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + Permission is required to protect the possibly sensitive data which can be + produced via mock generation. +- The run has not progressed past the planning stage, or did not create a plan + successfully. +- The run progressed past the planning stage prior to July 23, 2021. Prior to this date, HCP Terraform only kept JSON plans for 7 days. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +If a plan cannot have its mock data exported due to any of these reasons, the +**Download Sentinel mocks** button within the plan status section of the UI will +not be visible. + +-> **Note:** Only a successful plan is required for mock generation. Sentinel can still generate the data if apply or policy checks fail. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/index.mdx new file mode 100644 index 0000000000..9c744110c5 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/index.mdx @@ -0,0 +1,74 @@ +--- +page_title: View policy enforcement results in Terraform Enterprise +description: >- + Learn how to view and override policy enforcement results in Terraform + Enterprise. +source: terraform-docs-common +--- + +# View policy enforcement results + +When you add [policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) to a workspace, HCP Terraform enforces those policy sets on every Terraform run. HCP Terraform displays the policy enforcement results in the UI for each run. Depending on each policy’s [enforcement level](/terraform/enterprise/policy-enforcement/manage-policy-sets#policy-enforcement-levels), policy failures can also stop the run and prevent Terraform from provisioning infrastructure. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Policy Evaluation Run Stages + +HCP Terraform only evaluates policies for successful plans. HCP Terraform evaluates Sentinel and OPA policy sets separately and at different points in the run. + +- Sentinel policy checks occur after Terraform completes the plan and after both [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) and [cost estimation](https://terraform.io/cloud-dodcs/cost-estimation). This order lets you write Sentinel policies to restrict costs based on the data in the cost estimates. +- Sentinel policy evaluations occur after Terraform completes the plan and after any run tasks. HCP Terraform evaluates Sentinel policy evaluations immediately before cost estimation. +- OPA policy evaluations occur after Terraform completes the plan and after any run tasks. HCP Terraform evaluates OPA policies immediately before cost estimation. + +Refer to [Run States and Stages](/terraform/enterprise/run/states) for more details. + +## View Policy Results + +To view the policy results for both Sentinel and OPA policies: + +1. Go to your workspace and navigate to the **Runs** page. +2. Click a run to view its details. + +HCP Terraform displays a timeline of the run’s events. For workspaces with both Sentinel and OPA policy sets, the run details page displays two separate run events: **OPA policies** for OPA policy sets and **Policy check** for Sentinel policy sets. + +Click a policy evaluation event to view policy results and details about any failed policies. + +-> **Note:** For Sentinel, the Terraform CLI also prints policy results for [CLI-driven runs](/terraform/enterprise/run/cli). CLI support for policy results is not available for OPA. + +## Override Policies + +You need [manage policy overrides](/terraform/enterprise/users-teams-organizations/permissions#manage-policy-overrides) permissions to override failed Sentinel and OPA policies. + +Sentinel and OPA have different policy enforcement levels that determine when you need to override failed policies to allow a run to continue. +To override failed policies, go to the run details page and click **Override and Continue** at the bottom. + +For Sentinel only, you can also override `soft-mandatory` policies with the Terraform CLI. Run the `terraform apply` command and then enter `override` when prompted. + +-> **Note:** HCP Terraform does not allow policy overrides for [no-operation plans containing no infrastructure changes](/terraform/enterprise/run/modes-and-options#allow-empty-apply), unless you choose the **Allow empty apply** option when starting the run. + +### Sentinel + +#### Policy checks + +Policies with an `advisory` enforcement level never stop runs. If they fail, HCP Terraform displays a warning in the policy results and the run continues. + +You can override `soft-mandatory` policies to allow the run to continue. Overriding failed policies on a run does not affect policy evaluations on future runs in that workspace. + +You cannot override `hard-mandatory` policies, and all of these policies must pass for the run to continue. + +#### Policy evaluations + +Policies with an `advisory` enforcement level never stop runs. If they fail, HCP Terraform displays a warning in the policy results and the run continues. + +When running Sentinel policies as policy evaluations, `soft-mandatory` and `hard-mandatory` enforcement levels are internally converted to `mandatory` enforcement level. +You can override `mandatory` policies to allow the run to continue. + +### OPA + +Policies with an `advisory` enforcement level never stop runs. If they fail, HCP Terraform displays a warning in the policy results and the run continues. + +You can override `mandatory` policies to allow the run to continue. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/json.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/json.mdx new file mode 100644 index 0000000000..c0fa9f3707 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/policy-enforcement/view-results/json.mdx @@ -0,0 +1,59 @@ +--- +page_title: View and filter Sentinel JSON data +description: Learn how to view and filter Sentinel JSON data. +source: terraform-docs-common +--- + +# View and filter Sentinel JSON data + +When using the HCP Terraform UI, Sentinel policy check results are available +both in a human-readable log form, and in a more detailed, lower-level JSON +form. While the logs may suppress some output that would make the logs harder +to read, the JSON output exposes the lower-level output directly to you. Being +able to parse this data in its entirety is especially important when working +with [non-boolean rule +data](/sentinel/docs/language/rules#non-boolean-values) in +a policy designed to work with Sentinel 0.17.0 and higher. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +-> The JSON data exposed is the same as you would see when using the [policy +checks API](/terraform/enterprise/api-docs/policy-checks), with the data starting at the +`sentinel` key. + +## Viewing JSON Data + +To view the JSON data, expand the policy check on the [runs +page](/terraform/enterprise/run/manage) if it is not already expanded. The logs are +always displayed first, so click the **View JSON Data** button to view the JSON +data. You can click the **View Logs** button to switch back to the log view. + +![viewing json data](/img/docs/sentinel-view-json.png) + +## Filtering JSON Data + +The JSON data is filterable using a [jq](https://stedolan.github.io/jq/)-subset +filtering language. See the [JSON +filtering](/terraform/enterprise/workspaces/json-filtering) page for more details on +the filtering language. + +Filters are entered by putting the filter in the aptly named **filter** box in +the JSON viewer. After entering the filter, pressing **Apply** or the enter key +on your keyboard will apply the filter. The filtered results, if any, are +displayed in result box. Clearing the filter will restore the original JSON +data. + +![entering a json filter](/img/docs/sentinel-json-enter-filter.png) + +### Quick-Filtering `main` Rules + +Clicking the **Filter "main" rules** button will quickly apply a filter that +shows you the results of the `main` rule for every policy in the policy set. You +can use this to quickly get the results of each policy in the set, without +having navigate through the rest of the policy result data. + +![using the quick filter](/img/docs/sentinel-json-quick-filter.png) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/projects/best-practices.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/projects/best-practices.mdx new file mode 100644 index 0000000000..b1b60daf38 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/projects/best-practices.mdx @@ -0,0 +1,40 @@ +--- +page_title: Best Practices - Projects - Terraform Enterprise +description: >- + Best practices to structure your configuration and Terraform Enterprise + projects +source: terraform-docs-common +--- + +# Project Best Practices + +Projects let you group and scope access to your workspaces. You can group related workspaces into projects and give teams more permissive access to individual projects rather than granting them permissions to the entire organization. + +Projects offer several advantages to help you further develop your workspace strategy: + +- **Focused workspace view**: You can scope which workspaces HCP Terraform displays by project, allowing for a more organized view. +- **Simplified workspace management**: You can create project-level permissions and variable sets that apply to all current and future workspaces in the project. For example, you can create a project variable set containing your cloud provider credentials for all workspaces in the project to access. +- **Reduced risk with centralized control**: You can scope project permissions to only grant teams administrator access to the projects and workspaces they need. + +## Recommendations + +When using projects, we recommend the following: + +- **Automate with Terraform**: Automate the creation of projects, variable sets, and teams together using the [TFE provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs). +- **Designate a landing zone project**: Landing zone projects contain workspaces used to create all other projects, teams, and workspaces. This lets you have a variable set that includes the organization token, which the TFE provider can use to create other resources in your organization. You can also create a [Sentinel policy](/terraform/enterprise/policy-enforcement) to prevent users in other projects from accessing the organization token. +- **Maintain least privilege**: Restrict the number of project administrators to maintain the principal of least privilege. + +## Project boundaries + +Finally, decide on the logical boundaries for your projects. Some considerations to keep in mind include: + +- **Provider boundaries**: For smaller organizations, creating one project per cloud account may make it easier to manage access. Projects can use [dynamic credentials](/terraform/tutorials/cloud/dynamic-credentials) by configuring a project variable set to avoid hard-coding long-lived static credentials. +- **Least privilege**: You can create teams and grant them access to projects with workspaces of similar areas of ownership. For example, a production networking workspace should be in a separate project from a development compute workspace. +- **Use variable sets**: Project-wide variable sets let you configure and reuse values such as default tags for cost-codes, owners, and support contacts. Projects can own variable sets, enabling you to separate management and access to sets between projects. +- **Practitioner efficiency**: Consider if it makes sense for a practitioner to need to visit multiple projects to complete a deployment. + +## Next steps + +This article introduces some considerations to keep in mind as your organization matures their project usage. Being deliberate about how you use these to organize your infrastructure will ensure smoother and safer operations. To learn more about HCP Terraform and Terraform Enterprise best practices, refer to [Workspace Best Practices](/terraform/enterprise/workspaces/best-practices). To learn best practices for writing Terraform configuration, refer to the [Terraform Style Guide](/terraform/language/style). + +[HCP Terraform](/terraform/tutorials/cloud-get-started) provides a place to try these concepts hands-on, and you can [get started for free](https://app.terraform.io/public/signup/account). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/projects/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/projects/index.mdx new file mode 100644 index 0000000000..62f7b9a260 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/projects/index.mdx @@ -0,0 +1,51 @@ +--- +page_title: Projects - Terraform Enterprise +description: >- + Use projects to organize and group workspaces and create ownership boundaries + across your infrastructure. +source: terraform-docs-common +--- + +# Overview + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/project-permissions.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Projects let you organize your workspaces and scope access to workspace +resources. Each project has a separate permissions set that you can use to grant +teams access to all workspaces in the project, defining access control +boundaries for teams and their resources. Project-level permissions are more +granular than organization-level permissions, but more specific than individual +workspace-level grants. + +When deciding how to structure your projects, consider which groups of resources +need distinct access rules. You may wish to define projects by business units, +departments, subsidiaries, or technical teams. + +> **Hands On:** Try our [Managing +> Projects](/terraform/tutorials/cloud/projects) +> tutorial. + +## Default Project + +Every workspace must belong to exactly one project. By default, all workspaces +belong to an organization's **Default Project**. You can rename the default +project, but you cannot delete it. You can specify a workspace's project at the +time of creation and move it to a different project later. + +The “Manage Workspaces” team permission lets users create and manage workspaces. +Users with this permission can read and manage all workspaces, but new +workspaces are automatically added to the “Default Project” and users cannot +access the metadata for other projects. To create workspaces under other +projects, users also need the "Manage Projects & Workspaces" permission or the +admin role for the project they wish to use. + +## Managing Projects + +The "Manage all Projects" team permission lets users manage projects. Users with +this permission can view, edit, delete, and assign team access to all of an +organization's projects. Refer to [Managing +Projects](/terraform/enterprise/projects/manage) for more details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/projects/manage.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/projects/manage.mdx new file mode 100644 index 0000000000..3ad84ad7e5 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/projects/manage.mdx @@ -0,0 +1,124 @@ +--- +page_title: Manage projects in Terraform Enterprise +description: |- + Use projects to organize and group workspaces and create ownership boundaries + across your infrastructure. +source: terraform-docs-common +--- + +# Manage projects + +This topic describes how to create and manage projects in HCP Terraform and Terraform Enterprise. A project is a folder containing one or more workspaces. + +## Requirements + +You must have the following permissions to manage projects: + +- You must be a member of a team with the **Manage all Projects** permissions enabled to create a project. Refer to [Organization Permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) for additional information. +- You must be a member of a team with the **Visible** option enabled under **Visibility** in the organization settings to configure a new team's access to the project. Refer to [Team Visibility](/terraform/enterprise/users-teams-organizations/teams/manage#team-visibility) for additional information. +- You must be a member of a team with update and delete permissions to be able to update and delete teams respectively. + +To delete tags on a project, you must be member of a team with the **Admin** permission group enabled for the project. + +To create tags for a project, you must be member of a team with the **Write** permission group enabled for the project. + +## View a project + +To view your organization's projects: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select **Projects** from the sidebar. +2. Search for a project that you want to view. You can use the following methods: + - Sort by column header. + - Use the search bar to search on the name of a project or a tag. +3. Click on a project's name to view more details. + +## Create a project + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select **Projects** from the sidebar. +2. Click **+ New project**. +3. Specify a name for the project. The name must be unique within the organization and can only include letters, numbers, inner spaces, hyphens, and underscores. +4. Add a description for the project. This field is optional. +5. Open the **Add key value tags** menu to add tags to your project. Workspaces you create within the project inherit project tags. Refer to [Define project tags](#define-project-tags) for additional information. +6. Click **+Add tag** and specify a tag key and tag value. If your organization has defined reserved tag keys, they appear in the **Tag key** field as suggestions. Refer to [Create and manage reserved tags](/terraform/enterprise/users-teams-organizations/organizations/manage-reserved-tags) for additional information. +7. Click **+ Add tag** to attach any additional tags. +8. Click **Create** to finish creating the project. + +HCP Terraform returns a new project page displaying all the project +information. + +## Edit a project + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select **Projects** from the sidebar. +2. Click on a project name of the project you want to edit. +3. Choose **Settings** from the sidebar. + +On this **General settings** page, you can update the project name, project +description, and delete the project. On the **Team access** page, you can modify +team access to the project. + +## Automatically destroy inactive workspaces + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/ephemeral-workspaces.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +You can configure HCP Terraform to automatically destroy each workspace's +infrastructure in a project after a period of inactivity. A workspace +is inactive if the workspace's state has not changed within your designated +time period. + +If you configure a project to auto-destroy its infrastructure when inactive, +any run that updates Terraform state further delays the scheduled auto-destroy +time by the length of your designated timeframe. + +<Warning> + +The user interface does not prompt you to approve automated destroy plans. We recommend only using this setting for development environments. + +</Warning> + +To schedule an auto-destroy run after a period of workspace inactivity: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the project with workspaces you want to destroy. +2. Choose **Settings** from the sidebar, then **Auto-destroy Workspaces**. +3. Click **Set up default**. +4. Select or customize a desired timeframe of inactivity. +5. Click **Confirm default**. + +You can configure an individual workspace's auto-destroy settings to override +this default configuration. Refer to [automatically destroy workspaces](/terraform/enterprise/workspaces/settings/deletion#automatically-destroy) for more information. + +## Delete a project + +You can only delete projects that do not contain <!-- BEGIN: TFC:only -->stacks or <!-- END: TFC:only -->workspaces. + +To delete an empty project: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise. +2. Click **Projects**. +3. Search for a project that you want to review by scrolling down the table or + searching for a project name in the search bar above the project table. +4. Choose **Settings** from the sidebar. +5. Click the **Delete** button. A **Delete project** modal appears. +6. Click the **Delete** button to confirm the deletion. + +HCP Terraform returns to the **Projects** view with the deleted project +removed from the list. + +## Define project tags + +You can define tags stored as key-value pairs to help you organize your projects and track resource consumption. Workspaces created in the project automatically inherit the tags, but workspace administrators with appropriate permissions can attach new key-value pairs to their workspaces to override inherited tags. Refer to [Create workspace tags](/terraform/enterprise/workspaces/tags) for additional information about using tags in workspaces. + +The following rules apply to tag keys and values: + +- Tags must be one or more characters. +- Tags have a 255 character limit. +- Tags can include letters, numbers, colons, hyphens, and underscores. +- Tag values are optional. +- You can create up to 10 unique tags per workspace and 10 unique tags per project. As a result, each workspace can have up to 20 tags. +- You cannot use the following strings at the beginning of a tag key: + - `hcp` + - `hc` + - `ibm` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/add.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/add.mdx new file mode 100644 index 0000000000..50b3130f06 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/add.mdx @@ -0,0 +1,79 @@ +--- +page_title: Add public providers and modules to the Terraform Enterprise private registry +description: >- + Learn how to add providers and modules from the public Terraform registry to + your organization's private registry. +source: terraform-docs-common +--- + +[vcs]: /terraform/enterprise/vcs + +# Add public providers and modules to the HCP Terraform private registry + +You can add providers and modules from the public [Terraform Registry](/terraform/registry) to your HCP Terraform private registry. The private registry stores a pointer to these public providers and modules so that you can view their data from within HCP Terraform. This lets you clearly designate which public providers and modules are recommended for the organization and makes their supporting documentation and examples centrally accessible. + +-> **Note:** Your Terraform Enterprise instance must allow access to `registry.terraform.io` and `https://yy0ffni7mf-dsn.algolia.net/`. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +You can add providers and modules through the UI as detailed below or through the [Registry Providers API](/terraform/enterprise/api-docs/private-registry/providers) and the [Registry Modules API](/terraform/enterprise/api-docs/private-registry/modules#create-a-module-with-no-vcs-connection-). + +## Permissions + +All members of an organization can view and use public providers and modules. Members of the [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) and teams with [Manage Private Registry permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) can add and delete them from the private registry. + +## Adding a Public Provider or Module + +> **Hands-on:** Try the [Add Public Providers and Modules to your Private Registry](/terraform/tutorials/modules/private-registry-add) tutorial and [Share Modules in the Private Registry](/terraform/tutorials/modules/module-private-registry-share) tutorials. + +To add a public provider or module: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to add a public provider or module to. + +2. Select **Registry** from the sidebar. The organization's private registry appears with a list of available providers and modules. + +3. Click **Search public registry**. The **Public Registry Search** page appears. + +4. Enter any combination of namespaces (such as hashicorp), and module or provider names into the search field. You can click **Providers** and **Modules** to toggle between lists of providers and modules that meet the search criteria. + +5. Do one of the following to add a provider or module to your private registry: + - Hover over the provider or module and click **+ Add**. + - Click the provider or module to view its details and then click **Add to HCP Terraform**. + +6. Click **Add to organization** in the dialog box. Members of your organization can now begin using it from the private registry. + +## Enabling and Disabling No-Code Provisioning + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/nocode.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +You can enable no-code provisioning for public modules after adding them to your registry. + +To support the auto-apply workflow, ensure that downstream users can automatically load provider credentials into their new no-code workspaces. You can enable access by either creating a [global or project-scoped variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) with the credentials for the module's provider, or by accessing outputs with credentials from other workspaces. Refer to [Provider Credentials](/terraform/enterprise/no-code-provisioning/module-design#provider-credentials) for more details. + +To enable no-code provisioning: + +1. Verify that the module meets the [requirements for no-code provisioning](/terraform/enterprise/no-code-provisioning/module-design#requirements). +2. Click the module to view its details. +3. Select **Enable no-code provisioning** from the **Manage Module for Organization** dropdown. + +Your module’s details page now has a **No-Code Ready** badge to indicate that it supports no-code provisioning. + +To disable no-code provisioning, select **Disable no-code provisioning** from the **Manage Module for Organization** dropdown. Disabling also removes the **No-Code Ready** badge from the module’s details page. + +## Removing a Public Provider or Module + +Removing a public provider or module from a private registry does not remove it from the public Terraform Registry. Users in the organization can still use the removed provider or module without changing their configurations. + +To remove a public provider or module from an organization's private registry: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization whose registry you want to remove a provider or module from. + +2. Select **Registry** from the sidebar. The organization's private registry appears with a list of available providers and modules. + +3. Select the provider or module to view its details, open the **Manage for Organization** menu, and click **Remove from organization** (providers) or **Delete module** (modules). + +4. Enter the provider or module name in the dialog box to confirm and then click **Remove** (providers) or **Delete** (modules). The provider or module no longer appears in the organization's private registry. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/design.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/design.mdx new file mode 100644 index 0000000000..935081361e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/design.mdx @@ -0,0 +1,64 @@ +--- +page_title: Use the configuration designer in Terraform Enterprise +description: >- + Learn how to outline a configuration with private modules and define variables + with the Terraform Enterprise configuration designer. +source: terraform-docs-common +--- + +# Use the configuration designer + +HCP Terraform's private registry includes a configuration designer that can help you spend less time writing boilerplate code in a module-centric Terraform workflow. + +The configuration designer lets you outline a configuration for a new workspace by choosing any number of private modules. It then lists those modules' variables as a fillable HTML form, with a helper interface for finding values that you can interpolate. When you are finished, the designer returns the text of a `main.tf` configuration. This is the same Terraform code you would have written in your text editor. + +## Accessing the Configuration Designer + +Go to your organization's private registry, and then click **&lt;> Design Configuration**. + +The **Select Modules** page appears. + +## Adding Modules + +Filter and search the left side of the **Select Modules** page to find private modules that you can add to your configuration. + +Click **Add Module** for all of the modules you want to use in your configuration. These modules appear in the **Selected Modules** list on the right side of the page. + +### Setting Versions + +Selecting a module adds its most recent version to the configuration. To specify a different version: + +1. Click the module's version number from the **Selected Modules** list on the right. +2. Select an alternate version from the menu. + +## Setting Variables + +When you finish selecting modules, click **Next »** to go to the **Set Variables** page. + +The left side of this page lists your chosen modules, and the right side lists all variables for the currently selected module. Each variable is labeled as required or optional. + +You can switch between modules without losing your work; click a module's **Configure** button to switch to its variable list. + +Once you set a value for all of a module's required variables, its **Configure** button changes to a green **Configured** button. + +### Interpolation Searching + +Variable values can be literal strings, or can interpolate other values. When you start typing an interpolation token (`${`), the designer displays a help message. As you continue typing, it searches the available outputs in your other selected modules, as well as outputs from workspaces where you are authorized to read state outputs. You can select one of these search results, or type a full name if you need to reference a value HCP Terraform does not know about. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Deferring Variables + +Sometimes, configuration users should be able to set certain variables according to their use cases. + +Select the **Deferred** checkbox to delegate a variable to configuration users. This ties the variable's value to a new top-level Terraform variable with no default value. All users that create a workspace from your configuration will have to provide a value for that variable. + +## The Output Configuration + +When all modules are configured, click **Next »**. + +The **Publish** page appears. Use the **Preview configuration** menu to review the generated code. + +The configuration designer does not create any repositories or workspaces. To create workspaces with the configuration, you must download the generated code, save it as the `main.tf` file in a new directory, and commit it to version control. After you download the code, you can make any necessary changes or additions. For example, you may want to add non-module resources. + +When you are sure you have downloaded the results, click **Done** to discard the configuration. HCP Terraform does not save output from previous configuration designer runs. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/index.mdx new file mode 100644 index 0000000000..0405c24452 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/index.mdx @@ -0,0 +1,27 @@ +--- +page_title: Terraform Enterprise private registry overview +description: >- + The Terraform Enterprise private registry lets you share private modules and + providers across your organization. +source: terraform-docs-common +--- + +# HCP Terraform private registry overview + +HCP Terraform's private registry works similarly to the [public Terraform Registry](/terraform/registry) and helps you share [Terraform providers](/terraform/language/providers) and [Terraform modules](/terraform/language/modules) across your organization. It includes support for versioning and a searchable list of available providers and modules. + +> **Hands-on:** Try the [Add Public Providers and Modules to your Private Registry](/terraform/tutorials/modules/private-registry-add) tutorial and [Share Modules in the Private Registry](/terraform/tutorials/modules/module-private-registry-share) tutorials. + +## Public Providers and Modules + +[Public modules and providers](/terraform/enterprise/registry/add) are hosted on the public Terraform Registry and HCP Terraform can automatically synchronize them to an organization's private registry. This lets you clearly designate which public providers and modules are recommended for the organization and makes their supporting documentation and examples centrally accessible. + +-> **Note:** Your Terraform Enterprise instance must allow access to `registry.terraform.io` and `https://yy0ffni7mf-dsn.algolia.net/`. + +## Private Providers and Modules + +[Private providers](/terraform/enterprise/registry/publish-providers) and [private modules](/terraform/enterprise/registry/publish-modules) are hosted on an organization's private registry and are only available to members of that organization. In Terraform Enterprise, private providers and modules are also available to other organizations that are [configured to share](/terraform/enterprise/admin/application/registry-sharing) with that organization. + +## Managing Usage + +You can create [Sentinel policies](/terraform/enterprise/policy-enforcement) to manage how members of your organization can use modules from the private registry. For example, you can mandate that all non-root modules in Terraform configurations must be private or public modules from your own private registry. You can also apply a policy that requires all modules to use recent versions. Refer to our [example policy on GitHub](https://github.com/hashicorp/terraform-sentinel-policies/blob/main/cloud-agnostic/http-examples/use-recent-versions-from-pmr.sentinel). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/manage-module-versions.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/manage-module-versions.mdx new file mode 100644 index 0000000000..2c83eeefec --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/manage-module-versions.mdx @@ -0,0 +1,218 @@ +--- +page_title: Manage module versions in Terraform Enterprise +description: >- + Learn how to deprecate and revoke module versions to signal the end of support + for those versions. Deprecating a module version warns users to upgrade soon, + and revoking a module version signals you no longer maintain support for a + module version and blocks new consumers. +source: terraform-docs-common +--- + +# Manage module versions + +<>{/* TODO: remove revoke references here */}</> + +You can manage the lifecycle of module versions in your organization’s private registry by deprecating or revoking module versions as you stop maintaining and supporting those versions. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include "tfc-package-callouts/manage-module-versions.mdx" + +<!-- END: TFC:only name:pnp-callout --> + +Deprecating a module version adds warnings to the module's registry page and warnings in the run outputs of any users of that version. + +<!-- BEGIN: TFC:only name:revoke --> + +Revoking a module version adds warnings to the module's registry page, warnings in the run outputs of existing users, and prevents new users from consuming that version. + +<!-- END: TFC:only name:revoke --> + +You can also [deprecate or revoke module versions using the HCP Terraform API](/terraform/enterprise/api-docs/private-registry/manage-module-versions). + +<>{/* TODO: remove revoke references here */}</> + +## Overview + +Deprecating a private module version enables platform teams and module authors to signal to consumers that a version is still maintained and supported but is not recommended. HCP Terraform urges existing and new users of deprecated versions to upgrade that version in their configuration. The private registry also denotes which module versions are deprecated, alerting new consumers to use a non-deprecated version. + +You can revert a module version’s deprecation if you decide to continue supporting that version. Reverting a version’s deprecation removes all warnings from that version in both the module’s registry page and the run outputs of that version’s consumers. + +<!-- BEGIN: TFC:only name:revoke --> + +You can revoke a private module to mark that you not longer support it. Revoking a module version adds similar warnings to deprecation in a module's registry page and the run outputs of current consumers. Revoking a module version also blocks the runs of any new users attempting to add that version to their configuration. + +Reverting a module version’s revocation sets it back to a deprecated state, signaling that the version is still maintained and supported but not recommended. + +<!-- END: TFC:only name:revoke --> + +## Requirements + +To deprecate a module version or to revert a version’s deprecation: + +- you must have permission to manage [private registry modules](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) +- the module must be in the [private](/terraform/enterprise/registry/publish-modules) registry + <!-- BEGIN: TFC:only name:pnp-callout --> +- you must be a member of an organization on the HCP Terraform **Plus** edition + <!-- END: TFC:only name:pnp-callout --> + +<!-- BEGIN: TFC:only name:revoke --> + +To revoke or to revert a module version’s status: + +- you must have permission to manage [private registry modules](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) +- the module must be in an organization's [private registry](/terraform/enterprise/registry/publish-modules) +- you must be a member of an organization on the HCP Terraform **Premium** edition + <!-- END: TFC:only name:revoke --> + +<>{/* TODO: don't forget to exclude PNP above when remove tags */}</> + +## Deprecate a module version + +To deprecate a module version, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to your organization. +2. Choose **Registry** in the sidebar then find the module you want to deprecate a version of. +3. Open the **Manage module for organization** dropdown. +4. Select a module version for deprecation. +5. You can optionally provide an explanation in the **Reason for module deprecation** field to help users understand why this module version is being deprecated. This custom message is displayed to module users in deprecation warnings. +6. You can optionally enter a URL into the **Link to additional information** field if there is a website where consumers can learn more about that module version’s deprecation. +7. Click **Deprecate**. + +If the module version you are deprecating has the [**No-code ready**](/terraform/enterprise/no-code-provisioning/module-design#updating-a-module-s-version) pin, then HCP Terraform lets you select another version to create no-code modules from. We recommend adding the **No-code ready** pin to another non-deprecated module version so that users provisioning workspaces from your module can use a version that you plan to continue supporting. + +### Deprecation warnings + +After you deprecate a module version, consumers of that version receive warnings in their operation outputs urging them to update that version in both HCP Terraform and the Terraform CLI. + +~> **Note**: Only workspaces in the [remote or agent execution modes](/terraform/enterprise/workspaces/settings#execution-mode) can receive warnings for a module version’s deprecation. + +If you provided a reason for a module version’s deprecation, then deprecation warnings contain that reason: + +<CodeBlockConfig hideClipboard> + +```shell +Found the following deprecated module versions, consider using an updated version. +<module-name-version><optional-reason-for-module-deprecation> +``` + +</CodeBlockConfig> + +A run’s output mode affects where a version's deprecation warning appears. If a workspace is in the default [**Structured Run Output**](/terraform/enterprise/workspaces/settings#user-interface) mode, then module deprecation warnings show up under a run’s **Diagnostics** dropdown. + +If a run is in the **Console UI** mode, module deprecation warnings appear in the run’s logs: + +<CodeBlockConfig hideClipboard> + +```shell +Warning: Deprecated modules found, consider installing an updating version. The following are affected: +Version X.X.X of <module-name> +``` + +</CodeBlockConfig> + +## Revert the deprecation of a module version + +To revert a module version’s deprecation, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to your organization. +2. Choose **Registry** in the sidebar, then find the module version you want to revert the deprecation of. +3. Open the **Manage module for organization** dropdown. +4. Select **Revert module version deprecation X.X.X**. +5. Click **Revert Deprecation**. + +Reverting the deprecation of a module version removes all warnings from that version in both the module’s registry page and in the run outputs of that module version’s consumers. + +<>{/* TODO: add TFE to bullet points */}</> + +<!-- BEGIN: TFC:only name:revoke --> + +## Revoke a module version + +To revoke a module version, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) and navigate to your organization. +2. Choose **Registry** in the sidebar, then select the module version you want to revoke. +3. If you have not already, [deprecate the module version](#deprecate-a-module-version) you want to revoke. +4. Open the **Manage module for organization** dropdown. +5. Optionally explain why you are deprecating this module version in the **Reason for module revocation** field. This custom message is displayed to users in revocation run warnings and on the registry page. +6. Optionally, enter a URL into the **Link to additional information** field if there is a website where consumers can learn more about that module version’s revocation. +7. Click **Revoke**. + +If the module version you are revoking has the [**No-code ready**](/terraform/enterprise/no-code-provisioning/module-design#updating-a-module-s-version) pin, you must select another version to create no-code modules from. This is to ensure users provisioning workspaces from your module use a version that you are currently supporting. + +### Revocation warnings + +Like deprecation, revoking a module version displays a warning on the private registry and sends current consumers warnings in operation outputs in HCP Terraform and the Terraform CLI. The difference between deprecation and revocation is that Terraform blocks new consumers from using a revoked module version by erroring out in runs. + +~> **Note**: Only workspaces in the [remote or agent execution modes](/terraform/enterprise/workspaces/settings#execution-mode) can receive warnings for a module version’s revocation. + +After you revoke a module version, current consumers of that version receive warnings in their operation outputs in HCP Terraform and the Terraform CLI. If you provided a reason for a module version’s revocation, HCP Terraform displays that reason to users in run outputs: + +<CodeBlockConfig hideClipboard> + +```shell +This run references revoked module versions, but this will proceed due to referencing a previously used module version. +Module version X.X.X of <module-name> is revoked. + +<optional-custom-message> +``` + +</CodeBlockConfig> + +A run’s output mode affects where a version's revocation warnings appear. If a workspace is in the default [**Structured Run Output**](/terraform/enterprise/workspaces/settings#user-interface) mode, then module revocation warnings show up under a run’s **Diagnostics** dropdown. + +If a run is in the **Console UI** mode, module revocation warnings appear in the run’s logs: + +<CodeBlockConfig hideClipboard> + +```shell +Warning: This run will continue because it references a revoked module version that was previously used in this workspace. Net new workspaces that reference this module version will be blocked from making new runs. +Version X.X.X of <module-name-version> + +<optional-custom-message> +``` + +</CodeBlockConfig> + +If a new user attempts to add a revoked module version to their configuration, their runs fail. If you provided a reason for a module version’s revocation, HCP Terraform displays that reason to users in run outputs: + +<CodeBlockConfig hideClipboard> + +```shell +This run references revoked module versions, this run will not proceed. +Module version <module-version> of <module-name> is revoked. +<custom-message> +``` + +</CodeBlockConfig> + +A run’s output mode affects where a module revocation’s warning appears. If a run set to the default [**Structured Run Output**](/terraform/enterprise/workspaces/settings#user-interface) mode, then module revocation warnings show up under a run’s **Diagnostics** dropdown. + +If a run is in the **Console UI** mode, module revocation warnings appear in the run’s logs: + +<CodeBlockConfig hideClipboard> + +```shell +│ Alert: Revoked modules found, this run will not continue. The following modules have been revoked: +│ +│ Version X.X.X of <module-name> +│ +│ <custom-message> +``` + +</CodeBlockConfig> + +## Revert the revocation of a module version + +When you revert the revocation of a module version, HCP Terraform sets that version as deprecated, signaling that it is still maintained and supported but not recommended. Deprecated module versions still produce warnings in the registry and run outputs, but new users can still use them. + +To revert a module version’s revocation, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) and navigate to your organization. +2. Choose **Registry** in the sidebar, then find the revoked module version you want to revert. +3. Open the **Manage module for organization** dropdown. +4. Select **Revert module version revocation X.X.X**. +5. Click **Revert**. + +<!-- END: TFC:only name:revoke --> diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-modules.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-modules.mdx new file mode 100644 index 0000000000..657f740572 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-modules.mdx @@ -0,0 +1,165 @@ +--- +page_title: Publish private modules to the Terraform Enterprise private registry +description: >- + Use the Terraform Enterprise private registry to publish and share private + modules across your organization. +source: terraform-docs-common +--- + +[vcs]: /terraform/enterprise/vcs + +# Publish private modules to the HCP Terraform private registry + +> **Hands-on:** Try the [Share Modules in the Private Module Registry](/terraform/tutorials/modules/module-private-registry-share) tutorial. + +In addition to [adding modules from the Terraform Registry](/terraform/enterprise/registry/add), you can publish private modules to an organization's HCP Terraform private registry. The registry handles downloads and controls access with HCP Terraform API tokens, so consumers do not need access to the module's source repository, even when running Terraform from the command line. + +The private registry uses your configured [Version Control System (VCS) integrations][vcs] and defers to your VCS provider for most management tasks. For example, your VCS provider handles new version releases. The only manual tasks are adding a new module and deleting module versions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Permissions + +Private modules are only available to members of the organization where you add them. In Terraform Enterprise, they are also available to organizations that you configure to [share modules](/terraform/enterprise/admin/application/registry-sharing) with that organization. + +Members of the [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) and teams with [Manage Private Registry permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) can publish and delete modules from the private registry. + +## Preparing a Module Repository + +After you configure at least one [connection to a VCS provider][vcs], you can publish a new module by specifying a properly formatted VCS repository (details below). The registry automatically detects the rest of the information it needs, including the module's name and its available versions. + +A module repository must meet all of the following requirements before you can add it to the registry: + +- **Location and permissions:** The repository must be in one of + your configured [VCS providers][vcs], and HCP Terraform's VCS user account must have admin access to the repository. The registry needs admin access to create the webhooks to import new module versions. GitLab repositories must be in the main organization or group, and not in any subgroups. + +- **Named `terraform-<PROVIDER>-<NAME>`:** Module repositories must use this + three-part name format, where `<NAME>` reflects the type of infrastructure + the module manages and `<PROVIDER>` is the main provider where it creates that + infrastructure. The `<PROVIDER>` segment must be all lowercase. The `<NAME>` + segment can contain additional hyphens. Examples: `terraform-google-vault` or + `terraform-aws-ec2-instance`. + +- **Standard module structure:** The module must adhere to the + [standard module structure](/terraform/language/modules/develop/structure). + This allows the registry to inspect your module and generate documentation, + track resource usage, and more. + +## Publishing a New Module + +You can publish modules through the UI as shown below or with the [Registry Modules API](/terraform/enterprise/api-docs/private-registry/modules). The API also supports publishing modules without a VCS repo as the source, which is not possible in the UI. + +To publish a new module: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to publish a module. + +2. Select **Registry** from the sidebar. + +3. Click **Publish** and select **Module**. + + The **Add Module** page appears with a list of available repositories. + +4. Select the repository containing the module you want to publish. + + You can search the list by typing part or all of a repository name into the filter field. Remember that VCS providers use `<NAMESPACE>/<REPO NAME>` strings to locate repositories. The namespace is an organization name for most providers, but Bitbucket Data Center, not Bitbucket Cloud, uses project keys, like `INFRA`. + +5. When prompted, choose either the **Tag** or **Branch** module publishing type. + +6. (Optional) If this module is a [no-code ready module](/terraform/enterprise/no-code-provisioning/module-design), select the **Add Module to no-code provision allowlist** checkbox. + +7. Click **Publish module**. + + HCP Terraform displays a loading page while it imports the module versions and then takes you to the new module's details page. On the details page, you can view available versions, read documentation, and copy a usage example. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/nocode.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +### Tag-based publishing considerations + +When using the **Tag** module publishing type, the registry uses `x.y.z` formatted release tags to identify module versions. Your repository must contain at least one release tag for you to publish a module. Release tag names must be a [semantic version](http://semver.org), which you can optionally prefix with a `v`. For example, `v1.0.4` and `0.9.2`. The registry ignores tags that do not match these formats. + +<!-- BEGIN: TFC:only name:branch-based-publishing --> + +### Branch-based publishing considerations + +When using the **Branch** module publishing type, you must provide the name of an existing branch in your VCS repository and give the module a **Module version**. Your VCS repository does not need to contain a matching tag or release. + +You can only enable testing on modules published using branch-based publishing. Refer to the [test-integrated modules](/terraform/enterprise/registry/test) documentation for more information. + +<!-- END: TFC:only name:branch-based-publishing --> + +## Releasing New Versions of a Module + +<!-- BEGIN: TFC:only name:branch-based-publishing --> + +The process to release a new module version differs between the tag-based and branch-based publishing workflows. + +### Tag-Based Publishing Workflow + +<!-- END: TFC:only name:branch-based-publishing --> + +To release a new version of a module in the tag-based publishing workflow, push a new release tag to its VCS repository. The registry automatically imports the new version. + +Refer to [Preparing a Module Repository](#preparing-a-module-repository) for details about release tag requirements. + +<!-- BEGIN: TFC:only name:branch-based-publishing --> + +### Branch-Based Publishing Workflow + +To release a new version of a module using the branch-based publishing workflow, navigate to the module overview screen, then click the **Publish New Version** button. Select the commit SHA that the new version will point to, and assign a new module version. You cannot re-use an existing module version. + +## Update Publish Settings + +After publishing your module, you can change between tag-based and branch-based publishing. To update your module's publish settings, navigate to the the module overview page, click the **Manage Module for Organization** dropdown, and then click **Publish Settings**. + +- To change from tag-based to branch-based publishing, you must configure a **Module branch** and [create a new module version](#branch-based-publishing-workflow), as HCP Terraform will not automatically create one. + +- To change from branch-based publishing to tag-based publishing, you must create at least one tag in your VCS repository. + +<!-- END: TFC:only name:branch-based-publishing --> + +## Deleting Versions and Modules + +-> **Note:** Deleting a tag from your VCS repository does not automatically remove the version from the private registry. + +You can delete individual versions of a module or the entire module. If deleting a module version would leave a module with no versions, HCP Terraform removes the entire module. To delete a module or version: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the module's details page. + +2. If you want to delete a single version, use the **Versions** menu to select it. + +3. Click **Delete module**. + +4. Select an action from the menu: + + - **Delete only this module version:** Deletes only the version of the module you were viewing when you clicked **Delete module**. + - **Delete all versions for this provider for this module:** Deletes the entire module for a single provider. This action is important if you have modules with the same name but with different providers. For example, if you have module repos named `terraform-aws-appserver` and `terraform-azure-appserver`, the registry treats them as alternate providers of the same `appserver` module. + - **Delete all providers and versions for this module:** Deletes all modules with this name, even if they are from different providers. For example, this action deletes both `terraform-aws-appserver` and `terraform-azure-appserver`. + +5. Type the module name and click **Delete**. + +### Restoring a Deleted Module or Version + +Deletion is permanent, but there are ways to restore deleted modules and module versions. + +- To restore a deleted module, re-add it as a new module. +- To restore a deleted version, either delete the corresponding tag from your VCS and push a new tag with the same name, or delete the entire module from the registry and re-add it. + +## Sharing Modules Across Organizations + +HCP Terraform does not typically allow one organization's workspaces to use private modules from a different organization. This restriction is because HCP Terraform gives Terraform temporary credentials to access modules that are only valid for that workspace's organization. Although it is possible to mix modules from multiple organizations when you run Terraform on the command line, we strongly recommend against it. + +Instead, you can share modules across organizations by sharing the underlying VCS repository. Grant each organization access to the module's repository, and then add the module to each organization's registry. When you push tags to publish new module versions, both organizations update accordingly. + +Terraform Enterprise administrators can configure [module sharing](/terraform/enterprise/admin/application/registry-sharing) to allow organizations to use private modules from other organizations. + +## Generating Module Tests (Beta) + +You can generate and run generated tests for your module with [the `terraform test` command](/terraform/cli/commands/test). + +Before you can generate tests for a module, it must have at least one version published. Tests can only be generated once per module and are intended to be reviewed by the module's authors before being checked into version control and maintained with the rest of the module's content. If the module's configuration files exceed 128KB in total size, HCP Terraform will not be able to generate tests for that module. + +You must have [permission to manage registry modules](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) and [permission to manage module test generation](/terraform/enterprise/users-teams-organizations/permissions#manage-module-test-generation-beta) to generate tests. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-providers.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-providers.mdx new file mode 100644 index 0000000000..a7a1d6f811 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/publish-providers.mdx @@ -0,0 +1,266 @@ +--- +page_title: Publish private providers to the Terraform Enterprise private registry +description: >- + Use the Terraform Enterprise private registry to publish and share private + providers across your organization. +source: terraform-docs-common +--- + +# Publish private providers to the HCP Terraform private registry + +In addition to [curating public providers from the Terraform Registry](/terraform/enterprise/registry/add), you can publish private providers to an organization's HCP Terraform private registry. Once you have published a private provider through the API, members of your organization can search for it in the private registry UI and use it in configurations. + +## Requirements + +Review the following before publishing a new provider or provider version. + +### Permissions + +Users must be members of an organization to access its registry and private providers. In Terraform Enterprise, providers are also available to organizations that you configure to [share registry access](/terraform/enterprise/admin/application/registry-sharing). + +You must be a member of the [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) or a team with [Manage Private Registry permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) to publish and delete private providers from the private registry. + +### Release files + +You must publish at least one version of your provider that follows [semantic versioning format](http://semver.org). For each version, you must upload the `SHA256SUMS` file, `SHA256SUMS.sig` file, and one or more provider binaries. Using GoReleaser to [create a release on GitHub](/terraform/registry/providers/publishing#creating-a-github-release) or [create a release locally](/terraform/registry/providers/publishing#using-goreleaser-locally) generates these files automatically. The private registry does not have strict naming conventions, but we recommend using GoReleaser file naming schemes for consistency. + +Private providers do not currently support documentation. + +### Signed releases + +GPG signing is required for private providers, and you must upload the public key of the GPG keypair used to sign the release. Refer to [Preparing and Adding a Signing Key](/terraform/registry/providers/publishing#preparing-and-adding-a-signing-key) for more details. Unlike the public Terraform Registry, the private registry does not automatically upload new releases. You must manually add new provider versions and the associated release files. + +-> **Note**: If you are using the [provider API](/terraform/enterprise/api-docs/private-registry/providers) to upload an official HashiCorp public provider into your private registry, use [HashiCorp's public PGP key](https://www.hashicorp.com/.well-known/pgp-key.txt). You do not need to upload this public key, and it is automatically included in Terraform Enterprise version v202309-1 and newer. + +## Publishing a provider + +Before consumers can use a private provider, you must do the following: + +1. [Create the provider](#create-the-provider) +2. [Upload a GPG signing key](#add-your-public-key) +3. [Create at least one version](#create-a-version) +4. [Create at least one platform for that version](#create-a-provider-platform) +5. [Upload release files](#upload-provider-binary) + +### Create the provider + +Create a file named `provider.json` with the following contents. Replace `PROVIDER_NAME` with the name of your provider and replace `ORG_NAME` with the name of your organization. + +```json +{ + "data": { + "type": "registry-providers", + "attributes": { + "name": "PROVIDER_NAME", + "namespace": "ORG_NAME", + "registry-name": "private" + } + } +} +``` + +Use the [Create a Provider endpoint](/terraform/enterprise/api-docs/private-registry/providers#create-a-provider) to create the provider in HCP Terraform. Replace `TOKEN` in the `Authorization` header with your HCP Terraform API token and replace `ORG_NAME` with the name of your organization. + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @provider.json \ + https://app.terraform.io/api/v2/organizations/ORG_NAME/registry-providers +``` + +The provider is now available in your organization’s HCP Terraform private registry, but consumers cannot use it until you add a version and a platform. + +To create a version and a platform, you need the following resources: + +- The Provider binaries +- A public GPG signing key +- A `SHA256SUMS` file +- A `SHA256SUMS.sig` file from at least one release + +### Add your public key + +-> **Note**: If you are uploading an official HashiCorp public provider into your private registry, skip this step and instead use [HashiCorp's public PGP key](https://www.hashicorp.com/.well-known/pgp-key.txt) in the the [create a version](#create-a-version) step. The key ID for HashiCorp's public ID is `34365D9472D7468F`, and you can verify the ID by [importing the public key locally](/terraform/tutorials/cli/verify-archive#download-and-import-hashicorp-s-public-key). + +Create a file named `key.json` with the following contents. Replace `ORG_NAME` with the name of your organization, and input your public key in an RSA or DSA format in the `ascii-armor` field. + +```hcl +{ + "data": { + "type": "gpg-keys", + "attributes": { + "namespace": "ORG_NAME", + "ascii-armor": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINB...=txfz\n-----END PGP PUBLIC KEY BLOCK-----\n" + } } +} +``` + +Use the [Add a GPG key endpoint](/terraform/enterprise/api-docs/private-registry/gpg-keys#add-a-gpg-key) to add the public key that matches the signing key for the release. Replace `TOKEN` in the `Authorization` header with your HCP Terraform API token. + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @key.json \ + https://app.terraform.io/api/registry/private/v2/gpg-keys +``` + +The response contains a `key-id` that you will use to create a provider version. + +```json +"key-id": "34365D9472D7468F" +``` + +### Create a version + +Create a file named `version.json` with the following contents. Replace the value of the `version` field with the version of your provider, and replace the `key-id` field with the id of the GPG key that you created in the [Add your public key](#add-your-public-key) step. If you are uploading an official HashiCorp public provider, use the value `34365D9472D7468F` for your `key-id`. + +```hcl +{ + "data": { + "type": "registry-provider-versions", + "attributes": { + "version": "5.14.0", + "key-id": "34365D9472D7468F", + "protocols": ["5.0"] + } + } +} +``` + +Use the [Create a Provider Version endpoint](/terraform/enterprise/api-docs/private-registry/provider-versions-platforms#create-a-provider-version) to create a version for your provider. Replace `TOKEN` in the `Authorization` header with your HCP Terraform API token, and replace both instances of `ORG_NAME` with the name of your organization. If are not using the `aws` provider, then replace `aws` with your provider's name. + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @version.json \ + https://app.terraform.io/api/v2/organizations/ORG_NAME/registry-providers/private/ORG_NAME/aws/versions +``` + + The response includes URL links that you will use to upload the `SHA256SUMS` and `SHA256.sig` files. + +```json +"links": { + "shasums-upload": "https://archivist.terraform.io/v1/object/dmF1b64hd73ghd63", + "shasums-sig-upload": "https://archivist.terraform.io/v1/object/dmF1b37dj37dh33d" + } +``` + +### Upload signatures + +Upload the `SHA256SUMS` and `SHA256SUMS.sig` files to the URLs [returned in the previous step](#create-a-version). The example command below uploads the files from your local machine. First upload the `SHA256SUMS` file to the URL returned in the `shasums-upload` field. + +```shell-session +$ curl \ + -T terraform-provider-aws_5.14.0_SHA256SUMS \ + https://archivist.terraform.io/v1/object/dmF1b64hd73ghd63... +``` + +Next, upload the `SHA256SUMS.sig` file to the URL returned in the `shasums-sig-upload` field. + +```shell-session +$ curl \ + -T terraform-provider-aws_5.14.0_SHA256SUMS.72D7468F.sig \ + https://archivist.terraform.io/v1/object/dmF1b37dj37dh33d... +``` + +### Create a provider platform + +First, calculate the SHA256 hash of the provider binary that you intend to upload. This should match the SHA256 hash of the file listed in the `SHA256SUMS` file. + +```shell-session +$ shasum -a 256 terraform-provider-aws_5.14.0_linux_amd64.zip +f1d83b3e5a29bae471f9841a4e0153eac5bccedbdece369e2f6186e9044db64e terraform-provider-aws_5.14.0_linux_amd64.zip +``` + +Next, create a file named `platform.json`. Replace the `os`, `arch`, `filename`, and `shasum` fields with the values that match the provider you intend to upload. + +```json +{ + "data": { + "type": "registry-provider-version-platforms", + "attributes": { + "os": "linux", + "arch": "amd64", + "shasum": "f1d83b3e5a29bae471f9841a4e0153eac5bccedbdece369e2f6186e9044db64e", + "filename": "terraform-provider-aws_5.14.0_linux_amd64.zip" + } + } +} +``` + +Use the [Create a Provider Platform endpoint](/terraform/enterprise/api-docs/private-registry/provider-versions-platforms#create-a-provider-platform) to create a platform for the version. Platforms are binaries that allow the provider to run on a particular operating system and architecture combination (e.g., Linux and AMD64). Replace `TOKEN` in the `Authorization` header with your HCP Terraform API token and replace both instances of `ORG_NAME` with the name of your organization. + +```shell-session +$ curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @platform.json \ + https://app.terraform.io/api/v2/organizations/ORG_NAME/registry-providers/private/ORG_NAME/aws/versions/5.14.0/platforms +``` + +The response includes a `provider-binary-upload` URL that you will use to upload the binary file for the platform. + +```json +"links": { + "provider-binary-upload": "https://archivist.terraform.io/v1/object/dmF1b45c367djh45nj78" + } +``` + +### Upload provider binary + +Upload the platform binary file to the `provider-binary-upload` URL returned in the [previous step](#create-a-version). The example command below uploads the binary from your local machine. + +```shell-session +$ curl -T local-example/terraform-provider-random_5.14.0_linux_amd64.zip + https://archivist.terraform.io/v1/object/dmF1b45c367djh45nj78 +``` + +The version is available in the HCP Terraform user interface. Consumers can now begin using this provider version in configurations. You can repeat these steps starting from [Create a provider platform](#create-a-provider-platform) to add additional platform binaries for the release. + +## Checking Release Files + +Consumers cannot use a private provider version until you upload all required [release files](#release-files). To determine whether these files have been uploaded: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to publish a private provider. +2. Click **Registry** and click the private provider to go to its details page. +3. Use the version menu to navigate to the version you want to check. The UI shows a warning banner for versions that do not have all required release files. +4. Open the **Manage Provider** menu and select **Show release files**. The **Release Files** page appears containing lists of uploaded and missing files for the current version. + +## Managing private providers + +Use the HCP Terraform API to create, read, update, and delete the following: + +- [GPG keys](/terraform/enterprise/api-docs/private-registry/gpg-keys) +- [Private providers](/terraform/enterprise/api-docs/private-registry/providers) +- [Provider versions and platforms](/terraform/enterprise/api-docs/private-registry/provider-versions-platforms) + +## Deleting private providers and versions + +In addition to the [Registry Providers API](/terraform/enterprise/api-docs/private-registry/providers#delete-a-provider), you can delete providers and provider versions through the HCP Terraform UI. To delete providers and versions in the UI: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization whose private registry you want to delete a provider or provider version from. + +2. Click **Registry** and click the private provider to go to its details page. + +3. If you want to delete a single version, use the **Versions** menu to select it. + +4. Open the **Manage Provider** menu and select **Delete Provider**. The **Delete Provider from Organization** box appears. + +5. Select an action from the menu: + + - **Delete only this provider version:** Deletes only the version of the provider you are currently viewing. + - **Delete all versions for this provider:** Deletes the entire provider and all associated versions. + +6. Type the provider name into the confirmation box and click **Delete**. + +The provider version or entire provider has been deleted from this organization's private registry and its data has been removed. Consumers will no longer be able to reference it in configurations. + +### Restoring a deleted provider + +Deletion is permanent, but you can restore a deleted private provider by re-adding it to your organization and recreating its versions and platforms. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/test.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/test.mdx new file mode 100644 index 0000000000..377e7f3402 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/test.mdx @@ -0,0 +1,69 @@ +--- +page_title: Test private modules in the Terraform Enterprise private registry +description: Use the Terraform Enterprise private registry to run module tests. +source: terraform-docs-common +--- + +# Test private modules in the HCP Terraform private registry + +You can configure HCP Terraform to automatically run tests for modules in your private registry. When enabled, HCP Terraform will run tests for every commit to the designated branch. This lets you verify that it is safe to publish new module versions. + +## Enable testing + +If your module uses the [branch-based publishing workflow](/terraform/enterprise/registry/publish-modules#branch-based-publishing) and its source code includes [tests](/terraform/language/v1.6.x/tests), you can enable testing at any time. + +To enable testing when you publish your module: + +- Choose the **Branch** module publishing type +- Assign a branch and a module version +- Under testing, click the **Enable testing for module** checkbox +- Click **Publish module** + +To enable testing after you publishing your branch-based module: + +- Navigate to the module overview screen +- Click **Configure Tests** to open the **Tests Settings** screen +- Click **Enable testing for module** + +## Run tests remotely from the CLI + +After publishing and enabling testing for your module, you can use the Terraform CLI locally to trigger remotely-executed tests in HCP Terraform. This lets you test your module changes using the credentials configured in HCP Terraform without committing your changes to version control. + +To run your tests remotely, use the `-cloud-run` flag with the path to your module in your private registry. + +```shell +terraform test -cloud-run=app.terraform.io/:ORG/:MODULE_NAME/:PROVIDER +``` + +## Configure environment variables + +You can define test-specific environment variables that HCP Terraform will use for testing. If your tests provision infrastructure, you must configure provider credentials for the module. + +To add environment variables to your module's tests: + +1. On the module overview screen, click **Configure Tests**. +2. In the **Variables** section on the **Tests Settings** screen, click **+ Add variable**. +3. Provide a **Key** and **Value** for your environment variable, and if you want to protect the variable's value, click the **Sensitive** checkbox. `TF_VAR_x` variables of a string type that are not defined in a config must be wrapped in double-quotes. +4. Click **Add variable** to save it. + +<!-- BEGIN: TFC:only name:generate-module-tests --> + +## Generated module tests + +@include 'tfc-package-callouts/tests.mdx' + +HCP Terraform can generate [test files](/terraform/language/tests) for any private module in your registry. You can only generate tests one time per module. + +To generate tests for your module: + +1. On the module overview screen, click **Generate tests**. +2. Click **Confirm**. It will take a few minutes to generate your module tests. +3. HCP Terraform displays generated configuration. To download all of the test files, click **Download generated tests**. +4. Create a `tests` directory in your configuration. +5. Unzip the downloaded files into the new `tests` directory. + +Generated test files remain available on the module overview page for later retrieval. Click **View test files** to view and download any previously generated tests. + +Organization owners can control this feature on the organization's [General Settings](/terraform/enterprise/users-teams-organizations/organizations#organization-settings) page. + +<!-- END: TFC:only name:generate-module-tests --> diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/registry/using.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/registry/using.mdx new file mode 100644 index 0000000000..98542f2bd7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/registry/using.mdx @@ -0,0 +1,149 @@ +--- +page_title: Use providers and modules from the Terraform Enterprise private registry +description: >- + Learn how to use providers and modules from the Terraform Enterprise private + registry in your Terraform configuration. +source: terraform-docs-common +--- + +# Use providers and modules from the HCP Terraform private registry + +All users in an organization can view the HCP Terraform private registry and use the available providers and modules. A private registry has some key requirements and differences from the [public Terraform Registry](/terraform/registry): + +- **Location:** Search for providers, modules, and usage examples in the HCP Terraform private registry UI. +- **Provider and Module block `source` argument:** Private providers and modules use a [different format](/terraform/enterprise/registry/using#using-private-providers-and-modules-in-configurations). +- **Terraform version:** HCP Terraform workspaces using version 0.11 and higher can automatically access your private modules during Terraform runs, and workspaces using version 0.13 and higher can also automatically access private providers. +- **Authentication:** If you run Terraform on the command line, you must [authenticate](/terraform/enterprise/registry/using#authentication) to HCP Terraform or your instance to use providers and modules in your organization’s private registry. + +HCP Terraform supports using modules in written configuration or through the [no-code provisioning workflow](/terraform/enterprise/no-code-provisioning/provisioning). + +## Finding Providers and Modules + +To find available providers and modules, click the **Registry** button. The **Registry** page appears. + +Click **Providers** and **Modules** to toggle back and forth between lists of available providers and modules in the private registry. You can also use the search field to filter for titles that contain a specific keyword. The search does not include READMEs or resource details. + +### Shared Providers and Modules - Terraform Enterprise + +On Terraform Enterprise, your [registry sharing](/terraform/enterprise/admin/application/registry-sharing) configuration may grant you access to another organization's providers and modules. Providers and modules that are shared with your current organization have a **Shared** badge in the private registry (below). Providers and modules in your current organization that are shared with other organizations have a badge that says **Sharing**. + +### Viewing Provider and Module Details and Versions + +Click a provider or module to view its details page. Use the **Versions** menu in the upper right to switch between the available versions, and use the **Readme**, **Inputs**, **Outputs**, **Dependencies**, and **Resources** tabs to view more information about the selected version. + +### Viewing Nested Modules and Examples + +Use the **Submodules** menu to navigate to the detail pages for any nested modules. Use the **Examples** menu to navigate to the detail pages for any available example modules. + +## Provisioning Infrastructure from No-Code Ready Modules + +You can use modules marked **No-Code Ready** to create a new workspace and automatically provision the module's resources without writing any Terraform configuration. Refer to [Provisioning No-Code Infrastructure](/terraform/enterprise/no-code-provisioning/provisioning) for details. + +## Using Public Providers and Modules in Configurations + +> **Hands-on:** Try the [Use Modules from the Registry](/terraform/tutorials/modules/module-use) tutorial. + +The syntax for public providers in a private registry is the same as for providers that you use directly from the public Terraform Registry. The syntax for the [provider block](/terraform/language/providers/configuration#provider-configuration-1) `source` argument is `<NAMESPACE>/<PROVIDER_NAME>`. + +```hcl +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "4.0.0" + } + } +``` + +The syntax for referencing public modules in the [module block](/terraform/language/modules/syntax) `source` argument is `<NAMESPACE>/<MODULE_NAME>/<PROVIDER_NAME>`. + +```hcl +module "subnets" { + source = "hashicorp/subnets/cidr" + version = "1.0.0" +} +``` + +## Using Private Providers and Modules in Configurations + +The syntax for referencing private providers in the [provider block](/terraform/language/providers/configuration#provider-configuration-1) `source` argument is `<HOSTNAME>/<NAMESPACE>/<PROVIDER_NAME>`. For the SaaS version of HCP Terraform, the hostname is `app.terraform.io`. + +```hcl +terraform { + required_providers { + random = { + source = "app.terraform.io/demo-custom-provider/random" + version = "1.1.0" + } + } +``` + +The syntax for referencing private modules in the [module block](/terraform/language/modules/syntax) `source` argument is `<HOSTNAME>/<ORGANIZATION>/<MODULE_NAME>/<PROVIDER_NAME>`. + +- **Hostname:** For the SaaS version of HCP Terraform, use `app.terraform.io`. In Terraform Enterprise, use the hostname for your instance or the [generic hostname](/terraform/enterprise/registry/using#generic-hostname-terraform-enterprise). +- **Organization:** If you are using a shared module with Terraform Enterprise, the module's organization name may be different from your organization's name. Check the source string at the top of the module's registry page to find the proper organization name. + +```hcl +module "vpc" { + source = "app.terraform.io/example_corp/vpc/aws" + version = "1.0.4" +} +``` + +### Generic Hostname - HCP Terraform and Terraform Enterprise + +You can use the generic hostname `localterraform.com` in module sources to reference modules without modifying the HCP Terraform or Terraform Enterprise instance. When you run Terraform, it automatically requests any `localterraform.com` modules from the instance it runs on. + +```hcl +module "vpc" { + source = "localterraform.com/example_corp/vpc/aws" + version = "1.0.4" +} +``` + +~> **Important**: CLI-driven workflows require Terraform CLI v1.4.0 or above. + +To test configurations on a developer workstation without the remote backend configured, you must replace the generic hostname with a literal hostname in all module sources and then change them back before committing to VCS. We are working on making this workflow smoother, but we only recommend `localterraform.com` for large organizations that use multiple Terraform Enterprise instances. + +### Provider and Module Availability + +A workspace can only use private providers and modules from its own organization's registry. When using providers or modules from multiple organizations in the same configuration, we recommend: + +- **HCP Terraform:** [Add providers and modules to the registry](/terraform/enterprise/registry/publish-modules#sharing-modules-across-organizations) for each organization that requires access. + +- **Terraform Enterprise:** Check your site's [registry sharing](/terraform/enterprise/admin/application/registry-sharing) configuration. Workspaces can also use private providers and modules from organizations that are sharing with the workspace's organization. + +## Running Configurations with Private Providers and Modules + +### Version Requirements + +Terraform version 0.11 or later is required to use private modules in HCP Terraform workspaces and to use the CLI to apply configurations with private modules. Terraform version 0.13 and later is required to use private providers in HCP Terraform workspaces and apply configurations with private providers. + +### Authentication + +To authenticate with HCP Terraform, you can use either a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or a [team token](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens). The type of token you choose may grant different permissions. + +- **User Token**: Allows you to access providers and modules from any organization in which you are a member. You are a member of an organization if you belong to any team in that organization. You can also access modules from any organization that is sharing modules with any of your organizations. + + -> **Note:** When SAML SSO is enabled, there is a [session timeout for user API tokens](/terraform/enterprise/saml/login#api-token-expiration), requiring you to periodically re-authenticate through the web UI. Expired tokens produce a _401 Unauthorized_ error. A SAML SSO account with [IsServiceAccount](/terraform/enterprise/saml/attributes#isserviceaccount) is treated as a service account and will not have the session timeout. + +- **Team Token**: Allows you to access the private registry of that team's organization and the registries from any other organizations that have configured sharing. + +_Permissions Example_ + +A user belongs to three organizations (1, 2, and 3), and organizations 1 and 2 share access with each other. In this case, the user's token gives them access to the private registries for all of the organizations they belong to: 1, 2, and 3. However, a team token from a team in organization 1 only gives the user access to the private registry in organizations 1 and 2. + +#### Configure Authentication + +To configure authentication to HCP Terraform or your Terraform Enterprise instance, you can: + +- (Terraform 0.12.21 or later) Use the [`terraform login`](/terraform/cli/commands/login) command to obtain and save a user API token. +- Create a token and [manually configure credentials in the CLI config file][cli-credentials]. + +Make sure the hostname matches the hostname you use in provider and module sources because if the same HCP Terraform server is available at two hostnames, Terraform will not know that they reference the same server. To support multiple hostnames for provider and module sources, use the `terraform login` command multiple times and specify a different hostname each time. + +[user-token]: /terraform/enterprise/users-teams-organizations/users#api-tokens + +[cli-credentials]: /terraform/cli/config/config-file#credentials + +[permissions-citation]: #intentionally-unused---keep-for-maintainers diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/api.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/api.mdx new file mode 100644 index 0000000000..eaf923fce2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/api.mdx @@ -0,0 +1,197 @@ +--- +page_title: The API-driven run workflow in Terraform Enterprise +description: >- + Use Terraform Enterprise's API-driven run workflow to enable external tools to + upload Terraform configurations and trigger new runs. +source: terraform-docs-common +--- + +# The API-driven run workflow + +HCP Terraform has three workflows for managing Terraform runs. + +- The [UI/VCS-driven run workflow](/terraform/enterprise/run/ui), which is the primary mode of operation. +- The API-driven run workflow described below, which is more flexible but requires you to create some tooling. +- The [CLI-driven run workflow](/terraform/enterprise/run/cli), which uses Terraform's standard CLI tools to execute runs in HCP Terraform. + +## Summary + +In the API-driven workflow, workspaces are not directly associated with a VCS repo, and runs are not driven by webhooks on your VCS provider. + +Instead, one of your organization's other tools is in charge of deciding when configuration has changed and a run should occur. Usually this is something like a CI system, or something else capable of monitoring changes to your Terraform code and performing actions in response. + +Once your other tooling has decided a run should occur, it must make a series of calls to HCP Terraform's `runs` and `configuration-versions` APIs to upload configuration files and perform a run with them. For the exact series of API calls, see the [pushing a new configuration version](#pushing-a-new-configuration-version) section. + +The most significant difference in this workflow is that HCP Terraform _does not_ fetch configuration files from version control. Instead, your own tooling must upload the configurations as a `.tar.gz` file. This allows you to work with configurations from unsupported version control systems, automatically generate Terraform configurations from some other source of data, or build a variety of other integrations. + +~> **Important:** The script below is provided to illustrate the run process, and is not intended for production use. If you want to drive HCP Terraform runs from the command line, please see the [CLI-driven run workflow](/terraform/enterprise/run/cli). + +## Pushing a New Configuration Version + +Pushing a new configuration to an existing workspace is a multi-step process. This section walks through each step in detail, using an example bash script to illustrate. + +You need queue plans permission to create new configuration versions for the workspace. Refer to the [permissions](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) documentation for more details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### 1. Define Variables + +To perform an upload, a few user parameters must be set: + +- **path_to_content_directory** is the folder with the terraform configuration. There must be at least one `.tf` file in the root of this path. +- **organization** is the organization name (not ID) for your HCP Terraform organization. +- **workspace** is the workspace name (not ID) in the HCP Terraform organization. +- **$TOKEN** is the API Token used for [authenticating with the HCP Terraform API](/terraform/enterprise/api-docs#authentication). + +This script extracts the `path_to_content_directory`, `organization`, and `workspace` from command line arguments, and expects the `$TOKEN` as an environment variable. + +```bash +#!/bin/bash + +if [ -z "$1" ] || [ -z "$2" ]; then + echo "Usage: $0 <path_to_content_directory> <organization>/<workspace>" + exit 0 +fi + +CONTENT_DIRECTORY="$1" +ORG_NAME="$(cut -d'/' -f1 <<<"$2")" +WORKSPACE_NAME="$(cut -d'/' -f2 <<<"$2")" +``` + +### 2. Create the File for Upload + +The [configuration version API](/terraform/enterprise/api-docs/configuration-versions) requires a `tar.gz` file to use the configuration version for a run, so you must package the directory containing the Terraform configuration into a `tar.gz` file. + +~> **Important:** The configuration directory must be the root of the tar file, with no intermediate directories. In other words, when the tar file is extracted the result must be paths like `./main.tf` rather than `./terraform-appserver/main.tf`. + +```bash +UPLOAD_FILE_NAME="./content-$(date +%s).tar.gz" +tar -zcvf "$UPLOAD_FILE_NAME" -C "$CONTENT_DIRECTORY" . +``` + +### 3. Look Up the Workspace ID + +The first step identified the organization name and the workspace name; however, the [configuration version API](/terraform/enterprise/api-docs/configuration-versions) expects the workspace ID. As such, the ID has to be looked up. If the workspace ID is already known, this step can be skipped. This step uses the [`jq` tool](https://stedolan.github.io/jq/) to parse the JSON output and extract the ID value into the `WORKSPACE_ID` variable. + +```bash +WORKSPACE_ID=($(curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/$ORG_NAME/workspaces/$WORKSPACE_NAME \ + | jq -r '.data.id')) +``` + +### 4. Create a New Configuration Version + +Before uploading the configuration files, you must create a `configuration-version` to associate uploaded content with the workspace. This API call performs two tasks: it creates the new configuration version and it extracts the upload URL to be used in the next step. + +```bash +echo '{"data":{"type":"configuration-versions"}}' > ./create_config_version.json + +UPLOAD_URL=($(curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @create_config_version.json \ + https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/configuration-versions \ + | jq -r '.data.attributes."upload-url"')) +``` + +### 5. Upload the Configuration Content File + +Next, upload the configuration version `tar.gz` file to the upload URL extracted from the previous step. If a file is not uploaded, the configuration version will not be usable, since it will have no Terraform configuration files. + +HCP Terraform automatically creates a new run with a plan once the new file is uploaded. If the workspace is configured to auto-apply, it will also apply if the plan succeeds; otherwise, an apply can be triggered via the [Run Apply API](/terraform/enterprise/api-docs/run#apply). If the API token used for the upload lacks permission to apply runs for the workspace, the run can't be auto-applied. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +```bash +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @"$UPLOAD_FILE_NAME" \ + $UPLOAD_URL +``` + +### 6. Delete Temporary Files + +In the previous steps a few files were created; they are no longer needed, so they should be deleted. + +```bash +rm "$UPLOAD_FILE_NAME" +rm ./create_config_version.json +``` + +### Complete Script + +Combine all of the code blocks into a single file, `./terraform-enterprise-push.sh` and give execution permission to create a combined bash script to perform all of the operations. + +```shell +chmod +x ./terraform-enterprise-push.sh +./terraform-enterprise-push.sh ./content my-organization/my-workspace +``` + +**Note**: This script does not have error handling, so for a more robust script consider adding error checking. + +**`./terraform-enterprise-push.sh`:** + +```bash +#!/bin/bash + +# Complete script for API-driven runs. + +# 1. Define Variables + +if [ -z "$1" ] || [ -z "$2" ]; then + echo "Usage: $0 <path_to_content_directory> <organization>/<workspace>" + exit 0 +fi + +CONTENT_DIRECTORY="$1" +ORG_NAME="$(cut -d'/' -f1 <<<"$2")" +WORKSPACE_NAME="$(cut -d'/' -f2 <<<"$2")" + +# 2. Create the File for Upload + +UPLOAD_FILE_NAME="./content-$(date +%s).tar.gz" +tar -zcvf "$UPLOAD_FILE_NAME" -C "$CONTENT_DIRECTORY" . + +# 3. Look Up the Workspace ID + +WORKSPACE_ID=($(curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + https://app.terraform.io/api/v2/organizations/$ORG_NAME/workspaces/$WORKSPACE_NAME \ + | jq -r '.data.id')) + +# 4. Create a New Configuration Version + +echo '{"data":{"type":"configuration-versions"}}' > ./create_config_version.json + +UPLOAD_URL=($(curl \ + --header "Authorization: Bearer $TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + --request POST \ + --data @create_config_version.json \ + https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/configuration-versions \ + | jq -r '.data.attributes."upload-url"')) + +# 5. Upload the Configuration Content File + +curl \ + --header "Content-Type: application/octet-stream" \ + --request PUT \ + --data-binary @"$UPLOAD_FILE_NAME" \ + $UPLOAD_URL + +# 6. Delete Temporary Files + +rm "$UPLOAD_FILE_NAME" +rm ./create_config_version.json +``` + +## Advanced Use Cases + +For advanced use cases refer to the [Terraform Enterprise Automation Script](https://github.com/hashicorp/terraform-guides/tree/master/operations/automation-script) repository for automating interactions with HCP Terraform, including the creation of a workspace, uploading code, setting variables, and triggering the `plan` and `apply` operations. + +In addition to uploading configurations and starting runs, you can use HCP Terraform's APIs to create and modify workspaces, edit variable values, and more. See the [API documentation](/terraform/enterprise/api-docs) for more details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/cli.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/cli.mdx new file mode 100644 index 0000000000..87c74d475f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/cli.mdx @@ -0,0 +1,299 @@ +--- +page_title: The CLI-driven remote run workflow for Terraform Enterprise +description: >- + Configure the Terraform CLI to trigger remote runs in Terraform Enterprise + from your terminal. +source: terraform-docs-common +--- + +[private]: /terraform/enterprise/registry + +[speculative plan]: /terraform/enterprise/run/remote-operations#speculative-plans + +[tfe-provider]: https://registry.terraform.io/providers/hashicorp/tfe/latest/docs + +# The CLI-driven remote run workflow + +> **Hands-on:** Try the [Log in to HCP Terraform from the CLI](/terraform/tutorials/0-13/cloud-login) tutorial. + +HCP Terraform has three workflows for managing Terraform runs. + +- The [UI/VCS-driven run workflow](/terraform/enterprise/run/ui), which is the primary mode of operation. +- The [API-driven run workflow](/terraform/enterprise/run/api), which is more flexible but requires you to create some tooling. +- The CLI-driven run workflow described below, which uses Terraform's standard CLI tools to execute runs in HCP Terraform. + +## Summary + +The [CLI integration](/terraform/cli/cloud) brings HCP Terraform's collaboration features into the familiar Terraform CLI workflow. It offers the best of both worlds to developers who are already comfortable with using the Terraform CLI, and it can work with existing CI/CD pipelines. + +You can start runs with the standard `terraform plan` and `terraform apply` commands and then watch the progress of the run from your terminal. These runs execute remotely in HCP Terraform, use variables from the appropriate workspace, enforce any applicable [Sentinel or OPA policies](/terraform/enterprise/policy-enforcement), and can access HCP Terraform's [private registry][private] and remote state inputs. + +HCP Terraform offers a few types of CLI-driven runs, to support different stages of your workflow: + +- `terraform plan` starts a [speculative plan][] in an HCP Terraform workspace, using configuration files from a local directory. You can quickly check the results of edits (including compliance with Sentinel policies) without needing to copy sensitive variables to your local machine. + + Speculative plans work with all workspaces, and can co-exist with the [VCS-driven workflow](/terraform/enterprise/run/ui). + +- `terraform apply` starts a standard plan and apply in an HCP Terraform workspace, using configuration files from a local directory. + + Remote `terraform apply` is for workspaces without a linked VCS repository. It replaces the VCS-driven workflow with a more traditional CLI workflow. + +- `terraform plan -out <FILE>` and `terraform apply <FILE>` perform a two-part [saved plan run](/terraform/enterprise/run/modes-and-options/#saved-plans) in an HCP Terraform workspace, using configuration files from a local directory. The first command performs and saves the plan, and the second command applies it. You can use `terraform show <FILE>` to inspect a saved plan. + + Like remote `terraform apply`, remote saved plans are for workspaces without a linked VCS repository. + + Saved plans require at least Terraform CLI v1.6.0. + +To supplement these remote operations, you can also use the optional [Terraform Enterprise Provider][tfe-provider], which interacts with the HCP Terraform-supported resources. This provider is useful for editing variables and workspace settings through the Terraform CLI. + +## Configuration + +To enable the CLI-driven workflow, you must: + +1. Create an account or sign in to [HCP Terraform](https://app.terraform.io/). + +2. Run `terraform login` to authenticate with HCP Terraform. Alternatively, you can manually configure credentials in the CLI config file or through environment variables. Refer to [CLI Configuration](/terraform/cli/config/config-file#environment-variable-credentials) for details. + +3. Add the `cloud` block to your Terraform configuration. You can define its arguments directly in your configuration file or supply them through environment variables, which can be useful for [non-interactive workflows](#non-interactive-workflows). Refer to [Using HCP Terraform](/terraform/cli/cloud) for configuration details. + + The following example shows how to map CLI workspaces to HCP Terraform workspaces with a specific tag. + + terraform { + cloud { + organization = "my-org" + workspaces { + tags = ["networking"] + } + } + } + + -> **Note:** The `cloud` block is available in Terraform v1.1 and later. Previous versions can use the [`remote` backend](/terraform/language/settings/backends/remote) to configure the CLI workflow and migrate state. + +4. Run `terraform init`. + + $ terraform init + + Initializing HCP Terraform... + + Initializing provider plugins... + - Reusing previous version of hashicorp/random from the dependency lock file + - Using previously-installed hashicorp/random v3.0.1 + + HCP Terraform has been successfully initialized! + + You may now begin working with HCP Terraform. Try running "terraform plan" + to see any changes that are required for your infrastructure. + + If you ever set or change modules or Terraform Settings, + run "terraform init" again to reinitialize your working directory. + +### Implicit Workspace Creation + +If you configure the `cloud` block to use a workspace that doesn't yet exist in your organization, HCP Terraform will create a new workspace with that name when you run `terraform init`. The output of `terraform init` will inform you when this happens. + +Automatically created workspaces might not be immediately ready to use, so use HCP Terraform's UI to check a workspace's settings and data before performing any runs. In particular, note that: + +- No Terraform variables or environment variables are created by default, unless your organization has configured one or more [global variable sets](/terraform/enterprise/workspaces/variables#scope). HCP Terraform will use `*.auto.tfvars` files if they are present, but you will usually still need to set some workspace-specific variables. +- The execution mode defaults to "Remote," so that runs occur within HCP Terraform's infrastructure instead of on your workstation. +- New workspaces are not automatically connected to a VCS repository and do not have a working directory specified. +- A new workspace's Terraform version defaults to the most recent release of Terraform at the time the workspace was created. + +### Implicit Project Creation + +If you configure the [`workspaces` block](/terraform/cli/cloud/settings#workspaces) to use a [project](/terraform/cli/cloud/settings#project) that does not yet exist in your organization, HCP Terraform will attempt to create a new project with that name when you run `terraform init` and notify you in the command output. + +If you specify both the `project` argument and [`TF_CLOUD_PROJECT`](/terraform/cli/cloud/settings#tf_cloud_project) environment variable, the `project` argument takes precedence. + +## Variables in CLI-Driven Runs + +Remote runs in HCP Terraform use: + +- Run-specific variables set through the command line or in your local environment. Terraform can use shell environment variables prefixed with `TF_VAR_` as input variables for the run, but you must still set all required environment variables, like provider credentials, inside the workspace. +- Workspace-specific Terraform and environment variables set in the workspace. +- Any variable sets applied globally, on the project containing the workspace, or on the workspace itself. +- Terraform variables from any `*.auto.tfvars` files included in the configuration. + +Refer to [Variables](/terraform/enterprise/workspaces/variables) for more details about variable types, variable scopes, variable precedence, and how to set run-specific variables through the command line. + +## Remote Working Directories + +If you manage your Terraform configurations in self-contained repositories, the remote working directory always has the same content as the local working directory. + +If you use a combined repository and [specify a working directory on workspaces](/terraform/enterprise/workspaces/settings#terraform-working-directory), you can run Terraform from either the real working directory or from the root of the combined configuration directory. In both cases, Terraform will upload the entire combined configuration directory. + +## Excluding Files from Upload + +-> **Version note:** `.terraformignore` support was added in Terraform 0.12.11. + +CLI-driven runs upload an archive of your configuration directory +to HCP Terraform. If the directory contains files you want to exclude from upload, +you can do so by defining a [`.terraformignore` file in your configuration directory](/terraform/cli/cloud/settings). + +## Remote Speculative Plans + +You can run speculative plans in any workspace where you have [permission to queue plans](/terraform/enterprise/users-teams-organizations/permissions). Speculative plans use the configuration code from the local working directory, but will use variable values from the specified workspace. + +To run a [speculative plan][] on your configuration, use the `terraform plan` command. The plan will run in HCP Terraform, and the logs will stream back to the command line along with a URL to view the plan in the HCP Terraform UI. + + $ terraform plan + + Running plan in HCP Terraform. Output will stream here. Pressing Ctrl-C + will stop streaming the logs, but will not stop the plan running remotely. + + Preparing the remote plan... + + To view this run in a browser, visit: + https://app.terraform.io/app/hashicorp-learn/docs-workspace/runs/run-cfh2trDbvMU2Rkf1 + + Waiting for the plan to start... + + [...] + + Plan: 1 to add, 0 to change, 0 to destroy. + + Changes to Outputs: + + pet_name = (known after apply) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Remote Applies + +In workspaces that are not connected to a VCS repository, users with [permission to apply runs](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) can use the CLI to trigger remote applies. Remote applies use the configuration code from the local working directory, but use the variable values from the specified workspace. + +~> **Note:** You cannot run remote applies in workspaces that are linked to a VCS repository, since the repository serves as the workspace’s source of truth. To apply changes in a VCS-linked workspace, merge your changes to the designated branch. + +When you are ready to apply configuration changes, use the `terraform apply` command. HCP Terraform will plan your changes, and the command line will prompt you for approval before applying them. + + $ terraform apply + + Running apply in HCP Terraform. Output will stream here. Pressing Ctrl-C + will cancel the remote apply if it's still pending. If the apply started it + will stop streaming the logs, but will not stop the apply running remotely. + + Preparing the remote apply... + + To view this run in a browser, visit: + https://app.terraform.io/app/hashicorp-learn/docs-workspace/runs/run-Rcc12TkNW1PDa7GH + + Waiting for the plan to start... + + [...] + + Plan: 1 to add, 0 to change, 0 to destroy. + + Changes to Outputs: + + pet_name = (known after apply) + + Do you want to perform these actions in workspace "docs-workspace"? + Terraform will perform the actions described above. + Only 'yes' will be accepted to approve. + + Enter a value: yes + + [...] + + Apply complete! Resources: 1 added, 0 changed, 0 destroyed. + +### Non-Interactive Workflows + +> **Hands On:** Try the [Deploy Infrastructure with HCP Terraform and CircleCI](/terraform/tutorials/automation/circle-ci) tutorial. + +External systems cannot run the traditional apply workflow because Terraform requires console input from the user to approve plans. We recommend using the [API-driven Run Workflow](/terraform/enterprise/run/api) for non-interactive workflows when possible. + +If you prefer to use the CLI in a non-interactive environment, we recommend first running a [speculative plan](/terraform/enterprise/run/remote-operations#speculative-plans) to preview the changes Terraform will make to your infrastructure. Then, use one of the following approaches with the `-auto-approve` flag based on the [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) of your workspace. The [`-auto-approve`](/terraform/cli/commands/apply#auto-approve) flag skips prompting you to approve the plan. + +- **Local Execution:** Save the approved speculative plan and then run `terraform apply -auto-approve` with the saved plan. +- **Remote Execution:** HCP Terraform does not support uploading saved plans for remote execution, so we recommend running `terraform apply -auto-approve` immediately after approving the speculative plan to prevent the plan from becoming stale. + + !> **Warning:** Remote execution with non-interactive workflows requires auto-approved deployments. Minimize the risk of unpredictable infrastructure changes and configuration drift by making sure that no one can change your infrastructure outside of your automated build pipeline. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Remote Saved Plans + +-> **Version note:** Saved plans require at least Terraform CLI v1.6.0. + +In workspaces that support `terraform apply`, you also have the option of performing the plan and apply as separate steps, using the standard variations of the relevant Terraform commands: + +- `terraform plan -out <FILE>` performs and saves a plan. +- `terraform apply <FILE>` applies a previously saved plan. +- `terraform show <FILE>` (and `terraform show -json <FILE>`) inspect a plan you previously saved. + +Saved plan runs are halfway between [speculative plans](#remote-speculative-plans) and standard [plan and apply runs](#remote-applies). They allow you to: + +- Perform cheap exploratory plans while retaining the option of applying a specific plan you are satisfied with. +- Perform other tasks in your terminal between the plan and apply stages. +- Perform the plan and apply operations on separate machines (as is common in continuous integration workflows). + +Saved plans become _stale_ once the state Terraform planned them against is no longer valid (usually due to someone applying a different run). In HCP Terraform, stale saved plan runs are automatically detected and discarded. When examining a remote saved plan, the `terraform show` command (without the `-json` option) informs you if a plan has been discarded or is otherwise unable to be applied. + +### File Contents and Permissions + +You can only apply remote saved plans in the same remote HCP Terraform workspace that performed the plan. Additionally, you can not apply locally executed saved plans in a remote workspace. + +In order to abide by HCP Terraform's permissions model, remote saved plans do not use the same local file format as locally executed saved plans. Instead, remote saved plans are a thin reference to a remote run, and the Terraform CLI relies on authenticated network requests to inspect and apply remote plans. This helps avoid the accidental exposure of credentials or other sensitive information. + +The `terraform show -json` command requires [workspace admin permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-admins) to inspect a remote saved plan; this is because the [machine-readable JSON plan format](/terraform/internals/json-format) contains unredacted sensitive information (alongside redaction hints for use by systems that consume the format). The human-readable version of `terraform show` only requires the read runs permission, because it uses pre-redacted information. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Policy Enforcement + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Policies are rules that HCP Terraform enforces on Terraform runs. You can use two policy-as-code frameworks to define fine-grained, logic-based policies: Sentinel and Open Policy Agent (OPA). + +If the specified workspace uses policies, HCP Terraform runs those policies against all speculative plans and remote applies in that workspace. Failed policies can pause or prevent an apply, depending on the enforcement level. Refer to [Policy Enforcement](/terraform/enterprise/policy-enforcement) for details. + +For Sentinel, the Terraform CLI prints policy results for CLI-driven runs. CLI support for policy results is not available for OPA. + +The following example shows Sentinel policy output in the terminal. + + $ terraform apply + + [...] + + Plan: 1 to add, 0 to change, 1 to destroy. + + ------------------------------------------------------------------------ + + Organization policy check: + + Sentinel Result: false + + Sentinel evaluated to false because one or more Sentinel policies evaluated + to false. This false was not due to an undefined value or runtime error. + + 1 policies evaluated. + ## Policy 1: my-policy.sentinel (soft-mandatory) + + Result: false + + FALSE - my-policy.sentinel:1:1 - Rule "main" + + Do you want to override the soft failed policy check? + Only 'override' will be accepted to override. + + Enter a value: override + +## Options for Plans and Applies + +[Run Modes and Options](/terraform/enterprise/run/modes-and-options) contains more details about the various options available for plans and applies when you use the CLI-driven workflow. + +## Networking/Connection Issues + +Sometimes during a CLI-driven run, errors relating to network connectivity issues arise. Examples of these kinds of errors include: + +- `Client.Timeout exceeded while awaiting headers` +- `context deadline exceeded` +- `TLS handshake timeout` + +Sometimes there are network problems beyond our control. If you have network errors, verify your network connection is operational. Then, check the following common configuration settings: + +- Determine if any firewall software on your system blocks the `terraform` command and explicitly approve it. +- Verify that you have a valid DNS server IP address. +- Remove any expired TLS certificates for your system. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/install-software.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/install-software.mdx new file mode 100644 index 0000000000..31ff8d5b1c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/install-software.mdx @@ -0,0 +1,111 @@ +--- +page_title: Install software in the HCP Terrafrom run environment +description: >- + Learn how to install Terraform providers, cloud CLIs, or configuration + management tools and software on Terraform Enterprise workers. +source: terraform-docs-common +--- + +# Install software in the run environment + +Terraform relies on provider plugins to manage resources. In most cases, Terraform can automatically download the required plugins, but there are cases where plugins must be managed explicitly. + +In rare cases, it might also be necessary to install extra software on the Terraform worker, such as a configuration management tool or cloud CLI. + +## Installing Terraform Providers + +The mechanics of provider installation changed in Terraform 0.13, thanks to the introduction of the [Terraform Registry][registry] for providers which allows custom and community providers to be installed via `terraform init`. Prior to Terraform 0.13, Terraform could only automatically install providers distributed by HashiCorp. + +### Terraform 0.13 and later + +#### Providers From the Terraform Registry + +The [Terraform Registry][registry] allows anyone to publish and distribute providers which can be automatically downloaded and installed via `terraform init`. + +Terraform Enterprise instances must be able to access `registry.terraform.io` to use providers from the public registry; otherwise, you can install providers using [the `terraform-bundle` tool][bundle]. + +[registry]: https://registry.terraform.io/browse/providers + +#### In-House Providers + +If you have a custom provider that you'd rather not publish in the public Terraform Registry, you have a few options: + +- Add the provider binary to the VCS repo (or manually-uploaded configuration version). Place the compiled `linux_amd64` version of the plugin at `terraform.d/plugins/<SOURCE HOST>/<SOURCE NAMESPACE>/<PLUGIN NAME>/<VERSION>/linux_amd64`, relative to the root of the directory. + + The source host and namespace will need to match the source given in the `required_providers` block within the configuration, but can otherwise be arbitrary identifiers. For instance, if your `required_providers` block looks like this: + + terraform { + required_providers { + custom = { + source = "my-host/my-namespace/custom" + version = "1.0.0" + } + } + } + + HCP Terraform will be able to use your compiled provider if you place it at `terraform.d/plugins/my-host/my-namespace/custom/1.0.0/linux_amd64/terraform-provider-custom`. + +- Use a privately-owned provider registry service which implements the [provider registry protocol](/terraform/internals/provider-registry-protocol) to distribute custom providers. Be sure to include the full [source address](/terraform/language/providers/requirements#source-addresses), including the hostname, when referencing providers. + +- **Terraform Enterprise only:** Use [the `terraform-bundle` tool][bundle] to add custom providers. + +-> **Note:** Using a [network mirror](/terraform/internals/provider-network-mirror-protocol) to host custom providers for installation is not currently supported in HCP Terraform, since the network mirror cannot be activated without a [`provider_installation`](/terraform/cli/config/config-file#explicit-installation-method-configuration) block in the CLI configuration file. + +### Terraform 0.12 and earlier + +#### Providers Distributed by HashiCorp + +HCP Terraform can automatically install providers distributed by HashiCorp. Terraform Enterprise instances can do this as well as long as they can access `releases.hashicorp.com`. + +If that isn't feasible due to security requirements, you can manually install providers. Use [the `terraform-bundle` tool][bundle] to build a custom version of Terraform that includes the necessary providers, and configure your workspaces to use that bundled version. + +[bundle]: https://github.com/hashicorp/terraform/tree/master/tools/terraform-bundle#installing-a-bundle-in-on-premises-terraform-enterprise + +#### Custom and Community Providers + +To use community providers or your own custom providers with Terraform versions prior to 0.13, you must install them yourself. + +There are two ways to accomplish this: + +- Add the provider binary to the VCS repo (or manually-uploaded configuration version) for any workspace that uses it. Place the compiled `linux_amd64` version of the plugin at `terraform.d/plugins/linux_amd64/<PLUGIN NAME>` (as a relative path from the root of the working directory). The plugin name should follow the [naming scheme](/terraform/language/v1.1.x/configuration-0-11/providers#plugin-names-and-versions) and the plugin file must have read and execute permissions. (Third-party plugins are often distributed with an appropriate filename already set in the distribution archive.) + + You can add plugins directly to a configuration repo, or you can add them as Git submodules and symlink the executable files into `terraform.d/plugins/`. Submodules are a good choice when many workspaces use the same custom provider, since they keep your repos smaller. If using submodules, enable the ["Include submodules on clone" setting](/terraform/enterprise/workspaces/settings/vcs#include-submodules-on-clone) on any affected workspace. + +- **Terraform Enterprise only:** Use [the `terraform-bundle` tool][bundle] to add custom providers to a custom Terraform version. This keeps custom providers out of your configuration repos entirely, and is easier to update when many workspaces use the same provider. + +## Installing Additional Tools + +### Avoid Installing Extra Software + +Whenever possible, don't install software on the worker. There are a number of reasons for this: + +- Provisioners are a last resort in Terraform; they greatly increase the risk of creating unknown states with unmanaged and partially-managed infrastructure, and the `local-exec` provisioner is especially hazardous. [The Terraform CLI docs on provisioners](/terraform/language/resources/provisioners/syntax#provisioners-are-a-last-resort) explain the hazards in more detail, with more information about the preferred alternatives. (In summary: use Packer, use cloud-init, try to make your infrastructure more immutable, and always prefer real provider features.) +- We don't guarantee the stability of the operating system on the Terraform build workers. It's currently the latest version of Ubuntu LTS, but we reserve the right to change that at any time. +- The build workers are disposable and are destroyed after each use, which makes managing extra software even more complex than when running Terraform CLI in a persistent environment. Custom software must be installed on every run, which also increases run times. + +### Only Install Standalone Binaries + +HCP Terraform does not allow you to elevate a command's permissions with `sudo` during Terraform runs. This means you cannot install packages using the worker OS's normal package management tools. However, you can install and execute standalone binaries in Terraform's working directory. + +You have two options for getting extra software into the configuration directory: + +- Include it in the configuration repository as a submodule. (Make sure the workspace is configured to clone submodules.) +- Use `local-exec` to download it with `curl`. For example: + + ```hcl + resource "aws_instance" "example" { + ami = "${var.ami}" + instance_type = "t2.micro" + provisioner "local-exec" { + command = <<EOH + curl -o jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 + chmod 0755 jq + # Do some kind of JSON processing with ./jq + EOH + } + } + ``` + +When downloading software with `local-exec`, try to associate the provisioner block with the resource(s) that the software will interact with. If you use a null resource with a `local-exec` provisioner, you must ensure it can be properly configured with [triggers](/terraform/language/resources/provisioners/null_resource#example-usage). Otherwise, a null resource with the `local-exec` provisioner will only install software on the initial run where the `null_resource` is created. The `null_resource` will not be automatically recreated in subsequent runs and the related software won't be installed, which may cause runs to encounter errors. + +-> **Note:** Terraform Enterprise instances can be configured to allow `sudo` commands during Terraform runs. However, even when `sudo` is allowed, using the worker OS's package tools during runs is still usually a bad idea. You will have a much better experience if you can move your provisioner actions into a custom provider or an immutable machine image. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/manage.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/manage.mdx new file mode 100644 index 0000000000..2594b81dae --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/manage.mdx @@ -0,0 +1,78 @@ +--- +page_title: Manage and view runs in Terraform Enterprise +description: >- + Learn how to view and interact with runs in Terraform Enterprise, and how to + unlock and lock workspaces to prevent new runs. +source: terraform-docs-common +--- + +# Manage and view runs + +Each workspace in HCP Terraform includes a list of its current, pending, and historical runs. You can view and interact with these runs in the UI. You can also lock workspaces to temporarily prevent new runs. + +## API + +Refer to the [Runs API](/terraform/enterprise/api-docs/run) and [lock a Workspace endpoint](/terraform/enterprise/api-docs/workspaces#lock-a-workspace). + +## Navigating Runs + +Go to the workspace and click the **Runs** tab to review a list of all current and past Terraform runs. + +Click a run to go to its details page. The details page contains the following information: + +- The current status of the run. +- The code commit associated with the run. +- How the run initiated, when, and which user initiated it (if applicable). +- A timeline of events related to the run. +- The output from both the `terraform plan` and `terraform apply` commands, if applicable. This output defaults to visible if the command is currently running and hidden if the command has finished. + +## Interacting with Runs + +In workspaces where you have [permission to apply runs](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions), you can interact with a run at the bottom of its details page. + +The following options are available, depending on the state of the run: + +| Button | Available when: | +| ------------------- | --------------------------------------------------------------------------------------------------------------- | +| Add Comment | Always. | +| Confirm & Apply | A plan needs confirmation. | +| Override & Continue | A soft-mandatory policy failed. Requires permission to manage policy overrides for the organization. | +| Discard Run | A plan needs confirmation or a soft-mandatory policy failed. | +| Cancel Run | A plan or apply is currently running. | +| Force Cancel Run | A plan or apply canceled, but HCP Terraform was unable to end the run. Requires admin access to the workspace. | +| Retry Run | A plan-only run has finished. You can also change which Terraform version to use when retrying a plan-only run. | + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +If a plan needs confirmation (with [manual apply](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply) enabled) or a soft-mandatory policy failed, the run remains paused until a user with appropriate permissions uses these buttons to continue or discard the run. Refer to [Run States and Stages](/terraform/enterprise/run/states) for more details. + +### Canceling Runs + +If a run is currently planning or applying, users with [permission to apply runs](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) for the workspace can click **Cancel Run** to stop the run before it finishes. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Canceling a run is roughly equivalent to typing `ctrl+c` during a Terraform plan or apply on the CLI. The running Terraform process is sent an INT signal, which instructs Terraform to end its work, update state for any resources that have already been changed, and wrap up in the safest way possible. + +In rare cases, a canceled run can fail to end, continuing to lock the workspace. You can forcefully cancel these runs, which immediately terminates the running Terraform process and unlocks the workspace. + +Force-canceling requires admin access to the workspace because it can have dangerous side-effects, including loss of state and orphaned resources. Additionally, the **Force Cancel Run** button only appears after you click **Cancel Run** and HCP Terraform has time to terminate the run safely. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Locking Workspaces (Preventing Runs) + +You can lock the workspace to temporarily stop runs from proceeding. Locking a workspace requires [permission to lock and unlock the workspace](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions), and requires that the workspace is not currently locked by an in-progress run. + +A lock prevents HCP Terraform from performing any applies in the workspace, and also prevents many kinds of plans. New runs remain in the **Pending** state until the workspace unlocks. + +Locking **does not** affect [plan-only runs](/terraform/enterprise/run/remote-operations#speculative-plans) or the planning stages of [saved plan runs](/terraform/enterprise/run/cli#remote-saved-plans). Terraform allows these types of runs because they can not affect infrastructure resources, do not attempt to lock the workspace themselves, and might provide important information about tasks to perform before removing the lock. Note that you can not _apply_ saved-plan runs while the workspace is locked, and HCP Terraform automatically discards these runs if the workspace's state is changed before they can be applied. Terraform Enterprise does not yet support saved plans. + +HCP Terraform shows the lock status in the workspace's header, next to the **Actions** menu. + +To lock or unlock a workspace, do one of the following: + +- Open the **Actions** menu and select **Lock workspace** or **Unlock workspace**. +- Go to **Settings > Locking**. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/modes-and-options.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/modes-and-options.mdx new file mode 100644 index 0000000000..9a1e6a0f8d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/modes-and-options.mdx @@ -0,0 +1,123 @@ +--- +page_title: Run modes and options in Terraform Enterprise +description: >- + Learn about the different run modes and options available in Terraform + Enterprise to customize behavior during runs. +source: terraform-docs-common +--- + +# Run modes and options + +HCP Terraform runs support many of the same modes and options available in the Terraform CLI. + +## Plan and Apply (Standard) + +The default run mode of HCP Terraform is to perform a plan and then apply it. If you have enabled auto-apply and are using a VCS or API workflow, a successful plan applies immediately. Otherwise, the run waits for user confirmation before applying. + +- **CLI:** Use `terraform apply` (without providing a saved plan file). +- **API:** Create a run without specifying any options that select a different mode. +- **UI:** From the workspace's overview page, click **+ New run**, and then choose **Plan and apply (standard)** as the run type. +- **VCS:** When a workspace is connected to a VCS repository, HCP Terraform automatically starts a standard plan and apply when you add new commits to the selected branch of that repository. + +## Destroy Mode + +[Destroy mode](/terraform/cli/commands/plan#planning-modes) instructs Terraform to create a plan which destroys all objects, regardless of configuration changes. + +- **CLI:** Use `terraform plan -destroy` or `terraform destroy` +- **API:** Use the `is-destroy` option. +- **UI:** Use a workspace's **Destruction and Deletion** settings page. + +## Plan Only/Speculative Plan + +This option creates a [speculative plan](/terraform/enterprise/run/remote-operations#speculative-plans). The speculative plan shows a set of possible changes and checks them against Sentinel policies, but Terraform can _not_ apply this plan. + +You can create speculative plans with a different Terraform version than the one currently selected for a workspace. This lets you check whether your configuration is compatible with a newer Terraform version without changing the workspace settings. + +Plan-only runs ignore the per-workspace run queue. Plan-only runs can proceed even if another run is in progress, can not become the workspace's current run, and do not block progress on a workspace's other runs. + +- **API:** Set the `plan-only` option to `true` and specify an available terraform version using the `terraform-version` field. +- **UI:** From the workspace's overview page, click **+ New run**, and then choose **Plan only** as the run type. +- **VCS:** When a workspace is connected to a VCS repository, HCP Terraform automatically starts a speculative plan when someone opens a pull request (or merge request) against the selected branch of that repository. The pull/merge request view in your VCS links to the speculative plan, and you can also find it in the workspace's run list. + +## Saved Plans + +-> **Version note:** Using saved plans from the CLI with HCP Terraform requires at least Terraform CLI v1.6.0. + +Saved plan runs are very similar to standard plan and apply runs: they perform a plan and then optionally apply it. There are three main differences: + +1. _No wait for planning._ Saved plan runs ignore the per-workspace run queue during their plan and checks. Like plan-only runs, saved plans can begin planning even if another run is in progress, without blocking progress on other runs. +2. _No auto-apply._ Saved plan runs are never auto-applied, even if you enabled auto-apply for the workspace. Saved plans only apply if you confirm them. +3. _Automatic discard for stale plans._ If another run is applied (or the state is otherwise modified) before a saved plan run is confirmed, HCP Terraform automatically discards that saved plan. HCP Terraform may also automatically discard saved plans if they are not confirmed within a few weeks. + +Saved plans are ideal for interactive CLI workflows, where you can perform many exploratory plans and then choose one to apply, or for custom continuous integration workflows where the default run queue behavior isn't suitable. + +- **CLI:** Use `terraform plan -out <FILE>` to perform and save a plan, then use `terraform apply <FILE>` to apply the saved plan. Use `terraform show <FILE>` to inspect a saved plan before applying it. +- **API:** Use the `save-plan` option when creating a run. If you create a new configuration version for a saved plan run, use the `provisional` option so that it will not become the workspace's current configuration version until you decide to apply the run. + +## Allow Empty Apply + +A no-operation (empty) apply enables HCP Terraform to apply a run from a plan that contains no infrastructure changes. During apply, Terraform can upgrade the state version if required. You can use this option to upgrade the state in your HCP Terraform workspace to a new Terraform version. Only some Terraform versions require this, most notably 0.13. + +To make such upgrades easier, empty apply runs will always auto-apply if their plan contains no changes. + +~> **Warning:** HCP Terraform cannot guarantee that a plan in this mode will produce no changes. We recommend checking the plan for drift before proceeding to the apply stage. + +- **API:** Set the `allow-empty-apply` field to `true`. +- **UI:** From the workspace's overview page, click **+ New run**, and then choose **Allow empty apply** as the run type. + +## Refresh-Only Mode + +> **Hands-on:** Try the [Use Refresh-Only Mode to Sync Terraform State](/terraform/tutorials/state/refresh) tutorial. + +-> **Version note:** Refresh-only support requires a workspace using at least Terraform CLI v0.15.4. + +[Refresh-only mode](/terraform/cli/commands/plan#planning-modes) instructs Terraform to create a plan that updates the Terraform state to match changes made to remote objects outside of Terraform. This is useful if state drift has occurred and you want to reconcile your state file to match the drifted remote objects. Applying a refresh-only run does not result in further changes to remote objects. + +- **CLI:** Use `terraform plan -refresh-only` or `terraform apply -refresh-only`. +- **API:** Use the `refresh-only` option. +- **UI:** From the workspace's overview page, click **+ New run**, and then choose **Refresh state** as the run type. + +## Skipping Automatic State Refresh + +The [`-refresh=false` option](/terraform/cli/commands/plan#refresh-false) is used in normal planning mode to skip the default behavior of refreshing Terraform state before checking for configuration changes. + +- **CLI:** Use `terraform plan -refresh=false` or `terraform apply -refresh=false`. +- **API:** Use the `refresh` option. + +## Replacing Selected Resources + +-> **Version note:** Replace support requires a workspace using at least Terraform CLI v0.15.2. + +The [replace option](/terraform/cli/commands/plan#replace-address) instructs Terraform to replace the object with the given resource address. + +- **CLI:** Use `terraform plan -replace=ADDRESS` or `terraform apply -replace=ADDRESS`. +- **API:** Use the `replace-addrs` option. +- **UI:** Click **+ New run** and select the **Plan and apply (standard)** run type. Then click **Additional planning options** to reveal the **Replace resources** option. Type the address of the resource that you want to replace. You can replace multiple resources. + +## Targeted Plan and Apply + +[Resource Targeting](/terraform/cli/commands/plan#resource-targeting) is intended for exceptional circumstances only and should not be used routinely. + +- **CLI:** Use `terraform plan -target=ADDRESS` or `terraform apply -target=ADDRESS`. +- **API:** Use the `target-addrs` option. + +The usual caveats for targeting in local operations imply some additional limitations on HCP Terraform features for remote plans created with targeting: + +- [Sentinel](/terraform/enterprise/policy-enforcement) policy checks for targeted plans will see only the selected subset of resource instances planned for changes in [the `tfplan` import](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2) and [the `tfplan/v2` import](/terraform/enterprise/policy-enforcement/import-reference/tfplan-v2), which may cause an unintended failure for any policy that requires a planned change to a particular resource instance selected by its address. + +- [Cost Estimation](/terraform/enterprise/cost-estimation) is disabled for any run created with `-target` set, to prevent producing a misleading underestimate of cost due to resource instances being excluded from the plan. + +You can disable or constrain use of targeting in a particular workspace using a Sentinel policy based on [the `tfrun.target_addrs` value](/terraform/enterprise/policy-enforcement/import-reference/tfrun#value-target_addrs). + +## Generating Configuration + +-> **Version note:** Support for `import` blocks and generating configuration requires a workspace using at least Terraform CLI v1.5.0. + +When using [`import` blocks](/terraform/language/import) to import existing resources, Terraform can [automatically generate configuration](/terraform/language/import/generating-configuration) during the plan for any imported resources that don't have an existing `resource` block. This option is enabled by default for runs started from the UI or from a VCS webhook. + +- **CLI:** Use `terraform plan -generate-config-out=generated.tf`. +- **API:** Use the `allow-config-generation` option. + +You can find generated configuration displayed in the plan UI. If you're using the CLI workflow, Terraform will write generated configuration to the file you specify when running `terraform plan`. + +Once Terraform has generated configuration for you, you'll need to review it, incorporate it in your Terraform configuration (including committing it to version control), then run another plan. If you try to directly apply a plan with generated configuration, the run will error. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/remote-operations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/remote-operations.mdx new file mode 100644 index 0000000000..8091309a5e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/remote-operations.mdx @@ -0,0 +1,148 @@ +--- +page_title: Remote operations in Terraform Enterprise +description: >- + Terraform Enterprise runs Terraform operations remotely through the UI, API, + or CLI. Learn how HCP Terraform manages runs. +source: terraform-docs-common +--- + +# Remote operations + +> **Hands-on:** Try the [Get Started — HCP Terraform](/terraform/tutorials/cloud-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials. + +HCP Terraform provides a central interface for running Terraform within a large collaborative organization. If you're accustomed to running Terraform from your workstation, the way HCP Terraform manages runs can be unfamiliar. + +This page describes the basics of how runs work in HCP Terraform. + +## Remote Operations + +HCP Terraform is designed as an execution platform for Terraform, and can perform Terraform runs on its own disposable virtual machines. This provides a consistent and reliable run environment, and enables advanced features like Sentinel policy enforcement, cost estimation, notifications, version control integration, and more. + +Terraform runs managed by HCP Terraform are called _remote operations._ Remote runs can be initiated by webhooks from your VCS provider, by UI controls within HCP Terraform, by API calls, or by Terraform CLI. When using Terraform CLI to perform remote operations, the progress of the run is streamed to the user's terminal, to provide an experience equivalent to local operations. + +### Disabling Remote Operations + +[execution_mode]: /terraform/enterprise/workspaces/settings#execution-mode + +Many of HCP Terraform's features rely on remote execution and are not available when using local operations. This includes features like Sentinel policy enforcement, cost estimation, and notifications. + +You can disable remote operations for any workspace by changing its [Execution Mode][execution_mode] to **Local**. This causes the workspace to act only as a remote backend for Terraform state, with all execution occurring on your own workstations or continuous integration workers. + +### Protecting Private Environments + +[HCP Terraform agents](/terraform/cloud-docs/agents) are a paid feature that allows HCP Terraform to communicate with isolated, private, or on-premises infrastructure. The agent polls HCP Terraform or Terraform Enterprise for any changes to your configuration and executes the changes locally, so you do not need to allow public ingress traffic to your resources. Agents allow you to control infrastructure in private environments without modifying your network perimeter. + +HCP Terraform agents also support running custom programs, called _hooks_, during strategic points of a Terraform run. For example, you may create a hook to dynamically download software required by the Terraform run or send an HTTP request to a system to kick off an external workflow. + +## Runs and Workspaces + +HCP Terraform always performs Terraform runs in the context of a [workspace](/terraform/enterprise/run/remote-operations). The workspace serves the same role that a persistent working directory serves when running Terraform locally: it provides the configuration, state, and variables for the run. + +### Configuration Versions + +Each workspace is associated with a particular Terraform configuration, but that configuration is expected to change over time. Thus, HCP Terraform manages configurations as a series of _configuration versions._ + +Most commonly, a workspace is linked to a VCS repository, and its configuration versions are tied to revisions in the specified VCS branch. In workspaces that aren't linked to a repository, new configuration versions can be uploaded via Terraform CLI or via the API. + +### Ordering and Timing + +Each workspace in HCP Terraform maintains its own queue of runs, and processes those runs in order. + +Whenever a new run is initiated, it's added to the end of the queue. If there's already a run in progress, the new run won't start until the current one has completely finished — HCP Terraform won't even plan the run yet, because the current run might change what a future run would do. Runs that are waiting for other runs to finish are in a _pending_ state, and a workspace might have any number of pending runs. + +There are two exceptions to the run queue, which can proceed at any time and do not block the progress of other runs: + +- Plan-only runs. +- The planning stages of [saved plan runs](/terraform/enterprise/run/modes-and-options/#saved-plans). You can only _apply_ a saved plan if no other run is in progress, and applying that plan blocks the run queue as usual. Terraform Enterprise does not yet support this workflow. + +When you initiate a run, HCP Terraform locks the run to a particular configuration version and set of variable values. If you change variables or commit new code before the run finishes, it will only affect future runs, not runs that are already pending, planning, or awaiting apply. + +### Workspace Locks + +When a workspace is _locked,_ HCP Terraform can create new runs (automatically or manually), but those runs do not begin until you unlock the workspace. + +When a run is in progress, that run locks the workspace, as described above under "Ordering and Timing". + +There are two kinds of run operation that can ignore workspace locking: + +- Plan-only runs. +- The planning stages of [saved plan runs](/terraform/enterprise/run/modes-and-options/#saved-plans). You can only _apply_ a saved plan if the workspace is unlocked, and applying that plan locks the workspace as usual. Terraform Enterprise does not yet support this workflow. + +A user or team can also deliberately lock a workspace, to perform maintenance or for any other reason. For more details, see [Locking Workspaces (Preventing Runs)](/terraform/enterprise/run/manage#locking-workspaces-preventing-runs-). + +## Starting Runs + +HCP Terraform has three main workflows for managing runs, and your chosen workflow determines when and how Terraform runs occur. For detailed information, see: + +- The [UI/VCS-driven run workflow](/terraform/enterprise/run/ui), which is the primary mode of operation. +- The [API-driven run workflow](/terraform/enterprise/run/api), which is more flexible but requires you to create some tooling. +- The [CLI-driven run workflow](/terraform/enterprise/run/cli), which uses Terraform's standard CLI tools to execute runs in HCP Terraform. + +You can use the following methods to initiate HCP Terraform runs: + +- Click the **+ New run** button on the workspace's page +- Implement VCS webhooks +- Run the standard `terraform apply` command when the CLI integration is configured +- Call [the Runs API](/terraform/enterprise/api-docs/run) using any API tool + +## Plans and Applies + +HCP Terraform enforces Terraform's division between _plan_ and _apply_ operations. It always plans first, then uses that plan's output for the apply. + +In the default configuration, HCP Terraform waits for user approval before running an apply, but you can configure workspaces to [automatically apply](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply) successful plans. Some plans can't be auto-applied, like plans queued by [run triggers](/terraform/enterprise/workspaces/settings/run-triggers) or by users without permission to apply runs for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +If a plan contains no changes, HCP Terraform does not attempt to apply it. Instead, the run ends with a status of "Planned and finished". The [allow empty apply](/terraform/enterprise/run/modes-and-options#allow-empty-apply) run mode can override this behavior. + +### Speculative Plans + +In addition to normal runs, HCP Terraform can run _speculative plans_ to test changes to a configuration during editing and code review. Speculative plans are plan-only runs. They show possible changes, and policies affected by those changes, but cannot apply any changes. + +Speculative plans can begin without waiting for other runs to finish because they don't affect real infrastructure. HCP Terraform lists past speculative plan runs alongside a workspace's other runs. + +There are three ways to run speculative plans: + +- In VCS-backed workspaces, pull requests start speculative plans, and the VCS provider's pull request interface includes a link to the plan. See [UI/VCS Runs: Speculative Plans on Pull Requests](/terraform/enterprise/run/ui#speculative-plans-on-pull-requests) for more details. +- With the [CLI integration](/terraform/cli/cloud) configured, running `terraform plan` on the command line starts a speculative plan. The plan output streams to the terminal, and a link to the plan is also included. +- The runs API creates speculative plans whenever the specified configuration version is marked as speculative. See [the `configuration-versions` API](/terraform/enterprise/api-docs/configuration-versions#create-a-configuration-version) for more information. + +#### Retry a speculative plan in the UI + +If a speculative plan fails due to an external factor, you can run it again using the "Retry Run" button on its page: + +Retrying a plan requires permission to queue plans for that workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) Only failed or canceled plans can be retried. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Retrying the run will create a new run with the same configuration version. If it is a VCS-backed workspace, the pull request interface will receive the status of the new run, along with a link to the new run. + +### Saved Plans + +-> **Version note:** Using saved plans from the CLI with HCP Terraform requires at least Terraform CLI v1.6.0. + +HCP Terraform also supports saved plan runs. If you have configured the [CLI integration](/terraform/cli/cloud) you can use `terraform plan -out <FILE>` to perform and save a plan, `terraform apply <FILE>` to apply a saved plan, and `terraform show <FILE>` to inspect a saved plan before applying it. You can also create saved plan runs via the API by using the `save-plan` option. + +Saved plan runs affect the run queue differently from normal runs, and can sometimes be automatically discarded. For more details, refer to [Run Modes and Options: Saved Plans](/terraform/enterprise/run/modes-and-options#saved-plans). + +## Planning Modes and Options + +In addition to the normal run workflows described above, HCP Terraform supports destroy runs, refresh-only runs, and several planning options that can modify the behavior of a run. For more details, see [Run Modes and Options](/terraform/enterprise/run/modes-and-options). + +## Run States + +HCP Terraform shows the progress of each run as it passes through each run state (pending, plan, policy check, apply, and completion). In some states, the run might require confirmation before continuing or ending; see [Managing Runs: Interacting with Runs](/terraform/enterprise/run/manage#interacting-with-runs) for more information. + +In the list of workspaces on HCP Terraform's main page, each workspace shows the state of the run it's currently processing. (Or, if no run is in progress, the state of the most recent completed run.) + +For full details about the stages of a run, see [Run States and Stages][]. + +[Run States and Stages]: /terraform/enterprise/run/states + +## Import + +We recommend using [`import` blocks](/terraform/language/import), introduced in Terraform 1.5, to import resources in HCP Terraform. + +HCP Terraform does not support remote execution for the `terraform import` command. For this command the workspace acts only as a remote backend for Terraform state, with all execution occurring on your own workstations or continuous integration workers. + +Since `terraform import` runs locally, environment variables defined in the workspace are not available. Any environment variables required by the provider you're importing from must be defined within your local execution scope. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/run-environment.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/run-environment.mdx new file mode 100644 index 0000000000..ccae094a3f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/run-environment.mdx @@ -0,0 +1,131 @@ +--- +page_title: Terraform Enterprise's run environment +description: >- + Learn how Terraform Enterprise's run enviornment manages virtual machines, + network access, concurrency for runs, state access authentication, and + environment variables. +source: terraform-docs-common +--- + +# HCP Terraform's run environment + +HCP Terraform is designed as an execution platform for Terraform, and most of its features are based around its ability to perform Terraform runs in a fleet of disposable worker VMs. This page describes some features of the run environment for Terraform runs managed by HCP Terraform. + +## The Terraform Worker VMs + +HCP Terraform performs Terraform runs in single-use Linux virtual machines, running on an x86_64 architecture. + +The operating system and other software installed on the worker VMs is an internal implementation detail of HCP Terraform. It is not part of a stable public interface, and is subject to change at any time. + +Before Terraform is executed, the worker VM's shell environment is populated with environment variables from the workspace, the selected version of Terraform is installed, and the run's Terraform configuration version is made available. + +Changes made to the worker during a run are not persisted to subsequent runs, since the VM is destroyed after the run is completed. Notably, this requires some additional care when installing additional software with a `local-exec` provisioner; see [Installing Additional Tools](/terraform/enterprise/run/install-software#installing-additional-tools) for more details. + +> **Hands-on:** Try the [Upgrade Terraform Version in HCP Terraform](/terraform/tutorials/cloud/cloud-versions) tutorial. + +## Network Access to VCS and Infrastructure Providers + +In order to perform Terraform runs, HCP Terraform needs network access to all of the resources Terraform is going to manage. + +If you are using the cloud version of HCP Terraform, your VCS provider and any private infrastructure providers you manage with Terraform must be internet accessible. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +If you are on the HCP Terraform **Premium** edition, you can use a self-hosted HCP Terraform agent to connect to private VCS providers. Refer to [Connect to private VCS providers](/terraform/enterprise/vcs/private) for more information. + +<!-- END: TFC:only name:pnp-callout --> + +Terraform Enterprise instances must have network connectivity to any connected VCS providers or managed infrastructure providers. + +## Concurrency and Run Queuing + +HCP Terraform uses multiple concurrent worker VMs, which take jobs from a global queue of runs that are ready for processing. (This includes confirmed applies, and plans that have just become the current run on their workspace.) + +If the global queue has more runs than the workers can handle at once, some of them must wait until a worker becomes available. When the queue is backed up, HCP Terraform gives different priorities to different kinds of runs: + +- Applies that will make changes to infrastructure have the highest priority. +- Normal plans have the next highest priority. +- Speculative plans have the lowest priority. + +HCP Terraform can also delay some runs in order to make performance more consistent across organizations. If an organization requests a large number of runs at once, HCP Terraform queues some of them immediately, and delays the rest until some of the initial batch have finished. Queuing and delaying runs lets organizations continue performing runs even during periods of especially heavy load. Your HCP Terraform edition limits the maximum run concurrency for your organization. Refer to [HCP Terraform pricing](https://www.hashicorp.com/products/terraform/pricing?product_intent=terraform) for details. + +## State Access and Authentication + +[CLI config file]: /terraform/cli/config/config-file + +[cloud]: /terraform/cli/cloud + +HCP Terraform stores state for its workspaces. + +When you trigger runs via the [CLI workflow](/terraform/enterprise/run/cli), Terraform reads from and writes to HCP Terraform's stored state. HCP Terraform uses [the `cloud` block][cloud] for runs, overriding any existing [backend](/terraform/language/settings/backends/configuration) in the configuration. + +-> **Note:** The `cloud` block is available in Terraform v1.1 and later. Previous versions can use the [`remote` backend](/terraform/language/settings/backends/remote) to configure the CLI workflow and migrate state. + +### Autogenerated API Token + +Instead of using existing user credentials, HCP Terraform generates a unique per-run API token and provides it to the Terraform worker in the [CLI config file][]. When you run Terraform on the command line against a workspace configured for remote operations, you must have [the `cloud` block][cloud] in your configuration and have a user or team API token with the appropriate permissions specified in your [CLI config file][]. However, the run itself occurs within one of HCP Terraform's worker VMs and uses the per-run token for state access. + +The per-run token can read and write state data for the workspace associated with the run, can download modules from the [private registry](/terraform/enterprise/registry), and may be granted access to read state from other workspaces in the organization. (Refer to [cross-workspace state access](/terraform/enterprise/workspaces/state#accessing-state-from-other-workspaces) for more details.) Per-run tokens cannot make any other calls to the HCP Terraform API and are not considered to be user, team, or organization tokens. They become invalid after the run is completed. + +### User Token + +HCP Terraform uses the user token to access a workspace's state when you: + +- Run Terraform on the command line against a workspace that is _not_ configured for remote operations. The user must have permission to read and write state versions for the workspace. + +- Run Terraform's state manipulation commands against an HCP Terraform workspace. The user must have permission to read and write state versions for the workspace. + +Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions) for more details about workspace permissions. + +### Provider Authentication + +Runs in HCP Terraform typically require some form of credentials to authenticate with infrastructure providers. Credentials can be provided statically through Environment or Terraform [variables](/terraform/enterprise/workspaces/variables), or can be generated on a per-run basis through [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for certain providers. Below are pros and cons to each approach. + +#### Static Credentials + +##### Pros + +- Simple to setup +- Broad support across providers + +##### Cons + +- Requires regular manual rotation for enhanced security posture +- Large blast radius if a credential is exposed and needs to be revoked + +#### Dynamic Credentials + +##### Pros + +- Eliminates the need for manual rotation of credentials on HCP Terraform +- HCP Terraform metadata - including the run's project, workspace, and run-phase - is encoded into every token to allow for granular permission scoping on the target cloud platform +- Credentials are short-lived, which reduces blast radius of potential credential exposure + +##### Cons + +- More complicated initial setup compared to using static credentials +- Not supported for all providers + +The full list of supported providers and setup instructions can be found in the [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) documentation. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Environment Variables + +HCP Terraform automatically injects the following environment variables for each run: + +| Variable Name | Description | Example | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------- | +| `TFC_RUN_ID` | A unique identifier for this run. | `run-CKuwsxMGgMd4W7Ui` | +| `TFC_WORKSPACE_NAME` | The name of the workspace used in this run. | `prod-load-balancers` | +| `TFC_WORKSPACE_SLUG` | The full slug of the configuration used in this run. This consists of the organization name and workspace name, joined with a slash. | `acme-corp/prod-load-balancers` | +| `TFC_CONFIGURATION_VERSION_GIT_BRANCH` | The name of the branch that the associated Terraform configuration version was ingressed from. | `main` | +| `TFC_CONFIGURATION_VERSION_GIT_COMMIT_SHA` | The full commit hash of the commit that the associated Terraform configuration version was ingressed from. | `abcd1234...` | +| `TFC_CONFIGURATION_VERSION_GIT_TAG` | The name of the tag that the associated Terraform configuration version was ingressed from. | `v0.1.0` | +| `TFC_PROJECT_NAME` | The name of the project used in this run. | `proj-name` | + +They are also available as Terraform input variables by defining a variable with the same name. For example: + +```terraform +variable "TFC_RUN_ID" {} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/states.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/states.mdx new file mode 100644 index 0000000000..a8f444e0a3 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/states.mdx @@ -0,0 +1,218 @@ +--- +page_title: Run states and stages in Terraform Enterprise +description: >- + Learn the run stages of Terraform operations. Understanding run stages and + their states can help you follow a run's progress. +source: terraform-docs-common +--- + +# Run states and stages + +Each plan and apply run passes through several stages of action: pending, plan, cost estimation, policy check, apply, and completion. HCP Terraform shows a run's progress through each stage as a run state. + +In the list of workspaces on HCP Terraform's main page, each workspace shows the state of the run it's currently processing. If no run is in progress, HCP Terraform displays the state of the most recently completed run. + +## The Pending Stage + +_States in this stage:_ + +- **Pending:** HCP Terraform hasn't started action on a run yet. HCP Terraform processes each workspace's runs in the order they were queued, and a run remains pending until every run before it has completed. + +_Leaving this stage:_ + +- If the user discards the run before it starts, the run does not continue (**Discarded** state). +- If the run is first in the queue, it proceeds automatically to the plan stage (**Planning** state). + +## The Fetching Stage + +HCP Terraform may need to fetch the configuration from VCS prior to starting the plan. HCP Terraform automatically archives configuration versions created through VCS when all runs are complete and then re-fetches the files for subsequent runs. + +_States in this stage:_ + +- **Fetching:** If HCP Terraform has not yet fetched the configuration from VCS, the run will go into this state until the configuration is available. + +_Leaving this stage:_ + +- If HCP Terraform encounters an error when fetching the configuration from VCS, the run does not continue (**Plan Errored** state). +- If Terraform successfully fetches the configuration, the run moves to the next stage. + +## The Pre-Plan Stage + +The pre-plan phase only occurs if there are enabled [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) in the workspace that are configured to begin before Terraform creates the plan. HCP Terraform sends information about the run to the configured external system and waits for a `passed` or `failed` response to determine whether the run can continue. The information sent to the external system includes the configuration version of the run. + +All runs can enter this phase, including [speculative plans](/terraform/enterprise/run/remote-operations#speculative-plans). + +_States in this stage:_ + +- **Pre-plan running:** HCP Terraform is waiting for a response from the configured external system(s). + - External systems must respond initially with a `200 OK` acknowledging the request is in progress. After that, they have 10 minutes to return a status of `passed`, `running`, or `failed`. If the timeout expires, HCP Terraform assumes that the run tasks is in the `failed` status. + +_Leaving this stage:_ + +- If any mandatory tasks failed, the run skips to completion (**Plan Errored** state). +- If any advisory tasks failed, the run proceeds to the **Planning** state, with a visible warning regarding the failed task. +- If a single run has a combination of mandatory and advisory tasks, Terraform takes the most restrictive action. For example, the run fails if there are two advisory tasks that succeed and one mandatory task that fails. +- If a user canceled the run, the run ends in the **Canceled** state. + +## The Plan Stage + +A run goes through different steps during the plan stage depending on whether or not HCP Terraform needs to fetch the configuration from VCS. HCP Terraform automatically archives configuration versions created through VCS when all runs are complete and then re-fetches the files for subsequent runs. + +_States in this stage:_ + +- **Planning:** HCP Terraform is currently running `terraform plan`. +- **Needs Confirmation:** `terraform plan` has finished. Runs sometimes pause in this state, depending on the workspace and organization settings. + +_Leaving this stage:_ + +- If the `terraform plan` command failed, the run does not continue (**Plan Errored** state). +- If a user canceled the plan by pressing the "Cancel Run" button, the run does not continue (**Canceled** state). +- If the plan succeeded with no changes and neither cost estimation nor Sentinel policy checks will be done, HCP Terraform considers the run complete (**Planned and Finished** state). +- If the plan succeeded and requires changes: + - If cost estimation is enabled, the run proceeds automatically to the cost estimation stage. + - If cost estimation is disabled and [Sentinel policies](/terraform/enterprise/policy-enforcement/sentinel) are enabled, the run proceeds automatically to the policy check stage. + - If there are no Sentinel policies and the plan can be auto-applied, the run proceeds automatically to the apply stage. Plans can be auto-applied if the auto-apply setting is enabled on the workspace and the plan was queued by a new VCS commit or by a user with permission to apply runs. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + - If there are no Sentinel policies and HCP Terraform cannot auto-apply the plan, the run pauses in the **Needs Confirmation** state until a user with permission to apply runs takes action. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) If an authorized user approves the apply, the run proceeds to the apply stage. If an authorized user rejects the apply, the run does not continue (**Discarded** state). + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Note, if you want to directly integrate third-party tools and services between your plan and apply stages, see [Run Tasks](/terraform/enterprise/workspaces/settings/run-tasks). + +## The Post-Plan Stage + +The post-plan phase only occurs if you configure [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) on a workspace to begin after Terraform successfully completes a plan operation. +All runs can enter this phase, including [speculative plans](/terraform/enterprise/run/remote-operations#speculative-plans). During this phase, HCP Terraform sends information about the run to the configured external system and waits for a `passed` or `failed` response to determine whether the run can continue. + +-> **Note:** The information sent to the configured external system includes the [JSON output](/terraform/internals/json-format) of the Terraform plan. + +_States in this stage:_ + +- **Post-plan running:** HCP Terraform is waiting for a response from the configured external system(s). + - External systems must respond initially with a `200 OK` acknowledging the request is in progress. After that, they have 10 minutes to return a status of `passed`, `running`, or `failed`, or the timeout will expire and the task will be assumed to be in the `failed` status. + +_Leaving this stage:_ + +- If any mandatory tasks failed, the run skips to completion (**Plan Errored** state). +- If any advisory tasks failed, the run proceeds to the **Applying** state, with a visible warning regarding the failed task. +- If a single run has a combination of mandatory and advisory tasks, Terraform takes the most restrictive action. For example, if there are two advisory tasks that succeed and one mandatory task that failed, the run fails. If one mandatory task succeeds and two advisory tasks fail, the run succeeds with a warning. +- If a user canceled the run, the run ends in the **Canceled** state. + +## The OPA Policy Check Stage + +This stage only occurs if you enabled [Open Policy Agent (OPA) policies](/terraform/enterprise/policy-enforcement/opa) and runs after a successful `terraform plan` and before Cost Estimation. In this stage, HCP Terraform checks whether the plan adheres to the policies in the OPA policy sets for the workspace. + +_States in this stage:_ + +- **Policy Check:** HCP Terraform is checking the plan against the OPA policy sets. +- **Policy Override:** The policy check finished, but a mandatory policy failed. The run pauses, and Terraform cannot perform an apply unless a user manually overrides the policy check failure. Refer to [Policy Results](/terraform/enterprise/policy-enforcement/view-results) for details. +- **Policy Checked:** The policy check succeeded, and Terraform can apply the plan. The run may pause in this state if the workspace is not set up to auto-apply runs. + +_Leaving this stage:_ + +If any mandatory policies failed, the run pauses in the **Policy Override** state. The run completes one of the following workflows: + +- The run stops and enters the **Discarded** state when a user with [permission to apply runs](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions#manage-policy-overrides) discards the run. +- The run proceeds to the **Policy Checked** state when a user with [permission to manage policy overrides](/terraform/enterprise/users-teams-organizations/permissions) overrides the failed policy. The **Policy Checked** state means that no mandatory policies failed or that a user performed a manual override. + +Once the run reaches the **Policy Checked** state, the run completes one of the following workflows: + +- The run proceeds to the **Apply** stage if Terraform can automatically apply the plan. An auto-apply requires that the **Auto apply** setting is enabled on the workspace. +- If Terraform cannot automatically apply the plan, the run pauses in the **Policy Checked** state until a user with permission to apply runs takes action. If the user approves the apply, the run proceeds to the **Apply** stage. If the user rejects the apply, the run stops and enters the **Discarded** state. + +## The Cost Estimation Stage + +This stage only occurs if cost estimation is enabled. After a successful `terraform plan`, HCP Terraform uses plan data to estimate costs for each resource found in the plan. + +_States in this stage:_ + +- **Cost Estimating:** HCP Terraform is currently estimating the resources in the plan. +- **Cost Estimated:** The cost estimate completed. + +_Leaving this stage:_ + +- If cost estimation succeeded or errors, the run moves to the next stage. +- If there are no policy checks or applies, the run does not continue (**Planned and Finished** state). + +## The Sentinel Policy Check Stage + +This stage only occurs if [Sentinel policies](/terraform/enterprise/policy-enforcement/sentinel) are enabled. After a successful `terraform plan`, HCP Terraform checks whether the plan obeys policy to determine whether it can be applied. + +_States in this stage:_ + +- **Policy Check:** HCP Terraform is currently checking the plan against the organization's policies. +- **Policy Override:** The policy check finished, but a soft-mandatory policy failed, so an apply cannot proceed without approval from a user with permission to manage policy overrides for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) The run pauses in this state. +- **Policy Checked:** The policy check succeeded, and Sentinel will allow an apply to proceed. The run sometimes pauses in this state, depending on workspace settings. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +_Leaving this stage:_ + +- If any hard-mandatory policies failed, the run does not continue (**Plan Errored** state). +- If any soft-mandatory policies failed, the run pauses in the **Policy Override** state. + - If a user with permission to manage policy overrides, overrides the failed policy, the run proceeds to the **Policy Checked** state. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + - If a user with permission to apply runs discards the run, the run does not continue (**Discarded** state). ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) +- If the run reaches the **Policy Checked** state (no mandatory policies failed, or soft-mandatory policies were overridden): + - If the plan can be auto-applied, the run proceeds automatically to the apply stage. Plans can be auto-applied if the auto-apply setting is enabled on the workspace and the plan was queued by a new VCS commit or by a user with permission to apply runs. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + - If the plan can't be auto-applied, the run pauses in the **Policy Checked** state until a user with permission to apply runs takes action. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) The run proceeds to the apply stage if they approve the apply, or does not continue (**Discarded** state) if they reject the apply. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## The Pre-Apply Stage + +The pre-apply phase only occurs if the workspace has [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) configured to begin before Terraform creates the apply. HCP Terraform sends information about the run to the configured external system and waits for a `passed` or `failed` response to determine whether the run can continue. The information sent to the external system includes the configuration version of the run. + +Only confirmed runs can enter this phase. + +_States in this stage:_ + +- **Pre-apply running:** HCP Terraform is waiting for a response from the configured external system(s). + - External systems must respond initially with a `200 OK` acknowledging the request is in progress. After that, they have 10 minutes to return a status of `passed`, `running`, or `failed`. If the timeout expires, HCP Terraform assumes that the run tasks is in the `failed` status. + +_Leaving this stage:_ + +- If any mandatory tasks failed, the run skips to completion. +- If any advisory tasks failed, the run proceeds to the **Applying** state, with a visible warning regarding the failed task. +- If a single run has a combination of mandatory and advisory tasks, Terraform takes the most restrictive action. For example, the run fails if there are two advisory tasks that succeed and one mandatory task that fails. +- If a user canceled the run, the run ends in the **Canceled** state. + +## The Apply Stage + +_States in this stage:_ + +- **Applying:** HCP Terraform is currently running `terraform apply`. + +_Leaving this stage:_ + +After applying, the run proceeds automatically to completion. + +- If the apply succeeded, the run ends in the **Applied** state. +- If the apply failed, the run ends in the **Apply Errored** state. +- If a user canceled the apply by pressing **Cancel Run**, the run ends in the **Canceled** state. + +## The Post-Apply Stage + +The post-apply phase only occurs if you configure [run tasks](/terraform/enterprise/workspaces/settings/run-tasks) on a workspace to begin after Terraform successfully completes an apply operation. During this phase, HCP Terraform sends information about the run to the configured external system and waits for a `passed` or `failed` response. However, unlike other stages in the run task process, a failed outcome does not halt the run since HCP Terraform has already provisioned the infrastructure. + +_States in this stage:_ + +- **Post-apply running:** HCP Terraform is waiting for a response from the configured external system(s). +- External systems must respond initially with a `200 OK` acknowledging the request is in progress. After that, they have 10 minutes to return a status of `passed`, `running`, or `failed`. If the timeout expires, HCP Terraform assumes that the run tasks is in the `failed` status. + +_Leaving this stage:_ + +- There are only advisory tasks on this stage. +- If any advisory tasks failed, the run proceeds to the **Applied** state, with a visible warning regarding the failed task. +- If a user cancels the run, the run ends in the **Canceled** state. + +## Completion + +A run is complete if it finishes applying, if any part of the run fails, if there is nothing to do, or if a user chooses not to continue. Once a run completes, the next run in the queue can enter the plan stage. + +_States in this stage:_ + +- **Applied:** The run was successfully applied. +- **Planned and Finished:** `terraform plan`'s output already matches the current infrastructure state, so `terraform apply` doesn't need to do anything. +- **Apply Errored:** The `terraform apply` command failed, possibly due to a missing or misconfigured provider or an illegal operation on a provider. +- **Plan Errored:** The `terraform plan` command failed (usually requiring fixes to variables or code), or a hard-mandatory Sentinel policy failed. The run cannot be applied. +- **Discarded:** A user chose not to continue this run. +- **Canceled:** A user interrupted the `terraform plan` or `terraform apply` command with the "Cancel Run" button. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/run/ui.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/run/ui.mdx new file mode 100644 index 0000000000..36fb9b192b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/run/ui.mdx @@ -0,0 +1,140 @@ +--- +page_title: UI and VCS-driven run workflow in Terraform Enterprise +description: >- + Use Terraform Enterprise's UI and VCS-driven run workflow to automatically + queue runs when merging new commits to the VCS repository branch associated + with a workspace. +source: terraform-docs-common +--- + +# UI and VCS-driven run workflow + +HCP Terraform has three workflows for managing Terraform runs. + +- The UI/VCS-driven run workflow described below, which is the primary mode of operation. +- The [API-driven run workflow](/terraform/enterprise/run/api), which is more flexible but requires you to create some tooling. +- The [CLI-driven run workflow](/terraform/enterprise/run/cli), which uses Terraform's standard CLI tools to execute runs in HCP Terraform. + +## Summary + +In the UI and VCS workflow, every workspace is associated with a specific branch of a VCS repo of Terraform configurations. HCP Terraform registers webhooks with your VCS provider when you create a workspace, then automatically queues a Terraform run whenever new commits are merged to that branch of workspace's linked repository. + +HCP Terraform also performs a [speculative plan][] when a pull request is opened against that branch. HCP Terraform posts a link to the plan in the pull request, and re-runs the plan if the pull request is updated. + +[speculative plan]: /terraform/enterprise/run/remote-operations#speculative-plans + +The Terraform code for a normal run always comes from version control, and is always associated with a specific commit. + +## Automatically Starting Runs + +In a workspace linked to a VCS repository, runs start automatically when you merge or commit changes to version control. + +If you use GitHub as your VCS provider and merge a PR changing 300 or more files, HCP Terraform automatically triggers runs for every workspace connected to that repository. The GitHub API has a limit of 300 reported changed files for a PR merge. To address this, HCP Terraform initiates workspace runs proactively, preventing oversight of file changes beyond this limit. + +A workspace is linked to one branch of a VCS repository and ignores changes to other branches. You can specify which files and directories within your repository trigger runs. HCP Terraform can also automatically trigger runs when you create Git tags. Refer to [Automatic Run Triggering](/terraform/enterprise/workspaces/settings/vcs#automatic-run-triggering) for details. + +-> **Note:** A workspace with no runs will not accept new runs via VCS webhook. At least one run must be manually queued to confirm that the workspace is ready for further runs. + +A workspace will not process a webhook if the workspace previously processed a webhook with the same commit SHA and created a run. To trigger a run, create a new commit. If a workspace receives a webhook with a previously processed commit, HCP Terraform will add a new event to the [VCS Events](/terraform/enterprise/vcs#viewing-events) page documenting the received webhook. + +## Manually Starting Runs + +You can manually trigger a run using the UI. Manual runs let you apply configuration changes when you update variable values but the configuration in version control is unchanged. You must manually trigger an initial run in any new VCS-driven workspace. + +-> **Note:** When you trigger a manual run, HCP Terraform does not fetch the latest commit from your VCS repository, and instead uses the current [configuration version](/terraform/enterprise/workspaces/configurations) associated with the workspace. HCP Terraform uses [VCS Webhooks](/terraform/enterprise/vcs#webhooks) to monitor changes in your VCS repository and update your configuration version. + +To start a run: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to start a run in. +2. Click **+ New run**, opening the **Start a new run** dialog. +3. Select the run mode and provide an optional message. + +Review the [run modes documentation](/terraform/enterprise/run/modes-and-options) for more detail on supported options. + +Run modes that have a plan phase support debugging mode. This is equivalent to setting the `TF_LOG` environment variable to `TRACE` for this run only. To enable debugging, click **Additional planning options** under the run mode and click **Enable debugging mode**. See [Debugging Terraform](/terraform/internals/debugging) for more information. + +To [replace](/terraform/enterprise/run/modes-and-options#replacing-selected-resources) specific resources as part of a standard plan and apply run, expand the **Additional planning options** section and select the resources to replace. + +Manually starting a run requires permission to queue plans for the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +If the workspace has a plan that is still in the [plan stage](/terraform/enterprise/run/states#the-plan-stage) when a new plan is queued, you can either wait for it to complete, or visit the **Current Run** page and click **Run this plan now**. Be aware that this action terminates the current plan and unlocks the workspace, which can lead to anomalies in behavior, but can be useful if the plans are long-running and the current plan does not have all the desired changes. + +## Automatically cancel plan-only runs triggered by outdated commits + +Refer to [Automatically cancel plan-only runs triggered by outdated commits](/terraform/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management) for additional information. + +## Confirming or Discarding Plans + +By default, run plans require confirmation before HCP Terraform will apply them. Users with permission to apply runs for the workspace can navigate to a run that has finished planning and click the "Confirm & Apply" or "Discard Plan" button to finish or cancel a run. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) If necessary, use the "View Plan" button for more details about what the run will change. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +![confirm button](/img/docs/runs-confirm.png) + +Users can also leave comments if there's something unusual involved in a run. + +Note that once the plan stage is completed, until you apply or discard a plan, HCP Terraform can't start another run in that workspace. + +### Auto apply + +If you would rather automatically apply plans that don't have errors, you can [enable auto apply](/terraform/enterprise/workspaces/settings#auto-apply-and-manual-apply) on the workspace's "General Settings" page. Some plans can't be auto-applied, like plans queued by [run triggers](/terraform/enterprise/workspaces/settings/run-triggers) or by users without permission to apply runs. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Speculative Plans on Pull Requests + +To help you review proposed changes, HCP Terraform can automatically run [speculative plans][speculative plan] for pull requests or merge requests. + +### Viewing Pull Request Plans + +You can view speculative plans in a workspace's list of normal runs. Additionally, HCP Terraform adds a link to the run in the pull request itself, along with an indicator of the run's status. + +A single pull request can include links to multiple plans, depending on how many workspaces connect to the destination branch. If you update a pull request, HCP Terraform performs new speculative plans and update the links. + +Although any contributor to the repository can see the status indicators for pull request plans, only members of your HCP Terraform organization with permission to read runs for the affected workspaces can click through and view the complete plan output. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Rules for Triggering Pull Request Plans + +Whenever a pull request is _created or updated,_ HCP Terraform checks whether it should run speculative plans in workspaces connected to that repository, based on the following rules: + +- Only pull requests that originate from within the same repository can trigger speculative plans. + + To avoid executing malicious code or exposing sensitive information, HCP Terraform doesn't run speculative plans for pull requests that originate from forks of a repository. + + -> **Note:** On Terraform Enterprise, administrators can choose to allow speculative plans on pull requests that originate from forks. To learn more about this setting, refer to the [general settings documentation](/terraform/enterprise/admin/application/general#allow-speculative-plans-on-pull-requests-from-forks) + +- Pull requests can only trigger runs in workspaces where automatic speculative plans are allowed. You can [disable automatic speculative plans](/terraform/enterprise/workspaces/settings/vcs#automatic-speculative-plans) in a workspace's VCS settings. + +- A pull request will only trigger speculative plans in workspaces that are connected to that pull request's destination branch. + + The destination branch is the branch that a pull request proposes to make changes to; this is often the repository's main branch, but not always. + +- If a workspace is configured to only treat certain directories in a repository as relevant, pull requests that don't affect those directories won't trigger speculative plans in that workspace. For more information, see [VCS settings: automatic run triggering](/terraform/enterprise/workspaces/settings/vcs#automatic-run-triggering). + + -> **Note:** If HCP Terraform skips a plan because the changes weren't relevant, it will still post a passing commit status to the pull request. + +- HCP Terraform does not update the status checks on a pull request with the status of an associated apply. This means that a commit with a successful plan but an errored apply will still show the passing commit status from the plan. + +### Contents of Pull Request Plans + +Speculative plans for pull requests use the contents of the head branch (the branch that the PR proposes to merge into the destination branch), and they compare against the workspace's current state at the time of the plan. This means that if the destination branch changes significantly after the head branch is created, the speculative plan might not accurately show the results of accepting the PR. To get a more accurate view, you can rebase the head branch onto a more recent commit, or merge the destination branch into the head branch. + +## Testing Terraform Upgrades with Speculative Plans + +You can start a new [speculative plan][speculative plan] in the UI with the workspace's current configuration version and any Terraform version available to the organization. + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to try a new Terraform version in. +2. Click **+ New run**. +3. Select **Plan only** as the run type. +4. Select a version from the **Choose Terraform version** menu. The speculative plan will use this version without changing the workspace's settings. +5. Click **Start run**. + +If the run is successful, you can change the workspace's Terraform version and [upgrade the state](/terraform/enterprise/workspaces/state#upgrading-state). + +## Speculative Plans During Development + +You can also use the CLI to run speculative plans on demand before making a pull request. Refer to the [CLI-driven run workflow](/terraform/enterprise/run/cli#remote-speculative-plans) for more details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/2fa.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/2fa.mdx new file mode 100644 index 0000000000..f9377e882c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/2fa.mdx @@ -0,0 +1,47 @@ +--- +page_title: Configure two-factor authentication +description: Use two-factor authentication to secure access to Terraform Enterprise. +source: terraform-docs-common +--- + +# Configure two-factor authentication + +User accounts can be additionally protected with two-factor authentication (2FA), and an organization owner can make this a requirement for all users. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Setting up Two-factor Authentication + +To reach your user security settings page: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise. +2. Click the user icon in the upper right corner of the screen. +3. Choose **Account Settings** from the menu. + +Once on this page you can set-up authentication with either a TOTP-compliant application and/or an SMS-enabled phone number. Choose your preferred authentication method and enter a phone number (optional if using an application), then follow the instructions to finish the configuration. If you are using an application, you must scan a QR code to enable it; for either method, you must enter valid authentication codes to verify a successful set-up. + +After you finish, the two-factor authentication settings will change to show your currently configured authentication method. You can click the "Reveal codes" link to view backup codes, or use the "Disable 2FA" button to disable two-factor authentication. + +## Logging in with Two-factor Authentication + +After two-factor authentication has been successfully set-up you will need to enter the code from your TOTP-compliant application or from an SMS sent to your approved SMS-enabled phone number on login. + +If necessary you can also use a backup code by clicking "Use a recovery code". Please remember that each backup code can only be used to log in once. + +## Requiring Two-factor Authentication for All Users + +If you are an organization owner you can require all users within your organization to use two-factor authentication. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Click **Settings** in your organization to reach your organization'a settings page, then click **Authentication**. + +Click the button "Require two-factor". Please remember that all organization owners must have two-factor authentication on before this can be set. + +## Requiring Two-factor Authentication for Users with HashiCorp Cloud Platform + +When you require two-factor authentication for all users and have users who [sign in with their HashiCorp Cloud Platform Account](/terraform/enterprise/users-teams-organizations/users#log-in-with-your-hashicorp-cloud-platform-account), the required configuration for each organization member depends on their linked HashiCorp Cloud identity: + +- **Email**: Follow the instructions in the [HashiCorp Cloud MFA](/hcp/docs/hcp/admin/iam/mfa) docs. +- **GitHub**: Follow the instructions in the [Configuring GitHub two-factor authentication](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication) docs. +- **SSO**: HCP Terraform does not currently support HCP SSO accounts. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/api-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/api-tokens.mdx new file mode 100644 index 0000000000..5aa5db1023 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/api-tokens.mdx @@ -0,0 +1,129 @@ +--- +page_title: Manage API tokens for Terraform Enterprise +description: >- + Use API tokens to authenticate with Terraform Enterprise and perform API + operations. +source: terraform-docs-common +--- + +# API Tokens + +This topic describes the distinct types of API tokens you can use to authenticate with HCP Terraform. + +Note that HCP Terraform only displays API tokens once when you initially create them and are obfuscated thereafter. If the token is lost, it must be regenerated. + +Refer to [Team Token API](/terraform/enterprise/api-docs/team-tokens) and [Organization Token API](/terraform/enterprise/api-docs/organization-tokens) for additional information about using the APIs. + +## User API Tokens + +API tokens may belong directly to a user. User tokens are the most flexible token type because they inherit permissions from the user they are associated with. For more information on user tokens and how to generate them, see the [Users](/terraform/enterprise/users-teams-organizations/users#tokens) documentation. + +## Team API Tokens + +API tokens may belong to a specific team. Team API tokens allow access to the workspaces that the team has access to, without being tied to any specific user. + +Navigate to the **Organization Settings > API Tokens > Team Tokens** tab to manage API tokens for a team or create new team tokens. + +Teams can have multiple valid tokens at a time, so long as the tokens' descriptions are unique within the context of the given team. A token without a description is considered a legacy token, and only one legacy token can exist at a given time. + +The [**legacy API**](/terraform/enterprise/api-docs/team-tokens#legacy-team-tokens-api-reference) will only operate on the legacy token, and generating a new legacy token invalidates the previous legacy token. + +The [**non-legacy API**](/terraform/enterprise/api-docs/team-tokens#team-tokens-api-reference) will support the existence of multiple, valid team tokens, meaning that when a new, non-legacy token is generated, existing tokens will remain valid. + +Owners and users with [manage teams](/terraform/enterprise/users-teams-organizations/permissions#manage-teams) permissions have the ability to enable and disable team token management for a team, which limits the actions that team members can take on a team token. Refer to [Allow Member Token Management](/terraform/enterprise/users-teams-organizations/permissions#allow-member-token-management) for more information. + +Team API tokens are designed for performing API operations on workspaces. They have the same access level to the workspaces the team has access to. For example, if a team has permission to apply runs on a workspace, the team's token can create runs and configuration versions for that workspace via the API. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Note that the individual members of a team can usually perform actions the team itself cannot, since users can belong to multiple teams, can belong to multiple organizations, and can authenticate with Terraform's `atlas` backend for running Terraform locally. + +If an API token is generated for the "owners" team, then that API token will have all of the same permissions that an organization owner would. + +## Organization API Tokens + +API tokens may be generated for a specific organization. Organization API tokens allow access to the organization-level settings and resources, without being tied to any specific team or user. + +To manage the API token for an organization, go to **Organization settings > API Token** and use the controls under the "Organization Tokens" header. + +Each organization can have **one** valid API token at a time. Only [organization owners](/terraform/enterprise/users-teams-organizations/teams#the-owners-team) can generate or revoke an organization's token. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Organization API tokens are designed for creating and configuring workspaces and teams. We don't recommend using them as an all-purpose interface to HCP Terraform; their purpose is to do some initial setup before delegating a workspace to a team. For more routine interactions with workspaces, use [team API tokens](#team-api-tokens). + +Organization API tokens have permissions across the entire organization. They can perform all CRUD operations on most resources, but have some limitations; most importantly, they cannot start runs or create configuration versions. Any API endpoints that can't be used with an organization API token include a note like the following: + +-> **Note:** This endpoint cannot be accessed with [organization tokens](#organization-api-tokens). You must access it with a [user token](/terraform/enterprise/users-teams-organizations/users#api-tokens) or [team token](#team-api-tokens). + +<!-- BEGIN: TFC:only --> + +## Audit trail tokens + +You can generate an audit trails token to read an organization's [audit trails](/terraform/enterprise/api-docs/audit-trails). Use this token type to authenticate integrations pulling audit trail data, for example, using the [HCP Terraform for Splunk](/terraform/enterprise/integrations/splunk) app. + +To manage an organization's audit trails token, go to **Organization settings > API Token** and use the settings under the "Audit Token" header. + +Each organization can only have a _single_ valid audit trails token. Only [organization owners](/terraform/enterprise/users-teams-organizations/teams#the-owners-team) can generate or revoke an organization's audit trails token. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +<!-- END: TFC:only --> + +## Agent API Tokens + +[Agent pools](/terraform/cloud-docs/agents) have their own set of API tokens which allow agents to communicate with HCP Terraform, scoped to an organization. These tokens are not valid for direct usage in the HCP Terraform API and are only used by agents. + +## Access Levels + +The following chart illustrates the various access levels for the supported API token types. Some permissions are implicit based on the token type, others are dependent on the permissions of the associated user, team, or organization. + +🔵 = Implicit for token type 🔶 = Requires explicit permission + +| | User tokens | Team tokens | Organization tokens | +| ---------------------------------- | :---------: | :---------: | :-----------------: | +| **Users** | | | | +| Manage account settings | 🔵 | | | +| Manage user tokens | 🔵 | | | +| **Workspaces** | | | | +| Read workspace variables | 🔶 | 🔶 | 🔵 | +| Write workspace variables | 🔶 | 🔶 | 🔵 | +| Plan, apply, upload states | 🔶 | 🔶 | | +| Force cancel runs | 🔶 | 🔶 | | +| Create configuration versions | 🔶 | 🔶 | | +| Create or modify workspaces | 🔶 | 🔶 | 🔵 | +| Remote operations | 🔶 | 🔶 | | +| Manage run triggers | 🔶 | 🔶 | 🔵 | +| Manage notification configurations | 🔶 | 🔶 | | +| Manage run tasks | 🔶 | 🔶 | 🔵 | +| **Teams** | | | | +| Create teams | 🔶 | 🔶 | 🔵 | +| Modify team | 🔶 | 🔶 | 🔵 | +| Read team | 🔶 | 🔶 | 🔵 | +| Manage team tokens | 🔶 | 🔶 | 🔵 | +| Manage team workspace access | 🔶 | 🔶 | 🔵 | +| Manage team membership | 🔶 | 🔶 | 🔵 | +| **Organizations** | | | | +| Create organizations | 🔵 | | | +| Modify organizations | 🔶 | | | +| Manage organization tokens | 🔶 | | | +| View audit trails | | | 🔵 | +| Invite users to organization | 🔶 | 🔶 | 🔵 | +| **Sentinel** | | | | +| Manage Sentinel policies | 🔶 | 🔶 | 🔵 | +| Manage policy sets | 🔶 | 🔶 | 🔵 | +| Override policy checks | 🔶 | 🔶 | | +| **Integrations** | | | | +| Manage VCS connections | 🔶 | 🔶 | 🔵 | +| Manage SSH keys | 🔶 | 🔶 | | +| Manage run tasks | 🔶 | 🔶 | 🔵 | +| **Modules** | | | | +| Manage Terraform modules | 🔶 | 🔵 (owners) | | + +## Token Expiration + +You can create user, team, and organization tokens with an expiration date and time. Once the expiration time has passed, the token is longer treated as valid and may not be used to authenticate to any API. Any API requests made with an expired token will fail. + +HashiCorp recommends setting an expiration on all new authentication tokens. Creating tokens with an expiration date helps reduce the risk of accidentally leaking valid tokens or forgetting to delete tokens meant for a delegated use once their intended purpose is complete. + +You can not modify the expiration of a token once you have created it. The HCP Terraform UI displays tokens relative to the current user's timezone, but all tokens are passed and displayed in UTC in ISO 8601 format through the HCP Terraform API. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/index.mdx new file mode 100644 index 0000000000..543f10aaa0 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/index.mdx @@ -0,0 +1,338 @@ +--- +page_title: Organizations overview +description: >- + Organizations are groups of projects and workspaces that let teams + collaborate. Learn how to create and manage Terraform Enterprise + organizations. +source: terraform-docs-common +--- + +[teams]: /terraform/enterprise/users-teams-organizations/teams + +[users]: /terraform/enterprise/users-teams-organizations/users + +[owners]: /terraform/enterprise/users-teams-organizations/teams#the-owners-team + +# Organizations overview + +This topic provides overview information about how to create and manage organizations in HCP Terraform and Terraform Enterprise. An organization contains one or more projects. + +## Requirements + +The **admin** permission preset must be enabled on your profile to create and manage organizations in the HCP Terraform UI. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) for additional information. + +## API and Terraform Enterprise Provider + +In addition to the HCP Terraform UI, you can use the following methods to manage organizations: + +- [Organizations API](/terraform/enterprise/api-docs/organizations) +- The `tfe` provider [`tfe_organization`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/organization) resource + +## Select an organization + +HCP Terraform displays your current organization in the sidebar. To select an organization: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise. +2. Click the current organization name to view a list of all the organizations where you are a member. +3. Click an organization to select it. HCP Terraform displays list of workspaces within that organization. + +## Join an organization + +To join an organization, the organization [owners][] or a user with specific [team management](/terraform/enterprise/users-teams-organizations/permissions#team-management-permissions) permissions must invite you, and you must accept the emailed invitation. [Learn more](#users). + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Leave an organization + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and click the Terraform logo in the page header to navigate to the **Organizations** page. +2. Open the **...** ellipses menu next to the organization and select **Leave organization**. + +You do not need permission from the owners to leave an organization, but you cannot leave if you are the last member of the owners team. Either add a new owner and then leave, or [delete the organization](/terraform/enterprise/users-teams-organizations/organizations#general). + +## Create an organization + +<EnterpriseAlert> + +On Terraform Enterprise, administrators can restrict your ability to create organizations. Refer to [Organization Creation](/terraform/enterprise/admin/application/general#organization-creation) for details. + +</EnterpriseAlert> + +On HCP Terraform, any user can create a new organization. If you do not belong to any organizations, HCP Terraform prompts you to create one the first time you [sign in](https://app.terraform.io/). To create an organization: + +1. Click the current organization name and select **Create new organization**. The **Create a new organization** page appears. +2. Enter a unique **Organization name** Organization names can include numbers, letters, underscores (`_`), and hyphens (`-`). +3. Provide an **Email address** to receive notifications about the organization. +4. Click **Create organization**. + +HCP Terraform shows the new organization and prompts you to create a new workspace. You can also [invite other users](#users) to join the organization. + +<!-- BEGIN: TFC:only name:managed-resources --> + +## Managed resources + +Your organization’s managed resource count helps you understand the number of infrastructure resources that HCP Terraform manages across all your workspaces. + +HCP Terraform reads all the workspaces’ state files to determine the total number of managed resources. Each [resource](/terraform/language/resources/syntax) instance in the state equals one managed resource. HCP Terraform includes resources in modules and each resource created with the `count` or `for_each` meta-arguments. HCP Terraform does not include [data sources](/terraform/language/data-sources) in the count. Refer to [Managed Resources Count](/terraform/enterprise/workspaces/state#managed-resources-count) in the workspace state documentation for more details. + +You can view your organization's managed resource count on the **Usage** page. + +<!-- END: TFC:only name:managed-resources --> + +## Create and manage reserved tag keys + +~> **Reserved tag keys are in beta**: We do not recommend using beta features in production environments. + +You can define reserved tag keys that appear as suggested labels when managers want to add tags to their projects and workspaces in the organization. Refer to [Create and manage reserved tag keys](/terraform/enterprise/users-teams-organizations/organizations/manage-reserved-tags) for instructions. + +You can also view single-value tags that may already be attached to projects and workspaces. Refer to [Tags](#tags) in the organization settings reference for additional information. + +## Managing settings + +To view and manage an organization's settings, click **Settings**. + +The contents of the organization settings depends on your permissions within the organization. All users can review the organization's contact email, view the membership of any teams they belong to, and view the organization's authentication policy. [Organization owners][owners] can view and manage the entire list of organization settings. Refer to [Organization Permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) for details. + +You may be able to manage the following organization settings. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Organization settings + +#### General + +Review the organization name and contact email. Organization owners can choose to change the organization name, contact email, and the default execution mode, or delete the organization. When an organization owner updates the default execution mode, all workspaces configured to [inherit this value](/terraform/enterprise/workspaces/settings#execution-mode) will be affected. + +Organization owners can also choose whether [workspace administrators](/terraform/enterprise/users-teams-organizations/permissions#workspace-admins) can delete workspaces that are managing resources. Deleting a workspace with resources under management introduces risk because Terraform can no longer track or manage the infrastructure. The workspace's users must manually delete any remaining resources or [import](/terraform/cli/commands/import) them into another Terraform workspace. + +<!-- BEGIN: TFC:only name:generated-tests --> + +Organization owners using HCP Terraform Plus edition can choose whether members with [module management permissions](/terraform/enterprise/users-teams-organizations/permissions#manage-private-registry) can [generate module tests](/terraform/enterprise/registry/test#generated-module-tests). + +<!-- END: TFC:only name:generated-tests --> + +##### Renaming an organization + +!> **Warning:** Deleting or renaming an organization can be very disruptive. We strongly recommend against deleting or renaming organizations with active members. + +To rename an organization that manages infrastructure: + +1. Alert all members of the organization about the name change. +2. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to rename. +3. Cancel in progress and pending runs or wait for them to finish. HCP Terraform cannot change the name of an organization with runs in progress. +4. Lock all workspaces to ensure that no new runs will start before you change the name. +5. Rename the organization. +6. Update all components using the HCP Terraform API to the new organization name. This includes Terraform's `cloud` block CLI integration, the `tfe` Terraform provider, and any external API integrations. +7. Unlock workspaces and resume normal operations. + +#### Plan & Billing + +Review the organization's plan and any invoices for previous plan payments. Organization owners can also upgrade to one of HCP Terraform's paid plans, downgrade to a free plan, or begin a free trial of paid features. + +#### Tags + +Click the **Tags** tab in the **Tags Management** screen to view single-value tags that may have already been created in your system. The table on lists the tags in the system, the number of times a tag appears in a project or workspace, and the date the tag was created. + +The only action you can perform in the UI is deleting single-value tags from the system. You can use the following methods to delete single-value tags: + +1. Select one or more tags and click **Delete tags**. +2. Select the **Name** header to select all tags, then click **Delete tags**. +3. Click the trash icon for a tag and confirm that you want to permanently delete it when prompted. + +#### Teams + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/team-management.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +All users in an organization can access the **Teams** page, which displays a list of [teams][] within the organization. + +Organization owners and users with the [include secret teams permission](/terraform/enterprise/users-teams-organizations/permissions#include-secret-teams) can: + +- view all [secret teams](/terraform/enterprise/users-teams-organizations/teams/manage#team-visibility) +- view each team's membership +- manage team API tokens + +HCP Terraform restricts team creation, team deletion, and management of team API tokens to organization owners and users with the [manage teams](/terraform/enterprise/users-teams-organizations/permissions#manage-teams) permission. Organization owners and users with the [manage membership](/terraform/enterprise/users-teams-organizations/permissions#manage-membership) permission can manage team membership. Remember that users must accept their organization invitations before you can add them to a team. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +#### Users + +Organization owners and users with [manage membership](/terraform/enterprise/users-teams-organizations/permissions#manage-membership) permissions can invite HCP Terraform users into the organization, cancel invitations, and remove existing members. + +The list of users is separated into one tab for active users and one tab for invited users who have not yet accepted their invitations. For active users, the list includes usernames, email addresses, avatar icons, two-factor authentication status, and current team memberships. Use the **Search by username or email** field to filter these lists. + +User invitations are always sent by email; you cannot invite someone using their HCP Terraform username. To invite a user to an organization: + +1. Click **Invite a user**. The **invite a user** box appears. +2. Enter the user's email address and optionally add them to one or more teams. If the user accepts the invitation, HCP Terraform automatically adds them to the specified teams. + +All permissions in HCP Terraform are managed through teams. Users can join an organization without belonging to any teams, but they cannot use HCP Terraform features until they belong to a team. Refer to [permissions](/terraform/enterprise/users-teams-organizations/permissions) for details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +#### Variable Sets + +View all of the available variable sets and their variables. Users with [**Manage variable set** permissions](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) can create variable sets and assign them to one or more projects or workspaces. + +Variable sets let you reuse the same variables across multiple workspaces or projects in an organization. For example, you could define a variable set of provider credentials and automatically apply it to several projects or workspaces, rather than manually defining credential variables in each. Changes to variable sets instantly apply to all appropriate workspaces, saving time and reducing errors from manual updates. + +Refer to the [variables overview](/terraform/enterprise/workspaces/variables) documentation for details about variable types, scope, and precedence. Refer to [managing variables](/terraform/enterprise/workspaces/variables/managing-variables) for details about how to create and manage variable sets. + +#### Health + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/health-assessments.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +HCP Terraform can perform automatic health assessments in a workspace to assess whether its real infrastructure matches the requirements defined in its Terraform configuration. Health assessments include the following types of evaluations: + +- Drift detection determines whether your real-world infrastructure matches your Terraform configuration. Drift detection requires Terraform version 0.15.4+. +- Continuous validation determines whether custom conditions in the workspace’s configuration continue to pass after Terraform provisions the infrastructure. Continuous validation requires Terraform version 1.3.0+. + +You can enforce health assessments for all eligible workspaces or let each workspace opt in to health assessments through workspace settings. Refer to [Health](/terraform/enterprise/workspaces/health) in the workspaces documentation for more details. + +#### Runs + +From the Workspaces page, click **Settings** in the sidebar, then **Runs** to view all of the current runs in your organization's workspaces. The **Runs** page displays: + +- The name of the run +- The run's ID +- What triggered the run +- The workspace and project where the run is taking place +- When the latest change in the run occurred +- A button allowing you to cancel that run + +You can apply the following filters to limit the runs HCP Terraform displays: + +- Click **Needs Attention** to display runs that require user input to continue, such as approving a plan or overriding a policy. +- Click **Running** to display runs that are in progress. +- Click **On Hold** to display paused runs. + +For precise filtering, click **More filters** and check the boxes to filter runs by specific [run statuses](/terraform/enterprise/run/states), [run operations](/terraform/enterprise/run/modes-and-options), workspaces, or [agent pools](/terraform/cloud-docs/agents/agent-pools). Click **Apply filters** to list the runs that match your criteria. + +You can dismiss any of your filtering criteria by clicking the **X** next to the filter name above the table displaying your runs. + +For more details about run states, refer to [Run States and Stages](/terraform/enterprise/run/states). + +### Integrations + +#### Cost Estimation + +Enable and disable the [cost estimation](/terraform/enterprise/cost-estimation) feature for all workspaces. + +#### Policies + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Policies let you define and enforce rules for Terraform runs. You can write them using either the [Sentinel](/terraform/enterprise/policy-enforcement/sentinel) or [Open Policy Agent (OPA)](/terraform/enterprise/policy-enforcement/opa) policy-as-code frameworks and then group them into policy sets that you can apply to workspaces in your organization. To create policies and policy sets, you must have [permission to manage policies](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions). + +#### Policy Sets + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/policies.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Create groups of policies and enforce those policy sets globally or on specific [projects](/terraform/enterprise/projects/manage) and workspaces. You can create policy sets through the Terraform API, by connecting a VCS repository containing policies, or directly in HCP Terraform. To create policies and policy sets, you must have [permission to manage policies](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions). + +Refer to [Managing Policy Sets](/terraform/enterprise/policy-enforcement/manage-policy-sets) for details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +#### Run Tasks + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/run-tasks.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Manage the run tasks that you can add to workspaces within the organization. [Run tasks](/terraform/enterprise/workspaces/settings/run-tasks) let you integrate third-party tools and services at specific stages in the HCP Terraform run lifecycle. + +### Security + +#### Agents + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/agents.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Create and manage [HCP Terraform agent pools](/terraform/cloud-docs/agents). HCP Terraform agents let HCP Terraform communicate with isolated, private, or on-premises infrastructure. This is useful for on-premises infrastructure types such as vSphere, Nutanix, OpenStack, enterprise networking providers, and infrastructure within a protected enclave. + +#### API Tokens + +Organization owners can set up a special [Organization API Token](/terraform/enterprise/users-teams-organizations/api-tokens) that is not associated with a specific user or team. + +#### Authentication + +Organization owners can determine when users must reauthenticate and require [two-factor authentication](/terraform/enterprise/users-teams-organizations/2fa) for all members of the organization. + +#### SSH Keys + +Manage [SSH keys for cloning Git-based modules](/terraform/enterprise/workspaces/settings/ssh-keys) during Terraform runs. This does not include keys to access a connected VCS provider. + +#### SSO + +Organization owners can set up an SSO provider for the organization. + +### Version Control + +#### VCS General + +Configure [Automatically cancel plan-only runs triggered by outdated commits](/terraform/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management) to manage the setting. + +#### VCS Events + +-> **Note:** This feature is in beta. + +Review the event logs for GitLab.com connections. + +#### VCS Providers + +Configure [VCS providers](/terraform/enterprise/vcs) to use in the organization. You must have [permission to manage VCS settings](/terraform/enterprise/users-teams-organizations/permissions). + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Destruction and Deletion + +#### Data Retention Policies + +<EnterpriseAlert> +Data retention policies are exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +An organization owner can set or override the following data retention policies: + +- **Admin default policy** +- **Do not auto-delete** +- **Auto-delete data** + +Setting the data retention policy to **Admin default policy** disables the other data retention policy settings. + +By default, the **Do not auto-delete** option is enabled for an organization. This option directs Terraform Enterprise to retain data associated with configuration and state versions, but organization owners can define configurable data retention policies that allow Terraform to _soft delete_ the backing data associated with configuration versions and state versions. Soft deleting refers to marking a data object for garbage collection so that Terraform can delete the object after a set number of days. + +Once an object is soft deleted, any attempts to read the object will fail. Until the garbage collection process begins, you can restore soft deleted objects using the APIs described in the [configuration version documentation](/terraform/enterprise/api-docs/configuration-versions) and the [state version documentation](/terraform/enterprise/api-docs/state-versions). Terraform permanently deletes the archivist storage after the garbage collection grace period elapses. + +The organization policy is the default policy applied to all workspaces, but members of individual workspaces can set overriding policies for their workspaces that take precedence over the organization policy. + +## Trial Expired Organizations + +HCP Terraform paid features are available as a free trial. When a free trial has expired, the organization displays a banner reading **TRIAL EXPIRED — Upgrade Required**. + +Organizations with expired trials return to the feature set of a free organization, but they retain any data created as part of paid features. Specifically, HCP Terraform disables the following features: + +- Teams other than `owners` and locks users who do not belong to the `owners` team out of the organization. HCP Terraform preserves team membership and permissions and re-enables them after you upgrade the organization. +- Sentinel policy checks. HCP Terraform preserves existing policies and policy sets and re-enables them after you upgrade the organization. +- Cost estimation. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/manage-reserved-tags.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/manage-reserved-tags.mdx new file mode 100644 index 0000000000..60709f95c5 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/manage-reserved-tags.mdx @@ -0,0 +1,59 @@ +--- +page_title: Create and manage reserved tag keys +description: >- + Reserved tag keys let you organize projects and workspaces and track + consumption. Learn how to create and manage reserved tag keys. +source: terraform-docs-common +--- + +# Create and manage reserved tag keys + +This topic describes how to create and manage reserved tag keys in HCP Terraform. You can use reserved tag keys to help managers consistently label workspaces and projects in your organization. + +## Introduction + +You can define reserved tag keys that appear as suggested labels when managers want to add tags to their projects and workspaces in the organization. Doing so helps you standardize tag keys and prevent duplicates that affect your ability to track resources. + +Refer to the following topics for information about creating and managing tags attached to projects and workspaces: + +- [Create a project](/terraform/enterprise/projects/manage#create-a-project) +- [Create workspace tags](/terraform/enterprise/workspaces/tags) + +## Requirements + +The **admin** permission preset must be enabled on your profile to create and manage reserved tags. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) for additional information. + +## Define a reserved tag key + +You can define reserved tag keys for your organization so that project and workspace managers can use consistent labels. + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to define a reserved tag for. +2. Choose **Settings** from the sidebar, then **Tags**. +3. Click on the **Reserved Keys** tab. +4. Click **New reserved tag key** and specify a key value when prompted. Keys are unique and can have up to 128 characters. You can use letters, numbers, spaces, and the following special characters: `.`, `=`, `+`, `-`, `@`, `:`, `-`, and `_`. +5. You can enable the **Disable overrides** option to prevent project and workspace managers from overriding the key. Refer to [Disable overrides for project tags](#disable-overrides-for-project-tags) for additional information. +6. Click **Save** to finish adding the key. + +## Delete a reserved key + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to delete a reserved tag. +2. Choose **Settings** from the sidebar, then **Tags**. +3. Click on the **Reserved Keys** tab. +4. Open the ellipses menu and choose **Delete &lt;key-name>**. +5. Click **Yes, delete reserved key** when prompted. + +To re-add a key, you must manually complete the steps described in [Define a reserved tag key](#define-a-reserved-tag-key). + +## Edit a reserved key + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to edit a reserved tag. +2. Choose **Settings** from the sidebar, then **Tags**. +3. Click on the **Reserved Keys** tab. +4. Open the ellipses menu and choose **Edit &lt;key-name>**. +5. Specify your changes and click **Save**. + +## Disable overrides for project tags + +Enable the **Disable overrides** option when creating or editing a reserved tag key to prevent project and workspace managers from overriding the tag keys. + +This option is not retroactive. When a workspace contains keys that were overridden before you enabled the **Disable overrides** option, you must first remove the tags from the workspace. You can then re-apply the keys to the workspace so that HCP Terraform can allow future updates to the workspace tag bindings. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management.mdx new file mode 100644 index 0000000000..8945635223 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-speculative-plan-management.mdx @@ -0,0 +1,45 @@ +--- +page_title: Automatically cancel plan-only runs triggered by outdated commits +description: >- + Learn how to configure Terraform Enterprise to automatically cancel Terraform + plan operations triggered by pull requests when new commits are pushed to the + VCS. +source: terraform-docs-common +--- + +# Automatically cancel plan-only runs + +This topic describes how to configure HCP Terraform to automatically cancel plan-only Terraform run triggered by pull requests in the VCS. + +## Introduction + +When connected to a VCS, HCP Terraform can automatically start a Terraform run that performs a `terraform plan` operation when someone creates a pull request (PR) in the repository. Refer to [Connecting to VCS](/terraform/enterprise/vcs) for additional information. + +When team members push new commits to the same branch, HCP Terraform starts new run that performs a `terraform plan` operation. But as team members push new commits, the queue of Terraform runs can cause delays and reduce efficiency. + +You can enable the **Automatically cancel speculative plans for outdated commits** option in the organization's settings screen so that HCP Terraform automatically cancel unfinished plan-only runs in VCS workflows. + +## Configure automatic cancellation + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select your organization. +2. Choose **Settings** from the sidebar. +3. Under the **Version Control** group of settings, click **General**. +4. Enable the **Automatically cancel speculative plans for outdated commits** option under the **Manage speculative plans** section. +5. Click **Update settings**. + +After enabling the option, HCP Terraform cancels ongoing or pending speculative plans when new commits are received on the same branch. + +## Automated cancellation notifications + +When the **Automatically cancel speculative plans for outdated commits** option is enabled, HCP Terraform notifies you about plan-only runs that are canceled as a result of the setting. Notifications appear in the following screens: + +- **Run details page**. Refer to [Viewing and Managing Runs](/terraform/enterprise/run/manage) for additional information. + +- **VCS status checks**. When the **Non-aggregated status checks** option is enabled in the version control settings, the notification explicitly states when a plan has been canceled automatically. + + When the **Aggregated status checks** option is enabled, HCP Terraform includes canceled plans in the result and identifies them separately from manually canceled plans. + + Refer to [VCS Status Checks](/terraform/enterprise/users-teams-organizations/organizations/vcs-status-checks) for additional information. + + +- **Aggregated status page**. HCP Terraform prints the cancellation message in the aggregated status page in the **Resources to be changed** section. The section may not reflect a complete result if all runs associated with the commit reach completion. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-status-checks.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-status-checks.mdx new file mode 100644 index 0000000000..4b1983ef17 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/organizations/vcs-status-checks.mdx @@ -0,0 +1,49 @@ +--- +page_title: Configure VCS status checks +description: >- + VCS status checks send notifications to your version control provider. Learn + how to configure VCS status checks in Terraform Enterprise. +source: terraform-docs-common +--- + +# Configure VCS status checks + +Status checks are notifications sent to your version control system's VCS provider, providing details about specific commits, including the present status of the HCP Terraform run. Please refer to your VCS provider's documentation regarding status checks (e.g., [GitHub Status Checks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks)). + +## Permissions + +To modify VCS Status Checks settings, you must have [Manage VCS Settings](/terraform/enterprise/users-teams-organizations/permissions#manage-vcs-settings) permissions. + +## Managing organization VCS status check settings + +Organization owners can choose between _aggregated_ (default) and _non-aggregated_ status checks. This setting determines whether detailed information and links are accessed directly from the VCS provider or HCP Terraform. + +This setting also determines the number of status checks directly sent to the VCS Provider in response to actions such as pull or merge requests. + +To view and manage an organization’s VCS Status Check settings, click **Settings** then **Version Control**. + +### Aggregated status checks + +Aggregated status checks offer a streamlined experience if you have a single repository containing configuration for many workspaces (a.k.a., a monorepo). + +When aggregated status checks are enabled, HCP Terraform sends one VCS status check for all runs triggered by a VCS event. If multiple workspaces rely on a shared repository, HCP Terraform aggregates the status checks for these workspaces into one summary. This summary is unique to the workspace's organization and VCS client connection. + +You can access additional information about an aggregated status check in HCP Terraform by clicking the **Details** link a status check provides. This link directs you to an HCP Terraform page that offers the consolidated status check results across multiple workspaces, highlighting details such as resource changes and issues that require attention. + +![Screenshot: Organization Aggregated status checks](/img/docs/organization-vcs-general-aggregated-status-checks.png) + +### Non-aggregated status checks + +Non-aggregated status checks send your VCS provider a status check for each triggered workspace and related run stage in response to a VCS event. For example, a VCS push triggers checks for each related workspace's run stages, including the plan operation, policy checks, cost estimation, run tasks, and more. + +If you have a manageable amount of workspaces and want to visualize status checks on your VCS Provider rather than in HCP Terraform, use non-aggregated status checks. + +![Screenshot: Organization Non-aggregated status checks](/img/docs/organization-vcs-general-non-aggregated-status-checks.png) + +#### Send passing commit statuses + +-> **Note:** Organization owners can only enable the **Send passing commit statuses** setting if the **Aggregated status checks** setting is disabled. + +Workspaces that use part of a shared repository do not typically run plans for changes that do not affect their files. This includes [speculative plans](/terraform/enterprise/run/remote-operations#speculative-plans) on pull requests. Since **pending** VCS status checks can block pull requests, workspaces automatically send passing commit statuses for any PRs that do not affect their files. + +You can disable this behavior if it creates too many status checks for your VCS provider. You may want to do this if you have a large number of workspaces sharing one VCS repository. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/permissions.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/permissions.mdx new file mode 100644 index 0000000000..b57deb14a8 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/permissions.mdx @@ -0,0 +1,396 @@ +--- +page_title: Permission model in Terraform Enterprise +description: >- + Use the Terraform Enterprise permission model to manage user access to + organizations, projects, and workspaces. +source: terraform-docs-common +--- + +# Permission model + +<!-- BEGIN: TFC:only name:pnp-callout --> + +-> **Note:** Team management is available in HCP Terraform **Standard** Edition. [Learn more about HCP Terraform pricing here](https://www.hashicorp.com/products/terraform/pricing). + +<!-- END: TFC:only name:pnp-callout --> + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +> **Hands-on:** Try the [Manage Permissions in HCP Terraform](/terraform/tutorials/cloud/cloud-permissions?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial. + +HCP Terraform's access model is team-based. In order to perform an action within an HCP Terraform organization, users must belong to a team that has been granted the appropriate permissions. + +The HCP Terraform permissions model is split into three levels: you can set organization-level, project-level, and workspace-level permissions. Each permission level is additive, granting a user the highest level of permissions possible, regardless of which level set that permission. + +A team's _effective permissions_ is the sum of the permissions granted to that team from all permission levels. For example, if a team has the **View all workspaces** permission at the organization-level and **Admin** permission on a specific workspace, then users on that team have the effective permission of **Admin** on that workspace. An organization-level permission does not take precedence over a workspace-level permission. + +We recommend following the principle of least privilege when configuring permissions, only giving teams access to the resources they need for their job function. When configuring permissions at a particular level, remember that a team may have permissions above or below in the hierarchy that grant a higher level of permission than what you are currently configuring. + +## Organization Owners + +Every organization has a special team called the **Owners** team, whose members have the maximum available permissions within the organization. Members of this team are often referred to as "organization owners". + +Organization owners have every available permission within the organization. This includes all organization-level permissions, and the highest level of workspace permissions on every workspace. + +There are also some actions within an organization that are only available to owners. These are generally actions that affect the permissions and membership of other teams, or are otherwise fundamental to the organization's security and integrity. + +Permissions for the owners team include: + +- Manage workspaces (refer to [Organization Permissions][] below; equivalent to admin permissions on every workspace) +- Manage projects (refer to [Organization Permissions][] below; equivalent to admin permissions on every project and workspace) +- Manage policies (refer to [Organization Permissions][] below) +- Manage policy overrides (refer to [Organization Permissions][] below) +- Manage VCS settings (refer to [Organization Permissions][] below) +- Manage the private registry (refer to [Organization Permissions][] below) +- Manage Membership (refer to [Organization Permissions][] below; invite or remove users from the organization itself, and manage the membership of its teams) +- View all secret teams (refer to [Organization Permissions][] below) +- Manage agents (refer to [Organization Permissions][] below) +- Manage organization permissions (refer to [Organization Permissions][] below) +- Manage all organization settings (owners only) +- Manage organization billing (owners only, not applicable to Terraform Enterprise) +- Delete organization (owners only) + +This list is not necessarily exhaustive. + +[Organization Permissions]: #organization-permissions + +## Workspace Permissions + +[workspace]: /terraform/enterprise/workspaces + +Most of HCP Terraform's permissions system is focused on workspaces. In general, administrators want to delegate access to specific collections of infrastructure; HCP Terraform implements this by granting permissions to teams on a per-workspace basis. + +There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. Additionally, there is a special "admin" permission set that grants the highest level of permissions on a workspace. + +### Implied Permissions + +Some permissions imply other permissions; for example, the run access plan permission also grants permission to read runs. + +If documentation or UI text states that an action requires a specific permission, it is also available for any permission that implies that permission. + +### General Workspace Permissions + +[General Workspace Permissions]: #general-workspace-permissions + +The following workspace permissions can be granted to teams on a per-workspace basis. They can be granted via either fixed permission sets or custom workspace permissions. + +-> **Note:** Throughout the documentation, we refer to the specific permission an action requires (like "requires permission to apply runs") rather than the fixed permission set that includes that permission (like "requires write access"). + +- **Run access:** + - **Read:** — Allows users to view information about remote Terraform runs, including the run history, the status of runs, the log output of each stage of a run (plan, apply, cost estimation, policy check), and configuration versions associated with a run. + - **Plan:** — _Implies permission to read._ Allows users to queue Terraform plans in a workspace, including both speculative plans and normal plans. Normal plans must be approved by a user with permission to apply runs. This also allows users to comment on runs. + - **Apply:** — _Implies permission to plan._ Allows users to approve and apply Terraform plans, causing changes to real infrastructure. +- **Variable access:** + - **No access:** — No access is granted to the values of Terraform variables and environment variables for the workspace. + - **Read:** — Allows users to view the values of Terraform variables and environment variables for the workspace. Note that variables marked as sensitive are write-only, and can't be viewed by any user. + - **Read and write:** — _Implies permission to read._ Allows users to edit the values of variables in the workspace. +- **State access:** + + - **No access:** — No access is granted to the state file from the workspace. + - **Read outputs only:** — Allows users to access values in the workspace's most recent Terraform state that have been explicitly marked as public outputs. Output values are often used as an interface between separate workspaces that manage loosely coupled collections of infrastructure, so their contents can be relevant to people who have no direct responsibility for the managed infrastructure but still indirectly use some of its functions. This permission is required to access the [State Version Outputs](/terraform/enterprise/api-docs/state-version-outputs) API endpoint. + + -> **Note:** **Read state versions** permission is required to use the `terraform output` command or the `terraform_remote_state` data source against the workspace. + - **Read:** — _Implies permission to read outputs only._ Allows users to read complete state files from the workspace. State files are useful for identifying infrastructure changes over time, but often contain sensitive information. + - **Read and write:** — _Implies permission to read._ Allows users to directly create new state versions in the workspace. Applying a remote Terraform run creates new state versions without this permission, but if the workspace's execution mode is set to "local", this permission is required for performing local runs. This permission is also required to use any of the Terraform CLI's state manipulation and maintenance commands against this workspace, including `terraform import`, `terraform taint`, and the various `terraform state` subcommands. +- **Other controls:** + - **Download Sentinel mocks:** — Allows users to download data from runs in the workspace in a format that can be used for developing Sentinel policies. This run data is very detailed, and often contains unredacted sensitive information. + - **Manage Workspace Run Tasks:** — Allows users to associate or dissociate run tasks with the workspace. HCP Terraform creates Run Tasks at the organization level, where you can manually associate or dissociate them with specific workspaces. + - **Lock/unlock workspace:** — Allows users to manually lock the workspace to temporarily prevent runs. When a workspace's execution mode is set to "local", users must have this permission to perform local CLI runs using the workspace's state. + +### Fixed Permission Sets + +Fixed permission sets are bundles of specific permissions for workspaces, which you can use to delegate access to workspaces easily. + +Each permissions set targets a level of authority and responsibility for a given workspace's infrastructure. A permission set can grant permissions that recipients do not require but offer a balance of simplicity and utility. + +#### Workspace Admins + +Much like the owners team has full control over an organization, each workspace has a special "admin" permissions level that grants full control over the workspace. Members of a team with admin permissions on a workspace are sometimes called "workspace admins" for that workspace. + +Admin permissions include the highest level of general permissions for the workspace. There are also some permissions that are only available to workspace admins, which generally involve changing the workspace's settings or setting access levels for other teams. + +Workspace admins have all [General Workspace Permissions](#general-workspace-permissions), as well as the ability to do the following tasks: + +- Read and write workspace settings. This includes general settings, notification configurations, run triggers, and more. +- Set or remove workspace permissions for visible teams. Workspace admins cannot view or manage teams with the [**Secret**](/terraform/enterprise/users-teams-organizations/teams/manage#team-visibility) visibility option enabled unless they are also organization owners. +- Delete the workspace + - Depending on the [organization's settings](/terraform/enterprise/users-teams-organizations/organizations#general), workspace admins may only be able to delete the workspace if it is not actively managing infrastructure. Refer to [Deleting a Workspace With Resources Under Management](/terraform/enterprise/workspaces/settings#deleting-a-workspace-with-resources-under-management) for details. + +#### Write + +The "write" permission set is for people who do most of the day-to-day work of provisioning and modifying managed infrastructure. Write access grants the following workspace permissions: + +- Run access - Apply +- Variable access - Read and write +- State access - Read and write +- Other access - Lock/unlock workspace +- Other access - Download Sentinel mocks + +See [General Workspace Permissions][] above for details about specific permissions. + +#### Plan + +The "plan" permission set is for people who might propose changes to managed infrastructure, but whose proposed changes should be approved before they are applied. Plan access grants the following workspace permissions: + +- Run access - Plan +- Variable access - Read +- State access - Read + +See [General Workspace Permissions][] above for details about specific permissions. + +#### Read + +The "read" permission set is for people who need to view information about the status and configuration of managed infrastructure in order to do their jobs, but aren't responsible for maintaining that infrastructure. Read access grants the following workspace permissions: + +- Run access - Read +- Variable access - Read +- State access - Read + +See [General Workspace Permissions][] above for details about specific permissions. + +### Custom Workspace Permissions + +Custom permissions let you assign specific, finer-grained permissions to a team than the broader fixed permission sets provide. This enables more task-focused permission sets and tighter control of sensitive information. + +You can use custom permissions to assign any of the permissions listed above under [General Workspace Permissions][], with the exception of admin-only permissions. + +The minimum custom permissions set for a workspace is the permission to read runs; the only way to grant a team lower access is to not add them to the workspace at all. + +Some permissions - such as the runs permission - are tiered: you can assign one permission per category, since higher permissions include all of the capabilities of the lower ones. + +## Project Permissions + +You can assign project-specific permissions to teams. + +### Implied Permissions + +Some permissions imply other permissions. For example, permission to update a project also grants permission to read a project. + +If an action states that it requires a specific permission level, you can perform that action if your permissions _imply_ the stated permission level. + +### General Project Permissions + +[General Project Permissions]: #general-project-permissions + +You can grant the following project permissions to teams on a per-project basis. You can grant these with either fixed permission sets or custom project permissions. + +-> **Note:** Throughout the documentation, we refer to the specific permission an action requires (like "requires permission to apply runs") rather than the fixed permission set that includes that permission (like "requires write access"). + +- **Project access:** + - **Read:** — Allows users to view information about the project including the name. + - **Update:** — _Implies permission to read._ Allows users to update the project name. + - **Delete:** — _Implies permission to update._ Allows users to delete the project. + - **Create Workspaces:** — Allow users to create workspaces in the project. This grants read access to all workspaces in the project. + - **Delete Workspaces:** — Allows users to delete workspaces in the project. + - Depending on the [organization's settings](/terraform/enterprise/users-teams-organizations/organizations#general), workspace admins may only be able to delete the workspace if it is not actively managing infrastructure. Refer to [Deleting a Workspace With Resources Under Management](/terraform/enterprise/workspaces/settings#deleting-a-workspace-with-resources-under-management) for details. + - **Move Workspaces:** — Allows users to move workspaces out of the project. A user _must_ have this permission on both the source _and_ destination project to successfully move a workspace from one project to another. +- **Team management:** + - **None:** — No access to view teams assigned to the project. + - **Read:** — Allows users to see teams assigned to the project for visible teams. + - **Manage:** — _Implies permission to read._ Allows users to set or remove project permissions for visible teams. Project admins can not view or manage [secret teams](/terraform/enterprise/users-teams-organizations/teams/manage#team-visibility) unless they are also organization owners. +- **Variable sets:** + - **None:** — No access to variable sets owned by the project. However, users with Variable access permissions can view variable sets applied to this project and its workspaces. + - **Read:** — Allows users to view variable sets owned by this project. + - **Manage:** — _Implies permission to read._ Allows users to create, update, and delete variable sets owned by the project. + +See [General Workspace Permissions](#general-workspace-permissions)for the complete list of available permissions for a project's workspaces. + +### Fixed Permission Sets + +Fixed permission sets are bundles of specific permissions for projects, which you can use to delegate access to a project's workspaces easily. + +#### Project Admin + +Each project has an "admin" permissions level that grants permissions for both the project and the workspaces that belong to that project. Members with admin permissions on a project are dubbed that project's "project admins". + +Members of teams with "admin" permissions for a project have [General Workspace Permissions](#general-workspace-permissions) for every workspace in the project, and the ability to: + +- Read and update project settings. +- Delete the project. +- Create workspaces in the project. +- Move workspaces into or out of the project. This also requires project admin permissions for the source or destination project. +- Grant or revoke project permissions for visible teams. Project admins **cannot** view or manage access for teams that are are [Secret](/terraform/enterprise/users-teams-organizations/teams/manage#team-visibility), unless those admins are also organization owners. + +#### Maintain + +The "maintain" permission is for people who need to manage existing infrastructure in a single project, while also granting the ability to create new workspaces in that project. Maintain access grants full control of everything in the project, including the following permissions: + +- Admin access for all workspaces in this project. +- Create workspaces in this project. +- Read the project name. +- Lock and unlock all workspaces in this project. +- Read and write variables for all workspaces in this project. +- Access state for all workspaces in this project. +- Approve runs for all workspaces in this project. + +#### Write + +The "write" permission set is for people who do most of the day-to-day work of provisioning and modifying managed infrastructure. Write access grants the following workspace permissions: + +- Read the project name. +- Lock and unlock all workspaces in this project. +- Read and write variables for all workspaces in this project. +- Access state for all workspaces in this project. +- Approve runs for all workspaces in this project. + +#### Read + +The "read" permission set is for people who need to view information about the status and configuration of managed infrastructure for their job function, but are not responsible for maintaining that infrastructure. Read access grants the permissions to: + +- Read the project name. +- Read the workspaces in the project. + +### Custom Project Permissions + +Custom permissions enable you to assign specific and granular permissions to a team. You can use custom permission sets to create task-focused permission sets and control sensitive information. + +You can create a set of custom permissions using any of the permissions listed under [General Project Permissions](#general-project-permissions). + +Some permissions, such as the project access permission, are tiered. You can only assign one permission per category because higher-level permissions include the capabilities of lower levels. + +## Organization Permissions + +Separate from project and workspace permissions, you can grant teams permissions to manage or view certain resources or settings across an organization. To set these permissions for a team, go to your organization's **Settings**. Then click **Teams**, and select the team name from the list. + +The following organization permissions are available: + +### Project permissions + +You must select a level of access for projects. + +#### None + +Members do not have access to projects or workspaces. You can grant permissions to individual projects or workspaces through [Project Permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) or [Workspace Permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions). + +#### View all projects + +Members can view all projects within the organization. This lets users: + +- View project names in a given organization. + +#### Manage all projects + +Members can create and manage all projects and workspaces within the organization. In addition to the permissions granted by [“Manage all workspaces”](/terraform/enterprise/users-teams-organizations/permissions#manage-all-workspaces), this also lets users: + +- Manage other teams' access to all projects. +- Create, edit, and delete projects (otherwise only available to organization owners). +- Move workspaces between projects. + +### Workspace permissions + +You must select a level of access for workspaces. + +#### None + +Members do not have access to projects or workspaces. You can grant permissions to individual projects or workspaces through [Project Permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) or [Workspace Permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions). + +#### View all workspaces + +Members can view all workspaces within the organization. This lets users: + +- View information and features relevant to each workspaces (e.g. runs, state versions, variables). + +#### Manage all workspaces + +Members can create and manage all workspaces within the organization. This lets users: + +- Perform any action that requires admin permissions in those workspaces. +- Create new workspaces within the organization's **Default Project**, an action that is otherwise only available to organization owners. +- Create, update, and delete [Variable Sets](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). + +### Manage Policies + +Allows members to create, edit, read, list and delete the organization's Sentinel policies. + +This permission implicitly gives permission to read runs on all workspaces, which is necessary to set enforcement of [policy sets](/terraform/enterprise/policy-enforcement/manage-policy-sets). + +### Manage Run Tasks + +Allows members to create, edit, and delete run tasks on the organization. + +### Manage Policy Overrides + +Allows members to override soft-mandatory policy checks. + +This permission implicitly gives permission to read runs on all workspaces, which is necessary to override policy checks. + +### Manage VCS Settings + +Allows members to manage the set of [VCS providers](/terraform/enterprise/vcs) and [SSH keys](/terraform/enterprise/vcs#ssh-keys) available within the organization. + +### Manage Agent Pools + +Allows members to create, edit, and delete agent pools within their organization. + +This permission implicitly grants access to read all workspaces, which is necessary for agent pool management. + +### Manage Private Registry + +Allows members to publish and delete providers, modules, or both providers and modules in the organization's [private registry](/terraform/enterprise/registry). These permissions are otherwise only available to organization owners. + +### Team Management Permissions + +HCP Terraform has three levels of team management permissions: manage membership, manage teams, and manage organization access. Each permission level grants users the ability to perform specific actions and each progressively requires prerequisite permissions. + +For example, to grant a user the manage teams permission, that user must already have manage membership permissions. To grant a user the manage organization access permission, a user must have both manage teams and manage membership permissions. + +#### Manage Membership + +Allows members to invite users to the organization, remove users from the organization, and add or remove users from teams within the organization. + +This permission grants the ability to view the list of users within the organization, and to view the organization access of other visible teams. It does not permit the creation of teams, the ability to modify the settings of existing teams, or the ability to view secret teams. + +In order to modify the membership of a team, a user with Manage Membership permissions must have visibility into the team (i.e. the team must be ["Visible"](/terraform/enterprise/users-teams-organizations/teams/manage#team-visibility), or the user must be on the team). +In order to remove a user from the organization, the holder of this permission must have visibility into all of the teams which the user is a member of. + +~> This permission is intended to allow owners of large organizations to delegate membership management to another trusted team, and should be granted to only teams of trusted users. **Assign with caution:** Users with this permission are able to add themselves to any visible team, and inherit the permissions of any visible team. + +#### Manage Teams + +Allows members to create, update, and delete teams, and generate, and revoke tokens. + +This permission grants the ability to update a team's names, SSO IDs, and token management permissions, but does not allow access to organization settings. On its own, this permission does not allow users to create, update, delete, or otherwise access secret teams. + +The manage teams permission confers all permissions granted by the manage membership permission. + +This permission allows owners of large organizations to delegate team management to another trusted team. You should only grant it to teams of trusted users. + +~> **Assign with caution**: Users with this permission can update or delete any visible team. Because this permission also confers the manage membership permission, a user with the manage teams permission can add themselves to any visible team. + +#### Manage Organization Access + +Allows members to update a team's organization access settings. + +On its own, this permission does not allow users to create, update, delete, or otherwise access secret teams. This permission confers all of the permissions granted by the manage teams and manage membership permissions. + +This permission allows owners of large organizations to delegate team management to another trusted team. You should only grant it to teams of trusted users. + +~> **Assign with caution:** Members with this permission can update all organization access settings for any team visible to them. + +### Include Secret Teams + +Allows members access to secret teams at the level permitted by that user's team permissions setting. + +This permission acts as a modifier to existing team management permissions. Members with this permission can access secret teams up to the level permitted by other team management permissions. For example, if a user has permission to include secret teams and [manage teams](/terraform/enterprise/users-teams-organizations/permissions#manage-teams), that user can create secret teams. + +### Allow Member Token Management + +Allows owners and members with [manage teams](/terraform/enterprise/users-teams-organizations/permissions#manage-teams) permissions to enable and disable team token management for team members. This permission defaults to `true`. + +When member token management is enabled, members will be able to perform actions on team tokens, including generating and revoking a team token. + +When member token management is disabled, members will be unable to perform actions on team tokens, including generating and revoking a team token. + +## Permissions Outside HCP Terraform's Scope + +This documentation only refers to permissions that are managed by HCP Terraform itself. + +Since HCP Terraform integrates with other systems, the permissions models of those systems can also be relevant to the overall security model of your HCP Terraform organization. For example: + +- When a workspace is connected to a VCS repository, anyone who can merge changes to that repository's main branch can indirectly queue plans in that workspace, regardless of whether they have explicit permission to queue plans or are even a member of your HCP Terraform organization. (And when auto-apply is enabled, merging changes will indirectly apply runs.) +- If you use HCP Terraform's API to create a Slack bot for provisioning infrastructure, anyone able to issue commands to that Slack bot can implicitly act with that bot's permissions, regardless of their own membership and permissions in the HCP Terraform organization. +- When a run task sends a request to an integrator, it provides an access token that provides access depending on the run task stage: + - For post-plan, it provides access to the runs plan json and the run task callback + - All access tokens created for run tasks have a lifetime of 10 minutes + +When integrating HCP Terraform with other systems, you are responsible for understanding the effects on your organization's security. An integrated system is able to delegate any level of access that it has been granted, so carefully consider the conditions and events that will cause it to delegate that access. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/index.mdx new file mode 100644 index 0000000000..1be3015653 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/index.mdx @@ -0,0 +1,59 @@ +--- +page_title: Teams overview +description: >- + Teams are a group of users within an organization. Learn about managing teams, + team membership, team permissions, and more. +source: terraform-docs-common +--- + +[organizations]: /terraform/enterprise/users-teams-organizations/organizations + +[organization settings]: /terraform/enterprise/users-teams-organizations/organizations#organization-settings + +[users]: /terraform/enterprise/users-teams-organizations/users + +# Teams overview + +Teams are groups of HCP Terraform [users][] within an [organization][organizations]. If a user belongs to at least one team in an organization, they are considered a member of that organization. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/team-management.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +An organization can [grant workspace permissions to teams](/terraform/enterprise/users-teams-organizations/teams/manage#managing-workspace-access) that allow its members to start Terraform runs, create workspace variables, read and write state, and more. Teams can only have permissions on workspaces within their organization, although individual users can belong to multiple teams in this and other organizations. + +> **Hands-on:** Try the [Manage Permissions in HCP Terraform](/terraform/tutorials/cloud/cloud-permissions?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial. + +## Accessing teams with the API or TFE provider + +In addition to the HCP Terraform UI, you can use the following methods to manage teams: + +- [Teams API](/terraform/enterprise/api-docs/teams) to list, create, update, and delete teams +- [Team Members API](/terraform/enterprise/api-docs/team-members) to add and delete users from teams +- [Team Tokens API](/terraform/enterprise/api-docs/team-tokens) to generate and delete tokens and list an organization's team tokens +- [Team Access API](/terraform/enterprise/api-docs/team-access) to manage team access to one or more workspaces +- The `tfe` provider resources [`tfe_team`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/team), [`tfe_team_members`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/team_members), and `tfe_team_access` + +### API tokens + +Each team can have an API token not associated with a specific user. You can manage a team's API token from the **Organization settings > API Tokens > Team Token** page. You can create, regenerate, and delete team tokens on the API token page. Refer to [Team API Tokens](/terraform/enterprise/users-teams-organizations/api-tokens#team-api-tokens) for details. + +## The owners team + +Every organization has an owners team, and members of the owners team are sometimes called organization owners. An organization's creator is the first member of its owner's team. You can add and remove other members in the same way as you can with other teams. In free organizations, the owner's team is limited to five members. In paid organizations, the size of the owner's team is unlimited. + +You cannot delete or leave the owner's team empty. If only one member in an owner's team exists, you must add another user before removing the current member. + +Refer to [organization owners](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) for more details about owners team permissions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Manage teams + +You can manage many things about teams, including creating and deleting a team, team membership, and team access to workspaces, projects, and organizations. Refer to [Manage teams](/terraform/enterprise/users-teams-organizations/teams/manage) to learn more. + +## Team notifications + +You can set up team notifications to notify team members on external systems whenever a particular action takes place. Refer to [Notifications](/terraform/enterprise/users-teams-organizations/teams/notifications) to learn more. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/manage.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/manage.mdx new file mode 100644 index 0000000000..63e0331297 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/manage.mdx @@ -0,0 +1,109 @@ +--- +page_title: Manage teams +description: >- + Learn how to manage team creation, team deletion, team membership, and team + access to workspaces, projects, and organizations. +source: terraform-docs-common +--- + +# Manage teams + +You can grant team management abilities to members of teams with either one of the manage teams or manage organization access permissions. Refer to [Team Permissions](/terraform/enterprise/users-teams-organizations/permissions#team-permissions) for details. + +[Organization owners](/terraform/enterprise/users-teams-organizations/teams#the-owners-team) can also create teams, assign team permissions, or view the full list of teams. Other users can view any teams marked as visible within the organization, plus any secret teams they are members of. Refer to [Team Visibility](#team-visibility) for details. + +To manage teams, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to manage teams. +2. Choose **Settings** from the sidebar, then **Teams**. The **Team Management** page appears, containing a list of all teams within the organization. +3. Click a team to go to its settings page, which lists the team's settings and current members. Members that have [two-factor authentication](/terraform/enterprise/users-teams-organizations/2fa) enabled have a **2FA** badge. + +You can manage a team on its settings page by adding or removing members, changing its visibility, and controlling access to workspaces, projects, and the organization. + +## Create teams + +To create a new team, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to create a team. +2. Choose **Settings** from the sidebar, then **Teams**. +3. Click **Create a team**. +4. Enter a unique team **Name** and click **Create Team**. Team names can include numbers, letters, underscores (`_`), and hyphens (`-`). + +The new team's settings page appears, where you can add new members and grant permissions. + +## Delete teams + +~> **Important:** Team deletion is permanent, and you cannot undo it. + +To delete a team, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to delete a team. +2. Choose **Settings** from the sidebar, then **Teams**. The **Team Management** page appears, containing a list of all teams within the organization. +3. Click the team you want to delete to go to its settings page. +4. Click **Delete [team name]** at the bottom of the page. The **Deleting team "[team name]"** box appears. +5. Click **Yes, delete team** to permanently delete the team and all of its data from HCP Terraform. + +## Manage team membership + +Team structure often resembles your company's organizational structure. + +### Add users + +If the user is not yet in the organization, [invite them to join the organization](/terraform/enterprise/users-teams-organizations/organizations#users) and include a list of teams they should belong to in the invitation. Once the user accepts the invitation, HCP Terraform automatically adds them to those teams. + +To add a user that is already in the organization: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add a user to a team. +2. Choose **Settings** from the sidebar, then **Teams**. +3. Click on a team's name to go to its settings page. +4. Choose a user under **Add a New Team Member**. Use the text field to filter the list by username or email. +5. Click the user to add them to the team. HCP Terraform now displays the user under **Members**. + +### Remove users + +To remove a user from a team: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to remove a user from a team. +2. Choose **Settings** from the sidebar, then **Teams**. +3. Click the team to go to its settings page. +4. Click **...** next to the user's name and choose **Remove from team** from the menu. HCP Terraform removes the user from the list of team members. + +## Team visibility + +The settings under **Visibility** allow you to control who can see a team within the organization. To edit a team's visibility: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to view teams. +2. Choose **Settings** from the sidebar, then **Teams**. +3. Click on a team's name to navigate to its settings page. +4. Enable one of the following settings: + - **Visible:** Every user in the organization can see the team and its membership. Non-members have read-only access. + - **Secret:** The default setting is that only team members and organization owners can view a team and its membership. + +We recommend making the majority of teams visible to simplify workspace administration. Secret teams should only have +[organization-level permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) since workspace admins cannot manage permissions for teams they cannot view. + +## Manage workspace access + +You can grant teams various permissions on workspaces. Refer to [Workspace Permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions) for details. + +HCP Terraform uses the most permissive permission level from your teams to determine what actions you can take on a particular resource. For example, if you belong to a team that only has permission to read runs for a workspace and another team with admin access to that workspace, HCP Terraform grants you admin access. + +HCP Terraform grants the most permissive permissions regardless of whether an organization, project, team, or workspace set those permissions. For example, if a team has permission to read runs for a given workspace and has permission to manage that workspace through the organization, then members of that team can manage that workspace. Refer to [organization permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) and [project permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) for additional information. + +Another example is when a team has permission at the organization-level to read runs for all workspaces and admin access to a specific workspace. HCP Terraform grants the more permissive admin permissions to that workspace. + +To manage team permissions on a workspace: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace where you want to set team permissions. +2. Choose **Settings** from the sidebar, then **Team Access**. +3. Click **Add team and permissions** to select a team and assign a pre-built or custom permission set. + +## Manage project access + +You can grant teams permissions to manage a project and the workspaces that belong to it. Refer to [Project Permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) for details. + +## Manage organization access + +Organization owners can grant teams permissions to manage policies, projects and workspaces, team and organization membership, VCS settings, private registry providers and modules, and policy overrides across an organization. Refer to [Organization Permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) for details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/notifications.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/notifications.mdx new file mode 100644 index 0000000000..f13ba68a18 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/teams/notifications.mdx @@ -0,0 +1,132 @@ +--- +page_title: Manage team notifications +description: >- + Learn how to set up team notifications to notify team members on external + systems whenever a particular action takes place. +source: terraform-docs-common +--- + +# Manage team notifications + +HCP Terraform can use webhooks to notify external systems about run progress, change requests, and other events. Team notifications allow you to configure relevant alerts that notify teams you specify whenever a certain event occurs. + +@include 'tfc-package-callouts/notifications.mdx' + +You can configure an individual team notification to notify up to twenty teams. To set up notifications for teams using the API, refer to the [Notification API](/terraform/enterprise/api-docs/notification-configurations#team-notification-configuration). + +## Requirements + +To configure team notifications, you need the [**Manage teams**](/terraform/enterprise/users-teams-organizations/permissions#manage-teams) permissions for the team for which you want to configure notifications. + +## View notification configuration settings + +To view your current team notifications, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to view the team notifications of. +2. Choose **Settings** from the sidebar, then **Teams**. +3. Select the team for which you want to view the notifications from your list of teams. +4. Select **Notifications** in the sidebar navigation. + +HCP Terraform displays a list of any notification configurations you have set up. A notification configuration defines how and when you want to send notifications, and once you enable that configuration, it can send notifications. + +### Update and enable notification configurations + +Each notification configuration includes a brief overview of each configuration’s name, type, the events that can trigger the notification, and the last time the notification was triggered. Clicking on a notification configuration opens a page where you can perform the following actions: + +- Enable your configuration to send notifications by toggling the switch. +- Delete a configuration by clicking **Delete notification**, then **Yes, delete notification configuration**. +- Test your notification’s configuration by clicking **Send test**. +- Click **Edit notification** to edit your notification configuration. + +After creating a notification configuration, you can only edit the following aspects of that configuration: + +1. The configuration’s name. +2. Whether this configuration notifies everyone on a team or specific members. +3. The workspace events that trigger notifications. You can choose from: + - **All events** triggers a notification for every event in your workspace. + - **No events** means that no workspace events trigger a notification. + - **Only certain events** lets you specify which events trigger a notification. + +After making any changes, click **Update notification** to save your changes. + +## Create and configure a notification + +To configure a new notification for a team or a user, perform the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization you want to create a team notification in. +2. Choose **Settings** from the sidebar, then **Teams**. +3. Select the team you want to view the notifications for from your list of teams. +4. Select **Notifications** in the sidebar navigation. +5. Click **Create a notification**. + +You must complete the following fields for all new notification configurations: + +1. The **Destination** where HCP Terraform should deliver either a generic or a specifically formatted payload. Refer to [Notification payloads](#notification-payloads) for details. +2. The display **Name** for this notification configuration. +3. If you configure an email notification, you can optionally specify which **Email Recipients** will receive this notification. +4. If you choose to configure a webhook, you must also specify: + - A **Webhook URL** for the destination of your webhook payload. Your URL must accept HTTP or HTTPS `POST` requests and be able to use the chosen payload type. + - You can optionally configure a **Token** as an arbitrary secret string that HCP Terraform will use to sign its notification webhooks. Refer to [Notification authenticity](#notification-authenticity) for details. You cannot view the token after you save the notification configuration. +5. If you choose to specify either a **Slack** or **Microsoft Teams** notification, you must also configure your webhook URL for either service. For details, refer to Slack's documentation on [creating an incoming webhook](https://api.slack.com/messaging/webhooks#create_a_webhook) and Microsoft's documentation on [creating a workflow from a channel in teams](https://support.microsoft.com/en-us/office/creating-a-workflow-from-a-channel-in-teams-242eb8f2-f328-45be-b81f-9817b51a5f0e). +6. Specify which [**Workspace events**](#workspace-events) should trigger this notification. +7. After you finish configuring your notification, click **Create a notification**. + +Note that if you are create an email notification, you must have [**Manage membership**](/terraform/enterprise/users-teams-organizations/permissions#manage-membership) permissions on a team to select users from that team as email recipients. + +### Workspace events + +HCP Terraform can send notifications for all workspace events, no workspace events, or specific events. The following events are available for you to specify: + +| Event | Description | +| :-------------- | :-------------------------------------------------------------------------------------------------------------------------- | +| Change Requests | HCP Terraform will notify this team whenever someone creates a change request on a workspace to which this team has access. | + +## Enable and verify a notification + +To configure HCP Terraform to stop sending notifications for a notification configuration, disable the **Enabled** setting on a configuration's detail page . + +HCP Terraform enables notifications for email configurations by default. Before enabling any webhook notifications, HCP Terraform attempts to verify the notification’s configuration by sending a test message. If the test succeeds, HCP Terraform enables the notification. + +To verify a notification configuration, the destination must respond with a `2xx` HTTP code. If verification fails, HCP Terraform does not enable the configuration and displays an error message. + +For successful and unsuccessful verifications, click the **Last Response** box to view more information about the verification results. You can also send additional test messages by clicking **Send a Test**. + +## Notification Payloads + +Notification payloads contain different attributes depending on the integration you specified when configuring that notification. + +### Slack + +Notifications to Slack contain the following information: + +- Information about the change request, including the username and avatar of the person who created the change request. +- The event that triggered the notification and the time that event occurred. + +### Microsoft Teams + +Notifications to Microsoft Teams contain the following information: + +- Information about the change request, including the username and avatar of the person who created the change request. +- The event that triggered the notification and the time that event occurred. + +### Email + +Email notifications contain the following information: + +- Information about the change request, including the username and avatar of the person who created the change request. +- The event that triggered the notification and the time that event occurred. + +### Generic + +A generic notification contains information about the event that triggered it and the time that the event occurred. You can refer to the complete generic notification payload in the [API documentation](/terraform/enterprise/api-docs/notification-configurations#notification-payload). + +You can use some of the values in the payload to retrieve additional information through the API, such as: + +- The [workspace ID](/terraform/enterprise/api-docs/workspaces#list-workspaces) +- The [organization name](/terraform/enterprise/api-docs/organizations#show-an-organization) + +## Notification Authenticity + +Slack notifications use Slack's own protocols to verify HCP Terraform's webhook requests. + +Generic notifications can include a signature to verify the request. For notification configurations that include a secret token, HCP Terraform's webhook requests include an `X-TFE-Notification-Signature` header containing an HMAC signature computed from the token using the SHA-512 digest algorithm. The notification’s receiving service is responsible for validating the signature. For more information and an example of how to validate the signature, refer to the [API documentation](/terraform/enterprise/api-docs/notification-configurations#notification-payload). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/users.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/users.mdx new file mode 100644 index 0000000000..aa24a43750 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/users-teams-organizations/users.mdx @@ -0,0 +1,215 @@ +--- +page_title: Create and manage users in Terraform Enterprise +description: Learn how to create and manage users in Terraform Enterprise. +source: terraform-docs-common +--- + +[organizations]: /terraform/enterprise/users-teams-organizations/organizations + +[teams]: /terraform/enterprise/users-teams-organizations/teams + +[invite]: /terraform/enterprise/users-teams-organizations/organizations#users + +[owners]: /terraform/enterprise/users-teams-organizations/teams#the-owners-team + +# Create and manage users + +User accounts belong to individual people. Each user can be part of one or more [teams](/terraform/enterprise/users-teams-organizations/teams), which are granted permissions on workspaces within an organization. A user can be a member of multiple [organizations][]. + +## API + +Use the [Account API](/terraform/enterprise/api-docs/account) to get account details, update account information, and change your password. + +<!-- BEGIN: TFC:only --> + +## Log in with a HashiCorp Cloud Platform account + +We recommend using a [HashiCorp Cloud Platform (HCP)](https://portal.cloud.hashicorp.com/sign-up) account to log in to HCP Terraform. Your HCP Account grants access to every HashiCorp product and the Terraform Registry. If you use an HCP Account, you manage account settings like multi-factor authentication and password resets from within HCP instead of the HCP Terraform UI. + +To log in with your HCP account, navigate to [HCP Terraform](https://app.terraform.io/) and click **Continue with HCP account**. HCP Terraform may ask if you want to link your account. + +### Linking HCP and HCP Terraform accounts + +The first time you log in with your HCP credentials, HCP Terraform searches for an existing HCP Terraform account with the same email address. If you have an unlinked account, HCP Terraform asks if you want to link it to your HCP account. Otherwise, if no account matches your HCP account's email address, HCP Terraform creates and automatically links a new HCP Terraform account to your HCP account. + +> **Note**: You can only log in with your HCP credentials after linking your HCP and HCP Terraform accounts. We do not recommend linking your account if you use an SSO provider to log in to HCP Terraform because linking your account may conflict with your existing SSO configuration. + +The only way to log in with your old HCP Terraform credentials is to unlink your HCP Terraform and HCP accounts. If HCP Terraform generated an account for you, you cannot unlink that account from your HCP account. You can unlink a pre-existing HCP Terraform account on the [HCP Account Linking page](#hcp-account-linking) in your **Account settings**. + +<!-- END: TFC:only --> + +## Creating an account + +To use HCP Terraform or Enterprise, you must create an account through one of the following methods: + +- **Invitation Email:** When a user sends you an invitation to join an existing HCP Terraform organization, the email includes a sign-up link. After you create an account, you can automatically join that organization and can begin using HCP Terraform. +- **Sign-Up Page:** Creating an account requires a username, an email address, and a password. [Sign up on HCP Terraform](https://app.terraform.io/public/signup/account) or if you have a Terraform Enterprise instance, go to `https://<TFE HOSTNAME>/public/signup/account`. + +After you create an account, you do not belong to any organizations. To begin using HCP Terraform, you can either [create an organization](/terraform/enterprise/users-teams-organizations/organizations#creating-organizations) or ask an organization owner to send you an invitation email to join their organization. + +<!-- BEGIN: TFC:only --> + +We recommend logging into HCP Terraform [with your HCP account](#log-in-with-your-hashicorp-cloud-platform-account) instead of creating a separate HCP Terraform account. + +<!-- END: TFC:only --> + +## Joining organizations and teams + +An organization owner or a user with [**Manage Membership**](/terraform/enterprise/users-teams-organizations/permissions#manage-membership) permissions enabled must [invite you to join their organization](/terraform/enterprise/users-teams-organizations/organizations#users) and [add you to one or more teams](/terraform/enterprise/users-teams-organizations/teams/manage#manage-team-membership). + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +HCP Terraform sends user invitations by email. If the invited email address matches an existing HCP Terraform account, the invitee can join the organization with that account. Otherwise, they must create a new account and then join the organization. + +## Site admin permissions + +On Terraform Enterprise instances, some user accounts have a special site admin permission that allows them to administer the entire instance. + +Admin permissions are distinct from normal organization-level permissions, and they apply to a different set of UI controls and API endpoints. Admin users can administer any resource across the instance when using the site admin pages or the [admin API](/terraform/enterprise/api-docs/admin), but they have normal user permissions when using an organization's standard UI controls and API endpoints. These normal user permissions are determined by team membership. + +Refer to [Administering Terraform Enterprise](/terraform/enterprise/admin) for more details. + +## Account settings + +To view your settings page, click your user icon and select **Account settings**. Your **Profile** page appears, showing your username, email address, and avatar. + +### Profile + +Click **Profile** in the sidebar to view and edit the username and email address associated with your HCP Terraform account. + +~> **Important:** HCP Terraform includes your username in URL paths to resources. If external systems make requests to these resources, you must update them before you change your username. + +HCP Terraform uses [Gravatar](http://en.gravatar.com) to display a user icon if you have associated one with your email address. Refer to the [Gravatar documentation](http://en.gravatar.com/support/) for details about changing your user icon. + +### Sessions + +Click **Sessions** in the sidebar to view a list of sessions associated with your HCP Terraform account. You can revoke any sessions you do not recognize. + +<!-- BEGIN: TFC:only --> + +There are two types of Terraform accounts, standalone HCP Terraform accounts and HCP Terraform accounts linked to HCP accounts. + +### Idle session timeout + +HCP Terraform automatically terminates user sessions if there has been no end-user activity for a certain time period: + +- Standalone HCP Terraform accounts can stay idle and valid for up to 14 days by default +- HCP Terraform accounts linked to an HCP account follow the HCP defaults and can stay idle for 1 hour by default + +After HCP Terraform terminates a session, you can resume it by logging back in through the HCP Terraform portal. This is a security measure to prevent unauthorized access to unmonitored devices. + +-> **Note:** HCP Terraform organization owners can reduce the idle session timeout for an organization in the authentication settings for standalone HCP Terraform accounts, but cannot modify settings for HCP Terraform accounts linked to HCP accounts. + +### Forced re-authentication + +Forced re-authentication (e.g., “remember for”) makes a user re-authenticate, regardless of activity. This is a security measure to force a new identity verification to access sensitive IT and data managed by HCP Terraform. In this case, the user must re-authenticate their credentials and may be asked to verify 2FA/MFA again. + +- By default, standalone HCP Terraform accounts are forced to re-authenticate every 14 days +- By default, HCP Terraform accounts linked to an HCP account follow the HCP defaults and are forced to re-authenticate every 48 hours + +-> **Note:** HCP Terraform organization owners can reduce the idle session timeout for standalone HCP Terraform accounts, but cannot modify settings for HCP Terraform accounts linked to HCP accounts. + +### Impact to user experience + +The default re-authentication defaults force users to re-authenticate at the beginning of each work week (Monday through Friday). Note that several actions immediately terminate active sessions, including: + +- Manually logging out of the HCP or HCP Terraform portals +- Clearing browser session/cookies +- Closing all active browser windows + +Any of these actions requires you to re-authenticate regardless of session timeout settings. + +<!-- END: TFC:only --> + +### Organizations + +Click **Organizations** in the sidebar to view a list of the organizations where you are a member. If you are on the [owners team][owners], the organization is marked with an **OWNER** badge. + +To leave an organization, click the ellipses (**...**) next to the organization and select **Leave organization**. You do not need permission from the owners to leave an organization, but you cannot leave if you are the last member of the owners team. Either add a new owner and then leave, or [delete the organization](/terraform/enterprise/users-teams-organizations/organizations#general). + +### Password + +Click **Password** in the sidebar to change your password. + +-> **Note:** Password management is not available if your Terraform Enterprise instance uses [SAML single sign on](/terraform/enterprise/saml/configuration). +-> **Note:** Passwords must be at least 10 characters in length, and you can use any type of character. Password management is not available if your Terraform Enterprise instance uses [SAML single sign on](/terraform/enterprise/saml/configuration). + +### Two-factor authentication + +Click **Two Factor Authentication** in the sidebar to enable two-factor authentication. Two-factor authentication requires a TOTP-compliant application or an SMS-capable phone number. An organization can set policies that require two-factor authentication. + +Refer to [Two-Factor Authentication](/terraform/enterprise/users-teams-organizations/2fa) for details. + +<!-- BEGIN: TFC:only --> + +### HCP account linking + +Click **HCP Account Linking** in the sidebar to unlink your HCP Terraform from your HCP Account. You cannot unlink an account that HCP Terraform autogenerated during the linking process. Refer to [Linked HCP and HCP Terraform Accounts](#linked-hcp-and-hcp-terraform-accounts) for more details. + +After you unlink, you can begin using your HCP Terraform credentials to log in. You cannot log in with your HCP account again unless you re-link it to your HCP Terraform account. + +### SSO identities + +Click **SSO Identities** in the sidebar to review and [remove SSO identity links](/terraform/enterprise/users-teams-organizations/single-sign-on/linking-user-account#remove-sso-identity-link) associated with your account. + +You have an SSO identity for every SSO-enabled HCP Terraform organization. HCP Terraform links each SSO identity to a single HCP Terraform user account. This link determines which account you can use to access each organization. + +<!-- END: TFC:only --> + +### Tokens + +Click **Tokens** in the sidebar to create, manage, and revoke API tokens. HCP Terraform has three kinds of API tokens: user, team, and organization. Users can be members of multiple organizations, so user tokens work with any organization where the associated user is a member. Refer to [API Tokens](/terraform/enterprise/users-teams-organizations/api-tokens) for details. + +API tokens are required for the following tasks: + +- Authenticating with the [HCP Terraform API](/terraform/enterprise/api-docs). API calls require an `Authorization: Bearer <TOKEN>` HTTP header. +- Authenticating with the [HCP Terraform CLI integration](/terraform/cli/cloud/settings) or the [`remote` backend](/terraform/language/settings/backends/remote). These require a token in the CLI configuration file or in the backend configuration. +- Using [private modules](/terraform/enterprise/registry/using) in command-line runs on local machines. This requires [a token in the CLI configuration file](/terraform/enterprise/registry/using#authentication). + +Protect your tokens carefully because they contain the same permissions as your user account. For example, if you belong to a team with permission to read and write variables for a workspace, another user could use your API token to authenticate as your user account and also edit variables in that workspace. Refer to [permissions](/terraform/enterprise/users-teams-organizations/permissions) for more details. + +We recommend protecting your tokens by creating them with an expiration date and time. Refer to [API Token Expiration](/terraform/enterprise/users-teams-organizations/api-tokens#token-expiration) for details. + +#### Creating a token + + To create a new token: + +1. Click **Create an API token**. The **Create API token** box appears. +2. Enter a **Description** that explains what the token is for and click **Create API token**. +3. You can optionally enter the token's expiration date or time, or create a token that never expires. The UI displays a token's expiration date and time in your current time zone. +4. Copy your token from the box and save it in a secure location. HCP Terraform only displays the token once, right after you create it. If you lose it, you must revoke the old token and create a new one. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +#### Revoking a token + +To revoke a token, click the **trash can** next to it. That token will no longer be able to authenticate as your user account. + +~> **Note**: HCP Terraform does not revoke a user API token's access to an organization when you remove the user from an SSO Identity Provider as the user may still be a member of the organization. To remove access to a user's API token, remove the user from the organization in the UI or with the [Terraform Enterprise provider](https://registry.terraform.io/providers/hashicorp/tfe/latest). + +### GitHub app OAuth token + +Click **Tokens** in the sidebar to manage your GitHub App token. This token lets you connect a workspaces to an available GitHub App installation. + +~> **Note:** Only an HCP Terraform user can own a GitHub App token. Team and Organization API tokens are not able to own a GitHub App token. + +A GitHub App token lets you: + +- Connect workspaces, policy sets, and registry modules to a GitHub App installation with the [HCP Terraform API](/terraform/enterprise/api-docs) and UI. +- View available GitHub App installations with the [HCP Terraform API](/terraform/enterprise/api-docs) and UI. + +After generating this token, you can use it to view information about your available installations for the Terraform Cloud GitHub App. + +#### Creating a GitHub app token + +To create a GitHub App token, click **Create a GitHub App token**. The **GitHub App authorization pop-up window** appears requesting authorization of the Terraform Cloud GitHub App. + +~> **Note:** This does not grant HCP Terraform access to repositories. + +#### Revoking a GitHub app token + +To revoke the GitHub App token, click the **ellipses button (...)**. The dropdown menu appears. Click the **Delete Token** option. This triggers a confirmation window to appear, which asks you to confirm that you want to revoke the token. Once confirmed, the token is revoked and you can no longer view GitHub App installations. + +#### Additional resources + +- [GitHub App permissions in HCP Terraform](/terraform/enterprise/vcs/github-app#github-permissions) diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-server.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-server.mdx new file mode 100644 index 0000000000..1995aa8bc4 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-server.mdx @@ -0,0 +1,94 @@ +--- +page_title: Set up the Azure DevOps Server VCS provider +description: >- + Learn how to use an on-premises installation of Azure DevOps Server with + workspaces and private registry modules in Terraform Enterprise. +source: terraform-docs-common +--- + +# Set up the Azure DevOps Server VCS provider + +These instructions describe how to connect to on-premise installations of Azure DevOps Server so that you can use HCP Terraform's VCS features. For instructions on how to set up Azure DevOps Services using OAuth, refer to [Set up the Azure DevOps Services VCS provider using OAuth](/terraform/enterprise/vcs/azure-devops-services). For information about other supported VCS providers, refer to [Connect to VCS Providers](/terraform/enterprise/vcs). + +## Requirements + +You must have permission to manage VCS settings for the organization to configure a new VCS provider. Refer to [Permission model](/terraform/enterprise/users-teams-organizations/permissions) for additional information about permissions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Personal access token maintenance + +HCP Terraform uses personal access tokens to connect to Azure DevOps Server. This access method requires some additional configuration and ongoing maintenance: + +- [IIS Basic Authentication must be disabled](https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/iis-basic-auth?view=azure-devops) on your Azure DevOps Server instance in order to use personal access tokens. +- Personal access tokens eventually expire, with a maximum allowed lifetime of one year. If HCP Terraform's token expires, it will be unable to connect to Azure DevOps Server until the token is replaced. To avoid a gap in service, do one of the following before the token expires: + - Update the expiration date of the existing token within Azure DevOps Server. + - Create a new token, and edit HCP Terraform's VCS connection to use it. + +## Step 1: On HCP Terraform, Begin Adding a New VCS Provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add VCS Provider**. The **VCS Providers** page appears. + +4. Select **Azure DevOps** and then select **Azure DevOps Server** from the menu. The page moves to the next step. + +5. On the "Set up provider" step there are three textboxes. Enter an optional **Name** for this VCS connection. Enter the instance URL for your Azure DevOps Server in **HTTP URL** and **API URL** textboxes. Click the "Continue" button to continue to the next step. + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: On Azure DevOps Server, Create a New Personal Access Token + +1. In a new browser tab, open your Azure DevOps Server instance and log in as whichever account you want HCP Terraform to act as. For most organizations this should be a dedicated service user, but a personal account will also work. + + ~> **Important:** The account you use for connecting HCP Terraform **must have Project Collection Administrator access** to any projects containing repositories of Terraform configurations, since creating webhooks requires these permissions. It is not possible to create custom access roles with lower levels of privilege, as Microsoft does not currently allow delegation of this capability. + +2. Navigate to User settings -> Security -> Personal access tokens. + +3. Click the **New Token** button to generate a new personal access token with "Code (Read)" and "Code (Status)" scopes. (We recommend also granting access to "All accessible organizations.") + +4. Copy the generated token to your clipboard; you'll paste it in the next step. Leave this page open in a browser tab. + +## Step 3: Add the Personal Access Token on HCP Terraform + +1. On the "Configure settings" step there is one textbox. Enter your Azure DevOps Server **Personal Access Token** from Step 2. Click the "Continue" button to continue to the next step. + +## Step 4: Configure VCS Provider Scope on HCP Terraform (Optional) + +This step is optional. You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. + +To limit the scope of this VCS Provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +## Step 5: On Workstation, Create an SSH Key for HCP Terraform + +On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to Azure DevOps Server. The exact command depends on your OS, but is usually something like `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"`. This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. + +This SSH key **must have an empty passphrase.** HCP Terraform cannot use SSH keys that require a passphrase. + +### Important Notes + +- Do not use your personal SSH key to connect HCP Terraform and Azure DevOps Server; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it for authenticating to Azure DevOps Server. +- **Protect this private key carefully.** It can read code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +## Step 6: On Azure Devops Server, Add SSH Public Key + +1. Navigate to User settings -> Security -> SSH public keys on your Azure DevOps Server instance. + + ![Azure DevOps Server screenshot: the SSH keys page](/img/docs/azure-devops-server-public-keys.png) + +2. Click the **Add** button. Paste the text of the **SSH public key** you created in step 3 (from the `.pub` file) into the text field, then click the **Add key** button to confirm. + +## Step 7: On HCP Terraform, Add SSH Private Key + +1. Go back to your HCP Terraform browser tab and paste the text of the **SSH private key** you created in step 3 into the **Private SSH Key** text field of the "Set up SSH keypair" step. Click the "Add SSH key" button. + +## Finished + +At this point, Azure DevOps Server access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services-pat.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services-pat.mdx new file mode 100644 index 0000000000..1da6dc1123 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services-pat.mdx @@ -0,0 +1,116 @@ +--- +page_title: Set up the Azure DevOps Services VCS provider using personal access tokens +description: >- + Learn how to use Azure DevOps Services with workspaces and private registry + modules in Terraform Enterprise using personal access tokens. +source: terraform-docs-common +--- + +# Set up the Azure DevOps Services VCS provider using personal access tokens + +These instructions describe how to use a personal access token to connect HCP Terraform to Azure DevOps Services VCS, which is hosted at `dev.azure.com`. Connecting to Azure DevOps Services VCS lets you take advantage of HCP Terraform's VCS features. + +If you do not intend to use personal access tokens to connect to Azure DevOps Services, refer to [Set up the Azure DevOps Server VCS provider](/terraform/enterprise/vcs/azure-devops-server). For information about other supported VCS providers, refer to [Connect to VCS Providers](/terraform/enterprise/vcs). + +## Requirements + +Configuring a new VCS provider requires permission to [manage VCS settings](/terraform/enterprise/users-teams-organizations/permissions#manage-vcs-settings) for the organization. + +To connect HCP Terraform to your repositories, your account must have **Project Collection Administrator** access enabled for all projects containing Terraform configurations. This permission is required to create webhooks because Microsoft doesn't allow you to create custom roles with lower-level access for this purpose. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Personal access token maintenance + +HCP Terraform uses personal access tokens to connect to Azure DevOps Services. This access method requires some additional configuration and ongoing maintenance: + +- Personal access tokens have a maximum lifetime of one year. When the token expires, HCP Terraform cannot connect to Azure DevOps Services until the token is replaced. To avoid a gap in service, do one of the following actions before the token expires: + - Update the expiration date of the existing token within Azure DevOps Services. + - Create a new token and update the VCS configuration in HCP Terraform VCS connection to use it. + +Refer to the [Azure DevOps documentation](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?toc=%2Fazure%2Fdevops%2Forganizations%2Ftoc.json&view=azure-devops&tabs=Windows) for instructions on working with personal access tokens. + +## Step 1: Add a new VCS provider in HCP Terraform + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add VCS Provider**. The **VCS Providers** page appears. + +4. Select **Azure DevOps** and then select **Azure DevOps Services** from the menu. The page moves to the next step. + +5. Select **Configure with Personal Access Token** + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: Create a new personal access token in Azure DevOps Services + +1. In a new browser tab, open your Azure DevOps Services instance and log in as whichever account you want HCP Terraform to act as. Many organizations use a dedicated service user but a personal account is acceptable. + +2. Navigate to User settings -> Security -> Personal access tokens. + +3. Click the **New Token** button to generate a new personal access token with **Code (Read)** and **Code (Status)** scopes. We recommend also granting access to **All accessible organizations** and setting an expiration that meets your requirements. + +4. Click **Create**. + +5. Copy the generated token to your clipboard so that you can use it in the next step. Leave this page open in a browser tab. + +## Step 3: Add the personal access token on HCP Terraform + +1. Return to the browser window you opened in [Step 1: Add a new VCS provider in HCP Terraform](#step-1-add-a-new-vcs-provider-in-hcp-terraform). +2. In the second step under **Set up provider**, specify a name for your VCS provider a name in the **Name** field. This field is optional. +3. In the second step under **Set up provider**, paste the Azure DevOps Services personal access token you copied in [step 2](#step-2-create-a-new-personal-access-token-in-azure-devops-services) into the **Personal Access Token** field. +4. Click **Connect and continue\*\*** to continue. + +## Step 4: Configure advanced settings in HCP Terraform (optional) + +It is optional, but you can configure the following settings in the **Advanced Settings** screen: + +- In the **Scope of VCS Provider** setting, enable workspaces to use repositories from this VCS provider. **All Projects** is enabled by default. This setting lets all workspaces in the organization use the VCS provider. +- In the **Set up SSH Keypair** setting, you can add or update an SSH key and OAuth credentials so that HCP Terraform can access Git submodules in repositories that require them. You configure these settings later. + +If you don't need to configure either of the advanced settings, click **Skip and Finish** to complete the setup and return to HCP Terraform's VCS Provider page, which includes your new Azure DevOps Services client. Otherwise, complete the following steps. + +### Limit the scope of this VCS provider + +1. Enable **Selected Projects** and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click **Update VCS Provider** to save your selections. + +3. Click the **Update VCS Provider** button to save your selections. + +### Add an SSH key pair + +HCP Terraform only uses SSH to clone Git submodules and uses HTTPS for all other Git operations. +Do not use your personal SSH key to connect HCP Terraform and Azure DevOps Services. You should generate a new key or use an existing key reserved for service access. + +In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, HCP Terraform retains the key and uses for authenticating with Azure DevOps Services. + +<Warning> + +Follow security best practices and your organization's policies for protecting important credentials when handing and storing a private key. Someone with access to the key can use it to push code to the repositories you use to manage your infrastructure. + +</Warning> + +1. On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to the Azure DevOps Services domain. The following example uses the `ssh-keygen` command to create a `service_terraform` file with the private key and a `service_terraform.pub` file with the public key: + + ```shell-session + $ ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise" + ``` + + <Warning> + + The passphrase for the SSH key must be empty. HCP Terraform cannot use SSH keys that require a passphrase. + + </Warning> + +2. Log into the Azure DevOps Services account you want HCP Terraform to act as and navigate to the **SSH Keys** settings page. + +3. Add a new SSH key and paste the value of the SSH public key you just created. + +4. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Next steps + +Azure DevOps Services access for HCP Terraform is fully configured. You can create Terraform workspaces based on your organization's repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services.mdx new file mode 100644 index 0000000000..023a60d8b7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/azure-devops-services.mdx @@ -0,0 +1,132 @@ +--- +page_title: Set up the Azure DevOps Services VCS provider using OAuth +description: >- + Learn how to use Azure DevOps Services with workspaces and private registry + modules in Terraform Enterprise using OAuth. +source: terraform-docs-common +--- + +# Set up the Azure DevOps Services VCS provider using OAuth + +~> **Important:** Starting April 2025, Microsoft will no longer allow new Azure DevOps OAuth app registrations—see the [official announcement](https://devblogs.microsoft.com/devops/no-new-azure-devops-oauth-apps-beginning-february-2025/) for details. Until [Entra ID](https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id) support is shipped in HCP Terraform, we recommend using [personal access tokens](/terraform/enterprise/vcs/azure-devops-services-pat). + +These instructions are for using `dev.azure.com` for HCP Terraform's VCS features. [Other supported VCS providers](/terraform/enterprise/vcs) have separate instructions. + +This page explains the four main steps required to connect HCP Terraform to your Azure DevOps Services VCS: + +1. Create a new connection in HCP Terraform and get the callback URL. +2. On your VCS, register your HCP Terraform organization as a new application. Provide the callback URL and get the application ID and key. +3. Provide HCP Terraform with the application ID and key. Then, request VCS access. +4. On your VCS, approve the access request from HCP Terraform. + +~> **Important:** HCP Terraform only supports Azure DevOps connections that use the `dev.azure.com` domain. If your Azure DevOps project uses the older `visualstudio.com` domain, you must migrate using the [steps in the Microsoft documentation](https://docs.microsoft.com/en-us/azure/devops/release-notes/2018/sep-10-azure-devops-launch#switch-existing-organizations-to-use-the-new-domain-name-url). + +## Requirements + +Configuring a new VCS provider requires permission to [manage VCS settings](/terraform/enterprise/users-teams-organizations/permissions#manage-vcs-settings) for the organization. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Before you begin, enable `Third-party application access via OAuth` in Azure DevOps Services settings. + +1. Log in to [Azure DevOps Services](https://dev.azure.com/). +2. Click **Organization settings**. +3. Click **Policies** under **Security**. +4. Enable the **Third-party application access via OAuth** setting. + + ![Azure DevOps Services Screenshot: Policies Third-party application access via Oauth](/img/docs/azure-devops-services-oauth-policies.png) + +## Step 1: On HCP Terraform, Begin Adding a New VCS Provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add VCS Provider**. The **VCS Providers** page appears. + +4. Select **Azure DevOps** and then select **Azure DevOps Services** from the menu. The page moves to the next step. + +Leave this page open in a browser tab. You will copy values from this page into Azure DevOps in the next step, and in later steps you will continue configuring HCP Terraform. + +## Step 2: From your Azure DevOps Services Profile, Create a New Application + +1. In a new browser tab, open your [Azure DevOps Services Profile](https://aex.dev.azure.com), and log in to your Azure DevOps Services account if necessary. A page with a list of your organizations appears. + + ~> **Important:** The Azure DevOps Services account you use for connecting HCP Terraform must have Project Collection Administrator access to any projects containing repositories of Terraform configurations, since creating webhooks requires admin permissions. It is not possible to create custom access roles with lower levels of privilege, as Microsoft does not currently allow delegation of this capability. If you're unable to load the link above, you can create a new application for the next step at one of the following links: `https://aex.dev.azure.com/app/register?mkt=en-US` or `https://app.vsaex.visualstudio.com/app/register?mkt=en-US`. + +2. Go into your preferred organization. + +3. Click your user icon and then click the **ellipses (...) ** and select **User settings**. + +4. From the User settings menu, click **Profile**. Your profile page appears. + +5. Click **Authorizations**. The Authorized OAuth Apps page appears. + +6. Click the link to register a new app. A form appears asking for your company and application information. + +7. Fill out the fields and checkboxes with the corresponding values currently displayed in your HCP Terraform browser tab. HCP Terraform lists the values in the order they appear and includes controls for copying values to your clipboard. Here is an example: + + | Field name | Value | + | -------------------------- | ----------------------------------------------------------------------------- | + | Company name | HashiCorp | + | Application Name | HCP Terraform (`<YOUR ORGANIZATION NAME>`) | + | Application website | `https://app.terraform.io` (or the URL of your Terraform Enterprise instance) | + | Authorization callback URL | `https://app.terraform.io/<YOUR CALLBACK URL>` | + + In the **Authorized scopes** section, select only **Code (read)** and **Code (status)** and then click **Create Application.** + + ![Azure DevOps Services Screenshot: Required permissions when creating a new application in your Azure DevOps Services Profile](/img/docs/azure-devops-services-application-permissions.png) + + ~> **Important:** Do not add any additional scopes beyond **Code (read)** and **Code (status),** as this can prevent HCP Terraform from connecting. Note that these authorized scopes cannot be updated after the application is created; to fix incorrect scopes you must delete and re-create the application. + +8. After creating the application, the next page displays its details. Leave this page open in a browser tab. In the next step, you will copy and paste the unique **App ID** and **Client Secret** from this page. + + If you accidentally close this details page and need to find it later, you can reach it from the **Applications and Services** links in your profile. + +## Step 3: On HCP Terraform, Set up Your Provider + +1. (Optional) Enter a **Name** for this VCS connection. + +2. Enter your Azure DevOps Services application's **App ID** and **Client Secret**. These can be found in the application's details, which should still be open in the browser tab from Step 2. + +3. Click **Connect and continue.** This takes you to a page on Azure DevOps Services, asking whether you want to authorize the app. Click the **Accept** button and you'll be redirected back to HCP Terraform. + + -> **Note:** If you receive a 404 error from Azure DevOps Services, it likely means your callback URL has not been configured correctly. + +## Step 4: On HCP Terraform, Configure Advanced Settings (Optional) + +The settings in this section are optional. The Advanced Settings you can configure are: + +- **Scope of VCS Provider** - You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. +- **Set up SSH Keypair** - Most organizations will not need to add an SSH key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. You can add or update the SSH key at a later time. + +### If You Don't Need to Configure Advanced Settings: + +1. Click the **Skip and Finish** button. This returns you to HCP Terraform's VCS Provider page, which now includes your new Azure DevOps Services client. + +### If You Need to Limit the Scope of this VCS Provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +### If You Do Need an SSH Keypair: + +#### Important Notes + +- SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. +- Do not use your personal SSH key to connect HCP Terraform and Azure DevOps Services; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it when authenticating to Azure DevOps Services. +- **Protect this private key carefully.** It can push code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +1. On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to Azure DevOps Services.com. The exact command depends on your OS, but is usually something like: + `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"` + This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. This SSH key **must have an empty passphrase**. HCP Terraform cannot use SSH keys that require a passphrase. + +2. While logged into the Azure DevOps Services account you want HCP Terraform to act as, navigate to the SSH Keys settings page, add a new SSH key and paste the value of the SSH public key you just created. + +3. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Finished + +At this point, Azure DevOps Services access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-cloud.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-cloud.mdx new file mode 100644 index 0000000000..41e33f8676 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-cloud.mdx @@ -0,0 +1,127 @@ +--- +page_title: Set up the Bitbucket Cloud VCS provider +description: >- + Learn how to use Bitbucket Cloud with workspaces and private registry modules + in Terraform Enterprise. +source: terraform-docs-common +--- + +# Set up the Bitbucket Cloud VCS provider + +This topic describes how to connect Bitbucket Cloud to HCP Terraform. Bitbucket Cloud is the cloud-hosted version of Bitbucket. For self-hosted Bitbucket Data Center instances, refer to [Configuring Bitbucket Data Center Access](/terraform/enterprise/vcs/bitbucket-data-center). Refer to [Connecting VCS Providers to HCP Terraform](/terraform/enterprise/vcs) for other supported VCS providers. + +Configuring a new VCS provider requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Connecting HCP Terraform to your VCS involves four steps: + +| On your VCS | On HCP Terraform | +| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +|   | Create a new connection in HCP Terraform. Get callback URL. | +| Register your HCP Terraform organization as a new app. Provide callback URL. Get ID and key. |   | +|   | Provide HCP Terraform with ID and key. Request VCS access. | +| Approve access request. |   | + +The rest of this page explains the Bitbucket Cloud-specific versions of these steps. + +## Step 1: On HCP Terraform, Begin Adding a New VCS Provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add VCS Provider**. The **VCS Providers** page appears. + +4. Select **Bitbucket** and then select **Bitbucket Cloud** from the menu. The page moves to the next step. + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: On Bitbucket Cloud, Create a New OAuth Consumer + +1. In a new browser tab, open [Bitbucket Cloud](https://bitbucket.org) and log in as whichever account you want HCP Terraform to act as. For most organizations this should be a dedicated service user, but a personal account will also work. + + ~> **Important:** The account you use for connecting HCP Terraform **must have admin access** to any shared repositories of Terraform configurations, since creating webhooks requires admin permissions. + +2. Navigate to Bitbucket's "Add OAuth Consumer" page. + + This page is located at `https://bitbucket.org/<YOUR WORKSPACE NAME>/workspace/settings/oauth-consumers/new`. You can also reach it through Bitbucket's menus: + + - Click your profile picture and choose the workspace you want to access. + - Click "Settings". + - Click "OAuth consumers," which is in the "Apps and Features" section. + - On the OAuth settings page, click the "Add consumer" button. + +3. This page has a form with several text fields and checkboxes. + + Fill out the fields and checkboxes with the corresponding values currently displayed in your HCP Terraform browser tab. HCP Terraform lists the values in the order they appear, and includes controls for copying values to your clipboard. + + Fill out the text fields as follows: + + | Field | Value | + | ------------ | ----------------------------------------------------------------------------- | + | Name | HCP Terraform (`<YOUR ORGANIZATION NAME>`) | + | Description | Any description of your choice. | + | Callback URL | `https://app.terraform.io/<YOUR CALLBACK URL>` | + | URL | `https://app.terraform.io` (or the URL of your Terraform Enterprise instance) | + + Ensure that the "This is a private consumer" option is checked. Then, activate the following permissions checkboxes: + + | Permission type | Permission level | + | --------------- | ---------------- | + | Account | Write | + | Repositories | Admin | + | Pull requests | Write | + | Webhooks | Read and write | + +4. Click the "Save" button, which returns you to the OAuth settings page. + +5. Find your new OAuth consumer under the "OAuth Consumers" heading, and click its name to reveal its details. + + Leave this page open in a browser tab. In the next step, you will copy and paste the unique **Key** and **Secret.** + +## Step 3: On HCP Terraform, Set up Your Provider + +1. Enter the **Key** and **Secret** from the previous step, as well as an optional **Name** for this VCS connection. + +2. Click "Connect and continue." This takes you to a page on Bitbucket Cloud asking whether you want to authorize the app. + +3. Click the blue "Grant access" button to proceed. + +## Step 4: On HCP Terraform, Configure Advanced Settings (Optional) + +The settings in this section are optional. The Advanced Settings you can configure are: + +- **Scope of VCS Provider** - You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. +- **Set up SSH Keypair** - Most organizations will not need to add an SSH key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. You can add or update the SSH key at a later time. + +### If You Don't Need to Configure Advanced Settings: + +1. Click the **Skip and Finish** button. This returns you to HCP Terraform's VCS Provider page, which now includes your new Bitbucket Cloud client. + +### If You Need to Limit the Scope of this VCS Provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +### If You Do Need an SSH Keypair: + +#### Important Notes + +- SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. +- Do not use your personal SSH key to connect HCP Terraform and Bitbucket Cloud; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it when authenticating to Bitbucket Cloud. +- **Protect this private key carefully.** It can push code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +1. On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to Bitbucket Cloud. The exact command depends on your OS, but is usually something like: + `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"` + This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. This SSH key **must have an empty passphrase**. HCP Terraform cannot use SSH keys that require a passphrase. + +2. While logged into the Bitbucket Cloud account you want HCP Terraform to act as, navigate to the SSH Keys settings page, add a new SSH key and paste the value of the SSH public key you just created. + +3. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Finished + +At this point, Bitbucket Cloud access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's shared repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-data-center.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-data-center.mdx new file mode 100644 index 0000000000..7951e3e2d7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/bitbucket-data-center.mdx @@ -0,0 +1,128 @@ +--- +page_title: Set up the Bitbucket Data Center VCS provider +description: >- + Learn how to use Bitbucket Data Center with workspaces and private registry + modules in Terraform Enterprise. +source: terraform-docs-common +--- + +# Set up the Bitbucket Data Center VCS provider + +This topic describes how to connect Bitbucket Data Center to HCP Terraform. For instructions on how to connect Bitbucket Cloud, refer to [Configuring Bitbucket Cloud Access](/terraform/enterprise/vcs/bitbucket-cloud). Refer to [Connecting VCS Providers to HCP Terraform](/terraform/enterprise/vcs) for other supported VCS providers. + +**Bitbucket Server is deprecated**. Atlassian ended support for Bitbucket Server on February 15, 2024, and recommends using either Bitbucket Data Center (v8.0 or newer) or Bitbucket Cloud instead. Refer to the [Atlassian documentation](https://bitbucket.org/blog/cloud-migration-benefits) for additional information. + +HCP Terraform will end support Bitbucket Server on August 15, 2024. Terraform Enterprise will also end support for Bitbucket Server in Terraform Enterprise v202410. [Contact HashiCorp support](https://support.hashicorp.com/hc/en-us) if you have any questions regarding this change. + +## Overview + +The following steps provide an overview of how to connect HCP Terraform and Terraform Enterprise to Bitbucket Data Center: + +1. Add a new VCS provider to HCP Terraform or Enterprise. +2. Create a new application link in Bitbucket. +3. Create an SSH key pair. SSH keys must have an empty passphrase because HCP Terraform cannot use SSH keys that require a passphrase. +4. Add an SSH key to Bitbucket. You must complete this step as a non-administrator user in Bitbucket. +5. Add the private SSH key to Terraform. + +## Requirements + +- You must have permission to manage VCS settings for the organization. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for additional information. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +- You must have OAuth authentication credentials for Bitbucket Data Center. + +- Your instance of Bitbucket Data Center must be internet-accessible on its SSH and HTTP(S) ports. This is because HCP Terraform must be able to contact Bitbucket Data Center over both SSH and HTTP or HTTPS during setup and during normal operation. + +- HCP Terraform must have network connectivity to Bitbucket Data Center instances. Note that [Bitbucket Data Center's default ports](https://confluence.atlassian.com/bitbucketserverkb/which-ports-does-bitbucket-server-listen-on-and-what-are-they-used-for-806029586.html) are `7999` for SSH and `7990` for HTTP. Check your configuration to confirm your BitBucket instance's real ports. + +## Add a new VCS provider to Terraform + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add VCS Provider**. The **VCS Providers** page appears. + +4. Choose **Bitbucket Data Center** from the **Bitbucket** drop-down menu. + +5. (Optional) Enter a **Name** for this VCS connection. + +6. Specify the URL of your Bitbucket Data Center instance in the **HTTP URL** and **API URL** fields. If the context path is not set for your Bitbucket Data Center instance, the **API URL** is the same as the **HTTP URL**. Refer to the [Atlassian documentation](https://confluence.atlassian.com/bitbucketserver/moving-bitbucket-server-to-a-different-context-path-776640153.html) for additional information. Specify the following values if the context path is set for your Bitbucket Data Center instance: + + - Set the **HTTP URL** field to your Bitbucket Data Center instance URL and add the context path: `https://<BITBUCKET INSTANCE HOSTNAME>/<CONTEXT PATH>`. + - Set the **API URL** field to your Bitbucket Data Center instance URL: `https://<BITBUCKET INSTANCE HOSTNAME>`. + + By default, HCP Terraform uses port `80` for HTTP and `443` for HTTPS. If Bitbucket Data Center is configured to use non-standard ports or is behind a reverse proxy, you may need to include the port number in the URL. + +7. You can either generate new consumer and public keys that you can use to create a new application link in Bitbucket Data Center described in [Create an application link](#create-an-application-link) or use keys from an existing application link: + - To generate new keys, click **Continue**. Do not leave this screen until you have copied the key values. + - To use existing keys, enable the **Use Custom Keys** option and enter them into the fields. + +## Create an application link + +1. Log into Bitbucket Data Center as an admin. + +2. Open the **Application Links** administration page using the navigation or by entering `https://<BITBUCKET INSTANCE HOSTNAME>/plugins/servlet/applinks/listApplicationLinks` in your browser's address bar. + +3. Click **Application Links** in the sidebar, then click **Create new link**. + +4. Choose **Atlassian product** as the link type. This option also works for external applications and lets you continue to use OAuth 1.0 integrations. + +5. Enter `https://app.terraform.io` or the hostname of your Terraform Enterprise instance when prompted. You can only specify the main URL once. To connect multiple HCP Terraform organizations to the same Bitbucket Data Center instance, enter the organization URL when creating the link instead. The organization URL is the HCP Terraform URL or Terraform Enterprise hostname appended with `/app/<ORG NAME>`. + +6. When prompted, confirm that you wish to use the URL as entered. If you specified HCP Terraform's main URL, click **Continue**. If you specified an organization URL, enable the **Use this URL** option and then click **Continue**. + +7. In the **Link applications** dialog, configure the following settings: + + - Specify `HCP Terraform <ORG NAME>` in the **Application Name** field + - Choose **Generic Application** from the **Application Type** drop-down menu + - Enable the **Create incoming link** option + + Leave all the other fields empty. + +8. Click **Continue**. The **Link applications** screen progresses to the second configuration screen. + +9. In the **Consumer Key** and **Public Key** fields, enter the key values you created in the [Add a new VCS provider to Terraform](#add-a-new-vcs-provider-to-terraform) instructions. + +10. In the **Consumer Name** field, enter `HCP Terraform (<ORG NAME>)`. + +11. Click **Continue**. Bitbucket prompts you to authorize Terraform to make changes. Before you proceed, verify that you are logged in with the user account that HCP Terraform will use to access Bitbucket and not as a Bitbucket administrator. If Bitbucket returns a 500 error instead of the authorization screen, Terraform may have been unable to reach your Bitbucket Data Center instance. + +12. Click **Allow** and enter the SSH key when prompted. + +## Create an SSH key for Terraform + +On a secure workstation, create an SSH keypair that HCP Terraform or Terraform Enterprise can use to connect to Bitbucket Data Center. The command for generating SSH keys depends on your OS. The following example for Linux creates a `service_terraform` file with the private key and a `service_terraform.pub` file with the public key: + +```shell-session +$ ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise" +``` + +Do not specify a passphrase because Terraform cannot use SSH keys that require a passphrase. + +## Add an SSH key to Bitbucket + +In the following steps, you must provide HCP Terraform with the private SSH key you created in [Create an SSH key for Terraform](#create-an-ssh-key-for-terraform). Although HCP Terraform does not display the text of the key to users after it is entered, it retains the key and uses it for authenticating to Bitbucket Data Center. + +1. If you are logged into Bitbucket Data Center as an administrator, log out before proceeding. +2. Log in with the Bitbucket account that you want to use for HCP Terraform or Terraform Enterprise. Many organizations use a dedicated service user account for this purpose. Because creating webhooks requires admin permissions, the account must have admin access to any shared repositories of Terraform configurations. Refer to [Requirements](#requirements) for more information. +3. Open the **SSH keys** page and click the profile icon. +4. Choose **Manage account**. +5. Click **SSH keys** or enter `https://<BITBUCKET INSTANCE HOSTNAME>/plugins/servlet/ssh/account/keys` in the address bar to go to the **SSH keys** screen. +6. Click **Add key** and enter the SSH public key you created in [Create an SSH key for Terraform](#create-an-ssh-key-for-terraform) into the text field. Open the `.pub` file to get the key value. +7. Click **Add key** to finish adding the key. + +## Add an SSH private key + +Complete the following steps in HCP Terraform or Terraform Enterprise to request access to Bitbucket and add the SSH private key. + +1. Open the **SSH keys** settings page and click **Add a private SSH key**. A large text field appears. +2. Enter the text of the **SSH private key** you created in [Create an SSH key for Terraform](#create-an-ssh-key-for-terraform) and click **Add SSH Key**. + +## Next steps + +After completing these instructions, you can create Terraform workspaces based on your organization's shared repositories. Refer to the following resources for additional guidance: + +- [Creating Workspaces](/terraform/enterprise/workspaces/create) in HCP Terraform +- [Creating Workspaces](/terraform/enterprise/workspaces/create) in Terraform Enterprise diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/github-enterprise.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/github-enterprise.mdx new file mode 100644 index 0000000000..ffdc1dd99f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/github-enterprise.mdx @@ -0,0 +1,140 @@ +--- +page_title: Set up the GitHub Enterprise VCS provider +description: >- + Learn how to use an on-premise installation of GitHub Enterprise with + workspaces and private registry modules in Terraform Enterprise. +source: terraform-docs-common +--- + +# Set up the GitHub Enterprise VCS provider + +These instructions are for using a self-hosted installation of GitHub Enterprise for HCP Terraform's VCS features. [GitHub.com has separate instructions,](/terraform/enterprise/vcs/github-enterprise) as do the [other supported VCS providers.](/terraform/enterprise/vcs) + +Configuring a new VCS provider requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Connecting HCP Terraform to your VCS involves four steps: + +| On your VCS | On HCP Terraform | +| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +|   | Create a new connection in HCP Terraform. Get callback URL. | +| Register your HCP Terraform organization as a new app. Provide callback URL. Get ID and key. |   | +|   | Provide HCP Terraform with ID and key. Request VCS access. | +| Approve access request. |   | + +The rest of this page explains the GitHub Enterprise versions of these steps. + +~> **Important:** HCP Terraform needs to contact your GitHub Enterprise instance during setup and during normal operation. For the SaaS version of HCP Terraform, this means GitHub Enterprise must be internet-accessible; for Terraform Enterprise, you must have network connectivity between your Terraform Enterprise and GitHub Enterprise instances. + +-> **Note:** Alternately, you can skip the OAuth configuration process and authenticate with a personal access token. This requires using HCP Terraform's API. For details, see [the OAuth Clients API page](/terraform/enterprise/api-docs/oauth-clients). + +## Step 1: On HCP Terraform, begin adding a new VCS provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add a VCS provider**. The **Add VCS Provider** page appears. + +4. Select **GitHub** and then select **GitHub Enterprise** from the menu. The page moves to the next step. + +5. In the "Set up provider" step, fill in the **HTTP URL** and **API URL** of your GitHub Enterprise instance, as well as an optional **Name** for this VCS connection. + + | Field | Value | + | -------- | ------------------------------------------- | + | HTTP URL | `https://<GITHUB INSTANCE HOSTNAME>` | + | API URL | `https://<GITHUB INSTANCE HOSTNAME>/api/v3` | + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: On GitHub, create a new OAuth application + +1. In a new browser tab, open your GitHub Enterprise instance and log in as whichever account you want HCP Terraform to act as. For most organizations this should be a dedicated service user, but a personal account will also work. + + ~> **Important:** The account you use for connecting HCP Terraform **must have admin access** to any shared repositories of Terraform configurations, since creating webhooks requires admin permissions. + +2. Navigate to GitHub's Register a New OAuth Application page. + + This page is located at `https://<GITHUB INSTANCE HOSTNAME>/settings/applications/new`. You can also reach it through GitHub's menus: + + - Click your profile picture and choose "Settings." + - Click "OAuth Apps" (under the "Developer settings" section). + - Click the "Register a new application" button. + +3. This page has a form with four text fields. + + Fill out the fields with the corresponding values currently displayed in your HCP Terraform browser tab. HCP Terraform lists the values in the order they appear, and includes controls for copying values to your clipboard. + + Fill out the text fields as follows: + + | Field name | Value | + | -------------------------- | ----------------------------------------------------------------------------- | + | Application Name | HCP Terraform (`<YOUR ORGANIZATION NAME>`) | + | Homepage URL | `https://app.terraform.io` (or the URL of your Terraform Enterprise instance) | + | Application Description | Any description of your choice. | + | Authorization callback URL | `https://app.terraform.io/<YOUR CALLBACK URL>` | + +4. Click the "Register application" button, which creates the application and takes you to its page. + +5. <a href="https://content.hashicorp.com/api/assets?product=terraform-docs-common&version=main&asset=website/img/docs/hcp-terraform-logo-on-white.png" download>Download this image of the HCP Terraform logo</a> and upload it with the "Upload new logo" button or the drag-and-drop target. This optional step helps you identify HCP Terraform's pull request checks at a glance. + +6. Click the "Generate a new client secret" button. You will need this secret in the next step. + +7. Leave this page open in a browser tab. In the next step, you will copy and paste the unique **Client ID** and **Client Secret.** + +## Step 3: On HCP Terraform, set up your provider + +1. Enter the **Client ID** and **Client Secret** from the previous step. + +2. Click "Connect and continue." This takes you to a page on your GitHub Enterprise instance, asking whether you want to authorize the app. + +3. The authorization page lists any GitHub organizations this account belongs to. If there is a **Request** button next to the organization that owns your Terraform code repositories, click it now. Note that you need to do this even if you are only connecting workspaces to private forks of repositories in those organizations since those forks are subject to the organization's access restrictions. See [About OAuth App access restrictions](https://docs.github.com/en/organizations/managing-oauth-access-to-your-organizations-data/about-oauth-app-access-restrictions). + + If it results in a 500 error, it usually means HCP Terraform was unable to reach your GitHub Enterprise instance. + +4. Click the green "Authorize `<GITHUB USER>`" button at the bottom of the authorization page. GitHub might request your password or multi-factor token to confirm the operation. + +## Step 4: On HCP Terraform, configure advanced settings (optional) + +The settings in this section are optional. The Advanced Settings you can configure are: + +- **Scope of VCS Provider** - You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. +- **Set up SSH Keypair** - Most organizations will not need to add an SSH key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. You can add or update the SSH key at a later time. + +### If you don't need to configure advanced settings: + +1. Click the **Skip and finish** button. This returns you to HCP Terraform's VCS Providers page, which now includes your new GitHub Enterprise client. + +### If you need to limit the scope of this VCS provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +### If you need an SSH keypair: + +#### Important notes + +- SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. +- Do not use your personal SSH key to connect HCP Terraform and GitHub Enterprise; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it when authenticating to GitHub Enterprise. +- **Protect this private key carefully.** It can push code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +1. On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to Github Enterprise. The exact command depends on your OS, but is usually something like: + `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"` + This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. This SSH key **must have an empty passphrase**. HCP Terraform cannot use SSH keys that require a passphrase. + +2. While logged into the GitHub Enterprise account you want HCP Terraform to act as, navigate to the SSH Keys settings page, add a new SSH key and paste the value of the SSH public key you just created. + +3. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Step 5: Contact Your GitHub organization admins + +If your organization uses OAuth app access restrictions, you had to click a **Request** button when authorizing HCP Terraform, which sent an automated email to the administrators of your GitHub organization. An administrator must approve the request before HCP Terraform can access your organization's shared repositories. + +If you're a GitHub administrator, check your email now and respond to the request; otherwise, contact whoever is responsible for GitHub accounts in your organization, and wait for confirmation that they've approved your request. + +## Finished + +At this point, GitHub access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's shared GitHub Enterprise repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/github.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/github.mdx new file mode 100644 index 0000000000..0ffe1630c9 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/github.mdx @@ -0,0 +1,145 @@ +--- +page_title: Set up the GitHub.com OAuth VCS provider +description: >- + Learn how to use GitHub.com with workspaces and private registry modules in + Terraform Enterprise with a per-organization OAuth connection. +source: terraform-docs-common +--- + +# Set up the GitHub.com OAuth VCS provider + +These instructions are for using GitHub.com for HCP Terraform's VCS features, using a per-organization OAuth connection with the permissions of one particular GitHub user. [GitHub Enterprise has separate instructions,](/terraform/enterprise/vcs/github-enterprise) as do the [other supported VCS providers.](/terraform/enterprise/vcs) + +<!-- BEGIN: TFC:only --> + +For new users on HCP Terraform, we recommend using our [configuration-free GitHub App](/terraform/enterprise/vcs/github-app) to access repositories instead. + +<!-- END: TFC:only --> + +For Terraform Enterprise site admins, you can create your own [GitHub App](/terraform/enterprise/admin/application/github-app-integration) to access repositories. + +Configuring a new VCS provider requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Connecting HCP Terraform to your VCS involves four steps: + +| On your VCS | On HCP Terraform | +| ---------------------------------------------------------------------------- | ----------------------------------------------------------- | +|   | Create a new connection in HCP Terraform. Get callback URL. | +| Register your HCP Terraform organization as a new app. Provide callback URL. |   | +|   | Provide HCP Terraform with ID and key. Request VCS access. | +| Approve access request. |   | + +The rest of this page explains the GitHub versions of these steps. + +-> **Note:** Alternately, you can skip the OAuth configuration process and authenticate with a personal access token. This requires using HCP Terraform's API. For details, see [the OAuth Clients API page](/terraform/enterprise/api-docs/oauth-clients). + +## Step 1: On HCP Terraform, begin adding a new VCS provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add a VCS provider**. The **Add VCS Provider** page appears. + +4. Select **GitHub** and then select **GitHub.com (Custom)** from the menu. The page moves to the next step. + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: On GitHub, create a new OAuth application + +On the HCP Terraform **Add VCS Provider** page, click **register a new OAuth Application**. This opens GitHub.com in a new browser tab with the OAuth application settings pre-filled. + +Alternately, create the OAuth application manually on GitHub.com. + +### Manual steps + +1. In a new browser tab, open [github.com](https://github.com) and log in as whichever account you want HCP Terraform to act as. For most organizations this should be a dedicated service user, but a personal account will also work. + + ~> **Important:** The account you use for connecting HCP Terraform **must have admin access** to any shared repositories of Terraform configurations, since creating webhooks requires admin permissions. + +2. Navigate to GitHub's [Register a New OAuth Application](https://github.com/settings/applications/new) page. + + This page is located at <https://github.com/settings/applications/new>. You can also reach it through GitHub's menus: + + - Click your profile picture and choose "Settings." + - Click "Developer settings," then make sure you're on the "OAuth Apps" page (not "GitHub Apps"). + - Click the "New OAuth App" button. + +3. This page has a form with four text fields. + + Fill out the fields with the corresponding values currently displayed in your HCP Terraform browser tab. HCP Terraform lists the values in the order they appear, and includes controls for copying values to your clipboard. + + Fill out the text fields as follows: + + | Field name | Value | + | -------------------------- | ----------------------------------------------------------------------------- | + | Application Name | HCP Terraform (`<YOUR ORGANIZATION NAME>`) | + | Homepage URL | `https://app.terraform.io` (or the URL of your Terraform Enterprise instance) | + | Application Description | Any description of your choice. | + | Authorization callback URL | `https://app.terraform.io/<YOUR CALLBACK URL>` | + +### Register the OAuth application + +1. Click the "Register application" button, which creates the application and takes you to its page. + +2. <a href="https://content.hashicorp.com/api/assets?product=terraform-docs-common&version=main&asset=website/img/docs/hcp-terraform-logo-on-white.png" download>Download this image of the HCP Terraform logo</a> and upload it with the "Upload new logo" button or the drag-and-drop target. This optional step helps you identify HCP Terraform's pull request checks at a glance. + +3. Click the **Generate a new client secret** button. You will need this secret in the next step. + +4. Leave this page open in a browser tab. In the next step, you will copy and paste the unique **Client ID** and **Client Secret.** + +## Step 3: On HCP Terraform, set up your provider + +1. Enter the **Client ID** and **Client Secret** from the previous step, as well as an optional **Name** for this VCS connection. + +2. Click "Connect and continue." This takes you to a page on GitHub.com, asking whether you want to authorize the app. + +3. The authorization page lists any GitHub organizations this account belongs to. If there is a **Request** button next to the organization that owns your Terraform code repositories, click it now. Note that you need to do this even if you are only connecting workspaces to private forks of repositories in those organizations since those forks are subject to the organization's access restrictions. See [About OAuth App access restrictions](https://docs.github.com/en/organizations/managing-oauth-access-to-your-organizations-data/about-oauth-app-access-restrictions). + +4. Click the green "Authorize `<GITHUB USER>`" button at the bottom of the authorization page. GitHub might request your password or multi-factor token to confirm the operation. + +## Step 4: On HCP Terraform, configure advanced settings (optional) + +The settings in this section are optional. The Advanced Settings you can configure are: + +- **Scope of VCS Provider** - You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. +- **Set up SSH Keypair** - Most organizations will not need to add an SSH key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. You can add or update the SSH key at a later time. + +### If you don't need to configure advanced settings: + +1. Click the **Skip and finish** button. This returns you to HCP Terraform's **VCS Providers** page, which now includes your new GitHub client. + +### If you need to limit the scope of this VCS provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +### If you need an SSH keypair: + +#### Important notes + +- SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. +- Do not use your personal SSH key to connect HCP Terraform and GitHub; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it when authenticating to GitHub. +- **Protect this private key carefully.** It can push code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +1. On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to GitHub.com. The exact command depends on your OS, but is usually something like: + `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"` + This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. This SSH key **must have an empty passphrase**. HCP Terraform cannot use SSH keys that require a passphrase. + +2. While logged into the GitHub.com account you want HCP Terraform to act as, navigate to the SSH Keys settings page, add a new SSH key and paste the value of the SSH public key you just created. + +3. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Step 5: Contact your GitHub organization admins + +If your organization uses OAuth app access restrictions, you had to click a **Request** button when authorizing HCP Terraform, which sent an automated email to the administrators of your GitHub organization. An administrator must approve the request before HCP Terraform can access your organization's shared repositories. + +If you're a GitHub administrator, check your email now and respond to the request; otherwise, contact whoever is responsible for GitHub accounts in your organization, and wait for confirmation that they've approved your request. + +## Finished + +At this point, GitHub access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's shared GitHub repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-com.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-com.mdx new file mode 100644 index 0000000000..43bee92f73 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-com.mdx @@ -0,0 +1,119 @@ +--- +page_title: Set up the GitLab.com VCS provider +description: >- + Learn how to use GitLab.com repositories with workspaces and private registry + modules in Terraform Enterprise. +source: terraform-docs-common +--- + +# Set up the GitLab.com VCS provider + +These instructions are for using GitLab.com for HCP Terraform's VCS features. [GitLab CE and GitLab EE have separate instructions,](/terraform/enterprise/vcs/gitlab-eece) as do the [other supported VCS providers.](/terraform/enterprise/vcs) + +Configuring a new VCS provider requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Connecting HCP Terraform to your VCS involves four steps: + +| On your VCS | On HCP Terraform | +| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +|   | Create a new connection in HCP Terraform. Get redirect URI. | +| Register your HCP Terraform organization as a new app. Provide redirect URI. |   | +|   | Provide HCP Terraform with application ID and secret. Request VCS access. | +| Approve access request. |   | + +The rest of this page explains the GitLab.com versions of these steps. + +-> **Note:** Alternately, you can skip the OAuth configuration process and authenticate with a personal access token. This requires using HCP Terraform's API. For details, see [the OAuth Clients API page](/terraform/enterprise/api-docs/oauth-clients). + +## Step 1: On HCP Terraform, Begin Adding a New VCS Provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Click **Add VCS Provider**. The **VCS Providers** page appears. + +4. Select **GitLab** and then select **GitLab.com** from the menu. The page moves to the next step. + +5. Locate the "Redirect URI" and copy it to your clipboard; you'll paste it in the next step. + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: On GitLab, Create a New Application + +1. In a new browser tab, open [gitlab.com](https://gitlab.com) and log in as whichever account you want HCP Terraform to act as. For most organizations this should be a dedicated service user, but a personal account will also work. + + ~> **Important:** The account you use for connecting HCP Terraform **must have Maintainer access** to any shared repositories of Terraform configurations, since creating webhooks requires Maintainer permissions. Refer to [the GitLab documentation](https://docs.gitlab.com/ee/user/permissions.html#project-members-permissions) for details. + +2. Navigate to GitLab's [User Settings > Applications](https://gitlab.com/-/profile/applications) page. + + This page is located at <https://gitlab.com/-/profile/applications>. You can also reach it through GitLab's menus: + + - Click your profile picture and choose "Settings." + - Click "Applications." + +3. This page has a list of applications and a form for adding new ones. The form has two text fields and some checkboxes. + + Fill out the fields and checkboxes with the corresponding values currently displayed in your HCP Terraform browser tab. HCP Terraform lists the values in the order they appear, and includes controls for copying values to your clipboard. + + Fill out the form as follows: + + | Field | Value | + | ----------------------- | ---------------------------------------------------------------------------------------------- | + | Name | HCP Terraform (`<YOUR ORGANIZATION NAME>`) | + | Redirect URI | `https://app.terraform.io/<YOUR CALLBACK URL>`, the redirect URI you copied from HCP Terraform | + | Confidential (checkbox) | ✔️ (enabled) | + | Scopes (all checkboxes) | api | + + +1. Click the "Save application" button, which creates the application and takes you to its page. + +2. Leave this page open in a browser tab. In the next step, you will copy and paste the unique **Application ID** and **Secret.** + +## Step 3: On HCP Terraform, Set up Your Provider + +1. Enter the **Application ID** and **Secret** from the previous step, as well as an option **Name** for this VCS connection. + +2. Click **Connect and continue.** This takes you to a page on GitLab.com, which asks if you want to authorize the app. + +3. Click the green **Authorize** button at the bottom of the authorization page. + +## Step 4: On HCP Terraform, Configure Advanced Settings (Optional) + +The settings in this section are optional. The Advanced Settings you can configure are: + +- **Scope of VCS Provider** - You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. +- **Set up SSH Keypair** - Most organizations will not need to add an SSH key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. You can add or update the SSH key at a later time. + +### If You Don't Need to Configure Advanced Settings: + +1. Click the **Skip and Finish** button. This returns you to HCP Terraform's VCS Provider page, which now includes your new GitLab client. + +### If You Need to Limit the Scope of this VCS Provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +### If You Do Need an SSH Keypair: + +#### Important Notes + +- SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. +- Do not use your personal SSH key to connect HCP Terraform and GitLab; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it when authenticating to GitLab. +- **Protect this private key carefully.** It can push code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +1. On a secure workstation, create an SSH keypair that HCP Terraform can use to connect to GitLab.com. The exact command depends on your OS, but is usually something like: + `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"` + This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. This SSH key **must have an empty passphrase**. HCP Terraform cannot use SSH keys that require a passphrase. + +2. While logged into the GitLab.com account you want HCP Terraform to act as, navigate to the SSH Keys settings page, add a new SSH key and paste the value of the SSH public key you just created. + +3. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Finished + +At this point, GitLab.com access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's shared repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-eece.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-eece.mdx new file mode 100644 index 0000000000..a4b484859d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/gitlab-eece.mdx @@ -0,0 +1,133 @@ +--- +page_title: Set up the GitLab EE and CE VCS provider +description: >- + Learn how to use on-premise installation of GitLab Enterprise Edition (EE) or + GitLab Community Edition (CE) with workspaces and private registry module in + Terraform Enterprise. +source: terraform-docs-common +--- + +# Set up the GitLab EE and CE VCS provider + +These instructions are for using an on-premise installation of GitLab Enterprise Edition (EE) or GitLab Community Edition (CE) for HCP Terraform's VCS features. [GitLab.com has separate instructions,](/terraform/enterprise/vcs/gitlab-com) as do the [other supported VCS providers.](/terraform/enterprise/vcs) + +Configuring a new VCS provider requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Connecting HCP Terraform to your VCS involves four steps: + +| On your VCS | On HCP Terraform | +| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +|   | Create a new connection in HCP Terraform. Get redirect URI. | +| Register your HCP Terraform organization as a new app. Provide redirect URI. Get ID and key. |   | +|   | Provide HCP Terraform with application ID and secret. Request VCS access. | +| Approve access request. |   | + +The rest of this page explains the on-premise GitLab versions of these steps. + +~> **Important:** HCP Terraform needs to contact your GitLab instance during setup and during normal operation. For the SaaS version of HCP Terraform, this means GitLab must be internet-accessible; for Terraform Enterprise, you must have network connectivity between your Terraform Enterprise and GitLab instances. + +-> **Note:** Alternately, you can skip the OAuth configuration process and authenticate with a personal access token. This requires using HCP Terraform's API. For details, see [the OAuth Clients API page](/terraform/enterprise/api-docs/oauth-clients). + +-> **Version Note:** HCP Terraform supports GitLab versions 9.0 and newer. HashiCorp does not test older versions of GitLab with HCP Terraform, and they might not work as expected. Also note that, although we do not deliberately remove support for versions that have reached end of life (per the [GitLab Support End of Life Policy](https://docs.gitlab.com/ee/policy/maintenance.html#patch-releases)), our ability to resolve customer issues with end of life versions might be limited. + +## Step 1: On HCP Terraform, Begin Adding a New VCS Provider + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the organization where you want to add the VCS provider. + +2. Choose **Settings** from the sidebar, then click **Providers**. + +3. Select **GitLab** and then select **GitLab Enterprise Edition** or **GitLab Community Edition** from the menu. The page moves to the next step. + +4. In the "Set up provider" step, fill in the **HTTP URL** and **API URL** of your GitLab Enterprise Edition or GitLab Community Edition instance, as well as an optional **Name** for this VCS connection. Click "Continue." + + | Field | Value | + | -------- | ------------------------------------------- | + | HTTP URL | `https://<GITLAB INSTANCE HOSTNAME>` | + | API URL | `https://<GITLAB INSTANCE HOSTNAME>/api/v4` | + + Note that HCP Terraform uses GitLab's v4 API. + +Leave the page open in a browser tab. In the next step you will copy values from this page, and in later steps you will continue configuring HCP Terraform. + +## Step 2: On GitLab, Create a New Application + +1. In a new browser tab, open your GitLab instance and log in as whichever account you want HCP Terraform to act as. For most organizations this should be a dedicated service user, but a personal account will also work. + + ~> **Important:** The account you use for connecting HCP Terraform **must have admin (master) access** to any shared repositories of Terraform configurations, since creating webhooks requires admin permissions. Do not create the application as an administrative application not owned by a user; HCP Terraform needs user access to repositories to create webhooks and ingress configurations. + + ~> **Important**: In GitLab CE or EE 10.6 and up, you may also need to enable **Allow requests to the local network from hooks and services** on the "Outbound requests" section inside the Admin area under Settings (`/admin/application_settings/network`). Refer to [the GitLab documentation](https://docs.gitlab.com/ee/security/webhooks.html) for details. + +2. Navigate to GitLab's "User Settings > Applications" page. + + This page is located at `https://<GITLAB INSTANCE HOSTNAME>/profile/applications`. You can also reach it through GitLab's menus: + + - Click your profile picture and choose "Settings." + - Click "Applications." + +3. This page has a list of applications and a form for adding new ones. The form has two text fields and some checkboxes. + + Fill out the fields and checkboxes with the corresponding values currently displayed in your HCP Terraform browser tab. HCP Terraform lists the values in the order they appear, and includes controls for copying values to your clipboard. + + Fill out the form as follows: + + | Field | Value | + | ------------------------------- | ---------------------------------------------- | + | Name | HCP Terraform (`<YOUR ORGANIZATION NAME>`) | + | Redirect URI | `https://app.terraform.io/<YOUR CALLBACK URL>` | + | Confidential (checkbox) | ✔️ (enabled) | + | Expire access tokens (checkbox) | (no longer required) | + | Scopes (all checkboxes) | api | + + -> **Note:** For previous versions of HCP Terraform and GitLab, we recommended disabling a setting called `Expire access tokens`. This action was required because Gitlab marked OAuth tokens as expired after 2 hours, but HCP Terraform only refreshed tokens after 6 hours. This setting does not exist on Gitlab v15+ and HCP Terraform now refreshes tokens more often. + +4. Click the "Save application" button, which creates the application and takes you to its page. + +5. Leave this page open in a browser tab. In the next step, you will copy and paste the unique **Application ID** and **Secret.** + +## Step 3: On HCP Terraform, Set up Your Provider + +1. On the "Configure settings" step on HCP Terraform, enter the **Application ID** and **Secret** from the previous step. + +2. Click **Connect and continue.** This takes you to a page on GitLab asking whether you want to authorize the app. Alternatively, if you are redirected to a 500 error, it usually means HCP Terraform was unable to reach your GitLab instance. + +3. Click the green **Authorize** button at the bottom of the authorization page. + +## Step 4: On HCP Terraform, Configure Advanced Settings (Optional) + +The settings in this section are optional. The Advanced Settings you can configure are: + +- **Scope of VCS Provider** - You can configure which workspaces can use repositories from this VCS provider. By default the **All Projects** option is selected, meaning this VCS provider is available to be used by all workspaces in the organization. +- **Set up a PEM formatted SSH Keypair** - Most organizations will not need to add an SSH key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. You can add or update the SSH key at a later time. + +### If You Don't Need to Configure Advanced Settings: + +1. Click the **Skip and Finish** button. This returns you to HCP Terraform's VCS Provider page, which now includes your new GitLab client. + +### If You Need to Limit the Scope of this VCS Provider: + +1. Select the **Selected Projects** option and use the text field that appears to search for and select projects to enable. All current and future workspaces for any selected projects can use repositories from this VCS Provider. + +2. Click the **Update VCS Provider** button to save your selections. + +### If You Do Need a PEM formatted SSH Keypair: + +#### Important Notes + +- SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. +- Do not use your personal SSH key to connect HCP Terraform and GitLab; generate a new one or use an existing key reserved for service access. +- In the following steps, you must provide HCP Terraform with the private key. Although HCP Terraform does not display the text of the key to users after it is entered, it retains it and will use it when authenticating to GitLab. +- **Protect this private key carefully.** It can push code to the repositories you use to manage your infrastructure. Take note of your organization's policies for protecting important credentials and be sure to follow them. + +1. On a secure workstation, create a PEM formatted SSH keypair that HCP Terraform can use to connect to GitLab. The exact command depends on your OS, but is usually something like: + `ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise"` + This creates a `service_terraform` file with the private key, and a `service_terraform.pub` file with the public key. This SSH key **must have an empty passphrase**. HCP Terraform cannot use SSH keys that require a passphrase. + +2. While logged into the GitLab account you want HCP Terraform to act as, navigate to the SSH Keys settings page, add a new SSH key and paste the value of the SSH public key you just created. + +3. In HCP Terraform's **Add VCS Provider** page, paste the text of the **SSH private key** you just created, and click the **Add SSH Key** button. + +## Finished + +At this point, GitLab access for HCP Terraform is fully configured, and you can create Terraform workspaces based on your organization's shared repositories. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/index.mdx new file mode 100644 index 0000000000..4b1c37c0c5 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/index.mdx @@ -0,0 +1,137 @@ +--- +page_title: Connect to VCS Providers +description: >- + Version control system (VCS) connections integrate Terraform Enterprise into + your workflow. Learn how to automate Terraform runs when you commit changes to + your code. +source: terraform-docs-common +--- + +# Connect to VCS Providers + +HCP Terraform is more powerful when you integrate it with your version control system (VCS) provider. Although you can use many of HCP Terraform's features without one, a VCS connection provides additional features and improved workflows. In particular: + +- When workspaces are linked to a VCS repository, HCP Terraform can [automatically initiate Terraform runs](/terraform/enterprise/run/ui) when changes are committed to the specified branch. +- HCP Terraform makes code review easier by [automatically predicting](/terraform/enterprise/run/ui#speculative-plans-on-pull-requests) how pull requests will affect infrastructure. +- Publishing new versions of a [private Terraform module](/terraform/enterprise/registry/publish-modules) is as easy as pushing a tag to the module's repository. + +We recommend configuring VCS access when first setting up an organization, and you might need to add additional VCS providers later depending on how your organization grows. + +Configuring a new VCS provider requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Supported VCS Providers + +HCP Terraform supports the following VCS providers: + +<!-- BEGIN: TFC:only --> + +- [GitHub.com](/terraform/enterprise/vcs/github-app) + +<!-- END: TFC:only --> + +- [GitHub App for TFE](/terraform/enterprise/admin/application/github-app-integration) +- [GitHub.com (OAuth)](/terraform/enterprise/vcs/github) +- [GitHub Enterprise](/terraform/enterprise/vcs/github-enterprise) +- [GitLab.com](/terraform/enterprise/vcs/gitlab-com) +- [GitLab EE and CE](/terraform/enterprise/vcs/gitlab-eece) +- [Bitbucket Cloud](/terraform/enterprise/vcs/bitbucket-cloud) +- [Bitbucket Data Center](/terraform/enterprise/vcs/bitbucket-data-center) +- [Azure DevOps Server](/terraform/enterprise/vcs/azure-devops-server) +- [Azure DevOps Services (OAuth)](/terraform/enterprise/vcs/azure-devops-services) +- [Azure DevOps Services (PAT)](/terraform/enterprise/vcs/azure-devops-services-pat) + +Use the links above to see details on configuring VCS access for each supported provider. If you use another VCS that is not supported, you can build an integration via [the API-driven run workflow](/terraform/enterprise/run/api). + +## How HCP Terraform Uses VCS Access + +Most workspaces in HCP Terraform are associated with a VCS repository, which provides Terraform configurations for that workspace. To find out which repos are available, access their contents, and create webhooks, HCP Terraform needs access to your VCS provider. + +Although HCP Terraform's API lets you create workspaces and push configurations to them without a VCS connection, the primary workflow expects every workspace to be backed by a repository. + +To use configurations from VCS, HCP Terraform needs to do several things: + +- Access a list of repositories, to let you search for repos when creating new workspaces. +- Register webhooks with your VCS provider, to get notified of new commits to a chosen branch. +- Download the contents of a repository at a specific commit in order to run Terraform with that code. + +~> **Important:** HCP Terraform usually performs VCS actions using a designated VCS user account, but it has no other knowledge about your VCS's authorization controls and does not associate HCP Terraform user accounts with VCS user accounts. This means HCP Terraform's VCS user might have a different level of access to repositories than any given HCP Terraform user. Keep this in mind when selecting a VCS user, as it may affect your security posture in one or both systems. + +### Webhooks + +HCP Terraform uses webhooks to monitor new commits and pull requests. + +- When someone adds new commits to a branch, any HCP Terraform workspaces based on that branch will begin a Terraform run. Usually a user must inspect the plan output and approve an apply, but you can also enable automatic applies on a per-workspace basis. You can prevent automatic runs by locking a workspace. A run will only occur if the workspace has not previously processed a run for the commit SHA. +- When someone submits a pull request/merge request to a branch, any HCP Terraform workspaces based on that branch will perform a [speculative plan](/terraform/enterprise/run/remote-operations#speculative-plans) with the contents of the request and links to the results on the PR's page. This helps you avoid merging PRs that cause plan failures. + +~> **Important:** In Terraform Enterprise, integration with a SaaS VCS provider (GitHub.com, GitLab.com, Bitbucket Cloud, or Azure DevOps Services) requires ingress from the public internet. This lets the inbound web hooks reach Terraform Enterprise. You should also configure appropriate security controls, such as a Web Application Firewall (WAF). + +### SSH Keys + +For most supported VCS providers, HCP Terraform does not need an SSH key. This is because Terraform can do everything it needs with the provider's API and an OAuth token. The exceptions are Azure DevOps Server and Bitbucket Data Center, which require an SSH key for downloading repository contents. Refer to the setup instructions for [Azure DevOps Server](/terraform/enterprise/vcs/azure-devops-server) and [Bitbucket Data Center](/terraform/enterprise/vcs/bitbucket-data-center) for details. + +For other VCS providers, most organizations will not need to add an SSH private key. However, if the organization repositories include Git submodules that can only be accessed via SSH, an SSH key can be added along with the OAuth credentials. + +For VCS providers where adding an SSH private key is optional, SSH will only be used to clone Git submodules. All other Git operations will still use HTTPS. + +If submodules will be cloned via SSH from a private VCS instance, SSH must be running on the standard port 22 on the VCS server. + +To add an SSH key to a VCS connection, finish configuring OAuth in the organization settings, and then use the "add a private SSH key" link on the VCS Provider settings page to add a private key that has access to the submodule repositories. When setting up a workspace, if submodules are required, select "Include submodules on clone". More at [Workspace settings](/terraform/enterprise/workspaces/settings). + +### Multiple VCS Connections + +If your infrastructure code is spread across multiple VCS providers, you can configure multiple VCS connections. You can choose which VCS connection to use whenever you create a new workspace. + +#### Scoping VCS Connections using Projects + +You can configure which projects can use repositories from a VCS connection. By default each VCS connection is enabled for all workspaces in the organization. If you need to limit which projects can use repositories from a given VCS connection, you can change this setting to enable the connection for only workspaces in the selected projects. + +## Configuring VCS Access + +HCP Terraform uses the OAuth protocol to authenticate with VCS providers. + +~> **Important:** Even if you've used OAuth before, read the instructions carefully. Since HCP Terraform's security model treats each _organization_ as a separate OAuth application, we authenticate with OAuth's developer workflow, which is more complex than the standard user workflow. + +The exact steps to authenticate are different for each VCS provider, but they follow this general order: + +| On your VCS | On HCP Terraform | +| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| Register your HCP Terraform organization as a new app. Get ID and key. |   | +|   | Tell HCP Terraform how to reach VCS, and provide ID and key. Get callback URL. | +| Provide callback URL. |   | +|   | Request VCS access. | +| Approve access request. |   | + +For complete details, click the link for your VCS provider: + +- [GitHub](/terraform/enterprise/vcs/github) +- [GitHub Enterprise](/terraform/enterprise/vcs/github-enterprise) +- [GitLab.com](/terraform/enterprise/vcs/gitlab-com) +- [GitLab EE and CE](/terraform/enterprise/vcs/gitlab-eece) +- [Bitbucket Cloud](/terraform/enterprise/vcs/bitbucket-cloud) +- [Bitbucket Data Center](/terraform/enterprise/vcs/bitbucket-data-center) +- [Azure DevOps Server](/terraform/enterprise/vcs/azure-devops-server) +- [Azure DevOps Services](/terraform/enterprise/vcs/azure-devops-services) + +-> **Note:** Alternatively, you can skip the OAuth configuration process and authenticate with a personal access token. This requires using HCP Terraform's API. For details, see [the OAuth Clients API page](/terraform/enterprise/api-docs/oauth-clients). + +<!-- BEGIN: TFC:only --> + +### Private VCS + +You can use self-hosted HCP Terraform Agents to connect HCP Terraform to your private VCS provider, such as GitHub Enterprise, GitLab Enterprise, and BitBucket Data Center. For more information, refer to [Connect to Private VCS Providers](/terraform/enterprise/vcs/private). + +<!-- END: TFC:only --> + +## Viewing events + +-> **Note**: The VCS Events page is still in beta as support is being added for additional VCS providers. Currently only GitLab.com connections established after December 2020 are supported. + +VCS events describe changes within your organization for VCS-related actions. The VCS events page only displays events from previously processed commits in the past 30 days. The VCS page indicates previously processed commits with the message, `"Processing skipped for duplicate commit SHA"`. + +Viewing VCS events requires permission to manage VCS settings for the organization. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +To view VCS events for your organization, go to your organization's settings and click **Events**. The **VCS Events** page appears. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/vcs/troubleshooting.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/troubleshooting.mdx new file mode 100644 index 0000000000..182c9ba0bb --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/vcs/troubleshooting.mdx @@ -0,0 +1,227 @@ +--- +page_title: Troubleshoot VCS providers in Terraform Enterprise +description: >- + Learn how to address common problems in VCS integrations for Terraform + Enterprise. +source: terraform-docs-common +--- + +# Troubleshoot VCS providers + +This page collects solutions to the most common problems our users encounter with VCS integration in HCP Terraform. + +## Azure DevOps + +### Required status checks not sending + +When configuring [status checks with Azure DevOps](https://learn.microsoft.com/en-us/azure/devops/repos/git/pr-status-policy) the web interface may auto populate Genre and Name fields (beneath "Status to check") with incorrect values that do not reflect what HCP Terraform is sending. +To function correctly as required checks the Genre must be populated with "Terraform Cloud" (or the first segment for a Terraform Enterprise install), and the remainder of the status check goes in the Name field. This requires using the "Enter genre/name separately" checkbox to not use the default configuration. + +In the example below the status check is named `Terraform Cloud/paul-hcp/gianni-test-1` and needs to be configured with Genre `Terraform Cloud` and Name `paul-hcp/gianni-test-1`. + +![Azure DevOps screenshot: configuring required status checks correctly](/img/docs/ado-required-status-check.png) + +With an older version of Azure DevOps Server it may be that the web interface does not allow entering the Genre and Name separately. In which case the status check will need to be created via the [API](https://learn.microsoft.com/en-us/rest/api/azure/devops/policy/configurations/create). + +## Bitbucket Data Center + +The following errors are specific to Bitbucket Data Center integrations. + +### Clicking "Connect organization `<X>`" with Bitbucket Data Center raises an error message in HCP Terraform + +HCP Terraform uses OAuth 1 to authenticate the user to Bitbucket Data Center. The first step in the authentication process is for HCP Terraform to call Bitbucket Data Center to obtain a request token. After the call completes, HCP Terraform redirects you to Bitbucket Data Center with the request token. + +An error occurs when HCP Terraform calls to Bitbucket Data Center to obtain the request token but the request is rejected. Some common reasons for the request to be rejected are: + +- The API endpoint is unreachable; this can happen if the address or port is incorrect or the domain name doesn't resolve. +- The certificate used on Bitbucket Data Center is rejected by the HCP Terraform HTTP client because the SSL verification fails. This is often the case with self-signed certificates or when the Terraform Enterprise instance is not configured to trust the signing chain of the Bitbucket Data Center SSL certificate. + +To fix this issue, do the following: + +- Verify that the instance running Terraform Enterprise can resolve the domain name and can reach Bitbucket Data Center. +- Verify that the HCP Terraform client accepts the HTTPS connection to Bitbucket Data Center. This can be done by performing a `curl` from the Terraform Enterprise instance to Bitbucket Data Center; it should not return any SSL errors. +- Verify that the Consumer Key, Consumer Name, and the Public Key are configured properly in Bitbucket Data Center. +- Verify that the HTTP URL and API URL in HCP Terraform are correct for your Bitbucket Data Center instance. This includes the proper scheme (HTTP vs HTTPS), as well as the port. + +### Creating a workspace from a repository hangs indefinitely, displaying a spinner on the confirm button + +If you were able to connect HCP Terraform to Bitbucket Data Center but cannot create workspaces, it often means HCP Terraform isn't able to automatically add webhook URLs for that repository. + +To fix this issue: + +- Make sure you haven't manually entered any webhook URLs for the affected repository or project. Although the Bitbucket Web Post Hooks Plugin documentation describes how to manually enter a hook URL, HCP Terraform handles this automatically. Manually entered URLs can interfere with HCP Terraform's operation. + + To check the hook URLs for a repository, go to the repository's settings, then go to the "Hooks" page (in the "Workflow" section) and click on the "Post-Receive WebHooks" link. + + Also note that some Bitbucket Data Center versions might allow you to set per-project or server-wide hook URLs in addition to per-repository hooks. These should all be empty; if you set a hook URL that might affect more than one repo when installing the plugin, go back and delete it. +- Make sure you aren't trying to connect too many workspaces to a single repository. Bitbucket Data Center's webhooks plugin can only attach five hooks to a given repo. You might need to create additional repositories if you need to make more than five workspaces from a single configuration repo. + +## Bitbucket Cloud + +### HCP Terraform fails to obtain repositories + +This typically happens when the HCP Terraform application in Bitbucket Cloud wasn't configured to have the full set of permissions. Go to the OAuth section of the Bitbucket settings, find your HCP Terraform OAuth consumer, click the edit link in the "..." menu, and ensure it has the required permissions enabled: + +| Permission type | Permission level | +| --------------- | ---------------- | +| Account | Write | +| Repositories | Admin | +| Pull requests | Write | +| Webhooks | Read and write | + +## GitHub + +### "Host key verification failed" error in `terraform init` when attempting to ingress Terraform modules via Git over SSH + +This is most common when running Terraform 0.10.3 or 0.10.4, which had a bug in handling SSH submodule ingress. Try upgrading affected HCP Terraform workspaces to the latest Terraform version or 0.10.8 (the latest in the 0.10 series). + +### HCP Terraform can't ingress Git submodules, with auth errors during init + +This usually happens when an SSH key isn't associated with the VCS provider's OAuth client. + +- Go to your organization's "VCS Provider" settings page and check your GitHub client. If it still says "You can add a private SSH key to this connection to be used for git clone operations" (instead of "A private SSH key has been added..."), you need to click the "add a private SSH key" link and add a key. +- Check the settings page for affected workspaces and ensure that "Include submodules on clone" is enabled. + +Note that the "SSH Key" section in a workspace's settings is only used for mid-run operations like cloning Terraform modules. It isn't used when cloning the linked repository before a run. + +## General + +The following errors may occur for all VCS providers except Bitbucket Data Center. + +### HCP Terraform returns 500 after authenticating with the VCS provider + +The Callback URL in the OAuth application configuration in the VCS provider probably wasn't updated in the last step of the instructions and still points to the default "/" path (or an example.com link) instead of the full callback url. + +The fix is to update the callback URL in your VCS provider's application settings. You can look up the real callback URL in HCP Terraform's settings. + +### Can't delete a workspace or module, resulting in 500 errors + +This often happens when the VCS connection has been somehow broken: it might have had permissions revoked, been reconfigured, or had the repository removed. Check for these possibilities and contact HashiCorp support for further assistance, including any information you collected in your support ticket. + +### `redirect_uri_mismatch` error on "Connect" + +The domain name for HCP Terraform's SaaS release changed on 02/22 at 9AM from `atlas.hashicorp.com` to `app.terraform.io`. If the OAuth client was originally configured on the old domain, using it for a new VCS connection can result in this error. + +The fix is to update the OAuth Callback URL in your VCS provider to use app.terraform.io instead of atlas.hashicorp.com. + +### Can't trigger workspace runs from VCS webhook + +A workspace with no runs will not accept new runs from a VCS webhook. You must queue at least one run manually. + +A workspace will not process a webhook if the workspace previously processed a webhook with the same commit SHA and created a run. To trigger a run, create a new commit. If a workspace receives a webhook with a previously processed commit, HCP Terraform adds a new event to the [VCS Events](/terraform/enterprise/vcs#viewing-events) page documenting the received webhook. + +### Changing the URL for a VCS provider + +On rare occasions, you might need HCP Terraform to change the URL it uses to reach your VCS provider. This usually only happens if you move your VCS server or the VCS vendor changes their supported API versions. + +HCP Terraform does not allow you to change the API URL for an existing VCS connection, but you can create a new VCS connection and update existing resources to use it. This is most efficient if you script the necessary updates using HCP Terraform's API. In brief: + +1. [Configure a new VCS connection](/terraform/enterprise/vcs) with the updated URL. +2. Obtain the [oauth-token IDs](/terraform/enterprise/api-docs/oauth-tokens) for the old and new OAuth clients. +3. [List all workspaces](/terraform/enterprise/api-docs/workspaces#list-workspaces) (dealing with pagination if necessary), and use a JSON filtering tool like `jq` to make a list of all workspace IDs whose `attributes.vcs-repo.oauth-token-id` matches the old VCS connection. +4. Iterate over the list of workspaces and [PATCH each one](/terraform/enterprise/api-docs/workspaces#update-a-workspace) to use the new `oauth-token-id`. +5. [List all registry modules](/terraform/registry/api-docs#list-modules) and use their `source` property to determine which ones came from the old VCS connection. +6. [Delete each affected module](/terraform/enterprise/api-docs/private-registry/modules#delete-a-module), then [create a new module](/terraform/enterprise/api-docs/private-registry/modules#publish-a-private-module-from-a-vcs) from the new connection's version of the relevant repo. +7. Delete the old VCS connection. + +### Reauthorizing VCS OAuth Providers + +If a VCS OAuth connection breaks, you can reauthorize an existing VCS provider while retaining any VCS connected resources, like workspaces. We recommend only using this feature to fix broken VCS connections. We also recommend reauthorizing using the same VCS account to avoid permission changes to your repositories. + +~> **Important:** Reauthorizing is not available when the [TFE Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/oauth_client) is managing the OAuth Client. Instead, you can update the [oauth_token](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/oauth_client#oauth_token) argument with a new token from your VCS Provider. + +To reauthorize a VCS connection, complete the following steps: + +1. Go to your organization's settings and click **Providers** under **Version Control**. +2. Click **Reauthorize** in the **OAuth Token ID** column. +3. Confirm the reauthorization. HCP Terraform redirects you to your VCS Provider where you can reauthorize the connection. + +## Certificate Errors on Terraform Enterprise + +When debugging failures of VCS connections due to certificate errors, running additional diagnostics using the OpenSSL command may provide more information about the failure. + +First, attach a bash session to the application container: + + docker exec -it ptfe_atlas sh -c "stty rows 50 && stty cols 150 && bash" + +Then run the `openssl s_client` command, using the certificate at `/tmp/cust-ca-certificates.crt` in the container: + + openssl s_client -showcerts -CAfile /tmp/cust-ca-certificates.crt -connect git-server-hostname:443 + +For example, a Gitlab server that uses a self-signed certificate might result in an error like `verify error:num=18:self signed certificate`, as shown in the output below: + + bash-4.3# openssl s_client -showcerts -CAfile /tmp/cust-ca-certificates.crt -connect gitlab.local:443 + CONNECTED(00000003) + depth=0 CN = gitlab.local + verify error:num=18:self signed certificate + verify return:1 + depth=0 CN = gitlab.local + verify return:1 + --- + Certificate chain + 0 s:/CN=gitlab.local + i:/CN=gitlab.local + -----BEGIN CERTIFICATE----- + MIIC/DCCAeSgAwIBAgIJAIhG2GWtcj7lMA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV + BAMMFWdpdGxhYi1sb2NhbC5oYXNoaS5jbzAeFw0xODA2MDQyMjAwMDhaFw0xOTA2 + MDQyMjAwMDhaMCAxHjAcBgNVBAMMFWdpdGxhYi1sb2NhbC5oYXNoaS5jbzCCASIw + DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMMgrpo3zsoy2BP/AoGIgrYwEMnj + PwSOFGNHbclmiVBCW9jvrZrtva8Qh+twU7CSQdkeSP34ZgLrRp1msmLvUuVMgPts + i7isrI5hug/IHLLOGO5xMvxOcrHknvySYJRmvYFriEBPNRPYJGJ9O1ZUVUYeNwW/ + l9eegBDpJrdsjGmFKCOzZEdUA3zu7PfNgf788uIi4UkVXZNa/OFHsZi63OYyfOc2 + Zm0/vRKOn17dewOOesHhw77yYbBH8OFsEiC10JCe5y3MD9yrhV1h9Z4niK8rHPXz + XEh3JfV+BBArodmDbvi4UtT+IGdDueUllXv7kbwqvQ67OFmmek0GZOY7ZvMCAwEA + AaM5MDcwIAYDVR0RBBkwF4IVZ2l0bGFiLWxvY2FsLmhhc2hpLmNvMBMGA1UdJQQM + MAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQCfkukNV/9vCA/8qoEbPt1M + mvf2FHyUD69p/Gq/04IhGty3sno4eVcwWEc5EvfNt8vv1FykFQ6zMJuWA0jL9x2s + LbC8yuRDnsAlukSBvyazCZ9pt3qseGOLskaVCeOqG3b+hJqikZihFUD95IvWNFQs + RpvGvnA/AH2Lqqeyk2ITtLYj1AcSB1hBSnG/0fdtao9zs0JQsrS59CD1lbbTPPRN + orbKtVTWF2JlJxl2watfCNTw6nTCPI+51CYd687T3MuRN7LsTgglzP4xazuNjbWB + QGAiQRd6aKj+xAJnqjzXt9wl6a493m8aNkyWrxZGHfIA1W70RtMqIC/554flZ4ia + -----END CERTIFICATE----- + --- + Server certificate + subject=/CN=gitlab.local + issuer=/CN=gitlab.local + --- + No client certificate CA names sent + Peer signing digest: SHA512 + Server Temp Key: ECDH, P-256, 256 bits + --- + SSL handshake has read 1443 bytes and written 433 bytes + --- + New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 + Server public key is 2048 bit + Secure Renegotiation IS supported + Compression: NONE + Expansion: NONE + No ALPN negotiated + SSL-Session: + Protocol : TLSv1.2 + Cipher : ECDHE-RSA-AES256-GCM-SHA384 + Session-ID: AF5286FB7C7725D377B4A5F556DEB6DDC38B302153DDAE90C552ACB5DC4D86B8 + Session-ID-ctx: + Master-Key: DB75AEC12C6E7B62246C653C8CB8FC3B90DE86886D68CB09898A6A6F5D539007F7760BC25EC4563A893D34ABCFAAC28A + Key-Arg : None + PSK identity: None + PSK identity hint: None + SRP username: None + TLS session ticket lifetime hint: 300 (seconds) + TLS session ticket: + 0000 - 03 c1 35 c4 ff 6d 24 a8-6c 70 61 fb 2c dc 2e b8 ..5..m$.lpa.,... + 0010 - de 4c 6d b0 2c 13 8e b6-63 95 18 ee 4d 33 a6 dc .Lm.,...c...M3.. + 0020 - 0d 64 24 f0 8d 3f 9c aa-b8 a4 e2 4f d3 c3 4d 88 .d$..?.....O..M. + 0030 - 58 99 10 73 83 93 70 4a-2c 61 e7 2d 41 74 d3 e9 X..s..pJ,a.-At.. + 0040 - 83 8c 4a 7f ae 7b e8 56-5c 51 fc 6f fe e3 a0 ec ..J..{.V\Q.o.... + 0050 - 3c 2b 6b 13 fc a0 e5 15-a8 31 16 19 11 98 56 43 <+k......1....VC + 0060 - 16 86 c4 cd 53 e6 c3 61-e2 6c 1b 99 86 f5 a8 bd ....S..a.l...... + 0070 - 3c 49 c0 0a ce 81 a9 33-9b 95 2c e1 f4 6d 05 1e <I.....3..,..m.. + 0080 - 18 fa bf 2e f2 27 cc 0b-df 08 13 7e 4d 5a c8 41 .....'.....~MZ.A + 0090 - 93 26 23 90 f1 bb ba 3a-15 17 1b 09 6a 14 a8 47 .&#....:....j..G + 00a0 - 61 eb d9 91 0a 5c 4d e0-4a 8f 4d 50 ab 4b 81 aa a....\M.J.MP.K.. + + Start Time: 1528152434 + Timeout : 300 (sec) + Verify return code: 18 (self signed certificate) + --- + closed diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/best-practices.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/best-practices.mdx new file mode 100644 index 0000000000..a2d44d71e7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/best-practices.mdx @@ -0,0 +1,71 @@ +--- +page_title: Best Practices - Workspaces - Terraform Enterprise +description: >- + Best practices to structure your configuration and Terraform Enterprise + workspaces +source: terraform-docs-common +--- + +# Workspace Best Practices + +An HCP Terraform workspace manages a single state file and the lifecycle of its resources. It is the smallest collection of HCP Terraform-managed infrastructure. Any operation on a resource can potentially affect other resources managed in the same state file, so it is best to keep the potential blast radius of your operations small. To do so, manage resources in separate workspaces when possible, grouping together only necessary and logically-related resources. For example, even though your application may require both compute resources and a database, these resources can operate independently and should be in their own workspaces. +Scoping your configuration and planning your workspace strategy early in your adoption of HCP Terraform and Terraform Enterprise will simplify your operations and make them safer. + +## Name your Workspace + +We recommend using the following naming convention so you can identify and associate workspaces with specific components of your infrastructure: + +`<business-unit>-<app-name>-<layer>-<env>` + +- `<business-unit>`: The business unit or team that owns the workspace. +- `<app-name>`: The name of the application or service that the workspace manages. +- `<layer>`: The layer of the infrastructure that the workspace manages (or example, network, compute, filestore). +- `<env>`: The environment that the workspace manages (for example, prod, staging, QA, prod). + +If your application team does not have a `layer`, use `main` or `app` in its place to maintain consistency across the organization. + +## Group by volatility + +Volatility refers to the rate of change of the resources in a workspace. Infrastructure such as databases, VPCs, and subnets change much less frequently than infrastructure such as your web servers. By exposing your long-living infrastructure to unnecessary volatility, you introduce more opportunities for accidental changes. When planning your workspace organization, group resources by volatility. + +![An example of how workspaces can be split among Production, Staging, QA, and Dev. In this example, networking and security are grouped in one workspace, with compute, filestore, and SQL all having their own workspace. This is duplicated in each environment](/img/docs/workspace-net-infra-split.png) + +The above example groups together tightly-coupled resources like networking, security, and identity in a shared workspace. Compute, storage, and databases have separate workspaces, since they change at different frequencies. You may scale compute instances multiple times a day, but your database instances probably change far less frequently. By grouping these parts of your infrastructure into separate workspaces, you decouple unrelated resources and reduce the risk of unexpected changes. + +## Determine stateful vs stateless infrastructure + +Stateful resources are ones that you cannot delete and recreate because they persist data, such as databases and object storage. By managing stateful resources independently of stateless ones, such as separating databases from compute instances, you limit the blast radius of operations that cause the resource recreation and help protect against accidental data loss. + +Consider the workspace structure in the [Volatility section](#group-by-volatility). You could potentially manage filestore and database resources together, as they are both stateful resources. Your compute resources are stateless and should still have a separate workspace. + +## Separate privileges and responsibilities + +A best practice is to split up workspaces based on team responsibilities and required privileges. For example, consider an application that requires separate developer and production environments, each with special networking and application infrastructure. One approach is to create four different workspaces, two for the developer environment and two for production. Only the networking team has access to the networking workspaces. + +In this setup, only the networking team needs permissions to manage the resources in the networking workspaces, and others cannot manage those workspace resources. If a workspace's scope is too large, a user might need more permissions than appropriate in order to perform operations the workspace. + +![An example of how workspaces can be split among Production, Staging, QA, and Dev. In this example, networking and security are grouped in one workspace, with compute, filestore, and SQL all having their own workspace. This is duplicated in each environment](/img/docs/workspace-net-infra-combined.png) + +Splitting your workspaces by team also helps limit the responsibility per workspace and allows teams to maintain distinct areas of ownership. If you need to reference attributes of resources managed in other workspaces, you can share the outputs using the [tfe_outputs](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/data-sources/outputs) data source. By limiting the scope of each workspace and sharing just the required outputs with others, you reduce the risk of leaking potentially sensitive information in a workspace's state. To share outputs from a workspace, you must explicitly enable remote state sharing in the workspace settings. + +## Avoid large Terraform plans and applies + +HCP Terraform and Terraform Enterprise execute workloads using agents. Every time an agent refreshes a workspace's state, it builds a [dependency graph](/terraform/internals/graph) of the resources to determine how to sequence operations in the workspace. As the number of resources your workspace manages grows, these graphs become larger and more complex. As these graphs grow, they require more worker RAM to build them. If your agent's performance degrades or workloads take longer to complete, we suggest exploring ways to split up the workspace to reduce the size of the dependency graph. + +## Determine workspace concurrency vs Terraform parallelism + +Concurrency refers to the number of plan and apply operations that HCP Terraform or Terraform Enterprise can run simultaneously. + +In HCP Terraform, your edition limits the maximum concurrency for your organization. Refer to [HCP Terraform pricing](https://www.hashicorp.com/products/terraform/pricing?product_intent=terraform) for details. + +Terraform Enterprise lets you configure the concurrency, but defaults to 10 concurrent runs. As you increase concurrency, the amount of memory your Terraform Enterprise installation requires increases as well. Refer to the [Capacity and performance](/terraform/enterprise/replicated/architecture/system-overview/capacity) documentation for more information. + +Parallelism refers to the number of tasks the Terraform CLI performs simultaneously in a single workload. By default, Terraform performs a maximum of 10 operations in parallel. When running a `terraform apply` command, Terraform refreshes each resource in the state file and compares to the remote object. Every resource refresh, creation, update, or destruction is an individual operation. If your workload creates 11 resources, Terraform starts by creating the first 10 resources in its dependency graph, and will begin creating the 11th once it finishes creating one of the first 10 resources. + +You can [increase the parallelism](/terraform/enterprise/workspaces/variables#parallelism) of Terraform, but this increases a run's CPU usage. We recommend that you instead break down large Terraform configurations into smaller ones with fewer resources when possible. Long-running Terraform workloads are an early sign of a bloated workspace scope. + +## Next steps + +This article introduces some considerations to keep in mind as your organization matures their workspace usage. Being deliberate about how you use these to organize your infrastructure will ensure smoother and safer operations. [HCP Terraform](/terraform/tutorials/cloud-get-started) provides a place to try these concepts hands-on, and you can [get started for free](https://app.terraform.io/public/signup/account). + +To learn more about HCP Terraform and Terraform Enterprise best practices, refer to [Project Best Practices](/terraform/enterprise/projects/best-practices). To learn best practices for writing Terraform configuration, refer to the [Terraform Style Guide](/terraform/language/style). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/browse.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/browse.mdx new file mode 100644 index 0000000000..3b7ef87d01 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/browse.mdx @@ -0,0 +1,72 @@ +--- +page_title: Browse workspaces +description: >- + Learn how to use the sorting and filtering interfaces in Terraform Enterprise + to create different views of the resource data that the app manages so that + you can track consumption across your organizations. +source: terraform-docs-common +--- + +# Browse workspaces + +This topic describes how to use browse, sort, and filter workspaces in the UI so that you can track consumption across your organizations. + +## Overview + +HCP Terraform and Terraform Enterprise include several interfaces for browsing, sorting, and filtering resource data so that you can effectively manage workspaces and projects. You can also use interfaces together, such as applying a tag filter and sorting by workspace name, to refine results. + +<!-- BEGIN: TFC:only name:explorer-callout --> + +### Explorer view + +The explorer for workspace visibility surfaces a wider range of valuable information from across your workspaces. Refer to [Explorer for workspace visibility](/terraform/enterprise/workspaces/explorer) for additional information. + +<!-- END: TFC:only name:explorer-callout --> + +## Requirements + +You must be a member of a team with the **Read** permissions enabled for Terraform runs to view workspaces associated with the run. Refer to the [permissions reference](/terraform/enterprise/users-teams-organizations/permissions) for additional information. + +If your organization contains many workspaces, you can use the filter tools at the top of the list to find the workspaces you are interested in. + +## Find a workspace + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select your organization. +2. Click **Workspaces** to view workspaces you have access to. +3. To view projects you have access to, click on either **Projects** in the sidebar menu or the drawer icon in the **Workspaces** bar. +4. If your organization contains several workspaces or projects, you can paginate through the workspace screen or project drawer to find the workspace you are looking for. +5. You can also use the search bar in the **Workspace** drawer to find a project by name + +## Filter workspaces + +You can use the following interfaces to sort and filter workspaces: + +- Click on a run status button to filter workspaces by one of the most common run statuses. You can filter by one of the following statuses: + + - Needs attention + - Errored + - Running + - On hold + - Applied + +- Choose one or more tag keys, values, or key-value pairs from the **Tags** drop-down to filter workspaces by tag. + +- Choose one or more run statuses from the **Status** drop-down to filter workspaces by run status. The **Status** drop-down lists all available run statuses, including the common statuses available in the run status button bar. + +- The tag filter shows a list of tags added to all workspaces, limited to the first 1,000 tags alphabetically. Choosing one or more will show only workspaces tagged with all of the chosen tags. + +- Choose a health assessment label form the **Health** drop-down to filter workspaces according to the latest health assessment results. You can filter according to the following labels: + + - Drifted + - Health error + - Check failed + +## Sort workspaces + +Click on a column header to sort workspaces by trait. Traits appear in either ascending or descending alphabetical order. You can sort according to the following traits: + +- Workspace name +- Run status +- Repository +- Latest change +- Tag diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/configurations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/configurations.mdx new file mode 100644 index 0000000000..f56346f09b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/configurations.mdx @@ -0,0 +1,73 @@ +--- +page_title: Manage Terraform configurations +description: >- + Workspaces organize infrastructure and state. Learn how to provide + configuration versions for a workspace and organize multiple environments. +source: terraform-docs-common +--- + +# Manage Terraform configurations + +[remote operations]: /terraform/enterprise/run/remote-operations + +[execution mode]: /terraform/enterprise/workspaces/settings#execution-mode + +[Terraform configuration]: /terraform/language + +Each HCP Terraform workspace is associated with a particular [Terraform configuration][], which is expected to change and evolve over time. + +Since every organization has its own preferred source code control practices, HCP Terraform does not provide integrated version management. Instead, it expects Terraform configurations to be managed in your existing version control system (VCS). + +In order to perform [remote Terraform runs][remote operations] for a given workspace, HCP Terraform needs to periodically receive new versions of its configuration. Usually, this can be handled automatically by connecting a workspace to a VCS repository. + +-> **Note:** If a workspace's [execution mode is set to local][execution mode], it doesn't require configuration versions, since HCP Terraform won't perform runs for that workspace. + +## Providing Configuration Versions + +There are two ways to provide configuration versions for a workspace: + +- **With a connected VCS repository.** HCP Terraform can automatically fetch content from supported VCS providers, and uses webhooks to get notified of code changes. This is the most convenient way to use HCP Terraform. See [The UI- and VCS-driven Run Workflow](/terraform/enterprise/run/ui) for more information. + + A VCS connection can be configured [when a workspace is created](/terraform/enterprise/workspaces/create), or later in its [version control settings](/terraform/enterprise/workspaces/settings/vcs). + + -> **Note:** When a workspace is connected to a VCS repository, directly uploaded configuration versions can only be used for [speculative plans](/terraform/enterprise/run/remote-operations#speculative-plans). This helps ensure your VCS remains the source of truth for all real infrastructure changes. + +- **With direct uploads.** You can use a variety of tools to directly upload configuration content to HCP Terraform: + + - **Terraform CLI:** With the [CLI integration](/terraform/cli/cloud) configured, the `terraform plan` and `terraform apply` commands will perform remote runs by uploading a configuration from a local working directory. See [The CLI-driven Run Workflow](/terraform/enterprise/run/cli) for more information. + - **API:** HCP Terraform's API can accept configurations as `.tar.gz` files, which can be uploaded by a CI system or other workflow tools. See [The API-driven Run Workflow](/terraform/enterprise/run/api) for more information. + + When configuration versions are provided via the CLI or API, HCP Terraform can't automatically react to code changes in the underlying VCS repository. + +## Code Organization and Repository Structure + +### Organizing Separate Configurations + +Most organizations either keep each Terraform configuration in a separate repository, or keep many Terraform configurations as separate directories in a single repository (often called a "monorepo"). + +HCP Terraform works well with either approach, but monorepos require some extra configuration: + +- Each workspace must [specify a Terraform working directory](/terraform/enterprise/workspaces/settings#terraform-working-directory), so HCP Terraform knows which configuration to use. +- If the repository includes any shared Terraform modules, you must add those directories to the [automatic run triggering setting](/terraform/enterprise/workspaces/settings/vcs#automatic-run-triggering) for any workspace that uses those modules. + +-> **Note:** If your organization does not have a strong preference, we recommend using separate repositories for each configuration and using the private module registry to share modules. This allows for faster module development, since you don't have to update every configuration that consumes a module at the same time as the module itself. + +### Organizing Multiple Environments for a Configuration + +There are also a variety of ways to handle multiple environments. The most common approaches are: + +- All environments use the same main branch, and environment differences are handled with Terraform variables. To protect production environments, wait to apply runs until their changes are verified in staging. +- Different environments use different long-lived VCS branches. To protect production environments, merge changes to the production branch after they have been verified in staging. +- Different environments use completely separate configurations, and shared behaviors are handled with shared Terraform modules. To protect production environments, verify new module versions in staging before updating the version used in production. + +HCP Terraform works well with all of these approaches. If you used long-lived branches, be sure to specify which branch to use in each workspace's VCS connection settings. + +## Archiving Configuration Versions + +Once all runs using a particular configuration version are complete, HCP Terraform no longer needs the associated `.tar.gz` file and may discard it to save storage space. This process is handled differently depending on how the configuration version was created. + +- **Created with a connected VCS repository.** HCP Terraform will automatically archive VCS configuration versions once all runs are completed and they are no longer current for any workspace. HCP Terraform will re-fetch the configuration files from VCS as needed for new runs. + +- **Created with direct uploads via the API or CLI.** HCP Terraform does not archive CLI and API configuration versions automatically, because it cannot re-fetch the files for new runs. However, you can use the [Archive a Configuration Version](/terraform/enterprise/api-docs/configuration-versions#archive-a-configuration-version) endpoint to archive them manually. + +For Terraform Enterprise customers upgrading from a previous version, the functionality has a backfill capability that will clean up space for historical runs in batches. In each organization, Terraform Enterprise archives a batch of 100 configurations each time a run completes or a new configuration version is uploaded. This will gradually free up existing object storage space over time. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/create.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/create.mdx new file mode 100644 index 0000000000..e52c6468b2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/create.mdx @@ -0,0 +1,110 @@ +--- +page_title: Create workspaces in Terraform Enterprise +description: >- + Workspaces organize infrastructure and state into groups. Learn how to create + and configure Terraform Enterprise workspaces through the UI. +source: terraform-docs-common +--- + +# Create workspaces + +This topic describes how to create and manage workspaces in HCP Terraform and Terraform Enterprise UI. A workspace is a group of infrastructure resources managed by Terraform. Refer to [Workspaces overview](/terraform/enterprise/workspaces) for additional information. + +> **Hands-on:** Try the [Get Started - HCP Terraform](/terraform/tutorials/cloud-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorials. + +## Introduction + +Create new workspaces when you need to manage a new collection of infrastructure resources. You can use the following methods to create workspaces: + +- HCP Terraform UI: Refer to [Create a workspace](#create-a-workspace) for instructions. +- Workspaces API: Send a `POST`call to the `/organizations/:organization_name/workspaces` endpoint to create a workspace. Refer to the [API documentation](/terraform/enterprise/api-docs/workspaces#create-a-workspace) for instructions. +- Terraform Enterprise provider: Install the `tfe` provider and add the `tfe_workspace` resource to your configuration. Refer to the [`tfe` provider documentation](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace) in the Terraform registry for instructions. +- No-code provisioning: Use a no-code module from the registry to create a new workspace and deploy the module's resources. Refer to [Provisioning No-Code Infrastructure](/terraform/enterprise/no-code-provisioning/provisioning) for instructions. + +Each workspace belongs to a project. Refer to [Manage projects](/terraform/enterprise/projects/manage) for additional information. + +## Requirements + +You must be a member of a team with one of the following permissions enabled to create and manage workspaces: + +- **Manage all projects** +- **Manage all workspaces** +- **Admin** permission group for a project. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Workspace naming + +We recommend using consistent and informative names for new workspaces. One common approach is combining the workspace's important attributes in a consistent order. Attributes can be any defining characteristic of a workspace, such as the component, the component’s run environment, and the region where the workspace is provisioning infrastructure. + +This strategy could produce the following example workspace names: + +- networking-prod-us-east +- networking-staging-us-east +- networking-prod-eu-central +- networking-staging-eu-central +- monitoring-prod-us-east +- monitoring-staging-us-east +- monitoring-prod-eu-central +- monitoring-staging-eu-central + +You can add additional attributes to your workspace names as needed. For example, you may add the infrastructure provider, datacenter, or line of business. + +We recommend using 90 characters or less for the name of your workspace. + +## Create a workspace + +[workdir]: /terraform/enterprise/workspaces/settings#terraform-working-directory + +[trigger]: /terraform/enterprise/workspaces/settings/vcs#automatic-run-triggering + +[branch]: /terraform/enterprise/workspaces/settings/vcs#vcs-branch + +[submodules]: /terraform/enterprise/workspaces/settings/vcs#include-submodules-on-clone + +Complete the following steps to use the HCP Terraform or Terraform Enterprise UI to create a workspace: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and choose your organization. +2. Click **New** and choose **Workspace** from the drop-down menu. +3. If you have multiple projects, HCP Terraform may prompt you to choose the project to create the workspace in. Only users on teams with permissions for the entire project or the specific workspace can access the workspace. Refer to [Manage projects](/terraform/enterprise/projects/manage) for additional information. +4. Choose a workflow type. +5. Complete the following steps if you are creating a workspace that follows the VCS workflow: + 1. Choose an existing version control provider from the list or configure a new system. You must enable the workspace project to connect to your provider. Refer to [Connecting VCS + Providers](/terraform/enterprise/vcs) for more details. + 2. If you choose the **GitHub App** provider, choose an organization and repository when prompted. The list only displays the first 100 repositories from your VCS provider. If your repository is missing from the list, enter the repository ID in the text field . + 3. Refer to the following topics for information about configuring workspaces settings in the **Advanced options** screen: + - [Terraform Working Directory][workdir] + - [Automatic Run Triggering][trigger] + - [VCS branch][branch] + - [Include submodules on clone][submodules] +6. Specify a name for the workspace. VCS workflow workspaces default to the name of the repository. The name must be unique within the organization and can include letters, numbers, hyphens, and underscores. Refer to [Workspace naming](#workspace-naming) for additional information. +7. Add an optional description for the workspace. The description appears at the top of the workspace in the HCP Terraform UI. +8. Click **Create workspace** to finish. + +For CLI or API-driven workflow, the system opens the new workspace overview. For version control workspaces, the **Configure Terraform variables** page appears. + +### Configure Terraform variables for VCS workflows + +After you create a new workspace from a version control repository, HCP Terraform scans its configuration files for [Terraform variables](/terraform/enterprise/workspaces/variables#terraform-variables) and displays variables without default values or variables that are undefined in an existing [global or project-scoped variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). Terraform cannot perform successful runs in the workspace until you set values for these variables. + +Choose one of the following actions: + +- To skip this step, click **Go to workspace overview**. You can [load these variables from files](/terraform/enterprise/workspaces/variables/managing-variables#loading-variables-from-files) or create and set values for them later from within the workspace. HCP Terraform does not automatically scan your configuration again; you can only add variables from within the workspace individually. +- To configure variables, enter a value for each variable on the page. You may want to leave a variable empty if you plan to provide it through another source, like an `auto.tfvars` file. Click **Save variables** to add these variables to the workspace. + +## Next steps + +If you have already configured all Terraform variables, we recommend [manually starting a run](/terraform/enterprise/run/ui#manually-starting-runs) to prepare VCS-driven workspaces. You may also want to do one or more of the following actions: + +- [Upload configuration versions](/terraform/enterprise/workspaces/configurations#providing-configuration-versions): If you chose the API or CLI-Driven workflow, you must upload configuration versions for the workspace. +- [Edit environment variables](/terraform/enterprise/workspaces/variables): Shell environment variables store credentials and customize Terraform's behavior. +- [Edit additional workspace settings](/terraform/enterprise/workspaces/settings): This includes notifications, permissions, and run triggers to start runs automatically. +- [Learn more about running Terraform in your workspace](/terraform/enterprise/run/remote-operations): This includes how Terraform processes runs within the workspace, run modes, run states, and other operations. +- [Create workspace tags](/terraform/enterprise/workspaces/tags): Add tags to your workspaces so that you can organize and track them. +- [Browse workspaces](/terraform/enterprise/workspaces/browse): Use the interfaces available in the UI to browse, sort, and filter workspaces so that you can track resource consumption. + +### VCS Connection + +If you connected a VCS repository to the workspace, HCP Terraform automatically registers a webhook with your VCS provider. A workspace with no runs will not accept new runs from a VCS webhook, so you must [manually start at least one run](/terraform/enterprise/run/ui#manually-starting-runs). + +After you manually start a run, HCP Terraform automatically queues a plan when new commits appear in the selected branch of the linked repository or someone opens a pull request on that branch. Refer to [Webhooks](/terraform/enterprise/vcs#webhooks) for more details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/aws-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/aws-configuration.mdx new file mode 100644 index 0000000000..3d84e52e56 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/aws-configuration.mdx @@ -0,0 +1,165 @@ +--- +page_title: Use dynamic credentials with the AWS provider in Terraform Enterprise +description: >- + Use OpenID Connect to get short-term credentials for the AWS Terraform + provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use dynamic credentials with the AWS provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.7.0](/terraform/cloud-docs/agents/changelog#1-7-0-03-02-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with AWS to get [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for the AWS provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure AWS](#configure-aws):** Set up a trust configuration between AWS and HCP Terraform. Then, you must create AWS roles and policies for your HCP Terraform workspaces. +2. **[Configure HCP Terraform](#configure-hcp-terraform):** Add environment variables to the HCP Terraform workspaces where you want to use Dynamic Credentials. + +Once you complete the setup, HCP Terraform automatically authenticates to AWS during each run. The AWS provider authentication is valid for the length of the plan or apply. + +## Configure AWS + +You must enable and configure an OIDC identity provider and accompanying role and trust policy on AWS. These instructions use the AWS console, but you can also use Terraform to configure AWS. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/aws). + +### Create an OIDC Identity Provider + +AWS documentation for setting this up through the AWS console or API can be found here: [Creating OpenID Connect (OIDC) identity providers - AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html). + +The `provider URL` should be set to the address of HCP Terraform (e.g., <https://app.terraform.io> **without** a trailing slash), and the `audience` should be set to `aws.workload.identity` or the value of `TFC_AWS_WORKLOAD_IDENTITY_AUDIENCE`, if configured. + +### Configure a Role and Trust Policy + +You must configure a role and corresponding trust policy. Amazon documentation on setting this up can be found here: [Creating a role for web identity or OpenID Connect Federation (console) - AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html). +The trust policy will be of the form: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Federated": "OIDC_PROVIDER_ARN" + }, + "Action": "sts:AssumeRoleWithWebIdentity", + "Condition": { + "StringEquals": { + "SITE_ADDRESS:aud": "AUDIENCE_VALUE", + "SITE_ADDRESS:sub": "organization:ORG_NAME:project:PROJECT_NAME:workspace:WORKSPACE_NAME:run_phase:RUN_PHASE" + } + } + } + ] +} +``` + +with the capitalized values replaced with the following: + +- **OIDC_PROVIDER_ARN**: The ARN from the OIDC provider resource created in the previous step +- **SITE_ADDRESS**: The address of HCP Terraform with `https://` stripped, (e.g., `app.terraform.io`) +- **AUDIENCE_VALUE**: This should be set to `aws.workload.identity` unless a non-default audience has been specified in TFC +- **ORG_NAME**: The organization name this policy will apply to, such as `my-org-name` +- **PROJECT_NAME**: The project name that this policy will apply to, such as `my-project-name` +- **WORKSPACE_NAME**: The workspace name this policy will apply to, such as `my-workspace-name` +- **RUN_PHASE**: The run phase this policy will apply to, currently one of `plan` or `apply`. + +-> **Note:** if different permissions are desired for plan and apply, then two separate roles and trust policies must be created for each of these run phases to properly match them to the correct access level. +If the same permissions will be used regardless of run phase, then the condition can be modified like the below to use `StringLike` instead of `StringEquals` for the sub and include a `*` after `run_phase:` to perform a wildcard match: + +```json +{ + "Condition": { + "StringEquals": { + "SITE_ADDRESS:aud": "AUDIENCE_VALUE" + }, + "StringLike": { + "SITE_ADDRESS:sub": "organization:ORG_NAME:project:PROJECT_NAME:workspace:WORKSPACE_NAME:run_phase:*" + } + } +} +``` + +!> **Warning**: you should always check, at minimum, the audience and the name of the organization in order to prevent unauthorized access from other HCP Terraform organizations! + +A permissions policy needs to be added to the role which defines what operations within AWS the role is allowed to perform. As an example, the below policy allows for fetching a list of S3 buckets: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "s3:ListBucket" + ], + "Resource": "*" + } + ] +} +``` + +## Configure HCP Terraform + +You’ll need to set some environment variables in your HCP Terraform workspace in order to configure HCP Terraform to authenticate with AWS using dynamic credentials. You can set these as workspace variables, or if you’d like to share one AWS role across multiple workspaces, you can use a variable set. When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_AWS_PROVIDER_AUTH`<br />`TFC_AWS_PROVIDER_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.7.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate to AWS. | +| `TFC_AWS_RUN_ROLE_ARN`<br />`TFC_AWS_RUN_ROLE_ARN[_TAG]`<br />`TFC_DEFAULT_AWS_RUN_ROLE_ARN` | The ARN of the role to assume in AWS. | Requires **v1.7.0** or later if self-managing agents. Optional if `TFC_AWS_PLAN_ROLE_ARN` and `TFC_AWS_APPLY_ROLE_ARN` are both provided. These variables are described [below](/terraform/enterprise/workspaces/dynamic-provider-credentials/aws-configuration#optional-environment-variables) | + +### Optional Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `TFC_AWS_WORKLOAD_IDENTITY_AUDIENCE`<br />`TFC_AWS_WORKLOAD_IDENTITY_AUDIENCE[_TAG]`<br />`TFC_DEFAULT_AWS_WORKLOAD_IDENTITY_AUDIENCE` | Will be used as the `aud` claim for the identity token. Defaults to `aws.workload.identity`. | Requires **v1.7.0** or later if self-managing agents. | +| `TFC_AWS_PLAN_ROLE_ARN`<br />`TFC_AWS_PLAN_ROLE_ARN[_TAG]`<br />`TFC_DEFAULT_AWS_PLAN_ROLE_ARN` | The ARN of the role to use for the plan phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_AWS_RUN_ROLE_ARN` if not provided. | +| `TFC_AWS_APPLY_ROLE_ARN`<br />`TFC_AWS_APPLY_ROLE_ARN[_TAG]`<br />`TFC_DEFAULT_AWS_APPLY_ROLE_ARN` | The ARN of the role to use for the apply phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_AWS_RUN_ROLE_ARN` if not provided. | + +## Configure the AWS Provider + +Make sure that you’re passing a value for the `region` argument into the provider configuration block or setting the `AWS_REGION` variable in your workspace. + +Make sure that you’re not using any of the other arguments or methods mentioned in the [authentication and configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#authentication-and-configuration) section of the provider documentation as these settings may interfere with dynamic provider credentials. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct AWS setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_aws_dynamic_credentials" { + description = "Object containing AWS dynamic credentials configuration" + type = object({ + default = object({ + shared_config_file = string + }) + aliases = map(object({ + shared_config_file = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "aws" { + shared_config_files = [var.tfc_aws_dynamic_credentials.default.shared_config_file] +} + +provider "aws" { + alias = "ALIAS1" + shared_config_files = [var.tfc_aws_dynamic_credentials.aliases["ALIAS1"].shared_config_file] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/azure-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/azure-configuration.mdx new file mode 100644 index 0000000000..502cd60c8d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/azure-configuration.mdx @@ -0,0 +1,177 @@ +--- +page_title: Use dynamic credentials with the Azure provider in Terraform Enterprise +description: >- + Use OpenID Connect to get short-term credentials for the Azure Terraform + providers in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use dynamic credentials with the Azure provider + +~> **Important:** Ensure you are using version **3.25.0** or later of the **AzureRM provider** and version **2.29.0** or later of the **Microsoft Entra ID provider** (previously Azure Active Directory) as required OIDC functionality was introduced in these provider versions. + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.7.0](/terraform/cloud-docs/agents/changelog#1-7-0-03-02-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with Azure to get [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for the AzureRM or Microsoft Entra ID providers in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure Azure](#configure-azure):** Set up a trust configuration between Azure and HCP Terraform. Then, you must create Azure roles and policies for your HCP Terraform workspaces. +2. **[Configure HCP Terraform](#configure-hcp-terraform):** Add environment variables to the HCP Terraform workspaces where you want to use Dynamic Credentials. + +Once you complete the setup, HCP Terraform automatically authenticates to Azure during each run. The Azure provider authentication is valid for the length of the plan or apply. + +!> **Warning:** Dynamic credentials with the Azure providers do not work when your Terraform Enterprise instance uses a custom or self-signed certificate. This limitation is due to restrictions in Azure. + +## Configure Azure + +You must enable and configure an application and service principal with accompanying federated credentials and permissions on Azure. These instructions use the Azure portal, but you can also use Terraform to configure Azure. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/azure). + +### Create an Application and Service Principal + +Follow the steps mentioned in the AzureRM provider docs here: [Creating the Application and Service Principal](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_oidc#creating-the-application-and-service-principal). + +As mentioned in the documentation it will be important to make note of the `client_id` for the application as you will use this later for authentication. + +-> **Note:** you will want to skip the `“Configure Microsoft Entra ID Application to Trust a GitHub Repository”` section as this does not apply here. + +### Grant the Application Access to Manage Resources in Your Azure Subscription + +You must now give the created Application permission to modify resources within your Subscription. + +Follow the steps mentioned in the AzureRM provider docs here: [Granting the Application access to manage resources in your Azure Subscription](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_oidc#granting-the-application-access-to-manage-resources-in-your-azure-subscription). + +### Configure Microsoft Entra ID Application to Trust a Generic Issuer + +Finally, you must create federated identity credentials which validate the contents of the token sent to Azure from HCP Terraform. + +Follow the steps mentioned in the AzureRM provider docs here: [Configure Azure Microsoft Entra ID Application to Trust a Generic Issuer](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_oidc#configure-azure-active-directory-application-to-trust-a-generic-issuer). + +The following information should be specified: + +- **Federated credential scenario**: Must be set to `Other issuer`. +- **Issuer**: The address of HCP Terraform (e.g., <https://app.terraform.io>). + - **Important**: make sure this value starts with **https&#x3A;//** and does _not_ have a trailing slash. +- **Subject identifier**: The subject identifier from HCP Terraform that this credential will match. This will be in the form `organization:my-org-name:project:my-project-name:workspace:my-workspace-name:run_phase:plan` where the `run_phase` can be one of `plan` or `apply`. +- **Name**: A name for the federated credential, such as `tfc-plan-credential`. Note that this cannot be changed later. + +The following is optional, but may be desired: + +- **Audience**: Enter the audience value that will be set when requesting the identity token. This will be `api://AzureADTokenExchange` by default. This should be set to the value of `TFC_AZURE_WORKLOAD_IDENTITY_AUDIENCE` if this has been configured. + +-> **Note:** because the `Subject identifier` for federated credentials is a direct string match, two federated identity credentials need to be created for each workspace using dynamic credentials: one that matches `run_phase:plan` and one that matches `run_phase:apply`. + +## Configure HCP Terraform + +You’ll need to set some environment variables in your HCP Terraform workspace in order to configure HCP Terraform to authenticate with Azure using dynamic credentials. You can set these as workspace variables. When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_AZURE_PROVIDER_AUTH`<br />`TFC_AZURE_PROVIDER_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.7.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate to Azure. | +| `TFC_AZURE_RUN_CLIENT_ID`<br />`TFC_AZURE_RUN_CLIENT_ID[_TAG]`<br />`TFC_DEFAULT_AZURE_RUN_CLIENT_ID` | The client ID for the Service Principal / Application used when authenticating to Azure. | Requires **v1.7.0** or later if self-managing agents. Optional if `TFC_AZURE_PLAN_CLIENT_ID` and `TFC_AZURE_APPLY_CLIENT_ID` are both provided. These variables are described [below](/terraform/enterprise/workspaces/dynamic-provider-credentials/azure-configuration#optional-environment-variables) | + +### Optional Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_AZURE_WORKLOAD_IDENTITY_AUDIENCE`<br />`TFC_AZURE_WORKLOAD_IDENTITY_AUDIENCE[_TAG]`<br />`TFC_DEFAULT_AZURE_WORKLOAD_IDENTITY_AUDIENCE` | Will be used as the `aud` claim for the identity token. Defaults to `api://AzureADTokenExchange`. | Requires **v1.7.0** or later if self-managing agents. | +| `TFC_AZURE_PLAN_CLIENT_ID`<br />`TFC_AZURE_PLAN_CLIENT_ID[_TAG]`<br />`TFC_DEFAULT_AZURE_PLAN_CLIENT_ID` | The client ID for the Service Principal / Application to use for the plan phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_AZURE_RUN_CLIENT_ID` if not provided. | +| `TFC_AZURE_APPLY_CLIENT_ID`<br />`TFC_AZURE_APPLY_CLIENT_ID[_TAG]`<br />`TFC_DEFAULT_AZURE_APPLY_CLIENT_ID` | The client ID for the Service Principal / Application to use for the apply phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_AZURE_RUN_CLIENT_ID` if not provided. | + +## Configure the AzureRM or Microsoft Entra ID Provider + +Make sure that you’re passing values for the `subscription_id` and `tenant_id` arguments into the provider configuration block or setting the `ARM_SUBSCRIPTION_ID` and `ARM_TENANT_ID` variables in your workspace. + +Make sure that you’re _not_ setting values for `client_id`, `use_oidc`, or `oidc_token` in the provider or setting any of `ARM_CLIENT_ID`, `ARM_USE_OIDC`, `ARM_OIDC_TOKEN`. + +### Specifying Multiple Configurations + +~> **Important:** Ensure you are using version **3.60.0** or later of the **AzureRM provider** and version **2.43.0** or later of the **Microsoft Entra ID provider** as required functionality was introduced in these provider versions. + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct Azure setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_azure_dynamic_credentials" { + description = "Object containing Azure dynamic credentials configuration" + type = object({ + default = object({ + client_id_file_path = string + oidc_token_file_path = string + }) + aliases = map(object({ + client_id_file_path = string + oidc_token_file_path = string + })) + }) +} +``` + +#### Example Usage + +##### AzureRM Provider + +```hcl +provider "azurerm" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + // use_oidc must be explicitly set to true when using multiple configurations. + use_oidc = true + client_id_file_path = var.tfc_azure_dynamic_credentials.default.client_id_file_path + oidc_token_file_path = var.tfc_azure_dynamic_credentials.default.oidc_token_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "10000000-0000-0000-0000-000000000000" +} + +provider "azurerm" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + // use_oidc must be explicitly set to true when using multiple configurations. + use_oidc = true + alias = "ALIAS1" + client_id_file_path = var.tfc_azure_dynamic_credentials.aliases["ALIAS1"].client_id_file_path + oidc_token_file_path = var.tfc_azure_dynamic_credentials.aliases["ALIAS1"].oidc_token_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "20000000-0000-0000-0000-000000000000" +} +``` + +##### Microsoft Entra ID Provider (formerly Azure AD) + +```hcl +provider "azuread" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + // use_oidc must be explicitly set to true when using multiple configurations. + use_oidc = true + client_id_file_path = var.tfc_azure_dynamic_credentials.default.client_id_file_path + oidc_token_file_path = var.tfc_azure_dynamic_credentials.default.oidc_token_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "10000000-0000-0000-0000-000000000000" +} + +provider "azuread" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + // use_oidc must be explicitly set to true when using multiple configurations. + use_oidc = true + alias = "ALIAS1" + client_id_file_path = var.tfc_azure_dynamic_credentials.aliases["ALIAS1"].client_id_file_path + oidc_token_file_path = var.tfc_azure_dynamic_credentials.aliases["ALIAS1"].oidc_token_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "20000000-0000-0000-0000-000000000000" +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/gcp-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/gcp-configuration.mdx new file mode 100644 index 0000000000..400f5e996f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/gcp-configuration.mdx @@ -0,0 +1,174 @@ +--- +page_title: Use dynamic credentials with the GCP provider in Terraform Enterprise +description: >- + Use OpenID Connect to get short-term credentials for the GCP Terraform + provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use dynamic credentials with the GCP provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.7.0](/terraform/cloud-docs/agents/changelog#1-7-0-03-02-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with GCP to get [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for the GCP provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure GCP](#configure-gcp):** Set up a trust configuration between GCP and HCP Terraform. Then, you must create GCP roles and policies for your HCP Terraform workspaces. +2. **[Configure HCP Terraform](#configure-hcp-terraform):** Add environment variables to the HCP Terraform workspaces where you want to use Dynamic Credentials. + +Once you complete the setup, HCP Terraform automatically authenticates to GCP during each run. The GCP provider authentication is valid for the length of the plan or apply. + +!> **Warning:** Dynamic credentials with the GCP provider do not work if your Terraform Enterprise instance uses a custom or self-signed certificate. This limitation is due to restrictions in GCP. + +## Configure GCP + +You must enable and configure a workload identity pool and provider on GCP. These instructions use the GCP console, but you can also use Terraform to configure GCP. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/gcp). + +### Add a Workload Identity Pool and Provider + +Google documentation for setting this up can be found here: [Configuring workload identity federation with other identity providers](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers). + +Before starting to create the resources, you must enable the APIs mentioned at the start of the [Configure workload Identity federation](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#configure). + +#### Add a Workload Identity Pool + +The following information should be specified: + +- **Name**: Name for the pool, such as `my-tfc-pool`. The name is also used as the pool ID. You can't change the pool ID later. + +The following is optional, but may be desired: + +- **Pool ID**: The ID for the pool. This defaults to the name as mentioned above, but can be set to another value. +- **Description**: Text that describes the purpose of the pool. + +You will also want to ensure that the `Enabled Pool` option is set to be enabled before clicking next. + +#### Add a Workload Identity Provider + +You must add a workload identity provider to the pool. The following information should be specified: + +- **Provider type**: Must be `OpenID Connect (OIDC)`. +- **Provider name**: Name for the identity provider, such as `my-tfc-provider`. The name is also used as the provider ID. You can’t change the provider ID later. +- **Issuer (URL)**: The address of the TFC/E instance, such as <https://app.terraform.io> + - **Important**: make sure this value starts with **https&#x3A;//** and does _not_ have a trailing slash. +- **Audiences**: This can be left as `Default audience` if you are planning on using the default audience HCP Terraform provides. + - **Important**: you must select the `Allowed audiences` toggle and set this to the value of `TFC_GCP_WORKLOAD_IDENTITY_AUDIENCE`, if configured. +- **Provider attributes mapping**: At the minimum this must include `assertion.sub` for the `google.subject` entry. Other mappings can be added for other claims in the identity token to attributes by adding `attribute.[claim name]` on the Google side and `assertion.[claim name]` on the OIDC side of a new mapping. +- **Attribute Conditions**: Conditions to restrict which identity tokens can authenticate using the workload identity pool, such as `assertion.sub.startsWith("organization:my-org:project:my-project:workspace:my-workspace")` to restrict access to identity tokens from a specific workspace. See this page in Google documentation for more information on the expression language: [Attribute conditions](https://cloud.google.com/iam/docs/workload-identity-federation#conditions). + +!> **Warning**: you should always check, at minimum, the audience and the name of the organization in order to prevent unauthorized access from other HCP Terraform organizations! + +The following is optional, but may be desired: + +- **Provider ID**: The ID for the provider. This defaults to the name as mentioned above, but can be set to another value. + +### Add a Service Account and Permissions + +You must next add a service account and properly configure the permissions. + +#### Create a Service Account + +Google documentation for setting this up can be found here: [Creating a service account for the external workload](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#create_a_service_account_for_the_external_workload). + +The following information should be specified: + +- **Service account name**: Name for the service account, such as `tfc-service-account`. The name is also used as the pool ID. You can't change the pool ID later. + +The following is optional, but may be desired: + +- **Service account ID**: The ID for the service account. This defaults to the name as mentioned above, but can be set to another value. +- **Description**: Text that describes the purpose of the service account. + +#### Grant IAM Permissions + +The next step in the setup wizard will allow for granting IAM permissions for the service account. The role that is given to the service account will vary depending on your specific needs and project setup. This should in general be the most minimal set of permissions needed for the service account to properly function. + +#### Grant External Permissions + +Once the service account has been created and granted IAM permissions, you will need to grant access to the service account for the identity pool created above. Google documentation for setting this up can be found here: [Allow the external workload to impersonate the service account](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#allow_the_external_workload_to_impersonate_the_service_account). + +## Configure HCP Terraform + +You’ll need to set some environment variables in your HCP Terraform workspace in order to configure HCP Terraform to authenticate with GCP using dynamic credentials. You can set these as workspace variables, or if you’d like to share one GCP service account across multiple workspaces, you can use a variable set. When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_GCP_PROVIDER_AUTH`<br />`TFC_GCP_PROVIDER_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.7.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to use dynamic credentials to authenticate to GCP. | +| `TFC_GCP_RUN_SERVICE_ACCOUNT_EMAIL`<br />`TFC_GCP_RUN_SERVICE_ACCOUNT_EMAIL[_TAG]`<br />`TFC_DEFAULT_GCP_RUN_SERVICE_ACCOUNT_EMAIL` | The service account email HCP Terraform will use when authenticating to GCP. | Requires **v1.7.0** or later if self-managing agents. Optional if `TFC_GCP_PLAN_SERVICE_ACCOUNT_EMAIL` and `TFC_GCP_APPLY_SERVICE_ACCOUNT_EMAIL` are both provided. These variables are described [below](/terraform/enterprise/workspaces/dynamic-provider-credentials/gcp-configuration#optional-environment-variables) | + +You must also include information about the GCP Workload Identity Provider that HCP Terraform will use when authenticating to GCP. You can supply this information in two different ways: + +1. By providing one unified variable containing the canonical name of the workload identity provider. +2. By providing the project number, pool ID, and provider ID as separate variables. + +You should avoid setting both types of variables, but if you do, the unified version will take precedence. + +#### Unified Variable + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_GCP_WORKLOAD_PROVIDER_NAME`<br />`TFC_GCP_WORKLOAD_PROVIDER_NAME[_TAG]`<br />`TFC_DEFAULT_GCP_WORKLOAD_PROVIDER_NAME` | The canonical name of the workload identity provider. This must be in the form mentioned for the `name` attribute [here](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/iam_workload_identity_pool_provider#attributes-reference) | Requires **v1.7.0** or later if self-managing agents. This will take precedence over `TFC_GCP_PROJECT_NUMBER`, `TFC_GCP_WORKLOAD_POOL_ID`, and `TFC_GCP_WORKLOAD_PROVIDER_ID` if set. | + +#### Separate Variables + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| `TFC_GCP_PROJECT_NUMBER`<br />`TFC_GCP_PROJECT_NUMBER[_TAG]`<br />`TFC_DEFAULT_GCP_PROJECT_NUMBER` | The project number where the pool and other resources live. | Requires **v1.7.0** or later if self-managing agents. This is _not_ the project ID and is a separate number. | +| `TFC_GCP_WORKLOAD_POOL_ID`<br />`TFC_GCP_WORKLOAD_POOL_ID[_TAG]`<br />`TFC_DEFAULT_GCP_WORKLOAD_POOL_ID` | The workload pool ID. | Requires **v1.7.0** or later if self-managing agents. | +| `TFC_GCP_WORKLOAD_PROVIDER_ID`<br />`TFC_GCP_WORKLOAD_PROVIDER_ID[_TAG]`<br />`TFC_DEFAULT_GCP_WORKLOAD_PROVIDER_ID` | The workload identity provider ID. | Requires **v1.7.0** or later if self-managing agents. | + +### Optional Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_GCP_WORKLOAD_IDENTITY_AUDIENCE`<br />`TFC_GCP_WORKLOAD_IDENTITY_AUDIENCE[_TAG]`<br />`TFC_DEFAULT_GCP_WORKLOAD_IDENTITY_AUDIENCE` | Will be used as the `aud` claim for the identity token. Defaults to a string of the form mentioned [here](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#oidc_1) in the GCP docs with the leading **https&#x3A;** stripped. | Requires **v1.7.0** or later if self-managing agents. This is one of the default `aud` formats that GCP accepts. | +| `TFC_GCP_PLAN_SERVICE_ACCOUNT_EMAIL`<br />`TFC_GCP_PLAN_SERVICE_ACCOUNT_EMAIL[_TAG]`<br />`TFC_DEFAULT_GCP_PLAN_SERVICE_ACCOUNT_EMAIL` | The service account email to use for the plan phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_GCP_RUN_SERVICE_ACCOUNT_EMAIL` if not provided. | +| `TFC_GCP_APPLY_SERVICE_ACCOUNT_EMAIL`<br />`TFC_GCP_APPLY_SERVICE_ACCOUNT_EMAIL[_TAG]`<br />`TFC_DEFAULT_GCP_APPLY_SERVICE_ACCOUNT_EMAIL` | The service account email to use for the apply phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_GCP_RUN_SERVICE_ACCOUNT_EMAIL` if not provided. | + +## Configure the GCP Provider + +Make sure that you’re passing values for the `project` and `region` arguments into the provider configuration block. + +Make sure that you’re not setting values for the `GOOGLE_CREDENTIALS` or `GOOGLE_APPLICATION_CREDENTIALS` environment variables as these will conflict with the dynamic credentials authentication process. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct GCP setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_gcp_dynamic_credentials" { + description = "Object containing GCP dynamic credentials configuration" + type = object({ + default = object({ + credentials = string + }) + aliases = map(object({ + credentials = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "google" { + credentials = var.tfc_gcp_dynamic_credentials.default.credentials +} + +provider "google" { + alias = "ALIAS1" + credentials = var.tfc_gcp_dynamic_credentials.aliases["ALIAS1"].credentials +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration.mdx new file mode 100644 index 0000000000..2414f1b7af --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration.mdx @@ -0,0 +1,116 @@ +--- +page_title: Dynamic Credentials with the HCP Provider - Workspaces - Terraform Enterprise +description: >- + Use OpenID Connect to get short-term credentials for the HCP provider in your + Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Dynamic Credentials with the HCP Provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.15.1](/terraform/cloud-docs/agents/changelog#1-15-1-05-01-2024) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with HCP to authenticate with the HCP provider using [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) in your HCP Terraform runs. Configuring dynamic credentials for the HCP provider requires the following steps: + +1. **[Configure HCP](#configure-hcp):** Set up a trust configuration between HCP and HCP Terraform. Then, you must create a [service principal in HPC](https://developer.hashicorp.com/hcp/docs/hcp/admin/iam/service-principals) for your HCP Terraform workspaces. +2. **[Configure HCP Terraform](#configure-hcp-terraform):** Add environment variables to the HCP Terraform workspaces where you want to use Dynamic Credentials. + +Once you complete the setup, HCP Terraform automatically authenticates to HCP during each run. + +## Configure HCP + +You must enable and configure a workload identity pool and provider on HCP. These instructions use the HCP CLI, but you can also use Terraform to configure HCP. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/hcp). + +#### Create a Service Principal + +Create a service principal for HCP Terraform to assume during runs by running the following HCP command. Note the ID of the service principal you create because you will need it in the following steps. For all remaining steps, replace `HCP_PROJECT_ID` with the ID of the project that contains all the resources and workspaces that you want to manage with this service principal. If you wish to manage more than one project with dynamic credentials, it is recommended that you create multiple service principals, one for each project. + +```shell +hcp iam service-principals create hcp-terraform --project=HCP_PROJECT_ID +``` + +Grant your service principal the necessary permissions to manage your infrastructure during runs. + +```shell +hcp projects iam add-binding \ + --project=HCP_PROJECT_ID \ + --member=HCP_PRINCIPAL_ID \ + --role=roles/contributor +``` + +#### Add a Workload Identity Provider + +Next, create a workload identity provider that HCP uses to authenticate the HCP Terraform run. Make sure to replace `HCP_PROJECT_ID`, `ORG_NAME`, `PROJECT_NAME`, and `WORKSPACE_NAME` with their respective values before running the command. + +```shell +hcp iam workload-identity-providers create-oidc hcp-terraform-dynamic-credentials \ + --service-principal=iam/project/HCP_PROJECT_ID/service-principal/hcp-terraform \ + --issuer=https://app.terraform.io \ + --allowed-audience=hcp.workload.identity \ + --conditional-access='jwt_claims.sub matches `^organization:ORG_NAME:project:PROJECT_NAME:workspace:WORKSPACE_NAME:run_phase:.*`' \ + --description="Allow HCP Terraform agents to act as the hcp-terraform service principal" +``` + +## Configure HCP Terraform + +Next, you need to set environment variables in your HCP Terraform workspace to configure HCP Terraform to authenticate with HCP using dynamic credentials. You can set these as workspace variables or use a variable set to share one HCP service principal across multiple workspaces. When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_HCP_PROVIDER_AUTH`<br />`TFC_HCP_PROVIDER_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.15.1** or later if you use self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to use dynamic credentials to authenticate to HCP. | +| `TFC_HCP_RUN_PROVIDER_RESOURCE_NAME`<br />`TFC_HCP_RUN_PROVIDER_RESOURCE_NAME[_TAG]`<br />`TFC_DEFAULT_HCP_RUN_PROVIDER_RESOURCE_NAME` | The resource name of the workload identity provider that will be used to assume the service principal | Requires **v1.15.1** or later if you use self-managing agents. Optional if you provide `PLAN_PROVIDER_RESOURCE_NAME` and `APPLY_PROVIDER_RESOURCE_NAME`. [Learn more](#optional-environment-variables). | + +### Optional Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_HCP_WORKLOAD_IDENTITY_AUDIENCE`<br />`TFC_HCP_WORKLOAD_IDENTITY_AUDIENCE[_TAG]`<br />`TFC_DEFAULT_HCP_WORKLOAD_IDENTITY_AUDIENCE` | HCP Terraform uses this as the `aud` claim for the identity token. Defaults to the provider resource name for the current run phase, which HCP Terraform derives from the values you provide for `RUN_PROVIDER_RESOURCE_NAME`, `PLAN_PROVIDER_RESOURCE_NAME`, and `APPLY_PROVIDER_RESOURCE_NAME`. | Requires **v1.15.1** or later if you use self-managing agents. This is one of the default `aud` formats that HCP accepts. | +| `TFC_HCP_PLAN_PROVIDER_RESOURCE_NAME`<br />`TFC_HCP_PLAN_PROVIDER_RESOURCE_NAME[_TAG]`<br />`TFC_DEFAULT_HCP_PLAN_PROVIDER_RESOURCE_NAME` | The resource name of the workload identity provider that will HCP Terraform will use to authenticate the agent during the plan phase of a run. | Requires **v1.15.1** or later if self-managing agents. Will fall back to the value of `RUN_PROVIDER_RESOURCE_NAME` if not provided. | +| `TFC_HCP_APPLY_PROVIDER_RESOURCE_NAME`<br />`TFC_HCP_APPLY_PROVIDER_RESOURCE_NAME[_TAG]`<br />`TFC_DEFAULT_HCP_APPLY_PROVIDER_RESOURCE_NAME` | The resource name of the workload identity provider that will HCP Terraform will use to authenticate the agent during the apply phase of a run. | Requires **v1.15.1** or later if self-managing agents. Will fall back to the value of `RUN_PROVIDER_RESOURCE_NAME` if not provided. | + +## Configure the HCP Provider + +Do not set the `HCP_CRED_FILE` environment variable when configuring the HCP provider, or `HCP_CRED_FILE` will conflict with the dynamic credentials authentication process. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.15.1](/terraform/cloud-docs/agents/changelog#1-15-1-05-01-2024) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct HCP setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, refer to [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +Add the following variable to your Terraform configuration to set up additional dynamic credential configurations with the HCP provider. This variable lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_hcp_dynamic_credentials" { + description = "Object containing HCP dynamic credentials configuration" + type = object({ + default = object({ + credential_file = string + }) + aliases = map(object({ + credential_file = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "hcp" { + credential_file = var.tfc_hcp_dynamic_credentials.default.credential_file +} + +provider "hcp" { + alias = "ALIAS1" + credential_file = var.tfc_hcp_dynamic_credentials.aliases["ALIAS1"].credential_file +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/aws-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/aws-configuration.mdx new file mode 100644 index 0000000000..984c8ce7a7 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/aws-configuration.mdx @@ -0,0 +1,102 @@ +--- +page_title: >- + HCP Vault Secrets-Backed Dynamic Credentials with the AWS Provider - + Workspaces - Terraform Enterprise +description: >- + Use OpenID Connect and HCP Vault Secrets to get short-term credentials for the + AWS Terraform provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# HCP Vault Secrets-Backed Dynamic Credentials with the AWS Provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.16.0](/terraform/cloud-docs/agents/changelog#1-16-0-10-02-2024) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with HCP to use [HCP Vault Secrets-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed) with the AWS provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure HCP Provider Credentials](#configure-hcp-provider-credentials)**: Set up a trust configuration between HCP Vault Secrets and HCP Terraform, create HCP roles and policies for your HCP Terraform workspaces, and add environment variables to those workspaces. +2. **[Configure HCP Vault Secrets](#configure-hcp-vault-secrets-aws-secrets-engine)**: Set up your HCP project's AWS integration and dynamic secret. +3. **[Configure HCP Terraform](#configure-hcp-terraform)**: Add additional environment variables to the HCP Terraform workspaces where you want to use HCP Vault Secrets-backed dynamic credentials. +4. **[Configure Terraform Providers](#configure-terraform-providers)**: Configure your Terraform providers to work with HCP Vault Secrets-backed dynamic credentials. + +Once you complete this setup, HCP Terraform automatically authenticates with AWS via HCP Vault Secrets-generated credentials during the plan and apply phase of each run. The AWS provider's authentication is only valid for the length of the plan or apply phase. + +## Configure HCP Provider Credentials + +You must first set up HCP dynamic provider credentials before you can use HCP Vault Secrets-backed dynamic credentials. This includes creating a service principal, configuring trust between HCP and HCP Terraform, and populating the required environment variables in your HCP Terraform workspace. + +[See the setup instructions for HCP dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration). + +## Configure HCP Vault Secrets AWS Secrets Engine + +Follow the instructions in the HCP Vault Secrets documentation for [setting up the AWS integration in your HCP project](/hcp/docs/vault-secrets/dynamic-secrets/aws). + +## Configure HCP Terraform + +Next, you need to set certain environment variables in your HCP Terraform workspace to authenticate HCP Terraform with AWS using HCP Vault Secrets-backed dynamic credentials. These variables are in addition to those you previously set while configuring [HCP provider credentials](#configure-hcp-provider-credentials). You can add these as workspace variables or as a [variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). + +### Required Environment Variables + +| Variable | Value | Notes | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_HVS_BACKED_AWS_AUTH`<br />`TFC_HVS_BACKED_AWS_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.16.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate with AWS. | +| `TFC_HVS_BACKED_AWS_RUN_SECRET_RESOURCE_NAME` | The name of the HCP Vault Secrets dynamic secret resource to read. | Requires **v1.16.0** or later if self-managing agents. Must be present. | + +### Optional Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_HVS_BACKED_AWS_HCP_CONFIG`<br />`TFC_HVS_BACKED_AWS_HCP_CONFIG[_TAG]`<br />`TFC_DEFAULT_HVS_BACKED_AWS_HCP_CONFIG` | The name of the non-default HCP configuration for workspaces using [multiple HCP configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). | Requires **v1.16.0** or later if self-managing agents. Will fall back to using the default HCP Vault Secrets configuration if not provided. | +| `TFC_HVS_BACKED_AWS_PLAN_SECRET_RESOURCE_NAME` | The name of the HCP Vault Secrets dynamic secret resource to read for the plan phase. | Requires **v1.16.0** or later if self-managing agents. Must be present. | +| `TFC_HVS_BACKED_AWS_APPLY_SECRET_RESOURCE_NAME` | The name of the HCP Vault Secrets dynamic secret resource to read for the apply phase. | Requires **v1.16.0** or later if self-managing agents. Must be present. | + +## Configure Terraform Providers + +The final step is to directly configure your AWS and HCP Vault Secrets providers. + +### Configure the AWS Provider + +Ensure you pass a value for the `region` argument in your AWS provider configuration block or set the `AWS_REGION` variable in your workspace. + +Ensure you are not using any of the arguments or methods mentioned in the [authentication and configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#authentication-and-configuration) section of the provider documentation. Otherwise, these settings may interfere with dynamic provider credentials. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.16.0](/terraform/cloud-docs/agents/changelog#1-16-0-10-02-2024) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct HCP Vault Secrets-backed AWS setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_hvs_backed_aws_dynamic_credentials" { + description = "Object containing HCP Vault Secrets-backed AWS dynamic credentials configuration" + type = object({ + default = object({ + shared_credentials_file = string + }) + aliases = map(object({ + shared_credentials_file = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "aws" { + shared_credentials_files = [var.tfc_hvs_backed_aws_dynamic_credentials.default.shared_credentials_file] +} + +provider "aws" { + alias = "ALIAS1" + shared_credentials_files = [var.tfc_hvs_backed_aws_dynamic_credentials.aliases["ALIAS1"].shared_credentials_file] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/gcp-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/gcp-configuration.mdx new file mode 100644 index 0000000000..725342406e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/gcp-configuration.mdx @@ -0,0 +1,119 @@ +--- +page_title: >- + HCP Vault Secrets-Backed Dynamic Credentials with the GCP Provider - + Workspaces - Terraform Enterprise +description: >- + Use OpenID Connect and HCP Vault Secrets to get short-term credentials for the + GCP Terraform provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# HCP Vault Secrets-Backed Dynamic Credentials with the GCP Provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.16.0](/terraform/cloud-docs/agents/changelog#1-16-0-10-02-2024) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with HCP to use [HCP Vault Secrets-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed) with the GCP provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure HCP Provider Credentials](#configure-hcp-provider-credentials)**: Set up a trust configuration between HCP Vault Secrets and HCP Terraform, create HCP Vault Secrets roles and policies for your HCP Terraform workspaces, and add environment variables to those workspaces. +2. **[Configure HCP Vault Secrets](#configure-hcp-vault-secrets-gcp-secrets-engine)**: Set up your HCP project's GCP integration and dynamic secret. +3. **[Configure HCP Terraform](#configure-hcp-terraform)**: Add additional environment variables to the HCP Terraform workspaces where you want to use HCP Vault Secrets-backed dynamic credentials. +4. **[Configure Terraform Providers](#configure-terraform-providers)**: Configure your Terraform providers to work with HCP Vault Secrets-backed dynamic credentials. + +Once you complete this setup, HCP Terraform automatically authenticates with GCP via HCP Vault Secrets-generated credentials during the plan and apply phase of each run. The GCP provider's authentication is only valid for the length of the plan or apply phase. + +## Configure HCP Provider Credentials + +You must first set up HCP dynamic provider credentials before you can use HCP Vault Secrets-backed dynamic credentials. This includes creating a service principal, configuring trust between HCP and HCP Terraform, and populating the required environment variables in your HCP Terraform workspace. + +[See the setup instructions for HCP dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration). + +## Configure HCP Vault Secrets GCP Secrets Engine + +Follow the instructions in the HCP Vault Secrets documentation for [setting up the GCP integration in your HCP project](/hcp/docs/vault-secrets/dynamic-secrets/gcp). + +## Configure HCP Terraform + +Next, you need to set certain environment variables in your HCP Terraform workspace to authenticate HCP Terraform with GCP using HCP Vault Secrets-backed dynamic credentials. These variables are in addition to those you previously set while configuring [HCP provider credentials](#configure-hcp-provider-credentials). You can add these as workspace variables or as a [variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). + +### Required Common Environment Variables + +| Variable | Value | Notes | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_HVS_BACKED_GCP_AUTH`<br />`TFC_HVS_BACKED_GCP_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.16.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate with GCP. | +| `TFC_HVS_BACKED_GCP_RUN_SECRET_RESOURCE_NAME` | The name of the HCP Vault Secrets dynamic secret resource to read. | Requires **v1.16.0** or later if self-managing agents. Must be present. | + +### Optional Common Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_HVS_BACKED_GCP_HCP_CONFIG`<br />`TFC_HVS_BACKED_GCP_HCP_CONFIG[_TAG]`<br />`TFC_DEFAULT_HVS_BACKED_GCP_HCP_CONFIG` | The name of the non-default HCP configuration for workspaces using [multiple HCP configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). | Requires **v1.16.0** or later if self-managing agents. Will fall back to using the default HCP Vault Secrets configuration if not provided. | +| `TFC_HVS_BACKED_GCP_PLAN_SECRET_RESOURCE_NAME` | The name of the HCP Vault Secrets dynamic secret resource to read for the plan phase. | Requires **v1.16.0** or later if self-managing agents. Must be present. | +| `TFC_HVS_BACKED_GCP_APPLY_SECRET_RESOURCE_NAME` | The name of the HCP Vault Secrets dynamic secret resource to read for the apply phase. | Requires **v1.16.0** or later if self-managing agents. Must be present. | + +## Configure Terraform Providers + +The final step is to directly configure your GCP and HCP Vault Secrets providers. + +### Configure the GCP Provider + +Ensure you pass values for the `project` and `region` arguments into the provider configuration block. + +Ensure you are not setting values or environment variables for `GOOGLE_CREDENTIALS` or `GOOGLE_APPLICATION_CREDENTIALS`. Otherwise, these values may interfere with dynamic provider credentials. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.16.0](/terraform/cloud-docs/agents/changelog#1-16-0-10-02-2024) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct HCP Vault Secrets-backed GCP setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_hvs_backed_gcp_dynamic_credentials" { + description = "Object containing HCP Vault Secrets-backed GCP dynamic credentials configuration" + type = object({ + default = object({ + credentials = string + access_token = string + }) + aliases = map(object({ + credentials = string + access_token = string + })) + }) +} +``` + +#### Example Usage + +##### Access Token + +```hcl +provider "google" { + access_token = var.tfc_hvs_backed_gcp_dynamic_credentials.default.access_token +} + +provider "google" { + alias = "ALIAS1" + access_token = var.tfc_hvs_backed_gcp_dynamic_credentials.aliases["ALIAS1"].access_token +} +``` + +##### Credentials + +```hcl +provider "google" { + credentials = var.tfc_hvs_backed_gcp_dynamic_credentials.default.credentials +} + +provider "google" { + alias = "ALIAS1" + credentials = var.tfc_hvs_backed_gcp_dynamic_credentials.aliases["ALIAS1"].credentials +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/index.mdx new file mode 100644 index 0000000000..a60b0e4b12 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/index.mdx @@ -0,0 +1,38 @@ +--- +page_title: HCP Vault Secrets-backed dynamic credentials overview +description: >- + HCP Vault Secrets-backed dynamic credentials improve security by leveraging + HCP Vault Secrets to generate temporary credentials for Terraform runs. + Configure HCP Vault Secrets-backed dynamic credentials for supported + providers. +source: terraform-docs-common +--- + +# HCP Vault Secrets-Backed Dynamic Credentials + +This topic provides an overview of how to use HCP Vault Secrets to generate temporary credentials for providers so that you can securely use them in HCP Terraform runs. + +## Introduction + +Configuring [dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) with different cloud providers is suitable for most use cases, but you can use HCP Vault Secrets-backed dynamic credentials to centralize and consolidate cloud credential management. + +HCP Vault Secrets-backed dynamic credentials leverage HCP Vault Secrets' [dynamic secrets capability](/hcp/docs/vault-secrets/dynamic-secrets), which allows you to generate short-lived credentials for various providers. This means you can authenticate a HCP instance using workload identity tokens and use dynamic secret capabilities on that instance to generate dynamic credentials for the various providers. + +Refer to the [HCP Vault Secrets announcement](https://www.hashicorp.com/blog/hcp-vault-secrets-is-now-generally-available) to learn about the benefits of using HCP Vault Secrets to manage provider credentials. + +## Workflow + +Using HCP Vault Secrets-backed dynamic credentials in a workspace requires the following steps for each cloud platform: + +1. If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.16.0](/terraform/cloud-docs/agents/changelog#1-16-0-10-02-2024) or newer. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). +2. Set up dynamic provider credentials with the HCP provider: You must first [configure dynamic credentials with the HCP provider](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-configuration). +3. Configure the dynamic secrets integration: You must configure the desired Vault secrets integration in your HCP project, such as AWS or GCP. +4. Configure your HCP Terraform workspace: You must add specific environment variables to your workspace to tell HCP Terraform how to authenticate to other cloud providers during runs. Each cloud platform has its own set of environment variables that are necessary to configure dynamic credentials. +5. Complete the instructions for setting up HCP Vault Secrets-backed dynamic for [Amazon Web Services](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/aws-configuration) or [Google Cloud Platform](/terraform/enterprise/workspaces/dynamic-provider-credentials/hcp-vault-secrets-backed/gcp-configuration). + +### Access to metadata endpoints + +In order to verify signed JWTs, HCP must have network access to the following static OIDC metadata endpoints within HCP Terraform: + +- `/.well-known/openid-configuration`: Standard OIDC metadata. +- `/.well-known/jwks`: HCP Terraform public keys that cloud platforms use to verify the authenticity of tokens that claim to come from HCP Terraform. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/index.mdx new file mode 100644 index 0000000000..11a3902ea2 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/index.mdx @@ -0,0 +1,59 @@ +--- +page_title: Dynamic provider credentials in Terraform Enterprise +description: >- + Dynamic provider credentials generate temporary credentials for Terraform + Enterprise runs. Learn how dynamic credentials for Vault, AWS, Azure, + Kubernetes, and GCP can improve your security. +source: terraform-docs-common +--- + +# Dynamic provider credentials + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.7.0](/terraform/cloud-docs/agents/changelog#1-7-0-03-02-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +Using static credentials in your workspaces to authenticate providers presents a security risk, even if you rotate your credentials regularly. Dynamic provider credentials improve your security posture by letting you provision new, temporary credentials for each run. + +You can configure dynamic credentials for each HCP Terraform workspace. This workflow eliminates the need to manually manage and rotate credentials across your organization. It also lets you use the cloud platform’s authentication and authorization tools to scope permissions based on metadata, such as a run’s phase, its workspace, or its organization. + +## How Dynamic Credentials Work + +You configure a trust relationship between your cloud platform and HCP Terraform. As part of that process, you can define rules that let HCP Terraform workspaces and runs access specific resources. Then, the following process occurs for each Terraform plan and apply: + +1. HCP Terraform generates a [workload identity token](/terraform/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens). The token is compliant with OpenID Connect protocol (OIDC) standards and includes information about the organization, workspace, and run stage. +2. When a plan or apply begins, HCP Terraform sends the workload identity token to the cloud platform, along with any other information needed to authenticate. +3. The cloud platform uses HCP Terraform’s public signing key to verify the workload identity token. +4. If verification succeeds, the cloud platform returns a set of fresh temporary credentials for HCP Terraform to use. +5. HCP Terraform sets up these credentials within the run environment for the Terraform provider to use. +6. The Terraform plan or apply proceeds. +7. When the plan or apply completes, the run environment is torn down and the temporary credentials are discarded. + +## Configure Dynamic Credentials + +Using dynamic credentials in a workspace requires the following steps for each cloud platform: + +1. **Set up a Trust Relationship:** You must configure a relationship between HCP Terraform and the other cloud platform. The exact details of this process will be different depending on the cloud platform. +2. **Configure Cloud Platform Access:** You must configure roles and policies for the cloud platform to define the workspace’s access to infrastructure resources. +3. **Configure HCP Terraform Workspace**: You must add specific environment variables to your workspace to tell HCP Terraform how to authenticate to the other cloud platform during plans and applies. Each cloud platform has its own set of environment variables to configure dynamic credentials. + +The process for each step is different for each cloud platform. Refer to the cloud platform configuration instructions for full details. You can configure dynamic credentials for the following platforms: + +- [Vault](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration) +- [Amazon Web Services](/terraform/enterprise/workspaces/dynamic-provider-credentials/aws-configuration) +- [Google Cloud Platform](/terraform/enterprise/workspaces/dynamic-provider-credentials/gcp-configuration) +- [Azure](/terraform/enterprise/workspaces/dynamic-provider-credentials/azure-configuration) +- [Kubernetes](/terraform/enterprise/workspaces/dynamic-provider-credentials/kubernetes-configuration) + +You can also use Vault to generate credentials for AWS, GCP, or Azure by setting up [Vault-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed), which take advantage of Vault's [secrets engines](/vault/docs/secrets) to generate temporary credentials. + +## Terraform Enterprise Specific Requirements + +### External Access to Metadata Endpoints + +In order to verify signed JWTs, cloud platforms must have network access to the following static OIDC metadata endpoints within TFE: + +1. `/.well-known/openid-configuration` - standard OIDC metadata. +2. `/.well-known/jwks` - TFE’s public key(s) that cloud platforms use to verify the authenticity of tokens that claim to come from TFE. + +### External Vault Policy + +If you are using an external Vault instance, you must ensure that your Vault instance has the correct policies setup as detailed in the [External Vault Requirements for Terraform Enterprise](/terraform/enterprise/requirements/data-storage/vault) documentation. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/kubernetes-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/kubernetes-configuration.mdx new file mode 100644 index 0000000000..6cd1fbda1f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/kubernetes-configuration.mdx @@ -0,0 +1,171 @@ +--- +page_title: >- + Use dynamic credentials with the Kubernetes and Helm providers in Terraform + Enterprise +description: >- + Use OpenID Connect to get short-term credentials for the Kubernetes and Helm + Terraform providers in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use dynamic credentials with the Kubernetes and Helm providers + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.13.1](/terraform/cloud-docs/agents/changelog#1-13-1-10-25-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with Kubernetes to use [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for the Kubernetes and Helm providers in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure Kubernetes](#configure-kubernetes):** Set up a trust configuration between Kubernetes and HCP Terraform. Next, create Kubernetes role bindings for your HCP Terraform identities. +2. **[Configure HCP Terraform](#configure-hcp-terraform):** Add environment variables to the HCP Terraform workspaces where you want to use dynamic credentials. +3. **[Configure the Kubernetes or Helm provider](#configure-the-provider)**: Set the required attributes on the provider block. + +Once you complete the setup, HCP Terraform automatically authenticates to Kubernetes during each run. The Kubernetes and Helm providers' authentication is valid for the length of a plan or apply operation. + +## Configure Kubernetes + +You must enable and configure an OIDC identity provider in the Kubernetes API. This workflow changes based on the platform hosting your Kubernetes cluster. HCP Terraform only supports dynamic credentials with Kubernetes in AWS and GCP. + +### Configure an OIDC identity provider + +Refer to the AWS documentation for guidance on [setting up an EKS cluster for OIDC authentication](https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html). You can also refer to our [example configuration](https://github.com/hashicorp-education/learn-terraform-dynamic-credentials/tree/main/eks/trust). + +Refer to the GCP documentation for guidance on [setting up a GKE cluster for OIDC authentication](https://cloud.google.com/kubernetes-engine/docs/how-to/oidc). You can also refer to our [example configuration](https://github.com/hashicorp-education/learn-terraform-dynamic-credentials/tree/main/gke/trust). + +When inputting an "issuer URL", use the address of HCP Terraform (`https://app.terraform.io` _without_ a trailing slash) or the URL of your Terraform Enterprise instance. The value of "client ID" is your audience in OIDC terminology, and it should match the value of the `TFC_KUBERNETES_WORKLOAD_IDENTITY_AUDIENCE` environment variable in your workspace. + +The OIDC identity resolves authentication to the Kubernetes API, but it first requires authorization to interact with that API. So, you must bind RBAC roles to the OIDC identity in Kubernetes. + +You can use both "User" and "Group" subjects in your role bindings. For OIDC identities coming from TFC, the "User" value is formatted like so: `organization:<MY-ORG-NAME>:project:<MY-PROJECT-NAME>:workspace:<MY-WORKSPACE-NAME>:run_phase:<plan|apply>`. + +You can extract the "Group" value from the token claim you configured in your cluster OIDC configuration. For details on the structure of the HCP Terraform token, refer to [Workload Identity](/terraform/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens). + +Below, we show an example of a `RoleBinding` for the HCP Terraform OIDC identity. + +```hcl +resource "kubernetes_cluster_role_binding_v1" "oidc_role" { + metadata { + name = "odic-identity" + } + + role_ref { + api_group = "rbac.authorization.k8s.io" + kind = "ClusterRole" + name = var.rbac_group_cluster_role + } + + // Option A - Bind RBAC roles to groups + // + // Groups are extracted from the token claim designated by 'rbac_group_oidc_claim' + // + subject { + api_group = "rbac.authorization.k8s.io" + kind = "Group" + name = var.tfc_organization_name + } + + // Option B - Bind RBAC roles to user identities + // + // Users are extracted from the 'sub' token claim. + // Plan and apply phases get assigned different users identities. + // For HCP Terraform tokens, the format of the user id is always the one described bellow. + // + subject { + api_group = "rbac.authorization.k8s.io" + kind = "User" + name = "${var.tfc_hostname}#organization:${var.tfc_organization_name}:project:${var.tfc_project_name}:workspace:${var.tfc_workspace_name}:run_phase:plan" + } + + subject { + api_group = "rbac.authorization.k8s.io" + kind = "User" + name = "${var.tfc_hostname}#organization:${var.tfc_organization_name}:project:${var.tfc_project_name}:workspace:${var.tfc_workspace_name}:run_phase:apply" + } +} +``` + +If binding with "User" subjects, be aware that plan and apply phases are assigned different identities, each requiring specific bindings. Meaning you can tailor permissions for each Terraform operation. Planning operations usually require "read-only" permissions, while apply operations also require "write" access. + +!> **Warning**: Always check, at minimum, the audience and the organization's name to prevent unauthorized access from other HCP Terraform organizations. + +## Configure HCP Terraform + +You must set certain environment variables in your HCP Terraform workspace to configure HCP Terraform to authenticate with Kubernetes or Helm using dynamic credentials. You can set these as workspace variables, or if you’d like to share one Kubernetes role across multiple workspaces, you can use a variable set. When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_KUBERNETES_PROVIDER_AUTH`<br />`TFC_KUBERNETES_PROVIDER_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.14.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate to Kubernetes. | +| `TFC_KUBERNETES_WORKLOAD_IDENTITY_AUDIENCE`<br />`TFC_KUBERNETES_WORKLOAD_IDENTITY_AUDIENCE[_TAG]`<br />`TFC_DEFAULT_KUBERNETES_WORKLOAD_IDENTITY_AUDIENCE` | The audience name in your cluster's OIDC configuration, such as `kubernetes`. | Requires **v1.14.0** or later if self-managing agents. | + +## Configure the provider + +The Kubernetes and Helm providers share the same schema of configuration attributes for the provider block. The example below illustrates using the Kubernetes provider but the same configuration applies to the Helm provider. + +Make sure that you are not using any of the other arguments or methods listed in the [authentication](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs#authentication) section of the provider documentation as these settings may interfere with dynamic provider credentials. The only allowed provider attributes are `host` and `cluster_ca_certificate`. + +### Single provider instance + +HCP Terraform automatically sets the `KUBE_TOKEN` environment variable and includes the workload identity token. + +The provider needs to be configured with the URL of the API endpoint using the `host` attribute (or `KUBE_HOST` environment variable). In most cases, the `cluster_ca_certificate` (or `KUBE_CLUSTER_CA_CERT_DATA` environment variable) is also required. + +#### Example Usage + +```hcl +provider "kubernetes" { + host = var.cluster-endpoint-url + cluster_ca_certificate = base64decode(var.cluster-endpoint-ca) +} +``` + +### Multiple aliases + +You can add additional variables to handle multiple distinct Kubernetes clusters, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_kubernetes_dynamic_credentials" { + description = "Object containing Kubernetes dynamic credentials configuration" + type = object({ + default = object({ + token_path = string + }) + aliases = map(object({ + token_path = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "kubernetes" { + alias = "ALIAS1" + host = var.alias1-endpoint-url + cluster_ca_certificate = base64decode(var.alias1-cluster-ca) + token = file(var.tfc_kubernetes_dynamic_credentials.aliases["ALIAS1"].token_path) +} + +provider "kubernetes" { + alias = "ALIAS2" + host = var.alias1-endpoint-url + cluster_ca_certificate = base64decode(var.alias1-cluster-ca) + token = file(var.tfc_kubernetes_dynamic_credentials.aliases["ALIAS2"].token_path) +} +``` + +The `tfc_kubernetes_dynamic_credentials` variable is also available to use for single provider configurations, instead of the `KUBE_TOKEN` environment variable. + +```hcl +provider "kubernetes" { + host = var.cluster-endpoint-url + cluster_ca_certificate = base64decode(var.cluster-endpoint-ca) + token = file(var.tfc_kubernetes_dynamic_credentials.default.token_path) +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/manual-generation.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/manual-generation.mdx new file mode 100644 index 0000000000..ab6be885fb --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/manual-generation.mdx @@ -0,0 +1,42 @@ +--- +page_title: Manually generate workload identity tokens in Terraform Enterprise +description: >- + Learn how to generate workload identity tokens to allow Terraform runs to + safely authenticate with custom workflows and providers that do not natively + support dynamic credentials. +source: terraform-docs-common +--- + +# Manually generate workload identity tokens + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.7.0](/terraform/cloud-docs/agents/changelog#1-7-0-03-02-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +If required for custom auth workflows or to perform auth with providers that are not natively supported by dynamic credentials, you can request that HCP Terraform inject a [workload identity token](/terraform/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens) into the run environment for usage in agent hooks. + +## Configure HCP Terraform + +### Required Environment Variables + +You’ll need to set the following environment variable in your HCP Terraform workspace in order to have HCP Terraform inject a workload identity token into the run environment. You can set this as a workspace variable, or if you’d like to inject tokens with the same audience value across multiple workspaces, you can use a variable set. + +| Variable | Value | Notes | +| -------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `TFC_WORKLOAD_IDENTITY_AUDIENCE` | The desired value for the token’s audience. | Requires **v1.7.0** or later if self-managing agents. Must be present and set or HCP Terraform will not inject a workload identity token into the run environment. | + +### Generating Multiple Tokens + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can generate multiple tokens if you want distinct audience values for different consumers of your workload identity tokens. For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +You can generate multiple tokens by specifying additional variables in the following format: `TFC_WORKLOAD_IDENTITY_AUDIENCE_[YOUR_TAG_HERE]`. + +Your tag can only contain letters, numbers, and underscores and can not use reserved keywords. The following keywords are reserved: `TYPE`. + +Each additional audience variable you specify generates an additional workload identity token that HCP Terraform stores in variables with the format: `TFC_WORKLOAD_IDENTITY_TOKEN_[YOUR_TAG_HERE]`. + +## Configure Agent Hooks + +After you've set the `TFC_WORKLOAD_IDENTITY_AUDIENCE` variable, each plan and apply will have a `TFC_WORKLOAD_IDENTITY_TOKEN` variable available in the run environment, which contains a [workload identity token](/terraform/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens). + +You can use this environment variable in custom agent hooks to enable custom auth workflows or to perform auth with providers which are not natively supported by dynamic credentials. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations.mdx new file mode 100644 index 0000000000..24a076a110 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations.mdx @@ -0,0 +1,94 @@ +--- +page_title: Specify multiple dynamic credential configurations in Terraform Enterprise +description: >- + Specify multiple dynamic provider credential configurations for the same + workspace to create aliases for different provider configurations. +source: terraform-docs-common +--- + +# Specify multiple dynamic credential configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can create multiple dynamic credential configurations of the same provider in a workspace. + +Each configuration generates a distinct [workload identity token](/terraform/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens), allowing you to create [aliases for different provider configurations](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can specify unique audience values per configuration, and [manually generate multiple tokens](/terraform/enterprise/workspaces/dynamic-provider-credentials/manual-generation). + +Specifying multiple dynamic credential configurations in HCP Terraform builds on the existing method of providing each provider's environment variables to a workspace. The process requires mapping well-known authentication [input variables](/terraform/language/values/variables) to the correct providers. + +## Configure HCP Terraform + +You can specify additional dynamic credentials configurations by defining and appending a “tag” to the end of your existing required environment variables: `[DYNAMIC_CREDENTIALS_VAR_NAME]_[YOUR_TAG]`. + +Your tag can only contain letters, numbers, and underscores and can not use reserved keywords. The following keywords are reserved: `TYPE`. + +### Example + +Using [Vault's dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration) setup as an example, we can create additional configurations by setting new tagged variables that match Vault's [required environment variables](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration#required-environment-variables). So, if you want to add a configuration with the tag `ALIAS1`, you must set environment variables for `TFC_VAULT_PROVIDER_AUTH_ALIAS1`, `TFC_VAULT_ADDR_ALIAS1`, and `TFC_VAULT_RUN_ROLE_ALIAS1`. + +### Default Values for Multiple Configurations + +Each environment variable has a corresponding default variable which you can use to share values across multiple configurations. In this way, you can set values common to multiple configurations a single time, rather than repeating them for each configuration. If you explicitly set the corresponding environment variable in addition to the default variable, the explicit value is given precedence. + +#### Example + +In the [example above](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations#example), if each of your Vault configurations used the same underlying Vault instance, you could define the Vault address a single time using the `TFC_DEFAULT_VAULT_ADDR` variable, and omit `TFC_VAULT_ADDR` and `TFC_VAULT_ADDR_ALIAS1`. If you add a third Vault configuration for a different Vault instance with the tag `ALIAS2`, you could set the variable `TFC_VAULT_ADDR_ALIAS2` to override the Vault address specifically for the `ALIAS2` configuration. + +## Configure Terraform Code + +Each supported provider has input variables you must declare in your Terraform code to use dynamic credentials with that provider. Each dynamic provider's documentation page lists the required variables for that provider. HCP Terraform provides values for these variables during runs, which you can use to authenticate HCP Terraform with providers using dynamic credentials. + +Use the input variable values that HCP Terraform provides to map configuration values to the correct provider blocks. Authentication information for the default provider exists in a variable's top-level `default` object, while each additional configuration exists under a variable's `aliases` map. HCP Terraform generates the keys of the `aliases` map based on the tag you define in your HCP Terraform configuration. + +~> **Important:** If you add additional configurations to a workspace, you need to manually map authentication information for all providers _including_ the default provider. + +### Example + +Continuing from the [example above](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations#example), after setting the required environment variables for your provider, [add the following code to your Terraform configuration](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration#required-terraform-variable). This lets HCP Terraform supply variable values that you can use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_vault_dynamic_credentials" { + description = "Object containing Vault dynamic credentials configuration" + type = object({ + default = object({ + token_filename = string + address = string + namespace = string + ca_cert_file = string + }) + aliases = map(object({ + token_filename = string + address = string + namespace = string + ca_cert_file = string + })) + }) +} +``` + +Use the above object to map authentication information to the correct provider block. For this example, index into the `aliases` map with your alias's tag (`ALIAS1`) and the `default` provider object. + +```hcl +provider "vault" { + // Set this to true as HCP Terraform manages the token lifecycle + skip_child_token = true + address = var.tfc_vault_dynamic_credentials.default.address + namespace = var.tfc_vault_dynamic_credentials.default.namespace + + auth_login_token_file { + filename = var.tfc_vault_dynamic_credentials.default.token_filename + } +} + +provider "vault" { + // Set this to true as HCP Terraform manages the token lifecycle + skip_child_token = true + alias = "ALIAS1" + address = var.tfc_vault_dynamic_credentials.aliases["ALIAS1"].address + namespace = var.tfc_vault_dynamic_credentials.aliases["ALIAS1"].namespace + + auth_login_token_file { + filename = var.tfc_vault_dynamic_credentials.aliases["ALIAS1"].token_filename + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/aws-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/aws-configuration.mdx new file mode 100644 index 0000000000..31bcda6cda --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/aws-configuration.mdx @@ -0,0 +1,135 @@ +--- +page_title: >- + Use Vault-backed dynamic credentials with the AWS provider in Terraform + Enterprise +description: >- + Use OpenID Connect and Vault to get short-term credentials for the AWS + Terraform provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use Vault-backed dynamic credentials with the AWS provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.8.0](/terraform/cloud-docs/agents/changelog#1-8-0-04-18-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with Vault to use [Vault-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed) with the AWS provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure Vault Dynamic Provider Credentials](#configure-vault-dynamic-provider-credentials)**: Set up a trust configuration between Vault and HCP Terraform, create Vault roles and policies for your HCP Terraform workspaces, and add environment variables to those workspaces. +2. **[Configure the Vault AWS Secrets Engine](#configure-vault-aws-secrets-engine)**: Set up the AWS secrets engine in your Vault instance. +3. **[Configure HCP Terraform](#configure-hcp-terraform)**: Add additional environment variables to the HCP Terraform workspaces where you want to use Vault-Backed Dynamic Credentials. +4. **[Configure Terraform Providers](#configure-terraform-providers)**: Configure your Terraform providers to work with Vault-backed dynamic credentials. + +Once you complete this setup, HCP Terraform automatically authenticates with AWS via Vault-generated credentials during the plan and apply phase of each run. The AWS provider's authentication is only valid for the length of the plan or apply phase. + +## Configure Vault Dynamic Provider Credentials + +You must first set up Vault dynamic provider credentials before you can use Vault-backed dynamic credentials. This includes setting up the JWT auth backend in Vault, configuring trust between HCP Terraform and Vault, and populating the required environment variables in your HCP Terraform workspace. + +[See the setup instructions for Vault dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration). + +# Configure Vault AWS Secrets Engine + +Follow the instructions in the Vault documentation for [setting up the AWS secrets engine in your Vault instance](/vault/docs/secrets/aws). You can also do this configuration through Terraform. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/vault-backed/aws). + +~> **Important**: carefully consider the limitations and differences between each supported credential type in the AWS secrets engine. These limitations carry over to HCP Terraform’s usage of these credentials for authenticating the AWS provider. + +## Configure HCP Terraform + +Next, you need to set certain environment variables in your HCP Terraform workspace to authenticate HCP Terraform with AWS using Vault-backed dynamic credentials. These variables are in addition to those you previously set while configuring [Vault dynamic provider credentials](#configure-vault-dynamic-provider-credentials). You can add these as workspace variables or as a [variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Common Environment Variables + +The below variables apply to all AWS auth types. + +#### Required Common Environment Variables + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `TFC_VAULT_BACKED_AWS_AUTH`<br />`TFC_VAULT_BACKED_AWS_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.8.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate with AWS. | +| `TFC_VAULT_BACKED_AWS_AUTH_TYPE`<br />`TFC_VAULT_BACKED_AWS_AUTH_TYPE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_AUTH_TYPE` | Specifies the type of authentication to perform with AWS. Must be one of the following: `iam_user`, `assumed_role`, or `federation_token`. | Requires **v1.8.0** or later if self-managing agents. | +| `TFC_VAULT_BACKED_AWS_RUN_VAULT_ROLE`<br />`TFC_VAULT_BACKED_AWS_RUN_VAULT_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_RUN_VAULT_ROLE` | The role to use in Vault. | Requires **v1.8.0** or later if self-managing agents. Optional if `TFC_VAULT_BACKED_AWS_PLAN_VAULT_ROLE` and `TFC_VAULT_BACKED_AWS_APPLY_VAULT_ROLE` are both provided. These variables are described [below](#optional-common-environment-variables). | + +#### Optional Common Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `TFC_VAULT_BACKED_AWS_MOUNT_PATH`<br />`TFC_VAULT_BACKED_AWS_MOUNT_PATH[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_MOUNT_PATH` | The mount path of the AWS secrets engine in Vault. | Requires **v1.8.0** or later if self-managing agents. Defaults to `aws`. | +| `TFC_VAULT_BACKED_AWS_PLAN_VAULT_ROLE`<br />`TFC_VAULT_BACKED_AWS_PLAN_VAULT_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_PLAN_VAULT_ROLE` | The Vault role to use the plan phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_AWS_RUN_VAULT_ROLE` if not provided. | +| `TFC_VAULT_BACKED_AWS_APPLY_VAULT_ROLE`<br />`TFC_VAULT_BACKED_AWS_APPLY_VAULT_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_APPLY_VAULT_ROLE` | The Vault role to use for the apply phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_AWS_RUN_VAULT_ROLE` if not provided. | +| `TFC_VAULT_BACKED_AWS_SLEEP_SECONDS`<br />`TFC_VAULT_BACKED_AWS_SLEEP_SECONDS[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_SLEEP_SECONDS` | The amount of time to wait, in seconds, after obtaining temporary credentials from Vault. e.g., `30` for 30 seconds. Must be 1500 seconds (25 minutes) or less. | Requires **v1.12.0** or later if self-managing agents. Can be used to mitigate eventual consistency issues in AWS when using the `iam_user` auth type. | +| `TFC_VAULT_BACKED_AWS_VAULT_CONFIG`<br />`TFC_VAULT_BACKED_AWS_VAULT_CONFIG[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_VAULT_CONFIG` | The name of the non-default Vault configuration for workspaces using [multiple Vault configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). | Requires **v1.12.0** or later if self-managing agents. Will fall back to using the default Vault configuration if not provided. | + +### Assumed Role Specific Environment Variables + +These environment variables are only valid if the `TFC_VAULT_BACKED_AWS_AUTH_TYPE` is `assumed_role`. + +#### Required Assumed Role Specific Environment Variables + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_AWS_RUN_ROLE_ARN`<br />`TFC_VAULT_BACKED_AWS_RUN_ROLE_ARN[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_RUN_ROLE_ARN` | The ARN of the role to assume in AWS. | Requires **v1.8.0** or later if self-managing agents. Optional if `TFC_VAULT_BACKED_AWS_PLAN_ROLE_ARN` and `TFC_VAULT_BACKED_AWS_APPLY_ROLE_ARN` are both provided. These variables are described [below](#optional-assume-role-specific-environment-variables). | + +#### Optional Assumed Role Specific Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_AWS_PLAN_ROLE_ARN`<br />`TFC_VAULT_BACKED_AWS_PLAN_ROLE_ARN[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_PLAN_ROLE_ARN` | The ARN of the role to use for the plan phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_AWS_RUN_ROLE_ARN` if not provided. | +| `TFC_VAULT_BACKED_AWS_APPLY_ROLE_ARN`<br />`TFC_VAULT_BACKED_AWS_APPLY_ROLE_ARN[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AWS_APPLY_ROLE_ARN` | The ARN of the role to use for the apply phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_AWS_RUN_ROLE_ARN` if not provided. | + +## Configure Terraform Providers + +The final step is to directly configure your AWS and Vault providers. + +### Configure the AWS Provider + +Ensure you pass a value for the `region` argument in your AWS provider configuration block or set the `AWS_REGION` variable in your workspace. + +Ensure you are not using any of the arguments or methods mentioned in the [authentication and configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#authentication-and-configuration) section of the provider documentation. Otherwise, these settings may interfere with dynamic provider credentials. + +### Configure the Vault Provider + +If you were previously using the Vault provider to authenticate the AWS provider, remove any existing usage of the AWS secrets engine from your Terraform Code. +This includes the [`vault_aws_access_credentials`](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/aws_access_credentials) data source and any instances of [`vault_generic_secret`](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/generic_secret) you previously used to generate AWS credentials. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct Vault-backed AWS setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_vault_backed_aws_dynamic_credentials" { + description = "Object containing Vault-backed AWS dynamic credentials configuration" + type = object({ + default = object({ + shared_credentials_file = string + }) + aliases = map(object({ + shared_credentials_file = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "aws" { + shared_credentials_files = [var.tfc_vault_backed_aws_dynamic_credentials.default.shared_credentials_file] +} + +provider "aws" { + alias = "ALIAS1" + shared_credentials_files = [var.tfc_vault_backed_aws_dynamic_credentials.aliases["ALIAS1"].shared_credentials_file] +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/azure-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/azure-configuration.mdx new file mode 100644 index 0000000000..138e30f69b --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/azure-configuration.mdx @@ -0,0 +1,152 @@ +--- +page_title: >- + Use Vault-backed dynamic credentials with the Azure provider in Terraform + Enterprise +description: >- + Use OpenID Connect and Vault to get short-term credentials for the Azure + Terraform provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use Vault-backed dynamic credentials with the Azure provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.8.0](/terraform/cloud-docs/agents/changelog#1-8-0-04-18-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with Vault to use [Vault-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed) with the Azure provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure Vault Dynamic Provider Credentials](#configure-vault-dynamic-provider-credentials)**: Set up a trust configuration between Vault and HCP Terraform, create Vault roles and policies for your HCP Terraform workspaces, and add environment variables to those workspaces. +2. **[Configure the Vault Azure Secrets Engine](#configure-vault-azure-secrets-engine)**: Set up the Azure secrets engine in your Vault instance. +3. **[Configure HCP Terraform](#configure-hcp-terraform)**: Add additional environment variables to the HCP Terraform workspaces where you want to use Vault-Backed Dynamic Credentials. +4. **[Configure Terraform Providers](#configure-terraform-providers)**: Configure your Terraform providers to work with Vault-backed Dynamic Credentials. + +Once you complete this setup, HCP Terraform automatically authenticates with Azure via Vault-generated credentials during the plan and apply phase of each run. The Azure provider's authentication is only valid for the length of the plan or apply phase. + +## Configure Vault Dynamic Provider Credentials + +You must first set up Vault dynamic provider credentials before you can use Vault-backed dynamic credentials. This includes setting up the JWT auth backend in Vault, configuring trust between HCP Terraform and Vault, and populating the required environment variables in your HCP Terraform workspace. + +[See the setup instructions for Vault dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration). + +# Configure Vault Azure Secrets Engine + +Follow the instructions in the Vault documentation for [setting up the Azure secrets engine in your Vault instance](/vault/docs/secrets/azure). You can also do this configuration through Terraform. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/vault-backed/azure). + +## Configure HCP Terraform + +Next, you need to set certain environment variables in your HCP Terraform workspace to authenticate HCP Terraform with Azure using Vault-backed dynamic credentials. These variables are in addition to those you previously set while configuring [Vault dynamic provider credentials](#configure-vault-dynamic-provider-credentials). You can add these as workspace variables or as a [variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_AZURE_AUTH`<br />`TFC_VAULT_BACKED_AZURE_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.8.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate with Azure. | +| `TFC_VAULT_BACKED_AZURE_RUN_VAULT_ROLE`<br />`TFC_VAULT_BACKED_AZURE_RUN_VAULT_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AZURE_RUN_VAULT_ROLE` | The role to use in Vault. | Requires **v1.8.0** or later if self-managing agents. Optional if `TFC_VAULT_BACKED_AZURE_PLAN_VAULT_ROLE` and `TFC_VAULT_BACKED_AZURE_APPLY_VAULT_ROLE` are both provided. These variables are described [below](#optional-environment-variables). | + +### Optional Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_AZURE_MOUNT_PATH`<br />`TFC_VAULT_BACKED_AZURE_MOUNT_PATH[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AZURE_MOUNT_PATH` | The mount path of the Azure secrets engine in Vault. | Requires **v1.8.0** or later if self-managing agents. Defaults to `azure`. | +| `TFC_VAULT_BACKED_AZURE_PLAN_VAULT_ROLE`<br />`TFC_VAULT_BACKED_AZURE_PLAN_VAULT_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AZURE_PLAN_VAULT_ROLE` | The Vault role to use the plan phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_AZURE_RUN_VAULT_ROLE` if not provided. | +| `TFC_VAULT_BACKED_AZURE_APPLY_VAULT_ROLE`<br />`TFC_VAULT_BACKED_AZURE_APPLY_VAULT_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AZURE_APPLY_VAULT_ROLE` | The Vault role to use for the apply phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_AZURE_RUN_VAULT_ROLE` if not provided. | +| `TFC_VAULT_BACKED_AZURE_SLEEP_SECONDS`<br />`TFC_VAULT_BACKED_AZURE_SLEEP_SECONDS[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AZURE_SLEEP_SECONDS` | The amount of time to wait, in seconds, after obtaining temporary credentials from Vault. e.g., `30` for 30 seconds. Must be 1500 seconds (25 minutes) or less. | Requires **v1.12.0** or later if self-managing agents. Can be used to mitigate eventual consistency issues in Azure. | +| `TFC_VAULT_BACKED_AZURE_VAULT_CONFIG`<br />`TFC_VAULT_BACKED_AZURE_VAULT_CONFIG[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_AZURE_VAULT_CONFIG` | The name of the non-default Vault configuration for workspaces using [multiple Vault configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). | Requires **v1.12.0** or later if self-managing agents. Will fall back to using the default Vault configuration if not provided. | + +## Configure Terraform Providers + +The final step is to directly configure your Azure and Vault providers. + +### Configure the AzureRM or Microsoft Entra ID + +Ensure you pass a value for the `subscription_id` and `tenant_id` arguments in your provider configuration block or set the `ARM_SUBSCRIPTION_ID` and `ARM_TENANT_ID` variables in your workspace. + +Do not set values for `client_id`, `use_oidc`, or `oidc_token` in your provider configuration block. Additionally, do not set variable values for `ARM_CLIENT_ID`, `ARM_USE_OIDC`, or `ARM_OIDC_TOKEN`. + +### Configure the Vault Provider + +If you were previously using the Vault provider to authenticate the Azure provider, remove any existing usage of the Azure secrets engine from your Terraform Code. +This includes the [`vault_azure_access_credentials`](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/azure_access_credentials) data source and any instances of [`vault_generic_secret`](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/generic_secret) you previously used to generate Azure credentials. + +### Specifying Multiple Configurations + +~> **Important:** Ensure you are using version **3.60.0** or later of the **AzureRM provider** and version **2.43.0** or later of the **Microsoft Entra ID provider** (previously Azure Active Directory) as required functionality was introduced in these provider versions. + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct Vault-backed Azure setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_vault_backed_azure_dynamic_credentials" { + description = "Object containing Vault-backed Azure dynamic credentials configuration" + type = object({ + default = object({ + client_id_file_path = string + client_secret_file_path = string + }) + aliases = map(object({ + client_id_file_path = string + client_secret_file_path = string + })) + }) +} +``` + +#### Example Usage + +##### AzureRM Provider + +```hcl +provider "azurerm" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + client_id_file_path = var.tfc_vault_backed_azure_dynamic_credentials.default.client_id_file_path + client_secret_file_path = var.tfc_vault_backed_azure_dynamic_credentials.default.client_secret_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "10000000-0000-0000-0000-000000000000" +} + +provider "azurerm" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + alias = "ALIAS1" + client_id_file_path = var.tfc_vault_backed_azure_dynamic_credentials.aliases["ALIAS1"].client_id_file_path + client_secret_file_path = var.tfc_vault_backed_azure_dynamic_credentials.aliases["ALIAS1"].client_secret_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "20000000-0000-0000-0000-000000000000" +} +``` + +##### Microsoft Entra ID Provider (previously AzureAD) + +```hcl +provider "azuread" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + client_id_file_path = var.tfc_vault_backed_azure_dynamic_credentials.default.client_id_file_path + client_secret_file_path = var.tfc_vault_backed_azure_dynamic_credentials.default.client_secret_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "10000000-0000-0000-0000-000000000000" +} + +provider "azuread" { + features {} + // use_cli should be set to false to yield more accurate error messages on auth failure. + use_cli = false + alias = "ALIAS1" + client_id_file_path = var.tfc_vault_backed_azure_dynamic_credentials.aliases["ALIAS1"].client_id_file_path + client_secret_file_path = var.tfc_vault_backed_azure_dynamic_credentials.aliases["ALIAS1"].client_secret_file_path + subscription_id = "00000000-0000-0000-0000-000000000000" + tenant_id = "20000000-0000-0000-0000-000000000000" +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/gcp-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/gcp-configuration.mdx new file mode 100644 index 0000000000..752c2887d9 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/gcp-configuration.mdx @@ -0,0 +1,167 @@ +--- +page_title: >- + Use Vault-backed dynamic credentials with the GCP provider in Terraform + Enterprise +description: >- + Use OpenID Connect and Vault to get short-term credentials for the GCP + Terraform provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use Vault-backed dynamic credentials with the GCP provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.8.0](/terraform/cloud-docs/agents/changelog#1-8-0-04-18-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with Vault to use [Vault-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed) with the GCP provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure Vault Dynamic Provider Credentials](#configure-vault-dynamic-provider-credentials)**: Set up a trust configuration between Vault and HCP Terraform, create Vault roles and policies for your HCP Terraform workspaces, and add environment variables to those workspaces. +2. **[Configure the Vault GCP Secrets Engine](#configure-vault-gcp-secrets-engine)**: Set up the GCP secrets engine in your Vault instance. +3. **[Configure HCP Terraform](#configure-hcp-terraform)**: Add additional environment variables to the HCP Terraform workspaces where you want to use Vault-Backed Dynamic Credentials. +4. **[Configure Terraform Providers](#configure-terraform-providers)**: Configure your Terraform providers to work with Vault-backed dynamic credentials. + +Once you complete this setup, HCP Terraform automatically authenticates with GCP via Vault-generated credentials during the plan and apply phase of each run. The GCP provider's authentication is only valid for the length of the plan or apply phase. + +## Configure Vault Dynamic Provider Credentials + +You must first set up Vault dynamic provider credentials before you can use Vault-backed dynamic credentials. This includes setting up the JWT auth backend in Vault, configuring trust between HCP Terraform and Vault, and populating the required environment variables in your HCP Terraform workspace. + +[See the setup instructions for Vault dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration). + +# Configure Vault GCP Secrets Engine + +Follow the instructions in the Vault documentation for [setting up the GCP secrets engine in your Vault instance](/vault/docs/secrets/gcp). You can also do this configuration through Terraform. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/vault-backed/gcp). + +~> **Important**: carefully consider the limitations and differences between each supported credential type in the GCP secrets engine. These limitations carry over to HCP Terraform’s usage of these credentials for authenticating the GCP provider. + +## Configure HCP Terraform + +Next, you need to set certain environment variables in your HCP Terraform workspace to authenticate HCP Terraform with GCP using Vault-backed dynamic credentials. These variables are in addition to those you previously set while configuring [Vault dynamic provider credentials](#configure-vault-dynamic-provider-credentials). You can add these as workspace variables or as a [variable set](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Common Environment Variables + +The below variables apply to all GCP auth types. + +#### Required Common Environment Variables + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_GCP_AUTH`<br />`TFC_VAULT_BACKED_GCP_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.8.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate with GCP. | +| `TFC_VAULT_BACKED_GCP_AUTH_TYPE`<br />`TFC_VAULT_BACKED_GCP_AUTH_TYPE[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_AUTH_TYPE` | Specifies the type of authentication to perform with GCP. Must be one of the following: `roleset/access_token`, `roleset/service_account_key`, `static_account/access_token`, or `static_account/service_account_key`. | Requires **v1.8.0** or later if self-managing agents. | + +#### Optional Common Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_GCP_MOUNT_PATH`<br />`TFC_VAULT_BACKED_GCP_MOUNT_PATH[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_MOUNT_PATH` | The mount path of the GCP secrets engine in Vault. | Requires **v1.8.0** or later if self-managing agents. Defaults to `gcp`. | +| `TFC_VAULT_BACKED_GCP_VAULT_CONFIG`<br />`TFC_VAULT_BACKED_GCP_VAULT_CONFIG[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_VAULT_CONFIG` | The name of the non-default Vault configuration for workspaces using [multiple Vault configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). | Requires **v1.12.0** or later if self-managing agents. Will fall back to using the default Vault configuration if not provided. | + +### Roleset Specific Environment Variables + +These environment variables are only valid if the `TFC_VAULT_BACKED_GCP_AUTH_TYPE` is `roleset/access_token` or `roleset/service_account_key`. + +#### Required Roleset Specific Environment Variables + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_GCP_RUN_VAULT_ROLESET`<br />`TFC_VAULT_BACKED_GCP_RUN_VAULT_ROLESET[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_RUN_VAULT_ROLESET` | The roleset to use in Vault. | Requires **v1.8.0** or later if self-managing agents. Optional if `TFC_VAULT_BACKED_GCP_PLAN_VAULT_ROLESET` and `TFC_VAULT_BACKED_GCP_APPLY_VAULT_ROLESET` are both provided. These variables are described [below](#optional-roleset-specific-environment-variables). | + +#### Optional Roleset Specific Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_GCP_PLAN_VAULT_ROLESET`<br />`TFC_VAULT_BACKED_GCP_PLAN_VAULT_ROLESET[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_PLAN_VAULT_ROLESET` | The roleset to use for the plan phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_GCP_RUN_VAULT_ROLESET` if not provided. | +| `TFC_VAULT_BACKED_GCP_APPLY_VAULT_ROLESET`<br />`TFC_VAULT_BACKED_GCP_APPLY_VAULT_ROLESET[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_APPLY_VAULT_ROLESET` | The roleset to use for the apply phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_GCP_RUN_VAULT_ROLESET` if not provided. | + +### Static Account Specific Environment Variables + +These environment variables are only valid if the `TFC_VAULT_BACKED_GCP_AUTH_TYPE` is `static_account/access_token` or `static_account/service_account_key`. + +#### Required Static Account Specific Environment Variables + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_GCP_RUN_VAULT_STATIC_ACCOUNT`<br />`TFC_VAULT_BACKED_GCP_RUN_VAULT_STATIC_ACCOUNT[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_RUN_VAULT_STATIC_ACCOUNT` | The static account to use in Vault. | Requires **v1.8.0** or later if self-managing agents. Optional if `TFC_VAULT_BACKED_GCP_PLAN_VAULT_STATIC_ACCOUNT` and `TFC_VAULT_BACKED_GCP_APPLY_VAULT_STATIC_ACCOUNT` are both provided. These variables are described [below](#optional-static-account-specific-environment-variables). | + +#### Optional Static Account Specific Environment Variables + +You may need to set these variables, depending on your use case. + +| Variable | Value | Notes | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_BACKED_GCP_PLAN_VAULT_STATIC_ACCOUNT`<br />`TFC_VAULT_BACKED_GCP_PLAN_VAULT_STATIC_ACCOUNT[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_PLAN_VAULT_STATIC_ACCOUNT` | The static account to use for the plan phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_GCP_RUN_VAULT_STATIC_ACCOUNT` if not provided. | +| `TFC_VAULT_BACKED_GCP_APPLY_VAULT_STATIC_ACCOUNT`<br />`TFC_VAULT_BACKED_GCP_APPLY_VAULT_STATIC_ACCOUNT[_TAG]`<br />`TFC_DEFAULT_VAULT_BACKED_GCP_APPLY_VAULT_STATIC_ACCOUNT` | The static account to use for the apply phase of a run. | Requires **v1.8.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_BACKED_GCP_RUN_VAULT_STATIC_ACCOUNT` if not provided. | + +## Configure Terraform Providers + +The final step is to directly configure your GCP and Vault providers. + +### Configure the GCP Provider + +Ensure you pass values for the `project` and `region` arguments into the provider configuration block. + +Ensure you are not setting values or environment variables for `GOOGLE_CREDENTIALS` or `GOOGLE_APPLICATION_CREDENTIALS`. Otherwise, these values may interfere with dynamic provider credentials. + +### Configure the Vault Provider + +If you were previously using the Vault provider to authenticate the GCP provider, remove any existing usage of the GCP secrets engine from your Terraform Code. +This includes instances of [`vault_generic_secret`](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/generic_secret) that you previously used to generate GCP credentials. + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can add additional variables to handle multiple distinct Vault-backed GCP setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_vault_backed_gcp_dynamic_credentials" { + description = "Object containing Vault-backed GCP dynamic credentials configuration" + type = object({ + default = object({ + credentials = string + access_token = string + }) + aliases = map(object({ + credentials = string + access_token = string + })) + }) +} +``` + +#### Example Usage + +##### Access Token + +```hcl +provider "google" { + access_token = var.tfc_vault_backed_gcp_dynamic_credentials.default.access_token +} + +provider "google" { + alias = "ALIAS1" + access_token = var.tfc_vault_backed_gcp_dynamic_credentials.aliases["ALIAS1"].access_token +} +``` + +##### Credentials + +```hcl +provider "google" { + credentials = var.tfc_vault_backed_gcp_dynamic_credentials.default.credentials +} + +provider "google" { + alias = "ALIAS1" + credentials = var.tfc_vault_backed_gcp_dynamic_credentials.aliases["ALIAS1"].credentials +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/index.mdx new file mode 100644 index 0000000000..29d2cd3396 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-backed/index.mdx @@ -0,0 +1,52 @@ +--- +page_title: Use Vault-backed dynamic credentials in Terraform Enterprise +description: >- + Vault-backed dynamic credentials leverage Vault to generate temporary + credentials for Terraform Enterprise runs. Learn how Vault-backed dynamic + credentials for AWS, Azure, and GCP can improve your security. +source: terraform-docs-common +--- + +# Use Vault-backed dynamic credentials + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.8.0](/terraform/cloud-docs/agents/changelog#1-8-0-04-18-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +For most use cases, separately configuring [dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) with different cloud providers works well. However, Vault-backed dynamic credentials are for those looking for a way to: + +1. Use Vault's secrets engines as a centralized way to manage and consolidate cloud credentials management. +2. Generate short-lived credentials without exposing their Terraform Enterprise instance's OIDC metadata endpoints to the broader public internet. + +The "Vault-backed" in "Vault-backed dynamic credentials" refers to Vault's [secrets engines](/vault/docs/secrets), which allow you to generate short-lived [dynamic secrets](https://www.vaultproject.io/use-cases/dynamic-secrets) for the AWS, GCP, or Azure providers. If you are using Terraform Enterprise and your Vault instance is configured within the same secure network, you can generate secrets while keeping your environment air-gapped. + +Vault-backed dynamic credentials combine the features of dynamic provider credentials and Vault's secrets engines. This means you can authenticate a Vault instance using workload identity tokens and use secrets engines on that instance to generate dynamic credentials for the AWS, GCP, and Azure providers. + +For a comparison of Vault-backed dynamic credentials and dynamic provider credentials, refer to the article [Why use Vault-backed dynamic credentials to secure HCP Terraform infrastructure?](https://www.hashicorp.com/blog/why-use-vault-backed-dynamic-credentials-to-secure-hcp-terraform-infrastructure) on the HashiCorp blog. + +## Configure Vault-Backed Dynamic Credentials + +Using Vault-backed dynamic credentials in a workspace requires the following steps for each cloud platform: + +1. **Set up Dynamic Provider Credentials with the Vault Provider:** You must first [configure dynamic credentials with the Vault provider](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration). +2. **Configure the desired Secrets Engine**: You must configure the desired secrets engine in your Vault instance (i.e., AWS, GCP, or Azure). +3. **Configure HCP Terraform Workspace**: You must add specific environment variables to your workspace to tell HCP Terraform how to authenticate to other cloud providers during runs. Each cloud platform has its own set of environment variables that are necessary to configure dynamic credentials. + +Setting up Vault-backed dynamic credentials differs slightly for each cloud provider. You can configure Vault-backed dynamic credentials on the following platforms: + +- [Amazon Web Services](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed/aws-configuration) +- [Google Cloud Platform](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed/gcp-configuration) +- [Azure](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed/azure-configuration) + +## Terraform Enterprise Specific Requirements + +### Access to Metadata Endpoints + +In order to verify signed JWTs, Vault must have network access to the following static OIDC metadata endpoints within TFE: + +1. `/.well-known/openid-configuration` - standard OIDC metadata. +2. `/.well-known/jwks` - TFE’s public key(s) that cloud platforms use to verify the authenticity of tokens that claim to come from TFE. + +These endpoints **do not** need to be publicly exposed as long as your Vault instance can access them. + +### External Vault Policy + +If you are using an external Vault instance, you must ensure that your Vault instance has the correct policies setup as detailed in the [External Vault Requirements for Terraform Enterprise](/terraform/enterprise/requirements/data-storage/vault) documentation. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-configuration.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-configuration.mdx new file mode 100644 index 0000000000..8ed0483c1d --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/vault-configuration.mdx @@ -0,0 +1,225 @@ +--- +page_title: Use dynamic credentials with the Vault provider in Terraform Enterprise +description: >- + Use OpenID Connect to get short-term credentials for the Vault Terraform + provider in your Terraform Enterprise runs. +source: terraform-docs-common +--- + +# Use dynamic credentials with the Vault provider + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.7.0](/terraform/cloud-docs/agents/changelog#1-7-0-03-02-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +You can use HCP Terraform’s native OpenID Connect integration with Vault to get [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for the Vault provider in your HCP Terraform runs. Configuring the integration requires the following steps: + +1. **[Configure Vault](#configure-vault):** Set up a trust configuration between Vault and HCP Terraform. Then, you must create Vault roles and policies for your HCP Terraform workspaces. +2. **[Configure HCP Terraform](#configure-hcp-terraform):** Add environment variables to the HCP Terraform workspaces where you want to use Dynamic Credentials. + +Once you complete the setup, HCP Terraform automatically authenticates to Vault during each run. The Vault provider authentication is valid for the length of the plan or apply. Vault does not revoke authentication until the run is complete. + +If you are using Vault's [secrets engines](/vault/docs/secrets), you must complete the following set up before continuing to configure [Vault-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed). + +## Configure Vault + +You must enable and configure the JWT backend in Vault. These instructions use the Vault CLI commands, but you can also use Terraform to configure Vault. Refer to our [example Terraform configuration](https://github.com/hashicorp/terraform-dynamic-credentials-setup-examples/tree/main/vault). + +### Enable the JWT Auth Backend + +Run the following command to enable the JWT auth backend in Vault: + +```shell +vault auth enable jwt +``` + +### Configure Trust with HCP Terraform + +You must configure Vault to trust HCP Terraform’s identity tokens and verify them using HCP Terraform’s public key. The following command configures the `jwt` auth backend in Vault to trust HCP Terraform as an OIDC identity provider: + +```shell +vault write auth/jwt/config \ + oidc_discovery_url="https://app.terraform.io" \ + bound_issuer="https://app.terraform.io" +``` + +The `oidc_discovery_url` and `bound_issuer` should both be the root address of HCP Terraform, including the scheme and without a trailing slash. + +#### Terraform Enterprise Specific Requirements + +If you are using a custom or self-signed CA certificate you may need to specify the CA certificate or chain of certificates, in PEM format, via the [`oidc_discovery_ca_pem`](/vault/api-docs/auth/jwt#oidc_discovery_ca_pem) argument as shown in the following example command: + +```shell +vault write auth/jwt/config \ + oidc_discovery_url="https://app.terraform.io" \ + bound_issuer="https://app.terraform.io" \ + oidc_discovery_ca_pem=@my-cert.pem +``` + +In the example above, `my-cert.pem` is a PEM formatted file containing the certificate. + +### Create a Vault Policy + +You must create a Vault policy that controls what paths and secrets your HCP Terraform workspace can access in Vault. +Create a file called tfc-policy.hcl with the following content: + +```hcl +# Allow tokens to query themselves +path "auth/token/lookup-self" { + capabilities = ["read"] +} + +# Allow tokens to renew themselves +path "auth/token/renew-self" { + capabilities = ["update"] +} + +# Allow tokens to revoke themselves +path "auth/token/revoke-self" { + capabilities = ["update"] +} + +# Configure the actual secrets the token should have access to +path "secret/*" { + capabilities = ["read"] +} +``` + +Then create the policy in Vault: + +```shell +vault policy write tfc-policy tfc-policy.hcl +``` + +### Create a JWT Auth Role + +Create a Vault role that HCP Terraform can use when authenticating to Vault. + +Vault offers a lot of flexibility in determining how to map roles and permissions in Vault to workspaces in HCP Terraform. You can have one role for each workspace, one role for a group of workspaces, or one role for all workspaces in an organization. You can also configure different roles for the plan and apply phases of a run. + +-> **Note:** If you set your `user_claim` to be per workspace, then Vault ties the entity it creates to that workspace's name. If you rename the workspace tied to your `user_claim`, Vault will create an additional identity object. To avoid this, update the alias name in Vault to your new workspace name before you update it in HCP Terraform. + +The following example creates a role called `tfc-role`. The role is mapped to a single workspace and HCP Terraform can use it for both plan and apply runs. + +Create a file called `vault-jwt-auth-role.json` with the following content: + +```json +{ + "policies": ["tfc-policy"], + "bound_audiences": ["vault.workload.identity"], + "bound_claims_type": "glob", + "bound_claims": { + "sub": +"organization:my-org-name:project:my-project-name:workspace:my-workspace-name:run_phase:*" + }, + "user_claim": "terraform_full_workspace", + "role_type": "jwt", + "token_ttl": "20m" +} +``` + +Then run the following command to create a role named `tfc-role` with this configuration in Vault: + +```shell +vault write auth/jwt/role/tfc-role @vault-jwt-auth-role.json +``` + +To understand all the available options for matching bound claims, refer to the [Terraform workload identity claim specification](/terraform/enterprise/workspaces/dynamic-provider-credentials) and the [Vault documentation on configuring bound claims](/vault/docs/auth/jwt#bound-claims). To understand all the options available when configuring Vault JWT auth roles, refer to the [Vault API documentation](/vault/api-docs/auth/jwt#create-role). + +!> **Warning:** you should always check, at minimum, the audience and the name of the organization in order to prevent unauthorized access from other HCP Terraform organizations! + +#### Token TTLs + +We recommend setting token_ttl to a relatively short value. HCP Terraform can renew the token periodically until the plan or apply is complete, then revoke it to prevent it from being used further. + +## Configure HCP Terraform + +You’ll need to set some environment variables in your HCP Terraform workspace in order to configure HCP Terraform to authenticate with Vault using dynamic credentials. You can set these as workspace variables, or if you’d like to share one Vault role across multiple workspaces, you can use a variable set. When you configure dynamic provider credentials with multiple provider configurations of the same type, use either a default variable or a tagged alias variable name for each provider configuration. Refer to [Specifying Multiple Configurations](#specifying-multiple-configurations) for more details. + +### Required Environment Variables + +| Variable | Value | Notes | +| ------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_PROVIDER_AUTH`<br />`TFC_VAULT_PROVIDER_AUTH[_TAG]`<br />_(Default variable not supported)_ | `true` | Requires **v1.7.0** or later if self-managing agents. Must be present and set to `true`, or HCP Terraform will not attempt to authenticate to Vault. | +| `TFC_VAULT_ADDR`<br />`TFC_VAULT_ADDR[_TAG]`<br />`TFC_DEFAULT_VAULT_ADDR` | The address of the Vault instance to authenticate against. | Requires **v1.7.0** or later if self-managing agents. Will also be used to set `VAULT_ADDR` in the run environment. | +| `TFC_VAULT_RUN_ROLE`<br />`TFC_VAULT_RUN_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_RUN_ROLE` | The name of the Vault role to authenticate against (`tfc-role`, in our example). | Requires **v1.7.0** or later if self-managing agents. Optional if `TFC_VAULT_PLAN_ROLE` and `TFC_VAULT_APPLY_ROLE` are both provided. These variables are described [below](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-configuration#optional-environment-variables) | + +### Optional Environment Variables + +You may need to set these variables, depending on your Vault configuration and use case. + +| Variable | Value | Notes | +| -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `TFC_VAULT_NAMESPACE`<br />`TFC_VAULT_NAMESPACE[_TAG]`<br />`TFC_DEFAULT_VAULT_NAMESPACE` | The namespace to use when authenticating to Vault. | Requires **v1.7.0** or later if self-managing agents. Will also be used to set `VAULT_NAMESPACE` in the run environment. | +| `TFC_VAULT_AUTH_PATH`<br />`TFC_VAULT_AUTH_PATH[_TAG]`<br />`TFC_DEFAULT_VAULT_AUTH_PATH` | The path where the JWT auth backend is mounted in Vault. Defaults to jwt. | Requires **v1.7.0** or later if self-managing agents. | +| `TFC_VAULT_WORKLOAD_IDENTITY_AUDIENCE`<br />`TFC_VAULT_WORKLOAD_IDENTITY_AUDIENCE[_TAG]`<br />`TFC_DEFAULT_VAULT_WORKLOAD_IDENTITY_AUDIENCE` | Will be used as the `aud` claim for the identity token. Defaults to `vault.workload.identity`. | Requires **v1.7.0** or later if self-managing agents. Must match the `bound_audiences` configured for the role in Vault. | +| `TFC_VAULT_PLAN_ROLE`<br />`TFC_VAULT_PLAN_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_PLAN_ROLE` | The Vault role to use for the plan phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_RUN_ROLE` if not provided. | +| `TFC_VAULT_APPLY_ROLE`<br />`TFC_VAULT_APPLY_ROLE[_TAG]`<br />`TFC_DEFAULT_VAULT_APPLY_ROLE` | The Vault role to use for the apply phase of a run. | Requires **v1.7.0** or later if self-managing agents. Will fall back to the value of `TFC_VAULT_RUN_ROLE` if not provided. | +| `TFC_VAULT_ENCODED_CACERT`<br />`TFC_VAULT_ENCODED_CACERT[_TAG]`<br />`TFC_DEFAULT_VAULT_ENCODED_CACERT` | A PEM-encoded CA certificate that has been Base64 encoded. | Requires **v1.9.0** or later if self-managing agents. This certificate will be used when connecting to Vault. May be required when connecting to Vault instances that use a custom or self-signed certificate. | + +## Vault Provider Configuration + +Once you set up dynamic credentials for a workspace, HCP Terraform automatically authenticates to Vault for each run. Do not pass the `address`, `token`, or `namespace` arguments into the provider configuration block. HCP Terraform sets these values as environment variables in the run environment. + +You can use the Vault provider to read static secrets from Vault and use them with other Terraform resources. You can also access the other resources and data sources available in the [Vault provider documentation](https://registry.terraform.io/providers/hashicorp/vault/latest). You must adjust your [Vault policy](#create-a-vault-policy) to give your HCP Terraform workspace access to all required Vault paths. + +~> **Important:** data sources that use secrets engines to generate dynamic secrets must not be used with Vault dynamic credentials. You can use Vault's dynamic secrets engines for AWS, GCP, and Azure by adding additional configurations. For more details, see [Vault-backed dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials/vault-backed). + +### Specifying Multiple Configurations + +~> **Important:** If you are self-hosting [HCP Terraform agents](/terraform/cloud-docs/agents), ensure your agents use [v1.12.0](/terraform/cloud-docs/agents/changelog#1-12-0-07-26-2023) or above. To use the latest dynamic credentials features, [upgrade your agents to the latest version](/terraform/cloud-docs/agents/changelog). + +~> **Important:** Ensure you are using version **3.18.0** or later of the **Vault provider** as the required [`auth_login_token_file`](https://registry.terraform.io/providers/hashicorp/vault/latest/docs#token-file) block was introduced in this provider version. + +You can add additional variables to handle multiple distinct Vault setups, enabling you to use multiple [provider aliases](/terraform/language/providers/configuration#alias-multiple-provider-configurations) within the same workspace. You can configure each set of credentials independently, or use default values by configuring the variables prefixed with `TFC_DEFAULT_`. + +For more details, see [Specifying Multiple Configurations](/terraform/enterprise/workspaces/dynamic-provider-credentials/specifying-multiple-configurations). + +#### Required Terraform Variable + +To use additional configurations, add the following code to your Terraform configuration. This lets HCP Terraform supply variable values that you can then use to map authentication and configuration details to the correct provider blocks. + +```hcl +variable "tfc_vault_dynamic_credentials" { + description = "Object containing Vault dynamic credentials configuration" + type = object({ + default = object({ + token_filename = string + address = string + namespace = string + ca_cert_file = string + }) + aliases = map(object({ + token_filename = string + address = string + namespace = string + ca_cert_file = string + })) + }) +} +``` + +#### Example Usage + +```hcl +provider "vault" { + // skip_child_token must be explicitly set to true as HCP Terraform manages the token lifecycle + skip_child_token = true + address = var.tfc_vault_dynamic_credentials.default.address + namespace = var.tfc_vault_dynamic_credentials.default.namespace + + auth_login_token_file { + filename = var.tfc_vault_dynamic_credentials.default.token_filename + } +} + +provider "vault" { + // skip_child_token must be explicitly set to true as HCP Terraform manages the token lifecycle + skip_child_token = true + alias = "ALIAS1" + address = var.tfc_vault_dynamic_credentials.aliases["ALIAS1"].address + namespace = var.tfc_vault_dynamic_credentials.aliases["ALIAS1"].namespace + + auth_login_token_file { + filename = var.tfc_vault_dynamic_credentials.aliases["ALIAS1"].token_filename + } +} +``` diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens.mdx new file mode 100644 index 0000000000..26851ac640 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/dynamic-provider-credentials/workload-identity-tokens.mdx @@ -0,0 +1,99 @@ +--- +page_title: Workload identity in Terraform Enterprise +description: >- + Learn how workload identity uses OpenID Connect (OIDC) to allow Terraform + plans and applies to safely authenticate to external systems. +source: terraform-docs-common +--- + +# Workload identity + +Dynamic Provider Credentials are powered by Terraform Workload Identity, which allows HCP Terraform to present information about a Terraform workload to an external system – like its workspace, organization, or whether it’s a plan or apply – and allows other external systems to verify that the information is accurate. + +You can think of it like an identity card for your Terraform runs: one that comes with a way for another system to easily verify whether the card is genuine. If the other system can confirm that the ID card is legitimate, it can trust the information the card contains and use it to decide whether to let that Terraform workload in the door. + +The “identity card” in this analogy is a workload identity token: a JSON Web Token (JWT) that contains information about a plan or apply, is signed by HCP Terraform’s private key, and expires at the end of the plan or apply timeout. Other systems can use HCP Terraform’s [public key](https://app.terraform.io/.well-known/jwks) to verify that a token that claims to be from HCP Terraform is genuine and has not been tampered with. + +This workflow is built on the [OpenID Connect protocol](https://openid.net/connect/), a trusted standard for verifying identity across different systems. + +## Token Specification + +Workload identity tokens contain useful metadata in their payloads, known as _claims_. This is the equivalent of the name and date of birth on an identity card. Once a cloud platform verifies a token using HCP Terraform’s public key, it can look at the claims in the identity token to either match it to the correct permissions or reject it. + +You don’t need to understand the full token specification and what every claim means in order to use dynamic credentials, but it’s useful for debugging. + +### Token Structure + +The following example shows a decoded HCP Terraform workload identity token: + +#### Header + +```json +{ + "typ": "JWT", + "alg": "RS256", + "kid": "j-fFp9evPJAzV5I2_58HY5UvdCK6Q4LLB1rnPOUfQAk" +} +``` + +#### Payload + +```json +{ + "jti": "1192426d-b525-4fde-9d42-f238be437bbd", + "iss": "https://app.terraform.io", + "aud": "my-example-audience", + "iat": 1650486122, + "nbf": 1650486117, + "exp": 1650486422, + "sub": "organization:my-org:project:Default Project:workspace:my-workspace:run_phase:apply", + "terraform_organization_id": "org-GRNbCjYNpBB6NEH9", + "terraform_organization_name": "my-org", + "terraform_project_id": "prj-vegSA59s1XPwMr2t", + "terraform_project_name": "Default Project", + "terraform_workspace_id": "ws-mbsd5E3Ktt5Rg2Xm", + "terraform_workspace_name": "my-workspace", + "terraform_full_workspace": "organization:my-org:project:Default Project:workspace:my-workspace", + "terraform_run_id": "run-X3n1AUXNGWbfECsJ", + "terraform_run_phase": "apply" +} +``` + +This payload includes a number of standard claims defined in the OIDC spec as well as a number of custom claims for further customization. + +### Standard Claims + +| Claim | Value | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `jti` (JWT ID) | A unique identifier for each JWT. | +| `iss` (issuer) | Full URL of HCP Terraform or the Terraform Enterprise instance which signed the JWT. | +| `iat` (issued at) | Unix Timestamp when the JWT was issued. May be required by certain relying parties. | +| `nbf` (not before) | Unix Timestamp when the JWT can start being used. This will be the same as `iat` for tokens issued by HCP Terraform, but may be required by certain relying parties. | +| `aud` (audience) | Intended audience for the JWT. For example, `aws.workload.identity` for AWS. This can be customized. | +| `exp` (expiration) | Unix Timestamp based on the timeout of the run phase that it was issued for. This will follow the `plan` and `apply` timeouts set at the organization and site admin level. | +| `sub` (subject) | Fully qualified path to a workspace, followed by the run phase. For example: `organization:my-organization-name:project:Default Project:workspace:my-workspace-name:run_phase:apply` | + +### Custom Claims + +| Claim | Value | +| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `terraform_organization_id` (organization ID) | ID of the HCP Terraform organization performing the run. | +| `terraform_organization_name` (organization name) | Human-readable name of the HCP Terraform organization performing the run. Note that organization names can be changed. | +| `terraform_project_id` (project ID) | ID of the HCP Terraform project performing the run. | +| `terraform_project_name` (project name) | Human-readable name of the HCP Terraform project performing the run. Note that project names can be changed. The default project name is `Default Project`. | +| `terraform_workspace_id` (workspace ID) | ID of the HCP Terraform workspace performing the run. | +| `terraform_workspace_name` (workspace name) | Human-readable name of the HCP Terraform workspace performing the run. Note that workspace names can be changed. | +| `terraform_full_workspace` (fully qualified workspace) | Fully qualified path to a workspace. For example: `organization:my-organization-name:project:my-project-name:workspace:my-workspace-name` | +| `terraform_run_id` (run ID) | ID of the run that the token was generated for. This is intended to aid in traceability and logging. | +| `terraform_run_phase` (run phase) | The phase of the run this token was issued for. For example, `plan` or `apply` | + +### Configuring Trust with your Cloud Platform + +When configuring the trust relationship between HCP Terraform and your cloud platform, you’ll set up conditions to validate the contents of the identity token provided by HCP Terraform against your roles and policies. + +At the minimum, you should match against the following claims: + +- `aud` - the audience value of the token. This ensures that, for example, a workload identity token intended for AWS can’t be used to authenticate to Vault. +- `sub` - the subject value, which includes the organization and workspace performing the run. If you don’t match against at least the organization name, any organization or workspace on HCP Terraform will be able to access your cloud resources! + +You can match on as many claims as you want, depending on your cloud platform. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/health.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/health.mdx new file mode 100644 index 0000000000..21c209b819 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/health.mdx @@ -0,0 +1,245 @@ +--- +page_title: Health assessments in Terraform Enterprise +description: >- + Learn how Terraform Enterprise can continuously monitor workspaces to assess + whether their real infrastructure matches the requirements defined in your + Terraform configuration. +source: terraform-docs-common +--- + +# Health + +HCP Terraform can perform automatic health assessments in a workspace to assess whether its real infrastructure matches the requirements defined in its Terraform configuration. Health assessments include the following types of evaluations: + +- [Drift detection](#drift-detection) determines whether your real-world infrastructure matches your Terraform configuration. +- [Continuous validation](#continuous-validation) determines whether custom conditions in the workspace’s configuration continue to pass after Terraform provisions the infrastructure. + +When you enable health assessments, HCP Terraform periodically runs health assessments for your workspace. Refer to [Health Assessment Scheduling](#health-assessment-scheduling) for details. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/health-assessments.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +## Permissions + +Working with health assessments requires the following permissions: + +- To view health status for a workspace, you need read access to that workspace. +- To change organization health settings, you must be an [organization owner](/terraform/enterprise/users-teams-organizations/permissions#organization-owners). +- To change a workspace’s health settings, you must be an [administrator for that workspace](/terraform/enterprise/users-teams-organizations/permissions#workspace-admins). + <!-- BEGIN: TFC:only name:health-assessments --> +- To trigger [on-demand health assessments](/terraform/enterprise/workspaces/health#on-demand-assessments) for a workspace, you must be an [administrator for that workspace](/terraform/enterprise/users-teams-organizations/permissions#workspace-admins). + <!-- END: TFC:only name:health-assessments --> + +## Workspace requirements + +Workspaces require the following settings to receive health assessments: + +- Terraform version 0.15.4+ for drift detection only +- Terraform version 1.3.0+ for drift detection and continuous validation +- [Remote execution mode](/terraform/enterprise/workspaces/settings#execution-mode) or [Agent execution mode](/terraform/cloud-docs/agents/agent-pools#configure-workspaces-to-use-the-agent) for Terraform runs + +The latest Terraform run in the workspace must have been successful. If the most recent run ended in an errored, canceled, or discarded state, HCP Terraform pauses health assessments until there is a successfully applied run. + +The workspace must also have at least one run in which Terraform successfully applies a configuration. HCP Terraform does not perform health assessments in workspaces with no real-world infrastructure. + +## Enable health assessments + +You can enforce health assessments across all eligible workspaces in an organization within the [organization settings](/terraform/enterprise/users-teams-organizations/organizations#health). Enforcing health assessments at an organization-level overrides workspace-level settings. You can only enable health assessments within a specific workspace when HCP Terraform is not enforcing health assessments at the organization level. + +To enable health assessments within a workspace: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to enable health assessments on. +2. Verify that your workspace satisfies the [requirements](#workspace-requirements). +3. Go to the workspace and click **Settings**, then click **Health**. +4. Select **Enable** under **Health Assessments**. +5. Click **Save settings**. + +## Health assessment scheduling + +When you enable health assessments for a workspace, HCP Terraform runs the first health assessment based on whether there are active Terraform runs for the workspace: + +- **No active runs:** A few minutes after you enable the feature. +- **Active speculative plan:** A few minutes after that plan is complete. +- **Other active runs:** During the next assessment period. + +After the first health assessment, HCP Terraform starts a new health assessment during the next assessment period if there are no active runs in the workspace. Health assessments may take longer to complete when you enable health assessments in many workspaces at once or your workspace contains a complex configuration with many resources. + +A health assessment never interrupts or interferes with runs. If you start a new run during a health assessment, HCP Terraform cancels the current assessment and runs the next assessment during the next assessment period. This behavior may prevent HCP Terraform from performing health assessments in workspaces with frequent runs. + +HCP Terraform pauses health assessments if the latest run ended in an errored state. This behavior occurs for all run types, including plan-only runs and speculative plans. Once the workspace completes a successful run, HCP Terraform restarts health assessments during the next assessment period. + +Terraform Enterprise administrators can modify their installation's [assessment frequency and number of maximum concurrent assessments](/terraform/enterprise/admin/application/general#health-assessments) from the admin settings console. + +<!-- BEGIN: TFC:only name:health-assessments --> + +### On-demand assessments + +-> **Note:** On-demand assessments are only available in the HCP Terraform user interface. + +If you are an administrator for a workspace and it satisfies all [assessment requirements](/terraform/enterprise/workspaces/health#workspace-requirements), you can trigger a new assessment by clicking **Start health assessment** on the workspace's **Health** page. + +After clicking **Start health assessment**, the workspace displays a message in the bottom lefthand corner of the page to indicate if it successfully triggered a new assessment. The time it takes to complete an assessment can vary based on network latency and the number of resources managed by the workspace. + +You cannot trigger another assessment while one is in progress. An on-demand assessment resets the scheduling for automated assessments, so HCP Terraform waits to run the next assessment until the next scheduled period. + +<!-- END: TFC:only name:health-assessments --> + +### Concurrency + +If you enable health assessments on multiple workspaces, assessments may run concurrently. Health assessments do not affect your concurrency limit. HCP Terraform also monitors and controls health assessment concurrency to avoid issues for large-scale deployments with thousands of workspaces. However, HCP Terraform performs health assessments in batches, so health assessments may take longer to complete when you enable them in a large number of workspaces. + +### Notifications + +HCP Terraform sends [notifications](/terraform/enterprise/workspaces/settings/notifications) about health assessment results according to your workspace’s settings. + +## Workspace health status + +On the organization's **Workspaces** page, HCP Terraform displays a **Health warning** status for workspaces with infrastructure drift or failed continuous validation checks. + +On the right of a workspace’s overview page, HCP Terraform displays a **Health** bar that summarizes the results of the last health assessment. + +- The **Drift** summary shows the total number of resources in the configuration and the number of resources that have drifted. +- The **Checks** summary shows the number of passed, failed, and unknown statuses for objects with continuous validation checks. + +<!-- BEGIN: TFC:only name:health-in-explorer --> + +### View workspace health in explorer + +The [Explorer page](/terraform/enterprise/workspaces/explorer) presents a condensed overview of the health status of the workspaces within your organization. You can see the following information: + +- Workspaces that are monitoring workspace health +- Status of any configured continuous validation checks +- Count of drifted resources for each workspace + +For additional details on the data available for reporting, refer to the [Explorer](/terraform/enterprise/workspaces/explorer) documentation. + +![Viewing Workspace Health in Explorer](/img/docs/tfc-explorer-health.png) + +<!-- END: TFC:only name:health-in-explorer --> + +## Drift detection + +Drift detection helps you identify situations where your actual infrastructure no longer matches the configuration defined in Terraform. This deviation is known as _configuration drift_. Configuration drift occurs when changes are made outside Terraform's regular process, leading to inconsistencies between the remote objects and your configured infrastructure. + +For example, a teammate could create configuration drift by directly updating a storage bucket's settings with conflicting configuration settings using the cloud provider's console. Drift detection could detect these differences and recommend steps to address and rectify the discrepancies. + +Configuration drift differs from state drift. Drift detection does not detect state drift. + +Configuration drift happens when external changes affecting remote objects invalidate your infrastructure configuration. State drift occurs when external changes affecting remote objects _do not_ invalidate your infrastructure configuration. Refer to [Refresh-Only Mode](/terraform/enterprise/run/modes-and-options#refresh-only-mode) to learn more about remediating state drift. + +### View workspace drift + +To view the drift detection results from the latest health assessment, go to the workspace and click **Health > Drift**. If there is configuration drift, HCP Terraform proposes the necessary changes to bring the infrastructure back in sync with its configuration. + +### Resolve drift + +You can use one of the following approaches to correct configuration drift: + +- **Overwrite drift**: If you do not want the drift's changes, queue a new plan and apply the changes to revert your real-world infrastructure to match your Terraform configuration. +- **Update Terraform configuration:** If you want the drift's changes, modify your Terraform configuration to include the changes and push a new configuration version. This prevents Terraform from reverting the drift during the next apply. Refer to the [Manage Resource Drift](/terraform/tutorials/state/resource-drift) tutorial for a detailed example. + +## Continuous validation + +Continuous validation regularly verifies whether your configuration’s custom assertions continue to pass, validating your infrastructure. For example, you can monitor whether your website returns an expected status code, or whether an API gateway certificate is valid. Identifying failed assertions helps you resolve the failure and prevent errors during your next time Terraform operation. + +Continuous validation evaluates preconditions, postconditions, and check blocks as part of an assessment, but we recommend using [check blocks](/terraform/language/checks) for post-apply monitoring. Use check blocks to create custom rules to validate your infrastructure's resources, data sources, and outputs. + +### Preventing false positives + +Health assessments create a speculative plan to access the current state of your infrastructure. Terraform evaluates any check blocks in your configuration as the last step of creating the speculative plan. If your configuration relies on data sources and the values queried by a data source change between the time of your last run and the assessment, the speculative plan will include those changes. HCP Terraform will not modify your infrastructure as part of an assessment, but it can use those updated values to evaluate checks. This may lead to false positive results for alerts since your infrastructure did not yet change. + +To ensure your checks evaluate the current state of your configuration instead of against a possible future change, use nested data sources that query your actual resource configuration, rather than a computed latest value. Refer to the [AMI image scenario](#asserting-up-to-date-amis-for-compute-instances) below for an example. + +### Example use cases + +Review the provider documentation for `check` block examples with [AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/continuous-validation-examples), [Azure](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/tfc-check-blocks), and [GCP](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/google-continuous-validation). + +#### Monitoring the health of a provisioned website + +The following example uses the [HTTP](https://registry.terraform.io/providers/hashicorp/http/latest/docs) Terraform provider and a [scoped data source](/terraform/language/checks#scoped-data-sources) within a [`check` block](/terraform/language/checks) to assert the Terraform website returns a `200` status code, indicating it is healthy. + +```hcl +check "health_check" { + data "http" "terraform_io" { + url = "https://www.terraform.io" + } + + assert { + condition = data.http.terraform_io.status_code == 200 + error_message = "${data.http.terraform_io.url} returned an unhealthy status code" + } +} +``` + +Continuous Validation alerts you if the website returns any status code besides `200` while Terraform evaluates this assertion. You can also find failures in your workspace's [Continuous Validation Results](#view-continuous-validation-results) page. You can configure continuous validation alerts in your workspace's [notification settings](/terraform/enterprise/workspaces/settings/notifications). + +#### Monitoring certificate expiration + +[Vault](https://www.vaultproject.io/) lets you secure, store, and tightly control access to tokens, passwords, certificates, encryption keys, and other sensitive data. The following example uses a `check` block to monitor for the expiration of a Vault certificate. + +```hcl +resource "vault_pki_secret_backend_cert" "app" { + backend = vault_mount.intermediate.path + name = vault_pki_secret_backend_role.test.name + common_name = "app.my.domain" +} + +check "certificate_valid" { + assert { + condition = !vault_pki_secret_backend_cert.app.renew_pending + error_message = "Vault cert is ready to renew." + } +} +``` + +#### Asserting up-to-date AMIs for compute instances + +[HCP Packer](/hcp/docs/packer) stores metadata about your [Packer](https://www.packer.io/) images. The following example check fails when there is a newer AMI version available. + +```hcl +data "hcp_packer_artifact" "hashiapp_image" { + bucket_name = "hashiapp" + channel_name = "latest" + platform = "aws" + region = "us-west-2" +} + +resource "aws_instance" "hashiapp" { + ami = data.hcp_packer_artifact.hashiapp_image.external_identifier + instance_type = var.instance_type + associate_public_ip_address = true + subnet_id = aws_subnet.hashiapp.id + vpc_security_group_ids = [aws_security_group.hashiapp.id] + key_name = aws_key_pair.generated_key.key_name + + tags = { + Name = "hashiapp" + } +} + +check "ami_version_check" { + data "aws_instance" "hashiapp_current" { + instance_tags = { + Name = "hashiapp" + } + } + + assert { + condition = aws_instance.hashiapp.ami == data.hcp_packer_artifact.hashiapp_image.external_identifier + error_message = "Must use the latest available AMI, ${data.hcp_packer_artifact.hashiapp_image.external_identifier}." + } +} +``` + +### View continuous validation results + +To view the continuous validation results from the latest health assessment, go to the workspace and click **Health > Continuous validation**. + +The page shows all of the resources, outputs, and data sources with custom assertions that HCP Terraform evaluated. Next to each object, HCP Terraform reports whether the assertion passed or failed. If one or more assertions fail, HCP Terraform displays the error messages for each assertion. + +The health assessment page displays each assertion by its [named value](/terraform/language/expressions/references). A `check` block's named value combines the prefix `check` with its configuration name. + +If your configuration contains multiple [preconditions and postconditions](/terraform/language/expressions/custom-conditions#preconditions-and-postconditions) within a single resource, output, or data source, HCP Terraform will not show the results of individual conditions unless they fail. If all custom conditions on the object pass, HCP Terraform reports that the entire check passed. The assessment results will display the results of any precondition and postconditions alongside the results of any assertions from `check` blocks, identified by the named values of their parent block. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/index.mdx new file mode 100644 index 0000000000..2c2f763bec --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/index.mdx @@ -0,0 +1,100 @@ +--- +page_title: Terraform Enterprise workspaces +description: >- + A workspace is a group of infrastructure resources managed by Terraform + Enterprise. Learn what workspaces contain, how they perform Terraform runs, + and how to create and organize them. +source: terraform-docs-common +--- + +# Workspaces + +This topic provides an overview of the workspaces resource in HCP Terraform and Terraform Enterprise. A workspace is a group of infrastructure resources managed by Terraform. + +## Introduction + +Working with Terraform involves managing collections of infrastructure resources, and most organizations manage many different collections. + +When run locally, Terraform manages each collection of infrastructure with a persistent working directory, which contains a configuration, state data, and variables. Since Terraform CLI uses content from the directory it runs in, you can organize infrastructure resources into meaningful groups by keeping their configurations in separate directories. + +HCP Terraform manages infrastructure collections with workspaces instead of directories. A workspace contains everything Terraform needs to manage a given collection of infrastructure, and separate workspaces function like completely separate working directories. + +> **Hands-on:** Try the [Create a Workspace](/terraform/tutorials/cloud-get-started/cloud-workspace-create) tutorial. + +## Workspace Contents + +HCP Terraform workspaces and local working directories serve the same purpose, but they store their data differently: + +| Component | Local Terraform | HCP Terraform | +| ----------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------------- | +| Terraform configuration | On disk | In linked version control repository, or periodically uploaded via API/CLI | +| Variable values | As `.tfvars` files, as CLI arguments, or in shell environment | In workspace | +| State | On disk or in remote backend | In workspace | +| Credentials and secrets | In shell environment or entered at prompts | In workspace, stored as sensitive variables | + +In addition to the basic Terraform content, HCP Terraform keeps some additional data for each workspace: + +- **State versions:** Each workspace retains backups of its previous state files. Although only the current state is necessary for managing resources, the state history can be useful for tracking changes over time or recovering from problems. Refer to [Terraform State in HCP Terraform](/terraform/enterprise/workspaces/state) for more details. + +- **Run history:** When HCP Terraform manages a workspace's Terraform runs, it retains a record of all run activity, including summaries, logs, a reference to the changes that caused the run, and user comments. Refer to [Viewing and Managing Runs](/terraform/enterprise/run/manage) for more details. + +<!-- BEGIN: TFC:only name:managed-resources --> + +The top of each workspace shows a resource count, which reflects the number of resources recorded in the workspace’s state file. This includes both managed [resources](/terraform/language/resources/syntax) and [data sources](/terraform/language/data-sources). + +<!-- END: TFC:only name:managed-resources --> + +## Terraform Runs + +For workspaces with remote operations enabled (the default), HCP Terraform performs Terraform runs on its own disposable virtual machines, using that workspace's configuration, variables, and state. + +Refer to [Terraform Runs and Remote Operations](/terraform/enterprise/run/remote-operations) for more details. + +## HCP Terraform vs. Terraform CLI Workspaces + +Both HCP Terraform and Terraform CLI have features called workspaces, but they function differently. + +- HCP Terraform workspaces are required. They represent all of the collections of infrastructure in an organization. They are also a major component of role-based access in HCP Terraform. You can grant individual users and user groups permissions for one or more workspaces that dictate whether they can manage variables, perform runs, etc. You cannot manage resources in HCP Terraform without creating at least one workspace. + +- Terraform CLI workspaces are associated with a specific working directory and isolate multiple state files in the same working directory, letting you manage multiple groups of resources with a single configuration. The Terraform CLI does not require you to create CLI workspaces. Refer to [Workspaces](/terraform/language/state/workspaces) in the Terraform Language documentation for more details. + +## Planning and Organizing Workspaces + +We recommend that organizations break down large monolithic Terraform configurations into smaller ones, then assign each one to its own workspace and delegate permissions and responsibilities for them. HCP Terraform can manage monolithic configurations just fine, but managing infrastructure as smaller components is the best way to take full advantage of HCP Terraform's governance and delegation features. + +For example, the code that manages your production environment's infrastructure could be split into a networking configuration, the main application's configuration, and a monitoring configuration. After splitting the code, you would create "networking-prod", "app1-prod", "monitoring-prod" workspaces, and assign separate teams to manage them. + +Much like splitting monolithic applications into smaller microservices, this enables teams to make changes in parallel. In addition, it makes it easier to re-use configurations to manage other environments of infrastructure ("app1-dev," etc.). + +In Terraform Enterprise, administrators can use [Admin Settings](/terraform/enterprise/api-docs/admin/settings) to set the maximum number of workspaces for any single organization. You can also set a workspaces limit with the [tfe-terraform-provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/organization#workspace_limit). + +## Organize Workspaces with Projects + +Projects let you organize your workspaces into groups. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/project-workspaces.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Refer to [Organize Workspaces with Projects](/terraform/enterprise/projects/manage) for more details. + +## Creating Workspaces + +You can create workspaces through the [HCP Terraform UI](/terraform/enterprise/workspaces/create), the [Workspaces API](/terraform/enterprise/api-docs/workspaces), or the [HCP Terraform CLI integration](/terraform/cli/cloud). + +## Workspace Health + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/health-assessments.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +HCP Terraform can perform automatic health assessments in a workspace to assess whether its real infrastructure matches the requirements defined in its Terraform configuration. Health assessments include the following types of evaluations: + +- Drift detection determines whether your real-world infrastructure matches your Terraform configuration. +- Continuous validation determines whether custom conditions in the workspace’s configuration continue to pass after Terraform provisions the infrastructure. + +You can enforce health assessments for all eligible workspaces or let each workspace opt in to health assessments through workspace settings. Refer to [Health](/terraform/enterprise/workspaces/health) in the workspaces documentation for more details. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/json-filtering.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/json-filtering.mdx new file mode 100644 index 0000000000..c70eb74e3f --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/json-filtering.mdx @@ -0,0 +1,117 @@ +--- +page_title: JSON data filtering in Terraform Enterprise +description: >- + Learn how to filter and create custom datasets on pages that display JSON data + in Terraform Enterprise. +source: terraform-docs-common +--- + +# JSON data filtering + +Certain pages where JSON data is displayed, such as the [state +viewer](/terraform/enterprise/workspaces/state) and [policy check JSON data +viewer](/terraform/enterprise/policy-enforcement/sentinel/json), allow you to filter the results. This +enables you to see just the data you need, and even create entirely new datasets +to see data in the way you want to see it! + +![entering a json filter](/img/docs/json-viewer-intro.png) + +-> **NOTE:** _Filtering_ the data in the JSON viewer is separate from +_searching_ it. To search, press Control-F (or Command-F on MacOS). You can +search and apply a filter at the same time. + +## Entering a Filter + +Filters are entered by putting the filter in the aptly named **filter** box in +the JSON viewer. After entering the filter, pressing **Apply** or the enter key +on your keyboard will apply the filter. The filtered results, if any, are +displayed in result box. Clearing the filter will restore the original JSON +data. + +![entering a json filter](/img/docs/sentinel-json-enter-filter.png) + +## Filter Language + +The JSON filter language is a small subset of the +[jq](https://stedolan.github.io/jq/) JSON filtering language. Selectors, +literals, indexes, slices, iterators, and pipes are supported, as are also array +and object construction. At this time, parentheses, and more complex operations +such as mathematical operators, conditionals, and functions are not supported. + +Below is a quick reference of some of the more basic functions to get you +started. + +### Selectors + +Selectors allow you to pick an index out of a JSON object, and are written as +`.KEY.SUBKEY`. So, as an example, given an object of +`{"foo": {"bar": "baz"}}`, and the filter `.foo.bar`, the result would be +displayed as `"baz"`. + +A single dot (`.`) without anything else always denotes the current value, +unaltered. + +### Indexes + +Indexes can be used to fetch array elements, or select non-alphanumeric object +fields. They are written as `[0]` or `["foo-bar"]`, depending on the purpose. + +Given an object of `{"foo-bar": ["baz", "qux"]}` and the filter of +`.["foo-bar"][0]`, the result would be displayed as `"baz"`. + +### Slices + +Arrays can be sliced to get a subset an array. The syntax is `[LOW:HIGH]`. + +Given an array of `[0, 1, 2, 3, 4]` and the filter of +`.[1:3]`, the result would be displayed as `[1, 2]`. This also illustrates that +the result of the slice operation is always of length HIGH-LOW. + +Slices can also be applied to strings, in which a substring is returned with the +same rules applied, with the first character of the string being index 0. + +### Iterators + +Iterators can iterate over arrays and objects. The syntax is `[]`. + +Iterators iterate over the _values_ of an object only. So given a object of +`{"foo": 1, "bar": 2}`, the filter `.[]` would yield an iteration of `1, 2`. + +Note that iteration results are not necessarily always arrays. Iterators are +handled in a special fashion when dealing with pipes and object creators (see +below). + +### Array Construction + +Wrapping an expression in brackets (`[ ... ]`) creates an array with the +sub-expressions inside the array. The results are always concatenated. + +For example, for an object of `{"foo": [1, 2], "bar": [3, 4]}`, the construction +expressions `[.foo[], .bar[]]` and `[.[][]]`, are the same, producing the +resulting array `[1, 2, 3, 4]`. + +### Object Construction + +Wrapping an expression in curly braces `{KEY: EXPRESSION, ...}` creates an +object. + +Iterators work uniquely with object construction in that an object is +constructed for each _iteration_ that the iterator produces. + +As a basic example, Consider an array `[1, 2, 3]`. While the expression +`{foo: .}` will produce `{"foo": [1, 2, 3]}`, adding an iterator to the +expression so that it reads `{foo: .[]}` will produce 3 individual objects: +`{"foo": 1}`, `{"foo": 2}`, and `{"foo": 3}`. + +### Pipes + +Pipes allow the results of one expression to be fed into another. This can be +used to re-write expressions to help reduce complexity. + +Iterators work with pipes in a fashion similar to object construction, where the +expression on the right-hand side of the pipe is evaluated once for every +iteration. + +As an example, for the object `{"foo": {"a": 1}, "bar": {"a": 2}}`, both the +expression `{z: .[].a}` and `.[] | {z: .a}` produce the same result: `{"z": 1}` +and `{"z": 2}`. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/access.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/access.mdx new file mode 100644 index 0000000000..abad3a8b0e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/access.mdx @@ -0,0 +1,54 @@ +--- +page_title: Manage access to workspaces in Terraform Enterprise +description: >- + Learn how to manage access to workspaces by adding teams and configuring their + permissions. +source: terraform-docs-common +--- + +# Manage access to workspaces + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/team-management.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +HCP Terraform workspaces can only be accessed by users with the correct permissions. You can manage permissions for a workspace on a per-team basis. + +Teams with [admin access](/terraform/enterprise/users-teams-organizations/permissions) on a workspace can manage permissions for other teams on that workspace. Since newly created workspaces don't have any team permissions configured, the initial setup of a workspace's permissions requires the owners team or a team with permission to manage workspaces. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **API:** See the [Team Access APIs](/terraform/enterprise/api-docs/team-access). <br/> +**Terraform:** See the `tfe` provider's [`tfe_team_access`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/team_access) resource. + +## Background + +HCP Terraform manages users' permissions to workspaces with teams. + +- [Workspace-level permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions) can be granted to an individual team on a particular workspace. These permissions can be managed on the workspace by anyone with admin access to the workspace. +- In addition, some [organization-level permissions](/terraform/enterprise/users-teams-organizations/permissions#organization-permissions) can be granted to a team which apply to every workspace in the organization. For example, the + [manage all workspaces](/terraform/enterprise/users-teams-organizations/permissions#manage-all-workspaces) and [manage all projects](/terraform/enterprise/users-teams-organizations/permissions#manage-all-projects) permissions grant the workspace-level admin permission to every workspace in the organization. Organization-level permissions can only be managed by organization owners. + +## Managing Workspace Access Permissions + +When a user creates a workspace, the following teams can access that workspace with full admin permissions: + +- [the owners team](/terraform/enterprise/users-teams-organizations/teams#the-owners-team) +- teams with "Manage all workspaces" and/or “Manage all projects” [organization permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) +- teams with “Project Admin” project permissions + +You cannot override these teams' permissions through the workspace's specific permissions. + +To manage a team's access to a workspace, select "Team Access" from the workspace's "Settings" menu. + +This screen displays all teams granted workspace-level permissions to the workspace. To add a team, select "Add team and permissions". + +HCP Terraform displays the teams you can grant workspace access to. Select a team to continue and configure that team's permissions. + +There are four [fixed permissions sets](/terraform/enterprise/users-teams-organizations/permissions#fixed-permission-sets) available for basic usage: Read, Plan, Write, and Admin. + +To enable finer-grained selection of non-admin permissions, select "Customize permissions for this team". On this screen, you can select specific permissions to grant the team for the workspace. + +For more information on permissions, see [the documentation on Workspace Permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-permissions). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/deletion.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/deletion.mdx new file mode 100644 index 0000000000..4daa48e161 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/deletion.mdx @@ -0,0 +1,125 @@ +--- +page_title: Destroy infrastructure resources and delete workspaces in Terraform Enterprise +description: >- + Learn how to clean up resources by destroying a workspace's infrastructure and + deleting a workspace in Terraform Enterprise. +source: terraform-docs-common +--- + +# Destroy infrastructure resources and delete workspaces + +HCP Terraform workspaces have two primary delete actions: + +- [Destroying infrastructure](#destroy-infrastructure) deletes resources managed by the HCP Terraform workspace by triggering a destroy run. +- [Deleting a workspace](#delete-workspaces) deletes the workspace itself without triggering a destroy run. + +In general, you should perform both actions in the above order when destroying a workspace to ensure resource cleanup for all of a workspace's managed infrastructure. + +## Destroy Infrastructure + +Destroy plans delete the infrastructure managed by a workspace. We recommend destroying the infrastructure managed by a workspace _before_ deleting the workspace itself. Otherwise, the unmanaged infrastructure resources will continue to exist but will become unmanaged, and you must go into your infrastructure providers to delete the resources manually. + +Before queuing a destroy plan, enable the **Allow destroy plans** toggle setting on this page. + +### Automatically Destroy + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/ephemeral-workspaces.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +Configuring automatic infrastructure destruction for a workspace requires [admin permissions](/terraform/enterprise/users-teams-organizations/permissions#workspace-admins) for that workspace. + +There are two main ways to automatically destroy a workspace's resources: + +- Schedule a run to destroy all resources in a workspace at a specific date and time. +- Configure HCP Terraform to destroy a workspace's infrastructure after a period of workspace inactivity. + +Workspaces can inherit auto-destroy settings from their project. Refer to [managing projects](/terraform/enterprise/projects/manage#automatically-destroy-inactive-workspaces) for more information. You can configure an individual workspace's auto-destroy settings to override the project's configuration. + +You can reduce your spending on infrastructure by automatically destroying temporary resources like development environments. + +After HCP Terraform performs an auto-destroy run, it unsets the `auto-destroy-at` field on the workspace. If you continue using the workspace, you can schedule another future auto-destroy run to remove any new resources. + +!> **Note:** Automatic destroy plans _do not_ prompt you for apply approval in the HCP Terraform user interface. We recommend only using this setting for development environments. + +You can schedule an auto-destroy run using the HCP Terraform web user interface, or the [workspace API](/terraform/enterprise/api-docs/workspaces). + +You can also schedule [notifications](/terraform/enterprise/workspaces/settings/notifications) to alert you 12 and 24 hours before an auto-destroy run, and to report auto-destroy run results. + +#### Destroy at a specific day and time + +To schedule an auto-destroy run at a specific time in HCP Terraform: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to destroy. +2. Choose **Settings** from the sidebar, then **Destruction and Deletion**. +3. Under **Automatically destroy**, click **Set up auto-destroy**. +4. Enter the desired date and time. HCP Terraform defaults to your local time zone for scheduling and displays how long until the scheduled operation. +5. Click **Confirm auto-destroy**. + +To cancel a scheduled auto-destroy run in HCP Terraform: + +1. Navigate to the workspace's **Settings** > **Destruction and Deletion** page. +2. Under **Automatically destroy**, click **Edit** next to your scheduled run's details. +3. Click **Remove**. + +#### Destroy if a workspace is inactive + +You can configure HCP Terraform to automatically destroy a workspace's infrastructure after a period of inactivity. +A workspace is _inactive_ if the workspace's state has not changed within your designated time period. + +!> **Caution:** As opposed to configuring an auto-destroy run for a specific date and time, this setting _persists_ after queueing auto-destroy runs. + +If you configure a workspace to auto-destroy its infrastructure when inactive, any run that updates Terraform state further delays the scheduled auto-destroy time by the length of your designated timeframe. + +To schedule an auto-destroy run after a period of workspace inactivity: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to destroy. +2. Choose **Settings** from the sidebar, then **Destruction and Deletion**. +3. Under **Automatically destroy**, click **Set up auto-destroy**. +4. Click the **Destroy if inactive** toggle. +5. Select or customize a desired timeframe of inactivity. +6. Click **Confirm auto-destroy**. + +When configured for the first time, the auto-destroy duration setting displays the scheduled date and time that HCP Terraform will perform the auto-destroy run. +Subsequent auto-destroy runs and Terraform runs that update state both update the next scheduled auto-destroy date. + +After HCP Terraform completes a manual or automatic destroy run, it waits until further state updates to schedule a new auto-destroy run. + +To remove your workspace's auto-destroy run: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to disable the auto-destroy run for. +2. Choose **Settings** from the sidebar, then **Destruction and Deletion**. +3. Under **Auto-destroy settings**, click **Edit** to change the auto-destroy settings. +4. Click **Remove**. + +When you move a workspace to a different project, it inherits the auto-destroy settings from the new project. If you configured the workspace to override the previous project's auto-destroy settings, it retains the override configuration in the new project. + +## Delete Workspace + +Terraform does not automatically destroy managed infrastructure when you delete a workspace. + +After you delete the workspace and its state file, Terraform can _no longer track or manage_ that infrastructure. You must manually delete or [import](/terraform/cli/commands/import) any remaining resources into another Terraform workspace. + +By default, [workspace administrators](/terraform/enterprise/users-teams-organizations/permissions#workspace-admins) can only delete unlocked workspaces that are not managing any infrastructure. Organization owners can force delete a workspace to override these protections. Organization owners can also configure the [organization's settings](/terraform/enterprise/users-teams-organizations/organizations#general) to let workspace administrators force delete their own workspaces. + +## Data Retention Policies + +<EnterpriseAlert> +Data retention policies are exclusive to Terraform Enterprise, and not available in HCP Terraform. <a href="https://developer.hashicorp.com/terraform/enterprise">Learn more about Terraform Enterprise</a>. +</EnterpriseAlert> + +Define configurable data retention policies for workspaces to help reduce object storage consumption. You can define a policy that allows Terraform to _soft delete_ the backing data associated with configuration versions and state versions. Soft deleting refers to marking a data object for garbage collection so that Terraform can automatically delete the object after a set number of days. + +Once an object is soft deleted, any attempts to read the object will fail. Until the garbage collection grace period elapses, you can still restore an object using the APIs described in the [configuration version documentation](/terraform/enterprise/api-docs/configuration-versions) and [state version documentation](/terraform/enterprise/api-docs/state-versions). After the garbage collection grace period elapses, Terraform permanently deletes the archivist storage. + +The [organization policy](/terraform/enterprise/users-teams-organizations/organizations#destruction-and-deletion) is the default policy applied to workspaces, but members of individual workspaces can override the policy for their workspaces. + +The workspace policy always overrides the organization policy. A workspace admin can set or override the following data retention policies: + +- **Organization default policy** +- **Do not auto-delete** +- **Auto-delete data** + +Setting the data retention policy to **Organization default policy** disables the other data retention policy settings. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/index.mdx new file mode 100644 index 0000000000..0dc4c0ab9c --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/index.mdx @@ -0,0 +1,213 @@ +--- +page_title: Workspaces settings in Terraform Enterprise +description: >- + Learn how to configure workspace settings for notifications, permissions, + health, locking, policies, run triggers, SSH keys, team access, version + control, and deletion. +source: terraform-docs-common +--- + +# Workspace settings + +You can change a workspace’s settings after creation. Workspace settings are separated into several pages. + +- [General](#general): Settings that determine how the workspace functions, including its name, description, associated project, Terraform version, and execution mode. +- [Health](/terraform/enterprise/workspaces/health): Settings that let you configure health assessments, including drift detection and continuous validation. +- [Locking](#locking): Locking a workspace temporarily prevents new plans and applies. +- [Notifications](#notifications): Settings that let you configure run notifications. +- [Policies](#policies): Settings that let you toggle between Sentinel policy evaluation experiences. +- [Run Triggers](#run-triggers): Settings that let you configure run triggers. Run triggers allow runs to queue automatically in your workspace when runs in other workspaces are successful. +- [SSH Key](#ssh-key): Set a private SSH key for downloading Terraform modules from Git-based module sources. +- [Team Access](#team-access): Settings that let you manage which teams can view the workspace and use it to provision infrastructure. +- [Version Control](#version-control): Manage the workspace’s VCS integration. +- [Destruction and Deletion](#destruction-and-deletion): Remove a workspace and the infrastructure it manages. + +Changing settings requires admin access to the relevant workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **API:** See the [Update a Workspace endpoint](/terraform/enterprise/api-docs/workspaces#update-a-workspace) (`PATCH /organizations/:organization_name/workspaces/:name`). + +## General + +General settings let you change a workspace's name, description, the project it belongs to, and details about how Terraform runs operate. After changing these settings, click **Save settings** at the bottom of the page. + +### ID + +Every workspace has a unique ID that you cannot change. You may need to reference the workspace's ID when using the [HCP Terraform API](/terraform/enterprise/api-docs). + +Click the icon beside the ID to copy it to your clipboard. + +### Name + +The display name of the workspace. + +!> **Warning:** Some API calls refer to a workspace by its name, so changing the name may break existing integrations. + +### Project + +The [project](/terraform/enterprise/projects) that this workspace belongs to. Changing the workspace's project can change the read and write permissions for the workspace and which users can access it. + +To move a workspace, you must have the "Manage all Projects" organization permission or explicit team admin privileges on both the source and destination projects. Remember that moving a workspace to another project may affect user visibility for that project's workspaces. Refer to [Project Permissions](/terraform/enterprise/users-teams-organizations/permissions#project-permissions) for details on workspace access. + +### Description (Optional) + +Enter a brief description of the workspace's purpose or types of infrastructure. + +### Execution Mode + +Whether to use HCP Terraform as the Terraform execution platform for this workspace. + +By default, HCP Terraform uses an organization's [default execution mode](/terraform/enterprise/users-teams-organizations/organizations#organization-settings) to choose the execution platform for a workspace. Alternatively, you can instead choose a custom execution mode for a workspace. + +Specifying the "Remote" execution mode instructs HCP Terraform to perform Terraform runs on its own disposable virtual machines. This provides a consistent and reliable run environment and enables advanced features like Sentinel policy enforcement, cost estimation, notifications, version control integration, and more. + +To disable remote execution for a workspace, change its execution mode to "Local". This mode lets you perform Terraform runs locally with the [CLI-driven run workflow](/terraform/enterprise/run/cli). The workspace will store state, which Terraform can access with the [CLI integration](/terraform/cli/cloud). HCP Terraform does not evaluate workspace variables or variable sets in local execution mode. + +If you instead need to allow HCP Terraform to communicate with isolated, private, or on-premises infrastructure, consider using [HCP Terraform agents](/terraform/cloud-docs/agents). By deploying a lightweight agent, you can establish a simple connection between your environment and HCP Terraform. + +Changing your workspace's execution mode after a run has already been planned will cause the run to error when it is applied. + +To minimize the number of runs that error when changing your workspace's execution mode, you should: + +1. Disable [auto-apply](/terraform/enterprise/workspaces/settings#auto-apply) if you have it enabled. +2. Complete any runs that are no longer in the [pending stage](/terraform/enterprise/run/states#the-pending-stage). +3. [Lock](/terraform/enterprise/workspaces/settings#locking) your workspace to prevent any new runs. +4. Change the execution mode. +5. Enable [auto-apply](/terraform/enterprise/workspaces/settings#auto-apply), if you had it enabled before changing your execution mode. +6. [Unlock](/terraform/enterprise/workspaces/settings#locking) your workspace. + +<a id="apply-method"></a> +<a id="auto-apply-and-manual-apply"></a> + +### Auto-apply + +Whether or not HCP Terraform should automatically apply a successful Terraform plan. If you choose manual apply, an operator must confirm a successful plan and choose to apply it. + +The main auto-apply setting affects runs created by the HCP Terraform user interface, API, and version control webhooks. HCP Terraform also has a separate setting for runs created by [run triggers](/terraform/enterprise/workspaces/settings/run-triggers) from another workspace. + +Auto-apply has the following exceptions: + +- Runs created by the terraform CLI must use the `-auto-approve` argument flag to control auto-apply of a particular run. +- Plans queued by users without permission to apply runs for the workspace must be approved by a user who does have permission. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Terraform Version + +The Terraform version to use for all operations in the workspace. The default value is whichever release was current when HCP Terraform created the workspace. You can also update a workspace's Terraform version to an exact version or a valid [version constraint](/terraform/language/expressions/version-constraints). + +> **Hands-on:** Try the [Upgrade Terraform Version in HCP Terraform](/terraform/tutorials/cloud/cloud-versions) tutorial. + +-> **API:** You can specify a Terraform version when you [create a workspace](/terraform/enterprise/api-docs/workspaces#create-a-workspace) with the API. + +### Terraform Working Directory + +The directory where Terraform will execute, specified as a relative path from the root of the configuration directory. Defaults to the root of the configuration directory. + +HCP Terraform will change to this directory before starting a Terraform run, and will report an error if the directory does not exist. + +Setting a working directory creates a default filter for automatic run triggering, and sometimes causes CLI-driven runs to upload additional configuration content. + +#### Default Run Trigger Filtering + +In VCS-backed workspaces that specify a working directory, HCP Terraform assumes that only changes within that working directory should trigger a run. You can override this behavior with the [Automatic Run Triggering](/terraform/enterprise/workspaces/settings/vcs#automatic-run-triggering) settings. + +#### Parent Directory Uploads + +If a working directory is configured, HCP Terraform always expects the complete shared configuration directory to be available, since the configuration might use local modules from outside its working directory. + +In [runs triggered by VCS commits](/terraform/enterprise/run/ui), this is automatic. In [CLI-driven runs](/terraform/enterprise/run/cli), Terraform's CLI sometimes uploads additional content: + +- When the local working directory _does not match_ the name of the configured working directory, Terraform assumes it is the root of the configuration directory, and uploads only the local working directory. +- When the local working directory _matches_ the name of the configured working directory, Terraform uploads one or more parents of the local working directory, according to the depth of the configured working directory. (For example, a working directory of `production` is only one level deep, so Terraform would upload the immediate parent directory. `consul/production` is two levels deep, so Terraform would upload the parent and grandparent directories.) + +If you use the working directory setting, always run Terraform from a complete copy of the configuration directory. Moving one subdirectory to a new location can result in unexpected content uploads. + +### Remote State Sharing + +Which other workspaces within the organization can access the state of the workspace during [runs managed by HCP Terraform](/terraform/enterprise/run/remote-operations#remote-operations). The [`terraform_remote_state` data source](/terraform/language/state/remote-state-data) relies on state sharing to access workspace outputs. + +- If "Share state globally" is enabled, all other workspaces within the organization can access this workspace's state during runs. +- If global sharing is turned off, you can specify a list of workspaces within the organization that can access this workspace's state; no other workspaces will be allowed. + + The workspace selector is searchable; if you don't initially see a workspace you're looking for, type part of its name. + +By default, new workspaces in HCP Terraform do not allow other workspaces to access their state. We recommend that you follow the principle of least privilege and only enable state access between workspaces that specifically need information from each other. To configure remote state sharing, a user must have read access for the destination workspace. If a user does not have access to the destination workspace due to scoped project or workspace permissions, they will not have complete visibility into the list of other workspace that can access its state. + +-> **Note:** The default access permissions for new workspaces in HCP Terraform changed in April 2021. Workspaces created before this change default to allowing global access within their organization. These workspaces can be changed to more restrictive access at any time. Terraform Enterprise administrators can choose whether new workspaces on their instances default to global access or selective access. + +### User Interface + +Select the user experience for displaying plan and apply details. + +The default experience is _Structured Run Output_, which displays your plan and apply results in a human-readable format. This includes nodes that you can expand to view details about each resource and any configured output. + +The Console UI experience is the traditional Terraform experience, where live text logging is streamed in real time to the UI. This experience most closely emulates the CLI output. + +~> **Note:** Your workspace must be configured to use a Terraform version of 1.0.5 or higher for the Structured Run Output experience to be fully supported. Workspaces running versions from 0.15.2 may see partial functionality. Workspaces running versions below 0.15.2 will default to the "Console UI" experience regardless of the User Interface setting. + +## Locking + +~> **Important:** Unlike other settings, locks can also be managed by users with permission to lock and unlock the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +If you need to prevent Terraform runs for any reason, you can lock a workspace. This prevents all applies (and many kinds of plans) from proceeding, and affects runs created via UI, CLI, API, and automated systems. To enable runs again, a user must unlock the workspace. + +Two kinds of run operations can ignore workspace locking because they cannot affect resources or state and do not attempt to lock the workspace themselves: + +- Plan-only runs. +- The planning stages of [saved plan runs](/terraform/enterprise/run/modes-and-options.mdx#saved-plans). You can only _apply_ a saved plan if the workspace is unlocked, and applying that plan locks the workspace as usual. Terraform Enterprise does not yet support this workflow. + +Locking a workspace also restricts state uploads. In order to upload state, the workspace must be locked by the user who is uploading state. + +Users with permission to lock and unlock a workspace can't unlock a workspace which was locked by another user. Users with admin access to a workspace can force unlock a workspace even if another user has locked it. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Locks are managed with a single "Lock/Unlock/Force unlock `<WORKSPACE NAME>`" button. HCP Terraform asks for confirmation when unlocking. + +You can also manage the workspace's lock from the **Actions** menu. + +## Notifications + +The "Notifications" page allows HCP Terraform to send webhooks to external services whenever specific run events occur in a workspace. + +See [Run Notifications](/terraform/enterprise/workspaces/settings/notifications) for detailed information about configuring notifications. + +## Policies + +HCP Terraform offers two experiences for Sentinel policy evaluations. On the "Policies" page, you can adjust your **Sentinel Experience** settings to your preferred experience. By default, HCP Terraform enables the newest policy evaluation experience. + +To toggle between the two Sentinel policy evaluation experiences, click the **Enable the new Sentinel policy experience** toggle under the **Sentinel Experience** heading. HCP Terraform persists your changes automatically. If HCP Terraform is performing a run on a different page, you must refresh that page to see changes to your policy evaluation experience. + +## Run Triggers + +The "Run Triggers" page configures connections between a workspace and one or more source workspaces. These connections, called "run triggers", allow runs to queue automatically in a workspace on successful apply of runs in any of the source workspaces. + +See [Run Triggers](/terraform/enterprise/workspaces/settings/run-triggers) for detailed information about configuring run triggers. + +## SSH Key + +If a workspace's configuration uses [Git-based module sources](/terraform/language/modules/sources) to reference Terraform modules in private Git repositories, Terraform needs an SSH key to clone those repositories. The "SSH Key" page lets you choose which key it should use. + +See [Using SSH Keys for Cloning Modules](/terraform/enterprise/workspaces/settings/ssh-keys) for detailed information about this page. + +## Team Access + +The "Team Access" page configures which teams can perform which actions on a workspace. + +See [Managing Access to Workspaces](/terraform/enterprise/workspaces/settings/access) for detailed information. + +## Version Control + +The "Version Control" page configures an optional VCS repository that contains the workspace's Terraform configuration. Version control integration is only relevant for workspaces with [remote execution](#execution-mode) enabled. + +See [VCS Connections](/terraform/enterprise/workspaces/settings/vcs) for detailed information about this page. + +## Destruction and Deletion + +The **Destruction and Deletion** page allows [admin users](/terraform/enterprise/users-teams-organizations/permissions) to delete a workspace's managed infrastructure or delete the workspace itself. + +For details, refer to [Destruction and Deletion](/terraform/enterprise/workspaces/settings/deletion) for detailed information about this page. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/notifications.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/notifications.mdx new file mode 100644 index 0000000000..2c9b97b15e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/notifications.mdx @@ -0,0 +1,130 @@ +--- +page_title: Workspace notifications in Terraform Enterprise +description: >- + Use webhooks to notify external systems about run progress and other events in + Terraform Enterprise. Learn to create and enable workspace notifications. +source: terraform-docs-common +--- + +# Workspace notifications + +HCP Terraform can use webhooks to notify external systems about run progress and other events. Each workspace has its own notification settings and can notify up to 20 destinations. + +-> **Note:** [Speculative plans](/terraform/enterprise/run/modes-and-options#plan-only-speculative-plan) and workspaces configured with `Local` [execution mode](/terraform/enterprise/workspaces/settings#execution-mode) do not support notifications. + +Configuring notifications requires admin access to the workspace. Refer to [Permissions](/terraform/enterprise/users-teams-organizations/permissions) for details. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +-> **API:** Refer to [Notification Configuration APIs](/terraform/enterprise/api-docs/notification-configurations). + +## Viewing and Managing Notification Settings + +To add, edit, or delete notifications for a workspace, go to the workspace and click **Settings > Notifications**. The **Notifications** page appears, showing existing notification configurations. + +## Creating a Notification Configuration + +A notification configuration specifies a destination URL, a payload type, and the events that should generate a notification. To create a notification configuration: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select the workspace you want to configure notifications for. + +2. Click **Settings**, then **Notifications**. + +3. Click **Create a Notification**. The **Create a Notification** form appears. + +4. Configure the notifications: + +- **Destination:** HCP Terraform can deliver either a generic payload or a payload formatted specifically for Slack, Microsoft Teams, or Email. Refer to [Notification Payloads](#notification-payloads) for details. + +- **Name:** A display name for this notification configuration. + +- **Webhook URL** This URL is only available for generic, Slack, and Microsoft Teams webhooks. The webhook URL is the destination for the webhook payload. This URL must accept HTTP or HTTPS `POST` requests and should be able to use the chosen payload type. For details, refer to Slack's documentation on [creating an incoming webhook](https://api.slack.com/messaging/webhooks#create_a_webhook) and Microsoft's documentation on [creating a workflow from a channel in teams](https://support.microsoft.com/en-us/office/creating-a-workflow-from-a-channel-in-teams-242eb8f2-f328-45be-b81f-9817b51a5f0e). + +- **Token** (Optional) This notification is only available for generic webhooks. A token is an arbitrary secret string that HCP Terraform will use to sign its notification webhooks. Refer to [Notification Authenticity][inpage-hmac] for details. You cannot view the token after you save the notification configuration. + +- **Email Recipients** This notification is only available for emails. Select users that should receive notifications. + +- **Workspace Events**: HCP Terraform can send notifications for all events or only for specific events. The following events are available: + + - **Drift**: HCP Terraform detected configuration drift. This notification is only available if you enable [health assessments](/terraform/enterprise/workspaces/health) for the workspace. + - **Check Failure:** HCP Terraform detected one or more failed continuous validation checks. This notification is only available if you enable health assessments for the workspace. + - **Health Assessment Fail**: A health assessment failed. This notification is only available if you enable health assessments for the workspace. Health assessments fail when HCP Terraform cannot perform drift detection, continuous validation, or both. The notification does not specify the cause of the failure, but you can use the [Assessment Result](/terraform/enterprise/api-docs/assessment-results) logs to help diagnose the issue. + - **Auto destroy reminder**: Sends reminders 12 and 24 hours before a scheduled auto destroy run. + - **Auto destroy results**: HCP Terraform performed an auto destroy run in the workspace. Reports both successful and errored runs. + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/health-assessments.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +- **Run Events:** HCP Terraform can send notifications for all events or only for specific events. The following events are available: + - **Created**: A run begins and enters the [Pending stage](/terraform/enterprise/run/states#the-pending-stage). + - **Planning**: A run acquires the lock and starts to execute. + - **Needs Attention**: A plan has changes and Terraform requires user input to continue. This event may include approving the plan or a [policy override](/terraform/enterprise/run/states#the-policy-check-stage). + - **Applying**: A run enters the [Apply stage](/terraform/enterprise/run/states#the-apply-stage), where Terraform makes the infrastructure changes described in the plan. + - **Completed**: A run completed successfully. + - **Errored**: A run terminated early due to error or cancellation. + +4. Click **Create a notification**. + +## Enabling and Verifying a Configuration + +To enable or disable a configuration, toggle the **Enabled/Disabled** switch on its detail page. HCP Terraform will attempt to verify the configuration for generic and slack webhooks by sending a test message, and will enable the notification configuration if the test succeeds. + +For a verification to be successful, the destination must respond with a `2xx` HTTP code. If verification fails, HCP Terraform displays the error message and the configuration will remain disabled. + +For both successful and unsuccessful verifications, click the **Last Response** box to view more information about the verification results. You can also send additional test messages with the **Send a Test** link. + +## Notification Payloads + +### Slack + +Notifications to Slack will contain the following information: + +- The run's workspace (as a link) +- The HCP Terraform username and avatar of the person that created the run +- The run ID (as a link) +- The reason the run was queued (usually a commit message or a custom message) +- The time the run was created +- The event that triggered the notification and the time that event occurred + +### Microsoft Teams + +Notifications to Microsoft Teams contain the following information: + +- The run's workspace (as a link) +- The HCP Terraform username and avatar of the person that created the run +- The run ID +- A link to view the run +- The reason the run was queued (usually a commit message or a custom message) +- The time the run was created +- The event that triggered the notification and the time that event occurred + +### Email + +Email notifications will contain the following information: + +- The run's workspace (as a link) +- The run ID (as a link) +- The event that triggered the notification, and if the run needs to be acted upon or not + +### Generic + +A generic notification will contain information about a run and its state at the time the triggering event occurred. The complete generic notification payload is described in the [API documentation][generic-payload]. + +[generic-payload]: /terraform/enterprise/api-docs/notification-configurations#notification-payload + +Some of the values in the payload can be used to retrieve additional information through the API, such as: + +- The [run ID](/terraform/enterprise/api-docs/run#get-run-details) +- The [workspace ID](/terraform/enterprise/api-docs/workspaces#list-workspaces) +- The [organization name](/terraform/enterprise/api-docs/organizations#show-an-organization) + +## Notification Authenticity + +[inpage-hmac]: #notification-authenticity + +Slack notifications use Slack's own protocols for verifying HCP Terraform's webhook requests. + +Generic notifications can include a signature for verifying the request. For notification configurations that include a secret token, HCP Terraform's webhook requests will include an `X-TFE-Notification-Signature` header, which contains an HMAC signature computed from the token using the SHA-512 digest algorithm. The receiving service is responsible for validating the signature. More information, as well as an example of how to validate the signature, can be found in the [API documentation](/terraform/enterprise/api-docs/notification-configurations#notification-authenticity). diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-tasks.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-tasks.mdx new file mode 100644 index 0000000000..baab7caf6e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-tasks.mdx @@ -0,0 +1,134 @@ +--- +page_title: Terraform Enterprise run tasks +description: >- + Run tasks integrate third-party tools into the run lifecycle. Learn how to + create, delete, and associate run tasks with workspaces. +source: terraform-docs-common +--- + +[entitlement]: /terraform/enterprise/api-docs#feature-entitlements + +# Run tasks + +HCP Terraform run tasks let you directly integrate third-party tools and services at certain stages in the HCP Terraform run lifecycle. Use run tasks to validate Terraform configuration files, analyze execution plans before applying them, scan for security vulnerabilities, or perform other custom actions. + +Run tasks send data about a run to an external service at [specific run stages](#understanding-run-tasks-within-a-run). The external service processes the data, evaluates whether the run passes or fails, and sends a response to HCP Terraform. HCP Terraform then uses this response and the run task enforcement level to determine if a run can proceed. [Explore run tasks in the Terraform registry](https://registry.terraform.io/browse/run-tasks). + +<!-- BEGIN: TFC:only name:pnp-callout --> + +@include 'tfc-package-callouts/run-tasks.mdx' + +<!-- END: TFC:only name:pnp-callout --> + +You can manage run tasks through the HCP Terraform UI or the [Run Tasks API](/terraform/enterprise/api-docs/run-tasks/run-tasks). + +> **Hands-on:** Try the [HCP Packer validation run task](/packer/tutorials/hcp/setup-hcp-terraform-run-task) tutorial. + +## Requirements + +**Terraform Version** - You can assign run tasks to workspaces that use a Terraform version of 1.1.9 and later. You can downgrade a workspace with existing runs to use a prior Terraform version without causing an error. However, HCP Terraform no longer triggers the run tasks during plan and apply operations. + +**Permissions** - To create a run task, you must have a user account with the [Manage Run Tasks permission](/terraform/enterprise/users-teams-organizations/permissions#manage-run-tasks). To associate run tasks with a workspace, you need the [Manage Workspace Run Tasks permission](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) on that particular workspace. + +## Creating a Run Task + +Explore the full list of [run tasks in the Terraform Registry](https://registry.terraform.io/browse/run-tasks). + +Run tasks send an API payload to an external service. The API payload contains run-related information, including a callback URL, which the service uses to return a pass or fail status to HCP Terraform. + +For example, the [HCP Packer integration](/terraform/enterprise/integrations/run-tasks#hcp-packer-run-task) checks image artifacts within a Terraform configuration for validity. If the configuration references images marked as unusable (revoked), then the run task fails and provides an error message. + +To create a new run task: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace where you want to create a run task. + +2. Choose **Settings** from the sidebar, then **Run Tasks**. + +3. Click **Create a new run task**. The **Run Tasks** page appears. + +4. Enter the information about the run task to be configured: + + - **Enabled** (optional): Whether the run task will run across all associated workspaces. New tasks are enabled by default. + - **Name** (required): A human-readable name for the run task. This will be displayed in workspace configuration pages and can contain letters, numbers, dashes and underscores. + - **Endpoint URL** (required): The URL for the external service. Run tasks will POST the [run tasks payload](/terraform/enterprise/integrations/run-tasks#integration-details) to this URL. + - **Description** (optional): A human-readable description for the run task. This information can contain letters, numbers, spaces, and special characters. + - **HMAC key** (optional): A secret key that may be required by the external service to verify request authenticity. + +5. Select a **Source**: + + - **Managed** HCP Terraform's infrastructure initiates run task requests. This is the default option. + - **Agent** HCP Terraform can initiate run task requests within your self-managed HCP Terraform agents to let run tasks communicate with isolated, private, or on-premises infrastructure. To use this option, an HCP Terraform agent in the agent pool must have [request forwarding](/terraform/cloud-docs/agents/request-forwarding) enabled, and you must be on the [HCP Terraform **Premium** edition](https://www.hashicorp.com/products/terraform/pricing). + +6. Click **Create run task**. The run task is now available within the organization, and you can associate it with one or more workspaces. + +### Global Run Tasks + +When you create a new run task, you can choose to apply it globally to every workspace in an organization. Your organization must have the `global-run-task` [entitlement][] to use global run tasks. + +1. Select the **Global** checkbox + +2. Choose when HCP Terraform should start the run task: + + - **Pre-plan**: Before Terraform creates the plan. + - **Post-plan**: After Terraform creates the plan. + - **Pre-apply**: Before Terraform applies a plan. + - **Post-apply**: After Terraform applies a plan. + +3. Choose an enforcement level: + + - **Advisory**: Run tasks can not block a run from completing. If the task fails, the run proceeds with a warning in the user interface. + - **Mandatory**: Failed run tasks can block a run from completing. If the task fails (including timeouts or unexpected remote errors), the run stops and errors with a warning in the user interface. + +## Associating Run Tasks with a Workspace + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise, and choose **Workspaces** from the sidebar. + +2. Select the workspace that you want to associate with a run task. + +3. Open the **Settings** menu and select **Run Tasks**. + +4. Click the **+** next to the task you want to add to the workspace. + +5. Choose when HCP Terraform should start the run task: + + - **Pre-plan**: Before Terraform creates the plan. + - **Post-plan**: After Terraform creates the plan. + - **Pre-apply**: Before Terraform applies a plan. + - **Post-apply**: After Terraform applies a plan. + +6. Choose an enforcement level: + + - **Advisory**: Run tasks can not block a run from completing. If the task fails, the run will proceed with a warning in the UI. + - **Mandatory**: Run tasks can block a run from completing. If the task fails (including a timeout or unexpected remote error condition), the run will transition to an Errored state with a warning in the UI. + +7. Click **Create**. Your run task is now configured. + +## Understanding Run Tasks Within a Run + +Run tasks perform actions before and after, the [plan](/terraform/enterprise/run/states#the-plan-stage) and [apply](/terraform/enterprise/run/states#the-apply-stage) stages of a [Terraform run](/terraform/enterprise/run/remote-operations). Once all run tasks complete, the run ends based on the most restrictive enforcement level in each associated run task. + +For example, if a mandatory task fails and an advisory task succeeds, the run fails. If an advisory task fails, but a mandatory task succeeds, the run succeeds and proceeds to the apply stage. Regardless of the exit status of a task, HCP Terraform displays the status and any related message data in the UI. + +## Removing a Run Task from a Workspace + +Removing a run task from a workspace does not delete it from the organization. To remove a run task from a specific workspace: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace where you want to remove a run task. + +2. Choose **Settings** from the sidebar, then **Run Tasks**. + +3. Click the ellipses (...) on the associated run task, and then click **Remove**. The run task will no longer be applied to runs within the workspace. + +## Deleting a Run Task + +You must remove a run task from all associated workspaces before you can delete it. To delete a run task: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace associated with a run task you want to delete. + +2. Choose **Settings** from the sidebar, then **Run Tasks**. + +3. Click the ellipses (...) next to the run task you want to delete, and then click **Edit**. + +4. Click **Delete run task**. + +You cannot delete run tasks that are still associated with a workspace. If you attempt this, you will see a warning in the UI containing a list of all workspaces that are associated with the run task. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-triggers.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-triggers.mdx new file mode 100644 index 0000000000..13bda16de0 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/run-triggers.mdx @@ -0,0 +1,51 @@ +--- +page_title: Terraform Enterprise run triggers +description: >- + Use run triggers to connect workspaces within your organization. Learn how to + view, create, and manage run triggers. +source: terraform-docs-common +--- + +# Run triggers + +> **Hands-on:** Try the [Connect Workspaces with Run Triggers](/terraform/tutorials/cloud/cloud-run-triggers?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial. + +HCP Terraform provides a way to connect your workspace to one or more workspaces within your organization, known as "source workspaces". These connections, called run triggers, allow runs to queue automatically in your workspace on successful apply of runs in any of the source workspaces. You can connect each workspace to up to 20 source workspaces. + +Run triggers are designed for workspaces that rely on information or infrastructure produced by other workspaces. If a Terraform configuration uses [data sources](/terraform/language/data-sources) to read values that might be changed by another workspace, run triggers let you explicitly specify that external dependency. + +-> **API:** See the [Run Triggers APIs](/terraform/enterprise/api-docs/run-triggers). + +## Viewing and Managing Run Triggers + +To add or delete a run trigger, navigate to the desired workspace and choose "Run Triggers" from the "Settings" menu: + +This takes you to the run triggers settings page, which shows any existing run triggers. Configuring run triggers requires admin access to the workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) Admins are able to delete any of their workspace’s run triggers from this page. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Creating a Run Trigger + +Creating run triggers requires admin access to the workspace. You must also have permission to read runs for the source workspace you wish to connect to. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +Under the "Source Workspaces" section, select the workspace you would like to connect as your source and click "Add workspace". You now have a run trigger established with your source workspace. Any run from that source workspace which applies successfully will now cause a new run to be queued in your workspace. + +## Run Triggers Auto-Apply Setting + +Runs initiated by a run trigger do not auto-apply unless you enable the **Auto-apply run triggers** setting. This setting operates independently of the primary workspace [auto-apply](/terraform/enterprise/workspaces/settings#auto-apply) setting. + +## Interacting with Run Triggers + +Runs which are queued in your workspace through a run trigger will include extra information in their run details section. This includes links to the source workspace and the successfully applied run that activated the run trigger. + +The source workspace includes a message in the [plan](/terraform/docs/glossary#plan-noun-1-) and [apply](/terraform/docs/glossary#apply-noun-) run details that specifies the workspaces where HCP Terraform automatically starts a run. + +## Using a Remote State Data Source + +A common way to share information between workspaces is the [`terraform_remote_state` data source](/terraform/language/state/remote-state-data), which allows a Terraform configuration to access a source workspace's root-level [outputs](/terraform/language/values/outputs). + +Before other workspaces can read the outputs of a workspace, it must be configured to allow access. For more information about cross-workspace state access in HCP Terraform, see [Terraform State in HCP Terraform](/terraform/enterprise/workspaces/state). + +~> **Important:** We recommend using the [`tfe_outputs` data source](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/data-sources/outputs) in the [HCP Terraform/Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) to access remote state outputs in HCP Terraform or Terraform Enterprise. The `tfe_outputs` data source is more secure because it does not require full access to workspace state to fetch outputs. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/ssh-keys.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/ssh-keys.mdx new file mode 100644 index 0000000000..d2a9fde19e --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/ssh-keys.mdx @@ -0,0 +1,63 @@ +--- +page_title: Use SSH Keys to clone modules in Terraform Enterprise +description: >- + Learn how to configure the SSH keys that Terraform uses to pull modules from + private Git repositories. Learn to add, delete, and assign keys to workspaces. +source: terraform-docs-common +--- + +# Use SSH Keys for cloning modules + +Terraform configurations can pull in Terraform modules from [a variety of different sources](/terraform/language/modules/sources), and private Git repositories are a common source for private modules. + +-> **Note:** The [private module registry](/terraform/enterprise/registry) is an easier way to manage private Terraform modules in HCP Terraform, and doesn't require setting SSH keys for workspaces. The rest of this page only applies to configurations that fetch modules directly from a private Git repository. + +To access a private Git repository, Terraform either needs login credentials (for HTTPS access) or an SSH key. HCP Terraform can store private SSH keys centrally, and you can easily use them in any workspace that clones modules from a Git server. + +-> **Note:** SSH keys for cloning Terraform modules from Git repos are only used during Terraform runs. They are managed separately from any [keys used for bringing VCS content into HCP Terraform](/terraform/enterprise/vcs#ssh-keys). + +HCP Terraform manages SSH keys used to clone Terraform modules at the organization level, and allows multiple keys to be added for the organization. You can add or delete keys via the organization's settings. Once a key is uploaded, the text of the key is not displayed to users. + +To assign a key to a workspace, go to its settings and choose a previously added key from the drop-down menu on Integrations under "SSH Key". Each workspace can only use one SSH key. + +-> **API:** See the [SSH Keys API](/terraform/enterprise/api-docs/ssh-keys) and [Assign an SSH Key to a Workspace endpoint](/terraform/enterprise/api-docs/workspaces#assign-an-ssh-key-to-a-workspace). <br/> +**Terraform:** See the `tfe` provider's [`tfe_ssh_key`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/ssh_key) resource. + +## Adding Keys + +To add a key: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and choose the organization you want to add a key to. +2. Choose **Settings** from the sidebar, then **SSH Keys**. This page has a form for adding new keys and a list of existing keys. +3. Obtain a PEM formatted SSH keypair that HCP Terraform can use to download modules during a Terraform run. You might already have an appropriate key. If not, create one on a secure workstation and distribute the public key to your VCS provider(s). Do not use or generate a key that has a passphrase. Git is running non-interactively and cannot prompt for it. + + The exact command to create a PEM formatted SSH keypair depends on your operating system. The following example command creates a `service_terraform` file with the private key and a `service_terraform.pub` file with the public key. + + ```bash + ssh-keygen -t rsa -m PEM -f "/Users/<NAME>/.ssh/service_terraform" -C "service_terraform_enterprise" + ``` +4. Enter a name for the key in the **Name** field. Choose something identifiable. Keys are only listed by name. HCP Terraform retains the text of each private key, but never displays it for any purpose. +5. Paste the text of the private key in the **Private SSH Key** field. +6. Click **Add Private SSH Key**. + +The new key appears in the list of keys on the page. + +If you upload an invalid SSH key, upload the correct key and push a new commit for the new key to take effect. + +## Deleting Keys + +Before deleting a key, you should assign a new key to any workspaces that are using it. Otherwise workspaces using the deleted key can no longer clone modules from private repositories. This inability might cause Terraform runs to fail. + +To delete a key: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and choose the organization you want to delete a key from. +2. Choose **Settings** from the sidebar, then **SSH Keys**. +3. Find the key you want to delete and click **Delete**. + +## Assigning Keys to Workspaces + +To assign a key to a workspace, navigate to that workspace's page and choose "SSH Key" from the "Settings" menu. + +Select a named key from the "SSH Key" dropdown menu, then click the "Update SSH key" button. + +In subsequent runs, HCP Terraform will use the selected SSH key in this workspace when cloning modules from Git. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/vcs.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/vcs.mdx new file mode 100644 index 0000000000..a1e34e5a58 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/settings/vcs.mdx @@ -0,0 +1,127 @@ +--- +page_title: Configure workspace VCS connections in Terraform Enterprise +description: >- + Learn how to use the Terraform Enterprise UI to connect a workspace to a + version control system (VCS) repository that contains a Terraform + configuration. +source: terraform-docs-common +--- + +# Configure workspace VCS connections + +You can connect any HCP Terraform [workspace](/terraform/enterprise/workspaces) to a version control system (VCS) repository that contains a Terraform configuration. This page explains the workspace VCS connection settings in the HCP Terraform UI. + +Refer to [Terraform Configurations in HCP Terraform Workspaces](/terraform/enterprise/workspaces/configurations) for details on handling configuration versions and connected repositories. Refer to [Connecting VCS Providers](/terraform/enterprise/vcs) for a list of supported VCS providers and details about configuring VCS access, viewing VCS events, etc. + +## API + +You can use the [Update a Workspace endpoint](/terraform/enterprise/api-docs/workspaces#update-a-workspace) in the Workspaces API to change one or more VCS settings. We also recommend using this endpoint to automate changing VCS connections for many workspaces at once. For example, when you move a VCS server or remove a deprecated API version. + +## Version Control Settings + +To change a workspace's VCS settings: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and find the workspace you want to update. +2. Choose **Settings** from the sidebar, then **Version Control**. +3. Choose the settings you want, then click **Update VCS settings**. + +You can update the following types of VCS settings for the workspace. + +### VCS Connection + +You can take one of the following actions: + +- To add a new VCS connection, click **Connect to version control**. Select **Version control workflow** and follow the steps to [select a VCS provider and repository](/terraform/enterprise/workspaces/create#create-a-workspace). +- To edit an existing VCS connection, click **Change source**. Choose the **Version control workflow** and follow the steps to [select VCS provider and repository](/terraform/enterprise/workspaces/create#create-a-workspace). +- To remove the VCS connection, click **Change source**. Select either the **CLI-driven workflow** or the **API-driven workflow**, and click **Update VCS settings**. The workspace is no longer connected to VCS. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Terraform Working Directory + +Specify the directory where Terraform will execute runs. This defaults to the root directory in your repository, but you may want to specify another directory if you have directories for multiple different Terraform configurations within the same repository. For example, if you had one `staging` directory and one `production` directory. + +A working directory is required when you use [trigger prefixes](#automatic-run-triggering). + +### Apply Method + +Choose a workflow for Terraform runs. + +- **Auto apply:** Terraform will apply changes from successful plans without prompting for approval. A push to the default branch of your repository will trigger a plan and apply cycle. You may want to do this in non-interactive environments, like continuous deployment workflows. + + !> **Warning:** If you choose auto apply, make sure that no one can change your infrastructure outside of your automated build pipeline. This reduces the risk of configuration drift and unexpected changes. + +- **Manual apply:** Terraform will ask for approval before applying changes from a successful plan. A push to the default branch of your repository will trigger a plan, and then Terraform will wait for confirmation. + +### Automatic Run Triggering + +HCP Terraform uses your VCS provider's API to retrieve the changed files in your repository. You can choose one of the following options to specify which changes trigger Terraform runs. + +#### Always trigger runs + +This option instructs Terraform to begin a run when changes are pushed to any file within the repository. This can be useful for repositories that do not have multiple configurations but require a working directory for some other reason. However, we do not recommend this approach for true monorepos, as it queues unnecessary runs and slows down your ability to provision infrastructure. + +#### Only trigger runs when files in specified paths change + +This option instructs Terraform to begin new runs only for changes that affect specified files and directories. This behavior also applies to [speculative plans](/terraform/enterprise/run/remote-operations#speculative-plans) on pull requests. + +You can use trigger patterns and trigger prefixes in the **Add path** field to specify groups of files and directories. + +- **Trigger Patterns:** (Recommended) Use glob patterns to specify the files that should trigger a new run. For example, `/submodule/**/*.tf`, specifies all files with the `.tf` extension that are nested below the `submodule` directory. You can also use more complex patterns like `/**/networking/**/*`, which specifies all files that have a `networking` folder in their file path. (e.g., `/submodule/service-1/networking/private/main.tf`). Refer to [Glob Patterns for Automatic Run Triggering](#glob-patterns-for-automatic-run-triggering) for details. +- **Trigger Prefixes:** HCP Terraform will queue runs for changes in any of the specified trigger directories matching the provided prefixes (including the working directory). For example, if you use a top-level `modules` directory to share Terraform code across multiple configurations, changes to the shared modules are relevant to every workspace that uses that repository. You can add `modules` as a trigger directory for each workspace to track changes to shared code. + +-> **Note:** HCP Terraform triggers runs on all attached workspaces if it does not receive a list of changed files or if that list is too large to process. When this happens, HCP Terraform may show several runs with completed plans that do not result in infrastructure changes. + +#### Trigger runs when a git tag is published + +This option instructs Terraform to begin new runs only for changes that have a specific tag format. + +The tag format can be chosen between the following options: + +- **Semantic Versioning:** It matches tags in the popular [SemVer format](https://semver.org/). For example, `0.4.2`. +- **Version contains a prefix:** It matches tags which have an additional prefix before the [SemVer format](https://semver.org/). For example, `version-0.4.2`. +- **Version contains a suffix:** It matches tags which have an additional suffix after the [SemVer format](https://semver.org/). For example `0.4.2-alpha`. +- **Custom Regular Expression:** You can define your own regex for HCP Terraform to match against tags. + +You must include an additional `\` to escape the regex pattern when you manage your workspace with the [hashicorp/tfe provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace#tags_regex) and trigger runs through matching git tags. Refer to [Terraform escape sequences](/terraform/language/expressions/strings#escape-sequences) for more details. + +| Tag Format | Regex Pattern | Regex Pattern (Escaped) | +| ----------------------------- | --------------- | ----------------------- | +| **Semantic Versioning** | `^\d+.\d+.\d+$` | `^\\d+.\\d+.\\d+$` | +| **Version contains a prefix** | `\d+.\d+.\d+$` | `\\d+.\\d+.\\d+$` | +| **Version contains a suffix** | `^\d+.\d+.\d+` | `^\\d+.\\d+.\\d+` | + +HCP Terraform triggers runs for all tags matching this pattern, regardless of the value in the [VCS Branch](#vcs-branch) setting. + +### VCS Branch + +This setting designates which branch of the repository HCP Terraform should use when the workspace is set to [Always Trigger Runs](#always-trigger-runs) or [Only trigger runs when files in specified paths change](#only-trigger-runs-when-files-in-specified-paths-change). If you leave this setting blank, HCP Terraform uses the repository's default branch. If the workspace is set to trigger runs when a [git tag is published](#trigger-runs-when-a-git-tag-is-published), all tags will trigger runs, regardless of the branch specified in this setting. + +### Automatic Speculative Plans + +Whether to perform [speculative plans on pull requests](/terraform/enterprise/run/ui#speculative-plans-on-pull-requests) to the connected repository, to assist in reviewing proposed changes. Automatic speculative plans are enabled by default, but you can disable them for any workspace. + +### Include Submodules on Clone + +Select **Include submodules on clone** to recursively clone all of the repository's Git submodules when HCP Terraform fetches a configuration. + +-> **Note:** The [SSH key for cloning Git submodules](/terraform/enterprise/vcs#ssh-keys) is set in the VCS provider settings for the organization and is not related to the workspace's SSH key for Terraform modules. + +## Glob Patterns for Automatic Run Triggering + +We support `glob` patterns to describe a set of triggers for automatic runs. Refer to [trigger patterns](#only-trigger-runs-when-files-in-specified-paths-change) for details. + +Supported wildcards: + +- `*` Matches zero or more characters. +- `?` Matches one or more characters. +- `**` Matches directories recursively. + +The following examples demonstrate how to use the supported wildcards: + +- `/**/*` matches every file in every directory +- `/module/**/*` matches all files in any directory below the `module` directory +- `/**/networking/*` matches every file that is inside any `networking` directory +- `/**/networking/**/*` matches every file that has `networking` directory on its path +- `/**/*.tf` matches every file in any directory that has the `.tf` extension +- `/submodule/*.???` matches every file inside `submodule` directory which has three characters long extension. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/state.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/state.mdx new file mode 100644 index 0000000000..4b070799df --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/state.mdx @@ -0,0 +1,257 @@ +--- +page_title: Manage workspace state in Terraform Enterprise +description: >- + Workspaces have their own separate state data. Learn how Terraform Enterprise + uses state and how to access state from across workspaces. +source: terraform-docs-common +--- + +# Manage workspace state + +Each HCP Terraform workspace has its own separate state data, used for runs within that workspace. + +-> **API:** See the [State Versions API](/terraform/enterprise/api-docs/state-versions). + +## State Usage in Terraform Runs + +In [remote runs](/terraform/enterprise/run/remote-operations), HCP Terraform automatically configures Terraform to use the workspace's state; the Terraform configuration does not need an explicit backend configuration. (If a backend configuration is present, it will be overridden.) + +In local runs (available for workspaces whose execution mode setting is set to "local"), you can use a workspace's state by configuring the [CLI integration](/terraform/cli/cloud) and authenticating with a user token that has permission to read and write state versions for the relevant workspace. When using a Terraform configuration that references outputs from another workspace, the authentication token must also have permission to read state outputs for that workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +<!-- BEGIN: TFC:only name:intermediate-state --> + +During an HCP Terraform run, Terraform incrementally creates intermediate state versions and marks them as finalized once it uploads the state content. + +When a workspace is unlocked, HCP Terraform selects the latest state and sets it as the current state version, deletes all other intermediate state versions that were saved as recovery snapshots for the duration of the lock, and discards all pending intermediate state versions that were superseded by newer state versions. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +<!-- END: TFC:only name:intermediate-state --> + +## State Versions + +In addition to the current state, HCP Terraform retains historical state versions, which can be used to analyze infrastructure changes over time. + +You can view a workspace's state versions from its **States** tab. Each state in the list indicates which run and which VCS commit (if applicable) it was associated with. Click a state in the list for more details, including a diff against the previous state and a link to the raw state file. + +<!-- BEGIN: TFC:only name:managed-resources --> + +## Managed Resources Count + +-> **Note:** A managed resources count for each organization is available in your organization's settings. + +Your organization’s managed resource count helps you understand the number of infrastructure resources that HCP Terraform manages across all your workspaces. + +HCP Terraform reads all the workspaces’ state files to determine the total number of managed resources. Each [resource](/terraform/language/resources/syntax) in the state equals one managed resource. HCP Terraform includes resources in modules and each resource instance created with the `count` or `for_each` meta-arguments. For example, `"aws_instance" "servers" { count = 10 }` creates ten separate managed resources in state. HCP Terraform does not include [data sources](/terraform/language/data-sources) in the count. + +### Examples - Managed Resources + +The following Terraform state excerpt describes a `random` resource. HCP Terraform counts `random` as one managed resource because `“mode”: “managed”`. + +```json +"resources": [ +{ + "mode": "managed", + "type": "random_pet", + "name": "random", + "provider": "provider[\"registry.terraform.io/hashicorp/random\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "puma", + "keepers": null, + "length": 1, + "prefix": null, + "separator": "-" + }, + "sensitive_attributes": [] + } + ] + } +] +``` + +A single resource configuration block can describe multiple resource instances with the [`count`](/terraform/language/meta-arguments/count) or [`for_each`](/terraform/language/meta-arguments/for_each) meta-arguments. Each of these instances counts as a managed resource. + +The following example shows a Terraform state excerpt with 2 instances of a `aws_subnet` resource. HCP Terraform counts each instance of `aws_subnet` as a separate managed resource. + +```json +{ + "module": "module.vpc", + "mode": "managed", + "type": "aws_subnet", + "name": "public", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:us-east-2:561656980159:subnet/subnet-024b05c4fba9c9733", + "assign_ipv6_address_on_creation": false, + "availability_zone": "us-east-2a", + ##... + "private_dns_hostname_type_on_launch": "ip-name", + "tags": { + "Name": "-public-us-east-2a" + }, + "tags_all": { + "Name": "-public-us-east-2a" + }, + "timeouts": null, + "vpc_id": "vpc-0f693f9721b61333b" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "data.aws_availability_zones.available", + "module.vpc.aws_vpc.this", + "module.vpc.aws_vpc_ipv4_cidr_block_association.this" + ] + }, + { + "index_key": 1, + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:us-east-2:561656980159:subnet/subnet-08924f16617e087b2", + "assign_ipv6_address_on_creation": false, + "availability_zone": "us-east-2b", + ##... + "private_dns_hostname_type_on_launch": "ip-name", + "tags": { + "Name": "-public-us-east-2b" + }, + "tags_all": { + "Name": "-public-us-east-2b" + }, + "timeouts": null, + "vpc_id": "vpc-0f693f9721b61333b" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "data.aws_availability_zones.available", + "module.vpc.aws_vpc.this", + "module.vpc.aws_vpc_ipv4_cidr_block_association.this" + ] + } + ] +} +``` + +### Example - Excluded Data Source + +The following Terraform state excerpt describes a `aws_availability_zones` data source. HCP Terraform does not include `aws_availability_zones` in the managed resource count because `”mode”: “data”`. + +```json + "resources": [ + { + "mode": "data", + "type": "aws_availability_zones", + "name": "available", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "all_availability_zones": null, + "exclude_names": null, + "exclude_zone_ids": null, + "filter": null, + "group_names": [ + "us-east-2" + ], + "id": "us-east-2", + "names": [ + "us-east-2a", + "us-east-2b", + "us-east-2c" + ], + "state": null, + "zone_ids": [ + "use2-az1", + "use2-az2", + "use2-az3" + ] + }, + "sensitive_attributes": [] + } + ] + } + ] +``` + +<!-- END: TFC:only name:managed-resources --> + +## State Manipulation + +Certain tasks (including importing resources, tainting resources, moving or renaming existing resources to match a changed configuration, and more) may require modifying Terraform state outside the context of a run, depending on which version of Terraform your HCP Terraform workspace is configured to use. + +Newer Terraform features like [`moved` blocks](/terraform/language/modules/develop/refactoring), [`import` blocks](/terraform/language/import), and the [`replace` option](/terraform/enterprise/run/modes-and-options#replacing-selected-resources) allow you to accomplish these tasks using the usual plan and apply workflow. However, if the Terraform version you're using doesn't support these features, you may need to fall back to manual state manipulation. + +Manual state manipulation in HCP Terraform workspaces, with the exception of [rolling back to a previous state version](#rolling-back-to-a-previous-state), requires the use of Terraform CLI, using the same commands as would be used in a local workflow (`terraform import`, `terraform taint`, etc.). To manipulate state, you must configure the [CLI integration](/terraform/cli/cloud) and authenticate with a user token that has permission to read and write state versions for the relevant workspace. ([More about permissions.](/terraform/enterprise/users-teams-organizations/permissions)) + +### Rolling Back to a Previous State + +You can rollback to a previous, known good state version using the HCP Terraform UI. Navigate to the state you want to rollback to and click the **Advanced** toggle button. This option requires that you have access to create new state and that you lock the workspace. It works by duplicating the state that you specify and making it the workspace's current state version. The workspace remains locked. To undo the rollback operation, rollback to the state version that was previously the latest state. + +-> **Note:** You can rollback to any prior state, but you should use caution because replacing state improperly can result in orphaned or duplicated infrastructure resources. This feature is provided as a convenient alternative to manually downloading older state and using state manipulation commands in the CLI to push it to HCP Terraform. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Accessing State from Other Workspaces + +-> **Note:** Provider-specific [data sources](/terraform/language/data-sources) are usually the most resilient way to share information between separate Terraform configurations. `terraform_remote_state` is more flexible, but we recommend using specialized data sources whenever it is convenient to do so. + +Terraform's built-in [`terraform_remote_state` data source](/terraform/language/state/remote-state-data) lets you share arbitrary information between configurations via root module [outputs](/terraform/language/values/outputs). + +HCP Terraform automatically manages API credentials for `terraform_remote_state` access during [runs managed by HCP Terraform](/terraform/enterprise/run/remote-operations#remote-operations). This means you do not usually need to include an API token in a `terraform_remote_state` data source's configuration. + +## Upgrading State + +You can upgrade a workspace's state version to a new Terraform version without making any configuration changes. To upgrade, we recommend the following steps: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the workspace you want to upgrade. +2. Run a [speculative plan](/terraform/enterprise/run/ui#testing-terraform-upgrades-with-speculative-plans) to test whether your configuration is compatible with the new Terraform version. You can run speculative plans with a Terraform version that is different than the one currently selected for the workspace. +3. Select **Settings > General** and select the desired new **Terraform Version**. +4. Click **+ New run** and then select **Allow empty apply** as the run type. An [empty apply](/terraform/enterprise/run/modes-and-options#allow-empty-apply) allows Terraform to apply a plan that produces no infrastructure changes. Terraform upgrades the state file version during the apply process. + +-> **Note:** If the desired Terraform version is incompatible with a workspace's existing state version, the run fails and HCP Terraform prompts you to run an apply with a compatible version first. Refer to the [Terraform upgrade guides](/terraform/language/upgrade-guides) for details about upgrading between versions. + +### Remote State Access Controls + +Remote state access between workspaces is subject to access controls: + +- Only workspaces within the same organization can access each other's state. +- The workspace whose state is being read must be configured to allow that access. State access permissions are configured on a workspace's [general settings page](/terraform/enterprise/workspaces/settings). There are two ways a workspace can allow access: + - Globally, to all workspaces within the same organization. + - Selectively, to a list of specific approved workspaces. + +By default, new workspaces in HCP Terraform do not allow other workspaces to access their state. We recommend that you follow the principle of least privilege and only enable state access between workspaces that specifically need information from each other. + +-> **Note:** The default access permissions for new workspaces in HCP Terraform changed in April 2021. Workspaces created before this change defaulted to allowing global access within their organization. These workspaces can be changed to more restrictive access at any time on their [general settings page](/terraform/enterprise/workspaces/settings). Terraform Enterprise administrators can choose whether new workspaces on their instances default to global access or selective access. + +### Data Source Configuration + +To configure a `tfe_outputs` data source that references an HCP Terraform workspace, specify the organization and workspace in the `config` argument. + +You must still properly configure the `tfe` provider with a valid authentication token and correct permissions to HCP Terraform. + +```hcl +data "tfe_outputs" "vpc" { + config = { + organization = "example_corp" + workspaces = { + name = "vpc-prod" + } + } +} + +resource "aws_instance" "redis_server" { + # Terraform 0.12 and later: use the "outputs.<OUTPUT NAME>" attribute + subnet_id = data.tfe_outputs.vpc.outputs.subnet_id +} +``` + +-> **Note:** Remote state access controls do not apply when using the `tfe_outputs` data source. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/tags.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/tags.mdx new file mode 100644 index 0000000000..6617ddc9be --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/tags.mdx @@ -0,0 +1,94 @@ +--- +page_title: Create workspace tags +description: >- + Learn how to create tags for your workspaces so that you can organize + workspaces. Tagging workspaces also lets you sort and filter workspaces in the + UI. +source: terraform-docs-common +--- + +# Create workspace tags + +This topic describes how to create and attach tags to your workspaces. + +## Overview + +Tagging workspaces helps organization administrators organize, sort, and filter workspaces so that they can track resource consumption. For example, you could add a `cost-center` tag so that administrators can sort workspaces according to cost center. + +HCP Terraform stores tags as key-value pairs or as key-only tags. Key-only tags enable you to associate a single Terraform configuration file with several workspaces according to tag. Refer to the following topics in the Terraform CLI and configuration language documentation for additional information: + +- [`terraform{}.cloud{}.workspaces` reference](/terraform/language/terraform#terraform-cloud-workspaces) +- [Define connection settings](/terraform/cli/cloud/settings#define-connection-settings) + +### Reserved tags + +You can reserve a set of tag keys for each organization. Reserved tag keys appear as suggestions when people create tags for projects and workspaces so that you can use consistent terms for tags. Refer to [Create and manage reserved tags](/terraform/enterprise/users-teams-organizations/organizations/manage-reserved-tags) for additional information. + +### Single-value tags + +Your system may contain single-value tags created using Terraform v1.10 and older. You can migrate existing single-value tags to the key-value scheme. Refer to [Migrate single-value tags](#migrate-single-value-tags) for instructions. + +## Requirements + +- You must be member of a team with the **Write** permission group enabled for the workspace to create tags for a workspace. +- You must be member of a team with the **Admin** permission group enabled for the workspace to delete tags on a workspace. + +You cannot create tags for a workspace using the CLI. + +## Define tags + +1. Open your workspace. + +2. Click either the count link for the **Tags** label or **Manage Tags** in the **Tags** card on the right-sidebar to open the **Manage workspace tags** drawer. + +3. Click **+Add tag** and perform one of the following actions: + + - Specify a key-value pair: Lets you sort, filter, and search on either key or value. + - Specify a tag key and leave the **Value** field empty: Lets you sort, filter, and search on only the key name. + - Choose a reserved key from the suggested tag key list and specify a value: Ensures that you are using the key name consistently and lets you sort, filter, and search on either key or value. + - Choose a reserved key from the suggested tag key list and leave the **Value** field empty: Ensures that you are using the key name consistently and lets you sort, filter, and search on only the key name. + + Refer to [Tag syntax](#Tag-syntax) for information about supported characters. + +4. Tags inherited from the project appear in the **Inherited Tags** section. You can attach new key-value pairs to their projects to override inherited tags. Refer to [Manage projects](/terraform/enterprise/projects/manage) for additional information about using tags in projects. + + You cannot override reserved tag keys when the **Disable overrides** option is enabled. Refer to [Create and manage reserved tags](/terraform/enterprise/users-teams-organizations/organizations/manage-reserved-tags) for additional information. + + You can also click on tag links in the **Inherited Tags** section to view workspaces that use the same tag. + +5. Click **Save**. + +Tags that you create appear in the tags management screen in the organization settings. Refer to [Organizations](/terraform/enterprise/users-teams-organizations/organizations) for additional information. + +## Update tags + +1. Open your workspace. +2. Click either the count link for the **Tags** label or **Manage Tags** in the **Tags** card on the right-sidebar to open the **Manage workspace tags** drawer. +3. In the **Tags applied to this resource** section, modify a key, value, or both and click **Save**. + +## Migrate single-value tags + +You can use the API to convert existing single-value tags to key-value tags. You must have permissions in the workspace to perform the following task. Refer to [Requirements](#requirements) for additional information. + +Terraform v1.10 and older adds single-value workspace tags defined in the associated Terraform configuration to workspaces selected by the configuration. As result, your workspace may include duplicate tags. Refer to the [Terraform reference documentation](/terraform/language/terraform#terraform-cloud-workspaces) for additional information. + +### Re-create existing workspace tags as resource tags + +1. Send a `GET` request to the [`/organizations/:organization_name/tags`](/terraform/enterprise/api-docs/organization-tags#list-tags) endpoint to request all workspaces for your organization. The response may span several pages. +2. For each workspace, check the `tag-names` attribute for existing tags. +3. Send a `PATCH` request to the [`/workspaces/:workspace_id`](/terraform/enterprise/api-docs/workspaces#update-a-workspace) endpoint and include the `tag-binding` relationship in the request body for each workspace tag. + +### Delete single-value workspace tags + +1. Send a `GET` request to the [`/organizations/:organization_name/tags`](/terraform/enterprise/api-docs/organization-tags#list-tags) endpoint to request all workspaces for your organization. +2. Enumerate the external IDs for all tags. +3. Send a `DELETE` request to the [`/organizations/:organization_name/tags`](/terraform/enterprise/api-docs/organization-tags#delete-tags) endpoint to delete tags. + +## Tag syntax + +The following rules apply to tags: + +- Tags must be one or more characters. +- Tags have a 255 character limit. +- Tags can include letters, numbers, colons, hyphens, and underscores. +- For tags stored as key-value pairs, tag values are optional. diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/index.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/index.mdx new file mode 100644 index 0000000000..22c1581891 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/index.mdx @@ -0,0 +1,237 @@ +--- +page_title: Workspace variables in Terraform Enterprise +description: >- + Terraform Enterprise workspaces allow you to customize Terraform runs. Learn + how to use Terraform variables and environment variables. +source: terraform-docs-common +--- + +# Workspace variables + +HCP Terraform workspace variables let you customize configurations, modify Terraform's behavior, setup [dynamic provider credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials), and store information like static provider credentials. + +You can set variables specifically for each workspace or you can create variable sets to reuse the same variables across multiple workspaces. For example, you could define a variable set of provider credentials and automatically apply it to all of the workspaces using that provider. You can use the command line to specify variable values for each plan or apply. Otherwise, HCP Terraform applies workspace variables to all runs within that workspace. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +## Types + +You can create both environment variables and Terraform variables in HCP Terraform. + +> **Hands-on:** Try the [Create and Use a Variable Sets](/terraform/tutorials/cloud-get-started/cloud-create-variable-set) and [Create Infrastructure](/terraform/tutorials/cloud-get-started/cloud-workspace-configure) tutorials to set environment and Terraform variables in HCP Terraform. + +### Environment variables + +HCP Terraform performs Terraform runs on disposable Linux worker VMs using a POSIX-compatible shell. Before running Terraform operations, HCP Terraform uses the `export` command to populate the shell with environment variables. + +Environment variables can store provider credentials and other data. Refer to your provider's Terraform Registry documentation for a full list of supported shell environment variables (e.g., authentication variables for [AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#environment-variables), [Google Cloud Platform](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/getting_started#adding-credentials), and [Azure](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs#argument-reference)). Environment variables can also [modify Terraform's behavior](/terraform/cli/config/environment-variables). For example, `TF_LOG` enables detailed logs for debugging. + +#### Parallelism + +You can use the `TFE_PARALLELISM` environment variable when your infrastructure providers produce errors on concurrent operations or use non-standard rate limiting. The `TFE_PARALLELISM` variable sets the `-parallelism=<N>` flag for `terraform plan` and `terraform apply` ([more about `parallelism`](/terraform/internals/graph#walking-the-graph)). Valid values are between 1 and 256, inclusive, and the default is `10`. HCP Terraform agents do not support `TFE_PARALLELISM`, but you can specify flags as environment variables directly via [`TF_CLI_ARGS_name`](/terraform/cli/config/environment-variables#tf-cli-args). In these cases, use `TF_CLI_ARGS_plan="-parallelism=<N>"` or `TF_CLI_ARGS_apply="-parallelism=<N>"` instead. + +!> **Warning:** We recommend reading and understanding [Terraform parallelism](https://support.hashicorp.com/hc/en-us/articles/10348130482451) prior to setting `TFE_PARALLELISM`. You can also contact HashiCorp support for direct advice. + +#### Dynamic credentials + +You can configure [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials) for certain providers using environment variables [at the workspace level](/terraform/enterprise/workspaces/variables/managing-variables#workspace-specific-variables) or using [variable sets](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets). + +Dynamic credentials allows for using temporary per-run credentials and eliminates the need to manually rotate secrets. + +### Terraform variables + +Terraform variables refer to [input variables](/terraform/language/values/variables) that define parameters without hardcoding them into the configuration. For example, you could create variables that let users specify the number and type of Amazon Web Services EC2 instances they want to provision with a Terraform module. + +```hcl +variable "instance_count" { + description = "Number of instances to provision." + type = number + default = 2 +} +``` + +You can then reference this variable in your configuration. + +```hcl +module "ec2_instances" { + source = "./modules/aws-instance" + + instance_count = var.instance_count + ## ... +} +``` + +If a required input variable is missing, Terraform plans in the workspace will fail and print an explanation in the log. + +## Scope + +Each environment and Terraform variable can have one of the following scopes: + +| Scope | Description | Resources | +| ----------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Run-Specific | Apply to a specific run within a single workspace. | [Specify Run-Specific Variables](/terraform/enterprise/workspaces/variables/managing-variables#run-specific-variables) | +| Workspace-Specific | Apply to a single workspace. | [Create Workspace-Specific Variables](/terraform/enterprise/workspaces/variables/managing-variables#workspace-specific-variables), [Loading Variables from Files](/terraform/enterprise/workspaces/variables/managing-variables#loading-variables-from-files), [Workspace-Specific Variables API](/terraform/enterprise/api-docs/workspace-variables). | +| Workspace-Scoped Variable Set | Apply to multiple workspaces within the same organization. | [Create Variable Sets](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) and [Variable Sets API](/terraform/enterprise/api-docs/variable-sets) | +| Project-Scoped Variable Set | Automatically applied to all current and future workspaces within a project. | [Create Variable Sets](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) and [Variable Sets API](/terraform/enterprise/api-docs/variable-sets) | +| Global Variable Set | Automatically applied to all current and future workspaces within an organization. | [Create Variable Sets](/terraform/enterprise/workspaces/variables/managing-variables#variable-sets) and [Variable Sets API](/terraform/enterprise/api-docs/variable-sets) | + +## Variable set ownership + +Projects and organizations can both own variable sets. The owner of a variable set can determine the precedence of that set. + +Use organization-owned variable sets to share variables across multiple projects. Managing organization-owned variable sets [requires a higher permission level](/terraform/enterprise/workspaces/variables/managing-variables#permissions) because you can apply these sets to any project in your organization. + +Use project-owned variable sets to share variables across multiple workspaces within a single project. Project-owned variable sets only require permissions on the project itself, rather than organization-level permissions. + +Refer to [**Manage variable sets**](/terraform/enterprise/workspaces/variables/managing-variables#permissions) for more details on variable set permissions. + +## Precedence + +> **Hands On:** The [Manage Multiple Variable Sets in HCP Terraform](/terraform/tutorials/cloud/cloud-multiple-variable-sets) tutorial shows how to manage multiple variable sets and demonstrates variable precedence. + +There may be cases when a workspace contains conflicting variables of the same type with the same key. HCP Terraform marks overwritten variables in the UI. + +HCP Terraform prioritizes and overwrites conflicting variables according to the following precedence: + +### 1. Priority global variable sets + +If [prioritized](/terraform/enterprise/workspaces/variables#precedence-with-priority-variable-sets), variables in a global variable set have precedence over all other variables with the same key. + +### 2. Priority project-scoped variable set owned by an organization + +If [prioritized](/terraform/enterprise/workspaces/variables#precedence-with-priority-variable-sets), variables in a priority project-scoped variable set have precedence over variables with the same key set at a more specific scope. Prioritized variables sets owned by organizations take precedence over priority variable sets owned by projects. + +### 3. Priority workspace-scoped variable set owned by an organization + +If [prioritized](/terraform/enterprise/workspaces/variables#precedence-with-priority-variable-sets), variables in an organization-owned variable set scoped to a workspace have precedence over variables with the same key set at a more specific scope. Prioritized variables sets owned by organizations take precedence over sets owned by projects. + +### 4. Priority project-scoped variable set owned by a project + +If [prioritized](/terraform/enterprise/workspaces/variables#precedence-with-priority-variable-sets), variables in a priority project-scoped variable set have precedence over variables with the same key set at a more specific scope. + +### 5. Priority workspace-scoped variable set owned by a project + +If [prioritized](/terraform/enterprise/workspaces/variables#precedence-with-priority-variable-sets), variables in a priority workspace-scoped variable set have precedence over variables with the same key set at a more specific scope. + +### 6. Command line argument variables + +When using a CLI workflow, variables applied to a run with either `-var` or `-var-file` overwrite workspace-specific and variable set variables that have the same key. + +### 7. Local environment variables prefixed with `TF_VAR_` + +When using a CLI workflow, local environment variables prefixed with `TF_VAR_` (e.g., `TF_VAR_replicas`) overwrite workspace-specific, variable set, and `.auto.tfvars` file variables that have the same key. + +### 8. Workspace-specific variables + +Workspace-specific variables always overwrite variables from variable sets that have the same key. Refer to [overwrite variables from variable sets](/terraform/enterprise/workspaces/variables/managing-variables#overwrite-variable-sets) for details. + +### 9. Workspace-scoped variable owned by a project + +Variables in workspace-scoped variable sets are only applied to a subset of workspaces in a project. + +When workspace-scoped variable sets have conflicting variables, HCP Terraform compares the variable set names and uses values from the variable set with lexical precedence. Terraform and HCP Terraform operate on UTF-8 strings, and HCP Terraform sorts variable set names based on the lexical order of Unicode code points. + +For example, if you apply `A_Variable_Set` and `B_Variable_Set` to the same workspace, HCP Terraform will use any conflicting variables from `A_Variable_Set`. This is the case regardless of which variable set has been edited most recently. HCP Terraform only considers the lexical ordering of variable set names when determining precedence. + +Variables sets scoped to workspaces that are owned by projects take precedence over sets with the same scope that are owned by organizations. + +### 10. Project-scoped variable set owned by a project + +Variables in project-scoped variable sets are only applied to the workspaces within the specified projects. + +When project-scoped variable sets have conflicting variables, HCP Terraform compares the variable set names and uses values from the variable set with lexical precedence. Terraform and HCP Terraform operate on UTF-8 strings, and HCP Terraform sorts variable set names based the on lexical order of Unicode code points. + +For example, if you apply `A_Variable_Set` and `B_Variable_Set` to the same project, HCP Terraform uses any conflicting variables from `A_Variable_Set`. This is the case regardless of which variable set has been edited most recently. HCP Terraform only considers the lexical ordering of variable set names when determining precedence. + +Variables sets owned by projects take precedence over those owned by organizations. + +### 11. Workspace-scoped variable set owned by an organization + +Variables in workspace-scoped variable sets are only applied to the specified workspaces in an organization. + +When workspace-scoped variable sets have conflicting variables, HCP Terraform compares the variable set names and uses values from the variable set with lexical precedence. Terraform and HCP Terraform operate on UTF-8 strings, and HCP Terraform sorts variable set names based on the lexical order of Unicode code points. + +For example, if you apply `A_Variable_Set` and `B_Variable_Set` to the same workspace, HCP Terraform will use any conflicting variables from `A_Variable_Set`. This is the case regardless of which variable set has been edited most recently. HCP Terraform only considers the lexical ordering of variable set names when determining precedence. + +### 12. Project-scoped variable set owned by an organization + +Variables in project-scoped variable sets are only applied to the workspaces within the specified projects. + +When project-scoped variable sets have conflicting variables, HCP Terraform compares the variable set names and uses values from the variable set with lexical precedence. Terraform and HCP Terraform operate on UTF-8 strings, and HCP Terraform sorts variable set names based the on lexical order of Unicode code points. + +For example, if you apply `A_Variable_Set` and `B_Variable_Set` to the same project, HCP Terraform uses any conflicting variables from `A_Variable_Set`. This is the case regardless of which variable set has been edited most recently. HCP Terraform only considers the lexical ordering of variable set names when determining precedence. + +### 13. Global variable sets + +Workspace and project-scoped variable sets always take precedence over global variable sets that are applied to all workspaces within an organization. Terraform does not allow global variable sets to contain variables with the same key, so they cannot conflict. + +### 14. `*.auto.tfvars` variable files + +Variables in the HCP Terraform workspace and variables provided through the command line always overwrite variables with the same key from files ending in `.auto.tfvars`. + +### 15. `terraform.tfvars` variable file + +Variables in the `.auto.tfvars` files take precedence over variables in the `terraform.tfvars` file. + +<Note> + +Although HCP Terraform uses variables from `terraform.tfvars`, Terraform Enterprise currently ignores this file. + +</Note> + +## Precedence with priority variable sets + +You can select to prioritize all values of the variables in a variable set. +When a variable set is priority, the values take precedence over any variables with the same key set at a more specific scope. + +For example, variables in a priority global variable set would take precedence over all variables with the same key. + +If two priority variable sets with the same scope and ownership include the same variable key, HCP Terraform will determine precedence by the alphabetical order of the variable sets' names. + +While a priority variable set can enforce that Terraform variables use designated values, it does not guarantee that the configuration uses the variable. A user can still directly modify the Terraform configuration to remove usage of a variable and replace it with a hard-coded value. For stricter enforcement, we recommend using policy checks or run tasks. + +## Precedence example + +Consider an example workspace that has the following different kinds of variables and variable sets: + +| Source | Priority | Ownership | Scope | +| ------------------------------------------------------------- | -------- | ------------ | --------- | +| Priority **global** variable set | true | organization | global | +| Priority organization-owned **project-scoped** variable set | true | organization | project | +| Priority organization-owned **workspace-scoped** variable set | true | organization | workspace | +| Priority project-owned **project-scoped** variable set | true | project | project | +| Priority project-owned **workspace-scoped** variable set | true | project | workspace | +| Command line argument | N/A | N/A | run | +| Local environment variable | N/A | N/A | workspace | +| **Workspace-specific** variable | N/A | N/A | workspace | +| Project-owned **workspace-scoped** variable set | false | project | workspace | +| Project-owned **project-scoped** variable set | false | project | project | +| Organization-owned **workspace-scoped** variable set | false | organization | workspace | +| Organization-owned **project-scoped** variable set | false | organization | project | +| **Global** variable set | false | organization | global | + +If these variables and variable sets had the following variables applied: + +| Source (priority/ownership/scope) | Region | Var1 | Replicas | +| ------------------------------------------------------------- | ----------- | ---- | -------- | +| Priority **global** variable set | `us-east-1` | | | +| Priority organization-owned **project-scoped** variable set | `us-east-2` | | | +| Priority organization-owned **workspace-scoped** variable set | `us-west-1` | | | +| Priority project-owned **project-scoped** variable set | `eu-east-2` | | | +| Priority project-owned **workspace-scoped** variable set | `eu-west-1` | | | +| Command line argument | `us-west-2` | | `9` | +| Local environment variable | | | `8` | +| **Workspace-specific** variable | | `h` | `1` | +| Project-owned **workspace-scoped** variable set | | `y` | `2` | +| Project-owned **project-scoped** variable set | | | `4` | +| Organization-owned **workspace-scoped** variable set | | `z` | `3` | +| Organization-owned **project-scoped** variable set | | | `5` | +| **Global** variable set | | | `6` | + +When you trigger a run through the command line, these are the final values HCP Terraform assigns to each variable: + +| Variable | Value | +| -------- | ----------- | +| Region | `us-east-1` | +| Var1 | `h` | +| Replicas | `9` | diff --git a/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/managing-variables.mdx b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/managing-variables.mdx new file mode 100644 index 0000000000..78dd91d594 --- /dev/null +++ b/content/ptfe-releases/v000011-1/docs/enterprise/workspaces/variables/managing-variables.mdx @@ -0,0 +1,248 @@ +--- +page_title: Manage variables and variable sets in Terraform Enterprise +description: >- + Use workspace variables and variable sets to customize Terraform Enterprise + runs. +source: terraform-docs-common +--- + +# Manage variables and variable sets + +You can set variables specifically for each workspace or you can create variable sets to reuse the same variables across multiple workspaces. Refer to the [variables overview](/terraform/enterprise/workspaces/variables) documentation for more information about variable types, scope, and precedence. You can also set variable values specifically for each run on the command line. + +You can create and edit workspace-specific variables through: + +- The HCP Terraform UI, as detailed below. +- The Variables API for [workspace-specific variables](/terraform/enterprise/api-docs/workspace-variables) and [variable sets](/terraform/enterprise/api-docs/variable-sets). +- The `tfe` provider's [`tfe_variable`](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/variable) resource, which can be more convenient for bulk management. + +## Permissions + +You must have [**Read variables** permission](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) to view the variables for a particular workspace and to view the variable sets in your organization. To create or edit workspace-specific variables within a workspace, you must have [**Read and write variables**](/terraform/enterprise/users-teams-organizations/permissions#general-workspace-permissions) for that workspace. + +To create, update, or delete organization-owned variable sets, you must be one of the following: + +- A member of the [owners team](/terraform/enterprise/users-teams-organizations/permissions#organization-owners) +- A member of a team with [**Manage all projects**](/terraform/enterprise/users-teams-organizations/permissions#manage-all-projects) +- A member of a team with [**Manage all workspaces**](/terraform/enterprise/users-teams-organizations/permissions#manage-all-workspaces) + +To create, edit, or apply project-owned variable sets, you must be part of a team with one of the following: + +- **Write** project permissions +- **Maintain** project permissions +- **Admin** project permissions +- [**Manage variable sets**](/terraform/enterprise/users-teams-organizations/permissions#general-project-permissions) project permissions +- [**Manage all projects**](/terraform/enterprise/users-teams-organizations/permissions#manage-all-projects) organization permissions + +## Run-Specific Variables + +Terraform 1.1 and later lets you set [Terraform variable](/terraform/enterprise/workspaces/variables#terraform-variables) values for a particular plan or apply on the command line. These variable values will overwrite workspace-specific and variable set variables with the same key. Refer to the [variable precedence](/terraform/enterprise/workspaces/variables#precedence) documentation for more details. + +You can set run-specific Terraform variable values by: + +- Specifying `-var` and `-var-file` arguments. For example: + + terraform apply -var="key=value" -var-file="testing.tfvars" +- Creating local environment variables prefixed with `TF_VAR_`. For example, if you declare a variable called `replicas` in your configuration, you could create a local environment variable called `TF_VAR_replicas` and set it to a particular value. When you use the [CLI Workflow](/terraform/enterprise/run/cli), Terraform automatically identifies these environment variables and applies their values to the run. + +Refer to the [variables on the command line](/terraform/language/values/variables#variables-on-the-command-line) documentation for more details and examples. + +## Workspace-Specific Variables + +To view and manage a workspace's variables, go to the workspace and click the **Variables** tab. + +The **Variables** page appears, showing all workspace-specific variables and variable sets applied to the workspace. This is where you can add, edit, and delete workspace-specific variables. You can also apply and remove variable sets from the workspace. + +The **Variables** page is not available for workspaces configured with `Local` [execution mode](/terraform/enterprise/workspaces/settings#execution-mode). HCP Terraform does not evaluate workspace variables or variable sets in local execution mode. + +### Add a Variable + +To add a variable: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and select the workspace you want to define a variable for. + +2. Go to the workspace **Variables** page and click **+ Add variable** in the **Workspace Variables** section. + +3. Choose a variable category (Terraform or environment), optionally mark the variable as [sensitive](#sensitive-values), and enter a variable key, value, and optional description. For Terraform variables only, you can check the **HCL** checkbox to enter a value in HashiCorp Configuration Language. + + Refer to [variable values and format](#variable-values-and-format) for variable limits, allowable values, and formatting. + +4. Click **Save variable**. The variable now appears in the list of the workspace's variables and HCP Terraform will apply it to runs. + +### Edit a Variable + +To edit a variable: + +1. Click the ellipses next to the variable you want to edit and select **Edit**. +2. Make any desired changes and click **Save variable**. + +### Delete a Variable + +To delete a variable: + +1. Click the ellipses next to the variable you want to delete and select **Delete**. +2. Click **Yes, delete variable** to confirm your action. + +## Loading Variables from Files + +You can set [Terraform variable](/terraform/enterprise/workspaces/variables#terraform-variables) values by providing any number of [files ending in `.auto.tfvars`](/terraform/language/values/variables#variable-files) to workspaces that use Terraform 0.10.0 or later. When you trigger a run, Terraform automatically loads and uses the variables defined in these files. If any variable from the workspace has the same key as a variable in the file, the workspace variable overwrites variable from the file. + +You can only do this with files ending in `auto.tfvars` or `terraform.tfvars`. You can apply other types of `.tfvars` files [using the command line](#run-specific-variables) for each run. + +~> **Note:** HCP Terraform loads variables from files ending in `auto.tfvars` for each Terraform run, but does not automatically persist those variables to the HCP Terraform workspace or display them in the **Variables** section of the workspace UI. + +## Variable Sets + +> **Hands On:** Try the [Manage Variable Sets in HCP Terraform tutorial](/terraform/tutorials/cloud/cloud-multiple-variable-sets) tutorial. + +Variable sets are reusable collections of variables that you can apply to multiple workspaces. You can create variable sets under an organization or a project. Whether the variable set is owned by an organization or a project determines the permissions required to manage that set. Learn more about [variable set permissions](#permissions). + +HCP Terraform does not evaluate variable sets during Terraform runs for workspaces configured with `Local` [execution mode](/terraform/enterprise/workspaces/settings#execution-mode). + +Organizations or projects can own variable sets. To view variable sets, click **Settings** in your organization or project, then click **Variable sets**. + +The **Variable sets** page lists all of the organization's or project's variable sets. Click on a variable set to open it and review details about its variables and scoping. + +### Create Variable Sets + +To create a variable set: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the **Settings** page for your organization or project. + +2. Click **Variable Sets**. + +3. Click **Create variable set**. + +4. Choose a descriptive **Name** for the variable set. You can use any combination of numbers, letters, and characters. + +5. Write an optional **Description** that tells other users about the purpose of the variable set and what it contains. + +6. Choose a variable set scope: + - Organization-owned + - **Apply globally:** HCP Terraform automatically applies this global variable set to all existing and future workspaces. + - **Apply to specific projects and workspaces:** Use the text fields to search for and select workspaces and projects to apply this variable set to. This affects all current and future workspaces for any selected projects. After creation, users can also [add this variable set to their workspaces](#apply-or-remove-variable-sets-from-inside-a-workspace). + - Project-owned + - **Apply to the entire project:** HCP Terraform automatically applies this variable set to all existing and future workspaces in the project. + - **Apply to specific workspaces in the project:** Use the text fields to search for and select workspaces to apply this variable set to. After creation, users can also [add this variable set to their workspaces](#apply-or-remove-variable-sets-from-inside-a-workspace). + +7. Add one or more variables: Click **+ Add variable**, choose a variable type (Terraform or environment), optionally mark the variable as [sensitive](#sensitive-values), and enter a variable name, value, and optional description. Then, click **Save variable**. + + Refer to [variable values and format](#variable-values-and-format) for variable limits, allowable values, and formatting. + + ~> **Note:** HCP Terraform will error if you try to declare variables with the same key in multiple global variable sets. + +8. Click **Create variable set.** HCP Terraform adds the new variable set to any specified workspaces and displays it on the **Variable Sets** page. + +### Edit Variable Sets + +To edit or remove a variable set: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the **Settings** page for your organization or project. + +2. Click **Variable Sets**. + +3. Select the variable set you want to edit. That specific variable set page appears, where you can change the variable set settings. Refer to [create variable sets](#create-variable-sets) for details. + +### Delete Variable Sets + +Deleting a variable set can be a disruptive action, especially if the variables are required to execute runs. We recommend informing organization, project, and workspace owners before removing a variable set. + +To delete a variable set: + +1. Sign in to [HCP Terraform](https://app.terraform.io/) or Terraform Enterprise and navigate to the **Settings** page for your organization or project. + +2. Click **Variable Sets**. + +3. Select **Delete variable set**. Enter the variable set name and click **Delete variable set** to confirm this action. HCP Terraform deletes the variable set and removes it from all workspaces. Runs within those workspaces will no longer use the variables from the variable set. + +### Apply or Remove Variable Sets From Inside a Workspace + +To apply a variable set to a specific workspace: + +1. Navigate to the workspace and click the **Variables** tab. The **Variables** page appears, showing all workspace-specific variables and variable sets applied to the workspace. + +2. In the **Variable sets** section, click **Apply Variable Set**. Select the variable set you want to apply to your workspace, and click **Apply variable set**. The variable set appears in the workspace's variable sets list and HCP Terraform will now apply the variables to runs. + +To remove a variable set from within a workspace: + +1. Navigate to the workspace and click the **Variables** tab. The **Variables** page appears, showing all workspace-specific variables and variable sets applied to the workspace. +2. Click the ellipses button next to the variable set and select **Remove variable set**. +3. Click **Remove variable set** in the dialog box. HCP Terraform removes the variable set from this workspace, but it remains available to other workspaces in the organization. + +## Overwrite Variable Sets + +You can overwrite variables defined in variable sets within a workspace. For example, you may want to use a different set of provider credentials in a specific workspace. + +To overwrite a variable from a variable set, [create a new workspace-specific variable](#workspace-specific-variables) of the same type with the same key. HCP Terraform marks any variables that you overwrite with a yellow **OVERWRITTEN** flag. When you click the overwritten variable, HCP Terraform highlights the variable it will use during runs. + +Variables within a variable set can also automatically overwrite variables with the same key in other variable sets applied to the same workspace. Though variable sets are created for the organization or project, these overwrites occur within each workspace. Refer to [variable precedence](/terraform/enterprise/workspaces/variables#precedence) for more details. + +## Priority Variable Sets + +The values in priority variable sets overwrite any variables with the same key set at more specific scopes. This includes variables set using command line flags, or through`.*auto.tfvars` and `terraform.tfvars` files. + +It is still possible for a user to directly modify the Terraform configuration and remove usage of a variable and replace it with a hard coded value. For stricter enforcement, we recommend using policy checks or run tasks. +Refer to [variable precedence](/terraform/enterprise/workspaces/variables#precedence-with-priority-variable-sets) for more details. + +## Variable Values and Format + +The limits, allowable values, and required format are the same for both workspace-specific variables and variable sets. + +### Security + +HCP Terraform encrypts all variable values securely using [Vault's transit backend](/vault/docs/secrets/transit) prior to saving them. This ensures that no out-of-band party can read these values without proper authorization. However, HCP Terraform stores variable [descriptions](#variable-description) in plain text, so be careful with the information you save in a variable description. + +We also recommend passing credentials to Terraform as environment variables instead of Terraform variables when possible, since Terraform runs receive the full text of all Terraform variable values, including [sensitive](#sensitive-values) ones. It may print the values in logs and state files if the configuration sends the value to an output or a resource parameter. Sentinel mocks downloaded from runs will also contain the sensitive values of Terraform variables. + +Although HCP Terraform does not store environment variables in state, it can include them in log files if `TF_LOG` is set to `TRACE`. + +#### Dynamic Credentials + +An alternative to passing static credentials for some providers is to use [dynamic credentials](/terraform/enterprise/workspaces/dynamic-provider-credentials). + +Dynamic credentials allows for using temporary per-run credentials and eliminates the need to manually rotate secrets. + +### Character Limits + +The following limits apply to variables: + +| Component | Limit | +| ----------- | -------------- | +| description | 512 characters | +| key | 128 characters | +| value | 256 kilobytes | + +### Multi-Line Text + +You can type or paste multi-line text into variable value text fields. + +### HashiCorp Configuration Language (HCL) + +You can use HCL for Terraform variables, but not for environment variables. The same Terraform version that performs runs in the workspace will interpret the HCL. + +Variable values are strings by default. To enter list or map values, click the variable’s **HCL** checkbox (visible when editing) and enter the value with the same HCL syntax you would use when writing Terraform code. For example: + +```hcl +{ + us-east-1 = "image-1234" + us-west-2 = "image-4567" +} +``` + +### Sensitive Values + +!> **Warning:** There are some cases when even sensitive variables are included in logs and state files. Refer to [security](#security) for more information. + +Terraform often needs cloud provider credentials and other sensitive information that should not be widely available within your organization. To protect these secrets, you can mark any Terraform or environment variable as sensitive data by clicking its **Sensitive** checkbox that is visible during editing. + +Marking a variable as sensitive makes it write-only and prevents all users (including you) from viewing its value in the HCP Terraform UI or reading it through the Variables API endpoint. + +Users with permission to read and write variables can set new values for sensitive variables, but other attributes of a sensitive variable cannot be modified. To update other attributes, delete the variable and create a new variable to replace it. + +[permissions-citation]: #intentionally-unused---keep-for-maintainers + +### Variable Description + +!> **Warning:** Variable descriptions are not encrypted, so do not include any sensitive information. + +Variable descriptions are optional, and help distinguish between similarly named variables. They are only shown on the **Variables** page and are completely independent from any variable descriptions declared in Terraform CLI. diff --git a/content/ptfe-releases/v000011-1/img/docs/ado-required-status-check.png b/content/ptfe-releases/v000011-1/img/docs/ado-required-status-check.png new file mode 100644 index 0000000000000000000000000000000000000000..0a584d490c582308038d283ca5f97441ef642244 GIT binary patch literal 232272 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%0DeOeu$?Gs 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 F`Co0)WWoRd literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/azure-devops-server-public-keys.png b/content/ptfe-releases/v000011-1/img/docs/azure-devops-server-public-keys.png new file mode 100644 index 0000000000000000000000000000000000000000..fa9488c0ddb653fed2005314a8adc76ed9716f3f GIT binary patch literal 132652 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%0De)u$$zVfSzgq2V4Z*vh0 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%0D^V^qCy0NA&GkZ$Me4gkd z0lRUwBWV&&OdWwe7n+fwY#qR*Po4k$Zy0IO;#8NqtyfTPWaWc7UDu`}XouEc`+B^u z5!7(owtgdG3{pey9#81ecoH;=YIWt-#d&ZnP_3*WyBW0%v)eieD=O$Dc>J1x*Yd9m zs|KFaJriU#3#%RErTwINx8Px(_vI0K_I^^J<H#8KCeOs{xwXr4wlwmLnz@fOGjsbb z(Ya@TntC5m#a?bi5(@74)!@wRR9;|uV9OFCa?~2Gy?p~_zJFAr@(jbd_tJ5mXQK_+ zVBsoH+vWVp8P?BMYoI#Or3^wnzHae!eAe+J-0kg7LOq{I`V9KRM1*!A?d~buQ-x4$ ziM(RmLgUwoFqK;y<ej0vcDJ;34|;)c1<g`N$p|_WqZk1305|l}|GGVY^bYmpjpDcK zFZwn~8jz~bzG^T!Eautg9<#!>_l-6fDlmsu-#?%&^UagF>+CwR-adG_K!<z%(eslu zdR^pi1MUhv`S+NU-xhdB+n!?Q<pt6L1+%9Zs~i`UjoJ&ejEW?1?jO?Jp7o50jIynK z0eR7&(;Du4;P1(>-(lD4JILQbPE$|7(>>l1kDLFp5<SXFDS_Np-wvf!CUr3Wjl;4q zC5S4n;HMFt-#icxG;F=z3+e0-55(|K@_GoF)Dh?p=V|cz+Y{!0EOScwF(m&@OnZ{{ zL-~iXxQ0)!*u-p=Kg+{e@qK@!7p`BfD?EyQ7_oX#JwSc_CruG5>&%&+{Qh8o+OnD; z_d!`$yLYh&EyD)^o%QCQ9yusxP0>I0?<d=dYzg6k0hn`7UZ?tGjjC>Fk!OHuua^5_ zeN`#^u6LzD#PE2Wn#&`~7Q9wcf`mLeN=%9JFzLTM|8tG-s3k2fEZ5+`G=r#1wOZrd z3n_j$g=c%fZ&F5S6=Nio{^G&HyAC1_`DYiykAiP_nMoSt)!Gb=QKcg5Yg`;OVkwg< zS=mlR25O-ikNF_AY1~^PY)ZXz)1^(y%bHAHN28{LcNJxm2(`+(M^4=V6JbO}N<uVc z5;Ln%fhJc=zu^8RIU>nMxnwZx#k7KB^{}C4%Od-MP?|_d32k*luCs>M<?oV~evUPs zJs&|<)mkaxcRooAxP1b(M>6IuZWEqlAoa&58y&L4+n*lniOq%1JWi6LUDc+R+zJh@ z+rN^O%%Qq)AV8iTt}V%nLwm8l_FPBQP+1g|RQ;Y^tn@Mo9ykhI)={Ua-Am)0K<{nc zwV#=FZ7q+!q#r)INEZKT{HPPAa>w^L9M6`EcYsMu(4#9HO2swPqrRz@H!%-+e+upU zIabv{uH}1pm?>{5DMlTsGE)o|%C|?=TiheW-14<-^`|?$1nv&`zdA*$=j=Ma*Oaf* zy8f#zmpH&<QNu+ygfq6a)VO2c!e2GhoJ=L>1{3!6c5UC16;fJ%%*bUZX!f(?MRy*3 zh==nka^5j2;5YMvx6&Afdk)DtN0+U$kg`RPDNOo0#Lo>ya-#s)Fv(?KB;au}j_k$F zVMzXKMf$F#bXZz5kvxaTYVe)Oqg#k|XM5E=f)tw#Ac~0?^(ihYkmV!($V!>iW>0D@ z@p!c-!By5|oL;g*E@x)4%+!9hnMLDmt4%_eG&~s(pHo!^->UfS57jdc_F_IkI*b&Q zikJ*Z*4t`~%uiMJIk1vs*Sl(O{C}zCGiQze4QK3kFjmu%=bWYcDAy8X_hN{1#G|-= zlkHcjnORT;Z}F2aWWAYREOyy+y^#yiO@pTUDzZs5wnL}Hna<y;t1HsaZf@2Nv3b1p zq30_{Z8sk1OX2L-fauZbB*)nx4($Pz*N0-%!dwUmOv^cZ5?6MWyr)r<o)W~i#n2?e zOm}9!84?JlJ+yJ|E49cl*HJV~juJ>9=3&aEVM)J?#|ukp?HR*BE#92n>u|ZJ5*zyM z=lupjT!<X;P89V)o6EC17S97ieVJyj+igN*YW>it#h|kk*+k_pbI%`K3n+04D@m10 zSWl`yo-Ly`#$|6{Je(uXS)v`_O$;Wo^7{G}kIN`hW`?u|qDj#u+I8<_Lq>)!P1!C$ zKYr4Wl%0$1#Q_7iP@QdcSV`C)p<LY&_R-6Cy{~MUIA{ylcFc`!s%V<q<47H2Uj}Ym zXB9sSIvfmTd$RIAEyqIS0#UfOX4kfvD84^GsfVzB|9iK^)shnOwDIq`j%jULGHT~b zi=@QW*{xekJ##^7m{gn-@4Rb~*JVau&)a@^`dq|PqPxg<<;AvBa5>w`k<|oMXi$3h ztKB2oCi|U)q<5<|4}oxNkJY7o_siO|(*DTpE81r8*Mn>fC&9>S7YN7v|DrAu{dhFm zRWH}vqwFuxS2WX)d^Y-wOj|<BP360#5cc`e$_dGNw6v}$DQ|bok{NY0kvRW^Qdd8W zRZaCX^CM>kS=dG*Ys}}E`;__pYSG`O?nyn*kJ6E<sLkz7>b+O2gN|&doJOxH4b+|L z?^ZNrXqAir;7HTS{9e_-Qu?uh_fJ+9Kec(bvz2OOUZ14p)OzLR3#r3R#<v~ib02cF z=2yjcA|ufr+gDOEO{S}>b}BmGelAH-(9~GRLNGAXFg*jSer8-XjrQt^ZDhwPuv?Ue zH}=f*db_A$&o5x=*zsgUKmUzQxl;IeOWtiXHAk?o_!nfDH_f<n<6Ci{4gaDOtI;LX zNM}^~k;}5VW*89heMh;QM>)<N;bd#qyNJE^1;Se<DN<e*DZg(yenKf5`10_c9v!~X znsK9&Z1r;B$ut4#^7T5-7q-2Fqv}btQCF8w<1MW$$4&bgdN^*olBCBu(x$uA#ki2U zFHgWlheaN%@Ygr4x-)K;V^hdcPU_23epgRt@2TBTZN5u1fGE~!6$&ijCx5m>|GKAg z=)Iy_Xw)l}t8la6!7g!$GrY~waE_lNAB@cT2^12sMqVZq*U+!Mu<16RF1t@v>|9}9 zapl;O=U_2@xDotX%hB_$^JQMDlR{nNtm3}&E8L9nRKBlDd}@*}$2{4FjWpRxh<rq` zQ}S$c6^-P)$dX|+8%|wU{f;u}i!KA^Y$+Ep&%7A=s#fw36%z}U^ZcMK!vZ=DwL;J8 zFBRcBkgRc7^O885=extnxbU80m&k+|^Yqv&+i!N`LvRWK1E)>=Ci!I{XQsL>U=y4< znlaANd4bwK`|2S19IrU;&{HIH)cF_j%WTspuno0Bm`*{hj=lXa>fxdF<42^?Y$401 z`M3}TIQ)lAz1yv|w%=Dgf-OsbZK24mColulVXm3sL63Rfw2$-ML&2mP4F%hA76!t% zhVOb8VOMM#V<jIeooFYPmyNvOJ${>s8f80Yno8#!N@)hiRF6gADyK#j@xJ?(St%w4 zQ1Y=KxYp~3o#`(n_-EoSdyyHeea?MTV~r!wkz;qpmB$E<SoC__xIFAiXoW&ioY`QK z6{hm~ZOdB2l?42fSELk5C^Rr8oVGV#w&tm3@u#Oy>-=~iQ5B~E!4v3{IIj4$gCT@E zrlIedbIzYb{x>3yiAK{{20k<|(jxMl$Z<G_M#?>phF&I)5FYIeU6Vc?1obKXeALU9 z%V2hLq2&@KlQ8q)x+26#P0j_pAYee>xk5S-J}sV|+h8{sS7P)-4m#p?t~|ElsDqg9 zLT?q$LJ`RgEpSlAE)#G$*XTtipy^jzSef{xMxHznLC^IRH=b)bUob~BUC}vSv~!*# zz;V-zD4~_y4fBKkjcbWZJw%p7HeGPH!pn8{CSyYMkA6Q^X*yJi@J1cz!yA{2wa{rg zy{XPfQkpg0y-(g1wuN-pRm+I01%9<%XIm$yd0P}8bHJy(4DXFbJ+uZN;<`x-t#cTU zL?`em`YuI8OgA6Tv?P+!Kzk4wUb{KuMqcOjEfG5VTYhXX_+deX*{<s!Ih{2(ZOgr< z)<P5FC+Vs)d%HfHL5YU6$SXz5*)xy2)#W|6@j?U@mcfZK(HGVb#Oawox;TBWbw&|3 zkbb<-f%fVY$zXK5=)_|3`)az&3L_Ff@agHnNqxT}mEm)evz+I*4#cDthl}p<28hP9 zy`233^2SFZJJ1poR<4<l-|GF9sLz7Plnp7V3w>7SKDmLotJ1{Og+zk&a`V2$Qz_IY zXPg4qzU(9npa`V+8r4(3+A$?OOzhitxS}*x^^SX5F!?<!0lc48&ie4BBWhD@Ju`3^ zLml0^yFvAbE&*N;#UCo8f`|xbk<K&<n0N|_D(U9)uR#T<lb*l$sg-0>Wm!u0>ibFR z-C^XId8D56XUz@GSJ&rymDyq_hXH-AW4_@%&5{bn;i;jk>LRAte7|kNVVLTlr>`KH z{hI29%6<;rIC1dR(iPpO@rhEUwh;OtTNN43gl7r~2Yc|{#$83Xz$mqeyK$=pv0N2w zgd~tx6J`eP-#qPL_1PyrgcBkIem^<?T(=AHkA&;~(T-#r(3|>VJP#{evGuc^N(srX zbe-Z@vQ%7*CWN@?8%ub1b&T6KfPMl+DAJOv1iM%i6S9%+FmEA|eex@3ngI*4VOdm> zIZCPUh?ISdU@K+)k}B=))FYSy-s6=hAJb9pkkKiZKMxlpL~mIiO*^J595#;KRui)A zwt8vrTH!*NDAtP;chyX8bSQ=inL{6r8&9u1!>b%6SbsGd@*}QD3Q28IYm2|8SLp&B zv*ilCxcXuVq0d`Cw5{&5%<40l^C5Q~8LY|^<T$ta(bi|Tnig|+r#S_lZ}TXP21nGQ zkM-~z7A0*MUJwKpIZZxM)A&gA@1tkOU*ON0<2L>DZk=-}+w0)fdA=L=T-_2j#Dln; z=SU286464Q@c(qxmzyhU@i&kRsLO)-`GN1qI&R((&%SXM^6c*3XV{n)!e(8-92Y&> zUH%vnl~r#&9>BJjE8}c;il{Vzs*TNrPSUrS``S{WOG;#iYF3TsEKrxK8THA(Pi@Xu zOECN|PPCD9_1D#%mZ*^meNkg1KTU5ab{w$s{H=djrB@eMup;F-T{w49&|-F%0`jVd z0Ci+D;q%fSl=n|trd!0{fI@tvWMcES7lvTjUt@RXxjPU>&9`Ff6}D+hdz`oDQk&xJ zP~u`8o82#DlBLxA+8_2%L_=ERPbDS#5*-VV^A1<jR-d^GdG$o1Rruo%MM^y@sL%@o zc!hCW8PXX3>d-^M$b^a#*I5a3kIhm$Evds@r?bP5X37&Ta(&T;!%wF)`eSy))?ld! z;D{Ra7olO>ozGs-TWsC{+n9-m4po+~4AMexAEKO4*aq%%u6^DmO&+$#$w<lV%8}+n zg?HxyMnB=L^>=jGGDLqLNa0*dVPHDC1Y8LDBE7RR&6-BO1izLpa}!@7I{t*sr_v5$ zQG-QQ4uds{@Z=^zer`gSemPZlK~goPgWlzMUlju<=9KNRb9rY%9ln|)*1Qb%kY#p> zx%WC+)q9H@a@-vv$Xhlr**wp#y0vt%x#kUFZok8LgN<i>x2uYzwS~5h)l)49<tH$K zG^W4*6#(8SedRTa(?Rg{^!$3Z(e7|p3@*N~@$*S+rNEYop96{*v8^)jbmS;3!8Ao{ z(znOqo>MfqX`4J>%P=w_S>bXTK8hJ79=x8{<*N|4Zs)18<rBf^;b^t4%H|jJ5h<Ow zKyvjKM_`)sKg}`Xt^!VJKj1Ofxu6H=MBiRCelr$!@FvG>HKAv{W%a>oTD&+`j-rJ5 zFso*IWh%QV8W~}*dhbd1cwcd7vn99MK9OoBZA=?D8x$&hC$vq!9toKLP1I!`cwzX& z+U@<C7N3fuPC-L@POHV+U)#NV)=gXL>06Gt$V~>UxwrVsQ5?&9?D9Pej7~gfd#(t? zI!Dc$zl3cAW?Ka;h=)3Hf;*~};m))_#Ti^5IyIfjP)fA4!|)^m!t~8h23i)Xy-Udx zk1q`RzKz44S;QA~nD*f?R_t{q%HeBWi*BM4g&zkwGgW;UVVQ3Xwh+CqQ<(`JvCxX> zO|(hx;XC(+zC2Vn+jg^#c7ntHe8*-{ZC*;u&k9w`Tt0%ABo3`i*x9VFPOX<~3nQM- z3Al{!!8gfq-XE=tAzNm(pzsl11B7m&`?T=ei-_0^!{hopuAB)rNY}JhOZ(m{zSWw? zoH4FRwq;y?DvG3|C2d}3(xISB<S|V&oMK@3I?V`Nf~!(B3E9G}#}fk3o>9X~)KR0c z!LOBaOl3=reXUQM&cI@O%av)j%H6+u?2^63{Vq}E-QB&@)0)&m)<N?QLGCI~`<!;K zm*<hM&r6J<B`KY_@)M?)2^+aOm$VvA_11%N+o+W4KF1$ietj3?2`?xHN=lrTd~IpR z?V0~f47qt4F{14`oga*M{n#=UMhCs&%3NBDrh{G9r;&;7Usp7F?-pofxF-*k@NF5L z=q%46TP{?BbUng)m_-~faZWr=Il|#ry)D)iw9-%ulJpT_&py_a0lo0}UuLj7C^WiJ zv`W!5I8l&11C`3TYT&qN-S@GTHT_ptxbo?QFWFCLQe~m)Wcka{>eha>`KzfQt<<IX zoX|d&LX0&9H;+?x#ot1G1428?=*xohaw~h*lkM=5KQ5#2DWjkD2YytI_Q41{LBHMl zRde1zDIc%4qR%O*PE~?KjbBuoQHG~=-*gcv^Hr_+GpD*{KZ6W+h(eJg+>Np{sqlp4 z#R~~C9gk}C{PD?NI+MMYE~7c$$Xn|~D<4z%lwaBLl`BJle0Q&kAix}4tJF-j0)iI0 z5I)UOu@c6=SNXSJ<nsLVi^$O_`jv@xwO$J{-V{0IkfSwS3<drwdD%z=eDzg$z1ByN zhg{<;@tw7dT}W6w>hF(=y~>mD<qb5_Lp2U$gu^8x+WJ&dy^*)vHkx{O%%13=a@i(e zb?!)&&6wBR9d0xB!XFG<3Li<odlkS}-L$lK!VpOrjd@NgLHrAcOq<?M^{%=xu4j%E z7Y^U`1$`&3Xk*G%e{>9cPt9!pTQs4koAbLC^K#1f!M|5>FWfAT^q|@>m@iZ8^K9>Y z)ZFmiB87c&^D4lXRfvGNBxXaje-xkMd6Gl2MaK4797i`e@aM;ThR-!FTQ1UT5UE#M zPr-Kfrf)MXQ0&Ot<E6za{hzFO_8z~9O?5>YbKL1KhF(`#Nlffyh8~MDy5fY1yc4if z=806i#9NMu0k0>Np&0U?P2hqP{ZjQ#L9i-j;itbT__JP5vzsT+MPQ||x8*HZ&V9V{ zeiwB~v%VjbVHBmW{o+|Jo!^fF)MYnv;iYSfFjhWNF)g!GdW+p<Wc@k!Q|qbnE9pe? zsD{3uOqFU`Vg|I@VXo-Dl$djc?U{<%Qx}XL@^+4jepU2?iMPx~6`r_<K~aK}Mu?Ir zu8gl-;VVKRS6rL9-;k4*x_L({E8$Hi>#h$^=K2%mU`pbPi!xr<P8bv#v5pHCKE;mq z9TyTi-e=MxbyZj7LM^DrhZ!x1t5xC9Tg&?Ans%B`%R$&a*SBzPfC_28L?F1R9QF&@ zy!o~CVhdB`aJl(a;i7K>6Do+#l~YX4H8&1ZexxAEp|(`fB_&YXU6c?K5!bjEgGN~t zM3Vg2v&y`wwqarNO)o@<y>Q>&v_Q`4p{h{Ur#Z`NMh1^0j%Y&6xYBOX`F)6<%A<}x zUm;bf-C4A>q!gSI=YKu);X8wHhTj3g9ko<Pkqcd!L?69A^&1T5MvH}G_X`}Gg_;Q{ zewmq48@rB_kec|S*66vtSp~;`$(Cjvz3Z`DM@8r3R?o`fd#RV3?zgH%#zeV}>?hy` zF}$;%*YcF7W$ND@q|%%|rE#X5Vc?a69ns}ALdqTWxGu?Wx8;n(RO@~|d4gZ}DnfP+ zO<qd-L<aEoH8Yto{O?3rbEzfxm0M!#qs|7T0{M2FB&z~O3Zh$L^U|toCR7G|SGdZZ zOpz+S82;0}B-maC3$Aw{N1|z4jsemyN`cBNy)N2CKF_^*VlSTpvVQChdq06Ff06P2 zjSVebKqH|KXyh~3_gkH!L%&%$)9?9Bn^HWCEi_!1GEtp8LY+hB)<G!TKe^WE7#Fb= zEm1Jdoa&F8_P)Amwa6*MT^kwJB|RdLV^*I;E^2k8#tn?bVn#B~4m>x@Hfns)L#O&q z2!3|B$e2ckLG7yIy@xshzuvA&tVcBdE$ukur>W`Ddr|FFMNGesd;j5ke@h}AGY?sd z^Ahq@atnU@=Pz`|Q#r7-nfYG7esSNTqR!utb6hU;4i&Z8@;jor&x%aa{$K}rPTwJ3 z;csTK&(7atCXzvRgtDD&!x6YxkUWX_EFFxr{JY1|YB=uDQ>kvhc}?`T3(NPcgYLDI zg(l7b$tm4g>n%QB-Ek7Bts?%Hk!egDS#;OypI`l0t|A`HED3NXv+dC#p`u#Whvi%D zbmoffMn?LfFIZ^lkg66AFx!hB?%Jh-3dhR{ER`0%v6<YyYj>wona#5B*7rD2v5NvD z1Zp(W(Wg=A{ZXf&1(gF~FDborW{EV_Jmk03782#yRHNiKl`2)Uya#Tf%nOd}m>))o zFxj5RfZizfV$cTL7_ZN4_<LprCQ;EZI`_8R&f*SKld5kv*|UL%`?h6n1dtyIRU8Q! zwf7289<Ky8o-~8DH&^xewx_Nb-#LEj7#{o?%x)ZrkMRr=AHiXa7Qw#(UiPae>CE%J zW{AzOIP)v80gT-gz_0B4cngNXTH%p+b^nIa82hL1p66ndQc?<B*OFD!&mwH6aZ6W- zzs4G6m*2p6`<}-RP9w(tbc)#07FX0_;jvT$EbTFWr#nB!pDpN=oT0xk1ed|aHjBuq z&#mbM^IXf}qPx$tqSR)d$^qqkUDc9~_n}LPqZ;VWgc2QpTK2?HU2}!&61-CSgh}Zl zE3Ck*+b?c+uIRJBK}P4f*{Q5@zO@J1vk+V7;~}e)NME!;XPzU52zHmwyF`9E@x$cq z-o-rV5vN|GT)uTGC(SGWRzIBSdyrbt&9lX~URR-HGv%J!(odRP{K*Ni5$?zp?G6;l z7WG%t&rwDx!cDAdL~F;bs{&$EDf8zXD~X_t!=xxWqG9RrmJqZVolG4+16_!|ng^Rt zv#<KH%p^f$u=$^rqoG9e@^aW&8+eOqxO>^!n*hpuS;1^c_-@&y?zEp_=B@Kwe}AwM z`a%XCM2+lr>)x)^p{f&^b0$-@E!NU0jG>oa5G1_^@qp*2S^Xvc{iR6<$uq)biQ7U1 z-47%+VZNAHu|N`i>0gVgJHEAN?qN{8<0@sXM|JHQ;)<ahz;PVSz;|Bb(Dk<n%o?}> zr=n#+#nsMx(7~L0`Ls{L^8N7T{Au$=h<u;J$=CN{lrHU6PUEI3kur%!x1|~uLlt+S z7po!Zo-X~0;R8Zr_{a!d=dumWq#9?M1w8jE8)z0@s{2-K;w<tAvqGutLNCw2=1&2_ zs%8(0cP~jA)BZLjTSc7RTq6_olh^@JR!K@A%i-RSJ56-iN+*CZ33JVS<25kC9-Y)i zAF>Sh2lI^ur%MXL16th1=F#d;9WZW)Y~SiuWr}|+C2aj@7kQ3)^_%^E;B1-!_U%So zOiV}#M!DKO`hTr_?A!nQ2VL&LItyR!`S<mmDOsC*m&)U3y&tvAsjunX<4#dR2p^<H zfXl37^^^t7I?rO&U|Q*?nlS%KOV+6$=<;{Go1xN^dhO_UsV8BUN~%+wIdv)ZMgsQq z3Hjg$LRNjgHJIi6m)u!^MA}@0ndIjxKGGD-<4Snr3>Lt@f0dh0GRbdd-0$srSYcj4 zhU6|N=}VE$6@jz@u%z9Y2XFXk$v6t4FURO*a(jE?t|=P*K#RMj1^OAW&G~4Qbx=7> z*aq+oCzCTi9EmVuxgz;1_JuoeTh2PUZORUm%z`uek+FCm`Hlx~gpM`Uvlb_-BhQ`! z^Gk)*PI9AEImv@il~Jq;S*O)U`6<yow)b2|*o@<4Z$hsBci8^-x0m1?42DQkzPoAO z@!qMrtbVrIcGV@^42WH}W(ilI!;v=@XN+${1-+r-rz^}|zy24n%Ca1wTY3mx^LUM3 zi;viVL~1<@BgiNFZF>uJ9;k{il4Ad?9994q7%p>{fpk}yx!o)WVEzdYh0p4OZCPj; z#8u9-Hi{C*4+3Ui!wj<3<8vZy?=$wH{{S@jk{kX@;(r=k|JG+rgE62xWWQ(O`f<e5 z?;_-HNJV{TbpnMIam@VvdIppvtCqxkui+Zls`S1Wbg2ChTSAJ3j3dzgukG9nhVT!d z6}$3>0&4OWXc7G#Cv#5i1K7s~OR1=BOR1UEX1~;}9swCZ($<i;0xhSm%4^3Tljlvs zIc;?Rc?7Y&bl)AOH(#uF=Ji3rWee&kPs$fC0?pE9K<x7o$}*@zcM3XK>cGw{0YIb2 z`;AXZ0daE-9#ab>VYaVfBT{NuW2x$@BZ6hC$+qK1pBXg`Jy(beSmJ#^AN+tVVNP{p z@0&FO(XAqM^Y{%|?(68rsNBs7_@6Jdq(s^q6Vk~mHz&n&5(@|K;0UzM_u<z7?!{?J zF910VfZRBP$t?v2-$hwK!G+#6W4YD)xhlY>m^k{R*w52(=ds2)0BuIO-c@+BoD2G7 zZwLp&9iW1s(ZQ$#se4T-pvs~_^iPimOVtpQ6NZ^@)ZBjw8puGW`>z}H@C^-)Gxh)_ zuOc*MCdd-nzajP867<KZz*ethZ+cCU`{}P7>sB<6MM*K`MV-mUQdec$1l9iAn5$<J zV)*l#c8Q;43;-6zWDV15h9Bw^h7B|qHL#CfjcEa2+j{&K?Q-lGj+2LTn!ng?ZI<Sw z@?St?-+hvxXy2?lSmrKk=K$<EtEL+tM!O`i=Zk<1(@<IQA6K@&bO}Kv1Eh4yBE`Ja z@7xEOg4nK+7wx*d!Mqc2luC1Y0;0mi5q&6Fg^jz{fQ$ELgy{f4A<Ue<NpwM*uU5EO zoB__Hsvq3Q>5MRa0R6`9%U>2&0q_8<V<o+#V)v%PWfn-(zMR4M)3N~KREPY%f|Y;% zHm$ZCVCA;X%%4>Ma04VsOSj8<9g-UkIAEUY@$-)jjH;<L0rK}a>mE|J6>w0r2;zPn zbknt<{3O9NHRO{zjE)@T3!(M0f+^&$`kXc(B$lJ(n)y#+<xgU7*y0mS6NcV9aAAbL zF#i>r-RN9ljyn1mW2}<u7R8h7GQb5H=L36&mNLs{)e(~aoQgM}3}OZdVMCIy4`K6` z04*-Inq<oNTt#$>Ukwd_;Asw5%cJAdfYBXu1F{Ab`?chAu+d!PXGM5{e=0Us5Ucrm z$8oQADT0F8NYWfHfFpKBANR)drgv1@?_wmQ7{p3gcb{fXWi*4<z?^gt_%?JsEQfW5 z0$aAxXP7rWWco<JvWV^{zG5tWYb&-@RMC7=RdT~WqzR`I{s}$GqKiMQD*(0%6}0R! z|Gca??<FmR735CfU<xYHBH-X}sEa;|L4ZIBkVkCsZ+J2QkkP+BlopG08I29~y(_w& z8FL<+ab@<q)5$pu7(=jgQ!Gb;XlEBNXrM2Ht{raT2PWO9jZl)VC+6uOz9`5|{*iSB zifq1sHIvwX!@>s_e{S+?Uq5MR8B}HM1EPUbH%(Rw43H@uJimRj0NC(qxFCs5Gd2ch zNn$G<Kzyfq0ouJs6IZJz-hWITUHZXbVaV_uiqMRMOS$ToUX%R7uQ#q$7Oit(tBpu# z)h`moJ5KNBNhSeN)i!{G{OYHpZ=u79auJ|X-oQaNt_S8p&-InWo~H`Jq^BqRHr>Tw z$i<wX15D%?U@v)=%Wm|*V!d}LhS#4s-rP6-!^B{Q1|(oZFt1?)K48ZymS^#3S%<Bx zDjHo3OPtPD06c&oftkT<Kd}qIv<t0mvf`+Y?Lki)K9S|7xlOM!fG!rxu4%`{gD!Y~ zHox*9ppp23u5dUwR$R5lG5#>hZaDAdONBqkTLpOH#)NI{+}dT~yyFt4yd;w_=txh0 zk>pJ?>y|=G4-627Z5LyHKYIaB{aw_2u?eTXsi^+P(A~ag6(Fsc3$dwwmWyfu7nnEj z4<H=2{DKC1YBP{XascMU^-1Xjmh&jUIc5k#__*JE#{@<Tj%0ZG-j~WZNO7I_XNw_p z>0r1MbZrV!3lS!Q{95q?0NLCE;DoP%YlNVmEF)iq+A47`r^_>Lr{aD=0Z;}Vjok(7 zT4%7<LE#=f5AW?HOe+&BoQZ!6hHl?mcMTxJg?Kf|Gans;=EGIjb42P^f}Vr?k%?@E z`Zc&zQIv+f)7HlasmQ<0^dt6t1gq7>9A||fCZJJY?9?EjZ8+rmV2K~+^3g=iqkk~` z<LU?y!t=n&RQ@S4*~C#fC<_iX$BJhbXn<1K;zzvYS4)Njgvzv1K}hA;YjOX5Xu+;} zhZpW!f=J(@d$q6wA~7Jt$v^d@r#t`0m$2@Np$0kjB5?D*24(^ZWOO&dCI8w0i6TcC zcpzXs{+J1jfBf(N+`nFDfFX#n*Q>~=Cbq!dpw@l-ru(1c4Cy_*B+UHN>HY`*IZXfS zFEQX?LxLGq|7{5W&!jm@_lHRDRl(Sq|M81pV9Md&hTM_Q{^#WZUZVsChX1@Rzn0Q} zc|!30dyt1Qul{j$-E6zwAYN{ouqaOYFHg9`N)O>-jQ;nx@xOmN^AsB!;#C6I=lw5F zc&G}d(W^%||FllP%mM>=8**frQfKmCp1_ms4{42hhW~#??Em{i!2HddY7%np{KrW^ z56XUEfEYsW|Hmx;pTE<@LJt}AwqFhV&pq&8U%53343HcN>wkGY*j_5qkj(!(0sij< z_`f^A|8I8y9?w04a(3Fc0U%Gf0@<BnJOMB<0_+;e@2-V*J~%g_BRIhG5(ojsI~Qg_ ziP)r8`G@_sl}i4mChH8$OaM%3d*(gB-*4zU!*4RClG1kkSS3Dr1g6tXi``8h#a$}< zN^sBn>qI>DeLEgYhL2OR4a_`22bd%=SNAzf{L_x6)Q`!D2T29gYrqKKr5_CEs{f70 zl3EL3dxWZ8T$qm^y$3}VDd62uU^8W&m}Xbr^CJ6o{Qq~;{GS)~t`^fVP7v}UvYEeQ zhPz?Ad=ZmX1$+oRV@AZfptR7l#YNge@qc`+FBCGF93kovjrgUY1epK_O`Qh-l+prd zi$o&JQNWyp4d#ip095Wi6Akkkeg7p@f&^&dS8_s1K{VM2!uJy8s;k4k8@3V}DTS^W z*R?eOK}8P&BtGc<5UEkj|B^gNXU1dN6F`n;URCt-^~tlORf4R<au1k>p>9%h5Z>4( z_yCWGn;;kjWZVQe1Aw!S$Djl}AK;ksHzYMWevAJ5YD&DI$-|PrgnagW2jLAFEY<lB zY+aV~3W(+BKp6%6zS@so9Wn!#A(%yS!S2qh?3l*PD5OR2*(g5%L2_45n$Vb+!!U31 zD*!mkpz5&@*#vPqJU$x*;*Y#N2BtNTST-+3h&i<kfEoi}K&G$%1}T`to5fvZh~CbP zElGQdAgm&3M-Oo^-bQZrM-TyOLKsF?--3q8>JDUzf2LI1(xLzfCVLSxeY__=ZrqM6 ze`7Rt{JhTy72}$XR6m*#sCrMr-MHTl*y~BpJm(lgsZ+WXOu8s6w>|FE+g(tL4YCL> z8}`oM6ltc)=aO!Kgn*u6b$0-%M#cvGe^Ak<rZ=g^to1mYR?uctI*+!vU;6kr%Riii z@7nRN8XjZ-ntKUPj-Ov9l`gP?QiR=95~`HEU{XlffXltSQ$L_hR1kItau`rIYZ!LF zVYH0hmNDde(y1z0Lg}I&55KwQH7JDth<R;!Alz~e2TAnLET2_wQBVg;4pOscMV3YS za->z<<PKW}iYQR(h`lX?jLIIVx$NYImSvgsu5s-GqLRhpCw2u1u)^N*w;)_j#}Yc! zpdc^dJf6s?`=Km6cLWfWmI$@0Jv7QOt*szIW%e(N)VVyOeXhnp<OHOZn*_}VUH?ye z-x(BT)^*$FF#rmRqJoMvK@gOdtbl3AAW1}$0U8Afl5@~OhEcJ}Hd)D8Kyn;05t>Gt zppp#G*aT5%a_GB{^E%($5$jgns{7-<)qgCC5_tMN=bXLvT5IpUOW+TR_AGQrkJe8b zUK4(5r)*TGc0rjtkaI4(b)=Ay`+UKCDtVuKt11>%P#ah)^G5Wm2v#`g8oHE@jP{yC z!*}68l>VU?d(#*s*~i+K@ayFyw4&*y^-g-13U~PrKldpY%GmVdN%Qw#-Fu`ZxVK@9 zAM*u93)DE-E`8WuBj_5H`(@|0D^os^P96^_z9!sOn0HlU-gbrd>oMlpuI!`*yle%# zWV*h^sRgiv_K38E$iMSjW%XV*_NYmF5xFGEtK2#!D%$O&BTsU5KwcR&`n>P-3cri` zF>|_(eYSLu!yydlwWcSwKPb;<GRxVn?<q8gAE-3ZZe+_E9bfsB)9Bi(lIBp3DyJKr z(KYiuW2}1OvvBOK4!#N5!H0PS^SPp))LG5#ZneYgz09!o@n8sle54M~xlUo`PsQn& zXSnET>1J_~YH|fY)KBcHhkrnT{>NAMg1_Z$r&%us^<}Y+@-FwQ`4S)&3#>3Ai(<r9 zC&v`Mbr#`Xh@Y+$Flj|Q&KJ`3lqR@<jXkvc#v@D2OFiby(e-wdRaQ_UYN5?6%c@%N z5%88?(0h>Z+{OQUF93Ns{AivVRd57`Y!rrr`$tDh)(iJo;p8h{I9qsQ_tA2a=h~tr zm<&=(9jsjMW^NUwt0|Mxk>E3XzH}Z_`zX_9oO)^8<9IgGPfoHOd(2wLrrCQ{(7*xC zUYm9Ez$i?}LJc6r9WRg+Ag@<@k00oH+(Y)6Dm-5g1V^Nh-?$9S5VO9YeCoQ6dz_xY zzyx1^Kqv?b$25%htJjas%PW;-KE2>0F{K+vDKT{zQd<iPt!E@RH@pk8YI2FKGkGoM z5B1o4z+|DhYcn73k#WXl1$SJ^D!zsYNzBNI04Bb8UFgT0p(U?&7ZyX<*IT58OPahK zvi_o~rUwDn?x~yh#w<4eLqQf7aMpsPapJuc7rG^DBsG`b7FC$6ThyOsmS?K+yi#go z8k^MhfC8zie$+B_N^%vZz7k?pbl~pmPq$2ps`><HPNq$l8A{iYfygavk1{b?i@9ZF zBRf27;nWlxmfPQ;Pn}ZPkw`^U!oc(42!S1EGF2}ms;lC<i@TseQI&;zuOat?_>x*4 z=x3K=j=K;htU~F3(vW-HbfsYD!UHz%^ziJeL9B17MnV!Y#4Yv#FRwb_zJonhP-1Y< zUL$&iU$XTv6_jX8C_6%pVWi1^Udqwi^ml;vZ_d9~`yslw+^tPc!R7ZTz`)1%vhJE5 zuNybiqL^Jad}mH<c$L9#O~okLk0Moao|#bNtx72}D(*iDFE}MezN(&ExC4J<i7o>3 z%4Ee>hd+@hCmbI@+(6-Y_MzC@Lf(1n`T8{isJ+Qr5Psj@G;<li`n3kcZB(wY5eIv5 z1KnESWr)vIaL_FWoA!NUtDW@ZXQ=jBIUJ4VvPpZ72$Rbzilk-(6&5bKEJBN`gMMYx zGyTS-ad!%@38S9t*j%%^Y4}t7uFto2<%(^Sd{HbQpf=CH6w*;IK<hWZI-pZ<`Rc$C zjT`Gy`e7=lS;MC3!I>l8%@JG#7qDor+?9S*o8%l6XsshAACj|*?dT(0{=;>fa3eL0 zC9D8tL&Ve75m)0)qQB>b|5!i&5cVrZn7#WKDN4rj(EL|_jzX!Ihe>TcP85v*5#1KP z5JD}?i8OK;dW+GZNOYV_x`ywF#{0CQ+GC|=AWcjiT5rc?xJ8Gh@F|!~-4-cO9xYXv zA2Ha!fp`($sv@^Ic>i+nTcrdUds$7;6NH`nlk*n1$J~_ao7^TsmCamk?50_c3C5D% z=EWtR?yI^v=wvnuhcjHrTGa+_2DLsb+<sq9spdiWW6izvoG5W4yDI0t#&~@6Re)n1 zTbl(o;_jU6I#~MdM9LDh8y=k-He*>E9_yFpJWhnk6=AyG;||YJuV(pa9T5e}K~q(J zZCqf)j)YWl78_AskRmv6$J>+f;?HDL_ZQKe*qU2U(X6~s+;NMcXUfarvqLvl<~ey3 z(<rfj)_klM*O9N9r5)Gw;jb0)44W;=^Ug^!mqgvnBAU=u$n6;gJW+5goqMp7s4G7^ zOC$r!M%erWAXp`UA}9K|<ql7o%I2+o+D4<ERlw9oSBP)$fm`VsHQZ^GXft)z(tw}8 z;mc_DuLO^A2Ss@hm(GnwjTvc0$@J(Mo!rZH9g&yQMic4UNmf3+27<Jbs!<z>LgGuz zf|qKu^kb8=VuG*2EA>KXOE{`G!b>o2XX4NivHg?iQa*@d9bmZ=UjL16A}$QVoK07E zT#~zfoyI*!%HS#5V&1;2Y<0q!QxhW}FX*tDT@2V}RnAWZ3>MmKeF}RRmdYKw9Fef& zxPS2)%-V-4C3dNC?t^lDh8x<J7Vo?nyU$2Yy7e~7WI}*w9vYn+Wass97ZMThfnqX- z52O;3Db}$nU2yG_zk!V=k%dWu_@H`EcF@ip=~d+x2C3UKEuw>}JK=+q&4oJE_4TOj zS2=kS08yk)SH`AS#~qq+7aj-MM#imvggdafF;)|5PwgWOMI#2=30|tG_PEJ<1^jFL z#tXEt=*}$#c*O^e0p6esh*Yq@dIJqM*xw4p)Gf-$Ya}>=#+i&eP_rL%h?ReG4jT2o zg~tv~*B=*%RX>&i<n51H!G7VEVoWUryvmsmw+)i$m+>Nw9%{pn<_fGqv&gdOU79NC zbn1Jmr>oH}RcNQ#%O^b$uIn(B5WLvNGwKu|AW2wr9^%A@-}Xc=W)j;{$_$5_HqVEC zcC|Ywd4~67F(o6e>|XR5@z7%+PXpqDSeP&@O~?E1qts;<2X`RsOpr)ZjH4?YzO}FM zo>7;DF$3hF=wC=;K3{Lk?$K+GIQ`4G%;(aN1<@yDoH;dL%5kh{TKUW{Hqn$Ea9M$v zC^Rs?*2F5`pPkgPo1BW^5-#KwNFv5$30wZjFQObA%BhWo!oU9GUirQhV4`@-iJ5sS zARiLsdP^^zQf6N29m%qzz$<D^>$3!{NUoQ$k_J$c4g+`2K`@IwT17TIQ7rP>$ZA+F zxT3!gJYv{a`Il^>I_*)6?qz^9EpoF@S8Mc9bIb}u<>JQ7=x4X|ZA`X4XiT{^9M|j6 zc#vq9=H6RPyKY+nCbD;G@DVl$<v3D_mK_m)TrL0~L8pYXW%Sk5(HB1KgqO)GMEOs0 zeY2YG0(<xUR=MF!=haW1?yCmwSW*T_Hy@i&hsm*;WuYRcVgp32;yzvzZ)s-@SJ-F1 zRyN9OnHRqLxo)E4mbYKCa}8MYC}YWTlQ0X6`)gx7jL7Bq<7GNS_P3)wi(un5(9|=N zewi_U%ue=CwWSjqtIC~hYM!laQ15hk6CwQ+TBOHsTWK}sJC4Rt`?Kyo>U*yJY_F4k zXG&1aq~$MO9XTWc@2~ZF9B)xRM7ksqM~hIMt>n=b-ZNO-Sg;xt5>3uFQc-*E1ZW!B z@wxm3OZF?-4L3_$ngQ#r3YaayY~v>3!}1ysC*}pR9UwIh*JN~irbcFR(C^jMKeFWu zP&$h*wKRxdE_B$g?oC|b*YuJB@GcEwF%(~|LtM?jDtBU*WamS1wNuh8AHkWZ%frxH zr5Cx=0D+6TO4QrppXsR)MdTOYHg^fvVnO3W>(vFEU-a5a4re}dKIre!294r<L00S} zUBtqx^?0p7f4~+ohrlKMn0CkI`_?0An^N*PhEaEMVs~ni7oJS63Lg*Jys2cA2gWJ2 z%6eDKOi=$!lb_6RC<k#&@M4hogqEpmy7#b!9e)E^cm=j6U-IOOc6?#;RG6!LwC9T& z8g7(~fS!(}=p>Bz6r#P4K9ZLiLszbMaul^#_GT0Em%4)4>&2yLvKgl?zbY#xk@lYS z+aV$+e}ee6nz9nRIh0+xF}ym=e5=H@)enZTF3NuN;(C=(=GV|GG7MIeijGhf^H@(S zK^eprRP;{fQhP-yS-Is_Lhj(Tl<>??06qb3>k?6NmxWEyYx}Go$dnuM73N;utA<5w z_XsToJYRV3M7_{6aXTFr1M|d16m;;jkgp|WXAs1Nb4xF|uw;z_DN&YxcOnQfyBy6t zy&*O?{wXoqIOh`>5gYS_mO(znAXzK3&4Bu5<Pd#Z{YYb*li?Sc7@}M{p8qhfMncdG z8|Yy=quas906v&b>@krrs=hOkXA4o3oU-Hlq5tP*+0WZjEP*Lks((Gv1UP*lYLIY8 zQLAPMB^ugEznZ`>V5DQx1kE5TwN{$iD*>I?ZxL1a1I@jA=&Wf*k_tHQ1*C{Ib?dOI z*SHYVu-qh~4i&O#hjA@%Odx&jO$3dmD;-xR;bY&bBGBpIe>1jxEVuh~y*k<RS4x_g zTp<Q~DnxtK`Ra#iB^DyC+sd)G+kke20fdq#)Es&D@85+KV46Lm8_YDLR?G|>4D6;M z-3cHIR$)7lm3~+9t>EGN#xACY>Bn!Ay+1n+)Ltwyd0l8_Ypd`=w5UzTY_`FG-R@;U zUC>G7M|j3ZipnBcKyw0HtaLu)-)0W=*!4v7PEg0f+!U)u_U#FRnZ}QeEjxUh+f*{# zk>Uqk;1zT<64u<M6j-DLYDm7}qsUrJ-nd8%Zya74guUqdD|R_He8&p^P3(4m3V3Hf z<K>>~>C^mmE^5obqAYmLIQ?>p+P}`AAsM9XAo|D7ZHDt5kr8gVH{J(hgGPoo&r}D5 zf#oS`T!QZrP&}PGql3h6YX&!1J+CL9o80OADgCH{8<eSqH>p3-J&=(nolLGWv{CXX zZKr+_$t6rW$mKq;rMeX8IZTK+kA66xN|avsQWp~t*zN*iuw~ru8HScBgU@cLXP6xz z%dMd4j2Wf&uRgTzF4ck_^Lf{mdiwE{{zuXBfoM?tKpRQv@T|r8<N{$fE7LJ$>LYd3 zHQvFEr^msDl;Ax6@Mt;K_mp{b8iB`n@AWvZwPKgWe%yKff37(%zNV!=tY+>&9poiv z%OxsiiB|`3*>W5ioe>urwYg>zKEK*!TY9~0ATn#RE!z6wXH{OY&B<h^LXzZg`hkl# zfd>+uC?+4Fs26$VN^*a-jB`F~5}5c|)y^li3_M9BYfY0UQa3xS@wmg!w(5qH94-na z9RG|G?Kr)(ksb&|g=de)Rj2+jsc}R&kM{m-%&J0m#oiR@q4cB=hQlhn-d_!O?8S|f z!7oEvs60ZTg<2g=8c|K~>}5xj&P(9pKC%&VdU59^5Vpf4M@vIDgW1iLhR+d^=>dtI z^2vGirtyLkJEiRS`s4i2f}&GCA+N*}R9+(a0j+B1^Bj`iP*cTL=i~1xT|*5+Lls2A z&R?t{JHmF@5|XiZS>g`NT48+hUv|dgc@>_iiB-|R)Uly<=`?flwFAUou6T(`>%O*p z>F%*W88fahT$g#sZf$?1A&c|?rSWKd8no!{<#`#A%pudrcIN`AE=Q7lj#IJOCUuV& z*lJ<{y36JkUUr1Bid?4>P9oa}++9lkRH}WKXoTg(TgE!Fi|eG283PS?d5l+WhH1H^ zFqZ_)d3+lqyRiAZXX|i2M=lLzJsFKpe}C!Zo-1`N|0%&?jCgd2MflzGACJj%Gtj#h zSlWRl^WVY=+S|o5?LTOTy#!=^`NZ<Z#df)j32n7af}p$Yz03V0-23*OL|4!iJxWH6 zWq#b3-@dcs3_OS8PPyfR$~WB&bVa&tSDC|d_yT_DP$KAVen(uE%S_N`>)i&VO;54o zz)v3V0yJ{*TXA*dr@EUk=x!A@gAG3};kQSw^@B`&RqN|zg=F}I9tNPhxpp;2{7iUV z0SmM?IsfKABgH?Sm7a@)*Wx(g<@ij5GFKttRr&I|pRDgE6C}La$QfuZ14+@}T#JNP z!gJQ2tZz#N5?;Gpa$|q;fdA(Wz>f@pp3_4nKidO)Tk^nLJ7*E1@{?!uFoH!a=_0rP zY!Q865t%>FT)+SO{lh;dWq_Yw4gD=Lk+W&K2*v=Bq(9#2>3#?FhbN%5w0>3LoX4nh z*jJE27J(mDUMlXgMMbTyx++o@&+l-d#45FaC79=6u(pfi@8bVB$p5&Y4wWi)t;8UQ zsz<pUi~|Sg3v`$5IT%Dsajyb3CkI?RV6z!h<gAk&0$LPh0KnmmgS!Z~O8?wAFqYl) z2mv$)tQkgG-P|7E;t6y?KSfjSprw0PS8p+5QXI>HQW*z!+({Kld032n)8Q9rhH!lu z2z|(GRL>ui9piCJWTK>IF(>xQ;$-J`Fkz@If0a1xZ^^{ehA8or!Fov9$sP6sG6lt5 zAi2}ZN|FOT+ju-jv{@Gt7_$i~{KRCt0ExlmFwHqgfx<|xRl_EEo|r___8Gok@9~(h zGA2OT0O^Sg_RNpEF_)LWUoSja|Ja<x&obT}5AH&{sU<Ctwjc!SaeV#=NEjv%wKZ{- zBt=V9zG{^lc~l3z`>EZN(2Lu>iedM-!?k9)H$ab6R9lG=h<E#N4+b-xV7$8LLq{J3 zm^P<&eFMg@8KWF*T)nf+u8}67VnVuF6!3gB-D76gp?r`LsaQXl=H<p%oc3MSTWz$g zB}S2L{bN3iJwU~+beJ%V4ePNiXNb#?VL{6KL)Gv+@nG4_+M13nG^EtYW(J;jJz+cq z6Tyfj!u+R5Lww7qS13|%y;8RmL%g%}=ej*2f-o7}!YoeYbp`O&k@*ZXehqA?v9-0O z-0dafTk6Xomvz*KnxaKug<?0nxWg6ZKjphPY!-$xaBw-(f(Km8U}XI|9=E-oI5x66 zj?^~2bLs0n-{jC!$JZLpNv~M~i7hoA<WjMVp+3X3^jR>2inQT^7oA2(RMd%OV1>gJ zn5qs%9pim)0~*<mK%$^N06L-b3mq`&`gm$iquIuiUDuGO6xuqN>i6m)m84JxxK#~6 zixM^byaY88e%)oaF_dq?ymLR`v9vNtqa8_n%L0QI4&=}`Kfthx`}{WAmcL-r82AY% z$9x%b$7o>b%e^j_X*j5yLSd-_t|_e;<tuq&u^vMihE4A>(&95GYbJB-j(w?J1zn^T zqr-y7BF>%{ib()=MicU=XfuwOYXvG)`3C&l@VsV6g6$l5g(uOtu7R+Z)|+7~_C2O( zb~TMCGx`{deP{-sIsRF|nAe~jsVXQBr944`M{tg2$e#RsmtA+$?z6Jn@HFbfkb$V0 zx%RxsI&_Bfd>5@jy|peZZkh~Vi89^#?rVjl4Ns8t3WGY1s72DjUAF`*>OmST_ADgh zD!exNfCHznESizW?t=_Jca}GB+1SjHRx51szG|ty;IVV^EV%9DT1L$k=a9p8le5?w z*wFq5_9QI)h8=oO^VYO<Dx6lR_zVb>Zn4L?O}psabP#@EApMSw+2y+uvL1{=VGiDu zs0CoBKBbNaTTwjYQ?|pmb+uM*a~JpsXU3z~?o;a9VDTU+;HDm-izY>pmnF!{iN0iM zP(F|A)HPw@wNRbKHA^QYQ40*!A~!#S2EZk7)TTzkviXh=6Nbgk<tXtldjavEK+fAI zbN*~ziSK*{gw5VS@?Y?ay;R3X7d<J7dqzYst`5K4f3GQ@%fk25gTSRvN(yhmC(My9 zSmgbFqgg2oFnf_hrD`Kl7B{BB-!uz3Z%he`_-dbl2m{eI<DpNbvp;(x?&mr^gHKG@ z>$79RJhWya-p<PtNv@F}J}8y<AchV#5RCV1zNJr3h+`BY!kxJt%1>=oWufIUpeA5@ ziO5(b*pwriD&q+2!$X^QZNm=2`5XB?gHM4?g;!YRw-1Q&XGfC~QG(A$g){{@``0TN zyS)!^f2isvRDn#wmU+uN(mhTjvgl&g$a1&PoJ2n;aLub|(II>wZ$%XdoFIbh)!aR7 ztJIz;zEOh~nk&N{Bp&3eL?y)Z%{-SvWve<O-k*pk1bQeInRCfd0`YL4^^O9?xrV|+ z4i+kWd&5{GUZ3<BLaOmx{8NHH>{Le~vp+22QxL&mh%LQF{lKBA%(p+r-Fx5S_)SL% zvh&BgQn@e~DWy}sa9hfYn%yxJi^6dAfIx1SbM<6778vNFVY*$=ZeMbz{FdLJYC5p2 z-;wOqJ%03vmiBm9Aus}Ip(1t!;tf@Q2wDy>LH!`@sDisI-<Xs+PU~#k&GeDU<-NBY zIp{JsbeNj1VJx0CvWdW6yzRW!HEp<zE{}rip4pd5txDbb>?5Vz`d#9b@iw|LR@~Kh zbWzMXb^AOT+ki@muHk?4iQLF@CGMtZ-oB4-C=?S<Mx!>Zv-)%Su#T@Jhbm1TLpU9w zCgq)r8{>ctu4D6I160+!yyZ=3tAU{4;uu0(WV8gz>t$-#Kdd$-T!uukm3?Eq6XR-k z>%7@ellK~{2LYT7c-iSfTYFA@&0P_}OO>lzwqTThOWZw!`~pGn5yl4YWC$b_WGys3 zJ^=)!@G4i4XWb(EHI{=m{y`dvSY1qjL|uO#Kn9rKIfs1AfeveJ(=H$L{zQ8|`dY$P z$yrbQMhsX=jQZZT+L>C?RM_15R@ODtH_ae+@x?w`DcNr>l<00JJH=Yy4i?$)Dx%?) z+%oErpbY5<CAp6glAo~c?70V*?P_8mKX)8mM4h{1su)5E+qXApLzR&TwL9A!P)Z)h ziU@-h?2|%Ov)qN4_F3QY$4&4P8Rk&0B&?6!L?}JYsb$*{d-cY+rizawE@j!Uf9UYW z$NemRCys){$H!`9@IfF?Ij}J}>0^cT@D(402r}I`C5`bYLp%{5cBe}_<9&Y^{8oyT zH`uH3{hoab#~nBg%|m>q@v|R*^5d=GaeL?Qv(YJmxZY;&AkrVA7P8s9?fiXkh4!}f zW>y&~a|a0}qOzuypGwZvR|2qVwJ`hjgXO_MjLX*CG&MQ=9p4wd*Z4cmh$Afvd$?Us z7b|`p02N<P?3(muM%Z9VI2sMlu~JAFGiWJ~{Op{U&s|N4xX~x|`b_ZnPj_$DN{qhD z$yd0mp7Mqrli(ho?I@|%R|<w20ah4>qVG6#|GK;toUhL%@#in{6S>ZUQK3l=PtDM8 zmvIM@<nvD3OE8o4(==hH=Sv|p43^Euy6BdyPW5xPq1@}rZCtSqBT)E+N;jNVvw?`y zj?ee^S}XGmaiaxN9EuSbMMus=S%#L!tTi@Bif`%*fUDB}g|XLKt;8O|>o+Q6wYRTL z4^;jKi2Waca^c~&E99+;i|m%IQz9Rt<I&zI*;)$a6u7%SH38OCICyM(22bIMdp^Au z(Kd3q%Q!=)XHI)Y9&hfon+-J-SVRDKoscAJg(#?;K;haYu0p;sFtk_^812n->c_%g zst#ooVtRm|#U2WKLnzQxJa(FYV?!-Ngg+m+q2#6Lgx{6V?rIihB{rwy!BqY~5BT@d zxxl;qiaRE8XbgBGt`{bfN&rMB)@i{Gy4fl7viFYfnCtnN-40MR6S)dU@-DpP?=dkv zGmU>A+DxDJ#)XA#nZ_!3_W^j-nw1^%t$N}kJSLATl;j5TJ!L^#iCaH#C@Qw3a^N5~ zgl87wxd(ya4JA)`0zDqXIcl;%y=o6KXs%p?A{(zmImqC?GAN$_^IbC3j#TZAiCR_A z;B@zCTf?&I;od{nH$cJ87w``qo_IUx2p2g^a_sR%h^Lnw#{lzXUp$e#ZYZt>{6LMg zhChlB2zxU!ZF38t?j=G-pg7s5#vuOsS8Pr5nl`)q;3lXdEA2P`+8b<Qfm@^!gB23| zFKr_w0Y$%<-Cp^O)5r@7QbcC~Sf4a(F1gk*a61q3BdY(+G#r<n5FrW^I`f9?6Pd97 zmq`<`azm|jg{k~|fK%L^b03_#a;r%3M4{yJwFi~Yzm-^8DjX}E^_t8w<G$kOa;v0M z{%dQXyseT3bmahkZNB$}Y@)TmjA!3`ukp#zb!c)gWLcE!`lv!rNz-ux0CNVwwFD`) z0-Y0Ykh9-<i4cSml5iRDOw8xFK;lN;baZypR<}>nTi0<rwSdlS>|&7<@RUup+|)?+ zD-uqsU*Me>Y+xnyroSq81q1#pWOw&Tt1&2~u@AkpUlLg`YBaB8h&}f~rmbj0_N<)Z z^VFROXyq^MmAGP-%Q80Kf4v$?C)2%K3<;89<!#QFvYh8!q@Z<m0kO!6!WBn{b1@vN z7^LpSND=eSFm(UGiNa)k{U1dZR`Yb@nu)kEb^P;A-!acV>qu060C0L9ui59cwpeQL z7Z3Po$g$RjQMvVg`j~lQtonW3D27H6$#!~o0pw^=`Zsj>9lx^asq`&~93)K3G-PWK zZ}?7-qyYU7>WT=<hQFEBwb7ggbaLb#%V{1z0J#zm5~0(Z5Mih4C5RZpL37ICq)N{a zf}*^;$=*zC;exvIUNxm~IwZL*-PoT*rL*s9_9qIwRogxOM0}PELkiu%n~`F^w$XCI zlhf4%ZY%N6^MEuPAJOl)=S3i>Xu;hBn7sq{o?QtHI8fe{5BN7Z4{A-ruMRiT#6_#) zrE~|tq$=?SjX{jp9(Bj<HR-R<m}qYc<qi^Yj_IAKJV~%WL9MN?*uo`|pgE-@l7)?u z;*$;Dc?EZ$SWr_LMX++b_F)~u*>e<JjBk!);}EM}o#L$F=w4Qf4NKBqfD&h#U8`|G zVJAQ61aHOeh$ev8{505kqGP_s?gJ5!WvOHwJd^b6U8@eLxbZE$7AgG#GJ^`p>LfRw z+W+;IvHgbroB*=#(gf&OS5|IXpMI(|TpjD49<8LZEP;hC(36<GrF|fP<BoVjs~#2E zx)LPl_&h6gxW+xB(5y6RH1WH6s)1}FX*U>qXetU&cqTiv0JUZ1sP?kS>32)hM0TDT z(rc}ri0Y9$zGN>+i8Nv<6ybpKr<D>j@B6|BoD_mf0BMbJX)#WwD_>q&RPQ$1AP`H? zny7u;3{^F6nrPy2QES;v1cz57YfxS#2y6B4-@oYEWmBTZp3XjV^=v7mct;E{q7|rc z$+(Wqcc!j@=n);rcMKvTx9`H&dh$e=6%<=d2d@NI<163`-h_N>)A-{V0qC|X6|><p zRN#dkrfxTNyI3>PWZvXC_Y~Puvjw}Z1))5y?j23`nU}^UQ+ZFeqhD&(Q_b*Y83DL2 z3-HHJ;+#TEEJ9<!r(B+7Z+cxC`ag>6RPT;&zo+()YEJOEgrTw6@!WUvXs6W2TMfGp z=SyhYB~!zn0APNPD)zRE4dtu+=ABd2F$W_EO$_KZpKVgDZ6vg(CAY86o!Dvv$Djt# zxLoRi2HJReEh^h;f*IEFdiRBHS{0SO1K$G(5)**HmA59VAJdz_b?H15N6N<w+14Vz zWvvjaA(>H;O_fXdMeKTM6dl!6woXBP>E!wCM%VJ2=;DwXvl!Nwa!Z&O^=x$m{uDWf z!kczsXrIIa&EIr^$5D);j?<VM4jgf9E?6hD5Lr@*U7T5*@@8}5k~vT~MTU%f-_8#I zRr>e01vwrLNq}qF?B*MXak@ODy&z5uHjD~9#I*!q6~?gU0e*b!XX<x8xf$M+`=}c< zRvhVwZf|+|#e09U<ww>2vLQSrbN=p?;CF_4r~eM8-@j<F{Z^xu`{x`BhTd(WzOX%Z z#S%CfPUqru_e7lD$iHOm5@2@@h-j&6l#1*BW}4x*BaUawR&D+H)jY6;vNO(jFmTD| z$9(6bUvvMUN&q9!f>`yupxCKjjKR7CjuJ;Mb(7Clu<LBdqh%cb{tMsI<4qzhp{M=U zRUh~4ZCPo^1BLOvV712cCQ3d2J!Uy}{T<8xcPxILH5p2GcRGWUwi-cDs3sovl^89* zk^M&{&}Yb*jl7Eopmqy5x5vXv-7L#yuWPqH`sK@CI>oz5cKCW2J68GcBLRhHP^P7k zLo;2L^-%Py%>p)_XU(#o4_4&_EHS5KrV;Nl*ay9=m6-Tt9}cZ3^Jo9}MGHd)$E`nk z4;cSQR3d1>GUW1;|4}Q9R(lomO?_Jd=I;7eI>J1Of1fty-eB$xW>orX1(;`nc@~&w zfq52|)$^E`fr%NIncZIjf_WB}JqxuAYjW^a3<k6L)~xHXJ!;r9Gye*x-zbOL6&F_h zn|t_A*tsD14znZj0Q*m(kUi%0vUd~wwjCR!F}G6wIQ5+s`uhR@`eHXm@?YQiJ9ECZ zlGX2G2Jdo25BiaHek{wXIpBwR;J50+xlHAsd=}=%WWG&AKQK2f^K7D9>%Zj+(qtqx zeD4Loe6#;eZ<hHsnQs%V022{0fgh{@6W^j7feGW8FrEqH(F!o(0TUiD;lX#dhsg^u z=`SWcfE8fE113CR!h`P`!G8<O#{_#!u*U>@OtAN#6<~5fOfCqm02Ayn!5$OrF~Q#V z6<|t5OsR+|75&Gq#*~Vf@PG*qnDF3xaAa~pOnAVA2TXXtga`jw0VX_P!UHBeV8Vm% zE5L*YOnAVA2TXXtga?0DBQop7m_}0+6#jea#h6YK=G$aCNtjL&rjz6!%@CMU5t9pI zazRWk=sOeg|EW~8-)4;g^n0;WIdxp`FVy;vMCSh$@bkyyE&d)<oWRh8KaEj2t$8Z< I#DyFG3zZ`00{{R3 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/azure-devops-services-application-permissions.png b/content/ptfe-releases/v000011-1/img/docs/azure-devops-services-application-permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..b50cb7433352e3e4bfcf137cf608f54da728232c GIT binary patch literal 101705 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%0A1f3FhvDu0jnm&B1NlotMsS?a-3eaP-<;@Qr#DRV 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 VSKf{jIh=rB8Y;TVRf<;k{}10>$%y~} literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/azure-devops-services-oauth-policies.png b/content/ptfe-releases/v000011-1/img/docs/azure-devops-services-oauth-policies.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3221636a8fd721143bb092c7c969123133ec8d GIT binary patch literal 130401 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%0AVvz9zXTy-i=%vWCV&_MN*m6!74L!=gGBt zSPN|+-c5pZA|BoHeI$68MDX&L>_q+^?ctUTJD-BWjfIByvue+qBh8u2C80TT$RZ*R zkbOqU@;v+@%TZ%wj(Wo90JLmQ+;rGha-b@ReF`g?vQI7!Qf+R{L!QDlFeE(|^Ky{U zk7pX0$4)4>mej7uK;^k_Ww^TEKMu3SaD7glX&s3OU$_R1%8^~@;djlsb-*<5`wWDg z8?;nquNzKYc%1SgTIc)C5Wb6^y7X!Mo!QRhgKZ=;=JF8>80&x#A#J-e-8l?4i(B@? zvWdjU!Pb~4GMaWl7=b$f_W9&QzEVtr83<+P--yK@MqM>kc+Gvv{dNTmi^@QM^!?P_ z@F~Yv0#`>H&CEv}Ex`R%ocaNJ7)&Q$GYD1^5KF{9$lywssB7ZCK=xT&H++BG5Miu- z^i^KGOV%;sE&_@EN0IVH>>B*mpJPB<MpNU!<75TBOb6`je$X0;yL?ab^9D8SVN#Bg zMK<BbX3T^^$Z}^%2p4`(BXNVz5dw^BI?8~6!kFgW#&;4Bf&4xg98+)@M{JRQ;m)TJ zthAehy}$++`u|}uLvTy}@y93McgkHww_%cH%iT#?HRncE)!&EEj{oq7ZOBwI+s}eu z*~J($04f_Y!YCj4kkh;}Kb8csK|~}J3MBIPJ78YQ<`#x;*7JoQ+!dNiv3#1l6F0T0 z563(OKg<K9m=4yUwaf=iQQLvl;VoZ9<m@cpm9N&pu)48=dvS(ppZzS!?-0ILOerjC zGZG#oF6oFgefi)7k}$nK%>KcZMt~M#zc!+;*KFbS5~~jLKy-uZx*S;5Pv`EvezNJ% zjjfS+{QB-aun7*Y^>qDxZ!b5A?v!C7?41TTbH?}uaDu+YG|0Y~44xtNDhx!4P;`~M z;)FCG__k_Dp7yF|KDM1`%b1u0U5Oql8@B=-Tq>NieNWz@0vHxc0-jZ8_OBL|x5I_< zmrrGcnK>PnFENv*zuK-T=Q83eD17ll?t%TFL1~ZSQ*NuHFO;y1BEe4|wejK)onS4* zc=V)}eJl{hp&0Nq8Oz}zwZEj}#g!>PD14iIHrCPJUu^4k2+iKOU640r6PR;~)i<r! z`Mj0j#7i)RWB&6an#b<|W`;U?y+IxD9ggx@Y!D|)i96mwhR@ud80>n<H2EiE+<|e& zvw9?T9_)>JgqNcnD($n|(#*62=WqF}i;J=qxi;y<(q}0F#xx~EhMH%;`scv$$8JNf zBag9%5j00=8I6=Vjb%zLd6KI2Q24{S>w4^^MAb_t3y+oS$uXD0<v&1<pU0&Qn{SIJ z#5ae?o$-R&Hcv9ge^-;K^@a+35fq08;Bbj^X5P4!H=!1IYX2;8OzQp~`06doUEaUr z*z8mHMfPu=cLF;45iS;Xw$_#JbssvN7q#krK7oHuw*?nM+bItnuJeJFvG)A5(7*=+ z8XKGMTG63fN;<D#soD9+K_Ty84P$j|AkCxYGR!M*zFVWK`~!&`^jn*0ZkAioY9YqX zRUtDk4nJInH81Zej`b4G<Hs_`WKi>sGdP0f>egn<#)?|Azo9vH6o}#&F-i)rNW)rY zh|;(}=@t&ZI;7MbK?g|4T92@V`SN17S&pE=k>le9d()c2{>^qq+9hZHQwC*~cj1Vr z=B9G0pB)$TC!>W!w!xlOe2(0~N5WQM_h{a_-fbVc2R$Eq!mg~8(smuULe|(7&_AED znt7T7-F#LcJj7~G?t4#>ik%5&EnL{Bmn_p%9YoX6H!?8H!#MUAIMAQb!@}FZigbQ= zqMX;$QXWS(jD0Z2>NWWv-Sj}U@0q6H#|LL|W47z%KT38T=U}RO@0R&l$5%O3Lnxx} z@4rE7TM~v)7<7qywr6w8f&0)#sv>eE$fQz+&8paaBmJOo)Xl#??{=gg3gf??JC$YD zobxK8igtJBG&Fn7INRu}u-1)?<jP*#z3+0^*V=VVCYPijO?o0M*Q*2)fsQKg;n%Bi z|4x|!vY9WKB4F=AqC3Apu7%SsskD}PO7R5U>C$XY%-`0}rMH06DZS-DqG_xNE)$8t zpVI#JXL3mm>^4qc1)J{un`QEU%T-eN4n-!%13x}h{{3$zptl&nO}~!$dFG!BqTj6r zn*=~B<@8Ul9{=4d{%OfL?gUh|G$B{}@9zpc+*>T*I+!0`82H<x9X_d?I1?v|o8#%t zzhAZRg&hE5tW@;U&r|<e&i>Qo{^JvcT^9$_)4}jX#sBC!^pWehUmX1Ri+i(FX#&O= zWuyN=Snof%4rXb%j_{6W7yqszM?L~~B0QQ~u%BN2Ckv!hlo_rg;rZg@Uuy>T7X<cq zWfxv=5LtmT?I~{i^W2rwq7lz5fA`*D4pzBc3W0vC#s9VJtW60d24HaQ*RY%x&{JB1 z9@`S^{*U_Ac@_zvo5%@)om5>;7*IREUbg8Km;hw~V=-U3Kg>&&x$5Z|I_M7wTELyf zpHDlA+{&N!`?S3GI5C<3f0y;2|7LCiH?v?j&!_fZ+^EzZT<I#PUgG=U+~ueQ&D;^M zE5L{tV|*@j6dVhrHqIXl?*&}i8L8aP!>D5DAj;bSQ?E|X@fb0C1R^N*Z`6ekfSn^M zyyjLw`3^mYctj3LlA<@5UQ)GB(7uG$jzCaSQt^w$=lj-I$J~G^LD0*XNM2pnS@z%F ztzEE6q7>JTA>Vs$AeOC42(W2>a69oUIUPpYWyHR;>-%RIh}!`p!kz;1n2)psiRi-U zRtSb_LnJ}~gS?mrBT*hS3|hay%X(MCwxoRr#CYwsI77TupAW}rwt;%^cB+k2q~cpF zYO0PAf@qQ2-rN@BR7DCPDh9Pu4bV*cg_1gM>rMJrz2ITCfJ2ts)rs=kZO>5{7EJn4 z+?8J{7f?`3m6#4P5U>oKy|Fme10IGotRgyEfaNNnUqV8a8DyL4iKDI3aB57Rtto># zVdrFau@PE-wwDnf@Hhl26^c#wAdbKTQ)_EOfk?zu-rFR}=J6qbCgnBXXJNwlOs(S5 zyY+Ofh%hYjvQ?gqONO({^Nn+#>Q;aItjQs^Zn>Q9&T<RnVNSn}IzR`bn^HDFvr2Qs zg?_A0N!3tPByJoax=aK%PakQGnSzn1`%n9QJi`8cch8HeN*ETIKR{os90Q}SJ_1St zYejsBZXi@{yniolzf9K)Nw*<TyFKK_qQv!f49t!bM%dG{2lCB`NYU>HH+(dIbS0<z z8#Ds~SYGin69B;;i*zd1^!u$SBkcT6^LyrBmKgc-*3p)W;=e%75I3gq?_`pz>LqX! z@dRRNNDqaGwc<!B<wXGV)1Hn!$b1m1`bnxu*|WcD9wcp=h-fb|;|s<SJF5d2?`?7O zckz6E;@n;o+6d13p+}3Z9;3e}ZJmXFyrbuaK&*$+v#1K`kSwLqvm1q7C-!mdJQw2% zgdKYirTOiuF1=^ijo~omkcyfHVcY{)oqD138I{p-n;GBM=cXE$1SKnNJ<=-Q_N9sF z#{1rjx227QR8gq!wLLDcT8s_C%8mb70Z;Qh%-51#92Qv_eAW;X97ptMQC%KjZEQZ9 z+3V4=mrMLUVsmcL8M`x{=HYThxDhWS%)09R=-fo(Dy{r?2N|w&M=8iDYUJY#k!Q=1 zX>*LQ_Wp&b0bK-p>#80Aty3G+w!(GPS4b&626{--c&%CeWJd=4)k!3r)EG+|M>Z~` z;q3u+Uu~oe8fnCG)x-Lt&~4-#$#cdB8-P0CsJBmKKW=m8I*Yh+W){KS6R1&rV$iHX z%uSL9%mi--{bU+3?rL}=WKr5$DL6V5!Xy4c6mpHdovc&`dERwYLb!RH(X$OrxP=I4 zkQ*yRg6EH6p7B}gY^OF?;B|#gsmg~p0y+~lmrFtVA_Nun)JU&sGnCCk%Au7#^qaMy zY-3|BQ|ME=5ydaD3<KFj!aO<Dj@t)}DB|tr4>h2L;l~V?Pjv8v`4satQ=fakS7)u^ zI|QJRVO-^1Z|^<+CTEW5))eczOMAM%QmSqhPggwNlvcvpEFO?s<z1Ym9PC5siE?0d zH_{bv^Ljr<q$-{3Dzc4<2r+uL_6e`GJhT67f7MK2M(22iRp{?oEpruQljiTPKlbZf zf>Rq^hIwIIlC5VR3<0EB(#w=#%xxHMe6327WJszGV#^G^xlJJTSKsYFJ;)+u*-NO! zJ^(|GDiZzfmVK#<W;>XQ3kLqA9VjmWCcp3x^UWdsQm+^<2G->#=Zb>DJ3*Fv9@D*r zD+o~rW<9^yoBcKQ8LRG^BBa!Y8uoLV>x`!3Io@u4iU<uk_*p7A{cEQiwzMO`4)YMg zcvv*++lE3xukCP+cH&1BTcOU|g;b(B_%6-*?}9ci?l8;TCCdS3f;#nq`hD-`0BSaS zf#jR_yn*xIkE!Z~4DLrz?y)~^3P=6yvcbpB-_%{(`Akk+!m306Qx!a-css%9ab-sm zVIE|9jmvzp!@I(Uz-E0*LSR<imniNY189dFq&z*Ya+x@qkWJE9odjsy4HTrY*9bKO zMU&OsfLVC%aznFn7)lKg1)9YV3<97RIm6-QDq=5*>90nj+TD<zlcc%&_0<CSck_oX z9k{f)_yp+f>#r8`+^A7y8A?Kt#`h7M0RpyIJV_b;y7I)1spKU%%JtAp8!_v>Y2C8W zjGOpB{=LAPTL=y~nSjU3yK1Z0rT#%`$pxZoLU|~yyGb+<B|iW#;^=fbF4Plq5BqI2 z<8!0(JDQ#7vhjz&?;rkP-<Pl8>29V-Y+ELiYr*NaEB%hHW_qxR=(<8E%}C44!3sO5 z=Yv-6z+P6yGav~n_#}iLh?Ta4AXG@N`xTc@X%{hJ28O(Fm|~ueiB$p@tj<2)irtKa zJv;|;N34fj)|-a+MH1;H!#l__l1$-E)mz~aeeh%<s~v#l;UKJ>vRHNojclKPl1W$` zQ+gv<Cv;_q7nY7!ARz9qis8H~-&Vz`-kj{HQa^>X_g@cBYn~8rT+7l`YihM%rQI1a zeuf63UQ2OftEQxlW4u6j(*0Wqy0DdRs_3LC=4-m(g@|pc>27o2&Uk(4bxxVDmS;@L z;cZQg0cZ3qU|7LUH_=tL50bY<)r#LD2a*0=()BqK|1iWsz1HxO7k^^@Y?r`?qf=jA z4)=d2DzVMGh6+~Su){a`Lcy~(VK+PT^0#u-f;)(4Zs@t9QM@SHA&S${QT2~JZ&@bl zZYXzgTwFGnI<4<%>4sUN??DLH>11bD?nQv=xTfZ6y5|I^mKwvxgA6B(9EmvTuoEtn z65vpkuHGRil#{V-i+jkkx-dwbqkhpYikK_Ex;H6@BpYw}C3}{JX_q!JBdo%addpF< zd_JSh3~!9Nh5h#ABCUzKWB80f#hx!Wa+Twg-rzpmL1~p!q=PBGWCA73Z&5;>yr`vz zsLb0{``kH?W75VlJrK8u`felUQti57{RUKD!c$VUPgXxm5N8ZkUGOUSNEGJY_9fTl zD^%p)UL&w}N1n%G%4kJRaiW?_R`Q|&;R4$%3svU#*m16$5lQ4K*o|x37#6zXh$ME4 z&g}mq@PH2E+JKDhe`f)FzyDgdM(2sfQsZdM2*eb`9%il>UbsdB<X@<SHF3L5E#Yu1 zLacg#$MqpZ3415^OV&;MdZt@041!+xmUp{kNgWWIiuR8nZO~=@?fBH%Tq`RKa(vP3 zOI}8>1+f`|j=_yyz&(Z+R6s7SALA%jQ;hImHXL`Cdjhup9tE*7fhW+#`}FeN92Bdw zk90{(+C0X@Muc{vZpE6+y@#F{%6*!ajGUu5E{=0h64%5Jz~-XVl5IPld?-I_zw%?v z%M<Bckn$k))yyk>p(EO;#8(CeM3|A2TMt|^Y=xulEjvmQXGFV<Ucw|1A#bz_A*BAm z?ZwG=x6(n86Z8qV+9Bl|B$d^@FEX2IF)hAmoR+!>{Y(rd7Qh&W6lDO059s@e>6@|D zSlv6UJ@Qi|bbiKf`r`IDN7XRjce6<(oLFfqRnh>3x$CP)hw{M;B;g*mm6)%+Y2Iw- z@+Y)btsj&Ll`mljML?G9y$5?XNy{5j;f^?MD8_U>^uk@*6y9THJ^1|gecU*VPZ7r^ zRFUM?fPmkJD2J3HawPbAE`$9u5)<|==23?#qG1k%Pcqcct5&k7<|KEakr&;H+412f zpaFj(Qz{NuGltG{j;u=1kjd_wH4`}t)NzSetkgaZSsR%l(ERA*o8lr3IR(?Y*8xM= z^~UVUrtZ=3Ev*VxEXx-!ZEW&|eH)PQZg#T@C8pdpuIVekX%;}mxpu|Sp;Kr;VgFti zI;TD|qhr`;(L}XZ+(mbGM5~_P<(;*v%}jL8txdlk^K=8kprrB(R+z<ZRbu}#{i})S zou%M+UAmAx#%}%@Cd#yVHw*DZGBqCXmT8!W8a;g3uOIQaR&nf;NFckuI<QG78PbY5 z>Nssilp`EvBAw+lNUHPYADaY#rzdHKxuIvoIVYfgQu56nT*$}k#?DYmD1uFI%C<v| zsejV(@fAV+z3H7wK2HukmT+wq`BpO)f9gvpV$D6fIj+%o9?I~t34TWtA0ca&g0r~6 zI|P4cf#5_GX+Z<j6aY#xDYi52Cz(cxYK~%x=e(;b#8F;Cy~H^L4MtRCPW_nvtBVtS zlNym>7dk5w3KSJ$G2078yo}M)M}-5<uI&lq!fu6D!33a1CvhCxvTNT^_sNI&q<uJx zUBNzI<ScJTFx<_KU{>yja&QH_EYpq+R##mTXEn~4wYIV(C0(e5Crxkf*0)Mlyi&wv zj_l?5-<F*zT<J7{H5pCvbzQ}9LCh7%Ty9NYzXJ1e51Ze(tp$KD`##6ZyRm4@w&h)) zf1%W+-&qvfiA$GVmdd|qmp{PLmFF^1m*mSRa_4gxLvspk^*03t!|?A4%I){Zipqqw zBPGTI3VLO*JdE0NLuCXz83N{sk7^Y5ERTWWb>qC5u_SQ<7?%|jnR|58T8R!smH9)1 z>Ce9MSlxTQ4u@_|>D>nOjV#@;D=sfs1ytpNSS*wyvUB~M1%|2RX(KFB`40WiDRU8# zNfSQes6i9-!JLnA8r`YA3~`<0iwO6O49y`YyVgW(+$K|JkQYi-AzhOE7&iXqf(IyU z?zn~83s`aOvb{#6t!}tyt0LzshNEz75trSe)?e0`6JnbfF0;kTa4;uWKcVVdqS4)c z-S}gTVM;z`bsHJcN7f;N<u7q3n|(;-IJlo(G}m3R{4g{=^HND<V-tRdFRTJOa;Jkk zJIm}9o$q3I|D!75-ow;os{5nh-jH_I-qn7o+oq+-Z9l~^YzfY)G>76fqw}?fbLp2% zOH+E+Fvs0CY}|V5)J!kueV00|%&ghTpg8kdZOKiF!?jjycN~?%e$Lka9HLVfT*K?+ zE|!Y+0TRqPGUZK5;af(ydvT*u40?M^*!fMqZ9Vbgk)U2!b5|?I9&n$m-q>$;Xa2~U z#r4gR&wkRfDej4!hA9=US{l>u7o3RI9^!0Xa>bHrsdiG<pNQW!HCguaUOn;?EV$7S zXToJ4oy?$8hi)9xkzdN%6by;o@5;WBY+bXtN{-maiz`3bR&sQLw*_b{_7?5wD+#~v z**~%a2*}+XrO-)xl9S<&QSce2c0E3Mlr3!Gy079+-Kk%K5nLzF8>ZuEBF0SmkDQhQ zWqb`Nbt3nEhha`<F_YMhmQ6WN<|bM~s+BTxDAE0r@pH<ZnD3b=1+GoY8O?K-HP}U$ zl<Ova8Rg?8K_C1t_ff`vIl9OPC2hkw<`JIf6ZA!#<#XlR>PJ(3&FMs?v#*9Om}{xp z`J%F#Ls!Na5n}-kIxmbs#S+rb6G~6}6mmJ9Yw1YFI<5D6CWZ^WB!1@`{%b>3#ya?$ z`Ad%Rmoy4p?%5gQ5)ckEp`<JDS2?(s`)(F)k`o|N<P=JC9VC@_e~)MX!`K;q8}|Vw z9SP+{NoQo%*+>>B0+yYwq5mO#fcoI0!(@`exa{V$AC|J*HP!ImA_#EvoMk%a{nqp0 zZEO8N#@b}QR2L=V5k?4e9O3?Kgb8~mtuVRl6Osw<=$NBWXHwIxvj^JCB@S4B=>xKR zfNUfAFlInQn5i2nPcPbEHq(uX$G7#Q4S$?<WnLOEVaN;1(r+#d`@W?OH5;wlh1BF# zWTZ70IN~zsNKV}tA}@S(lQn)WuMMpVNiQ%$sMVX0k*j9FFa9;<qFoYpSd#n=aEORy zvL~GKK{-Q|Hk7(^cRy>l`iZrj1+7#@zp9M!H<DI&bm1oT<PtPVou#W?T}_7V+qm72 z9?V)m&b4qv1dI5}lzep^%yM2a;a7&2YFO93Tdhtb)SH-6L=+EZ9XT5PA1iaqY((7n zw^`ajd}{G(TIsJJX>(kdj1-t3n0c-%v{p(b*X3d6;eApdiKc4#V2(mJ?d}@VFFkpm z?3vRy%fN)N;HHlR!QMY)w6ggIXEQG%=o}rtXn{C!ryt(+_=f`}*NG|oF^`?s0R-8r zspKH&%#oGv-4F8qkV0V!QOIG>Ny7Mu5~*YH*U()il=32t{X`y25ca{W@`2OgWr#Hh zb3GsqHwXHXT|LB>)^ddwW;jeYj3J3xN*0%LfqN*^#bQ9{8t*;gcxk(n@+eZf(=pXN zHmi)GP2RTzYveE0Ky@LJ+Hpq9ifM2zDPzROf-5Wv<@?Ets_aK1R3c=y1-Bw~&G!7@ zd!~ywxF*R2KyWsCYlV*lxo{FfA&}1LRO0&VCF)6_oin{Z^TL+Xk~T_AD)VWrIbJmx zbNxOuhatj*KEdzJL0qzkM)jjg=!tn?ND{?l_8;H=rd>B>hyTxMn~>lqB5#>^KZaf& z^cKd8v}Sahytw?+Vs-InI}-gv4F)m80~p&fd$8f~<DNz6rK4+myMN24nlAtZDD_+~ zh_5y6+rDrVMk0OZ6{xb0;__N{pKkl6AeoPtVJoVkj2+%GUt^|a^EPz3Et})bQ9<v+ z2;Le9_^+5gZu)M}@RkrXKf*l21a*h!z@~AG%TW2EMk<$n6-8lD%>HH)Y{qQay}dAn z%;r3(Y{^5eP5bLleu>8Z7=TuLhHm7TvM_{gZDVPGEoNm5Qj?-6(TE$;rJ8fXrAv*t zg`8Upc<9{;?RuLW&F{GpLp_+&w5_>jhL6k1NE*m4oA+DkkTuu*d=hh!=8njahN{GQ z*-C}?`<;u)=9naxQkD4eqjTR7;a#qmRuzg~uc+p(&f_xYJBjJ`#btYRoxbw9<B9p6 zo3F1yb9Q(yD$Hvo_Z^yPw%X0^1uW~A3FaTQ$~sW0mJf^#04sI~1l8cHn|#yDin}W$ zr(0d6x?N!c6r%KvrW`NU?9LkZhwtTxZq^3uX1g>PrsGk0I_R?RX$?l*`p=8kQLDte z7n_>Z_4U8@SZz`tt!yTLJMp7OT-*G5__(nJbBS{6AD}h4jUf$e66cy$X9_K5Zx-*J zMvzP-a?ADzhQ8gcv(Vbs#{iU4Tdb9SNH(=FnC&BeD=P>)ay0j(B<dT10SaWN<HE}8 zQmn?f8>%4<%TnttX#<#3%R@N|;~CZZrMGY!C|s1P%p@Z-2XX%7%`0g?s5eDIZ+XbR z2!5!8xcGMzOrkL=m7mT(VwvQ`N!SF^Y1C%&6rvSzRNeFydv{jH1b;(UdB(R7)XVK~ z<3++eba;vZv^|`cx?O1hYaJvP26MMJhY~rkHmc@4UMAv2V!EwGGIrN7f*6t~%P*}T zbzQe*h=FjP!lHv`S=@UlQ!n8vxWo;SKA!x=MU@7VjxwKn*t1yhxQrx;H>GE=>!`hT z^G+~ad&Pkba+wWyU48oM&u3q8P8;5C#^n3rH|o4)#pG(7@C>5+2<bn`%xtQ@jl(4} z*ZUTVB^WomF4QsBr&t!tx8c9_(0sG+Z!6Z03=$t&pCdA2dZ&dnFURoBAz`jor{4^V zEmNrLHTx2=W5WnI>M2zo3Q8t04oq64d+Vxj;8^JGRkfKO&uzui$v;*QX^nlfxT2S5 z)~2wKCL^ECMsnr{!tZZs%>#Au%=4zK!?DOQ*qYYO+qoOjw&=ee{4@`Bo17cLgSxOb z{Ce%^Z>lVF$3K3_9c$Sn9bXk4c?Y3palO94iMSLUCCfFP@~oBk3_$|FJm5xY^6YlG zWTlZi8QB5gt87kN4*F_u9X^}Iga2Cl<gvd<NRIV~KRV{z9e(&%JA@x9|55&A*iRD< z1IG|7+kIUSPPW5y%HQ(*gTjGJE^*W)^YA>Ho+vWhDIRxTctbE-2Z%Qr!q#a0-T1fZ zTKGF8xdSdPL`a_Pa*J+wvbS1Eb`9xgF{f-d69{|OzY+GY&U`UwWO6x2CG3xfwtDo~ zGcc~`+!9qM;z5cVS&S7efq1)PSi-j(vr{kET9v947<R&^YF%H{c!bCeSRM$Y=;>_1 zzAn$&X6?;81ukiGRr`wOFkfl_x|LQQmd93rQdEmA!#@Ep#!aD?&4aBr>cY*UGmZc} z#bKh>_>Lr!z_P#<=B=}&p&L#|f~=i*m!If%XBVPDi9KQbs%5v9&6oIrxw%HlV_3-_ zS?e#Q`jG~29~F+gK&eva?!;DI#ta!)NO@Kd4C(aV>}DRJ**+nNbEUEkF0@=${~%eS z?Xph1{K?I^`&#!;fCB`uXsZW~y7sG9PPuzG1mDIrOj!xsNt0lUqP+UO|CT%MSN=~y zLy?iog;@!$k;sf^>Mj%MEMF9_COWb*G1soSK5zl5p{1C`p?C^pFJmywCpP0I`88h8 zW&299M-^MBqcN;7k0KQl?77++$?qiX`WTDYVEuEV?BRR_BZYFmlit_4hWoMdJJiDY z-HjXx1n><U7mV&L$MC9i@40AH8iCpo$wlUt;Enhdfv}v%%rehW;{f0CU2)CwChU#b z+Ba8uW0z#V=&FGNjU}Dqslou#XWEElqxOdRyPV<d7-^!5r?7v|-x@qaWog!h1Alm# z+#w7?|C+idtgDIF^hDDsqB{4Y1h8&FA*Tb!@|1?Nz1#g+U4*W<R5<{aG$U+cUcJ1Y zHN00gXKqL%&bm-(yGtUczKg(Qv_SnTl8LCJz^nO|Rgk!}Iy5{IY;%`jyJBTL*b`)L zVG>qGHo=E-p!8qkyL6q`A8sTq3~T75#cPbFCpL?g0z&B^z%&gV-2P%);SJq6;u{5# z<`uh<rZK5;v?+#_7*RcQH6(6MHYCoYiY_OKv)EZaMVlaZ-?>V^0pn4ReuC!?|Ds=E z{o4h7Mq_vM*^M%&>6Nbw%@*h^-Po(eB9W3ct-j3IoO^8_`CPMZpX5$;7G2hTZvHHs zayeCG(0}bGMAr@KV&h^czdhBVC+(05`no!BF`6e^i8803!L<am-s=esmk+<92d^*B zPvz%_C_uK>hoIZ76MErNNChxlJ;SUOY<@63;~LB`@y8rwxptz0{o0vqr$y)8663nc zee#=fqE>fKH_UFhDSY`{;K;~{T_5VxqvM<9NKi5FbUDLOAc;DZ5T0?DJU=WLB~TxR zDBv1iHH!qV4UjA!OIWN2F5C-JcFw?ZlnPOeh{#-<yM9W}B^m7gr_N-bMayIO<ZGrI zq^`cdjHE@7O`U^1(3@@8ckHiXlfr9dy@1xJuo5*TTXR!sIGwbtK&vGgdwrP;&|UqO zWHywuWd0=yU^*eJDdv=Gr+*!udkv5qr=NZtIqC{4j=>AFO!GsvJr|*fzO8sfk+?Ko zqj2GQ+W8taOBDicFFs#MAZN)Xag$!0Am3D<U?t>MJHOpD@yZ7KgQGy6XqOP*`0T54 zc<+xO`P*+29<hD%s6yn@F=0y~6(hbk9WT>R>V4Th@1$pJo4xsTiCiPDFL;(t|8Nce zY~?xVUp1={#ZGOx^ljla)uue<&XKVdi?=M*4vE~;j=CIOJ*gD!VwLWf9T$8ck;XeX zU_DXl)|PEzHTtiIHHtMSM+C4}L|`~>O{+flPLRfP*!jktqNm5icT21%={GOzVVoRN zIrK2JHR8Tz@g8EexZv~>Gu5hahDNsW8dN!8A<{Sd>DAM_-S!V_f1TX_B9uUml-wUI zWUcove#Be|i@m1ML`%%fxC4apWekIMmq=m``#<cxWmJ@H+x|TaLkuAZQj$uEG>C+x z7$7MqF*Ha?Gqf~<f)av&<bVo@ba$6Z3<46;B8}1r67xS!?|Po=_PXwSz2Dxoo-Zy~ z3*nrZBlg&~-)?WU7suob0^4jTVQX|2Jar-}1gG<zRi6nK9MPu=oIV)9EYj-Cc_9d1 z)cAme>AJ01FcM*GbtJ^Dc4&pl=jo*)0*y{@1ifo~utEso^#M5cw6m!k*%a%6|M_MG z%BN$wl3uOoRBllj<P>Efy{xa-S~vP>2qR}c#DRHnTbVNA7|C%ul|jPURBHAi_4(6* z76Phyq3&wZQ9wxI14o$FeDo4rl)?PajZNHoFtgSd5hy5rcD-yqq`d4i27B7Eo_k9c zmE_03iZPnldcYGs-zfsiI;((oEVHY>sm*NW5os!1rA1Bz-$f*w_-=OW05;4+ZVbco z+MJ8c^_L6jEG)yWh=X#GMH-u=xNJ8AuYcKi70~H(KI-wONupbq4@_eWr;GPayR+c4 zDb>4ZGPZ51dQ>1^5i)U6G`+sy&*iRnbu&J5!Zrxx=5a~4u{|=4N8F=|{egl_NRD#8 z=N*=NTxImg_6@Jx8<NIWBcgNBj0!tUk9jJNgT0=jYXBXBD#-W4Syn(!&b8=@5@z24 zp^*v@#-X1Z`U9)n`OKj0d!4Lh2gn8L{ZY_?JWt<3)(b2_QZfK9emlDwgdn!y^A)(l z4L9rg&an}F`V+O3`^uScYCb%G^w2Fb7G``d(s@T5IM`gIPx?bBt|xtgfVH+=%pR)z zIu5so*Mpr)G@vNK5kZ{onv$rK1oO{5Iq*$R@f$0;c=_$Q36NYrd)#SF85Gd@p~pL6 z_}sFiBO|6FOV-JnuDNK*3q5Ci+a%u4SAhv_{4+JtkM}{J<DUvgif0Jk8o^<&YrcMu z$yEGc^_H5RTS!3!HvgPwQbl<x0?vzIA*KTB)yyS+6f@px|I`6^7jgmVN?09!G2cKn zCUl^oXKjx37^pO5tY*=UPY;1RDcVoRvC&m(J708gA;rP?@?5-oz!(nF)j%=-AP6jk zv>8m(+vbBw1s+!fp(zPT6NoaNij|RoQo#ODp;6sZ)%;t2?YxA7;4qQ4=Q1Z)4bmd5 z*4BD178Pi(%{0L|;%~pi4D4{k%+JVSC_t?<a(Zz%LO$R+28$lgIs9`kS+T?~w_Wf~ zj}%9-nrW~rPUgYhQ&U-N15jJ$0*jL^sGmo!z{*Hhu-^{|j?bTiU5&vULiv>YQvbQ( z(_EuhktYz1Mi|kl4AlR=eM!UK$9=XTeT>(_7rZhyC@w>m6G&|G@+%H9Ag<n8TwD&( z$1ysT-<G~}a)g#&0KI}Ib7h3W%5Z*C8hkJ`@AK#*;X8Nko@4C-U_MYDxNZ=5Pw2yu z_Ex$+?oP}y5MoGy+1`s%UQpAZ9OT4Zfbm*;yP)e&FEpSd!wEv>FX9{2zL0$V)sc+d zu;`U%?$41P+Hee82Sl`Majq;P;U^m2_G6(|hzB{G7}UQlInxXTM6B~i$Xd;gz}*mJ z%-7O)e0POFM_0)U6mvz7kt>V-%3S;4`Y^{p?PRr7iIO$RsBj}t9BqAEk%(>!=cLiY z_XZN+We5Xaip@_1W~ki)U46^=_EO}pBrB-HBm>NVS_a02rz;X1AqC|Fw>A%i1+Du^ z#XuZyy91mCDmPqP>US0!|6GFhH=Af6sS;(1{3TH&C?w3kNb2kH44wlP-6tYH0Z;2m z(kiJGUSRVT(J$5`^f%KTFd@4~eXfMRn%cY|LEzo}HZBg;*M-MRA;Oa{w*oZEEt;w) zj!P{fP}YwOSi9a5K9{;ogRp_lHB}^BIswC5c`iJV4F~zxz~I&N9ncKp>{N^=unM3$ z(g$7HK_~z1lxte@vP3`2el1Bpf4Fa<mYTKyW!XBQz?wf8%kuk+wW^1NoS{~&qJucl zH&gm$qy;6!K^+4J8qs+mwvD}DgoA7!gIEcf;TjW=sIi|mRWNk75_DyMcLHgNKt1-3 z7d;hqr>_W?)z%_RnvwdUb;3N7JC!n=w5M@#511!%K!=;_A{<P>lL+4URn(RJ`Whd; z^@zz;DOuL<r)pOg*4J*j&@Zb`jvJqHO&^#7zf|+(G&=x1PWXK|tM7)wSxMJ>z(<sK zUf3)<<mZz=YZv@Wxz;R=ypx9rWZL%!uD<~_@yX{=VCJG*Gak`3W%J;bJA_N1B7p*K zx<QkZtwc94v!`9gat|H&Aicc%n<|f=m68ZA4mjx}Es1aSKD9OkQjuHF*K$%pOw(CS zJOjoA4hXk3f|J3vYSQD$!(i~+Zo1<Ke}`;|P^I$zXt9~O(E`v~-5gNFrps7_1$>Ww zaFJB#73M}$`B<79wv1KW>QLLy6!Hz1L;|eNTf7OdkDx<h8N9WT_wlm&#7-^9{rS@T zrvwqrSKQ9DUP8Ps-<)K+1LDbaDYqrc765v@L%{Y<on69z29GG)WcTRq^FgTkMf;9{ zTF83AKYbSm{P#KFT&%uldjtwA9O>3ayy7O3Vg|YTV=t6QmIia2%y>d{UzXz05I_oM zzjYwB3fIT+2@8EMb1A8B(Nf`$hdNq8KCvXg)kt@jSSb+V5=;O>89fsJ*m#959I<~V zJM!$V87M-~nRm+3kV??LC%JQb6qpp)X9KrSn)bfq8%M0zAMKxBemszM@%#naYo}>C zSZLNb_vl}R-*|Pyq9;#S__l=tbtKpDK5DzlY@NC8@r8>Q&tJdJGeCexV2?Xyo<=h# zG$b0#y8iH##aRCMt}eL^>RM*$i>YmUdcSRb{O?HXt!{?zv&j{sMG}LvcsoEK7zUDq zN5D}kT<$b2Tj|DqA&rE8wC&=#wSeZ65}HFW=H0wl+RxYsTV4!pjW%f87>q$f3(UZ| zB<ytpYzOV8vO!xAhRqN(M8VLu^=Q0Ze}i4pRW~E<;goL-z!4(wZ1%BX;PHktI4;^} zq}q@|JuT4j2x-dn=E;2=DVN>{dY=MyQi(8;?#3?>yyoJ^9Pk(>1r5ZGzcVnqJR}vU zXNw_=VRp^v--}}l90%og8j#0jID@rMSV^>cu)WxoPO9|U^bLN#_;Q1C%e6;WyZ2<E ztKiS-6@S<0ZXwTnqJ$xGk%5EPPk?62_`WG-3N{Rc3PM0p)1T@0=qyr)nmDK81i;gn zA)$R;2SgsTaE0?PTmg#^e-W|aeF+!_J#qs8Xz?L1zVL%dX%c&e#XwOP26mWC<!BR7 zf3|{_K8p`X-Dm|2>FdUGx{n<vYePZRz3^Tm6w@*R@<h-wZW?zO;8F|ha2>-qNWRt0 zCOHdyk<kTv%L;*4(+1fec+CP$-C!}eZ@bcImh@+iwz1KQr`!M_p(j;RbVRYGTlkzQ za26r`#Mc>DS>pIhNw+Hg^MN9tMWFMZAR@s2#CW+QUs{x^hpSoR#|{Vna~+#c&{^0K z%_w&N&gXk~{V|r&U^_#yq##5fn5fbI^LEz|X8<5Ww1P6lX@hy{3GRIi$+$ecWu_%$ zF612EeyX=Yxy@-X0uyMjgz*AxkuzluJM!{Ha9tBW_lz#QlWZYGE7Xg6fE)!h!k5%R zKf%=&8mA#E3ETmqE=vzp1Zp_=P~{iyvZG3&xhwo!G@zwLp-45OMgb>tZ;n9>g?=T; zt^l%xO%i9>FH9oVeW|14x75<DpXiS9|EZ1zL<{EB7itl(VD;SYpOyrfNl{vZ{GX7% zA1!epC8dWpy}^e#U->*7=yX4XsBe{DoCdRdsT4d{I`=3|x#i_N)<%UuR=%H+7zlnQ z47h;8`qHj+y$)XUh+&iO$4n6{onUsgDTWnV@f3Wr&z%lxt>?oy9xbP304SnL&Ffkr zw-z7_{IY>ZhSv{zAN{44-Th$xPBAEg6UD+4ELn9|z(J{L4Ql6a%Ib#6|H8TuL~}vY z4GH7zukE>;Gkj7$m2;O5&lP?z@~l`-MXS@D0bY4q(sTMj=Lm?0s7JYZ*a$YX=}r!| zOOGy53~q?auopkQs_=8j?kei$$=1NM?Id3a0zRy848D{CC7}#2sD3}?x1R8)>RIp+ z^a8=YCb}{nC88iqg3XQh^$}Qymu>6ZW63U9s!gak`Y>dv-@Std<lh4V32_NT^M@wZ zN%&vv*f&P-T{~U(d^M8hoW&21?^sQJ=+REE{WRp-UFMkcpVj*j$}^7?zCW>jGO6<y zf90PC#!3dz!Mi)>)GGfM_frQq=tgaRLs#kj^>Onn(>(>jwTL|5ro8^wZT@FpY5D?@ z)tPBo&nN$pRe(qEe~<jH(>~+>-sOK?e*d>H{=YAb-6u|QljeUrF)j*hfJQD6%M&`m zD5yuk<qM>ov!Iclx8Hi-ISP_l4*{`wJ_zJ90qA`5HW2YQAJYECar0&z?C+s($E(A? z(wIB912b@-7{J^J5U0?MvH=w5om~J7+X{@c<|44cp@adT80ZI1j$c;<NcM|Cuo4RT zUZG;cdhD0%hWWS%hZ1U06o2(sjf3ujC`9kUOWIF$4g$ZF9~lWG{b&6?zPxVMmntc& zq}E(}nHF_`1rY^A#H<I75i?-74uU<%)8R+A?0hm`^+A0e$-XKA-#q~tszoq7oD_(~ zk)Rwv2F%J)NIWo<GpYeGl<i|c_gBwSEB}!b_F5;|Bh+v=q>B@Z`QvHcd_%&HbSNcQ z#T^alfwRTe5y-TcfCSH8O(X9oup);p^rq-0WZYP^co7WPIAH)75(;vW#2r*~3=FbW zt0GJvC|MQ%Gllr~Q(S)X^o6&GKwvEI*i0Vt1Lo}Tpw!QoJ<yYq<r7rkku%(aKBvOu zH*lbPNC9>Hyg;YMoPq#Y`z`Girol}gUpg<{fTx-y!bt{1QI6DYcxwRln+dVZ=|Tp6 zJjeXSpKt!ap?L||%2Q4OkoV|$*Op)c;SCp%2NS|&a&-gaZM*b!!9$o@(!S|M!ho@c z1acdAf$Zig(B`#j_;1DagTzyFy!K~N&q<Che(Wquz|rQ5cg4U8{RluHk`S5<s*8Vq zF=o(`3>AgCzb(1w00{18U{3Tbi1Nsxwx~V%7|0JKbX?sFo@XRnhpsKt`7;^wID86e z%DN-&jV2JchJl}M7>aza!It-}3D2IifuY>y<9RMgG6oS2t`-N7_Hp4ouT4Du*WUZ% zS3&VNGi*SGWdMxeMP`CW7GBx}Z9Ca|042`^<NnORa=iQ50^#c=l<o?;NqOab*1zn6 zdcttGIF0UoNXN`3iG+dB2K82ijJeEtwsn6Wq~t1L37L-q0srP9;81le`s}Xoi#a)X zh4?rE=-K9v6<|O)1&K8$)T!|A+ojosq`3d{=Kt5Z`S-6(Eh#S~BVZncK}licjGfIl zLC?RHfX<K-#NpJ$3wN@F0zjFg^*Wu=830dXrWG_c%<On39WxzKE=_96GJN-fe7v08 zAnpC64-cNu@t@k&DWHpEzo;F3<bD7dD~n5k1DF+P1t1m+luNfY2jM45Rk`|eD9->n z7byq?PeJw&fPJ~)8;xGRpI1N&C_!|<!qos7qr=2T3`GTA_19Eg-Um!PDKo%MApvQ- zfhv5)X~j^RplOFOMESbms2tRBQ!XWFnm>3?GVQyqc9d$X>}q;e<r|ghbj+o;#>Hel zX8bjSJ=TD_X_ED_fi)71hOc$YbqZAW9v7&oO!Wmuo*hi*a3*U0IQjB3X|9mIs^R-L zwJN3G#64^#8E>dyqh5}|1K)6v-r5o9nTy|ZrL=!f)7CuCYNH>3-rfO%0%CyWer$9R z&0bL->aN9_KB%^FNiYB%mq3JB9Erv<beaNXgBg&BL{nrZi8~pujRg+p?l{U9AyieG zBR2EBF**fc+CrrG1BhX`0jfwHyU=`07e*~+UueBVT!)}BKrIUj<z_$#^0?(_trG2M zoea8y?DZg`Hv^UwVcUppUW&dZP=_W*FZ3WG%iEFK3==?ETXrX?q|KFe8$T-ohx2hU zI1IbYC?Isu{-Ne1o*vvmdf(5So`s}=Lx>4)6*c^`n0xFCfPFkg(jhJ${#a)P)P2LN zH_bbNAe-*d-T^QST?JH%R-m8Jvzt`8XiQ{G*}sT-e0)`eWBSp+hn^(SxgYr;0opuk z87VgWIIc8cETA5EFs^(pRK9P$&XDCWvgL)j#~%A!Xl_DlxSwO}=f)%>s3GlxT(J$x zqm*_seF18C7L3LuF0;l)ElL+!JjrsdAJ~2mXo~2r@jYSNJiSVpAKEmHk+>q_bAH-r zr;d@DBIh@{oj<Ddo=&L$`>CBFKzs&NycN!N%5q&01-2T9ch|+3YdKjgV0RNe_%lcD z*me{kHY}PS4PTq*LF^%?<bblMgn+7`REzlyJKkv@?hG+5ytBbtxkAhe*`PHkUa6Cn zwZdODK~;xNzwCgL0QH5oo#nwcP~>HdW7eY+55NM4<^BoyS-K^>pkYr6*$q>Aw~rYw z9y^0Y(Irp0S_Pf69p{_94*{<`yk!~EPjRVRR;6K;6CkfjE4VMsXPPwolhL9Svg~@$ z1kes}l1@qPk!dm-jBXwNO4b4U<`FcY1hT>9R}7=ZdW&}K;6ETYsp<<h7xNF#d4xyb z!IdMH0LlC4*zy>7`Xa(@LUlUV`DFGq<zmN{Y-hosA3i|7kMRagk1)s<bW#|5ui1aX zW87hG-7wSgr|~XvO#40%)pq)|$xc8r_X-tT74CNd6E0n$EHXarcF&)~HbC?AA>{QS zGzZPMaKrOKZ9Magv0iRH!d(wRbs!Y*(WHz$7c{h&oMJ5sfpW<!%?qHd5;$N_nZ+*~ z<8L$1r@DiJ#B;+(v?z5WpXk+f;5QZJqG5ipRx%6ulSsy-V?{^hjxIYJ=e?hPyzZK~ zhi)=tvg$QCW93^S#P{=O3TI_fb-)v=NX19AYOdItcD^|0gpJMLgchcj)E7P=VDJfG z8g;23+XIx8_V4M-@bZ^IPT4uTazW|f!VvIazm@lL>kRw^5nDamOWt&Ka)0m^<{p6$ zj|AAbbNvK}J6bW}I-cdQ?#8awop)U98^%Ac)TK@P9;&&S>O+B420ei+SWu%sy@1R< z>b=<kAp!?(<tZWCf!CImIvU%q#*2oB;07Q<z5X?gW+qLxNDYffU!r+5!x!X(g2%Dx z#J8^Zf)4GMehCONMK%G^D7Z9=4P|p~o{gOVMwC2fuxL7`YmZ>`EyvJYWT@8R@>%he zBnMcT+;m41Z(jTCm@C4fhv)h70MyMzE_T8+S0B%(l^%F;y?_{L&NC#PZb|L&>hr6i z$9+G7?PAv|lzcEh8gY$BGCVY>n?`<u3|V&d5%$(A4l8x*{;FDP-LFOn67*F=9dhWX zVs*S4UXnBvLh!{+)Jav-u|vLw+Nb%pWs`^9tO0WM$D2JuP9Mc*SDg-U?G$$G->QrY zDFUs?S00HOTsp-~F?wOG*zB;sxKYMsXz0Yb<~IS58Y#4!GbV^R`^x~<{~^E^B2YNW zhwrAI8q-RPSJ_r<1K45L@D76cq7U^m4w$377DS|p{cc!uS|u?bp$0gF)O9wTnyz5! zwHKNkq_zX)M#H5a2Na61ejnaXa-76prvtILlnfl!f3K_`z!yfhVmZRfpISOJVW0wn z`*l;mrZ0K$6PhfadylVgyZk68&!%sTh9?z`v_Z4vEXD)WS^1F8cN%?1HC2_F1fqrx zAyw7;Nk(Jt0N*Hn7UdDw)9LgTQnMJaT8Mx+bpuFu!l0g0%;TGRe!=@km#s+~CS&-z z*7pG9i^U*%@QV6ng&+>n1@0G~fR+*lK3;K;>lln`j8S1x-p#;-p>oy5<cA2QD0Cs` z=wj$C{Sofvva8z%#)VJzCJs1cF0MRVn3If;bXC5zL)N^z5Qv9=OYO7L;7FFW&$lmz z3Pl`DMZ9l?@{tYCHUnaS+4pTH6)YQTMDPD#J8!mZV*BH`2SvlMBSZ3K!>u1{b%tBL z?fTno`0QMv)Q${i3y&>v#e-qYu8Q#d3(O;Vzo`#s(gbm?pWLxj=KWZY=(i15lK%q0 zV^Kx`(={r%p54C{DG&|}AJ`WN`M{SiISIBw`1o%0+ob?)FRS{mPXuZ&R7z)Aa*2;E z55H)Z!H6c<0UMY_bHvw>2*Mma!f~}@9<UwZFsyI7<JoQTRny7xw;Z!<57;FI*tRu1 ze2mNNSGuJ69{nKhqtAGsaiE1qkWdFx=mx0$&U<|DuCZ3{2-?l3X+~q{yHXmlh-RPK z1**dP7G`T6!Ru~S8ZvpYF!`!sGKDt!@g0F?AxUV|^x9e3U5~a)I}y&HVet^yb@;jF zK6bY%bEn-I=!Q4t?xf3a5gY~^lYsC?x3$aZ%(|#A2%Jg3XcCf{nd-~J*V-Txr7>NM zZ;LzLdnS%c!|g7875H7(YA??w2d_TcVYbMVWO)%4i(^<9c1mv2q&U4SRoGwOgSq7) zv;3LYh<%e`d)q&AyR&qqS?Ys!^c^s0SZsCf*{;$q|4xtRGrJF$oHA|qpU!Wa*4U<y zIOt{`cnf}t8|lHE^bIo>UF~is8QGBx$gwkx5}(rG45;CY-nGn89uyH&d{``<&2wk} zsZ{nH4}YE}U}K8PYzxb+s=H&q)5*>$qzxY0>$>(8p_9{XFP5>M9DhADJF?zxHOg6| z_bK>v@zRC<hJeD0vvuFUwKl6sg<_13wf4vToI=$`9BEJm!xwaQSCUpa0|WT}eXj?? zc|+xA>x_A?f6CKQcC7ulvIu}((c;C*gnGkj4QpqUFv72rtRFFZJQm-tcF|306;V=} zX;Evuvy`w4H5hkaG2V-XEuj)y$(x@!MU!nWU`g#3;OD`BM*rl32`pcTKpZmNnLPju z4SD(=Vb6$1hjJF7bptYCi;)p+E)8THmj=m@9q`?TQ-ra-6ST*lyEIrDK74ng__fM1 z2*L!T#*X@~thbx00ifKRh#m&YJM>P&%Z0d;p3DUJ=UJlS(Ty*O5(a{=&F6}?FbykG z!3x&4L$1v0cW%ANwiA#HdPo#@jV-3n>6#_Uxbg;O`kFuMGLlU$GZ4nqM2g#%!%@?R z9D%6oaWr)K6K)}wKu|R<d=Sh5J5p|kBp+nSAA=K*JDo<sL2qG%tbaDt<wV(JplXpT zi5Io}h{fl^_i^xF1bsm--bL><VAl~wWvyH^WG^mahzKD%OkKYZc)D|92yE_6;;0me z8{}^-83y!04cElpuy>J$^8hZW(HGIiMJ5xzJW&1>R&WhRiUh=DymwKjIG5sBYb(95 zKLzl?vLJv<6uzAW{%?uD;kYH~$W24f+eBey?{MkQp11#q`S$%&-iX#TbM~TWVUZp; z@`|Cg`&z$n{<z<y*Q8GRHqG`^fFJJbF4p5WsO-@ZZN!%96S-#>n=A)`K||`BD50kB zDtt4zljexR@5`HSA+%}^aUq5BWpe{b3g;8cu`!=*87ry1gP%2ahOy7-!$N=PagA)y zYfFsGv`7Y9N8#_uEE*JAD0}n{$6KQP&7}6kx-=`D`HH{g+kx!p;}xT_(t5Xg%f(r- z1|A_+nbeKscKU@^0xz--UWBdMN1a>g5R*7e{h{RgQr#A{5{x(A;aiXO_-F^i^5kA@ z5?Ed@YC4vc7IxLzU)HgEB)eL!>?F8Zzp?6sF2K<}lr-T#)ysI9xNEK4U*aSz(`+SG z5IxS)I+}}C+~y*0LlvZieqt1V_sKha>{#(PISR;u&p5zg;<Dmn_u{+;HxDL8E6UY5 z<Zn-zUJ|FUJ?M;7>14F>zRRC~rOto&WB%Cv%>~n2R7$HegfkfIPjr2*&p!4P1@2^| zNd?7|Wt*_83JWWVgQT0Cj87(rxr#L?=RsGD0tj7veo;odv>E|51K;S_^;Il(>^n3_ z{uCxg4bE14{Uy9W3fTBR>V=jYL58XQHr5l$E}w-k5k)~m02JFK+$ddHSp=I~UX7R% zcK*ds&31H4QaMYo1cIe3=+%z?b&RAq)y}I$+Tg1dC2lK2!h|}=t9L6m>N=cYc)V~- zIU$zf#5z%}f0M3B;$kI}^#wvIfqe%qiE3bL?gG1IT}gVbDq?=_2M7?kPql1A7zqE) zTH+;Uw|)iTH(lExPLDN;FUr#oyhj=w%YkA7&pQi=&cmOPeFOSwqV{7G<~$BltXKyi z&ryf`;8E%+X?CW8CZN}!n!9qNIH6<+IRSe2@h+p0;Bb`#@Dy`b5<JT==MTnB0MzQD z7?|Si2}JalR<*E9c@V|yi;GVixp;e~sL};a$six+v}<s<yT#IzGd-3HkQRO)%qOP> zt+k}pgD+!-SR{FZp6vJo0B`I>Xj550LS|0cMT$O7Lkmc2w0SlHeP(t3$Q6jhI@bG3 zV^K&=$p2aMFtn%@k`+I|SK|GWoN)XA;Kc~2q%QD9uSy2*l38D6Mmh@SnO=8dwO?QN z|50a{@!(qZYGI48a)@{CmGDzLUKK!DlE|U-%&_H0YNmqHdGo_J+_G!zg{;c3=41qZ zAAy$;bLeqz|Ct?mAlJ*`JN?yqY>lzdPXE+MZ7${00MO1f7v$m-m)w$Vh;epM-BLhl zBvWYk$ku?Gjs+VAyLnze6vrLY-z_>awWeG7q;<2$rOid97#E{>3JFc(22<Rs!X3<s zh5GW&)awc8^t8DoW9n(SkD3B#`3#vF^>);jh8>q58gV66ZLDrA8N{_l3O*%gRZn5{ zSgNs-@L1ecoFmM8h+Xid;p%z8s$OktW7BkFuy~!;?onHnK6n0Pwzm)wTi%-8Z_>j( z<geX?wGnHJ`~)@Zpi0i>0>^q{4v0q>LjcbFX^S&T_-<CePk71;+v9qxB*2k0t(R1J z@(R55QtENTZEA{+7mHBqT>_ee*7JS~H_TC|inM1tISUG^C2s{I@B%u!7CJfk^Q%w4 z-_M;mg7DLG<jM=P*`RcE^1~}6t@)I=ukFFLn8<Tv)yt90-S3;clZU@S<d5Qd1Tn(J z|Ndb1H?2jE;Bemr8F8ITW4@62tdbSpy42)Ur`=Bm?bB!A`bV^Pt?CXYUlLqy5r>D8 z@fPO~WT`BUMkG(44c<pYTg-e9#DqbW$B}6-nG?sg;^R}o8#h(VQSW0f$iqY{Qs+G* z((P#lQB3#_-KZjru5qAU0^|rMylGpYN(F1VO~npash{Mx$eM6>`I(*|Z~%X~GJ3TE z=p#zzMT2frAt7V*=s@!7so-}&h{4bBA$U~^{wcTLCzWVK+IL;qr-$$$DcvGH;S-;o ze(0(o3nB}dFc^{UIFEdT=5ODn9+5W0KP_a{a0dRNC-J1ugu;F1Z202QI@@-?MJI4f z(Zo?KDFpu9Vp(kunb`z|<(G;lM`P|;yTyXqF)7%Zlh@q8l2ER%(6E5bx*jpc_X>y| zeWJxOVEEAx#^bJ=xLQ;*)j1DZ=TRduzMi)3*dHm!?>t}F-D1fX{FLGzd(>7F<d?Wd zJ{{n5kWmP=w2^SWS9Xp#^whcK$3Jh6;Etzpk=^Vc#ji~0eh#oT8cJcqLF~sWKagE) zGAZ&t@KvImebExyPVD2av^}7LTs;_RI-w~_lcaEw{o;%D&%Al2k-GXLFUj~j?<lN< ziED$J#yx3K!9&az2!J1n_DQgFF~nW#788%+P-*~3B;m}2+Si%&UsSzu`BUY$Z4y^I zag)kr`25F=;`^I8vgxlrMAdVjqT4cvZibz#R**jUu}oFDHhj5qAFFm&s=}TYb;*vh zPwtJASHM=Pa~rybBPiG8;S-AS^X0Zv7o5~ia(@@GrywFO;{{e5iS)r>(w@rK6z-%o zt6_m`hrQot6+CI=Bsv@BtA8b&(SKrXE{u)8j@a!^Wig*4rR!j7Akiv!U~A+}$NLar zWHVcQ?mQZuBqdnX8mSvB?DkD%l?N_4@%(ETCw~s4BzE!|sEuIEosh^P7>1-A-Et`9 zk7=UfO*LlkV~`VMIa%8NiPhb9DTa_aIfiB?^_HD(@P~uYnKS$%+Cp5o?TDk^b%O3W zX?+8gS2xHlG-Hh^E*dDk$ha%f^aPan1$3QbV5}|X!HI|i;yx;-uRrefj0yu?tomak zlR+P^Jb#1Gb@beA@pl!;RxBucR`;RX!jF}n*r6P?OYwR?I6m2q7my#BNBpdDoRx}b z_1ZGjc(x`Es!H_F`TdaHCl4(iTLh*PEbRu-4jD#M?$6hTH!mkyr!$P)Bn8+J2`=JF z$cs!^Qj>nm=r!8+^o7MkRr3~5=FkRq@CrHwR1{<IV7ZW>#yMDT1-Z<5W^|8mNu76; zNtot&i4#x*4g-~aIY*){>${{QPu;pS&T|IY_{g)p>D?=qBhDB!PnDM(sj%E_yp1v< z7C;~0m_**t4lu0Y`g-UMiVmH_t2<uu-TtxKiFaQlCL9{#K9b_UFXI79Ihi1rLS|({ zw#Vt;I77W_rj8D<0W47;{6>($X!7^|9Or0=5)>$Odax&RsaN66pj628O;SKNx9XMz zu6{f5*3O6FG!9Civu4Ioc3~IH{Hk-V;l~Exwi25jf-|nEB%LV-fdf|SEj_^%C8IH- zF^izNcw2g(;D@M$0ATg%*nK9{?crurXZNP+euEdw!f5TuPh8|-@;dF}<%IX^G&1te zJ=+0@N*8c{3ht&Rj;}cn?M=3IMAtJ`E^pe>7b|!5zd3oEssHMy+0b(=x&`Oinu{+^ z)^+mQTJQOjpBjheX4PBE6s?X8QegrP$zh+)iV@3AJ5Ij4BqY8rc(UzUZ8zFATaC%b zsK}oPyGX1q{pP}u526v&974h-3}0Ew@ViuRc9W~uhVX01V;B=B?q!qqy+zE|<i0y9 zU-;4~DxT@xUmM9-|Mc_&08#5?T%FI=b!X8U3Yn2<p@U1>Ua@89>Q!=d7G>cPm#EQK z8GsiQ5WjH2f1Zw4jeH`CbzAHqH+38sSzyz1KU>QOEM&*<)KwCKr;>|X`tI>7#>VcS zc<Y$_<KAjXRBeNi=Xf<+91ouPwm1oIQ)X~BUqAN_dt^JkA^zSfmy-VVYin7RmZ?jT zSTS~ay5*z2IQnXfLQ9d*RakHeA_@b_juPcmBSP`~AkvPU+!2*~{}3@+laSG`m7FjH znY`x2NZv<a7g6D8=9_|eZb^MEO0DM`s5d5GbzFL%f>42^)T1v`zFtd+_c=4;^@=9o zIthP^t&#c@Cz8pMIQiz7n`G|o&h&^kdBCAIzb(@;2gGiIl2Z&O>2`dvPQ)B>6Y^iI zEU9459D2Q;v4xw<m9jL2i2(=QCY>CJSa~Jd*2{i32i-!`4~*lAn|IA_Rkx-OuktN| zf!-EiHU{?>cXM!F*=bOnrgsfGPT}9Fmv2SRdp2F+6p-`lD^WJ85wP5UyqMn0NzW|K z!%}9O3^d9WralW<^L`$F5~jDRz@8Xr!(Z=xA<53Q8EfBKq8M!dR<28~fktS$w`Pi> zIy;+=AS`31KE5wH)l<?_tcTMqtF=OO)l@3hSYmJNN9y7z1;>?`n3mcE_bFM95eHmx zwADlOcRya~z2Wv^+YudM9@F-lWvwGM$DT7fs}G5$UQmWbV`#$sBxEl25bOn19o_(^ zGb^@g$nFvOm4}ga<zygv)8C&zCDZzrJV1gd2Vi)AcUnI{L;%t2WOMJO;IWC+`Rol) z<4IVuYRWh2AQyKucHJ(!7@G26VpL_aB|9Z|;@U#k7ohes8c2THj=xebO(JeobD;bq zXQEndTv=v$E0Hl}LYmuDk@ONu^<yn59bbuZkiX+S5!Us=c)@~CP|n^QK|AByAt{lT zSGs#nLa{g${k;^<H+DeMV8y@}?fz-_DzhY3m-BI-h?nN*@K*I{>7Lqqi^@$`_yqYA zN5*2OG*<iiFll`wpV*t%W%2y|M;OrQFpeS~h(-;C`1makP@QPCyJJ@qSIc)6uYl;a zE&+in>t?4^&$9uO!yS2c60V7GBOkeqsl#C-TyA0-=iaEPI0eu5D2o3q|88YuI8v-O z&(Bmx#u*=s8#|yk4ji5<*W!*bU=Cf!SMVE7!pY2ExduyK6^<3H={t|ic^R6H7!_FQ z+ja3bGr)pks)RI&JCDW&#s{sY(kxAY8+1Kr+>-6K#FUwo26^`Nx<zYf$~FNE#+A*p z&zpaO8jxRpiMkJ?7s$BhPAui<P^Y>%z2oN|+nK<3>>0aUDk;6JlXl#$#v*oE#61l2 z@lTl6dG;}BPDKqrBE|#nUgmj~zs)%42xhvJSR=wXf!vJh!V-VrG*xBD?5Pjh$>NUm zgv=A-6EbVBHkuzR&o&ws2Q+h~wWbn0x!TQDGhID#^*f`iuxe@p+s?OSm7~cD>(LB! zx8?=re24AM*)mC!FsG(PoNUF9ANkS(>c5%QG-Mg{QUf-Vy&F|CY=;ArN6kG;Aep;z zMqNHLmRyBpEXC7O&E&K7vX#K(qk&r&2t*ox-Zv|}KGfq3crP7@K&bLS*uOj#pAy~u zN>e--hxo4DpeI<AtLP)g;2e@>3?n{5vy00Sx2fHAypR+4d25t#BonOb=bZ9vp=jE0 z)q_x-dfyu=i}rz1U>?*_uXn8c{FYQeVvhR3U=K!4kn4dZ{+)wCzE!8-Si~C%9JMp2 zUXNr`{?(ayHlFSNEa@ixgwMRc+H15kYux^W$W~YWj+0jg9(&>~)`bSd6N%jNhBkJ{ znK;DzEr?!b6I<N~6?RzU%D?Am68Yc(8_kv0jghdf@1x7-0*40>he_!((ndLhys-7n zo|0Rx?EKT+2BTI~WF$1c#P{Ov$>*)FTu8l1EaVAT@iSlczq?GG$D4`M;A%I1OQNpV znKBf=D&2=48a!q%x=!~qzq~`sX{9pXr_8>#${M#JMKgSNNxHR$oioo>K=6))$BV>k z@TlAYl0ytyX7CgMO$ycD&9q3&G?bW9hGjTUcDsBiA8QX?^ErFjhW-&lcVkul2$S3n zo5B`xlg3VZ2PHf|q#fU<xjF7(^wr%S6aVo~jE_tfYY%W^m6L5F(+hh}0vouGPrc3d zf{WUABuzqBqri;&X>^0#SJbY!ZS{`i3yvU3Qrbr)m|pS}Pdn<B#juONRVfS^2W72q z3{BMzEA>{tSMENC8X#kqx)i0*qgHihsLzB)oFnNGV^4Yhc^i{Yts=GsH)hxi5*drW zjTbRE@lglX0y+I0`Tbg{`RwVfi!?|dv(}J=+o7mIEo+qCtTm(yxE}(;^JdY`@u$Ta zq_%0D!;9D!QOJBt+xLx6(A~`V)BLCQqrn{P<3*cVYAoUO#Zm##tXC423*ued_v6j$ zKbA785T!6ON~C?qYscVU>5Cxt73q{Vs?;V{+ImOpKPNebtQAf7wM1o>Nf)vYh~2iG zW-Pp2ZG3C>wSWChEbM8KtjENtm+BxjEa)3l3h^gWKB@-+y2ZK%8NWO@fw;?y3ztev zP?LJ<QhP|s!8onUkJZvt>X^*yYG``}d)g%5mS@svU8P=47qxcGDy*swW6v;5n{KoG zl;ZFOl^6?O8*>nJz)&7pk1^qA5wyh743@Iq;`Qy@RLqn;kfC{fu*4j=981w<d$#g* zx%WW5r3~HY8&TR}WzgZ+3V5e;#k6E43KX>U8bv6G2e?*}k#CuUCH`FWai?p#+QBEE z!Kd7br7ytdo&>I0HdDneY)y~TcXyZKl&x&kpyW1Ps9l&ZCD$SfhZ)aNvAHunjC<c@ z{hRdpG6|obXUXN^Qo_}Ca`E7ma;8_7{Q#+S#_1HAJvJpG*V*D3qwmCvui1PG=TJmx zU>w<}ftPXaSvOJK*rDh`V`w_bDEu)SlK)kyd$)Sid6PIY1ybEwy(~uE+FQM}j=s^p z5AM~!H(t77?SV3Z`Y+vzfz7A+wZXizRxKoK=iXJ)MIemGzjb%kw|AY8KRS<!?X4E) z2Vv2IFk1ox6y4ao-n9wY%D8D&f1+acHzqonDGsQ?FW2l=&gk*lvB((+!x1~kYg9WN z#U@L7=VES=-rrjVGF}F#adhi$!YW@OBXJMfo_6JXs{6-5#K;*A%<I?JQM=nlbIFl` zJQkI4Pp|53sg3}c{b+F7T-@r#Frk<BRo^^l3ReLVn50iJ=0)voZYs617Tl#a(Bz4G zP;-xhp{MI|PP2P*f^}uw>fKm|%Rt?*c5_n<lQpHf^gcsm1m$ZYY$3U}Xs>k#Wk!;K zHda{x4IS*558cny<L6;vU#c%+Mf6WCk|d~6oFB^7oE<%v8NBM#x0^*1MOsON0}hKz zsQ^HqwN|!n4yH(%B@Kma(@j&<e!~j-hH<)g<ZG6~2fxx~j{}FvT!_Uo#KCAo^{*1* zJkJRS9zf)Q;6t7O?}LCUhp7uk-c4$)7{Vq7_3F(}#fuARiglk-zG}e|_@2-P&`s?- zThVW|Jl{w$6oel?xFd7m{a$SUcX)4kchWO{pn!P~2LJ)>B??fJM+l@)qs;dHyh4sQ zT;mc8e=^J^Fg^tDlqYC=%d`U3h|$3PH>FqJ<foLEcfNEUEUqNHQC)K@Ps5Rk8nW#@ zc*)*U=JqO%aV=#1ER)SQ+rJ+c3QSaq#P<i@N)ougVO;bJ7DO2D^QCoPL^<_Em!Alp zY0h6Ny?@`we{er?E(vC+-=u8$3GWre8%uWW3jp;v^Qx7sir9r8frX<CKk6WxpqI{t z8NFetWBUW7G-&+0q`DQRfk6@NFEU;<d7$($piEZcF4IPE1X7>;JI=A|WDRIa`fLKZ z$)AfvAD4$Q>)b6yR32KhJ`d+&+G7E~i^Bt_p}Ubw>LY9Iy`!}WaLAn*QrksUCqA~P z=Y1CHjyoBh9)ckY`L78cBtJtCQ&C9dY^2=^Z94FuZSPmMx2`N!%OWVNImIEQ!R7^+ zmxkvx)s2*_OdB{foR9A&U8UPzv+ncea9bcMSEe#gIq;9Od8XQpqFdAoKH@9V)F4Lm z>9b59yPfcyp~RXH9X`EAv9PFMezUSzAc{F%+sR}MTUI0)=4{cxVHzX<>{!MWwMROx zpxjn7({n(Mg9Hdc_(THk1?sJx03ypUy*^&GuGPj}tWJd}4V8-PZz*Z5bzUd|+q8Xd z1u7dXsz(X$-QC;A3RvqGc}`Yq+e~EmS1*UU%zmumng^GYlrL^F_C0ar*<n&<gG)&3 z^(I>huRO<0GyFQ7NkZPQM(iJYM!cwuC2Cl8Nhi6C<6GCc=u#j)d1!LHqO0;Pg%v&y zl3xpiqz!+2eLa_rR(xxuY(l)F*H+IoHMbg>u94qeL)l3Y>Zj&L@#NR;W<^={s-)4s zihoG#_y)4rySO@P4qlC6%!aDB(44kg_1&m+45Wbs=MkExAznybydVMDX^AaDd}Htk zb;Ke`?p_j7*L+O-a%Upe-y)&Q<E|U?PM{(jW|2Y7RB&s|=2c{CR83)?<l;2gfx=6> zU?PPS;ffY4aauffys++jEu<E?iH_YM{*1bx0}Gml=3VV2lmlf#XNIS(aya1nxsg$A zH<+t>`gpvtF=O$G%OLQ))%W%6g^Gdf>o`y!Gw=3~GHA5O-C%~siOlt@Gd(g4=|2uQ zTa~{41wccn@F&S=nkBx2Xw61hQ=H#gA8VLL4g_%%zzgK!XGph|*0lnr5k{<X#;9gU z)AWh^QV@UsqU@yA)8&3<8revZRS~#&)K;p`I@vTALNpS?amo;QZ-n2+I;e~%4;xG^ zf<8I#aL~PANC4t^^A?It=@`g~!XQhfiwxN-&2$88C9<1ZL;Cb7iJ8ECnXW*Gg^4y- zFUZ5ld*+?h75xREBQuu)cg2>Wkbi}jnud|`8btj5;v;bb2-u7+;_sg0c{tmwbarN< z9Y-M1ImXIi?<@_C_=p%O;i!c0eL?M1eFlbyu{}dYCQV-UB_^X*{^Ecz+SK9W>R2yX z6`*Z)Hlf#_TQYbWv%@l-LfY5FmapX$Ukr-z9jkUx)Fe1o(=-a%ebb5IfvCjtbW0hh zs*~iPt{(3vtw*6x+G1yMhO9I-nfRYCJ29OVD;~#L>i?|ycN>eQ0U|;cFOUr(zF95l zITtD3NvnN)=tPabIW{aYp}NpHVf^451F)r(cx^|g!<K^ME$>u1Yd@!zg$5YCm#E~k z1IkBGP7^;@!=to%e)xL#8+&k|VzdY3y;n4!*>;!JUn1|Gzp)4@2kLwm!g$5QwI@ry zE(nMVGt@m#F#aV=xlAmSE!vRSpS1-k-9mWBd>l$TXg8&gfi_m~(=E{}Mwuf|@zkS5 z5S91sW+&8CY~is8HKaVKgvTZ{GvHmTrOH`kN@xP$z%U@{?Ys_fW;rFEuwaLysgEB( ziJPL(8CH35*KH~SS&UVB`1MD+&O4r@SN&Q`4B>2t4-K`D{1~K<?j`RqQ*Ie#f5Vl6 zqZ;+Ov%%|BBb3<1;6)Bbs-=a|%m=tT)mC%K;k8r~+{7x~t3&rwUTXxGFy$foY6{Qq zr>LDMcVAphTCQoVf#S!?*bI5nV`!q$9-sWi3pU}!m^;MREEHAzd@^1-GU0r2N;;-> zZ%i^*#im~M+2g<*Eoy@l>cH&XLoiK{#vo(x{4rhA{`D+s7%?AiLA)tE$T4`;z76zw znTiybeNMnOid3ZBnSALKN_AxvGpgwndwtWIm~d|vLaHSOKyoKAeU0O-rR>~|FTZNm zy#V1C@KU^B7CAhp%$62-u&#b!G?7qB`@!Yf0Bq#z8l#WR=-X+XOtsa^K@K^dy#Cx0 z(OI*C`z-y8gv!LJ>k#bW1)2Qh((FTvpiCi&6UiG40=zUU9Y@uM5YHpYR%xx-Y-s8B z>|8WxD@v*>na<G9)O!PUW*1uQ5Hm&o_Eq_Na%6Mc%iq)uinsoDBl`g|{Nd=&#{yDy z9!A`BOY2Mq+LoSzcvQjX%YDwvw~|XZ_PekrU@vM{GbrUTrxyV?6Q`qend)#$$oE`Z z;SO^BY_(ODZEGjJZ5E0tAU4@CMwy%(h9*2qh|lho&B2zgW*V1MU0Hq|_oY`U7G{%s zgIC6p4IT3Q-V;dQwb|+E;oS)7A9bF?6nx;GZZzsK;28R0a-LXyCIUu}b+c7h(L_xo z+}&@O@m1Q0-hACnl8{i5ntbwfnjT&UA@|4z2Ids@s$P|@a?dEQu0b#pLMK~JwW?Wq zEuq(UFE?c(tdgSSbuwf9t#9SgVRCFqde<M^rJIpBSFJ3RZpt1mVp$=@^-ejKL*Z5w zKfDpKGFYMLqb@eLe)aI#I;T+@21K!&66X2n;C--~nDoJ{NORJk;5ZUsQL*)w7JZE{ zYNhVyT<Y75mkA@DDLsNl0z02F{k*m~W*NViEHyZer+D?_IKg<gJ7<tdlshT}0^F#$ zacV@f*<*nnn~qurw;3JKJ|(Or!h=*qv<qX0AGy1vT|a*TNt;>(v7V|~VkvE|t9$Mn zhJ3sNQ%0Ogc;<JnDl0~EH@oXpBgU}n<A>CB!NU|gsm8k0L3Qcb_N>^f((b;-&WAp8 z3L2WWa@juGBh=~==a|5_Q<c;QDtVr$%Rr6CD6HBJY~eI<NF|YZUlk*L+4n{q(e@3! z!?u-Lm@#pv7-ud*xXA1C$n;R3rE!ftiZh`Lho^O}Wgas2A$d7G`l;~`gTF1DrPpqx z=wijSx%(zZ-y@|$?K?i>=nz(jrVKdQ##m_ZS)Xk7YyhIQ43}ZCZ(rh>1m&wR85bsS z^jZ4T4c7jW!v0a*d_e#zOqhD2wc{9l+$@qEi(Ti$nw;n2Q`!-{7bae)w(K9-Chm%N zFLsKF<Mg;W>(m{?T+5y(<WA^)wGzbRbmYpmWyp#5UNXMi+uf^~&21Y<YgLa8NlA9g zxdI$`v5b%FvE<$;GnX=10xLb)?LnU?%f;!h*0Kq`z7v7gX}Ri0YBI|olBQrbG9BdF zwa+^RCgnQ?dg-k9AXcI&0ZIRLaRvI|(4D=jygh3*(c7P*Y8=1SEuj2G`nDe$c3Z*C z5HAM2la`aBh?;m(tB_Y+8}kZ66LLUpl?h##z3SBW?bGdjBlhZBSgG<>PCeyj5<!2( zeVOLi%~Iv+=K2_FJVAe=B*BWQz9QBji9Oc$qzTEVXY>~JW<4<pTWdw7B!>~hKX>Tm z*%Cl4f2Q`4P7h+b>@d#mRN*5pxx)qvW<)zwjF%vTb<Z7kUgCRV7IsSVYYe@8ZxMwI z_p{>nV#M9=SlQE7)A8^L+iRZ{YbEInF?DksY*Yi2sCl>3)GHcUbq=DhRW^$f-0xI0 zlhz4jD4qG=yR-85D_>3)vAi{Lqw*Y0V+y@X{h(I5RGhQ?MoOz^gpc!ahr8ZIU%Hyc z`75ynq^s5@l%suxj}At4Ie47Om5OvZE@?V7Mk8>!a@ggcVg-5S)|C`=QOK2d-a#xB zUKn@kce0=-o(RSmu%c6MI|c8D_EF?V&prNX*vAb(!1AhwGxW2yaoa*&L~Ygg7IOqZ zJ`@MFb|(Pyd2`}j&7)xE#d6H?nl-@#*%|SWd&aSZptdGetRY!BCL5OV&XY?y5JB1Z zjN^tgdGD@|Ye$m9%;;I*>yUo*rM0qDmFj-kVR^a3mfyc8#PUI3sP#BK6&rWzOgk1! z469zGJUbAtEu&Eqzu+zK+@`snF9bUPjse$gVg6Sy*U{V0=F1Ed;!H^Rqun7KL5Ucs zl4vKE^rWn`#1P(OcE3}9PNQ4Qu`eej?_hNU48(a;2TxTbz8L%bIVQ0DWo7bkZ@E{N zF(Oi_^j6Rd`!oqbNTfFICa4aJ{Fd1vr@+0yzN9@)x|^LPY;=dZ{$);5@~xip#Htx_ z8LXkEyb1$DFDohy^qW4PlV?j#Smxk!C8PQ2FA$wP@Zkv19-<ausK?vKnK4RjCF+x< z$WxY|!X3WUy^}`F^P=dD!&fgYU<prnYf}fZ7taDJG0EcnK6e@(y^r_^86iqNZfCXG zi5i>Pm;IGS<D68QyrpYLwvyu7x_fxY)6!d{I@H|iWI)5EHxaONr!@u{N;0k<OfXWM zI*wdQ%%Oa@SQYu2+@J1)_M0oK7Ob>Vg>?KVCM*Vs=W{Es6>JT4+y3!<fLswe>OotR z?@^Lf1;ZoBj1jrrBOmTmYMM5dTk7oiIbPekQ1Deya5Dd1y&me~$G72*cWQXlRYXWy z#85X~w4dwvm#@72u$QPKJ`H(rFS5%Q@wyGF%CCcXDr!-<)25H&r*q@0>-^F2CC(?= zq_$yKO!;h4?&~jBCo{5xarCE`xM6xIaUAcfSMJ6q@bZj4r|S(zcDH|?<sCd*_jdf6 zW+N9V-g2^%&G`)D$xyUtIAs=1Skykq{Ju!0-{a`}wlkoGG8<p^%Xk@@5#WuFvmG01 z$VWSarY73`TMXBa-=c$qL?EAQTo*+*uY4&?{1ylo`@PV+06q{knM|d3KJbPalWA>5 z)+g>Zd}r+nO)5q2k!3eXoa0U^w1X^gS?>J`AfzN<bg1?kD!p0tx<R9k=j2-pZ$vX_ z^lWH!PZZV^zE<|Rz)P&dyz0&X?7j7H4(3l`BEX8|{P8+nC^T_qkE+?3ge=<fw?3YX zLda%2vbRJs!BQ&##^pFwLs6Sv19q`9-b&RW7SCqv+A6A3RAxUTL=oq3$arKDbok*e zZ-%@X9+<&Sr^Y(~GzQ!g5VWL<s?$Ha<D!upTGn8Uq@ln$Y9UqHcYj0TPB)lCObez6 z>J6xLf2dR&)(xWJY^Fq%*K=oveZ8r&4A*-`9HFbvKcQlBb=R+T<23utsHZZqYhXgU zi_+WYuTg$>F2A?Y=6n6kiFPG<KHrPfPLmvtz!Jv@6Y@^x^(9^5?g9PkOLm|6%5BH9 z?>)8mA$!Bm-}=_9%;+JU<c?+_x&zEuGPiSsD<Z=0YtJ5C0!3#CzAK-1yLK7S@IBWA znt*p>Q@RR}H9GGFeomm2pY-l;BMAy%A#1rRGQ7VzXQ4p|227D2AN~-OxZ&aOnPT{Q z(B})y^xII|4he(iP2<gf*28|*<j$7`D)ko^S~THc!x));dMS`fDrp_}^)7WAWqxra zy5kQi^xwX{2k_JHO!rHFBC2bWgUu0#$h}P^h1?Z`I2A4Vp!nMvmE17X4+jv~)U5sS z>5@8MDq4x6)9ou$ev^h9Z;Z$?;_93Ch7zteW6a2`u<6W?i~#>o1I}-f%Pv!54_Z4x z8JzD?P!<BV*KhxMV*t4f3yznEA)f?qX!C~{SPYvo;)STSI%Fto1$G7tq2q4Brl$n~ z$jXsQ7BwZU3{N=x$W252$vB{8{<0hZZvy?k#+BjUlrI1Am;aa3RNjG3FNq3Pn!te% zS>#kxC4^6*MFLKaUJy4QR%B5gISss4wgDcmwJ*uTCwBQIHym=)cmMQN0HgldGjB{n zx;;Mr?VTOs!K0#s5K*k|_uD4ufB)Kl{kk{Q@ZFVmo$AxS{e=Et(mPWFoZr{|Vbur! z#ZS8{f?0F5C9IPqfAQ!4{*r>u(+S~ayrY1LoBYWK^*>&Fh9fc9+Twe!44@{?A0F|K z-)eq^Y~lxaGYfy=$^XZ%86pP*9#%U2-FSbySpLT|fKN5T5WK$ga<B>C|Kj!4o&z@c z$<b)X(Es?v8S>A-^g_+AM1d(q|9G%JzACU*|Ng=?#UX|}<Kf4G|NV5oeE}C-!Rw1S zf;n&hH=g-0$mVY$S4;Ds-ed4I*9E}qd&UZLZ2ZTA{p%6`_?7%5CHSx%*KSr_{VzW3 zchFt4h2Px!7nq8F{F*n6&~A=AUefvVH|(EJ^Z(Dqy!*uEunD;AHh`lctm6rtuI)Ai zzUl|u6Uh2}k-sbHzxZs=ym<?Giy=F<8IY3Af->1DkY(S322f>@LBj9mQgxZ#A*d!5 z3X<Jgt!@{t|Gdlr3{o*;i3(;@p|NoS(e?{|9PTVr;~&tp++!Hb(VzgMeaN>Lu@pxR zzrD2oaaR6)@tR&I0WKW*R){{+3d)pcp=rpYp>l2T=T(rKoD6g+fsFfQeVIhse_nQh zaIuS;<w)2Ye~{=0U4zwb<><oThhV%^L=iMU_M-IQT@JI1A%cUT|K^u{;?OKgPAJn7 z4C4p{6VWgHvJ`@v4f%*6T5TUBsJzmbnr}sF_I=RxsK#H&TdSYXPmcR@B-cOI<#m3| zAsJZlqHV97+fu*te7tU0@8xkmP|TK@<(4~8COg5VT@l}-jFGvzB$feym}0a&RtLON zn(FI>;H`}&+<6#yI@Fj7x(`=J05HXMB+emu`yh3rw`%%f0>44B-ZPmD-@lEe{O2+9 zkH7vuw)&ko`H$SNnNgtQryqr2>207rz@!f5i1oj{o98^B%pD3$)&i%Cjf+hcKnsWW zDj>AIwWT|%riagiQEgA$Z2<_&2B6YryuE2FS3%c@G(dVgI#Xp)U>2CCAhsSk@Qk{9 zEoUXR0@4}tbkow8CtnVMlcj-&$NOALvnHSfjMlY+>T)Y6%(jC53nMVE*3H)_7yiQa z{b9ZQ?{6=VK>2${1@I97^%k88lVk02HvP^zAl{MvtO8sofXuN8N5I06HWSq@Y^O7% zNEOftKzFM92%1pO#R+knAg{IXzH!>>MLYfSJ!qU=Yrk&T4Z6y>AHdAa^xzi6%csBM zXul5xMs1+_%lJU4*%|2jOHN*h*$wC4qsbdK5c56y*fk3%Ns$;xm1hs;<9-z4JoQ|4 zjr2e7si0fGie|2e>E)AvIJL{ja=o0q2dGMnOD6+?nXZxhrw#DAoH@!bb<%p2Bx)T7 z$UG8z@a9#Bp3j2Ro8A%_;&wmA)-H#eKH;x?d;=m+>jBQ1`ICTbGd-9Oi5DpTw{a#K zQtg4^K`$g)e5d_zMoXnSiN&DJ8wQ3{{BrhPx<B;h^$0Ax<i9vt?-+rr5huzqqXs71 z$nk$p^c*?lV6F$pN{OY644LL5$cY4olgeg-HL$sUG^v)xV_EUqI=NJqI}jtQfjwBA z^~+{|-1PAVW5+Co&9X)jtRCY7dm-)ZsyriCkeG=N;@Q(ny)z&%BkM_&wU8MbSza$c z8CZ#v#bVN%%C^4>Ub%uP`j1CpP%Rg@xE!OYb}+JjJ~n{b4!I}IpLhgMx>;h#FN}Qc z%Q*#=!|j=yfMC1J^Z-n*x40?~aQTTSF$K>svWys^m}wQ*E|)wu<Q^eva*<9p<%*}H zAzil(h+D~)s3ow1e9;^P+2?KtH_Hz8V&vpx-%z}V4cUUT)@2V+^xAz&9C$L%t92pj zHMC&vbLbPRccGH#g?5e*fXs3T|9_30c~sMP7R8egkSwx@LWTl@MQ{Ub9hFKT5!)il zVqH*>onerQ2r64xl7Ip1P(jh417)#QP*GV@M4%=RP!ttvAcO)HD0>jXzLR-hIz6W| z$I;<m&f!2pe($~e?)%(MJhAD50THkcS`Smp5UQN9#kI8H#i@D^F7v}(&E|6SIacEt z^)um5d*X#bIXVUHp{*PQI8$?VU=Q=YCwM*tLV*%r6xlSo0OM!8mV3AXFR*=A2Dsh4 zfPU*G>!|ERH0{ZK*mL493gi&zNdzgC<|Cay<nY=0fYQ$RPv}{L)>{{8@>$35*`Bmz zDLZDq_05x0oo8{=XaGl-_d3s6*%rIQ%cfA04ELCWi{5yW_V!IEGR~_#q<JM1jytUD zxF$m6XT9a{o%St={*IdjTOd;i23C!@*=12L84F|qBFaw-hgF#nWw@E=W1rzmMcV|x zjZg~(bC3+(Xii%}QqZ-((W5V#cO@3UD_X-ZentscD}4mEuiqL73-(o5p?Sf*oozvT zbgaGLHdzJbCRFOJeqA#AF8kYmJ}Vm)mt{iZ*JD|u0|}~Y^~%CV^w371l1O{Y6IH<= zm3G3-kp$}F;>aiZZf+|u*yz|dy!hPm1>|pz0?d1%J8<~I$)2K+7$Qp}X*o6XGKM|! zaWeJH?elot(8pgUDI?4VxiPgr<vFD9R@E^1=G3WvA2xT4x0IXGhHxnHz=^oZlQ@pc z?6PU=4FTQHzi>eff`UniSD9L<>+>Xu0I-OEgxp+Dlio~YA-&khTrH!|a?r+G0Pm=_ z+~~9AG*Qb{1v-~kNp}4D@y}i$?wj2vW~J%`Hyt@zvnYbcaVhOsFWfV$PdB5}^M_fd zgmv!{{Qv8f3PG=wem}CACy-1_^%3)sEuKJ_)ZP9rHKIGzkEneteT;q3F2(M<jFgna zbp4F`lRF`X?phQ|VTp&v$4sfze<NB3nHFlt{(^r<VDvSc+3$UTwM%_#$<kXXd6lr1 zVSfKK6nRyPUWSFI1^69a27xJ=i<gZn^aboR+L-rB3J(sd5ylk~X@g5~3;n^YPQ{?= z#Gb7ts@zM&*1D}EG^mfL0-RIK$yAi|ww~r&MnSqp;dYwI{6GYI)>g9=q3h6mSXB*m zUl#!`Qr9Ujh>Ee#R&TK=f9wB~)rUWwAzz_ovg9_t0l^UFP`A{%v6Lxx_A^=2ZJce7 z$?*JaT)q1KKCdOTlr4$(fGq%SchGYrJV15Vj2l&@&d?=5gx<GuA}wsOF-<)Cu<gwL zfVYm>OTb7b!#0%RT8%ca<wJhuwn-cAcBHiRV_Ci_u7U%2q`?GKdWaVWwp~`}H|PK# z#7bo45wNDg6qrttq1~poJAg?g+c1{fQ?`r(uD+&InX;|}9^e;k75r&r%2xdhs79aU ztfR3F?up(r1pm9S%Qhu0NX(+#+RBIl8kJp;cl$(hlINb=z@Yx<>R6AL6QZ^)qR_tt zvcAkdZSv~IEqwr=Btcg}f`HX;erqp|ap~6Bo7*&hQs_?7FtW=#gTqL*0m63-ni1D# z1R;eYeCXgQu`MPVqGB(Y%<Q+ytJE^oR;#6TuoSEzr={zkdrdt(CV<Zx^JT06UR}MH z!E>-q^e(DIM8gE7+LAH9NQYemKU|~k9#MXujPU#Hm3<5e8gKn^uMk$^-mf-E6!pxA z-s_Ur8LWt$stMj<^hEGZTjU*Jf=}D~Kp8KBXp-=GtZk}MP4F<`yoiJyPsPw1()nPy zYnn%!YKrvnCeH9U+#l*bObwj!zvnn+y(vJey%z;B?61hOdT_yyaU2m%+g>fWuYh{- z<FU1aoE1C%0CfySctH~8hFNOUw{M++|Bq`;<5z$;`%j(TyDK`~ZFQcDd@_W7K6?yx zU*O=?rT8t~N)IFgl|&h#eo%$er+??6ycY#PjE*8CH@X`@g`+uI&N8RcBaUZkG#Iyd z_P)3t959darwiXYTXFE%Sh*n{@o*LfkMh5<T-Dv2Tfr>8hvI+O!6o0?l=R`m`%lgR zNr)SEsp(T)Ta}4|l#+DL*gwxJ>Q&qtrWPRNOTMvC#q$bntt~mgW@_>4+j*o9&lO)6 z!dxrYI(+M+C3HoN=#ZfXj&z#h*dhJvm~)#drU4X^03KU2-f8~d5q?4V_1*1eVRz4R zCt>J%f@cBaw5A$6C~MfGdh<xNUs;cFt$oK5d`|^{SCNkZ2zYQ&go{WvAa96r%HvQ) ztM@VX*5wWRiJyK?<;;EhSIizWyYw9<c3D=I;x%<VvOCjie*8pwyGM`nW6`_cjX!tl zn~Rq#`eEc-5Td;@!pF!^H18Ciu0~b7N@#QhMd{*Z$GS7IeY`e4guQypm_R1YIr_l9 zYu-Q8S9dk!h^s;^Ac58BTlUP`k~gM96{1&#S0h8+%XpBjAlEH_Y~1My6??P)%KCHp zW+BO0z5B7jF3<hqI_%1!GvlBx&h+#gZy@K0)M<U|GagCHlnhLc(N*I&d$@g%Dq1}< zeR~{*MSo$i@5|9im-)FWwBIhD@7p%$SX3=*PI&5$3;#cc!Ee6E&eOmg49W=X4TIam zf*Q@^)rI}Vl}r_U>`UlXyvzZ8A#`NU{SLX|w*r626i{K56r+vVH!4R^9&Hr(1|DT9 zIFbA^V!rHeDfX*$n#FgYhQ?(p^tKWW0kARFieb-9Uxg0my#-d0f`iHEvpHS7JLt0R zj<z77ph00`m#l5Po)f3CEANL~Om8}Dpb*t!Gqn*Ttvoy2_9!@_!n9FHFUedJZNFH6 zvi+h^N)k>J^kl#6T)b7*u8^-wL3iz%`pxIV|F7_;pZNHP7R+|G&r)DZkuQ1Oc-W?j zEZi^}G|5{;v6=parE%w&qx1g1zRo0Y5ts}yx0Ga%Ml>S1XNi>#m0i!8)aXEtV<8v? ztDy7#NJDW~=nzG^HDatAF(H&(ssNV1L(K6-K->M3WI@pY))NAKhzPNSP^7MAZi9z% z>uGZ8{XP^i`%Lj>6HOkyYJ>8N@de}@gYJWa1W{;I`y5?v@^91jP*819;nTg9elmk4 z{^sEFegeCj9Iu45&1(QGx+?B_@xdn%;(=WuU^dn|Y>tSn<s~|f^o&qr#}G@ceNjI7 zfVmPH8D9x_n|wMR@igaW>uTlclZdNa!ZSYc7)>$2x-z*MmD1~z7#kvXHb%M66#$Ye zG{)gNVGC>%&{IEeoO#Y$a;mw#3Z!$G@)F{MeV%dvs8*vN{>u)R?y$kejTx{$XP?Tk z!NyZ1P=LKj42Genv*C7h@~$Wq78RMy&!&r~8!vTO2v@7IjDPO9=5vt%zd&GH(%}T2 zeM_HjG<Pw>K)t{mlxm;X%jDbUS;XA=8{x7(l3Y;FY6EIPOURtdAG+56l=kvY;=Z_! zp`Q$M$<?r9LXYF!QOeV81tEx1iy*>24H=kmbsHUZg|-%Yxc|5oBTL`XL^cq}1O^!? zJ)p?e&RW0JEl<t!4bXO~P&S9wa-(j^m{8`=H9f#R@W;~T7Ju&i?$Stgwk389fnFLc zFqJdF`!X$*Ac${FD6)STDEIHnqJQ?2Hd^zevAGl7%48(tIfoDKXI@tAzs{<PGBg`1 zuYVkzE-__b5mJBxc@cIPL3%|0dRFu80_v0kLES%MU|VK{Dzk+4^68wc6(Yl|!Qn1M ze6`3!f{VVF@++4r&u9LHXtJ|hW!b3v{(m6As9fccw3Z}qqTO2Vd|DF63JOg3k%r-9 zbwo9dAfp0=xq3>UfIx=g7ZJ~oMK2@@CQ!jch+Cjj>7){r&lTT)O=L&K4&q-E8Z;LE zKBq|1M7GhLN)rQBOppwccZa!ji>k8l*s_HYP`aKSP@HtSt>ux-U>*(_poI;$QL1yp zSTA?Jp_a(}D43G;*<(i18!F`E^cxtF`iwCFw?_}M?h`GQ3#hm$6iJ4Z6P<5ZzbejD zz}@SpWv`G4OOT&E;odu`l}o;sWx5EQd{891qVm%a(RW5qYHSc!6=U!fywb>KmoEjx z6$KdQ{3`*G83HC)1~{akSNhizM$SV2<6Trwd~oIcBeK&O_Kp1*Po{eK^V4hi`HQ9D zqg@od@mBkkU5a<owtM(zX~-Pcn^-Km^<U3XK6o-Jw%t(uKzMTf2E!c%t|iHuqr7}a z4*hsZ{y{UphHNi#M{x|dGS2tV>rb5>1_$)Z?+?xUKYEcmSQ~je^V-d_AEsxh7SRTA z3$uAEhR;pQ>zPa2jEpj%i7ITO)pc#-f)W5S6VY%TN<$1z<nUJJH^b<$*&P&zHGI|l z_i1;Hmh2lkI2JuPhF(!oUQ&j8w#JRdKBYIy`J8oyOc!JbqV_p#IH~)FIUR@HZ5}%n za5Qv|_hM+SNc#M7mV27h(*<9%lXDXhIkS7)P5^chBpxT7$DL4i4x!wRt^-6vT7yV{ z&im1{j@onZycMrX=DGgw#Hc@%dUn}{16M3DjWxQ?TUtM_!d*~8!!3mx9;Cx%RpT#H zW|F#BFcc)<=EOb2{=}Hvq^bSz5c}#rfgZ-`PP?z~d)`UU^(d%xealx)XKk^#B?z}v z1*_OOBwiuhmi6KhX~LB5FHa4yp=(PcquksqcWikSDu*rH9fagPvb*oS>N{5xe!9QL z8)sYmUR?H%G+(HKIbLz`IkqCBLM;q~uyuxid1&ul=PPI#(-Ro>{d<1b?0ChP#7wbl zpKAqfy8*pfPThbIc5FFlolVtuTyK3)ojo9hok8AYc`cD^BM>k3e04_qLpobt9ZtSB YQsqa|HO<B+82GaN!r}A#)}FEd0>X}>f&c&j literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/download-mocks.png b/content/ptfe-releases/v000011-1/img/docs/download-mocks.png new file mode 100644 index 0000000000000000000000000000000000000000..4963b475b70015d92f9453f795a9c30e3d3eebce GIT binary patch literal 56945 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 R9kUO7>A(y$KB`#;{|CweO6C9n literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/json-viewer-intro.png b/content/ptfe-releases/v000011-1/img/docs/json-viewer-intro.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb364c55a3f186783fa80bdad23902f04fef037 GIT binary patch literal 61869 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/organization-vcs-general-aggregated-status-checks.png b/content/ptfe-releases/v000011-1/img/docs/organization-vcs-general-aggregated-status-checks.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a82d0b26d7410f63408f7f0976101c66d0029e GIT binary patch literal 122466 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 S^a$PuKIYg<7`lmT%s&BdKIXmv literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/organization-vcs-general-non-aggregated-status-checks.png b/content/ptfe-releases/v000011-1/img/docs/organization-vcs-general-non-aggregated-status-checks.png new file mode 100644 index 0000000000000000000000000000000000000000..c328f6ce5c720236d0f5fe474d17e5ebf893a08f GIT binary patch literal 179599 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/runs-confirm.png b/content/ptfe-releases/v000011-1/img/docs/runs-confirm.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0f67cbe47fdd80cc96afcf9b37b93e8b992056 GIT binary patch literal 305292 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 Sv8`LcPeDdmx>WMb`~L;X!+u5p literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/sentinel-json-enter-filter.png b/content/ptfe-releases/v000011-1/img/docs/sentinel-json-enter-filter.png new file mode 100644 index 0000000000000000000000000000000000000000..aa466692bc14fc11dc0b15982225a08fda930e9b GIT binary patch literal 17427 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/sentinel-json-quick-filter.png b/content/ptfe-releases/v000011-1/img/docs/sentinel-json-quick-filter.png new file mode 100644 index 0000000000000000000000000000000000000000..89d4135702955c0058952b56009fa95d5ee910f1 GIT binary patch literal 56943 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 B=b``r literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/sentinel-view-json.png b/content/ptfe-releases/v000011-1/img/docs/sentinel-view-json.png new file mode 100644 index 0000000000000000000000000000000000000000..b107dd2647631b83084061ab7931b489ff4f599d GIT binary patch literal 49721 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-comments.png b/content/ptfe-releases/v000011-1/img/docs/service-now-comments.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1587f52da60001916d0020f29412a39342f5c7 GIT binary patch literal 288283 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-apikey.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-apikey.png new file mode 100644 index 0000000000000000000000000000000000000000..ae921a662966e382a4fd8018b7fc9647319b3de7 GIT binary patch literal 210155 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%0Dc{NfkC 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%0D#h6&s}PEJV)S@~7ySvK4G`8mLwARO0gbKu%R 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-conditional-class-mapping.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-conditional-class-mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..203e6d0cf078fc664df6c47b7a18c7798a9b6890 GIT binary patch literal 281274 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%0A!#;{@Om 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 Jz4F$3{|3!4XVU-x literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-deactivate-etl.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-deactivate-etl.png new file mode 100644 index 0000000000000000000000000000000000000000..7905293a693111b759091eb942f5865b739b7fc6 GIT binary patch literal 167695 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 XO!RYvVd;J#;A3fSXZFa%J^FtE`e&d5 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-design.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-design.png new file mode 100644 index 0000000000000000000000000000000000000000..98140a8aad4298eb3261ab4ac1701e859eed42e5 GIT binary patch literal 247189 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%0APY!Dor8 zCo0PJcLXbJKzP`EUc>xMG_U0=xB<?3)7vS=1$4;kwRGc{U4{A1_nJ3`hfhoU7G`Nk z(4OBs<*=u1EVi^C)sgZ&@aFve@pq21I==X6!`T!(LYAxF)U(S;eqy4U$vf#5&-?FK zIW3ulbZ`4lp`ep%5+jih1WI$!CYy$fC7@``jp~KIVwOPsXh(L3{;or#O~n1;Z35UP znK8hTR}_LfiQ~YBMXDyX@!?tc&`j-bf)x)NDY@!h_*Se=@>ej(TN=!aa@K*M>Ngba z8k61SO)Nhu-XEk6HKQ^Z8WrMv&NhdzO}e@6u@5z1TazxP+jEECgbt8?=8S)J2i$Io zo;haVb;NZ?V0W5=SddS3Ls3@Y^*obH%@1C@US99>v0B+m1V<b#^&4>;0>rOg-VH<L z6HCc~nO?8=faXPuBD-%oq=9VbrT?-m%tGB-{NbQ{D<L{}w~DAcp|_|*4wPMWUCLhi zT*(mSnPi{|+rB<uy88ovaa)@6a<m2jR{;3ofxKR>o7SGrAF`a!pa~OGsvXEKYIf_- z&B=-shpf$?SHn9)m&YV`b$jt&^jgxW&f>%Re-3dI(sbF%ZWMK7TRjKAI)^Okkj@{s z)kR#bm=DlqoA#?V-h$nJTta`^NK%hSovRc`Xl+gFYG)+<)_5)7e04c&11Vz<_^{`? z^YmrRY&WB+$=c{je%(r&t>c9%vG^pGPg;nAy^PqD@~CRXw)~EV7<D$R`YF1*aLGg$ znya?f{e6BWm-zEsA>+@go0C)hyz4tXJ`M_N8*^672X@!Fl3o#oK-_}M$WZU4Qm30n z$fbf<oT0U*%r{ua21i1^=h&0>rP#*9Z23#TvrC=1(Hid+uq^%wU%0f%oNvf8l77>x zli)MiQA7OMC?&yf@3GY^3t^Kq;DWWs8<I?KTykn~8_t<{HZahYx{Fc=WbBrm3XSLc z({)=S1M$KM37uIV<`a5zw$q{(66;C9==>ZBT{(kUEa^)iTCV{JOw2XLNdW_iCE*Hb z53R2>SLFdBfC$fZB<o)|P{dgzQESqqBG10B_~O%F5R)ADUy8Afk*&sCGqxO5Lo{Dg zN<T=Gc9K!K@DD>NXo*#aHl{-TG*EOXJZ-4&0T5X2wQd7xO$T>PXQqSYK%r$Si6<?& zC$c~wRY5Ud^Lj9K@>w1%AzA@ra*Y58ji)8EA?UI-``1hg)Nms#dGj$OGmTj1q!>Cb z3muRD@$KD=WoezINJ6aQ@o6W$*tXtnA+e-ShTQEik1Y!k%vjZXfp+|?U@{7>7&g6H zJ#8Wp5#ax5ua_8`EBkf5EB0#xASW=YcqJ<Q5bBG(cmVWb)RALL#@lORAES7li|$5( z)BE}CTYt1*<9VyD!V$vo)Kl=xbZ-%_fO?WC)Pv7ZY#ya>edd!eIwi}nCoFCP%GgpZ zW(XGn#VS5GyFK$>(VXPG#0+g%J@+9xqRnZ+=XT=KJzWC4y()>2G~(;Em^3US@Cv&E z0OZ>2*mnj8&?Gs|qicNu=oIN4-L<4l3(Y0R6d(1M84g-3Nvb(#5Yy3T8MP1<IrKV+ z-LJBvx*>vJ3sqK`YbOwx9!5<;;YDLt43{_+by?XVr-x;0=O%Uz>>{U~f_p!wE)Wn~ zI2RNQB;FzE^Uxx7IZ~7=!Kox@;Aq#wuIi|=pwg7PLM>S_ybW*n1UQb?TCEJtD9a_E zk-MY>Y)%p(F>D85y*5p`;FG(}zA0NPHT=!k@A<I6mzK10PDSyaJ$E`x46h{4H<g7+ z10-{sF5n(~EqqK4G7u4`!&aqMBkbv3h?L5e6K;!mVv^RqB6jH#2wxH&)!lx7GWab` z5x3%fp_Bc8Qb7E*DFA2=Kv|I4<j4nug@2wqEEfPM-&&l{`$tT6V59)LhytmSB!e~% zI5J?3OkV?dgX;HDlfNWy!J{CfK}nxmk-u$Azy6n3A-H1P_`8M4TDbp{flQ611VuX8 z!S$t)mQ#ROnAsx04_G`hof?uG-nZ;V7si!#OCQeg`+O4SA)6<v!@tvAkmzgJe=@}5 zy3mT~m%KZBv1DmXV`c-7sq1|>G-)$S=T@;DdEPskFr4lAL_8IE>)=5k4h+L_rQbRD zUWce2Gi>gDt-&q&>@*sxH68&SG2jlNFP)W|*+(_Z8*m`I>fLodC>(z29^JGe{d2l^ zLu>_Oibc6DryXvEdTY3JZ3O}qAr42*=GomCD$ZMSbA3-dwl*SNnM?w12e5Ad=}3&# zx_n@l1|ID838O;_jZZ0FN%h7<iq30pvH=VNQN+N>zT|Iwhe2$sTjA%3Zc);c8myM$ z!&gSjC6}ssYWZeLsm}La-*fO7;bPYCR!gi;J%47!$7es3zUC)F(+em}{dim?_MKSW z33h}!^L?2S9C%6tHhP3!`p#+2lb`JXN)rw&jQ{n~Dyi)mpGADAB%v<w9X{Ewtt$~B zy{#;JQz6yz$xp7jt8rAPSp<Jhr0(Mxm#Gnn%nd(6FZ$Dsan=ef+QD^g_iTDDy!4FP zXaVwWVVAv$NC54v)@^`gjAv<IxC)HLB?>$EJ@6Tl<A5syM(x#!!C_`Z>b5lEkX&`v z8G4xS1ZvuksWE_p{2gZjlxh(ZkM{Ro@}&Mm^SovQ^af(A+;Gv$@6?@~Y~sfDClpcz z6F;bk&BPuDjGULk*WN+uaR2F6D%4+1muuZxfMCGh%m3J^g{3G=(6e)8-iu(_!Z=0! zg{~TeOUJx^=1phZEA0N(qv>KAS9^83-ERPZUbFGM`rc<&*4r<oPOwr;jp_ujB7?1f z((i-wowf;Ls$cVnV@*GEF=<1EVEA5QGJZNNGLfn7d;5TLL{8RaGI5cac^`o1s&+{@ zfovpDu$vt)aJ;Zr*z@zZ7$^I__OBGyF6|lU{LAi-%t5_>T8*C!<z9Kraz>o@P80e} z#k}oKcrCdj#+o}REAl;6$N;V3AD`3MqkM|o%c$cRH_+7;GV}M0y#5qMK9>>rr)46@ zoz?*p461wdZJ4|Nfm{P_mpaU!2>TNCri)S2#7%)yL`27WCU0S&G%W9v0J@$iPMRC5 z8zTY^*32zArx<MAW7A-@)p&fNGwikB9p_)x52#-?3`48`n?v~P?f`{k*vVcmqbV)f z(CAlJyNP-28!3Z#Cw>12yA8TQDQ-^1D%#sf-Dv8d;K^SyuI-Z7TccM;%xRJa84c(= zx5*WfPhJ4t>5~@VV^0dv=>N$}hP?<9oP(0tVD2o9(bpXub2#AA&2Z1Ldwj-Y<|QIq zLv1>Trhs^UJLUpQdUyQVs-@X1J@)$qh01_v1HJqcI!EHqTry65{hG4e8Gz+3ayaS$ zK}PX?s-|+mht>JAv-sYMgkO0pa`xd~2=h+geUlsHl~*v9(M81Tl2iO@jn9D<-r^=} zJ9?sAVAfFm9s~eAxs)E5i9u8cY>}sYc7MvG?gMbO4fG;KOaXArR_d?cXwAO=)4bi| zbZ?w4#kJjSX~+oye}5YXXKG=;orX5u9y{K8DTKvyrYslbl-O}$M3nexY7}5p$WlN| z9WRVtG~4WHCzc2VI&i>cjx%301YA`Nl2J;7T*&5!PHQJZz57imME_}1U>_{56VW^Q z2cy44M`fb$9gvazVE5ZZ2eR;jZml7*CK~6o#~}(EBa->^@98d<pk+0Jqn}f;%UFNs z09`Aqd~(CVD{O#p+iwl|dgf`A?gcOjNRT^4A^iDP&?iyAq%x{f!nbpI%K`D^M*MI9 zqr!#%F`U2X<|_t}jGMo{%f76oTQkt#m!kpEVG+zcC&+ihzk`Z2y6RT#knZ4NQljym zHTVr<7o$#lBJ4-C7jc1c0uYeOJw72N=8yU(in@jhXGWGMV^G(%TDSP##GK!HoW*!> zl^+VedB)z{_+3Bp)y>JYcNC+L2lm67v|7ghov}Pb6+x+jG?Iw?osIcdW)~bnkvQ-Q zJ^Rz5|9cGq+8MwA4I-z0&k6sv7pJ8Gu9v1wZSqg{^7nULM!=j#BuxETxAHePj0D_j z$coPY!Jtx$P}o}QncM$6^$E!0`2i;C{~sP;B`eaDsqA1YN-|=Od!9eAS&67jyz0+S z_L4d-j+R>pJwH;0cE>OLUDl$-PlX#cs0^pcIG^ny?Qs0Re@!vvTW-MwtPkRQp4SCz zIb?KXjQb}NFUB@E_mT`b;PbQpM~Xf#7X9Xzm^wb<!}BB-ivO)_olVgbbGg3p{O0HM zLG-2dUlOT*TiA#H5}8w_zWn}I^vPTB!3o_ksi|dNXZt|&?z}HR{>6x^(){k3(?meS zn2}MoTaU6NecJB10_=45kh00I_!Pi?w%rCP>Wt^~IK=dbiR!7VVcM#Oapk}7BU+b& zOFM3ltrKxL^T1|N;!HDILcQg0xp11%QIRC~oq4;e;fV3d+}Tu%YyCMXCnyTIr$>Jq zJqPN(J`_Y0BgJRQVt6aC5UFzXI;#4IH^A(9)_VY9PZMOmM<VcCw&GvQ=jhQgR9w!z zKI9$H3?QIC;_q8S$-X#&Fm!z;-Q&O3ot!JM8a-C8_)LK)>J5tSn#J-EpreqJ4i-S~ z!N<M3L9)n-s8iIJx}F5*<!xvXBpv+j>Og@7x~@L>dlAef;A>Dwwh<*txN!72n~r$% zx40<W*h#x7M&Q13aJkXY^93&(;eV6?%AGt)ZSiU1iWcZsd?^2V(EKd_Us>?4RQSMu z0O@`s^k3481AkBqD5lS}x8I?tq5iNv{Q55F(lOG3AO35QKIs5X<eCs|!tZAC?<@Wh zC;ZQoomQi4QnlCgX#TgS04_%T(4GEwBl^!Jg5<6N&h^tui5A}<-2Ok81qMX=U%xr< zUjN@2kl=yhf^&Z!)3m1`_MKG*V)H&!wB#AHxu3NMc|smKTC4=)*?K2VF{COAxLzTk z;s4jl{_oj+c=-mbG2@Hh(F%dEU+b;S7{Dsqw(z~)e;B%8rZbzw%g1dXW0%RN+W0x% z0k#sXLs7)!8NTuUz4nPRxStHt%xk`xr{cW78Z`iG0#)tT{@QntqT!0K26iQ#hL2@` zs@u8rhH9#XZJuAC*Qb*$U?QcsK>XJLB<Wt-Mca4|gn0hxZkMzk{qkpyj*gtBg%h9C z$A@G+IDW<Z9+cV@4a4N}1MmgqDHY{(RU^O)X<xQ^D}TC4uD>2_QKT%)|64|QR#|-b z4#Af9%U>gB4j6yc_~EiY)u;iIF92w>o~}|lIU?yH`PU->K2_V*@cqW0A1SS*q$fhs zL9cEbsLs`@a{(f80EW;8ZX#g;8UB+J`7~?r0|i|rb3J{G51?52oD-;b6tH%C6<|dP z=5|*7$pG3ctXkOoDuJfTSJ~)f+&lkA-Uw{<qf3W|DIwhNE3NB0Rm(-uQEYliNrGC% zpwBDASQ^UT2wnny1nQFDI`|XdU*&^^GnF=@L`5;gac}&E(Pn?j2p51%5+MW!sXzWi z`1D*)b|#^I(E#N+8ws3}_sv?1Gw+vODFEXjg*t-yZ*%@T-ti1BZV5nq1=-60m({YQ z1fc!nUzz^fqJtkYB6H0Nj*f=stow6sQT}p+3J^f~5U{XC5&lq$Hx)_z02FH`6Z9g$ z^qj&h&7b9eAB=c(5ZHvdZsj?7b83bnq)QY!D)^TYxlXR3Ub1R;<HB5Ce#L93d9GC% zpb^h7AN+5R&X^5+8@^I<PCXk?%8m+F;0SwbUC!7-CuZ>{U2@n4Hx6trr)C86w|iL` zlm&g^L_o10#viC@qwMjU2J{@&QOSOL^Qe-NlGltZu8yNh4^Mxx-(-pX@3QKDs))i- z88lWqUiee4t+7#~Kq<PH<l<n>+_2oUUk1{qYo+kL;Q>WBQL`Ia^Q$0B2n|k@Q=Bje z^FN)bpN6WXlmY#=Ph0^}Hd<_6Mg#ze2p+w0<=J2u#db~`1`oW9VLr0G2$X$o25`K_ zBJb$@q%iL(PWRM*H%WWpV4&>E6Ojt;fGqY@HRC_L{OeEb!-Mu%bGn}<F=-PdW5N|u zzAP>N(+dDFg~w(*j=zMV6yx~YUIB38n(4+nSrU){xfFxlAO7{oE0@#ePh(KM8HQtD zlpe=-p9Hq`q{HuYf46e2uT-xr$+8u*6Vm^xQ(K@4J$}lI16Er*n5-?f&J(6BmYDSX z_Z18T0N3wx_CJw|{H6U2OOOKuW24^<$0POO$oqc4dYpF|{ND>U9#R2PjBCYA3ErLn zCb+Sl4f*Gt{_}SKd}1sF+-OFfm)^w#Q}WLY1@|xko@N-EIPgcO`D@6u%79@A-{{eP z{QJcIa}`Qn42-mcrKJfaS^s^w{u+3>Zc6Gitftib`^^4lq4K%_@1G5YI<Wn3S2;v= zPXKTw_CjpueverHV|Zz06u|WV&B2j-L-7Zm975!)D{eq!Yy9R;xz6eHfab9`HM`|e z=X&b8$rnZ$x67UVeI-IQ-xJ5~j=#GP6o9{L`|>Cie_0le=8D7r+>lfoeV&w5*59@C za(5u>TbYAWb**>6vS_cwqEzEbNDH161@zzmnY3UY_R$`kMSG24yB~t?y{M#=jd+T1 zQi%gnNnwhx7`555twEqZ?-{d}TrR9Z#&rbmLIW!~)&cD5w8W*-R4)J^O^EeGu=&@d zA3yaNAn!w*fSh;KrwQ$*_5&_4^#~E5ts?)D0!5~xjV66MlWz&Ua{(Y*uJPmJ3ldN0 z#Q|;_fd!P&^u(2=&{?{rKDSZ6DGm3`dNLbuO5Vt_s|;t?L%?`UUZ*e|NO<Kgf+(=@ zsUe@G_&n%xw-Qj=wimsVEKN8J-qLxhN^ZK$`2xHf<H7va`==&+Z{?jxlHB1Ip!12t z&r6?|?8X*h%zgF6N>ScW@&Y~??AEv{qm{0G;gv;T|1N%5fb&F(pLgK!rO!aN5_8h( zF8ljI-Xm&g?v?TVi6&z6v;AcVc(-q<3P87<YjiD|8a%xh*2Qsn3*YtiTFcV-xYfhK z7eQ||_?2#y9DH~OTHc@s@PUoI$PWm1*q|(~V4wl${!~VdxB6!5_{JF#q+RtbLFC(g zv2`72$v0+wAGYKu?-@sSpq-kb?r_X21>KHpLhMr3&C)8%nK<?O&wWCMaTILQ0HIwq z)MxC=;>lrhNP&}&eXAEo<N-+fJ#Sw3%<+>Eu3B31zL~Khne)WD<LrJ{@zL=v8?4!e zaLY_lk!pom{h`_SKH4^0lj9O>{(u0NWb1TSMa-4&+~g4|5Tn&q#lw&JSPs~ds*+r9 z<6P?_i1HYCijJbA<zhw9HRPjfgeC61_C_*11~}(F|B!tk1FLd!s~qY~b_3bt6KOjn zC1-LyAkKR`%-HPs+#SDR{~lw8*xp_wgNbhYj!n-y6hQ0|QL<yR?d7?4dL0V%`~5gy ztaK})dVQ@NEFG!>ubh1^E}CtDe=of>`jW4=2U#njDKq7|{q41lFTc_{c%97iNVNYA z*lXRZ`dWhXFnn3hy!`qzupt^?lv6F2M4v_Dg;(iGS5resAg;ZbCQ6SosIz}xK57Iu zPD0pR$ZG+Ve|Z)L>gG0@d&$Y8Zt%x;ZR_2TKIw<On}e8c-KCaDi7URi#j*1;3m=XV za(TAw#-MI(zBbZV9v8r8x0790H77J1@GJ4;9u|-3;;9{sj#5p|o%Wf)Q<iQuJOvBS zEij7Dz|D)*Ai?}R@a9tNF!E~6vh;+{(Y@l8G8ODy*ua+S(8qD%1pmRyoI3TEZTZzt zm#oe6X}MEz6UqWryvk`_-_9i}j*+&%Z7zPpZjo&&%)K{!L-*&vj?+&S%?2@LyVZ&w zz0$Vh3?taCd{p<>5w{Ip?fJoMwQ)_!VNRnr^@d;r>{MaJc&;JB%3_SO>pj)$Pxcxv z9S3=#dxFa|iI!X2OI<aFC2aVwQh}pSZC+$j9mOkSr8eqA*BcwIuI70zE7@s2297~l z@r^fRdxy8*nf%n+%9Er218B<=yHIJsQvfzh=$n_=+EI(M9Zr5>Cynn!cp|5CRc3h6 zIbqs5b!DACUwFWY7)urSBBgW8Qmr0TPYB+N&zIO2l-~b%2Nr-u!J#rU`Zzswd#RD0 zG22)Cj(M?1HaZG_mEOgFdD3lmr($(}ediVIM?~M&c)1JCY}YX{vRmvH)*mC<#$%K+ zmhZx;#71b>YANhja5^m#Kb`X-2K;Wu#$u_qrq9yS_gL@8L<<cIpBcj*(JoQC*;DL@ z)%TJ!-{V*3wp&d|G3K%$k$7U&e)`1ZUfpo6zjll9A<lq?JPmD9KDdW|ufyKb@EkWM z7u?jvQ8j6OZpyW-uN``Z-w>;TElu}VZoFhJ#D()IS?bvu5p^6h*YP=3W=W1WoWYaN z-6!$XCsrSGtmts_g{aSDmfNXPU`n5M(cbEd!wBsQjcJGkNx#1IJ(s>P+QRNkFMyHX z6UD;33Ng>4baG;>8$J3T;e=Fc+>)5uVG|rjO^kwK&I<+{zAb%Vr(}E)q{wf7^m!~; zN6<kp1aj8W=UZp2=0Fs{sKL&f!13i;#HP|cB0X(nS6AF_l9Hw8+z7*vK@Ql;t!BP@ zT6dBnn;%L?cPv@W=7Kr;FR+>2HR3$ScuAY5Fhb+J|5^-1d{A$_(-qScFq@~y$UDC| zadF$v&m6wq7{l|(3SJM^aG3*&e^S*f*NZeBEz%-hUC(EoPeWh}_wwQt&5@-NM*9=R zjSyu<YVDf7pM^XfF6j`7RAGmbapsK^Z?Z`&xHQJHm~QoougmgO4Y$6@(oFO6O)#v1 zH-mPeRjYfmTc7GV<CIL5s?0;<A|<&cJZ1rcEk;LiCG8VyL|S)o<LVa^w&iNH9z7(I zz!zxz<t{1L7kRB__S%z-7#?6w73FxNvpot^XheAVjNDtF#qHJ=dJoytG?d2dBT>~a zoNZp=jtrwZ*1Txd@(XFM;AKkrV)ULR<l}Qpd%ewdR}Ht4bolHuSNb)w$475VOMI8( zv|iX22(yB$UQpPtE!l)L%zU^^ehwUwS_~z7?+x?wo@3ulKclY-oHTozOr;=k&Z^r- z)yeGb3)^n6>^8fg=|=8&Rww=57J9D^rRILwL-M)dQ4>|lOmlVm9tfL&Oqhln=y3&0 z+EDJrA{qJ=`H`VAoAD(p0&t+skPdjSFGecB9>=h<akWfvJD<;afzOXEze7j5&_%b+ z=-rft)b;FJhVZ@6V{~1YJHXnzFVy#uo>GHbNWSFw=L;1+ZQdY75m0AZ@a}G)G!&IJ z6{<3;>)$Wz%z4b2u`Qxv=X&-j{8fF{o1hzd8<y;q?VTfThfhkTg3S`H$ytr8vv@zb za^|*<&JEtd2k6M9?#y}ui7z^u&p0_$tfW-?)VoMrx{qdqDZH~0!`SD2;i=^71c@i? z{k>EVydyF?5FR3eZwCaZbBH4b<S1C`u8qek5MV4Xr9N4ipBBSe=Vek|^zQ6{`lXDc z=i5U_;TO*pXzAQgSAmbK(s+YbiI~|-4RyKuPeYG-)7$fB=3E7x4t1Cas^6QU6{?@M zTqGkmhJ7?7`xIH(9*oPw<UYxoP@AggR*G^B?LLC&7;o3lYc}Sm`J-ls9NPtVE_<Vo zM;W>+a5{>x+=Fd9H;REgm8n0e05kNsnxzkPU{^IUlVc0ih6m!Q>ph11;x#n&2UhZQ z8`Ls5Z@(46M8v8q%%rZ3mA!eIGq24vBlD7{@Z5cB8Q*%3-Ya9;hYy495Mf<gF|3Um zR**x-+qI6Dr^p!696uS~xpEBgt-G3iGAlPFL?u(c?@>bGd^96cTd4rtTDs_tiD9G^ zG%ySDK!*9>CF~c?r|#`;AC=`!t;Q+`yW5ox-IIp8K0A6u`9boczq8#?Pd)xTB&c1! zQE<qKF$_!!l~1rbJh^Igywp6?YHY$Eq|&#=?u@{BHU{7;v2#@F0*~YwX%+2FF4u_t zC=gZb!J+-YmT<C|Z9K?jAz*&ko?PmS2~xR%?r-Vf7)@OChuVEyCjcE*+a|rE=IeE% zZ}PVq9nSU2^_<NC2^E-05GuHC56|b?&606UTE(?h^(f=g0gjB7CY1(hCOr(ay2Xp$ zVfSL;%$a&SK@K#vNClAH{9u|5IFN4unve-b@jRsBC3{sa>FoEpp*86p_6gaMHtMh} z42KBhRZ1*2RmYv5M?kIj+tWBEg-F$b!_H*qjzIEzVt>wL_a3t2v7`p4Y+r6}10VtN z#@qMzjtm@w#2-VnmP~y_H$Hn;$T_0uV|3hq^DU)kb8Rb34DkhiLF`e<{9rMEQ_MKA zXH7P#L%DYk$!@?55(()Ihx*^eOPY>wLY(kCh4&s36p@}|@2>@&{aP654>w(p&RiJ@ zJEu;|q+u|=yfI;iTb++>)AXt9Var^cCyq}D^Vbx&zP`z}4-`-aR^Z3qip^P>B277O zhBSV<KdWA$DbEc}bmqUYD>g^&V>}LT9~OI}g_|p!*gE%t8f%&=idQ6!Qe^dG)M*nx zYn9R@C^Qp7Z1w;m8=S$Qg{b>6h-GLq@!B-RT3i@923fG{okw;&D$Goig_!WCrPJNt z%`G*aE!DsS9k%nwdb>6lecgqpkTkg$)mVJ3G{29C`JXyQ9YW9;+(Q~-bYYI6U{wq; zB;-QU8%3w1gS=78#cfW(u~uD*Tai-UX1D!UJgci;9MNb!!t#W{*>jLvH;B`yU>K=k zx$7YED(8sKEIQ<fN$=HB`HNBpOW4BpTKBS*!EH`_*WRv+I5#?d;L{DDiSbokxaHv- zi@I_W_AZw1iI9<nIu8>Dw?WXKRcHQEM7LtK=REd8338W>;au&jHte8_7${zm^C<$~ zR({{91*qPvRIyW6wn#=!iHgD%8M0Rg{H|{AIq~0!Xe)7mXSB81CKu+XTbY)(4oq~B zj5AR^(8N-~r~v9|g&<Mkm2~C5Nz8v`!CF03CUZt?)%Z&WFKliM*@sNL-zb;8tshsO z+ay)_JOm`-+-)npTVQiITzuSb1V*=K-AnTf5pv>3F^Ng<gwNOfBPN_z*0NwX<W6Il z<n>rXM!e`CN1YghbmBw%Tfp^#haQgD#-d6`SB_fxuP;o>4p$#-gf`}8gp7nPg}Ts< z+$|J6D>X1S!g6`LAkspxsPJA!LfH?M+n`maaX?(WYP_&_Vm9%muY+T%6&y3?rPmX0 zQLWj3+12S4pm6AmFYtzE3|}ZO<=JfVZE{hOkUtZEM2!t&bq<Fi8NI{WGJ~F8gN!>K z-tbasV5TAN0^O%M7Q)*Q<A<R<A`x-wT-o!jNwH-qQA7?LebqIYdarr%UKu#@kfJW? zP|FXBf=Wh|?_h?j3P{?%P=qiQ>TI!%a!&=j3NX|m@ESa|bl~Vw*^hGYz3pC>vs0R> zZ#`;h%rSYceyoL2>0aL-Tkqt9MKOU-x#}t)G$r$I`$7g)P4++FbNq5o`NfW>a93Pv z1C%teUlCJ%9Wj}a>$J&)+X?9ysXmk!Tb)5pBs~v7%3wARqh>n>H2jP;cF9YfejX++ zCLIe-FT7~03+GOS<+9!k(7So)^yA9$EW~nxE09!_cp9&lAh5d~BK!8~KI+0uQWYh` zycg8z88v9MjF**Aq)|)eB2`j+Ex5ctrXUN<p9{q^R^+BFSS(92?9a(yJog`Nqjw(p zmyE3#%~lROke+S~?dF~lHqgvBy@8G_-ZpyoZP!u0fL>-Bsf{SNilREba&oL4zk`)V zbzeWlB^Zgy(l)`4dztpAk9bAsKd*OErMYWML&H0mwat4ddqO#<w*EsH%nRqG$uF1d z5iingT5dbPhaHwt_2$^3-wBnYrM&^yqqRJwaS-EezMRIB-T$-D!62kp)!~5!1e|AW z%r@eOUgvYJ=1}*wfrrsNeGOFV2pucrS?<4(-&~krI74s<<dU9o(N*1@Ti|PT$m?rG zX3ZBC+;6!2P1Z!&jIGN+TtIhdeJrO!V!qOPbQCeW<%hgJjIeRhidJBoZbNS%tp}L6 zu~aRT^gfl-C`ahhT9n|!f({c*`)HprTKnX1&WCSgj)3^bNgVwO5FMq$t&=RbKky;b zOE8)#?_!zM4FWORFazc~v3S(p7MD!4waa-xM9~n*q!(>>BlkKukqBQF{lfUV1anqT zR?x_`k=EGUzv-KdRwf+*C^J;_5OzvVQl_i64CTD7$Ae=qIW7G})4s->FmGs{Qd^-X z-fvEV6J7k#1luKuvnS6Mewd&+&H*~>lD_7QzY-^aP+uoS5^W>icT=qk3Hl9H=#zpJ zEk)zKINH<>bDEp(w&pltJNV>9%!SCPYysU~W#f{x3~0w%UXZz-j`a2S9vUm+T<?_@ z%MYnNNkzGAveV5@-lF=(r{(K=MRfLr1oMCA0&<hUnKYvlVy<SEl?+-Q#xy`r>*K^G z`u&;bY$91%Bm4bHqOQB!Xxx}ToyUlCoxY7J>3mlwH2%q1^H(>Q%G(>NBK0A!<eY3i zY>c?f4wpGhrNH;iGMct%#qmW7qp;Vqt*1^^LI}gni|b3FW;NxDqXf6wd1ea~66ubJ zl<bB>K0CZzbcvfy@R`+s@7(#aU*jH=ue>uJy-Rwm8@OUEzA$klc1z3|`8f6Z{#S~G zaQ?)q6>!XNf}}^E&n|WFx+U6&Ux{rbsR;&D?}8T%9eZ;yorXZS3H|cCH5aWqppis8 zxizZO3+j!NFfIV!CNEUKLMMZN%nCgjgN&CC?@q|pFV*{eEUquG`4J}GM92QU?8!z? zHb>>%xPTF!RL?gAoTop+(^2{<a0~*OyjVw)^#Y10C0E9D5omnz<0-{)lx=DNUNR#} z@=@7RP<i=1y+*el%<aGhZH-=!x>e%Y2F2#E^y3oJ=4hvjQf`}L(TSL;IL$XT#xVa; z>~4{Q(i3!H1<EwcjPn)|I?+iS2Y_O%nQtz6o8Y#?XaV&Z|Au>l(<gpuqF4V(Q&9oC zBKK$=pba#4q_el@{Z7tdv4tA(=(43Tf9@qVoPwtGt?@#m;+~3oizm6O<^nPPYK^p2 z`HR(-g3&qFeHx&9UY&cZ5fx``Q7e$Q-mP1%rJw3h_p0d!Ws8rgPSl@DQCr$yM|bM3 z*aH24eVc5D?E2eLb>)jd*@f#XS6ojZ{YR{3%baB3W;!Q>JUSupZrgr+*%wR1QmR)i zdF-XN`HN4`x9Y?7E#4<Gn{Z5~UaN}%>+7)XrM&w6?UZ?PuXT-!Zg{vOV%P?IbraVY zJW0M%sZMfOUP5xxt;)koJGbQ@`U}~rt9TP9gf{}0*^l5luS<_d$Zl=MlW%4Ro!v_N z032p31Ub&Jxy03zkt3Q}qK|{M13k?rBT>pbU2fORe#ZaCbpdFHD8|WLeKGHc6xS^O zk$>8P_Nv!xB5b=%lEUQnj*6_uD&DYPyXOgoExe}@b13!&6i|K4T_O)Vzru#iZ?3;s z_jxn<=9`IOOLaeFa>K|l=0Nktzaeb}Dw7xTgjC)kKi*SpO~3kh5UC1Yo*@a`-Te<Z z{;yA8E&(mgm|kPS=T%K~C!=E&cK!D#Jr%+!3}LaQJpQ1={Y5?j%z`^mZ@=MWZ~xQv zS7#P}09RF=QSG7o11KMCbi&!RE+Sdn&Y+Rd2SCA(Og%FvA|{Ulp|YGZ5T)F?6!3fJ ziT|MIhk~B~986dXB#r4nX#F1!<ut&Wo}rrjQ@fgfD1cA@7Zdk4=pP&nMDeGoISwSZ z0DH{1321~hV62XgSCT6LEoXxzT3e;X_<}Z>wRDlvJ0N;8^Sy-%gi79Sb-+pOD%=pO z1RKgSTY02w;W;xY<9ywrBUEncsEIi7M&yAg7s%Ckxr6i3b=`H9%N(xT`iV7wU^CyM zAAklCHT#V(a9<{m*ElfmmyPWK@S4vQ&wVcn#7@z%`jLmCIf7@}Wj%qq2*HvY=E-|d zawX7D+rzxZEAp#uSOkSPJKg+Ct{R;Huy`d8uQ2?#cczSz)+iMqeVt-m1`56v#cVo8 z?RGYXJX69)_xnm$cQ-Plz)~Kvtg8ZP9~vnoBKsQ`YhUzYfEp=N+?kg53zV9qK+U)5 zWo&+=wxUFH%Je<}qI$-G#GXG4s1fzrkPEYA6!OxuoKxEY&EYoE<AHW6D|L16$ZJyj z8$hLbg?g)@x;*CLOy2bDordmswfUT8npDXVAZVJ;>7hw{2PlIjM^<07>rG4m)*A<F zsNPT|^-a-}V?^4>nWdD2kU;mtzmM(19^bN(yB>Z;UVimeIQ22c>B=jH=zIZj?U*$A zE9dV55dJ0VyZ2757+&W6krw41{iM-K>;A*j+EnsCtv=Bza#WoN51|s~XNleqaNPBF zOd7&n@U|Nof?`*{dTahV2#Hlw1B%E~<WlUAVr#gzo#No%v;H+})N6H^(L{SjZIJKP zJm#igX2E#G*`zNHM^94&ZD9F7STP?+(oZ7`sFDJe8;FKMcT(NM)5OQj7LyAt_cY($ zZmrwcW>uN(4|WQU`0*`j*|-1aPT!8*?w6ph`<%y!m9_=>x`=Ywf{uskQCYds9r*5k z_0*q5LQeA;ph;U5GX1xtDfWQPGl&xI@ht(EYd5XhXdl_`D#%ptM_B%gySf4nE=T$; z7Y8>dU(}y8FDSQ=efZYN^W#qyl6H+q#2dwQqti;Hud?Km98$_{?>95L>GKkEW^{UX z-7fm7_ZhGWw9SOK3qg(u)qUwN&{i1Q;F~v52YK(utH^`_WC+wB&XJJquUY4&_<gG| zJSB0smk*suFm`wCsarSe+qi+uuFbO>RS^%XsB=S8`TTq)jhj@bdqs4UZ1cxT_hx{R zU)8QJz^Ain+uxwwD>SRcOR&P~h8rUeaU_02Uyfw5o((zxSMB8i+Op%S%b#-H#kj@2 zP6@zYXh4(X4`0rHg6oSk5R6)%{V1Cou*QCFIu&liZqWqr?>0(+)AKgt`$Ic6q&t<l zM&~M9`_D_wA+o#8SU|6@A){4fGry7*X)<G|gQ$ai9QPnkBafK1By$X1!%r-UTNNdf zHox+sQMi=z307<a4-Va%{g@^9lnT_AdFVM25orhF>3a;tEvFOH{MJWJ^Y<sQ%SJV> zb^dd~d@7_8s~2td{tsDGH948rpaZWRx)+IWrJ5_`*E<P=muUicmAkWA(^cSGOqaTw z@$uuuQ=XQ@HmpIFKR1pAl9l`l58laZ+_T7w8eZGZt9Y-d7ca*5C2i&06K%U1(Ah`Q zD{s+p!xxTu^rhsy5PvyvN4uzL0H<Y|B<g}6ky)beWQtsVyQ-y^gXf=0{;ckGigkdr zx5~WJI<C~1sz=D=MdNcy^mB$$Q49Lw*<HFVj2GWZkcDAzyqGvLRI&6mi}YB<5MGkp z%@e@JSac#aS4iq7&&iBAV}9cx1v0<g?(>LoOlCSASGK^5h&4#D&s1tEjM(Q2ioDaF z^=cE4p&6e6w0!3bX#POr^QQ#mgy`6LoX^sFQ4X$J7YG0f1qt4Q%Z1uBVoBd;&Iv%R zMPl!$u+46R8o)hGmfr~24e`jj=0rpc!v?{}JkuYk@MJ+qi5qm$t3&5}0Z^9kQd?#> z!-DT56LNtwNfhE%iy3z4eoVM%C<93&ByNgj$Z;O)<711w(_N3bToCuVENE-><@U(B zBRYh)x&>Y_b`i2nVBP_vqQE^0iN^FAuN1?0Z;RM}5gofEL!-EkOSI`!$+Tzu1e_+8 zQrL4umq)3S`2JQ6Ip~?<hrtjcI)Ef4O7j3X5~+K!f5X_5-A8SILsjRr8pHt6Fw;Lr zPfMNUs996)l5vKg1)4Dtju(S9rZUJ!Uk)q_r;=2iytB$8_%PF7MD-KXTi7OyW8L>0 zV~LOI$aj32-?QN8<)Nob3tf$g_YSkc;y!WA^h;*J7z~cXdqeP~ogar0F#1Oh*rI!f zf)^+y2OG|O7yjUzw5SHU(Lo{Ke(rleyc-&uqoo7RhDtU-mv%)1^JUBDd`1{d$<|`K z@!)(H#vl#exd$`X%=f}OSyPsJS8I81Olls3F@ET>KLJwwcqpjEKK?~dJb91DLGUCb zCqHgzc;*(@-dqjnlGlBRmU%*7RbiG?QjaQd5{B2yNP^*pD$TT!NsVjhc)#+SB54{8 zWTsj0DK5yKfVtR225(UM5<hHiq8&q!T-nv&+aF|9{!uXhv5y^kZ8OW%2-@#znmUDK zQrfP`kMO>K+~!KBdpLip@K1!HeEs6K3&B8ecR;Es?g*Lm3ZGUk5S?L@V_NRKE>Fcq z8+y1cnPkc4b(>`-6AF^)yH0C0_g3dIL@Vg?Fd#FjD{afPy7!i)553fYAAdQfrgrm9 z6kg%Zq2Lt;faBaU_T)Jj8Cf;ZB0UY^tu#8wOiMP5YN00YLVUU0vq(biF26b3=zs(& z_kFwwNLPw4H8v+I9C4%Qbc(L;Mti`nss+6HK@T<kZmcB)-@kNI*5q#E8@iX8=Yxuz z%6Pq{a+^#!g+v6Sxgzd#hn>N}$dMnn9sQ6`{AO{aoy+PqjNCZM+)OE9{<|u@bPi9I z-+pZ(GNg<oLJPOjZP>Pk4gE#h?r?$@WRhswdOF~e3^nUexG29O`|LV#N%H5p07sa| zNZkUYkV@^RT?SuWxGEEM$tn|L(UNI-Al_%H@d(>V>85TuKl*c5ZyNdz*Er2QA0fUx zq?^a+H?+ktQl`qUwp68<G6&bSQeW?@zCu&<biI@?1c+3<fsnxl`^S(0I5n^X1`@ue zT)df`T^~3gkxyp^x>EKgIETK(vdHNhmD+&3MFo+xs8uGt`~e);P)YZLchyI7gBA+i zo$~Bd>SZ#P=~v-o_tIF`39R8ZD;rut(4dSEHQ+|k9y!j_$1H@uMp0|=)J60aIV2Ta zbHR9r#DeU15+Cl_d)>)9L(^;)`;)H_oo;jZ2xOD~g2ipyH<1F$=~<%kI{o)(W7}1n z)aHzbR&`#~72f+!tGpx3O19`32r+*nv<F@Np}CWLtk^1HrlN4{*8ak*G@IZh^!7X$ zTIRN1?&LhO86E0^brYPkUXp)ull^^<gnB4sR9H5gi2(~OV}Cvt>|Tv3y0`(<2}%Ot zcFB}#?!kyy?ipiI3=_>U`=_Dc%EG1*{sM=%H32Wk+KAUZZ}`gKng&N;+0gZu<;}Zo zGHr|_+Nb3S=C99-ejYc3_x{vor77V>W<&)h?9VZ1Zpl3#$m~K-H${5%OUSH8M|>zc z)Ka@eo52_HQS_`{IY_x6X~4obo8gP{Iiuo|wukw%58)&+(f9$0Vyk<V>|raPM>4@* z)D!`nC!=`;^Q62j0&N$o0eA7cInyuQ6vMjB&V8$_n{QGgg1fk{^5^A1ua_amRsDoM zKI>je*_NBO!ZKnoa?e1wJ_c+=zGx9?Q`9w|&n$PCj%B)*_;V>`bJrrceAxsTk~C+K z5ksc4G~eI7um8Q;kX=;xS_8Wxrt22Vh=$E-la_jYv)KfL+HI4vO$<bePzj+P>5~CJ z;=@@EnFhLGtV-J&Tt3>vjDSVfQUNY+((nL@lwA)7S@z{#%+b@m(@b#W)M9im(&puF z8o*Gu_X@2fII{>!BK#a4J3!;V3hN^(SDv%287StMCOlqTf2QHs(2pbLIz)dw)P?sM zQ}?9>IbEBFYuVL>aHxu565*P5PMMzZq|(lEE_0pR5&Dy5dSLBQd$z*F2P(l&munQm zp7QCtb4#T<jw|**o&CsHvG8PbuT?3B#+#4t19N?p_bF50oP|gre_5#1;r~N${{ST7 zA@A^Gp=HOw>GIS0%{MLEXqK6@EWS4%ZLm)2&t{pfM`}2nu~FB|%DPv3OC8T^z*9?g zZHgiIFk~>lv~u+V2sIwmc+dNyX;(85LC_bXWkFgn4Hi{9C2?^<22EdJR^Gkr7<$b5 zECbZhwBh(E<fL=f^Mpd{$&fC7r)eSAjm4twv*0%>I_5vPbM#q6rjzVHHHYQzmwqTK zTu(bAX5iL8SzM)guVQPZ9lf)M!H!RFZ*Y_uvH{?L(9V_x^LtkFOt>C=N9Dpp%d$f? zAeFTpVx?1f=Ytvk<%jaZ5jjP(S+%`(U)Oxs*?FH49KQNxEkpHX%<WpKZf{8U52Qql z9r1r&joz5*oK83P+%dVlqLHBI0}=z;&1=a}-RIGl=@>moo1I49pfX7_(p^KA%Jye` z+XmHA9TBtD4v4XVOjw8qAcYiy>1fT2?21sQl#bZ+xEJ0_TW9xjgP1sNBUKn$$hnbz z)1;r7LX09sQh2S%akUmbArLQ%SOEt_C%<E0%Pbo9CiRiZF%#CNmE2V`0{0iCU`Ey< zEi->n!9<<83{bj0JxGmlrwc0Lai^t6h34s89DnX>Nw+!)hqfG|xn@*~!yvo#t0JPw z$aJLX=k2s;L6gE~g`#&FiFS*{{v)24B`z0if%#JC)k(=LFp2+5)b)Pqx51$=w(KsY zW=1)(*SY!e6w=*HNXF-!IlVEe-&Js-cZbo&z^!mqTaP9+qONqLd~vyxs{nz*N+M&x ze#gs{YjO<ZqCg)}9Kr?25qCh<S8_?qI^c?Jx>@*d>HHu)mH)<qhyO-E9S8BNpg`$| zBn&GqM?JL~^)gaQXXZ50umUx*+?aE><uPpocSuAnwW;BLTIkt*>7l7rv*@`^l)k`L zMNxImu8Io|YYCg$bDJT!0*_Q*y2X>Y=4nV@cjX#?wc!ri_V;$7-F3FJobq&%WyK9S ze(QLY^@}(h&r64A-V2)u^5bNNQQ`e1d+f@f^?Q7o^H%t$*>eqP>-V7k)%*27@{q20 zXV~M`n?B$4Wj)QoGhBg_4eeO<;4qbn2p^tu*K_^(+D*sm_aKhg$NQvV0x_$c2i#w0 z*H}fYw1!QKxo&s$18Ori*r;&5t0NkJi2-AXwUn87DE{N~zV|x5KcelF`2Y$x(cU4s z&S<$YBU?3?3vJE@`i7Cq2}7S`^TwN*H#|aN+i_3t)nz@zU&ZImK3Lp(@O?X#Yvt7L z&`iBFi*0&jfJA$`)2x)`Qk3l2ccz`6LMRiABZ>stB39?Ws8*nt{*=fzkey{`=Ud|~ z^DUzO!Bg^&WLQlC%yK44%;h_`MrG?MwgBG@*Zm81mm0>H-_MTZX|pb&&1a9;A-I`X z_xA&#ugGJEkKbJ+4DMa^S#FFNeN$+PQ{sRwY+H`DV0D9In1CF#^X@xMnfVstE1`NX z6ZgF`T?RtdQBtq3bTUBkR+=2|^XTMJ>@EZE-FC~;R!HR<v-GE5e_j1PFsY))pEq@J zWPe`i>Z$#$iMo(S{K@gAKq*f1bNYdr4!A~JVYppxxoF=0Y{LWN>U+82g>N?Lmr`^R zJ~aQf@tsq&B2`#c;l{az(o7!kE8X)ju$s)6A<h_%K^Q)dMwhyzeb-lz(>*e8xG`j5 zRO4vhqk5Dd9kgd!Y%`?hx-cgo;Kq5&e(11hvQ2c&PAL<|w&4D@yVAdRk^ksI|N8U+ zs9&GB_xrd12CiuM0Bz_UnZH^*|BHb84{QZ|Y8ALS2?!&9dm##T5=rxZDD#yiQc5Xb z6Y~o|(V+(FTR}80{srOvet)Zd;IRhxJA+vMw;NI}O#=v9`Lu5TUv)TS%b-i2_h85R z{`E!&@&O$Hno|z`c=-?G6dcY|<U*z+b^nOMp>Q?22LDfcUmg!-`@S7dQdBByBucV{ zlBLF8A<Dk5Lz0~=W8W2R_ARoL-Hhxzr6S7C*oKfW%uLp?d#}5mo<)6spZ9(Ldq3~D zzor>8bKloo%XuE>aU3T;ALX*K)LPQe?L<jmQ){<wH&WQ(lE?qu7(W&26`?TQ-1qA^ z>>~w6qaF6A?|W}jIf8H;GZ#w1u*`IEAY~VXbOc1b*ilY50h5VyzWEQI8hza0)vjAF z?+J$PP2-+_LQIuI>2G2JsnkWlnY{Gvi3z^Mc6fv~4vqy%?FKkwoeSoG@0de|T-9Yy z=MNst5MF{#mG(w|eK1+#!*2)uc=P-uvUleB-SIy<o&5XPQ?c^DP0ElE#Qj2D5uov& z_2QCZ)iMz{ZaY}Pnv9jcs=7HBA)jaWbi+BGF(Jh`Y^0r<&vy`23y|YDdE{GvXKTx; zO@jCa_uQU2A!l6Ma4#w4tGxa#3c(Tgxlj0S=Y!X;PZLjmZi^Q(O?XOvrk87sts%_1 zw<yhX<HMlVjZ#hHYdr?Kj91*Ak0pstpMlqt?n|KHNxY+Aw(ZzkhVKo<;RG7WYI)%L zQ*#-C92J|dYI5v5I8ptWgV}{@RpQkM7qE;zqbECsZqf60o>$P4Ys;qAtGJFHl{Aa= zT+B7!^11TlTx}R_<{W^6LLeB5dC@;@_VT^+Wy(PSjH#)wYY$u0bsrZ`kD7<3rVPZa zCk<-)-49NyEk*JyqM>q->!RuijT+2e`eA(?g+YF7bM?zM_yRMYLQJP~qL_rfswP{> zm462@Xe9j%ZRFc@eYyJcNHpsaEZP<OJY{=^TGboEGn@@bj=jJtyneJ*(s7?ja;wvl zJ4ZF6d2{YfZuWZ)Qc6aXG-GL_=A-z+zTNvy)1QdV$?Myv&=)UxYs^vWZ3yQdCZjxH z;FV_G{iQP+aclasA@TOoik1<NIleZ#E;!T>1OcKsM&e@<Wa2c&@x-;;+9k3_l3W@X zmUw*Y`qm*}<17DKR73sjxMKR}ryU<zz=~nL4z(^m_H6!lL$Im+xsAVJk>oI9m7cy) zh1d3Nz#{mXNAUb>Y;@-pPZ5|dS+`I6<bMu`B>iK7D>19XZ6HN-`Xk<lX*Wal5XFsC zed+Ge%43KvSLLnIupE_rri)1pi|eKLf@Li^73+Luoh5;}y)f6sG+5r@zCkR^-e-J< zBINX|>Y3zL?F7Unni*AZL67TGoZr&@LL+4@Ed(Fp7drn?Ke0(xFaFd>XQIRUK`>H# zv!K1zmtaWk&H5EWT_m<=qtRVsa^H2_;YbjUI=^iB9StA&SI9nNq%I_10O(XYt5mHc z_L(+$jhfdh`xo!!*(hmBRT`z)4n>bDJ@YBboK4aQBBc~wiB7s@E(*Y@4I2?7Uqukm zl551mcFGvmV|n$xPm>*^x!E}rev!Fv;^uB&D@8}lyLwV;lVQ-GN$kz%N3upVUs9&* zbGt4mFxsYPetsHoF;?)-4e29fCKo>F5W8ZbJtLE+(OGR)A>wypuheS?b0*>Hrz~5~ zB9c2izPzdnpvjwAWq$Zn)q49-;qEbIn4R=~1QJ-vCa2s}n7ghsy}iU=`-Ptgwzjx7 zW$CTGuAq1MY;r#c#i;5QzG68ar8c%jzHHl$){ceuh;Zow@6Lj9OpS{IHx|CT@x~Wk zW4CQ&H{78AS^qT)85d1>CntS~aTPW}RpMes1fBbC-x(`)wQ(<K%Mbv<$cQrxgTG?! zB>PuUep%YxH=lrDkvONA^M|3e@Pnr}gM~Dv8(^4Q3KRyMMQOF=Ze^tG3d}<lJhO{+ z?ZG{2FP(ft);c+<`?Oaq(B&cg>ch^+v3yd?(-vMWujQ|n-3yMynzHFe3cRg9T)TYM z6(p;UVV}HP$zy1Ax}7x`>lPb(KRl~_<h}qvRRKtu8&CgRao1{zpCT%g>nT3oIUioB zpY*kPYbLns;1f4mAw_lA2fDTXXa(Ld(f6(s*46C#Z(&IS7nI#Xcw23!)oiEv*PLh? zpRartY<N_$Xqk|8JCK1Q^#KtLJ3D)xR{@#n65JzAi>SkAq((|G$}f&?T8}7Bp7#(f zJai(ZH9yDk3Z$aXJOL~ZG`LUwPA%VZh-7<cjIO@lSys<tD6$ZpN*H$#WeJTgGA(bc zpj#@>&9q@Y*cSCci;X*4t6>Rm6!(rG={o9_G98zJ3?XHJrA8c?J@3vr2xHp0HPP|Z z*YI8qyWL#>c6~>Q#X@AX`{YW0^_f_~x@g(bEtjFYzBe=O(hPj>IJF6+?56Ok%HPS| z!F06P@7HgpQtdc!(>w`_RjGJaU3Ok(ARgIuB&mb*KG+h~)tKfP6*B~#R!w~r&QTsd zXLft3?OXnV&BO#NuEUu*p>-REU)u?nS@YuPHnh}?$S9Uo#hb|L3Xhao)ANNEt_ZwI zy(YagSpQ5?f>=9-4I4TUdpwErj-0yrpvRdGUV}u9o$DoE-72b<l2^6oHr?wsMK@3L ztGNhhs%>f-%^d6KaE10dKCr4Bj@SPpT>wM>B@x_%n|GhSPw$(xw`WJA2wO2JN|tZ? zt|!7agqWiw63$v;HjYT7z_866blIUCU@=&$>l{0q%z+_bPCUKGzt#ia+6Jj24Vk8m zN6u#U?I*Bx+DBbEl->u9RK2$yE^kuiHzQ#Tv8r^K=an$d=sHT#nUe?|FhVzP7ruO0 zKAb!-q^;;q-%#31;CYm`PrjNm(Apzs`24d~N(5AR0UKt}T>r}`;N!0;!J1y|L6<n! z7F&bQn5`}Kxf$29G_rAosjf=E02E9*vL*Ez4W>ev#GlACu+h2z@!&as#!2ej%-e~3 zR6;FB{KY+8s>D6(+e2E_+7gfJl(=LJm(HrAg}ScFUo-Zl@Y<L)S5jwAa<P)rp00^F zsFi~4%dfdy?drfJ;yoj%U_wM<d}tmnt|&NH`o=%+o|&_+cLBI@v9*UAwQIXB1_Kb^ zb#I=g@?hqn0dYa6&|TQ-`v{~~;j#~TVxEr{f8p3GYcwAbZN^^%m=0B=^j~T~<i7Sf z07Lv7$W*0%B7;?8$L*=-9M08XG&j34-)B`lyNg!u%4XBsn+M8pYj5?K^GuspIb@nO zf_6fLtp*wqv(W>>R?nXwwSK%guF5+C<yO|H`tIRUyS{Gbu|*x<HjR}PjuXBbJ5}Z@ zH}^}FZ$?o6Os1++47xiEJsjY~?LX$$3asF9J<3b#l7q#4yla#2kyYI8vUJ$EBuiqc z><4<#^{IYmg9$zUrCg!`^OTo#iZ``!^w0c(o1m}Vve}noRB^4pja$=J`RpKl`JThJ zinnNU7&U^o-@Pp2ZdVaBq)p@h@M&yK9NZnf+gg*}``CjuT+!dGO}i3`7$S}`Vx$17 z+sdA5`6>2-=Z6qxZ?h?@0g3XjehG@J3$2S)&x9_uHpkceF8u!D=htst>D^sdp9L`H zHh)HS8L&1|9Vs(K=#Y*~oxf{R;LpvMN>*ymC~`?p<l3BY^gU?;cf0%&*yR189aZ&S zG|lhA`0zGT+)%m0r!bqZ=#(pErke(K6bNYcafg62Sz(FO@^`I08tW-aua2)}%H$Bs zP9eYVg`D~%{ckz-l@)%sGya)<_zOUyW!Z3=|ELrM0iPM9l>0qE_g50rdK1*(PD-mC z{!KpgGs=#JbcDq#nSZu3{AVtddhL){#r;=pbFqZ?n2os;b1NYG=xNu#W3u^N8qvpb zn}E`tK5+E(S4pR7aonn_xO(5E0{+eKQ^Je`T;BWzuHW_PV*P`JOot|%lj~E$Ql&cU z^%N>$A04$-0r3<&=C<W5njq-fjveZKwmR^;*geOY)O>YjVma5s5{<{$y?HBdH!`CN zh3ztZ`qdWFrS_tf^mQ|?O-|$WQ#^CF=Mfj?Jk?J_V<43Vs`YNv|GdfX`53D?S?`C$ zcK-E3|5mtKu|UrUeKlP(?@_E)?3CSbJsWOfb!taOJcU=kJPQHOhlklE^|Yo~W~F1Z z9lHxnx01OpM-iKc82Ez;-|xQt(uu%|Uo$=KM8B+WU8rS3iogdTjX6<av2X&7v}F=8 z`FNxrnLp|^j1ja;-?SMn&%r}k15?VCu_Ed1nE`D$&bh&Jf{1?|%<?!?$ZDW-rTVjh z$hYpN2A>#((kB!0EZ*i^k~iZf*iy^Z2y>ibnd%uj!FckbYx{M1wu8~H`yGo^Nn>3> z-BU^Z>?|xqtSI6*w$=w!wGdE%J~ijlkR<Gma*X4JkK3g<+pA&J%0%++7MaFUkUmdQ zYWwyfJ9z=oO@#6W=^fo6;C)rRKHkMU0_t>$8t9@rP|Cb&6}Nb_a_t&WFmu@3tvj=c zn=?h6iR--hkwetGH#9Af-wEWLi<>4dXs$e8X)(1MWl0VxfP!x&+<-)`;zD^_oqn8B z{dQiynj2vPJ9C+1hx7iz(@PDD>PCZ?Y$u5o(`iKW*)b!B%jS|_=kj0%!k^E^`L3Qs zDkTk>9G{0yLrpy}<zsxd1W)hDuKnjJa!iR~9pVK0?)6gjB*d|7Pjn4Fo(@4#0k%>2 zy`;ts$Dh^X?kUvTQM|wQ;ae1>w^J_lxMt=z!IPR4N?5$#kPA5*ju}mFnqqtFLEz{! z28#kQQ&dAmD9`f~2L!y{3+@Q!z!_9t?F-_w?Ea$S`_cw^O1RtAINyh(+;U2EtnVty zMHh^(>+6)A2_wUG*X&gZ2~XMgNuz*JKuzXCLu27{_wugc>vT7@eb=8_@o;r^<xRbc zsK6$0KR11y%EQ;tiyK&|@;yMYKL_VH-?JnJPbOnugt^=YB`>e~owu&O(H+=({>PRm zmn`8VX$z0{MHws~Hp?-;VzunXGS9Ht79ru6-WW^PsL^mw@x=zPZa!DGJIi6dnch>F zAuy-gdW~ymXJ*IbbE~<+)+;}`8DC=W>`tk;XImR&oR-rH;Dx-!o^0Hn?f>9iRjH)b z{#W_K7J@gjUhhMs1~=SA^W(BdC7aN&3vIgrl3mA<p^jvVkdIrht}WXsK%L09=zS>r z$L%`%AkWFdzAn@#?FCh}X4j4YCvPLfIsJXo(?SVndoqviRxKq`70qm1d}K=UtcW?z zU|@Kqg)rG0UzmEU@DD56K_ki=7MYKSUf4xG4Y_@2F4Gf~lo&J)wMFJe!nSY{X%(b0 z;}!>NT*d=9GCsF*;fB|Z17!O+AEkAC{gmQHPj=Df?h`|6{V8h@kJs1Bm06sgQtxC< z#;<?+L&ER4Zx93u5HeC9v_{3retSFYMC>Ks+D!M;I*-s0znhvVVEZ6!lqDop_1JYn zLCCd*lhnS;cEKd6PVMvf-8#;1*N!zs4?vRf_E+Z**pvLSDc_Yb9^E4IjImCd_DtfO z@PlnP<@%M%`omHY2F#yKupkrkE%W5umkNK!WBKIFt%PgX>hbGd%{5s#)$Dp$bPUav zgW1p3noA<v<L+Td`$P^K&m>y~W9iGUueg6DI(bc(W9@N$H$yI_V0-gf;Y^YqO@z#K zb5P9`x;TO8t^;w~`COW^L7NMHCMQ42W^hf&_aGjspDh!^Go-u=P*~V9TkxK;&iA^s zV18xpwdLrNoTS)LingdAM!Qy=;tCg6XQZXTA7p3W5SvF0#pl*G7(KGa1HP8Shg^Ak zs-qx>jGP$&%jC=`Kib$UN>_PEMzPqTWVIbzn6g2D0CH=(b4ky<Rm~Tn2)pYfh0O&Y z%iK9fkL0Jy)@Df?tDosre|iB>a6Vura4VV3RKn6+@gwn97E@M)?^N)t=Jy94?C~U^ z7T{&=a$>Z|Syi_bhy$dI(ygg)S<SPHKgXla#x(IkHgsU&jWE4ZM5fT$CqQ8Iz&Zj5 zu5OQ4eRI>r>8sqFdY57{V@d3}c@#8L@46Cu;g|^_keS~y-&4O>>VY>}t4Ai+rmkk( z{l(~okJg(n-O&Yyq3}q`4Dc>gb(7EG{yLZcJbzLH4$WxK3Uj~7b5R{jE`QOlHK+AJ zUi}zX?&K&escESkrDTO*uueEzm}X3=GpCIQ>bf%)NdfnrZ{+y}wDv4a;LV61?^@$J zJ*Z|gBZponom>zrH<EL!wZjmC;g}%=(-tuj&q8oU)2K|vU-)*6DmgPRQ1N({lgAF- z$F4FxWwxHXM7~*=_|lq1LL_qhyB&wr1UVV&Z{n@NV=AD!DbDFvB))LVyO93=maF>e z{M`11nN-_qYmJ;q9TwjCTAyulyH@YrNzweW{_8qHq_kXUmz$Ri)$%sX1u)TNrhuoC z`{YTeu8K7CJaH7E?_7JqMGaB!yVmtJGd;}8A#)em#aaFtp%z53_>NRycK;b0McViv z>z5WG5zfdkkt&DD>*?3^O4t*X6gZagJcE~s@U`!OQg}J=%gj`ifgD`^efG9!NCD%} z1HB}uZ8viJtSM$UV`ksSvKkM1)^x5em~J3L&Db&e%pY7w1p1Yan^{vmNa|dWy0M0V zwc?C~6<*h)+*X8!c^!sxRLAw0b7kFfE*q+gSPDKSJKkGmhdW3aRv{v$-RlFPTk7RO zH=gqY=3+DO5Wp#0pOdvPL1*SgCGm6=W`(Pz%5c@sRM4Sgv&&)G<(whPwQ=K{IkWFq z*&mv{Mc1jg(=ohqb%o<!3qeyy6Ebj!Ns;*874DyR#oD}Iu)4{oYo~_8Cxxa(g#!_` zC7~p}k6n=|lTa}tan+2cZ`KfHWH=U4h@gx<y)!14AwbL8>B^o|QAP(b*;qW?-zhZo zu^>V_e3l>2c*=|FWxvMfZs=W<nzE?oA!DF1I5fNo=x`Zc++#x`uA@Ed7{1wBGTYvG zlz_9ncPR^%&4ZQ0wi=)FM8;hHN{`oPeO{@azZKUIiD!TJwZ^7VW@l^p<mC*%r$dO% zOwVm+V?BeBA>_02Z?(xKhiQA&iX*6plq*6R%`%;v4b{^<^{Ze=SFMi7?@@So)xI8i zGrRY+d(RoxA{H`y?aDpZsiKJb5;*gYw<j&&s*9|_Yk4kq<+F~VmF7%x0u3^ld#{eo z1vp_snNw=eM(`=$5R}lRdF^F3<mri}k4YkuU1{Qyde3ypazBCq<*DAt>f3%F_&Oc0 z(L|_3UR6Uyz={6jr_K28nH%r=fC^Mot)v)JOvWv{7Z+i9FR)kdf4k@kosAirIT?lx z-?TAL^jTqjxW0QaxwECquV!OtdOK-u39G$Eh77;06G}IMs|By(ytZux6#zemx?^$6 zo2wPh793x~vXsTGuB25SaJam(5{okDAfmPFXhB=mUUOH><xjromLp}N7?_cxiT&>3 zmD}xe7|Geuyu{icePcGyL&ZYe@JoX|T5y%F{j2kXQ>*jq)#;i~H@;N<T`bI=j?uqW zzqWXbxPl(5Jjzjl07>nY+4>c1KVmwu597V`sR4r?^TNgM;LOm=-_9#N4GODWomMq3 z<AV+(A<1;zJDIQfh<7K@tM&~`ROq_4S$y^%{0`ad?V2c~EAlc)Z%gG(;&&?+5xaBl zQ<|NbCQS!anL%Pa>jA%?%o4xQE;;IiOmK>$svI~XzaIwbeHV{EvpB9xiw>22ETGxW zp<licaVi0syZg?21fflZ;0@bWb(U;1$7y2TtXc`mJAghItp0`a=@BHrU(})OXim)Y zd$Y7??Aqi=htCGJ>+CykZ|^s?#j~3Ck(&aS?wrAk+qAIK^G$5eW~Z!oQD!F%b<I{^ zv|Te+j|`btwm>BMwzp<a7i_#+0u9hSQLvY=tm$qPfea5ph-h^s3Z28d>&7e^MdsU+ z!W?VwYF7$ChhEb--}ZR?`#IFYS6d~EDG6l*RPU>%5BSZ;vu)kErg@%iI)n}sN9a;V z8-2o>X$M<hjjgTnlsUQtP{g_^IX~Bq2d*HUvZEB>I_#WjvMUq2gq9t<J7waJOB;Az zZ|{L2TYr}5==jd+3$v?Hkn$~9uYNDlDOSx0N&HwaUlRPXI`oU@*+pEIW2&@P3VMkk zuP#=z)1_@qU@&8szxvC<0^!M@&#7dAD6cg->diklo_}wwz{d%AvPH+7oBGXp@$;jl z;vsJsFmC@-%3BPjyjqdb|6|Gv`B2`z%Jn-N)1TMXssQ4DU3s;mKkwr2`}ylpG-RhO zFqL`nmxJQ(bAyuy)bxHoKvL{<46bu1L!$~Ws2tZ;5Cd?#`L^Ej^mApZDbA5oytks9 z@wZMxSOhmPVaria{;mDkro0sMHZ7OVs}zPx-tXCI5UJ4RkIKJuU;}tBoz6yu_6SBj zy9QL!9wYmF*2G~EY@(om)Dn@PrU<@`)fKo7N7QtLChWxpRbK8dw;g+>?TNVE@NE~H zpX8bJltrc9IcxisfI5cX=xe=~ayC*X#u~w+c#>PRZv_^MG|St_wR;!Ot6MGBXZG%N ziFvs-5r1cCP`)g!62_U*TI`6co+zJ<*6m$!K}BNWS{-FM9uRNgSc@5`=Y3i1$-w`d z0zc=Jh8l^Ys30gVidas#5vL#WSArU&^Ur#ieyz<qg^1PiT4uipNO89TbnEIC)s#Mo z^{Y2sr1AB3zWA!ALffBdXX!QaUI=5CNsK!<Q!wVk<uc8s8L-5mSKiLIt*_@uI8BR1 zJM)_rmC?-8Z+uUCzsDp{vL#}-oMW-<4?~d~UAj=6J#@b#Qy)VWW_KK;Ec*5MX^m09 zG<7<{)JsK0D6>an>!JD<Xl%zO9}A%!P>rSUHASUw>p7@`iL-7kgiYI5c{@g;uzk=u z!%n~Ig248!k_6UolgprkWlb<PH-cIdJ;n}$GjwZ)5tlfEZ?^NASP#Z&>U!`WSS3u4 z(U-}{`&=i7CohlCR6dt5z1LcOlyP7TPQTMtQnk9##dl$8<9Ji#?E>Caz6Utn>aCa= zBY~4Xea0Zw&dzjIS_k<R+Xo{=*ce9vJ%qnVX+ktfP0xway@YswM;aCKZy0r!Zz-Dg z^*CR$ln*#s4V6Zzq{c%1vgNqENi-<~`Und)kQCdZ^-Vfy3R_U_JUO7hwL+oC$&ePd zm>1~P&laXDoL!xJJ0?x(E@DleRl1q>^FUnhR?EGeV!*T|k{m9}kdL~)eF@V;%8(Z| z)LmraEdq{8VrRkCE?j}B0r><@9Ob&3xhhNlazHh^nv_A|9v2U$W0?I}FCI#8r=g+@ zd%1p)hXlpN7OfTaZf~0}GJzW_-c>s{Cc^M(%D}$pIHhq8Un`FYnP2bdT24?5s&G-7 zAtt-FxYsj#I*T>-2NhZ~o}!ZzRja9evN<X_ByuQ|C}-B1nHh1qTGsy%W$mobqNWN` zyP?f_h$AN3R3YyvsbO_o=$N409W{*i`5kCy)6@Va0Gi9Mdu;Y@8O6Mx<xZZ1weaSe z!X)xux6_tsPNTM44c)g;%hb$o6~=FpY(Lp8IBn?Nypo|T7Bh4B^n|E?-vStUmS@#7 zo%KoT%^M&%*<2K4oJ4wNtqb(U+pv+AmhF49e3FV|J8#TfX;Qf)OVJyt!6wps21!%S zzdL`~0EBz>rgea5o3D*R5{_xtyLr++>SUz$^}@TyS)KDo9*V*qD_5Qt6p)r@#+jT< zQWota7kOe`LArlw=UV|W$!i*we*6HYCK(@i1cEj6tptNE6gG`|ZHJip(rBoPuY5e6 zBHk4CMTIWJxTp&_FX@~RXG`i4J<&hbs(qDE*YG|pQKhOiyD_><J>xcP3bD+F5WL2o zT#cChGR7wAbE70{)N@6Y5WB|rc1&OV7E@o^=NSC<1Uzm%-S;YXC`YW1@SJ74Q+&Pm zvML6*V*_EZdEAXRpXF_Qu>_4F{(YqA(mfaPeQo5blI?b0KB;<qSp|?6LSPw_>da;0 zugds`eBPnjoeWV&r|$PY44|WMoB_mQ{pC4Vc7#>1eA2W6ETx_QTa$H@cZkNpVH2}= z!`U#&rOm4nMQQtj0H>&VIN#VmG6Z>$K#!k09a|v2YRJ5;07);7t`{OzS*3AD<;ow# zYoN1J5^<8_r3S(nbq93N)Pqg?+NvR6TXeZ1AYzlmi~*=-Cs8)~ZBziCN$cFeYhQ1P z<KI-&I$MXRL#tJo1ZCpMguT8JcAR(dgTt4|=%WSebmh5r49pxgo_^ga{`5j}L7(!z zWobkm6)bJK0QN4WqT!Jww5Vwze<xb68Nt0wa{t9+S8|N%>g;-oqyy_hX<buUcjq&E zAntI3Jt)^$);*4l?5FE|M2=Xt?)CFAM77UOQZrBVFVs7kk4Im}e$mQyc^)m-OnZ>) zqxRMY^?2EMy{yiI*}#w&TiSC2M>}W_kWdgzlQyjTk;?gXCRfXSKl>xLkXgFL!gEp# ziJde`n~{P7Uvt+xszpXYN1no{M1`nPy=^MrDzY<giuF=dt|Sc%A?BKzd?XL|KH#Vz za2gyo>d>@Svk-hF!N}e{wJauiL`(HGX&sx16@XvH(RYaI;@V~M(ripC<8pCc6{mx; zKB%QCNDGo>UpS^QuXqLW{nI!Oj%m#=(ml8LF3eVasiap4c+T4is~k}@R1XGF15dfH zGp{IYnAN}n`lJiX4hSN`NKZ1pOba8WULY%7ncLNnZ?=7VEpKVl@#Bz*^}YF9C#&BN z)u7Pyu1W5_$fQ#PudD@=G#W?(y+2<|2C`*~2mXr8X6`*0z0S1CEn%yyO0nE_%LJ}M zx%94+9^@LKqlfy$>sf1&RDVe1w({V0@>riu!5d66#x&Ox1a4Ue19EU~$8uN0NpWrc zx1&f?hybIZ3Ek4lhaS7Vw^V!~l{KK>voqm{o^LwqZh^(CdGETiZALhyK=$y5eE95K z23Mfq#^=zQthM$#h*F+LKz4niVV1?zcrbf^vB1-zp%#+4PCjlprW*KWf&9k3wVD=T z2y1To{B{5y`mwUdD2X7vI8lBmBV#s9z~K>Eea`Da2JM?AVG21mx>X^roR=Nn-ZF9l ztIW@VycG8=Y{NA=eBgu(E|iV!QJ(LT6W6AF!9b~zB0)j%L4)w}@W!$jzd)J5ci>A? z73dT5Ce*V(?OELiqoe%#{Z+n6%_-|Ndt2JsG83?FTG{qu??gLkOFN_GVl`NJuNA__ z@((B3kE|UNO)3@kKN>WpD^Z9_Ed?B-hBC>HhHsI$*h<^poV1Q8ZmC6Z*7#sK`*4s# z!E588&%n_dX&p(?SiEpz@lEE91r4>qa$%V<BQoGzrMKn*SMO<hv35(H%++RDA@Iii z3q8Q#%dnI4U|kq-RH%#o<#agKyLDM27OrmnE-Gt;A_`B>s4q1MAUJPf{SLO;AaC%4 zrE-H{H|L3RlJMRbEIfl0>sG-Py*#&GG^tA|Y;8-T&tp2cNQ<=Jm9_(XUL`ABL&Lf& zXwXASjqNPAL_)Y@m)>#gGKABwps~rqpw%+~Elv4RIw#5Kv;Z;d#nsJMnVU33cAH?V zHLi#&v=kpm%D18O%^d4}Io*rf6EJE(YP>vvzKctC9NWEt)6&fgzCeETwAS4&MxnIK z-1vgaMn}gdaKawf)@gv7Pjb3iFu{gaqjRaWF$5W(pd)!ro{dI85wMd8*D4!pT8max z?w*2EvG;gBSQom+UeK`0Ta<?2@8wf`$8K6@Zn9xK8N6fdWwLOQ>PIMY!WfpDw_Iw; zvv*66kunBVX|Ld-Li@CRfxO&>p^l0nna)<tt4bOBqxn(#J~UfJT~vBAgQV1T6pPz$ z#$efDSr@uz$k}6ZJ@u?S?^rij6Sc`JVcWFFIvFWv&szs$dRn_y^ukBFE4wmA9;upo zi8^-_)m7j7{E}X`|5*iu8S?@V(LNux-iNmxuGn17xyY0oo@dOfWoMmyxHi409$Txu zZ6mz`skGvbRB|qyYIkiog(zea@~DMd7*1K{y>jbbdM@Zt+mUS<LsQw=YqF@RHYmgU z7I&FuL5_&lP%Lk(DI}T@uFV+UIDV2j*0grVBW(EsuTDDR%3Wkwat7TW+TRpx`-t9_ z=CU#8APd@XHd3MY9BQGxF;;s#MWb1Z%scoh%sbHRUnT@e;|~?+)^ynpE$7a8co^NI zk3CELXVn&8be)MKMuX#3r*lI+eI=t%UQHmA(4us3t-7*<WK||SeQ9eN?@4~@*pz)r zWxZybso{3uQOEq<1*CqBOW>TZ1B>fas=rdh2Fj@Je&iFkcwfWSV!}nj(7K@OCa>uT zk*a_?MmJwe5#0c1`N?ASo-V;-N<JG@IP?VLXEO9|Xt9?~CYDrhD&ZLWtk+aYp!7bZ zYN5gKDO=bhJUYkZ4>XUe3&8BxSGkQdl-w{*1K~W8LrjJ=^Yg%0-n-Z=zo+H#BsHCh zntpqS<S;-Q;`250V?8}rY9u<yrjsUlnOGd}M{oBiOFHRgOqQyP!rW(voI0@Mpq@WB zy58)G1f`_!Sj09zc2X|<)IuOjCCgUo<IPcG{dAjH`XJSa<nB5@y3~@|KGU&&dv&-j zxnvQP+T+~ng_3xez14=PF*$Qc7kVP@WS^WUlf*#u7h8@`;x<bsF*R#0c}EyumMqOB z{lyWEZQg0&<1PNE5$fW5S#{sUJNC980K_}9xN7^IZTsxmvY?%LM-iWoNAPmHgqax$ z0JN<5NLqMQ`bv0A_bPcJ7ui8q3zz-N_J}6(Im2ls4zuY4SGBA{um~RKkbIncCWYa3 z?mhIc@bX5yeS>37117@7N8oIDXyY51HcT6;RzHi9CEE$U$Qo`<njoyec2RKRY<-a{ zvh3l;S(SJ)@FgFL<3<L$w6(t8%fgiZVMT|Oi(Vz0N__Qg`oNTzy4{{H`YV6_9+*X+ z1IhTgGwpk~xqtjsqYps7U%>~exc096f9(Fz=Nc)b*$+AFt=D}o-}wvfFFks|+9Z=i z26Ax*g=5(}cl~6v_MVLYKqxpR!SOj|{we7n&;6a&|9AvGCxGFkal~)5sek=xt1<u* zelIlpi8UN+kph2nK<Dmn6qSyOpEEwO{N&}1qBOOcm$|rJzCdL<swKtwx5mkrtDPT> z|ME%8n^-mi#3HM)Ly_Q;{cXVc(UQey_PcSV;YvOF&E^2jliEuh-*3-R7F<BP7&rI7 zt);*JKpLn04QpI$4pDPdfqI9bJEP34@9$|f0Pl&9Qe*w)N4b05czBiBlQ!RUgMAm2 zoJZyiw)_@fF6I03T<+VRFvGVIow0fvRazC@(P_nPL$}TJFr_I<dJQ{)&c%R}it4zg zG%Mzm|7bDGiJwO#sg_%Rz1#a<yu=IV*0K%m`_W2j^=?(Ltm>EgvM}NqDrnyemHOl? z5CJuT`fKEWJmOR)QM{Z9pH)t{GP><PPH8uuPHzb6?wALcMAob>=-0mqVHB6hRS01e zb_TWULFUmfMWFa|hX7Q)a2Dp<^UFBR&q2FhMftiJvd%hYqY|@5#KCggu1mO_quDMt zEX+OC6nPyZSE<-Bw@%u83V!*NZf)xqtbo(?UKrm_Ev#Y>Trl1-%(7HO7~&=rkY`r~ z9l-_%KgFbo5-ddkHLPp<%l&m_J|*t!NxkZX7vo>sU!-XCf57?7L)Ff6m)mLpO)ckk zUp|^_x*903aoFBmz{vEzMDLAu>gRCoS|FkemYT~nySGu5TWS!}uuYuUnW@^vKOU<g zXYo1Lnl=5L`=y86moX4HLp*@Up&IO`3Jk=gMU)gry8_u})aY^1>@AUy7Yu_l%%@>% z#dV`hfWe=SJZToUQJy8xd%4yVyUdy5^2Edbbb?SbI2SF|yjMQ**B6<qG0(fti1(F* zSBX=JPs;FLa8M_tMD&K%hB8ND8|k67s1J$e*l$(+V=e#4*glJ12L<txxS7$iDAD?< zSMo`3*pGvHPf{s_Fbp;w-JT1gLXh|6Psj54z9XjtOtWYjgYR6j`>CPB>O&PvXdce= zqZ=D5b5+uRY=TO=RC($n*h_N28GZp+$n`t0(^Pk(HS9&l0OH`|+Mn3$E#4b?Uh!xM z-jaC)JEFA-(Sw-)Kbz24UQLT0UGg9*TcI!_eJ-GSnQj~oOQqkM<sUTxJUIMljonke zs;Siv5-C44-jx?<{APg&l(-yKl2MBtiG4|W7zzM3(GB(A?C8Xbgm2J$RrF*}yZdwm zsOKrqQB$O#rkF2TJ+mGtswdp`wO*0j^418Z-xX*WaJ}h&rixRSNyArM&O3~Q(s599 zvAu>+<?id&Pc8*?uL(H@lma<{@Qwuxag->1CT9C1Vfq|d;75J47S&NJRA_KeUf7i8 zHXqad2w$qZIm!$d)K%Wtth6WgW#qq*m^9f<#?~ELvg&=Xn0GrL#m~P`Yvk!2quzKn z`7V+*dFRN0Ck$w&>%FG>8Y)0;#$3kcBR&S@+BSeP-V(%ZwkP0V_47-)CdZr~+dG(K zc~Ocv&!o9vcglByeq4d598ZI|Xni*j=G+&*1tg8^F#X`Q+55e-IML!jReI(Vub&-Q znX6$Il_085S_lS#O!IDo1iHSpbYB4MNmCaCEJewxzcjZa*6K?T;!!XTH1|G?2IP8z z7hW@*0G-{wB&cf>IL*%M4K0u$LGJbQ3GBHxx08%l&$5NccIF&Hc;zDnDCOLpZ|zUL zP?_cz23u`1cWCA{%}}LxRIj4g|5i>wXWMxjl=Rm;x%^Dn)aPr<89$jw9}`8n&fsoH zHIY)9_zb6rG~B0o7H~p%=)6~Ktg=4Y`GUGw?T&SzAQvTj+dFGdl1z)L|H|KIaV$R! z+Xc!(O450KgxVL&p)I0bV~9_Xo~{ltc7K1!VxGYg7Pu}5GQLknB}b55eB&xhC<#f7 z2S}cvp8Tdlg(3s9doHgQx%k}u-pG!`HR=P8mkWfruS<uJXDO|ARNAAKwk=Mqhl8yT z<nlR2r$xq3|FW)BR`wTMzG_nyKoWlrksQQa2mv5IT&D>wTIR)(u<DpzF4SC~wAfrk z^VX$p)y`|uN4-l?N6lUo=cpSsgLU5Pj>=qWtw6~)yr=pT0hy!U#%5~mYZ_t-Jy-;D zCU{hjm4(`h8jT3sWx<zt>WDjx4P`RrLX52QcjKZ0ZYU^AtUMdTK9{Ajz!t2Ps(wXo z5UkZ$&)hCNk>M7dto&?;ldo{Bs4Jzvg{7}cZ8K_k$gWhANz=EC?c*>|q)LR5ipAR8 z4XDMf&n6D#S+=W@Rm~@r3g`(+b`$iZ-iBJ|uj(<E^0r8}rSv<iC_w63ds<_PG4`px zWfcXA79F*u-tx7}lCKnbQr;z(O`)~?+42MHc{($DSKkWDcjyqcYoLmllsgdjWQavq z?P;_Gusjv19<g`oO$Uxl1V7m}3ioyCUgy=9Tp6pd9Ud19^Oc_kSnC#z6xOZ3#m~+V zR<%~DCF)AYM}ce~cQdbrIU@}G!{2z#q9l*^E3#d9v;6wK;?A5ZZ$fbJwvWlT)Nc~~ zUA6ac8>K@v+9t0_D0TJ+ryC-)@=Nr49Jws@codmvvT$4hR~SPUTA#%DU?R)r`sH4y zeyjGzP>Euj1j-4V63>BXJcR1%mD&qjoYcuGOvwqm1@@>cM0bf&%$JN%PqI=$!x++A z6dqIC+QFHr0fzZY3q*PU=T%D=<Q9cTNB^KIn7pjx_o*C^7Uk<NE-11+RbvmyROysc z4|+%vui=g;ShCDMpVTdAq(CP{p^U|p!5%gbLWIUvh(M+LRP8%o?k8^lePeec388t! zFIB+hBp|;a^=Mn5Hb<Z!!>A!z8|)Gt37fm`8u*sf7c8QKBq(mbrSDYgyIQb0Q;B#+ zj~KfhrY~yq>Dg^m#a6%3X7VT7zz5lQbL%Jzj||X4QI>fSmJOfJZxS`w4|{>&MuH@O zXrwVhs^*fEr2)~gSt>iPid&0QEB=v1hMb&DBhOk({bcHtvM5bLc3?S_r!viHob!Nt z%=tl!aJQ3RSx!?0vI`46=j|`_qR6rE;1y>o{G_S@mOh7;ivvkUcYTcu)pv4+JS3Dl zG4X33lKCjVfP)Ei@=hB-i=Y^$KE!2VvtZ7<Rxs<>Enl52p$C^v>USLxdgnTk7X>pI z(fJE$Vc^a+`f9AsLL1Wnco>`Nax8sfW|$|{d_9xGnvvV-a5m%8RcQx#b(KN>g(hHG zT6{)xUutD>>tZ4q_XL}{25OCyvhIb;d_~WBIX3R)<V*z$HH#rmZ<-6?{{6xcfwGyI z32NM$S93#ieN2v>lc0^Oqhvfo?JGQ9lkFFTy+<e{4K6Q#gwJP{t<J5KdN-Fps!+kO z2=Q%RLcDyn1&2$&1b;Lfsa%e|{&_1L1(WraTkJ_CaCCl;4s+Q8jmuYTA}pits*U_g zJb;b2ZXS+FTN>vdokRzZ@unb_QHB+-pR5c|!`--MJsseTLRK@%`f^UsiI6C`S2b@~ zm6rmo(#b#F<f5}v<l|xkFBe{kRAedzhA(wby0))7>A$$fcJWR7=E|Jpz}(QHm@%7` z4L4tns~BhMWdCs#8K!9#bTQ{f4V^w9LUW<>CJWj9XhB$pAeWKk3z%ZP!YW^;hq;Z1 z0C*a-9zD{~=gLcGC*M(&qskD=F*5XKS@@HV8();;o4EmKjsqsdqljFF^*uG!V^YQq zhb)|f5m=>^OP6!ix2qmL-PR*3*Lq((#bYqG6FAZWA4$|0^YvXKSZuJ8od@Xhi?7(^ zF|lI^jr^vK@m=p;c)sTl>Wi}FSUZd7)rB@s$_o}a|M-&K5;wQ*BkEp<hSN6m?o0X8 z7LKK@u=nO7!^nKIMn%|Kv(HYqdk$4-ONSLJlowUOa;7YC>g$g45o67{g$jE5H{_GB zF1Ls8)5zu-`!#SbG|SR`^jSV6s&Rf8#AIGqxwVrOJYpIBsg=uH%CZ{Nq;BH+JTnNf z7w$Vi#hcB$wq;A@pIy8#)S@YPt(6i_OUMCe>t%m3z_>0~xXQZQIuOUTkF26g0okje zkCR%z*J#}iRJJsj^$BNT;dh$puA}wNtV+z(o2|FMtmK7clm6#`=1O7WGvzPSNyFLy zxHgpoR-<f%m&Uk=EPkbJ=~ct2*%zr@Bzojh>x<P>a<8d2*=t~4yx$2M{9A=i8x}`M zHeXh?_KNdDnEqJVCQnOhyCd1Pg3E)8bQNVT1LB3J3^T|+@LEPU0&qvITpRtMp|rw! z6_MXXR-Hn6d?V+wqyhDfWJd2)XRkZnWVaI3K4AGp6?=q0^~rZzQgYV|H5=w^7<}Vm z3-Z-;logD>My^_)?9Q@MizcGTbLMJLhvrn0(>>SSkG+GE-=17^!p-RpRWs;ao`eK) z3!s`G-8_`{u&`{PYLq$#gR4nZs$My~lxw6{YbY&}k7~CbBfYg@M+g|b3|I%;O@N&c zU#7WE2ec3k8F|@RZt5?VcdR}=o%pC3T8H*vdD9pkgYt-g2GfS3mm%fmU@ghs<S#m< zF<HE3Bv~9DH+G~-J?7Y7x`vhIT1RWbF9;B(Lg~)yuRh-V_l2x9T**bOzKG^8DT%+^ z{u1f)xP3RJhQNGZDjME!4oxG!LIrCn+-a_{!wnrlLM)4zzyljf%h*0jj@(Ca>p;k` z8Tt*Gr0i5NCh*>Sw-KfqUuM<k43RC!Sw>oH2djlHeNuMvB_xAnCgg>LGuZFW7IWt^ zLlhFO`zje8N3w-Z@v+>0#pE>UTSF&z`Zxv!G~Y<=^m(9XUc_lO%KDR)x&DFx!NWxl zi*dGPr}%u8yO9VK8ytVIBc7#rYEcn!6`ls*BDQAy@P<mRlFV+8=P;MY;^WKf_^)(G zrnruIj*$x?HwKk4scjoI*G~xZhKZlQq=|lw_Z-_ymaG^LRFoI4uK#qXaAX>gI#|#F zeR*)P6qLq9n693L=;<-+`i!9_lf-a2hMds@9!`)QyZ8pD^sKb=;4y3ax@v@BoRYgz zkEi$62cU$11zU5mQVa(cV)s9VS$thWOXehta+!>lIVIc2VGCI00kB;8bYs<-4YlpQ z97;27Yg<GdS}d2$E#$vWcvJn>*?^-=ylZ=-+`$g8jFfP%GF{JjnM0%!bHYw%is5Op zsc1OPD(T>rLfsm^S1sOuz&l>pRkjP=j!x^k!JEJ`J4UJd(t~O~nPO<x8@)*!8XI$7 zpH7^$tKDIAy*A-ayJFvqG<zx~L#y)H{ZD8~vzI&8y3R@irH>@GE#K=~J*SpMAF-#2 zS?V2%`JGjsip^nW+7icJZgVm^K0UmV&lKj4@2jMekc^4%VXCH*R8I!4?rJ2H=te6y zdR60yMC!dLjbNUSm-^r4Tnr0%@*_3;2RQV1Xd%TZb&Rdoc+WTg1+qZ60QWP%*q~VA z%=w+l;^!wl07v<?Bfz}mUvK?^Cj59V^$kdQ{-3xUDKlC(yYV}5Xx=f)TYtJ6`Y!`3 zpG<ohrC+cTsni?(sQRJVK-%vZ5(K9F4+?Op$nQNq&)-h`Qcf5+&Ma9XM_=LGMVig~ zQ>@WV56;JW+N-||rLiQ1&G1f2s-NcdW{IJ#SGQby0~cR%H@B7)F6NFnF9xA4c7bda zry@J-JeLK-4b_Qe6o2^P<0*xNkgYxrxw^d{oAZ{mJm@VrV@E3WeR1fh%4rd*8@&Av zg_j(R2s==D1S#jk;_8z^BJu5*nZi70m;}Ym!>7bPPWK3Lt2a-~ZVSzU6Hs}I+di-C zLV;4NFK$I-UF=pYA91*9>FeelL>*GIc=dtxotZ=|4eCW`uJ=NwS2YUTyZ($6u=mIl z@hC^<#2>mJDKnZJ-IGi*Fa9}kzR#%CI|p;3ymta5H(Q+vLmwdF70@Mzl=8U#NkXZT zJ;GGoU#Pb+M{}^#Sy2I^Q5?<F?%)NEUHX+XGAwS-fm$4*v~0O=X7~kkLo)e(`+=Dy z?gk`bc+ShWJ>byBVpE2GCEy~u`WmeTbXXHhW>XVb20y|t1A#KWFUFU+0(8?VfX2cp z0-3?xmnMGCsI_}p)(x)OWI`B3L;uhv!1S-U|2hhiM(lJ4-}~f1C9(Brj4+(v*oT65 z_`*xw<W*&yel!pBS2zQ}Ts1LS#=X`FQtzlcOXV0fjX@3QPo>7_(U?ljeQbvnEEr$r z5<9-3F+j5pxf=SwUq3AIa7JLae3u_*pLqTFjJz2S=K|2Is;aP}Ovzae#sfz?G^i7> z=z!EXtKs}%n;aydy?hO1tG2JW!73}wK&ixe>_orviYn{1*N*{jzFzwxd#>7;_iX=5 zbq#n~hV=G^l9rx+Qvr0If~Hh``K*^BC!g%DWpTeS{gE+$sRo?UsSWDPoge@Id*{(m z@poUMpVuszy?lCfPRD_q#_OP*rVWt7g?;RFpfny>u~oLgx!S@wM3FeZr~J=I88+<L zxM|L*#w$?V<OI1EIVdx_>|R7AiB@64qOj)8mj~&-q{KwmY2GP)5-ID?X<2xfOh%CL z9X5RuaEM$%`qjnvV^#Sp@BnIq!ls4gFO7pYwf}QQ8qozimVo6-2CY=?OK}-AiXNs} zi+U^xC{wG_M=_FODM0=bYnD>+=><!Kvn_z4vOg6ELRm8*i$cfZ#$z)01xes!^nDYJ z0^%p`o}NtJUj~NNA1Il}@`d#{&O)_vo6#-#S8+T8smct|on#;pbwkaCT6KxR%AKa$ zEgCA5BJuE%GMOYE%aCJ~rJ2<dz)DF|BJ>BLKRh20{C~gBKa(clZ(3j3TBw?a2)Uw) zFEYERUdjtANK=|9GdNuzk|{K-IAgj0A)mqeP~ObO`w*(ft7Ujuv7#aujE8T1=}MSg z<m=F~t9|T*dZJHW)1Ug{)NUx*?-o;F+|zB>51PNdw*n8W5-GLgWcH=H;D+iW7?V=V z&Q5SikT$gsN8esG)Gu^M%M<`*<^*bma@nBWMGOnm5eGnUc+)ghY)=xa(IX33aJ2^5 zM#UeS!T=l`HLG!A#9x4a|7T>NOIME!mm<g@xWX4k-n_%tj&4Www-z;i_&69=1(B{$ z>fa{uxm0W3ydMh%Vmu7*BgaM^&@>R4aNFm(w%NluleNR|w%jK_^}S0}+>Iu^(0{Z~ zAJIJx@~IJEb&>2N{pE)x5Gy&<!;GATQB!u$p_j@{`K;38Q3{0>zII)Sg-l3LC|Xv_ zLhv1^^FMPd#Xpo)wb;l7SnyOJi5`uCJ1s-y!iIHv?au-!)!}8FWD8fLi8N`9D4@)7 z+B=9sOO<{&`JzK)kDR(yjPUGeeF0&pU?b;<p6M5$Oyja$F!*6{EcFm-4r{`4gmy3I zGZjl=@!E=vLygy<FoJsNbjmDbov9Bv5mXGE_P{g(39zcV{*v(YfPEDAfY+hI#IT3! z@PjVor$fygB<NiAVe#cg8X_R3W0>p<LtAZuRw{d6aJxP?(uc7y?Q;M&D|0qaZK~op zyH=KM418Lz!pbt(tI-T--+Tl=L@A3;c36%tQwiHGN&~QxQZDKSebEorsTBM1oN|r` zZh3u+1OG~BRHn#Wd^cl;w{fA|gnd$j6c-FiN9wj(YfkcJ8kP$U5W9gs(wgO2r^Tb& zSph>t(R&01MF(2@rV)2#j;!|ycsb9v9cHNW-yN;Ll>23|82seqV!{RTwt-Jhw5t3d zSCG(uvZ0GVWZ=22sHARS$qY1URu+X}x6#-l$lwo(e!?k%*;Wjt@?+R9SguqI-E)w$ zLz(M*c4z`I*xV3UUTz(vPP4GO0NJE~4~WqOkdK*nap|uu8n{EGfWR=3^kn(bM~wY| zdpS2+)?;MtsgWStbL_{qassRcw<EuvmfaM$!ID-&PDNn-Im0hm81HIiU->TW^pko? z3t))f?uCDEO;x-gEUZXjDcd9R{zrJ1+6|E{O2cA<_G*d#4m87u!Sy+AuB$?AXZI|U zpa12CG_e0KU5=CiAX%`yr&_2Z1^z@ija0#Tdq+S;b$_}2n5t^tHSr(!%^A};5f@v1 z*~9sQ=1BtsA22Mf9SNd)-xnT53KF=Fb=8Xm$YSX0-R)e#AJgP~5%2M6U*AtKU`!!5 zc&3~dDkPHmN@?u%_VC~4O=XqM2wK4acV9DK?T4E`ikT|h{t%=dDuF!+EP(3NVw&Df zK{Da3f~sHav#;`8^qJSh<8ym3Kwr{6D6I0mL8*TpZxKWi1{7k~(W<08;Txf4^+U-w zT3^A`4gdWE`=8zaW6|<j)6=|e8dszExY@L1*IIfN37H`)Y`P$Ej|&ZxU}d*-x#NCZ zVYvABnrVghZWBaHgldi$T!qmb%*7(Aj_IrM2l8GUwKQu*;6o*OdQTz#?s+g@FY`N^ z^L=~&f>8C2zYa^+Q2EBYJj74;Yk<M`$f`(kzXx%Ce6eFT`nf{h;7+CY!+H*o*=)Pz zoci~UQw4bS8pvtgF8vbsrT!;IGT0y0ct7ir%Cvmdi~}cR4r(m3%6>YF{bcg*8~+~u z>-d9m7}u&8$IoEfznh|{$kmdp>bHe<=sjRH6rTn6z*9i;n{x7BVbn`#Yu5uI`Onq! z>$37MfJ#dgJP&`_j(+B90HC)7*-W%n_}tG6{PPn2`Dv^?V3HQUQAqoHSNP?TiXN!t zzoh-*@#`S`b%8BU!1^vIQseyB82`OTK#!uez-<2S@cesF{`%4XJ3RlLJ-=C?&<gwS z;`+bXdy0Jb=Uv?ytKDYnF#Ndz`j1fO7~vWz;FddR+lRh4G>-ji#Bah=^~(M*2*Iv& zH~1y~y$@<?q<T#Fiu4zLvqeGCs~2xB>;JINX<P*yDvc^RrNE!x`>${L9wN0I0efoI zLShd4fBqm%C9q${czzLN`1SpN###O&#{iDR)bUvFKc53CQ_w;8-^=;?_x$Ih|BlZ8 z?%b&~k(1j8Tyf-YNNfCc?(d2B|4*m&&hF}b>cM^c{QQh}`yEFH4is>Z?mu{pRmyK4 z$v+<m?oVV0Ny<F8_xV5n(v?){S<MI9^Z()HBP1NMrW{;{e*IkNnZ_hP>Pb7thyUSa zsq2l8y9VSH{&_k7_@Mh7pWjx#FfjQKFLxfhe@D<IGV<TI^Vj=F4qdr~Kd=4#KfL_^ c?QI{(jHo^5Qo3Zk5B!stQM!S=W*qRp0FiCQxc~qF literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-attribute-mapping.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-attribute-mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..ebbb8e21a1c25c1621687ede09fd9e89d212e85a GIT binary patch literal 741820 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 Zm~?s0@R{Gb6@Y$SGBr0THFA3Ve*mM+9?1Xz literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-condition-update.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-condition-update.png new file mode 100644 index 0000000000000000000000000000000000000000..7fac298ed3daa4077fa4b9eaa4dad2f8a1ed8d26 GIT binary patch literal 331274 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%0DS+ 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%0D_`#0q;&da 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%0DH5i8k>6jF(6SxSn}-L!vB{K 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%0Dhu*_IJof-B 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 IKF?qN2fw@j7ytkO literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-editing-relationship.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-editing-relationship.png new file mode 100644 index 0000000000000000000000000000000000000000..33c18f0722081467b592a1b8e3372ebc02349f8c GIT binary patch literal 393932 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-setting-relationship.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-etl-setting-relationship.png new file mode 100644 index 0000000000000000000000000000000000000000..16b6e5c765c2faa46b7ff221daeea3d03c1d14a8 GIT binary patch literal 368626 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 G$-e=8d>mE) literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-import-set.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-import-set.png new file mode 100644 index 0000000000000000000000000000000000000000..745a6d302c8018a78a73a3bde34f25cc055435b7 GIT binary patch literal 376904 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%0A`u171?CnoMn&3pXDD;Og+jt= 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-scheduled-import.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-scheduled-import.png new file mode 100644 index 0000000000000000000000000000000000000000..c7aa394cbe1de96c2fa93720c160faebcf782ac5 GIT binary patch literal 507242 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%0D7i6uSB>zqpCBGS)+I$U0F?~%l^c3m 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 JmdTsG`5&d&V95Xg literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-state-object-url.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-state-object-url.png new file mode 100644 index 0000000000000000000000000000000000000000..b687b2a90fa5bffdbb719857dd5a6bbb07e32372 GIT binary patch literal 281619 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%0D_{tNQ4iSk;N|=ekiK`W&8_-_HNgnA zv^YF$$ep_e+w{g`I`%u&26xAIHjD*<pbSqEL_0TW3d#b<`Zj=9ide49YuXM&q1L}d z$XX&qS*_S=x!D)pg^so-i%M!iW7WM~nCyi0h5*~KsUk{mI?WDiSL+%|L2}b-MLl3x zcdWJ8@<(9V*k)<ce?}Ws#Hq+9(X$;-;ItZW!2{a)e0L*o)D<ukhcHMj>Q)tth(o0n zS*oBhAU=G(iPooz+)j7*US2NON=bi~Y4Os2UQ=q)omp?;p314V1&OuOvDJ>{aum4T zZOx)dKI|1Z2~Qpv_RrHpOS5lSFyLcMP<Bu@9oDRkYJe<%45i?Pz_F--GmY!2C3!T{ z4fTAN5ef)r+t0nPRqWO{l9hmsTY9j>Ke@>UiY{NTz1G)N?BCdc$V1lQr!gSwicuN! z1G8cVYm|vm<%B(Gdd8Uxuq@f<jq14)XDkm0$mla`fIqSa@Ci>yfbe=<7=Z5lwyUVZ zLme-}X0bY3TB3j5J9AYfgd_(OawhlPPuX4hM63AfT-PVCsp)TN&utPd4sCe(_8Y$X ztt#!@Wj#!%0?(_%;F-Mr<)f+KDotej*O&DMVfASZ2N-pyPkCJ^&=<_{zonW4fRT=> zr!@yo>R`&7Ybmd8=e!%}vwfnpauCxIXs^V&;ccHbn>5H9??QkT<omqbUbR)qjiG|N z5^(lTUzX$&AYM)tsERfX%91&I%~WsU>D=ej`wM;16#;4ophfc|&nwCsZ1dC5=Vb+H z`#y)?OUWN0n>vj}EvQ80^17PjtGG@V-T+#96V}`8EXVEc4UO-27HApY-`4Cah^_5B z8SPU_euL-aG>J?<7Y6J=3Pg{)GLQn>-%<THtL5{?K~({x)uI&M0*j0kFeZ!&=;f1% z54?^T*YAkV{`Cw2Cci5H0_L|*KUjFNsl-XZ#~Z&P_gDqJ?WXOdPDK$nmL+(f28~1k zJ{;Tqa(}fxe{s>Dn0W?UC<rxi{-ch%gV41_g;18BOA{5mvs5u_6Q@(_-6sl|G>H}l zOy143coNOm06TQzW%s%ilvB_9>}(i1n}3{_AgS{Y_lRzBKU}cv^u=jyirAX~c@Q8z zIe3_lo0kD{$4Mvt5Y2S}aNCF{g)*!z9I^eUjwHt0qNSJDBx$sE=;Y3fX)l>AA#uLv zg^Wwgh*FPHBGNn7M3sX6neMBviww6BFX!d#$PRZq^0m{9Kg*QWVF>4at0+J2!Ywb1 w%76WT1N2kRX09fv)u&mpv)37cY2ob<c(l1NeB@vufd9F2$>L(AiSyn60Sj(vJpcdz literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-tags.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-tags.png new file mode 100644 index 0000000000000000000000000000000000000000..c5db95a3e3faaacdecbf641b04dd81702da1750b GIT binary patch literal 594043 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%0A6`EFbrA0Ibd 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%0AjzV?@O<M=wJ5M_>pM!g9iRcybl=qEFUJg5IccPx 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%0AZ=FM%h*MZoe`6 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%0D=g=rt~}5Rrt=3VPh8O+n;N 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 QApPCDqkX$r9Txom0OL>xx&QzG literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-team-token-gen.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-team-token-gen.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2de6f2b7b099e265673c420a8f514f6b9ebbcb GIT binary patch literal 307529 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%0AMt`(~Md3NsIYGxNgFz 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%0D+o?*tc+oO{DQhnv)T9x(1y@8($FUnTl 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%0Ah8|i-AS8J? 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 F{|CuI1Tz2t literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-tfconn.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-tfconn.png new file mode 100644 index 0000000000000000000000000000000000000000..34e8d9aef9b053a865fe30e4525c857f2d875127 GIT binary patch literal 282371 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-schedule.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-schedule.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e4701c716f043f9ad437e454bbc1206d20d89d GIT binary patch literal 214156 zcmdSBWmufcwl3N@!6m^p5F8q(ara=s-GjS31ef3%9D+LpcXti$-nhG7=3H~_J?Fan zKKGn+f8FlqdrIG`QKQCJ^_Fyp%FBu)Bj6zb003l336U=V0Q{R5A_yM#%{iUbr+5qK zm<bEZO9~5<$lKd|HM2AZ0H|UN_4EuR>8J+u_4V`yMro-L>|MTughYJN^BL>t>lo}9 zCK)8jOxDs`$3a_%QtATaDs<LcAVrWoR5J|Fb?UW$Zyu-NPK#RmL8|IG@lKH!VO>g+ zUKV!B$5)NEF{?1Z&rbnr0EG%j4XC2^wT$_gmFs&%gvL$Sr2{aa6r9)WFc<ok=68fC zP$yt7W`Gdw1vM}$DTE;>ZUEkmrx0EN*z?Mn>zFb|??M^i2I;|)!8*WV!z#i`!$RrJ z>#15msvM3)kIQ$+56bsM4@QqgcglBVb*#g`r`8+Lmw>6}#l66Z#l6CD^tB|*G804U z%VHEm<ql9Al7@vfB!q>fFb+`52S9a~OJ#AGkoK^iFf+o7vM?S|Q%TTC1q4%VaU^cC z8j`_l=Dfq{X?uNbFErL$hk4jun|porv3-4g_27eo;+}|Htp!NG=$tE?`ry7PJkeN9 z@~eytfac8)4}gKd06_iG8*g6#1Ren9Pd@-41%dxx{x1+zf8~J$0D{c`(0}F8cys^w zNW497=)YX3*dPGhTL|Or3CM!{cW!t<7SzA}5J7Kg06|4zNy#@?(a_%5*xJF=#_?3Z zJ?Smtovnnr0|0=C`NsnR_>qPK06@-~DXBTC$$aKAw6S8)H?lD>W^lE#{i7TJk1N-k z*UH#YpTyP5(%ON`mG|SHIk?{Ze?$X6lKh#)(SrA*nv6V&u#LSj2|EKL1LH?N1QHSw z9($v&Twg@Q{(`@Sct4stI@)ppfi5mC3@$7THufe!CQeRHAR{x7nVJ4A2fc%vwWGc( zy|n|`zY6(xIU>dmhW2K*j%GI2B!85vZ(!r($oui*9~J%A=U;LfyPExXP1X*7HS4W` zz&}!eObm>`{|V-3_Vxb(_D9OUV1KsjU)AyaQ5cuJnX9p-x`>(8o2uVL<744u<oUCj z|69s`3;H*t+J7UN8CgMphyE?;KcUJF#`eNCR&RAW^8I%={{{Yg;@^OOw1Ml3v4f4J z(;qriwl;I*W99+=PtpI0QvYulAIHBje~<i6fZG2A_<Q7k0_5z?-rA!7hhTh6e+l*X zxWDrA0RQOuzgfb+%<RwDH#_4)-~s-Z&GI2MEhy~+00IC>5kVzah$AmJU*+EGmxWai zprx++=@;lcDjA60)tu12Wb@DW_)EY(a`PN&Jn5sbFr4NP7=`!LQ-W%Vb#!!<t+zL? zZ4QmiHpI=-Fjy&m^{1_myJPA1Uw22$9QuscI}}Fq^76ju=ulf*mm9<ic97_yF~Z|O zBSFGK`1}4Z2Th0|`!;=cuTzSu{+BWTr~pN<0|X#|3~l^Bsvg#l1r=foVEg|~fZE1J z^|Lkd|BYt<qX}br&|2DBTF|dD%>Vle{IjHWB(V+x2wPZ}jH0IhGc{U5FOQ-F*x&E2 z{4e$6qHxC)8HcnYW>h?z$xvNzOyk$L-cMVAS3|GS?wLu5sgc<`Vrk}(IYx#w;eb5Z zh4-!T03^@i|G(RZU#_5Ukk4D6uu7!xytS?)B?MsgQjW*5g!4My^TOi9{-z`ibX#nu z)gNWH$#VZtB@*NsCG?LUKYo^%3ra~JPL!Ir47JORvRE<wQ?noj=x@EhyEUJnczRb> zMvpFdAcMAxEX?u9Sy?55PzY)4?5Z}wV3&aAk@0_NSRNV=4^L0e<pT$Yst5+>)$MQR zz#H%Bg8Y096oP>Sr^8vvuU}F2GLmL*mF7wyQ0bI><*D21A;LR2K~xhKg1H|WByd*s zuUH2ERB$vF2n_*BB1y<s|7&3-1KqNhMC-S2O`#PP1@6m47rFm5=XE+UUxcB91FoV% zs-&zeG)akwq={&>cSuOza;8*UT3WL9oH)W(Yg{9e^Z%w|+Z$3n&Y)RoD=Xx?9t3J? z>V%dj&xI;pe7y!~iI93%R~(|M)))nOdD>jD>li+-htQI6xFdP%^?I|69Q2`o8MN(t zcweoCj#YGATn1%jW!otrKYh@3_uMqh4VLO2dY931gPpDOQ2aRGqe@PWC#sJo<?~{Q zJ%XhnKhnMb3h&SM)Zm{@jnbthsR2z52tw}NIbg_xB|78*&FN+G#~*mc;)ec~rlm=2 z$k&NAfQ!JbomojImfk;xl0QZV+`{l1T+^EPq&b7C^B8Gh>lcjdhOZ%Itsb}1-rm_q z3vvFp80R-PdpY!sGyiyjY|YUtg=3}~GNaKL^!2kD?;gXOgA4BNA41#P+fS4(Zt|gg zgSi0F;4k9t;+bliQTwjnWvbGTj$OdJoH{N~mTQM;YcFHqUrB4;d_IQN?V4*EuUu<O z55pV$wJy3Ib7|65m-DAj>6s}gb6EXPDkrnfOSenLXDdwY&&}WcE^Wr<mWFNkYg$`w z*tny#y**AxwvyNG)t^?{qB05Nww(IMor#+1yj{G5o?BZV2~J%`Omyql2z|D|kwf+^ zCwD13j#n%9O%AKM_vyFuPL6Hut*0%s3Y(Y71WRwiwsZQN?)~susiM<y_#Aoc@HE16 z<3Mn^l(|Iv``r6cM_lX3<NhRh?))K!ul`SghyPRHrvKjy%so&s(`_Te7(G2RBhBXQ z^6>C*NDBg~eNl{^#?7j%l#r4hn#lOdCKV&cD*3+VWW|u2ni{6B(mJ-)BXj#`g)$*w zX0LpgU2$&R_|F-PODL<VNIku@F9V;%%`LE6e}(=0{QQXOk-FWQo{3@ec<a-~MrUl= zl+4?RuyGep+t}C`qGoIVd0)$1uX;``FhUcA*Y}da_&~Yw0jgCrwz+_O3IYJs1wqVn zKRa~>Fy|szEb-yIx@;xP$WuOU0HR^UeUVxcH#t5MgkU54-7tqnQQ-bz{t%EStTZK4 zmvp8_Dbpf1lA^s3xQu$GPiMg#L-SR+q=l@5LkT71WQM7pSCit^UXPl#013{xAI1mf zf1ixkf07D(qW}I#N}3%T8%x9Manob%BezgXix?T_=DPN7$NF7-Lc;vLazV?CWJv_| z{6FV_ENM~!N(EwFVkdZHzYTt7<}a~visbC<D)#pFMoV>{7aAQXo$FNn<XFFAG+%~= z4_9H{Xjy(iNYLiKkr33c!s~4r$tTDEcxnA66aft6&k`Q{z(Hhjz{K6@&WaNO;D};E zosPd<g2V6u?oOiJ``HN2R97$SRx<SCya>-(Sg;V;;*9oJ_s2m;8=w9C4VduOTC4@y zFPQDzxR;)2A4opPLYldTVt@RQl@{@!ai7&B^uvO7M?leEX`P6#|E_kS)pGT1B7%dA zz%k%NPA5F(HPlE+ZB`uPb&1vTJV#0^W5dxI<ZIfCAmG#zi@-q;!xwq-PmtG}6SD0z z(EA6w@vC_c!6ms1HW6ebeg_`(n<~S1rZ6@cUaYlPmsbxel-iNsp6%GvE#Xey>y@Ka zi~A2oG)4rChmW6!r(bY*c<{5h8dBUE%hzNi*4J0yJM2WO2P!V3ZM5Y=i~4M-4n17u z77Go{#SuhdcVeO*hb4|JLNxD!+tj@2hy<aKvG*U0Ys?i|%al==hK?@bECdY{E-E1- z17%9`F@xZ#tOifAOoYh!<TkMC6>Ci(Wn+hOV}Ab>Y``gHWQhHm_`tOgnf~m?xUDL9 zs}L3a>IiKss?DSKbQ{PbN=^VbwE>vGoJ7UEJ30BZ^0Z<c8P(nbN9kKoJhaUXf)UBF z+=8A^Z#5ZWf_L<SM!WC+d|$pOgQSR$B?h~sTQUF>6bbl@q|mnoQ8;mP`CEE7>hI*l zuLc1E@BHupPjAE}X8$)3%IEzz+cE|ajTuLz%pw%<S=)6jn9;v&J&C7ssYAKDv8k~! zLm8CPhxbnsp#~rAQ(93mXDTl$n)gMeuVYwdDpwqGEFWuc!!|<6wD5B>NU*xvd2lMP zMDGbjXb)VI>T`8<1ub_BL8eyLK!)T@xzsUo#`-5k&_;on;tqOt31-p`NQLJr2>aE? zwyE49tR%mC+y-G!>il$jeI+>HBS#%9+%eQdv+yqWm7%4M<maoHmS*q(G~`x$+flLY zMwbOiB<vpCmN$?9H~JfM?D+vq!8Z{(o5uGjki6$h;%px-Ol1<LPHpF*_YEc_WvVR< z-%NCk7TPo_@3*11_lLy<k7+B!cl#6>8QNQW&P31pU$8}e`<^#9H=VnG&rVNEnC-I% zWQ3mP)N=gCymx_C8DIY$gOHHa%xoWnn7ATrxwMq9+V$MT)iydH=s|Bz<!-PffO_Gd z@A-O!knfOIn;z<<{4^ivFvWAn56Z3D=@3s+V(*hb94cfKE+SD)GhS=G<w6(_W7F9x zOL1+wsyge6R3+A=o{`US3uSWbpXM$wC)|<alrDWvx798I#5p!`dl(`B0j{n)&LK^` zQJnXIWo3yR7PLm*^bwI)X!4LpAN>Z_2d@z)A(E4RC7-L=He{Fj$JlEdrc0D1_@G2W zCU5Nkb6Y*h@%mmRKsdIy?WiYS_+v1d=#nHzw;3ztR)7w2e*rl7XpWIl`YBzHYpEDP zC}8wnvgt~xOh3t32P|lBdUi$%`J?oVp2HVo<L_@{KhQ$Os;{-#j@&FB8m`l?FfjCB zU7zy2+718;UC)r1Y-_WNjfwe`%3&iouxOrUa=4P;5F2aoJXT}>`JYsyj#L1+oRtM& zdqKrx#qs=&wNR-K^}gOi|B3@8)?~?*@tE!J4Aiy-euA_EA1v?TQ6TXl68`RDxPtuC zCv~w%0&3wPB;l)3gu&tAnUzz9D*_NArj`5;J*S+F!M_+8JBh#)cxv!*yYaFeF5)## z|LIjmpb)yzO#;UG)~2{3#z!e}sHF*S9xIg`gZmNHgoB(uA9o6l?Mk7`65VvxjV}#; zx0}&Tw5<MV3Mlc=(WwW>ND44fP9(b!(5^MwOhFIIfuesKxq?5gBX|Sp>4{Rm8|2Al zw%K=XzniKtK_x)MC~tmDW%4mUq_I6RZH)Joqbn;;*o;M3XmTroCN+9oZJh*({e<>3 z{?7Fyc8-T|5Clj=nU2~_d3nh|W1z_zSfz3Rw~?yqaKh;i2wji4tZ9?1c{krsNinJa zW5o32M_+gI#6<tWMold_Tdp0BR>sX{|3xI=^tPrmU->`iKP4fADvojC)#%`$-^sBi zm50aBPszCL%W>?%gPD|xQMXPK2lw~}%GUE;h`*q=Q|MX3GkJ`CYjzWNnR9BuOl8#p z7UjHZxS&^g5WH<V=W0UGZQzD?^1U%z8o~)(SzPKmG^0W;z;(b2LVr_Nha6QY2|ubl zZgpuF!UO}d9CWhZ@q&PJgqpR;baAEV6K%KEf3SO$lVh+@4-{u+Vfk5?uYqT7VV5Xg z#!8YSh8#ItXki(Dwr83G`s%CYJxRVtS+bo1)=BJty(|<$BTUbM;FV<~vISIXgXFGr zQD1p58V?RM%!IC=JbC31LBSOpgU<=asPE3BkB$i3E=TJ(sJ}!q8m-u}tEbRu{1Rce zUXG}-+=^_%Fg9k}+}g5sEBMuLOmuzxBgUz?sHj`rOlI?RyvBx$GFvTR*i>lgpfYY; zdi>-#KGuyKrF)eTE0P0Crm5L+bYqozlr8YT*7@s}0$J#vodg9_v>Yb`K?u|m2{pL5 zxO(N%B;*{2xLzhuDEZ(2qmR;~08UE3LZ)YDNvo$(_9l7IyJn<ad>WgZ2RYX0y3PRw z;-O3TWo)1R8t6NU1bn3tW!}4eN49Ua$qIS~kNM!e@&}#21{O1`FUtdo$}8XLBTwb+ zLDPIq6|7#DuSDj0j~%}T-#h@r$Ai!zoT(eQM%3#>gxoRD-e+kK>6@xK?g~AywX<y* zx4pe;e?7yWsE{jm5c!&wB|uF}A6J^bWUTo$|NS<h?_|4}UR9#}yu@>hmi|&{LTt4? z^>Vwo`H<94k0?G2>`c1)mu)dllOqZBvlk(^>lv`0LVQmjEIiqdjN)nIkAR5=Elo|- z9r{*UTb<B+P+IK{#f~vIsyA3OSwsZ7kfXd?^x2dXd0Ntpx&_F(L+I(^86G<zvF6<B z<o4<Zg;Zvfemvox1WbO!d4jE=qV60n&&=|!I(xb9v&n1FnRgHOz7W$k%nEUyVMLYX zuk$P`EbP5U<D_3ZM$OKC*YOh~yPt11$!o<ORq!s<7H7-Nd?dT*=TF#MmGxleXC@vV z<e`h_JFSJ-g<)D0lPz~?%vQQZ$uh4lkE1%#4vEt!7CM4Qa_GAbj?uxYj;=V@h1*5c zbFmkYUf;vcBDP%_cX?H052t)rxA2GNM5N%y4rO$CR<ZyYMdatDA62%EVIFj2J)H=% zmGugES9n+xXd(7Q4V`A6Mn^}*Nj;q{!osBbunQturkHhZH#CJ0k?-E)r_P>`JG&IX zab|W_O|grL7i>bBuXwBe8ntZugBt&9QBEhC^$tAk=I$;4ky_q@EBuQ=w~au*HtY&X z^<<uFW^mVM0G~i^)5^)|J3PJ$>PxozH({P$?Qu-*jH$>MqS^YkHbE&VTLTi;&Ix&7 z@7bO-2|xKzI2M*h3x`WjjLRwA+saHvYtIu8ZQZZ!lsRX(s>A5Q83MZ04S{nVCx1V5 z?3iKVNVW*lF6-MjR)72Blr)J$5Nu?UPR%hJ+ciAQs;@Rlxoy}jPj+=AjI^}L1bl%v z2dJGelf~P~i7@RXTMafH<=uV@;m8fnhWqCJK22NONq<WQ0U{O!kQELNdl3_N7`C5` zOdumJRj<xw4ML|(HV7G?fr+VVKJB-3)Vs<tA6|P-is1jERtFFec?)esI?TOGa>5rZ zNBk}?zwcf-kwU5_On%wybMie=Jp^=>Z@?CO6TPloCm!lS#s*%z6X9(!E_U(v{C0R> z7_8mC<q_K$-lDEUWMw*bBXM!u=_)vfd6d_Wyx^H8SY|;gu=QG~uw~qLRm2Q2Dduq{ zp?c4OeKQn6uW2+oWE|V*mK*;8I|Q5JOLS&bgJ@8giD_2DriYVy%+YGK<ZPK5#dB~P z8Ca%G9yXmtBPS=9oSX`tIhKRn*@wE>`51y9cOhG*u0{c3g%g%u!i0Y%yQQfK7QWhh zs`U{bXS6%Z$kdmVO$Yhe<Msq%-Z}(c9ty^WDPlYjuqO|EN5j<J1(~PGK}^rd?u^so z$g2d(@l;Y!ct_?Mvkguv#OPM{o1B=S@`rOts+>SOzqpxtyjzBXyI8+&)_k}*4${8m zm6!8De(WGLJz@;XBIE&SZ*GpwxT_<~xKk+&8;xf?7vng=WFJ%Y_5^IM>QHeAoSGC? z#m0WY3BM#UnwENfi6aqcu7`J{qoo7`gk<$9v%Mlip##Fc_w>NWCqd^05WmlV=^%#) z3u9ickt3t6JZ@}+p?V_&*pbHbnV}}~(ZoYxg3XVIB;TV>VY62ej~BmR(A3J#%*<3f zm_*WG5WvWDQ6k~RNAlsKv}m0F%zkb@t<GwR5^oMRU3z+2_rk*cv{Yw&uwZ_DeO+k5 z*J9Feq^@ss<X-zIi_arg<MA!EK~#V#P!hbmMYD=dQtjJT{!`}w;UEup3__+?W=bg# zqLVbB6wcTLm(LS0h7>u$r`P^Fxzb9rjwUoMbFi&|OeBgZcUr-(;gaZP>ESxX)Mm+h z<Jrwk84c%A@0+;cllm~{Y4*9n^FtYBX@q^bq3Vk@&@pl=uhl}k5jo%b-xKfwI!QYY z5fR1n!}Z*?!|AFem9dNAb6un)moi)RJ^h8&6~@<USFB2`^(~bCTh6%{<GaU4-&bT6 z;Wr*vi?@61G|A~>;#D9xJ{~nzJg*A~$H^Q{x9*SKt6Yc6ro<3J{cir@!_1Hgk@O?# zEe|Ty>ed$NXNcb#0jjweZDd*@hT=NYb)8YizjT5<4)&kFGo#oUe{5e>SIbycNzW*7 z;IVC~9On!Qp>M}j^tJ)o5imt1j1L*EiD!2qGs6yZYjG{BS)TGGE+}{{4*L|BR}p$v zwes=lJTzu!Z-gB4D_?Ujg4K?**1<VfKkRWHr-|Ui_r}<x^mPvK4GehVSCy2M%+#%z z(|-c1s<NZ&c^$ph)wh*`38Ysz^Bc!{`aO#2G*ncItU!s(T;_QFz#Xr0$}|@?w%VqQ zUmU9P$h{HIn`xy@wtQ+p@Y?vzX_-T;S5#%2Z)GDc_rqCAa&7SKLZrIMueGHm#eN58 zXLiSUrils|LGd}=wg+=++y0=qZs5Cgg}_r~T!Q-Pb52SY?{svgHDpLwzf*k3Wt8Lq z(XFpXFQ;4k!VZC!Lar~bACF$K=kI-3`+P1Ow&Cd9dN*Mt`K@%a$VN;9_3kq{1TxC$ z5|muzaD%uiiR!cXUQ6j>EaSb*YiS5)Zbq7AUy|4}UY;@aw@)it7><MExuv9svn`6I z_;QZqH8du3gt;y?9-d2?z;Wpet&Vjg$xO)X!)kl=G?l-JQKox)V_V4-!>XFsYV)<e z@o4v8PKtZsRi)(Th~V+0_Tu+>0SjRV@pn(g6WA<fL-EtRJoS@~XMCd5f(@a+Z9ofX zo|bESbZW8}($9FG40;9+{;Kt(yc8r%kbxBKQdatfA7>P{Y(M-RexFO3GRzB=+b_-( zJVtlF9VdFx&(9YmsaSx3)2}TS7}#vQ+(4V>a=I!7?{k%Vn2i=0AXFzvxx727xs&d) zniNd*5QjyG5t|jH!Ivqex$5)!>@pPa4lK+VIrI4R^t63F2PQr0R<>WV;t%L*j6x#h zlJ7oORZ$tre0{2XI<~n~C`jGTPqp@~)Xa4n9R~`iRqk9Qwe!&7vzPWW)Vh9{IAT9f zhjl(N!sE0LSav^@VMIZle8knUT&VtVF~R~AEJ~+F<+}rfh*!=A-=5#TzTB$++5(#D zA^;&!5vHzKHzTh!8t*ojjJ8Ac89Q#1GFqD~hzydGlA<0w;SAfNS}umP++OZqHytow zO*B8@43iOc2am^IjuWGTgLO1i^z^d$f|JX2+Z9@~>aCU-`0octUB#&0cL>sWGXM0^ z*T=HGZ~gqO|FdU(0~QZ>+()szVblI|KK|qyKY(3fkzc8&RI^@zX<%&CzwHh#4d9$@ z#W%23Fg_FX>$0F6pw<ONVkA}>po>9Agl_v}+A;rCIGPnfz${nEsyMa_RqE%HA{Ea% z#5&OyMXmC6VNKN2MH2r9S^Jypii!%)n}v^!XI&O&mURn@*9QDt{QUS^dil$?-7}{B z@5|bwqM}ZO2w1)%^$8fHN{-m+=(eL8?g8yb*;Gp=zZu(kTCKGaMne1FBR}uk@NarN zj@_pv)gvBX2BK49s5KsFQPEWAP|q7acpwU3o8h<snC>$I#Y@v77}oKGxCFU|nXLZU zL7KRSw|xdY`lTP}$7W=pWazW$tm)Hdb6gimr)@pnBy9MNWvrAr!K0kO62*zD5vGji z`>(r!uVdrmjo7l@^z*ifQLVh-$-FP=?OhZ>%&+BseE_pM1=TNY6<ce;;qSxgPA25- z4RhC%Q4DW#$YH$<AGNDYIWityaD4{Qg?n+Cuk7sT)nvLqX&znAHeZAvVRcthW`dm0 zm_-4NP;%7cd|&N-jLh*^qz`>AR%qz>>YkI49;23dae)V)VwL-?x4%Gh{2(IOF@_oE z`ulO-C6e2ATuf>Dm<KoAqFZD&-p<akxUmBRIR!<naASZ2JBLg2CB66)5m81VPY*gv zMh=qmo$#aG+s<pQ?Be5%u>iXih-UHYng`d~LdE@kJonM|cT~0;><GarD2q#h;a(KJ z=($`nk=K`JJ?IFSm7;)_c8rGj5<1uFzG`Jc)fwD?U~v)y1N6Nk>;qdTIt7J`ON(qU zPJvSa^I<r!?b~OS!iNx)AD&7{q2ZaCKz3wDD0VNWw4?bdOz=;epl+UX>(qwbP{xC; zjkrq!UeA-$+loYnY{6?5!un}M3!6jq7$uRV2MQByxqf4U2gEtU#BS4|pNRd<)<hZ? zRk|DI3aD_LZJuamn@SW1gei&in$$JGluz0E+12(tG^P59=)2ovuZjy(agTIE!&;fR zl7Ux^2u%&JmIN2)=h0bux-08Ol{}4JdQu#3I|Q<*kgOdJrv|@DnzgoffJ}@XU_J0N zzh1;zIO9`B^!L)TZ^v^{tiP)t8SU)^n^Rg^x6n3<wj{>sGW!wF+&oX#Y>@;Akm9l3 z?gx29Nay`>;gkC{&KJD`8utPK#v0`opFT~C_H@-ba$3e2W)Bx7kP5>VZ}{9_*i@lA zhYz({%$4^ltW^kQF!#fA3c6{u#}eyr4|1QjU|&qR#ipeddd&ga@^CMEyJ66&I}w9j z-NIa=fn6`b66EaBaBpWT9CwDOE_;c3CK0}+dtX$6GRa5Eqvh3xV4{T<yKrdeKxrZS zVkCkIRfa|*_NyP?K`86JSj{Jc)}CO~(#V>`L<2uaH~(dqwan?W)p{EnwzfJ|BX@T^ z3W@jeKfzs8FCld5)mp6-2#C}@;4U?<3@xXb9cK3{iFDJICUtb^qiR@y5#Ehi<@3$b zjQ!)WPmdf-!)&oyu3%!HGoHgStJxGee5FMe0lcC=y^qO?Sx5n?wh{M7#P@}j_!tJ% z*_aqjMF!*y3`DTENK`Nl!&%A_q<)pi8T>EjwB}C*;{3XwuV7QSZ`D&+&1l|tQM)=9 z;!Q{%;kri%)fpC-miAsc_>L;!%mD=(!q9O<6y_Cnqw0Pkto8(mdD0X#xyS`>-fA_z zJXq9H(Fo+^LK&Uv(A1)Kbnwa|FN4!LWS53683=x_cS0q&e){xjfGp}sTF2dt=>2)B zyqH?Jo&=A7+F2TWu&;87O0Epf(>tq2(}^qya}j({B|iZQ>_Cg#E0n$`>KHM8<?k-R zg`mI++$ysl2xSszcI}bT(U;$PXS$VJa(H`Z@G+zK7u;P0PQxxi%RwLAg`4W9N6HhX zj6*`szGS<?G)W8E<<qniK4ytWWn2{SuaNq@J{rpZn$Fd3TVyC1pa2DG(frQWp8r}3 z4Y%b9LB1)y!x)HtgZm*Yj#8JdsK~5%84(_S!qd$S#uiU4a6E#>PNN`q7VP>efB(xw zZkM#4n<!WhS5QkS^!0b<ixlrV7QIGTqXJ@o415Zw!;hOzi;7l%7Y=14;xFrFO&#7w z&r3vJc6UQPy?L~P{GR2CkF@(Jyd!(IJ0}@ooO^!ol(>u;pNg{cN=r4c8zv?Id3Kh! z3(=-Vi_P`NcW+F(e2Ag{29uv*>i%AxK51)niZ%1Y%i@=>K>_3kp1aHZUp5;IQba{} zvOcw``EY%mjZ&IjIO9J5=rDRcCL0qo*wm)M+Sg{j+8zZz0s4`V5kMG(o}~>pT~zh+ zC&rWP1hqxE3~-G56!LyD$~vHvOwf&aN?NQUC)Ts`n_LHGYj)5FpENk<?ReTbZI{Mq zegmZ}jx|qlz9(B!B<ZyrD|GR;=LU!Oos)Ku1eg_Hwq{z~Y>Fu_GI;ORh&ArlBg5)* zaCb@s_nQvOl|@ewfh|bg(~xI;ZB}=ykwbfX?%v*wNCe4{Z7)(FoCyDqWNOUJ%sUw# zFQ`2CT<aLW?GIm`VeC&D$&4PZbp34jUe}$(AEe>@XcpRE0nn#NXLGM{BO@~d*hQYF zRTC&TEN0Gvg0r3A9(^ABByZX%pR-^?@1^#39K&^jGhvr(UPlV2xH)hu>Fw(|-<jm# zkRp*ow)P%uc{Y;1j*e`uCytJe+U*aLBv)q*`UU>k82gz6s;j##xxo;0VM13t?6a#+ z2S*p<K78*emrwPOWcuzp+`Qx$$th5xGoO)6uF_cup7DZem%-}~Q_%M%M9(@@ua9fo z7t0QE`bhZ%Uu=dvwm-Z+%mq8m0d_dK_3x)RyIlHvSn`tS?loR6Gr^tV1b7OgOs7S6 zmQ~&n?Dfdi7dA{4`H;hC34XW7+*wYok0<Txcm(CBcs;VBt&!KbmT+#Xo12!PBmP2W z;EsnyIeSSr2VvRE!<<joIW^R?<igRJr;WaT1`^JM+)2Y0SRUb%Am2*fj7FVh<I!sR zT6vWwOIinUBse-+VBmP)e(U?3L9Q?mBy230r~|WL0X!gd>Y0+<nm^gyg`Jq@OvdaM zM7_1()U5xiU;5kc_09~313As-MS0%W7X6AzI9|;A<=#NO>566K^gZEiDLDr`<6>{A z`qs|Hu*qQ`f>?T0KS6>;nu%lK-P7f#iyq7h!?JND&R%97ZkY_Sx~In&Klebd$2zEC z==)xvx4)Bh%ZY?Rrot@A%2Jb4s^`;rL6(dS1dxA5hLi#o5Yk(Mbvc81;bb8)m@C-F z)fO!lwCumI#k2~NMd6o=%s(<5?WVLp+SYS`pNrbV*-QOFXL4gmf9QINX)>0#y!>$? zs_@6#VdKGB7kpv_>%ocl?ty(IcAQ~j)O?JOc@Xo{W(p=6@-Oa(O7&R9CP9<^5_DPq zmpfXwN1sgLz&WIsk+3i)x^d8KOB#P7RC~!-u3_t|<2D#%#9I2}K*K5VEP(XeQ-b8% z0#aa3JPY7x8<E<q6*2LO9(_5K&8?=P`RVe2q(18*WN^-!OoD&^$eKG;E>l*s$EcPp zMjS{(6SQK6={m`KakE6cerZonNf&{SiK_kRMj${s<Vgrl8ZRzOq@FJ$@N*v(Y5m!x zm6)TWfaNf2?InBl@jmJK(M`+oQ5I=hE|c1mIM?39#70>n!{bEsOb`7_*uX^mG1YLK zc$RlzaW$;H5ZYMmDGCvTSjC&E;WtFZG=4mLwk;>747)pD8)pkX{8<}X^K8FYIXp^E zX*clebzQba3ioGrCk%TtXn^In@`-r|PoY&|A_Wd{>JRfgbWamNj&meFpVBv5dYs7c zmrlXWAh+DfEWIZi>(Ur^&{R+FNy3?xdbR$XH#LwxvFvb8($Odx8s<StPc0yg#k}xn zY_$vpkha!yZ&dJmD3AH+X(GFOrp92lG`th~X6oIPLT+ovva4HQ=bg|;{nN!YC_zv7 zfU!fPk>tsTum~iZdiaxr-Ec8mgyGs+Hav8_-mnU#%552?uk0j8Vd?Ye=;#{{)fEe; zBjK5Blc@#bQAF~wpB11efm7=Gi@y*%vXqB6dlAn^R7BB3T|R$iUgQUS^Bl+O=Fb%0 znL3!UsMW&zi7OlB-#N+Ydw<ju#Tq0p$zrwme%c>8uxm9tbO+kdmw6JN*RanKJ`8By z<Cj3IYN+~(0KX+XNjXQAXxJZVU4Pv2#)%l;=Fp+i6l{GsbyS=q@Gv5f$KNCNiUU#Z zp+P<LI-d+i_xMxu=V{r@!;=$;z__TEr)tE9R(Lfv6pYbYd850guyIr3cRc-aLX<*G zGrv`Tm{%dz6GeDx)ABtKOnn)lyp?x354rG-^G#~lc<G}_YixesjJAGhyDm^pL)ajI zK^b&V@bUh7ZY|)#Gzwv!Za5>^%&aIFWN_EDu@T9A5`Vk)iuUb}@5;>=A?(UFUoj*} zwS)zBcxY@j*Te@J&con{xP3FwIDJfH>-B2CCIID=kwBq*uJ}_|;IN-xyUKSd1+Gy> zn*LICZ2b|HVwPcST~B1uX*5@XQ6(fS;0xXuL>>)^^M}v#K37t&*A+g9fx67QDDR%K zpL?qWVE`@)d@pzHO=(?iSy_098qn`UR5#~i1sQKty9TaexK6fr5(M87!Qw3-BN@HJ zL7NgRaC78>Taff*|NdHIq6^z!<RFkLw4EEp7sIjYdL8|eTcd7ine}wy5=G^;*yxb- zwD$T8#bzP$E2-HLd0=!@G$0X-c0h?~_&m@YE7`8CwXDB)0MqTvw%6_yc`s>sf~(1j zE61G3Lus}>kfK)KEtnd<Q&!I>?-$}Q{qvLqa%RR&O}gJVN;;tP>-X}d>})KceX)kD zyWLL0oWbZ1n1bQ+rd>|{R1^d)%C`|(bsbaVJMq{(K|3WSrQltS^NF2FQ7@{(xi>Q* zKm<lU)x=0m6OW9Z?`{AEP#1@J|A}j!xwl8Hk7}w8Q@VFZF0TJ)*5}|aiDsO&D%>Bm zi^rO`yWvm>)~_@VRm<HXoCV;1NAYREZ%uhdWZO@;w_~lAv$;HGN=cdfsxy96TPX=@ zXldcOpQ#`cz;zsP668Eyb8%D+pU&!#`1-c#HKX}Ok#3<=gEq1}zWfI*e>;K~Zg@JH zB8f>vF#0Fd=QC=fsMGj@10)#s?}$ouX%4cwpuJ@PcuA70FP%y9^XHxi1q74yK-->Y z3=1C&qeAs{IiSjxsku2u-(t3dZ=d8)^fJ2bIPYuc+eK1wi}s}p_3;c|M^6xceeNlb zP{epi`7XoKZ+zJwVj6XZ2h-}z#zQb!4qF<<GCS`-5ZEf)G|npX6M*C)GB_}rK}3R% zow)MbKMB7mb9p$dw!J*y%O|(_wbkw}k>YAHDETwE6(12{VB~BiUS+gM${<ILSq#pb z5u2OiDZ5EiQVnG|{>YaN7=K^HQw*-;r@yb2Bpa2l@63gB`<x}g^w3-u_p0#WAU;(5 z@@HONr{s8-TmM)(oP#Y>B|O<ZC^B<kKw{4ZmdeV7My&mdPY26v5lK4#s}(5!IA~;w z{X*K~)=RhIcu5tZMQi{D`?GHgGvc9^4<S_K@$qUacb{$+S7Vu4m2zJsVNvSWLKBT@ zBkH~7`e+$vy$E97@%Xqn7{VoJ5Q1#t&!6O$S@$YL-ggyy?YUbP1cxp;nT=bo0@mp~ zXTxSw9K2Fem5rNoKCc=G7x>u@xprG3nYLHA!9jOW;L#>oht{_xOa*~2DH&+{SFuV| z8$<yUrQ4E4d7}gd8a?zj;6n40>lmyP^jSAb6A|y!cH8SA1n(3V2+azR-VIAsx}TmR zfx3UCs;CWY^M)S|N7nxIN##BElnXKOc<$~y?iw9&O|1K9>y;dGo{#UjQoo46P{(M1 zpdDdRoqjnn-oKrc_-%;*t_mofm*sA6uywIH)D__RUp3C`={+@;><61;bP^Jn>|;?s zBD_Lc=&%wbV$P`O@BcKTz3BNNB3y>(oVkXOv5z<3#P<a(uqxfOn-<UFKY2O2h#(oT zVjNIV@maW)dHsE5JUbIla}8$rwtK73t1~DfQn_H!dSz3od=q_fss1#e(-UsHX8hcg zBeZi;Ri={6ai-@b`~3Cc&<Ef#;Fz%0xUXlit71vvg~es4J6}Zy_N_9cv{16LsL5>} zQmgqY<G-?QcBU$wZ6fQ>TWwLBa9k2pqi$x#`w{Q6N~*5AJHmmvRZo^xB6{DN_ai0< zKK>i(^<>r8;co5PwY0-tyOh*am{m7Of_R`}D$Q}_C*!;?{!}Q|j7QB)jEgBzKlAdX zTx-IiyKn_=&kQg#T{rSBm>y730N*%|1Kn1U8dJnAPk7|1b{?zAIcOCT49I$*V(5j1 zvVZsWSuNTTyKR&1eZ)|PTi2=|dqQETy`;RJRIQY6{n}^|GLk{&ATA7#EMM0l6-cg& z&*4Ss<8h~}2d}F4QDM*OOFzVk!Rb<c6du|!SXFhdqeBhxqiLY=?!xu^L`m}BzZEB| zl7!VNK5zl1XKL|^jvw!>-wj8q(osUpmY@(FzL)p^_GQ~2b@j{6)|<J1Gw2u^zxkZO zqafV!8=`}W>GS?T49j-)FoS~N{L6QzT4!&s;-otQof=I3IK7MBp3}GUF-9#JCF83? z1+p??l$V`TW#z=2_-p+~Lc4tCjUif~B5;b3+j(D`b-PCH;g&L^42eT{>$h~K@f4%Q zmZS}soT}^2fE=0&;JDp7O_X6|aCms=I9VN!TPCANnCvPx)Q!sTYhqA9`PIaMNvQnB zF{yHp6vJIV8t(>wXd*bWd*Phr{G&Ap%NM9hjD3CzMaHnGpxZ!98$B=^VZ}&QIwxOK zN|`{b^vf1oMe#SrLW>)a;?vlrZ}8ki_Lc&wYFX-5rUaFr>9S6}H9gi6@*btn@^G-K zuo?;!ljR{mK*-S0;I_!n&14GfAchhw^z`+5eQa#C1cd?-yA2MBu9xdWSX-O5IUO#m zY1UXPGCn&3Az<$pv*kS6w$(Rgw$I4Fm(Qn^2>?=3#S`W7pplUdE&QS|(3s2(?&E~) zku=xY-Ti$Dl<(!KbKCFhF+(aLp(!O&KD$jfG@S6tCCheZb!BBufjA0b+&Sq)uNood zdaJk=PaHkQ)$t%!%X#_lL0#wlD}IiE$~ofZXD2649Jooi%Rqk$%OI$Z)(4jK3e!qz zTH1d1GtzSU{=+jA!15pwCT97T52yv6rIV`dYN|#&+qcfb(Ye(@JA0FgiwoA#IguvP z<#Y^|zmfp<CtYc4;^pi@;LyTvjWO{Uk~0m`EW=L5<rDwS5~RbSY{=t5G2^i`>1n^% zAg&8FN2(o-@zeJmadB}Slt|W!$Ow+Cvh2Qa5cqka**CmAbbR5SXqaxghsNi5J3F%{ z5;iu6uIQ;I6C-!sV0&xZ@5YT+G7jQ*OmgGGV5q~6mTTMiUznN3l<ozZAP&FNk5NlV zo+}E8A1;y(3EjquY4E6V+g3CHZkg!>{Fgswtm{^aiHEa<lDHAm3HJwd>t>^_Ejuo8 zDC$%Q0XSmg&Rmt5CheL}wj~O&_Rui4%t1<F7wSA>zI|wIpdi=yj&CsGS1xs_#x+p~ zhh<F{Kj1z}pNo1YJ5>~IaG@dM8laeZ6XWDNcS5X#al-A^JqAoPgWyXl7OW8uXPt@p zy3m(8ofijBh%dww5?I?bOeQXGo496ca6PH})0O#eqLh6O(>z|pN{{V?JyU|`T%&lM z=jWES&1!EaDxcUHoIOBe$w`K*DqId>)i10DHBoNq*Cl1WF`78E$jFZyRLn?0H$}`Q zW1p3!jK7}r$gb@a``+I2+vRx(3Nr2L@SkzMUk95u5(qoKtmBaDN*eRK+_EU$=gXw( z;b6i)bt^~y;B?@6NNVwjI}xf&Yo*_!MowyR8Hg4f8ej9e6~<YM7WB=d_nilU!C=GE z>Am3tvH*mhyDiXW!{*)gDMR$9LcJ_ZX2L$RqddD6yqdJ(_<D^;e`Dot)6R3FYfcx) zi^ArwBj_&6;IO(`+SMcC`~!2Y(o2^i-|{g3nNyW{bH3pm(US)cyLY?Z!g*pdxiN{M zCMwozZJ3d*nVay9_v<@k(Q`0{p$c-P_g$VxCLUU6+?a=!qsHMGl?=6x^RTTSwGB1t z76YPJ`A!~E3{$s44XD!FQ~Gm|WfoOR#(IJr$J`^gbZ3WWW-x=MyzMVXIXdSFL!3FX z<m`gTj9fT=rN}Ngex}fEcfT%9TvF$c{J@8*&Sux*z`%6wazlu@V~}Vu*@_T<TBN2i z#Ea-N8p3~^AiccMpC%p|>UMl{p`KW3IVrqL_Fa#NVwX(jtIyrTm+?si_<n>cqjqR$ zwLZxMV6qx)KZgo(OGC}VlwIX<8u&@}iE~U%+{5xxhZ|@X`W@Zu!!-k4+*TFQ<(O32 zHK(iK<-B9$G0EEKBZz-5L@pR;jg<WxlzF}E02JtK!a5G0u8UsVs^Qd?u&{iIG91ls zb#9$^M%=2i($ii%#B3h5tWQ6BAz`OWGK}1*n;SnujkK9f9VFt8^cvw>bntakBU<V_ zU-lmA?~5pzz8epr_{`Jg_v^ctxHeKc=boz(wQ+lZmKRhcdkgfTl1<s=SbB5JExxBL z<k&p4T{I;rzuw%;uB67!DeT)VDWQ`_6!!?*tMDi;Kzzc?H(8CV0H-RudNV;<zMqo8 zH~goZi6T@A+Aj&5*jF)EZB^AiCT&;JD^%gb>%St;cURwyb1rhZ31rq;Eotn0!kL^} z;}_r&BnHV6fCncNUD&sCbtsvcp~u|(jk|iP=8rQG;Z6dpUB<oDtDd+^2L+jJ(Fj=K zZes?qW#Zu@>ZNd6nd^>@lw3h7lBiQto4x&W(p{ByffnBS`lRtsPFbSHwlvg}ZAa5^ zE(ZE}A)d|~@fqt*um;*=u@&tae%kGif^c%JJkz10%%Zr^ZMX1+zan6maf3QD;2Xz( z)nu#e8p3&#m)F;8#I_^#L~eBYdmO@++imrAQK08LhF2dgH`)x$=>q4-QpF<)VDZ)Y z2wW)-^HqTaOlJor6+>@pERX0U>qlsN0?!jq5#nTIs9pFL_iUX~VqDDGdb08WC;ki( zzA#7E?SU#aR53p}V)!L31OkYMV#7PJ07*GXNr?81vefD78pP~JGYetP3~)xNM?)Rc z<VKo8<;!)&>pImbHhQfsGJBb0@TDEI>jFBBkLBVo<+g_d%u#-`Dbb6|H*N+uEEyfl z@^*>b@45ib%j!Gg=rqiW?US9={t^da_2VboQdz-Q@}h3o`}CFOnry{)P;#1ZZKlnO zSTxzX`=wjxavz`x;yzEKkN#j2-tih@+fFzn0Y4PA>{5FRW^dy9!n=yj{|c7Coj*Z^ z`>-5>Jiu@QVqgAnL2FWt7|HsL4ig`b$}W4Isj@Qx3^5&#C21_lG!%&BU-i4dh1fDb zBO3*f$j}%2?iVxV2I}sm;QluGdv8|Jpy1$Qj5P&N)>PnzViLV3#CR4I&6BqKJ{?+< zyn2*_g0B0%8C&#3vYPS-Qc20dgU~6OQZ+f97T3_0>-KtMX))N49lezqCf73n8rm=~ zKPM-IhzWT>QAvkyn>*{w3=iwsWQQb0CIWg;hOy5D4`08tJdU)STwvA5YMF&Py@?tV zym-YVfe9<NN(H+bv){1DDRaB|C~fkCDhgHD-0r8UKt{0TvckndiH+}o2GOfhKu>>v zt&!ogYUv%8ES!xH#4S@f<~TXh6A?{7y-`mvu<Z^{AGr2y(jpw=V4()6@+tW{<>i#7 z&&^SZA6Tnj6ZO&Uau;b@{{xm^cJb#=u#us%fEtr=c{qTqz}#2qcPDd*Cf1)t2ZV?N z+DrVD_8Ky>;jzU9(Yn(}`;IoOxglH&IxoK(RlW!J4tqp-(I|v0GCJ;MCH5;)bC`_L z;W%ARoXp76I6^Vm`h!*YU6F_n1jlo63oG>sU)d~TvmFf!&A$ZLBR9?$$ekuu-;?t5 z%jtMlJu~K5F*|Pnk1+G~jso=W*eQsP^|s~%+%|V1gLd^^ZRuvabEBaXq*y301iayt zk8&WB-d1u|Gg)EVFvMOFmj{-Hq1W7I6K!6PledQxSkSiB_@iRZq3^?()JtG}@LF)o z^bTi_<+IeKny3{i_8F*Y8fa;TV{H6giS0O)l1%5{seUtz5u>1xj#=`K`T1BDwx&Y% z{n)gZEgWfL@@I8*D<c<@GG6zV2o{}M779Sz;dJ3g@Rk2vem;f%C>ie!Eb1gCYt#EN z><@RVwaL3RwVASF&5g5Hr)%2a{S4j(dCxh2AM;^gS_F8}*#2bc=^bHU;Rv|tx)1-= zU*X6QbY^sLB7VY}7qh=)L+_7~1aT46*of4tsfP_dTTK+-MkN48#C9tw*Q&1Rw+Bqp zL%>41V&*c?C3PXVDAxypXG$OXhljadquf$Tx#HI`b;|~If;B4``2*sHKDLT*Cwcuu z{>~yQ8aXt7LuS2TY==xoB@pr{9-KUn6+?A4jz!$-xeZlXw_R)Wc6n9NP<A-b@b2s$ z9Nu}m7G~Jl1VssrBvx2UTi)<~<JyEO$gnR0a(uIZyTBBh0a(#xGIa%Il>y0JMj>8t z)Y9_tDsX3Al<!ATHYuDv;5{|`j2uLy_%VpGZfS-M_E@Z^*#BF;Lq=p9Hui5)sMX?Q z^4ZDWPk4|Gl+IPg^@E)zu&{l(WvfkfoU`FhX69VKMgY70<)G$B0^vZ%L@SfI`T`TW zZ5ojo$XDT93w_dl*H3+Nsph{tNk@0ljXtvuB_**8iK6#$E_E0VX=Ik9MBbyi3<)Lo z$$H~qq|8>Vk-XgzINoznbt2h{y!rJ@$?c%X1kG<<8+54!DZF4gfQQ`)IL<v@ZFIoS zx#y{9<_Ql&*f=6Aog^!7I$*vMjtg??ITA_tKdW{X;0p%@1W^b<Tm`h;{P^T!wbG<` z(sYOd!Wj`;6F2AgJnMu6>Ae!j_IV|gPXL<qg|Vcv$N<vjGP9g}@gKA&+Tm&8O~z(L z+LrMATgF#-u?#2AZ)ekHW;$KHsUAW$TGDe()o#VaA3N{H?=^A{=?FiWnm!%X0JA3C zu@rJw1$`(xa8Amdips1`)ftlEB*PHT2S$yFHA#C)imCjCP5F|i#rt2r-400wZJ4~w zD(MixJn@oRoSL<|p2cmoI6lSbzmD_!An3fUWGvF>+q~fVIx8mHk+ufl;S{IeZTq}> zs2c0PozLf$5%kaEW<-9PT3=ioFKeGzUj~R0+ZA?!>K=s12~b8~nq=o$lgG4XW;o00 z>pU-d8Y22@G#Pxyi^M(X7spG~)kUW;gVa1^>vnsN?6TO{*sAES0$FQIOFyvq_*krR zu3Gr)qJ8xay08J>KlXQbSdPj>y3{SCP)uZpStJ>9FVYU*<AHy7qrM_5;H(A-F$p>$ zxh$U}vKcv)wO&o7gp}U$S(jL-qvGRlF{;qfah}}sl62s!DY-~casuh$=n+lp{KaGE zcR+LDlSqxbEV`1C^bbE<+roV}rsSL`j!fDJ9=jPZ6(#0i69Zp6BE6)a1uQ;}BB9Fh zh`btrvq;z2Us$GAgNYgBMOkuBB5+w?9c!DX6s=?RKPFBKR_SswAR<-?kbZa{Ur1Wl zTC2_?;Qc)eVX|%8<pPD2H1T9a=X4KVRT0zA{z>!9OggDFwqZ<M{E?R7CSl9XrsD@5 zyh)GFAX7DMv&aotWoWU?joHbvsiFBeS}tifdn}`0@#@_&CQYwA;B=)~^$7|xTNoiu zNW{)zb;KSL^=@@}h^ZY|pf*Oxp=SNKk350N5Di1@o!xI_=h@q*&J`CCVTIS`K6-$B z5w5#R)qZ!6x_#12-1}r`Bs2_hAtJExL{@>lMla-TyR|d1aNV(JAbPmHoacG}A!7g4 z>j8P<fQGQXrJy7)t#xODiSl4lm5B+xn%;riH9@-%BCEtHzUb|DHt!&UmWiRa+*zHM z;?#$%OOv#h%}^<AutlIufib{TMtwY^dCm)eVlAlPfus&hdgzL2V)k5P&;uCL?X;C+ zr=S0&C<2!k<L2#X;<pTcu)_nrYdcocD$=|id!cp?FK@~h(3y3qxU+CNIYH?f$+R7P zxzjGw+f@I}-aFx`{q+_^I$`)c4{Lqo`#ulWPV55_lL5|=T7}=Z8}$6o3`XKfqB=_Z z@6u5Bszdno%NHzX-aDY7W3#=$)qrKgeUFE${ZP~BdVg{Jygs|3AUXbLLLz+9Oz)=m zo+TArzPhd(N&|>Q_OH*kf+(__G3HJWtpq-~V(F;QgS|L%b0wEAm~v0p3hpX}5nC_? zF-3|%C6hy&%23<RZ&BOBKz@kRx$B1`+x3YmWpebJ5zxRnsVP3;_r`nN7T#?e7gdq3 z1;LCthSSRL!=;sr8rW4jvkCBtOi?UyFsU3J32;0+sh2)P_N-1QyEp4YeM5}&EoA7H z8&xZ5ts0zyGd6GluxpBu&@6I-KlfBwdvsK&*6#sPRM)nik$<44U-Wyt+O74oOq!A8 z3PlEV$S$LIUUGs*J)lU}bb5C{N0AW$Xj-MK>qgZn5_HAI_Ih`1Fks^h)UVA6`#@S+ zsH$W*p?c_@iEav1ZpRxz(0H`Z(^fVX93YX!`$>(_gN=}jRKRQJ-~R;wh{h$~5*Kut z%mJ<&HzEt&Sx>{I2m7SfTf#8a##4Rxz?yt4ZvrhwTZuUyWt0OD+u8SnYSz0-fi4Ij zwTgIUodxPV<z?8JuX+4*p{d{8eAp{@3L30Y)X{;keM0$s^d-Jg<Q)ZXeG-FAkX?H{ z7oWUftMf4zl@nh#i_2aa$0|rO7YnpG=vmRqE;sD<d>s`7#0DKH^ALN*yWZ3gBZ?k! zqQRGNzioe<|D5tX->fj|kF+wU8y#AN>YdYYE&j9@85a;>O>cYw)lIu<+fCmzV725d zF!fbT>a0+}?mA!3`a2woG2Zh&ntTnSNkn<Cb*8;YjIT+vP1FAc{6GW0ulV)ABnxxL z@c@{i7(X0CJO)6W2!dQ>&Ag4WVeLlXwgp0TIwmI1CiPK6w(Z10<x_2K3>MfQfbmXi zQ%Cy?BL}1+EJ*k6iP%-N7~WDt!JuCO;W^aKqVEiq!jODtdMYT$lAr$cR~UmswJF=T z?~<gX1nsj?qb7lnWkb2*q-X^8?Ird}S5KV7oa?W={F=@yNBTutK_eu0axtW4UY@0F zY1<|rb=KLvn{$p%4_0zKbDjz+9;@J(5)yjgS}C5{);Q6cCk)E65M@NTQ!p<t>)=nV z%3)quw{8XIXDA$6HeoE+;<$p1n1|anFYE8?>x*4G^|Iv4486v)Y#9=jw1%OtJ4#f- z+B;Wh#NkfA_7WA@3_;bN60^Phr{~(S4#ZF}r;mZri2@T?j5T798UQLQc}|zLW;wUR z$0trNQQ6R~8;vvmy3X(-F=zCE7@TiO#xgID<H=SkGe>KpL6A{NNLvpa;C*)DnpkIl zY4aW(Z84UdZydio;)2Ypoq~em)sWuR`iNtY4lHZeZpK*50mfl)xH+H<GwF3<VOyht z-5&FP<|Dwd${ll2QPEiQT`|@VU~X`SXDk1BvRlddz#V@*dydeZqkJBX9ox6>1h4su zK7Q@mmCCp?0u{$5=_2d6fBz2fFh7!6aGZ<>uSVX2b9N`f8o%`7Yv6ZZZlQ^!!`-^Y zA#B{;s=TL@C}}kvV_$gj4cWde8#n~uISdDw1A**v?9RIi_s}7RA;hb7emwZ#qw>u+ zpG#bP8p52?Sd*n8#wK4dQM$#)p<Z-YJD_yS#*S-;tE)TCK))SA-VM6jZ{fmE@clMj z2Y4p<GtWGyM;}lj`_F$qe$Z*@P?}j#K$?{&Kfd+nay|^Msi`SwH;vGBSa&u<dGQf& zdkL7vB3~2A4}yVoG$K%4sXPSR%|0d%P3OvErAO?8`uc3h0yb?612$EluLsZ<*FxwH zz;lxD`6@lHJu7PqJohg}WUfmgcch`NzKT(PegVq(3cH?PgOf*|{QmcM>A7&+eZfS2 zb@l4iN{2rE^m7RMf5p`UFlarh{3FA4+j7L})$5?7`4D09<|&?9z!Cm%oG@K-$pjof zb36LHT+bcnb@E+4K3-VYH^}qPzY1ga3ROIC7buMo#DKC3kF{B}XaNl4!x6UrcW}5J z4ki0;dFtsG<(8YThoLA*Wh|DxVZ%nW^;NX_Q>;O$D5Fk|p?~<peF!yqo;qW@;fzQc z?>BDz4o<AE!+5#@>qrh1921b|7T_}t<!r)Qn2ml<RwFBA9Li^O=1xnq)*z0F`|kUH zP*U9nSzx_<^2w*igbi_NFVV4sxU-&ILn*VZTJ=>+R<6@Dnyp<+C5#}X;b=r9xKQUM zzw>wzhGSg0at&mHHMl~_9=mjQ?m@e)Fu~kS8yp;kXSnKbj(=zz-?(u%E?G`M{EgU> zURa6YhpX^?KX7j4m2SA<W{khtn3K^egD}tb?K`kT<ZjTst++KpuD*IYj-&cH@UDf7 zu@d7sPaTXIdFuW57XZh#^4s6ujy1gm3Yf1|Mq*?#%5~2_|APGa&ws)=x*N)xNiBWJ zal$qA$tV8{I`a;cjMsox{8D!lv%ZvR8POy)HA#1WeDJ|SIF8Q+Zd2r{tM8XVP(l)O zV$H}>OO||%adsyRE8T$o9#u**>O)deH+lBim-M+8fDUn&_t#&413sw|GE<r!Bl7ag z^K=&wkLe(`rNHf<|M)lh?>p>{_!AVK{gfV%cjAtj+iv@VD%zr>gFsU)bnU-1TJks* z^6gB-bMfMj?4Q+%Z2kK6*l@50Mxjd7*8}yfNBu&8(_N}u<yoB+8i~<|A1;)8@BKr| z{ro^|Mj?FT<(JRK{g6vRS1AL$@WQK*!Iyz=F95Ca&^a`2+=Vb^{{i!M2o!vQ=>JBg z!NlN?f4m2!g#&{S^u;#Fn1j(De^YssIMFecV~7TEJ6W_L4vs4K3zemnl@-9~pP<Rl zBTES8T{`;dW#ut>G}#?@+>5$ZqBTxHNg$lBvQT!4Jn+DS+SfeRg}9ZMm+8*3ci;UG z?fDdAGX-T7qs&++`))wE(+e>V0(CtjoeK=aIhg1-((a>AbYv?8z1X5J?!fKU%Q{w( z_2AfcclW~heNm6+;IS*W-+mXA$Nxef4M6|r%A=1yj!g=$qCT_X$UI%0@!22jJ07h? z+5WcM?#K7tsC#!^KdIClGiEZ@(BDEYGEDVD<S%#(9ck*Vx898WbaE?zeq#chNB*w6 zo;W6`7utt2;GchfF4nO{$Ww{?ebLXmp#XkLX)M<}_7RQd)Jgs3H@6?eZzt&9{d#O8 zWiIjv9AE3!t%qLgE{s1$oT2`(Eq_CWp`FUhD^%x{nYj_`(ndAvCnm-#ufUBNk38}! z+BRC1m>iRI@E$#Sgc?^#7ykO!Kcam<$90DGPXNAF#GoBJcEOnNnf&|Tk6``}!SNZl zYxsYAv&xt;qc9g&V?5UD29pH~K7|aq5qho3DDP2qtRgKS&ytsy4=1Z<A#=Wtd6<eZ z;XLl_)*Si0sGwf@4G)xCF6k$mcN9uxZG-qhmaMHs^rI6f_sCD~I0xm9QmknO1^LkN zgkap1$nLCMU=G8MNo^3|MuSnK`(oXV1;4ZrV`u|-**)ToquWSlI0v{sGV(}mZMo#< zZ3h3k8uTw!F1vi1%zfo8(1;S1ciR+vj9+M=89R2MOrOCp%zgFQ+1WXGUZI3xQ(8(& z0(5pGwJ!g8{1w!Nj>gvdag2{Tso5E|gHFgK5#;rVpUo?t)CZfw4FX*V0c-87lkYYj zzz$q1>e-R1SC3t~0m1Ilqi3|vp;JF^nq?piy-Dtt?P?2T;tV<fIIZ_~JJ?31Y11Yt zzs2>L4gfq(n)*ZX4)4A9w&r>A$;Uv`Jivd9z`9fbdEpkk7b495F!13O;3*#iKb3L_ zudFxY`CCvA)`t!N$*A7|ysw2rKxf(usSlYs^HT84m#NeEh7B8(=ipJ#yLN5DvjPD{ z6Y8A@Szr)&rdZT}Jmj%2w3^nRFsvo5PKpjcoYIeU3{6M~2VegSwV#zCRQ%um_AhJ{ z-mkLH#EH|uPY;va1No4Bo>#tzQIMa1{w0;wKl<oB$Rx{@pS<(V->F`c4d7ZxzO5@H z+Ap!npfCEVz44V-=BoYh>#tWr&bORRvBd&1X^m7@RmhKS{vqrf@#sT0@V(2R>u78L z>I!Y@s17wX`@n<$81ldf<qb$1xRJF9JN%oQDbrxB#b4O(HMwC8M%*rI?$UXOd^B`d z0$m}z01y}ea|g1w2joP5*meTI?^IVbh=-5Ac>5!Ipr@C39Gv&Ta5%Ug`mdK>eg(YG z*TAi<E!28q=lpf=oMMi>6oweH&YZKAAyye2>{Rs8<A+9UdXH?~nuFKcmWS|c410$r zl~`0tu!ATlaYxwZ%^46v?nQnoRk$N24a(PYycXcM8==5RQ^g7kq~Ol;MO%`SY{D|B z{QKsc<uHQJS7l{OUi}cNA*<lm4P{H2hDPMMdiHs$%+kAeZ|w589{0a^P~q34g1?_1 zcR92s3RA0At%vYPBL*i++Z|J_Ia@#V?3svNE;FG}wv0*kFEs4G3<KrdxzE{`THdKt z_~8$)Qcv(DOTJMfHNE1Q7!H%6sO>~Nw`|FPSJR(yX(wJ$if3M4B_aka1fD-o<%BJi zQW$c?6W!7#5l<>GSicuvd<DYe^DV!_4?z>p1-$s;>8c>If20zRN*p_sh+jV#^!viF ziSnVZ)^&-y`Wvv@zBac;%2roO*=Goiw+XvEs^K+08%Iiv2@t<te&Q965To$OVSdhH z&lpefiiE?4Z-bQTIa);^#8`;MOUD!qb5ztYrKI%1Zjy7=_}{t<&svx@1OBj$R9qw` z#%Wklj<N9YaJ_El;ro|gE`fsRO?--UynIG|wiWW@#*KlaLvK|GzxUqzP!P_>f|vki z;|6)~!M{TRwqF%1XH?@ls4V-JbM>Q--svC*FUNopm;nZ7nkwt4IH9sOKR+J}{##I{ zeU6=Gmw{oJ1x4RJr7!QiGhgWg%ct?5zw^vRey8GS?%Wrl&`tww`=c5hcy=cf729+s z`TFZ+Q2c(QWq5da!-Me8s`z;U%K6LYTqK;ARM@Xxy<QDgF)=af)mB@(TzAS18q^;V zI4ozLvFDDG*XPBnVsgiholqdYhk9nBJ{LhS9<9%(p@|GicJ?07g0JA5^DUHcmO{H* zx1KnA_h+goqauj;_-xkk%P*IqtUS<pi}BS)bg@5N?3wcO>4Ddl0jsMcBkY`t)Yw3} z&$Wn(w4$Osv_B1s$cb=L8xO^>r4;2(x?Q`npb+~2b7qp#Z|+2-!n9w%zEB)KsrSGA z_WLk~d<%tHjT(7o&z`Q)TZlWyUr|x9I#JD^{{<>jjdA9OF>{3~qWS!J^WKJ0;1XSn zsPv|xFFrn2``|zS`4{S&tYeGDoqzy;7;Ub`F373aDY;SmbK}OH7(bTtnsaMU*LMm* zGy<2F?uH`%BSg#DjP(*bf%flHWivySoAiA}fJ*cRjLA@)A2i}}{jqm;o{CnJ7IS`Q zWMu0*pGn2#v}qTBCrH-u_`wICVQgB0ctAiL>guM(|GVzGPtSSl-@l(4%Ix~4rKL** z_=ElM)+e2`%cP)112cIlJ8=gx`Qu;x>SwqV0A4Cb4f+hn)(bmBEn|n3J3T#3ow?@E z?*UKqCt%?1CD&fd9mq2gxoHS^UyJ@SdIsl|o!CCES9B&|9hlP7ci2DcJ9inTq$KNS z9>>AN`|JdmH1+Bgi#6kVtb-Rp(K=A+jGZSTAyNC14hL)3ZqR5mlP1joZ+fFfg0j~) z=C=i58eEPg*+xH`){$;5T=*`GB|Bj(8>f644JF(`!Ft?&`)@%5r=i{b!RK1L`}sUN zgp!9VFE7_KY5Vl)qskTj#&(lGWRx)`o>TqfA72i`=qT{g!*vbR9}fPZ@|*nZ?%jK_ z4(`|I9$Cn@u%$tpIMT>U13%kGd4q`|i23@_k4msh<h&N1mA}zZif8Q70f6I&W02)= z-QgG;I&?^zF&Q5pr|U~@ZV~u@8oy)Z@yDK&^Ufa+EZQE|#&JRe-P2D$r-pmtnVz1m z7?Q`}I>kED=ueM!DiXNf*okA-9=B8$Y}vBK{;B1i7_-fMIVP@|d~senC$4$iwNGOy z9mi5rlhtu$`}Un!R~KXLq%$*4(md#hNBM$vXQIrvY}raEXr9KmaIBSys-&W9mYKO$ zUz!nrxVwSllQJodTaHx;5BEj=QZy@_`Z%vz>&jysETaM)EcyGr_uj9DOZF|-c{`DJ zd*&G*@PMylU7rgcFH-xDzw<NO$|LZYI96%M=XYXF=V^{F_8Sv-3EzMJU%-3L#u)0Z z*X%!OX=$pQB9FrP$8lk|hjl0az?Y||H+aZh;2CDX`S%tzW^)YKiTy+e244HiUmj5< zSYl#=hAoYajRqaM3geLHJg4g|G|tj#iFLLd+1)^Y;&jZ|W!BtM4SuFVjlXQOouZ<m z;LLEVy!-C^Fiw8~JQD4n^qu^%<&bO5A%;eO@x_<ba7+1@(H~Z*{wfl6_D9|<@b1%L z=)Fbj%X&B_&X<4yKXqcTuXFs49XtA9-L0#ssVVBz$(>eDJ@pvw=>fVn3FZC}eJ~30 ztVK7OyGM^6I!Cxx(1C+zfX<n7m0Ww>)iM&g5cZ*+IM(bjM3T$75fvGX{_U>wnfY4r zDaQEr*15<!GB0uG?y9zl^M`cfLLGmTCQVWY9nKp&aW@R-Eoo?G<}O?=f>YRCnxA9K zt`qZ<PV+mTcPz>AdF$3~2EDCtnDdqqonwS+9ckB}|9rO^*~wcIPrhGw-Aziv$BY?` z{%jp5<P~^U?%cV7kZ0Zkt(uQ9)&sK4DCjqCfLt>cpX1w9Hx7E0#~ynEPHs=Ya6S`G zF_-C>uxTzcbH35JKQ1m>LwBa7je?B!f0!E+R59;ZU~q7->Zl%i=rK5lJ)-sO(WC7g zB+Y!{iF)X7=0Yx{JlD2Pj`BxTR0P)6>H6$dtJXobd<9MptMrjWhKx}sJ;!lI`Gha7 zL3GN0^2z@y9iiO8abl;$#3b}}pc?NhD{FPmktQ**PgzI4n3gYJ1>=7u=JXGsG`&IR zu%m+t6~bI|==k%<BM+lJ7CqFPJNQGIQ-Y|DHBhWuj?XrIFTqa#a5;Zul05U)I(hPc znR4r;J!JBjWch9<9pm?cj@s)s$DWV4_<Ko|A9iGQ@T?QP%;Pr7K`)EoP?nySE`|R2 zm?Nw=9q&zYM4%wQT&}rx2<FfL`Sg>oWY^BU;^E0-h+63k=?0H6VWNZA*I%syuj-At z30@lcY#!OM+++P*Qd}jeX^G&^2I|_#xwCZXDk(x#jOgeH={LYye~XJsP_$)G<hZ9J z0Ovykq7aa@Q6BZc(L4;xO+Lg<<fkhuVF<y|E4+`J#az)QMqu(oR3-b~@^Tzeh4TCn zwWO}D0p&NS0n^jV9lQvS&g5}ZJh})+sxVwO%fdx38W94)AK<%9W4Y$?=z?t<5K_3e zr4%KO%*PEEe5OeTf$t*%Wo6aUyHAqb@tYelPv{KR$o+sV$sYQ=W`8C>O9!=i^FEZq z{8Aj<a*7?cFd<VR2PWdhI&EvHlTGR{=~(lYCP3D&0sTmYQ)3^{s3_$L@4WNZ>eNgA zgY6kV{v73_$?tO)dEdT$!7HVMN1Fn=;}6~7Inb9`b|p)9(%!RNv>vR_WbxDbrJ;^W zK-$aRTE%1jL|slwN(yALCD;YO7_#*e)H6<b1lDiSqJ{e628SDOyk7OFSy{U@0ymu$ zSFKtLUimB4WwOmSEj;FmoZt;SevS4Z@<co$jylPW8&^X1Owy7W4SCR@0dR2m6tcj- zaV-!V#{LR@?F_WR;@9YqzHs4E@Zc*!`-36V`~kL;N72ubx<;K~6;Jr~f`Z-h!<%kZ zXIpN9zU!{PfY;iNaw9MvQ?-1`n_qqPnesog5$P^Iz8l8eaM&;CaDC=D0I)HXjd=t> zOVS0D>nijRcvZs=&{$q7^~L$(Sy3W>SpK~*=bBw{1R6G#H$s+k0l&gyhTPyZ-~p#% z56I1aaP}p?(|`zc?mhwH<sXdW0%&Wr_=f--BQ*lYcP#kmLp+Oi$di{it506(hbh^| z2VS#?07%6>4Z^mvkH%6OPib_GkB`?5$j;7IBUe@y6=ub%tYjFdfPn7EV+p19qv*9w zf&ZR+exi&LiGrO->^V8}^77jVddzd)dDB3I766Sy@!)O>h74umZU&w=OXB31A|iaD zG%AKS`rlF3xhiDYzf;kclar$k0K6|Dp(hk%sUQxm6N1becTLb^-Xda0M`<bGQkmfG zAiPnLLgTV!{Eq}NwUljS9LYRygU9Xfes{;g>V<-6(JR|htZ_$-qjIhcp3U5~bML)3 zYJO)t>1CFe3p^2u*-m`U#EBOnvcP+|)D|b^*}i=T1nQ?CfX_uAMT2<IKxpNo66_W1 z{vZKlC{8<(xuy{5ib;Z#2*nd&-aI0(v!}|cH+TMXXMg2}O4<AP0V&>Gg{2G1Htg(& z3@8O}l}g33Y6+ViEa9_oZbt+bd+I>&*k*VFx?%SEB}7PLb`!>9SqmQa^OKSoIbkUJ z-yh19fi3lATb&b?yCfXR$w~SX$2t`YT%eiQzf>e=WNg9s-va#8v|secGw2V;k|nr> z>UidkM($qt^{;;m1H(Wlz|R%#Na4ASB5TlY%ZcI)YGV6U#h9`BJp{jV$AkxnyfqH! zx!&Bo4`X*6UNd3*n50G+D)x9!MFqpji8=sq2i%ocUV%k4UlqZ00AS)G%EWoiGZ#r0 z_Uze<D;`j`{s8w}F0o)VJYm3LA25Hvew$TU%DGxmQ4N95A6}x<pjbrcV|bwPTp22U zxKpgLk)c_mp!B*)Y47Kse*<BdhUyt=RNx#RJb0ig*>ZCBgBGvA?$q}nERTV==B4P< zajL9jKDH?jWkyBCsL=lIyI-J;fhcRLTyxD;c#frfrg4Si-o?dTva)h8_SaxOr)WF7 z;vWwz<V@-5QQAhkj`{iC2aN=W&il(QyHpK6oC9muu16c!=`MmfbBNhkRS=NQaUEiR zu357II1ffYk5)Xb=XFOvb<;dFiZwQVtWF>oT{K-4tu&(0Xuy7_B9IIg6}m6HFdyF= zG4BRLv44pwLaC&mJ^NzxO@!_Qq$3y4xux=t;fNP4T891!1byFwxjF|5=Sy+#OpMoe zF+Nv<iK|4FT8$7k2B-U-bBPAMmtLBWwcIvLhG9L$`I}(EPnQsIx^X!ho=?L9cWrb0 z=V7;wMN>{)%c=0QcChWo^K+G!)7gfe!o!9Q)g6X3h-YPu)^K*qmVJl$90DPCj7B!1 z;ev@gDkCM)bCHHV8a22B&mOy^tEAWD6DUlQcVH;8l$0b0h~r^c=m$Dq3SM)nt}}Fm z<-J@hXbhx7CYA7vjzz;S9RO$uxaOKG)fmJ&vuy54Bps)dmb-ha!kTl8%n@<s?>2wP zx-(f0l87%-hjYl=;qkb}F;R%R`s%A7H1^YSxNDR2&l4WcG*X>^{x~%XbN8GF&KsOM z^+Fh0M(VvZLh?nyh{kyCUOv%e@nAUbH7rnfr(24YaOF4I7h}ebQ5woV;f@I!yZD)g zCCVj}Cr`pPhWabk7q1f^wu$}3I&w#7dU`4hf@8IflyBH4q}wzwvtPKjb7%a&|NRsc zHrT~@1ZOxKPrmb6>|d^}bgCn!l$SU@h$j;bXI$%9A7V%TlTHp+YF6hDmc#mxN2A=t z{4AG-LK<!-PMm;ixiH9Yg+c35x#G&p^cj><hz<D;$_ng9Iw}@HSx#d=4dEO=T%TA+ zzBo3?SMzurj_t<A2*s42X&@p#%+F)gSg%8qb-p#vhUYy@ER%Aey)$1gI{eAb&e5aA zC`YnQ$;ruxXpyXuC+M`$yLWf(s|_16&<BA!ChgnlL{6tlrl_bu9sdy#!I*#X=x@#q zJ8}+pxRMUJsG|=1n0>@5a;@j?ZqA`2CE_(>#vC=u(~*|g(pi*Fqg>x<be=I|y7mzr z0POXj{cAhoaGbH6{QNu}YkVf_V;lL|$4s109DlrS(;?>Lb7<JU;DSlo4-8+KnYmSs zrW_Zn6UQ5$O}U+8=jyAkz?{7R&t+tuYNaWh50u|%+^6xJSU&pbCha%UPbTu0OuAbH z_wm@QK=hGqL?ON4nBe&H@bJ`eciws9^&UQ-*l;d$EeH<}SBG&%=lklbMViO{!(%Tt zY}f|=YN;AZxzn1C3D;eBjXFtm>z1ha?cbjRhmW;r*LEoCMuFFwre(4m){$eE&t)VM z(hSo3#~yoH#~|}i_KAsM1R~N5&Szrj4}Oqq!go;mF-k}*=r8fQQ0XnPXP*%h8kD(< zoeo}`H*Zk~0MhOm)2Fg{rI8gC<@!99&F8Vt?BoX{r{ivW*0nWpo>)$+TtBTST~<Fh z=HcfF6VBHoD(Hkk{E0KiFmWRdnKI=9t@Azi{0(?s0U2Y8_A}=q=RUEbA(?dXcoN%1 zMd7evy|GU9)p1I?#zb1oqeUo7FtPtRR(YLcFFSj$*6q6Mt^z+hMs-SbIO3S)d?bzJ z8q0N+>k1tJA|gU`O=P>sTXQ|*JRz2h{=$0(4H|^L>8tB3pU1?=8te}$*;zmKGs|4E zWF_WHl+Fw4vZ||Vw9dST{l?b-IA4W_2WuE#(kAu^X*lPX6$!vq9ke*V+Kb>tnT!fp zI@DP7bsX~d$C|SgeZiv#*J3Ph)IR6#KSq9JJ=sTG7uYsBopVf3_DD`fgd*rys25{j z)9_DS%kbetfax@iQfSel8eJbqf7w=!4`R=?aLSZH7&o(YEn!=^7BUZ?OXro*qetod zf8>#W>pS@gn-(y?bE?J8=F~`UNgo<1@z4)h$pv9k>!o`lB8P_fzzFJsc5IQ|`yym$ zpL67bQAr5FinwWkmLmg6%>hIp+On%u4iwgCbV%n>@BG~3`A(WeX9`B%AU(3iFlntd zZjYzT@9RC;+bZC=lL%faO`d(`HS83u)p^`ed+GeTckcly2mST(O451E_4Py(BS!f9 z`|6rqj7>j_KVK?$-91;%8JVc_vF?TU!3}cGdSYF&qH~bm#>NJN{?jSfQ~ACIjN>Zw zeOA^!U8}jaa$K|Q9z7C42mN(!vCdo<a&rr1@18ug*$sS7J$4@_NC+aQ(9zQ0-v{G| zd^nD_1>M-beGeirHe#MfBP?(z#yfT$Vyuy`;CRcyCJIk4tN{n{;Jl2Bi;`=8#E2h^ zgwu@kiV>kCCl5|-Mf%JW#m(Gr5a@~s&;cMSG7Rg_809~XwvHtwWjKOlvE(2^(<yfV zKqX@#OT-*>0LaC<yq4>4JBySx=W`If=}zTK$fGbS3fFt`DCD_$jXGu0AQA=6f38P# zxTTXK6Zv!+lqXJ{4*SeX@CI};YWqMwpY_PY8RaA`tRL&yLTFe}CneU0G@iTyc@u7i z^an4?L^?`mLCSdVyfY6rz2B>|BIO;*qzMU0_&rLUuQqJRRQgKVd3utiCn3+z4RbtB zP{dpNh4tZP3&Q;DvzCq@vEaa4GfGfM%Xp25ur{_l`sma0&_nmCvxdk6;MeGYc6wUn z{M7O1jRn7$0^7ka@l!MSSnym}lQ`CxI1W8LVlfsg<nMp~m)vl}HLCmJZ_MH})Ofke zCfaAoJF`tpv<+)J(U5w~)vB@*Dc!S6O0#!~Yektvq3<KWv(pxohbT~$SbJUJxX3ve zh_yWsGPE0H7H`M^jnEe~VjcIyMoljd$UKO+NgV=38_tI~IN4i#<jI8x4ghT@|H*w^ zYw7lYS-*ZW6#1`e$WQK~u@iS0(AY#Fm?1Mc;XnLv0hqxLki|N0tQ_Ip9d|DAUMkln zO*$X<oo5%-=AFdOncz{-qrr0V;?*q!+3_Y@;IuuLNsOHn2MGl@xHLe)v<ZrjZc2EW zj{}LymhkXi5HKsS<8!(y0)`A3)Kbib4I4F_%WJQ_rIUn)nY_Hhmft)2KtYNMGrLX{ zgx9Ux2!=FEZ?TR4{6fsxc7~4S?lC)&z|i|tBpHOt5}xeeh$pd}Fk!rXsm*&wc+$g{ z3yj^*jyF+oWY|sONkxTScjj?-kC7ECx5_mo#g4b=B%)I2gZJKt_f47Z-bXZ!mc*zV zjnz22@S_rGs%RE}oE7Qf-8!~CBk3&AC`F6l(Tn@SW`>A&GCXl%{BK74{RjC;@0xCs zas3W?GT=E?mQrbGCo0T#@6JLWy{?MN_S$9V<sy`llGL*3G7QSqS6_ySZDGrW`lXj% zhhk`}-qKcCW0%tP-;0WBv8yT&;c&0Q*p5&I!u<K~pyDC2B_mUM_3o{T!1(wCyeC5` zP>IF5>$mGjHRSB)xQ~pC*0Df>Z!dxs6+E9(psbyOKEGUdde5K#7Ip`e$XJY_F=Nhw zA?ONKoP7QDQVruvhK9RYm^iNT^UFYw&IN;$h{e<$O3kI9eT%ST<Uxdi{V5c99(v!( zm8(?=Gi}<1s;r^Hr~zK$Pd)V<6iMFt8<lZCzU3w`Se$bkpb%e)T_r1(9`RW;<dBAL z#<43jT2s+XhH=}r9WWAa!*jA=$j$_9Yl0KdT`*{m(Rwl*@}fnHQO9mj!cBznc$O;R zGBS2TDL4r`Aa52b+ZHbT6uWKSRY91FPtJAH_O70&w7Te`D?oRAwXf~^QbFkNPaz#k zr&Gd^&~e}e<CeX~P_a05>SXONo)ey#xkHWcRIV{J?UE(SptwtiVQB*T+Cwp4zWiJ5 zcY3%of(_R}hO1_Oef#ZdHDFL-Oq$Fc`&3+#p6=eg2lSigvo>PB1?m}1RIGpV%?dSk ztzW-UBfJbAJP5yCi~jond98I|+_=%|timQy>A!sW=NR9~PA%*jUpW>F3Q7^;_%>9? zMI#z)-khmpi%gnH-)96Gl`*E`na-d*N8O%lr>fPQ=S&}b@UiavBX7XOb-#cAJ}~C@ zQeN=MC!c{L{x;CaKH&GRR@%yZG?YB|+{>WpAA(-E!_YB6dBj&<c@Ft5XBM67H0Hnb z(kpPN`=uVS^WcMjQUd{bw3#y}!+88G6aqg}!x8VH0{@|h{-(R^ZomBwIHUd^<%R(x z8oX`>oo`TM7im|1egSsAeu^E=&qMiGhETwFtI><)w3kSG+E4AzIGbnYjyRruN9F07 zHS2JW>z_d5GEk3HVc2&%Bu$=tK6YWeu2E>n@7w9a4;R8n@+(AF7>fEm0A)varLXqy z$NwIzhMCQqx56-S4iq95-HwfolV|?>qSV6Z%8-ix{O99ve0v4!>3`KZiiY$-g9bnr z`3~#wPn7OF@x(tM#D}WTfByM1QC0wqCb{U-UQ!80U>erEk3aqtA(SZ$Ux4@DX&=zQ zelDWyaAzrbh9fxu92|0Ja%(?O(eTVOFY0jutjCBE!&{UIFTVH+cIQ4KfBEwd<#)gT zjm{B{gX^#Vkt!z~d2SkT?!Nnv2zUPmc7)!i{0W6tMg+>t%)mM`2JO976-~sPJi$Hp zJb*Q23w9{nqdQ%>?p$%jr7)oGl^0%kqYdBBHFNiFo>je2<+x8i`2xnY3$Qc%0d-KI zY{zyiTC_-c5h}(V*B;7MRIHFUA&+AV<h)*5iZH=2QqsuhXb|PG8=ri#MwLQzaB$@1 zIY0aL>#fdl|DV0{0L-$w{{JNe2qXj&2w{_u0J3B#qBuZti`%-|idyTab+nFFyZmXL zV6CmIZmkP(A~KXIOWAv6l0gUwVFW_h|L^BKxyhRlmVjdaTzE&`=RWtj<J_~)x$q~0 z2meFs7GFu=&dpt^d0MK`2K2G8Fkige3F4cMu|6{o>>~_!oWY4xK=bDDHb<VHXU||L zWWM0p_EsVzBSg=BXM7;{Wo2b6!s2hrkoLCb=_#cxztv<QBA73}_-fnBq3z+2!5Q`# zLE#_HI3wWGd>t|ZeDu+0+Uo_z51f1M85(n(-Sg?E!?f02ZQYqG<~lJkLGs%u?ahmY zCq9+4L`O5Oe)!=hg12EhBH(jn5qMNlzjtWtH8lSv;$<eQ&ySew!`|-Pxs&Fomhmn* zIoZY^GB#e|Z15F00r~#pkB4cDzj8H?53*>$lfL)f2g+vgN68nrsog)AQ4&~MzI?f& z=<gK2a<2B}W#(*yF%+kRs-<q-+8T4d@ifbqrzjdyS>R;MreFw$N5{E;(W1rfuDk9v z2LQ4r;Y8{CIc?f^+8>W;{A+}xE)}1#)A+EM7*do5JClB;rlu){|KBY`14rf&El$B9 ztnX>(xHbvRg@>;-Igs@jF=CYP+S8H|mMHpZtm!)7jqBBmRJ7A?1fyN;e%>ZdoMh?k zw{9)bd=3;&JXh=2xcoYO4J}pv)L4S6!Tg8TtoWU8=qdbBg22na{`HdNh>hkLz_B6V zMf3qrJ@qfqr8`_gLV`7b!T0gU2Wc-ouBiMcl*Q#HqiJQ+V|DiR##|;QwAI+JmIFXf zlQoi)6K%i2^FcR>2(CO*&W)X8Fhu4Rj*$SC2`Is713Bf@S6>(G)K|OLnQjP~ii`_5 z+-%=os`>ndIZ4qrPO^_Y@`To7s^IaL+6Rd`3grWnakz&<y~ngC2M>B&_ueF&I#9Ub zM04W1?Y0~2n8H98<djWoo}5Ka)Sl=hXT83X7q<zo1V;>d*daLNwA0Qvp7!F4&(!{l zHd&0U6+VKjV(uC%kmNJT2XzczATv;)O&48szB##&Wo^))XC*gIGiSfAzaFDC>u<Pq z*f5Ts`CQq@#)(%+&^-6jzW<r+Z8CL$_uhEpIdcpEr{jz_Wy&PsoC^i3gB3V(k3Dbf z*l~K+#lj0c<ghYFeHx<i^|Nch!b|^o#Xa!H`?UvtAsX?R$%#ZM-get9;+sYZrZx%R z?%APl?V7D_z{#!Mz)QNg{xa;#i{0ARhBIB&GNu1tk+Z>mD^iw#8T0bo&(7)W23{te zny)J(>&!Vh?v;<`yO)Qhx<>UC6^U2CAug;Vj#@adp|r&*YfnyThxpMyx#nsq(1yLi zv8(CnS)vJBCA03CHlkOVH6vYcR8x39L3L{z93Sk!cPLO}yA<@429lNI74?5?7nJS_ zERsUr^BDd)?AxYIV?|fxXmV~}?aLU|t8MF^oxRfi=cWH@uP@hqJH-Rk6@F=}K3^yu zSUc4VoNv&<j2ZKdd-Czub<9AdOVLqM_uv0(cYLoN`hBu!e;eu3+8CXq&Bq@5ms?j< z;?6t2zxLKi#>2ozz{h80t#t3b`>9*HIM?VA{p304o_nVCt%;1G(5Vd@Ho9S-kCv?P zfq1G4ov$C)(a)nZ@V_tv*h>~HNOh0?{a^0x-vzwKzQzSFJZ#t)$q=GN3hMm9i<q)l z*^TN+cG#isn=oj|0$8V7rYWF**r{;TzUrz$a_U(roHJc~<Vd5}XPtF{ek%|kTwl8O zV#y;-#K(*jA23P$;`!1OoFE+5-1LGs-uO%59Q1z}a4XY9X)j%|`msrRL<;?*pSv+$ zhhV}mupWDC7xB*NTE9i&!)K_~itKR60pQb4oz9lNC(rbw*IaX#bj&A<pZleFkc-Tj z_>Md7k&H<o+U_#IA?W6QG*O^_cCxXcN1ruozWDrD*cI{ViIR!m6Mp_sxVfIz$Z7q4 zDW0&M@vW;?t+w{z(UGNEv}j_u+dINn3l96yqr*`JIV&kCK|JiYYQCxI->N<*Ha0>q zTBIY%o|C@gUdc0oLq`BWm0_*wy+_jD&{}vo_!Z<P=;;pZmHH0vuu<6sv!x$dHv3z* zL;PQ|Y`&e9<tkQLe)6P4UoAd(r}TR<(p$99UaZ|ZQ4Rn#U2Vyq*jyv)$<bCigxcC` zVRE)Hd0<!IKnNenu>yy?gjW?D5BCE@+vn`!w6shUNMP&`GC&9vFC5_^bJ9sCXp?s{ zL1psf$x_^0sv2?HMCY3ajonc8#(n<Y(BJp=9f6RAhS{vXlnEczU##+Llo`BG)L=;S z1yAq4{`C$CmrqJ5v|hkexlJ}dK!Jxlf)a}1{V9za#Yo8GJjB3DI%sEy0qy?W@9WT; zh`IpW?i;i!Gwko#(<f^QGish_m4|7!0CT0KiX7YhQ5t(4DfH4rlx3(7DXb~|*j4IW z%ilJ4k;ytgSMx<7`hWZS9j-Keiz`{G6r*dDA~CW`<NT@Dj`bpJ3pTrk=LE_dufFC; z02GKhZoSJHHBCm(Wu|b%*hlHmp`9s=x^zhjoK>VC4K1&{@`fV5h^h&c1Y9Gc<DrKh zGr01CI={0<Kjyxp4+mRVj~zSmB#<@Ne!R%$hRBu29(zVjua|fC+pcY5f)t2nT7<=p z9owWNcw5&hvR)i)AAYR+A<Q`VELbq1QWscPh}=sry{r_DuPDkpTf{!!BFQFCp6%|w z`zC`UqBar}m9FaE-^l>dM~eE}%m{q@?Z1-}{ynu(B&E{TV(R)B(U~}Lq7+)urVxZE zO_?&y6o#A`$~w%RJ<ALW?b|1t0_Y$Ac*zvs9uE=)^Tr!*N-;d$3_m3$rE*RQQg%`Y zV_Hf|swrmporpe|m~rDKm_iJ}6=h@RGQ-yR@e|eeKM8j)P+y%CLr+Oj`zuq}&73(y zf@*!uPYdhYf(1A>y<qh+GSUt9^YZeAuUgt~N7@_vk{62Qi!K^a-aSo|71o$JLrG2v z*4)18t*jDwModG`o~MbP$-1P1^TlVMeJKZw2^JAHeR^P&pE+}?@OLLmCk-xNu_99n zvww==O_BlQOH=-nnw0ilfBh{Pou)`hm!~;yAmidRGY*o@`Hz3ROWz-~zC$~xzhJ>a z87GEYL|LAg%y8kiRT3VOliEtz(AN4z>M9BuA;5K<!JLtiX}@{+u|JNGH^v36?j*$u zc!x|Y7)w6+<O?~QjFxd@hQaR<(%qxoIOH?1)7C#QFiVnh0URIl$Lym)B1<Ptnj)p| z78#dP%ZwFx-v@jIyu`qPKi58uGG%<{&K+%k(JTf_oLMJK_)32@mm#dM{F>*rfOGIX z&O4O!^mGaJ>&*dxeTwHl_=ad!qV-S;LYI2??k)WB4>Q8i1_gXh1`=oy2003ms?R<5 zk_=gk_)9!#k^O$C-Voe7cR9&*>Dt*0rL+sq<P72g1J1Gj`Y2I&SNcUiF=QZU;rz64 zA$`jc9c^aDHE4>z=ivHD3hgjcCL?fDST`J}Mva=KHQj8y;ONm`*tM}^CkoGW7Ck;m zJYkF(p}7Db@A)|ToS(m3FRsLzGuH4gzI1cv%n@!H!jDn{ysF65AbSqRN@!|8KZ13# zN(b;(R8%BG+>5$njYYb{lO!c2+T21%lvL8?DjNYtot7<InDMT6@8h-RGj&Z_uLPsO z3<h|d!<<_wWzyFgV`CXQFS6_K^3l;`V{4&(SIb~`=FHhjw?1CVdyZilr8SE&M+#t< z2x*LUp#_Hz44u#|U_CQ)f$r^FY3?xGEn7BUw?&!!gHgcGEvW}@yzv304%U8>Vb4e4 z2a&S{QZ&3KBi~Dcp9)-nGfs5$PPLh){V>R)DR7X$!0G84k=!^h=E+I!!=YbT1gGye zbHmsb|6TUeX3LIq;e`Xt(8J!sK!(8(r#_Aa>)*eh%@h0-1&3eg^<|e`BKn$G)=u>w z%pHbTy#FyI(f&E-oGlrmyV1C9WyT8R%HxmkZoH*$Y5DRL83Ts6snfnS1>k}O*)nwY z^_Pv8`(VgWH+9Ol<_MaXSE%;4h(DMwp8OrFH+Swd!F7!A*vb04rsOxq?nGOc*?#0Z z>p|a8oKnc*;rGwHdGnQi{A2MClkIi+<rgU;zM0AA9ACiRX1#)f?65=1ui0i)#QA*A zoXPs_dfS&g2bj&y&QbLO&GBO6QMnhqg@JR~vP{9zf6Z~fUArWcH;JC6&^GJm3wtd; zzfipOi*l4b!BX}2=+RyG1Tr@Gvt!2&I`{q|8Soz!E+(r*z_-B*VPKvz1zgRVa_rSE z{kBBL(~kZT)~`{czSf*BvENYAGG3fSXseqd$Z@s}jDtaT2;}_x?z>yY(9&`~5jaRr zPPRRWlMsb=!2e%=Jxn;Gt@ys_hR?wthoXRkc*eEY-e_y)+r&ZQy6djd7-|~b@w9_^ zhQ}wP3=YOPe=JzASaMDv4`gNKn8QzOtWsMFukLSQ?AKhYW6|VH%-+F>@7EDois<o_ zlm*7e(k8IDXwecW@rMf^jWB)72`BWjd$~@A1#rXg;ZyY2YSG4?+NXW3O;Y>ggv&Yh z>^TaVCNcI;pFT&?Xe;bITIkWFNsG<d!Ou7QySJV*c<?_Jbx6coJ=+_NwH`Qd;JC-S zQ`)z0F9({@(g_Vy^w*pEWs_cw1h*Vr62K@KEZ%$XRq^U0HOBV^>#3>}D`j!C&ArEi z`cdm&U)eGWtj%rPwh9jVx}I`MBYTFQ>)yS4NgljM&Mh~KMrGOBaxXZ4>sGQTpj%lj znu;-zOe3q*<|@qv^W-G=eItW?Yw;NE1(%Jr_I2%dvOD<V@e#&<N)yck>jfR$yt&kM z>ex}V=^x@xltHabF2YfnzKtIJwG5Nn_UZsYU!$X>e3hX#HGPeHf7C*^QD+_3m!XEJ z>y`PN+}ve_da{BxGS|BohRk%Wn$>p^iij?eZfS#@>iTq7b`ND=I_tzX?&S}cx$X6E z0I=>J(l_Rvqp5Z(DvbTjemPpIpMf}Kb;!#r&|b?Ej5QaIUuC$Ry<c5{mq>2k)SSDR z+c3@bt}43I>h9auZw(rvXIyK2Y1Rx~^2Iu8rKelIEZu#hBL^l=nrFOG%T|qSU)7aU z*45XXFGKt(+P7hDfwBgzT)En{Y}L%<_xtX@&3&NYtw$do;(l@cY3}#;{MzV9Mh3Vr zM|h!`8Tb44JxN(A!o;r(aaq}0q~s^NRRcNbkg+66`(l$@vN%=u$gsa7Oy?+H=}yx< z=nrw2$Vgw|V#R~DXwg*qg=5{E*-Of4W3y)9qDXt*(xqwAzbOb!83E2ZTR2ZJ`P!>P zEAhPhnxmuFkIukPWd^{x@KFmFE*JfpDqj3#lhyXrf3k{<9Xr{LmE#Tc>c_&_c9J+e zl8k`c^b#XsIIe2Hy}hVQmrm;MX3@~k%B#S;!6R@iVR3P`aB6U=q-2Y}5abo`-E-$o zw+oLv^5=3MiFQL+WxH;e*!PED)Ia52vulU?4a5JJUyc?%$Svnz3JaB~xlx4iCPhVA zdSn~PC4CgwI$wPMQvIDLd3B-W>9<UOj$`|P0T)QW{jK=&<>I$1+hz`RpZC-r{7<i5 z$4P&huKrCem-(O<MMY#dC=uTrsSLi?Ti_P9%@<yH(R8jv%~KD4Y|50c<?Q>I>ITu0 z*agej$vr*#2m2j)uYy*a!K2z|dmTXK`qfrFVt@3q?M@lzG5n+J+acb+1~vfg8-*CV zNa>O4>6-F7%h)fQXB}l{s~6?!EBkJ#qLR1hT209*JLMp-Q*tRs9P)~iZlTRFI_^#x z4Qp+dBkT69L=@;?0i^FBAO&9MaF;+zIowa#L;EOs)~wkmgf&tI;jIGxZI&tw;S5C^ z1?C#XAume*{{7ttAABgI*?smKf?{<AMH6LTbBGcL;RlcW9Xo=Qth=|je+xlhG5Cxg z{kfDk{Vh!($_0K$5F#xdUY(rf+_r6-N{`vJsaOKoY*WG<2r)u<MM$kEfu{;W{k{sq zAO*#q;MdiS05~h(MPv<g8Kh^S(JB=xSGTrEPe;_nu3Zv#t2Rgr`i*lj%IH$17Q7P% zun<}xaK`vcAdF~I$JLAy==w2g$81}(UFrWz-1fCnrqadgo?BZNbWh2Y&2HzN+G-&~ zp>5J@DY=)_sX0=FekDQ@F9qDO<=x=y9pHtiI$y|Ufalsn4-J-(|C;~VK9iE#N~v<C zDJmGVFMMCRbZMC)El~3KYd@9GKmpK5LR^qSlYSQztdRiHNORUpO1ecFU*OqxqRum! zIB|jvEo2((@1Nou>xU8uMJNgn3gZGsQ9i<;O`ks5UR>+csh0@;nT7*AVMI`)kTHR@ zph;5P4;XN+l$1D7I7Lr&l(HvIN}5!)Gt-p8?b-$BvyL43mFm4MgHXEF9W%zcOD?`h z3NX%RZ6Vy!Qhlju3MTr4;s3q&h6uk*wfY@8bhEzNA9{lc%+4-QD!X}75O1_=1qFo$ z*Ry6#krJz$MTbYr=>>d-lK>0~3PB7AC<2KXBoY$C^4z%#&0vEw%zy#snNln}J6DRj zQ8H+awa2z>*<N$#6~ewJKmI4{$oi(IXGoczr!jgG8SGySk0|bX_UsurT~%!BN}b0k zY4&U>tu&t$yj&l7<WDjdT&eY#Da9m)o1m~yfG6OGG?JvX<VEQ!0~!kS;^JaOmVGRt zWkhgO**htCyL9Pnc&e7X3wH?~p&!)$=%Y{F3opLqHmrw<Mj3gm8>OgUqKq*lkWTFN z*Wb0sHx%Ls3d4twP`@$6G_ZS)w70^-Qtge#W~cza0(a~S_EkX7jw;`dv^6`l{RvX7 z1!?XMZOaGJ8WFoomZa%L^x;C|ci`#Twry)KggcDY7y!V@WJAGlLds{1+Y=_t)#IYY z=hhOQ1&>PzPyzo?zy+k~%`f9)N!tsrK|vW9r0FHyY{375lb{!zJIp=~>I8x?2CX)2 zS{YC6c}pBDXUzCU?X(iEAf5Z6#l`fYYnS%6H$CseJY0F@Wrjbw?)g>(N}^u90S}r= z`gIJ`6nI?b?a<MSHR4l~jplme25m#jcJ9m)U2Sbn3fEo7Ipy`#&lsa&))~Dqx0Jwe z6f9UUM%JLU+O8>u#!`D7cibJ8L4dV^=HqAu4@n6O%zO)Y2)-Ri!2pKwpJTKzx@{27 zr$F-=3x#M^qR=rWGQW%kB?E;%`|G8p0c;H$HdXYblN<>zv^voE*w{t^t<x_U@o`Go zycyoEVc8kd-OK@i8=|8dXkHU4Dd~xDc<;TpxU3Ry?<RBDx1b;VUAJxv^^r64NTctW z`=Angsf~<MC|N>FczA7_*U;bm_qug!sh?YP{KX4`r^ODr1Uk%qz&RI#9z6c(XY^Cn zv6(U$uJ^Z^ArvQ@;OxTSXO16Z?SKhyyklPR)~A1oi3!?cvE^;>1taSI6pZOU<sUo; zJk@{!=i6HHOfUbkXOKS_i!XUPR^k61{)_+9KK-8KkBp2=_tcY*mR-kaTqwR|t8h|+ z!6pVsU>g3-kE`N-qF6kPqnJ<xgVriOzN20hvP(urh7@uyYyDaXPvx4?oQP@gAZx~) z1-vp2`au?y<;zo)H9*X(WG)KNDSMRopiSj4ym@m;Iex;KH7zYua&nY-sri-G%p0gt zn1w1eBO+><e&NFp-;;7}u6W%X@poy0gZkp*x*OjNAAy4inGU=RN}n(=fA`%CzG}Q} zg)=d7Gau{9`^q);TS^KJt^wR`)!!(VSvS@eod)~TUyq9;UG1r+OoMmv%0A|obx2HX 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-tfc.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-tfc.png new file mode 100644 index 0000000000000000000000000000000000000000..b6aa99ef801f083a4c189509ab8c6d37cacdeec2 GIT binary patch literal 303560 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-token.png b/content/ptfe-releases/v000011-1/img/docs/service-now-service-graph-webhook-token.png new file mode 100644 index 0000000000000000000000000000000000000000..e65e962b78b186ef724f1a823c25c4f0075b20e4 GIT binary patch literal 135170 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 SVm1K0-<3-?X6Os<G5-gitmNMS literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-store.png b/content/ptfe-releases/v000011-1/img/docs/service-now-store.png new file mode 100644 index 0000000000000000000000000000000000000000..89483f4b2cc2a784fae4809595851b6fdb2f8b3f GIT binary patch literal 43209 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 Cg4eSE literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-updated-config.png b/content/ptfe-releases/v000011-1/img/docs/service-now-updated-config.png new file mode 100644 index 0000000000000000000000000000000000000000..30f01cde82fe31c65ab0da0e7ff570bcbaa0c2e7 GIT binary patch literal 156774 zcmeEuRahO{vMxb_h2Rh@xLXJoVB+rX7Tn!kf)m^wg1fsVI1_h=AQPA14tKJ$*4}HM zv%mYY9`4JXUpGCvduUaS8h=%dCR9#F6bS(r0RjR7NnA`w0RjRs9s&aLC){iB6M3cu zYY2!pd}e}za^ix5L~`~v#%7jA5D;Ra397Jaii230nz7M*rmvv$0#>0>sbA#<j0>E= zu?e6N#lM5%?~SCRX~I$x`W{pfMy2+un$#JqcNH5E0obBeMQfwLH|GWNIQMec>3mMV z9ZPXAIc|sYU4)Mmi;pOQiY6UK?}xsf=%*x~66c115z2<Q^kWN7qtzD?4t%8+wAh*C z!VW=VRk<ix|FrO|8~!>fYX}A+)c;dL($I+C4FrTMt18(jlrI%%q+lmB@106EdC)6? zHnp%RP?JWOBFHsrn1Ue)#tsicf(AeG69L4`P;}vr!&FX?Id4y-KqeoYFD`-pNqTxQ zAViU<A&8A6B>(Q~G@;|<b3qDc+2DE}vcavEq41z?G%av@_<?uov{O>1!Ehj$yo?5C z<LA4*biGw;BWa`reaw*ifMV1b6bpd|{_k-Mf?pLrlKnWf_n7ug8}jFX;zZ#(`}CB9 zg2#tXH5>`2_^a5=pO3A_HZYqR+U@XDh!e5S@EB5v^1LOQY=r!c0Nzv&U4cJuKkCqf zgco<TVJ|c0T_y94Wgt(1Ml@;?921QGxhKB>bWaHi*OqZ_5RGLYrePIHkY!KoJF|yv zl>T3V{NDCnbiC5|?{cdc2L}mK85^htzemdb^m4<o`*HU0*-9&t&ifPg;YZzpuY{B9 zJCVqEsfbZ0ghW|fv)$Nz{WOj|A!iTzTLyMvR9q5zQE6wjU-H_hdq$gYtHY{Y1>S2# z+j{||<FPR*qtF=#wgQ9(H-D)5e)tag<olMas=&XP2px{|F7@tbMjIuHt?#=$D4r_S z4}zp<M%)6f5il@6WkYU=TwK$$%94=Jh@YL36LgRGQ_I+O*+>upfuCRl{4HG>V<OPr zdPqXZ5|Q2nySy#adS}B{Hu>Z;hFradLt)s3@zrpERNHDG_8s2^<!f}PP_`zX;|Pxp zy<hu?rRbyISAw@sS2BOakBhqsHOcIfEN7BXVLW3PecJWE^9$3;drC%JMl)~u>D`2_ z6bx*7TY-FNXR;d{de1k;5N$-gk!T$F6nC{|{HuFPZa#)!kjf2uA<6RbTufP0IY|%G ztioqF3NSmp?pYh;;e9oBM|=;M4|=i;rSH2kFsY84cRPfeh2EXFE5otqkCZt5weL=% zsV%swZ+L3RPw<2H0f}4PjKYE70N;b4bKw5$hB@!V^m{5zDm7M~$<{>5uki1MwSii} z@{W|ElqL{)YuL932hw$it$w?8K08=XuYBiDfBg8-z1AGP332H3W$Ag`Wi<5_F98rD zovSAy<Q#<0(2nv`Qvm6hh5Iw~urF(R6uK=;=67spUlbJh4L-EwH@RcJ2U>3mzASux zMfE!WGmIJ(%@2_(m_vxxA3WpGk-l+1-!#E7d^z~ZpvArN6J{6o<huzpzZe{54zYU( zlfK_Pu?!s4sR(5B2eQ}V0t(TNLLp+&3j+dq7}SC^F(YF1HP{>h=|ZEV83R^Z#FOD| zB0M?oO8m`pf{MsFagDO2STG_4DRcIAS?VC@1(I?wO_5p<t%PL1VNV>GV&6d$e1|Cb zy7!qPnY-`1ni^T+*L*#FO9mDH1Orwz?pesJbLBF`gKnM;q4c0BJC7#+FQ=~Q;j-O3 z8<M9Ip0KMSjq9qX!LGbd5q#wDP!8eVL$m1th%-K9$VpLAT9V?Er3ZNwr~Qf)BilzQ z53#moq(Eg3tqqY3JqShWLGO{-FxY?y6`CYnh-njxA$v<5r6i>xx+u&k(;~1>;U%Y_ z@=?WJ0YOPZ1&s!iCV}=yiL<~_crRtrq=s|B|ByeD?0kTEaA;6-kbX;Y%lgbD>~(M0 zhHz-Ep#qj14b^4*RJ=z#I}ivg03HJ;fRLbDASTcwevFz|>8a>jv3_ZnLP`;dym~>6 zHYfmSmB6k<GZVWnDP6EFpCoTlTv&u$M5ts|^0vfMIddN{Lo*{XLtDZ)GhmKoE>%Bh z4r2~7zn@_!zATQLp`TIT$G>deSKbevwkbh29cSq?6*Av4rJI>Aw$sTKjmtAD#>pO> zqMKa)<|c8@gp`{yp~k{sMQlZT#8R#qUSyQtI}4nqnOQ8K$(gAvFFq>E$mSMomAEf* zPI_BlP~1H`IICV!E4vdkT8J7%noN2_n)tPd(9WpGV<o1gqs4OtZRPdKK}*)fuKO!@ zb$8m!)QjVT&AW!XiMy#w_T8-66TD*9Ne40)!@&VB(vx@DuNz)7y{>)J@U9N;%{yG2 z*EnHs=5R7U9x_idov{L0G^`wli{_Gz53T4v=va9!-*9NBjpmt5(e7GZc%wtbeMS!* zG>&^4H&&oha9R*pfK+fjLS_7>mZf&axZL=0yKj4ayLRMY_(Uz5{v8$$mIeK&Mq6WD zjZ~eM;ez3ULB2(A15H&)ZHtL?{Z)0Qv9^KNNRVlF)nJXfjl%*~y;Jo_Re4RjVen$} zBK+a(l2atfS9?Nod}ZeSg7z@(DW0{C(Wjg*k%GyBIf8NBLlfJ%aiW#@Ud|WnqS*bG z{pFD^{ic!dIEtSNjD{^JH7P3;6Q=5`r>p%8b|S3a-vbv$Q%>4`+$JK9kS`m>NR|$% zs<NwATeMqLrZsDZY1S`E2Vs$hRma<nX8b(f;Td}jxfexNjRHh@z4vij^e}cizBt4& zVU6UqK4|LKDbT^M9MREUbv(g1kzUp2q2R&K!p#!xFzx`XS#^vhvkgmaGi*!pit<*k z@poR+A<yE^!ut&K4s`Z(lJYSV@nnDe$)9cZ+5NNjXP;=v@v?069|1qde<u83UkI{f zXiZ!p+`#%snMbcg&casr@j^b?D*00xIX)6Hye_6UV;70Qy9o?<l7*O3k`qyNVd-#A zeCe-|VHIKCxXcvB&ch388i(=o8Pz8n4;zX7D-n&6Nj;4eMdVUaMbfTWyIE?9^Q_(% zHyoRc6nm8Lv8i$5gYbh(v9J`-QfkaO9^Zy~HbU7c)TL9I_8tr$2N&X^WaQJjQfhbu zqhph6m_dk?v5MU|Vn&53g;x&h%k|6H0Nqt{9mchA-9Deh?F5y?*|_6`4w`oMZpvIh zuIzU-B?KL#*Cy7(o>`bF_1qR8xR_drMX4#tccSGKlgTa9%vqfJre$I>iqxiAM+_EI z%^o-8P8+nyTokMwGO-?FY?9O@y<-5w*Q1rd=MUU^cTYID%mK`cCX1t5AJ5hKKmV|) z{iVLFUS2D0%$WRW`_^G}yLn)Fy1D#(cpG!%Ad`^ArymmNUk1~O&54zW*`b}>RFywa zW$Hb#sq61uOshhVg}tV=)oi+{?^*rXu0OU~a+dy9rHi&%ZeLA9=gx@QWiL>-|3TyQ z;Ac&p5y6mll8qX_7O|F{LH-z!zzEj}#wbcPu+m&hT35T~?kJVoVl;^>$wo_3omPEG z8C7MXZParm%t@DqnWj?pR+&`^Pl>VEyEC)#3HW*q=@Ji#J<<B1PP}Swb~}3{f;Ev9 zq#2@l)(BWht-3t4`MPG_xMxGVa^=)&>oFIZOkh=SU0=_I<jhbhctGaV-b!)Y(zfK| z;?VB(xcxdKXp;MLl;PNUJGF<+A>zthOICH~lW(uz{+GHh<Pl<<!+lQ$UkfU>^R`C? ziGwvX0h({$JAZ0>3>l0m$z2ppBFx37<z#bh`+4&nej>CZZjX|%QO2y@!~CJx!fL{b zpiodYiwoU#ds=;aVRNT#lz`*J?r9vRFR&oI0vm5hdlC8R`0W12+quX-N$aFk##UYH zJ^VSh!?3Z0IMv6>%;vrh=TrBd%Tc^jcI%aN*V+TD6P2-}!==jOt+iWEmnZJ7_SpOV z>mkB-fTG*(?WiDzxr$umN5Tf)FfYezrt8yi%4XRPM{MqV9(o_+hq8wL;vF%Y&nKWA z^h}pdl=hot)rZ2qtQp2~-S;;`*OgaKr;jU@J(aI@8NG6^jqf#g8q1;Np^#TWZTAly zTVGa#2?%ir$GjyTE)LHx81oo0b*(xYJP{wAZ9bUT%JrZ+7<NLwD>K!=g{W+V;**B- zeLZFp4}W%^RYr8iT>8fEIRIoLq;3b3{r;&_^!i6<S{lUR0z#CooURoKguD{O#_}sp z=R;cp&eFlrgh_#b9bajAT}20lADz@^%sa?-&&!a-CCoR?kJ$H0o<^0LX9Hl9BFsol z+*n!~f(D$1gMfa83jqU8y#k*+ukikr7I{Sl0rkgoNC=2vGYIHE^T>d&FTZH;`BLWh z6)H9e0v3FS20mT0A^*ya7@rOGR~qss_#FhlqM*1q_^N1NZ)9ZcU~1zy7}YliegJPP zrtSa%fkpmuz7kg;`vtCl&P++oQB7Kk)4;}xLC?@e--yB0%J!um2!JamIB8|%s7K^# zWohle>B>#=M-EPK`sFbr3DF-}94)v>)THHz1a0h%h}alDFnl24K_DU`0@xcGb1Ddl z{8=1)$4z4D=xEEy$mrtY!r;QpU}JB>$i%_H!T8}L<HwKm;2iW0Zq|-^uJqOpq`xcq zs~#aE2LpRETSqe+YoeEW_4I9=9JxtIUK;w>?{`0qT+RO7lC{I1!vYVG@#PI86T=6_ zf7J~x3V3<SDQD(tWT`G>W(B4hxD6h5W;Vbd`Ty6Of4BIzl4}1h`H_Q-<?luR_UeBY zRdz747qqbgx9Q09Z+`t*`0p?OEC^tH8T#Ky@te+nJOvY)2LZtNFQ)Mzh>JX#g87JV zCM2r_zJjIf<@f4^yHvlg;Pk7MOxm+*Vh9L62yr2PCD&Jn8L*z1!gGDH?nV6Wh+?q( zB}9{`&}G@aa5P~@^*JPJRiFD`(|o&8mlKL9@yC?o%cE+)UiE;7o{T$5kEl&)U1+Cg zf5h=NG%+cBayhp2*p`y(4Re}=dkf76@z0Lzaa1_}?6&a?2bOpLtR@KPH;^dtxum`j zaR2DwBPNI7cO&LLHD&u}6+yu9$wl%&Kob44BQPEU8WecZle_Q_D<Xp6=eYZa#DRdr zPykaIdlEg$_{%@73mUWw^-sqnCkD?arz0i{NJaXmga!)_@;{OsFg^ai@cdte;{ToS zpg=$>mnap8MBvI_?#~n{6)Rxi<Kz2k#lZYE$$e#rSXmQBGr1-2uZ{{M@YpAF1cNWT zfBj3$Z}=hn?Rm3_;r}Y}e;w*?N!o>OaXAqgNoAe+@)PzI3dA4Bz$-|L*|K~NhwW`X zaVp3^)gA)FD>xwHakKEyf7hwsO(4l76Z3!xw2FZUpkk?%NeoO(;odOJ+<^fx1SF(O z4qmd~_5axlH{{^pAO<0!EH;Byc5?DNPN#hq0xswDw}d=WJEIvx?O{2FC{(`Ccb5l} ztme}nG@O6^Wa6}YV0pgUprWTQhiJf(hWy=O3+P1`Q#~cKiM7%*jhUK!9)5oQhtV3i z1X|tH5|#4L@zo|{?^8LQ+#BMPrczW8kaPQl!xh>|go}&~p_R8EYjX6INXU{&o-`lH z{L1UHWX1F22E`peF@-w!Q;s(@ebVqbB_UY%`t&D-ekFi)UI&_>=b!g~9~U@H^%?qG zZf>#l%A!)Ou{2gp67}bDL5IJS?GP@V(<#jPWL0{p@gxrl_U*hd|2sHe-z4aGqcc}5 zd#i=EG<^d`_Y|~=KZ_B4fJR8m)+$tKbCox@RhMQ9LFK<)P;d+1=-u5fik+?yf)^C3 zXq-^(3>m`C;*~u&7@a7YN9>>w{oP4F0SO5IGXeLF3CsW1X}>OMA`%k+R5mMt2t3_m z5)xT4vFtCf$dePf{kvO(agJAq>R5t3xQX;}af+X{D{Woy>fZmgAQBOxqLfDD<Pi5s zF!zRI7b@gS$S>3w73=pRSoT)a3_fPtlQ8IZdP9|Kw?=Mxqkxy??;d~1JJ(5Dw^)_& zC058_yJ&FoZ*BXEOfDG)<S#D-8cAjU5aNA4(&)H5z78=t(oq%`93ZEwLtdl0Cs{*B z;!=_yGGvm;BRJ(&|7|`VqtF!YFDdrV#?K&{gL{L=mK^k!z%sGZaqlB8_Z?|0J^p{2 zAADCRDC=?uv#JV1iK<oKsivvOC@6v&tXD+1T*91yUltTU*u(raLBK2?Pz1BMRN-i` zzS#TG9W3ca)ASr1DJo@Z;?Ga5Z@SI^P7QJ?ZBl&dl)SFL-W@GO>=d_oR>-lx5T9xQ z8lg2?Yt$+tRoQLBFwj#kUn^kiI-XI~C6QJz=Eo0?N!Cq8#l1B2!rh@wN+P;3)D0@= z7iymof+ykm8pqHztM$~j#NE@q4gM07`-K`Vt9jX`9sd6i#NW5SqP}CQ)@3^%E#j)s zkOynGI^(ENxg5^#=?00x{B2c|BZ8YQR$NkRFHkAh5b@a9+%!AgAg{9rl|WALus}lB z#C?ZCUKY)lOrlVu9FqYK;Qb*0-_gN+VlIo%;_*u5xj#gd9k4&TIie%+NmfOo8T@AN zVy%1#vuMi{+0frV@f0A$nV2lZWT~eWu)ZM_^1jzi2@W~e9CclZy#`KOrw*>3N@rNR z!7=juU4N;fjJ_SmU;NsICZd`%`<_J#EhNPNuC~JEgiEh@nScl%>Titsivomj@g^4R z+AWSb`!l6D#X@2XDwKK=%djCK2>%{(ps%kQebS6&e3j=~$0Li)Du8oT<;^;n(1-AV z$BPdL#{6>|!ll&o^dmfI0{p+RBvBf8NteOEzz{lGWG__0(&{`PEwZFI_PBBi7n)>N zrjak*=p{gZcHX8N3Fi<EAI&IidJfo(j3Ic7v3?(WMJ_3qR21vDLY|MWk4hgEk>7|+ zkaJ{r8fj<yyMb(5RNw42+l&*y#3HF^gGU)`S-gi(0Nj7UB0n+x3Z&EIqTa7WG%+zT zUCiksnhhnE>*NcQ{cV=}b%|&5f4KuQS2Qdv>?6c*CU?KuLV@ihUn&20Za<SOuf>q6 zT^qFv7g+?+-=nOF18cZFN6g^HRd-4*yZdyPtdIF-LXMaSHR5h0)S(?*ZehmhoYE$7 zikA8}gi16l0eOe7jE3ZztE!}M29=srk?}tQM;%dK{qA*O<O@nXj^DBV()+Pljp}+U zkwIHTKOg_ULiF!GkYLUgB+_f*;*@DNW<EWf%SuQ{T=5F#LH~`{R4mY4T>`}xa~0Eh z;s&`Rv?^tvEkK9}()SZ`D8CZHEw0820RA9^-yvCcz;vLOf80iN5;RD*TKUWm1T^M+ z3~j3!q!f*sxG|ulYMuLpN_^jr37inbq?P-mY2VlqN+~nhYFYkgH?wWgUpSNXjBmpY z4dRHzhw=Yki!2yJu&+3hYCEe#<z6~$59hO5%wj2^{Rdj-Q-Nc#n2iUoy~c*sZs%Bc zdxcrGu>_O;e14>0aPP;JZ;JAwrM4s?CB%^U-4Hh)K$!fuOEbB9Es_#O`-+`e9Fivl zJQAV{oNh8LVV3z1gFwtZjWo{3J|}nMHNW(-x4@UR(NBwbyi6T^f9jsXe722Rxk4*6 z43kzuPj5Y50$#|B8Ux!UW;ByabZ1mM&wz4tG6+f2^or5JbgFNpSz#@m4#WQ}Jujl> z4WwwK<+T_j7Lc1n0Qzr|^%pa2$!v${+l#DMTH>Rl`It>czj1q9arX88_5M#qB$O=@ zAz7?inTdgl%D>cTQ%LBYyhjZm`Gqfs7(DJAju}&`KgMka2JwYi?|X?E;eczE@)<26 z3B%JiI^4D)1zDUK)BsATyF_Yf(r=}PG-qSU4lIUa9a8IXFRl1J$Yj5c8e{}KW7Id7 zU}Dm1#K$TsP$j5_!EGqxDa6Jt$hLLa(7~LhqQcWr@j7f{^paD^%c((=pZ=K6MxoIu z`*gI}5-!qy$>ZZfn`}T14Z3YF-08kU{=JeMHf*<htcjD*1pha!gYqlFw?@i)y$dFl zY14z#eyhj^hv+};w0RUTx+A&Vn@Xd1!6a3qX?zusEg<=_Hhb((*uKyfytc$g<6;5N zg97cjhPGhQ(9CY0pz4mhdI1wIsa3+O?4`nrjzUe6UZ0DXVPKtK)&&l~?UA(cffz>l z?x4%i%T33#E$YQi8^R18haic>EpcA_Ca?at2*}8Vbz9J3Z;*59rpY*)d>AvLxJAwQ ze<+nWs+Z`LQq0)QN7JYlNeOp_kE>uM^4>3(*12D{c*+da-=V~}o_*JOi)u?r6PyeP zmVpd=^`Gnocb&=>y2Wu%ie9sUg)UAu<s+v48Kg_l1kt}mW<VQ~gr@VT!8<7b43k!6 zyv+^KzEOaR0QwB#Woi2^&WHIM@xb|?UC3mA+A0V<D=bm^2A-`g7r+SY%{N19qH(cW zT@D_F`fBe&$uC8O!<&?hHbUbrj&n#E^yXiB<@X@+v-PA;aj8KSS7jjocxSZtti*zA zmjur+Og1DJy+5*={A?<|YZe$@J#+SvJbYp=j*^OsKBh#8PL!CK-!W0uI)sBzviJwT zQXxN-`E(JJHkxv37ik!3pwReQc#{0{)0Z<m-2OWOx#N)6ur+CXX>6)B`Ddad`cJne z91*yzv&+G-e*vVwJ0ZZxM>>ry=RJ1|9(;jJM&HoU(IpR){(mSEFb*`IZi>IVY@G=K zPb7Se)`rjOn`dZH-~4>V!6+Xc2Jl<0HjDAW7whE!T<GJksTEUo!YVc<(S@X*#*euj z**JR10hNdG2uL}y=CcE2G(Mp3#Hn`sjylB@`>$RWK^^p_+ikqP%Q@YjgTE}D(&?jv z0|MmGWOq4Sf1w;1^50fybM5t<=Ef(+3Yo}c6->t)(&)5(N(iTsnMj~jkTWO2vu+W~ zp(BZEca6C^T$05`-zfG3(ST7eL5XfB>P(q-lte-~Uoo+s<C6fO{lkON-D!VTdxe2c z1RTGc4mWcV_J0Fo5OA*I*`Bxdj$_<=SSZ`WDUx7&<nkl=H^0AYTi+AtR8|X#l~xyK zH1AuGs^h~A{2DVq0tyuo7%4CkQKF6fp%6S}z?16&z39_cP~cgMFo~H+J10ioWj+*q zsN>k^O8gvMoP{z=n||@b&>|~!YHt!Szq)X&fuN3?K?g<;@r6)sncvfFI(o3W@8vu_ z0pt`ExcX;5e}2}PxQ4URYD{FaSr+rSJ}zLUlvTh*>?iH+rb?bHQmg)^L`RoQ6VE7E z?*<Cm%7exV>z`~s$KKsqsCA^+1`uq{;Q9LtQn#2pna`b?@4Gsw(hQNDvtT8_+A*xj zq)T+Gt7T>pfECc~Vb1YyhX2pM-=XiWJ0nU|D@6`w%L~_hvXChLBTMuVbVYjuEUVdM z@>O+y#b8{ap@$n4SYgn-%(nd${`QyI21Xom0_JK|W88?KO^dl~70Y!M7cfE;K48$A z{&H5<2_H_~S*|#g?>%H-u(z7wq19Cd^#@@RzTcc~7D*;uS!x4*pu~qeoq?^rFi^E6 z*ru#=d&K2*I;84N=az=I!`|CEB@IdjP!mT=U@(dp<%Y?TAWoF3luJ1s%;q2-@;V-V zI^uPVe++%mU7UpIl9)6~c^Xdp@?)BJ;|WJgimovvLj3D=G{`w%)3o+gQSdnpNz|o( z_A)7n&<m&k_u<zj`7?}GLvF4@n+go)J8tv=j7v%BF0|pPe-|Z;caVB|IgV>y*9uBX z7>~C*0F7pQWj`}KTu8_c6yNM+Y>kjV<bWtz8!TF~l%=1x>H^P}h7xj2N|l^B+AH6G z5}K0DaE2c`;PM)ZFF>78)+)K3&FN;@>!D8iaQI?u^XZWO0wrx0c{DP_$ES<gwbckf zR-&NxNQwxFh{!4ELs~7>q$D!x2p!B-6fhS?DVmDm1_ndRn=6n6)?fhW$peA$Z*mP+ z!#Z^y-IYqDa5($p{GE?hWP_u!^5z3DM%hy&k{BeD;u*$NfL!u($1BBBw>22JD#KMe z?|a-vGMO3I!hncn*=^Ekv}U{Gq9fk4_mW8rxjs+o)<N{zEz5AsP!AVkt5%D3-%2aY zjkdFsn9Zlvn3px9w)RHFHOpl3V_K*R8|4X9`^z+20p)hfM;>XNbjah`{M;_;r;`1w z)=^vpN=|Y+I!C1q#pfGi9CoS&G_o6FDeCmHGfTx%37wo38(f#&d=07z#WtlZ5g(mt z*+WTg87m~>6dX-g)H&N2`sR~(H+bvV4AuajH|4ErI1HiHaX$4bt{<Nv8tN!yR^AqK z>i_1(-yD}6XdxjX*}?Dcvh?)yX3Mfn!6>-H*ze{)Cc{s5zt>3nies7VIEkG+w_A$c z2+3<H#Kdr0ieS94Gld>({^CvHdqoPyidAx%=UBk-;40z8p?!JrRhsMjl-i4n4k&YW zU8}X?_tJAZ3c#{+4lEVtwYCU-H$>GYxR6<3Nhms`1U5M*Ks!yXX*avxE%ZfoNI}7_ zis;7x$T?CNYFJOh?clX~S!i%kMdI;Axf(3<W}eFo^=>IzP=?|RCpUIuV}+?pOqs&q zLbE5yB^BisVZaWQ{OK(WgebVe=;+T9QsQ~%mg}Bt6PtCH12~*`=(6(pv<hNs@+I=6 zY)<>jF}SQHvLISfMORnU#JJjO`=|5E9%>fPn;|#&I8`TVTmLh??$_shZ1bgkrDD0F zQRKQXjppASDHW7&hg5*Sj36GtrsW&Gn#|y{q3q?>>x{mNLib%OhonM73b&G1x(T46 ztAUs!>s-|mrMXWG{%09nbDVuEZEm!T+_rI>cCApEpXT!?7Ul_DuoG86Zu|XV`HYv* zS7GP%m93jZ0%x?ZRhWA=k2m)ERiu_p4l8clJKv`do>=(+<Hw1=YkPNGdC7K?J9*=m z_<#PNQycD`UnBw7FX-#pI*U1mRG!CsUr_kh->~7&zuz?>z3#6HH0sT(<qLhx*1I~} zrGs3F<UWI)-a4OU$iXukEE>0|FIG;WtlfY(A}C6^MC@9X%H%3b2#ZB$4Dv8nT-;dA z`%LK#Vy><_5g|j^!1MA>zsz{BXk>}DCE}-7vMsEw+a|)nCP{={eBc(@*E~tR9!{ww zq@|7c-DotaWc3k2@N_g$h0#BWXs~c(Ol05Z2A)4>qu(Pd*h+lN@5{>FK;>7eJ|tI4 zERPn|RtS<vqVAs^R8&{W6#0?Pz)Bt(yWsAopby9ZIQd_J0l$R{VK%9#tfGV*Sq3+u ztR8C2blo0ky2VM-++LWrK}p9?c$ZiUIi?03>HP!UNcwGfqx2y9DZ*E<64NV3ce8<I z^LZ_;T+nFLgkDC&-`x7i83a!%zPY8;A=AGS=%N3ukt-Su`T-{;kC}@l8yr?nSTc5i z1Y$_jlvfl-*E4R49fg2L)Yv5u^@csAUUT8oQ8?T(x~y)p>m9*uY!U%_z~5Eti{|rf zgzn+I{rMy6-7Fe~^j+jz{7<`93Oz%x&?Udnnki*7{S(GKZ7UE2Fg5GVf6OY*D-8Kq z&y+YlOmfQ{{cEaQ!wZS3<}cY0@(o(TSRT$t**$M0V!g!@g5;p4vYD@9SXn%AhswR_ z1?#Vj=aUZ)Qw7_M)&BBk55Hk59Na7NJTL-Cua{$(9mHlSlLb3kw%zc%yABxDd<m#1 zITP5dG^+JtR74UbX!E`X83!lq-m4Kke?kN$gq!3T??`Kc{WPzrvo-fLTi#1wR!`*e ze$*(tQYKV-R5+3(+buva-5KZ}S!}Sv#AMVN23s&yY5-!U$c+v3H<F-ry&MeG_X3*i zR@q0EDQ%Xa3QA#}<$;vF@)(_OJM&yo!|3Gw{lhTwSu&;2(^UdS!W|5zT!n+O4I3;o zdsc<QI&Cv$GB^a&oKJF%O4-KEu;Q{>lZ9%m1sxqROO($Q%t!mO_F2t^gu@fE^Ws?~ zKn8Z$=tZZXqq7g~!^*TM{`NTW%kcTk>`NRyabh!Z12Y^uUrATt8lmJP<4p<jxIqWS zk2vMFm(8_LbWBd+BYtS{9%%5bv*VAM32};td<lESZF~uv({JIgueBQ6N^$G))mF4; zc?cZP5<Kp-J<holFi(4!quty%8%t#7ThMl=3bBQMDG+b4S<Xux%-J|b{H${6CwLS~ zq(^OZ*kRaTzJ1+Y`BbJ}8v;zEw>Vt&y8Z%o!U#AOeYY8kr<Ue+cf2gkaM&3wM5mOw zOJL)rYysod-JIa#{M<IF5p-FAWT9-<;MfRtv{U2N0S>eA?S)^BV&Roiz6AM~k>eGQ z1@l>ZY?-7}srxw{55KM({`LB~)f}+h(Td+MvrZ=0Xl-S_P}4kdW3}Ww4ot9Udo3SF zhz|l~UgRGwxwvP@yyxU{G_~mA9cIqJrW+tQuufxVEJS;Npg(R{dOZ<K{*3GWB3}bs z&=qYpm}^ijG*z>Ml8JQuQ9O4Ltk%l|O+iELzI3YZ&>bSdj%@+n#|th^qpXw@p-R06 z$n&TB6N+YbvjM_1iG;8Xww|d})`Mc3H9w_{r1%Wx9oQFl%_8j>lgsKY-|C+0t1@wZ z?*3Oo@uceYR!gbI!^yh}v(oG<+t-h_Fi$_{+dWjx*Pduv9?pW4>P%5{qfSf?7&rT6 z^A>8K9jS*_M(G=u#UAgk^UY^U&TPIxKR=DdZ7~}GuOE0^6I=5b`ol1&1;GBnjWum9 z^Vu@^PFgBy>Ncrb!1LqHCL@bp7ny{Vl%x3O(5S~rL|%z<X|g!D58_h=kEX}4U8IRt zL2ulWIh`&0jg$+(IB;`8JJV{_=h;A`akSNiS|JJS%0J_1Nj*`n%;R)2#~tI_8SAe> zu|kZ%Irr&fLvd=@Mh#&T(|yOfk7O|$dGGU3?aTA*>Az_w3kxZ4q8!v#h{Lk`w&h~d zoNQAUO|yinTQZwb=YbK?mKXHoDkVHJ$(Ahq<_v!_Us7~aT_m7GUrA=wfllKhN<MMQ zBWsNJdA#ZAM$=C`u3)lEz4JD0S?YS2SvLBsG_d`4+ao1&eTJ#k>U>*zH`Ri3DnV6; zpVeH6U1;=d^t7@QYpSwyG)J*eW{G_0w2Jt;A%9l7RKD{^oI~5;A(fmuwQki<MvaEy z%M3~9_+S7(5hLmVJpXO^qjk2XjWl+whxvV-S*L;yR^nW_YMe&Br2r;Pd_GabL!-g{ z`^73dydymepR-}r`4#rHj<GoIsm_%4tNnM2O%sna>wy{Ai^z~f(cl=*nIl%1po}^d zp;8Avw>pQQtCxS)WlPmBP83y^iILrn)vvWjhlugU!WZ%9H!DUQPu3;N9uFh?rJH`} zz*5iZ5j<!|tAyPmAt44$oAf+Pc1P1YHo3>~v>MbxTl8eWt>jb1YM(C=77#raZMUme z&HE%#Ea#yN^@oU(zxtxr=e76U8g7A;m};O5K4NTrYPxk2#Qr$y5SVSVhYD8e_}(3A zPr~={ePh&sFxc>HKuqi=gPg570y%ll#JYi~*}^`O<CY_xwwO$A?anAz{q4|dmp}`L zS7cjp(P(#|A&v-AQ;~fY_%sH3uK2bDyOm`FfC1at;=_kWV|`Pfx5d96S#i*0a`D?_ z18W+nqe--9-ah(&>$)hff9r=5??I!;xTe`jDQ}lO8d?&S5RQ;!<y<E_rhB_G!{0m6 z=!X?o+Lj>%%1k~$$5hgB*0kw^bLkZ2mX&pL)1>4c>pDJJZie!@Ucsh#ecLosmE$sd zP3Za=rTq+OOM1l7AvRa)5||R@>U^kXFf4%n9M0GwqwBeT=cm<$SkijhXR%j1)^{`0 zCi)&ng7@K9t*+U*1qtd`2Cd}N9}Z)gUVx$d)Q81%NKG4y&O`^Y9iV2T`HVn`R&y+> z*HGe-<K;|6oSgHCjwlHWYEpW-0IP-0C^GItG=ypqd`Oc7_Qz#c1Kvs@5D5x6$O6L{ zjA`i!*SeD_+J+_@`q^kK6Nzpgp0&wlxhW+OrQIHcf4J7UP}cAJ>Kc?<#jT1PC2$V& z>alrn&Lquqf{&5L?fLOq0Y@k7<o?9xr^i}`PTl~aJT7a?*H!O(Oe`-p<5%gPEw;{Q z{&G5&o!6_PqcLaWsHiXxmvfatO(PogsF*s=>a>~PnUhWg8JsvC4r>{w=5&2_&=Rv; z5Y9M8qjrRa3fH{vn<Zx+G2?mf4^iA7PJ^}1YK{+=T)rox9FIb_gz$CVnd58Qi&I<J zJLq~dU#~qU_lw({t*#$bK999kGBJ+>;Njr`)UE7REBmc#qN|bv_wXx^;GXZ#omg{I zNj||6wgqQ;SQimLI0H@lBefmDVWU<|Ah5ll%?7>WczHOb^DN+i`1sq6C!L(t_!^9x zB7BOkEhs_N1D#bdoo}XDD0BlLzbm>_t;?uH!4`#=bQ&qeyItOirWuvSbuF67BHzap z3U?WV<l(p0FFl5_^K0GeePw$Jn%S#33hAA;tT_SCbKrU06R}+W)6Xw<o;JVy7M+%X z4)cc#ysm~B*vABgkw>!SX~K9`w?9kCFP?75BaeWLu=~@+BSDtd>vp>svRm)6bW0-K z{rULd3>&i_5>$hKxx}@IX!qjY))jZAde1<hriUwjb3je7(I>9y8KbQbi7>@Io!qqi zo}Fx!u!UQ1yZ#aP`jkD$iGN8fkjQqwE=ufpsi*z)P84wKsz_|gnhFO=gaY^CSw;kL zSmbzO$u3sl;OJ#`@u^W>laXP2g@1DEYjp5)->%l6UK_#k@whuZ?x~1ez@b=s+cRir zp+_wPpX-Gxjt7r8n8oL11FysbgT!@bc$F^CMD=S*R&m%x{j7ag-xI&Lrw{BV`iKdS zoG;f=9?9(!IjM%?JxHEUO~n*}wqPp$A-tzs&GUVazdZs{;npuWiML3(VpyTDfxld+ zWs>@^fQlS4G>C(OQ}e5z!iNlG-sfB{IZsxQQttf>ozj|xDN(3~#Eke^mn0;gR$7@; z!g^qvDNOx|E>^%zLFV1g+(7}C>E*uD0u;&j=4}uDW*!uyzz9kvyKLaZ!ES|=tbhhL zp^JBG8nmpN2W^=$=#Hjpq$C@_H5zChKE*Lu@i9ZqMAfY%<8HS2tvmjyNm8;_f&<u4 zO}*TDU2kE@E$#cO;CQvhk@MO;5CAf|_L!RLwvqkWxMuuL0QJ$dQU_{2Y(#>4V7Agn zC?I<oGe+6<z<v5rM-L+&8P}030{=D^Uc{QERH@kJn0D;(dQEzamv{PxZ|$3~DCSqI zx2RQD2Yd*?qhr}Ng77x84mh<Q+zo%2@ZICq6-3LnL1a7oNME(yhnvj_V?Qvsz<WIL zkxjmrd4J&bMJ=QKxP?b%V#L<Mja208aICN}vjHyvCI0>ulDPd>-%EB180?1o)7@Ru zmdC3n%X0Q0uu(jPZ;-VDGsyik#K>#W0ddjL1`bb8fVIaNP`I^SI(GBaux5Ot*8xd# z$T^VEXsB)^wZ5?3gZ&qR3=Uxq+3~}z&-rb~7=wBTBJIG=d|I4*%LTco><yx<H-oj> z!14I{qOUsnRe@*gC$O##hf|^m55KguSq8hNZk}%3HBW1|h~309Gt&XBD^7D?E_Skf z7DT{S73^M$NsudR!GPi9)8ol0mE0Vn`CJ8SWqh>TnL7~-s5=-rzyJMxmQGo&ZrN9t zLstTV_5Aws3a#cEI+jdvOxnc8_cbd?GiG-eIHn%MbKm*u`GE<8=Vz9?<>-jVU;uc| z)`G(*=ae`T{B&bbFsIVld-oJgyw`_540PR#39X8wjB?>R<r|ZLUL={G)mDK4t$8vB zW_r5^WaiI#qpm)m_R|^UzqKH-fd=W*{hZS+OzR^rb5pzSP4;ht8bWeWt~F;dI<#UC zR<*f~9P;*Faof###(DIb%o}w4`Q7hf@y#?Iv?oP$hW{DPnvedpDEuHde2<glHrjPQ z>dF0b=AoEeC%+XN%0&Qmyt8Uh+0TpZv`y3V0)pdjnDYkUeNXd>;X!_U4d5shfS`IK z8XXI$3HG(2o6k9NG#)L;jjOY1fhueF4dWR^%xW*Lf4XZid7FCKR7~D!CMlHlX!Z2* zI=ZlT`e^q;0^4>2MAO*HrDzvqoG`pl0zf#97v6C*JfzM0w|kGQxjkK*Q|e6?tao`_ zoTL3cMSQs;NW(6jH6%ud!l?1Oh6h{4N?&0>B=2ND$GA;=>s4DOkU8y_RiHr}7Mw)8 z<<+E=mCPZ+iiHgnsqqD*ABELs1LBeTs<Q!s<?)62WT=|Nh6W%&MSs6SS4wxC(Hg%- zqXVPWYJ1jbzjmG}o4HzvnmkRH|7C-=hg?KU#QeS+JOTo37Zy;E>g)MJn;oLl!Rk^o zliRLX2X=fZVgXmdSuXnZ81Im_G2x!sGEzv#LsR}6(DcW*=4;jmEVk}wUP~Y&Y~!R( zZ$Z7JK0Lj0iJj00?OSJm`h+Y?cAHh;klkt?Y>KxmC<XQLVt!_B>Eoq0MehOg%Cd6* z=(qYtqn4q$C4<%UlS44XXju#et~_G36}Pe*1kkJ<YZV#PTsrCi^5@R|c{6<J);o-b z?9VqUnnIGb0@5?_p+TboWnG%L$zJRJF38R&ZOna)rIw@hgZH9kSilUPPo+$Q;<lOB znyH-@rblyr81aZH+O4yvUxZMh6td~#OEJ+uKk__Z@>jpE^LeIF9M3E3cQ+rbF*?_V z{_@dUsdRQ6C9+wP%W83My5mt<1fv?LRH~wAZ_+-ct)tHUn%_+Yp2W);&9-HXQR;f@ z&j9S1&@hNj=8=}mZbxnPqn{|n?9G8;8`xwE?HsJ-&TyKHrjb)ILtEc=SsVF$017uf zS|o3~@ZfNopI>aRv<;1xbw;@3xY}k3>D^4yai9H4gFb4wp>Ey62M08QG-|Z&Q1@$S ztwamoI+%MF%+crUlcc;>|G2J7VYFM}^UTxc{zHs=AXoRye5D03oCw+ND{W#l*q>`z zVV_3{7oYubchGunZeeg)#(gK7{z*InuW=B=raQ=IS)+V3-WLjzDTO@RDw^}@@%lum zP=>yBe=(^2a`v9ZSgHkOjLl#AbM`)69Lbit9Jfiyw=EvsJD(Vmn1)ADmHD`YD^I(R zdY@NX$WvCU-GG}ZCOY3j(J9j=-V!XD^V}!<@wn=EU0P-CZnqlkgFS9|D$Bx3);j=r z;FPMn#z}p$PQvMNE8#YfhEhWA=_D2E;$-phq9?mSNv<s3<#;(%6~<H;9JI~`hk&W3 z=fTlm%4ltWd-Au}qVFooQt#u~#wp9ZA2lu(4+OO<6k(CygATUdbAkgxm2{}mNVwDX zDQa8>eJ3nNXR>}35*-7`{%4+csdC~d1987Yh??(qC@I0=ZslSjs9QIw=CvF36C9nC z5#7RrW=HO?lO^-*q)Ka*PAh3)jF;oxkHvE@F=kFHnC8%j)%6uY(T71A&8c0hME`)9 z$^0Sdp{*{J<?)=TRF$D4SKJtc3BrstuJ>JIK$#s2;eu;W*%iOV>aCHk39VDZLEOhz z0(00cT(GzKD;&zQZb@V(@J0!mw~QxCv2k(ga+!QP3_XgjVz`LFFW^Xrh+a-kd@7b< z$jFx{f`aI#cL;Bdh~2;dVd2bGOzcx9a=0Nc;*g*#rkyu?1{M|=GQ8dJ`7v0G(bFfU zz}SP5!6kG*|M7O8z{3n3ujbQ;NR~uZA6eM5YMIKHijE3O<w^&R`~XZ7d3R`-a|`Ry zFn_9q#k!+W+JuuKY9a5WxJnq%EMX=AOd-Fx?7?3D?nRD90wuOxVTz<X2Tg~Qg{r92 zkH)^sIz}h?Z_cQ7T=gT0PtHy?v`grCtx>n?s9?iGc1HeFNZdKemrDC%p(mL#Kt^|2 zrcbLqcS7-Eu8nfq%x#jv@nUJAlS_w#gjB_Tt^Nj&#_6SZ{egVXQN?kGy<<|6(t!4J zEmxE==}$YdUv~$Lli<D1DSJ(x-^(={IS{iMjX4Wo`Q$35Y%fi~U?Np>eZKX$#kwu; zx;==zu`m-?Pwl?0!E<kt_p4D{e$=A+hsM5s@6Ygt^}3ZB_0crvhjMnB4VHzal`^`o zRb~_@u-fkS9Ui`;NK|${z4iIJR`k}$t&|5SD3@sz-yHiR%V%`MC=f5%2&@2q%<kug z5eXEHq%l*Zmi#KrbdTwHbS_z}UpZcFAH_)6a`y4dUcSO0{t$&?+rr-H@p^<*`K>GK zap$uRjbgzY>C_7XL_*}(famm4+wZ;|4{x4>tg5jWzV*}?(VAW#dj$<#OiGqcV5+iE zx^-r^f)z#_{hW6`EQtEKFw2_{ys;ufoigS7Y=t)aqRH(5*|%kQbRMQ&tYBoqbyseC zEB_evbvk#1ZjP(h6RNrqx!@>ksyw29Hdw)WTw6P$`VAp^rVugdb-C1;O{ui(WO9l1 zT&R?8BJ<opkEC9v4GNagy6jJ{E@MZPiCsOMSJuv7$YPbdtb1HygTwYzNuQk2r;_MW zhT^0coI)G*x+xld0={_PTQT6(?Fv=4UkOlDpD=a~7l3W4Ve*WX(TCg4s$azwE5uL9 z)i3efrK@B{KYLl~>%^8glN3}^ot^s;t2X-|<rjywf*<Yb!`xqdpy|v)-Lbj?0+3(_ zE-m6LB`%?+j_0YFx5$1rwvlH@vF<Yh5A2S1m)8P3_~W1yE|&@?oM)4<Cq)ALg-mWd zgY*N?kZN;)M=g30C)fh@qI=`Bm_MN1dL_3rI#;Vlsw0z>ad9mk$K%2gEN*!zMv;5B zvFd(c)G&Kup1yu_iq2vLM1FYlvA61u+k6@?rObzr%lTz<pas@U<r+PMLA=}dzA5m= zk|cP!v)1dvPVoM`po1Hj@E^BdGQOOXQ6*u5w%l}FJ~~Tf@q~9goZ&SjYsdCSVv8pV z%x0|gU_H7z-~MR}O<8>@lsnj-2+G##0X@EMeUhmyeK;Iu=WL;gl7@1H2~%uaOgxE0 ztf{pIZ#b)o<8y`sCM0X^uM}PjdMoRO0(&Kz;f5TBz_SEVsoWhi*R@%v?RpjaVr+7T zVFnd-Aj4%<ihXrDVPg}0x57_Qe6<@}1eV`T4{%`03<n+b5&^)+3{FRhA1l#KG8Yj^ zrnKE%ePl_>5`A>qZ*Nrg`NpC%YfCK(?;^}hmWmB>Z2wA0|5d`E@u=_Qv&i|q8p!$F zsbyz&xwTU6a=bCjFJOUbax+ZVWK-JH;?BSBWP0a<ZNKfp_Ox}ga8mugfHlg$sdDi+ zG{(HO@>IE{tL<?kJnBZ<&LqjjoP>%O8&7g)fy9lhvz7r1RRpzc_boDf?oIfqW2CCf z8%~$_u2_Af9~^ijCd^yZLUdFn3+(bA5P{t!ZxBJnKj;)FdHS9OsZu6m(Ww*8rJGSC zDP`X0*Qc>h%(lbsT56#oP6-xKb<UN{R53YqtQ(i0Xn#4U=^{C^<-r<$=D@~E7<+t_ z^_G3I&E&O$(U3c~9#=3C@s7?F;m~xO@TsDS=(ucn<I<(m>ZiE!X4i=0mb^VKdxbi} zo2fqBK$X%0;InW;OLeW3IX$-K&Xpl5Yvit&Nja-vQ@Z;@u{l<R!(~SoIBOD8%raZv z>I?u>wzIaV-s@XwX(dop5Vp6811g3{m{TdekN1xeMX5i~x^Y|**AoAlN1N~PVx=Au zJp0k$ab2<9pIdFfn;%0ex>TSDHY8}#QX17USB*zei3RvB)!~2+g}h*u=YbY)qFUNx zzusWAM-sG*1!tm)hv?pMcPX;CzlY1}c_Zh3Sp96&RTGoM(YBqclhUQkN2<g2D~i{+ zMEmYnH`pbldp#$>Y|rLOL^bxhXyD^#=)>bn#3^pK!C3OW^<YAl9^aErUW(6J4z#%v z2{e;uAVjU6A_eT`9rwNbn4tNI3Tr6XtHLB*@7d&#TK!&gEQ>W`Z2GZ)a;;lzS&1^s zS(EiHa>pgBFT-9dq@^5SYn40P@p`H&F#J;Rc2ZYuw3?lAXU%7)8IJQsll5%av@vz% z-=1|S_Zh9MxUBIBelHIWedju!eUY>ac5Q#QIKnvzAj_1ZGMg%(4c%34{%9l-XG=Fa zBymvTb^pFDE=e1UQst?4vGceGt?k!r2HYq%W2S-3&u9Y~td2`ZeIp&{GZ_YOz<{el z^Y%-5*<n$5snAz0BcLjSRaM1&cBMb56BhAY{oK_kOQ`eRMJT{8zh1KTz1Iabct@%_ zgWl>fbPbY1ft1cCSKDy)w)%{1KRQ=Pb&~@wZ`2sD=*?rqm74QBUTm^}|CNCG+`Kc` zTI>8WzlXMMZL-vmKz0oa9JJY~8PdSHMxc?RaI{=)``SBGf&S63t8KMV$<sx1(4adg zp8@L!$lYnlYP1uv^&y}Uu3cDYchn6nUb9~%rOv4rlR&HQ?Vv6Wf}GKyO^!Xt-JD&t z0m#{mq0+v>C6aQFRVWLPyXR1dv7|E`i0((C?cVHr%wnRZ!V4FeC5kqIGYro5?7QBh zwUkP`qLog&3)i)>0tcExivW$~@v>P=qxc6tk4`*ZmmtUft0D{kuM>eY{Bk;KV}L~@ zNOj8JL1bnuAZ=jq#PZO7YkHH)0lR#97W%hoE}PctWr+)m8LZ;2jL6a*1s9EX3Bgkh zaJ-TXHp}B6+r|;iJu&@QNj2-^qN}B9hmxcX`u>b2&U|{R^)Np!YnsS9^{B$&*0ieZ zyX?${>|YM%!4(eY`74}?x|19;x!J)s3pHIIIEhbM9T7oHI|gcU-hL$AT?+zk(1Eal zRYZUghRjaBP|MGxEPMEYWZHREN?2h-_f%Lpid5kP>W-PX!+me(Io)iFLWUL!T+Kfs z&Vr+oXtKrPcJZmnVi;LMOohl(El3t-Lzz&HJRHdi^LK7?=4h;@6RDhQ(`i7Jk}jtW zfTF++i|t;z6&g0?nErK(Q|ivGqGC1-NWGb;gt?G`(_DA$?rc*TDlb##T9Z*Gb3;<Y zEUQw$zFo@2D$aG5bI+`|64`Lppys5fUzfkR@QyRVM3ue$_?W@c9nk8zoIkU9fQ`tl zbz6SxN~1b?YyZ@~C+obkgnh6@LZr)K*Ex|VXrXPQCBc)BCgeuXkkn?(-ORtf9;LFD zEIFF&m)c)(Y(KA<HBs}Sebyo8tt)V-_$>{0LkhfF()96SeW6}`u|dCMso1I-+$4;* zzEhD-JFON%tWn?$tg$+cTA4K_R+93%mEQW61y@3X8641y96R|&{b;V4oGQtv#QSDl z6ABU<<hO^&krBS!31k)a8ebe4QUwQaMyhdXRp_!yl&8uW$~Ec}HR?>wdlITQCnfQW z(4vdJu6o#zU7lnS+nX;pMG%`R^gFmC^1I2Pi@J57jc28Ky1l=sPj7qI>HT;|$JP-F z-r(Jv$lf^?u6$7}qY^$6tJWul>g`^uFLt!ZDverP=-+#11~$YkRdY|{XOElO%IFlx zCO7vbV!<CGATdZb$tHgY4MO(mWzg*Gl1S<Z&^NfvFKU|}HejF}t7g#_Dg<xtzupIg zUz${Rq?06yJ=lH}=L7)K>8mrZXf8Xv@FH$#YIyz6%4XG}pGepu)<K_o)w9OPr6^1X zgph2~XV98jJ@UJQ8&j^8Vy_FNHN{q8L#FzjNPVB%PW!0tc5}z3E1DDF$!$81?(T7T zpYYt*1LwYeI%zwn(QFz{HYCByV(e^-STJTLz1qFDMq}s%@9xIilh=B%T52f3Vb)q> z42jn6BLP7YQ-QtOCkyr$AR0-7r4nTmorH~O$>c++lrwUt!}(EitxI|?#IxTHoJA)z zU$Wyref|u$uBlRcXbUyyMQlZu<%zQ^m#hhWb5=wLmY9r$-0ojfS%)m!1XYGKnm%+Z zbWSgrw}Yc)7bY^8l|IiN5z3I$9gC4T=WHwP2P0tBc1NR=B&6%}=wk`9Z_Z4J`dDwd zkn)y*(=y2IY}xZ1iN$)^Bjwv5G+GMAH!c@&jCM+;@<}sFW{mq9!RvB{Ea}67+u5M# zUUA`j2l%8l4;dY<glw%wF`li}hM<Hq<PHsilPH&rH=7Czo;6dAHa3|6`EXVKn^5q# z3#qc^5$67UvvANFausE9Cc;t`8u3diK*<Ceaow*zn##eds%~k{$MY7)-Ek>kAe53q z1pdt6JJ-wZTL%UFnk4}@mxg6-iQ47%u(hF;$2B3BlTkGhy2p$VWsh%>%^t87EUeD% z*e?Aa&3~@4`>navjZ<798<4(psQDba;$_xBpzKcP!{WbMby?1KOWQEX?>5zVxIyK8 zJYRZFYFOsQ<uh^C(Xh{M(m$-o5LVnnOV<Wqs^(&#9S1|-jMGeYcpxY(whfBMgCU5a zD!WZg2wM2e<32lH2|-5E2)r-)Ntfb53m{sIJ*N2KL^J?ek;Vrb&S>2Yw^BcAxS;3D zLW!HLDU~KBvJoN(Fvv<Ds1UnJ9eSP@;2I_-@mcSNTBFq)seG~J%P3ia{6|EfAaz2j zjuWd>OEr5!g<5DSfy9q*BqmI)aKN}Plb^^!DmtH3yrb%8E7aX6=yVZ*m;C*qMZCN+ z2}w`?ho<)oWb^yu{(o(?R#j1ZwN~uZ-c(VgiW;%0trWF4rPQW2MW|6DL1RaZZ|zaE z_EsZS2qH$z|JD0{-%ogwN4c(?b3X6!I-G{q=Tlj&3X_w8Z;U?0TSBpZQVf{G1w!3e zJG|srT^Cy+ALjoO3WTntB4@SpCVIxP&EQR|F_c`{)OnC|&H5%Ls>{NROUZ>j{i%CZ zT1|FyG9<XoDz(|Con*q1!a_$g8;jXj=U<^vK@HA%9HeK}g#4^t=wy&|9HE?O_Bbat zZD_4F$A?`>bcyx=X0P(iW!(Z5B@sHwi5J#smQfeXvOCv66L#?a*N~7=X>&6XkaUwM zD3jrWpeLz^sjUWEG1b>E#t26@8_5yX?B5Kb=MdHZ0drRs6@D$b<3MzD9N*QO&<TS2 zX9E_lI(jg}7NJd)uMjkH_Kc5)$S%hd1Y#d2rVRZU^`zqR+ojrE)BgX=%A9*6BIzmO zKT@~5E#9MJyc~U)EPuM7>$SZGoZ`F?L?+edCZEECpBieL{L#PQ@ckE^o|9<8SsQ0Q z&Z;sVOJkl*1L^$Pojsa4KLEM)sB`%5OxH+}-<f0TphtLzZ2hL117=7tu|lGq$!X_$ z?Ocrl>0r=F>&T;gz^Sq^TZzL*-MVvrpjtN7n(oKC_C)PG(-?XUEIDE!@->zUU)ciI zL&dCeE^%jTqb+%jcgg9H#)<mGXsLe=@sESjZ-4yOt+(*oVxKcw{FYg51wCq3O`F(5 z@WQcC>LyE9`F_0&FePA?KI$dD0UA&#B#gZY1f|fo+YXl_c7!q`tB`qDsNRbd4z;bd zWOW1@Mg1b>bm1uG$$zz(Ru4~o;{7->fz9RH5JUN#V8>A+^Nk_uv*CZom>ZEQtSl)r zSGe&XgHBQtXuC!lUIXIbu$vOJoySDqMwK4_QJcuj5C)N~<jYi2J1dn#CYcBAN%S(9 zRp{NNTPQtULwaqFuMddf%RgJ;Xk5Offx_HPyLKlk+N>*@d@z{?jqe#%?(^8U9du$| zgpH)f()}H3(0aA8njslOt7p<~p%@u=@Bwhu<R8?mViq?WLzL|wbF@XXwM=UXOzR;n zW4>Te`=Zz&gW!<)AJ%u;bvk0JTXAHSZ;EBDqSuVYQPENEu>0gEGJL^*Fn7bSG+Q%> zI~G2ME~d41d_t!6(x(FHJxqX8IndKtVRs6sW;oF;c6$*=QKE(I>D5sA&~%ADTgIWa z)zzG3y+BOWsmX5rVxu5pM_`n1l?&T;syMjz>`@KmP<XkZ)T-FNGsS#u8b151AXsz> zt*F;qlfpT!mYanm=8=%mz@=s75>q;m?5|&&Lf!%9huL<95j2hWbDBQ|Q@sId1A=`8 zgi(OjVfn2Lu+@_Jo(8-YkT|0EtI8ayWxyu5nm&(l!N(t=yV89&;aq|VLQy|1Fg0pG zhV+w$phU;n>Ui)~mAjx1-`d8apOPvE)=(RZc#+`W`*38??tebo>$5Mgb<2U6JElMW zGt4d@8-&1rbr3dQ1#9o%e9W55rj?ThLfYkD1)t0s)w;9*I>s1<l=r6iG19F%^8@-? zm}eu8(QgWFWx{(Ejs!!2Ef=@7hyqzjMKk)0IC)Xml+<-Sv`AvR`m8FJ503CeN+Hj8 z9+;0h$%b9aFM9M{^&VyA<ZS%e2Xh%WF<oyKC;`m@#>}>LKT|*yUOO+dxAxyt9Xnrt z9pKx1b<&>K{`n96x~1QgpwZ9j!K3|-urlEHUtv+)`c+~)?9}0J7#ot(66K5Vu!1MC z%KOKt{t|`^Wsn1=*Evci5HGEi)e_fh7~sp{$9M;@P?s2p0UC;2HV&=oaPi>(u>gjc zMrnY?QPbi3$}yO08c*Vx$uTkDv+co$QK}yRIYY9Xqoig)EY%Ze)`*3!IV(M!e>P<j zcFOIOw)s>}8QBUuBWzX(Pc~iOv&U&Jx3`@!84NZ@Pc19;H*?U9*zeMGkpYT`n3ejH z=YY;$>&YCsyyXJ}RPWTgqKH>quIf;eDY(h|qyo>E)!>lx<_&=rPl~qdb8IgWtx3u= zzp?MYuci4Cy3Pn$BHqc|;!Xr96Uf2xJ)<L8jMGj?OC?<Y(>C65_dOL{(hI@*&5~T% zMx_Qfy4Ot<(C0UBjj*z6B6Lf?JP7k>t9Gu*y)W&@{6WxS7@@tN@Re!HGliXGohQ6i zkayHo0NoQukB)uGC~y#Rv6n1<q`rB2zLcjv;Pvb#_w2ewQtdG4>qEMT?q16h*7?%| zADp9X=w-?Ld*_Lm4UZkNN}~>*8iP0Ci4Q;jhPDyEL&y2Zy9uoYnbO72H21Nws{&2F zqAD|ATx5GeVl4c0VLZ#!{7<&gn$X~=mE-mWV+V7<)__^Pld9B`H^p*%#)e-|Pr^Vx zphK?&`yw7XxP2d}@{Pb{R(%DUlfyGV^j@!B{atD!K5LsWJr7#(<Wy>t2U^KQWMCkA zHzG`qc23oMOhRlkmaebxD0-JJU8y(CY=4@kOZzWobgN4}uM#b}kOu8@wE<I_`e<14 zh!s&(na5%`{Ky7FMrgv7>IuTtNt^4CcZl73Md*%o*<EVwqBn;nprdp@OQmXWW9WI* zPOdMLg!@tdpv)kKrRw-7GgczMy(U{F{=2@%@sJcfA&KKWRx1LRUAG;9>*sj%Q$T~O zr;bEkJUi}lv>p(5(TtZ-8Mu6qo0`U(DwI-I!u7^jRl4+Uv@SLIs7l<Af(`=F-DrIh zcFK(d@uajz?CJv^^n9sz(Hf*8^&Ug_Oc4Rhtnshcanuz~b__l{f3i&d+QK;qR~8TB z$5qnQv`20}&GrX8-F*G?@;#mv6K(11s>?P%G#%k-T@k7ZZ5~Y4%4_}K>C~)+G`^l+ zN8#5181mfi_Xp3ZTc#A>wGXe54^5BsK4nXo@0nprI_)tO%%G{+C%lwIlx-oar=OGM zzQH6qzNrwK0g8eE27VwR*5Dt!rw=5@+i25ZI|lEV)D+aEAgClWmv-!qI~tS|XtQPT zLn&Z(QCbF_eBgcC=C$kicl(WK(A8Q=WW2qC2Q;%Px==p9Y;hS*=B^ea>pDl2mAo_M z+4z2Tq$r&E*IyKt>A%(Ztl_JTVYwMHxFHeYL$m8Ve;vDVmHR+5VLdIGLFyxaqEAq! zqvCS#(O%>2$0nkLrJ#NB)ZlBvw0Ac9-($*4esDv5U2wOcReK&4oIKlZz-MJ;z;z?H zN7%y6J66)V6Ex8lM4$CEM7>+tCUMk_(S^YJtKcS{Pk3^iuOsFW7PbE-^d~DUf($PS zyP8WYyaY^aN!6O$9)PNH`3F@)u0!RmU2xqH@ANYHF?$hUm<y<63#~vf@qy-x;54vh zkWfgD3n{(FuM!O_1{zYlKcvIhYj?J;W3PmWdxFZ^;L|;$FEQWLB4Kh=R{d8=mvlYb zw^<aR*l8iB_`4IbK3}(^$?L6n^6#@<D%B<GC=&9j7)({)Qz``)Q0a(d4CrYlI7vZX z+94&~mhwbmHAz4Ix;>jVzE-rOt`~jl4t9vEI<39M>CbzWEkTcUsmH67A+<y618V_# zx()&f)K+=MGmrk{C_bq4v`=Woj|~y-EE@f@^R`I^!_=H4?fO4_m7O#^<N9-n%rvQ$ z;&~j~tgf1?tsP2EDSzP4qbPdI_D|6=#mYB*Q>3JY&!j{n9TjkhxfOUF5cDKr9h7Nb z5bW7pEIm@86-j^pcGJRGJP0<4KDtSJ@^N^yss)|N98jzGx%t@~#}x`96eLmxcBKtp zny8?e;Rv8g9stB%v+LouuY60NDQ=q0RqXYOwTdRxx&t{Fv(~Q-5~HSq>=dde!E{ML z^WB=HXtF`I2chUU7{r5kDM%9(>;Z1WJMbXtz}r``xfYwoVIbb=!jXLUzlgIetx-x* zDuY-C_OQz*DhZWDliGVJ?T<q`cPs<!rI*8&Gb--8w2Ig&itzB4e}LU}r*&(xX#POD z=sW-TNEd<;WE^NPsJaInoPOHU)&<63Cs)eLc|(28R;Z0a^=pf=rD4auI#XpgXSO^# z<;}l-japf6HM$A}blPc%vFC_SeN#E_b`(2MN|rAku)B@6yB!_l5p>+LlwDrfS;x;y z@3QGxP>KQ^La&<;4NA{LGeSkso2-{?zF6eu11L+jBIygYy+3PoHIR7S!%0cGxu+hh zW!}RQ`G!=zcGQIb1k!{7k@_shp++QJwO2pPybyB<#PD(Z$fj3@yYTRMLx04B8o8W_ z$7wd*0~g`;LmRoU0}U(s!$$D_cf+OeGMy6NJyV#4t&LrSGh+wm(MRTF`I<p4>cxh4 zUWtcV711UI-|UXRGrKh#CfgWK-JHyi2AETb@;D?gq$ncQ*w?s!0?x&ItxR8y-M*w_ zsoi0+*w9C7*{UX>ERxB2`&QyFS0V8QnXkWp;Cxzel|pKu5VX`i8ZaLa(e*1B5@bM6 zbjkV9Nf}AKd%S)1C5(1V58YU3UMU*VD}5yQF{U9}{;<+o`UUL!^b)3~<13bJqVLzJ z@Cs<Hy)@t`(@vIazZS~iN!bzaVd<dw<ViSNfPbXxRr+r;h*XQqU)^*61(!#(hMlE( zv;tG(^X?%wk%r~EnM(|WbnCqTxKkTBY4VquukPwh&Dnjf^yGRwfhu^juQ-jnXmUDg z#%jELxqja6WM-wnb_vA)qdtA4)>F}4>XcrY72>`5nE0P}?4W<a!NT<&{LyxuqMxMB z99MyuciMkeu9J!K-<-Lasde4hnAQDlMim=!VP>V=xF*-BO`SH8BKCi9fu_%z$7h6r z8gWCY>JYU~UfMm~!@Bm4DU)(9yRyEqHCmz$XBem&JGZlk^vF_IRyvt?7rU<_r>P~p ze}N9kSr{si3rkw12G^z}ay%Nz>`j}g^#4E>T_F8juF0*4XeskP#W$c4^2UU1K2G(8 zF2jC7vVu<8NM4ct=I9uKoF1tBXd3LK)*7TPzoY-BzUZf9e&PDw%O|nTvbWTfmRY^{ zGDs({)L4=SQsl&C5q4xT(W)Xvw(8z}SsVXc&*b9gixD+l=wO6rW=EZMi_m3g9l%#m zBUtKIhsLz)o}8$|?kQN|PNb@Re&Z*E!@!YK=LEAPkR(?4(KX57V#ekkp}ui(yq&2~ zp@)3JBR{9C_Uc_-S+1@NRACvFS1HbiZVZ6@X`1h!Q+Ds(iJr<YHPLZ<svlrubM?9z zBj)h^0h<-B*3+w>`X}9OoQIyGUR+vyOE6a&IZB#JJNBbyUW|w;+&>&V<@*3osQI_8 zO{kVm_LrlT#@ZZA-P2isF+bp;hdJ-E7GGIB>$-#MDD?PyxqWX!j$pgi4a4_Uj2VKA zm(Hw5W2wPKN`f*BH*nEQ93b{lfkQCe|IOvwYVv0#Zjf8WCF6I|Kx$oFXcZGM*mtwF zb??QOw8CKYV8=q-EyGZb&*_w1gCPe$&E8vF(lxjQlPG$wXFpk*jEWsQ<<2)oLbM~5 zZ9Lx4E5-U-!s&rB`<&YDTUuDTJlU$Gz?G@Lotmz2kr2{dFGQyogz%;r6*C3oKzHLS z{a^Mr;W3}vXw!!xiI4x7hpG={jgC%isv3hrEa1c2+VF3K>l7I23L>Q5=x}aRZD}7q zw7QHoCB1~6+;wm^mU%*C_ManL&vqJib6Q$FDW~vS`7oYV5%IV>FGk947a<!$9rrbl z!!|sDbag#1=H;BT2~f>sU!U#Q`8sPds^*puU&*df3XkyIhJ{^<4As~2?*Vhtg@x*5 z$IZ2ZgliyjmS?+9eU`si%jS3APk={r^vMe>2DPjv87VG?W%rfT49%2>#_v1>GH_al z-y;b@Li&UOh@ip<^ole7h05^TcV(AuC70CPn#~i%J{aK*V_|k)HF;jxBVKwM8ruZs zj2Y+HYco28QD4$@i?K{rhLGyB@;t2vRK7MIuOe}sR(behK>n+6nxW&k{psFfPud9o z5AIK~ZlD7+F_*869Mz4f(Wk=(Ar79K?J_>$4t<>fU_E8O%)`aJ5{DHopbNW_7MdDe zrt?qsmHKHO$l(S>3*@@JDNZ23lj#Ed(bEdo$`U~9nDV7gl7+I)@5=T~ZH6LilK$EY zR%tKh&YGYbdM8iSngwoKqBFr(e?4F8t!SHBw7NHZ+)IDadF%-PH<=xY4;Ze_Aa@_8 z4*?2^-8Z=_wywaNUGI+4vH6B7=gE6Hg7TGTzGgY%{6ob%ZgchQ1lh|3HoLQ9M`It| z*P`i;W-`_0K;X<~@)}mtTd|u^Wt^88^a13^T60M?XbMv5Z__~!9_Ph*GecQje;ZMF z8a2ZsK>~M>W|O~!Lkcm1r>-!gn>|s>p{w2E<OjAX^H!f5JP_~@OqCSMz;SPmLVi|8 zB}Vc8H^dSKs;EttyuA0Jha*3^??kgAYZe<^+J>&GjAz_uMO8}nzf9cE3^EA-4C6kd zYV$7G)UntaZ?aG7r^tEI(aE+d`6GTu)-_;L%<_67AYvSKP^%f+YD5}IgE*r(t(Sl& z2MvynP$O&gu&?JR+s$oErA{9yNhQ5fLSm}Jy?19s*oN9i68Q_Y9`<|O4yQ{WJyQ&M zPZn8d{+38q$?6u6L;h#>_Fk}>2zlWAln(jJk3w4fXke=<P_3KqkA1!vzSODvpo295 zctoz21$JS-h^_vt_AsU~!VF>WV^H=P9B9BI(<Hb57JGfYd5JW(tiT3byJeIYF`04W zGrccP*ot1c82HEt%K<Mued3J`e@9Kl^Zi!2g{N#q92zb0^sB~isJr)@L?N$I*Eq<O ze0NKz3^O?8QeSjnHA6UOB8u2}U@eN>#~G*UAO7t&xzBvb2cxQ6zT0JZ7gl@t9_zBy zn&~Q5S-LtuF8X=1z$&jC!m4yc*h#1B)d(u`wt%q4TPBU&F==q*Pa5p1xKBI!Za&gz z^a^6O=t{2hvE650yKGB_sT#`eGn~;xtGmF}t_ikY{rn(gLYxHymf|dyKUY5{^}8C> zpHw)u$guSA-6`O=RGzsP;bOgt-j~Uu<?8w0r&fKv(;m-dK_GkD2epk~q34s=id?l$ z@1^TGeZTlD*XT+`{dBKTEc$djs?M>(28o-1zp-`h7Pz+1t7TwS2>x<{T~brmW-AsG z*{pCf;ENN~%i}k!wjmjX8C1V49W;1MCiJ2rc60k6<&OBxGHt!vyk*M=k?=|gzfKcn zaLi7FvyO6b2b7vcQ<)DgAaxi0P7p-N5w<jYJ~XiG4QxKb6h=xfte*6L1doghGFcrR zOSQL1YXs`J4i0{-p4Opw9+-`7V*WLGS2?-tLc!wY6Mz(Be|GHk)v%Wl>2M~W?}7;k z^0&N5=zh@dVL>Oua>%lq_|{@{S^w&|eJ8e{JL57h4;)~EltIUSFuE=03m1tputDmm zz8y5Ff|v=NR{GaQ0raJnozb|1lK~KWDUf~n)vv4iOC?&-Jv1_dxpq{M*;dd9t~sHW zY-6D(_%M#<m8ten<d6qK3q-fmy*<=oj1lH=COqYv+D;ET_!*Rte7v)vE9foter6CI zRUyo4w7nj+Q=*}7@&h&aLp<Q@;LZ8*v`nuxNEwOOpc0Gw{dT?I+vNi;Wn9+f;8zZV z{_j%qTj*ZHOo!0Te343~&yS5V+aW`h@%^=KiyIq5UM5h-iE?j&5WP*g{os#L-0{PB zz-D?IKQ+qCVS~{89_B5<N&76h!F?tq#&>!bPBQ2d?*Y=zD{)(NlkCo~Yy|{UrYU|P zZ8u8ysX#13?W6g3t#_6ZYa-(~q%mjaQ3XmRIw_Upb<e-n<2A*i9b0Aw)A=#8o$2>9 zO6G!4+1_6|9HxD5NXPFYYr$^g->U>4UqH2?@;x2HOnAa3O#&qk%C|}k6!%gIwbvLl zMq_-vQ{=Sm1#HY>82eb$w|>(#R?cMK)arRUKP+w+c@g%eYr^ivCyz3-CjpzjUED|Y z1crA9)8iw#r*(WInIf-yiO}#6rLtbNHuh~Ba7C8!9v$Ml^gGPesggrd88xKVj?|Wx z>@Z$`^&GDdAYzoV6nw;ujn86QeZ3f0Vp-jt<pK1x)p2CE#1d&4*G=)g%-}J=X0NU- zR*8P#6(XB+VS>!8(E2A6X)(OHu#vdlF0&HvGe_`)iyoQ8J`a`ad?~}Y#w?{xA2@V; z@RK<D_X6^0(ptqy7~*YTlqrp=B(bTo#L+j|4RrKMKc1@Tjy2Y+7PHCM$ELMkxV2DO zGTdyPUPbM-U;a^N-?-Rb4PIo(+Bf3Q5wYa}OF*sp49{y9!W>H7ht}my2rmm-pAZIT z+Cr~*8W-qn6OaH%F7qwDqlH8t|8Ij7bkF+9o*aeC&Ty`jL`~_=86X4y3c5{27WeYa zHSEGD7DQvv=)PQ<%5Yj<>m1uY7bRQXAy!Mqk8Tm93k*A30oiisj6$b#PG|Ys64E$E ze56+NdnoXdawCX|Hz9&J1FM|oK*o+onWXnx(lFCN$;xfv)xbK+rKYWyCCE_T1o5KR z$-`!^T_sv_=ZnWx8YXLjxzXv5cv`kaQ$2Xo5<W8I6&1te0|?Q+sguI#7lh5(&$NV0 zp<GAgh;P748Byz3=by}L=Ih^~MXe1dIe$lZ2K)qr&wVi0o{4aM(3Q-~YWJX12L`$? zftR?U_iJn_lLIZRK#L6ed!wcDi!piDNdTsMr_Q)(DnG_s4GxoIEVFCixRQd$-`o-6 zWf$M_JtF8&cF8JMd}y#}!Bcvn8Ay-tTGe9}uG7`|Te<Fv`lw#tuFtP~>ylp;X35R| zxwp;fO9LoY>-Fc6`j@-qb#PIxQ^6%!<O=|2FjUGuq);aBwKEcU17r8XVFa`*q;c)5 zdreBZD7GeF0k*CEDE$5Z6C=G-@gaci`e?LcqIzvgw)cXQx5lhVGI`O8kwzJv8#%eX z|FNp?a<)LWvBSv5bKs)!r@km@CvY}=6)30N61hnW+8+bF3+wjwo-uWHq;}GPfRC!e zv&X*yQh}dNy>I?2g2jk_uWEq8_k}d~#g=%7;mc2uYV#WQ!S#+yT%h=BY2WY#!Vo4| zYrjAG`cKnBnZiNGt;_b3{1ga|P4SX-4ryD10N>vKBlw;kv~L`GY5kyP{iqHB4y#7B zi|M?_x@;&N^&#bD&eV^Z{k^|6$^P)$S2lfm!yeiZ1O=^TNU7p*f(Nsk?udTwtBdIF z{L@WpD2w!ff6|vLYVNo{pC}i9!WP9>F4l+fy%=_lA1iS5%MeiL)twrrmh}C@)kNuJ z1;v;G9n-6<2&cITEC0z^tKkrTpzBQr`oGfRbHl3O6xvR3qJP2iqU)$8o!dD717NBv z7~M}BJoJ-8SFh}UP@nxBS);w(mAB*pTWk5=Z~A#`Tv}n%U)F7Sw8ct9FyY$Cc=^8K z&t=!@jg0i82>sx^GbF4SBz%{^9J#ttZ6$-Cacd{RDtP$vgOonQP8rWHg2U#h%7ZWY z<djNg5w;D7NxFb#xny-cBvt4o$lH<qA?0~Q7jFW^M>RdBy`|>Q5W(!%hh@oQv(4n* zaYiQ6K6oOD>M%x%t?}r8sE{&BY^iIm)EM;Yf>&BRuX3`oXQQVp;Zn~yeW}DlrP8>R zDeA@H#Z`%Ms9#fb=#}j)*9Am@o_<8RVI5DashLux?u{pz17~;z2d@tK%8ei=r8Os1 zc{{>W<fTECX_tH=5=dT8{<j8xR~8?4?s1-5Q?rf#sY<b+9dIUAD2GP7m_VDi_I?P6 z{f@vrtNo3EEi-Jb%%Z2~S1R6@DPpSKprN4iMEi{IZzjCFZT)6bI;I8;zb~bWxNHT= z)=OHv1#K@J8@639;orEg`t$221?}up6OUv(YjQKH^FO=!^^B@3PFK^fMNOaZWvWp5 z)zy#f=)winlmS~>b~dF@j<mbBKwnO{m9XK&X-qVaOPLzbOfw!8Hsrsu-|9~(ez!ZL zljzMcNEN>{sBpfee>tCD>O1V(m$Y|gzn9h9zAz)<^n38p#14ln)oV%DxhXZ?YSHb9 z3We8DdCR@AX!cO&DXZI6fF~m20@(a!1ZnH<e-yMMJZaSh4Q>v)ntH2ad@BtG{GA{k zb^^Dl5W4WZ;Oq>_dI;z_$hs7cSG>7|aj~O%Vx#1#e#FzH4BerWcRM4$V0Y;lAxj3} zM|JkK%;vRcxS{0N-x>`UDs&=Kj-G7xm;t_4%^y}jyjT&+%-6EJc<d&_3xsWqbCmUK z4_9ipYYna=^DNUMKtJDStgiK)4ZS8rx9<8=a{kKKHK#8ZG(KpG_n+eKy4`9^>)CHd zkLWF1fYm6D7L}nAEHKE-(x$HxuR1!YZxzJ|r>8|P-XWIEwIPQ^Ei5q6ABUEZ587X5 zdYH=~{_<tY`;^63+AU-t7R<`B1R{np)tDi0R+F8kqQkFw;VBj$@)hdYWtW^1R_Px~ z<Sv#}H7j_Rd@`>&P4+MCkF~2k6aw)hT$*XN93N6*iJZ~Ny@~S-MXH$YNMIzJvn1wD z?%dsl=3EA757yj|rU**C(B{=~_6IMYQo<z6Wk9vJBV#PCd}_~o#YW{<Qq6flanE$D zCcA{8KEG;d(&O(QUtpQvYu|g6^24|W$c(mqHY6bscf4nj{yn)0UtiJC4gLEco!9P{ zGY+n>^%Uz>i9D@2s`%!XG*Vkn_Y`JfV0)_X!XhoP_5jUrXp~ee;X9l3hc8vs*FyqM zmz^|iJ70&h4ox6^ziYs_OCXpBw6V=OFcH>Bql>lVoZfB&grX1)yQ)@o-m#)`Cm03K zu=W77%DT|tMW2u}!jn3Go`*h}=aSCeIs8jAgLV`ZD9_r;-ee{1RmakVf%l$*zz-;j zJWQ-Qq|$tL=k%fIfYx~&mPaeQo1-uRg9z2S^qszK)k}G`^ct<;I3f?N&qQd(M8+Rj zb{{x%WJeA}ei;J0+g8gKFJJT@!cBRnL42=5SK+77?Qe`>$9{a&J6NOyr(uf@PY|$Y z%&5VIw(UEYfJkK3pSC$lZ{~GIQ$fp%9ku{F-sCh!8xg<lI~I<HnTqesqh?+Gen`j# zH0slk8nT$=Jm-<YxUF^%1XsN(z*k4h5#}4xG^l7S9t_#74S_obxqmGtneW?Ce^x|v z=9hY3G3wzm3|EEQ>fd}nnay~|x^_jCKBW3EXTok%-sH0B)f%4`>0q7yZk6ihtjXsx z-#{;Oo-Rt(bFP9TJIU+=sFcP-Vj`SE_%rfBs{o&vCo|;ff3@KQaUXPWLqZ_B&gEdt zyQ~X}HertR>!1};OYSXVeXeTun~nKXLa5*v$sEF#k|OMc6<9jLt_kWDCP&`ky#Ty! zJ0q(vyAQxZy)>$Sua(xG|4!?HB<1C1fJe72zzDo!>ptJOh`;pOZ&5{%wW+<lKJ3e> zkyvc;`|EdpHC(T^l&mx&a;gx3_q4-pi|KUOn}VmulP=bM_(xaiJpeJN)W~YU3C2bl z3NXexRRH)_oxZNHcpV2n<wV2qqKV<ZiLO1OCo1JKL>&ov-_Ma$P#WT+NnGsm881I^ zlmc>%L-}ihOEAuOQF%iA2e~Y-pp5uU-^TTmjk{$_l!T*@|7e2V6%1NkLPx^82f!m1 zVII@>CbJA!%0gjDu&NGp1)gBfT<&|1zu>ZScsdX}+Xj99Tt$l<jcd1BDvJ%Lpi1xK zwzM<*`{Yq?5q9<4PjBpR#q*0z#z!plDk~WR<5O4BPHS_C6Wf)I6CKk+27;mqBXvE8 zLKvg*>b47BLHP(_KBJ^5_u1zNdfN)$s+~({+bzSmr0+K9N<CFw>b=>zPodW#Y<n|7 z+0N5&^+h?KlKz7t1EjA-T%}3cSf{^Qk$8@Gcc&*^dfi5zOZxTR%rfnh5cInHB@oOq zN}MM4pxqdnlI^cxF9QeIaaV_~yrCB=yM+7r#BIKA_W9BD{f|4ZyvWJM?L9!I(Z9Mq z@Z23$=2h575ozVF{#e=!vmRR<3N>3YOf-D}cN^}sU*<pYmDxfkfdsauMCBWl8RF8s zHrEZ<kG(@f28JpGBj;&;D>=ohEu9~W#rIUP&t9CcI>r1CF7sU1jXM>wpL_sOH22;5 z;QE5cEx6@iia&5N>b7>k^*P4dd8sw_O@#0Qtw(-|k=x7<`kA6L@rK-Yu&}&GL!&~b z-r{S<chNcu#~fyla-7+k0&jEkhOH%1y>~r*z!~I6!@(7CjWAW^;^3hwGrMk};bcr9 zTVW47Z=m6ks}Ag#x+q;o#8>&#3z>HJYiH(UC66x2y5B{gi*De40~vd{KGKIA{&PsL zDn1^X@JJHwbYPf*o_{m+2IkN;llvEqgM%}scNO>MPygclP~Cj@<v3JnJhD7RtzYnr z@HYAGQB#ZjkcO#Yudgn?7!y4LZ8kxwzJHH81(y65YkgsMENM#TcCZDOe_I3*x>hsl zk}e|%i!|~lJ<@QVUQoO~`y}71@NPGr*BqWaIK^C+g>kzbZ7jRkd}yWrn<Fh(^=z+d zJnU%7B`36lBLWe4Tzw#E280<U%?@hbbvJFe46B0GAtR|lhM09Yn}VBl`1A{xvF9E8 z_||GABYL}+n(%{@`Teg`!#I~9`-uEWy=IaSDYu1PzckfH<_*rYVr?kQ&T`m|TQyTL z^%krU_`Yjb)u*c&VX@`nqTh6z<g3ieARfRM-*ggYa;O0j{FAT9sL{zDdZt15)XuyM z-|QPo^&L3%{=t5s0yxsvmJQ`KYaUn6eDiDvmIswPRn7T0UM<Gz`VM8HH;$ht4QGpt zPnn{QO(wANI{}zbDu*E=5euhx4UO)@R%7#|gLmFIVj?B@UUl;V*lL=Zc+6NSr;<Pj zmYVLRGJ)PI!N&xxNmjd*JT%Bw+Zm0;XTb3v(Dbl<(OW8hz8%C@&A9jm#~h+UImBDe zw0v~eC*UJ?T;{#$E;W05o*^eMbcJC7ZTPXez^R-|&KIr9bq-e!TH5+Fw1!+dr$hi( z+JQVv$iN#YEpbd(0*II)2A-T51^RUd<`SJ{AEU5;s1$<yq?qcJoFCR2adU4?u}&mx zhE4!Ot>ZT}8HTrobS!dxf_rAQ^AP4t`WrLB7q~p`H5lBxL~h%5n}(+=KyUSVR;+5E zyj;gZ?nuE6dCkMe><H1krVjdy=S15aTGRO`m&OG^=;as{?@MBp;*lAO^H`F`Ft7s_ z(1bGNVGE|3xUC||$fMdBlK4HLZ8*WjF=|16s~D)Z8rDABsKVV}hg3(6%BNk!^A<Uv z&!(6I!T~yJxnun^(zDxqyd4e86!K4Q0=ohmj1eQRjf(6%pn3Dj`zBu<T7)YC^OeHF zp-hsgMkexA5#?@eUoS^MYpe@}sOUpy3;JJcEoGi)GW^O+R$^gfq-smZe{1K~P1k@& zHb$d@6<O_XJ6iOk@QQV(4Kz!J_3tMICK)BgO8SD$V~SDtzISly_bIp@dv<#gzDnf2 zPg@982e(V@xUtA}36w8|6<h?pp4S4J^pAB5NqC?56jrNa|CVFoQPMzMIrX`=c{~tu zXs5SW#(UBUIyCoQ27k>&U>bB3Zlv4hPrS`(*ZH7jYy9k}s(Sr7SRU{v*C@|9ckE7p zKG-4)-EE03UOi9k(9AVzipwc$G{e*w$Mn9(ZzcPqf7ws*HeOt3I_8?NJ-BZmcPB%K z?L|gu<=!l6(D;e@l2Xi@go$(mO)X9FB@9n5NY9ka><%Sqscz#_OD?W#>JgT*Gh1T5 z>-9I9GGUoX1+p3!I?!(rR@t%A24{WKg#b<Iki68hnd(GL1#itm!3f;nA0POc4C8F< zGairB_#0@DfgyPSybvgDDTq5_S>pam=gT&hnZAF@eZ8d-2iHyPWEL;&E-K{}k4ig4 z*^yCj1O)Q+-q_0@ANyr-8;5cU>qdA^hD!KXgt#}g6hg+z*~^-?>zH)*1(#wh+E~-u zDzci;0RWHcXN9@dU36+P%G2jbqkhhHWRT6O4ir1KwRbQPeTCFG<m#Qe2(zS0pEptV z^Rq0Wu<6mxO!e`M%a@XuN26bd`Bkc0Q_#n|)#6*v|5FUTl)`tC*UYZ|?#Z>eG8FVM z0SJo_4#taX68HS><$rRaH!Kz+(5et*+4oAyK`=`Y^3DhL*JjZbGnL_>v<2`cx&m|8 z0VZ*maUS908(nH}hGErLm_%CwQ^^G!^7c3<xTSD``N_*dAnC)aA!yxx^0lq>(Yv4a zS(9b|bVH{E;g}}jI-vxs;6tCaVvoQf@=Ys%1w#3UUU()<`UfZ1)PSnslM(*6DNilT zooUl`@@2z8=JhE~pJ`IIVyHMZ1YZYvE|Cr1TpocMcXXHgM{<{ojZM=eW90(z4CKG( znL`Q1<eosjOu^Fi@69h;UntTm%x=hgJM->t<O{11iKHq)KZ#Tz-yW?-w9U@Hi{sz2 zZfOWyEGiJbO_%bfEl}vJ3j&W-0m50Q?xJ^vMI{rMv)t@;;S_O`${rjo)s}53Il@wX zfXX&7hHneB&}j=g6~~<PG8g+3aHIdKEUQ$=4FM2ccqusUsaCI_pElTtbT)q#b6eX= zD7*!gIe;Wv<7VjzIqXrjz3*H3Ny5D5W}-sri?OJ$Cr6|{owW~nmswNwV=9`sH2Nnr zJi(4J!}jP0&EB`QM`NPUY!<P!WI!LL!1&vF6Ka5qKMA$>O~q{Z5VAUJacX$37!r8s zELVN%a(?DOn+^cNVukXT;i<W1m`YMlq2K$jxov>w13@$!vQ*W07xHhtlQ%q^fUpxA zX18Z}wE6CR5ByTB1WXZ+99W6-MvjiB{WcN7@K;xMHvj$n6m8yV2jYmZy2fd~93<GR zn2Z^Z9+qf~&&Iv^Eb#%@zQfDwNaEGr!cp$+InQ;J6rNLxUe59XNBD)xh|xS57dTsK z4Z~vrsVb`u12vJxasRuI5H{HLe@O<jP?mMiW|wKGaOS4PgX<<vfwI@x2eAY#{-2)J zY74+yTDlA_Z-v8bHJYU&a8#U75dgco+qlE#aq#!%kJl)LPweWp-}?sV{b5`MM|-9> z$Jt~)oC}o3QY8#-RIVw;7l+;CJ8Iv9^tCpavpZp@4BZVv>~InA4-Xj`HS7n|eYfMO z)k8U7=QbV%KL0*A?Iw_x-+kWk^>Ni|KbK98_}?lR5Sd*@U2p3dm3d6h%P;oSB^?3= zu-Z$ofG6#y{bvCKUiYPC4BFHvdMuf+M*oHY_&%jKj{EX|i+Pt6ueojkH{5P1JZ_75 zbeHHZ?a!p5$FFzMHE-!@1sbP6-}e3Swv1P@`(6aa7h$y)yf!a23D=Xo5U9dt_WbVR zUc>sJ``MSp{QUEL<l^k&vivwQq=o7#gK}dm`_Su3V~|muK8=`D!LjqnLU^Hk<cAdR z8EV~8r=QdZd_y%qfACimg>iGQ*3G|k%%6-EZrx&m9{8sYU8$`OkrAI#1|{|Fq7v8L zS}T;2CtH{=aF*|WIrYg&bakzce(GYS`Mi#VFK4I-JvR=Dr9J**%O<65+A|ro1YpWa zYuYadM86Fbw7J3gc|c)j*G8fHmq>eQKWLyLlnA}p;!}d!_aONjHT&N!Y)5j-5cxG= z4*gLBW{FQeO1Ky5i?*#%X-C`v?0PJKg6GP3oQEEj!+)Sp$1n-V9glYjP^1V5O>@#N zX&X;xuLPCU8?``&wclNBt7{gNV#apYX=AM~S8NSO-<H~D_==yoF4d-2g&xQ)7Cq-* zJ#8Vp&o^I+ip%f}0HypVaM_FapLygm`s_BOA2QT*)s_zVRq*=8ZMk<pX7J5g+Pp4m z9Hr~2DN2iGvHeEqFh~zdIB{Fn!pt&&1jZ_!XYd=uMxlMiG5Q2DT0UsvHDcBSA^qG; z(zPh+XhVN-PGY<MWRDjSOh(J5s7cxYw2<`32VcXVkw(F}H${69iP7)l%D6s*r}gEg zE5_cJl|M=sDD+gO-_$U#?5wN`Jv36%_8Do-`0>-*CPiDuX9d!?QB_0l?G=24Xz|az znnZw~ThR6`O3p-hwhb?!x05@V9yZ4_?@InYI?QZR@@X9J)dP9>5~1CXv#aQ5Yp#}x zb-uN@3Lq0*8g+$lwIMumXTm`E_}ZrBoU;1McXxEQdj^s8mj0<iH|F*RMwY$#!MJVV zp)d?fZ$bd{-h*AteHXfo0aCy%v8ldrSaIE7`efYS+$Hg4`(<YOBiJECTeUe~&hKrw zpRCyz`0!Ad-{y(SJ0jr8%N1Z&s9zU6d~DMagbnBqxXy88vlZY<q8!Ji7-WVUX*UH6 z6v=FJLKn8n{0f1UW9$A{i;tu1hySdRs`Tmc#wE7uedLagZ^yNN5TPCZr0_8}MYr5F zM<}+rE!xo4AAB_M!u>HJO5;>-XZkX!Ei@1_Cvobs7+9VkCuo9`BS$$iD_1E71Fgt{ z5MQIO;_reH$;@Lq9XFvZ)`_M>w;&_cK)J+C!E3{v>$ati+j@VQ%&%vhF(wnG<fd(; zI$XDo^!_$2`X*a5z8Q(7MI|yDF__7;6E@@$WrsoqWi8CX$41ln0J9~cx+C;QxGGOt zUcd&S=OCtG+V{rf!^5FZHrp0?#<@mx<io4^W39qFSN-NW^p*@=G_<{6+boiXr{vKk zF%7Ea+^ZSy#zVbHYaZZ(+m5Y5IC?c39R%s97iFxl_UCnlB(ti&9r|K<Uq!;Nn`i4b z5j{UJ3FS6z27<a@^B27A(McX_y+O19Amzn8V$w@lF!9fR$Bp9J8ovBZF=snC82?9_ z&Zz)1re<Fo7t?a(0o+FOp3w&R${=UPql;pS<Mt6h3-udFL&~IUcTS%#mI!@5qrV!Z zr|Z^EKhR(Zhif7MHlWTY;!_ZnAwMXB9HA*>tAP^Ej=;TbLR5YVt)lBNvJ8j^n%mvo z5LzrW=yPqxM9{>y(fJl1Glo;JLeYZ$dd^l+d?3?v^Bf|s2(=vDQj|tod*KB(sC(Pq zNS7@^^c3SKBNp&8r)gIn|2wUBU6@`+ktCyVVQ{Wa>m*}S9fqhwz7D%Orc6bAl#}w^ zWw7nc4Ygci%@&fwY*uxz<AO2}O~xTp7Foji35Ev~CH^uXG<NwWP$3(k<fLmw?{QIS z=#nQeYiGC18Q^xHmLQaNw&cIYofX_#^|w@~J}m}9qjpSWzkoX$)hFb%BC&fO)Y{FH zKTH4Ku$p_QfuYSZbLeyw=F_XkiX=RKD=6zOz0`|T?7A#B`i(XuA$6eBQ)w(8#CbnZ zTIYg;r$EfH<;X-O3IMDnH!HQ6ZW(PZxOSZH=%+46V!O{iF@%#uiCIxzQl;k(aZjzH z3FdPzWC&LUq36ifPSrz=7yJoIW)?(>VcWie=qseS`?h33+WGFWvNCPih57%KIQxSl zt-G*dMBl(2yXQf8F%8u_;XgnR-zy^x&f>wW`xa0Jk<XxCRj2Xc!gy5e{=<$j5+5#+ z&JP+jUIdx%P1g3hXaEzF3$%M#(!$sS{YjKC^>508=N>TmXFU=2psye$pTpD|9sxIt z95f}HP9#QQSJ&CB>5AuR17VG6-b?;hoacK@gj$#R+2JzVvc^leS8j?h5xVh^<1vY< z1YlVR^C=_$o7k7Y{>?1OHXkgMjx^P6k1-n59D{;otBloV0r|(M%v%5}{&I)#5{SQ` zSNQVA$O!^luQvjP*U$O0x{i1Ik10T9(^fmMya|)MvwV*iAbN^#;N?enyy09*>+#h7 z!sP4r;h1rWBy1=D&9jRFO%QeC&mGWD;D0tjzgNgC^Nq4~_*$C+21QOblg&szFmzC- z2E2>>kEjC7Z(nf#C`Wx+^{V6B|E<{gygj)oIsnezXLGodo~;+YY_WcrFlDaUKeQrr z1Mb^TocUj#Q%(}=XmLHiVFh4|E_L4a($0vJ7Np(K?;Xjn_g;Cfx#9OXLr*~0S(9wi z?e`ZwrlulM31(f(SvyVMzfNid^929F<ap3jhFPc_E?Sv)O|_xWoY?UgVWL#C56k`0 z;=i+r524jQC7)_<YF(t@x;?OL23;C!9O_~R%AvIcxxa@Hb{`cldf`W|g*e=lRS4rm zxp>>8`lfM{1=BGbn$VMwF=K|d_mlI6NF^&*;SL~_I;3Bb0c*RjOrf2t3#7MO42=$t zxtt!t3eSnzV5ON)c$I!mwbGX#K*nC_)VKs6V5h3$$2BWu*ku~2(}AvsK38UQ_kib0 zB2$CJ33~MWIP6UnSw$~mwl+7WON~o-B#Fd4lG&!mP$tC0*J8pJRP~m0(8s#G)q7-M zz+-!;627r_x;*-q8>VAiNF!hm6cp~ppJ8%7G4*j6XPoojYO^ooJ-T0SMa;oVpKgQp zz^$Lgliq&hKm}X$9%t<#QuhV)B8jnFi5CO<O%d4zR{wRF^l?$jY{ow}>Wm-1yVpYN zxu{v7c=(e_;N*IcdcSr8<%#Q5?PaieqaS<vi-U?5LUbRf_(w8(hCK8rFqQ<`lk5f$ znPl;b=jWLHyuQ)^i;0Vrx@R|gGdcLjryf)aU!#ing{WjG*n-7!vf8GPj(K>q8ox+V zIa-RSTwWrx2IBZ_u8fecgtygeox@oj8-EGgvQh=^*fPPq$^7{mfk7x-@!CK2sQ$8- zJ!tpVP%|z!>|{2}*!a3#ELae`wH9z>tTY#};L)c`SMz-gplG9OnVxe^%{$+Y%17j) zTH-P+u3Gq4e$lWTH*;9dAZ!z{_AzxesFA}riY#~0dg_StDu|^AUu#b|>LOK5w`_W< zN<iT|nC6XH{npm~{db@lS2#`&JUNMw`&n*y&7ag%6_CJvO3OH(?=zLt!^31+imoY? zXRvRiE*&yHj%IgwB;d>o3=KA(2x>1ZGOM=VS05o76CL0aZr|#SQ=^yR`D&*2yYJRc zYuRZU@G-z#FGR~)`$D#JyJlprH*)s_c0<7mmj_P)WyDP3#haoqDs0?GBfllAk0>9~ zrYCNMw^lD3&ftKydvC+dvyAkjkN+Ihk`I5R?en8D>n!$*VQ*TCzH8xy$sTbUia;>L zrIBXTl10xBXu1g)jcnFt`9N`KSxiF7UNcRaPX75F9do>EYGTYHaH_%L9bYUe8DDI; z1V1H0>q)|56?}Py&h^1{4Y+VW?M5N~>ATyhekH~{MtSRP%X>|f=vW~Wd6^9%bfOTj zaE0pv?2TvOhXQEL8S}B{ieXGB=gC3*AdK^D(Iu720#5#5D=Zpu6Luq&U|RovRZCLp zv>Cz94nDbBK!sd97_;zG+@^j8;ihi1dD5m=8t2w`d`&heVDR!ArJ}ruvZ?AJN78AJ zvM!cfC=$4C>o+MNt7wo7a)<ehjtv!^yjo)``L|MDlQUbvMn($<^ZNu=_g4Ja+ht3m zJ<F7FzLq$BStg6q;w+W6SAZBm>C#{oUtkn=?Ve#T(~(SJoHvxV-8BH*02~lz({})G zIu#6Dd}MWagvV+m(_k+utqAj=;EIBsu=b~?+*cn+VLN<i()xm}t6BQP(B>Z`J~99# zx_7FNVDhn}Nx=58hv?7f<Q^hvmnM_*{QqA3vX4IXtgUz{_=SDAWMS8Q>T_1HCwhoE z;z*t@5%dUQe^eyTFFOKU_ClBN$`n^1ln>(aYCaQ9AKmWus5~U}&7=lMvM!*aGljEt zG)V0$7WrJuKXxqk8dYg$nAU$gBa`4$f=al*&(AAeH}Cc5w-H0b1EhFR0AJ81Lc83A zkQVxjWRRBSst<Pg%giSYLa%ca-~;chSbOXCiqrk--j<6+Fmek>8JteJT{lLRV6dH- zM0H;G%B39)x%*^h`$QQR&{khx**pEV^L`0f7;SBmYS@VbkEX}tGD2XKlI;_VJ1R^> zXe{YhCG&He0TWdTAdoK^wxt9!zGt(jOEgw1SQlJE>&X3=Mr5hdkUZ~`6!({jC^C*8 zE@LHaPo#|)U+0~%`Rrr+{idrIz31LJ!t^uEOxpcVb_?=0yXR`CLFt)==Jel*Z7lQ+ zH3ij|gZ6dl#QZ*p8f_*W{px?f3RrvCvQE`;$uFToEVqFu1QSOqgZP#v-7WJ`o4>sy zio%=SCMMq-1$gOi!7hEffg-hd7U{juW!uTZ8(-Ri3kzHvNvw#F{Hbu3#{wk0AiBm< z#lQl(_z4_BVJcs^_98l~wdH)r%;{%@)qO!6V!+vuLWXbJ2ys@~-2-lY`qhee!n1nm z$#f4M4-rnI);ww{KjqAsnQZY9Xslf7nZ5K?V-*!~I6DZUutplYPv#%A98U$A!!t01 zK$>(w0GLGD^zw(A%-3z&zrckr4E^FL0YX||s$PT^)6cK92M%zCk0@T)KwmcewDs2k zp=Y<TsA%1eP$S(cQ;E2{`A@CMYW^NMiG=y9Dun}i{v?3cJdpWW>H8w;RMk6*S^Q-g z;mDB|rZNg`3y|NwP$#8A0|2RR?l$+1tDntN&HmSZkEd5UuFt#B6YB$3xHF7(7x>?@ z`E*4x=mc-GrqagYX_ey997FtS{4Ofd&;pOCIz!T=FZ-`e%9A=q#yPyV&x7U!%=C-~ zKjz2)5Yy|V@CPnmq!ymeyi{*1l#FhYJ^4RpSTmD%Q%2wZ48fGj_`*VJt8sNG9}rK+ zL8qepJD2=<yI&nr?sSbIr2E=hKme6Sn5G5axxMDPxI7(#vT;zbfSr~dZ3vYphEz{| zk~u}s0iK3U)@B+|(XG3C3d^&eNRksFKox=rckl$^(JlTYrFq?{pZWoCT)wmiS(w&| zqC;&Q27Ic{-d0dGfvT3}hV|uu^ebDm3a)8^X2fcacJ)f_^9ZGp{OpDCI94c*a56v8 zx-(xPtPHeRP3dw*{SL`D!U;_7o3q7g@eZF4$pUoHBRPHN)FbREZ76)zrH{axFM#A# zEx0^?##!-_CKYxr2lc8c1!OTC*IIJARO91^lSI#-@Y284Q3wHdoH{ue^U}XUw>Lin zL|&bzT}z%r&szR=(kufvx}X;Qbx!{K)KvTAtM3blS>tZuMYPO)$+NG1%kA`k{!`9s zNyy=%$k_sCk{%tA2iPauahinPMdP$JiB<;NuIHlVw`Z*x4G97B05&=C;mD`|ku?9i z(}G)wHw$MRJNQaPOW6Jm%X6Ug&>BGFTv4UzBM}BR4aH|a`Uxt-D+8xaP4+bn`qFwZ zc1$-QTSCm2d@i%YFnDlTEyJwq9{RlI=w?1z6O?Us<W=(Hcm7lA&7>5zsn-3(8kt}& zmMpvcUHr<+w;L4+J5oH>msk1Q+r)AT3VTj7RtOtmod>VQRM8%SM|9sBod)dhvx7u& z&lQ0kDY$#>a`(;!FUXdjb-pS0giTRvJMpWoX^*((Tk;Jxn?-XD`i(!=3aIUwKc5WZ zjoQFjgK0VeqOZ-7s&uhGCcU5srp8~?4+Biz|Gs2kwNWN)_+WTt5b_Q01IWx?=#+Hw z8}cIEI2-*_UZ}Bv6tz{iL>VFQ+`9HSwF4VMt07F=dhxyph&O9Wm!98GsMxJ@XLVaR zPf3c=?_JK-UgjSb@Ne5AiYd3i_86Bc%U>7*+_Eh*YtDy6IlZH)@ymzGMFSRhGoQob ziKNoW2bJ%!JAX%q`<PYoKd~ZCN6^tuJ0W2xfg+=ur0L1Bq-n_m25c2uozQ3yEZ&~$ zq<*JtX>NvJDD2Fvl*T30Mp-A)X|;PWm*k*T25Gr9l|y{L8G3!TrsF71GMLXBw@1X$ zDiOwO4s`fq8|<j2SY%S|*GsL+;6!NZmvEOR_vKy^Fh>Fa!cVyl_a4b32!26LN!MH_ zun@$-64)~*o>$+b+=4r6kz~a{fUZ5es;+$%4_w`pF`jDrj&$(mY)xIoNigahouzai zgBrPguX(&|v=raZ*>yj@m!GdL!w=1#IREUt;eZ6-cWv^&%8LJSiAA}4Axz!qzRc04 z$M;AfE_t*wDYDRA3P``@kVN1*vEL*%p$7+QUtpUE`=RCZ?0!nMT_EaW6u8&mA&9^F zC7tQgbjhRE%7)QqSBm+qLd0)mwdVweY21~q0k)b{AvLItzs5{SiE3pRW$EgAV9-)P z7W2i9&O1x`s`Hdk)+|v=ui=}Q@QisMR@r)~YFnGDH!@yrRX9WIVY86VuKkYDZ{c^` z#UqFU!Q(<D=lpY1L*P#CZT6oZY=%Q;e#kW^h2*m<4yS2Eq)?8<+`k=iZmtd7Xk>e9 zqN(0tc&?wfK3Z=FW>@|exQo}(dXaJGciCRG1tzb9CYBd=zu)-|q}p-RYb#A>$wQ{p z3@=Fzxw#Ia)%k+#<Zflzvel8vq|X9;!z_!k@%_40zSB9E8X>o;GoXQC_vCDN#J|=y z6e_U^g54fake8E-25Oeh6DAOmFF~)Rn*niQ;{Rjst)r^!w)SB~kdiJ1Y3Wizx}-z8 zQ#vH18>AbgLAqlT(hW+=MnJkjVw2L{-{L&abK?EZ_kQR7{rMa37<(}8!NBdh=UQv7 zx#qm)b%FlW{`9QtG>4|)JgF7kmkrgDJJ^!EpF&Gn2PeB%M|xOORN+4xN@;7{9gijr zR>q5-{mm2iL+Psg!ayp*1{X9n&o(7hlFAA<)+Y01GPj*e8<i?EIt+-AF4Eh&bT~uC zkygEYTR30xx)>hzlHLir@3lq`d`s`8sm_0u(t=-f<iwbL$aZIA%(syBt&celLv`w& z5Fk0AAj;(GJEeT(CkMY>6IrX8D%p&f%INOZ^<hOp0ncXRcRWa9#Il;WyzK2XpB~8b z9q_dt4I*}TXt}{dei-%e*+$GB^BI@280j<64C%6}O{8DURAf5TgY&`0ERY<+UgrH? zjbU7~8?9@|Gx7}3&4mtwG>n5llE-Hxro?I!7~lMK%FnXkGc%v<G{i`Aw5F&Uy!pxf zI&7wILI9tYwb069G_malsMq=$sWe255#WSrFo7Hjt_pIe$zs$?dH9VRL>)t<VJbN? z{6Q*jsislh`a(n!u2<v`kob)>gAm#NmM733nWu#Uyv=6N_TE{ehS#N@q`L0-?6bW^ zAGXc<#kJ8PwlxLu9`DX}@kq<#i7B%PFW{!J-Jk@v+?m9t18Fiwz22627H5E=!&!<P zD4l*x0WE1sU@t*)7OSO?Zgc+@?n-w)9-}PFseVQ>U6)=!%(u!{*Su13+ii2{&ZY09 zO23=0N<ZvyGCEE^U?_ri=9>It`-z4h@1;YYDt|)TH`3PVOJ?%~8)UUt8=7>cZDTTA zVGd?3<2sVvy4N>uLk4mzI?;GCK9@<&Jl!a~E+=QJccbzkDwacCPu6a&=Y)q{?+C~N zR^x&+PK4en^SeYe$9JPVGnF<}-3Lz1dMnf_`ELkSjki~xL&@pazow)F(;A(b&h+m| zr?S77s~y=^=6nBU85_Dk%>^CmH~FTGPb}yjfNuOd-{*`p?-Gqr8Ft)L`b>T~-7)+x zE`S_Y{P^B{HIx2T!<#gmsP(EBA$5KZbhyH9eC<R!o$eoThNv>OG_}@q-YAqatNGkE z{!EryMJu@VuSS8~HH>2{(5Ibm8q5d2x`G_KH#L-`#&DPOoWcytm#3!Pjf@h4DxQEO zlT6z}vgA`<lbCPGNUw|`ypRTG*K_yIIQNja*N*Egu=lEJE*5k?w*Csb3e0vvgIfhT zP4jZZb$-sw{f-_BqsX?KESIhfOqb@VvoC%hBl1`Anl3bKSQL5b&+2rC!>kkN6D|t4 z7TwtHwjj3ChvlsV-iCduOc(F*{e%>D+te=@fDeD^LR0gzLK!3(%`)c`#5VSLQRyZ+ zov?Zk2#yVWJEhm%rZ*SwP~1<(3DUg*6(+Ox(fktM>%9nK-XNxOT|?LPwY3o`8g9|g z%h};p&cCPnCTgCuqzzaU8R^EKkH}OEZw%WODfg)9U(Uqkf0@)Ll~UK+#0(%=n~oev zb@?Dg^AwTI)bnj&+Oo!Di2w#eDIWZ^_8YBAWYE5u&tQ~_$FQb&ao86$Ns}pCfJn+` zfG}E~b)6gC^9(<Y3d?rlDb<gW{OV~#ySLL+)eUb6YTT>$tzPUeW)kRoh6P&tM^Ivw zGHQZK#2we={_$q@#^rYK#y2BpeQFl~^rSVrfnDYXoG&EGv~QJo^O-tnD8>eB*=>=# zbcL*M016HE>#<CbF4j5$_bF(lxlPpQ=eAOv;o9vBl8W&X=1XS~YHxrPE1}-n`x4bQ zcb!^WJv5Pw3gaIH5gsXRh957^@(*3=b!#@%fm&X<o%`u;H&5H<L0yIR>wy!T{#-*} zT;@8YG_O;T>y|OAdvZymt&o9pkdU<Pt3&WZjyhY<QBgk{P9oIhXkhZd%P#QfjG6)V zoh`)PULM?Q(hX`=E{b=++x{>r9^Cpl6}GQBf<qAHXJ7gCa=T*j87xjP<|WA!XCj%_ zfxX{z$WRmPUp<j6@CC_q7emF!6<brYr~ViV6q-&l+?&c?S9-cXM)rFm`_qlyAaDOI z3z2wTZ>!%4v8VoCzSOnVu5ri7%kZ$Am%N_4+}nzZnn119{bWVeR&7g|=}hdL$;fa% z6v4PMz{<I*WWsH|QD8-rzr6`3ZWiyUOtZ`8$Z(oh<x2G+PuyyKaaw7^2{7`rIKBn% zt4E!O5j<utS8J&()nfMQxkPF!VwGIXL)GIYs!mc`<sMB!bLl4bDPJjv;w|ACWhfq! zz&E2C>hf@Kj8hJ2Ru@zzkWM1=vwqVpd;P0S`WyWbpy0HW%^N#9df|v4Qyr3?(7$3b z;-z~#k)EuR=~_He-wfo&=p46-%j0fL0t+;&z3Wp0^p}22y2|_6-)QQy#;u3Tr4QzV zstR7ew%T0`^3$fH(<g<&CuaJZ&okQ{dC?jiV#{8{s~$<#DlC*~tGAV>2_LNum_b^6 zrb^i0e1-CGkn*#1rZ(XCu@b_suB&l|;3+5w%<yBwGuwfOw~=Zl7pXAKH8LZdURz%u z{rV97+emR?U4aBi>->JwnMFN@SDM%_L{IvK)git0%2(lBQ%o9PBJ>C~J#$PzF^1Ih zoON+hIidvsj>Rzq_FF1#|EpIAcUmZAB2-?Wk?x|YDyWg!_c;T4Hh%nKHv{Q{Qgu^x z5$Pd(zT&mOSJHLJZFeT$i>P+3Bm=9bo9-E|`E$)4XT$Fe>g)?P2)f)xmW$2ax?Ga0 z3VK1dDXw9Kg#>a}B{rt5$%U*lOQpT)Zs#33(WG=&x5rGjPRhSu=+vC>+d7>&-!`si zynE~4sgU1tmUOq(+*}DWdwhXHs;?r6Ab~Mjrz&HyvMgw^O@Aw=kWDdOq#bRkTK=XM zqL%-=Q-bzLfjZ$WqeSh+l}+Fn>+#TMj^m-8fw7XeM3!Hdj{@?H>6iIXxLb3sjpF+$ zPD&{yG#K>~M|nbNi?O?@)bh?P$6d93u@C#h9(-g<bGWsmpp7=N=GNvlYmXMl=-MmD zFmB&>!eXK23>V(f`Pecaa>9O0TG(tl*4d1jdwtTv-#yw{+;I6?#m~M^M0fT0ns3LW zBv_RXoT_Veb<)}wQYk-hp1f#F_@vVvQ>Lo>d;d#VVIjlS+BN_Dr`8i*-V03_%MCQ0 zEvfKqL%GOiR(jWu==N5NuHGnpE){?_C>_4>&+F{eR7ww#p3>Ve+B$8QbO6zx-D?An zLZ%m>f<zrIImp%ljcgYSM|VuN-B>20<$S4ed!X*hkeEp7z9B&Q_F|urG^=b*S)Si& zKgj|3bbFhD&tg4FY*9BSEo0#;-KQD+&#YQoAg;|^n&|fZi3xJU_c5tSxE^OifFdHr z!rT{w6t>^C?E?kE{x(X5BA}15&Ag7QnDw>xp8Hx#%<+WwUh$~#G_-2E%CnA3zx$;y zoe&+>vTeIs_qZTyg=TfeAb))lkBQaEcBC6zxQtNvqj|zAjW!(LFna(_8C`wsHR9Km zfEXGr@VO|~ZaTwh;@R=E87a>ViR&-B%VXtWD!YRkhVM?)`-^hjVR#MlOwL$3#V;4A zU5h?ceo1(rAnS^)7`3}P^Rwl`f~1=(WBIksT$Gr^w0o?|=SeY_8%Z^c6gIQR^5^!R z0lcpJ`fUX+M}6+CA>YJmnB+t^t2zSg-P-`M7-EI%E0J{j>CfE)G?|_}Qks5tEOC8r zDb@&RcIeM2yb^Ge{F2ds;J*>eqB0zM$J2P%=a9f9pUCW=V#ZaFFNo7M!__Jlj?Y)T z%ZlG;lSilA_M~_1pivf;;8uEbGpg^YyKy5kpkWlnCQrfU4by1Ru4nFXl_yZ3|CT0D zsgTcM)WhO9?^ItbVl-R(-mGr_ET-RUh>!dwNQUG}2==ZlFz9Yk<TQdt>tWwVh*DkI zpw(!fZ4w<{nlT%w^EL%AmHEG`s~r1w&A2D0z-(}WSG}r{#`|#T*S8zD*p6DpnasEH zf;Tx>YWjhae5Z#J)y_N5-w;qfxQnSwlU4ZHi)bp`m>_m7LF)AxsAVZ9L^u$cr%;i5 zjg&s`=YP9EH<-HKfEb=BTa?Vc>9y{qd);+GPwPTMO|W!xdxMy^Of0b#)qZ&Ox}8X) z-sY8RscT15QowV;TO7b`YnG;1R(jr#qCW6BT^ga~xX6CDYjsHAiq-4p#AVQ<7==X} zD+lVOUDwt?E@G2|MH$4K+fbdj`{bQbp|HQB4J3tmlGdV=$hKwvOGHKNmo0|1^=B@I z_Ro0x92B**K1&apFihfJ>{Xze5*z1igUYWY>o>&=|Gnltto2n=y3DbIPK;jsRCBWB z+fg~*S!X;y)wMcnZ3kX2SZqav2TN;>PbD%wtEMV-+1B9oZ`!y?Af;>4@(7Dzz11D< z!!w^|oVfnHh`XD;T|*pn6}>|uc0vClhc#r`<vmpSP(c%@g!sZCkr!xGi^SVkxy-0r zd*1>`nW&O<zCzGic4O1#hFF?5q?7C#WN&?TY6*0`m9hI;pvf|Cgt-)!_d(vfz)fbJ zNMX3T>8yZlGlOU_PZBTwY<n_Eo$I|UAgf`z)1&m^Aa1q(f&sUS1k%sU7hysbK0d*A zcrGx7+a@XpDsdJjnMy;a>nPrGm@4Y)QPiPm*qM-9NiwtctBF_6bJcv}GOw@et)_*~ zFdUwmU`9*D>AOT}PL@x9UFlS0KHw)-F@TipwRkLh?fio5t|9kQ{QlsCMpQ5=!y;(t z3T=>K%-bF;|9KU~TaoK9XeX<a=$PSl$?;m!@Xp<wGcziE=5W=j*P)#G>tug~7XYVE zQGk38klDdNTn-Z{LVyvdNarTWm+X}u#+K$f@>iIyM=QJ2R@+F796HLu@)r`cTWQpX z)YaBiJZ)z&+)mm?m5Af=U;Mt&t{Zm5e<%J~IW2F_*^Smadu%g-S^^Y?`#Y1Wwp#ct z>O7^`bUL@3(43!%48Q)yY$R1k(}N+JnccN2t-x$#d!a8B<<bngk-iJc%}$nQwR>Oq zI#=k*A;XmEcq=}YsFg@2xM6R6YxO8*)Ml&Dsl?`ZzYsBU?v|JJ<>PIdU^HuW)dqkK zPbs<a;C*?+-%gf^f@)v<DRKaYw|3OLK~eWkFOdE<e?lx|BKzDvG{O&U_QR=|6%{|T zZ$I|B>uo3wD$G+(tvJc0e(5&_V6tGgGW~8Jr%Eazs!^K8DO?%Ac857WAe?Vdo4~bP zYRZ!m*yZl&ptqIQ>|T77-J<B$ubm)Vr{@3cre(aX-OpaCKdDL+X5Bk9NA1jVi7kJ^ zu|y#^qnFm~y&jcW&o^Mg&U$btfyO$Iz?PJ6)6BlbUlQ5;OU_4M4CdUm8hftIZ_0c0 zWd>9#`J*`X+KwR#x2MOf60>d0?uRb~>PqT0(;%oE<h1n^Yx_s)t`O~lIN!vOBOqb% zNe09guJs10YL88p`D!;iF)(rg`~Nsq+w+i@M!%;Hy05!Ct#0<Z3G~Uaf;Z$!op1I# z2^d{%SC893x|NyK#ECrSLZp-}wk|iEsgyB3RWNT0zj3v*jCt(hXehIooW+4!j`0wU z=rjZ-p^O#JcXy4$s7A{wu*|S+r&NJR(h%Min?C+dsa}CuW}<)Or1IDG&ScnIG7#s= zPC+ISf)wT$i(YEea{5F}Ah1x#a&P8M1btM4s-~6^{GKq~uh2LEN({TnODv@7d6_9< zrH1LQTVqmk4<kIUZJ`)+O|IeutCxn^I?xv#JXo8X%!$;@8z-kVf(~mco!E6GJ>`K@ zo1^VHpbWFE$gd|Ov)!~&OzO1fjsG^y)vzi;v*txRDpn$sPD22VU;~Op-f~l*eRZu0 z|Kdt-bhY^@JwfHCuJ+v~NW^ww6G3Q^c)<Ab{fYDbe6Eo#%@Bu9A{c%BDaBjLxVzi$ zt5KW_t|>Gk)@%VT%S<?I06_lh`g=-BN*`P{L{q3;F52>UKYaGAZF~2xJXBra^U$T` z<XF3+E^W0bHu0hPI%tFqr}>5{qQ$}EY;pB=KJ3|;m9U@L_0RC@dn4R9=u4;#4?&*3 zF~n{FFV0TYlTX|J<=c(n&QPZVkgY$mL~%%O7je>4Yr_ivMq#rv*O*JrqcVww*Tcw) zE+O2g12|O8CqwgHDlHjtUV=P*b!4|+%Y|1u=oyzKNoIwu7>*}-oUycD8zAkQ9ByB% zpS|1er4fiKHp4n<)xZWIao){dQlGU-T`y3eAOgCFk9qcp=qanST5RTdYFrO&w`wXu zli2ZQ`+gW{dSu_I<w>?sKV#@N4z+5*VcJ<QsYA-59{zM4TSoDZ_D9Iu;aNJ=%~1XU zQZw(2mgO)#K5`ew$~@8MO$ME&__P_ubl#w+6!|i_teKXE!SwBC_BM^w?`{U~RL$_z zdzK2*>>sn(S>AP;gF34c307a2#>DT{3uWr)@4Ps*N>M13CvkmQO&W{Rj?7E2rV{N+ zb&Cz{XZ@ikE<U<1x5(74VD6>VW5rcS{=~e_ir~iL8u;|q+{n(S0rZ!jUu+`cbx*v0 zYLXanY^IP<$%g}-((LKun2t?Hf^AoxP*xMY{;f!2EB~qmWcCJ(29tFB0Qq+=IWB>G ziaAxB^AFF}wEEYHx2(qBTN5KnGqhJ{&Th^|sVpkweA*Je#;SJ)S%;N9rHISRW7!58 zp*CX}Xa)_k=*l+G_zK;gN&7{DjHbBjRX1&FId;pjpC$;%cs7s1`HjU|6`IN%NZ4aJ zQK1RuI&z<fLNmiAv$iF<BWPXrT3v`H3+fjLd(Y}Ru~eOL@!_wj6tMm5RbOKzhU08k zKv^3@y1Tt@r_b_E(W38e;}eT?o=|yS_nEg*$FoUOtd!ar(d=&_MC}!oL;#}DH9Qg0 z-1xCWXt<vHCb8B_pW-9e@0fLZ3rAgfgPA@VBDT?~zxXPgfij&G#YTDm?A=v6=SHT_ zYoehb9Gcd(=a1ShdV2YM9W%lVt!C>5Q-TB?QynPs<|MB1;wMW~)Af8-=*+xXi><y} zM~`HSluven4f|8qW%26}<<;h}gxuUVIjxHY;d3Amd@cmAj{sybkcDq4?6zZXVj&K} zXJ#6+=%$CB+Ql|W3vH_Xm?7q_SnzMefi>|~EaV~{?((H%))LflYvPSgWwg69?FiWL zOZ}jF_mqT|T8Z7@UbaG<&O|@WJZ6w9H*Pefn72;+7wviO`wG9};1O=bkvj_HO1<@W z3A}1k7o9Q@t9_iBFym|Hy9*3$tf5>ke9vlRl!*^CKeKN<Ecz-&&Cj+F;*}~<i1|Dt z7S+FC#h<^SS62C&2!$x_K*x*p%G~4CRidCYNx6>@&qi{@j*7fj9*?D{8?GQCKuyU3 zHQG-9A&e#UWQp!Xt2%kkZb%XK(l%cf>Ka<A#3HWJIWJa|#fK{>YVq<2ZEDhU?5#LQ zn~o<xH-xmEkhUS5;751^H^z;rfq<Dn9ep!*#D#{QRd~Z#y7s`MXcB&A2N#~z9D4`= zik*JY)*zxOJv^FNzh2rc(=CG<^h!6D<Zy;BQz-0xu=c7@8=~U3wJ7G>sSD@STbL@k zE`3_;Fx5o!;h=lHn&VY3na&&j!|%$BPnmCHhrCd_D5|Dk`03gmV&%9w^rGSW*`JMF z<1K{cS1@VcI=5}aM_<{t9H67FOzdOt@kd}xuSI)iz{ejByWDg1lRCj*7M($b4I%m` zpCzAxX3Sp{tDpE*jUb+wwv)TKonaXojEaL>k6gZh3YLNU`XG*)Xjjt&5V?DDV7on0 zwgIVVGg16?BOcS`UZD{?Drg%1$*eEdq^EaxZ6H;lH>%LCy*#_*9n#=ln@58|q{icR z>F-tM!}?Yx)_%i}DTILB)3(&1@@@p%AX`Au7T4$c+tc^mqIb!A;eqxkvitokqY;aN zPfpu!-3hg)FBiW2a9&H%onl?sk(0R|VIkyn)<vJwvBC0T)IP1Rv~rCk9G9y9%4p4i z^Em#i7|BafE3!L>i-%&SvtbY9_OwC$bFBMK_Lw?2$LMJ}<ug7Vi*A(ov=FpwxLoo} zR=O?)4j%(G*0Jo_G7SN*3)r0l_ub5U+iIa1cY8?-U4mBNhO!jvNlLVL2pEEF+b+rt zsMO0n44>^E_OsYc=u>xpUwsNY_UxATb_pk7G0EOE6fvF$lDA3QS!t6=H5e1EvVauZ z=jNR%WA5|q3F~(Z_3c`TD}eea7s%ysc7T+zpf|ExM_A%@B8-Hr-3tpnj8@0H|FTu~ zMh%dytC6svv5myMhc@qdn}-nRXRN2YFo%cOI-|6&l92ngYdCIEl{fCLt-BpvnDey3 z5>qvV)Dy1eMLV&b*vHD03rAgLj}2bg<;^#3#>tm;xh#xS5|Rewf|DVWN#kXBg&0jw z=fW2CdZzmp0wL$F7q74gK6SFSRU5i1cDzjBJ<e7=ZDU(`o|W}fakkEkFwwu;?@PrX zBW=?8Y<-2DUT@jRXfM2Pyyi$Ep0HYZ+8(QO4RjPb1kkJSX%wqZy82dWQ(ok!$!5g2 z8BPM3Q2LA~9|C3eYu^)Sq73Q6xpD2+Xnj(x0loSrtS32Q?UyP9M|nmmA!i+^@>+Pa ziJ3^-03>A2P^y~sZfptESpaj;xI?U}fSR{jyD;Q~Y5P0ypIa@qp~)Lx&aE$Ixpm~X zxku4M_|&2F!pqe1w;#)_GBKx$Upm*TK|1@Yi)BTBrZ-V<d1suu>}aif)~PNXuj|9s zZ4gkM7A$!I;Fd3Dy-O571)e$1+;fwXf<0*uvx8NoT;}SM{o=%z9l#w4KdgsJu{0&? zz^v=U%NbKsZ&c4e%oh|+=6>_9SRO}1->;6SeHHqFi5H3h=Zi@zCEVB!V?<MIMC$8p zIpi8IQXI&iLO=-QbKCo3V4nXb@UT1MA)s%Pmlt@|Llvd7vPg7C5gjfUA}*Q*8X&}H znoMZc6%!WwCkijows=;6B=%2C`|#f8z1FWQE9@&e&d%s>Q(uR#4PAw6WsampBGnkI zV3hj_xh1VsWa+Rr!V-NQzXj5$NyQx3+0KfECtX`3{RRR@&_$_{$iwfMc8pP(eH3nX znDInU_Ync}JO*H%=gp$K&x*;|C|?j6=H`i-y+<=zVPm_lnJe2?`$0&MA6YpPM&}iy zIh1pq{{a-J1T&c`qemDkZJ~Yn3oZ5<FL(`h245EGu~-BH94LDWoIz3Hv#2X~ebCwK z1KloWxr)<c?^4{WI$8WONcZ_ly=cbv`kd3vsVQS{)ud(TTwfBQ6!Lv&V9muIS*75) zk3`>4er>pSp-<wq^wr%!UP~HWNldbAt+Fy5$Ez5nbM9=$I~HlVJXUToD@O;?o!RC% zl<+AOH=T#+ZiAY*>UE6TuLb20xZPCRl=!8s=OdY7X`WqF3~9)Y-g>7RGn8vaqF>*! zHyy{%Mi^aCF1q<#THwDIv2nQ!+?MM?fu4}6zFcZ*ez`?3^lq(igjN6P*gK(gPTLdI zhzp&UQLV6w!<R|g7alW@>1i=kXCbWG<8)(gpRdyEZ%xrFpt}~^W$0_)^7Bk4r5iIU zLcVqHXnA*p#p#kaN}Fwc!K-nY4n2o1ww$QZ;4PHA9p|pC9bLa!Dj$i4?fghttTKll zP{;*z8K$V)#J4px@3lpefHap`JV;HkmTqqv3h0`b!vO{pr9#@XgWkJnCJ(%N$-)lt z*$KvXCt{9_iC0~O8N4(*G>L%HZ6Gd7XXKN~qRBHSnD?axb?AeMxHzf;pX&n|kp}?d znl@TyziHqPfC@GI$V34$^G!5*JgA+aIK9;;aaHb>jAz|&Cj*>|!V*!&&sc_FxqzuQ zlBttk{@Ig7r^yd%+n2uT>CrvbWPo4~=nxT*-^J6B9zK~2BdHAAKgtQeJUlET(&-4L zBJqm-*e@l3`M%gtSb;kw<mhy^!X1}TN@Md;H2>)nAND&HF((@*;d1O^9{HImEY!+F zUR;+Dea~8}&GwI7;?7vlM0;xNGZp<1ETRkE&c<n3d{xfRlee0!gNkX46bwA;F4f<* zi0^S4mJ|H^a*1EhV2RO8F&Moynnu^tOhW<pRUxMt2f5^sdINornnho&%l<FzFwJ?i ziPj%bin7M%O5#|f{Td=JXLD@v#;O?du%vw@M9r8tYI~S2JGK5B(`FK`t&gqd8m2M7 zem9N-UKy6!xa-_=yT%pcK9?)ul94qL6WEP9T{UAHqZMfg!)K@-E%53gogjv^;-bD= zB3IkZa5H@oo+x0?%|HQN&mdZ|Z*@Y>BL1F-;WlY_`!*1`>{7gFV&0hvE@eoLU9=@A zbnL3qUwyMQI&%7&nx#X(9WJCD5VxM;L5I4G9xJP+_2m~q5^}bwt0BU9MSEf+Qg&Ha zDJbz`rZDYoS@d<~ibu}yv|ck+OK17qF}QXY67VfVccIwtEhIH)a00{@XY{aYTbosW zo09E(N+#ur!)2Q+Pn^k{fx$V!AM35eSC{DIApJ{MDElNCAju5^XS5s3yb<@>t_UmY z0QpRj&5(AhtsT+SK&a3*Ss!%OS(99X@y5e}RUi(T-O>}r)G~f?@4R>V7~(>+5gMbW z>{uTjRP{gRQm>8WT01jbrit72I3sz{+>?i1?PRkOFaR!}KMK8X%AJs{YboL?CKfnt zbaq*Nl~~OucV+83nue$<-XTG$gey;PK@JrchpNf=bkSFqB5vK~$ZL__ip*OYw_KY{ z-8;4%gz57R{zh*;A`R)g`7jS?H$}#8@Qr}Rpytd@>)}wEPR1Ni|KQjP79_(&g{Kf! zVBS$6%(3q~3nIE2?j~?K<DyRZusl(*C>t&K8ahH2iPWM0{NiPF`16hr5>K|<pFKm| zXf#_ie#Fuo`JmM!Q({tQwwGt$r_EuVxxm?4`&r_M2_IHSmQL(*f$P^>Q=45=3-k_s z>%FAjD=sbQlnB_5{p=Z(_8&dO{BlolV30lcN~#rL0x`zQ-cH`uAAYGB#%MV_`=G}^ ztY7&4ougOSVg1Mntyc_*-efy`35!QeJAvMhJ?i)?*F|r4i^7%Ll4}Yl1|2aCX1UXD zWFxz+DXw3F!?!!aCzQn%3rQ+BJ2w6aQS;XnRB6i;H!_;t>T!gn-jgv(6(fv=TGm<# z!ad_rcY*P#UJ>?H=tuPvRq-lqa8&!NV-as5<~tqw=5*~9TwjM!cI0iu1_(KpU6$!o zinW~Rf9;*6^hPP(dh21?U77O4x`AX<h3xoywcIAwVrpNec+z#-DzO8Vqlkw=$#aY^ z)J=x#TeTLqa1%3qZecAbE0#Bo8oMG2<s9Mls5zH*?-l*3-a8#l*zT&OXmnSitXE_b zM!1IUMJ6>j_yUxwE-%a>sh!40UPmOM5KqF^Yk)qg(7lh_7UtsOzvZgywdGoNgK@C{ zUD|2U-Cm_9wr$62E^T?0be-e%u_*bm0|UOJ%WsVpPbu1*UXTr*S!Z0$1<3`kJ=_G^ zekl-GCL>VDKi$;y`ZdNBdvW<{YW+=+CVb@rRlf(rI=FZ*-<N|0-|4MVw8bDlOy#sS z05N7w0%<@3%+(fTXuh9xV(1s;?4Nwk5VN*80}$+~FUF8kCtjQ-;y#zv@9K<6CW#-K z6gst^QC%Ox9HzrUjoelN|7Av3NB(plq6rpVi4^u$i$*mzgSMfVmdl~=*~NP1D#rKu zNE40|2a4oR`HcXfqp7z%YTza+DELl@l<<{d13Agh?vN4m*hL`IAnO1$2y;bmyt8gD zhXj3`^(0CeKZS8rhcojG{W5Q3fu8&Zd#DhQ72sZxF_UJAi89COiheMLbyYPW*)kk3 zdc#(I#k<~5>I>#+v>YEd1!bvh=>Yu-yzZ&6bH{If-QtT_{Z49fT~JF_f8AG~GNPC> zJT~(uUHhhS7~XCy8G7jx0A1k0jg~I#8@fWSM5LPcn-zH#;Z0v=bp>M=dn($!*L8CA zx*QGjfs!=T_z4!@L`CK<MO0#2yHC3Y<m!7jYvXe6Is?upo0bE@PH>;l{=_aSM6LF1 zAdX9g=UY=!sMrNam8JfmATG|;>4mv7`jIe9W{Y^VCGi_-6pmHElx`^{qV|pBe5RJq zU+O(HN|JGGTnssf81*WLhejL!pu~x>X+0syq}gmV#$G~HTXAVNx<jgHsy^S`+~mtP z#ME}`UtOG;mAf;aj#(U9i5C10aj0=<4B9xs5uO1mC7XRT`n1&Is!O2BtIMxL!nI@d zS@&)+ws=pi;edMC%dF+%GH-cYK?a%c%N6pb@kU3+A_sBfGpp$#_BhnCOWRYqTR$5U z-1{xzo0Nxg?XA-VZWz|-o++Phjc3wuTeGV<-Ph5{>*D(&s|ZCYv?qV2OG}(Fl-&r; zx}Mpn%Sfud(SkJfoo@|G1V4j_ZA_XXGpz7zs_(U)DOMt**pmWo4dk9MsY}aOtOEL= z=S<h@gsCM*4Zlp|pwPjv8mJr{y7`ug^}|!}`!sTfd~*E$$s^L6ZYln#{s+CcJbn!n z`fSTh;+m?x)q~CT2RAf1kA5O?l`@E4IhrJCWNUm|1>2@xU1vCa!To*B?2)sa1~QaN zFH<0iaPncTVM<0~&8Wjrt5xZ7-W9~l;ZEV!xxTGU<kP9=L3d$VUw^Cn*N@xjy}rBO zxg=*c61B@&PWdP-`fDxD_i4_#y~HX@kJr--X{=o}T5T(_$}~O+ZDr9=LspM>Jf4k1 z)C;G$q`ad6Zk0V?bvGm7xTa+X5%Qxdr%Q%~e*iMzSf5tJ*e;O*gdTKRxkrDmYTfpd z3LZ8zW!OoV-xwzN+>^~!-U@U+pB${zRIt%=6Kar4JLe|ya2=7eAADJ58D07#ubkl$ zYBMO*!sfF3Btz06b{FQfXqBxaR-}~AT5<R~v22TzvXb4_nbqd<u;0SFHIu#2WZm^1 z6ZMXQcF)tYNtuf|qe(%BF=f$VC1tF!)yS|OI}37t515M6)d+aTx~gWR8i<TTeNgiJ z7S*C7hm{r{By7l(Kz1&F1UrG#!X3LEu{AbR-SWV-vE}GC>t#5{K}CCp99zL%b_-)Y zD}H-o;L`jMzkg=M)J)de;nC6b=U)cirkCk$7w$pMJ(U2wr@L8@in!0V7J61@Pl_+I z4z#aB@tJhw&K6v7h`w*Wi%1&qI|MDYyAfAYxhzBz!{H`|hZ}uv=udz4TM+A}Cthv0 zc_F$o-q4llu2^P)R!I-2MAsID76A=T86sMX3{^A}(np~P?2lP<!~0<(Qb<sFnYY;( z7dN@PO=UW7gU_`?+XqW`6!%)ko6&VA^V(^W&b-$e+%<fl%Ehv90~2b4iR|U;X2VpP z5;s!JIm^kKL8Bhy3ch1kamT!NpwVo~y<gdt&bKB&^=3l5MT4ipyK{{P@sgLLkU*vv zAZt1yTJ_iRl6uA}x;<x&R_T143~|seNPLx^V$zte&V6-(UTI@|qX~nFnTaAZOtCC( zOL2gwmX4{G6=t?RTKU5$-o=<DUsX1{3R$eigu%z9SUE2CT#H5hgb_bY-Fi5IK4UDA zDK<KHPi^MvHD_sWbI`cGW`aAw&vdkfQUFF{;}cZPth^n)?|vzTpPeYQtB<H-nL@)u z>sik|s-FPN*}<WjINl%#+X;_w1(MyMrIe7<vx%YKr|PXFYu}>0<xcruZSY^>mdu`Z zMTj`)a4$4oe_CQn>`QPu<gq5s;huI6XNmE`i<3!vS9#deOS+~cz=av&2v^lr>6xe7 z=1H})&{{ZFqFiZ+Q1@vrZI!Y#q*&~wvcj)Bf7dL$;z70nz*S<7l(aUe`%CR>-Z~{k z2uSe|8Uz-ysC|(WXv`-!B*3Z+$@nFm^f3g5$7$;w<M`#Qt;0EG;0lR(p$diN`^j>& z`jyuJ-)zWcD|Z>?`DAElh^;gQ@IG~F$A1L5&D+M~VTqLp_SH`Dl^$!I(iMbwE(*j* zp$3q6QI%zsf;uTvQ>V}@Ca-My+0S>h<&i@;jg5_;zOmwMCzayWIAg`ilhis~QWDh$ zs>81c=65Q)xI@h<`VaRgps`mU=MQDHU4RlF=4Lq8+koF6(BUqtg-W9)Z5v_KC0e!g zsJU&+2Qk}-8|GUyha}mm5d5HbS^}|Pfa!rQ+Ma~+$k8*k@9lU7(3U!O=c8Vk<lPi3 zxUH+!^?1fqy8)J!y$QIA5W7WBhj_Nq7D<q8X*}XebM_nWX&aMLdtx!ykWK!Th4%Y8 zvWJY-SurTJ65Y^!T7S`}PrWGpY_-i$qJ>y8B``8Xbhh61eS|)2nnEcp<RY*UNzMd& zF$@o4Rj-;iHk@Q%ke`2GoLc93Q}Kr3g7O5=x>`juc=pl68~CdtZjQ1VNQ!oBPuz4a zkEfF}IDdgM?odxmh@CUqpt1xr?{WQ}i(Vz6J`jCCLMOMd0&rC+Jx6;2b%yG(a^)%M zJn5#gj7gQ9O-@97<tTW+t3o9`54Rsll|~Ke*A387PX?~8@eNG$^VUObLw+QDoqH}Y z7nS<jx&uexazD>4MTk#eE-d))qmU%BXl#~_(0#(2!%z0L<#5icXnDwR`TVmQuUTeq z+l*Yf*@Z-w%pVZO2@Yxu+l4CssC{^O-f}P%V-0{2jCC_{AlqxQ1R9r?CW=Osugo{; zHCnLq0;1dD`v5qNFQ5mBgE2lSEzsVgv-ldVLU9B+7ro+;^W@Bx!ZS<G=gwMAhTUjc zwA~mcdbc7MZH%{&zBq6_=f&BstZJhy$9$r<ZMiC(9^O-iEhRILdt_c(s7K?_9@q9F z?(FW`Asb6JsvDWeP7Qy-fA}n-EBANwmVB5lh=5T{tD(Fj;AS(YsxbI$6$Vo>*nL$e zOEQ$$)vxUNMw1@O{U%k7xuBFOwHWS-bgnuTs(=;VtN9@#Srox)AdQq!<5BFJP&z5c zcW2Hstqu(12CXV^+aghGs|wzp&n%q}h{f@2(#IB@RX>k!2vN`zOg1^K8}>Z5rcrtG zkP?UnK22dUg)Z(+sN2=8(#Vx|oNu@2;<kh)dNEZC!s1bro4*CuA9_Gpk^vrv=F{n! z3nrdqhLWl6bxZypQ`@S6bH<Ev2MVhEqpa-erj$7LC^5;l^A+nF2h9SQ+x%!;t%H;q zK*Vo<v)=K5B(dO-^4;u8FLRnfI*{Pu04)OekW*)A2Vd<rXHKC|FwO=%<&NdV`ana= ziO@-o^zi`>*UhoqSnCxxWBI~&NRcNp^(&!YXNx``%2CM2@m_5L_#_=QH6GS{jYZ}& zKa)T)MxOfjE(JVY`0#)|^!`H@03V;FGt?26tP|J_008OB4ln{bze6CZc_>=k(-Jmr z%cs~+{#wE5D?WTqx=<c6G@oBuTZLrD3+@D5k{<YukUbD?^lw^Lz{ZDC^%A)v{Jz>s z!_?g~@_)*&R%Vi7_-ioL`Fol_$m2Wk*gx;RGfSWIE2;jf)HvLH`V;Y)Z#YcVeJY6M zq5f6ISQjai_BpmtA4TBT)jm>%dK=v*ij9h<ZLXmYQ_kUD{ZthVJP1|6RZoQC!$y76 zQ_Y8F+UY{o?--z5lErQa@wk~nfl?-P+2SVBC5n;D##njRIx~&dI5*8cEUM*7p(xzx zloHcCZq-p^zmD|;G-=eICnOw#%SO<G&!Ri)Clu|O*&-mP9Af_p$4p{_I3l%(<wC0Q zg}hycXtVf(+ZCy)k`aZ?Vy^6|CWc@Z3SEarQH3_cZocaJBUe-wrk}aJCWA)Jyw0;C zcBnlOw9RhP#44G}R~cJWo9<h^w{rol$QAjX8JDK>&K6@HDnw?LURbfblsEN8_=#5x z)asi}+l6iR_PyVUh*Z(7fO^#5CTRpY<OBwscaLTyfK@?M)M-B8!}GopdjN!-ENxU? z3&DkkhB~gN*AvOu02$L5rs~89liCO2ksA*&pYmUF6N2urB-}2`tIr(Ut_Z<5a|GB$ z?k8J4P_C+q=2@HO-~zcD;j<0_u%!O>5kf+ywQE4?TfYP1#Z2?244hcG_aRb{lRYnm zqjqQz*Qe4RcGrE?mL@F$0HsfT)fy`rqDXo1k_t1_&t7=iM~KCLV?EQ0pukv>5%U39 zClB=jNz}b3DGfYSdHs8z0ktB|HD3wlXOgdzPotH{Hn<_G+vLdF0>DEff^?`O;GX>K z7iqQA;d4EwMqX4{wX_}H!2?LZhBxN^#Mz6!cN=@xw1hbyKgNA+a*~k*+I}l|z9``+ zMY4({+kN3hAG=o(RHBxrD`?kW?#wsDqVLSeX?mO~>}LC`1XWlkOi8<)G}RUxCX}dj zIhaRPI~}!RuYDJ$S1)ITJs-;V!5}VBu6QavF2|E1KF}06Vb-AkP^D{S`;@t0Ppxf- zF}F%d0OYNKfX$u5W$=oe3TSHny0u2fsRH}a&q90m&T1S%C7+7ZuF)VI)ufGH&`K9M zc~+#>Hvnbrf%Fi^l$Tt7;d=I7a0!V!iP{wfBY{~jMWd?cJWI00=B6R(Upw@xAe>=e zjR<1zp)5qLEE_a>T_s@}`hs;qMvL))B&X+vZ}pHsxZn#%Ac*?Z!iz&nKhe2<JM27v zlWiy>uhOV@Hq!5&f&b6XFPw)a>7ENM7so*B<{X#6SD1_tNwg%3k8mm%{g1z)K?2b1 zciCL=@qzYzC*?D>8;PIC(<AND7JGH8+=+J#L@;AEEGtzH_p~_*?HPZl?CR>>?AOkF zjFH#fe*@-g`0|EjrHna&5k-=frtbHmxcE;Qm~gwhs{`#a_B%TcxbPG1n#~w?^xDIs z_U5G|PWSRw5V+%&UV-Y8t#krZeThBl;LdX<u`=~^XR%l5n2YCgij)Mp*$7p1R4%I& zY;!^ioj(wc%+QYNrF!D`!W(`d+`??INKz9IfFhW+mQHVmN=J|it;bNHoye?ExW8Wi zZ+2Lc%X;1ZTdQi-CG2Vs_VcSR=b^+e?j=2|cor07AqA4a$T0fA_>UTNq~Hc1EiG-h zJ-S$xzg0^<fDxJ`;9H^!`3dr>%KeE0E%?-N`i`fY4jg4`7#ja%W=s^gKU*zw)6$-2 zd_8?#8W#-5I`YH=B>98AaI!!C%~Ck<@t+9sp)wP18XcJ{l?2iertsV#bJ2{1o*%ZI zot`Sr#-NRC=0FqDOay+Y^|Aaq3;!awE9yrKJnu`&{p%z7FR(pd@nX?EvLNTx_7Q=i zmE7Rd;e}dA(eLah^l_<DZg#zN%#D1iau6w#Bb?Bxvk@%(_`UCZLfUm!`F@m|*LO(c z5aqb01>VotP%5DGngFw-qE%nEuQarA#*9x5{q^*(rTC{evO;G6l_YYQMP+laY{Kq- zOk|*~hRfK5e2-)YT(6b%gSpWHA|U?~xr>tPOoj;$N6eGf1Cc%^!@>a46+mOUALC7l zB*h#u`}>Ii&=K{C$Jt6AU?FnG##DfYAJ>_G=XH()k=Ny>89RU{F6p7gWBfG+GC$;a zChZ`bwhL-$8JS!FvOKs7pu*B2!X<{krU6IM-ET~sKfI>vJqP#~mFLnUZyHzm8r)Ug zi)@IK9(%c8$$hr}l@+evKzeLsgikrL-GqA-nBHvO(e{Yho9o_N`2v9_@9R{@r9l3) zZfvZ^-PMMddrx;Xnq#A^7iIgzxK+OU9fH<oWu+8c=-`iRuVCll;SL?GYByrysp@e0 zs=y=hT1%xkaT>+WaGRVi!br)kWoaSiO$Nwn70WH?ji=(v<UZoWZ@ZKC3o7#uJp5u! zi2LNPm;A%ffBpQ8^_1P5jKf?Z6KJdm3*Mf`wMrr({L6xVh}p1_gIa7o`?|(y`!z^< z*gv2nr$-Wf{SXOC*?gnme(!@r@ZqE-(NJMjw%Ix-*#~b4m1tgHW;H|ZrX~BMNk&^c zoZGFX-7ae^jFJwSen4|lUt2jJbUwU45ds)|L0Hj`nV=oom;WR1qS4X#j%236^A+(- zYr>&@l!BHe3RS|}ywV?xGtOlG6V_TX)6*&OqHbe3YD|D7l`daZI@fZ?UEw0pOgpT{ zqqZ&K^W^V$bks?nu<QK7Ir00VLnP^4sB2)Ee-@ur>SKia;NstWJm7&WsT=?%`D3|W z9zUyb++_8@!b15M%UzTGZ1du6`sH^NnG7(?4^51JA5r3oKJ?uHv5K2x4W;G7d+Wu> zJ@B)aK&3~gvd-4Aw@pkF)n~Vrw$n13$?!<CnfnrYx(c&sTdLQFSZTUvste1?Gp;kH zO`W#d&kNQF@b+#7gI)L#6UhY*u>QZ$_1F<gG9;YnLq*k8$dC|2=-u4Eov*PwvA^`V z)d}PEj(~RK5cBr<9qL{chm<82zQ7rmdz%-xov$1TRi&jWLxJV1WFN}}Ki&LX7T;`a zYPWxyl^+B!0O^}T$rU;eg&V~lb)f#si~bqJJ%Fc(6l!+1o<8hA5U&)x`t2~&;wF=) z`Va<K1paQskOy#RL>Z!w9v^c`UyjO;T1;2LuoNtDvEbiGfI#ABr5N-N_ka3l%%1^b z{xSxLS~d;XA?$NdqiJ^IQB$6H{a?$Z%!mol7eA-O(Tbhi)D$dti+6Z8!(S2zSax?a z-!B+0WF5Qi{A1vs6zH`{3Dgx7gf1>FS~_#=Z<7>)Xa%=12QIwnO{{ceF1Uj?zYqIt ze)qMKrqd59QIpPltV*vC8P6^)S1j6S5=RHoL9ldQQdOzcLX%;D4gPq`3+1^0#d%3e zaXvF1BJW_}Q1w%@ME@B5fBpH3z!&JpDub&d9VcfJC{0HIz4sM$o{+yn>_7g28ocFX zx!5B_^sKHfQNZ4cHSqZaqWbdOS4bA?V-{b*XQG6AWBPuf0zM|!0ylW%i$Xb1?<1%8 zqqXA@fSzW^IrQMPMdOu$8K!v3c0TUzS|#0^m1o(R+fhQi2l{*z%EL-#x8QTyor|fe zu0|7fv!52FkBgVI3q{7wOcH_IokzZAx{X7zzsoP3ljZUL^)x}APDGVHKA*l1R^&O2 zOD|jU!|*Un<!E)3mZ}wDyhJ;Ad1b|7W^rYsIl;DBY@}2i5tLE2rRoqdZe@UyLtbZa zbORbGGYtq8k`jfu|Gr-S<$(+dp1JwAlI3^_6*0eieB1f5ObFEfE3VX^(cs@=!hQQ8 zM(XxMXj^=2>>G%BMYe5w`eR05J6W)a93TB{nfZPo1F+jK3VKcWP*r``N@2i=)fmge zUN`FyJ=!^2H+q=ct8*>0odw*Cdz&{;K24$nT?fV;NzRgXee?O!-y9xAg3xST+2(>r zuu`>YWU+X@C2nS#=!I2wi<P1Pu}<}8wL2dFs_5MUf6c2RD>*Frtms@6SZM6>3T;f_ zDz}tsvHg*9@v_uFv8=R7iBf1;ViJqIo!!A>Y^+33bT-srBEZm<WbUP)Zr^K@Fuy$3 zw10Yv?sxdbmI4>^-|sF@%AbWpuxtC$6ocaHRNI1)wE=BUnFrZ_hUb6yX(7s=UzVgC zFJP@`{j1xP6@?XTm*TwPx|ku>;Kc8BzREqlUul@k_oq@#z_P+;V5CgU{zd*#`Vx`# z)6E@T3#hOE;L6C<rg|+(q-2FQ<2Gm|M3dR-mizkXeq<DBLN}Ku8%x1^`8M-S3ethN zIXM*2As$hmTdo9F7n|&rl&j(&2RhPnv{{FtCL6AASYZVddB?8{m22Y&6%D27ySr&d zIs$!$0igZu&84nf{hWQP1U<N8leb<UZetmw=%~W`*^9wx|HEzk-G6|G5DGY`QlpB+ zAC9+*wuHFkp93oeC3v9eD?y<1p)H1(F)j($X%$Bbyl!;f#2d|fW0AT4;aY-&1MSC0 zOBoaT8%d{8&Np;D%;ohmP_!s!wM_a)yqqkD#i+M8W4Xb1NaB#;+{ZfiE}dv=_KekX zu>b+~dr@ju{YK1A;x0eOC^&Q{Nm<FBn_e2wgnUjHN5HfE33W;}->MfpaH+#%&aZ&R zIWV_hWAm)1*#N?god^e+M8@1j@6@*d-_B1=3+oeM4y<(p8~d#S(&K+QSpV)#V#Ko~ zqIbtCjU;lX`jaZMK;WUIr{|rg`siPrEG+_@Nq^#fl&&;eXB{yIc&$YNcd-@<m2e^% z=E8l<zIQ6TdB6Y2)b7J<bBk{B=Zx`?wlksm8At0AOHg;<ADpo3-JO<MIor*pD6}<q zUgnxkwNxu42O&ix7q`9BUyfxfl=6>_mrMx`wjUha^iTfX=rLvBK~hZyu=@Eb!hZaa zt&7;_Ez_)iorsxL{`VII4+7Zc(^UxCQ#`37BO?*Xf;a5xK(}w#h#m<Yu2LAB5mV-7 zW7zjAu_GNc>UO?ybJe6(zgd&6GvuXcWyVXg$JsGrfZ?2xX0c4g?qpxX;Zf1fN}FIy z9=4Tesg?{*^bN=b{Fb*}v{<zk2sZj->{It+|6R*%`R~VW^tS^a=q+SDM%yCdSZuJP z9LQ|{2t<3Zj9w_{{_{eWhaVZ;R$Lz}R9@+cjC`kEZ({^mt)`_k$}BYJLWFzu_SZMW zy~6Wz*UxNMEcAvlxqrp$3WQ){Xu^#8XLXy?r2_*4+3i>R^M{|199e;=pmSQwt#C}G ze#!g%408a=CtHm{nr&4cEXbVFOEpigmPKNLx48^Wn4_+I$q=q*3|ZZ-c9;wLhWzLI zQGoZes^zpq{kL<|3D4um71`v>9~T=N`vhcp2xQ{!uB*v|inF%<d2#^Mh+K189J$ZI z-rjsLtr4J;vA;fih`Imfm(N{uN{LGG8<{&T5lzkBmVh3MKh1)K1_HoPCFOqQD`oAG zZ~lmzpcxSrZG$Y22gJjKS`cbgS;_t68PFARd{$|tl^OST);@Z4VZ|+8Q$dLP4tXF> zgDa!QVvJEeaf>D~*Ho&{QToD|hl!)xs418`vi|gUKJpd1>yzNPKgL>lA4*KUcNqIG zmxe!lBv}yh3u<aYH5y*$-$H<B^_8Ttsp-f}?Y4Pm5ZV_ll1{Hjs)&DuEFnyAhLJ5& zanxfuVh$kIXQR)|%#;tuXL_wx-8V20$wXGfgmf<T%MW$1@N{Q(IEvWA;)uEw4n`v` z`bY4H^yvXS3}iLObKOrYM@I7dfwzD55F5?<SOwp2@jFCXuXEWRD<~-dhy0R;k-{fa zofK-Q$PF6N|90dhgR7towcj7h^siC<-5rKJgadQM5N|z`_6A^zohCE_M8Ioh@muAa z-re3fZu}&#t4b0x%x4vBe<0JqD`fy6UVoSY?4ML29i8X$WU?>S3Z>q@&6iG~SFE)h zFT&RrDOIl^>2p<R1fj^!Fgzb3$fS^DdC@ymxKpIDGVS2<#x+aIm!<KuMnMXHnEV?J z=C+@`NxIH=@58>r8i)1rUn1zjVHAve;26=>%V*_~=6NN6VXBsDZ@-!9e>W2U2$B2+ z2DL`s-|i5Kl3>PYtyENy|1rG3j}tt2l7Gs`xTk-}7LO!s4C(ihdSvj=2OmZF$B^%w z)-$5pll}A@vy_m1S|+4`XAe#C`GOI&->ca!OEva(lm^hE|B+g%!3i-DZVc(uuCwgI zp~Io<;Aw1ba|QQ@^i;K&Cbc5WFAX}Ps}51mv-MdqM!~||tqKtQb4D64K?w^15&fUX z_m5|?I%JhnjTnI17U6h5@y^Z-@BW4uACKEvWs<^bVn~E;iSdsuh$T)YD7dI$v9>Xs z8=sOQg*ZjOw9xvj=KUlykLUS^fbqxO2)_H&FW(6XT26h*R{T!Pdpgn<;qQ2C{#wlq zWzSUP4=-+s)b%+_M{Pw)N~&Osqhx=Jmm|`7uEmYb>vTH4$b57L231NugcZBlSCKPU zboP!z<MUCF58|Ja+K#=d|MDpc7kA|Lns3I5FIrTzjhQ!9?K!V_^95Nnb>?4O08i2X zoEp#j;IpC&ljPq|)jv$}*E$2gk%f=Xw~ymQ|NET1k$ty0V#4lq8G*U(xBBO=$(ru- z9`iflGxur#|LhZw>D%PAtpGsE#lrrVD#c1vVRu7e=Ex?|R)3C!j2a2I%4ruU#|=-E z&6>lY3HQr0xrmb<`Ok^SegT{#?IwlwKl}0jlV>EO`@D+XN|yOQJI()-XH4n)Z;E9e zdHny{^MBv`|Ivf*OKR|PPdU-U{y$=h|9o`+Yo>o}-2cXE|7)iIHPip?o6gRI6&*K_ z^-&($e>B(s&2AyX%(%ag3^@xI|J#$}fACAP)%$PaHZ=Zwnc@HRVMz*vBl}ha@&B6A z`yY(uue0wBNbenfq7;Ap-<jY)8Rq|*=|8gI|LtZXGxj@tn_6YQaD7u_vtuyRE*Ol0 zDx#P4$rO`R9*9d~bJ!}zG&z=oFgZVnUGN3^|9F4K$db(*i^R;~Q>mW5dtdr9Sh@uE zNj?ky=h-8wr}GE?^MX04_?GHg@NXz+Ghf=F4%|}a)@-RzTsZSW9;3Bw<ze@sru>J& z+duwH=mk~?!i~a<S_z8;4$MfrO9hKs!b7yj507u&DMT!=!)=ld%OG$tSi=bu#J8W$ z@MyL2j22D8T8We<+1@MqKgKJPefIi*_#3le`=>e^{x=S5yV<q{Hm@y5N>mBwoz#zz z%JIVf=hpZ}g;{o){YxoqaLg~i@(pR&;4Rib?VH8uwF$Hqn{QjBzDe+OA3u7)3FE~> zGz~c3Q;$CCoKalqvDkHp`o%`XX*wd4n>f7CIvtQgfi?GumgheWZ2z>4kOFd7m^W?F z&m8twJ{)QrB8oHQhDBN%SFgsVyj8{*Z<i$0Lg3&8u#i4yd5#t^5^~$u#$5DMHj9=e z>kKE5p4?yzvZ0fDe!=6gj4zQh__z1}|JDJ$k|3Kn7I`)K)mvps9n8!p(oa}ajL2Dg z!6wxKZ?ipjNDY)f;Jzq9hJUM2ZW^S!&`hrDVtrH;R6u_=+`GMzTAXT-uk-NR-{BsA z`NsbrcS>f8+?C@^Yf3a59CnohY=8KW(JzP}tcWkRIZ8}fEH}9-s9`^hf`op;!zjf| zvmzp%haqgQmbesYQgB$l7#@|cS6rC#`=|{kCMH(nbLY+DeoUKRpq2%a%uQ(FIRBAD z`MYT_rQi(}1#zWzl(kGw#Eb$3RJ6(hJVk^bcnRXF<kGy=zmzy0Bji9fgA>My$M}CJ zd&{7_)@EB24ess^FYa!^0t64iJy>wJ;1E1OaCZ+5!5xCTySux-$eH=ReeS;Z$E{kc z@+YZ+$}{Ker)7-M-6YLF5s|_Qy<9~S=&{JgTu`+audb0w*8K>u$7j8d%N51s@DMV{ z$)QeGTim9DBZ&@y&fW>2lA-71j031M`O#FKT^lT8QFiuA$$YkDtjh;LAR^xJb_oZ7 zW^)D3ZYv`3ulF5kde8R%&k_IGUt(m)ac?DJ78Ggp%nY~yi=tT-7+{SDF1Um&@745O zfv=>GjY^;lIXaivqfG-d*Ae(O3Gah=TcCO$<I}52KDR9~%q~!D8HfYuVjhN)kd*IB z-Hh=Ru=G0T&2x|bXz5lydh_G<PS*9_BvrJKA{-j&?~zx3aL6S0JaWAdoYKFmtwO1x zs(+D%=kqX>*DTFy=Ab30BT=j?W4vES!&y9#nYVoljatgZ-TWJBA#~tH4<I15C0RkB zY$ZDRe3iUD&2*RZ*_M0Ln~4iJ5DiVQcQ&R_Tuh8u8|%3oFy+7vfE5Y=Xi^pETPOys zgu4I#B69!ieUhUe!jQj<y1_-(dpxxS9H#jEJDDbD`0Vo})O(r1S>Sl_Pub})3V)Bc zjP~E-`JP<T9W2`wX{A$OTJ5-K{%EthKl`HIvAZ&3*Pj3TH`j0@&FNz&bdSZ;kF1Qv zOy5@z=k+!>)eHfbbe{zPar;Nb-+zD1|0@LqyZ!IqCKty>8i3(qd)>)YI|COuiRI0H zeAV_1{{CCG*W_Pp6=E6V@A*=5$5S|yg4cYC29plLFrp`$_FapH5*P)?Z5C^SL|&XJ zy+wABdd^qf`X+%jDUO+}rx`5f&Q98Nl^T^S-nYBhfL?*&^b3XWzd0wsVj@6>`bz|G zGho)0{&lwDdmm`Hpbo%<$S1f|h7G>h5%6f}@Q?tU2>m^r%-Ij3?m$aRYvy=rSdS^1 z*J>_apMWz}^5^N8&01>^KyQ_(l_s7A#5caRdxMLm$C1(>^|`;23*Srxjv1f)Z}9mi zNW=Tz7=HMCOWIuSx7B~ohDhp^k4*|(nw~t8?mBE&uykW0*={%sP`1M@WIl+&!7E3I zoSnKIlsEKQh)Al6WXS{D-@(3jV^C$`1(Dm80YQ=FnhReV=Fje0T<Kih;22!pjDbJA z3nZbT<g~bm`0K618T>87{8jd26zd+D$BO48cINl#PLJchI37j{jm>L*j2ac)dHvB{ zt1mRv3bB%yS^H)$bCnu+Wo2anE*=*f6nsv5Oq!b7P~lxjI1KRfdb)<=XKfc3n^YHQ z7a>ATPMp#=Qxj!cSXEV3Kc9f<-vq=$?)XB&!kY)x+qvt&FnsYzN-0TggM9UJ!k@f$ z`cjjX1|5cP{(<(d&#>;BcTj5&5AO@*333d(0+d_S6{_m%ac{AxL(#NqOfW3M(IF|{ z!-PU$kV8rO!T+OwkW(W3#OI^5kgjyHnAMyl4A-Ae_&_88sSVEI3?JqGT@k%761qp~ z03)MpOKsJh6A1&dS}S!kXtdwV9bliE1rH~&vH_cX7uw7#4^&BHlUPXPGleidCNPzN zQbm0!%3QUnc5}YA0Q#OPt9e@~l1z|RE)0_{pAu$amWcPeCp7#&5#7$|?A{DB73EIc z_g7Z|EP5@R4o_AJFWG6}F_LAj*@BP%^l|?8soA(8F`?5^zm6O#mG*_tDUUSmamA5C z{l2rH`7ZhX_zAuQje!cPkn(+iBbDqFiVgL9t?Qb%&wl6Y9TDkuR_f3Ko*{JEwQjX$ z%$rSVX@z^kiOj*iLy0&py8(_d1mgL2S!)w@rNTnKuf&Ahwz%R7JyMQ9_pvX;Z;NHr zOd*e7Uw`sBe1WC%Fakg_quHU|E2eO)fB${D;eqedtt{Pw_22K~nw0pC81e7-fe7F2 z)t;AT>X)33CWoR1@nUkVPJDoRu6zVk+Swmx3B$(}vjk8}J{5f0u}~<}YtVP3+rOPO z^%^;d`AMfldU1Oj1jv=T{R2bX*%uZ}0)$)K!~<Xu@`bzuu7J?^{^grX*VGi|-I-G` zfaXQq;WxQV!*2COB7xp@I3LD#mk=-4+s&)1yqzpMRXL|9La^Y)w=_12n}aKIeE@Jj z+b&E0C#?cuquaU2&9Nvtu!s;eq*1Po>iT#MjW|aCj|}vGzbIhT<Q#wB21l`Uw3Fq3 ztd(>=?n6liM7j5A*%xDl@?$EVnjC&<AxO-4qQP|AuT+q)^Ur;eX%p3PZMn6A4R)X@ zZL9;wDBJxj`wKr#lQC<mn%CDCq`(m5Kwy(uc&iGP^m{<zRq$I|S;T7r{p)mLU2(*z z3Ir>j3z?`Z{#1b+-K+;dC~#R2&fu9je_cm?heiroGBzQ@Du^c8C%@VWxN<q>?F8P4 z)S~~3Cj~${Qnpz?B5Kx{q{tYw+T+I3Dlkl8Q~cu#`hTDQy(AVnyS*e<w8;MSuj*WG zZ0`#C$j?N8AuRFr&S?XNV7)7G9i{o#5Mp`%#}I1G$Fm)<G9ZX*D-Bw@iF>v~9%1g! z)<XbbHq7+^RmA4VBxWxrt-)3-1U1706G(7^*(`Dc<JFOd8tj&lJ+Aj~T-Z5WmYnyT z+ZA@o4I18sW79JgMB>DsuO1_B_X&o!&jwrqGb(%j$VTNp??oOP8W~ai%g6ICR`7dF z?%M2W*j(b~wRiHQLz$c7L5XKDMRGa94(4;ny?d~5mV8eJT<GIGaSxgIe=jt8c~bHR zzd0ZImfXUO=($^?rP@z+lJ7<R@mWFAbccLq&k0hzzh8rJ=5&4EAV6Bbe&jA@t_qS% zM-hh$F^56Jp>-9j7)#FPNW7B(WHgeg($CM&+4755LI{snyFoTOymA)I0avq%RuIRR z8^6EN#Di3HKN2#6{(7h-m!s>79I=;gY~OBVs%mNi_HAt^@}%u9E-zz-<PsPVO4V8L zT<FFBl`mFF>jd8$Eb5d-ceZ(EeuLA__CrA?(S|E4k2_#4lBYyh`|GNI>8A{kC8<Z^ zl;;d|sB=M0V`kUcX=k#R^8(givqyseK&0R9#hM{vH8+FKN}96vt1_rX@ahrhi7rsV zlWKAPffL{1`G!@f&;p5osoja)KV{a!rt%WZv;1dt!XYp?a-nCx-~f<>(Ob{E*u=~c zYBgK)GwJ=p(hQkV%IWUKUR`VQmiQ=LpG^$MZv7y`=eSe+#VZVpE*Nl~j8{Cins7mg zIG=Y^0{&S9`X2+&rG;c=H82C!V<~@*3b<s^V}L>&m}ENd3Y@R{cFXS$zKe+GHT_tt zx&Qg>^c3lM-r&2So4zbwm2%DqAQRvp_(>r()0)l201KE2qrI~DhyR$#Ph>(VV;JC; zuy1js+F)wWhb+EB7w;GKeFqg@pz=8ivUdk~F~Q#vwu2@Z?r>Jyh<=OxHWW+yD*A{| z54yj3eus*sx6u=lHL@u{Fp{o6XAN{JJqAbFmO4#r<k)Zhk!3$A)2i)0(_3B)1X-hH zlL)$X<;%uNi5mC)2-q7<4d;r6dG}8I60>>qoqPMsm}mZ0F*)e%1<dPwJ{i%rb|OGl zv-Q=+24%ZH(w{+%f$@r7?BAJ9oL@*k96qNRp4Zb2iLx_?<!5M_Sn8ZFRqGvKi4Gqk z8WoT6Otl=_)$Z`C<aBuW2UzbXYY6OwVd(HdJZ4L{%Wa*ZT6$7gz`8U&RN8$|O#1x& zKbfsGI*<bl-w<Los6fqF$_j+b9B!|8dv0KuR^#KBwa$7+K!^s!7N4l#TAf<%ygD-C z)A6j1uK9TbY-%}DvNFuxv2pkEV~Ni2?9eO&KWbXwp`*8c;Nm*as5B+0c}e+LEB*xf z5N4wp$o7;np8~c`G&)&L_?>7&s`DZwYE1TYT2*d?=bXZFz2*SvMUKInf4BoGAs2*z z>(|NwRl4Vwm%s6ei77z8Xk%*&G2^r)-12m}E{H<nT^LuiySw}Qmv?Vh)H7vT(7@zz zmV&&1Y~t0y$pYfQNCnzr<s2a}<qb54=@5MVVyy(g$C8UdU6<P&{<%T>7a5cveDe3s z>wP<;lLbBb@e8bQoZ%teAtFL-8H45<>_SChh~5ZuXt<CMwEVu#2Y&_+iBA@{5rGM4 zP@drMsh^Y8BpJ&@+zhB0f^fT1Ax(eg*i%(SZ=P=57HaQ<-lx&XVSZg8Pm?*05b}IY zX(JICI3*pnvBvD_cpI*${H1l3Sl);x9ep$=YV(m`Adb$p`P6DwGsPICsqFzO1l8j^ zn2=811X536AIS|oVEb@9Pj+$f@NRsyz3NS*=X&2DpCU)aYK(ZWYmSG&WH=Suep=!) zN+Y}R^j?wu>66Z&iMq(xyW3i^eMOI5EfogR6sxR2_g>_0_oq(#gNFT$xDMp1eSfC3 z2QryUsAtgB2fq`Tk9%~rKDtRp+br({(?;4z3Ghe(nPjL*z`B|P)=rkFZ^|7HhS%ej zgn)OA34+#h(M{PvEDa8|0%0AmlO#4LX8bXQO%$4wa1jFg@m~2on{l7Q!{HkdBAy~F zRWOe6-IEyQHaZcZ3O<hASE@p+Lj}*<GbB6~-OoSrREtn2S~QgIBm^4W36D`pc%VKN zDWX`Vt5+K{)I*;_e=b*-xQPK$Gd}MlJ{_bXxP{zaIm6y?wOsv5ec^2Bd)rR}HL$zB zuh0IDyNuO(zt#&bf7>h*KHVP=!|WjZasQWYeKN3fyMGN(7L(rb8v24%Y2lE`^rH!i z2<A8+o}R>7T!$%4hyGOgcu%ZX=k?3G<T=|fKvz_pHUD7yV>WIJ+vHS~q%Gue_3j<o z8s--(>;t9b3BEr9pYhpYMoP#8JdU`Tw7oRsVS1}-&7P^Io+$T|zdBUN|4vQ_Gut1f zFZydEGXakMvIU(i9d(0aw?L42xMTjA!q&&$0x`27_Fr?+YurGo-CyIeMD%o><@x2U zNd)G6A!_EMlQA@ke?2|oCX;Q9@D9SBV!waJ=!sz8-^`~_i-@mb)bKJKYh6aiFLwU8 z7iclZ1^3%FA%ZS%g`HzwB*fwQI~|kOw`e*EVQnof@nKy49G^C8^nPS8GNrh3R2n+a zbA%LzrBidR>mZTgWTH0FEJA7N^?;i(UnvUNjzDhuk+B|Qm~bb+LTNnuL_yGJs(B!u zzTifWJGT#4ZJcT!ORc}yMb}}i^`(=g?XruQY|n@Q$LC^P#~$t?;!~6FRFB_l5ao^- z`mF6i6<b8O%WTD_*AJ~)GgH*nU2=nVub<x${<O8WZp@T$+OPHoX&8ypI(7A-98+&T zEI6QAYb4ZyN<WuS%DbiyxQ<X8qqTHc&u<#x^IQG^^$%Pchfn|=ET8mEkcM7fptDU% zIKnTDx|fy+KNZSQj6!D&Iqi%<a{tl@1SY}5l*$qOt3n3-5k}dB!(mIG78&__IL>uv zwpd-t182oe!!h5x&)T3pi*+AZgrUV<&*ujePey)(Au3-QD<XgXTM23qnh(m;jo|oq zUoo>F9iCaXkM6{+Zqs{T|Kl8_c*Xc_F%K3V<MRWD2XyoBSj*7&A})93Aec0rlWa~r z@Cxe>Fe7azRcKnh!O%bermOxLO>a5`^OHeMTxRsuYGnY|arYw&Yt*O90bMY$q$ccc zt6t)Wtl_~=O8L*}-_28YzS@d49Y?xt@GYtlTD3K6<wSVTc=z}Lxf<q0j`P*os)qaZ zUhQW_h1C3?BHk0;1-SCYBxMnh$A+s5#4}#GoDulIj6CNBX!UX*^3(8QRY4@@)7a=! zKenDZd|?d%4!f_$uGdE?;qf>)uBW6z?x5s_<q7xQM<5~n-tPUamTV38;&NNMSmVvN zdoyibqU!<J4->G9M#7PNdS=^GDh7Nt2Xf(WcfoQ=ED`KM*aUppqS<kRu>Y!x4i$iz z$nhMCe?dpTK>DT85a{z_Df2COe|$Y4Z(F2Tdp7E&T%fTB7<w7KNVJ3|cDc3K*_ER* zlkzh~dTYlS_3p$W==qV;zs*}JY<4KYd}C9B_3KPApYxgS<Oo&vStN}iDmxn)7QzsJ zST<ENH?N(Cyos%@K_vfWAJ$<p?&Pm(j();#4;NVSSstADm?j7N_i`~=LLOdHgjff* zt(H=|hL3wgjV@qe`DA>PniN_Wam{KW>-`VBj^K)-z|qKPUW+MrbkTNLz#+k5S>{PR zt}J5gZ;khx9PpW~a5wtC<$=bsSZQv~)F70<lIe+?RCtfcFoXIV2u;ksIFLRsre6AN z_s4Zbp>E5GZ;F=$?1u36tOQ(fTao!+`?y)Sb6c7O>kFTB3x2L`m~Ivs5k|MOGjM-< zO><5~CWw_dnh}U;6zRGFTvOMwpo~|hfD0y&&;>Px;G2Ty`{{;IdE))0JjEUp%f}7D zQRY)zI$Y!QZI%@A{As`WIP4CR89@C=JDZn?A0kPi-Odj5)l3e$Y0RQ_Rg3t<0SOAW zn(bOMY)^0`3>g`jRJ(w`_>D-LXEm#DVlD`9_K=W}C)`xSor4zT_^Mwq_PtvufKHhl zwLHgvX9*Bc8Wlnzhtp`?0Bn<^-_||R=BY;e^WA&)$7J@FWP&B7uWPN&Y+{dqcgs=A zLK%@cCAvA$!a15_CWg$5BrJNrDLh6ZrEuj(Ss)d$#15H%cK&qb7%oi$wTBLUy%>|7 z9tSTV;{8Mr963RN1GE7TO3NJ$Vj19zT!j}~nwlb{@qETR90)&Ixh3YY@nOgi5em4H zia75YRLu<E++KOQV}TDsDhiMc3&<?+eS=zQeMFrr_eCbHY-h(B=c}@orJ<!(DE>;6 z5>_}GjW{VdW^_Bmpt2NZK*m`9B<>_4Ive2VO$7H^1G~9<+Rx+K24C-Ej|F9GEtA|S zzK-3KZf+~~c)+f)3Arp2;19D)VL;k?mYJEg@D5A#(DPShBzL}yQNdRe8Ma6pAz{&v zA0`(1`e+M&6DR|_iK&q<!=hB9>jNBh2N=~wzEepH=SwXlv?XRMW-wv+p!^oOpz<<g z-}v6)`xfjCPT%Ys)v<qD^L9VmD@;zPtK$Z5>ZaLHeuV_kF!lJ$?^#)7I&`HQCn-+h zcOY?A?ceY>CzB+IxJ;d;5!+Ly!$yZwyOeF7^R5FaoJBImCcpp+Hm5o3m<FF!LeMAb zgOF!n_fxj)^j>b61lX0${o;L0AN-ij2_IYxukq98V!f8ccv5alWMV_bQ+z<qH>mHs z2hp+kX43iS_4=%ZxpKbH6nEO~Lp|H&ODm}O9T2lda7q0;e9jR*UGN@%Z-l>F(%v`Q zVH@)#avCS!f1r2AvENZ-=zRT!ruwngTtpeD7M*zQXu~|+J*@e1lf7P^B1Zhq61Y~y zgE%C>z!I3cYg6auvpwv;-Q!J|QKa6m!|E$|Dbyf55SMiBuWYZSn>71d?VtW;fG-E- zO0ky<VKXEn2BWbes=px&?waCD8$D*UkU@;&B&2t&x4j{(HfLe<FdMKyBa>pk@Mu}g z;-y|cmH<6@?`uO#j|GzjUV_oDjZ^4@7WZ)D8!VlOCrZ|5wi5-oE=7StEKG^f<$izM zpitr&qA`Wtc7;zqFa<G|7NtFhn!1atzE`A*)jGo4(4d<B`yaYyhtR};D}#>LP9U?~ z*ec+i8Y_l;K@@wuBA^WNHd&j9;n<WBIvme>xbWz8O`$PqF^sK+Q=Vcw{VFzZr!+qQ zQ^<ouCSl0Aa)XUKmervB{Uc(6RKxKczt~^MHB}mb><|^w>NaHWM5)ZgZY|ZMQYrsk zw7!IiBI`gy!Xq_@YU`NzrAF{|wYiKdbmGsBj}Ii9>j{hd)ecI&LfVg}G+uL-YFR2D zC^G>ngx*mYo^Tf{MX~%6;Jx!Wr*AP}$j9=LdbW5&4mLd=RBPB@&jI@c$Ol$=4BF$B zOU=wcT9oDbOYW6q0w-Ndt>%4xS=1_eb7itQ9}DC!x?hkCeTDcG8DL!>%RN2`005VU zBec)W0N#qe7bI)tc`URO>hg|qxi;;4jB=qB-wTXPVK7vGR7dR5Rn1TWM?it8F1>|K z2D*0LXF|H%wW9|ICHI>Ltn8M@hI9X)EEzZpW=eo9o12c+$hvEo@dH>~iW5o+9j?0A zW0BIU{Z>AmkjK&R8qcNF(HO1jmw^mHSgt2tL29#O83TJKFcdi5pi?f|Zex2Jj$V}- zLTA}Tx#~Rw?NnXNpCos0UAxx6B-W1Z%r@5V_&oZpjmjloK1|x=h?iuG!wWR6d5<&B z!PXlz6#lZO!6ONx2oP6EzxQ@kYOLjc8k{GykKA0Uu9ZVjD>a!a-PEo*Y3EA(GorQ9 z?j%w;{}GhZpDA!lxW<Oc$Frkc$Dy-d!!PXlN?_mf{hmnlZ>Ynk4`02m1+(WXx22-& z491D8>|XCfEOhCvlhs^$diaKPc8dN?jVzFfnZX=}L2#*99*m>=`TaH=^@qG<P#u}N z7{4Nc-qj?t0V(bnYvsL`KN0x_!Nbj<x%>Sq9JL%SnPZiePE7ggR`1jRuxwfzcGswB z|3YBB`Gxet$7$`HWh{({1}Jryr(7(}W9Bjj3^A;oUITc+sC!72i=6mb1&g(Grm1aQ z%0;ebZO1xmYsrm3QZ>SVQ`f5yeRg)9(q#iNz0ntBz4$2*D73xRD7d<~?)<%tvKHX( zg1q|@(FwB-{!lC-3|$Vd{3hVtxI0CgV#Kz;|BSJSLN<9pbsQXZ;4$?`8ReJM!0W_N zNvF8bs-=q0S0xIbO3~c$e!4*@98ZP~K_$WUFjvenG?<GQ6_BL(cdo7T1O}C~6=gUn zD|SVHG6AT}*}v1$zCCiH_eCy`{we;89e+v|s3XAoM#~F!r#gaxgzU%$qNZQ2qX&>3 zz%psipl<ay#GCj3dSJb)2S&KFbOEuqz(b=X7Hz2x91^zZ3?;2P8wOvshYg(uEYUsH zA^&}B|H;r|l>tw;`8hajt36!EBi}S4eImE%Q+}kkyrXjhOy5;=@Rp?*f3xg(iYF1U zpVOikA)X}xH5iSN5+?FgFw?}g#{b>1vDi>NLZ^iqj!J(<SbP!NrI3IK5#ngtt|8@( zZg6<y*gTM!?Gt`dqGSqi<Pyo~*odP3pne}{fh~<j@EPV~!Y5lH&AKNFVxgN)23Yj0 zdP|ZgPq;zUvfGR+jVRomk<c$GkH6ae(y&r_M1O&frd!BAm!`_b;3fV+q9xA~*`|GH zeKD%i`kQnwOyvFy3p?J0T<v{K9gd+Q@G=T8$V{B?amS%$IG=CGjxWb0Dm@O4KU?fU zwVWGZ`lZ`=z)UbtNyIEBg35ebHxq_vB`Or)h`r`^;uVe%<r`-4>v5|VKFbKS!-M@X zK_2M^jQ5Fer?k>xnWrg7)>uah&!}zRe!6Fi<{sPoKn~f&SS&~I-3n8+$FS-`-Lis# z8a=DTH%5H^8hjI;=|ZCN<DLzO9xXq+p2th7pTaFn$?hWD)H2z=63DKVQf#N^Wbmx| zt>)tc>(<b6LO?{;<CDgHNwwI-(lf&;huJk~hw028tgud6HQ!StLF<cRfoyV=IzuZS zXwJzShRSmYj)oA3&Vz0e+8Iv5i=|eCA`|ubzHd8(RxK9z?tMS%>FzAO;=h8{Fk}qx zZSgc~_k^&#p`6e4agJsgnKFdA*qb`uSncf>Q0~v#%%XN=lapKd^OeY&wBc2aog4+= zJntICU!PMt*V=PuUXEt>lc8^{{+rPg$D1Ere+YTCAKh4rfm;dnBf@lNQzKc+;*b7o zqB_bILBkIYG}wJf-cK1J^OYS|77Vj7NJHmqFA&?r6;_tZb#gw%I&=}A8{`@|DG(>B zV|A6!E{}+A$n3=|iIzkUru55yDSVynR;y4mHXY;6Cv61$QS%6^j*r2ruHCoGZbU!D zCH#p?{NDPUptUwch;Um$X8{~-HF#O&C?dFbsLjO(#^AZs*af|q5_W$pqWQ)|Ln92h zMAmZZrk~eOj$-`dNQZp3@(3VpuDTsuVfTZApT7v1;*c_hlc~Jk{FmlLfLXhN))OVh z`k7pV><ncu7w|(4S5Et@!A|>aupxx<W$O`PckJ04t&GcDeq$RsL5^?vAryfTp_Vxa zLp@I8IS}4+Cpufi!IZ%NW}DdPINPtR785-_gEPz!*6=<Q3QO{L1sYcR$H}0y<>j}v z;uvkr1V%(Pgz^9j?6?lENBwWd0p;b6PLaQc@e^i-=mg{iv=N4+qnf+*TegOM-qU=) zG?qK?_7<0vh%O@{+&|o?g45MoRS?+y(hIEVL5NgXqI1D@g*y1OmLp+)mzp*q3V_f@ zkiyMwNMPAw*nbHRLI6-R7fDFTAo#8vlG_p{tXv!`F3;)yJA&utScZoD_mD4FW_}f` z>=XynTqBvQh>rV;tP1CYalAmzi5n-+Enr2m)L;OaB|;B7NUus8e0%I70HHd|j&PzZ zz+MFKw=lb)aGNPUxP`@n@11_4RqltvuHMhRWs{~Jb3c6ZZ)j-s(@QW}bJ6Rp7jG^C z`Jc{2H&73f8PR|jEI^xwA9o+kGL^u<PIuVh3)veFirRr(tyIDP0l7M|&e3oX6mb>+ zL`VG~0w-MaimJp<0%A}|Rdouqy>MtvFt#J6sUZUL$!oz))jC?eaq_}NiX9Yve*0qP z*VMAeg0ojX-QQ;Z>kOl{BC?55lm*@RQ5-{#^@Wkxq)&fLagynsPBx_{4bKk%wF9Ky zfyeu5Cm^%S-|3C8quzIP7X1+7hzxpt8`C|Pu67m5K0F%O>~;UN#Pl<>ZW2#1%L4@o zcMV5s!S!Xyl9FU@;HOd20uhh16<ojNIzJgWy#`8Y{JhG#*Sp%a>YOr27239WLo6%1 zRq>Q5HbSssb9Dqq`^+noP6;uYr{KrT%KBRa^-Tuv8|pbKB91)lLm`9*-#GCA8rdDX zmZR7s1Kl2~??nMf0`C=oM*V4Y_VJPz49?6V12($?5hd1y=pnP93z1cfPD3=5+nwf} z7Jh4)hg+rz6O3fy+#u_AY_gv$g2jPt?u@X=#LA&I;kB`us_q6Wz@)%<rBqEs#04$6 z!=Es_n{E3OHpKJCaYgNZcJDTFG^@ELKJWQNDLxIx_J#;rtB$)b7Lv9a1alU>JU^;- z0|30yJ`3+cTYsb*v_jf~c-mZ()Y4}R!1;dOM^X}Hmt`Z#d<>bRrM;vO^Z2SE7=Ja; znj;;#M4?ZIKE%e2C%sRml}bmT!0-+Rrn5w~sLSIGvYru~vm+lR(NJG+R{4DZ5*Bfx z8m&bA#Kqhqcksv8<bRPR`zK3pEOL_JbC{HJ0dCn+qBq<lzY&-HF<*Af{&-IA&TWI7 z-J|aZyM%lcgg92bsLyk-1C>})$)7Flrx@JAlsCZK7gm5crJ9$VfK-i<P+2MJTq9bZ zUGL~&I*42=Jzk5*UZy)RM3k*lp^FbN(#9m%ae2j)0QNaUXBW~Rm7zqR?mJ&r0Y(3b z8eJ_IwSx(v+oP{Aa<=P86!2|MF5Ylas=6MSQ*2n{IM&Zs8)sv><#5Nk<sqo_P;YE1 zttEl#kqP|sKfftz1J_Po*j<M1W1=9}^=tZlOHXQDv^yqGSt)JU)$(saNFQq_NPt{o zHXJS_%vF@Z7(+ZhXfX?3+QPSI5*mPA5>h%=X>(P!j<6!*WxUw9-^Oz`sW>|LJlgZa z!jwXzBD=vF*kp8cTj@I9P*d|=f#}zD#m3_GIGgi=X-vf@eyp2g9p!v>M?Zu<4bDwI zv@5VOOK3mX^LURi)`_EXx#isB;tFwTA`U?9H0yFXSUC=348~1|KL#yS^3VIY!|qyc z@^*Y!U+4>QB~fJ9%k%lL+5C0=GM{>^FZ{|=deshy_KRkuIwhjUXZ$A{6w7}o*5g&; zntp9JE5kkB_H%fTw<7=y+1%;<r|GJdh$E+<__<~g@uQv<Q^444P}SMPlzwBzZ=c1< z#_1KXN<2_-yE-FWLYhP&l^2X3*h^TYz|Dp|!9YPn7tG63%b<%Mp(TEh`4@3I6c+ep zUkLzA+L$dxn<!M!`nt$5pvBF_{s^EjU6Yeq-x!<fT)rf86cCsU#dGvwO5D3TJB(+E zVl6Cd#Orzkm`#tQf&N6Xio?N5)0ZC^o?o$afS~Vm=%Vu3YNZjz`RKFQPRg&SgNYv) zPKcDF%phsE)x+t4Gb4UV=PId5UNkJa_y8{t)%Ufy{qDHgnmE1PmgdIJ_9EYI5{ip( zXTqU`V+w}PdaAc;>PJ@R&qUn}$||Ik+a0E{7J7BFJsu2ttd+}CQIx{BJH_yVdR%J@ z`Lns5*mzwg{_8f!Wr10@rxzmMOdMpAL}GFootIrrQh7*e1rvjxA3up_`Rs4rTCEbn zU+pO%oG$Gp4gs@wrN<D5yD7i)T1C#Mhx{PG>e&ivHb)qrca+qybS~P<@oo{CI9NXs zqK~qg7Y^_qJEL6f6(O4`O;h_=3cCx?0JyjAFtGgw9q+EFPnJ~VLfZl2f4H~v31)k{ z&j1T`$#LI?9Un{T;r0ix^wY~{)9DA?*yY+wG@I)RcP7fi^T~9PpUgFUbG%a$IGsPP zXXMbdAQ$jzeJf52O}JwG?JC(8*LhyaQ=G)>A{cZP1F@9-(Vide(l(k}+~#82doF&{ zM*&Cy{TR-g$d_0{ZANI`hK5*mPJr9C_CDa5I<TrtKzp@yf4pkD`B7V^P+D0kGajKH z;Fup&iIvQ={cffG1roD{M5!kPFF`*ELyJ1E2Zcn-`k?h+_^iL0oi7~zJt60vu{3mx zI)&3+Wm?QB$y_XrEgc~-RBoLOcA`1oTm%p1D}%+oZUBZYndcNjx9y4eQ=ufghiX-I zbt0Rv_fgMLz>I<X7B2cl1i~nfUqeIX7i|KLd_Mr`6MKG041ZpT?;M3C;?WJ5E(#=e zE&V(Qce?ZfotP+a8C!BB38Uc@?mruFWxW{Ny|TC~o<4WTS!vYO-I5#C8o6XN4{)ic ziOZ$tkORXoyDv`$=r4N%G04h4icyU);`55<mcfFpmyeJlB0l!J;b@I*50uTsyoE5> z%&FS>b?`uv)Z96mCU(}GYXpknD46cLFp`oe!MXcVPRQs~L2+9Q{7hPdP@(;X`h5=T zYF-P;%&!!Jzu=+geH*+wtX?Lg#t{7Nv3Vf!VR=A;le#84u2|EO8Zj?07*U^5^G%zB zR>=hxFUc*J0dFwk#~Wp%V$pajeNCxaoxez1;P+m@okA~|1p}pj_?=+=tjTx>xmsm) zz*SF(uwm~nxZHDfW+$=Q!ul!mt0pIXHn&$2mANW0o`V_oN|`i{?n-lK?D*0w--3^Y zK`~U}vXoXu+yWXt%&m<r{BtO>%C;lIA>LLP@ujPm)ftIZ&JI#CmHU~qQ*+8BKzLLJ zhYrj$Bu9l-OV03Lph$}Pz<m62b+V{h+rasU)7_HU>-hzGvp3@Y<a&pf`Xe^$kk5Ry zYk*@b!^5^Esb}^!qtQj6-TMx4<#w-kfp{b7u#=m?Jp0cjcK-@OCWop{=nR1E-*~tL z18t}Zdrwwyp!BnOJ1VFAmwXNRSMWVqGW#~UZu1RtEL}rDiE5ho-be|xR}zb`scA^( z5QB*I(u@R!cr=2SihR4zi&Uc%-GD>W|EMJ1tMCUUOLV4x*=QM|@gjCY+81L{-0?Wt z-eXoW>Q~Gdb_~O`fFLPk|B4fDw|<FSZ|zOnY&*+AXEL6NTqxg0an(5R$>bRiK|%Qy zfbRGlrm#@SE)COEoO88ZM3YgYvvry0X6GvfD!rPJ+1!<lT<Rw+{>Ol*fp}i3_ha@H zr2u@x0zdo9ESAfb>VqBz>gdx^gGB~XD$igJXse8klPTcJ?c5hCym6PJ6>34hZQLJ7 zJ|`1$d`N}wf?}+rgtC#qGlK;MCIEjU>Wk{v{xZ%;JmFwi%=^b`SfcwouHUs>3?=0F ze}dfs2&7@B+tq-#p@Td#cBAb_qd<r@S6NQ0#tlfN?lODE0K>Lh^+7u@B%7<Ulrnvv z<f{4(u!#75WGe%0m}#R^&R_HW=O>M_Gvlo9m)KI7bu14Bo7){i`ryEw?Nv(8nbF>x zv@^x{xdqw8V!#-0JoPd!c<HEbGNQT7HS?x3C2=&}1kxcy0^K<i2zey_Xk;Q)tE?UQ z4s`O#e%@laWG9nnlv93T|5&&gY7g}Swu1tkA)Bv{4v>gbHAM*u2uP%I$r{~SdIo`r zgYr1dNdu7ZGTGQYDEH*okO7_@GtQv>8M#nN6ojC#RL2N6nwAuP(Ih#G6^kzXOP}Cn zo1+N-VK@omVB#=->krYqM&O??l$Kz{)DuKr+XLOiG~QtZ5PW~OnsO9s|AF%ebTg~@ zz)$=S(M?0O*~(p?*}8J_Wv*ppfb2|BF?|QhEm>J#4n8{DYp+bl{_u)u(z~M_Rsu)D z3{V-w(nPQ>B{Ssyw@A&D`x@X_wqCf3Knp^inlaQ~cj@yY1*C@1kIBV^Qp5Pke-xIu z{1kWf_18VPdog(VH_U+5^o;T$Qp!>LmUCOh;!Mozl3n0=M`F%1!j+CUmCqUcc}zPa zF}nF4e-c&=qE1A%b5=wTjRrO-KXCw*4<EdNf$zc8>5qUguEw`l*(4qeWFqZ&?_jz( z^E9q8z?ophZ{PO2kfRxYzzYGOy3R|i%qo*ZVU_PuV6|T+m=@kKzb!Bk-0UO*9Ieey zgo~t<U(Z(24(7JY@Xh*ugyncPJX4ml#)5Kac7|}CNhdUTnLGfQp5_ym%jyKobfJjB z=R>rP7EgCC!?aI6P$J8ho}N?rUA)-e|G+JOAzQ%vi-1=a6Xup@r$hIW_%&joOGNDP z=a@!hvwF9#tn>q!I|=cfUukKJY>{S}rg}14PPHtUtB`YrZ{ze7Wjs?fq(~{NYr9`* z<9dI5<VqB7XDlIt#OdQD48lmQ#7J_rbWy#{vWsC$=Xp5AdQ<tb6eEX3Xk%m5{7PeU zO$Hb1A|AVeOco1?Ny8{A&QOxML1RtG1V{0~U|iAE<N0a}TxO*~E$f^|SA`!580u5} zOEm5(o|y!R_v0086fytMtMn+6`{`~kX|qEYkEbgjPvKp@HHd6Oq&umUUaoZ`YZP|F zDmt0WBLZWjYUcM~Jp#HY&x9G~Mz=SSl@>QLpVtQjSi~hUNI^kR-=3u@&NKIiqiaCf z^S3sknX_AO3#68feIG?!ul!pE1Ej|A5UuLsS$@cC=e3||_tCf)%p#XKqMZF65~N#9 zE|}$LUe-JwXYJ*7el!=?oL<DayzoAb*2r@WpOZz1wIac|U$JUFph@-^Hj9KWtJS*v zbE$g5OLpx>57In)+5G-2qtZg1r(5zkj;OxZ!EC8?^77@o2kX^(8@SdhFB(%|4ou`J zxlMNj3hCSPBeeNgy6N#2q)y=3#r3|@Kr%bkPE}nHFfpK-tfqOsl;Gq$;{P8T1hK(k z@qcFly#Ie^!{~wVTvqj=FQe4xt|tf32v~iA!k)TafUaofmm2!hO$m!xxNlYp=RQ1G zXPAn1Mji%u>j^6e)!nnD<3>xrp=0B0O4UuXU5;yV^{k__w>`5&h>~qPHT<FUM*ph^ z3wg2Y3XcLAIYRB>LIZU34}!fHjO_{yUPfml+W4n{qJ7>yMK3WGt}pH?AU%eR_#!oB z5!+|(Mo%TWvJ8QOAJkV;F$`z~Q#xIkd-i3h6bM6j%<XV=N*>{~3;l0|W+9YPsuGra ze#forBy)D|OhY|XKuYcEY_TsU;+u)5BK<dHR8l;80j^m(svR+!)Eje@$EFNbJ*@lw zL=5A&WV$j%u~VTsicx(89vX~?xxZ1yMg`!kWum@aBz#VDNO_d<>B@+RxK+3o-WaW9 zvDA|`W171+=%}P#^uM+q?9-3@j-5xBq$yhzj#ow;R@FaB!-_R|sY(^fhf!c*q4tMi z!Leo1xgmnIIGE)kHq&VSCK#CUZ%?;yPdCD7B6hy;v<D+?UKTVKwST6IvWyl&hjYu+ z%SR^i(lTU1a1nrv<3C<utUZyQ$6%u`z|`6{1_RJR4d4@rn#%-O=+hOFUJAAr?b8*8 z-Na?$@bJuylxdV)asv0?{hLob53UgrQCfWXXrW4s)^EIcsu>Auyp3P8Xw(+~G2maJ zcO`}Y@Za*iOERsQHL+0BPz6Box<?$g>8dhvc_q?Q0aBDtF%@EWI0>m*|1+~>%q1X! z=nM$UjKinbL_H_&VFXEw9sWM#Ts&TIHb9>-{<>bld~>#ng-P=<pXE!-n@=s-qnu&g zbgH4Lknv`KhjPiM3o<>;D6|uWwEE618o5od+e-^yt=T9d>UO{Q<yNnIQVuDrZX<l# zw|li2L8m8}4Q(X5_Y~Jvn^Y(@-3~0eY)LOldDh>QE+a?nUY~>HVOsU<_|4SIlp%pO zN)`k!6!j@(`;!F+d=BTvu2hi8*<4)&^~$^k!Xib_g!p2Oso`S{O^zDYZeNtu{@5y; z=a_Dw6|B^xaeq|epO>wCLaNO+k*B%TKGp71or=w;vg`Z%kV{mo&54|zt<Mk7x;5@O zfSzu{EObz{5Xu&U9s3;$Aq0T1A<Z`;-^xDzquL;J2xbO#7bqRgzc`rRHT3?evP=;E z6JbvAqUZGbY;1qE13j36o-uf-c8@P3PkJ>g<scG%1NdQ>yE`#oUVWfC5OTjDB>a!^ z@Ayr}aiHx}2|q%z4sw|i)88z<SY`DCJM%fO&xrD6vp6yVtG=$iwwhF^8E_{=y&mYB zh=v8%t5EeOnR6Vb^RBElhhTOOQ$Xo(&g5jhe+HB?k9Z{iO9BS|hAUqpHYfVzBR9J% zuCV4azJ_On8DFWR%AH)>7%?oEETpzinvu{HJ)WT#^`elJCFLdwSpu+tdck4F+T7}U z`Vv<b78voB+N0lRL!7&hf>CP3ilRJrS3?`sgULjn0=?&_b2BnXrbQHH+EM~)yAd0C z)XR&Rj)HL?pSYEeblNYWmI3V!+0on}W*L9;p6$W|%!HUQtCM=aLw3v4e+n7#j1<GM z^g*M&n+>AOZ#P1vjpKbkzM#(a298is=_sGwZ6P6(I?9eTX`l(3@qESFJnMY^_5n|< z2|QeR!pu-{arUCrg-XR)n1F-2`f$>1j*r%8re0arz1E5OeEP1jk8MCNMFQvy@Eiw- zRv`Th5NSiY$_Y2NqfJig;C|m`A^q6|qx`<UHF6H%({k!Woo2QPX9Hjpvg-EuG(MkV z@$$C&z9|su2O|$sxE$qwDSmor^?ggQ34LaomCX=9@T`?ZR1sy6{_;JW7}5X`)Lk#2 zGCp$zSB~L#x=N*7%b|7@169GEaU_d0Hh~>Ly_t<?5*1Rso%^B~{kh2b&>|CZm`_`5 zZMTk6(b6a*tk?1_>{J`=RT~B?o%Rn)Hx=mZ<`9d^Zj#W;%S-%(2#JXI36Ge#kNzm9 z_A<Lmf*T<ke0$vEitVQUyZ_IU%kd)1t4G(>ttsF6vW;>Xb7l1PV}r`HVXm<;%q}Tu zWw!LVzIFek)nmy`UlOwp@>{%`52Uol!7KE;uEpB@oB9~@T+lZlrfup=0}`o_g5kvB zmKmZ-VAsY-vIq($HT<hom1Dxu#butYTm2fUW?{RFQE^4}_EMWUt4<&mic96ddYe_t z%^kFq89ah<MKn7wbgx|&qR4OFbfc33Ahwx%e*kqsUTCXDEp9kZFsAW`Xp>4qYqR3y ztACUaqvydhY1$+IW!_)F^Cosm^>Hgh;JZ}_yEU&w$z2+`B@QfZH~0IqQfgW^XX~N0 zD`M*3Ek3J}2=x;w>0vcrvN@aR*PBH=T^RwIy6v|spaXyogtJpA%PTg?EW+1hk_YbO z56X)%Jw?Wq3=F4wYuOZNCx$(3GCbfCzpLO~lO?2lq&ZkEh4^g#<r68OwH!I05J7te zcbt5}0g_C7AR}${Dd%hi7g>M97swC&T;a+x9?Orw*~&PWE{D}AM?0X~e9|s19~Ie{ zO$?i;ka`GnsIHz^<>1Y2w00YSV05|S<I|Dvv?*#?z3m=yY`=d7r?M7_5M0W!x#N=5 zpj;!VeRuDL)Onq~p}~U8tSUf~4KHdjMb2yacNymR#*iA>d!uXWJ+pEpdlp6Pu}}cP zY?}Y+^#GLI2MlZF{aPNJUja^ZT4>>8x0SO%yT>(&^}@~fwnH%E07>(?=mQ9$F2-Y) zfhXWtXYXkxLl2L1hVmAW2r<l^cR%hf>YQ(P)tYB5E+0={nZ1ktI@ats8)&#okOHXT z1Ll54g!MpfK~!*JM-9&tM7cav<!+q6=`_#pn1W=^SLn02?6AvNwH?vMGNzkyN_js> z)@MJz^F)<TEn8OZ@~4*n+I3@kNzUGKZjU9CDMX)t97ic-kAiGxJo1-b+NKjS8l3X{ zLO1}C6(;lmev6swsol@oyfik*WR7xKsOvZXA#~t5+#R~vOD>m4{fXNv_{_;Q<OObJ z@u}{+6cR(I0xOWCL;@`QpT-KfK_1L}`4k9T<}wJo))#6cciTOn!M0n<&P?7zCwyD9 z@$l<KcJ~%Dt~**f|2Aw|y%6L|aaY!Qu74QiUtNnLUWF|{koU~0aM^ud-@g<T3Ffkh zt=WeYkrPW6cj^+J>uScYLY<3bq3DAj!gv_fIXCM2k#-TcI`UVWh0znvu2K-BRVn4% zm@|sliJTElAV`{?aesVDK$6R8HUOc&w$=qxs#$M$&Qd>3fAC>;Sqys^8PJGs(R_?h z(Q9`W`2=&hi4lK)uqc?k%oG0OdT+GHb<zN7kEz3XkP@VEM#es`U_IS=Lr^P8NCjf6 zukIq_t+0Q*!jW36$XH%vX-KC$2bzQ?+9l`!$y0r~ewzUJ0_}Sw5ijEq;=*Fr-Y5~a z#}SOJ8334Cu~jqAaeh#a`f>rtr9!7SwQZC;GIy4Io*xkYDziX>-*$eA7oYC@#@!n= zAU`t9{~AN7-0Vz$;ePvZlPl5`)Gm$TquB$@EzOo1o(nevaj~eEfxy+rkl;Ih#-Y9+ z1hAuN+-f_IPd>rn3BN*x(ydzEn>8qn#9G}G%f`Q0r)O}5Jx7w@iLe6mT<QA0V>oNE z-j9o(TyN1?uh&CIacH=bPB8m)T$5%Z-+mpry}Y{mg8KRbK{6(R_)zvU;zlkJ1PRPH zg)fn<;?Ok*<_^xaAW&2Pr<-ra?xMr+^k}{m$$^>aMx;_HOJK}Zwg{2u-4OXdY2tb> zPi6mbL84i+L%lN)gKIWwNkgzM?E8vas31rVL&vu-pYo|Y6ytVry+0s*P)}E%jqdt| zU0puPi6<%h`Er|=%>*7{D8}J4G6uyv5w|s>y|L*qh&uZLfI5=TQvaZ$mX%G+m_2P9 zOMMBHc@R?G@=ONW2vdb9-y{UXS)_k_vLp)NRyG}g4byARfOLMp582!9kvwt9jK#Lz zLALToff=OH@^IyIp;@YKb}%`rIP@u^&_fv8Jr|^TYO>m-s$Xa^&{vvrQmkf-gJBh_ z^l|iEiuICm242MWn4WEw#WhyU9tQSq-UcCx@~+WYy5mog3><)yq0v34w#^ABS<qoz zSf;Od1TD#D=xRH{?Rytz#CeF2N+Yu}z*Js&c|5ZU4z|L&;e4_4@Q`t6+J39EvNJlm zA?o^-M;hI7JdCt^OmzJ>0|4leY21v@Rf*9WBxJ%heDNTR--mK~X7U0IW!`n!LQK~s zDpZ`#b>nmh6}zWCZ0(I*(rviP$&qh^yi|rQxl*cfM8<5SvDw7K0LyG@Y-iZ%w=}6< z?jk@=f8F7G@!0OAMI&QMV)7vHZA8ue;v%j!{D#19911&T7`npKOJpEpZg+Px(n^nP z^K>2iR7SZX@8NLTt$y+(?uJPzWh(p-ryM815s<219L8n+_J{9yE0RyqoaZC_^Cdo; z*kjx33-RI@Woyo*8j-Oy9-g4ih=Xu$4~k8cM_Q?pgl!wp1Z30#Dy<@7D&VVYX=$M* zTx&Njif?f2<&ZUGWRMI5O6ZUC>j%IcMsfx^7Ma2xrwdV*V8aaLixjfD(rX&RN+$|k z81cu5ci11mU<qd0iv%Q-Bqn`$kY%sm>He4w1h6nDZt6j4wb{jRX=ad8*eI9kWT{Rk z|5VWJOUo-b{H9bRQ@PSdBBoE~E9E>a5?<~6Sh@P|&9Do^q1kypK<@sx9nNHo`1kRn zAQtBRF|Tst%=V*w8=xXi&LXs&Da%8@9?~)@FqTIaHaW0Y5iJY&x`s}&t(49;7&npU z$t&wV%Bh$sFuGC>cTMf|xhi<OAC(bi`@m~8CvZ&Rb!ZpKIw|KYK|j|4pAyLNf%a#h z&rZ{!59sR=1H0Nt5mFtYU;>SN@jR6v1_Bw$Kevm`E`stY0t!D2*H#v%I8{u(V>UVN zG9VLkQ72!E*x>?_#~0nc+dA)MGYbir`hIYe=`c@tBt``8Xh=8?!^PR*KVqEx@#V<b zE_lI$yR>_u&tjV#uh-_}E6uxI`Yz{41e}F_lu|Vus`PSUfu*H_SaE`!80I6+w7k2$ zuKyoZ2qo73AO8f#@y?!*|FBMG`0A7KMS1P=@5yujbn@D@hiEz3!eTKUr9p+~E!T~b z$Rk?-wpNLTO@T_RoJ^1e%fEXqAeW5vc)4Ba&ar?&(y_Z`-?VXeFsT8M+%JYU?jHnb zb?=Q7=Y#<Iu(GXPBCCDh!=Y+Bwiky2+R32L{zs%k?+{!LqLoc8U0@j2$B$>DT>@Mj z5~Y0%xpU}>(xutN8EZ-9?&w=}d+tXwV^Df2akVXAJbZy?$KsJm46=;NT?*>UN{Y#r zR^jM8dlHi5*|c}=P0yhL_Xs0KqJlcmS5@ZcNSYm+)k2J##OG+>u}6q~7PJ^<(A&c# zSsy=Wor9b#OCXB!;8e%zS8b%CG@zZEO6A}ZbG{?x`3>4JMLi3KvMoyy;+843C`R4e zZqC@!B&>O*dqP!ECe8GW@|Hq3`X6X9CQ*7QQI>8L=~~45DujO8R_5&OO5kbhfk3%h z{GGSdhg}OjvJV-52KuN$8c@$qw{-6AUO(5MVwtokAFgN)Y6Y}vzB9e5E;;|Ckz+VK zl^jY`5yjbt*$rKpz9!<6caCwr+y&SaGeuU$mtwa5-B48C-~4+vQ6e4Q;67dZH?`0o zz?MhY>%Fm<^dgju>s}<chs$j^Fl5TOasnvL_u&EqU*t<XzJW79K=hWY7V<$g;|%wt z@ro$ds*}X16)TG^G*ZZr13OD?llcZ!;&a>yrDm=!_Q%PJwaW{?2m=}XsOyQju|d7B z1fX0E;=_fl5OlLvZTx0z5EZ5BXUErh6TT~#BTtY)CA4>Gf4N0-uqd~Gl+iP%PVp0^ zGTUq6BF26v^o(0gm7w$+gE}cG>D1D`vDoC}rUW>})1L->nY-fb$8v^>y6vv!P^MD} z>3P?NdswQ$g4k6#fJ|}q{OI&`rZJ`1sApvjjnp1!T#z*4LHzBJ%-018XiVu=*4sSM z_~etRag51AP>+0<A?(POCb73uMZ9U3>C2oz6Lh%i9d8gnNb|OTsa26+%<sQ|(N6S> zDU>&tR_d$-!B-d>J3-hgz_T<zSoc<6qXYNWn=EHqRN!^E2PkKZ#?n0~ttL8OC#sF% zVhZ8^kq!so?##!%l8x`w2l+~+BBmx<JuC)GbcM~arE~bcO&7{h(`xjv|3v+7W8}~8 zk5>%;%gTvSdV3J`QYF2Y4ELYJaoaAWvp>G`y!!wl8f4GwarJOA3OSggHk|%5j^q}$ zE}J+g>Hyv6D!%9dDX50uI!<Cd)3tNeZq}Rs+|As!c^t>KUW<dyp9ScUiAXU*C2$RE zO7Tfb9faLYuJ(*3vR=FToQ`%q0gETqr$D&e-Q9ctefS0@BsR8(du|hwB!7Rbqud_; zgOPp6okxykg8YfyYb!0#HY`d5DTuf-8`aIX=KD5^n!sSj)dXfC^H+~lldPZs&b3%> zpc9G4zkrePL!;6Mo>jP=p@N_y4&aVCIO}z%VtAh~F6mAdE_EG^)j6fBefJd~Zv?*N zMLYuKL-O7(!TCplEyB|^ZqXg%{VBo;3$ppeZMyc8(;I_8Jx^>D4N#VUTaHLbS0s$S z^)-~OOsB}s_4^q6wO0BRA|D@_INE_G1CffqR1R+oFFSc&#<JC5L;+v;S(Y%E>8cv2 z@-I#v&G7|JYCxs`D{I);kkdT9QQo;dF@obx$>VA6161U?p@-ErX*^9EM4Tm3`zK26 zuNOCm=6rw-tvE1)DcvCRa3(hNRUQLSG#UV6qj}#u>%mT-xzW>yHn7HYD#8i_6V7)J zzTIdWtI>W^a3PJv-g~y#mP&XUlV-}>4CvZ?XExSO(|kI^&dO!|Qz74jy6m3V?*7G- zoaxK>IHQKQd!jQFP-89sNJN{;M|A}42Q_w?kL&aH(vmXu?6cQ*c@ptHCR2UYBirL^ zm=lpzCQXmeGJsg-yU7%`dIcdeGi`Br8(Y?gQMOZxHdBAe&nDjNFg6G%tX`!;SWt*; z(HX({n-x?vr8Tdc4r^3t_%o|Iw-|%ff$-lzsU)|x(IsKOH=-5V1Cw-Mtq%+Wx!Zl_ z&h`UuboBt_a_sS3$!Pn9n}+lK;WQoJw;Mj8Z#VD&Ik5z5Is7LLq;5C&8v(p!@_+*a zj40{cZDthu_KZ&|1pky9a5|Jo4-JgyF(RwN-O^p)4d>6uxbFcHe<_h>+WrVUrH@65 z8R6bB7R*ELFd4ymdUl;JaA*rGZc6`$y|<2vLhJg+6;UJv6a)kTkrV_(Qd*HxQc8(I zK)R%J2oaH%&H)6ZQ@T;QrMqM3ksO-u8NBy-ecpAi-n-WCpWj;VKX;9Hh7)`5v-5NI zk%*xKaOs$sWBjzQ)vt)){cp(S^J<*BAjQ}x#nzpncb>UvoaZy>uDl@?&qlC5R>m|k z25yqq?}+ATRN(4&#_8fUM65O`nl0pw(?@>agLlQtWo!#2mW^>%oVq=HeXxB)zPQow zIw31WD%s%`xVw>OJ!~2G7W8b$!&_Wf^@UL$J}e4@espFrrCS^*!X6r)C*HAtwK4N4 z&$;1A+^aW(FXXCJl|aV>kOTdCdSaT0pB6~L`KHP-l|B~@#7jxNj?=eWjkTNe$uz3E z$73)Eo0Ara8y1|9YZ!#e^m;OrpsR%^;hi_9L#CrS9y6rx78*Od>H@(leR?Y|iDVze zPgEtSm9X6IpjOF+c;t*bey35)g<M%^kGs>uuGbknantQa|4<co!~;Vz0x7l}&|Tmq z$bf2-FoeQ!H~6g(5PcHv33vKW9eAafZ@d6}<+H{t-noX8;R5~H;j5NVkT1es88F9( z|IskzC}@7|_!6YF#%-+3@`51W9B60k^sQXlDag}w1CsGP-KQBFh3mYnuCD$iL_lQ2 zVFUoVy930(@9UdS`qOKDeY*iLAgA8{@LCFfFD6J^s#$i5$x8;@H2mmtd|T>6n6f23 z=!)P;%sTP)qln$mr1xZA4SAF2?poW!*+yDzUZRk8JdFu}W^F#9IC!$03yRU#gb2eF z-aDe-eui^5UI6Pg)cL3u(Zt%^UZ1eYaZ^<eyVVN*<a}>xSWtA8Zs!z0ep4x=&|t~i zN<b5PnSB&{lV$4FB|Qo$sruo%Y0Td@_P?l0U%2(+^WG|=M>)F78#*-xY|Z(}C<!i` zjJF?XBp2Z)t&fWY&5tAHVW0Zw9-_fgJOkVMK&c_KSye;}#%k0n=(?*v$XiV#<4>lN zGBMbDV*sgZj4nE~6criko3f*L{RM;1?k?_#pWDi#wsIo>E03L_7p9mic1vaCR+)(R zNevR48xJob0<D*>-5^Y0B7OX9ru8~yq@Y4-%Oki2^r+a>mChTve@`Vl3nx7*Oj`#+ zG@&D<c1UF*Z1KQMxE8@XFo4M+5cp_W7D6=OggZKO>3s>p#f^3}*$t^-fV^XNQn!(m z>AE?Gnf#!+>16;4_a9(oycU8!e;_$c<_&r$n3I3SXN~iup#zV?ZFgxM3y8Uxfu0Xm zg?pc{H632%;FFsfSapo|9q%rWgB#PO4CSWd8MJ;RY*NW}*B)*#_(-rN#30^W+)8lp zRep5OZ+|h*SEho0s;tS6Jok0|g06jGaq&At1$qptQWxYpd3!9U`1B)Yb1w_R6qZ*y z5>fXJyk4T(NaWN+EF1Z7_;|}JwqL+fO_h%M_}Xhh_vpRMq=*-ewx*y5<VF3~`1m+@ zR>b{dT*x4vv|Q(kr?ny<_uwBl_Bjpv($c>k9}Y+pSDCdjSc-q-zymG0UgmyS?h5%x z;e|tvyV%)&f!J`1gQ9zFtokXpXP)a|=UT9whRZrY9YdkeC<7Jxm$}bBqK(oDX}UOG z)hy5>Z-=Ea)j2-bd@9FRJllw2U4i#B@_{jz$xxmoM>qVDzvtpj&E&LoR})Y+Aucu@ zzdQ0VjijN0L@wDcQQLY*Cj9Q5LrT5kRS|aM$k<+KHkP7<@*nMhsz}&fWUQBZH2lc+ zHF#XbOwhh`Fo0V{gk6DJB3|H;lP}y(?{Sr`>g3=FYGx=6dN-Lyt{l3+tF%q*8OLJX zV>s-e*O*;#($&_A3k`7EUH8~o;krkE<Y?k$CH@_WR595DIPILpW?}7#ql;5>h0393 zBc&AJO53e}*mXtN<QAx-TP@twZG1_IBg1XApm@(fjv3(XVPAL^h0zn)-4}0P5^Dtc zu%s={_Zd3i7K4wBF+;}Z6pQmW1!t(rGOUOe-86E|ls!M3Hu$pM(+c)|-QUPfmSxkk z<ZQ2|6Ii(GPfJoT3Zmp7$@8MUB;Ooj-UOfXY0<34nF--EHj-4#$+}wgj13}Zw%&FX zC64U(lumU|({G{248cb@GXcysae5iT!q9~Kja-d+N-ScWO-D@fIOzfc6p=V#E6vjv zOo$!C(pk!1tE8)nu$hU#ILx+Ld3gLneAEg}t^k0=eMP0#2<+AiXlMzdz5`fSi$6AI zs}{KhQNQ!m)|~8;OErT^>&*E}QGrO>-3#{y&e}*(kc@m<UZ?*}^7ueXzINGcp2Q1I zRR>o@<J3c0?q7L4QRRx)pV3eFiQ$@{)d3B_Dr(MYz3QH!&C_mR4C2<?me|EA*9#sk z$p^3Fl$&?vkl``xQ3{#i$T9{1*p6Gb&YJ-Yq685~5OrR+!J+MYGXpLSJ|QE)=^u;` zdOh`WcO<7baj`kb;{%(>B@ogus-&}ULDCvlmJgp#1T@Ki8_(Bq+C5KtV0Kr*5BuUc zL+i=j1~uiIxoXJg$C!J^aPHNiY6UhVXx=0dBW|xt_$29NG{#P>L-ofbwn1?yrL=AA z<twCpDzO>jT@$ZCNBAI>8i+>Z{Ra8u9nn5>d;r$C8UGXlfvk359KKu|v6<ljZ86>| zF-82-dyDunmlM+F>b(zvPe!&&G-J1lxD!7#8KH20aFgQ$lZxZ+rI!^3tQ_9bgCPr~ zwrJgwI8vY_psA^&3T~#0rgFZ*!80<3pdlieY)UBfuhTzNvA5nR$@9amUNuE?Y46vh zXbfaJFNzfdx%bpqQzmN02o2<1%gH}^yFIx4Az@4+!&-z4^Lxz#r69Q4KfF2dM-QxE zeZv5NYTSIs@XYmaml>e+h>Zp_S|B&JFB<jdq~fb5h1m9IDACv*ViU8nrEbe7s;}J_ zfF4K<6*~A@V-fOm>n3VhvkN)x-sH)C!8D@f>46bTWu-^fl7FMg&D4CNoc0}PJs0-c zTx=RVWbh#Qevy++7-JZ1H+ZsaDY;s&J@(UUiHM2|nJ*IDoO&K(G{<n`RXS{4BD$-d z_4-{C0cb7c3L3(3m?aX3B%LD`os|rx(W*EQ6!G*?s*mlig3exokth-7HJ2bJrzwlO z-7t#CxVi@IZVEVNeeI~yoSbO)RE0nBH)YYN#sMizqK=@I%Cdq_D>=5}c!44ha@?zr zFTFphuvtNaIwG$bI-rwpc7KZZ>V)xqbvrq>@0r?Y3Zx7+(5TkZ9#^GjP%V7_h3fz- zn#=eLBp0bjs8MAppCuZ!ubFJKV*46#0u6$0e0{Ntm71JDwBd{8c-x+NFjtLCYAQF! z$j3q}elb|^)#5!*f~o`cNHMktKKmAe{AmcG${Gs+1I$Ksa1Wa@O}-$2=gLHd7cMUb z!3^Ne>7k~`5(V*<oyWjpCAm3ws>6~5g+w`b$6`4Q-&p5v@$+6o!7=|1H1S{G;5%J@ zOwV=?G)1u005=qYY!T+8FPUi3qTr9HtMYw%pjwT(10(#&=i#NKk6f2^E~*}Cp%b-b z0Ns_3gDuS+d?r%g{}3r|v$3}UuuyGHoyQ$US2^SK`kJqPdtdf8lRP7WS@S&T^+iCi zq&*qs-EsJyLu_|-90Oo)@EsypU|uv*H2&u`99cEXu(+b`W1Z*8O|vDA6Eeq5Fo?n+ zBuiS1^kRx&bqfo-F8f5hD2<f83np;!&a-6vo!2-!%cpp9Za(f^51A(#?-y-tg9a)I zm;|muc2;%TcS!0^z{^vh1roie>uh6ydx|vKQ)p(x!pAbhw(<5NEQkKVwnjPvlgVl& zb@rRh6?TY(=~GhdFG9Ojc3muuoDTRNe0EecUY6E+Vn{nE6>te(8pn_qBZe?RUg2@r z54*+NWGP>Jo7;Ti4K6vK?_K7^DR2k-D`=20wOXlJn5j`g1PX#m$rh&kuIrbct7z6< z!DWb3=JWL`yi{(zhC7&}K|D@ARD<{VRSOPqYu|xBp^RLTgv`&-XBq-AkO(3CEQdNs zm7{Rr`ndfw1jrhE4UiYE0uLKj-8R_w4k9<h@h0QWX%_qF3|f`d_HGr0daX|`qEV=R zvxGic))^_hk>}8+EHCOp=`BT6wmyRf%Ir5Swl0}5)N<c^ONf%EOri3_%({e!7ZOZk z23{H(rn4k+{G$xQnYiV<30q&gfN|;Md{ax#YRAAsSJ{#_^DEh^3w{?>?pUUv(&MlJ zxw#L?1@AoFa?Q_ydwthfAlvUs+KY~mh=jxO*4AtHU*)|4Sh7b+t_3KZqSg|Zl#St< z7p6*9W|j@Kp7$Qdv;-BZC1HLqXh~Rm8l5TH7zsTd341wXo~^Hd-5SGfj0HMN^^D%s z_}EPz?FBk+iX2!kfor~rG4`PG-fi=?1^<`&5t_+YMEh`uJTUOy;;xN)FM~p#9b&?R z%XHM2i$Q{t-ylI^tJ&{H!PMCP*0W&W!tUcr5e%5bjq!+7X;^#AdupuI?w}a25B2qx z0oBw#irvgNxG#VImf#`~$?tGY_Du<rY~gY)!E89A(lzC5b(YropxRnt21sII^CPXj zj~=`mg$y4=JLCB9pohB=^XFE_@};Trjsd)D$Zjcx1P*S}CA{*!mZ)KXJ8vXkWYB#3 z;_B+lt%WO~SaOx5b8OAw8$7tP4TLS%jqfINwvD#O)SQcr9oVFK)e(KY*lhSR1LML& zW<~h^QR%CVM+}<Pv2$-bxM^MvcaRN!`TFQILYI&=>3tN2b-XyzghI{$)p2XLfzJb9 zFDZ|l{BS;oJFnW=>XJFDP@+gl{_NL|3k(DBH?JK|4`vvM#3M}ik6e!rF0u;n-wLx~ z%wH1LRC9<6U!l%r4a`IkjD3H--Av`tRgY-zm>eA?Gchq43XFZbnX}ypAoAuw7*h)L z1HhFXi%32@<$LrtP@6k}|F|8Rd!(paeJ$IHW3(j~KwlKTlahoTJR?9gK)TC3b1#V> z)}2rukltIkD=p2Tx04D4C+kJ8Ng^Yv?V*G2;ybQuQ?4C<wxj9XU7fhvzM&>h_4ci* zT(#+nUULL%?gUX-rlMCMrO+}nd#E={<05)CE)Sk{&aTVs74yi~2h&MSd8VVb^4Wj* zwJh0RJ~~ed>bH2Ra`fO&e>JvID@uUb>0*H*S&b0Lvp=TlWK}E1xf>}YOZ7%n%PfE9 z(_T82S2pwNaDhVd{8d6UmCT&kqb?y`t>K=AO-7$m)!IPMrx5_NHGd-CCnC?z+q?Cx zN=;>Pyn-I+K!wY#{n}>M^x_eg(CMN4*?Xu;0!M<Y5U4mNNn}zR=|c%`CcPJ+Ca`Gp zaKzcX?`QR}O!b!Q!Zv2D;Ev~|D`a0lYf@2pi5V;TrJBoTJf+r4pPMHt4Fw1p<b;#^ zuL2LM?6xMwYl6DwpgI&fQP}Gwb1)~L8(&KC@*sFR@(Sn)JuUs!xz7=bW3$TRz-ZM! zN#!H%M{+4!t%%T2hq@7~b$=h^e=iZUK;B%$CSpWC1i8}$HYaNIf6+lkn;0~#Ysy(6 z4<A13X^DlcltD&*`P)b!uF9Rw#xxt~<B7{l?fKs4K!v(;1Z9fk2Gp6K!30gQ`qCBD zltr8rnHeUlP1)x<$kgQmWco#Y!}=yRTsh(GahUy?Dg<lb;lL~4nX0$P7`Q(C&>#>P zsbt$~Yj=nql(R>A$@Cw>khN#+FrL8<k$rap<O0iBGd+M83)S9C6!pooVnt(OV%k|E zG#gq>f$sP0zqGkG3oxMH3SVH$69pTW2(pzO@M?*>xVXrrm^gInKc{9^<?!lG5_22T zfK14Kd~{K3_MJ`70;+MM@9nX-ZZTK4J+swH>O#|d9|wJu#(w^gSy}9zT4W?Y=)00A z5I9!hN~u~hP&TvW>@xSp3B$`f4<wS}n7xnWS94hj8P%m;ZFOMZrVedhU{(X5#v6%5 z<%3DSRUcojmQH{avr=Y1{&<qagu|qnMEKpP=DN!hb!&Xq*Bq!!t?|Qf9)GojZrf}e z>=>shl(;i|U2$5TW0MGF2x?~M(q?@4fU*e~?t~Xsuqkrxkh_}2Z;5+@{`v8J{s<i3 z{JBS7I?-px_v`tH=*Nbj^=#7iy!ZAOP>Bc<lp__+x`k5otn8>>ouQnR9QF*cJQmO9 z5*QqjIcxZ=5dNT4&P0H<KJL#R6rRokn3ZUJSsg8{^ZQ%y3;f!`7@I8$){mw>ka~&B z<=Ez!P3B}jYR^G9FZF!#z`4-_QdKc87qW&Eed_k|zkwI@K$RAteh%vAP@1;E=M%_@ zTyw!{=$@!1Q@69Y>Oe1h)04xn=RHT@O+jb$cY!1gA>V3THS-Wz1jn0bKomZp4^LZs zg2Ror5vMOf;)wso4BNeX_&yN~%*(Go)--<*rIWFI3z{$a-c<Jz^&uoOr0Awsp2%~# zGS?mzqJlYS0lKW^8RW~H<2PQgPJ5w1U%vozWQQNC7TLsH`^tDzd6Ly?q5aKrf5zsz z2f06agen81#Ed+W%f>Qq>!sMRD`PDZF)2En9m9gpZ8ik4c;&N_1i`+5vF#-T<9%-t zb^Ds~!?KDBzNt&GHy>D%@K?oB3VH-k@|onZT*v?Cjw3s&(WV|mMWOu(s@3R+I|d4r z^4{mNkJGF<6DOVn2xl6%C8@j=4T^!ej6WDC1X@3XF1K>w7w#E+JGVIWvFf%gO!#5J zr%#{o?R6ZUqt6>r9fq|LZ<iZocKI%WZgr1xC!nHNeHi4ws{=Fy3LTu#`@P0L`u!$2 zq5Ul5;}tf*J9Y9A6!A$Ari3?%bWx0d)bCmc7q+IahaMhc)Yd-qpvA2$0G;%{wq9?0 z^FVmZlD{+Z0XCP}*xk?Xegw5w4Jno;l8Du-ojvKbegHT{gBsrpvN;&!3~nv3o}*7K z@^LAo13@DyFz8VwC*?H4>KY$=e9Rof{RXDt0)DMJ=8J0daL&3n+-sgm`Rh!>Q&A#b zm0YzI^fD{>HHT^cSbiJQOSm`hMpNt0W#eYT1|*QgU5Ibh<Tw;rmF5mn)kz~3N3|zV zP+!x7Dt+SDX_{YlyufR-e*3_DDDOM~sov_@e6No0zn{aRQdjt~f$$7%ou*Rrk%S1M zL#RhK5=+JSjx7;l1+p?8w7$fbR_42t#P8{?+Ao=&f6g;(aht;+!D<|S1@x4=*x(Z} zBUuZtEzT}?QYVyq`_E4=i8RXi9&D0wJ^(0WRS_|*lt%dvfcXse@`>L*0Om7rydr&q zLw9z1Sy0SZ<P^8y@+q7@4|8xrE@N)YHbv+^waDVL9=a?6<K@h<P;CfEPd>^6Tn+eo ze6ahDMPt<ihRrU=;XPwR(Kj=sKp*JK_L7{t1cl4g<Z-2o#8+cJdhEUwREKfPVRO!z zWCo<eDerV@grQLP*`tf-`&?X6=Pp)O-efvFIQY!Q<q2%LkIVX4HPy_!+YEG+?e)v> z&Uj)axuHtOeyl1Tg0ScHb#)h(x%X6FO_zd~G_fRy#_a8Zw^e8`98G_IWz}vXbBO2l ze5=ypfX1C1apY_3t9Z;udm9%(0~zDIk?{&-f^i8&;?dN3eb7fobxZHU#B1OYknnZ7 z)1N2*oGN4Smd9e|ePsveDP3sD{<vH+r17517zs+)@;~=3hXub@k!Op=R3Eij<~j$$ zzwQgwRKn}dC-ZH@20ewIiJc!k4nG-t_`g2ZD7BZr_BH8g6>mbDP2DM{@++?eG_%#x z*X{F6ibU|oK_>tx@Fiy!ln)b>R*DlT0$hRXc>5T1)kHO$PJSAp{N=66z5X3}A%)jl zm(6ZtGEXgp5wnhc>bPhK02A4cdD1xVz=;%hbUs;~C=zkJ@aBkSv;=XksYO9lc}1C7 ztNy*#ZRxB3G}Z(+1Tj!%JYeN!+>0M(98bfDAPf_j@m3Z3&88G!#!n;+(evHU%y{dW z8ShtT=2&O|y$C_W+*Y;?6G2Jq)%p30pupn3!opJNLz6sKszpvC6?snzcOEfO<zdus z?Co;zzR}!egMln>8i-i;2B^$v&1dwZk~t*ojx-$R6H*zIsj{w~2?vWoB99Eb9}RTt zG@{U)k0*`1Hm_2P*L@W665S`H<H(V(;#IG*z5XPE@e1ZObnnIffDut&LU+lKn~?=p zMCr^vUqQ^k<bSncCx$C0<n0n@lLo5Q8lKN%vA5;F`Q26}<O9tXp81`p27McLyj$|g zu{4?QGEa3OZfWr?Y=Cr+OqzTWuk0Jgb+E(Gp~Qm24z-df5*tG2(-Vz86+Y_I_^Ly< z;EeLqb0-(RK=RPS8Ft@QVPM<7_j&JA<#y3&_160#|9s*;5~qf14L;fkPrdU_zF0<b z_}%Ys9l-@o*@rd4$A@)`+gIVR*-j@!xE%ssJx>F7hMVbXZPK7ut`(0aYYnT{oeD`# z_|mkGr%12(h=xIGj(7QjR>$H57)ROo)s*|;z?0IcSmO&*^AJD|3E=WB)^2M+k2a__ zkiIM|gQ5)@6{j14u8m46cz0D&pGIhCM}3NrshN|@xn&jPoPT@Rn=i^rI>7aK#hv8! z!f+X#r2XEEFRS0KaZc3!wb}@aMmKgVJ|+6FV76H3fSda97VDncn9X3qcDYVdw)P}+ zSH_jq_1NYK4y7Rfm75V7y*hycytqrl)PpX{^aXr5J{9%m`TGmqHLjD*mvTc`@nT0R zWSw{V2g|5J#~lQQIi0)Ko!}EqKCTZw%B?62*SNA)e>W-8{ARzrq<`PFV>)?k$h>;# z-E;FQ8>_)EnBq}lD|j|la@40Lvqe*T(Mc6yFzM0}$+47bKhr|5GgWKcCa{oLbIM#i z=~7{dRL8$1>~`)v8v5nG`XG0J_O<p?O=A&EtNI2LLeA8)$T$ma;<&N=zQ2z8el?}P zPNA6mG8)=^LD^TAkNO08!3%+c2hX=3WFM`!hbhJ^DF;$uh+Z3t(+PNBM93h^n^9U} zR=h>i40^`zsej;bI{o<N)Mq|ijfL@2Rft9*_hhArUh2Y)jb`e=&b}P&gvy!q#o?2X zE}B@_s!Z(77PFC-&Q4vsK$&&=3g#|81poY-yq04cDd)~%eY#W&<T$e40j~KW4t|(a zF1-H$9!rcIbJDCHpI@e}aAqxN?^)VuqIA7kVKd6EqTDa}85i$pWnygoyJV?DDlBu- zvr;?$`h{=T+u9(+jB;_?`%@lxqNnVaLf2fv;T4E#wQZqeSH$TDD%tuwsk>3S$1koc z;!JgAK!y)nh%c6}516JP(@kKX;lq<2bC8Dd?`;E_tNi<DUzoWkpPM!9w=UBn_4L&x z4}FZI#-0YykO%-P5al8pa)=yvvSVq6&iZqw)~vV|`bfOl&8^;S>OAsPk9SFpzltZY z{d$*eN%M)siS{EK@m%VFCpD|V*%8hbGjF!KIv^?WEyVh}Lske&Wb292o8(*jNE)YY zp(=BeDx0S5`}@$RC#u53tQTIbDD9R>r;O7^s4JQgpR_KQiT^$Sh24agFfU(-n207a z65H3ysuc0OHYlre_4_(^c$h)#Y%}uMAU26R;~4?N^Ms>j>dEG}2Gr~1g;2Wf;mW>P zMp##&A&~fWS+T8lYYg16v>slw0hwEv_u>XhG)d93bG&HA99;DD5!uBf_f>W_+j9NL z%qs8LLAw(8bo!N4Iy6-Hqv9MKa?6cg9&NoNV<PIX9$)!hH}jqvSGF!V9z5qlx*eC^ zb2=%32Ci=ww_p6ibg8xG<X~m7&jJ2|GmuJz!k>1uSh{V}_4Jr$KU9!?jSiA;am|R* zekaUuO5n~@+uMQ%k+U=Y+!I;PIjdxj1~lwo_Di24tmgYKwhpQ~RjH3h$Bx;+*YX=l zGvU!RR=f*CvsQv-Z|>8#bhb$H*nYW4+&-QyEg@)F3FNpwOhr9>B{d_&hiYzQT`msV zNFBxcBv!eDm^OI4JcRWsjiygC1rR}P{^Rz7;kHU4S;3|HA=gvrR!)324@lDSEF~+n zt)0X(x4F<EhUOzQNLzBYhN<_-%QsSDW__4)S|_6C^&7~)>c7aBdT81dwx<1k%ByF5 zuVAp?K*~iw_lCXFLN3)2V$wIptelpmYIRdRBw1!tkVgFD0KA|}Fp#BUJ={sma&whk zM5kMnnAtA(voCcZZ^{_LTvszTZGAG@=NPhAvZd2Reu|7BdxuAP6$8nWtX&k96H*iR zx?d@x2@U)1J%uQ;zt$RmD3s7@VTE?Qu#=3=6CC5<{7u}B>JkdlKsURZjVw`}o08HK zfsH&aI*bDDZ!WeTB3=2a57!4v7r#pDcwQ%B6i9!fx7|W7)F_!+N&56In_aBUfNEIZ zYhzn<m(ydU#G?diu>hZLL_mP7;Ble4on%^p6`WircYS<T)>Sn{eVB6)LOiH$rLjIy zvtC25tiItoJ*fWBGo(AIslNY0u6IzBe)zaQH>L(XUm&G@?a4f-S!~f5M1gkSw$75r z0J~7H<wZdX!Yy9{8U6>*9?d{Lu3%VS8%1u_t|O^6bH$<kXKJKH69xIGNr6q7hD!)6 z+Pr*!!Ct#LWIirpyJWMKsUb(B{BenyhEANr!kxqSkzA&#<;I6~Q5wB%>rY}=U&XDu zffmqR7WTQ+R$tc3u|g+78rM2j7bC(C-YOM&x-+QBTEcGo*<)vboUhRxV_lQwC9JS& zeqeM4m?7p-X$XAOyhcNP8(A~2RPxPzbMB)~V<qvR=4ltngXQcoUK&K}h;i<9r`3EX z8a_T1{s6&)Qv2x!A=|o~=gR#ylf91O$o2iTbDH__b5O}@^^LDvtc?{(;&7i3q-BUS zSLYF}8+F^oBdhE8={2D{He(h|unl`X{hiMU)%#ujDr(HT!*+-#@E65_FJN7rrNM$B z8s#Al0vq+;EOnl?2A8cxy#S_nOkg3}IA>0IeedKDF`M9l*8+{2H7AZGhViaNh7%h> zJ0BpAwpnRuV07-sbJ*v}`OLxulgcTn#r*t|0tC5^xtaFuHsS|0`Fd;YW*eade5*rc z<vEt~*DuUVKAf?uyTaWt)y}f4dkU3m9Z=WtU+mtRvNnz3G!7rL{42}$AEWmT{bIDX zOByDNm4B*wh+mjpT4N<ChxU1d3pFHG>|SAXC8ht%(s$p`(XogaYGymTW*dmB+t5`< zbsv>va-1)x={tDH&$CxB<m^ie?0vZLH7m1bNjg4LdcKG*u<`DU{zpr=r8YOzrM`v; zo$Tox#5NFX@)r<5`}q*`d<?G0aaZjL2e>~Fja0r6_zEXT1Ct23IFt6M-`&dEXP+Kj z4xmwwTjd=~Y`7WpRss&R-g0#EJh&Ctf!^*KH~=2ZxWf~pf?@OAuqRpaMjhh5CjOp6 zJFtB=d&%z*2QlW={*x{-!I*fg8fz8(ACh4Ab)OtK4HlcmR8Ho<s%#0E7dpB}b;XRn zCbtD4N9C$%%$Jj;yNQt8JdE};Y@r?P-2UWgQnjkTc`;%RX*%smY!+H!PQSIk5M!Qb zI!eo4GiY;K5pv`d;fzT)>|F_7x9>mDC5K-7rE4*QCe0?KIKreFIowa9Gf&RwR|X;V z0@}eMOGF3s$_3hi7h{%@8KoVBj;$@#?WZFZQ}3)ki#xWJxIe8R^Fkn8Q?TZqxnY%{ zp2)9k*q`pr6rOuZIOXT{e(XLDFk!}oqW=v3_jTeXUd}!S;{z9tJ|2M*LrlWEa&dXO zHB<xTJNy=#-YfN3Om`K7qgz<FCRr)MhG9E3w)Ctm*SYTejnniW(E=abM=o=O9m$!R zM61S(pzNpgn)IEjeMjU|b7|}cNh8&io;N+JFDuf?eG_)rbYsfdyVdBo&juaH(HIf+ z5-Rc5jnKHIT4(?n-tt|T0LFCIm(|550&+q}ar5W}?|Q$ACPRRLZCGNIhx;$d{pX_6 zjNPAg;Pn@&-PzVmLrFW~#Jdzu41`OsDk8eGSPmgB9iJ)a9(|dRUoMWH|ByL98Yg*Z z*{r(ZT0TOs?fPh*f5e~k{1wfGVb~m=M{+Rg@Y)M{^eFba6DMHGeyNyzODq(a-qm>+ zB#z9$PYV-<p|^$vIUg*|+3yr>Y<xKk(LUPK)H&Ez_0R3*Fp3*~3C(X<2vAbixW_gA zD*w65{ytg95YF3wv<MvnhN2@moh?(p**n&at$ckXD#MYC1mD+HQf45^3EvRn#hUTx zSa;;~-8UcMKGXcAJ^L#)B4>Zzee-L~a?n3n&d<LQrMe{tA#8i~;onZlQ0XS@FfF|! z@hj^8JkuW&xF_P{GqC#T-k10XV*6k503k#;q4Il*Bh8;O^s8h2({F_3FJBHNZn%Gg z=D&vfD>DA{SE!|9u>#`QD+v4}iT-Id2@L4yt-jh(IKh8GfL|`clNb=EGMxhRAFS@@ zNJ)+m#6F_=QkNwEEjzwqUk>GR&@2A47Xa~uV&K1)1uS<xP5)zCF?qkfTmN?H!U+jr z?HA|!Zv2umf3YSX@q}T&c6t6f&S(Etmhc%uf%tx;+4)Bb`zM;Z-zESY`h1aH{ohVW z_ymZrT<`(a{}QsF+4xsq2?t>U@g071gXQ1S2a6VnFN5Uqzmz56gl3fZntZ|eM;i8L z5%;_Xh!dLZ^1D6#{5L4Z%DqB~Z}H1_Pk$oyKiRJPBNTC-JQMm0@%ZH;814gwd0XvX z9qnJy{C}_Sr{4&F1jNCnO{e_V{Eq?>7sMPn{jar&93YNoa39`3A;{0a@sR=&*G$y@ z`rjT&IR-$SN0Q54zo5fkekDo=B<>ZqUg^JP$NwG2pE>tmqWgcx@h@fVhlu@ubR69q zX}-@7&dy|)Oa^vU@7<@9iY4q#l{J^DV<-CEL6_@815d#Qda5y#tc7dP4M4zyM|$bS zq5_m2^gwaAH{Q7=H^DR5kaosZ;Ur@Fxea}tp=LYMW1cG?ezCW+uR?ulFRc^@0#x$d zu%$>0l$3B>1IJVBGyc1WXWG(7a%#5%qp2z0B?#9cX=hZtVm{nk8M}iL+_GRwF(hI7 zTgm!E*&6hrvFo+J_ZE@~=n_1=KS6TRlw!`rQe(1Oq7oq{VCF%M+Qtk@x99BKS3RT0 zw<)w?Sc{tONwRXPDPR2~Z02uMI`_~0mR8GXAof(?Kk0kQW-*hTr{IvDTfBeumT-d0 zMfBE{!O`9yM3TpL-rp%Loep>EeXv^Pq_4G^2$4P`=Px$nu1z5EXx?rd`J8t(4rBdl z+ui=+p_G@EC`tKt8H`Uhok()+Yyg8SwBhj<Zq*uSR!QfwzfEML=<h7g6XlonX>1#f z-|bePK|V8?XoF$XTmdHzxRH;~_AOV4rUG#?c0R4EU!2Icx;tj%o(S`DC-})T{Hsaa zwXa9s+ejs`KGn%zyq!H03Be#-;qZ$=v7a;u7!7Jw9FZShgTKa97Iu!$Qg3S0w7{;P z9^mlqG%4jTXma)y!vpsl?0WS!+!F*SNj<3wWGUN^!bg4AR|6(Ej&ZvE<A<v5=iwSb z0aYqp>tzoLO@{9;#G6+~T6I3~Y`0>R`7gEf7h9=a#ip6wm~=U0raL{dk^-g4!RaDy zoF`ovv9>1baRfi8qy}g<(rWl4-5Z@C+#u|5jZX8`wCBZ^n5l}Ft-rAya;|8Sc}HHD z1ePBy0r3lvG+<bci(t@{yw-&u;RqIu9GhJA>r7=fka@eFW;gzO7pUM`BuGa{Me?vQ z6EVbx1s|f8AxDN<YntH?FEKg|wbm8d@H{>T0w}T68HavBlVz1#!=H{u5!FvA8RZ}~ zyK!RR7(GLI_&e9Rgnkf1*xko{lPg<|IL}T49D~0g>dy*73DbFNt;8^2*g@$@D{AJ1 z6yO_hURQ`e`xS>4ST0@VUW&|b#<{`*RMOPbm*>DH86?3U1*<EE+&-J#h8mb~?i|P8 z`bGO7s)8pa<DN;8BJea)w3p9B-JR|(82v5rWZ!T6j)X6$GwF<pgIX;u(2|hgHlt@} z>`yQQUe-#ZQtoerLHHIWSiN&-AL@L#M`K+M9aNNpo{{$3TQGXe_n8>pGtvHg+H#bF zBjCa6ejY_n8t_L?Eni6coDsCoAAB`lx*Ya16aH#RbAW1bfx*0}@8lG~lA?XmWzU!p zod<>>fH*6lY{4&9;(iGThWU5edng?mnhgF(k|k5}OeEaPui`W0lBrbv&U18k22|UU ze|F}#88HHaDzNRGF+rGs2#o&K*L?Y}R{zuK0D2v5{z^6aB@{h_34yG(=yLwZFv)R) zuWV*BRL;ozi`{$(1gjT(vWyy5SQ-%2m@!2VaF`18?JczjHO1btc94<Wi0I^7;LII_ zxKdZ2IIc?B#BiHaV6#@fE>trcer}Xbn<VN>#NOXB5qVGR5&zce*3$g7r*|o0?DnjR z(|Wp8G@Ym$17Q16Vahpk3q&z???FB@D>!(jX6IX7U?V8F8VdxCm)m*+E!kgsY+iFr zl$l*-HeyyF&Fw#Gwy*Dh$S`mTZN8!0vQhe%tT~VN=@y_RR;B?ipq_y<AcMcTwBP%4 z?vD72qvpa#Ta7VRvX0Zk^g3Zm%AFcr%X44_J~Z{};}!;89<!x7ff*dlpdyTDwB=h3 zwar&P<kVRt2vi)_7#v6Xs6ZUDTX~hP3vN$U<!^|QDJy+qXiJffA$odj*f30bIK(RC z{a_(7sS!%!zNs62I13#%sJk*V{RP=y8mMgwR+h!2KlU5G%3*<3f6DV&K=HMa9vslU zf%^Brg6X(xy6n@AWS2UYrEc>cec;*hbD3XPvJEm%;2+)1;WP8j<}-_`k`h|slRIe^ zK{mZ3%hEK%`Se=;z3_f%uAu)byZvYiwE3%5j<&MHBZX!f3W7gm?w8W8iaM&-WY|%% zl=cj0k0%tKK<*Q3$3514X9I-N$NCoHU90Vp*;;H}{9B<Fnj48G2}iAMtO08!lU&)G zE4ej|gPQ*S0C3QFkr;9_g#I*kLiPZ<HV<!GQ-t&i?>EIelS*E$p4nKhNSfUvkd-!P ztyqnpi9aQIp8tfyc;K$GrfI+G+E)Pueg9R^1crSE=J!yy31)Z2C&sLrnRz7JID#i} z@FTlYjNOETPQ&%^_$3!XZuHiRty>PVXBy`h=lMLECpdDfg=r@!J$(zDU?c@_L*~$J z7sqJD{2iHK$N)YQVv#tK=s3K}<<E=7qd7{Bp;tmDUD~eXkK2y6E4t3qdv{yJ$gqK9 zQ@HxQ&av^u1(~k?Ov42J!Mv|6WahZOu!_~ViSbvn{@UL!AQjWPtyx)XEMLajop|1< zy+cn<NgwxG{UIA_$=C;vmi&Ij64YMifD(?Q4>dvwlN>crW26@8Qf|We*nSR(W2qsh zCTmjTB2D%amuZK5kyMSI6@RX=TND(|nqdm<^m1|5-xqa65}T;17}rz)M`zv;VucdF z&F_)96l*8ySOc7jCH<IzY^H2D-7hJ3HvP{T%~iQ|a-f{OF}K&aZ=E>Ib}VJFw!Upa zPMXILIcKiT)Zqy|K~(LHeS7XOAEuWcY@Xl@`upXtUy4~c*k4%bN(2~~B^!~8tsxr2 zlP>z!3pI8+phl5@V3gUYYFrc;pk^9Gre;>FD-#SG@VY{FRg%PYdl9J}B&sTUC`IB5 zudxmQ^$iAvtw7L;(Sb!Q(1Dd}!oZ{5m8{YAgk3Ps6}%R)@hJjT#`K5r+WFWFYVaZ3 zyM#_}ub&QjY)p$&iu)2VYZvt^dz0G@2`Z~=?MEGSBE_W9=6h45eSt0$X!L7oH*b%O z6oiTy6&x&QHt5Be-2|Q&Tq>|b-)qxi(wV>mL+DzKG>mksi(7M>XV1;@m}ZND%lUC7 zpQDuXMnjFxr|T;3=c4#bYE0YNyZGmq>4>jugs}OMJYbx#x3aGcdC?2{u|D3U^=7G9 zB?NWq*mUSevwxOANmu|1gp<4X4N8VGi1S1ocEpT;l-x$EIof<$sHtBU$-fV`7Ne|0 zDi^96d@P+#QJX2O)=x${lDkO6I*8T0=;WCc-dE9tlCPL=!wcj0;qk13CsX6<ZspY% z=7sdW&Q=}9Qk*)zeEn(b3EDjI>G2zs6=(}P1+_YhUgi?fYhQC$B^GRsZ7%4n1gM2G ztwTqaEP6XiM4!0~l9$v^98yHGcPWqQBi1dJ8eDz(5Y_YnLertEYnJg5nvU|T{ZOPO za<i(LTkd2@Kfa;6DGnbrg~}>ip|KYFp3!!n3aQi<rb5ghd(x$r+F2oXtx+~0Gq;k% z7BRpnAgi8Rwtm2K7>nJr;v*EUu`6paKTn*hb@W+RS3}d@*5GE}Y~FU;dEFHn_)1oR z?U;34QU0sZ;_JRxmdtVxd@<NhX7(?wr@JahW)1pCQ=chCF`yJlZ#4j=7*H#KoS<yF zX{XKmaox$*mx-l<M*t9oQhR52<r7@;^1*n?JEd|F>t|Gez#bly0d;{qbZZ47UL7+h zPU})#A(T5e7*3Z`Tk=KqFm_Gy9t=aFUTekv4saNKLBUR*{cag?k41K#bA|oMFn!ya zN!6er#$0R26Up!V!$HpV%_Ww6<@As`i0d69i2Zb7{G2$~UTj6s1IahTEd}w82T|&! zM_K1n#ZS-cr}hWKib7y5pglF;pxv|YjhU>EujS<|1<58H!R*AFibqdr2Y0l6nMqwI zOnM^$9!Goceb7?Q^zc_Nipmo8+KLR}{kNC|+7UTU3kwz}W%^;Gu*y}w&^?<;9i&0X zu*T7Bpisa=<XAlPRpoB0RkvB$yyc*-Mu_b&tC&gri>`%^n1&DZ?-rKVKW}N?*E-F# z8uaA9%D|eOQjJo@zcTg09l(JyUiidyrVN3VjEfIZ1sre_hQlfrY!h9kP9EkDr;x$* zY@X*P>3kOnOdcG>t-M{nUj8&EYgKai-uJbVG5k@}66xWYZGOx&^KOd@5}}jB?E~Nh z`1Cr)$7ZU;yKh=`9;>N4>~Jm>;0a~v$4->U(s4}O<_;f4lrqWim&rPg=OWTA+U3RP zT3M>+HcP)JKBdN-j30o98uXUisD`iRL7yO8f(oSr6l4XdWOz=7w)ywv+4h`~u#!e# zpyR_&;X<=Ihvash7so<kjt_UdsRMcLj(>rU6dFctYzI_ej7JOzt$w4h*o`{w-HJX+ zW03>Ter_)YV?yaa9?VI^_0~)pK8Sf0;CgsSYq5Xb_3h^n;iGT#6y8M4CwVbS3H+E2 zcB5ADB%I6Hg_DA*afGe{>x*C&Y}@Jj+BFv(lLuo=izUbGk2&YR?wMB|%PfZ|N}wHi zYwR+tM33=RX(ASFhN#NepxYbt-CDk<Re`KEds11YUpI#rE*=sxu#$WV_$|BqQO>1Q z%K0;Pfl5{!Mld7#Wx|@;NaRFd!02kE49)PyK~Y3}+v@TdKX*Pn&XuhkQRV7b)%}jF zzRu(HG6$UT=(GieRIA<db#=XwTYcad>#$o^Hl7q=GRhSP)ssMJGj)}n>kP8Cw3>Fu z(!FqHoX7A>ArB<czOhzqKcT4zt=a4;(Dj|EIXyQ2R8d5K3V*d`b9#BsZoN<hr~#WY zTV0PXByPDt@ld5m&fN!P3nME!wJ+c)$Y2YBt-e`9a4jL-Wb(S5UDrVRdI128B?Vsb zrtsQ+Qju;{)wbT_(tkaoo}vN~UYvec?gZufR7d66Ye(G_ryORw0!<}8J=H0|C7%tE z6?&R0R=NM=Zc$&bu5a&F8%qsi=jo{ElEY`U6M)nRkBhJ&x9`{OHZ9T6H>&7z!D#61 z;*Xe+9iVv;^N14UnTh&;n@(uf6i(oGW#U9d7Pn9tkfZEA8sUWZ7Y|@Adg`uq(n~mu z>-DfPDceSfQ<c9}g-^|&ra9VTSa@H`Gi*%a&64EHvQ>Fa_sx$Y@d3xUt5Jdn?d%7l zxpjDV`25E90W`+9p!0!H)ycAN;Qb2glJ+nqn;yrO`JS2jI~%POfTCRj0yN5PZyVbv zben9xKRj%@2#0AD^9X2a&2#q1ouG6~(j<kTf`bir26kvXwDY1xf30z^Sq2tF2!s>) z$ZCv~9bDemHG8A`@MJiEaGaJSa(L$QsCAkNTzPKV*H#;jgXm%Y9q&dHrA}D?fJ|=5 zsO?JW@c@~XuC6QqB;9B+J7{6sb9d4X@#lWhm1!l-IPToGW?>ZXVt8C|DVCxoXWLT{ z6bzU%egyo#P(L3~shAUGBUF?pd;+ZPzFNAZn{W`;(PkTKw+rlwRmHnN(hb!@(_X!l zVRh%0d5dY$h!kYtqKyI0;-p;)@BXD$Ckp46v9FKvgU}P1D1gkek`d<eynCThb2P)A zKZDiQmBEuD10$N$v!y@X9Ytt&RUw~BhmcQB+V6O($1K0;%6(;Pff&hlQaw#3I3=am zKgqPG;mf4w%L2}f^G1tT5)+Y%lZHlub4|O<j7YpA-5R_|CC=BjjakJoUf1sFq)CDF zjQiob%u3jmP<rlQ8w#NQ3QbaLtbJV7os`<ynr<%H?1~R3*zZDY;v*oITB`+vafU_9 z>LE{b?M8&MyY5(wv56}q-;+jQhYm(cUHDzNDR&Qu;2Zhn_bAV#6=WqMzPx_oCTxf` zW`#JmXt$tWpo>8FVB!-zUG?Rtj}4`LxbRAUwG19tq2B-5eG}yh8Rzy3GRuCgd&*j+ zNHe`WAFjbg^!(+C<ytGG4|uZXHRm_F$jmzh%0It$%DHECU%&0aY&t!qzbLT=jU9NJ z`_9JR2m0Ckrug>}nhu=A(Va@ov4lDa&PmcG?^&z&?0EgV1Str%I{D0p@630Gz*Zs- zdVQ8`hR1sVOwj7eeR|1+BM_I6=-ScCwo*E5Z!9`2UM<V$&lZ2S5uM2z$jpWKP<)l4 ztNX!ktB2Ccz;9?_sqzN7m;@Q1A6G(E;2=SE$-R@$4g_n9(G-7LtTH{_3-cwDmLeu4 z<6QHtTV-jv!uz$xCs+03pb*~Vhj!ycYNlllf^}{E`+Fg>05Od0@LUafLxW!BTw&V{ zpw9M-)8f754I~VcAFU!#roj5Bg&0Hc`g$Dj1)rmip(E4XNfwC1((rbrNrLlyn2OI< z*8_GLo-#X@<cS*1c%J3vy590(6u`<yhHotzLUB5%lZd=?dKfHHETa^UHm|hAfXY9k zRQ%ssZ)p**X~V377vSt9RHHVnHns%<OBHuEL=`1@$uJvK@AJxDzBuKJ`7NQYRaGcl z!=r~c#-vgn$7L$ca>w_M+{xUxRPECXc#=)7!08YT^uS}_j>uqXgl<V&4{66pp!K&{ zv`RKLu|$y%tEgIdsuyq$s0xkeSCU+qZz6YnHYTuGZOtMQZ%;E|RHJ7G(UlcESe#wV zn=f9<*04Q!s_r`8zvKYapBR}LJ|12*YwG||7JQ4lW9u_5JN4cKK*0=3$|PB(lFy`& z<vi`$I;N6~%MEq>#lFwJO0WhSerjjhfeP=gpo$G24&tQU0P<y<@3_76<Xub;{H9gk z)o$QZC<$&2YP$N<Fu<-nLn&nm+k{Sv2116@#aY=NIs5y&07=Ig=eXI8a?Cy}q;GD8 zt0CSiI3lH2)LoWD^Hq@J`Wc$-?wgqy5Mq6pl?!j`Y`}y2GAmZCQd>{W)E$SzEWUUW zr|Qzf_6B(#Y-w655;4fG3vJAO<C#hj3F(!nuKhmND_eiR?Jf*LFBCl9S%4TwyP7LH z%4KS)+Yh@OszRR}`)h6khpZZ?%B9@=8z_EL0iTWR(KtIMej4$QWJYd*7EA46&z5Y% z6Q=CvYX!1GvsrshJKQNd0cX1MR6LKjOkT=;^HrtOnw2pB;TU#{VJuYdlm~c3fJc-< z#~cqRC^sLQ<coTpd0c(2wZj(ULS_<O@lZzzQVG^kz54g^-G-?ey=o1mBKt!Yv)bc3 z+#S+O{Sop0^P@#=8uVv4MU%3f-7@5#Dl&qw<Gx&6sKy_<n=W;!6OJcfZ;p!AmUfgb z<oXwMmE97MwdJQo8R^fuZQHzuv&c!;Kzc7h@~14rTmz6y=&miuyfVc8?P>T!VBG1L zfGoU<n5YMaS}qkB6r0veD^OE-HZ^g0a$TI#=@IYSKLdD3odbNlJAZB0RdR){LMqV3 z$sU!XTe8UqsJD~3-o32_HTXi6Q%O!Yw99NMXIRKthzbH?UWrGYEjhz2EDK%yJNBro z%6jS6I?r_Sgkc3L`Sz5h{MHpw(3z9XtSeMkq+8Nc8z+>0mW6CxW?+B28mfJ~Gw2UI z_9i}rUqE$gd=PdB<qr)&PuJ0-qs$jd?+FTVfgVm26sTOufOKVU>1v=xXNWC%@fcV2 z-pr)ou<F{NUov9O7gusPP2RkrDC*X!7o|&Rc;L-lBhtIFEa<HY*M$CFd;Fl6a0n_z z+S6vf3I3hN4r~f<Qa>9wQOw^Q;5ls0d(GA)e@2m&UWMbhd<~<B%9w!~+o|i_Al~oU z(#8&@_izC!5tVIf@l5LVR@|H&v$|AIC4l?nDL@qq<r{isw-!l08U%sW10pq(?&pq6 zpL)+(=U-|KIfry(@A4-DP-$3imJ1D{19&sAQC<FY72s@x7S>CtL-|`Q8!f5vv=OMV z2&JJUx|%AHE;lWKvG}~LM=KP3>vTTiL|`G-s<Tirq4F9{$!~W}0Prm4+Sq30s9n>8 zT|2(nB|$@9R+-xBs(J6vJ$fIy*vgbkC_(|f2XL0vl^7e%NrB>BQj6RVivMtidbeIR zZM}kT&5>9Sn&$V1$E3nJ_ctJPa+UpDd@0fcFZ9>!XY#*r8pdTFHpbLx!&zM4&XtU5 zZ<WH=M=f=)%c7KQtkZ<&20-37g0p1VASvM-0kiX|!&|$WnN$8`-NiC^H5|H`4z>Dn zFb8=CQ1rXrH57K%mAfNk7E@om8nN0+d{rQhTz6ywQC>{tfur@>fI#*ryf37u`lQBi z9pxbR*4kWCm$iMLyJWE+c44-1i&ZLSM_{dwXLnI(;PYpfV2zQGgBIrk_x)FK#@YRX zxO~at)*}{&QPI*cUgmI!ZNv6SmTir!t=FVZ7u0H^OK9tH=N?L<w&j%aQb0{4%(ypK zMS_vpO<yp?nzD-}?0mZ>ayvQGBeD=?POC7k2Y>iCdNIVSR<#Z)$<UqU{U*|4!}0Q$ z(3LY6=9er>Qw5gJi1HIkX65(*yGF_kLFv*x@p|OmY~V(GJMJ7dbD>;$uRZ9=of+G< zw=vmNG6^NdZWnSbG#%wqEjE$YJ=SK91r3jAz8o&q$Oe82SN*IWS-}F|o;*F_2Jw%{ z0yf@O<BTtJ_=f3=h`^Y&>Wi)VF>)9`&dJ~F=7a&DV~SFG&uZEk0OpsACVusY-IhaP z_bR=Zer3eZwiFMB*hyb|0sdjY3qDKhXLp32P1#=TCcJM#u>2cW0F*RQBpR?LJ@ccl zgE5q*7=F~YfFBOLL*(n<)_Ru}zz~8(0={5oX>ss*DXS<7HQqV*VW1`AO&^i}R{N@g zxdx+UM9z{qkH8pMH${I?P}l+RZIdGBmyAXQ0Z>$uJhfOKRUcmhjx9H=h)dy&g!e|l zz6zw%e(xL`gSk|D4bSSLN?;5X_oP3hi~)sioT$70OV0|dI87D|anQGW7tG8-4nC(8 z4Cp;MV}qWWaDsC&rp@pCGjt<nFqbj!6;#NWfCa{2d`<XAxpN+PFKtexe{ksUX|jVV z5XO(hp`<+pl-nk(2S%jMid(fNfYe=FA94TwkN+TiHkiv;I+Y5wWknS7^<u#7GkOB{ z0FS}}PvyrCe<9<7DDP5Xv;fTY%^G+fF`cS0cg{!{Y3g3UQp%Vj8&Bbd9Ab~=G$t}t zEs0wb{5^Rt&(VKCZ`E&)ygE2;FAMHi@*f}td28Mo{iy#jf_XA)<sbhL{ZQi4%@MWP zLrOX^q!~<SS{WtOaEspywc;(zP}#^m1)TEJ{O8s|$`(?&7nZjjc+XHODS#Xk90S95 z&qyl#5S_x|Xqbd+6E<XUyqiD4n~5Dt{8)+pcl5a><W3_esNEN7ud~OO|D}9QCsl@g z%Q%hbj6`Yw>m0bV)=&_0k6D^KS|P^yni!dKpI5*6t&$K<=tLLX`#xK`Qr*;Z;zUs@ zez!nzl-DUd;7q*!`=rR>yRWj$XR9)kI9aa|J}olU_~2sm=(kFwU3F^3VzRLckDmgx zLI2FRpA{8~I`YEIs0^Wd3g+2<43^PKCIxr|PquwSr@LaZh>f#~Eej#q`M`Z%kcKrL zoe}fzrO8eB3%ErDb#y))-y=Dm@Y>ikrtWc3QFj?0GS6kX==APK3d~Ko%<hjB1E9KX z>ZU5^z&|h*`F|pZvMl(noSh9}C6qe+Pe7GHxVO1tu`w`;XwuhozCm!`^_ekfCZ;r? z@_SVG94qK^y!E`a|4p~qu&(x6k+Q#TxKWI&&RJT>O*jtB<nSmRKpxI0h0>k><b(S& z6u!3TI_JN}SN>eP`iGO9Er@{=sH10U@>{<Rt^b$o|KAq>7eW4q!T<l|V*A}cae%%6 z2gvvb4luqfnD1{l`=?k7XQM}>5DX=%_ePj2th1^HjPl!`nHu-Ynvy}kf2jvmmfTsG zT}_~Q^|86sDOAj~!iaD!x~u!{NMRiPNN$;d^_WrmbKNjye{J<k0NdyO4i%9sUjOcV zW~1bi(E|BTq;Sag&4L0Z@_wsYHZV={)}!+kQnOcdrv@S1ym9uMZH^AgA_A|x)*`$i zUb)?Jfk+gNor4q{0kHzYOF#6Yk2nAnQu+l79oz9v`45;=u7#`dsxlV}gYYiPo=z+I zcce%N!fprMM(6<2&v|!W1%;XG>CP!Vir22Gvd!)dig(z}BjGf1KJe41DD=g3H6v(a zsSqv%t(#@y)dpd*F<b&5uuHXHnm3>M@+JOLpqf6cVaBhQJ8eaL1qF5TN4a?Ntbt#C z*vCft593k%`yr})W}{R@t>`V}zgwZ3@Ho~{BxX3C!}6!ddlt|7=4Iwlc*c@AdKp0r z*mEsU&t+TfD}9Ib@kb=CHTH_mhik5NGV@moFH<~q6HWr<d~=ScTDQ*TN!a)ww4(d^ z8CtQi=9Sp*bSN#&hqtYWazwthm;l}wb@+=6(}()VFBk+#NW<JuP>A((3N0C3S0e4l z%@7#}&Z^3(N@?vdB~@KtXH?ol5)=!$)91NfoC(K0r=J0h1%puozbAqJMKM280&^VK zR2kblUF$N{#u2s_Q|B}L>`fYmroz>P-eX|6>P2j7tMlv72`9V+8vSBY-w%(T0qV|_ zTg6#@s-<m>7`Q`ZR`ha7b_nOULP<@4A~*0rHvaTLuz1Up0vxCs1CD8<zpl@{C<W&F zDa!+Mb?7|N@Tedd@mn&=&+4;`xqEihA_e}ppT*?_GyENd2gC)>Ujmee#kfE6F^G+l zToFmeW7Qd##&?}>r<@9&T^C1*U`7V50+;E?_E6GcNVju<p2evEUub)!6zZlICklw= z9gd2X0SCOXad;3uiU|PM@W4BqS*`JCtAiL+>{CBD$Ta+L5Po6yBBAay{3qbnY{Oi< zYXEp|bb+^W_ua##eYf6#j&Y`X$w4!b9y5wk*QQ6-DjZObeh1<Xv>OcP(QE*C4+5{J z_+jLph$m=+Vq6I8=kH(N%zY}T*ZZAw<1cp$GyD`_s#p|R<RC+$*BDr{QYQcqP!MQ= z88voly0ek5(EWs=<Q%f+kNh9~{-?_O@BhPb-TjV2O8r}Jg5D(n{ICTV*Rfa9xzW&l zWWjOW8)$!jCLY2bn2I=|B@k`QiV*H0Bl~-QJ=%W)EDl=tR}q`$HHR#)&%zE`Dv*TA zyf{Z{;e<UP7QW^kem@q*5s5-)0(c3T$z2Mm-+3F+(Y4&*GOElAFc=f79OSud)zw>a zC}>whiJsVxKPN@qpZKyU@Y{{Q1t7sn^gqFIKB$1vexOz2kKF?IoO|yY$$!)8KfC+S zhcobI`3q<F&2o!=fZ1+90WtZFb$@8v|H4ZC>S&+g4ae_R|AAX{p8+Dv8dr4x#}%oc z;eEd(yYzFg2{R&1@E`RZP)*qYp(AmZ>Wv?vj=^gnDwqBrdv6&Q<=TY}yT#bZHc?Rl zQ4v8Y0Rd?g5s_3<QVD60W{APDP+BRGRHRF!+l_>TAl-vfLwC&#FyFcd_w)FaxWDf` zj_=R=PaW^NuC>;+;#}v_-AeHj`9^*sLqT=;y<maKkkV);WXp_Fy*EPoACZ?o+b}>c zvSf?n+x6Xjagjtp(Y1;Am4#;M(Hf4@)dv}_h1>O#Q-eKYgTvExR5hcEbY6-)+Jd=? zpirOERDId-eD#q$mpQAR@Xr<x{_B^(ZP%F;MfI<ifAn)bp4&Hj2XM^AO-$yU?@<%E z(={3M^0ilC8tJ)IrG&7*`f@4|tmQvYc+tPXSJG~QSquNz-2eWE4<xF<%ZTzuxnO6G zi1v$xMmv@7=_Z}!>$>;MIHWU3SU|LPLUp||tgnJvVO{7&!FYPE(}IXavEc3?sz4Hn zYWN|n@juhN#>SXxt37_t6hx?HmPOAtk?ecEP|Ue*MZxajFmHGLbjx935*RTze-9K} zn85+8X1eN>SKT4zRr^VGeILnlt;a+N9(jZBbNf9Q;>!QrnR={nqDU)tahJ7HbkROf z0vN=X5F2};7QG`NA9Z+TtcOakOkYB;mAF%~mM_)InPW%azeddeTY4^tV)XU~x{EB~ zF0MZc0ru5V04mUa=9Y~NQn)-6A2oXwOtmma@nAzn%ZqtKuU&+*iaLt&5un45K!+vs zjGq8*&E)qBSE5$|9OmhWrH|N}R=lKv)If2M@iUBm6$m2KwvJ0`HFn+?NwpVsB`Q0^ z#j&|@cfW_)|9#s)lPee%CopqDQ>*8v3Q5f!)*fON-#k(yX;$q?N2nztR~#p>7WfXw zsGxaMrDgy#ks;bYdc~esqfc%fBIT`D*5&dwT=(%6oSPZxOIOg*VNEHzDjT_KtFfH= zJY6cRZFgY|0l=(0?)Ao(>!1e9)#qwI|GBy7_N&`WfcDNCiQCNB`CN_epcpcW5)!`Z zy`pd?^Zlii!YMseKCnoO)(aY`r{rS$t)2T8|M$CsEm)GV@2__2UlN+~Y$k*ssG_$u zm=tPyUkMAwd#3qk+DkTk2W63W*tzV=cSb(^0DtcnE{*J0tehcl(M=qQQCZ1e646B* z%8O9%=0ZC9noW;_36wl}eiqOqX|W-mC{^v)n%QAmmMBp`>ATJ)zI1=Ms9&FBku;H6 zP<FHPb<upiw*Jb@^Q}Xz>`wH7P&)oCiDNSbgb=RcI7_<4y~3QyIRl@9DX~851ZYga zJb`8xD;87(6M_i8ySk+5ja}#D0y$LAYu?is*M6r_uTk<`gqbL2jsft1mD=`lvTIA- z>iu6SVir&CRO?bJ;g?}jEGeroD<7;DqYA_o&TLO%hBT<`rZ9iZv0WEh#qqare|Wvz z-$+{6ZORg?YY!-k@Rn2JKNR~gI}WViQ*-qvm_n-38Qc$i#zpW`ZxcIlxI0Gkf?4PL zo~KE>0+}tUbQ}y<g>96(I7~{fG(3ER@39RTkBOs+-N&NvU{E?*SOBVb*XbPVp7R<i zy7PhQGNMq}$TDtt7-akT@2A)Ku&r{uilSlWt$Z{r>A}~wZ{2oX3&f<Hregt8w?{BX zp+{x!UeSYnI_~<bq9!-%vg^1Tm-1rtFmn9WyA$9fzsYYBkR?aBHpV>pV(Ib4F+s(3 z1R@O{5jAj!Fp!RliK^a0#j0CmtLQh&@p(!fPIQf5GSC6MvWl?iVD-vOjNbq-*mwu2 zYH(Q;PV&*~m*9tM<<_9~^R&J1$l;xf7ukv(zhH<JSeMCAR$a?{!<g2~RI%*}Mh=b) zBE!WUPBFW=Nft*+4ITU#o>PvL&JNEwG4p^_b(bSGB{E8q_0gIw{ayJ=Us{@vPkf#t z1?3p2(vVQ8WaB84+<9F=sqr?Mz|>cfea_txTwFXJy$-!h!8*=~D=hOv_i1!o&+53Z zeO7l#T|xlwSGnsaW{2N>n+2ro&4-dag`Md+V@ZwK;~e=YgYlp>+2OgaajWveY2RmH zv*>N>JGp^IWU<2_z$a$ymHVT~+BVL?d~wuC-o;H5ex^t_CQrJn8HgWi>~VmxBga${ ztC<dje7i77Tl=B@&mOE^)V0O=<QZi(%$#%p+LLETIK3m*O(FJUxcfT3-?NrO{$tA_ z)<24d8LWppaVkX-I-H$37C`kfuOF70>shMndP^%1pPn?(5##r?BtGJm>gZp%%()4g zNcvY#z65-5snCzGZ}Sba%;S4u6eNOB=j4qBcfSE>g`pL$J^-CwYI)nd*SfZ+c+lW4 z*u(@j)hwkHThJJ9MY0*Hu4q-$IacV<Dc~H{CT3Z<Rv%hJ12wd~fi_ykqnZ^10}7%( zjK0Er=fY%eE(2WpYLt?KCu%q}Ua$Fq7Njp9-PkmJ8LbNTEL$%*=eam4`^q_}vGl_~ zFqM3Wle#ZHuy2JoQ)aQFHqASVN63J`cH&8K$MIghns$Btrg_ftCO4O=l}pQ4Z^q+` z<|_~EWbhAWUfku@A{o63WGTMB-453!TB@A_qV3-^Izb!JQ%5Pkvox+#VD{<k2fyW; z?4~E!O*r0e=&^r4-~<KnQ<QRjE`6m<#0a5De@a(f8b?EKAgFn;0(3n3bAwT~7B6P( zmo8@E{+w+e@RjGx1m2xfN0o9uFLhhcLZ_G4NrgW?^LZiYgEMq!`zb+zPO~VA{!X0E zr{3|r*2AN|gN#>84l$rtZa9mLI(Ce6R+MRe;>2v(a`cq+l}pN0oZ-nKy905S2J(V- z9c+iSZeyG#W|?g!_XuSfY1xb(8nr+0QkNw&)A@Y>9x6@o%c|-n+C?)xUyK{yNIFNX zB9M>{fQIzgbI0xGR~L(u4L#szG#o(RjwVjg(-=KivA2d2$Kxa<%=?M8fxIgk_5m-@ zniVXLlB;N87LRTLOC@6=`Pl<pJ@%Oao`#CN<g{mreP~T|_~%y@Wuaf~!gM?&y(DSQ z>Z*Q72Bc4RSNc)nbgqI<ag^(rNxrj{kE;kYEJPHRd@b`DXp&VI72xYO56D~ZN{%uA zL~N{ja>Y-=d1%bfX+8)+A~%n(?G-*9Nk>q2UN6g3s63aP5}wQtR9Q#n29+{CI&_zx z@>*>e%*W|^Pq|D-wF!N%^$m9gikzhd7(^5{-El#1!e2|A7$bYX^yA^~!B<7!fmygT z&hJRi7-D4aDU`fJeRcg%{K6DXZlAT9#&S!5!c%HrF~0URz|kzWs`?a86*09heZKQi zKVG{4px(?68S<F<I-Oz`umC2BG0QF1t8<x-Z<qELrEFoYS{QAPX_nV+Rz%rEZ2KB; z!gcATpuK6h-SwzEmoILksZz%a#CC@n)lw~jC-n=Y0hm`*2Q{Nz5znkDf}z5;!O!Oz zb$p9!Sx}a7t7%$?X)Tj}pPOpUp!h4bn=!+=kTtiA+YUAeAtlflH{k=ECg#Jmn7pUL z9x?7XSG<a4mdxF))m~F2no|X7@-;hZ%!uBwYY6atJSA5;EqO22g;m4Qp)1Wvi+84r zjKuCHPGlQtIafa(#TSfQ9n-J!k)arwF5zW+W%yvRl|Gv?@UPwq9{XZ4+A-AM-6n9i zRXjg8;L`d?mBRCN0mXH0XGl2nNqc_z^h}`yBdXdRHLUX;)Ax@fXx64N4~90L`eXN; zb4&<$q_^m`2SZTgvcTfo9^di3Vsq+rHXRJ#@Dk2+2XT=+CsLJ`s{8`ZR5;U`znZFy zoM=M>Ctx5u$0sn`myT>+doX2EG{?+oTCSZyxOGy8HMC=pG#SNS_1FSa6!`tPinq|k z$^`L^PMMb(G;4sjT$v?-U!8BD@!}{j*14wZIy<dZ42yUANW`|c0R!(OT*^C*mKs`F zUAX^(GFq`C-7r3Cy4M<(d(22q>yK%g=TB?7^;1?=T&Chs&l#1)!TO0UFZipoXKFfC z3=C^p`Y90?WUQF~oHF<We>^orizBrFVHfji*!`Io7LB@3L6k0{FiJ#VJbZp&4AUMP za>((hf@MiaXM}6Ag@bHu?UU)+92WosWYi0~JH;KUUH$ZA5QuEqrb==3+)R%J0J7*E zqw`;Vjvow!xWzV4c185P2BYSPYT|PD382f%=#oXn@i9vI_+{1~KU^(81YV|f++0@= z<ZOIifxHF2fEwS~)VO?z@{G5m*H!|KxO4{1&VRbmm||F~ZtiEvH8h^VHHxRv8!ai; zUyXKQOl)?A)}Lp9w5Sbmek@uurHF2M?jc1&yUjTRA5;4CDdz}f4qBGdzYx7{|A0w# z>hc*!D6h=T@70GU4sYU=`w3sc;T0PTq?^D2n`n!ic3JZIWp$D#DTeS%LG&M65}W(G z>!t>wgI0SYe;J)9-Fe^jCZ|xtt?f0O`3s&a-F=+Wg+<emLVELi-0K~p&}itU%UHka z-qQ`uN_oR$war98R_52JXtCvVyx}5Dep6{l(1ycovL|cP3hU#2EIHyR?d{oAy;iS@ ztmPWx55evGXWdmifO^HP>FvrAfp)-SCxa*A;%yDHJYeA`1mo)OhW<;$=f!kbVf?gx z0G~AKCTF7Vrx+lG100!;re!fBeSdVJrB`ZBk8AM9$sC;MY?Dm-+oAN5Rdcq!G;L=c z2U$Z}X3PYS{4_1tYexiCq!wuPd(pB<e3cx3UvN%X>z<+3MP9?2KquEv0ka(g3gxxw zMaKrJ+@olvmfn_Z9SXA_ITGbcsEWFOy{x~LezIMQajIm#Z7iuZPb<2p(%{%8=gk(( z1BgRNmu`)0ae}qzctFNxES?6PQ}}XR;=XwEfoo+0(oc($?mKmgqaeOjicZ=(@^~K` zEtaEv&k!!c{f-uT=!2axfA2kQyQ!>?Y##X%I1Vn;7EKd;q1A4$3K~*h6c+($<A6Sb za*Csw{8&2GG(WVPf{(th;3>!Sf_+Xo{S!OL_^S@Uo9IvES$A?UQra+ITHy;_bVk6J zL<HkoD1nb>@bLv6G*13B0`xkhD_Asay4^_OoixK@x25RIT97U;Qu;Ptg;UnY-N)O1 z3lQD>M|2SkJx7R|AnIbn15otHRR1jc?>b~s_;&4p$X?H3+lGkLo5>BAch*ejFRx!5 z&ZBP52)9)wU0m=#o=MjZTC*RT_2{bW2cldrItMS7tj;Cp&5fDa2t_e3ia|qA5695r zeinx1&-~CBV9_*thC*cM?SOuWwu5Jos@6&Vsqer`*k+1)LH@M-CBgz8fuE&7Lsx!A z3$B`!;W&LmH3&z4U$;{Fmh!2G(I2xpE+2c~^joZQNM%y0hWFts`<Ya)XIy?$d5n|k z%&P<oPfx`+l`<hW6wMzLoML^p!z@UH^3i?07M3fgKYf0EOzO>@qaLC4SUdTv9Orn5 zbpkHK0`B3RM!MKFbOUkP%8gMG8{CE6)F&5ZIiXn6%Q(Kpsclj8B5x@eIz<HQJtW3R zf8c~aBj!mTNmNI8cD_+jji#5@aeRt*Xf<IXW12&4<_<tFc4E<bcgzcha-2%z;<#Rl zo=j>8>#$3dbkE!q$f>(-9uA(338w@QMp7LQEv+p%%z5irOjUTO4(+Vb#{rLdhMpm} z&kB5f&kOOs!xsBlqC|`=wYV0|OoTG;%KK$jMl=>>FXW|C4B1YTbX<qtCyo{}M~R(H zTN_ppT5LJYysf7Da;MN{=J`V!$X0Hl0sWSS0&H454oTeCs6lw>Y7_%4pEl<di7V8N z`MP~0bDftM3Lf}TvncFpDP7iS5nXb!qenZf-k8>5(3p?mxJ%E{mt&#1x>z04Pt#E9 zUqYzwwt9BMM+n7FGVd+mtv@DqGI-V8#F-$JyQ&#3de_c5T+1b$>yd72s^+{@)4;QU zGgXX!9M}B#Q{8#bojcbw5WkKaJt8y}zTmXlIiNQz*B)ObgqACwOUffgx->Uak;a+1 zoMwz1i<lf}<Vy)*?G+FY1z|}B1DQLgW+r$VQl37KH`kTWoP>ZinBBT#hLNf;jx<;` zuix=b!cjx%{YPRylb8(d3sBcbq~$I_df05c$VNN(PgYI?^7<vc9AweZ5WS;-6nQRy zXvA7Ct3r*ZylQu#k#vxKwD4#uo@1zbnp1bB;^MbQrQTD$g;is%>6LOkcMomFRZk7h zyPxOW?NJIXV%Dpa%vDJ$rJm_pb3-rhP0_qjv$sEea$W!$%A^y7@T;E_qx{@U2ig`c z;+<nNhHpd(iLUi#k7Io>bF_NX#ml~hB`ykZrZGMCw>R55^x2Vu!L}>mC6}89Od(`4 zH8UG1sf;K~C*n*Vqq~5qxac01VsC{cjjo2%@}Usz166dkb_)}ojC?75N5ocV8Lb;8 zh)v^4XQF7@T?fV=yJQOPV`;d4lb&3}`r&~8_k6=U9IQn5=l6T=8);iLFppEh1%U|E zJ!>5+e_wp(VPj5!^FI1a(NRb{`sKApWkhZ-o%9wVd{Mz&xp2WTZzo_hc3i%88Z%p= z!0ElV+?Re&L0em!Zdr}7`GoVgK@tO<&CI3QC@OT|x~W{W>-;duhtW?o=N+xn&GVx} z5sp|nGv?o>fcw9~^H4+V_^pDK#0A$m-u_SedXru4O+>YH=Zt$Lqqi&TtN?0Uf6ZO= zqLroV)JV)Lj#&5h^uB!_ejR8I%FI58@szSf0)g<-VQt~1{k-EYoP)jpg5WZ?aNwyJ zLq>9Ksvxr>_MGV6O^HKP;fS)r)e3Hjv@cfO-T4tLI12`R9Lg`n2=m-C@v~cp9Q$mo zPG1@ywEZ*WOjWBc$<%rEhOWdOfuen@=x_Ok8GUFGM`wf2>F)F-K?`R#!f1b4akZTE zCzqB4CA}IvPSVhDXlG>i`=MN}@$TF>Av5Na6T?xZVfW+<2AmFHv9t4YwX6ePG+K0} zuA@U`v8RRCQr+{<JfXXIQDoVA>kzcP`f}+v$WNEfC99QJ(6}Wka#DKft}E!WPNYR@ zU3<{w?oz+9QUzq@OftchkDihCQHb%LKob@M9^;lyD}w)AqCZj?ch{DV+uUWJ>*_6| z%DSWc2Tl3uPZyT;IW^a<;NK5D_II&iryP$0{g-`p@nmmy(darGX;+|8V&Vq!=qJ%- z2M?xbdkwR^^ZQw`veNdKH;!Ugba9ULVH2HWxqWLBp8Wk?<H3?DD!4pi+JMGQy?CQ- zHIApOA8f(wfeZ`w&mETeAdG&<YFlIzy1KenK5JS@lF(}d)KM$9pSn7VoGx@P&9T&8 z=y2?_lbVBBB9l{X3$79p5-sM~@Eu9SrBQnA0z3Q{qNX!f=OqzT19PE+4~*t;pIFRV zaC0H_#I@`CIrgn-A3Kpg)@Gr=&^JKbUbFnNj$)H)hWH8c#~C%;I=Z((H=vUcMsrNW zR9yC=qvE_0yXavSE3Sy0l>3aCLAxdm{DUt+=g~GS9zU1hw)$*@fARfOzuy&bR`!CH z>B#@Ef8Vy*35VME2}&?&X`;heQnLC=A8m6)P3C!dhcjYJoP=_kN|K4Ps;a>a?rk+Z zca)(_LkHzCoRgEr20exa-~_R4{n(#!fg`qI{e*w6IG#a}bD9ybl#zZ@Ao@sCz^qR( zhHN{s5b72Op6gVbz<Mxr0J5YpGKRvRwMx(y%qmhUF;W%W;6GtP*jn(vU-*e-BL75> zl*=xDq+#LoO-_P7dME)3i)A)#RLfZM;l-+@qBpC)jC_DKt~d&%J8LZ!Ch-$u@K>O> zkl&~yR>P4hBf53>CXOqZLU`r+ne8=R14-w8+lq(!UqeHR-3DOuI#N5H+i$#CzFrVv zEwO$AbvrsW70P{|5JnI5-Pnz^u%Znt?F&Eg&4lj@2B`<}Kt;1ZF9~XhXvo;i^RPy2 z0BK(!utnEx$9|%j$WNF(NSqt~4f1zYDk@vI%^^%HQMX1nDu{td&UujW3wg_bvNCqJ z;g$RUfO6)=v?TDe5Z0L0y6f>|^@$#Yg=S*F?D)yyjQkW$0k2GBwDP}1CC{OY{f4eC zLjY;LZUjm;3rT4lD22^F@VBk>k^s!)zi^?PzAu92(4j-ti!D?<+JsRfj;92R-LoH- z6})R|JY~&7%rXiJ2;jP8By=Pz3166gYh$5=aK*AD!S>uh9oo>LNtv(1-MI3w(nKHY zct7tc72@xKx#_bSyEl=)z<luoEbhq;GOnc8QZZE}D%OpGwmg$754<8heQ4cjnyoH! z@7OaDY%*!Xp5wgOZQXguD@Gwo%vaM&G)}9#g$C~LiDa0Sbt*PQmUv*LF-D>My^-$I z{T>W-9=k;pql?^p+D$iG=(_DM#PK|==%X?rVhkTW=nuww3yU`UT9pn|sLym19Qkg- z;<9VAJ0=8J2fpFW`rlF$s{*SfYO>|r5WI8(?5X6C%0??u7AMA@majrPli?bT{nAn9 zs^|vS0yp+Ao4v?=@uO5JQ2$=7dg%9-UjEg2KEm>3gh?)|T3clcYsgz(p)!skxxxTu zs>r2OM!hf5NwOk`pj%B`2N8Advu+!r&b{BbE4Ij`Rg`Nf>v?0mqkX7d-0saho-gR_ ze3nVicA{sDi&P3@SpY0i%{zHhN4uAaqtwp$54w)j(VK;Yut(KaMJAFhE#}!msKQq% z6_DIO_~C*RP*2EOVRsKhELpx+1QAwZ*$pYW!xB5(&m=8RA9a~jY5dcWZG$@MC%R+6 z{LVttt;HOO$X!iT*fi#3HCCFV2mu#yDUF@Q1~frw`Ifg*)Mu|c8!jaLX1#Euxc@$d z=+U4ceEs&8*4C=7>{6e2n&RWg0hDGn@+ETCC;7?r<v$TtAv-#FRbL)6)(vwTy6eKE za-_+PicJIr%tG(3KNuVo!@1{HdUYD+E;q{$-D+dY)nJb3fGqRzo0b-%2n&)0LUc7e zsI!5^>hk+gusf_jU$^L>SzDR{DOME*coT1h2mR#h$v<HZP$?@bUs+Ca)BEt-TK^Y` z9a5x{;_j@NAXc-1>c_PGcp9vCyIIcFwVWq>ZtiWI$)KPMNmEb*Xkqjf%CY+6m~zk} zYYQS89AFe}1^DDP^X~p#Tca02qEq>mH;%W>-uQ>B^MS>wVW{K6<_M{Oy(y**%v~;4 z5lVZTZpROggVPWAe1t>vn=ky!zy9mZ|Lad0(2;<3mN@kH9=Gp=zYIu`makm%-+a-1 z#>HSb$9Jo2at8g!%fcqE@7=P6MA~(<IOZ?r<cVHXc<}tX*o@;@c`v2Tn@bT1r<q+0 zbjvb4p1xo=&=uO#**>w8o>;<Q#$tW%O<=^$-%ko8&}mAdZMD(1?$e1TuR^C>rb6?h zmIv-kjT5w@7V-J(Ut-!_O=n!HnO*<xs)$FAY&!-AR&S){W)Q3Y*qfWbVQe_J{>OK3 za?E-nG;r7WvF|sl=KTA8PLTP1$WBQT`}t9?YQUrq==H}3=#6Df>n}}owob{A8)<&J zQPC;lFeM{KrB<x!Ix8Cuy->>0TK48R^X-mgxj3;C6i7h41&R>JnRyk%{6v@`rq3z< zNQmX<%_JxK#MW^~Q-)s05mo<;-DGEK5lLvQPo)NJfKZDldr;Fcv)`(s;?^8Tdqh<= ztn-aK-=HoSe>q{LKej1|>|of3=~B}1<~Y(mYO&CRF_o*<Bi%`?>H9=nCN#_swvnlk zQHU-xrloD1uWkofL_&)UtHlztKemNk^*Zd;R%NI`z1g-UsBCSHCviUc!$lxYjwl+g ztdpEmX#nD-hy&X+zIs?=V}B9^Fw(lRP_uP8L4U7L#PQ&nbOC2Z^4I?45g6d$ToztY zKGzuEu9MNjZIM8hF3fiDOLcF5Z=3>H8jDCokqi!6OA01EjlQXF_@_USanolX#;r;i zVk(OU0_QZ|GsGbXX#zsb#^BI+jC`T^Zb~h;waM8@$7a1K5eIKocAC`JH+FB%@g2BJ zHe#tXZ~Aq--fV?NWupg!y2iu?y`wU;IKfm@ayJ=}pi&=k`o_!UvNUlqWf|KTed%F8 z#XG&t45Z?149xuzvCPA-8+W|B6OJ0Yu|3k~8?uSfq7ZMiduV6vAm2n$VyjVvyNY1b zH@Br~?~Xj{0b^{+Ew-YWvdhCq57BHUrMLgw{$ggOE|h1$18@;QdSxhBv>pcumrQxF zGfKl`?xx?B5xFg}>Dmz6QwLx2C`LZ2rZH>1?qBqK-*%Y|_~-w86y_E6wFg6eauKg6 zp%&F1UJR2<PbmHYx>fP6wr%5}wK;v>D7r|cHaO$cDX+m_;@_M<@Df@QWh405-PjaG zIhlr#7f?jn&Bp%X-}F?zT@U6uHrPfG^}K{Cc(VhIm(@S~rs&Xkdh@02HD+yCW4L9) zG`#4dn@6f2S;hwy;g<NOR88D3@oyfYbmfJaCF;>dr<fWLk%OE+G}QdXzj+X5c%$}P zmBemxwu>XgmsBO&k(I_cBYkb0xvg(DM3@{T{Q}9N;!#+d8kR(|aH|}G8duUw0(sMb zhy}tfr+M~>e>b!L7RByDg25Sf^5M{e9HGwnsfRb>dvcV;@C%HS2;YX<RcUhmE&&Nc zRFL94V#y_uxUD?QYV?0f(uNUHM6jd}tT1G4&_OyLYb~-_$l9<Gru_o_rZPg7#r>Ue zQUyLgnanr|PiE1ByPv|k%51#U|9ltB10=R{r6ObL77;>19m{0N4HY4$1gbXYB8}z- zVF>z8znO$YLMngJZ|+C#K0B<r85ik6B%b}Mc^mosgb+kjZ8X_8xJWm03co<i8iat< zy}xsjs=((bk-11Q&MfE6+R}k`xg0{shfdRL85y6-sH6%V%qn0e((zi(TrIY&FPF2O zTN$qw9qU6cYqJ4e9DoB0f+EMi-1#^_oG$f~q_H^OZJB8w+kMDZ5;LcVbu-&+WiKP& z?!40*65tpDBJ5(ztx1S-pTz(KlVe9X%0YPbQ_LZRk4n_K>n!utfHQLEQq&SWb}k5> zj-(f4qhHtE+s8m_(Gh!7X*8#GX?7jR{c51@{4^vgT{%oI{j{Ragw_4U&D8EBqIQW^ z=CHagy09>W!dz8^lXutlNc3If1tCJm$~O-N))Y0uy~l@w{mjyjA9TM}YHM;M6<-hK zm5lO!F4qx%<6h@Pe7!=nYsnQ`6=(+bx<clk`VSw9tk2(1QZ9Jfu^2vta@iA^1Cfx^ ztp@@><MAO#O_v6zd(Zkw3~K&vWBl?ZVEW0{|IDlEcdK;$n7)ks6ncEpvHuCJRZWWw zhh@?Fs}B2+DZ`pwZUOWx3d8Te?a=Ojy>rU<s?RZ%i@cb*U8ov27DXKnughc=`ZtyT z;hlis5#)=v%zPjG$Ab}|x{Vh3+o?||PHd$XU1i~$EKqrJXFe^g;?P45-yDlBgPQl8 zl|IB1z9a2oSWe29%u%OZMV$w08<SL$Crq~&N5U~8J3NAxD!<PopLkDa>(HUOKq3VE zT8AJ1Pqq8*M?_zRc-ibxC(=*DA_!~srrU-JT25YWM}T4-Zs~6N<xka=o>=5|3R)Hp zRU)V8V>X1eJT-UxILy+%Hon;7-j_G=g6f>PQo!C?U}6~PLyv#$u<W)N7C3~NLp9aS zW5n^oCc-~;ArZrcf}CH2P{wbFhz7zEN#;);20E3DUBbMBp%?QS?t~7N3idx%H>o(p zvwTRqXr-w(qg_;lN9D<0+5={}nykenkRm`!So!VPead;FSdA@z@WAu%M`)b(a=8?P z8yy1Dn8+GfYIKXI=bjAkI^7}KAEee?z++VJ4YT|B_`2-^Msg(Ejaw3Kgccm?HP~50 zWN<S8#yESE#lZ`UxJb8is#?~MZNk*fD6S6;R&zNojE_=IP8aj@9o9@S%(5z#pD1ef zZ7f*4X}jnGG;mc}qs{uurBer>(Mq-;r`&SzQ~MizkEKM3C089<ku#C5W1}#eb6y>2 zB=u5x+r5E+lu0AUm`klMcKfr|WJalq!s!x*=^~;IThYA%b)!j#jBih9uMq9qI8uW{ ztT1y$@5VM#azD`nWkmFE%AP~as`w$qO#dE-Sj4gSA3oS}J~c}(JgHrF$7AUk#%L|| zdhKXNA7*xyiZjlFBY$M|;>`WErt!hOtn@+_{yKXLCf-~)Qi8)0Lq=T?DP3E}J`ZNX zj05$dV6$4NCy8{1@?i*iDt|m@WG-Y;#tKIO9d@7X^vF>2iwsrj=uXYPE4*0F*!WgD zAiqlmIB<Yiwm-Og>M0-~dDRNvo(S#xN}J}zUTC2+j0*87sEm(7A9k6_(6rM@R|<Ei z3^j~o=5N;#VOcL2ueXLVsFhGB6ltGl3RV}MDp(s<ckK1G6(PPm9qnHJys8|?LWJ5g z-=64fZ<ZIx=vfTzj`n;E&cimP&CcoH2NfZp_IO!<l=Ly)ps7#FkRWEPRNUdjYH*n4 zQ{WU$yY5vo_R1ZZIvSWWYI`sJBB>~|d3-_~|C`9Nm(=>A@#*+rBX<HlN<CcQYt~B< z7l#GGl`l>XBkvZh57c4J8hT@3bTKmURMO^@(-JeKnwZewtoq&1oX!fvv`mU2rIOXt zCF_LJMvL*u0bl}=8=uUb7Ja_07q_Z>kfkB#dKXiC95eHa()CJBF7)c7tYm|!7^xDv zRE_K!JMCjE4F?0Y%nL><XK^o-x&o;C0~DI3zLdE2&s|cBT?V2l$t)Iu=fVQjMRxVc zDMdGnR?5C`GiR6Lhcz>LeGB6(UNBULufIp*5I^w`)LrAdIwH$`{2YaY4`hqAbRcVg zlbj6wseVVBf<mjz-z59?=YZf*M}RpSQFP92s<+%GWxo&~<05^tugg!T)!?e*BYm+R zbdh|W_a1W0jxa9Aw|8RZn$}<VJK0=!^jI>h!a>(GYudZZtM~@5%AL?Mnbw;lm(0X` zPYmB75&FgM0H0U^iE{QU@I*E+6p*Gacx!jzib`-mfwQPXFL2JG*J4^WfOV(#F_EQC z9@{7_Sjf_eIo5%GnVl7)F4Oztqa1A5dJF8k_yqD-2bFe~M>zHdV54lBX02DPtKPO( z`%Q?WYy=4+j(x!<#I6ypMz;_VZu<bQ^79$8q6oEY@6yQrX+Qc9tdYk$br^lY^kL}) zVf-H@-?};saS@<URVlYJ`^y6qyj-ST&a=C`Dd(jO!x0!2Bh7BCZ5rz#gc@qt>vCj& z1))$FLZ|?Nd+IQPE=<XHh_5>)iZ?dDVA6EjRyWj(|GGR5i;fqQ|0FNJ$9;N|%Oq2P zVyJLB$82?=i?w!g4zrWNH^x^$)GavtSY-I|$hD)hHJ@H6E;1P6_6YM3jyDMrt@GQ5 zfXUaBl!v|-&O1{i8-|m)ydeFla6#!tv~c45e1lksSzs}CFmU<wiZ-DdwEp~3s_`wG zIj5y~9Hv-*<lQ%u#_wi^ooFq*v=Y#`{0?o>X%ZiPq-sg*Trqm}S$x00gr98s-cdKj zaL1`zz**-v+UL$No?3c?AVc9sq@%+{&M!|?3FIGUX`qae|M6t~Z-=gUHXL!u6>;SD z$vUVHxr&M(2ZtrP<adPMFQcr6L=%TzPHoH>d?BN3f{M|hr5BneRGsa!=+1h^Us?1b zr(usezZI74s-LTXMz*PnWuKqu(iJ-A6^4_e6V3TDtO}uX_I4u+RnK~HKxRePl}o_P zA#tb3jkUy+4R3qX-<8dAErc?^sfYru>;@?A2*%HqXy$5jvFo@kw)V%;Jh__`2q-=e zzsk~(vz*08oTj#0Pujb0`+^e&A|jrgLAyEjoG#JS5?#My{V%|N+uk`Di5hFXChy2O zovGXKus{DB=Ue7NX6B;*?;=Fg;nZw7+gL^2Y%e_9Au$`WD5Pd0w~SrBy&yJKo`ry% zsdIa|FBXGcpMF0t|9o34Zm~M8TR%!<pypCYaN?^+sR1)~bEpa3z2!T!*KZD^Q2g_P zuZ0uC!n=w;JM<1T16^j=8D`JE)rRqyOAmM4fVPX2TcwqOXO*t669t#Bxkk<hoDSS% zSgi31HTle`h{i`J_rH<hP#70;B54B?Y?wjU85$UbDQPz~Cv|H{dOG&fEO!uVUbX0@ zk_V<LXmCsoxi`2MeiDp{*Mn@>UQJ{~)aVnmo-~x*gF$W>0*8P2ACckvB3)mca6B*q zCJ7jeJd@M#QeA_O28dPF%*R7?j6BM5Kv{fjK`_q>X8AJ2J2U^eaQb2|Oh!jAoddo? zq>CypfPV1aIaSQVuCO!ls}y+dZ#!M4{e0MSu_v29cDgg{^I&lJ<VrDw_*5qq#AvH2 zaipWO*Inm7=Z1=2=QIUq$6D<cX?0h0)Y5ng{W8{#xSFJb2S{sB^@X3BT*Rdkfabe~ zqZ@>-CuHC-qx#5%9AJeX4yox-(`bRrex<ei!nD3P<2EYY8+2<K*e2;{tqKfX1yD8` zYn9{a&$Jy!BX!iE=frlnu0ub4O|Qi)rj}liGNA8XZ)--&O_^Y#Yke6WECXS=XIY%i zrAIn6u6h&~AGwt4<UWz7Za5UAS6<s-6v;%xfL^ek$X;F#T|8qb?e8)ar0N+PVoC2O zvTktmAnzfT2GQ561C-N}(C61QYew(@%()lsM#kVL?#*fxFcgt)k*RDjJ%G)?)!$S= z0=dPl)Ms3e0I9tF-N=Vl&;dbR!8%{PC*}uj4&qBSja~)qxpKf?Uesf0l3poZ-U}I} zqN;5;v{DOgChed3<f2rTqzr+qR<|nR-t`{01~-#j>5Ho&y69&B;<ru{#}B5Lc*+&R z&{~;u%*+|nHxEPt$-PQbPPJdQke$2&TY4gN7Ev^Kxoe4Cq<3F=cQV7FFq_*pv6>2I zR<!VK3YK7jW<#B}kMxM+J_u2_Fu$)eRM^EM_UDbfs2xDg@_D(-tt97>5~Oj5HJtS6 zMtTK@doQaJZj6=Ft9ZGK(N?!r9A$E(5VuaOGz`)5AB``dLC8YmQ>HuIau<~6CNhSF zU$5qLPkRO^h%lzw3`NVtREfIWRZ~cpX;)Oj%oR?R@cW9*w%AR4+%ri{(Lm_dvQ2un z6+S_cZwK;fKiMV7LV_3SN)wCxuXjjOJJoPJFCvZM;s=tjz~0&qcA>UzZFRoh_n`~@ zzTLEZb%9JYh;uH(S$Ha~h)^JlucWm)vRCY$0+QWTQVkNvr$e+>%SLklZRw%&qPH)7 zR~69h9`@qXy`Yg}deovj2Rg(x3<yzulF)P`Ek-SdKb?bx<8gFAx-%Rz$I~FlY?(J3 zH+Vys)YIH(nabNd-oyYmy*u$`Eq&BNZhK8U4ChYCUB4QN5?dRLX-rhAYC3CJ!YoG+ z)<M}DOla7=A)NAJdvUg*^|3fA?H5KHCL#GBdmeUVwQeII#CiUkWW=xh*U$WYo)3w1 z$93f+!*6LqyZoDZ=kbc9<P^Hn^(8ZJdg3K-XA8Swl+E*P$yUYq%4?TfI-`<cf~tcQ zy{)V8%-4^d+I9BD2#x(6Hy0@zPyDK=3S}U(+in!0^J2pC>rhK@f{dbeln^ZoD~CdK zj>x^b@C^LViU=m=$5FOZk3(}n4;6M4kuV<pBkRltm7@6afj4IDa*P5d>s}3|-Z0+b zoMrK3{Q~}*2mJvflACy(Wg1ZZ+5W<8K1F*ZEfQuz9-uW3@m^Hv^J9pnhHNDf`}SJb zqiD)4a{E*g7n!~d>HCUuALF+aR$D_pkh%tDYv){(|4l&@4(7Ae=24mRw)LVsd)O(1 z)fN&>0iMT7`B>MschMx*mOKN#G@~(2(?Fg=;T#i&2x`ie8nrDCz^t9u9^iS80s_;; zLCdKz)==JCf%!s}pFx^queFSM-lY(MNVb(!ar^_?u}y1!Kjw7BC1EQMjXEKjjZ^!a zMu$k{JPm(%<$~W;_iRv_1=VXWR9QeTSguPdum$4&NtCHFlOnptgrZ3)D?o9HJ{Nm% zJT=#{YZ?;C`eQ97vz>3HXMxhNVmCiFFqqlaX*f{|C*Uv_J$+}bA4qRy$7S(z0Shi@ zvAdrMyn6%|o;ndiUq26jvfe}`QF}qUte-i;=4#PeePQTa`QZIXVnxQ9pQoBG{h{JL zQ?#~E8Vk)^ctzJ1GB4a;Z(LdCwvgfEV6aosva22%os9A85mOrhj@|SaiFmOGUx|wy zLOZn4)+Wt$%P+aC%9%oTd$wQotA5lI;31vo=GRL)=C)@lC{iQR#Q!50H9Ebqjr`e9 zOoH+aun3;FlaTz8cr2X7tmF=hZJrWebNkR<(gC7=k7;x+c4gfXJa)m@zxgp~p;;lL zDQU7vR6%U<?TEW<DQc;-^Kf_h$}Dx$?FAPrzfhxMSFsf!Ow_Mw*R6W<IV|L5)>(nq z#WzYkQf`t0N(txCtF!SfiH2T>RZKM_YM^cPM)O9&{wFW`gT>u~c@NucDAGd?rjKtw zgPxN%&zn6w`nwc8%4yZ&L*kI{(ojf%ekOa4yh7hpMnj}E*wNb5_;<q)d7EK-p8niS zf@_MD^OVc@$+n(c(|tuChoJafc4I|1$VYQ}JBC;l=`wM+ma|lg?WWB+f;)*Qw@R!C z=?6!}XV73~kjJ&dU%jwbV>FwAJl=No_{+@_W(U(Dl$f0=4uTyyflvbCTUyDlQO9)N zVIps&Wc>K(=zy(A-8o}y(JcsO3Oe3*58sOAph9@&M(EGOxS^kZ-N8(F0M~R$Hu3;> z<N=wjJjgY561Te+My*L}dn+jRiqct?&RfQ*9yq0|@6)PJgpmo@o%BblixnopNlVuz z-hr-?pKKSzm0ED`itIjBsNP{-As3xB89=TO&)*98To+_U+A)qS#Vqs2H$8&8%n+Q_ zWG5BRW}vlxge9v)Bo`??wLF50<XC7C(+z*42Gi#J{y9MTe&TV$PxeTXTi!BE8VN#> zQhz&vo%<4b*%V!nbX<eZ%gsnk4uZ#nnw`u)gxuo{a?$0^BjhECjzsEO0X|uOkni~4 zBBG7gO9+4!vbX7$eFcBdMrb12te#VD;AXlI3JjN}GTEOm@?T6K4XH?xl^5alqpqpk za7q`iz#Sva-x~gOn-B*EDy!)M-FKVd^}%6-E>N_W?8bD)mgBIbU70kSGOJV|2?bXd z%L?QklyK2M+>r$4trVO^XYMvc(t9jog}{pJlgYKzR#3frbQ1{@k6xmJxljLIKg@P- zx=XIL{l}8sTU^Wq%1=2jx1|nfveyD0*d=qH(9OPo|L^dW#O8IHWswDCwi5N)i-Z{p zuiLG`<fq`Fc-xTsZhfQfEONj}@6$XN!N>8<_X;kQjT^BVoAFDupn)84oe(x%mB2M! zPKfA|TBa{(U6&3c6Ee0q!-{E?N}k!MA)5Mqc*}XFN-kH#U)~t1&)&SMy4g#z^_vO9 zeQ^<*mD{Tx)(sC8Vv{GD&C=B^L-`h6D}u?O(ti_=YtajVbHVH+I+w{D3AW}qdl8L@ z*iF`I3#RMrOvT{Y*$<2odR<x55%M}hxt~%%NEMC1w2n`-g<d4vAC~YB5zC^-7|^RG zf*3hIEl!vXx@cV7av<Z&<=s^LXBk0leyXJy=QA_iR+(^y^p(5lS5>*|xQS@@{sjtX zP&E}mq(|`@EZpTW+KqyB%N<NpK+X8f0ohISiY;d`i$d9cQ$lvhO12wBQVDB_=)3#X zeHVQVG6WzOdz^+^EaIS&%(`@HXQokmSN^Lb<WKy`2PBwn1=ksh@FY6c)OT8T6YuV_ z<;sQ?<ZPQq&|Vlpq;|iPulgWas5Y#@Pj2_mpZxd2_qryG1^kU`$m?t`4#r@Q`HQn; z^Rn6d|MP(`We`>cuh`1`H?ARX?AU!Ukn|m=mHzh7dQq^Z^RJT>HZh++yyS)?wfqK) zBlu1_ZbOSUv7A3hAI23yK1--XZDx>uxQ4tOKtc-^{C0rs^S`?vc;E<b@YuZh``_;i zRK%cWAI^ksOfCJ7HTd89I|qkD<X)8xT;|`{%;-JHafXrOmi)W>F$kjxgc*_ue_H_P z5dvk3FayuOyC0uCK;}ddE|q^@w@r-A|5eDJESUKJRmlG>PybgT|F_A3jPCy#g%r0q z@N%`aeRewJYK0WFm>1v!UbQFkTDGvL-ZH^=xMp%R-W`pd6AZ5Z#RFB*8w__v-gw&v zfmG62f54KLto>QEvl<t!bAWBy?Q7)aA=|RNO%NV`+0hSM0lmX{B6^r?v7%pYn{xa5 z><It2fsvNi+UA)<XBx9i0*W|DP)GHB{gFg%RkVgq$?vLZ)K8y6(JSD7(a^E*!3n3= zZ9UGUSiTj>qapk{%Fz-;dt|<1M0(|3vDG6D!a^5P+lx?{WCTEW+!<EyBeSNm>to64 z#;+eE)0#Y)LbTp!d~~1ra|KBcBLz|OtZzFSb1cHR*JNML+(8l+CY@cAZJxaCS}}F= zK+#w^gCl9ju@U2LRF5{XrsZ8u$r(Gx^xI%ur=M0k7iONLghM1^bx@x;EF!COJ>XFd zXNlgu)A4~()^pEeD@uNGU&Mbvs@h9@1x&Elfc!<K2=hMComKg`RkspqNI*2aslBS* z?97_-&ehv_r~;ppSiS2XfEgPk-!BF8^lCl=n<~4YW9R7?Gp=(2j$cC?m;JGZgrlns zVfr6JDVpEM5b5_*)USNZ$ZFCA>ZNYWQrl6B$9>NRuF^U@3y{Ca5v=VHx@+87ow%)D zkd$P1(<lNh>m#40IM6n7YWFYlJ7c!O`AM^-*B_uJSEEaI)=;;0ThVI`DYY~RESKdC z7mV|Sy_gn9-Hm?X<;5w?xo0Hb>VkR4`N9r+7{{&rt`MHqpL(A67f;_oi28(?y#-H- zM|1psPy#rv)`()9qBK6V{An%022me$x^7>h7(&X-!uR^LV|!!!#MTy+T+gE~d($sp zLMnn>C4&VE%@$s1*0@Q2shF!i*S%cZ^)Q#W7gF(BvSW8CZ90@_L!8Cs!B?>@OQ41X z^8;}h#Tww2_q7PqNc>8{n$0A&FwOuBBF3QwRL5AXa@$_buG%VujPelg4%dZRj~c3# z13oC^EQeKHodiwx^=QREr!M<wCeO%inkxEkkWh$=MS(D(B}8nkIKW~B`4VrG#T6vs zQ0C(V<sH33ddG-ldDOS5KS@ObJHiFdr@GjcGU|Oe8Xst~4BX)5kcbZthU%A2*9?r< z^j@!uP<N(9D*LtUx#q)I$;pG?cc@<b{O08C8>h&iJnWETurn~41yc>ODvFvk;kX7z zjr3O^?bQbk@{BGR&3Y_3{jjE0D?3o>tESaJN0t6yLL-dxov!GxW+(^LCIVi&nrj&* z1!PGz7D_tbek<Pd%*bPp3`2xnS%$TAb#-4g?&(Kj<t?Mg=Q<7JRhBMGPxmwG$T5&h z=#5Mv@$HaiMpCeLefEAwc!quKdZ5sBoL|TNb5WdTT+x}jD!-_G3SvTRulOtu6z>&0 ze~i!k2<Iv>)~Ubx<m^z0?$xjtZe#Xe*AWcP>_<PbtMf04r}EwX)SbRPuC3!G4hN}8 zRhY$8U3s`;|ITH>^Dk!HN8^*GuNdOmU#|(qN(>Gbl6N(X`og9YLcd$u=)*|5rvEb+ z=z|Tbzn?hXo|MN`FN#~WVScskBWLm81K{6buMuVtG<Tvy4>ryM2VyW3bn{o6sPs$S zmd{eshrIR0K@BR<{la>2$L)c%SxEWErRvbnUQWsC_Z(U}Z#QDwn5h=EaErS%KtY(p zRs#h!h=4x>?%6MEFI~euf0P`+TQ{wwG>lZu7DQ5X1tUmB7le<)K*zk5rb~u#j+LYF z<v@IOJhvCErXf1=-m9sYRcVyehj2r8W$SYGE*qo{U|o11xgIW>S}$~?6HgCws)pp^ zy9^)ia-cEoF_qXDT(SAdfDt?e(WDe#%>~MR>h~~OJ8Lo}I;$u4jJ5J~u@&37t~6H7 zet5Vyo*HZIG1(88nNPCo<k40NB+X%Tx`?BK!Ud9ZO}q8<+Fpap!|mF(k`oz3U7p2Z z`{(p5QFBAg*2~4qRn}Ee;i}Um&3mkyzq;48E+C^{(lpJf8Qg@q+?GIhtLk37n|BbJ zdWCH_h!zg5<*rSC6*|yu<?RXcgKK&kP&WdGJ28`p(N)tG${m6>^@B1&b&lPWj`Hy^ zMwEUaH2!#mZP(~pjGxGUkK<@%XScH1wdQ^9HcGvYZ{E*$-wjJ`;<8<g*$^65{<WXE z9zTRe(K!gVwk?8-6NHAte_R~p@RC@8i}K-ZQy1aEA*Wk&!yd26>t#h=>^bThqOqqh zU|%bREC>p`CL~rdoNXS4`IcvvrW$#$3_=_)aQZs5``I<KJ}unBN-oj85Jw&OGL^Hq zhYbB8K-!*x)^eumW$fg1(Rd^bglcZ;UUQzHf5=gK5$igi`T#7Uw7Kd5OU{UCiRC`} zFv|k#QDp#W=~$I~&ZOv$rIvm$Bs5*5e>%QF;nf1lZlXi<FihfX;oy=L{phj#S$21- zO4sT6;_gThJpczb6B`+IeG&BB;lYT6npN(APk&0je$e~)82?U#f*;o5e|xcz1x$rJ zS9)u=z75jFbfO&tz1sYqoXiTo2&fCNu69uGi!K|DL|66=#A#Z}jGt!qU}k>WfJfO6 zCUn^67B}~Ykx*_3xX)JgtZfwiJNd0c)wsv*r3Z-<F5=D+;V(r7p8=W3$0ws}h@V1h z-op#5h20D5K8@*Dx^pac9b=hB-JU)InkyJ}DMb4qak5asSsUy3>OvIHJ2!kRP31aq zk;O{GdfIL8RnmaGY}DeU?Y(f9`o7v08Tr&cgG~13_ZB%=?x~`+;RWYQ*k?&~>2(H& zXX3~bQ+QwN)n;j@zs$@JSz#L{kQh8xWY1Ig(v_Qn#Yo+inXXSv1E5dy;g-3nISL94 z3g=wcM?D(ztYh+lkIb7hb2Z5X{~c6gnkLw}9l`D3h>OB3k+kcVH5LoZ(w>Sqkj$Lj zI)~IMD?;{MPbV@obIL<aWud^IInYQ*$7M0P!`832Ng!yMvCxt%8DWmSY*U4}CDeM; z2L-XUgOlxRGN&<XgLe2qnm=A$FnMvSEFY(RP)(QUw;)Ox!2Eh{F!RLp6_w$TJ;5;y z8-|50WAs-~&}@WdqRrCh+5Qv$W*ETJoh;t#IbSbgRwCg#R~^s9>}(a;rg`V_kbVm* z=iM&hl`o8q(<1}i%hi$xo?!Edz8QwOpY^{zrl}XM-Q#Jr3ul|r9$8q$tER1UCl$55 zrV22%e0?^BSr#@A2qVuqs}=xe?Hj>&t@g#2`EjQBfRG(usgAPf7E0jio{dUGp-u@x z(Js;~O?rOf!;&OTIPK2GF@XjY)82aF@$kHFm0?YSoqw(z<+*#M5XM8_nFs7{xf!Fb zCm@6?9+Xh4MCd*aNH6=i;mI5_R^Dj6+|<PWm?2k|`udF7<4RPC)LS{no;!tkLvggj z-Jg+D4mljgQwuGtkSbwqR=)Mj=h@uSy=+RsJ*P2~rKCyki_y4}(Zn`g_qD!-ZR1Uz zz%_x6I=z7I$&gZ0x6lD-N+Tfe_9Lf8*SZyjybm%)-7<gCcVYd({En;B5BJKZ2f#iC zGBZ1;zbABsqGVTR){J4Y@o-6z*DLOH)7!*{dn={dExY5CrU3gnFe}9%o1RG&Sj!5C zAvH?H4N(!~4VE=SKe(WRThFqR-AmP~YqY=UUA8bm08)^pIeh*8hpm(bJJC2{3s)U_ zplW>BNCLK_Dnw=f0Dx+K5}G*a2vna6<%}d}wyVW_1$Fbk8HFE^S{6D5Kjj)1_M98d ztd9_?Q1TPI8K+}!b#7PS28^r4FfA=0yL5H>j-k9Fr*iaaTlbW=l02<{ea3s27s_dr z^JCj`905P*1eV86<k_rga_TXciDKQN)w!ox6RG@HE5SjEZ--A+HbRenpjz2DG5%lc zKQs@ds5?Av<?bzp362?U8fJH=Y70N@F^>|OsT*;*Ha(YQSaSx@2x%ot458pC1k{MF ze(i<yx}~NC0|G&8TO0FwW^ya;4ln0>9RE<Q!tmHo4HOCIIg8%P;sI;xqYb=hvbTU3 z8Ne?-i~JoIUMSTBD4492)RmvJ4&X#SIY5`~;=)W!(=F!GYw!BdE>%~<>|~}Ldt+UY zS<{B9S)l6n!)kYDOtA;gb!aD8Cs)5c`d5Vdll%_y(-?xSjp#f_4de?nTSb<H&PTd` ztH?_JTxfZCx!0B`{ID1C{5p*KD7ZiFVc<L6W|^xxT=K?i&H4DjhTZNbQ|G2MWAv+; zLY^`b7X3UJP#4$>7l&!}JtlKg6TGgAgz1v0K;<R6`&{QOy7~&n9lYbCR@=4A(njI@ zJS8^uD1ebtk~zwO>CbheDD)|CjRLW1IH|PH$<!T@0DR3dE7dvnLIEB6^)KjbEox-F z5D0SlIWn`hqnML;O1U4Z&2JccO}R6le=!5BXoTcc>r_Kw!a)AMmowj_GECZ2xwS0{ zKeus#@22;R>2L$UVD<{H+@rIvn+<(0x^o$Zxe5sZZ1wb=$)h|*S8ETm*TBr*oy!7j zk;kA-Toga=7XwG#>~~;l)B8iJ>Y|a(tIzW*<&OIvoxkcjKgplbo74T)o|V8=DvoO6 zqs(D&b}EGi^Yw#{eJC@#i7)6h4l{1W^|4PktjnLT4b)Z#@XR|As-<F-;(bGjDD9TF zD0_<T>Sr_6)ia$@2Bo@d4OF8p{@NvoB;Z0s(DrFmhbA~$@>;o?e%0vPOM}tpm<-Mb zt_W%j0{h`Oi%(w&2tU0BFvKbV!W<wGzq!wLnd$e(_%R2I%1iW-P$o{HUsnK5t5<8` z;5|FQTs~VxPhGsHM=aQ~S8#V|AG)g7diWOZ?WAKTD*lM;N77?2B7>t|4;YToOoJW- zM$(n5%e>n~0n!f$x{J%MV`c$AnY$;_DxruQEMw;2m6^wfO%b$=G%<2siUY7j7fJru zok2(YfeP7kxysk)d5n$>?k3?pSKdn5ydD4|G&C+WOuynwx4caZ0E*n*eAuEo!Fqb9 zy9*+39YfzYg^iU^w?^oW=C!VIY}mqfX`x@Wg@+JZ_+Dukn7iw@A@xn^5n^ETj=J0i zL~CG_l{JhVjFav4W0v;@@G=kL>~Ift@=L1|f<knk!tg<EC1LxqmW#t30sWn?KXMxm zX=iDgeFm-_&6v+kG9k+sl~jRYFYZra4jVwrRPD1pG@bX+!TL`;Me~Vut-ZBp6HMl} zQ<_h=&qps9tTY*VyG;8Sw<f8KT7*u+mr-$-a#JVt%aMJ-Tu)&#%3~8lfapwgJs|kn z^VxasfWORiel|d%-;*^xbo|QP>EE%a;zhl7;G<hx>ScyvuHuwG6lhEH=90_?W|^Zr z!7WLVjX;24NCHKqx2WzR$vq(aCYl)GSOKV&KvYk@Z9MS97X!!E(o@O9x8Bxe&RG(U zw{gC>Z9NwX;l`+=J-SHDLCdb&l$d3LiZ?;%r9-!%N&19}(fCN^yDuk}438W1o<50R znr!!VFiSl|FXZslhi~G=VwOz^uSv-X%;X@=ju-FT=SIJSKX8Q~lE@2!mydg}Yr_-T z#Ui{ZQ{eYZMln*6py@W=zwLLngbxTpQ&%qZ#gn}5oU<;+P=<tcr0peBIskfT56dW= zj#B&Gt-b^e172S);Bk%bE`3zDsb+cuATL{0Yq7l;f~ih--!rlsG9|1dh7`?z#Z6D( zhpgq|T~>BvAPczZx*JK6F!vjbzjQt9>^r!_<3;|BX1oNYts5&Lm@ROI++@A^i(pJ4 zoux)02T2`xX~h)s9gbe<zWWy!fN76juhIA>owVOirSC&A(o;A3XV~6-K+)*ZWTMx2 z<wbL>E<ooMhL|k76B1OmTCNpeje8PqghM_t$mGqQ?|1lFNJCyEWd!T-LNVz(o`3(c z=*$)Guo-K+u`e7soi+hQ9yI~y@n61?p7CSRVr^O$Ln9e#j@>`67ya;X0i-ScWLz3~ z2gTiJkUX{Z{N&!a_`vo-jezEA7lu5etXs~Bujty;H(y@zofDRkeMWn+Z&acORZma` zk%+N3W*f^J=8m%gcYSh7maBQmEt)%XJ(e*rz~)z^=Y&5*!7lrM@jw4#0buqPG=de( zZrXGFA0LOYnf?W1^RGMje}YHhm%mW_IjjiHXr(6K4;%U)pYh+0gKag%n^8dhV*&sA z0}C)q%$@3Ws{J+H_~*L(Faz<I_L=-ZNu&w)Ev;4OFMZDsOSX??dC#xO(_bG3X5|`y zKfLS)*f($(f8+A4L)gE&_P-xY1Yh;JWs%`82J`<|N%80&p?|*gKmPfrf54oA26N6P zpIoGM_HTUHHZYSeJOADlU{C*lR5tOn?Pxqxzk+*>eLCS6Q~X;nuAo9VCAGf4xj6e0 zD!{B{JK4(m{9PM?M=Wl9+Ao)s{@PweF9iHKJN)w4-<7yIXx)xf(02Q~^7do0`tM1? zAWUHvjw&GhT~i^>j%4vF!t{X}{cj2DzEAN8bi#gdgIQuM|3gSXJOHnl%hi-h&f=#_ zX9pC-+UE~x!YqxS-x{b>?#hKhi6VpzZ}kj@f3&`_2y5fz&qK&E#G{QN*7CZW%)W8r z52}70QoCC94ktC3qg1?E&)siZ=MQ!`d->=$`?N>lZ1<8sQQRKxm>d(g!STjogDISH zVLRixAf5CjQNQp--+i5P00q48ir-9QkUMxYDq7yN_txZ=V?RdN6S#N<%zb=#-3TN- zo9fad>$BwzFx)q{*;-B0u%g2~O54<Y&kiyun1GCvCM|dD+Q10PZ`V0~!-gAA#rOth zFz9Fc2v)tXUBPA9>`DO!;GgbGLYBDO-asP>Z(5SIu*gEiOTIN?M}cOw^boB;qHuQ= z(yZ~jGSbCCaM0L5ioT&<v6&0Zn++C27ZwtiG=C2O^5olpZt@)MtrZ7Z6b1tn@x^;Z zpIer_-Z`x_$LT4wEzP0$`CVYvz!V^S1^mmOQ#L;8(zYji+y&O>$Hp6BSvzj8Eo~2d zcxkh;u6Uw&1|&Z1#TM(RxJ>K1Gpe7ASMX_CYFz*J-#KRT1|r?bCH{!(^31xHM@xsa zT&?aSAltvx_`m!i+JW+*e)Q@?NSREZ6^L~W3JUh4SXwii?An)!z=<(}$hR=(etx_0 zEmPkOT~c13Oxh7TvGoPpg^3K?3s!Ae{WX!BA>=T^RPZ!c!UCxx+RW<N|HIyUMm3qP zZNoDtGGbwDpwe_4m5xZSK^?`BD!m2;k=~?3is&c`0xCj~u2KXk(m^1x0FfGs)BsT+ zbV3ObLfUuTIQ!Ypv)^y4&#!lV>)UJ157#Im_kEq$*^lFZjQvmiT3hLB3iRn22O$H$ ziYfTI5;lJEb3V1`QkYsTLF=iApt6_kUKwxx9kR7PoA4RRS6-TLT-9;i&#%Nyx(cJ@ zjMAiPR~8lsYOF-Wo>>g!HX|<rOSq>*G~Rr!x3_qou*1s~{)^KFapr3IcNQ4JB|xdi z@ja3P&}?wQc<6Jkhyc$_y?Oa>ZLL=6Q~xBiX|=ojy~XHXKfVA7i*|^Jy{sKLHo(LM z-iKF<^j8)rQ~Q4s*{rITe`hr;+zmvR9ZxK%J)IAr=WT`*{dmrQ)!_t`(Qg5KD9ff& z2KW4{#^3*oZT!P*9_j#Iukd9JEc^{{s@k34u?2<`{-y_e3Gt_{&X;}f>p;jhAVNX$ z?Am0S`e%d>zXYLylP-O4NA5fC=D*$RfA40sDd3HAH~Z0)rtd>9<)68zb{2?mlKNTS z+YKBCpby&&jo2bgAvka&e<;DPB=i5h3j;Ybq`LH`N&WlSd?X0`6c@QVEO}*9G47v< zTt*l8oA_+w@9jh`i$Qp{>2Bvn$s*K&7kH*JP`<?{Dg|74lb2Ayf8Qy=m47w}ei|qO zPP=qEe9<Tjq!j9M*zEl7*r$wVdpBLF(Rq+mOWeve*gWS*tBe)C%m~`RNhixU0kaMh zuLHm1aK#>KV<G4#lb;WET23U)!+~jh!>)7EFiL8F&0LA`9F};g_+nFlKH?IG4dgdZ zltpinZ~ae?-@f${M;qWo<&A~E6T`F>w=N$N<E#<wN0~d|v9Tvn>FxQB5e+Ypj0Q(? zJR9r_m$_Ig`HpfNMo*IP#07+)cipO|b%F+rRkjM+3mntv17-z(PLoLBUbN|ZLeKZ# zVST{1Rk^azM}Rg0kIvs0<=<Y5Pl?(<N#M^!fUmc|zkp5N1C*0uun}cZg~{c)K6bKL z1=VdFDhp7<SQYm>L;((KuO~F4kgvbIN>K!ImD<N4quZYKcUJZ5<qaO=@EhJ+{=ETj z8r6Q|BckEUhvZRF-GqZr)AX>t)&-;WV}1HtM&qrV_iE!-mX#gn`g5oMoS00nJR?=| z@oc=Sb%9zI8V%Mlq_v`<IC^C_IDJ*^p}j|p{J0?M9td3ojY|8kjYT_vX7tP6&!UJ^ zTF}%MYS0OKR-GyHv{|b>ds1)x^?15KsPcT+{8tvB%hyw&zNPvC)&g2{`ZMlC@nGJo z`bf#bgJ5^28D%;@3((H0BcY7c_0PArA4mW4^k4zTTB6s|aTWa6<1pZa$qmFc44w+X zU|EzJ%WO}grFUI`WZNmw%3NnN792azC*v!K9(L1#4YtL=P{9fsliyPP+i!|j7TR*q zq@fPdV2f8nPt)UXD;4-B)|wvM9#4Z&$Sax4bu??mwfSPV=@%(z44YM_9n$U^0G6P` zpMz9cw%N1Ng{%DB=bP||`qFa|S#blwW4p#4@hlW9*JtY|^QYE$7%#&{VcDJp&=_rk zDSoQagWcwY`0Z5jyJ8*qkA;{J)Y#|bF>f?yEaWK<dC1=dXW&0u5h4_(hl2)Cs)`f# z3QRg0zx`y|VSt^q^&)H1`lZ|1jGLAY_ZwP}g+5;4b3xO9&d7c_ira3Y(A3~hXm*M| zbTvNSB65!`%-&$vc|RzGnPwmi4$;1y!5lG)<Eq~M#4sJ;4`HLECEX@*GG3S{_r}Y7 zP5VQ0;d}!ieb0~_iG;<c7@$}%rC5Gx{z8v#i5^K7BMkVA;@nMtM+Kd|be;zQO|&fg zP?*c$LJh0;9n_aMb^YwuUU#annzEsnjNob3<*|k)ogG;M4JVR4Os!3G7Z{?!Vlfo- zd&H~~ASbx1Mg5}*7GBncn9ck35liOy8RnOB5q|)Qyf(~*uarq*tStb9Y^%Wg%_I;6 z&28K_gvHPsPYHnih!h(m%pY6IW@EUmo2;C1=F75uXu$~KL757Y7oB^?9Ucw5B0K{D zKidpB?F<Rvf6Y3LF+YW;@Lr3!85a}xa19Md$bgB8ZLTkbHk>NC+;=)aK*0#5O<;{y zv3267sl)|rl<%0<MZ*&8SbL3p&a;#82AcH09+NI<zR_ca4F7)ev3CW%_vsqc)!$fC zRY|Z%RVONWhCUElwQll$2~UmbuFy|DxH=ORUy<0C*kG(RSp&8T|H;vG5d@Z_hShw! zkgtTx#D0&a>E%&qnT4Q<)_ZV>N}8(X%oO7(lCm8VBBASJRn)?z&T8soxz8)@J3jT* z9^N#3dhK6Npj=Vg41~p3&$DCz0RKRu{MHnI)Vq)^FM!0jxm(KL1FAB;VeVZ|XzI(a zRs7z%I&HLKpPnYqsw|Cnk3r4&2Ext|soweiqkgcWC`h`;K$GP?J@)tLC#*29^g8P> zprHuP$8NZFf_)}GO$#GHV7}1R$%?rLMxDl}+Z=oFp#S?vj-8@80HHI(<JFH=!Kmjr zzsmvd+9my+8bSVGp{IKtU+%=GYnu^M`t_kh_#<_pFz~VhWHIH_3cqV#0jz&Jeugmi zjkQX@S+ikl6t32o8RnKno~^%Z-K+8L_|_m<^RkPbqstMa6u4MJR#i<{xUrZ>eib*L z(b*%GXFGnkyv1HPq!w2bG*6lEDrvz|HRgm>0Re%!GsZccIYAWBOqye7Vc;=}y>J{n zxnlQ|oE>b4&V%!FME$BV`&bPdL2chhBZWEVCIxr*yrvO3pGQ-|7T(mYwBX;bHhSyK zZati&o162hsP^~X^$#=Aff7a|V)`$5mhCTcHwzxW@sHf?-^H)STiQUb#l~Ym`9jQw zcwv<XIng2VK7MNV-CcqQi1Uj+{;9#Ys=jPA`t5MM@rX%U04oQ7bOOZ!z?%#5waL9e zd+*>Z7y0Pt+q?Uf4OHh_J$Ba2zcGO%3H4)~KSV3Xo=iumx%+)Q0~jZAQql@yqqRfc zbU<uKJEUs=2y9y+FPsz>1*~vp#lsz!Le8(c7rl`(w@3EeO;W7!?#Q5x(owSY?kxLQ z+DI5|qjf+X;9^INeL~9<uRZ>ACKbJ^*oS}p<%44uspz4ZCI`H~vAkDBQ5gFWMfaNe z(Wr)rWKW^K;YD|CRE3rE{ncKUV;!nFXz0eQr(EzyywxH)nL{jL8fCubNEWThvS`*1 z4$A#z{2BG^4*!FA3u`%m)~{9b?7pBlMs%7Key)pY+`=IHxu(|z0<ADrSdBsGnJ@1c z3o!%Nlgmc}x?|k9$hRYQ-UrKTN8#wPwkZ-PI?*jp+~J+^>N;4p3tX8~wW~u>8T9UL zvkiLkZ3nlEh#Z8j0Z^0kEB0yn0=VO>oHYoVBw5NE#s~<Ne2z1@IgufgPfsch`P7}T z&x2y&*tBz6bRRrS6OJrE>nU{pRs5DoZ8+T`CA>rC6uM5X=Y|e@N3M2=wApvXKBW&# z{Sv-R89oV6x0YF1mF8xQ&7*!b+I0^~HIhKl;JxkRRj#dr1{oS#H5Lol#VaL}jn3)F zG`q#=lcM(roRbUQMbYLNS3K(GcMlYsSy+kh*7CtUx2E^=KFNtn_Z#8%9a=i+JZ6cm z3m6^UL1^n0WZa<81saR-sZWIAFZW->Qj#Pc-b`nE=7-d=pp9BvpU&gwMdNo}m*##) zP@OHa49z`0D`Y(rBzgTEHClP_6g#y3S@Fz_yFh!$2O0?}X>RFSo^Llut9RsUNU59r z$k#{LJF^1IulA~t<tE5hPt|%LgT*yaQ&-W^=#jv%)HV7A-Y4mS&40>`J&+%-DIvHu z(!PXwD_i}HMaUpm*r3{;un~|I%G72I2aWVz>BoW>x{Mvob01wi7LzAGf;e`k2YfCQ z@Pm*h!Ot%<tPsWL$6kMk&G*yrObKc~RQzsZw(%KS^)#e36^hS!dVQvfGSlMt==_XD zF*@wCdNGj_<{ZunJ(&=gxyZU2A=LkwrSu7##n`;VHWE3S-_CA+`DC2Y8@@ce7ObGf zUMH$7-#dN@9e_%bJ3JF5i{i%%(Ga;}L#Dp1ox0JN?W0puI1G^9IG$bG^zypE%iBE9 zk_OP%17dtX^9gH+72=jei%D!A=RV8HSoa1%vSG9k3S+N3=2vyi$StM@l{)glg1r$i zw@)hDpX4-m0fEKKN--mTts;h6Y@fQNgaxp@ig73iP!bEw(q0DoxqFhm-}v5+FO0g& zu^Dj1XpY99N%5Xpe#*paV^fOAqF}JjGM0@VvQ{YCIX3z8q*DTWRp5!~z#GJ$;j`nx zOF*R9o)f4S=(3<06!n2~<6=mu1MA_3n0t~%Z<L5wdbYb`1K?aN!fvRA$>b&lSx+Rr zGK2)Z<fb#@>Prcln|sm~Fjdy%7l!Va#qFi@D_Mg}2Tm%yHde)G(Z{<jL&_DSJ~I<+ zJouec*4)=|%#~~)1m|6?FGuk=;H}Sz9G9(Kzfrr|dow?IMJNqDv6OhDSv<;%$`B8H zVh$qtz!dl#Uz#TEz~p=_*zw#r<m^nGZn!6+8G0?gm5Pyg-18!KrNHE=rWxAaaelSb zuM4A)eH>${aUmYdL#ZzEmMbi%9DKfi1Xk=~(Gt%TFb0U$yqTzfUqNnqcWVhFuw3VR zawQ7I(uyvqOp;XEF!^wPJx_S7fP*+$SVt)UEkrAa9O21VYi0c9EgTl8!p?gf-aLPZ z#xeSBKcFZi?l8T3)5H=%?&*~{TU<$6i~V@6gYE);{;taBj1MJk(#j--b`{pbWswr$ z<O9tni$Ux={DcVp+uN|69%fUfof>9JMYhJDgQMD%?!yY}uHQzkAU{9r4^5sg?S^mw zRkiyoWclPU7P}0OjtLgw-c<eJ^fn|HEW7|}Mu{D__(Zid-UQAcmM3VK04hNNxdpB$ zr^&30m1LHE-ae)QkFgJ;y;|VoU}of$A#Ca517MU^S!+zJ@trxG2+A@wa+FM%zxRRf ze%)HX^z1QYZXlvz`>uS`_N-68b5Hh>e7c{nS~;g2PWG<wElxF0g6{r?)e_BwaIZ~i zSd4w6|6S)RXTsc&X*Cnju8FZmgU(eTq0q%<%%>LQ$dYMs?>Cff(PqA0blqR*+sRY} zAd@Wqav>Q%>s|X)7&}@LbqQx%_^5yb^fa>s_A0ebgbhBD_>jZ9L|+Db)b)U(j9+=g zU$<hmUEQng{RDl<8aaV`$or)4k}2#v`Fh9UaBHB8SGT~bni}l`TY=dzFWBa^q7Rk+ z2pwUTZ7s8TvY6quqkiU9+o!JXS8nN>SKZ9^FjP`&%Y&nC`$-i@+Y`4d?B_y_!(tn* z+c50|JHZNp3Z<G_A@w>X5W!kihMYUUS&lt|ott>|?lj&iLnAtOa%X8)tVhUbafCzr zh(7LF(%E-?@E}Ja<lNE#YkYDdUHl^wY~jV{#d@0#1*ug4COQGL0sCM|Q=)I<p=Fau z0-&i;HqfAd@?ex>(qmn7SgQotc%BrKUzjky;l3*_nyFPlWtBgCyhXO|)Q&0v0kHyG z^auT7($6?^8Q6xmPJLm`+`(K4`tvA`jC%stC*(p+se#!%lNqfvd|Cv}Y<ihLG4gnc zj5I?jDPW9~cgWQK4#{Rd56P=fYfO{{JLo3K3s^?snO7^i)9<5XQUl_+NaE|M;9#jF zWq6GErFeV`X2n4}^vn@yaRj>cGFlpzV)o3iXR7-~|52VsEMx9z0f*6E<A_fUBJ>6g zu?c`nPseGNY=1ZQ;GQVyr5X>f`LYjzS=B3*%O4c22<W2+#EQ1(e2?NSBc7{#_Y*!* zHgfI_5$!PkGTi}(6p%SElZ-Vx7PeA+)VJ}eEdG;8P&BpO>gb8I;9KUa-9vxUaiEEz ze3HBg88?L(527CfT8Xmz+Kxv*OINb}ppDW2MFNc0+LgX%@Q4jT@<L8Da&6=o`^MCn z0k*H%GYvD-bl(KkQn^f7f+owd^>j;XL!gPIxDc99M{59vYylDMt|n#kj^sWLvc4Oi zcaNaC@O}W$^AzmugCj#K;PfneoPZ-xz-<l0Sk%ezsgRb6k{zeB4x^(gYHtNPWl=vZ z&A8|9E2`bF4vg-zM?PC=A((bnF5E6&tx&(lSbi8%ae0Xh@sl~msLK%<U&6LT&P+-l zvOkY$xbEmT4RKV>2MsAwu#?z)Pu@>CZ^L3K!=>{Rp#JARY}sUgBGJ82YpMSjGK!zh z%EWBhhV8-irx*Qx``V*~W{ELZl3>=%xMabb>(<e=yl87#*aEi3J9g#$`E$B#R$Sf) zX(M)4(CzevuR#}oue0epck$F+=)7{i4Ec-^mtvDiF-<3uPqnK#(m|?s-$nsow+@;~ zOwfXJe;wk>!UbY|0Mcsq>~xQ<0*3}_XScGl&9?dk2*1huZlwGauC&iZYAbUhnG;Pa zD!C9i?3(>l4T>@s<1y684)K?av$<*^BD^9%Xg!E$SEN&dUGCzc<uB?1d65D<NmhrH zJS>Ndc@xroCsfa`uKG8p1`Qq7l_?H>!qbpEou`6moJJGge{|LH`+0ISlT(oYx@%^s z*Jeve!SX`{@8cZp5NoA@bwgjuK#ub)`OK1s&H?-8SJl9?><S?D+g|bn#x{lmntr7w zCg+z-k;vMm#;AmC&FJ+n_=DDY23r18CyS@~ZJguZnp|WJ<Xph*?-*jGpc)5!m&I{| z!^^R=mv9;~7Ly5D%*7X$h+KOb%k{(R*ez;%bIjzKCAH|}{);4ami=_!A5p!+&Cs>+ zPE9ZUUYW1N1#~Dy&GHP`m=EcY>ir&SySkH573Vjzh-Q;S=BI9Zi35)rr`2hHjiFdA zljYUKjk<9T3Ut6ojUrIZ=K=|AwX~%G^|I)#NxVOcBBs9h_Vn~QS!~SiiMYT!0QV&; z4y@hBi|!+OSL(|}`W_HNPkrIk^V@hPM>~Qz6<xzY+Q?=1<|Ej2fns_BasPq0eCp$G z!HSk9XarF13kMDsOr7SwlWb%BO9)6*2uX?pK816$N$y3lTlm<z6^x86YtdVDIa%Zm z9J4%l8wbluuykuWUc!nH^)<B(rN<A1ZgdT;pGfj~9{ibIQ!+D=i`2zq+H-A_K>g>* z=_B1UGq-uAB3+a@Vw-^g)W2DmmTArh+S7xVbJfBDn``j_G5bJzyyIu}h3gp4b`?cy zpK$sZ;Kpl@uqq{NCL2kQW;WCPZ@hEsqaFO=%L)$&FwsLiq8p}}H-qy`vE4D$_|pgV zEe@k0N7a;7<Q(5*BI?&Vq8X#*)-=Z~8|K$#FVKL(-LqE^CxO2fXgapjT8HJr1CMo> z{-R=b6YkQPH509PCrFe-*do{Y$G!vjMzah=j@{ZlbvDvMDF)_U6Oe)!^=(MBu6ewn z%gT1D3*a2Y*!shPzJYFWubSXB#u_oGNM+^omXcLBT$#da0PV2obWY<grI`58$pUHj zA05*<zfe6vSZh<XNDrQSgl!-baGyt2Hv0FK%qM$QoiN{E@ir8@nOm!2?{0Xw$&ly0 ztEMOVgK)Q(+p5OwmGRFaSc;oPohE*6X?%=N0N>S2+(NpquQV*Njqi~0oS}$ct5(>` zOiyX>nxmu<9R7@%`ZMc=O{G^uRpZ1Zs3N2Hn+8ckmiLW`+{^tguRxt_z#E_LGrGen zYq_j$@vI5{){g8}ZCWCbcjzt*rVSU34xc%8>CP5dEXJO#LB!-G#U7@c1j211nyF}< zfEZy4x#?x(Koe8+oOaH>BORgP6KCH#ry}7gK3(DgG7q_W#a-;M52Cc`fGuyIpjVld z+ynK6D#Zj_hb4!aa!IHP?X~iLF}I?TspZlCIx!4;z69xBRDQwMci_DA3|29G{@iYL zKx{WNIHv}M1H>B8eLTqcM^!I(m%-5bb=oRBt0WZB`SN~z?}MU}nu!VH5fpCA?)$Ue zRpLawFN@%45=M5jvq2N?BVH80ELoT&tQ*Y-N=T>!{G5<dM=f-K@=b|^SU_ub880L% zU>p2rAS*(o>f}Va_lSd(qu+7P9nkpn$gBAt6QL<@nNx;_o%^Sk>7(hDb%H@dOI{D8 z3Y5$BGz0pK6C5a(SLxHG5@fXcOtlhU{3PTrMn1*)ZjR9MAiV_hOJK>>O{T;4m-QOZ z_B);c*V-|k9VJ`x@xAYY9Vc?BQLw1pvN14&Sw|a*1-z$9+pttGr5ND~qLP6MdrHmG z&1DS0Go!ZG_}>qiOwD=rVF2q#z@3WGq-1*3X;h`=-Ol;!XAKYiGM$LEDDtRFk}cTo zf!na=SkCj|w$YR=(ZdHdf-h<?hNuJNkx**<RA*h7@AS{!e68>MT=9skurS~$9Byqt zAr_-t*_E_pwl*+i+f2++Enia;yl&P+MNXHNoTZyt*jsE+%_5xj+ttQC0VH^IOS1E< zqq-4lcvZQP%_EXz7lug<y5|_P;a(>f9W6|k1#Nf7b40~&S}^FM%7ufL)?}Zs7LyS? zGaWldN2NCc2J?L%utEp+>1&*6RcpB>M{SL3@F)$4Jz$ZjbwXyo1p{acj}EGtrfue~ zg_KR6mPP={Md+=h=-zyLaJ%U~F4W>P9S1;&ey`B3rg60oZnd%R?2g`=3D9eR*wuW; z^pypkjVL@cB}3q|`;=ic%kRSKHX2S?{I9fI-L3=93z`m41IKIl4QpYlNL03V(Kx@n zeOm(-&!K9sOv^i0*oi0@9vFl&r$nFk+oLL6k4G=Cv3!j?<@N0Gx#i*Wplb(v>`8wt z5tow@MlJz<zy3q4M$)|2+SD<}$<&G>kG=ND)qo+t1!VDPWQ$Hwnr75kfv|n&8P}|& z>L-=xppFbFsdS!|Zg#Ua{gIBapnx61DzNzj-$*hynM&<;rk5VJInW&OcVao(a0|5l zH2LlPzbs#MniWMXUY!;gaCTrBpI^OyGOcQ4NpAQN=d6U0R`%oe?+vZx_8hbcU+#@5 zE;vWtOd>1SwySQEls1E5REuK%z9Xm1x$}1Yob!2M>%Iq~aeAl!ygl~HDFZ6ZqI)dt zvf2Z*7<1H%Jq=XeVfwrMXR)7|rL%ukQXS*dF>sWV5UT!i1EuN2EPt|RiEpc_^TIkE zll}rEin{0%(`%#aC<f&~ga|^rm<9B7@yj@SY2#Cx(mSN9v@?~&ebQo%-`=77^Hk-? z;fKQLC3;TDm5@Of&nt`x8}^|vN*%h_o}IOT47%ReUP&cX@?iJ16r39L9E(<Z07|)+ zD<>#=OAV9ujQ|KKBECO8%_+};-LZwXKYqeS9m^b?E*-3XlI{mGTzq;ZNtKij#5aq! zv2%9y#daHNiYKFi7F3kGZv1<y#B%O!5IYU~Ht=ngjc~?;GyxvbDtrD8Ls=!n%9qdU zG`k>tyoFtIQX^EI=y2xmdDJD?Z#Hk-bMpXR@|)MhC09F)?@12BwZ$l8Gek<Kst#^e z=I21Uwkx+^=jL0>Jua@lR284;Ic+r3uP8ywIYmP;<_4bgc2tslopayNkDk9X-K<5O zH?`WBlQ(S3E16_;O@e~-kUFKzW+!5DczJlW*W{;-e0hWW_fI5=srL@PT?-;11)vtJ z+{kA6R}<zxRk!>;h{-7IU$}WYYAqg5oga%;mk0zk4*mM8Eeq#)vf_JNv-a~E9;KC; znu~G9;|#}wT8d03;a$2vg_u$Ie@+8gYsnE#|IQ~+{p;J+l+$Q6nUWq|Q!MM655Z!k zN>_}d6<t@^n+b>cKDF<SxZRF)?BOC$D-k9B_6WO9#K}N!^vKp`eJ-x8jZfbi)XeP> z|0^Zo*=-)D^aA?hTfLwwbUkp!7cX>3eZC5r>Sf$8ac(!G+?WcnqN7z;GSu)zRm({# zE3)W<(xMxVPz!=vAQ3i^8bp!GOqRG^dHs;awTrfhCbHG}<>tuA>BC_Q<ze~Q!Kq86 z_`ZXxH?F0GtcCdY4b%90K2nvYYv(J8O6G9ahUXhWYQ2NnA!@Xjjxn)N{aMhc>YU1- z>{W8PVx%8)R1__QPhX@3kKWJuZP*=~c@t2h7VfK=D?_%*6Nc!NIX}HdOwgyK>J`u} zXpB)`;HQoBDMRfnjkSxU+L}4}x|cp3M<bkjrm0(|wb<UX(vGCAmaPCZ;Nej-Y_R%% zs%@As?VKWfGW|wqFL}O_^#VQ>Hq~M1@a#N#*DddAdbTfA3&`3dvLn}WQUWh%&=9!a z#?y9Z`!Ft`2ag1bwcXwy>K(NiOlzh6ze@$w!|VS9<SOYEzkCgp@c9RwF`I2;Kw0R0 z2`>k(K-sgmu`u?*h25dDC#DA#uP0vJIEZF0+4z^6o?(87-KJCN71vnSt+#KVfy&jW zcJJB74|n-u4RzzOVJlOQK;j&V_SD3>F*tLj1jnh9>Gk7r`uu=t7ui&;Tb>gWA1GeW z0T}e_jV4d>iJ?uK)q}e$3%W?(XrF1Da0!bWrBPmJm})K5nlvuqW$Yvl_J0yqLP~9x zY1yeln`~n<&@9Za>u)YlvF+nf$0m9Ax3Bh*Q!?CY))^XBSw{5jC+mI{*FmLd)2mXn z3O6?d4}kl9;E2-KC6Vw(;B^HneZRsI{(WZHn5L}*`2SPwQS=@cy}Y;_k!3W_;u+Jz z&>s4rE3M#*;#&z{SC%tOpf8$dG?FV)ll*O<rgqJ~sh6PLcxGa=G?Kgw0mC!=z=$V^ zGP$t1mUUA*YU|gQbbYqm_gd0G(U>`>2iOA}_vu0cdQ;F=ZtBXrn$2yCBOQl90nqzW z6;j#!)=P8)jGQt?@LAO?82ESo*P*h3xib89-tY1Z6mC1-DSR)~DS_#QfS7mO{Y?d8 ze`tr?VB_=f*Nt_TXz(HKpHjXj^HvVFLIuQ%R#Un}!B<v;7(ks-8<ejsd1XLiqxQ~~ z??I!rlfg#wjwh8(^_$wxYS0q)N#vr}*FC;6NQO$$t^IrKoz~z`fOJ}@!88=EQ?0;H z$-|Jeuj@P3Vn77*?5VcztR7|P13TevCSG&cltNC0xLV`1f-AqSu3CdW(#T=O$$xK# zn;}iR0N5<hM$^n$0py6`?Le|?<Y_uK?CW_raUIjS;6HC&@gls(q`mfcEPbt}Ka?8a zSmG6T0i;5LE>4i<@3(`aO?bPIn5Y)>mC9JH<Z~kE<)2|tK2>ytLcb&20PwMmh>Mga ze_c8&-%~Yl7v1nSh!hJetTt}da5MzWo3Cf?e8<SF#X6pDA$wz24TgeSQai)etVTH% z{TX*|d_B+b4Pd&f`g4Du%i%p!jE=FT`fl0!=Q{`jy0XO?+9Agb0>9^Kh`jz2+Vo+X z=3c^D*zp9L>&2GHcruaSdI5R|9pd0X)EgWF<2K(&h7uPTAx1|PRf*4fq#DOBALqAu zsU$r6y+`?_Ogp1=TQhZL{Jz`dyi(Mm?1cd?Mg2`{(Eb1=6gB;Sqm&eWTU<9G;J5I> z4rzw!iMSV5IJBw<EnKi3{GKx2*1-!I^4p;1$_O^L@%5Ku4(0I)(PWI>b5EbuO(n)u zz|T_Kt$9QF>pong?dLbilzTsK;c*g{E?++@ho390U(w8IJ3HYxQX}$B6M!1m-CU{1 zjkFN!7E4PVhK`?W7VxDkc$3k_N*buEJnFK;H=Xp)T+(0>#rx-k?5{@k)+HRDE@dWx z9&hSY&;QO+888t~iPwY8S<T}(lc%-%j{?Ab3O9gm({|A}HeZ*>%l97CxaP8gcGRBs zoFbGcKgR)^whkx|{f-$Q>6qqzqp$YoiUg}+5w4kYpFTOiPhO8y+MWCp6rjQf!IkbC zF^&E9ZTLT9+0?J#NQFn`4*mYUoAj?g>jrJ#g_&r6Z&UYQKR4qXaA86B@Yetr(|6p% zzudZ)kXr7%{_6jlS#mdY%a4l0o%vsX*ER5V%9VSL{p&+~D<y!wwHm~U91*Oy?SD;z z_@9IP_g5kOKL`1(JM*6#`3;BipBwotXZs)5`mf>bznRj1V&u0<;EewpG4cUzzVaA4 z7g-tl9kj^*8MwpOfb7i3NczL2?<aKs)7xf5gAAMai+Sb${NLZp1;Bg|5`CU$Z9fDR ze*ev|zF~8J|J5LbEsDMp@OQ@jtt<RLJ}g?T#rUV6)KmZb<BaM5FCO?m5BWdN|6lFw z|3jwxpOgI0N&a6k*NiqU@|JBoV|7FsDjPVq6JmM#<2pUZesGH4p9tUDn0}=;(QB|! zj)O31jFeo7)Ix?n=<H~HCO7K0Y`Omw4gXspPpxUeqz=#Tr>^~|pLfA?dG3WYS2>Nh z`F45XD?MEt&t2&;yM9l&BE7~8b2`GhVIni|w=0y&IG#>}2)Pr~7pWtUul{K4(&piR z8Ir-w#NmXBYM0MnD0#P0ieGM7jkI!3)p+B72)9N4P^cmoScCMdrHxnsnJrN~&I_%q z?)2<VcH}uecvVt&l+uLJnX6g1e@SErkDrNtakbYC_29*q8mWKvGXE|TG8?(wfd1~Q zOSC!FKZX3?{?=I&6iZS`C%Wrh`TX{aZ?mgxL&r1HdELCFq;t{t2T7N=wz6WDGaK7f zY}8?mZ7z24|I!Nhw^u~%w)Wr0h!bX=1tT01`lQ~-q3ee7w8UF+JR(ff-kB+!G(U1f zfpsff_0!ImAA~Qw9a=aQ>z1;!EQ{)xva{>_cUqtS^_UsmzkHH1O0!59xxyN71WMl& zg_~YwuHml=+1||AwV+pd#$LM>J*Qppdr#5Sd#Q(sFFc!=2Z@e;nm=kEQ?^`+JDx0{ zKX)%J;YoL9##7z76oV>5j*r0WPTcP{w99Uqm@tad*d2K4XFuF+&DX^mLkX?1#Tp8j zA7+m*IAK((P46XY?S*kxbcYb#q5z?=q<-iH(Npg;VD*a8SE_+Q=3ljz7k}72VO}{R zY25eq?d`xG=E9@NUn;Jl9+00^3;n1)_@53>;%=@S+W7K-Qeo3KckM5)O4aaP%5Rk2 zZ?MWGl?Ofvxjn|e+bwp567)7gi9f=2o_R3p+zs&`ertb$ge!INS?s(`p^}2Qkyb_e zgW2-(o7JS=_rf(Cw@Dp5R`<nsy8i$5H2;W59o|<EJ$FxVH>0=k5v4!vIYpcG>3{j_ z%RrQA%Jm-?gZTut%Cl3{+%IMfc4TUYoC{qGxCRdI7_6>BG_0KZVqRyI_eayjj;El5 zu1@V1)uq8bU5qmjQkuVF4!Ltpuq|Iu9tz|IqWnK5%e(yWi#r9i11ByA427EuChZqn zs3P=#6y!fe6AUb-S%kYy@_cU^{m+}(kpMo+Gxybk-sW>wZ>QSqJ4Hjg8<thjOy-#{ z=gn4ski8w8#0<co_pQF}*~Ybb0>q!}F=M80heUIj^X$={_Siu5v28!x7ZkPzCvXmi zjgeb-I~NBYcr4_w(<;{lYSlco*a@6~{9u*ykG`^lVc;<x32(aLxtqtCllmKOKv0>6 zE{&}?p==Hww5h@W?0@-;@BQI01eDp@NEzI23LQXEYIWLR1Tb8!v~yv?=fQWYiy>A0 zXbthX5_CS<#Ne3u4Vk=M`n*pnXYnpR1;3u6*@XArH^>Fn@!Q_Y&4&Ar7~GgP*r5^1 z2&&NiY8)Q&W0h#!1lyZ)D7H!19JuQ7!|mUm68?8T-UfjD$|pZHkG;6S+Ha3i%~J`R z$*pPpYhR4LM^JYB=Fz0OnwL@FXh4ZmO29^W<5+S4_xb)J$znc4jy4NReRK>RdG*5u zj>p`H<MTxS$1<yefwwe)K^SO%;r~%Tenp7a|DHA-S}dw$%?{skO|Uu<wc49n(C_6! zo)7;3NWx)ayW12@DgoujK-7E%JY-_v8Q4vb<;M&-P*nl@<%Cp)diSOBXH6A=$zgqr z;JcLNT~C0;KmJ%?TQT(9P*1U^zCa^vC@q1j|J+@~zJ*%#-?r`6<LrvvW6%1vv|TNv zb)Y6}g))3>BJo8S1ex<y?>JG&Zc~QU2lVmXb53XcuEjxIOHG(9l(+G~4Qm9fmFGnJ zs?z)-__Ua6UO1!?)@s3zxxF#!kn>bR+iifS(%3Q6=WhBzm=ogflM>P^c|O+0ThYQ} zB}X-KzP-$No;js=g7U+mwGpcw@yip~dWViLC8UU7txoq$zX=EH0YG=nFS0sD4>>(+ z*q@<ET_GQK8$7{~*g_Wc{-j<pSYp^#xN0JP1Q7AT>bGW{a>@HNl!gJP3$5MCjWYTJ zYa$x&P1cWLVnQaK-gvO#($rKQTCsrRfNjm@D7oN8Wqr7oSv$#j;f_PKQ<&m_m#q+D zWBQrz2H0l@B-TTp$;ty&L78vSVRnt=A%gyf*5cI^^gDO@_0se>gTdoUB#(9gL@I3v z9#bUNHtcG=kfBlc*Wy?#?hhb>2ZG%i19LPlRaE*yAlH9+{qOz3B^<Q)cf7XlDg*Gx zFbc~uvw7aN`pcW17w&y)Hdo(3&VXJd@1d9O$(u<E?!H+??hQiCziuvyl2-DZ!!4Z6 z`qhgOeCA7>AvS85hEV8YJ&`prQ1yit2otkcNa;!dB)c+w8C7Lh5Zh9nehwlPNmp(G z+iqugWcJFpDOh1&ok;f-7F(db&jHXlR!K42cizeoFFaAuR7HFq2jZNKt<8@MY8?Se zw1nes%z=dPWz&L??zRQl3yAriR~5;>`pCU3fo>!?Geff>6YZL3PV0*cvvUUVPff}x z&E${A67H!^Ou?&b^efz#JYrQT^x&li!eJr%H#qT7z5O39(co6A>cTbS&*Pu#Ob3Tq z#;7b00AOR3gBZ0<-3gH0bIE<!IUI?cM>^TIvxc%y8>O-H-nC}E4#qwJE2%r_>qJE9 z$mC_T&1rtP%S<T4rsf5B^A@)B>qAQmX9gAl;&Y-O*+;ig|D*&f8l-nlZ1MfxA^umi zn)(C<tCe-)X(O#GZx>b8J8~i)?RX-vU)s9qLkj&*fs{&zl^MWlscN8wUm4I^8pr$2 zxXShjGL$&VLHR3;L%*5P+A*{dMxJRCa~=|)9Vq;;+e#|I+U*T<QH3)U+|7ub85f^J z4;+`QoV~={6;Ae>+i<t=n(`?wl7?r0R4>~3grGzm_ic1-AxD%Fz=Fo{ZG3bkubTPc z;KgTrvqH&;<?UmmT~XWYP8PP=pK$@8tuHzn`-*T&PJw(t15G4r*N;Z6BOMvQd~ZuR zVoRmBkZHrTGq%CL9EXQoWbX4(=F6|WQO04vJc(^8)$i%ABrSbWi^rSXWcI(nL>_YX zsLi8goUv~RBC!rq6C`d{V#wWu3ytkH8pb=F>Evuc`(t0#PZ5)(3%M_ZFW(?QsIq;A zsAs=Wa~#WeUat(uKtvU6G=4PhS+$N;pMBkE4=$e~HlOmNaqXtIaJYe>7>x6t4Y>!o ztC%In7U_*Y(zP^42b^I|d5XBT!AUufb($PrXc%mmtwaKME)5oHV{D3-nAG$}N5h@> z*(}^W5IX>XR-ZpgN+SSlUDH&k`4*9Z|8QKzsYRKK*Kq={=y31Ydo<X(1W^;*Km1-@ zJwf!KPfX&KTb%+F&W6BJVD2yr3H#WXMtdY-7$iQdW1XFp=k8HVPoX~>mFFI^M@*L< zT<l$3UnyO99!9(WJZPG2ZtHv35>f0L73f)P?CDY>{YpXE-=1Ez><CasV6|y-ib(qq zOvTw>$oq}Gsto&skQUb{lr>pPQ7gR;05myF`L_EuUdWT`lOJNSG52-N(z=HdUn!8- zRcrZj1K0LlZ^MrdO!U>PlqioD){t71O9^p?wkIZ%+#}T()^C>H??`VfC7}0i;fcBT z>>RF5!i)w5pp;Ub{PJEYx#{2SW&)m~(E*ZX{G_Xl5C9>rX{@8wiSlW#Tt?W=IKJPG zCtz_v{i)FsMW2qMl0;NAj9;QY;z`#@CiL(_*QfZYiu;0r0{l}4O7-l>>|z&fsjYJN z17$d;#5A0dEad^yca@5gI<22?^oCMzr(-cp>2w@T3`{DdA9r7VN+^y21X;>pjd;r? zYTy;&+kWlV*mof#UFp(2K--#m!xTt;M=bT;ygD$Xd;4kbio+jC1VOJ;Vg9pgvowRj z^faojESi6zR{l52IxVA2(x!`Q8~nv}xy{nO&8j5CVot0e(@!J}aS@<0U$4Jh;rz8y z>c2K{GWNW{(~3{1i7o=W6L!0W@Twscq+a}eT|7VRQC##gy1|OW>X<3Fs<f`Os-2z| z{g0*3=R}pJ$}WmO44yg~b^Yq++IO-z=3b25()FPLi{YQVQMJpZ!1EO%+f|F|Ulk!Q z50v#&REK}}9o^pYN8ahw1Wz{e3ZNz6YgoE#ZcJ>EwX0TnGMJ8PY_aMu>9;C=OhKn3 z`Q1((wCyZ2O9r_z(LDpv5oX`8{p5<|gzmXtlD)cW_Kz1a-oG8o64=$H%MD=Cy61AP zJ(~dpCZ~*7=X*7X%?5lbi%r3k!+RPias@L01VICm<V6=kU7r_cxr;wUzC}e{lhuAw zDb8Wf4A+D`5aUKs7b=$nU6Ewtml~>>S*JZx=JS_ZylUD-(U!=G=K+4~^B*_`Phwvz zTe?>gKMXA}-bVPcxr+`|o+5h0;Sc3VTX-m!LHI_nO^X)8vexjUK3U%G=n7M<v9E~K zZlQ*Nu4dpzgq%}Zmr~sr<Xv4mw)0SM7p2NS`43R`Yrqzmoixjl3Ir0@MW|lct8a~B z(=k=-yFdHR!bsxY#?HtMcwFPv2x)$K41B*^R2GO5{C&MYF01(wR9k-cuWR+$dsnPe zE2#Sm4(DyN6Y{u{rD3FXW8AQKRf$jGu!0Os(@X-!eBDrLr%qvB1fZUxqwC8`<XLj~ z@_ydo-2EwrJz>c<2{siLLcwo;Yg2UZSpvazUe1Wk=CQ|XF|^=4$c1V=SMiL5yptzP z#;kwDZvmf#Y^)B`P4_&vWe`M@8QTRY>Yf)6wo9#k=69HgktoTLGm{T87L5=pbCD|5 zBRsEJ)($Byy&sRr&$V9pnMZTrkCsNhc%C#88n-gE_KH$X*38EJ@p?F22OT@fz>k+| zwz7J+Hg{_R5LgQk4mcM{w6ELWORC#HXxNg-^l+6iLXlXa^>+kTWebU)nnNb@f6Wa= z@@Axm4(jSFw#CHrG#j!RQ3LjwE|km_`PI=KXnW>?dlQ3|<H6tt9Y?zT_$b2~VoyB* z6wc%uyL4#}3ila4G%G;T;|WnO_UWC1+xqq7$u<3MH%gVg0M=YJjfHe2bKfl86>JyT zXQ*&SgF4qyRcl&Tix3Cf(X5>Kyt|;wRdltDK9PF5SCYFoC#l3eGp{*lm<3P0vZ(4T zEh--`F`j*j4(KKXCQ}%0JH@#ZsN|vu*|ca$Pea?o3?V;%!frcc8+xn)U6-sJRlT9N z2WTxAtw@*+>m##x-;xh>#cE#9wY<X4ja)0Y&Q($v5ZOYGH^cQ=yC?L!MQH&r`MyS? zH(x9;<D*#Mzb?e*oyeJ4jMG=T3g{%>R#7&7=Dy0C<P8ExCs4Cky5tHUM&UCKDtVax zP6hM|ZcC-oYHZS_bAHQRy5^C&IWyJ+WqI@NMPaWD$P@nFHFFy1R!xi8gXVxzBEe?c z1v(9%85elJ<q|Co8`RZhlz}KvbZ(Nkl%vWd7@JK!%OW72hEc>vGmRD5We*Oon((ja z_Y6~=o^j{Iv?(XclUlVzC6Pr#egsAXc3GRAg~45(EaJ)JU4{w~e-P<5u#!dBQ@K9y z%;9`m<!MhIVF~WlWf9dRu*6IjN^@MJ_zvc_T-R`1F3kem2YHb=Rt%t3pjQH%@e>rb z{a2tB2M3tmqWBhS9w&E$m5a7ldZnc0^Z8z|``gzSWf|iw4pI7of*3Pcx^JV`0F4N^ z%0wVwO|8|mtf^jN-F`U|!sJ5em&pVh(tY%Z(wiIfM!~i{HlC^$omg{8P!3w#8Ga8N z{m&t1#!;}~$;o|Ufib87Ntgr1PV~MZOwewRhId@vWVXZ`dWoL+U#O4oq9&3DCU5g0 z4^F1htc#0)<Cb7*v06J4i%sp6`EE`|6U4Y(MUnnK*h36TsSy*^a42&A_U;gg9rBav zg*AcYiDmo!W$m%-jfi!er>GR^fQ4<v4L!Mr`Ub4RUC7n*XXvT7Nd77i?e-c<5$d>` z8LJG181-lNM^DWw*o}=wnM+i3H$&+dibvz}och$;^9}=~)yU=<Je0HYkINobDlu*= z^_==7V9%6_0g1U<gjY>Kn;Nml3qft;%i`S#m^5G;pBvHHV6V6AA=D>(qn<8AO6#6s z=qpiDJuS91$EpYBCZe&OvXZ9eD8ulT*+Q#=sadEp&bXZpe*X?Zu-twH;NdB?vvpPZ z`-KP?U@GA}utVZkQWEyx#Vu|0I5L-XA{uD@v&9EB)|2PfAt17@EL_~CXce;t8WMtH zMLSWG1Q$Kv^4Drs&HWlKaCRUq*yM=2s1w5=!}o27e_`MMr|d>1Mx|@HQPBQ6^)xyL zEoNqBNPT`o9L=7#WFu`xC{vDUu^2d8irCXZLxm7~3oX=P)<hij$CFD%Pz!KO+{6%! zA|fdo>gIk~&)GG3k3$SC><{9c9Ic~aCDzh?2XDxM;3YtGJ#Horn;sX4LdJ(Lk7{p` zG=ym?7-(fNhu-w~zS=H~>*YkP&psmX*X7KNhf%7vp}bOp9I_bLt{PS^ev%^tGc6@R z0YKUaZj}|rGClw>RjIjYEvPK|Lkm5F@R|Mjh4~Lt^R9S<%Ks5uYpTnM8HyZN&kLyt zAubb|e+pDfIQuEr0jY~&7oqp)FauVG{_J@d3$T-+!<nx=d50%-^R}htk#n*D0;Gdx z5&HDYt0L4#L(ma`zxV}dF=D8@g-pKs`7YO(4tsv!xf(izJnwKy(b|>I4_6+(%%Cui z$kbM$k3Le5nI<FvVvBh6p3jRP_+!)RPKY-?G&jD(7>f~QJ;yKMrG=-9G%~Z2v_m%F z!yr(VtWE2NemP>MDq1v3Eb%7sjgf+OOANB835q2W(+x3)^G(%ZZa(66KRn(Jzrd{q z<jw9>n%t|&C4bS;iYz6Bl)D&*7$}DKO{Q}cVqm`hK5}Mh2Js%s!%X(Yo;oTyy)xg5 z_wa-b4ps5Hk(S#hL%C}oD?wL1i*pwx2n~Ktrf*bD`P2nCN6oV}42$jbr&PF)%HkaS z50FO3Pna+B*6S;{_B{J~PH7UToMw`=)w0_vz@&#T=U-0Fq^iB!I@a)5S5IJ;>D!x# zW_KQ_q2BG$Al7=)os-Tbdk<71EK&lSOIGtpeXboJ8;5DNq8QtaP+tYUCINMJ<??(G ztkK*CW;EBn1@Ee(NV1QYy$&_xBVV%;w*g+&;SUW?wAT$2xuF|ER!3CKIEHBMBlZ$F z+%l_t-Q(*~HM@O*(oLbjDF>^Mp?ata1wbFb9I$Sa?+?Jx9iw5bDT)OrfT0QFlH4<u zdf4&dZVcUdsQ)o-V)Nq#q;dG}J!0tc{q341QYkk2i}Ve_ZS`%HJEb%dEFA_f_IOdV zlHSguIqFioSuNdkaXH$MNqr~Uro_Of(!Fo{=-pX!*}-wio~_L$Q|lGPk!aKD>fEf; zi`M#6>&>r59uOA}elo3GjnUVl|K+<H|EiY=%T@<n%!*3w5U0=8ha<?CWUbx(=r8%x z2Q09Mf|y}OFLJUXM<RqvT=qOS*!3!;B09j*YALKQRrd^05w&YjDbU~?!z5ATPBS$t z7q#r1T-hf1$b!l;o3?4urZ0XW;o%Go^Bk_w!;ZWwlRe|zfg5c7Ghf8B6IDEW5lzTK zTp;-b!>i?MXtULer**e*J8qO_6@za?UOe%xc{imRe+x?5u7~Aqe_~<YD?6Ll)C0M> zF5P|Qw%{F?*JfjX+!JL%Ew|W%OGp6BITz4~0?inpH@UBOzyj+#x5OH~BcLT6==r88 zrMO|jkDu7H6`qb<iv#p&0+D`Db}24Zdy(ln78ZpR&j@XS^@>$c;{oGA<&fH`!WxwJ zNNp1Vq<fO*G9_84yOtqj`*WCRJC8T6C+~ytlINVyE1HF1l1Gb?=egSie7xwZd~HN? zu53^4ejE+HLrG99)w8$h1t@2iWyX5?u=haZP-jR5CKNFL?n6nhncfX9f&v|A%{DA$ zo9|X<J_V|uvQa0dxx-sztW-~=_%I#p6(u>f^Ql!JO^nR`XO9wb+-%zLKo&KNdFL-T zEN&3Q*G8bq`m*15QfFrCM{034A+1|~FOO)M%d5O946XZ9s1_dJWopqJ+0lE)(hL0D zb%e0NQt;624j`;3@QWD=5N9|d_dp-HxQf!LBW;zhTy~nhKGsl6)q7ee_Atg`pBR9D zE&yaG$HZS5G^89bsgsfwg4Rzn-7!<$IXdSe8eQzmsg4h1Mt^w7d!*w5bdEV;7vJ^l zztV<jKH`OiAyMmJ`m$!~V=)Vn=XB#UFz`I*;-aLt?oO`*scjPggP1BWA$cZ;mz>+> zOYZ^-T=!4HVoVIfa$VBehkb6VI^-VDiJHzySJ=kKKCuQ{Y#I%A|2n}28A;yMF~DdL zpN(($J8dwz!!VuJvX_`N!s3z$-dOt4G$~Emr^%f3Xeoo~PRHj}%gbhw^K#ptz&55n ztBip*2)64I@2wo|V3U@QmthTm*)__Zt!7=4br7-$J$lT(tK}EQTpegSBd{EHUoipo z0!Nrg4r*3mS7nus^&rsY0U5Q-J2wwG&+*GA-1-1zd6}!#lS#iNNFj0YN<@Dsw4DA) z>+kxnZwd)D&Wk7Eu?-!DSjoZ6<{<&QMTSSrgTDig?D?|sJCO?gfE^9g%*9RDX$NEv zXA10)ks2meS%SMY=HOBI!wc7`IvF3fHWSns@xkM;+p`)^hl6a6nA>}1t1<2(n4Ut& z6~BP@4|C5_$(TYRke|PK9^x0?w_k1OYEHyhi>%H8mZ)*w_1f0cnqzNor#}eaqO+e7 zL=0d94n2905|9UHM<Q)Fbc15=vFK2|xy@QrMJ%k?UW3D&nwiGHYmHNz`xdb3&(DW1 zLzHO-W^?|JplOD5#f*(D%*@!ZC(q<&^$j|Gva2m2!F0Y-I^plglXf}OoPOFpcO#g0 zRB8WNgQG(-Sw?|=Edao`w`QK5{+lV>>I)W%^QE3Mhk2gB{|L@eKsRH|ES?sdhKI1X zNyg`31lv`p<V622nSr{j&x@1kv8@telgLatpm^xE3Qww9e9ra-mEL&UbLR2b2`sMb zPtQYQhTEEcvk#O-#umPr(eqToQ)f+46(G}ptWD3LVI%h$Oj)!Nm?$=?Yax<%81jsO zs~`(gw+AY+Py;U!PqS5wtX-$V3c*#LV5fyiS)!~fusY(W(&0l*m}9Y)zX5D=5~8%- z`CMOa_m!PW;8Y!bw&(ot;(qvbZZ*9O=4=uA-h2?E${>E(KPY#Qa%+d4@IHM76k_pR z-=jRqoDMH~37)c}-Yx5tE8X}|u-*0PwBiM=9S!xM$V^4ARTo{zTThV%a#dFWNr8mb zoss5dviNJ%T&Hfske}h6bkv635U9)4o_+kJ6OvJT`XQjUl)O*`kGqaJ3}zZC6{f-) z^OX^km_mU(Ch;<%0hBCoAyNpQ?htS6vs^t1yMG*$C{q*Rzc@sNM*$*?*DlJ)>BA8s zB@lnkwE-;XOgcHTXsNeLw3n)#i;QFw;VBy1B%zj$O@;>dJkZ|rUsvCg8S)r@?IQK4 z^g=vWmGa0+paxWbpxL=4ArHAG?GbVkGIevSi6IkBB{S3zZia$#kofA;vqaaYS^ms? zc?_Yq8{?Ml>3g=}l2gwj)93KQ^C-Q2e(@51IRcWvvnZtn-?)fa>6|i}e_~=FG?`xG zz%OLzw|J+EW{d@x?AZ0$FHz3aV|5-t5Oe|GfT>LrZPzl1pER9Um5wLbR}R0qUV&rk z+H7m??(fz#m6=xcpH;f*FUdXCO|#udvvVRpb%+$7!MR)x@p7*Kts&3`KY4paUe5kP z^oDAeu9P>QkO+sh@EQ@cRNZS``p3p06YPVg%^Y-ka<aXKox?OPCi5dl4F%gDvF7ys z78*dq*8P&~+|I)*X4A)0t1rQ9CdCFVun*!UR;oeALKJk>cVy(y(-ZLN2lwWrvTyjp zHx8lRvUdoe8yrk?-8jc$cgD<m1xsQ#W+GH5{aFrddbY%1pBrcxU4At?{XNj(KLfnN z?;TgU$gYdAT1vma${y;7R;chU)H11WIw@_k;N$dJ(fc9SJu+ZYU_ljBer?x-fr*dC z{XWT_qWJ<|1ftT4l?W(|9J6OS#OIRVKL)z;W$+`|l1tuB2T04a1;vf6#qPO>1FW$O z3SR23bO~OJthmNgHXt$)Z3%Kd5NeV&VlDf((WpXQPL=W3IkS&4o!3CGtuJ{C(OcOt zzoy*-XxkAkaM<?OCbM`+QBTsmc~9e*%g%C$b=rBfjmOAIrQyt=V!QcLX#<xl<g~Ea zh&n+RbML;qSFQVV2T_N;dFz4D?y=Pg2i{{jj6#H~V_bBY^E*;)ck@C~v9K7YLV?yz zb0Moxm&{NisQ%I7`n}!e6p^ucQ2a@5Axl^1_UNKRuI7N@mBldXYuak)SObP;qi<$O zdCILT#(!))HKXehRFKt)1uK19x*nsHyo<?GxK^W)Ka=_d?A95Hp?QS^ln=4NCjiAt z%kqhVAwv>T{0}%bGXy=X_^PM&JrZ=G5K_HAIvNI&yxeN085+Y(hzT(#jcr_a%KzLc z@qPx{hF~VU^XZ`ZHn^Y~jD+DD27Hid7vpoN$IWD6Abu{lg{J3P2Z)Fn@U(0p=jH|E zwGZ__em^44Oyqe7o>+7j2-`!m#f=8BRNVsv6UF7S%*YS;^!_5acFFSi{^uHBs<Iq= zIo$G+v9V2oV79z=P|T2qM3eYR+=k-M^j?Zny}lrV7pl9KYt7zjbzu1}Tu%&kvK+Sh zgcLu~Gj+e`v9ryH1$l!<6eWzuNci)y#%r3-tyXl~62l1GfbY=xrQckZ@j7c9hqG+` zpvKdpWc(|#&u$`01_b*xa}+vyUOR-hUNq!WX@JCQf!pp^jw1=Iu|}AJ&$ZUTa^U$v zkr!G#@%c7?bjYOxLxMKejM6NiJFwC6lK`9<x+0AvDOTo}Pe>J;<c5Y0R2rq+n9*Gt zHxX41o>@qkemZQSmWYKJs!ZQeL+^V2F7A>#jTrRB()Z4^p!(1Z3p8%b?cd)2k==yN zf0Mx*zFPpiqbIj|``|S5%(t^(eaR-r!82B5-}!|RO^2wq$p@;s>Cw{h;eDw=NwS65 z30%PYQu)>n>56_ZBu3Hi-u_Gc6smWis2<9UWa9Fsys%d35dGmOaMaPjQH!aYi-;Mj z!-Kzct1yNvW=&riyc;1W%pV}KLPn-6)Y94wTei&-M2KGUK^1A}khKBBOW|vn*$2vY zVPHq>zL|MivBBFLz|AZu_F)gi!sIgBSB>q(Ro-m4$vgD{PFk4|nj$M-NkO%63mM83 z^fXtCdZHwM){@j5+aXIyulxNW4~wc)+NxpY@%r7|62tgN7;_1|E8--zhJum>6lbh; zCbg4#EH&;uBiU2U8A``X1$dTG%Y+0CA~WT#mdQ_SP=rTXz*!n2A<lo)Ij5ifBz~pF zH}}nYtGs@%k-#GfBp5&@FClP-Gb!m4Gx?=@BE)!!5?Q0rkmolBkg+<B7pKGIrE}+{ zIhHR<z*^r&lYsZNx%zI&36(s%V{h+9<*A%x1>9V*;A+OGFNDg<)G(tREb<E35yt1| z{Yf?+J(Vv-(%XmKUTG}_<j(l#`LM{ZFUx`H>l{7PZI*tc-Kqtz7p*exX}vKZGJ#SI zUtTG7TpM_U2Ypys7IO}sBv2RW-1$kfa>BVK4$K8|Qr3(+=L6AcC%bgz<8|{yPy<fh z^<fKWvq@(}(lKbx>;ccCq-#lHKmz=1rIcC@4Qc~+OPBf+`cYuQHRw8niX{b+czlVt zkzCsH`MgVM?SJ-7g9%K)MqbbVQ`yzWGr7KTsU0<)oH`s*Axfht{gk7a<+YMpL&<AV z5td(MY^|XVy&1{-=4HaPkGGDJmsxzmupKXl)+h{_aWL5qHjMMs@5AqN{_64kb$_1E zb3LE?zOL)Op6j{q@BO`Of#7k0+oc446X+zx>IW7(XgJkNJ7$aQsN!2HG7#Ew;gu6` z#1_iZvBhUYA{}48{`eMECjmC`+TQgzo^v)S>h5(xCHDdeouT4(05o}n!#yLT-T|l! zriRF<lNb`}CtO*JZlEwYL7sBoUZrhc+U3Qsv~h*U3VP0xZy?cr!GQ`a@^(z_gIaw^ z;sb&RohL^K&JG{iq>d(U$upg~r010NytC^Z&j5uiugX8t{-z4vWhNWAU+Oc|Ia2^* zgd0hRf97DPDOF-e$$UMEFBay9xE*UJkJEwACIRR76`Wy{N)v@!0XvJb&y$tY)QTsV zR8JHxhZ4=JZEPVHEq)jw=v1Un-ehMRjOAwz*4teRISP3vRy851pCe6WClTIY^dKE~ zl9#-#LIioN(J@~ik^neNoFM}^n3i347GenRhg|1Zx9PvzAa1%X0jOzBKJ+dz0j|nS zK{y+rpmD$e^b%}HhS5=ouxd_LDS5_yVo!y3CvygPcf+g!0!pzBXXfwJA4_WR$wL{g z#c2!W&lb_M08CAS?q|?JR;ZMVn$-sIR<-*QF2aHiDveYa#{nrj@VAm*u(Ukc+xo;g zR88Sa)1A_Rjk|5eMs2UE{RUM*pLhBNiY~W#{b)n<!;i_Qw(b$0E{>q69{Om#!{fa+ z443FWqrInD>#%{p@rwj)ue9yresyF`*kbD>uqe-NBI1M$fmyp?&VyiD|0!R_T=vb9 ziDK4~xc#U;0vZ2`^Kfj8Jv~=mG4HkPyBsjrNF|1OM(8C*unD@c$&6F}aDBzgUl}$) zEx*Bji?jp^3{a5pN;7JTt_n*b?1xag_|eaTA)*zJ7d)A7zhinaWR9uh#_bi+W%v`b z3+D^lgHYo0np??W^Z2?$8~oj15eu1)MpCiYE^$J_^_qEB$`uKBD4mvnDq7^)u)AV! zK|yIlQ}!9=^ygZpG$6<zJCpGdJ1gQByD)Irz@D1J8oVmQ6oY^*fx11KYUsT;Gf45L z4+LxiJ=P)wT9F@Zo&epF;!1LYl@1K5`sLfF`sQ-nw-sN|si0l8F!>7whaJ((cW>(e zsX;BI`nqUQ=T2v=f`fsBep2dOtV6#CVwO&?oG(TA!^6R1yXB%zKw(KrC@$l;{8yy} zN6|=;6Bj3~U-j)fqS*uI^no)eFsbT@@=(4BPQsJhfU-}7^4Hgev2&o!OGv5W@|X8` zWy03=U`>ahL6lkcckz5Rc)2kR=@}<BzE&MMQQ*dzCex%Za*3H>b1y9mKu?QB0SkHW zJM%2DXdP5f<F(o{J93LRP1-zs<tBJkC2k`uX)f}X>G7y<ufmK7oi?xQImk3s4t)#^ zFO(1hR_Q?P7-d%Bt+?oZ?Qg>y^)YtWlrQ5cxDpA^0P?&97tnyZ7_Fz5au#VGUJbny z9LZ>X({qmh<|``k2cFmc@rS$F^l-tSeuj^f;>@ZC9v*(J6|ZEktF^HA_{)qY080?8 z(fS#zc`4WB(^Xhr-FLL9R72+AeWix(?#Cn}*NW7-^#7=OPrVKDxqW+2|1o?-X=!K) zyW^f2{6Ko-MCwFcutu1Xv>9t04;oBP+H~~-EMkt)HQghqZD`vy?#=BQ4`BNBdCJ@M zTkNun&m>NM`p}Torzo(D!Rb|d+5&d?Oyiq~y+sK;r>t*vjKIvKQ03+#B;4rM?paMq ziO;A3KQy+p^>}-2RE4Z1N=Ej<;|EQ+?2gu$k|amOEE{_h>%i#74<AYW9x2HxL=|BU zIlMoqLOQ}b#PH{wtoeJ0s<y+e65)PMgbVC5JfndVKln9F=-v6LMc{nZ&+{Gcn#xmI zS(ZCIWR4t<r;3%q2AUVS2x_$G=)kx_L~P=|h$$Cg@9%~hxc?e|C}9}57TfN+8&EC= zeB#X6rR}_(*^hIZ+AtX2%fYyCERShp+T8KH5?>`JU*;8Q1^cq`5<j<YzdGoWj;9Yi z#pcwYjh0i!w$ath*GK)&KI043iJNB{N9-V5pUUp-v_8=!v5>+>PcuP(47Vw6&O`Rk zrlnQ><aO6v#UgWFr)?RdH*&o+C9P#tPo6mP%mvFWs}u-7`Ha`+8o}Rc^L@>0b*#*9 z;E{&_x9E;i4$LSLpMN<M`#o}<Rgc-Ls^*eYGi=BNi|${^<q&)zZtag~_+_mpN)cf| zm=YS6fDMo<{zVZ1F*n)5TXD^T^hir=nCeBaadZW8j>G~TWoiBnS*u`&2O_72{-khK z$sijqYJiUN<Gb&He10{%8#SaL`}-Q5!Oou*K_^e3qawS&6KfT`t%`(A35WDooMFXA vE2{fHHsIfP^bb;yo>HART5A=oR$N?9zb`Fw#k@0?1FlmxXRS*tFW>tIoJs|G literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/service-now-vcs-repository.png b/content/ptfe-releases/v000011-1/img/docs/service-now-vcs-repository.png new file mode 100644 index 0000000000000000000000000000000000000000..7280c8716456e65cadb73e0332817260b29c3175 GIT binary patch literal 181211 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%0AO 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-add-variables-to-action.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-add-variables-to-action.png new file mode 100644 index 0000000000000000000000000000000000000000..a8347388c99e82c24f25b531d3f474fd6736fcd1 GIT binary patch literal 215320 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 NWF!>D%S8<X{tstdqox1= literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-adjust-script-variables.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-adjust-script-variables.png new file mode 100644 index 0000000000000000000000000000000000000000..90e1e4ebc3ed5160c63d17e0cfab85db9fb56dcc GIT binary patch literal 236014 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-configure-item.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-configure-item.png new file mode 100644 index 0000000000000000000000000000000000000000..461b290b2de5a157f7854bef3f841d366ab265c5 GIT binary patch literal 93516 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 Zvwzv-72kWP*^&VWJYD@<);T3K0RT0AMQ8v3 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copied-item.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copied-item.png new file mode 100644 index 0000000000000000000000000000000000000000..f29726c37310903d15da3d769bc1fa39cd357071 GIT binary patch literal 146251 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 Dv;Xkv literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copy-action.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copy-action.png new file mode 100644 index 0000000000000000000000000000000000000000..71ec9c7d0d72c15204a2756f176bd3eb0182dba2 GIT binary patch literal 84828 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copy-flow.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-copy-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..a1632b6c32e9e947f334d69b979e669e8570c337 GIT binary patch literal 115571 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 MORGqgOPId-KMjIB;s5{u literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-edit-flow.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-edit-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..2c21653e95471c83b9b4921d52a631a27501bae4 GIT binary patch literal 106294 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-fill-new-action-step.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-fill-new-action-step.png new file mode 100644 index 0000000000000000000000000000000000000000..bf51f5f65b6bf2112862103fd597c5fa608975e3 GIT binary patch literal 167001 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-get-variables.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-get-variables.png new file mode 100644 index 0000000000000000000000000000000000000000..94821fc4da42ac72dd6933ab765728f635025398 GIT binary patch literal 238140 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 AyZ`_I literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-new-varset-form.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-new-varset-form.png new file mode 100644 index 0000000000000000000000000000000000000000..d6bf2f3d658ae615be9429457627ce0593fe9c27 GIT binary patch literal 56763 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-new-varset.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-new-varset.png new file mode 100644 index 0000000000000000000000000000000000000000..051ac6eba342141f082877848eea8e05742f2642 GIT binary patch literal 56398 zcmZ_019)c5wx}E1?%1|%+qUg=?4)B`9otUFPRF+Gq+=)d>$TQC```PVn>=}H&RN!| zsxjV5grd9zJPbAr5D*Z&l%%LK5D+LM5D>5v6a?T)Rg&Br;6>X?L_|?aM1)Y$*}>e( z)(i-UGQlpsLuNn`ZMbJaGN1osW|k-_ub4j^-Kh}+S&6hMGLBAeUOlrZjkI8@hFE@T zZ^wX8wJwPB7c9R7WKKJjR@0!14qLU?j-%hx{{BWBD41vplL(k$DlQEh4_$RlwM?Hz zI8+`avZ&gmIkcD-A#AsW_per@=gx0?9sLY<DwvSwH$F`FwpZtiJ)bQwW^Ou#FG6^W z>4!l5K=loWj8p4_$Wg+`*G^L$FX1jFqowfE%G6Rma=1${)~U}wIa94>@91o?v(_{q zes=3H(3M&}DnAjye?v|0<0NO2ZhhItaqvi@3^szqV2_soMj$1XG-Av{oz4e?9|%Vt zZ;}(w-hO_%^pO)NT<o}C46a4D5qwDBTlA^+57|=aRf{c8eRWalL%-Ze-#Dm&nejaF zbf6J*L@L|%-0~i}JEIUBA#ptQ1Nove@x69OLIO0lv6-fnxttsjHQ*Tv2m}}f2o&%H z4EO~KvjPJ9*E0|hIlu+<QQ{9ENPvq1_*2XS`7d8k#yrsfdIom-8&F6^L`n+as+c&N znc2HoI=GfDe}4u70^ze#)pXUAljSyXu%kCJbuc!g_po#P8wH5hgB$Q@XXa`|=wWAT z@51fDNBpl4+<@o5pBab={}sg5hL2cNPLWW=!P$(Eot}}Nk(eKbkdTnq+0>j{SycQ# z(E)FK#FnnEj@%3k?(XjN?kw~U&K3+zTwGiXjLZzo%yfVdbS|Fuu0|eo_AVs<PUOGR z5jAr$akg@FwQ{g0{F|<kv4fi{A2IRYjQ-EhzsqUnVfEiR*}MFwT7U{N{PkgAqGx3I ze?@b(GXMXH_Sfg%(f(Dhe`m-0H!*HSD-SbUEm12wK&t|Z#?Qje#rv;p{x6^ZF6h5w zs=1gsi#XT;BD(Vbcenf}@;^QQcf@~Xsrlboax$_1Gs}PY{3GVyDsU?}TLE%2`rC&5 zOuP*L*SG(K=VkcY!2f9QfA{9Uz5=?FABLCV{|pU&80VMmVjv(vASqEHRS)0`JxCuk zF-(6c!h7m2cPl@_t|w|d(F!yn!OU=1p(1E$WFc@>B&2wKRWPt3Xi4;<r!8-2qR@k^ zFI<<^^$UHeD`9%i>n9m|_t*E*ZqMt<S1>TJAE>A#y-<uG(Ln!n^aBEFF_RObe*a%S z(E*|X->|Nr{%3f=+YTEP>7UHR;lQ9*FbI{P;N#y8+gi6=F2O$Zn?znnf@puTDG$VO z%ZzZ#goOnPOd}%ZNDKdDpHlJqn|mp76NIMzmf4kh-xmb`1@q6uJvc!4Z9(^6AY`AP zoTTfl8D4C;gwfE>Uf{SOpGe{<fkQR?gN3tF^5dmLH*@(*|7VeR&_E`7Il)yHKwccU zWud!uBwWwL7f^OI>rn%Pv?%X`z0h<kH7{rh(jt)!!LWeE1O7UJoY6omjQEziJ>%|F zv*~1_9rE6UZt~1ago^n<;4zkB49-PSY+`#s|7<s;Wn@E$;YqrSuMuGBKN*JlAVJY8 zQ=izOYLt=;(ntAqycv|VF4$Hs$O!AOB^t2-h_(qKa*5Y5kO$tM<S%%f3f(*kNP1lk zx-F&=l=qG5Xz%J$CjQ^e{!g*~md=p|P@y*Dslj<aift_%lG2l786&qS70V84G;LmY zQ~&P~4^X6>u7N1D8}i*a2*_PfQL0;YSIwuM+dmRERs;W0O<?ifE~vJN-jFbf%Z@aD ze*P;uPg)teoAly?4iAe1WoWj-W07r)xzy-{kCmZwq(6NAQ7CZ+_GS23OYOvb1UIqE zixIFB{}>|y97H?ufwRoCYsY1(%1lgW9Mo2W!<;`7F`aDGPG&IBHX4L&X_?cgGNGOs z*2SQQYr|bDab=7PplKy6{!!0fV36<Muo!92;-IGY{8>pE4Rsd?#?UdbzFFNdJ9g7e zSS6|anYcpJCJn3R=^3H|L&5Ek{p2%8-t@Otshx?yTOl8YK=w2GXOg~9>CB9gPSCKh zg*F`a5j`DfxG1u5`0Msd8yaZWGE|3MKouNjurF5KmnfOcOnO;s33F-9J~Rirg%qx@ z8)WUiPxxJobvb{!wMVW|-d<jnf85t91$J^#xmBPYc<*AowB|~8Bj#!adJ+{moWE(5 zj?|Jhw%>@n3lgf09UNR=D{wWK7uagiS{G{6ZWoL%+bcUVPUqefVtRC^ZcOvWIjK7D ze2;*!cA|(?dK<}E8|uy^Wu#UHySojl*=m#1sM#z~El*T=tn!Qw8qsNmBlt8O=nRR9 zIWJeho?rZPj7G{%H=0CNjQ53GloxM$KvJXu4L2Lx`p463C|D$%Ue8;;^$NFW>`;1U zUQ`tERkf7apo${b&?z{Bkg>^)J-2k-!2NNI+d025tT&~S<D~!4W=ZtV#9b*mf}bNQ z$j0;rSW#Be?sq4aJpI({mXAfE)HJm|n@Aif5Y)cT5G6}XO1$T5(qhS<$qg3c7i=k! z5kchZUeU^kA4BAoBO;kIN#w=g1Ma~;`QeMe{QO*R&RnFE|3t`f`rY_}1&OFAPE|!v z-4DU`m67N7L)IvdLEG3;KRWv0z?7*E4#ybmL4sH#2-?jGczi|^T;k6+ANXO+hx4Qn zv_`pb4lOEHe9$Bx#p!uB#Q4UbK%#;!)?*sGV4$G%N7VvLQXSdWJHb;WX)rT5PW)tR zRK@(|c8ve>0=5#epVk%#w1#dSs0iDCgceQn8jyPLD|$XM?Suo&23hur+-fu4?5zgn zDB!L3dwn`>eTbjmX;Y)wU$^$SvL=@Z6g1cu78G@iodJR_`5<@x!2QTPB<^`?JovL^ z8z`_EiBUG5@Rmb_nD{oSm3ZeE5<+0Y+~+qx;cF1_J@P$z$#VqI5m3vw=v+I3q~;?( zj3i5*T+G&}JI$e?c-|-PZZ#4uGfmasw5>7qv%j1`Np-wuhW9;Vh|v;Rx?-}tGTL|C zUfL|s*Ab~?J3m@&8}AxmKGt#@%3)pw<4<5C*zxPz3v0nrX$*ajA^$Do{!7%I5Ft6~ z(#`?jfhd1x+})++ix05;eBnnV|H7kSqZb9H8(;6dlX(~0DX(G3tIeBcWcnX#MH?hA z4up7Ck+E@;{kv@P$se-YS>3F6VjFC)PYD0((6=Ap!1tkbv{qG)|L@o;5D=phH(4oH zR9duhWH)`V>}0U?N!v#`23Uc44K2RH+ZI?v|Fg(tB!+2$5nc^W9OglHt#;Iys=TF> zJUxscul)JfEYV2+T*;yZ7ygQ6u?rO4UpA;D3xgip<VZb(G+_6CQ{F?z($)HB;v0Vj zKRw9V-JcA(=y=(3yRDZ{<e4XE-&~`R|5_dX-Esx70XpBX+@dnHoN!;Vh6YAh9kv#H z+=poM90k5#VC8VREU^yu1w)>`KAe|)#`6071YZS%R>=H)#8<%(TjzA(km}%Q38mNV zJwCC17JL82+nH9g*<<21FJLR+7f!#`o$vnrj8AsM(*5a%<Xp~OUMx~PZ(oB!`6<Id zTzdC&egy57c;O76nty5SecTAl-94dO;p8oP400RV>-kT<*Te7YyW?rArz?L-!rm?d z)#hb_2ftT$JF(r;&!(#>-tBJRtjCL06ZlB?g=J(eoGB%4rrocTS&|naBZVXMO|IFD z25>Om!aTzDU#K@to*m57JV~W2M)Ak{BeMi=8a28R^}i-FyndmOSL{#IBKq<e^YMGm zJ&t)6wpl_>sF|B^a=T<y6n-w3;npw8rEH=eimY9cUV1pTd?-OQ2^?9FL|$Jygh=_g zyU>8nw>hDntv`u~0Aw<sIGJ>E0Xz;n*6X@UHvb1sg+ULnUZ=;bKI18e-I}X*(+TFh zBPb+7iCh+Y)+^6Fl&29YDQ|x6q_?WU?Sr)#ya0hImhW}O{=wUKGwt^$auI*;*a3{G zg6vJ5nNgcZhkh?2_IWpnr&2lzyB?=PxsJmk<R+gd_3ESn3r6}}x(pFN2aWvu92~_8 z_w%_Ka26^?&RcWwT&(n{lrP(P9-aq&pV=qZ{XRaMmBWr!#o;IHSsT1<;xG3KrRi%5 z)N~#J0|V~whakScyz<#>T?vREp!IUOoc6$c{|G5iYc;T{)#@ivt5wJjg!xOmU$0eA zWTu#WeS*rf@N+n975wD$o_)D%NmEEKzO3RIzMaTuBnIEE-*@1en$F>&_+YnNBi*jm z@4}|K=nsu5BADwpn9OXpI`}<(G7Nv5exTR!T?NpNX6;W`o2Bh;=kqJ|`^1NZZjS8P z?DDb#+a2z4{2#7GgN547*s2w(-@Lv)>|NiVok}A?E~ax^eJX!vK+XO{m1BlRKq$HH z`3l5lv!;FX_~ndVCKi?2<oDra1828YGjX>BCX25h{>$X<s7KZ(0-w)IHW(5ypV@3o zX|ZClT)(UJ<Z0WV1KwfUWWD8bq0LD}yU{$R%TT@N?df_x5EQcNy7m^>P8E>wi^VW! zn>N2M&r}viZuiTPPS|KRpSS#!+R2wV+TyQ^D2DE)42uPyyIF~km<G>cdrF$&@Y%rm zaAcCxB!wS5di)m45x}4jQa-V`5zl@Z^BGuR3vrMZ>jaQqnw5{2>kjeM5h535)n;1@ zpFhwoBvinNeSgof7NO!_t~D1kbf-(EF&LEKa@p2m=(pH@Ba=y0rNvOoksM{0ELScr z0wcFuYihxFI;l1oa4);QD0e*?RvXLZ%95Kjx7C!RN+c~FE~Z&+<GE9=mV~AX98Eu4 zG~{p}=f-Y!MUcCGMNXkn40+7ulR{mlEr`Qu%_segxKIa9EW|(+$gex(`8_f+Vy{_E zQ6yRUXj{4%JR)=K&yY>dXh6VWFQ;e2R`78wKi6Rpm#_Pcc{Z=)vdlY&JaH6zv4Vz7 zI$bd<c|DiI_BrVX+&5{@+k<?iLjFSA)duK@9k$n-5iYPJ@B0%aguB6Eo3Ui6WbTJb zHG{#RecDx?-7LO02`4W+@**m4tD(r0TUEc+hT>#SCu57GQZ%Z>D3Mq%)ovfI4ySB* z3l3yNFa1uBh_zM+2A7kqE}pK>*Yo=eEg(9B?!?z80zsSQPjNrLM?^UcT20DhgZp|7 zu@x-$vxN-#Y$TJ*%}3RCSF7761xcM&`_g<7f&3tFSfv`>7R<ahm!CaO`{eLgjEeWg zA3t111|yQ7a5_hmD3o6BPp!sN>4Jb?Qn1-=Pnb;s^}{&VMxRv&&x!2tezNbQtwx8$ zBFllf9u-`%73PNMHxf}jt7XXLSy#&auDV_Sl+JFKDR<9mrGNQurGhmHi$EYAiz|jo z;b*ks&L(up&)q05xK{7kcqr)pa*KXHjN`B(H~&pRV<ecxN}MB_quJl}96NWfBPFoh z;EQgww@SZDT+;Ye(<uadu(sz@Jcq}<VKvzh^ngabcM>WK-&VI$wVd|reiwIWIV^7S z`m$mn0dC@AvS&8rkw7!b>w1(Vv*QpEd!q`EOb)F+KiG6&d4%aZyo?&*`{}5XkMDC? zx5KkLq8iOD`9saNFu4-7gV32$Yq`p(UY7-}^mnwEWnX`pAJ^51hh~b5EZ_~Mr4e{u zqo1mbHu6N1YqC0VA2i?6zo(qfjJWjV+l_n`a}SMiO7o9>a;m-Ejz>5rq_f#TkVz$q zmZ%jBW~p|3w-Z4}^CbxLf{=HdlqA@q%_ebYd&CWO3G+`N4y95m5Oo$wW4FWR3Nze) zJIWf$k>A?h&gK8w=)MP!0IVIS(VMuAW64y^Lqk!Rut)5bY;L&kyngSbD0jvSTk+pd z5#v>b#dlM3X?kK`M-s_o$nHQO^2KA$mWlv<E3?_r<M7)jYw~XCH$Cr0x1E9A_wyyX zg?bYSo7F9k!ZO%$ogix3MvG~Al~O-5tZk^$^W~f*Mr`sE^O0hiH07JUp}}2aXYEc8 zt7I&!&|vD!#>=v}(mn4zjs#5}rfKo8=rv~U)72>0664SJTrq-6Lx%M7+(I{DF|c`r z{;iAB+@na5#5hW|3e~aoasywUH5|k>u!ox_zbn7TmPdE@k9}*eBc2_~1x~e!<b_U8 zmj0r$MR)yH`y5$#Kcvh3kUFdRBjwN%yY=tR`658!i`$;1%?rUH0-{|jRdyR~QWZpH z#6oh#B4P5({Gwm}??zGvF9S7(6Y2HJcEHwDGHLWG`s_WF;~T&3OtrRr8jDot72Dgf zbdf?y_}^b2-om373~f=Ohh^3ds7^oDVop0ADs2}kF)mjqReXEYO@gEsHG1gsm*1Ka zsI|x-yCoo}b5lRpWAO@%KX{~hFrGyYFCGgan{1ac#@6rfY(|&xSHup(zNg(Zy4%RZ zwtiVX3=GVUAD3^X$BmYXk!5VfqK4VMFT#$2G}9b})-4KLip0B~P^D;MA!ZARSvZKR z6A5dUIdrkv2grg_>&Gt<+A-o0e3)`ERq~Yd(4uZ6NE9pZ$L}iD)-H?NuWy#dDksgQ zQ03=_3J}Z`!GG}C|CqGGSQtT}xKA6JOy{OcnbHXV<nom@@M-PdPsaT4oXHDRKN2$w zfbUG?6zl>wcDUy&%kaIQ9l77>11%Sh@Pi5xSeTj0<}z`YEx%u6czvH1V5ocajPB|A zTr222{j)nD3^F4W%Xc7Py<myWVb3d6%0*u0;WSPT`rxLj?(3;|rB<mfWAU*v>{IW4 z&3{@74+)tqJOICsdxn$lAjrfAY3SFt0Wlht>M5k<7$5wC9@0*yiR6hO<_QUpO-lw# zqfwLmVRE@9V2Uf@QUZ5>OVCfvoA((SBWGz@cHiZ49D5O$o|XR^uA+aBI5>-Pv^bVR zqxB7}Iyd7$QD9mGy~h2zyFqUT(_->fe+kcu=wn)dfI%&3C#*p*C_;|>^{z-N$t+b- z>U6QPmF*|B#O(nUnEYGy9OPlFL1Q;678a%2<oC-pvSpZPxrMj2W}CT>d#myHup1Z% z1nYdoY2g>gGRW86Faq$xx{$n@;2R#Z$k3ZWYqmOZ0<cGK))qbH0?1FjHb<eyl-6x~ zp~+0PgvUZoPN2z*yCho3Iz`vV3ob4371s1gC8$aV33P%Ub6*V{^YbOU5Km~$ypMct zQ&CFL*Pqt@J29REY7NWVv(t>rK^bLgm9c|^i}!l)2KB~bOadI}vNy{mXR4C(RU3-U z9NHB3hk`nJ41k?X$Xb&XUDu*d;4hR9WE3N@_=*C(nY7F19zWi)=V!N)52h<7^V!c8 zM10=oT6XAj7hOAl8}OGtA`p8s!+0EWk?^8=El?w&zEK1WmZ<g#w^zWP!)m3DD5zeO zR^BfWIwi=6nKm8Y_BW%E>&c%Q&g##gxgsf&2O+=?ihRJ3=;N|=8&KR-;e#G&`uG{x zq5cZX^QG#&<c_ksP%X;-E|L8ag?QK>w;Da^MgH$M67_`slo(xd%9FsL$E%GN&MKf^ zR`Vs1?Y5~D2WNx2L+(!wPit}~Qadc#UG8DB*ekw`_TX%kT7kFbW73${8-$E#+ip05 zVWks=$x?|*S+(M0b#+uP*K=HFcl#Qwf@KzTA0BYU3K^L{dHuzY9kl4_0&ZSAtIx|U zx{h35vxXKrb=9oD9xU7a1o|KMN_#%@K4WxdM^B?DEna083^xR|$bI!jYTq-4>2oQH zv0MFLb1Hh2gqgo7<U+22sU@bpcWJBa-vpmx8jYZm7C{kWJp^Zr#WTlDIL!Ypzuzy} zK3#vHDStl~D>oXAWZpPg(z8-Mrx(^f7P%~q#i0Jadb-sqVENKp-w@3le?*X8@UGRM zr5Au&rwEo+5EJ%<T%;eVKb;sXuh&tf&v)y6mTVTR(&k9iaT=U3VtfN=@R^HMfp9U~ z+Kp#Zz?K9biO@L;gD#}oQDH2btFbe=-&XdNr9X(*W{I}G_W^z1AtKq!=luq#{?|4Q z$HmE4C=5Ev87a;o){t=uiNyD@bf!Xns@9(U1*D3SydZFcv@F%e25d8g^$ZGypOOp< zcjvXGO1b=9C({DUGHm2-Wd-n%RrM>&)jASC&X=!6M!|aJp`+zwr-09Hk;`^gNOXn& zE?nk-&5KgSSt^5p{$reSv9$Ejz-)H;?SMJ(_vmJu<-|LiEOt9lf^52@(N$(B)mp~o z&(F8op!y6E9``F!+lyutI9uYrvNReCgB*p!azCPc)jM8<eD3cTqVd10wVRb!bSC2` zsIWkh);w1m4wVZYKb~010gFN6tgryR`h~x7S2^v#!^KNrUDBD6iwAJrR+qQ*j~4sQ z_8=(&6Epi=izWB|{{GXYY8_*jMTsT5xgv&g%UNPH6cp;s;GiI6y*(DAeoWz<`YPSv zOjaveM3B0c{9K{EbQ%r&RsKK0lOyp&0|!=bkC!^3-iXpad4I`{Cw=u^h%}d&Pi6`a z<VX7G|8h>5Kv8DV4R7@AFry11sZ$_U%>W!ODG+gDjwnOsTS&H=O_$u8jq3dTZ$}yX zil$2eRlr_rHnPKIwT!3SS1Ol};=jE=Ma>W5QO`<#`1XN}<M$Be7sZPE;C|0yd)sQa zPJWAHSg2(zw*iVM@&gX#qbPhO%g6M0?<!5}DtA7^(YF5=-3S#zYQA^```2Nb!2!2o zgDG@9A`BXJ7fsb{T`6dARJ~b?I8mJ+uO=!I;#8ABk?>_GHr*PlOzH&4U3UTk_MX?9 z4b#4b3)sd~ui;&AU?~Rn2D8iQ9NDO39u^XVaCM$+2D35o1cL(hPAxko)ZMBD$)PxW zRN2-ekx&p=V!ah$O;Sy=-0sFJK$1^FW3%6oEXg8~KsZ}#j>=9q`cqlzd3O|%bcAwy zfKzIr8O=B=1cQoU&gIGNb)QZv5)9!mYg5}*qR?M`O?KB!PX@dVQv%-f@odEH`vLQS z0tZQHP-5HUJaepi7n6A3lkHh9Q~hJkzy?X6beWNA)JiMgi}Zpp0m$UeezARS>WIY1 z9h5tt=}%ZD`a)S<{#U1-`)KC{kGJrT`OjcHnUwyaV(s<aD2sC0?tbOH!nFRpY)o_7 zLWk`y&635(%IUJffT?>yT6UYq%Xs^TEm|3ktF00pVPh~ima+gd6lG*ayS#=M*l~ff ziO|UJTrT^ORqpk=FJ)HW#>K^STEc)8s3f@e;h)OS)5;SJi@cU>#OcP=8pVV8CP<8I zcBH&sSp^@(yseXd6Tps!BM%&s<9{@MzvMRF<s^EevLzOLxjjtD61R2D{-(m5_#6gH zuia`dw^*T;go9iL*V_WuLV*>`=_B}A+m)*RL#Xp&wQ)42Kzd-ahm-7j<Au*DUkJV* z!g?ZI$#{3nxV0*FEWpc{C2sN?hQ$OKr|2vyyHlBeAjnJcF3$z4Ay0$LaSc{3sG}o@ zbRwy+nyP_*=eo^xe`tPenkI9LA$6|@H;YAuPk_LYLs^aCr|o)6%%Edm5I8ebdYbd$ znDSDU*5P~1C$tVowJKQwJ_fo}N()WT%3uM5dX=USBP7RAr;mcJxuUW?sT#Lssr}|w zX{YDi7$`$qF2Aq%)ci?fUV&KDm{S3POWi{+ux1zn9x2O8mp396Q{V7!rR~%C(pJOt zt)#Y{fXQ&jg6gF*ME(<^;GG|2hLN0gL&9%)7xCGFbyopSm5TX6wxFjc`TmS6VaW&- zAMx+xvgwLbu;XbAn9;o|eTIi9D;j87PeTo0oR>cg!VoSGJ63TI%i11aYa)4^4@w(8 zD+q#CXRZ*DuI7rz6Hmd^%V00WBQY7|PdGTCm<mRdO2fOt4juLeN0qU6%6drf7(ESq z*~A!g-G;i0o0R74-GfE_ZVw`u^;Vn%wH6Y)oD2D4mZ0r?co}qBgs0rbt_}fmJ{1xQ z5&<{4qJmRYpOCa`Ox$|6-(b)TeUBKop53G2!zm9=M||b?!_}tF5u&-aj8oS~v)dtH zilU@@i)}(CJ^k4wIdB_Z!7@S~ipV1lA78HhQenn3)ECUp$M^v}&3V%-fz&gw16K;X zTq_}Iu8M204Mn0st9v?EjLE^fsj_v8i3$QiPA+b%j@Gw>R_Zqcd$m|u+9?KEYPAC8 z`+DlwU|X(c`SkT@_os!GQGmFJYTH3qWL1A$&@D2p-aI7hH^%jbEJclea+ZgOV6$|> zCkW7CjbA=F+xaw`@WTa~o`)xy^KY34q>#X55#)t6K}E576jI7~v_L0q_df)c8eiho zcBFV?`^{+Oqys=DM)Uq}<&R~4_v@cIOEg(e&;x#A-;|5<m0w^gmL+?}A)<?g?s^&} z?L}9t^j?)JBiZcwh1lTW5`Plr3vb2q?kWS*?P8l1E0?&rAG4&#E>`A_&TD(4z|;Qb zd>H8WJseZ}h9C8d&zZFZ3G*~aXoOrC83D?14Fa7>63Yo0a$&em(J0#}NweKm^h@QY z?$rO!PQF+3X9bNFk(OI3K-WXcaS3R?q^!MUDiv<p%C07+7NzNIE;|MkrbtjL*+?`h z+an;`%zEJ7+F9IyThAcFcNlKBv*ZoIwef+fuA%Occ-+YhY7~0IQ8M;gZ4gu-9C2G) zC&Lh(C`N}Mq7h(p_IvFhRV0AU2|7P>LG}Fb{_b+!-E_rdBvxlXZ#qzjg;>`X$iMi^ z98LTh!W;x{=Iz=&h2v~@xQSkmo9BYZ%jf=dPj8$tkV|lNh9U+E?y*P;wKx*jo@GFD zL|Y|K5V&y1-YGZ+d`X}TraVg|r2@k~V!*sbE=yfG6qcILu)8iHtQwz^+9jE~O>0~2 zb4_F%aAr?*`Ea{C8y06=SbM;U=15oM1O8g9)HusI3>A5OTzGUB{hiK)>S;Y8K^;E~ zY%_R&I)B>r)UK&UoYGq8RMDUDA*_df4tuM3iTFT|gta(VEQ4GWtY{Jp4b%j|7$(RJ zb}Ra}p9g+WSbr&(GRC~j@8OusZ2Ft<<A#C1si(Q&-7qph0xMm+*&3#~`bN0uE9vC@ zJQS-b*G)Lg6e9RGih*46A;tIYQ3o>Kii!=NGvaC{KS|Ny8#VkC<LWN9EQ_!NWKu|9 z85!1{@t?i>eD`a8ZH9A}B97~>Wv!nxzRyMip3;09XXhD^lHiU**CA@KP>&4p;X4%u zGp*<9b2FhVR#IQHs?Cy4o`?0Ti{s+OJdRh%8_)jBmnNAD^=X}8gmxpZ;zGsiH7XJZ z4zc$wb8s6A;KMMjkuf&wldSx_gz!>y7lvp=u?3yq=q`4`Q*&(lDg6r#Bwd%{(q-E= z4F62Cls%vkRina1G`I_8XA5T*wEhZQ)1>R`bgh{UDEWScBgGxMz71nGZkAlUzG1il zv*}aD9)rg-%uOB-i~*KCNG_MDs-NO{Jf*if@^>fl@XjPZ@q3jiG>OYrIIpmZEW0g* zR!f-M=*~bGtHXReRjy)B(?0HY86s`k@Xy!lIRg{Ko7Aub_)42o;lu!ba7llK!3O>h zR0%pR6?Hq0OO|1Fc3RG27txhY!9(CgN)qNwP;U1tQ#95!d%&WFDyt#Cx|Kq$hQcY% z7<huy1_xgHG}Y2d9Z%yzju2PJH8(d~C}EZ*yaovYoOlONbVah?VY;|GXp!4_*ly`G zS<-U|Uw7WMz|}tV0M3BCLyPUFxwBt_hV;FL?OA!)MRP;gLG#}6#_ZXrJX5LAVW5Wk zXeJhDwdRx9d+}922K`p*cAaAbV9HBR(hO21#i5_At*$nH3CCDQm>N2sK<UupV%V=X zs7daxX^)hP*{#2DNgwW7Z-WQJ_3uI;xS*L$W{UAIRUSVd389aiEGzkQM4~3yxBWIf znITe!$A2-d0pp@>{kfZz!1|S3y|dF7Y`a7h&9efBh|4KxjPTH4;HM?~^|p=UTw8>I zWL)uKlms25ot?TT^Ja5CF`a;1cM(m}Au$e~m7rd&Ep-GA&1StYlex9pcwB^qM{TOe zrrG7yyf~c!+1#dHsje2;%|vttuvcu}HUV*uv^_wpmc||)NaA3WP69MP3CmE%fqkYC z*OG#|u@3ZAdL8PK8I9)6v?VKOo|%r#j2Gg`H+~~$$Z*56G{?nf8k1isq$`;dTNi8Y zuz6nKL4iE>tijb0KaU*r6pronlhS~rwb(Vbw!j}4`F7Wir!^)@(Z6g{P_TUtPzYid z{E%*)41o?$wz9V}c!SspxCD6=@DtcM+ECh;zNDqr@g;S+eOct0aTQ6jnvO6%&#`a4 z>BOWnF1IPZk`i&UtK?qn>N~Bu<!;fE+3dW8edz9jpbQh6AYSTlsCkNT%;fJfRh4u| zR2K{_z^ss<T7;ks)?yDNAfk^1B>5rWo;71(%c^!rQBYYgWVKs-By_X5q>g~x#IyVR z5x^>tS9mFvDFVMf+(j9e!Vah^XiQ+JSpY|<#8L+=8BQaS?Jyz=C=-a~Z~LwY?1azi zQL~5Wd|s|;H|?&c)aSr>PFSuaQ@w$pBuwEI?=|n-)Bq_D$R^8h94N=#_T4Buvi$^_ znw3*)@RUd1C6ElRGM^iJ-UWz#x==hO*&4S^76?b8i79%{C~F~KL}FBs)A~C48;fL$ zND~?R^wdNKOd4R0O7aGv^W#TP!pWaA<p$I1wo$%8br*-Kc-q<{;5FDXt71Q2&X>mV z5(XjD!!19-tfOI-44ky9SFbHGTkTus0`x1S88Zq3AF@lpbHG^2A}9xN<w@Q<VLr`Z zZ-D><ij+9=KB6z!_cSaQMLpM+Ys>is0TbT5FF_eYfU0B;2Mz|R;&(4VKPZD@W6SRU z=^6N*M=qbCQY1;AE<9b$rl=MyE&ujtcla<3PzBY08c!Ha0n;0b8btwFG1~fPa<rB) z7a}|!Q9frS6m~~>(5P1>zZmI<Tw)Xny;ctN!4<^iZN}nqQ6Cdelyc%ahXM{X8gsX* zEACrXRynz9__1SlP4Z=JoJHCVrV+fRW%^y2&6l%?gb83Dk6C68z&OVDkWJuCDrlY! zA2)pDRb1%?-Cv&)o@FXcmP#qj?=cFO4k}K5^+LTQC|CzGRaz`oK(K0P)ju8Yj^u_Q zt`J{<nHa$orFuc=5c;x-PdYKERTUXYQ<I=1B^{-UppxvFj0Pj(_=RqRl6D-rGsxXq z)UY04KkTvcVsT$GHlX%g+s(#Pm2<$)kOkfub<V^{c+(kI`es79sM|;UZmLnRM%^nu zQ)8snmosAys*NJF)zWa>%WQXB=(7pAMF58e39?(XysB%R1@0g0{%N<SP1&a9ta(9? zC3Q-Hkyu!P=)uEEAo)M@OA&Fx<Ltn}m5&|x(~SC(eH2>(W)`&kCxrbMgD^iLwQg(Q z$9!2~DaD2&If`u#m;ql#e#TqKUG}>2>xYzSwvcMXF-0>EhEd6nhgH@ap{en`F%ub0 z$v})J0<r<?FE(nm1abPGbPlxMEbhQ(9LF}N@ZJSS1_<*I#edNKWwLM<TJ>+7+5LWc z0MBRhxYNI0b!5yrVtVF%3A2I90z*NJ7KUJB-cLKN!JFf4R{<FrS#P$dY?v1I>?JRy zFfD3HBIbR9nuAi4Vg(n9`;tFg)h7fIymAlIvVSs`g&;q**y-4@BU3I1f!_^57#GO# zk;^{oo<)xLNBZ;gr?Q|d_9XN8eY{V6>^Rg`{b`j*$8<!>Um(eY;qZB;NGRw<03KeM ziO6L#DY*~x<46axWrjZvkSuST&eyCrp7U@6sMv#kWn0@70(23PFRm?37ETLW0Q*%E z%AXh<j)?F0q{npLE+sAZig@2R?5j3hMYO~Df54kQU13Pks9sg5Rg#l^k2l8Uc9mqN zY>Nl?6-HJSNM#6X`oQ@G{CU;!Z4UM!UBJJFcTm|V#*YXugX@mR2$4<Rj}*nI*ANc( zxn9Zf6aqpK*%qBp4>B0Oe5un@K&v)vsGObj8L$qgL28BvbHn3tYuc~nT=Gye6dEM= zDC8m@4rA}Xy<J<3qS}R2Yt+_say4o-9?h|z4<Npwz*Q{9n8w@hB?2oT^S4Df8FYC) zNNNR8^=3ljz}|~hc`D`)0~?meA}4xyyQmh4vLOJ@Fv=YRWIzvR5zXpI7vYZeKagYa z`J|KKF+W|Cw<tO2?ZRb`&I=1a@ww;}I<V5*e#iH@UTt{V9Q|uP=J5%wx9W6%1V<U( zgB@X~?;B#VhbWqah~iJMFA<6TwDfNl7i?~HJ7;&k8o>HN7ymO*jBC&QjV9z}`5TxI z2na|uOd;p)@HT8dEHph{)?3b7tYS)JakkX>DWfDo6ahp=W>a?TJ2N4>hGOe1z4j|> zozMWtMYy6xG9)$1>#ZSksC48Qh0V(@`>5VJ-_ns@m+iI{*Jdt&<T!1zP{Th&uQpie z5Tt`efhyKMvJO)00U6lMB{c3^E&=BK3H_F8nt45C`O!QL6?I!An>k_c`7;b`9yTAs zB=x8<@0eNZvejOd-;iEWUrh42p0N!Q!d%t-&s&HLvUxbpIxcce00hhZT^I>2c*>_) zmKH{$-=)H+d*RKltUw?)f;~O+Ss|9cBFz966LGYhB)6Kso15$?I|hnkbta1Zs`*ql z83NXlc7}0wHzF3JWVZ1&JKKSTR{kDXGlN3Bl2*<nWLro`I89>?WtLx6CGW&WO3!L- zCTR3)m=<m|&sp`6R5i~}yk?HG=;!nfG%moYyY5-6i)o}H2ArK~#dRNo8S5sPuxo&= z#pP%MWBI4{LS0eV6~S3xcgbtz)cO_8F!1jT_63RqOZWf*)!pRJF7|F3UkRLA-#3K0 zA1HI`jqgnQiVQoIQ2S6WK}&Kkt8X#(0*z@cd;$_K$y&M+zL+;N{zBH9DGcOa@%T+# z$<ldJjA2u+pI3}Q!9Yxl^p9iJ1{Anxt7HxeEdodM(TEoIele4m+eLl{A|PpkN4?*X z|D=Nr>(}g*sFcdvF@%c<Sn#))HZieEW5G79iYs;WB{`wOSc!%Yt-xRN?{VSUGl|Ck zD3Zyb*8bI3wuKLj$RaL6fM|5dghJg(0_sUJEH<<VfRjM?k0=#Z5MrJWAyYz585Tz9 zx4Xmy9&wGaht&}8p>dc`307FY*<~YP;wW4m&6D%p6y&bx;i)vlu(4xE5>WKCMK<ZQ zUftfKqkO}<@8=)X*SdH)9mh*?FKpn>LU3f_?qZ1~u&U~TGd;3T{=u`U=+Njns^pDh z_nw`>(tNnQjH8h$oVZvx0x1k%m1<h>`R-EKnE=Io`$);1HD1O@UqKtY1myi$bB~vj z`?*Z(%joPSJ~W%YT>4S5U8t=OXxj(ovmWyYF|XNE18O~Ae~qj9k7fN|59c8~=X;}% zBOAxItNY$>9gT8bbk!RDy&gD{Yqvir<V5-7ern|aSQ#acif|RyN=SiDWiZFlz9pu4 zyj0*v7K?5@S_W1}td&uq6I5;C+#3jhIVG)*Ns~kk&d>$u0eFKlyiz{{3)of@gHD^! zR{T3u*E6hhFq8R&rKbsUA!;Dd!exQCAZ7x#z<)p{ETUexXk_Z|8~rM<DKPM$Nq<V} zZ~({<f^qE>>~@UPk8Jp3S#79b{(Q3gZw^E!!vl3W5y*_fK-N+5-HaI|Ks+eq|3QeR ziFY;-rW?)vR4j-z>O@bg<)iAh7vjI9A;&|VyoGd6Gs^xGZDj;ek^sQ8nDwxes5eYx zqH?Y$iBVLJf7)UL{*pYhy0rq!asT8s6^H>vjXL3HNLVNT@wLUme*NALMY?9PPI2%1 z1KIc=v||8rIQL&rG+a-yJ{#>PWxwn1>orhmpM!>|azF-=K(9g950Fb|`TtL%%iK_R zkcqZl09=FK5|w7PVH1!Mia)Ys%{lA|%?Zo@s>GF0z_)bD9juwW5V@*Bf4ssF+X;tY zDIXsp0!h->AOJ}x1|aGFXT@tskn&*<y*4~>Na}Qfy%GdaUvhp~_3emZ6=&S?Y<{*k zQjwpXUzPx`44fki5)jT}qUFcs)&6hz3=ufBR}^`i;##dWBE#{TOS;}XHwLF?kN|Av z@dQ+R?g_b?K!D|c0BfS~z_|edy^iQ?yu8_ep7w@dVE~9rZ?7P?(<Aey{~t;4T?2R! zww`UNZ}Jj8kVj&|2CtPGX6;#Y@WpaTk#k+CnbH_ERS|u0PSAm%VR7@D-iV`5zr`wU zE)i~FBjUR^=;ME~yH{eRRgAkiAp=hU6aEy?1B(sr2myLxN!y96@7<thf^e&vfVwpJ zm0kTysEW1>6LX9RGzp;CX!rWS(ChxL!ps(jFYvH;*4}zTbq%iAMWyqbfpQ_!(eYNa zsa}K3E1N%baWV<9T$!B0-`{^MfeqDcJW<Jf=<-l%kYo<x(dr6PaTOZp_tP#*rG(~Q z$o*4z>xnioK_!j=fLRv2N8Wj%f5jSJLZh|IQmit|@T7~XjzJq4Gh@vitfwA6J>zT& z>@$A`0HDd#YR+Rn*%Y!NNT^f1GfCNsUtKfUD!%3kz0TkKPqq%+smc`DD?2C%YIM7Z z)+G=7E{o&;TsRb<YEVr+qaVCc&X5;I@l~j7VHZ=?#?SyTz32cQq@9;3Jj&rI)*9W$ z3l7y&S{p6tEpJM}=jBT%%VShGsEbEgPN6u$9YqkA*M2tXpR~|s)2XW@;Nh?lB^k{L ziBp^AD(F66`=b)@CsIjs>{ma%emP%4@cCM=O1gM^!W@RX8r>!CRW=_KCUo~bnMWnw z8w)mu2fPmgaAkXmfMcFk5o{ZjXv=lS`X|XT?>NnQW~WxdifJ`UJ=!aEW`w1Qd}IMz zqjb;u?OVk5<&xebGg}ZNlPu?c?6E()3QW#J&fkf?OXxUxud)WO8#t;luc6shTIkoP zk55lTts@_UeGB{z^~VSETT<H|%4`c!=TkUM4EFeW{;Mu6139KbSbzvRbBpIJk@>Bc zzoChA60;Pk6r6p@*o-|lU#(IIh<0k}vBLqQ6w&L{hWhNt3~lJ31U)LhGF8uA!7pm9 zPywY%AiN5V^a@JI&%cm(9C7bmj>N8SafHiyxAOD8+0n*vXYDE;Gvk&<v4)1Rq_Oa= zX`U*oADI^hni5j|u3YC$_`7!k8$5X0sDjXti?Zd^Jz63aTPQ#d??QhN_utLai1bn% zfWL&d$avflk@bdAA?g)~dQZgzgvYQMirtf?qzQL2>)=YR-nah%rT=y|A^{wweQ45& z)unO2hX7A;MjQE@yHI?}b~9wM>7xG2@ljQI3|rsg5{2I%To59&+qvLCIZ9F;?Sh;) zzBJ_0e^TW@B!*%DIZ1<d<=y+^@o_naYIVsZ**Lb%{AEJ!iEN6h%Nb1nU|RH9(oC?K zxVDp47wDf%=N=9~5_;4P)%U@dX{RSbp%<CjASQmrCMCf2@TK!nT#AD^R_Zz)2BFR5 zfq|#e><lM!QT;OkEMN^Jz=D9@RDiNHB4O`QfBN8yFB^eiP%sF|pa?)vsrphn4oLU| zpt4|5S}<knfq;#oNbM4pDT-$<PAOGaSos(dvVtNHi|PhH>+=G1!Ty>09tWU!gNAP= zptzdsJ@0p-E$aqrMylnSW2mDpng3I4M)%T4^zOPF>U%=}0{UNGe=l%!iuUfqO%zJR zoeaTVtHiZCAHsx&g>_UH?tmr{`11z*<n=_Mnw*(Y#A(f7v6%h*fVAB(J|iPvI|nFt zTt8kP(koDM1pI#v$Kqj92{bX75I|$3;RO^vP9K78Aob;#sOe+_G_<q7T#lRM@jaLJ zFgM!`ySqGYP>iy_O>&r{LqS95XK`E_a0cDu^ZQt)idMNV?_F3M<qG)AcesCv00RTp zh{q^<R0)M45`4$vX#W8JwgKQ!6$K<*k0!LZJ#Ui>4QnS1njKVOfZzahDr!oZQl!iM z2@{h%19vnI(x2#{Al6(nN34Mdpr6(n?)P%bHUmt1upszGhF6;%61jfdiPlS101MJ$ zo^tWnU#)TB{zx28C=EN@ifcFZT8kYIz-X5YFy!pF5Lan8Ys<$*ppZ34xd1Q+0G+1Q zFD^9;Ko~907HStONBm9NyC4v7WdTOsM~^O5h;6?&yv;6ejjk~R+NF;-#P}5(zD{^= z#`YRpO1?nfMsvC{(Fo<G9_bWnmFq2ED*zVRG{fx^d)C$iKtU$F0Vg$tJ4d$OCaZa? zz96w0aTlsi>K=>%@fhs+oj#G1i3}F{V({U^9CvM%M)OGk#IP$r{p+{s>%Bvn-v`8! z+~UXE(`hg8dT=tm-d5=kc${CVB`YY;gAu4p{4iB&0({N~;VNPPn-j*v#i~q|9A-Am z_1Ve-MI@WaM%#^-Mb;C5YaHXA%;A|H-rS1v%iip8&plhJcJTOJs9>?x`EozWv3-_f zGV})EN~<mbs2ADcr^!MYlPiG7DjjRJS++l$Ei6?ra+2IRdoNLVzMB>(O`*{^%{k;j z;O+VPgzV=H@YAl*1-G6pAgea$*<$S6nzg(*8?fBwo2}7wVVd#-=&WqiU%M?Hb|A$G zVW8SJAs}Ea0rqDzrFQpgc>qtx&F76FIG$FUj5FM9<4+<W@J3*#TW3gg_&Xu^_Fxn> zlv+&Suc5l!dXc)|0=zJHWgN}##jJism6gQbKZ?jhQxi)rlQm-pp}(VGI0k1HVBdm* zwa*t0O>UI%+ZXm;1%)WJ_Wx)O?S8dxU|RtUkW;`pbT(fkL4l(S-rLr>R5nAjT&1*S z=~|6fwM<bTSGkjcjH%aWy~U2zuvgIQ?XvYRbjqz(bQ1f9xffi&B@18x3jq44@LxON zdH{QQDxD5}MuOA+@SKjrqI-okAdfVZYc?D8QLcq@Nd{1W=2%+VaIOS>n+>H205R6T zXvzS(#^+m5nS9O~7*#a~U_b;9c4{k5)sClD=ON&6&$heSP^py2+E=HRj*!c@F22?S zW}Z@<`{?rWO-7MlcCloFE@RC@na_)}ef3wRwC&>sL9yw_Ouh)K|EG^9XPfCL!vP8X zf)nN@fW)10fJD4<w`r#&NKcc`;g0(BOx*Hq?cy}0p?idfwmM(BWOY5EPzAI*V2@q8 zS%DR!*MZD?@(lwcf3)D*8-F4-DHal{EhjL8*(@@|4xnO7rqfZU2?40libvvdMUD0A zoR$^ZHEQ+UJa5Fr(`O1<q{<sir+?~63U)W7^0gx(P3yP2Mv%+D_h&AYDHWbB8~7Iz zi9pPUKqFs4DHcg0kL3#V@b2EQg6^L_DyM7H;17kBwa^t=jV6+zmujY%P9crBUu}rd zq6ireY^L}<?@DB$c%nWkzVu0DeH$Wuw3;g_-W!V2ic)U1$MXaNKGpbmbsLh>g{~yP zj~+93*uV*Gm70Oo$9>q%=5o<y0@F9t=6^jg>6fw_ibSUZkbd87praqJHYtk02t=(u ztCWiy4D+aU?%Mo5emrRLxn8b`@p)Y`Ae2R-(~y5TDlS!O5R_M-<3WgT3*g1bdGDOg zGsC_C0O~QfVu`pbu;zXL&zCT2)iOgY-K-M7>|MpnyJ?cj6>RbY@K~`(G;&LBfW=L_ zLjNy)rJ69F&Sa7-T{|RC=J@tV_i%DstK_vNN~i{U$Lx7aTA@_fzE}yMd>6Xj-VzWh zqvu$#JE(~!MDk89QktxOCB}ANm%BcvA&0|&#Kzg^N}}hujKuZ~5uV!*bP__lIyVCe z0H}oS=RFy!Jvyz1Cf%a^_TWHH%NawfuX^W0>DQg$pH1H{2^zqV_#QE=siau}IL?#$ zI`#>4tHZWXB#jMBGaDo1e#i+P_aM^4=ldOq^;*-fXuvGt@g%OT2!-!ITde#`r4LG( zSe1)AU9PcJXk62A`@S~8{a__5(6AE3lRpI(@r5)~Kg1UB0|AGCs5m%eSQw~_fKVxb zLY?mq70CMO1)wq$>I6L#v+Wob2q-AZ0Grq!>4ulhn6JR{?8x|<pEo1i^A&`&Ylv9F zrl0c)F4ZkminT&GR4Itr)&+LRkajb_?!1>gqA)&CsNx2~z6z}uE0lu3F!cGX=13PB z4%Z9#jseDfWVjY~W83~M+bTi#c7vWc(|V><M)f><(<Sw_*K!L9lYy-^Wvi99%awXi zqxpb&qj;^=jm5Z$G2>c)u71HR^0A1U&0-l1D@fo6G)X0Na4@jn-8F#K%OcM%4<^X7 z-1(52nU}qFO0ho#dWg!wKVg|=t<ESoI_NXtGwwc5o7v~NG~^fR8TJWi-orV^Z;Q@- zg<V89#%PwZH6c9kefaO5@sdI8_8X)l1V8&$Nbnab<A;-}QbF<Fjs4V25p^V9xLEwu z_<z2F&zF(iLpJ`>$3d8`iIp4d3yjP>pMmJrMOLj^%!U>y%Udlx9M|}L173pi5Wp%W z^V$r57H@t|GX|Ez7LN~_3>{sMoUsUL0!|%qQhH*MURk#_$Qr1%n7H~p`$K8^WW9p# zY%xl6fN)l0AD=oDpt4I%KXsbFLX9UM&e0aBPy6L|-ZD0Jg!xem7)tCDQ80O=m%qm? z<-|D~>tUOH?x80{o(D9=dA=odIl*_#0&s)hFOcWVN01XzlyToyv-U49FBSC{AU*R4 zhzP1&tl@SwGH^H>F<EE`I=m_VvVVkDKtkw!_(n#->G$gnJ^8DR{&@h)=$Jf=lx(Ry z-l2Jq&&%x|X?>|=WzoXT^-4Wzv0Rq8Yy-`Z)jS;6>Ru5DC@3lvDLP<vNAubi0TXEu z&lWUKOX499)@n45fNrW)9M>jZB&xH#-t5r8K*lk(74`A`7%XB{vK2g2l9Vi4$byG~ zNi}i|y4#Nvi0u2yH}qqdN}#{>dA!J={K7Rl@YXLQd?&&x_EcsQDvzLoqc`ZLRXbha z@gqv0)@`d>8a?`UDBw2MIGi}uf(dukCkwn@EQ1;KC`B&1I#6^lQP#!S_wl&yuu!2U zV<gceEkBs+!<-$^{1XBHJ?-`JBi?$shHRk4YF^xsTW5z)2O@{lDKYv9AaY=a%@Hm) zeyK2rJ9H|kmXX7!QA`4`d*r$5h-5AobKhHIXC4a|Y<O|N^$_*@H5&}J3`yh=k$;W; zou)R=JM)HTI_;)-6YvKP8=69|H5{DS;S?n=FAm#YnPiWo&$nq~6GL_OMyG3Ofw|-A zExZQ?Z>%!bKd`)YP9s0;E>@VF;dnh9x5YtzFwV4U49_rnK%xeCy+7|iu^JCLI$73B zPARN4UGg1|rN~T$rNcTpb6d_3=A*c%R=^w6`@G&m15~=|_s7eFxKH`AFmntOInN!w zZ?W0AJHR4_xFrC|Cua*bJhyD1kP^may$=j=akgl)#0sDjXjRpm$6f#8ZkyNJ{)EGY zLq8{wTViir%-_dkH{TI2K{^B&EpmO?rK@PHhJ=(oGoreF=^MaljF9)6ki<Q{+)Y0; zboD9<s$pf-0$4j0fZjcHZC)3f#XLEse&IOk$-Cd)Y_t8rnLb$hdlq|jXymMVmJHUt zjSgTJ4Zo~W<i0-)e;$g6g=*l>7X!G$KsNqTqi7<mb2h5)%P1dk*kq+5=D$vR^t6^t zDuv>Ug75hk!bom2MCJE=ZB6{vD-_vvQ^*kB^{Z5~{wso&E>T*N2XKjl2+{KL0T0)D zrw%xJv_g$$5LnnH>zBx3+yIp1;&@79?UV(38Zq8ILt%Y~(Lk>8v{E=g6GnNAjC=9d z7;I+u;l^6icVavRxByVH@kF@S?fX`=*2RXr8N7-c=jYJUDuQw{kS@aGdP0a0WIp<C zxW8Pk0?8zQ6!CIh&Pyt+Y4K<bHG<}j<X8#wjr~3kQ2KQ-s5!`YstUc1*zCcZSUKMU z(TGEHv@BI5Qc}*)D$V+!6+%t>QD75LzBd3<C@oMFCPyW|E(AbllOD-AQyezin-{zM zzv7Bm4FOkBga>uSf6!^vRJFMpwy70)-RzN_)_hK8aVS*ulFDamN}EMu&<V4cZ=|6F z%*<dq-*CB|6=l0-vfEV@X!+;zdRlv}Ilvcr14xaes<f%q>RQ0uQavM_QV-!qAmA6K zw-&z)bu{q%mXERA?aNbM>ATwxE)8HqrNuw{!;!6ZIIAI>?XpCe?O`!!kzhsKxdQWj zlbgUQ*Z}*9RAbj{;XtlVpO-}0Lc_jgGwe10m8!N1Y?Q1z4jh`3s5%DF!|}AV1x+cy z4%JHMlp(&3gMG_mAHHK>I;y_QBHGNhLFng&gt?jHLeGU!-Vx-uxMNdWh)Jzsfdvlp znEA`TDQ*_7BEXanZqlR9EEEsIEi;<*yik$*U;hiBG+y=%aO>ev$|H^bT8bQ+A`Wor zA}veKw(a(CoFWMfwB}XhY@wXkEI1g-c8y8DLcN;!s6Hv7|KN9mNOU9X|Hs)`1=P`H z+ZuN#xVyWC;1HbP?iSn~0t9#01P$))!QI{6-QBsBzTM~apZj(nfz7U}rE|?W##dX+ zR6ReF_+!YdRNQJ_(s0^o5nbPqu$c#bYUhX{<~@DDhK^}%B1|zKoUICtB$}d@CvNBE z2+{#R;RV7i3LN=Td*B#Sv*b<s+Wx*)G&=QEijafHX+^whcLAkhTu9-1eAmX2=56gC z?Cn(t<^A}b#n->+Cx@jJ7Cs}e+&}G%rAv!_1Y(bgz5y{r+!l&;qb<GHCsg;_)8$}5 z!%kOI$K`#as337NI>$T$zo7RW=y8ixu7%@ImUAz($fW#Fg_*n$-JK98l{X)%D3?v| zPDb;-8r}ONd#Kllq@1^<lH}oVSk6^8Z+A{MLiq=B;Q0_2GHgv?n^cR7c|v-6{;s!P z9@we9)7TwKOqTH|(@f$Iy?maQ6Bx7`JLx@1jDBrF25n$vmeLNN7DkX~>w=|dv`EYE zR>vqvvS7yU?W7?+08DkNw)7C#DBQE15P{PQ*!tVbh~dJAQzkp4(Vh7O>fF9e8r1>H zOiH1<qp9;euryq^@RF#Qm}!CrzZ3$LXe0tWZVo7~59ce|Z@Tut@G#T3sio4mV;4f! zRV%){ZW(t@?^t>M!k0JDXn&IfLkIIDM4?3ZWnm>@23^Q4ID7KsJY2-cso?<zo_$WI z{-F{D9GqET!4BlTKn{Fow$khACTXxEAEu#BXe9cL*=$14{V8{}dtD%QHD1PA{T4s9 z($%>%3u&wtW2%me^CXfkFrKZQ`!cxIm(+A9ziVrL(K|OX$E$w6J<G)e89Wi`%YeUM zMmTub6(d{s6TEa5Shli~%F~^<0dw>t>QTWFB_Ff$QWMNbJJ~aC4KGlnq>w8aeK~Df z?w+$kFuw-Y-=$%JVsGGV8#7`IcnI=#Kpmk6CbcWZ$7icxX~h31%a)LW9k@dT1>}<G zixS-@_w&4hbLDW(|M)_WKTk-xowtsuCTe(ErpoptGj)I%k(!R-i>-0m+#UIQ+#by; z70dZmfw2XM2=`Jik?-s!`@AhuT=3G`@_)voiG&f~76;b(JwkCW=s4MhD)W2Dr<aTJ zT9_yz0TN`>$S!Iwwf(77E?d~cVbZFgH@auOC5`b$5^M48W?&-_UfwbN6?++)hMdf( zBL!Gcm3tiy=hxQ8s7X>tcs)MYM}AtX5&-`Qgeg+-t1Vc6h7dPsPbgWrMk!$4SFVwt z(4Xoxj8NhW=b6-D0SO8V{FsT*ZoBS{!9K<G#ZK_NeO-kS<Ow8&H>=ps4&_|a=CpF< zF7PubCxa%B-A0x%V6^@^p7KKM-52U~zSfH1ABq1_xKJ4pGxba_FN(6KXGvBIka*;} ztut4LlAXBTJS|cR<(!;Yc^W9B@q0C+%zlZXbu*(Y^!kCy`Awg8qAkYF*Br=%G#l8Z zVH$PK{LwA#8X}p40gj0^I81u#6bheMTieB86v8uk5z+RaJkCEGQ49*zsV&v9Yy&#| zK<IUTEd;cd81*jJ`$6<iE>v=rr*)#=Sx%^VpSONtZLBd-GXFglt&IO#(fSr>e+UDf z8=TsyS?3{Mcvzcg0XGywFcM0~<={IANMRc$cD<GKWV&5PepG6K07~HLr3(8c8z-ZL z$*(=k23#MPx-pFazcQOQK_04#kA$DSr(VIA^TBvC{4nmH$G36rz$T7lAuKGsn^wrg zHAn3%pHH4==0oOJ#h<biEpTS*$Q{gq#i_a6a9%lS$1K%7f{6Y7mw#;+>S77<mSNiW zAAV0PHeLa9BKu?M_!P&O?~1}A;8Rf*Z9k>{sGZ{62Yzyd%Pd>Hn6bGypV`m2P8G;u z9X5O7gB-ykAk7RXG4&$`*bZ}i!GkLHpJ2ClX6yyk|Lt;G<Z)|ZNI)c~QEeQ1zEnF~ zlVk67f5wONflKb`;Q`LM8gl1Al|8ZkZGLj?3(?xzCnRzF)83O_Q-O04Vquw$plXqQ zubIMF#b{iy5N_Z1`*jh;aa>L^0v@LXJjFCY;Vm!>s6wHGTV}SeBLH)v^0D(P8UiTg z>>v3|+cvoY;C$Pq;R}njlRy713f<f=!KMb~Kat*31pZQ~&=<=0g%H?7x11tLHh=JW zMm1ts)kK6N_iT2DFvA3(QgYrDdd`(%iqWaiF4I}V0}I&~{e&ud*1kOys-lz_!HL1X z-*Ji?J4=g^Q8L7E?`hT*HKq(M<S6MPJ&08mNjIl?*m1zQ3ypIq#cH%rGM@742Gu$! z`e5_PY-0roWpH+ZoKv;e<tp|!Q6#EpKpUMzH8!#NS(kfuB!;B*gltG%Z#TFXp2}R) zuUw!~_0-qYnJ3t;3f9xp=yUqlu0Duu1UzDK>%891e~rP~!wsA}Vl%7+@a8!{vy@~J zB+u0o1iDjbHF+p5LA3jsNWlj%hmeZD4x>UzU<EW;0Nx46?w9mi=4?S<uv+PFpTHd9 z$>WDA=h3>ah_09SMtue!VZ=sLJc(&INhLUaNvz<r9Hs#IcF`D%#f+&#4%}CKM-oP; z4p_FSE*kn13|^tilFo<jJ{^Iem`pOO(?r;jG`8(|UEImrZW8nqkOfBlY2<3I`QvLx zXDdT`5OM9J?;oMJL4#)GYiPCRvd1F21xj@u)}Y%)4FH|jcoIX2e1kQa3dk?0kaj>} zL_@(1*eBV-zB*4wvz7D@Ll09>UGIFR(VwtK@qN^g1C~U1SpC{J;ljsaX9daTn?tuF zf~jYq7Y5I1gfw@C9_(v_iZ}?bR|yT)!K&w7JG6l;s$6jene`3mh?>|;fgF*$8Jrd} zcIBTV&>krG9iU7d<`|#UE++b23E%b2*B^NU<kr(n96J^m&Onx;X-+?Csokf21zCTL z%c!x={opwxr!}3kJjWD>9HXZ6ea?kD08x=LK{!~1G>~W`O$jWj&N15R3LOBPKf5%B zz{<J<1+B)g{Q(J2=QNTINSdNkNp4d(e*g4r;Kb*+=h{_ipZ3y0egz87Znx2Yr3_vG zKM@$<1dYxJg^AD!cu8pGzHLM=msEC&XjGCg|F%IhKZb>ew889_HIV=>sAtfsPpIby zl!h3Gk#T1sTy7T~5(TI+a3o_yJ})Gv_9#eVwvC~ps5Z+Wn{6I5;9Ti4sdsf(cMBD4 zr?V~YO6I(3`7$3vi7=rO#{2sf>AgIK)^VO%osZNx%ee!){VYX+@GK6hH=ar^7Ef>^ zz&03Is%4@2yZk>F8V{mP4SaBYHd559)Nfl**Ga$wfe1*j>I%4wt?oE{1T=Jct#Q?{ zplo5OV;_nf-k#4vo2o)&7nbqp^!1rJD`CNGV#GdL(5aZdxSXv>7VqIiB4Vp8;i-Ad zQd{j@LU&<z=ix3~(D8XRexlV<evVZf{%%mjDk1L8O#(s5tj=|;cgHM<OKZ)W!^mCK zudY*N_#<IxgB^bx`@!{eNo9_pATDepstqb1dmJ3<o0X#qOIHyu%9mT|h~%z7_~A#8 zh`4NEj|laC%i~4x!+UD2uJX-A&-K16o$9MW-Mm6$D+UxkD|SHqrL9~2s}5EWU)*S( zS|^bR$qooM#mq%#W$VJ9KJzR%`ArgVTBY#b)^p9nKU?5A0F$7+HzkGJzB(;F2Kz+2 zvdCZ5?2jDP&yOF$nQXzfLtal>{~KU`qODlxvd}8z+`bSb*f8HNHhtyp#?Pi0ndeSB zepVbpN<7)@7MO&J9j~lmEkVX!C-P2VK%7U#KCUS^)qi=R-~Mvzv*8auJC^=Cq_s=G z6XlJZv4xpPU<uC9N8c8)8)I~0s3S69B0+HJ?g_~%(QX2whyW&;5d=AhGeC3ZYInlp zL9BSGTNN^ZZ|3FEaW{`WYELnz3O>m3yL>;?uXO`{C3VUE<ahkY<KuZ-39+X92^Y7k zouY&}p=VHNKh0%+j<IiEdNv<KpTxYzt!xVz;_ntQYeH(%7sJh`H%-sQJE(|>C!P{X z(!w^83n<m~E6vxN&S6xF%-&U5*sx<TBMN6Ft2pteg1w7liMoUcz%EIC&Z2F7x2s0> zyIhd5hkgSR#%2DfR1esNo_8nped3xigd0$0g>l8mGh|lKsDquBJLOk?v;#nn9MZ9l zM^PI??A6d83GWvo-kip)SVCs&`spVI3%3k2rW@GVq^IT_8L?ByudKj1NRh{+Vr2+9 z4mCh6p7x7(m3tSW@lXg+fdtU&Nh24jwwTEU{1Xja$Kn#enH|YN<aLlrL`5~fy$aP+ z+z4{}g9TNw4t`x?+m)D6_o98C-0<Y@oa&|=q92Ju>+Q9h5zG@$%bsHIBJC;<C6x=` ztyY_5SwE$C>Z|2G)x)9B>TQIulX%^bZz^LrG9H;mpBPv&5l*?Xdyj63ySA}OW1ZdY zd06wR_2-Adw^Y^(!Ie{N__EJF<=;B)*GzH)np6HDyRn4cQvR=JPc1j+8CF_5yC?rz z4#8!uAAvJ=Ed!Fz4Yc6W!;@+0?}dhgeJpXuqREBNp87}*>=`OJD7wEXy9th&l)EuR z!oF$NTT!%YLE`C)8_(U}czzN;OnLN=t!}_#3lHX>&-Hd@vvr9MglW_P%PAv+3R~<$ zi*LyIIN3KVcQPa=@MCM+y>S;tO@1o?o~j?E-RQgdw75n#kf!zVyk#jVpmpt!BA@{G zzuF8~A{2VZo}y^wNoeIhyQonUkZCMB{dT%q*qRl81b4Vh1(@Bgatp+xkpm7|lC+)v zh<AAT{4B6x;+x4%>|g76dL5KA7D8Hcs{A6Wl7KGYq|b=#3#!?c%1p{}6*qAd7ht9H zZ}Tzl#xcmcZMcu<okIQi+rTa%>Iyn4<Ew5AR$nrkNkecMZOvo_u$fV36s(?%1}?Se z5Tw$U<LGvXwD%QppS^J4nmz$u?TdYcAG7@<t3TNJaQYT6x6Kg!l~v^Ko}ygjvZGD! zY&gdhpgk?CCl{RS_#(RI3l&5x23`OIZ=Aw+I6i&^MA&FHphZ_^&k0VU(`d+oFOeX4 zX?;U!VC-nyy`EhRMC_$mq2;-{PU)&5?G$|_dr>zbpaViDFs^Qj66s9r)zk}FfPAgU zf|O1S)dKTgaLBTX;fc=Yh}^MSt_Zq$OH4KveHa9zV_;M4l?l3}Pj2L1@2#O^FJo*d zqhYUD0e?m>eA%uhknq*-Kvp>|WHzm6Vf_hK2_Xg^l+5d)42G_REttJYe@~=j!aCHC zvj=&pZK54<6-H+xAL(~P(cH7}J1VQ;KbL|I5ct1(p)EMDh0F~U7Fy^~dr0td@e{$0 zDsEzzgm~%B|3a$$hs(zT-ktt0INd+$>@85BU-et^iyE{3-)b-d!u>x!`!9ac1ujI2 z@8!?@EkD+O$YTDG?AVxBp#KRu0)FbS{8Rh3{22y6^#9z|NQWKK|5Ee*bFm7ce=S^B zi>?aB-wZH(9-1xe?3jVf{#0m9^5L7mxUSN#2knVkbH%|UN6+4GO!_BAgpOk@-ees{ zjA!)%4c05x%L|%pH%$PktY>b^z6k-vZlEJqIytIbxBYW+#cG1gXimQzVw?e$?Z4S- znK2H=qcV%t#y3HvjyV6+B4C5!L7*+P;Iw>qZ?b#D&67$@t2P}qLh(y)f%T=Er#}s4 zWkcVVW#~8gCu$D_49Qxb*u8Vm%f;SeeCHL$c>JdVYmS-Pf8<{Osp5Am|GB>oOiEAA zuevQ|2B(QwBh*WYq5m!20zP}e34zbbY<0b5EqkQx-lUV>9V+rqm{t$tpHEbkG-~7i z=ez%>%R|Otn8DFAwK9*#{^|!eoIm;o4S#$4zn<Io;ZL7lHr+Oz{WUtiC;t(>C39e7 zCI5Ak|9_YHE{>COabeeB;JG`5;b7`9_JN+BJ_0D;ivTfJ18kJT!gCGm$<{Cs4;^fF z2Q&6<ZTxjdf-iy{MhGK-|FH-tpwE=3otu$00W1xRl}4H}jT*`&pqwQrC<t<UFc}|3 z$Y+RN2GC-vZ3;6d*GE$uth#<*0X5#|nMwmPwQM`}zgmxYjX0)5i9@H(qE5zRzI+wp zP!hPeoHUhx*N|_Xjv;f>f<BQ&;c|re`S}^g!DBIIiv+*rg`!hw)<`6uaU9o_AUhw; z<cmiWHsMBg|5H=O40Z_y8qLfcqfM{d5&(F+1+Vu;3ua5^<umyel6$^C{s4eG5`e0V zk%%Z$;_S?>vY=cQz^=^Ezdc#Pr}KFx4J9*~Iy>%yT3EETq54&p>-=s+OYi=BieAF` zhNRcvmAvj};+a_3wy*mAG0RFP(f``m(6>Ya&NA6!>FYUM>-3V5xE%SP!@Xm@zn;yP z>*RRcu8|hz`2yKb8Ng;2bEF0A()kKGVgPk(J1^H15JulT?r$Ha+O|<V0L8W+09ebW zF4O(ypbDYnB?$RFfsogYcp4EFHr8NM4S+QPwK_j1*W2|d0-xclqNmrJX>B+}#Kb{- zZacvzfRhxu=3c-7_^*EcDN&rQwbH#7$UI8TiSN3<y|^E({;nv69s;td#vXSkI6n;X zwl10e0c`^zL%~A5fC0ZAW(qG74!i;i%bb9!1NIM&42a#;FQ0efHxmHc^-{BQxN_?s zV!#cXBQh*(9#G+ctt->_>j87&01yG$03d9t(m*6PfJ!{-B!R_9%n$XY+GKbTfY-FW zds8|eP6c)do&ZN1Ru+FK#B4y^GL=9RZ#G+;cmufAarrz-N8bC1OouC1n_HPu%6k)- z^!P1*q<e9@UFZ$Q%#`a$FPxNS0}u-UXHWxc?w{r10u(-;UhnJt6mTRR_s3Ar`wxei z7--Gz&jqqRxzdk}07`%&k>IEV>R15=^-96qOTIkGcrmH;kxGa9H2kQ)Cgg?KAFn$8 zM~47_b0YGmAmjFdTK+qbCldxN_BC7AfP%64+hg^^Z&66NodTfVDk;F`YAJdN0tJGg z5Q#f`ST{eVSZ9&c_$S*g1Mm$8<AXZ_c1Baxm_g3FBqeOeCV;~VBw39dvl_<1<Mlqo zp%_rhha{^@B=*t(kPWkCTFF4JCb;_Rs1$=%8^d<<l`Y^ft!|Ug1dpGqx5guZEvCUi zvF0HY1CV)uO`+EqupX?C|6sFDDbs2gZ1#RSEJ&bJ`!baNsX>2WEr(n(E{09re0t0D z?|I5dyx{@`h3AGc)0c%C*pA0#gF=pOI-U{l4X~PofQ$hK-u)K<R;063xhePiZ0dSf zz-nz7$QRF+wmsVf$yXea;UobIftkNX=IhG~H82tt1Eq`1SDPGzfwL0D``LOsleKeJ z5@cVYauM2Gqk=n#Q4*aRV=90(!%Q?6@Oqj#D(6_0Oy{X{633}^0xULCN%S<po}qY5 zpE=4L@gaubuPxG-JK(!k<b#18nExv<ZQuqaROn<FG});NdCLH=4`Ad<x!NC>1C&FN zE!LJtGv@5Z1M(z!g$749vIo21C+7MR$QX5oy>H?`H`Gh%-5AuJ1J%da3Lurq#?kEa zz`O;;>>2d3<Wx5<Zvu{<lLzR#q{PSp3YMnn@il-LM0{m486w9aDvZmMF(2+pF-Rfy z)k>Yw6!ZRjb2bDAvq|hI)w&NZRcf%&*{$nud|J3tQ(5R@k4HerMG$yz5wy7iyir0p zthvc(XcAHpE0LT#@(Rl}rWG++C*<GApww^xd&VqDMrB=*b`zS{WpA?6&VYj7jY)S9 z;?3>+wDAf+JVZTlwUY#4MCjNBDOZfAloeePH~v8^<a@NTH<}u#sY#cb3m`Q}PCYK* z-y7DWO3Q<)g~8ZdPPn@oOc-@r$cMeR`(z8Mss|JF{%USeCh?B4{@ZXYro=nKA!@yF z*_yAifdm7>gUs43ZVK3wTIHXEHeUl^w|5y##Lkx3FCr>tx{-jzE@&!?U|j}qov4{p zw_7i(df7c@FdGP$JReNvh<fWuZM$)kzGv_W#JmxC%|t^X;>x7+v{L;j27nuq;GRT8 z`;RSvn>SQztZ!;(P-!R9Kwq#U4LH}2YC`b>0W0cHz_jD!-%||eJUHLnd^`EcRmjAn zvY&3(<3?n*`yvCMbkI6SMEjT(!A|~0F88qf%T&^>lAgsHD1aRzB1;EsCoX57gjHyh z6oppq!k2sW(X-VeSsm4IL_S*sTDe-ARn22Aed11RX8o9$p%WLWL<I9+Q87?LaJf{C z-C|VD0q2{<1g8xafAByy3ddx*jCioLCJ#^%u?doyTqlkljb_sh0g3#Gr_Xok&qb22 zN19aLU;m*Z*M~6V`!i%36}7BZZb#s^QkzO@fwrft;6Ixy`(5cnLrKAUJYP}p_A21; z(_KhYUW3h0cVi!E5Au*)Itf7_KcFNdokGIlW(S7O%gy`0A-{h@n-&6JwZ0Bf4DOYS z+v5t$KPs>(Mu>U#2J>l6-5>a~>_)7FZ4AJ`Fbf`$l}QS{{-?+t_yS1K3L||GdZ5!+ zL%0+H{9U1tKh&DK6C>MSJIcins@)pTYa&)6{NJq)?B4`H9KGd<yz%t+&aN8(#8A33 z>e|YGFIH`29SAbt&Ox<({`yNt_@9tD95+1t?~u926(X%I5P_)CI7|!1F14@hZfEIF z<o%yp-H3!S6PP)Zc|2uhUf8gBPm_%4c7p~h)@jYD)t372%aD?7pkvFxB4rdnJdekn zFQ)D|9wJTpgJgf-7bRgL6%Ub24)ES8+4~>NHoYDt97AHXu=LKa3-U3a5njshm*T6g zHs#?Sv&_gLfU{!8)!^oRxn%+kB4U&P_uHKS%)r0^_4LR&Zy)S`TSf4jSclKP<kh<~ z(W5n=*oP0epMHUW-^w#9ZH@1DS!<}a6LBeJi^3j!t|R@h(#Q^}Mvwhzn6NwV>h=~x zIG#DSBswv+s=wy}fRAgsqxCknxS>i333c9_EVA+VJW{SUJ2C~8bT0lgGG+#=huPuv zNDl)<YKpo(R>zxpw$au3xkh#HQ+e4MEwxZ*G%in0<}@Z@#tBTOE>gtgYWij!9Vsj< zoCpYEAm;FIKwL-tXHF4ui&<;VxXK-JWBhl6{yFNXKxE-^egmCcr_zZ$B-o^bl^j{P z6BVANZ=1S|-#_d-{iIxK=MC@+sZ+28lqf0V;C>`c`-%qr9qGH7z`WEan=J@u7j%{P zhB)Ms6>FyyI`L<J`w?25OCgmJ0K-XL5tk)=#~yR=<dt2+6>^tOvBapnR*r4P>C0lt zopf;RA{sf=GNjmE-2#s_LdHJOb-0pesZ1<~q<}<36Ds6e`vSX0#=;zCj;e_F_laa< zmW0`yW3u6xbpM>H4Pq(_LLnGel;T?KE*g<hKWmD-;ROQ~?~2ldA&<u{%Ir-~)DjtP zmTJMPg`C;U%M?Am`3rkikwc_fd!XL9bZW!tFF-R~a`Sn-1q1~T3Tgx%Y!kT)>z8-m zA2t2|4&M%#9$qlAfEkm{yMagH)uS3tQFpe_ch^u@%-Rpfo=P*@$paSl`U`}x+wUyG zxai1-cdO4+X}#m)(HEwooCpzcS=cz8T@nSBT!CvOe}m~!z+rO#NdJ#glI`q0=i{Ss z|KOw<C@$_^%~`8HW-eqXmM)6Zv}sE7FD=iAu4YnP{DNM!><3w@VuD}T_6M^49yAfZ zB0ftR80tAUivIU~GlSXV`0n5#D@`>mTNPt7w&gk4ip|69_4dvG*6WD*WmA}w^c}P^ zBsv!x%i|FgtHp9K##aIKW+lpDU+?c>v<gGs;*qH+`!GwXVRdpoav~)ZSiRWTpNBPr z=sd&5(gBvz!=;E25oKG|1(1xZg0}w2WCliJH}I&9K?fQ!99V^stEn%Hfjf3*9-ASN zwgFEHR`xZjLpz|(qB;tubg=Z~l&ZlGms!b;2bQA<5rn9JEwUl@5OKgng}o2MYi5T? z#bO%_&tL&4=rv0+2d{?RzZD+YRT85M>5fV%^uerBNKqy#-B6?c<&*gD7V04f`vcG( zWXzS(RZ7Kj7OpUnF*e5bUd~1Pq`NaOsq391y7+S&Yj-}?s)LepP*2=C<)c2je3`^a zp$t7WBpWl!3QU8|dR{9u(sW?B+77`yOB$bPfe^7;l$F!vl}aSM04rEISqz1em{b}$ zYHNl7GKL3V<}s`tLWQ{C*zq&+WUsUujp(=E-~Y@vZSky$NYk0y5o^mHyQ-$ljE@0v zZ&jf~3AA5u*g~RJ+Q=EE9ri{LHLKmY2>6{s{rrvIAFl7^1bf5wb5+ZRmEK-{l#PTZ zg*G`I(l89lr#wBTQLQJ75qq23Ohu?#n)$HqD<6JPt+<+BUr&a^l9Y|aGtEi+*n4lc zBJl^oFC#8#5UbT_%rRS`5{NrjBn&HaR_~I4^!yvzH*|V`qJ#guiHhY5#Tw}b9e+yQ z`Ff7iOApTFsD8HJNKa2m+jn=b!Laoro5--4N*k4o`E8YBN0Zf1!6j7b&km>vGInL8 zH)9=`PERMFKlW+XnNk11?rjkyI378~yBVyc(CuubF6}TrMW;2;Z|w703%kM^u)3~u zXJ$h0Bf@Zo%R!@IQ>YW?QdTa$J}6dWVJ__c<#RrLX@qP(Fp+IzVz>a+x5U8v4l+2b z<y@>dDg5Xbd(FF&22O@T2BVM4pi#=aJDl$SCF3IznY#mJ6|`@w@Rg!CGt+|yJCRgx zhRbH08x~mGxc{I}zhtT~bUi&)|A#)zKI}f+6f6|)%k&ruX%}~l>+CXOY@7r=uXEAa z<9WRbsXfT^_WZ#>BDzG+Z{cwP?Ueuk8yp*FW;neEA>z}dQw-)zpYC|_un_g#pHReB zG;1dHGjJ>kNp)<gLel;^kJ?B))90q^O28G>31fzOA@D6!;u^KTvef+G5$|KE5OZHv zHZ0h+pFf$^%loHqy|{gNMDpG<A~^RsNHMC^JQ?JOt2c7lx`P6|5pV+6V|0mix7DiD zxX7i#n1~nJk+`%@IrhTIfUHR>mb6L5_`re(pZ^JFrNw>trv#-zcSjG5C<Z7!uUrOi z9$*`5_9n~L`^>=?wXXwn(Q>A9+M5@d2a~pDqQtyzVT&^N_4K9qWVjX~f@`5=L0RVB z@5<lz65UgzkgOXCY6^~l0ELqY(T_<h{f!D6yU`u*@EBwDss@6x8AgnRpN&ZYBr=B? ztm*?OJrDM@%q1QuFi>2d9Zz#YJBp6$VH3uv)+6`Sn3*?)(SQo=o4v0*@(lDXYj%$0 z^aA%joQL5xp`KofuRA0|H0a=;)!H5!lyKU<fFVZ{{R~{;bJR8q7?>|S&!KbMh^l(6 zk+k(y-iJQpZrjKM3S@&glJLsYNv!8;A2_@MtIlz&we4g0^W1IAVaL}0PBw)g!tlaW zGJH;|tv_GlYT9gA=rT)hy<H?#K+EGY7_gy|u~Mo__|?gIet8>+lk%{1rEUA)t0r(R zkps7uj^*vLTb&a*xh_LOl~bjv_~u6A#X|G!xE{dCFWF`I-e6+|ck(OQ&9=v9cZhGP z>NP<6LbY5mq}tSHG>;oU<<HUCw=tsQ%H)0G#eF$o(waL@E;BA)_FRTW@u#iu7AvMU z7jRuWR9}>IK51bAEcB4yogx7S?MY}bo<9l|qwr~{Et8C$j&4MnecnF;YSEOb+%Ka0 zV*+6oaTP#v$5fwCz(cH^eo6B72rGx(`~+`{-|Zq{uHutSZ`dw*7%0@<+v{@zfI>1` zRdu;o7wH1tKC(NWe4psdI`-%OwkW|00ya-?%#RP9FG=b}ws2>NzTRg=;3!QttXpN_ zu)XD4&JzM`FO5R2=p{qK8l8Y`N>Xh);I2c;U|w2{@F`?}hBV)&NCGi?9nGHaYy3{6 zY2GkGwSDv{Q;8}&3fHpO+K_-7wy5<|d9?CN2GL7&7?!j+ooYrNkttC@pul`ASEg*5 zQw-<3b6^~moP-LkY2vt$5Klg<qD93V$y!Ma2F=fO&AM{I`Cj4WeCy8^%jI#KL@(t! zUc}v`Q3Wvb&)yRyOuK`6DR7uHUw%~YWvg1R<!$%t#G@5mA>#5z0PyEr-A67s7+x=2 z;_?A6!oZZtXt3=zf=~Ao>7VYiGqDRgU>Z?<9ZhYg4#ty|!ZA%~yn+&DD%Q2)+=Vc8 znw1Myn%LwmSsH|gUS|{5S5q8UB!{w}3B5Q{HeyhkJx(=OK>LJbUEXWNZ%Rs#gkLjT zYe3?+%)0E-@y^c9$~#wA85$vB&(1pirD4ucV2}jR*ipzEfB#;w@5k}+Y8_cSTN@&v zS_v%PUtIlhmXUGh`qlM!bFl|0|1(e!<VE2pxTK0>3xEfuhx%?3W-4P_@&Tt?%3w!O z*9pCB^nCq!D!xGXX}-?V*2)F4UBKJBc|8+3qq*^CzAUTKy-gF166JQ{xRvT1A{>O; zGU+c=fbf%LBwi7C0E`pUe0FnEmsU$^1`(*TUn+Fb@-=%DBlYm^C<&3&P4?HAD#eN- zDgwsxKJ`D1v&5r`rcXXz7dkab)q3nI(yG<Vh^Ffvagf;U9wFlLJYjj<y#x+Prcsk1 z9xX>+?GBnNvTnHuczERskx^c_|5i#2b2uf7s-3~t1OqHs(z|p!xvVBN(4S^zM}Oe5 z(-%)UUIfUMB-IpI|8}raa6wkR^OU`~y;X@<K6uZ&E||UU6z&2WPhV^`Wl|~8{H*tF zr7@J<bPbHh<DtXVz}j}X4gGZ{58e52MPYoyk~50%(->yg$cdN{h5m|EFP&=H-j5@H zrwgCoWeIVmg<>6%KAC%?rxFZWqY)Oe&qsIkkFTt!E6(FvmzCeUTj!O3vM+zGGUTD_ zg?7i8>gQxYGr4c~ghwbxV6<9)<AC)U*dJR%bg7C7;!OyZ-~#aP;w6qmd@Y$vwKktA zq&^h%MdD7B6KK(>jp4KFPsn?BC|t}^U1U)yu_S-h>|63yk8V(PbsD(d#u+7i4T_D= zA$w(Yp_avE3qYd`5f4Tpibfhu=7jTwp^D+M)ok|QI9Nn{Uv~9fYDkrf#FfdhH{z=C zsVlJPKK(RKqjBYy-IAgmtMmIluArd6<F&~;Sh9R~7044S9oG{?X5c84sw)(0<ly!b zQdEA++JPXOXfwhBG}m7$og_o>!Q_b<26G3e=}iKqJ;u_CicE&5FpmKxEpzAY$;l5I zr>k>Gb~igO6_?lMHm9Q<@?vF{=%w)#mZGKgDzA{X@{cv2CIkw+Hzk8!o@#CDVyS=O zG3aT=x>%J+F29!!p0(LW{H)g3)zGZ11eT61A*F(ZthA5L?IhcMAMzMdOX7orFTudX zpnbN}ZL>Q%vJD4ShS~YD%b0NA8}0cDT{CgNfi@hzyTt|z803;5n~+MKt@{Xi-k$<T zevj+Ogq{O-LPA1z;|mbLyv0xOBy9?7vDi#drd=1*e1B55GSU~7Ss10!Zh(%#psSh3 zVLlg@iSX7_Sib6cM?)u<om*5WTI5iBJAO+04rE3XsPqh$d^U(@i{>Q=qVK*{INYy+ z?{d!NSbm~aq$a{(NXy(COA!=sJw~A=w*#%AWZn#e@jVa&0exmOJ;{PX3@gmf<Z%yA zViJ%!T}sURQL{vCVsdgIYY~&qpamz@!}zsKYxEcLxvVN~m<<7P{~hC_7Y+ukx}e4^ z*881jh$ZK%Y`-rCT|&-h_&vq6g-O#p_8x+$EI+&7o{v|@+KwV@omB0YdrZV1K16U_ zuu{br$dFmWMKu`-|ExDTmQ<+~zdr)Zd0YCyiPW))LCBT^{;p~+D&L9#Hq|_x6oY0$ zKAjq2Oim8?Y^jDk!F=H)vW0;8RO8F1g6B63>KI>q{1f*U7aH|d)I|AmE2*a<OU7G^ z73%mmb~e+5tx!ZRVP1H@JK1fMl~sbKGMAkL<Nh;aq4>?UwKv|TEmL-d><acUt8eI# zP>jZQgK&fJCS=kmX?l4Ux<7dj<z8v3BH1w-E94O0Bk9yCilo9nFdEli`9V7Ud;t=W zDsOC2iH}XL0&SQ0W`kRg$_*|IPvMEF<*OcwfmbGpbV9?JvXS0d(F6iQ44QSn05#CW zV@-kC!bImxxrpi0{R<>UOOQZcpRAT*Q5?lV!{=*iy|tCE%V@J`OnR;5TcRj**{v~{ znD&nIWf@Kf1NOZD(a+}{<mYcQ9F>asI4R{qk<sNBQ7oq8a*`{|*EXr$#A5a2BTj2^ zEJhs_6?_5rpB7veKmt8Y{*mJ2`)<j+v8G-(X8OTFsM6DP#z$A*pY><OV=C<$(0-n& zAt(>35MMIeWc`C@^1vXS!~KC0MeO^;wbCXjjtaiaGtw@QNR5Qsa&>UXGUz^5ip#Zk zL!)%?9_QopG8;WIB6*6Qd<*`P!H#qkDN#RfyQ1u0qsow~RFfZhaMI*+_!1Z{R=}QS z)s;JAE1fhImHyl8pfa{tyPI-U<r}&75HqSur9_P9b=@&np+-273cX2vn!7ug4G6NX zZprqA0En82jEeype7uH0{h^@k`k^XGv)v_{N`;16Ud|XKybqfNmW$n&#?oIp+-=`_ zi;Jx_g=8v6wJIfu#zO~LtgB_{{N-w4--QanPfrBwU<_Ch4Hta62RReXufCSitLw8O z+vjmZKcw%!w_q|X7ivNw5lSKAa!vRD&@4G#Y2PoBx?QsHL$>B|d9jU8I&d)^&5#C% zM$Y-@xUY1l{diNpX}i{z=M4^3;*vFPmW;WsS>xjMlZS604;DRS!{y#4Mhm5UdZ%c* z%z<q=i#lZikn$?0F$Bvij?l0SbkmU<kE9^pJX~7tD%98sCF^H!czMjL7U;CS5YLu! zWE{;+%c5{usHe@93FKc@n*uQh7E_YOdJm5?oKg^iBuu+I6A*Vnc8F(UP2zoY=mAO` zQ^jgIK{&IAD5XTfYS`EJ$U9Z5jD+u}B$ibyuh95;z(Q1HBp%Jz+fMTP@%eygQuh7m zsXY|zdNG1%P3@jI4cTfX7yG>t@>O3S&m5IuDZ0L-<Pto*_L}F@??PFk%q%9+B1H<b zqn*$pEFOSBUF&hmqbo!T6^YF+`Y5DUq%GN$VeVY2-V}sJ9s<19%OvOcCFgAGWMr== zV(2J45r?-@;P&Ja-3PW<@#SICsOZ4)U3aQClvs6V7~b3<_QPPDVihT*+47i|a+3?& zPj+jh)fO)`z1<T?X|vOyvYA%tPftdtw#vjlgh!LE)b5v==l;Rb2RDn?>{<76wHx!2 zJ7e=s8<qA)3v&FK2eZdqH}LcGwFU%7>m_u((OAiQ47y?^b2j;m1e%ji81RKA(@#6w zWzQs?zWwiS!Obo&v0q<Ur4R{&qSLc&!>wR^3&n^v$9TlES)6u<W{(=0J?dzcs|+FQ zTEF$uzM8x|@6d28Di<k2@?4MG|KvZ#N>n5E@vg5=P+JCny32p_^1R#_)@}OLDU1vN zkP%giRHbK|Oy@J%4OXxT%`)Ys;OL<rkbS#q9p?#uvUyULsn?6r5MA#xDfYW|lCmC7 zP1VuuyOUb-3$PM5NpXEk<?tkw&0tLrLM9LmzB~VA_&L1r37Lq$ILyG$dWuPDv03?N zy{$>b_w2yL>}(oIO`U1ekuA_!XCBWdh|{&pf~R(ey>|-Bc<ZIArGmO@ZX)%@#zqwN zmn!qtCq3y5-j8)=YoaQXaft)IuTSzoIjuAUYe;qVDKat9a=%`{?Y7nY=5AE03`Z>U ze65{IeRhMA+vP^$E(^QxYxO6mBdPvJ%~I{RPu8zS{yg~}WgZsURd$<xEwnReuMu3l z^vp$tO<0C_a8{dskb`JkIbx#z>7#h_M~T?ed!$UHd9uqI7F*1^E!gblhSE7o6q4DF zHGp|C*MVrc#r*q__+mKLc@15=KyTD(=a4V7+yaE`NCHi|zlHL=##aE`)*P4|fr}QF z?)cuOOc!q8T(wK*gr5J=;b5hckpId!8ZDi4>lD3C4HN!z@*oR)V0Vetl2a&5MIrT4 z7*dcmTk_WwBEn^Pa^jT8$$G@&R&O0s1welp&;L<6Uq-Ct>&mVG^NYa-@@N|Gw}%+R z{;*M@VCb7gli`GX{KcB%d$z9;-op%B*2=-)6B(04%Pu9}Gv&IWF_@}9xILI(y^iQl z7hVOtPYVQGPgLN<;-Tuyujh0UNOW)=Tpd;BVt7B+O!f)XPxngCKOj?9IB-pm={2}; z{Jc8`<FK2U3PL>k9H@RcX?#7Gu3V@1@m5&#mbO_4PF2v~>2%>|7}n$~^IV~(ueV;+ zm%QOrlm|?Rt9?0fqkb#J^18|{poZ)Jb$m^B@Z%f>Vg-M_eK)LBA0x(Ke7{LU00^#t z4I7`=Rgz-C7i^l*NYri)Maqn}e73c<wc0d{l&`Y5hv4_ib*~DDQo&b(T&krhwSL#A z_X{PauFhc}csCfeCGKD4;wkH-0N8TH<azrXCN*V9*$;Mm{P(r~t*n)sp<+;1BN=UT zR`V`(j$esv;x2dlOyihY@U-xA8-Vb9;#8}F#&(T2;G2?0r5VewQNTj4tU)G@kcXJc zIbDrGr*cAxHrf7kdsO`Lg<$!5;|RH{SjYVuLgVfg9L!C4p96SfL#WhsfHtrXskj5f zyvY%VDci7&ex<6@aA`*Jr4)WOiyd8VLa6q=we$xYy1H=bY$CG|m<kppOx^ndAh#|e z_I9ou#G^z{X3!~hJ^t-}j0q^oQ|8JvewoI&$&k`&my%nrSH(lO&6@R%EDoV1^ElJy zmDavhQH(#>X4wch=kuMsMe_VYI9qA$r{{{N6b;v*rX2!vq;yDqK3V*P%i_QgiL;t8 zlsJ65yVI<JF#7od`1Q!6f1APm`7!+f7UN3J%j5L)Ky2i!tKD!?{7k8aBw)mX1qK+l z@hML_YlQ%}9~TmV2R3~Oku<3Yf=)MSBTlU5E0=<P_7bgetkg=^AZrzvzd)%yI;Fy+ zgURC}gV1=cZ<9Ad1*<<%g(8Lj3WQ9FR2p^cnylb(H&Fnk`s_&baaU$!(S|rb54@q0 zZnX(G+7dU0<!cbDAJ$ifPcB4R+TBO9#bTf%82mHPh<;CWiA<w4p3QmC4VA2rdHa*w zR5xd>XV8GzMs_MsGSB+TDk{?hpaUspezhk1a-vR)SF;lPOIyn_e8(#j;>hs?J|XcI zA08YsU;o$5%$66dX04gP=AvfPb?&cDk>ld$>#N=1o0msV&Fb3Wd)VRJ`Q`d^W$?{z z@n{+@CgW{au<FNXh89CDM~w57P^!W<vC0-^dcYjZJ_+@zK0CEyE4I>T?~Zm*MBC=J zsg3*5Bh4XEm~Xo;B75n?r4;r9b5B&RY`mDXqH`A<IAm{{nf2v8n~V72@^7kf1W%=5 zqUGXl{a2!nxtJK4dh`7%)w}iU{n_{Y{1&r*^`~0Z`NL^bWu2c_hDAsWd>^$g5sl&q z1*UYim1+FF_owq^bB<cxH$dyGCL=Ijlw0&CbamZ1H~^?*qR0D+KMEaWayNrk15kmz z{kYZ@OK)Gp?p{<!Q|wJ^DZLaGyVi2LELQ``jx2Cbo;um2*LtPgZhNn8fW!8+b;!}# zS@nH-VX^*{D6hk;-+IL<O{YIjakltz;hBOa8tdC)^}|5nm~GYd#V;G}Wb&%tZ#OLM z)ErL`@OXMR%!#S2CI}9W&O6T+4C@tN5;!b*b@^X@Ox6clkg`9fQZp+o2GR?gYZc)O zNU;^jk)*_LYAv^FVcn7e0wG6}uppnCYKrhu#(VWPZJeXog7%-V!^u?0)>{H1>P}LL z6Eu7mb>$;_P7f2Dwo3tP)dFWn9LLHsGWiiWrL}-8bu-v=q|&?i*XAV|k_k9nY*SSr zB-ngg+G5Q`4JKiHO-;O1zxR4Zx=Pz7UMZOyqA8tptl#6oLa2{f5BD&mULkVDCs!hD zRkCGaVkz{F6Jtzoi9E{Pp?&fe843a|V;~zf+RjB}LctmY&PAe5;&Hh#Bk!HgA-*f* z+bMWAgprOHV(=rzssJEE&|sgtZ$ZrA!)$3155`f>($Ug(j^II!S*kIqm7C@CMeGO1 zxTx3+efiS7>6e<CitA*_XsL+-fN{{!aecSgt%t~69Pwl==gRjJ`Joj89d>8PAn0Z5 zf6Uoh8v;aiH7Sh%x*xw-4K#!6ZOh7m7rd1;GylkI@<`Q6QY{(2Vbi$ErG*`W)4m}N zvF+S382UhyfVNQS&9_wR4i6|S;&3?&`-L`PVavDV4N>T(qIIB1k{U7SQ}lL+wFY2c zUarxW-rG@!C}ciabawIaPA;b$&Cvj&zx*s@{9(mPK@T3sJ<d8yf#5PDQ!{MnM<dpa z-QoM23@oa}%FPr-efj=Jcpld;Wo-iwR?C#1ILz_c4=*=-sUkB6%J+2~E(03bMt}6K zeZ()#q;#I>32Jg__1MkX`s#5r(A^H231iO!zn8e(hSpz8uwm+hp%4yMs_7NEU8Z!{ zkj(JjyiVt64P*Y(T`wnw@HKIFga2#uQcB+IfM(!GE!~Cv%I|&NaTifS(ieODZReLN za>@h*h#6!;9zWZd0E=|@QEl5LRqJ+=@v#nw^*l>tTE&)xCvZR5^$hS=66Sa^Zl7K_ z7r6ng7^$Qp!TU1-c^?Z+g2_j8c-##PLO+mKTIZkBSF?DBdM>u=4To}mDtU%Yip5V) zbtThtr=AI(IDQv$X}mdGwree3;#@Xs2A|oGUgc}E!a^4>`Z-f&i*=h?ijRGuqb4lx zO4fQ9O~RAQ>)q2npn$E13Fb*PnXj+GJL$huAf*UMVU0n*nm@ZePdz#JA3jtavm3k+ zDZd1dWVc)d`jPrR#77Y<(KIkL+L%|A>+qm~ja}-CA{eun2kP4)bjiJV#X%wBly9vw zy9E+|fr4*Hkur%&^{pcuKI_J<3D+6Qmwit(jku2e1z&w=zYwhAdIn^;0_iy`%%HI7 z)eYEpKYz-X-bbp{pR^q!z&ZO`xzIs7ov_*`Oa^lz(3M2p(<*50-?O{^MW()U%lBP~ zcjb|m$${-#j~S2Sop$9>Sz@mrr~YKYImoRHN25JSBVke@H(=8;Dfp79O8-kjy`-ck zIkdxmn~J6vJPayh5>rt!lQBK)9-GCY^rt$n;~qUC0l#8hg+<~}F>a6OYO_}=5<age z$6_9WAEXD0od5B6m1E+hMgs#V`mFCMn$pX~VD8iC-+yB##C`uR=(RLgR$z8G1%A{- zqoLtTqs$D>_S%Eq)_jiF2XK+v6n9-u=T_rQ$5$1Su*hvplB)+W)y2>#9Om1nuCKK# z!xpl8lV|REbeb0uNZk>DF})9Ey43a^B>j2ih+{r+7$-?(EP(~7Kd4vU>Y+f00czv8 z<eFT_u6?uK+$*-KB2_Uog6(sS<I4cD?r;JPO(gy-v!Yf8xuoG-LP3cmDGIadNQ%@j zmvzrsy3bF_*qZowZ%%k{cXekO$j(PMuZImu#&X6Z?6Q$-Dj{$bhEva1tL17Iy6?7& zan-7}oaNfT5DYX-B=E-G2g;G-^G8+Aj5iRmSdm>_EtK0SozK}4hE%N!>FI8{p`hpz z7B8=Z=p{{&)`ClZd@TyaqvAxwnV9}&FB2F7<7+EJ%vVv*W+m!{^mVP51ys`fX^nv0 z<{Nq)+~QU*^uX|Na1?%1A2OUwU(EwXo4sXD-=SKWZV6PjN{KSuT-KG9`}aWO$03y= zTmh3S2*TQE65vf8ZUhtU6+g3RE=5@KBJ^iz5yD)pmaUYrF!dH|4I*)C_nC6FzC*?9 z#rH+mVG|X}z5qCaP@A>JyaY()usiw`uH{1S6Q}dJ#AK6K(bG>ZDwq(p$b=9fMeI~b zrCZ~f0tFeZPsKcTD~&8<DkDhsEQ_4R2NHGIAa^VS;+`^}Q&ZT~FzM&YHOmRPVz_)z z^XS>lSH5pmp}|NiE^`Vv;P+rBMma#j?=`sTzHrIm3y75^1Yyiw$RCpULs82?PjmiQ z?zeh<X{t#u424z_VK#5dFf!CP_tj@1)SfmTjJxPiXmA7jpeO;J5iwI9PhlgSTrLks zXGk@k*{<)hoc^BErbeUsEo-rSz2z}M$KV-vS2nXMa(k-2Xq}CS$VWGQc$k`~B>sog zq~YE%7XwztbKS9KCh=$a_x#a@2SP_9HC@|RQdCX6qnYJ$>*8@TaiZy1&FDpfwL~hp zZ_1jjP@mk;z{3L{E)DUY7k?hg*sghRHP&lAS?5TRn)i<l4{H^;T*9(E`z2qU-`}dV z6^YB~WX1J5Yx<Da9j0b}U0=IS;1j2n8XEQvDv)_~M!h|q3%U@YzOshZS3OVG^MRkd zb$dSJdyY?4Bfs?WErBvjLU_-;B=ERD10Uz<XO(K0wOn;&8gL#}bsvo8fvEK?R^v*K z!*kZe{K(K*W01tam;06Bk~aXSy?*aJ@KFVWtl)F3V^YYQPQP)yflTfkojQWPP9<ds zlf9D@+*hG07lf;ePdC2D4ZALZ>jDT#qjlqR9}%uMw*m)wy4U3y)>n*ElT4q?%jn%U ze^}(R2v(}<C$h?ZoH(jgPUhtI1G}m7YgA1SznY)-bxd^-S>D(R^445>TjCUdu+L{< zcHP5ESA6z5U95{d!h3jpuzOLy4iwwX-X5#QI9+6zjBGFXa>Q?C20~^29~Qv+nP{cW zNpp2Kb(zClvDovZiRq;+iPr3WMb5kYrQgR{QE>X&2k))lmJhFp{GW+*s73WZ4XaJ4 z=7w~{OUzCNeaB?CE$@6_?R`U2woQp<!dn>-rsEzPW%#zTA?#^G!vxVK4C4Fh78<|= zDm~=OunSrCuq4Fk9c)FzR7lkBle8545))SE7?|&EX~J*`cv~x#lh3$#tiqsM$VS{H z0uqu{#}e?Cpmre*&9y$M@&^h!QK7hl5>BQk)at>&fRYeH1bjz90TUL40cQIb!4E06 z-mtl#e}4S;-yWi1FQ$(p12TyyvdK1j%6|rJ*;0wPUZB7QxdvLn|MxeDGWudu0xaaU zSkE`=Z=Caj0y%T;%hET{-$THRoU{g_{(Yf;{f}TST1ZLw>SX5irRD41eOv5+Tmx=O z-)3u0P5q;ePZ$__XflzI=Ua<ZNC@zM?|fkDLNraK%n$3oD>*&L+mAUxB<oRNV0~*T zOKR4>89IIF`|^c1$Pa=~q9ZCTO;&q6A}Z|ZQ}f-iNAB(L;-Z^b#?ZaLf;b_M_;_BW z?6b*CQN;pF{tX7k00{|I45zGAv&*&30CG$m@bIE|VDD+I5{x#ClliSv6Bi^goX&8M zI><x`io^FZ#Ez`nYnjdFwb4~dxNqe&3d4s-s-440qdVL=IoWSWOBGs#Da%8ze#XOJ zTl~zUqHUF%?_B07^6PQR_-jnK&eYWLnBZj8VS~0FgdZKJqxgakE~=DXP?*={@o7E> zen$xzg19>s5av4P%^Ja({=EBDYMJ!A;4d(Dv+=har<)%0N1bSpKU<Y>mL27G6k%KG z9gAw0EBrdkxB1%r?;Fz@dK{L!oBIW#a&!nwk#{*nL9fLcbdUlNpUm7c){g^GQ?Ji1 zBkpp#k)D)l_OKw?({SmLs}ZPTNXqsWualjwZrYvp&%nF7OGVoVeA$Z>Csv=4+jYQq zM&4n;fB=?~OARZp#dt7nQ(%(nQ1k$%aQ)V2Z1N9}RnB`}1X@lC9+Yxp>-~qAb&FgS zs1TjaXn9HkA^D|z5*9U6C_05avKBG|g7P+%p7+KRmABpg?Q!(sxWIc}iCV@bxNuHe zD*uOMdJS}?NL-+xmv6kYbu<JQUgN=uq8<Bd1c>J(wHo+=SDo2R_u%ydgjJ>r!8vM2 z$gBErLMgltSn9f2ExBK;Ups$4eYp~oAT*|diy&cH#QfJl|M!>;aRP%4Dkn(>fXVx} zMKSTZkruh@{e7moir5t(QK6UD*JRWzZJGSB6`4$s576?0#B|KX5t9ZAhQYUJyOewS z=YmL4NINGxGGmO4QttK+4y@0$j}YB+al>oyPj^1Fnf|&_Hl^$D6*d8)zOi)+ZzXDa zPZSXUJK@ZPJ4!V9$sqfj-zgj{p8Z}Fso0Nv9f*vi1O5HMe@7n%RaI&~e1bwLWs~wH zso#OXag2z1r~FjfQket9)Dx=WHowW}7|aBoerf0;Eblp;LpCvki-3}$5`Ze`?|k{c z^ZMV9`;ZUO5^kLRJwkF|vrkFq6BroH*^KqgH!(}E-&rjkVE%FlFC;D}s(A@G^+OQe zRTH8Nr=Km`80R2anC@0wYBfB62{gAI@K;5))ksR_Z6jKBNQjCHe!y-*|DPxNbE&qE zzR1=?@@c*$x2JYMHOSEB<7XlZjF|#+f3HysUpZ>9OaW-x-5}=_YPt!f32$m0vxYfn z9nF|4KmMHaATUl+AqY`lSVI!6|5}BBKse;P+TqEL0(I-;2H#%o=}syQjn@!vZCGM{ zj~TcRHCW{cwJ*jVUfueVd7=lf8&57p8P&e&FYgYC2xlVpM*sL8DS_gf<-FuKWi0(a z%iF)2NR-Ey%gYkA37Su7_$*$a_q;VN?F^5Jsuc0*vPi=qL8ZHcL)vjN3@+0SkIkyU z;F)9Kfb1!Z{}^~dCFK*uB8V@FhQ6_eM3crpT7vZFcfC0En`T?*FfNCjH)R*w7HWfn z&o@?zN>_t%+L<;sBDSF{$&ZoK?0LP~Y}yt4*#WPrs81Hu`j@dkE|w;P2G?I*LO!I3 zUT%5cXF>dDq5fBg3X-FksmFn3woyGldfrlXckmC&Ne}qw^IciX%VfUkE!gS$MBw+= zbbU2*-;9EEDHSXq`9IXXV|ZU%6E_^&M&rg-gT}UP8;xx?Y0wyrZQE{aCk>i3wi-XX z=e~PR&;4H4`}Mh=FaHn!z4ux(3$tcs{br{3rfX{W!)Z`+YzV7DiQJ!qKx_ly-Kt*H zJvb0Wy9L_$J-lJ(oA0~j4PUb_*ob#i(ASVYaE0w3HhKj5d46#_MnqHculW%oHiG$y zU@K8svmQmqd?+(i8E<_8i=jb{e9u8E`QkAnCIe1dtTyE2_SIom-=ypD%e2z)%7K9g z>aJ*>;fpc`&Xvwv)jvtv#7FNI_{Jryq@)H{B`;X9WuCuu#wk4EUhqjiV4zk(;Kdmu zg#i|lVs{D}S^eQS-%CwqO7L@==^nPg&aUvS{I}|XeQK^RowB#$RVcjPww)w|3_JX} zsP}5)_I&zEH^4HR&WlC-*BMwW1_J)z|E6Tvl&wvx=7v0l$6fT+I;K>;x_v)RfezgV zZzUW|i9DQv{-y8)1M)}uc5?i`4#6c-|A6PA5Zz&qjjkO|H|**8p+=;Sg!h_ppZ)em zcC`82t}W~_EDHel$BvK$>%SIEIl%BnlMaKUkviSbIOXtZcZdP#`GR#gSPMh+b&HJL zWtDRHlkZn7NIZ<^G-5cJ>o&6)qd(~P?t=Kam52l6AKp8WjyAXZ+*gur;`SYOdHp-I z-nJ&q8!w@7!TY2@oHx+}In9LETrNTnUzn*OF~$U5?q_DrIri+AYc2fj01w|Yc>>aJ z9RS!Qn~!fnM7yip)ovd6V7;?CqR;ob+dUqm!N5q>!1-Jr-tc-qy<Mv^Q1MMGYne#1 zu4-X(8p10~CH%g(Cw}(LkBQEx-d5`yRlHmMlli26Y!mWixJa%}mq$8-K0Erk`4ofo z`1Fch#is_IH-5+c{MVO>A(-MnHy@D+4{<fiXzM);ZM`feDR+U>@wZq*!G$0d3FtAf zJ^u=;k|!u_wN{F*TCw_N#pOg6n^7N8G0W~-t1yTC2BM-S1|GX1&B^md4oWhzWY78| zlG5&q?7>T)_`^2kE0;82n9rYy7evu6+7;iro^o{;Yu=<a<}GCSzLV;k=r5_8zX@<O zqAFXkRlDKwdx`tj=_T(29g}-_qpj43MNsUTw@`1oYS*`2?{oL6a({)*h+km+p7#NX zydLyUWb}63a;LdOD`{Dt3MiWXYWnWX8qH6?Cdq74AMJQb*9*DW)&5&6t43xLllj(J z>Da*NVtu}XpQq1t;pgu~Q_FsgX}q`H`r;+e@;;WcNd#tBUGJvXo*x@rM0X!wtRLSF z!Twjuqkv5(3pCR*xt;PVfU6=b0lri@vass{Uw$`oY;$uw7Dv+iux`9M=XuZGZU!ls z$!u#D&uz9=uh)P^`~p4>+j&HP`;C?&v+IVzL>k2eLZD!od=~Fw9E{Xx4%rZp?KCF( z)kiBU8j%Y5BN|1v$VarPe9O9n!<+QEB60Hv(_;midtuZEr#-^F%U$VL0VE`(de`r2 zdCte(wf^6&)yhO_j0W@DTbvZ8g%%dy`91C6%4RZi2+^VS;C+RK_tTfm%si&GCY8_R zo29i52ne76AZ_UkvQ{Gr%)F+<Ur3&4*vp4EU)W`k#$8o9&xB`@sc9j8Z=)v;m|!o2 zF$_X)p&yf9M5vYD&MMPrmo_^JJMQ#U=5&t_L<iL%Kn4w|P{-p_95jt5E}DlLk=5TA zOvQlusbC;<zj8YU(j?HAV8qJWsO~Q}bXZxX#tm3NYfDBG@{8VBsViF!$!DtB`6%$* z9`om8pqsRNK8sPmM?6|k*qzAe>K_poRb@nT+=b~>3XP0}S7p%G(lj#2h`{HF=EkzO zfX>HS+&VrMK^H?*dn~jMUF=nuW}!E?Cb|)jIiu7bdTz8~cR8DxC|){-?7}}uKgDTW zW@BV~EKx4V)~Aet9Vhv$wXonrr1yrjLD`Yz@6AuFg$|<*33aN*vGiOf8MGoc0uN)T zfJ^C02MJ#(S%*!RgU%BhssuoMq44;Mn?}ywyR-4S|4h;A@|7-{e3DkBO)g4PrJd>N z8?qR_Y#52#{BbB{tIb}3r%DSEgbY6!F^_NYSm|^95=2QJP88#7^G$*uCd_(nN#BfW z6a?ygxy~#%h1m#&4zs|Q3a^~+ZFlL#DE5HO<tGoFZ$ZAN3!ho8#<=K2yXdurC-vJ^ zPVConnN=$lLfbn!N;K26G%Smyw42UyV%j%yCBY*IXeq{Zn^gt^cfKZth#{Q{GdJ@I z2ke4XiWkPQNgDAA_wh6f3*s%5mAIc8y0uQ6XrU!U0=`|E-7R8m9X3d)dq7RiA%(oE ziK_|n_U8LsRt8VYMXAbLAdRJ-H6bVG{9_IB^7=u7nP*Kkt);289H%GI<|vwXu2fT4 zb!WCnKKKfQCRV*_uHIrXDlt_`rAy95tKAuscQ+-)WR0?(MDBQLuGSJfa1=Y=Ddxq* z++My*4p%yFP@de4g9C5skuniFq{3r0E5Wo%<1^UE`uSo@<a|dMm}&E~kEb)-XVO{V z&RA>W4*nsQR8vWn-^dI_eLh#xC$R|aetgCUKPK_rnwxaXNi$aSS=?JWk&M+QQXONM zgdX;zSA`m_>JNwq8_Mha$V9w_S)Pc67kN;M3uCyL$wTGceMSvu-TLJgP^DhjaMYc` z7JXw}k^6J0PBe`2mB%AOq3<-%&l}Yk6V^n#s<t0b^J=?Ywi+qr5~hxQviNlIv|7x_ zY*$;<UkQMsP4E4ZS!N}Fgjy?hxw>dI*u`7fFVNvy?qu^}q<6h0ac=1aAMMv`!q43V z_iDEYX&x>$LZ-@jY8(~q{3DfKeZaO3g<PKp=|#&8UU<}o4L|G;MU3W83tNs=zgTT@ z`CT~H?txk#VMQfKD}CePDwYl-DnVJ?Jv)>4J6)1?u~t(}%IM`;N@aiL2xKv$>7v(_ zJ$m;nnX%HK6r`_#xEbgCbmpfr{qY#<CXF64a!)455?y?zfOc^>40^T2J=<O~jzU(( z#Y#nO8OJ|QcbF3~r~y{lOp(hqPpk7>o!wvn1c4bHG$3o<;KN1$nG~1xN_8dP7a<Q^ z-f|+u<5}4OhzgxH>Lp8T2O=g54j;`3*5zi?_XX1FX-WkWaxPYCiVKOa1U$Ki1KCX) zTY<sW;017k*PHquD=08W6O~M(GdT<RkZUk0)y8lVGLHfUZ~;hQPJ|!syC2xx4u_wl zIDGoLiR=`@W2VcAA78l(SEjS0C(?q9fx||eh=+H6i>Om0D*Da);Sn|3!<CwbiGlL! zi2;NlKPp2cZ+Qa}m^WpT#M)X@$XW8Okf5$7>s1MxT(g79k3{Ju0k56lVGY}A{P>Gi z1rIz<6GlEQ2X)vqriDhD1Vr?GGd_{tC!N+Ct*Ncp+5L|n@Y%WUCvmMd3b_Dqp2+&- zci+^K+NURQ75#b*0Q-ebNhzN8&M?1qF9)M%9@*v*5m$Ecr&cuHOpI?9M}~)|gU&R@ z2^$uF#eC$?eB5#jK~TLeBNCTQSD}(d=M5nBaqvWDmqdrg$E@K6G7b)PJZ9HgZVn7} zs;du*{rUa=-`4j>=J6q#6vD~ns=vAHxtDM{7|pihqFavqM5U>;onIM0<n%xX`$q>A zBi5m3BI?pWG$5&=_~6nj9S?Tzh^`hHXfU|a)1x<TfZs|di_5P=D@UKUppKQQ?RHwK zf#?HePb>x=<V1xT3mlQa3HJ&VFA{~vRv3YwNG5HW=%Ck4Q?bGPSkQ!493=B?DvOTi zJ<@OrNyWEBxPZkJ>QHhhTfr~L<ucVK`H~q*i9-l}jdZDVAo#4$1<M8SYN#+^KL89* zUL)d$K_YC)lh;<<p>leX>>NqTz!1VKa0{<IFSV<ph3mQz1bGA~8u<fG35?1@nneaV zE2DNM{227b7&O9VY88ixRBjVC^~RI0``tNt*BrD=_g6o1Yx<xe>g?El^qdvL&L*fL ze&Kkjk)6+?4Kp1;!KyAP7wM%bkQ~|JUKG@MjBO2ko~wy+ZQky5-sLW+#{Fje07iiy z9UVQgj$|vowgBCj2{`W^r3W*k4l~)yXU{taeAH{+B=pW4B2@PZ8gv9YTg(b+wpZ&G z7-_N;HIpI-dKF7Q63x5fb@DITzbO0g$5BY;uY?}K?ZVvY5O(q@EaiZ3)eMZKX_RsZ zKd>EETXWcz;uN3_z#Ww_yKVFtartah`QY|*8s<P~T(aS=RY3y?8uj(Z>T1h)d_cDN z4uByIL}JVhS#PcVJZ;=LYy0I5`aSDxU|Xd?a*A}Z`N(ct4G20|vq|-uUC<gFM*U7T z)+rokZS>|%n@z!sidDB8>4!817=O>LI5QltAi)oX2nSq^-&0FFC4;osOn-Q@F9o)Z zowVJRXzw*H$k{TVK~A!@)uu0OF;=QmrDP@Mjit^&zlT~NZ#L;sl}1NcdtPcap*d;2 ze%D6FR*vzZh&2I`=RC+Dw#{^vp#jkvl2d?sEP;do)1Ux+q<1Tia?YPyxRp(+MZi$Q zFk8ZK@QqTd2=h%zhahU70iGIK^K%c{t^aza!3i@46+PkUsdrRkol>eo3#e7lhd#&9 z)ei%#DtZW4LUmCoC79OlQ0Y{(HpU$qRLn1OLlPh@538CPy<xEUs4}YG;zSfYVwGP= z^<B`Bpi+&YjBA;m;55q%O5R@G<pHX3N$yX!_PuNs%ZQSOR)i~rqX9Q$cy?l}V&SGv zDbP@9oCHH@u;d=zN2Jme>gF*)nXZ_Xn&v^qmhlBnUat!w%r5ucG*=uT^QpKlv`?VT zABKWIY;YM^JeM)|ZZx?5L)<_l&VZ{yHIzE>&qL%le9_5dzT(ebE~*QWfb?<r)GZo` z4Z)!K92TuuL)X#frc`OBv9PFOK;0woOfocuGjfyOlz<k*=I6RBh`*VP90_X#Z!>_5 zvtZhcC<<Fvd2_Tpz@%ww&3e|uA{1L~u)t^r-L#*cLre%Jy=K%MW#A**jaS26jY47v zp$4TP$EIFWc??$cv9Nm+&mj8~CzLD`Q;0M!M1;XN9j*khyj^@>A;Ge7JJ)JDI-Oc2 z-LQz=DBWs=(J(W7EH3HEoSt%isP*d5Pefd?adq$Uw~d8peSUTd@y6O^1k!Pb-e|Pi z_aIia*|dC=ko?S3QrZcp?UwBvQX~M|d&ICYDJ(9ZoBC#m#q9y2uBe-R5dIEpP1G<I zpZ{LH&J+>It1&}opRv+7x8W2zG}8F5g?_st=I-4a0?FD`ZDWAa;`$wn+vm1j3m0B+ zxtfkRbNA(0T*{$`jwAEVaeIeftVkT>YTlY7v5FsT<?I4psd5e(g531RbJX`@zAT|g zmxuKUTN|GVNB9Ze%$K=2bj>gl-pJr(h#4(BQnRP$t3@9D$8p<0Kwj0-AVU_|Rg{jb zLr%i?*znR3#urW+N_S&w&ufl{<$@LTU7H>%g%DdwP$D^tZMNRhjDD#m2E`#hg$z{P zWSb7Wu89c&MVUgr%OHxtT4=L<?t`adv-qYrAlBUghlST4YS75Hi+%ULg72hm5c}wt zwS%HFXVZdaHG~T!+RUqy+f1`?kj9-YQii9_=5KNrgrqwwA5L$wpT8Nn98=J{tt(4! z2otj!O7%5jXQG<xgL;yIMepYrS9@GIT^-pSJ<o-NPAntDaG|rPK9*h!TOR2oMO~ye zeyBg>?p_I2{f^>|9BHHhaY3oUvqeA)6!f4pkxs)O*ww%YZ+RqCQ`iaOS`&NyX><=S ziBIRyONyuPAv8LzIB6qP)pq!j-Q<LemxL=T0rhXe^x_54I}ZlV<KeWI@6jI2lBBHH z>ezvYV{8zZIEdo@NzkKi(8aRHo^~!9X8~CQB^$?LCj2|~4+jOmJ3irrSFfnj#Dr1J z$lG-l)P9t1-Qh39;rMXyfk(_#LoLi@W%oDyTYEX#^!JxLDxkXx@2ZV(13#mV=EBm! zNiAK1^uS5EBaK+;Ny0Hh8;9Mg`<$$Ikd13rtGte(Xt>5z!zYs0G{N&{pfVU&rx+Mm z(`Y!@yylSc6u(5Gj4JJnUa6xP=WD9g8`G#$Rj4VksyG_d^c>nAwN&A}74AlaD=i@{ zm=6-9uOv6yIhrpmBo8~R`w-ww^8$-3B>EoPWI{rgi<l5@eo2xw!L*2wHah&d#yCl# z`-2?9_63+9Q_Y-M1@rA~>rv^+cl3y?oRkH_lTO<^V`WqF89LN(j-IQSvEgLx5uK!E zHt0v<(bfH&XA7Q<RgDT{Fmgrh`|)#w*~djD`PGHPf#5!7wI2@l!XNl8)u^2Ad~`b- zHDo}LIS1~_)EY);6gIvI4PD!AwbDEEHe~YHaT+>+^DLo*nc~7jhW{bAx?}w_l9TVu z=|L;S-3>R-j*iOA&SElK1sY2C!QvVmNuEV?KM1p6@A=P1Y`z46#&HQMun<*3Noetz zHP(EosxUB37;5QQk}_%*VP5Otb~!6jBc2WX$sD;}?}ClTVU+DyH#1>+fR2SoCvU?^ zC9Fwza<skuCbv<u^nGbz-^$L2PtYZ<W}s6V!}=%8F(Y^P6jixyqQ(A<3TRa7##8N^ z^)0VE>vH)VOO9<>gJ&jHF=6E}OU-M<(Rb;_7M>e<SwOmVg$@1Lvp~y^AGZ|_LglD$ zb8*wGlk@-4!#9$;lQN)--Fv>YkCfmaflgRm;>C}IqK~3-lMZ|wqh{;|BL`uWHj<N^ zUelr@Fiwef!lz;UDm_@nX=v8&m6byi3KB4>!HiIM>z*kl0l_r>@t|ca@nfZBVT6du zb>A9S%|jyjN4gh);O5ts)P5RGD<_Q^)L^2_5%?9OlgGaZ4MnC$wAC+nKpP;hXDev` zub>M!ixdc^VNygShq92y9#g5b)(FHx7Vp2(*bID2`nQe$pGgy#qdeE8W@>(;F^Dty z5%r&~_a9dP@dGMMSNP@rqMK#SA9D1shtr?@shFmZ10|jQa3&E$1b5%b02g3q_lMFO z|9&9AMg}<B*xC$cbpE!t|GFVN=S4?>{NdI4Fyr>`2Poq(!4{acWgMqsb$0*Tk3Y&! zMl_huVDXG@Nv}p51@gbuncrRv5fZRPyKgnicn&0WA0^=aSfzjUilPb=4u-B;8C);? zr@!>qvvk0xS@VDMli+<WCPUlf64pJ-)k^T4gBxZQ)q(R5MTd!_3O(K}LN04}8cVaY z@jSd8RFZN1@7nyX7U(bUu8Qb1S<>mffRwzK7Z*7QxHIv2#`$ZcW~(G0e~*rk&?aD& z?`&_Q#pPm+t^u`^0M7xn@gTwukb$Y@iwQ7H=O?ftBl{R5(rrnIKsti_oWqNtFnNpV zT9>WDZtoYF>z_50>uq-d+XGGo^_IpL$a*_Z5<WlT_r~>u0Z*6EYLi_dP(2vGhSPnY z(Q2ug>lcm=>BYWDF|&eTPPf<s*7N=n^W@t-<?eX=>LJMuKAY-^`|VG{<>h5a+DGNP ztb?5rzx|PcIt+f_CxiQ~jPs{^c+ZDp+})8>vi7p1hyP6RCchL=U?_~uYK)WH^SJrp zH4>E!YIia#8S46EJPQclKl+7WXr0L7#mpV<R>%@S0(4&DH5icycw9Qh996w3;Wy}7 zWl`iTF@zpUXMACn3tz6BFJ@?0+IO*BPCfl^pU(mcgnQWuB81`x5mhq);25&nT|{D; zsuq9*4BB0m5?BXHZz&C|t*_f+#yH+97mjBGaU&uvu989j-9c7poGyoKyNoKI8g14K z@ia<|Jfy~6gMie)g*5Zlvm>h3xn_L@s=)LF!v{zx8uS(v7#8o$(-Psm+qSoQHde#q zZ^Uu2$O?kGWfYh#O4=c66R-CfT4$Ogyc9l~FROrK)Nhe$v9J{H^tp>}d}+}=S*XyJ zmi|=`^0~19v106$K>J`N@hX8!Su8JCt5eYkV-<)Pcf_#%%qISym7hxk3e;dcd~XnI zr8oLR_FyeFzTW%5-uY=?FpbHsUW$m@JE3+Y<+f+dFSmtl_PfnVm^eY>1j#)>H3aHU z28<MsD@KKMqB_NiFR+206WTRKT(kZ!_Xo(0gMfQ`n2M3ql_g(ZJ_HU+LG{)C74(@J z$mo*SIFF#TEi&R$Cf6aB@YVxQDw!F7JdIaf-?jfMvr4WC7f@vfA(27-Ba6v|;Q8~( zS_5<<wf4uy3$?@$_>=<f`jMok&QEYy_ktP5mvaXY>TFJz*9WXt8#R$M$@J!Wc&v6{ z_YV(Hv=P1-^m=J%<g%i>v})uPF%}#9HQ%Y_J9|r!=71t&PV=Wp6{{sLz0Zh4-NB5% zWn?#6z;{Zy8KA@rm0;jcHnVFOM_0!gY}?sZ%tUJ42xB2$%k|JG8Un1;EU&w~8~k^Q z(QEgxukT~67b|J45nrrnRZ9ecY6GeVE9nideA2H2D>awY5WxcdXg?=unQ-Dan(vb$ zusMkQzHe=bK*GN*98J~}r#oP5;ILlNu&vmr*7WPV(f2jkGP*r|_A1q@V|ey@0aLBi zQGAAp!DGz?a-o%ubopL|R_b=;_&Q&JpB^6Of?)%d>MFOjz`((57IHG&$C^JTd<??8 z5avHfE~z)(W1yFQh26~)JMkQm(Qns49m!&39Di~_8c*TU)`!9mKk3QpWwjGOBGRVW z6>&;DnlIvi=C-bUs4Gz}D=dYV`jnBu+rs(&=twe=29sRIqTJ+=)%3Rn1wjY0v4w6c zR9IoYAUh)t=6l}I(3}7zO%AVs97H1p<<?D^BQ)rgt~L)pFY+FU226-4khgrJUYTWW zp6@gt7#E_OZd<%2`5tOyq3h5C7NX;MfFmIg=4lTz1)0d3+U!%dprgWKP-EQNi)>2y zjzBch5AgiWC{*wt2)r(@sR{TTKcRR7P*+XB^@#=OYZ-D`JW``cbh%u0g=Lq11YEg% z4IE=kBwt^~O1^8wy|CuH92+&&C64+P4Z!b}7<1UI<W>o<`dj0xnOUy>5I4;YOC^ki zpwn!Xq0Qy92jEkDwCbhBGC#wRpJRSZW)wsZl&e2DAE<N{%47<xx4Gn?`(@=nBA?Fo z-aE}X071^S(>!=Q)m@4mwPgQ2e7j@2pC4P7=JO@vaVU<O&?zK}8*6e4bFL4UGfvk# z#o{TW)a_PN+O5}$10L*G0W{aN5DUrkS>3I^jk}#KKAduxobEhMw$tJ%i6iD>bfWxU zV<a*{V<K1-`9$CR(dYcy^p0v9*Y9f2@8>!A?r_Cp534@ulald3ge1(Iew!UQkWe&o z^+ySf{X`P(9^*pzT8rb%4L-*KF*I2wpOf5fm&fy9F{+Q}O?|77hQ#65ucL2;;jpGE z!d)LH2=bf^_AV34Xb?|$-Om{te2#8yZw_{MMS(a<tM|r*2!~F6gR;&*Jwi2iEyYo+ z@q`8#T+YHJWK$Jf4NGDm2!^zI{^Rch8HPFlgF3D(_rnDXCE#&T83vFFOe3eWZACBB zAm=9j2HPls10ReAKb16Im>qS=(^?#LY0!pE0zn80bxF2!O5;nfPOC_G+}>}a2zb%j zNPo%Fz-~Xi08n@;%J**H3V;m!5W-gv4agZ>kAYeZV|a9oxoCLrrl^^K#Eax-G2af^ zZjKgJvpRi!=SrM7RvLZ6R^*fB+K<xn;&-L7XSjuC_`SR`7St<kENRs0!(ULm^vE`* zoU_;@(N=0bc%w|4*!njR@L0aQ@OeZ`sly~mEUfL-OVyeU=h}`G{Z`CSP`@T9Hff9# zx(?v6S~dG#%D;EN%j~dXEgP<zK*+KVh2;z{FdquO?wVZjtKsfRZo+2NQzFx|y}GeB zcDo6QOj5Ws87`LIiw+$y)doa2J_KD%pzRx+jM~+v(FsuRu;GFEfRRMm5_|3>wM?eZ z$wp(z;q<VAg8mO+sP&5F7KVXFfxCnx?zfS*2tY={7nKp|p<7$aubZGFfdQMhQxXzK z0#kfu84Nn@`K6Pwe7e=M-8b;tKYkP%X;(*me|iQF<lQf`_}p7>dqm-5@HVOGc%zB~ zNzr$xLhBu+mzP%qGWjUexf1zE`fqg+A0onmheB;F7}NA?^=GkwC+Xx0;{Fr?ytyj# z8VXxSlz^x3fF2s76;e)4Dz;Z2EP12Y08yuJ9}sBUnPf~CzIXs373jM{c4?H4z{I8i z`YIKZf*ghXLxB1fx4iX&UXe<P5n7Vk%Qdxs+Ph&He2(?}=SLz1P4L}8p2~B{0d!xW z7Dg`Eo+8=W5Zkm_2nw<L&OWo<6%Rdae-=pv_)C*09CogLp^UN%hwTj25?85uS*aR< zus|mfErAE;i|I|83r3LcP<FXRAS9&c9lk`xk}X0{>^c2lQ2!>WT8_8oN}E0Ze7SCx z)k3kHcr-yC*_%73?R^qoUs<7NB2+bwzA>#nsH9it`m5ppt_JTc2m{Gf7LQ!5^B;Ew zqx1Rtr#dbBKPt3oPSI2f9es`T=4a!8l!KvzvMD07<`bm+e*6!6S*%v3tQFo8uaEVY zjeL(cC!+4Zwh;;+g!Amyma=+6C1ed#5ENGSa#vCzMHI_ytRST2=`oASc9_YrpH@Pn zU0Ys4%GX1Y4(^7VqSA3%CrhO~PgVA8@lCIIvkEHxPM#4h<GTUJ98D$zE@sNFO{!t> zb?60h84-lMo-)tSNL%JJ=PW}up^Vyv^@@qb@O7g23zbTv{Pt_t(1^Rs3{(;s+>NX> zM?*)Kj~6o|K!|jqD*-oc<P6&jc)%D?^!aeUqC#gh6ahacAsIkcJ0i&QB)+mjs~Mq! zm)kWO@7X0%*aP$YmvEp%?Iwc-1h`m(m72O}wGBVkmtSz#m6j7^s|hSb>o_1P36IY? zHq9oT(=wvAyIWcSUHjFi@g=gsb4MA#;)RnK?CtJW`2B>|2|9<{EO5X0f^2VZ&+T~# z#$HmS&2?m*KIL`pp2p(3sZKzcWGw6?#K_2x$8*g&U!M7HhK_k*1zNcgTAQW5`xi8D zHzXgaJQyny9J>KP7rBtE4~12zdFvY_vPxfW1yL@V79pQ<(1nG?7*2z|vG?TL>FEVm zXGi^Q)Z~z$q`k8Ac>;MI=l!(DQkW6qqZ)-TH_V;=kAKY~1sGuI<ZnYdl`@kI_MGeV z_IGUUJi8eO)QF<lnN{~c`5dNJ<bIAL;*k5oM9pYnB5~O5`Ll2&xB!XNVk7M`@cTJs zc7=?Y7V_AOMSRN@iF^XKvQaJLe~ulJ|MdRw#a-}?^$7e(=uX#UwcIZ-7x6Z%2!Isq z>&qbILGTn%k!TAs{$OJQn~)Ol3@@^9u*36vLVlZ8!Epll5EtrII-ywf+TxjdM8fkt zRE(TzBLA7U->(5ofq;F^?Zy~Ojyy;EU*i&x(jfx*0E(s{z_I+dxcEI*LIQxX_(@EN z@832g0P4F0jI)oI$r5-}|6|MgivcjIs9<k6(0>~FMGwj@EMVyEGJa-L_+Rp(023Au z_8tT5-wYCupu<eFjF`W4;O)LAMf~5#n_cq6B5*RDYnm^QZ}Y?c{jC6uxAI?hr-$$V zdv@plzd=m(1n2$o=ApIo2hItd8{yBHi#no)b&IQyd|?F}iXC~KzF7zBVgAM6WGu7( zn9t5Mf4^>XxTlC3dkHxzI2j455ara%@iV0k2IRo`cit;bG}Gruh6dJDT@`-9qKDrK zix{5}<AvKhOgEtMI1fC+N5w+|;nj{FKKWu-I%zu`@ZM7M`rf)Ake10W+WC>Tmk<9~ zKPwSydn}d5)c%$?BYQf-2(K46N%{TAt|EGB2l5=qk^oL5<P@HO`Oj1fq`<!6+!7r) z+Q@+{(+g{1aKZ!-w$V}$1&OaDP`utiA_APSncBPJWF@^9Zc7{bW#8`jxVO$KRWMdc z2^Fpn)o<B66wpd_nX$A#x0gJ3iz}|su=>s8ulOv@l1}!-XH5rtFj5<OL*uQnlgQ$y z1>>niiKgFqXY=2-H@WL*un_Xx6e+Umi&)wj9%Q}w2Y(^L3zkw%z;uynr6FL@UoVf5 z624{CxFAK&qrzRUB#V^wAdy1t_MtlO<T1!>RKF8RVMGp6%~ObW>%iA^{MwwJvEKF_ zeHLXIej?SrT*vA_5uT~>)F=n&^^V7WITPwK-|Q`)=b?F8{szC(aM*24oK}kof))=6 z*E}6je8jF(Q6>HM^zA@NvEj|qL+y%~#j4%J$>{~_sO`)IS=Jv59)=Ojx~W4My>Z-X zfWn-z?Y#7z25)qa(p!>Vn4RI%LWUomWSPP6@XNPd$O)t+@p$D`-yWjdefZ+j%Lpu` z<Oa~V0knnW_aE)~_-;PK0rL~R9_tncd%+m|(clE{pFa;y_zL=Pzs<hTfx5t4#V$fx zK%VO|>C<L^L>`^U*3X=78RaXL<*%+~x-JSn#A)WbF&Z!&AUfN>_0g9?Squ<+{t|w< z=bXoJ24->Dn+#!%S}wlK+A@_7Dyf3|ru~soKCN!M!O<&{U^W16F<jIZuU~bj2P~jb z2%j-_HZjyiKA)dK!x#~5rpWc(5?Q)S#p+8mR)tR)r-|I2P>s<N`r*$OS?|F2X<=<0 zhsZR~o469}D;q_hdC`?hdI{Bz`26O>#A-#s)#`C{#L3inR@ft?Gs5@^+hU$Hh93kd zm$X!xl;}$J$&)(AM>#rF;jFr%VZTo7w7ubI4C>TLe~Bs9slmCP^swi4{XsTgi4qUx zDrwP=vD?NLQ<OmbCj8N8`zhJ^CaJ2l2#r=!xQ#qN1Db!TJ<(o8t1gQujyLP>Zg_Z} zZ>Fi%i{vz(Z8*aMCV4V-S#@{#ZygPgmz_xhNQCkT+cnbkgni{3sLX^E7U>!Wowsm4 z0}ePMMzP-aKPVse3BHa<W#bhu&|$}yCVwok;`!M$!CiM&OeqNZHDMuDuM07I;hC^3 z;O>%oxP+0GX0OUSS1yRCY?G>Ap<4)aw?H&wX+)HokCq^`HX<?kKw9s@pA*z{a$ktm z<B<@#m19CylD4QQ`%S9O@W8ShHFhQuxaDE4x>a_&w-sCj!DxVIv~OtwEkZee%{Gg< zvr++!;U>>>llq~GU)EKj;hRb2*6^@WH|HwAuK>Fcz|faDwTqu+aTxoy{^KO<K+Z;R zQK&52ito*WzNXG?Z7qlS0RBkaw~#n;SCt#hvZJbaJ+_cly#&m5%vq)CIMhhF8lh~+ z@gQ=&GziD<9|+o0b1GbK)6YLC)zr2e-OZJrQO9w{@%jaEb3_(lBm}ms7bDa9R#)PT zBx+|hKTjM!;1;Iab!}U7UfrpeP8hDE)7)`Uc^hc8s35G=5+~M52x>mxMZ|EwiI9l? zR9WwB<#_mwhVW!F1weR1I<+Vc3$?ml+u>(<UW{hicc)70p`Suh6|ee9%Z6MwD<|j3 ze~qka`SUgxh;=ZQp<+a(HwyS@(Mxe-9Qr2clI(S#4)trL7B|$87^f1cZ%<S?0xd}O zCyTnDZA+z~9Ca5y=+p&J3lIpcMGU^8i|!wQnA^}^kF|Q;8(3Ocu<zJaUVTY%{Zau! zQ02rp^?L0uAEhuar?i9JpBY`=Ks5u20}MbA3bsaMiAo0}u=LUd6uUtPz~GS|K%}AH zilR}@XQtb*2a-cy&{^Ewyw6HtH^2YUG!kJv(XUbEG-U)mZatK98}+@E+kU-HZ?W~{ zERlt|-JI0a<!j2Iru|0+Obw4ZRX1YRw#fzTYjS%ej*&!B^M<eS<Eoki*#^7cos|Ou z4^HuFTflU*`(G@Q((K4Gso-&aQMwVOD9V|tr*<a}OA|CtybqKe^trI0BS<S1tr{x@ zrYI^p5!=3@r!?0ko?Rjmjf~oc4IDnP6RACX!ep$_`%^g(P$308*l+ctNO?BJ+ecrc zJ*J_n1Og+`6R;(2YMEhaV|oS<atFG2+>eW(YO23l<RWGgT^#CE9}6(~vtv^6or^nv z2W5k5PcslB9Dx8b0SL70Z%_v$*<R!BMW&;d^KhD7v^F`X&=XAR9o%k3LwWQwV_Pci zLyd=G@^}?Q>UzA)WZe=WN4)kB<4Xl_aW!+(XSD3db`0|Ds<wg+&x<ZfYP;khw$wH6 zr>2yxDy3DlqPp|@PQVw82_77-^949w)v9DAWhSNS7?$C0Yt>s9?56sf89<6Dzl#mS z-2ZTb(6U7sC<N~DwT7da(44`Ob`%Xm&Cf3btrQNYodo#~oDcD+tQXEXu=!Hiz+dX! z-}+eqm5hKG{bz57FK<qYVYDTYd|`La`hpB(OC74YF;X0y^l3swl{rz!f&}-xT-$_r zpm)F~Q-tHL%DWmiT@ie@C>G9(!mek}DeDuy6K4wyd|yhX4vH@(_s-cQwkz;<K;A7a zpn2ymECcnHOIxKi%3bQi8Qw4!5<>2@nvbs$W$VBKtg>W=Owrt&Njzz}G)dz2{d$RN z2WP$WcWqNqD)q4-n|VzBXtIuHgK|trJdysqGy4tbmRQ`z0k!pg#<iKvKqw9dD%Sat zeqtSEYo(x|TS~_#WIDNu!$D@6h}P}uNJ5?IF-a>mUjtmcX)?uXn|^8bgO}Kd+R>G< zElFxjr^?|Ao+Jn<>{Do}F7Wrz>uyOS(yf2!Lb;@%@O_2FOLMPs>6>DOk^_vi@rFbU z>I!O1(t3@>VZIcEyUgc<O6_;ccy(8?MQ}=Cqe^Dch&ALm#FO~(33mMF%A<$5Pe~m_ z3HbOraY{Z8>=EWD3Y`JqRVZZOZX9Fhee87BP}seF%ymv<kWfA9_K&sX6cz`2t%=4n zPK}LYTDMvQJDVhF!i79VZ$G|CGz!Kc(15G%#Y;jW<UI<hC{(75X6z9H6)xga@44Cx za>tQ&5fluJTnx<s_GE}Vjz%<_ARQc*kU!+{1A!VsA#_8J)_QnMYSU#yDLNLlMn*P@ z#Rxo(zL8tI^l>MoSg2B1h4y~mm))w8$)80uR75r?XG#S(ymm+L`?keaWv%<wM(y&5 zst3E{Sd9jq8s+Y(MA0H_C0%c%hezOb5PS5|Z3Fz#_xLVz;kie#jRLy~BgHqli3?$C zcs0HV{%La<lK68Oe^NgeY6hc-s)<@UJIAQ$4yGJOStx*1Cv)wcqDKfb{-}%KOzSY! zNTC5~Gf|vxg|d-d#_$dTeA~eXP1{A1#aUfy=+yL=Q$k0B1WfQmqXTXP4T6~>yvtu3 zzkleCRom8iuXpT)4XIPy$JS%M0=FFm1OvbRC=Be>IV}-QLNdDGzQmL#ZM00MXT=|s z@6crv9JL*pJf9W%ldu8o{+tT-VlG-|yJZs0cof`TZ~;tGXr+x{FBr(ep_KxCk|S>) zI4Q}8K30>pG<A_aC(~*${Dj^@cH>!o?Dm^C^z%`iN$KS{^amFT^O3hPXUQ72-z&(q z)e0|+plly_bCG1Xl~xl3Prdg?b1#N1x6(N3KN~Bs6(B!()<?@DmO<)^X_nz!&}tCa zvCuMws|FYhRGXAz2z><eqY88<;pNzN?CgHb@ekAbnY~wB6w#BGT6yT{ef?5SXWo2k z0D{d@K1T7|OAeUo0o5qyI}RolNP^#pHEduQ+22{=c(2_x?A2afZcmS4-;d3XxdVmd zW2>qdJ-obTr<JjbB|B)eQ171xAy9(0zcNU#jQMG#Uxl(8Bb>9FLc_`2|8Vp8_&r#q zKt<+Z2fsK0vG2-&>1^DA+F|+7K(cy7V~p|CF4XkNW9riYI6@*^-_w+hb{V{_v&qfc zXXt$mEN*_rRh#`#NVj$z!rKSm^vp%2_3&knJzRsvv+7WR>}E~$F`-So6&iCb=#<tE zbg>5x5@FlslCVAOQNup$7#a!L{euyP%Rb}P?SIDS5wpOQe`}79z#fydvwQl9YHprs z<FeVJ`Tk~Rf)NWRN`&pcf6UK4f}I>9$jE6=SfHaU(sUQ{gte%hm;g@Hor<yXa3=5t zxG1rx5&3Z$YgUqBVDvGy#K^G3&aJ7cEi@@bOKNe#z7%*}46nK4Z!hVutE*O26iA9z z-5MA>MyQt#4_MRP2#lV+i1Nd>iz`L6{&;QPTK7?pKdf(*&k!am*q@#A4A(!%)?vk? zBDRTON<$2wiw@mNr~fUwe;LeyFy0xA(o+|;e}q>3*N_fp1Iz6e!L#D}{D&m_s~1CZ z;5^iT9l7|!B=`$gCV~fqPLU!ue3AGclRKaq4d9_1V%PoOMmjMB=`UmabEuZwTZlh6 zAO`MBG+=`*aCc*fe0n_zx%B?0LBPH@12YPMWfdy<uh;1BuLHjRI<8GVCtdyJP5S%) zzdp(B4#v$<0h<3O65>~1CclQbR^nfy_}5D?tN=&7pA=~R;_r_JiEDq|BWvdG{(rqB zsQ^cYVpN!ay!{uAD4M@~7<4m^ge3n%K<}@+b0#tb56CS3u=aAbOY7+A=#IOuS#mFr zl0a_EEW?AciirSGi9_+0u1QVb4@V8FzRm}&RTZ<6oqx<uE`31Ex2)mSq08=@Aamk- zXm1~1jUIqbwZI(CPO-3}x%R~?1MyE8SD`e|KZBp1KG_HF`gv#9juXw+C4=@v!%Fr7 z7PDpl*dhrv9{C7D)=Sz*leY}fxVK>}lvrP3NGJd6`yaCWw_b8bZk{X0lqpe9H&FwQ zkqaF~xY8S%W621A@Ft=Trfz?)ly^E=tkp)T(r|)q^?nnQ*8`OeX+XrT&u+5VY^X>j zXBQoh?>oB>kb$*pWdxa#0hlA~VU#)L!f>Dz<PUpiG674j554K$_gDLt-&0@L{XCR& ze<CGt1_;Ag#k`2(sYMEcJ`pTCoEuk99CKeQG6QCnST&C}?13_uVv@650)0?jMQ+@G z9b&)MY`|F@2pt2jSXVC2=`EYJ2w2(_2Vsonv*o_Z`VMnBgRXdcb_(Gwo0ka~-V${* zUR!iVMf%T%M50Uu(EwQaw0DOz>SMBroZcha`j`8-MC=xB1_Y*y`hwth>h@p>waSgf zr#R1`Bug+K%T!=W6-CSEP3al)Z}5{wKM$wIQ8;J2tOjXIEjZ#OwCHFCCZK5VEnd#% zf5>miLq|L0z}T@iMVS4|*Z+GoH}C^yvH44ex2O4s3XX9zN<I*(m#T9?t+$?u2Ly<u z-+7iWA2EV&mq~6#kgt`Po}@VcBqHi<o>%jAzr=u~;IUjOrgg)@c66=H10M>)z|p{p zqjb%0#WbGUcvH1~C21b|c$6@Kmq*RZar&S*M8cR5iK$ZpCGR0ywQ;%LAD9yLpqn*q z$XAG!e!b}$ia)HfDHP(J0_|WEqsUkyQ#UliZr%ThW5fl%Qfq#dzhFI#U+L&&QdPJ3 z@z_+CZhZAFU}ON!w%el>!B4X48&n4TsTLD&uHF}TyALRDpzj#pKy%b|qU+%j6g4!U zY8&dcBV}JL25!rsI9)!ef{-BBX5F)&+{<JT{TQcz3JJ_US>kt|N!PlWZy;ExfR=w! zeb`NJ<?cZ{shm2j@r=s4Tafr1fNAk^cozY_0{3pkMUj%lo%Ps0V?sWvTzvJ`PsPO_ zG9^W838D0}?C)U)76;(R3vq0lDn0l}jT<A)KHZCdd@M1bYA*8~h$Mt4LEeo#qF9;K zy=X|Sn#U!~5~PQTS;<E#gZOaaN3|)XzU+q*WSerBU9UoYB9|y_wSb$k?HCLF4e%K# zhtA1e|Ij6NA-oObSv$7uSqh%}KD6Zg8Ty8Iuw4b*p6Hf07>(IuTH8vA4C=;~D9oP0 zxT)^uJ&)x?#NAwx?i;{lP5n{nDSqc+(B)`Fs>Q=cVmi7n!ceXQ3FS*s6%%lMRC_nq zsYs{A$v`p?Z7B~<(V-Ufv+MPSM4xYCuIIv1sOzWmb97ZHHo@y&FC|`|S$`a)u4;#{ zUqsmoH0{u&v3{v<jJea!NXf_HS=!i8Ie0>ArIP&jJ$NCvR<*uG$x>xXBN<Q6{InsE zl_p)XG9sc^tuxmf8zr11^#n3G9}E_<^}{$vjJ^*I5fj*X#-1GKCb4&*-_fJGSmCAL zR@XM}NyOg3@9II=gnNR3V9!a42&%ANS*{KFj-kO#*N$_G%2=cG<#6V9Vfuc^V`oKE zZc3^-NDi?-0Hf7c=q;pM(2b$LidRVfQIjw{fA0QgT(W=)iNB<)d#^>{@ZPvrd$9~E zM=#DT^-%9yd9?hsY@N8^R-a&rrIE!$#2ESSYQf@BN@1#C)y3U`AAsyk2GKz(G+Sb@ z+uRDh00J<o+=N8kG@w|uM|k(_{exoavDkHZSwfmKb;g{(_rj%Hxxmj77WbfD1>&Me zUm|>*PmIey0i*6gAkQzl2!krWZ^R#yf??xY*%Gk~Zz##x8aEPfvWY4_d~EWH@)>{& zXKb3+?NEX0!UXCC!Yl=L_XhDf+oEcp2nUIK+0`9foC^Du>MiItJpSP2ABi6iS+KcM zfyd^&z!pPS$9^A}3wAW%b=%O74Fv}=v!>&+Yla}5jajsCV?>i#%<2ZDYruJ!Y0;$f zNp&OY^nZz)iN_R>ovHO&wm;gaQyqzUERY_+#_`QS8Dl#(pk3Cd^eGnpp3VIkdH~L} zu2v}gs*Q71@r%ao2%1_~#OX@Uis~1xBpM7)b%8I!f2!Y~WkHPl?T$-=9At?y$3hHx z*Oo<`s$Y%ZF0Ps~h%$YcEXCZ_=v`9D6sVFTYboA5tfuqu`>KJPP%*}i*!cL5Vq&}r z$9layxAe!O>Lbnjh&6e!)55>(BROcWrjlK3v$k6R^~%KxJ>cK11=2)S?hh5<I9(QX z3dLSQCP%0HsMi6j0tZu$I-~&_ln9!H*k33>$d8<@G91_hda56b{dA8_OO_^pYm_I+ z6aWSW`D60cN2Odrz=^2uc3C<LhMAe;?0$9?xwREB`BFNW#vT8|7m65<B!dGpdF~-Q zhZJ4^IOx%6ifRyCskJ4fL!D5|CEvm4fL_xjN}UZln|085&~gZRoh!kXZ9_lzyXM+h ze`=9sY_Q+@Q7#6k%#*9Bx|e(P7*TxeT9*tlrSwjAIbCSf04H1^kM@1&P>9Rwg9KxF z!{|j13@7)BqF|#I@h0p{hiWW4h@FXo!KP<$>hl-<z=?QD2ZbP;@>7(nNHnK|P=-u0 zOHy&qhq!q?c(5|awSKKz54nz^4kZp!sC@_H)!Amgi@6y$e2pH>`r8f`R5Pg~jPgR( zH*=7ZnM;BLmF;G34L!QsH0o^in1cE!Yt3$i5cbj|j8d`<EQBh7>!UW3Bl*!*^VNuL zJi{M7df?)?TTazNywn&^#oIz_iv5O~A;!C0i;5ac=k|mxt=C^6dnTPOyMHDG%I1X2 z*HG;HZ8J)x8MdgbO}u~cWvh15=`(q5G^=RsTPOmJ*PEUjII}=)JNlQ(OM@mLAvDy( zI1h0`ibOUwm|;On(c5%<wGI1Ipg{?Dre4ym{2I<4!}^|zNDqyzfJl#BiuWCC!fP!a zE}WI%!&2xdCfI`^djLM}S`jf7cmen%rN>tXTCW)QStVE4psZZ35Mei!srN=2W(cwZ zZbbLf!S~#e@R@FoPvtR62}~$q-7>|)M8{X*n{I0<)y>`PbWYsnm3{iu49l7=tqzNe zR7@RaT*#)0f*?GdAnxHmsO(si0>s{<<~f~?P&Raf(9y+Xwa?38AJ;JtT?&+iB|<y! zrmguDJE;p#;Uv^y>SMu9UE2Bx-3Japo;m<PY=RrLJtiI`wF3UvqN7)Y=&Ar(?TiTS zWTrkx#8S^<@)|$gTRD0b5cSpzr;VwuH(x_V(ay(ku1R3;h@{bkEHVDLX%kR+>%WK8 zxFxCgY3oq!QsKKuKdf<iaE;=X7PD&IW3*p^QO##Q^WFC}y%%3oEE)mL#s>>t#(f6C zP*=-Fl3~FFalQA0yDHMY{?~=r%YpTqhJii*r;;G_sT587Vn}TzVol9if^YPddc)J$ z@0O-8h~FAg8}@f2q&;c1FdHiH*$!(L(2=}~N0STMAl6&KJiRe&2*@{pgtiXI>r`_w zIv;<~<86aF5kl!`6w<tSs+_Blq+|ae?hRiqQM}mmEqd_oV-?spKf)`ic>uU13;sO? zE%9QvLIjlK@`GOy7ABP@6P0hiilIgcPl*F^#(cgft{Vfk;{b>h=?cOwEF&Fy@!CZv zRpdTdLIb~MPuj!k`vT5hp9;LJA(cxL7e#nTfq><D?Itw5L+Rd#f@HUBrBgM#X?ih` zf$O~m!G(9TttNkFdD(~qp%`N33pTJZrqXDqW*lOiB>WtUZRjbxF4n2C9DYHtq=_Bq z|53~OKJ*6I%oC%LdCr|*&Gi`IszBa>{(N|dYii;k;B^VGQl-wr{5)wd1A<qLUY7Ae z6dpMs1Oy9Db~yk{IVf3C>`4q#E%)46mEK+NJ<-e*l5k{HQjw4Ert08%Hkq<uIUHD@ z3?|2{W8-ZNi#CGWdlns#?gi%1dkZ2AS~rf-H`C(%%@#HYF&yh+K9z6!?N<n^14YMI zJY<gIeE!gML`=anWU;>!(uZ%<S2SMAj^dx%FMIg^$H=wYIX)hXA4cNA>T{>F7^A?# z5jL7OSXD`dv5v2xCTXS~&p<A--7=L0V9!)%`vyZJkvGN_^JTjs^8}+xkM$21mX&9r z_o1svhjjzP)kyz3rk#niA#b&<$|}62heFtRe`0t@#3VSrN`g%lzHWS52N75N24p0q zY-wwUMqqA#s{qN|u7ZlgUE#8_B1gNgpe;B@bGRv8p;kno_tw-qwR1^LyC9rOsa#_I zp#IQV3vs>^VYUYwM*($5wwgdMLMi}FsCRvL#^>E>OY$nYmm2_CaofoF*mSp6H+i)& z`6HI7t*Pi#0mvO&PV5$!Ap`;nfg<qh=c_j8MEA}~&Zykh;SAeN4?Wg@AN+dyMAeOp z!%v85_0Rjj-_oF9pUB~(V2J%e!2bKQDGvNc6a&Xj^3Q+%{skbQgK;5Ze>8}4o(KFF zBOa3WpWgo>L7-d7AH;ZAi0pT3zuNez=nwLJC{IZC&u$E;H}|~^N=s?zI0{jJbMRLi z=Su!SEjTMy>_6Kuc`M*Q93B&e`k!w8;<@`5^~oz^A%D{j^o9$IV!*O(Z2T`u0iwPa zymR`KBLOimh?Gx1mvH{<yB&kL+r4C5=TAaoKl|sM1uS3R-hQGm{8zIA-H4##pk_0{ z%ywe~IDdZQ?_bd!efO=&XWTtN`YQq~;lIef1B1ZXAR>hm`FrL7ri6iUlQ<9mla)?v z;_ja>D2l{?4g?PHv2dXHzu4>W&ufdl_hqC)0hl@eD8TvV^DDu7h74W9gM)($N!1s+ zy!?C-8d@Qi>`F1AoNWHce44)+*Z>C0+f9NB1{C5_RUjleh=`D)nUlw#W;0`-rzEU{ zB<dy@C(O=S7@#yl*I)W;#50Hgvp5LoBE(!O_C#y`M9EkJ0sMdHlY@X^l1tbR0$AWg zQAm!e$*1(!^|Z73H9Z)>S}DYd;ePxC0;Y+&c`W@<zEog8lmrZ#Kn*}d#7THv*B>Le zQv(7@5ra%vK=#ifRImYN%;^30G2<WO;Xwzii|;|=2Y-Bwkq&gW6wUb<`Ojzy5W=Gv zT>jit<o@I10SW<s>PE7O7t+ld0lEdUFl0(U$sFCb<lXxmD8@Sub*B>Tx8ixzI<i%h zt3a_6@#r@WyOCn^FHd`$f?N*U!6$qzT>2Z5bB~hGr#~EP%6ck!lN(q#0Ddz863(Nk zy@LJiA#$fvj#pd+ZjbMYb12$wgXJ`Rx5Myi+ao)1I?KwWe=uqgXT5)Ysz21cJG9mU z;rp`CXqBfyM{&o0o{eD3r>r$78>?s@ldM{nCFj-d^LRIUkF7(6PT?zt^|D!+@35B1 zXbDy!*pW5&DD{lAXZ05y>Mkt6IAIh5bTGxxdW8r~K=y7GA1~F&udKGAS=Cs}?<ee1 z`WBOnw(Uo5#WXaHy4iQ>E>!BKyYh1QJgO~sJU-Vq`8m#8-46ssnjXZ3nXL1_k}T?a zMPU_dnF57FEu-$g*6yO6M2|Gm+mFNzbjjfLo!rM!{A?ENsG56}erEVLDSr<MKnnN! zzFONyzJudWZ|95_GpDFW<)0LUlia4U`^rYk?AkBHxSaQ6*O<)ZwAe$)P;DPy3mYnG zrq8mx1S`Aj8pm3_LqG9ZC(v2xW_Mi=J|K!EClCTKW@`P1ZETaNY{8_}7T&Dgw?rJJ zcj{-4bl#<Qnm*%|P;Iy6Sbdu?#0qS{Qp)9;JEj8r2IK7fCE;ZCPWtUy22+l%mrxNM z|AjE3<~Pv|1bt0SYF6{HSW30Zgu=qYgrk+4Z+59Zw)W?iy3WZuzPt06r){g(4tn=T z8@sudvjq<OFsYZz@Fv53qi@k__|R((KVmwbtw(NOl}WeHDe37E+Ot+2FSSTlX8Lq| zdc!L>n8B*}V?rCJEBNGn(>jTLXM?7mcZqD3`EuUqc>3W{$wV@nKm_8UPvJNFL$~+p zk-CVkCoQG%9;gD@AAk)P;zYNM4(#P_4lr_Zauy(qeo0l8d|Ba-LPM6vw6bg4s(FS- zD_th}wDk1d8;*q|(C<gHjGq@5D-zS~Qph5c=@JLJJeM3Z2M1>h0BQWPGO|%Vvsfhe ztkpiQp-6O@<vLuTq^wNFSal!&blgcaT2|G;usGSG`AR2ylyPO+AHK!nF(cBE8CfLD z{w|8YkVW5{Ozp2DK?w~ee=dFE*B<8wo1fohF_Vcup5rsI;e$6`{5JWavhz3$PiH*` z?Ee&Z?vGHVe;h|&q=-oFno3c*tW~UxOs-Ag%ed5#jE0?*OGWEeITXGjV^X78O_RuF zFtTpDZjEe1?rIE?@MVf2LkyW1`^>K0roUj%uje`Ed_M2z^Lak6&kyH$v>nNf%i!<= zzIIx0AOY!h&ZUhrd}Oy$R~D>#C^|*3@}7WeC6;)zd)Np31$Er1;Gfo_3WIOI4ddd+ z=bE(%d45fIYAQ>j&}loY442kcj;Ohu)WzLae=;06oyP6BM;;)NjImz1v?@<2GgHPC zQvG*k_wdy`T41S^O~B>F2|pBC?RZS8qgjP8hhH!EYlD?^L{|3MhK;b18i?P<>^JTh z@TJDfU<WI8!&^ToSuxYuKKc`*OLc2T<|n@Br$mts&cQ7sH7!^nA<m~_1qoIh9Exb* zqd)v>c=YoNjEwr2C8SLg%(6~3SgF&}!FMQj1nL=|=y`cHP3o|nE>FO@MqwM)_4i`> zt|t$T?h(!^SOyu!%350yFy%NGJ(z((2g=)<@RTGHrZ3{P1nnlB3d(2O+w#nYUm1O& z78M;bYwkN~wVL|&^3+E@DU)Pkm{Psu6BrWmDpVb_#hM%Rh8m$^8h&ngrmBnFiL-!i zsDQ<z{uz^dnYO)FeR?3wLw6o*L^mokJ_G(iDEG%JARgfnFqi!~m2KW>+8>WazMxrV zyAdg$vlI2XXFHR)6BFG=ji_oj&o+l0*K|1L#&U9UY3DT}2N3nciMKWOu#__9#u%;D zw4e86cGRJWrKk2~o`!pziDHL-`k*pcVL|r6nZL*4*SuyLJ|ta!QA`?;Ub1;r_1-A@ z+193{w$F28idCfOo|9}^%=rawL|}c`!=NEP4PNotj|7jpvweG~^TdTEoqNmEjET}~ z<1LNfU&K`2B@!3<4qYf61gbu)v{nV>J{k2WHz&tLaHWAWn9z&oOO0Oqp?FB5(v1}y z=|KD0xJ2(#e;^PaNFK|zynlQto?9C}i9++3Zpbgc`K|JEO?zhxM{Vv5c&iK<9H2y^ zteQU6;yl3?uNiFlu4j*u6tAQN@Zw^4Lx$i`QKy>nenO7JlYr^pkXUMB>D6WHsKv>5 z@(WoOb-cwNNoKLxLDz99?~0F1$FBW1c9%_}EQ=Bw#!%+(36eiY$(XFoHSrxbj!YAl z(OP<WSLMqO`44h@63-Np1GXU1Xp#W$%h^FsP52ui{PjRhl<nS6FWA}}(ONL5U9@(K zl)1P#<^>h9)|!6|iNN}-Za4!|xQj{Oto(M?Usf1ug;0iA6Q$kx&}5RZY^E!T&j+V> zNHSTh`;?j*nt+X$6rvKHB60P9!<6O(>NnVD4e%w-T1lk1Zv5;9sH<zt+C!u?!!SD$ zP#GdyMwGf%_939T50|n5leE}~&l_mZKV5l1O!aYICTW6kEeFIU9M5POCfkXLTWxmt zyt#7vVd;gY&c39i{|jyK6++CFAM~UE#Go+<A1BX-3>|Rx8k5%9pl7kpzz;SmU>@l8 zNQ3uXgeh#23^<0ZclRJF`D;cNjyx{DOZo+S^e?EqCFbitX?yDkuo|)v=c&xS)^HB% z&k9-hBAqIR!=RLNtVCTMcZ9?;OrrPNix6F$yQH%kCcY6mXv)k#ymwU;0mb6L2Dgh7 zTo#`wZvW-<lLo(t2*>m1sXB_c^Wf$hA~X*0$60b0p@8Xra?;#3LG>Q8n0Qlc9y#Eu zu^>1o7n1H28me>%wvJ%yHjY#wbQB3rS=BF}X3NcKJ|?4j@|SgT7COCN_4K^K8a~R; zcQ{*ifBUIjid&MN00e1mZ5^jeC$S@&WtL~V{lX$x-&$KC$qc}9+S|Gtd5Tjr#N^~n z9~b#MWu$JPyu7H=>hmL2)vlgokBhF98|G1;a%BtlWpa{H=BpL^4MqyuGty()vA+o8 z_p4(IyImejZsWP_k3+aTCOo~HnK`9qTlvNS=t0h#)Y5}-Qd7N-pJ>xjmz%)h+_QQ@ z%)a|5@;sOvGBig}-W^e(q}zx&w%J77GG(DYyj@jyA6-=|#tpy8=;&&N6B>=EsdPJR zAGwpRdK13uD@{TOs)Rk{is!T%@p7J@K%)cUbk#S%!+%0Su14xwy=WEQs2bMgc?v1* z3JCjuCbq>E!Im9!AR~;gr<xX(8Ei=96quq?)NM<OZ2kYEx+*CU0`ONy{q-<g4lrs6 zcEyQRa^F$Q%d+QM0<fMpE52z)_Da~lbHU#4D`CI`ph*kJSoJ6)`HrdRhmYCOTT}{z zUWY<u>iXnc#f)q@(Iip;_XSdIg{juQqE8{{8$gpJ-QpN0YSj$LhPRjew~3CNMSye_ z|K9DZ=|E!(&}~F$s{NVye@g&Y08J9qzD>kQ*hm^ER9X)9f925nNO`~~+AtGIQ8|9y kjessS6I?|U{dY|i$j@#zRyodRC5nLyY3FQ9v&O{#0pV%Ll>h($ literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-open-action.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-open-action.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc4f9727492ef8bcd7a68512961cbb2616b3b68 GIT binary patch literal 114861 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%0DRc|$2!ebKd}Xj_X1owFgeQ;E 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-original-flow.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-original-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..2456b8bbe256fd54594a42a0e2b4ba609d1cecd6 GIT binary patch literal 63765 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%0D->&yY&; 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 Sa^=qeFXj7ciiPqf!T$l>Ena>A literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-process-engine.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-process-engine.png new file mode 100644 index 0000000000000000000000000000000000000000..979d5c3a706eea3c803dd2a11fcaf3e13fbdc452 GIT binary patch literal 36154 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-remove-example-variables-from-action.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-remove-example-variables-from-action.png new file mode 100644 index 0000000000000000000000000000000000000000..09d558eb39aeb3fb8e9b1b8f8d38b284eb9ca68f GIT binary patch literal 222812 zcmd43by!@>vObKv1=nC9B-r5Y8r<C(+}$;JaDux8cXx+@;1b*+!QGv2vd=yD?0xS3 zo%8Pp&pfkcbyas)SFP&q>bF+7f}8{@5+M=<1O%$&Cs8E`2-qkH2xtKWIPjg!?PnMW z2uLjp5fKGR5fL&4M>|ssYZC~F4{<iJZPI-T*r2W-pK|&4Ca1_Fatipva2)Dz-zdJT z{}MwlJEN9XpZqRwyplq0d}~9WOr`oWXA3gF1bk*If@XcclQvt0=Z3xS?e_Lc3^a^r zB9jP=K@u@78xMU&WrcK)dKf|u{2Ni#F;he_O)}(8Gq08=jJtM%t+rmkr7|A8>A5%4 zmG#NtY}ZR8l8K9U{=E>%Y|1Z)UWl67UyS3+{cj?K-<&#(bKHkH6@D*5olv5Y^p+)_ zL$XY|%i>J3n7X95CQM&ahs)~J2GAE-+$i0WqY_}H^l-jsl4`nNC$e+@`XSH|9+y2< z0ut@ryHAFUIam|9FsOZDZ$|26#WU9LZjZfX1@dRxu4V(PaI6HcQ?_QkEBu1i<hxa) zOOhU(6nk)vS5j7fRw7M$?0MMH3ff~7uY0U{4O|{j3l37+@B2c%(gS@?-7qk~gKcD@ zA!#Zr3qb?EMu32V#DstbUqOQZAwn%6z<T(71@RvI0qZ9|1OguXjS2oJ<Uswi6gDac z`k&X(0>24`ltm;Z!QaY2M-vlUCv!VzjC5l;2nZ;C3l$A#4Otm(pq&kap|PEj34^<h z{cjcsUUzQrrHzTRA(^|4wXGAkJ0Ha#6x`tJ-?sr2WPgx2Tk%n7$SRPD*g2Yzu`@6- zFjDX%k&%({IvSgDD~XE#4?Fl5ABDNIvpqKe;O6GW;KssW=V%6C;^N{0Ffs#}nd!k4 z^iCeO&W7&vwoa7)sN|pZh?+P79WCsgE$nQ`e%EVgWar|{M?vwsq5u8+M?X#6E&kP# zt<(RA1r`wSy9B_*zzFy|HfIad{|DRel7F!MA=f{e<NaM3w}OSciM6Jvg$;OA!Cm9$ zWMSg{qnZCx@~@8mgHzSX#8Je~2F&Qp|1Y)t5A&Z3|DExVCN=)mBoiz1U)uar(Vtj< z%fKz~XaR1{@b@6{gL(eXz5k)-1^gc2KaKc5)cMC<us->bcme-w8~jLwJ-lFR6oilz z6;g4BJj#U4z*5H>07Q&zot!9?H;cq=-Q*7Be)=ev8w>?2g-kCOARI7_>*khhG_bmA zSTm4(nw9LcD9Qf){i3nvhMw<YWV^@dnBRLt$DMJHH*1cuK^PcN!h#40kmO`ALH>XH z<NXFD_Wz^kPfX@e6ogio7YzTeTK-8IZ$Y>F_wD?X0^A*#H?cC?WVp;!|GBoiJ;X5c zr>SfxsQ)YhIfkg9=>Na#BU76ECWH7NwD8C1P$TlX-^E5}aEh4$bn?nLY$u=LeSf|_ zwOCSk)|)4g>FG$N(tR|MNltP!84*6;>OVKWw4KG-qz~2B9v1(5J$J*4Y?O2f*sOI1 z-jHyLQcq+QSkYPY`aT6g@iQ)VQwzgfTt|t0jHk*kPi0mLXwO#I-x~N}8i{Y{Ntex! zoKw-3J@t}5v40hu?EE}u<@v<A5x7l)t1!zHwJ-Aht7zWnexAZh##FI!?jAPFLz_o8 zKbb#*QMx<~1^+7lUAMX@L|1hg|0x_-$;8ZCznR^AUcW5c%iVoMQUtVh4R70bJ5H27 z8!d{A;whO#67rda^gM1e-|Kci$VVR~P>FC$B~oxvMUuuCiN;hu?7kimtaiNmSL(FM z6^-lX1P(?k&!Oy>s7&=Hut=M#?&v<fnYz<eNM;ZIJ1Y#rf-=+imcnHRNv~J)MJoA& zcrfzMq9ZyL!G*Bn!x4%}9`FeCQ~Tp|NW_rR2JCPmbHAP}%cnOT=cK99DCc{+d{BOH z*0WqxIc|{#Sj^Q9)?4>s(G2vO_Q>ZcH=-zh5St#tP9La1M`=>mJQyaQ<~IsBTN+b$ z-dd4fa@r%XF%;_5YSH*nodz)Zge8V|y~Ok254`Oc@PEsXwm~=DbagSS?fJaZH!&ND z%>*SDP8?t)8X@T5?ejqmg>;&?9geqptM17ot>ftpz4mL69d<vXUzXDQsQ&Dtuu|;t zsIm|z;GwNwsTw~nTQOlev*-Rwv+p50y;e)wNj1Jsr@JDJS~bMFp#2FN)P<MZ(W=B@ z)A2V^I)?d&cFc7Q$s?PDo&&roPJB#FvcG#eH@3+bjh;lcs;#-$?0)zk%od9~^z~3q zoqld772xK#`_7!k@5DY^qL$d|V!fMa8<}<Ek6Yy<qyHmXq=EK9X=Q;liR=`|+*a-2 z_JcoerH70kz4s?J+B>CP-1C+4@8_mNwPGu+w`nK$u-@1dH5M_)ufbs%WR>Vtk_L_g zE=sfw`nj2G`9<ry6Ej#3c}Z5;)R!$a2)p8R2P?dtnYb(3?bqvkSGS)BRGKVJN)<|j zyb@t-8(c@&)4IHI*h-YYO5rl#m$vGxYKQ{W!zDfb<d^>CCQrE_jq&_mw<i*~fN%#( zoyQWixZ0%RVS|*^PjW@~iWj7v&mf@Y;1I)G&Yia=QbeiTY!LvX8a8*pxCj~X<E{_4 z(>c!dD|diIUG%!WD-)eqWlh7-V65WNf#GNOjL-BU-izGt^59Qn$lC5gncO~NX~#KR z9=z;IW)iWS(0Zl3=u=;PnmgZ`wOZ8Mf@vt$PoDlJvq{68{tKYnAwIJ+YUUMTtx~51 zn{Lux!zd%RtqadE6IR0W!`FaN@tvI|O+0mC+R0pLvuCov-+KmsHw0o%?;!5meQ6Ty zrf&}omhMGyx9xLW5lNGGAC)bxCVLV%+$t50$9lE_#e*?TCA!<qDowR^#Ru_GtJI8s zv%s{w7}Dnp8>8W`e5H>#u(shSz`LEbYcH&WR{kp_Oi)xYZ!lk+gZJ5;(*aY0fPB=J z$I<1t@u*bvy<~n)j=UBhPBQ##ezySb#=G9_xBF)qqyoo);nA!iLn`9XaP#s3BYJF} zy!8q(Cd~7NH{_bse`k~3d{9G-wzDP3*ZU7_sto$$9a8-96>1ghf+7;pxdNbQN1knb z0+7D1TZCt0lst|!=;_l?@cODw-StP**JplN!uWS81cMlnfI0~VW>u;TN(kDdA4kh1 zgqvWt<A=4M6UtDf8ohPdMQqFVwk!GJfnQq_9Z;mdMDe&PPTbh=GT>YFVnm0^r^uK@ z;2>g^Ayq|yuDQo3%=(Q`1-l~L%O!`}Fc2v0GbI4g<M~#g2qF&i+;rs_kBv}xU*81o z#E&!UW0t&~snoYq+nHW5G$>Vrw|v4Mba9~mS9jg;k~xNlu9n>#-x*y`&M3C=p<%|; zn5SA$%ca<keFIA`{k7u_tzmaa#wp62Kcc6xZ_gXsUPC2ebDVw(so^<`b;w{<eAiS# z)4AuHX_;_)y|nw?*_IdVep{s5LWNG@o|wOM9<EFQldx~NA<Djx=MT>KztwH$=gd+U z1G>Qi{Zly_b89QB;Xm@y3%K7g8XAj`NMcdv8h?*J(7b%?3ysnE=4Fs2pU6xl7HLlS zeX2c{`edz5LOzREF(OYiT=@If#TSY;&tt+4-)F7F2m(qtDyf7a4OAgkZohL1-B#!D zJn^W~{+@b^=?_y=c{x$3%T0D)U+c^)Q6IuOxsecj0Q#LOV$Rv??H(fPm3j>ebdEoV z5-3`>(bp@qoAwqjcX5}gfN+YbVxJ7lWUaB-q*SCbIOAm3$Y%-k=G<NjIb<K5LY6{F zAN=Hxmm3}0tekcMIdZyfQ)TK^#af9I`x63%&AQ3d99KX2J!|#Hf4H2ic)YE+t!XhY zPht9~42s;jug*ZI8swlO_@w>6y7@iV^dK5cwuL_NI2fE}^{5YHw!u8SvSw`EJ+$(2 zzJ=@Xy84NFeV8z5yIQ-oih<91!!QtyGxe+Ioa~v`8&fd3vdfc$<P}0o_A4**K=`k1 zM-UU3ssHHF=hy1QOpXI5hqn$PF?!>h)afGB>m0Z7w|Xeip+(}{jpheO?`;!VP=R}M zh0z>HQ3jE8Kz9<-j<e7D@5yV07SHw{p?jLGgQaj8r4m2LMeK|<XoRH7YO^bkGzw8x zS88@f^3%r(XtaRF(q`6t9%nDir}CzPXQ%@a3nw%t$Ml<vF`pHxl|#{3&mKE1)4gs_ zXTlWoEe@^(_Qi5y%hb+D5vp+bY2~jEXY(g$RewYTcF5oPFh{-RSZjZp?BsI|1|qE7 zBjYeN&2IQz?=>;y@AKbMk^(ryzkQ0^yQ-mdh1c}o)6TQ@pvoX>(rz;%z!@UVNUT9A zv}q_A$+1B=E09k7W}DfC=0?!intii|N3WNs7BCeLUIbAQ0<>#-y-&(@Izsf?-E(c} z7OZ&6le`>B`${Lwcc~&yaY|KGQ<qy;HEN8e_VYs#vp1`w&pf^R(gN%M;!Q9_A)xv` zn~YctWcYo?9Zpb&VN@_ke26O1`t?O_S*1J4=zM9g-aLLAhOUSkLp(UE%e{=*d`f57 zI1V8&WicW`T{h36_wLO{HIx|yvzH0z5ApIaUoZz=TtN>y78A{x)P+p=h82J+rP*30 z-Nusc95>7pEQl`78eusk)<y{JF9TNDlX>B5ue^o^9a_hgN{P%h8MP&xo(HU}hR?|S zpz;2lv2=@#?tsz{h0@6kvISC!N|(@ZDE5U&RC1>)x1_np8Jf&I4N*M7yqvCv3YU~G z3nxibu$GKVN>}NgF+0|t<$84-a3*K44Ob^cI{+Q*a;#<7qj$z5S`syRV)VGrZDvga zyryK`Z#mtE+Ml@0R!)}fFk{D%J&axhpiQUHN2IYiW>MpsZ(a|uMD?wD@PAcXFMdg^ zH&8tD1$IPhvC+YcXw+CX=;0jstcFD4+RT<J@@WusK%`C`F5nI89W6A_rWjaPm6wf7 z-Tb0eHwUf1P8Nwp%+&s()v4IZOsY~^bav_;91Ja0FTpJBR4LVnQ$Ww7SQiz1@9B;p ze*)AvnE=VA)58Gkqb4p68m#!%P&1miE_Rfw9??H%=`gZm>%~;n#4ywUd8WW<gfSi0 z791mDt4{C6T3Wk1|JqQ8OXqsW?XqKSp6)@tJQ#%~Q3EYv1_ZC^uEdTxVMx{O270h2 zEKa^i?96|WmEY?EPVCPf=1}MAT0Gt@;;EdLSsl1MR&MvKI=9HSJ*i^hX^1kc|3vbc zyFxOn<JrADl=7-P3S}{I(6RTn&&Y^^SgX*!)tfowI5~G|Bni8=+~90<_!Lh@Vb=0^ zcIsx<g!cNY8=bgkW-$f4y7N&SY0IWw#dEQ>*EXL?U8r^9NJRhfQ<z4-P==rv*@#IG zp<P52G@?0$znm*ue>`?3Rd^m|!6SUc!W`~mJ^{=(h;-qa5o0nV6yX&QDvI2O;P1m@ z&?|ok7C_t@q&B`!O9JHH=r^)e^@-*MA%3(<qI16Z@v-4)ebq}Pq`GEu-0zi5TW;@{ zc9Tt!kr*9|YfS~3@g(j?l}}?7eRo4sK+nWsItHC)j1E+HX|wUn0wNCEQkM!XR*vKv zwm2Sjx#3uTlFaS4sW2Q`b;UOJ3LBgPu*%bt`>dLrzsK)*Xk!goSEv^?R;bqh=o4mm z_!`@?-r+Sb{3DRQZ+^8+d9B^!gUJ_c_D9S$+-MTE_*T~wna&y`xH<}lhN>u{A4O6) z{Q2;7+@_<kJ+osSYHME~_ZsAuirrs&gLeuZydaQw=rumEl`VIL8?6lmhZC@vr3nlU zaW~;?Uf(Spl+j`RYj*X=IOB&z$%4^elO6e7sm-@~km=>NU!({mR$I<jh98dqnBT`- zS^i`-&f7Y%UGMxd?Q_U)wp^y3PncMumR^ls9qNoNpA9=%iz;tEmR&-OgM8f@#q+Fr zg~DLn!{REq8<ZemhR=U(KB*XWlbO3F2~bmL%LAxdy9T#5evx3x4=o=SZtmFK{XD%d zzU~8jP|#|$tHup?pxo%cPqvOa5HHxY$Fi3>_%;&sz*_@<ohA_IENXWe4_@HQ=xT%9 z+--kv9_6z5BuLUY5No90WZ*+8L=295hkU`I6Ld<dB)cMiyS{KC?ykcso>Y_Xudz~5 z@ZGmp1Fg44@e`<3h#pI+tHiCZ!alNmA)P~(V89)wLwOL5)nL+~L3>EB5jUzP&-mQP zbjp2V&1V>S(S6H$^{tNmdaDo5^}fkISA*B7-YnY7&-<TPU%tPTgdJ!6DyMWkT5vX) z=)w&wd>$kiCgQNm%?n08G;&=hcYPkFVBK2h^GYB?6B@-I(h)DLiKfX`e}9LoErG3v z8?OK2T~li~^FA@v`dAUA#)m6n24Us<^){A3{khn-IBSl+KGjcBBicA}0dz{^V2TZ< zsB&4KjM&-ZT{BA-z4qpvBW-Vu9#p*<jD8!FUwM_vMe?-b-@j7lTWi)~-YnwFXY-q6 zTYOb#OB$5N5YQl?^Sj!6<HUR~3FKGI3mP80LqlF?a>r=rIBJc7JhDa&3H^n)IQRgU zo!lHNq`v{Q@sXKaR|n`TmZ#Jpyv&AUQHv|H_oe#G5arR8D`T{-r+~&1z^fvKALfc5 zoeE_V7=@td&~T$~rrf=^KvBR(A3?9s7-Fiku@t7jT16(`!g8V>F68V}>0|(Hl4Sh5 zLSsofz9CA9@N!!yO*<>Ax5t%QSP6<NWfE==JIkjkQ>a87C71ZSPM;uMizYI1m)%Yj zFmKl7(%Eeo<<8L7+fB+^N_li{#;m^D6H{4Ye<1~AY3&Z52eW;*7{3$5<+rsq`JR!w z)gNwS+sC<C0yHRBF8s^Jxn16X<#n7+H!o$rHnIl(&S$#TL8O6Y;-1iH$NQ_GZd%>u z^rao9=y<v2k2dO;6~7IM{P%J@RvXQR6olJpZ&7+`k*GH~zks6%iY3BR9cd=k)}$|G zuVt9&m22K&Z7*JhbnhQf+C(D!<b{~>g6TpC52t73_Ox4zJ>`>Wm@8g+5~XjjK}ZzM z^Rhr326@VS>_NoAGDnNAg<Hk()Gv^F6U=gntnrwUhN}**Q$$8h=r1;>A`{tN&jv6+ zM)5`_cS|cQiIt|4^P>1*qoBoIM4z6P0QM=@UrIGcuBSuc$_dmGt~X|`*58e21Dl=q z$+VGd)N_f1*)QJDjT6Hzi7xMneD8%N!Ey1*+!X`DYl7xd`$2lz$RJN$ciiZxIqU+d zgdD=z(loJc=uosbaG>E>@{To}YrS?2ribU45=%nirA4P*I=GRgR-1G!_&9*-Ft+nc zuNW>JI*pJFavz2|Ip^UAMY^Gzt=@tNPbR~bhUyf6onG%qs{dFJZdBY<v*$6lFkC)U zqxGug+j{g7EA2%s{E;MDWi3tMM$NMgT~IPWd#+gvaR!6&O(Kn24!Awda`Z8ja{P;( z?;?Dy&P)-Y;?uiutQ|`{dR-}!u9Li-N1x@;R^L_0Mej&LmLxJ$ij6^Q?5Mc&)rxtJ z9U{n5jMsn<NKAw-d;an+#}BAibf^TJ-E<o1co(7-uWSYp@qw0a`d9K_Q=_lV63adq zqSMAw@j8LBOHp3@wYvfYCbtSk=&Yry(eOAhF1=h%O>YWbP99%aoyLjF-@Bjc@q1~> z61_Ip+IjK-J1)(}zFlQhtks*)a(f;%Gvsy35OG)w2Et!auPiWz<omF`&1T5#%*$GB zReF@mv=}H=rF(%hS;1vci3LU8v1!1u)s7f0Glz7v9xrn5b#@C7@h^?TFz+@fpw%>p z%>c|-?67{2#h!8N4R<=orn5F`<Jj`MoX%<^f<VHYW)4nfqeJ?MXECSgozQSvM^@*| zzedw@jxGiYk)5_3s@=S+bi3qMJ$>_Sw>Egh;K%K}Z~X2pJ`7Y3=O7$2P1=Arcz+7D z3NBzSxNTtIG%{sHQ+vh5VnuQ{S>=}osRrXl2>|q?X_9DxQ`neJrt})3(rT5t(gEL* z3%=kMM%!p9U3D`Fovd_7IC<zKcdXp9JS}r0Q-^uS)55EksRU3wh<+mtc`nVG?r?jB zoPEd(F72W=gT$l1D-qMq%77H9Mv-J)^Sk20d3x7Mo$jikPP`s=WzyGNI(kqcU$P#? zbL9^^Scj*tcv7xdGI7S^d~zXOszC9+;U&9dWfk78xbL=*I*zGYqmnKuDOe*0vPUk% zr{pP$hb?N?K07+wLkJp_;>!_36dQy|9ri7#r-k<IOlRN3{^a-Fgm;GT9)cc~TkTP3 z5(eWZe7ZPT-B<XyLDzyXReJom4W)SVzj~&LKiAe^f*)hrcT@NRsTmEc)l-qm5eCw4 zxZ)+f+rQtS?%bTfKCg+14Sf+8cPz($b9cGb*Y!pg>L`lGE`bekj!ND-{&8I2!=#aR zGdm@L$pw4hihVxZ31%ez+@Xiv{BfYHDMR*Iyd&el`2&*StGzO`k3F{Gv&Xa#Q#KKr z=yn|*gJKfO{?&W-b#i>|h~DSN+oI_L>2!J;G7OOqbC4rQ?Ft~poa31zj1BrJ&LENP zVynukLvT3dkmwv2Bic|k7g`PHbZHykD0T`9ud~`hsi^R1v3B2f+MB4eXW$F&Cb}qw zYyKFF=uhCFEQM*v)xIhm6HVYkgVn9AQ^%lu#?Q!Evh_?%I?+SHkTNuPT1x1d)$UF* zT9rYhK-6G8I6q?&45<hr80!w=(+v~saPoRh_<lB$>_lYDzAI+=cD$#0f3dk^k@15D zoNC0>n_ZO8cZIM(Vvc+Sbi-=PilrVH;E&MqpF#p?1-X48>1BZL(C-K<7;zaiE%l11 zW1mZ5fplg1O$<H0{fcBxH-1s+A827RXy*bVk6|NlX&n|kGdn!gZ^zX5fPRlrG~Rl% z!i?fvI%F?=PPo@cmlYLb8Cs3b_l~Cep~o^w+F`{D_}L||Y?elwby2?r&d$5PLTE9D zq*!JiM?1cu6jzy}OL2W4$q_Srp3EDqZqm7*3yq6&W7NOLq|)KKYVet9SY(LL`|1Og zY`myX^s?(-u`Sv{*+}9q@U-?VuVDC08Hz}S2V@iH5lO@zmEME^n$#H21RAX9{dLaj zjqaB8t)=ry8a13ZK%jr-^(5YOiO;T=?va<!>+<;elE#zW`2xD?f6IQl_zM5<Jkhle zBQTZ9sVK}1VvkXN%_=CzD|+Gk`m#+e`Q{T@i}!V!XHQ69I%J3efl@~2S$wSt!Zf2W z&FS~+v##0P4mYN=1z244(;AF&Xkp5v&ERsi!#(z&?8gEZIwpZxytnb(ulDI1+SY)q zE|k)kP%I@TlW`G3u513|yNPVf{-{q)nh2R)4@|n9Z#B9VG?RszEGBZzeooB2<*@B4 zlw^6{JNu3og1MI3@6daW^igmqyUwSBfK%@wg(?~^E?b5jacIs)JcdxngG9vMXMh6G zzvf;;skDS0r>eNXCAw)c<u2IU9CAs{j@-9^I}-ORVu_rB8pZmMYCib-<JXk-go@?s zEAXME$QA3dV|&EJS8k4G8wrQRY&f|@ik5r|_IaUCA)m^RKUjzN%?a04e3`tN6(rKq zJ``!A+gpBD&vt&Zl)j**I>g+FhR{`=ZNFpEaomO*Jzqx^IK`j4WtLsS;Hy`X*HR{) zt=xf;2b7Z|oj1geYC2uWg<&fXEV9>Y%$%$V_K9*iS|j>thJqX<9KuslAe}ThkT50` zJW)33_6(2l7U)JD8MtJ#HMn*Dp%X39$J(8)OKX+}4OY%rSU6V1z@IT+0=Y05_RF+; zKffRUZf&lMeumF_)2l#)jE=j^@)vsTCRi-CxSFy@^s3z+5kF>R+o7Ry#R|e6G-y{0 z?vNP#l3Hyh^r;rZ=huDJ`q!>k74}jONO?LYgk6ob=3Eogrke6BaXwHw^lYiOT-Pgm zmhX#0*a7;3ZjqWSa*wv1)!}NUPn|0IxMtXH^ZjJ27_!NtAssvuPU_7G4D%UzCAFat zj^@a(;iMXO;-3`D@}pTS^Ezz(ckA!vm?xTSX5;0ExdkQAUnD>ibkVE#Uk5FE7npWx zqu<--o6RKA?@%Ptr1WnMC(@)QZ^FS?Q<XzMzFY#j(gff!(x;Nu#?qDdm8=6XslIUA zR(DEvtGzcce@=j4eyt$}7=Pu#Y7UrbFatyo$(y4e?@T05=)m$rS9DpMon(86Z3LAK zc6)lI;{ADFgunwezk<!)KGip(UNxN|Cap3X*mWq2{PGlt`^uN;2N28QdnL)~cqLJp z&yj$_Dowk*e#z@9oVrOIF`pjVOd!|QB3vlKYp|QrnT>m=NU_vqQQ_&M)|#NTQz3w1 z-p%~2d7Q%L%eVKCfN!-~8tA!igbyD`<SlyF3wvtg8q%1e9(&oC6Vzp7#quAhHrL<3 zNl4)`yQfTU_4=70c{P^KM>s~3{CVy*G3`CNtd#07Ow;F2nY@@|#EBU@4lQ?djFfYy zDAS}mmJ7kXoN}Cc<gnRU87RAv{RB#~(evv_qcqVyi~X8h9+*%J(FIH=eBSvmPx-v| zo07QgRV%F50^+R7h0L{i&u`OhG4Smu`hP___iq<L(mZnNWrRt+1L@^vDdPnmNcE;} zEtuKCxpU8eT=<)mLpFCMPo1P1k%X3`q1d?)x6`dDjuV%SCQ+OT@-ty;qdDx>%GF!0 zq8m>gNZWCumGL`fY39AIdXc9Cms^%m8vWFvw+ZTyFMp29eveP(RTQYw3HK%7k~+rh z=U7m|AJ8xN7YoL{-@qyF`+y?S{ymeWNKb635ehj{m}OYZEL)od9ONuuvzo^WqJe?Q zL;UKiu34wwU?<^TzWxyB)KO9476!s-#269`B6YYfRh{Ln%_dLVXG9wHOg-oGjNDV% zn~_&t-+)D(l8-Q`ww(;TQZ?N?a><b|bMSI2-0b->I_*WL*E_vEXxK+rI(4i~_cL`q zph=v(+x7T~4Sg>5J4HT@X1_s%KYqJ&5AS8CphlHaUD7>%48bc=gWa-tVz7DSr3ms) z#3E)sIKXI0@<O*YSmoSJ(UY=Yk*wXN-{LrHq}V{CT5Nl)wPVs3@?uVYldisyYVWpg zt*V~u?eSo>M7ncy^0wn~^2fekT14;L{?&jxrFZgjMDyj$=t#|BEKS-qLnR_+$H2F~ z!)aVQ+D+EE-ra`x)5Sv2)2XKz$qwUp4-a`7VKqU=f>$k2Q%&A2wU+5dVo0?52JXoD ztHBxj&#Iv}xYwv#>1d$Qvs9KsZR72}Wx{MOm>ZXcN%Di0fUd^qm!o-`2~w@(8sF^m z+x1~?2>|JjSFeMibyV)wt364Umluh#N{xmz_&#2{Tl^MB6zAu^o~L8nz%VvSSyNXz zbgZ_CNW_%=Bno@)>pjNfcCIx0uF}eGy+yi+t7U7(+arNwpyq24=dwGT?#AI&QWTN< zsuATkA9#^%PPUt2k%YhjVGUTA?E@QnKfFdeOb!*FVm0=pVL{mx0dA8C>_jwTFS#P& zq1O7f^-(%c3NQQ{s0z>Z9DrpFfc3F|32DL9Sjq~sg~@-t^;mv?<9xUAi>EU|G*-0w zr=FrRE@aMcwYi$;+8D+G)Vn<>ln#xI%=P3qdd)XqVud0%vQvh|p;G&XnAuI=Nth;{ z;v8n&lENu?;|3d=1Tfn{t<fMOS^H&+nTd|>y;sFw9Ih@BtZvVRdW=Yiov=2}O_vIK z0oc0cWX5itW9{<Gb53A@AjxV_2rg})kF~86Yvz5AG~OWE@F4lkp)=kj<lDbP5Mg}F z*qz{Fts9zu?5tV;9Qn9WfzW2h1UM3UW*$f6$+9KPY9C6Ng?!Z|!HE4zEnR44(HSK% zL(dxq&|?*FM9bDE85$l-=ZMk72%#?bE%&|6>S)DJ+z7aigxox++E*@7e15=9O~&XY zQ^WnBHQM{q-CR*&5tbxAg36~rGF*v3T#q(0bSIik0t>?kR4c+gs2;;?B$$M>+vBh! zULTt>5%CQ5a|T&+6)T*_|0uEIsAG&eHXw(vGw@OjIaPYSAH?ou3T8y-fhKvpIi3Fs zvy7O3heBQ}Tc);i-DJC(S2kZ+;$d8iORLo1ZmYNfi;1hV;j}p!N4euN_cFDEqlTqf z0rz$9M**$R@~M|_BRv#BnWsN%nXJutYnxpo&Eb!l4oyao=K=@*_Qfw+kY;jWI;*8Q zZe)$&;&efxe-&*{w=K8c{%*cIB!e8*g})s)<6Z_DLOVuuCTc#cY@BfLD0IYz6GD&9 zV0&;6J<W~NTpJoMy+OTQkK-L5^;S8eJbdl3iy(2Rzb#5WI!6-G2+@e)QX<fxqhb^p z@=r&t-Wf2A<{VJ-Yh97gQ6W#<QXORYlvh|C0ymFpnwBut3k{}y?=2@wNv=sSuj-3v z==`uD5qzrg1x=ZrK5u?pNr2Uoc%zi1_V6QaEZs~7n8v=Oouba2;y>YdZ&X-rq#=7n z?3tc+-EL_3HJ3x4aIYuA1EB!Hc+@xYd_xf;b7NHBm_&pO1ikznGc`rfSay&ddq`OB zD{t)ugE*+#MbKa_b*j49zdQ2sCn}2%{)ZsT8iLaya}csoLv)xL!MLY~yH7Una?H|o zM~U9v_Gz8W<=5T25+XbeQ(d@`c9H_kvT8hx$Xvw*%rFugvnqahz^?LpYoqxdT3pm$ zGI)u&s8Zv;1Be-(1bk77Z+6yIlbC8x$$AflGHH_ub5JO7^u&<xrppjI8$d#Z)xG93 z{`Y(VnvFv;;_o&fVQS4rhTS4Qms6jS9z<uh{Q#b5`HO05zwNE=#^>;SSD{n8AUrDS zVSJ}nr5q!d!5gkw)SDvI?)nVp<oZofu(D?kTfE9t8wdWZNx9$)&RAJwUd>G?NYDsh z1>^B>%-`%{L6MS#ed?Q`Ncthu-XiMF%CzBC96MknUQ@o*P2<y^f9B`tz@t9c8vFpE zBWJ;HmAZ8ySuS^3v=V5@=(_I2@)^9rNZ236_3O<o#@$^tBsYd9Ptsk8_R^Ugf7NIB zVSOp{*9npFt`BgcRvk{**;#{0Imt2-a=5{q4{)*~$sXjMvs?K_J<Da?E@`A^2!zTO z*+$Kf_fSB2Ch>RMjtZibh|#>m-G=*ePW%wmCDKbXenCdTJzXFRWU8i2>Psg{!souZ zr2Kr-3pT(iG|j(&mo|K$Iy-Cj;tX|&Pn*oUg6{%i9Qz*ZmYSzn%?{p0s6T5Jt_xWx z7v-gXrJfAyfxiDf5qZF|RXb~CG4)0DhW7S?kP&7i7D_WcMtDd8r36iVuILkHs+z2{ zSe-a^(Pjr0Jdv^7{PhokJ-0?hh{o&3WnKg#JMaCpk0rFW*7NVanIFaQ)SFSHom)9N zg)qU560se3p2Xktm6E*bIY9zsH#qm{v?XK(^Qs%e?N#{e56_hEcUI?34-t(~@}KXH zbj#}&svJV@6?Z(6;JNB?xbqj1>q@TqAI>-2v}~tZRL|=9$L6r-0I$1is>d|~t$@ad zs^r|)m@Js*&iN4$&x!1jv$mwVC|y(++n}?42)L6gv#22=#Zr|Lj54uhCX}vqk(KTN zs7jwLk>d7GYd>72yH6LAcA5IOWA!BN(UA4H$?$>p?QS@rBjKxD#TnCt-5KE>JUEh> z06JxqPi82_w?4g#W!%vu0&>4k4eN$Gg&)%s==4_FiF@-EyTb|DXneGC{5?9ZVQTT_ ztF(liUhYSX3;+w%PpnUPhg+_@R%%tYdZ7|Kh9v<Kuiy}jt)3nj;sRy%;B4_x+VpFV zXFNQ!KY-?K)4cHAE)K1xabX&fy%UrgF*q8l_82p|i941?!$cw@JlrXp4!XHV$=2KU zD{Xvx`2~w7S}bNFgU>9hY8<L<>P0YOAR-AyQ@I<rPXp9m6NMOdea0w0SESfHIEJ*c z@nJ;fHI;7=l+=S4?7AMwwp9pUYZCS5qtT?U^tPj0q0J(*=ojoKG};3Ym%-@M@tKPm zRq=fJqd?s=(lDFN^n%4BuJ?G<E+kw7i!b`s{xZ61TA#TEbPRC2@qA&Br+n)~R~Zg| zDdO15!`qp3s~WvAx^8#;;Jd+TC2^nu(FoL^yeC2cBW3L8?2rye`n_B26gKO8ay~Lr z&`<!5n3`{^YM0SKWI=qfeT8>iwp9P=mScg`<k3g0kDAl(N*hPiD@)z@K5+%D>`v$} zn18>F=*FNE`SLTP#^bo~`#9sbTEiNCWi92xv)r!}vpH_~*0yUjgD?Hkb9_4iHL`)r zBtS#Vxc4RsH#IEJo!-xhn6OMa3upY{C5|7zZus7ZNCvqUqS+<){IOT%++6L2qxg1l zQXVs&)h~%9uGEO(>7^mMhp;gLEAXQfD(`|%ps{x2meVyz)|igcNc7s!aO&M_Por?? zEAk9$zt4)CKTfc3?wZ0+_x<<8os@k9I=_1x?8`RUw5YfU#$sUV*%0=t4j3p;75eHl z$Sf;sBs-|At7Z^|ptx(BVD(2xyPXPDHw?F<;9}nhTlwA0h1L_>4DRx~(+a;BH!m;; z0kyXnO9_}<;Kzv4mrSD;KuLR%Jr|K{gQwsKMsWyao=*5ZGOqoNb?jY)jiF+0hhz*f zpA<+@FX{$|3iSpnl#^B!y+4E-sn!7HFaYcn8qNmk)oW@OYrFR%h^KD|ri&<zg)I+Z zj{Kl*(x)MLqCaOZ;Z?bCJ)>!dDf2=x7|kBc4mU|vmFZP{$+{ZyI>a5bfOza|#o`YL zywS8vXBI=M)2E-~Gng<woK&Om^g!w}PaC2TziFJ}z<t|aO*UmXDn2(t+|h>#91YW7 ztZT)JN@ol(JtwnYLdV;3;COpi&iE*4HWa(2$cDY-!=m;!*v`_OB~RR`!q=VF?Pw*K zY;6k)=W{Ds*zwTOTW<GQJ?yQ=&teh6bU-?P*RJQnWUYiCF>BxohkGDVvKNqB;>MbW zlF&svyQq~<ppPq)!UL&;bD^zlkW2%%_Ah`<G8qKpUoxxPMRLjvow(lfkW<Z$_qFww z&*FsKjwoZ=wUN{3GqxDU@>yIWkL;Dd);suB@*P-)hq}aA3Z;vD0an@(D*@0WcmN~M zUOeBd4@AL!L>!gs>4ZNj_ZxI!z#-3%8^6535WC^H#fEh{^4Y_a2S+jB^z^m-4}UvV zEnP+76XjQkol(7}BU&rkB>VfZw&#6BGwMU;*T)st>F|o<8tcggFH5qTaymkhl$Fkj zgt%1N40|C`hYb66VWdw@_~zs5*Fm$frR-HPL;1Z_k{F5|WD8qEXA(le>)Q}iTNICM zA9ocl<TZw4hu>|9V2Fbl%4s7Zy}nR;X8;Gz6bB!;)?pY;(J7aC$+ZIn+sAr+r$0ov zI+W{m_>K^au63M4W~u42yRP$Qa&_!qCd`Cig7(ZJk?J+9D<i4PNATwfie_7SY<RvT z@OBb(woQMle{E}V-k%Pd2crT4RfCC)8-swyF2vT*Ww7Qv1y~%l<?K$L>}OX_t=?g< zZ4Gp$O(;Q|2?KtGZ~Uw|kViB^?maV2OWd|Wo3f1J>q&ITgm*}n4qTMz1Z8soW5`1d z&{|hD3S$UUAimM2B>UYwWQ-2U(5Jb@w856hDYf3EG^jw!eW8}Cn+Fm%!^_=~GBbKn z%S&N+EH=%bKWc#U3`^euBpPOi@8%CH)}uN>v>L2>gkYIQm!{>ut!vNY&0Q|cw|iWq zqz@Q`&N=K28AgZ^%$QZD*o_8O?Q^;wr4W9TpXhs=<35$=IahFdwLd)_W+*VT>Eng4 zILvKtyVvvPnpyiaYk@=iIwaI&=##%J43rus#))>5xez{r?PDP-jrMYCI^)7y%?t53 z(!7pqH;A1m{)MxYIp3)ve-6|A6DI@6fSaRWChbK%g2P|<yvp!!Eqyc4pzcnBt}5Zy zDT5WYe+w^C2S9lU<oYe*GPU=2^LG^6TmnAGS?hCqy+Bngw+D}(HCQP6YT<rn8qrUn zcY5DodmR#0Z!_OzN!BH2qg^rzJd&t=7hYmh_dWp}a%}Z@WCuq*W48#hQZ7NApUE{s zurUf4A#~isKWB^PPkb3v$)gY*{E*S{aLEzQ<p9___W|lVnS@IT+<f{L^a%mPr0IP0 zs4Cp+s7^s?#woBNG~Wn5>}pufnwG|;7XXk%aC>idjDAvo2(9Im8xIS^u-LBVsOEsC zIE8ME5e(s2>XU$^ILUmpTPW;(w?Tn*$36kX;L=bNJR2bMz(}+SW~##<?8P6t2xcsY zvB(N(Mma=Y5XY~OiClJfB;>8hCLd^f;N^0%H3kEd<ucnarWqy+Wz(&bYKjU_@fo{K zJr0A-d4R2~a}j*(r-?E^iAB)fJs7GGc2<i-2Z#qWaBXw)n&2N+5|T27DmZTqk*6<q zDi_M;>-lslrwb)$w%K+Bhru6)4L#lQ_w(LmKRiB`)k@ySrAHEch7mW$#WRWdIcqgP zmC55q2UkF&II5Hr`r*donlPw*_Tl<KQLYoZ>==oRors0DqQm6+Wznljvx5+om{+ud z-}w$<faP1)JUhbhO(O?GsCh7CXSDz*(hNmvx7^&U{8U#4Z^LH+e3WYG3DD>4&en|B zT&R*f`dALVMOMob1v$kGMuj==9BEQbj-_&}x3_{rhb`}Vvv=CgG0+>1;c1}ONi|S( z8;uHD^nmPb9=TEB;B{~mP2WIXKp=cN%ZlIqKDFaDi@^$FJ}hbyAcb$lw2=>H0UYs8 z;TX7uuYGyb;<TF=mCjza4-Jn#UEbnUvibT_v~v!hM6X=*D!J}=Tj4<vWDY!9Y>O#X zsWjHX-l|t*6=#2#=!(uEhlVdcwx6-stKP(Q!OwQB)*xs33vTTcHDLM)#%jGsphRdV z_U`9#*vNJi@lxZIEz8~Ne2psdwdcm}U{{1b7G@@e1X}zD(^sbOSh2|KsXX!RYlqLz zat8~oR4yByCjw_cZR8OvleVa~7AWW|o3+M3IKO$GenKhSFLKc0>r?`b@b<Itoc+V7 zu&oVW<lTd@F(ApI{MJ9_4!<AB@jyUHGmG@*%9~mnuo#PA3|rM57nkk+#f3OW5&5gS z*HfGBac2ak)X&#C{4D9!(4S{}!?Lll$8}YEP#qxS#bWQ>c;qYo%)?{mhop!@N50@m zNk(XOh=u^dz_w{{*&esL;Rz`wu75e7fmmaAuObuPHUY#cdWYMHV#HCV@`l(nSlD^F zB?nTvb7N5<gK{AA+h0AHZ(w&pYUA~!7`-iVwA#37P1Xg|#z%<Vt$KUx7=iF;#Km~9 zUJ~N9d;yECj0ZeJlEn>WD)oB5YCLwMV<X16hS||dXpD&uCj-}K0o#vqe334GWGBMk zrW6}xEZQi{3XpJ|nXdW$HiaWRj0tx}h!QH0mXU*)pf&9jdN-`fM|!rpQ@F}U)(pF* z5xe9Ir?XXauq|ek<KhcGO00RSlsjui^gL!<lg(XIJgTA}1q(sgtu&XY5hNehl6Pze z!UQaETdI_qc6?YFZ?asAoGwIcO`j=OwJOzUAY?P2PC!cjAm*tcas(kNKx}u&sHIT8 zZr+;nc?f-KA<_RVdRr&Yn(JVg9sBn&ka!G{yuRzxa9$cO9H~tNjv5Qt`<8)?`3Sl* z_J?A=oNlQ~1^2AoQ?MtS-D=VU>Qex_Lr5TtVY^3AIuz^$yvZqH(?l9o#DGU_7(6J5 z4KB|u<^+`Y<NT08rS!>c$LWK9E(NO(NFUc^x=7lLY5k;3?nkqxQ|Ty21QHIwqGo(e zriLPzp5G7a{d48`;`=e}-vBc074tj&RqiJ~px64*EMVj>D286rfRrb%Z>EXE!$=hE z*JwsewZT!JYfdQPQl+w3OD>M;sfP?&nqYxf@a%*J2ub9y%z|Z!5n{;myl5rnDV3qe z{<x8u7AaFod3QaqK(oeK6Ee~FMkB%fh!mO#AkXJE@4@rm>s`n9vDfKjl};v^B@>DS z?npeCcA5a^<~7CDn>ist*B^x)$19p>(Hr|R#S_Z+)z7>oPJzoP`zzfusG2OMIV4`6 z>xCsAVW#lsu-t{n#5YI)VFTkxpanFWJR3WH!_CAxl2p(oh`pb`8Apo~WZ)L4^*#sA z#Amg1aE6Fpr(JZFZ}M8L5i{i4vAvH7H?@;H*24N3zuBdbahMR+sH1|Oyv08EGdUW5 zsKn?dNja>ZE@`{=a-(I5S*CAOqGBY9v74~juLGO72Hj|}yIZRGcap-$yW{WMDal|c zw%w1x-c+u64c*v>!%{(iLaUvlSUp+xDDdPP&;)TD;!`4Xff$#W86)Rrw%@btvmbtW zZEq9@Cu0ivIDuI&*5i&0kD)HyR!3uyU=qY#`Es>Thd~^(Z?9<SOb$7CfQ%m@BErGw zm-IIM^SX<jNZ(80zMykBMB4*%d1qtdCX2;hh4=&?xN&mhnC05E0IH~SNf;E%7RxcM zr4BOypYPTR?8osIi?4o7)q+A^LrEMb>L)r}7CGs@8@N1Fe|3DDp9R4Q9p(?Ci!{re zI?j812Qa<@{v`O^M5tx=)B4DyrPe^RrZ`7K35e8hoc!RqGX$O1TvFpnJgGeB5#}FI zJ#z&%_UDEV*8K7ZD;tfIg)EAt=HyykK1D2IssspwU@eB+<O~=g3|7K`ktAy<cxZ7} zs|Zo{DA~Yv46d1$oz!hDfG(}gC_|7<zuB)5uJRnmfgEfHgyu7Lb~qT}Lq@dEMe`;T zNwajW`zDPry9vAtOA`WUid#921(Uy~^ifQ2cN4y|di2_P)<~bSX^=H`wjEl6YHh1k z!ZCxaEl4odBKar5(JEhw!t-g^%i@FGMEZXHFvlUrO#WYPzrI@e&|UFU$z`MjUod;B zbr5w#)2nf&^o${9pwB_EvP;JCa-lwT0-o7T69Nf8S0NpD!d9KHGI-n^5%feXCt+Bv zvLFnNsFhdiS!Z$hq8k{B!E?k^cVePHnMdA-Kwh1BJnv5I4{P;5+!e?re(Bs_>}xLJ z2Kk-)`_3(P;YUu-xqTi0g%EhpnU1Ga@@6)ewdzF?>8;!2UbQCDj&g`yaeMsbK+4?@ z(O4=w`aq>j3Y?Ac@^aG8bHJ4n@LO>N)1tX)INlaV*|(XiqQk-Dki>Yzq{P(flwz18 zKLP4ZuL~n>eSrK2-hsRt7O-;{CSs%Qr>NhT`8gV&%5t$iwM4(1@$n>%*&O-zBPR}{ z*3bb28SSybwJP(2LQHPnle71&L7jq;yZ-7IHaBwv$T5$Cyg{M0L2d|w2|@7m%+WJN z@)M?4h7*J@^+U$N!HB%Q@zm0C4hzzB^>5zZ(APgI?9_d6-Wz(Oidx%s_@h*Ef4WfB z?b`M{hoDF<JGb*0{zHrd_Cu+N*Td$cZ?4T;!Lj~@+0E8K#P9^Y!<OiQc-*xtAu#yN zwaxJt&2JE}4=CzTCl%y2a81Oqx7jC=z^|(Xo)UCQB!-dx9CU3bg&}OTEwaWvm@hr| zb-p9HbsW#5s&^ltNn<m~)8?~SdWKWo9b7q7bLG#Utq3uuEJ7UBzfMW2^b=<BmEE~w z2Ys%NZvNic>-K!)1xqwC;*1dxbYzvu`bImkIkk7G{?X-y_uljPGRO(|{bBHGzUq4* z_i_J^YwaeBZb1HC+c?Qb*<oxs>rLM{Y4xh9*r{y`!5D^w40xDp)1YwkND_bh@--V2 z{~}nUHxW1#_mnU}{_u#z{EjLf-uc5Q83bpijTJ`)I7}MI70V6O8k1z6P9b(xC##<m z<6!@?tP$Sup|;<7g0=i-UI^Oe{^G5VzR2>c>LJJEWE^lWrY2u!n3=uN>ttH`;i66Z zN1cs#sRnbQL!wL<G?Y~%f5B$gdXc0^d~>2nd0XVw$Owmi_;VQCRzDA1uuLW^vp~;@ zs3DKo_{DCC?t1!@hm;_WwEN9vy(!UnlozXmy;4zKWYp@)!|B_lW+2|R^*ZR|snd4j zxSYWCZP6yyd*wwVv0`JxUAj-170YTZj3XtdV1$XKewWoFB0c`{LB>B2szFKJ_sF|r zsw+R+{D$a4G6R`5Bq};WYT7>;o<2YkEGJp~IWz=Gj*$doP{ZiCXK=7m1mN?03VOG_ z!0uy=ACt|jTH`p7)Z5CwK>7qu+c`MjwgD&fbz2d{&m9kY+d~aeWZuPObH6=VP{Owg zIzxnHjgK)VCTdwo7Y}i`=#LYo!q2zW5PzBu6_6LXzr5;q%BFU)9reyRaGgu)_0%Wd zTHB@mJShJd@kc^WFB2Gol1VMm$oM9*#?LUx!Wvb1=Z~4$P-tVWLOY?z!0@vVJX9dV z&ht;K;i3FUBm3cPYPsp}%0;8PCF(`&viLlp%?;O`US@KzCHx6twWbU;#QE|vnEjDO zAJ5HZJ!uORewlR=Zq^nhbh=^a{cyzfu(@ovGS1j|g2NmQAKfC6IxSu(H@1aU%Rto| z0s+S!7<!%>QC0jpk0_jIXuS&5P~9-?ZqTmUzb2|`>(b&NJ=vucixfO#youW1ZlnsX z$P@*gcY{;4oLWEpC@FdTEqXP$4rIXoV-;5G?>f2$%I2qgfYile&#iCkO8uz@>bWix z4Rq?_e>F?a9eX+Ii2~)P6I#KdASA=gRqD%EbXv=Uai|T;0{Z&;mea-Ls7LejJ2{_S zITCRG&7S$*|6AtW&D57cjEG%&P4OACakaoTm&1i|S_zk{diZ+xW8g!cD{-mrlzKm~ zN`YM!NyvVa@TN%jP65?(zD10;s=iPHsm<k-ZS@iv<2>b~2%Q|pd}#bTMgrm>P<-!{ z5E0)qzh73?BwmBgBX8<Nlo%(6k>c*oISJeL1-FLkQ-=Z5Y=u@TO#;p4#SI9Rac}kM zS6Q)SW}0D=VfixNl*ZRsH?Udqn?r%qe{%1U@uoKOCHBFgimRi0C#ke|h*XjpDa>Z$ zqHLvVs+vQjtT2mQe>G!+K#1CCvvKVlIB#0rJbWC6*z8)f?=mGy?}`>ObT+py4NV5% zU|_1*27#@P$J`_WE@>|&ZLMR=uEmg0M6+evHAhB7#j_N~BokUUDM>c&!UafTMc_?! zku^b{0#YMS7|BSe$MUjL(lTXtXu{hX-5$0Z0)B@Rs$;IJ$lqIu+2Mh_kXdiOG~J_O zbWT_KC+NM+ZHNoMmn6MT&qu|uA&l^R(P%-YJh2?kPJV3K5cJKIpn;ai^6kYD(kbS* zE7iui_&XEI!`%~D(ewG#c6$e7^E>}Y&;&uNuon|9Q!WlPjw7N(H<|w;Y;}6&PXy>C zfbrVhH^k!v++DwT-tgR<6kR`cBz*AYExq=jszUcPvmzB`Z4?tr`rCZsyCH;b7N^S_ zlKRtba&C_uI^8yhz_)d$4*qflPlE1u)%M$mL=j478q}IBCf|NXGNuP2JXQi(-|75@ zudCs*-;(-(QykCl4y_#^$^y}&+&&TW*65KaHwu0lS3{_#8_H%OL=Kz!XnN(A-z~xz ztQm}M6(n~Ml+}GUe(*=WFIjj<u!6Of#O$s`OxOOUbC!U7)BR;X2PQ_RHw#?WaOw<v z77;8kXtBj1!A{0zu_axu_LpoH@#0765a)vs9bw!+;GeR61y_f-2RP2r-tx$4vV1F2 z5<^y&>kPQ96c*if6VqGzQ;yu9J;XoU#YQ0YnLoY#|K?PCi=4bb3yh2VRo?LYT~2jx zz(ji(i1f+gBhQDwdYr$wAMg+RtnRk&Gj5%JN=pARzaDJVy|MmbAVUQ0G)$<!KGS~= zliI#{FaOVX0f4E3+`t+4p|_Opp8t}i@F$Gv{|FmI4*4dk52KOwzhu)RoWh8*qMb^7 zdiYD)6WRZf5<%p5%jDJ;QvX>lj5Tn2KJi*i?3Mg~Aq@H5vdF@8!k--YzYix^FtT<m zj494`Qu6)m|3ZlJyXBDTf{%ao82>JdpgT2Lo`bu9@U*~xA;iZ7w~S&at^EJi&+n3e zGdb{^2F`qgzWMzZLdJI(7E3E)h6@@0O)nTwo2i09O~jimfzuqnyD4anaL4B@>ag99 zCW}*B@$W-H`VsP;?>z3U`=Sk)`qR<JpYQ&!QT!{D`Hz0GfK6oVgR$^`))N_6O-W9F zw#mO0auiI)o*#?&pNAA|ol_d)kpGQ{5v=lsNa6Q?V-A1qh$xT?{=X4*%aFx;Nd0|X zK}-SE^4Zf#Bs>=DJ$=p>R|KuD+i-lo7eP=^YatHu-&$@H{bS@|E~0QEl-@~;YqFT- zL3ubTml%nCR2xk>J!FvV`eW&Gn(<p(r|o#t{}3+upW3=nI#&9tw%TCEGX&&Wb^&<< zv}#J=_bL?I2RtS4Nt^zDr@=rpNxC<MsC|>=;t3@sMt3bJUm|92xZ%+G>4(LG+q&;k zyAS+q`2`nSsdfZ&f&3}^n|r=ZcJ4(5upQoJfIZ6TJ!HZO7*(;6;;-|QYlqV6PeG3} z2875v8_Y5N)<`W@OTlYPmF@H=hcz*dZ~q@}ZyA)w*0c))A$ZW>?h**@?he7-gS)#E zAUMH-ySo!yZ`|E2xVytQ*^lk#eb0A(o~kKosJds(%v#+&-M#v{dKBrW-+E67%O9vd z8vxZW*Ntp;zMm>@OISy<F^G!<Cixx=CbaMZ+78(m^M6nI**gFl&u+CEMc|;iKg9X= zCAC0Sgu#apam8~%d?mE=;oB9$9_|=-nlI`<#AgE!kiPV7vi$!&mJrcLNJKn7p>i%~ z<6*xcmMT|ylyKoLMK<RQuwJ7yTaGik*G-=If5^9g4D5h_8!_{be~t^N%75%VG91Lf z`7z+{-W)6?(<IU3hNXN}BHkeI2Vm`Atn~Dp30@gpz7}~!tsePX{becLI{v)mlXGic zBk-I}5&}E}+K?1|f1AUN_YhT30tJ*o+_1#wpJ7Kd>Vly4v_)$RWSmNHFFm`dWfUcV zwLpsTTTt@ygH~~o{9pQotP2C6f=95KL-p}=5eLNAkXD*HA40Db|EY?{f5e{;SL08d zgABtCsoUWrORw9G!2S{&^*0^v#D=KK|JmV$?QFe1m%K$l=eWH~*DWmsqmK61Xi%V9 z3eu}T)9p_Lv1N|eD^&2;+{mH8z`$fxdU#7K<ceg+^1p7(uw~QD0JXgy_gJ|R<79-H zFxll}M$6k5?ba<WN{xtmijQ^XJgSw-WdELBFDw8&sV72*!wOR?c*bV4D%Zrv>As85 zr3!|^E@w5ALLE2c^jWLsJ_KC#mP8qnfrDU7IxX|X(-}!cr>6Rk{n`*FC(5}9@%U=o z0X)|^jz50O-Bc8SGkkeM!Y_Ev{Cz8-b(KV$D}S|<&r+-iReH8~WqQ5U2k-I3<~J{j z(D155C*T5V(0NlVrTDO}g1KVjx|h*rv7Gas-?;_xk4pSQ8Ih~xHwLE*kMUc6u+iz5 zb;N|s@c=6BgTtDbSgFxJujF22zseO)CruIdk(w!;!#f3$fKy7R<0+#=^*O@B^*{sw z7;?@sRdgT{@QOVl5fs3nkbG%oDK7dtN%E1@!>O<Vsq&j{o5yH!!?4O-7zVBW)gyE3 z?W)pC$zM=F-PC4REAeVW(6w^CV)S3{9!LzlJG3L!$yq3%cTNYF0H%=<b!Q-B)JO2I zg;#>a_^c&3_=6(5KROe+fR`BOPkfju7M-sL{h`i%lF#x|#G?-b9fdTQuxo)@eY0sI zsMvRklG8CJ6tsCyBsu>NMc8Pgs50)CqtR*oIbR!LusK_&L)q+o_xZzX1v>y8=?c(_ zmA@)=U)d)(pQbN4KIW%ToGDVE8`2mb(P@njj>Hy6R*yuXx6#&YwEHX?h1bAe_?E&P zefspEut&d))v`Tz9iBw5{*^Gd;iY=Lk*$({wS*%c*WH0o_z<op(%xr_r(AKfHYRM? z<B!?z6c_Kb%m8t}y(D4K>qr502bWwkN?v<SZpjWa#X$JqxMT6oE#d`$hSxdV;NaXX zL#8z96XWx`@W`}D&I9xf#(bp`DweY~`#x`kP)gZb<mPAXFBrqdV!(1gL7uL4$ZNTr z=1ld4DN_3YTW<+5i>ONr^{#qVgk&HtBTz&(K{?CkIP*K$Ke#k;`82x@h{gXnYcR2$ zd}CvD+MQ$z!Rj0z--G0nrRHtc@;WFZ8<8VySAPk+9Z)IcF^s+%p>BHEJQGe|8>XH~ ztCeRHibtr<n|{08%O%jOFTABoRcM!YQ23=t-mT35svj=;9;ZT4KZ@uJ2EX3NxAolX zjza*Uae~Wk-Qaez)Rt<q-i}YuOzHhcF-XZa60~yfYb;mFIC&ASW0qQN=yt{un3dg# z+X=WFf)w**Bw^9Ws){Vx`3=3&e4jHr?EJ-EnbHUaFNbV2>JCN_dN-rexu;Ql(gwMz zkoGMTh7y3HV%E3)Nm8!<r%YbUIpnjSM^L+T+5+tE`l02^jnjn&c8rC~39iKFd}!)5 zhOBMwSHT-0A;%l&z$V&|GcH~f)a&`AQ3}V2JO;J=)I)d@6^?0ro?Joz4v?-Q2XIP~ z(<T!TW9niNX$;?A@1F=+)44re4kwEP0p6AuflJ@p2oTbn<S6c2T8mw5W3pu7SVnGY zqm9ziOfi*f)bU}6EMSw36g>Qn<N3Uc-Fu*vf7aSeRK5#|zP#%fm5OHo-x*F%<!Z1Y zIQE>&L8UaASg$izRO(lyGn)$#l``Y^x%}7{iV_HX7v)bhS@Q8TYSm{TTVSqD7dp=d z*Wa*ZQ(iIgx!o1*gOLnI$3H3bIT+J6bje&rrBfSUex<3UT9DG6s5Z5|fjKxQd@P+E zz)4~B{QMrWH6O?hO>G(#ob3<9=1veAi7k`}{Vme6LFRCOM3}93{DrH<)iGF&RtU3L z%-eq0IfqhA$7Z#bU7MoEYFpsWS>fv8y&Bt2_{gk6s}$_;wYHT&uq&xjcM_?`*I28n zQMp)K<FWY7btnbmXsO<;pn{kovgk$>K5RU>KTbS43n=fM7^=rrry3W3_jIjz^tJ<; zE;(&Fk?e>`rCC=LPiZQ5ICmlaXa7Pon*WH+*5D~z_<B8?)M<0dSSpPwd&tXry6!t_ zA-&EoDSm{f1O|r7wkIUz)P)L4J<3DMf;4mJ<)Du*KF=CDwXa-ee$61AT6^Y3_snuW zrrPp;wL>mMXFtz%Lf@Qg^QkYG1j;rO=O|vQE@6uK5_0Lw_2lWRZP9m@1C_bTwbT94 z*&Nlf^99I{^R|m(i%g~kgiklbrniiF?Jc!@+-LJ!=xg#$js>=^XREo*A8;3G4~OTk z$vF&+C;VRHKU-_28f$CpOX%6>6HtEwOh<@p=ci=QK*=}#2*Dg=pbqK-tLTcsC$(xO zIvtZs9VS)vQZeVl<wEusMsvd^l!#bkoeD)`a;$#Cj<QSRVa5L26But<Aa%XTA4IQN zmj@mQh3ndPascd~se0)PZ(7OVu_t=m9SZ_TKo=J@YD&mfv5k(N&27YvT>M_75Ygk| zBw9&Bnixu?1S)L_UYlQbi&8DAn*q&owTV0fAR&*3%Y-30P;?x8Qbkced?w$`9{4Fi zDZG{P4;Fh8f-j%TJpde2ulCs>v+3;nR(HXT-XAKZ#Q=dzT{2;*bl*DNERA;o<kTWO zrb64U^+L~CL?4A)>*d7ccAZ6!n8kw%re>pgsRb?xhfff#c6$I${ei%E27lwi*ev$7 zEAM<HA;ET`Oz!?<jzV9JF%`ty@=)@UZ2K`*nJv;YK}q|lZq?6}hO=IXd%D*y1wXjo zqq)7?y6>PS_rJ#lI`1H_|KuJG_|?WS)ZaO<IhF9~Id_W1j1USm*}ADf^`B&$TU2K~ zF8jzlM@H#vO~HrdhKqU)MGNJ|h8;L)$EwQCda#Ci^rni5#E<3eW?wNPoHe$ydL>}| z7?!r5z*%n2G@RmUg^Zvcw}lXF=F5{%1MNxQ9<DH@h-?;`+uURLW`3FUn6wYJ|E$pM z5QIhTRXamYAub~+aB%QzR~5VL-YK1*frmwaF<n;pCVcOh9v4<6Z{2d6HOTzB+pev| zetw6~A<-ii&2Ia0+~=rbL&|J5myLG9Yv;FN5D7r`JZ=<@zT9I|@@Db10*?OA#t!eh z3{97G=3W%ylU#RUBzb|~Aa|U#9H7QTx!eMsMyr4&AIM^5Flp`6ib^LCKi?u*b4;lT z0jL4`KY}UT`HA`$^WKO;Q2XITh7Ue#%5JS2<N1@1R}xFj@^1_}4GUMT73ZV52g{bD z9*_6!6P|Z38T2f=)JU7yN^ez7xS?+x+^%QYO%bUKv4>UGBA;((5o9^Gj4IcD^o678 zq6%&3pzSY|V(yG4Xc_-%KWgW&@TJ$I)%)d=zQkrJbYH!(jrN`Itt<^S2*}mS4k$A~ zF=;>}K7Fh8B%HDv%P9ZSQ0LA%x0yqz>-MhwKv3!RG31MQ4_Cd0`e(z>du9;PT3gkF zWV9^u_s&0u8fJG~PZq_~J5I!3LJ+t68GO}VW{=L>6Kll)H@dV&|M~;pGshvX9fPU2 z6*<Dto#=}PNLD+8&-VcJLF7978*@QP1hx)%jlT~zyFZ0Yx}1>@P7Y@3df_O5!0b2} zOO{j_8Md*5a$f$t3VTGud^LhSl{){6YqC~JoHgr1uVv_z+lumkLep~|aCJ8zI9k3! z$F<<;V=r<1I%<XC5=$O|`x4stj08Sz1PN6Wj(VT^QJ%*@OUpk(1G3_dDUWs4tU+b0 z$?BcyXrh7d%4NQENnx>FIlJLA*=&+#n)PajnyVa<o8$-0dQxpt;_NKp(%llcuLRr8 zpC~CY^q<4pg?)02f&6W7`LZ$weNCbgnREdy>kl$15lhSzA6p|MwIzi}&WF9zwx?_B z#xdoDHlM<CB|GF^;;8LnRyVFAfu~<?D``Hw%~J=Cd&S}%{!(9GL++4<(>{nl?OWlW z#`ioNz?O2lF1ggnzO}C_zIr{3h<?^?mC*6LR+NXm!)1tpyNv4w-RuU)$u;E?a%eag zg+1{5N&^W-yOO9>SH0;+omb@+FIu@T7umjv{5gj1xk}CPr$=&ftjAxolPcFPn-uRy zvFf_AmFV}o>(!KNt!Q6uvh3#fvNDEdo&@yoD?1d&PgmQPRC*4Ml3i@<O%_Zr@VxHh zCSQje;u(dZ5>#5EYL|}Rmyv7MJt#gL6^#8%rco^y^M1TlTI(24557C)XErS!6_3O( ze0JZQd~)5W0d}2AjDh-_4|9-E{!aig!OWvFHd8U%lFPmX<^#XQ(Y^6+DiuV6j;chn zxe`_YSDndZGAyWKF_T00oY}w(PK?zq+(ebk;*$p0`;*)&iI#1#=p2An>eBZTe8zWz zDBR+cT4na5|4U8O>H4+m5y%lY)bW|nv3AaS|2mo3qFtku&4TxSp{DQ4H;6YD^EIIa zohq|x_i7VP_d^zE!HIlvc^d7UkDE>Lv}zfzKlyZS7Fz{3APEv6I^a}F6jEd~iUeYF zW(vHan;mXSoD~2F90p{a{>o!G1;%jC_DDefr<uLx<}TF&&>p&qT5Pr@KC+$xwnDv- zJ3K&wb52TD7g#8hd=WjQelSyz0KCRy_&L>rbBT(=NoB*uOE{rSRr^E$V}qbCQ2^<f zZd1{k@Kd4D5e85ucGy$2v*4?4xB&MY$_xjh3Ou%%`9|npl^FB4ybc)5hUO>ff(R2V zKt!_xc4&&{Ka8dHNsk+)Bd+*?8XAP2h{PjNXAcBJuk27Kin0S|oDr><zJ!eB^f}M- zv=es(dH+Bo3oT6H>FL;ZB7^s8Mo2WBHXY3tfBuLA@$Tu{$BH^MMIF!$XRWcyttFOP zuGmIBy-y1PABL9<Oj*baNf{Fn5$Q4PC5Y|ok~>6I-cNo{3ge-l3NHk2&00v|>pM-1 z0fp%oEX+RPl=7*%=GY%P%*3AFp2k;Vm>=QbgiWz7r^gS?cV!kGX?U~L4{BHpudxz% zZ7L?-q1i%&`lRlN%Ra4S9pYCizMRgRkE|mJl|6vc=UKcjggu6Ym?70=GFvWbdQZA@ zI;(5x_pe;k%m?y3F-BippE>EYO&`5N8u_%Glug!fA?go<KTm$j!@qGWxLA1)uY9Ww zU{|PoTHS`C4DLf?hjO;Aq$uqB7K(peVNT5Jv{0{8(e}eMAX{HptW*(OFVuZEdA@3N z=e5Eo;Aiv(>drn>Zh<4gfpu(iJpZg_WDw9D^|*l*VuNrM8PDJrHyz8!SFxO%x*qIM z;`Gthgoc!x34GnM|KRJh0zHQs{lITMGGDRor%JDdlk;{aN05N2@Z*fdbll`oUa2vA z-F|Z-$6V?0V$Yy1e0ZB*ALaxmw9O3n$r%6sQj9SC+~^`yQt35I_IV*L%5uK)>RV)S z2IliXOfHA};m0Qdy*%#VaFo%@5Byx$PlUcjZ?txIH?XF#0upD7Pg=VdLCsE&L)tfv zJ`rsm=^k~q9p(aU2nW-X#<#0NtEG!)&V5^=*|&9U>=bB(AN}tn8E&_6)o~v{3a|1G zT0ADOl{(M+ouWR`QTXv{>3kCB=c1kP<GA(_{5^mY&>4K9Nu(>UQAfNoRSWNG#`B6s z14UPwj-EYSdF2$`M3Y~^u~Wi9&Y7;@t@l+0`N;;A52P+PK>PgqL7rd+e1QLxNhEqk zJKtGX#PTG!N#oExvbr{#)aZqKTn$Ve$AX3cmp2xf8%dt=M37sX^k-U_QzetOs(}gA z!K5WJy!?qk{OzU*9=X&RNYsePr>qm&IiNx8EZyCUxnmm<uwRghvb@NI6n#|WSeBEx zQLmIwoaqG{-tK4qiqT>GZJdTFPufx!q6_bJsEXI|qXZWmlK&Oj-oX<xR!gybCBaOM zH8)q+wohjYsv*-Br!N$j^GSsjE$TU|&!f`;Ovhbi?G0#`PRne2X*NExpWi`DPte<O zcU(<Aa@+i(&T1#%D^DG#+rE6s+PW`%4UOQ#MDGCq*>u!fhC(651(jzo6(r;R0W+oC z>jcZ;j`jT8kvz7dc!5qx#>Jfi*fMkq3l2T|r&-^xkTJ#)Rz@)W;k)BkLu;PeEE(88 z!BtySKg@0}v0750xQsU63<(hG>2sZ%NuQlP(g-#I2<*usy<i1^>SZ<wIcPeKCk9Qo zh!iLvbJ_;U;xO5P)tk*Jt8JdYq}o2wbYaaQRfYOtBDWtCDbnlx3X2hKG3{qdc(5#k zS!`e}QQ7uC46au2wE_rDxa)1^b#HuEdcR)-bts^%t^!6PLK1*Xs%s7#^Q*zMFXSnl z&~YD;Zw06-TewJPneEVqq+zwnBft4+--35;hZuRAAN^dgf#Wq0j6U>X+b30@7^g=G zHozXWUHEnUx;P%7LLnD%Jz5M`ty;H;Uh_6P2{WFP9e5U(+wew>urC5KJB96~F%K6f zS=kukXXtv@-KlOL)_+eWV^M+Wafv97{kRd+{^gNQzqP%5<1l~HeK*FXZ*K5uWO01# zS*lva-vArRvzj1OzA|bAv+Xve(<rF{!dtqNoz!_Qs+_4t=HKZh7=B3oVlYd3+b|HY zeYO#?S-YE_!Q#;5-t53Ton`1Ni)X4^KnbjmwY6wT{NQMK<Jpq6BayD7e<v)$tz`t{ z1;DGMKG!llAJ5*HkDrZE)&I;V3JYqo!Qr=}^6q}OGiqcB$`p^@PTc|FSj%%SN1c?P z(6jPInsmgQj|yYxI&1$jX+D*)K~BGEru1qnE2m><A`sI0zRzUv67`q7qGq0F&2pXB zRRhd10(ZFlqiOze8ctg{P;K;D#i*P3@~F{Rx3yEMX_IP8bykAriz)f4H-}R6{^e@} zj7BO`xX0qqSAJd-HbS^+Hthwo%bAM9OZG)p#M7o!=G{ceht%*D+a`~b89n3o!BUVV z>a-NBr6?h2rg)8Bci?xfAa5?8Tk<!8i)_>fqc2BX1*vNMGEL%~Ok%|9qIf(H0ZfJ8 zW!khTvw|*2rqJHNaGu8BaoKIX?~5Sthue*kJ2^_VNjc^@k0_vZlW-+$EznNRRcti5 zpcY&S?c%z89MxK?na|{6jS@%OyPssk=$*8MCEoY|0g!|V-xvLAkcLLYC;57}g@`4h z1{tK_W!|+uZx-n1T)Q`-Lh>03t~1LD8Q<UltoqW|`6w%N+5Ub&VdpLoF8Jj>7d3)0 z5<ZcUR2=zLDdbByJ<pM!HzcG{yr{2K0&O<JK0un1F8<RA|9ql*l?M{4)$t?s59pUY z$mpDNjQeP?07i)ZJXlj7(o=r7EM1G>Hvthb7Mm}6u%MrE@eIV?iv_F{30Vj&h_J+2 zu&uTMjE`+ZcF1yW_2mLkZJXZ|Dp2O$Z5_}inLR^(Yb0^V+rXr0E+2>`DIH9zl;QL7 z;9R?C%5Usheevm$*Ij_Wf8KmUQzL2pTGKRT`X_GwD<8fgOyq~47qPf8>c`p_yG^Ns z(|gw!j%jhOlUx3+I{N+9&W``3VyP%8rOXz%yR3XP@gnp)xU+?}e)W}IC#l!+LS}WO zOWWy@=N35mqRj*zb458hCRlaXdr3`^wUu8p8y!uO?dHpf^&@V9I^pFK`kj6rTxr(g zNq3;9?wwDtGW1t*E#gs`Uu3^ZB&oKU%4F)cZI5?&%E}i6Y`zADj1J!fwRz7RwOvGA zDVgSY=K9FbCj$tVE3_duxJ4{14taQxdPe-Wry=xDB_zZLSRfCE^w2mCoY_iSxvCyk zw`ox1NZ;5w+Db+!bCOJl65Q`llUgpArl)A$!d=$wFZEN^X0HHQqg~s<pkpd7<mZTC zA^WHZg@Zzy@9_gXo;##m?p-r;FCov$H`@F|KWS=EgXnd9W!0nAYc62ZdES0NIZH{5 zTJ~kj6z3N0jO(@L3!<G-kN+l4N1F^32WN4OJn=c^eoWgK)n-s*QSo_aiZ2ZVZj0(? zr(GvukYIm&;1Xc7>6T>@+8O$TJnWM^sSf$+*RDpaqd&Elm~pQ;)G_>e43@Bt#O##% zg8qK1qQtkVOi;ZWJYFF-dmV2jWhUEPGN#7a%a1l3GP`?p>H{RMcEd2+w*wjB0Jp=V z{1xY0{{dCRQM&u@K?R*Pb<<Hgem$Op^DEDyWAW1}HB2TDiW|@F6Cu<A$xwmF_=dXY zmRw$i{Mt7GbySW4c|QH#JrCB>N!Qip1uGy+tXmgOAH-NC>EROu?;q|4DK^Q*w^fMY zv4I5Ty?C`Q*wE-+YDH64D$)`<<7NNA_ueYh>b;fMd5_dvD05<UQhorT3f3UEuJ$w% z^ETVx=oj6R1pIk^x%;hJ58=*h(W#ii_nN<r6eyti6!PhGG?;<b;#9T^WRyDQtIEs$ zto84rPKx1?Xd=4YaO=%0Gcp2H-ZOocK99aK{06tQG}DSeqLp-OZ4M-(f-cB!FZ_lc z_y$E?IeTuY!dI{mu#CRwpSQMo@rI}+@xAQh={c^od-iKbXHe<p#iRroi$#J)XKcqn zHx^2PORVV@;`7^)ccQd7wp)dcv62y~Hv@_lN^K<;aNCNVgb(|$4Q%($WG|eaQA2#} z{HrGWF#r?Q$E$s^GM1qvn$1bBHjU(tH|E+Tdmdpn?xo&(CKkldK{d{8T#Ptqq~u=r z^pP#8_4B;D4$s>n`!JiUvsX+noya^cZC8HyIzRh-J}u+QHLpI&5ELpUoH!0k+Q5j_ z$d;F4``HEM@`yp9-`9Ofbsoz~C0bqc>MRQ^hgQnuY;7Jdi6_QhR6c2;b$bJjLn&i3 za+(CRmDHxRq!p_k<yK@29}34kX=(JDFT#c}qs+(5*2Z;v6=Dvw(~>UG!1}I43(>VQ zQfgxWO2^RNhg$I+8RM@U;)S+iE5tCf`+-5o=NRC&#(17GEMmdsV`Lx!H%Y~05j3z# z{#_&jzA`JsnEJ4Zz&!GcPNNScLOq0EQAqU%Y(JqoP|yn9b*V$S&X$p)z7?LyY)F4( z!*WxG1o*$VaQNYJN%1`qInnN;iD)5`7v`eXi33--BA%}=8b1d<h(}wkf2&ndP4vEp z1R>#y4X|Zg&aclr@?wG6Zcd>eX6f6pd4a6o&k3^V)_I}74VV>%b+Thsd%pS7c#4cJ zJZz)+SAOBR-d}SG)1V#eTF*DT;`bTK6<FiJIAW;X>v(5@{T#Sn$YDS9o8N48Z}kbO zD14JeRh17JQ2$>gOc6QawIhlgj%!Tsgy#>?-0&E~e*LF|!UjGBfRxS$(gcd~Nt%>9 zZY6!a-%%CEE4ioqGJ}=u3GVVmvYNsk3!@3~%dkU(e8<zpfdmM)Rh6!h!OYe8*|z!q zK(*7>H8v{;e(ywC+M+g<?-!;>d)%XgX4<r^rLR2UGxPW6GxezrMI-}kazA>nQ){KZ zT{?x9gR|SNOQyOW=UJttzbw=HekqmH864Mt0=uXOa71-(I~EBs$dnEAecNBDf|yT= z0(2jzD^1yPn9XZYBVt)5vsE02elQ09s;|^+RNe!JbPPR59>T5OSS@gLb;Oq8SP~Bp zAV~3d-q}6jHk)W%cPkP*Q*(UH8H7WlGamanxw3Ja&RwjOWJ41R4{u)~bk(UY2~$2; zl#Ki;aDO({MrqJW^U_OTCFbqzJ$lomn3=n~)fY8j-I~8gzpi*)l-N-Vu*g1;3YQQG za*~?95^$jWHn6F*`N|-l@fI^yHIPPYPj)MTxKW6{o)TUtYvVzJ20vBp$KyFm>H%8p zWgU7bq21DZ9bePvWRK;w_o_0?=jdC-4|8m4X=&l^zu2?mSm9jJL2B&Tv~vyN&g00Z z`%-t}yIYSt^`p)_B|h(EbnmvNMgF$Uwt@KJq&1n`rp_aT^2P!s^U^q6@JHwAwkhEu z<D+MpgZa_JT1Xn+i%<Vx^|k%hl(<6}ezHfT_aIWT*DM}l`bCZhdH_aqJ}&~KRb*#0 zO;$4Lb83=>^a2DU3R~p&RLgt9{aE3UA`eY3qYKUYI&%Yb7W#$G7fZ=&1osXck3;Mx z?=Sra)A=en7u329WP}AE5ejz;N{WjRGIM=>=4(N#k$3cV%M%2tLjq{)J09@6Bd=Yh zTDT#M7rLMNEqh7z>AR~jO4Zx%O~!vL?&GQitEmq}XP<c9Dvn2;sG!E-Bz&4$As;py z)zd1{?1KYG-G6^N!1;YWux$ESxWF)3(LekHL6T8r=nkH^&s+{UONj8H1TD`fS?nsX z`=he;gKM_Ltng&(hR0JxyU9z%ecS9E2BY`d)Xrg5w(p2nIW4-U;&9D)oawlNh7Tc2 zoNvf3;9KHDxy|xK{|+HVfD{1x>*(Zy#N$LTII&RS6gzV{oT&Nb{JFbru0k_eE`w8? zm($$!6Jqjwr07s*hiSXdi<n~~t%~j-`f$90bpUQmXv?t4_{Mred+X8xE4fJs8J+vD zx!X&A=z5*NN)otXii`|`G<6LjhJ9btxU*=qU?c_DyS#VS?+@2xk9_v!cW3K$a9>wX z<Q}Ud@(u0gVONq{*@HptW}x^^m4u}F>}JhA!(&FBN-<WC9uL24k>M=`Z~Y^&G0&^u zH1*@TEppsL<|0mu`P!M%l_UpWIC#(M6Yl3U4H2V(-}E@)_p7bWS_w`yU%DVzjE26d zP&k7kG6mua<d{n&u~P1O0S^5eu8t?$rM&MmS-Ltp+S|R<&uNAc=6J!6@P}zI4Tgmr z2HMF&)ey?E0~x<2@ku6)ZpA3Viia{<@1;mspiQM4-D)s|>wGL6<Y=+KAKuv;L#=D^ z`rOL8ZVY)#;Tg-;olbFNTv}zcZ_$0oya{F-m*_(BB~h|kW0Sc$lAq_8h$6d2JKJ>- zec}0$uO4K3!53_X2ZMn~CnbQomCoTlv;})XOMz2)@%E*7q<diN;mYS{tJk^2#`O*E zTaG~o5{X6ysRl<M&~Kx}P+7`E&IsfC^J{m<g#(e&NZ<OATt=B>nlar$S{?d@V7GCo zF~ek!nhM*6ZzL{T7B6j1c;f}YP9b3k|DFw2tRp39H&n8W$UClZlF3Gruh5pz?fXq` zfAo!fvG)rS|B2)VQbL)NkReUq#)Z$8v0}e`MxKYWh1P-8J{u2e74)XteET~Z8}0N% zl|V1}-yxEbQs`!VkC9HHyci<)2^=mpwD!M)s4X;%fL}<oMicUR<RtFz3?>M}j!acc zukjqhUyrpt&0?xu;JrScSc0LjoP&w<5->X<f52k<q3Lug##*YZD0xQ~4_cDd8VKZl z7JuW5G3-aYe@|=2-{6w=$&>AHrjVbtLQNd@=FH7}RrR(c);O{Tug**`2~5~VwW9(x zvM)|jWE=I^n2cZ3<&3|`$B$g@dOIwR?ASe)(VMIJZbJ`;!>~@ujuZ)oCV}p%Cwc@7 zvj-f;5A3f)AQXnBTrWh^`9$)A#q2#Xq<$zDT*2l2W?-@YYb%TSuGNn-TXzQ&Q-BQt z`j!3RZX@A{{h=k6@@1{E@p9xtK?_)4tUGUWwMZK{4U|36_p`d+uE8bdhSk|jFODR0 z?=d27h67uod~~EwETa^IA&p)vu^#0L^eRrE*~QCs&2&Z0bZR`xJ*bdVe7bAO$x1VM z=jAQUmrKy$&*cs;_uN%-3p>;viwt_GnE8(<j*%-NFyW75Fyh-C&Z{!Ty^^Q$i;S;K zG}XvH4Y9(nWV-O>RdO<m79L~caV)NCq2Cf)dO+V+-EIEt<QwXl|7L`L1`x@+*Mh$2 zw(W7WR|iGHjOjLe8zJqONmZ@Bj(c9Z?d6JmEnj^%UrD2(<8Uj4LBHX(_?%`-h9Iha zizk;k1;mXJf+ULJz7Ex`j4CVJD#zZmTb1naU2l93L)(w1b)?>e95;fID$>oAdrXDS z`WFwZcQ-mkiB}BBRUg4EVL?poXFk{2SSO|PmF90<!X+V4H;2?H3PB<-vO&s>lA$i= z=LYq9xtgpud8&{z7jYCvd;=m3yqz!RuseA*7~NY77uzM)c5iWc9-QiK$hb^id8n-Q zY-p77#1{(*=kU%Jvr}?f$Mq&Rhg{LiW4s<yG#DY|ULildnlcP*n`l@qi#aqe^B(4X zyx(baTQAie-k$+f{EDABV_dd>#x}HysGPrLg2WKtHpyiT%rEnFq+=SLmtC62AtKtp z3;144k-sP{K>LG1ig2{M-GsrZpk#H5A(DY-yyKrJ(aiR$A}tvvz%WdG<^}tz*R4vM z#;5Tzp<ZqCE)t;NOuQ<EX*O5PkEa>>;qWs9<qbCr_4{X?+NfrvdqO(hUt*uw9yR?t zMk4VaTOKbM9J>q;`M*MX{;t^A@gA%58j~S#<;=CVuFsNeTWbAU$N%EJ5rgXV_LC>_ z)${tNCabx`bbr*N!2<elV!^tHvnhQ5)zGwO=ea_whyyX@Z<!*j-`7ar^VYxkL_9OP zWrao4Zq@W6<8iqJpdQ{F84&*KdqU&{$z)Gb_sD8Fp&Z3&WgW-x;V6kV3!ngWTqqf@ zv)HDnAM_b5Nl;Fn@%Q&ziFVK%dNCiSu>Vf4*Cyo~fh!O2k1I3_h5a5hU)T_AHaPO^ zII6sV4XKa2!u-5{cyMNh6F}@OO7J7};EtTD_gOUjrlo4(b>Q?nmFw<4i$OImEADv& zl$^Jy+UfmH$YZ$<gj5<4+zs~IkKhrn{KNXP9m+&#RzHwR+Ww03Ys=ZK2>H|}{DE*z z+r<4kw_0dt?1zB%YQ3D@_g)WkribjC=qd--KX37#1n_ZtmF%NL7fxq+_^dh4GY+qv z@*mrD5(LWlp<Lx{Q73;nb@?H3|3Ie4=x4_e#D;=Mq|le`QjbjN8~Cz(?0)6F%}seF zo6MI>4=uvJq?ZhrpxnlW&vkHkefn0)MS0@*d-P1J!a+rEFTQy8S8jjQ!QlsdMk%#Q zkwu4gVE5(*pVg#{#`MfsC6Ub$L&tk@)2*d_@oHDeIN9;{W%+7WcBOP|PP326Xfke= z&v^Tbvc}b%HAGrcpr~|W3Dd#&$L-_1_CD#PS)EU?<Hh>bdLK!XORbnFF#3J>Z8m?9 zH@iqG72cFD7ggi9c7LVzf=8#%9(rYWlkjsf{-mO?hej@cpp`4ftH-%kzh|q`k3|^S zm-Ybf<c(eW34Osxi~Tc3$WA;H5)#rn&wIFHCTv@PmDp?9`LJv)cLtmJNwq{*xHL=+ znL$dw>k?gTSV-x7Zk3c}lx``J_tN|94akhk`7kZfS7MwS`_J6H`o2B*>~v}oGx|v6 zE)ACQE=6_RJ?y^bN6>pp9tFRFPRh@6DJ$Ba^Hp5O7NTa{FD?`4JvE;^JfZdU9%I?k z7$)x6d`&uh-@4T2IglWT!2UXrr63}go#D=Hy{KA*uQFx);vOCxg!t+QU8y~p9xABs za*HukJ199Qf1KXAOevdt#pO#Da?i0qPO`X(I{IZhO31BWYt$4sUoJHmQLg8ZOP3lw z(0#TRC7fu?x<+@|pVm>kPEI^odZLg|U1PUAZEaqE0myac&&EieE}hq}+8Vps`Mhs0 zUM^?r&h9j!@#GiowhIZDuW_EbT`#BDOO{%Y_;uw$7i&lTSDGEPh)+Xq`b6iourfbc z1{+=49#!#!MR_9YCqB-WD66jZf#R>AZjOp`Ry}X`dCUrBu;h)zBFVnf(Ps1k?F5wN z$9ttY+-rU}S3KUFN+!@Kf9bEG6&51i=YN<|nOTmVfK8n%&j<3-H1eyY;&0i$?u#zL z2nXgjm&P;oj+AXniK_{gcq=U-z~%XgA?Ga;cc<%W8QsN-1!Nbkd_KRC6X=v4L*N^2 zCIcSt4rC{D#nsjZLfqV8*bC967s6x4ach#5C`*y?evGOGZ0NPQL<;+<|2|=L`UST4 zRbzx7`c7$iu3R}Mg!BzBS5~W`<c{idl1il_xqvsGpC2*AZ4C1GM3b<C+-t#fp=?iP z9C#Ar!5wk7XYV^s-jFlKcrV2cn+@-a&_tI@i*b<Nj8hN57M~IJ-dbvfrI>WkZYp1L zv{e0>hs+5ddoh-+W`%{>*JN1>3yD;z+Z-7T{LfJ(2|)_|VI#;cT;-lB6^{rCodklj z#yFeqQ&I_CT{gFn)8-e|M067e!l4(lVTw;K<d9zt5sOuuz6hdEIXrBM*15lM>ChTk zKcixLUIaXlJ%;>tT55I1<@J3{d&OeZo=rmE@Ta5l&R2^*J@mNb)woX9X}S9{hPP<` zcA75L53`b#ANAnyF$8S@o9VkX9$ks~`dR&LD^-diq*O&=!uNKPU96-2qd^YCTGJ}V za9qlouzIU9ygfmpGMJB_G)J}=Bi=>x{*ajRmwzoYdhqk?8%#xY2mq&()ZM6-xb)kj z&nT720v$rykoGf;z7g;#8+<0C6;)3SDs&qeE=}h=DktsdWbG3H+bxVNX)kt6_(FKL z)?w7eiw#fI)&Iz7j7MBfN-RMp7Ed<F9KS)I_ma&A6BO*n?Q7Dz{WXqZnUd%t4LTA> z_}v3>c2JR@|3BO%Fqj~E2+T_DeBC$PGSpdCxcCJ&uhEaS)uIqUQItx+#dUQqwce>V z1=6Ihk9_Fv=HoSWh*GG~;16<Eb05KjPpChH@Sb`PWYhGz!y|vbr2HU{DiM+oO5!vi zAkwFUU?a!Tviz}+2`NCdg<6$F?~ZbZ|H$VU3R>6DNBZY?sr!?E3lhP^1S1-iBM4z8 z1Pv-Yi3|a<Oi}<Zg)I0Y-SaLX#9m?>Yx^#Ubshiu0|b%&Fl5Bj%JO9qBilbE<R5bK z*WVUWqJY(uZ;q1P3o6z#5g4?3#qc_2u5n#{)+v6WeGa~Z-V}GKE3U-o5!N07Sa^Tj zM)hPcp2%_ptkpm;m}hN>bA<a}&%zEjYL)8~_)#wzeAb#$plmPwe;O$;h|N?#H~h-A zrsRg>714ZOYB^E3rZ2a&$tryBfOXXf2=5l?goH>-jNswrJ*YlXYPNquOy_dVKqTar zt1nf_FSt1hlA;Bj!J@5!DT9OmfwK|egbX*L$3cK2Prz(QXNW;m{`+o3`l*m>zV`w^ zQaH;osbZp>+jTHuyQtmsEdwocS>_Rc88SrS07e4!H%A&b)%(5M!4yt3^nuh=DRg?V zD2#!tz;!gPkp<vBq58mm#H-lxrr-OAih=1}k}PpYJp}wq7XJ9qemgK5cR@SqIh4TE zK9TtS1l`{F7}WjeVg6yL|Nd8B1p+y;JPb1(n7x0x;s5)@&l|<h%u4SJQw;uJ#{TbP z{Oeqm9Bgu-#BGxE|9>Pfm<3Gm(Erzug*;o*mh1SJH3El-&TOmlSI~#~AG2~RMkH7E z^Oo&v1R(HWkhDTzIn|;JIcUIDS`;xf$&N)KcbnV&U+(-7{~6)~fqrKqEI^?8BRV>I zskN=`0O;8T&Q>n7i_GcpwO%w5C*iu0N+D-|h(t8(>+p2nf)5EeyQ{nu^7sK|6w$pj z;D}ISw0OEf>0z_}8IuSP)z1tMaa~yk_Frz_KavSxkU~-dBDyGn^=c@7xuW5_lw`G` z$2~brgA^3b#?xru>l>yB0;&lqp8w@99w&f_7<qc{G1&Z1C97fpmpw<XG+M;mRKKm4 zeRI&%ktLdox;fJS*R=wje6Rv64dZtoa-se*;eS)mQj`fueOaDF_`&veAg)TAUZ1ZF z^#1ofp2z?R;9F;p!1<pqP$nm!hcLI^`1sBK-(&h`N`d8E$oEBu1H!ie4^D>?+!lek z4f*dM{5jDg_dA<wcpTH${<C1`=>oscS{B~@*H8X^`+uH<?nCCZ`)p%OV(Y&G7j6C& zm?={Kf)cf^EA!#Mo~ul5qitTiRPP<;U$3Y|3MOx)<tffU@IOcV+YBJze+TsNP2|3b z<^L+?IDnWp+(zm1{0}+%uYb?cfSG>%es2G-ujSuw^zZX3R)_&)W6Lub&^y3>#zFFV ziCn^`dKocL{rx#xNH=y*C1JNX7q6R)`XkJzw|h4JNLA+&<c7JGb@%?i*Y{sS^&dF~ zgFFre1cuwAmO=UNWB$+cDmLJ)<|raw1^-WD{Byj{C>TI|a@pa9-~XSNNsHqA^~Lk@ z`WnF{bh*KnR837S@CIn7Bmi`BVN?%}1E$D87%azr!49PI_h<aic_)!S&1~r()+2;O zjl;agMs}SRpO=u+KOm9^xTc9DdOe7E>-Fk%%|>gqjWlX#%lY!${NbecTFzIAbl3NT zXn{9lY24C<a_LO}x*?Ipf;N;IU}*m_@1e+$Uf=Kev0xS;{Uw;-ZuqZ4wof+&8&6kr zF)MZBo)?1s{mM~7QOV&rDdj`}4wF1L`|YKr^S^}W9puW&3YB00B$QN{=OK^h+38YS zxWn!M%7)N)RPr1=uha8bQsru)_d1I}1$(i_&0({VlIv2VrFeV$y_gvd{meT+@Bv*? zUB`}q|EJ6zM}k2bd3yGDzqsw}S&#uwR6rAO5gS)nWU<JEygecus%ju2a5}34jigWv z)Xh}}qd00qK}Mi74I|;C)|<&~wOI~`Wa-o!8pq^ZRCavGy4)F>EL*G{JUP*#QEEnb zIcr>}QY}+=+TN9YJgV#%Snf}CIa?IA$J?GbHxNEZ+Ul6t8_z6OUFE7X-TS<nFCP66 z=tHfVmKMjQwEp_CpPPi4&gq%R<-9LYZ!tGDTdG@+bFxw|O^G8N`aSOWfZM!VM8$M^ zca+8SRQvJ%fE3-1TA<_Y%r~CH-cYmNgtgB(Oj<mOAiLx4G@mY&t=NSrv7vl9rX_^? z!$x&@NbN|Q@zt(!hpzXkGeGnsnEQq`+Pe0oSTWzMx60rnsThLJuLfq<S02rJ57vkK z`!6kQ*2UJi{7CyJ+%6MLw-!FHTknlWV*Ejo_~Mf3>GdXVfQZ7p2M;QQdC$Z0Z*jes z1A8R{yqs|tn4sPEk4Q!^poS}5LoyI-Xh`)+sl#|TAc{Vp{bi1C_$_y3!f<ZH33)jw zjTI@W(7H4rjZm!aPS=1=Jp4+!ol{~$5)%6%PUh2-C_d^lwc@Tg9A+_xa;=`3eBL-& zmKPSckN2@P#-n1ZEiSn!td>(1C)^M)ps6gyd?~5>m+ON#iw@g29~#9bhQ9A;;`pZH ziIEs%nUxg>zdwdFoULS!b$H%Iz3LlqxmK(=odSC-pE>WwuF`2-!?s06Q`mBapO7Yw z`QP#el?ou$f7Lq9%cXF+!vSQDn!9a19eT41Z@y|3+SzTi61M6sQF9f#!a&KPB1v_G z^J4^domrO<YsIVgQ>^0;vPao!Ald@}XR7FtYFE>hII^iYs}+}M<XHb@3KvMgVI}={ zUK{Sm^ksr!2HI%uXo1A|#vU4#dKS?Or_nCbyI4m>lQ5ME<zxT|U)CCK{I+mm)NHb4 zztXC~yc4TcD<&I;&&~F7x9;2Q;OMf|A1?lIxtlK>f>gSTnvxT&YZg|fQLC83Vy?XK zo#b2igvPDv9IgB1@0kGJP<%W*D#biM`)m^ND4Bez#Jv5<+^de_3o6F&X4kW|*%TT< zPNf2wA?_y0Z4l2mS~HXN9)l<2e5sb&s1n~%7$%(<G~#ig*<?;^(mXWR<2e6eGpFP3 z^X8)_;a>v7=}$=L{jC)#mo8<lRJ;b82_?SrvL;M>u@;vG#Q9%F^S&4ox#zxctG{oQ z$j@^Q!ORQ-LY0K5+P^;%dsw&gO-U`r`^BxRONR|ugJznjsA>(omm==5Zo`^h=6PDo z@O(^qogA8kPnLyFmBg@g+HIQ7hziwlVVIx9_UO|JlaKpK7lCGgX6x<VL(>n#K%$WB zo2qJ_1d8=t$UJ3*ycuYO|6sExWXN(c0d3v;=~h-vUP#+4k<}6dy+nw6PFFsSLvV|+ z&1YNe<RiIsq70*Y!&mA*6q>JTH<TZ+dDOohOsI4t!uSak!KkaSAkGd1m_I+obj33m z2pulB$TP6gY0*maqMkb&ohvc@w<G`_WsoVv<6znKo$=Ts!MDe!&17+rWUYrKX9PLt zx5QDX@$EbVh!40dS&gT*D%r;&y}jXcKixe%ps1RC-@xlP@4L2Uk9s7vc5GFiQd>Rm z5LKx3_yoL-ph+yE0dC!I#Z(u=^dCQ&$f&45t^-V^Me2j7wr)oa<#pcuaysmYlXy-~ z{;mbGnQ{-8JGrpipyC{+o#FRIIsBNvqTJM=8`O^_by`%dEmn#YHb_wEcSLy_;4$eH zqjh;zU_QY1fdj4v3@><Ta3RdgdBh!&{IJkv?}(c`@uvsp4cqJAgWEBzLe~Ga<iPi% ziWGu`OR}5#M5XoT2kS>?i0~m779E6HFmRO68}@f9c0-U5>0C~~^BnPIi_AR|0Jt4h ztg@y=QHbeyMr<!$;yE%&v+f<zdm55s0Jh|e4^-F&5b!cpm`XfvJ=30#C9_BO9;w%I zdqpA~Fc;ZjZIQP+FSC_XEzD~*+9;f+`RGmqmRgOV|1pvbA-I<!aXe`iuj3a7<q5o% zF(=9fP_3u#=c*>Ew>Z5Rj`ldHPPUoxGeWD|veo$t?O;~&83^!*lp)Iw&CB{|5yO!` z@;+S`sM2Xpg(ZAC82MF8Hq2^a?{~NKx+ox@$(hUKK7<<m9v-s@31}V=K6Oqk?Cig) zRc|fa=5eh|$c8h!?neFHOF(jWssVqgl$<cV*+r$=@s)jpeJGQke=x3gn^Jzl^fhZZ z&MZ_V6bwuNOj1NpnH%ZmbT)j-p^Wf<N!0=xIEqibETqBrIIkNJokyoo+;PX-Mt;FI z7B|M95AuOxVb028ZHf1V!^bl*>)Jwh@#|`wOIo%aJf3LZv2;?&Jqr1Bp;Oz{14i!p zm)8zKuJJ7w>t%%wy(cA^Thyp--?-Tl)!7e<hA3~GmKdy7Q$JH!%`b(Sc#5g)BYX*& zf~1mY@+~Q!et1>t20ltjqnzwy8udHv2%b0{PxwE+vH2M~;_Z^*jjL}lA8BQ*{3;UK zk+LX5J!`VfBvgx&F5CXow62&bKVj}NUi4A}?~;Vs6Weuv<+~v$bP(cFO)8e;J^J<p z4g(-v!^ol6hc~GcWC@54A4zbKaClQdcG}6E-POG;7|a+~90O6m?2zxMH>n>Ve6t2Z z)=Gh{zU01cDi!Ln+h^KDC|>jBnzE<}F9VagGljnVG}=YT&SvwveVfTF#x-Gq%#KS= z&c8071z9cbVQ5M)qYGu9T$I}^SkawU(=#m+ioaxFjOqyhTenJr3qbNq28ob2&j*iU zo79vn;YbRPSfl2TrrbY3k_p?lHpyiZ3_!m=vCaO5Z@7K0>AOC2TLcYpE45)-23Dh{ zisib13KJjK|2y1v=~uYs40~E;&u_UeC;(kVXIP}K!m7pk`<xhE%_|yJ!;4|Hy0^@2 zr?d4CWe#86p;&U}e5s6xv<0+Sj`4)TJ#LTZYiykk?+`h?CK2rE{On8eusFvby%yhF zDTqRx5Q^R$VSiq(&c<_fjdqW&#-aAYzqnp+RG_6?F1%)Auki9vTOenX2swUmT+(g! zN(RYe$y=%)xxKx%Wpb2ZuB#ti^@Jcv)lNj+=<)LK#9yU7rw8}u$xC(@erso_FZU`4 zWv{Md{i^ucJG{{G3&q+%&T#K`p7$eTdfR=YrqgZB96zQqKNT=L43Po@e8e(GN@~(U zTNG(9@<B$UN9t;3-_lE-A<KbY2U0K<y5%XF8TKb2=hcMY!X>_$?L%=*5}V!EmK{D$ z=M%&pFH3c_J(pc%?gHs)TSZ9J-x-~bZt0}D{g=tzJP!eK9=Vex<Ot{9>UR(*aefq7 z!^bywq!b@U{vD8Y62OF-k*3n#@!9X<$tE}cYztMI{*4k?Y=43i50E_G5b-(umiU;Q z**hTY{>P^gKa|2X|Kx4<ve>i22s(qj+#Qlks?>S%>4v&XtkjXNd2g!NKevavf*0_~ z)yav4CLXlQ(FvlpS!p`ljH-4p+RGo0fdfq?g-(MYjmmjAy3`N9Q_+qE`u7=pZ^OG! zn+X9DT0v2Mecei-RIMh{6uG%5n{H2svtq+^3Nf)p$NO3UWO;U)=0yA1?Sfi3_{^Cs zKFF(zXZJWA@TR9qzU|j*B~<`zB`~=>Pw}8LY-M+b6Pb^C*hMf!jsI?%Qz_3MhA|&O z_LzZ>n*=jtYjy>0wixSQIqCmOS)sX!9`o8=bLg}=|JekSGUs?Lrlufqn03fs#N|Yz z)2^5MRz;;&!!Z~}UmfGYoZ=umQ_TnN9c^f>C!&s$=vz?#`^)<mPOpH_?i$;HyyKyp zBcMe_eRY!KRx3p}^<TvSWwM=yIrbapXpiqO1vPl0%B@jrDXGHIKk5JSS{TB_hRv}V z380B%LlrhXt5~I>dIGlBICU?DG;8co2GM|c#804?EX%t%aq;LZ<oyRpCq}DY3C%_i z6?JVn9i!1^XXQXO*PmCvC=I;XY?fr`QdmFKUTg_9NM`Zx!4@f32MjK@33G=-zr9Mo zU8+_94MCfKRH*?uL8bL~BZpv--K_oqr_xlW<L*Q?8l@ZOsi{;t4SK!JVnDOgan>#! zBK-G71L7t-6QzRjEWn$ZL_jQtdIxTaGO>jjuJ3iZ@}3;)?r3GL>|B?GNqQN!c6U-q zO${SG?h_@x^tY1po7mr8YbEmi98vK!#xxEtAYpXNRosS^vpj{|2)O<feOl-4+?@^d zRo}6n*aU^aoPcmFV1b7R7b0(RoKvjzlVGLdwk-T;)wRchqpK~r_DmO6lNf-5P5ivu zNmA3>Kgm8{D1U>*>7zzAc6b0pf1%@l{0m-gmy$db-?LTREIeo+!bA!8^O1mid8x`e z|JJsY!S9QLku;@awEi0S+r%(&%XB<*dXrS#*;*7~@rs>~*;#<(eC&wbR$^=NTf$5K zVlTO5MKJ}E`1MJ5pS0828t<PyNN`bsb}crmximPS@9aFiZkG7n=>$+&P-OUU$t8sE zmY=c`*tKZ;@;EhMARJg4?10RW>IabSLvEWszZg8N1<tf<kk&#PStFx1<R}dnIK>$e zbK7NL?vahfvzRm01MXQGVN-G=`3|(RBxiwxq75Oxpb$p%&fUrfF4xyq7xPw4KY>#` z&H#i1q70B?KZcBm!370Ita|PFXDrLB-cNu0^q}|P;b9<uXxhP32a{nFw1Dae+1_|_ zW)ms{^>(82^`_X%ol$A(ACzjs@=2e0PZpopy&s=7zSXPOePwKOL;2!07{|>{+4A(- z_j|WIm6pV_^cMB7JLE~$e2eMxEX><q*%@xiDz`44sDq55JdNY!#>~&U&3UDtq$||u z^h&rvh%iCu{x$j1(^>xSWSi5xOn-8?OZhc>d)(xesFXl*guDY%sROP(DQVuiTkK(u zf>FndRKkx=G-H;LTsQk8i;go@=8iO9>ab2$JM_qvKC2anJ+4vjDdi0ds8#9|k`Jp* zw7!S0w<$JWb^$0)%q?cy-x-f223pKo3Ruon&L<3y1@uW5X_j-vlbhN&P%Fyl<f2ph z13^781lQzGHC+N8pD+uR3VjC&IN=xbz25C6)txY>m(zFTc>TZ8Gpji;EUa`R%};mt zu|l>6c7Kc5bI!{^=w@UFy+5GWYo7wTFw{$Lvj(6{U`7#R0eM@(X&}C=;sP%X18wP8 z!4rUR`T*sdWIwZ2E(Xw-3e6u^o1Mc!c4fw+06e#tCw5q+NMMIXMVWwTwghs7ZzX_N zJdsvMYSwZ#FTKTea?X0W*dp@qun8w~IFp?a{j;+A5$d1BGfIqKP~L=$uO7GQ;Cz2H zp;Fu~9hIKH(DR~d`sbRv+;&Nx5jmX}1#k?+umoD!$F(0Jh=dB(;Yl>I0Fo!?gRghA zbcg$}Dvee(>L0|K54BFPZo8MHd?s%$VtPwV-6yqTrdjI=37rzT7br66mp-vq#^Beb z*5nj6TS<2vIK^*6DhEw(NWV^6ag4U&i|YcIdDV(_0~0INiyz~?M|+p+ETc0lTHkBP z#D2lusxM5|mhOg7E?0<yL#G2ejot<{7DDxp>Fzml6y|iqe_1AqlEzwKvt5-k9#SJp z>J}~f0RMGKSo<Ovmt)_xeZ4exrR9XnWosdsP}xz^YB}<aZhZU=anIg9yLh^=^eXqh zod*cwW?F3dhZ5*JnnPSqmqa^|F0MA>J+&S+YOFXDwpJh?;4l>DW6r7nKf2xlIIpma z7H-qDQKL7u*`%@A*tXHwwryLDZ8dh%*iK{H#((np-hb}QnNHHooH=;Tv-e(mt+hb~ zC8AfmlqQx5m`ozfh~W9-9jtYshUyI#TODCyhs{j)4C^C{wQ7ii^#u}XLi~ZSdmTM; zhp*aI#xWJx92;TY{^{i7y3)-z$D>&hZ=aLX{RPz<oCyS@a5GRxQbq~J9OVw=@@K^A z#g!{$1}gq01YJ&kdZG|d93jrysF9OmP@XTG$>a%wxp?t#e$z5tt%CxlwF=+SN<Ahs zSaFZ0y^v{g+J$z+q5kY*=b%=<)^whG?EVHBtV5ONUclw{5Q@v`E|4&sSc8s!a75uo z({W?H*OwZjC<0|u6Vvgjmc<itYkmFKYalUWHt|>}9*>V2tn2BD(*SOmBq5mNyTE>@ z%}iQ;-e3QM9j=mq;`rdDQw4zhy5T>D^)bSk5kKlxYPh|mo{7uVRZFCCsxB*5YPWl4 zuR**<eYrlW<YZ63r>JiSByuskW2ur_T3SQj1UUJ@)EDUuioUv$4Z=_Nh9JcS4}F68 z`d;{nf=;^L!989c;(*t7ra#Ygj+}!=^S(`XBHahiXLns6zfadXX%D3kaY&|dhT!se z@<rTtDSy@?#EIgv|5B~fU^y$cLsEt}#g}*-h5Z5%fprCuK%=bWu^J*=1vx|b!RzTU zVs|86G=<(kVczxjxQU$%!b){Lnr<|MNxpnrrQ?F;aIugkgTuksRH3rKANIkAOe<Ay zYHzx5e5U=mk|V4W$bECUI2xy)?#@gA-2|iIiZdpgdvXcUd@8pcs$>>@z!YHI-pYeU zttzJfcK`Z8W*)=QJh2n_R!ufG`xwKN-?lgL3b7u1`ouhwWeOdsnRWs0#l-ImB;$ik z!FMZwR9X}I(NqTIzYs?(=G!EL+;wgPjwJRX+L5n|T`hNqqXdPq(}3xQ3!6RY^88%p zrK!y!ckPuW*wy|_2&q3p@vYx#eO89>Pl#wv^$P@?jIGvVYrwd;M@V(6$rY+;f6hv` z%N02X+4$c!kCqaew>b7Qo>t|7OBM##5tUSS6G9XUjbz7@MScqo`#cXfNBNpO(SuK3 zmC4*!(wM{WC0=i9yZ~5<qFAY^?vlgK!EyB1D|JsmYxbys*>hLLNnA7nkMwwHq-FWm zD+{$bpq#R|bqVrZM2q|BLb!@zJt+P1bPWd*Xk&LMQcoHyk@9nONDy(qm@>FYX>l25 zE>Xzl%)f?jn=A74IPA*mqJ1L4&yt5isv<Z2Jne#UWwbt<)>vfy+DZ&{LS-<ObnOC= z8RCO`L<K@dUd3uuI|*&p2ziIis7|H*&yrgC6mV%b?PkHe{r36%7f~agu_1hmP<I6p z!g{dTzC!{~)<;N{U2O}Fk0jdRy#in1sL+q3f2fNUc}aO`x2Ff|lvyE!-<Z62M)0X1 z-M8>WgrjhBGpYPVLCsVt4Du}v7WPSr_g#g~7<N5hZU(2P;{<+L4`xL<+FXtmJ@boi z{<d1G5hPI+OI6r}eGE}1yiTOimLegE!~6Nj(@y-w=1hx=+-_ImFevp@&y|D3>mh(^ z2fAc@$xssWo7FF1X#C+UZR@w3#^9+ox7%L=t=o(isf;tl{19p_o_-+tIwgmr871F( z_r&>1^&~iK&ODTjSt&?tPWxoa_;1pmVUT4)I#XH9F!8fj*geO;U4`Ny&IsI>%Qb;2 zPZ!I3Hy0wSXL}$J2cHvPjFf8=pZ0nO<7PUnv{4+zS{JSv!iLv`<;SYN<C<QcIqSro zLE<dc>qpf)V+-MPxmh#k^9#d4R2ZH+`#q1Ie@X<opA9FQR<qbT!j0DlaNRP+oxw^z zoc(B(k++en%MlE<eG{(JYYk)otA6;=k4Gdtk?rAS7aW?b;KQ|LP%mh$6sKJI*~pgW zNFAtT99C~H*}kv#r)oAiCd6?iPQqQ7>VsRZHSx2tDrkXFA7CxyNFyodXiuDCIQ`>L zu%k4xWPxeyRGt(ESA9n;ha2hs7jZ|X^9{Xy#9dknuPYH<S_84@(y<cVRKmP#4?n!t zY?XPXfrtql4HBJ}ToD!+l>J}ce+67xN!>p8=~lDK<_I(olQ>9~EPGw{Du(F$eSy$; ze7l$yRy68anq_o5<)l<?;2bb4m*}`X$>ogBs@|)l+u+0fEoy%EiweSx`AA)>f<|1( zAjDpVRI7J0fkJCEb!RkAz5J_<+mq6sNdk=(Zh7(+Q9tzbwn;OLKA8eIu{}S)w+Fk9 ziC=RY&HUXwWp|5;^h2;#0)yea1lNh=Pbe*ic`xMU?S&!ynAVWnD@IUq^ph|%zfz3= z6n~+^-gZ}*r}-&olbsD@D9<}2@#hofMczD1lk`p8!BAV7RrSN_%l^(?W04o`(?%F? zLz$|{ZTLZaL_lp5b{gxs2gtc$^8`1&&k%7bnaSX+qx=|=raBgw9XKYH5o5CXo36iP z>sgu<AN~XCg;*e9YeKo9<i&cqE<OatLp)K5wB&(k#WZ=(L{=x+C%Q{zF}0`ec~1u4 z>~YVqJU>6qu@E~i+f8?6YaLvn#Hm_ib$vtR1Nb5lfcHkJSbuqMcyyDzXG*b<R<Kt6 zWl#g0aNmZ9w3nW44v>_RdK})PMdu;7fB+JW#KmhuG`yaZOL4nl4X1W%kYTk>HVu{8 z4&fLa9=pHm?S6$GMAYWaO&nQxp??Ty3INpVO+RY&0qe+Z7_72AB*`Y|*5XDQV+HMO z3=Nw@6<p5(n8c0RFNhzG#!^usSy#jp2seeIH}D;Ddnm<EUv>?iR_Vn}`E)cKgMPm| z7QE;WgyJ`4rL<m()2TLymo~egOUlHjfs6nHs1DFVjsWcA>Px3h42f=qGhx_ZTT)tp zzC4wF;I;jh5U<takvkRcU8-Q8M`?C&bY+v>?q>4ow7nggm6Mef-rwqcN4?(QitaMl zU0U+KFw_@agY^6gKTlu@^DT)$rq8ub{aD*hk5`?JHy+Wea956|WtWojTqB`!ktBQd z-0Zv9Ao&^%zjoCw`=aEjc8NKa1UYcY_I9$YEbfG}@ferf|FW>rx#Yq|h^-=l{{HBX zqrDY-<V8TOC#A|*f4k{LGlR(t#1a~M8X@`r(Gl(e|C!=OAZ1(UdZLChEDgSmgYC*! zt57Ug;#>`aQQG_zCYr;BINQ4=yjc<&!uw4$jj>V~3g-N-{lz{mE+AAi-AVL|VaXuK zoSJU+)emC!hVg9sD;4-^`wQTV)*%fAgTDcdY8S4DcqZ^wyU7$qacestMEVKU6H>(T zLlcX}Vy=or?6=Uy3d7BVcE7j*&0B3ln!6(}c)Sw55M_!?8@&!>nu_ic_vibNsdLcF zNDBQVFwx0j5Q&5;teA9j5U34i+FozVIo``1;wYbFf6QoFY7oz2wBj~+GXy-|W)Sn8 zLUr%Y_D*$0xYCb+EUdTZxw|i{ndJWM^$u?|nJY~UnWn%`7T?R0-Q_VJ@QvmGFfl^a z`WSEhb#AW<xfAsgt80BOuuFXN!#vSum_P05wFQGlnV^W5wussKvg|#f%d`M@%i)`Q zFQt^k!!)-!t#aEK$eCjQ97xkJUUFK+ckCi~;vI#>&K}ge1okCVqAJ@XquKe{<yHHg zTb7}WzO&qK%8BHrJWg}L-^g$GqCuM`P0oY#k3(9VZHs0qpq`KrvgPBH>0&&xYg-D9 z_&A4teJeZ~V2Y;-P*btWDwCn6brd((FnTf4+@X~!<%fbC&1TETwM;`4Vp}?x%j69T zo-6H(<z`AGIpA>Cb2+mIY+~6jK7it)!Oi9>a-kDS<z8GJJnv;Wy-v*!S98%&_JZ8C zTJ1Zmv-ucJx>@DFhp{^f@Zu5%qy0>QMq$Gi)kER`Ek)fy>`Wg~Lq&PFzm$+#Z=T<} z|Cbd}fz7ju&TaRr=dbE0rE;xYy-!}R&ncA3WqIO5<RLe%H%H<?cS;Z50V0;0<RYDd zRF|6Av55G490UpIt>rseDN<ZV{us7)i@^~yl^j`q0?_o`uW_!{o2i#KGM#K@a%&b; zJOP?7{1|MaBvhM-(Lr{S>h%Pw4g{i@2Khm~t*1Q~OH4;I*==G%%{r4Hsfm@OlJg#R z@nrYJ;klNz%0sJdz@jf5c`8MTN;NOGKy4FqzlR+h0Ecr<F%C3udq$oGw^Xo^7UJ;c z`nR4T5*ek(osi@3Y@hCHj7M<P`RP%!7m_;cf(PpSZ~n{WQVHbE12{`6TWglX;c#t0 zoi1Purfm5T(p%c_5YpeT6CAu!W@t}Oj5{0!A^!Z~u~Yn;#bPf5y;ke*FG%i#zj-e2 z4GxN(QOv+9($S){23c|Ayr{k~UqAzyqC!X)SP}-u>2xIz5PE{t>dm`&JR_n+hkjy| z(ZTCsRE9ISUhnsR54d6$!Ow&HY5V4(OXG+*7oGyyw0VGakBc(?_}f)i{CYXesBMJ< zwA732_Iyt_TcjEEJ%gw4l{7p;wEyW~x)49^023xkcZgMHz!m)KHaFveUK(Ijhk7## zQ@A^JS5!77QikTF^_D|u-?kl1`8X(aGtA#ib7wKu`d~6!lizCEBRKDVevWv!<~_J| z@j(iL1pBOPy*J&VR1wxO@Y1UF`ROg>t?g!A5#y-wtYArzQntc8Q8Li!X4hirw+EUc zxoS8b7<=)!;e(|iIe|%)AG6$#UcHCa^WB?oq1|gZ(13Aa9;wta=wDQv8h8pSu8xJ* zwWz-jPgNwI(kia*`~RS~l}Ubx(kqule*xGj$%4GCVSY$q^^tu~_d~r_Vyu>0-}FMm zK}!Tc%a^)ppY*2wzC3U#)EG;nBXG%N&({=7A*GImQK?+JH4qQX_U*F+{E!4}-&W!k zfPzvWNsHT27twuIEYKX6;WQ}!TKSGgQ91H6piPd*`Bq<_-S$gz`47fZ{0eI6g_q8t zOvol!$A<hP2YnOGEZTif3|84ExTW4mp@l6RicLW;ng{)6jDku;v)LHjPv|-PsVAMy zR;A3!9{gX7EyRou0$ahJ5CA1c#}C{yZ9TtR#@`+orH3sWuoZpD_fHa!&pAK7iJZ}U z%?afANujo2^-gDNlK{6l!RUF!M811mfDS1PAvy@PM(`Fbf}ucEa`_f7yWhdI$S(1B zFudDz7PnW781kP=f0G@}k@;HxkivFQ_+roM@X;q1*ULjBGBT9CRnSW={C|L1!r=bj zFhJNb5A^oWy|>s5l8F%Z*N0NpC07tEVi(engZzranViFxj0)<^gOh~<@Al@c0eI|p zV>r6jBpP7gW#T&5=em?3`-^saY-2CVD8g*wyCZXL<gShCU}B8B0=1y;gtFb>@l>LG zOLpgwiqy(Wgm$s*Alv;i)?*W@3j{%d#AtNFd&-ZC>7~IcWl;UExc!9a;=Ww|`Lqz^ zOTfqYet6peT)BwaA5Z`Wiw>e?!tPt7HYwIQdGp0i0Y%pKL)XATm-FNQu0on?qICW2 zGl3X9loLYS?dQYmjE_Jjg$-D2**hmg@9G%5UzUslA*T3!2B#{+bRw4<g>a%oJgGsb zjONP*lJe4!2g*oH1k#~r_Bb}YmV0=|;{XG*FypShlbH4G#Vw5J#lsaDN-Uo(F|zdo z?f{3vCt>~nJW(8grNfT=P8z&d1(!exm&C~mwHeVGK4)f5KtKEseN=!LjBqJ*pmLjL zLO_3yIAoB-h&i=GkLhKpK5j9jgV<ytJ^vepjfOC4I8R&}KuJ^}8x$q^Si$C7eY<-9 zD53&wH5*0bM!WYXGeh5xY%=r$`d^C;U*`w#sHh>4G~c29bnm8%Fu#^q$N_{1zg&OY ze_y9huo&;!G%K+4P(oRJzh!>Czd({q=Za!)Fvir2(!ZcZon%wZ0aqZ`wv65WwfXWL z%2JRKHHMur$40=TlGf^9=efrKCwvPJ+f04W<nb@UO6#r|zir^`|LZ<^RS*y=MF1WT zl27zXE#c}AsRg#m1d8rFouj$!U_yo*v6O&*!FY})1Y9Y4cNbkWYmc1rl8E{N|6?q7 zzSU?Cy048ju`JxbZmoeI|M2#cu(=T<`ujTY$G5&UrDu1Wt-H?#^{`fb<~AblukK}v zJaP^_RG>ur%@+ADu2d&6*cg>(lbiE7{mXCCSz!`{`xNkPtpqn_Vp75iXxXlA%ddEN zmxkHO;Oi@k^zyO(7yHlo;@5ZCL<+qmcsnDh0dgeLLLhz>`em1PH{qx(?p(7*%jx1P zGz!`0-wN3(Ki-E6^x4?vsH`Y|z14|?hTn>AB`NwhXOo#9A2d)C`?KM_p@;y<0CqM1 zd)n9G)KGIgUcebpiH)H%I@!y;R-c(TN^rk?^t`{9eM5Kxo@yZEISaIVF)jF)Jx|h) zqV4(g)+uz5h#QgVoPvtOi9XimUw9ayIKXTxPuZP=#Zah0n{JApaF10w&o@WPkC!_z zE-o%H^Fi>}nJg|IH~kT~JZ?WSweSY7ULYQ?A8J#RA-km_s|P8RB*YR%Qb1%9zx?%p z*Wbkou#qUcaJ%LF|9a?1E8E)L<$+(Mo4fw0UX<4wk?SBccdhv+3m6?AV7q?#wT=vY zrVdc{=Aft~>i%D2ep%{weET>+{ca9b#f}EmZL>f>FzZW<fZ3(OjtZ}jxG@IkV`#M6 zNUf~S@GFD(5P;Q0eC_9qo<@W|>|9Ta5{n>>bM=-deSwguGC-%oD&GC#W$@zx>kan4 zrnBr&6vS15Hrn-LHcke4iPX0yJ&C*iRgvhufBsL3T&Lwb8!oL8`qO8hb3tBCpFT4c z|E;TeZdG^N2fN-X=d67Mpq2p#Bg9UVfmP(~)PfAQ*68i)(+Ui;@%2^(Cl&}ucK&?C zr&P6m)Y)AL*|q6ImHB6Nt^Gg`TR74AkB0D)2-l*(&qVZoLRK^1>bXYMPy9sx`Npz@ z-Z_^1Q7}LhgZv0ZfS78H(oY^r#_%7h>U$~02u64+Rs@acW}uDa-%%}7W&!HwW2P%6 zN}HKq>lIi1hV&5=D2#R3z#4JgvyqZ`rs`X=*vv;*E}hRtz2Xv&)<9er17LfJA>F!W zIdWqXlf^2T$?;5Wek9F8c<%+Z1VHFR|1_`zJQh!4{0+)pi4Z$;@&nCv+`ceX=KpQ* zdmn%^(&(Qkg6mumE9ub%6+{!elu<o7kc(db1h}q(REZ5shK~udNWfbq2P>>}&v9_$ z931UQ6Kn3xF`UgH*9<jAritXtgDNptND2u)c^yl8b$Ag=vhpaf30sx%{ViK0Yd}Vs zj@2>Q{fg6t@}tuoOvK-ao1+e(o&x+>D0$rw)`88ovXK5nF%2I9XH?JHNt}OEoV+EG z5GwVljhY)Oam+r=_v*T!Oh?w+w)%S0y`Lp~Bx<ja+Dkmi(klm*X-lrDyV|o%2f_$0 z{Wb?>nUmZq5q+k`z?}n~E)W2q@WIWGQ;=7Y5kB|?OYnx-l|i-dR_#v&#~pVKFJRjn z1BB0iv#Z&`2tSx*_FPhG4Fod3u%|kg9f5NIe>FsMKHK5<AZt~?eGL;Psa5Y%`4GH7 zZ5KTYO;47B1-$0Y+jl<i%N-;UxDTW-FK2+@Gi<Ra7WIsv$Z`(%zwZkOaGg=$jAy!% z0zkuP`Fa=_Hpl>+KbwH|dVD^fLErvxnbK!8;1{it7D$MH7l@!uUGHH#>qEEv!mFD< zqA#yM3Gil7%N)pDV265ZfAj12;Pxj%OC!$Q$o>OX`OnSZBXC1Khp!<45(Jl>nm?Gh z7DMzbC`dTjl-*k`VQc|pK=|mHZV74f=4E|1(0(Y*+V6Joyg`d*lKz>b@q?`G2}Ap` z`(WAI<Uir;Jw)^R6CuoXkP#pJO?R+TWQ9-{w>2te(T?4z$GHq|W(<wmc24vS^)%1y z9FWc;7Xl*BtCz@^r_CL4Td7!LVo53`mXbbKKH>KZ)gb}f6b)zXQ}PY7{J;3F=7F8f zT$z*yn$9TUpX){>K~IAkFnf`@499c`2vuKvN?9x?j{C&_T>a&EJm2_aAd-|w8ikqv z-Qlk5lUN!%lVF&sN@fChorUXlUimj=nL6XiGP+j$Cq~W^{Ip-de(=w|<Nx}%GZx&E z>z>aNchxcDdQ1T~7Tc<i89tWHNb*d_lmVcOwh#dVMZUv@5)wc`kR$-^xwTu6)^pu- zwI9{hA+JG3_LuDiXAq~#?j#k#jqK<SG1Y^(8wQrE?mx^&ATa#T0fWG5^FWkfA7bE> zd7KNAQaS>N?>17rmzNvknH4FS1QC6ZNF<7G$;MM90U=8E_m@Zc!uFS$rp!-o!h7E} zbNWv>CW4`mX4n?z%K$>@)alDpv24rjOdh|mTD@+rk^o4|2%vAwv@2Vc{A~?5)L&X@ zdguG$W2W)LTKqqrf-iW*-xmp&8X<U_s9MzT1z*aS<!1v&jrY-cvPIe1Y<8(;t!6U; za-ozYhoh`kWFR}>e2OcX!4;)c@fJ2TTO#dcu~u9n`ouoEEVHO~W4y2cbq(+W999Pg zl1Rr>OAo~!0P~>YC+|0mL-s#*^vWr~X4%c)Q-VS{QP~qXoo_Y|CQ+;1SP_r^11y!p zfPQpK@_09cqwcm+lF{&w4rVu4^@3fbN!cPW{p;X3AdJy%N+6Zn@vFs3Lxey)>T<mo z9*I<ZFsf9RQ0|u(X&17)(-l=S)46Zm^2q_P5&w_-wgt!Kc@jF1^QW>rxJhd~z_c<$ z9m}^`YdyG-S7ySuva-VDwglZA%>ko{C<H54Tj`p6UjRa2-PW0hLW#5NquB$YEx-w# z^4#_Z#^zl^ip5cqz+y0Dz8k(P4khI?pnWIbFdZy2Suy(gs6WK$`ttY`>n0!aN5f!@ z76Eb`957)O11L868(U=2cALG|W>Kf^>0|5hJ66>{%GKhzB{BVWY-^-$Oyg-i-4#z` zS)wi_DpU%-YBswj94b{-j2R6@`*3n{&3YQYLQJwUUQeI`dw4g({W;=r0pUnmM9BZj zSyU3d(^|+#f{j=M3l(Xwea8S+JBII4V)5a{YT9OB2q<TaP&h;)N>lUTw(TjN$P9HT zp1aM|>tM-YD4p(;BBinrPM8Wxyi4oVPoE~3zQ_|a+^y%Gqj(yp?<DBrEztSmlU-iV z0$bC2G%^uGC=?Du@g>7b5tx+YTfZJz6iDq7*m`(@(JbVuW#}m16oT9Con+p!dyKCx z4TSJEw~Yu`$%j+fYAaZkMpUjZrpX*M7V<xoFa3_mv6XAvDjb)|uQ71A8TtFe8QN|T z!{ja?$xMW~cVY>Esiw%@Sh(vvvbp|e_x)#)@xF=O6Ga2#lQAc1v4WzKi}(aMT`vVB z<r1s*MiTqBp^V03RmsrBbEo&dPdtb#7wMn9nyNQ>=3a6q)(k6G$}@9qP>OB}*uDpB z1n`fDc388;l9A6kyQ>{<nB^D|N1qM)he{J^ge@(t4z3@rsASOcaB-F(W+Oxm5F#YI zk=^qdjK<|k9Z$%GGdbg#l)qDIl^~C*SK;3W3Ypd&EyOq;UxyL>%oFpTj`g`%eR=vg z7O=g3+U7=39NGNeE&ktu3-}*YVuX1*=%x;srag;6JwcP6sm}^c8mgw#<&7XGh5~8f zsLcC-5?X`c$(%1=!w|nIN!Sjir76)Q=Pnmm7eQA8^RFl33Z)(Xa_dPO*-7kD+64kN z70G!*kEC<ETVYye8ML*>V>rl$O27K&*x2^taY_XzBgcSL2I&Q#<+$j%20$ME6T?sQ z@P%4C$gmEvsN5Nx#RSk*-X03t8II){!@=3#ooa>xg9a9nm8i8V!1U6Vx+c9|vjN@o zRL;Ydq(x3C8H;spf#gAV3PZEqdvWzYJLSKAhU5S%js-+znjLb!zYAcBwXlU~NX_75 z2nFRX0{5sjvlC0vsAarKU)Y49<R}2n4WDg1dBL4}tMw1H8dF#<_h*5CA_U?0n%k~* zi&Y`d8|GxCC5zI|eXB?|2QX(R8}TLn*RlkiZ+E0{cfij{(nuXIFy?uAh2qg<vMYBO z!eTPnfJnp-CE|o5re+z8$cpVi?7d6tvsf%5dPHIPFY4pC@yrgUcFpn@gco@2m5b$* zGKj#?n%1x=Tvp!Vh*k`%zkd(zviU`OHEC#QN>ti8fj()N;bmg{+Mhe@DZSm}#rP<$ z1i^cYzwKQ0Is}c_1Ndx?o8T79?HQMQ!@|?5@s4(OxpE}pQ@s~k6cuqu7CSYspT116 zz$s+;Zz1PPrX|jmtKIap5Lo~o%=~XPSnjy(QV_S{Qo~*K>UEZq0G67=_^Q7)`Xc&e z0PxSBwDS8hS${OIxcFzIr&!=(vqT%Cai+=RiP>VQIiZ)UUDodlqqmi(IOpiS?m6p6 zFhh{_-8rDi;K!qZrHdGK|1|Nx3GWARFvP0D<o?7*E<{M5uAaU$u3(jH6Lpq~E?a&w z=}azZJ2aa7<YSEIhbtpW^&0ScV-;;h&2~qwQO)LbpbpCx*oqiN#XR&CEJ$Ot7;{%+ zv@`X->}WX4100a$r-()O`vCv$W)mXQ>AGrA{u4Zgl+!8CFZ4-$nMF_^Ti~H8{hXJ# z)D0Y})#iiH=EEGFN4x82H4K;||2iNeyG~$n=|oz{J7x%Kj=&kF$#h<~m5(Gj&}_+U zGk!>4L>}hBeY)lHnx=L%PUv;pP5sL~#pd=(Sbwy%yy9}S<Y2O<cH(p}A>{Nuk7H9- zBa#8-c7HmkKr&O}K&1}Wd{n)j(4~YWW0=7fwFiwxyM)q8<-_WjF8TIuGMhyzWt?we z>kPmD&+4e>ZR@{*u-ikH$J2!pKs^|a&XwwVd6P)3mIrQ(=q<RCaQWv;CT^x7&1Oe~ zd3GO_$UqoY(zZ%J1=!U+oqm!0d_|qn0Gvac^K);{-yT2Hxnlmm&Gy-BUaz7ps^*qM zt22d>IJwA!adF{p^iholwT5*8pDe_^^i_IM37UvtR{v41{{OzUX(;4jq&R^3i$pm2 z+xQ1stmO44;ak0##>5CLxvN0feZP5#(5?L<ZDbuD<y&(e$bPwOtq4<7B(mQND~<e& z9SEp|?xU%!kxw^rgbVufg<_0w6U9&v!sBj}osLkFMIn^<I&0v>nbqcjR7LdsH?SE< zWK+h^cLzO{dX`peQx^<{6mEvoTd7!w^XI{^vvn7CsrOh@x?`%p73PT<yD!3v<xK!{ zP=y?OlM;n$!kg2@INP0(;zwZKHCP6hlT?70ND5&9dr}~mJ5!6z73tqr+knk;dU$=( z?u&^oKZ-D~ss~;EK$#bzh<%c<anbu?Z7S4^oi8DHJndcIE3{e)di9zroIfj<swpau zhX`(qU>^x|oRrL#Cj6qhLNHrvpr$rD+v#Ao$jSWsk}3CxsqaZe!vCBM+gh9NCoiLt z$T`pZz7-q|Ugb%_*M7pxbs!SM$HM6n?HOjr6C9M#_=a{daT7d;ucHdKnY=k7T2x~= zQq+E?-r#io9$XT^YYLoXvMJtc8`}W>T?cd(+PQulHe2EhomQJ=xTSWZN~Jt41I1lH ziu@@Z#{Cy{KD;|OV`dD!FjNl#u!#fcP$Vzk92f^+$EjZ^txOjmM=U1M2aTF@m_Qj= zqThlN0n@yl`>il)BK@<t2$JV0qDOwjoUqTci|8ZMz;^L6IjT$=lcj{$SPFkasba1R zwq*``$EvQAHI#ZbRKL#?O^@i6FDN{}-TB<qw;CJmPga&bgrKZ02{4##jM%=H`Ih+m z$OehPOu_^jy`jEiSdWzZI$6S|PuZedWZ&ifh5ku&DDwBR<)jRtgI#2e1-cN}q<AlU zfP)bABV<3~(Mv<p;*f{Q={yKAJnCPV2)YrCl`}X_;Yw)>9Bz)BVA#4=#IL&#1vs9N zj3vhcc5`j{^q=)@_JxPXN<BvpiPQ3_O=rmC$z!zjXyhMnF9_7CNBx=^>5s1s#qf%N zIuIe6cM(Lwsvr^KO~&u?b0g}POk{ufF5x5U&uV3)$kBaY#%h;}%=v1z7m+kT95a<w zb_|cn8og_`4@no|LRB3Up-K-YhL`>s)w!>fmC_2dvV@Ez>x$(DCB2IPQfHMA?9%H4 zyn`ZA!c{kM=F7A+8zV58!_}-=p+~`Z6vGE?<Xa!6*Mwg`|F>)5?VW*y@UD+?d?gi% z-VncMYf|3H3;^Ei0*g;~lfKL<6`k=CG)qfLF!53vhl}svRzlMtwn4@FN4-p<bC*;7 z>*N?ONo5l|&5V#UtIc|FWtXQeZUPykuR`TeqF|p<i{{$ycE`^pFWu^V!PiGWcc|Uu zs@TU4NcZyDNiy5GNq;*hY@B1bu?E%zci90pI?4CoPhUW;)A{1UQEV&z{?!v}m)m3I zOMl+-G}fdtxFrd_gNTVrJ>8D~D|+^(MvRU|ChYIx1qjmrRxEYCLS0*8WC5O3LX@)U zFVbY4Uw=x`v!uM+e04TJ`NK>ufPzUF1DXIz^wD>XW&u#*kK>LYc*WpQ?S(YuvR;}F z8Cz8OftsYVG=MrvPsDwHr>$ss_||Ss+Q-u$ncs*#qE<mv?FWNO&ReV!jXIn~gQwZ* z9Fvzx(BkyQ-3CLfR(N5R7SWc=W0N?$j2+9z09AWI6J_(-9Z-@HuIhidN2O&(N_g=_ z%9m_)Z0c^eT)o)yZ?hVm)_*J3&I%~}z-oXZk7#@T+lXj;IZ`x89*n4kEXVAQdph30 zvNd)7m5jnJy6I2)Ps@M27&4uN<bFchS8jW9YSo5tOO5uCYKyWbAM3F-{)H9i-b-dt zyiE)9$Pk2;8c8hIqg|oM$Vk)nouT+_EiTuhQ*3N(V~U`X{l!A~oo@;v1`<^L7hcNr zc=D2*NhDZ$T{(gjn0HBpF1D%T)p1PU6squn$v@&ZS($DAjaI8=D8=*QRHo7ybo@|b zga}4P+0MKjo+VUYjJQw6s>6;L%|)PCoo^3!hDAYukfk-*^XbLuQGbPXb}WS7oJzaK zKbD=N)DiY*zR-aR6CQ)kx4p(%Be5;n?SX6%#@Yt^UwHn%6Yd3)kE3)#Un)Cj1|D4` zuJ7`{8m@s4%~$AKgFQ8ZKWCU!fuz*@z4gofFdFcJQX8JB-_ZoMnQ*MlZD&-B;Lq$a zc}}1n6+XE?>F+)Rw?8^JbE^GyjMs{hL|H$((L+h<Rv1(1oiN>ACV(Tasc<q8$BJk4 zJl&Ndpuk~=srai^Z}11A_trVhSA5v(^K%|4l4VTqbEcuG#7h(t6M;mu59lEN17m)3 zG)uGy6i}jih{6$==jCtpR@#S)<!Of;+%N-rJ41>2c4X31>P}85?R;ZLUKsJ{{aEuA zB%;w|^GW*ui?IQ>?)`#<;G=>RQtxr1l9utzJi$yceGA}NODsN}VAXU4i|s}xPq|67 zaQ{Ns63*48NKkhMF*By}gM}_O1*)BES|>n=QF?bytJjrB%FXUa3^-h8f>4`6vZ7}Q zJ*;*1lepmBiM+f!6JYa}Gj$ZAQ}wFHvuX``f-u+U?r1)3{`Cv}kC_8@s8q60XL%BD zt=AQ^@RGsM2LtiRPEsTN*wgL5Le`HF1kBskAK@tpw6FIkMH@O%d9+$P3umgCNiQni zW61x$&jp^350RA?vFmD^#M*5(VYr;GWw&cy=W=oO;W%OGNMt$o#qzSJ$EvfQ+kavl zx~to3Ltf;e-WX_!A=7NXS5;xZioT>{gf37nmqTdp_wGd1nFf&o&T|o*t8U90`_QlG zzkWx`k}K8}#WTp;V=jCrFpxYux9i*}0bYGJp^nX@Gq_tfFzz=A*ZS+<D*6l1>1Nhf z>D~=Cn4}VYN$k0dqlv&>Th*3|wu7MqqUH^g4eDlVwtr-&eB!+AI%e9xZtnP(X_o$H zcVdDHR-xjn28C(2=e)dO7rMQ1=XGQESBfo8#Z$V_%SlnDi!M)J;c$6AhF7e$^V=nr z=Y$_j$vlAi2H8aQZr#Jnm>~z|+#9KuokZGOHlNB37K8Fw5VZ+91O3qtfwCL$8|g#Z z5H;7l2)q%8LZcm1H2z{*Ru0*%M|gkOtBV?a^I1nyAkj7BrEkYk({(VLo}$rUI0f)_ z*;wdq_~~FaU(g?cxi}R~i;7T%0k)K6i4pzUKKd2m(|;=^A6{_AYL(0BbXL2_f)Vu* zt=?jj%iyk=-;S_D3Dhu^W%hb>tRTVND&!iPy*!CS5ls^!i+uR<4&J1$><FYkY2V0z z6nwNmxG9~VcnCFJ6h}Qv+}e)!ABGdp5@4uk5nla2>r{FJIRkG54KUK2@x(nYq!O!; z)r_G><sXc~d48Lbil@d?Di$GV)YDQYp^rW+=3@UZHVFWe;c2WPW7@wFxXFT4KjQ;- z)v+tCZ!!Azm(L`aGo{~v_MsY7??*~3Rs=-Ve~M#7wADJkq^`%~AWXnZXP<;Ye(Sy* zuLCmC>4c+sKjcV3+C+92)@;symLQ#+V5soYx~sG!RwxT$_f$cd2sE35b_JzUH^V#r zpwO4N)e!HpkfH1dBlFj<6CeO1X+@mSt|{!mTirD|csO1M|3xO1xtW(mbZ}5>G*iJZ zyws-Ol27CJ%G<dKemGMp9Y-dW2Ncbde<r<T0Gda!mS&IY9<`^9y|EqmB`TFfR2C;4 zYX!hEoDQdmgH2Su+`i3dF}|!bv3Fk6I$SM<FIVm0=Dmyc+V0?J1WRYIud;gkIFw4l z(6l{nRfN9R4fT=Qv)UOVi_^)cVzrt7g}qTZvzH)4FEyS*;oqVUu{ioBvE=eTb~qC+ zpQEQok^8S!vxWND!eR;ZC~O>LP#UlUh~AyVQlPc0xS=psD#Ds}6W?mU!0aENbh313 zg`mFV`7EDoFeDXj4<T|GtNEWR6+O(bgRmjnvOb<fkALiGz|#GPlw;x=198dKMh~Zv z#nQB7^||MUVnEd2$D0em`Sm$KEtFc{<LEVU)yvrmzNa6(Twoo@N-0B<?bli*)gSX! z=nhx1+nUwl$z{vzXTAScs5VAoG8zAp3dLW@mlww5Ja6<)um%SMV0v9D-wTFUs^#{( zUzezf6G*$Mbtf}56cH)hVe|$P(jl8<zsO~C4?){0%QS_1S6G#eQI8`p&kqcm9X5V= zQ=A20-@orVhB^8`ZtqS6Z%Uev@GB4HMN%gdY@qvAQ@1jpe*#b-X9AtO4T`!6<RvUZ zuo}n#La?yA^PI)$I>MV0FDWwirvWxN8AOQx18_m$0|RWL3eoBGil}Y#{vb#6(Vwtl z?!DaKUl1jfDg<b?I{$!8V=hEKpq~Jo&qQ1O02eXrb<=l|v1xs~Tluiu8{HO}jAfE< zJe%<M!>gkYvss?G%9YyF8@X>X9$Z#;MN~>=`V(6DqgX5~hm$Q)hcs@h?lVrERzhug zT!3ZHypLZI@1$Nlk+$c%=;Ck38?Vy=^>TwO!1AS#ETB@Tv_W#czOSzM%F!UsONMDj z9^yA3En7Z>vcSPASOh`kF;k)uQ?cg33-^47z@Q`%io(I%=V;I9W@jJHZ}Zd6Hs|-n zrmU|&6on|r2xu;T%V4#kpV1eBxE1B~*QZwa46gs=4o_$L&kS=ur`j1A3;J93nG5!U zpUTkJjM~4AkVJq+rHTbiZG;7*5n!AHgF=#cSxi=aFE4EODQC?lVseFxZEAO$#R27G z2r%?Ap99E2ahZ%)6r8Ahe-u{y1%~G6DU|&*0i7|9K2|%Q->rHqWxJNkG*Py>KggYU zUELN`Q)wZ;<P)R(MATgfj$yYN{t$5u_v&^Z4UnBA1HxYTP)ZeYDW;$KpbiwFCM`1_ zVfO(poI-~z(oiA;i^ut8&U!!BWfa}@{O;&XEY}BvRmrr*yiXAD2NiDn=ZJlE&c#y- z^@h|-=kuhR7>-oJIzV3Keir{LheT{DTDRvxD_Q92_DmT~rOl8!B7>Hov+oPsW5(@s zo3fMT6<`cj;Qkq4g!wO3Ig@~;FN~@;7U{;F-Th8iZ`A#?R=Q=NyvT&QPn;*v?i+B= zRWV4XPGc%4q`fziCY?W&D8F?w(F81L&mQBy>(Gw2<fsQ$w<}H0jWX%|b}I|({nP~N zYK>;n-;~P>=us%;LZ%Fifveu`yK7B$hJwx&Q~Z}~LoaF%z6<vA4v&v_uzeC>L=dUj zBA@O1d4J#MB|d<kx7F=UDqwdKZwlzx>~G`>H_IaxO6+vRePY}j$EfohrF2;Pii2qV zaMLfDRxD8*8_z0BsL7$v5lOZF4l^ZEYl*luSmgq8=;>I4VOXWCM(dc%oV6wc28*@2 z5XwXv>A^TMd51S(dJWW&hwJV7!|^*BAs>fYuE448m$8v2i4g53%WU;}_q;f)e7(Lw zRHD%k-`7v-!DVo^(};U|Y=EsA5RYK>RP>DBcN~G&%F4<b&6ys8!9XfnlyHAMID+=e zZf{K8{1~x`2xw~~&Sgp<MH;L?it0+AVfO>137sSGV<pBp7pPiD^NNuDum4a`i6c$G zi)MFN9UO^x<qm{z<!50WWbs2759Nh0TJ%f2s~Aq@DzK#|(voaUZ-EAemgghaG5`3g z2L(V9FL{{?fHCgQqqu$?#Zr7>aw|3Qjh}lBxgN;0)U#8)Ztm}1oRh>dVF`m}v0Tk* zdwLe&Dfe8T2ZR~&QI?wf3o-n4hO^LWjh>&l?(fz*XC=53n{M@`IS#HK6U31@l&GLB zSFBXY@t9n{I-D-VjHR;*S*SJU$x;!Ag&=Sn|B=DuG5m_dW1EaRo+V8ZipJu?S!9gq z0}OzR4en<skj(dUdn=Ggp`W@=@rp%r(+PbiH2`|-Pxhp%aawpU;BulPOp$mhBd>M^ zu31yn`%GqI8j5c)Yg>fw2g@9%XXRdAXKNjWsO9SNWRWQzr!%65OT|cG<$l+tSSvJ2 zb&zYd-wt{wiLlpZ19mUlbSnmXA^^ii@@zM>ffL+`4m`J^&s>&Ji?;jcy3L+fUo2E= zQytC!@;RNZW&`4h65X=3Dp@Fd5XAHOtH(^E6OHZ9O73I}5JGl^x47rwS|N*pNLD1a z3M9;!z(U$+R?8=d>%vXJFgajSL^0M{M=5J&;dNmO=d;;LRkmZ1R#Y|GZdFXK!?N1z zF-q9jraDi%^5xDTf3bXijuLh1bS5u6jH2M{8WXBMP`}tcs~APDWhACDS>_3FP`ugQ zY5*Pu*_W15aqLX6FCGYgn?2ILYkYn639k#nAj5}uDmSoQ3%+aSv~M1I3q;#hOpTow zlOy#I&2l<>E3DW!dVA>ty$El%3wlTP-&s?=Hm(g)e0OnepXTDN>t&h<(gkZs)sX7d zgX|AnV@Ur;OVAE#!9habj;wr5iceK#YCGsxFzRkHB-6!azoPW&s7Vwv5PbmV8f5yr zFd`S?F3vg3U^q1aaIz6cB27*Fd4K_9Rw$KK5YrQM2~RB@I!p(t2@H?b1ST$vqr&;t z)~Bl+%(r_uXo&&EOE%!rA~#E!5W$=<K0p`%)9$0)_-`+OZ#Hv516gF!mh7I-{$lus zb+WXd6TT_t01)#R`ENQl7n{ebqlCXyKHnxj-88;U^50g8#gW#7te7np`A(MV3i3oV zJ~8*k2>u`9h?jcv)pS6XW@5W`S(R;@9~zJE=??HEe*uOYvU`?)P3|WMx^AnJ+EU_b z(SEkKy3Bm~g5eiTzZpQYSx-0I1D25tIYD>}^hP>W6ywIk0qcD#CGp>2@{-`0w-(EC zgkJDdz^SIY08@0sh{M(u4rWnuzp$k5r5*aB{SdVlV3+Lyy&75Eig#<N4p{cz@VTw2 z?xl|-sJ`(Ej3hv~fZ*HZ02}jWrOjVwcM!oKETvj~GN}okfylVhBY9ho!y%idPux|L zhcEr`EX3*kHc~1}x#C78O7+m9whVNL!8<+@Ph*;OheJr$8$`XSvmfcI?4HJON`}EY zUPJL;OfP>qAib%l(SCHBQd_8lfK4@i{&RydTconutxPbK!USWndc!j4M}zm;8g~5V z%`c!Wp1k5G+q8y$>_8QAK@64uOx;Pv|4%sueOoS?9psAZd4QD0tH}JRXTiXDd(42F zmFK;_l=Mbr#B&@n&<DyFLrt(X43+A;?9D4X!0BESpd&(n<OfqiiV$pd9>g`7qZhSB zW6iV?sUQitq%r~A|8tmt$pAZ=gxK@jcvYIq^>C9ULQ?77DcV?aA72Tu;s=vjmhVpG z8%9!mO9JTuHifm+zXTjANYOu=MKj{Qu$g(#01HS%Q7-j|-zR7bJe~&^H_StkjyA}z z;z=}xv&TCHs@C&K6YxNM$+pt&pzx8}m8lEPaxT3=oSKg%@q}s!dHtPl3oL_Abs>X# z4ZD5KfWbQ)7HyPRB6TJBx%Sg-wlg*dq9Gd?Fc$6Q$BbAi<G!2n>&dhP=W3Q6D>R}8 z<8VBkpKP^wN4fJ_hmKD<8qfIz6+>7bF!`L85>x!^5}-Mb2{zlDrGn?_Jz`)~%CpYa z`K<q9GhF`@!!hvsz#%CD=Uc;Rd%0q6;Gxw*Fk&laXByDO%Et}fr_>+Vg(Q~VMOz{$ z^6}VFDNhYyrBVtB;2KznTrx2o!tId4-cmG&g$chooO$iCYXavX$Kw83RT0rZL>CHQ zd*>b}6jAi!#g*7g9dOB=4*k?>2$&6hPiGSZaqoJy66#Y{nlC=ie{s+rT7X8i-he=T zaIo0Uj1OX<-2$)qIVKUdJ1XB@4QTh%{H>zti}k6e?-)H#ZWHAmg0QN$Z}P?)pRJ{F z?Vrw#;wr6>Z~peg&ddB$1|n6H3TdbbmQ<nTCtT@(h;{sOo$yxcgt{)Pp^45NtwTWE zmHoTr3x&*zrds+3!O#{|r}<6l?*YFAVUTGA!&>5Bsq^E(2%r#%{a^Q52C3o<oN8MZ z@7cy{7h~McR$Po6Yp?#=jk`#$y1fhz&;(ODH_IHkTE<iJgI$X3_I`3EE$wZJxG&y+ z;tclmLJ&!^Y|o|`&Xj|8A~V$*ju1nW!rpWK0|oO@7$KN;ase@;cBWqyHR49AyCJj_ zA%kgpo+;9)ETQ`PbU;2Em0DX6OWA!Ov)dB+k6tiW%JiO8rp|0s5zKScBiZc~XmVjn zF~)-r{}#zx<O_|svs2eJy5rGpxeOT`jgW-f{PE!pJl)|`foN_)*!O!wOY#lXZ)O^3 z7r}Jo1*(|0-iIsIxq{<*<y5N#l=hp%(%;w|3s5hA;CZQP&m|fd6;8Yjbsw@U3F%SV zB?dNi>eo9}W>QLB-HXPV?AF0wSdY%eoy;MTD^z{>yVE7zMlj=Rm|PMiL+RSme`g7h z`DaNrasmEuRnoJu2V#9V0MfYOVj+5=U(o0lrKLlBWG+)LoGX8*4Gu_a>39(uh{9HS zD<p8u`bqP0o-B`kN4+$6hjo;As(xJAlR4mw^YmbJI9H2yvfLI%Z#WXHsYmC{ONiR) zuJU_2jXMRqo0}KgPB&`k(cx%6tk@tpGL7xa(-*iG{fG??mmN$vq&i1f#bOOn#V+p@ zk{+X44|N*Ulr-6LS6E|UbDJqp6dy{Y{?>K0sL(-GPxd4-+O9gZMtAb?R=kRju5TzM zkP3=W9qDWHdponV9K`lyWx+k>+b7sD8QG|LwR>IPIsN0eQM<8y+`D(F`>QYJWFWr* zVcPiv2eN>@R^;zq#@0P{qZ@{1=OZQ;ChNkI{FAg<>{aew|3`#z0?^h@3J;xw@un1n zG{gkqnUVdap5Eayvx@{P>_IL<uoAf5aWZmi_)WLfz^TVzViM{&`k7i=U#of4MvzP_ zK)dDI4pQ<3A3O9>Ff;4B!zxmmPP|q<`NHUM>R#`%omXt1z;)byyclH4Vv*kvk;)kn z2dBYu%wv6x&SbF`LOE;2M;=vN1~|`gdxBn^*Q1vj-QGT)&|ZEA_vghXicYSLNupGY zo%8I_a^WKE?XCFB6PP2jQ9HihnayvCrPqAAt%{gxFccpHec|^}uZzz)kU%2R>d(y2 znE)f&RvdzE0%Gq~+Iq~){&NYx4IiYz<`E2BshHL;nW<GkESnsZ-#}Vb;1}}hK5Ue| zkSRU)pDKVNy8cm5skpD`?J|BOlVH$i3I>GhO_f#%s1R)3AXcR_o^&eF+DrGd3{IEW z^$i$))fdkdx0c)EZ1Hr7uYpH_KVVf>IbF!3KO+z)`T+(#Z-}w>CQ1QO5hkxZ#|znq zx*Uf&uy$X3(C(-U<a2>KL!E3W#cX`$w(8NMB+?VB*LIZQfg!RdVuG?#>$6+I;qajC zHHr8AHIUyi^?nqpX+2A%VX;U5gm+G<Rduh<kKwMJ!S+;2Y3GgP3M8g-ePqlEHC5iX z^oD<afzGqhBik(f8W%B>7EOL!1qSfmW%g+P97`8XIGd=zIa#O=bA0>FqT;<x9DY7B zKa^&n;7AUJew@OkAL#QX5z&*B5cVxD!Fc3s$tmc&X~-5F4$W^0>`wz*JdtMV^RcFB z^Yu=DzpK{yec+Q-ab29uQ>gaq4D-I5@mlJ5_ISdh#>>(I*XKaz`w7883ocHJf&|9b z=?b>1SzcyEq?Rz_hPOOL2RT8a65KE_RVc}C!rHzLICvBr?ZL%U^pFJ_R{Z@f*mC<K zATJd4tNY<9X1rDhKDO{!lwP;r{QFwWP|g0Q9_CRF=;7h{@<J1RVMPCISt?9^a!Z9q zW(Ui?J}8pY$%*#1uLCik3Gl%;Nk8@?pLSPkD3@vEgJ$Y2rc)ct{~CHvZVcZtT6PPl zHJR3f9G+_Kj$`x1XFVZxVD?7yKl%kl8y(P_R>2TpCfb!L^_rLWTu>71CX}kA7|DQ_ zfD1nsUx?H(xgI;0DAYHDie7g{j`+X8DpY&J;!IHE54+%Tdrt3C&)#8f4mloOCRF(A zqxKv&=I4Ufu&!p?p`mX06+-p+xq(UFq1jP=?1c!dQq32V^c`@MLLI)gDMnQPtp<2| zH>o*9Djtkz^|2KLw1Ge=-usi;Hej6NvXo@R-NwNmMb&j})-$Y~5Vl_czP{8Jq!xLG zoYkt<NKYIr5I&JFjyfG(88o?Yfi&YC#vy&O)@a1SmNqCl(P|<enX<xvgXYIT6zEaD z34z7F?fp5}I`I)_j^Os?8mWBiBk{9gC%zrEp&5mcoyy7J>mM>1!0Q^5`6unb=hF&K zhL}9d-g$l#Dz6|jW}9R5N7r8RlIdSDsk)m3clx#CJcU5YivU^&GFOFfn7bUW5MOuB zj%A;@xb?18Zd@J=Z>bJfTN($OSJRj$qn>U{0hds}Ql$zB^gKVNm(~zyjOkoyZCnik z++g?O*gD+R4rN=1<h+NA{yA!O+wQUTJ#Z@F)aq!kA85G8B7C8$agmI~h2q_7;^;rU zHLww5>HPKlv%5V)s&MuA@EZ`&nckpKMp8svM*0)&LPM{-A#C3qDU2VKc)+Gr{iX#3 zS+<k;@P$CZ18+ZxHoctudw4~loFUC@A`mOUhHoJ|5W?%N(f+b~nJBLzE?e*1t%~iJ z|FPKua-Cw%sH8Ft$q*!x0!Qk!0Mo{&&g^(HWw^uX{90X(1_$H6zGBGV#8mnp+!sp% zmfn!uo^aS5(*dTXl)B?7>f{2iB&xr+0a&}|E1b&*SB%XI;|F8eMl`KnT-;OpokPXL z*+M)VE@W3!uvjMo+!8jwJ7Ug&4NaH}F{_WQIJn)rxV`Jy2R*n$6s)pQP4thqGPu(@ znsKDFR*v_!DlZN8ykFNh+;I3BlW)MyUj#pnokI(SuixTu$ZiS2LfObL^|XO~oRRZg z1Q;bUa_vbHn%^K>)ykC1C0{tYTX<P(6@;{LPd4oQ*%3{2Z<eR3ZKO`q6_lwMKf2K@ z&i!@!6Q=(n)IflN(_NIz5Ud}C$CJH1$Th?3(_}km86^Ly{jHpiII=E28CL7;o>T3q zsb)7>uHO~RjM*xil(ahuz41df`rDq?)tlE>Zu6A~BBm0}IOv^WeGNv9Bjp7j!>cha zg*HCb*H?Q0aXDA-idoCO=UjIhnI?-G4DsrT-~NGIy)WH4FrOvo%<353J!zD|xb5^S zH<Qf#0FO_O{7eOvqYqnHXO0ptbesp8SRr65Sxme-jW--8RPb0A5TogmTBqPYZyJ>T zNEcMUh3;p~jEh5ZxHc7(#F{NUxI&$ZXImrpx%+xos2=1<+M-aRLKnAOAK|iiC06_F zVmqBKxMo`V9?85BAO$~k`;gQUqvzt{o=b*UF6`;`KY^Zf#-3k-SgTX1)vM_hY&k8S zstEWOu<B|kt-^FxO09UBJ+}hq!Z$p&9?z(u(SXN15gqb5cv}xq`a?Q(b$^?|*pu>6 z1~+0}gQOe0c->T3DFTk^Y<Zy~Q>*^t>(I{djH}8C2IWO})74%AORXnX;!zER7mt*j z(V#h7qz%WT9sMfV5nYfsNf)}&$4P3BM|(I90<+Kh*b}ij;V&lB1$}8M5(J%_P+!8P z^CYAYoN>NmuC?}sG;65lg-D}Y+FeIu^;)@m@jnX{mHU2%?nS<wk|xke{1CfJ5J=Ze z8O)Z*t6hmaqr1%yrY{<~r_unFYT#PcTMBw`@P<d76tT|wj)n><;V2OwVF<09{a1rO zME->T<mOn|JgQ#0YiBSn=4Ct54<fA*Cc3RAal-}aBO7?WZE^36WRA+&ERwxH-C$I3 zc3Y9Jt=NFW>WHI){8S_Yt@sDR6(0|`(bGnUAft;-IE(SQEpZoM_xJZE0dv;rgTZw| zh_Evpl;D8F&PV<K==$oos<w4)K$M0BNOws{N=uh?cSuTuba!`m2-4l%CEeZKNO$v1 zJbRyg&b{CL6MnGPm}8Fl&NrS2`(0!nf1uWcq#2#(WN!qFo~9Y51U?arBK!AOiqY?! zs)B>l^{=KIs#@j~{j$M8g<$yMd86qOcR6Bot|h@k6UWi*V<@1?$jFc>g$_u=fI@|s z!YKwON*TO9&X!FA2Ac|)`3b2vM8dVjOg4{>iiaaDF0pYjcq!tJVJ{9^*9Ve|>{bjY zt-`fu!e6MHAs^Y4X4RiNGUt({>Mun5kmAqvxpUGH39>L;_1ftXhSU}ZVI=8kFtT<Z z9PcJk(h3jAftiVx2Tye^7A3GNytu@XfCcYDz57?(&wA|BbNt#n)ddP!YBh7#pRMuv zd7+`bjHG#kdJ@Mwd<+2JhM$+lauX{8!gw<l)p5}RhGcrudcOpG149joI2Y%hHVkQf zSvna}_~i&6<LPwyY!*@CJ9QGIu!H#_SWjBW2-<$CBwc=Ax>U72J75;V=&vKN`ZSwQ zPulxNuN)l}B8pFY#X-D)WEWqp*GaLqL{(DD<{52xhgP%GCmnp@K=|ZVtHq`3o&q^^ z9BZ(&l)z4zC6U;2`yK)9bLafLXi%@}C;jZRF8}<@oViKppwj~;Q=$F2AI)HJpR)qs z>8FQ;7bmjCL=hINca1g9C?pRQrrKOE6m!2-5MM4AGEcP%6PPTNb5EBLA<YwX#31k! zhNHCaWl11}XJPR8r`r$2QtI7eiQM?T+OaZ(c%p>OA0cKk@V`X^;GFJrP3f>({X(jr z44`NGAJ1mrER2}PQAb9syshjTl($~j!|m(sv^uMtW?RNH?K;%KeUBTxF`P0BD4M3I zf0A0mIn>ZIO_9@t7G#AWr)|lEO`{zzQAgY#UFt`LPj}lg_O8=k2rj^zs4WTeWKh{1 zrX|`p(<k3HC-+=J226|P(9T}y6#HyOhu*^NcLEQ#c{^_$tA2lR(v-{I>{P9gO)`TA z`1atBkS|F15;ULfKAh-x^dB}MVGCZF&SV2-Q~9c#S0+<GXC&KX%t@Z_qvJlptPEl% z@_C!FrC%Q{OkYa{Oo7JdzS|N|xnCPocEX*BuE~|AfA<2t7tw^0{uZYYM2Bs*9!g1o z4XyfVMX5yhE%s6qhT#|@bR0eG5nVcua6@g=2fL?yy!qFs4A{ljLk9lmkps~SgCUiG zw2_nfQNtzy=4IO3i}5<s);zw$;*It1TG5|4t7+95;^mr}DzzW|UD=$7o4pyz!#L@$ zp?emb9&hk<D7_UpN)J0U0Ma@>bwn~-gj)L6S7^5A_Gu1_d^@g19v8TH+B}k8X-nPT z%2Z4{^*TO^byBJ9;#KI>8EphlUGi&;6?vQdG3g!Z4#yK|>4<U%3I#^pjaO4GlYkn_ zQ={+wWSgpp`{+}_V_uH&oM&rnAXL)Ig`w4TCRw%N3pjt^Nb7QIrsSf-*rRdG@CGKc zQ?j-5Lkv`$lKaVUkjt`BfABPu+mg|A-L~se7|$W0>&PP0i+6MKTR0sOa!JKr%|-(} zuI;VWu!E^gs%@Su7)C=I;?Z4&A~pSkCq?qAUgnxCkrlz}?+I-MUn?b{*;09b984RJ z?J-Q{nPO0>mH*6m0_SQ(B}St*sK87onG0L2GwzBnVKUx=MyrKbd|pokG)FcyzyS$S z9Z9Rk3CyO;-_n5dgCb1W4eqU|n}5LNz9e)IgYk8$B}@-nZeS0#6I3%f46?5za~!Bb z__T6-qc;LWjDALW_B+)Riz@nm-o!t5)K>^>qvQiN`Nl6!kwEppmN2arXURzn+Ke)` z{<;$U-cx%2y;N>RSSrP0dM8ImiWACegmKJXxCkTM8TNj6BG4qvlE-a$rGB|2YkiL> zb=kS;(?mD!Jz3!K%M-7T=j1{nC8H5<M5#iHwUF~rTEGsshoyBF{C@EEz*zkBph~;7 zy!TYSF{AO0Z-wvt6vzSzk7EQv5$$sqjK^qN8}CQ-p>>wc$zQ5Ad;O>cA-C!Gobv1X z2h+t;ZK>P>meECO70rb{HoS{P=<Zpav$jV(z9veg*#;U}D+`h-#xuXHAiw4a<<Z)n zAC^%UB4lmhLhKIWyTwJOvg>^b>76}+{41dS6!@(a%c!n|&1i?6Bl#m4&|U2RJuiWe zo!*^`fFpNJttxTc+tYJ(AUCkpKkY6(l79WWJ47MNTEEe88<x2MBXy2LIUJWWALZE# zImp=T`jg-hqU#-*2%$V#<~3E{_@7YpCsNl-fN4enIqL`HasZ;{=!<c{8|YR3JDG{n z34K5si;Za|y8+H<w1b2S-AV->REDW93uQO{Zh=3=Nd1DIg<QpNy7dqP!phHcHH7e7 z#9;9y?N;h+ADG$M{yw(g#N$HV9!UGT&i}Z!#BL)4cyUd8BK)Efe`m1)9Je#-Hx9G} z(%l5KO7)Q_p|WMpIl;DjyPJhUle;7GPioB2{N}mv=`u|_!_>@pJFS~}((-^!FJ(bU zh?t3Lqaed|JEu;*at^=Kz^$k=88HT(M&dv`mFPU17x}$fa*TNz0G*SWNq$TJ&Xj=& zqzXwDOCz45Ol?Sacg|!vWyHMLyHpWU1v2YD-x)EVJBt1#B*fM3Kaoaew7fGcCa76y zjW%5@*DW)$^7f3WHbDb&Hid2DH#E056WxCXBJChvHS{*ur^hLQf*k8gX=p(xh<atK z(FI+QRa_kdTvHG*k|9KQCIZ74Nl2N<zWix(*iwCRDtkXwg^4zl67Z?Q$Op5t&un*8 zbnn>4`nZTw@p`HOE|#i+Ly=BhZre(9XXgv;l9KMVw*5|Rch_8e5wX6Xr#U3(#@6x# zpUL^$RxE*~M$JDFPI}Gz?p$SA<(adA(s%;tELQr(Ij!vt?WD3B6!wA$1`6WNM4ahV zm5p$h{gyUt#Jb9;>(gGqG7ok#pA^OLdHHO%foL?T(pe<JZ_Z5|M$%utytd??mNLL- zJM+iG^~Cb32P^z3<_(UH1x-@JlO3Bx_skED{mTX$6YcJ*K>f4%35II7c$dsLpnmwT zcn#`>-WpDdxyJo00e~3M*V)3qJ|x;Vf<mpzl&CKXB)_r-_B?t9WA-L%yeGi#Yo=j$ zIpcCa5V$#6&HG*VJ?14O;dO3j2M^u(y;QV+m<%S4QqEHjXiWR+I${dY+v`MhK;k~U zN9rfWUbI!sw#5Cgc6=b%I_g8=*JQrZg9c1f&L8hqhZ+2lOLbn9EC!OeQef}2X+|JN zGP-o@PYoBVjCA6%`s>3E=PSpwJYFQbL*C0ZJ%5wlJ;e-HtTV7f6P{P#=tIk4brtsO zZO1I`_T?2sh2FA6?eoa>OXx24gyLLFrV@g++q*QLobU-iLU`z!OyA6tLT!%Zs5#qs zY2(z!85xDSN4bx|NLvy8`tKbgltOJkL7Bk?w!4}bl(ssUcnynujN2RNa(NpRe1cgb zCH0vEG7*fQr@agFhU!>V9ifv!6Xc*1sXO+8(--+S8$&>%Cx#9Hl)ntu%YN>~?=QrS z-m_wd?oyNZ=9|?H=Uw>$)AXoF>|7Xld4@oK%5lhDC4gKY#fGxX6x~wpG(<S_2TIE< z!NN~uVq>9qA+dyUM1c4t4}7}0X^F;uG!^9v!Oe>t5fy#;<zqJ-*>^X!PI;KAnp?*a zsSzre^qQm0B_LO<*n1q4dFy>s>h@4T6_CM;GSc4e@cx!IQsef4lo&p=Lrnr&kO|!5 zdFT>{yVEl98)yD!>owl+-lL3KxAC9cVd>mH6M5p|jJ*-8u~mlPjNphbk5yvc0dswz z?10N-eUW@a>6CNIih$%P<bS_KBv7CucnvH0<|!aE6Tt-QrMbAW>M^Vxi9i*QYcTKv zm7k%dslL4p>4Q-P`9nX(ztwXTf7{|>7-&`OM3RL#u>ST8lOdFdO~7|%A$V>@{5Q~u z22mt_ME=@%=g)aTUVEQS`?W<XB%v&u^swZ?-w=Yybcwh7z3`h7ZVL&?w!@(e{ZAC* zju(YFN_8P~eJxG4AIeI(6y~tt(`qfIQ(MiZy$9lGg%<6PGJp!?f>2gBd{S-Xz+M)# zaSimO*fW+@U&&3t4&X1h+;B`AuLOTG?BjiTd`L71C6FZR3_LQK<g@eZ`0Ld1b~a7} z;^L4IUXMKQ-*7q$KydtGckg;J)Dd<#9y@t9N;!LeUT!M*B;w3!zhJviqtl{OuD`qD zR&D%%80UDB^`&G96d@e)i@Z-vMNR_9+VhD{kDRsa)-Gl>CmV{&`m3~0G0e{(g4oAl z+xTZBuSRA^wZfEA77Pb#6F9x;KKv5`z2+pqBK%M0V=&7Iuc_R7k?QXgYLVaxsZBRN zLFyj8mHuK*AgIScq#f)TQO1*VYROphaluR+dt>_`e;3A7>Tsu}j!A!BUX7ihg}GZG z4lvit;iH~80R*RcoUu-$qZ=9zSQo1whh`Ht@yHc@`0s=1-ay1c+rM<IGHL(9tQ3m< z!qH=P*0Q<#qQTX+?n0Vb{B#<?RIMjAkiw-Sh{wNx1`#E;_6iKMIR)K+zoxd{9&JP_ zlTHEXc)KG4=ITs!O>`T^W~`qJD1aJA5Y>~{^?1PaeuP7XX(l}2h`!llS5l1Wc&W21 z)3JCu?!QCZBqY<Q_7NTgJ!epy%8)K%^cL0zsDlKH?uQ6`6qH>}!hTkt67Z-GA$tY} zIracOahd4}wOA{g903bqPAhqI9(PV3?PjN5+Jy!Ok9=KdC<cdfUzx>F<?4dVp2ZmJ zL+h5WO;#a(g>UaAO`HxAkq6Z09ihTYSY3CsMesSzwc3`W2DRY;eGZQ3!fLc>$hGmM zh7t_PG!A95Ldh5^<~SPFU?5XLE-ekpv#LK8)dyBX91PYR64t#@9zNaB0OdCQ=`sR- zbNqMt0)3qpXV`F5)X~55Y+f@`urfV!xx(7w64TwHpf1M%<KGMJP8bk7(1Cds?4Jbl z=-P6HRz{8PZZ8jOELt^e7kmUYHw}k!yBYI@^1i!GVfcPKp+6_GGfhhs!$8FQu$I+X z$p=ItlyQ~s5Ws3O@w`e&o@F(EUE2<+umO!K{9w7)NcDGw?0~%FuW-k5VXl~SWUtSC zM1$CY2{bZGL%1GN1(>hbHx>z<)_n7(s9vf?u2b+qt>!U{3evD}UiD&x{-NsK(}N_t zG>{wU;Jzso^Lrlla6LcYo_wQm6<W$9H~jd|SqAS#9cvCaEA6J5S-E<^_4sBi3;pXW z1c>>?`7%7-;wq#GgzLJa4U-G(HD)mrMiES4o>g&cv$Zup;SQ*r1rR_XsHD=FpGYEN zSlNKtS3nka!dCyBb_n#Q|0!F5jF-?JC9rTe2m}1Yc<PZnmZ604>Pie*k6%%+t_h5Y za;NxA*88kJt)OpO$dx>6kvaNVPz&PRIH+~@i}MG_4R~;%onq?MKB>|iR+2-u{XYw% z!0(WR-$$@hzxc`X;%bswqE>~0C3@jS+k58#&Mjv#6a4L}pg-H28O`gsfuVkI)9|qj z2ESMLznA%1&nJq3t-p`N9d#+=DVbjvM&taN4^$I>%?U~I`-m{m@w<Wd?A{HOm+k%z z&S!gCPq}&y(TS!+=S}gptheCEVOib!ky6lJ^}=9j?V!-^|G8XXL)tmLCj3xQHG!%> z2Q@)+yz%R^?aMmHxeKx&NW5DlX!p2ODweW^5p5_g(BED{)TxU6Jrl54UmxD)?G^PG zIAON}s@EG?p42}7aex0XZY{A(NAU~%W;uNSg@o#j5=Oq&aN*Yav4KgQ+5fy9ywED7 zAVr2S8hbH&Sn$`!!^@MjGX%2F8XEY49~D{}Ue6R|ecedy6X#tNMsiCr%<EtM$8~6P zfjgy@r^Us-f4#ZLk%EpDznur>p}jEq){5fss~x@V(s~#+e6wTz*AD;nNr6I;q`6kq zjfvJ&uPM1FIeoJ~2^F&D8AQ0G_s#iqQKGN%{hv$xrv}cX0VmM%5L-uX5$Ge6j3!+; zj|u;?GGZT3M{MDD`t1Hd#cTl6zFBW$gH-i!w7jm`SCLuK@)YU(f3CwAQjjU!SXtu! zBcv`7xNlLp5*tgxrBuXQ%^}C2|9Rd2Y{Hxrub|#yk|+YOF~pvpB%8Pn-`5>Sx1rhe zjphF1S^lr@9gp@5>={3=6v^}DT_XM2&5jt6K+hT9CC~FcI-%-+*NOiM3GGl2(a<Mv z;8an7%}xgKrfyoyK1?{Qw6a`5doysx|9=ixMOgc=i^cx09A(?95uC=CQ@pzt=**iF zy+u_u5AL&hgo)+ppx3m>y8%UZo>-K^;@WqHm5>ammdZs4S3Jzn#rvdQZ#nOKWHyH@ zX1BVIgwyZ+YpS7<?{hgr-JTx%ySN^clC)Z#^$XyDG5{Jp4D6*ak^mhW-YLQa;%p53 zs`okV_Wo{sxXEFEe3ShB`}f~G1mxtQ1wr8C<m7+~0@^l^A$wfZ3y;ZWs}ilLKybG{ z$99rDwvFR07LAnvH(1cza_T~GZ^m4m!|jgQ>Ew!>ppCF_ZJ%H0{6nT07D}Y>CvtB~ zY-I%RhLa1z`zJoa*9<272i(v1$5K<x@i=j`)a>6k4%~=#kJuoHu{pwXs!4%sf&}ag zUtf8jJ;GK6AivRAr5O?pik{$Jkw^<}LO0e=m>m)mdRrYfrd4d2b&}u;&~rPVzn?CU zQ~g!1V$JhwX0pAdad%9oP-REHL0Rv&P`LgsS!Tr*hV96Kq3zj>>AA_8l%jZ(iWWn7 zJg4Jl&zZy1tV|~q`PJI~O^Ubd=0t0lugmezswM`O!vrW?STVKGPn4*L^6t=f4-8^| zl%h)evC@+V7?q6j`w9AnpgHgz^1wj%?g9WwAm7t_=^w!AaRfdjzzs$VvN=!oB3-7Z zdSq($qfqKK1!9WQ9?B_iT2)WLGZ4yqt|Wv?X|3k)IGC_iQ6X56Bc;P7>$A)Mv%SQt zLF5_v{?jr~sm4*FN7`#m7Yv+!5C=3bJ#8W*@|6X-cSVWvdm@f@gvWMSAc+Eh0GuSu z2v`fq{xdRw24O_tH&xud^w#(Lxp3g<3RC4$Nr8_(r9U1M+=va>eFw&42`SA0oGvr+ zH8U5q0;2!?f8fl$w!N&pJh?3z-LZD@r7<3a+Hf)Ie_h)Y&*WG1%X6M~vBWIuXKg|g z?&IlV(h;PuScUbh$AcEKy7~ejOQUh=5Lcnc*QT^u++T-Buvcx9$=|u|Z?wcxK7=s~ z;c50{WLhO9*9_U0J4SU@YcDWWJ?IDg=VtuXcoRf|00lBfsi@D))Zp_|%xKQ#(U?AL za~Yu0qX!Pd^fNqAXK9_Z+}sysJ3v=xm%UD(DuI5Y=5?)(WJ?0wo4qHG6UwBbqCbh= z?VgrcI?IM1y`>-upC#Hj+Z0)3oXBf?)=sV7_3a&xhZG<jpN%_TIWcs$IX!-|)FiCR zXqXE*lDn<?Xz^63Y_ZU4k3c38Nf_<?xK5wza;4KYExt>q^#R$xq(@)AqiD8ty!L3( zc&l88Wx6Wo6d)4sKWll&0t^82f)79y{omIJgy2hvGnbJMer)~9rK{O49xKX&bSk9Y z4Ik_>ssWY^0H=BtTQ*_mE@Di!40WhT6ljknG#h5o(_!C9wYogq2ZGEinx-(`9!44J zhJc%Y`lDi~<+$VE$XCdde%hl&|M^uw3`MTP)k%@vb+r0mDel_*EY~-R(AR4>8P6TE z6?n73SCz@}zIGvjiTs4}(Slr1rqHzZp*#VBzy(0V&Ils$k7-It(MfR!e-U@EP_d|T zsB8^8rRI=eLX;*yELd#P;yGWbrc_W2{l47d#5h&krxBFT&GooTuu$jGCLpv4fKKH~ zQ`r$55%JjhvwA`^7|EqDYx}){{kTSMM>0Ets&=1moym^>j}0OY0Q1F#?iQndzG1+- zy~AjHcpy+{bd)XpnuDT$Ps-ImCf;L38Tj~=KKax}Fj1pkXM9#@2lTSg3zb@Nr86WY zK@rU0?AFe-!Z38;>h4VgCyS>OELtx>P*&(*boH*do55?#GY>KF$AXDh^SIbSkW6BX zn4wku8O#UGQSBz44Xd*T+e(bB-Y8c|M+|+->GB2WVt-nC045CzgNzu|*>H!Ri$D`w ztmj2NVJKO&CBR)0NbmEoE-++Tml}*N*E*&$<qgj@YZa#Vxs5>6WvVesrK>-mM`wy; zebiW=_>V5GF7n7eDx)+fq;tB70j34H(&CPCtEFG3-Cdr4sf=Ut7&Y1-OK2fs>5e)H zi~QJ|BbO(KO}O1DQ5(NwG=y&|QY_&2gG2jNJoslfQODeEv)(>cKGBFtzP>;Hev+uc zp}QT^oNkWse%xPiny)%UV$T#xEibspx}s`!;U9nZRnBmA%2(}juD%(QO|JRI&Rnb- zM<5px!zf+jM-O?XLcIf`P|F7*ymMUedumK`juz*xchhyXG-@h`Bm?W5nHLS1>3=n{ zC-DP%^sj!i0`7R@F@|Gp()jYmqZ`@M!7$QmL5#a&{fupu^xI-x_cs}G-5~`Be|5db z20fJz->UldAm9|&rnA|^8_=lmd+^)`<c%0++KHo2>>M>Yj`hWbr*jKHMLbEYdNc)& zq_v4yIL=t77^F|;64)2Ypc$Rqm#71BBudykuFyGRQQn`guz2fEp1%N1@62e|!;Tgg znJktg<A+AY1IHVJM@c{`BvbuxDgJ{Z751-(8t(8^rZ@mKD!y8xDc<VtuFyJ^H&y0> zVJ#Xh7(qC+P3(mFnlI|a#{hZcIOKssnUv3$hz#zpO)|2}4!=F|m-qYV+QxLzL#92c z32u9i7OQmzm6DmPePPwTS|7U@!kC-vFVJ(ufB2)1B$jgTe!aiSTbM4C3kF0LN4?T1 zm_6Kq>H9FFZ|P+AyiF$==4N8lJpnEe^{I6%`xz24#qK@Ef;%7sKb<ch0HSWpNx;z8 ziBR)(WE;_}1}ysWV)CS9uNG=3wbncROAi-XQm8KchT=Ku790|}ESMQ*(`vO|z86YM zr*UQgW^6^zdxKKzn4>YdQi>^np`mEa!E~0!-MMTR0Cu=qS-H>5i0_q56$xp3pq;AK z|EM&UXtfEyI8@`1@{*)brWo?<ej6#4@G(!5`w-hB`0ds+r)~z;bH7A7bBI_RjX3+o zP7c6}oqTz|6<91$LHyR?{>py9_qI9PxV#EPwtaba6TnjaC(Q&7ZD0dru0%TD?nrt> z134jAU9#uSS6oa?5vXwdyqI0uiE{4c0;y@S4{!B0{fVfus1JV9F7T?WHT7)ka~Xif z0`kV<i6{hA!o_@4T$9pIn9t@Ew91k6b%BZSMLm#>=?`kVEKT%R?aFq2W;Q<AK~Tsr z!+M5)Hf!H#G3OxL*iz?UEzXGYx&H``#Zd+zca-mH-1l`C8lBmlYM`%`e9`F*2H+2t zYMJp?t9%Tkar54JrnR~90a7;E5Kb3kQ9l+b#B)P^%}2GGWqLc$n=KN?6H3&_B2s4L zTR9ty)+^%<=1_&<bB3@OCvxM&<FrFzkzSm#57tMg8ZHXV_M@vUs#xuQ&!xRR-9LDE z^N<D%0KCt9*9DA!C!^th*k!=ux#|E%)GubRe5(aCoaZ4wSAQ4Msx=YS%azKaeS$iL zPg@<fU#EFFF<U4n(jSfPK73hy?c<A~2Qjp7^!sqNX*TCCGyz@w?a>%@n%#jYpU1~8 z9ubs+Oa|u_y)o?o*j`M8S<PVhmyUa~ddHhRJ~HvxpItmpf(@$h{<i=JMhAO%!z4lK zhY=54cex(Vi^S7A#OzTV)?5;e+IJznculq$a71gvHF;Diw^>(EC*=yRMDlrnER+i7 z47}Da)7F=?fjG)67QWl(;0N1{IfjGlX=SF{-(~ykE|4jey^myf5*TmZ>Zje^pXYC& z3Ru}3=?}(-<w_-IZ{!><*Myvkjj-a(J$3_+R0@mUJM)KisO|oikkzPy3eBu9??E8k zF8FO$0D-PvXP(uM`eE$DbKWCPQ@cPcF#Wdr;dz~fje9w0^&^C9Hv+tL;p$*fUhx3h zi-L?EfKV+|Dt;Og-WLkY^Z`62lI3zowa=$h2;LKS*#qvPafP!o0f1-4s<2ysG6!4k zHx;+L{dT^%3*utyN*)8$v9zyiI<C=Np=C?Wl5ZOAGpVr{=UjF3eHt;!mVYw;W<9T( zMgHu%mG6wl?i||r@Y(g20*})%Fx)bwEsaAsf-NduWr>vDCq^U*HJrHvQ(re3C?SX= zzDcpzad@T=zib)a#iz683c{eu{Wwr$A93Usz-cRQUud=xAnV-ePZAi0sP9G8Is36O z`2>YD*L1^b|4Ur3f&U!mYqN8hwM|2^;>V&S2xHa3F>1Gk>Zwdo610Fhg{5=iw-+Cg zbR5AQ&P^l@N3_NYlih^(f^q6jWEOXZ6?h6`UnIz2fpe3bAyp%WMqzkuHqcbB)(vZW za9HN=Hbd+A@irL7E1yut3-1$anTnL+T!!sh{y2J9<9kD*x#(?uH+jYcQd+7~wi$7k z_@8zutRIn``UeyhV(>V-Orxl<F$_mn!p#@hB-qm0EQxZq$El94$O4MS;DOc^7gvEt zI(O_3KRKHE&&~P)6#<7Bhr=n9q`7^MLLmTn8klpqI1F@}JpX)tf?3BNYc<$en7lSU z*}0#JjR^Q=pZtT(NiGcAwP&TZJegX7RYw+m!<r^sI+_(JVx_{<tSreC2@7j^X_*pV z8r4T7G~q0P%blK9wK4Xc<<edcXJ=FbS6EvTm%5#PS5KHfZObNdq!1kXn4#;%?s`hC zd;p^D`UF{*I}p#T;yk%Y{oL6b&v=_{Ih%zH;WkdP+SoNS6G3CB<xDujTC`LN>37^& z7>8CQ=r_=*-0q?HkIyO2iaVr&Bmr*bD(UQYV%cCFhS^S&xd$q@2#Y0y%KqFxEm-NG zT(Skl47Ui!lfjOW9N%o-@H9W$AM*(QP-9irAwN7~<5#jZUJU+jNxkKJh#A8osV0^{ z3-IWqUts1R#1hgL*AfTz>%+Dv<*eK0<)iaf`8m;TaJ@R;!seg8-%<0;V;B&GVg$UF zzIDuL<^q0myNMg~{9Lno!JpwZLjbWk{n7RPOT|^MgSR?&1o)PG%?iFjp2`-Z9a<mP zvFt`F$J8UcMiMKdaaWh3xBIV%Eaa?_kgRo=`FLtp6qW}$`+)h_2lV_+Ec?w{LpoPb zDqJ~trm9>55^++k<cc4!1fgfSBrph)3;IUmgd<Q_^=;>RcAXxL`!LBP`Gqc?Mlssi z?)X~)R?)TUagd^9BHfhF8<rGCN8I$Ky4j`gMYRIixP6_u1~7Mn(iVU!+jLo>J`%bF zbB5BQQ-A;q(*v<1m49ssE?mYcje2fLp@aO9A65IuoqI@G=efS9ffQB}xaC)*D`(1& zRBvJAb;`##Ap;^ZH?eP&1csb?Ix3H9POEP`g>lwpHFhSY1@Ky_%T~AM1e0^NWxu%j z_fk`Lwm~N)XU0Xnc5pN4ywcr2w@<dX=A%T+gur+u@`FM2UM5xL1ArffoWY4vwl84v zp3ETxblmF!Tn3)T{(v?fHgm>_a#^<K)4MUcLy>ZaT|~5Z@NGy5G^)jDid8FLLh;3$ z>MZ0J36F`s{qhe>*<<d_2e9ERlGv>A(R&-8xp$Hbh1q7dG{PhDk{DlBrf&Ea!(YJl zdcyLucnI<w_)hZC$>sNFn=te@RttM}M&)sPrIYysBJgGLX~^c-_1=$$4n~nQQ3bb3 zr!xmUZ>&a<v8C-C?oU$K1p4?}saN8=L1PN)p~oXWS&Mbk*Y<YJ-G+{R=~83fqw3Wx z)?7ywOQZ*f<Cj{Guz-(JC%0`XcicKT5hj;P&93Am)1p2`_Ot|CJF04A&`!C-gYbJ6 z;%pr3h*x*{Vmp_eEjCGmV#c(-NTCNJ!~0y|G6hg(1r(iv7Obird@FfF*Omcu<pi$# ziRY4)fvlUcicPgBnG={)nt&02bKK?0&iNClLc8Sm<ZWK?eNBYhqCYE&-9JS<0KIKI z{K;f85s>>ntVV}2Femx|?rXxYVMSxW(ELDfx{FrPs&l&H(OzX*^R&LdcqX3*quKXk z!BH0Cag{kLqJ8F?WNH#qvpZK4nB0A6?liqUOY!D2rBha(m63Gs%o^{B_wS<SU1nto zRobU9p2(*9+2o#5aDDkuVOA;)QZ7<10tAFYw@wzS0+RiqryV>V!o;dX!YnbngWu~| zMA8CG74yjs2=?1%gK#6HmEK$AT-H;!B98DgcQ;i4)L@nLukb>gsJ&qL;~l~s#}?y# zvnt#I7K%MoFE+g+^wHvre14ZwnPR~6w&Mwh!_iK_!+f>D@(tBv*8#JsV#7yHyb{sL z9fheXQpJ1?#UrF?&mc6{ysIOgNNyTs&1o#AOVjgBQZ#zsguSr_xDu5bwWE(pneP$q zoa<qO^oHH1Mf%e1@je$?^52^;yIkdR@%USS$*rbQ3nPNtjatU9eM*nZ3sx+g&|c=U z0c_1pW-1l)!yPRa1Y_8tz}#(XwpP*m&}34e^v?L}$*WlbUgZdZj8||1)$q-d^1%w+ zbYM`NfN;3X*XKu9wPVKnOeZ*g_cy~m(y7_}^fl)u;@x7g+1NF|K?X3!=rismOQXFJ z@*MbEGmB2wsU2s(0GxE7Ee3n&g7UJ9TtPJ1-dx9<Sb)YB4s-XI^?;6q<?(oz2mZdb z4*8Sr_@jl<=DnTo=wN=uCc;BSc~V!V!cGV8@F4Y+R2JG}?O-zV#}c(x1(?~F@=1u+ zGRgVqoWa<e$76!paj6kwSs#yC_fF09@^to~!Jipjv1_h}YtpgnG16>hA{+voV)94* zwfW?pF35DQ5!{bA49gFj(uImSnO&d#Yo85Hwhi4|55cjtV3a{+r_=^FA#dr~V0A3t z`H=Ooq;s<KI9^l@mbC@<R*=x*>w*b5hKc4n;r7~gU=A_<HDLASQ4TkIe0r4YruZTR zEmNneH&*PLG*Jy`K|SN4;f`YHGeE=0VyuEYUYC6>33h(&efjYTcjMx5`(q(qwbu!> z=~2R@;l8K{#V{8S-j-vLUmTQGVJzkTJ|jVlInfM*;ChUq4^J1;Jly@j6%JKKdQERl zE^fVdSt2M<0^<2lW!|Pw#$>T2z!|8e6TVnGYB+9mwHnE!$MBB)1n0a((-co&LBQKN zZPHwBl#Qu9%3o~fyX09u5ph|F7?XzYl*L?}0O{y<R2%m+Wtz2sUi3IS`p-;kyxE2$ zsp)WD0`0SzH$iAsZFl~#Tcgsa6WttUB)z!(9ejl~AduJN=|huW``m5Rmfn`1E5TXd z-QY^{wafv}(C#O_B%qn|?Ga=Zj76y6Z{VncK1v(r-wX$S0eMM8c{#XaI@d-H)r+6P zZe9p$Y!lVh<vLx$F}*4H^Y#o%M>0g96b~F<oA2?iY_#KoLB=nj#69&Z+PjQ8yTw{2 z+fzbjREQ%4>~rRIVa+2of>yZd+G+>RTemYORBRsmYUjw`fWaA3=#xl^dM%-E0-NRO zPZac8i{;MMuiQ+L-G?-b?mt;l;R%bM78p)73v`9l9-f>F+pT_TznuE)>7WniNv37b zY)cOjdAj6M9w#w$+(?wQx*4;sGM3z?b*z#4erzG?d8smNedLYujHgxQzk|cbAh2_S z*cnNY1_*Kb>!wM;9c@PabyHD(o68)v>X#;6yN3S97n6Qn3eyO8k87Gg*z~DFY%cOu z#xtt{$FhUvGM*n?PW*1IoeO1G1XcF;mbmIeQ+#`rnAQ-kYK^f<f-9SZ;GEfAI1buv ztxD-!_zM{4El)?CcmAoETyx_;#YZ(Cx!7cv6O7<9C_yHY7QORuHkb7<{*rfWL9!tR zl8T3e;BF6?wRIOJ0(#^UnX+90ShdD*B2;0K7Pkm+gK0D$S7L{?>J!y0sR!tinUsF# zr{`(wbb`Tf0woPOn8j%<(Td1*oo?fYV*whb?l>IQ0w!q=2VdoAd!}kXmXpV8p6h(E zg4}|OgvweDjg#9SZ@|^q8!g3eT^}FzkbBwOztszO*?|?9#e?~(mKm`vl7Dc)_^pEh zjDBdBT?Nwac!p%gPgrY0Z#w{x=FieM?<N800VQ~?L7bR>rjN@_HZp3SOxS3O)gG3^ zc5{XPv~}Z9=i$coN6H{^6n>3$gD{-a>bvYh&5z*`OP7NqvHLOb2NyL?({chX@#wHt z)Z5`L_XS=V7<8HwLoj*@R+kmu0hnW<jRTeZM9jVY!@wAPr`%Bb=OF*kA3s}tBKHs{ z50DM#qu!OSef$7P90P_jQ=(bV%ih5ITRbzx&EI`0UqiJUn9z^%mS=H349#5va?%vD zZ7!^exS}ULQYlhREXB$dZ5393&FBGHl{_lF(R66EurLnDj@!<-!7YjoOx-uRx5oYi z2)Vf{#t*|SBuw2DQsDuRj)9{tTYIt#y)b9FQmICz!ShG)_W<;q^ahLGQ>j=J;OjGY z3H+9ZLd;Kr=5dTKQQ>PP(sWkCdU6>_W#3m1XNTtlB+=F>YYa~`3jr55Ds&~6JGL)p zrq6knAq3hNd%ACod%=1QaG_3`wg+K)JE!<LJ=^s_i?5TGKyHBQ*kAnF$9Q0$U32Z> z=4IUCP}Os^wB#C<JYMuTDpk$ui-`(g@t7~$_3o03ys?@TJL}MJdw@#%t#8j6wPvdO z9U$`(R)K_+qh)v4x2lYPFx{y5@jj}piV$19N(*g+C*9_e+?UL;lgO3un;w;INiuVv zV|<X3=1LYTxUW}di<e8TW5tH;<1ZL8?8Qk__*O)GHc#u_ft<pd?ft7;t>El>kn6B2 zIzFji(!*oy%OT@6Bu&8p@0ez}BLkp9(nY_AGvlt{%NssddCT+Jeu{!DSb%V~e<fMh zDuvhQ{>lvEbnT=~F?#E2CB<<~r>OAZT;H?NgTV(<_gFF9G>Gk#*;D~(x)ufM<zbD! z{W-_~>Gtr+^%29lT|SB6^is$5gXBEuIh5IS+P}*<H4_N8g=3g!0+77$!GwaUd8Hjl zwE0Nn0X)ymbeR>DiA0Ovms=$zlbK0K8(8%F>?-3ff&_hyLR}zogL*u;9YwB86&R<( zEX_amy?MWQeJJnq>%?h|&b`m-ta%-}i)(M_=z{^@0CQ52*it@%8C&L4{fhs}9bX&n zY=hv|T>?$CZ!Wcq7+!MyqAezAK#^JoXUi6SO!8?Fv*#(2xPkQU3x>s%nTbQ)HxrCs z>dk9TW*V=(*(rZ046S#~3W)moV;Od*77is}<rgarMg--1LkVAYM|qOJ^OP$)Y%hnd zeko^!;u%60jBcVSibsAfYbXyac?nlx(+j35dn!<?;9S=)!sEc;72wFNu1Su?fIuYj ze9&yV3B#$b9<48KxN;~a>+IO!YU^4vx*trMjOB4CpA2qr)-jJz7_Uclp<|mscYB~& z&%xr{ao;p{u2tg-cMHYrY?+^gk!PYGwgaQ<TI^G*nj-&&YSJff4EW%R%iDT0>5`F% zYU*77@-$ldsmXOP1QEi1q1&;I9dR0Oh>We33krI;I+m<sV_~E&z9uXt+1Jv0j!O0x z+C5SI#ZqgPC49lum7x&u04LtF&a7k=x_ilKO$i`kcrS^{x0+7&9<Ek!bII9}PQT?Q zJdTBXVD1b}Q2PXM(ksLYZ0#X<<8<z;RIa|<@L=~du)b^+&^54U_#?Rp<-m%zdO3sa z7%z}ShJ(>*1vklEF=OFO+muGb+5!kQE!K_4zp|a}qo;Xug}2VGGW@Ltz@^x&ix0lU znAPK2Z<xk?RlydApXpELV_5mT(*42?ANf2?oI*B^nVx=y(>x7E4f$<zRJsGAgVDQM z4`UrmL8Lx=_&qG}JxH22SJ*6>>yI8+YwKMDn<}WqHJ{G$Z=h9Buc=Ru0w@PCmprGx z>5MY(2Sl2cs4<bd@^sErwFiQ;(12Gj^mz<iw67#akyI;oaqx@bvfC>RlbYUl?^5BP z`SxcJjMM-;yX~wCL#eZuRD{c`K3Pte@A&4cm7>Ece5+#drwTs)YEF+kH0WQhElSKZ z+=Pku^*LQ2IvLV<F8!fI4h50|KQSk^ua>c0qe`X5P?9bMl0*csq*pM)yQegJ5d8A- z>saXs=k!MjPg3sm4cb%ft9BHwr8D>Y;F)bw(OtxPnIsfZ(>#w__%{-Vmc<Ts!L#DF z$O0^_DYw~Sc-jk!-hgmXZ)c;bb8{}5OwweLUEM^y4T%$(9NQHD{Q+>82mmtLVsyUL zU^4cu;@4n2wb0dEKNTl>L8g`CXA=#Fl~i`$1WJM8We+FV+6u)owYbwy`XJ*oen56u zWG2E4pk>zMiMve<NTqNl<$<JTl%_crR@?bMaWbJ)D*K-yxox_Wtb7XhBXB&e_E#yb zD_;;$l~6xi&I(9wM6}Qc?2M~Akf!Gu4aVTZiGqHSQ)IDja_bN@$G=Q<OHCvsyh40% zrPm-`T!!xqxPPocxjUY1WVo$9Kl#7W$(AJuc=Ygi%xFe}e;bN!ZJn432u%Q9O~qTr z?C8y80?;9HIbstFiXRmid|`RHhBYg1Anr5BKDLa=Yr|Dp7OSc})L1*-m@JER3w{X< z_EZM{)UAa?{*H#kpMleHw)oL<R0FBOF!V${b%yymZHgR&ky{ZyZ6j^cSLM+|Fj{?! zf!^>I$Znqe3^9`KAAjOkBK<yk=Yr*MJl9c9S^T8NN7_y!mrakyZ5><tbn0`?Idk3L z1UO)m>UIp?rrlpWyP4NDwh@J|do{T)N8sUDu38u%Z6W-g!8}k=YkvuiGo6XNSzuPk zu_jZrUEd&!FU()fKf3eECJV^SS1bcJUu_T{#_o@&DLO}FoTdvw7?67AQBw0;HXa=% zau%S#KMWC(&twQ`sCQWVv4_6lw%4b}&*m+UXrR}M<ShNd4&}neagJ#OmySSgNY0&r z^oAy!`-_G#5<?hND5fa#j|7s^)9PK$lv(R602!5UEs7y5WLuGk!!ql28@g&WKD_2q zZV*6VXNs>j8TkDv_8Hpi6eYiNw9k=!0vA<bAc`w^qgL)b*04nzH)+|c?ni~T+5Roa zKJ2ZY+g<rW*PHqZ%;K^L{a>(fMWI%Bsu%zg!Wx?GqDvN_ob+{deU+pWlH=gKG*<G; zn-R$NPWT|GeiD{a{q+E^V#;E<(R}XRI)?nWC=De0^zPuVO*i?sy(T_MJbO?Z8l5r( znSLv$GL2h{CkiNxzjCfts*?(p3d|@_X50n%G(A}<oAJ@9)rx)V^6y(`Zbah&Ldgrw zz013m&19lux(zp?4h(qBev!%?tanljSGV?khuCJqiP2%M9wgV~&GR$vFI+imFT1Dk zEQSXcT|U1ScA@Mp(+Q>obemm>*xw=Ie->;7fNiS=Di2q^-@B@OYt0tL4B2Jne=O8o zHhoitrhsT*D;@)!gcWhM&3G$0ePJiz+ZNXpo3+pC{6F1}aM@fdD{i%CbUpGA<%ks) zPgh)qUq?D(!Q5)IU4OoAW;INhZvt%)!$T~)AUb3W6Yu}cS+>!YBjY{SChF8Q+8(Z< zT=apNT5qPZoEd{3oI{WDe`x`XsvNq^!UM-_1TtmTFxl{5f+8p7%xwl2Tzqj!5t)N! z-p6ZNK?}vEn(TK56&R)cVloVqj>TPF@nJEY@@!6a)3LaME`kbQgDKSoz%X-P2z#8d z7wwbf)Lv0Cpa<x7`6|FEP@z;;AFU~$)+J4`Sf;}=)9zqOiD9&Yhn`-BjKW(u*C5a- zsNfDTKVKKL4^!+50F3=6w9`sCT>)%+cNLyXY|WZ+ReUj2Z>^wXaJP7?A_Vvhvgubw z-x{YOhPlDmvU~$pM|8R`lGw}>_C@8a@z*%8{?ygR%gO!~P(%Hjy`c{M&hS8O1G!F# zZWBluD7Nf`CyJm0$^sD=el*1Fv3AY79q4*o@A8;(hktLoeM)M+=pnj)yQ0?QjCQpR zk|Yt1Sa)f#Kh-8TBzd+U=l5}FDm1zjc5|QGe5w*7N+&=R&3SqJ$repldom_V79p6~ z*N@7^2X`Y{Reo){eX8jfqY=6`su*T6O(BXY4?yI;u^)pdH1Y`%a6Tn&LO}JpO2pC= zh21(+kmo*tMht<01u(yoRmkHbLA!?%m5wCOQs_sa`ffkCGqao4ZfLys(~HUE&=I?1 zb-lh0=oyDJUhMYAIsx4ep5w)`=DyR0l7SnhcjP)EW_L*Bgugq2WExb{xNf2ey$M#@ zX3ZYC<$D7M7uD*_`eAr{3|Y0=C#VIP{Gm8>Bc1D;*e}PPpGOrZ2;e{Q(uPC#WAZa} zTCBJF%7+2PI0EE-t)$db-jn!X-Tgf7DjQ2`Th<8p<0~A+0D*<)VMw+&+Wz(J0*ZL) z|9t4-5YgeY|ClrQfgNqvI4NAr)9@UuQug(TXnT8>rMC&-dukp;e@|wUi2V+$eWEMz zmXQ??{s9@gbIIp@vj+ni+Ddvd5j6tm=c~nPx1AND!Umf!1}z=x4Vqm&w)>A|1B-Vw zA+z`O#yUr{bvZN^+xt)Iwa>i2mCB}A`dyfaw13mV%HM=OD_9bkRH$7oR=}S)NtDf= z2y22Zox~fgW7g>bm8!)W@Amx4$Y6*cuGV%`@r@ahY1^6AsZEh?Tp^Rojzsu_+K^*i zu`oS2bkg;lQkwaCcZEC2Vq_>SJCggqNW3IOl>uKxe}*jzRleV9DDPPtx1eNLBteg0 zpwE0UQ=2S}wSxCzPN|bYMO_yURS(#uYh~2BIKlb<P<X#DWe#)P$Xvnd-!;uk`eApT zAV1w0*CV#aojLLLwdP6V$Dks)|9@$`-y&yaM^S69PlVcCumKLYzQk_{w-&k6wX_nN zU(4r@XnCA9M3@o3lY%wALTWCx;A{<b2>^l-6~wRsyK*A`Li4*pf_j&t{b~p@eJZec z4qu#)IT5f}hUzh=OTMPu-yCJt;=uLv_z`IUbnmbm9j@Xh3ZDSLf*fOFXkWg93cU-) z*KQPZHQ;`d*{)4HvP*^jc)5<?>#oYLo}HFw7cy7Bt2<sU`E+DA7o8*Fd4$xT)atdx z#F%gVRT3eoVS4i60luwsFBy5Q5`9kv4NT8m#3_R=Lm*g0e)}M&<iHlB*X(-c*|7Rn z)KJ_;Z-_KzQ-#fA54B9-DkzM|orFiC1LEyad>kG>VJ@=g7!1-pdr`V<KonAckyq1j z|C#OrJ4a@lh;smD540!|eor_dmH97y2t>57%}*lie}K`vW*=latJv_C>R833EARqf z>fIg?Yt|qox<i8U3}Q7yF>OyRc80<yR-WrE2!_)bm4_i!nzh|yuZ0l*(3;1f+b1!~ zZizCjMyQjFd%d!zGOgTdBtK%L-P~|?ZCp0MDYOb&kx6_!(dAAffv;kX)gEF@gn-br z-uRw&w6)Wt6Y_1W6WKK<Y)=R*gGx%v{Z->84pXgT(l2;RQgHqg=^7ta9@~)@e1tC0 z*1ml3;cc|NKzJ=hD3^XHOmGD0;I<s=?Mn`ku8p0(XF&D31VS@_b8nZO?9a4u4Bm5n zij0L1N(Rl&#roA~X+hx&<~EC8>3?H4ftkZjBQ|j{z1xEpjUv?XmRVQ0WCnUQaov|E zyMd@CL{pwhN-HGco-Lmh75wr7*-$2|&B(RQ9bqMHh4RxAQtLrM+#Z~+p|DkX-+vUw z;d&bb1gy*7ejy5tD#&Q1kc=E4F}Sp0`+z*pS6@cp9)LoTC+jsDDiQbVm{8au0mi;t zs>O<n_$wo{$YEvdDd42<L<ofRb8c42EZ;8@??0fl1L&gs0N^MTA@9R3FcNtSe#R7z zp1}9{4+1Ul2V^R{h9^5f<HntF=R#9fR(>j^hVz0Z11a?d0U`Q_Kp#AEC^PmSVHI2A zpPXT;R($oS@B`@ogWamE{Brvn+<doI482eI1Y&gpC!7z7V6#2avFAFlC-pcyb`I~~ z+}5|}pJGoh;gvmdDnWsikc5H36xi~m@t5+@zgz))U+<$Sh2cLyntvfe0hDGkn4mgz z`RV<%;AXY4T#R9d>*Z1MiLuNLtvxwP4|SQ)$5}ZO2W9lo)kq|AX+bFnM=U+UVf+pi zj*6ER5^AAHlioNzvR66$O{2VV`@yDvL!Z`oU$KdxT&DlR_5E2wAPnSXT2BxPSthAy zv<%TT3xEP)mei{EZ9O;9uj*ys3?=%UCmrW4hW4@8K#h=(asko7C^!*J@g86r{DA@y zq9d<C)4wJHe_zQT+yy48r*by%+7N{_YcM3j-t_wnGY^N^S!z0wy`@UQqc8F!_`~p5 z-av7n-qpbx`1u#$!U)ye6u)Qv>=R-UQl-|vKhlyKxUu%s(#Dei{uS^ogz+Ge!HtBn zbOPx~hX^u5(mdo8m^ICAF4GXK<}lSc$)WjbZ<ReiFby`X?_x0%J|kb7MII0da-_LJ zWILLjD1f#bd%@RF8>gLHqoUj=FHe!BE6qZABVT_i^e-1U&qv47N@9!sCw;9e?r|g@ zHM;Vj%k2U%lZW)N6On&yw^zL+m}q$CwQ$H{=++@gI@qze3ysA{YV|9;R6YlgeZA(7 zb&lc(^JX}n4%X+c*>`+5o`^a{)KeiYa&&vjyJOz()V_5lPtfS`!u_?)F6B|HIeXS( zC0`EYyQ~otog$7xC7%tJBbCGt(+%)SwGTHo_+i*O@O3|g7@1A#M|J+aIN)*k8@dh- z)KjmmuD6gXKSFv7E1-KT*3^2U<z>9B*c9{t0-7&}!!|6J^P{h~x3?|~7JJy7AXo;$ znog+8G=7;Qbgv`dlHWRs56e1Hs7h}T`!7N4?>whR>dw9CUN3Vbs&N7+T(nR+Dj`9k zmhT<;WM&}sO57AhpZ_@%4E~-M!C{NK5{5Zhe-@|?!&Is|JwpZ1zk%8T<Y|eUb}y$4 zEyxG~TIasH3^izpK86PGMFD{1@cjpuE4_b{pEldud10MzMnIb?7hk^M#dg7MFz8|m zSo%Yk)NIeKh?)L<{l2{4K$g#ys+)am;kW{?CkI3Z2{0YAw(6~A{<R^0&gw5x2v9h3 zCO;gx*XetZ?<(My*s@ZUz@SMV+Y7gSMdwIq`ap;s0)S`N*j{P<e*pdf!Funx%VFz= zIFKhM+*C`g(*Y-{sR&hH>_p<N4OwQTP_)d-A<Ww_P+$xY(}Yr+53MKuy|TZ7n_gpo zvu}L$$k1(!U`hM+^x5lC;5tuP!pl&Dh|sf2uVI%PU-A0dbY7DQS}}mY!uc88D_4H1 zF%3t5Fw&DVS|_q+MJXqZ64*Mobg1zYB#8ZqVb)hxlGysO;IL_fERf1eDn^;}6V3p_ zEm{32&h#^yn(VKb-8JLG^<(t!AUdrUSO=VmzgPBpVsv4_IX{?01TR$9mj3YhfVhd5 zTLQpkzd|RHtZn|5rsV8=!CBUL2%k%f6{u>*z2eldNZ%=T|AJxB@}cbAu|iFCeCfo> zOm-R<Bw`xkPiBtCe4w0|sx!BCNsj#dDk2lfP=M()pFR1%Hztq-3|!>`w}+!ST(ad- zpXrQk!<mc*V8jTl0SV3l&ym*ldYh}OGjeFw>4ZRWFLS#YoCc}}4gg)k03JzPjMB=~ ztbd2VKc^qK+3koB$v5R6hy_SzH1FN)nP?P&r=px!8z8YL&>IpTtkU}V{w!~&th6VB zhc10v3RC);`@+56K#lqV>u`QTMAX28{cl#7Evb$F{po>ckeM4!5JZ%*${#~wb;l#x zixs)4a+`b$1Kk1E%a#hnhVh|F+C=hy|J$Dv_~$V>B=*d92-I1c6^GPo0{g;Grh%hD zqVW;9AS}pIjW#I^TCJc^0l&}wHu=n||Bwg&6^8!_zkw(aK)Rqf!Qm?q2xkw-PB;S? z%{U4*-)FZ+U#WBs=_}Lez?r;oQ=ebH^-4K#<l!@JaU)6OWBFkT3;VxMghf%vUqL_x zSCW8{A%tP?U=FI`NG3{muv}6!S%LkeLF{KmDuLZ{w_l#%{&t&wA<AVFfEz}E$~u2f z6S3{`*?Z#ZriuFh>oRo-yi#sfq9e3qQpKDdo+tFl{P~#NFK-#1${%`-=&(0O1gx8Z zqXIok4R9DLP7Ffd7+!WQFdt9{gyRU?6)I-I>JNUIQ*Cp5h?n}oA^hZGn+HS$v3P1M z<KBpJpU*$n**@8CgUL<!{$EQV4r~t+FU$AN6Njv!9sZmQR*F`d1b|NI-FqY&-G8Io z;m}7WSDWWaS@tDX*q%i2z>~Y2&N18rLzJ%j<S?9q3T1U~s0;rRb%e!=)4?Q0g=R~g z?QvX_fboGPveiPCWQRkMi`J(RBa736qoy|5wsjJPh7q@i@p(9msqk0v?fQMje9e&f zS2XYa)rL^amH9kHW(7@kcJcqYXwN@bSdo=A%JW(#kBbpJla&lOMdMp`1RS0qzv7z9 z!F|TUpjNGj>{a)d^o)k5fbcPI{g3d!$wyLiddyoD?1ZJ$zF5qWpwzk^IWN?jMr15? z3BSnAKKsD`-Z{X6#iTg|yve$&uN8iWpkH3q2VMT^?alYKEBbnmkjc19mtX52mR@}S z;M5eJK{c9K7wOLJq-Ku8ZcK&8dCyq0Hz$PWvN6Q|{*+2(&+YCL?^TYwI34;sj<JO> zb^aRE8Q8zJdF|p5OY*@0zs7t#m8DFrKniqo*wpUeAA<nxDCGY9Z1My^Tx~BCP^-UP zQ>(G*eKudNNx|oFGNEWX86zrG%?Z|7UgG!rq;J&ycvtPZ!r5rK4ZD1IR2LCUyZ&5l zI`93eq>=@Nl)1!io&O0Cw#XFxe{`K?R9(xqtrJ251b2eF6CgM&B)Ep)?t$R$8r<DI zxVyW%ySux)y-D`j_ndw1eLq)guw+)vnl(oC{&jz(@odxq1O3!xMwjKs(Ea)PulzbH z{vv<DZ~l*K&KlPWY&^+Te88D&*d4AxhKf0)PqhY|(Nt;?uQ<pO4T!*aAhJ2D)z00A zS>pqESgJ<pC@KmH|3>yuCKQp+c*uzYVEab5-kr6On|`^oa%|IO;#*u3!nVTD%S(}8 zzU7oGPP!b5@~>QQ!XdG;$!dat!$L1JeA);4T#g;232d$~5*S=jyDcxTnC!Iu``dfO z#?M-kE-4g<IJz~(N@={B*xabpxn}cak$_Esmt&?RO?PE5T{LwLE#=M3#~E>ITO{(M zy}WgJfL}p7hzxSLrk=`E4_1vJCSZZ%luFl^y1$zgkvn<sR&2UhFOkI=h&Aspys!#e z*yK8k4C3*O>jI?Qn}?g?-sd|yYq$AnA=RsgNx#0GYr-F&1*JOk9-EpP&g5yhWsLyo zEWd9~D1KfaZVp<+zufGkDl;`KlVq2v&1OabSJ)!Bbs%hPx7K#qviYCuJs^5^c7CGp z7AhTG+pWf#QkO<^BV2e?2M-7QK#6eBC3D;__kqf;%W>;vwQ@CrHs{OLOZm)UUT}nR zG2)-(?tpBm@wC)XnIpp(PQs(SSPmgu8<^<JkVsbmpNL;&a9t<&G>Og&nw8gJ%m(}z z`z$J|#qxPzf%<c@@rI~Wqj?oA(m-OQTzN&sVO5Y~zky6n_9iYa+5-Kuzmc~QDH;b9 z3a#|)y8lzpJG6x4Ci8G$AE7_f{4`H$BdPU1H4j*m!XhVpM{K3h(GxfvBGL+hovtCB z-dg#VSNuCDB;xO$1h5C0^igAIJ~t;h?b?h7qv7*4#v;K7(^59HY7K&sdPCCz7TPUd zm%A%HQA}2P9n31|{EXGnalpyaKd;x{i#-n`zWGr%O@BO1B2rM*ai&PLvdZJ`6Zbv7 zb@KBSD7nEtzImTx^!sPE`A`AM!%65L)sqvL%Z)B%fj?VD7g}qQAP<wzyC<*b?$yf` z%joi*S%pxj!^lF@K%MME&~;lo5>d0;Q(0tR6_1z8IKMU`BLnfpYw~6YE-UX{PN`>l zSZqZi;tb`AcwvoZrWK?H9^mn^0h5ULJTAAZvuAE0fKhbg=Dc<gy~vS}OWo<S+SYI2 zZR&`0;0eW@%r=loptFjp_f2Fn>|O5r#%Q~X&>uy>mwUdZWRa_{nyp7u;o{EQ^8feq z{CRG!Q@*uRAUk)#<)>KWwkP)KB2<|kyqsBq=R<wCXnWVe?v-hG!e!sFzk$_IOH445 z?rm_MyXJE~?}60IO6;xI@^s=hPpFjtlRQ)9_M!x$(z1!gM5!uBr<gSTRSmZ6>1#t` ztRfz^>KTO^+EsJ&^&~nMR?=uzEo4n~ufozt@M;Sd%Ynf4(H^^^`jg98Dc8`8DI3A_ z*`fc&r2zHk4dt~2|1MZCK-HNkc9@)+3PFId{T^yJ0F^TLTeETAIJV^$K9Fwu%{vfs zb7Yv~I>4>XqT=Q5Mgxv1oLgMj?&Rs4gXOlY2R*McHird(&S81U#nnT{hY_4-G`Qt@ z3F0dS@A>vwCO<PEYq3cOVoTr!2tbyD1FLGfUW?Q-gC@8d)@T-&B7q@F8E%RD*4o<s zjwlH-^S^d5|G5<j1H7tF&-kOHW2|xkD59MLg)0D?gYvCXDhQf=$a_Fxl8e}tqieY< zg<#?s@x>k>23__%waEH?v_~eIrUZQoM5oAXSAFI9o&Nw?K6<SsQBN_TjMMO#ccVB! zc0)>*?c}^GTw)b8mgrsn4asS7F|5`f%Yp8@Z?E~qA+DIiM*!086y)>fM!?gN(e$3W zgUblbyvTg0bNz!mz<eCvoU7Q&ArhM0$<(eZ$L0XB+S+EYSMA}h?4;Hhm8`=MZT4j% z67Aj}smL}-lN7vR%9V@k{+2qdeJ0}gw9V8*QKD16+^JL{t7-`op=the^Y>~z*i*gj zmXrMlCgUX^(BdNbuZL>WK5d)OMC0CoVEX&x<^d&e2zVUPmK1JDkz2m!?IA46k^JY& zJQ)hL`AYeuXJ0}9Mw+EsxXUq5n6D;uBQyWMt-60EZF&e#o2vgVuuI>J=Pr{--W@v= z+h^8<d?nB$k&6G0urq+2EKo}B7Ek`ljSJ!*Np1NJz>yfde)e|tl{?z)iL0wQeP_3A z=Sy$6E=oZ5S_gbD6Fx-?c?J*P@|`=_t9AiBRlbtgRprM13OAKnLi0*xbm&CnM)Q3^ zTqoJ^V?HfX@mBRv;`k|4B!$H~|7NGQb#Q-lk>N<<$jNQqM1T^$laAd10=pNFV({vp zDQpZTBN%+Y3$7=bbUIdjn8bL-0rx4*;eH>Qrx9nefb8mIIXH|Tsc&y}G9YfP+vjV1 zQzA2_S@t0iUYGwKdY0pEOGrz)F@cF8DwWl_7Sq|G2d>iJ0bj5}mO{p|yswX%wI!{_ zY{iEPJZM@Ege&q9=TKllXM+P299yJ@Wk5h~x>PR!+j8q6NM8s@ch=w?c(YDRR9aHD zoq_(>Vom7yX>1CU543Wgp&Yy0b`Von(Pw0-Bju&H6tDe?dnu2@j5Q_^FLZSe>3??@ z{>*!DWIqxAQ+!MIb%*u@Be#oXm4xy`ilU^r<%IRL{zkVKyg;S5qQ;o)wqQ;y@|pRl z16cj~>Qz3lg3u$*E)*0!7v4L?%jzwz8T@iq74<_?6E$fx8Stn3Q|-d~3piJ}(`*SG zaG=siQXBf3g~RLX4!rTv5DE%lkE=J(3rBzu3B{kEL+_=lc-9`nfS~-&8Zxk}h)qnh z0F4Hw3z_VjI8MuBM6qg<s17hayn*-}%(7aLaW4X;TzO`i@y&8m9*}e#6{{0&Uu7og z#_cSeH7EAzdSf`*`e|EYzU`!ot@VD<;i9*v$Cpw*_jh9)z4n`m9JQa%U@5E)UjWa5 ztp8$4N(y6AQ<l{!WNO^M_C)R&lD~Y@alT;UY<%s70^mTD<yz+Ud<_kr;<GFcf|!jZ z2uKou*p&tB)bx)BcuOe~_xO0M$Y~r8C?SpU-<%<y1;GR5Uw)PeGCgAIj5HF9msaVI zK2DJMvCmC0$;8Y;qYgR{i_0x*0eNgi2H|AlGX+sZ81VqaqwuIOHA><z@H+5gF=Nmu zE;LIqHGu29)<uXx!3O<~#)Jrfy`=RDgE0<GJQeNp8piP04l8ljj3-25BN~8)O&i<j z!Mc8OcxfgW_NzX_L-S9q@U>tb{=#lEPP{+f#BsD#C3bYZN;{x{tvK&ALF(B0c5}zF z5y7h&V}RHC#Pvyks$4feiSuYUfkUA#;bgWt7|cHEXmW4jQp9mV2(juS?0<k7V?Mti zyT`Vrg@rtzG~W=V-0R>WLUse&?sTAJ3dHz{$D4;L0&ZS%%w`=&8FMFlJSD9C*%uKE zQQ)@&4U6*TQxIjW_1fOiHO~8Y!dm`K*Hy-KXzO4bsOnT<wD3jB7>D2(%hiPG&kr~J zMz*(7HQRke=?(^f2OA5_*7g0|jGH}%o$-VqR8PW887B?r`k*I*1%vasf8T!U>2=G? zvr5-3of1zCy?X^i-5EON7gJKn6xF86JS2n=A&XT*d-B+wAg>Iekjy6R>vat-S4Ds_ z446>!><5JBV}m!MD>udc{CcPXvB+P|zic2ZawE?5z0S{<4l9lJ4n^>dSqF{I>Ix4Y zFDKNS!q-_upUCs?gT&A!vM-fpw3G_<QA<}@>AGOG%(a5G^4h%k%*cM<B{y*OK<;l* zaC^vZj;aDpz9=ZjosdBIGV9KUd`BIohV<=`Hb)x=)mdRBkhi(7COh2E;JG~;*fjp& z+Y0k;d-vhH7}~I85=exTwL%LxY?U)N-monH)0Y4H>4s1Rju63{{UCJ26qcbP`R0{J z^x6l}=5hzH8!|5jFXQJ$u9Ip0UdjI76i{Y1ON37Jr!@~O^#yX8#WcKr6@j<s<oj4K z+M^~`S7o!P)S<S`5$ryPb}fLgBWGuyZ+h^eNUZcWhSH{2K78;|W~uVn*rj>fLnJ7! zEoMV=#HVrxgjX|AW0c%nXCr0^O)TDB7#ws5M+H@oy*jl2?p5$W^5cOab+F#6Lht$8 zfN!Q$g+xXnfzi9S0$>e&pku*k6b%nxH?-_>1LDk!>C-|XMc%$fch)ikm-91%-}kXu z+4hDkBainR?<cao18E~>i<BB-4CPCnr8o|zOLFRM_A#o-MB~DoQ#ct4b=FE+p1%|l zare93exNHC3dPN%!|+FX58>M4ycG~&^GbS?8(+2!53a<4-ls`m&Z>vS8ixzX3d(fV z{$CqZ_g(%scRv^>Xmt|Nrbq0RsAx~<V|l6sgC%UATj3YPO=E*Y$X54}G#o01m7apw zgPeucVHZulh3wp_cMYM1U&7G`Ax7|mf;P4}5fnz)rFAg*=$g&9zIZFpb$4O*LhZR~ zg)Y%=bcd(5wA8zDad9#J;?o9g65A~`-}jqKSXq#+9dX#@|FEZ3Z~P4?SI1XW1sUvL znzu3fYD|~Lne%RdC(U?gUnCG|GJNY^nINzqK_dDc0EJJwI?Xp(UgZ-^TROwpoTYT_ z4{F&9`0hs){&{r&qv1jr_a?>dv@pG?BXDj~Oru*-He~g)=mnzq8?drx)HdJ9?I8r7 z+>gYn3oe)MtMHz`dl$0WJu%(gzCZgpDNZtH%<`7*y$YQm`A0ekC)IbV&_KH<7Lq?V zr;NV$oBDRU97ZgR6DN_=1MYlF>IYaHQE#?sbM5O7aLzX&lnRBy5Nt}xM#76am5jin z0F%Xn5OvGT_T;Vyt}!f;(eMW=<T~EX;c_x2i;*A&>!;-#z$D<}{ShtGPPO?*{FkU- zP0``@Ckq0BFjt2Lb{pG6m9Y=7W*a<k;Zj+ax|ABlNof-QG*bS#jrdXDLbl99d(Z)q zjCHP&$4?F#G%fa@e%Eg&OnQ%Je-oJd@-rRKO670eCaGdC_smn}4}T3Y;&>~Q(lu?2 zJOWTF7G&N*&79UdoX{lKUIt7bo##BjuY|8aBZeHU8RWsa1^;I=H4R5b8fd1{{K;5& z?O<|4at*TFb36Tfi`zBjy;cGa2`<cgs@;|R<}Fy1cH7d@Qd+O1N+FL0#c^?070S)} zv3#cRC=VF1;;!2;Y=v?AF=@jbaYG;52tz}KmCbVe+|u3lqE$y(V$Miv59qwJ$_Kry zZfTX9VFW;Uj%SK^!iIlTf|m^IS*L}r_Bq6Hz<PLiAfkur0i5XFqbsf*fC*R*MrYa7 zm=MKke`;R0L_cKUb)DqtM6%yI5Sl5rs>O0ZMnKqRzlE>9hER6n97GisB+$$OFT4nC z|7NFNZ!!Tc+)>^;{ZxlKv_D;zTZn=LCiPXbFQF<|ZA&bU%j%)E#>d$#t8<-9vg}}W zrPkr$GYEQ<uh>{A{CYvwe7jC@H{txk$=eCO$zpHb2AjhLEuJA$Xb!Jg2yg;V@~<TP zGB(8{cAG?k9B`W{-GnlsbymM`8)A9{;&qJ3KzmT@Jqle#Hr$9Q&B98r>kyADf}gD9 zhTr_xXTAt(rSk6u@N8vjy<pf4ih&w~1_>#{gjT8v!LxDkDzr019%b|i<!X>XV5bD# zHs_c|%?oEF=ikdNa5_iz7A@fJd50)?8RU4*$ZWb2jEOpsCNrStr@Pt*%^kHvA{k<w ztC2xjeKZ#eRk58R_?{MpLh((RPLDhsr*jFZ9yd6UuM}*BB0ZKYxHO+n^Sl8+RkaO^ zm2gP7v+-2A<w9TgF5=J0l%F=(IW%q;1W&?0if6wR@a3^b3=rXvw9_}Di4>57wt)pe z25uMUx%j+&>d<hF*B&nO^GqysIQLMl|F<S~xi(rf8*S`bxhlj=))dy47UybsutTZB z`08PgFVF*02GnS&E!I#8_QtuiN!<?obj<uh)qhs;cEMJ|l<xQE+g%{T3VrW@4=SHm zQ&>cK6)+CPF_^c9qoLnD+`#jF>jRJ>01W#Zk6Ulbv*W4id7moS13WfQepFr<lM$L# zpeVox)ddG5uN<1UIT))H*&sjgWW>G$55eJf&trt|PV4YBAl$YS7K$XVF<uTLH8jm( zw>o)tA<if@1eN$uB+?mt0V40b`;fa6`$-LW@m0ZR8x$|-xOj29(TmlEPC`s*KAuE# zNf^r64pu7J->$wL&$&Z`W4x=W;+1>6@$dKvp3ja<D(Y8hFit2Cu(>wxMq!)^4!G)l zxZXifuCZqJl#yas;l4gbfuB;E^lOS==a^TvlcCyqMj}=``U{CaGKIv?2-!b>@D}VI zut&_m{)m>)Ltu5;2G0G>tkcf|qN&DmzrJHI3@hZtKZhz^?Ll5OOfS315ULeC;}(mi zM!ZW7M<eoX1t=I&Eg~|PcV!TI5{Ut<DBFkk!HI3)>$b`4I_tG%y(u(_eOy-uOVFvr zinStw5g1%x)MynfbiSFVu9p}<`jFIe`&vA_$AGQ=G6oT;1YgYHr*OtHENm{{{8gxP zYNm+l=-MX=y4)5J-cZ&+ti{PQC(7k%X{9m+x(AQCWy%-S6psnk(ARuNMQ|Mz)-U4_ zz%NUOehVdus1}lW_=i1$pMZQ@CS)g@Co6J9va%WSiG?8Hr0h`L8b1u=U`ef3`Mrh; zuu!$fSNya|)g^I6f`ozLzsi?e+uY3L-%w?<!k6iW5sfR5FMtb4W%UPsV!Gy-_UzXk zaHmWsxm>TFP`rYpJcb|b-hr{DnrBFZ2@DDlc@786td@ru%9SR*gKU;*g2|4GWroq8 zlNGiHHGWYt84{=*H=dG9i&u>S%wA20O;13TxXZ8ek)&+rB!kk2-U-@wrZxn)F*nA8 zRs6(ouK>Sq2gO$~V&S;abrP+1e&No*3I<hGwY3;xs0cDi_nQ;$)zdYiwWIQ=8W}KZ zY@;+ve!A)jPx2)If7Gh?$~mj>6=Z+iGBzQNYByWFT+I|UaR(<>wF22lo^lJtI%J27 zO)4fTEm}nVQ6;|??>_zpk`O6BlR6<?J=AgcE984<lZd9-G{D)L5H4@?nVFd<JKY?S zea#>=oPj<+++t0{VYmDG6^XbO_xgUy7)T{lY;fhoWHAYG#`XRV=+GXE>==4nFc?fh z0cf=DkKUlMdJ`vejsy#p-~{H58xpZJ%PUO9Cfj7ub;p@eI=7JU*|5gj6iz1}Ak{F> z`+dUbevw=a?sJ_Dv<(&`FC3DL?eTmtfXpx&%D<WTIsE&Z%S2>8I2Aq~HQ{Ksi?8Mu zaBmieP?&9Q%x5{-p^zU!*_~rQxQr7=D{#;PW;Aa~YxTlAXLaxb;gb$Jb`3aekY7rZ zBa!4Y*gp35<`uvzwVty)J*D=LCvGeg?&;pazcFe{?;=;~4jdk8zuk*{79EuNw7W&< zZ*Q~D!t?CmEt`@x5Mv~=|G4ppN~s{V^LeIg25m+qPnjv&>>`Gn-n9KhvEI3EzS@3I zx@t+b$<1^r;8TU3&i!EgDfKm{U?`4n3^De3^Bxw%LcK}iGpSN2AsDu0x^es$Yuua8 zq6IsTD-W^{DvWN$3HA=dL3^`hSCZ%Kw0VtWBPraWK-_G)d71}nsS|p+?!d?AVi(aF zFFkmmb)j<q?X&nyceC1N+j1>p{q?QX4Zg?0>V@v~Wge^5BRL2foflxal<6;{uPGIX zEqlL#?ruCa%e{%rskOP$kfoLxH`J^x_T6lHY`-Cq@Ix2#j#~YW>Wrh<cnZE{v5{{? z?)rEu97T?Z6iLRw^ed7~QmN>KzK$^D?I2+xXFMskRSOBRHzy9;UI9>!RKIe*RJeJ^ zxq(~uFyv3ttc}r0?@d>L_S8O8z2S*WkT}}UKy<1PXlp*t%-B!&mu+=2WTm!Sc$>kI z*i;lRIWJsV3#o}^Za3d9v)3k|`Yw9n-bb_!*nCzmM`6eoZ=09<S|Mk5G6%hqB^m1J zWT&&X$ku;wGk39*pMXwm34_Om$?0U>;h*6<RxV&={ZbZNPrn5-p*NWMoQ%KrBL#_* zRgfOK$Iza7srLDcIf7s)hI`A+Nyp<{#aYMA%E7+N#eLQJd?Jfe%>4CC%+RX08L!0D zKzvgZUYgy?OPWgTw_59GYSCEAJkVXSdPDa9dhC?Zbh_V9t)-tz{up4+uFFq18fsew z(}iEl065Q1F{fj`)?*?|VGqT5t}(#g;Tm@UqJ~EuEc92n1~V?wZ+9+u6-4|{Q_;CD ze{G_pkd7Tr0%^P0op}>E^oExh;;HNc$r_)UAHF5Cs78%ksa>{ip>ZnCmfF%xk1|;u z-P;tZw0xa9JU9p>wf;Plrv@$b!sSJuA*emv=x}TFU>iL=Lzvp(%yqm_h1}%$K}|)q z<fh}dFX2?a{MV)VDv@2IpcZB``3E%RCbP#Udb2h#5>vCR`j?p;7SV{_TI0KqQ=eNv zgi?AZ%P!<njkTtUh5R(`29d75PRpRn??uGQ<2MUH9bkiFDV7v>S!A}#%XjO*`PpC7 zn0guYlAK42#*wn*he<>6>P|F!m0_A#PKYoN&A3062YUl@5N71ck)AP|_4>HgpU-%0 zY5KjU_%qE9&ht4g$Wu=sLNGa&-bGTa))F=4{kgZncth#6FImq9yV;|a5U1ipXfsif zt~2bJnHx4z*qy4Kt*v|N3e}P)k5LuTm9s>vJXx$x8Bjf!gvJ{GIotK}{UxV^>6=3& zE&rG1WsvB5Y-fSA?trI27PxgsWlU$$KCx)o&JZOM_dv`QulM<uY!-!d=Jyk7gw(Xz zR%$wXl-?51D6dhpPI>v8LJ6K8dZo~aIF`$quhyR1IbQI^MhDX^qm4>3ayWqs0P;ur z0MOFPwl8i`DabletKJZ;i4~OmyfKXv>&P1k_f>s%zKi-*Zrbso(qIaSLgvF2M<th~ zqyCj;3ed^^{lovaVmXLHvg4ky@*y-D<BL54teHzFO(ndFa3M;dA{bNeh3!$j4RPVM zY)a!o^+{{-(ZcEK8sB*ew}+1J%k&Ucn3oS;McFUCV~21WBYDQ`Pt!~)b%spI@3x}9 z_h_4B1)z?Wi77m?>;LX=2NP{zHt97QlA{q_%yMNSFdGI$;P_=m+G;K--q0C9IHUFR zqr0fJI*G9G44QW`-Ol{FAYVc3h56#}+m^?4+_=*nV3Z?z&cQ)B5KMzVJ4lf}8nhsd zmzvQp;D`NcHu8nXNe8*-h^M++Zn|^Df&%Z_+$jpwi}Le+M0f90HD`&%eq+)0YGD9) zAn9UUZf9VP{ZZ2{F{lfKt?=1~GbN!plBt-7ih#MSG^9P0*n&t>nF`BorOe<g=*49< z*l=q=xegWI?%G(f#iqfL?#92lN5{pK1ymM%#nIQYRhGAGf4SmI*1aJ@TJ-|Dzx%QD z1?+wp{{A3liZrY6>*{{d4Xg9#H|S=K9h@hjr!F|cGi6MM)g|n^<Gy0N5SbFFSalVw z>2XfZKSnTSnr(R<slX3^0l-3A^RUdoKNUM4_-(eIFRs~>QQ|rC#@c-(*@vz>-4Q{) zb-v*Jsi;%N-5G*Q2!`(td@)o;_oQR-+7R_SLj?!zPY>`>v5U0tJiM4`2v$vgRR^fn zS?*6ekl;n{Xk~!J?-Bin?-rMA_CQe_Lf40)bU()IukZ#8$e*dB$Ys!?spR-q)VbTE zwb6a_(xwKs#2yhAkt5$90a?xIFC*MqHz`eq()pKr6W-HNnZA)c?~o2SY>s^JoG!md zcAoJ;q&Q!1=E>|Yjq+C($d5YE8=;9hjyXt`5#D>PHIkooz_&R%zO=mqrJJKrPwK~z zSdli`-$}dt7-LeauT+jWN5NrsuDw5e>gAYq7{I!y+sS}{Rgq(dUIVSotrGAd^v<9i zsp!w3p~DoZ4|gn|sMhE?OO$_a^6|QXJDLw?xpZ_qrB@V-vBM&4T``#;lT1IUHI5T0 z^XEejZjp$loLnaRJzLscNG}0bAKp02CVyU&*ZdyZP)8`3E=H|di2kkX8@kZu8AaA@ z1hM<>H7r&dAPwdTw5B!#BrI-UfEl#FK0PwjNEBbZ=gizd1SpCdEic%UZje?7^wAnn zJ)KmhszRswWMzIN<}rfb{DjOpzc9-_lwFvWStjB+JHL}^?|_oXXD8y@XEm4D<XO4$ z5#>KIp^j>CM)g~O=UQEyvcq6HVOvzi9{rup0J`W7T;`y4A_FH32WCh(q)Gw+rv$j7 zi9CGuW1FLh@eI2Bsy(&+GO-K75sXlm9iMk=26(Ayv5~8EVogzGte}A^IU|*1*3lUA zInRuOeDM9s;x{4!VgOWdFH(O6cu{w!9lV=@7OG5&s&)J0q=syZ{VP;wg0WayugWbj zV6Pt!my4*N%=zezJB5Sr7?iW(9ifWUKVvNr+>YR$)HFD$qn^YxDJl)31lof+7_f3W zHCfgAT@5w?DDmqAm&Z*g^$0(#^RMpgv>$+{S2W0Tukki`IM5<32_3G?GqpigXj?qK zSM1ryeJXVwz9r3@bC^w?bU_!hI60OVrc^iG5{tz|{$PG!iz+r8q%`U<u%I}&?Oj5H z)>ZRz*R>%-g?!FQeZ}s@YE~DLErD4OH$WZq0C6j(7#*f*a%i=@=s;)N&aYN7JMe{W z^uAc@Y@Mw=RWKFiH-y%TOfUMiEGm!?D*)n*W?l3UWZMO_)JbUJ+59?4R(E!BLNsg~ zWaW-l!zfm>sicmZ-#JrvlU`_T!+a~Mu(a3WS}wR<A2pBibyQujCu&*PKJafgV$;JJ zvfA0NucNa%9nmDn*}2E&$gmm(;&v&K{|t{q4^287t*?f*#k=SUil#N+GzMK7r?5I6 z<{o+@03|a0X}l~7a_sgWkf1#A_vr$d;_%h_AA4UIAE_HHu0Y^!KptZ)&<isR764D- z2_bu0Ps=sNMvn3Q0s-DAm)db3!EA!LnTGW-gy1nj8>Yenq=R<PxB=AyxIc@yj^`_c zvJ95{7i*${#uHS^?1dlM`;AYdY{}e49oB5qWRj$)t1n%iN(HIDt`#{~0O74t!Z0;> zs$k%UX4WTvv%|8!lu<char8iJFlrQ9l`;=peATaamS44G$0z6>3W1hH;p(0J1M_a< zCIUIZ2sADGiINxH%<Mx7rzacAN30pAontjMChFfnbtI%l1@r<l>1d6<XIqbsy2918 z?`)^IJjgyf-5hHTq^j7YWN0;2D^^b5Si=>mtL^X>mexG8lr^_m*TWr55Qk1<?&G9? zy3>FA7OtW_($KKu#cZX{vu`3t#`#*ie*PmG`7a_AqlNkIvUWDt1}tv|dw_qhTw{wR zoq7c&o9-*o5{i{m5I5tX!jGAnD$1B`cjWe#kay&XRG+pM)<(h^PEza0WulnnXleec zr}CZ^#XFBA`^+!@$>rz;s;L{4b|?JY@u-!@PY1WfQ~G;2DGuFA=TGz1E0o7Pw%~M% zB<n9IBz^?c>8TtXTbcQo_T|ggPqhO%O1btbqZz3TTeWjWv4BuKF72cJ=vh7jjF@q7 zWo#smjZDj+6>6m~2mRi<-d%ZnGNfrYFZXR7735tGHgYK;7b3<RB1yBNWBh6~%2jDv z_o=OAIzq5760nimm3U6pJ-^yo(v7`E4Uw=ubN}47-dg&^!>f5<i_`m#RzL2uFZ6A& z&x0@HF<;O1(P*JA6;iW|_FRMj=>e>g`U^v#2N2OMp9ao~TdBB-kSkX~3b1I3Kzdc9 z(1#SvCg(pccb5W(Cv;IF2tFH5<)*dgRvN6h^DqCtAVf???|?}{PrGUq&y(Jru471G zG;`<QeA?#gh-=zy>%63hl#_xBJUg6YU~>4xt-n_KsVXnk7+c1=t+CF~vgxhohXR7p zp+uI9+Sx0)`|D(msZHy8qXOsAs;>3&W{adVR4RpZ=d6B1X-+s=t$g*Ta)OyeCR1Ky zA-K*pPY7Ppz8!MnR`@Z@8vXaU7Hzm!AVN>P(<kAx1*U`1;-Z90tKr7?w|L1X(Ysm+ zOhGLS4tsMACHE;ir(_fnIjs@zFTzMF99FKTcS9!;ZNY$DnDh=z?CO<p#YlP?^3(I( z81{!^#;+Mn!DKmsfO*dzNqst#h&NU*EsktXC)D6sgP0WPKDd9CNhPq;6WS8MQoE)| zzwzV@bE-1$c(iHObVYu?(dAd<uc5hucHb3V#kvm<_FFmL?G?Qi0k)SM#HZskBa|#W zX4I#KmG4y#=QhM(?6qlKbO>g;x&+)J1rDgs&%@-eKkBuG9`!7{$R5t15$BfGWET_! zex>c@IY0lQ71GrZ)=dD$%E^crdr>At*<(L7DBGlr`(*e0iCStN8ksCefiTTAp)gUX zHQ|MPHgIWdj9!s?r8EUyYmX_g<FKqaS%>;qzCa23r)07$0p)V!PcCRzpP;7Hx<Wp` zQJN%{!WlFTED(xn3!Kaq=01e4tdbD2=4Z9a(eLHP6GS{C@zmuun-a@~rZ|E9&6y`k zxNG5q!WekZ#}2$}iiJ!D=&2QT7pSdY*zrE1UXETlyy+_4IoUtU5ZbHm6TKuU^&)LA zQp>W;<>-BZzr8u9NycivOs+P((8yKF13TaBMKe^g`l4EE2@3@B3DhBV?cOXaxs+6t z8V!vhQlnk4JwMLLu#UQg^Ll?wm=Ng05&-|xV7(f6sUhF@>C;1Ywk0i{e)8(;<|Vci z{<uXi29_JA3r<RX{+0Uv9ex@m^#)m%*Bj(8p)yO{zjOlhZ_zCIK6W=Y+<VZk7|Z2K zUr~KDkk08&zq@FjFK%&v&mv(xu~J-wWvC*iQ#Kf;Ik=}Ru0&H(W;cxfr6kW0cIpCR zNIaFG!;TOG%LCbaVOHf!rZ;H%0-d_^ockFv9=7FiQW9N$y`XahE2wK@`v>1nv@7R5 zJjG?rMg4OX>KBQZiZr7R*`|A4hvfGW6cgFL6w7wK<>zdckhMPNnjr!VMo`_2LR=#* zt?d@QV?-=w&z{x>E#jvbY)-UAv#@X3;qO{_&x!rpz)GeBHVS6+(~G@`7dyeY8_G`a zf~AtET`yiR&|2=abdFW)g0`c<0jV>%{WwR6)?gZ1CpFn<MLd=={N;y>sJ=7m9dZ&A z&sOh&*u9(22zT5gHAqTLNMo$!!eShMcC=U|t+?C(!m46ySwOYsdA=G4ne-cPQmqA@ z(fp*Jk+5M19axb{6*w*ZkaD$YhIYJ_eh}E*MNj2Y>=P63FP%vilSN25qiI2@1fHX* z0|i#A>m*Endfjz!qO2cQ;v}u`H1=AwAhckH97$h^hU*NiB16MOrrOfj%`%yvr+jT- z`LJ7R;zvpyvoab`-Iu>RS6*NrAN9degW1;)c*G%RIozWc9w#&HtPQ#q7wWB8&UgBP zW!Gx6<MAYMdqF@#URh2=A5O_!WxS}HNDBeBXdiuX#(ksX8d#_QFLR-e9!Z|I$Gh)Q z+oE~0C9b7o`i(9;C(D8lPS@)KA8GH@`E@e9h+oqQUi%v!t-s&Ci$X9uNT$&!rVc<m z%RK$m#%DL{*plUj$cH~wv$9^oUBfTFC0}f_zbTUD$fr^#k~jPf^6~mWvoXE4l1yKF z1Rjq&m$iScT(2r}S&W4!5r}~^n1tsBeM{(s&5IywtLA)=nk$Hst8cd<NkfqH@12O- zASm}6B%oJ3l>;j$DJp%n`lNCODbZz%l2Ch-fU<&y5NjO|IDvgCk;%BH5vI@IEPw_h zMobc&`%4tK!Rkk-8sioJO_4}1F~)7rfyfP-xlQQp1Wp~*M2_Y0v|N%>tv#eE_f#J^ zfvs{~sr1=ck-(xQ2Dl2l%SnpM{c$C4+6}}S<%en0frP8MX%<hW8}a==+gbq0NT8`d z>k?&693{vW<PF)K#uM<huWZkG)&KOc4aWPp)YnxEkI47UidPhc8l@#>r2Jt5@Vom^ zLj`o;1~yVSshEuy+*Rkw@m&%o*XC;)ZtygTrsT*K;1YsvIDtckcZWKU?(^%mG>E|l z^&BLuZXaPjikuxUsh~!9Y;>Ss-XisIsN%%7^Wq0UVRNDXLIM()rvuAmvb7dRHHyAK zh-cc&5BkKBS)q>2iks7e9!f1Xq;izy#N#<30NrU<eOKUU=(hhZPX_kgSLlV~cM#?W z!#I^j%c?Hwyjt)xCd=ur1(?&t-ab`E1xJtPH)k8<VJs!*`rB-@L35c(6=i^!_FgT- zb3H|1G?>&4-e6`=Yb5ABwE518+g_R(Ql;4#wzvMJ)|;p4kmN6@Jt9fl58eQj_P1uU zGeKbDl@h;Bg}I2{pO*f=#3HX#&g+*8vgTL}rz;zyHz{V0a0(1=ot5Tw#MbUYoo5#z zk|ZXx&YCo_m58v%8OQDIZ7%Df#d@byq?<A!hEe6qL#Gx6m>efmpC_Bba1sg@s4j;3 zgtzq=O11F}P9i^n`|GNnqcDTno+Z;)#vTx$-awA1uUp%Uuei19F@-t4(Vca=_@+j$ zdnr5^*YYNZJV>gbm~&Me9vfXE6~-+9p38Au7MtBs)d7#CNC92qV1~YLN^zlp#W*|s zZL07aj-Y{=VuA^~6)nXVSK(wza(Sx-+@|l|g3o!bEg4V63J^t@EHKm4K*o?hq#M#? z(X;MzbT&@C=3;4^a6HI(rrF6>h<afiy-@uQh+ZICy;y(WEuP{5N2AhOp*ad(FtU4d zxZxXGpZ@&(HL~yA2S~!yd0FwLKe&OSoOT`2xbG<77qNM^yuapj`rf2XqRwPM5`ZQU z=mR?iG|pEfYtKfwdm|`hO21T~(eMWf!iLk@nF8T)fbVYPeTPR?hK_2XIvw7O>2jy= z$F5q-<wZ^1p(p(Gvbs*<mVb=X>x<T5s8ag^|L%~G5JT++(54AC0#AzQ#LqOBif%n8 z><VA{z~Q`z`m|SSI6u5o%SC1#HKvu*8e;GfcAd2bq?hPw%8k$uVH~naX99*F0}-Dh zg<#3PGG`&V)EvzhbS~GRyqntD3e=p#<8;l(ZGN1r;IKX7_Vb<~l@UMXr-X-YIuUMF zV{=1G;c^Ob?+}WF$l$1T)zK?FQZQ53c^*fNqjQF|-02N5u-ehNZ}i6CTKy?Ebtk59 zY7!8o$ZmxBoOKe??CF!PninB_aTE*nCJ^<r*BJ4lLHZdWQ<RNMEdAKMh;Z=(Fsrw! zf~7D9cyGY_c7-Idy7ylqbo#rV%+7Y)td0@os#WD<qFQau+rXTxXedlkB{WuPEzqiW z9>%LySn8?`YKLefk^O{Asxv>M8e_FRWM#E{1TWVe7M~fYsb>#O0r}(NaNviL`VS@1 zXE>4%F88iviRBFF90&MyZzDxM{zD=`@A1aB3=tXZn!h#4DyB<Cy;fWm$y#alNtjQM z^L(@Oj%tQpdz^7HR}mL=APUCD5){HPNFT&T?9Jg_)0;>{g+wa+dw;XO4z`HXX`R9a zhzOEsy|KYpMUH=2h-8uxoSF(nIY=a%yf>OT{?6$Id$a&t+|eABpIcdjDg9Hs9GWjH zLgE44+4Hs|$;jT&;1cr-)k??!Tj5!(;<8DqMcxK;YBfCukQI(?#^;ED7o-n#Y^^k& zkxAWgjc18?;y6(pJKmMoUzQfqNp4e;f)A2>Z{;lMBLry+RUmIpy^PPGs{qD$W&(lo zABHX?ZG0%Sb-DL6lSs&{Y+B>Ji1R{MiG3C?IU|Xo08u^{qG&l3FGFyvgmeGl<{r@s zjW+ur4_2Ak&`Vj4vcQ*O=d)V7A5_c1zIEoPOlT?ybxcu+U;ZCr46k3&keR|UvP*AH zVT<ArN^QWLEBbc|*}8d)&zVWJSa2Ok-$#rNfYAju_eIu@k6u;Gej}7X41MfP=ENG0 zfWYrT*p5GXRBvi;@?EaAzrvI_w)!A~-0)kqjMuQ&p77^SRw=c!UQf1adyGUYVd4^m zQoq)O;KZ_>)fIb5`cCfAQwKN}twC0<T7nHr^kP+#lP+4mHLI;&pLl4rG?xKApMYGG z?D^@N@885DB{@d*JppalF0WW=PNp7Pxo%hd1v+`iA^KR{M7~1duObe+44neBS*z9G zA2ZTksh<ep;PzfY&1dgML)|qRr_Gj{3dC#!@ZeFK`hN>%mGFH(oNZ9>t{c_OMtwe- z;@35Kh{54Fo!nu|4*67sTM0~hDY1{&!!vd#pVdYy)j1!TT|JP34rU79rex^$N<M`# z+uUxGjGBpqg0BpE|1A&Jq<@>T*?Vf@*Ci+Vl>osM%voL8aBfe}_8_GxS2erx+@rh_ z7dS>IOaRVqoQq?ql{*Wwt<&ixzW3nD%wMXM&AyATCdq~%l}vqDU2bwhiM(WgRBvfh z!K@$d_9(S#2RFA32u(k(3#0Z=L<*Seh<mR?cAg%<r~VC_L8)Cj&PI{g3WjtwV)QMo z#{2dmlEdY0?0K!VfM~@AecUbvn@o)EhEkIobpa`V)lHW|z`DLxitI!EEooMmf9ALe z0zRC}1T%VTc*!lCQw)u7Zi-pP#L7pZME#)OvT^fQ%}E%@AnYbfG>72c)L%^w*Obbt z8>aqoUUVv8YqaWQ<kr1;#h#o?@=-U0{?BA@7yG3Hnc83v#a5x)f#v3w#A@~7?qXAZ z3XST}-(+)5WB=iVVlj|`Yt*JE!%jUi2gFU@$47t5SCLp_S`dc(xbT=z9Q@7~K10d# zg9hq`k$;C~=I`3&tN`>LE2M<E0BP1(8<l7N9p)lLUsorM7Ke=UGqchx()6;d&CI0# zS;rBQ-sD-Wgc(w|TbNUyQ|v>Mx3Oa9(>q~QK-%rMzfWL$h(F)-t8WUA@&2U+M*XqO zmp-*1#=gr)i%4-%cSFqQ;0L@G+VAzTU<1qimyU;<O)XTvmtG>Jt&GI)*M{1!md-(f z&-Pkhm5_s~?&Sy^fYXUqV)x2C?Tu?scs>8_m&LjapVSMR-ZhHq<3#~@Ll6G(Mik_$ z{i{Sn4vme&;6m<9E}Q-+LqZz#9pikBl=qyax;@{l4W}Z&m){%`jx1M8U|}6q<W<*= zuJnBSMFzj|9sQ8zFr1e5>SzG|BHLuaV7%o1^vWrVbOnp;HnwD5+iZ~d^1I<(f(=SS z`$56wDDz({P`lV~Z6(^E$0xhP#Tt0*$lA@DuF1_vRkNY~X!F40E_NE_d|#~B&6D5T zcjkBZOaW7Bl;RQ<3Qu8WIwI6uyzu%f()t1Y9|mAk>E1Ro?oq!qpPyW{HoM3+<8jz_ z0yNm~86q;Z5#~oP*EBIh2~cp}T6r#f8W@&lKPfn06Q+L+A+LUFR8t#Fb!XiSX-dm+ z(Eg8g->(>)D;#66#)q1{%x=<2*`BxXh8XSQ+?@+T8q>E#bD}Za;nq|YDa1i*EI<dN zVs#J<b!F72r-P!tJmv{ZVt5;ZW#;rnC{#EGYWFQ<V%0HO`}oY=fy>my&2&`<E}DOb zsP*xLWH8ujGjp*Dv~Or?XVh4ST%?TNNQWts+uTK1hd`+x=;t`Ac`YQG<qoxaKIv#8 zyI$sb$|lqvuDuf#L5=m<3H@)$5zR8itD6qlg^Spt)+(%*+}pxOm(v76%Al7c1ttpI z8L38T8`+}oXut~QGZKh?N+|{A`EVsaWp{jmtjuDNyUuXo(_(wnwkoAlX1AeCEUcOG zhS?2=o+P>6rl^!bE;$UHK-25j_MQ=W{035m5VsSS%KbwRZac`ZCn|5n&@d2h+=met zv9o0%yM5A&TIaCBue-aq*B01g0?uZmr#|E{R^=qPa^!zsU??zZ%nJKK=#|_2L}|2e zZdzqbg*KLs#!`&TmeQHXnC|qlI0QO=-~gCU_E$m8vd(1Vjv^~4dJTrO`rO<Bx7>8M zexmrNYbo;h?Y-;Gu?rpjHH~+;A5Nkm_UIK38p9-WV7IDS&NNMwADVP4<)Iv6kDXZu z2U5+hf3)N7kHR7#Wwb!#v>Wcz59+|NBbo=NjT~l?FrZ?|aQIV`b%3{D!)n$R8l!^! z`)mK}Zg$t_<+*^FURHXeC#g+>7U@^m7{u*_8TlovF<58MzmpoxO3B2ZRPhIk7f&Xl zrdH&}rxUJicv{H|kf8+Z*BzsHbiQoP%Q4A7blTe5M!g9%<K=2T?m)~THiJzw!^FI5 zHa_7t#TG&#%q-1*^+soZCFmH<!7%si@=xMAA%imDI-d4FG7uo6ffIl<!U&lE{SD*3 z@*q3U9mLHj>95<EjOF~^+OlIls&K`91vs^Wz+frab-Me}$<=!O8?T3`u%zk$9Lq=b zL3&*E5%}bwPm=4X2@;7MsiasOzS9y|1RHjHd;_@D$sfcu`$#pc4Z~PxZGmmG7tbt| zuzf&jMMM(t9cBptU5%D6ghV|xaD)AIv1Vc3q6IQdXzZ9IC}LZx4bTEL0><l~1&NPd z`v+=}k36f>EQ<e(lFfK+uSjJOI5MM;&5{#~Ab_PIl!oufr(H@%{M9S{+fMbDq<I`l zf4SrFuL!*f!X};Z-w1x);EKDAFSkUK#HM5R+(d>maab3~ZLH~#VomhkKvG#x6cNn> z1-Lf(TO$X|p6|}(3;(=y_=3oO`49dx&#83!`wW>Ph*+G7b#vmmA62+M0b=z|5-w3X zTp%16iQPXnlLn7=FYyRDjH>rKH2m`WUxobNzx!_ms^3>|#nYtImQBh|-UIh#L(4{t z$_Kp@N=e6_B<-<W$Zb-OvN_1CUkJAW!1r_W=4S@}6CoLrKl&$+wKn;~AI;gnwRzf< zZ&hkjS#6(b<V`O;L(T9-?OEG68;HJShP<2Mhoc{V7ta}>(fqOV2m;Uic%K8Cbqk&a z9paSOBgJ8(Yf?t;S_M)u8JITmLX@aL0-dH9xbd1~3e8zq^WWe2?+-(;1*^8^wz!&h zdaZf`S(ev;0^+tA4jej{en@*P&LP$dPB@X0+483aKmE;ZZwkGscnAIi6*yrM&mpAQ zSIocP=(W`RpXcD87m(<0(F6ssVbOUhUT4ZDAds%?Qz`MQ>f@i|@y`*jM@AT9t;f@v zdsT$|_j~^5zXERv^8VKw(#N(Y{`wWya8bVV&-ZQ(_^atRH5b67+>#G|wxQA@o%a{` zNC>=hVm1UW##-+G9@W1;3}Ngw!%n|l`hOQ}|M=>yA+L#DLJ(s0{}rtF-@n37A3%Tz zF>2-gm+R%f2S-x~{0AY3gI#f4?*G0P_<BgMeH*w`=+-W*6Z4S=B4-VV^@*IgzIJ6N zoIq6yH6(U?ll<A<<SxXn#SJ2-?%L^m^?gJzTM1y*ZQybq{~yO~wZLl2i*W(>I2OU_ z5X+hl(1J!+Fk9{f(sK|nFff|?Gb<7N-hjcu!3l>`Q<VQ4hEYI|h1CC={~A%44~5O~ zf<{$y*Ve;=Kmtk{&CF-`*JRZklNq!Gqptt|9&}bTYEw{vr@wVKdnO9}@IcV;XVmG0 zSF=j+mU!5(#2J2WB>sA1RW7DZfItM*%N>B>Fngq(LxUQkM7Qj=NlqC{L8G0dhP@ZJ zAi||kb37LqArRPGhiN7Gu3_FPHP+SK3iieA(r<AO82y5MKvAn@ph5Q8)xBb7IbF#H z-QIy+NjW%*!L#*P=UK755B;vZi*IDxe~6qy$(!er5Pu{yeda8x>5mZP?;$EhdV5WW z);23jmz4ksG&zBN_Bk6s>jki#_^0zP$d17d9+H=`uFs{igcw5WTDle~@eEE}ADpQ> zy?DflfkZlS(0=*IKPGD$(kc)Ux5zCk9?>QUd0Gb)ORtWNG0)cDc_U#Q6-16z=8*^} zQs%;JhY%GzI;}mt;*g#EuN0fkjL#4MUXEWE7s|H)cZia(Pg4hcGpVZV9pMrp7~1Ox z7)W;t9?T=<Eb@BEQ+4<J3Vn}<49MIkAba`k>5u#dp8rHv{$t9v3-h>r#D22*{2Z*_ zYW{RZCr>kH9LF=4Pz7^sI^%Qop=Lnv0C831gw==MR|ug377SQW)2?{TPRqjk&WtzW zW_4)6mYW4YLOq%-$y#%vJ(4N-0_U4reTKl{45kWBp6uTMn}6R>rDkB%2u6fu)x|E; z*FoOeCTol)YGSc=52Ogv_{^ll3peWX>L&`O7c!B{7WQ6orm0*m?N+Ji!ZC~@QR%BX zZODk{Wr$;}qVV2o%&u$ay5gxVZ(K{%*MOs?-l#Q>AUtOAqk&+Rnp3rUYd_?LQqVw4 zQBl23Pj{9W0+3%IyyDi;6mV%O?D>yD`s)S46!_(PZ8T%nZ|6W;!{T7Y$?)k4%WbO5 z3o0p$P)YiSa4edGm7c;unXuBBmyRoX1s<3W_*$tkGzIm-2=0QOWXZB4Jl+aV{N?e* zTAk(72h!oVV7AEa0vaHEL*N*DE@N}`Y|~zh`OYI$>N?0GBNKi+*99r=%g@jAHTofd z`!mnCY{bRcn&XSXHZ=_1DBkDc;d+yMsz;Uk9XzVR>u=K~M4$s8z|c1(>d)>51HaX+ zw2FK5{@_D-Kk0w0C$A6hASH5n?X$?7S%AU2*yw@|sHW1S<E4ckOek5&MENZ!-f*`l z)ZUC@#TKje3<?Z{vGF-ZJ*_!m@+Jn69tC8fA%>W2kNV6bT0J-Pzbt&WP)=Gqt$P!7 zYF=LJY)utM<-|Og!usuKy20**&Tt)tI+=;4-!?K77LN#k;v6E(>UMC^s;@Rw8py5O z+0h$B;E&v$O=NEj-d*fYHozl|nH>~DZHztTq>eRey$ecYhh;0*Yg>JJf`?tG?&x>0 zlDh+d4(ZC?9~EoY;jcJUs+=7d^Ar@anl7(83caD*mInY?q)?;%+4s!f5RSHo`t&TH zPBrP-|2Pp5=)`#*CWi9v4}7c!UelHTp8fosZzZUoZ_kL}@VNZ}4SXcJ1$z+Qmp8CR z@_Z@SbF2I7;w*V9_-IR)=j>)1jKducbuh78?3MTFt|OTc+X%g}WGn#YNdH^7@JPdL zD0i!vez$|Miw5s;2e4kRrYzBK>P4n5+#GrWScLua#Wbn6CiOScsV_}0Z;l)<yWyja zerqrJ)H<DT!G_-SjPUtpC}-&9E;Ta66e|}{VOeg?2PfXT+*3#Q6bPynE<NV-Ti)J6 zO&ZRB)HR%JTMgGaJ$`bka=G#uQmk_&^4EO&UT!E+c|4B{-`Hd`Wm#8GGoN1x;K|nk zq(OZp(A3LNAE?e%ZGrj_jFC}o_3-5L_yH|wVcb=<<u0_JLC-SG-1(%9@ATP9MfLi2 zkD>nlLkOT15jUNxf&j!qK|nN~)=)N0y|uc*d>S;aRO4(ZCLR`-Akgi@28$ku=38lN zSvU4OnO;_7?-&|_We}m(Yl}PTzdE?pIbsjOV14sW1Yd80TZmSz$p_gwMG}t%EmAP# zx0NHZVwB!Oy%CwWrAR<sB&qf+EjQK4<|$;iYK~vG_}ACK%>NiT#rQWX{8oqTV!^(& zT=W}y)8n>4nLY}>43Ed9IrGfNYPnDCx;OSIx=ED6ot2T7n$Sx9bBAsnT(MXIOXYcl zX(IS#hm8IKb$fX!cJy?k7GF|}bzi3Wpa=bq#RyK73sdX_pz`Vsn{TYmI<B+Qen@et z&$b<9H`BplaG(U8Z*^5qQI%R>TW3l<(a4+42f^%3=v)Ml#IZPliK5bGzm6TJS`W~Y zBbK^{oBo{Q3-r~9=;#pmdV+e)-nq7CZw0R1+%sKcvt|Y~J6>P{H6vdEDeM_~RXmXj zV6LqBo|R{*L-yOrmwC2&8y;ma6<&w*y?;w=u_}@K4W|5HvcFB>PKHtk{)mVvz`MX> z9pBXI$ZN7T7}vaNue;T_`J6vI7MYzM_mjX_qXH>;zLNN@Q{nyc8h?oQ<3jDqShfN3 zW1Z!v0HA>j^gd*_ZnxUEs0=lv6X@G8{%1^!5*Y;xx`R&-cIkIV3s{0z>r5(HQ!fC% zJ&$0$;9bpB*i^pqdjMi1Xo=*<d0w{x7{w_U0Pso}gNl4r3W*FU5Muj@(sY^`s20#Z z_x*W@K_>rt4&!{f8Wj_4!T#HP5$!WQTcFlt3+w3%)78H<aA<>`xuS;z2?^QyYQ%_o zUY)DBy3^p6CD(x4>W`_~St=c9#v_u<&tuSA9bN0Nf4IgO9}DY@8A?o(d9XEfJ6>uj z0e!Wf{r#6EV=R**lG`aYuAj<)w^bTU8Aj(Cj?40#@v~}E$TH3XrKGmifp{uu6(xt> zJT=Jq^v&LcGc*JQM1gny?Fq8)2&AkHsdyBE!9=D&0E!etMq`~Zaf=O9P=-k6Jq&iP zmkwI^l>~ASTWC}K$pKF-sU=;(0&qtNlstQm<=H^XnLaGLU|byVY&|(`&BKc0GO4P0 zLXpF<VM*3@r3AdPO%yl#!e*!BOjxehANt{&8mv9!pC{|YdQ(~8$8#hy0-~tokeuLf zd9%uOCx4<9LZkPVOfN7SdE6H*6kGws7<{AbAabd~-226P5u&JqC7vsW7(VL7jFTXv zO_4zYit-<Wx#w|?S|>Uo4%n4$E58TfyUI*2<dd4rq24cE<faQiqw}8;dQY+61U41E zWUXkTrP>`Xh4ya^J%o1l_=JW7<$NrUzjoJdn}F8&^oj?U=LemqbpgQ*6m)!o*(lu+ zOkx--+??BQkoFJqx;K~Pe!51}_{?e>Zg?CaA9X#7MPzKeV@OlF(-0%9|J=^;;Fo;T zyCsQA!D@OMWtO_7uBlvBXe`flpNtcmT<j%NJVJ3ft7}Zf+=lSYH+Sh5>mGC!$pWnx zY!B%&J}eCOmkmCOyg?6C1vA?Vb$TL|kgEOuRh8We^JTd)<gVgpT4Rd+O0mq2=1x)> z?loXi;e&wx5<|V<%~K1dPyhe;ddr}?wsmVa5C|UJ-Q6WP1Shz=2X}W35*&iN6M|3N z-Q6X)dvLcqSZl9+_CBY+TQz@#R4UBT`{??%r!}BNdQ-U8G|F?6Z5{Uk1Ex>Yl+#Ky zWH-`2$dI_d0E!e4j0k@5@EegTR$kL=$(I&&mY3d%R~9#{CnF<xpJXQX5cgBoTxPf# z9eR5-Vfd>A)D7D%Z=F6JY{(U7ooVNSVj=d_Pg1$%h6Vr?u~~b@{D`K+s}y`1PkG`R z-^bi{U8a!n`|OI!&ji2e2jvA@%SU4ocuxk40Oone2m*!-Zcp8yp!EqPDYY^Mf@V$J z#j3A!stH7+&l?-p{c>3<0hNgZ&ks=)Q`<-=c+Cl|A&W{4N3TArUFC`63y(nIX26KM z3^pZiXHbUNQ8xV^B{$dZh3H&UszMh84%{FDsxdA*q=c3)mXd%kBT4$Z@J0lSSqM2Y z%b}%Y!sBEXql1KDkIoR@<LJp#63;nTz<ETO-QWw{%L#HJ$&WWV%UeHo%tP47kASXm zIX+1J3&Wva-~jFxtRg!$3#1M@JCc$;2F;T<r$phb%hIL@c}O~h?Ml?jV1Y2}o={Y% zMu%O&!U$~T^m&Wg!}Yt+xT3WNYFG^VVEkqm|JJ2e8s)C7{^;488Elq~u3jniN;epj z$%v&?cH5N?;!*g*;dLi5T;dEfMM{XYs%29@W*^h<;p7X%=)VqUU=oOi{o>H9fq9h? zt`yrAt|87wjWp*x&TNm)73+1_#!u&7e(ZOCtNtX}EGu@|16IX$Ut-?DpitDfNhUKP zqnrz|jx@)Z=Htqc#iv6Y`~%_qsaDp{g18FW+9$$lCUfc-R@?QgQf1f+%6R;!Pw76c zn(JIAy;jiwEd;ThyAm&{#l8Dsq0%bn%hp1BA)V~;`UXq-zQ=A1=J4Lg1U;$`Zf?ou zY{`6+vyU6TAgRp{N*OUJ6mp9r6!RVaUa~Qv_GqhPe?Xdmr+h{8O;yL^18S~HFcRaS zviEI(b*uL+L6zw}OBb_j`ue7p%0tvr>njl_gH@_+`>c!vMkxv^;oZU+GYTrW0eMGG z>eB$RDC<p;uVCB&MS*&s)i1?-XpCE}Vbj4!VuwHj#_c+pv`O~V(-J7L#2M;b5cy1g z#M{xn0|JbG7uR%B?~_8$CRvp0VvZvw8ks@1dZ^+AuXomzT{S@QZ0Myze~UDNts|S% ze~ijFtOhyI#OkU)(JQrqJM7W=Z5DhfNlqO$3!aNb3z1xVcwQ!a)2IWA#ECj#@pJ*- z&$UZw!M)W8__Ce%=E?0QxEwZ$*SqxV{>5Y#cmno9Qi|^L<$BQo6jbtTzFfoQa=KU| z^{Gy=#D?$qcQq8i<cRuriB2?Xxstco`NGB$P3OB0>z`D9ng!BN6>8jIwi&lW=d72u za#kVmZ~v?alRo5(>Qz=2U&6af9ch^zUtJD0*@GW_vJp9`+F9SwfGCrAX9S9{o{Il< zXWb*A^ZBFwRK7bLdEL2~(GKUyVzuc$U~iBCm1%c-)^Qp~ac<%~cFvxIEwEm+Mn!ei z^IaitziGkWN8mN!%WUz+aiim**Shm)W?VnR{P3QV0gfhz+rB(37ZMwM#5jIiT_S^4 z)YQ(<7F3h&hi7hxmzNh!`){Xj7}0tAYx(aT?t70VnZ0xFrVm3ZrTK^0V)KZ4&8a$M z$ROG04^B21LW3;2#WM7fYo_BFQhV2k7Wc;Mg3n~NHeoAjDaPM=Avm{1G;lsH6nM%l zH+fU4^Bo&hnZ0PEr`i7tHj1awK%raCC|Imsa{W`x8;^Lr8f3M-*t_;g?x1Dv7;Htm z{$v3r=-_F!-V!QR(W|AL&!-2QJ`sPG*=WvcB$XfCG>R~Y(miE+C<Qf~f4re=mh@D} z55~-Z`i?l{4L1@c2m`9EH8^<XN5t-o?PuPS!gfZ#Vo>mk11jE!V|qZNezMVaM(B+u z)Eni<;$&WNQ(EqiqwL*Uz=4W3dRKj0{x@#qzLH4~T!J(_uYX%?mJj8HN1W)6d#*7v zAmKa~QS@l&iW@iYd!=3VdWqf?nU`NVR5{-)s7S;s1pKptndS%M4ngOxp>0$*w;)tE zv35PH<Jn<wR=8Qn{b#!8q;sDqkpg@!pC5q$^(z}M5gD=R(UxPG@;HvDQ%ihH!`gb* z#_PM0hZ@J#0}<XOE(@XasLj|<ZNg|_)VIO;gUr7Bg8hh!Ehq_OC02h4+Asp-gI!<z zjC@>AZc$UG`FI%fC}g`j_`RJB3=UN*f(?xNbL#zH{}@;c4=4TTVn5+?LmK6F&Xr`) z%2vv1Yq&gZ*Q^pf1<uuhGO&NKuMwydh>|(&HZ6fW)GMAhU9M<kuj{KT>YT10Lvv6& zgs0*r33FBHHM7MlbPuD^!=b(6de3DRBNDc1jQXRE_HDZ-qkTrkGPwO~X<v!tGPh~U zcY#}NuJAGSku$_IHRf=rrwh~zMX&1iI;*}r=FbFhjQfaNxDPpBw>&~(u{gg@2&Qwp zpq>1#p#W9#A%q}YoNc#s`{4RVoh)tLZ3qLV9$e~daHB1)ga!oebE9c|N}*J@=85}1 zjE8<CPhp88;*0bG0=-xYut}@m5h*iCsAS6{O7~o=EO7m)oS(e5&Atw%V?*7ZbZ&>D zR@z^hlofe=>Sa(DyVsBJcw?f%2m}Ep3exv<Ed+ke8;YO7>SU>|6ObEMx~}=Oc-^B2 zAYy&@@qVQ8?^NbuSgIA5tJJS|@AlyCkIDhkIa{z1_d|X3*D=o%grnSiedN!E<pikh zZP-TnpD^){y#D-w-ZuEX4VJBu^oMVKb2Gr&$)-XR1nw%Sj?KlrkGI$2`Ri?K-gk&T z3^LyOpxtf{EL^9PVYps<xOIa{KXb6$XYmRJT=|-uRS^ALj+cXs(YCCBxVi-(c}o`l z>iSwV4r5f|rwcva^CMDU1WqWByS!0xvZV4nZ@b(9m{uI5KjV9v?{23rI_i(FG9u~- z8JSkbRZSX#Pg6X9bba8bQ_X#&u7=;JE9b_^9&#_G<9|a}Ue($$HcpRE3rg<fmP^i% z0u?jARN!>Dokdb-eknu;V>Ry$3hxbaB{cbTQz&OIB&PR$T1GgWn=J?`73W`q0`sv$ zQs~>md%ZdDo`GZIU9NuTPCnUaPQTUEFoyfOtYH20^A?G&#rllB2iyto!M1y^sk$2O z=}Gs1Krp!8huSvXuS}Mq-w@Oa*C);AiXoof{4jP0#`L30w?1?rF6$NQK<;?1%o`V; zfISf+f39e*i0h@%5sG%+TI8slZxW=Y2cN|xi3ztTF{@|2>(;%(QzKj*r6b?2!V_Pt znzmWvlcLXn7+G#UeIh<%KKa2BgC4S<!DK76wW;2=<ahZ}E`9JMne(zhog*e=p7GwF z{e?$gv!y)D!}(%a;XBkKwv!;yKQvdk^9?$t(&@}vFq2B+(H#xHrWGoTwb;y7q9|}J zCE)RDNj|JuDi;^ER1GIm88EHPi1BlHMF6*c>M&=4&f!1hx}OH)m@K>8q;YvZ7=L-n zrqyk8GN+>u56BUCEv-9QYmrPUEZesQswr2x89X^3B9C_@PlF?{!|8oXJ7}85S1P|U z(<qtM%x>496U2#=ZRAiI|5Z9sknroB%Oi_Gcy>lwp}MCA>-t8KvCwqQ$Ywi-c6~J4 z+x84Kk(6mgKpMR&AUR?PSGHWtZmE#ig3jj81&NRX3bt?EF>6>v><uqDw3twuEf`j# zs@NUF=P9yY^OYl*1`>FkGh0e*+p`h`lQK6!DOIVnC8P-MxRve+)MXGUisav3py!G; zgx!5EWSBiU%CuX9A<kEu2JbywPQ?tDz|%<)TY1Ua@Hm~Ip>B?agdVms0JIE9iGVfg zi&AqA>6117kt7dOs$HuYdQX=O!qN=g9CkjQLT{gX4|#)^Ce%gg8D=`3C<D{(e$Y^v zLet;BdlpN|>2hbA>cw0zloiOU*k#FE8h4cO^aybwEt#A6#s|6D;~t(8sqn!uT5Hvd zDW-NNmnrs!eW@%1@UaK0<Df^4t!i<{grS7V@D?x}cB^cHDZ3O!GEM?cH)sM#SSn<0 zfMjEP;a!ZTl*w197IQAmUfiHnDH1$6$vY~cg9S_<Q@13aFc@@8Eq|jm$ACUM2Yu}| z1c%udbG@4&9zt~+y27SXYlPjMLio&{dh$Cy$Ysn<<3)F>-sxcKU{e9GIRQ_rvzjE& zYIpnWO?k*M5GI4%;PT83aBGOqu}Ba2+fW@xR8JB=#)Z|dr@NZR*0iir&7Mx*+bYxQ zakR|(sPKQ1F{|}Ca=B*ugUUw~dfljl;az6%^o*W%7%AS4&&y08$6{XgN<X)s)jFSZ z`jp*nbNXmJ{LHvZK$y47Cw}ys!Nk?^rpI0{!JuL(<4BcSPXA`#*l4oed0Nauk@H!- zR}Z}qf$rUS+Qp-qB;foC#>lu2Ch)p@Ah5s9*_-E!k5npC7BIBa(lJcyKw}WARh=8e z+X2_FHisE5T(|Znc1jp|Jy>K>G7GN_-~HtcDE}YU=%@Q5r-~782zct=fAP^{Q%~R3 z$Cmcuv>PH6sD*ibl|q$~P-G*|j;v&^@hqGI^1f?MNF#AJW6ZMlGe-A%;hwyoupCTA zO{hGR>qE`(Oq758UER@wSjbC!#d;RXOn$&PyBY3Ldp!d7jEzYOhUrIpDY3$|{RD{y z$P5iKjxE6pqzxX>on!)|@Fj$n^a8y=&)jYE^<<9ZX#81jbkf+23xN!eOg%Tnh+v;g zHkz;c^vmQpHkQ=WWj1;Ntvd3x!(x+gPcnr>!f*R}V!@sOGy$_rIld;278L-AI$HI0 zEZ>G#9dBdfDl-VyUs!1*g-du?$o@1U$!OdF!+^b0U2ULa2q2lU7cAURvlz80J(nyK z$N4J4J`el$Euc)ws8h6Rw4rj6Gd;FM$`Ckub)z3IM-oPN=|kv@uSU0g%cx(r;lK4- z5Hes`;G7A+$riWHPKwX!b$qc3(-DDI)Fd=~;PI`OrX2r)N0vUCztEEt+P5|(qL-rq z-bBp-gc!2P=aF*$MaHRsj{Bluy?cT|4_`fdP}ZT|U7Cz4b}_$-9pJ7BI%p1rKs>m2 zHJ6{7KSfZCNlJD1lv!)<!Fg~Fe5%gkhx{SlD$JzNk8?u3k?htRc?3;RONIf07@Hah z-Cv)?1;x`<@Bx)5J4gGsip$xBQ&meY5;@QYzSV8|e;3LzyioKrXB?&m)~>?6YR8C~ zB2scVYFi!xKy{I8*N{ffCl5!*_IOiQx8z?_UraF?P3hGGn1ut@1P=C?>&E&6-)@$f ziS;dkm!MJS(gaI#<DOF+z8{%UwTP*Bs%Ysf`Fr1gOq@iJq3T|7T#*nk-myyUQo<n! z;;a{(={&al3)M+R{z0k?FbKBI9w(_j>=qeW+832R-py|JD8;c!pVjFc3nSQu?-TSj z?pgbnXGRvJD>a)yw=t+r$qxF4_R*$V^DRj!8wfbR$F<cPzK+kUT>*Vhg!|JR1BZt` zt0j%11KjE_6warzGXgK`8e;Tec(q2UPzFk_XuzZx&vQwjFr|?zKj_9!q=a|7(Q`6F zJrbMstMYY~;7I1ARgyW@r}={~#I#R?q<vGDiG+%QY~G02&o$CLmRp7EIf@KQ5)s>j z0X@gOSL@rmqrO++5In9jAUIVCei3N@mc~o{<G|3SrhCq#5a~(sK*ykvZ3o^HU~C7T zhGVGYgmq~YphfGyp>oVgJq84=*|sf_(<D>zX3~ZXuOA%-@J#oz*Z3^!e)ZDq$n$4W zNl*BKzVW7)Eq<8q?E<}bNA!6z^Py9>yzN~*+Dh(g9V8~s-P@^jl|^2B{eYgqY_tOx z&#*1B=OR*fRbUfkJtE~6DXRAp{WYA!`i~bN=8|>SFwK_)A7zdzul^dx$juJ@z-T6` zF$k2Q!v#|aecmz7)kr+RR+%IfF#LTBtPgHJUHF;c!Dt+$ujd<uJ8~YO!DggY;}&}1 zg2!)F1PkgAUc3LmT;qWE-i@bM<;`KLI0O<p^STxyC}G{;0gMffWoc}s`TRRY!(@bL zS=#IJl#FbS_5A8^60JDM;`T?3vywHp`yrdGlGV}>S}GAs<gM+_;jBdf^$n1n>eZO) zzrts$iw;%J6uK~MJ|G|m-vfSu0ehRHVRl^ObzzhG&a<jIgf0ZaU~9_`;Noh>x=}oz z7T}D`1DZg2;s*4+H++)dENQ<S4$Qy%%+YC3jh%X}kU7(lRohFTWqyr{+;XtJXC2^C z14jA?HY?<%$6Vc|=Vnhi&31P{5ZtUVs!w*M(>;rF&Vm7+9BWl6le_LEl1tR>NFOT4 zg^yWgNr6;?BC3$XlL<!@%qTGr8*8uZFzM+WaYr7dY!+8un{8tsaJbXIxH`D=?>aS8 zjS-4^i{X1TtG#VzTZD-|v?Gmv7H1<yst8}?_a8!=+P$^c3r@J?whfoqdVT-K)X^6T zyfJlnK><taH~Zv5E>g2H?3Sm<QxfpS@xltpnubVWREsL(E$1<eTD;QQhQ67X*Osc{ z)ep{jfm&vfF6K)(a6e@fH<*Qnaal6ns+Ih2j%pOhfJ}e_-+ECE=<r;0up8wxe&Zh( zsn=(8VI*tQalH;Z33kKXFO+g=QENbGbhqGAjm59PHFr3S;_<#AW+IGkH-`csT6**G zM}d5kmHUo)3b~XC`cXr?8dt41b}#8}a&fBhNX+M6QU--SxE0AOIP+dfrh{b=X=<IB zWSnq<5KoxKa9p%;q2wOP^nxWjy9|m-oe+7i)#8N!6-1X4y8_W|o?HbX$nAgy?J<Y! zOHzs71=^YhtI|j<?*#$3KMR?i%h58njG5|Mu0XtCdCMQR&@DHWN&)vzDpY#98B)h5 zd{GqXN0TM>VN2G)M35qr#*6KFd-`qfb}dgoHg`xWg?8uC_qi{U?Q<^X(B%Cn;>W8p z`#iBB+;)$$-&gwEmc+Igy}5kO5Ab11?Tzici&GWfzHMS3&7;O1;RzYOA$Q=PGquYA zo{s8soEclbTane%#5X=EscF}Dw~oXzg=!^Y2s%m9plRbD=p{(&A+C{HH9|v9Ys5-7 z>1GQxjj%i{p%em>rNYg1$=u!)yx~dNP^7puqZ>YZ>c=ft$19llRI+Z&+?Zh#u8War zpAnC`R{WHa3?Nb`ZYQ!|o@cv`VokC{jR^jXc59SbKY0%t<Z{v>4fi4wV^_<MY*Z~6 zrFMIKhw<MR%r?F3X#j*jyA_v_ADfNlA3Oe|eC;JHP=$QHgg?zW^j5;w&x6o?c$h?T z*t5I+GirMJ+fEJbGkWDMBO?9I#wA^5(5!TVQ3a9SW`AblL!WNW>1wMmc-SYafrX<K z+uxk3mCUSYLLKU>-+zx~_8g0r1?505e)P<5YHGrYY&8qh8E7&bGL?D(GAD1OWwN_a z*HerNht9e7_xJB+&m^8JNr{&>+lBej;HGD`-MvQcA2yrvrWU@XQf4r3AB+%xU7a3y zr^E~<0}3B{4jZVG2`Xit{lk5+Yol5p^@~nyT6anUlAs{=_!1(NnDv6|Hc+To-ExY7 z|IZsTS0xHJ$g?UuzwD<MQiM#hHRz~E_kgM{6gM_kuE;fmzq97{g6}1@X34wtP(13J zV^RP+5J#$2WIQ@(w=u+Cy4Zrg^93z$P0RH9dGHlEB50HOrwu)0crOqx{ueao>Xak& z88yJ--~y<G{o9s|)ZrAx>&4cv>=DNC@c~dde30=DW}`ODGi9xpfKxHB5y-Rjc}P`W zU8Tc9JV`}^$>{QlM%PIh@ag3Rzo6pS#dlmZdK<39U>M6I=qp&?emT%Z1))VW!pkk7 zFMS7Sx#Jy-)Sw71T+J67KHq%Ks?IH9#}pOXL@nMDUO1aR2&3|)iMC6ZQQ&>N81USO z02sNCW%<7x`o=yh^`}9?D+Ms$_Agr=qXp?5++H&3oqPed^;EKs(G_(e&flu5&(n?@ z?6(eEb|Ys^!!kfDRV!ZLc$dH9&$&$LJCm2r-T&kfV4W2qd2gxDA50a_u8|!Ht;4-R zbGQ8NKYH~2=MQtwXD#hy;*mgYp^#C^=Uke-NjKe%eVd=c`v7+CefM%>n{)*3SaCrE z(sw}lq9}W(=OC^91YQQ^kq5|4N@SxjcX-UY@&Bcl$X_=iqJRJ-U&xV0hp|b|fKL-3 zvP1T#M)j@FTm7OIB!~ot7^c;1`N+{p3_%hk2t+bY)Yy|MmucXNnuFH@`2`yzi;irK zDS+2aIuf;ajM#C=JAs;Y@;TE<PR9qQg&Io%oVnt{It?Q^{@72?{{rK_B=6o7DOf7w zqeZ7c8eLT0-uem~eDm56+T+%P0w&ld<n>DE{;~GnA#0y619Tf35Vyxs12L%-J2Klu z1Opqq>&FUD7b-+H0(X9nYHJ%E)HtmNo7ohtaaesDfwa9RnQz_}zR<={|5VfeE(N?h zTdMfhX`n8f&Km@vZ0r4hR$_od;Ac_@cog|u=4gUkJ7meY24a;9vV}TR0UFN)mgKeN zNNqI~*vt6uypdc4B;f;iDBpyuslXPOVYvhnc08`$V7A>8l*BHSY{foZ=t{T2;aROy z`#bG-iPq=;_T%{0dK_eZ6Zb)@gFNT`RAE@;vIgF{QW_bcYAd&PQS~5)AW3<%TY%S2 z{a;4W$fADTm2c=-ZgG-F9x@m?PMl^}E^|no{dguiZrzC>VEY%tFLP*jasZf=SH>RF z#M45#zi;mc*hdw!FvP4aY%LO;X(!ju1bzOWiKzkAeTk4FCl962=V(UzmhM@5KqF@b zR98|+%zoc}{_zLK-wY7OZkahT8LRzw`@N~`a*+RKx-vokm+3-<xy(0U#b6L+NeU#x zYFCPjxDauEW4ch?-k7e(%QeaymXFHUWMqiDfUTLLm0jqk;&T9JAo^SOFb9Z}K<wsU zbpEgGg@-8n)ckmVzlh>-M0m9i49u3<<$<ooc5cBc+USPKWRgoo@e|ru7AEgGJpd<( z<O2F%34DUdg^!hAF#l0^0_M1At)l;{UJvab1A#}iS^{7ql;FGR)pV;DUB;U~vWL5D zx*%ZIV<{;WDW$@Y;|dLq{&>>_+nK?0jxp`+uxKY9tv5BumZvRE{Dv!Iko+HeL91_o z(sHTKK1TPygaHd!{%B-AfGVWG;DLc-j`bi4=`QtMR*BbGsuA6GF%ml2abMnI4Y=gK zF&L+9RH;N}5Bkrs%-);UM};0z0SD9Z;F`5U@W0U%v#H)UcSj)A1&`19A2bEP&bUyx zc)CLm!^8<jK)u}y>B1!L|2#b)wn2`x-j$aS|F2%P3KhH=NdY;J>nbxSX$Bf;aWhRN zRX|tjkL+0t=8Cp`VXgg4i8Br1jJLIL;JB-P>@U59GW|a8=eW1s=_;Rgn+v{A#oGEw zvnvfIT-O*3YR4iqe^}F=P!*ZY7b+7(BaDcQ^mL>UiiNG@L1387D8#V+)8TcJfEI9x zmtl(bpTBVt_hb8jf`44TG__$S>o+bX6$uQmKpy7}Z~_7EU?AT`s^o`*5K$Mj-9FR} z)2`zzN`)J}6-0QmmDiwM#xd~-C~8aLd+4_EYsl^Cd2G4=Ukt;R<P{YmT(_q5*N@_z zaBxGZ`lYiKu!G_M7KG}50)&=zX~N|A|LC#xA0fI(Cl+5;B@vBCz%Vw#+}wJ4bdtQI zK0_>^CPz}1OyBZHNd+*4cbrNxy_{{l2N&>}>E)bjiEV`6+Y0J60;uHx*6;~U9cJi) z<Kln)CVw;Gx3T3&W&Gd0@K={4BI|D?3oDy#ka6-t!gUc!Qq3jGZ5xlk;qL7PT^=zW z7nBx&%>FW6zJ}Iry(S15hg{!`bZyvsMsBNke~?<E`>d$60Db1j@qe|m3$RiQ#DJ_5 zc+9+S<U0R6=D&s>Fychez(!fs0VmbuARvND$qY7=Ob#>TJA}avM^phNO11ikaV>f7 z1NAkmf3n#6!hOAZ<0vA3n?KdYMj(YsMl7*2UIWEu2pe;x*vu&-+%*8`YyxBmr|UJo z*r?}6Kqbspv=0yLwsYIQO}!`9CkJ1fnEo2dZ$_T17zs2_o%oyXviH{Uqig>v1Vmu- z$6x;=$wLCa5%RM|t<@5>)_E*F0WzpAdD3n)08t*XegyEE2sAVXzX~*g9?C#`U_mAZ z)c{;y;GNoV2RWwe8E!JGv%d37M$O#ZT9F|a`j~$=nmo-b7TEQ_xuE2x#(D$^=A*=z zD#nIs;ry@p_iah!2gC4VA2;wZtuPV}_aTtst$S{bBY*{4qWqWOGMD#h4^fId02E2c zf^l`vdHx-q-^S~y2e3K>G{p<6(b-r3S8$8;8G`N9Kt{wQR$c3Anxx46mnw9RI{3Fj ze&IhOQTwx9GD7kTgBl$<LU(TG_FG$&6cEQ5et|zLZ%L`1-(>b={zU|`CRL7qJDvWc z8Gh?g8PxA#k1!u4b9hxH{m`oAz)>;oiyBT*io5uuv#z+m0~6G6%Kvozf6Y_SV7Npb zfUpsMD{~YuaP;psu*bZ+JGbB70<z(g1p(L1rbh4);)}aMRL3eU_6k7j-AkSDSGDKA zCYHZ{=wJZ{#JRr!f#!@qU)t?f5o#0N&hF7ItR;s{U5#6%gV&SWg%E$HA#>Ur%s=@{ zPOs)<616s!UHsJly|W;YM)S5-AM%H2Z@`#oIUhv<I;ueFu=sJ87j`u2h<xOKrjGx; zXoyhx17t^c|ECEC%GPGLo#H42IGxBP=blF@lqM&9X2+d^3dR@p`pFT+zUs?uH!t4% zhOl03aHZW5(X>LDN~<~PQoSlHf!pI>-<ScV<K5%q(c8CZeE;%f1i1-F16ZgP`NPfd zsFMr+pI-ut(hk@O03v$qas51MV5i?*6sqLZYLsI+-dFn_S5zpeoRp)ot3NKfM16$( zjS+5>N>c?}w<I<HL1y9oRCB=T_yQ!~{`vN?)uY6E#rFXla9I@Xt~+7+I)YUjInREy zT+jIOyA}@Nca3PC%L&Np8iyVR&)54Ze{d+T(PY}BI4YFY^l*w^19@@*#X?c+zvXKG z)Ag!kcISOO4W_Pa&3%uEt&@dI(NrpB9KW4TAy37lRq#<wM<~V@5t<%?qp+h-ns49E zvUZyrTa@zkqFQJr>gbV6u8Q{RdyG2%*IIRlhnr`p_@390aDCRESAExMui1dU4~x}3 zbx5h&TuNuv6Oka-dz_z2qqcC!@#zX%=XVEk9?0|cGn>^k82S-MPLN;kyLW=`Bt<?e z_ne)hZV>8ge%<lbX}*_JHlGlo2ON4kf(2fMA}Q#Vp8*Zy-0ZkB0s%XQF8fiAVXK&W zlSLWB$@EV-tWVA#S}bNDZ*K=e<C@rX4L;VU)(NHHI5W9zW3_nNw)Ha+%JG*Q0;c3U z4m%UBXBC{D=Y~wsfXFF0Ee+R17Asn#rc$TT2j90;Cj|LDls*wmk5%-QA&y>?2Lk2( zLkhnQ9YrJ_5bVq0FKS*_*6c!}F_oXpV@?wMe8H-o{bv!B_oezuRK!SXP?GEa^|q>q zcKogCdotJuimqa{VLKql6&f^JWhBQWIwd}f$s&G?GW7zHZDH}~tt=i_g>onA1d~!} zeSIPyeD;qgsh>J?%F@mr&vL$aU3gx@R$K>90>_wAK)&@YFOM`B@ebx-D!=nE$nm`W zkB;(ls@*7|m|SX@VP;UJ_vjZVi|HQ_3n2Z@#FNHxxDkyOwD#*)n4?6xZ0@XpM~fi_ z?Y4knvdpq{0o-pd^SA<t*s=kq)O4x**rXqx10-4Z_QNVxD>Y!2X!phyAG<a$YH>fQ zaEH%Rj;Hqqn4>Z~k4PLpK310FIqJtgfBIc7GmP1NdTn{kWhaqDFo({c>80Ik$lyOG zgOjJSC3fe0g|(yLb$Mf*$HbX0)r!L&!|d(RLozx4zeIhs<6p;IZ@M72M-o-g2Y*nb zdOdd$%JJ0Yd>r8TyQ!gN*Ae(~F#h+fPW1FII)m#8T~r?daJ-K0_>G`;^2m);9*PG~ ziL*GgT7gKwAD}i!IDmSCPm@6VZ8xLI;9W1e?D1h30sfNVz{0tkNM<LhIJ|JF`WjWV zhLQ1@ZcAWk3TsY)n)$3@*w?{`8oavE<4~`ihreWXwK}^Yo9gxMv@qI903#h;oNx6D zWgwkdc*0{4h4TwR`;Jr++oGT~${0X(zmtmww{vh1Dl1L^)V{fiKosBR+T(3PjQ9E( z^3}l{w&Y-5945y6?W;EgpuOq?DgB%^#b{a7WV7-+-*zAA!@JlU{dQ&kZE7fiCX^2f zF-LKcg@&(`@$ZSw3Y<I)T^Q6AG$`x?_W+L*aUG8ND}*_?2<`tzFXwW+aQC=iuS{jM z+GtTEgB*#V0Axx2=Q8~tKUCU-?=kB3ZJEkVZuDp8953tK2!3T0#!#U3Na!qulv>Z^ z!EBSlL{pnp#wK{k<PoovzfGlVh6~SVcY*}8X(|Dr#H=F$``rjxwy}g0DNh)QcXJ|4 z^zAvW7<KI7gaQOCrgyTB-`&pfkde+X2>HEwAXBp$({xw0XKqFy!zbE|S=0Gl!T7kn zLNU{L&E-oq%J&xrr#YQ(T3}0ZRMJ^Q9jsMWgZvgD)JLr4ODH&O*FM~EjQwEF>*U^) z=T|bJYjx0I^dPEEAqY+<@oz%nU6u(SFZ?|*C4DP0On&+w&-$N>FR+(E7JEDA>9)ZJ zrb#WdMrI6<rUuO!SO3Jl(q3+~6<9`To(j~$bXu)19IEWE$YFv9;1&RoNPTwPi>kA@ z;KPOi)t|1yC58y7G3*sAVNgchPbm+uta)8JU#X16eQ$~7Dy-UN_S*Z?K9ETsZjsiz z3nXqG_E?VnOo>zS!g<KTB!#-3=g_zs`+I32JM-_7ITJ?O6A4B01E$`Ifp@k$*JHSf z1rq*HtE){{XY$-mS6B;hjr1}Bn3Ohnc^mX2=37T4L+MjL)c#*fh7i#*#M@yOun|mF zk=vEVmcR>x%!HR^)oWL?nBD7@dgAxy2);fIX<KR1Uq72fle!Z~rctWV|C~<YpAtmJ z5p^=$mqVuRX0m1dYI;idu7qZd=|y5s?5Cg8-u|DDU@)PRB;N!5^!0Nj;9#MB&GXUB zkz*2-V-wNdBb#$@2fyAv_cbm@S|9h-dDia*HGBTy(t8<ew9h<!UbP**=|A_KE|3Wy zR;yT;N)?HIG24eiw`Je0Ol8Ra$sEdFD&nNxIOU@b1d>mmrlG{Sch?chw<<y^Ih(`0 zuXKO>XojZ|2`V+9r7Iz0PIe}45g326cKKym+vn^ubLDmDUeGH8jsw>`9+Pu+`W)sS zk<NtN{Q-d`$0&XPP9{zN4k#mYS|tzr&7k^RA_`<1Rp^>+tiiN?K<Fd%ecn-QY;n-( z>K`Ek;t2llXPw)h#2t031Jry*8&5VBL@pZ-owrID>?#(~^>ey#IM?=8p2=5N`sq#> zo{)ziW2yFYqIAlL(Mg|7a`PRnlMhIy!5#4B4tAkW%Tq}r7)T^9K@Lb7Nr|c|_+l_Q zg>E+6*nFODHCNe&>|2|2*tlFIYh80RiHkmTm*ZQJWOXu+H54Zn*%5Oqz?K=^G_g{` z*OZ2YQYWI&a6Z@JgY`59Wwr{c4m<{2!V_py)O$5|!l%aP*Ph=+E;+?OKBGu_ZFz8d zT@{%}27lbA&7tLPdxB*#9?-{lR!Y?QUF%#_>%o8BGPOworc-J2Cw{O`>b1@7kWvQa zqE)9}3}L1;_k7?KTTn}_%nLmJng7vR=1%iem!dT|&)xS5t5mmUqJ_|TuekQ;>^dxg zMSrG0-+p(Tl|>V!QIKscevJ36QIWbK$|23@80Rq;*M;1ey+}0pU;z2#zdnMc#OpF} z8;wUkBrKGt3kRN9Tw5$AzVTcvgIN-JnUy%7R795tG~L{1Nbh&c(k4WAj!(uinkDj; z*0%V#?4J|q2+FU4+>{CaaO=n2QLQR7ohhbnvjr5<$>2Jk&jELZ-Z>@mh}&eLsKUZ_ zfyQbTI>HVxj>x+0T|-7EM^AHH@F$5FkPhTkF6Su_%d+bivnBhN4@h3;gKqgTx5w!2 zd=J&*@>F_0cf;V(V>o<~8RY$5|9)BIP-1e-qQrpEPfx?(4pz;w`z^2Md2n#M;~DBL zgRe4^&TVYFWMH?b^0A~w4^C7-pr6Lo&@+3b2nvz^K1p_0ZXfGv!ybl3g4C{Et?II} zI7@JnIA5SJT%Tq+0}Ey*pG>JL<L<!k*t~wxtJEiv3x(5GYhK?h&a-%Y<XSBwA@Q%j zlnTQ3?Hc;8cn|OM_3;=;2<%Y7uFd{ztRWN1rJHpX0X)*1bBXAdhqF$xe`X)UhLH&h z5ttn1I>Y!o4;;^j6q85ZfOn8a(VPfYA`;-`(ET)6wkx%`2$pl%SePiZdhS?Yt*Y~Y z_{su(=u-2#(y@CtP{uE_&%klA)$`+O=U#Y);qKYU<|wWYH^I3TI0^~2PDqAu1;;Oi za`k~2h|Cp-x+n+&)OGO*BaCGdFyObpeeC?-@kQwP^_MD$btD`q@<mW%i7);#=(Hh= z8JeHhF7X(hlJJ9QN%Mn^AitpO40Km(X(qLAx%POu;#Fjd+QJM-a?Q#GC1nY6WI+J` z@?Re!3+VKAw@}?Qg>Q)kVqjqCQP-&jvF~8q1pHrKex2XmLnSw|bv*K*LV0HI$&6=Z zisQhzv4Vy5t$N)oxcuw8y?sM}D$)+DK84^!NO5E^-D(Ah#NHo*@JM&ra@=_Q&X`+! z+Wx`Z+3x&cd~zObS1kwkd9i-=sK8sk>hodI=Rf|Vzn=Cx3Ha;tE$2Y^bDiq#2y3)j zYRy_yZeitu8JYa!{jR}Woxyz-)2-vrN0@vG48$$HaX%QxiqwS${Imz|TF%Tztv-}) zlI-x+Q7vqJA;o?7yjVdiBEd;cj&#u*|9>9-pH^6w5QH?8BCD$_n^$G0LDNFyGqKj{ zzdv4q5Q6L3fEip}ks7yc4d$HaJ;$g(V9Wig(*Bi7mx$THMCQ9P^_C;31&cH2PyvXi zMe-5wB!r4u>8)$6kLmlwkJ%dT@7PI`m-tR}t7vC<O7fpy`LE{hu!LTK>p>L7p5z=1 z@!<=e_RU~k`ed`p;w>4=i_KCf7m~hMoui%uZo;G6;>NL&oY}AII3y$7jS@&&%~(@; ztkZgvId^Di@xbZwK;S~q5P4tn-hOxaJ;XA!;eHqvXXJ$f)Ee4(EWIN*+F%-%aC3pE zzjml$HhJj}h}{49R+~g%&;HiWesyb6->4Rh|J@&qB-sHV*j_QZHalcop9O!V_SaB{ zf-l*hM-PE1n$=6OFunmzP=DPy{eBNG3J*y3aNH%88^bHoDL`Q{kzmY>J|Fqk1-ec5 z68CAoxV0Y1P(!DnmhHpyos$NlRe@${aOqprdwYK<^`H0W!j9|nS`1bHV}X%Hk<U>V z-GV|S(7zpT*Y9nLG*fN==;8e5yPFFrylhkH{y~sX6mD1i$RrZvGOZes#eq6{I4g8N zRS-k;8GOsR6r5$$6FQzs69VcZq1ZWzC~w`QBPKnI^`-3+M;C_$_elulEqT|+GorVN zwucGK=Ue|7jQ;h%CobR*ptz0|&s)38U74ReuJ=Re+6{J{2Tvms;IZWT?wD)szJ$1S zHvQ$TkLM=st7hsY9?1dr`wl9~b2X{rmloKXi7GbxS6(Oh5Xaq0>Ps|KC6#z_g@)&y zq~iLa{RXw7(dIa?eFl>o{BI5a9S_U{M?4Bu2^fblg848Da*Ne#QBGjeSk&OJ={zAe ze7aq(C2B!wFE=Mk>QzqI+;z5?CaHh|b!+8TpkovAvYU4-gA55Bg8%M}6pcX{nqDig zm8EsA(RqpE>sUHA5afkW4f9QxFu=q4C|maAw*kT4STcF#UVj$T!R0u}drx+`(Ghd8 z+F021HERD_5plYb)%P{>>R^gk@&_3*htpG!oc;5Ivlq9IcHn_q41_kZelL?M;+D>) zf!F>547?YxSd+NaEaQ!vu)DumZTOC5ibk1M6Zv@Q6wz|df%0~OWM9{W5weiK4oSzd zKvwakAz-tbKxaf$Y`yabb%z*DR2qnJemt?ag6T^Q7W-?@vCa!L49|EJ*V`~6k_Nva zrarFkmOd`v!DP_I+oDJOk+$SZmS`waXgCa@PTevNaxL$GdBm%s-<`+>d7;)5@#XGv z9P4yu)>6%WYc~>l>3q2DnbY}Dxxt)4r!7K@g-Ym>7u@yF^5>%)eEB+QbG*e{xEF3` zaMssP2+k)EF9fX~;)j}eENARqXMcDy=Oyc?=8!54u}bv4WZMwc%GLt^oGfvYV`<5= zeHE2^b>XA|#h?y$Nc6#D$5JbqTn?mjg~Na6x*Z^UZ=OO{=s+=;#Vw<W9PLlq{t}jT z`=_>ew;C53jaGXh@F#Qy)iv83Tc$n@Y{(5~q5d(9X|VO%`#}#uh0~wNI_UGZF%V=! z=5)V6OQhFBmZ@!2l?jH&X7c@GH4kg>M_pL|Pm<mcQD?jEWER--L$1NM54w}892b({ zpFe*#``y6&gIp>&5C%2O)cy1JSi*EqnDtZ(xzE#qX^qW1SOKka&jSK(b~TB`tfk-O z-gw%xhT|@f+au0o`G;5f(Xgou{Iz_g(sG=@>2USEJ1mA+bz)iNSxJRezw=gjO7%pM zhT}G)BD~KIZ7Mgn^AQ0Ff?kZDXa@z36ji7Uk4qX>-y!{Ru{rkW;e2mw+|Nk6bT$n| zGO0|wL8W}VhgcHPFZnYe(THA31wyGc=CPk44gkwzqrEYma*mYyRv-q<PP%hJN{%E= z2Apgi1hk6h@h^k!w{<YV5B*YR$+jII{duv*9S(=XI@kf7HqZE|PW}3%zRtqubqf(5 zixYZO&n)O7p*Z`?b?W}auW)2ag74Yq=S7o6@{Ke@-_3G}ab|`kWV-pCF#HWxpCF4A zni*)+D*O#j+oHAVZ8myB<MvlCjq!Nhpb>CBbqc1C5XPFXXw}&WuY8D<@2Y_R?R?h1 z#zMcua-DemY@rvAVbE<6;&Gr+m@65sYAwB5%x;mwq0vurS?WFMqUo|bg59!^L;59= zA>0E2*C@-)aVj^<PuKE!=Xa@mBW&?(Y0!K~o4=pmJ1t?8@r-a6{AW>-k`P#x;#~Xc zJ<xtElZ$$J=q_W6A0P-Hs$E0#^j$O^{`8cGtlngW&Fy?*QBFy3G`%~zd-pw-6lC-4 z0q?#g!)7)G0nme$J8-S%C#mdrUpGbIy^rYQ%hV@p41k~&;ve*SjZ-xh4OxV#yldJb z9a&cWwZ3`%QLOi066iz9QN%<mM8%~aFCqg~LC3z+KXG-3j%8A!q%O6=aU618MpNAi zY<<&To}-ZvW`jC+N7AE!`^c^E@t^w7skREOn(Wng3oqZG&J|Dj`-I(>`Va=P1PIv* z&wHhktc=t79ub?`m*I?enwF{z__%94k-Z-fI@+E)vy3(S_NHG#%#|n%)}osg%B`?b zVU5Qk`n#&jm~497!By2^@wYi$H%Me(?*Vyo=`II@=A6K0s~7uvD&2R?@xb^AdGrT< zy9eTLOra>`ET=j7l5r%)L-7(B+z9#LPfx6TQ7iTrY#%B;PCeo@x<GYl#MCVZBcL*1 zO~{n>%LV<+BCd;ukmxvqUI@vrT#E{e0>%;CmRNMxAAEuJlTRT+Mg@m5*}qNWer88V zN9)#YTY6ny8)`SWA;(epfVU2&(&Tn+khUB4PLbc)%zk<DxWbzAZSUNku0*5}d!<q0 zZ`ZAPw^ptmg-R)>-`yuOki=N=>!&&>mm;xp4nH=7=a!Memmgh8v}2*_-1BQ(LndJ~ zfzj~PPg{W$@T2hBwelZL7@OnmFJ0ebJB^FKFRZQ+GS*l{@$u9fjTA+n_g-P&*_?1| zz5KKe{Ah4K*`F8lNsi#D(ioLLgNcAvHHZ-L-rV@I;Sxfb4xkSp=X~q?c*{ex&rVWL zrTuA+$J5zyt3|heH`w48tCmNEp%3L*AI$;Mfe+j+e<CtTx?Wm5F+FaNLvw7~%q<51 zL-lOK5`wjABc3Lwi%%8oooT`$ILJ0L{iNHedO;|?;Y$}ms}0oe$x!*9;eE)Z3?38d zv3M-<8>4)AynmCeTy90*+4c0h$@MH{xt@yM+UP_wdHspStk%7xAsJ8MdY{&=XS<1F z`DCqwL{nAh4H8mM=X6J*(e&lsK($&u<AX(~GDGbq)dE!7jQ)cc8d}=?lmO`#Jhr0O z)hQfejR2&l)b4AIcc>Mf9l4Mocg|c@H`nM<!{bb>xshu<T4NJh*I2FMRa|*skDH8I ztcv%BW1vrRx*>gCyhtcg`&q|Ts5@r;)vuQuqY1C=<|8<_9g>R4B}?Mzv+xB^w)QWS zSj{Vjs*}my^O}*k_Gg0+g|Ck5tY_xV`<@bz`++1xN40;pw!%9)j{3A-&E4IX*}*fL z8q&jh(IRws>PLXNP7pi?#*VmULgX&>Z7<vMT`&r7QO0tX=TmhLoEH^b&(qD4?Eq<4 zQJ?L}TtPKgrs(Fo!WiltU}q^plQQ*7H|?9A=jeB|Lj&a!6NFOD=Q8P#3frlp$b49X zgReOhwZYd%Mq7oWX20`6?k59Tm|sB^KnXmR&RfqL@*0=jfA0SD{&InMT2kQoEAP}G znv(a`@uYBzNb`nw=*E5P_Zi@zCB~yctW^eB&APQ|DAC2tR^rZ7nBH(*h_{y1Tdze~ zr*U9m++Xep*O%)sdB9^PI|Sx6PpP6H>b8yn*+0RGG-E>n1}C~!a5{q0P?R%q(q$5{ zU47L$_0BlHiF6wBRU-D<D5t|L1yZ<j(g-O(KG_n;1bj)L!HLzVcaG(}Hk|AHj<@)2 zjkZaEC6P;sqQ)bqK(g4nOeOC_oz)_Zp)P}0>o)F8xeBU^$b_mTMdt9ExwHe!($vvT z=AFeLN(;YPwl#9|i??2HghsWUV2hv>04iK?UWh~4AI=n8Ka|{a*VsZ`_Z7M`_;0fy zyyhXUe#-2~lDWro#^LC4I;XRlYETG_j2ba5^>JC$a%rr)uGXPfDvVHX^r$^K>+B90 z*=x3j`otU7agItkA@re#VJO>1J(1trgD&CpsK&e}Zf>+NtKEV-xuBZ#h1>I^%;B7i zBmD)oE|EZDnFbVok2lqOvU7sjlH3X&Y0L#Fq8*A@Fnb*=In0!iWad1cFcWN{j@A24 zpENtes1DHdZRKT$H6Fh^rs)`;U`Heo>Kf0k=5{Ola6gonQjd7u2#h?Lt)VhqCK{vz z<m=1TsxD}UY+V-|EplZz?(JL{BUpoyeAA1mUTMb+Bxgh(FIH_8x)~O87SA;pyodSB z{2_z8u3wJDSgCb#hE+!9CuhliK6t5d3X4e<$EcGWdOzJXXJEa}T9q#MmG*)SD87{B zjvQ$`d(DR@QcxpbHi#>d$4Vn~vsd~qf>y0!GhKQQ@dTkbV95doe?0;pov}EcBwb6W zA<<yX)O6@8!5*~Pe!T0dC!ud>atZkP&ahg{%jCPDu(rJZ$lg*eM`JzBkw=F%x0Gl$ z^b9^vj6FteK>_TuO1iA?y?c!5^`U*_;UQ?oabZxY!K(H%#}!(mTH56@_}dfyAFioB z(!czQ@xICOm1f8JwD|IS)(#R94lO1K_tpLjn`*@luzwER7ou=Ko#4&#%e<w|l8wL2 zB2*&hu-`wTa6)wQJ2g+#HtY^I1&A(YRw_1Chr|($?110Nv7}v6W6#Xef>7^Fq|;0S zjc7&UXUQ^RbNYo4QPlfa&aF<(y$*&{zQ&2}E?aBvs-$q`x62Ul!~f{)y6c->&A7(e zP<JE$5|5>pH^I7;VSTe(bu&By<8dYSioNW3_7OO!_9XZbDPKzk-$Z)Huv!Y`f5Fz{ zKgw(80|D`RPj>%tSRKGliUkg<zh`bgHyTPB3S%xpq1dIo6E#Xgu6p;^i3A%Qi2O^W zzKW}KTv83)OM*SLE@jrDzdW7LExd5;wGS2628b(oZ|_QHXzU)(U*h#P9OH&d{^GbW zJG;X=E-Hn<>;D;|9f%zzNuq;xettk8eOD}4s#G(}CLPRxQ$S36u{{=vPAeQ7J)tti z`a5()wK3LxERC{0G|f||$0E|d$VIX6c^cRadAuglD}A^$8D~k5d$Rfg6Ozm5M3m#- z!?Id$OGu+y>KCLpCaifbq&5u}Jab4b;M?YoKbHjov*LK73q#HetguDcZj;=X+hgP> zd^oueq!*fx`GxNpJjygzM`=DB)S3tgqL5rF>7t?A9x46wfr|~Bw}HkZc+FLh&BbE% z2`I}rG{#0lySF2+i;!EC_(2B3CUbv`%qddN0iRJy*j<DeN}@IG*^s@+u(GAWIsz53 zk>Z3Wmt-m6B=+}H-Zf8VI6n;Bp3rOTPXd)~_E)_CeMD2&xg6tPc6b7xy$*)GT`}?Z zhNhGI-mej0>>N4ta8)umxpgg<EciZs<mR{*Epr&urV7<Kfhk%jCjs$4!IFQT$7ovs zZpZlbywIC(C_nqYu0Nta@-9>OH;DNeDcYYzRJXq!WP=648@axuaYP2Dov}|#Id5>c z9#kLGrU+Gl^wR{^q(y#f?*<QX7b<1XPT$#{FDp-b#R5mR`tOZDdz93LrA7L7!+!1q zaP^4HFOO)|GQ~wYzdWJ(V9aFdbIa3}W=fI^XD@0)ebV!oInE$sV=&5$suHEkS+=>8 zL)&@YS*3BZk6Y0mo)#&GI%U@L$%7??y^{!}T&|+TV0`VW11Nm`YjipmB{IF?6>Yi! znT*$h2pUAv-Novv)gI1Uqb1=J8U)wAPxn8qm%d=GI%aA&8YAt9xP=HG&j(%j#Mn_- z{FKe;qJSA!RO)Idnk`d;0)Qb5;=6eF*4re#vv6J<e%Lg{c3mB>>)Ck<r{KEFVMw?b zvB1;K-msLbsFz>F&#RT@aU)33KJ7M%OxUVVU&V(FABrfm3HI6tvP0OP_4tkiGFTv0 zdcs$$rhwb&`OK9$sd_$3DvU_-EU_-^C(oCFMHj6NI;tUPwiqP&tO$HdTD^K_J>^v0 zEHSo3Q>~Wkq6tSr(VPkH5zkEpH(1x(QIB?w@jna#<q1D?s7O3|*a?_t*Kq3zHftv_ z&*WD>v4)ry>f<3$3W>TKmyIN}X1>RP=`jZ8<*kcF(>35c+>+|&!Hy9ZgPKr0E7(gj zD;=?Jp;GeuAs?>I`*~E+>FhK@OeXa$FtTpqV+By;*mK|wIjlWQekPYnio61Mq`CQp zrBiD{e}#X>DeYIbDUS;TE{g!XtU{ZEic-IykGD1T%O~fs@79m`h_j>T?=*VEwy;ag z;rka^e@cCioGc=GE>UVHE><Zs#1N@QUtjObp8p^yYPF-1C(Ad3j%cNMg*qYHLJ|61 z^{3DK8Xpk8$FSw_jFGO9!%>&L^^&V#V_3q3#-?^ja;a|I^iP@IhV!g!>3diz)geTD z9_K#3bKU5OTF-M)=`3bcnY4O8k3;dVv&G7t@xP`=giH|9IO00P`s&O#akd&<$CE~L zy*y4_l1^et#gbhtQ=T7hL{(uR^PWrO8^Z!)Gy-2Gd9`R|9YwB#ouzwCu5rqUPxFQV z6SGVnsL?cbI9lpk_jmqMNsM_qKN$w%pSiXf<e{y3?(zg*o{~9V?4PbO`I?43^=XC% z_clKbCpMSOau4K2zr2Ua+oScCS13=qxNvt>{J?LPDU;pm#ou~4r?s22G-*N-QIwq~ zZ3u3;K;@doAe*H8!J6=eG8cqKfZkLC+uJmd=_6;RjtKNG2KcFTQy_^u%2utcIaUA( zj$E+^5v`+f#h#xSxP3|o>jgP3`r3+p3iYEbZ~*=c6b~T26ul=*(sEKNRP`t}Z&5`! z$VMCnnEr2w;t@Ub;TS}}mZ6J(?Jae53Rk*!Zy{kELb{7We7yeRcqMie+#@%~d)SGa znNXn&>1aC2c5X6Tt%kV)H*5o^m!X-;X}?+daX4(>e<G-0MtBy#FmwDc=cGKyZF#bA zK|VOIo$4y}EJ2>^X0EO^P$gD8FBoCe<~e0bqtLp2BG(w2(Q&k7Z@j-BbX%YJGl#M? z2J^;QYpE$F!=phigBQjl<H*_k^`&a+;F4WqfU)IBlkfNSvw4s(Xnb#^&SQJ6*_V)d zyH(IJ!mrxWhCX2t0iTfm`@VXlgY^Krhu&BcdIgV@Pb&ud*XU-9lPSwQiBQF40n@sX z&9iEi+qxda`SAt&Xv1$yAMHq0QIaXEBQ)7yU!Ee0zR{o^na<!ha)591+?1%SZQOsj zmaox&`Ci54bv!Y-rCw!$aHw2Hl@-Lld#UWp({TBy)@#_>$Eerz{q905S2|_tV|^TU zZdONvrN2bn5a{%5-^Tbtygg^dSztrrk)15)+y(vo2Zkd=-*{ty+XZPr4vpa-yvp5V zz(8Uld1w6h+l^L-G5FxuoQjFU+#-f3Q<y#vuhUh%Or#1Y1#Z)=QcZ*Rx+emHhR7ii zr^VOawRZme*wbm<XMyZ8`fFqBc*L(_WblWhfS4pw*d#`+X@4y}g*9`bf`^Um1N|;c zAVx&3sM=R%itDM`<K59TzzO~ib>2qZy^I%`@2IvY02CaLb<vk5M>cy#b#tvXe~$`7 zc=CO}Y3_5>cL*bdQNwnu0+oK?w3clWxh{`2$M3BwXKdP<a5B8%a)mUpaEzRy8~z6+ zqBfJZ>i^^HEu-p4zBb-KNP;D}I|K;suE7Z&oP!hGgS!PiNO1Sy?k>UI-8Hzo-)3eq z^SAe|b?;jJ;pD7vy1S~nx@zy=^X#-Au-#5)zhLAJ^5k231@dME_SfN%OOd|s$-XgX z`XTie&2f<yyMN0eKZ-)gHt<b|!pR3U-y&yaHii4CWe7_5Jwh#{hE4|!n#3D%!ffd6 z3<vCXmG<`|x-tAup~fS2GaTC-t80!7F0{IW2Q~U4`pDKI*0w7O7?2M38U)I9a?JM8 zglCb!de!p{@<?3%Udxka_G*n#`4@3(0o@Yx?}~He!5+9wqZ)&cW^Lq$lzn+$C-jWh z>#L+U^~r`wj)&$g17q*I*A($()}-Hj;@&UV-aiW4oy7Oov=%LRc%QxRXH|@I!5sQ- zZ!U}J{38j317c4U1<7-CA|%z)3%1;I?gD4J%<>6hJ>+Tj+sR?Bw|)mPq;q>d!bO_= zD7#GPzDk`A)f}s(?qywO!7gc?;SsL_g+||mjzvTkuS1;kF3wMt*PkpF>nWHbzWfRr z;2yn#2!U!$Ze6SLG8pA@G942@s<k?aa4o*~CcD`4<2=32@(UdE0yT+3n~TaMbtuM@ zD#=Z81P1SLjJ$%rNRnj^g=ffy0k;yV61wyasFJ})advDB-Qae;C9sG{;da9w)*lW% zM$ec&YM?E-?1WXt<!+1*)0x~Uc9UraFDNqh6aAT;VSsejyX>vi_L{l3iYP_gRm5Ga zzE30-i={QURqnrSjN{+@6rF~kk#v$SnH<_9&z4`Gm(E}^S%{_BS)q;`zz9jud{wNf zaGsNTwf5+9hdFYk2%<jxP!RRXg$9BIyWjF9n$lQrTRl(+zH?3rG+L@;S931j|A{I+ z?Q>90S(l&!lB%HY_FG^`CFcou>blK10U=mwUq)(QChqv|b!ec9Jc2T$H@EXBS5pmi z#Fe&)swr{(K_hiq<Nf>*F=_}OCKLXnIVjUMa7~8!C}6;y-R|~E4BVyWNgK*$ssG}9 z0ktQ3JCL!?2P#EmrGhSdJxluWt5gjAvR5prLW(|${@duV4r7rwyzPt+&G+`B0$VL? z?UWN<Zm1!6o}E8{wbuKU5U8<Uh5I;0=lc#+r=t=!CrlmXi~?mf2gxY{jfXEhWs#om zDklo%c<k*%o4!&3cMir$4(h_b&35#1RcW^8f!!Jg;|}w_L)nnb@_2MZr}|OI=nJ>@ z^TDN-O8)C)_jU6`)&(cfU|$`68Qkf}T8RY##({C)QF(bO<mQg7aV-t!`nlh)P(VHB zhVtEI{8G-ME{(aGRWFK8q6SoGZiUx-tm3Xu{H5KxgcPb%P<Yr-Lr5|@^j48-iJ8b# zT~H|{Tb>H<&a5MIw3mPSY_nK>w~mTub;rGZ=O*}?XHI+nNAHI?I=Usd2fNCHrI%ns zNw&@_d~Qss-N|+{RU?ogEK4y6;{ep89cp}kVO(J-*c5ALB|42yNw=qd?s0RHvA$Zx z(D;BF(oWL;@Z4<wdLY8VY)ch5-|xQ7A;mTv_>S)`47=uWhOTXOlp;;{zL2dbb@&l^ z$4x#!+jW|nHy>_tr&2BC;xJg-EZO@BKR?#`I|aF~BRvMKf|#z4Vd=ZGc&Nsd*40Rd z(Prxze19Z6i)i?<f$OgjhdnQ(dUb^vN@eJNMEVv_W&@zR04K1P%V^w6{Wvuc&)_s5 z#trT48P+A$T1?=<$^^OOT13znLuq_!>tgpJ#d6}s_|_mBLvJEWe%KIQ_0L_qWxY%9 z&hqbN2-$-PU<QIlD*3(k(8T4YWm6-C9DA#V!%r=0RYI}$=2AB`8%#PA9pW?1ccM3D zVxI4ao$ZVk$8g8_Dlllf*0QM5z%P^w6d(j|FJK&gnt`%KagJQMv5OK|J_1nG7r8lp zcpL^;Acbi1y1noA)fJs>N=_3kkfZ!n^3GL_5ue<P9)`J4{*BMF8^VL;VIZ<_(99UT zYZhDe{)|^1G5TFkTFcxh3VG>vViqRDzBx*@z|{j4LkNw$<&ESHlXl+>gTbZrFhoiE z#{;$J`odFY*Gtr`+&{Fm>VA222FQ@rzQ;68Mh&4kbtU^_l6X!E|9N<^3-EV>B$%bC z;m)=*Dup}euP+a{Fq!nRHFsx*bi(uipVUzfn|kICpz=6XDCMT*Dl@c@Dqdxwb@s0& zGlT4sD+6_Jdg58q+o7HzF&R<!_uf`yBwax6VK$(&1)tCB!T+6JS5E3mD0IzRP)%&! zu_b1@{bPh>Fk*wrC^u5R^qSA;da3Rsu6#{UVf+_<gD%5VOr3oBqvo|m6^xL*$)BM- zd>Pe+EOG^E(a`fw$31didgEZUq!WW%HY#+Exd_svFH9U+B@A4fT+t3cxu6dx`GI3; z^=3pfWwXCn8}TWig3ca9B(ELW$HW4fMpLERrm2+t5u-`+ugj_P3w0~zVzp?H7-(N9 z(IkPF-Jf1sy3)4=j38|y?8QAlb<D_Ce*Dvy2j9uJY#c2oj8LZZj|<#3?1t#UW5OXI z7E?cUj<4UG)E!tY7od%W-z%L((o^#tEr->Y2V6c1`j2E->s9bs9xgyb+q$Lsq))z; ze*AN`{@n}Tp(dyzL?D-hTEk71IzetmDMG~C`K5`(PG7IlXucKhjO%oC^r}=?g9C}~ znO|cYs*Ic94;JVfsj6kim^)$0)4OAf<A?1*L0Ui&DSqm1aXH-_^4&*P5-~)KqE&@- zLBOT|aD~tQL4M&Z9wPC}srx_-3s_2Qj!3iFJb{ggq3vv|*W3Uv>G4cvp2FzDRersw zungQELv7p`ZT^O&g2>!>u`y3IO1jCtK)Kk6N^gEhWBYwd|L)r&`C~hsh9WNe_|G*5 z3p9{+ct(k1{c|6ZJGq?pLX*SuP6C<hjZ(VUq~nQSeL|)2_OmnL2`6LZI#1fJOAq&~ zfXY`Y3?QvA$S{be#5^Br_|=51shZUm&~2Wogi%{VtvdFlmWBy_qVFcU%T;v*B)nl< zv6YsBGi8*XQzo1+{BLuTwkTm{fEGZm47@E_w6KWq6h$5}RV+~zl@wNAH>Ym1Kvtch z6#J%$<_Sg{@P{{+*C|<WES?9Xg!-Qx!Xa<MrMRJ3{7Q?>FdQE^hwg3O`FB!TT`jqZ z#m-^aQO11ChR6E;8U0+GOrI19;TP0rR-Rxy4k}3r$WRoOa$Pjmhtii<@BOZUTE=Gb zi~T{K++y6WU<?Yg=3!fgKJL1&pX%?rUfwi?>zPH9#?1VBN@>wPv!YJoYdHXlI*XgP zMVTAEX9dc)=}9Qkd+-J>J3|BIq}tOnyMsTN;Zdv8x4>kceBKJZ-idW{%o0`J`;HWi z(5K*H-auln+!zv;di&NXt0g86+U=|aG$p|s34{bktYpm-_`($Trq(8oTKcQvsRnLQ zKGg?MH?F@WmFyf-Ecjw&P@=j&T5=r;{wShgq0&ukA+Ewv3*=6IBN1(c$HDt3cwQoq z_`>`p5{5;d3;V^hl~~VYjnzK2&@V7LBoIxhQY#X0^53lp?E31Hj~_I33Obp1sd|}p zdC}R~uWSWm(6*VcT5;G0Q5}keUg@Nw_O6oXe)e7SeXgZKf?D8T2HVy9MQ-#PvA~WL zqp+U8G#pB|4rDXM+WOoD;g6G$#+oue_Yut2<$-veHYwKz_m@)^3uYfoYW*7l|I)Kd zyft4H*l|8Q%S#Z`3z6o#7{?EMIAqo#Ec^KyE!Kj%McIs<_a|FgBBfJb<@*df;wzpA zMXOipFI2o5ouul4B>Jj@(}8khoKw+5e>_h^eA$YaOJ&$oul5Y!I26tyFA{lSnKzC# zZj-SEB)&tDYw2Dx@4}dMQuEqeQV;cc7NFU1+jIr9yBsDR)MjqZ=PWn7AWXp3x%h{k zK2W`^KGitPuY06eF@cNw8}%WyNBq7_Ivijkxyo*zG&C~;cP2mUyW9`dWR*v<DCr2` z@;HfT*OV^vBD!0-fnq-QaR!<?f4VR;yRD2@VL@@cCO9S!zYTkjJy6nkm~e9$qonE0 z+D;B}uy_u5TbvWkuPCkuJ5+#x@&m}bOtHDQgAaIUkdS*~I3NHhW|?U8x`ywO9?oFr z?)azA8)O7WANUC<xTIKGt**TB7QLSssm~$;qHoibXnm^%`c(SX#j%pX>o{zd0)i^r zgfc=gfCuV5O@{IpGoaYj_WM;LNXU{z;Uix6E2+pLbz{Cl%_kmbyB%upIdij_OCM;B zgMqTsED4>a0V^ZfhU`iXisoqBNlL|FNjsvkZNo6FKwU<VE?BkW=vNVljN7lv({AFg z`63evQh()3E68%be8;o5^rO#rwKcnfrjbe*zc4J**R0PAW{Ir<zb>NX`*s8aB<^IX zH1G58%_Vc_6E@kBnioT|dia08{z_qTt#B`q4oM+O-lq|(JMr<Am~r7qJ+mW$LiH-i zur#-7!W%-w&;`(i;7@rq3g4kWV>b&7o{CIyCrA@es^vMP!VV=YQ&N>5XmcV5>_G)> zNCm&_K5Q$IjS$PsRWHUxcWpw&(>f#}`T#k4==*EtW__5<!y5`_@UF%#Hg>?wJBpEu zUyy%Wz`o?_z^8@}JFuPxln9YCUt<ZbIhA}bV=>49-2g-R>z&&Z$^PvQIsE=O)dI!k zZTvBi=mEe<xMKCDAT=PMG}g>gnyQLf;?zAPB3mq1hx`eh%7oHvsg_6@oMYWDy*SXS z@cM)s|6-}M6z43eX|5Z>vdIU{bPD@plR<RfNGV!q!e8&ZC{J1yHiy11HV=!jN3wX0 zWo#O)((AaO>CGucssn^X^E<c8dFSJ*r6x&ijq}5YQN2><Q30mwOfKc#v_atYDgea) zrc%O<#cZL!#^9elV{6<H535mq)7_i)OHl-J%)k2pfF=f^&Zmyk9g+70*ZuRSGalMG zv*8s~syp=20*d^dDL~x{%-P}mDp1Aha6$<R#ZMv#1!fKh60|SLOb+W)10)+llbij+ znP~McMdL{#xrMMVekjW5++Arj;5X5m9h;KTmXb}$B0Tsthv;h!m2WoLY!xFFy0U22 zy}V?m)i<5&4#Sy#4c0lG&G7k@F1089o!@|!J7GuLL!Hk@L2R72&IFrG5To5@inGP; z-Cv+q5{>tb7~v-v^%$>s-Vy}hAqf_Rt(&q-GdMR)O_y!HFUS0Xle3qdQ#QUG7yi#& z`sbvoivZEjG~=uUp~4dwqCyQBdcs)k8ahFuN?=c17Sx$A?c9OSxDNv(gaCm?%93)@ z#Zx0&px%Msk`9VeUkmWpk4asjvG%^vY~%eh5XUQ2{$Bh&d<Zu#i`{@~`PV8(recI} z#VZ+r>7D1*(5B-C=W0IO!^qI{em$>+){RX4U_aqvnb^rLNMI#QKV_4?_08MbDBtx! z9BLx7&fi1SmD@T)HJ4Se{ybMDn;Lt%VDB^2j`2P+uK}=xJhp|D!GQ=fyW26wRsAd} z`g>o1hy$HF@+DAes`_GXH<k3=UPZ#i9OsZBGIZDr9$*jga-YNTO)6b;P<%TRc-sAX zhuCIgJ1|nE(w1ZB!DY#D4xL6FaS(f=qEkLZ5^E^i_%wqLSd;CU*@yMy5G^#k<MP)u z|D35__Fd-{cZQc46pRo9z&pyp$8`engbr%pGeduB)pKm&kHe7-!X<si9ps`P*qL6_ z)X;6_W{a3+gv+oA5Q*5skJFr4f$T(KA{1UHHpOvRXb%taqQ*SbNl@I;p5S$*lsTGe z@PBrkSgRsr%vC8bs4S?+@J_FIs{J0AOv7Mu#cuv2GFMKdErh8co+E+Y)|I-3`uHLM zVv27sFoO#W`730r*qkyKQ0Fre`maZ$7r*2p;Guhg_#9X?WFmWxrl`MDTzy-}lOBQ{ zq1)C-B|`rQFq=QbM6@Ji*y+p!2M|{#378gCseWU~zi<4{+y5rc-`RIkVo1M=#9UlV z+am&2gX~jL-6KxzOYydzI5pTwkpV6(#Upe^0Jt;^=#D5uPdF(9rGFmHKNhG6L@O{? zDD~`1Ky;%P8Sz`bd#`LGzwX9B0%G3huADdJk<)?Bs9Fv9-<F4$y1n!q%FK^wfVXuR z>xEnGc5<X-Jk2E%(Cl|Z6fQ!L@3lo+QQS9XS^N|KZRy4jsVUSNc}V{JEGNIQSU>J< zV7EDh09LdgJ7p5qq1JjEUH%1^L<5sQ<C3^^0UTn4=qO@{;JdEk=Pc-dAN+-cX&Gd` zgDTdPvoOfVu#myV`)E0VA@Bd*2L1O3uWcd#Np)tgK>v@%__u!ozXdO|`qys-7(=pI zE{E=rmHs<38-VuL#Knuh7z>o1b+)~mVSoOa029b_=1`M1>c5u)|2`!C93G7UK(>#L zQ`L;}f8E>fyA@)2eh{SMHvb;{|Dz#1F@SE^7bXWwk^c7`|NV_uE?KMZaYh1tKl$I^ z{o4l&pi+t(0vEzU7qD0Vi)d|Y_oqe2epAtnawY!Xy|hLMV;>JiOa?TmE-&||-}A)^ zwAa&%8yOOaFkpRI-F9!?%<&g=4uH=v00%dO(UJ5XQ5Xu)RD}iajHmObaEop3;Rsii zssLDO-22k46+CK9oB%3_kGZ?C@CP_|goab!#G)B_6<%a<i17Pfnoj#1-_72!TkX?| z4AllRH=m4VHzV|+Nvx^pNJ>GL#kDd$1$M4ImYD*B(K@NM%9Fp&>(n~FZE(IugVyKO zcm6_h{-5kqsk)Z?X;f{%0u|(NAkv<|@}bLVy*EtIe9F{rFncgpDV@7ylHGQxsSem5 zy&{&Poc72RCG`QiJ7MiP(rgAIA7~1C=srr*lh>M{j2)QOjXR=%Vm++$b)tGHOYDJs zekJn|HNg#_w>~erf2?&m8PNTOBop?*SfO(EAyq(<L)U)Q$oFReY8j?6NmQc9BIq?K z{Yiy)yn|%3;OQ{Uq+3b9z8S<#iTAcfO;tkMh^{zQI_ygYvJ%P9NU!^=(x-oY?sSkx zzN01`5|CjZp7TRG7wxi0kN`sy4{9mi7Do8=eV1wS7(J9QbMoi67wL`B4W~Kb{OaUD zM;2>A?DPH0kmQep!fa=kq+Zzh3FSEGeB7%uF4hVGi5;;v8w@j2^=dte%X83N9QcLl zGky}UT1ij1)y~a|;pYDwvHVa_`?0NM%Tv_D+-Hti;&%toLF+_xM1Rob)wb=Y`Z|YO z(pN|$!bi-0WqzO1I&r-o@y65kN^M5Yes-Sd9&&eNCs;1m`2cDO|LenG$)_Q$TF+oC zMj^7i`Eglhd#=yuV!y}W?}*lt)IXs4u)>FGeCL6=>d>><1|U2i(2f$()DW98ecNgJ zau5i3QxcH@fqD?~^cB(PY%wI1Nf*iFJ}nG_iL;NRGkVfsW!8<6k``SckPF@Dj>l%X zBy^ZGtg~>unoUP8liFo7TS21ZUAn3IU~zD2qE&eP6(5;Q67%2zp+RwU30~>HF77?z zIMn{DHGc$xgnxz6g=9ZV{3nZ^l1m+9RXEIiM1&Yah#T*g?yG;aQ)XCw4v12K$s08j zyyRA4!ZJZpZfNL{Lx{(B0aS75A%cv(>X!nh_{M06k+aW)%EUR2^e8Z{mz}na6TJjk z5>fO%Ww9mdWgp|&?XY>B?`W=XuV*f2Ew>$ZYQX56`^jcnepK^IPqg+~R|68yjVs5` z@1YIiOFO8^Ort~>|EIkzNdA9w>k*RaQgmSZP9_A{ZVN6JInD1REgCm>th>_PLoaLO zCh1fs6cGa>9_Fj72N?r|PRS#JZ_F6G+>cYJ-{Vw6UkbfOSWe#(9EKCtL*SFcUub;B zSnAAXCE+ey7&PW84O|vBC}tdv37y~Kev3L?<TSr$KgYX$eGmBT&WK0K(Q9co-repQ z%{RS4AC9v)J^w41y6+1fxH4O>w;OGqg!?rEOd^trJUF{et~;mt@5LjaHYM)TpZe(% z*N5)YjrQSLem#eOyr7{~`07~#AMBx29RvPZ4CqFA!gf+(^En>BXz+M^MKxtE1Q>~p z6xfJ%z_pvIydrW#rHLabN@VE*!tV_3bCS#j$`TfzC5XHvt0oim(7qcl38o2+60=)f z(+6Qttd)hNG#G^&Cwk0RBUQ_d8}o73(WP@)U2kYqTJG1*%>5biWHoTDd*N{S39Cpg zL!v>Ow_PMyAo15Ay~XL)_0_$w>(vD$;GvE4Y~y^n$cG)a@{XAEISk6YwYOOSgh+Vi z_kdcnYXzHBC(G?mBk6;1+cTUhX^i@k*YJG%OFn67{+M%5iZ%!PiykjDZqJ!sO4?+* zV%LMKIhmpSrk)DmxzXr8L%TWKvfu-*8k2JuKi!bRwjw%%bhT48#bU|chNg1+>My$+ zzOH7qc!1a$&*}_tSo&72s<q`z%cXfRis!p&BW}JG#-}roBadjsgQ(aS+n)IHj>MX{ zo7)eJAr=e>Fr=LB1tEtJjZ|{py>7X~zinDTA>HQ%y=fl90om`jDj<OeJquCY&pTkK zZw)9!;9cgw6^-0JM#pu<;BnaF#*Z1cMwRJpxM6%td8sMrGgtMU%+926_PD8$d`w5I zrFrB#CJAr+N`!Wy-6_rj@vz~)trx6FAewfjX6%L%q_rBg9WqzUI0i%^Wk~*Sp~9)c z{}-WxC6MDIc;?533PZbTcpNu!9jWoVV#mq!?){Iz+m*N;{gN-L`jv~<+RIYYK>nB4 z_9w0t!_e)-v~(#PZ&O{*A!5LY1>S{o7l~|E4_$97+%~qY&E~4{C?AKC&S9F>s*wSn zpRrp(teJM%T5W5N6izNr9SbS+j<_hGp@Q7Q<TUP^&iyDSne+qXff{Q!XKw+1^qfKe zU%}xoa|LD5(-t#k?-nD6qlG16NwiWHuBA^E3lxyd8=8XQktq!)Gn{hevKX81odd-S zyyxCzcCWVA`0H+Z*Fi_|8f)RQ@DMm_8oghk_9{M@?<E`pKgVRxUCq-5R&IC}GS0Cr zCkx}T_+d<2m6-mD$PN)gmT3j9T|3DXPUipi0(f$lUjm}DvL8HnE0Wn9ETEw3d1pS# z==nr?Jg>Z3-Jte!_Gc{{O8jzZjQ6U|dy*)aPJ6@H0F@P-*Zdm8+2EM|HX&c1(evzl z8DKd6W0<e|GMUR7fZ)HxQUoSHaAizO@JNmi-9OZvK#dyvAkAI}rmodfC!FRvrj3XZ z=0mG61W&d*#yVmWaN0w@)H*zzm^l4!VaENn1)O4f3Se0AI-XJfhoqO;uz_G#FhfO# zt3onD3=RjRo<36E$96xgRrbp6GEz)aY|9EyoR7dlsCj)bMisIskuCbFsKiO3L><ZH z^3mI{f|*fY@dF4ux<9rmy1{&l7T&q4=443`VF^fA>h1xS(`8dj)c~82{dSkgseI)- z*5;>J)Zw0FqX$>{6XYcyh$d%ZiEK$SiLo5loY~ld`A%4jZ`Be-){C5u#;w{FMIJx| zTEF_jCeOAP`P!mgByr28{D=6cfKY|wNy^7X>`8jJCD+E8jJgxTVyyzQ=D548-iD`R zr1h*MlKF~XcFDVwr91uyYtgFXjiLJlfAu-6S3Vk5hVE?nNZhK=k`qS%uOS#VX=@53 zZ<2Dz8*g77sYq&LMid|Q8o<o7>z-6%Kr$82#a*Z=Ayi{eO~feE2sZ&*>v_fD35MDi z{5)gXpkh|3{{+k{NWqr%@3D^}2*Tr;4BKqVp<jnUW%zi)nwn0RIH)pf);cn1nvIij zCJb=uQh0GOMpxV2y~AWqBgmFY`Jz<MOSA;KgtQLRY-0GBjfUPs!0pD$jVk!MnT%@Y z31dm;kQ^cw2Iy|ZIF73$r$V)sUPrhFWU#{7<+-Il5(+tqWs163Ea%%ba%f=F_bGV& ziSUW}SGlCm^yLy7T`vja!{xxTq3qo7us%99VH`h@S|Wj$Nl)oY=t7~UUY$vNrKcSK zYxqp%nC8Qh-yKjwr=RR+hV^U&sd?ve%hL=0P<%o6lc_4nb`Hs8mN#_b?AR{zBrnC4 zOI~5hd@=O^BHIHl$0H@8a)ePmW?6v)HtCRIEiWSjKe*iunS-iHsgwd+8(v-=E=Q`u z0nzO%7Qk|G80)7>O(dC=cj4FJ@b}`nZpJB=%guV#RR=Ct1RW9&Z{nwK$x+_Kn^D&y zJwP#=$tV6A)|;%a>Y8V_EMEB;K0+h@VTZW<IFv1l9t|k}5&@CfL@XQYrF8-jpaHw3 zp~4HuRA{Mxu7lU$y&#ZZ_9`ZF9ZA@p9`TRPD1ILxFowk1c>SxNqk<%vx9}Ue@C>L~ z_m%K^>55gVAe8MVv+=Hwbhe)+zHn&F!<4oxmXojf9?zN7YW6&Z0+Dq)juB+DK9e%L zH@`w3NDfhc1K$y<(NJnX`N?dqT$nrhNV_M^i>$?C+G2b1j8rmOvDP6VM|oAiccfa1 zs&S^iilf-0IgUf3cs-i^V%}1WNZy$RwJ1CB%m@MvBw+E~6R|X~ixJO$Jam!Fugn>) z!9-1j=|r8Ix(s7aVNkdD!tunLCsczHB&_EqcCYWox8p)hPyd3e)3jW-6P6Zja9~Ni zRg--R-$)GB@|?bU`z|{m4A|3r@0zx@)O$-2PG(0bKSAK}NV;YsU7&(eGvgdiuLJo* zG6mOg=<#JgobotE&)o)f`<LE`47nyw){|LE!PL~jh*yTg58!=icZ2tm-$$C+=P$K9 zQlo{N(bp3>n7*@H>;4&AhkqxN9w@K{M`uxAy;vf|;Cep<sxD8S9XU(i@)ZHzqa(6X zHJdd_XcgDN18p2s>3S3GS~Nfa{FIl|kn2zqPYM6xQJHSz5Ra2M{k{vHuF*G|mvQ)n zI5NQa&)qGtOl#0hHphMqiI%{IJgY}KTD94tU;SI`^lw^Nm3u2;E&6j6`p)-ksyr9I ztaKUL;krPTp_sZ}Y#w`DN`>MeKunWvdKG&d<|?Op`BRjnR4DrfRBd(xt5Bl&CaW(- zG}eO0>ha!b5AhuyXD~XkCo0wEo0hL=rN(FIuIDFW>nAt2BW$B-)+qaYR;@9-=YCTc zgXQ|iM`LJ!bv*OIa_!DZSR3EtJ<7oYSEhPrUv}6!xnw0;ne!laFy0ePWeOu2Wrj$y z^9(>HQk2*?z0Or{dR^(-R8~oy(X3*8je7yr9Bp&e+YyL)I|cecC0|9UkQcPWWH?7T zwVo<-N02R<Ou5yJEE0lc8j2TV>_-Et`Pe(AFI!|l<I3UTMH8mk{x*TRtZ7Q6l<vyC zQynKdU(w$g5tJ?96O(s=PNVv%xJ;Ve`t-eXPhZ=cPAbuUtn*t$svDGHHRUafMX3jt z-3ei|x~V0nBe#W!t62Rxck|4t^i6z@(*ir_+vbH2(<TohA)9XU_$B8Drc25R(oVM9 z6RJX;sb)JQyI>k5Hf}#pXVmGK9Z%ptgpId6A!TUn>M$Dqvb90E@7$6vbswzB)htRt zI=t-PouvajhRXFn={;+O=rnbm59u^vL-F!nB}e1jAJSb3sGj66lz-&jBjwdhb$?kp z9HdXKzg@*<-uHh0&YG<+Fc#+3I%19|-9EI64u$Ra^#xxrJ57e%L&D_#=i2H#{Rfhz ze&v_Ny(_}pD4zuc6}RtNcSPI15%ZHji-Z`3HIx%&Xi^3^IZw}qT{KMTZEzs5U#j>j zTQZ^rRt+xEVp5%%#iOiTRa_;vwR}C`JahX>LpVZBp9A;V&v5h8ozBJW(Wb+x$FE22 zKWrSvB45%eQbu*}+U=$5=jTnA(0b-5DTWr^TO<Q=HTRfY{b(yRkEgS+S^HnZmLB&y z=r81-eZY%u+<llj<1qW{5tmX8y^li9ndoE<vN=qgdCwb1#9FZ+u_gX+e2Be6b_<TW zn*}6*M0WWr5Gfc5tUs;l=&(Ml+N-l%{CG}eY|j*6sP#NZm3;I$>DKb7Q=kSA@M8w1 z=M6Zwcq{LF--pXc3XNqOX^|`PKSW1_e~FIbpG8MhDq#q?_new;Ss0<X3zlo)#?B!% z9EQK(NjQ!6b<sj;tS|BdP}w&7r49@OeJ{(P_Mco&4QJ}i;lBQIeHWQ6IVrd{ixOae zsy~sd^K$=Q2dDbe!)9M}C&&^$nqvBf-gyJswZ<9k6X2>MvWNY+3f*`=CUI@OWpBH) zAGS(-uJ){)7{5FKvFWYeJE`1HP7}A?TfAGYcY;fmP6+<Ardnxwhp_!*LU6u+0Xx-? z(EsY}m-c3P7IChnuiv~ZIG2tL;z<Yx0<SUdc*pP<<)?jv<L6L3mNE5i&ertoZo`2D z{cjU2U*7^~MGOQ4gwb*@0S&3a;vwGr=It$})<B%s(NqzWllMmU+Ct_lEnCqRh!Uc1 z8;(-*agl+9$5&m!IAQ&<bcvO>_<$OfE&J29r{JCY&ufOvaG6Ha^EnzaDq9co@%pY% zeEl)M3!vBl^#Kq~S9Wc(f>0_^q0KmhF`KFFjcLqS5Ti+Y%4)Q%Zj*VfnEiO<QLXp% zcvljzQ9<uEr(pKz-UNT16zvs1XY{1YwI4y?e6csx*)dEuJ0?1T0V1|=MD^-L;rnP^ z7eo0hemcEzmVG@#Jw91v7t~xLxjKCyMC_fnGiYYq@)>z5gYPTYA+Bn<&yc6)AL&z& z5)CNLaWsP%`whYn4X7FUVt0bId*WrqAROIHsOrtlz6O--3Ss`hFMaA%V@|~;K>B2H z@~M2T0AE_|SMTy8ecP~yy-%$Ywqfc8&ksmj0i^F2YF8&G(aWUMg79WsAl5TsNq%2d z8Fh7OUp>o9`s!Q^K*SE{>#H<HZdKpNKcaPq{=#cWGj0g|K*^-umUvt2`<$P;59OfU z;mVXteAkmilo|MhQ{M&*cafANj?q#nE>){y^4&_K5UsFO`d;SZ6WVx=@lq)l?&WkQ zCD)p%earDRr^bg-v2&+~kdaQ|T|2;OOY%BCl<q40(k@zMV3RnS&X)MVV>yLq<YZHM zq+S9+!E#Jst=Aogb5>q!?`GsofCR!2dfVI1CP%VsK!#j5p-_%N^^nU%sYsV9-y#G% zjw%$2pb_cbeU_4GP$2OSyO1luF2ram%}e$C&}|e#iB2t`WP{h^rm@aQrGd3MX4bG6 z(_cb8y}R)_vbF*NrHP0{6MG*gzjwDwwbnEP#W_~OCT{|iFA=QDR~)Q<RHdeZ-BU0$ zO@CG}u|Q5ioXAqCW_+X3u$n6&_0S+O%Qc!#bLTlnm8rd2#`C)<C-e=%U#z!%7v4RJ z5&dOS4{c^*w+CZ>g~)P6=ES})oTLG%uD>6l`^{LY|LF(K#<=(h^9!~LM@HtzQPnDu z5Nut~;OuJC`PbO_{8BvE?laAc&<x;~cP(_QQl?D4$1+ifBR12!zA@SRpVl-$67KZo zv*n5%<?05hUHPtegKSdVDvRmfX1fY`oA=c$-Tl1+$ir-=LB8dj&M)h_4i1t6${X}o zW3HCny5TK=*ie8K2zlB43h$oFwpF>Dzk?s?R}co3LAidEu})}05Y1wPy)dV0l}gda zhubyd7A&bmX4aCTa+axbSg-Ns>$d%xN2B>vH&#cTn1nG0H2!>LIG}3clPgo>+2fta z7dg7|fLq<@Zo^^X@9NnP?&m-6x=^kwC{i<}+ePAN*`TDb-*m^omsCw%pe$K0rt)bu zBl=eu4u=9c>jbxWM*WVy$pZ6kz?SQq8jI<SrcHYVG*EI4lIDG7PbV0o-7M~1679n- z)ekpjUzPzO>BEU(dKRjIb}hr<bn(SG=@@kPYGULH+t~!Wk)PH6jQq$)a!th@tkoq_ zEiEWwb>ba+Di~ek!eq%ek~MUZ^I<SETzoT@e9}K@98hvqxGA24(Zw{bc$Bw*jV|U~ z3*BK~MX&(2rE7sFg`TKdVzr^hjP%u>ZV?PJ)bNW^yvq5JyTF>)m$BtqXmY#ts)XaW zi%F`@Hou-MVJ(74{JT)A4|%Ys^7PSj8(fs<kVEavpL7FAnt3V8bY`awQvHUnb=TO} zg#h1;ovltVO=6-RCGg!o3P@Aqo8?Vxg?R}I*s)pffO6h6WT!B!V7mBYOJY0D_bPp8 zJ-zuQ5at|>Ii_eW7z$XiCFr0ig$9HIYq>%<=awYdW`v6r)dQeKXHM4fQTt-~3OB-+ zL`T`ja^t=~$F;a4`E?pP#mYaKl|h}ZAJ!~O&kL>QD^mI!)jD&`xjgME?0Ua~6*J57 zNI?u44tle}aiTVY1L{BR%fPyA-%I+TEF-5(Qz@IQ;NG!RkH<aeQ4tWJ*A>?NG9ES- z&=%sN$>hRr`n)nIssVI})w@;8w}K<?Iush6H<y_dwn!JGlombaZ`VcQpa2n>l=f>V z`$GXh+bDT^x>i-p=St0WbySBqU35q%*9gTdDQ?6?Rn~U?dc8<?ys^;qr+Pz{dV{^) zr%F;Q(}&(j(i)8#wP6<m_~*@j_*vc7z=}VM{<w)LQo~gd?HclJ{p3#Et)rS&;pz20 zQ2VpOF32$k6?Ii|9g$Cpc_@P8Or9%3U6&b9o_#^;Mq8uMQWLlYN`DEX!v^^?Fz)&M ziifg&q1{z!EW$o@)zGx__6I&3kC=99*QB|N%({efF)=762Pg;u^tNX7M?<FTJ9@Fo z!s}mWv!h>$KUsd$TaEr8r@IYLrZ#~*L&rp}>mzD8@%d}>Ib<Djyki&6)q+6L*PqrW zcob5?@}dK3{L*LJhTfrjNssF?Cx<jR8JK9_iX3~1-t~YtdQ;7ENWI<I4^iUH5xFHs z`jj;V^v-wZdY!QjD`4jj8L3b`GdFjfMy|*H2+H*S&L2|~y<mZt@Uz{KE0a`ZMt?)E z9Gp=`bsiV{$AIu`oh%5m{7$Q0>&dm29xsv23W_0g?+J58tGBJPzSvM4$C->o9%fl5 zIZ~%e<t^y807}>}+&?%RI3yla?u-R#UoE2C;VmL9?UvME%U`9?=~Z_;O$cX9%vB#D zW?YZJ>1_WzZj2?~l?V{HAy$J{hq2Rp+8fO@NN7@Yx*wS?Qun7);=RNjwQc$27y!TH z)6`ewdRusRUZ3)wFM(P{`)=L1lj}N;dMHYen>o4axEMrpWP{{vi&TC9VoltWTSqxU z9yWBTz~~r!G~5s4U2<2`!q3@=AxHV3^dlGEQ>v6jjxWdC8-Gr-!Bo)lk)`@_9@!-8 zvoEZyjADWz%E&D9_$E`PO^pQ+cK+SDib4WXNGFLn9~}$z_b|uXx_R4Gf)EcA?vTxd zCpxbWpXIbEal0`rd*2`=fnVXgk~*CuW;yR@t??JWsmIlX`+$wT1SGbeC1xyr?<0S< z^eAFZ9bNZqx+d*<4_NGSZI}b)l`*jUXYejBTOkfVkcsq-1aO`yy-rh3oM8COM@0%D z3Numo`PHpej_@f-PqJb;^`Egz2jsZBO;`0M=fQ>Z!2~9ZUDd+OyVZEV#1YxI*yM6N z9?j~dFO0{stE47thI8bzCL`qqm2-`qHIk&I1o`f1;S^n4tTRs}NA#S>^RflbPDD?J z2HufBZVwiA8OqB@v1rIzP9J`6OXNW8<pZA82x0no9GLB!i4med^<t_o$_${!xBFu# z^s=oi=gK=bIBb5wD|s}KNe&O1&87&;)$Jrx!|g0OqNak@v9wSSoLEAz3Uz1-DORza zg{4a7<=3(Z=BQ?HZCAozmz)>#>2o!^E4GGg2pxKU$m~h<Ot@~sK-o@p(cN9f4-1=z zxl6lq>IcEQD^{|UR65ol%~i}_&S~Iy^y!jg_w$B)V**0ruPP3T%T=W(kc>X8n)71e zG_K@KWz5&pQPRw09`kWW9jTd0y%h3Ixs$Y_t9(~9Udtfzv0HNXbMXZ(pij#qW<eDe z3S)mo@|qJ=tb!cXlM03Mi^m?`NsS3W9_}jN%kZSgy~f4>VAd-?c*cq!DG5X|<g$;> z_~))b=&%?WNT@3hbKe1yb3{{UR7w>@mc0q#n?A*p#W_37krK;qZsY5!`Vd)j7uad8 zS(I@t+DOfDoSo2>=}c3FavJCvdm;9CT<P9XTDeBn!T3x=@5hZNQl+k;1eYA)HYt@v zW?`dC?e<u03Ln69Yv6dM(TyAQnYw-s9U*1mBXaP3mB|^g$wV;~T)dmNCXW{EVux5u zXf9ni?KhZ3k+g(hZ<%<`L2A^gQe!404;)eUw;;iQfdmFT5`7&J4fR3`AHQ5muvlfZ zV_LdY=Ugu`@{00FE}cfRw|WEPF0DXW)kq3$Va^F1kfT9rl$|9(;0uY?kZVg-C{XOD z{((`y(9>)&o*#X}T&!AypFfcsSYJ*b-!*E}l`@3^$d6NUNv*_Rf0(n|^_HAX6+DCl zVm3Z4Fno-1=zL{`hGB;Wa-&~Q>uv|jH>WIOQ{{h%LAae0uw(LQ?f3*u7G%0co3K;7 zWMUpBOIuDnYP^VX+P1HpB^gy&_uI8qdX|Ufq-Ws&tqwzK6^>F0+X;9*xVXp`BMK=e zp4Q@Fa_{yCVL<y9e<rlAUga_pD(dg-=L*(ML`cxlVeLSa8<1x|CWHi1--F(7i&=Mm zW!Baf$E+XTQ{E0Gvy6A#DO&a_<b4*dhrP(2Fdo28oLqVhkNZWp+dd*r?9yI5yD;xK zOV`3kUS>-n&sFf7-$)6@g@H7==0I_rGrehU5UO;Lh0Y|NoL1YXVYhG+#91xWdc?)- zK@h#&>HBq<BtSfdcmhsU0%>cf)u9)?Qf6*)#%FVC=D0k1;1IIEIG^0(uIjicN4F?L z-p*jSl?@+Un&49PeG_tZ5M<1C@sQP4!UaS-YBTR=)cq=QwDTM*99%24Gc#R_dks$? z?ykZgM|A_!&-M&|_@REC&d|8}QA|wwN#`+X_5;ZYF^$Vz(^W|KU9B8Rk%nt%C)6*R zo7Xg7bY^nmoga6PJh@J>un1EXwTf=v4YTF?XS~t?(UaRY0U^!q2t`xb924Oi?sEpP z&CXUq120AuFB<sb?Bp~H96)Dt(;r2FSC8d-;Pp3zF;m_x_33e&t)$_Q96uJfuIO3I znJgZAY}N&}z04r>Lr_tu*ftv$?CJLdNU);?^KD1Iqlg$CW~7#0z;J;6#^=FtNUtsP zhc0XnW_vJ}#JkL1<yFmyciG{SGJ11AzDVJ8scyT8bJav%Dr!NM6eZ?x919NIdsKcS z7n>f$i6BB;uV_t-TALj0!cCD0i~>zwQ3S6MZ}TrE7bi}qWK4~FN^dyYu(wB?nePL6 z1rn>pg#+d;cKvz38For|Tn=E#>?4?psvN*mX?(d7o`~&<`Dr^UN*E11_R%|rKN_I) zinjYUsbp8#Etj~7c6sb}*}e?N&~)%N6GGrX)V;IgrxBc+koB5A$SCUwlZj@0wZ?;j z!0Gxcg@_rnCuQ{Zp;74s^yYpa1IsNb2=sm>8A_oP_sRLSWSk4yvnO76cC$21=vH!5 z*rU?k9}+OZ&mSDHfp7%>Xq+;{A6$SZQR#I-3Bv_=XJpcsO0jT-l@i#)`0)Y>6Gf<m zDx*N~8VsKizef#_+pxl!DzXDPQ3pU}B=BcTVvVLRf{mzkyeNAhO{Oi?yMeNgU#yu3 zU`UyH^9u}bG)4H|(3~S3g&QS_qIYZjqt@cWrgIuza?AZ(ABB`%#hW*QC!9Fbxl8lF z|A$^Hu(kEYbzfES(X&RE6%w0RXZR<VN+at?K!V~!M7pC_$Fr6JzOMtIno!8qd4ftb z5ZaCmkDlE#XR5Ez$F95Bz)K8%Whngdq*KV+jzKCeCbJB{i;{Guc;`zBcFNka$1r%> zOs%Hlcsy@xnlvT7p^3zav<nY1{H;tn9GOWEQi%NiyYXWb7!)$w4;{W-fMR_~uvIm= zFZvjjL0FWp+vC=W?vSrGZ0qYr0KJl<WL5Zu2%cAuU(U#pE1Cw2(C}a)+n_-DviXvq zt}k4sPSLJ~@k&An==iMp;e&E{?TvXjwJPHoM^Vb42)}(cy7^URH3+|p67z}NE$>Us z%nv4ECYf{K;$gQO3I2=ZiMT4a(eK<;KV^XWFOWxOh!@-+JmY{Y3y@2{?EYXUG$mV; z@mZW-ivFAd)4irMasG<*?tGP2p2!<;21AtOZ-2MbmdcFmhz+rBOx+haR5&8b(+RiH zep<CB$L^uI;mEo-UM}i*Kio2`>l>w*ZT0cwb+dm1qiim3*A+o0lf4M@qfE>wldgm8 zafXA#(Gmj@g{$l5jLPM8_9Z0N;5Xu}{V=(u;@0E+fZLP|K#>97KN!i>tkM6Z)c=e% ztCOZ>6v3A6UYG`UVKM#i*9!N(UT%DaxzLa^4hOSGT{3Lw5qRE=Oz`-qp&l-5ZI{lO zjFhoQ!A^n+dU!ZWcNTjS|Mjz2;YOP;thkv~7k<_Car|E=Sr7-#%4Pg}&Gb*!_ZSlL zGNmgJg`5@ahmK~sK3{XBJrHH=n5W0(&l5V?t|GiOurros)~jm}u6f};?aQsmY)`@L zi$SlC@|*u*MfxsA`!B%kGnMBx@~@f^Abs$^H6tUn9oT}`#@WWqMZZQH)%;?z^i5`C z{L82`yJSpXhW*Xn)W!mY=5HgB-%wcxG9;GpeLXrN;rO|mo_N?y$c!X^iDHuh9z$YH z8FYjA7nUMIBxl7Jv`X{@j6bA&o9?dk7Jn6eI8sIyhTRaYrjFNt@QM0<+y)&bj4}Ky zrwGIAK5V-CPFqE{t3d4|iN#2m6^0NYt}5Q)!vXOurXU5x6o2wb_<}%_b|=BIe*3G9 z0S8UmujjTN%twbLpd&Y^^LpDU*o|Hvz%M;hXAm1TG}*VubyR@=6#zvQD1JDSbz>b> zLC+n>?4Bym_*01x0}%<1Em;|eXS%+)hJjkD4Fqg25;zqQFU7-gd4U{>z)71}Dr*Q* z5YRKP^fZ1jr&E{aFhpX-w55-?b^HZRtsp)7nROUzll(cb000pY(e4mSE`$QN+uH_9 zqFx(H4@2QuJcVR&lrG5baf0ma?X3%gWlzG2G%|v)t5Z0g&!l-miMuD*slnpbZxp{v zR9F@oDHae2|M~I3<?5J!>E%<PX!-ve!T;ygXg)X7bP^?N)bD2U^n~r!9Fb%Vha#5X z7p^^ZcMq2uvVFf24K;zHB85><am6eB-n%rY^-74o+2e`V8=t$hlfAkzoFy!K+&`!r z(DS}BL`yF!Z$yR#Sol9rW1R%hW9;q_rFVZd!f$ZueOg<YUv6oexRE0)+Bbp#Su-B| zpx83r3FanV=B5Y1rl=x4O6+l<r4~e200?QuX@&J&Y9p9w3!iXB<a;CeqB5^U5Dt`W z(g>Td>z97uJf~zLoonK9gvuGUqfVD&M1Yq9UR&qy*8ls&h+Hr#DL<zwU|T71amrK# z<hO~PGN|7;XhP{+u!b6vBNwO?Iu(iT|LD*R=RZf8`9G{z@_d*_m+_~z7olv^Rso&K zz56BaJKP2^0F;x2Sh`l`9r=9ijBs?=nsKf{b`%kb#Bv@f5>v$la>(RJwdjZ+P99v< zEyjKWgTEi1@18Y?BlALgN~3etnjp8*4jnh83QfSfR1y*paDJshH2z%oh{Mx(x>&|n z_su}gX8Pe<g?R$~73C#Ci%+POn_NLsm3mf176SpyH!1D)6i{3Z;|st*7Vr<5&>>%2 zVi$cj4>^pgX#dY1L1chH^Q0LDPFS*DihpTLeZsyL;RK8iLPjWy1?PZi5iNTB$3J~5 zu#6<vnIZ7LkL*brMs3^WOcR6vgZm8oFKODpfS=Hjo|`;ofjyMSAcQ+T9fM!ez$}*o z)5x@g9JC=G48YVn(6BiajF}`*%oBl{md=Yi7osE(emN^FK$jsFz;vA3maDvtO$PYF ze}3IdMVgT8kenIN;a{Udgo!{heAK>Aq9U{45mfAeavRQz1PEmt+8N}3`J2E0-iuw5 zAERj;v+IEiFw$+0{TS?^QNq{s?!x&;oqy{AmxGz<EB4Q8fOZF0{BWuguu2Mw^!?wE zu%`{wvw<vl$vD?DuJXY@Y$f)kziv5<rrgzFV$CxPQ({y=5;CzTgP}FC7yb*|OAxSy z)bx3s>C*COv@}Za(*JD*n&auY@q)*3>m}#8A1(j<=45lN$CLZE;OHr*AD>@FR#@Th z$?UJ0<2Uiko$zb{WkpKZLxSFPx7qsfzR|Kp^z8Io*E6k$POXZaCFOK|Oca{Jj+JHi zO|h0XG-o<fGnRSl4@l2;Zv_7gu;nOsvN;iXdaQ0ElTP*nTo7k9{g+0nUN&n~A_B_| zc()H~n&bg7YAP`Q0&f02V1W<(wSTFRd)s)1UZ#k)wwRmd2)tt-i*)mUw|+MWk_8Yr z(egUdBF!*o4fLMq9-7V0PJw3y%2v5PlZG-9`+s3{6!N-r*Vfxy=WnlT%zert$r8^V z4);nj&9CrPxb^CL$6b!Kne&tp05vTmc#QSG6v@DrFc^U7(p-)C08O&K%|bliIkUYV z_Syd+oPk^L#DRHs(dvYIZ=c&Sy^It3(%*x{37CGr+`3@gmzstZ1>4hIv{iY&c;?xT zLUDc6hHC^Kl<3y_OPb5FZk%r@3+HRGp82=V+YlhxW@y%JyS|pyzkUCS@BU$!!-(CF zjrST_N^?H|{ZYew(+CS3TZ9N<2A$91j<0cd-aTuxWwsgoU>1~DW6b3doX9;{t;J?Q zqw*zG(P9J@Am|vonIHG&2||R54Cq#F-X))`)7=Sdz&vC;;j|ymA9>8!mn>JliZmQx zENM5bz)#}vNY85kik`$>O(KKb^{ubB8EkjP5#Fj*RU9BRr9Y%R*_Gy$b*@YjSz-;9 zG(FG)o{BlWU+*_4f*)-eMWnAM&hu37q-QS1H9^*^RZrJ>%g0m4NC1{YR=K-?w_Loe z-H(EY<IJ;bCvKC%-_B`Af4z8B`gFXC==&^02HeDa03mXLcA@=0U>r`n5TVlDG;Q`t zxL)^3WFtm)FrH5!L0D@<G*x;=<y^wsWfHe~+c;ipNWYew*9vL&fY5}I0-Ng9^Dg0k z936yS&+i07rS9zXEk{-=_c;ve+(RzM?Wg_ZSNsa97~R7`G(n4tAwk|5x@`7oA6}E$ z@69#YJ7{n1&fyi9t{HYG6g1Qag=oLIO@8WR3*D!0qwj%F%4~0RI$F9rd}xYudU83e zgIc}5Y8O?YB0Oz&y$M2|pGATi1eTSfYDZ4Y`sdJdm2Tu8d%iU}UPO=$BuU+T-OBI* zv3<^l-<fp2cj^?}0_w$xrAXn(-&PuLPt$-X01T?q?&7N&vm0YH&1T_PMljYHh8&f2 z&Dr#16uI)dgeIfFIX^yqiP#@3a9d-$uWWYC>(1)kw3@$$R39u!==s0P;H$P=)47*Y zz=s|I%G{+FnZ{H&PDKJ$Rr0C&N80o*3-6ClOc#_V=2Lm-bciOg?s$*8k<>U{IGu)* z1ol`h(nZ5kbGc<wZ$^QtKnf~e2d2vTc7Bg(i)xa3)G~<;o(p@^S&Mt|5H7DvW=qBO zU7l8bVD-WSd88c*LE=C}GiP<3Y&!@(@3F4jFteJ5J6Ej}_IxkGS0VGOuto|&ndceO zR#w~&6nA31Jk=E$v)O{9$#Mn8Vxt>ZN1Ig&bD>6J`6&y!kFb`Y(sb2pQi+IfpUe68 zWqVSjli^@VY!26i`x2>g`XWd`tfvUj9^57{GCJGPJ)F<ARru*4OKJ@@|Er$fF^c0Q zw`T;IH0q-_ap^axlQm)O9Y64;2bNeM${gkrX4{;uFzh%G18|yR%-{=6O+%MjFj_4q z3`emJ#KVIvNb<ntk_PJU{Mgu^4NxA;kKO?+W1^@;?W=gC@)ag(HIpqbPvd#z`7XZ{ zcN0g0ZD6Wslm_DZ#!pt)yQ3(DVLwH%m(hl~JvMIiTzFNT7<~%ip5LiP)3=6uy*kJ1 z!OJ;l*WMg<eJxv*ub7Ki;$tj$6_&y-?pAM4+;Qe>g&lbXSE3PMtW))UxA0P<2$nQ} z02R3-&q#;U@f?#SUtZ!M<C~rwrQ!mEWCK+k9Rd--K-E`LlWCG35NhiB8ONqlO*Jgl zb14b6T36D=n=7rpxW@vqFx!|f>;%@DLB3(0;0h)VE>2`!?JIo7C{|ifKDXD~Xtj<0 zDqSO-sm&p*_wafg?v2+_C9ZLif^uqg?oIVdp|?ptC^!2HE>>?yGOQi9#Wnx0YC=ND z5YVNVV~;!IhMa8zru}3g##}Ck#Kk*Um)!RD)FMEwlpkPR6Nt3}gPYThj5=`a=Z2U< z)(SML&tmgGT$X#5dLSU^a`pC<>g}X<r{$Lh@DI4;JIiSsi%4h5#L}uwA(?skC94CG z1m70P{A5tiDSvaAI$eDBO_QPb>Zf47R)t@m&FKKg>8V+IOcmd8HFvkQtG_k-+rhPt zP$?jR2U}$X{}WX4eRtnx7ygFlN?CJSZEk`>-UPg%!Y=k=x(K>cK=X2HikcTZYPsZY z$J>{}QUP$X2gk5YRyRQ(M^#!L)tsGbEFib9tqMT?)rU)2jUhH)22DyoZg0>V5Sf<@ zEp4}$FMi_9ktx_)`pKJ{*`=boJa5oQw%kuM|GO&UKlQJES958TY8{&LOKE}r@xwm- ziq$U;_Gn(PJ5){p-7=C)Trw*eJPs2Y3${XA<f>E@ps8MLa?rwXUOVzQls&}du(b<C zJ8RKlNWu-0-TbO=^rCx0qrwVbrV!0vcsSKDqgZ4j&0Z>@t`*ezQKS}b28=;xw@Ku8 znpkt>2<-+tS8mGIE$rS_rbJG0)VI3sy;ehP{SN)}s(FDEv7W}hN?A`=m!F^#JoATK zVks+d?+%~){Vq}g!7}>~&h9XRFcXEmA1I|hu`pg-g$4ncN?l-#l1kwV_r$P|6(Sdt z<z=@XkvnfZT5kf*J`XTM64btgN@)#5CR2E|(Bu$yXg!1Jc-OwN8aA^$XJ0ke!6zzx z{ef<Sb&&gm(!L6jUk$Xx3Gz5Qb>;gapv=whCi}O#Z^WMbe#{IzmrW(sPJ#_^-_lgd zzrKyWLDs5;_m7zQfB5?9fGEFiYe5u{?(RlX8ioexZjc6P>23rD1O}v~yHirSQ@TOA zySu)J-`nrK_xp2T=FBrE_E~%Hwf27QMGMFXck5xv&qA)Y8PVJP9`4q9|HLh8D)Tld z1<pcnS2;f~S{|aBrKyzG#b_SDyAeb-De_gjY(Pb0(06j%_hMs??b5z?>5<U3CIkJ4 z?ZYKb@AXh2jB(d9{|VLB2lRL*rIf3uCs?4a1Z4p^wd1G<4VE#k-Z+c3M8UVHk`QlU zs%T?A>K49sy{@DnRkH)ng(H5Dl7ZrZ#sPwntJoZXK%HW+MJ9btc33@q%`_U>)Ss)p z2vO7TJYDt<c+O01t#Q{ltYS`9iDK@482xpme|#kM8@V2Syi+-cq)u8LOj@wlyV~k% zCcLe&9Pfk2D4bbo&pQ-i*4R^}<4L<UJUcmClcLv&(l{0X6>btWV;btmQjoZOju!pD zn(ch1iV~C{<n_HI;@OBG$a4s@$9*Hq%T=v!8^>(5C3_L|rvHqI%6Sv<U@GDc5l`5e zU;7M3i@D%aVYF(!0o0<4F~VZ={C7_sW~!^F#}QrRudAY!b1|o{J+Jn_@w8D~C^bjp zqTQ<9FkUeqkyN^;OO;aJLhy^vT1}6QLxz%gu<5d>JBpY3Qc>~A^^gAif#^-vS()Lp zdoZY#Ela{L+iLz^te8wjr-b_^Sh6{@q&sKqHd`NB?f49}dHSiviB7j<rl!?~Q`2m6 zeXDdqb#W;5L!L~&*q=}eu+REsNt`XjRhFIGv7MYlc&_z8cfPSIfvK#t@($;{wE{vs zQ+|AE!zrZ&hiD3-?cGBVh}BRkt-1o9QLiR=U6dyGX|ZuMm~ml801Pt*>gXKDPKo4Z z?v|zS1G<<ErFH9_kN_Z2@^sC|(?)|y12T}nBzL^js=>!y?L6q~lG7^hiwE!Na-qD- zy1NMUn=@ZXnko{7eP8zz{9K+~r<l%^s)n!f^l<TGC^kG=;$@W#kYGlwQf8SRVyyeb z+@|fSb0Pn6BBq7flBhe_X3oXTAummVEe^8st4*AeMk%@Iki-@eS#4q~tdybjKeQ)n z=(k<!{Ys+w<ykJa;fKSFh+GG*tH6HdzG*@0#ntO+7w4G72}sh-%2<7DKY#O#SZ-uv z)c9<Tpl)WvcZEPkG!ntejqE5k+bvi=I>~cxF&0iYfWfQRRR8wcwB%{UGPzCN-Ikz; z;-=#@p^aZJyU`B$q=ck3QXHC>?x26mWUKRsfm9Bc6S=dw065U)dG@gP{a659O#k$B zeA?;uDcfhorIcUXDdEZe99Rm*F=J96|9SbW2*T9A*Y?PM78O?)L-$Xw(7)`xcn7+^ z&M)S&9q;T_nCvXsrIL~-LuG|Qy=GJUwh@~Q=C<k_rTDC%{L&c}P3~0(;TqoYwYwZv z3Zmy^a2;}pj5YEEPWaaZ9A&TRC>Y}naD9J!!dIN!HCij@;QIakwBPNexsAzZDLr?< zziSv_m`(pkpds*5A`JP64p^Btv%2)`p_IY#vHJ9sJY({GnI+vUEVc1-E76j)t~n%Y zUI%sE(gxT|1~QoOgOV0FuQT-X<S3k&NaO1rStT4wm3cnJVUBTsx}mK4r>V=JAPuNQ z4r0)J3*}_+kn@zNP6F2h1`y2N=3pqU8NNvW<yW|sPmA^|uJoO!JmTC>!lR~KBBTLu z^=firj?;Hazl=`jjM)QR(4o3TP$8y57aZGVq(@At{EI2#!9@&?2RJc%co=!2YH0GY z%nD^B9j{ii6KqdunCmDrOOtZKOrYT${S$cPI#d#4@?xogUZ34)EHic=09<AdR;M@d zhXEo+Z-_AqqsdQVLYI1I<kP9a&~L;7W6t~N;e@yayiduoT<t2p-APkrb3p+gd$>{1 z-I7SZ0jrH*OGVJcmcBf$tlnL?(Fsby(U3ShgtSXtsRZj%N9&D3Va`A2;spU>lKDkp zuGQd)BY$Q$e><#}Qe_0308K$CIOk`92g#+@TOD8HoHyzcueOPX1<}Gwk4AqqcaY;J z6BT080?+=>!BDZ_NP{zh9?aCx4#V0LW6=%opw?kNI?2l?d}*O@^CDOEOGFJZhvpu! zYgujTyajrpQsz~ry#9~#_O}-XQEg_;v!Zu{k`FO@2RM(WU*Ggg7n3Vi%Iki;T&%Om zZom9F{s3dW-kZ_yt%5G1=7xMl6{+ol#tGPED`qNf0w`GzFm6wfL$}&?YR#1X9sw)R zH5Y<g_Sath&u?tAgcl;67BjNZx-a2)CsKLU!D*wlz;rw<M_MmL7#(H3SX%usPa)<v z5>!|1qTz>r`H65X#`}mnmP(gFI%Tw{h<dQfYkn*{_=MKyi9G7d^1aY@c}upSd~05g z3#a8cUw(jnHY|*VX#re_IU&7lwB-M|A5bshcM!VLHMN9NHo|=Ma)D-;MVkrbdhg+C z;n!4(F#G9bdJt7vY`@eHQhY>AwPQ%@opvt6MGq9MVydsO)-A0~n-}Tp+}|s`b~<<< z(Ei2fcXa1N`JCX7-q7KJoZUScYdd9PW+jR@-j(yfv!?hw-B0T}J&Ua(SQxU23iP*i zfCNp7!NK{{io6o6s394>8&t}1A4mMBfgt^c?q`6QsTtZGNj%ZgDY3hC=-XE)NmiuZ z!eA<y9E?sS+h<P~0u8M<x_IB>bUW{y)aXQIIuad9AI~IJsGMgo(u=!C)lqqwLTh+? zNZ)Epaa=Dli($`vb~Bh3B;-Uvnq}|Aw>JI)h{;p@uCfXE#`Pg5M1#oxw#N*}q2Rhv zBLKi8Nh6<{In;Qqa#$4CSDXvmJsPH4f|WkYgtn?is=#Eax)A3=#4Q%H?XGf2k5%9{ zMvlq$S$5MI5lZW~2avUoN*~s55WBiP*Rjq`DAmf|n{Ki<&UO~#t?rCoFsg?7sr0f) zsQoY-1fXaXzXQF0Uo%ombhqm#{$`KMfsG!1@2hZPeh(7|pMF{x5gDO#rk7UIhkQ<f zkaPiw*A31&dsqYbn1CHbP{OnL4(qP;c3^w}DNPR$zd=2oV9tMlF@+oaZh;!c{HaAY z$<4ZeX*QUh9G4)AV*jt7o=HKP)|0tTS@^eC)ER;%3cfs(Z!{%4(6T?OKwS+N=;YT1 zP4+bu+3#Q3bQBxio=vOSzb`-Z*4MY3X%DNlSu)vV3~kyg*K3TooGuWqt*!m80snrv zYNY>p>^G0&PG6<*1yFu$Ad&2KjrEbR-r;;v{Nm%azVvqxPj`fs*UumQ6L}K=&^5o? zkW!ZyE3)l}smAR&VG$T6?!hV7%hw~Cr)6HNnC4TtbD}@K(K_FGYW9q!^Va@Z*)FCl zTnXva);qaK7bNrgm_a|mnaOA>neMNgD~$*G;RSgMLk%I6YKBEo@36OvG?rueh|l`B zjmMG-v^h>5mUnmu1^fXKeH2A1v(=iV@=f{0`FVE2>Pb}9O5S5s(c|N_;KsV+8TbH! z&wrHWBW7O~Y@jjg1pL8*uU{JfIa{+I%Ld4&1N`)~ozAjR@sI<kWpY2tC4V=r%yPOt zz-w?k2R!<8iMaRblWHxc8oi1&jr!$jz#WUKE1-o6y+xhT%@S;IaKA!kv*_qI&+g17 z#WKAY9EEk5+&F;+2_j79`>32ND_*FQuT;)%F&<r5K50>p2q{cS8kCG?#|!HfOL%^W zkxvyUJp@W>3uPFzc+rEzCB@q(a4i_xN#DU<b7Qy9qC>(bg@I#OAOiFlFL0pDCHlKX zRC=kOE%Vy<=vj2nX}w2ozTV;-WiH`>at}kZ3)-wF9M4BmG@(>e7=;*gLw0}noev%n zF-N<s3{%j@>l@a4?9IVs@K4jBETit}5}kDUr(;YG2iuS0GTaks-uF8|VpBC!n#1Gf zBvU(`Nrtn*ZTADCUTw-2qh>*|hvUe!)1O|jcD04f-1$Z}P{eZ_;N&|kR93WkvQ8D~ zCOB*|OCootP6=pNe>s=Kza@oXhvpqi6qO?6_7DLkuFlR4$#k+z`v=o<eQw~o+v&Q} z0}MPZRHOmRrKweN6#7~mE!rHFysT6VRdy_cWUKG9KZJ;nc!^%d=RH*hGhvv4buO$@ z5#!5ci4K@6Ba{f$m#BpmRYtd$=;LL=&|+E{zsGplqNh_gG6~PO`Re10d#}|saR*1+ zA^}17yI5YAU1@PGA=)1D?$K2Wx4sJ<-FZOnGOl0uMd@`Nbu2h2SfgBjzt)h9lvF6r z`DB#D@-ZMNtN<H<gi89CVm9@W(^JQr8lSEm)@sA`j}EreDerhNv!&IFCzP6DdE78L zZI+@_Qe>1iEji53CN1dGuV6dO0A3KSZzj2Fku{GlgF*-mzz4|a5GN}17}9pS`>n+o z)_x7pY?M2Dj+U);8jm#a*<4bzVIzxt1W{C-?Of<&(rgy?n~KmxtG#>WzhTwxdY)u? z`w|MsE_z%jJ3l<GWZGV3J{vATh}aG6qQImeeV~P5mDeUcy+-9v%Y~K9&fQC#;aLbT zgI+`UrvWv^L$OCv%J%S@?Ym2Yy?Xt6yYEH6rgQYX?{_si$rA`Tzho89@DsOu%Bn_4 zH6W9%`r`HF*pv*Z)?yGFd!i_+`RnVc5|xDR+GmS?b3V2-Hd}$AG`@t9!f5s{9b$`| zHmft21O+x=WCr>sjkMImxy~x<pl_;W%BJ}Jy%=wwN*CUoGOMKB;yC6!y>2;^z(0Up zP}GQZy**3UEIsItp_weS(x6}4$=TyE)gE<!{2tV)-xI0fPMCVzK)@;z8muiKdfa?_ zbGTG>oh%nutTv;Iz`dQse!k*Zz%W&ymOO2HBbVT^zBT0Kqec#!zc%?zTpTWnrMf&d z0f)@Cn_jKZhk{F&SQMe2gtYn{Vz|$`RYOpIeuHbhCwu<u*5|UpJe%IT4)L&44z*MW z(KG!LuGL6lrSY#)&l_z*p()Gh9LMdE{ehaTH-RZano07yjcmQGtrqX7-|Fl&M*&U6 zMG>}s=kfE^s?2>bo!l_qz7d!&GdA1IeCU1hj(x8o-|@J^ny#O;*yx%*Z+C+w(L#)T zv>-b4Cs}d(3;)i+FGqU#fwo_~wpX&eo@X#TJlMwVyv&Tc7iw<P1JSNz89}*1G~nax zUZ?$ZKGhm8yefZTt?N0@xshicg%BLkpje@Tcb{OXTkA2Xfo8vZ_}_4tiK%20qoOIL zq?=yzI!l8fL-r@AuW^?er%jUV!aZap-&yfGC~E*FmLb(Iq$l1dFvkb5JDNmLk5QO+ zgIixDhY5K!n|KPo1##De1?3I;>XE^9Rfsa2d>)LKV{|>5j{qmlkCh$j?9Ol$?*gr@ zouKK_Z|(##^t|ts6Xf-rZaa9S+m`H;goUomccnOr)Qs&rgT5>^Nm=<k#tmwT_ac*I zjWGmn_ND1kT^suwUofv1c-Appv|{uYn1*e^*b|`SRbbL77kCr$T=13Z{YoL-uw08B z>5mEI9(eS)&O6V4mLQleGepUXy*S&HIWr%N=B>7p$oGQ8Xn?PzO_bjRpTI&J+8uYl zf*|Z&Kl~b~yqdYZ*gdD|ULSpGo-CH&`e}+nt2uMTPX|;hbGo^HtTtJN#uv2z389;x zse69q;6VS;Ofw29GV0*6c;@0@m#qem48yMEX~VF3r8af_P_NZK74_|_;KTc?V~vi- zt!2*9J7=rOD<p!iYiIaY3d1Qp=A(X3suc!M^S^A~%i)tyh8G7gUW`x?&+pxLH#+r} z>F#+gR5~UUF;dIVSGh7{F{y^w$%o^gBOt9O2Ib4AWN?=9YkjiK9}IJJ99!#_CR}W{ zIbLX-;bL5Bu;F98xXQC{eaI3EmWs(&1gZ`1kRmwfBvyIG^w2l=JY&12SkJdT-2Q2F zdE^bt)n6y)OQ0RzK6uA_)l23;yCwwe>zTu1$GRhW&ckUrf?f8oWuWN0%EFdCe#l@l zS4ln*gOC0%2Q~M&y$|@Bey<+yhU!u|pMO>m_pMjhr=k#k2<(Z#6O}+F&Jq9QQy5L9 zMwdU5l3BUlGjZ^PZD%L*Yb=%H=OhlZviabv%=5Q;&9jgzJho4KJDUFd=bm|i>sP-Q zw|CGiyJxDY0nLPjqnYe=neNVpealv|ujdef)rjBIV;l?bQ37kV<38Xj*_L17VLkm$ z;tV>tO>%Of6J=be&PKpt-c5>QmqMSe^C9OW?ugu+We8}uOJ~?q4D`6(DQk+Zxoim6 z$KIPMl}T;lRlIZBEiioaFwxI=71kphaNi@RQy`uD&61!gWf7l!)CNHh;#G?by~7<s zJK>IZe(Cf5SV3O=U6AE?<LESO%zEZ;0^i5dBf4}ng$~(ZD>!H;2J9&NG8$=<UZOwD zPN}A!=OZwU{rqy}nP4k5VT@nH%BsV^;F%6#A?gkUSWrJbaIK++$U>Wb`V=d{uxFR@ zrsfZiBfSzfagyAhKRYL5*^}|&wVv0<@7vAqV*6uLzz%CuEjBt=gw}GMJnGcMO$KUn z$rz@4ItD8eXC{&2Gka47za*kivH4sGv5qm9qNd!vA%wy}H|~*KRl2L#_jv-Grb@^i zQ|TIIw6<I!W8JAKu{W2YZ&*C<1Dq~)SO=1*5K4_BM*-xZ7&j27x&+W53tbTx<&&8h z!$PiLpav?<l{US>QHbr=rBkb($EYDAY5e(Jm|*fCwZ$k{5o(a01R_CJQ!&||!98%5 zJ0F6t)A>f`iPSqgFA4c9{!t5nM{HyRbc<EuF;!Ik+;*&5oL77oet4)|_c^k#Yj0|D zG1cW~#yf?Mg3mx-7e&#~{h8uHn?FNFwzl{nrvhFQGM~@G(OUNSd_K@>C5ma%=R9wU zhn5Q7Yn0~69ejrjzn%qZKWnm+WQe>fz<PkiU}`UR*$dyT4h~X=bF6@=g^z`0GaCB5 z6579#nTK~%H?_Wu_~3e+m8XBR0A#_Ujg&vYd7fi4D5l$cw^vPX&nig+t+2Ec!pm7_ zlWO)0xO#KM=T0`>>z5G<_w`hAbsPN@f+jnylS?jeE{-Q8Vc)?Q*4pta)Xx2BS=`zx zs8*~U#Ot&t+Zl|g-YC*cc92y?SEBwihfSCrthQF)<bD5K!khNN^moDZ>W%pfDDXz> z;I>rvoL-pyA;#~RHCqBvW9B$~&apuG62Cf%Kg_COnnhZ)kpx#JHthKFF8+JuS8QM6 z?XGy61*c@@PYse-0|^t}@oxsn{e}xYBJju7dn1w55s6A$?Qg!DNX^Ae{|>%KKfvJ4 z(PVFN97(WLFEih2M%@G&>2V&-mhwsno<6?sNqDqu<?m<|{c~*W@XLN~9~WcYFk0&H zTGVYY{z2?+80BuTgZd2aQ}bmSB-K|m;Y(9?V+%?DvuVb+V<LBsZ^WKkI!JSK^NK)R zna&r&y<trf>0lN?#E;Kh8b1Bvn@@xF@tJ{hz=6@1&dl7r6}oq{)GWg{CsPF-W(D|< z8CVQOQ>D7esAX+Gz+Ih<XhzsgE*$T>j2J~oK<oWS)nKKBap8`X__xQ7Tf-We^t`SY z<E0-<CQQScEqY3{4%9&LAf1{FPLLB3v0#PQCuVQp!vw+MMj`BhP4F=^6TK)TaVudB zakRvgA8(hgr{D|jZjT>5Bl*F^bdjbu-tyQ*Bp?r5>M_mb&O(>cBxw`E57zZbLCt2@ zU!)Q56Rv|`=b*j@1ajK=+Ag(>VfW`cSu8qeVv{O<9!ye8cvDGq$uDigGo0;12-N=1 z<&Ner7X^w71jhC#&#Zsq>maw<Ri=VprK7huYmeQXm?bzTceNwT{y+!~{T5BIzAt$A zHC#;+maD_VN0uIsz(-sb^C<M-n7vR&3e7~lCMUYya2siNhwZ#40MLs~t~{(#@j5u6 z`hI#3q|`TfNhsV-vd&+Vv;0mF6<oO+2O@4~gCvuV@L)o%=B;8g+dWm`j-Nga$Bg?V z`_9E0V+Zc%1&H8TznedeW+>9XEBRL=9{f6$gaXGIB(AJ^kMG0?U#nuY)Es7dGh6HL zB<GygKWdv}S+_MyE?1Dq$_802MeWx0j$Rd1BX7@H3)G!g*l{KpW55cgf34$SRJge0 zmuags6#d|O#Pa92-a<%R3a6a*l>Z0A0|2ZH-bqsXA^VAY@r!a#H{I9JlX<<aeRE7X zTARF1)KN)|FSy#z%yvTQxWyT}+e@T{OLw}fLh70|x5HaJRKrX~$j0nsX)G3{*@e#C zOF`3>&1Hl~K)<-%p`+dS-Y@MIHabky%W^L%<Y!KpIFQslX<kx9)-sca#-%-d5GP%1 zx%MB{_m(im;m-x4I2-C5XgpZqR>QhdS|V*(Kp@9j2`oxa@nX2)_@P3QbG5uWD;xuP zcKSt=R)xb7Yr&C(N~`ZkzX%t2-Ryiv58;R$6x1r|-jIdU%G8oge)geaw^mFSA6MR( z`c?d{FvFb_yDvR*t7?W&M2$4<^G}ohLMYFOjt9+<X)ZUyTATGkBU*~BGjzzd*4<## zU60(?riAYTT4yFsm-8HtC6;(buISj^(`DMX={97gLJO$l!pltd=5SqTQzafXMS(a* zn65jMLB?TUjK}zMJ?zrE$s@PWN^)nGRu3({b+5r{8()3nd!=aBWf{1NOSS>Sz<#I% zU%G(;n%^GMZ!@I5Dzro6PAGO@u<9D%??~Hzyt`0m>`!BS55A~BlPg9I5I?u<eoOFr zn{oQsV70_5l9>IwsIvK{KV#DYzfP^{S|trL$rF0|4DK@z!=FD7`^?Djr;X@*s2X@N z-`iKz!uR)izykhm#kO>FG8Hz-(}rgZ5Ul$JM;!aMOXKi$521QUS?XL^qHzp`SFaed zRKVpN58+UVq3C6CM*P?>lRft^XrrDFK1Tw^l~T)PD@kVM9<$f;+3C#m%s9XG{rG<8 z0n6<uz!H@%G-PeR-lG)oM4A>@Md^9bsiOA#C%nN0Qr9Xr2$;AE<OTBaSo7aTOfXh| z%+RUsc<(ws-OF_m<(2<hM>2E}IOTcf`5XnV`ZX{!;BRM*F%i6QCagnsOpPuiyRP@g zo%s8?L!xGld9uyk2SHxfLq_+>pV{x^^+o%{bx6OD+QFTphMqd~5hQ^2=f-@}XV}e3 zNr(h-5*oNr@Taih)natt`NL6>dMl%S(|Csi4S;bm2B;8Qz*WqYCH#tGNW%h!0dh4P zPAf*>@VA5Q=Fa(gy$0NnT`ZSa?=_T>kQp=GVZo|0h^K)<VD3CU2IY1YxV1!1VI3EU zX-QN3t)U7VV(ZKr<}sh0P%e0zj98v*zFh?)SgIV74u`&Uf+xD~3TXYLmJLo!#Jm>H zHV5cO#)1Aq1&_uAf$Wo1l!K}7alBVxRZB}2e4mFz?v!*LWKrK9)8iU-h#>l&Z!vo2 z<>f;^R0KxhhvXuPhMQOOWFdKx=41`|_>92YC)5~jE?c1(X)HhN#}D6QIg7iY+l+G~ zdh4~U74Ja$A6a;`P4I^OaT!|5bz0Mc?k$V(xt~0F%Fas{>bM`ie$@uwbi!&Dh|{9u zifE*)YB(b|8~nB-T4_q}A=Bb?poO(r<79+<5ObTs=ZH1WcSn5xMCc&09@#*a0)yDW zzK58Jvi%foI_TUe5%M<BOS7U+hwB$5H6)O1vTfXSFqVr$Ks5H2*fr3@PeNc=!HJyo zAn-Hyc8%e|&Z~|c=nz(x1B4i6%NS*H#<Ca^!-ZPk=B?{}-SgSH$}0oUtCG2vQ%H|< z`C@SeQ4Epg(nNi^!B0UMF1N&V9#8efb486mzIh{QL#d|24MjMN%7J{u@;d^_R#2yV zXxYTXS14|QZ{xce(uFvPIao~BW<o)g;m&9l_1mkL@a4?QU`#ZRBL(5oHh~JkCk(P7 zWmCugdC$NDN_?zuikLlmV{qa*oR^#X3X_fx6waw0k+Kv4_Bq56&qsvN0uY3wY;JjO zJtGm)A~cpGUi2yL_lIbIZ8BD9CQwtWMETOP8xA?OT^(_=`R@X>hUwvSzGPn4-H%j* zv8Jq7NIX2eKV8=}7q5;P4aTY9qKw@--gj{kbGwD0kCRpin*(l-qJ|jY{}zZBPg|}r zb*U5adBozAM`#T<I`7INEhf?0^V!T-Z%nnMGLcZvH@Y11PL<90HLph(qhb^I=oV8u zX>;2$U9Q*HbV@*!jaZG4j^`><jegS9kbUh{V!mqnay%t<$QLY!cxJv=mMnyHnuyl( zdX3y@jXbRio5cMp++sjyp}jEh%<dx`ye&2cS}!L#(kc?M<L@o>+(FuQ!phkFslsfR z+vY1$YIdXHhS>5p*2FN>H4SFHpW!sH-}1$tWAf$4P_Lwewz&iES1CRg-n8HKGLkQR zF0gj1IG%3??`x>q^q?N#fI`uDxmg$p)T29#olK6MP_7VbSDjHYd(SBCc1qwPgf&xH zZRl&x_aql?pxn-?Ei8?Ahmr}F66agmNLZ^_?eVU%N0v(sMXx>{i*3#k;0K&!KnXg6 z4jhZ#adTGXDdc}4Y;=3$+1dLIOD717*JpaYGc6ZXL#tDXp1XydD8aB~oFy@$&L~<U zQ1)6jNfU@RQ5hJIvoV(R!(xBesk0iHX_JT(Bm=YK@p#p1GwIhdIPcDWPvW%AG~y6k zCz}UAV*VWA3~)qeyksEXA^mrDL(d=RcanO2B5Gh47L(amar+-FI&BGfK1u2aXsofM z{VuSc`#?W^8*4G4239Uh<Bv1DLq}!~IN^)8-Z6Ku9g~h|Xxl*v*A}uqBGzr(DOzl? zA;53D9(xmpt)egBT4bLe%7bXAezLbz9NEx%D{!)jhFNHSyC&WMFEdn0Lf82KlXO;- z5i!|*hEm0xW$*O_=?Sb1y}h4G3GUxrJ9TBGP7nG-h!)KnXcXA&-&^gXz-2~|!$5|r z1rz++OXRkyS4pq*yBh3VxjpoW(9s+@o%{2a0=Hhwy$=$sIVj&63wm03h2|+bBINkX zzIpSc@=F3lVda;vpBAy7p7-fim5aeibYNdDNnZOTXFCRtNJUHC2bcqqtE<VZU*NNN zxs=%>!AgWxs9T`G29|W^Xv=EE#z-$xT2?z!0A>?ES~^Gd+waUd7qlbt%wk}l9|mtm z6yYKbu)hb_PnOl}kKeN8$GYx%Vy}~N;(ahaY-eqM&DLcn8y*w|quHa;3=l)|8ECU~ z4J_ot`t&h_I|LJzT`T<RnxA-}o&eclu48`0Ijm<_9&#wb&H8)*O;yWkif@kyd6S^% zdvl@s;CdTceo)jZS;YQGl<-53m^GOVS8VU3GruN`#!Qn$-wbGgbDG%M=ZvRNj`Sv0 z%VLoGsP;GE_6P2kzyd4=L`n0#FMEYg3s*!N?Wv4;vyLsT8ODs=3H{7p6Z~BS*G8$g zlByA|BOZdjjSl3>)SpxJ>5$wLc2zFe3nsHOT@VGe@6)H3g4-O@RBQDj_LfUoTCD6z z+y}RV1(z45Z5E}Ri_|iq-5tESY&Fq8H915~+b#;neM-4~`XRYUVXu#{D}W#Wv!)s~ z%pM}>eU@l_bKfwVFf3`)*rY@4Z#MFp)?#h+IV~()o$}_4->Pgow4xe{j4l@TJwmk6 zw6MY1xEbbGUpvWycl+FW%7de5s0!<&_R*>@VRe66;kFcV^rpG+A7o=VyJSy+lp#iZ zF!NDodk9T#k|oNWSXwQWKyQLE<zw*%=exCxFPjN(9?t@7Ul$*rYIl(ds_)7<<i)XO z=nLwa!`tYZFOy+frd0%=;aWvLv5uLAgB@);L}LqEt<6c|>xVHjM-}<nI&ejeA0jq8 zTP|+*j|sM$p2T9|S`AK`c9#`!&?$W2^e$*;W^eru$-38jIC0BTi^x9l$y}7BW=v*2 z6O22D0SqdM)O12U2{t*F9<#@FWXN55%|-lO8425xBGK3vNBADv=eY?pm{o2Gh%NuA z?b1WohtGWm1@C^!!=V<}?Rj#U{-lKQpE<}now5QcB`_k;vBE9JZXFg;Vrjp=W)E53 zsUJ*dPA60&Gq{9d*(EZ<rMU1<yhPnO`W_2{y+?<n%R<cfdk-b1FOc};yG>y+9^N8` z89rhDZpOf)&ayXAOz{3IVG}4+58tL@@qDDa%0vTtQ@zFV+AS2`zXDar?VT|heTQ;9 zorV43LD+^>Z>)z5@j47@a`O*Q42M#cNa+(8OJ=>66&Ct!HJbkL!k7rN_|h@RD`L&l z01ZN3t17brNu4XAtR82pBIm7F(9BZl6J~`@W8{`3dt^M}C<A0uuhZ^M;-C76sLJ(Q z*G7dw4j~d`78qB-u?o`&P*$WBKrT1wf++yD!5gRhmrTMGOuYEPSL)ACUxLlkUiBix zV6EMRniCEw1RD&s_F?=Sxza1?5HdVFwAT7CL5bY^w$Xkc+jNUZStN;_XxX*2!6|p> zef+Z-dp133z%!8PZTHJ{dr4ynIgzuNjFNr>ux#e-Sm9${EeBGs>r#zza^W16J~zDI z^YCHEGG@5w+W`*ScXc5HY?iZ%SU#J+`SRx`86>KNrd<d)7|_9Rv}1|<H)FsWXemp_ ze84;8wF@cIptYiPPn^jtF(J&OC-cOoASM?x3G8ZnU4b6e`H9@jPcwWb;U!ZSY!H5l z9^ZkP5#2lfm!A%}K-yh70EX08bPU%FGY{u^!_q2Jgh@w!SYhPQw5js|-^&W*h`+0& z%vGAAB~}`c)vSkZhGEm^w7f>6SFEyd+#cHzey!G<Un~Diw4AUoQ^NV^snW`V5iicp z36*5>7o>oL>VyeLQs7Dvoep>vyl70$S=mQM`XIN>G}E+uKu%Ay_9cN?gEQ+}f<rbc z6cv7z6``1MU~}b2Y7FP$yy&gNW`^wUL{M?=^Mhw3r=wQ)*{0#xE`Ren*)QDid;ja8 z$0Tz6b0^n5!+RBj(HwwJ+^j}MhfXEk7c=D(u})O>P3H4U9`_|I!Gs)4;{n+y(t0@J zvR*6$ajV3Ig2r&8>>lh0#o23bRJOossE&gsPw4cB%f9`sfu_mqR-CELcK%IndVoA7 znadsB`S6*I!}j1KhS_iyh{thMF^#stKDo9UXm+Ny4Dr5GluPUK?%(6E#Ei7s9GI*& zd|iWdI<w8FmDQ9m78>x&=G!?4XOYi|<yR>{q6nA&@VArlFCGOcOiAP`V(rz_uu;q; z^Avj1cMg5&;4Nl-ac|yQE_ZT6Q1!6Z&j97wxt|6PkhDq(Eb5|8%FIO23}(9~#ltN| zQ}}B&p4x-<6lPmJ2of=mJ#h_he<LajjlT@nl9I|yg&gXv>#U^ZKuqoY_DFHlEkU)l zC_kS|#yC}q>eQbF_pt+bW3}zkdJDGQzR(yi{+^uA4D1|MnCx@=<;k_m<SluSo0ObK zU&1`K^KGw*l3s;0<@8Jn^U1cS*g%@^#2gmybQ>JhbZ0I<Srs@a_T-PG@2q?`zSyp@ zie+^CjL%a6)HTMyOm<%jpR0}>gbZB=e4t7#)W|OvnO;+~GC%AY`h#}y4JZsG``F-2 z-Q`QfZ$VEa=q??hi91?F0I=8|<eIBd7F>>Vsfwr1U}i$im)1<#4Z9SjJ21A9Z%qkx zf4O|!K9>~va=E9Nx~HZV|9-}Hw8QlM?$P5tNSn-j{2&i$Ur8JX=c~=c6-JWl{U3Yt z&04=v$~gA1K%q<NxSKn?kBhw3`69RH``U}eDiQ!~n0Cmtk{d0or{eug`9u;@>sVs@ zSJl~fC7x}p5gd)b9pB{0e~<pGkdje$eZ}vgT=NZUl5(5x>QD`X<$8ZQ4i(+_cWmJ* zdU&M*S_H@08PiMb;6DhMA=EIWOO{#oglUPeF|F7Jw(CFv>+!(3^MX{cXCgmj)ev!v zNA4_VL$f|3sR?~ag_a<T^$Lf0j5~=C-{LbnwcX4$g{c%yt)eY1-brhfS)94oRfjkg z<)hC{2ztbG^Ko&YrtENo(<QIR^$}6&Wts%4KWrqiMEAP|l`_J)-R|N9cH7+#mg{4& zZ?AW6<-DeVjA+&Mx)8tt7T%r6GeqgFi3K{&+?n<Xoq0Z`=r#LfLvRO9^eU66BZ=j2 z&o}b45SlHnvZz28Pi8gE*1OS@dG0DqeAqRIOJQY;^@Ug7KWJ71clca(Na+)~P}<*P zyhX#i&U>NVN4b3c7@jVctihzV5b$hYsvHXWxuRPcj-W=XqHXikl`0#tH<^_cgn-ro z#eTgfQllBw;|+Idxw({x>S4Tk7I$$nW?ZCOY8hgK&?0D@ZVw#l?m)kfZB>PQ01xFy za0EelM?P?y{}41A<Mcg;NJRh%BRQ>Ge1!fz2MIZ#k;mj`u*j9u-XESKpnXhgquckr zUvK3w(_fhL+sNNf@WFf77%y(pzcG$UxuM*|zrjOUk)y^tVy`jk^}QYuglnvYM~@Qq zZ;E9Scfe<}!9JYzRqRH6B7WV4_fdO8STEN9ry}*hG$>r0<%w8oj(8FNrWG-#3%>Je zQ6;?Db|j^>VD!=c0j9=$?PKq=tG4&YPeu}8(&ImZ5F(9*Xd1bq;O5TkYk*VFyJ4Z6 zo7Hm=5oV>{sE&r6N8<UR6A)hi3X~3mZ+zjnppXcvFEyb?b9}91Yw}+|uR(#j+xSs6 zPYv0&9HGEHaC7>Kgz)EfhkXXgrK=a*{fGX*|Azv6!~E!D_5s=<z=Qv0nD*Y2lY@S3 zTJU*i;C@LY99K|DibmpF=c?-gI&~H%A^OVJVXIoLBM!3?F>?3o!Q}Te2vZ{fRk^kh zCiCX&I(VIy8s-ANo||vtu6s$f#mQoi-=qNlFuPUP_ZOW0`yPh6B`>Vg^==KlTgl@M z#aQ(+eSk&jE)%aDceWXUg;8X)X7N9$Q=|=OlHF@Fj=sK^Q3Q+gOoufB(A*mK!@=F8 zh;+8b*r97@Fv|W67b35i5@~31W#bd&tFFh7mQj@Ku~W~shsE(U2}KYMe_P|6ti3@w zyvmgUsa|#MR>gusiPRjJJ{GFv<phSJD|s=!XYz#a+4$Mr$;}`kKK{<X0?qGL7}?=T ziTF-vyd3_7%hjJ|01c!Xju@Nu8eOb*N;LGXQj)e<#xpB0B{jOy)mZIjs{ezUU++x= zwsjLG(y1FSwNh?PJNtZPzWjqe-g(uAQH=%-z0FFCEf8E`Sgway3O3+#K7vNpvDXdi zIq^P;+M6lK1lp21%Db~#-JT%Z%D^>t_Q;Qx2H)JTtWsnXCpL67**&+v#wuDHZua~n zsB?L{-b;$Iver##jz5#%Btxg&;?j(s|9wVt;bJh}l+55ARNz;KztQiziE!)aB&JK= zh6!&6u_9P_IwPx`E=-qhINnt^91#JVY^3KZ(}qnCgE6iN0qO<Z{AI#c_+Wh24ofIP z;Gx3E{m#c#2UGd^4!KYG)R^_<1C3S4q+3WtUInlYPko^J2Db18s39bZXzQBEKJVXx zqTGp$5(Iqi!hv{yaaY<a2-jUaxUQ2Fj^?MFQ0Q83Hu}}ACZ=>zpphG{C<}x{P@voB zJ1j~+IX-x|LUPSq_P@CP-!c!t5TfiruR|)i=tOBgoP3M}oA7_<`lo*|l`MyQejFhh zNTujoz<!U)NnX#xgSl#WY---t$6Eb)6_lp=9$9}x@Kj7UqCogCiQUnk3yGKwk{3># z`Lo6CR9U0T3S#=Sb;u|E1N6pbt|nR32$UH#K~2ZJ1qga}$2a?uejGjAm!FAEt6NfF z_8=2U;!VI#X)IvRy9Q=dj3h(`KmXA%Eu5p2B<uxq4*jucE6`UxxFRO(<TtA&Jss9u z5NXsW6eN^jC42Q3$N%(KO=7p}FN}3!*ZPiilD8<&o-Hj6hnBgazL1m?GB>h1i>>zM z)<1@W%bTklXc3(<if8{?BVm{u*M5Z({4hHPn!sFCMZvhvQ%}53bFz-qEnIuRMkuAJ z#gB6qf>B4|NH1Q4!tKk}Qjm&;xqA@Sm=F^X2Liz?YoR@xhFf&M9#D>#Cwkk2?tT;Z z(-V23_G~zz2G=C^!Abbzz?jOhOb=-M*oXw~wvX^8k{B@nArh5(4EGH=Om}pgRe>y> znVJtCG8L;)hY41aa3eD}mUD)U=T)>uaXf=jvr^2sFo@$bpdnBvBVK6-`P|9kkJsV! zviQis*Q>yh(c(`!sNIhZaPOT9dUTwAB?~#6ZA>S8howq>9?|-=7KO_*)x6a`nBe4R z%v3i#DQ5b9=(-GRpR<BnSKXZf_RRb3HL2`I-IsOjG*C$@db56uNA6XqJgsPa{QfuG z;UwMXeQZzU88wpC8ZWSMnN{tV32X;j#mIGB4W;|>X#%U{_$|+4ZXa%lk;p3;=o_zN zR=X(Vx4gD*ua8Pa8VyXpYI9g@1ct@}6@ru49dejb=@1Itjb@ioNYrCi+I2_*oLb9t zoiO%(C~qnJ$z~XF$%~2s0k?|g8>rtasflJ|Naf9IX%2s<!2N{~#MGeEH4%HV$%1Wt zH^6crJEQTEYX<D~H@1aBOTi~tEJFl%7=OAyui`R?^q!ywt{|dmpPN96e&^`s{awn1 z{A}wqVRiDD0<Vb~^kd(B?cS5}Y-y+5W0`+HsPr`)YlM#T(MN&==Dd<0Y=ydNRy)J1 zIMT`hXMWNQF3USOTv0Cqh@fTxS_Jk2S68YekMd7LGxztl9byKH63ABmCs@Zf#4AhF zVZ1dK;=a$037rNvCmbYU0$zwYE{sX`3{&KR7c*ZT#5HXHD9${~5dUDYm}KFgTN=`- zvsfvp98kGs^dw23KazAI+<Qwr2$#ybkzj90&KFqMpTNh3bT}g;H_c^!q1iATz!rGS z^#H0hEaak+%!mlRiKo39^Sv>bPGf+-+&d8GdTJ=8{`Iv!;sh5pS?3%kJ;X4){{fpp zw_R^eYVr{&leY(n=yxW)565h+?X}56%(bl-;;-wWsxPyU%u{94;u?%L*L_%@?l6LD zLAiF$PsTgptWzwzy8C5|=5r}?MUHPatxZvUKSd_Gji_Rb&8j*?D*&jVnAD(*#GM>p zr+YPC`d_$ymGspZ?i#D!$(0K92f^Q#$Mc*A(9no_sNhTe6V%CCVRisk1i$2zLf(!2 zQ)F;4)4z$B&+g4ArX%|?KZ1#+CP$-uc3o4UZ3-t1?feq~q+DO1DG05jCn_`h-F50p z7XBWBFcP_=x$N^TihUZ;0I?WjEQ$mJ`pZ&fat{hg$@vFjmNOiBou4pjO#0YTv~CNN z1By=;JfjJBb@Cs7RrMg7B1=)jbSSJ8rjs}yEkt6={*VQ@qM%>dBoXPXU(dFFcc-#_ zp*|M!+LHT7gZDoLSV~~OExeLu(O1DVmFQtwzm@cQ^g$7G5t{A<y`vbRWY`qtSKoL| za;QXBdQtsGL)?1qz4cVy&`dNVM@(VchYlIu1=ydQA;R}aVniE++u-K5aS<~37#EbQ zn}rOd>3Voo5s_#&G}4V&FziQu5DzzU!`~+eG$}#xc>Zmlc3dcRjXzabDD%0*ra|m2 zw%s4Q2Qe1TR}$*twEiXs9Lu%8U>`r&BqbGKS9Ya_@kCq24Xn<WyWxWo(oL|TMcT&U zcdpsN`DFmuAohsX_$Sb-;DkQmohHY#9Go{RWlZ7@cTK!{;fRZnQbGgoMaLsgN3gXR z))qV?{t?_g6g8nWkKF|yEKwnm{We~`=6TX=>`cumex1<w;l}^x31t9Wg3@^Zso-wM zPw3Spe%Sly1RZn-`kQ4`7(+Ul@pn)%WTaV@xrFe5JqENDFJw@-cKV=yZK<(9zZS)k z*6=MWBm0w0^MH>@c*xM?_yk}s=O5{32gh^dg{Of(r;J`y0J0G+J4>L@?nx<na+nU8 zwr_W(9Sf@cFUj`*^gmFc4aqXxQPy?C)JmH7Z4qRCM5_Z+unt2Cdb&TMD3qECr->`Y z7JAhS-zx)SjKGbn{H6*WRl&GwEw%#~tb!eS>x><6g{8dzd*~21=<k=H)3Zw&{14~w zxe8b@4W5)WMT%HxzN!qyC~#7&&bMq-xRE<4Dc0*@`gx{=c!fc~;QH`vn4*;-|NWT% zfZ)G{UO{hcw9u*bz3v+5rnEAO7k$<Hx|iy0WJjAldOJXBkC^Q8g6W!=^<v1S1mFro zl#q%0TTRk;h0*^#rXi&P{0K%Oq3vPWD~~M_NhajeegRj)foLXdDtU7X;yy!AS{@}> z;`AKH-|2n{_C>|@Xn)5+RZ~S)R}^Y8&ZpuhO<er4Zc~Kxg$2O)d8ieEB<^{WI%ogp zF#P2`px(kT?7FZ0ovz>Dv`(~m`6&6s{2D$W4@g*tv>RU>THDZyCMCuKf-#5MND1I{ zLS|E?cSYKu;kv5*cqOs^dy4<%N`|BQDbg9`q6z(!0+z1|Ju0#1b2nYkU!0@=`%@*! z0QGO$`yuD*AJhAPycZbo1oQ6$qN>3+d7M)hamvlV2wDDZQhjLu9-S2vbV@f|)CzDr z?MM<I{|k|1VM3j<LzKZP_<tqP|MlemF#_-cjsyw-GQA28{{k}q>%##9qD5p+uEzHK z_e}o-qW;}!>yQAB(#dJepZ|53e}26`tvEo<3j6;&p_n+dhHZ1c@%Hj)F2V6m*|EeK zAdXHK5buuH{+Mi3k(`@aiew6)pR?@{(c!Dp7qvya5>H_e>J1b?cX@(}GR67FGh`w8 zkBB|!%fe~G_@^r(0LrVqe^Xx3vapO^1W@LqhLA#Ya&iLVXomp+UQ^Xpg=I8LRsw^F zQA53$pMP!K!a^(Zzi(VoRL*Yl;8!rW+sx2_pcBREX^#)Tafj~j+qSRJ;7`b0VJtli zLr9xK`W!=nfHKx!xLyk$bd9nCTOhW|bUu~LwaO&=4i#D{%@3|e=?PWG_;n`*p(u-h z(*w*4#_!^`0^N)i40CI^65gZ^#L_ZtTe9;WP5+tvTZI1P`D3KyTllqZmG0zy_m0U1 zc|fnUUDo^}+EHz%YborO6ktP}Jw8v0w>`}l`L(8ey(RTqwFr{}h9So9LP~4P{=4=+ z_HP9*^f-czGnheJl^e88_2NWBu=7KwxX_7vUfe&x8z)2MfNS!44E2EcilxtvjCh*h zqlGhWREX5~p0?SypSIhhV?Zm#0UKWFvQN74pX&|<{PYg-S7dZ1^}h9}(tsIwwM{>) z^#aAR-ujcVr7J!i*cX_E<)8<2bRg4-1gzAr+^lc|G3^5B7s9@WNv`fcR`stzSIJ3P z!#jf%K1e`A@t9FSH5@3ziM@gf%#lo|r*@x?;od~^o3R#O0|r@r35^#>zU;ei5^D35 z|9PB%(O6zXJ<{1-Bq&`d2zsYlDErPKHpY>Y{}Aftbw-*tSk8-hJ2NPKj@Fjr3g8`7 zIHP!lj7ACNGr|KI?k^vB(l$xT`$|@m>ul-1q;M~Lxd!J6ppfuqsnV$gQy0!n0Pw>l zM>*r)j_}{6rLEy#`luSj|6L!|G+(}ml|kJs3Kw`X+j{M7aojE%%Or;n#8G73zI}^! zAJJ`)B@y(=$qG8?oDv|UkyQ>^2QmfqiXZ2G;{dvd&z{VAfM#-Ms#qhIQRedtZniv* z(5a&ZT3TSf&ogw#UM~H6gk7aXv(kr~qO<01bt;PJUsvKk=UvDIV-zPu(EBcDjZ**N z94LL~sKMCkb*Zg3#wqM29Y@Y%+MnqEZfmGC9%!DM1>ft2Q$-9N46`~~g22R}qY%be zmG^SC&7S-X(=LwYhgxZ^@?;t4-$;R;07bob<kE#><d;~=%D{RSr)nTpBLu{pQR>XY zf3or{oiRQIt|#zWS&KHtIFBW^g}*^4)D7G6D#KDvtyD<opBPKzbR~`;W{)~Rry4Jv z&~J0yz2YeDJV-6k|L6t;&XH00``^E;J&Vvklvr=02k8GglYd(qO++ZT9@KAfnh!gy zhkRbKUzVQ0Dc>-&EH?+0gR3oQl{x|m69Q=c#0wh_`rZChiPbM^u5yy2%Q`6&XdK2< zy<94(>C-rHyl}k6&eL9bZrj&Q=974?kjNTF4Z-b+se22r&@2BG`3=W8L%Ex%^HaPD zOT;S(0VF-7C+{?D;8)u1t<n}Eo+`#^b0SFVLk-Ac+M3sM725rBPY(XJ(Rpb@YO>~e zWU{G}KrV$R>}=z=u;~3&Zja6U_`EoRTG~s%e28An90-{2c}~|jm|D(P_|ISc5%k+) z)Dk(-^Etbq>y9AMScGkG-N~p;K9dkLRw<Ao{%bnWpywmMP>$(yMvHU)!#DtU38^x? z5N)t|`0D(BYs6SqI1ugMl>_NUrR@2#>issdB+y8*rAA>JN})I{HA+o)Co7Bz>pq!c zfshZc?=Je>_K0m|oL=qch$5Zyo`{HPwB1o;nJ+RYZ$CAhLXsNruecG@)bBwqdrrLG zN1&R$KXT4{>{hDjpP4kp%Jo_^5fYwrq_TrmdM<XWH<p`3Kc%sFbKbVXWsG;HnhTX5 zVbZu*-#JgH-(B2d5b@YYKW#wB?jPI>9d#6>Q~DshS4R@X*uOWe_{`bc<5L@Vfx_35 zrQQp+1JeSeko_GgmED_u6^8J+alf?1zDh~MdEXtD!{>Fl2)u_X=?05?c`BF7-SJQ+ z{pOGBc|#fZD8$NFC0Yfd#n`Gq_pJt(b!wXpr+R%d-)|fJ=D(w$idt?`I2=Fjjn^V= zuHU1V$knB(W-E(pR~un9d-qxsOy{c~1&<IM#}!*F<}qH}PMBG4P5XiH-@w}!Whg#W zju3&>zaYSgOG}|I!l{<4hTb6(y#&&?&u{jdYc%p9PA5A`NrOg}dr_t=8fE(V90We= z`$kdkbfDBxxbrGM*K;c8OG;JI$dk(YEVM`{6scE2196-{mxG1D88HWdv;CfovL}&F zg$@+JdPTRqg75DB7eDG>7yoC<lcPsZtj6I<a#pX??@M0;3O6MM$WHj7lUz@MPLAfw znG{YB7d-f*r4(xAiqjbegiWB30m(2>U)Tr5c=azQ7iV+4a691q(ReaiQB8>KS52?g zGt==dV^QaJ&YVi>cHG1I{rm4fa}ad?j02)|<)1lH7X2l=)lOGVMXI&o=n_^M#Uiat zTDVyTi0u|#H&X1DioWwdE%Dwoc}c-)b_Kl@xyc*S6*{`yA3wS*j_X}dLQ2+5lrCuk z>JAH*kFSnQ>w5N8+8HixuOL`)eaYhn-OfyN3|iQwr%4NaOgdxA<=#MwH0Qp6<zGE+ zyp_>VEY6cty^3Y<5(X_*84^vEsmH~aAnwt+ja<iZwAy5)%vFuamudWn9-gdshL!Hm zbWrs9HJ)qUUB2(ER&RIv&eK6J3+w#zm<jgC*xN1-<S#(iNfjGd!Q&q)=8HXy7dxjh zEB)a<J@%ca7#Ps)@NS&W+r!`fS&$}j<rfhs^oVWvG`Pm9*p4lj*ZO-!nH7?B4>@ZY z1}voC8;GmNJ^$$ri{;XguSxlPIU1T^H~jZ0XMYpp3qaqAUR@*%)qzP=#zT~{3twFa zPM50O_Z}!-k;D8JT4^a~uGwD^U*NR;AZno;h{_V-hvNBVD1{9SA>{iAX!^3lL6nuI zjwolAI2%FE*UP?fG;qO4_*F0RMT9hVQ(n)E5P1I(@)tE9_|*Q2rN!-%_i}IaBiC<! zhWnvdfz$y$pJ`Bo?=i8dbb7qCwRLP=C69<&+v}5wd?B?wMo)&%e<>HgrQmILc8HHB zrMHQti4|S1v`cd%AK8}xo~yCV*7Jubbeig0vZ)?1yC4MY3|YMK;zwa?0lOPGPsVtS zbcC%zQ7Xc)BGZ|HxB}fs0ZY8J#zquE;Ce(DV{6^MxL$1B=*mVA`I&uC`X}FtW-2r` ztXnT!r2cY5P#Tk9sTBof=(rd}-we`Gbii&kJR$Ab$Iw3q@;DQT{S!{zy^%PPdzI#I z70hH$>g;Z%EtSj5&Z5e+GeL}+wIT`eU<JkOhMF6n&-r?$GCVOOyKJ!nHWB3(Zo46o zC{sq?`Gp@cMoHzx5vpK!SS?lar@3~+z1#k_^1*OG7(b>eo5E(cA;JR%PnsZs5s6ja z{`;})a3Y^s6ifJHS0qmQ$`Fd91FbZWE7O>nRZ5Rh&Gj0sDd9}I0W3I1yA<b(1s9Tp zxe!&}VFt%8DbL*7ALJ&08jEY@_iC&PLz9zh)b;ml$o++|`AG?Nif;wngl61u&F4Na zP0t6K>mS!WbT%tZe4b3EAxYx0%1he4<3-7z!U<XMaLy?Nm9V&$Wvo__2?K%w8WfZ# z!tu{q%rG5tLScr8?XwABf7?YzA$J5TdnLI!sIywzBYESzp)A6=D&;duss3Pb@{pcY zG>9O^v*_>5HU;{?9zJ4ApC91mrN?U~EN45G+@k2-SN;LFXLv{oPzuI5l`w3SggR9Q z57|HN>}bYz9dQbDua_Eh^QZR%`;+hYT~)oXRhFB)v&YqpGO;@jM)(_wP|;A6Mc;|O zF7F2tCu0?r7*6*>H({_SBy?lk{Jl~V2b=59eBvC%>eIPA?pq9{k2Y+#{Jv!(+AGAl zT301M;taw^PS?5tnz{11t2JQ_-m&cx47|Da-KV)KtFTybGs}oxz2v2p&wKo@LCcQ5 zA|Z%F%K5R#bP+*K$>3MKvVZobGfNv?>1@{twW{zLxUuuu{;IlTNbj@I5XbjXzDh_p zobcfAuLMkw6?zdl<@bN!LqJae9yrCI`G0i1by!v1`u#140)jM1hm<rZlAG@CZjcT^ zy1ToPl<w|sHr?Ib-OX?5^E~IA?>X=Lr`M(Kz1Ny+&U@YW_>2*3WTxUTV1oJ%()s2n zGgm4N&`i8jj7x^%b2F`PK*6ujxjWyMIdRx6UKkCPJnyt3zA->!x1+}X@&hWCRwYXP zU@}u-AWk|Szj=4}Y@^Eb0E5l)l+c;7HQTM(Isb8pLoHhA!HzNBaE-GcUmEz&vU@Dv z=Zj<tny^1ppK6LH0V1{}_a_0MQAItj^Wtc{7Y{3M1FO#iLl2Q+G}tlhnMp1Wujc^g zKO-$@j^ROTb=WORYdlqtPb?S#wyNs~N`(*LFWpx@rqqOOX#lGtIXq0-p-}a$MiTPA zgFzMWN0{E#DH^M-tWF2sqA2n;x}0%-8}<0te8|%BgP*i}8FDU4@az2cOYf6X*rCn# z<D2=52cEDA6P7rJcfoj6aoAY&cDvjN(a4))MXk}!i(}z+{lGjm`^foPCbS=Y>Wbq> z2U;SV0hIngl!|X)-cpq>t=g%RFNv}#mZs(Gd!H$fCtzHGPOP$!)9ft}N*Vi1OlG>k zcM-PXw*eR_T*4B{qk=qt4+tF5hB*)-GaRRKMPh?2@r)L(F8plodSMB?KKw{Bz()&q z*YiVL{z$#m10$v@@~6^7f?Og0jnM+ZQYSm`YC->iv_JjAaRtoh-BYlxAi<2kLE0L< z>&Y;U2HCOoVfiATFYoa<d0~-NxBp<YpaGNL7%jOwPb$ksbq&CCTY^YpY$No-+A*lr z`K$M*b5XL@^JGx%*+wc`Is`-T`2gCK<i=nqKZ1{;K)#v{Zws1r=y^Nc2+$dmknhOK z*Q>ry1YI3Sf61By#0asa>b^kxk{8I9o9I4o>h0XwpZw148_Xtql~}#Y=uF`A?N--f zP}5B+6_jpL@^uOh5&@sK@#avXTP%(&{s(#<;)wXc$w_ID=O^z5X0t;{K+T%{TMUX} z^x^#K!SPo?X{DITx!J;U0Y@3%`Ze(kvl%X0DZ)b&m@8Q{#x5NdL@oUrh~)$Mn$K7G zQl7%MUmpr6R!VAMEIj9uW*)KIjV3!@7+){eyGX`nS)r2c*BHaKmaK4_JNB&J;HqKl zXgQaL$=C1-P%7nr4&Bs4@HYH$V0UDEHm)z9<MM`5eK7JK5wkayk_Z2*u=kTT&VJB2 z?M2t;#5LeKsis1=vXQ+?{!Fvm^xV6%M7IGh1ciY}%y$Ej_g%)%-?*;;6re;h$XBsQ zRp2+Ns!yeuM}mZ4I$1EZV?n`5hci)gv|y|9!s4PlwN!0~SKX`|Tj1h~sI=hD<q(i~ z8r~zTKTz;^;3)gPJb?UF_<9fsw@hy4*yiARW#teFpG>UzL&0p=-+-$%G!GW(V#>yY zL}OS=U%9f(z1|CFfA_L<fbnC(2;I=}QlpeP%VQ9+79#Y`QMv&xL8)~uzKvqAK3IQM zJ%!nsEQQ0-D|vQ+A4)GYwF#R1RXZk~i_kr%(_m-!iS*RDz8CqIyD$A6B#Lg&BlQ;_ z{ZPV?3Ls}Z`{*!!=~l*nT+i&;Algqb=Y)0soN2!~nLj}`qwv{{)C02(Nwc_*5G8YX znikXB@h>wgM4g^AT3eH_DQ7P6J5e@tIj<uw`xk{fOD>qz2;uZ{>{zNi<sPZJOm_Fw zMZwA#+O;fQDEC{WO`4F%klow%XTK0EDGs)pT$$Go6GgtkckCzm1+RTHY0P@IQyN3! zUYbMI?2Z&4oQ?^8kzIH4r?eN_1g=+wrWHoK^=oLEe!#;7HK&iTSg^S1@^YuW()G1J zo=HozKg`n9ySuZuJXww*v62=N{5?M+;p)6xw`5=Y8iID4lJ*|d)Rd=rfw4K&i1;)V zE$;{34Ec}uL~bq;-{%U?tTolxFG2`xZOsorsxMi9T;uhj!WIvqWGXclo~|b|4s@Hp zEr9A)81(Tr)_l*7f9(Eh)+G!O=eVJmO!DS8SFYU6_m|oDpb3*b+3Xf9-M0{Pnc3u1 zJL!y=p8-j~gzCjXX_el9!PTnW#kN)qt%j;X7y%q^raKmZY7YGZ+_}ftFb)YV(%7uT z--}2@etcuQw<&-i5R^yYGo@iFlQLf|zvLpBO422R&u+k|u<7s(X<hcbjDB(^Q$Vb` z1qHEwuH5uPaNTR8mE+P*@Z@moV_-L8Oz`$dCg{zf@lH+geNrCJlM~~QTWN)p;iZO& z8a(!V<LI6$AQIN8pG$V8STmo$newZ8KJkc!sa6?bv3j%M5dM2Rhq4y8jkkdD-Kj+V zIguF@?b)cJkB)FBA`44u070!c0Zb4(Ykpw#_2H73H#7oaGHPbeBd?qTCRYtnvEhPU zmHmul?1!E0jPBt4w^9)m-r-*j-ap6db(_3Jwo9*N29RW4ybBTPUd8RX;GJ@1f0pua zhjVmHUe&{e*0k{)5xyiQv(;Odkv#hqx66ediOCoN)`Txy;*;A1ws{wz>+@uGcg~>% zCI$1(dLL8mgPhQqpb?egFS_`-o^?%*oldqA=^F-!!D~~6iVAmLFZq3EcZAP8Q0>)u zDopqdOjeI9=>4m>QlN<zJ)r`b=7xEY<tdVC!>pPHU#s~%e{ei?_8OmmfpbS25ued} zxDl)`2EU-G7XzMHAS-hu(iuQ=ft6xdEka7^sV*Qmx1TKUb}0OI7s_)n;&ce=E8!4F z1n`0^m4lB3sZ?7nH1;>qCwXQgPK=QPM^f2KkLz)m&C@AyO+N$HqXqD_Z{N>a*XNF% zf6LTI<px8L)dj(HvgSG-YBv3d1)3F~gO#Ebl^j_9u(Lz>3Vpp~Zy%`E^xt-Vg@V97 zIo$!@Tx9wq?h&=hme0f~cOiSwALw|lwHD1aD!&+QjUfB~hO-bHH}*@Pk1N!g*%*Pr zAbNq$_N`V+5<V<FV~goS&E{A-DiK;IU+OJjGle5HJ9XQ5H*gMv<?x!>baJ)P_`&X| zXkW43jTl`CGvyp7&S`?|884O57^UErltif!W60?CHqht3v0|nauw1)xe!DP{#dOpl zNIvnpg>Lf7sJr##G0!VF*u?%+lsRupl==Ho&c4NQOk^t`fu+!VS0rEluD$NSe!TZT zr?hrQgMOu9zTqI^;~+BKtP4i$Ky2nYAciB8^21w?G-#J_PkH`4es#E;9i=zkxVAw) zTJyD#b=V42Z9!$9@Cbx9N>R?KxH4^p0}UAIKVxGU2slD%KljV39elA_pdg!+MhmDo z9p$H9=@bf=U6@V<J#Mv}U#D>DSD-`_eX9Mw5T|-dzXPm=JZRb&2%Xn|W5Z?>aq5Li zncMh7lR2~H8>5wmZdFMF`}<9tLScvZD!sk}fV8E1k`1P!a(ghFt5jWP*#Zfg=$U8p zxr+|KhD`##LYc!1qN|{lbfB8IRrzxUm>H`?Pz`d;6OyoF&=fSCSXhRPu0AMYg+5Yr zf1%zW!a5rxRM&H0-iL8}qdeN)NzT6maL-oQTnZ>q>p*B6g-lPnu+9_$abtu;I-zt1 zKkV0-I!-CoifH%2%dO?>c50h-7m({Vy#8?1&!`KtHoZH4L^h<+NC<!duKk+<KJL!o zglC|EevkPpEJ?N9on9PSvqsKPTqz@;Y>>1};#Ucx!;jwpFyXL?-$jP`!SrEyoN{ww zedB~=7;{cw&n~wIkC|T?^Y?bhE3BCr1_aVo>%%;hnDWn9T6$$)O=o1jhlvDN5E;en z5cnch@S%h%kiB;QgYb3`b4u(pQlGozw6a{jYC1f9%>bASm^kxXBTNi0Bv9vQ3xD$2 zoGw<CH9;k)ftMFj^!4I~Z22C7&!FxIIg-HPPpMGK16N-OiTApvNKrybFKMbq-6=Xv zTR@PLtLpZG1&9SUpNO?u8y6^$Zb?3_q*li81ah<GI1p&gZ^fV$Pv_UzpK5InKJqj6 zxWWRz#{T$DcBmiSTZw2f?ZR4oGL+q}aJXK|MJnh_zxB4|tN)rCLG(cAzzv^xh`$I~ z^$OzlC$5J0^pnS5t+-3|{NEl@jyA?-1*G~aQ#BIo<N$}%uM~@o_B<WY&fZSx{o%7M z4r{dxEsduO5ZiN?2YK`^HDWOl*XEDt!Tm_=x4R|ZQ@&K0x34gyFEvr1PIi?c^+;nB z8F$|AXJ?nnWn!<rIarz#d+M1GB)2hJLMhCD<?pP@s28N#lUB9(v(>m8Wy!EhY`XM= zVB*!u@>k)AjR!<Q3ZtAA!9zps(&OYBxR)BIbTY^%%~`l&+@q)PiPC)cgI_Bi^K3w; z2phuOC-hq7Woee_$)+dn%q4UO@WSpK75Q<Qg}Ak~Gk=-@y!oY*JN_ANM+y_Vw=`WQ z`r9vUVFlY)#2dW9m;r2l+W8ig<d){E_d0xoaaTrumXzHfH4(2>7pf3pn2rsE)1eM| z1Nd(QeQtL9LvsCvLSE1?p0^WyIf7>Jz-*<}fAYwwsr?(!3l~<+m&HiI=9r&@h{lo5 z$;49!HEsXqku}vxZ?<M7{h*?qUzYVo(uMl<RH&E%g&iV32Yj@V%fm^lN&>E=y+eQ` z;4z_m>z3mq5~GsBp&%5FHBiY&zB3yD0hO+Q-gO4-RJ7e6P9t<W@7CBNoa{~nV<{6~ z+Eq=}Y#hM#c0K~r<JqDGr)Z~yX`fxOiL&~~^uPcE?BUUl!}?zU^8L)ACrEpgkQAPL z>S7e9z2kB{TZ}c%Os+qgo%!ly!GE<Jk?&9`c_DG`!fc&bC|r@is<@5)1!jguY<sZ( z3-%unS&fq-ef=LVfYtjBs=D-4F_z8l{ja7rNwT^3-`SRWkN|?ZRI@U!`;Y_*;tt(; zWy4>G?b^pv8{{(i2_4n`Yw+Yy(i_|3UjT9c54F7EA-(jQT7K03qz=;<HDy5Nabd=k zw&1AD!iT%Qx?_F1)V}cK9Otn?>-X(=QK#-FIX6YWP5^LF7qUr{g}i^)i6V=yLf{BB z3Q-nNDgy(C@y+_~;L%kB1oGS)cQnGUDWis_SsGftO^xVZ^!xn8f)=w+y?rt|lIGpy zJycKdH-Ov~4a{@fvJ7Op3z>CAekwX07nLi3Hl8?3^Sw|Xclo{(!AfP4N$7;XEUcjU z^zAf()OM$h`L=ASI)J8J|5t1-y=nI!p*T#!jtqLQeGJSy8eT{k%Xqa`zm~Cz7ZQ^B z_YmTno`v&8Yl?Yq__9p?E-nc_!?b1An_DB^`*v;;4T|?~QuO}hJFY*^+x)NP{YsM! zAeZ?DS6v?vrKRx4;Y(*VK}FA}k;L*50(1`7x<(JcDH6k7<f#7Kr%U5A+GVHJjHx^S zcte%0<9!e1IZ|k?G~ePFJ*-yF{p`Y+*1Qc==x2=4q+*iqXHC(z!Ms&1?E`h@I8x|* zSPb#;mLMtddnmp`ouR1m4;@pcGgaXY_5n+`M2$f7`x2WR#{K2PPh8fPouKSsg=^z4 z1_dfJXAoB+F`pvO188OI=#Q4_z1=6>@GxLxu;{wNk4E$1z(h-edlR|L+1OG3ux**H z%a3oW3{N=GX(4xhD1_;|uHLNd!8p6$9H24=+h3ch?2T}hx^y0XcAo~#mACh_IR;;` zE3+KTXZi;r7sdJ$1)Wyhn9a!sf>WDZ5^i9fyYc8x1$nSBOOVz1$^dp*Teh4S+FfaR zH=xjE5iDfxt;A4Lx^tM0svaTHr|D(BP=!!wSWbC6kfsNgLK>dR^hcmTG;+W>S*{d{ zhr*w^P>~;Q+u87NbG0Qhj(9aQOdl3LU2ScM-D5R~y#HE<w#y9!w3gs3{Z*t{P!I8T zT(nooE0v%SH+C7ZF0I`u`|zJm<<Tq6ATeDlBTg7-9J9Pzbnt2fvM9z9*nbf!6E8|- z&@H=fFOrj8^QcSvK-_ojJnkf<4XHGhP{V+k7|iQv2y70%wKGBn7%!TRuEM0mcUC0| zq^VmdppGS1yUCX*yHxVqU;(x`KAi*c<R55KI5;|PP^a+-&6N3Z{0(yeJfv@c=F_G; z|A|!p2S_4h?gY4|LE~*$O8sGMfRX=8=3oMew1Q;KjOvW@@es;K(&2bGnM3J=31sI{ zu$3_MNw-+cC%?5TD#en`guE%6<#wVYBt8()Xtl{$vhT)lKY%P_g6MSSDh<iEss|C1 z5_N8$0Q`3f><W$WiQzrp!<pqf9)#3H`Yr<ww~xXOorYZo%R?X6V+)neWMByrCQDrE zEBY&KP{Dd$xhU|ciN*sa0%cs7n*I%1t!{j^q-0#;AK~A^^Lbv8zv=99axk*{zNlO+ zv{DIihP)Q|hN^r0v!8pb<AtJY99Ir<8!M7G2kUgP)`+glR|S}`7tJs#mxF5>gqPJ{ z(?rjw5Ev%NK~R39=!Uln%_itqtXW)j2$suI8xhnvtf1FjMwp;@on3mXVi~?byF@Vk zu$05)dh*4EbIHD+B?>*vMBW!4&g2KNI2xscGw9UTQ$@|csN|+8ozrBk2D6{%IX#8} zpA&3G67+XiHZdzou!hw_-U=trN~ZWHkRWau`5nxskYm_vokHJd!dki-@hy+3_(a0! zq>KtI_&527z5)%7By$uVJN5?3AWRsJY!6cyYVZiKf`+ZqP#Z?JRd4-;WC;a1K!*gU zFz=~@RX8C+pb|cx9q^|rBbZ_)mDQl!fJm|3&zKbNh<QhzDDn($@w=aIrIZV?3oZ-H zB=ej7DWgf=MZV&d!F2XbkYP&j^^j|?lmDcop4gxc+UbO|IoQ`<qgijfvr4vXvRv%) z;g%;p)vB$?o8~qCEgIz|e1~eew)Vu~bTutu<e&2&7;@am3zxGY1ZMY?z}jmOVHi(t zOM81Sxy7aII<(r=7~XVlitc9VEa7sDTF7j)PqM1i%H_N-Zz(XMxM5_TowXA5QSB;K z0#{~e+0VE8n7=bM8XhOtx?uUi<As@gHI2l?@el<>+FfhnOKx&--p1pkVI`Y=7qcq~ z<SV*Fp>JxES*?HR`Cm7DG?^+2#BaVQjBz78_tE~+np}b(Y49?&_N`;3Wdkg_I2=cV z^Y;2Am%W4{&>x^Ucn6q{KC#hySCq{@Zzz6EpC~{dU<h+DZB1a(2<!%VPOiOv(2<Iq z^g{`DetkdIh0oy}*_-qRhq*`&Rj8b!`y73R(lg<~=5m(7*1;grIIbIGc!Y~ZCFWqZ zB_+r~|HPo?QJX00$$IXgo^Vc2xFYP8P#Hm%O2M2~0xFl+Qxs_P_ANA*W?w$`Tp@hM z?xh79mYL83i`S3s5UhOz-+t|N0t_+7iUzmW&^iQ9uTq7=P0zY)R2dnB^h|8ao1vTy zF1qy95g(Llji*GXM$28DgXjrD*wEe&d7XB_rWL>*IFJj~(r8q{boMpgItTgLTMDNi z>TqUO2*DGSn9-O3v9r`RsNUquI6}`u&3$^a%IgRA7t_T?qjj*e7e9$JS=a9}RjXr# zu%tY49m6YOIu~=?zk2g`T<$w<xKSrFE2$`5?#-l?#GeW+%SAu+RMEB2D;As85<#Sf zR9S~>?&rg~-FrXP&m}o`m8CbR-rqbyq3&ASZ0(=W$Ms0+Q4!!xzB5QdcXJHE&g87b zf4T`U3;wLvX<sN4VR0@J)C$$$@>qT>f~Of)eJRPfEn<CZHC=UiGZoht&N<^ao>o>% zf-Tq1K!kO%a#VZi*vsr*Jz}GF&C`zpX~ol)>C6_Ad<A7{cbj<h9rweLM1k%3UHuCS z)J0E^3%|9jKJ`<W8f4#YxS9ClQP_f}$kFdT($gNw#pTKD{B`e(#y4|b=mD81>K}VT z<ErzyN}GlKy!6iQ#({4RKWB?&Lf=tXRgnn^Rd^Jpu|P%<lp8X1OY0I1#t-8N1qn)0 z^IAKaks_yb*}YbecXOldR2Yf#e$!DfWvctKywoen%S682wSaKEQkW!7er`3E&y~Lw z*!LaH?~s6cZ9vPJWnR-=yo}D_Lb2Ft?~xTflz^X^4?a{1Bg7Htwd$#wLTjPAm|Kxl zx~(&uNbr6Xau-w@T|Mw8K%Xh0!_QSOahrp~pvgHH#EI_n@+viz9EhU>KS3kX>&-J( z56`?3lDnu*jFHO<PdCb(Eq{5{5GfH(+UL({dfS8ToQ)$2!bpp#4lE`+TDMZm5N9=0 zuZ^>4@ew+(Zbt13PvM%_cEfwZ@%5XhT0nX0`JOS~EGb7qoGI>Q`rNP+2O9^JzK!VY z&Rf{?UM32kp;o_vmos<a8lU?KTVe0wOXz*b<_M2oT4vnjkS;^`+0IC6M;Ip@RZ}CD zv53kK@k8X(>oae)`CZqv;ATaEB8sWT)|8ri4&-t`GhM3bzji@75<y(a0cxlpTXC8I z3x~}TaTBCdq9niB$mjdq)~zBbc^DC|s++{^@JY&ShVtq!Jpy+!QdzcT*O-|MDPIQN zPAz%lTm)fmZ1;M6x!zT`=5ypMkkNWXzvPUNh-<c#IAxMTELxo>OXKZ^)fDQ>Ih@G_ z(F+`SXF(u~l&g<Fi3xIJ$xq7p2rIP8va1st_Oy)#jcoVehUS@`?Db}#!W~@?U}|D! zvzS>^6?=TnHhROdYg9vB-tUGB&~U-^s8oELg6*M()M&DSz3T<5i$#K4Yc!ViQaxG> zo6_eUsOLrLx6hl?oV|TFydqP5>a2IZZ}$J3kVgHMgrx0leuWi9;mTIlW@<fl+ar-B zapbkx7v=q(NT?~)><M;tgyWgBZJqgr14#3(yYdx<<t0o-0(K>0<qt*fp3Bkr>1uFF zmE_=Hat#srp;eKS+0FzS3X%>MnH1H%5QyLURgaHJf2ocLpHWwZv$YWLsv6R%x6i)m z6WAX~ezX#GSZYNi7b2$yz$SrMRSi!xz%3YA+c_wYn)0JQa|2sM5xZbGju7g*=OX?z z!1^o0B8BY~^M3hl`)+#$@ffmp>s3ig-%5i5j(j@oq-Kkg2s1KBLH=p|%>{~vdp6%R z@@f*sqv*3FBW(oxhihEcFv;SiLi6cZd^a0Rfr&H@cjT#oc)2tgb%Nl@8e!c0QYgI! zne+Q<E*0o8IsQvD6fNi|A8uXZHbrzpy4Ln-Z#U7RqP63YaRJ;&W_Agal=-ld(yr-^ z+X;fOPuGrELC%O?YmUT7<io9gNrfqimy)26jS<JFxGr3X^4tK{8rcfqP(1VSD8?rj zqrOICa236cbn-_-kP$=y+u#&Yq|qSFHYR9A4U%)WuAzP#Ckxf%TJ=d_=?`lbW>wV; z{0v);%CKl4W=m;$NTFLNCKzn^5X&`^B4jB{e?Cf*f9Om@v4<2;!r@ESP~jWO#i7y( zBxl`UL5a#_SwuHfn?WA7(Sa?G*Gc6m)l`?7R>{d`b^X&mRoqqvb?ZvdyM53Z^kQ(v zR+>mM8z;ky;MI-sn3YrZyXjdXOumM1n_BQZbwYz&QA)RY-Ca?!`Dp@5Il|tyoNu`3 z`jgBkvI3AF5a~i8PVkA<hx;QDVPsF>Cch~2pJj07$-ODGzrmL@XzX1~jWn1qcizJR zQ4=nl=fyAqI7FsiN<|@QLmoD2<l51A5<!WhNJsW$1)LhfsLjRD%EB}v;0vC0yoqEN zvWo@_#jd&E5NI>UDx^EeB+fFycrv!W0%JnUX{eWyW-v(D=aLn^hkIX}1q1JrNlh{P z(%kgmOmLDnPx|1)%}d_ql^qZV`$R4J;LF_s$b79jSe3?Qi3tB&r#A(qT(xDS7j{3z zzcKjpb4N43j7y^qY7hMW_cQ*E$Cw#r(^ertr4J|}uh))_ipdH#KIx?{PN1|aADk}G z*JQ&eY}G|5{W#O@?!^H`*QhQ3TV{{*+xpgzKKs-Ed@46DVcU8!88$l`n-}>2jmTIJ z1jKiG=Q$usXnO82Krf8mV2suDEwene+Pg<6M4?veIYl)&5~#fKe`Np!26!mvkY_|w zX#CA>|Mekdco1PhF(gnZC=k{?)WJQE>w2=%X!LN6wE42_&EFWljU+&P!JvKffKusS zmfz*bLPyXE{(+^A5#Oh8irh2JkCkNNefV#Qj+q$u$58VDInn<^QVNqmeU84}+Bgsk z-)kg`!WUsi`2vAo2r?KFX)w}5u}d*xDwalZQh7zIP=)k4TPpY>o_1}t6f85>Of8B= z5t2MtF`i|Y&vV^j0x4PQA8vWoBk>5hv47687I-Q^j{u<6EXnA%!}4*c0`v=VbBYpf zhLZjyrT<K`iL}1}+s^`gHrhYBOG0DRRgo}pa3-m_;P}HVdE3VLxO^5j1TM=xRpMkm zO-Fe)(pH@^QJWV-_*9|-Ws*XgBx4Tj{_Mu=-O^YeE9B3b>`WXosWj)#fdROg@5^2* zRPIf%@bdM_NRk^-?~Ie>GDP>*dlQx=V7qaFN2t8A@(Zq!7ss_Y#@KAp#K)ii-1jax z;H!ayCkR9T5lTnEz(lachsf(8hoQFDi<4+bdzGUXFbH8*!q`9eqXWzoe0q9%pihVm zF$1#p0dyGscDad&JO~c_sB0CEs`Xi&ObDiOrW{p8{9DGkx3?D(?@XIokg(#N0}4k! zxT9=4aL^9zQI|&rHKh7{is$@KUH<2lE<zjNRFbtNV;SZDrX#o^3EMiXAdPYuWnlQ@ zUj<vnE-hsyX`I7)LWy_~d$OK=v%Mb!QwSp&AhQHOZLF?p`}q0ng2JkezH$0poCSC5 zUDF%1{}eDPE`ov;!2WIV{O2to5EW^RB@pq|Udz93(m&6dhp%2u-smC8Y^v9rH6)av zY9&kotczgOot+OmGwxO~6*b`kdLlr5H5=9z+Q`Flgym6K`+Du_6I4qn?_Oe+#+|I} zIAPljtcJ#6#Fs)2Q8XL=sc{M!60M-DF~_}Z6+ofQ1Q-7s3He(${?~Wnh9QxJRQ*<V zJq$??2NtC!Gkupz5+1X4Ivh<nIM&m5#jlGIe5ZUA%R(Vi>cf4A%Hn+Yz6Sr&yY~Ah zlREZHu}a3?q$LPrxeJNJ+3(?#31zUSp>NaT)9Y>sF;kf#8LY3Y>+0vz^)ear<ohXf z>?Kvd%K<f`MTIirJX$^)86cT)`MA1qAoT2JTx1dD&h0U!FAVV?UsCuJ)U9F0wVaIF z^mH|+(K>yr_4su469Ais{8i$p9<*lSP_1Ar$VGmIBUgJ$Evu4%n{I8(PWnDt>`S$; zIG$5jRmI3E34=*?IxsggTL%81|Bk&KC~rG|elv|CCcMdtTBL|a_+LeS23Z?q83ya% z39hZ#Zg!dwYIr8C$~7R+MZ$vwYABt}B67+O_o1qykC;NxiJRpKuT~;ft$L(lPU|+# z$VGs4MXmQ=m-~;X53qgD@c)YZQ$Y79yLDu>{f{+&Fsw_<CYC6gWmhl0g)WZ{g8=I& zE~J@l$3`d^FPsaw`G*wW;DLW1kq6s#wec+wyTnHF?-lzura<xo((26Fi-tnJiyYPg zIJDJ~5^9Il?xuqk1k^{vxokzVtR7iEjHCR|Zu{2)g#|VUpoE#tOoHhValq_yoN;_S zW7$0W)W-w`x!g21gsv?a7@h`VAa9ho2r@F0OO{RepQZfw52hwAyZV)uco|j<xh{8p z;~olxKVX^3Dl22AaynaBrWG?UyWhgBn9qB4w&K^?j#;TLSMH1;qoAPVnva$yg9)Ts zdN*XEY=Nxx)-caZ@M`oLzR^-KyP!m37S-wXQX@>*dea3|RkI%gpQUBlal)*6fFS`8 z9%P#@_J6O+zjc&n-oGE7)9d%4@zKlXD~*UrHAm9Flu4csrp@sfHB;%${VbLg;h0Yz zC3NSUiKb>wNbkcjLjg?`k@GZlO#zu^%op2hka~j?jb@dADU?(gcq0;=O)>yWty%vL zNNQ{EK_4i$?sRh5UrVPlTRTU0c)G8);5dgI!7FngFkoR};a^6lI=C*E4VM4--^c8~ zuB3KMoAJo2NlSaC1}<8Ao0CbN8>6RgDy6fFQm}NDG|yDly1=`Qg*Vn_%T05^@w&s4 z6v79Ig0Zgm;aoEHP3)Wn>SNos-L{@^t%(R2FdJ&?XT2L0!YycL#m2BX9Lsc?gn)H( zL9<KPmn^B$xE)#zzu<T}z16%i;S{#7ii1hPIvZR9H<EY^hJCWOt`hj{7%7~4!NrA2 z`Fd|dvAnn6<LDl3)0oK48@$K<CH7!vLhw*ps@#Zy+dLR~ASo%i?{tPq&wW(8Nq`(m zlTHTy_Z|3;2OHS>+x(zPmJ#^l4b~v@S-WX9s^5YoQ~h2JUd7PKVat(+DEL?QvN?}^ zzHPbWyXudn*NK6~mCI@iZ@eDoch+IKdmyNDyTA~Q|KvyH>P!s8KWXCx?OE?^>}xU0 z+vp`3NQ_nUso9EaOCwRnP<fAhDoA)z8PRG8Nljr-=UxUWH(PxHD8e9~Ot8*G{}zdn zFWfI@H#Q&Vm*?QMr-u$@XZS1IZ7%`&7ILTeSYeDLc~&@aMe4=(za{8{DbH_yZ1q~~ zN@reS9@x(_mdMmBNRuwU(CyH+{p1>sT;1`4CHBwMt*@Xo1-wK?3yk%O=F1|<qQ%1E zByiGqz<BvjrV+$yiq+v?{Ct}Q;@w`CJ50k<tGA#4A&Nrz>)rImJu|zr4W!$&Pj6p1 z+=9~F7JX(QAa0%3P;7^BaSz90eRvH}Ch~2Nh0GSoG0>+iEo56cd&E<{)?VLdiU*=J zWC*^;_tDFh)L{i$GCizMwg(tBW-Fdp(PST`O4Lmj+?`T;W-J!@<3fIxnGKuy`1#3h zJ_$3HD1ETl8((XSOp9dTdmDno32zq2p!W=^OpIy0r7M*#>G}BohdFuH5w8NLl4E7k z4d#7yt3_0sGis6&4LIz|bhKE`VUh?=RL*dy`!aB&+;GC_Hj?0M43%7ANAtc__M<+a zhOjbPFhC!x(|@3?J^=$Qqxi0k<|JnAs|?4yD;b3)hC^fZI&QbiqcI6s1+Eee-<<dR zM4wnNN79_5En^i0n1M`=NuEXLQ+mocnnEaAy`wSxX*J9f2Kc?D#WK6Sk40)VFjuBi zSpoeuMssyUb((r!<)lwx1xrp6L1lHeI~FW#Y`Q0L?-LjevQQ$b;gw2Wd{;(N!28`7 z<u1?EW^?6mBh6Z$+EW~j_D}@ODqkgg-uFFt3&-qq4NU9|D#g8hsI`z^P(DR~hwqyH zN=5%NkUv}fLcZAKDs&Xw=k5SHuZ#J{>bb1JmZ`K8&aic$vdi@Y?HF*Rt)g#<o3Ay? zw^$`%MsZwDwAjodk7PlG?K-xJ-d)TVD`*l^D*2_n#%ofq{rq@(RjGLxFRYiDD{A-W z`C3Lj&1G+l`sZB#=b0-@^{5ReSR79zkTG=~8lxjp=#Lp2G0RK_3WrFh>J*i1(poWu zQfS1s=T<Y+cDL5#SpwioMD?b8@mDn*yW0IuE^=6$IW2}x7et9ZP`G9Aem`?1fWc(0 zeHq_fvn~KEmG%)}T7=`7is$i{+!Lou{rQB#(_Q91pSrDiyEipS=ew|$Wedn31zOzY zoU6=#*E?cTT%iaW$NyqRF97FHL9~=wxAe5~5;F@1SAC!24Qy{3%($Do_%NDhfhT@{ zZmN&hhVjPV{Rv$nAU?foM{vb&qigRACWlP~WwgNdb}07hZT^=}>SZ43o#r*6VB&Bw zk!j>SnQF=c#UhyNw**gj-wxGVhx716SW&z(MFFRCxXxrSYj$PO{mz!?@m9Ij0@JB7 z$o3kMu?W?z_<~a`8psTYir)C|i}_EvisTP9tK>i(7$4o57)t%~OTm^p>yOpLdbobh zj5M&3#zDom;Vd;;LCDIu<P;T$cZgAUz`zI{eX;ljX|hn^wfFs{k63}cs$%rXmFY}Z z|JBOI1ajx;z}bqtkLCGhpF|D#Tl?6cwsC7{^@4OY?)!e34mpG2=_7-M@E3fpvA~{g zxPuFcd>@XQLnG;23^&f}q>8lLtJ;a#iiXA#_@_4*iPc@v5Sm1dNMYyGvS%5-<&TZF zyEBzZH6qI!tPmL1>@^m?&He}lMtVnYr8W&NLX+~M%AX{9b9BMW%{JcaAlOOtRZTXN zGu8sODp#3W{sGdH|GRttXJx}6*f!OTz)8oqwr!$WWffYWAl)pgf5_zm)%@0Z^)#&5 z(oRw&yd=IuDb3xWtQq0j&zxR)c2neJKC+e8`Lv>yc7ceW`7Fy8_sOaK;<LawJ~6>e z%f7VSUyJ5v0a*FZrEsOd#nm=6^#2*nMVu6JDtz2~H*41+Z6e!ByG?s12;27Ne2W3Q zuh<<#mrJ&`e9+FPv3bk&^6)|69R{PkuSD&c!=@EQ-)G2n8*k62(yt@BZj`I-fVs)1 zOTZ*xqdilo;VEtk#ci^0WyC8pf@^R7Jpu)8uhhbQAbPag1R?8heE9#ndTMimWUZXv zSoYSge76oezTDzkh;M6n5O|um#+;{^@0Eyj?5=sE;Ft_P*%FJ^e`s|pK4*#M5CT*= zrybxMZ@mirKCcH77c4OeoXI!NH=M+28z=(7d1i4{<c$S8>E$Ny7PVRU#e{rE)7JuS zrJC6&ZnO2!xNipcVq04)3IdYp&e@!YTTZXKkJAvat8)Te;7gS#Pr_XN-4&yE&RE%g ztTRs*C<^F5-8{QGXf~I`rGZ>?9%CGRN0_A|j3j<n39?c8P_tq#y>(~1oJM6%L+WKn z(SqUAOVma)8LT-&sopZtWGafD%QBB7?WL_xeipBxGbC>CF<G48pVLJ?6^s1XE>0&0 z|6$m4J-9182xqnG;2yY+3FlITgs(^BR(-ivU*5uCaOGoi(+d0_)~)NK=WY_-Y@Q4P z8pY3kSmF40-!Hy(EkLRu%a*_5?ceHLh@mi(54`G*`Lqi&g5zmPCukmOpj&Qvmsl+< z64?!sQT3muiAjOty5}r%*RsK($5i>O|1o^saCferSfY1|qCcwkc=mmmvN%s<P&-jN z=4>Mv`i?4wCN%bd>DSKc8l$n&1tM8?p+Ye>tj+~cJltlvsC$qe?ak((lew{?&Q%(; zN2zGJjw0~kQ0EI#fu$R(T_ab(2sjz@)4$B2vutezUIpGP%oOt!$PY(Wx|J>GNtzce zHKA{C__>vh%=(Q8z6U3a<Yw5`rZTqAiA_G|C7uUtKQ<!Zc7>|h181=KmRhs<4X2q} zEg)8#f4IP^JYDcy>IwQ<pYms4i$h+8J(#9b3yO$9YDndc7^hgTUixKcKAEqH=XpZL z18T7!fkxl^KB2W8LJa+0{?2i{k<MVKr-de|Z--?u+!f#$Z>?_dL$KI3y+3C*5@9Ww zJK-!1{&9OCiWr5ty}chJusR^03kVH7#g%-1^N?Z~`M9e9c)sUJ80ksO|1GfoYcGgs zgJGE`E|P@xsVebV4G$7DYGOi8Eq0UQ|FqcK4;0%8_4lmPZa=4l5jK)o$EOl*PT>d$ zP`=1{nxkhVJw9nAp>eZDO_9dJ&5m~@f0J}pHiLtQ|2&7mca<a;p1zS;c{G&7O?q3O zBZ8N5sJOFse|U5>`OQ#O2logU7p16+H#H%gI8v^$E)T}0HNI3^V!_Gn8fN1mODNLi zY-c-Y`n#jM)aqUE2h7iQxQfGR&>z@tma8~T&venK<P#1J*jh%6wxa@i3?QQqfuBS| z4Ow#^^&vXLDu_7MQrQWq&iE0z)JH%=_5b{ALMRkW&yRCRpgbb4eP1bj^bZ*fs5q<# zu!++)JWHZE#EPhxI^IJ|HHK*w6{9PCJX}C2Uedbfz4g01y<WNbXjUqYf#CNslla?b zy{&mIW)TOq`*vh4sh@cnwOq52y-bfkuD@OrxcfTltw{Y!=xs>IYp{+fqHtri;+>27 z)*peK9sEJ4((nClPT1CP*GFvf0-}#8K%a~7v*#@}_QKNxyri7_E6J6hMKhIu_p1Kx zM9{*>)A%r_*?Y*XB^THM@5})fO2e9N-rs9l+7gXbL=FRwWq=hi8~5rBb>>Z$5auic z9%XEhQNH#<Vpi3yI6wy9y4Yoz16NF0qD@ij+zik7&|wvHNFJ?yNMKYK&N@L{WTN8} zH{xH`q=J-4lX9-(Jm6*qypn=Q3H_ALF1v&)jeZag02YMLphdAbc}?HASVAFK&spMC zK2)ld)*o+xri)&wY`zGLvT)l17}3JGxHcl#;;PR<6Dg6P>v#>0r1gg2aCk}JT#nh} zVc9QOSOC97%l1v8k`J){FiUz*r{5fC5r(uVhaRpOuy_OBxD4Xj%WU6Ca_OY;m-g)Q zvPi@LHd(A9SCb8}uH#lm7OuDCiYmRm>)bzzA}*3K_OU7PT&-~ATBK9^`@$*0o@ViY z>O)D0B9LHCmA4qED9(^AkION6ym1Nx7f`fLbaRC$Pd}Pd`i#PL|9B-aP#A<qyX^gx zgDUJciVBlGDoSIe4KADdMsS0)t0uI7ZF)jISuW9?h}W{aB>0TbjqQ*xjJ#@P|6&y| zE8FYf0Xih~{&UhI1w+Y3;ra5kClGiqa3DZbItOUu2Ji3{p#1LX@Cy(!#(bP00eV#Y z+&yNHY$^tfU+2=?JIi-a${fsIz<6K6Vv2HLEPuUqf7w1+`*pHGkd@8VuHSQw$OP{3 z17<#}`zhR(UF2$Sgi#<FBs{=a;mr8<pl1?Th(N|ThCiLE08&WG4u^rgfa<Z3AtKay z!ZO#XfCYVt|2P!SJlfPaPKciLEmS{qoP2oNau_}2pM#PBNy-qphX~=%m`=?Tb`m$* zVK1hRGW%^0z`rPXuikDL&yLJOK>6)9e0%9U;TCk_cekNhs+m=`w300O$T3&o)vVuG zZ7K0NdZYWTRzC4Zh}27qPJFExibE3Q9^^5SJ-{F;`f@LR7--`lsX@(l-g?96F@J!f zJ@Jn~sn;#UlKpqf4`AN~Jl^O^kW9x_+ZMmV2&(>YG7$$fmGHkn>575EsF83`qx5p( zt>h@7fB0YwL4YAvAeT#*nY})S$*?4yv$(Y~*u~8jc#(q_oJOSroxU!n$TS2HpBvb7 z&rjNYR?$36_TyK86GD4vg70pIZa-~84nW<}>KvMqBx@FvH=JWii3~h7>y#1w{luoC zludP^PmB8)-kf}4sZPPO8fOQ3=}hq1BFCS>azDnYiL^N(nzb1(5aWn_xPk5woF8Lh z9Nq)sFSW)R13coNzTE04vt{P&^Ni-Y3aFQF*6C$2X36jRuW;%fO5;`Cwq8_YPony< zett3FURGz7DNshPP6j#t0CG1Y!HOw<FwnV_+sHZ`=lyCp{P=2=FhUq{#I-}SPG(X* zhDCTiHRP=~m=uk45UH&$Y2Dqhv&_i7DQ8bL%9;&U%rLneuPv|a2%GSI+in!{l$E;9 zS%u-J#)Q7A|4%crYxL`$cPOlIR(YtWsMVh{<axZ<)pL963)a36T1a1%7ct;|5Lf>1 z?noCoBsFHGbWztjxs=srtz4b;iF=-W2|V^pzAw-u|0uCPxhV#5d)MqU(<xMEcYzUC zx)1>AXq~BfWzw5WK`g*YrbLGvrnhrA|M6V;rLnNatmx`~#Wr+HWOrfe=JG3_2Ljq{ zx{5-R(`)fZ{8{>s!wuk$)BtBIKP^fONRcoPai922$$A@QV7Q$?_UlF9p(}!-ZBGrk z;2WY|c~*c2zv92%6FgbSeg$?D5fQOGfmsLD%Kb6|taXk*ppNA$SjSMSVj62qL|`Vv z_ffc{#XI7hY=DyE!`Jlc;ftGCjuoQ{G*QEgf6|wV_o19NIepc%R%_LVyVa+(!Y{m+ zr9`B!*XuHoTz-Y15l|;F{pT|SV*tm8z{@VtTHucX1W>qfctNvBiLokV&A|cufB&6W zZlDA5`1C|`ylnmbJIL|8Ykgyjn+Qn*GO-N@7dM0$EVVv(Cze3(f|NK}oDHQbw^bG} z=y-?888@(6QT0OtkM6--tPNwGp;maMf>+G|InH;hPJD^owqwh5CIc-@g?<~9Ev7s- z9d1fk^rJmsNu!Euy`kvO#2AGF82Slkkt;R;b}HP9$fNjk)+~1)EH~C3{ANkPNw5qj zp^kkMsA6%h-Z;$P*9-S1q@Oawmuq?ALQouTcaiTekNnfFkG>`f*>&N1j*d!ywYWK2 z30FreuDM@8XHZi4NaeVH2@GhJ8LG_n9C9A`r<b6{QYzga14&n0yrXlaHh>ZW82X}e zG}?Ezxw$GlG#{@B^}u7TZt_1T0HLsOAJ(=8;*}Y{TcFi{i$^L8^VrrI9BVfm)@X~x zsiik*Bd3g-U5v8c=`9IMskV88&*|W?$Xd}p97ewX?uL!2wyF1S#jo5|FpqMAv>NWm zc5mR|&o2VQ1{bz+sU1wEqk?Zt)~(**IN&eji7-(a3|ARrau`RUgsJdPOC@R#I+{g3 zf~$G=?JikyMJxTS8r%q2B*$jI7Ncc#ibcEsnVOu%0XO>WdQ!L(xY5FSP>jy+fWnN} zhUoV(wOx7CWpC)l6<nlJNho!^*wE0D$^os>Xd~G9_C5DR>Osu_?<5rO9{8N^+#m*x z9g6AuQcyU1i~Ht9M|be;)hxr|V#|9w5W9bt5vs%51!U>tm4QR}bz~F+8BCMo#ap}v zo9<oY&T`#76rhK>I(@{B47J_@2y5Dt=RV2SS;k0UGMkWeY+8dv1uG`lAQSx=;CjNJ zokN=a!wZabYEsJ>&&r<~?R!Fe#bnC3Ill?-yk&QGUV?Iri+jMhBygsUwgex&2U;f8 z2QzE7D{xy&OEff0BDjWO4(bICR{DF|)V%S;p{!Ca!hSw_YH&S^Bcn|=dKt#7+9UNh zOUrhu{2Mon-vD<YPkvEuw^-6~RH`N5U?jAFC4qzCJ<mjbTIFS%DRayO(iHJuo^H}g z)Sn@)cIq$klyVUcDJsCJZdoEIkY}N7<|w0fN6UEWDy=D?K+0IEPErNREOB7$$*F=2 z2^;!KXt>sB8h&_qSd@`gv*^?L&Oo702@oB>9?mtA&bL$YNh_NY$m{g-@OU+8K8qO+ zn3XP6?hJ(kNhfQKS2$(5Ta+3%jW@^MUkpbwz~rtnzl^M^%ogyI+;4em(>^Gc+#yJ) z)d;SkWUp%07ZhX)rAd9<j6^5;g*+PA^NrN%a`MDzE{{_H+Hl5B?QvMY%53u0jKzw; zyP!O&y=0W(%e&P6Za|L_EM}6mt(3@UDUpO>u{S|1moo_S?p@E`gdw#>AuceeDYGn6 zQRwo~F3Ox}4zrM<c|3%Lf)ZRLGyT0Sd-4kcMIOH$Z#Fyd$1Y$*om<vwdGjPbu$Yy+ zhpf(2DuHverS!$>^i(GVj|(C+=_^>%si@U{<(cw4M`6Lv#91D_g0TIrKdv-@Y)EbO z(Koo^uy~;w{2S=F4pJ!4IW1cQ<QQS|EA?uK$($FBv~+Zrc=SkIFXv)D=8;Nv0NAB! zdyuK#-M>4PTZ$sYGSbm4MsMDu)NrUyH`6Y||9FnciVXy23Wd(wG8jDOo?cxkIL=9C zki!xcwyFgu+U|QU^yzCf+u;ErdU6MyLLnKw`Ia&%7hlp&ri+#Ity;mZ_diigZDJ2- z%HoY)c)Vp&`Qr<|ns^fHk<R&XuRy%EygNr{v{=T?1c!A3YVdNa3yjA)*T#9fyMFXc zbl(Wfn<>D2LbmxWrDAbVpImN%RR{DTm*p!UU#%^xPi{APN`9uhf2vSHMTjD(UaIvO zxu4?!Ot8z3oGwF(5B=H*SDw(SRCVZPV-?W*78JicA7mpKu1MmC`y;#*P1m>N(5Q~j zKEWKZ*+DK?7#YvUe>vT#IVw2*fliff+h}*Y<NoqmYhucDN^#3#3>A{~B`k$~uVGhm z#`F!N(V|ZY&jw_lB+91gOd;Zps7-NXT`zA|)+}*b9IDHP#VI}FV)KoZPtcv<a>Lic z)!p5I*cIwdK)EMVXdr>k;kb9Me~H5gg-#U%4%7<!Wx2+?dUkU;_eBE>2<7b}zjRcK z%%BX%V+|=u;p&N4BepynCyn(VxHagmRW3J!rF}kQr&K8VRU|fD>_!JVco*$UBE?;q zy_$p@o(k$-dU*;Kv^ALzfs4P2$cWdvy_b%$`k_zJu88h}r~H`F`}8{>(=^~aeU4-b z_THzcpOkH^4aT&6^q#ffq>$_EU^Gi{f+B+6z#BT%#uA69_(%wgpoY~i)l_8N{(3pS zo4Rpax^6>S9bs=!03wfpg-jv{iQ*N9IZ|->d#hj}ZM#OhzPJ%E;!~dLK%O=)KcCCp zusWZl5Km=9j-^tN6;Lcyln89gadFgYcJj60aMIllp_6IV)WBtNh=7`eW%;p7t}vV_ z^b+~15e;r<h%XgX&)|FvA{}<S+Om-^RDHwsSoa=)7Zn{(qM3Inf=*Q!-BZUbQrO)g zv|Ksh4qDVgn;g%zr<3b9wHk3JS`tFs(k^+TF^W%-VLgD*o}SwgGKzM-;3$ikn$UhQ z7m7dpO<T)ruJi$LN}C;ukUK|C|3a-Zc~i62FU`yzmeUCy>SV4D093BvI$z@o?FU3x zo)Zx1u&dP+%{J??H)%Ogwf}e+)(~|FT)fr6Czi=@V4zN5ht|}*8H?=dzQ5WhdM&^t z0>~}HmlRB=0c=mA!7DYAKF$-Q>5qV4v|wPQ(_Oo=j=h9AE5U?u7|Ck1OOKvEmnB1d z3$(N>a9zH-vehAA*d<k)WPju=RLJ)NKIIh1KNhe!7vH|@WWon4z$;`fFu8OIqvcxB zr-30tZ83i0jI#75Fc3Rk?Ru^e3+XOQ)1bX?KnY_M#9_)S4I4_MBiJ6iSDiyF8*u<0 z)X^#t)GG(3@aDNqnMU2Y&oNm9J6hsNVfT!7^(X%BY##2-O`|!k&{gR*7j-+2TEman zE7U6DGs0M;EQpzQPmbGFlu|Rwsx0nnkOt$`HFiS}rsjLh0}QtP-=54Wa66&mXp_US zZ18Wl1v35KGyJ%vk8xtQicxE@*>9>JCw^=ir0~fAskBj@Xoi{5fHKT909RoKht*fH zxg4&X6~ZoOQMuSS?Dj`Io%dG}#Lf;`MnVll3^6@HSw3PO-*L0-iDekyM$z^sJf~{j z9lQk&8q{KulZ*wlRNU}^CLsO0cQuZ4(WzJPny)X<4CB|`(ogIzK(OAx)5F~N*|4S< z9rI@9<=$)8j$QCvWj}vV*J^aNhs;;k8hfb2jG4ok!a6LpuZe*S<AAy0?c5JD(3#u7 zoZ74J(SP(H!dZYKK=NN@8H%voj*QP+;D!Bz4o8X7t<|pCTqQ+hTz5mz)<9tZQ_cHN z%Jd+}Y>5NKhAlhu`Cn9lgURz_-_)x2ze+=DP&!>E3d~>(B?=l-lwE-dL|BY}L7{}9 zSuExe1sd_4c5jO8*O8Kxxr~4JK$&&2IS^eJ6;b%`av@V)AS&*-w(<Jr$Cl;(q%kS> z1?O}7KnI=>_SrzQx=IX%hUyOLe3pn_k$SaiV2|pv8{n@bFROaBKVJXE?PGg#=G7&t z5c!K_xQA5AIqT!&W7|4HysHP)!SN)gh?S7`z%&7UqKoF;Vx_QjuATYeQY`^BwzV!p z?UyC_)tG29f<oE)cWxYRxG8Kl++smy%Po4)f=&*3Fc;qb2os@E-jt>3?p0R6Pq5$c zzz^KEDtjTv25PH}*RVgpVQIf$ZqL3kpORl6&1X{yqUOx4Fqy^`F<MQiJwDy6e3B-7 zye|-q9H4$>Z6Y}{(leAa)~F<9%YjBK4^wZw1Ni_tuz(r!i9@H7m%gia7mKF@U$s8V z%4C^rG`iP3pRQFiX`dpA-?>Dg%w1jd{}@CT76@N+XT5^EnyW}4BP(9XqEM9i#*lW9 zCmXyylrdj?eRex41+v<ta(Az$5Q`g}tvq>>7#L70{bi9de?O<sijQ39cz`iKYKXeB z`Z?zI!VH?j76~<j!QJo2dM?RreyTeGi1*^{75vxE0&~(Jw4UMD{*$2#^g$?+&n21| z&gPM~+vyy!2mCT%5Ci_oVleF3EQWdL&}TDJ4ATo6%Z00Wy-K>Xf|7Ta%<5W<EqC<O zN%k8SNRrNPSND&&9XQ^3o)k(qgy}V7$?8Cow%r{4?`tB|JdUxQ8B$qzsAv|#?{+)4 zEOEqPS^(Fp&U1r6B^dlgckVG3skX5oRZ4!{Gj}Qc10P*LpB80JY1l+IA|d&x7ee5; z9iSQZV?%gZ04_ub>w-ajg*fPWji6VRQkjrT8D^WHvpX0-<}uaeiqy|S<KEmn-}x84 zZE0&o!&A+Z<_RLZRvgPyeTxxfz15#z{4pEV^=vFjIcVlJ<nr!yV?=z0+w<paQQi4V zI@^b8--k)fXC8K)brSPvCqxI-VZshUl|ThZM10OJ)e6kHCjH=&W$K?RT3Y&|@#E$@ zzVeKAuQmPCYQym6^;RR&F&SLyD(rM1SWM$?z=A9hiufQH0_e1{!^8W)C&Ow+yUR}% z?D^glG2}FkW+s8e;mqIXM48FQ^Lq{4gN_YN-_yiSCh-Rlln?(T_CL3tz81o7#Jws> z6OE_z1yYdR39(mlnO;70SLbN?QG-FA83IAta~Zy$L_6kwoRcw;VjB)5PJPRijbtt= zpZuBeVt2As=n_(?Ka^vEHkiuVscbig4~DvZ+qMrB1D1mw#cu1l<_=n$Nl^EWMH<uL zjBbKb2f)D6$}FXB@Pkcd0@q7N2k)MrmV-?h&4Ek@!~Y}ft;4cvzpZUSLIk9{q&uZs zx{>a@LAtx8r5kCaySux)ySt?uzQyzW^4R-(_ut}uti0AW=N#u4=Mqt!Nc8(|0`fAo z$RSz!&If}t2~|IS7H-~^m+@ztZEGJd@TImqL1`d7bS$x<0xgw^95w9ik<%a51t<Ge zyu9sEtRxWN?!Fy+h7_kf9|HEm_=h#0aV<+7_vb0#sp4!UK4?X<_A&v+nINosMRMS& zK_>h|#C<4vWMN$UM>MkLy54gvmJ($$s=dZxN+e6#rre34F(QlA1-TXc{*uri^iiuj zyW)L)>(l)ubux^g%Y4M8EOI-QQlZ#O?U2|sPHtrw)-5GfH2?E+<JmN)8~UZxfx7K) zf}kh`#R<t5)G!QG)NK6wy{*!zt@<1>_V5%Y1-E<XCwXMId8V)OPlS;{L}w3`IRj1o zoBgy^5&Fxv5L~j=edwRKD5>f}k2g^W5#?!=pgVTe%JDn)1PM00M#lrGn23_EL+B$> zX~&ZDm&tvHl)=`!`HtbNyh1Nq4+E=&oAY6&%NI80ZJFsWnG{>C9<E1L@<Z+=Xur** zk12ThQSxvk;wZ%9NzMqY_Ac?TO&`Y@$jL>U$&%xP48}U+X>bduC_Pcu^I%kQPru4` z?31tN@|gT?TZtc%U?yYy^}1ToBAdiqV4>DbMGe2Qypud?PKhQ0dMWX6_NywP*58;P zT@8OgHb2Tl5pt<T4Oy6SMqOdv<KQF_CW@quR+7p-dyKMOGI!{Bz^J#sgm0{|7G9As z?<WGfyCOfV7|O+l>2LLA_E&n*+EP5i-rCTKk}`kx@!LGB)Mq6*2IC>N(_(2&B>u** z!hXCy?km?&Dh)3;7!uy>j@(W(sbA-=9!-}*hR-k8xJA%CM3HY!M)-vmhPpZ&0a*@9 z^M9U2?3oCgZ8)C#uX&TQhhxZ0HoLE_JyPx}Om7g<F0ZAo7e#Ksyjqiod(%AMRkAUX zd%FM1N-7b5dhgOxM~x))l0mP1r%Ubf1;^E%%V-pL&@8@1ci}a03J@-B2u4jr7XzBg zo6$9=xE8;LoO4z6I?tA1@LiDF{<`?5tYlS+@6<od=3WJSA2wdPdc$YJ-dFmJ_jcH| z*pyp#L6MGoh{v3JOcr5?gkxoye{lw$4Ufg@(!+_fvw^0>B@^k*psUl>ro7<0oqahL zbdE)K+u%d>kQ9|!P{2E{+RB=rH+Ot|j1@nhii%=p!s7>HW=0dM+RTbr-HgU8Z?c`T z&Tk2Lq&tVAH~GAK?NQ8MQaBm|E|{!B2D-Ntf_kq;(b1@S{L&sr{e6zU&2@9Rebl&> zZd$E&()dN7GX$z&Z$w#6oPw^+{CQ|7qZUL}CYepnqut_lK|%I#f9QZIGV1EX&}ca; zHALlOBgG%jG*iEM-m?|jhZDgC$k&JgBViGNzs0|`B#2KhjP`UlCBCV&l5=r0J6jP- zexOTb3q|`Z%fKMWa9)iXeU9DX^oWmfg})8doOaZ3Q8A4-`~R#w&C`e~oi0{kSoCkr zE9yrjk!Kw(mp~V~E57fMi0>_4u$$2{2b(DW`kti%e@S{c^_oSRj#a`1=F&h`GM-Mb zB_M2~Rl#UwTQ>LbOKp0|hqUNGySPIZxsva+t||11N#-=Rp5fq{wayvArjF#iZxv?h z1AOc_7Drievg{8l2*najES95LNLgkh8GW-L?uN_AGDi=^G9{cHD#h*&-@r^QA+sdS zaGuBovUYEGhAav0Pwb0NoWga#$gQ@i2qxHnS3CfYXoIHyS(`3C+@pP--Cw_Us9vt9 z8`g9p9TUhs7ETBm18oXS7PIM}g;X(*Z+KQ(%VWOH&|Kd%r2?EQ>Rf^F9JX}hTn?9( z*^Jq5XUfJ|<4tk#3Q^#FayXrURkPjs`a;w*USQ^Am|SJO`gl3sc1CW>G%f*<KCORh zCCodz=p*Dn<LS-CMU&3?Qt3{0XUi2zX!0^}Nb7BT>0UR9uIIMJq{uL;;|^rWxNX1a zEwoG0*CZ>$ZHX9tgg{h0WcDWL!E5pa?D|P<=_LNB3i>wkx<*O_#9rwUR~~DHmGHPv z_t8caa_vaOZuLQs{$RY71C9{v;E8`v7XY=2$Y-qQsIZ{674`eS1B8Amfb+I`ib=*K zs3kvLb4z6@C~vEkf^26kUNH9-X1<Jr&f`ha62gVcn3)Gu%t_LmBgljF3Fh|6EVGJ= z%<QXhhWB=M{J+y`bX|6G7|J0DP4t>8=~7jA(TWB&MzPWIy-*FXgW0voSzpn;wmT7h z?O5)fI9w$ewGlEj{|UkU>8`@-h9dlwef^0>Dj7LX`r4y=f5OzK4}Ybx;DbxJ?ylLa zV&%5_7p3n4D+KVGP))U<S1^0Cx!HAI1ssokyO4C#e&g=V0KTSlZWsM3@us^kB|?d| z^YxarRIyHTELNMb^wZrDb_XV(#Dmh?11y#%a!pWT@C-8&$Wc55(=A$=H;(?v{!|+4 z#q=e`Yz*qKRal&XO_#~Vkrhk77Znw~PQ*(cE8m~((r5G%;q$sdb-Z$F6!5>8;9>6A zo@!NDoD3i;<vKgrg08EsxLlc<Y|VAO)ne&93u=BQMt8Cj?smW_sUY<aej*_Rpo5>% z;Fq&5#2g+r$VI{P+4x>Z64-V6Tl8KgiEqlpc2n@DuAxZXVZKakR*Rdj_Z*c*eL&N| zVW|WSRO6$p;I~88GB8kmg3=onq6?-MBwAjwm|sIF9E{4T1F}f2a6+#eL8=dnBVOVo zX-A3*Ko&j1#+BUa%aA!)JVbQk;wtwls|hNL5fLeksd1ePBHe0VSh#8RJ&wX%F&L;p zU#TQbHvu=1Uf$mvvrJQ+Rvvh4U{htMQ!VHBBRX5Y$7uk_zjA4y7a#sEOt2Lx{y)H; zr2HX&h@ac*8d|wlP6z7fC6MTC_jV~gR;@^C0#?xz#%PiJOr&HL?B1UvroLZfJ00r{ z$AbaWN^_Jy`?~=E=;Pg&0Yn69Jb*Ee1);2Pv)uL`fIcymcbwr%x)NtrkWO!7{<Tj9 zq~jC6+Hg5B&1g@iia2LUPyXozKz>IGeC;Fw>g5g%2RKjS3g^^rk@W2FZ1K;)K7D`j z9>h%Clu5<husEbbZv)hiuE7T9J}%-Y!B>kEU@skm^x<TniF*E1&3U_RcFr2h(poH@ z@lZTmQkR=2VMV~SdM3k@M8V^~86Ncs6!EKWR2}Fb#ujZhW=2QJ2Lr!$0OB#7Y`VMo zk=*ubX2=q=*e>nWil07}-GcQ+^=3N@2^ETM4bbQE5pabct5szJfiX~*BsF2OX}nou zOR&bP`Q9^Hdp3PBbQkQX6Z57ig+Hhb9O}$RoCcwS$-j@KvmxxtB<J3&kS#TFH`sQJ zL!6~}zph?mbHX*Xt?6D*g%k>WdCl1P{O0HW*M-|8k7Utc#pN!iKX+1eP1yh7{<0uc zZ81eQaV^Pd;08XGC)F$K=9ppA1!cTa2{~J)=AV9GH<lnAaH8><l#B#if;l&j^=?-! z;L5T;iIV3NK96M;oweG*fDAc{Fm@FIQAodeP)Ae;dYc%@r;i^6K96*?$D`5@1TO6L zz`iJ@Qdm%$J2GYeh7eo_I3MT7fZieTv)Z$jK<On%ig+62SBIn8aB6zl1XjU1%Od~e zt7<80>z}3UIv3(+eEQ5EcZWnXZO~V4vRnTokio41n!jYde2oFMFhTqXU}sS7yhC+$ zun37`B9oDdGrOgLfS?7K>6U#%cW#7_Lcg=RexXg?5@OiR70b5CMj<NtYdA(2$qrMV z3MT6ZsL4ryFalM1lIm7*Hw)Px<fuCXqNFfj3J|fzQiO&y*i{w^2SonmN9%g1^qPnb zb_Q$?&ascLPOo5&3TkM<7{X!<LCsfUbbs?f^lih^%qywE^&kJu2Tf*+hh3bWc{GpE zs$9T&-wCZ(8@)5FUs_!qME5veE%0rGYA6m-Dc#)D0hq@OpThlr>X7B6{g}SfYX@^E z<n8a~b3FH@=S#Id6DXBp5~df=r@e~+u7U7HPPxa1c(IUGV?*LzsuJew^HeeE-emS7 z2E9&iyIj@*l$mMqZ}FJGuvb)Iw$z<MDmin_;&QBN|By{zTdJLt50Cu?Y6OS1dvQc# zT7i4SIQo?CWU0X8xUE(HMBVy|Np^VnviHyRCZq0;o^Bxi5Hl5*0^+YZ+20ovC?tX5 zi8I8VC^g^3;Otu%A%}uU{V$4OD>n1ags;yIL}3jrTLdL*#n1RyT3TWZpZwUQXNTlE zxGD4TR@!TX7-kp$u!dSt3Mg^Vp>}8jGp7rvy45vpYMoVJ28&Yf%7v(vl*spWeNxHH z`gq$UshQ*54$#G$2J#10R1H#FjIrEx9x_~aBoY_~--iRj&OR--xS8&Owb%CR<hpN- zLV!|r3FqE+4{GU~R5}-d%4=gr=@RQmQl?p8?O_6c@KxEjQaIkMeEl0E9<Ku?SI1L7 zaF<Kn>)sJeK6eVJF#JGi>R(fPl6NB+JbZYaEncrZe_lNFig^O+$27}-4&Dlt5q3od zK(JVLMFTq<0(zaM@P?^2{!%fv`evOwA+^_(o+0b)ZY!~`>7pz}N<H}<8~TgcSUOpt zqxgiTE1aj>J4(+7o0tr;0t>VJbiU)o_b=Rsixqf{4#t6^uROg80}2)TFXq{q9JHs) zErDg|G`$xMRX;O$G7Eo=4Hd%UoTn_V7K#&37raDmj>*l09nSQYd#2~R*4Xv#-9L;Z z_otI1<a)5mEZ7TK7IUN!6BL#FqTBo#_V`q-<WlFuAM<c+;x5(k2kcocR|rN+JPQh; zvqB-SJf&M7e=Fss(E(PY_N+Zr93{>I(&{mSJFLb&Z1-b-G$Ts<NMcFa>H(iV3HDr3 z5t#*_^|sNq{X+dlS9?6>mtFdDfEMKxW}fXIYWkNN|F4Gz_yB$mLexE1MhU|+(Z^5w zQ$-?-0}avKacoFEUZ!DGMI6r2nIODZjJ5o&!kjW&I$2p*)@A|dG<nSa>=oah7GsNH z04ozE1ZbHK8t^$|<e{Rg#b#3uwKl)bqmB0t+)Eu&sVpi%MGbbl?_je;Wm8DJ3qAp| z=+44xoB<VwU}W#MrD}h_LahV_TXxUoDhwCEy#4TU4A2gW232c*CP2Z&^y`GY$g+yC ztbe}M3cdYsyVPp?OwXMMqqbt)sU2?FynYaLVK|iUc$|~>$<^sz6-KjnF^fs$!Kk^9 z0hi+iXO>P&C~arMXA$sGI0tOFLx1CF1js91+r6mI6m7(uYW4HYf_d<WYyc@?Z*toU zP#UihFU+3Dw;Fv&LE$2c;Uuh5jaspVV>nEXPw)o^X~o-l+9mSBG%t>5y`OM`3##_? z`OEMn7+96gZuu;`n(6bX2%DzJpKW%>>_{+W_&F<Y4_M{}VFns(x4%8jxwj==czOdW z$RAdyG#V}FIx<hp0&ZEHXGly*sv9<MfXFq3tJ6WTWwF$~D>{?W@J~j;z;Rb?U&zbs z-V=>lMK)`=@4v%J4n$-g><^|bof^gMPbWz)ZcD@7#MIJN-%Z^*p6)k}j9T{T(|UVH zea!z$EG0Gx!A>O~jVLAtF^pA3vw9H{v60V(?x-c7<Ks4<-=D_#{yU9k@cTAg1?}!! z%yJ#Zy&ce<DxL4pCR2ksZKo;(NP)!AOP+lFkqXsBA^EnByg|#>naBCv&8vg0t)ge! z@cHD78HGk6i7LacVw<uw?(<2u`mUEml!sJY@XpK>)Cl%8dBsKZVjqgFi+0P$n*nK2 zHcwlFp+YV)PFU%qxvq??K1Jp5r{}&Q*f?VWDL^tSvoJ9LD)!`!&nlm4Y?Mzwp=fMm zA9d57MH`@*zYz$DoIM%WV0XEpQD?Ty&kS<87?A*+_Otg*;<D(2CNQ|mC_32brOk8c zc}111Qn6>ywxq5W)Jhd89W=F*Qeu||mS39p3(UYo{ZwdF&_}Np9>nYD?zTFGS9mQt zlv7-AFPviyaKKp#m3wN>X1|fRIE22qSB@U`d^^}NP7#R<My1MLI!T#S6Mnu7_=o<Q zln5Y5KEWSNPwZ6Le<cc|B_;3s4-0%?bYlvhcmSOeQC9Y_5ueXRl`4q};aq%?z(QW} zvnVr6eBL25s6;?~-w>=`aYCR!mY0?X+Y=_xlP7%e)KJccThcDtxf{QeyDF7HT43+` z4^ru5R%Kgy+fTRyO}RExNP~e`m;!Mro7~D23ZDgSqR<fzQXnuXLHdV>KcMgo9ncvO zi66$AVG_+v<8k`BAbNF)Swj6KBrR2vu`#!1TPpq|m=*Z+VV}iPe*U`UbKr075^T)r zyu3!3>>ZYC?KVg0V$D|`UOYy)wr|-CAu~@Lph94J6L#tey0(Kj_1U40!-LikDbEpF z+Ld<bQKr#Qt}{3Hegxidw$5z3r^LRX5>M5BJT61*1r76AG`+&rPE@4AoLI`#NIolk z3p7ef)8zD*ab!_pvmi(huFXO#t@cO#kgC~FE)l$7_{2awW9O<Mw9Vcs&kB56Kk1+U z(tNYKy)-x8|34((3}1hw9*K!Yl0a;td0UGL4<-FKJ!<%2CtsE5-}Gn}K#vmSAKMg5 zx5cFpN1AAG2HU$yM5MUMWq*E5duX}nOK#^^f`;uh(Ud0)vy)Jy)WXG@YNE_Y07iKX z-;oBrn-%UwE9d1C9Mnndkjd5$^`QZ>(AtiLez9I;hALlX?)9ZhG&ZMW15e`sTMFiu zDJOQsk1*SOLYKlOn^x9!uGG-(0#Q55oOU<HL%?1^eU5qXVgp?G96xv9A^>5(=o8CK z+J3whRXR|P<3C^lX%=0D{&q78=sNB^YyxsLB*_xXfk3dXC}MIANI*cK-Lo(3aJIM3 zj7|5VUe5Ga!}Y~pS;f`G4)sdu+%_7)A2P&5CWCBGo;iy;G$Z^#ZhTTT(a#CTWb>~Y zmo&S1;P~V4b8wcHh3o%Po6k-=Uffo#Q*6sNI%c)C8Ni_Rs0Lf|<dy~R$CKRuYxClr zE&Zc)i;Q?i)o&}C2X0g0Y-WsZtF1+fHI4w@5b2cLrJDx`78KS_<Q8N4;H^s5K8pY_ zxS+Vc;)Wo9kY`2xP!K&9T@10`!qI#XzVB{duCEDrF=Ftvn<UZz6@hG~=)EfDEO*pG zxQ`AEg_%!<ax16U%bPq+;$OOUArLwO2T@!Z%MG>mS0B<4#ThE4b|(`3m$9SP%KUX4 zL3*7QCQ6xmU=DbUF%O=h74qGnj^WIg)o3UhvhBt3(D!6903ddJT0+w&q{(mAb_~Sb zDiwHc33y3lw{GPo)bZq6a0*{<*1WPPU`&UDILeho)0YWEm4=}oRTI{n_8AVNb09*d zIywkHe1cJSM53Ox;7^S1iOaKz_$t^D16R4?PkT6nZF_i}?ko}$Qn~KDzNa%S?cMK) z9dA85IOnzZ*GIzv;>ox;?9M#1G;-Qr!C`WLV(`JAt=4P;ck26?T<g4Dp7hjCm4SCU z3BXjWO_MkuhYkB&v0u!O3OZ88lVO4V7aZb^0B9+mHk22LAdqRm&^M@>n#kvGB)k0i z?LSzPFp#GeheM(ns(mH0{fO+R2JwlgBOxnCfHFG#gqq!CqTd~EZwn)&4=6c(zJ!dc zs~x_(e+v(YfdC+0KcLB7k737@s4}$fa?KfErWO*53W*~o3vO?`BCsHiI{XWv>)}?o z4$L>s0&eZ;7*M*qI-F+Xnf~!O3SS{{PRlV{^oE%D26w!&<?D_%7~d;_EbjIRUna(p zMHEO#Cf+Xim)f0c#Zhu`szRDt>dBU@(rCnow5oM7&d{{u+jB`WYlqR45mm(<yzqYI zXG_aX(A(aQ43CRg<>uG`{v6dVS6VsqJVVE`XO?Aca?gm#{rmtE4vz~=L%Hk+a8DN1 zDplpKus8)gT3a*8`F3T}GfyU4G&<Fs%2&bP>VxQF;&v3kimFyoIt5e8OYj~l!gCYm zcz%yP@@3SPv(+i$<rJY-c$Lp~oIfs*yya1U*8F&>QY}n$wf=UU@TuM{BFS0SuyQ@! zz`jl#+=u2Jc_2_*Ml!rf+6$W6XKQEEPuG)U<k2pFMy>#p(+@|L|5h1(@V*oI;e{O_ zN5a@P9~eVWH|u5cSieF;W46fz+r1c)6<gy$gDr^+q#8Ou-gVGgU<)>Fj?^mJcljy! zt)aL)ikh#rpdrnbXf^?g$S*2<eT(!}Nm`S@7%pqIi{9NmGMEVWK3B#*rj1V+H*ZqP z433~@b(gL{GxnP)d*DXNZgn7^FZg?3soEZEX#&fz;Hkg{c&m*uQJuD5hfZW(tHR`J z8uS`E4AAK3iA~>~5S3PTt;02C#>VjV+|#cpqUnXVwJPxuV7R@`!3BH6y9Vzs*Ecu8 zt<=+NoEd}BsH7af;L%!E2w`i4%6vk76GQwL$wGqvPYzrZnYtoD2pP?=xChrph^g%g zV8CVX00!K-UrZKYz!7!5!=FRFI3BSbsD)|gMJ$mXgK#9dO_CZ0Vs(dighlI_70W!` zYEKsOifOJcE3Ugb%W{jP7vU+NpPRWoPTea#>oN4~b}mk#h_kN02=|B&85NqpnA=Ml z;ZN;P7tL55@-!}Ab0kwKc=1K>;Rh079w`K^4dG5K*SWE|*H~vX7PM>6DN!p50s8l1 z)B2yi${R7h|1=l)_gMu6{vf-voo1x3V(%PUlx)jW*Y@1YE;-tZG6Y%<!^Gnia@g)w z*N~<v*0~?FFT<sOHY{9pAQ$}%$`a{TbplnIOX7@Vep%}dIq0sv#<{uE*X^@s)QXF> z0)d;`b<k^&A%$6pD*$du|KnnUgD1T!4(eMb)dm!Ps>4fHzpgL)-)v8IkpK=J#)ytX zuLH^|6cDDbc0_YcAn%VC3Kw66^=Tz`%B<T^0L8xdqq1%E|2!vwc4Y7*=i##?m5Q6v zwz25SowvRd9MGmp`*ceXs5|mWrwhxV2=ONvIQOda^7$Pw?oaq3ggwL#lrVry-1i47 zk_dAp_OSlRITUPM*nc1SXE5Z*v))|U#c4vUKS1LapvQ6WSC*swl>AMoqKU~ql#@aN zo(#IfTQbo=tS%tq{bxh}zkla%!8!tvt3lq^T#-2K7t=z{BM(ToeZPyNAY%dA?eIPf zS@S^vZBHculx>k>pfJDx%wPVmhx0Q&l5WwDs$XlmM_>6^zN*1H8N~wiVDkcABmgi9 zeeTP$Lt9JkMCt+fGn=!o4BS=_o89+w)^;@tF{?p=Htu|GHdDMvVOs%B(^PLQfWI!q zzn_!8jy(oKb$n~?AKnT;srg2+0*GXXz;BW_+<$=b=R82T0fbkU&{xsWvlx7!pYd}v zBbq!2urOf{N^?G_{a=5VFw*)%c{@3gPA7*BV6GB54)aq@T!7Da(i6CE|3Am_*T2BS z0QqHt3G%W3`_KOKKYz|ZL39iD^MuNI2F|1VBiQSYcU6btXq0sgeWIM2%K!Zc@n;gQ z|J4vS*>vy%Y+td;mdL~Y@-69R24w!>CY|#C)12bJZw43=aK2!vG$w`r$ARSnCxAQU zm*f8bK2d&fBEWhE02U?{|BpYELWvCeqn}hB`@aQ!{&f?nVV3K0{HD^t-WoC55dv>j zm!6(7I#nP!CvXe7r~iEm6=_qEfm<kM{~Y_Nhx=`2oK`XYuZwzs=nOml3N(P5KSzdY zWV}=~bMUsd*4ylT!sqh{07S?`u+hZ+{BTI+RaJt3;oLXCM+Kn2!ZOseRe`hEjBZ~T zvH}bc2%0?v<+@g|w32eZt{#69OJ4j$gD8Ov{s3_&;xjh%ZP^VG4nW!7D5+)5leYy) zk!mM9T`At5KNb+^gd;~B|9h#<l;(%nGR}$)tq}ZSrAwmls;W!?+uJwx6i((~8iHwr zCBQ)y4^SyQ)>kUi#qw&srZkMdOo1jgl4|)2B;AU;uO+RfTwS!Cxf1m?i7vQ1vA3|k zX9I?vz!_`l-OjPu+hRDXY3n0;YY$WJG<h{o0(fKS$J9>$GYRuE5=!KUEg^SX6zjQS ztY5f#G(I-qy!Yby2mjb>zD1HELwl=~burk^qWHCVgs@Ci2J5D<%b2BH`&hC6Vc$IO z-U{yfMM9_>3@Dm&KMefWd*DqX{)3is+vb(T<q*Xn&jqOO;sCu8|K{hn<>+5?B;if= z9Gg|xaQ@x@>(}_XLu0m0WXDtE8Iym@rcd;8-KxSp@{t5DQ~VaH_obz@HK<jo1rI8B zo6KP+Yj;HBZgoxpgurr0h_YMx`~AHC<C)|~Ci@eQZ#WzM!ek{GfBY;J^Dw0D=~4&p zZQ%6+-<KvCnJM520dE-!2ouc}tWk5O0pewS^)KRu4#z_D2YCw!0aS|&)KU7uKSbHs zuF|ePaIYHJHYa4_RxJNuvs&NY$K0?o>c$P2!{>AH0W6oWR<XJ?gqg$j+U1-7$6NO~ z14-9g6(y*~&_e477Pe<G<kn<p5jY}R?|JkHV%Y9pKZB(kd5JevMcTDb8GJVT5rJT1 z57ZaMW2VfUuQipFxjk=;=qzx<Z#1UEe<=c=8MX94^Q%-_P)zK@;4exGIX&RA*b3uY z0ZGt)42#fO4W4*Iv+mHqNO0rqEaC}hK%Q2c9NsNCoxK?gSeLWWj9skFY6}MH-QMD? zudgGXa9YGoSQnWqHOBsL)&Vd9KU(>5(b03=qsuhgyqjKK3wBgq%9M08<vED$dg1z$ zsmTE&%gp$gn2#ASeNS|h-#>KwIh%_ihL6_vciIkLu^+^`0xBcmeH#HH4tG=AqUfD0 zk>ff^@qrE0KG2{C3UAzl$wo4YA3#s_t*1ni&uRxE;PVL9dh`lroVZ)K-20F-wmppX zg^Cq}o1U0~p<jO@0d`~Hob~t|GNOs-UOwM;hhPaswb>T!;d)<YuQ0R`>v4HWLuH_I zhx*S>_t<(8S(s(=3-~MTN}FL7(1m$0RIQ@PtYEp?ep?p&et>~LK|aFS;>;5#|Hs;o z=mk@*J1hVMOs8}AM6JnejJCXH$Tu(<Yv!Tbejf^EE>MV}hg=uUjKvUU(r$8r9h$Qc z@@{UBD|2OW^<yQLUX0Uh5n>Ntu(OanS4Hu<cPoB_T!1FfvFZXoi#M<!=5L(hI*`40 zGy1zrKfYbE(K&U%_aX#r!|w8Jh2J-9o#nQ-1B#k*%(XIAY%d%vQQD<er?%j4Bbr|{ znQN84I5(fy1IggZLVPrRk3F#41BnVJ>un)elX)sbcE9MlfP{KR>uKZc+_n<x-I1R1 z^Yl!&yzqo71Il1@s-FX(zRW3dj|zutDu?0UjG*ymJwbqs6@E^&nEegbSZ$SebAR`s z*Rxo&zHit%u)e*W%?r&91^4Zd_8th>lFT1qd|TqZDL&-WFZOU}_7gV!=M`-GQ2uQ= zlacTA>9GNJ-eVu5+FX&~y_=(;?R&W{8kzGVgNe@l@k%UUEEMiSJ^S0RtMQ7s2KV?t zPUFR97`!q&fmB!Wy#8<U1}#T2_UD3#hTOvgt;X~OFpLPUL>=vW{yF9mwCoKSFHPhm zZv5=(cd5Bfghk(YB9*<uX3|`lK3L441q?#qU+2K;-A_1oWnRG>Yz^iri=56dcrlq> zaal_=W#)|U6u|z&W<-B<(~uoNv$KEqZI~$+1<Uz%3FnD_X%*?4rDb$FV7ogzS9rSG z%KfloO3h}q)?rCSPeX&s_v#8xM_0hG3c@T@v{q4@=LB7-RQ<W-dsPtFzk=CXkEf&M z#p3-~M`7CNF(&&hLsKmjk5!eLsgtWN3%$l{=izK)>nP+<i3-&H`^8!&QGVyk><eH? zC@f}75uVNo89qv<)Ql+%Lg=bqxSVz+y|u;UG59QOl&7>)yikt?wEcbS^sFXoKwS1m zh;*aE#-UMY=%+^X>QHOHJoB|1kjX+Xet?2e*IE5q;Je=D8xD;J%74!{G=zig<c8Wb z^33TH=+kj(F-#VJ<Ih?yepGoF);eEt9Zus^n|T;~MGFc|-{>vjqEIM=fVw#Zo_ISf zlc<f6oDg>XEndDZF2f?}56lHR1Ryfmzs3O~XH^c<>tESLKsJEm$zcG^%*|Yh#(bp* z^mnPGd~@o0u-B-(iulr%`XCytFM2@m{rUhfA;1jk1@xrXF`uBrpF%^im~@x_=;=y^ zVqIdiV|OGR#kTz~nT)I?h?uC^%||q}(F8i~nYV%+leXLJZ(lWZE!_VBRT+L`2-n09 z8T<$CMJGwkX6vaIfd%a4kC#D=$FKDu2hxWd)I}!PK^mGqL;Z@oiyE_WAfM4<!y|>9 z5T<t-;qU1I_nJI9XsW3}?_^R~way&raIR21D$ru0(nj#9-f;%nhjFe8oK}<&Fhbc@ zio3z*4h;qZkapCsrrYC{hAI+;4AHaIAa<{oA0czc5+iuEnsi@h!%UMiynOZ_)~YR_ zZ58Zyya`w{y~a-OHjfq>i)rkuZqLTJJo#rn?o^m|iLg&X=;_Gd%ASm5ELuo0><ZN5 z(O}BHnsYmv-^r*6mVYQB1)X?_6CJT_(+-_*{OKZlNcs46>C}UwvdZ@mVTG+r&b8BL z3NVM++z*NgK1d?HJntIi(OuizCqci=9Zd>3m`>+Op6xoDp;kgC7_v~UcPHhnvj`Jh zVl6VBq+N0<&{q>`wcnvqrca7EIqLF%r6>0cj+e&Hm=#rG{NDe$hYVo>+-6bS5i@nM zT0RuWCJdqF>Ku~e%DP8*gIc5Y!}-tXQYVTo`w}j$X|4!3g45O;jH;Ph9se?5A;N6b z8-lL2oJBnlCm9t2ui$b~Pj9jpk8?U0L_?+46r;r$PA6#foLz$hDi?o+w>H_EHQPI{ z0-4YoR4_2G`C1Tp;{*YZ-~rw9`Ibrxrvuzc?LF%YQ?0=Q+kBH1pY6mpn3-~ExeMNT z4!^?jmL%7f8CQ5ZyLT~aj$FR(S6}JnW(VpdHVX+k20EzQCD$#|2k+XeWGic5BFOJj z=>dlX9tKBLo6;`1^L@zyi}i#?l#RwPsayZ#-7*PA{>i&ZYu}y~i6Opp;43B7StDsr zW>bbxfC~eX56U-EOB6Fb<HHs;o2B0L4_W(&hGYe+Q{07_imLe1_AY3ING?&<`Gti7 zV~~cbl65tKD4lI0U4d5Q7f~65QCzk!gUMZ_wU+?k7X0xZiMgIpfC~NR30b$Zhn+EU z!9)xh<p#TLcLf=yU7BCKyN*ARg=v$jiR0A6we|i!V=TP}6t2rt#4il02?g+!>VcVg zx=bKrie2`l!5=mtA`7sb5goem$@1i&N=#=pmTxOX4tULJ^Gf_;*y$VinqfI|_yO*t z(AI;)xX1c8DTAKbP{lH3c+}4su?j6oEPo!;_v}$#gl9a%>F6{HvpGveW(HBCp0R=b zYJp`~#D4A^Otr--D*0HNFf8(_0!QGIzao`Re5QbG77!^*Wu^G~hr~fs^fZM-krn+S z;>9tVNTAD$JdR2mbvR0)3hH{osvEOrI3)y~Dm#I(4ag*=+@J>qSaZFP6F*Cr?+MN{ z?fGaL;>qEvCPjDQyk$d9`5k6DUp;PAN!T24Aj{%Q4^2Iq!@8!VGt#&1B4QS)-cFgs z0<&7ppZUjR<T`t-pvvoa2E6C55aZ&gc&ER15@8=ml-)j}(|y9{EJg_%d-9C;tEcG~ zjIp$S2*ju7lJrW^mtg*`ceWLd=U{XIV1DcmM~ugd74VKhPZM+f#}0@Fgz6A<n$3Ql z%nB7`*rNE7qMjVVrb>mqK-qTBxdG+H;}+f+j!k3n&J~?o-9s!tk*G>G|Cu3g#cDsq zEs#!&F^P;oy}~{S2&zOEHa>vu22AWb!Ci~X#Wp(S(0MGU#a#VZY$Bp4!1_lq$$z^5 zjf1ECw!V3{yZm7ES$8>FlXnD5ZEi-xs`aRlu-k$G_Lk*tMoM~N)=vNvsD+@Hp*JYt z+f!_IbyqUyK_Bac;I+LHeIv4$pa?VVIE;K=uXw&Gx2Ry9&A1nYFc4{-5(&9A|6LuJ zw4jv?-N3cszDf&IRJ9LzW5H4&$7gA~=<~do>jM6)>dck3md7ppt=tk%(>Hby+dF1n zgqJZ!&QHgbJjw)gu@|1<3CwI%mG!G@-_RXdHii`+VbS`_SYRj>IHL&M03}#V3^6!( zCuBX~#ed=-QI@nUGZg6$akfvwd-Ietw7<uw{);DM6~0toc=h$!N!bG7+dWnE559-X z0*QR1CHT`2ve2WClNuBcbcL~O2fwm@38QZzfz?_Z&Nrgn;B)3@h5^f#QMtpXSo%T( zb1#(2g82$3`i0~a6*iP*$zS1x3C1TOjieJ)0!)98$@t|zM+UW$SZKB>&&^!pw2DTY zYB^-u010L7WeH++;?@fdW=;?jcMvNjWfCujfZ1t}P~3UpaR2d^(iSp5NF=iCSG+UL z$s(Q&P00)EZszoym+YK)-R&Gq2=3l~$g+CUaAz9P4zk;%QTqI2;Tqpd)Lf?8m+SZ8 zbr^YKpJix<Yb@80yuL9j299b)5&6IWE|na7I8&IRR>V3llwKhy8roU##mL(F3?G-r zF_b87O?P=;?(puk<xyAn)l*fb$~ryMIB&BjI76ZD=B{2a@U_Yb{fD%c7A_xqbxu#J zNBt7TDBzEecgo-n$7&AeR7VKvw+_tc!a9X>n$!13Z?&^@A%qdfF-y*Vt@7t?cyPPT z9e7Q3D&?eq9p3D-R4G%F1Tui-*aS#WOR|$+UBJ+^1k8WDLjlOjC-&oT4`?Mg&^dbT zTz07G)Bb%TEJlIUgn?<XXgKb+jk(GK5%y5X7X6Sra@6+D5Jt7vD;Skx{%<YeCcEz% z-5`~X40>G2WKt4;YFA9NW{>8~al1DD;60RwHKc8*2xkNW5P%&X|D34N8lPe~s(q4< zz~{?dK<TBB?f*&)m+pu}xPS~~Cs;%tFNP(PoX5X^&r5Z-BK#%KbI0U9I#rQ|#qQ)o z#j{)%mLk%Dos^NUZ}Zj$QV4(!fj%eT<T2LKyLi~`{9f~X88C=87O@yd9=H}uXJt8A zZjyE38%twX<}$qCajo7bi_oz9)|(v4rMiz8`AynZP%uQzJtV!ep^LEv#aaxjB0C6W zD%I`Qe(%JjN89lbnSNV2EcqMrOSlPLvp<W&=iCaG>PU15{&x^GpMjjss?P;0;@?No z1eMIDGkw<3a^B)I0UA;<v9i6(3ipe6_?{ucpbiwgGGFQT_Cpws2^@6K*;vONEIOsg z4z&^?rD)X=o8>p08y{-rO6E8Ut$3(cPN~$!A+KR7#nQ}LuV)K(i`B+B*V~i4@PVxx zdCN91zRN9(v3%zOrmJ9(lL=Xb$3R8j6C`tet;xal+Uw&Pa*gRyxJ)W%$>HHd6N2>S zi~+`ZaK%u3*|$C!n<p|mbWM+r3Pk!{^pYiPRJZ*<dWB>7ejSP3pDmU$h<7O4BR-?i z%52UQCYEbfn4+;fxB7FgmD?yRwu16Fd0da#(JTcesn4dq4`)YZ^+oc!acE~b;x%>_ zZO)d?{a`X0%D^v**(%j%>Rr6Rq}C4ZQ%$U7-oC_)xk=yXyEmOKm0sH&5k)If&H>oc zqejx_cxz}|Zm*2a=>jvAM)&*5)2Ct%yL@%&Gz8&b`IZ2kUEkO?AHkw0rvv1g-5K8* z)k1lH*9%qT7+ccn!33Kv#rY3f-pv_W?>W#lm#!|2m%0KF@@TnbAD;Rz{f;#1^xoG1 zfoMYPrK29PTODfF*N}agK-zHiYx`H<%%y58*`-=5Humq$fCu&!5Fr|A^#XpyQ#Sdu z-tj(8s8{DQz69`G_bNP6%65i%a9RKC+I6YE+qBJ?c4jNJ+tjQ5aj`uesnhQ8>frDp zsIP`A$r*JB1p}|ie#^#T<#))Y9+TIpIa(c%Ku}Qaumwe>U7Ub?D)VR0Dfv?>1wo(V zlhGsVVE?M%g$ohiGE0-)9$k&;T-rs2%1)_;Mge1A-_i6nG-qi~<rb6Qd1yh*!QF;$ zY&wCOzi#nFR}&)`Esg*3cKz)iBrU_QdF})Hy#wZ}zba2F12?NM#?&x_iv=XaRACaK zS=*fDO7|zSia1b12v*`}cDE|Yzo_s7?|4l^N&lVykM4Kq8#8fILi#3EMX<e{+=i3+ z_9vszMd#$Q(SDX|EoKg_5{8md-AtZO+mwbwDdIbA-E4TILO$GB>*N*A3vylPF~Zj} zX&iZ#+8b?wxA%5rpho-HaN&vmr^L^CpPAjxnZ#&h5czm{Ty7Ly=1upCJ)9ID4Q*Pk zpJI0|G3b?0NM6oyKFt{gp^c{hG9YZm0R)HJ7cOQ&pI`0<P#WE@v9Ax8y#--W=V*_~ z{Yez&?$W5nqF(!*V{D*d@xYPC8Wqx8r(?Yc2F>p7V3>a!$*$;!)D$Ui_+yGHAbhF= zl?Aaqj`FzW!+4#Q4YWZo-X06jx!^B?5W`L~0-Ha-1OKe+^W&qe-e!FkLXc|hc3Ing z8L8Lg3s2L*T!-&H<G6ic(g6*23Wr<xY_X<H^1Q~$@;z+z^_j)ta`K#&acA~GEQbQw z;{7dp5{n0wbP}f$Ibx8rTD*$$N(%_5M61RJn<c;O0<uzcOskce>Sij!<G$h$4oJad zSgiKM+u0P=$zINT@>fu{l<t64HJ`5+&x!M5wOlL~P$O9v9rH0urt@7D34l8&@M>#~ z_1*Fj*8+)z{~k@{l-~(P%ja;j9<0D!@ZF3)Fr2c0Qqi%d`B>E#{j;0xPPF>F<g5DV z>PUwhlf%KRmW$5WLPP5ANLo+knd%GCixAp*DCBQK!9cktR*U^VFD+L*^qm<nxtlq( znJMlCs4=(xM3Xjf%pNzkr>iZG(^)E3hszZ_sXPt>7-rI=4L)J_+`Wz!47H9sA5HIE zLWBOyXS>*$E;YjAaXA0rthSK!c=SM0K3i*(MY#{?@M8p-oSkaLa;q^VeX&YAtQ-!^ z8G6Yy3~}Los!9&H2t&5u<=!D6sBEnE%Zsci>P6;jWJ&6aPKc$(HzN)9@_>K2`?8Pi zH_fUPIl=e*aHG_@_H)fS&DsN*&E>-He6UOPW~ZJ5wxD%gwSQi#_k5VSY2^I<Z3Tw5 zUU<&;(Qte&k*<4@sp)|jV}dH_R4O#s{V63|EH8jv-GtN|ozNL}dQO_5X@Bh_x(cVi z^qBf}-x{>%hWw&Oe5nPZha4Em;%K|nXQ2_X+ICrbthz03U~RZKr$p(MlX(G_?`ljI ztC;|q^Gw#H0i*0E#9wIRh8oJb7%?2_fgq}zrwp8&9n7#r8`|_6?IIEQ!}(Uc9I>>N z!|6hCj{D0qc6xb|+F%uD`aVXgofK!?*{x)hMGjiNRjrU8%j_R$V;F%9&a~Y#n0vcD z+n*}Yv)bp@(M<GO4W+ywz6z)EEUDed591T6{P7j1CnsI_eV&bHOyPxnT7&o96=BbN z4w-D1TuXRss(xxlnwm0xAe9@2*<SV9E5`k8NH2@I&0E)IO!ZftK!v<jKJ^q)Wb{39 zty&x7;7Zbvq0&n1II79swmOBXPg?m(zwi~CObt(BmCn>SAiB2I?D9`<OVqj#h43_3 zRJ>mG|1{$<8o!fH;s`8cHWn~6o6So1f_;!7vvDV#we6b4?KN4HDmt7(<|=%iJhLxQ zQ0Q@mFYp|yRm}aag;pt8L|*R%!!@2md)uTXI`g`zWNJ&Z1m9sOx0hK7eermE#vzMS zsM!`YSQK=GjGzYb;<(~ALF$Na6Fcyam7!91#iu~Q__P~_8FY-9#AHemN24yJqPBoc zY7EAO4EMrle0sXOcG{ckCFP|t>2NllhS5^|8wiKP<_MmpSCbmr9nF}5#rW1UnR7tz z`7n&%bpqkGPe}ja$GZ=H#NPW8pm7Cl4(FlSwgMv9{DXTNvXOWi4Uv{cClw+;XT&%v zH33>ol?nluI1;^1KTbw=Qu=YleEzTK{*ITRQ3s{^z_vPztf%7>vc2w*KJ_A%I@Xar zw6LR@lB~*7)dqPCb)xKAH4PQ91HnRicJ!IM(KB01Hw1JW14hoEgJzGT?^Q~xp!4(3 z^hp4WJ@&M9orCP}Zs#S5qsDJF2wtbU(Ru7WoCd3Jc!%Ip#>+>g$H`Wvj2Gf{CjqC) z@p=|TOmbcbBq<5jIqM;VsC7zl(Wup@@5&{Q-CSLwLmAKWrwKqB_o__jK5aWa1l^KK z4|G03ezD`dP9uji4ofvaL^at+QW0;_eY<v9?yhgnH=iab!207;g+=@<NSxD6^=Cc> z{xZ>|L}(lE@mE08HdJfA7*70fx-%4~M6?SVo}rTA&S45z*~33^^dEig&QYdSryx`v z%>UNP-G{m+4wwn#x;i+w+SMnyI{5514JSffA0-w`G#5W!hW#*3_m__eT3-K69yoIE z@aOXm40jO5F^xh6^2ja$ge{)Wmkq3FLxVGVj~IV`9h+gx3KDVTsm1FfhdkL-juPHi z2k7z*MF_f=TY{PGaiR!(9;OAl`^W0&*R;OZrw>H~Lag|)9JD~}CfnI^7L}pol4{bu z`GP95dW}s;<NbZqp2zms^&-lWY8z`%8+P1K*g(2fB|{nwQ(^+awL^6aFWc&bu)0!O z31gfvO|20jw}<G5XNw~2h;C&hir6pc@adO+>eE*hR60FOInzYeFE3|GtpPP=>ajZd zcc)9uqn}H<$F(?}0v?w1aiJ^^_cx$Se3yc-h@nO{5i!aZDunc*humjqFz8F`ZpI)7 zAC=R%5i3-y(g39{ev9pL3RayU`b^9(RqGS0iG1&`Q8RaSQO(TMDSQM2l2VpZ&(m2r z*C(@ykQ{t9?D?Jq)!d72j-P~Cj3(JFRQziqRmaED_{i_If3Lu?TKYyfnJ?BJ(#Mqv zj`1>E&LiGj$&}q#t+onkJ>ICmK8v@-kENGzr;}FywBgo#wzUr{*WF6bvdXs_x<k(v zLU#Mm@65`U>&s<il6qlZ;@<Ysf2M!Iyx!UsNFf;z8jr5WlzOjb%*64@=iS>Y#t!Rk z)haFy>zOVYlPg6CgE6uB_+4T;ik|)A!(}rh?EV<3r2U9=G<%RGm&zz^qs79XKUd>C zmMqTe^jD8h_qeB-Q5PboOHCL-b!9Bd;XHAV2zUP7U5re1d&doz5|PnN0;b6<*Q(L1 z*$+M-xpd((M?5ZtTT87tT^ev}`J3O&Ms@cgsZWTfb9`dPQ<E(ox5`TfUzvYdYOo4X zcwXLwaVn?xI3g_zF>AN#$H~~U_5X3nGmbiw!gCA)`Fa7LM(o2d#vAa~F2+`TZg(-Q z`+&gjzzAUrgkUdVL)S9nCyY3QkD_>~XF2X3S&q2I_R2(1T}k7D0cPJ*_}lC=AuTiE zbabtnd~1#gO~Dv0ERxj4&WPmZxkfUN+)nO@pG`+!chku6Srv5oPt~NHJ%9b}!0?1+ zZiyl7FG()0&WF7v+==7qD&DiZj}4dHYeVrf(b&xx>je6zbbyh!YTACnU>a$n8hZ?T zH(^lkKs4FRn5FGf%oa&fRY0@qKK70NSeIT<G^up1=kJJ3ask~@aem8p!-<T7Fnt%* zzO4fYVjM>9G5maCElUq+y%G0h_Jan55qxGxu}tabVHEd_kLRGzYs2B0FEZ*HGS&xi z*2B%)yBXXQ@3+V?j!{E=LC!wuDb~;ttLqP#X?sjLL8Y5mR(w|h5<9o$g_OH~c^RPI zioRDC-^!2M=Q%gDNm#gFRvFPl!^VbM8!FqV5lNaQuw`FT^+v1N%X;^Oh0yyj&K+56 zcj1rZg3dnT5WJYKMc;VE4RnLuTcFWf;;vxXd9e0<u}q<Naqx$z%2=6>Iji?NTOMKS zM8?jpHOi3p^>G&MP3#_vw}G~^0N<QgZZtu8u;_$v_(CS<<EQwu>sjf09-<puW(Chx zB*t51*qO-h*eb~v(=xX`;T~j$#pelLs8t0;s(+R}OREvRt7g6|Wfwv(#u<b*U+Z9I z+Mx&Tna-Bpx_8n7m;+)U9k<5HwWurAIHwjT(5>1r&M)!PWY<D!l*5z%we}<52(((` zbGU|fPbpreu+D{c2O$@TTIZFEkwok!GuaibNT{Eu#Ia9q<}|+<9@O3s5x@2t3Wser zdUeA0Vy^u*?f{u1xRnh0cwO|k4rB`VuFRZ3le2%{x@XwBbl+b-ftF~$%s?N5HY={x ze19`JQ`)hX-bJT6$!c~8Ls>%lRzdN)(GL>2n@r`(*)86E_qTbL*J-RaS&)3e*iyiC z-L1KBeLd{ndvD8AG~m9M(9c9?2*z&FinABA*|{}aPd|IS*B_rM5{6ecM8x(B{5{@n zeyei1bEtUn!3%Cc4nyE1lB`mK9STJxAK%D#n|hAdky$nlvOR&RSmWW$&=0d020m<V zO&p6th{zj)oy+dqjIWf3<Ur*4Aj$^2#5Bb+#u2C^K*G1P;G5{r9%R={=(VR$LoA$~ zFu$ghHOiXVq%{W3pti5qlf7=(s=Oiyj_JFlV0H&v+mFQdVN1SOLc6JUFWxJVLnV`O z%Oo9D5ic_RR&i3Vv}IY@a{g1%(oEqtJAAeD!!w-Xp@@k@f4sAXKHsCIUMIB+Y>wnx zr5IB5FX9m}g0JD`p9aCf5Z{3zmdCc+-Mov9gwa1>kFRhZZrvg9&?lM<&Z}@n2p)*| zsx~}`9D@j}Pb8+aD_XE4nznqvR$EQOpw)cWLp^cV{Gs@WgT|MJl^i_&du_G!VWay_ z;eey@PLf+)4)1eiHh~vl%+;LJ<IBk|naBibxJRIY46Cd^87$5XYEX_(pm`yLRe{I4 z!Pyx&DH2kYybw>~dAym}@Oo7m*pb`w_i{(lHe}?LENjcTUWggh4Yf(pK^ij%jib>{ zQ9)^yESf7-(l(I~q)8&jHziCwckds#{Cc@QJBBl<8vJ^X4Yy;qUgQLCZlTf0%q@G> z>~y_^yj)vyZDJTtrzB7NR2K<(7isAzhM!2zq;ichg?ba8<ZK{`YqxceFYk%OzW2f_ z+jACEU8$PZD~V2yO1L;9)%&Mnt53=Kv&kdikY+;E7Y5WMCd@-XGBF;z{kJ8D`A2x| zV<G*tzAbC0TLNyyrBBqjkp9@-!MLY}%li|J7ls<){<%TA#X=y@Ux;Xf0)k^<sEXCo z8O?jVfqB;UYl;h+`8TKg7pX1WqP;Zntr8T$>)NBET{BC+_(Y`!;~2@pboLw5E)(xy zD&>6JT9Hl;=g6v;==CU}u1|!&^hM+{3PQ^Rz9IIoxg3p_SUOCj2F)G(?YLk+dw2WS z+5h@{aeyHyn$8wT#ud%{1{|!YZRAk`Nm2v~Uvn}ya|XwqdL+l|TrMVZM>J>-C-NCV zN-j!;bJ?{gT$8fRA5shMB*U<of2-N;MQ1O0t(%<_zvV6;i3%B=|C}9;ug%#IrXVp8 zoQTfJA41R(z%Vw1y0w(_c-Rq#Td6r>E59|!K_n=`IO`~gAuDfp4|l)B$OiYnx1@I~ z30}7-7+}$?v`-WkNcT)^8`Ee{%lRsBt`{Eo^o1Vc_H>1d6bcTTJN9P2{-VYcFMJW7 z$B`zkOfj)=HedY28BOmzIF^x2JF3b^id>C?p1yBkv?H^mo5pj@##)exh2U;i2tdpg z7i3k7=L978_mn^d{9shdg{TfJU*bv9yE|vctjw0MFSrwVj7krS3S2VRSf4F4j;00? z(`E`4Gu}ekrNeD-ql3g&8U&$DyQyh0Xyjuncl!rI*u!BclTVwI&W@2tIwPIkHB42? zw6naMoueFm&6fRwaJ_ga$jWF|IrO(FBtvYI>}|91^{UP&2iOWIEOKcS+iVoH*_nx@ z*L!4{&6XO`q|-Q4FT7L~ds1e@mmW`hw8bwDXR|PBb`qxj?;6o5<U{GsrzjZq$Ub{1 zc)c8uUq_!XRE=d;aDRN692?u18Qiq5(C^KTNLOXvofH)Og`S~`zJL;8qOhidyGlt; zH9nzVf#N{h$(ExrRd4_J_1%cpJyB=XyLWvkkv61TlD$}P5I)3+L9hJ*y=$lIhus`+ ztHy^f;A1+?iXrIp8XHGr_$~4Apk`fhW4hl&_$8I?aonAT=9?M!v5;`*oK?Glu}>y{ zwg@6tS66$5v5zG=)$*md4N6!v7Rfx~JiE6Ee$OV+UaM&Ydb*y2V<4P4<LXe=3xBz~ zoUfvV)f3)f{A|A6*uM$AxG8QMmW>y#?%c1*RdO$aG>IA0GoRf;81{9m7J`l7YHIOI ze6dAxBfdL)cgO;IRV}Z^;rJMF2;!g*Z3k^iUi#{)1=1Z0>n7uAPej#_YCOkdFkj%N zDi-XxqMI|tf&n#~c{W*%*+T3sN5lpK0q-|~FBzr=n%vu%tKsU^M?7<Jv?`YB%wG8P zL<dD?cCX&P(+ZRz5x6<Lu7F2mU^EIjQ>@6?{b>*$-=%X4@3q9WgD@(-WJzd-IyUP# z@kE26uYPlCkACvP0SD-23*h3cX!w^#wQYqzxsm8sJdJo<+#v~X7~Nl95EY$%?_HzD zLkb{j#^UjKiQepid2##hTsLufxoHm7MlN5+Vm@1g74Z0J+3k9l_?i2jF-HtHu8}2Z zFY+7OCv*H@+ppkH6J^}<!VLJ!lwd9{?Ge+E^q>UR1&8-U0hDBlP~bpwX;hNGc@QXh z=#h)2)vFYXW9(}`^iJY$)rv2#^FFtRFDMlVK-M6pZZpo!aXdLUy<~btD;Mje^C}h^ zz|>f1rgIv1{eOIYWmr~Qx3(ZCNP~1E%|my$bazX4cY}0GBPre8NGRRiE#2Maw@~+f z_kPbg-*v4Yk6ysD)|z9EIpV(W!F#q|gX7+Zr4hQ(XZp0r-qb<V5D>pZ8ox(-MK~jj z626)GRCmDX7r@l*;ZdT&thpcCNS~E9vrH|OpF88tYNdf5nE?uG!(15e@}|7nb4x-D zHv|E7%gR30<b2kI@O?&U>)lp=UpjV~yQ|C?l8;*<afUQ_^|_a-Dbgt6BpI!IAbVx+ zm3g}kPR~@t?uu|25$NvmnS7b_7^ogV%#U&BZgW6oCnb&oE>ib3gad>NPJhIZ(CK;% zR5Lt!1g&NcTV)HmT~06YwUtG)ceZ)iX<+cmnHuF<{UYpO!qgcVZuo#*fTuHJn3ivK zb&VWEOJxhn*bU@JL6?vFWKL1kRM<MZgwAN>2^m4yvKXvBv>4&~n^)ioh(7t1Bypc! zLGXPugvM}rH9H1le8p6kt<n1i9G>JuM1G|p)q7n6L~yX_E(->Ct_aJb(P7CorDpSM zUd2!7vghubB0VyxipzK2G)czO>vO}D(Mx?$s(YrO^rJP?gAv{E2UUv}uXWPWrMi@E zILvS0<q;^|!CfL{>p@_Cg`(+;aYU{Rmk@#u+HY0T!(&oNuaatXpu0V?H!f3VF2Xam zf``rN8?qBCZO%+sLYAFN_`q&qt>4Ub&^4d8Ps}z^+3ZYmsyE$|aC-uRSDxJD#(5ZV z9Ii~Q6ey5*z0;ZDh=pC*H;p<3T3^q7rL|A;y(7;iqIl#)(bR-s*P-YkaHhpvusC5! z-u#X@0Qd2H`JTL^b6BONtQl<+i5w5|LAVf19FC(G3_LMMG;=ZoCt7@O1g6q1OdO0K z6+;>-lj3}k7n&Q&nX@FX{J_S8lh7{F#ejyS=5L1NVTl$Y44Q^mAHnOU)v+5?;n^zt zSg9Ef6q7hNlD{C%kPrxDG}CB$%G}Ge<_hoYj4yfCCj6xZQ0fkLv8F_@!e_hWmARQI z=z~u{h+j?~$6%`1pTP6#(h@TRi2Ct3;xiTNNnec3meSI4ynfy~e=fvmsLrjVQ4)!_ zQKDM!bu5X$2<a=M0eDe7ZVq=Eqc2k__43o<ySv^LF$=0@vUS+?$D>#@RMyjjZ%=-- zoSC4ltRZBqV=fS3o!dE!+ay3b0bQ%MpPZ;M?F*bNo2QS+Jqu-l?--%jfD`+P;EDZK zSm2!RTLcszlT&tBNEwid{_Elsg%GMijnWA*E(z%lK_MYtvG{Dd)y`X}5>&@ROAN~V zo;P&whkWN!`QboDhTXv*q=+8TAu@}dyfz^MErC?ff2xPDRiaj9V`0;|1-t9E&h_UD zW(8hkRZ>rWdi|VI{PWUG@@dVtg^gqeh1DAwTd&t!uZ$HGG8Rb11}eMbgauUw4~wC6 zW_zq`$%d(gUVn|F&Z-QataHKqN@v7``{z$-CcF^g@b&%o(_o+=mWyIQH6VkTcb5d$ zpT%%h1*bxN)lN^}Na2PdkxB9ilu8l+Ua362zn~t0Z6HbMMs%}$U>u2|_#A+zfLQ+| zy7t%ovmt;1hB#8oC-KjlPYveNLu*TKbNL>%d(S3UJo*-qPKvL)C|u24Qb-du>tn!D zQggC00Za?gi|yW2U*xVRL4Xqcg__e@0c^#ZLL)CcjzLX62BW>IYDt2Zx5@DuFRjrg z8bG&6L$BS*eim@05X%yJyReYL)liaj@Er#guX|b(IS2ChMgYqv1gy%G1`-SWk4cqD z@u9Kn;ex#amlo#h&Mi%#(BhbH&?i#@se!jwmLf*eN<syH0O{ANeg{{c%14QC_2me$ zJve1|HaO+m(zm@0?8_#T*_|%ca5!4?zBrpQciTQLmk%L0INTIl#;Yv&FkBKx=fy?x z7FZgnZah3ZKrCxEHmMIvLU+oLU+>rc1VglW1CAJxw#M)U>5rwazJgFq3+pVR_t$4_ zNU$1*B*9q7#Cl#{8xfg|yw_293LidvN%_Rjx)|c)?}dn<k6B#j(iLU{qD6A<GUylm zyhaGBjMTRa4iVCP3c5a~@Y()Gb|tF3Yk<TpP1at4hN9Lk*DC>GC`C8juk!f>;V;Yf z89?+gIbcY91NYZULnk0;uY_Sjk%9n|fDVRI`8G2%z9IS=oJNd~%eTv*lEd?OeFp>; z2KA5*x&C~Vf8g_>>8{+00J##UH4AYiV006)g+Z0ZZ^p=un*4d<;8h3$ERhp1pCiA2 zo1u>nR1b2N01O%74+<ef_z#(??w$s;`mP~jZmwc(kBKf6=G#I{fq?O{MScq?J~sW? zSMRVD!@Jak&PS^ad6w#+c}w2M4BhL=`w!QG+K(9qxR#^jH2&hW&=*4b`As+`uzx-C zUw7b-05-&^>W&Vk>aS0NW^eLFjW{ZP^GkOn0cg298W;+R6h=~h^(I66i!!1OFL;o2 zOLlIG&iDknuj1s4AC}Tp-eh04T<WY{Z1>|`7@nF4pA`<*HB64VGtX!r%oCHxFbdEY z57>*p&U;|jQ&+)|_w&I65(PK93h2Ll++WTP=`+CM37x650M>M2ULqqRL3z2W#`BSB z_7#vyMtuVg#GTGAXW&3Yi0?0_Rx#E2+<T}EvC-`t+<A63gd7W06EhEkmPc!HM|Qr2 zBu$o@YF_WrxuF<A*vL>0%4QS&S&2V~1Ym@4;6yLX(>u;+)+!4Vy|ARXoFeeD;t5t4 zA+%d=MVCZ)6!D(ygNOq@94sad?5dNoVi+v;q7X4e8gKy_k2+w&r6hqD|8dv99|e&g z%4E4CIT%D#c{R?9&TsQ2g#ghA!YlnDsVX;&e<`I)5Gs@|`$!u#<aJdzKBfpm`Uip! z)L{Pk6$u#QfOQCof~PmzHE<hQd%5qu*Z$XS+mM3aSm8WOefsp40$D^!_ti(4kZJ-% z1~6z9dZ#Ca7~23@RKjzCP+Evp(}w`ax_^43|9mD`gzC+5M($|Ph;{if{Yvq`3&Mb_ zuOa3X5(XdKdZk5S|D~$Ny<ZSQ>Cjrm1!4qlATs2CdCx!Rg3lpDf|XYxT1)IG_|@#; z*Xx~Y-o(-Aw6BL0-FeLj_}qDpDfQ~{GYMSEN{FE$tWPazM@!y_q0F;7HQ{7xl5*YX zAPeYJ9_PsC=42_rjm45mmX88^=>XT@a7pP21vPqzZQV;$v*LUtfY0MW$Ae0G@8ks= zAcidm{om&N`<@z@ePL8qCIBN<rgd{ZJwru{Z-tVf)xMKkz;~0sV=^Uo9VgZuJ^+S5 z)wp$#7Vp)PL@A;A>#bdCJmqm-9|h>aMN+7v^~9c%tiz%?K>&4rDQaxiEMdmHiJ}0Q zogS+thj^JJ9>3*g*X#w><xjOQSpd!1G2jQDZw@h{1A>tf?2iNf*W$eZJBPT+@Q?r^ zok21>d!xx5iVJlamwE3S9m-EViLF$hqN<GgO-Rw<MTEc^S`AXaw?}>hG#bc(S#CuF zNWLhYQRQ_#lApzUWYV&(xZUIzj<_c)X*|7i-jPYmJ}Q@*j`l|HC0UqHXR6T7*H~gt zna_n{)mRCJJ*k(aWo^@Hj|W4e#EaMiGlms0*Yjm&(&`Og{_p4RZ)3p`T^%Ix?*B{? zs6+yf&l???&L+0vyeB@y;gH$pe3;i)y)}B}eI=i^Rk{O+Md-u>s?qjED^=8<4>w}Y zR)=}iOuF5mT3)wt0Bx5KrerxA*DZNV!~uuF@^Lt|?aN+~Y<?z9d0~WT^t)(f>Ef~_ z(-B|6CWG<3X)Slz=+LPGkHb5M^=Zqc##I(#Qj6#QT%lQQq1*bF!_BO1yvIY$=Nf}e zGp*_G?|McP4mqcu<^VL0>AkdK(|cUAnQYcHHhX2<HkVxnIDFoaz=*Uj{U~@U){7s; zEE(cU)uQGdkA(p;#AG~$r)sU&JEgJ})p(Lj-od#=;V{%TyV|{pc0(N@?)8hW*SG|x z#jS9_d=;moC6P7i<;$L@B5FAG+UzN8*8LbYdt8UlJl4H8F}AN@IKfc|;xe_{U^gnA zyT6R%;d070yPTTb&C)aZ>F90$ypKvKQ5EZWb&(GSLJV7)2{Q$)-|FC9D~Lp8LASwW z1LGEAg2(l+>mQ|{QHZ|)*rAC}Uc50-lS}ip3fmTsud^ykH$EZ!D^U7-cjE}HPPe=e zPg`v28NGMf7dTaONoF-98p_~^?te@BK4Nb&%M7)DOy}Haf|Vl1d#cIBc3pNbiGFvs zFSf}Z*^h0dex>LUko=j5nVT>@E!h?SgyySs&^KYs<Z!`uS@0N`8#YOA|1<bg8o4gG z`gsqR*|jGl7OQ0-&2Dc<Y#*x%{QSd=-ktuIqWEX7&qtaz*b*wGfbyx{XcGyHn(V%G zTO?+A46C_p;ufuT-rAdEZkHrr`YXSo_*<22<jUabVtbMKCOu3>3Yl{>$dHy}_V*=F zLzv^axl#k@3YF~vs-o8U^PtT{@-y7W%<V4My#v>)H{62WgGmDVLGXII*34pyCi*Cu zuCHOP?5MY-@k9ocOG!dzEc(wpQWQe&i2}oJ@9!s8IDg8`5Y{E4PnBvbT{;eq`tH5| z))R%V#9?0M*Z<`@Dx4P6xT50SXqKGdU90X(EH=HIGxAoC!{oVsL(S<z<%sczWAC@0 zg>@8^v+YPi@mXp5X0L|g6<kRrno#m(6cWNQ6%#H@C(a^X-><8PFi*X}dHKsP&=H^9 zl{!Y9xL_HPnV(}D_R##xl{LWm=8x#eH?u8EFX4}<R<<{L0w=wE>a1LQ&a$|n_(THk zSMrhi##x0^cC9wYu(R#H(!Jphfw-jLB=%~<Tp&V|>%Q2XtOO?77F3{{ktKO&i9|`m zna|`D$YsaGU0)q?x?S8rySn$}0XUSg&L3^^2HI&u6BB1PIQOcEM^m})+(o@}!a-N! zb8EODaE%$KQj^gFdWWCi1+jQ7pb~M38%QJ(Gg@fZsmk}7LF1vul}30T5$07d$V>+k z$lq6^(`3D3HkXC9a=(=)F`fR%TazQyOrW-er9=@K73GHdvkVcJ!!2B%xcGtu&iats zA-JgO!|^WCWch<@Yc9}LqXL^HAUqbu(rq>V$xo?K#dgT<5`1=cIhyo#I77zpG~`eU znmy+`uu~`m=b84Ba%cESrtd|%6T=x*XOYR(3xMKhVw7@;h77m&Q-CscQaP8eR4vi< z_O0<=D$YP0p(sXzWt1vj&XPm#aY_&xwNBYqSF2!9p=Mu9Oec+>i3K{30T6lo9WDIh z!wivZps+lWu=hhIjO9v;h%0$mFg6B;=z9K0mOc8<^{)CX0MMtd)C!fI%xWjvGW0Dy zl4#G26nuBV*?PD8a3OBbdxiYFDyMPZSC<dzY@UIy;PG=MXx7StfeBw>y`1aU0pc6d zmr}A1s$%4XpoB6_L7*F%KMNER2v)-qEt{AM9oFnhROzR(eChRH1-y=SMryjG2H;0c zOM?evt`C!@<HqmE5OCSM9b4#Bq3D1lp~<5gn`l|W1Q98s{%BDObs#}r>}a`d<WY?e zXz>!#%FxDmKGtct;fC*bc-<g<x|J<|@2FmH$hh*NArGyHX)4*o?Yukr991GQD}I0a zbSOL<B)d(rlFHBOEg7%7TS?0}JB|Z{$^RV>{f>%OWx;v0<#vEvzUv&?(|VnaXSv_~ z2E!f6dZ{st+tCkgLA`#{`U=Wx&{nSJH&RmnDD;y>h;Wn<$Kd;U#h=-n&d2KV{`^=J zwBm8(Ob>|}Y#Z<2_}N#zt4t+12!v{6RZB`>T8ri~m}I-+!jm*r$d}h80>(V#4Pa9j z>0%2rAq+ogx5zt+CIcWudEgzki68yORi4KuJt(!0yneGiQrr&6)f$npJ#>}xJ{Am1 zrZGm@84Zd1c^#Bq6*HOW$@=Hcd?!FT{_W_o!SQd5f?UAedm>9Io4Z)Sj%-w8A#mj1 zg8<Q4hi3s6SI5zA@2jf(CKtl`HQ|#i;Bi<0Y-QJL-ghMw(5C$V&UXKH;ub`ofFePY z)3)D~Yb=>q`>A6ox*k=fO7VZ-XjAS0OQC<TJr<NjLbMyn?OtjnV}rTY9U=(LHrf8v z@pCW6w9?J-^`OODiX@#bsHYRcUX7cn{TXqLgcGdwyx|-|-b=aDu-6Y90s+}ByW9D9 zCv9>3MCZv;DMN7<b3bZR>TTjeWr)GcJEdt(*i(bNj))*(Mggvr5*9m+r6-DHf#4|* zwS2)d)Fp)&CxG<TPv=ca!@jp~1Npd0q^L~_bjouVeg`sv-z3rn)9x;E^KdzeW=>8~ zO!!99iO=~;oTex}^!1r8G3dS>y&@4y4R$)36O@{-&j)Tp?moR`2T%%giVus{`@i?& zJ+y%Yz8_E@B3l8`mr|B!5A99<ocTf7+`bXrrj}ao@}s>UrQUXFzKM&OQYj}R5MD*^ z^sDm|$V_QE&3^LzHVd_qyJ00Ol2XqT$7oiTyYp_&S$wIIN*AivfZjpqt-WdQPUU2? zF1L91T4OVd^$I^s0!{W7+@74_)t%*R6E~#IY{Yn1sQfr_2zAi_TXd&M>(5oNDU&nq z9v`pwxuIyxnA&_UTCHvol+)&-E5tI=fEG&Dn4p)OZCb>@<Q0jK@Bqz{$@C4a_R{zj zSjT&t!Fg56^vaqgB+}<XImiO4_oE|Bp0r%1FprH%oNDun+}3z%xsT##6ar7jE5#jO zXG*7dAE)To&zCrBR7?%VzVg2l8M`A1n@WoI+rJ_0(J`Msi-?n^jG+E0wDy%a!=f*k z>v^lLzJb`Fso-)mELZ#bDa|;+>XlL}4|+{i`FH+<e;0osh*!m7eqcVNi!M!{m}#Zx zHdt>jKWC&jsboyYGdaqM#HUt|k1P9Va@9>QvSHV{_BVG;9VRQku0fY@*I7&T5gCQ` zZgqt1sp(aH$?&fmjjFT|<9TGd6_3yFSYUk};ttC03Px%^p{&f*X}(Zs6Bc~qo~aY{ zbk!4;v6J?bGYzW18<>u}#k-W<O1-X-$24Y14St*Y=^ILG^jM)YeloKa$n|sxqp_0S zZk)J3hVUJ8sm{n2TF1n!kwY)kU#{r{6|5CC;_H}>+;?9aqA$}@2<lu*TWEly#zz{> zR!IarZso9-bDD?@ANk0U5DAHG+acmY&`m<u*HOf4zo-HQ#tH%gf%HzsWv?B$`2J&E zrFf#?WMtu>NKBE$GEGMEVm>?_vz4sR-|5$JB_Q-Q2B!BINH8+Ey`#IzDAbXc?t^_F z#WZB4(F!NfN+w94jNTFZvL==2q{VbygXnK95-<kzhzRO;9y(O!Iysv<odeo9%5Z~m z*kc4C^)Xc#S_v@B{g<}2xRNzkEd|=7lKAX?_vgv2d9G?`%~i;LnEpAxY@EPfrGq&! zp`~{_eG{Ax7JTv1wzF}XW>Uf3Umq#l8J|rQRU*L$V_RT`i-<+3d#@Xpvk;?a+}{QV zNyKOW5;MJft9&j~;n-w;+?dH(RQ`>w7R!0SYIp~<qUmVdG`05XiCsq#pEk-Tb=U@x z!~L$@2X<INVt*xU*{FS_Zvrl5&O@Vr*L}pnPw1Tb2atbY8;&%*MbL-pM)HDcgm{4z zYFN^r6wrtd7G)GmzNf3Has9O_&z<<Ac3C*R=|g*d9?Ggo1EP)LcU7N0ml#{f?`)cZ zQ3J|v#%2v^ak1e4T3W!M5tAW^i6NU=1Y_y?oru9Oiy4e`k3<N@+f>NkpZ7tW&OVlv zHsU#&V<lSgLVanZ(n*r|xK8ka9_%?2H_!w!d#vZoJ~N=^pC=hopid`(zpoD!(zhhX z++ssd4MIGPk->O-*rPa~Va==j%JYmEe>5LopIQi@N^lcxOS}&K3Va$FcmvbOf^PpE zNCXo=@Oa)KZwPy9G~rW>C&rUr*1v;Fw%N}k#S<AxN%&nXA7^i-&MlsyQ`@SWDwf3S z;qO5?ISZE5cPGm_g-I_|t&u9aQ*B{OU)Kmg)(Y?exz*bo!l1?obR)q+SUlJM(9C*Y z{^Q;JI*Y9&`5>N$BG%P<mM##zHK%3Iw=~~A#cP5P(BNW03m$^*%UqC%qalPeux$qF zJ(Nfl1?8_d2jBY1lSRF^)f4%y=ZZnpkMj7h!hCC{3y)mI4sLhg5>V+{h(Lt=m-hfl zPCo94qv*lBXVpW<WVaWMFb<bn)U}U$m)KKsv@!_dsdQkuPoyN9y)j~z07_ep45#Cq z?V#K5U8lan#|o03@PN&VeaFrsF*MrPnLmZF8k0wfCP!Ky?dCT^JE6hMZzZo1c-{JX zsNUpCV#QbGM)7-UbmvQ&W~E4m`4N1818PsxqXO#Bi&5d@<MEw`?`JguNz8xl)aM)# z@w=+O9tj$+htR^+LH59mmF&}EV}U^5+H)!PED|?mT^_N;V^^g9XgRwY{b%;>Il5fa z<j?GJ;Wr9vLeO*P^i^*BZ14-_=20#sA#G>e$_p$rZW7~30IB2(a3_d*Up!%>v4O6Q z9k?pgh@G<NuUZ%y64Y*3op1mF(tmORe?l-R5Ihvrm&c%}(OFFUxv(2-EXD%fsdDXr zD&t{MTaRWn*hryhc2I!D06jaIDe><TwX!yb6PS`GFr%;sZ-`WGvLmr{Er!aSg~N3# zT*<Ya<Mbnmgs3**=N#LsR{zP@sjq=J*Y||@h0OX%PE^xBW0J)LK!g7p=q9{$b#t4a z>>-oMkS7SU4nfuh!%lfY6x#*C<g3!TeE9PqdjkC_+e?dc^rt*=eE}>|G*tqnv>Ibx z{#;l>jDH2WQVpGO1lEPU0#}sQ99Ol2eczV(T4gEB)~@?o^97>z&<dRN=^8K3J@yYi z$dQH%aUmZ(_72n-oR<~x{!W_!i~jWb>N!gKW(9thJCEC;(Cm4ikWj8EEQQ6))VH%& zYffA~P9l-ab-d%}>+8$py2k|Q^S|`$SeCLk9<p&jB_EN3I(XW~7f)uQFci&LHi$x_ z)e={tR3f6KrH$Rj^*rh9i)AvLXKJ$fK?H}*;UDU8ot9n9=lVl(b@Yd~DTB^>%l-8P z5I$T;^~X&%o1&Pl<kgzZl`hm%=zfHF%V;$CL4(7oUFhumJUc|c2O<TYjQ<;;x&#Zj zTLc{TJcxC?Lv;!nJ@Wz7Xtgt7bcEm0a$`r9Jwqt6FxuXmP)7?(*X~_j&$tsz-y+HK zS?xFmVR7+P3|6IZcFf}iDm?7OZP@$lAXs`T96-M<=TBc_R{C45_3iw!^#;WAYRbM_ zEdvV54YSRL#gPlXenC3`AE)VYf5v(=Q!vQ!K5`jRS7s#=msgt8=_qRo(2|V{S-+Ig z#fE@|!r}D#NTc&~=2CX5`aE2U+w*RaAS&A_d^;qLQ*Y9wNUjv?aIrPw4I24sL6K}^ zETYTx5$=@bWD)?;6Eu#(&rV7Fncc`}EIT)z>qu>})Cvsq$UpKQd!K=~WO_o&i;dew z1C+CU&^lBh*4?l1N1IAH3zV|mSfIPri-|3S7xLhCxq1X5hgshvlZi`;#Skl%=Kxa^ zq_`He#csBAkRuCI{m*+M&@;O9v#Pg;$D*@EYKu;fUVyV#8NspS__<(7U>VaP1$3pT z@+v|?=o>dMn7jl$(AVc$KaC3V<8wCWD@#fcB|@uCC!;d(F~EED@&4NJ9_Y2@XLubH zFF0>>=Sn1+PVF(j5`L;SrbVSx^=ZDTJXWpL!%XdfhuT58$uvhVQqBCxL9B0jiPcfb z6a?7<z%~mrx^x#{p6F7^o}Qk>SIN8ZZsq3grQIDCbWyVi@(BoJ1c1Q;pSifW$kl61 z;+Q3j#8XIXL(kQ7-&1ou93vGiRM2lys0P<rExbP?7Adqt-TChKde7x-(scLYbM?jj z#{ee%X$!54<T?|v*YLPmMy2WsO@nHM>ZKetE^`b^u5(Gu*Um+XrLPPJ6Z|}2-pV^N zna}kTz&Y{pz59X^!5-cZP~ZyHZyC^naz^{<E@|+3ruq|es}sv8f3PKpfX-IiX3`&o zf`E2p`RrQ_?d9bS6f*d(F#HU`dg8q6W8TrH$Jdg~FMD`UZsJ&}Z%6ipthb!=d^~m+ zL&I8aV873n(ok~%=gukw1Y&wSG!3AV1^h!BqMd=O3z*wrvJ@C`u`~8g{4+xUvZei2 zFFzPaH5`jOaJo!mWC2XE(!&+&M1hw?wsfT-n&wP=`#JeN<aCNb_<2*LlnqFtPswXR zo#NrKc=(IIi;7M7K!0OA?0&t>Z8p~gXQ|#6>GhjPrsR6#;^sDL-3Fh#@PM)R^zwC~ z@il&d(P2}K*AV5>`cwHzbEddb(b!pT7=`p=gVBPK8S%sQ3W?cLSqriPz)2HOt1`$` z#EH}!TO%PZt~#D?NqPUk5^iTO@}zV%rr%T8)5hs&QqIY0*)4h5;C!6UEn0_8t0s<r z(_=Rcj11IBq=}1I=>m9Qg4rUGUw8l|4&%A7&E6k=8-3uPC>VP*ZfeaYBF&~tq~ocS z71er9*SFR}ZuB#j`zKEF!P>}aRq^rhDRs&~j>pqVxv~4iKVb0A_AY^3STCXS7Jw|E z(`t{_>@w~G;W4E~9_*!Y=JJ%Da6iVqRQIg+PdQ>E#VQwDW}e)2V^wl&x)XFG``DJT zn9)zZe!Z;M^`Rk}u~u3f6TxHIyM60qaf#gQUmcGmcgG<gU!*e|!<TN~o_yNwVCBNU zyF8R&zz=-j2(L02mYidMrH^e10uUT(jK*>^s{Oc(X2dH=s-@i$Jy&@>5;m3!a7=f` zvnM}l0=E0uul&zfUB@%EfM)*zE%J{Bx5N3kcN$L2P7zgOK!LkJIjyP2s`dv?k!CH{ zW32&w&l^vvM{gD!R$d1<ELLonMSvxr0>n$A=W4(-%j{Q|yHgVlZ<bmcc@F2kssxOx zvRS7ia|8VW(ING^oVkg7g|m&msYSK+<)6o{N4=@L(~V)tg7Ot7aqO&SgQ`IBiypN% zBZ^nhE9<H4L4ZsqZH<l)vp^z0@*pHdWd`1P{?jKE<h*?SL@OrSMOE=wj`%WnyVws; zi*s?zDptwNmXx_N8PcB8;*0AjgLzUx(l})~bdTM-5*v(<<?&RzaNb^KPTRv;W?lLX zf+;K)`(J#C(+>_g9P=bG8Aj_H?Ftz->@BHzeUSjbu=~|xwD!5nXWs3wlalxVXT;HV z`Ch3=_lNo|O79~lv$;Xt5B-Ut_ZrTRf+N~o`NW_j4kpR2e3`v!3ak+ditD-Re20x* zx&GLm8QsGf+MUbB6VI%^>7;%lw6<f_@06Kr#&s4oqdU7ao@m1jr2$2s>IjJg7_|v& zpn;QA3HsZ_tWr77JRGn|YarSwxdOPX+5j?`s?c5R)$yEE8$6!mE^nCegc=i@{S{8B z?vD=>O|=e350LYB*DPHJaJ15ly5k1@sT3%O5AHBS$vp9-QfWm(YGMQe#lg{Eoh`Bf zR+?<~D}I>pUOh?Y<7EZIU=iEAa7>ep6J2qk;dn+eu|}B;E+qkAj0A;AN4FGZ=|i>c zgb~RL(p8M~@3m5i{MPRT11~1qbaeWo-+e7IhlOcOQ?n`3tORGa9#_R>B*BnCT6=ux z$>LSxyU!7iyAEj90Y)Cy(x&%IJUs}W4y^A>Oc)O<_H1UjUmqz%X}1*G_gpz#O+r@# zXDIUw8It||)se7YAgq$d&rSRqD&<o7kI5UrwB$@m@8hGi8kaEv5^`}(6Z#+Qwr6iC zH46xEXTJssH%d>|d5SpV{?ug4C?66hNs`!sRH>%V=$WN~AF24m4Qp|`3{7UTmbSdz z>Wub#T_CtnH(9U4t99L3t(7GCf!>Z5X16bvB%2*%7TV{5$nP|#myYoBATQIebucI& zMB423DBi`C0I<Twn;gaI5}M`9xRSL#cA2lAp7mt#uao4|iLrN+W;wo3C$m$~N0}kB zjU|)8DCY_{)QL=CK)RpAnZGcEw_Ib7185*I?8NKuh32@wI*n&|V?<&%@-uE<uS~ft z^s>5aYz4E!l*u3)tF7@x;ju~^9?#_?OqD8WKzG~mZ4Ivpb2%r~T3dBAzT+~kuHQev zoVaB)qFQS83<^!89LgYp+x?c#t=MXzc8O_FrgdcF(eH2T(LuzCN~s>6TyG|rFP$;w zC{b3vcyjhb<i?Pb!<{IsZ(9MFFE@D}WYtfl##uIS<C=}O0=4r@5c_c2DqWf!7i*n_ z%WEs2rd8`k9Z#j8o`yoZ?dD-Gz-g=rf2HN;0}8}YC)Jlm`xZOWHu1ns=zXL~3^UK( zp97*eACKQJij+Z?Y3C=k7wud#8Ox@M^0KzZce@>zxz_6DpK7q6&)ii5{U8uhbz(uO z#Q0cQt%X_x08ze8K?69LORC_j=ccSG_*iz2tSz9$@|XgC8<YgZ_M!xJ{`e|o8ebET z2|N7?6#J0PzO%t41WOaW3KP*3*Zxu{>-(|Be#XjCy`B4EC`w|b$uUf?Cvs>_7>hck z>-chSI<HN+WHMLh`?B5T{<P9PAz<l!VAzdqj|qD8D5u>h_t(8h$mKb}?9c+wQvs>& z_M~9r)<*k@R?qt>+rx~r&3?JcEMdWm4Y)EHB0wR1HoD2_n4jDIIulyIhq6pQ$b|;I zH$%sD!E0kbj?oz2kA>JUx<Y-5Qrw_Ku`sJC9d3VSy~h@XqO#DXQjZufv&<-6JFh2+ zD=#BFVAa}wGpFYulX6B30tK2PQw`ugO{pe|Jeg0Gh;hzpXiE;gz8Ym_#;<86Y<bP9 z4Kmdb-PEve)du8PG_B#O6WJAMP2fG5tz2-9*CA(^P-M2AKy^J)=rSR(^S0~PpYE6p zMhWKIZ3o>ik*u%CFFenUnusp8Bcal&R#RG)%9WL%SC$`$1^bXmRJle(fjNFkL^79q zQ!dhYibOG9c+T@z8zW;nuMy-~x43R99~e-nFg;$S?3+(f#t)^9<Bs%dcioY~_=a9L zs>Tq9#Mf6kJxzX|*gMx*==o}o^eLaZsw&8Zs1@wP9?AAbH64@W*Uv@2DNh!k8916L zDbB%oF^O2yd8<UJFU=e|vltrLvEzT@b%vvc8R&AU888r~WOwO3bDIu>2QfT<B~rmc zFMd!EjZeMT0Wzt@P@m2ZS||6K$xMc!Z+;PZCX0k&Ncwx<4Fc1Hzwjo4#xB{#)`*)9 zH9^vQDO?;s1NF^9;kHI!w2frQIASx&FZZrdP_^g(=JD9i1}r?RQ!}`Or*S)L2WWr# zi^)^R12aq15MsP>hFV;py~IJ8(uw$JIEqN(lq(${N<0|o|9P}NOSpAnh50M4d<GV) zS#Q*xOuofj)t&&gs4mfDlpYfMs-O?Dz({p|;#0dxj5cG4H&uGjXH}005L(#NID$&` zcbq)Fh{`}WeUPUc9=7uiSP=ite9PA|3CtU#UH~uf7N0#S4AO8&h-<35G#SC(Z_Cd= z0MS<=1wq|SVp+IE>$~<MgSK+X#;H7+Ni)E(km#>xig?4_PDozE?r_94LU=Wb8f(j_ z-VGN<XIH)R5CEgdXU)$I{hBb#O%zQ&W8;<l*E-7r)*!aoX5E%DHcb1MulI*=TjA~O z#aF6!sbk(!DG!!+m)2-$BbR+olLA;i9Jb)z2}U`)I4KR{o8sS{RIKy@4AMaYDb<0O zdt(62CsDNzVE-tvHorebA*9<TCSZNBHJHTDe4AG^_}VkJk#IZQ8hIzb(ph6=;)b5~ zRdNjaXZsql&m(LlF%O=PH}rrU3HkTs!Kz#@5*$X_M%NqATkdL0Qw`P4N)p(BQcKS7 zGSc6&XO!J~e|1O7guk`46@Hzr<uiXywZEBx&#5V<_Sw>Jjy*_gd4IV%MUg#BW+q2+ zN3P$x$p!{7vZ@)?6l_7}?mPgRBGaXXkU`Klp35G0>GjuV`X|##afIoCRW4d@p9skS z28~{)tT4b6Hs7lxE_KOH08|$6H9Y%llj=w7hWMi%WYT#2XmlC{?%A09xwhPHR=geY z`qUfcvQ@8)8FF}r(iv5tk5$UF6>KwvKgBh4m(JH^yW*_W0BSEq{dW;q=1RrR3NvE! zdwWK7-8Zj<Ves_bosJaoCT(49vq{3xJ|F7Y=oJJXF!GE94KI0pf#AY7JN2mOHXCrE zI5%v5cw`sycX1ASzCnOpLsvv<AB=t&YfBzh)Q1yeJCUsaZe$&!cI7iBs~iZop726! zYtR5*>)f+CkCNsh3-UZ3iajC#^qKRl@k<J4Gh0flr(>F?_w1hY$ev}04!7AsVp2gn zHQlIf)Sfw9C?;cIs4u8;7zQ0wAn@5_`{XDUV#5>#DTu_Vp|y{m9X&Y@kUO^*u1FYV zSzfNh)lOsOtt4i>j?1Tyx|NaRWp9S3ko8|Dm&>-%;qe#09ac9n`9-i1`3XjB?(pq* z$A*XnfbRs)&fvEI9>7Kye8iQIb7(*j4IJh82Qchi5;<C#E5gv0gZ`GD9A-{U@0ty- zFe#WPevazs-OpaeE26k_fLo*#w%J!lffBWRi8G^$<}e|kAj$zC*&Vf7?WPPkC8tWg zL15)&>AX7HSPTcO{T-Dm!Vf4Yv}Kcp3KU}!Y{MySvhWKA-!H}VBqTg$Dzin#Zs@ZM zUI!JpTpcvJajE$8pW2~u+MaEwWYu!${@|S{)5(u-{*;o$WyO^U>8-{jbATWDj_Ncn ztqZmrqvsa&RI)n>6zsfxq@~{CR64w`fi}c=^@4Q@Vf~gMlV`d4vC1bYfh?!;?ay-; z%>H#@y-Tz8uIaj5iH>uBeE#~b&H*(&zx@$HB-iksA^vyYr^lNF_7sls?@x(7Gn*p1 z2ZoV7g@3MA93v7RXh8j;FodgZGlHklUpd#cuO^AsztE~5G@me1+SoR7-~Un}&0)>k z02ZIqOY<74b#N#I)QV1_DLS*qg#*9+Ez_^bQ^azy!BwG4KdL8F?1<N;pbl4wr5~Cb z9Mz?A-nRK$zEKr*kHEx6wGf~KL*vaD7Z8|^O;KP{D7d%oEs(2GWI?0mju0=NS|BSD zlu37#?4Jd7WSEL~|GN-;BnDtq-L+LN-azmXfFpi_ocIUFWn!I7#vv2E$$4MA@F_7A zh=v4LP-*#Bw)#X;Sgb39`^mKpB>RiyTk_Oh4#~9rhbP}{{9(BiIou<7P<t8lrK-6; z2Je9I#**j8>i{vxVjD1FiG(Z~UJq!kFY%b;U!i7!!G;s3(HBI$TCE-dE#d?8*)h#G zI;Jr_r<U~go^BmkD)}^8rn94j2bWkG=-vI_!QF6UguC=?AG*q#8?@5g;Nr+G3h37h zxP!ners^zLzUzv=FE|*v32dirMqJ!wG@g3GL0d+9Y@D6W!cCVEpo)7Yzf=*-l?jR< zmy2TRBb#fW$;1Yno!O-x;(+E^Os7+q?ZcNp0kMEr=hrvx@5Sb140t@?sWUTFB1qsj zWlIz(_RNexVmu)Vz*NEMI_3>mqV%nC6@_!5Hp}h>Gk9B7WF(CmSrP^-VCuF|?f!X# zZj^~yLzNcxLbsHSr+TwPp*leY3@rx*%Nn54A3=`fIJKxNvmRqOAQz3yZ!e;EGjCQU zyK&@wRd9gZqm~Yi7)wU}>a6`eQF~KNpRsL+(TYNhwY=QCq*{U3dLAWLkAJ1U!;%TW zfpNE$$$wZu-LxU+XLWZVJDfc^J0o&++#d^@cRCOXxOp$>OVqW4T<y=!3U-@vcP_(Q zm}n97*%K{-`=)v`HzT8?IKFF_IBvX01{eagn@NZnCJPEX5cdDXnn{hu>G9$V-|xzQ zBIzHZi&bLa$8I2?Y(Ve@09o=l+L_DR?v{p&sw1E!*dh<lqXGTCS7bO9@4^~FJ`ooO zW2d;7@EC##HV;cew{`E<dfrZ~_VD5vA{DPnj`s-|5(TT91MIjv%EwQT4>*QrP_3Yw z?cfT8x(l&0(OxhONb?9km%aX|^9I}X0zo28(-~p3z8J_CwTOi3cp_~Y=Mh9X0HbN# zPD%jFuiF#Kif1Rk))=I=z_PoqkWRMNbwF-E*)TS*Z<#@yk-asnp#4o&z`OS{LHL2k z<K~OMOrc<>w}{PpmSt5uHj6xpw&En3`>?+1T?`#Rc<h|vFN#YD3K@&*^1R=1W0^&x z-9*;yxeJn*j@A`Wk)en>p??>+AF12n2@TS0{b+X9UP$<PF+8RX`}pR52<C~i!D5ND zNIMh9a3qyJr$jl8*Yk;pTBjaBGf{VXo3~7@5Z-bg1-CV-3krb}^6}ESyoBV~B!!oo z`NNjXwwHb^WzP}2tyF?TZb)pyFUfhj+&z$Vg`qrL51t&Aka@SEG2U=TH<jvEmq9M= zFmVNQKd+b#0(b(XxkFTI7W%I)X#zxN@nCA-n(6%d<<@u-hgG2}*)EgrxFY*^Tt=$} zKpUt)rp-&ouuw4*JcO(~sj)SbtQ26hs1rWUX4eC$!F*YtvxKl%NHkSgH0DB8m$$qJ z+Gbbyy+P{qWa~zy3SENTW}Yu8#z5<nqpi@beBL|i9Qv*Gb$tcLt?po3-Gn^GVY2&f z%Y8i~3(zAMOHO&7zYG#bC)NC{Jh9AhW!W|cKFe&q!y*oM_jzcCB!)(ADC$m78UMNX zFy?h1TT7v*#CBw1^IgwcS48nbJT~?nE32gK1c}pG1RG(vE+%>;ayVqy1euJO|N6x) zoG^)N)*8TSNlQgbMz;c3E#h3O|0k<OA1&%{PRpc@|AYl8I@hU@mod5pb299&{?qCn z&=vZ6hbjc{z<`)X3ToqYNNS<pqOOpYy3Jbp?2S|klb5CmT2z%*(l;UOo<Nrc%WB&} zjnIKa{p~;}+=M#FU4cYCAc`*pMguA~x=B&?!W7)LoMo?*NmE)simmqqT5XaqZ9?@* z!MF-Pfw1!LS6FMD7OaYNvO_txg5f<4tnUOxq7<UJ8sq7xFKu%p$vMdJs-d3gDnltV z4;vjYXFu|@4e<V)>A=a3BM5kWeYUK(|LWdBselW<egYudeeH?(;5?%US{w@9u$b+& zQU!~y(BxxD8S>HCs?cja**PI=6I-}n3-t=u;7x1dP<bN}f^tvfE5n6_5<X!dCksRO z)=jp%=HhrF0L=kIUv6hu30)YX4QO2O^5teFNNnDfd|ZSybverCo{&E+(7yUHfL{xE zkAHNmI-o?uuVP3-IZL?SZnOep0tYiGep5s?2jhH|t(V20yD&d<MXgkNtQT7a%^OOZ z)flT;Pu$P8XCK$}AAI*?+$@nITpPa<An0p<P!W*7xo=Y-q-bu@2NH8y+vY<vHio~y za|a-YOlN+3^^aTlbvq5bU`Uo->ndxQ=2^BtAFPj6!zj7&L}qU)vvddsdLT=8V(XC~ z+Ot`e4v<Xn?H6za5VH!W*Oo}(wNz)j*)Eu`i|m?b{n*WcIn~%)(N0*$fA?SEiGjwC zFP+@m|M8{ZU`W=?W2$Ih!cnQv4FA9UkS}buYc?*Svqct25xG3>Li#GJp)9}k7M>de z!3Q+B{JehyaDMfeq9L+unpOVA5gAh(MID<Rn27bLHqP9DMj5SuRxnw=(xMEs5rril zuE>e!ic#tRRFxx10WbvjU<yIMx@$nY0q`mC;3rH@k^4T%|5-i&){p56@JG1;@B#kB zwQW^GCOg3i^RKpbDLs;1d_6tPS9)Hr96mHR;TOZv>@NYJVGw}B<=1dJ$^&m*k*|}) zq%f??A*S~?H2j+A<>jz{#LZ#<g9w+)Efu-*GLs?TOg=^^guJev)zwCge$J1bk}JHl zkysSwPh(j6*~%w0-!MV^MVCqO0oiqOfWtzhhWdm{XizIOIn>zpNEfMALHO%y5EAJm zJ$FgF%_=`amK4d5VV#3JBCpS`+aL9=`40B1ox#P5$fS>#YSiy6cKzJhES|X-UeU=# z=AT^{h;8Q9llz{kMxp!QB2JF>Z1>ziCj^VOf{Z>EDWSb+;A7{Xbzgl8xD3uNL%w%^ zR^=NUR0Rimh>|{3kChGeQVxtbU7aBF^WXRpna(2x;5PCAX=_$OKdS~5Fz81Dylw_% z%hS-A_V>XJRHO>;``;qyhB)HH3Q7{Mo$)q%%Ybpc=BX5^5+@7WvE@JttWD}gjug-) z`aKq@-{1RhYtRe?C=`i}iYDZLEU@7P7*eFxm(M0dP^#j5LJi=ptqG(e9Edhz;A_wz z(y*yrcYG0JepR8>YY>L_&51AgOK=DJNM>t;zIVGDBx{wObZFnzgiK07iT)qo|Jhu8 z5M(dL*ghh>aKQg>Xs-}k0wSt98#J^G;YXVnfcX3VJ9o?h3CZyRiShlmP6;(mvMhR7 zz_D_Gm+Q2V%D|uMg>idad;)xZ{#Fk4ZS*f<)de)flKeF9N6UZtvtPY1C=tGMShOE1 z5c<>y{!psVgny@l*^Q2{#XgC;&7@QmYXdPVSEezHkGB5UJUbO>5DAZ$=t^bk0cKOB zg2JKb*{3L^s#<F@kM|QmUqoP#>_@_IDmS(s$2tU1UT5O*_XNI_mGp&-K5J{k4%UC~ zWK}`FPHoqanabucsAv918;H8JIn4C_&a?t3OP?_N<^!E)07UIT2GFUb0iXW`Zhu-~ zk<C_-4TG1Lcga<P)kr!cb4yorS6Fqq!StQsKr(YqPSg4Ea!WS9-|LC~O)7_;3NWC= zy$o<84wh%oTYiIapCA9vRSX^c0;Ee?<BSv~)p9XmvQ{}2Pxun50m)Y)kye36JBdN+ z&Vf|N?g%=p`|fJ%68kK8GgD(wzWM4>coVbQi1K({v$fIm<P#yKc{xvu7?<}xvk9MY z7`jRiAZaKFkS#~kR+<eNl}hA4pKXkY#Ay4koTCpbT&HuJEHydqEhg8RE4n>;cSmC9 z52I4arMg}3W}h*ejVGOJ%k~7p;ugiMG&_c2F_{(gThBHiEj8MU;PN^@afv1S`n{HW z5`Zjpn5(LBUeSJ}e12`K;LnHdH(>#kfA;jBt(t)A7fHpXq>F00Q}58jr3TLNqYopp zXa)_g)MvIn15MqKpWKGy#4${F2_Q8F@l;}Z$Ni_5OU<qdKi{TtIEE^hYD=MXM`mXS z{mgYboG&_$!spEc<NYalxKNv|#p$#Y31F=E>+(lZ#bVh8yXKXOcaK`!YpfnQfIb1E z<KAd=k#eax_FQ$N`jnZ@l=I#NMZEEOx71{nFbt5jlSW`NC(GxG=bpi?(qZTky_qSI z^MgNF5)p2t5>NoZ)jfu%gRU@J3VVu$rq_{alezX}dkf_m96`^!Rx{{DyF$Zot$+mZ z;O)^qWIcP;JqJV9GE2RGdA;9GW?1OkQXBU6P)Z_cwasFgp!>@MJCJpH^Q)ekG|0A* z?9bIka`AgpKy5eX;@k)9z!fLR>9IP+Y^p%4(SBQ542488$1w9)wSXGXIkZ}F$riXh zi(`>ecWkijcwb|<uUw??HPV*B@3Hqm@%tq<>kgMYjPXc%8iUcGiH-IGlI<OfJ60l< zhO{e@if+^vhvWWu{`U+;WCR2Rv&DjFH-SvE_@ZBE1h2;?<n&sG69DQ25R?E5UYvPd z`adlA*D*s6ZV1p1esp+E)T#q}mp%4`c8&RAWLQhw1eeXELfq|Sl^^J$1oc@!!n~z( z)#OYfu}8Cvtuh>VPbQ5sbC|O5iLHmXn#>l+)aApbOXEh(DGvc%irpu_*ONJ}jAn}^ z6pjarpOHzVB}X!NRr(l>dcWLdZVnA!nrAZB=({`@L9Cw7x}$x+>Hn2D)Ii`1*!yVp z_K4zu;R5pc>1k#LTb!Wn6${$Hx3yxIovo3?<KhG4dp0)r+q2xGi+Cy(MYX1v-!0-m zaxvm>Y59w1N;2Kxut%S`b$Z@i8OZ3-%E+j<=xwTm9WSjSV&6GRD5;cb<{qbb<4cyZ zK>}~h;`yyvs6ZV4ujCvX7;sCCdO}x7fDXb%7V@%WuI_Mw!nJC{Or>){Dup#VBO_xT z0Ty;LCg7&ktK$_a2N3~*4~xYjUjPiMva5WK=x}AM_2<E#TSM4)7rU{@AB&X>1=2yV z1C>G{$kCm0(|d^(sL?K!gF_m1JN?mKCQh4sO32m*l@f_GW846ufyCbEkZBn(SWTZ7 zToGEUM42IfM?nAla3r?c84}B+Hz^w04YPS$?UD-2g~4LB%h|KY{0KQE;L;@?_XU7U z*cF5xTr8A#fWV{KY>6lpT5*Keei~%9;NM>;-M-nN<%`Xi%xr?&Q^<Y=2aDFh>GXgR zkpW;=V{eu?y<=2+EA@MnZ;MXXT&K*ZzZ}2u7V&hu&J$ZFlPz!cG}+hzMyN%S)N~E* zGAhpF%-N47+3N4!R&P7(Us2!f_IT;I5^GFC69dF-C|2<38+duyxHB7baLQ*)z3=F| zlZP$|ZN7HS3rac_yS=(V<1$E3SB5{y*I)h^ux4XYf;O@&FZh=~;%ig*6?D>Ytt+gL zhg0gUDL7_O<Gb|rQDin=Trpf#*!UhDYt((Ivz(Xb(T+R5+@In2q0+Vp^v4U<qv!Nz zXFIFaP{J-pfHS6s*6m`asY5=}zyDL$ai?^u0g}fClzQ`yjN9cNYS$Wz#Gnxd02eVw zy19$(t(}jW{u3wuGw^;!v<;v@Nh6{~Uxi7UyQ&ByvXDH9LnHIfrG6gBhVHn#{Ycd_ zFd)H8QTM#4!9WOs-lS>*#PWPMNG?OpkEQf7*`3o{to@N%e;+}=HZV50Oh#Ldi*5T4 zQ$8vvH}#z{bKz*+WG3xqmsiW*bk!PNZ~>kQFQ`~Z3owjKz86`x<b1->|1^^Sd`8rU z=nlui)mBoN2C12xb&CB^=6zlT8(81+mosd6nsMO&jS&3LFF)fpK0Y5JtHOe@|9yx6 z=g8j|K@E@>z*AR|{}P4z&;S4Z1HV3KetLch%_b%c|9$@dGa~j!0|WV^s~gDuMT-#< z0?!D(@y38+gY*?0e{&giIOO`Y2C3EH@fnZHO%lL))uH>R5+I60WC?``grJaq0T2vw zIQSW|MUY*8FP#t*fa`oWk1FE*=RuzDneO?XXWoO`y?hsQ*HZ^BM7Qj@O7KjF)=Ra7 zilz#O>Q!9=2-2ujsxS1J!;`YH{w$S^GdPsYk0TX~$3ITkmyYNK!a5yzgjosEhu`4V zG6y2Xzq9~=;dSrVY>0jZrG|s;|9L~-ke<Wbk3{|duzExrPH^NH@TmK*ONNdM@O`TB z^f30k;J?9q4TP&+DrnrlBoDTqWdj<^5!C<5yFiqNK<r>k{g$ns0{vldK76>4@%`QP zn=TWc&jfg!mxcoC&)@#-5DE}@UeJ<vfcnQe{#qs+!PSX;T7K<|`rHfA=++W|Dsh;U zEEh@-CdCz*&Pv^Ktm+HE?--@mDjtEc#z`Rag*_$GsIT|@v{9<0Urml0`a0Qu!L4cD z1Gz<*79G?7FbjbcAE?e`(GpAZd-bJ%pins=+Qt7up-xD|z4>LEh|9n`3c5z+d;FJa zK3gX-#0BIUuo;Tj`tnD#z7(@s7appVuM{M>xw^@&`9qUmvQkipBuJWZ+HLf5{J==> z$@J#OrNB!;_NQhy0)c|O%H;rP7_gi9RFQm4aFlc80B$&+KOuom1;Xf0B1!KtxxaVk zH37lLN~kVzkk?HxF!)d;v3%*vL!-T1Kup(j4z_{I$<mWc0JN5)td?3tjA@@l07;fC zhr*vCxnXbf0Ohin;GSfk13ZJ&ujrA8QOu_*tvzN7TW*$OSoW^AIKS56n<LZ*Lav!c zWfKa(!-OF|!$QLxUJgCO`hH!(d=N~PY{21jh0i0PZ#-y7yJl@N_~l8l%?-6bo&8<c z>8TMt8?x|L#ap1>y^)#|T@xd6CXT7@iUg(G;H-oab*M&1t8!)G00>gr981{1sa6<3 z_fZkYG7T>$e!BBHe}2h`>Cdm6%ySZmBY}VZzE<lX9#-1&XUcUJ7TW+U=y*pEg5_{j zIKc-BFsao?048d=(2@v`!_EKL<n#s5)S&WZ%dry@O89*T@(IdTqPMool@K_DcoJb3 z9SSD@Kz?#KURhMM1F8Wrq{ek8mgX*Y0!z=|`+@eE8=XjS_M9g9Ac5V=<EH<hkWS?i zi_MqLhC!ztw-yYNjXrK=G$VBCi21hUeqCU=&r)Oh*i=!XJf+m4Y>CC`_BK~6jbm`X zuC5)(5t*%KtY`UFD(dG`KQoq4gYV)>emEJ`p#W+Rip557uM=@RY_VCaavop9kCzL+ zdYv&EGJ?nPKr5Bb5^;63B6GZa3y>!j<j?b@3OrM$i>B(WR`UFzk)L^#eurJN&?tQ) zBT=N0xF{AJsSsf9P$u-@U7R=HqV*l_+Px>UwWv15EG!#;N<?dJ;<6jQT57QmdP*e1 z6b?b|(#@pg`ET$iTXgME4Mz*W&QRXA4TMd0!Qr-6|Es16J7gz{{T=~RfcrJ9Y<p#J z?_C~rcg(9_8axCaI00dbg<*L1XP@_t*tY^!#&&g;u*qvZke~B?IF=N1kxI7KLcQE~ za7ftU#_`C))<*gJ+PYU~Q72z<&gnrGr{lS=rWV_N`hfF5VBpv%;I7x<aeAdX9nA|D zD}(a;P`WuK7%k0$Y*#EOJE0l4-Jim>Tf9*BsOi)90el_dX@#Q_0J-^}_)rg&91CDl z7Y#5@;79R@)sk3C1P^!9#Hx<hH0MVtL>mwobs%63*EiPP|G<Y1{NMP{=+bgxu}0Wu zaOglVHZ4zBkC5?5TJ}4UC^Mz?C0M|D)d9a8S)%3#w@Z-T9n*~|DWt0(1&|PiZ45_W z0o%*@88fd{Mtle4iHL;IAk~}KOKsjdGtS=L-gno%a+F$C#KMLn=>>9H*S^T>t-Bl{ zaIp|HT1}G0%H{N~!*lTB8Y<=V7W?Tf?o(3mKu8*jN|jK}Jhyh0w3pKL`JG8Sq&J3F zWaG<Mr>W)YjSQ|XF0wTyW3&34jJZ;=>Rqm-^4Vy(PuEaWma|D`Z$UyDfKD!;c_ROR z!9a0i@~G9veFcLG)QYF$XzZ1Xl#Ai1wd*9EwONdY9@8k5iup0CHwjk20~B!qa2$iE zA1*M`b4N%Yo}^NLg}+F-71sSV*^KnU1C5~~l}^I2c2kl6x+-2}uOIIUcT2N{m#b@6 z-t5`g6=?>W?at4`wAUUAQ|LVimTH!2hVKj$S}3Xq6I!m*`{h58kXt=w6IDf13-Wzt z5WYfI4E#v&|Jb_9s5;gxn-B;P9D=(OoZ#;6?oM!bm*Byj;BE=-?(XjH4j1>SyzVzW zZ}t4FyXuyFa_ZRLdtj{!LX)B<-yg)=zTCz{Bc75co?5f-nX<Rr`gC^R7SpoMeWz8P z#{LBXW(o-@#_?c6|JN}kCkN|$uT3>@!+oAa1rI_3aGWSWM=;VwDo;d!?+;%M&0cD2 z>Sb>didlb|_VrlvxnkIyl_?Cuv5(aR;&<Ed3UD=>0WkmXMf$m9*Vkrgkc3=M6=$2> z!9!1_s_U;x)8(|xR+B#pMw5$&_sH>Bcx*aZnM~F^OXQp3JAW-E6H<RTx;m}eRa$RH zQZ82U?`s8ST(riE;73;3!d#WKCdcbObnO@YWkmb#<cK!|us_YJk8O`w%7%V<Cg*KH z6z;8U?`n{0J|1s2jr!||dhMRoOvK~%RPlk?_<f<ZppU?7$Y9aWN)C%<6pvuY-RSIY zCGD3ZRuZprrHgb9ua92$gM~`XIv>o}O5kX;YSfZ;YXMTg>*UIrYzOob<wCq!3k<&2 zr&bA|tE#|HP^VC_Q0A9|{s`x`<5L=&TdYQ{RXGTo-5plD(OtQoCLir%E1u>&i<K$$ zywhA7dyT=Y`J?`eyLspF1fC#^)1xEL-Cpl<z?I!pd~)`anl<7?$g)PJT;ESd6DPAy zSgZ4?R>*`>xft6q?CSCRWSb3#5|hj}PrxP}XORX=hM<t-s3ATB$SY+TI9}dIqi0vr zk2)=Yp3<*KLCfXv1i#~4UKlq(c5ZNATahR6_4=~#EmyA9opdgv)w7JnW;VssVlGFY zScIYz=~N`${qA_YYX`q+D`HkXsUtivg8KT2)jDU$BSBaaDlNtD9LRYTe_O8eJTDTo ziNq04qSKvYnV#AmMjaO!P5EM7x?Ed0OYJO^%ogJe^0Hj<@WeMXZnAjkg?S7q_iuv3 zR=|dTxH_Hs*3^RI^`4M?!j9FlhoZ^-)V<{>huCH@Rydx)P(*{xhW2!+E&+?hln?Pt zCWAxRKe(-!D;@zP76arbD5H)cJ$2_!07x~{#SLpwP&wU8iwXM8*`mLC6q(jO{f^(2 zap%gS<JKLqQniQ^s)5ns7Tc!!u;f~xFIpm4I*!Ym7oV!lv*73ltOZzDP*eBXFn<)j ze3K(BWgfVI@&-r6V{bY==2s)Rc|;D3YNJ5`c6(PObiV$EX{`}@KXjZ7BG1Fr&rO!D zIfRsmA28OM$Ba^J!`&stKACXXE2#e2JL$exO<C+5>cyFWtfW~Y!1*5oTY1jodanHl z2%jIsMe*cmFk4Wr-5kxxgZ(bPZ`5J8m+SlvVRl@1I#X(aUb_yEGrBgI@(lGdurOAe z0K#cD(KfRspGPX0H0!J-ft-)Bot>bdfEiNDf(BFJsb)PQ=&Lc*aD~aa4rPa+IIE4C ztRKIh1c6q&T^uq8fySM_zQtAmU6J^<NR3rLJSom8z|Id_JF3RcPu=Bx`v9K8>4D}@ z)cO6A=lj7tMThQbET@Zg-06e+ElvuvA&2z+7UNQr6E>WiAqKPcXFjTSO%dy7+oeWL z7xTpycIB(mk^pBzCl;0VfMd~c_pqTPDoMryne0?n8+lf|zO{hh(tU%dFBj?T7A#&5 zz5CaM`0J1ecoqG69_Gsh%>9-l!&^sMC1ZkXg;#C$=PTLo&>HJ4m-rSJw~xB-*7F0y zk|vgvskTuY_kx|6(zmhDX*2@JWYa~$9`2<#)aJjKv9*OIQfD($Z6E!Bhe`A44u)gY zVD>>n42Hw!7gWcP?gx7h9(B%+P!aGjTP6%FvFzsu(3kU(hjmZEY6C&-4q~4Z&hrTh zG*zVi<=$S`cJ{GZIx=tJtNXMPKs55D!kRk*;|1--?mn8*<^4VkzdK{_6d#XZqs#?b zubV-URS;Id@rO+|+trtje%Q4l!65iu3*$_VwY?h1`7NN4<_nd_>doOBrOPu@fg5$l z`2Kv!ti?=Yje%SEf_ceU&{2}@>Lu@6UZ}2gPQE0X;v|u9yj;{+?q#NTPV9HOvizT( zk*Hr3k_)7^9jp!&B7eQIXYR9_4c1GVjgR3<ocQsjMFf|-oG&S#KEa$B;`gog6SU<D zT7n^Pew5XMM2ys|wd~Xhyp7UMsW_eU%wUW=|1vUM&g1f0A@@2rfTYCWyhX9XYWMox z&lw>C$nT_$H;jklT5&j=7sBJ3E?}4cGIu(hkq_-5mwC+}n~g~I&NG(AQtVVU;1d4R z#oqm}g6g0Hc3?Vk*qc*?3%ifQA&iu=b=`QSRBisPnyi(vo-!E+!A+;hKHc7q4O(@@ zMS8_!bQJy27LMPyubI;)=;DRW#VDH*W<9B{F1q>)Hp}2r@(^N}749%bmu05)s$~S* z;6tcdno&Tk-yg-+4N|ba%w!!2N~(XURua@A9?aD;dN^56Fq^yt!EwCr_ZKz{nK-=f zq)ox^qEs#sYkzSTOG3*S!S}joa}Vk5PWjUP;c(;qhXoi4PJ~ffkyiIxB>~J^zX6qv z1TbnxB?Y`O<`QK^9Vd)6o8sBx?Lu%tC|5*1d~SCk)&;{)iE17M^a7?rY*8wu8kCy_ zCU@2nY2ULx(D4Px_>$I+xu~mgb_otQJ0D7Qc6LfIfl4(3>neTAF@?@_xSM`KR{_1I z)a@FzKNsKEVpi%>DgQ1?gt4_0mBrh8Vj>Y*p55^1hd(Vg8bp?eKUt~FMJ9zKbNrqF z(ACSQV{N>9+FoFg7{{}ieOU4HgKNkV1lz(UBb=@`2GHF8k2lhv`ZV03h5@Hjb;TWY z>1%SZ=&(Pt2V|HOlE%_!8o{!OI@UAmo@<nsXHQ(T@IUB!NQdq&R(;DwqvkkY#@{E+ zRP&hl=?_m3(pMx{tdM{2Sy~<te~UB!d=Wz|0V@y~tFg~);iGq1U5w0*&+9$nWF?|m zZxgj2xL)byK`GxQ%5dDXztpA{<s<be*a30PuL86?EH5`fTx)rvD|06F-o^EFi=(Lb za`CQm;EZ~&v-_eQ<BfNz-Ge;1Xh2FDaG{QI_#x#DR7#8nUB&6`@|^JplIY4oEOW?d zk54saAEY(O&m#pl04+A9NX`OK#emI0pw)p~b@1lvhiRd0AM5peP`>113&oDx+on%I zWR)o`%C7mh<s5p?^IU&c6c1cO11_nrUqp;TO)9_WJYG2-(4{Vk*8N-m>xdBWU5oeC zBqaY@V#X+@b9vBS_mkv~VfbZQYSi2gw`s@$(eJ^B22V&spl1l)r5m0Tzd+w?jKY+Q zIl$%^XA7(~<pFRLz48sZnf>K@>uS-7_91^oNx9hJ=DTw*<+8f5G#6L@BkY!Z!ES>t z1d=&CD76%Rwy_Q?s?n`f<Dcp^0xj}t3df#d%dpumF9^I-RjTLu;|8Gq;34X%<J4xz zCFJT>W)BVThgqYe`NE_h+S&lwXS!(iE6?LF;x6;_xTNO3<@u_bt!}%W{}G8=yFRhg zG4eJ|l;QQ^{dl|_tgM<N8sEfh{o~Eikq=WNtc|Ugzi-%J;!pz3ua=f1`vqXhsUFAf z45!N0Tb_XhDd#c@Ga|Skth!mqcnlp&3&pcL6eNvlx*}`^>Tg^~$x5W#thPztE%+l4 zB^i@?{!m18nK0FfPPiFkzL+1=bUczWu(1s&8BC`l_qu!el=3_)M1$>r{<u$r?0VsZ zh=%2oj<GWMUKOCsOWE`0jvK15Wyv%|sW)34GNPG0j7fH@fU+8Kuew{`qtR5t*#_fM z#{jP#L?OqJq&-$le#h|+jZTdZckvi+zNBrlskbg59sJQOwh8u91tkLi<Hs1*DA=l6 z!f}E#Q-P4QgM)o)jDA<h<tiMYsk9sx^DD9le*U-WU=urm4072w8bShO0r9?Z)^p*> zhhLkH+t#1Cp?+*tsH`Bxh3`tr2SIm4^sRE^?v8DW1YR}E9~xi|a%K)#1(^+Mm=F<| zR5Iey6#x2TvN}Y-H!dORgr(B<h7dF^to_M%t4+q0ELZYz98j`p^;X$Ezqd6uro7D} zb?H<fAt7-fbXQaJsTyr!1nKXwv;FQ$Nuau}t~bYAD+n4%yUla)P=Cj|$DcmKvA@eA zh>_e)ge<^-@m26<a_Z)EHLM%4rLSw16m@EQ)n#pt1=EW)A#*Yv$Mr)?KGFw_j3rLz z)4bJ_(@&}WTR_cD^<X~pj!GZz(vv|yxs5-7VIEAKZ?fLu<Qtc1hlRN^-t9+xCR^W6 zqS={!Q{N2tX+R8x+;mQB$+pk3=IM54PoL?^U_|wcO6g|FS&&*DG;KqIP{?JXGj**r zZeCo#WepVfj5nH?64oZ`m8o_8IJdWg>bLQ(p53&5J8I7IDi(xO(z0|d&lGE?(%bWo zR6^?+jT5!`-0aJ<KL$Bz9DI4Xsnb%)VF+uy*AYm&`>kHR@YN$hRpksv5Hc3TwCC^| znCi7d1Jz$<UAB@amRjG5`L!lrEj+o;u)%?|aqqzPV_T$LKg>MwLDIH9SJe)C!quP{ zoP|+Ai;nfq;aOL^2Tpd7Su;FF%Ow+2${D1{WNm6pjkhYjn|p%-_xgxZiP(tPuNrAF zjq~5&BwT^jc<jaXe<s!!`m+hrepevdIIm<DLB^#l4%+*;a<fX|%XiTHm>DVbQWE)r zU~*K{&%w`Vp4HJr>^kH@xx{T{XclZ8?b#sjm6`|9UB7_e3}(13F?!-=sYAYRi%s02 zv+7jy3(fT|{3RU-h9MBYq=oJ;+TWDe;0&J*%5{e;osjD5KLq1Z^x>7bip{~c0Nuuq zu`Z=`t1)YF3aTLy$t%ZK(7N_3R=V2ZnyP0b9d0lT@H$PBNj^z=WN$qvk~*!<(z||a zi%@PkfgkzFhrebloU(YVcM;U-8E~p8EERkWc`-S@O)jbSZtP2}<UK?6xfHUX*D7q# z8D)S{uy|O)|LThP;Lv~`&NsoDY2b-JeWf?Iz85}xar7DoVZY*|m)rq5ZgglQ9+RC< zGsj_ky_h6!8n4r6xE$woygTCtZDBOrxspI8_Tpr|+sc;BL`F%)t?m6fw>WL<y%iXZ z)HJAbn!R5TW(F}NH!pPJq<>szHlKQHef*5e%&QrgEw;cDkVAhXk*veBoYb-RB5U^4 zS*X<NNrp8$AC_|O79HjCacGP1d!^T4Y9?oZ2Mz)bIu1S#ISw5TD-JIM;l^+9tqhj* zS_lOjz=03o!y=pbC5oUifbyf(Y&`}Zw@%8J0-y&44TTzyXMU<A#G*%e7}&H?NV4W0 z0EoUb*sM5O8H_4s12*;VeYY9@h}9i2nGO({a0sj@VsLHHht9_zP8Yk6E-7XIpu0Jn z&m>|q{!0DDN)hvdSF@fRh)Q>{Jc6^>UFM|VA?*`A8%Jx8X0``UQYb6u7kD0zCGYQx z)Mi?rZVOecmgHB1UL^(uQw)T|DES+``Ep$ed9UwW;=d`YM#?W|$rEF-FM-6H5MvE) zmTH?OKAWP?bxyPSZlld#A!HSBVPb3zX;_4OTYam2f7F8eFo$tl@uEaN6@|wh`{OgM z030@Jw!0^6iAp&?r}K%DFlnuohL_bUo}$y-5Yr9bL<J$-e(0n7&1wI<gBPW0Wo!!U z_zceyi|g~#MI)!)gdVefc7ZN#uL^eLdfd5Tm@9IB9WHfyl-W17DNc^>?zbKZAXG|$ zUdg0<K&7%|f{?LLdREzCAj^-*<IJ-}y`Cpnb1_dda|Qwm<Qjo>#R8}bkUd=5{p!72 z2RZ}DnJpIA$G|Vr?=B(ni_jC}Mh%1wU0z@Nck1ivHa5ru=w&DA0Fv~P(`-pW3U4IN z>`YQ(3Cq>Fosn@J13UXV{vnApzJ+RZfX={>r(JhqfJaBESgEhaCH6DC;Jbd9ez<;w zex!ayDJV8<KgVZMDwDEmT;}3(V3!-CxL&g*S6#v0h}T9hBv<Y2#n~oWc#JhgEVCJ_ zjwcM*+Bh6XI$jV3Ol<!IpFG_gO`U1dhI~98H>4C22KT_m9!5a1;Fs$S(0MfeRkxVK z{dm(=RmnjvWpcvUqQ9B_WAOHxJ18Q*AKX1tHd&1Kw@z`7ZJs~tc5;3HB%l=M*xc!l zi7=YXN8LC&rTh7|h^kA4K!tvc+`{U5p%O>43AsP=ESGBs_@)@s^QNi#Q6qN!V$7D) z|JTiMq-NE5(~G}JjX?0@rGMR1yVJo@3Dhmss8brW(>A2=-j7UoWbm$}jXpOF4J@TE z<PtRd&5g@qxhmr2Iwfdvg0wzQKSWd?BgbTV)&BM>>2|eOOZJp>+sR!A=ta~REGlH+ zOsUqtbj!XKwwxD|A&Y9%`%|+q`<=TANr-05Ff;h?(`~i!ZlCA$d#-CWf8(sRnGC0l z4-GraRKwe|<n=lOD_yRNNSV3Y_Ha-^{RDG2oVSvTk{AY0;aT{4ck#Xv1eJC)Ye*(4 zojmrF*P@-u3Nwf(-wmAS6IuDmrO#cyV>)u;Inon1`ng-qLG=A#8BNIBVo)Xl6A=$B zmuhcXYR8!%Atn4xhs<JHGoiv0lW52DhPN4f1d|#R)O*4W9Po>cZ({U)f=bmYrMl)q z{2BRPi?O|QrSrOe(3|1VEsuwhxNmWNt#56wl(j1Wyy$4EIM<q6KxgCINYyvS=MNGV z%Ud={QxdJ>{WYFz_^dMMX9Aig2dgW$7)$dD94{Q2-B{mK8*{Lad@t~HblA5}9nu~I z31;g91mAAz*_Wy+n`jxFTh?(!-@m?+rN&fjcdBh6<%&$JM=GXG%>CBDv{8=4S={!T zd-J{eROt<exfFDjV^^INoV<;tl`_Cwv}<PVQF9&IO8&c=`FBL`Hj4_&mSB6A)f{Z) z*m!0;;`vH%tu<Yz8Wn5fdNp=qx!Db0sud{)@p#7@7<89iC^C-*($NcOmr7}1nRAWf zfdF7yzvmL_|CW))4h2>|Ds0#`S8Z}hlH|x0o&i(a#wn}1?FzFb<c-)qsb0v-Z`u+d z^Ge7Z+AHHt5nK8QWfo1<90t`lD6-N9!GFJAa~Jwad2)=`JDK(=k-8DaFAoWElFjVd z=r8N*+l}l?KE9UDd7{y7-liOp_+HjfbJ17z2}LK;e6X|0t-7Gb;?5ecYdzG&WK0U3 zPP+i$pqL6bv$LbeO^C|BagT^%*14@IH<7A0xuvv8L-#oGgd?j(8ti=BM&OlWDALx} zUJ&F>=H&Zc<g?y3Q^Eg|r=oj1PaI9Bt8=tk4OzQqD_rYlUklV+CPL$Uiji=tjisg~ zzk~_+_G+SqUD}7DMtFTf&%wXL$vVSbDsrmR3veA2jmpe&pDm%($J({at{dPW!($Xs zuoV?IHHDImd`zyoG$qx7ES?ldf|HFHjb*_k^c6oZTMd`Xh6^W&nUxXC(&j@;dC(@< zydT<em2rJ%CAUkDH<%hqo~gPXjJD%~PdpvYR-zUip)4-URQD<MgarJrm?RWwKsW2% z>B6m|!Jtv|Pw<OvgU1;RKMV#%zzWD*V4+rX`$h5IM^BlE**t|$n?^bv&k(jCMv|rk zcavX7%I2z_Or4DLz6500YAx|b;ua1RiD7XYuqAAbkunhKh4>;zJa~ZPYBk!s%fE85 zoAtMSn5mK%6da_{32w2scg>_eF$;GML5x8{{*bLs?WH$|I`(89cc;$;$rVnB;ZRWg zl{&C&wJN#*>e-$v{Mo{Np(Lu;+!;v2<!%L{(`ob^aT)cqfgLb*+x1?ePO?QxYN&CH zUM-GjgGy64-w~hLN=v_-FwR~}s+KFn2n14a`=Dcg^)zYY@C3JdedUzM<ax-Hg`FRg zlm3?e#~0%RHZlwp-$aj)t3e&P9tBS5sib%_d&(#A80TV=)?K`_Gx2dDd$IU;LJ#lW zf<g=8zy<h1`*2dgau@`}lqt1iSxy&(cO??Cx*)a%hSUTBd8_4`pI0S1Ww0I}MCI5# zR6G0GVuuA9=R*3pR<*-}8DuwLI@!3Me*(8)wm>V{!$$94PI(;S5$KSIT4_NSmKDt4 z?8$RcEz?%T<tD;fK0E2yaeaykLX50-;fdL{6rHPdNU60&f;*c}Dp4-`-PTW!A7jk8 zPnSjKs)Q#pjPcb|*IK)EsN`H)@Ik#vW=ug6;H>`RtoZ)@#(y24pmYdQv?L*ptD!_( z?F~w|?G8_{u9xQ32g6so6X{D~vDh5m#dBi!J4eB)#%USkaJY&!+6PxLf3FOB6lU_k z66IBWaIJ!LXsr6i&eE{C09xV!(SoOib^vjY(inLzqq6#uIpKR8T^tjn2paJHp1}|7 zOqwwZ52P2kMeOgS(;1Uw(l~@|!ZCk|Y|$jMB#5*;;oY3BMHGx=2!4}D%#vMm3vNQd z5wbv|QveTYdts?Hn+s1Y(<p802KcokTALhImM>nK^$r!j-+dJ+Ffh2*;9>_A&Fj{u zWQ6po<i_C!{_~ZA_a75~hftPcnigY7ZD2q5>BI^L?KYfjT$|7T>AGfN8w0NoG5u;E zl!K*ASt2KK;Vrs`7$L8tAY`~tLQ{(dwujPS$NB?nZou*tJ`J>-@T-_G*pE_UA(c}( z=WrNPSMe#4rbz2hfiiQjdVgv{^(h8h*Z<i2Idm+eeIQ-9Y^K5*7gT;+IQ8tl<6=La z7CNTWAm)?KE@{)w&ZL8j2g#dlqxw5%ZIvUguo<#+vF4}sN=v>#{%o1N_O3tI1g6vD z344><6WZ=@cjaxfb55F$4rO_SX5Hi<qsa`<?r>r@e5uC4(1ODT!HfMp1>v4WM2T{d z!}8o`B&5#WXR$xnmb>V((`ALhtzO3`60LjhQ;w33hqIMCMndp+OY4!t0~nl`^_3ub z8(Tprzh#$myP|hCM_u1ab=pID*Yg#4dW!{*6Pv`lT;4pRy}9j`YG>Q=Fy_S7P~$Sg z+zSgceGnLbim(*Wg3+WhW!LjQ#EZ1?1W*F07>ku;eZj;1b?@8<YBZCG^p)q8-Z0NI zt1M`IuOh%Zx#W&C`@M*np~s?o#>M0^WW<cDH*ip2B)l!MlRyk<wOpNQzdr;VMau18 z1spQQl3?UYAw@8QfMxfO#eEIcL8SmVWhn0@$J9drEy+w+YBK(X-X8ll)S;<j2XwQp z5%!rfH$`*234+PNOGFb4hH#|V9OU5oBDI1%WVL8=&>UB|Fuij@wfIpAGB_T%u)Gf4 zuu%$EqkWahCMqeGZliblK7!u+_(0u|0t7dVXT~!q(8WboE2NL|{Cz`AHxv=Q&|GZq zk0~k$5LKmf|C-lKd^fh!`GSsiwZ>CsVDL1nWRhYSSp)?-Oos=;tALxseu4LDvpq!w zVwW=p`1&d@ewLq?yS)DS_Zp{t>!msmx|_o}VJo`vP4g7cOV8|VgfWel6p#Z~{`Tf@ z#qx5wFMc$ii;eoN^LB8$kn)9&dL*a%aNDJ?0?I2muqNVqb79gvHQPrvBZ#82L3Vy@ zXE(t=u~Z`$97Ks~D8ym7o4e+rUW2z%&WgIju8!u@{-Z68CGMjw=MU5`QorV`@)Sp= zqk8RTZa%}T=dNS?25)8$OH!Eqgi4{w(wz+fJB!kf-mgx5is)LZDhv9e5y10e9^2%+ zhWAS5Lu-!62kwL5Vm2T71C`d&mQ%&qboGaQl^E<*sa9xYI@jQQ8E-n5R|-d+b?ICZ zg-%-em0oRHybrDTqWUfBzby6NMyxo2Z*8R!P&>^qk_4vt{rj|EY$h}eAq_*z$$^+7 z2WMkl3TTnPpeE}>b)7iI5OQ*Pv1EU-yov#xC>zIwY|cbY=;oNm6>w(JXis{&JAN(E z<Sp2}-3zg~L}t@p{U#>RPX;Z1N`0_97^=nogx!LO&0Hk9Pp7StiImhp;xW`Umc}Xj z{^s~gl*qa2CpozF5>M?+)#Z!vFmm;>b5+T}-=W7FZv2vqahPj8yTkD+X4=|Xhgh<) z!5)$1y8DQ+%v3`t?w!~eYpv2Bu%>#cRBNS`zC)OY%$JqXQrn{E49}MpTba=5$T@xK zJC-ZkvxAO0aIZBl8NC0rH(nTE=@liZ-RBOIKo!5ut_&&xQ6<ocqSI<mSuv~dAa^u3 zsKpRbwsH12j|_t$7)r^g6nm<p?QS1w#5HcN1vO$t?_D=KG<_XW@3`!>LzC15KYDtY zY_ds`<7;(iy4{wIFKl7}Q&xv!`Idh}#_l|RQpRB!-Bw`3tWjy5jvRwdtt~PN1}62* zaE@iTsbXYE0r_7^&_CwZEan{<du(Qh+2sJIbE=(=hDE-Yr|ELr%gon~%<X35Y8LE8 zS*V5dcRko?zu?U0tBR=8O-H(*f)XsIm76*~{G8w2xO(mM@pHV|lV-N$PUe1KDi;VL zQ|IQU_~l_-qFs!$J9d~KU=SjP7{015CqCYVWIz^XYB{MN(<9J91cs;wD1erh=|h!9 ze4JO!Xm&YURW$gzl_Mg|U3koDQ%P>+t-TibsZC({?j(ON;(4|S`J(_Y&g(WCOq%{o ziJ9T5H{8*T$|g?1*iTttgbP(p{K6NC>0h4h=sH?SLe6CuT@PLWT6JY^1`q+o0g_uK zBAkCk_~y-H&>(I3Y6CyjywyZ$Un>c)Lg791xgy=NRkz44d$=jnT3Pg=c=dmKTKbUs z;3S1(PAhu1svTm`AR*!T8Bq)9%CF6C<fuoUfS&ja3C|0lH*n78vbn7m8wH(G;wg;T zRz7i1N&T!mrFr03s`v(j%k8b@*7v0Hm4+vkQgGS0iA;mi4gEixh0g$x?~v>-sf6ke z^@}|n6y}5O6PJr1{45y2IoAF12a6k&L#Dc#k3*<O`yPt^g1)cOTzdawfMLr8Jxn*L zKi4K<xLW^DwjLq8G2YniFcEH_vX)mRj!4;)zC!|73x*h^NHDq(<`li(yHQ>}fEA{f z?f}x8+;9;E)OdRy*n)iDqd%2zj!>@|Z;qwef0L-}aQj(i-|)kkCZz-eC}Drwk;!_a zK<MWRe0kb<@8-bvanyE|oXPcz>NkDY#UuQK^v&)C6xP-zUGSN5NhkB!tV}lW-aFpk zs)S!E=*U`UsMF3dG0Zd5Me%UBU&$e^<Q_KtKNh_pf%vPz+^+0f@hD}DtkUNeXWB(o zQFE0wGZ&hv`psF4+TYx|OdrHDD^441Fss5b8Rc$D5)ueZOq<z{Z9VPMdZ#}6iM4%1 z1QWi>5`{z%s5ZrWe0X>kJ+ZX%P$(jpV`%{>@6Ni{JGqAX2iz>hF^RA=1th0Fz5m-v z6+mCu=sjRsV#QcG(Sjjvnm;^psOIO_33Ld6U4RD>dQ<cuqgH(nEP|zm5(MuHP;$NS z8e8)T(S@CEiK#@G+Jv~o&~ZadBYZS<E5_aVQz8yU9!T$w0CJ6$rfGzeHIL8|kDqf} zx%jcklKlze!O86Xv%;ehD-^ig_o7h9q1QqX9c5p=g0{0*<d(x<1XpIh=1VA;Wf0hO zCuSCT6vCU=yypl){GKB-dQ^gA^;V5eCw~z~F7b}jd5exxrzWHcVPz9~?^6{z{TVdk zgv@20gEXioKEf99$%i}7;6t||rcP%AWWw%EJKifmE@E0BbZ*juf5y-Uu3ZWrv?iTk zL(y94v@4NB1~ri|lweqPHst^0cI~ig<k5FKtsAu+woRSL0tN06em05kS!7{})`rK6 z#hGYt%Z8!0UuShtJ*cRpmQbAORUm0HD!_9az5X^#XO7I}xWE^U$7;}EEx>I7if5d~ zGOvpIhj;tufB+TASIi#~H6<9oOOX$;kKXPSf&r2aW6EOd>+Ph@#lm!*I`LT^QQp*N zLOlk*u7}lwrBN}^Wt|jLAN^fv^Q}VE7_QRK3oem`lpni8M@JL2f|`%cz2=VwN3fqZ zqft=R^=NhSLadvM1D$D7r{mQfW&>>R-n<4j&1oqJ@7UK7==n2@g<Dz=k0HY1_i1}J z-?w^{NZ0;S1*8P#ieHF{h!z#=gX&-i$*#_+jeQ<xKcgZS0tNmOTwpZ!1|I>1+xBM( z=o%=b%e8|ToKM8L*18VpQVBNJcw&$-&$PiW_l{Ga;RoXs1BYEpU7}odrb2gv|2?W% z+ut5m*pEDzV%udIu=v*L{cyK%a)}|G^@gJ!Q*||xY@aj**X7LU4_DvFqzf`t%86Xg zP6DkKE91Nuo{9ChxGiXK-{_;|^X8`FUVyD_>k5`!LD~#ay@+KY7qTWtWoULi?-7ri z{}v-KHWqTH&I4pc2*Cg4igh4CZ(PcGm=RUF?@xRl8dmf03=sXQ<4(lTV*u5=G>o)N z?qm-O<`?zdZL9Woq&y~Z?L`Qx&K9@qXIy07n_7rVUh>Q7Q4je)DfNgWY}Q6C<Z4ed zmyo*Ta9Vw_pd@6ns;$N93s<l+>s!aZkbp#LqF_*U9GTXk$p;&Kn%Bx#cj{b+Pj^`1 z8WXHD=mx2f{j#zpKPlH^TjXV-&NEJ|EY0>8!gu{<ip^9&W8__xq$8xIW?*j+5R<9r z;kkj+g)xPN<Pe~JaR6+x2&h`x+*ud6uv99KDWKRI#r^kkqd}Sg*M;g=3#!Nq9dMmz zr70y#G0nW09;gD&-9zz>J~-Tz@X>}Ul*p&PD`GAr=^?EP{0X{e{^Q3QerKrDulY_W z=vB)h_&a?tV+6WX-rs%5fn)PAAX7RalfJZg{D464#8eWlAGIF<gh>vHKlVU%<hseN z^IY$a{G=3;%Ft>YEO&=9U;S-n(44YjeP6=V7-sny?5{ZYf2Rfrdi`dk_)vVAFEOl` zNw6$nnKsp)sLz43)I_r~Y>bz@FTN;Khu*i&?ZzN`=;v^=5~EBmmhd22h_*8<s4S9N z@EkZS`!E4Y;dfGV_W2bxg75TcFRJoGO)Vu;Vw3)RXi$+R(EV?c6y;I!zX)_>L&a0Z z`i<!h^QGQ#XWvFtu_>)eDHm9mrWCLgK3K732(zm&N0uie+M<CGVQ~(}#JU4!H97~p zCfRsSg{b&RQ?u-Z{ND@hPY4gZ8cu}oGYgBC(9(m)RL)J5*<CiG`Id<r2KaR2@Z1iW z@AmzLJQLhWJWXR*A}D|_7OH{7%w|#jUw{5b^ziTXTLA7}J0!t+CNf#jD$B+cE?u2C z5*zw15<3zg<A^K-9**VD!!0AlJ^sh$|6`zwQ~36z4&zPCIg%WiuA2Fn*>y^+Z7D5q z$XdJYx-b2M8UB44<czMx$mAK-|NmjcP{0vOwz_Vh9(P@nQ^ZQsWJMw)QZqpAjWLDI zVT#g;Ng4<kTt6~{M5bRlD4LuZW5=}M$z>5#nGe%@=w(Vpxvgp>g|=(#(()7j@qGU| zKtcAs2$=^qo8zlF+sm^D22iui0lZ+67%GKV->%?=|5LFnEKvWeV)@0#DDR^<DS?Td z0`$=9f3Ee<$**914;4csvV>V>L<dY*q;C&^QjUiBziaW&?ETjS$QrUk{`I3VA`~<X zBeAj;a#VwGt<m8tv~yC_Kkr5`iwNcUSxRTIn#0k9>#K?L!K3)@Uw^(O18VZOWYiBZ z|L;w}{=QCH2++hR<5-bb^7k+Q^+5kR*8>G{a$zli)aU<u=KsB1fG-M=rd$YxPgGL= z|L64IsV71`8(<ABr&jFz8JvHP+~24CH8{3JVAe89s>LP$d(OrIxDMiFCa?^lzz*eL zZpI&vxZIzU$8_7I00H8>{qaoA%$Soe;3q;Iv$F}Hy)j|H4X5y^vvj5ut^(qz4y3=b zP5b3R(-F<`*8~(l1O#>S4%fBsf4I2FiZ(hl$ZtMdD>bQ!0JiaK5^>ruh2R-}zOsTD zJDhyfzlTX7!xyUWiw|tx$4jWJ55(z@=r*;B_yidEY@PucAMe93Ojwx3laaw~%dD5{ zGqGmMNcYVpaNd1Ugj)F75qOMrJ$y;;js;2^dN9fhV*aYAL&pkobjfxUKf$SWm_1E- zfq9Me!NQWh`;hzR+pN(}mCVJhRSeiDN@Ws%?cv0cKt2ruf*d;ywxKDJzb9po@7+=w zFfvSF;uGNse+2I$orUswf}lFOG4_uxrwfY{%geJ#s$_u4At$YHds9RcA|7ZjfK;YT zm=xF4&omdLAK%*SDu><KPWJ<<f)l#vU4IINj;|UY&G*mEGQX3m5=M(aiAilU*=Obd z{Chb5n!`jSKCw@jXEvCO;_3Fln{TC|N_v5>JdG07uhSK_1&N1AAwzlGen%_yk)q4_ ztExnVk(!5EkJQEC>W6*rmkYqS!RG#~AP(!Qe;89fN^$~*aK(rBGJ&IU4lJm6N`PPn zZ<$=*YqfaK_KcfnM6G%6oE~any;m-^83%YE15d$R_Xo@s#C;5$Uf}5}B7K3L{m9f4 z(*Ig-VmIJA1g56H59th*Ia>8f9)~sD-Rfz8?(8wSRyJW+3x0WKPfJZ-9qWi?mx-s( z^$jM|eGLdzMyy~^;xRzh{!_hPy}%S-ACzjP**OZBEVOdWNB9P&$vyC%>4iNpQo+Bc z=Rc$6fa1%CgNrM@#MzPz2OxV%J}0E7`fktZ09c4qH&{Qlx7`LI1=UgdLtF!ldYFOO zCagq(()Xel;HnIS(JSCNIXSLi!-)R9w7RW*8}7e70kxL})_iHM2*pPzv4{WM=<jU< zN%(G4)q@{VBy9)aH=UmKu`byyB+M=;$iO>`XLX^a)EG#mOr$AI)Yj69zhh{L?7doe zg;YX`vf6aB9H?GMbJ}vVd}PyYaE*~j07h8;duclkf@0j-Av=g%O#gYi`oeZ7p5cLP zSn>=MUcYjWX4^yZeM6%}?Bh1{w=l#CLcd@0<<oiU)d%ez1b>)0H#OX9Rb|a5i(<;+ zd#P09*3VWQGjGt_QXZIZPG&+&lzwNmFP-cH$~|(63i%^4Hq_Z6eSHH1|H|klfM0xg zqDQT>w^@|_KbGc;Am0_Gios<&g6TM2`{b?#YmxEn&<s%)p&R;uta^3D9dQ_aXQ%AJ zUV5|RUYBr6yCuZKXBw%9<Js&MH+z&GLuo#lpNV;;3RZ-87F%@Q{pQ1c6e)3i3vFgr zUO;2F+2wZ#0FfbGo#K6k*Mgj>$#uB8$s0M@DJVK~@GeA=+3T0WFj<5W<OEHdOsnn} zJ(Y(&vMOP>hV_M9>!2my!OL5GIKqn?z_cV2id2m`gJ*DgNp!D!MXlj;|2XQ=c|rix zxcY#^>Cwz(xhCsm7n#>%=xloV<|Y!8)ftxtlY>akE=eL^Sz-^=pz~iVD-e7J;j}83 zdPOq!|CoD%T_{t1GJ2fbfl6MptFcxf?T6x?>w|C4umMWu)>P^GCGb;WrdHcxsq*}t zv}Q%X60?O+ZHY1|D=X_w2h61!wHwre09Tn-HrLC|-MUh-=fh5M4Qf8MZmY)WY`up| zoCh)PQcSFs+r`Fvem0$+F1z8qQRz8!>~USVLVKP>w@<+VL6dc>9*3(j-Glz3?}UW8 zP0IUBN`6xTq~C*zg;tbU%OzYMGozpNY$0@!BBbSGt?CFW^oM1Yn%$Yx^}@Lvc1HkJ zGWaa@b!rl6CYkZ|xYRnUT;=0=lz=sBTn@P?8C+#lo=lDijv8}eAl+0@VKQzC`n`Dl zbh*8AcqneTjw3Qlsj6~l4TzUtNVM5Ld~IxQo{oQeiE4XvC(~|nPk3y3{rI3#CX}n= zqn%&7mkAK^%f)&9^P9v+1l~nVL_zsA7JrKyS=`L^$_Hosj2*_+4Yb3M#y9urJvNfB zUN}1VHjo9){Udt)L>#QJ`Mo?@8BAz5F#=1WQGwKS@(1(D7fgwWqj~u*hOda53)JB( zl14C>7zvYi6myA$6oP6p;{Iw}x4BVJITZ|>7|Sy0?1qjW_H+32%5U#Km_EjTnE`q( z;)K^5u!Vt!9G0JCn<Ad`MkCRF5V^@OD=S)q)1&^@>#dUOr8<&GF-Tkn8(7Tda+xKn z#ZvpUIyrEfbqc0x7zny_;@X@w#38Efcn{icWSKl3k=AQ%!VjRG{55S(c^SHLS78l} zwLY5V0}^}~R#jC>-8xtpeHz#~xOBPx*XJ;I$H>$GyQP%}raT{B&_<orYHh0EZki!K z*LR7}G!m^1)`@EJ=hxR)=lY2!L}r1$%HU;d4g75hl&v*34`06>Eb+b-oojm1iGW%+ zM;>69e2$dh->!Xmo(;g5i?&4}K)bmeSp-g}L?|H>n2g3*_-)!bJ)3kUBYDhW=*7>4 z<Ee#bgDAWYYJnXCF*Mj-&$r9hYbKeKE?4`lN|2JOA*PmJ7{vebEyM!ec`Fqfx&Dar zc@eI5V;gddG`!y3&y?q83~DEtBKgI#zKLJ*;UiqZDX&$fsgK27by2jD1lQ{oT@gS= zIn!vk618qbxperWb4P;B#%HN1;S(yQP*}Tqw1HKJ9aVpSX<T6c=+cYA?`)AzD)Sq9 zZO-*-&Zk&|w9;ifk5BkasXje#?gxn69%wRwEv>~qK-AK=!T+OwRI{GKrA#Y6)Ntiz zmDve9KoO1d=)R<+IB1lLD2Du=#+xCawEILKw$pXw_(KAEWj>~$QD0l!9(5LHy-oFj zmampNMU`^V5A@08wDZQHX~r;eH}va*7Pr&&;;qd*;sHxiJWY2z64A#m)FBusk<6VK zW;lZ)QMi)))Zne`jzyE^fBfARoy0*Vz=@Qv`>k%aSW-LFq>gfH8jj?qJD8c7!VD?| z$i3zFovoC99^h!SdK1GPOoxGXhQ!z3Dl%kVyb@cHs3>jv{z}`olvcR#FEu&TgY?d( zOC?(#H5BlisddX>nc+-3=1Z|hH5!tw9U8(_*=D4>n$maWSY-t=`lzUYgdtj0?qOzX z{o%*<H9Veh@}2NK@vhgfq_H%FjZbX`0v&7MVE7Q2&+x*QhCNRR-XNuVFTHb}cw!Id zn-bM#mKVD%@LG#WA|2Ey98M8pU3`J@hsT>QDpF1ZIwqHxTcALIJpZc)`nJcMKX-(c zRpM%drFPTKU%`}EAb2bzSMMgV=og<?Po+FtE!f?1GTH1k9HVyi>4Kj2Dur<RmhH2P zC;>@eqN!=f*{8NU2?7i?LR+QuW>c7Fay3_a5PU!gc`pFr1onJ6@%(4JA)FrG>kKki zQ@2J4y7Efr_9O?1MdpT&=NfjW1(v0_h1Vur0TmYIYfR49VjA=&EC7Rd1}zA|-OJB) z0$b3mFMd#oBL-TcFTyP>NAZH^j7=$@?3O62mp(|(^KQ*+smdY~L?6_jSsUaPe0?g8 zVmy|O%+pJu3QuPr0jC@jKX~ct&a(@FIr<&x2z$&<b3Bb(lGSE4&%CW|PK8za#3a;J zt5S<SZu85ASvXUqUQmFcC~ElVE-KdJcdk_$gu}0v8^3DqI_Q`Vj~BVpT49~cmo?n> z$*Av+B7BO}0Fp%dJ{Hu-9jS2B@NwbB?KY!J12v=UdO`$`%+f@ZSH^m-6V)6w`C1Pn zBN9{^EipH4L8iK%sm46wo`BX-FjvB}wC`%h#eP)xKcL@xpbVrlqQCTy`$5x?Fe!!h zEmnb6-c|19?+>1L<6V<K;QgY*+HQIX<Gvx6N-aCh5kXtocY~ZLR!GK0Iblx`6*9zi zR{tw_V8i#@UH6iGdAywq?Q`{g++MKL80uE02bThhCPaRc)LB+bE$kVl&%@>I3a1*i z1JgtL&yfo<#fnR$@5UeMN;Q8i*k{Q_25)x}I656nMR>n$V>q2IrhYXNlSSdd1}J}L zvgb}Yr-pVV&F&8vu9r8vYYc~@YN9w52n3?AIYmy_?`q#)_eFOy`D_wBp4JNv5w~%A z_}*-|{!F3K0@3K|@=gK0q)IEC0Xc#D&s7Wh;Tjx30-FGkLwLw`T(=Qbf;DsyR7fTY z;aXz0k?^^ySSGuHDRNltCGFc@nDGv^-j@07m}i>JgxJo&cF%yz;h6mVY);<POd{q5 zejR9715fw`XS7=_*ILH)6HRIUIbuZ0J!=+6t$EP|%CYx~z)MrV7pv)mc8h1=A14y8 zU9v{`WHVX1UQ14Pq}S$aKn64rR?+WhuaD3m%pU=1fA*DLD`tVe692PBWtj=;!^s2X zhN&tw-??+;*JWD5kvM^UiUggty?Z~{t|Vpf@`$^S)VWZw?)Mmv8@^!%E9kkkCA^i^ zSph!=>00)--n`Am;`SUZA9cUf;&qM}yEsaH-c_ZkOk()QvEe%+@V)pvsITkE9^-tn zBz)fT#8V4sHPl^Hyv~1wlh0s1<#bXxhMWCx8H2@QE^z;S3br*v?e1bzuxX4T8EC(g zWqvtQm_{o##p;)uIw6Oj;r%D5F23<HX~ku|Jj=IWRO$8Y>BQk|6Jhq${_%Q!CI%w@ zhqBjTy|L9&{hP^ZT@M=KvBQ8|26$E?{==+|*o9W0eizck{eEWZ5u^9-TYUOxXL}qb zj3Lv-x^#2h!m?FV)>^-}h<!E%UO@G6by2cH;wA+=a^vzLAXKS7yM4&zCZ$%x9t`2a z?d}Dk$lZ#!M7y4cMhoYTSSyL%dGmVRL@7hLWHu|&YH8|{SC&L7=P50%UtHDnD-G<{ zAcjmjhcwMnO?D-avr~82oA?1R+CXN2gB{DH^H^1o0h~1Z4s_m@v}sXs1wF8<{r3L8 zA^>{NO90bk!9k=N&Ow3X-8(`vaUp&s`1Ixp)C|NN$vZryIsxG>cAFuvhv%blFzr$f zr{eQp<x}I3@JF$N_uY+A_LNG+L-Ufnt1J#^ELD1E>kZJESG5PTe*OoqFHh$6Ke;-4 z_fgtrz5%da{se#()?y~P(lc^a(aLjw_3nV-O)h{i4Sej9be(qh_%}o5vJ;eB_6u9^ zrQ3|A;X)YwnJB4imNbA2&7qtvQ5@&-Iz$VWqBoMK_Vs2ri#50TH<C{oU(l?QmOU!2 zk|S@&-SsmoJX98d)SH~OnBP{0K=G&1tP0tl`j!`XwKr8}rCF@+|52iW)9vUp9Nr_@ z>_(^}{Mo8tKHC_{nFGRo+waBGWfxNdS#t&dR!X0>>M-}a6Mg{0CrvJsp(Gv+S>_Mn zU@{%L9wjI3O^@EGmP>vP4Q;CbWn$1Si92z_Zy_x>dU+^%9`{xU-u*cQKUzCpFF+2p z0sgo5<@pa-oMzN{xxJB}UnCQ$<NdjRHooKNOW!jHf^I3&N$W~#6VDzFQdEM&?+!JX zH<)6BDjzdK43#$ltg&4iopuY`q-&qv*;z(pMv#bR#Cm#p7<{Q_F<WuaSAH!e{M%<Q zk9)aQm`w^Mm~FQH6hdb^a2JYi`xEGW)RiFb{q-gQSHt8v@eYe+Lm92-2gb03n<UY7 zfN@CUbMoCREXwy*PV<HzsGNqc0<&&;R*d_&TAiv=Pz$Min(%aX-!n~aaoDn`j@H`W zrnt@)&ey98t#Q%nPS<k1A-5KvDP$d0(=%z1HLPB_>o*HaDL;O#<A#Hl-}iAo8yW1) z7!ti{d%HLZbMjl^_dmbOOL4^_Pslp?mv6>L(AcHud9l`feQeV{NsjL&R%<?|RO?%h z1um{=7tm_Ill2{fT?U}O0Z@NZ;Z;`4E=Ba{jSc-gj2@@3_<f9}Dy2i0i5YUkb5_M( z&2?Pyr4)gn9+t5C;WFj0y&A7$Gy$CgSR$sN$TIClfty(PJ;FtgyVF9JXG1hz0*|T% z7W1BqWcP}FIgZ;{sGV$+y@e2Y8@uqDDkj6D&rNPuXikRN_2S!o@c`P-y;heO>tRl_ z#(LB|Wt?$l>wUHQG#Tac77nEOQC|5>g>8?INV-P7WwE=bzgpJM9uy?cZUY$zZ@_gI zKI<FRn1IU2cD}o{!jU~Cb2?Z_;BYoA2Z2Xn>W(WsM7&+2>~gbt?ofQXuo0sWUB3{_ zl5Kxwvg<<E8vhHEh;_I2RAaL5{9@F!yTc{ZBoJrze*Y|oRMK>GD4_}2u59BOo5wQQ zTDuG4EeOtR;R1;%9zy?mLh#}~<En%G-PJGcu%%in!3Vd2EwJ03w6{@KCW}4T+EYB3 z0>gE;;PHAS$}ty%?uLzCUX!``qot*08~m5^t8w*}<$RDp;UM53neqhV6)9Eb$XqL9 zqdd4gkMo*ssm7Te#`Y@3<EIh067#0<`a{BJshln;;-VS<x{&HW_qvav{D6>JLCcj2 zGD(Bqzq*jmonc<77Ik5k#}e@P3;-4DESHMN#!RPLAguNsEc<GTkCt%nUY}|JUL$QB z;frKWAD+=|mJO{`HnXqNX<R>z$HR|F1b$XPj39ws8^hy*Sqna3oGexMA5dQmx}_PI zAGp5lkEF?<+_OE++VG90GUwKdL}vY{L=p949b32L3eas1HmKrC8=v+3Wv><{Pli1c zYBGm+D>6d8z(!7hoT+D%NXZp;+b7MdP)!z5toNH-qJAuW(cyt6?qN`*pUgMXKOjzS zv80cK&hRXr!|RM|_P2(*8|o6Jk1GYyxTI>?)d$P5<OxAfgv!88tncq4T!d_U{4d*A z-UrJxw76X@<%GDp1*Anh(1zB3#pG4PR>U;0>#0Bs{nVSt1kq)Q-+G~tcw#YL6M3W^ zzMdb3PCfCWA{)+shGXr>OaG(F)kuuG*xEzP6azuk#HMFq9mXe<Q<B|~8~u{o;b??i zd+95w<OE)%<}=;f*-&?Tvn@W<HWCe@k3P^|q0s(TZ67>RiQ*%FnIk;oRKNmc((<@^ z6#HC|%ar3Ceq_R=?1UbsNvPEmagE?*BsOH&d1Y>`<7sh!L#$x5Ed;8}&%37{ck<xn z(+Dqlx}t)^f4k|n+@qWOqvgil(pQVcA1cG`;1Q0Nla6MJvZ>k#`f-DkR}3fgzR%N> zb#^l+O^94okGndnne~r1AM`-)TA1~If1nJyJO*g{T;bgkd%G1whjc+C*#o(lob)Yy z<J`>mKfN(zd(27)Q4ML>fsTql9mzf5O-`p$!-+oSC=rBYW|!ZP`0$CCT3~V?l#3OF znPIU2GD1Rnp2rO@QZVwMciidzYEb?dP!<3(_jD8A4Kc#ybn%x^-23ud)#VzWy^y|( zWG?$_3K%PVDj;?Uvzeu=i3q%C^Kw_5r%g{l-(B8b%g^<B=GSDknW`%6!jXgvB3ysC z+TGV#LU#-dwtE7=2scg(h8SBgziH+jdWV#+vF4HRr1K>bcjO2Hp)OsRv+=;b0T4r_ z$EIgte8i3MN;iZS5-dR@st&<pf{y|OrShdIAR?inAY@X5A(fv8FOp^3d8&DWbbt_y zu#-7KA}jb7ud4#o$gOs|dKbY)7rh-uPdx+-ddc`wyYb28T9&uhY3|@1hbQ%m>(@^h z9K;)o9{%KM6eE?dfUcFOq1wXqP_<B&TJ<d?8d54{C7_H&lfs%iAKWUQ>HQqT(QiDO zEb}3_rHq65@%C&~zz{;4n~-dKlNM0QDjCv&N;ZN6M)g>CR|dm%brV7*!EMf%#@L$b z)>UmlN9Hl^TrY?Bv<Ytvm-u3WbtmTC`6JMMkN!>1!?&H+O5X-jYdnY=_<m=DaP`w6 z5e{Drp5NlhFQ_v%Dxp0b>9)owR-U8)*5^`bE0twi{3%u`9Ox(%wKh+;!~RU~DJ!0v zJ2Ug1I}(O|65Gu!;iG|UVS0hSXnxD33g=R7Aw#WkdQVwHl5XDmbA{9bARr<ZKORb= z6~?YVRZ7>Kq`q(HNrc(#M+=Ii4mTg_S)WYCK!}slu$Qe9#>HVk&<yPzLL#d3dmN5j zFc$rd!r^5LN8VzST4DiI2OLk0NgiBN>9E%I3WG+Mohh<W=N&QtRYumgxnRPKi?P-x zv%VG^rGp<w%9M)Oucr)FW1gt?TS%OCOy+V?SgaurUf`RzKyh422hk1kI`SMfl#Av| zx$}*Ajprx_={r#&q1em}J>w$l+I!a3Bu3*)TTk>1>hgE}w2_D4O?||Kb?0l6m<x(n z3_8cNWo9vY;qLx_!YIET0=WR6%u&OBG_5$qa5!m&`mI!m63T;jo%6&ZU>H?e><&}& zDD8PB&p44a2Q!nuv2>?-%hdQ~7x=$~6&BW|h}g3+hT}|d#5rP9YeiG_3FyUY{n=xB zXnxmaLNRvT{8N`8nBNYF7XOBMnzJ>*-0fttd&oem7vX`A4^9`zD;dQjGmcl@AsLLC zs{jNx)!>GC!LIq|cE@7^5~gZWYQD`U;u{uv_Yo?Q#dn(Z)>N|ocZ(>B>s=Xvhdgap zw-_b!^n9Uqi-xT<6-WYGL&_Ed!&H!{Alf{#5`Vrj^#_n$T(i+w{7(~OIt;ooYcd^l zv|A}jnO$V5kBUD7hu7KawmRl@X7f9{tjexlp5CUQxXasPsnOP-?%L!h*%~7iTYhld z2V1WYR(NlJB*iLUuZU@K3cXD1kIIql_bK?(m9iDAF7Up_yS2%<zDy!NIr4)Qr0a%7 zw(?BlaO>^d0!`$hOBDAe0h*agS78J4_f6>#IWXp5s^kF$YHU6ki2-HW?K1d2kG$~B zAcO=Xy6m@Cm~ixAgn5lWfY<AT9g0zd2;=+TK5GVE4^?*i9C#xev;K&97eN#C%bumQ z+I49Fsb#5VI-L#AYE^dN&j0jv)=^Ql-ySCgL<OWn8U~Qg0fvxnq)SPWRu}~7h8b$; z5D95eKtQ^C1d$OCq`SMM1iS})@9+Aqd)J-+&RVn1dSah_p0oG&v$vQ=Sf6{Io3%<x zLA@C&kKc!r5C-NOtV8ooXMRq*!#86dHuUq^ZYxmG@3GL%1xIXaz`>m?h)Ym*UgZEf zuC!7R4r7QFM0bOl_MrUh{R(A&f7fIN8i$<y&Nljk(MW6ifvc6gN11Tgd$F9{v)XTw z6uaiG$3h~}_YrRl!tPMwF@+6Pj;nAAckeB&w>}VlUS8}q`Rwh?OYbBz#@6lq<`?Tq zfkWN=L+4N1zjvWJw>VO`^y2q|QbTs3O@f^VpMT)&@9y$WpES}DxFPW$Al`t#N46AU zwb%QjUT`$8_?9f^H=AhFiotuLX$sPX?t5WVzc+ciqF$sotgs<MV_9#npXM*Hh+P;H za%O9H-&@L6G+j(ch}NE|;?la2usjT{jOWs!|1m9vd=cfsu_6@b%LDg#jxJR8dDtc? zk8A-Cg~R0jFR5bIod3z*%3?tbUwM)&p5+U}%0H)0U(or7RaPyF`S39;b@iyf9f?}m zdm-y1eL)zUvZ#%y4}VO~+jTM`B4TjZDmI60-w$2s>*WiqrJi(z`p!T+zhfTLkXZ@x ztb~Y1{ocag82$j_TA=8}H431ekcGuKgTu#Pt<9k$0#lz>zXl;gM{7geH2SGI*x0Tx zH^yC8i!8gryN|hcAx~`7pygq*ZmABvZt4A{F-&=zQx!~SB6jZ~{jawsdM#uv2eLgm z%gh%(n)%Os6eIDoAvo;ZiY|K@erX<=A`G+?6Cux7?ai2Tb1a^R?6I3Z3C-oL;;|gQ zYTxg-uLKR0h`QPd!h{0ahwE=e_Rex$>ia76FMI+H0-r)wxkf?mJGVA68h;;r14l6i ztnNQW#Ff1C9GfI!x)tR~wplomoUjSDTNXX{?mi%`6X1T~A&!Xln^O40slInzl)Z<p z1Cv;uFXmVo!{W8aUT|*3l2zoQ9C+b`pJdygQ9xKiv?}2+3P!Ow9IDmPHD%N5ORVze zi0ZH7*N#=J;1RR#3xrr1h#0(3eRkg!Ixy|TPR3NQPqCAzStcr$9&tJhUd7UTiOR$0 z$D7>EKt*SeK3V^WKd)PyXyL*(FF9f3JFjd~*i3ytKwVwZk*zs7<@klNXF<qJi1oZz z&zIOYeaOdNP7geSZh}yXtb5ckMNc|1JGngbm@J74t0-IU>on+Vw_GRE+Q#vg;5>wl zGkBG%krAIxU(L&;BXd|n=`;D{Ow?9JGn&)QJp#H2q&@6A2oK4#(Y7p7FYsm(8c%lg zmOJp-D|&mYyga<gb@^aK`1)_Z?J^)`{JJ`iEr5edAtbH!)Dd#mJZ84Gr=_&dc@d{C zU9_1^9My1V_x-MZiD08z=~l=toaG#dTD>0uip%Kpy}f%EM={;X!|}z$Meade$Gy~N znzLU-EoM&BhmgIGGvXWWt!@KxCbI)9VbE+k=am(dM~!0j3o)BaNN7FO=GK4-++|P9 zv~M+_xx{n0pl?&3TDweL$wtF-?OnUj3Av`>t<HU<Ct5HPrF1L@xDrP7EBl;-BFP>M z{yQ^ZV>Z0R$XI^m>fKWu_UC*s^CK?r`#(OK{CEe#+Guh-gEo9M9Re`eR3B8LXom~G zo|N~CPB#Rh@Wh_~)M`tnc#8PK#j9?8E6tysiZN@FllJHgx;xMdB_6-ebx0=aa?X`g zEMw=Qlyx0T%TKvAhCO25R0EnUR7fxC50zVgc-I!!5ux_w@y@DEb?;h5N<=EC%hDB8 z_bKlRSKea7TG_OiV>{y%fsr_O(o#BMj1m#pmZIwT5mgEm<jLxv+D{b~5O2xj$NZCA z1>^-AF1Rf(ZBRLW6%1?I4K0jRg-1lO2LMu`l!RqU623dV4E-ueu+!{y^ez;VZTR;1 zK@xc>3-6a?_S`1u+?fu8Ff(RYc@)hRtK0f$@CCI<K9KAhrluk2r46$fgU^cXG!qmR zm_5C&?DPQa{H-L1{?0&#kdAugs>vr|Am|Z;G4_i@hB@rg|0`|UuxJ>`5W{nR%Pg)d z_u_-^a#3SqcQ1NBnqrc&woOsg_Hc~8^OMMY?1(<Ha$#I$r|4v8E+CjrLF*ss(GkQB zw4QV;a}DKa`QB*eA7Q?$p_2@lhVFF9^sW8j7}-og+wV%@dC4omu_PZv72c7hVf?ZJ zdaR?<)YfJCqX{kdwh<Zt-$essd>nqyr^9?`_vLIZi9K-BI0W8V$WlqZV*9yp+F89h zQV1n|Slqi;j>6d*ABn=Y>vB-23uia;?IspOXqk?ro;nKS$E41cImBcNCQ5-u`VzT2 zo6_EUZH?6@D0F)Xf%;z`eU78~(ugbMI29t>a;gKgy0t|jGVl_bk3{ohhE+*b3P{)5 zHpX}L`V5M2NqL?oH=OKzuvA4YDdP!I^V`zXq0V$az3|<k8OtlxIA{bRE3bo3wRX73 zzT?HiQnJ~%+%B->R4d}PlQSfp&pT5?4Ph%G>>zH)CGS~jDHr%Ooa#Q^Wstnpz!WVN zMaTmA)U8(mM*KNlqfY7r7h5c3ARFrR%91a5Vrr2q)v5w2q!u{$5Oz(TS=%3#bx6xh zKCqtsh^Dl&<;eKt^p8Q&V{tOYB3hqq?@v1!aWPllI1&vkT8VoFTM%VqZLSara;}R0 zVSmPyQ14fba<30_%QY>VJl!5TRRv6fStq1Vu}vtO=!o8Td@mO=NecCu+s55BgEu8p zHL1*>!6{Rt?^>&-f-Hv_HPZY_szU7g&zg>5ZdEUTqXhkT9GCZ_2<cXq@KCx{LJv`X zZ%I^l784Dha$U-!^SD6fOvJx`d+ZzJDMOB1Hkz&)b|6rFuL5&FNXaJJLPidEGP#So zvp#{#MA#uBvQ~4u;iv6*t!fdLCR#Y;=b|4{wde$Wm74W^2)ToH=o=s^VH-qROEz+F z*Q8b}Yb>1m=i}6BxKa6_MUuEX<F^p;`I+c)`kJ(=he2OB%<4Hx4QmoXu%i*u69!~Q zk1v$N`(tFjAI5B{iRJ^7YPG6t!U&?1OUf+jn6s98_b=}DvpJM{Y&sl+zFf-A=Tq3m zwbs-^#k<Ipl@bmTvK_jbCPi7!9?`4WPMoDa*@+K_T_(j}A$<sK^-61sh{We4r);TB zm7wj{vCWfnMAQVjCy;#x7==mp>Kt#C=-}joE&XWuO}Y=^lbqo%9c%l*c0G**q2B<Z zkYKsakiWPnJ4SKMb#4xCEuPt@^3%;`@&*=BNhUth6m%DT)$S}qUD6$#!q84Zp!L<b z+OIey=wp-2mt;;qyXLFgBDA+(BFufZPO}7eE>C{G*85UwT=lM2A=<~Txq=kV<M=r& zhDsey1Td^+#>H<9v4Y;R<WL_#SCzjyIwj-6&U4J5G$51O5&bhttD2DJ4ucK#hJvJ% ztHwpPwpp`ZwtLf082m!wTpglk>aEMsnv-ysE!i?>_odDnJWy?JgO%7wHbf(LRQKZO z!-ahLOV`!>X#JA5%TAhh3ZuoAccGZ=t4m-FHlz`kH{*ij*rW>Ytz79$8loHIbwBpH z%@gP{>Mb+hi~_*C0>mrK;lGL3#Y1v7Z!%4&@~X@lSxu9}*bzg}Y4olZe0B}anPm<& z9`+VTjech)6DM%P6q4{@z3NM2S@f^jFElN!9EvDyuL9&V_T&NgT&T%oBR&N)VM3zl zBqLazNr-`WuNcOHo#O+Man)<>62rU0J4%+mTt5Xh$jKh<_;FH&Dz2*_4Ef?2Kah<0 zCS$LH-tF3LU6d+&;d26i@(Pa+uEr7sdNi@97`_eF*|ymZcGm{fG8lwS5&kQ@Qva~5 zgqCHwOxDW>`3e%5Iysrz1(&#~n|60JUwcr&4vTU?oHeGc`vjMDt7z)Kx0uL0oO0DH zZk-O&MHd2Ct9HA=?V>nRN)NevmQ|pUVTzvyL42<hLqftH6UNl_wK2i9b5klV2a*%N zj;}+ad8Ft!Anf;y6^>iQ`J&led+OZWjVGFZvp;R5d~_uw!I?>e($IshIr3eLfS8!& z#r-!Gf<<3p=0j!ZDe>TiF8m$IIe=0@NgT`c*?{yQ`f{)JFXgAX)B3a|gNBMsZk$yM z3~kX=*m;N^rH4Z#fzg|zT4hga@a+-`=0u&Xq=1N{SBHz;Z?JnhBLDy$!RK#Tm54hN z=h^ovp>>qv<JaMm$3=p|zh;4ePE@Z0jD_uO6O8FUrqg(F;CoXs(K5<C!yO^?DJ6?$ zAae+EDS^2-?^*RPJq)T)N2EQoOl&*w-4_umPUH;YyB)gcIq!va35BSIXD|EkSJJ2b zQF4lV?@tzFf&6}@FA<xaAN?sQQc+H;Y{LyZv{g2+*P7L_q!91rOSBggMkk7X@at4* z8<@4TC5F}md+l2igJaf6v!(MMUoX>s$%N-%K90iD1{_#@+chFZ9SF!)B$phK{Zr?R z1+N4AWnB|g8wAz<!?JGc{)=TbQ@;O(y7tBJ^MMau_538Hl-ZE9YzO(C9)TJK!Ikx$ z#JMOuAEJ21e{-zj%A_e7p#kU^Wk0T1CeCdxxH2vm{A&(DY71fiOI`Z-38mc+XET>S zV#DH7R7To!mR%o4*ZgS#8RHiY7*L_{w4y(mX*dg^QSBXTwx<DW7a6HS7qJO;9bUJM z1a&F?hdYv?@5Ys`3PtkVbh?>=)c4l<P@b<eCLJArW6;-Rj{0VPnCz!n|H-q`oJJ#% zMht^^#3E-bFRZ|WD7u^kr6-xW)&8W+(Fk!j6Vwe>X}1dwKpMP-pT2Gy=p$pce{6aJ zv?Zj6N3f-(cja?3#Ma=!ZPROFTB}TfM^T&@PBRfT6mu$EmMBZkzDNLLYf?S%0(I$0 zC;z3QX-gPlfXJ6z^QU*Mw8#H{{xn>8{u0r|K$Qz|Xo_0)zzZZ{D&L^5r>Q4tJtZn# z@K4sf7PtlKs<g2r)u^W3NcsRZC{eWN%p0?dH%Zg1j`X#yzg^(x$}E4z&;~~LkOz{? zHjL)IqWJq{JX^uaOY~b_ULLV8Lo1I|cAf}Ytk6u<oY;`cg86R21){3PaDFioEQLbi zYF8{cgIp|`ts7;Dz-}39{tgQU#V_n~p6e}sO!&`8e(Kcd0?p@=uipp(nV~S90yX8V z5pcZKs*%HBQe^yOPcF^pT~9SKNYhuRT|2KGGlc0<ETwPhGRLo*z3gXcYe>~QUfZ`i z=u3`nRpd9SZUy-D_yn|pA9ID8#pdYuqOFS`N%u%r$UqS#nUG$6cQLme45z7@NJ1z^ za-0>N&F56~!-2uYInb;13Ac%pO$Os8%exYO7jS!hPSx&6k{nK>Pw}uqP<>}->Pet2 zr)kga?2AYi!eh>K{>eF!hUS2VCykoxzfi1R2b^WNnpfP0N32@zF?DX0Hzd7MH`b5~ z=Z7j95eZT{W4kn9vh)G4^sVtqR!Rk2<brC1^^|-1RF5CI6h4pU?JTL(oIdi1R#Qn} z<yqQV*_IT6YCuijO?D|5`WucPg@`+!;#S|;TiuO!9JOZj#tVE#AK>bCjm*7s=ZZw> zLGCFiD(V300eLyOy)NTy5~}+$nrERWIKQ!nzBZn)1L}17b;1#b7*^|rSh9aWxr2eM z6zJ*^<LhJYFc{y=v}cZ?S~<vqJ$@d`xq}f9kt7%#=lxcwRUGDH<XzmHCB&AD&bs`8 z37_~5Z`A;X3gn)(`2bI&v)`Un09?+2bNCSQD{oACt=o4_VJx}S^3AhamNdvh#;o)= z0l3HkpCj$3(+P|e4!ra|8Ld8V0KQBKm4!r53<~!(5;~({>@9r#!oZ;N>(r2w!eInv z8)ZNeQxXAGtYWI>^~^ZFy^1oV>;BP(uYscq^Z5Kk7!nTj{=roYB*(HYK{9&-cpBi$ z)`*>T2Ps@*=o4u|K@`^D670dT<8$>`>zicxdk~-oelOKEBz^saf+Gqm+)4Oj%v8BQ z5ZKWz&WP^pe>xE#Jhb#&9PN$2w$gw20YKU>XXWug7K{k`!PiPp*7=Kq$AeL7)d}FS zTpvN6k%i7H--)qoqNimFtDrV*y2}Uf!5RgaYtOpDX|`KlKP9cx$}{1hQVm<Jrw(zG z1|M0UaAn;9=*5|Uy1e*`P!%&&dV+P%7FfoxM=@58&TiRjD@kncZG0n2v`HMg{_+#C zj#yQXNeN@;jXq*MgMY5z`N~8|Is}0;+}mueI_)0gCZ1)P%yw-EqLCNW@L!;+FNG*^ zi(fG=cq*FmAM^SNvbC|!@0j+P=>LHu(t#1&^9#uH0;bCx9l#XPV;dLYa?xv?6YJc0 z_h>+Q&@X?@v)Yp6sUV#MPi*jKCgNtLU3+kI$=~ShU0iAKs3}k!e#S^n-?XP9vnN%M zV5Wz=B4Nsokw3(8+d6ndiL5wL8XDQN&dcETSpeEhEXVz0CvLOi!_vW|XO2l=7@qf@ z+=SV&K3|m6Pl!bwz0t#KDYEmEYnWoEA}$TEG;>Uhn)A4n@8NrQgt~ub!4kte^(d%r z*|0U207syIHtZjdHh@Jayt7!ASe#hP@mU{5>|R!VLmCj4ivqUmgwW*&@RznY+_4SC zObI!wXq_+#f35R+@$iA!LH*vwzbxS9hP}$~UZF<-uAGs|Ks(=SFAu?MBB5E-e}mu2 zw1wl=iE2H~zrh3ob(PVi)R?IB@{S;K15S%t(D9R#F9O1aeaWi1f9>V9gyZ)8&ua?6 z$%OsAta?O=2`lzPM)@0&Do{SzgGzjcFOKSZ-m(}P>y(5&E{NZCYOfM)UbeK&Ab;!- zV}}w-++~u12=iT=_}`pBKPbTS5oFvI48zeHY?8~rO*q1-tUC>}DPB44X6<Ls0;yFg z3g0}-{Veo374><{*L5#6l%@TaM3*fRRQ^)RUau>Ro*qSf&xIoIKCsMrXy_><Y&sGD y2S0@VuYurP-#VC<qWH$`|7(B#bwSU9dqI~r*-G)fOJxiV_$kY4$d$>M2mKf3XmMWv literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-remove-example-variables.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-remove-example-variables.png new file mode 100644 index 0000000000000000000000000000000000000000..214822eb84024070a7e334510de97fc7af3810d9 GIT binary patch literal 98146 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 Nq^PV&zR;WZ{|Dk!AO-*c literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-rename-action.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-rename-action.png new file mode 100644 index 0000000000000000000000000000000000000000..cb18e2b96d02775f8a4931bee595fd5b1f2fd7ad GIT binary patch literal 39580 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 G$o~PLvR{k< literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-replace-action.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-replace-action.png new file mode 100644 index 0000000000000000000000000000000000000000..2757f6cdced9b600806e1931c8aeb0b06a996960 GIT binary patch literal 138206 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 F`#)|3m_h&m literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-service-portal.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-service-portal.png new file mode 100644 index 0000000000000000000000000000000000000000..d54402d3ef4b7684628b12a9d7d0fb8adc06987d GIT binary patch literal 28681 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-update-process-engine.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-update-process-engine.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3cbfdce829e91abbeefef6b53e16f9b5562360 GIT binary patch literal 66390 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 literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-variables.png b/content/ptfe-releases/v000011-1/img/docs/servicenow-catalog-variables.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7aa95de8c3572a3e1002a927f117388a57e7ea GIT binary patch literal 43305 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 XuRf;XfW=%8fIn$*1+fwl!%zPOZv#Wa literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/terraform-cloud-run-tasks-diagram.png b/content/ptfe-releases/v000011-1/img/docs/terraform-cloud-run-tasks-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f07ba3396f5a2e3e2adcbf92119d7c24d1876e9d GIT binary patch literal 73901 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 VbnK{5cR|39goy0BlDB%F{vRP>)oK6$ literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/tfc-explorer-health.png b/content/ptfe-releases/v000011-1/img/docs/tfc-explorer-health.png new file mode 100644 index 0000000000000000000000000000000000000000..de8f58bf5b0beea923a60cfc691c0c56ec310348 GIT binary patch literal 183878 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%0D9WFor-_ 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 COh>W+ literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/workspace-net-infra-combined.png b/content/ptfe-releases/v000011-1/img/docs/workspace-net-infra-combined.png new file mode 100644 index 0000000000000000000000000000000000000000..de0d770d54c308fd7fff294c8ff4c402b7180443 GIT binary patch literal 23830 zcma&N1ymf}wk`^dy9647LvR{`lb}HZ1h;h1#@*dLSkR!sNpNf29YXLB+}$C#1ih92 z+;{HY@0~r~9gIPjtXehKtg2P>lZsGLdW(ZehKYcHfFma>rG|h2`T;DTql19|L<jC> z2nf1Ma#G?N9*Bq2xj2%vL<pUXdcjSpQJI_y0lwha?l-RL>VdaS>FfGCga`;#2nf9( z1bi%nH;{jpZWzD_0Z;@4BSZumFnoHyZASZr(XsEUz4PewJn04kUW_!$)&qNfqH|2R zb59s0PiFu=X7>qZA_6EJq^g%o9s;64e?x;WC@vk3i=Ui_^o@Cmj*<qS0J$s1mml8w zLiiZz^LMfPk&Ex82V}erwmk%C1(sRnL_G!=$ms>1%WU!#{XsOXe!I=0*gX$!dNcL5 zl?UBrd6r*xJSS}vcAIgVLk&qMU*|E)s9v~px$2Ri3S&!Jks;33`({HZ`io1fK4`66 zPd@J^iGmElMnBVg`VX8h@+u~qntl)+duGs4!uqpc7eX(0=1bjo*G~SCD`uldMm0xn zRUK6vK>$2dO(dPmj5&6G5>7Z+9TKwfiWBQ~%;y3Yu69+?!w-ld65{xwZ{h-of>em| zL4@)stmtwHL@M~`krEPt5|KsdW%vZ-44`}jLX>cP#5{*shEnIS;Dg5_nu+u!1GnWB zUml&(DH@hm{g<?x9>Qw!JZacPK|I^19w#rvshV^vrmUu{_^{;Wzu9-eRB~0|J^2eq zU`&+4iHOM!N|LA-zJ^r`M;@HnV@UKNt+{agD;+aV(nULgScO7$dV!Q7Uj|4BMlfp9 zfXTSUg*0>Rf-M{+TX@!nUv+AD$2mmiYdlm0105?#{t}cd&#>7rbMR1Ehu>|~rjJyn zReBQDXY_UaRi@IM4L=1gQq#(@MZ}$t=+|-d5VgTE5enP^lV3Lc3pVxg`JgM|P!u!q z>XYD&(^rXT=k^WcenVSMYY37oJn16{>m1Z0yhL1rnYg27HBI`J4#`6dc`HxPSDC9D z7TEduTxPgX(Q;|FVik)uyo9qz@NsPG#lKBhmQF?L-aYua@IhU;(~v=k^hE4GW$CL| zj<cVsHs#r%$ej##!G0cJi*tfO%T{%(pZbkCH=UYR*T7MIYYvkKuI>J~3B5*Kp9hFA zL$ykY>6Hp62-3XRB$soEM|aM5;+E`YEO_xLgoC`HZj`9o;ZvW#!QXtZ%09TfW#Xp5 z<sy9PL>CW*fUy<w)wZ0{vcoHF?Eidb4CzB_G0Q1d!4EOa1%(zN=c3clV1Q&1Fc8s+ zSiJ&eLHHNAD7pHp63EP;P!M7qp<`qAoil{836w+$Kl)uimuB|(#~cA!fpt?7Hf>d> z%YkP5(}EX$^X3}HIcrt7J4VBL<0HD*hHJ-9-i?Rt*|CDgz$wf4nFC&=!P;ju-pWiC zjcK)b>|TK$Dv_xa2GwLHT2<OPe~lmJBy>J!licOjlHVWnGDE2_!|TzwF-CpT1rDS{ z*5-vX=o;GMqsWP*->zR-sm0dsNL7P>gU!E++vz-<Bbo?hO?p!VCE9co%$znWVLJ85 zSPd-fL?DbnUPUssB#xc1;eVbp=<w>3p^AII%6Mhkt^(sTB24{nc0snVce>+t4dn&P z@+Szr*kk$Q79kSuEt#SfGuEO;{Ft=NDL&hGRJ|Z92E5((570LKm-y(M!6J!6ruVPQ zwFfm%?i&_HMubmMgS$H0_xlmB&ib;&5MKvT(Z$O`z+cnFJA>NE*V_oAPCbVGxK(TD zlyV<j1i1>tf{CQi2xdbySTCtzxs`exDI9q5117uq9+1$~&h<aBYl04_sz38h<{-0% zTPRJs94Bag9ogoa)D_{lnVkvdEXYO}^nt7+n#Bd$<#`k5f65pHovXN%VY#R@Bf)07 z5Sem`JSdqlI`(JnhR*f!O|P~y>O;4dtWr+3BAY7c?u$J{Tya$AR}`;`LZ$|<5wWV@ zYILj|4{*I9rN{V9NI^fEjYvW7ZB~=EEuN9ud+JeJdCS$=O*EM?wv&qqeK0-7<uzL9 zeih)3!Ynn0{|14cIp_j`7DE<KMHRs-td}7GOZDe7DXEaGoORam7sC&GJlVDd^*lSH zj%M3F{uJJ3M{Q&L)<<=ZD^GX+r8Hova9$^ErSM<4gt4))73(8i!uVr7Jw0Y@#j9__ zLl-a=(iLSRJn}Q4wZaPb?(3^&rIDz=b4Q=vtUWyF$;I%&9397%*}uVsFYu#G!o+1l z$q3cd=(X8N+k2I~5{xEej>DzZrBlvek4|r1PED4{iSx~l_J>1>s#f!UM$F92aLM-a zbWht5zo#kC{3RUUyS}+8HPg}7hCy!9EVmS^myw-q-Q3aPPL`IYvX9{A=BA~kB^b&@ z2QI^Ya*L-mBgBe`xNn5R;Z03*HC2H^D%}S9`V<+NnS46z5@He%l}U;>inaJrS7DZS z#~(vLLs-&QZf?_g%gPX!+paEglbj-~1TAsMr_X*fSsylpjMiwx_t7b_+!csLa=+w+ z_Z5kovJ6eSPYns4{`oV<l^t!&ePctC8?E^;BSnZMD*UTDcxh>=xYEJX^Lh8jc$zZ4 zo^bpA1#wNPC@Le`u6XKr>_>UDktM9fwTlalVcJ5aJd67E=j^?p_t8mNme$6`U+3tR zwu&rh!AE%Ny+)0z-V9166(#2P`1H3CC`(vJaYYG|11CgPoQfBvi`LfGNCa37Ba0s} z=@o*cAu>3SsYLoJOTV5TYuPxuPjR}gvRdmQ9ptc8SK4FqLe3Ap-SS;V#4ouq($p^J z!{Az}V+?XHIXGI6Q6(9bnQ){bkdxVfoSMB(`7L=P3ClNQTXGPS-484^ENT{7x10z% z4Ni)YrV+oFlpxwvW{tghIcN`XZ*Omr6`t>2=VGFwUwY}r%)56nlnJo<Um>%mu{NY? zdI;iIabj;SeIaY%Jwo?_U~YpGl6pPK{8EyWZ=TATE&EK1zw<@MWm)gV|1k2ZXGD^Q zK+9d*pbWnJczAeoUaqcvr_o+!XG@$p4&T0s1Tq^1zT^J=0crA!n25+Ys+pNt0wU?N z-}P;6Bda4xFO03aWQ}rdrm7CV*osVr%Kv)ttm>EZDU?a;{rltJzja$WI<g%(Q$IqO zI1GsujK&{1r6C`2`!f7IQOMj(uZDPfN-lqPGz%%=LtlyKL~swv#n*-AdTE)mq#rFV zW@rg<et%UJXJc!7inYKY-7Ez*rZGYsRA({yIB|4TUO|H7NI_CXDh|W;vhwxKBpCCy z$_PihC|jjff{!tJ%^M(f&+PHGT)BP+OG8?3o_r+gqrOUP?kx%Q?7Uud9p=3i{Eiyz zHu`IowdVHz-X}3qfiV&q5+*h%u2(cv6&6<xLX9gCQ{-|i0x24aBc<3zGg>30R1!1v z{~Q^?sWhz}EbZeUL;Tdci=F+RFlsvNxo8!0_$%97=Ev0ippOx@-&oL&c&yQtd%}i7 zLa$zr2nXSun6Jf)e*8K?_RL$jlrIUas?8Wj84mTJVi+lTzO=%yO(`HOD7a4~gZIs5 zs_!)Gc1Bd7zStp$W9i1QOI%3M_oqo7exM7c@jFOCGrpjg<dHg|H<9=#d7gNA)l5ru zZz7w~6lZj*o6&MW_oT^Pn{*zn{gtE_-R7xZ+@K`h6Jdpuj<E$P9*+-^3r<(WLJA$j z`*};01g6~I%F2Cj(U{GAlz%zIxvwTY*VyO1LoRe|NDVj{KfxuDd4?KrcAW8CqX|pf zs*71l^L-gsXcZH<-=9@5bVX1Dxl-PLAon!BLm5sNB0`0H5gW(6zHxTO{aUY)$MZp_ zhjB0l(->K>_p~xl*OMSB{-e*Ii|nv$s0ZdRg$c>NNv6kJDGCKVbP2C9MW2m3hg7f( zq7Cmv&l`d$M|$u?2dcrdC^~Scg!p!lt-51%hfp8R{2!Lq_V&kqJ4&ERM&iQOc;c2X zDK*+Q+EtQJNm$fduq^?72O)F<wKDL-3I6BjMi{IdYv)tsvV;LU7FnEcu6{V~IA~Kp zzW=SjsQ!8Hv)u6|BZs5zv+HFY-91wB38C<10zDd9Rr-)O5-#-P@0MfRc<!w5-4;9f zAtEdNV}jmCHDd&V7XDD{BinJWpR=8lZB)UP%ZfhNc&d4Pm9>rD9Lc534it0RjoS>j zR}Nbu*NN$=iZR^fXc01~Oj=+_`^^)#)PeXlTGV@gPrcf0SAY0yLl=$qd9xUFv3;3d z8;=l<j{yxwhDd?Hbck5-0im*;67(?If8YEccl>vIFPnew<$vzyznlNlec5x$Kko<9 zuGzFM2&q~sA-Ou8>uFQwPvJt%BG=IdVU>#v*p}cFW2wKJb6;ZF>Ds+&DmB^Sh$pqw z)`bdpF(5;-G`AQ(U`+@CU2MEi&rB9ajN-!u^F8NCvGtLDxps7w!h{JGZfW+Z4QaSq zrv9q+n-FEswr%Mv2s~Cc`kQ^De5rZ4HV^hsU#73;!`_B5zP})BuiCpr1B3oQf0jG! z#XFFG{g>q<dkmL9wL~0FYpjlzZoVoA*3RHu)<zRA!H*x*X`>hXldM^<K3ym){n_C( zy5e0HomR_UXj$uM7i06$p*-4@pIjSVA$=wMpdWh0Pwd&KW!)t3Xb~mKc2~l_<}ozW z!Q+sNDw&On<;#RJp6U9!%>^IsQGI)F&|o#x(&2GAU4Gy?o$U9vU&YPnK&T^jlCs`6 zPB&|1&X~HG-5KFo3D?U$BYW!2az2gM6ZZVa3vpdE>C27ftp@E$ooj!Pq`l(06%H=d zw+5F_4V^6QT57Cke{CwYjrTtBQ~6B4^^e$+GA`bjy;@{|Ic|BdP+s}P)51=Br*sb( zi{tUf7wxDhPLQ?9Z^w?<W|lXEqO9dJd`BG%;_}LrxM_IJmh29yaZjhcTKdZvkGn=t z>P$sEE<g0m=_MCDBBh^A8D8|=)|(xV+e**!ZWq=$-v%s<)fu&y&zPr?-+djO3C-l^ z*SaP)bK^jaI$*LUrRQ0u`+IsD7Xk7+>;ZoB9rWU`M|}f1H*<%uL7%tT&NenCgNEcB zgS$Bld<CJ({@r3iLOijC5J!HE##awdN-PdPl`5nt3;ODviq09`TVuE?wthdataL!h zo|@uM#9v-i+qt^>^O}tmLfHMqbGcF8E8|1w`UfIsAA|lIl@%#J7xUXb{@A4s&W^_8 zvCu~Td*)}~PH>dX4Qc{OesfTBR_$yBl|Ox!+(WAIgSnt?%qP!>Q(m^J?@C2u$T<A4 z*yl8J-{|gMk0CjSpMMo}<RfnWtW>X+e+l8>;0HHq3RsW4@zu|s5EeYl3SkQBGMZ4X z-sRuR7P&Lbmx5$9*0-nhQhp&{D#!8VTG2|`b{!sJC)$}!y#7&7(axPZ`jtb2*rfK< zgI-$TR~EjivcD2!uy(o8=zh~);D+}#B}pC+hq`U0;QfmK^5)5;z@J&B4*ubhQTGpM z#xG~S_3<g*m<v}_;pxY8)!m)DG;^W9udTaqCdCHVI%CKrhxf@_aC0s!adB_raHgEs zjqY#@b5=cZJj+<t8=PtG-{SdJpRzT_#AJ3<Z^%i<GKd^=GA#%Rrs)eD`BS&W(RwGa z%n%WcYST&s3PV@fJw9hC*{zBl9b+eb=k4^__LEFQhE(Z3zgUOLmxaD21sen@PN-B? zX=Yj$np9(QK;JVG=lj_clTHC++pGG?=Ki;ZH_=0p4a}8IT|EMxVV>}+l9>&%ozfgg z0~<q0=%1{9V=pV*uidLftcTl~5={FL&LBw{^)SA^(Z0T81QZ(tf|Mby?*YO{wJnEV zOUQ-0Y#rD|?WlqicfmN|h_w-y4K|7R5gt~=sAF)4&>y8HLE)2Yy5Fx)rP!{@B@5Du z|FpT&BKiI~x2fb&N!!O(4E4E;%4kXpy}+`am7)O|^XMt|1O%N;n_at2;uU)-Q>jau zgtgy}NRH_K-Z%RS!pfRoPj?G?)>RxgA~s^hesGPWNbOr5@|`##Kw8o@)~=X&_aau= zxb=_GO+bH2_B5D+XI1k4J}Eu77+)o4ZdZ-J3J3R3h37_}18ybN%k;D??>lz_`$tBj z9|uevdGACUT0j3l{_NQz9gNZuciW%eMJHMoV@HBVY+M<K47vFkYs0P<_PhbIc%J`4 zbC&&*DgdY&N$@n!KG45y2q};-;+VEhX!NPYl%n~enmV4_s-V%!sZkVcSCvA3F{S8g zR}iUgkiraKEnRi<I8V?(SH-y{9rAhuo_{X^0xz0~Yqtmv%UNu|tEx$a1jYwnivG+I z3eHuy$}NuDWS+Rc&)Zv}M|_Tbg%*J13+7_gJjRf#<@3A@a5WXttq>lo=mZ_-FujqY ze?^=?I)3ODqpUc(#p2*;#sC{XK0#~15Bt%y9Aj8<(v22oz%p+1B|9q>3k7RZZN75P z(9Uh`*GICP5Lu)Q#AozbHht3A!PGyd4Yv1dPHx|tm8f|WK^1Pyx>8oju#5|a%qTX? zl43N`p&1JXMLKk&n!nEGD=Us~>4}4Td#Bw$C;l+vEbi4W!9c;H!}N&=z|GhtPp6CT z;?4O5)|7TrK{CF6DsaXW$FeE^qW0E*r4cnMea0%-8giTQ_1im(4oZFHp+ULMyo&C8 zyqA>4n^|99PI5(^S80*Fwj2kM%<G^@bOos($D>N)Nzr8JeVx7MDsc$O`iaW_9ACK- z&v;-f!C0FJ>QaxxUR)*HVY%H^(||Wo?L-JaiB>{sIB7skW5HIVzrR0EC~JDsvfZP^ z<@`1)VGZ#R<`pUGMBO2@%t2wK5e*c_4xYe}hBQ$qM}e@SUy(rq2<@|DugnFsa)GqY zaS|=AQ)dp~Sof1UpeFmijT2{v_Wrj1lC3v;7G<+fFGwDS!85EhCW#dCJUsmH(OA?s z+$|2;g`V8QE72_-h;o&%t~kn|F3E+K_ySgy2XlluC)-85D($2@?C#1lUBQ(m&4r04 zp@xNZ3<iqHy0u;|p#Ng~iLh}}2*>0<dFfl<ni)`zB5-nq6vGUMg}~secqAS6U!)7~ z^V*-BY6JQP1EuAZW)kM&OTyJx5;^YNZpe9wAS$1$VpsV;<`2A+3Eo8Ukz1x`8W0qI zm3td!V%XgMGY@Hl$lRS3&MfdMIRJ$VyPBy?XeuHpDK4NdpufYUpkWaO3+nKvaDEjX z1&fvarZwS(B2H496eT*(Nty&O*jEf21!<yg2l#P;1Q2dV{RV?z6eiSQ6m}CUj|}D? zz#Ce>3nZG;p70A`yRPVnAoU$_LyHckpW}_fGpvtlXRXj`Di&Erb8I9oxujeWs0Al- zd4E33(NGUWNznm;iK5kh<#IE^qXPO^gZsKhK9JrCnEBn$%);8R6hZ<}@=kbomV5VX zN2qXfF=y8gl-2)uZ#|^sSt63X3YAy3VK3qRF2m^BYc$he+y&zzNL?#LD^vL+K2Z3# zLlkw<&&Ye&{H5sNt&E|dz7cChg{S^{5|n!$Rg(QznP~{EIk>^UaHi1CV5~s4J_S3< z#xuinQjIa7_`|Pi^YM8Nf2-zyEoDK(dK1@4Tu1OOk;o7e1?!AtQ&HAR1>4YWw=fhm zJne<om&=*IFG(1(6UnV$!~O_Dq$Y;q|Ix2zH8F8WNWe|v3e*E?w|8*n@I5l}49rnQ zxWm_r`VIXd#eom242+JyH&}6bI6lb5{4BD1iEo<aepab-aKSR^eRj`~&1DU5oN-d; z3|$|we~gQ5vm%7woQ!b|V|HC8gfKt{tIoeBZgqkZii}TXU8_X6N&<UCvJ0KP<Q2YF zv?0i&n{6_tU$WRgaU`sC-pcQ^bxM%ft8qkL-;4?$YJLtt;g7eCJgJL{RLUdRWK2fE zGV?W~nf{0n6p4Ut_bhN#?q}D>eIur@&JfWk57Z4^5!E(f=<fQ+x$A6F=+f-p>_oaX zJ*^I+8WB&P6D9-qlGG?Dk)BaCW3Kp3;3j(Xr2g*2^Egw+TcUjt3}t@JYs>#VpdF?c zqY&8XePCb33RzJRtX=HV?)8Dx4@ZPl647$CCHW0X4P*Sg*{2kVsqT4IC$NTN0@_;K zWxnw9@E{dE)isOfYh^{1<gzika~39im~4u$6l!EFD_NF#xJHGQgj6R;Xd~Iu%8CD8 z0Yz4vx+v(^yQ!m#EKqY*c%mBiltfH$vd{sD-_%KVi_t(KgktxZ@Z~c5Na@OnwlGuu z^tI!U$Z4QM8RO9XA3v>_q>v%&6}(33X5t%L#+r}^Shos6)P_)`V-<Z!wIVop_cG7t zw@L35?Km!O8mY@T10tR_GrH-Ay)+S1WY$!s0Ak&1G_2mKG(WA^v~;jQbp9J(o?cpR z`!5)xr=1ogLjt=IY(njdb#S-Du|!s-q*0hJ3$3k`xP{8PaZpW3RI^+R0tW=iaE_HW z4u}g}5>Q^IKmhl6>;zGI)`gfLhvK#txx)IfmZBe84MDm#FLSls9!B5Xh$lJZMT?DQ zWM!ClVA`<n^UOwpZeVYyxa&uLiih6?qvU}SYwXJGfRwFYl5{5+lNq8&V@th&_UAVH z-V~D7SFbuBR^#qE7uRiKg%T>c{)kl1!UTWa$HgA{_#E-6_I98Xr=;^7tqXK?!yGzP zMFaMpqK5^}t{C~aXg|!K?d*+|Mt5NerXo4Sm!QiaYIa8iAfQmsYEL>P;3E=voOZ&0 zC!Tx{4(N+74?X<anNd54L4b%wNa160|Gbkt4SiS*R@zM*Ne%<eN7xi6UyzskG?s)s zt9pTghjFI~vsP^y&?o9dV>)9OpNheiSfqyF6X#?|BNhkrowI6v7M-&#hT%%ku)<Gu zW!;v)RVRd_a0N59aHX)edg#*&*%Ml-Ea-@^P(GH#**3ZqZOo+{whpYv4C^E_y`mWw zN0vb0&ocdY(DyIU5&i!cQ~o;^{J(1de*-H270Ujn_I(ox{}SrI9>Hv6{s0u{qd<W! z@B}&d_3=w)2Ui&z9N+h>fm|5L{2E-;^N`Nn(3%Nf?v&8b`Az0<m*nf^z85`&gT}vA z3AEHCc6-U;mjYgh%p@{o9Xe9G>XGY|a9NuusVG>p?HKM`K6gSCtFYFwnjwaUi+a5N zKL5+#!8uuw;_%v>slGx0j=z;Zt59cWTDWYn)$i(}Gu{lsQkB!%f%(%gG@}TeCvS~b ze(E}f8e{&SB#&z&U?E1e`E!)XA33`J5q2{$4!ql3*qX09eVYcL)+1L*5nE$vfkW>n zjUv5t|1U|tQy)uL)&!C~M*Y?D=PPY^zeI|VY6IxjbB&S|?MXkxx<AS@zJ=^dq;QG= z*_e-t_|WvzK!n)*FD;SI*wPl)#N?jJ<dfs3*wUbW7Ue@F;W<`Vl|-{wYgzf+#vbJ{ z++(9>f7ydew?*lA6o6S*vu`7vZSMF@kh5L)EHEnCv$&i;-|a_K&-f9`Z0tNWYw9ew zT`tit9qnG}YU|%kQ3`QYi>~W#75c{x$y*e&?t4AuTj+X=DzCKAA{m=`Rdm=>7|$>j zCxz-=V7F6*p**(*f!V$lox9d22htvg6wbWYnReb!S344HuW2mko!g;suf-!Vb)~wk ze$(<pH||I0)XIT%(SDmljzrx~VO`4hJXh_PPrh=hjGq?PMqG(G5-3BTQ(j%IJrj!J z*<k<vi%R!<HC2Ok2K9UI0|YTHFKtDA!Ci5<WkkCQ6Re6*K8E)L*<BiuukpmPsDZ0$ zgBwE#p8)xiegpN(F}Z2>C^rTf-t+^JMxU?hzDve^A2LhYAY;o5A|G?7Yz}L9FWDAM zso6&lA+px)vmbT#7lpB1lp?GEM*0+Tx<PiO^fMvFWXr${HFjc-e-b*y20Q(<Ka_1A zi=!k?JWx0yS2)aZFniIP0Sd<v8w?@$>6w_Du~|j&mAPe#U|XHP_zWrZOw8&NII<*} zrznW;>+35`k8UJXu05;Zstq7Mqa-a{DedeF-8KVTtl@X(gpy%l8z*BesO_=8+g-k| zIUIjvQJM@!U|=H|!-t2rLltu+^&_`#i=9BI=gwHOgGr=QoB|DT=|(ZlDpML8U(z$f z2os~STI<g4M^o)ft>r0&k)EG2&NsBDNZlb;lary3YW>QC_h`&uak+dzLs!}?tWz}( zJUDFc)}t;YQ)5^ETr*l>i0x-YjFM^G^SQFaVF%K?_d@a+8xaseqg%C^p<h*xaH?wy zj?2lNS*y4-o&pb5%2?d|s0P<-F6#yy>P6jvgYK@#0Dm(Nhdla1teGD_H$(il50|-h zZAX@Wj}l<B>tgbyO2~vU(PDhuuf`?F2;e~v-e4X5jm&rB*v0&@_9_aE4PNtX{(^?) z$NfFXgBG~hAS|<j9i0P_;oogBT)&$LTU#WF6@~HCKRa)u;(2h1a`UZaGgJhyakYAS zz>MtN5W&39mn4@F@(H&*-E^aq+CBy3q9~k*v!x$XI2((lY#0{3bVuZJDX0K_Z81h( z*dRNu#b%V|RYo>@t%{fM`RA2FKMyh_bt#zXu)JfK!H%HnE7jdJ?Zoh;@F{jQjlOvf z_f&-M9TdylvBJsr-f=sC2Z2o(9m;t}<(Cg_;)Mcm4n3@s8kuL3)?tJE%QgVe*k~E= zevcaZdK`GMk7IpeKc?rN`-^_`Og$;7W=K&HF=T_X<~0*0M1^>sMvq_k<3nyF0`Z8r zEa2#hp@%D}5eGk}DfDIrXoIn!Wg)4D!O!ryNDk5vi0Eo3y>IV)(D--QX8I(Pa?G7v zu=t+^+xvX+_~=AXu^Jdi<%bUelYlezUi8=d`{$uX{nQBmYTUa;IuXpd#aaDLLQD4i zJnAG+lwJeIg9DpPYPtDYv(7$S(nvU6s}lw%XVq=3>%PF<l1I1y-dFgC2G;d15bGC= z;0q=#MRzp8uu51bPIyl!P-&{#{yDbUH7v3ReL^2~p>Yl+p?P&L9|0af&m(G-)xodo z{23(M{+PKY-bwc$L4Ji7)c0F#`+Rn3cBKrrZRs&+SE;xPN=uNu8v7|vfsOa%>X^>u zE}Bio>Dj`vGU!Dj2Q^#UdAx5TNbLl%?XI7B=}-BJjL+3rqktdfV=#>1MERg}5e*Wz zz=t}>+(Oe9{VHq{TBb`Cl1@KCKs{Y1z81qzc9UM+{KIokHXj^;S3s?MpQ-&P`}kn9 zA^|9=fW$Xy&04+yLPME*hC6orvY%0?C)jI4{%b%VW<=d<p8_e!S%R$;i%Uz3c?KS{ zz(9#KBrxlLk1h{^M`ZM#1}095y@A$62f&!Iw))z)lpv08J)A&-^eBDXYRjzx-iEX= z%o&F7(!3HE5)U_BA;1nS6|H>fQiO&WWiM9ghYx>KZu(F^FYX%Fi2L{z+G!MujI)Sa zNq%zEs7Xl8e%YoW{8K;GQt#?0<Mw-iwTp+*+&FNZ=STEE0bR_#<D-AO{HRCo4j^Yt zAwA$Za*_|XFnd&SAF_$}n<(2p1JEI5V$`D4t_mIqjMf41z=!9M$2(N>%r*`1GbTN- z)e~xV26<)*lQ0h~5eCqU_EJ>-J?d|yh1R_PL|V^y92|h+B-G#L>xUhVMly$gL<sjN zkR&03sr3zrl={3i-*B*QN{MDj4xh&=G)?r7IoYfIyb1+FAW2AFFvs=sYBXf5NPhH0 z-}5^kNfR_v3IMwh*PdQ_Fxn3?{ZZ;tinP19D-e6MJ|rZ_$jLDBvf{YWO+uz6BESSY zzK`yLjjJr32f$9p4UCHSU-{>RhoBp{X?S5m%W9boa!eACk*^ingS9ak5mW+Hq~PIJ z6hNURsv&`#?Pq83r_BoDQN#;9u`~jn-<*;>J9&Ao9}$V<f1}8k&MctqGqc;x&dj`y zRi5D9#X!g$zI`X95&WEJhEQ-ov6cf19KsybmDf~ojMx>FhZ6*T?q~)L;l|a@(!+ql zd3($#LRekiy?wwp1(Tw1=}o$p?1ol&Gq)Xe1_=L%*ae~YTE!Gd2*@0^GcI3drC{<_ z-n=!V!ht|PbMI#wsbZvkX$&3#W)CJU^Icc~haGI9#8~Kzv)(_hOb_4`dCB!Sd;28& zzEE9c3?BbVfBDh>be~-pLONdYeLw3h5|&gx(*w(Dj=V;4dPN2%w_xhh<ytO#r~`tv zBwWr1-*cJ+gqqA)8EKA>gjaxO5nNOKtlSC*UD~s&FZUiF2!w;GBnM^D&?@(nBybD% z)+%b`(6mwNkO&kFWT6Gf>&UYO=}{(&W3#fOdmQ{74lX`^4|ILgh4}o9T)g`unI|ti zz?BiH2EvMQW41r&m1S9i4}S%)dy(Z<HQsm+HL0OFD}MSL)S1Qd2VHds4XC?a+B^>X zOJ~0R915?NyPZ3ewHmLU@*Vu#5RnaS_s3`CF^yY13ITDT&vny)VHW43s1<iio2vZq z3(ng&u&RepU7O?(-TN{?ir$ZNE*IhCmn8o2zT*c09QrzmT=1qP#57;w9GR85ezoQ! zo`dRiXGzV5(7CAp*7lwVN>6a$W~xk*NG^hr1&xD^H%B4dEaaF{D}|Y)^fh!5F~`Ph z!%g1i*@sWSoeQq3Hki(>tQNah|6~=YS43v)fQ=ZH^em^dc7$x4$9wRHBb-0PTPeb_ zkJvq*Ae|elV0fs%1ga~)mr>Fq8)4hmcZ<9IxEpmzqz})KVwXXA=@8#d^O4}(R)h!4 zc}fFAeB)sBogE93Clv5<n2pQ`8KNcotrSq5ihE6hnD!9pP6B^r`F$n!qIv4uSCM~3 z&g$){J^Ksuy_*lY0SS@$W?{WEW?xpTx@0vDNj~YU$dxL#1PwAj6+T4GSR2l=!94JL zGM`FH#lz;u6ysaVb^z6B^^xJrvrR4mjIkQw>D1GZYQ>AnWO#6&dz8DbFXaX@-o*zS z@h)8Oe%ao@pTwG{oxx@sBrOXxbf=02^)uiF5oqP?Wq!PU<&tW0{SL)M(u&*5B)E)t z%G>`Fce3D($b0v9v#Y~dpe>^ya~774;o4vV2tI>uuI|&_SbD*{zAKno-BLe{V*pv| zNAAzj&ngCc^j@a{ur4KHpSp2S<*sO%<Y}|7O)xOA<+1Y2YC2_-JVU_8*Y)EPy?sEF z58MGz-#iMU3R3PU8F^Y{+hUF}mDWUnmAM>iA?H`%VOO~u&;kp;my&luOW^+WnQQ?l zs`HE{!dIWihZD&~)69Ic+Ifi<gmw!NRdIu>aNN8gB`HGM8WJbAulk6t1<aOjMn?&z zi6`=U=+oTiQu^`kKBNSo&`F$(P@hHUL&!;URLgJBiCY|NsFE^5?Zy|(38p;mr*ap6 zWq#P{kw=Wu{Mq6ketTAqtmPJ>w04-14<gOYTMmLFKXF*1y?7<9`eP&95#h_i+GX|m zHfwk!=ClF6aVPqvnzmyl4%gg4(5tr=LJyh)ea4tRfv!dS_;6?@p;E~Ubz^NwJt?fo z$XFHCA99?*|9$e|sa&tS$h=Q6{bX-DC8W5DTP7N^8ZN-9!(A(ahm%cqT@uJ!*d8F8 z!KS~Pt8_!-X1~VLz-R|=rUiE~<3iUug!Qsvw1PLLTG`Ht9)LLbEbQPJM5>H~c0{>8 zH0Q@HG8O^3pE|NzA^OXPgYkX>IKFD6_!4Sg?(E-oQY^FmL9Wc-%%<6);j?fyrU7|5 zmaD%9ndU0;`QEp1Z(#i&s1+a3N0#y*@Z*2j{GWj6zlyE@R|xoD`u~sZ%i00-_d(*i zt?lubNB_pBr;+3Hm$pT7HyaABq*XP3hK7ziQJ%Bu{>h=%JNDQhu=4wzE0VKZpNo`P z)3%*!63gQk)=ve)?DkB|cb_|!V4XGISV4M!+c9-;e9(m|gj?uOd+%3VyER^kMsiRV zV~QD1hShCVAU252GQdtJr!1dSP^UE)HrQGycvH*C5foG}R@BaFxk5E(+Zt~u!@4T! z5CCnp?seOM`SA6bS0-XKWo*H$ui`y#{iAY>VC#vc=KG10dV_7FW6vgpnL75mzo$p* z7_P3r=y-CvID<LngbSRd!nkIS$CPX|uh3rhJ2VBS*ZfzU0I4a|A_K7NOIQ$(7i2<I zii+Pwl`EC0xBnvR->{T`KK1wNiU#ieKiXRLY$Z2h(ZFd95O=>9*to9HgsIoF)UpwF z7;YHQvP+F0m;s@H_*7F#48meZj50T1Lj!9A@^QNsI;3`*42lko+iP_F@eOYywjRog zhMEyrKsQ!3^DZSodUm=w`In!2VWnW(&S6;6%6Zp2lma8X#JJP)B#V$CK`jdN6@XFK z&2OLt(D^;D_R#J5S0T&S=i(@tYuFr<S|S1e2DEp-YG%!5dQ@w68s*nrM}3+<`+faL znvW~cPGyj2dhnZ~egV~9zx3fsR*n;Db4Sx8+)>jns;09I2sl!BgzkMF8<CFvVeYLJ zzX{ZBk8|1Q+)-B?%umwxnjYI7KT%TWw?3)ye$N`4NNIHQP0;=@OYB&|eY5-u^26d8 z9BN6qq-DbA=_<N@@;-FyPYl%^v%ku8@};h*7BM#XPGAeb&_eTJOClRn(xc9IgPPup zNiz6rH!()WAMkQI_g+U#`;s4rNRnnS-(E~o$jIBUW&Q)Jvs6ehNIn4|`?Ae&LV{Ns z7@nrV+CC@Veow-olBm?mE|Fa6AgG@ZUNr1}@w)%!kfMGq?-TBl(s1xM8BKA4ShNT4 zW*Gn+Se-oTQ;S6#9!uF@LybI~4Q0?|<TZu}-|HtN`A6{xrO+FZm3n34!SUfIZg*)N zNqR}s=S%DEe9tSsshb%WSPzN`>}5~E;(bT>#aa-;=`(HWG`x1qNQ&Ze9)5JldvpLy z3Q+!5vu4N&{6Km?O-vr`!KR)G@FulVzpYl|{tGat=Qj3kXPd@eDf59FFQX~%y~p=^ z0q|Co_j4D1^zbdffBuN9g;GD8^g}Gy=B4#<yzT26p7S?vCPP`b??V6decP3pkFT0s zJ0znzx%p+!ztXI~upkmiA~SdCSVB9+&G$NrB$yhV4~*^MW?)!UnwR5j<8cNsm6NHJ z53DvO7Dk%u&((}`jR+YJC3P^{?4Bk!DOemN_bCHlXFp+8{>Gy0h${+mN+cd#iNV)@ zu`mqT=jRRuQ(jiOP0hl`*H~Hs+Bu(T?O}ABQH}>*&oU2KbyeOK9jtd@jt(kWOkAS| z4UfGHAOV3(2|kl%s?}HZ${`{vgR%?CO#=*kL|@>50UVs9rh@*tt)Fl7r4VPXF3-fd zFfrh*NEQ^3`tf3oI$H_dx`Jc><LevCpV>yZok3vS;!^0ke5A#;Hpg92dsRjVKjoN5 zR;NVgdasVDyXXd%?R=6)UJ@7u9QOEO_^aez{#6hPGCwc0HrczbRJ1{WlfTA>RVrB8 zf|dTR#MaJC{5r(gM{=Th-`SP^Z%y9w64excP}-&I;ELrKC`@~B{#e@H_OkWABOxIX z^WQ1}VYPp3|HG@;#NUzB`5}IXP4b+Q3?iWiC^74T)qHPfT%8&(+vxvM3OECOA2gz! z2%O-&o_tV~#cIy}U1k&_?#)b#qJ2%6xPYX#P`yOl>G)o~nY~53WN=?K$J_q!A+7?v zG^Y!i(iezP-(;Ve$o-(DJ@ihYo%{Z>5d=UVwvHPIbB9Dw!cSP&onnlYYMAR5haad( zZu+NB7;2PCO4BlrScfd9q%-#QXZ+>+jKI(U>1k7P<lCv2PPNv6YoLH>n+S?;pPKeX z?96Il?S1=9bW5+p{RlS-xNA7xp*1ua=jqY`R&^KqXR$N-VdVBZ=5I4)EkzJG1ao^E z%x#wz)D}XWn4*D#%0QyCqNql9$|cr-?_DetD4p$0BsnC&FD<;0+X*6g!7_B9;wJ8; zlj4eC%*OyTw5Mj=$3MgovYmu=Q5PqA>I<qB|1Bm7allOONxRQz3C(AI^aM$(B}O=o z0w`AW66fT0DVi;Mwv-VOOO1Td?L&pg?7Mo2K<S#QSOXtI@Lws@67K<rg&zg{js4<- zha<7Mt0)nWZ{G7Jo-)A@ZFE0je?H)aqFF4mAvtla{Yg7*UH8g12n7@Jm)#s|_C4f) z-ZP&A0R!*-edLYZgZ#hnmGmzse>x|&@%yn@o9fV1ujowwm288lJ|-4IRK3|4AzU`b z(*lm5E*sPO(DDPo@}ua6g=|2r`yBESjY<1JgtSW&mkd}=ep;q4&g~2m6^D)Eg$hHU z6!+BuvL32hO#CdwjKn2^@b^G+`TCUX(vf?sqf}eUBy*2djS*phW;SC^u-vJ676%Jl z9CftMrhf5quE2i#H4+vgmZVhw;YBMZk3}FECIl#Al|PMD@AMK@k@P)7jsmDVsoB}v zZv445&gh@jUjT@EE<kX9kD-d}y@tJI8pw<~7a99RMqcJ#eCy)`>jG%KortJ7{5A4O z-B150f|lrJF|e1ecw~_9H?`?#81Eni5wT1t;G&YEbnK|+G^ZY`Cj=CTymNEoQP9N| z?4@ZcCS*AJ;oc5}{H|A@NEsh8cz%e?&b>ZttEgY%kTs-93j!;gEb^<jxMliPO3Xk3 zC90P(E~o9nzLX4h*$>1WEjCDTsTA+_d_O&0Xchviy5$2eQA%E2b-^l&E8csG-8*9s zxDN8y9Ynpi|L|o|NKD={2o?w>mneQKrzC`>@JbgD9yCaVSVnM1EmYbnyYi~x3j(5w zmZ4W*bN4E2<PD6VzCKA}>^@9_f@CZ-)_*Qo>LE+XS2Oh%K-9$#21Qj13)x4$3AzFy zQ>Da;0s|?!&cGf{aLZL|tSH-QLI$#LL=3^f`7|nZShVt>)|I3vlWaLW#=fsft8~5# zJ4Qb8=&7F)M`$uUs$HRm>_&`4YDG!{rNtGA6LBMe^R!)MUeC<4+<(iGeD7UWfDBRc zv+d*%aDkV(3<*Uvv6v+k&%gVF;u(3uL;Tkx^FakgM{gWpi@MG<yr^zj?|Q`g0GiFU z7%a1$_xV{3DKORIffM;S1se4>;&-e*{El~RiI&6xUu?$3p@xzqikqnSH^51Ks~*w1 zg8K65U#(a0J0+t=nd-?eWxg0@yN_zSP0*xOLD4YhZvFs~-wg_-n(W-uq&4ZiZ+{+y znI<q&CbjjsnwK@TksA8#doAp<njtNlY3|?oua@S!Aunb}!dHbc2B79CO3Sikg+c}& zc<O4Vq)tS^9_g4%gILZE;I&9Vi5m@iA7Ic(PYStc&)zh!_;a>1SAt?iOJ?wSJh*L; z5dJd^a;9;;Vt6WJP&Tb!B4mhC;G=!h&^(Ll1ArhnWnYN@$C?=1u_+kA{;wS`UE?wt z&!hLVrR<1Uz2Au+d_`TKdYRUHzVJeGhTfKT;%?=q>!UjP!(pGX>ui!dW&h5!`J207 zZ8c+^s`myUFfw-8$nxBr=kM%e6aG@z0~{6WRRDyzD3FBtoAzgiK7dwpa*Kg`q=L^F z{|*<37SRs6{E3ntF=|Hz5KQW>$3ii&B>L0{)JWOfFOl3EDq+_^Jy^(w`TDqSK;T@2 zAWA?V+aUK{jc?!2Hv!SSCOadAZDa1^drSG(XH;|AvNpzB6{F2s^>1LMfUB*LIS5S( zLiplK%4IbP3d<+r=Gx_UiR1RmaKIf|^(r(|Wad11IWH<K62s5$_PWs(3!E36j)f|W zsM%ZvU?Qncn^lhsJcw8XLP2=VAe)DQk6C}w%)PsX%|~$`KK6=;o=XfcU40Lozj8pP z$G~4e)8bZbz$7Nvmb>#6z!Flf=7S%G1{#K{W|*Mi;cD<$6qIi!I)7mhkXz@3GV`lM z!%Ag9kt(dONqY5UBsTQ##?XHe@f_U$NF7K4-$AgV{{8hrg=(;9Gd1HuZ)6Ik52V<T zz-I|5t(y!lJqO<DgZ^cuQ$qj$*@FT7@$P?ILB#rd)PFUD(f-rL-xXxYEKMoh9E&zy z^Oz_Y<+;|l;CNeB;O(G3u;6=DwOfrFF&%8OqZohK%94;NAYFZ4AX|R{{-0z^?VkTQ zwEuR<=J5gI{=ba*zjyq<th4{oQ=56$xW6hEIl}`D2h4o6JLead*x)=#1Mp(wqJz`> z0WVZ6RYx;(C5eTNm=`cwGB;&#|J>i!^3Dq_LLaArrN5@t9k&CoiN9?-#U_>o;jQog z&9gfVf%=@^-JkW^6`IyI__ngvnLims)&AA<0ObdFLRNVJY8vVMWPqu82XK1|eOYb( zti!D~bpo+DI$?^n{gf8<&(TEO{1rbQ9IQOo*y(*%9$KZ>zszhq?CyQop8V@Ebt(Fm z@H^!FW(BHm<K6EcZ}r(<-x)G|AD+C=VGHQmE0LU?7L;*tzb%>Y-hBZ(mAcrrrz3oE zFcSS+bjLzZ`Wl$+<}bfj_H0y;D%Q1e^vi0h&H#K>UDOr%`%l1xUko|iuUa|vyNYdm zde|AsgOF$1mOlWtwbCp!0rRP3cYlCe?^a+-gxNVUNlkYAF={-cT8IxLk&H4_H%bR& z)sI)SmHu>`!KX*@gj-8j;!d7^Oz+FsopnXE0VC-*BERnzCC+$_4{b}v`AvFn8;C7u zk~XFkzqdb%0=Q7NsmsyCI@c<;<(KSTL}s5WaRp#D4Kw9D^H~Ditfr{m+0Kg_XGvRg zcs7HDI}v&eTAu|DYpY(RkJ(Kw@#yRP7Q9p}mO*PxiP6|+OSsE1U6GNTKC0(9z!wwv z9SKJ5Z}C_6^V4qm>YM6V5|y!Ym4pQqCNS+y6Jie@4*lBm*=@n$>WKeHKFZcqpZW|H zVAlRfRc}0v^{J~SFKFsb9yvxk(=7o`)hKR3-59QwS>9|_z-+fa2c5I#!68+%;ketq z`9Xvyr&y&9e8T0TLw3hidlUXVIrrvbX9s-0F+rM9(VFxpMs#O(_D5n5zXCM?Zl%#4 zwKl2K49`ZJrnAVGxh4hHs59pP#kvB}mMO?HBmg~ek7T}e>9M$TvDkgc5wLJ$9HWD| z-g^L6R=~*Iu5%yb|5o_($MBepgChiSoy*Sa-MBrY;m%oXiv*WJ1%c80^s`^1`AN~Z z9crJhy9+g$mRZ@}?Pg`A9vqPN=TN?M=N4;GAv<2pOO`)gJnYWL;RAtVi-EcIxEfbM zany{d{<|JueR^9|R1}ljHcJV-?qY0YbcZqh>r1VM$!iV{KN8P&LK1+`Tdd%!Tu33D z_z}@w#nNK?b3$lYW$D?uZC(C=;?9!$&<jAe*=pOcDsfyJROI3*sLOu>Ak+yrjXrky z7eb+B09>2O)?HkF;^O{ZY>(X-V>6VNnHI*A_m9z*efTA#v;bf)ZzrVt^2gB4J%-az z5(CixhA|^C(1}knM=4;kwlBxrSIMYSU)8sfzE{d~HS=0NxN??PN+3>1%}CWe_x1Dg zHg=^xZlL)ZoHhI~o3VRzPGaVgxIGWpTho}{VE(;>)}otL!pajff65F!M*ophE!fr; z;Ga|j)NPovXtXZfYC6ln-ntzvZ2|Z@z>_Kj5=^K&`!H{R^kek!>!vVUu3jCCY&aR9 za}Ms;I6x&aGvC4b)zOcVg;+3FwI=ri!ETi#8!cc5nb)#p&zM4x{_Pi{AWp`x964iG z`%2?a*)lqxNl4ZmIyd@%=JB{EWLqJ*-*oQ~k~T$X=`Id*cN_g<z9q?7+e5Jf)Fcc7 zX#`5QdqHJN!iv;vonaj7_Z1i`hZX*4RQ31nR{=b4b|r$P0jo10Q>rrVathSIk5ZaS z@^?Q{*8hZw?*L5DZ62UY2qX83{YC-<R#C|($aYzH=4ID7uAN-xIv25DeGqvtf=hV! z2AQ$`49B+9Qkn{4$A0$x(MJ%LXngrGBMS+SNG4!?FYUQDh(uKhx3YjU4_Nk3t72-0 z3jkW2ggPzqYgFO(`&#~`^TAWKinBj#0w@rww}9wGN}ai1i_K+TnmjqHWyg1GB*IZ( zYd*sqm%H;$^cv7(P{1xjpBk8Fw!Uhz*5<rL<wF4BfRVB~*D5iS4laJHWif!LfUhoo zYRCd4xkK?+qOf`*Tu&yl5-;Ek>QV%6!X{I-MxGBZ4j&An;Cx%TSxzFd3}R2^=7Rzj zDBcpuP%N)6F9l{_4=dZghXvX~9QUILL)YJ@-t_x+((w|5bR4ua4c#3kLv(<$|91Yw z;Cao&Iq;=GSG177@$92Sg%f+Ry)2+pkpJ1n`-2JLu;;Z(8RA#^C_zn_mJ^JM6+}nw zmss2;WH8+GZgMTRlkPGD1xowQ=_cve)!5)!W^Bg?M%d{qx)JeSi8;WJ_28ZHw@ZW< z9we;&h*0Egk27ne3QB6mgJg^+1tSfh%V~F*^`%=Zp@#=EeD+d~Rb-5sd7VG8k-}f0 zU%v#nF)8A6SHIioT28WW(xl!5BIxE`;v_R3pR9(UVimYeDP4v1ESjYMw&cS(iLUGl zdYsiZkwi}tfk02*vgSxGOGP=RE+7N>J3q%#I4AAei=9jbZ)vNo{8X76BByoD>!iDp z^7<vgFGab{u&_Ju1(&i)7X2>v-73TWi3)7o=5T{V?B&3hJNv2RD^A=Ggg_An8Ki0C z8hnw=-r7m*U(3*Vx-eF1`K?+!u<ws@N$rp+<<|-cY7h>f=Pd~~oA^|-YS;@CLF42; zT%mc}zAF#t+X%lwmL?o(@#-&)JRF?nLRv;4Cd7oye-W8?HA+F8A*o#c#g6#o!U_HB za<wVHl{a_aIgt$P3k{YYdeo3xM~4c>B;@J*K3VUIRC!<RL|KAu_iZ?+!!!^N1>F4b zW10?E-M$tzFjRmPQk2m-J@~F_96bgI0viwVq&V^lm>kP4UhxQM8T`g{HD!L^=idn6 zH4BX-92oN4v!m)dYy?Eop&%6Mm4wrQk~i2uuO@2APg~rtfG4%O{+=$K`~@NYqO2tf z9~h`}rE^#gBH3q&FBM-r%t6-;yMoAYvC9?3nuKmlb(o<UK85%CF!8<by*CiVB!>C> z8VF)kziNsrysDY0aciUFd&%9m<)Fw>7|B*zYZL%&ViCYZ_D0sKZR7Jl8z4~L=XyXe z(mC!-=?cF&p~sJ0@}29BQaIa`GGZT|Ey~gdlnkfZA2>>9mEyR?yVE$voWf!86ca(^ z(w0pAn38yab2#FATW9wi-!D5V6P+lAyqbW%7g1#BcAsS5IK0Rwo`llN@T&8VYae5{ zsk+Gd^Cx>i;W;0XB-yxh@!GMW_{o6I3xHVNM2mhx2I*8F4eh92piCUe+c+bvUpU`{ zHQa(->AG03wahyaVO>2zC|Bb%@9G3>bTUW31>o{M7nw)dTEv1>*zj^Z4}(hUOd)sx zJi;s1!CJzY0yVV;7icSAJ}x#LBF}^~8M+HC3Y$0;B82&AlB0z8X7ER&X?MXd(DBaG z?PG6)KZ#ts|A&7Ztn@QYXd<{NU*!|;{yr?3bL!tygzDm&8Lpg=8U}sFLPnTOAxGmJ zXD{e$Y|D{=#G1&!>zFscF=~883Z<MCTycB}FM=FiMJpfNV*&OR?&M2Z)=jRyL~7wm zbsH{$hBt#q-YymiTU5Z{SS?fMyMn?{uxzwz8>%}U8)$lB%B`I0qN=fVfh#22Y(il~ zOmq?O7NFh@xV*`l8WKGEyE;g?G8>XF?>-i2Vh5m*G?HQaCh}3-coRGm4vTzE1%@zR zf(U4kv_4nsC(0{FzG2zuT+rAx+e2eWgBa$U1(~vR!Mdt{0baPMCmqE(w6K4$bZ?TP z`}aU4nKt#3(F;d<Sk-B?N4qE#bbDD?T(&v<NnlS6BM6bm`E|?3Yx}`(ZxY_1#LM+j z02x?)H@k-^c=$jU%o)J}%D)1=e4Qf1_l!CpUKC<VLk59Lbg!LedM+}B!O=Gym_GGX zLyIJ?iGcK01tA6GU_S%Ne&SU%EvC((Td8V<LldVWqKZ)SA1U-jwJy<N;-LKI*?~{* z(wGiVESfyaF<vI+YCKhCBu$l&;A+6NlR%U>;C^=^;~IMUZ6gtOKp{~b!Yq1v)zKj= zG(PyCV$KRXP0cGv@J8ATmrOKqZO(Mpaw{T5NJ?#lGAVpO(r5I*C3Xe~Bm9c*SkFzC zd293&j}fOUQD<yxr#-9fKFC+MeE(Po#mMUlqFe8JL^vur3{J!xQ)nV9?Bsf$IwgVv z+`e{{+$b{UlZw^)7r#jO=3QNDR7WmanLEERMFTnV7${M}k$+LD)S0sC%KV!nyBQgE z=tFQ9C?@S<Z2tt+12G)Fo|p`HyXsdw?j1q{P>c%9(Xd>@6c(ydtZS`@7BH+3SvlH4 zsoN|`9=!0JO=lBX5hWi<9JCbAW!%az(J2O~sFiGug)U6Y9<avVvbJ_%P62YYL)hrO zj-JiRnNl9``OX}FIvjar<LNO#CaoqZswo2{PndMDFU7lePJ5mj5dwwpyG55erV<w& z{S?`#@O!EPQHMx|>s!Fz*ucBm_9RprrDBm{NPo@$uSU*19Lm0L<3>bw$=HerV;TFN zErVpI(2R9#+1Kn_*6dNXvXh8ZW8X6pqsWqd8GG3$MJmGc)BU{faX-&{-|zDr*B=~Q zhq+v?`T3pa`8mJ#9Eq^vW^bnUsC8azc?$m8ME+dQNbjN8d`Tr@B;BuzUsNb`LdWJ4 zEn|t_?E0pxX?v<iX0bA1X^1l~w?Zs2T-o%FfT8uPr>1`au>JZsrnJs-S-ud+h_})d zh7~SK9!>YNFz8Y(ZK7#;W&jrQw#$H&OWs4ts}00YcgGhWHK|&Zz&zXb1h<07oiK%G zBk85vymBaoS~Qu&&Olp~dct2Gu3skUq&W{_(lkZ}IR!7*;Gs4@Y{)V(077vvq(@|C z+hzQ2&<Mx51D`dadaw>{N~1=+g*S+aw|`&7In_TdLSM@$aY|uHMNOEu5iE8=_fIGK za!r0XP(nwv>2aF{&5^;!;_b9QAAp#O69Sy8e?N|LXpg?{0Idl+24U5qCZ5><n`n!l zBG2?S@NdfRKwu-OEBWf_KrHe%nl|7S&wtj(f0n`j-XZ-f+5G=?PXF)uE+)iKQ?@&~ zO@O4J8VWj{2)xaf{<l}KCvg<HYOQ+*7iX)SR4J({Sd3Q%UO5$PzZZtXZD{xO&f!;I z$4#L0djZ+Y9yoF7SU_$kjI_H(1d`aRp?&(`aAtj$nx#uly2Z_)uBBOnsytJJeXr)u zn+y2-1M^=4Ys65EdZ-^N_R|W}=2oY}_e>#S_-yN#TCiJ_3wG;H?tM^Mv`{dL|FWr# zEpGEg-wF!z`XcYz?$JFa9)3UUaYklEBte5+TIQ|k!`X-`VX(v<zf_-bm<pskkF~aa zCBG0rc@?PXDGoBYv$(nNv~0Ho@Q45!d)nBD(bp|hWDT!;72j-Wmg{!o1f5mQ{^%7D z({Kzrt(XF@Gsu!T$(;tZzOMb9gI@hGi^WaWWLY!qV2c<RjPkbZr4$-{6DE1Fd~l}S zocoeePO`gfxN25tZBg~j2+}R%m=qf5y}gB@BF!XU@C0!&%&dS4LL?htltI1;S>Of0 z8HKyK2bvR*A5?*=L^g^bbRb>DhDOqNBojkvVUWbv6T*NlJ*YJbqNcx4YsBq4H!*&W z0xBPtchkF<P@7agPHk^d?{<XBbOx#C<_u;pzrG6MfCaTHIBUbPz_`&S%UVJ1*8%G{ zn@&b~DQ%V%Zo9ro{v)(rO)talKc1pJYKwE1x9nTm1qtiN<g2VHuS~Az3~vy2rI-S3 zns^|IjM|Zsqm7Mkg*UFa1%BTUiB`{l+1HA%h9h%l^Q^2EHmg!ng(n+0RU1CfrE9iK zOO4^h)Yg}W+i^n=vuvswXvMu%Gb9dg)vRlpauX7UjHWldljttV?Hbp!mo!iG%g%*l zcF%vY_N@*1vGOptWK4LYuxTh%zV!&;e&hgvqzOf#r2-!v#YfnJ{#@>aairIwoh}~| zM5Oi=w}bIVAP8DdHo*hPD^S%~L^BPdkNq(6vY+Quhb#yHJEItwZ>HRQ*5A;XBbS%I z^{JzB+U-D^)ki){9>d=*`Zy}754aJM-LX;(sVfP|qoKeDCI#q?^e}cCOY(iqE4e`` z&}q$?twLz)3~6FC=2kIl2$xPlh$N~39+Wy&oexQwQ&v*k%yTTi4Vx7jU)^HQ*&g`H zjAqu(t#B}P6?9@k`hk+pd2_#z9OnT|$H#25>%|0191`^+ue;SQr{=but6c(A@%2e9 zvX;`#ZS>TPgKv=jR~8AOPQu$o*#l6=0g|IHTX+Nc4yElLfP3?!vhJ4Wuzro_BQ1sV zw=Al<INTzLWO+i&@Bk_2*IwQ8J2>@Nf_c1t<U`sW5Vl@nI4!2;r?c;1O;1NMzV=-} zR_teOp!=<&XHE}0wXH_bs%-HvGr<RWlsk!X<I~^<ATY!Xax!o2Xc<zW{O{djX%QV< zVinfz?wm4R=Y5MPppSC$%EBV|EDA~hJtS%JJ-VPAz0bjxAFbf1ANSP5ZPj+USZ4ze zo$8GBnPGZ;y3!g}mG0%AdAulb^9ZVZu!4No_4lW-QZ_yUfzgkTK0Z`kmM=8pn}+p{ zWvr-}Fae7IK!NN)bVNZo>$T&2NeVi%^L#^B8_Tu#HP3-atw*zZ?B?Es%lz-RiVp`f z5pzEzFD>&<r{X?F8D2?tfjKkNwX_e!c9dwZB!rMfnPn5Ghy}N)h`4Gm1rWay%iPn^ z>l2?mk2f)TFswdFCgelFP<<`IH_luHG_p7g{;*AnFl^1{UO{-wGhbj$0Iv5LYu$@o zBg?r>9j7dlQgk5H00}CtYR=M6ODTUf(-p74KEZD&1Zwkh6T2sgd`ySRKxF_WhnNlB zjpuBiH#b96g5-s@#2TS8qRQ<(Q8;TSJtpbeA>=6K1}H6OvmJolN0d<ysIp@|lS02W zwMDZ?A97Q&UHGLT7Dx9@cj@l&JM@0p-i?&g6m+C#bYonPoS+b@!ibNsijRZJiNJ~C zKR1f*coXs?!-hsBv*=Yk@GTWLK_;o7(_$rnwdB+kSe`jT_%_0ku7NQ6*5ObClw~YV z>MjVSFO;<(U$1pmuH|VNklXKi)&Mm9f`g!}LbZ?v?e+Y*x8v_&cUnL!r=2@_qtF~6 z<oz!eWX@@Np7MZQ;RbFZV3t!OAvP$CY-3Y6sz5bV%QW{<{BmD@^|r)SJO_kC?b2B; z9pFD`YgEWSQJ5<td)sKgVD5M|f>ix+|BL&!(}|<p@0Zh=oj&B{xZr;oCs%oc4(t%| zW^jbMMH6Lf6cxtsdh{7M2Jp%YXO&zOO|_rrtaeqG(^be|b@Og(CbUYBr&XP%e0T|z zV>!iA!aYiB+^!X9)5U1;?UaK4x!h^WRqG({SF3jqw*`4jN!S4-vUc^lZII2qxGo?| zWI(QIDFrQ?6>^YdY#wwL@Bv`}EBu2<ZTTL9M}}7q^=j{Z)d&Q+FA$nSn2XDz5{eA~ zL3sW->}4-bOU`9QgMV2>w8sSOngYEFSb;GRWXIE8bgHosTRgeC@2|M#dlb~K<yaI2 zm7}i~0BQgzpS;Q<G5&WxfK~ngTvH6%G9j6<f}~mFE^iSDG2{30D!!goG+mEs@Y^WS zi2GL!(GkEMHEg1C+M){n>6r1#W{O(k!i)T;P)vX+dV#>Q5?I)LBT<&*j`JeduPZVa zAIm;tm~YfiCN<=fs)iaD=jPBmm;icN74$UfZ(lQ2v+7TEJtdRlybpFwwwNFL{&(%? zOg#={@q9^7wKh1}5R{YDwwW#iy`(@d21L<BUj|C4X5Q?Kry=^w*2?Id|53B`q~Q8s z&pP;zEjrx1X(s<I8S;6ujkMC>;{drD*V6izYWt4Y!}6BKcDO;VIu)`9ycF>39+KsL z6_S~4=K=5z?&q}xchuf<<1E=PmU1Rt1sT7Dv?-gmy`!RjUE@O%(fxuX(8IHAlj1d^ zNXuD9_3C+cz4yEG6G-6XLhu8^^<uLLqQ`apoh!YZx0NAD0D?2XgtM<2SS`FB<C;^s zbjXPGd^)9)U@wA8K7&-ip;c@m*OZsc1Vba$<;vLYmQuu1+6=RAKMxfUl^J9JUBkkN zq5d#r{Bz?+>$}wY8*!u&6r*8BX#z9@p+-&1308;g=Yj1(3a!|W$k#q+ZtxQj%KD%A zMP-_d=|E!@fZD`t+S1L1r@B}u;Cy9+*p3?-5A5H5^ii|>#)GC0ExOm;v*Qb*d=fzZ z7tbHo6$_83(C#kJ8DNNHf4KM_mxj0sRkPW>2aQk8@vU>7bZ5tzK3p#8S#r9DwHai% z=%`Wv%CU$P)nXF&!sxUq@=YG}eP$KsgBDO6tvAuFO4BxID#vmukCslI37dI7yl(E@ zwEPqba=4c6$TwtN3?0lW&`X3XJ2LG94Wl#<J`KLud?ww`l~hFnXD&dZG+R}_&wQPm z?0X~h<gf@0sWxc7?^A8;&r5;m|M(-PqVonQ{8n8E+?_m9saD!p9zQM4^!b<4gHVyL z!&5#7)9s0cu924q4KO`=t~><@<5Ggog{SYz;1Ei+#VBKe{nU>FK;2)UM1`I~o}WYY zIjGU|)Dyr?0%5b*opH6rO*WucPXkA84=qA>JWT3C(BjiVD2AzirW;`5K%U@W!#T0< zv&g0I<zWD!)bcNCo7ahLnpM5edsTnj(epep>pZ-EltMQKy<<dDLtghNWY@?DxGcai zTm`jCd>X>=T{NH}zztzL@gQvGglhP1G4k1G*eO0ddTWyuz>9LBU?E~iNBK0|tM)Hr zt&p7Us7MveNjf;b-eVnR1nUsXtRNiT=A`PFGNNG-0?la^A6U$VO3BHCG6XTR0clJ@ zt+LP=<i)YaK?fl?|4*Su?{v8s{$P-&9&PeJx2NadDiI}D7M*H{P4pU~&f#INJa5Rf zC>Z}h=biYfjy@fUIhK(EN?{M)b!81(QFiXOuaz&+Czg>zpH^c#8k8y3_)9K|LyR#g z&@CoflkE*1%Uq`nsp6_E)*l$;mk7$LxNvu|xiOA8LmhR}_>_1oJU&ArSWAVBm-#wu zSr^ek{7nwWkB@7ax)#ruXbAjr?b}<wFB`pclgsH|WUXH@{m4~p3=b-=F@XKY4}qNv zyB+FPq{4N~b)5=5BEf<A7D9qTy<0X|_5(*ii1Cr$Tu3eQ1R-;bxH-L@HQ&jtpe?DS z2qbh6$9TNt_@+06pyx3|nd4oJwlpl;ZuFGTiJ&1Nd`t&{HD{Mwx;__@(C}|@7rdTb zs3^k`lmW@N1<Vu``g+{ODun!TH3#3bYhcL|MuvbE>BaE1f_~Lgkm7UEg6V=h_3@_K z-)_N(C5U2`VxGgVITP^&d6Au=zY?7vGK2}puzOdHF4B_0G6g+og2j5<IIt({8xliH zL?4d-oFBny93h@xRIh|Y(2nGMWN;uY*Sl{AGezZHlaHXTyH)a}|1mqaCt%FW{Ifp1 zf+Mk9a2=jt#LAZ;e)msncLCKxCyD*Uu&!Ix+B!K=HibgHQ)2k#{fwzhwfG&WFh(Hb zDxXRn5laQDs-iYry2uNKK~Ga@+bVAuI;~ilq(3FSL=1IN+s1+U3U})nUKEPnxM?wC z6>KRm7&T+1rgklI)&2$GCL@u@<(Uth*DB(YU*bFhgpMHf*%vL&YU=Ox1zaHvxuC$7 z;*49XDm$nSi8#%*i*cx34DzzupdC2ejO?0SXx7^~S~N8`^qUPSO+Rn1l_DWBtw+bD z+CmT%zd-xp227<V16}#*Z$}#a?Kl2r1k!(X{=WpUfBHc-qul>lHvd;Lc<P&3=j+!t zKlb*4jOV)fJ&tp<8VGl=^*EV@RQ1db9~r}Ucy(iO(chR9pCX?g4)mFFTHJ*VR=8TI zqV3(<Z!|#u|I!(g1CnlAqFmq{Q2PN2f6Brki60sL3!7@J9SdQD_{-T|Z=2U(s43u! zcU_kgou`sy47}H7X&N-`wUMfcwb^n4l<+=9*&iy(ZwaU<r}6IbrNnAid|s#D^!$65 zx<A6&_U|}8Fqo;d(~2?k(-h!CJ5MqAO^d#v+Y}h^-<{APJ2(aA1A#>VsXGfcUXa8( zn9|&zh00wSmz$b?uz_$7A7|{=OStFA%|<XTgA`5z&ounNFEM)7KW+h2{-ZQBjBxL{ zxv`VtoKV=!w1wgnv0<r?1v$F|nLIvVvnRH-&+QxLUIe`AUpie|+xt}uZ`lvxyxoG8 z`R5Bx%R1^ORpOYx?*EhnG&B-iGVe1dw6{&YY>UK(pP5-rmVc0Z>!ZE@B`PIiIqUF4 zN($2AF*2ORD6CC#IoMr0$J6wpL*)iVu_NKn&AZRSg!7|Ivz5$xv73Fr)X;t*c3OaF zv|&NHoDQ1CeX|Brg^HP&K@7TNQD)&d`~u|dwUvtCuhZz;cCTUYNPB2~doXiTX=N3J z39sFs5*EI%M`hWjCn{Mscu+^igm+!-oS8xR#!JLWwCXT2V@W>m@0YXUhd(S^qyfb~ zG`GQaA%7%RsLma{j^=&do(GO5h>7pQpnK7O;`tygL983iBXA>cMY((*usY3(8`ae2 zhwDso%`xZRf<kF{S9V|2_E=vsVYp=n09r}zcMfAjd2^D?N{>rYO)rCctLW>W)TcAR zP}S&N>3rNBf_L}eAl$xZ>j*|Uz0d@&A}SLQ;P1C#;AP@)JzBGY$=+wsGSkHh0f;eT zXs^psiiCuSS?oS<K*~-H<ydw{4Ts4G%Zw=rCCRpu8XN%t$Z0#PV1Jfwuni+G&Rtyp zBF?IO;4p(%Htx;ZH9z@Hy=)x3K$<#9H+$($zVvwW072++C}@4w&DNBxWCNxvF?##c z*kygJOlR;it@a?Kq_C}YLQ`80!B%flW^Zr;nv&Im;Z9#PbfR8hXZnciIg4%mg2FoQ z9BObF*iuKuR8l~g^nUM`0?UAcX#bfL*VUztIM)$6Pt^(*Kx4o`TPa#vJQ$Wzl+s{? z2?^tnS-#||iHq;+sG-#Y+=8<RH(s7xP;H!eB4^RM0l2z(B}EG`kqq30XB~rN`m3F{ zIgG#Fn*6ywm1&v;Fuy6^{k8-tQ(I0cXx#~}y1g~0E?WLH?<JBO%=mgUC_eh_#mVy` z+t!kvP9{f#zn+Wl%HfeUwAjqev5;knrit-CwFE9sA49BAM4KosA6T;)k^!A=7Hz-w zzSNILBl}wJ8L%wCUrue#VkdL}y@8ClLfQpY!|olGry|t>G6E)A1x@_s;JSfRJeKtP z2?a*09Ty?t%g#;r>cR9n&emZMTBfDTKkFbZGlNxIQOlrF`l<9GO1YZ11Cbzu+F0;Q zu8BMMu&}SVAsArFXUEGuv>qWmLE6J3_d1)NW}N#3F1wubE`+S|N@1i8rT1gtTr?I^ zxTX#1$`?_Z<ci-Q|9z!k(pD!sqXO5u8%+zWvtg8f9DsLbS_k~Cg`u~c^A&|!`@_Lw zo2vnMkWyZU(coP2K5m?(^Z3t0b<iJvH~Jes>jqDMFc=S)z@>XA4WYa>_Sphg0eY(y zcp0S&9AnX-$g`JzcJ#vr^Qns?f<RWcQ-HpyOTBckgTso`%4fRR<Yc$ICkqh)W^(5| z0KH}I^o*-Bn*I|R10iet^A4LWO=tLQh*)kLM!FT6Lcjhbb>}eau~<I`-v>09xl@&? zB`d;Sq426kcEr~;n4X0p2~1UT1ef-JHF24b!8e=5>yrUfuWtNFwq@&IN6n83FbDO7 z+W?u$oF#@<KWPY$aa|Jv?}2|mzHF`m$N~^Lpl3F~1w*LA)<E#-`z#7jN6oWprfOIl zMM06tZY5A^IKI>3dj(7rCl(t#dQum|bq9y&L-zdTv1-wc_{)QflZEoHkGxxOyMG=; zL`kGXXfSr%7D8k|{Xd^EQ~v$}`0&rsivK!caYEEg>3S;TJo^<e@0>_eT~F-=0v-7e Dlu#W- literal 0 HcmV?d00001 diff --git a/content/ptfe-releases/v000011-1/img/docs/workspace-net-infra-split.png b/content/ptfe-releases/v000011-1/img/docs/workspace-net-infra-split.png new file mode 100644 index 0000000000000000000000000000000000000000..33bb2d03fb237d0711b878c1961769971bcbf91b GIT binary patch literal 24195 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 Ai2wiq literal 0 HcmV?d00001 diff --git a/testing b/testing new file mode 160000 index 0000000000..e3dfffb6d3 --- /dev/null +++ b/testing @@ -0,0 +1 @@ +Subproject commit e3dfffb6d37f2417f3d9b5e04cb5fcbc9f75dc46